From 3256fe18a4e26009547c681b61124fe3bf9bf56b Mon Sep 17 00:00:00 2001 From: Artem Chepurnoy Date: Fri, 29 Dec 2023 18:38:23 +0200 Subject: [PATCH] Initial commit --- .editorconfig | 7 + .github/dependabot.yml | 10 + .github/update_google_play_listing.py | 134 + ...pdate_google_play_listing.requirements.txt | 4 + .github/update_gpm_passkeys_priv_apps.py | 14 + ...te_gpm_passkeys_priv_apps.requirements.txt | 1 + .github/update_justdeleteme.py | 35 + .github/update_justdeleteme.requirements.txt | 1 + .github/update_justgetmydata.py | 35 + .github/update_justgetmydata.requirements.txt | 1 + .github/update_passkeys.py | 56 + .github/update_passkeys.requirements.txt | 1 + .github/update_twofactorauth.py | 49 + .github/workflows/check_gradle_wrapper.yml | 25 + .github/workflows/check_licenses.yml | 36 + .github/workflows/new_daily_tag.yaml | 33 + ...w_daily_tag_play_store_internal_track.yaml | 53 + .github/workflows/new_tag_release.yaml | 232 + .../update_gpm_passkeys_priv_apps.yml | 50 + .github/workflows/update_justdeleteme.yml | 50 + .github/workflows/update_justgetmydata.yml | 50 + .github/workflows/update_listing_google.yml | 26 + .github/workflows/update_localization.yml | 35 + .github/workflows/update_passkeys.yml | 50 + .github/workflows/update_tld.yml | 43 + .github/workflows/update_twofactorauth.yml | 48 + .gitignore | 61 + LICENSE | 1 + README.md | 13 +- androidApp/.gitignore | 7 + androidApp/benchmark-rules.pro | 2 + androidApp/build.gradle.kts | 158 + androidApp/keyguard-qa.keystore | Bin 0 -> 4391 bytes androidApp/keyguard-qa.properties | 3 + androidApp/proguard-rules.pro | 115 + androidApp/src/debug/res/values/strings.xml | 3 + androidApp/src/main/AndroidManifest.xml | 44 + androidApp/src/main/assets/logback.xml | 14 + .../main/java/com/artemchep/keyguard/Main.kt | 227 + androidApp/src/main/res/drawable/ic_apps.xml | 8 + .../src/main/res/drawable/ic_cancel.xml | 9 + androidApp/src/main/res/drawable/ic_copy.xml | 9 + .../src/main/res/drawable/ic_download.xml | 9 + .../res/drawable/ic_launcher_background.xml | 3 + .../res/drawable/ic_launcher_foreground.xml | 38 + .../res/drawable/ic_launcher_monochrome.xml | 18 + .../res/drawable/ic_lock_open_outline.xml | 8 + .../src/main/res/drawable/ic_lock_outline.xml | 8 + androidApp/src/main/res/drawable/ic_login.xml | 9 + .../main/res/drawable/ic_logo_bitwarden.png | Bin 0 -> 13229 bytes .../src/main/res/drawable/ic_number_0.xml | 9 + .../src/main/res/drawable/ic_number_1.xml | 9 + .../src/main/res/drawable/ic_number_2.xml | 9 + .../src/main/res/drawable/ic_number_3.xml | 9 + .../src/main/res/drawable/ic_number_4.xml | 9 + .../src/main/res/drawable/ic_number_5.xml | 9 + .../src/main/res/drawable/ic_number_6.xml | 9 + .../src/main/res/drawable/ic_number_7.xml | 9 + .../src/main/res/drawable/ic_number_8.xml | 9 + .../src/main/res/drawable/ic_number_9.xml | 9 + .../main/res/drawable/ic_number_9_plus.xml | 9 + .../src/main/res/drawable/ic_splash.xml | 4 + androidApp/src/main/res/drawable/ic_tfa.xml | 9 + .../src/main/res/drawable/ic_upload.xml | 9 + androidApp/src/main/res/drawable/ic_web.xml | 8 + .../src/main/res/layout/activity_webview.xml | 11 + .../src/main/res/layout/item_autofill.xml | 46 + .../main/res/layout/item_autofill_app_id.xml | 35 + .../main/res/layout/item_autofill_entry.xml | 53 + .../res/layout/item_autofill_select_entry.xml | 29 + .../item_autofill_select_entry_app_id.xml | 10 + .../item_autofill_select_entry_web_domain.xml | 10 + .../main/res/layout/item_autofill_unlock.xml | 28 + .../layout/item_autofill_unlock_app_id.xml | 10 + .../item_autofill_unlock_web_domain.xml | 10 + .../res/layout/item_autofill_web_domain.xml | 48 + .../res/mipmap-anydpi-v26/ic_launcher.xml | 6 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 4986 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2761 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 6944 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 11389 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 15997 bytes androidApp/src/main/res/raw/silence | Bin 0 -> 4115 bytes androidApp/src/main/res/resources.properties | 1 + androidApp/src/main/res/values-v31/colors.xml | 8 + androidApp/src/main/res/values/colors.xml | 22 + androidApp/src/main/res/values/ids.xml | 4 + androidApp/src/main/res/values/strings.xml | 23 + androidApp/src/main/res/values/themes.xml | 14 + .../baselineProfiles/baseline-prof.txt | 42915 +++++++++++++++ .../baselineProfiles/baseline-prof.txt | 43760 ++++++++++++++++ .../com/artemchep/keyguard/ExampleUnitTest.kt | 15 + androidBenchmark/build.gradle.kts | 80 + androidBenchmark/src/main/AndroidManifest.xml | 11 + .../com/artemchep/macrobenchmark/Utils.kt | 15 + .../BaselineProfileGenerator.kt | 33 + .../ui/keyguard/interestsWaitForTopics.kt | 36 + artwork/android-adaptive-icon.sketch | Bin 0 -> 23392 bytes artwork/ic_launcher_web.png | Bin 0 -> 21325 bytes artwork/promote.kra | Bin 0 -> 204526 bytes artwork/promote.png | Bin 0 -> 37400 bytes artwork/thumbnail.png | Bin 0 -> 53112 bytes artwork/vector.svg | 42 + build.gradle.kts | 133 + buildSrc/build.gradle.kts | 4 + buildSrc/settings.gradle.kts | 14 + buildSrc/src/main/kotlin/VersionCode.kt | 38 + common/build.gradle.kts | 287 + .../1.json | 106 + .../2.json | 150 + .../1.json | 134 + .../2.json | 178 + .../3.json | 216 + .../4.json | 338 + .../5.json | 382 + .../6.json | 426 + .../7.json | 429 + common/src/androidMain/AndroidManifest.xml | 248 + .../com/artemchep/keyguard/AutofillActArgs.kt | 133 + .../keyguard/android/AutofillActivity.kt | 273 + .../keyguard/android/AutofillCompose.kt | 302 + .../android/AutofillFakeAuthActivity.kt | 167 + .../keyguard/android/AutofillSaveActivity.kt | 290 + .../keyguard/android/BaseActivity.kt | 488 + .../com/artemchep/keyguard/android/BaseApp.kt | 12 + .../keyguard/android/LargeTypeActivity.kt | 148 + .../keyguard/android/MainActivity.kt | 69 + .../keyguard/android/Notifications.kt | 12 + .../keyguard/android/PasskeyBase64.kt | 19 + .../android/PasskeyBeginGetRequest.kt | 272 + .../keyguard/android/PasskeyCompose.kt | 91 + .../keyguard/android/PasskeyCreateActivity.kt | 363 + .../keyguard/android/PasskeyCreateRequest.kt | 207 + .../keyguard/android/PasskeyCredentialId.kt | 40 + .../keyguard/android/PasskeyGenerator.kt | 62 + .../keyguard/android/PasskeyGetActivity.kt | 679 + .../android/PasskeyGetUnlockActivity.kt | 193 + .../keyguard/android/PasskeyModule.kt | 30 + .../android/PasskeyProviderGetRequest.kt | 158 + .../keyguard/android/PasskeyUtils.kt | 413 + .../keyguard/android/PendingIntents.kt | 11 + .../android/autofill/AutofillStructure.kt | 22 + .../autofill/AutofillStructureParser.kt | 971 + .../android/autofill/AutofillViews.kt | 79 + .../autofill/KeyguardAutofillService.kt | 749 + .../autofill/KeyguardCredentialService.kt | 254 + .../clipboard/KeyguardClipboardService.kt | 454 + .../keyguard/android/closestActivityOrNull.kt | 12 + .../downloader/AttachmentDownloadTag.kt | 35 + .../downloader/DownloadClientAndroid.kt | 33 + .../android/downloader/DownloadManagerImpl.kt | 401 + .../android/downloader/NotificationIdPool.kt | 88 + .../journal/DownloadRepositoryImpl.kt | 89 + .../journal/room/DownloadDatabase.kt | 23 + .../journal/room/DownloadDatabaseManager.kt | 96 + .../room/DownloadDatabaseTypeConverter.kt | 14 + .../journal/room/DownloadInfoDao.kt | 53 + .../journal/room/DownloadInfoEntity.kt | 90 + .../downloader/journal/room/GeneratorDao.kt | 24 + .../journal/room/GeneratorEntity.kt | 17 + .../AttachmentDownloadActionReceiver.kt | 66 + .../downloader/receiver/CopyActionReceiver.kt | 58 + .../worker/AttachmentDownloadAllWorker.kt | 68 + .../worker/AttachmentDownloadWorker.kt | 332 + .../android/glide/KeyguardGlideModule.kt | 44 + .../android/glide/app/AppIconLoader.kt | 99 + .../android/glide/gravatar/GravatarLoader.kt | 86 + .../keyguard/android/glide/qr/QrLoader.kt | 96 + .../keyguard/android/glide/util/Util.kt | 67 + .../android/glide/website/FaviconLoader.kt | 105 + .../android/shortcut/ShortcutTileService.kt | 43 + .../keyguard/android/util/broadcastFlow.kt | 51 + .../keyguard/android/util/screenFlow.kt | 117 + .../android/worker/AttachmentUploadWorker.kt | 223 + .../keyguard/android/worker/SyncWorker.kt | 149 + .../android/worker/util/SessionWorker.kt | 51 + .../billing/BillingClientApiException.kt | 5 + .../BillingClientDisconnectedException.kt | 3 + .../keyguard/billing/BillingConnection.kt | 40 + .../keyguard/billing/BillingConnectionImpl.kt | 196 + .../keyguard/billing/BillingManager.kt | 10 + .../keyguard/billing/BillingManagerImpl.kt | 126 + .../billing/BillingResponseException.kt | 39 + .../common/service/permission/Permission.kt | 13 + .../usecase/impl/CleanUpAttachmentImpl.kt | 147 + .../usecase/impl/DisableBiometricImpl.kt | 29 + .../usecase/impl/EnableBiometricImpl.kt | 94 + .../impl/GetBiometricRemainingDurationImpl.kt | 44 + .../common/usecase/impl/GetPurchasedImpl.kt | 147 + .../common/usecase/impl/GetSuggestionsImpl.kt | 404 + .../keyguard/copy/AutofillServiceAndroid.kt | 83 + .../keyguard/copy/ClearDataAndroid.kt | 26 + .../keyguard/copy/ClipboardServiceAndroid.kt | 52 + .../copy/ConnectivityServiceAndroid.kt | 64 + .../keyguard/copy/GetBarcodeImageJvm.kt | 45 + .../keyguard/copy/LinkInfoExtractorAndroid.kt | 66 + .../keyguard/copy/LinkInfoExtractorExecute.kt | 21 + .../keyguard/copy/LinkInfoExtractorLaunch.kt | 65 + .../keyguard/copy/LogRepositoryAndroid.kt | 27 + .../keyguard/copy/PermissionServiceAndroid.kt | 86 + .../keyguard/copy/PowerServiceAndroid.kt | 25 + .../artemchep/keyguard/copy/QueueSyncAll.kt | 27 + .../artemchep/keyguard/copy/QueueSyncById.kt | 32 + .../keyguard/copy/ReviewServiceAndroid.kt | 55 + .../copy/SharedPreferencesStoreFactory.kt | 12 + .../SharedPreferencesStoreFactoryDefault.kt | 18 + .../copy/SubscriptionServiceAndroid.kt | 231 + .../keyguard/copy/TextServiceAndroid.kt | 26 + .../session/FingerprintRepositoryModule.kt | 257 + .../core/session/usecase/GetLocaleImpl.kt | 29 + .../session/usecase/GetLocaleVariantsImpl.kt | 40 + .../core/session/usecase/KEY_ALIAS.kt | 105 + .../core/session/usecase/PutLocaleImpl.kt | 28 + .../core/session/usecase/createSubDi.kt | 129 + .../keyguard/core/store/DatabaseManager.kt | 311 + .../feature/apppicker/AppPickerRoute.kt | 16 + .../feature/apppicker/AppPickerScreen.kt | 280 + .../feature/apppicker/AppPickerState.kt | 45 + .../apppicker/AppPickerStateProducer.kt | 200 + .../feature/auth/common/Autofill.android.kt | 25 + .../auth/login/otp/LoginOtpScreen.android.kt | 242 + .../biometric/BiometricPromptEffect.kt | 135 + .../keyguard/feature/crashlytics/IsEnabled.kt | 42 + .../keyguard/feature/favicon/FaviconImage.kt | 55 + .../feature/feedback/FeedbackUtils.kt | 10 + .../feature/filepicker/FilePickerEffect.kt | 110 + .../settings/component/SettingAutofill.kt | 96 + .../component/SettingCredentialProvider.kt | 92 + .../settings/component/SettingPermission.kt | 154 + .../component/SettingPermissionCamera.kt | 26 + .../component/SettingPermissionOther.kt | 146 + .../SettingPermissionPostNotifications.kt | 26 + .../SettingSubscriptionsPlayStore.kt | 58 + .../feature/home/vault/add/LeAddRoute.kt | 88 + .../feature/localization/TextResource.kt | 24 + .../navigation/NavigationRouterBackHandler.kt | 60 + .../keyguard/feature/qr/ScanQrRoute.kt | 16 + .../keyguard/feature/qr/ScanQrScreen.kt | 223 + .../keyguard/feature/qr/ScanQrState.kt | 20 + .../feature/qr/ScanQrStateProducer.kt | 41 + .../keyguard/feature/yubikey/Yubi.kt | 235 + .../artemchep/keyguard/platform/LeActivity.kt | 5 + .../keyguard/platform/LeAnimation.kt | 23 + .../artemchep/keyguard/platform/LeBundle.kt | 14 + .../artemchep/keyguard/platform/LeContext.kt | 16 + .../artemchep/keyguard/platform/LeDebug.kt | 5 + .../artemchep/keyguard/platform/LePlatform.kt | 14 + .../com/artemchep/keyguard/platform/LeUri.kt | 11 + .../artemchep/keyguard/platform/LeUsbPid.kt | 5 + .../com/artemchep/keyguard/platform/leIme.kt | 35 + .../lifecycle/LocalLifecycleStateFlow.kt | 39 + .../platform/parcelize/LeIgnoredOnParcel.kt | 5 + .../platform/parcelize/LeParcelable.kt | 5 + .../platform/parcelize/LeParcelize.kt | 5 + .../keyguard/platform/recordException.kt | 35 + .../artemchep/keyguard/room/AppDatabase.kt | 52 + .../keyguard/room/RoomBitwardenCipher.kt | 26 + .../keyguard/room/RoomBitwardenCollection.kt | 26 + .../keyguard/room/RoomBitwardenFolder.kt | 25 + .../keyguard/room/RoomBitwardenMeta.kt | 24 + .../room/RoomBitwardenOrganization.kt | 26 + .../keyguard/room/RoomBitwardenProfile.kt | 26 + .../keyguard/room/RoomBitwardenToken.kt | 15 + .../keyguard/room/RoomFillCipherHistory.kt | 30 + .../keyguard/room/RoomMigrationException.kt | 5 + .../keyguard/room/RoomOpenCipherHistory.kt | 30 + .../com/artemchep/keyguard/room/RoomSecret.kt | 80 + .../artemchep/keyguard/room/dao/AccountDao.kt | 12 + .../artemchep/keyguard/room/dao/CipherDao.kt | 12 + .../keyguard/room/dao/CollectionDao.kt | 12 + .../keyguard/room/dao/FillCipherHistoryDao.kt | 12 + .../artemchep/keyguard/room/dao/FolderDao.kt | 12 + .../artemchep/keyguard/room/dao/MetaDao.kt | 12 + .../keyguard/room/dao/OpenCipherHistoryDao.kt | 12 + .../keyguard/room/dao/OrganizationDao.kt | 12 + .../artemchep/keyguard/room/dao/ProfileDao.kt | 12 + .../kotlin/com/artemchep/keyguard/ui/Html.kt | 22 + .../keyguard/ui/KeepScreenOnEffect.kt | 26 + .../keyguard/ui/LeMOdelBottomSheet.kt | 56 + .../keyguard/ui/icons/AttachmentIconImpl.kt | 32 + .../artemchep/keyguard/ui/icons/EmailIcon.kt | 56 + .../artemchep/keyguard/ui/rightClickable.kt | 9 + .../ui/shimmer/rememberShimmerBoundsWindow.kt | 19 + .../com/artemchep/keyguard/ui/theme/Theme.kt | 48 + .../uploader/UploadAttachmentManager.kt | 33 + .../uploader/UploadAttachmentRepository.kt | 12 + .../UploadAttachmentRepositoryInMemory.kt | 48 + .../uploader/UploadAttachmentRequest.kt | 34 + .../crypto_prefs/SecurePrefKeyValueStore.kt | 138 + .../SharedPrefsKeyValuePreference.kt | 54 + .../shared_prefs/SharedPrefsKeyValueStore.kt | 69 + .../src/androidMain/res/drawable/ic_apps.xml | 10 + .../androidMain/res/drawable/ic_cancel.xml | 9 + .../src/androidMain/res/drawable/ic_copy.xml | 9 + .../androidMain/res/drawable/ic_download.xml | 9 + .../res/drawable/ic_launcher_background.xml | 3 + .../res/drawable/ic_launcher_foreground.xml | 38 + .../res/drawable/ic_launcher_monochrome.xml | 18 + .../res/drawable/ic_lock_open_outline.xml | 10 + .../res/drawable/ic_lock_outline.xml | 10 + .../src/androidMain/res/drawable/ic_login.xml | 9 + .../res/drawable/ic_logo_bitwarden.png | Bin 0 -> 13229 bytes .../androidMain/res/drawable/ic_number_0.xml | 9 + .../androidMain/res/drawable/ic_number_1.xml | 9 + .../androidMain/res/drawable/ic_number_2.xml | 9 + .../androidMain/res/drawable/ic_number_3.xml | 9 + .../androidMain/res/drawable/ic_number_4.xml | 9 + .../androidMain/res/drawable/ic_number_5.xml | 9 + .../androidMain/res/drawable/ic_number_6.xml | 9 + .../androidMain/res/drawable/ic_number_7.xml | 9 + .../androidMain/res/drawable/ic_number_8.xml | 9 + .../androidMain/res/drawable/ic_number_9.xml | 9 + .../res/drawable/ic_number_9_plus.xml | 9 + .../res/drawable/ic_shortcut_2fa.xml | 13 + .../androidMain/res/drawable/ic_splash.xml | 4 + .../src/androidMain/res/drawable/ic_sync.xml | 10 + .../src/androidMain/res/drawable/ic_tag.xml | 10 + .../src/androidMain/res/drawable/ic_tfa.xml | 9 + .../androidMain/res/drawable/ic_upload.xml | 9 + .../src/androidMain/res/drawable/ic_web.xml | 10 + .../res/layout/activity_webview.xml | 11 + .../androidMain/res/layout/item_autofill.xml | 46 + .../res/layout/item_autofill_app_id.xml | 35 + .../res/layout/item_autofill_entry.xml | 53 + .../res/layout/item_autofill_select_entry.xml | 29 + .../item_autofill_select_entry_app_id.xml | 10 + .../item_autofill_select_entry_web_domain.xml | 10 + .../res/layout/item_autofill_unlock.xml | 29 + .../layout/item_autofill_unlock_app_id.xml | 10 + .../item_autofill_unlock_web_domain.xml | 10 + .../res/layout/item_autofill_web_domain.xml | 35 + .../res/mipmap-anydpi-v26/ic_launcher.xml | 6 + .../res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 4986 bytes .../res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2761 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 6944 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 11389 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 15997 bytes common/src/androidMain/res/raw/silence | Bin 0 -> 4115 bytes .../src/androidMain/res/values-v31/colors.xml | 8 + common/src/androidMain/res/values/colors.xml | 22 + common/src/androidMain/res/values/ids.xml | 5 + .../src/androidMain/res/values/integers.xml | 3 + common/src/androidMain/res/values/strings.xml | 27 + common/src/androidMain/res/values/themes.xml | 15 + .../res/xml/backup_data_extraction_rules.xml | 10 + .../res/xml/backup_full_backup_content.xml | 5 + .../res/xml/config_autofill_service.xml | 235 + .../res/xml/config_credential_service.xml | 7 + .../res/xml/network_configuration.xml | 24 + .../androidMain/res/xml/provider_paths.xml | 6 + common/src/androidMain/res/xml/shortcuts.xml | 20 + .../kotlin/com/artemchep/keyguard/AppMode.kt | 77 + .../com/artemchep/keyguard/LocalAppMode.kt | 7 + .../journal/CipherHistoryOpenedRepository.kt | 22 + .../CipherHistoryOpenedRepositoryImpl.kt | 113 + .../downloader/journal/DownloadRepository.kt | 28 + .../journal/GeneratorHistoryRepository.kt | 13 + .../journal/GeneratorHistoryRepositoryImpl.kt | 81 + .../journal/room/DownloadInfoEntity2.kt | 43 + .../artemchep/keyguard/common/AppWorker.kt | 70 + .../keyguard/common/NotificationsWorker.kt | 8 + .../keyguard/common/exception/ApiException.kt | 22 + .../common/exception/DecodeException.kt | 6 + .../common/exception/HttpException.kt | 9 + .../exception/PasswordMismatchException.kt | 13 + .../common/exception/PremiumException.kt | 5 + .../keyguard/common/exception/Readable.kt | 7 + .../common/exception/SyncException.kt | 5 + .../com/artemchep/keyguard/common/io/IO.kt | 11 + .../keyguard/common/io/IOApplicative.kt | 59 + .../artemchep/keyguard/common/io/IOBind.kt | 21 + .../artemchep/keyguard/common/io/IOCombine.kt | 44 + .../keyguard/common/io/IOException.kt | 148 + .../artemchep/keyguard/common/io/IOFactory.kt | 38 + .../artemchep/keyguard/common/io/IOFlatten.kt | 14 + .../artemchep/keyguard/common/io/IOFlow.kt | 18 + .../artemchep/keyguard/common/io/IOFold.kt | 11 + .../artemchep/keyguard/common/io/IOFork.kt | 18 + .../keyguard/common/io/IOLaunchIn.kt | 6 + .../artemchep/keyguard/common/io/IOMeasure.kt | 13 + .../artemchep/keyguard/common/io/IOMonad.kt | 67 + .../artemchep/keyguard/common/io/IOShared.kt | 53 + .../artemchep/keyguard/common/io/IOTimeout.kt | 19 + .../artemchep/keyguard/common/io/IOWiden.kt | 6 + .../artemchep/keyguard/common/io/search.kt | 45 + .../artemchep/keyguard/common/io/throttle.kt | 79 + .../keyguard/common/model/AccountId.kt | 5 + .../common/model/AccountLastSyncStatus.kt | 8 + .../keyguard/common/model/AccountSyncError.kt | 14 + .../keyguard/common/model/AccountTask.kt | 6 + .../model/AddCipherOpenedHistoryRequest.kt | 10 + .../AddCipherUsedPasskeyHistoryRequest.kt | 11 + .../common/model/AddPasskeyCipherRequest.kt | 21 + .../common/model/AddUriCipherRequest.kt | 10 + .../artemchep/keyguard/common/model/AnyMap.kt | 5 + .../keyguard/common/model/AppColors.kt | 28 + .../keyguard/common/model/AppFont.kt | 10 + .../keyguard/common/model/AppTheme.kt | 8 + .../keyguard/common/model/Argon2Mode.kt | 27 + .../keyguard/common/model/AttachmentId.kt | 5 + .../keyguard/common/model/AuthResult.kt | 10 + .../keyguard/common/model/AutofillHint.kt | 89 + .../keyguard/common/model/AutofillTarget.kt | 6 + .../common/model/BarcodeImageFormat.kt | 58 + .../common/model/BarcodeImageRequest.kt | 12 + .../common/model/BiometricAuthException.kt | 110 + .../common/model/BiometricAuthPrompt.kt | 32 + .../keyguard/common/model/BiometricPurpose.kt | 9 + .../keyguard/common/model/BiometricStatus.kt | 16 + .../common/model/CheckPasswordLeakRequest.kt | 6 + .../model/CheckPasswordSetLeakRequest.kt | 6 + .../common/model/CheckUsernameLeakRequest.kt | 6 + .../model/CipherFieldSwitchToggleRequest.kt | 7 + .../common/model/CipherHistoryType.kt | 7 + .../keyguard/common/model/CipherId.kt | 5 + .../common/model/CipherOpenedHistoryMode.kt | 6 + .../keyguard/common/model/CreditCardType.kt | 223 + .../common/model/CryptoHashAlgorithm.kt | 7 + .../keyguard/common/model/DAccount.kt | 20 + .../keyguard/common/model/DAccountStatus.kt | 17 + .../common/model/DCipherOpenedHistory.kt | 9 + .../keyguard/common/model/DCollection.kt | 20 + .../keyguard/common/model/DFilter.kt | 994 + .../keyguard/common/model/DFolder.kt | 21 + .../keyguard/common/model/DFolderTree.kt | 21 + .../common/model/DGeneratorEmailRelay.kt | 22 + .../common/model/DGeneratorHistory.kt | 12 + .../artemchep/keyguard/common/model/DHibp.kt | 19 + .../artemchep/keyguard/common/model/DKey.kt | 27 + .../artemchep/keyguard/common/model/DMeta.kt | 25 + .../keyguard/common/model/DOrganization.kt | 21 + .../keyguard/common/model/DProfile.kt | 30 + .../keyguard/common/model/DSecret.kt | 602 + .../common/model/DSecretDuplicateGroup.kt | 7 + .../artemchep/keyguard/common/model/DSend.kt | 106 + .../keyguard/common/model/DSendFilter.kt | 185 + .../common/model/DownloadAttachmentRequest.kt | 18 + .../model/DownloadAttachmentRequestData.kt | 39 + .../keyguard/common/model/Fingerprint.kt | 6 + .../common/model/FingerprintBiometric.kt | 6 + .../common/model/FingerprintPassword.kt | 6 + .../keyguard/common/model/FolderOwnership2.kt | 12 + .../keyguard/common/model/HasAccountId.kt | 8 + .../keyguard/common/model/LinkInfo.kt | 3 + .../keyguard/common/model/LinkInfoAndroid.kt | 17 + .../keyguard/common/model/LinkInfoExecute.kt | 12 + .../keyguard/common/model/LinkInfoLaunch.kt | 19 + .../keyguard/common/model/LinkInfoPlatform.kt | 32 + .../keyguard/common/model/Loadable.kt | 44 + .../keyguard/common/model/MasterKey.kt | 20 + .../keyguard/common/model/MasterPassword.kt | 6 + .../common/model/MasterPasswordHash.kt | 20 + .../common/model/MasterPasswordSalt.kt | 20 + .../keyguard/common/model/MasterSession.kt | 41 + .../keyguard/common/model/NavAnimation.kt | 27 + .../keyguard/common/model/NoAnalytics.kt | 3 + .../common/model/PasswordGeneratorConfig.kt | 42 + .../model/PasswordGeneratorConfigBuilder.kt | 230 + .../common/model/PasswordGeneratorContext.kt | 9 + .../keyguard/common/model/PasswordPwnage.kt | 6 + .../keyguard/common/model/PasswordStrength.kt | 58 + .../keyguard/common/model/PersistedSession.kt | 9 + .../keyguard/common/model/Product.kt | 18 + .../common/model/RemoveAttachmentRequest.kt | 22 + .../keyguard/common/model/RichResult.kt | 164 + .../artemchep/keyguard/common/model/Screen.kt | 9 + .../keyguard/common/model/Subscription.kt | 20 + .../keyguard/common/model/ToastMessage.kt | 16 + .../keyguard/common/model/TotpCode.kt | 21 + .../keyguard/common/model/TotpToken.kt | 279 + .../keyguard/common/model/UsernamePwnage.kt | 3 + .../common/model/UsernameVariation.kt | 32 + .../common/model/UsernameVariation2.kt | 80 + .../keyguard/common/model/VaultState.kt | 93 + .../keyguard/common/model/WithBiometric.kt | 9 + .../common/model/create/CreateRequest.kt | 124 + .../keyguard/common/service/Files.kt | 14 + .../service/autofill/AutofillService.kt | 7 + .../service/autofill/AutofillServiceStatus.kt | 13 + .../service/clipboard/ClipboardService.kt | 12 + .../connectivity/ConnectivityService.kt | 16 + .../common/service/crypto/CipherEncryptor.kt | 34 + .../common/service/crypto/CryptoGenerator.kt | 49 + .../common/service/crypto/FileEncryptor.kt | 25 + .../service/deeplink/DeeplinkService.kt | 13 + .../deeplink/impl/DeeplinkServiceImpl.kt | 36 + .../service/download/DownloadManager.kt | 37 + .../service/download/DownloadProgress.kt | 25 + .../service/download/DownloadService.kt | 15 + .../service/download/DownloadServiceImpl.kt | 59 + .../service/extract/LinkInfoExtractor.kt | 16 + .../service/extract/LinkInfoRegistry.kt | 42 + .../extract/impl/LinkInfoPlatformExtractor.kt | 81 + .../gpmprivapps/PrivilegedAppsService.kt | 7 + .../impl/PrivilegedAppsServiceImpl.kt | 28 + .../breaches/all/BreachesLocalDataSource.kt | 15 + .../breaches/all/BreachesRemoteDataSource.kt | 8 + .../hibp/breaches/all/BreachesRepository.kt | 8 + .../all/impl/BreachesLocalDataSourceImpl.kt | 60 + .../all/impl/BreachesRemoteDataSourceImpl.kt | 41 + .../all/impl/BreachesRepositoryImpl.kt | 89 + .../breaches/all/model/LocalBreachesEntity.kt | 11 + .../breaches/find/AccountPwnageDataSource.kt | 3 + .../find/AccountPwnageDataSourceLocal.kt | 20 + .../find/AccountPwnageDataSourceRemote.kt | 12 + .../breaches/find/AccountPwnageRepository.kt | 19 + .../impl/AccountPwnageDataSourceLocalImpl.kt | 68 + .../impl/AccountPwnageDataSourceRemoteImpl.kt | 96 + .../find/impl/AccountPwnageRepositoryImpl.kt | 205 + .../passwords/PasswordPwnageDataSource.kt | 3 + .../PasswordPwnageDataSourceLocal.kt | 20 + .../PasswordPwnageDataSourceRemote.kt | 10 + .../passwords/PasswordPwnageRepository.kt | 16 + .../impl/PasswordPwnageDataSourceLocalImpl.kt | 67 + .../PasswordPwnageDataSourceRemoteImpl.kt | 81 + .../impl/PasswordPwnageRepositoryImpl.kt | 198 + .../common/service/id/IdRepository.kt | 9 + .../service/id/impl/IdRepositoryImpl.kt | 26 + .../justdeleteme/JustDeleteMeService.kt | 7 + .../justdeleteme/JustDeleteMeServiceInfo.kt | 12 + .../impl/JustDeleteMeServiceImpl.kt | 70 + .../justgetmydata/JustGetMyDataService.kt | 7 + .../justgetmydata/JustGetMyDataServiceInfo.kt | 12 + .../impl/JustGetMyDataServiceImpl.kt | 70 + .../service/keyvalue/KeyValuePreference.kt | 52 + .../common/service/keyvalue/KeyValueStore.kt | 79 + .../keyvalue/impl/JsonKeyValueStore.kt | 185 + .../common/service/license/LicenseService.kt | 8 + .../license/impl/LicenseServiceImpl.kt | 79 + .../common/service/license/model/License.kt | 20 + .../common/service/logging/LogLevel.kt | 8 + .../common/service/logging/LogRepository.kt | 32 + .../logging/kotlin/LogRepositoryKotlin.kt | 26 + .../common/service/passkey/PassKeyService.kt | 7 + .../service/passkey/PassKeyServiceInfo.kt | 11 + .../passkey/impl/PassKeyServiceImpl.kt | 66 + .../common/service/permission/Permission.kt | 5 + .../service/permission/PermissionService.kt | 13 + .../service/permission/PermissionState.kt | 11 + .../common/service/power/PowerService.kt | 8 + .../common/service/relays/api/EmailRelay.kt | 27 + .../service/relays/api/EmailRelaySchema.kt | 20 + .../relays/api/anonaddy/AnonAddyEmailRelay.kt | 113 + .../api/duckduckgo/DuckDuckGoEmailRelay.kt | 79 + .../relays/api/fastmail/FastmailEmailRelay.kt | 58 + .../firefoxrelay/FirefoxRelayEmailRelay.kt | 101 + .../forwardemail/ForwardEmailEmailRelay.kt | 123 + .../api/simplelogin/SimpleLoginEmailRelay.kt | 106 + .../service/relays/di/EmailRelayModule.kt | 38 + .../repo/GeneratorEmailRelayRepository.kt | 13 + .../repo/GeneratorEmailRelayRepositoryImpl.kt | 112 + .../common/service/review/ReviewLog.kt | 13 + .../common/service/review/ReviewService.kt | 10 + .../service/review/impl/ReviewLogImpl.kt | 37 + .../settings/SettingsReadRepository.kt | 88 + .../settings/SettingsReadWriteRepository.kt | 162 + .../settings/impl/SettingsRepositoryImpl.kt | 388 + .../service/similarity/SimilarityService.kt | 8 + .../common/service/state/StateRepository.kt | 13 + .../service/state/impl/StateRepositoryImpl.kt | 117 + .../subscription/SubscriptionService.kt | 14 + .../common/service/text/Base32Service.kt | 43 + .../common/service/text/Base64Service.kt | 48 + .../common/service/text/TextService.kt | 22 + .../keyguard/common/service/tld/TldService.kt | 7 + .../common/service/tld/impl/TldServiceImpl.kt | 127 + .../common/service/totp/TotpService.kt | 12 + .../service/totp/impl/TotpServiceImpl.kt | 264 + .../common/service/twofa/TwoFaService.kt | 7 + .../common/service/twofa/TwoFaServiceInfo.kt | 11 + .../service/twofa/impl/TwoFaServiceImpl.kt | 66 + .../vault/FingerprintReadRepository.kt | 15 + .../vault/FingerprintReadWriteRepository.kt | 11 + .../common/service/vault/KeyReadRepository.kt | 14 + .../service/vault/KeyReadWriteRepository.kt | 11 + .../vault/SessionMetadataReadRepository.kt | 11 + .../SessionMetadataReadWriteRepository.kt | 13 + .../service/vault/SessionReadRepository.kt | 11 + .../vault/SessionReadWriteRepository.kt | 10 + .../vault/impl/FingerprintRepositoryImpl.kt | 96 + .../service/vault/impl/KeyRepositoryImpl.kt | 102 + .../impl/SessionMetadataRepositoryImpl.kt | 52 + .../vault/impl/SessionRepositoryImpl.kt | 20 + .../service/wordlist/WordlistService.kt | 7 + .../wordlist/impl/WordlistServiceImpl.kt | 44 + .../keyguard/common/usecase/AddCipher.kt | 8 + .../common/usecase/AddCipherOpenedHistory.kt | 8 + .../usecase/AddCipherUsedAutofillHistory.kt | 8 + .../usecase/AddCipherUsedPasskeyHistory.kt | 8 + .../keyguard/common/usecase/AddEmailRelay.kt | 6 + .../keyguard/common/usecase/AddFolder.kt | 8 + .../common/usecase/AddGeneratorHistory.kt | 6 + .../common/usecase/AddPasskeyCipher.kt | 8 + .../keyguard/common/usecase/AddUriCipher.kt | 13 + .../usecase/AuthConfirmMasterKeyUseCase.kt | 11 + .../usecase/AuthGenerateMasterKeyUseCase.kt | 6 + .../usecase/BiometricKeyDecryptUseCase.kt | 10 + .../usecase/BiometricKeyEncryptUseCase.kt | 10 + .../common/usecase/BiometricStatusUseCase.kt | 6 + .../common/usecase/ChangeCipherNameById.kt | 7 + .../usecase/ChangeCipherPasswordById.kt | 7 + .../common/usecase/CheckPasswordLeak.kt | 8 + .../common/usecase/CheckPasswordSetLeak.kt | 9 + .../common/usecase/CheckUsernameLeak.kt | 9 + .../common/usecase/CipherBreachCheck.kt | 7 + .../common/usecase/CipherDuplicatesCheck.kt | 19 + .../common/usecase/CipherExpiringCheck.kt | 6 + .../common/usecase/CipherFieldSwitchToggle.kt | 8 + .../common/usecase/CipherIncompleteCheck.kt | 5 + .../keyguard/common/usecase/CipherMerge.kt | 5 + .../usecase/CipherRemovePasswordHistory.kt | 7 + .../CipherRemovePasswordHistoryById.kt | 8 + .../keyguard/common/usecase/CipherToolbox.kt | 43 + .../usecase/CipherUnsecureUrlAutoFix.kt | 7 + .../common/usecase/CipherUnsecureUrlCheck.kt | 3 + .../keyguard/common/usecase/CipherUrlCheck.kt | 6 + .../common/usecase/CipherUrlDuplicateCheck.kt | 6 + .../common/usecase/CleanUpAttachment.kt | 5 + .../keyguard/common/usecase/ClearData.kt | 5 + .../common/usecase/ClearVaultSession.kt | 5 + .../usecase/ConfirmAccessByPasswordUseCase.kt | 5 + .../keyguard/common/usecase/CopyCipherById.kt | 8 + .../keyguard/common/usecase/CopyText.kt | 26 + .../keyguard/common/usecase/DateFormatter.kt | 17 + .../usecase/DeviceEncryptionKeyUseCase.kt | 24 + .../common/usecase/DeviceIdUseCase.kt | 48 + .../common/usecase/DisableBiometric.kt | 5 + .../common/usecase/DownloadAttachment.kt | 6 + .../common/usecase/EnableBiometric.kt | 9 + .../common/usecase/FavouriteCipherById.kt | 8 + .../usecase/GenerateMasterHashUseCase.kt | 11 + .../usecase/GenerateMasterKeyUseCase.kt | 11 + .../usecase/GenerateMasterSaltUseCase.kt | 6 + .../common/usecase/GetAccountHasError.kt | 6 + .../common/usecase/GetAccountStatus.kt | 6 + .../keyguard/common/usecase/GetAccounts.kt | 10 + .../common/usecase/GetAccountsHasError.kt | 5 + .../common/usecase/GetAllowScreenshots.kt | 5 + .../GetAllowTwoPanelLayoutInLandscape.kt | 5 + .../GetAllowTwoPanelLayoutInPortrait.kt | 5 + .../common/usecase/GetAppBuildDate.kt | 5 + .../common/usecase/GetAppBuildType.kt | 5 + .../keyguard/common/usecase/GetAppIcons.kt | 5 + .../keyguard/common/usecase/GetAppVersion.kt | 5 + .../common/usecase/GetAppVersionCode.kt | 5 + .../common/usecase/GetAppVersionName.kt | 5 + .../common/usecase/GetAutofillCopyTotp.kt | 5 + .../usecase/GetAutofillInlineSuggestions.kt | 5 + .../usecase/GetAutofillManualSelection.kt | 5 + .../usecase/GetAutofillRespectAutofillOff.kt | 5 + .../common/usecase/GetAutofillSaveRequest.kt | 5 + .../common/usecase/GetAutofillSaveUri.kt | 5 + .../common/usecase/GetBarcodeImage.kt | 7 + .../usecase/GetBiometricRemainingDuration.kt | 6 + .../common/usecase/GetBiometricTimeout.kt | 6 + .../usecase/GetBiometricTimeoutVariants.kt | 6 + .../common/usecase/GetCachePremium.kt | 5 + .../common/usecase/GetCanAddAccount.kt | 5 + .../common/usecase/GetCanAddSecret.kt | 5 + .../keyguard/common/usecase/GetCanWrite.kt | 5 + .../common/usecase/GetCheckPwnedPasswords.kt | 5 + .../common/usecase/GetCheckPwnedServices.kt | 5 + .../keyguard/common/usecase/GetCheckTwoFA.kt | 5 + .../common/usecase/GetCipherOpenedCount.kt | 5 + .../common/usecase/GetCipherOpenedHistory.kt | 7 + .../keyguard/common/usecase/GetCiphers.kt | 10 + .../common/usecase/GetClipboardAutoClear.kt | 6 + .../usecase/GetClipboardAutoClearVariants.kt | 6 + .../common/usecase/GetClipboardAutoRefresh.kt | 6 + .../GetClipboardAutoRefreshVariants.kt | 6 + .../keyguard/common/usecase/GetCollections.kt | 10 + .../keyguard/common/usecase/GetColors.kt | 6 + .../common/usecase/GetColorsVariants.kt | 6 + .../common/usecase/GetConcealFields.kt | 5 + .../common/usecase/GetDebugPremium.kt | 5 + .../common/usecase/GetDebugScreenDelay.kt | 5 + .../keyguard/common/usecase/GetEmailRelays.kt | 10 + .../keyguard/common/usecase/GetEnvSendUrl.kt | 6 + .../keyguard/common/usecase/GetFingerprint.kt | 6 + .../keyguard/common/usecase/GetFolderTree.kt | 11 + .../common/usecase/GetFolderTreeById.kt | 8 + .../keyguard/common/usecase/GetFolders.kt | 10 + .../keyguard/common/usecase/GetFont.kt | 6 + .../common/usecase/GetFontVariants.kt | 6 + .../common/usecase/GetGeneratorHistory.kt | 6 + .../keyguard/common/usecase/GetGravatarUrl.kt | 6 + .../common/usecase/GetJustDeleteMeByUrl.kt | 6 + .../common/usecase/GetKeepScreenOn.kt | 5 + .../keyguard/common/usecase/GetLocale.kt | 5 + .../common/usecase/GetLocaleVariants.kt | 5 + .../keyguard/common/usecase/GetMarkdown.kt | 5 + .../keyguard/common/usecase/GetMetas.kt | 10 + .../common/usecase/GetNavAnimation.kt | 6 + .../common/usecase/GetNavAnimationVariants.kt | 6 + .../keyguard/common/usecase/GetNavLabel.kt | 5 + .../usecase/GetOnboardingLastVisitInstant.kt | 6 + .../common/usecase/GetOrganizations.kt | 10 + .../keyguard/common/usecase/GetPassphrase.kt | 6 + .../keyguard/common/usecase/GetPassword.kt | 10 + .../common/usecase/GetPasswordStrength.kt | 6 + .../keyguard/common/usecase/GetProducts.kt | 6 + .../keyguard/common/usecase/GetProfiles.kt | 10 + .../keyguard/common/usecase/GetPurchased.kt | 41 + .../keyguard/common/usecase/GetScreenState.kt | 5 + .../keyguard/common/usecase/GetSends.kt | 8 + .../usecase/GetShouldRequestAppReview.kt | 8 + .../common/usecase/GetSubscriptions.kt | 6 + .../keyguard/common/usecase/GetSuggestions.kt | 12 + .../keyguard/common/usecase/GetTheme.kt | 6 + .../common/usecase/GetThemeUseAmoledDark.kt | 5 + .../common/usecase/GetThemeVariants.kt | 6 + .../keyguard/common/usecase/GetTotpCode.kt | 7 + .../common/usecase/GetUseExternalBrowser.kt | 5 + .../common/usecase/GetVaultLockAfterReboot.kt | 5 + .../usecase/GetVaultLockAfterScreenOff.kt | 5 + .../usecase/GetVaultLockAfterTimeout.kt | 6 + .../GetVaultLockAfterTimeoutVariants.kt | 6 + .../common/usecase/GetVaultPersist.kt | 5 + .../common/usecase/GetVaultSession.kt | 12 + .../common/usecase/GetWebsiteIcons.kt | 5 + .../keyguard/common/usecase/GetWriteAccess.kt | 5 + .../common/usecase/MergeFolderById.kt | 8 + .../keyguard/common/usecase/MessageHub.kt | 7 + .../common/usecase/MoveCipherToFolderById.kt | 9 + .../common/usecase/NumberFormatter.kt | 7 + .../common/usecase/PasskeyTargetCheck.kt | 15 + .../common/usecase/PutAccountColorById.kt | 9 + .../PutAccountMasterPasswordHintById.kt | 8 + .../common/usecase/PutAccountNameById.kt | 8 + .../common/usecase/PutAllowScreenshots.kt | 5 + .../PutAllowTwoPanelLayoutInLandscape.kt | 5 + .../PutAllowTwoPanelLayoutInPortrait.kt | 5 + .../keyguard/common/usecase/PutAppIcons.kt | 5 + .../common/usecase/PutAutofillCopyTotp.kt | 5 + .../usecase/PutAutofillInlineSuggestions.kt | 5 + .../usecase/PutAutofillManualSelection.kt | 5 + .../usecase/PutAutofillRespectAutofillOff.kt | 5 + .../common/usecase/PutAutofillSaveRequest.kt | 5 + .../common/usecase/PutAutofillSaveUri.kt | 5 + .../common/usecase/PutBiometricTimeout.kt | 6 + .../common/usecase/PutCachePremium.kt | 5 + .../common/usecase/PutCheckPwnedPasswords.kt | 5 + .../common/usecase/PutCheckPwnedServices.kt | 5 + .../keyguard/common/usecase/PutCheckTwoFA.kt | 5 + .../common/usecase/PutClipboardAutoClear.kt | 6 + .../common/usecase/PutClipboardAutoRefresh.kt | 6 + .../keyguard/common/usecase/PutColors.kt | 6 + .../common/usecase/PutConcealFields.kt | 5 + .../common/usecase/PutDebugPremium.kt | 5 + .../common/usecase/PutDebugScreenDelay.kt | 5 + .../keyguard/common/usecase/PutFont.kt | 6 + .../common/usecase/PutKeepScreenOn.kt | 5 + .../keyguard/common/usecase/PutLocale.kt | 5 + .../keyguard/common/usecase/PutMarkdown.kt | 5 + .../common/usecase/PutNavAnimation.kt | 6 + .../keyguard/common/usecase/PutNavLabel.kt | 5 + .../usecase/PutOnboardingLastVisitInstant.kt | 6 + .../keyguard/common/usecase/PutScreenState.kt | 8 + .../keyguard/common/usecase/PutTheme.kt | 6 + .../common/usecase/PutThemeUseAmoledDark.kt | 5 + .../common/usecase/PutUseExternalBrowser.kt | 5 + .../common/usecase/PutVaultLockAfterReboot.kt | 5 + .../usecase/PutVaultLockAfterScreenOff.kt | 5 + .../usecase/PutVaultLockAfterTimeout.kt | 6 + .../common/usecase/PutVaultPersist.kt | 5 + .../common/usecase/PutVaultSession.kt | 6 + .../common/usecase/PutWebsiteIcons.kt | 5 + .../keyguard/common/usecase/PutWriteAccess.kt | 5 + .../keyguard/common/usecase/QueueSyncAll.kt | 5 + .../keyguard/common/usecase/QueueSyncById.kt | 6 + .../common/usecase/RePromptCipherById.kt | 8 + .../common/usecase/RemoveAccountById.kt | 8 + .../keyguard/common/usecase/RemoveAccounts.kt | 5 + .../common/usecase/RemoveAttachment.kt | 6 + .../common/usecase/RemoveCipherById.kt | 7 + .../common/usecase/RemoveEmailRelayById.kt | 7 + .../common/usecase/RemoveFolderById.kt | 13 + .../common/usecase/RemoveGeneratorHistory.kt | 5 + .../usecase/RemoveGeneratorHistoryById.kt | 7 + .../common/usecase/RenameFolderById.kt | 7 + .../common/usecase/RequestAppReview.kt | 9 + .../common/usecase/ResolvePlaceholders.kt | 7 + .../common/usecase/RestoreCipherById.kt | 7 + .../keyguard/common/usecase/RetryCipher.kt | 7 + .../common/usecase/RotateDeviceIdUseCase.kt | 25 + .../keyguard/common/usecase/ShowMessage.kt | 10 + .../keyguard/common/usecase/SyncAll.kt | 7 + .../keyguard/common/usecase/SyncById.kt | 6 + .../common/usecase/TrashCipherByFolderId.kt | 7 + .../common/usecase/TrashCipherById.kt | 7 + .../keyguard/common/usecase/UnlockUseCase.kt | 6 + .../keyguard/common/usecase/Watchdog.kt | 96 + .../common/usecase/WindowCoroutineScope.kt | 5 + .../common/usecase/impl/AddEmailRelayImpl.kt | 18 + .../usecase/impl/AddGeneratorHistoryImpl.kt | 18 + .../impl/AuthConfirmMasterKeyUseCaseImpl.kt | 52 + .../impl/AuthGenerateMasterKeyUseCaseImpl.kt | 42 + .../impl/BiometricKeyDecryptUseCaseImpl.kt | 20 + .../impl/BiometricKeyEncryptUseCaseImpl.kt | 18 + .../usecase/impl/ClearVaultSessionImpl.kt | 18 + .../ConfirmAccessByPasswordUseCaseImpl.kt | 45 + .../usecase/impl/DownloadAttachmentImpl.kt | 218 + .../impl/GenerateMasterHashUseCaseImpl.kt | 46 + .../impl/GenerateMasterKeyUseCaseImpl.kt | 46 + .../impl/GenerateMasterSaltUseCaseImpl.kt | 28 + .../usecase/impl/GetAccountStatusImpl.kt | 95 + .../usecase/impl/GetAllowScreenshotsImpl.kt | 20 + .../GetAllowTwoPanelLayoutInLandscapeImpl.kt | 26 + .../GetAllowTwoPanelLayoutInPortraitImpl.kt | 26 + .../usecase/impl/GetAppBuildTypeImpl.kt | 15 + .../common/usecase/impl/GetAppIconsImpl.kt | 20 + .../common/usecase/impl/GetAppVersionCode.kt | 13 + .../common/usecase/impl/GetAppVersionImpl.kt | 30 + .../common/usecase/impl/GetAppVersionName.kt | 13 + .../usecase/impl/GetAutofillCopyTotpImpl.kt | 20 + .../impl/GetAutofillInlineSuggestionsImpl.kt | 20 + .../impl/GetAutofillManualSelectionImpl.kt | 20 + .../impl/GetAutofillRespectAutofillOffImpl.kt | 20 + .../impl/GetAutofillSaveRequestImpl.kt | 29 + .../usecase/impl/GetAutofillSaveUriImpl.kt | 29 + .../usecase/impl/GetBiometricTimeoutImpl.kt | 30 + .../impl/GetBiometricTimeoutVariantsImpl.kt | 27 + .../usecase/impl/GetCachePremiumImpl.kt | 21 + .../usecase/impl/GetCanAddAccountImpl.kt | 29 + .../common/usecase/impl/GetCanWriteImpl.kt | 16 + .../common/usecase/impl/GetCanWriteStub.kt | 11 + .../impl/GetCheckPwnedPasswordsImpl.kt | 20 + .../usecase/impl/GetCheckPwnedServicesImpl.kt | 20 + .../common/usecase/impl/GetCheckTwoFAImpl.kt | 20 + .../usecase/impl/GetClipboardAutoClearImpl.kt | 30 + .../impl/GetClipboardAutoClearVariantsImpl.kt | 23 + .../impl/GetClipboardAutoRefreshImpl.kt | 30 + .../GetClipboardAutoRefreshVariantsImpl.kt | 25 + .../common/usecase/impl/GetColorsImpl.kt | 22 + .../usecase/impl/GetColorsVariantsImpl.kt | 18 + .../usecase/impl/GetConcealFieldsImpl.kt | 20 + .../usecase/impl/GetDebugPremiumImpl.kt | 20 + .../usecase/impl/GetDebugScreenDelayImpl.kt | 20 + .../common/usecase/impl/GetEnvSendUrlImpl.kt | 45 + .../common/usecase/impl/GetFontImpl.kt | 22 + .../usecase/impl/GetFontVariantsImpl.kt | 18 + .../usecase/impl/GetGeneratorHistoryImpl.kt | 18 + .../common/usecase/impl/GetGravatarUrlImpl.kt | 42 + .../usecase/impl/GetJustDeleteMeByUrlImpl.kt | 54 + .../usecase/impl/GetKeepScreenOnImpl.kt | 20 + .../common/usecase/impl/GetLocaleImpl.kt | 18 + .../usecase/impl/GetLocaleVariantsImpl.kt | 47 + .../common/usecase/impl/GetMarkdownImpl.kt | 20 + .../usecase/impl/GetNavAnimationImpl.kt | 31 + .../impl/GetNavAnimationVariantsImpl.kt | 15 + .../common/usecase/impl/GetNavLabelImpl.kt | 26 + .../impl/GetOnboardingLastVisitInstantImpl.kt | 20 + .../common/usecase/impl/GetPasswordImpl.kt | 115 + .../common/usecase/impl/GetProductsImpl.kt | 16 + .../common/usecase/impl/GetScreenStateImpl.kt | 16 + .../impl/GetShouldRequestAppReviewImpl.kt | 22 + .../usecase/impl/GetSubscriptionsImpl.kt | 16 + .../common/usecase/impl/GetThemeImpl.kt | 22 + .../usecase/impl/GetThemeUseAmoledDarkImpl.kt | 21 + .../usecase/impl/GetThemeVariantsImpl.kt | 18 + .../common/usecase/impl/GetTotpCodeImpl.kt | 46 + .../usecase/impl/GetUseExternalBrowserImpl.kt | 20 + .../impl/GetVaultLockAfterRebootImpl.kt | 30 + .../impl/GetVaultLockAfterScreenOffImpl.kt | 29 + .../impl/GetVaultLockAfterTimeoutImpl.kt | 30 + .../GetVaultLockAfterTimeoutVariantsImpl.kt | 29 + .../usecase/impl/GetVaultPersistImpl.kt | 20 + .../usecase/impl/GetVaultSessionImpl.kt | 79 + .../usecase/impl/GetWebsiteIconsImpl.kt | 20 + .../common/usecase/impl/GetWriteAccessImpl.kt | 20 + .../common/usecase/impl/MessageHub.kt | 52 + .../common/usecase/impl/PasskeyTargetCheck.kt | 97 + .../usecase/impl/PutAllowScreenshotsImpl.kt | 18 + .../PutAllowTwoPanelLayoutInLandscapeImpl.kt | 18 + .../PutAllowTwoPanelLayoutInPortraitImpl.kt | 18 + .../common/usecase/impl/PutAppIconsImpl.kt | 18 + .../usecase/impl/PutAutofillCopyTotpImpl.kt | 18 + .../impl/PutAutofillInlineSuggestionsImpl.kt | 17 + .../impl/PutAutofillManualSelectionImpl.kt | 18 + .../impl/PutAutofillRespectAutofillOffImpl.kt | 18 + .../impl/PutAutofillSaveRequestImpl.kt | 30 + .../usecase/impl/PutAutofillSaveUriImpl.kt | 30 + .../usecase/impl/PutBiometricTimeoutImpl.kt | 19 + .../usecase/impl/PutCachePremiumImpl.kt | 18 + .../impl/PutCheckPwnedPasswordsImpl.kt | 18 + .../usecase/impl/PutCheckPwnedServicesImpl.kt | 18 + .../common/usecase/impl/PutCheckTwoFAImpl.kt | 18 + .../usecase/impl/PutClipboardAutoClearImpl.kt | 19 + .../impl/PutClipboardAutoRefreshImpl.kt | 19 + .../common/usecase/impl/PutColorsImpl.kt | 19 + .../usecase/impl/PutConcealFieldsImpl.kt | 18 + .../usecase/impl/PutDebugPremiumImpl.kt | 18 + .../usecase/impl/PutDebugScreenDelayImpl.kt | 18 + .../common/usecase/impl/PutFontImpl.kt | 19 + .../usecase/impl/PutKeepScreenOnImpl.kt | 18 + .../common/usecase/impl/PutLocaleImpl.kt | 18 + .../common/usecase/impl/PutMarkdownImpl.kt | 18 + .../usecase/impl/PutNavAnimationImpl.kt | 19 + .../common/usecase/impl/PutNavLabelImpl.kt | 18 + .../impl/PutOnboardingLastVisitInstantImpl.kt | 19 + .../common/usecase/impl/PutScreenStateImpl.kt | 18 + .../common/usecase/impl/PutThemeImpl.kt | 19 + .../usecase/impl/PutThemeUseAmoledDarkImpl.kt | 18 + .../impl/PutUserExternalBrowserImpl.kt | 18 + .../impl/PutVaultLockAfterRebootImpl.kt | 18 + .../impl/PutVaultLockAfterScreenOffImpl.kt | 18 + .../impl/PutVaultLockAfterTimeoutImpl.kt | 19 + .../usecase/impl/PutVaultPersistImpl.kt | 18 + .../usecase/impl/PutVaultSessionImpl.kt | 21 + .../usecase/impl/PutWebsiteIconsImpl.kt | 18 + .../common/usecase/impl/PutWriteAccessImpl.kt | 18 + .../usecase/impl/RemoveAttachmentImpl.kt | 34 + .../impl/RemoveGeneratorHistoryByIdImpl.kt | 17 + .../impl/RemoveGeneratorHistoryImpl.kt | 18 + .../usecase/impl/RequestAppReviewImpl.kt | 77 + .../usecase/impl/ResolvePlaceholdersImpl.kt | 18 + .../common/usecase/impl/UnlockUseCaseImpl.kt | 487 + .../usecase/impl/WindowCoroutineScopeImpl.kt | 54 + .../artemchep/keyguard/common/util/Boolean.kt | 3 + .../keyguard/common/util/Browsers.kt | 81 + .../keyguard/common/util/ByteArray.kt | 15 + .../artemchep/keyguard/common/util/Instant.kt | 5 + .../com/artemchep/keyguard/common/util/Int.kt | 3 + .../artemchep/keyguard/common/util/Luhn.kt | 22 + .../keyguard/common/util/MainThread.kt | 4 + .../keyguard/common/util/RegexColorize.kt | 31 + .../keyguard/common/util/flow/EventFlow.kt | 95 + .../keyguard/common/util/flow/combine.kt | 58 + .../keyguard/common/util/flow/foldAsList.kt | 12 + .../keyguard/common/util/flow/observeFlow.kt | 34 + .../keyguard/common/util/flow/stateIn.kt | 98 + .../keyguard/common/util/flow/widen.kt | 1 + .../keyguard/common/util/flowOfTime.kt | 20 + .../keyguard/common/util/hash/FNV.kt | 25 + .../common/util/sqldelight/collectors.kt | 27 + .../keyguard/common/util/toColorInt.kt | 93 + .../common/util/withLogTimeOfFirstEvent.kt | 36 + .../artemchep/keyguard/common/worker/Wrker.kt | 12 + .../keyguard/common/worker/impl/WrkerImpl.kt | 142 + .../core/session/usecase/AuthTypealias.kt | 7 + .../keyguard/core/session/usecase/SubDI.kt | 510 + .../core/session/util/EncodeByCipher.kt | 8 + .../keyguard/core/store/DatabaseDispatcher.kt | 3 + .../keyguard/core/store/DatabaseManager.kt | 220 + .../keyguard/core/store/DatabaseSyncer.kt | 171 + .../core/store/bitwarden/BitwardenCipher.kt | 297 + .../BitwardenCipherRepositoryImpl.kt | 64 + .../store/bitwarden/BitwardenCollection.kt | 30 + .../BitwardenCollectionRepositoryImpl.kt | 49 + .../core/store/bitwarden/BitwardenFolder.kt | 25 + .../BitwardenFolderRepositoryImpl.kt | 49 + .../core/store/bitwarden/BitwardenMeta.kt | 40 + .../bitwarden/BitwardenMetaRepositoryImpl.kt | 49 + .../store/bitwarden/BitwardenOrganization.kt | 29 + .../BitwardenOrganizationRepositoryImpl.kt | 60 + .../core/store/bitwarden/BitwardenProfile.kt | 30 + .../BitwardenProfileRepositoryImpl.kt | 68 + .../core/store/bitwarden/BitwardenSend.kt | 71 + .../bitwarden/BitwardenSendRepositoryImpl.kt | 57 + .../core/store/bitwarden/BitwardenService.kt | 57 + .../store/bitwarden/BitwardenServiceUtil.kt | 24 + .../core/store/bitwarden/BitwardenToken.kt | 148 + .../bitwarden/BitwardenTokenRepositoryImpl.kt | 62 + .../artemchep/keyguard/feature/EmptyView.kt | 96 + .../artemchep/keyguard/feature/ErrorView.kt | 77 + .../feature/apppicker/AppPickerResult.kt | 9 + .../feature/apppicker/AppPickerRoute.kt | 5 + .../appreview/RequestAppReviewEffect.kt | 31 + .../feature/attachments/AttachmentsRoute.kt | 11 + .../feature/attachments/AttachmentsScreen.kt | 164 + .../feature/attachments/AttachmentsState.kt | 52 + .../attachments/AttachmentsStateProducer.kt | 661 + .../attachments/compose/ItemAttachment.kt | 386 + .../attachments/model/AttachmentItem.kt | 79 + .../attachments/util/CreateAttachmentItem.kt | 121 + .../util/CreateSendAttachmentItem.kt | 117 + .../keyguard/feature/auth/AccountViewRoute.kt | 16 + .../feature/auth/AccountViewScreen.kt | 236 + .../keyguard/feature/auth/AccountViewState.kt | 42 + .../feature/auth/AccountViewStateProducer.kt | 1037 + .../keyguard/feature/auth/common/Autofill.kt | 71 + .../feature/auth/common/IntFieldModel.kt | 15 + .../feature/auth/common/SwitchFieldModel.kt | 13 + .../feature/auth/common/TextFieldModel.kt | 52 + .../keyguard/feature/auth/common/Validated.kt | 20 + .../feature/auth/common/Visibility.kt | 50 + .../auth/common/util/ValidatorDomain.kt | 81 + .../auth/common/util/ValidatorEmail.kt | 62 + .../auth/common/util/ValidatorFeedback.kt | 48 + .../auth/common/util/ValidatorHeader.kt | 3 + .../auth/common/util/ValidatorPassword.kt | 53 + .../auth/common/util/ValidatorPhoneNumber.kt | 4 + .../auth/common/util/ValidatorTitle.kt | 44 + .../feature/auth/common/util/ValidatorUri.kt | 70 + .../feature/auth/common/util/ValidatorUrl.kt | 106 + .../keyguard/feature/auth/login/LoginEvent.kt | 14 + .../feature/auth/login/LoginRegion.kt | 64 + .../keyguard/feature/auth/login/LoginRoute.kt | 34 + .../feature/auth/login/LoginScreen.kt | 605 + .../keyguard/feature/auth/login/LoginState.kt | 157 + .../feature/auth/login/LoginStateProducer.kt | 1086 + .../feature/auth/login/otp/LoginTwofaRoute.kt | 33 + .../auth/login/otp/LoginTwofaScreen.kt | 654 + .../feature/auth/login/otp/LoginTwofaState.kt | 145 + .../auth/login/otp/LoginTwofaStateProducer.kt | 793 + .../auth/login/otp/TwoFactorProviderItem.kt | 8 + .../feature/auth/login/otp/TwoFactorState.kt | 9 + .../feature/barcodetype/BarcodeTypeRoute.kt | 76 + .../feature/barcodetype/BarcodeTypeScreen.kt | 231 + .../feature/barcodetype/BarcodeTypeState.kt | 15 + .../barcodetype/BarcodeTypeStateProducer.kt | 105 + .../biometric/BiometricPromptEffect.kt | 10 + .../changepassword/ChangePasswordRoute.kt | 11 + .../changepassword/ChangePasswordScreen.kt | 286 + .../changepassword/ChangePasswordState.kt | 42 + .../ChangePasswordStateProducer.kt | 215 + .../feature/colorpicker/ColorPickerResult.kt | 11 + .../feature/colorpicker/ColorPickerRoute.kt | 44 + .../feature/colorpicker/ColorPickerScreen.kt | 166 + .../feature/colorpicker/ColorPickerState.kt | 25 + .../colorpicker/ColorPickerStateProducer.kt | 78 + .../confirmation/ConfirmationResult.kt | 9 + .../feature/confirmation/ConfirmationRoute.kt | 132 + .../confirmation/ConfirmationScreen.kt | 397 + .../feature/confirmation/ConfirmationState.kt | 70 + .../confirmation/ConfirmationStateProducer.kt | 173 + .../elevatedaccess/ElevatedAccessResult.kt | 7 + .../elevatedaccess/ElevatedAccessRoute.kt | 33 + .../elevatedaccess/ElevatedAccessScreen.kt | 211 + .../elevatedaccess/ElevatedAccessState.kt | 40 + .../ElevatedAccessStateProducer.kt | 192 + .../folder/FolderConfirmationResult.kt | 11 + .../folder/FolderConfirmationRoute.kt | 25 + .../folder/FolderConfirmationScreen.kt | 195 + .../folder/FolderConfirmationState.kt | 24 + .../folder/FolderConfirmationStateProducer.kt | 311 + .../confirmation/organization/FolderInfo.kt | 36 + .../OrganizationConfirmationResult.kt | 12 + .../OrganizationConfirmationRoute.kt | 54 + .../OrganizationConfirmationScreen.kt | 184 + .../OrganizationConfirmationState.kt | 33 + .../OrganizationConfirmationStateProducer.kt | 711 + .../feature/crashlytics/crashlyticsMap.kt | 64 + .../feature/datasafety/DataSafetyRoute.kt | 11 + .../feature/datasafety/DataSafetyScreen.kt | 274 + .../feature/datepicker/DatePickerResult.kt | 13 + .../feature/datepicker/DatePickerRoute.kt | 24 + .../feature/datepicker/DatePickerScreen.kt | 206 + .../feature/datepicker/DatePickerState.kt | 28 + .../datepicker/DatePickerStateProducer.kt | 122 + .../feature/decorator/ItemDecorator.kt | 75 + .../keyguard/feature/dialog/Dialog.kt | 229 + .../feature/duplicates/DuplicatesRoute.kt | 18 + .../feature/duplicates/DuplicatesScreen.kt | 193 + .../feature/duplicates/DuplicatesState.kt | 14 + .../duplicates/DuplicatesStateProducer.kt | 560 + .../feature/emailleak/EmailLeakRoute.kt | 94 + .../feature/emailleak/EmailLeakScreen.kt | 280 + .../feature/emailleak/EmailLeakState.kt | 31 + .../emailleak/EmailLeakStateProducer.kt | 77 + .../keyguard/feature/favicon/Favicon.kt | 33 + .../feature/favicon/FaviconFetcher.kt | 10 + .../keyguard/feature/favicon/FaviconImage.kt | 10 + .../keyguard/feature/favicon/FaviconServer.kt | 42 + .../keyguard/feature/favicon/GravatarUrl.kt | 5 + .../feature/feedback/FeedbackRoute.kt | 11 + .../feature/feedback/FeedbackScreen.kt | 152 + .../feature/feedback/FeedbackState.kt | 9 + .../feature/feedback/FeedbackStateProducer.kt | 74 + .../feature/feedback/FeedbackUtils.kt | 3 + .../feature/filepicker/FilePickerEffect.kt | 9 + .../feature/filepicker/FilePickerIntent.kt | 23 + .../feature/filepicker/FilePickerUtils.kt | 34 + .../feature/generator/GeneratorRoute.kt | 20 + .../feature/generator/GeneratorScreen.kt | 1000 + .../feature/generator/GeneratorState.kt | 92 + .../generator/GeneratorStateProducer.kt | 1309 + .../feature/generator/GeneratorType.kt | 78 + .../emailrelay/EmailRelayListRoute.kt | 39 + .../emailrelay/EmailRelayListScreen.kt | 324 + .../emailrelay/EmailRelayListState.kt | 40 + .../emailrelay/EmailRelayListStateProducer.kt | 360 + .../generator/history/GeneratorHistoryItem.kt | 51 + .../history/GeneratorHistoryRoute.kt | 11 + .../history/GeneratorHistoryScreen.kt | 254 + .../history/GeneratorHistoryState.kt | 15 + .../history/GeneratorHistoryStateProducer.kt | 313 + .../keyguard/feature/home/HomeLayout.kt | 33 + .../keyguard/feature/home/HomeScreen.kt | 893 + .../feature/home/settings/SettingListItem.kt | 105 + .../feature/home/settings/SettingListRoute.kt | 13 + .../home/settings/SettingListScreen.kt | 316 + .../home/settings/SettingPaneContent.kt | 386 + .../feature/home/settings/SettingPaneItem.kt | 22 + .../feature/home/settings/SettingPaneState.kt | 20 + .../feature/home/settings/SettingsRoute.kt | 11 + .../feature/home/settings/SettingsScreen.kt | 27 + .../settings/accounts/AccountListRoute.kt | 11 + .../settings/accounts/AccountListScreen.kt | 172 + .../settings/accounts/AccountListState.kt | 30 + .../accounts/AccountListStateWrapper.kt | 7 + .../settings/accounts/AccountListViewModel.kt | 328 + .../home/settings/accounts/AccountsRoute.kt | 11 + .../home/settings/accounts/AccountsScreen.kt | 26 + .../accounts/component/AccountListItem.kt | 200 + .../settings/accounts/model/AccountItem.kt | 53 + .../autofill/AutofillSettingsRoute.kt | 11 + .../autofill/AutofillSettingsScreen.kt | 50 + .../settings/component/SettingAboutApp.kt | 45 + .../component/SettingAboutAppBuildDate.kt | 47 + .../settings/component/SettingAboutTeam.kt | 64 + .../component/SettingAboutTelegram.kt | 68 + .../home/settings/component/SettingApk.kt | 72 + .../settings/component/SettingAppIcons.kt | 83 + .../settings/component/SettingAutofill.kt | 7 + .../component/SettingAutofillCopyTotp.kt | 81 + .../SettingAutofillInlineSuggestions.kt | 78 + .../SettingAutofillManualSelection.kt | 78 + .../SettingAutofillRespectAutofillOff.kt | 101 + .../component/SettingAutofillSaveRequest.kt | 86 + .../component/SettingAutofillSaveUri.kt | 81 + .../settings/component/SettingBiometrics.kt | 134 + .../component/SettingCheckPwnedPasswords.kt | 65 + .../component/SettingCheckPwnedServices.kt | 65 + .../settings/component/SettingCheckTwoFA.kt | 65 + .../settings/component/SettingClearCache.kt | 64 + .../component/SettingClipboardAutoClear.kt | 103 + .../component/SettingClipboardAutoRefresh.kt | 116 + .../settings/component/SettingColorAccent.kt | 131 + .../settings/component/SettingColorScheme.kt | 105 + .../settings/component/SettingComponent.kt | 40 + .../component/SettingConcealedFields.kt | 89 + .../home/settings/component/SettingCrash.kt | 36 + .../settings/component/SettingCrashlytics.kt | 82 + .../component/SettingCredentialProvider.kt | 7 + .../settings/component/SettingDataSafety.kt | 65 + .../settings/component/SettingEmitMessage.kt | 52 + .../settings/component/SettingExperimental.kt | 56 + .../component/SettingFeaturesOverview.kt | 66 + .../settings/component/SettingFeedbackApp.kt | 67 + .../home/settings/component/SettingFont.kt | 115 + .../home/settings/component/SettingGitHub.kt | 66 + .../settings/component/SettingKeepScreenOn.kt | 74 + .../component/SettingLaunchAppPicker.kt | 69 + .../component/SettingLaunchYubiKey.kt | 50 + .../settings/component/SettingLocalization.kt | 66 + .../settings/component/SettingMarkdown.kt | 120 + .../component/SettingMasterPassword.kt | 66 + .../settings/component/SettingNavAnimation.kt | 96 + .../settings/component/SettingNavLabel.kt | 78 + .../component/SettingOpenSourceLicenses.kt | 64 + .../settings/component/SettingPermission.kt | 7 + .../component/SettingPermissionCamera.kt | 7 + .../component/SettingPermissionOther.kt | 7 + .../SettingPermissionPostNotifications.kt | 7 + .../component/SettingPrivacyPolicy.kt | 64 + .../home/settings/component/SettingRateApp.kt | 64 + .../component/SettingRequireMasterPassword.kt | 179 + .../component/SettingRotateDeviceId.kt | 66 + .../settings/component/SettingScreenDelay.kt | 66 + .../settings/component/SettingScreenshots.kt | 88 + .../home/settings/component/SettingSection.kt | 39 + .../settings/component/SettingSelectLocale.kt | 155 + .../component/SettingSubscriptions.kt | 363 + .../component/SettingSubscriptionsDebug.kt | 70 + .../SettingSubscriptionsPlayStore.kt | 7 + .../component/SettingThemeUseAmoledDark.kt | 82 + .../SettingTwoPanelLayoutLandscape.kt | 80 + .../SettingTwoPanelLayoutPortrait.kt | 80 + .../component/SettingUseExternalBrowser.kt | 86 + .../settings/component/SettingVaultLock.kt | 57 + .../component/SettingVaultLockAfterReboot.kt | 94 + .../SettingVaultLockAfterScreenOff.kt | 87 + .../component/SettingVaultLockAfterTimeout.kt | 109 + .../settings/component/SettingVaultPersist.kt | 121 + .../settings/component/SettingWebsiteIcons.kt | 130 + .../settings/component/SettingWriteAccess.kt | 70 + .../home/settings/debug/DebugSettingsRoute.kt | 11 + .../settings/debug/DebugSettingsScreen.kt | 43 + .../home/settings/display/UiSettingsRoute.kt | 11 + .../home/settings/display/UiSettingsScreen.kt | 56 + .../experimental/ExperimentalSettingsRoute.kt | 11 + .../ExperimentalSettingsScreen.kt | 18 + .../NotificationsSettingsRoute.kt | 11 + .../NotificationsSettingsScreen.kt | 19 + .../home/settings/other/OtherSettingsRoute.kt | 11 + .../settings/other/OtherSettingsScreen.kt | 52 + .../permissions/PermissionsSettingsRoute.kt | 11 + .../permissions/PermissionsSettingsScreen.kt | 30 + .../settings/search/SearchSettingsRoute.kt | 11 + .../settings/search/SearchSettingsScreen.kt | 155 + .../settings/search/SearchSettingsState.kt | 21 + .../search/SearchSettingsStateProducer.kt | 105 + .../security/SecuritySettingsRoute.kt | 11 + .../security/SecuritySettingsScreen.kt | 49 + .../SubscriptionsSettingsRoute.kt | 11 + .../SubscriptionsSettingsScreen.kt | 27 + .../watchtower/WatchtowerSettingsRoute.kt | 11 + .../watchtower/WatchtowerSettingsScreen.kt | 19 + .../keyguard/feature/home/vault/VaultRoute.kt | 239 + .../feature/home/vault/VaultScreen.kt | 36 + .../keyguard/feature/home/vault/VaultState.kt | 34 + .../feature/home/vault/add/AddRoute.kt | 61 + .../feature/home/vault/add/AddScreen.kt | 1734 + .../feature/home/vault/add/AddState.kt | 337 + .../home/vault/add/AddStateProducer.kt | 3411 ++ .../add/attachment/SkeletonAttachment.kt | 37 + .../SkeletonAttachmentItemFactory.kt | 95 + .../home/vault/collection/CollectionRoute.kt | 19 + .../home/vault/collection/CollectionScreen.kt | 102 + .../home/vault/collection/CollectionState.kt | 27 + .../collection/CollectionStateProducer.kt | 76 + .../vault/collections/CollectionsRoute.kt | 21 + .../vault/collections/CollectionsScreen.kt | 232 + .../vault/collections/CollectionsState.kt | 56 + .../collections/CollectionsStateProducer.kt | 373 + .../home/vault/component/SearchTextField.kt | 211 + .../home/vault/component/VaultListItem.kt | 752 + .../component/VaultPasswordHistoryItem.kt | 11 + .../VaultPasswordHistoryValueItem.kt | 92 + .../vault/component/VaultViewActionItem.kt | 50 + .../component/VaultViewAttachmentItem.kt | 17 + .../vault/component/VaultViewBooleanItem.kt | 41 + .../vault/component/VaultViewButtonItem.kt | 57 + .../home/vault/component/VaultViewCardItem.kt | 308 + .../component/VaultViewCollectionItem.kt | 39 + .../vault/component/VaultViewErrorItem.kt | 150 + .../vault/component/VaultViewFolderItem.kt | 118 + .../vault/component/VaultViewIdentityItem.kt | 126 + .../component/VaultViewInactivePasskeyItem.kt | 58 + .../component/VaultViewInactiveTotpItem.kt | 58 + .../home/vault/component/VaultViewInfoItem.kt | 242 + .../home/vault/component/VaultViewItem.kt | 34 + .../vault/component/VaultViewLabelItem.kt | 51 + .../home/vault/component/VaultViewNoteItem.kt | 120 + .../component/VaultViewOrganizationItem.kt | 39 + .../vault/component/VaultViewPasskeyItem.kt | 136 + .../component/VaultViewReusedPasswordItem.kt | 58 + .../vault/component/VaultViewSectionItem.kt | 16 + .../vault/component/VaultViewSpacerItem.kt | 15 + .../home/vault/component/VaultViewTotpItem.kt | 448 + .../home/vault/component/VaultViewUriItem.kt | 134 + .../vault/component/VaultViewValueItem.kt | 209 + .../home/vault/folders/FoldersRoute.kt | 21 + .../home/vault/folders/FoldersScreen.kt | 252 + .../home/vault/folders/FoldersState.kt | 51 + .../vault/folders/FoldersStateProducer.kt | 506 + .../feature/home/vault/model/FilterItem.kt | 42 + .../feature/home/vault/model/SortItem.kt | 28 + .../feature/home/vault/model/VaultItem.kt | 157 + .../feature/home/vault/model/VaultItemIcon.kt | 37 + .../vault/model/VaultPasswordHistoryItem.kt | 29 + .../feature/home/vault/model/VaultViewItem.kt | 285 + .../vault/organization/OrganizationRoute.kt | 19 + .../vault/organization/OrganizationScreen.kt | 90 + .../vault/organization/OrganizationState.kt | 24 + .../organization/OrganizationStateProducer.kt | 66 + .../vault/organizations/OrganizationsRoute.kt | 20 + .../organizations/OrganizationsScreen.kt | 216 + .../vault/organizations/OrganizationsState.kt | 38 + .../OrganizationsStateProducer.kt | 269 + .../home/vault/screen/AutofillWindow.kt | 243 + .../home/vault/screen/VaultCipherItem.kt | 20 + .../home/vault/screen/VaultListFilter.kt | 827 + .../home/vault/screen/VaultListItemMapping.kt | 325 + .../home/vault/screen/VaultListMode.kt | 7 + .../home/vault/screen/VaultListRoute.kt | 16 + .../home/vault/screen/VaultListScreen.kt | 646 + .../home/vault/screen/VaultListState.kt | 89 + .../vault/screen/VaultListStateProducer.kt | 1878 + .../home/vault/screen/VaultRecentState.kt | 34 + .../vault/screen/VaultRecentStateProducer.kt | 234 + .../screen/VaultViewPasswordHistoryRoute.kt | 15 + .../screen/VaultViewPasswordHistoryScreen.kt | 171 + .../screen/VaultViewPasswordHistoryState.kt | 38 + .../VaultViewPasswordHistoryStateProducer.kt | 296 + .../home/vault/screen/VaultViewRoute.kt | 17 + .../home/vault/screen/VaultViewScreen.kt | 393 + .../home/vault/screen/VaultViewState.kt | 45 + .../vault/screen/VaultViewStateProducer.kt | 2402 + .../feature/home/vault/search/IndexedText.kt | 122 + .../feature/home/vault/search/Suggestions.kt | 138 + .../home/vault/search/filter/AccountFilter.kt | 9 + .../home/vault/search/filter/AndFilter.kt | 25 + .../vault/search/filter/CollectionFilter.kt | 20 + .../home/vault/search/filter/Filter.kt | 27 + .../home/vault/search/filter/FilterHolder.kt | 22 + .../home/vault/search/filter/FolderFilter.kt | 16 + .../home/vault/search/filter/OrFilter.kt | 29 + .../vault/search/filter/OrganizationFilter.kt | 16 + .../search/filter/PasswordDuplicateFilter.kt | 37 + .../search/filter/PasswordStrengthFilter.kt | 18 + .../home/vault/search/filter/TypeFilter.kt | 9 + .../vault/search/sort/AlphabeticalSort.kt | 24 + .../home/vault/search/sort/LastCreatedSort.kt | 31 + .../vault/search/sort/LastModifiedSort.kt | 31 + .../search/sort/PasswordLastModifiedSort.kt | 31 + .../home/vault/search/sort/PasswordSort.kt | 29 + .../vault/search/sort/PasswordStrengthSort.kt | 31 + .../feature/home/vault/search/sort/Sort.kt | 24 + .../feature/home/vault/util/SortLimiter.kt | 3 + .../home/vault/util/changePasswordAction.kt | 660 + .../justdeleteme/JustDeleteMeComponent.kt | 37 + .../directory/JustDeleteMeServiceListRoute.kt | 40 + .../JustDeleteMeServiceListScreen.kt | 265 + .../directory/JustDeleteMeServiceListState.kt | 40 + .../JustDeleteMeServiceListStateProducer.kt | 155 + .../directory/JustDeleteMeServiceViewRoute.kt | 58 + .../JustDeleteMeServiceViewScreen.kt | 145 + .../directory/JustDeleteMeServiceViewState.kt | 30 + .../JustDeleteMeServiceViewStateProducer.kt | 48 + .../keyguard/feature/keyguard/AppRoute.kt | 11 + .../keyguard/feature/keyguard/AppScreen.kt | 152 + .../feature/keyguard/main/MainRoute.kt | 11 + .../feature/keyguard/main/MainScreen.kt | 26 + .../feature/keyguard/setup/SetupRoute.kt | 22 + .../feature/keyguard/setup/SetupScreen.kt | 327 + .../feature/keyguard/setup/SetupState.kt | 39 + .../keyguard/setup/SetupStateProducer.kt | 213 + .../feature/keyguard/unlock/UnlockRoute.kt | 24 + .../feature/keyguard/unlock/UnlockScreen.kt | 267 + .../feature/keyguard/unlock/UnlockState.kt | 40 + .../keyguard/unlock/UnlockStateProducer.kt | 267 + .../feature/largetype/LargeTypeRoute.kt | 102 + .../feature/largetype/LargeTypeScreen.kt | 200 + .../feature/largetype/LargeTypeState.kt | 14 + .../largetype/LargeTypeStateProducer.kt | 59 + .../keyguard/feature/license/LicenseRoute.kt | 11 + .../keyguard/feature/license/LicenseScreen.kt | 182 + .../keyguard/feature/license/LicenseState.kt | 14 + .../feature/license/LicenseStateProducer.kt | 49 + .../keyguard/feature/loading/LoadingScreen.kt | 27 + .../keyguard/feature/loading/LoadingTask.kt | 80 + .../feature/localization/TextHolder.kt | 21 + .../feature/localization/textResource.kt | 15 + .../keyguard/feature/navigation/N.kt | 8 + .../keyguard/feature/navigation/Navigation.kt | 66 + .../feature/navigation/NavigationAnimation.kt | 115 + .../navigation/NavigationController.kt | 70 + .../feature/navigation/NavigationEntry.kt | 67 + .../navigation/NavigationEntryProvider.kt | 33 + .../feature/navigation/NavigationIntent.kt | 102 + .../navigation/NavigationIntentPackage.kt | 5 + .../feature/navigation/NavigationNode.kt | 270 + .../navigation/NavigationNodeCurrentStack.kt | 18 + .../feature/navigation/NavigationRoute.kt | 13 + .../feature/navigation/NavigationRouter.kt | 212 + .../navigation/NavigationRouterBackHandler.kt | 88 + .../navigation/NavigationRouterBackIcon.kt | 31 + .../keyguard/feature/navigation/state/Copy.kt | 11 + .../feature/navigation/state/DiskHandle.kt | 14 + .../navigation/state/DiskHandleImpl.kt | 98 + .../navigation/state/FlowHolderViewModel.kt | 102 + .../navigation/state/PersistedStorage.kt | 13 + .../navigation/state/ProduceScreenState.kt | 40 + .../state/RememberScreenStateFlow.kt | 127 + .../state/RememberStateFlowScope.kt | 102 + .../state/RememberStateFlowScopeImpl.kt | 291 + .../state/RememberStateFlowScopeSub.kt | 36 + .../notifications/NotificationsBanner.kt | 142 + .../feature/onboarding/OnboardingBanner.kt | 146 + .../feature/onboarding/OnboardingItem.kt | 11 + .../feature/onboarding/OnboardingRoute.kt | 11 + .../feature/onboarding/OnboardingScreen.kt | 399 + .../passkeys/PasskeysCredentialViewRoute.kt | 22 + .../passkeys/PasskeysCredentialViewScreen.kt | 384 + .../passkeys/PasskeysCredentialViewState.kt | 19 + .../PasskeysCredentialViewStateProducer.kt | 106 + .../directory/PasskeysServiceListRoute.kt | 41 + .../directory/PasskeysServiceListScreen.kt | 252 + .../directory/PasskeysServiceListState.kt | 41 + .../PasskeysServiceListStateProducer.kt | 156 + .../directory/PasskeysServiceViewRoute.kt | 20 + .../directory/PasskeysServiceViewScreen.kt | 192 + .../directory/PasskeysServiceViewState.kt | 17 + .../PasskeysServiceViewStateProducer.kt | 44 + .../feature/passwordleak/PasswordLeakRoute.kt | 56 + .../passwordleak/PasswordLeakScreen.kt | 165 + .../feature/passwordleak/PasswordLeakState.kt | 15 + .../passwordleak/PasswordLeakStateProducer.kt | 57 + .../keyguard/feature/qr/ScanQrButton.kt | 39 + .../keyguard/feature/qr/ScanQrRoute.kt | 5 + .../keyguard/feature/search/EmptyItem.kt | 30 + .../search/component/DropdownButton.kt | 108 + .../search/component/DropdownHeader.kt | 71 + .../feature/search/filter/FilterButton.kt | 38 + .../feature/search/filter/FilterItems.kt | 86 + .../feature/search/filter/FilterScreen.kt | 81 + .../search/filter/component/FilterItem.kt | 142 + .../search/filter/component/FilterSection.kt | 67 + .../VaultHomeScreenFilterPaneNumberOfItems.kt | 36 + .../search/filter/model/FilterItemModel.kt | 23 + .../feature/search/search/IndexedModel.kt | 58 + .../search/search/produceSimpleSearch.kt | 88 + .../feature/search/sort/SortButton.kt | 81 + .../feature/search/sort/component/SortItem.kt | 94 + .../search/sort/component/SortSection.kt | 16 + .../search/sort/model/SortItemModel.kt | 19 + .../keyguard/feature/send/SendItem.kt | 77 + .../feature/send/SendListItemMapping.kt | 97 + .../keyguard/feature/send/SendListState.kt | 86 + .../feature/send/SendListStateProducer.kt | 1179 + .../keyguard/feature/send/SendRoute.kt | 42 + .../keyguard/feature/send/SendScreen.kt | 34 + .../action/showInLargeTypeActionOrNull.kt | 52 + .../feature/send/list/SendListRoute.kt | 11 + .../feature/send/list/SendListScreen.kt | 633 + .../feature/send/search/AccessCountSort.kt | 31 + .../feature/send/search/AlphabeticalSort.kt | 24 + .../feature/send/search/LastDeletedSort.kt | 31 + .../feature/send/search/LastExpiredSort.kt | 31 + .../feature/send/search/LastModifiedSort.kt | 31 + .../feature/send/search/SendListFilter.kt | 445 + .../feature/send/search/SendSortItem.kt | 28 + .../keyguard/feature/send/search/Sort.kt | 23 + .../send/search/filter/AccountFilter.kt | 9 + .../feature/send/search/filter/AndFilter.kt | 25 + .../feature/send/search/filter/Filter.kt | 27 + .../send/search/filter/FilterHolder.kt | 22 + .../feature/send/search/filter/FilterItem.kt | 42 + .../feature/send/search/filter/OrFilter.kt | 29 + .../feature/send/search/filter/TypeFilter.kt | 9 + .../feature/send/view/SendViewScreen.kt | 348 + .../feature/send/view/SendViewState.kt | 42 + .../send/view/SendViewStateProducer.kt | 694 + .../feature/send/view/VaultViewRoute.kt | 17 + .../keyguard/feature/sync/SyncItem.kt | 26 + .../keyguard/feature/sync/SyncRoute.kt | 11 + .../keyguard/feature/sync/SyncScreen.kt | 305 + .../keyguard/feature/sync/SyncState.kt | 28 + .../feature/sync/SyncStateProducer.kt | 245 + .../keyguard/feature/team/AboutTeamRoute.kt | 11 + .../keyguard/feature/team/AboutTeamScreen.kt | 199 + .../tfa/directory/TwoFaServiceListRoute.kt | 41 + .../tfa/directory/TwoFaServiceListScreen.kt | 252 + .../tfa/directory/TwoFaServiceListState.kt | 40 + .../TwoFaServiceListStateProducer.kt | 155 + .../tfa/directory/TwoFaServiceViewRoute.kt | 20 + .../tfa/directory/TwoFaServiceViewScreen.kt | 250 + .../tfa/directory/TwoFaServiceViewState.kt | 17 + .../TwoFaServiceViewStateProducer.kt | 44 + .../keyguard/feature/twopane/TwoPaneLayout.kt | 220 + .../feature/twopane/TwoPaneLayoutProvider.kt | 7 + .../feature/twopane/TwoPaneNavigation.kt | 58 + .../keyguard/feature/twopane/TwoPaneScreen.kt | 53 + .../feature/watchtower/WatchtowerRoute.kt | 11 + .../feature/watchtower/WatchtowerScreen.kt | 1037 + .../feature/watchtower/WatchtowerState.kt | 124 + .../watchtower/WatchtowerStateProducer.kt | 947 + .../feature/websiteleak/WebsiteLeakRoute.kt | 56 + .../feature/websiteleak/WebsiteLeakScreen.kt | 272 + .../feature/websiteleak/WebsiteLeakState.kt | 29 + .../websiteleak/WebsiteLeakStateProducer.kt | 87 + .../keyguard/feature/yubikey/YubiKey.kt | 237 + .../keyguard/feature/yubikey/YubiKeyState.kt | 26 + .../keyguard/feature/yubikey/YubiRoute.kt | 11 + .../keyguard/feature/yubikey/YubiScreen.kt | 171 + .../artemchep/keyguard/platform/LeActivity.kt | 3 + .../keyguard/platform/LeAnimation.kt | 6 + .../artemchep/keyguard/platform/LeBundle.kt | 11 + .../artemchep/keyguard/platform/LeCipher.kt | 5 + .../artemchep/keyguard/platform/LeContext.kt | 8 + .../keyguard/platform/LeCrashlytics.kt | 13 + .../artemchep/keyguard/platform/LeDebug.kt | 8 + .../artemchep/keyguard/platform/LePlatform.kt | 18 + .../com/artemchep/keyguard/platform/LeUri.kt | 9 + .../artemchep/keyguard/platform/LeUsbPid.kt | 3 + .../keyguard/platform/LeWindowInsets.kt | 19 + .../platform/lifecycle/LeLifecycleExt.kt | 39 + .../platform/lifecycle/LeLifecycleProvider.kt | 7 + .../platform/lifecycle/LeLifecycleState.kt | 9 + .../platform/parcelize/LeIgnoredOnParcel.kt | 9 + .../platform/parcelize/LeParcelable.kt | 3 + .../platform/parcelize/LeParcelize.kt | 5 + .../keyguard/platform/util/hasAutofill.kt | 10 + .../keyguard/platform/util/isRelease.kt | 5 + .../bitwarden/CreatePasskeyRequest.kt | 140 + .../keyguard/provider/bitwarden/ServerEnv.kt | 43 + .../bitwarden/ServerTwoFactorToken.kt | 13 + .../provider/bitwarden/api/SyncEngine.kt | 1081 + .../bitwarden/api/builder/ServerEnvApi.kt | 549 + .../api/builder/ServerEnvIdentity.kt | 17 + .../api/builder/ServerEnvNotifications.kt | 27 + .../bitwarden/api/builder/UrlBuilder.kt | 81 + .../provider/bitwarden/api/builder/http.kt | 165 + .../bitwarden/api/entity/SyncResponse.kt | 32 + .../keyguard/provider/bitwarden/api/fff.kt | 245 + .../keyguard/provider/bitwarden/api/login.kt | 300 + .../bitwarden/crypto/BitwardenCrypto.kt | 338 + .../bitwarden/crypto/BitwardenDecoder.kt | 3 + .../provider/bitwarden/crypto/CipherCrypto.kt | 146 + .../bitwarden/crypto/CipherDecoder.kt | 158 + .../bitwarden/crypto/CollectionCrypto.kt | 9 + .../bitwarden/crypto/CollectionDecoder.kt | 35 + .../provider/bitwarden/crypto/EntryCrypto.kt | 33 + .../provider/bitwarden/crypto/FolderCrypto.kt | 10 + .../bitwarden/crypto/FolderDecoder.kt | 30 + .../bitwarden/crypto/OrganizationCrypto.kt | 9 + .../bitwarden/crypto/OrganizationDecoder.kt | 34 + .../bitwarden/crypto/ProfileCrypto.kt | 12 + .../bitwarden/crypto/ProfileDecoder.kt | 27 + .../provider/bitwarden/crypto/SendCrypto.kt | 30 + .../provider/bitwarden/crypto/SendDecoder.kt | 59 + .../bitwarden/crypto/SymmetricCryptoKey.kt | 193 + .../entity/AccountPreLoginRequest.kt | 10 + .../entity/AccountPreLoginResponse.kt | 58 + .../bitwarden/entity/AttachmentEntity.kt | 27 + .../bitwarden/entity/AvatarRequestEntity.kt | 9 + .../provider/bitwarden/entity/CardEntity.kt | 27 + .../provider/bitwarden/entity/CipherEntity.kt | 78 + .../entity/CipherRepromptTypeEntity.kt | 32 + .../bitwarden/entity/CipherTypeEntity.kt | 38 + .../bitwarden/entity/CollectionEntity.kt | 26 + .../bitwarden/entity/ConnectTokenResponse.kt | 53 + .../provider/bitwarden/entity/DomainEntity.kt | 26 + .../provider/bitwarden/entity/ErrorEntity.kt | 235 + .../provider/bitwarden/entity/EventEntity.kt | 7 + .../bitwarden/entity/EventTypeEntity.kt | 175 + .../provider/bitwarden/entity/FieldEntity.kt | 21 + .../bitwarden/entity/FieldTypeEntity.kt | 37 + .../provider/bitwarden/entity/FolderEntity.kt | 19 + .../bitwarden/entity/HibpBreachResponse.kt | 126 + .../bitwarden/entity/IdentityEntity.kt | 63 + .../bitwarden/entity/LinkedIdTypeEntity.kt | 111 + .../provider/bitwarden/entity/LoginEntity.kt | 28 + .../entity/LoginFido2CredentialsEntity.kt | 49 + .../bitwarden/entity/LoginUriEntity.kt | 15 + .../bitwarden/entity/OrganizationEntity.kt | 61 + .../OrganizationUserStatusTypeEntity.kt | 16 + .../entity/OrganizationUserTypeEntity.kt | 22 + .../bitwarden/entity/PasswordHistoryEntity.kt | 16 + .../provider/bitwarden/entity/PolicyEntity.kt | 9 + .../bitwarden/entity/PolicyTypeEntity.kt | 51 + .../bitwarden/entity/ProfileRequestEntity.kt | 10 + .../bitwarden/entity/ProviderEntity.kt | 11 + .../entity/ProviderUserStatusTypeEntity.kt | 16 + .../entity/ProviderUserTypeEntity.kt | 13 + .../bitwarden/entity/SecureNoteEntity.kt | 12 + .../bitwarden/entity/SecureNoteTypeEntity.kt | 29 + .../provider/bitwarden/entity/SendEntity.kt | 21 + .../bitwarden/entity/SendFileEntity.kt | 24 + .../bitwarden/entity/SendTextEntity.kt | 15 + .../bitwarden/entity/SendTypeEntity.kt | 34 + .../provider/bitwarden/entity/SyncResponse.kt | 147 + .../entity/TwoFactorEmailRequestEntity.kt | 10 + .../entity/TwoFactorProviderTypeEntity.kt | 63 + .../bitwarden/entity/UriMatchTypeEntity.kt | 44 + .../provider/bitwarden/entity/api/FieldApi.kt | 38 + .../bitwarden/entity/api/IdentityRequest.kt | 72 + .../api/LoginFido2CredentialsRequest.kt | 58 + .../bitwarden/entity/api/LoginRequest.kt | 43 + .../bitwarden/entity/api/LoginUriRequest.kt | 26 + .../bitwarden/entity/api/SecureNoteRequest.kt | 21 + .../bitwarden/entity/api/SendFileApi.kt | 18 + .../bitwarden/entity/api/SendTextApi.kt | 12 + .../entity/request/AttachmentRequest.kt | 25 + .../bitwarden/entity/request/CardRequest.kt | 36 + .../request/CipherCollectionsRequest.kt | 10 + .../entity/request/CipherCreateRequest.kt | 26 + .../bitwarden/entity/request/CipherRequest.kt | 117 + .../entity/request/CipherShareRequest.kt | 12 + .../bitwarden/entity/request/CipherUpdate.kt | 62 + .../entity/request/DeleteAccountRequest.kt | 12 + .../bitwarden/entity/request/FolderRequest.kt | 19 + .../bitwarden/entity/request/FolderUpdate.kt | 43 + .../entity/request/PasswordHistoryRequest.kt | 23 + .../bitwarden/entity/request/SendRequest.kt | 59 + .../serializer/CommonEnumIntSerializer.kt | 33 + .../bitwarden/mapper/CipherMapping.kt | 223 + .../bitwarden/mapper/CollectionMapping.kt | 16 + .../bitwarden/mapper/FolderMapping.kt | 17 + .../provider/bitwarden/mapper/MetaMapping.kt | 22 + .../bitwarden/mapper/OrganizationMapping.kt | 44 + .../bitwarden/mapper/ProfileMapping.kt | 55 + .../provider/bitwarden/mapper/SendMapping.kt | 48 + .../provider/bitwarden/mapper/TokenMapping.kt | 22 + .../bitwarden/model/LastSyncStatus.kt | 10 + .../provider/bitwarden/model/Login.kt | 11 + .../bitwarden/model/PasswordResult.kt | 30 + .../provider/bitwarden/model/PreLogin.kt | 26 + .../bitwarden/model/TwoFactorProvider.kt | 62 + .../model/TwoFactorProviderArgument.kt | 49 + .../bitwarden/model/TwoFactorProviderType.kt | 25 + .../bitwarden/repository/BaseRepository.kt | 17 + .../repository/BitwardenCipherRepository.kt | 8 + .../BitwardenCollectionRepository.kt | 5 + .../repository/BitwardenFolderRepository.kt | 5 + .../repository/BitwardenMetaRepository.kt | 5 + .../BitwardenOrganizationRepository.kt | 9 + .../repository/BitwardenProfileRepository.kt | 9 + .../repository/BitwardenSendRepository.kt | 6 + .../repository/BitwardenTokenRepository.kt | 9 + .../provider/bitwarden/sync/SyncManager.kt | 203 + .../provider/bitwarden/usecase/AddCipher.kt | 557 + .../usecase/AddCipherOpenedHistoryImpl.kt | 26 + .../bitwarden/usecase/AddCipherPasskey.kt | 76 + .../bitwarden/usecase/AddCipherUri.kt | 183 + .../AddCipherUsedAutofillHistoryImpl.kt | 26 + .../AddCipherUsedPasskeyHistoryImpl.kt | 26 + .../provider/bitwarden/usecase/AddFolder.kt | 76 + .../bitwarden/usecase/ChangeCipherNameById.kt | 39 + .../usecase/ChangeCipherPasswordById.kt | 94 + .../usecase/CheckPasswordLeakImpl.kt | 32 + .../usecase/CheckPasswordSetLeakImpl.kt | 28 + .../usecase/CheckUsernameLeakImpl.kt | 92 + .../bitwarden/usecase/CipherBreachCheck.kt | 89 + .../usecase/CipherDuplicatesCheck.kt | 546 + .../bitwarden/usecase/CipherExpiringCheck.kt | 55 + .../usecase/CipherFieldSwitchToggle.kt | 50 + .../usecase/CipherIncompleteCheck.kt | 118 + .../bitwarden/usecase/CipherMergee.kt | 241 + .../CipherRemovePasswordHistoryByIdImpl.kt | 43 + .../CipherRemovePasswordHistoryImpl.kt | 39 + .../usecase/CipherUnsecureUrlAutoFix.kt | 87 + .../usecase/CipherUnsecureUrlCheck.kt | 31 + .../usecase/CipherUnsecureUrlUtils.kt | 22 + .../bitwarden/usecase/CipherUrlCheck.kt | 121 + .../usecase/CipherUrlDuplicateCheck.kt | 54 + .../bitwarden/usecase/CopyCipherById.kt | 132 + .../bitwarden/usecase/FavouriteCipherById.kt | 38 + .../bitwarden/usecase/GetAccountHasError.kt | 36 + .../provider/bitwarden/usecase/GetAccounts.kt | 39 + .../bitwarden/usecase/GetAccountsHasError.kt | 32 + .../usecase/GetCipherOpenedCountImpl.kt | 18 + .../usecase/GetCipherOpenedHistoryImpl.kt | 24 + .../provider/bitwarden/usecase/GetCiphers.kt | 56 + .../bitwarden/usecase/GetCollections.kt | 52 + .../bitwarden/usecase/GetEmailRelays.kt | 36 + .../bitwarden/usecase/GetFingerprint.kt | 104 + .../bitwarden/usecase/GetFolderTree.kt | 106 + .../bitwarden/usecase/GetFolderTreeById.kt | 59 + .../provider/bitwarden/usecase/GetFolders.kt | 52 + .../provider/bitwarden/usecase/GetMetas.kt | 46 + .../bitwarden/usecase/GetOrganizations.kt | 52 + .../provider/bitwarden/usecase/GetProfiles.kt | 60 + .../provider/bitwarden/usecase/GetSends.kt | 52 + .../bitwarden/usecase/MergeFolderById.kt | 28 + .../usecase/MoveCipherToFolderById.kt | 70 + .../bitwarden/usecase/PutAccountColorById.kt | 117 + .../PutAccountMasterPasswordHintById.kt | 111 + .../bitwarden/usecase/PutAccountNameById.kt | 110 + .../bitwarden/usecase/QueueSyncAll.kt | 32 + .../bitwarden/usecase/QueueSyncById.kt | 33 + .../bitwarden/usecase/RePromptCipherById.kt | 44 + .../bitwarden/usecase/RemoveAccountById.kt | 53 + .../bitwarden/usecase/RemoveAccounts.kt | 28 + .../bitwarden/usecase/RemoveCipherById.kt | 45 + .../bitwarden/usecase/RemoveEmailRelayById.kt | 34 + .../bitwarden/usecase/RemoveFolderById.kt | 60 + .../bitwarden/usecase/RenameFolderById.kt | 45 + .../bitwarden/usecase/RestoreCipherById.kt | 44 + .../provider/bitwarden/usecase/RetryCipher.kt | 32 + .../provider/bitwarden/usecase/SyncAll.kt | 57 + .../provider/bitwarden/usecase/SyncById.kt | 50 + .../usecase/TrashCipherByFolderId.kt | 50 + .../bitwarden/usecase/TrashCipherById.kt | 51 + .../bitwarden/usecase/internal/AddAccount.kt | 15 + .../usecase/internal/AddAccountImpl.kt | 139 + .../usecase/internal/RequestEmailTfa.kt | 60 + .../bitwarden/usecase/internal/SyncByToken.kt | 6 + .../usecase/internal/SyncByTokenImpl.kt | 161 + .../bitwarden/usecase/util/CanModify.kt | 12 + .../usecase/util/ModifyCipherById.kt | 107 + .../bitwarden/usecase/util/ModifyDatabase.kt | 79 + .../usecase/util/ModifyFolderById.kt | 78 + .../usecase/util/ModifyProfileById.kt | 57 + .../bitwarden/usecase/util/RefreshToken.kt | 159 + .../bitwarden/usecase/util/publicKey.kt | 3 + .../keyguard/ui/AnimatedFabVisibility.kt | 15 + .../keyguard/ui/AnimatedNumberText.kt | 13 + .../artemchep/keyguard/ui/AutofillWindow.kt | 355 + .../com/artemchep/keyguard/ui/BadgeField.kt | 122 + .../artemchep/keyguard/ui/CollectedEffect.kt | 17 + .../com/artemchep/keyguard/ui/Composable.kt | 16 + .../com/artemchep/keyguard/ui/Dropdown.kt | 5 + .../keyguard/ui/ExpandedIfNotEmpty.kt | 69 + .../com/artemchep/keyguard/ui/GridLayout.kt | 77 + .../kotlin/com/artemchep/keyguard/ui/Html.kt | 10 + .../com/artemchep/keyguard/ui/KeepScreenOn.kt | 29 + .../artemchep/keyguard/ui/OptionsWindow.kt | 142 + .../artemchep/keyguard/ui/OtherScaffold.kt | 75 + .../com/artemchep/keyguard/ui/Padding.kt | 33 + .../com/artemchep/keyguard/ui/Password.kt | 136 + .../keyguard/ui/PasswordFilterItem.kt | 695 + .../keyguard/ui/PasswordPwnedBadge.kt | 129 + .../keyguard/ui/PasswordStrengthBadge.kt | 162 + .../com/artemchep/keyguard/ui/Placeholder.kt | 100 + .../com/artemchep/keyguard/ui/Scaffold.kt | 476 + .../com/artemchep/keyguard/ui/SimpleNote.kt | 121 + .../keyguard/ui/SliderInteraction.kt | 43 + .../artemchep/keyguard/ui/StringForEach.kt | 12 + .../keyguard/ui/SyncSupervisorImpl.kt | 39 + .../com/artemchep/keyguard/ui/TextItem.kt | 1235 + .../artemchep/keyguard/ui/ToastComposable.kt | 283 + .../ui/button/FavouriteToggleButton.kt | 79 + .../keyguard/ui/focus/BringIntoView.kt | 34 + .../keyguard/ui/focus/FocusRequester.kt | 64 + .../com/artemchep/keyguard/ui/getHttpCode.kt | 46 + .../keyguard/ui/grid/SimpleGridLayout.kt | 36 + .../keyguard/ui/icons/AttachmentIcon.kt | 159 + .../keyguard/ui/icons/ChevronIcon.kt | 25 + .../keyguard/ui/icons/DropdownIcon.kt | 32 + .../artemchep/keyguard/ui/icons/EmailIcon.kt | 11 + .../keyguard/ui/icons/ExpandableIcon.kt | 27 + .../artemchep/keyguard/ui/icons/IconBox.kt | 160 + .../com/artemchep/keyguard/ui/icons/Icons.kt | 69 + .../keyguard/ui/icons/OfflineIcon.kt | 20 + .../artemchep/keyguard/ui/icons/SyncIcon.kt | 70 + .../keyguard/ui/icons/VisibilityIcon.kt | 30 + .../keyguard/ui/items/ContextItem.kt | 3 + .../keyguard/ui/items/FlatItemShimmer.kt | 64 + .../keyguard/ui/markdown/Markdown.kt | 30 + .../kotlin/com/artemchep/keyguard/ui/popup.kt | 322 + .../keyguard/ui/poweredby/PoweredBy.kt | 119 + .../keyguard/ui/pulltosearch/PullToSearch.kt | 85 + .../keyguard/ui/rememberVectorPainter.kt | 30 + .../artemchep/keyguard/ui/rightClickable.kt | 7 + .../keyguard/ui/scrollbar/ColumnScrollbar.kt | 283 + .../ui/scrollbar/LazyColumnScrollbar.kt | 345 + .../ui/scrollbar/ScrollbarSelectionMode.kt | 35 + .../keyguard/ui/selection/SelectionBar.kt | 101 + .../keyguard/ui/selection/SelectionUtil.kt | 61 + .../keyguard/ui/shimmer/ShimmerArea.kt | 130 + .../keyguard/ui/shimmer/ShimmerBounds.kt | 28 + .../keyguard/ui/shimmer/ShimmerTheme.kt | 86 + .../keyguard/ui/shimmer/rememberShimmer.kt | 50 + .../ui/shimmer/rememberShimmerEffect.kt | 127 + .../artemchep/keyguard/ui/shimmer/shimmer.kt | 56 + .../ui/shimmer/unclippedBoundsInWindow.kt | 15 + .../keyguard/ui/skeleton/SkeletonButton.kt | 33 + .../keyguard/ui/skeleton/SkeletonCheckBox.kt | 47 + .../keyguard/ui/skeleton/SkeletonFilter.kt | 28 + .../keyguard/ui/skeleton/SkeletonItem.kt | 53 + .../ui/skeleton/SkeletonItemPilled.kt | 69 + .../keyguard/ui/skeleton/SkeletonSection.kt | 27 + .../keyguard/ui/skeleton/SkeletonSegmented.kt | 30 + .../keyguard/ui/skeleton/SkeletonSlider.kt | 35 + .../keyguard/ui/skeleton/SkeletonSwitch.kt | 33 + .../keyguard/ui/skeleton/SkeletonText.kt | 44 + .../keyguard/ui/skeleton/SkeletonTextField.kt | 29 + .../artemchep/keyguard/ui/tabs/CallsTabs.kt | 19 + .../keyguard/ui/tabs/SegmentedTabs.kt | 171 + .../com/artemchep/keyguard/ui/tabs/TabItem.kt | 7 + .../keyguard/ui/text/AnnotatedResource.kt | 72 + .../com/artemchep/keyguard/ui/theme/Color.kt | 5 + .../com/artemchep/keyguard/ui/theme/Dimen.kt | 41 + .../com/artemchep/keyguard/ui/theme/Theme.kt | 377 + .../artemchep/keyguard/ui/theme/m3/Palette.kt | 192 + .../artemchep/keyguard/ui/theme/m3/Theme.kt | 149 + .../ui/theme/monet/ColorSchemeFactory.kt | 67 + .../keyguard/ui/theme/monet/ColorSwatch.kt | 20 + .../ui/theme/monet/DynamicColorScheme.kt | 101 + .../ui/theme/monet/MaterialYouTargets.kt | 130 + .../ui/theme/monet/getMonetNeutralColor.kt | 144 + .../keyguard/ui/toolbar/CustomToolbar.kt | 168 + .../keyguard/ui/toolbar/LargeToolbar.kt | 38 + .../keyguard/ui/toolbar/SmallToolbar.kt | 26 + .../ui/toolbar/content/ContentToolbar.kt | 64 + .../artemchep/keyguard/ui/totp/formatTotp.kt | 50 + .../com/artemchep/keyguard/ui/util/Divider.kt | 69 + .../resources/MR/af-rZA/plurals.xml | 2 + .../resources/MR/af-rZA/strings.xml | 868 + .../resources/MR/ar-rSA/plurals.xml | 2 + .../resources/MR/ar-rSA/strings.xml | 868 + .../commonMain/resources/MR/base/plurals.xml | 55 + .../commonMain/resources/MR/base/strings.xml | 936 + .../resources/MR/ca-rES/plurals.xml | 2 + .../resources/MR/ca-rES/strings.xml | 868 + .../resources/MR/cs-rCZ/plurals.xml | 2 + .../resources/MR/cs-rCZ/strings.xml | 868 + .../resources/MR/da-rDK/plurals.xml | 2 + .../resources/MR/da-rDK/strings.xml | 868 + .../resources/MR/de-rDE/plurals.xml | 2 + .../resources/MR/de-rDE/strings.xml | 868 + .../resources/MR/el-rGR/plurals.xml | 2 + .../resources/MR/el-rGR/strings.xml | 868 + .../resources/MR/en-rGB/plurals.xml | 2 + .../resources/MR/en-rGB/strings.xml | 868 + .../resources/MR/en-rUS/plurals.xml | 2 + .../resources/MR/en-rUS/strings.xml | 868 + .../resources/MR/es-rES/plurals.xml | 2 + .../resources/MR/es-rES/strings.xml | 868 + .../resources/MR/fi-rFI/plurals.xml | 2 + .../resources/MR/fi-rFI/strings.xml | 868 + .../files/gpm_passkeys_privileged_apps.json | 480 + .../resources/MR/files/justdeleteme.json | 17845 +++++++ .../resources/MR/files/justgetmydata.json | 783 + .../resources/MR/files/licenses.json | 1 + .../resources/MR/files/passkeys.json | 906 + .../resources/MR/files/public_suffix_list.txt | 15427 ++++++ .../commonMain/resources/MR/files/tfa.json | 17057 ++++++ .../resources/MR/files/wordlist_en_eff.txt | 7776 +++ .../MR/fonts/AtkinsonHyperlegible-Bold.ttf | Bin 0 -> 54444 bytes .../fonts/AtkinsonHyperlegible-BoldItalic.ttf | Bin 0 -> 54608 bytes .../MR/fonts/AtkinsonHyperlegible-Italic.ttf | Bin 0 -> 54200 bytes .../MR/fonts/AtkinsonHyperlegible-Regular.ttf | Bin 0 -> 53504 bytes .../resources/MR/fonts/NotoSans-Black.ttf | Bin 0 -> 556500 bytes .../MR/fonts/NotoSans-BlackItalic.ttf | Bin 0 -> 402948 bytes .../resources/MR/fonts/NotoSans-Bold.ttf | Bin 0 -> 557380 bytes .../MR/fonts/NotoSans-BoldItalic.ttf | Bin 0 -> 401608 bytes .../resources/MR/fonts/NotoSans-ExtraBold.ttf | Bin 0 -> 557028 bytes .../MR/fonts/NotoSans-ExtraBoldItalic.ttf | Bin 0 -> 401612 bytes .../MR/fonts/NotoSans-ExtraLight.ttf | Bin 0 -> 559028 bytes .../MR/fonts/NotoSans-ExtraLightItalic.ttf | Bin 0 -> 407288 bytes .../resources/MR/fonts/NotoSans-Italic.ttf | Bin 0 -> 403724 bytes .../resources/MR/fonts/NotoSans-Light.ttf | Bin 0 -> 554712 bytes .../MR/fonts/NotoSans-LightItalic.ttf | Bin 0 -> 405132 bytes .../resources/MR/fonts/NotoSans-Medium.ttf | Bin 0 -> 555264 bytes .../MR/fonts/NotoSans-MediumItalic.ttf | Bin 0 -> 402632 bytes .../resources/MR/fonts/NotoSans-Regular.ttf | Bin 0 -> 556216 bytes .../resources/MR/fonts/NotoSans-SemiBold.ttf | Bin 0 -> 556932 bytes .../MR/fonts/NotoSans-SemiBoldItalic.ttf | Bin 0 -> 401372 bytes .../resources/MR/fonts/NotoSans-Thin.ttf | Bin 0 -> 561488 bytes .../MR/fonts/NotoSans-ThinItalic.ttf | Bin 0 -> 409140 bytes .../resources/MR/fonts/NotoSansMono.ttf | Bin 0 -> 1692444 bytes .../resources/MR/fonts/Roboto-Black.ttf | Bin 0 -> 168060 bytes .../resources/MR/fonts/Roboto-BlackItalic.ttf | Bin 0 -> 174108 bytes .../resources/MR/fonts/Roboto-Bold.ttf | Bin 0 -> 167336 bytes .../resources/MR/fonts/Roboto-BoldItalic.ttf | Bin 0 -> 171508 bytes .../resources/MR/fonts/Roboto-Italic.ttf | Bin 0 -> 170504 bytes .../resources/MR/fonts/Roboto-Light.ttf | Bin 0 -> 167000 bytes .../resources/MR/fonts/Roboto-LightItalic.ttf | Bin 0 -> 173172 bytes .../resources/MR/fonts/Roboto-Medium.ttf | Bin 0 -> 168644 bytes .../MR/fonts/Roboto-MediumItalic.ttf | Bin 0 -> 173416 bytes .../resources/MR/fonts/Roboto-Regular.ttf | Bin 0 -> 168260 bytes .../resources/MR/fonts/Roboto-Thin.ttf | Bin 0 -> 168488 bytes .../resources/MR/fonts/Roboto-ThinItalic.ttf | Bin 0 -> 172860 bytes .../resources/MR/fonts/RobotoMono.ttf | Bin 0 -> 182172 bytes .../resources/MR/fr-rFR/plurals.xml | 2 + .../resources/MR/fr-rFR/strings.xml | 868 + .../resources/MR/hu-rHU/plurals.xml | 2 + .../resources/MR/hu-rHU/strings.xml | 868 + .../resources/MR/images/ic_card_amex.svg | 24 + .../resources/MR/images/ic_card_diners.svg | 31 + .../resources/MR/images/ic_card_discover.svg | 27 + .../resources/MR/images/ic_card_elo.svg | 33 + .../resources/MR/images/ic_card_jcb.svg | 51 + .../resources/MR/images/ic_card_maestro.svg | 33 + .../MR/images/ic_card_mastercard.svg | 39 + .../resources/MR/images/ic_card_mir.svg | 51 + .../resources/MR/images/ic_card_unionpay.svg | 45 + .../resources/MR/images/ic_card_visa.svg | 27 + .../resources/MR/images/ic_mastodon.svg | 5 + .../resources/MR/it-rIT/plurals.xml | 2 + .../resources/MR/it-rIT/strings.xml | 868 + .../resources/MR/iw-rIL/plurals.xml | 2 + .../resources/MR/iw-rIL/strings.xml | 868 + .../resources/MR/ja-rJP/plurals.xml | 2 + .../resources/MR/ja-rJP/strings.xml | 868 + .../resources/MR/ko-rKR/plurals.xml | 2 + .../resources/MR/ko-rKR/strings.xml | 868 + .../resources/MR/nl-rNL/plurals.xml | 2 + .../resources/MR/nl-rNL/strings.xml | 868 + .../resources/MR/no-rNO/plurals.xml | 2 + .../resources/MR/no-rNO/strings.xml | 868 + .../resources/MR/pl-rPL/plurals.xml | 2 + .../resources/MR/pl-rPL/strings.xml | 868 + .../resources/MR/pt-rBR/plurals.xml | 2 + .../resources/MR/pt-rBR/strings.xml | 868 + .../resources/MR/pt-rPT/plurals.xml | 2 + .../resources/MR/pt-rPT/strings.xml | 868 + .../resources/MR/ro-rRO/plurals.xml | 2 + .../resources/MR/ro-rRO/strings.xml | 868 + .../resources/MR/ru-rRU/plurals.xml | 2 + .../resources/MR/ru-rRU/strings.xml | 868 + .../resources/MR/sr-rSP/plurals.xml | 2 + .../resources/MR/sr-rSP/strings.xml | 868 + .../resources/MR/sv-rSE/plurals.xml | 2 + .../resources/MR/sv-rSE/strings.xml | 868 + .../resources/MR/tr-rTR/plurals.xml | 2 + .../resources/MR/tr-rTR/strings.xml | 868 + .../resources/MR/uk-rUA/plurals.xml | 2 + .../resources/MR/uk-rUA/strings.xml | 868 + .../resources/MR/vi-rVN/plurals.xml | 2 + .../resources/MR/vi-rVN/strings.xml | 868 + .../resources/MR/zh-rCN/plurals.xml | 2 + .../resources/MR/zh-rCN/strings.xml | 868 + .../resources/MR/zh-rTW/plurals.xml | 2 + .../resources/MR/zh-rTW/strings.xml | 868 + .../keyguard/data/CipherUsageHistory.sq | 67 + .../keyguard/data/GeneratorEmailRelay.sq | 38 + .../keyguard/data/GeneratorHistory.sq | 28 + .../keyguard/data/bitwarden/Account.sq | 39 + .../keyguard/data/bitwarden/Cipher.sq | 61 + .../keyguard/data/bitwarden/Collection.sq | 53 + .../keyguard/data/bitwarden/Folder.sq | 53 + .../artemchep/keyguard/data/bitwarden/Meta.sq | 40 + .../keyguard/data/bitwarden/Organization.sq | 53 + .../keyguard/data/bitwarden/Profile.sq | 53 + .../artemchep/keyguard/data/bitwarden/Send.sq | 53 + .../keyguard/data/pwnage/AccountBreach.sq | 42 + .../keyguard/data/pwnage/PasswordBreach.sq | 39 + .../commonMain/sqldelight/migrations/1.sqm | 5 + .../commonMain/sqldelight/migrations/2.sqm | 6 + .../commonMain/sqldelight/migrations/3.sqm | 7 + .../commonMain/sqldelight/migrations/4.sqm | 1 + .../commonMain/sqldelight/migrations/5.sqm | 1 + .../com/artemchep/keyguard/AutofillActArgs.kt | 25 + .../common/service/permission/Permission.kt | 5 + .../keyguard/copy/ClipboardServiceJvm.kt | 27 + .../keyguard/copy/ConnectivityServiceJvm.kt | 18 + .../artemchep/keyguard/copy/DataDirectory.kt | 37 + .../keyguard/copy/DownloadClientDesktop.kt | 35 + .../keyguard/copy/DownloadManagerDesktop.kt | 398 + .../copy/DownloadRepositoryDesktop.kt | 93 + .../keyguard/copy/GetBarcodeImageJvm.kt | 52 + .../keyguard/copy/LinkInfoExtractorExecute.kt | 34 + .../keyguard/copy/LinkInfoExtractorLaunch.kt | 26 + .../keyguard/copy/PermissionServiceJvm.kt | 23 + .../keyguard/copy/PowerServiceJvm.kt | 17 + .../keyguard/copy/ReviewServiceJvm.kt | 17 + .../artemchep/keyguard/copy/TextServiceJvm.kt | 19 + .../session/FingerprintRepositoryModule.kt | 316 + .../core/session/usecase/createSubDi.kt | 54 + .../keyguard/core/store/SqlManagerFile.kt | 107 + .../feature/apppicker/AppPickerRoute.kt | 11 + .../feature/auth/common/Autofill.desktop.kt | 14 + .../auth/login/otp/LoginOtpScreen.desktop.kt | 20 + .../login/otp/LoginTwofaScreen.desktop.kt | 12 + .../biometric/BiometricPromptEffect.kt | 9 + .../keyguard/feature/favicon/FaviconImage.kt | 67 + .../feature/feedback/FeedbackUtils.kt | 8 + .../feature/filepicker/FilePickerEffect.kt | 10 + .../settings/component/SettingAutofill.kt | 8 + .../component/SettingCredentialProvider.kt | 8 + .../settings/component/SettingPermission.kt | 8 + .../component/SettingPermissionCamera.kt | 8 + .../component/SettingPermissionOther.kt | 8 + .../SettingPermissionPostNotifications.kt | 8 + .../SettingSubscriptionsPlayStore.kt | 8 + .../feature/home/vault/add/LeAddRoute.kt | 2 + .../feature/localization/textResource.kt | 16 + .../keyguard/feature/qr/ScanQrRoute.kt | 11 + .../keyguard/feature/yubikey/Yubi.kt | 31 + .../feature/yubikey/rememberYubiKey.kt | 1 + .../artemchep/keyguard/platform/LeActivity.kt | 3 + .../keyguard/platform/LeAnimation.kt | 7 + .../artemchep/keyguard/platform/LeBundle.kt | 11 + .../artemchep/keyguard/platform/LeContext.kt | 11 + .../artemchep/keyguard/platform/LeDebug.kt | 3 + .../artemchep/keyguard/platform/LePlatform.kt | 17 + .../com/artemchep/keyguard/platform/LeUri.kt | 11 + .../artemchep/keyguard/platform/LeUsbPid.kt | 3 + .../keyguard/platform/leWindowInsets.kt | 33 + .../lifecycle/LocalLifecycleStateFlow.kt | 15 + .../platform/parcelize/LeIgnoredOnParcel.kt | 5 + .../platform/parcelize/LeParcelable.kt | 3 + .../platform/parcelize/LeParcelize.kt | 5 + .../keyguard/platform/recordException.kt | 23 + .../artemchep/keyguard/ui/ComposeWindow.kt | 8 + .../kotlin/com/artemchep/keyguard/ui/Html.kt | 18 + .../keyguard/ui/KeepScreenOnEffect.kt | 8 + .../keyguard/ui/LeMOdelBottomSheet.kt | 22 + .../keyguard/ui/icons/AttachmentIconImpl.kt | 15 + .../artemchep/keyguard/ui/icons/EmailIcon.kt | 63 + .../artemchep/keyguard/ui/rightClickable.kt | 45 + .../ui/shimmer/rememberShimmerBoundsWindow.kt | 19 + .../com/artemchep/keyguard/ui/theme/Theme.kt | 22 + .../keyguard/copy/Base32ServiceJvm.kt | 16 + .../keyguard/copy/Base64ServiceJvm.kt | 16 + .../keyguard/copy/DateFormatterAndroid.kt | 36 + .../keyguard/copy/GetAppBuildDateImpl.kt | 31 + .../keyguard/copy/GetPasswordStrengthJvm.kt | 101 + .../keyguard/copy/NumberFormatterJvm.kt | 15 + .../copy/PasswordGeneratorDiceware.kt | 88 + .../keyguard/copy/SimilarityServiceJvm.kt | 25 + .../copy/download/DownloadClientJvm.kt | 410 + .../core/session/util/EncodeByCipher.kt | 19 + .../keyguard/crypto/CipherEncryptorImpl.kt | 545 + .../keyguard/crypto/CipherInputStream2.kt | 268 + .../crypto/CipherInputStreamDecoder.kt | 151 + .../keyguard/crypto/CryptoGeneratorImpl.kt | 103 + .../keyguard/crypto/FileEncryptorImpl.kt | 163 + .../artemchep/keyguard/crypto/util/hkdf.kt | 47 + .../artemchep/keyguard/crypto/util/pbkdf2.kt | 38 + .../artemchep/keyguard/crypto/util/sha1.kt | 17 + .../artemchep/keyguard/crypto/util/sha256.kt | 17 + .../artemchep/keyguard/di/GlobalModuleJvm.kt | 1221 + .../messagepack/MessagePackHubProtocol.kt | 670 + .../artemchep/keyguard/messagepack/Utils.kt | 115 + .../artemchep/keyguard/platform/LeCipher.kt | 7 + .../provider/bitwarden/api/notification.kt | 73 + .../bitwarden/usecase/Notifications.kt | 157 + .../provider/bitwarden/usecase/util/pbk.kt | 47 + .../artemchep/keyguard/util/FileTraverse.kt | 18 + .../com/artemchep/keyguard/util/Zxing.kt | 39 + crowdin.yml | 133 + desktopApp/build.gradle.kts | 250 + desktopApp/default.entitlements | 14 + desktopApp/icon.icns | Bin 0 -> 161808 bytes desktopApp/icon.ico | Bin 0 -> 110895 bytes desktopApp/icon.png | Bin 0 -> 27156 bytes desktopApp/icon.sketch | Bin 0 -> 8531760 bytes .../kotlin/com/artemchep/keyguard/Main.kt | 423 + .../desktop/util/NavigateToBrowser.kt | 48 + .../keyguard/desktop/util/NavigateToEmail.kt | 37 + .../keyguard/desktop/util/NavigateToFile.kt | 14 + .../util/NavigateToFileInFileManager.kt | 75 + .../jvmMain/resources/flatpak/icon.desktop | 8 + .../jvmMain/resources/flatpak/manifest.yml | 34 + desktopApp/src/jvmMain/resources/icon.png | Bin 0 -> 27156 bytes gradle.properties | 27 + gradle/libs.versions.toml | 269 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59203 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 185 + gradlew.bat | 89 + listing/google/af-rZA/store_description.html | 19 + listing/google/af-rZA/store_text.xml | 11 + listing/google/ar-rSA/store_description.html | 19 + listing/google/ar-rSA/store_text.xml | 11 + listing/google/base/store_description.html | 19 + listing/google/base/store_text.xml | 11 + listing/google/ca-rES/store_description.html | 18 + listing/google/ca-rES/store_text.xml | 11 + listing/google/cs-rCZ/store_description.html | 19 + listing/google/cs-rCZ/store_text.xml | 11 + listing/google/da-rDK/store_description.html | 19 + listing/google/da-rDK/store_text.xml | 11 + listing/google/de-rDE/store_description.html | 18 + listing/google/de-rDE/store_text.xml | 11 + listing/google/el-rGR/store_description.html | 19 + listing/google/el-rGR/store_text.xml | 11 + listing/google/en-rGB/store_description.html | 19 + listing/google/en-rGB/store_text.xml | 11 + listing/google/en-rUS/store_description.html | 19 + listing/google/en-rUS/store_text.xml | 11 + listing/google/es-rES/store_description.html | 17 + listing/google/es-rES/store_text.xml | 11 + listing/google/fi-rFI/store_description.html | 19 + listing/google/fi-rFI/store_text.xml | 11 + listing/google/fr-rFR/store_description.html | 19 + listing/google/fr-rFR/store_text.xml | 11 + listing/google/hu-rHU/store_description.html | 19 + listing/google/hu-rHU/store_text.xml | 11 + listing/google/it-rIT/store_description.html | 19 + listing/google/it-rIT/store_text.xml | 11 + listing/google/iw-rIL/store_description.html | 19 + listing/google/iw-rIL/store_text.xml | 11 + listing/google/ja-rJP/store_description.html | 18 + listing/google/ja-rJP/store_text.xml | 11 + listing/google/ko-rKR/store_description.html | 18 + listing/google/ko-rKR/store_text.xml | 11 + listing/google/nl-rNL/store_description.html | 18 + listing/google/nl-rNL/store_text.xml | 11 + listing/google/no-rNO/store_description.html | 19 + listing/google/no-rNO/store_text.xml | 11 + listing/google/pl-rPL/store_description.html | 19 + listing/google/pl-rPL/store_text.xml | 11 + listing/google/pt-rBR/store_description.html | 19 + listing/google/pt-rBR/store_text.xml | 11 + listing/google/pt-rPT/store_description.html | 18 + listing/google/pt-rPT/store_text.xml | 11 + listing/google/ro-rRO/store_description.html | 19 + listing/google/ro-rRO/store_text.xml | 11 + listing/google/ru-rRU/store_description.html | 17 + listing/google/ru-rRU/store_text.xml | 11 + listing/google/sr-rSP/store_description.html | 19 + listing/google/sr-rSP/store_text.xml | 11 + listing/google/sv-rSE/store_description.html | 19 + listing/google/sv-rSE/store_text.xml | 11 + listing/google/tr-rTR/store_description.html | 19 + listing/google/tr-rTR/store_text.xml | 11 + listing/google/uk-rUA/store_description.html | 18 + listing/google/uk-rUA/store_text.xml | 11 + listing/google/vi-rVN/store_description.html | 18 + listing/google/vi-rVN/store_text.xml | 11 + listing/google/zh-rCN/store_description.html | 18 + listing/google/zh-rCN/store_text.xml | 11 + listing/google/zh-rTW/store_description.html | 19 + listing/google/zh-rTW/store_text.xml | 11 + screenshots/AppMockUp Screenshots.zip | Bin 0 -> 2853774 bytes screenshots/Keyguard.mockup | Bin 0 -> 3716578 bytes .../phone/Screenshot_20230928_233006.png | Bin 0 -> 202767 bytes .../phone/Screenshot_20230928_233040.png | Bin 0 -> 193811 bytes .../phone/Screenshot_20230928_233118.png | Bin 0 -> 127950 bytes .../phone/Screenshot_20230928_233159.png | Bin 0 -> 120464 bytes .../phone/Screenshot_20230928_233236.png | Bin 0 -> 115648 bytes .../phone/Screenshot_20230928_233342.png | Bin 0 -> 135379 bytes .../tablet10/Screenshot_20230103_121543.png | Bin 0 -> 314829 bytes .../tablet10/Screenshot_20230103_121606.png | Bin 0 -> 310618 bytes .../tablet10/Screenshot_20230103_121637.png | Bin 0 -> 209313 bytes .../tablet10/Screenshot_20230103_121846.png | Bin 0 -> 287832 bytes .../tablet7/Screenshot_20230103_122258.png | Bin 0 -> 172734 bytes .../tablet7/Screenshot_20230103_122315.png | Bin 0 -> 170615 bytes .../tablet7/Screenshot_20230103_122337.png | Bin 0 -> 212364 bytes .../tablet7/Screenshot_20230103_122421.png | Bin 0 -> 154817 bytes settings.gradle | 31 + 2088 files changed, 316398 insertions(+), 1 deletion(-) create mode 100644 .editorconfig create mode 100644 .github/dependabot.yml create mode 100644 .github/update_google_play_listing.py create mode 100644 .github/update_google_play_listing.requirements.txt create mode 100644 .github/update_gpm_passkeys_priv_apps.py create mode 100644 .github/update_gpm_passkeys_priv_apps.requirements.txt create mode 100644 .github/update_justdeleteme.py create mode 100644 .github/update_justdeleteme.requirements.txt create mode 100644 .github/update_justgetmydata.py create mode 100644 .github/update_justgetmydata.requirements.txt create mode 100644 .github/update_passkeys.py create mode 100644 .github/update_passkeys.requirements.txt create mode 100644 .github/update_twofactorauth.py create mode 100644 .github/workflows/check_gradle_wrapper.yml create mode 100644 .github/workflows/check_licenses.yml create mode 100644 .github/workflows/new_daily_tag.yaml create mode 100644 .github/workflows/new_daily_tag_play_store_internal_track.yaml create mode 100644 .github/workflows/new_tag_release.yaml create mode 100644 .github/workflows/update_gpm_passkeys_priv_apps.yml create mode 100644 .github/workflows/update_justdeleteme.yml create mode 100644 .github/workflows/update_justgetmydata.yml create mode 100644 .github/workflows/update_listing_google.yml create mode 100644 .github/workflows/update_localization.yml create mode 100644 .github/workflows/update_passkeys.yml create mode 100644 .github/workflows/update_tld.yml create mode 100644 .github/workflows/update_twofactorauth.yml create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 androidApp/.gitignore create mode 100644 androidApp/benchmark-rules.pro create mode 100644 androidApp/build.gradle.kts create mode 100644 androidApp/keyguard-qa.keystore create mode 100644 androidApp/keyguard-qa.properties create mode 100644 androidApp/proguard-rules.pro create mode 100644 androidApp/src/debug/res/values/strings.xml create mode 100644 androidApp/src/main/AndroidManifest.xml create mode 100644 androidApp/src/main/assets/logback.xml create mode 100644 androidApp/src/main/java/com/artemchep/keyguard/Main.kt create mode 100644 androidApp/src/main/res/drawable/ic_apps.xml create mode 100644 androidApp/src/main/res/drawable/ic_cancel.xml create mode 100644 androidApp/src/main/res/drawable/ic_copy.xml create mode 100644 androidApp/src/main/res/drawable/ic_download.xml create mode 100644 androidApp/src/main/res/drawable/ic_launcher_background.xml create mode 100644 androidApp/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 androidApp/src/main/res/drawable/ic_launcher_monochrome.xml create mode 100644 androidApp/src/main/res/drawable/ic_lock_open_outline.xml create mode 100644 androidApp/src/main/res/drawable/ic_lock_outline.xml create mode 100644 androidApp/src/main/res/drawable/ic_login.xml create mode 100644 androidApp/src/main/res/drawable/ic_logo_bitwarden.png create mode 100644 androidApp/src/main/res/drawable/ic_number_0.xml create mode 100644 androidApp/src/main/res/drawable/ic_number_1.xml create mode 100644 androidApp/src/main/res/drawable/ic_number_2.xml create mode 100644 androidApp/src/main/res/drawable/ic_number_3.xml create mode 100644 androidApp/src/main/res/drawable/ic_number_4.xml create mode 100644 androidApp/src/main/res/drawable/ic_number_5.xml create mode 100644 androidApp/src/main/res/drawable/ic_number_6.xml create mode 100644 androidApp/src/main/res/drawable/ic_number_7.xml create mode 100644 androidApp/src/main/res/drawable/ic_number_8.xml create mode 100644 androidApp/src/main/res/drawable/ic_number_9.xml create mode 100644 androidApp/src/main/res/drawable/ic_number_9_plus.xml create mode 100644 androidApp/src/main/res/drawable/ic_splash.xml create mode 100644 androidApp/src/main/res/drawable/ic_tfa.xml create mode 100644 androidApp/src/main/res/drawable/ic_upload.xml create mode 100644 androidApp/src/main/res/drawable/ic_web.xml create mode 100644 androidApp/src/main/res/layout/activity_webview.xml create mode 100644 androidApp/src/main/res/layout/item_autofill.xml create mode 100644 androidApp/src/main/res/layout/item_autofill_app_id.xml create mode 100644 androidApp/src/main/res/layout/item_autofill_entry.xml create mode 100644 androidApp/src/main/res/layout/item_autofill_select_entry.xml create mode 100644 androidApp/src/main/res/layout/item_autofill_select_entry_app_id.xml create mode 100644 androidApp/src/main/res/layout/item_autofill_select_entry_web_domain.xml create mode 100644 androidApp/src/main/res/layout/item_autofill_unlock.xml create mode 100644 androidApp/src/main/res/layout/item_autofill_unlock_app_id.xml create mode 100644 androidApp/src/main/res/layout/item_autofill_unlock_web_domain.xml create mode 100644 androidApp/src/main/res/layout/item_autofill_web_domain.xml create mode 100644 androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 androidApp/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 androidApp/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 androidApp/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 androidApp/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 androidApp/src/main/res/raw/silence create mode 100644 androidApp/src/main/res/resources.properties create mode 100644 androidApp/src/main/res/values-v31/colors.xml create mode 100644 androidApp/src/main/res/values/colors.xml create mode 100644 androidApp/src/main/res/values/ids.xml create mode 100644 androidApp/src/main/res/values/strings.xml create mode 100644 androidApp/src/main/res/values/themes.xml create mode 100644 androidApp/src/noneRelease/generated/baselineProfiles/baseline-prof.txt create mode 100644 androidApp/src/playStoreRelease/generated/baselineProfiles/baseline-prof.txt create mode 100644 androidApp/src/test/java/com/artemchep/keyguard/ExampleUnitTest.kt create mode 100644 androidBenchmark/build.gradle.kts create mode 100644 androidBenchmark/src/main/AndroidManifest.xml create mode 100644 androidBenchmark/src/main/java/com/artemchep/macrobenchmark/Utils.kt create mode 100644 androidBenchmark/src/main/java/com/artemchep/macrobenchmark/baselineprofile/BaselineProfileGenerator.kt create mode 100644 androidBenchmark/src/main/java/com/artemchep/macrobenchmark/ui/keyguard/interestsWaitForTopics.kt create mode 100644 artwork/android-adaptive-icon.sketch create mode 100644 artwork/ic_launcher_web.png create mode 100644 artwork/promote.kra create mode 100644 artwork/promote.png create mode 100644 artwork/thumbnail.png create mode 100644 artwork/vector.svg create mode 100644 build.gradle.kts create mode 100644 buildSrc/build.gradle.kts create mode 100644 buildSrc/settings.gradle.kts create mode 100644 buildSrc/src/main/kotlin/VersionCode.kt create mode 100644 common/build.gradle.kts create mode 100644 common/schemas/com.artemchep.keyguard.android.downloader.journal.room.DownloadDatabase/1.json create mode 100644 common/schemas/com.artemchep.keyguard.android.downloader.journal.room.DownloadDatabase/2.json create mode 100644 common/schemas/com.artemchep.keyguard.room.AppDatabase/1.json create mode 100644 common/schemas/com.artemchep.keyguard.room.AppDatabase/2.json create mode 100644 common/schemas/com.artemchep.keyguard.room.AppDatabase/3.json create mode 100644 common/schemas/com.artemchep.keyguard.room.AppDatabase/4.json create mode 100644 common/schemas/com.artemchep.keyguard.room.AppDatabase/5.json create mode 100644 common/schemas/com.artemchep.keyguard.room.AppDatabase/6.json create mode 100644 common/schemas/com.artemchep.keyguard.room.AppDatabase/7.json create mode 100644 common/src/androidMain/AndroidManifest.xml create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/AutofillActArgs.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/AutofillActivity.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/AutofillCompose.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/AutofillFakeAuthActivity.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/AutofillSaveActivity.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/BaseActivity.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/BaseApp.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/LargeTypeActivity.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/MainActivity.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/Notifications.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyBase64.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyBeginGetRequest.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyCompose.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyCreateActivity.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyCreateRequest.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyCredentialId.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyGenerator.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyGetActivity.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyGetUnlockActivity.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyModule.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyProviderGetRequest.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyUtils.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/PendingIntents.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/autofill/AutofillStructure.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/autofill/AutofillStructureParser.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/autofill/AutofillViews.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/autofill/KeyguardAutofillService.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/autofill/KeyguardCredentialService.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/clipboard/KeyguardClipboardService.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/closestActivityOrNull.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/AttachmentDownloadTag.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/DownloadClientAndroid.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/DownloadManagerImpl.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/NotificationIdPool.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/journal/DownloadRepositoryImpl.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseTypeConverter.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/journal/room/DownloadInfoDao.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/journal/room/DownloadInfoEntity.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/journal/room/GeneratorDao.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/journal/room/GeneratorEntity.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/receiver/AttachmentDownloadActionReceiver.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/receiver/CopyActionReceiver.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/worker/AttachmentDownloadAllWorker.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/worker/AttachmentDownloadWorker.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/glide/KeyguardGlideModule.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/glide/app/AppIconLoader.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/glide/gravatar/GravatarLoader.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/glide/qr/QrLoader.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/glide/util/Util.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/glide/website/FaviconLoader.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/shortcut/ShortcutTileService.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/util/broadcastFlow.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/util/screenFlow.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/worker/AttachmentUploadWorker.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/worker/SyncWorker.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/android/worker/util/SessionWorker.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/billing/BillingClientApiException.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/billing/BillingClientDisconnectedException.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/billing/BillingConnection.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/billing/BillingConnectionImpl.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/billing/BillingManager.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/billing/BillingManagerImpl.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/billing/BillingResponseException.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/common/service/permission/Permission.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/common/usecase/impl/DisableBiometricImpl.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/common/usecase/impl/EnableBiometricImpl.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetBiometricRemainingDurationImpl.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetSuggestionsImpl.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/copy/AutofillServiceAndroid.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/copy/ClearDataAndroid.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/copy/ClipboardServiceAndroid.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/copy/ConnectivityServiceAndroid.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/copy/GetBarcodeImageJvm.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/copy/LinkInfoExtractorAndroid.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/copy/LinkInfoExtractorExecute.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/copy/LinkInfoExtractorLaunch.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/copy/LogRepositoryAndroid.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/copy/PermissionServiceAndroid.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/copy/PowerServiceAndroid.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/copy/QueueSyncAll.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/copy/QueueSyncById.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/copy/ReviewServiceAndroid.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/copy/SharedPreferencesStoreFactory.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/copy/SharedPreferencesStoreFactoryDefault.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/copy/SubscriptionServiceAndroid.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/copy/TextServiceAndroid.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/core/session/FingerprintRepositoryModule.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/core/session/usecase/GetLocaleImpl.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/core/session/usecase/GetLocaleVariantsImpl.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/core/session/usecase/KEY_ALIAS.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/core/session/usecase/PutLocaleImpl.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/core/session/usecase/createSubDi.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/core/store/DatabaseManager.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/feature/apppicker/AppPickerRoute.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/feature/apppicker/AppPickerScreen.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/feature/apppicker/AppPickerState.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/feature/apppicker/AppPickerStateProducer.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/feature/auth/common/Autofill.android.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/feature/auth/login/otp/LoginOtpScreen.android.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/feature/biometric/BiometricPromptEffect.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/feature/crashlytics/IsEnabled.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/feature/favicon/FaviconImage.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/feature/feedback/FeedbackUtils.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/feature/filepicker/FilePickerEffect.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofill.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingCredentialProvider.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermission.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermissionCamera.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermissionOther.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermissionPostNotifications.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingSubscriptionsPlayStore.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/feature/home/vault/add/LeAddRoute.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/feature/localization/TextResource.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/feature/qr/ScanQrRoute.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/feature/qr/ScanQrScreen.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/feature/qr/ScanQrState.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/feature/qr/ScanQrStateProducer.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/feature/yubikey/Yubi.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/platform/LeActivity.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/platform/LeAnimation.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/platform/LeBundle.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/platform/LeContext.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/platform/LeDebug.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/platform/LePlatform.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/platform/LeUri.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/platform/LeUsbPid.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/platform/leIme.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlow.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/platform/parcelize/LeIgnoredOnParcel.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/platform/parcelize/LeParcelable.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/platform/parcelize/LeParcelize.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/platform/recordException.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/room/AppDatabase.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomBitwardenCipher.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomBitwardenCollection.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomBitwardenFolder.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomBitwardenMeta.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomBitwardenOrganization.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomBitwardenProfile.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomBitwardenToken.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomFillCipherHistory.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomMigrationException.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomOpenCipherHistory.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomSecret.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/AccountDao.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/CipherDao.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/CollectionDao.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/FillCipherHistoryDao.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/FolderDao.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/MetaDao.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/OpenCipherHistoryDao.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/OrganizationDao.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/ProfileDao.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/ui/Html.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/ui/KeepScreenOnEffect.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/ui/LeMOdelBottomSheet.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/ui/icons/AttachmentIconImpl.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/ui/icons/EmailIcon.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/ui/rightClickable.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/ui/shimmer/rememberShimmerBoundsWindow.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/ui/theme/Theme.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/uploader/UploadAttachmentManager.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/uploader/UploadAttachmentRepository.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/uploader/UploadAttachmentRepositoryInMemory.kt create mode 100644 common/src/androidMain/kotlin/com/artemchep/keyguard/uploader/UploadAttachmentRequest.kt create mode 100644 common/src/androidMain/kotlin/db_key_value/crypto_prefs/SecurePrefKeyValueStore.kt create mode 100644 common/src/androidMain/kotlin/db_key_value/shared_prefs/SharedPrefsKeyValuePreference.kt create mode 100644 common/src/androidMain/kotlin/db_key_value/shared_prefs/SharedPrefsKeyValueStore.kt create mode 100644 common/src/androidMain/res/drawable/ic_apps.xml create mode 100644 common/src/androidMain/res/drawable/ic_cancel.xml create mode 100644 common/src/androidMain/res/drawable/ic_copy.xml create mode 100644 common/src/androidMain/res/drawable/ic_download.xml create mode 100644 common/src/androidMain/res/drawable/ic_launcher_background.xml create mode 100644 common/src/androidMain/res/drawable/ic_launcher_foreground.xml create mode 100644 common/src/androidMain/res/drawable/ic_launcher_monochrome.xml create mode 100644 common/src/androidMain/res/drawable/ic_lock_open_outline.xml create mode 100644 common/src/androidMain/res/drawable/ic_lock_outline.xml create mode 100644 common/src/androidMain/res/drawable/ic_login.xml create mode 100644 common/src/androidMain/res/drawable/ic_logo_bitwarden.png create mode 100644 common/src/androidMain/res/drawable/ic_number_0.xml create mode 100644 common/src/androidMain/res/drawable/ic_number_1.xml create mode 100644 common/src/androidMain/res/drawable/ic_number_2.xml create mode 100644 common/src/androidMain/res/drawable/ic_number_3.xml create mode 100644 common/src/androidMain/res/drawable/ic_number_4.xml create mode 100644 common/src/androidMain/res/drawable/ic_number_5.xml create mode 100644 common/src/androidMain/res/drawable/ic_number_6.xml create mode 100644 common/src/androidMain/res/drawable/ic_number_7.xml create mode 100644 common/src/androidMain/res/drawable/ic_number_8.xml create mode 100644 common/src/androidMain/res/drawable/ic_number_9.xml create mode 100644 common/src/androidMain/res/drawable/ic_number_9_plus.xml create mode 100644 common/src/androidMain/res/drawable/ic_shortcut_2fa.xml create mode 100644 common/src/androidMain/res/drawable/ic_splash.xml create mode 100644 common/src/androidMain/res/drawable/ic_sync.xml create mode 100644 common/src/androidMain/res/drawable/ic_tag.xml create mode 100644 common/src/androidMain/res/drawable/ic_tfa.xml create mode 100644 common/src/androidMain/res/drawable/ic_upload.xml create mode 100644 common/src/androidMain/res/drawable/ic_web.xml create mode 100644 common/src/androidMain/res/layout/activity_webview.xml create mode 100644 common/src/androidMain/res/layout/item_autofill.xml create mode 100644 common/src/androidMain/res/layout/item_autofill_app_id.xml create mode 100644 common/src/androidMain/res/layout/item_autofill_entry.xml create mode 100644 common/src/androidMain/res/layout/item_autofill_select_entry.xml create mode 100644 common/src/androidMain/res/layout/item_autofill_select_entry_app_id.xml create mode 100644 common/src/androidMain/res/layout/item_autofill_select_entry_web_domain.xml create mode 100644 common/src/androidMain/res/layout/item_autofill_unlock.xml create mode 100644 common/src/androidMain/res/layout/item_autofill_unlock_app_id.xml create mode 100644 common/src/androidMain/res/layout/item_autofill_unlock_web_domain.xml create mode 100644 common/src/androidMain/res/layout/item_autofill_web_domain.xml create mode 100644 common/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 common/src/androidMain/res/mipmap-hdpi/ic_launcher.png create mode 100644 common/src/androidMain/res/mipmap-mdpi/ic_launcher.png create mode 100644 common/src/androidMain/res/mipmap-xhdpi/ic_launcher.png create mode 100644 common/src/androidMain/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 common/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 common/src/androidMain/res/raw/silence create mode 100644 common/src/androidMain/res/values-v31/colors.xml create mode 100644 common/src/androidMain/res/values/colors.xml create mode 100644 common/src/androidMain/res/values/ids.xml create mode 100644 common/src/androidMain/res/values/integers.xml create mode 100644 common/src/androidMain/res/values/strings.xml create mode 100644 common/src/androidMain/res/values/themes.xml create mode 100644 common/src/androidMain/res/xml/backup_data_extraction_rules.xml create mode 100644 common/src/androidMain/res/xml/backup_full_backup_content.xml create mode 100644 common/src/androidMain/res/xml/config_autofill_service.xml create mode 100644 common/src/androidMain/res/xml/config_credential_service.xml create mode 100644 common/src/androidMain/res/xml/network_configuration.xml create mode 100644 common/src/androidMain/res/xml/provider_paths.xml create mode 100644 common/src/androidMain/res/xml/shortcuts.xml create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/AppMode.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/LocalAppMode.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/android/downloader/journal/CipherHistoryOpenedRepository.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/android/downloader/journal/CipherHistoryOpenedRepositoryImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/android/downloader/journal/DownloadRepository.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/android/downloader/journal/GeneratorHistoryRepository.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/android/downloader/journal/GeneratorHistoryRepositoryImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/android/downloader/journal/room/DownloadInfoEntity2.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/AppWorker.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/NotificationsWorker.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/exception/ApiException.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/exception/DecodeException.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/exception/HttpException.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/exception/PasswordMismatchException.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/exception/PremiumException.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/exception/Readable.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/exception/SyncException.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IO.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOApplicative.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOBind.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOCombine.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOException.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOFactory.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOFlatten.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOFlow.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOFold.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOFork.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOLaunchIn.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOMeasure.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOMonad.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOShared.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOTimeout.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOWiden.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/search.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/throttle.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AccountId.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AccountLastSyncStatus.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AccountSyncError.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AccountTask.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AddCipherOpenedHistoryRequest.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AddCipherUsedPasskeyHistoryRequest.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AddPasskeyCipherRequest.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AddUriCipherRequest.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AnyMap.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AppColors.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AppFont.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AppTheme.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/Argon2Mode.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AttachmentId.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AuthResult.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AutofillHint.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AutofillTarget.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/BarcodeImageFormat.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/BarcodeImageRequest.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/BiometricAuthException.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/BiometricAuthPrompt.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/BiometricPurpose.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/BiometricStatus.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CheckPasswordLeakRequest.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CheckPasswordSetLeakRequest.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CheckUsernameLeakRequest.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CipherFieldSwitchToggleRequest.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CipherHistoryType.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CipherId.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CipherOpenedHistoryMode.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CreditCardType.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CryptoHashAlgorithm.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DAccount.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DAccountStatus.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DCipherOpenedHistory.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DCollection.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DFilter.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DFolder.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DFolderTree.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DGeneratorEmailRelay.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DGeneratorHistory.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DHibp.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DKey.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DMeta.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DOrganization.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DProfile.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DSecret.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DSecretDuplicateGroup.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DSend.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DSendFilter.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DownloadAttachmentRequest.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DownloadAttachmentRequestData.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/Fingerprint.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/FingerprintBiometric.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/FingerprintPassword.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/FolderOwnership2.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/HasAccountId.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/LinkInfo.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/LinkInfoAndroid.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/LinkInfoExecute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/LinkInfoLaunch.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/LinkInfoPlatform.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/Loadable.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/MasterKey.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/MasterPassword.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/MasterPasswordHash.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/MasterPasswordSalt.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/MasterSession.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/NavAnimation.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/NoAnalytics.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/PasswordGeneratorConfig.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/PasswordGeneratorConfigBuilder.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/PasswordGeneratorContext.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/PasswordPwnage.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/PasswordStrength.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/PersistedSession.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/Product.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/RemoveAttachmentRequest.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/RichResult.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/Screen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/Subscription.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/ToastMessage.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/TotpCode.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/TotpToken.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/UsernamePwnage.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/UsernameVariation.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/UsernameVariation2.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/VaultState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/WithBiometric.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/create/CreateRequest.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/Files.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/autofill/AutofillService.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/autofill/AutofillServiceStatus.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/clipboard/ClipboardService.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/connectivity/ConnectivityService.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/crypto/CipherEncryptor.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/crypto/CryptoGenerator.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/crypto/FileEncryptor.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/deeplink/DeeplinkService.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/deeplink/impl/DeeplinkServiceImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/download/DownloadManager.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/download/DownloadProgress.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/download/DownloadService.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/download/DownloadServiceImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/extract/LinkInfoExtractor.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/extract/LinkInfoRegistry.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/extract/impl/LinkInfoPlatformExtractor.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/gpmprivapps/PrivilegedAppsService.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/gpmprivapps/impl/PrivilegedAppsServiceImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/all/BreachesLocalDataSource.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/all/BreachesRemoteDataSource.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/all/BreachesRepository.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/all/impl/BreachesLocalDataSourceImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/all/impl/BreachesRemoteDataSourceImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/all/impl/BreachesRepositoryImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/all/model/LocalBreachesEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/find/AccountPwnageDataSource.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/find/AccountPwnageDataSourceLocal.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/find/AccountPwnageDataSourceRemote.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/find/AccountPwnageRepository.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/find/impl/AccountPwnageDataSourceLocalImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/find/impl/AccountPwnageDataSourceRemoteImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/find/impl/AccountPwnageRepositoryImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/passwords/PasswordPwnageDataSource.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/passwords/PasswordPwnageDataSourceLocal.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/passwords/PasswordPwnageDataSourceRemote.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/passwords/PasswordPwnageRepository.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/passwords/impl/PasswordPwnageDataSourceLocalImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/passwords/impl/PasswordPwnageDataSourceRemoteImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/passwords/impl/PasswordPwnageRepositoryImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/id/IdRepository.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/id/impl/IdRepositoryImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/justdeleteme/JustDeleteMeService.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/justdeleteme/JustDeleteMeServiceInfo.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/justdeleteme/impl/JustDeleteMeServiceImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/justgetmydata/JustGetMyDataService.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/justgetmydata/JustGetMyDataServiceInfo.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/justgetmydata/impl/JustGetMyDataServiceImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/keyvalue/KeyValuePreference.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/keyvalue/KeyValueStore.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/keyvalue/impl/JsonKeyValueStore.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/license/LicenseService.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/license/impl/LicenseServiceImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/license/model/License.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/logging/LogLevel.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/logging/LogRepository.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/logging/kotlin/LogRepositoryKotlin.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/passkey/PassKeyService.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/passkey/PassKeyServiceInfo.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/passkey/impl/PassKeyServiceImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/permission/Permission.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/permission/PermissionService.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/permission/PermissionState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/power/PowerService.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/api/EmailRelay.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/api/EmailRelaySchema.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/api/anonaddy/AnonAddyEmailRelay.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/api/duckduckgo/DuckDuckGoEmailRelay.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/api/fastmail/FastmailEmailRelay.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/api/firefoxrelay/FirefoxRelayEmailRelay.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/api/forwardemail/ForwardEmailEmailRelay.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/api/simplelogin/SimpleLoginEmailRelay.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/di/EmailRelayModule.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/repo/GeneratorEmailRelayRepository.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/repo/GeneratorEmailRelayRepositoryImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/review/ReviewLog.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/review/ReviewService.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/review/impl/ReviewLogImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/settings/SettingsReadRepository.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/settings/SettingsReadWriteRepository.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/similarity/SimilarityService.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/state/StateRepository.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/subscription/SubscriptionService.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/text/Base32Service.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/text/Base64Service.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/text/TextService.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/tld/TldService.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/tld/impl/TldServiceImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/totp/TotpService.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/totp/impl/TotpServiceImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/twofa/TwoFaService.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/twofa/TwoFaServiceInfo.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/twofa/impl/TwoFaServiceImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/FingerprintReadRepository.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/FingerprintReadWriteRepository.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/KeyReadRepository.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/KeyReadWriteRepository.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/SessionMetadataReadRepository.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/SessionMetadataReadWriteRepository.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/SessionReadRepository.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/SessionReadWriteRepository.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/impl/SessionRepositoryImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/wordlist/WordlistService.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/wordlist/impl/WordlistServiceImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddCipher.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddCipherOpenedHistory.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddCipherUsedAutofillHistory.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddCipherUsedPasskeyHistory.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddEmailRelay.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddFolder.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddGeneratorHistory.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddPasskeyCipher.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddUriCipher.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AuthConfirmMasterKeyUseCase.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AuthGenerateMasterKeyUseCase.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/BiometricKeyDecryptUseCase.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/BiometricKeyEncryptUseCase.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/BiometricStatusUseCase.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/ChangeCipherNameById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/ChangeCipherPasswordById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CheckPasswordLeak.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CheckPasswordSetLeak.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CheckUsernameLeak.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherBreachCheck.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherDuplicatesCheck.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherExpiringCheck.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherFieldSwitchToggle.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherIncompleteCheck.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherMerge.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherRemovePasswordHistory.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherRemovePasswordHistoryById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherToolbox.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherUnsecureUrlAutoFix.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherUnsecureUrlCheck.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherUrlCheck.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherUrlDuplicateCheck.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CleanUpAttachment.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/ClearData.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/ClearVaultSession.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/ConfirmAccessByPasswordUseCase.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CopyCipherById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CopyText.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/DateFormatter.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/DeviceIdUseCase.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/DisableBiometric.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/DownloadAttachment.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/EnableBiometric.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/FavouriteCipherById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GenerateMasterHashUseCase.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GenerateMasterKeyUseCase.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GenerateMasterSaltUseCase.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAccountHasError.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAccountStatus.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAccounts.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAccountsHasError.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAllowScreenshots.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAllowTwoPanelLayoutInLandscape.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAllowTwoPanelLayoutInPortrait.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAppBuildDate.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAppBuildType.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAppIcons.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAppVersion.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAppVersionCode.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAppVersionName.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAutofillCopyTotp.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAutofillInlineSuggestions.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAutofillManualSelection.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAutofillRespectAutofillOff.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAutofillSaveRequest.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAutofillSaveUri.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetBarcodeImage.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetBiometricRemainingDuration.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetBiometricTimeout.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetBiometricTimeoutVariants.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCachePremium.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCanAddAccount.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCanAddSecret.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCanWrite.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCheckPwnedPasswords.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCheckPwnedServices.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCheckTwoFA.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCipherOpenedCount.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCipherOpenedHistory.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCiphers.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetClipboardAutoClear.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetClipboardAutoClearVariants.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetClipboardAutoRefresh.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetClipboardAutoRefreshVariants.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCollections.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetColors.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetColorsVariants.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetConcealFields.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetDebugPremium.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetDebugScreenDelay.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetEmailRelays.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetEnvSendUrl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetFingerprint.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetFolderTree.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetFolderTreeById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetFolders.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetFont.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetFontVariants.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetGeneratorHistory.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetGravatarUrl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetJustDeleteMeByUrl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetKeepScreenOn.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetLocale.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetLocaleVariants.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetMarkdown.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetMetas.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetNavAnimation.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetNavAnimationVariants.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetNavLabel.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetOnboardingLastVisitInstant.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetOrganizations.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetPassphrase.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetPassword.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetPasswordStrength.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetProducts.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetProfiles.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetPurchased.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetScreenState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetSends.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetShouldRequestAppReview.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetSubscriptions.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetSuggestions.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetTheme.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetThemeUseAmoledDark.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetThemeVariants.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetTotpCode.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetUseExternalBrowser.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetVaultLockAfterReboot.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetVaultLockAfterScreenOff.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetVaultLockAfterTimeout.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetVaultLockAfterTimeoutVariants.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetVaultPersist.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetVaultSession.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetWebsiteIcons.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetWriteAccess.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/MergeFolderById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/MessageHub.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/MoveCipherToFolderById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/NumberFormatter.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PasskeyTargetCheck.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAccountColorById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAccountMasterPasswordHintById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAccountNameById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAllowScreenshots.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAllowTwoPanelLayoutInLandscape.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAllowTwoPanelLayoutInPortrait.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAppIcons.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAutofillCopyTotp.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAutofillInlineSuggestions.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAutofillManualSelection.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAutofillRespectAutofillOff.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAutofillSaveRequest.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAutofillSaveUri.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutBiometricTimeout.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutCachePremium.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutCheckPwnedPasswords.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutCheckPwnedServices.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutCheckTwoFA.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutClipboardAutoClear.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutClipboardAutoRefresh.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutColors.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutConcealFields.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutDebugPremium.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutDebugScreenDelay.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutFont.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutKeepScreenOn.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutLocale.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutMarkdown.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutNavAnimation.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutNavLabel.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutOnboardingLastVisitInstant.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutScreenState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutTheme.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutThemeUseAmoledDark.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutUseExternalBrowser.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutVaultLockAfterReboot.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutVaultLockAfterScreenOff.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutVaultLockAfterTimeout.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutVaultPersist.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutVaultSession.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutWebsiteIcons.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutWriteAccess.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/QueueSyncAll.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/QueueSyncById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RePromptCipherById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RemoveAccountById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RemoveAccounts.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RemoveAttachment.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RemoveCipherById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RemoveEmailRelayById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RemoveFolderById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RemoveGeneratorHistory.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RemoveGeneratorHistoryById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RenameFolderById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RequestAppReview.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/ResolvePlaceholders.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RestoreCipherById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RetryCipher.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RotateDeviceIdUseCase.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/ShowMessage.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/SyncAll.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/SyncById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/TrashCipherByFolderId.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/TrashCipherById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/UnlockUseCase.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/Watchdog.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/WindowCoroutineScope.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/AddEmailRelayImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/AddGeneratorHistoryImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/BiometricKeyDecryptUseCaseImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/BiometricKeyEncryptUseCaseImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/ClearVaultSessionImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/ConfirmAccessByPasswordUseCaseImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/DownloadAttachmentImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAllowScreenshotsImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInLandscapeImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInPortraitImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAppBuildTypeImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAppIconsImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAppVersionCode.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAppVersionImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAppVersionName.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAutofillCopyTotpImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAutofillInlineSuggestionsImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAutofillManualSelectionImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAutofillRespectAutofillOffImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAutofillSaveRequestImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAutofillSaveUriImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetBiometricTimeoutImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetBiometricTimeoutVariantsImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetCachePremiumImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetCanAddAccountImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetCanWriteImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetCanWriteStub.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetCheckPwnedPasswordsImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetCheckPwnedServicesImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetCheckTwoFAImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetClipboardAutoClearImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetClipboardAutoClearVariantsImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetClipboardAutoRefreshImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetClipboardAutoRefreshVariantsImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetColorsImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetColorsVariantsImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetConcealFieldsImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetDebugPremiumImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetDebugScreenDelayImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetEnvSendUrlImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetFontImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetFontVariantsImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetGeneratorHistoryImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetGravatarUrlImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetJustDeleteMeByUrlImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetKeepScreenOnImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetLocaleImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetLocaleVariantsImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetMarkdownImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetNavAnimationVariantsImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetNavLabelImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetOnboardingLastVisitInstantImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetPasswordImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetProductsImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetScreenStateImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetShouldRequestAppReviewImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetSubscriptionsImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetThemeImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetThemeUseAmoledDarkImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetThemeVariantsImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetTotpCodeImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetUseExternalBrowserImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterRebootImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterTimeoutImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterTimeoutVariantsImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetVaultPersistImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetWebsiteIconsImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetWriteAccessImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/MessageHub.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PasskeyTargetCheck.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAllowScreenshotsImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAllowTwoPanelLayoutInLandscapeImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAllowTwoPanelLayoutInPortraitImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAppIconsImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAutofillCopyTotpImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAutofillInlineSuggestionsImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAutofillManualSelectionImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAutofillRespectAutofillOffImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAutofillSaveRequestImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAutofillSaveUriImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutBiometricTimeoutImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutCachePremiumImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutCheckPwnedPasswordsImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutCheckPwnedServicesImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutCheckTwoFAImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutClipboardAutoClearImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutClipboardAutoRefreshImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutColorsImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutConcealFieldsImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutDebugPremiumImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutDebugScreenDelayImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutFontImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutKeepScreenOnImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutLocaleImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutMarkdownImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutNavAnimationImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutNavLabelImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutOnboardingLastVisitInstantImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutScreenStateImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutThemeImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutThemeUseAmoledDarkImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutUserExternalBrowserImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutVaultLockAfterRebootImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutVaultLockAfterScreenOffImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutVaultLockAfterTimeoutImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutVaultPersistImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutWebsiteIconsImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutWriteAccessImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/RemoveAttachmentImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/RemoveGeneratorHistoryByIdImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/RemoveGeneratorHistoryImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/RequestAppReviewImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/ResolvePlaceholdersImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/WindowCoroutineScopeImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/Boolean.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/Browsers.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/ByteArray.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/Instant.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/Int.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/Luhn.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/MainThread.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/RegexColorize.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/flow/EventFlow.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/flow/combine.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/flow/foldAsList.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/flow/observeFlow.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/flow/stateIn.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/flow/widen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/flowOfTime.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/hash/FNV.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/sqldelight/collectors.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/toColorInt.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/withLogTimeOfFirstEvent.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/worker/Wrker.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/common/worker/impl/WrkerImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/core/session/usecase/AuthTypealias.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/core/session/usecase/SubDI.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/core/session/util/EncodeByCipher.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/DatabaseDispatcher.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/DatabaseManager.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/DatabaseSyncer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenCipher.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenCollection.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenFolder.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenMeta.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenOrganization.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenProfile.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenSend.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenSendRepositoryImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenService.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenServiceUtil.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenToken.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/EmptyView.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/ErrorView.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/apppicker/AppPickerResult.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/apppicker/AppPickerRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/appreview/RequestAppReviewEffect.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/attachments/AttachmentsRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/attachments/AttachmentsScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/attachments/AttachmentsState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/attachments/AttachmentsStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/attachments/compose/ItemAttachment.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/attachments/model/AttachmentItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/attachments/util/CreateAttachmentItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/attachments/util/CreateSendAttachmentItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/AccountViewRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/AccountViewScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/AccountViewState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/AccountViewStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/Autofill.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/IntFieldModel.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/SwitchFieldModel.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/TextFieldModel.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/Validated.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/Visibility.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorDomain.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorEmail.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorFeedback.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorHeader.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorPassword.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorPhoneNumber.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorTitle.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorUri.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorUrl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/LoginEvent.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/LoginRegion.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/LoginRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/LoginScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/LoginState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/LoginStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/otp/LoginTwofaRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/otp/LoginTwofaScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/otp/LoginTwofaState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/otp/LoginTwofaStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/otp/TwoFactorProviderItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/otp/TwoFactorState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/barcodetype/BarcodeTypeRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/barcodetype/BarcodeTypeScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/barcodetype/BarcodeTypeState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/barcodetype/BarcodeTypeStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/biometric/BiometricPromptEffect.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/changepassword/ChangePasswordRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/changepassword/ChangePasswordScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/changepassword/ChangePasswordState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/changepassword/ChangePasswordStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/colorpicker/ColorPickerResult.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/colorpicker/ColorPickerRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/colorpicker/ColorPickerScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/colorpicker/ColorPickerState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/colorpicker/ColorPickerStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/ConfirmationResult.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/ConfirmationRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/ConfirmationScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/ConfirmationState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/ConfirmationStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/elevatedaccess/ElevatedAccessResult.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/elevatedaccess/ElevatedAccessRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/elevatedaccess/ElevatedAccessScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/elevatedaccess/ElevatedAccessState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/elevatedaccess/ElevatedAccessStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/folder/FolderConfirmationResult.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/folder/FolderConfirmationRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/folder/FolderConfirmationScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/folder/FolderConfirmationState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/folder/FolderConfirmationStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/organization/FolderInfo.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/organization/OrganizationConfirmationResult.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/organization/OrganizationConfirmationRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/organization/OrganizationConfirmationScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/organization/OrganizationConfirmationState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/organization/OrganizationConfirmationStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/crashlytics/crashlyticsMap.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/datasafety/DataSafetyRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/datasafety/DataSafetyScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/datepicker/DatePickerResult.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/datepicker/DatePickerRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/datepicker/DatePickerScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/datepicker/DatePickerState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/datepicker/DatePickerStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/decorator/ItemDecorator.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/dialog/Dialog.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/duplicates/DuplicatesRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/duplicates/DuplicatesScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/duplicates/DuplicatesState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/duplicates/DuplicatesStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/emailleak/EmailLeakRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/emailleak/EmailLeakScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/emailleak/EmailLeakState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/emailleak/EmailLeakStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/favicon/Favicon.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/favicon/FaviconFetcher.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/favicon/FaviconImage.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/favicon/FaviconServer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/favicon/GravatarUrl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/feedback/FeedbackRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/feedback/FeedbackScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/feedback/FeedbackState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/feedback/FeedbackStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/feedback/FeedbackUtils.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/filepicker/FilePickerEffect.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/filepicker/FilePickerIntent.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/filepicker/FilePickerUtils.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/GeneratorRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/GeneratorScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/GeneratorState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/GeneratorStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/GeneratorType.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/emailrelay/EmailRelayListRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/emailrelay/EmailRelayListScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/emailrelay/EmailRelayListState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/emailrelay/EmailRelayListStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/history/GeneratorHistoryItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/history/GeneratorHistoryRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/history/GeneratorHistoryScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/history/GeneratorHistoryState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/HomeLayout.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/HomeScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/SettingListItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/SettingListRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/SettingListScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/SettingPaneContent.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/SettingPaneItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/SettingPaneState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/SettingsRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/SettingsScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/AccountListRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/AccountListScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/AccountListState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/AccountListStateWrapper.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/AccountListViewModel.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/AccountsRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/AccountsScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/component/AccountListItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/model/AccountItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/autofill/AutofillSettingsRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/autofill/AutofillSettingsScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAboutApp.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAboutAppBuildDate.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAboutTeam.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAboutTelegram.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingApk.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAppIcons.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofill.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofillCopyTotp.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofillInlineSuggestions.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofillManualSelection.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofillRespectAutofillOff.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofillSaveRequest.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofillSaveUri.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingBiometrics.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingCheckPwnedPasswords.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingCheckPwnedServices.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingCheckTwoFA.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingClearCache.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingClipboardAutoClear.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingClipboardAutoRefresh.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingColorAccent.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingColorScheme.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingComponent.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingConcealedFields.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingCrash.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingCrashlytics.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingCredentialProvider.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingDataSafety.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingEmitMessage.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingExperimental.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingFeaturesOverview.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingFeedbackApp.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingFont.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingGitHub.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingKeepScreenOn.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingLaunchAppPicker.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingLaunchYubiKey.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingLocalization.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingMarkdown.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingMasterPassword.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingNavAnimation.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingNavLabel.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingOpenSourceLicenses.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermission.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermissionCamera.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermissionOther.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermissionPostNotifications.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPrivacyPolicy.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingRateApp.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingRequireMasterPassword.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingRotateDeviceId.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingScreenDelay.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingScreenshots.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingSection.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingSelectLocale.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingSubscriptions.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingSubscriptionsDebug.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingSubscriptionsPlayStore.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingThemeUseAmoledDark.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingTwoPanelLayoutLandscape.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingTwoPanelLayoutPortrait.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingUseExternalBrowser.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingVaultLock.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingVaultLockAfterReboot.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingVaultLockAfterScreenOff.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingVaultLockAfterTimeout.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingVaultPersist.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingWebsiteIcons.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingWriteAccess.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/debug/DebugSettingsRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/debug/DebugSettingsScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/display/UiSettingsRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/display/UiSettingsScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/experimental/ExperimentalSettingsRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/experimental/ExperimentalSettingsScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/notifications/NotificationsSettingsRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/notifications/NotificationsSettingsScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/other/OtherSettingsRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/other/OtherSettingsScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/permissions/PermissionsSettingsRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/permissions/PermissionsSettingsScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/search/SearchSettingsRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/search/SearchSettingsScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/search/SearchSettingsState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/search/SearchSettingsStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/security/SecuritySettingsRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/security/SecuritySettingsScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/subscriptions/SubscriptionsSettingsRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/subscriptions/SubscriptionsSettingsScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/watchtower/WatchtowerSettingsRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/watchtower/WatchtowerSettingsScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/VaultRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/VaultScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/VaultState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/add/AddRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/add/AddScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/add/AddState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/add/AddStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/add/attachment/SkeletonAttachment.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/add/attachment/SkeletonAttachmentItemFactory.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/collection/CollectionRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/collection/CollectionScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/collection/CollectionState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/collection/CollectionStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/collections/CollectionsRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/collections/CollectionsScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/collections/CollectionsState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/collections/CollectionsStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/SearchTextField.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultListItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultPasswordHistoryItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultPasswordHistoryValueItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewActionItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewAttachmentItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewBooleanItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewButtonItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewCardItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewCollectionItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewErrorItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewFolderItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewIdentityItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewInactivePasskeyItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewInactiveTotpItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewInfoItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewLabelItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewNoteItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewOrganizationItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewPasskeyItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewReusedPasswordItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewSectionItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewSpacerItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewTotpItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewUriItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewValueItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/folders/FoldersRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/folders/FoldersScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/folders/FoldersState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/folders/FoldersStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/model/FilterItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/model/SortItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/model/VaultItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/model/VaultItemIcon.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/model/VaultPasswordHistoryItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/model/VaultViewItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/organization/OrganizationRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/organization/OrganizationScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/organization/OrganizationState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/organization/OrganizationStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/organizations/OrganizationsRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/organizations/OrganizationsScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/organizations/OrganizationsState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/organizations/OrganizationsStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/AutofillWindow.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultCipherItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultListFilter.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultListItemMapping.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultListMode.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultListRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultListScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultListState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultRecentState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultRecentStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewPasswordHistoryRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewPasswordHistoryScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewPasswordHistoryState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewPasswordHistoryStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/IndexedText.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/Suggestions.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/AccountFilter.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/AndFilter.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/CollectionFilter.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/Filter.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/FolderFilter.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/OrFilter.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/OrganizationFilter.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/PasswordDuplicateFilter.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/PasswordStrengthFilter.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/TypeFilter.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/sort/AlphabeticalSort.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/sort/LastCreatedSort.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/sort/LastModifiedSort.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/sort/PasswordLastModifiedSort.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/sort/PasswordSort.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/sort/PasswordStrengthSort.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/sort/Sort.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/util/SortLimiter.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/util/changePasswordAction.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/JustDeleteMeComponent.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/directory/JustDeleteMeServiceListRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/directory/JustDeleteMeServiceListScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/directory/JustDeleteMeServiceListState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/directory/JustDeleteMeServiceListStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/directory/JustDeleteMeServiceViewRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/directory/JustDeleteMeServiceViewScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/directory/JustDeleteMeServiceViewState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/directory/JustDeleteMeServiceViewStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/AppRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/AppScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/main/MainRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/main/MainScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/setup/SetupRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/setup/SetupScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/setup/SetupState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/setup/SetupStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/unlock/UnlockRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/unlock/UnlockScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/unlock/UnlockState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/largetype/LargeTypeRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/largetype/LargeTypeScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/largetype/LargeTypeState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/largetype/LargeTypeStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/license/LicenseRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/license/LicenseScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/license/LicenseState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/license/LicenseStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/loading/LoadingScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/loading/LoadingTask.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/localization/TextHolder.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/localization/textResource.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/N.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/Navigation.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationAnimation.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationController.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationEntry.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationEntryProvider.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationIntent.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationIntentPackage.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationNode.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationNodeCurrentStack.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationRouter.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationRouterBackIcon.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/Copy.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/DiskHandle.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/DiskHandleImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/FlowHolderViewModel.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/PersistedStorage.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/ProduceScreenState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlow.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeSub.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/notifications/NotificationsBanner.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/onboarding/OnboardingBanner.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/onboarding/OnboardingItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/onboarding/OnboardingRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/onboarding/OnboardingScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/PasskeysCredentialViewRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/PasskeysCredentialViewScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/PasskeysCredentialViewState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/PasskeysCredentialViewStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/directory/PasskeysServiceListRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/directory/PasskeysServiceListScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/directory/PasskeysServiceListState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/directory/PasskeysServiceListStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/directory/PasskeysServiceViewRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/directory/PasskeysServiceViewScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/directory/PasskeysServiceViewState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/directory/PasskeysServiceViewStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passwordleak/PasswordLeakRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passwordleak/PasswordLeakScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passwordleak/PasswordLeakState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passwordleak/PasswordLeakStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/qr/ScanQrButton.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/qr/ScanQrRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/EmptyItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/component/DropdownButton.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/component/DropdownHeader.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/filter/FilterButton.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/filter/FilterItems.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/filter/FilterScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/filter/component/FilterItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/filter/component/FilterSection.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/filter/component/VaultHomeScreenFilterPaneNumberOfItems.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/filter/model/FilterItemModel.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/search/IndexedModel.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/search/produceSimpleSearch.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/sort/SortButton.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/sort/component/SortItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/sort/component/SortSection.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/sort/model/SortItemModel.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/SendItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/SendListItemMapping.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/SendListState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/SendListStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/SendRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/SendScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/action/showInLargeTypeActionOrNull.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/list/SendListRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/list/SendListScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/AccessCountSort.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/AlphabeticalSort.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/LastDeletedSort.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/LastExpiredSort.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/LastModifiedSort.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/SendListFilter.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/SendSortItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/Sort.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/filter/AccountFilter.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/filter/AndFilter.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/filter/Filter.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/filter/FilterHolder.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/filter/FilterItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/filter/OrFilter.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/filter/TypeFilter.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/view/SendViewScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/view/SendViewState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/view/SendViewStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/view/VaultViewRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/sync/SyncItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/sync/SyncRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/sync/SyncScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/sync/SyncState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/sync/SyncStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/team/AboutTeamRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/team/AboutTeamScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/tfa/directory/TwoFaServiceListRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/tfa/directory/TwoFaServiceListScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/tfa/directory/TwoFaServiceListState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/tfa/directory/TwoFaServiceListStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/tfa/directory/TwoFaServiceViewRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/tfa/directory/TwoFaServiceViewScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/tfa/directory/TwoFaServiceViewState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/tfa/directory/TwoFaServiceViewStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/twopane/TwoPaneLayout.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/twopane/TwoPaneLayoutProvider.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/twopane/TwoPaneNavigation.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/twopane/TwoPaneScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/watchtower/WatchtowerRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/watchtower/WatchtowerScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/watchtower/WatchtowerState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/watchtower/WatchtowerStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/websiteleak/WebsiteLeakRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/websiteleak/WebsiteLeakScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/websiteleak/WebsiteLeakState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/websiteleak/WebsiteLeakStateProducer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/yubikey/YubiKey.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/yubikey/YubiKeyState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/yubikey/YubiRoute.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/feature/yubikey/YubiScreen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeActivity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeAnimation.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeBundle.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeCipher.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeContext.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeCrashlytics.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeDebug.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LePlatform.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeUri.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeUsbPid.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeWindowInsets.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/platform/lifecycle/LeLifecycleExt.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/platform/lifecycle/LeLifecycleProvider.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/platform/lifecycle/LeLifecycleState.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/platform/parcelize/LeIgnoredOnParcel.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/platform/parcelize/LeParcelable.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/platform/parcelize/LeParcelize.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/platform/util/hasAutofill.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/platform/util/isRelease.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/CreatePasskeyRequest.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/ServerEnv.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/ServerTwoFactorToken.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/SyncEngine.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/builder/ServerEnvApi.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/builder/ServerEnvIdentity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/builder/ServerEnvNotifications.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/builder/UrlBuilder.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/builder/http.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/entity/SyncResponse.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/fff.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/login.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/BitwardenCrypto.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/BitwardenDecoder.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/CipherCrypto.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/CipherDecoder.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/CollectionCrypto.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/CollectionDecoder.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/EntryCrypto.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/FolderCrypto.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/FolderDecoder.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/OrganizationCrypto.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/OrganizationDecoder.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/ProfileCrypto.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/ProfileDecoder.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/SendCrypto.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/SendDecoder.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/SymmetricCryptoKey.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/AccountPreLoginRequest.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/AccountPreLoginResponse.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/AttachmentEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/AvatarRequestEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/CardEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/CipherEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/CipherRepromptTypeEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/CipherTypeEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/CollectionEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/ConnectTokenResponse.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/DomainEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/ErrorEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/EventEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/EventTypeEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/FieldEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/FieldTypeEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/FolderEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/HibpBreachResponse.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/IdentityEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/LinkedIdTypeEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/LoginEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/LoginFido2CredentialsEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/LoginUriEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/OrganizationEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/OrganizationUserStatusTypeEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/OrganizationUserTypeEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/PasswordHistoryEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/PolicyEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/PolicyTypeEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/ProfileRequestEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/ProviderEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/ProviderUserStatusTypeEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/ProviderUserTypeEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/SecureNoteEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/SecureNoteTypeEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/SendEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/SendFileEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/SendTextEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/SendTypeEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/SyncResponse.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/TwoFactorEmailRequestEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/TwoFactorProviderTypeEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/UriMatchTypeEntity.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/api/FieldApi.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/api/IdentityRequest.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/api/LoginFido2CredentialsRequest.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/api/LoginRequest.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/api/LoginUriRequest.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/api/SecureNoteRequest.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/api/SendFileApi.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/api/SendTextApi.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/AttachmentRequest.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/CardRequest.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/CipherCollectionsRequest.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/CipherCreateRequest.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/CipherRequest.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/CipherShareRequest.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/CipherUpdate.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/DeleteAccountRequest.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/FolderRequest.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/FolderUpdate.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/PasswordHistoryRequest.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/SendRequest.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/serializer/CommonEnumIntSerializer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/mapper/CipherMapping.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/mapper/CollectionMapping.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/mapper/FolderMapping.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/mapper/MetaMapping.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/mapper/OrganizationMapping.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/mapper/ProfileMapping.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/mapper/SendMapping.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/mapper/TokenMapping.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/model/LastSyncStatus.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/model/Login.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/model/PasswordResult.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/model/PreLogin.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/model/TwoFactorProvider.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/model/TwoFactorProviderArgument.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/model/TwoFactorProviderType.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BaseRepository.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BitwardenCipherRepository.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BitwardenCollectionRepository.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BitwardenFolderRepository.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BitwardenMetaRepository.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BitwardenOrganizationRepository.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BitwardenProfileRepository.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BitwardenSendRepository.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BitwardenTokenRepository.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/sync/SyncManager.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/AddCipher.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/AddCipherOpenedHistoryImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/AddCipherPasskey.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/AddCipherUri.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/AddCipherUsedAutofillHistoryImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/AddCipherUsedPasskeyHistoryImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/AddFolder.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherNameById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherPasswordById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CheckPasswordLeakImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CheckPasswordSetLeakImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CheckUsernameLeakImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherBreachCheck.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherDuplicatesCheck.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherExpiringCheck.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherFieldSwitchToggle.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherIncompleteCheck.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherMergee.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherRemovePasswordHistoryByIdImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherRemovePasswordHistoryImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherUnsecureUrlAutoFix.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherUnsecureUrlCheck.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherUnsecureUrlUtils.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherUrlCheck.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherUrlDuplicateCheck.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CopyCipherById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/FavouriteCipherById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetAccountHasError.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetAccounts.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsHasError.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetCipherOpenedCountImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetCipherOpenedHistoryImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetCiphers.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetCollections.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetEmailRelays.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetFingerprint.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetFolderTree.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetFolderTreeById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetFolders.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetMetas.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizations.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetProfiles.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetSends.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/MergeFolderById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/MoveCipherToFolderById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/PutAccountColorById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/PutAccountMasterPasswordHintById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/PutAccountNameById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/QueueSyncAll.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/QueueSyncById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RePromptCipherById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RemoveAccountById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RemoveAccounts.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RemoveCipherById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RemoveEmailRelayById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RemoveFolderById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RenameFolderById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RestoreCipherById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RetryCipher.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/SyncAll.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/SyncById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/TrashCipherByFolderId.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/TrashCipherById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/internal/AddAccount.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/internal/AddAccountImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/internal/RequestEmailTfa.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByToken.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/util/CanModify.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyFolderById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyProfileById.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/util/RefreshToken.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/util/publicKey.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/AnimatedFabVisibility.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/AnimatedNumberText.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/AutofillWindow.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/BadgeField.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/CollectedEffect.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/Composable.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/Dropdown.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/ExpandedIfNotEmpty.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/GridLayout.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/Html.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/KeepScreenOn.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/OptionsWindow.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/OtherScaffold.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/Padding.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/Password.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/PasswordFilterItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/PasswordPwnedBadge.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/PasswordStrengthBadge.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/Placeholder.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/Scaffold.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/SimpleNote.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/SliderInteraction.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/StringForEach.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/SyncSupervisorImpl.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/TextItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/ToastComposable.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/button/FavouriteToggleButton.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/focus/BringIntoView.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/focus/FocusRequester.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/getHttpCode.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/grid/SimpleGridLayout.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/AttachmentIcon.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/ChevronIcon.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/DropdownIcon.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/EmailIcon.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/ExpandableIcon.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/IconBox.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/Icons.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/OfflineIcon.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/SyncIcon.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/VisibilityIcon.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/items/ContextItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/items/FlatItemShimmer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/markdown/Markdown.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/popup.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/poweredby/PoweredBy.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/pulltosearch/PullToSearch.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/rememberVectorPainter.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/rightClickable.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/scrollbar/ColumnScrollbar.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbar.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/selection/SelectionBar.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/selection/SelectionUtil.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/shimmer/ShimmerArea.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/shimmer/ShimmerBounds.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/shimmer/ShimmerTheme.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/shimmer/rememberShimmer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/shimmer/rememberShimmerEffect.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/shimmer/shimmer.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/shimmer/unclippedBoundsInWindow.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonButton.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonCheckBox.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonFilter.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonItemPilled.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonSection.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonSegmented.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonSlider.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonSwitch.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonText.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonTextField.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/tabs/CallsTabs.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/tabs/SegmentedTabs.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/tabs/TabItem.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/text/AnnotatedResource.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/Color.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/Dimen.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/Theme.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/m3/Palette.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/m3/Theme.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/monet/ColorSchemeFactory.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/monet/ColorSwatch.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/monet/DynamicColorScheme.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/monet/MaterialYouTargets.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/monet/getMonetNeutralColor.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/toolbar/CustomToolbar.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/toolbar/LargeToolbar.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/toolbar/SmallToolbar.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/toolbar/content/ContentToolbar.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/totp/formatTotp.kt create mode 100644 common/src/commonMain/kotlin/com/artemchep/keyguard/ui/util/Divider.kt create mode 100644 common/src/commonMain/resources/MR/af-rZA/plurals.xml create mode 100644 common/src/commonMain/resources/MR/af-rZA/strings.xml create mode 100644 common/src/commonMain/resources/MR/ar-rSA/plurals.xml create mode 100644 common/src/commonMain/resources/MR/ar-rSA/strings.xml create mode 100644 common/src/commonMain/resources/MR/base/plurals.xml create mode 100644 common/src/commonMain/resources/MR/base/strings.xml create mode 100644 common/src/commonMain/resources/MR/ca-rES/plurals.xml create mode 100644 common/src/commonMain/resources/MR/ca-rES/strings.xml create mode 100644 common/src/commonMain/resources/MR/cs-rCZ/plurals.xml create mode 100644 common/src/commonMain/resources/MR/cs-rCZ/strings.xml create mode 100644 common/src/commonMain/resources/MR/da-rDK/plurals.xml create mode 100644 common/src/commonMain/resources/MR/da-rDK/strings.xml create mode 100644 common/src/commonMain/resources/MR/de-rDE/plurals.xml create mode 100644 common/src/commonMain/resources/MR/de-rDE/strings.xml create mode 100644 common/src/commonMain/resources/MR/el-rGR/plurals.xml create mode 100644 common/src/commonMain/resources/MR/el-rGR/strings.xml create mode 100644 common/src/commonMain/resources/MR/en-rGB/plurals.xml create mode 100644 common/src/commonMain/resources/MR/en-rGB/strings.xml create mode 100644 common/src/commonMain/resources/MR/en-rUS/plurals.xml create mode 100644 common/src/commonMain/resources/MR/en-rUS/strings.xml create mode 100644 common/src/commonMain/resources/MR/es-rES/plurals.xml create mode 100644 common/src/commonMain/resources/MR/es-rES/strings.xml create mode 100644 common/src/commonMain/resources/MR/fi-rFI/plurals.xml create mode 100644 common/src/commonMain/resources/MR/fi-rFI/strings.xml create mode 100644 common/src/commonMain/resources/MR/files/gpm_passkeys_privileged_apps.json create mode 100644 common/src/commonMain/resources/MR/files/justdeleteme.json create mode 100644 common/src/commonMain/resources/MR/files/justgetmydata.json create mode 100644 common/src/commonMain/resources/MR/files/licenses.json create mode 100644 common/src/commonMain/resources/MR/files/passkeys.json create mode 100644 common/src/commonMain/resources/MR/files/public_suffix_list.txt create mode 100644 common/src/commonMain/resources/MR/files/tfa.json create mode 100644 common/src/commonMain/resources/MR/files/wordlist_en_eff.txt create mode 100644 common/src/commonMain/resources/MR/fonts/AtkinsonHyperlegible-Bold.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/AtkinsonHyperlegible-BoldItalic.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/AtkinsonHyperlegible-Italic.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/AtkinsonHyperlegible-Regular.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/NotoSans-Black.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/NotoSans-BlackItalic.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/NotoSans-Bold.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/NotoSans-BoldItalic.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/NotoSans-ExtraBold.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/NotoSans-ExtraBoldItalic.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/NotoSans-ExtraLight.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/NotoSans-ExtraLightItalic.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/NotoSans-Italic.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/NotoSans-Light.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/NotoSans-LightItalic.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/NotoSans-Medium.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/NotoSans-MediumItalic.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/NotoSans-Regular.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/NotoSans-SemiBold.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/NotoSans-SemiBoldItalic.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/NotoSans-Thin.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/NotoSans-ThinItalic.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/NotoSansMono.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/Roboto-Black.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/Roboto-BlackItalic.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/Roboto-Bold.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/Roboto-BoldItalic.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/Roboto-Italic.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/Roboto-Light.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/Roboto-LightItalic.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/Roboto-Medium.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/Roboto-MediumItalic.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/Roboto-Regular.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/Roboto-Thin.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/Roboto-ThinItalic.ttf create mode 100644 common/src/commonMain/resources/MR/fonts/RobotoMono.ttf create mode 100644 common/src/commonMain/resources/MR/fr-rFR/plurals.xml create mode 100644 common/src/commonMain/resources/MR/fr-rFR/strings.xml create mode 100644 common/src/commonMain/resources/MR/hu-rHU/plurals.xml create mode 100644 common/src/commonMain/resources/MR/hu-rHU/strings.xml create mode 100644 common/src/commonMain/resources/MR/images/ic_card_amex.svg create mode 100644 common/src/commonMain/resources/MR/images/ic_card_diners.svg create mode 100644 common/src/commonMain/resources/MR/images/ic_card_discover.svg create mode 100644 common/src/commonMain/resources/MR/images/ic_card_elo.svg create mode 100644 common/src/commonMain/resources/MR/images/ic_card_jcb.svg create mode 100644 common/src/commonMain/resources/MR/images/ic_card_maestro.svg create mode 100644 common/src/commonMain/resources/MR/images/ic_card_mastercard.svg create mode 100644 common/src/commonMain/resources/MR/images/ic_card_mir.svg create mode 100644 common/src/commonMain/resources/MR/images/ic_card_unionpay.svg create mode 100644 common/src/commonMain/resources/MR/images/ic_card_visa.svg create mode 100644 common/src/commonMain/resources/MR/images/ic_mastodon.svg create mode 100644 common/src/commonMain/resources/MR/it-rIT/plurals.xml create mode 100644 common/src/commonMain/resources/MR/it-rIT/strings.xml create mode 100644 common/src/commonMain/resources/MR/iw-rIL/plurals.xml create mode 100644 common/src/commonMain/resources/MR/iw-rIL/strings.xml create mode 100644 common/src/commonMain/resources/MR/ja-rJP/plurals.xml create mode 100644 common/src/commonMain/resources/MR/ja-rJP/strings.xml create mode 100644 common/src/commonMain/resources/MR/ko-rKR/plurals.xml create mode 100644 common/src/commonMain/resources/MR/ko-rKR/strings.xml create mode 100644 common/src/commonMain/resources/MR/nl-rNL/plurals.xml create mode 100644 common/src/commonMain/resources/MR/nl-rNL/strings.xml create mode 100644 common/src/commonMain/resources/MR/no-rNO/plurals.xml create mode 100644 common/src/commonMain/resources/MR/no-rNO/strings.xml create mode 100644 common/src/commonMain/resources/MR/pl-rPL/plurals.xml create mode 100644 common/src/commonMain/resources/MR/pl-rPL/strings.xml create mode 100644 common/src/commonMain/resources/MR/pt-rBR/plurals.xml create mode 100644 common/src/commonMain/resources/MR/pt-rBR/strings.xml create mode 100644 common/src/commonMain/resources/MR/pt-rPT/plurals.xml create mode 100644 common/src/commonMain/resources/MR/pt-rPT/strings.xml create mode 100644 common/src/commonMain/resources/MR/ro-rRO/plurals.xml create mode 100644 common/src/commonMain/resources/MR/ro-rRO/strings.xml create mode 100644 common/src/commonMain/resources/MR/ru-rRU/plurals.xml create mode 100644 common/src/commonMain/resources/MR/ru-rRU/strings.xml create mode 100644 common/src/commonMain/resources/MR/sr-rSP/plurals.xml create mode 100644 common/src/commonMain/resources/MR/sr-rSP/strings.xml create mode 100644 common/src/commonMain/resources/MR/sv-rSE/plurals.xml create mode 100644 common/src/commonMain/resources/MR/sv-rSE/strings.xml create mode 100644 common/src/commonMain/resources/MR/tr-rTR/plurals.xml create mode 100644 common/src/commonMain/resources/MR/tr-rTR/strings.xml create mode 100644 common/src/commonMain/resources/MR/uk-rUA/plurals.xml create mode 100644 common/src/commonMain/resources/MR/uk-rUA/strings.xml create mode 100644 common/src/commonMain/resources/MR/vi-rVN/plurals.xml create mode 100644 common/src/commonMain/resources/MR/vi-rVN/strings.xml create mode 100644 common/src/commonMain/resources/MR/zh-rCN/plurals.xml create mode 100644 common/src/commonMain/resources/MR/zh-rCN/strings.xml create mode 100644 common/src/commonMain/resources/MR/zh-rTW/plurals.xml create mode 100644 common/src/commonMain/resources/MR/zh-rTW/strings.xml create mode 100644 common/src/commonMain/sqldelight/com/artemchep/keyguard/data/CipherUsageHistory.sq create mode 100644 common/src/commonMain/sqldelight/com/artemchep/keyguard/data/GeneratorEmailRelay.sq create mode 100644 common/src/commonMain/sqldelight/com/artemchep/keyguard/data/GeneratorHistory.sq create mode 100644 common/src/commonMain/sqldelight/com/artemchep/keyguard/data/bitwarden/Account.sq create mode 100644 common/src/commonMain/sqldelight/com/artemchep/keyguard/data/bitwarden/Cipher.sq create mode 100644 common/src/commonMain/sqldelight/com/artemchep/keyguard/data/bitwarden/Collection.sq create mode 100644 common/src/commonMain/sqldelight/com/artemchep/keyguard/data/bitwarden/Folder.sq create mode 100644 common/src/commonMain/sqldelight/com/artemchep/keyguard/data/bitwarden/Meta.sq create mode 100644 common/src/commonMain/sqldelight/com/artemchep/keyguard/data/bitwarden/Organization.sq create mode 100644 common/src/commonMain/sqldelight/com/artemchep/keyguard/data/bitwarden/Profile.sq create mode 100644 common/src/commonMain/sqldelight/com/artemchep/keyguard/data/bitwarden/Send.sq create mode 100644 common/src/commonMain/sqldelight/com/artemchep/keyguard/data/pwnage/AccountBreach.sq create mode 100644 common/src/commonMain/sqldelight/com/artemchep/keyguard/data/pwnage/PasswordBreach.sq create mode 100644 common/src/commonMain/sqldelight/migrations/1.sqm create mode 100644 common/src/commonMain/sqldelight/migrations/2.sqm create mode 100644 common/src/commonMain/sqldelight/migrations/3.sqm create mode 100644 common/src/commonMain/sqldelight/migrations/4.sqm create mode 100644 common/src/commonMain/sqldelight/migrations/5.sqm create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/AutofillActArgs.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/common/service/permission/Permission.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/copy/ClipboardServiceJvm.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/copy/ConnectivityServiceJvm.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/copy/DataDirectory.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/copy/DownloadClientDesktop.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/copy/DownloadManagerDesktop.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/copy/DownloadRepositoryDesktop.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/copy/GetBarcodeImageJvm.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/copy/LinkInfoExtractorExecute.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/copy/LinkInfoExtractorLaunch.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/copy/PermissionServiceJvm.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/copy/PowerServiceJvm.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/copy/ReviewServiceJvm.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/copy/TextServiceJvm.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/core/session/FingerprintRepositoryModule.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/core/session/usecase/createSubDi.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/core/store/SqlManagerFile.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/feature/apppicker/AppPickerRoute.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/feature/auth/common/Autofill.desktop.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/feature/auth/login/otp/LoginOtpScreen.desktop.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/feature/auth/login/otp/LoginTwofaScreen.desktop.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/feature/biometric/BiometricPromptEffect.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/feature/favicon/FaviconImage.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/feature/feedback/FeedbackUtils.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/feature/filepicker/FilePickerEffect.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofill.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingCredentialProvider.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermission.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermissionCamera.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermissionOther.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermissionPostNotifications.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingSubscriptionsPlayStore.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/feature/home/vault/add/LeAddRoute.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/feature/localization/textResource.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/feature/qr/ScanQrRoute.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/feature/yubikey/Yubi.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/feature/yubikey/rememberYubiKey.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/platform/LeActivity.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/platform/LeAnimation.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/platform/LeBundle.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/platform/LeContext.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/platform/LeDebug.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/platform/LePlatform.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/platform/LeUri.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/platform/LeUsbPid.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/platform/leWindowInsets.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlow.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/platform/parcelize/LeIgnoredOnParcel.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/platform/parcelize/LeParcelable.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/platform/parcelize/LeParcelize.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/platform/recordException.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/ui/ComposeWindow.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/ui/Html.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/ui/KeepScreenOnEffect.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/ui/LeMOdelBottomSheet.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/ui/icons/AttachmentIconImpl.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/ui/icons/EmailIcon.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/ui/rightClickable.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/ui/shimmer/rememberShimmerBoundsWindow.kt create mode 100644 common/src/desktopMain/kotlin/com/artemchep/keyguard/ui/theme/Theme.kt create mode 100644 common/src/jvmMain/kotlin/com/artemchep/keyguard/copy/Base32ServiceJvm.kt create mode 100644 common/src/jvmMain/kotlin/com/artemchep/keyguard/copy/Base64ServiceJvm.kt create mode 100644 common/src/jvmMain/kotlin/com/artemchep/keyguard/copy/DateFormatterAndroid.kt create mode 100644 common/src/jvmMain/kotlin/com/artemchep/keyguard/copy/GetAppBuildDateImpl.kt create mode 100644 common/src/jvmMain/kotlin/com/artemchep/keyguard/copy/GetPasswordStrengthJvm.kt create mode 100644 common/src/jvmMain/kotlin/com/artemchep/keyguard/copy/NumberFormatterJvm.kt create mode 100644 common/src/jvmMain/kotlin/com/artemchep/keyguard/copy/PasswordGeneratorDiceware.kt create mode 100644 common/src/jvmMain/kotlin/com/artemchep/keyguard/copy/SimilarityServiceJvm.kt create mode 100644 common/src/jvmMain/kotlin/com/artemchep/keyguard/copy/download/DownloadClientJvm.kt create mode 100644 common/src/jvmMain/kotlin/com/artemchep/keyguard/core/session/util/EncodeByCipher.kt create mode 100644 common/src/jvmMain/kotlin/com/artemchep/keyguard/crypto/CipherEncryptorImpl.kt create mode 100644 common/src/jvmMain/kotlin/com/artemchep/keyguard/crypto/CipherInputStream2.kt create mode 100644 common/src/jvmMain/kotlin/com/artemchep/keyguard/crypto/CipherInputStreamDecoder.kt create mode 100644 common/src/jvmMain/kotlin/com/artemchep/keyguard/crypto/CryptoGeneratorImpl.kt create mode 100644 common/src/jvmMain/kotlin/com/artemchep/keyguard/crypto/FileEncryptorImpl.kt create mode 100644 common/src/jvmMain/kotlin/com/artemchep/keyguard/crypto/util/hkdf.kt create mode 100644 common/src/jvmMain/kotlin/com/artemchep/keyguard/crypto/util/pbkdf2.kt create mode 100644 common/src/jvmMain/kotlin/com/artemchep/keyguard/crypto/util/sha1.kt create mode 100644 common/src/jvmMain/kotlin/com/artemchep/keyguard/crypto/util/sha256.kt create mode 100644 common/src/jvmMain/kotlin/com/artemchep/keyguard/di/GlobalModuleJvm.kt create mode 100644 common/src/jvmMain/kotlin/com/artemchep/keyguard/messagepack/MessagePackHubProtocol.kt create mode 100644 common/src/jvmMain/kotlin/com/artemchep/keyguard/messagepack/Utils.kt create mode 100644 common/src/jvmMain/kotlin/com/artemchep/keyguard/platform/LeCipher.kt create mode 100644 common/src/jvmMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/notification.kt create mode 100644 common/src/jvmMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/Notifications.kt create mode 100644 common/src/jvmMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/util/pbk.kt create mode 100644 common/src/jvmMain/kotlin/com/artemchep/keyguard/util/FileTraverse.kt create mode 100644 common/src/jvmMain/kotlin/com/artemchep/keyguard/util/Zxing.kt create mode 100644 crowdin.yml create mode 100644 desktopApp/build.gradle.kts create mode 100644 desktopApp/default.entitlements create mode 100644 desktopApp/icon.icns create mode 100644 desktopApp/icon.ico create mode 100644 desktopApp/icon.png create mode 100644 desktopApp/icon.sketch create mode 100644 desktopApp/src/jvmMain/kotlin/com/artemchep/keyguard/Main.kt create mode 100644 desktopApp/src/jvmMain/kotlin/com/artemchep/keyguard/desktop/util/NavigateToBrowser.kt create mode 100644 desktopApp/src/jvmMain/kotlin/com/artemchep/keyguard/desktop/util/NavigateToEmail.kt create mode 100644 desktopApp/src/jvmMain/kotlin/com/artemchep/keyguard/desktop/util/NavigateToFile.kt create mode 100644 desktopApp/src/jvmMain/kotlin/com/artemchep/keyguard/desktop/util/NavigateToFileInFileManager.kt create mode 100644 desktopApp/src/jvmMain/resources/flatpak/icon.desktop create mode 100644 desktopApp/src/jvmMain/resources/flatpak/manifest.yml create mode 100644 desktopApp/src/jvmMain/resources/icon.png create mode 100644 gradle.properties create mode 100644 gradle/libs.versions.toml create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 listing/google/af-rZA/store_description.html create mode 100644 listing/google/af-rZA/store_text.xml create mode 100644 listing/google/ar-rSA/store_description.html create mode 100644 listing/google/ar-rSA/store_text.xml create mode 100644 listing/google/base/store_description.html create mode 100644 listing/google/base/store_text.xml create mode 100644 listing/google/ca-rES/store_description.html create mode 100644 listing/google/ca-rES/store_text.xml create mode 100644 listing/google/cs-rCZ/store_description.html create mode 100644 listing/google/cs-rCZ/store_text.xml create mode 100644 listing/google/da-rDK/store_description.html create mode 100644 listing/google/da-rDK/store_text.xml create mode 100644 listing/google/de-rDE/store_description.html create mode 100644 listing/google/de-rDE/store_text.xml create mode 100644 listing/google/el-rGR/store_description.html create mode 100644 listing/google/el-rGR/store_text.xml create mode 100644 listing/google/en-rGB/store_description.html create mode 100644 listing/google/en-rGB/store_text.xml create mode 100644 listing/google/en-rUS/store_description.html create mode 100644 listing/google/en-rUS/store_text.xml create mode 100644 listing/google/es-rES/store_description.html create mode 100644 listing/google/es-rES/store_text.xml create mode 100644 listing/google/fi-rFI/store_description.html create mode 100644 listing/google/fi-rFI/store_text.xml create mode 100644 listing/google/fr-rFR/store_description.html create mode 100644 listing/google/fr-rFR/store_text.xml create mode 100644 listing/google/hu-rHU/store_description.html create mode 100644 listing/google/hu-rHU/store_text.xml create mode 100644 listing/google/it-rIT/store_description.html create mode 100644 listing/google/it-rIT/store_text.xml create mode 100644 listing/google/iw-rIL/store_description.html create mode 100644 listing/google/iw-rIL/store_text.xml create mode 100644 listing/google/ja-rJP/store_description.html create mode 100644 listing/google/ja-rJP/store_text.xml create mode 100644 listing/google/ko-rKR/store_description.html create mode 100644 listing/google/ko-rKR/store_text.xml create mode 100644 listing/google/nl-rNL/store_description.html create mode 100644 listing/google/nl-rNL/store_text.xml create mode 100644 listing/google/no-rNO/store_description.html create mode 100644 listing/google/no-rNO/store_text.xml create mode 100644 listing/google/pl-rPL/store_description.html create mode 100644 listing/google/pl-rPL/store_text.xml create mode 100644 listing/google/pt-rBR/store_description.html create mode 100644 listing/google/pt-rBR/store_text.xml create mode 100644 listing/google/pt-rPT/store_description.html create mode 100644 listing/google/pt-rPT/store_text.xml create mode 100644 listing/google/ro-rRO/store_description.html create mode 100644 listing/google/ro-rRO/store_text.xml create mode 100644 listing/google/ru-rRU/store_description.html create mode 100644 listing/google/ru-rRU/store_text.xml create mode 100644 listing/google/sr-rSP/store_description.html create mode 100644 listing/google/sr-rSP/store_text.xml create mode 100644 listing/google/sv-rSE/store_description.html create mode 100644 listing/google/sv-rSE/store_text.xml create mode 100644 listing/google/tr-rTR/store_description.html create mode 100644 listing/google/tr-rTR/store_text.xml create mode 100644 listing/google/uk-rUA/store_description.html create mode 100644 listing/google/uk-rUA/store_text.xml create mode 100644 listing/google/vi-rVN/store_description.html create mode 100644 listing/google/vi-rVN/store_text.xml create mode 100644 listing/google/zh-rCN/store_description.html create mode 100644 listing/google/zh-rCN/store_text.xml create mode 100644 listing/google/zh-rTW/store_description.html create mode 100644 listing/google/zh-rTW/store_text.xml create mode 100644 screenshots/AppMockUp Screenshots.zip create mode 100644 screenshots/Keyguard.mockup create mode 100644 screenshots/phone/Screenshot_20230928_233006.png create mode 100644 screenshots/phone/Screenshot_20230928_233040.png create mode 100644 screenshots/phone/Screenshot_20230928_233118.png create mode 100644 screenshots/phone/Screenshot_20230928_233159.png create mode 100644 screenshots/phone/Screenshot_20230928_233236.png create mode 100644 screenshots/phone/Screenshot_20230928_233342.png create mode 100644 screenshots/tablet10/Screenshot_20230103_121543.png create mode 100644 screenshots/tablet10/Screenshot_20230103_121606.png create mode 100644 screenshots/tablet10/Screenshot_20230103_121637.png create mode 100644 screenshots/tablet10/Screenshot_20230103_121846.png create mode 100644 screenshots/tablet7/Screenshot_20230103_122258.png create mode 100644 screenshots/tablet7/Screenshot_20230103_122315.png create mode 100644 screenshots/tablet7/Screenshot_20230103_122337.png create mode 100644 screenshots/tablet7/Screenshot_20230103_122421.png create mode 100644 settings.gradle diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..1402ed06 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,7 @@ +root = true + +[*.{kt,kts}] +ktlint_standard_no-unused-imports = disabled +ktlint_standard_no-wildcard-imports = disabled +ij_kotlin_allow_trailing_comma = true +ij_kotlin_allow_trailing_comma_on_call_site = true diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..ed9f1195 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,10 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" + - package-ecosystem: "gradle" + directory: "/" # Location of package manifests + schedule: + interval: "daily" diff --git a/.github/update_google_play_listing.py b/.github/update_google_play_listing.py new file mode 100644 index 00000000..8a1608ad --- /dev/null +++ b/.github/update_google_play_listing.py @@ -0,0 +1,134 @@ +import httplib2 +import os + +from bs4 import BeautifulSoup + +from googleapiclient.discovery import build +from googleapiclient.errors import ( + HttpError, +) + +from oauth2client.service_account import ServiceAccountCredentials + + +dir = "listing/google/" + + +def load_listing_full_description(folder): + file_path = dir + folder + "/store_description.html" + with open(file_path, 'r') as file: + data = file.read() + return { + 'listing_store_google_full_description': data, + } + + +def load_listing_texts(folder): + file_path = dir + folder + "/store_text.xml" + with open(file_path, 'r') as file: + data = file.read() + # Parse xml to dictionary + soup = BeautifulSoup(data, features="xml") + return {el["name"]: el.string for el in soup.find_all('string')} + + +""" +Load the listings from a folder to a human-accessible +dictionary object. +""" + + +def load_listing(folder): + a = load_listing_full_description(folder) + b = load_listing_texts(folder) + return a | b + + +package_name = "com.artemchep.keyguard" + +language_base = "base" +language_mapping = { + 'uk-UA': 'uk', + 'ca-ES': 'ca', + 'vi-VN': 'vi', +} + +listing_base = load_listing(language_base) +listings = {} + +for folder in os.listdir(dir): + listing = load_listing(folder) + # We check if this listing is different from the base + # listing. If so, we do not want to add it. + if listing == listing_base: + continue + # Fix language tag. + bcp_47_tag = folder.replace("-r", "-") + google_play_tag = language_mapping.get(bcp_47_tag, bcp_47_tag) + # Append. + listings[google_play_tag] = listing + +print("Loaded listings for languages:") +for language in listings.keys(): + print("- " + language) +print() + +credentials = ServiceAccountCredentials.from_json_keyfile_name( + "service-account-google.json", + scopes="https://www.googleapis.com/auth/androidpublisher", +) + +# Create an httplib2.Http object to handle our HTTP requests and authorize +# it with the Credentials. +http = httplib2.Http() +http = credentials.authorize(http) + +service = build("androidpublisher", "v3", http=http) + +print("Uploading:") +edit = service.edits().insert(packageName=package_name).execute() +edit_id = edit["id"] + +for language, listing in listings.items(): + listing_request = { + 'language': language, + 'title': listing["listing_store_google_app_name"], + 'shortDescription': listing["listing_store_google_short_description"], + 'fullDescription': listing["listing_store_google_full_description"], + } + listing_response = None + try: + # See: + # https://developers.google.com/android-publisher/api-ref/rest/v3/edits.listings/patch + listing_response = service.edits()\ + .listings()\ + .patch( + packageName=package_name, + editId=edit_id, + language=language, + body=listing_request, + ).execute() + except HttpError as e: + if e.status_code == 404: + # See: + # https://developers.google.com/android-publisher/api-ref/rest/v3/edits.listings/update + listing_response = service.edits()\ + .listings()\ + .update( + packageName=package_name, + editId=edit_id, + language=language, + body=listing_request, + ).execute() + else: + raise e + print("- " + language + " done!") + + +service.edits()\ + .commit( + packageName=package_name, + editId=edit_id, +).execute() + +print("Success!") diff --git a/.github/update_google_play_listing.requirements.txt b/.github/update_google_play_listing.requirements.txt new file mode 100644 index 00000000..3d55defa --- /dev/null +++ b/.github/update_google_play_listing.requirements.txt @@ -0,0 +1,4 @@ +google-api-python-client +oauth2client +beautifulsoup4 +lxml diff --git a/.github/update_gpm_passkeys_priv_apps.py b/.github/update_gpm_passkeys_priv_apps.py new file mode 100644 index 00000000..2e4c5877 --- /dev/null +++ b/.github/update_gpm_passkeys_priv_apps.py @@ -0,0 +1,14 @@ +import json +import requests + +URL_APPS = "https://www.gstatic.com/gpm-passkeys-privileged-apps/apps.json" + +response = requests.get( + URL_APPS, +) + +json_obj = response.json() +json_text = json.dumps(json_obj, indent=2) + +with open('common/src/commonMain/resources/MR/files/gpm_passkeys_privileged_apps.json', 'w') as f: + f.write(json_text) diff --git a/.github/update_gpm_passkeys_priv_apps.requirements.txt b/.github/update_gpm_passkeys_priv_apps.requirements.txt new file mode 100644 index 00000000..f2293605 --- /dev/null +++ b/.github/update_gpm_passkeys_priv_apps.requirements.txt @@ -0,0 +1 @@ +requests diff --git a/.github/update_justdeleteme.py b/.github/update_justdeleteme.py new file mode 100644 index 00000000..e90df874 --- /dev/null +++ b/.github/update_justdeleteme.py @@ -0,0 +1,35 @@ +import json +import requests + +URL_JDM = "https://raw.githubusercontent.com/jdm-contrib/jdm/master/_data/sites.json" + +response = requests.get( + URL_JDM, +) + +aggr = [] + +for site in response.json(): + entry = { + 'name': site['name'], + 'domains': site.get('domains', []), + } + + def append_if_not_empty(src_key, dst_key): + if src_key in site and site[src_key]: + entry[dst_key] = site[src_key] + + append_if_not_empty('url', 'url') + append_if_not_empty('difficulty', 'difficulty') + append_if_not_empty('notes', 'notes') + # for the extra-asshole websites + append_if_not_empty('email', 'email') + append_if_not_empty('email_subject', 'email_subject') + append_if_not_empty('email_body', 'email_body') + + aggr.append(entry) + +aggr_text = json.dumps(aggr, indent=2) + +with open('common/src/commonMain/resources/MR/files/justdeleteme.json', 'w') as f: + f.write(aggr_text) diff --git a/.github/update_justdeleteme.requirements.txt b/.github/update_justdeleteme.requirements.txt new file mode 100644 index 00000000..f2293605 --- /dev/null +++ b/.github/update_justdeleteme.requirements.txt @@ -0,0 +1 @@ +requests diff --git a/.github/update_justgetmydata.py b/.github/update_justgetmydata.py new file mode 100644 index 00000000..6938c7cd --- /dev/null +++ b/.github/update_justgetmydata.py @@ -0,0 +1,35 @@ +import json +import requests + +URL_JGMD = "https://raw.githubusercontent.com/daviddavo/jgmd/master/_data/sites.json" + +response = requests.get( + URL_JGMD, +) + +aggr = [] + +for site in response.json(): + entry = { + 'name': site['name'], + 'domains': site.get('domains', []), + } + + def append_if_not_empty(src_key, dst_key): + if src_key in site and site[src_key]: + entry[dst_key] = site[src_key] + + append_if_not_empty('url', 'url') + append_if_not_empty('difficulty', 'difficulty') + append_if_not_empty('notes', 'notes') + # for the extra-asshole websites + append_if_not_empty('email', 'email') + append_if_not_empty('email_subject', 'email_subject') + append_if_not_empty('email_body', 'email_body') + + aggr.append(entry) + +aggr_text = json.dumps(aggr, indent=2) + +with open('common/src/commonMain/resources/MR/files/justgetmydata.json', 'w') as f: + f.write(aggr_text) diff --git a/.github/update_justgetmydata.requirements.txt b/.github/update_justgetmydata.requirements.txt new file mode 100644 index 00000000..f2293605 --- /dev/null +++ b/.github/update_justgetmydata.requirements.txt @@ -0,0 +1 @@ +requests diff --git a/.github/update_passkeys.py b/.github/update_passkeys.py new file mode 100644 index 00000000..f96f2ac2 --- /dev/null +++ b/.github/update_passkeys.py @@ -0,0 +1,56 @@ +import json +import requests +import argparse + +parser = argparse.ArgumentParser("update_passkeys") +parser.add_argument("api_key", help="An API Key to access the https://passkeys.directory/ backend.", type=str) +args = parser.parse_args() + +URL_PASSKEYS = "https://apecbgwekadegtkzpwyh.supabase.co/rest/v1/sites" +URL_APIKEY = args.api_key + +response = requests.get( + URL_PASSKEYS, + params={ + 'select': '*', + 'or': '(passkey_signin.eq.true,passkey_mfa.eq.true)', + }, + headers={ + 'apikey': URL_APIKEY, + }, +) + +aggr = [] + +for site in response.json(): + features = [] + entry = { + 'name': site['name'], + 'domain': site['domain'], + 'features': features, + } + + def append_if_not_empty(src_key, dst_key): + if src_key in site and site[src_key]: + entry[dst_key] = site[src_key] + + append_if_not_empty('documentation_link', 'documentation') + append_if_not_empty('setup_link', 'setup') + append_if_not_empty('notes', 'notes') + + # convert features to a list + if site['passkey_mfa']: + features.append('mfa') + if site['passkey_signin']: + features.append('signin') + + aggr.append(entry) + +# Ensure the file is sorted for better +# git diff logs. +aggr.sort(key=lambda x: x['domain']) + +aggr_text = json.dumps(aggr, indent=2) + +with open('common/src/commonMain/resources/MR/files/passkeys.json', 'w') as f: + f.write(aggr_text) diff --git a/.github/update_passkeys.requirements.txt b/.github/update_passkeys.requirements.txt new file mode 100644 index 00000000..f2293605 --- /dev/null +++ b/.github/update_passkeys.requirements.txt @@ -0,0 +1 @@ +requests diff --git a/.github/update_twofactorauth.py b/.github/update_twofactorauth.py new file mode 100644 index 00000000..b6a35903 --- /dev/null +++ b/.github/update_twofactorauth.py @@ -0,0 +1,49 @@ +import re +import json + +from io import BytesIO +from zipfile import ZipFile +from urllib.request import urlopen + +URL_2FA = "https://github.com/2factorauth/twofactorauth/archive/refs/heads/master.zip" + +# Load the zip file without saving it into a file. +response = urlopen(URL_2FA) +archive = ZipFile(BytesIO(response.read())) + +aggr = [] + +# Load each of the json files and save into +# a single json array. +for file in archive.namelist(): + if not re.match(r".+/entries/.+\.json", file): + continue + json_text = archive.read(file).decode('utf-8') + json_obj = json.loads(json_text) + # Flatten the structure. + json_obj_root_key = list(json_obj.keys())[0] + json_obj = json_obj[json_obj_root_key] + # Add name + if not "name" in json_obj: + json_obj["name"] = json_obj_root_key + # Delete unused attributes. + if not "tfa" in json_obj: + continue + if "img" in json_obj: + del json_obj["img"] + if "recovery" in json_obj: + del json_obj["recovery"] + if "keywords" in json_obj: + del json_obj["keywords"] + if "categories" in json_obj: + del json_obj["categories"] + if "contact" in json_obj: + del json_obj["contact"] + if "regions" in json_obj: + del json_obj["regions"] + aggr.append(json_obj) + +aggr_text = json.dumps(aggr, indent=2) + +with open('common/src/commonMain/resources/MR/files/tfa.json', 'w') as f: + f.write(aggr_text) diff --git a/.github/workflows/check_gradle_wrapper.yml b/.github/workflows/check_gradle_wrapper.yml new file mode 100644 index 00000000..c28f646a --- /dev/null +++ b/.github/workflows/check_gradle_wrapper.yml @@ -0,0 +1,25 @@ +name: "✔️ Check Gradle wrapper" + +on: + workflow_dispatch: + push: + branches: + - master + paths: + - 'gradlew*' + - 'gradle/wrapper/**' + pull_request: + branches: + - master + paths: + - 'gradlew*' + - 'gradle/wrapper/**' + +jobs: + check-gradle-wrapper: + name: Check Gradle wrapper + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: "Check Gradle wrapper" + uses: gradle/wrapper-validation-action@v1 diff --git a/.github/workflows/check_licenses.yml b/.github/workflows/check_licenses.yml new file mode 100644 index 00000000..8883bd3d --- /dev/null +++ b/.github/workflows/check_licenses.yml @@ -0,0 +1,36 @@ +name: "✔️ Check Licenses" + +on: + workflow_dispatch: + push: + branches: + - master + paths: + - '**/*.gradle*' + - 'gradle/**' + pull_request: + branches: + - master + paths: + - '**/*.gradle*' + - 'gradle/**' + +jobs: + check-licenses: + name: Check Licenses + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: "Set up JDK 17" + id: setup-java + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '17' + cache: 'gradle' + - name: "Check licenses" + uses: eskatos/gradle-command-action@v2 + env: + JAVA_HOME: ${{ steps.setup-java.outputs.path }} + with: + arguments: licensee diff --git a/.github/workflows/new_daily_tag.yaml b/.github/workflows/new_daily_tag.yaml new file mode 100644 index 00000000..947eba9d --- /dev/null +++ b/.github/workflows/new_daily_tag.yaml @@ -0,0 +1,33 @@ +name: "🤖 Daily tag" + +on: + workflow_dispatch: + schedule: + - cron: '0 0 * * *' + +jobs: + new-tag: + name: New tag + runs-on: ubuntu-latest + steps: + - name: "Checkout" + uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ secrets.PERSONAL_TOKEN }} + - name: "Create a new daily tag" + run: | + tag=d"$(date -u +'%Y%m%d')" + echo "Name of a new tag is $tag" + tag_commit=$(git rev-list -n 1 $(git describe --tags --abbrev=0)) + echo "$tag -> $tag_commit" + master_commit=$(git rev-list -n 1 master) + echo "master -> $master_commit" + # Create a new tag only if the latest tag does not + # point to the same commit as the master branch. + if [ "$tag_commit" != "$master_commit" ]; then + git config user.email github-actions@github.com + git config user.name "${{ github.actor }}" + git tag $tag + git push origin $tag + fi diff --git a/.github/workflows/new_daily_tag_play_store_internal_track.yaml b/.github/workflows/new_daily_tag_play_store_internal_track.yaml new file mode 100644 index 00000000..c28c53d6 --- /dev/null +++ b/.github/workflows/new_daily_tag_play_store_internal_track.yaml @@ -0,0 +1,53 @@ +name: "🤖 Daily tag -> Play Store internal track" + +on: + push: + tags: + - 'd*' + +jobs: + build-play-store-internal: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: "Set up JDK 17" + id: setup-java + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '17' + cache: 'gradle' + - id: vars + run: | + echo ::set-output name=tag::${GITHUB_REF:11} + - name: "Prepare env" + run: | + echo ${{ secrets.KEYSTORE_B64 }} | base64 -d | zcat >> androidApp/keyguard-release.keystore + echo ${{ secrets.KEYSTORE_PROPS_B64 }} | base64 -d | zcat >> androidApp/keyguard-release.properties + echo ${{ secrets.GOOGLE_SERVICES }} | base64 -d | zcat >> androidApp/google-services.json + echo ${{ secrets.SERVICE_ACCOUNT_B64 }} | base64 -d | zcat >> service-account-google.json + echo "" >> gradle.properties + echo versionDate=${{ steps.vars.outputs.tag }} >> gradle.properties + echo buildkonfig.flavor=release >> gradle.properties + - name: "Check and Build licenses" + uses: eskatos/gradle-command-action@v2 + env: + JAVA_HOME: ${{ steps.setup-java.outputs.path }} + with: + arguments: :androidApp:licenseeAndroidPlayStoreRelease + - name: "Move licenses" + run: | + mv -f androidApp/build/reports/licensee/androidPlayStoreRelease/artifacts.json common/src/commonMain/resources/MR/files/licenses.json + - name: "Build release bundle" + uses: eskatos/gradle-command-action@v2 + env: + JAVA_HOME: ${{ steps.setup-java.outputs.path }} + with: + arguments: :androidApp:bundlePlayStoreRelease + - name: "Distribute on Play Store" + uses: r0adkll/upload-google-play@v1.1.2 + with: + serviceAccountJson: service-account-google.json + packageName: com.artemchep.keyguard + releaseFiles: androidApp/build/outputs/bundle/playStoreRelease/androidApp-playStore-release.aab + track: internal diff --git a/.github/workflows/new_tag_release.yaml b/.github/workflows/new_tag_release.yaml new file mode 100644 index 00000000..b4a668ff --- /dev/null +++ b/.github/workflows/new_tag_release.yaml @@ -0,0 +1,232 @@ +name: "🎉 Release tag -> GitHub release" + +on: + push: + tags: + - 'r*' + +jobs: + build-macos-app: + runs-on: macos-12 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + steps: + - name: "Checkout" + uses: actions/checkout@v4 + with: + lfs: true + submodules: recursive + - name: "Set up JDK 17" + id: setup-java + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '17' + cache: 'gradle' + - name: "Decode signing certificate" + run: | + echo ${{ secrets.CERT_B64 }} | base64 -d | zcat > desktopApp/macos-dev.cer + - name: "Import signing certificate" + uses: apple-actions/import-codesign-certs@v2 + with: + p12-filepath: desktopApp/macos-dev.cer + p12-password: ${{ secrets.CERT_PASSWD }} + - name: "Setup build env" + run: | + echo "" >> gradle.properties + echo buildkonfig.flavor=release >> gradle.properties + - name: "Setup signing config" + run: | + echo "" >> gradle.properties + echo "cert_identity=${{ secrets.CERT_IDENTITY }}" >> gradle.properties + - name: "Setup notarization config" + run: | + echo "" >> gradle.properties + echo "notarization_apple_id=${{ secrets.NOTARIZATION_APPLE_ID }}" >> gradle.properties + echo "notarization_password=${{ secrets.NOTARIZATION_PASSWD }}" >> gradle.properties + echo "notarization_asc_provider=${{ secrets.NOTARIZATION_ASC_PROVIDER }}" >> gradle.properties + - name: "./gradlew :desktopApp:packageDmg :desktopApp:notarizeDmg" + uses: eskatos/gradle-command-action@v2 + env: + JAVA_HOME: ${{ steps.setup-java.outputs.path }} + with: + arguments: "-PexcludeAppImage=true :desktopApp:packageDmg :desktopApp:notarizeDmg" + - name: 'Upload logs' + uses: actions/upload-artifact@v4 + if: always() + with: + name: logs-mac + path: desktopApp/build/compose/logs/**/*.txt + retention-days: 30 + - name: 'Upload .dmg' + uses: actions/upload-artifact@v4 + with: + name: app-mac + path: desktopApp/build/compose/binaries/main/dmg/*.dmg + retention-days: 1 + build-linux-flatpak-app: + runs-on: ubuntu-latest + container: + image: bilelmoussaoui/flatpak-github-actions:gnome-45 + options: --privileged + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + steps: + - name: "Checkout" + uses: actions/checkout@v4 + with: + lfs: true + submodules: recursive + - name: "Set up JDK 17" + id: setup-java + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '17' + cache: 'gradle' + - name: "Setup build env" + run: | + echo "" >> gradle.properties + echo buildkonfig.flavor=release >> gradle.properties + - name: "./gradlew :desktopApp:bundleFlatpak" + uses: eskatos/gradle-command-action@v2 + env: + JAVA_HOME: ${{ steps.setup-java.outputs.path }} + with: + arguments: ":desktopApp:bundleFlatpak" + - name: 'Upload .flatpak' + uses: actions/upload-artifact@v4 + with: + name: app-linux-flatpak + path: desktopApp/build/flatpak/Keyguard.flatpak + retention-days: 1 + build-windows-app: + runs-on: windows-latest + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + steps: + - name: "Checkout" + uses: actions/checkout@v4 + with: + lfs: true + submodules: recursive + - name: "Set up JDK 17" + id: setup-java + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: | + 11 + 17 + cache: 'gradle' + - name: "Setup build env" + run: | + echo "" >> gradle.properties + echo buildkonfig.flavor=release >> gradle.properties + - name: "./gradlew :desktopApp:packageMsi" + uses: eskatos/gradle-command-action@v2 + env: + JAVA_HOME: ${{ steps.setup-java.outputs.path }} + with: + arguments: ":desktopApp:packageMsi" + - name: 'Upload .msi' + uses: actions/upload-artifact@v4 + with: + name: app-windows + path: desktopApp/build/compose/binaries/main/msi/*.msi + retention-days: 1 + build-android-app: + runs-on: ubuntu-latest + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + steps: + - uses: actions/checkout@v4 + - name: "Set up JDK 17" + id: setup-java + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '17' + cache: 'gradle' + - id: vars + run: | + echo ::set-output name=tag::${GITHUB_REF:11} + - name: "Prepare env" + run: | + echo ${{ secrets.KEYSTORE_B64 }} | base64 -d | zcat >> androidApp/keyguard-release.keystore + echo ${{ secrets.KEYSTORE_PROPS_B64 }} | base64 -d | zcat >> androidApp/keyguard-release.properties + echo ${{ secrets.GOOGLE_SERVICES }} | base64 -d | zcat >> androidApp/google-services.json + echo "" >> gradle.properties + echo versionDate=${{ steps.vars.outputs.tag }} >> gradle.properties + echo buildkonfig.flavor=release >> gradle.properties + - name: "Check and Build licenses" + uses: eskatos/gradle-command-action@v2 + env: + JAVA_HOME: ${{ steps.setup-java.outputs.path }} + with: + arguments: :androidApp:licenseeAndroidNoneRelease + - name: "Move licenses" + run: | + mv -f androidApp/build/reports/licensee/androidNoneRelease/artifacts.json common/src/commonMain/resources/MR/files/licenses.json + - name: "./gradlew :androidApp:assembleNoneRelease" + uses: eskatos/gradle-command-action@v2 + env: + JAVA_HOME: ${{ steps.setup-java.outputs.path }} + with: + arguments: :androidApp:assembleNoneRelease + - name: 'Upload .apk' + uses: actions/upload-artifact@v4 + with: + name: app-android + path: | + androidApp/build/outputs/apk/**/*.apk + androidApp/build/outputs/mapping/**/mapping.txt + retention-days: 1 + dist: + runs-on: ubuntu-latest + needs: + - build-android-app + - build-linux-flatpak-app + - build-macos-app + - build-windows-app + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + steps: + - name: "Checkout" + uses: actions/checkout@v4 + with: + submodules: recursive + - name: "Generate changelog" + id: changelog + uses: metcalfc/changelog-generator@v4.2.0 + with: + myToken: ${{ secrets.GITHUB_TOKEN }} + - name: "Download Mac app" + uses: actions/download-artifact@v4 + with: + name: app-mac + path: artifacts + - name: "Download Linux app" + uses: actions/download-artifact@v4 + with: + name: app-linux-flatpak + path: artifacts + - name: "Download Windows app" + uses: actions/download-artifact@v4 + with: + name: app-windows + path: artifacts + - name: "Download Android app" + uses: actions/download-artifact@v4 + with: + name: app-android + path: artifacts + - name: "Create release" + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + name: Release ${{ github.ref }} + body: ${{ steps.changelog.outputs.changelog }} + token: ${{ secrets.GITHUB_TOKEN }} + files: | + artifacts/* diff --git a/.github/workflows/update_gpm_passkeys_priv_apps.yml b/.github/workflows/update_gpm_passkeys_priv_apps.yml new file mode 100644 index 00000000..093f3841 --- /dev/null +++ b/.github/workflows/update_gpm_passkeys_priv_apps.yml @@ -0,0 +1,50 @@ +name: "🕒 Synchronize GPM Credential Privileged Apps" + +on: + workflow_dispatch: + push: + branches: + - master + paths: + # Configuration. + - '.github/update_gpm_passkeys_priv_apps.py' + - '.github/update_gpm_passkeys_priv_apps.requirements.txt' + schedule: + - cron: '0 0 * * 5' + +jobs: + sync-gpm-passkeys-priv-apps: + name: Synchronize GPM Credential Privileged Apps + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - run: pip install -r .github/update_gpm_passkeys_priv_apps.requirements.txt + - name: "Update library" + run: | + python .github/update_gpm_passkeys_priv_apps.py + - name: "Check if any changes" + id: check-changes + run: | + has_changes=$(if [ -n "$(git status --porcelain)" ]; then echo "true"; else echo "false"; fi) + echo "$has_changes" + echo "{HAS_CHANGES}={$has_changes}" >> "$GITHUB_OUTPUT" + - name: Commit and push changes + uses: devops-infra/action-commit-push@v0.9.2 + if: ${{ startsWith(steps.check-changes.outputs.HAS_CHANGES, 'true') }} + with: + github_token: "${{ secrets.PERSONAL_TOKEN }}" + add_timestamp: false + commit_prefix: "[AUTO]" + commit_message: "Update GPM Credential Privileged Apps JSON" + force: true + target_branch: gpmpasskeysprivapps_action + - name: Create pull request + uses: devops-infra/action-pull-request@v0.5.5 + if: ${{ startsWith(steps.check-changes.outputs.HAS_CHANGES, 'true') }} + with: + github_token: "${{ secrets.PERSONAL_TOKEN }}" + source_branch: gpmpasskeysprivapps_action + target_branch: master + assignee: AChep + label: "robot,enhancement" + title: New GPM Credential Privileged Apps by GitHub Action diff --git a/.github/workflows/update_justdeleteme.yml b/.github/workflows/update_justdeleteme.yml new file mode 100644 index 00000000..16cf058c --- /dev/null +++ b/.github/workflows/update_justdeleteme.yml @@ -0,0 +1,50 @@ +name: "🕒 Synchronize Just delete me" + +on: + workflow_dispatch: + push: + branches: + - master + paths: + # Configuration. + - '.github/update_justdeleteme.py' + - '.github/update_justdeleteme.requirements.txt' + schedule: + - cron: '0 0 * * 5' + +jobs: + sync-passkeys: + name: Synchronize Just delete me + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - run: pip install -r .github/update_justdeleteme.requirements.txt + - name: "Update library" + run: | + python .github/update_justdeleteme.py + - name: "Check if any changes" + id: check-changes + run: | + has_changes=$(if [ -n "$(git status --porcelain)" ]; then echo "true"; else echo "false"; fi) + echo "$has_changes" + echo "{HAS_CHANGES}={$has_changes}" >> "$GITHUB_OUTPUT" + - name: Commit and push changes + uses: devops-infra/action-commit-push@v0.9.2 + if: ${{ startsWith(steps.check-changes.outputs.HAS_CHANGES, 'true') }} + with: + github_token: "${{ secrets.PERSONAL_TOKEN }}" + add_timestamp: false + commit_prefix: "[AUTO]" + commit_message: "Update justdeleteme library" + force: true + target_branch: justdeleteme_action + - name: Create pull request + uses: devops-infra/action-pull-request@v0.5.5 + if: ${{ startsWith(steps.check-changes.outputs.HAS_CHANGES, 'true') }} + with: + github_token: "${{ secrets.PERSONAL_TOKEN }}" + source_branch: justdeleteme_action + target_branch: master + assignee: AChep + label: "robot,enhancement" + title: New Just delete me by GitHub Action diff --git a/.github/workflows/update_justgetmydata.yml b/.github/workflows/update_justgetmydata.yml new file mode 100644 index 00000000..1d1ce4f2 --- /dev/null +++ b/.github/workflows/update_justgetmydata.yml @@ -0,0 +1,50 @@ +name: "🕒 Synchronize Just get my data" + +on: + workflow_dispatch: + push: + branches: + - master + paths: + # Configuration. + - '.github/update_justgetmydata.py' + - '.github/update_justgetmydata.requirements.txt' + schedule: + - cron: '0 0 * * 5' + +jobs: + sync-passkeys: + name: Synchronize Just get my data + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - run: pip install -r .github/update_justgetmydata.requirements.txt + - name: "Update library" + run: | + python .github/update_justgetmydata.py + - name: "Check if any changes" + id: check-changes + run: | + has_changes=$(if [ -n "$(git status --porcelain)" ]; then echo "true"; else echo "false"; fi) + echo "$has_changes" + echo "{HAS_CHANGES}={$has_changes}" >> "$GITHUB_OUTPUT" + - name: Commit and push changes + uses: devops-infra/action-commit-push@v0.9.2 + if: ${{ startsWith(steps.check-changes.outputs.HAS_CHANGES, 'true') }} + with: + github_token: "${{ secrets.PERSONAL_TOKEN }}" + add_timestamp: false + commit_prefix: "[AUTO]" + commit_message: "Update justgetmydata library" + force: true + target_branch: justgetmydata_action + - name: Create pull request + uses: devops-infra/action-pull-request@v0.5.5 + if: ${{ startsWith(steps.check-changes.outputs.HAS_CHANGES, 'true') }} + with: + github_token: "${{ secrets.PERSONAL_TOKEN }}" + source_branch: justgetmydata_action + target_branch: master + assignee: AChep + label: "robot,enhancement" + title: New Just get my data by GitHub Action diff --git a/.github/workflows/update_listing_google.yml b/.github/workflows/update_listing_google.yml new file mode 100644 index 00000000..c722846a --- /dev/null +++ b/.github/workflows/update_listing_google.yml @@ -0,0 +1,26 @@ +name: "🌐 Upload Google Play Store listing" + +on: + workflow_dispatch: + push: + branches: + - master + paths: + - 'listing/google/**' + # Configuration. + - '.github/update_google_play_listing.py' + - '.github/update_google_play_listing.requirements.py' + +jobs: + sync-google-listing: + name: Upload Google Play Store listing + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - run: pip install -r .github/update_google_play_listing.requirements.txt + - name: "Setup secrets" + run: | + echo ${{ secrets.SERVICE_ACCOUNT_B64 }} | base64 -d | zcat >> service-account-google.json + - name: "Update listing" + run: | + python .github/update_google_play_listing.py diff --git a/.github/workflows/update_localization.yml b/.github/workflows/update_localization.yml new file mode 100644 index 00000000..685a9a31 --- /dev/null +++ b/.github/workflows/update_localization.yml @@ -0,0 +1,35 @@ +name: "🌐 Synchronize Localization" + +on: + workflow_dispatch: + push: + branches: + - master + paths: + - 'common/src/commonMain/resources/MR/base/*.xml' + - 'listing/google/base/*.html' + - 'listing/google/base/*.xml' + # Configuration. + - 'crowdin.yml' + +jobs: + sync-localization: + name: Synchronize Crowdin Translations + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: crowdin/github-action@v1 + with: + upload_sources: true + # We only want to upload the sources, nothing else is + # supported. + upload_translations: false + download_translations: true + create_pull_request: true + pull_request_labels: 'robot,enhancement' + pull_request_assignees: 'AChep' + config: 'crowdin.yml' + env: + GITHUB_TOKEN: ${{ secrets.PERSONAL_TOKEN }} + CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} + CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} diff --git a/.github/workflows/update_passkeys.yml b/.github/workflows/update_passkeys.yml new file mode 100644 index 00000000..cd34cb65 --- /dev/null +++ b/.github/workflows/update_passkeys.yml @@ -0,0 +1,50 @@ +name: "🕒 Synchronize Passkeys" + +on: + workflow_dispatch: + push: + branches: + - master + paths: + # Configuration. + - '.github/update_passkeys.py' + - '.github/update_passkeys.requirements.txt' + schedule: + - cron: '0 0 * * 5' + +jobs: + sync-passkeys: + name: Synchronize Passkeys + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - run: pip install -r .github/update_passkeys.requirements.txt + - name: "Update library" + run: | + python .github/update_passkeys.py "${{ secrets.PASSKEYS_API_KEY }}" + - name: "Check if any changes" + id: check-changes + run: | + has_changes=$(if [ -n "$(git status --porcelain)" ]; then echo "true"; else echo "false"; fi) + echo "$has_changes" + echo "{HAS_CHANGES}={$has_changes}" >> "$GITHUB_OUTPUT" + - name: Commit and push changes + uses: devops-infra/action-commit-push@v0.9.2 + if: ${{ startsWith(steps.check-changes.outputs.HAS_CHANGES, 'true') }} + with: + github_token: "${{ secrets.PERSONAL_TOKEN }}" + add_timestamp: false + commit_prefix: "[AUTO]" + commit_message: "Update passkeys library" + force: true + target_branch: passkeys_action + - name: Create pull request + uses: devops-infra/action-pull-request@v0.5.5 + if: ${{ startsWith(steps.check-changes.outputs.HAS_CHANGES, 'true') }} + with: + github_token: "${{ secrets.PERSONAL_TOKEN }}" + source_branch: passkeys_action + target_branch: master + assignee: AChep + label: "robot,enhancement" + title: New Passkeys by GitHub Action diff --git a/.github/workflows/update_tld.yml b/.github/workflows/update_tld.yml new file mode 100644 index 00000000..94495881 --- /dev/null +++ b/.github/workflows/update_tld.yml @@ -0,0 +1,43 @@ +name: "🕒 Synchronize TLD public suffix list" + +on: + workflow_dispatch: + schedule: + - cron: '0 0 * * 5' + +jobs: + sync-tld: + name: Synchronize TLD public suffix list + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: "Update data" + run: | + wget https://publicsuffix.org/list/public_suffix_list.dat + mv -f public_suffix_list.dat common/src/commonMain/resources/MR/files/public_suffix_list.txt + - name: "Check if any changes" + id: check-changes + run: | + has_changes=$(if [ -n "$(git status --porcelain)" ]; then echo "true"; else echo "false"; fi) + echo "$has_changes" + echo "{HAS_CHANGES}={$has_changes}" >> "$GITHUB_OUTPUT" + - name: Commit and push changes + uses: devops-infra/action-commit-push@v0.9.2 + if: ${{ startsWith(steps.check-changes.outputs.HAS_CHANGES, 'true') }} + with: + github_token: "${{ secrets.PERSONAL_TOKEN }}" + add_timestamp: false + commit_prefix: "[AUTO]" + commit_message: "Update Public suffix list" + force: true + target_branch: tld_public_suffix_list_action + - name: Create pull request + uses: devops-infra/action-pull-request@v0.5.5 + if: ${{ startsWith(steps.check-changes.outputs.HAS_CHANGES, 'true') }} + with: + github_token: "${{ secrets.PERSONAL_TOKEN }}" + source_branch: tld_public_suffix_list_action + target_branch: master + assignee: AChep + label: "robot,enhancement" + title: New Public suffix list by GitHub Action diff --git a/.github/workflows/update_twofactorauth.yml b/.github/workflows/update_twofactorauth.yml new file mode 100644 index 00000000..20a6821b --- /dev/null +++ b/.github/workflows/update_twofactorauth.yml @@ -0,0 +1,48 @@ +name: "🕒 Synchronize Two-factor auth" + +on: + workflow_dispatch: + push: + branches: + - master + paths: + # Configuration. + - '.github/update_twofactorauth.py' + schedule: + - cron: '0 0 * * 5' + +jobs: + sync-2fa: + name: Synchronize Two-factor authentication + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: "Update library" + run: | + python .github/update_twofactorauth.py + - name: "Check if any changes" + id: check-changes + run: | + has_changes=$(if [ -n "$(git status --porcelain)" ]; then echo "true"; else echo "false"; fi) + echo "$has_changes" + echo "{HAS_CHANGES}={$has_changes}" >> "$GITHUB_OUTPUT" + - name: Commit and push changes + uses: devops-infra/action-commit-push@v0.9.2 + if: ${{ startsWith(steps.check-changes.outputs.HAS_CHANGES, 'true') }} + with: + github_token: "${{ secrets.PERSONAL_TOKEN }}" + add_timestamp: false + commit_prefix: "[AUTO]" + commit_message: "Update two-factor auth library" + force: true + target_branch: tfa_2factorauth_action + - name: Create pull request + uses: devops-infra/action-pull-request@v0.5.5 + if: ${{ startsWith(steps.check-changes.outputs.HAS_CHANGES, 'true') }} + with: + github_token: "${{ secrets.PERSONAL_TOKEN }}" + source_branch: tfa_2factorauth_action + target_branch: master + assignee: AChep + label: "robot,enhancement" + title: New Two-factor auth by GitHub Action diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..1419e03c --- /dev/null +++ b/.gitignore @@ -0,0 +1,61 @@ +*.DS_Store + +# Built application files +*.apk +*.ap_ + +# Files for the ART/Dalvik VM +*.dex + +# Java class files +*.class + +# Generated files +bin/ +gen/ +out/ + +# Gradle files +.gradle/ +build/ + +# Local configuration file (sdk path, etc) +local.properties + +# Proguard folder generated by Eclipse +proguard/ + +# Log Files +*.log + +# Android Studio Navigation editor temp files +.navigation/ + +# Android Studio captures folder +captures/ + +# IntelliJ +*.iml +.idea/ + +# Keystore files +# Uncomment the following line if you do not want to check your keystore files in. +#*.jks + +# External native build folder generated in Android Studio 2.2 and later +.externalNativeBuild + +# Google Services (e.g. APIs or Firebase) +google-services.json + +# Freeline +freeline.py +freeline/ +freeline_project_description.json + +# fastlane +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots +fastlane/test_output +fastlane/readme.md \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..66f72e40 --- /dev/null +++ b/LICENSE @@ -0,0 +1 @@ +All Rights Reserved diff --git a/README.md b/README.md index 2565cdbc..e787232b 100644 --- a/README.md +++ b/README.md @@ -14,8 +14,19 @@ _Can be used with any Bitwarden® installation. This product is not associated w #### Highlights: - a beautiful rich **Material You** user interface; - a **powerful** and **fast search**; -- a watchtower that finds items with **Pwned passwords**, **Vulnerable accounts**, **Reused passwords**, **Inactive two factor authentication**, **Inactive passkeys**, **Unsecure Websites** as well as **Duplicate**, **Incomplete** and **Expiring** items, and other; +- a support for creating & using **passkeys** - a modern alternative to passwords. +- a watchtower that finds items with **Pwned passwords**, **Vulnerable accounts**, **Reused passwords**, **Inactive two factor authentication**, **Inactive passkeys**, **Unsecure Websites** as well as **Duplicate**, **Incomplete** and **Expiring** items, and other; - **multi-account support** with secure login and two-factor authentication support; - add items, modify, and view your vault **offline**. - beautiful **Light**/**Dark theme**; - and much more! + +#### Looks: +| | | | +| :----: | :----: | :----: | +| ![1](https://github.com/AChep/keyguard-app/blob/master/screenshots/phone/Screenshot_20230928_233006.png) | ![2](https://github.com/AChep/keyguard-app/blob/master/screenshots/phone/Screenshot_20230928_233040.png) | ![3](https://github.com/AChep/keyguard-app/blob/master/screenshots/phone/Screenshot_20230928_233118.png) | +| ![4](https://github.com/AChep/keyguard-app/blob/master/screenshots/phone/Screenshot_20230928_233159.png) | ![5](https://github.com/AChep/keyguard-app/blob/master/screenshots/phone/Screenshot_20230928_233236.png) | ![6](https://github.com/AChep/keyguard-app/blob/master/screenshots/phone/Screenshot_20230928_233342.png) | + +## License: + +The source code is available for **personal use** only. diff --git a/androidApp/.gitignore b/androidApp/.gitignore new file mode 100644 index 00000000..ae2e6b2c --- /dev/null +++ b/androidApp/.gitignore @@ -0,0 +1,7 @@ +/build + +# Ignore production keys from being +# include into the source system. +keyguard-release* +# Ignore google-services.json +google-services.json diff --git a/androidApp/benchmark-rules.pro b/androidApp/benchmark-rules.pro new file mode 100644 index 00000000..c45fa5fd --- /dev/null +++ b/androidApp/benchmark-rules.pro @@ -0,0 +1,2 @@ +# Disables obfuscation for benchmark builds. +-dontobfuscate diff --git a/androidApp/build.gradle.kts b/androidApp/build.gradle.kts new file mode 100644 index 00000000..436a737b --- /dev/null +++ b/androidApp/build.gradle.kts @@ -0,0 +1,158 @@ +import java.io.FileInputStream +import java.util.* + +plugins { + alias(libs.plugins.android.application) + alias(libs.plugins.kotlin.android) + alias(libs.plugins.kotlin.kapt) + alias(libs.plugins.kotlin.plugin.parcelize) + alias(libs.plugins.kotlin.plugin.serialization) + alias(libs.plugins.compose) + alias(libs.plugins.ksp) + alias(libs.plugins.ktlint) + alias(libs.plugins.google.services) + alias(libs.plugins.crashlytics) + alias(libs.plugins.baseline.profile) +} + +fun loadProps(fileName: String): Properties { + val props = Properties() + val file = file(fileName) + if (file.exists()) { + var stream: FileInputStream? = null + try { + stream = file.inputStream() + props.load(stream) + } finally { + stream?.close() + } + } + return props +} + +val versionInfo = createVersionInfo( + marketingVersion = libs.versions.appVersionName.get(), + logicalVersion = libs.versions.appVersionCode.get().toInt(), +) + +val qaSigningProps = loadProps("keyguard-qa.properties") +val releaseSigningProps = loadProps("keyguard-release.properties") + +android { + compileSdk = libs.versions.androidCompileSdk.get().toInt() + namespace = "com.artemchep.keyguard" + + defaultConfig { + applicationId = "com.artemchep.keyguard" + minSdk = libs.versions.androidMinSdk.get().toInt() + targetSdk = libs.versions.androidTargetSdk.get().toInt() + + versionCode = versionInfo.logicalVersion + versionName = versionInfo.marketingVersion + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + vectorDrawables { + useSupportLibrary = true + } + + kotlinOptions { + freeCompilerArgs += listOf( + "-opt-in=androidx.compose.material.ExperimentalMaterialApi", + ) + } + } + + compileOptions { + isCoreLibraryDesugaringEnabled = true + } + + androidResources { + @Suppress("UnstableApiUsage") + generateLocaleConfig = true + } + + bundle { + language { + enableSplit = false + } + } + + // previous-compilation-data.bin is Gradle's internal machinery for the incremental compilation + // that seemed to be packed into the resulting artifact because the lib is depending directly + // on the compilation task's output for JPMS/Multi-Release JAR support. + // + // > A failure occurred while executing com.android.build.gradle.internal.tasks.MergeJavaResWorkAction + // > 2 files found with path 'META-INF/versions/9/previous-compilation-data.bin' from inputs: + // - /home/runner/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-datetime-jvm/0.4.1/684eec210b21e2da7382a4aa85e56fb7b71f39b3/kotlinx-datetime-jvm-0.4.1.jar + // - /home/runner/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/atomicfu-jvm/0.22.0/c6a128a44ba52a18265e5ec816130cd341d80792/atomicfu-jvm-0.22.0.jar + packagingOptions { + resources.excludes.add("META-INF/versions/9/previous-compilation-data.bin") + } + + buildFeatures { + buildConfig = true + } + + signingConfigs { + maybeCreate("debug").apply { + keyAlias = qaSigningProps.getProperty("key_alias") + keyPassword = qaSigningProps.getProperty("password_store") + storeFile = file("keyguard-qa.keystore") + storePassword = qaSigningProps.getProperty("password_key") + } + maybeCreate("release").apply { + keyAlias = releaseSigningProps.getProperty("key_alias") + keyPassword = releaseSigningProps.getProperty("password_store") + storeFile = file("keyguard-release.keystore") + storePassword = releaseSigningProps.getProperty("password_key") + } + } + + buildTypes { + debug { + applicationIdSuffix = ".debug" + } + release { + isMinifyEnabled = true + signingConfig = signingConfigs.getByName("release") + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro", + ) + } + maybeCreate("benchmark").apply { + initWith(getByName("release")) + signingConfig = signingConfigs.getByName("debug") + // Selects release buildType if the 'benchmark' + // buildType not available in other modules. + matchingFallbacks += "release" + // Do not obfuscate + proguardFiles( + "benchmark-rules.pro", + ) + } + } + + val accountManagementDimension = "accountManagement" + flavorDimensions += accountManagementDimension + productFlavors { + maybeCreate("playStore").apply { + dimension = accountManagementDimension + buildConfigField("boolean", "ANALYTICS", "true") + } + maybeCreate("none").apply { + dimension = accountManagementDimension + buildConfigField("boolean", "ANALYTICS", "false") + } + } +} + +dependencies { + implementation(project(":common")) + baselineProfile(project(":androidBenchmark")) + coreLibraryDesugaring(libs.android.desugarjdklibs) +} + +kotlin { + jvmToolchain(libs.versions.jdk.get().toInt()) +} diff --git a/androidApp/keyguard-qa.keystore b/androidApp/keyguard-qa.keystore new file mode 100644 index 0000000000000000000000000000000000000000..75d7d72e4c2576f60c62035c720672fd9732872e GIT binary patch literal 4391 zcma);Ra6v=x5b%Z7#O;H96;%sp-VtOLX=LW8yOm;Ybd2VhAv6z8bCx)X@*i1kdly= z975oJYu&rP|GH22KAd&d`R%j!^M<3S?gIh%a1`Yt7{V8$9)lwT5CV!(l;a>2}c zEL_aqCM?1(WIYv^`J5Tt((6DVHzg3j1}6m*{dXb|LVyQ{f+1Eh>HvFu5P%Ov`GL)6 z_!`rwRdPC;$vG0I3PM42xX6fKGkP{+Odz9jIf$QMfy z_kq64sjE$=MhS01Smi_ix2%TKVP!zxT*q?`0_sy_6h$4AlJM__1dkTtw2{wXaIUBy zWwNE^i2h(5R|`Wo&U>&SO6?#YVStA5@`)EeRtO>$O(QaE!x{xYQlT{vTN&wnf4!j* zZkcJ%*C0oWe2LJ11wc5_q?g5;p1h$up+6AGp(f{0@j2SUK6ppq-3f4UpnpE$esf!7 zy~3ru)IV55P3F4^bqXRxZ-%TVtO(jVrHatoFJ3wIM}7wf^0Ag3&IW88Z|RAxfwqI)>IYsX zRjkepjKs6k3FrA;F}M2#eG6#t>^yT&md#4AUYlBm(3k*r?EouQ>Wd%fF9fc=iYtun z+|NU^X`FzQ775PVFl5+F?#eS?7e)Qw&7l6Q{Q2Fd!4Le2x;m^RrZ9*L0m-D|&Y-n` zHD!g#fXxkhz-2tb$2>)PV#p_9TJ%SbBkwA3rIx&Ef=hbJZ1Ils$3|i&j4g(g~N{;`1B-J)``9>a4-n6(II{I_4gt06|R99gvk%4dRS8V)O&c!G>l}x`s zvk&w6dLKQt92ppXVrIr7hTthBplI|$F1jphcvZ%%cd2F%uq#D&O=K&lsW(kOJ={#? z+W(9Rti@yiK(VVxu#naw4JRSF(Gv7QCQ7rg_0fRbn_oS;Jh%if89=<_oGweOPEC3B zSTK&B_3)UX6Y!bXwlu-6?YX~lm$4GMfF`v&lG`{^}RR72Bo6;zct(}ArueSP&q?z4U zN6CT3AWV8b-$Oj=)tdSD8S&E&(WK$GB}Rcz+!wumFO!50KkCjSUpmH)T1(Q3chIH* zA+kgfk-paB3_K;_xuzLVRo>szDpuZ{qWkw(wT&B{zf*V<{Mu#{s8#D#$1{|LMe_Uj zD>kp|-P;!Q?(QuVR{oMU!vm{u#cMhr`J=zo zQ{FuVgGvsd{03Xh6Q1R4>eg7;fA~mgj7`j#PD}lCuHfmPd3WR4)~<<|&~4Igu&-5t z>In;(9#7uiBw=&M07NGu_no87s}0m%iSm~)N{l$&!ndbVIxl*TKBWUDjbg4;(ou$( zmX0Z<7EEur1tEc_FKs}QE&NP$@~Z3ojP+68k2yhXHu0uarOAAX&g+PGq4Z6*LXv{- z&Eh}P&&3a63E||gh@2;qjLMtZ(D#-sihzNRO@UXym&F~CM#WHy}cM^r>f2&wADJ({(Qby@Hto!K-fRY$(ek>$nstm9Hu{S!O z9fOxmWwh?Dljy#-eX~EkOBNDbv@{%MoMh`wDXpy=sR#%ii(*UGn;jFtlb~u|rjG9L zK9$AvM=>w67v7NR4+*%a^4MNyZRK$YKkq1HGK^1RV+}x06bcZ2853WNH2Cgx?yKSN z_duaVpFrsO%rLmZbd`6M)843MS&*Z4wH9}fH4Wh=y2yp*S_e1HyrQ8UnQ10Ezf$)K z^*KGN>zOX9h!d?ZK$z>1+UZ&L{@$(#c$+HZPCtB}Sw2_$wyo0gz-cFGc42?JOQnf3 z|HIWyi_m7J+Lc*uUy8EZj zDQdMQ1!gu#>PXE`SNcdgk|5g8^(s9BlkcRWPa)8vY0XBKd{L!ZqRHxo0^9O$%|)zg zDFv4sf6&c@qg{p+vzbl;2VMtED#BIo2jxS2wq;-YzQk!<)s0+pVuSE`;i1t*rMRhN zQHL%le>=U=jBOc=s+8u}ixwhJO2>S(5%`wnnQc20JT}`ML^}5F;$={k*$1t!X*Ehe zV9q1UuUGGDa3!)t7?qiF=qc1}cT}@j;L7p>%ol71)f`U>7|3ZwIy?=ykHa5Ud-r@b zZ^pw$nvMm!|v)3)N78C3$FcLj<*ML{IkasqrGT zxCBFEPwS=_q6a<%AJYFEDrnARnQ2RaY`U@P%tXG~c7|nsHr_coaQ<;rIAhmJQtLsp zL_!U>b!*vW80c{}7Xh8I=Vnr1IN8Y~F7IQjXOqLNOzc(yhB};kh}Cv#weGKvo0fE0 zp7JNe-|%M=$@<01%DB~jTT7yOpjtGq#i5cN!m`6#Ng5`@Y5tv)#$}bVN6h1@#%hZ> z)E$Ylle0f{mIWrm^YIkR5y7u=$Dit!C3?5LXPj1sa26RnVirUW(9!GSbZk7#IIeCgvCgJPP(hn#6yFE`MISpgRfu~TOZEVx6%Y{hde zi5gP*KP-EU2zfZuzjX~liy*y6jAxB!i|2%AkLLkr|Bpn6paoGIIJ?@jAtb~Qa1k*{ zxCC561daly{`*7-E=GY-|DaGH0PmmW_a6oDf0e|wT##g38IX1R-7Fw~p!g5S&0XyO zQxZ)$1|nXHgmlJ4pD_9tJWmKmf$`>MJzVPZ&G62CatxT9z%=gF$u}oTTGTK%cPDmC za|Gj$ilw?`m&ARKRVWxMR$7RZ-PE%U0YH-~q{UQ_3;W%?5w16BgAM5$0nii@RFEzH z46B~eD!AD>{G8tVn7D_a)U1Hd`^`*D{lLjIu}Rz`7)~oB9e?p!&E<1@%`SUgdIZ2-hpfPr;ahQ3AbtqA%dehNl=edt&O9# zb!F6W3qvsTbVC(*PoeB@<1BD1b9z~ z4A(Y1VMDU_jYwWjq^O#UJ0o#n!NMl;t1F2FxiTlt#3my8s}(8BIBv977JWrcQS2aw zeUSt|n)J7UVnCV;UL2wZiD3e`4>q5?w}ISo?&h6sW?dcwbR~_B8U-pNCPl{(VyQ*@2Wmd?sw17NpS5U$!AS7 z=W3z;(j>OH;FrMrC;Ume6W7-Q^N*>|8=HRq5}k?qaNC-&1C;7oorv^$pafY-=1jJd zP>w(GP?CqNPc{)Qoi@1wpe$;FZ{TRmNL%kG%k3X!)s0sWmNs~VX$kNBsvw?QZYY!QruF0n2Sq8chv1hO!pMQNS3v{HbdlG54ydsw_94G}a z*zlcc4;{>18j{*&UNET2h>At@HK1)N*+&MR+#Ss(c7COUH$X7fa|INg$>AfJoLA|G z*JY!76b~5*S`FC#nhoGcFBbWTXGiDBQ_6B8zp$X$Oc%@NhO2b)tV-+kN@W$?wUjZ+ z$7gK`-pMyul(K|^$obMAHQZ>3I^eawR5>Gv(}hpyq8lEyB%<;gMQ-mp zH`{*+zAQk-XiM|E;p@fSNTwxgWFXWRRI!0dq4^pPZV6#8OwAFYigd*dLi(LVDdh|_F zkqG~)%5uvmJB8M6jdFU=FOFZEh~trD8P4sn=0^75u=D<6X40S1FW1uMo_ZK4I3vxh zkfJh%;?bD~4JQ{lZuU_fxqCwAX6Ca^g?G%~zw@gPiwua-^sN~;&b@_f!{^j2uRXyf z*Z!`3rG+(Z7;XQg!patnsmD(RW^$H!7%=6|Z-Y3q_<5YRlr`8%L+_5gQ-YD*Msp{= z1Q*SSrKB24U7qRG_Pe=;2;d50b8V(c3Z*a { + static <1>$Companion Companion; +} + +# Keep `serializer()` on companion objects (both default and named) of serializable classes. +-if @kotlinx.serialization.Serializable class ** { + static **$* *; +} +-keepclassmembers class <2>$<3> { + kotlinx.serialization.KSerializer serializer(...); +} + +# Keep `INSTANCE.serializer()` of serializable objects. +-if @kotlinx.serialization.Serializable class ** { + public static ** INSTANCE; +} +-keepclassmembers class <1> { + public static <1> INSTANCE; + kotlinx.serialization.KSerializer serializer(...); +} + +# @Serializable and @Polymorphic are used at runtime for polymorphic serialization. +-keepattributes RuntimeVisibleAnnotations,AnnotationDefault + +# Serializer for classes with named companion objects are retrieved using `getDeclaredClasses`. +# If you have any, uncomment and replace classes with those containing named companion objects. +#-keepattributes InnerClasses # Needed for `getDeclaredClasses`. +#-if @kotlinx.serialization.Serializable class +#com.example.myapplication.HasNamedCompanion, # <-- List serializable classes with named companions. +#com.example.myapplication.HasNamedCompanion2 +#{ +# static **$* *; +#} +#-keepnames class <1>$$serializer { # -keepnames suffices; class is kept when serializer() is kept. +# static <1>$$serializer INSTANCE; +#} + +## +## kodein +## + +-keep, allowobfuscation, allowoptimization class org.kodein.type.TypeReference +-keep, allowobfuscation, allowoptimization class org.kodein.type.JVMAbstractTypeToken$Companion$WrappingTest + +-keep, allowobfuscation, allowoptimization class * extends org.kodein.type.TypeReference +-keep, allowobfuscation, allowoptimization class * extends org.kodein.type.JVMAbstractTypeToken$Companion$WrappingTest + +## +## java rx +## + +# https://github.com/ReactiveX/RxJava#r8-and-proguard-settings +-dontwarn java.util.concurrent.Flow* + +## +## signalr +## + +-keep class com.microsoft.signalr.** { *; } +-keep interface com.microsoft.signalr.** { *; } + +## +## messagepack +## + +-keep class org.msgpack.core.buffer.** { *; } + +## +## dont warn +## + +-dontwarn edu.umd.cs.findbugs.annotations.** +-dontwarn java.sql.JDBCType +#-dontwarn okhttp3.internal.platform.** +#-dontwarn org.conscrypt.** +#-dontwarn org.bouncycastle.jsse** +#-dontwarn org.openjsse.** diff --git a/androidApp/src/debug/res/values/strings.xml b/androidApp/src/debug/res/values/strings.xml new file mode 100644 index 00000000..4acb34b8 --- /dev/null +++ b/androidApp/src/debug/res/values/strings.xml @@ -0,0 +1,3 @@ + + KeyDev + \ No newline at end of file diff --git a/androidApp/src/main/AndroidManifest.xml b/androidApp/src/main/AndroidManifest.xml new file mode 100644 index 00000000..386c6b5d --- /dev/null +++ b/androidApp/src/main/AndroidManifest.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/androidApp/src/main/assets/logback.xml b/androidApp/src/main/assets/logback.xml new file mode 100644 index 00000000..61727b43 --- /dev/null +++ b/androidApp/src/main/assets/logback.xml @@ -0,0 +1,14 @@ + + + + %logger{12} + + + [%-20thread] %msg + + + + + + + diff --git a/androidApp/src/main/java/com/artemchep/keyguard/Main.kt b/androidApp/src/main/java/com/artemchep/keyguard/Main.kt new file mode 100644 index 00000000..7bec3291 --- /dev/null +++ b/androidApp/src/main/java/com/artemchep/keyguard/Main.kt @@ -0,0 +1,227 @@ +package com.artemchep.keyguard + +import android.content.Context +import androidx.core.content.ContextCompat +import androidx.lifecycle.ProcessLifecycleOwner +import androidx.lifecycle.lifecycleScope +import com.artemchep.bindin.bindBlock +import com.artemchep.keyguard.android.BaseApp +import com.artemchep.keyguard.android.downloader.journal.DownloadRepository +import com.artemchep.keyguard.android.downloader.worker.AttachmentDownloadAllWorker +import com.artemchep.keyguard.android.passkeysModule +import com.artemchep.keyguard.billing.BillingManager +import com.artemchep.keyguard.billing.BillingManagerImpl +import com.artemchep.keyguard.common.AppWorker +import com.artemchep.keyguard.common.io.* +import com.artemchep.keyguard.common.model.Screen +import com.artemchep.keyguard.common.service.logging.LogRepository +import com.artemchep.keyguard.common.service.power.PowerService +import com.artemchep.keyguard.common.usecase.* +import com.artemchep.keyguard.common.usecase.impl.CleanUpAttachmentImpl +import com.artemchep.keyguard.core.session.diFingerprintRepositoryModule +import com.artemchep.keyguard.common.model.MasterSession +import com.artemchep.keyguard.common.service.vault.KeyReadWriteRepository +import com.artemchep.keyguard.common.model.PersistedSession +import com.artemchep.keyguard.feature.favicon.Favicon +import com.artemchep.keyguard.feature.localization.textResource +import com.artemchep.keyguard.platform.LeContext +import com.artemchep.keyguard.platform.lifecycle.toCommon +import com.artemchep.keyguard.res.Res +import kotlinx.coroutines.* +import kotlinx.coroutines.flow.* +import kotlinx.datetime.Clock +import org.kodein.di.* +import org.kodein.di.android.x.androidXModule +import java.util.* + +class Main : BaseApp(), DIAware { + override val di by DI.lazy { + import(androidXModule(this@Main)) + import(diFingerprintRepositoryModule()) + import(passkeysModule()) + bind() with singleton { + BillingManagerImpl( + context = this@Main, + ) + } + } + + // See: + // https://issuetracker.google.com/issues/243457462 + override fun attachBaseContext(base: Context) { + val updatedContext = ContextCompat.getContextForLanguage(base) + + // Update locale only if needed. + val updatedLocale: Locale = + updatedContext.resources.configuration.locale + if (!Locale.getDefault().equals(updatedLocale)) { + Locale.setDefault(updatedLocale) + } + super.attachBaseContext(updatedContext) + } + + override fun onCreate() { + super.onCreate() + val logRepository: LogRepository by instance() + val getVaultSession: GetVaultSession by instance() + val putVaultSession: PutVaultSession by instance() + val getVaultPersist: GetVaultPersist by instance() + val keyReadWriteRepository: KeyReadWriteRepository by instance() + val clearVaultSession: ClearVaultSession by instance() + val downloadRepository: DownloadRepository by instance() + val cleanUpAttachment: CleanUpAttachment by instance() + val appWorker: AppWorker by instance(tag = AppWorker.Feature.SYNC) +// val cleanUpDownload: CleanUpDownloadImpl by instance() + + val processLifecycleOwner = ProcessLifecycleOwner.get() + val processLifecycle = processLifecycleOwner.lifecycle + val processLifecycleFlow = processLifecycle + .currentStateFlow + // Convert to platform agnostic + // lifecycle state. + .map { state -> + state.toCommon() + } + processLifecycleOwner.lifecycleScope.launch { + appWorker.launch(this, processLifecycleFlow) + } + + AttachmentDownloadAllWorker.enqueue(this) + + // attachment clean-up + ProcessLifecycleOwner.get().bindBlock { + coroutineScope { + CleanUpAttachmentImpl.zzz( + scope = this, + downloadRepository = downloadRepository, + cleanUpAttachment = cleanUpAttachment, + ) + } + } + + // favicon + ProcessLifecycleOwner.get().bindBlock { + getVaultSession() + .map { session -> + val key = session as? MasterSession.Key + key?.di?.direct?.instance() + } + .collectLatest { getAccounts -> + if (getAccounts != null) { + coroutineScope { + Favicon.launch(this, getAccounts) + } + } + } + } + + // persist + ProcessLifecycleOwner.get().bindBlock { + combine( + getVaultSession(), + getVaultPersist(), + ) { session, persist -> + val persistedMasterKey = if (persist && session is MasterSession.Key) { + session.masterKey + } else { + null + } + persistedMasterKey + } + .onEach { masterKey -> + val persistedSession = if (masterKey != null) { + PersistedSession( + masterKey = masterKey, + createdAt = Clock.System.now(), + persistedAt = Clock.System.now(), + ) + } else { + null + } + keyReadWriteRepository.put(persistedSession).bind() + } + .collect() + } + + // timeout + var timeoutJob: Job? = null + val getVaultLockAfterTimeout: GetVaultLockAfterTimeout by instance() + ProcessLifecycleOwner.get().bindBlock { + timeoutJob?.cancel() + timeoutJob = null + + try { + // suspend forever + suspendCancellableCoroutine { } + } finally { + timeoutJob = getVaultLockAfterTimeout() + .toIO() + // Wait for the timeout duration. + .effectMap { duration -> + delay(duration) + duration + } + .flatMap { + // Clear the current session. + val context = LeContext(this) + val session = MasterSession.Empty( + reason = textResource(Res.strings.lock_reason_inactivity, context), + ) + putVaultSession(session) + } + .attempt() + .launchIn(GlobalScope) + } + } + + // screen lock + val getVaultLockAfterScreenOff: GetVaultLockAfterScreenOff by instance() + val powerService: PowerService by instance() + ProcessLifecycleOwner.get().lifecycleScope.launch { + val screenFlow = powerService + .getScreenState() + .map { screen -> + val instant = Clock.System.now() + instant to screen + } + .shareIn(this, SharingStarted.Eagerly, replay = 1) + getVaultLockAfterScreenOff() + .flatMapLatest { screenLock -> + if (screenLock) { + getVaultSession() + } else { + emptyFlow() + } + } + .map { session -> + when (session) { + is MasterSession.Key -> true + is MasterSession.Empty -> false + } + } + .distinctUntilChanged() + .map { sessionExists -> + val instant = Clock.System.now() + instant to sessionExists + } + .flatMapLatest { (sessionTimestamp, sessionExists) -> + if (sessionExists) { + return@flatMapLatest screenFlow + .mapNotNull { (screenTimestamp, screen) -> + screen + .takeIf { screenTimestamp > sessionTimestamp } + } + } + + emptyFlow() + } + .filter { it is Screen.Off } + .onEach { + clearVaultSession() + .attempt() + .launchIn(this) + } + .launchIn(this) + } + } +} diff --git a/androidApp/src/main/res/drawable/ic_apps.xml b/androidApp/src/main/res/drawable/ic_apps.xml new file mode 100644 index 00000000..92573cf1 --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_apps.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/androidApp/src/main/res/drawable/ic_cancel.xml b/androidApp/src/main/res/drawable/ic_cancel.xml new file mode 100644 index 00000000..9a3cc8ee --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_cancel.xml @@ -0,0 +1,9 @@ + + + diff --git a/androidApp/src/main/res/drawable/ic_copy.xml b/androidApp/src/main/res/drawable/ic_copy.xml new file mode 100644 index 00000000..5544073a --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_copy.xml @@ -0,0 +1,9 @@ + + + diff --git a/androidApp/src/main/res/drawable/ic_download.xml b/androidApp/src/main/res/drawable/ic_download.xml new file mode 100644 index 00000000..6dff20c0 --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_download.xml @@ -0,0 +1,9 @@ + + + diff --git a/androidApp/src/main/res/drawable/ic_launcher_background.xml b/androidApp/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 00000000..04b8f8b3 --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,3 @@ + + + diff --git a/androidApp/src/main/res/drawable/ic_launcher_foreground.xml b/androidApp/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 00000000..95f20348 --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,38 @@ + + + + + + + + + diff --git a/androidApp/src/main/res/drawable/ic_launcher_monochrome.xml b/androidApp/src/main/res/drawable/ic_launcher_monochrome.xml new file mode 100644 index 00000000..57dd3770 --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_launcher_monochrome.xml @@ -0,0 +1,18 @@ + + + + diff --git a/androidApp/src/main/res/drawable/ic_lock_open_outline.xml b/androidApp/src/main/res/drawable/ic_lock_open_outline.xml new file mode 100644 index 00000000..72c50489 --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_lock_open_outline.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/androidApp/src/main/res/drawable/ic_lock_outline.xml b/androidApp/src/main/res/drawable/ic_lock_outline.xml new file mode 100644 index 00000000..5f7c29ff --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_lock_outline.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/androidApp/src/main/res/drawable/ic_login.xml b/androidApp/src/main/res/drawable/ic_login.xml new file mode 100644 index 00000000..01fa78a3 --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_login.xml @@ -0,0 +1,9 @@ + + + diff --git a/androidApp/src/main/res/drawable/ic_logo_bitwarden.png b/androidApp/src/main/res/drawable/ic_logo_bitwarden.png new file mode 100644 index 0000000000000000000000000000000000000000..7fb0a2a733e222aec4e8c23d342471c57f7ff90e GIT binary patch literal 13229 zcmch7c_5VS*Z(!s$XLoC;%PCmWtSFdF{84FQdzQ=EfSKQW~LG?%D!)v(4s^|C^J#n zDxxgev!%pjn;FK;d)<1f@9+Kl`~LoT=F!Y`o$D;0^Eu}__kH<*nZXMFfA|3aD~t^H zSpa~Bf1&|)IsD&D@W*)oHv1dx(>)yg`9~HbBk5B)wTbJid0609$JRGb5=bKNKKO{- zn(5uCbVqpW`Qxvai|;Euaj6*Zxi3*3-MXN$Y;%pE#^x~d$rnM{lOzUM`N-Xk@uF>^ zw<(~9Fq~qyJ&Zi@qRsumtYgjS5Fb3#`YQK}6bk-<{0A_|2M+llA|L;aFaK+T{RpG4fks>yW4tcw{dJmo#mpPP5dB+OXtQpS5g64IDkG;b4 z%Xa8=HIW^Zg`V3gl0)+MJ#;)ax)TQ-_410{i&tugw36#jI<^}H>)%go4=@R8k~}8y z=DBnD8xzlpVfs(Y5Z3)2X)}B7+C7yJCIXsfH^=E*A@}xC3%{P>#R4`#tHQp`#QWP_Lz!JBuDG%Y(v}b*{Q~@7sCxU04II@ zx9<|92#4`G`dUUpolP41shg@qb*`UC?6U04>=O%jhl_5}si$45o}ayu?Xx5D*z(Nw zK&!eH%6@S$+;6Lg1-zy@ct3?#ZW7%5)juF7&Y)L0ws9nDq*4?GdL+j*SdN8?{-tcm z$YYV|)mOH$Soi!TwHH?P-Nb^g(WhUHCiOfGzrRUvaPIkx$HVBfER`Dftf8<~D4@#V ztn2n8S9K^=F!h}!-ux&|dD>ulMyUQ#J)a>YlO39&Ri>O7|4n^vf;GXr2Bl(Bgc%bF zkLrISzgBDtylkJ%c@pWP8F_41_O+a$y41V8LsV|bYCa+$YDL!)O4oVyXG9;9h;g^_ zPm9h7X_f|IvCt_0!ALPyiE`EDUt6DKhL)dxALPzMdl~G!lVS#ihd!Sv({!9GctSUQ zqY+)}yq5QQNbk*QWnlKE6-oyvCy6&3(2p2<5OFvVdF-tkh*B4$OpD;6FnB-#8iLM> zsO<`<1VO&Kkp*!Sz)+4!G-4@-&~q{_8rjPE|&FY%^4v{pJn9mU(^uqOInA-O3acnxQe!8rH(i!|_-@Wqz-M@2m_SGoMR z!G-8YWZypq%Yua--rqk7q9660`Tdi>IAzhnk0y=klZK{ZEWn&Jc#A)?rD)lzTMr&v zrBSb)m*$~G(Fsv!~WAVPs9i-reSiV_;Peuh3di2wVQ1G@htlaWG^{S_Zw=;xJhsb4lj+4y}0V3#n381WyHs+GYxLGs@{JUn=br8t=XIb3=b#fgW@KvRA>9ShJn z3l!G$x6{!S5U~%ejM%jl-R@PuVVMgKoUOAo1XEctsEf*yoIVrc21HY3Ac&^%6ZqgK@F6k*>VOt|fw}UJx-`euAmIZM7ABl!eofN7D}TF)Mpg#G-=h8+ zLA=C+KfL7je?@ITVFM8F)*w(^i>PxQwLEXxjXiY6sKZ{g$Xb!ucYR_|ag8N?h?d~6 zz>*J2fdmGius6V+k|6??pdm{O*@uG)LChi!?c*U{pih2Z7CstFk%6*dlxy(7AB0bU z6RS9*NG8C{fFHEgsAdhs9~4z&X9t?@DnN|tm%_8vV=0PoCvtR-D2BEh)jVUx?H7T6 zV1X@k5AZ@g>qT4Rj@_dh{1vB)y0pcf>9`SPl$^XIbU6x?0y`g6unI_z;O>r^fAkDS z2MaDhg!J>GnpOTid}&>H5BdOstqOtWg#OhMEBWY|B!L>p82BP!VZ+-Fi@O)q` z%@(rNUs4`9$Tt^rBEBTYc7Pm*Nqr)52|zA^IZwkY176jCI3p>L6Hrcw)a5wJ#xv?H zAxX{%wDR9C?Xbi!Umjv7U90HNA-JO`tVd^)X!SagSkLsZKSw=#g0WtITNRwD=GNJ~ zMG_847l=kC}$-0&-v$N zKt4bBsw}al^^ZJE73Pk8XVW1*!w+VE4#$r3Q|fE_>LUz)SpNMo6P)OpVIXk_XaD2t zXprhnCCAd+5Byn5F9NA0e_lkzAmrJl!03Q_)Z?1Szzw1W}Uf&sDv`c~p^Z#nVM z2+H84Ai0P!e*woy|Aoe-@K=J=9qgJH?#G{$z^MN6HpK^hhXdal9)g1aGfYy&DG8YK!CgD9WD9`v}bpho*MLliW z3U%f|kyH(#WvgiJ9+=Ai2Jx9V<>J8z@{Jnqu9wgYFtdIqfl9PId-284n8r|vHn#Qg93o%;v>j7NSaOpFqbG|psWm>nCIQZUiR0E&k&J&aU9g| ztwa#H3N({{O^GC;m=9rODP zYZTp!heEf)Gu2meAMf{bgg##4PaI%iC?z?c2gv6z60d28kN_eK-=7OH6dFP0{eK|P z>R3b%I`k(#64ua@%GPt!`_NzB2cpfSK_ZY`j_O}UYd+M!iwC#2(|nXp2;1e0|DDN} zz^(|WT#;r69Gwah{Sl~)HRnw;kihqMLSP4W><4wsz)l$DbF9e;UwU_zF zx#vLhO#8iYEyKTGEP1T;+%fu$MhStfgG+av;}d*e~y z(Gpx>U*d>zs&~9fH~5X-AQU~cC})x5q{c$L3rjDS!i6|**Zku;x&zc)uDY+aAK4W- zaOOM+RtFUrYJCQ$H*(2JB<->VAO!YxHl@&oGS>d_A1|5~PgVSDA%yWF=~N?WHSaI? z{3_UZw(06WE)`UR@t<=gSV5zG#WW!QTA?a4&tKUlg&^xJ=1zV7`4&us`Z2$LM0v}jdyqCNP>_un`QSDcwfqeiIK*$JcVTXBz zu@e)__-HNq%kba=AMfu7Qb*=G(r0=7(A7->Xpmy@3>3M-61B9oy z*Ioc8XqU=ET0R8m!{)!|^bx%b6Z&XHfjVk}o1x|i)hKRV@e*>3mFWV)6fQ{fo~rLoCMt)%`+ znG#}tGv((R<0KJ^Y9+sGp*q^>3%xy{UJCUHXQlF_{`tG%U!pEd9x)Dz*@33BS613> z-K>A1L~39XHse6veI`7k`$bhM;;a?HXU(%_X70&=`+d7qt@g)ka%b8W!sN0pJ`x`2 zSZs3BQ4HedVJG>CUTD}SR#z(ha7A>c$m?O9B`Y^fqK2#j`W@h)LCD8 zb~YqF!qkQ8$bfv|^s@`dY_>Jpu^e@PUH8z~05pEzF+9)u8A0Vs=U^!p%R}$l>ui4; zK!Y-rWJX8oUo<6coDGUg?b$du@~UM<>oina-0AIxj9o8sBX2{ck2F?HdzBn4Ub8bO z(yH#r(b5=mq?Qzu5>Pb<5ufKL_9_e!V*~X8^TUB|l%bGKJWc=29)13lUeOw6E&k*y4Qzp*d+3cBtJ$VlQK&OxMYJU2gxPQd^!Yvp3T8iagu2 zVkib!+o7Wi&NcPJ{vM|polEYjI#R@L@9vdxcCSrWVs}m&fE!X>LR!W`DQHbBv99#X zgq@Yj>#aS;i|Zr|gq=5k|I|IHz+PO-F&fncDsOJDHc1K%%G3pguV$5}hFR*KNeeqQ zN|(1k&oJq1+5&p>Tqejw0 z#19)M$?dc}BGk>r+b&IA{j5zvcONlku$}C$zdLB&Rs}}r>Tx^5=Wcyr*wvk9edjiD zH^zPW<~__={&{Culr=|zJ*&1LCk>h>8&6c3dJWq*^yt3F1GnMig=yDm?^)8~8b{RA zYxYw$az?wpIv2xmszjgW4Y5^NP62cq?3*HPShi|h{6BDI5S&cOcm#Bh`Aor*4p#d% zJy`n<%zMvhmA@vbye$2Ow?nbpgrLI2|2 z^zcr0K-LyzyL+cRCgapMD7$|AC{f+F2dQ(BDyms36SBg>fPQ|{Rj-l}$0No%bFJhl z<?mNCD zZ|J?kRk@zto8zzLAe#-1y4e?xU-3x}d@a@9pn58yQ{Cm@oD4*x?^z$#ny~MA`InEt z>qmF!2;*FMXGwvBrx^FGL=0y<`cC3~x7sl&PKDjreZy8M6ewd2CcKVMZ-1`@&|t3y zGH_%*Iyx?9-@pxeuXG|#kz4nXI&Q#Rkb@nWgs)it?Cwk~5jfoucw$*)uQgJ5TP19B{kVZQa|@y!~HFx^6$VT@)6rLU|&b2x=oly;EID>scQw zKRpe!lgC4w&q3WqH%d%028%=TPEFCfv^Bj%AZ4&p`X8*ZAt^1%h$1dk`4|+8|3v)!X)dR9a$37HJf9_~ewG9+&G`$*+B`+c!*aRO=Y<&MV6 zC+v*(iXI7hMcMJk5)>B>&YelgHG}NK_L_m+Ldgr`hG+5;sOH^lm~u@`iH07gW!qBN zc8_NIKFc(bEb#4bP4R3#atz|=qVm~u;UPaVc6dy>NCH$dBa@rMJ-A^wAT;o3bRM@U z_Z|}W4>JX0lSo6-FBV=6&y}O=A}=44B``uehEFvedo0pFD?I zSlqJs0^zanH`~>-ta@L6AYzCabgE~u{YceOwOQ5qY&Q?j?{T%gkLy!yenvou7a`j8 z`S96!B}DZW`Grdt3sS(HrcWk6rf8K(Ef0SxCinJkE(r)KX8U?*4w$$0eTP7#sdtBy ztGw7HmW?7}Xs0Y{E7Hi$<^J=dtZ+`gt!{F?*`ded1&u|d)|AET6+CD_8b~?G@9Mr^ z^zs$3@#s<2*dXeuW)9UV@`WB}X5S8okp+ZRnLa)N-r2BU+}AR-!|(`(sK^(e(q zf|c`HR@hLFU3sY4`J)3;GyTw=MTq*7c8@=*-S4}fxYA+8KCmaevM=#kp5NQvV^>zI zICAe5&8*&bnO-nHngbW(@wTWpr0>d(pW+^3iH6TSi%rF;4r(@f^Dn+?9T=Omx_`)( zIbVZrvM7vZB}^#-6j4D%X#$5ZjnxF&3|U9=jqPF}CSq*$D| znAkUIZdnRjVB!JEtxfXOkmrVT@@26lSfa1ltzAbq`ur#g>YZ?pjJjtg_OyW+Ft#^^ zgC!$D6U(vQYHWSEpv&ke27jZ=Y%oVL4qjREO3Q0km05^e1=KxRp)gc3cA8{Ap}>Cd z0=7cL=02Pg#@xb^}cuV!UW#^J`(Y8TO^Ra2VsoxscBYO)}LRq)%v^P6kgZ8^O zAoiaye`wZat@L{9TA_V_9ai3SDCeW0n{JecL!OuS_qZcIL$E6zwAbSB!I=@kW&zoA z$Gk`_BzKQzdZ?j2hUOmqAdj(fo8hq|WgZT>TPBpOD|_VI-x@tS!BoI;bOj+|_e}X7 z*sCnWD-9eRwhiOzLoym&9gVNvb!owJO>@K=0;WY5|KW@?4$bWaM9DX5#f_p;mL_LS z)MMb5^=hoq#)_Ex!za8ep9H2FY}i>5>N=gG=hu2mwmOF{bQGo#uA~c{(|b@R;2j*D z^!FxJ>BoJvo`TQCwLYLNY~72VvjQ%6Ki_^ipJ2+p0Xq>OJ@|PzFobjU=-pG_bkR5p zs{FI`RmO`$ioC5yGwh0ecA8zuqSZ58&TcH^?%qUY6JwUwX*S;p~US37<8oo!*fJ6|Bz;wuaRLQMCwnFz1>LTi4d&+Dk@Vz60&^7B&6 z!I`ixxt`kgpA}!ovp@N;d91Vo>*stLhejDv!_m~vYRAWN(2I#Fl#{Dn8_w+He{I?3 zc15d4m|{}y7iT(g_Tgd9+1m#{o6g_w>u9*=`8A#)lvrlMBA(D1>a%;;>Aj#bqWX^+yCt(?k#27G30dOHt&o4+G903-1V+0`QA`-v@R z!zc>Zw&~bl-(yIbKs)Wi2Gmv@?|gEw$c3;n!8(DS|Txb)IjcN*HF}bewTq{zsoy5c+OX@+ff-h zyifOPVThL1!&G5|)|`Cm6k@NXh{juKRM2kH{y@DHlS3!9#va@N5(W!z)JhwBzArdT zp7h$xEj0~uFOtpjO4L)&NsK$>thn%DrhNls-R6~h(VS6^O9Pqrw)-O4DdrprmSWm$=y{_E*X>PCdhs~7O-pVnceoyMZ1<#j{up5& zWPuwmFwxon$X(r*XX0(7tc=oK1>o*yu7Nf`1M_ZwE}Ra$Ak3M4*Hgmj3oH+GK*PFp z^65|?0WsPU?RLA7ZWO2avpzRIxz+F%uMv=caX@K6@vv+xE~8wjRFY*G^8rOiux3P=(FPP7iWvQZ9FzyZ?BhH zuPt9AFUt9Lk*ql|sRyle+QWA#-d0?{emZB!*hlfao}cJHOS8I%h>XC_GpQF z@#b55Naf$|2$mg2NLU`}dz`fSo&}mk6!wPh`Ib>>7^2S8fBmW6RLK4Wofb8NS zR}){j3soUKl*0U?j92>ot5;j2aFSlCNt&Ep~emheoalZKT7h zlB{(t%`M-%zn6VkTlRE&Bgxr)C;GIADY=0(f;jiBI!bhdYe&T1sf6L;lCeV>{{Afj zzH&gIG||MxE#vSCqtUhgtn}6epF+G!lB`>W6Ql)`tNtJNqG{ODSV%ENMbSa%e|F0>~BWpB;79z z6AprC(WFH?IA;cJ@s!I4&G;lX{e0B@(>H#)iqdv{y$bDCYtI?|m3eLT5wmH2tmtRW zyGLqBuqxr;T^oq2ET1!?yo^bC-5@iWnFwdPW3JjX3+nv$^h(!h@|8?=mi?n4bEYWA z&3=ly5kl$Fb4+xWu=L~X-D(3KTi>tlm6+y!Yl7DsP)TuW^8@Iagn?0fV^nV`@|0qkqx`P<_0r){hFZX=m*e(53|J-1-7|1SZzu= zdmlCQz>hlbthr{Wm@zdpC#FbRL8^xID~b5|8S_&A%-}LZny}Rh0mo~)yBvqi#{N6G%8cpTE?4~nLuSEf0MN|TO>m^P=LTjh7 zI5kmmLFC@;lB$GNE05I>q$>}$ohqx3;hq0v&Qx9nA$J716F3?2VX6B-=6#gtg5|Q( za2tFlk80s^49kjq@JJYp*xLK0bl~D{xa3Oh&+#MZMu}3pKvY9-F*dGH94Klu~A7 zrPYP5x?X(C!l7M}H>RzDZQAKKn;AjDEba4zl?()j@4$DvG8v=kogYfrpHwcJ6(xL& zR8zxE4V-Xsg+&M9X2w^@LI@65DHzj&%Dtge{+rTLqJ1vd&3J z^(Cs-TJf&WMDoy~YnqJLD&@!B*v&7^VbcaL5l0~6L9Y(p1ylDz*!wDNxb>Dx=Y5;_ zV?Ke|j_zuzEJ=d}hi)5u`#bZsq2)OxQm%ycGe390A`fz8@q>k!h)UCrSJ-lI??SK6 zBO8ybux~LkIuIJxWVqL)Y}~Xk&T*IT;YjoA0qRUXa&->x*`-ky&7IHp%uc60uR;Wc znV;^-YNuNKuv_uyODUze+h=BjnOIr<^J|@&D%h7zCrQ7iMfhNmW_70hrn7r1rY9(K z?;RR5#lLDAla8#LVlbv*W^HF&$SH9I=X2;~4J1fLxcz(*8`w>oj{Dt)b2Nhn&z+{^ zgd4?Qick66jn2sEx1o!2_z|x!))0F5(4b$4FEuUXCgzzWXR-XWZYF!0czH`{>ZH7` z^Tk2KqgiZ@k4H8yOkRYLsK{Naze(o28Q-N@C3aR1g)dI?xL+dswCTO@3_F@Ni0#03Jc~77B=Q`ct4`P>9ypOBd;2!-gUjLYK7-FLP$?oQt*<+UnHN7343+9ZwLZ8BoTuLH*5(ivm@hvB#NwjC>r>6?21@#$~ zSM%~?wS)9rR*SI6ezwEgABj@^pR^o$7hZ?1t=8{wc)BylkI=nae2b@d1RTC0Ou zRD;%`xFA2-T@SXMP+#dbQdTFhlYb~%p>;UQB*A6oNyp=t=8(Q~$BMo!Mc#t%(sTyM zbndvlQF7-_OVW!SdJ}!2#&ZgvFhlE6gFWY8CH!KCg`b0di{~+to8=N|86&Ylfpf2cw(*U-u2 zI>gBuahUCC5^^b~SL1SeQ&i44?2_&hN;L8ah^l?r*YR1V^7uWM&XGg!ExD;S`V{?2 zEawE=OBg8fZ6y=kT<`$o#{mN-!yQgjS@jJrqpIOMs~hv~-0QjK$lg75%J0E0rsZ|^ z$j!r}+NAcIQl_wNhP#bAo0d{pT7CI)dA7RvImbfdxbijTbpko!b)4Itqbn}xr>R#y z(u+6S)^IcT>HFMpWrv+|L4`&M%F$=o%a%i6Bdze*dIVyIj>2zenv7}qfxet$3Actn zhy3&#O+U=~o-n3)YH$AA;E9Otg~O5EvmKjQA4+bc<`}`pgbEqt^@XHf14>}PzLWn z+ZJJposz>3cx^;tJJ7U=z(t~aLr;Mw%GaL?xomDh5zcCXcmjNz0pWXQrHMQY|4P0a zV@m`%Hc3JVGCvl~EqKf$5Sw)P%HTzTW=r(OrK+O15Q040rnHIR_QJ*nX`z0*ENsl9ZWss>8QwHHt8@%`=Ey)qR7Ap(@g-EsKb{ZJzV+MO}~_OG&$61fTUH z(Xc5WgUOKUfG)8!1h5*#K+2ASZ^G|KLr3MvahoraE08M_NVPzVc+A^A7$2Q=fRVIB z9vp#K`0mV-QP6@B*>-7E=Y$buj69q1d<@oJ5zg4>C9J#hVcqDhGi4JjQmfYDY{##y z)qR4nAi)r!0a$MW4`;$9NPh$@7jWe%M}DDbEP^LEM(`U76FsoF>woa89< z0(eNqGemzPH4MExWyyo^d14=uqTqt@l0EscHev_)5u^#k0t01aw2V!7IAYyfdlx-8#-P45H(N z5qx>&Ju{!C~(>H1RxWhscQn|MNn-J&A~-k+AG9S&ZH}dHvzvP5njwXWAe$d zh$kpG6DS1o8hInKoPtB_M&>1Ybf_?H4`06-d2XS+m5?~#V>f>hnv^0EyMIZ3{*r}0 z?aRYdPeqR;r;Q2q_D2Xl4%|@B;i35n^Wy zaut(a$@PMFWPmYW!Y$njxu*l{J&fRH^i{}S=B_}XNU?hSH z-!6upo;HH-uUuz+n2|zW!~q&9zu1o}eF6FPj1e$d%7(I~#fx(ArJ4rPI0LqM%ehiB Xk0m1bKHY|u0stdDvwaWuIGz6=7hgp$ literal 0 HcmV?d00001 diff --git a/androidApp/src/main/res/drawable/ic_number_0.xml b/androidApp/src/main/res/drawable/ic_number_0.xml new file mode 100644 index 00000000..79eb773a --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_number_0.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/androidApp/src/main/res/drawable/ic_number_1.xml b/androidApp/src/main/res/drawable/ic_number_1.xml new file mode 100644 index 00000000..91a44346 --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_number_1.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/androidApp/src/main/res/drawable/ic_number_2.xml b/androidApp/src/main/res/drawable/ic_number_2.xml new file mode 100644 index 00000000..523b12bb --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_number_2.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/androidApp/src/main/res/drawable/ic_number_3.xml b/androidApp/src/main/res/drawable/ic_number_3.xml new file mode 100644 index 00000000..b59c2d73 --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_number_3.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/androidApp/src/main/res/drawable/ic_number_4.xml b/androidApp/src/main/res/drawable/ic_number_4.xml new file mode 100644 index 00000000..94454c17 --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_number_4.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/androidApp/src/main/res/drawable/ic_number_5.xml b/androidApp/src/main/res/drawable/ic_number_5.xml new file mode 100644 index 00000000..d28d290c --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_number_5.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/androidApp/src/main/res/drawable/ic_number_6.xml b/androidApp/src/main/res/drawable/ic_number_6.xml new file mode 100644 index 00000000..06a4d76a --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_number_6.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/androidApp/src/main/res/drawable/ic_number_7.xml b/androidApp/src/main/res/drawable/ic_number_7.xml new file mode 100644 index 00000000..c996e693 --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_number_7.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/androidApp/src/main/res/drawable/ic_number_8.xml b/androidApp/src/main/res/drawable/ic_number_8.xml new file mode 100644 index 00000000..28fa35e6 --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_number_8.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/androidApp/src/main/res/drawable/ic_number_9.xml b/androidApp/src/main/res/drawable/ic_number_9.xml new file mode 100644 index 00000000..280d5ca6 --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_number_9.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/androidApp/src/main/res/drawable/ic_number_9_plus.xml b/androidApp/src/main/res/drawable/ic_number_9_plus.xml new file mode 100644 index 00000000..cb47e3d5 --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_number_9_plus.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/androidApp/src/main/res/drawable/ic_splash.xml b/androidApp/src/main/res/drawable/ic_splash.xml new file mode 100644 index 00000000..424fa203 --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_splash.xml @@ -0,0 +1,4 @@ + + + + diff --git a/androidApp/src/main/res/drawable/ic_tfa.xml b/androidApp/src/main/res/drawable/ic_tfa.xml new file mode 100644 index 00000000..fed2894b --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_tfa.xml @@ -0,0 +1,9 @@ + + + diff --git a/androidApp/src/main/res/drawable/ic_upload.xml b/androidApp/src/main/res/drawable/ic_upload.xml new file mode 100644 index 00000000..4c908388 --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_upload.xml @@ -0,0 +1,9 @@ + + + diff --git a/androidApp/src/main/res/drawable/ic_web.xml b/androidApp/src/main/res/drawable/ic_web.xml new file mode 100644 index 00000000..8b7df180 --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_web.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/androidApp/src/main/res/layout/activity_webview.xml b/androidApp/src/main/res/layout/activity_webview.xml new file mode 100644 index 00000000..e94feb1a --- /dev/null +++ b/androidApp/src/main/res/layout/activity_webview.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/androidApp/src/main/res/layout/item_autofill.xml b/androidApp/src/main/res/layout/item_autofill.xml new file mode 100644 index 00000000..70a5950f --- /dev/null +++ b/androidApp/src/main/res/layout/item_autofill.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + diff --git a/androidApp/src/main/res/layout/item_autofill_app_id.xml b/androidApp/src/main/res/layout/item_autofill_app_id.xml new file mode 100644 index 00000000..e8154611 --- /dev/null +++ b/androidApp/src/main/res/layout/item_autofill_app_id.xml @@ -0,0 +1,35 @@ + + + + + + + \ No newline at end of file diff --git a/androidApp/src/main/res/layout/item_autofill_entry.xml b/androidApp/src/main/res/layout/item_autofill_entry.xml new file mode 100644 index 00000000..46ea0788 --- /dev/null +++ b/androidApp/src/main/res/layout/item_autofill_entry.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/androidApp/src/main/res/layout/item_autofill_select_entry.xml b/androidApp/src/main/res/layout/item_autofill_select_entry.xml new file mode 100644 index 00000000..b885eec4 --- /dev/null +++ b/androidApp/src/main/res/layout/item_autofill_select_entry.xml @@ -0,0 +1,29 @@ + + + + + + + \ No newline at end of file diff --git a/androidApp/src/main/res/layout/item_autofill_select_entry_app_id.xml b/androidApp/src/main/res/layout/item_autofill_select_entry_app_id.xml new file mode 100644 index 00000000..804763dd --- /dev/null +++ b/androidApp/src/main/res/layout/item_autofill_select_entry_app_id.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/androidApp/src/main/res/layout/item_autofill_select_entry_web_domain.xml b/androidApp/src/main/res/layout/item_autofill_select_entry_web_domain.xml new file mode 100644 index 00000000..9e800e61 --- /dev/null +++ b/androidApp/src/main/res/layout/item_autofill_select_entry_web_domain.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/androidApp/src/main/res/layout/item_autofill_unlock.xml b/androidApp/src/main/res/layout/item_autofill_unlock.xml new file mode 100644 index 00000000..d9b809eb --- /dev/null +++ b/androidApp/src/main/res/layout/item_autofill_unlock.xml @@ -0,0 +1,28 @@ + + + + + + + \ No newline at end of file diff --git a/androidApp/src/main/res/layout/item_autofill_unlock_app_id.xml b/androidApp/src/main/res/layout/item_autofill_unlock_app_id.xml new file mode 100644 index 00000000..7840ded0 --- /dev/null +++ b/androidApp/src/main/res/layout/item_autofill_unlock_app_id.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/androidApp/src/main/res/layout/item_autofill_unlock_web_domain.xml b/androidApp/src/main/res/layout/item_autofill_unlock_web_domain.xml new file mode 100644 index 00000000..478cabe0 --- /dev/null +++ b/androidApp/src/main/res/layout/item_autofill_unlock_web_domain.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/androidApp/src/main/res/layout/item_autofill_web_domain.xml b/androidApp/src/main/res/layout/item_autofill_web_domain.xml new file mode 100644 index 00000000..c0ed1757 --- /dev/null +++ b/androidApp/src/main/res/layout/item_autofill_web_domain.xml @@ -0,0 +1,48 @@ + + + + + + + \ No newline at end of file diff --git a/androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 00000000..8fde4563 --- /dev/null +++ b/androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/androidApp/src/main/res/mipmap-hdpi/ic_launcher.png b/androidApp/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..61700e246d4d1b937359a90d388c4a68510649e0 GIT binary patch literal 4986 zcmV-=6NT)FP)(qRG!Ar4i0 z0{u|(i^wbaPTE2T6+IW*m~W7-?pvvP?948NF-*WR<(tg2ru$|A=L!)g+y z*?^EWLK+bSK`j{><+%xz*Q*?-Q@PnaDwTNI>F;{6<2x%~1RTHx+@^bWc<+MDL$8HW zYDj~oi=aI#mk4}9B1_JWR-b?Qhm4Bqb44I@iZBCBQ>j}y_8w)Yx4DCTPxSq6&69~8 zzmMS))^yK~Y0<14K}xCVCCDen1gwUuf4n#__ox*z6ggj*)~qSYJSLQrZTHfN-`V@# z{CQ{d7heRjfHPI1rk$WXjjshg6RiID<#XpXZ(LoraOu`VO%8wzM=vN_xOD5h=8dbXKYsaKAn40BC6uf| zd0G>i^R0(IZPw4ZO-Q3=ssc?1l;`$3U9H!*-uTG}fHXyF)08#HC&!Xy<My%}(Y)_%*dikp7nRcRp@583 zTr}@{8@AM6cKaeqG`XTauxI5G0|+*JbALRh8B`kp}uD|FOJYiC|@=P5v-P;;B~Cf~UQYL;DjWcavK9{N8?P7Xp?;p0wu zsAk!fN1{oZ)NxNpP;RsW$}7&iXf0A!Op~Z6rNA&DQVG=!P&*sy@=EP&sG1376)0&i zZObxJR#cpM(ORIK0!BA;qKoJ_Cp@ot<6XiE96nXqlv1EPh*TlUt5AbIsMa@8-L0r( z3_O>iNxfkp%Bv7{bCHcr5UxNCbVDi*Qch_FLRf*r=QVG8(nKpVI=LKZb39fZu=FJIRFZ=ZV*Nan8!Ogb0K`JM3M(`U{6;&)#{ z%JNc$P)dR8BC6{_nmCW&jq~KsP@Sz%7C?k6!3uyFy(FZ-Q;1eEv{4>Vi zE=MK$A=a-otyFFDy!iefuR0<5;?wPbor|^$iKGpntnSm--8OY{97Js+q+;03pU3{` zt*GQ6V$K3Ybt44JKpG&VCTXZhFbu7AGv**>EkJd)VE^bUvUjgSNE1<6>zieXkg~k) z)7RYwl=*!=_?FRcqYf-9$e!6!vrV~Q9Tn;Ka1?+4`8ppLTgW?66LxjJ8`3G#`4;Wu0ED=9QIgF z+5pNTOV7Kxq!!6JV+ElI0QQgn1$XC5$hix&lNLe~)7OazS0Lvv(k5tF`g1}+HiPQv zK(+2fIX0rYK@)0O$k}soo_QQmaTC^McR(ho2`>?mrRUw;^Q-1d@Yj>_uZ{3QXc0m+ z%dUK1<%d>mE44wbJszTA0omW&LG~BlMb4S0FG>UAeUM2aPd*>H^rMKz!x6!-?}wBY zLn%}$hH7~ock4rVFKj|o)Ig|Qlbp3t2RaB`@k5N$FGO{{1G02~H1OolPwD;b4_-je z{#C9YqfJa}&yurNmPSnu3K6Zr+w(H+hMys8s&(h3M8*5Sb1^@AE9Rx&K_2}9gp`m; zKsw?7jYB4Zu!6`F&&2xjYRpeuiAoIWYX}GgAr!!Q^e$B2{vmBG6@H%&@5`VrA^1qAnX+8id!(wUID#rFn9ozLP!H)7~1(7rXIqT z3q2hW@5Q)q6~^CxNykE-t2MN`0dLQ%xX(U@sGOm-u4G?Se}P#yE6OOhBS*as)P3fL zbA(}5mP!x+RuI+QhWF}rh=g^Agh2ImB2T*z;!SoGhYt79tcL9?B2eOdW|Farz&rrz7Q6i0THEoyvRP){(W4 zz8@-0Y+(f(YnNZM5KWMPVS*%J1?C_7SEW^*4;=$3C(F=~js7Fdz_2Ohw5Fh8IbWL$ zT~Ce$0ZMt`p;XZFp$!kR1`ERs?30veUQjN zLf0*T2FJlN45qqK?{i=>7C|BqoH51vF{Pxnr;qY*luJH#9#uyz#QtcVF~!*hmPaKnGssjpd8w8=?5ZZU@Afnq-;)Vi1NOM2%SDTpa+~>h%{X#_af_o$U;v7PMTHA zobn*4?6@nalS6Yb6ocf?JEoXsrf@u$h$Z!6V1eE;H(HlRp$7fLvOsqhQfV*>l*;wn z3mOv7&K4>AK^SUvoDz&<B)ah^S`fQ>G2DBJ3h{O=)tw-e)6LABH=nI^1Nk^AO$GpI)efl zimx@V$^vCF45$skegF9oU-;BA0O}iOBMpgTXW91j)0}zg$!vXg2gekN|T>T*t60j{!BJtfziCto2bD}$Y_-F*8SHv%wceiMdaAP`uA0CN`{Mlv?Y zjo06R1cHG>liKQY;4%h5o*N%{=Mcz%G$15k$M!$d*0P5gGaGT;k>Q==I7FhAJpb&U zc%!|S%HWhok%HiJFqCSXBgg|Bcc5qYA&>#koy}%#y*W3I?FcFHJQpXMJ!Bd0J_in( zlaU0acRl~YR2vXt@+Ylauz};>_kL>XX3*c)iyXBYXc#8(fj*8n>KKlkJCnieKHV<8v4P11(8#-SM?Y2yhgb26V`z+Yc>or&WgLqNvWy?LXnUu#ea z)}69+omIsE8jIr-EjBvRvNw+OU(ITBi8ic5d9h0c^qT}8y#ph7nUz&X&ib>G*| zzZ_@>2Jua7ti5>`NCAU=>+ktdLA4J_tOFod3Fg;E+3@CmzOiL5bwLOi6Zj(mX&VAT z!Nngwi?4is1?QZ)gm^;l@{9*lfG2hN?o%(bt2fS!Xqg`?6;2L--`7EO-$y)>5d`@e zR#_k(-?sjByKVPlg*GB`zlFe%2KCiZZrS`Q|M7eqv%^px7~k9s37Iss#9?m?+T(h@ zIo?jPDZsSAGvJmDZ?JCXKIYX_qK3ZESUBvq-H*k$t$!VztC$`AosO|;%V|-6*P3ga zmFpynYEcM0A&8a*sg8uXeBBFtYs=fr2*P1eZE6#ZZsR?8`W zM!0F?tDN_X|7Od+e&$A?DGIe=2$^6>9aN50EJNQ@5ro<0FsB?63hw%!PF6g)m4{#1 z%beOOLV*BYE^RMgj!6*T{@5Ma{VnZ4j4`wa#!myzX;EMI{oh;{I^u-WtcC?=7D|*a zC9V=gLm?tF4W4-G09#sm_}I}iIroTqPH3#5p}dT6V0;JedOF70pLE&Ym*UU+dicXz zojkj*8_P0js;>cQ;88p|+0MP2y6^wyI-rknvXsG`&Ikftt%F|0YG>z@qDbNbic`?Y}$ z4?F`LV4PunG$sui{0eMzAl23P$laTJ*REcr96Mf^WO)fvIZYZe6FHn=HuT!adoS;G z?z4zd^-T`t*zw-At5@|sa`$GmSq+kxSw9g9imH4EW&;C2=fD&9KXu?IH-FiU_3bT4 z!aNKo(~A;H@%!y=tZ(mupWOWAfhX>N3h4CvU>AB~L&0HZ(>*&}AcGF7IukoKKDTex zxhw6~U7L%N_z=Qw-L-k&s&iK+c5HkOO-?_M@%vH`ii*qgNE!e-mFKp!-Lm|q__lS; zDr*lGQ`fr*m9+=s+txL=-Lm{9<+&{kYfe$*zyxv7M9BN1T^OhWYJ&?FHr0OWUoQCc03N+^vZxpUI|Cf_~bF6!%sNEte<q{_-(C@j&?c@s92>{i)o8am9e$8rHW-h1w{>Fh!PblY7Ptp^F?yW zC3m~GyKn#43tU3(F6lVa=`*u)d%Mr`zQ29;d7t-r-xX3y{+~qoUjs~5Gyow44UNr{ zHjYIjqVAD(bA-pcK&V;-RhuIewF)5ufB>12w!I(ev`NcqmS%F@m$#q2t)a1b(yuiZ zjUc5&NGT@`9E(QO`o}k3E)^pWBZt(q(>fKavBN>OmBf9~mDIL2_Jv3tj~$=FW_I2Mfv>pgBo-i$=8i$2YE2 zih@^9s%IfUD4;0r?_^9p`YGYFuhK}V!Wv=iz>|!h$5mi6`eMBp(e6%pA4SErj z*CM<3VsCgBd(S6eBq1|{ijoSHBTqp6<{3~r4Z7PwI(faX1d4xB`_QX9W6{X+hQ?+) zFL3bW1tIT@V_qx>Yg-VS0^TC*wJWh+`xDOYPr%M*r&-VJ6l zFSJ%#v8>|S2mcX^Mn21)XhvDYq7kj^q9ykVO|Q)hD;=ai4BjHlr*Fe}>MoqG+7QKM zF02rl7zTVEM7SLLxZ_Y_e0nexh8KdJ@0^!RFH6(?CD6J&@ z%sp7^|BO;qjqL4!a5?H}ix9a|DxuHd7WRbg*=8S}C05TzB!L?6n$v(Ogbic&Mn zjcw_G>OrQ4aXxRsUh^AdY&+64P-e};d&jd#JB>&idAqU)`(FI=)-x{!(qpG)pQobs z=0dCzK-I8YUV}6)>^DwFzj-A}MV&jS`Z^)r13mi?L;a|cv(PTTA2b~iD#iKuJ?yQo zAWA9<`bG_vUK~1O@j=BAU@`TwU(6QXqB(_I(2((NIv|4yuY! z6wowK73laJrS>S4lNKNc4uAsAXDwjcZoC(e;_qJkV?fOY)_k+)T~yE#5Sor0=!L#6 zkPLPq74BFA_gA2R5D1SC<;WA=8y*ekz<%UVKPZIb!hsOgm8DqKRd@nA!mqg@kjvJmVwD83r%lDSEcTfWW@4Di zpcl)|Y3AChYKTmF8|lF#G<|A8U?FJl?BSd_)jYK6bv%I*QfUWtU*>W0_)92o`cF~s zyb>X8TH3pKurc5Nv7P$+-&`an{KvarN~#k{U`=8FW28N*_pCHjd*^FtIs@%DjVR ziZqRWq3Pj5wlZ^!?WD>N8{XN?c18^@9Sgr>gOo(foYD{-~{r7V<$&W zM?7ph$;AG`mg9?}fKR|PtDeC$lGHUEL3M2%C1q22>4oQc?~^vl^}IteuSnZU;zry- zV9Orp-8msR;U3wYk2q<1{Y(H1!$46K1_uWyE3crkBuH``+U!XtFR+p99t&&^fB4q= z!mt9va!5NabT)901vf9bfiurpL~nN&rfFiQ(>$%PW89*yB&6YyUp3xb`}JcI9R4 zOM%EDQvi<&1Exj7w9u6N2`bU_%38q422KO<aMZC5=eBexakklwoh^S}2)Qg)`y%5`@s6vU)g#<{OZfM+d&mC;q@-B-m zJeQ8)(Xi8l&^83WeEkCqsSwaTIR~C~p!4JShSg0#BGben;LPeY-t+v@6-dX*1uTK; z@=}(*y^Gs7d`hVYjwp6RVq{I(pMoLFh1W8fpwtU>LD(_iaLMZT_^7j=`YB=Z)jjbI z&p!_IkO_xTz!@1bzG&Sw`1U_@?(|3mMP3gT;SkH;+{M|?ZRP!rI8%$DJ_xlzsPaL% z2GjlS|JooVY*_yOUKXs{OlwykGb^WJ%iL+rY~QtU;I-B700Y^p=EJsIW6?+mII`-F zr|eyBLQ7DPIF8Nk?l{G|!u;AWHN{0JLOGbD1>i`@kY%x>XPB1uJ^}$R(@Kl6 zr5IUD9wt`zzSj1;&%XiK0rWLAHp`Li*6|A1A>hmX4`2IG-6QLcRl`$fj#Ur>90VvT zGb_s&HcbAtX8=3h3&^ZlMT`{D1bsR)s-~bQs_WSturh5X+V4L9R-g?S9J~2_7;r;l zvlEL(;y`Tgy^F7}xp(!WT6xVehe2n^9l+<+snxR+bGDDOPZgXzvzwDl^d9)ziu-^s zfbNFI=JZ&daWi&9W3vVHILVFTKb+bMAa5R=4Dp^jEvLCz{r->3?)^Gcz>*!f$zJ9(%kR2v-Q*7Z4uZhfv(XETt{2bV{a;q%%Cw zYwX$CI=p@JwxRdee}o%u-M}DVG&DBnE!++Ro`j5m2Y@hcxD*3^+^nNAx<;{a>wshi zu0L}O;;!;0QenD{{g=Smq5(SYCWj{jDi|H#PUf(1r&uF%KIsLBl#>4d;rcvkbAs&# P00000NkvXXu0mjfkl;RQ literal 0 HcmV?d00001 diff --git a/androidApp/src/main/res/mipmap-xhdpi/ic_launcher.png b/androidApp/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..8f23a2b51cc272f69b8d865650f8683ab4e2b7d7 GIT binary patch literal 6944 zcmV+*8{g!KP)&V`Uv~f zd?KLm+LkDj_~Zf2v%76p+R^;#795_3!xcgHkcqFgMlPusw9<~?^Jg> z=j`{#KIh(ZZz@IIy0;Rr`?uC!cRF|P-}!#`@AupD5lSikOZK10{jI=%cKI&?_OqA( zLWupX$7mu(Nd#Vl?}L6+1zs!D2TGJunt-6pU$Jg~=)&f6kM=>9fM`GC(x!$*Cmbds zv4e#f`lv9Bxd<^GX|xF;T0q2rkoWgIs1c=99M>5_sUGDxTa}%EM`cIWr(b>Mt-)X2 zm_(D{0&4z>b^C>o&F3Cn_E{*U$}C`C65xR@{WSa9)r)1U<Lbr{qIg)gC@cS+o{N<8>snB);<}sNY-&Z~ zsbAhcwEAaBCW(lBO2FoGkCuP|m~(D?;#)>T%VkJ8uWkiQhPdt)CmmnD?b6TwJ75FO z{1xlmdS$;)2nYmMv+JLKeWKYm?T7o@)l@6WF08SKb}#Mzhc7>kCZaCEx{`ppcf`C} zZvx@DH$QuW)!FsvhYfrHVOoo=&aOx2-u&zhKo~H+d#i6b^|F9qt)KP7`;M_@%)dpL z))DnlbN`C63$GV;ZT{|#rDv_BMr)W93-G`fy5bt12bm!0T?zv{EnE+1_69~<{>FH%g>(qZkh&_7PA9@kOG+L+r+uWO;UWO*YtOp4- z5m4dp?~o16m(;4z2VG=C^Cfd{e)bOP6c;A^=RgxPJnxq0SITI^*K1Ma!z41=@b!7O zJiii6f>8?z6Z&HS{K&jpo?j`#(NiX>z=u^tIC_dlLWCMfsQOQVfE%8B^D`^{GlK7n z2uDwud-F3ZC|N?)F`+5~0s%KX=f)?lmeIyDt1a*^O=Pt3%sDqcaW$owP!$Q|CLmDr zt*&JceZy#KySO@4YY~M~E=nnskSJ-Q3~Q8R>fe=aW3!LuyN#x{i@TOR^bNqGN=vB5 z0wiEfyJ-2xtj?~Rt5vdEQA(j)4|FSvXq}Ge=t4BNLpTbi35EfN_iCD8MG#Hxh>n?v zwrQwHgC@hvXEMd=?7Df{Maw^iCSlyTj;p=yH#cRpAsSuy$$JsPn4q5TE4t>oAS9xB z3Pc)EecN%~U5nbj9@V!Ul^ldZ4qO+6&^291utJE&HbloPMAt`=^A;ke&xb+|mFP#g zj?Q;7reK9Iq6t@pK=5vo$;~B(zUjl+bw`&W@mPQatm&8Cy4YxHKd&yDR!Grb3lN=i zP(!6hKQs%QCyFQ8}HoUyJS(^mz0x{=6&BW|jjmH{cc9K%3Nn}_?x zbL4(>I)&f-3?&3&#ykzY;nx*!frA<)1s6X^1JTfmm@yB+F$zzvB=@7Q;=J$>V(M%N zMPQO*gNIdwarBh;`eSf_t?TLs|3+A$L+Yv}ftqiah>qDfPyS!>*ZnoBcPpZ69wOSP z$(b-n9=V|?a@IUlI!^wk3$Rz+glL%t;mILESfN9@u72=u7{|cfSnLSE3@w(+KsF8O_?{`70y|%Ry)F%07tuBi(bhrX zo@=llT#jg)4yFZ4)tv;hbJh>S3l48adywh~2-g12Z!JAvNMlMpl`Gz?Vi2>xCLy(J3LeBdbqJ5h7;rLBZ@7@YIRJ;$h$(taghH0Wy-N{u4@J&71U1wH(x7sJsunS)%(yT-f8oz^o8QdiP4ZV> zv&W1W9{50P)|J0p5}I}3jdjt+lQP%SK9j;7mt#M1A7bV_?RI>T2E_YNfcd#4$WNV) zXq^s)EGjpGC|>I~L-G0o5eP?7sUg&whp`{IO}nP{8GDecc5TM^_(_B=S%FFodcW7V zd79s`@zNbve(g?R1U;KpYOC#KMyxpAV|C10Qa4S4;<||D4&1k1#D3}5h$+*`{k=3$ z@jeJgu`av`=zz{d{%$1vxsnX;nef5S;St3C@Q}w4!DI6IQ;awYXhJZBHD=C z{VvYiFCm)S%3Y6gQOP09Q!Yd<`V8#e0*2JUO9LULuE~{2=ep^*fRrBC70K|vFaD3+c^tYY`D9Mug~5?}!4)bp=7N?4(;x@!WueAmU@_BJS|+$Er(kVhW< zMPy?ei^p|7$(LizNkk|9Xp_o0K-CU`!nQ5K$>;$ z7YHlVHTC>!jzSYqHjo*-dw*Sz73%uPiFGSIC`y50pt5P)zU^Ry%IiZui)fpQSa1Yn z(z*s0LDd%qL9dju?>&+bQoEyc0x|b6ERLqb@oIarXecgK#%|lnBjScHi<~=;QAIH5Ft?c9OQG_uLtf_IX1+a z!HNc&_rcvs)f5x>j{u;%E(^%w$ZS1DL}CYr=N;OFc0)znD=olm z{_NQcg<-bUw|FRxU<&Q~U3=7PgjeguD6VHh63j;k9jtwQN*C!qfO0(G>mP`PVYW4Y z_UwgJ1Y%zs-~E_o+tf*!aM@F%y#YE(?VBL@m86ZG%_Pi{RfvbJABY8%#)67lhK!ae z`(&Gt5JK0p;8@ORHBVnu-#S^GJMd@JKdmNws_(Gx`GqDSKtwJu1=$wOb)LhRet6(LqT|yC@%f5%& zeljB3gsT)8S2EPUn>W_I%%2A1v`x#=D8$(Fh!YeK+n@#PNdTtRQtyJjtvF4 z{YoqiK`0cvl36Y}b}m;Pe*nWkZ>l2n)w8ybC4q7buVEB2;o?s(pkP@1^bhYb)6$*5 zdd?4c*!ugTf$~<6{w$41T}rEvRL*98Ym5tznoGuoq2ws-j(xRVI#7<|wT?r1*f|Ve zJ!}piozh4mo3DRZ*4UO|UfB;2Ldd$0$qJ=Nh%qf@Fq8v1`HhZoi>)9eA#X!- z1U@pQk&%4a+(});!?vtvxd#DtEwLyH$90JrQZHnyH8(E<(}YmiTc;KHexf1;xC%@e zSSUt)Cupd^IT(b!!rX#DM(bIkUx1?&ZVkPBgnxF;90U01_>9O88FqrgBdE#X_ zZg7oJ{pzGrZeTKE&mgSDb+Q;{bA1X7)Ewp3RP~htD+Dvbu%SQ6t@p3wk1zk8;h{lV zTHE;eF~@THS!Z)#M+@B<$QJ^m4poYvRQt<2iZzPsWGlZ4E;rL}Y&#{aaD7fG@v|

$0i~dbWP%aPr;%0zH!D^ zaaR6{Z+`7`wx*dFkbY&UXYB_xw&jOMRZK^rR3SfHw-Wczp!&Z^sRQkw)^FwNA6yOy zy5`LHlvQPE=Iq%RR)~wg^Bw-&-OJQE)}wlehwZ2Y_+PkgI=*8c>oukrhHjNS^56q( z-?E7rU9)kV(T1|Yv2CVJpGjhw_X5w!sBWWftH9u07bZX)%&ys9Chu2A1lWbX?zEeVPl_8Vi$3EN*U`kC__*=F`Vn=<9}JkunpP#_}z)CG%9%;l6f0b%DVOeJWTU=$DlDvD@b`i7KT>e z{)U?y>8Z6);Wc9v5HSsUNAe7e(*OHD;P+RzX>XZ4)jt$GN0uRd^B@5W2844vgln1h@wNE@=bIAcQ4N0b8^M@Tn zfaM5OxjX!qxTTW_tV@)LoL;wvDizher(VK&Y33iYKx=-LbP8k8N>tfq>)lEo4 zK+XkQKspaEZs{drn#l4coD&u&HM}wY*xhfT2`CT=>Xe7Dg4ZuZ;u`!weczKL8h{k^nyt=YWxcmDfL}3c2B$G=Somf?-H3%iz{OY$EMI zYq+{uETtfA!;wcG#@XMxfJh{YXIbe(O(o=G8Y@_2kn$^T#*&*MGkq$1q7|#+Ri)6VRW9&PI6XjUJwT zua{{p4T0cWW9@(El~qn+FoCuJzYkDGz-YT9C3=Rh3FtJM+Ph|7_sIRi3Qc&uP;p1R zauG@qAIXr(<$3%Yf5m^F)yR9v>P9VH1(7f`g|xB?NaP`t8-G4w2?II3sd7VamT&&Q z=dp!BdqWi0U(#N~fgY-mk8l6}DQ7y#!ET@rNa7h=@tVEtk_@_`w38eh9(n!QyCDmDBplGu#D>8% z$KUx9k8T=Zb^~-aXcFpuh>0P<6rd!8V({F1LoB)fCEo0fGq=4Ng}1pcu%u$5?#II_ ziN-F=UTQz=g@6hxNCV0EU}SB*?;_*;f&4v zCYaiwJ5+k=vAUjfaMaZh5H+AtZ=h#W!sVJL-{GQFYuJ^_FmFl=s<;VI)C_)Z^IH$c zAHU~SN(Ah+_QTi*HU+I92}E~Zd(LfhfBe)@GS)P+TE&F7&a&9D@D}FTC}y=bkjmz{ z@r4ci=AGSqbJ1+Rbnr|L>4*|SN3E<21-C@VsAZt>Go?<3_uu{;tlN>{iH*B>^zH4u z+aIU1xsj$wxWet!*79*jk~?=^d(Le@0*%?2wI4=l1qDw}_YNDf(90y+fvJs)zj#FF zk}Ge~JEp6b;##4=K}$+G2<0MNMSm(oawNmd)&>@LwQ)?>6b_ow!1Tr#jbRI8%t;+V z!BwR5Hi^8=j%1eg{b~NxGsv5}hUiI*&=d{R-WUZbQNqyoF1=oFEwx{{Zr`0(emAw| z(bs`qU=VEqh2Yt7RX@OC^SMVGl$xbefT^A5{L@z&Kl!EqRlSy_g1tAC)(yERS2t5} zT~hf1gXt`;>k=^y+F}+Brit`$+FO;f9mqNkS=%L@w<$O_reV+$ix9IcU2pu&+<}-> ztLsU<^zcvn?z-whH24E}&CdBN)|K^qD+w6SrdWS`D1$bwaNk{5Jz{punjQJb$G3 zxW9>8dapomqxeL@&%XP|U-#X0)g$QDk-?5v?WZQrU$IVYKKEz`uU~+6N#?HW&s#C; zpH{Yqx(@o(M3gSY1UwKFy8Vqlibm^Jm}ceZ-Doy23V_0QFI4QjEN{O~6#RVm zhUa!&f8GjU2)*CRZ};yt@CIdEe%$k6!GJsr4DGn;>o*j7wyvF!=2YCY?~DCcY3QQ{ zq%58lvBxPX!YC#G)Rf?LhN)eSA?ki4PMhW~lUW+13Q+UwLH6i-Rf%c+nbc1f+7&I z@??~8rcwS^t7O-&TfJlHSSMe9<=i{betsAYe1h`k=D5MH`=bm4Pt~x17`n&Yir&W6()z_E$26Vr)icbt zsRvb+@qQM2sCPs1nFoF~{OFx)(ct?8Bq_Cas`mMl@+`^V(>2hCR{Pe_>b*8~o^$0F zVv9~VMMfJtt1e(4iknIGjlBBIBYk&W`CByD2{iD2t@l?qOvvX?+QU49k1|BNq$t`N zn!VIyv`lH6a@P015Iy*q&&XKQ2Z{)HB-xi)zxJtt`>y+~6Cd#XdxFx)W^iRg-5zCF z_ot}_;(~7tzFYEBgN!vdx1aXiIAcW+JQ9{Sfkj3yEkUueDRsVRku9rjwJkA zo(!ZB%4>a1+Ya{m<80CAr1@^C0ciA642U(Kc;=xEM}6iKp_vN~myInmYA$>n;-=!e z@;f*EDgDY*FDIV9|7|qLBj_e&3QdCVZi>qZC*yIp`|N?vl!%C;!S@M?dEbYdPdww0 z=%I@bvu4ac$ZYADE5gzG>{rfZ5_Y_QYhl;s4Vkysyp?$RSARyklPnr|AMg>hs|f=C z;d`KSMS=d9bC8HI28m{Xo$IhujE~E09w3|r}JISGbyRUm^e*1DQjw>J0ad;4M5x1Dr*J9RxkN zfOh{p(tHx7k_gL7VM>HV0-r;HYy4BD{8TxAr~=6iBpdC!3zWbQ65xOKuL-W*pNx$% zWwNgc@Wlr%=$?E+LX-pVzxS{44?7xdwIa+CyP m69DDl1_|*A+NU*rEcyRWw-jGC!iQ4;00001|0=}0tE$yE+;Fg_VJJZZy+Ijd=I2|T0efs4zjw=P*A8i{|#uUj4VPZ zC}uV}Nihxgtg~#7ED}vHq~}0my$f>gQrb`#0+#?CjKm1@LpDoH6!BX@_*itfU^iuJ z_aQ%$pf3;z+(jAAV=tgYp${dG^v9M(vJt=UO4?}Y*sKt|Ak%cUUtfjXd!{LmU)%_k zPgb9m3-);C90(l<93U0rhB*?>g;X^`g*iIxvIl%JmF8E>>r2OSfnZQbvivKfl}zYC zZNU*sS;Bww8ScHyzC(`vvb0SjT}K&p3dzw%Vlz%Yc-Q)4AM%W$tCm7Nttz6cuOu)U zNRq~OgDvXWjE$LKZjUPc?fL#^S6i2ojg^2FTrX;Hi5sPPN4zJhI5&l47ba&kInqPc zi8+uurGAH=CsIvfloR1s6{$JkS(CAQk(g-71nvHIAjhMXuK7NJnis_EwCB`9e3#UO zNRt24pu6huqE}NYg!c41MZ83Ycy$4E{bO$&Ux^Hbxd}5ibTsAP<&Wc~Sj1Yl?EUYWdO}7`B6K({E0O&lqP!f!3xO z=O~^$US_q`LJqbuR>k||@OQ${djp#EB<|bq6Ri5SlEBo!dIU|uJ2xgGFQF#qKC<>6 zx4WO$BW4^5O|xQ3c`!Rx{(s%ipFbZ@c`gd*nVv|^5_rR^H7{t5GW6CzRViNE?>oHL z%Dj7S9&c;9#RBud7B~r?HEAl#|^i((XDTJ?@ z)(3-|u6_rjEdFB3R1+vSKY>`og^t{%ha_Y@j*gd0i!Yf-i(Lw`c48C3mE_6h=bBfC zJ|iqA_7`t&mdz$OBMb683$lpt0g>s9UAw!R2E;=5$rxh}ukT``_Z6s`s5)A4cx12U zPGb!%KmFbtzELiWH%@qdc$R{2$UsG9^?}lMG(9}#{h8a8NltJ{v^*P26 z`TTIlvhE(PVTV1T2ZNW+L~_Z}`nGX%*F33$yzXbM8JzwPDD9a&)AGLG_5N53fhBU1 ztjOTaNP%-2PP%hm5xI|{$=A-l*Cnd(QW>!K#q5=reCMmXIcXjdXQNlpQ)k* za#S~5_V_`Bt6k3tLgwE%CKjmknH$DVMJ}7ZE*e}qSCqxbW0f5r5tACpAigMFJbWL* z;uG;~5Vm|9?b`zrid)~@3fyRuI^GoW@pbJ6k@%B68_KH~eO~}-!gwgAeu5JedEVvY z&VEloG%MPcSV-Ol`bTqnmmR&t2~9sPll4F&eeY4PUZJi41bn3N_=2D?dFxh>-*dp$ zPLdyk%RBNy;x;g7`jrljAopbq{{3|oLzLG`)NRAn)vT-$L!*BanYI0B`+XjuSHn1l z{s|V!*=%dIL*(`TB!C+4GRk@f7B7BC+iyRlT4wF~&Z@X|M9H4;R=3B^pJ=fP~Yir-3W@HLL@h0^*E{BdYHT>(9 zd?K!VD%KZqKR2DG@ChB^Ld(#y0+Sl z45hniGdLnFB=dUlwTI~J1=bfG`~UPesQU9!};w$0?Eafy0kip zU!~C?oU-38@OrFmPlDSRlaaAA1x8(JdCb$^;ZM@Z`$1;7m6nJVUVLajP0`Q89_Sg9 zV5qq6y(zGKMIHiyo6)vMl8r9n&y;5Bh>`%{5nO-ay#Rc$s{BHhWG|Ue{=dY^+Nhex z-BJgqDmQ~}+Z7*+IZB|h-rx({W|w%S%{Pv0n-m$QxzM; zK7(8*nD+f1&r9zOAsZbd308XGn7IW}-Ltv&ow=b0!MG<%ajUsbEnQ%;P%6Bz2<4i; ze5^^ee$3-I*{|lWh*UoGaFm##qL^5*>|ji}4J`S91hKo*-lY!Yzt!T+lQKCD2rEYy zlB6D;K03Dj9GSDu*60z`!TTpd$5GWx!d)fr1blXse%RsVhSn8F#Ig4?btHAe1@_f% z-CCP3wd!4t0vw@2@&V@JMbO(ArgrYwy9v3*cAf|+^5lWWmtn-4VRhY;$>dH|qeT>W zh*an?c2=dG=w~b!5|jGT0Fqxm)B^WkDpPnrs^P`D&z%4nqKPPgT^^KQU*wG2?*)@> z)cR`F*j|EK%IpCKHl`FN8GxMMRgjb_S3XH0!QM!?= zBPK{&rNbWK4i>s4wf#dG?|Fd!V_|qPAnTX+Q}@#!6kYa9G_n4q@DyvEQB2S>BO`c?}&joOt-Y@;s0Y{Qk%} zNMh8iq-(0Lym6IN3cwUcWj445KQ(NuPjYt%(kkWkzT^x#vvnvw1P!VDv%m}L1sQ|F zpR~q#{K#+mD(ilBhFgIx{a#ab&B0k(MuuFH0FImo9x$07!a^4!;9%+50y-jC#NB(h zEzNL{`zEZUAfTQjcmGDDUe^As)7!cr6>%WQ`NvHs-p!R!LiZ~`!xkw+@H8)X6}tjH z+1#e^uZNEQ--O3MbgEyBLPP)RN>Fw+-CTbV?9k>b$)PGmio#F)^jrVT_EI)|D=>%E zT;(u<4+GHS_$ws)RC6MRQf6;{y)VCK!kY?T0&P(u$>EeDtb3r%Ao`KGKrh~ew%407 z*bZB4RWEF0rCfE$AgYMGGOAL0rfEHZzS2jJwf&l~y6&#vC_<2HPbPJ}I>gHAkLRNt zC&Zg1KvWVSrqpZJrfNlS3a>uM1vMk*x)NXIF6^V?PGh#4h-lH>QWJ4_=L0T#d2#dJ&`=`dH zus#!fUmjvQ@B}%)>ZpIE5nf(-fvg`Fkt{I>^ZFj z9{rUwlbwV-^LAlvHbnV9Y`^q;NL~F=FjJuAxH?3m|Z6~Rhf`|Rf$&e1QfO9Dj7NniZ|r+;)_MR*;(|3v8P z_jQHuw;hr_FkbgEIAj(266K4(~{zz@ZphV2-q&4HaRBn<`7cPcP1F zK00OwU(H-KMW}^8;aB<|WU*xu)pRQ{LtDeN_v1c^;oKW5d8v=Ln1(H;^BI|HS%kh=A?&mx+*7ep;Nws) zuy$Qu5J~I`&ix7`WQ-)_Ug7hHO)r7i~9QM+!)_#x}rUS^r*pVz!1zOOkWG zc|_2|Q5_Qa;Lmt)qur4gW%^j*NXRYz)Q!M$5)acAs?tvLws<|$ zHu!9O7m-o!U*EimQzBPc>ePTJvvQ3M+T^L-_@Pg>rQDT{wnlWB1%j#x8}F+J%X@P| z!Sl8(U`5K!oi#U?@7_ePVj5GdRcBKxx-fsE6X7h;D4GU`8SHhHyU8?eQPX8%kNj0^ ze$%)yoK|v(JEcD6a$s=5H9Q0Ly>sTNqmqz8UP>f7T zplQ(oI}?QpynW;!TOqHQhnvw8ln zLd`eEzPqOEQ?-BHvJ|dW=OjO$K;#-vG)$<`XxB{#loihhWo-r@1p=yqZ>hrrqD<^K^i1n{L@tvM3_5l=r0tuXLFncZMUx9({*8xY6TJ} z3)_4C8H(ewn4a$%>dO1~(dtuy5qb$ka~w*}R-#LJNNjE<;3!Z*XYIf;o|)3fV?SRA2_ zA|*%NDe23e34qd(jui^Qi}lL9ir5`!U6Dmv&1&;a z0gG`rQ?1}HGt?HJ=Yzge8~<7@TwY64&E&=)0txZ7-p)&3Hv!)`1}2>&zqzek?}pU4 zX=sfzh;H46$5{+H;e~+6UC0VtyZb~mfefZ2Tr7@}Ido0~XJ2l@PRm+A(as!n1H8Ou zGWEq(T|{$tu}^&89E1d9Jkg9${DyD*yh);BC1j1Z<#<9sf=1W;fMH}_>Tfd#*rvs%cG)>6|2{|LHkkkiHw?0Aj5*(uC zJ`D0YvDA%V4f8>Uf95}1=Ryo9kSOF?Z-ukfc396RP!wnXz~(>iKkSn(Pf{c8#YBR- z+hj<0gKaS6=of1l)rnTeS=Iftss-qRZzsN96J8@H)2JFt7buXIFYstu*xfPoJ^x$r z>zFJz&S>s4u%bnS<%R|6A}ItEW6~d7;k6NAGs2G%fog1x2G!C-BS3`8s7&u3qU0g# zc$}ac11Ww3hwMWkXay`;oPaH6E~C*O!3=}|0QK^mLSA>>!-?_$x#^Zd2^JA7CsD9Q zo2=si(+Dm4WWUxStp#TUkwRefeyrN)qyjbyRgyGK(tIh-L-2UhmSq6CLo0AT*aLa* zXkHA(=$FNqm1R@&5VI@=p;B=~Y`?&EuCm3WjPUSPX?Dowfdm*{!aW&ToN}Ke2#IeA zP<}je%FO(#mS?k8nIKwnZ+V*30B zBmLH)X@F^iNE=VyuhPLo*u;yD&aF5*uNd?e8{%wON>(TCV_h87Q89oBRCu3NfZ z8>Pf+SSz!mc?mj&fm-P%6Yjr|xy5R%c)pkZ`b0Np;Qb=>wmYwUPxqbP(<&bE^n%({ zOjf)hc!R#v}aE;AbFZt)WP5QJ9}C`cyhJ&hAonDLs`(V7%&Y@) zTY)Ls%dR_%Z6T)+yq#Qqjv=L^oJ>&^U@W#0tS*>ob!$V7UV3CyiL0H7DrJgR{M0KN z4pxR1l2~FbG1eWgMa7(UCOHY?e3`BBPe!)ehC+uX3)QtjPyW|ipsG_* zUDl`^mzl}XdXXQFGYJo?1kSpvBp7pA!_w~{v-#Y7eNLqTv>O$ThQ59C2>xO(OxLxK ztNis$1Ajj3kdGWN#LJPAj5?TcZXFgfxGl~A!(eV<5?Il)x4ydid2DXikfN2VDH!(h zI@IpP?4SJG?ewe5#YHbS8n;rP8p;?qatKxDaWKv!B+e%b@~t`00roaV{HLVKKycAh z(Um9|Oh_X%Ee>P8&SOqkh?iQq?;s5) zXh9Y*3a1pLI7kkby&TJZO`iDtt)$wA)jE;HcC;Q-e0uipB-?psP}utmbqw@xMsSZG zux~r?+3A|lKoM5g-~1EgqBhpODZpIkbfr7Hr|OMryIs)5$2!2R828Wj_`_k$p2y7& zhgo0i904_CeuK-JLv=OSZPN6O7T1F!k&z%IwLlOf+T8b(k{B1VLrOJmk!topn3n+Z zDUptx^KH0%%pW^@`LM;dtb0hwVdCg}oa6Ftb{E><`FzVkxb%|j+%@MsR4P-xh0@Pq z*N@(4pKj;Yo5C_6!rD-bNyjQ~c5X`PX;h+)WWzAyd;6}hT8uM>JaUytEt<9&`_T&_ zqIt|A#)J(NK5eJJ)FRIRgDkaWo9dYqBbkBwUgemu*40TkDp46|)RMS)TgXFPnD1`W z%>cCdvcai;1){k;#>7xRK&GD{bPRPB#td{TaA<{=Q&9`pje5Tnr+FgI=LB{R2j=;> z(iy(HZqdG9=9Har`hjW$9WiA!9 zfcn%>a!`7@d9%mOG|- zP0*ep*zN_H8F=ijfM3MW_w{^k;?dD@UV}gY6n` z=w=wBRXYge?f!Y=_E7uzM@g3{>xfx>8B0BL)W_-v+v`tWkou-W3}0C9=_tSqaRw+} zE(l9Oh##f3;0R54f~)wK*Y}Y8XhrV-Boe8n8@Yj=doy0mV5(O0r(FfLWam4I;^^-Uf0^*avTdwjxUr$GFOHOz6 zD~GK4D3`S!(sQvTGu@o(@3$FhqA~HxKhzBSvhPt;aT^WjmR~(+%LDR6VWE!{A?Hna z$xZyk*)lk-&P2Ediqz-uR2nmj%ZX8>dsu-zv7Iu7Ffs33=M8l z>P{1gM$l}@2;t4?7PVK=osNYjbkLK-)aHNcn-G!nJU!UIS41l+VUHIDCmYwl{SN=i z=MFC-O$A%0)3_&YuO>fx#66R|zQi=TqSAn{yAQmN5 zF=d*=@u#nQFP@ zKs&GevMXx%gEtz@+}dmJ4@J#4IsCN+%x^wB5m|Ss&O{`nChy%{x1>udkT=%*i}je2 zM;*uIXJiF2PF+$3#(;F=v{d#}!06>=Dyxgq{@=B-L}c}HNu&P+{*a0YNd4NSufYGi>ocUzTMluIfNzdR zuUqoxSVT{wTeIU?%;rwNdRm?99Mgjfi2?(6x#MI{*3h+ECwPO}49&uzR&A+iF1McK zAn%h~?dG5Je8MyI1Y(c1XC$|cs8LMD^`_UU86J$YURogU+pa_Yp#TmIj8_v7TQ*wA z3F2c%_EhT}a$b9hX3;j|B94@d3+F8ubcM?&ToiUU?=}BrpZ8|D z@;wMmfMvJc(8tkhBH3w89i|J^ao6+<>#g1{9+B_7K!8}%Gptif43&ZEE9dp_Is_W| zv^@v-{Ja0P^P31gI(30c?Fx9K!}V@liZzx43$z`N6d*p0k9<9!EY`9cV*th6s#@MG3y_O(;n?e8nX;_hNnc}1%^Y{*K$v!%1chAotuoAn@LOn#29H^r;;) zZ%|QA2dm7*$>A`7Y*Rw{c@JEBHJLr$viGr_E5W%U$XUu-pD7NdSy>0~qJTRw4Vy{bch0i6izQ5io=B)|kPbI|EL zCj7^;!zNTmkSSVoBUFBxjEua;KK)rk5$fvCv(|?FfOPYeWL?Aun0{qT*PqonwQ3wp3!%?+K@R9)HH zr$)Tb%fjxPqt5~S0ypMR`;se&w7DnyiNidmSM!tTU+bDGFC-b9U(`!u)lTdw&PrI+ zz9Y+d`Go5X?)5>ccVh`UKo}A}{-a7R>`F+#>CQkW_cY|#jflLy|F#Jp9-r*EWyIk= z5_l=%$Njige05IMXAKM2qGTfdj;G206h5YHVllWoE=mroEEqrX?)Bv)&iwwu-Bz$( zg=D$8s(J&9o&r>fYE1DEhnV}%8N+^%9q;DEGLCmPOSazu5UOYu`@1;@tET;($oGAe zRPRLm!IgxD8p%z`t71pU@`I}C;=src&8y~y!GM&S57PIAkpoL&rkHv? zJ>2rjKwV6oUUcbTx5K9SGGMdnU!5Vs=*Ibh>ET!Bw{}?S=rawkv$$+7a+jZM! z?Y~FZ*TzMe%Ok+32mZECci@jGCmXVlo)qKlJj@MBwWQqVI|>}*ETsZe-BLr`d3g2v z&6y^TISgDzgLPae4cwiW$PIu>sID>&5Au@DM7A;>YQiMW@y_Q1KhJW}a6!Yv( z>_u%SDNo7iiGK{HPwit$O+ZQRg9Uu4MIt$7^a&=^AT|Zk>y!Bq7^_*=Xy=m@By`~9 z1vaA+F_d{xVPEC>%a0N-H@4>c2;;@=WMWIUk}scq@)_o!H!mx4t08O#p8D%YW3^fP zt_tEvs%8l2rM*1=B<-M&ith3Q8ZqU!7P(>CKglO>D1GWzI|V5JYPQKcv^Cr9lG-NS zx^gQ{wnB1I!kl*1I~JEM7g!t-cxfKN6G);dcP9uTsB?|m;O#uNJPA;B+5@K^IdQPS zcr?cUjx~@!(DS^gHu4m;&*0+wIJ8qJaXynPbO?`9Z-7Dnb^3_HB9t-0E7X2osJaMk zuHQ*1R)~zOK_1v8-TCq72Dynop6EPnDd^i$kjQomKRX_A}c&a{}Mr_T~jMG|4<7icK$L8Pe%yV z8G~+!q#QcUX-{#9fRvz=#OKnz*d(O#Wk~#NTaAxh@V@)fz3?`%&9lht&EKvSP?lvD z#q58S?=jkIvFajAt|=1`FssM+{lXelQwfgmaD)O5b3;EyZcjZtLl@a13#hN}GuxDk zPCemy^W$f8h=iV7^p`hwwCd^A%>L9(KA!VrouE))_0ps^%$H@Z?g@U?wd0<2PJssJ zd{rT9Ju+?Cnnx9w>5iT~ajo%(_JvB1QxeDY>#X91IvR~qMy1E4RyVm($5IJP zE%_M~4J!o-$|Q%$XzbD#+Gu9A})2GFs)0psW=#N ziySjRCVVxVg8YXU+PliAVUWojk^m=)ZI|U%u_*ev%5i6{)%&_#oGor7A8ov9w4H0C z&@c_?k7)ebTQ6<(P9erk|Ihw^zz34=XZ*ARsrF5>-Tit!*05NkdgLFG=z6a4x@d{%u7Ta-j#J37 zjjA*#8Ix+`0oJ906$*??(a!!$*aANL6M-3@`I8L`@x6H3$o=LeGU-Jl zlT**TsE|(y7nt}c;Xw`X*gJPc{L#4+Ri6Eskyr5$C}n*Ry6}GsRoq%v?Cc(cO;jZz zqcl0;E{?fF;`A>v7feD$H@nTnyC#Sq-BSyqmR|WoeoLb`*tmG-b*AU*ulf_4i+AOA zn`hxHh%74$RltyO4Yh}V`2nmF!53B|+PcMhSLcYprAJ9u(XT)P--*oFAHD}NtXFIX zPCs?+eZ$GSEN@JMFkT*V9-ew^haw)5a#Ob_K&&U?0>#$>71HD~NC8TeF~kw#OOh2s zwCY8!1Eo{Z%wEqOje~y&%n5eLg9X-lc$)9GpP&33=XRIO97lGoiEA4SQjwe~EZ_r( z#o(Hc<{i{bMnF{BR8lWdsm*-3egkcPc2m0~5PDhguq;yh4I@nht{Rk{-7GK73CCmGyi0(Q8A6j+#_a$Wvn#T9ZaG-|`~6%W?SkscwC4W8q;-Si?pL^t7=w-4#g70SLa`@*P)a4b=2B zAz;iV=6HhiBrg5hkJw&ttLA!wU?eGo$+<@=WOX95RZ0;PG~|fJm&Qb5G59Ox_ela@9bsI>pSe;=N#WNq}As=qw;bmMyMZ?E&K(ySl2{u=TXL^#_2jo zDNv^=22c*rfTtGg$|$_Amt~#~*uH%vu*?XXNZCPoDo+S1U7K+o73A z=aI8yD*4*jHh8I(^V|0-B%?eY_=Dla@FwekCn<>{{vSh$rM@g$q3l&+^`YJ=BF-mX z7>{k=$3O#k&k>DQ7Up`{KMgDzBRRSx^{c%m_zWS`H`d@F@zvs?}?%0q?9FV#J>mr52boc ALjV8( literal 0 HcmV?d00001 diff --git a/androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..34d241de213851760d4918d62e4e048451f0d9da GIT binary patch literal 15997 zcmbVz1ymbB_wND$f(NH)aEBl*F2SM2p-|l2iaWtwN}*63Do~1*7A@|SQYc>B-Q9WV zXXpRkdA{dtvb*_Row;{rXKrFO)D-csDX{?nz*AO|(?Wi?{XM}L$WN_VCrsoQmYdQG z4*eI{z@>da$qXvaasdP$3>ZZc7*p1{D(Fu`;(X zx3sX}g7U-o`FLT1ynKS(Fqo)-h^U|-^j`-9Qk=V$ji{EK!oP$e?<5%PJU!h+d3k+& ze0Y2WcwF6WdHF;{M0jERy!`y!NCdZspNprtFSm;aAiy^*=KHr@A;h|3`#}r@S}PjDI=ge~R|d z@pH50)w1?*^>VkgmiI=g$@teAH&I!4YjaOmcO6$(r+>GU#=ljD@(b|5plqt+0m{jued4 zPT(I}sH%!8yLfn-yI5K)%SkXGt>&?}w-Ob!wy}Wm!OXdBY^;U21+9dhaErkBEx0Ys ztt>=@EUbmBY%KpxFXw9M^|x*RO>g!8NU!d0j|?tzr~hw0e?#tXrw~=L_dqt6-@jr) z+xq3duAJEWF>- z^bu**G_qJOQmfJ-Ms?WTZsQCDRdG@lQU_ED{wZ8^xi>BkhHk0Z4Z9Z?!U@zcF2wGl zf=lXp$cD$SAgCA$Y^r~6R{et7h&K8a#vQiV4_U{!-$~Un19%(tgcs^i?dsjGRopNTeu&aDZ z8n=aLispisogi9ouAM%}MQdDf zMr#;+`CxR1kt*ZnA02mr&H5go?yBoP0V2LE-0m?At^Uc-HXXN?J2%0Wg|IRRk|nnk zD#|>yys5kYywYNb4;|-Z;&__Q7D226Jc{83AUz957Y)mOFXbdv!?@s7%2icT#aznNw3GLyBFAKn$nbLc+j@N70t zjx?QU6f+gRU2&WT6?905mxAeW{ZNEcXXG-&K}Ws8Vg5mMn1yE_oNT*8x90o>kHaSB zj&NBc(%v`B%EPSCQ$jC0F2(L&<_VW>QEq>3!H!7cuomN_eJ1r$@j6d8ndZgV_2^JD zL4cjkxeSFnsvDLMQ5W6K;DXvkj_0-Qr^;&whM3n+$9oFFA3xokDJ?8d&8w<=&iV|v z)Z-NHb`;Sw1LU8PMvH6P1oQ^q=}rDFZ5$#}maKc9NWE;P5|~cA?N_vNe;`HX_=i&7 zq1x#AyqOXh@%5S{NjT&-IX{y(i86%d?7EWY1)93_=I=v`GyNUQa-ZOH?)U4Mq8haG z1?Z3Qn48CT&Hay7x_ zaS)8H)@Sle<@aY}I}bytk6kFRki1W}zf33!yPBn|d8O%tNZApdUnBwhj=85TEMsFK zZ(~MIi-epg?Avv$>&SNR2MP@zR^R~k4OiJOpV4rdi(p$;qig&)?y!51#`DiI@3H*eA4&PS7rOTRX{BZfxeC8_thg8y zzR6e#IbM|kh!Py_jMY0x1%IGgGXf{kUn0eTRjgLurGb$tWhqA5g%8Zmi?C{pqf4Ij z9<}Q~5vEOt)&PHkqrI`7ff@rF4vO1q9SC}5W2zx`B=ppkn2Pd%sYvkMH*RW$3TTm_ ztdm`n$Fl32`St7|ICm;T0UIM>njogzr-OK)OY_0&CZg0s^3>Qs_a;3oH;_U;oEBT0 z+TiPMo@L0x75)3?vDnk58nq(QjlLnfb^9VU+p`0~{Lk(S(f(4Ddhp)#Pr1%{aQxun zWs3!AH-7cfBIJE6E)BU&nH|HN`Xy0Noiqy(!@T+U+puEQk$O=Bp zz>y%fxizaF5jcg5w>Qs!LQ@=Kxp2* z)lf~N$(v+_$;IoQPiQWv)b@DyKr=Z6&NmH9I7U0WB==<*x}VR?-mfi{l|Nu*s|To8 z$x)Q>CTID73wi7hj_K7@4R6pX_=R7Wl3m;UYHnD{GGys^MNA?KLMKH~T?GkjOz7l? zTn&zyo_vzY3!q3x+pfIQIlIbO*v%HH!;mL~w}VnDW<{>AzqfEByJv&O291KXOv$H* znCwWwA?YkNSfH%dcMR7x_MV$CFyd`8fuTeW^Ez(@9pD<-M73@_OP%FMVvJh ztv;#!^Hvj8)_~^_sj`RM>=Um)I7+nAX@E+CWpNI# z$9GOuTqISO(9JECW<(&=RjB`|;{AHQl+Qbj(Zk5V+~Um5j8io*0~8DtN;82cX3$R0 z5MDK*XVmBxgfM38u6K`Oar)610`QI}1rbTqm}7znokXB?2Y^UV0;r~@tK zx(-qY%9i2VlZ|ugmb)LAOZ5Z>$T54>8SK?^K-7;T?a+8ucx7>y8OIpXO7=P=SF2NW zM^t~3uxes%n7|3$aSm-_9G?uI!fJf5#=2aCg*fIa8nSY!0~}q3Hu4oDYD=>YV%X=Q z@Ou|68S9`A3kG~Q>YHDfO?D60ms-bBt&{wA*Ec7`rMR6ae(aGHNZnOFZ|d<|_uc9d zYtXBh<8OgE@AUhow{b`y*3c=upalgx!w0;HYAh}{YO}^AbkJ{K5_yWHT?7?6Sv;V4 zF5@_d?!2efriUl`l4Y~ZuV8cok>JEH_mKloQmE8mpGU+T3;NwEo0c_fmJYW2HZI%DXAEWYcHwnM0QSFf`g@b^?-Q7B0!gYAVCLc7>F9 ze<(ENxk3i0`uaDl` zkcXY#g=#P=0&Ulgh0QhK>qhGWTONe)0dZR&3zYV0FlGVP+^2SEiNPGqCskO6OOBjaQ4C zMRc8THz6@OvQ4OmcU&(If4-U_E-j96wk8Gl+kKFhsv;?Kk zEERda?}1q4bC1TQ*A$6I_y&617MptF9Z$iZWJ3C$pZuK;YpU&W8l^l%ULKZGaV;-)kY`!r#$T}e^Us4PQ8D}UgP zu}zk`N?`5f76a`n%be<>JIG(N=VerQ6g67177zkT;YEw%Q37{1PXbg+_38sFFs8BzDjqr$Va&!`sU|t4_`(WM3qEONh~wIy%B949 z1(>s_L()caj(6FJOLur&Z};g;omw}jDm#N2@wqcrtdK#xbKSS{F_Ac_ezQ*-=$?R$ppMVJ|u}kx+7C!}qwddpQFM>a!so)+a0}_@fo4bC{ zL~Rt;^hc=nvr5BdQQ=`a<0$X4=%3|V>Tg+=5BrpbwXD&+V>L*_Fv&`9Hp8rg2d&US zDlel%40JK2NAa`Sgod-O36dMO_T_U4X0K^+)v{z=zFwdFN2s=(JG^u}y zLSFuw=@*j}Y3RIK$w0mmzAzPdOjsHnY-@z=eoqRuWPO_f=ZhJLCVP<^_VV4rW8mdV zxFt*I6E$>+9ob_P+gX1h|$kmGA>`v|up!;6^7 zd$8xR6O`@9OHy--h8`HlQulThHTU5Q`00Pel-FetgV=1LZ~Vr zK-s`gWsvWd>Ca78HCEE#QDZvS45+=iq6eiPt?|$wOm6J_3wuBp1cD+Ox2>VmwlQTL zD(_gxuWnMTjfn=k(eyFNsaib_0=GYZ%0YL|ZEh|CPrL-C-}qqI+^rC%YcBj1v;6E_oUWUvSI~$ z`qmL)k0ec!Oc2)&JPxxf~9haRNRIfxwWx#n`0 zPSH2T4w3SI%_ps@`G;&OMfoqLGd565LX!rHNH$4m<$62gZ|;8;XmY*L6{8) zi1cWotC0)1k0bhd962-sIqBjF8_?Rh3;HHSRLs<>>%r>?DcxDetLT;og&a`;GVKiT zO)L&TzyZL#?iUqnDw)ZxV8E5gt7%yeo%V7luj z%}A~E*_Lc3xKusf?k45cZJ-GS!gcRln!ufTm{0>I-uTtA}ce~wW>AnL7hQd%eD*k6aeM1&W#hHP@X zChaUB4^!>X>)!<@QiCs!xZvmom6+ER zAt}z>Z2T;(W(euRgFj|JGX_6Ylyg8Cv*ANGYz3d7x7Ezz%EU`4XQI>*HP=-9en7Dh z{8-?lqFYO{J}nz9TCN{YUxG(MQiG8+`>DiE`>affJ3%;*IqSKOf_4rBUdp0?@4xbV zBENm?aWXo~0A;?VH~S4ct({XEoA?@85t`@4t|2rHj^x6@<0RpWC1ACu$(ypN8Fdbv ziCM{9bjRj7MMWv>5{`$;2-_CEnD`l59|meZfk1>^Sfwfhss2+E z(h7v9y{J2Y!ll52_6AXMrMtrevJ=t)AIw56d-z!_@N*X%F%l@yMQ_j$rCH|5x?A-9 z5AfX%rIb8IpIW6W9CDjtF=rVIXQ;eb6&s+^DY&4kefom&1$ zE&UXtdjJx--6(MKXDY1Y(LG=m5$09H`ZVZI7$oJBZ5V_eE((cWQ*RMDdOOx>1#K9( znVmK#M%}HUF1n!K3r)>H@-y5o_HQ2lAq?_+Y6@stdymfn)rhIcRI8^Kl45ewSV-}K% zi%}zp&~T^+%TJ!_!4(oPKGE2N5q0;{&sXWV_~Q{`HL3{!VKej{D+R+ZvNWKO7D|cg zA?8}-TJ|gwUNR)GHa5zqM6ie(0xEPl-My`=)raxE`H1q{&1EUMB3wrZp}%r{Wi@)0 zO@_F=qldu{W;`Z`*!-iT*>gHnsfZ?-G&A>c z=d=2>__SYWhimHQT^&P0+R3f%Kk|97V1OlF$Ob6gDMcSIiNNDp-3kZgVuhuW_hp2I z9A%rhh3eyV!TR9dV{(+UOWOqf%PX5HPI!fs3=2WZruUJW)Q**gfpJU^8U9c6X0xut ztSo_tSSSlO*UO&i{qa1R4(~u2ExIdj%}}c4oblgy>Yp6@Ep>n`=Ynt3Vs~Y)+h0xv zGCLBqMN5TE4eM(PHL&6GM~KdPFy}tm6hAAN?f^R4I1+DJp8Y!ZlU5S}Dyc)S9o0EB z#5mE6tUnl~a0seJ1m^Km=&)R%04%nC$KT`H*nwZaS*vYTn(vj7FFz2t-!n?q^Sf$0 z?IUydH||tJd!Sj2t|<^SIeQxklQGX06V#}!IU-T-B>h&Co>UEOu^b60#5bjf7KxW`&qfjttFsH{Vk)sIIAn=eq~LLjU#8mS zRTOzqSlr2~aG`!x$fsz1^AR^NtbKLg#;Ok`2i0vI2-BDu)>-s^18S^*PkuFvE=7Ez z%>4Lh4X*H07jJNc0pb38kx<4gSWbBu!fx+ z+P8-I(m{`{zaJacn&o&U^sdBU_-l^BFve?i3+|X>RY+u1@j#W}l64uqF3PaolJ*R2 zqY%umZ=P7;rhqobB}?!a2W#Z^_QoECyEy2Nl5{Z;Muelp+;b@1GN6)H>l6{Q_y{Cn zE~87&KG{CfmAf6v$u&U?-t8pN6KTU<{!p&pZIz5aArAx-v#3Tg#of)gYV!N*a6)rn zX#8jqh#;pYZYN$92l4EpG90o>)?keAO$Vt2XUB!kA3`SWg}&6)6|#%{2Zz3E!IkE( zzgILx`8^(0jaTsn82l))7slEPTg`_{Z4#nxkNpG=uXrV*K7JY3cr2~^6?cx)mf{&l z450J9GRW%a`R`C#YbFK(mX+D3yj{JO-w6lKsoS*!k{L_+`kuT=i8}%#O~H>ENJFET zlPVG{N=f7r6f}-j!g6VK!;tj*Vb}E-I;FS$Je?ej@W-wa9wtV)WpsEs*ie%>HWn_` zR7c!ikFC6jSDgEFt=^3XIdXV?y~ldLgQd2P5~gps=#7ufHP}zz6v^_4^?=OJ z{f|$>66@*%e?G~KfEb|EDX7aEjlyc?lLdMv7(}Vht?+t)R*d=0-J`UMAS(O_kbz;828IYB%pIRMy8j zvUTfZCk$-16tjb(AeF0nzZ8`Dh*A=zMmr3e!N>D)^=fM%3|W9dC_0MBEN!T>`JGJ4 zs>?Ky?#HF!M^gIF-6|ej_b2=@+{vfRh0T3YJgS*3z46@4HAGlCsyswK^Ow*hta&bs zr-mIgVsc(UYKq$GTYFs4Pw{Qq=kCdSEVz0j*PljWf7Z}};;xv&TPxe=z8y)WbUSOk zt>^}qm!W^TYm7yn!E97GH}~e&K5CnW-U0%PnAP(7=UcnHDX>haonW2( z95&9IpC~!Aypvzxjbv~s#)j()AZtP|%5;$Cx%!8i^l3cEXEB6eVS0nx9=v$=MpGjlk3e=(X=j5f7+P=KLuVXJxc2R46wEdmM>_Usv-BB zLL7U>eCagO4{AvPYk2|)>ZYiyIBjpsoY>K3_{CDW&>MzX@(88@h&)y>drka@cg-}> z_>##&CdOenJT0KQ+rtpI^BiqLY%~M+v|d;>qTSeV_Kk%iKXbc+Pju-i*?TWpiXI6L z5>P*v!(&4QAl8l?^ z@hbfE`bVn$nk^=6s}+euzb-U-;;&yg3r%(pxJ1y6FJ zt=|=X?mIj)6TWbJ%X50xO`l0~`(gqA4iwpMtY>0)piHjDGGB5=yT|4x77b!U?+BtV zi3>BHsavjL=55;;GCgWD)s3wA{CqjGI6pL+D*tITX$l#O4<-rfi)>m~M-ifG)|8-h;Iy*jqy=fD2}>j1UcS~P%7L~t*c%kwNEcEW9hm{((25;&y5jerIz7a1!uwy~c@v~);};lW zYKRfkl6_3Mvhed42sBf%Sx|c@9Co&G+;ufJm9Ge%P*L?jCoz02kYJh^p- z$@GMol*4{`CQwRX=<1G}l>v9(65y%Kg6cW?J#*?GFh^@Nta`Vb-3}>U_yaq?wUQ_5 z+?BIwv3EI*UUO1C!?aSy_(0-y#>i*Ct*nuL8_gb9RA6r;@KG(>JX-+9g&}sTVP=Zl zadn1W;fP&*JqBv20mMi2#&eRg?noKJ0Y;toHkXXcVK}@fmRCdQ7Dp7n@_qPvgp$J? zuo33IgN&@tDvnp_-0)K%q5frFwkR`3kghQXd~!=^)jjZLR?-PiPBQzb4V3o4M@DO6 zSP<{=ty^GO4Tvj(*}YG)RB%AH>rFU0_xh09fgpJmh+QLkNrn6S$c&U6AO)pWPctZG7ab* z88`g}8$I^C0gl}z_2(i8bVGbVdM9X)F5p{BUfeP2oaTp;qc0U`HH;4Q0aiaB7G;c% z`qdeU@bN@RurW}DA3ClsCoWu7yY6w>rov3s1p1L9+7*@U2^()l!P(jFE|OIsc=acW zQ=cI9^cK2c&38-3c|&pi!*B~=W)io1yofahSK3$>t<=%ssJk)X99^>a$}Fv68Kea08Eeaz5A%%YgvRo9|ALECl> ztz>u{Yuq zoa$pxT#?yy!rRNiJAxIV3#k}QO9ke25V>WpHmf!X%_dkL&Yn+}L3ip_#e6xTO$D$i z4Wb}WR)Ij;f}V5N9o_F@KRR&U|N6AXgHI1(m$x+~$t|SlB2q0H_d;mJl{!dCRxN57 zU8GmaLO@l)M3(ZgD_`>;_$zKs(}%sFv;(jLi6JN`#=ajCuT>yKsR%7S4UugplHJ>% zqMm6jCr1Y1nVB$cMGy)wc3Eh=b25uen|#71m1kaq zFF=Z*bo?`2PVH=*(OXN7%fLJ}L(}o4>UlM+WTb%q#Jg|eL9}Ycu9EN`;_;!9KP}At zo0oB!wWHAP>QFYO5>p3|hTO3Jj3Y4Z2!qb%y)0ycx83K#YCSkuJ3tWQqzzft`@BedZzVYP#}}}r zcn`#IItMJ!1&*G8Y;7qna=5_yUiCQ9XxOXRjgzWh;3!?5&X9y#NmM~>+5QgG88&7$N1IjQx=npeH6?6&eS-RVcr<^dvA!eV;TV*{0 zh(Yr=-7R4aNfQ8JNNaYA1rh&VPO8{xpzMyq=~GtmDQfr3rfEyi61VXe%>6X8h`U*N za5_Z)@i{xnGDjz;7y*2A;DqOpEG-G`Ao@A4v%Eh+3gI7rz>v95TvNPhYtH9|`1Iq$ zbprfa9Lw)Y-a>nX=(~ISodd`boBOwOr??3n%d?y?kqr}s1`MpLTj-eOJSs@qF3oH6 zOO$lORG8qX{^&(>n=Bm#0+DJJuLycVz16dR?$TG3q5=C7De-|EJznv9NA`RWx%aVH z00MIl#g~vt1_~VIWzf!-c~TpREV^odA+{7C0F)|ybfJprRv=_@s?kSD_8Vp+*y4Rs zUVr;Ty{NR2vWN+uYHiuzsT?)5(c5&Dv7B)siFox+feEvPw8}XRASB(?#^VQ*fV;iK zn;Xz6Eul8Yj`3FmR$M6~FWsz%o)Wk!XaR4))eOjaC?5Z_`Zbi7z)|11uIp3e>K;o` z+RSk;dbH*jvj`MuiaZKtK!>l@T=4B>>LZQQvd*I>1Yg_1#mefRuWlD~bUp2NH;~P} zFZ;;KhIUik#80E@QIk(0aU`~dj=3mvHoNNJMbglWx;hI-MS{TUv~TxMj*E#}r_718 z)6J}IO6$yzA^S%mt($s)HmyOYfs1hOTU=JqaLuL9=b*1cru51AwQkZ2OqDQpS*7E+ zuuLiR&;`cjtG)6}DQiKpXBCQUCbJVSgz6yjagU0hg?ns4KT=&_#=j-*$5stiLF@}d z9$SVagLg$}d%hZ;%M#fgU#!GouZ<9X^rY7R{a1`RIfDD@aYOcz@Sl$nfg)pM7$`CF zwPk^?KON172EJ-%*eeh|kvZzGl4c{xUD7+)Z7Y;MlBEaMx%ey*hJqFg7GIVV@91F; z_YyC|ZyC@#Ug8l{PKQ<~Q8SR=P|>-iv_>ouXsB6TiUvTbDJP zYToT2J*nMl`r%tmQ|`Y5j^uDSH&Hl7RwFP^(<|(shci zgnGEz6ErpDO)dFC&ccfRi)iZzYil=tNLuZiy6<_{cO01*6g-{zs=v%P0`Pk|p}Q;3eUX(hI{id%_V&8y=4WtTh<|xQ!3v{r7sT#*91fTe`kK#} zH`VV!n^MyRDSuf_Ug@K5BB}p!316W#>d1FW&T!PtAqc;;5}r6&md##{_Te5n^7VsX zyR%*7)M#SM0QpSIue@#!Hy&dyW~kv3>MNgp$t1i7gASjzQ3XsNZD!>bq-8l~HR?a` zUj_Z8Kkz#$RIPfwux$CfCWQ6{4gx1UhxvDA4f;Z$!>5UWKt&!rHfp0LfV@>pWsz8Z z_F~>ey!sr{G%}1I?R$LjNugns6=mSUd$B!zrjYO58@TXe>Gl!TIQ+SxUe$q0apo7+GsYaibY7}aZVYds^95DFtylhDWAs981 z4SabPw^#48CK(e(h(qvLgW~6A0%a!+6ZWOt;)lKRdY^8xF2UTL!|ES-X*YXD*MJIQ zb3Sq4dOpNjYIoJA=Rt&?6-BrS!HoJDmlO>mcD|YWH0}J(b$vResgoVN94N?BrNl0t z8iT2~*KRye$4D}{sNNjp+8stDZ7vulXhNeD zjuB20zeXbM`~ zPkPrb^;TB2mv$;Hr89wblp>uq_GU-fyC0y2Z?|4{xje&?CV>QNCh_H#ebkym9!-eeT4tW zFBE81?3kY52|VepxjfK&vT`?J5`(J2{H|=B+^`TIIAw49O#vB8B=@GlTf8`MQq>Q7 zK|&u}1P{IsAkGYPGq@R1F(JSth@RjH5DE6ZcsbR7fE$8gbr-se+4%uM#kfimYUiSL z@%5teRj<0?vee2l6{de)C<2mdBNOWt`j!tZBJ(>*PaU)ezYwq_kxT{|PabXWGx|E3 zV)A4PW7EBzk3cT%m_19kO30o}um+XCl$5^;R&v*|R-m$2_w3oP3M=0;*7qx**}4t5m^2e(CJ10W`Os5i1E z&tv7_@&@F${Br=)ucE!35}Hxp_XZ3GkKz%++BhhQWC;r*+IY1$8i!Xf?|#}piY6t7)TG79-#u#unz}7 zxY7ZpB zu1WCPGvlg?=pmECq_OWLDB#E$vva5Fe{jGfRb=p{CWRa%s2W z60Ws2ctEFuV*~X&Yw(KUD_y z;Dg=Hg5mP6i|IXk9Ekm->CZ2C{S!?Dw)cof7i;ZC?!qH{OS6Z;xX8c6N%vQZ@hJ{h z<$O|p%Ko{1*#Q43o<0K@4eZ!nA$=im!L2oY-ke_PK|ooHlgp$Y2a(=2p*OcjCnsW& z=w1{m*4-Fle$N~fH(u9$zeae1h8U?mDBri;H++x&9TnymhMF#s+xHo>4~ohepA3K% zYbzc0{LWnC(|?73KJmMEN;&Tkm1Wow`SF@n$+dnu^!JCZ$VJ<379|tboSyP!yEmL z)Y*IgCTH1}nPED96DwOKD+ya1y4@v06fbglgQsdEt`h)Kp~wRQGGlDkREEKode6*58kR5=r8~yW!?R+ zJFfWY`&kE%OUCnuhaP#@8P!%2ZxHuC+=wW!zmX8^e~|kJ5!A}%4Pex73f>_gfr6@s z)wOcKkwAq1n_KH3v#aIar-b+~s&w^?7Jz_~)Ig$G9)eW*rbkN0+3Y$Df_^5GZrl=A zH+L225rpSl!A-XPrW1_HfkMaRT>BfE!|D90>TS_7WLiz|1J01SwzN!xfUU=If;P*u zGPR$jtWL4}h5kIKH`VpM{}I~t!DRLMmUzABVNa2K=w$wE7}Js8vDn7tdii`lKDsH# zlSHslkoV#lYaMb?!Kq8JBL2rpv9Zo(?HOhs?2bpz#KQf9>?dVc`uWC<+<84Z!`Zsy zwK7}j+xG!2%iz4*+tu@;LOYM_>lb=`DsjXU za2)T8Zwn`hy|RuO5+9>c%ex&mV8>_@BzAb^#^?Gs5(~aYNJyK@)m43n#?Cb^nSAc- zMhUKnycu2w7-ds{PF9hw#Zq~3&z4pD!H6UjwBQXUIGkV_dfjFPtv$$lSywv*FLQMhs0C6C2cD?TW zZ*3E4%j=}He&N#>^$K8`TO?(*}>D=7I@N< zhQ&_c;>3o3hQxi9`}?)#RKY+Bc8#QOO_RuBCR&WH{!B!;g8T<;cS)0kpDO*G+NnemNH$-!ByH~Fxq3>R-RPw;avN6} z25gl4N=u)OgWukZOTPdE$bDi%r8EXqAg?hwXsxVNgzmOrRy@c=lTs8HkiI?KCoQb0 zY@I(D>D*b$yo&zm;TLbPQAvRU)HWf=L)Y-cmDVwuD4NDrE|Qz}&k3&7Bm-JBglznO zQwE~S>}<`_{At)PUrD|Td`pXCScs?YU&s7Rh3r@-4FL2A_32-&;WbqSfH>ujuZJ3~ zWcI=wd5)gtdC{NgCbK(qMhl-Rnc6x%)cT+ekT*Xvd03}s>ZFQ4ebeoew6;NB$?e}{ z`Vti|;*^^Zm3;#q!D>fq6Ikw?{8gHDQW(D)%W5jkr2clUrKY+qO&=EQw($eGBz|z( za(?-QsXRb*S+nMsh&RZkeSUgK z%0c!l@uHjH;04Y6>3&=u`9l**5^0+`ffxT=Mag^Jyf`u-WrFIkA++Yjs=6;KQ-oXR z+xyY=T-IbUd;Fuz?f3_74oohxt)#j=W2*V4<-0s`x@lm4omB}Nq3(8to$S%yk(x?J zfr<(cF#x-|3_|q2BToE4!}*B%P#N+MEk>XGrvJ!z8UKD>@)=|oBoUq7888t!!D~u` zTnQ6ftUpN}c$0J)o2{Fcb=w9ZL`32?pwN*u#KPBUnHP3(vK-cpUnYrfr3rlaJy`tc z>koBl*hfx90@ozEsTTVB{I5#2c6+CW6U(hn>sn4ia%p_9r;2GeqTlA zx5ennC(CIA@-Aav8n4L(n}M<0!s3P8PQVlEOj5k4j}UB$*#?FIN33cW&)!NHQVT3u z6*juaylT~g7oMF_Yl#u;CDb_0QTpDzRaKd30a8!CArqo}fm`fUwj#lVq^x+V> zsm}^c6ti+>egv8hIXZ>{2P*<={a@AI^gPRC8B5GlDOqIS7owuhtmyuh_wFX`mu$fD zP2C=Dg|B(^NN^j2M61bbs;k`hKJh05S(ju{O#m=i71IU@)fM$R!ES4viTnTz{YdCkA1&zbzH6{>mR zL?MS*-U zoU*^IyP;-Rotq3+n+yiMaQ9-Za+2Z(i<@B)7w6bmKoe`ez;oJ=5v4DMFW+m-XsCa7 z*eR)OjOv?rVCdJCJH3oy^M|9q)!+!zcz509nY-19Z5%J4o5=r|%v?phYx%dN#0dGA zY$z@F@OZg*4PA2Gz69-D!$(;h?_M)rF^AcYjZSJs-<@5Kg5-%7IttJ=mfQ^6;|P*L zz3U3zCb&(kZltKYVICDBpxzeZ32Ln1{CpwvZ1!lKWijs7(bDg)a#@=NelE@Mzc)K- z+0>NY77Q9;xFd7LK+`(E01~? zhdNzlX=RN8@v`_Ih88p!B9H3>FpJsjqJp-kSd)T^S%JC(h2V_@k&S5;HG&kE1yz_@ zGXMMXAeI~@)T+f(>^DMH;DPvdk<&18CFBU|r`QOK3Gqzj)xNZpFp%@chbvv&!nTav z7_bqFEPVBmye<=SgVVND54Oj^ZE&M_+goB`Q;*c3%v1cFP1MCD60{T&^b{lMw!}r3 zh@qZiTZizoOnZ;iY*PmXAL?+aeb_TxoHiP@j>Gx(>xIGU;;-j-%x%9;3~tou4{x^e zJRBcjBWC)*pY}wJt+K}KbRQx~Diq-db;W)2Y68>;I^t=&NH7Yr>B4Ng z6G^aXpiDN6X`7~Qz$ArK9HGTpcXr10gQ8gEqoQlKTPs~a>h8GfA9ePh-Sb}Xqx(;H z$Ng((@7#Cax#ygF&b_~L-+kv6@7!6263}8P>iKnuBA@v4^|Oqp7%#opRBN?SjD*6Y z)C(c|5QBc7WE4{)9~5dNC26VpWB$(j-9#&+M% z(rxCn334}AkBV&`Q8=V?RZ9+xd(4O$@T#_j>vU^bBBywLh1Zd@9w?U@cvgys>Fzgr zbpuGXtd-6gMLyf{r~G>Yr(Ruw0dHRDT&_DAa2!>GGM;BBaU`qf1^`&vvkI!M=Cdbk0hl2W#QA9o2ot{x#)DBm5aa7P;4bFMCy^Wf10WJibzZdA{e z6>RhsUM@FZJ+b%mM{2d-l0^>(46#Y;j=p4@$*0x z58wJ@5PP6P>(L;?dNtU=*SG(HU`@_72sdzQ`MI~W-_9#i_>Q1%VPd`^>|4hYAKFJ6 zbK-y}APq~@&Ls`^n_8FXAg}2n@m{FSDDCU*>C7FKeQ=3x*4;k(LD~=5%5&Ir&-9-o z%l76?SM2_adM@Dja7)$h{vpyxM0{i_jh_&(*Cl7wdrB$GwJzelU{k8JHx8$e3JpTV ze-lh_Rz9qM6r1)%DV2F5v!?V1 zdrP0SOy$*-JzHbmviAl5-s%(0pTBAO{M%Q)e5BSap_iDB&^qrb!kbNaXY#x7B2B}H z6ls#FFVcNe(lwLs#f!XRt9NIszxVCHt+x+LW3&pwC>5%>qb=^f7I$w;*SyQy@V39V zFYwI8=IE2b%xDFc8_K^_M3U}bXoa3G}vubtfW zeyEO3-i{0yq&tT`x~OdD4gG}ws;?CLMIT=0)?Si_$BEVb)8)E$ZuqS_X(pLQLh#xV z7GT_H6lexzP-$ck@~D=L7c4)nTE5uFO^LGNMAhZQ#s1^GG?OaL-2$kKM!?aX0?wU6 z&SGD7IZ-u{SWpV5$77d&^>rM46>`Q49`OZ^3MT#=>w4_T{@=j=IszE{>TbZZO~mC7 zW+PVyYBZ$dDPHEMi3Wd?$r1gXis7|rr$SbR=^++42((i|H!1?bxXP9NP~-(c$cpLh zVGuO%AACcgaakpDWBRvNpI&QnWfyXyDGx_IO2Ns@YlI)TqMQ9-PWf&N1KDTt{g4xM z%~Y&FsKPIHBebnDAc2Ga@yd4{rXyDZYLtM(PX=T+z$1QP5c!kF3+zz_tOk@N)a;IH z%WC)8;owg|r3fXTACQ?c^xm*FkmJUSrV5I=*1%lrVe6T@1=O;88UmQURAqWAYK=)1 zCUYj_D>o?E9no_)QTxH8Or%Rd0(Wg?V7B#ejyu{Hh+EN5s7z(%B5$N-^F~7K9Mk4Re3OtLWgt{eqkUv#mbpqx z!%Z>}yQ_|Z8<6tjbhIRa=<1?)0Ad&J<9P_eNI@TyUd@EOz+^Vp49aLM7fvZC*Z`I| zXs6cfsish~WS!`ThyZ3=uQpqL?>`{>&9U3p2NAl%T!KOgPj1nSiHZ(m_Yp5??7vdcsq70+S9SCc*LD^WAAVNVpUVfSVA5O#*ucc14)%RKu=F)3LhCfk#s!UnjMD z==%?81RhO!$c04;GZODoBd9A95pmE`%qWS3xr;ZZzOav?NFA&e0!8bI!;s-pJXSXZ z&q%bxu!s+qOhnR+DPm_jNe~gPktG5l@XC!T-OhB_oD}w8z(_!J1^JL1^Rzix<`vtI zq&)Fd{8XujoTtY}5^{Z8c7zw^ZQ77&E2(n#HnGW1`^YijEbezHoxV59b7#3awr)Yt zyqQRrAL8kTdEskKo4Rdja4Kq%-R?msk(sm>oxXv-vSIrZm>Zu&c46TTSK(P*V@pX2 z#wlZHYTI;cP + + @android:color/system_accent1_400 + @android:color/system_neutral1_900 + @android:color/system_accent1_100 + @android:color/system_accent2_50 + @android:color/system_accent2_50 + \ No newline at end of file diff --git a/androidApp/src/main/res/values/colors.xml b/androidApp/src/main/res/values/colors.xml new file mode 100644 index 00000000..e495e993 --- /dev/null +++ b/androidApp/src/main/res/values/colors.xml @@ -0,0 +1,22 @@ + + + #FF219BCC + #FF191C1E + #FFC1E8FF + #FFE0F3FF + #FFE0F3FF + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + #43a047 + + + #333333 + #738182 + #efeff4 + \ No newline at end of file diff --git a/androidApp/src/main/res/values/ids.xml b/androidApp/src/main/res/values/ids.xml new file mode 100644 index 00000000..6f6e21c9 --- /dev/null +++ b/androidApp/src/main/res/values/ids.xml @@ -0,0 +1,4 @@ + + 1100 + 1200 + \ No newline at end of file diff --git a/androidApp/src/main/res/values/strings.xml b/androidApp/src/main/res/values/strings.xml new file mode 100644 index 00000000..2828a624 --- /dev/null +++ b/androidApp/src/main/res/values/strings.xml @@ -0,0 +1,23 @@ + + Keyguard + + com.artemchep.keyguard.UPLOAD_ATTACHMENTS + Uploading attachments + Uploading attachments + Uploading attachments + + com.artemchep.keyguard.DOWNLOAD_ATTACHMENTS + Download attachments + + com.artemchep.keyguard.CLIPBOARD + Clipboard + + About + Autofill + Keyguard form autofilling + Unlock Keyguard + Enable autofilling to quickly fill out forms in other apps + Open Keyguard + Set default autofill service + Autofill settings + \ No newline at end of file diff --git a/androidApp/src/main/res/values/themes.xml b/androidApp/src/main/res/values/themes.xml new file mode 100644 index 00000000..677cf392 --- /dev/null +++ b/androidApp/src/main/res/values/themes.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file diff --git a/androidApp/src/noneRelease/generated/baselineProfiles/baseline-prof.txt b/androidApp/src/noneRelease/generated/baselineProfiles/baseline-prof.txt new file mode 100644 index 00000000..24806ea6 --- /dev/null +++ b/androidApp/src/noneRelease/generated/baselineProfiles/baseline-prof.txt @@ -0,0 +1,42915 @@ +L_COROUTINE/ArtificialStackFrames; +HSPL_COROUTINE/ArtificialStackFrames;->()V +HSPL_COROUTINE/ArtificialStackFrames;->coroutineBoundary()Ljava/lang/StackTraceElement; +L_COROUTINE/CoroutineDebuggingKt; +HSPL_COROUTINE/CoroutineDebuggingKt;->()V +HSPL_COROUTINE/CoroutineDebuggingKt;->access$artificialFrame(Ljava/lang/Throwable;Ljava/lang/String;)Ljava/lang/StackTraceElement; +HSPL_COROUTINE/CoroutineDebuggingKt;->artificialFrame(Ljava/lang/Throwable;Ljava/lang/String;)Ljava/lang/StackTraceElement; +L_COROUTINE/_BOUNDARY; +Landroidx/activity/Cancellable; +Landroidx/activity/ComponentActivity; +HSPLandroidx/activity/ComponentActivity;->()V +HSPLandroidx/activity/ComponentActivity;->access$100(Landroidx/activity/ComponentActivity;)Landroidx/activity/OnBackPressedDispatcher; +HSPLandroidx/activity/ComponentActivity;->addMenuProvider(Landroidx/core/view/MenuProvider;)V +HSPLandroidx/activity/ComponentActivity;->addOnConfigurationChangedListener(Landroidx/core/util/Consumer;)V +HSPLandroidx/activity/ComponentActivity;->addOnContextAvailableListener(Landroidx/activity/contextaware/OnContextAvailableListener;)V +HSPLandroidx/activity/ComponentActivity;->addOnMultiWindowModeChangedListener(Landroidx/core/util/Consumer;)V +HSPLandroidx/activity/ComponentActivity;->addOnNewIntentListener(Landroidx/core/util/Consumer;)V +HSPLandroidx/activity/ComponentActivity;->addOnPictureInPictureModeChangedListener(Landroidx/core/util/Consumer;)V +HSPLandroidx/activity/ComponentActivity;->addOnTrimMemoryListener(Landroidx/core/util/Consumer;)V +HSPLandroidx/activity/ComponentActivity;->createFullyDrawnExecutor()Landroidx/activity/ComponentActivity$ReportFullyDrawnExecutor; +HSPLandroidx/activity/ComponentActivity;->ensureViewModelStore()V +HSPLandroidx/activity/ComponentActivity;->getActivityResultRegistry()Landroidx/activity/result/ActivityResultRegistry; +HSPLandroidx/activity/ComponentActivity;->getDefaultViewModelCreationExtras()Landroidx/lifecycle/viewmodel/CreationExtras; +HSPLandroidx/activity/ComponentActivity;->getLifecycle()Landroidx/lifecycle/Lifecycle; +HSPLandroidx/activity/ComponentActivity;->getOnBackPressedDispatcher()Landroidx/activity/OnBackPressedDispatcher; +HSPLandroidx/activity/ComponentActivity;->getSavedStateRegistry()Landroidx/savedstate/SavedStateRegistry; +HSPLandroidx/activity/ComponentActivity;->getViewModelStore()Landroidx/lifecycle/ViewModelStore; +HSPLandroidx/activity/ComponentActivity;->invalidateMenu()V +HSPLandroidx/activity/ComponentActivity;->lambda$new$2$androidx-activity-ComponentActivity(Landroid/content/Context;)V +HSPLandroidx/activity/ComponentActivity;->onCreate(Landroid/os/Bundle;)V +Landroidx/activity/ComponentActivity$$ExternalSyntheticLambda0; +HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda0;->(Landroidx/activity/ComponentActivity;)V +HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda0;->run()V +Landroidx/activity/ComponentActivity$$ExternalSyntheticLambda1; +HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda1;->(Landroidx/activity/ComponentActivity;)V +Landroidx/activity/ComponentActivity$$ExternalSyntheticLambda2; +HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda2;->(Landroidx/activity/ComponentActivity;)V +Landroidx/activity/ComponentActivity$$ExternalSyntheticLambda3; +HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda3;->(Landroidx/activity/ComponentActivity;)V +HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda3;->onContextAvailable(Landroid/content/Context;)V +Landroidx/activity/ComponentActivity$1; +HSPLandroidx/activity/ComponentActivity$1;->(Landroidx/activity/ComponentActivity;)V +Landroidx/activity/ComponentActivity$2; +HSPLandroidx/activity/ComponentActivity$2;->(Landroidx/activity/ComponentActivity;)V +HSPLandroidx/activity/ComponentActivity$2;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +Landroidx/activity/ComponentActivity$3; +HSPLandroidx/activity/ComponentActivity$3;->(Landroidx/activity/ComponentActivity;)V +HSPLandroidx/activity/ComponentActivity$3;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +Landroidx/activity/ComponentActivity$4; +HSPLandroidx/activity/ComponentActivity$4;->(Landroidx/activity/ComponentActivity;)V +HSPLandroidx/activity/ComponentActivity$4;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +Landroidx/activity/ComponentActivity$5; +HSPLandroidx/activity/ComponentActivity$5;->(Landroidx/activity/ComponentActivity;)V +Landroidx/activity/ComponentActivity$6; +HSPLandroidx/activity/ComponentActivity$6;->(Landroidx/activity/ComponentActivity;)V +HSPLandroidx/activity/ComponentActivity$6;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +Landroidx/activity/ComponentActivity$Api33Impl; +HSPLandroidx/activity/ComponentActivity$Api33Impl;->getOnBackInvokedDispatcher(Landroid/app/Activity;)Landroid/window/OnBackInvokedDispatcher; +Landroidx/activity/ComponentActivity$NonConfigurationInstances; +Landroidx/activity/ComponentActivity$ReportFullyDrawnExecutor; +Landroidx/activity/ComponentActivity$ReportFullyDrawnExecutorApi16Impl; +HSPLandroidx/activity/ComponentActivity$ReportFullyDrawnExecutorApi16Impl;->(Landroidx/activity/ComponentActivity;)V +Landroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0; +HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/graphics/Insets;)I +HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/view/Window;Z)V +HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m$2(Landroid/graphics/Insets;)I +HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m$3(Landroid/graphics/Insets;)I +HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m$4()Landroid/graphics/BlendMode; +HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m$7()Landroid/graphics/BlendMode; +HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m$8()Landroid/graphics/BlendMode; +HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m()Landroid/graphics/BlendMode; +HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m(Landroid/app/Activity;)Landroid/window/OnBackInvokedDispatcher; +HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/Insets;)I +HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/View;)Landroid/view/WindowInsetsController; +Landroidx/activity/FullyDrawnReporter; +HSPLandroidx/activity/FullyDrawnReporter;->(Ljava/util/concurrent/Executor;Lkotlin/jvm/functions/Function0;)V +Landroidx/activity/FullyDrawnReporter$$ExternalSyntheticLambda0; +HSPLandroidx/activity/FullyDrawnReporter$$ExternalSyntheticLambda0;->(Landroidx/activity/FullyDrawnReporter;)V +Landroidx/activity/FullyDrawnReporterOwner; +Landroidx/activity/OnBackPressedCallback; +HSPLandroidx/activity/OnBackPressedCallback;->(Z)V +HSPLandroidx/activity/OnBackPressedCallback;->addCancellable(Landroidx/activity/Cancellable;)V +HSPLandroidx/activity/OnBackPressedCallback;->isEnabled()Z +HSPLandroidx/activity/OnBackPressedCallback;->setEnabled(Z)V +HSPLandroidx/activity/OnBackPressedCallback;->setEnabledChangedCallback$activity_release(Lkotlin/jvm/functions/Function0;)V +Landroidx/activity/OnBackPressedDispatcher; +HSPLandroidx/activity/OnBackPressedDispatcher;->(Ljava/lang/Runnable;)V +HSPLandroidx/activity/OnBackPressedDispatcher;->(Ljava/lang/Runnable;Landroidx/core/util/Consumer;)V +HSPLandroidx/activity/OnBackPressedDispatcher;->access$updateEnabledCallbacks(Landroidx/activity/OnBackPressedDispatcher;)V +HSPLandroidx/activity/OnBackPressedDispatcher;->addCallback(Landroidx/activity/OnBackPressedCallback;)V +HSPLandroidx/activity/OnBackPressedDispatcher;->addCallback(Landroidx/lifecycle/LifecycleOwner;Landroidx/activity/OnBackPressedCallback;)V +HSPLandroidx/activity/OnBackPressedDispatcher;->addCancellableCallback$activity_release(Landroidx/activity/OnBackPressedCallback;)Landroidx/activity/Cancellable; +HSPLandroidx/activity/OnBackPressedDispatcher;->setOnBackInvokedDispatcher(Landroid/window/OnBackInvokedDispatcher;)V +HSPLandroidx/activity/OnBackPressedDispatcher;->updateBackInvokedCallbackState(Z)V +HSPLandroidx/activity/OnBackPressedDispatcher;->updateEnabledCallbacks()V +Landroidx/activity/OnBackPressedDispatcher$1; +HSPLandroidx/activity/OnBackPressedDispatcher$1;->(Landroidx/activity/OnBackPressedDispatcher;)V +Landroidx/activity/OnBackPressedDispatcher$2; +HSPLandroidx/activity/OnBackPressedDispatcher$2;->(Landroidx/activity/OnBackPressedDispatcher;)V +Landroidx/activity/OnBackPressedDispatcher$3; +HSPLandroidx/activity/OnBackPressedDispatcher$3;->(Landroidx/activity/OnBackPressedDispatcher;)V +Landroidx/activity/OnBackPressedDispatcher$4; +HSPLandroidx/activity/OnBackPressedDispatcher$4;->(Landroidx/activity/OnBackPressedDispatcher;)V +Landroidx/activity/OnBackPressedDispatcher$Api34Impl; +HSPLandroidx/activity/OnBackPressedDispatcher$Api34Impl;->()V +HSPLandroidx/activity/OnBackPressedDispatcher$Api34Impl;->()V +HSPLandroidx/activity/OnBackPressedDispatcher$Api34Impl;->createOnBackAnimationCallback(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)Landroid/window/OnBackInvokedCallback; +Landroidx/activity/OnBackPressedDispatcher$Api34Impl$createOnBackAnimationCallback$1; +HSPLandroidx/activity/OnBackPressedDispatcher$Api34Impl$createOnBackAnimationCallback$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)V +Landroidx/activity/OnBackPressedDispatcher$LifecycleOnBackPressedCancellable; +HSPLandroidx/activity/OnBackPressedDispatcher$LifecycleOnBackPressedCancellable;->(Landroidx/activity/OnBackPressedDispatcher;Landroidx/lifecycle/Lifecycle;Landroidx/activity/OnBackPressedCallback;)V +HSPLandroidx/activity/OnBackPressedDispatcher$LifecycleOnBackPressedCancellable;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +Landroidx/activity/OnBackPressedDispatcher$OnBackPressedCancellable; +HSPLandroidx/activity/OnBackPressedDispatcher$OnBackPressedCancellable;->(Landroidx/activity/OnBackPressedDispatcher;Landroidx/activity/OnBackPressedCallback;)V +Landroidx/activity/OnBackPressedDispatcher$addCallback$1; +HSPLandroidx/activity/OnBackPressedDispatcher$addCallback$1;->(Ljava/lang/Object;)V +HSPLandroidx/activity/OnBackPressedDispatcher$addCallback$1;->invoke()Ljava/lang/Object; +HSPLandroidx/activity/OnBackPressedDispatcher$addCallback$1;->invoke()V +Landroidx/activity/OnBackPressedDispatcher$addCancellableCallback$1; +HSPLandroidx/activity/OnBackPressedDispatcher$addCancellableCallback$1;->(Ljava/lang/Object;)V +HSPLandroidx/activity/OnBackPressedDispatcher$addCancellableCallback$1;->invoke()Ljava/lang/Object; +HSPLandroidx/activity/OnBackPressedDispatcher$addCancellableCallback$1;->invoke()V +Landroidx/activity/OnBackPressedDispatcherOwner; +Landroidx/activity/R$id; +Landroidx/activity/ViewTreeOnBackPressedDispatcherOwner; +HSPLandroidx/activity/ViewTreeOnBackPressedDispatcherOwner;->set(Landroid/view/View;Landroidx/activity/OnBackPressedDispatcherOwner;)V +Landroidx/activity/compose/ComponentActivityKt; +HSPLandroidx/activity/compose/ComponentActivityKt;->()V +HSPLandroidx/activity/compose/ComponentActivityKt;->setContent$default(Landroidx/activity/ComponentActivity;Landroidx/compose/runtime/CompositionContext;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)V +HSPLandroidx/activity/compose/ComponentActivityKt;->setContent(Landroidx/activity/ComponentActivity;Landroidx/compose/runtime/CompositionContext;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/activity/compose/ComponentActivityKt;->setOwners(Landroidx/activity/ComponentActivity;)V +Landroidx/activity/contextaware/ContextAware; +Landroidx/activity/contextaware/ContextAwareHelper; +HSPLandroidx/activity/contextaware/ContextAwareHelper;->()V +HSPLandroidx/activity/contextaware/ContextAwareHelper;->addOnContextAvailableListener(Landroidx/activity/contextaware/OnContextAvailableListener;)V +HSPLandroidx/activity/contextaware/ContextAwareHelper;->dispatchOnContextAvailable(Landroid/content/Context;)V +Landroidx/activity/contextaware/OnContextAvailableListener; +Landroidx/activity/result/ActivityResult; +Landroidx/activity/result/ActivityResultCallback; +Landroidx/activity/result/ActivityResultCaller; +Landroidx/activity/result/ActivityResultLauncher; +HSPLandroidx/activity/result/ActivityResultLauncher;->()V +Landroidx/activity/result/ActivityResultRegistry; +HSPLandroidx/activity/result/ActivityResultRegistry;->()V +HSPLandroidx/activity/result/ActivityResultRegistry;->bindRcKey(ILjava/lang/String;)V +HSPLandroidx/activity/result/ActivityResultRegistry;->generateRandomNumber()I +HSPLandroidx/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 +Landroidx/activity/result/ActivityResultRegistry$3; +HSPLandroidx/activity/result/ActivityResultRegistry$3;->(Landroidx/activity/result/ActivityResultRegistry;Ljava/lang/String;Landroidx/activity/result/contract/ActivityResultContract;)V +Landroidx/activity/result/ActivityResultRegistry$CallbackAndContract; +HSPLandroidx/activity/result/ActivityResultRegistry$CallbackAndContract;->(Landroidx/activity/result/ActivityResultCallback;Landroidx/activity/result/contract/ActivityResultContract;)V +Landroidx/activity/result/ActivityResultRegistryOwner; +Landroidx/activity/result/contract/ActivityResultContract; +HSPLandroidx/activity/result/contract/ActivityResultContract;->()V +Landroidx/activity/result/contract/ActivityResultContracts$RequestMultiplePermissions; +HSPLandroidx/activity/result/contract/ActivityResultContracts$RequestMultiplePermissions;->()V +HSPLandroidx/activity/result/contract/ActivityResultContracts$RequestMultiplePermissions;->()V +Landroidx/activity/result/contract/ActivityResultContracts$RequestMultiplePermissions$Companion; +HSPLandroidx/activity/result/contract/ActivityResultContracts$RequestMultiplePermissions$Companion;->()V +HSPLandroidx/activity/result/contract/ActivityResultContracts$RequestMultiplePermissions$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/activity/result/contract/ActivityResultContracts$StartActivityForResult; +HSPLandroidx/activity/result/contract/ActivityResultContracts$StartActivityForResult;->()V +HSPLandroidx/activity/result/contract/ActivityResultContracts$StartActivityForResult;->()V +Landroidx/activity/result/contract/ActivityResultContracts$StartActivityForResult$Companion; +HSPLandroidx/activity/result/contract/ActivityResultContracts$StartActivityForResult$Companion;->()V +HSPLandroidx/activity/result/contract/ActivityResultContracts$StartActivityForResult$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/appcompat/R$drawable; +Landroidx/appcompat/R$id; +Landroidx/appcompat/R$layout; +Landroidx/appcompat/R$style; +Landroidx/appcompat/R$styleable; +HSPLandroidx/appcompat/R$styleable;->()V +Landroidx/appcompat/app/ActionBarDrawerToggle$DelegateProvider; +Landroidx/appcompat/app/AppCompatActivity; +HSPLandroidx/appcompat/app/AppCompatActivity;->()V +HSPLandroidx/appcompat/app/AppCompatActivity;->attachBaseContext(Landroid/content/Context;)V +HSPLandroidx/appcompat/app/AppCompatActivity;->getDelegate()Landroidx/appcompat/app/AppCompatDelegate; +HSPLandroidx/appcompat/app/AppCompatActivity;->getResources()Landroid/content/res/Resources; +HSPLandroidx/appcompat/app/AppCompatActivity;->initDelegate()V +HSPLandroidx/appcompat/app/AppCompatActivity;->initViewTreeOwners()V +HSPLandroidx/appcompat/app/AppCompatActivity;->invalidateOptionsMenu()V +HSPLandroidx/appcompat/app/AppCompatActivity;->onContentChanged()V +HSPLandroidx/appcompat/app/AppCompatActivity;->onPostCreate(Landroid/os/Bundle;)V +HSPLandroidx/appcompat/app/AppCompatActivity;->onPostResume()V +HSPLandroidx/appcompat/app/AppCompatActivity;->onStart()V +HSPLandroidx/appcompat/app/AppCompatActivity;->onSupportContentChanged()V +HSPLandroidx/appcompat/app/AppCompatActivity;->onTitleChanged(Ljava/lang/CharSequence;I)V +HSPLandroidx/appcompat/app/AppCompatActivity;->setContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V +HSPLandroidx/appcompat/app/AppCompatActivity;->setTheme(I)V +Landroidx/appcompat/app/AppCompatActivity$1; +HSPLandroidx/appcompat/app/AppCompatActivity$1;->(Landroidx/appcompat/app/AppCompatActivity;)V +Landroidx/appcompat/app/AppCompatActivity$2; +HSPLandroidx/appcompat/app/AppCompatActivity$2;->(Landroidx/appcompat/app/AppCompatActivity;)V +HSPLandroidx/appcompat/app/AppCompatActivity$2;->onContextAvailable(Landroid/content/Context;)V +Landroidx/appcompat/app/AppCompatCallback; +Landroidx/appcompat/app/AppCompatDelegate; +HSPLandroidx/appcompat/app/AppCompatDelegate;->()V +HSPLandroidx/appcompat/app/AppCompatDelegate;->()V +HSPLandroidx/appcompat/app/AppCompatDelegate;->addActiveDelegate(Landroidx/appcompat/app/AppCompatDelegate;)V +HSPLandroidx/appcompat/app/AppCompatDelegate;->attachBaseContext(Landroid/content/Context;)V +HSPLandroidx/appcompat/app/AppCompatDelegate;->attachBaseContext2(Landroid/content/Context;)Landroid/content/Context; +HSPLandroidx/appcompat/app/AppCompatDelegate;->create(Landroid/app/Activity;Landroidx/appcompat/app/AppCompatCallback;)Landroidx/appcompat/app/AppCompatDelegate; +HSPLandroidx/appcompat/app/AppCompatDelegate;->getApplicationLocales()Landroidx/core/os/LocaleListCompat; +HSPLandroidx/appcompat/app/AppCompatDelegate;->getDefaultNightMode()I +HSPLandroidx/appcompat/app/AppCompatDelegate;->getLocaleManagerForApplication()Ljava/lang/Object; +HSPLandroidx/appcompat/app/AppCompatDelegate;->isAutoStorageOptedIn(Landroid/content/Context;)Z +HSPLandroidx/appcompat/app/AppCompatDelegate;->lambda$syncRequestedAndStoredLocales$1(Landroid/content/Context;)V +HSPLandroidx/appcompat/app/AppCompatDelegate;->removeDelegateFromActives(Landroidx/appcompat/app/AppCompatDelegate;)V +HSPLandroidx/appcompat/app/AppCompatDelegate;->setOnBackInvokedDispatcher(Landroid/window/OnBackInvokedDispatcher;)V +HSPLandroidx/appcompat/app/AppCompatDelegate;->syncLocalesToFramework(Landroid/content/Context;)V +HSPLandroidx/appcompat/app/AppCompatDelegate;->syncRequestedAndStoredLocales(Landroid/content/Context;)V +Landroidx/appcompat/app/AppCompatDelegate$$ExternalSyntheticLambda1; +HSPLandroidx/appcompat/app/AppCompatDelegate$$ExternalSyntheticLambda1;->(Landroid/content/Context;)V +HSPLandroidx/appcompat/app/AppCompatDelegate$$ExternalSyntheticLambda1;->run()V +Landroidx/appcompat/app/AppCompatDelegate$Api24Impl; +HSPLandroidx/appcompat/app/AppCompatDelegate$Api24Impl;->localeListForLanguageTags(Ljava/lang/String;)Landroid/os/LocaleList; +Landroidx/appcompat/app/AppCompatDelegate$Api33Impl; +HSPLandroidx/appcompat/app/AppCompatDelegate$Api33Impl;->localeManagerGetApplicationLocales(Ljava/lang/Object;)Landroid/os/LocaleList; +HSPLandroidx/appcompat/app/AppCompatDelegate$Api33Impl;->localeManagerSetApplicationLocales(Ljava/lang/Object;Landroid/os/LocaleList;)V +Landroidx/appcompat/app/AppCompatDelegate$SerialExecutor; +HSPLandroidx/appcompat/app/AppCompatDelegate$SerialExecutor;->(Ljava/util/concurrent/Executor;)V +HSPLandroidx/appcompat/app/AppCompatDelegate$SerialExecutor;->execute(Ljava/lang/Runnable;)V +HSPLandroidx/appcompat/app/AppCompatDelegate$SerialExecutor;->lambda$execute$0$androidx-appcompat-app-AppCompatDelegate$SerialExecutor(Ljava/lang/Runnable;)V +HSPLandroidx/appcompat/app/AppCompatDelegate$SerialExecutor;->scheduleNext()V +Landroidx/appcompat/app/AppCompatDelegate$SerialExecutor$$ExternalSyntheticLambda0; +HSPLandroidx/appcompat/app/AppCompatDelegate$SerialExecutor$$ExternalSyntheticLambda0;->(Landroidx/appcompat/app/AppCompatDelegate$SerialExecutor;Ljava/lang/Runnable;)V +HSPLandroidx/appcompat/app/AppCompatDelegate$SerialExecutor$$ExternalSyntheticLambda0;->run()V +Landroidx/appcompat/app/AppCompatDelegate$ThreadPerTaskExecutor; +HSPLandroidx/appcompat/app/AppCompatDelegate$ThreadPerTaskExecutor;->()V +HSPLandroidx/appcompat/app/AppCompatDelegate$ThreadPerTaskExecutor;->execute(Ljava/lang/Runnable;)V +Landroidx/appcompat/app/AppCompatDelegateImpl; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->(Landroid/app/Activity;Landroidx/appcompat/app/AppCompatCallback;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->(Landroid/content/Context;Landroid/view/Window;Landroidx/appcompat/app/AppCompatCallback;Ljava/lang/Object;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->applyApplicationSpecificConfig(Z)Z +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->applyApplicationSpecificConfig(ZZ)Z +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->applyFixedSizeWindow()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->attachBaseContext2(Landroid/content/Context;)Landroid/content/Context; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->attachToWindow(Landroid/view/Window;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->calculateApplicationLocales(Landroid/content/Context;)Landroidx/core/os/LocaleListCompat; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->calculateNightMode()I +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->createOverrideAppConfiguration(Landroid/content/Context;ILandroidx/core/os/LocaleListCompat;Landroid/content/res/Configuration;Z)Landroid/content/res/Configuration; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->createSubDecor()Landroid/view/ViewGroup; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->createView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->doInvalidatePanelMenu(I)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->ensureSubDecor()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->ensureWindow()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->getActivityHandlesConfigChangesFlags(Landroid/content/Context;)I +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->getConfigurationLocales(Landroid/content/res/Configuration;)Landroidx/core/os/LocaleListCompat; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->getContextForDelegate()Landroid/content/Context; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->getPanelState(IZ)Landroidx/appcompat/app/AppCompatDelegateImpl$PanelFeatureState; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->getSupportActionBar()Landroidx/appcompat/app/ActionBar; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->getTitle()Ljava/lang/CharSequence; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->initWindowDecorActionBar()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->installViewFactory()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->invalidateOptionsMenu()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->invalidatePanelMenu(I)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->mapNightMode(Landroid/content/Context;I)I +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->onCreate(Landroid/os/Bundle;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->onPostCreate(Landroid/os/Bundle;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->onPostResume()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->onStart()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->onSubDecorInstalled(Landroid/view/ViewGroup;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->peekSupportActionBar()Landroidx/appcompat/app/ActionBar; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->requestWindowFeature(I)Z +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->sanitizeWindowFeatureId(I)I +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->setContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->setOnBackInvokedDispatcher(Landroid/window/OnBackInvokedDispatcher;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->setTheme(I)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->setTitle(Ljava/lang/CharSequence;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->shouldRegisterBackInvokedCallback()Z +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->throwFeatureRequestIfSubDecorInstalled()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->updateAppConfiguration(ILandroidx/core/os/LocaleListCompat;Z)Z +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->updateBackInvokedCallbackState()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->updateStatusGuard(Landroidx/core/view/WindowInsetsCompat;Landroid/graphics/Rect;)I +Landroidx/appcompat/app/AppCompatDelegateImpl$2; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$2;->(Landroidx/appcompat/app/AppCompatDelegateImpl;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$2;->run()V +Landroidx/appcompat/app/AppCompatDelegateImpl$3; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$3;->(Landroidx/appcompat/app/AppCompatDelegateImpl;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$3;->onApplyWindowInsets(Landroid/view/View;Landroidx/core/view/WindowInsetsCompat;)Landroidx/core/view/WindowInsetsCompat; +Landroidx/appcompat/app/AppCompatDelegateImpl$5; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$5;->(Landroidx/appcompat/app/AppCompatDelegateImpl;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$5;->onAttachedFromWindow()V +Landroidx/appcompat/app/AppCompatDelegateImpl$Api17Impl; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$Api17Impl;->createConfigurationContext(Landroid/content/Context;Landroid/content/res/Configuration;)Landroid/content/Context; +Landroidx/appcompat/app/AppCompatDelegateImpl$Api24Impl; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$Api24Impl;->getLocales(Landroid/content/res/Configuration;)Landroidx/core/os/LocaleListCompat; +Landroidx/appcompat/app/AppCompatDelegateImpl$Api33Impl; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$Api33Impl;->getOnBackInvokedDispatcher(Landroid/app/Activity;)Landroid/window/OnBackInvokedDispatcher; +Landroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback;->(Landroidx/appcompat/app/AppCompatDelegateImpl;Landroid/view/Window$Callback;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback;->bypassOnContentChanged(Landroid/view/Window$Callback;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback;->onContentChanged()V +Landroidx/appcompat/app/AppCompatDelegateImpl$PanelFeatureState; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$PanelFeatureState;->(I)V +Landroidx/appcompat/app/AppCompatViewInflater; +HSPLandroidx/appcompat/app/AppCompatViewInflater;->()V +HSPLandroidx/appcompat/app/AppCompatViewInflater;->()V +HSPLandroidx/appcompat/app/AppCompatViewInflater;->createView(Landroid/content/Context;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLandroidx/appcompat/app/AppCompatViewInflater;->createView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;ZZZZ)Landroid/view/View; +HSPLandroidx/appcompat/app/AppCompatViewInflater;->themifyContext(Landroid/content/Context;Landroid/util/AttributeSet;ZZ)Landroid/content/Context; +Landroidx/appcompat/app/AppLocalesMetadataHolderService; +HSPLandroidx/appcompat/app/AppLocalesMetadataHolderService;->getServiceInfo(Landroid/content/Context;)Landroid/content/pm/ServiceInfo; +Landroidx/appcompat/app/AppLocalesMetadataHolderService$Api24Impl; +HSPLandroidx/appcompat/app/AppLocalesMetadataHolderService$Api24Impl;->getDisabledComponentFlag()I +Landroidx/appcompat/resources/R$drawable; +Landroidx/appcompat/view/ContextThemeWrapper; +HSPLandroidx/appcompat/view/ContextThemeWrapper;->(Landroid/content/Context;I)V +HSPLandroidx/appcompat/view/ContextThemeWrapper;->applyOverrideConfiguration(Landroid/content/res/Configuration;)V +HSPLandroidx/appcompat/view/ContextThemeWrapper;->getResources()Landroid/content/res/Resources; +HSPLandroidx/appcompat/view/ContextThemeWrapper;->getResourcesInternal()Landroid/content/res/Resources; +HSPLandroidx/appcompat/view/ContextThemeWrapper;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; +HSPLandroidx/appcompat/view/ContextThemeWrapper;->getTheme()Landroid/content/res/Resources$Theme; +HSPLandroidx/appcompat/view/ContextThemeWrapper;->initializeTheme()V +HSPLandroidx/appcompat/view/ContextThemeWrapper;->isEmptyConfiguration(Landroid/content/res/Configuration;)Z +HSPLandroidx/appcompat/view/ContextThemeWrapper;->onApplyThemeResource(Landroid/content/res/Resources$Theme;IZ)V +Landroidx/appcompat/view/WindowCallbackWrapper; +HSPLandroidx/appcompat/view/WindowCallbackWrapper;->(Landroid/view/Window$Callback;)V +HSPLandroidx/appcompat/view/WindowCallbackWrapper;->dispatchPopulateAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)Z +HSPLandroidx/appcompat/view/WindowCallbackWrapper;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z +HSPLandroidx/appcompat/view/WindowCallbackWrapper;->getWrapped()Landroid/view/Window$Callback; +HSPLandroidx/appcompat/view/WindowCallbackWrapper;->onAttachedToWindow()V +HSPLandroidx/appcompat/view/WindowCallbackWrapper;->onWindowAttributesChanged(Landroid/view/WindowManager$LayoutParams;)V +HSPLandroidx/appcompat/view/WindowCallbackWrapper;->onWindowFocusChanged(Z)V +Landroidx/appcompat/view/menu/MenuBuilder$Callback; +Landroidx/appcompat/widget/AppCompatDrawableManager; +HSPLandroidx/appcompat/widget/AppCompatDrawableManager;->()V +HSPLandroidx/appcompat/widget/AppCompatDrawableManager;->()V +HSPLandroidx/appcompat/widget/AppCompatDrawableManager;->access$000()Landroid/graphics/PorterDuff$Mode; +HSPLandroidx/appcompat/widget/AppCompatDrawableManager;->get()Landroidx/appcompat/widget/AppCompatDrawableManager; +HSPLandroidx/appcompat/widget/AppCompatDrawableManager;->getDrawable(Landroid/content/Context;IZ)Landroid/graphics/drawable/Drawable; +HSPLandroidx/appcompat/widget/AppCompatDrawableManager;->preload()V +Landroidx/appcompat/widget/AppCompatDrawableManager$1; +HSPLandroidx/appcompat/widget/AppCompatDrawableManager$1;->()V +HSPLandroidx/appcompat/widget/AppCompatDrawableManager$1;->arrayContains([II)Z +HSPLandroidx/appcompat/widget/AppCompatDrawableManager$1;->createDrawableFor(Landroidx/appcompat/widget/ResourceManagerInternal;Landroid/content/Context;I)Landroid/graphics/drawable/Drawable; +HSPLandroidx/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 +HSPLandroidx/appcompat/widget/AppCompatDrawableManager$1;->tintDrawableUsingColorFilter(Landroid/content/Context;ILandroid/graphics/drawable/Drawable;)Z +Landroidx/appcompat/widget/ContentFrameLayout; +HSPLandroidx/appcompat/widget/ContentFrameLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroidx/appcompat/widget/ContentFrameLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroidx/appcompat/widget/ContentFrameLayout;->getMinWidthMajor()Landroid/util/TypedValue; +HSPLandroidx/appcompat/widget/ContentFrameLayout;->getMinWidthMinor()Landroid/util/TypedValue; +HSPLandroidx/appcompat/widget/ContentFrameLayout;->onAttachedToWindow()V +HSPLandroidx/appcompat/widget/ContentFrameLayout;->onMeasure(II)V +HSPLandroidx/appcompat/widget/ContentFrameLayout;->setAttachListener(Landroidx/appcompat/widget/ContentFrameLayout$OnAttachListener;)V +HSPLandroidx/appcompat/widget/ContentFrameLayout;->setDecorPadding(IIII)V +Landroidx/appcompat/widget/ContentFrameLayout$OnAttachListener; +Landroidx/appcompat/widget/DrawableUtils; +HSPLandroidx/appcompat/widget/DrawableUtils;->()V +HSPLandroidx/appcompat/widget/DrawableUtils;->fixDrawable(Landroid/graphics/drawable/Drawable;)V +Landroidx/appcompat/widget/FitWindowsLinearLayout; +HSPLandroidx/appcompat/widget/FitWindowsLinearLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroidx/appcompat/widget/FitWindowsLinearLayout;->fitSystemWindows(Landroid/graphics/Rect;)Z +Landroidx/appcompat/widget/FitWindowsViewGroup; +Landroidx/appcompat/widget/ResourceManagerInternal; +HSPLandroidx/appcompat/widget/ResourceManagerInternal;->()V +HSPLandroidx/appcompat/widget/ResourceManagerInternal;->()V +HSPLandroidx/appcompat/widget/ResourceManagerInternal;->checkVectorDrawableSetup(Landroid/content/Context;)V +HSPLandroidx/appcompat/widget/ResourceManagerInternal;->createCacheKey(Landroid/util/TypedValue;)J +HSPLandroidx/appcompat/widget/ResourceManagerInternal;->createDrawableIfNeeded(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable; +HSPLandroidx/appcompat/widget/ResourceManagerInternal;->get()Landroidx/appcompat/widget/ResourceManagerInternal; +HSPLandroidx/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; +HSPLandroidx/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; +HSPLandroidx/appcompat/widget/ResourceManagerInternal;->getTintListFromCache(Landroid/content/Context;I)Landroid/content/res/ColorStateList; +HSPLandroidx/appcompat/widget/ResourceManagerInternal;->installDefaultInflateDelegates(Landroidx/appcompat/widget/ResourceManagerInternal;)V +HSPLandroidx/appcompat/widget/ResourceManagerInternal;->isVectorDrawable(Landroid/graphics/drawable/Drawable;)Z +HSPLandroidx/appcompat/widget/ResourceManagerInternal;->loadDrawableFromDelegates(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable; +HSPLandroidx/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; +HSPLandroidx/appcompat/widget/ResourceManagerInternal;->tintDrawableUsingColorFilter(Landroid/content/Context;ILandroid/graphics/drawable/Drawable;)Z +Landroidx/appcompat/widget/ResourceManagerInternal$ColorFilterLruCache; +HSPLandroidx/appcompat/widget/ResourceManagerInternal$ColorFilterLruCache;->(I)V +Landroidx/appcompat/widget/ResourceManagerInternal$ResourceManagerHooks; +Landroidx/appcompat/widget/ResourcesWrapper; +Landroidx/appcompat/widget/TintTypedArray; +HSPLandroidx/appcompat/widget/TintTypedArray;->(Landroid/content/Context;Landroid/content/res/TypedArray;)V +HSPLandroidx/appcompat/widget/TintTypedArray;->getDrawableIfKnown(I)Landroid/graphics/drawable/Drawable; +HSPLandroidx/appcompat/widget/TintTypedArray;->obtainStyledAttributes(Landroid/content/Context;Landroid/util/AttributeSet;[I)Landroidx/appcompat/widget/TintTypedArray; +HSPLandroidx/appcompat/widget/TintTypedArray;->recycle()V +Landroidx/appcompat/widget/VectorEnabledTintResources; +HSPLandroidx/appcompat/widget/VectorEnabledTintResources;->()V +HSPLandroidx/appcompat/widget/VectorEnabledTintResources;->isCompatVectorFromResourcesEnabled()Z +HSPLandroidx/appcompat/widget/VectorEnabledTintResources;->shouldBeUsed()Z +Landroidx/appcompat/widget/ViewStubCompat; +HSPLandroidx/appcompat/widget/ViewStubCompat;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroidx/appcompat/widget/ViewStubCompat;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroidx/appcompat/widget/ViewStubCompat;->setVisibility(I)V +Landroidx/appcompat/widget/ViewUtils; +HSPLandroidx/appcompat/widget/ViewUtils;->()V +HSPLandroidx/appcompat/widget/ViewUtils;->makeOptionalFitsSystemWindows(Landroid/view/View;)V +Landroidx/arch/core/executor/ArchTaskExecutor; +HSPLandroidx/arch/core/executor/ArchTaskExecutor;->()V +HSPLandroidx/arch/core/executor/ArchTaskExecutor;->()V +HSPLandroidx/arch/core/executor/ArchTaskExecutor;->executeOnDiskIO(Ljava/lang/Runnable;)V +PLandroidx/arch/core/executor/ArchTaskExecutor;->getIOThreadExecutor()Ljava/util/concurrent/Executor; +HSPLandroidx/arch/core/executor/ArchTaskExecutor;->getInstance()Landroidx/arch/core/executor/ArchTaskExecutor; +HSPLandroidx/arch/core/executor/ArchTaskExecutor;->isMainThread()Z +HSPLandroidx/arch/core/executor/ArchTaskExecutor;->lambda$static$1(Ljava/lang/Runnable;)V +HSPLandroidx/arch/core/executor/ArchTaskExecutor;->postToMainThread(Ljava/lang/Runnable;)V +Landroidx/arch/core/executor/ArchTaskExecutor$$ExternalSyntheticLambda0; +HSPLandroidx/arch/core/executor/ArchTaskExecutor$$ExternalSyntheticLambda0;->()V +Landroidx/arch/core/executor/ArchTaskExecutor$$ExternalSyntheticLambda1; +HSPLandroidx/arch/core/executor/ArchTaskExecutor$$ExternalSyntheticLambda1;->()V +HSPLandroidx/arch/core/executor/ArchTaskExecutor$$ExternalSyntheticLambda1;->execute(Ljava/lang/Runnable;)V +Landroidx/arch/core/executor/DefaultTaskExecutor; +HSPLandroidx/arch/core/executor/DefaultTaskExecutor;->()V +HSPLandroidx/arch/core/executor/DefaultTaskExecutor;->createAsync(Landroid/os/Looper;)Landroid/os/Handler; +HSPLandroidx/arch/core/executor/DefaultTaskExecutor;->executeOnDiskIO(Ljava/lang/Runnable;)V +HSPLandroidx/arch/core/executor/DefaultTaskExecutor;->isMainThread()Z +HSPLandroidx/arch/core/executor/DefaultTaskExecutor;->postToMainThread(Ljava/lang/Runnable;)V +Landroidx/arch/core/executor/DefaultTaskExecutor$1; +HSPLandroidx/arch/core/executor/DefaultTaskExecutor$1;->(Landroidx/arch/core/executor/DefaultTaskExecutor;)V +HSPLandroidx/arch/core/executor/DefaultTaskExecutor$1;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread; +Landroidx/arch/core/executor/DefaultTaskExecutor$Api28Impl; +HSPLandroidx/arch/core/executor/DefaultTaskExecutor$Api28Impl;->createAsync(Landroid/os/Looper;)Landroid/os/Handler; +Landroidx/arch/core/executor/TaskExecutor; +HSPLandroidx/arch/core/executor/TaskExecutor;->()V +Landroidx/arch/core/internal/FastSafeIterableMap; +HSPLandroidx/arch/core/internal/FastSafeIterableMap;->()V +HSPLandroidx/arch/core/internal/FastSafeIterableMap;->ceil(Ljava/lang/Object;)Ljava/util/Map$Entry; +HSPLandroidx/arch/core/internal/FastSafeIterableMap;->contains(Ljava/lang/Object;)Z +HSPLandroidx/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; +HSPLandroidx/arch/core/internal/FastSafeIterableMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/arch/core/internal/SafeIterableMap; +HSPLandroidx/arch/core/internal/SafeIterableMap;->()V +HSPLandroidx/arch/core/internal/SafeIterableMap;->eldest()Ljava/util/Map$Entry; +HSPLandroidx/arch/core/internal/SafeIterableMap;->get(Ljava/lang/Object;)Landroidx/arch/core/internal/SafeIterableMap$Entry; +HSPLandroidx/arch/core/internal/SafeIterableMap;->iterator()Ljava/util/Iterator; +HSPLandroidx/arch/core/internal/SafeIterableMap;->iteratorWithAdditions()Landroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions; +HSPLandroidx/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; +HSPLandroidx/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; +HSPLandroidx/arch/core/internal/SafeIterableMap;->size()I +Landroidx/arch/core/internal/SafeIterableMap$AscendingIterator; +HSPLandroidx/arch/core/internal/SafeIterableMap$AscendingIterator;->(Landroidx/arch/core/internal/SafeIterableMap$Entry;Landroidx/arch/core/internal/SafeIterableMap$Entry;)V +Landroidx/arch/core/internal/SafeIterableMap$Entry; +HSPLandroidx/arch/core/internal/SafeIterableMap$Entry;->(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLandroidx/arch/core/internal/SafeIterableMap$Entry;->getKey()Ljava/lang/Object; +HSPLandroidx/arch/core/internal/SafeIterableMap$Entry;->getValue()Ljava/lang/Object; +Landroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions; +HSPLandroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;->(Landroidx/arch/core/internal/SafeIterableMap;)V +HSPLandroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;->hasNext()Z +HSPLandroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;->next()Ljava/lang/Object; +HSPLandroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;->next()Ljava/util/Map$Entry; +HSPLandroidx/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;->(Landroidx/arch/core/internal/SafeIterableMap$Entry;Landroidx/arch/core/internal/SafeIterableMap$Entry;)V +HSPLandroidx/arch/core/internal/SafeIterableMap$ListIterator;->hasNext()Z +Landroidx/arch/core/internal/SafeIterableMap$SupportRemove; +HSPLandroidx/arch/core/internal/SafeIterableMap$SupportRemove;->()V +Landroidx/arch/core/util/Function; +Landroidx/biometric/BiometricManager; +HSPLandroidx/biometric/BiometricManager;->(Landroidx/biometric/BiometricManager$Injector;)V +HSPLandroidx/biometric/BiometricManager;->canAuthenticate(I)I +HSPLandroidx/biometric/BiometricManager;->from(Landroid/content/Context;)Landroidx/biometric/BiometricManager; +Landroidx/biometric/BiometricManager$Api29Impl; +HSPLandroidx/biometric/BiometricManager$Api29Impl;->create(Landroid/content/Context;)Landroid/hardware/biometrics/BiometricManager; +Landroidx/biometric/BiometricManager$Api30Impl; +HSPLandroidx/biometric/BiometricManager$Api30Impl;->canAuthenticate(Landroid/hardware/biometrics/BiometricManager;I)I +Landroidx/biometric/BiometricManager$DefaultInjector; +HSPLandroidx/biometric/BiometricManager$DefaultInjector;->(Landroid/content/Context;)V +HSPLandroidx/biometric/BiometricManager$DefaultInjector;->getBiometricManager()Landroid/hardware/biometrics/BiometricManager; +Landroidx/biometric/BiometricManager$Injector; +PLandroidx/biometric/auth/Class2BiometricAuthExtensionsKt$$ExternalSyntheticLambda0;->()V +Landroidx/camera/view/PreviewView$1$$ExternalSyntheticBackportWithForwarding0; +HSPLandroidx/camera/view/PreviewView$1$$ExternalSyntheticBackportWithForwarding0;->m(Ljava/util/concurrent/atomic/AtomicReference;Ljava/lang/Object;Ljava/lang/Object;)Z +Landroidx/collection/ArrayMap; +HSPLandroidx/collection/ArrayMap;->()V +HSPLandroidx/collection/ArrayMap;->(I)V +HSPLandroidx/collection/ArrayMap;->keySet()Ljava/util/Set; +HSPLandroidx/collection/ArrayMap;->values()Ljava/util/Collection; +Landroidx/collection/ArrayMap$KeyIterator; +HSPLandroidx/collection/ArrayMap$KeyIterator;->(Landroidx/collection/ArrayMap;)V +Landroidx/collection/ArrayMap$KeySet; +HSPLandroidx/collection/ArrayMap$KeySet;->(Landroidx/collection/ArrayMap;)V +HSPLandroidx/collection/ArrayMap$KeySet;->iterator()Ljava/util/Iterator; +Landroidx/collection/ArrayMap$ValueCollection; +HSPLandroidx/collection/ArrayMap$ValueCollection;->(Landroidx/collection/ArrayMap;)V +HSPLandroidx/collection/ArrayMap$ValueCollection;->iterator()Ljava/util/Iterator; +Landroidx/collection/ArrayMap$ValueIterator; +HSPLandroidx/collection/ArrayMap$ValueIterator;->(Landroidx/collection/ArrayMap;)V +Landroidx/collection/ArraySet; +HSPLandroidx/collection/ArraySet;->()V +HSPLandroidx/collection/ArraySet;->()V +HSPLandroidx/collection/ArraySet;->(I)V +HSPLandroidx/collection/ArraySet;->add(Ljava/lang/Object;)Z +HSPLandroidx/collection/ArraySet;->allocArrays(I)V +HSPLandroidx/collection/ArraySet;->clear()V +HSPLandroidx/collection/ArraySet;->freeArrays([I[Ljava/lang/Object;I)V +HSPLandroidx/collection/ArraySet;->indexOf(Ljava/lang/Object;I)I +HSPLandroidx/collection/ArraySet;->iterator()Ljava/util/Iterator; +HSPLandroidx/collection/ArraySet;->toArray()[Ljava/lang/Object; +HSPLandroidx/collection/ArraySet;->valueAt(I)Ljava/lang/Object; +Landroidx/collection/ArraySet$ElementIterator; +HSPLandroidx/collection/ArraySet$ElementIterator;->(Landroidx/collection/ArraySet;)V +HSPLandroidx/collection/ArraySet$ElementIterator;->elementAt(I)Ljava/lang/Object; +Landroidx/collection/ContainerHelpers; +HSPLandroidx/collection/ContainerHelpers;->()V +HSPLandroidx/collection/ContainerHelpers;->binarySearch([III)I +HSPLandroidx/collection/ContainerHelpers;->idealByteArraySize(I)I +HSPLandroidx/collection/ContainerHelpers;->idealIntArraySize(I)I +Landroidx/collection/IndexBasedArrayIterator; +HSPLandroidx/collection/IndexBasedArrayIterator;->(I)V +HSPLandroidx/collection/IndexBasedArrayIterator;->hasNext()Z +HSPLandroidx/collection/IndexBasedArrayIterator;->next()Ljava/lang/Object; +Landroidx/collection/LongSparseArray; +Landroidx/collection/LruCache; +HSPLandroidx/collection/LruCache;->(I)V +Landroidx/collection/SimpleArrayMap; +HSPLandroidx/collection/SimpleArrayMap;->()V +HSPLandroidx/collection/SimpleArrayMap;->(I)V +HSPLandroidx/collection/SimpleArrayMap;->allocArrays(I)V +HSPLandroidx/collection/SimpleArrayMap;->binarySearchHashes([III)I +HSPLandroidx/collection/SimpleArrayMap;->clear()V +HSPLandroidx/collection/SimpleArrayMap;->containsKey(Ljava/lang/Object;)Z +HSPLandroidx/collection/SimpleArrayMap;->freeArrays([I[Ljava/lang/Object;I)V +HSPLandroidx/collection/SimpleArrayMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/collection/SimpleArrayMap;->getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/collection/SimpleArrayMap;->indexOf(Ljava/lang/Object;I)I +HSPLandroidx/collection/SimpleArrayMap;->indexOfKey(Ljava/lang/Object;)I +HSPLandroidx/collection/SimpleArrayMap;->isEmpty()Z +HSPLandroidx/collection/SimpleArrayMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/collection/SparseArrayCompat; +HSPLandroidx/collection/SparseArrayCompat;->()V +HSPLandroidx/collection/SparseArrayCompat;->()V +HSPLandroidx/collection/SparseArrayCompat;->(I)V +Landroidx/compose/animation/AnimatedContentKt; +HSPLandroidx/compose/animation/AnimatedContentKt;->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/AnimatedContentKt;->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/AnimatedContentKt;->SizeTransform$default(ZLkotlin/jvm/functions/Function2;ILjava/lang/Object;)Landroidx/compose/animation/SizeTransform; +HSPLandroidx/compose/animation/AnimatedContentKt;->SizeTransform(ZLkotlin/jvm/functions/Function2;)Landroidx/compose/animation/SizeTransform; +HSPLandroidx/compose/animation/AnimatedContentKt;->with(Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;)Landroidx/compose/animation/ContentTransform; +Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$2; +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$2;->()V +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$2;->()V +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$3; +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$3;->(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 +Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1; +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1;->(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(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$1; +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$1;->(Landroidx/compose/animation/ContentTransform;)V +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$1;->invoke-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$1$1; +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$1$1;->(Landroidx/compose/ui/layout/Placeable;Landroidx/compose/animation/ContentTransform;)V +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$1$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$3; +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$3;->(Ljava/lang/Object;)V +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$3;->invoke(Ljava/lang/Object;)Ljava/lang/Boolean; +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$4; +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$4;->(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$4;->invoke(Landroidx/compose/animation/AnimatedVisibilityScope;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$4;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$4$1; +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$4$1;->(Landroidx/compose/runtime/snapshots/SnapshotStateList;Ljava/lang/Object;Landroidx/compose/animation/AnimatedContentTransitionScopeImpl;)V +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$4$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$4$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$4$1$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$4$1$invoke$$inlined$onDispose$1;->(Landroidx/compose/runtime/snapshots/SnapshotStateList;Ljava/lang/Object;Landroidx/compose/animation/AnimatedContentTransitionScopeImpl;)V +Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$9; +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$9;->(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 +Landroidx/compose/animation/AnimatedContentKt$SizeTransform$1; +HSPLandroidx/compose/animation/AnimatedContentKt$SizeTransform$1;->()V +HSPLandroidx/compose/animation/AnimatedContentKt$SizeTransform$1;->()V +Landroidx/compose/animation/AnimatedContentMeasurePolicy; +HSPLandroidx/compose/animation/AnimatedContentMeasurePolicy;->(Landroidx/compose/animation/AnimatedContentTransitionScopeImpl;)V +HSPLandroidx/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; +Landroidx/compose/animation/AnimatedContentMeasurePolicy$measure$3; +HSPLandroidx/compose/animation/AnimatedContentMeasurePolicy$measure$3;->([Landroidx/compose/ui/layout/Placeable;Landroidx/compose/animation/AnimatedContentMeasurePolicy;II)V +HSPLandroidx/compose/animation/AnimatedContentMeasurePolicy$measure$3;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/animation/AnimatedContentMeasurePolicy$measure$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/AnimatedContentScope; +Landroidx/compose/animation/AnimatedContentScopeImpl; +HSPLandroidx/compose/animation/AnimatedContentScopeImpl;->(Landroidx/compose/animation/AnimatedVisibilityScope;)V +Landroidx/compose/animation/AnimatedContentTransitionScope; +Landroidx/compose/animation/AnimatedContentTransitionScopeImpl; +HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->(Landroidx/compose/animation/core/Transition;Landroidx/compose/ui/Alignment;Landroidx/compose/ui/unit/LayoutDirection;)V +HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->createSizeAnimationModifier$animation_release(Landroidx/compose/animation/ContentTransform;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->createSizeAnimationModifier$lambda$2(Landroidx/compose/runtime/MutableState;)Z +HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->createSizeAnimationModifier$lambda$3(Landroidx/compose/runtime/MutableState;Z)V +HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->getContentAlignment$animation_release()Landroidx/compose/ui/Alignment; +HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->getInitialState()Ljava/lang/Object; +HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->getTargetSizeMap$animation_release()Ljava/util/Map; +HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->getTargetState()Ljava/lang/Object; +HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->setContentAlignment$animation_release(Landroidx/compose/ui/Alignment;)V +HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->setLayoutDirection$animation_release(Landroidx/compose/ui/unit/LayoutDirection;)V +HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->setMeasuredSize-ozmzZPI$animation_release(J)V +Landroidx/compose/animation/AnimatedContentTransitionScopeImpl$ChildData; +HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$ChildData;->(Z)V +HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$ChildData;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$ChildData;->isTarget()Z +HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$ChildData;->modifyParentData(Landroidx/compose/ui/unit/Density;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$ChildData;->setTarget(Z)V +Landroidx/compose/animation/AnimatedEnterExitMeasurePolicy; +PLandroidx/compose/animation/AnimatedEnterExitMeasurePolicy;->(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; +Landroidx/compose/animation/AnimatedEnterExitMeasurePolicy$measure$1; +HSPLandroidx/compose/animation/AnimatedEnterExitMeasurePolicy$measure$1;->(Ljava/util/List;)V +HSPLandroidx/compose/animation/AnimatedEnterExitMeasurePolicy$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/animation/AnimatedEnterExitMeasurePolicy$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/AnimatedVisibilityKt; +HSPLandroidx/compose/animation/AnimatedVisibilityKt;->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/Function3;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/animation/AnimatedVisibilityKt;->AnimatedVisibility(Landroidx/compose/animation/core/Transition;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/animation/AnimatedVisibilityKt;->AnimatedVisibility(Landroidx/compose/foundation/layout/ColumnScope;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/AnimatedVisibilityKt;->AnimatedVisibility(Landroidx/compose/foundation/layout/RowScope;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/AnimatedVisibilityKt;->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/AnimatedVisibilityKt;->access$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/Function3;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/animation/AnimatedVisibilityKt;->targetEnterExit(Landroidx/compose/animation/core/Transition;Lkotlin/jvm/functions/Function1;Ljava/lang/Object;Landroidx/compose/runtime/Composer;I)Landroidx/compose/animation/EnterExitState; +Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$1$1; +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$1$1;->(Landroidx/compose/animation/core/Transition;Landroidx/compose/runtime/MutableState;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$1$1$1; +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$1$1$1;->(Landroidx/compose/animation/core/Transition;)V +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$1$1$1;->invoke()Ljava/lang/Boolean; +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$1$1$1;->invoke()Ljava/lang/Object; +Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$1$1$2; +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$1$1$2;->(Landroidx/compose/runtime/MutableState;)V +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$1$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$1$1$2;->emit(ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$2; +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$2;->(Landroidx/compose/animation/core/Transition;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Lkotlin/jvm/functions/Function3;I)V +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$1; +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$1;->()V +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$1;->()V +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$1;->invoke(Z)Ljava/lang/Boolean; +Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$2; +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$2;->(ZLandroidx/compose/ui/Modifier;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Ljava/lang/String;Lkotlin/jvm/functions/Function3;II)V +Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$3; +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$3;->()V +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$3;->()V +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$3;->invoke(Z)Ljava/lang/Boolean; +Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$4; +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$4;->(Landroidx/compose/foundation/layout/RowScope;ZLandroidx/compose/ui/Modifier;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Ljava/lang/String;Lkotlin/jvm/functions/Function3;II)V +Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$5; +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$5;->()V +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$5;->()V +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$5;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$5;->invoke(Z)Ljava/lang/Boolean; +Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$6; +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$6;->(Landroidx/compose/foundation/layout/ColumnScope;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; +PLandroidx/compose/animation/AnimatedVisibilityScopeImpl;->(Landroidx/compose/animation/core/Transition;)V +HSPLandroidx/compose/animation/AnimatedVisibilityScopeImpl;->getTargetSize$animation_release()Landroidx/compose/runtime/MutableState; +Landroidx/compose/animation/ChangeSize; +HSPLandroidx/compose/animation/ChangeSize;->(Landroidx/compose/ui/Alignment;Lkotlin/jvm/functions/Function1;Landroidx/compose/animation/core/FiniteAnimationSpec;Z)V +HSPLandroidx/compose/animation/ChangeSize;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/animation/ChangeSize;->getAlignment()Landroidx/compose/ui/Alignment; +HSPLandroidx/compose/animation/ChangeSize;->getAnimationSpec()Landroidx/compose/animation/core/FiniteAnimationSpec; +HSPLandroidx/compose/animation/ChangeSize;->getClip()Z +HSPLandroidx/compose/animation/ChangeSize;->getSize()Lkotlin/jvm/functions/Function1; +Landroidx/compose/animation/ColorVectorConverterKt; +HSPLandroidx/compose/animation/ColorVectorConverterKt;->()V +HSPLandroidx/compose/animation/ColorVectorConverterKt;->getVectorConverter(Landroidx/compose/ui/graphics/Color$Companion;)Lkotlin/jvm/functions/Function1; +Landroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1; +HSPLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1;->()V +HSPLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1;->()V +HSPLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1;->invoke(Landroidx/compose/ui/graphics/colorspace/ColorSpace;)Landroidx/compose/animation/core/TwoWayConverter; +HSPLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1$1; +HSPLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1$1;->()V +HSPLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1$1;->()V +HSPLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1$1;->invoke-8_81llA(J)Landroidx/compose/animation/core/AnimationVector4D; +Landroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1$2; +HSPLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1$2;->(Landroidx/compose/ui/graphics/colorspace/ColorSpace;)V +HSPLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1$2;->invoke-vNxB06k(Landroidx/compose/animation/core/AnimationVector4D;)J +Landroidx/compose/animation/ContentTransform; +HSPLandroidx/compose/animation/ContentTransform;->()V +HSPLandroidx/compose/animation/ContentTransform;->(Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;FLandroidx/compose/animation/SizeTransform;)V +HSPLandroidx/compose/animation/ContentTransform;->(Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;FLandroidx/compose/animation/SizeTransform;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/animation/ContentTransform;->getSizeTransform()Landroidx/compose/animation/SizeTransform; +HSPLandroidx/compose/animation/ContentTransform;->getTargetContentEnter()Landroidx/compose/animation/EnterTransition; +HSPLandroidx/compose/animation/ContentTransform;->getTargetContentZIndex()F +Landroidx/compose/animation/CrossfadeKt; +HSPLandroidx/compose/animation/CrossfadeKt;->Crossfade(Landroidx/compose/animation/core/Transition;Landroidx/compose/ui/Modifier;Landroidx/compose/animation/core/FiniteAnimationSpec;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/animation/CrossfadeKt;->Crossfade(Ljava/lang/Object;Landroidx/compose/ui/Modifier;Landroidx/compose/animation/core/FiniteAnimationSpec;Ljava/lang/String;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +Landroidx/compose/animation/CrossfadeKt$Crossfade$1; +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$1;->(Ljava/lang/Object;Landroidx/compose/ui/Modifier;Landroidx/compose/animation/core/FiniteAnimationSpec;Ljava/lang/String;Lkotlin/jvm/functions/Function3;II)V +Landroidx/compose/animation/CrossfadeKt$Crossfade$3; +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$3;->()V +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$3;->()V +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/CrossfadeKt$Crossfade$4$1; +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$4$1;->(Landroidx/compose/animation/core/Transition;)V +HSPLandroidx/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; +Landroidx/compose/animation/CrossfadeKt$Crossfade$5$1; +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1;->(Landroidx/compose/animation/core/Transition;ILandroidx/compose/animation/core/FiniteAnimationSpec;Ljava/lang/Object;Lkotlin/jvm/functions/Function3;)V +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1;->access$invoke$lambda$1(Landroidx/compose/runtime/State;)F +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1;->invoke$lambda$1(Landroidx/compose/runtime/State;)F +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/CrossfadeKt$Crossfade$5$1$1$1; +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1$1$1;->(Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1$1$1;->invoke(Landroidx/compose/ui/graphics/GraphicsLayerScope;)V +HSPLandroidx/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;->(Landroidx/compose/animation/core/FiniteAnimationSpec;)V +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1$alpha$2;->invoke(Landroidx/compose/animation/core/Transition$Segment;Landroidx/compose/runtime/Composer;I)Landroidx/compose/animation/core/FiniteAnimationSpec; +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1$alpha$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/CrossfadeKt$Crossfade$7; +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$7;->(Landroidx/compose/animation/core/Transition;Landroidx/compose/ui/Modifier;Landroidx/compose/animation/core/FiniteAnimationSpec;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;II)V +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$7;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$7;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/EnterExitState; +HSPLandroidx/compose/animation/EnterExitState;->$values()[Landroidx/compose/animation/EnterExitState; +HSPLandroidx/compose/animation/EnterExitState;->()V +HSPLandroidx/compose/animation/EnterExitState;->(Ljava/lang/String;I)V +HSPLandroidx/compose/animation/EnterExitState;->values()[Landroidx/compose/animation/EnterExitState; +Landroidx/compose/animation/EnterExitTransitionKt; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->()V +HSPLandroidx/compose/animation/EnterExitTransitionKt;->access$createModifier$lambda$11(Landroidx/compose/runtime/State;)F +HSPLandroidx/compose/animation/EnterExitTransitionKt;->access$createModifier$lambda$13(Landroidx/compose/runtime/State;)J +HSPLandroidx/compose/animation/EnterExitTransitionKt;->access$createModifier$lambda$8(Landroidx/compose/runtime/State;)F +HSPLandroidx/compose/animation/EnterExitTransitionKt;->access$getDefaultOffsetAnimationSpec$p()Landroidx/compose/animation/core/SpringSpec; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->createModifier$lambda$1(Landroidx/compose/runtime/MutableState;)Z +HSPLandroidx/compose/animation/EnterExitTransitionKt;->createModifier$lambda$11(Landroidx/compose/runtime/State;)F +HSPLandroidx/compose/animation/EnterExitTransitionKt;->createModifier$lambda$13(Landroidx/compose/runtime/State;)J +HSPLandroidx/compose/animation/EnterExitTransitionKt;->createModifier$lambda$2(Landroidx/compose/runtime/MutableState;Z)V +HSPLandroidx/compose/animation/EnterExitTransitionKt;->createModifier$lambda$4(Landroidx/compose/runtime/MutableState;)Z +HSPLandroidx/compose/animation/EnterExitTransitionKt;->createModifier$lambda$5(Landroidx/compose/runtime/MutableState;Z)V +HSPLandroidx/compose/animation/EnterExitTransitionKt;->createModifier$lambda$8(Landroidx/compose/runtime/State;)F +HSPLandroidx/compose/animation/EnterExitTransitionKt;->createModifier(Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Ljava/lang/String;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->expandHorizontally$default(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment$Horizontal;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Landroidx/compose/animation/EnterTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->expandHorizontally(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment$Horizontal;ZLkotlin/jvm/functions/Function1;)Landroidx/compose/animation/EnterTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->expandIn$default(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Landroidx/compose/animation/EnterTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->expandIn(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment;ZLkotlin/jvm/functions/Function1;)Landroidx/compose/animation/EnterTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->expandVertically$default(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment$Vertical;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Landroidx/compose/animation/EnterTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->expandVertically(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment$Vertical;ZLkotlin/jvm/functions/Function1;)Landroidx/compose/animation/EnterTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->fadeIn$default(Landroidx/compose/animation/core/FiniteAnimationSpec;FILjava/lang/Object;)Landroidx/compose/animation/EnterTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->fadeIn(Landroidx/compose/animation/core/FiniteAnimationSpec;F)Landroidx/compose/animation/EnterTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->fadeOut$default(Landroidx/compose/animation/core/FiniteAnimationSpec;FILjava/lang/Object;)Landroidx/compose/animation/ExitTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->fadeOut(Landroidx/compose/animation/core/FiniteAnimationSpec;F)Landroidx/compose/animation/ExitTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->scaleIn-L8ZKh-E$default(Landroidx/compose/animation/core/FiniteAnimationSpec;FJILjava/lang/Object;)Landroidx/compose/animation/EnterTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->scaleIn-L8ZKh-E(Landroidx/compose/animation/core/FiniteAnimationSpec;FJ)Landroidx/compose/animation/EnterTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->scaleOut-L8ZKh-E$default(Landroidx/compose/animation/core/FiniteAnimationSpec;FJILjava/lang/Object;)Landroidx/compose/animation/ExitTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->scaleOut-L8ZKh-E(Landroidx/compose/animation/core/FiniteAnimationSpec;FJ)Landroidx/compose/animation/ExitTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->shrinkExpand(Landroidx/compose/ui/Modifier;Landroidx/compose/animation/core/Transition;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Ljava/lang/String;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->shrinkHorizontally$default(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment$Horizontal;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Landroidx/compose/animation/ExitTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->shrinkHorizontally(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment$Horizontal;ZLkotlin/jvm/functions/Function1;)Landroidx/compose/animation/ExitTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->shrinkOut$default(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Landroidx/compose/animation/ExitTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->shrinkOut(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment;ZLkotlin/jvm/functions/Function1;)Landroidx/compose/animation/ExitTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->shrinkVertically$default(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment$Vertical;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Landroidx/compose/animation/ExitTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->shrinkVertically(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment$Vertical;ZLkotlin/jvm/functions/Function1;)Landroidx/compose/animation/ExitTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->slideIn(Landroidx/compose/animation/core/FiniteAnimationSpec;Lkotlin/jvm/functions/Function1;)Landroidx/compose/animation/EnterTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->slideInHorizontally(Landroidx/compose/animation/core/FiniteAnimationSpec;Lkotlin/jvm/functions/Function1;)Landroidx/compose/animation/EnterTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->slideInOut(Landroidx/compose/ui/Modifier;Landroidx/compose/animation/core/Transition;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Ljava/lang/String;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->slideOut(Landroidx/compose/animation/core/FiniteAnimationSpec;Lkotlin/jvm/functions/Function1;)Landroidx/compose/animation/ExitTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->slideOutHorizontally(Landroidx/compose/animation/core/FiniteAnimationSpec;Lkotlin/jvm/functions/Function1;)Landroidx/compose/animation/ExitTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->toAlignment(Landroidx/compose/ui/Alignment$Horizontal;)Landroidx/compose/ui/Alignment; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->toAlignment(Landroidx/compose/ui/Alignment$Vertical;)Landroidx/compose/ui/Alignment; +Landroidx/compose/animation/EnterExitTransitionKt$TransformOriginVectorConverter$1; +HSPLandroidx/compose/animation/EnterExitTransitionKt$TransformOriginVectorConverter$1;->()V +HSPLandroidx/compose/animation/EnterExitTransitionKt$TransformOriginVectorConverter$1;->()V +HSPLandroidx/compose/animation/EnterExitTransitionKt$TransformOriginVectorConverter$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/EnterExitTransitionKt$TransformOriginVectorConverter$1;->invoke-__ExYCQ(J)Landroidx/compose/animation/core/AnimationVector2D; +Landroidx/compose/animation/EnterExitTransitionKt$TransformOriginVectorConverter$2; +HSPLandroidx/compose/animation/EnterExitTransitionKt$TransformOriginVectorConverter$2;->()V +HSPLandroidx/compose/animation/EnterExitTransitionKt$TransformOriginVectorConverter$2;->()V +Landroidx/compose/animation/EnterExitTransitionKt$WhenMappings; +HSPLandroidx/compose/animation/EnterExitTransitionKt$WhenMappings;->()V +Landroidx/compose/animation/EnterExitTransitionKt$createModifier$$inlined$animateValue$1; +HSPLandroidx/compose/animation/EnterExitTransitionKt$createModifier$$inlined$animateValue$1;->()V +HSPLandroidx/compose/animation/EnterExitTransitionKt$createModifier$$inlined$animateValue$1;->()V +HSPLandroidx/compose/animation/EnterExitTransitionKt$createModifier$$inlined$animateValue$1;->invoke(Landroidx/compose/animation/core/Transition$Segment;Landroidx/compose/runtime/Composer;I)Landroidx/compose/animation/core/SpringSpec; +HSPLandroidx/compose/animation/EnterExitTransitionKt$createModifier$$inlined$animateValue$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/EnterExitTransitionKt$createModifier$1$1; +HSPLandroidx/compose/animation/EnterExitTransitionKt$createModifier$1$1;->(Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/animation/EnterExitTransitionKt$createModifier$1$1;->invoke(Landroidx/compose/ui/graphics/GraphicsLayerScope;)V +HSPLandroidx/compose/animation/EnterExitTransitionKt$createModifier$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/EnterExitTransitionKt$createModifier$2$1; +HSPLandroidx/compose/animation/EnterExitTransitionKt$createModifier$2$1;->(Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/animation/EnterExitTransitionKt$createModifier$2$1;->invoke(Landroidx/compose/ui/graphics/GraphicsLayerScope;)V +HSPLandroidx/compose/animation/EnterExitTransitionKt$createModifier$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/EnterExitTransitionKt$createModifier$alpha$2; +HSPLandroidx/compose/animation/EnterExitTransitionKt$createModifier$alpha$2;->(Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;)V +HSPLandroidx/compose/animation/EnterExitTransitionKt$createModifier$alpha$2;->invoke(Landroidx/compose/animation/core/Transition$Segment;Landroidx/compose/runtime/Composer;I)Landroidx/compose/animation/core/FiniteAnimationSpec; +HSPLandroidx/compose/animation/EnterExitTransitionKt$createModifier$alpha$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/EnterExitTransitionKt$createModifier$scale$2; +HSPLandroidx/compose/animation/EnterExitTransitionKt$createModifier$scale$2;->(Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;)V +HSPLandroidx/compose/animation/EnterExitTransitionKt$createModifier$scale$2;->invoke(Landroidx/compose/animation/core/Transition$Segment;Landroidx/compose/runtime/Composer;I)Landroidx/compose/animation/core/FiniteAnimationSpec; +HSPLandroidx/compose/animation/EnterExitTransitionKt$createModifier$scale$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/EnterExitTransitionKt$expandHorizontally$1; +HSPLandroidx/compose/animation/EnterExitTransitionKt$expandHorizontally$1;->()V +HSPLandroidx/compose/animation/EnterExitTransitionKt$expandHorizontally$1;->()V +Landroidx/compose/animation/EnterExitTransitionKt$expandHorizontally$2; +HSPLandroidx/compose/animation/EnterExitTransitionKt$expandHorizontally$2;->(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/animation/EnterExitTransitionKt$expandIn$1; +HSPLandroidx/compose/animation/EnterExitTransitionKt$expandIn$1;->()V +HSPLandroidx/compose/animation/EnterExitTransitionKt$expandIn$1;->()V +Landroidx/compose/animation/EnterExitTransitionKt$expandVertically$1; +HSPLandroidx/compose/animation/EnterExitTransitionKt$expandVertically$1;->()V +HSPLandroidx/compose/animation/EnterExitTransitionKt$expandVertically$1;->()V +Landroidx/compose/animation/EnterExitTransitionKt$expandVertically$2; +HSPLandroidx/compose/animation/EnterExitTransitionKt$expandVertically$2;->(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/animation/EnterExitTransitionKt$shrinkExpand$1; +HSPLandroidx/compose/animation/EnterExitTransitionKt$shrinkExpand$1;->(Landroidx/compose/animation/core/Transition;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Ljava/lang/String;)V +HSPLandroidx/compose/animation/EnterExitTransitionKt$shrinkExpand$1;->invoke$lambda$1(Landroidx/compose/runtime/MutableState;)Z +HSPLandroidx/compose/animation/EnterExitTransitionKt$shrinkExpand$1;->invoke$lambda$2(Landroidx/compose/runtime/MutableState;Z)V +HSPLandroidx/compose/animation/EnterExitTransitionKt$shrinkExpand$1;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/animation/EnterExitTransitionKt$shrinkExpand$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/EnterExitTransitionKt$shrinkHorizontally$1; +HSPLandroidx/compose/animation/EnterExitTransitionKt$shrinkHorizontally$1;->()V +HSPLandroidx/compose/animation/EnterExitTransitionKt$shrinkHorizontally$1;->()V +Landroidx/compose/animation/EnterExitTransitionKt$shrinkHorizontally$2; +HSPLandroidx/compose/animation/EnterExitTransitionKt$shrinkHorizontally$2;->(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/animation/EnterExitTransitionKt$shrinkOut$1; +HSPLandroidx/compose/animation/EnterExitTransitionKt$shrinkOut$1;->()V +HSPLandroidx/compose/animation/EnterExitTransitionKt$shrinkOut$1;->()V +Landroidx/compose/animation/EnterExitTransitionKt$shrinkVertically$1; +HSPLandroidx/compose/animation/EnterExitTransitionKt$shrinkVertically$1;->()V +HSPLandroidx/compose/animation/EnterExitTransitionKt$shrinkVertically$1;->()V +Landroidx/compose/animation/EnterExitTransitionKt$shrinkVertically$2; +HSPLandroidx/compose/animation/EnterExitTransitionKt$shrinkVertically$2;->(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/animation/EnterExitTransitionKt$slideInHorizontally$2; +HSPLandroidx/compose/animation/EnterExitTransitionKt$slideInHorizontally$2;->(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/animation/EnterExitTransitionKt$slideInOut$1; +HSPLandroidx/compose/animation/EnterExitTransitionKt$slideInOut$1;->(Landroidx/compose/animation/core/Transition;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Ljava/lang/String;)V +HSPLandroidx/compose/animation/EnterExitTransitionKt$slideInOut$1;->invoke$lambda$1(Landroidx/compose/runtime/MutableState;)Z +HSPLandroidx/compose/animation/EnterExitTransitionKt$slideInOut$1;->invoke$lambda$2(Landroidx/compose/runtime/MutableState;Z)V +HSPLandroidx/compose/animation/EnterExitTransitionKt$slideInOut$1;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/animation/EnterExitTransitionKt$slideInOut$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/EnterExitTransitionKt$slideOutHorizontally$2; +HSPLandroidx/compose/animation/EnterExitTransitionKt$slideOutHorizontally$2;->(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/animation/EnterTransition; +HSPLandroidx/compose/animation/EnterTransition;->()V +HSPLandroidx/compose/animation/EnterTransition;->()V +HSPLandroidx/compose/animation/EnterTransition;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/animation/EnterTransition;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/animation/EnterTransition;->plus(Landroidx/compose/animation/EnterTransition;)Landroidx/compose/animation/EnterTransition; +Landroidx/compose/animation/EnterTransition$Companion; +HSPLandroidx/compose/animation/EnterTransition$Companion;->()V +HSPLandroidx/compose/animation/EnterTransition$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/animation/EnterTransitionImpl; +HSPLandroidx/compose/animation/EnterTransitionImpl;->(Landroidx/compose/animation/TransitionData;)V +HSPLandroidx/compose/animation/EnterTransitionImpl;->getData$animation_release()Landroidx/compose/animation/TransitionData; +Landroidx/compose/animation/ExitTransition; +HSPLandroidx/compose/animation/ExitTransition;->()V +HSPLandroidx/compose/animation/ExitTransition;->()V +HSPLandroidx/compose/animation/ExitTransition;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/animation/ExitTransition;->access$getNone$cp()Landroidx/compose/animation/ExitTransition; +HSPLandroidx/compose/animation/ExitTransition;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/animation/ExitTransition;->plus(Landroidx/compose/animation/ExitTransition;)Landroidx/compose/animation/ExitTransition; +Landroidx/compose/animation/ExitTransition$Companion; +HSPLandroidx/compose/animation/ExitTransition$Companion;->()V +HSPLandroidx/compose/animation/ExitTransition$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/animation/ExitTransition$Companion;->getNone()Landroidx/compose/animation/ExitTransition; +Landroidx/compose/animation/ExitTransitionImpl; +HSPLandroidx/compose/animation/ExitTransitionImpl;->(Landroidx/compose/animation/TransitionData;)V +HSPLandroidx/compose/animation/ExitTransitionImpl;->getData$animation_release()Landroidx/compose/animation/TransitionData; +Landroidx/compose/animation/ExpandShrinkModifier; +HSPLandroidx/compose/animation/ExpandShrinkModifier;->(Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/animation/ExpandShrinkModifier;->getCurrentAlignment()Landroidx/compose/ui/Alignment; +HSPLandroidx/compose/animation/ExpandShrinkModifier;->getExpand()Landroidx/compose/runtime/State; +HSPLandroidx/compose/animation/ExpandShrinkModifier;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/animation/ExpandShrinkModifier;->setCurrentAlignment(Landroidx/compose/ui/Alignment;)V +HSPLandroidx/compose/animation/ExpandShrinkModifier;->sizeByState-Uzc_VyU(Landroidx/compose/animation/EnterExitState;J)J +HSPLandroidx/compose/animation/ExpandShrinkModifier;->targetOffsetByState-oFUgxo0(Landroidx/compose/animation/EnterExitState;J)J +Landroidx/compose/animation/ExpandShrinkModifier$WhenMappings; +HSPLandroidx/compose/animation/ExpandShrinkModifier$WhenMappings;->()V +Landroidx/compose/animation/ExpandShrinkModifier$measure$1; +HSPLandroidx/compose/animation/ExpandShrinkModifier$measure$1;->(Landroidx/compose/ui/layout/Placeable;JJ)V +HSPLandroidx/compose/animation/ExpandShrinkModifier$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/animation/ExpandShrinkModifier$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/ExpandShrinkModifier$measure$currentSize$1; +HSPLandroidx/compose/animation/ExpandShrinkModifier$measure$currentSize$1;->(Landroidx/compose/animation/ExpandShrinkModifier;J)V +HSPLandroidx/compose/animation/ExpandShrinkModifier$measure$currentSize$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/ExpandShrinkModifier$measure$currentSize$1;->invoke-YEO4UFw(Landroidx/compose/animation/EnterExitState;)J +Landroidx/compose/animation/ExpandShrinkModifier$measure$offsetDelta$1; +HSPLandroidx/compose/animation/ExpandShrinkModifier$measure$offsetDelta$1;->()V +HSPLandroidx/compose/animation/ExpandShrinkModifier$measure$offsetDelta$1;->()V +HSPLandroidx/compose/animation/ExpandShrinkModifier$measure$offsetDelta$1;->invoke(Landroidx/compose/animation/core/Transition$Segment;)Landroidx/compose/animation/core/FiniteAnimationSpec; +HSPLandroidx/compose/animation/ExpandShrinkModifier$measure$offsetDelta$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/ExpandShrinkModifier$measure$offsetDelta$2; +HSPLandroidx/compose/animation/ExpandShrinkModifier$measure$offsetDelta$2;->(Landroidx/compose/animation/ExpandShrinkModifier;J)V +HSPLandroidx/compose/animation/ExpandShrinkModifier$measure$offsetDelta$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/ExpandShrinkModifier$measure$offsetDelta$2;->invoke-Bjo55l4(Landroidx/compose/animation/EnterExitState;)J +Landroidx/compose/animation/ExpandShrinkModifier$sizeTransitionSpec$1; +HSPLandroidx/compose/animation/ExpandShrinkModifier$sizeTransitionSpec$1;->(Landroidx/compose/animation/ExpandShrinkModifier;)V +HSPLandroidx/compose/animation/ExpandShrinkModifier$sizeTransitionSpec$1;->invoke(Landroidx/compose/animation/core/Transition$Segment;)Landroidx/compose/animation/core/FiniteAnimationSpec; +HSPLandroidx/compose/animation/ExpandShrinkModifier$sizeTransitionSpec$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/Fade; +HSPLandroidx/compose/animation/Fade;->(FLandroidx/compose/animation/core/FiniteAnimationSpec;)V +HSPLandroidx/compose/animation/Fade;->getAlpha()F +HSPLandroidx/compose/animation/Fade;->getAnimationSpec()Landroidx/compose/animation/core/FiniteAnimationSpec; +Landroidx/compose/animation/FlingCalculator; +HSPLandroidx/compose/animation/FlingCalculator;->(FLandroidx/compose/ui/unit/Density;)V +HSPLandroidx/compose/animation/FlingCalculator;->computeDeceleration(Landroidx/compose/ui/unit/Density;)F +Landroidx/compose/animation/FlingCalculatorKt; +HSPLandroidx/compose/animation/FlingCalculatorKt;->()V +HSPLandroidx/compose/animation/FlingCalculatorKt;->access$computeDeceleration(FF)F +HSPLandroidx/compose/animation/FlingCalculatorKt;->computeDeceleration(FF)F +Landroidx/compose/animation/LayoutModifierWithPassThroughIntrinsics; +HSPLandroidx/compose/animation/LayoutModifierWithPassThroughIntrinsics;->()V +Landroidx/compose/animation/Scale; +HSPLandroidx/compose/animation/Scale;->(FJLandroidx/compose/animation/core/FiniteAnimationSpec;)V +HSPLandroidx/compose/animation/Scale;->(FJLandroidx/compose/animation/core/FiniteAnimationSpec;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/animation/Scale;->getAnimationSpec()Landroidx/compose/animation/core/FiniteAnimationSpec; +HSPLandroidx/compose/animation/Scale;->getScale()F +HSPLandroidx/compose/animation/Scale;->getTransformOrigin-SzJe1aQ()J +Landroidx/compose/animation/SingleValueAnimationKt; +HSPLandroidx/compose/animation/SingleValueAnimationKt;->()V +HSPLandroidx/compose/animation/SingleValueAnimationKt;->animateColorAsState-euL9pac(JLandroidx/compose/animation/core/AnimationSpec;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)Landroidx/compose/runtime/State; +Landroidx/compose/animation/SizeTransform; +Landroidx/compose/animation/SizeTransformImpl; +HSPLandroidx/compose/animation/SizeTransformImpl;->(ZLkotlin/jvm/functions/Function2;)V +Landroidx/compose/animation/Slide; +HSPLandroidx/compose/animation/Slide;->(Lkotlin/jvm/functions/Function1;Landroidx/compose/animation/core/FiniteAnimationSpec;)V +HSPLandroidx/compose/animation/Slide;->equals(Ljava/lang/Object;)Z +Landroidx/compose/animation/SplineBasedFloatDecayAnimationSpec; +HSPLandroidx/compose/animation/SplineBasedFloatDecayAnimationSpec;->()V +HSPLandroidx/compose/animation/SplineBasedFloatDecayAnimationSpec;->(Landroidx/compose/ui/unit/Density;)V +Landroidx/compose/animation/SplineBasedFloatDecayAnimationSpec_androidKt; +HSPLandroidx/compose/animation/SplineBasedFloatDecayAnimationSpec_androidKt;->()V +HSPLandroidx/compose/animation/SplineBasedFloatDecayAnimationSpec_androidKt;->getPlatformFlingScrollFriction()F +HSPLandroidx/compose/animation/SplineBasedFloatDecayAnimationSpec_androidKt;->rememberSplineBasedDecay(Landroidx/compose/runtime/Composer;I)Landroidx/compose/animation/core/DecayAnimationSpec; +Landroidx/compose/animation/TransitionData; +HSPLandroidx/compose/animation/TransitionData;->(Landroidx/compose/animation/Fade;Landroidx/compose/animation/Slide;Landroidx/compose/animation/ChangeSize;Landroidx/compose/animation/Scale;)V +HSPLandroidx/compose/animation/TransitionData;->(Landroidx/compose/animation/Fade;Landroidx/compose/animation/Slide;Landroidx/compose/animation/ChangeSize;Landroidx/compose/animation/Scale;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/animation/TransitionData;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/animation/TransitionData;->getChangeSize()Landroidx/compose/animation/ChangeSize; +HSPLandroidx/compose/animation/TransitionData;->getFade()Landroidx/compose/animation/Fade; +HSPLandroidx/compose/animation/TransitionData;->getScale()Landroidx/compose/animation/Scale; +HSPLandroidx/compose/animation/TransitionData;->getSlide()Landroidx/compose/animation/Slide; +Landroidx/compose/animation/core/Animatable; +HSPLandroidx/compose/animation/core/Animatable;->()V +HSPLandroidx/compose/animation/core/Animatable;->(Ljava/lang/Object;Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Ljava/lang/String;)V +HSPLandroidx/compose/animation/core/Animatable;->(Ljava/lang/Object;Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/animation/core/Animatable;->access$clampToBounds(Landroidx/compose/animation/core/Animatable;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Animatable;->access$endAnimation(Landroidx/compose/animation/core/Animatable;)V +HSPLandroidx/compose/animation/core/Animatable;->access$setRunning(Landroidx/compose/animation/core/Animatable;Z)V +HSPLandroidx/compose/animation/core/Animatable;->access$setTargetValue(Landroidx/compose/animation/core/Animatable;Ljava/lang/Object;)V +HSPLandroidx/compose/animation/core/Animatable;->animateTo$default(Landroidx/compose/animation/core/Animatable;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationSpec;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Animatable;->animateTo(Ljava/lang/Object;Landroidx/compose/animation/core/AnimationSpec;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Animatable;->asState()Landroidx/compose/runtime/State; +HSPLandroidx/compose/animation/core/Animatable;->clampToBounds(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Animatable;->createVector(Ljava/lang/Object;F)Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/Animatable;->endAnimation()V +HSPLandroidx/compose/animation/core/Animatable;->getInternalState$animation_core_release()Landroidx/compose/animation/core/AnimationState; +HSPLandroidx/compose/animation/core/Animatable;->getTargetValue()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Animatable;->getTypeConverter()Landroidx/compose/animation/core/TwoWayConverter; +HSPLandroidx/compose/animation/core/Animatable;->getValue()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Animatable;->getVelocity()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Animatable;->getVelocityVector()Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/Animatable;->runAnimation(Landroidx/compose/animation/core/Animation;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Animatable;->setRunning(Z)V +HSPLandroidx/compose/animation/core/Animatable;->setTargetValue(Ljava/lang/Object;)V +HSPLandroidx/compose/animation/core/Animatable;->snapTo(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/animation/core/Animatable$runAnimation$2; +HSPLandroidx/compose/animation/core/Animatable$runAnimation$2;->(Landroidx/compose/animation/core/Animatable;Ljava/lang/Object;Landroidx/compose/animation/core/Animation;JLkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/animation/core/Animatable$runAnimation$2;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/animation/core/Animatable$runAnimation$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Animatable$runAnimation$2;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Animatable$runAnimation$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/Animatable$runAnimation$2$1; +HSPLandroidx/compose/animation/core/Animatable$runAnimation$2$1;->(Landroidx/compose/animation/core/Animatable;Landroidx/compose/animation/core/AnimationState;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/internal/Ref$BooleanRef;)V +HSPLandroidx/compose/animation/core/Animatable$runAnimation$2$1;->invoke(Landroidx/compose/animation/core/AnimationScope;)V +HSPLandroidx/compose/animation/core/Animatable$runAnimation$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/Animatable$snapTo$2; +HSPLandroidx/compose/animation/core/Animatable$snapTo$2;->(Landroidx/compose/animation/core/Animatable;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/animation/core/Animatable$snapTo$2;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/animation/core/Animatable$snapTo$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Animatable$snapTo$2;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Animatable$snapTo$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/AnimatableKt; +HSPLandroidx/compose/animation/core/AnimatableKt;->Animatable$default(FFILjava/lang/Object;)Landroidx/compose/animation/core/Animatable; +HSPLandroidx/compose/animation/core/AnimatableKt;->Animatable(FF)Landroidx/compose/animation/core/Animatable; +Landroidx/compose/animation/core/AnimateAsStateKt; +HSPLandroidx/compose/animation/core/AnimateAsStateKt;->()V +HSPLandroidx/compose/animation/core/AnimateAsStateKt;->access$animateValueAsState$lambda$4(Landroidx/compose/runtime/State;)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/animation/core/AnimateAsStateKt;->access$animateValueAsState$lambda$6(Landroidx/compose/runtime/State;)Landroidx/compose/animation/core/AnimationSpec; +HSPLandroidx/compose/animation/core/AnimateAsStateKt;->animateDpAsState-AjpBEmI(FLandroidx/compose/animation/core/AnimationSpec;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)Landroidx/compose/runtime/State; +HSPLandroidx/compose/animation/core/AnimateAsStateKt;->animateFloatAsState(FLandroidx/compose/animation/core/AnimationSpec;FLjava/lang/String;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)Landroidx/compose/runtime/State; +HSPLandroidx/compose/animation/core/AnimateAsStateKt;->animateValueAsState$lambda$4(Landroidx/compose/runtime/State;)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/animation/core/AnimateAsStateKt;->animateValueAsState$lambda$6(Landroidx/compose/runtime/State;)Landroidx/compose/animation/core/AnimationSpec; +HSPLandroidx/compose/animation/core/AnimateAsStateKt;->animateValueAsState(Ljava/lang/Object;Landroidx/compose/animation/core/TwoWayConverter;Landroidx/compose/animation/core/AnimationSpec;Ljava/lang/Object;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)Landroidx/compose/runtime/State; +Landroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$2; +HSPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$2;->(Lkotlinx/coroutines/channels/Channel;Ljava/lang/Object;)V +HSPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$2;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$2;->invoke()V +Landroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3; +HSPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3;->(Lkotlinx/coroutines/channels/Channel;Landroidx/compose/animation/core/Animatable;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3$1; +HSPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3$1;->(Ljava/lang/Object;Landroidx/compose/animation/core/Animatable;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/Animation; +HSPLandroidx/compose/animation/core/Animation;->isFinishedFromNanos(J)Z +Landroidx/compose/animation/core/AnimationEndReason; +HSPLandroidx/compose/animation/core/AnimationEndReason;->$values()[Landroidx/compose/animation/core/AnimationEndReason; +HSPLandroidx/compose/animation/core/AnimationEndReason;->()V +HSPLandroidx/compose/animation/core/AnimationEndReason;->(Ljava/lang/String;I)V +Landroidx/compose/animation/core/AnimationKt; +HSPLandroidx/compose/animation/core/AnimationKt;->TargetBasedAnimation(Landroidx/compose/animation/core/AnimationSpec;Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Landroidx/compose/animation/core/TargetBasedAnimation; +Landroidx/compose/animation/core/AnimationResult; +HSPLandroidx/compose/animation/core/AnimationResult;->()V +HSPLandroidx/compose/animation/core/AnimationResult;->(Landroidx/compose/animation/core/AnimationState;Landroidx/compose/animation/core/AnimationEndReason;)V +Landroidx/compose/animation/core/AnimationScope; +HSPLandroidx/compose/animation/core/AnimationScope;->()V +HSPLandroidx/compose/animation/core/AnimationScope;->(Ljava/lang/Object;Landroidx/compose/animation/core/TwoWayConverter;Landroidx/compose/animation/core/AnimationVector;JLjava/lang/Object;JZLkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/animation/core/AnimationScope;->getFinishedTimeNanos()J +HSPLandroidx/compose/animation/core/AnimationScope;->getLastFrameTimeNanos()J +HSPLandroidx/compose/animation/core/AnimationScope;->getStartTimeNanos()J +HSPLandroidx/compose/animation/core/AnimationScope;->getValue()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/AnimationScope;->getVelocityVector()Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/AnimationScope;->isRunning()Z +HSPLandroidx/compose/animation/core/AnimationScope;->setFinishedTimeNanos$animation_core_release(J)V +HSPLandroidx/compose/animation/core/AnimationScope;->setLastFrameTimeNanos$animation_core_release(J)V +HSPLandroidx/compose/animation/core/AnimationScope;->setRunning$animation_core_release(Z)V +HSPLandroidx/compose/animation/core/AnimationScope;->setValue$animation_core_release(Ljava/lang/Object;)V +HSPLandroidx/compose/animation/core/AnimationScope;->setVelocityVector$animation_core_release(Landroidx/compose/animation/core/AnimationVector;)V +Landroidx/compose/animation/core/AnimationSpec; +Landroidx/compose/animation/core/AnimationSpecKt; +HSPLandroidx/compose/animation/core/AnimationSpecKt;->access$convert(Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;)Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/AnimationSpecKt;->convert(Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;)Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/AnimationSpecKt;->infiniteRepeatable-9IiC70o$default(Landroidx/compose/animation/core/DurationBasedAnimationSpec;Landroidx/compose/animation/core/RepeatMode;JILjava/lang/Object;)Landroidx/compose/animation/core/InfiniteRepeatableSpec; +HSPLandroidx/compose/animation/core/AnimationSpecKt;->infiniteRepeatable-9IiC70o(Landroidx/compose/animation/core/DurationBasedAnimationSpec;Landroidx/compose/animation/core/RepeatMode;J)Landroidx/compose/animation/core/InfiniteRepeatableSpec; +HSPLandroidx/compose/animation/core/AnimationSpecKt;->keyframes(Lkotlin/jvm/functions/Function1;)Landroidx/compose/animation/core/KeyframesSpec; +HSPLandroidx/compose/animation/core/AnimationSpecKt;->snap$default(IILjava/lang/Object;)Landroidx/compose/animation/core/SnapSpec; +HSPLandroidx/compose/animation/core/AnimationSpecKt;->snap(I)Landroidx/compose/animation/core/SnapSpec; +HSPLandroidx/compose/animation/core/AnimationSpecKt;->spring$default(FFLjava/lang/Object;ILjava/lang/Object;)Landroidx/compose/animation/core/SpringSpec; +HSPLandroidx/compose/animation/core/AnimationSpecKt;->spring(FFLjava/lang/Object;)Landroidx/compose/animation/core/SpringSpec; +HSPLandroidx/compose/animation/core/AnimationSpecKt;->tween$default(IILandroidx/compose/animation/core/Easing;ILjava/lang/Object;)Landroidx/compose/animation/core/TweenSpec; +HSPLandroidx/compose/animation/core/AnimationSpecKt;->tween(IILandroidx/compose/animation/core/Easing;)Landroidx/compose/animation/core/TweenSpec; +Landroidx/compose/animation/core/AnimationState; +HSPLandroidx/compose/animation/core/AnimationState;->()V +HSPLandroidx/compose/animation/core/AnimationState;->(Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationVector;JJZ)V +HSPLandroidx/compose/animation/core/AnimationState;->(Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationVector;JJZILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/animation/core/AnimationState;->getLastFrameTimeNanos()J +HSPLandroidx/compose/animation/core/AnimationState;->getTypeConverter()Landroidx/compose/animation/core/TwoWayConverter; +HSPLandroidx/compose/animation/core/AnimationState;->getValue()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/AnimationState;->getVelocityVector()Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/AnimationState;->isRunning()Z +HSPLandroidx/compose/animation/core/AnimationState;->setFinishedTimeNanos$animation_core_release(J)V +HSPLandroidx/compose/animation/core/AnimationState;->setLastFrameTimeNanos$animation_core_release(J)V +HSPLandroidx/compose/animation/core/AnimationState;->setRunning$animation_core_release(Z)V +HSPLandroidx/compose/animation/core/AnimationState;->setValue$animation_core_release(Ljava/lang/Object;)V +HSPLandroidx/compose/animation/core/AnimationState;->setVelocityVector$animation_core_release(Landroidx/compose/animation/core/AnimationVector;)V +Landroidx/compose/animation/core/AnimationStateKt; +HSPLandroidx/compose/animation/core/AnimationStateKt;->copy$default(Landroidx/compose/animation/core/AnimationState;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationVector;JJZILjava/lang/Object;)Landroidx/compose/animation/core/AnimationState; +HSPLandroidx/compose/animation/core/AnimationStateKt;->copy(Landroidx/compose/animation/core/AnimationState;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationVector;JJZ)Landroidx/compose/animation/core/AnimationState; +HSPLandroidx/compose/animation/core/AnimationStateKt;->createZeroVectorFrom(Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;)Landroidx/compose/animation/core/AnimationVector; +Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/AnimationVector;->()V +HSPLandroidx/compose/animation/core/AnimationVector;->()V +HSPLandroidx/compose/animation/core/AnimationVector;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/animation/core/AnimationVector1D; +HSPLandroidx/compose/animation/core/AnimationVector1D;->()V +HSPLandroidx/compose/animation/core/AnimationVector1D;->(F)V +HSPLandroidx/compose/animation/core/AnimationVector1D;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/animation/core/AnimationVector1D;->get$animation_core_release(I)F +HSPLandroidx/compose/animation/core/AnimationVector1D;->getSize$animation_core_release()I +HSPLandroidx/compose/animation/core/AnimationVector1D;->getValue()F +HSPLandroidx/compose/animation/core/AnimationVector1D;->newVector$animation_core_release()Landroidx/compose/animation/core/AnimationVector1D; +HSPLandroidx/compose/animation/core/AnimationVector1D;->newVector$animation_core_release()Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/AnimationVector1D;->reset$animation_core_release()V +HSPLandroidx/compose/animation/core/AnimationVector1D;->set$animation_core_release(IF)V +Landroidx/compose/animation/core/AnimationVector2D; +HSPLandroidx/compose/animation/core/AnimationVector2D;->()V +HSPLandroidx/compose/animation/core/AnimationVector2D;->(FF)V +HSPLandroidx/compose/animation/core/AnimationVector2D;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/animation/core/AnimationVector2D;->get$animation_core_release(I)F +HSPLandroidx/compose/animation/core/AnimationVector2D;->getSize$animation_core_release()I +HSPLandroidx/compose/animation/core/AnimationVector2D;->getV1()F +HSPLandroidx/compose/animation/core/AnimationVector2D;->getV2()F +HSPLandroidx/compose/animation/core/AnimationVector2D;->newVector$animation_core_release()Landroidx/compose/animation/core/AnimationVector2D; +HSPLandroidx/compose/animation/core/AnimationVector2D;->newVector$animation_core_release()Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/AnimationVector2D;->reset$animation_core_release()V +HSPLandroidx/compose/animation/core/AnimationVector2D;->set$animation_core_release(IF)V +Landroidx/compose/animation/core/AnimationVector4D; +HSPLandroidx/compose/animation/core/AnimationVector4D;->()V +HSPLandroidx/compose/animation/core/AnimationVector4D;->(FFFF)V +HSPLandroidx/compose/animation/core/AnimationVector4D;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/animation/core/AnimationVector4D;->get$animation_core_release(I)F +HSPLandroidx/compose/animation/core/AnimationVector4D;->getSize$animation_core_release()I +HSPLandroidx/compose/animation/core/AnimationVector4D;->getV1()F +HSPLandroidx/compose/animation/core/AnimationVector4D;->getV2()F +HSPLandroidx/compose/animation/core/AnimationVector4D;->getV3()F +HSPLandroidx/compose/animation/core/AnimationVector4D;->getV4()F +HSPLandroidx/compose/animation/core/AnimationVector4D;->newVector$animation_core_release()Landroidx/compose/animation/core/AnimationVector4D; +HSPLandroidx/compose/animation/core/AnimationVector4D;->newVector$animation_core_release()Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/AnimationVector4D;->reset$animation_core_release()V +HSPLandroidx/compose/animation/core/AnimationVector4D;->set$animation_core_release(IF)V +Landroidx/compose/animation/core/AnimationVectorsKt; +HSPLandroidx/compose/animation/core/AnimationVectorsKt;->copy(Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/AnimationVectorsKt;->copyFrom(Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)V +HSPLandroidx/compose/animation/core/AnimationVectorsKt;->newInstance(Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +Landroidx/compose/animation/core/Animations; +Landroidx/compose/animation/core/ComplexDouble; +HSPLandroidx/compose/animation/core/ComplexDouble;->(DD)V +HSPLandroidx/compose/animation/core/ComplexDouble;->access$get_imaginary$p(Landroidx/compose/animation/core/ComplexDouble;)D +HSPLandroidx/compose/animation/core/ComplexDouble;->access$get_real$p(Landroidx/compose/animation/core/ComplexDouble;)D +HSPLandroidx/compose/animation/core/ComplexDouble;->access$set_imaginary$p(Landroidx/compose/animation/core/ComplexDouble;D)V +HSPLandroidx/compose/animation/core/ComplexDouble;->access$set_real$p(Landroidx/compose/animation/core/ComplexDouble;D)V +HSPLandroidx/compose/animation/core/ComplexDouble;->getReal()D +Landroidx/compose/animation/core/ComplexDoubleKt; +HSPLandroidx/compose/animation/core/ComplexDoubleKt;->complexSqrt(D)Landroidx/compose/animation/core/ComplexDouble; +Landroidx/compose/animation/core/CubicBezierEasing; +HSPLandroidx/compose/animation/core/CubicBezierEasing;->()V +HSPLandroidx/compose/animation/core/CubicBezierEasing;->(FFFF)V +HSPLandroidx/compose/animation/core/CubicBezierEasing;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/animation/core/CubicBezierEasing;->evaluateCubic(FFF)F +HSPLandroidx/compose/animation/core/CubicBezierEasing;->transform(F)F +Landroidx/compose/animation/core/DecayAnimationSpec; +Landroidx/compose/animation/core/DecayAnimationSpecImpl; +HSPLandroidx/compose/animation/core/DecayAnimationSpecImpl;->(Landroidx/compose/animation/core/FloatDecayAnimationSpec;)V +Landroidx/compose/animation/core/DecayAnimationSpecKt; +HSPLandroidx/compose/animation/core/DecayAnimationSpecKt;->generateDecayAnimationSpec(Landroidx/compose/animation/core/FloatDecayAnimationSpec;)Landroidx/compose/animation/core/DecayAnimationSpec; +Landroidx/compose/animation/core/DurationBasedAnimationSpec; +Landroidx/compose/animation/core/Easing; +Landroidx/compose/animation/core/EasingKt; +HSPLandroidx/compose/animation/core/EasingKt;->()V +HSPLandroidx/compose/animation/core/EasingKt;->getFastOutLinearInEasing()Landroidx/compose/animation/core/Easing; +HSPLandroidx/compose/animation/core/EasingKt;->getFastOutSlowInEasing()Landroidx/compose/animation/core/Easing; +HSPLandroidx/compose/animation/core/EasingKt;->getLinearEasing()Landroidx/compose/animation/core/Easing; +Landroidx/compose/animation/core/EasingKt$LinearEasing$1; +HSPLandroidx/compose/animation/core/EasingKt$LinearEasing$1;->()V +HSPLandroidx/compose/animation/core/EasingKt$LinearEasing$1;->()V +HSPLandroidx/compose/animation/core/EasingKt$LinearEasing$1;->transform(F)F +Landroidx/compose/animation/core/FiniteAnimationSpec; +Landroidx/compose/animation/core/FloatAnimationSpec; +Landroidx/compose/animation/core/FloatDecayAnimationSpec; +Landroidx/compose/animation/core/FloatSpringSpec; +HSPLandroidx/compose/animation/core/FloatSpringSpec;->()V +HSPLandroidx/compose/animation/core/FloatSpringSpec;->(FFF)V +HSPLandroidx/compose/animation/core/FloatSpringSpec;->(FFFILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/animation/core/FloatSpringSpec;->getDurationNanos(FFF)J +HSPLandroidx/compose/animation/core/FloatSpringSpec;->getEndVelocity(FFF)F +HSPLandroidx/compose/animation/core/FloatSpringSpec;->getValueFromNanos(JFFF)F +HSPLandroidx/compose/animation/core/FloatSpringSpec;->getVelocityFromNanos(JFFF)F +Landroidx/compose/animation/core/FloatTweenSpec; +HSPLandroidx/compose/animation/core/FloatTweenSpec;->()V +HSPLandroidx/compose/animation/core/FloatTweenSpec;->(IILandroidx/compose/animation/core/Easing;)V +HSPLandroidx/compose/animation/core/FloatTweenSpec;->clampPlayTime(J)J +HSPLandroidx/compose/animation/core/FloatTweenSpec;->getValueFromNanos(JFFF)F +HSPLandroidx/compose/animation/core/FloatTweenSpec;->getVelocityFromNanos(JFFF)F +Landroidx/compose/animation/core/InfiniteAnimationPolicyKt; +HSPLandroidx/compose/animation/core/InfiniteAnimationPolicyKt;->withInfiniteAnimationFrameNanos(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/animation/core/InfiniteRepeatableSpec; +HSPLandroidx/compose/animation/core/InfiniteRepeatableSpec;->()V +HSPLandroidx/compose/animation/core/InfiniteRepeatableSpec;->(Landroidx/compose/animation/core/DurationBasedAnimationSpec;Landroidx/compose/animation/core/RepeatMode;J)V +HSPLandroidx/compose/animation/core/InfiniteRepeatableSpec;->(Landroidx/compose/animation/core/DurationBasedAnimationSpec;Landroidx/compose/animation/core/RepeatMode;JLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/animation/core/InfiniteRepeatableSpec;->vectorize(Landroidx/compose/animation/core/TwoWayConverter;)Landroidx/compose/animation/core/VectorizedAnimationSpec; +Landroidx/compose/animation/core/InfiniteTransition; +HSPLandroidx/compose/animation/core/InfiniteTransition;->()V +HSPLandroidx/compose/animation/core/InfiniteTransition;->(Ljava/lang/String;)V +HSPLandroidx/compose/animation/core/InfiniteTransition;->access$getStartTimeNanos$p(Landroidx/compose/animation/core/InfiniteTransition;)J +HSPLandroidx/compose/animation/core/InfiniteTransition;->access$get_animations$p(Landroidx/compose/animation/core/InfiniteTransition;)Landroidx/compose/runtime/collection/MutableVector; +HSPLandroidx/compose/animation/core/InfiniteTransition;->access$onFrame(Landroidx/compose/animation/core/InfiniteTransition;J)V +HSPLandroidx/compose/animation/core/InfiniteTransition;->access$setRefreshChildNeeded(Landroidx/compose/animation/core/InfiniteTransition;Z)V +HSPLandroidx/compose/animation/core/InfiniteTransition;->access$setStartTimeNanos$p(Landroidx/compose/animation/core/InfiniteTransition;J)V +HSPLandroidx/compose/animation/core/InfiniteTransition;->addAnimation$animation_core_release(Landroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState;)V +HSPLandroidx/compose/animation/core/InfiniteTransition;->isRunning()Z +HSPLandroidx/compose/animation/core/InfiniteTransition;->onFrame(J)V +HSPLandroidx/compose/animation/core/InfiniteTransition;->removeAnimation$animation_core_release(Landroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState;)V +HSPLandroidx/compose/animation/core/InfiniteTransition;->run$animation_core_release(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/animation/core/InfiniteTransition;->setRefreshChildNeeded(Z)V +HSPLandroidx/compose/animation/core/InfiniteTransition;->setRunning(Z)V +Landroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState; +HSPLandroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState;->(Landroidx/compose/animation/core/InfiniteTransition;Ljava/lang/Object;Ljava/lang/Object;Landroidx/compose/animation/core/TwoWayConverter;Landroidx/compose/animation/core/AnimationSpec;Ljava/lang/String;)V +HSPLandroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState;->getInitialValue$animation_core_release()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState;->getTargetValue$animation_core_release()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState;->getValue()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState;->isFinished$animation_core_release()Z +HSPLandroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState;->onPlayTimeChanged$animation_core_release(J)V +HSPLandroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState;->reset$animation_core_release()V +HSPLandroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState;->setValue$animation_core_release(Ljava/lang/Object;)V +Landroidx/compose/animation/core/InfiniteTransition$run$1; +HSPLandroidx/compose/animation/core/InfiniteTransition$run$1;->(Landroidx/compose/runtime/MutableState;Landroidx/compose/animation/core/InfiniteTransition;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/animation/core/InfiniteTransition$run$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/animation/core/InfiniteTransition$run$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/InfiniteTransition$run$1$1; +HSPLandroidx/compose/animation/core/InfiniteTransition$run$1$1;->(Landroidx/compose/runtime/MutableState;Landroidx/compose/animation/core/InfiniteTransition;Lkotlin/jvm/internal/Ref$FloatRef;Lkotlinx/coroutines/CoroutineScope;)V +HSPLandroidx/compose/animation/core/InfiniteTransition$run$1$1;->invoke(J)V +HSPLandroidx/compose/animation/core/InfiniteTransition$run$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/InfiniteTransition$run$2; +HSPLandroidx/compose/animation/core/InfiniteTransition$run$2;->(Landroidx/compose/animation/core/InfiniteTransition;I)V +Landroidx/compose/animation/core/InfiniteTransitionKt; +HSPLandroidx/compose/animation/core/InfiniteTransitionKt;->animateFloat(Landroidx/compose/animation/core/InfiniteTransition;FFLandroidx/compose/animation/core/InfiniteRepeatableSpec;Ljava/lang/String;Landroidx/compose/runtime/Composer;II)Landroidx/compose/runtime/State; +HSPLandroidx/compose/animation/core/InfiniteTransitionKt;->animateValue(Landroidx/compose/animation/core/InfiniteTransition;Ljava/lang/Object;Ljava/lang/Object;Landroidx/compose/animation/core/TwoWayConverter;Landroidx/compose/animation/core/InfiniteRepeatableSpec;Ljava/lang/String;Landroidx/compose/runtime/Composer;II)Landroidx/compose/runtime/State; +HSPLandroidx/compose/animation/core/InfiniteTransitionKt;->rememberInfiniteTransition(Ljava/lang/String;Landroidx/compose/runtime/Composer;II)Landroidx/compose/animation/core/InfiniteTransition; +Landroidx/compose/animation/core/InfiniteTransitionKt$animateValue$1; +HSPLandroidx/compose/animation/core/InfiniteTransitionKt$animateValue$1;->(Ljava/lang/Object;Landroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState;Ljava/lang/Object;Landroidx/compose/animation/core/InfiniteRepeatableSpec;)V +HSPLandroidx/compose/animation/core/InfiniteTransitionKt$animateValue$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/InfiniteTransitionKt$animateValue$1;->invoke()V +Landroidx/compose/animation/core/InfiniteTransitionKt$animateValue$2; +HSPLandroidx/compose/animation/core/InfiniteTransitionKt$animateValue$2;->(Landroidx/compose/animation/core/InfiniteTransition;Landroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState;)V +HSPLandroidx/compose/animation/core/InfiniteTransitionKt$animateValue$2;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/animation/core/InfiniteTransitionKt$animateValue$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/InfiniteTransitionKt$animateValue$2$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/animation/core/InfiniteTransitionKt$animateValue$2$invoke$$inlined$onDispose$1;->(Landroidx/compose/animation/core/InfiniteTransition;Landroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState;)V +HSPLandroidx/compose/animation/core/InfiniteTransitionKt$animateValue$2$invoke$$inlined$onDispose$1;->dispose()V +Landroidx/compose/animation/core/KeyframesSpec; +HSPLandroidx/compose/animation/core/KeyframesSpec;->()V +HSPLandroidx/compose/animation/core/KeyframesSpec;->(Landroidx/compose/animation/core/KeyframesSpec$KeyframesSpecConfig;)V +HSPLandroidx/compose/animation/core/KeyframesSpec;->vectorize(Landroidx/compose/animation/core/TwoWayConverter;)Landroidx/compose/animation/core/VectorizedDurationBasedAnimationSpec; +HSPLandroidx/compose/animation/core/KeyframesSpec;->vectorize(Landroidx/compose/animation/core/TwoWayConverter;)Landroidx/compose/animation/core/VectorizedKeyframesSpec; +Landroidx/compose/animation/core/KeyframesSpec$KeyframeEntity; +HSPLandroidx/compose/animation/core/KeyframesSpec$KeyframeEntity;->()V +HSPLandroidx/compose/animation/core/KeyframesSpec$KeyframeEntity;->(Ljava/lang/Object;Landroidx/compose/animation/core/Easing;)V +HSPLandroidx/compose/animation/core/KeyframesSpec$KeyframeEntity;->(Ljava/lang/Object;Landroidx/compose/animation/core/Easing;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/animation/core/KeyframesSpec$KeyframeEntity;->setEasing$animation_core_release(Landroidx/compose/animation/core/Easing;)V +HSPLandroidx/compose/animation/core/KeyframesSpec$KeyframeEntity;->toPair$animation_core_release(Lkotlin/jvm/functions/Function1;)Lkotlin/Pair; +Landroidx/compose/animation/core/KeyframesSpec$KeyframesSpecConfig; +HSPLandroidx/compose/animation/core/KeyframesSpec$KeyframesSpecConfig;->()V +HSPLandroidx/compose/animation/core/KeyframesSpec$KeyframesSpecConfig;->()V +HSPLandroidx/compose/animation/core/KeyframesSpec$KeyframesSpecConfig;->at(Ljava/lang/Object;I)Landroidx/compose/animation/core/KeyframesSpec$KeyframeEntity; +HSPLandroidx/compose/animation/core/KeyframesSpec$KeyframesSpecConfig;->getDelayMillis()I +HSPLandroidx/compose/animation/core/KeyframesSpec$KeyframesSpecConfig;->getDurationMillis()I +HSPLandroidx/compose/animation/core/KeyframesSpec$KeyframesSpecConfig;->getKeyframes$animation_core_release()Ljava/util/Map; +HSPLandroidx/compose/animation/core/KeyframesSpec$KeyframesSpecConfig;->setDurationMillis(I)V +HSPLandroidx/compose/animation/core/KeyframesSpec$KeyframesSpecConfig;->with(Landroidx/compose/animation/core/KeyframesSpec$KeyframeEntity;Landroidx/compose/animation/core/Easing;)V +Landroidx/compose/animation/core/Motion; +HSPLandroidx/compose/animation/core/Motion;->constructor-impl(J)J +HSPLandroidx/compose/animation/core/Motion;->getValue-impl(J)F +HSPLandroidx/compose/animation/core/Motion;->getVelocity-impl(J)F +Landroidx/compose/animation/core/MutableTransitionState; +HSPLandroidx/compose/animation/core/MutableTransitionState;->()V +HSPLandroidx/compose/animation/core/MutableTransitionState;->(Ljava/lang/Object;)V +HSPLandroidx/compose/animation/core/MutableTransitionState;->getCurrentState()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/MutableTransitionState;->getTargetState()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/MutableTransitionState;->setCurrentState$animation_core_release(Ljava/lang/Object;)V +HSPLandroidx/compose/animation/core/MutableTransitionState;->setRunning$animation_core_release(Z)V +HSPLandroidx/compose/animation/core/MutableTransitionState;->setTargetState(Ljava/lang/Object;)V +Landroidx/compose/animation/core/MutatePriority; +HSPLandroidx/compose/animation/core/MutatePriority;->$values()[Landroidx/compose/animation/core/MutatePriority; +HSPLandroidx/compose/animation/core/MutatePriority;->()V +HSPLandroidx/compose/animation/core/MutatePriority;->(Ljava/lang/String;I)V +Landroidx/compose/animation/core/MutationInterruptedException; +PLandroidx/compose/animation/core/MutationInterruptedException;->()V +PLandroidx/compose/animation/core/MutationInterruptedException;->fillInStackTrace()Ljava/lang/Throwable; +Landroidx/compose/animation/core/MutatorMutex; +HSPLandroidx/compose/animation/core/MutatorMutex;->()V +HSPLandroidx/compose/animation/core/MutatorMutex;->access$getCurrentMutator$p(Landroidx/compose/animation/core/MutatorMutex;)Ljava/util/concurrent/atomic/AtomicReference; +HSPLandroidx/compose/animation/core/MutatorMutex;->access$getMutex$p(Landroidx/compose/animation/core/MutatorMutex;)Lkotlinx/coroutines/sync/Mutex; +HSPLandroidx/compose/animation/core/MutatorMutex;->access$tryMutateOrCancel(Landroidx/compose/animation/core/MutatorMutex;Landroidx/compose/animation/core/MutatorMutex$Mutator;)V +HSPLandroidx/compose/animation/core/MutatorMutex;->mutate$default(Landroidx/compose/animation/core/MutatorMutex;Landroidx/compose/animation/core/MutatePriority;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/MutatorMutex;->mutate(Landroidx/compose/animation/core/MutatePriority;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/MutatorMutex;->tryMutateOrCancel(Landroidx/compose/animation/core/MutatorMutex$Mutator;)V +Landroidx/compose/animation/core/MutatorMutex$Mutator; +HSPLandroidx/compose/animation/core/MutatorMutex$Mutator;->(Landroidx/compose/animation/core/MutatePriority;Lkotlinx/coroutines/Job;)V +PLandroidx/compose/animation/core/MutatorMutex$Mutator;->canInterrupt(Landroidx/compose/animation/core/MutatorMutex$Mutator;)Z +PLandroidx/compose/animation/core/MutatorMutex$Mutator;->cancel()V +Landroidx/compose/animation/core/MutatorMutex$mutate$2; +HSPLandroidx/compose/animation/core/MutatorMutex$mutate$2;->(Landroidx/compose/animation/core/MutatePriority;Landroidx/compose/animation/core/MutatorMutex;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/animation/core/MutatorMutex$mutate$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/animation/core/MutatorMutex$mutate$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/MutatorMutex$mutate$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/MutatorMutex$mutate$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/RepeatMode; +HSPLandroidx/compose/animation/core/RepeatMode;->$values()[Landroidx/compose/animation/core/RepeatMode; +HSPLandroidx/compose/animation/core/RepeatMode;->()V +HSPLandroidx/compose/animation/core/RepeatMode;->(Ljava/lang/String;I)V +Landroidx/compose/animation/core/SnapSpec; +HSPLandroidx/compose/animation/core/SnapSpec;->()V +HSPLandroidx/compose/animation/core/SnapSpec;->(I)V +Landroidx/compose/animation/core/SpringEstimationKt; +HSPLandroidx/compose/animation/core/SpringEstimationKt;->estimateAnimationDurationMillis(DDDDD)J +HSPLandroidx/compose/animation/core/SpringEstimationKt;->estimateAnimationDurationMillis(FFFFF)J +HSPLandroidx/compose/animation/core/SpringEstimationKt;->estimateCriticallyDamped(Landroidx/compose/animation/core/ComplexDouble;DDD)D +HSPLandroidx/compose/animation/core/SpringEstimationKt;->estimateDurationInternal(Landroidx/compose/animation/core/ComplexDouble;Landroidx/compose/animation/core/ComplexDouble;DDDD)J +Landroidx/compose/animation/core/SpringSimulation; +HSPLandroidx/compose/animation/core/SpringSimulation;->(F)V +HSPLandroidx/compose/animation/core/SpringSimulation;->getDampingRatio()F +HSPLandroidx/compose/animation/core/SpringSimulation;->getStiffness()F +HSPLandroidx/compose/animation/core/SpringSimulation;->init()V +HSPLandroidx/compose/animation/core/SpringSimulation;->setDampingRatio(F)V +HSPLandroidx/compose/animation/core/SpringSimulation;->setFinalPosition(F)V +HSPLandroidx/compose/animation/core/SpringSimulation;->setStiffness(F)V +HSPLandroidx/compose/animation/core/SpringSimulation;->updateValues-IJZedt4$animation_core_release(FFJ)J +Landroidx/compose/animation/core/SpringSimulationKt; +HSPLandroidx/compose/animation/core/SpringSimulationKt;->()V +HSPLandroidx/compose/animation/core/SpringSimulationKt;->Motion(FF)J +HSPLandroidx/compose/animation/core/SpringSimulationKt;->getUNSET()F +Landroidx/compose/animation/core/SpringSpec; +HSPLandroidx/compose/animation/core/SpringSpec;->()V +HSPLandroidx/compose/animation/core/SpringSpec;->(FFLjava/lang/Object;)V +HSPLandroidx/compose/animation/core/SpringSpec;->(FFLjava/lang/Object;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/animation/core/SpringSpec;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/animation/core/SpringSpec;->getVisibilityThreshold()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/SpringSpec;->vectorize(Landroidx/compose/animation/core/TwoWayConverter;)Landroidx/compose/animation/core/VectorizedAnimationSpec; +HSPLandroidx/compose/animation/core/SpringSpec;->vectorize(Landroidx/compose/animation/core/TwoWayConverter;)Landroidx/compose/animation/core/VectorizedSpringSpec; +Landroidx/compose/animation/core/StartOffset; +HSPLandroidx/compose/animation/core/StartOffset;->constructor-impl$default(IIILkotlin/jvm/internal/DefaultConstructorMarker;)J +HSPLandroidx/compose/animation/core/StartOffset;->constructor-impl(II)J +HSPLandroidx/compose/animation/core/StartOffset;->constructor-impl(J)J +Landroidx/compose/animation/core/StartOffsetType; +HSPLandroidx/compose/animation/core/StartOffsetType;->()V +HSPLandroidx/compose/animation/core/StartOffsetType;->access$getDelay$cp()I +HSPLandroidx/compose/animation/core/StartOffsetType;->constructor-impl(I)I +Landroidx/compose/animation/core/StartOffsetType$Companion; +HSPLandroidx/compose/animation/core/StartOffsetType$Companion;->()V +HSPLandroidx/compose/animation/core/StartOffsetType$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/animation/core/StartOffsetType$Companion;->getDelay-Eo1U57Q()I +Landroidx/compose/animation/core/SuspendAnimationKt; +HSPLandroidx/compose/animation/core/SuspendAnimationKt;->access$doAnimationFrameWithScale(Landroidx/compose/animation/core/AnimationScope;JFLandroidx/compose/animation/core/Animation;Landroidx/compose/animation/core/AnimationState;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/animation/core/SuspendAnimationKt;->animate(Landroidx/compose/animation/core/AnimationState;Landroidx/compose/animation/core/Animation;JLkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/SuspendAnimationKt;->callWithFrameNanos(Landroidx/compose/animation/core/Animation;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/SuspendAnimationKt;->doAnimationFrame(Landroidx/compose/animation/core/AnimationScope;JJLandroidx/compose/animation/core/Animation;Landroidx/compose/animation/core/AnimationState;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/animation/core/SuspendAnimationKt;->doAnimationFrameWithScale(Landroidx/compose/animation/core/AnimationScope;JFLandroidx/compose/animation/core/Animation;Landroidx/compose/animation/core/AnimationState;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/animation/core/SuspendAnimationKt;->getDurationScale(Lkotlin/coroutines/CoroutineContext;)F +HSPLandroidx/compose/animation/core/SuspendAnimationKt;->updateState(Landroidx/compose/animation/core/AnimationScope;Landroidx/compose/animation/core/AnimationState;)V +Landroidx/compose/animation/core/SuspendAnimationKt$animate$4; +HSPLandroidx/compose/animation/core/SuspendAnimationKt$animate$4;->(Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/animation/core/SuspendAnimationKt$animate$4;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/SuspendAnimationKt$animate$6; +HSPLandroidx/compose/animation/core/SuspendAnimationKt$animate$6;->(Lkotlin/jvm/internal/Ref$ObjectRef;Ljava/lang/Object;Landroidx/compose/animation/core/Animation;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationState;FLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/animation/core/SuspendAnimationKt$animate$6;->invoke(J)V +HSPLandroidx/compose/animation/core/SuspendAnimationKt$animate$6;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/SuspendAnimationKt$animate$6$1; +HSPLandroidx/compose/animation/core/SuspendAnimationKt$animate$6$1;->(Landroidx/compose/animation/core/AnimationState;)V +Landroidx/compose/animation/core/SuspendAnimationKt$animate$7; +PLandroidx/compose/animation/core/SuspendAnimationKt$animate$7;->(Landroidx/compose/animation/core/AnimationState;)V +Landroidx/compose/animation/core/SuspendAnimationKt$animate$9; +HSPLandroidx/compose/animation/core/SuspendAnimationKt$animate$9;->(Lkotlin/jvm/internal/Ref$ObjectRef;FLandroidx/compose/animation/core/Animation;Landroidx/compose/animation/core/AnimationState;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/animation/core/SuspendAnimationKt$animate$9;->invoke(J)V +HSPLandroidx/compose/animation/core/SuspendAnimationKt$animate$9;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/SuspendAnimationKt$callWithFrameNanos$2; +HSPLandroidx/compose/animation/core/SuspendAnimationKt$callWithFrameNanos$2;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/animation/core/SuspendAnimationKt$callWithFrameNanos$2;->invoke(J)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/SuspendAnimationKt$callWithFrameNanos$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/TargetBasedAnimation; +HSPLandroidx/compose/animation/core/TargetBasedAnimation;->()V +HSPLandroidx/compose/animation/core/TargetBasedAnimation;->(Landroidx/compose/animation/core/AnimationSpec;Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationVector;)V +HSPLandroidx/compose/animation/core/TargetBasedAnimation;->(Landroidx/compose/animation/core/AnimationSpec;Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationVector;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/animation/core/TargetBasedAnimation;->(Landroidx/compose/animation/core/VectorizedAnimationSpec;Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationVector;)V +HSPLandroidx/compose/animation/core/TargetBasedAnimation;->getDurationNanos()J +HSPLandroidx/compose/animation/core/TargetBasedAnimation;->getTargetValue()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/TargetBasedAnimation;->getTypeConverter()Landroidx/compose/animation/core/TwoWayConverter; +HSPLandroidx/compose/animation/core/TargetBasedAnimation;->getValueFromNanos(J)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/TargetBasedAnimation;->getVelocityVectorFromNanos(J)Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/TargetBasedAnimation;->isInfinite()Z +Landroidx/compose/animation/core/Transition; +HSPLandroidx/compose/animation/core/Transition;->()V +HSPLandroidx/compose/animation/core/Transition;->(Landroidx/compose/animation/core/MutableTransitionState;Ljava/lang/String;)V +HSPLandroidx/compose/animation/core/Transition;->(Ljava/lang/Object;Ljava/lang/String;)V +HSPLandroidx/compose/animation/core/Transition;->access$onChildAnimationUpdated(Landroidx/compose/animation/core/Transition;)V +HSPLandroidx/compose/animation/core/Transition;->addAnimation$animation_core_release(Landroidx/compose/animation/core/Transition$TransitionAnimationState;)Z +HSPLandroidx/compose/animation/core/Transition;->addTransition$animation_core_release(Landroidx/compose/animation/core/Transition;)Z +HSPLandroidx/compose/animation/core/Transition;->animateTo$animation_core_release(Ljava/lang/Object;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/animation/core/Transition;->getCurrentState()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Transition;->getLabel()Ljava/lang/String; +HSPLandroidx/compose/animation/core/Transition;->getPlayTimeNanos()J +HSPLandroidx/compose/animation/core/Transition;->getSegment()Landroidx/compose/animation/core/Transition$Segment; +HSPLandroidx/compose/animation/core/Transition;->getStartTimeNanos()J +HSPLandroidx/compose/animation/core/Transition;->getTargetState()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Transition;->getUpdateChildrenNeeded$animation_core_release()Z +HSPLandroidx/compose/animation/core/Transition;->isRunning()Z +HSPLandroidx/compose/animation/core/Transition;->isSeeking()Z +HSPLandroidx/compose/animation/core/Transition;->onChildAnimationUpdated()V +HSPLandroidx/compose/animation/core/Transition;->onFrame$animation_core_release(JF)V +HSPLandroidx/compose/animation/core/Transition;->onTransitionEnd$animation_core_release()V +HSPLandroidx/compose/animation/core/Transition;->onTransitionStart$animation_core_release(J)V +HSPLandroidx/compose/animation/core/Transition;->removeAnimation$animation_core_release(Landroidx/compose/animation/core/Transition$DeferredAnimation;)V +HSPLandroidx/compose/animation/core/Transition;->removeAnimation$animation_core_release(Landroidx/compose/animation/core/Transition$TransitionAnimationState;)V +HSPLandroidx/compose/animation/core/Transition;->removeTransition$animation_core_release(Landroidx/compose/animation/core/Transition;)Z +HSPLandroidx/compose/animation/core/Transition;->setCurrentState$animation_core_release(Ljava/lang/Object;)V +HSPLandroidx/compose/animation/core/Transition;->setPlayTimeNanos(J)V +HSPLandroidx/compose/animation/core/Transition;->setSeeking$animation_core_release(Z)V +HSPLandroidx/compose/animation/core/Transition;->setSegment(Landroidx/compose/animation/core/Transition$Segment;)V +HSPLandroidx/compose/animation/core/Transition;->setStartTimeNanos(J)V +HSPLandroidx/compose/animation/core/Transition;->setTargetState$animation_core_release(Ljava/lang/Object;)V +HSPLandroidx/compose/animation/core/Transition;->setUpdateChildrenNeeded$animation_core_release(Z)V +HSPLandroidx/compose/animation/core/Transition;->updateTarget$animation_core_release(Ljava/lang/Object;Landroidx/compose/runtime/Composer;I)V +Landroidx/compose/animation/core/Transition$DeferredAnimation; +HSPLandroidx/compose/animation/core/Transition$DeferredAnimation;->(Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/String;)V +HSPLandroidx/compose/animation/core/Transition$DeferredAnimation;->animate(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/State; +HSPLandroidx/compose/animation/core/Transition$DeferredAnimation;->getData$animation_core_release()Landroidx/compose/animation/core/Transition$DeferredAnimation$DeferredAnimationData; +HSPLandroidx/compose/animation/core/Transition$DeferredAnimation;->setData$animation_core_release(Landroidx/compose/animation/core/Transition$DeferredAnimation$DeferredAnimationData;)V +Landroidx/compose/animation/core/Transition$DeferredAnimation$DeferredAnimationData; +HSPLandroidx/compose/animation/core/Transition$DeferredAnimation$DeferredAnimationData;->(Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/animation/core/Transition$TransitionAnimationState;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/animation/core/Transition$DeferredAnimation$DeferredAnimationData;->getAnimation()Landroidx/compose/animation/core/Transition$TransitionAnimationState; +HSPLandroidx/compose/animation/core/Transition$DeferredAnimation$DeferredAnimationData;->getValue()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Transition$DeferredAnimation$DeferredAnimationData;->setTargetValueByState(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/animation/core/Transition$DeferredAnimation$DeferredAnimationData;->setTransitionSpec(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/animation/core/Transition$DeferredAnimation$DeferredAnimationData;->updateAnimationStates(Landroidx/compose/animation/core/Transition$Segment;)V +Landroidx/compose/animation/core/Transition$Segment; +HSPLandroidx/compose/animation/core/Transition$Segment;->isTransitioningTo(Ljava/lang/Object;Ljava/lang/Object;)Z +Landroidx/compose/animation/core/Transition$SegmentImpl; +HSPLandroidx/compose/animation/core/Transition$SegmentImpl;->(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLandroidx/compose/animation/core/Transition$SegmentImpl;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/animation/core/Transition$SegmentImpl;->getInitialState()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Transition$SegmentImpl;->getTargetState()Ljava/lang/Object; +Landroidx/compose/animation/core/Transition$TransitionAnimationState; +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->(Landroidx/compose/animation/core/Transition;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/String;)V +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->getAnimation()Landroidx/compose/animation/core/TargetBasedAnimation; +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->getAnimationSpec()Landroidx/compose/animation/core/FiniteAnimationSpec; +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->getNeedsReset()Z +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->getOffsetTimeNanos()J +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->getTargetValue()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->getValue()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->isFinished$animation_core_release()Z +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->onPlayTimeChanged$animation_core_release(JF)V +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->resetAnimation$animation_core_release()V +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->setAnimation(Landroidx/compose/animation/core/TargetBasedAnimation;)V +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->setAnimationSpec(Landroidx/compose/animation/core/FiniteAnimationSpec;)V +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->setFinished$animation_core_release(Z)V +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->setNeedsReset(Z)V +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->setOffsetTimeNanos(J)V +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->setTargetValue(Ljava/lang/Object;)V +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->setValue$animation_core_release(Ljava/lang/Object;)V +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->updateAnimation$default(Landroidx/compose/animation/core/Transition$TransitionAnimationState;Ljava/lang/Object;ZILjava/lang/Object;)V +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->updateAnimation(Ljava/lang/Object;Z)V +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->updateTargetValue$animation_core_release(Ljava/lang/Object;Landroidx/compose/animation/core/FiniteAnimationSpec;)V +Landroidx/compose/animation/core/Transition$animateTo$1$1; +HSPLandroidx/compose/animation/core/Transition$animateTo$1$1;->(Landroidx/compose/animation/core/Transition;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/animation/core/Transition$animateTo$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/animation/core/Transition$animateTo$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/Transition$animateTo$1$1$1; +HSPLandroidx/compose/animation/core/Transition$animateTo$1$1$1;->(Landroidx/compose/animation/core/Transition;F)V +HSPLandroidx/compose/animation/core/Transition$animateTo$1$1$1;->invoke(J)V +HSPLandroidx/compose/animation/core/Transition$animateTo$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/Transition$animateTo$2; +HSPLandroidx/compose/animation/core/Transition$animateTo$2;->(Landroidx/compose/animation/core/Transition;Ljava/lang/Object;I)V +HSPLandroidx/compose/animation/core/Transition$animateTo$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/animation/core/Transition$animateTo$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/Transition$totalDurationNanos$2; +HSPLandroidx/compose/animation/core/Transition$totalDurationNanos$2;->(Landroidx/compose/animation/core/Transition;)V +Landroidx/compose/animation/core/Transition$updateTarget$2; +HSPLandroidx/compose/animation/core/Transition$updateTarget$2;->(Landroidx/compose/animation/core/Transition;Ljava/lang/Object;I)V +HSPLandroidx/compose/animation/core/Transition$updateTarget$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/animation/core/Transition$updateTarget$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/TransitionKt; +HSPLandroidx/compose/animation/core/TransitionKt;->createChildTransitionInternal(Landroidx/compose/animation/core/Transition;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;Landroidx/compose/runtime/Composer;I)Landroidx/compose/animation/core/Transition; +HSPLandroidx/compose/animation/core/TransitionKt;->createDeferredAnimation(Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/String;Landroidx/compose/runtime/Composer;II)Landroidx/compose/animation/core/Transition$DeferredAnimation; +HSPLandroidx/compose/animation/core/TransitionKt;->createTransitionAnimation(Landroidx/compose/animation/core/Transition;Ljava/lang/Object;Ljava/lang/Object;Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/String;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +HSPLandroidx/compose/animation/core/TransitionKt;->updateTransition(Ljava/lang/Object;Ljava/lang/String;Landroidx/compose/runtime/Composer;II)Landroidx/compose/animation/core/Transition; +Landroidx/compose/animation/core/TransitionKt$createChildTransitionInternal$1$1; +HSPLandroidx/compose/animation/core/TransitionKt$createChildTransitionInternal$1$1;->(Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/core/Transition;)V +HSPLandroidx/compose/animation/core/TransitionKt$createChildTransitionInternal$1$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/animation/core/TransitionKt$createChildTransitionInternal$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/TransitionKt$createChildTransitionInternal$1$1$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/animation/core/TransitionKt$createChildTransitionInternal$1$1$invoke$$inlined$onDispose$1;->(Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/core/Transition;)V +HSPLandroidx/compose/animation/core/TransitionKt$createChildTransitionInternal$1$1$invoke$$inlined$onDispose$1;->dispose()V +Landroidx/compose/animation/core/TransitionKt$createDeferredAnimation$1; +HSPLandroidx/compose/animation/core/TransitionKt$createDeferredAnimation$1;->(Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/core/Transition$DeferredAnimation;)V +HSPLandroidx/compose/animation/core/TransitionKt$createDeferredAnimation$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/animation/core/TransitionKt$createDeferredAnimation$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/TransitionKt$createDeferredAnimation$1$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/animation/core/TransitionKt$createDeferredAnimation$1$invoke$$inlined$onDispose$1;->(Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/core/Transition$DeferredAnimation;)V +HSPLandroidx/compose/animation/core/TransitionKt$createDeferredAnimation$1$invoke$$inlined$onDispose$1;->dispose()V +Landroidx/compose/animation/core/TransitionKt$createTransitionAnimation$1$1; +HSPLandroidx/compose/animation/core/TransitionKt$createTransitionAnimation$1$1;->(Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/core/Transition$TransitionAnimationState;)V +HSPLandroidx/compose/animation/core/TransitionKt$createTransitionAnimation$1$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/animation/core/TransitionKt$createTransitionAnimation$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/TransitionKt$createTransitionAnimation$1$1$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/animation/core/TransitionKt$createTransitionAnimation$1$1$invoke$$inlined$onDispose$1;->(Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/core/Transition$TransitionAnimationState;)V +HSPLandroidx/compose/animation/core/TransitionKt$createTransitionAnimation$1$1$invoke$$inlined$onDispose$1;->dispose()V +Landroidx/compose/animation/core/TransitionKt$updateTransition$1$1; +HSPLandroidx/compose/animation/core/TransitionKt$updateTransition$1$1;->(Landroidx/compose/animation/core/Transition;)V +HSPLandroidx/compose/animation/core/TransitionKt$updateTransition$1$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/animation/core/TransitionKt$updateTransition$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/TransitionKt$updateTransition$1$1$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/animation/core/TransitionKt$updateTransition$1$1$invoke$$inlined$onDispose$1;->(Landroidx/compose/animation/core/Transition;)V +HSPLandroidx/compose/animation/core/TransitionKt$updateTransition$1$1$invoke$$inlined$onDispose$1;->dispose()V +Landroidx/compose/animation/core/TweenSpec; +HSPLandroidx/compose/animation/core/TweenSpec;->()V +HSPLandroidx/compose/animation/core/TweenSpec;->(IILandroidx/compose/animation/core/Easing;)V +HSPLandroidx/compose/animation/core/TweenSpec;->(IILandroidx/compose/animation/core/Easing;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/animation/core/TweenSpec;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/animation/core/TweenSpec;->vectorize(Landroidx/compose/animation/core/TwoWayConverter;)Landroidx/compose/animation/core/VectorizedAnimationSpec; +HSPLandroidx/compose/animation/core/TweenSpec;->vectorize(Landroidx/compose/animation/core/TwoWayConverter;)Landroidx/compose/animation/core/VectorizedDurationBasedAnimationSpec; +HSPLandroidx/compose/animation/core/TweenSpec;->vectorize(Landroidx/compose/animation/core/TwoWayConverter;)Landroidx/compose/animation/core/VectorizedTweenSpec; +Landroidx/compose/animation/core/TwoWayConverter; +Landroidx/compose/animation/core/TwoWayConverterImpl; +HSPLandroidx/compose/animation/core/TwoWayConverterImpl;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/animation/core/TwoWayConverterImpl;->getConvertFromVector()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/animation/core/TwoWayConverterImpl;->getConvertToVector()Lkotlin/jvm/functions/Function1; +Landroidx/compose/animation/core/VectorConvertersKt; +HSPLandroidx/compose/animation/core/VectorConvertersKt;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt;->TwoWayConverter(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Landroidx/compose/animation/core/TwoWayConverter; +HSPLandroidx/compose/animation/core/VectorConvertersKt;->getVectorConverter(Landroidx/compose/ui/geometry/Offset$Companion;)Landroidx/compose/animation/core/TwoWayConverter; +HSPLandroidx/compose/animation/core/VectorConvertersKt;->getVectorConverter(Landroidx/compose/ui/geometry/Rect$Companion;)Landroidx/compose/animation/core/TwoWayConverter; +HSPLandroidx/compose/animation/core/VectorConvertersKt;->getVectorConverter(Landroidx/compose/ui/geometry/Size$Companion;)Landroidx/compose/animation/core/TwoWayConverter; +HSPLandroidx/compose/animation/core/VectorConvertersKt;->getVectorConverter(Landroidx/compose/ui/unit/Dp$Companion;)Landroidx/compose/animation/core/TwoWayConverter; +HSPLandroidx/compose/animation/core/VectorConvertersKt;->getVectorConverter(Landroidx/compose/ui/unit/DpOffset$Companion;)Landroidx/compose/animation/core/TwoWayConverter; +HSPLandroidx/compose/animation/core/VectorConvertersKt;->getVectorConverter(Landroidx/compose/ui/unit/IntOffset$Companion;)Landroidx/compose/animation/core/TwoWayConverter; +HSPLandroidx/compose/animation/core/VectorConvertersKt;->getVectorConverter(Landroidx/compose/ui/unit/IntSize$Companion;)Landroidx/compose/animation/core/TwoWayConverter; +HSPLandroidx/compose/animation/core/VectorConvertersKt;->getVectorConverter(Lkotlin/jvm/internal/FloatCompanionObject;)Landroidx/compose/animation/core/TwoWayConverter; +HSPLandroidx/compose/animation/core/VectorConvertersKt;->getVectorConverter(Lkotlin/jvm/internal/IntCompanionObject;)Landroidx/compose/animation/core/TwoWayConverter; +HSPLandroidx/compose/animation/core/VectorConvertersKt;->lerp(FFF)F +Landroidx/compose/animation/core/VectorConvertersKt$DpOffsetToVector$1; +HSPLandroidx/compose/animation/core/VectorConvertersKt$DpOffsetToVector$1;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$DpOffsetToVector$1;->()V +Landroidx/compose/animation/core/VectorConvertersKt$DpOffsetToVector$2; +HSPLandroidx/compose/animation/core/VectorConvertersKt$DpOffsetToVector$2;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$DpOffsetToVector$2;->()V +Landroidx/compose/animation/core/VectorConvertersKt$DpToVector$1; +HSPLandroidx/compose/animation/core/VectorConvertersKt$DpToVector$1;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$DpToVector$1;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$DpToVector$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/VectorConvertersKt$DpToVector$1;->invoke-0680j_4(F)Landroidx/compose/animation/core/AnimationVector1D; +Landroidx/compose/animation/core/VectorConvertersKt$DpToVector$2; +HSPLandroidx/compose/animation/core/VectorConvertersKt$DpToVector$2;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$DpToVector$2;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$DpToVector$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/VectorConvertersKt$DpToVector$2;->invoke-u2uoSUM(Landroidx/compose/animation/core/AnimationVector1D;)F +Landroidx/compose/animation/core/VectorConvertersKt$FloatToVector$1; +HSPLandroidx/compose/animation/core/VectorConvertersKt$FloatToVector$1;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$FloatToVector$1;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$FloatToVector$1;->invoke(F)Landroidx/compose/animation/core/AnimationVector1D; +HSPLandroidx/compose/animation/core/VectorConvertersKt$FloatToVector$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/VectorConvertersKt$FloatToVector$2; +HSPLandroidx/compose/animation/core/VectorConvertersKt$FloatToVector$2;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$FloatToVector$2;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$FloatToVector$2;->invoke(Landroidx/compose/animation/core/AnimationVector1D;)Ljava/lang/Float; +HSPLandroidx/compose/animation/core/VectorConvertersKt$FloatToVector$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/VectorConvertersKt$IntOffsetToVector$1; +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntOffsetToVector$1;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntOffsetToVector$1;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntOffsetToVector$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntOffsetToVector$1;->invoke--gyyYBs(J)Landroidx/compose/animation/core/AnimationVector2D; +Landroidx/compose/animation/core/VectorConvertersKt$IntOffsetToVector$2; +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntOffsetToVector$2;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntOffsetToVector$2;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntOffsetToVector$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntOffsetToVector$2;->invoke-Bjo55l4(Landroidx/compose/animation/core/AnimationVector2D;)J +Landroidx/compose/animation/core/VectorConvertersKt$IntSizeToVector$1; +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntSizeToVector$1;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntSizeToVector$1;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntSizeToVector$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntSizeToVector$1;->invoke-ozmzZPI(J)Landroidx/compose/animation/core/AnimationVector2D; +Landroidx/compose/animation/core/VectorConvertersKt$IntSizeToVector$2; +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntSizeToVector$2;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntSizeToVector$2;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntSizeToVector$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntSizeToVector$2;->invoke-YEO4UFw(Landroidx/compose/animation/core/AnimationVector2D;)J +Landroidx/compose/animation/core/VectorConvertersKt$IntToVector$1; +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntToVector$1;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntToVector$1;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntToVector$1;->invoke(I)Landroidx/compose/animation/core/AnimationVector1D; +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntToVector$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/VectorConvertersKt$IntToVector$2; +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntToVector$2;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntToVector$2;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntToVector$2;->invoke(Landroidx/compose/animation/core/AnimationVector1D;)Ljava/lang/Integer; +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntToVector$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/VectorConvertersKt$OffsetToVector$1; +HSPLandroidx/compose/animation/core/VectorConvertersKt$OffsetToVector$1;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$OffsetToVector$1;->()V +Landroidx/compose/animation/core/VectorConvertersKt$OffsetToVector$2; +HSPLandroidx/compose/animation/core/VectorConvertersKt$OffsetToVector$2;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$OffsetToVector$2;->()V +Landroidx/compose/animation/core/VectorConvertersKt$RectToVector$1; +HSPLandroidx/compose/animation/core/VectorConvertersKt$RectToVector$1;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$RectToVector$1;->()V +Landroidx/compose/animation/core/VectorConvertersKt$RectToVector$2; +HSPLandroidx/compose/animation/core/VectorConvertersKt$RectToVector$2;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$RectToVector$2;->()V +Landroidx/compose/animation/core/VectorConvertersKt$SizeToVector$1; +HSPLandroidx/compose/animation/core/VectorConvertersKt$SizeToVector$1;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$SizeToVector$1;->()V +Landroidx/compose/animation/core/VectorConvertersKt$SizeToVector$2; +HSPLandroidx/compose/animation/core/VectorConvertersKt$SizeToVector$2;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$SizeToVector$2;->()V +Landroidx/compose/animation/core/VectorizedAnimationSpec; +HSPLandroidx/compose/animation/core/VectorizedAnimationSpec;->getEndVelocity(Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +Landroidx/compose/animation/core/VectorizedAnimationSpecKt; +HSPLandroidx/compose/animation/core/VectorizedAnimationSpecKt;->access$clampPlayTime(Landroidx/compose/animation/core/VectorizedDurationBasedAnimationSpec;J)J +HSPLandroidx/compose/animation/core/VectorizedAnimationSpecKt;->access$createSpringAnimations(Landroidx/compose/animation/core/AnimationVector;FF)Landroidx/compose/animation/core/Animations; +HSPLandroidx/compose/animation/core/VectorizedAnimationSpecKt;->clampPlayTime(Landroidx/compose/animation/core/VectorizedDurationBasedAnimationSpec;J)J +HSPLandroidx/compose/animation/core/VectorizedAnimationSpecKt;->createSpringAnimations(Landroidx/compose/animation/core/AnimationVector;FF)Landroidx/compose/animation/core/Animations; +HSPLandroidx/compose/animation/core/VectorizedAnimationSpecKt;->getValueFromMillis(Landroidx/compose/animation/core/VectorizedAnimationSpec;JLandroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +Landroidx/compose/animation/core/VectorizedAnimationSpecKt$createSpringAnimations$1; +HSPLandroidx/compose/animation/core/VectorizedAnimationSpecKt$createSpringAnimations$1;->(Landroidx/compose/animation/core/AnimationVector;FF)V +HSPLandroidx/compose/animation/core/VectorizedAnimationSpecKt$createSpringAnimations$1;->get(I)Landroidx/compose/animation/core/FloatAnimationSpec; +HSPLandroidx/compose/animation/core/VectorizedAnimationSpecKt$createSpringAnimations$1;->get(I)Landroidx/compose/animation/core/FloatSpringSpec; +Landroidx/compose/animation/core/VectorizedAnimationSpecKt$createSpringAnimations$2; +HSPLandroidx/compose/animation/core/VectorizedAnimationSpecKt$createSpringAnimations$2;->(FF)V +HSPLandroidx/compose/animation/core/VectorizedAnimationSpecKt$createSpringAnimations$2;->get(I)Landroidx/compose/animation/core/FloatAnimationSpec; +HSPLandroidx/compose/animation/core/VectorizedAnimationSpecKt$createSpringAnimations$2;->get(I)Landroidx/compose/animation/core/FloatSpringSpec; +Landroidx/compose/animation/core/VectorizedDurationBasedAnimationSpec; +HSPLandroidx/compose/animation/core/VectorizedDurationBasedAnimationSpec;->getDurationNanos(Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)J +Landroidx/compose/animation/core/VectorizedFiniteAnimationSpec; +HSPLandroidx/compose/animation/core/VectorizedFiniteAnimationSpec;->isInfinite()Z +Landroidx/compose/animation/core/VectorizedFloatAnimationSpec; +HSPLandroidx/compose/animation/core/VectorizedFloatAnimationSpec;->()V +HSPLandroidx/compose/animation/core/VectorizedFloatAnimationSpec;->(Landroidx/compose/animation/core/Animations;)V +HSPLandroidx/compose/animation/core/VectorizedFloatAnimationSpec;->(Landroidx/compose/animation/core/FloatAnimationSpec;)V +HSPLandroidx/compose/animation/core/VectorizedFloatAnimationSpec;->getDurationNanos(Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)J +HSPLandroidx/compose/animation/core/VectorizedFloatAnimationSpec;->getEndVelocity(Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/VectorizedFloatAnimationSpec;->getValueFromNanos(JLandroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/VectorizedFloatAnimationSpec;->getVelocityFromNanos(JLandroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +Landroidx/compose/animation/core/VectorizedFloatAnimationSpec$1; +HSPLandroidx/compose/animation/core/VectorizedFloatAnimationSpec$1;->(Landroidx/compose/animation/core/FloatAnimationSpec;)V +HSPLandroidx/compose/animation/core/VectorizedFloatAnimationSpec$1;->get(I)Landroidx/compose/animation/core/FloatAnimationSpec; +Landroidx/compose/animation/core/VectorizedInfiniteRepeatableSpec; +HSPLandroidx/compose/animation/core/VectorizedInfiniteRepeatableSpec;->()V +HSPLandroidx/compose/animation/core/VectorizedInfiniteRepeatableSpec;->(Landroidx/compose/animation/core/VectorizedDurationBasedAnimationSpec;Landroidx/compose/animation/core/RepeatMode;J)V +HSPLandroidx/compose/animation/core/VectorizedInfiniteRepeatableSpec;->(Landroidx/compose/animation/core/VectorizedDurationBasedAnimationSpec;Landroidx/compose/animation/core/RepeatMode;JLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/animation/core/VectorizedInfiniteRepeatableSpec;->getDurationNanos(Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)J +HSPLandroidx/compose/animation/core/VectorizedInfiniteRepeatableSpec;->getValueFromNanos(JLandroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/VectorizedInfiniteRepeatableSpec;->getVelocityFromNanos(JLandroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/VectorizedInfiniteRepeatableSpec;->isInfinite()Z +HSPLandroidx/compose/animation/core/VectorizedInfiniteRepeatableSpec;->repetitionPlayTimeNanos(J)J +HSPLandroidx/compose/animation/core/VectorizedInfiniteRepeatableSpec;->repetitionStartVelocity(JLandroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +Landroidx/compose/animation/core/VectorizedKeyframesSpec; +HSPLandroidx/compose/animation/core/VectorizedKeyframesSpec;->()V +HSPLandroidx/compose/animation/core/VectorizedKeyframesSpec;->(Ljava/util/Map;II)V +HSPLandroidx/compose/animation/core/VectorizedKeyframesSpec;->getDelayMillis()I +HSPLandroidx/compose/animation/core/VectorizedKeyframesSpec;->getDurationMillis()I +HSPLandroidx/compose/animation/core/VectorizedKeyframesSpec;->getValueFromNanos(JLandroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/VectorizedKeyframesSpec;->getVelocityFromNanos(JLandroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/VectorizedKeyframesSpec;->init(Landroidx/compose/animation/core/AnimationVector;)V +Landroidx/compose/animation/core/VectorizedSpringSpec; +HSPLandroidx/compose/animation/core/VectorizedSpringSpec;->()V +HSPLandroidx/compose/animation/core/VectorizedSpringSpec;->(FFLandroidx/compose/animation/core/AnimationVector;)V +HSPLandroidx/compose/animation/core/VectorizedSpringSpec;->(FFLandroidx/compose/animation/core/Animations;)V +HSPLandroidx/compose/animation/core/VectorizedSpringSpec;->getDurationNanos(Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)J +HSPLandroidx/compose/animation/core/VectorizedSpringSpec;->getEndVelocity(Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/VectorizedSpringSpec;->getValueFromNanos(JLandroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/VectorizedSpringSpec;->getVelocityFromNanos(JLandroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/VectorizedSpringSpec;->isInfinite()Z +Landroidx/compose/animation/core/VectorizedTweenSpec; +HSPLandroidx/compose/animation/core/VectorizedTweenSpec;->()V +HSPLandroidx/compose/animation/core/VectorizedTweenSpec;->(IILandroidx/compose/animation/core/Easing;)V +HSPLandroidx/compose/animation/core/VectorizedTweenSpec;->getDelayMillis()I +HSPLandroidx/compose/animation/core/VectorizedTweenSpec;->getDurationMillis()I +HSPLandroidx/compose/animation/core/VectorizedTweenSpec;->getValueFromNanos(JLandroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/VectorizedTweenSpec;->getVelocityFromNanos(JLandroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +Landroidx/compose/animation/core/VisibilityThresholdsKt; +HSPLandroidx/compose/animation/core/VisibilityThresholdsKt;->()V +HSPLandroidx/compose/animation/core/VisibilityThresholdsKt;->getVisibilityThreshold(Landroidx/compose/ui/geometry/Offset$Companion;)J +HSPLandroidx/compose/animation/core/VisibilityThresholdsKt;->getVisibilityThreshold(Landroidx/compose/ui/geometry/Rect$Companion;)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/animation/core/VisibilityThresholdsKt;->getVisibilityThreshold(Landroidx/compose/ui/geometry/Size$Companion;)J +HSPLandroidx/compose/animation/core/VisibilityThresholdsKt;->getVisibilityThreshold(Landroidx/compose/ui/unit/Dp$Companion;)F +HSPLandroidx/compose/animation/core/VisibilityThresholdsKt;->getVisibilityThreshold(Landroidx/compose/ui/unit/IntOffset$Companion;)J +HSPLandroidx/compose/animation/core/VisibilityThresholdsKt;->getVisibilityThreshold(Landroidx/compose/ui/unit/IntSize$Companion;)J +HSPLandroidx/compose/animation/core/VisibilityThresholdsKt;->getVisibilityThreshold(Lkotlin/jvm/internal/IntCompanionObject;)I +HSPLandroidx/compose/animation/core/VisibilityThresholdsKt;->getVisibilityThresholdMap()Ljava/util/Map; +Landroidx/compose/foundation/AbstractClickableNode; +HSPLandroidx/compose/foundation/AbstractClickableNode;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/foundation/AbstractClickableNode;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/AbstractClickableNode;->disposeInteractionSource()V +HSPLandroidx/compose/foundation/AbstractClickableNode;->getInteractionData()Landroidx/compose/foundation/AbstractClickableNode$InteractionData; +HSPLandroidx/compose/foundation/AbstractClickableNode;->onDetach()V +HSPLandroidx/compose/foundation/AbstractClickableNode;->onPointerEvent-H0pRuoY(Landroidx/compose/ui/input/pointer/PointerEvent;Landroidx/compose/ui/input/pointer/PointerEventPass;J)V +HSPLandroidx/compose/foundation/AbstractClickableNode;->updateCommon-XHw0xAI(Landroidx/compose/foundation/interaction/MutableInteractionSource;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;)V +Landroidx/compose/foundation/AbstractClickableNode$InteractionData; +HSPLandroidx/compose/foundation/AbstractClickableNode$InteractionData;->()V +HSPLandroidx/compose/foundation/AbstractClickableNode$InteractionData;->()V +HSPLandroidx/compose/foundation/AbstractClickableNode$InteractionData;->getCurrentKeyPressInteractions()Ljava/util/Map; +HSPLandroidx/compose/foundation/AbstractClickableNode$InteractionData;->getPressInteraction()Landroidx/compose/foundation/interaction/PressInteraction$Press; +HSPLandroidx/compose/foundation/AbstractClickableNode$InteractionData;->setCentreOffset-k-4lQ0M(J)V +HSPLandroidx/compose/foundation/AbstractClickableNode$InteractionData;->setPressInteraction(Landroidx/compose/foundation/interaction/PressInteraction$Press;)V +Landroidx/compose/foundation/AbstractClickablePointerInputNode; +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode;->(ZLandroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function0;Landroidx/compose/foundation/AbstractClickableNode$InteractionData;)V +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode;->(ZLandroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function0;Landroidx/compose/foundation/AbstractClickableNode$InteractionData;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode;->getEnabled()Z +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode;->getInteractionData()Landroidx/compose/foundation/AbstractClickableNode$InteractionData; +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode;->getOnClick()Lkotlin/jvm/functions/Function0; +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode;->handlePressInteraction-d-4ec7I(Landroidx/compose/foundation/gestures/PressGestureScope;JLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode;->onPointerEvent-H0pRuoY(Landroidx/compose/ui/input/pointer/PointerEvent;Landroidx/compose/ui/input/pointer/PointerEventPass;J)V +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode;->setEnabled(Z)V +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode;->setInteractionSource(Landroidx/compose/foundation/interaction/MutableInteractionSource;)V +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode;->setOnClick(Lkotlin/jvm/functions/Function0;)V +Landroidx/compose/foundation/AbstractClickablePointerInputNode$delayPressInteraction$1; +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode$delayPressInteraction$1;->(Landroidx/compose/foundation/AbstractClickablePointerInputNode;)V +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode$delayPressInteraction$1;->invoke()Ljava/lang/Boolean; +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode$delayPressInteraction$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/AbstractClickablePointerInputNode$pointerInputNode$1; +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode$pointerInputNode$1;->(Landroidx/compose/foundation/AbstractClickablePointerInputNode;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode$pointerInputNode$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode$pointerInputNode$1;->invoke(Landroidx/compose/ui/input/pointer/PointerInputScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode$pointerInputNode$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode$pointerInputNode$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->(Landroid/content/Context;Landroidx/compose/foundation/OverscrollConfiguration;)V +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$animateToRelease(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)V +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$getBottomEffect$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)Landroid/widget/EdgeEffect; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$getBottomEffectNegation$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)Landroid/widget/EdgeEffect; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$getContainerSize$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)J +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$getLeftEffect$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)Landroid/widget/EdgeEffect; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$getLeftEffectNegation$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)Landroid/widget/EdgeEffect; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$getRightEffect$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)Landroid/widget/EdgeEffect; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$getRightEffectNegation$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)Landroid/widget/EdgeEffect; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$getTopEffect$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)Landroid/widget/EdgeEffect; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$getTopEffectNegation$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)Landroid/widget/EdgeEffect; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$invalidateOverscroll(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)V +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$setContainerSize$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;J)V +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$setPointerId$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;Landroidx/compose/ui/input/pointer/PointerId;)V +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$setPointerPosition$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;Landroidx/compose/ui/geometry/Offset;)V +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->animateToRelease()V +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->drawOverscroll(Landroidx/compose/ui/graphics/drawscope/DrawScope;)V +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->getEffectModifier()Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->invalidateOverscroll()V +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->isInProgress()Z +Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1;->(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1;->invoke(Landroidx/compose/ui/input/pointer/PointerInputScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1$1; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1$1;->(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1$1;->invoke(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$onNewSize$1; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$onNewSize$1;->(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)V +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$onNewSize$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$onNewSize$1;->invoke-ozmzZPI(J)V +Landroidx/compose/foundation/AndroidOverscrollKt; +HSPLandroidx/compose/foundation/AndroidOverscrollKt;->()V +HSPLandroidx/compose/foundation/AndroidOverscrollKt;->access$getStretchOverscrollNonClippingLayer$p()Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/AndroidOverscrollKt;->rememberOverscrollEffect(Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/OverscrollEffect; +Landroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1; +HSPLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1;->()V +HSPLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1;->()V +HSPLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1;->invoke-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1$1; +HSPLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1$1;->(Landroidx/compose/ui/layout/Placeable;I)V +HSPLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2; +HSPLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2;->()V +HSPLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2;->()V +HSPLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2;->invoke-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2$1; +HSPLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2$1;->(Landroidx/compose/ui/layout/Placeable;I)V +HSPLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/Api31Impl; +HSPLandroidx/compose/foundation/Api31Impl;->()V +HSPLandroidx/compose/foundation/Api31Impl;->()V +HSPLandroidx/compose/foundation/Api31Impl;->create(Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/widget/EdgeEffect; +HSPLandroidx/compose/foundation/Api31Impl;->getDistance(Landroid/widget/EdgeEffect;)F +Landroidx/compose/foundation/BackgroundElement; +HSPLandroidx/compose/foundation/BackgroundElement;->(JLandroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/Shape;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/BackgroundElement;->(JLandroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/Shape;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/BackgroundElement;->(JLandroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/Shape;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/BackgroundElement;->create()Landroidx/compose/foundation/BackgroundNode; +HSPLandroidx/compose/foundation/BackgroundElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/BackgroundElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/BackgroundElement;->update(Landroidx/compose/foundation/BackgroundNode;)V +HSPLandroidx/compose/foundation/BackgroundElement;->update(Landroidx/compose/ui/Modifier$Node;)V +Landroidx/compose/foundation/BackgroundKt; +HSPLandroidx/compose/foundation/BackgroundKt;->background-bw27NRU$default(Landroidx/compose/ui/Modifier;JLandroidx/compose/ui/graphics/Shape;ILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/BackgroundKt;->background-bw27NRU(Landroidx/compose/ui/Modifier;JLandroidx/compose/ui/graphics/Shape;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/BackgroundNode; +HSPLandroidx/compose/foundation/BackgroundNode;->(JLandroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/Shape;)V +HSPLandroidx/compose/foundation/BackgroundNode;->(JLandroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/Shape;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/BackgroundNode;->draw(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V +HSPLandroidx/compose/foundation/BackgroundNode;->drawOutline(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V +HSPLandroidx/compose/foundation/BackgroundNode;->drawRect(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V +HSPLandroidx/compose/foundation/BackgroundNode;->setAlpha(F)V +HSPLandroidx/compose/foundation/BackgroundNode;->setBrush(Landroidx/compose/ui/graphics/Brush;)V +HSPLandroidx/compose/foundation/BackgroundNode;->setColor-8_81llA(J)V +HSPLandroidx/compose/foundation/BackgroundNode;->setShape(Landroidx/compose/ui/graphics/Shape;)V +Landroidx/compose/foundation/BorderKt; +HSPLandroidx/compose/foundation/BorderKt;->access$shrink-Kibmq7A(JF)J +PLandroidx/compose/foundation/BorderKt;->border(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/BorderStroke;Landroidx/compose/ui/graphics/Shape;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/BorderKt;->border-xT4_qwU(Landroidx/compose/ui/Modifier;FJLandroidx/compose/ui/graphics/Shape;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/BorderKt;->border-ziNgDLE(Landroidx/compose/ui/Modifier;FLandroidx/compose/ui/graphics/Brush;Landroidx/compose/ui/graphics/Shape;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/BorderKt;->shrink-Kibmq7A(JF)J +Landroidx/compose/foundation/BorderModifierNode; +HSPLandroidx/compose/foundation/BorderModifierNode;->(FLandroidx/compose/ui/graphics/Brush;Landroidx/compose/ui/graphics/Shape;)V +HSPLandroidx/compose/foundation/BorderModifierNode;->(FLandroidx/compose/ui/graphics/Brush;Landroidx/compose/ui/graphics/Shape;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/BorderModifierNode;->access$drawRoundRectBorder-JqoCqck(Landroidx/compose/foundation/BorderModifierNode;Landroidx/compose/ui/draw/CacheDrawScope;Landroidx/compose/ui/graphics/Brush;Landroidx/compose/ui/graphics/Outline$Rounded;JJZF)Landroidx/compose/ui/draw/DrawResult; +HSPLandroidx/compose/foundation/BorderModifierNode;->drawRoundRectBorder-JqoCqck(Landroidx/compose/ui/draw/CacheDrawScope;Landroidx/compose/ui/graphics/Brush;Landroidx/compose/ui/graphics/Outline$Rounded;JJZF)Landroidx/compose/ui/draw/DrawResult; +HSPLandroidx/compose/foundation/BorderModifierNode;->getBrush()Landroidx/compose/ui/graphics/Brush; +HSPLandroidx/compose/foundation/BorderModifierNode;->getShape()Landroidx/compose/ui/graphics/Shape; +HSPLandroidx/compose/foundation/BorderModifierNode;->getWidth-D9Ej5fM()F +HSPLandroidx/compose/foundation/BorderModifierNode;->setBrush(Landroidx/compose/ui/graphics/Brush;)V +HSPLandroidx/compose/foundation/BorderModifierNode;->setShape(Landroidx/compose/ui/graphics/Shape;)V +HSPLandroidx/compose/foundation/BorderModifierNode;->setWidth-0680j_4(F)V +Landroidx/compose/foundation/BorderModifierNode$drawRoundRectBorder$1; +HSPLandroidx/compose/foundation/BorderModifierNode$drawRoundRectBorder$1;->(ZLandroidx/compose/ui/graphics/Brush;JFFJJLandroidx/compose/ui/graphics/drawscope/Stroke;)V +HSPLandroidx/compose/foundation/BorderModifierNode$drawRoundRectBorder$1;->invoke(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V +HSPLandroidx/compose/foundation/BorderModifierNode$drawRoundRectBorder$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/BorderModifierNode$drawWithCacheModifierNode$1; +HSPLandroidx/compose/foundation/BorderModifierNode$drawWithCacheModifierNode$1;->(Landroidx/compose/foundation/BorderModifierNode;)V +HSPLandroidx/compose/foundation/BorderModifierNode$drawWithCacheModifierNode$1;->invoke(Landroidx/compose/ui/draw/CacheDrawScope;)Landroidx/compose/ui/draw/DrawResult; +HSPLandroidx/compose/foundation/BorderModifierNode$drawWithCacheModifierNode$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/BorderModifierNodeElement; +HSPLandroidx/compose/foundation/BorderModifierNodeElement;->(FLandroidx/compose/ui/graphics/Brush;Landroidx/compose/ui/graphics/Shape;)V +HSPLandroidx/compose/foundation/BorderModifierNodeElement;->(FLandroidx/compose/ui/graphics/Brush;Landroidx/compose/ui/graphics/Shape;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/BorderModifierNodeElement;->create()Landroidx/compose/foundation/BorderModifierNode; +HSPLandroidx/compose/foundation/BorderModifierNodeElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/BorderModifierNodeElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/BorderModifierNodeElement;->update(Landroidx/compose/foundation/BorderModifierNode;)V +HSPLandroidx/compose/foundation/BorderModifierNodeElement;->update(Landroidx/compose/ui/Modifier$Node;)V +Landroidx/compose/foundation/BorderStroke; +HSPLandroidx/compose/foundation/BorderStroke;->()V +HSPLandroidx/compose/foundation/BorderStroke;->(FLandroidx/compose/ui/graphics/Brush;)V +HSPLandroidx/compose/foundation/BorderStroke;->(FLandroidx/compose/ui/graphics/Brush;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +PLandroidx/compose/foundation/BorderStroke;->getBrush()Landroidx/compose/ui/graphics/Brush; +PLandroidx/compose/foundation/BorderStroke;->getWidth-D9Ej5fM()F +Landroidx/compose/foundation/BorderStrokeKt; +HSPLandroidx/compose/foundation/BorderStrokeKt;->BorderStroke-cXLIe8U(FJ)Landroidx/compose/foundation/BorderStroke; +Landroidx/compose/foundation/CanvasKt; +HSPLandroidx/compose/foundation/CanvasKt;->Canvas(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V +Landroidx/compose/foundation/CheckScrollableContainerConstraintsKt; +HSPLandroidx/compose/foundation/CheckScrollableContainerConstraintsKt;->checkScrollableContainerConstraints-K40F9xA(JLandroidx/compose/foundation/gestures/Orientation;)V +Landroidx/compose/foundation/ClickableElement; +HSPLandroidx/compose/foundation/ClickableElement;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/foundation/ClickableElement;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/ClickableElement;->create()Landroidx/compose/foundation/ClickableNode; +HSPLandroidx/compose/foundation/ClickableElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/ClickableElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/ClickableElement;->update(Landroidx/compose/foundation/ClickableNode;)V +HSPLandroidx/compose/foundation/ClickableElement;->update(Landroidx/compose/ui/Modifier$Node;)V +Landroidx/compose/foundation/ClickableKt; +HSPLandroidx/compose/foundation/ClickableKt;->access$handlePressInteraction-EPk0efs(Landroidx/compose/foundation/gestures/PressGestureScope;JLandroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/AbstractClickableNode$InteractionData;Lkotlin/jvm/functions/Function0;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/ClickableKt;->clickable-O2vRcR0$default(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/Indication;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/ClickableKt;->clickable-O2vRcR0(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/Indication;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/ClickableKt;->clickable-XHw0xAI$default(Landroidx/compose/ui/Modifier;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/ClickableKt;->clickable-XHw0xAI(Landroidx/compose/ui/Modifier;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/ClickableKt;->combinedClickable-XVZzFYc(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/Indication;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/ClickableKt;->combinedClickable-cJG_KMw$default(Landroidx/compose/ui/Modifier;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/ClickableKt;->combinedClickable-cJG_KMw(Landroidx/compose/ui/Modifier;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/ClickableKt;->handlePressInteraction-EPk0efs(Landroidx/compose/foundation/gestures/PressGestureScope;JLandroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/AbstractClickableNode$InteractionData;Lkotlin/jvm/functions/Function0;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/foundation/ClickableKt$clickable$2; +HSPLandroidx/compose/foundation/ClickableKt$clickable$2;->(ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/foundation/ClickableKt$clickable$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/ClickableKt$clickable$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/ClickableKt$combinedClickable$2; +HSPLandroidx/compose/foundation/ClickableKt$combinedClickable$2;->(ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/foundation/ClickableKt$combinedClickable$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/ClickableKt$combinedClickable$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/ClickableKt$handlePressInteraction$2; +HSPLandroidx/compose/foundation/ClickableKt$handlePressInteraction$2;->(Landroidx/compose/foundation/gestures/PressGestureScope;JLandroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/AbstractClickableNode$InteractionData;Lkotlin/jvm/functions/Function0;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/ClickableKt$handlePressInteraction$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/ClickableKt$handlePressInteraction$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/ClickableKt$handlePressInteraction$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/ClickableKt$handlePressInteraction$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/ClickableKt$handlePressInteraction$2$delayJob$1; +HSPLandroidx/compose/foundation/ClickableKt$handlePressInteraction$2$delayJob$1;->(Lkotlin/jvm/functions/Function0;JLandroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/AbstractClickableNode$InteractionData;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/ClickableKt$handlePressInteraction$2$delayJob$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/ClickableKt$handlePressInteraction$2$delayJob$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/ClickableNode; +HSPLandroidx/compose/foundation/ClickableNode;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/foundation/ClickableNode;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/ClickableNode;->getClickablePointerInputNode()Landroidx/compose/foundation/AbstractClickablePointerInputNode; +HSPLandroidx/compose/foundation/ClickableNode;->getClickablePointerInputNode()Landroidx/compose/foundation/ClickablePointerInputNode; +HSPLandroidx/compose/foundation/ClickableNode;->getClickableSemanticsNode()Landroidx/compose/foundation/ClickableSemanticsNode; +HSPLandroidx/compose/foundation/ClickableNode;->update-XHw0xAI(Landroidx/compose/foundation/interaction/MutableInteractionSource;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;)V +Landroidx/compose/foundation/ClickablePointerInputNode; +HSPLandroidx/compose/foundation/ClickablePointerInputNode;->(ZLandroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function0;Landroidx/compose/foundation/AbstractClickableNode$InteractionData;)V +HSPLandroidx/compose/foundation/ClickablePointerInputNode;->pointerInput(Landroidx/compose/ui/input/pointer/PointerInputScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/ClickablePointerInputNode;->update(ZLandroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function0;)V +Landroidx/compose/foundation/ClickablePointerInputNode$pointerInput$2; +HSPLandroidx/compose/foundation/ClickablePointerInputNode$pointerInput$2;->(Landroidx/compose/foundation/ClickablePointerInputNode;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/ClickablePointerInputNode$pointerInput$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/ClickablePointerInputNode$pointerInput$2;->invoke-d-4ec7I(Landroidx/compose/foundation/gestures/PressGestureScope;JLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/ClickablePointerInputNode$pointerInput$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/ClickablePointerInputNode$pointerInput$3; +HSPLandroidx/compose/foundation/ClickablePointerInputNode$pointerInput$3;->(Landroidx/compose/foundation/ClickablePointerInputNode;)V +HSPLandroidx/compose/foundation/ClickablePointerInputNode$pointerInput$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/ClickablePointerInputNode$pointerInput$3;->invoke-k-4lQ0M(J)V +Landroidx/compose/foundation/ClickableSemanticsNode; +HSPLandroidx/compose/foundation/ClickableSemanticsNode;->(ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/foundation/ClickableSemanticsNode;->(ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/ClickableSemanticsNode;->applySemantics(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/foundation/ClickableSemanticsNode;->getShouldMergeDescendantSemantics()Z +HSPLandroidx/compose/foundation/ClickableSemanticsNode;->update-UMe6uN4(ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V +Landroidx/compose/foundation/ClickableSemanticsNode$applySemantics$1; +HSPLandroidx/compose/foundation/ClickableSemanticsNode$applySemantics$1;->(Landroidx/compose/foundation/ClickableSemanticsNode;)V +Landroidx/compose/foundation/Clickable_androidKt; +HSPLandroidx/compose/foundation/Clickable_androidKt;->()V +HSPLandroidx/compose/foundation/Clickable_androidKt;->getTapIndicationDelay()J +Landroidx/compose/foundation/ClipScrollableContainerKt; +HSPLandroidx/compose/foundation/ClipScrollableContainerKt;->()V +HSPLandroidx/compose/foundation/ClipScrollableContainerKt;->clipScrollableContainer(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/gestures/Orientation;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/ClipScrollableContainerKt;->getMaxSupportedElevation()F +Landroidx/compose/foundation/ClipScrollableContainerKt$HorizontalScrollableClipModifier$1; +HSPLandroidx/compose/foundation/ClipScrollableContainerKt$HorizontalScrollableClipModifier$1;->()V +Landroidx/compose/foundation/ClipScrollableContainerKt$VerticalScrollableClipModifier$1; +HSPLandroidx/compose/foundation/ClipScrollableContainerKt$VerticalScrollableClipModifier$1;->()V +HSPLandroidx/compose/foundation/ClipScrollableContainerKt$VerticalScrollableClipModifier$1;->createOutline-Pq9zytI(JLandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/unit/Density;)Landroidx/compose/ui/graphics/Outline; +Landroidx/compose/foundation/CombinedClickableElement; +HSPLandroidx/compose/foundation/CombinedClickableElement;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/foundation/CombinedClickableElement;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/CombinedClickableElement;->create()Landroidx/compose/foundation/CombinedClickableNode; +HSPLandroidx/compose/foundation/CombinedClickableElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/CombinedClickableElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/CombinedClickableNode; +HSPLandroidx/compose/foundation/CombinedClickableNode;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/foundation/CombinedClickableNode;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/foundation/CombinedClickablePointerInputNode; +HSPLandroidx/compose/foundation/CombinedClickablePointerInputNode;->(ZLandroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function0;Landroidx/compose/foundation/AbstractClickableNode$InteractionData;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)V +Landroidx/compose/foundation/DarkThemeKt; +HSPLandroidx/compose/foundation/DarkThemeKt;->isSystemInDarkTheme(Landroidx/compose/runtime/Composer;I)Z +Landroidx/compose/foundation/DarkTheme_androidKt; +HSPLandroidx/compose/foundation/DarkTheme_androidKt;->_isSystemInDarkTheme(Landroidx/compose/runtime/Composer;I)Z +Landroidx/compose/foundation/DrawOverscrollModifier; +HSPLandroidx/compose/foundation/DrawOverscrollModifier;->(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/DrawOverscrollModifier;->draw(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V +HSPLandroidx/compose/foundation/DrawOverscrollModifier;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/EdgeEffectCompat; +HSPLandroidx/compose/foundation/EdgeEffectCompat;->()V +HSPLandroidx/compose/foundation/EdgeEffectCompat;->()V +HSPLandroidx/compose/foundation/EdgeEffectCompat;->create(Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/widget/EdgeEffect; +HSPLandroidx/compose/foundation/EdgeEffectCompat;->getDistanceCompat(Landroid/widget/EdgeEffect;)F +Landroidx/compose/foundation/FocusableElement; +HSPLandroidx/compose/foundation/FocusableElement;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;)V +HSPLandroidx/compose/foundation/FocusableElement;->create()Landroidx/compose/foundation/FocusableNode; +HSPLandroidx/compose/foundation/FocusableElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/FocusableElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/FocusableInNonTouchMode; +HSPLandroidx/compose/foundation/FocusableInNonTouchMode;->()V +HSPLandroidx/compose/foundation/FocusableInNonTouchMode;->applyFocusProperties(Landroidx/compose/ui/focus/FocusProperties;)V +HSPLandroidx/compose/foundation/FocusableInNonTouchMode;->getInputModeManager()Landroidx/compose/ui/input/InputModeManager; +Landroidx/compose/foundation/FocusableInteractionNode; +HSPLandroidx/compose/foundation/FocusableInteractionNode;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;)V +HSPLandroidx/compose/foundation/FocusableInteractionNode;->emitWithFallback(Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/interaction/Interaction;)V +HSPLandroidx/compose/foundation/FocusableInteractionNode;->setFocus(Z)V +Landroidx/compose/foundation/FocusableInteractionNode$emitWithFallback$1; +HSPLandroidx/compose/foundation/FocusableInteractionNode$emitWithFallback$1;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/interaction/Interaction;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/FocusableInteractionNode$emitWithFallback$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/FocusableInteractionNode$emitWithFallback$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/FocusableKt; +HSPLandroidx/compose/foundation/FocusableKt;->()V +HSPLandroidx/compose/foundation/FocusableKt;->focusGroup(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/FocusableKt;->focusable(Landroidx/compose/ui/Modifier;ZLandroidx/compose/foundation/interaction/MutableInteractionSource;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/FocusableKt;->focusableInNonTouchMode(Landroidx/compose/ui/Modifier;ZLandroidx/compose/foundation/interaction/MutableInteractionSource;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/FocusableKt$FocusableInNonTouchModeElement$1; +HSPLandroidx/compose/foundation/FocusableKt$FocusableInNonTouchModeElement$1;->()V +HSPLandroidx/compose/foundation/FocusableKt$FocusableInNonTouchModeElement$1;->create()Landroidx/compose/foundation/FocusableInNonTouchMode; +HSPLandroidx/compose/foundation/FocusableKt$FocusableInNonTouchModeElement$1;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/FocusableKt$FocusableInNonTouchModeElement$1;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/FocusableKt$focusGroup$1; +HSPLandroidx/compose/foundation/FocusableKt$focusGroup$1;->()V +HSPLandroidx/compose/foundation/FocusableKt$focusGroup$1;->()V +HSPLandroidx/compose/foundation/FocusableKt$focusGroup$1;->invoke(Landroidx/compose/ui/focus/FocusProperties;)V +HSPLandroidx/compose/foundation/FocusableKt$focusGroup$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/FocusableKt$focusableInNonTouchMode$1; +HSPLandroidx/compose/foundation/FocusableKt$focusableInNonTouchMode$1;->(ZLandroidx/compose/foundation/interaction/MutableInteractionSource;)V +Landroidx/compose/foundation/FocusableNode; +HSPLandroidx/compose/foundation/FocusableNode;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;)V +HSPLandroidx/compose/foundation/FocusableNode;->access$getBringIntoViewRequester$p(Landroidx/compose/foundation/FocusableNode;)Landroidx/compose/foundation/relocation/BringIntoViewRequester; +HSPLandroidx/compose/foundation/FocusableNode;->applySemantics(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/foundation/FocusableNode;->onFocusEvent(Landroidx/compose/ui/focus/FocusState;)V +HSPLandroidx/compose/foundation/FocusableNode;->onGloballyPositioned(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/foundation/FocusableNode;->onPlaced(Landroidx/compose/ui/layout/LayoutCoordinates;)V +Landroidx/compose/foundation/FocusableNode$onFocusEvent$1; +HSPLandroidx/compose/foundation/FocusableNode$onFocusEvent$1;->(Landroidx/compose/foundation/FocusableNode;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/FocusableNode$onFocusEvent$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/FocusableNode$onFocusEvent$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/FocusablePinnableContainerNode; +HSPLandroidx/compose/foundation/FocusablePinnableContainerNode;->()V +HSPLandroidx/compose/foundation/FocusablePinnableContainerNode;->retrievePinnableContainer()Landroidx/compose/ui/layout/PinnableContainer; +HSPLandroidx/compose/foundation/FocusablePinnableContainerNode;->setFocus(Z)V +Landroidx/compose/foundation/FocusablePinnableContainerNode$retrievePinnableContainer$1; +HSPLandroidx/compose/foundation/FocusablePinnableContainerNode$retrievePinnableContainer$1;->(Lkotlin/jvm/internal/Ref$ObjectRef;Landroidx/compose/foundation/FocusablePinnableContainerNode;)V +HSPLandroidx/compose/foundation/FocusablePinnableContainerNode$retrievePinnableContainer$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/foundation/FocusablePinnableContainerNode$retrievePinnableContainer$1;->invoke()V +Landroidx/compose/foundation/FocusableSemanticsNode; +HSPLandroidx/compose/foundation/FocusableSemanticsNode;->()V +HSPLandroidx/compose/foundation/FocusableSemanticsNode;->applySemantics(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/foundation/FocusableSemanticsNode;->setFocus(Z)V +Landroidx/compose/foundation/FocusableSemanticsNode$applySemantics$1; +HSPLandroidx/compose/foundation/FocusableSemanticsNode$applySemantics$1;->(Landroidx/compose/foundation/FocusableSemanticsNode;)V +Landroidx/compose/foundation/FocusedBoundsKt; +HSPLandroidx/compose/foundation/FocusedBoundsKt;->()V +HSPLandroidx/compose/foundation/FocusedBoundsKt;->getModifierLocalFocusedBoundsObserver()Landroidx/compose/ui/modifier/ProvidableModifierLocal; +HSPLandroidx/compose/foundation/FocusedBoundsKt;->onFocusedBoundsChanged(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/FocusedBoundsKt$ModifierLocalFocusedBoundsObserver$1; +HSPLandroidx/compose/foundation/FocusedBoundsKt$ModifierLocalFocusedBoundsObserver$1;->()V +HSPLandroidx/compose/foundation/FocusedBoundsKt$ModifierLocalFocusedBoundsObserver$1;->()V +HSPLandroidx/compose/foundation/FocusedBoundsKt$ModifierLocalFocusedBoundsObserver$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/foundation/FocusedBoundsKt$ModifierLocalFocusedBoundsObserver$1;->invoke()Lkotlin/jvm/functions/Function1; +Landroidx/compose/foundation/FocusedBoundsNode; +HSPLandroidx/compose/foundation/FocusedBoundsNode;->()V +HSPLandroidx/compose/foundation/FocusedBoundsNode;->getObserver()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/foundation/FocusedBoundsNode;->notifyObserverWhenAttached()V +HSPLandroidx/compose/foundation/FocusedBoundsNode;->onGloballyPositioned(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/foundation/FocusedBoundsNode;->setFocus(Z)V +Landroidx/compose/foundation/FocusedBoundsObserverElement; +HSPLandroidx/compose/foundation/FocusedBoundsObserverElement;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/FocusedBoundsObserverElement;->create()Landroidx/compose/foundation/FocusedBoundsObserverNode; +HSPLandroidx/compose/foundation/FocusedBoundsObserverElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/FocusedBoundsObserverElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/FocusedBoundsObserverNode; +HSPLandroidx/compose/foundation/FocusedBoundsObserverNode;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/FocusedBoundsObserverNode;->getParent()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/foundation/FocusedBoundsObserverNode;->getProvidedValues()Landroidx/compose/ui/modifier/ModifierLocalMap; +HSPLandroidx/compose/foundation/FocusedBoundsObserverNode;->invoke(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/foundation/FocusedBoundsObserverNode;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/HoverableElement; +HSPLandroidx/compose/foundation/HoverableElement;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;)V +HSPLandroidx/compose/foundation/HoverableElement;->create()Landroidx/compose/foundation/HoverableNode; +HSPLandroidx/compose/foundation/HoverableElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/HoverableElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/HoverableKt; +HSPLandroidx/compose/foundation/HoverableKt;->hoverable(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/interaction/MutableInteractionSource;Z)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/HoverableNode; +HSPLandroidx/compose/foundation/HoverableNode;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;)V +HSPLandroidx/compose/foundation/HoverableNode;->onDetach()V +HSPLandroidx/compose/foundation/HoverableNode;->onPointerEvent-H0pRuoY(Landroidx/compose/ui/input/pointer/PointerEvent;Landroidx/compose/ui/input/pointer/PointerEventPass;J)V +HSPLandroidx/compose/foundation/HoverableNode;->tryEmitExit()V +Landroidx/compose/foundation/Indication; +Landroidx/compose/foundation/IndicationInstance; +Landroidx/compose/foundation/IndicationKt; +HSPLandroidx/compose/foundation/IndicationKt;->()V +HSPLandroidx/compose/foundation/IndicationKt;->getLocalIndication()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/foundation/IndicationKt;->indication(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/foundation/Indication;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/IndicationKt$LocalIndication$1; +HSPLandroidx/compose/foundation/IndicationKt$LocalIndication$1;->()V +HSPLandroidx/compose/foundation/IndicationKt$LocalIndication$1;->()V +Landroidx/compose/foundation/IndicationKt$indication$2; +HSPLandroidx/compose/foundation/IndicationKt$indication$2;->(Landroidx/compose/foundation/Indication;Landroidx/compose/foundation/interaction/InteractionSource;)V +HSPLandroidx/compose/foundation/IndicationKt$indication$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/IndicationKt$indication$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/IndicationModifier; +HSPLandroidx/compose/foundation/IndicationModifier;->(Landroidx/compose/foundation/IndicationInstance;)V +HSPLandroidx/compose/foundation/IndicationModifier;->draw(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V +Landroidx/compose/foundation/MagnifierKt; +HSPLandroidx/compose/foundation/MagnifierKt;->()V +HSPLandroidx/compose/foundation/MagnifierKt;->getMagnifierPositionInRoot()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/foundation/MagnifierKt;->isPlatformMagnifierSupported$default(IILjava/lang/Object;)Z +HSPLandroidx/compose/foundation/MagnifierKt;->isPlatformMagnifierSupported(I)Z +HSPLandroidx/compose/foundation/MagnifierKt;->magnifier$default(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;FLandroidx/compose/foundation/MagnifierStyle;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/MagnifierKt;->magnifier(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;FLandroidx/compose/foundation/MagnifierStyle;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/MagnifierKt;->magnifier(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;FLandroidx/compose/foundation/MagnifierStyle;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/PlatformMagnifierFactory;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/MagnifierKt$magnifier$1; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$1;->()V +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$1;->()V +Landroidx/compose/foundation/MagnifierKt$magnifier$4; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;FLkotlin/jvm/functions/Function1;Landroidx/compose/foundation/PlatformMagnifierFactory;Landroidx/compose/foundation/MagnifierStyle;)V +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4;->access$invoke$lambda$1(Landroidx/compose/runtime/MutableState;)J +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4;->access$invoke$lambda$10(Landroidx/compose/runtime/State;)Z +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4;->access$invoke$lambda$2(Landroidx/compose/runtime/MutableState;J)V +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4;->access$invoke$lambda$3(Landroidx/compose/runtime/State;)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4;->access$invoke$lambda$6(Landroidx/compose/runtime/State;)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4;->access$invoke$lambda$8(Landroidx/compose/runtime/State;)J +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4;->invoke$lambda$1(Landroidx/compose/runtime/MutableState;)J +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4;->invoke$lambda$10(Landroidx/compose/runtime/State;)Z +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4;->invoke$lambda$2(Landroidx/compose/runtime/MutableState;J)V +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4;->invoke$lambda$3(Landroidx/compose/runtime/State;)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4;->invoke$lambda$6(Landroidx/compose/runtime/State;)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4;->invoke$lambda$8(Landroidx/compose/runtime/State;)J +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/MagnifierKt$magnifier$4$1; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$1;->(Landroidx/compose/foundation/PlatformMagnifierFactory;Landroidx/compose/foundation/MagnifierStyle;Landroid/view/View;Landroidx/compose/ui/unit/Density;FLkotlinx/coroutines/flow/MutableSharedFlow;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/MutableState;Landroidx/compose/runtime/State;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/MagnifierKt$magnifier$4$1$1; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$1$1;->(Landroidx/compose/foundation/PlatformMagnifier;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$1$1;->invoke(Lkotlin/Unit;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/MagnifierKt$magnifier$4$1$2; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$1$2;->(Landroidx/compose/foundation/PlatformMagnifier;Landroidx/compose/ui/unit/Density;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/MutableState;Landroidx/compose/runtime/State;Lkotlin/jvm/internal/Ref$LongRef;Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$1$2;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$1$2;->invoke()V +Landroidx/compose/foundation/MagnifierKt$magnifier$4$2$1; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$2$1;->(Landroidx/compose/runtime/MutableState;)V +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$2$1;->invoke(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/MagnifierKt$magnifier$4$3; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$3;->(Lkotlinx/coroutines/flow/MutableSharedFlow;)V +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$3;->invoke(Landroidx/compose/ui/graphics/drawscope/DrawScope;)V +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/MagnifierKt$magnifier$4$4$1; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$4$1;->(Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$4$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$4$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/MagnifierKt$magnifier$4$4$1$1; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$4$1$1;->(Landroidx/compose/runtime/State;)V +Landroidx/compose/foundation/MagnifierKt$magnifier$4$isMagnifierShown$2$1; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$isMagnifierShown$2$1;->(Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$isMagnifierShown$2$1;->invoke()Ljava/lang/Boolean; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$isMagnifierShown$2$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/MagnifierKt$magnifier$4$sourceCenterInRoot$2$1; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$sourceCenterInRoot$2$1;->(Landroidx/compose/ui/unit/Density;Landroidx/compose/runtime/State;Landroidx/compose/runtime/MutableState;)V +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$sourceCenterInRoot$2$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$sourceCenterInRoot$2$1;->invoke-F1C5BW0()J +Landroidx/compose/foundation/MagnifierStyle; +HSPLandroidx/compose/foundation/MagnifierStyle;->()V +HSPLandroidx/compose/foundation/MagnifierStyle;->(JFFZZ)V +HSPLandroidx/compose/foundation/MagnifierStyle;->(JFFZZILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/MagnifierStyle;->(JFFZZLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/MagnifierStyle;->(ZJFFZZ)V +HSPLandroidx/compose/foundation/MagnifierStyle;->(ZJFFZZLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/MagnifierStyle;->access$getTextDefault$cp()Landroidx/compose/foundation/MagnifierStyle; +HSPLandroidx/compose/foundation/MagnifierStyle;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/MagnifierStyle;->getFishEyeEnabled$foundation_release()Z +HSPLandroidx/compose/foundation/MagnifierStyle;->getUseTextDefault$foundation_release()Z +HSPLandroidx/compose/foundation/MagnifierStyle;->isSupported()Z +Landroidx/compose/foundation/MagnifierStyle$Companion; +HSPLandroidx/compose/foundation/MagnifierStyle$Companion;->()V +HSPLandroidx/compose/foundation/MagnifierStyle$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/MagnifierStyle$Companion;->getTextDefault()Landroidx/compose/foundation/MagnifierStyle; +HSPLandroidx/compose/foundation/MagnifierStyle$Companion;->isStyleSupported$foundation_release$default(Landroidx/compose/foundation/MagnifierStyle$Companion;Landroidx/compose/foundation/MagnifierStyle;IILjava/lang/Object;)Z +HSPLandroidx/compose/foundation/MagnifierStyle$Companion;->isStyleSupported$foundation_release(Landroidx/compose/foundation/MagnifierStyle;I)Z +Landroidx/compose/foundation/MutatePriority; +HSPLandroidx/compose/foundation/MutatePriority;->$values()[Landroidx/compose/foundation/MutatePriority; +HSPLandroidx/compose/foundation/MutatePriority;->()V +HSPLandroidx/compose/foundation/MutatePriority;->(Ljava/lang/String;I)V +Landroidx/compose/foundation/MutatorMutex; +HSPLandroidx/compose/foundation/MutatorMutex;->()V +HSPLandroidx/compose/foundation/MutatorMutex;->()V +HSPLandroidx/compose/foundation/MutatorMutex;->access$getCurrentMutator$p(Landroidx/compose/foundation/MutatorMutex;)Ljava/util/concurrent/atomic/AtomicReference; +HSPLandroidx/compose/foundation/MutatorMutex;->access$getMutex$p(Landroidx/compose/foundation/MutatorMutex;)Lkotlinx/coroutines/sync/Mutex; +HSPLandroidx/compose/foundation/MutatorMutex;->access$tryMutateOrCancel(Landroidx/compose/foundation/MutatorMutex;Landroidx/compose/foundation/MutatorMutex$Mutator;)V +HSPLandroidx/compose/foundation/MutatorMutex;->mutateWith(Ljava/lang/Object;Landroidx/compose/foundation/MutatePriority;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/MutatorMutex;->tryMutateOrCancel(Landroidx/compose/foundation/MutatorMutex$Mutator;)V +Landroidx/compose/foundation/MutatorMutex$Mutator; +HSPLandroidx/compose/foundation/MutatorMutex$Mutator;->(Landroidx/compose/foundation/MutatePriority;Lkotlinx/coroutines/Job;)V +Landroidx/compose/foundation/MutatorMutex$mutateWith$2; +HSPLandroidx/compose/foundation/MutatorMutex$mutateWith$2;->(Landroidx/compose/foundation/MutatePriority;Landroidx/compose/foundation/MutatorMutex;Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/MutatorMutex$mutateWith$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/MutatorMutex$mutateWith$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/MutatorMutex$mutateWith$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/MutatorMutex$mutateWith$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/NoIndication; +HSPLandroidx/compose/foundation/NoIndication;->()V +HSPLandroidx/compose/foundation/NoIndication;->()V +HSPLandroidx/compose/foundation/NoIndication;->rememberUpdatedInstance(Landroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/IndicationInstance; +Landroidx/compose/foundation/NoIndication$NoIndicationInstance; +HSPLandroidx/compose/foundation/NoIndication$NoIndicationInstance;->()V +HSPLandroidx/compose/foundation/NoIndication$NoIndicationInstance;->()V +HSPLandroidx/compose/foundation/NoIndication$NoIndicationInstance;->drawIndication(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V +Landroidx/compose/foundation/OverscrollConfiguration; +HSPLandroidx/compose/foundation/OverscrollConfiguration;->()V +HSPLandroidx/compose/foundation/OverscrollConfiguration;->(JLandroidx/compose/foundation/layout/PaddingValues;)V +HSPLandroidx/compose/foundation/OverscrollConfiguration;->(JLandroidx/compose/foundation/layout/PaddingValues;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/OverscrollConfiguration;->(JLandroidx/compose/foundation/layout/PaddingValues;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/OverscrollConfiguration;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/OverscrollConfiguration;->getGlowColor-0d7_KjU()J +Landroidx/compose/foundation/OverscrollConfigurationKt; +HSPLandroidx/compose/foundation/OverscrollConfigurationKt;->()V +HSPLandroidx/compose/foundation/OverscrollConfigurationKt;->getLocalOverscrollConfiguration()Landroidx/compose/runtime/ProvidableCompositionLocal; +Landroidx/compose/foundation/OverscrollConfigurationKt$LocalOverscrollConfiguration$1; +HSPLandroidx/compose/foundation/OverscrollConfigurationKt$LocalOverscrollConfiguration$1;->()V +HSPLandroidx/compose/foundation/OverscrollConfigurationKt$LocalOverscrollConfiguration$1;->()V +HSPLandroidx/compose/foundation/OverscrollConfigurationKt$LocalOverscrollConfiguration$1;->invoke()Landroidx/compose/foundation/OverscrollConfiguration; +HSPLandroidx/compose/foundation/OverscrollConfigurationKt$LocalOverscrollConfiguration$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/OverscrollEffect; +Landroidx/compose/foundation/OverscrollKt; +HSPLandroidx/compose/foundation/OverscrollKt;->overscroll(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/OverscrollEffect;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/PlatformMagnifier; +Landroidx/compose/foundation/PlatformMagnifierFactory; +HSPLandroidx/compose/foundation/PlatformMagnifierFactory;->()V +Landroidx/compose/foundation/PlatformMagnifierFactory$Companion; +HSPLandroidx/compose/foundation/PlatformMagnifierFactory$Companion;->()V +HSPLandroidx/compose/foundation/PlatformMagnifierFactory$Companion;->()V +HSPLandroidx/compose/foundation/PlatformMagnifierFactory$Companion;->getForCurrentPlatform()Landroidx/compose/foundation/PlatformMagnifierFactory; +Landroidx/compose/foundation/PlatformMagnifierFactoryApi28Impl$PlatformMagnifierImpl; +HSPLandroidx/compose/foundation/PlatformMagnifierFactoryApi28Impl$PlatformMagnifierImpl;->()V +HSPLandroidx/compose/foundation/PlatformMagnifierFactoryApi28Impl$PlatformMagnifierImpl;->(Landroid/widget/Magnifier;)V +HSPLandroidx/compose/foundation/PlatformMagnifierFactoryApi28Impl$PlatformMagnifierImpl;->dismiss()V +HSPLandroidx/compose/foundation/PlatformMagnifierFactoryApi28Impl$PlatformMagnifierImpl;->getSize-YbymL2g()J +HSPLandroidx/compose/foundation/PlatformMagnifierFactoryApi28Impl$PlatformMagnifierImpl;->updateContent()V +Landroidx/compose/foundation/PlatformMagnifierFactoryApi29Impl; +HSPLandroidx/compose/foundation/PlatformMagnifierFactoryApi29Impl;->()V +HSPLandroidx/compose/foundation/PlatformMagnifierFactoryApi29Impl;->()V +HSPLandroidx/compose/foundation/PlatformMagnifierFactoryApi29Impl;->create(Landroidx/compose/foundation/MagnifierStyle;Landroid/view/View;Landroidx/compose/ui/unit/Density;F)Landroidx/compose/foundation/PlatformMagnifier; +HSPLandroidx/compose/foundation/PlatformMagnifierFactoryApi29Impl;->create(Landroidx/compose/foundation/MagnifierStyle;Landroid/view/View;Landroidx/compose/ui/unit/Density;F)Landroidx/compose/foundation/PlatformMagnifierFactoryApi29Impl$PlatformMagnifierImpl; +HSPLandroidx/compose/foundation/PlatformMagnifierFactoryApi29Impl;->getCanUpdateZoom()Z +Landroidx/compose/foundation/PlatformMagnifierFactoryApi29Impl$PlatformMagnifierImpl; +HSPLandroidx/compose/foundation/PlatformMagnifierFactoryApi29Impl$PlatformMagnifierImpl;->()V +HSPLandroidx/compose/foundation/PlatformMagnifierFactoryApi29Impl$PlatformMagnifierImpl;->(Landroid/widget/Magnifier;)V +Landroidx/compose/foundation/ProgressSemanticsKt; +HSPLandroidx/compose/foundation/ProgressSemanticsKt;->progressSemantics(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/ProgressSemanticsKt$progressSemantics$2; +HSPLandroidx/compose/foundation/ProgressSemanticsKt$progressSemantics$2;->()V +HSPLandroidx/compose/foundation/ProgressSemanticsKt$progressSemantics$2;->()V +HSPLandroidx/compose/foundation/ProgressSemanticsKt$progressSemantics$2;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/foundation/ProgressSemanticsKt$progressSemantics$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/ScrollKt; +HSPLandroidx/compose/foundation/ScrollKt;->rememberScrollState(ILandroidx/compose/runtime/Composer;II)Landroidx/compose/foundation/ScrollState; +HSPLandroidx/compose/foundation/ScrollKt;->scroll(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/ScrollState;ZLandroidx/compose/foundation/gestures/FlingBehavior;ZZ)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/ScrollKt;->verticalScroll$default(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/ScrollState;ZLandroidx/compose/foundation/gestures/FlingBehavior;ZILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/ScrollKt;->verticalScroll(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/ScrollState;ZLandroidx/compose/foundation/gestures/FlingBehavior;Z)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/ScrollKt$rememberScrollState$1$1; +HSPLandroidx/compose/foundation/ScrollKt$rememberScrollState$1$1;->(I)V +HSPLandroidx/compose/foundation/ScrollKt$rememberScrollState$1$1;->invoke()Landroidx/compose/foundation/ScrollState; +HSPLandroidx/compose/foundation/ScrollKt$rememberScrollState$1$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/ScrollKt$scroll$2; +HSPLandroidx/compose/foundation/ScrollKt$scroll$2;->(ZZLandroidx/compose/foundation/ScrollState;ZLandroidx/compose/foundation/gestures/FlingBehavior;)V +HSPLandroidx/compose/foundation/ScrollKt$scroll$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/ScrollKt$scroll$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/ScrollKt$scroll$2$semantics$1; +HSPLandroidx/compose/foundation/ScrollKt$scroll$2$semantics$1;->(ZZZLandroidx/compose/foundation/ScrollState;Lkotlinx/coroutines/CoroutineScope;)V +HSPLandroidx/compose/foundation/ScrollKt$scroll$2$semantics$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/foundation/ScrollKt$scroll$2$semantics$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/ScrollKt$scroll$2$semantics$1$1; +HSPLandroidx/compose/foundation/ScrollKt$scroll$2$semantics$1$1;->(Lkotlinx/coroutines/CoroutineScope;ZLandroidx/compose/foundation/ScrollState;)V +Landroidx/compose/foundation/ScrollKt$scroll$2$semantics$1$accessibilityScrollState$1; +HSPLandroidx/compose/foundation/ScrollKt$scroll$2$semantics$1$accessibilityScrollState$1;->(Landroidx/compose/foundation/ScrollState;)V +HSPLandroidx/compose/foundation/ScrollKt$scroll$2$semantics$1$accessibilityScrollState$1;->invoke()Ljava/lang/Float; +HSPLandroidx/compose/foundation/ScrollKt$scroll$2$semantics$1$accessibilityScrollState$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/ScrollKt$scroll$2$semantics$1$accessibilityScrollState$2; +HSPLandroidx/compose/foundation/ScrollKt$scroll$2$semantics$1$accessibilityScrollState$2;->(Landroidx/compose/foundation/ScrollState;)V +HSPLandroidx/compose/foundation/ScrollKt$scroll$2$semantics$1$accessibilityScrollState$2;->invoke()Ljava/lang/Float; +HSPLandroidx/compose/foundation/ScrollKt$scroll$2$semantics$1$accessibilityScrollState$2;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/ScrollState; +HSPLandroidx/compose/foundation/ScrollState;->()V +HSPLandroidx/compose/foundation/ScrollState;->(I)V +HSPLandroidx/compose/foundation/ScrollState;->access$getSaver$cp()Landroidx/compose/runtime/saveable/Saver; +HSPLandroidx/compose/foundation/ScrollState;->getInternalInteractionSource$foundation_release()Landroidx/compose/foundation/interaction/MutableInteractionSource; +HSPLandroidx/compose/foundation/ScrollState;->getMaxValue()I +HSPLandroidx/compose/foundation/ScrollState;->getValue()I +HSPLandroidx/compose/foundation/ScrollState;->isScrollInProgress()Z +HSPLandroidx/compose/foundation/ScrollState;->setMaxValue$foundation_release(I)V +HSPLandroidx/compose/foundation/ScrollState;->setViewportSize$foundation_release(I)V +Landroidx/compose/foundation/ScrollState$Companion; +HSPLandroidx/compose/foundation/ScrollState$Companion;->()V +HSPLandroidx/compose/foundation/ScrollState$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/ScrollState$Companion;->getSaver()Landroidx/compose/runtime/saveable/Saver; +Landroidx/compose/foundation/ScrollState$Companion$Saver$1; +HSPLandroidx/compose/foundation/ScrollState$Companion$Saver$1;->()V +HSPLandroidx/compose/foundation/ScrollState$Companion$Saver$1;->()V +HSPLandroidx/compose/foundation/ScrollState$Companion$Saver$1;->invoke(Landroidx/compose/runtime/saveable/SaverScope;Landroidx/compose/foundation/ScrollState;)Ljava/lang/Integer; +HSPLandroidx/compose/foundation/ScrollState$Companion$Saver$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/ScrollState$Companion$Saver$2; +HSPLandroidx/compose/foundation/ScrollState$Companion$Saver$2;->()V +HSPLandroidx/compose/foundation/ScrollState$Companion$Saver$2;->()V +Landroidx/compose/foundation/ScrollState$canScrollBackward$2; +HSPLandroidx/compose/foundation/ScrollState$canScrollBackward$2;->(Landroidx/compose/foundation/ScrollState;)V +Landroidx/compose/foundation/ScrollState$canScrollForward$2; +HSPLandroidx/compose/foundation/ScrollState$canScrollForward$2;->(Landroidx/compose/foundation/ScrollState;)V +Landroidx/compose/foundation/ScrollState$scrollableState$1; +HSPLandroidx/compose/foundation/ScrollState$scrollableState$1;->(Landroidx/compose/foundation/ScrollState;)V +Landroidx/compose/foundation/ScrollingLayoutElement; +HSPLandroidx/compose/foundation/ScrollingLayoutElement;->(Landroidx/compose/foundation/ScrollState;ZZ)V +HSPLandroidx/compose/foundation/ScrollingLayoutElement;->create()Landroidx/compose/foundation/ScrollingLayoutNode; +HSPLandroidx/compose/foundation/ScrollingLayoutElement;->create()Landroidx/compose/ui/Modifier$Node; +Landroidx/compose/foundation/ScrollingLayoutNode; +HSPLandroidx/compose/foundation/ScrollingLayoutNode;->(Landroidx/compose/foundation/ScrollState;ZZ)V +HSPLandroidx/compose/foundation/ScrollingLayoutNode;->getScrollerState()Landroidx/compose/foundation/ScrollState; +HSPLandroidx/compose/foundation/ScrollingLayoutNode;->isReversed()Z +HSPLandroidx/compose/foundation/ScrollingLayoutNode;->isVertical()Z +HSPLandroidx/compose/foundation/ScrollingLayoutNode;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/ScrollingLayoutNode$measure$1; +HSPLandroidx/compose/foundation/ScrollingLayoutNode$measure$1;->(Landroidx/compose/foundation/ScrollingLayoutNode;ILandroidx/compose/ui/layout/Placeable;)V +HSPLandroidx/compose/foundation/ScrollingLayoutNode$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/ScrollingLayoutNode$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/AndroidConfig; +HSPLandroidx/compose/foundation/gestures/AndroidConfig;->()V +HSPLandroidx/compose/foundation/gestures/AndroidConfig;->()V +Landroidx/compose/foundation/gestures/AndroidScrollable_androidKt; +HSPLandroidx/compose/foundation/gestures/AndroidScrollable_androidKt;->platformScrollConfig(Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/gestures/ScrollConfig; +Landroidx/compose/foundation/gestures/BringIntoViewRequestPriorityQueue; +HSPLandroidx/compose/foundation/gestures/BringIntoViewRequestPriorityQueue;->()V +Landroidx/compose/foundation/gestures/ContentInViewModifier; +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier;->(Lkotlinx/coroutines/CoroutineScope;Landroidx/compose/foundation/gestures/Orientation;Landroidx/compose/foundation/gestures/ScrollableState;Z)V +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier;->access$setFocusedChild$p(Landroidx/compose/foundation/gestures/ContentInViewModifier;Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier;->bringChildIntoView(Lkotlin/jvm/functions/Function0;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier;->calculateRectForParent(Landroidx/compose/ui/geometry/Rect;)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier;->compareTo-TemP2vQ(JJ)I +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier;->computeDestination-O0kMr_c(Landroidx/compose/ui/geometry/Rect;J)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier;->getFocusedChildBounds()Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier;->getModifier()Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier;->isMaxVisible-O0kMr_c$default(Landroidx/compose/foundation/gestures/ContentInViewModifier;Landroidx/compose/ui/geometry/Rect;JILjava/lang/Object;)Z +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier;->isMaxVisible-O0kMr_c(Landroidx/compose/ui/geometry/Rect;J)Z +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier;->onPlaced(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier;->onRemeasured-ozmzZPI(J)V +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier;->relocationDistance(FFF)F +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier;->relocationOffset-BMxPBkI(Landroidx/compose/ui/geometry/Rect;J)J +Landroidx/compose/foundation/gestures/ContentInViewModifier$Request; +Landroidx/compose/foundation/gestures/ContentInViewModifier$WhenMappings; +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier$WhenMappings;->()V +Landroidx/compose/foundation/gestures/ContentInViewModifier$modifier$1; +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier$modifier$1;->(Landroidx/compose/foundation/gestures/ContentInViewModifier;)V +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier$modifier$1;->invoke(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier$modifier$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/DefaultDraggableState; +HSPLandroidx/compose/foundation/gestures/DefaultDraggableState;->(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/foundation/gestures/DefaultDraggableState$dragScope$1; +HSPLandroidx/compose/foundation/gestures/DefaultDraggableState$dragScope$1;->(Landroidx/compose/foundation/gestures/DefaultDraggableState;)V +Landroidx/compose/foundation/gestures/DefaultFlingBehavior; +HSPLandroidx/compose/foundation/gestures/DefaultFlingBehavior;->(Landroidx/compose/animation/core/DecayAnimationSpec;Landroidx/compose/ui/MotionDurationScale;)V +HSPLandroidx/compose/foundation/gestures/DefaultFlingBehavior;->(Landroidx/compose/animation/core/DecayAnimationSpec;Landroidx/compose/ui/MotionDurationScale;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/foundation/gestures/DefaultScrollableState; +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState;->access$getScrollMutex$p(Landroidx/compose/foundation/gestures/DefaultScrollableState;)Landroidx/compose/foundation/MutatorMutex; +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState;->access$getScrollScope$p(Landroidx/compose/foundation/gestures/DefaultScrollableState;)Landroidx/compose/foundation/gestures/ScrollScope; +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState;->access$isScrollingState$p(Landroidx/compose/foundation/gestures/DefaultScrollableState;)Landroidx/compose/runtime/MutableState; +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState;->isScrollInProgress()Z +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState;->scroll(Landroidx/compose/foundation/MutatePriority;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2; +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2;->(Landroidx/compose/foundation/gestures/DefaultScrollableState;Landroidx/compose/foundation/MutatePriority;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2$1; +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2$1;->(Landroidx/compose/foundation/gestures/DefaultScrollableState;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2$1;->invoke(Landroidx/compose/foundation/gestures/ScrollScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/DefaultScrollableState$scrollScope$1; +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState$scrollScope$1;->(Landroidx/compose/foundation/gestures/DefaultScrollableState;)V +Landroidx/compose/foundation/gestures/DragGestureDetectorKt; +HSPLandroidx/compose/foundation/gestures/DragGestureDetectorKt;->()V +HSPLandroidx/compose/foundation/gestures/DragGestureDetectorKt;->access$isPointerUp-DmW0f2w(Landroidx/compose/ui/input/pointer/PointerEvent;J)Z +HSPLandroidx/compose/foundation/gestures/DragGestureDetectorKt;->isPointerUp-DmW0f2w(Landroidx/compose/ui/input/pointer/PointerEvent;J)Z +HSPLandroidx/compose/foundation/gestures/DragGestureDetectorKt;->pointerSlop-E8SPZFQ(Landroidx/compose/ui/platform/ViewConfiguration;I)F +HSPLandroidx/compose/foundation/gestures/DragGestureDetectorKt;->toPointerDirectionConfig(Landroidx/compose/foundation/gestures/Orientation;)Landroidx/compose/foundation/gestures/PointerDirectionConfig; +Landroidx/compose/foundation/gestures/DragGestureDetectorKt$HorizontalPointerDirectionConfig$1; +HSPLandroidx/compose/foundation/gestures/DragGestureDetectorKt$HorizontalPointerDirectionConfig$1;->()V +Landroidx/compose/foundation/gestures/DragGestureDetectorKt$VerticalPointerDirectionConfig$1; +HSPLandroidx/compose/foundation/gestures/DragGestureDetectorKt$VerticalPointerDirectionConfig$1;->()V +Landroidx/compose/foundation/gestures/DragScope; +Landroidx/compose/foundation/gestures/DraggableElement; +HSPLandroidx/compose/foundation/gestures/DraggableElement;->(Landroidx/compose/foundation/gestures/DraggableState;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/gestures/Orientation;ZLandroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Z)V +HSPLandroidx/compose/foundation/gestures/DraggableElement;->create()Landroidx/compose/foundation/gestures/DraggableNode; +HSPLandroidx/compose/foundation/gestures/DraggableElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/gestures/DraggableElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/gestures/DraggableElement;->update(Landroidx/compose/foundation/gestures/DraggableNode;)V +HSPLandroidx/compose/foundation/gestures/DraggableElement;->update(Landroidx/compose/ui/Modifier$Node;)V +Landroidx/compose/foundation/gestures/DraggableKt; +HSPLandroidx/compose/foundation/gestures/DraggableKt;->DraggableState(Lkotlin/jvm/functions/Function1;)Landroidx/compose/foundation/gestures/DraggableState; +HSPLandroidx/compose/foundation/gestures/DraggableKt;->access$awaitDownAndSlop(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/input/pointer/util/VelocityTracker;Landroidx/compose/foundation/gestures/Orientation;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/DraggableKt;->awaitDownAndSlop(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/input/pointer/util/VelocityTracker;Landroidx/compose/foundation/gestures/Orientation;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/DraggableKt;->draggable$default(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/gestures/DraggableState;Landroidx/compose/foundation/gestures/Orientation;ZLandroidx/compose/foundation/interaction/MutableInteractionSource;ZLkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;ZILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/gestures/DraggableKt;->draggable(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/gestures/DraggableState;Landroidx/compose/foundation/gestures/Orientation;ZLandroidx/compose/foundation/interaction/MutableInteractionSource;ZLkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Z)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/gestures/DraggableKt;->rememberDraggableState(Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/gestures/DraggableState; +Landroidx/compose/foundation/gestures/DraggableKt$awaitDownAndSlop$1; +HSPLandroidx/compose/foundation/gestures/DraggableKt$awaitDownAndSlop$1;->(Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/DraggableKt$awaitDownAndSlop$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/DraggableKt$awaitDownAndSlop$postPointerSlop$1; +HSPLandroidx/compose/foundation/gestures/DraggableKt$awaitDownAndSlop$postPointerSlop$1;->(Landroidx/compose/ui/input/pointer/util/VelocityTracker;Lkotlin/jvm/internal/Ref$LongRef;)V +Landroidx/compose/foundation/gestures/DraggableKt$draggable$3; +HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$3;->()V +HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$3;->()V +Landroidx/compose/foundation/gestures/DraggableKt$draggable$4; +HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$4;->(Z)V +Landroidx/compose/foundation/gestures/DraggableKt$draggable$5; +HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$5;->(Lkotlin/jvm/functions/Function3;Landroidx/compose/foundation/gestures/Orientation;Lkotlin/coroutines/Continuation;)V +Landroidx/compose/foundation/gestures/DraggableKt$rememberDraggableState$1$1; +HSPLandroidx/compose/foundation/gestures/DraggableKt$rememberDraggableState$1$1;->(Landroidx/compose/runtime/State;)V +Landroidx/compose/foundation/gestures/DraggableNode; +HSPLandroidx/compose/foundation/gestures/DraggableNode;->(Landroidx/compose/foundation/gestures/DraggableState;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/gestures/Orientation;ZLandroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Z)V +HSPLandroidx/compose/foundation/gestures/DraggableNode;->access$getCanDrag$p(Landroidx/compose/foundation/gestures/DraggableNode;)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/foundation/gestures/DraggableNode;->access$getChannel$p(Landroidx/compose/foundation/gestures/DraggableNode;)Lkotlinx/coroutines/channels/Channel; +HSPLandroidx/compose/foundation/gestures/DraggableNode;->access$getEnabled$p(Landroidx/compose/foundation/gestures/DraggableNode;)Z +HSPLandroidx/compose/foundation/gestures/DraggableNode;->access$getOrientation$p(Landroidx/compose/foundation/gestures/DraggableNode;)Landroidx/compose/foundation/gestures/Orientation; +HSPLandroidx/compose/foundation/gestures/DraggableNode;->access$getStartDragImmediately$p(Landroidx/compose/foundation/gestures/DraggableNode;)Lkotlin/jvm/functions/Function0; +HSPLandroidx/compose/foundation/gestures/DraggableNode;->access$getVelocityTracker$p(Landroidx/compose/foundation/gestures/DraggableNode;)Landroidx/compose/ui/input/pointer/util/VelocityTracker; +HSPLandroidx/compose/foundation/gestures/DraggableNode;->access$get_canDrag$p(Landroidx/compose/foundation/gestures/DraggableNode;)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/foundation/gestures/DraggableNode;->access$get_startDragImmediately$p(Landroidx/compose/foundation/gestures/DraggableNode;)Lkotlin/jvm/functions/Function0; +HSPLandroidx/compose/foundation/gestures/DraggableNode;->disposeInteractionSource()V +HSPLandroidx/compose/foundation/gestures/DraggableNode;->onDetach()V +HSPLandroidx/compose/foundation/gestures/DraggableNode;->onPointerEvent-H0pRuoY(Landroidx/compose/ui/input/pointer/PointerEvent;Landroidx/compose/ui/input/pointer/PointerEventPass;J)V +HSPLandroidx/compose/foundation/gestures/DraggableNode;->update(Landroidx/compose/foundation/gestures/DraggableState;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/gestures/Orientation;ZLandroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Z)V +Landroidx/compose/foundation/gestures/DraggableNode$_canDrag$1; +HSPLandroidx/compose/foundation/gestures/DraggableNode$_canDrag$1;->(Landroidx/compose/foundation/gestures/DraggableNode;)V +HSPLandroidx/compose/foundation/gestures/DraggableNode$_canDrag$1;->invoke(Landroidx/compose/ui/input/pointer/PointerInputChange;)Ljava/lang/Boolean; +HSPLandroidx/compose/foundation/gestures/DraggableNode$_canDrag$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/DraggableNode$_startDragImmediately$1; +HSPLandroidx/compose/foundation/gestures/DraggableNode$_startDragImmediately$1;->(Landroidx/compose/foundation/gestures/DraggableNode;)V +HSPLandroidx/compose/foundation/gestures/DraggableNode$_startDragImmediately$1;->invoke()Ljava/lang/Boolean; +HSPLandroidx/compose/foundation/gestures/DraggableNode$_startDragImmediately$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1; +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1;->(Landroidx/compose/foundation/gestures/DraggableNode;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1;->invoke(Landroidx/compose/ui/input/pointer/PointerInputScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1$1; +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1$1;->(Landroidx/compose/ui/input/pointer/PointerInputScope;Landroidx/compose/foundation/gestures/DraggableNode;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1$1$1; +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1$1$1;->(Landroidx/compose/foundation/gestures/DraggableNode;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1$1$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1$1$2; +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1$1$2;->(Lkotlinx/coroutines/CoroutineScope;Landroidx/compose/foundation/gestures/DraggableNode;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1$1$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1$1$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/DraggableState; +Landroidx/compose/foundation/gestures/FlingBehavior; +Landroidx/compose/foundation/gestures/ForEachGestureKt; +HSPLandroidx/compose/foundation/gestures/ForEachGestureKt;->allPointersUp(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;)Z +HSPLandroidx/compose/foundation/gestures/ForEachGestureKt;->awaitAllPointersUp(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/ForEachGestureKt;->awaitEachGesture(Landroidx/compose/ui/input/pointer/PointerInputScope;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/ForEachGestureKt$awaitAllPointersUp$3; +HSPLandroidx/compose/foundation/gestures/ForEachGestureKt$awaitAllPointersUp$3;->(Lkotlin/coroutines/Continuation;)V +Landroidx/compose/foundation/gestures/ForEachGestureKt$awaitEachGesture$2; +HSPLandroidx/compose/foundation/gestures/ForEachGestureKt$awaitEachGesture$2;->(Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/ForEachGestureKt$awaitEachGesture$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/gestures/ForEachGestureKt$awaitEachGesture$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/ModifierLocalScrollableContainerProvider; +HSPLandroidx/compose/foundation/gestures/ModifierLocalScrollableContainerProvider;->()V +HSPLandroidx/compose/foundation/gestures/ModifierLocalScrollableContainerProvider;->()V +HSPLandroidx/compose/foundation/gestures/ModifierLocalScrollableContainerProvider;->getKey()Landroidx/compose/ui/modifier/ProvidableModifierLocal; +HSPLandroidx/compose/foundation/gestures/ModifierLocalScrollableContainerProvider;->getValue()Ljava/lang/Boolean; +HSPLandroidx/compose/foundation/gestures/ModifierLocalScrollableContainerProvider;->getValue()Ljava/lang/Object; +Landroidx/compose/foundation/gestures/MouseWheelScrollElement; +HSPLandroidx/compose/foundation/gestures/MouseWheelScrollElement;->(Landroidx/compose/runtime/State;Landroidx/compose/foundation/gestures/ScrollConfig;)V +HSPLandroidx/compose/foundation/gestures/MouseWheelScrollElement;->create()Landroidx/compose/foundation/gestures/MouseWheelScrollNode; +HSPLandroidx/compose/foundation/gestures/MouseWheelScrollElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/gestures/MouseWheelScrollElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/gestures/MouseWheelScrollNode; +HSPLandroidx/compose/foundation/gestures/MouseWheelScrollNode;->(Landroidx/compose/runtime/State;Landroidx/compose/foundation/gestures/ScrollConfig;)V +HSPLandroidx/compose/foundation/gestures/MouseWheelScrollNode;->onPointerEvent-H0pRuoY(Landroidx/compose/ui/input/pointer/PointerEvent;Landroidx/compose/ui/input/pointer/PointerEventPass;J)V +Landroidx/compose/foundation/gestures/MouseWheelScrollNode$pointerInputNode$1; +HSPLandroidx/compose/foundation/gestures/MouseWheelScrollNode$pointerInputNode$1;->(Landroidx/compose/foundation/gestures/MouseWheelScrollNode;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/MouseWheelScrollNode$pointerInputNode$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/gestures/MouseWheelScrollNode$pointerInputNode$1;->invoke(Landroidx/compose/ui/input/pointer/PointerInputScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/MouseWheelScrollNode$pointerInputNode$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/MouseWheelScrollNode$pointerInputNode$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/MouseWheelScrollNode$pointerInputNode$1$1; +HSPLandroidx/compose/foundation/gestures/MouseWheelScrollNode$pointerInputNode$1$1;->(Landroidx/compose/foundation/gestures/MouseWheelScrollNode;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/MouseWheelScrollNode$pointerInputNode$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/gestures/MouseWheelScrollNode$pointerInputNode$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/Orientation; +HSPLandroidx/compose/foundation/gestures/Orientation;->$values()[Landroidx/compose/foundation/gestures/Orientation; +HSPLandroidx/compose/foundation/gestures/Orientation;->()V +HSPLandroidx/compose/foundation/gestures/Orientation;->(Ljava/lang/String;I)V +HSPLandroidx/compose/foundation/gestures/Orientation;->values()[Landroidx/compose/foundation/gestures/Orientation; +Landroidx/compose/foundation/gestures/PointerDirectionConfig; +Landroidx/compose/foundation/gestures/PressGestureScope; +Landroidx/compose/foundation/gestures/PressGestureScopeImpl; +HSPLandroidx/compose/foundation/gestures/PressGestureScopeImpl;->(Landroidx/compose/ui/unit/Density;)V +HSPLandroidx/compose/foundation/gestures/PressGestureScopeImpl;->release()V +HSPLandroidx/compose/foundation/gestures/PressGestureScopeImpl;->reset(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/PressGestureScopeImpl;->tryAwaitRelease(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/PressGestureScopeImpl$reset$1; +HSPLandroidx/compose/foundation/gestures/PressGestureScopeImpl$reset$1;->(Landroidx/compose/foundation/gestures/PressGestureScopeImpl;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/PressGestureScopeImpl$reset$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/PressGestureScopeImpl$tryAwaitRelease$1; +HSPLandroidx/compose/foundation/gestures/PressGestureScopeImpl$tryAwaitRelease$1;->(Landroidx/compose/foundation/gestures/PressGestureScopeImpl;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/PressGestureScopeImpl$tryAwaitRelease$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/ScrollConfig; +Landroidx/compose/foundation/gestures/ScrollDraggableState; +HSPLandroidx/compose/foundation/gestures/ScrollDraggableState;->(Landroidx/compose/runtime/State;)V +Landroidx/compose/foundation/gestures/ScrollScope; +Landroidx/compose/foundation/gestures/ScrollableDefaults; +HSPLandroidx/compose/foundation/gestures/ScrollableDefaults;->()V +HSPLandroidx/compose/foundation/gestures/ScrollableDefaults;->()V +HSPLandroidx/compose/foundation/gestures/ScrollableDefaults;->flingBehavior(Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/gestures/FlingBehavior; +HSPLandroidx/compose/foundation/gestures/ScrollableDefaults;->overscrollEffect(Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/OverscrollEffect; +HSPLandroidx/compose/foundation/gestures/ScrollableDefaults;->reverseDirection(Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/foundation/gestures/Orientation;Z)Z +Landroidx/compose/foundation/gestures/ScrollableKt; +HSPLandroidx/compose/foundation/gestures/ScrollableKt;->()V +HSPLandroidx/compose/foundation/gestures/ScrollableKt;->access$awaitScrollEvent(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/ScrollableKt;->access$getNoOpScrollScope$p()Landroidx/compose/foundation/gestures/ScrollScope; +HSPLandroidx/compose/foundation/gestures/ScrollableKt;->access$pointerScrollable(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/gestures/Orientation;ZLandroidx/compose/foundation/gestures/ScrollableState;Landroidx/compose/foundation/gestures/FlingBehavior;Landroidx/compose/foundation/OverscrollEffect;ZLandroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/gestures/ScrollableKt;->access$scrollableNestedScrollConnection(Landroidx/compose/runtime/State;Z)Landroidx/compose/ui/input/nestedscroll/NestedScrollConnection; +HSPLandroidx/compose/foundation/gestures/ScrollableKt;->awaitScrollEvent(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/ScrollableKt;->getDefaultScrollMotionDurationScale()Landroidx/compose/ui/MotionDurationScale; +HSPLandroidx/compose/foundation/gestures/ScrollableKt;->getModifierLocalScrollableContainer()Landroidx/compose/ui/modifier/ProvidableModifierLocal; +HSPLandroidx/compose/foundation/gestures/ScrollableKt;->pointerScrollable(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/gestures/Orientation;ZLandroidx/compose/foundation/gestures/ScrollableState;Landroidx/compose/foundation/gestures/FlingBehavior;Landroidx/compose/foundation/OverscrollEffect;ZLandroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/gestures/ScrollableKt;->scrollable$default(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/gestures/ScrollableState;Landroidx/compose/foundation/gestures/Orientation;ZZLandroidx/compose/foundation/gestures/FlingBehavior;Landroidx/compose/foundation/interaction/MutableInteractionSource;ILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/gestures/ScrollableKt;->scrollable(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/gestures/ScrollableState;Landroidx/compose/foundation/gestures/Orientation;Landroidx/compose/foundation/OverscrollEffect;ZZLandroidx/compose/foundation/gestures/FlingBehavior;Landroidx/compose/foundation/interaction/MutableInteractionSource;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/gestures/ScrollableKt;->scrollable(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/gestures/ScrollableState;Landroidx/compose/foundation/gestures/Orientation;ZZLandroidx/compose/foundation/gestures/FlingBehavior;Landroidx/compose/foundation/interaction/MutableInteractionSource;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/gestures/ScrollableKt;->scrollableNestedScrollConnection(Landroidx/compose/runtime/State;Z)Landroidx/compose/ui/input/nestedscroll/NestedScrollConnection; +Landroidx/compose/foundation/gestures/ScrollableKt$DefaultScrollMotionDurationScale$1; +HSPLandroidx/compose/foundation/gestures/ScrollableKt$DefaultScrollMotionDurationScale$1;->()V +Landroidx/compose/foundation/gestures/ScrollableKt$ModifierLocalScrollableContainer$1; +HSPLandroidx/compose/foundation/gestures/ScrollableKt$ModifierLocalScrollableContainer$1;->()V +HSPLandroidx/compose/foundation/gestures/ScrollableKt$ModifierLocalScrollableContainer$1;->()V +Landroidx/compose/foundation/gestures/ScrollableKt$NoOpOnDragStarted$1; +HSPLandroidx/compose/foundation/gestures/ScrollableKt$NoOpOnDragStarted$1;->(Lkotlin/coroutines/Continuation;)V +Landroidx/compose/foundation/gestures/ScrollableKt$NoOpScrollScope$1; +HSPLandroidx/compose/foundation/gestures/ScrollableKt$NoOpScrollScope$1;->()V +Landroidx/compose/foundation/gestures/ScrollableKt$awaitScrollEvent$1; +HSPLandroidx/compose/foundation/gestures/ScrollableKt$awaitScrollEvent$1;->(Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/ScrollableKt$awaitScrollEvent$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$1; +HSPLandroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$1;->()V +HSPLandroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$1;->()V +HSPLandroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$1;->invoke(Landroidx/compose/ui/input/pointer/PointerInputChange;)Ljava/lang/Boolean; +HSPLandroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$2$1; +HSPLandroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$2$1;->(Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$2$1;->invoke()Ljava/lang/Boolean; +HSPLandroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$2$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$3$1; +HSPLandroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$3$1;->(Landroidx/compose/runtime/MutableState;Landroidx/compose/runtime/State;Lkotlin/coroutines/Continuation;)V +Landroidx/compose/foundation/gestures/ScrollableKt$scrollable$2; +HSPLandroidx/compose/foundation/gestures/ScrollableKt$scrollable$2;->(Landroidx/compose/foundation/gestures/Orientation;Landroidx/compose/foundation/gestures/ScrollableState;ZLandroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/gestures/FlingBehavior;Landroidx/compose/foundation/OverscrollEffect;Z)V +HSPLandroidx/compose/foundation/gestures/ScrollableKt$scrollable$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/gestures/ScrollableKt$scrollable$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/ScrollableKt$scrollableNestedScrollConnection$1; +HSPLandroidx/compose/foundation/gestures/ScrollableKt$scrollableNestedScrollConnection$1;->(Landroidx/compose/runtime/State;Z)V +Landroidx/compose/foundation/gestures/ScrollableState; +HSPLandroidx/compose/foundation/gestures/ScrollableState;->scroll$default(Landroidx/compose/foundation/gestures/ScrollableState;Landroidx/compose/foundation/MutatePriority;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/ScrollableStateKt; +HSPLandroidx/compose/foundation/gestures/ScrollableStateKt;->ScrollableState(Lkotlin/jvm/functions/Function1;)Landroidx/compose/foundation/gestures/ScrollableState; +HSPLandroidx/compose/foundation/gestures/ScrollableStateKt;->rememberScrollableState(Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/gestures/ScrollableState; +Landroidx/compose/foundation/gestures/ScrollableStateKt$rememberScrollableState$1$1; +HSPLandroidx/compose/foundation/gestures/ScrollableStateKt$rememberScrollableState$1$1;->(Landroidx/compose/runtime/State;)V +Landroidx/compose/foundation/gestures/ScrollingLogic; +HSPLandroidx/compose/foundation/gestures/ScrollingLogic;->(Landroidx/compose/foundation/gestures/Orientation;ZLandroidx/compose/runtime/State;Landroidx/compose/foundation/gestures/ScrollableState;Landroidx/compose/foundation/gestures/FlingBehavior;Landroidx/compose/foundation/OverscrollEffect;)V +HSPLandroidx/compose/foundation/gestures/ScrollingLogic;->shouldScrollImmediately()Z +Landroidx/compose/foundation/gestures/TapGestureDetectorKt; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt;->()V +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt;->access$getNoPressGesture$p()Lkotlin/jvm/functions/Function3; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt;->awaitFirstDown$default(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;ZLandroidx/compose/ui/input/pointer/PointerEventPass;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt;->awaitFirstDown(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;ZLandroidx/compose/ui/input/pointer/PointerEventPass;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt;->detectTapAndPress(Landroidx/compose/ui/input/pointer/PointerInputScope;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt;->waitForUpOrCancellation$default(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Landroidx/compose/ui/input/pointer/PointerEventPass;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt;->waitForUpOrCancellation(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Landroidx/compose/ui/input/pointer/PointerEventPass;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/TapGestureDetectorKt$NoPressGesture$1; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$NoPressGesture$1;->(Lkotlin/coroutines/Continuation;)V +Landroidx/compose/foundation/gestures/TapGestureDetectorKt$awaitFirstDown$2; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$awaitFirstDown$2;->(Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$awaitFirstDown$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2;->(Landroidx/compose/ui/input/pointer/PointerInputScope;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/gestures/PressGestureScopeImpl;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1;->(Lkotlinx/coroutines/CoroutineScope;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/gestures/PressGestureScopeImpl;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1;->invoke(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$1; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$1;->(Landroidx/compose/foundation/gestures/PressGestureScopeImpl;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$2; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$2;->(Lkotlin/jvm/functions/Function3;Landroidx/compose/foundation/gestures/PressGestureScopeImpl;Landroidx/compose/ui/input/pointer/PointerInputChange;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$4; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$4;->(Landroidx/compose/foundation/gestures/PressGestureScopeImpl;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$4;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$4;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/TapGestureDetectorKt$waitForUpOrCancellation$2; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$waitForUpOrCancellation$2;->(Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$waitForUpOrCancellation$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/UpdatableAnimationState; +HSPLandroidx/compose/foundation/gestures/UpdatableAnimationState;->()V +HSPLandroidx/compose/foundation/gestures/UpdatableAnimationState;->()V +Landroidx/compose/foundation/gestures/UpdatableAnimationState$Companion; +HSPLandroidx/compose/foundation/gestures/UpdatableAnimationState$Companion;->()V +HSPLandroidx/compose/foundation/gestures/UpdatableAnimationState$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/foundation/interaction/FocusInteraction; +Landroidx/compose/foundation/interaction/FocusInteraction$Focus; +HSPLandroidx/compose/foundation/interaction/FocusInteraction$Focus;->()V +HSPLandroidx/compose/foundation/interaction/FocusInteraction$Focus;->()V +Landroidx/compose/foundation/interaction/FocusInteraction$Unfocus; +HSPLandroidx/compose/foundation/interaction/FocusInteraction$Unfocus;->()V +PLandroidx/compose/foundation/interaction/FocusInteraction$Unfocus;->(Landroidx/compose/foundation/interaction/FocusInteraction$Focus;)V +Landroidx/compose/foundation/interaction/FocusInteractionKt; +HSPLandroidx/compose/foundation/interaction/FocusInteractionKt;->collectIsFocusedAsState(Landroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +Landroidx/compose/foundation/interaction/FocusInteractionKt$collectIsFocusedAsState$1$1; +HSPLandroidx/compose/foundation/interaction/FocusInteractionKt$collectIsFocusedAsState$1$1;->(Landroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/runtime/MutableState;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/interaction/FocusInteractionKt$collectIsFocusedAsState$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/interaction/FocusInteractionKt$collectIsFocusedAsState$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/interaction/FocusInteractionKt$collectIsFocusedAsState$1$1$1; +HSPLandroidx/compose/foundation/interaction/FocusInteractionKt$collectIsFocusedAsState$1$1$1;->(Ljava/util/List;Landroidx/compose/runtime/MutableState;)V +HSPLandroidx/compose/foundation/interaction/FocusInteractionKt$collectIsFocusedAsState$1$1$1;->emit(Landroidx/compose/foundation/interaction/Interaction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/interaction/FocusInteractionKt$collectIsFocusedAsState$1$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/foundation/interaction/HoverInteraction; +Landroidx/compose/foundation/interaction/HoverInteraction$Enter; +Landroidx/compose/foundation/interaction/HoverInteraction$Exit; +Landroidx/compose/foundation/interaction/Interaction; +Landroidx/compose/foundation/interaction/InteractionSource; +Landroidx/compose/foundation/interaction/InteractionSourceKt; +HSPLandroidx/compose/foundation/interaction/InteractionSourceKt;->MutableInteractionSource()Landroidx/compose/foundation/interaction/MutableInteractionSource; +Landroidx/compose/foundation/interaction/MutableInteractionSource; +Landroidx/compose/foundation/interaction/MutableInteractionSourceImpl; +HSPLandroidx/compose/foundation/interaction/MutableInteractionSourceImpl;->()V +HSPLandroidx/compose/foundation/interaction/MutableInteractionSourceImpl;->emit(Landroidx/compose/foundation/interaction/Interaction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/interaction/MutableInteractionSourceImpl;->getInteractions()Lkotlinx/coroutines/flow/Flow; +HSPLandroidx/compose/foundation/interaction/MutableInteractionSourceImpl;->getInteractions()Lkotlinx/coroutines/flow/MutableSharedFlow; +HSPLandroidx/compose/foundation/interaction/MutableInteractionSourceImpl;->tryEmit(Landroidx/compose/foundation/interaction/Interaction;)Z +Landroidx/compose/foundation/interaction/PressInteraction; +Landroidx/compose/foundation/interaction/PressInteraction$Press; +HSPLandroidx/compose/foundation/interaction/PressInteraction$Press;->()V +HSPLandroidx/compose/foundation/interaction/PressInteraction$Press;->(J)V +HSPLandroidx/compose/foundation/interaction/PressInteraction$Press;->(JLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/interaction/PressInteraction$Press;->getPressPosition-F1C5BW0()J +Landroidx/compose/foundation/interaction/PressInteraction$Release; +HSPLandroidx/compose/foundation/interaction/PressInteraction$Release;->()V +HSPLandroidx/compose/foundation/interaction/PressInteraction$Release;->(Landroidx/compose/foundation/interaction/PressInteraction$Press;)V +HSPLandroidx/compose/foundation/interaction/PressInteraction$Release;->getPress()Landroidx/compose/foundation/interaction/PressInteraction$Press; +Landroidx/compose/foundation/layout/AddedInsets; +HSPLandroidx/compose/foundation/layout/AddedInsets;->(Landroidx/compose/foundation/layout/WindowInsets;Landroidx/compose/foundation/layout/WindowInsets;)V +HSPLandroidx/compose/foundation/layout/AddedInsets;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/layout/AddedInsets;->getBottom(Landroidx/compose/ui/unit/Density;)I +HSPLandroidx/compose/foundation/layout/AddedInsets;->getLeft(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/foundation/layout/AddedInsets;->getRight(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/foundation/layout/AddedInsets;->getTop(Landroidx/compose/ui/unit/Density;)I +Landroidx/compose/foundation/layout/AndroidWindowInsets; +HSPLandroidx/compose/foundation/layout/AndroidWindowInsets;->(ILjava/lang/String;)V +HSPLandroidx/compose/foundation/layout/AndroidWindowInsets;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/layout/AndroidWindowInsets;->getBottom(Landroidx/compose/ui/unit/Density;)I +HSPLandroidx/compose/foundation/layout/AndroidWindowInsets;->getInsets$foundation_layout_release()Landroidx/core/graphics/Insets; +HSPLandroidx/compose/foundation/layout/AndroidWindowInsets;->getLeft(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/foundation/layout/AndroidWindowInsets;->getRight(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/foundation/layout/AndroidWindowInsets;->getTop(Landroidx/compose/ui/unit/Density;)I +HSPLandroidx/compose/foundation/layout/AndroidWindowInsets;->setInsets$foundation_layout_release(Landroidx/core/graphics/Insets;)V +HSPLandroidx/compose/foundation/layout/AndroidWindowInsets;->setVisible(Z)V +HSPLandroidx/compose/foundation/layout/AndroidWindowInsets;->update$foundation_layout_release(Landroidx/core/view/WindowInsetsCompat;I)V +Landroidx/compose/foundation/layout/Arrangement; +HSPLandroidx/compose/foundation/layout/Arrangement;->()V +HSPLandroidx/compose/foundation/layout/Arrangement;->()V +HSPLandroidx/compose/foundation/layout/Arrangement;->getCenter()Landroidx/compose/foundation/layout/Arrangement$HorizontalOrVertical; +HSPLandroidx/compose/foundation/layout/Arrangement;->getEnd()Landroidx/compose/foundation/layout/Arrangement$Horizontal; +HSPLandroidx/compose/foundation/layout/Arrangement;->getSpaceBetween()Landroidx/compose/foundation/layout/Arrangement$HorizontalOrVertical; +HSPLandroidx/compose/foundation/layout/Arrangement;->getStart()Landroidx/compose/foundation/layout/Arrangement$Horizontal; +HSPLandroidx/compose/foundation/layout/Arrangement;->getTop()Landroidx/compose/foundation/layout/Arrangement$Vertical; +HSPLandroidx/compose/foundation/layout/Arrangement;->placeCenter$foundation_layout_release(I[I[IZ)V +HSPLandroidx/compose/foundation/layout/Arrangement;->placeLeftOrTop$foundation_layout_release([I[IZ)V +HSPLandroidx/compose/foundation/layout/Arrangement;->placeRightOrBottom$foundation_layout_release(I[I[IZ)V +HSPLandroidx/compose/foundation/layout/Arrangement;->placeSpaceBetween$foundation_layout_release(I[I[IZ)V +HSPLandroidx/compose/foundation/layout/Arrangement;->spacedBy-0680j_4(F)Landroidx/compose/foundation/layout/Arrangement$HorizontalOrVertical; +Landroidx/compose/foundation/layout/Arrangement$Bottom$1; +HSPLandroidx/compose/foundation/layout/Arrangement$Bottom$1;->()V +Landroidx/compose/foundation/layout/Arrangement$Center$1; +HSPLandroidx/compose/foundation/layout/Arrangement$Center$1;->()V +HSPLandroidx/compose/foundation/layout/Arrangement$Center$1;->arrange(Landroidx/compose/ui/unit/Density;I[ILandroidx/compose/ui/unit/LayoutDirection;[I)V +HSPLandroidx/compose/foundation/layout/Arrangement$Center$1;->arrange(Landroidx/compose/ui/unit/Density;I[I[I)V +HSPLandroidx/compose/foundation/layout/Arrangement$Center$1;->getSpacing-D9Ej5fM()F +Landroidx/compose/foundation/layout/Arrangement$End$1; +HSPLandroidx/compose/foundation/layout/Arrangement$End$1;->()V +HSPLandroidx/compose/foundation/layout/Arrangement$End$1;->arrange(Landroidx/compose/ui/unit/Density;I[ILandroidx/compose/ui/unit/LayoutDirection;[I)V +Landroidx/compose/foundation/layout/Arrangement$Horizontal; +HSPLandroidx/compose/foundation/layout/Arrangement$Horizontal;->getSpacing-D9Ej5fM()F +Landroidx/compose/foundation/layout/Arrangement$HorizontalOrVertical; +Landroidx/compose/foundation/layout/Arrangement$SpaceAround$1; +HSPLandroidx/compose/foundation/layout/Arrangement$SpaceAround$1;->()V +Landroidx/compose/foundation/layout/Arrangement$SpaceBetween$1; +HSPLandroidx/compose/foundation/layout/Arrangement$SpaceBetween$1;->()V +HSPLandroidx/compose/foundation/layout/Arrangement$SpaceBetween$1;->arrange(Landroidx/compose/ui/unit/Density;I[ILandroidx/compose/ui/unit/LayoutDirection;[I)V +HSPLandroidx/compose/foundation/layout/Arrangement$SpaceBetween$1;->getSpacing-D9Ej5fM()F +Landroidx/compose/foundation/layout/Arrangement$SpaceEvenly$1; +HSPLandroidx/compose/foundation/layout/Arrangement$SpaceEvenly$1;->()V +Landroidx/compose/foundation/layout/Arrangement$SpacedAligned; +HSPLandroidx/compose/foundation/layout/Arrangement$SpacedAligned;->(FZLkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/foundation/layout/Arrangement$SpacedAligned;->(FZLkotlin/jvm/functions/Function2;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/Arrangement$SpacedAligned;->arrange(Landroidx/compose/ui/unit/Density;I[ILandroidx/compose/ui/unit/LayoutDirection;[I)V +HSPLandroidx/compose/foundation/layout/Arrangement$SpacedAligned;->arrange(Landroidx/compose/ui/unit/Density;I[I[I)V +HSPLandroidx/compose/foundation/layout/Arrangement$SpacedAligned;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/layout/Arrangement$SpacedAligned;->getSpacing-D9Ej5fM()F +Landroidx/compose/foundation/layout/Arrangement$Start$1; +HSPLandroidx/compose/foundation/layout/Arrangement$Start$1;->()V +HSPLandroidx/compose/foundation/layout/Arrangement$Start$1;->arrange(Landroidx/compose/ui/unit/Density;I[ILandroidx/compose/ui/unit/LayoutDirection;[I)V +Landroidx/compose/foundation/layout/Arrangement$Top$1; +HSPLandroidx/compose/foundation/layout/Arrangement$Top$1;->()V +HSPLandroidx/compose/foundation/layout/Arrangement$Top$1;->arrange(Landroidx/compose/ui/unit/Density;I[I[I)V +Landroidx/compose/foundation/layout/Arrangement$Vertical; +HSPLandroidx/compose/foundation/layout/Arrangement$Vertical;->getSpacing-D9Ej5fM()F +Landroidx/compose/foundation/layout/Arrangement$spacedBy$1; +HSPLandroidx/compose/foundation/layout/Arrangement$spacedBy$1;->()V +HSPLandroidx/compose/foundation/layout/Arrangement$spacedBy$1;->()V +HSPLandroidx/compose/foundation/layout/Arrangement$spacedBy$1;->invoke(ILandroidx/compose/ui/unit/LayoutDirection;)Ljava/lang/Integer; +HSPLandroidx/compose/foundation/layout/Arrangement$spacedBy$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/BoxChildDataElement; +HSPLandroidx/compose/foundation/layout/BoxChildDataElement;->(Landroidx/compose/ui/Alignment;ZLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/layout/BoxChildDataElement;->create()Landroidx/compose/foundation/layout/BoxChildDataNode; +HSPLandroidx/compose/foundation/layout/BoxChildDataElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/layout/BoxChildDataElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/layout/BoxChildDataNode; +HSPLandroidx/compose/foundation/layout/BoxChildDataNode;->(Landroidx/compose/ui/Alignment;Z)V +HSPLandroidx/compose/foundation/layout/BoxChildDataNode;->getAlignment()Landroidx/compose/ui/Alignment; +HSPLandroidx/compose/foundation/layout/BoxChildDataNode;->getMatchParentSize()Z +HSPLandroidx/compose/foundation/layout/BoxChildDataNode;->modifyParentData(Landroidx/compose/ui/unit/Density;Ljava/lang/Object;)Landroidx/compose/foundation/layout/BoxChildDataNode; +HSPLandroidx/compose/foundation/layout/BoxChildDataNode;->modifyParentData(Landroidx/compose/ui/unit/Density;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/BoxKt; +HSPLandroidx/compose/foundation/layout/BoxKt;->()V +HSPLandroidx/compose/foundation/layout/BoxKt;->Box(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/layout/BoxKt;->access$getMatchesParentSize(Landroidx/compose/ui/layout/Measurable;)Z +HSPLandroidx/compose/foundation/layout/BoxKt;->access$placeInBox(Landroidx/compose/ui/layout/Placeable$PlacementScope;Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/layout/Measurable;Landroidx/compose/ui/unit/LayoutDirection;IILandroidx/compose/ui/Alignment;)V +HSPLandroidx/compose/foundation/layout/BoxKt;->boxMeasurePolicy(Landroidx/compose/ui/Alignment;Z)Landroidx/compose/ui/layout/MeasurePolicy; +HSPLandroidx/compose/foundation/layout/BoxKt;->getBoxChildDataNode(Landroidx/compose/ui/layout/Measurable;)Landroidx/compose/foundation/layout/BoxChildDataNode; +HSPLandroidx/compose/foundation/layout/BoxKt;->getMatchesParentSize(Landroidx/compose/ui/layout/Measurable;)Z +HSPLandroidx/compose/foundation/layout/BoxKt;->placeInBox(Landroidx/compose/ui/layout/Placeable$PlacementScope;Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/layout/Measurable;Landroidx/compose/ui/unit/LayoutDirection;IILandroidx/compose/ui/Alignment;)V +HSPLandroidx/compose/foundation/layout/BoxKt;->rememberBoxMeasurePolicy(Landroidx/compose/ui/Alignment;ZLandroidx/compose/runtime/Composer;I)Landroidx/compose/ui/layout/MeasurePolicy; +Landroidx/compose/foundation/layout/BoxKt$EmptyBoxMeasurePolicy$1; +HSPLandroidx/compose/foundation/layout/BoxKt$EmptyBoxMeasurePolicy$1;->()V +HSPLandroidx/compose/foundation/layout/BoxKt$EmptyBoxMeasurePolicy$1;->()V +HSPLandroidx/compose/foundation/layout/BoxKt$EmptyBoxMeasurePolicy$1;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/layout/BoxKt$EmptyBoxMeasurePolicy$1$measure$1; +HSPLandroidx/compose/foundation/layout/BoxKt$EmptyBoxMeasurePolicy$1$measure$1;->()V +HSPLandroidx/compose/foundation/layout/BoxKt$EmptyBoxMeasurePolicy$1$measure$1;->()V +HSPLandroidx/compose/foundation/layout/BoxKt$EmptyBoxMeasurePolicy$1$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/layout/BoxKt$EmptyBoxMeasurePolicy$1$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1; +HSPLandroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1;->(ZLandroidx/compose/ui/Alignment;)V +HSPLandroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$1; +HSPLandroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$1;->()V +HSPLandroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$1;->()V +HSPLandroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$2; +HSPLandroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$2;->(Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/layout/Measurable;Landroidx/compose/ui/layout/MeasureScope;IILandroidx/compose/ui/Alignment;)V +HSPLandroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$2;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$5; +HSPLandroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$5;->([Landroidx/compose/ui/layout/Placeable;Ljava/util/List;Landroidx/compose/ui/layout/MeasureScope;Lkotlin/jvm/internal/Ref$IntRef;Lkotlin/jvm/internal/Ref$IntRef;Landroidx/compose/ui/Alignment;)V +HSPLandroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$5;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$5;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/BoxScope; +Landroidx/compose/foundation/layout/BoxScopeInstance; +HSPLandroidx/compose/foundation/layout/BoxScopeInstance;->()V +HSPLandroidx/compose/foundation/layout/BoxScopeInstance;->()V +HSPLandroidx/compose/foundation/layout/BoxScopeInstance;->align(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Alignment;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/layout/BoxWithConstraintsKt; +HSPLandroidx/compose/foundation/layout/BoxWithConstraintsKt;->BoxWithConstraints(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Alignment;ZLkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +Landroidx/compose/foundation/layout/BoxWithConstraintsKt$BoxWithConstraints$1$1; +HSPLandroidx/compose/foundation/layout/BoxWithConstraintsKt$BoxWithConstraints$1$1;->(Landroidx/compose/ui/layout/MeasurePolicy;Lkotlin/jvm/functions/Function3;I)V +HSPLandroidx/compose/foundation/layout/BoxWithConstraintsKt$BoxWithConstraints$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/layout/BoxWithConstraintsKt$BoxWithConstraints$1$1;->invoke-0kLqBqw(Landroidx/compose/ui/layout/SubcomposeMeasureScope;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/layout/BoxWithConstraintsKt$BoxWithConstraints$1$1$measurables$1; +HSPLandroidx/compose/foundation/layout/BoxWithConstraintsKt$BoxWithConstraints$1$1$measurables$1;->(Lkotlin/jvm/functions/Function3;Landroidx/compose/foundation/layout/BoxWithConstraintsScopeImpl;I)V +HSPLandroidx/compose/foundation/layout/BoxWithConstraintsKt$BoxWithConstraints$1$1$measurables$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/layout/BoxWithConstraintsKt$BoxWithConstraints$1$1$measurables$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/BoxWithConstraintsScope; +Landroidx/compose/foundation/layout/BoxWithConstraintsScopeImpl; +HSPLandroidx/compose/foundation/layout/BoxWithConstraintsScopeImpl;->(Landroidx/compose/ui/unit/Density;J)V +HSPLandroidx/compose/foundation/layout/BoxWithConstraintsScopeImpl;->(Landroidx/compose/ui/unit/Density;JLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/BoxWithConstraintsScopeImpl;->align(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Alignment;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/BoxWithConstraintsScopeImpl;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/layout/BoxWithConstraintsScopeImpl;->getConstraints-msEJaDk()J +HSPLandroidx/compose/foundation/layout/BoxWithConstraintsScopeImpl;->getMaxHeight-D9Ej5fM()F +HSPLandroidx/compose/foundation/layout/BoxWithConstraintsScopeImpl;->getMaxWidth-D9Ej5fM()F +Landroidx/compose/foundation/layout/ColumnKt; +HSPLandroidx/compose/foundation/layout/ColumnKt;->()V +HSPLandroidx/compose/foundation/layout/ColumnKt;->columnMeasurePolicy(Landroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/ui/Alignment$Horizontal;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/layout/MeasurePolicy; +Landroidx/compose/foundation/layout/ColumnKt$DefaultColumnMeasurePolicy$1; +HSPLandroidx/compose/foundation/layout/ColumnKt$DefaultColumnMeasurePolicy$1;->()V +HSPLandroidx/compose/foundation/layout/ColumnKt$DefaultColumnMeasurePolicy$1;->()V +HSPLandroidx/compose/foundation/layout/ColumnKt$DefaultColumnMeasurePolicy$1;->invoke(I[ILandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/unit/Density;[I)V +HSPLandroidx/compose/foundation/layout/ColumnKt$DefaultColumnMeasurePolicy$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/ColumnKt$columnMeasurePolicy$1$1; +HSPLandroidx/compose/foundation/layout/ColumnKt$columnMeasurePolicy$1$1;->(Landroidx/compose/foundation/layout/Arrangement$Vertical;)V +HSPLandroidx/compose/foundation/layout/ColumnKt$columnMeasurePolicy$1$1;->invoke(I[ILandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/unit/Density;[I)V +HSPLandroidx/compose/foundation/layout/ColumnKt$columnMeasurePolicy$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/ColumnScope; +HSPLandroidx/compose/foundation/layout/ColumnScope;->weight$default(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/ui/Modifier;FZILjava/lang/Object;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/layout/ColumnScopeInstance; +HSPLandroidx/compose/foundation/layout/ColumnScopeInstance;->()V +HSPLandroidx/compose/foundation/layout/ColumnScopeInstance;->()V +HSPLandroidx/compose/foundation/layout/ColumnScopeInstance;->weight(Landroidx/compose/ui/Modifier;FZ)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/layout/ConsumedInsetsModifier; +HSPLandroidx/compose/foundation/layout/ConsumedInsetsModifier;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/layout/ConsumedInsetsModifier;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/layout/ConsumedInsetsModifier;->onModifierLocalsUpdated(Landroidx/compose/ui/modifier/ModifierLocalReadScope;)V +Landroidx/compose/foundation/layout/CrossAxisAlignment; +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment;->()V +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment;->()V +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/foundation/layout/CrossAxisAlignment$CenterCrossAxisAlignment; +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$CenterCrossAxisAlignment;->()V +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$CenterCrossAxisAlignment;->()V +Landroidx/compose/foundation/layout/CrossAxisAlignment$Companion; +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$Companion;->()V +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$Companion;->horizontal$foundation_layout_release(Landroidx/compose/ui/Alignment$Horizontal;)Landroidx/compose/foundation/layout/CrossAxisAlignment; +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$Companion;->vertical$foundation_layout_release(Landroidx/compose/ui/Alignment$Vertical;)Landroidx/compose/foundation/layout/CrossAxisAlignment; +Landroidx/compose/foundation/layout/CrossAxisAlignment$EndCrossAxisAlignment; +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$EndCrossAxisAlignment;->()V +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$EndCrossAxisAlignment;->()V +Landroidx/compose/foundation/layout/CrossAxisAlignment$HorizontalCrossAxisAlignment; +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$HorizontalCrossAxisAlignment;->(Landroidx/compose/ui/Alignment$Horizontal;)V +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$HorizontalCrossAxisAlignment;->align$foundation_layout_release(ILandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/layout/Placeable;I)I +Landroidx/compose/foundation/layout/CrossAxisAlignment$StartCrossAxisAlignment; +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$StartCrossAxisAlignment;->()V +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$StartCrossAxisAlignment;->()V +Landroidx/compose/foundation/layout/CrossAxisAlignment$VerticalCrossAxisAlignment; +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$VerticalCrossAxisAlignment;->(Landroidx/compose/ui/Alignment$Vertical;)V +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$VerticalCrossAxisAlignment;->align$foundation_layout_release(ILandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/layout/Placeable;I)I +Landroidx/compose/foundation/layout/Direction; +HSPLandroidx/compose/foundation/layout/Direction;->$values()[Landroidx/compose/foundation/layout/Direction; +HSPLandroidx/compose/foundation/layout/Direction;->()V +HSPLandroidx/compose/foundation/layout/Direction;->(Ljava/lang/String;I)V +Landroidx/compose/foundation/layout/ExcludeInsets; +HSPLandroidx/compose/foundation/layout/ExcludeInsets;->(Landroidx/compose/foundation/layout/WindowInsets;Landroidx/compose/foundation/layout/WindowInsets;)V +HSPLandroidx/compose/foundation/layout/ExcludeInsets;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/layout/ExcludeInsets;->getBottom(Landroidx/compose/ui/unit/Density;)I +HSPLandroidx/compose/foundation/layout/ExcludeInsets;->getLeft(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/foundation/layout/ExcludeInsets;->getRight(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/foundation/layout/ExcludeInsets;->getTop(Landroidx/compose/ui/unit/Density;)I +Landroidx/compose/foundation/layout/FillElement; +HSPLandroidx/compose/foundation/layout/FillElement;->()V +HSPLandroidx/compose/foundation/layout/FillElement;->(Landroidx/compose/foundation/layout/Direction;FLjava/lang/String;)V +HSPLandroidx/compose/foundation/layout/FillElement;->create()Landroidx/compose/foundation/layout/FillNode; +HSPLandroidx/compose/foundation/layout/FillElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/layout/FillElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/layout/FillElement;->update(Landroidx/compose/foundation/layout/FillNode;)V +HSPLandroidx/compose/foundation/layout/FillElement;->update(Landroidx/compose/ui/Modifier$Node;)V +Landroidx/compose/foundation/layout/FillElement$Companion; +HSPLandroidx/compose/foundation/layout/FillElement$Companion;->()V +HSPLandroidx/compose/foundation/layout/FillElement$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/FillElement$Companion;->height(F)Landroidx/compose/foundation/layout/FillElement; +HSPLandroidx/compose/foundation/layout/FillElement$Companion;->size(F)Landroidx/compose/foundation/layout/FillElement; +HSPLandroidx/compose/foundation/layout/FillElement$Companion;->width(F)Landroidx/compose/foundation/layout/FillElement; +Landroidx/compose/foundation/layout/FillNode; +HSPLandroidx/compose/foundation/layout/FillNode;->(Landroidx/compose/foundation/layout/Direction;F)V +HSPLandroidx/compose/foundation/layout/FillNode;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/foundation/layout/FillNode;->setDirection(Landroidx/compose/foundation/layout/Direction;)V +HSPLandroidx/compose/foundation/layout/FillNode;->setFraction(F)V +Landroidx/compose/foundation/layout/FillNode$measure$1; +HSPLandroidx/compose/foundation/layout/FillNode$measure$1;->(Landroidx/compose/ui/layout/Placeable;)V +HSPLandroidx/compose/foundation/layout/FillNode$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/layout/FillNode$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/FixedDpInsets; +HSPLandroidx/compose/foundation/layout/FixedDpInsets;->(FFFF)V +HSPLandroidx/compose/foundation/layout/FixedDpInsets;->(FFFFLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/FixedDpInsets;->getBottom(Landroidx/compose/ui/unit/Density;)I +HSPLandroidx/compose/foundation/layout/FixedDpInsets;->getLeft(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/foundation/layout/FixedDpInsets;->getRight(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/foundation/layout/FixedDpInsets;->getTop(Landroidx/compose/ui/unit/Density;)I +Landroidx/compose/foundation/layout/FixedIntInsets; +HSPLandroidx/compose/foundation/layout/FixedIntInsets;->(IIII)V +HSPLandroidx/compose/foundation/layout/FixedIntInsets;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/layout/FixedIntInsets;->getBottom(Landroidx/compose/ui/unit/Density;)I +HSPLandroidx/compose/foundation/layout/FixedIntInsets;->getLeft(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/foundation/layout/FixedIntInsets;->getRight(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/foundation/layout/FixedIntInsets;->getTop(Landroidx/compose/ui/unit/Density;)I +Landroidx/compose/foundation/layout/FlowLayoutKt; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt;->()V +HSPLandroidx/compose/foundation/layout/FlowLayoutKt;->access$flowMeasurePolicy-bs7tm-s(Landroidx/compose/foundation/layout/LayoutOrientation;Lkotlin/jvm/functions/Function5;FLandroidx/compose/foundation/layout/SizeMode;Landroidx/compose/foundation/layout/CrossAxisAlignment;Lkotlin/jvm/functions/Function5;FI)Landroidx/compose/ui/layout/MeasurePolicy; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt;->access$getCROSS_AXIS_ALIGNMENT_TOP$p()Landroidx/compose/foundation/layout/CrossAxisAlignment; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt;->access$getHorizontalArrangement(Landroidx/compose/foundation/layout/Arrangement$Horizontal;)Lkotlin/jvm/functions/Function5; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt;->access$getVerticalArrangement(Landroidx/compose/foundation/layout/Arrangement$Vertical;)Lkotlin/jvm/functions/Function5; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt;->breakDownItems-w1Onq5I(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/foundation/layout/RowColumnMeasurementHelper;Landroidx/compose/foundation/layout/LayoutOrientation;JI)Landroidx/compose/foundation/layout/FlowResult; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt;->flowMeasurePolicy-bs7tm-s(Landroidx/compose/foundation/layout/LayoutOrientation;Lkotlin/jvm/functions/Function5;FLandroidx/compose/foundation/layout/SizeMode;Landroidx/compose/foundation/layout/CrossAxisAlignment;Lkotlin/jvm/functions/Function5;FI)Landroidx/compose/ui/layout/MeasurePolicy; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt;->getHorizontalArrangement(Landroidx/compose/foundation/layout/Arrangement$Horizontal;)Lkotlin/jvm/functions/Function5; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt;->getVerticalArrangement(Landroidx/compose/foundation/layout/Arrangement$Vertical;)Lkotlin/jvm/functions/Function5; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt;->mainAxisSize(Landroidx/compose/ui/layout/Placeable;Landroidx/compose/foundation/layout/LayoutOrientation;)I +HSPLandroidx/compose/foundation/layout/FlowLayoutKt;->measureAndCache-6m2dt9o(Landroidx/compose/ui/layout/Measurable;JLandroidx/compose/foundation/layout/LayoutOrientation;Lkotlin/jvm/functions/Function1;)I +HSPLandroidx/compose/foundation/layout/FlowLayoutKt;->rowMeasurementHelper(Landroidx/compose/foundation/layout/Arrangement$Horizontal;Landroidx/compose/foundation/layout/Arrangement$Vertical;ILandroidx/compose/runtime/Composer;I)Landroidx/compose/ui/layout/MeasurePolicy; +Landroidx/compose/foundation/layout/FlowLayoutKt$breakDownItems$1; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$breakDownItems$1;->([Landroidx/compose/ui/layout/Placeable;I)V +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$breakDownItems$1;->invoke(Landroidx/compose/ui/layout/Placeable;)V +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$breakDownItems$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/FlowLayoutKt$breakDownItems$nextSize$1; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$breakDownItems$nextSize$1;->([Landroidx/compose/ui/layout/Placeable;)V +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$breakDownItems$nextSize$1;->invoke(Landroidx/compose/ui/layout/Placeable;)V +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$breakDownItems$nextSize$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1;->(Landroidx/compose/foundation/layout/LayoutOrientation;Lkotlin/jvm/functions/Function5;FLandroidx/compose/foundation/layout/SizeMode;Landroidx/compose/foundation/layout/CrossAxisAlignment;IFLkotlin/jvm/functions/Function5;)V +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1$maxCrossAxisIntrinsicItemSize$1; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1$maxCrossAxisIntrinsicItemSize$1;->()V +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1$maxCrossAxisIntrinsicItemSize$1;->()V +Landroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1$maxMainAxisIntrinsicItemSize$1; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1$maxMainAxisIntrinsicItemSize$1;->()V +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1$maxMainAxisIntrinsicItemSize$1;->()V +Landroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1$measure$2; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1$measure$2;->(Landroidx/compose/foundation/layout/FlowResult;Landroidx/compose/foundation/layout/RowColumnMeasurementHelper;[ILandroidx/compose/ui/layout/MeasureScope;)V +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1$measure$2;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1$measure$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1$minCrossAxisIntrinsicItemSize$1; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1$minCrossAxisIntrinsicItemSize$1;->()V +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1$minCrossAxisIntrinsicItemSize$1;->()V +Landroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1$minMainAxisIntrinsicItemSize$1; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1$minMainAxisIntrinsicItemSize$1;->()V +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1$minMainAxisIntrinsicItemSize$1;->()V +Landroidx/compose/foundation/layout/FlowLayoutKt$getHorizontalArrangement$1; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$getHorizontalArrangement$1;->(Landroidx/compose/foundation/layout/Arrangement$Horizontal;)V +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$getHorizontalArrangement$1;->invoke(I[ILandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/unit/Density;[I)V +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$getHorizontalArrangement$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/FlowLayoutKt$getVerticalArrangement$1; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$getVerticalArrangement$1;->(Landroidx/compose/foundation/layout/Arrangement$Vertical;)V +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$getVerticalArrangement$1;->invoke(I[ILandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/unit/Density;[I)V +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$getVerticalArrangement$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/FlowResult; +HSPLandroidx/compose/foundation/layout/FlowResult;->(IILandroidx/compose/runtime/collection/MutableVector;)V +HSPLandroidx/compose/foundation/layout/FlowResult;->getCrossAxisTotalSize()I +HSPLandroidx/compose/foundation/layout/FlowResult;->getItems()Landroidx/compose/runtime/collection/MutableVector; +HSPLandroidx/compose/foundation/layout/FlowResult;->getMainAxisTotalSize()I +Landroidx/compose/foundation/layout/FlowRowScope; +Landroidx/compose/foundation/layout/FlowRowScopeInstance; +HSPLandroidx/compose/foundation/layout/FlowRowScopeInstance;->()V +HSPLandroidx/compose/foundation/layout/FlowRowScopeInstance;->()V +Landroidx/compose/foundation/layout/InsetsConsumingModifier; +HSPLandroidx/compose/foundation/layout/InsetsConsumingModifier;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/layout/InsetsConsumingModifier;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/InsetsConsumingModifier;->getConsumedInsets()Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/InsetsConsumingModifier;->getKey()Landroidx/compose/ui/modifier/ProvidableModifierLocal; +HSPLandroidx/compose/foundation/layout/InsetsConsumingModifier;->getValue()Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/InsetsConsumingModifier;->getValue()Ljava/lang/Object; +HSPLandroidx/compose/foundation/layout/InsetsConsumingModifier;->onModifierLocalsUpdated(Landroidx/compose/ui/modifier/ModifierLocalReadScope;)V +HSPLandroidx/compose/foundation/layout/InsetsConsumingModifier;->setConsumedInsets(Landroidx/compose/foundation/layout/WindowInsets;)V +Landroidx/compose/foundation/layout/InsetsListener; +HSPLandroidx/compose/foundation/layout/InsetsListener;->(Landroidx/compose/foundation/layout/WindowInsetsHolder;)V +HSPLandroidx/compose/foundation/layout/InsetsListener;->onApplyWindowInsets(Landroid/view/View;Landroidx/core/view/WindowInsetsCompat;)Landroidx/core/view/WindowInsetsCompat; +HSPLandroidx/compose/foundation/layout/InsetsListener;->onEnd(Landroidx/core/view/WindowInsetsAnimationCompat;)V +HSPLandroidx/compose/foundation/layout/InsetsListener;->onPrepare(Landroidx/core/view/WindowInsetsAnimationCompat;)V +HSPLandroidx/compose/foundation/layout/InsetsListener;->onProgress(Landroidx/core/view/WindowInsetsCompat;Ljava/util/List;)Landroidx/core/view/WindowInsetsCompat; +HSPLandroidx/compose/foundation/layout/InsetsListener;->onStart(Landroidx/core/view/WindowInsetsAnimationCompat;Landroidx/core/view/WindowInsetsAnimationCompat$BoundsCompat;)Landroidx/core/view/WindowInsetsAnimationCompat$BoundsCompat; +HSPLandroidx/compose/foundation/layout/InsetsListener;->onViewAttachedToWindow(Landroid/view/View;)V +Landroidx/compose/foundation/layout/InsetsPaddingModifier; +HSPLandroidx/compose/foundation/layout/InsetsPaddingModifier;->(Landroidx/compose/foundation/layout/WindowInsets;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/layout/InsetsPaddingModifier;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/layout/InsetsPaddingModifier;->getConsumedInsets()Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/InsetsPaddingModifier;->getKey()Landroidx/compose/ui/modifier/ProvidableModifierLocal; +HSPLandroidx/compose/foundation/layout/InsetsPaddingModifier;->getUnconsumedInsets()Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/InsetsPaddingModifier;->getValue()Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/InsetsPaddingModifier;->getValue()Ljava/lang/Object; +HSPLandroidx/compose/foundation/layout/InsetsPaddingModifier;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/foundation/layout/InsetsPaddingModifier;->onModifierLocalsUpdated(Landroidx/compose/ui/modifier/ModifierLocalReadScope;)V +HSPLandroidx/compose/foundation/layout/InsetsPaddingModifier;->setConsumedInsets(Landroidx/compose/foundation/layout/WindowInsets;)V +HSPLandroidx/compose/foundation/layout/InsetsPaddingModifier;->setUnconsumedInsets(Landroidx/compose/foundation/layout/WindowInsets;)V +Landroidx/compose/foundation/layout/InsetsPaddingModifier$measure$1; +HSPLandroidx/compose/foundation/layout/InsetsPaddingModifier$measure$1;->(Landroidx/compose/ui/layout/Placeable;II)V +HSPLandroidx/compose/foundation/layout/InsetsPaddingModifier$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/layout/InsetsPaddingModifier$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/InsetsPaddingValues; +HSPLandroidx/compose/foundation/layout/InsetsPaddingValues;->(Landroidx/compose/foundation/layout/WindowInsets;Landroidx/compose/ui/unit/Density;)V +HSPLandroidx/compose/foundation/layout/InsetsPaddingValues;->calculateBottomPadding-D9Ej5fM()F +HSPLandroidx/compose/foundation/layout/InsetsPaddingValues;->calculateLeftPadding-u2uoSUM(Landroidx/compose/ui/unit/LayoutDirection;)F +HSPLandroidx/compose/foundation/layout/InsetsPaddingValues;->calculateRightPadding-u2uoSUM(Landroidx/compose/ui/unit/LayoutDirection;)F +HSPLandroidx/compose/foundation/layout/InsetsPaddingValues;->calculateTopPadding-D9Ej5fM()F +HSPLandroidx/compose/foundation/layout/InsetsPaddingValues;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/layout/InsetsValues; +HSPLandroidx/compose/foundation/layout/InsetsValues;->(IIII)V +HSPLandroidx/compose/foundation/layout/InsetsValues;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/layout/LayoutOrientation; +HSPLandroidx/compose/foundation/layout/LayoutOrientation;->$values()[Landroidx/compose/foundation/layout/LayoutOrientation; +HSPLandroidx/compose/foundation/layout/LayoutOrientation;->()V +HSPLandroidx/compose/foundation/layout/LayoutOrientation;->(Ljava/lang/String;I)V +Landroidx/compose/foundation/layout/LayoutWeightElement; +HSPLandroidx/compose/foundation/layout/LayoutWeightElement;->(FZ)V +HSPLandroidx/compose/foundation/layout/LayoutWeightElement;->create()Landroidx/compose/foundation/layout/LayoutWeightNode; +HSPLandroidx/compose/foundation/layout/LayoutWeightElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/layout/LayoutWeightElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/layout/LayoutWeightNode; +HSPLandroidx/compose/foundation/layout/LayoutWeightNode;->(FZ)V +HSPLandroidx/compose/foundation/layout/LayoutWeightNode;->modifyParentData(Landroidx/compose/ui/unit/Density;Ljava/lang/Object;)Landroidx/compose/foundation/layout/RowColumnParentData; +HSPLandroidx/compose/foundation/layout/LayoutWeightNode;->modifyParentData(Landroidx/compose/ui/unit/Density;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/LimitInsets; +HSPLandroidx/compose/foundation/layout/LimitInsets;->(Landroidx/compose/foundation/layout/WindowInsets;I)V +HSPLandroidx/compose/foundation/layout/LimitInsets;->(Landroidx/compose/foundation/layout/WindowInsets;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/LimitInsets;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/layout/LimitInsets;->getBottom(Landroidx/compose/ui/unit/Density;)I +HSPLandroidx/compose/foundation/layout/LimitInsets;->getLeft(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/foundation/layout/LimitInsets;->getRight(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/foundation/layout/LimitInsets;->getTop(Landroidx/compose/ui/unit/Density;)I +Landroidx/compose/foundation/layout/MutableWindowInsets; +HSPLandroidx/compose/foundation/layout/MutableWindowInsets;->()V +HSPLandroidx/compose/foundation/layout/MutableWindowInsets;->(Landroidx/compose/foundation/layout/WindowInsets;)V +HSPLandroidx/compose/foundation/layout/MutableWindowInsets;->(Landroidx/compose/foundation/layout/WindowInsets;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/MutableWindowInsets;->getBottom(Landroidx/compose/ui/unit/Density;)I +HSPLandroidx/compose/foundation/layout/MutableWindowInsets;->getInsets()Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/MutableWindowInsets;->getLeft(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/foundation/layout/MutableWindowInsets;->getRight(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/foundation/layout/MutableWindowInsets;->setInsets(Landroidx/compose/foundation/layout/WindowInsets;)V +Landroidx/compose/foundation/layout/OrientationIndependentConstraints; +HSPLandroidx/compose/foundation/layout/OrientationIndependentConstraints;->constructor-impl(IIII)J +HSPLandroidx/compose/foundation/layout/OrientationIndependentConstraints;->constructor-impl(J)J +HSPLandroidx/compose/foundation/layout/OrientationIndependentConstraints;->constructor-impl(JLandroidx/compose/foundation/layout/LayoutOrientation;)J +HSPLandroidx/compose/foundation/layout/OrientationIndependentConstraints;->copy-yUG9Ft0$default(JIIIIILjava/lang/Object;)J +HSPLandroidx/compose/foundation/layout/OrientationIndependentConstraints;->copy-yUG9Ft0(JIIII)J +HSPLandroidx/compose/foundation/layout/OrientationIndependentConstraints;->toBoxConstraints-OenEA2s(JLandroidx/compose/foundation/layout/LayoutOrientation;)J +Landroidx/compose/foundation/layout/PaddingElement; +HSPLandroidx/compose/foundation/layout/PaddingElement;->(FFFFZLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/layout/PaddingElement;->(FFFFZLkotlin/jvm/functions/Function1;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/PaddingElement;->create()Landroidx/compose/foundation/layout/PaddingNode; +HSPLandroidx/compose/foundation/layout/PaddingElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/layout/PaddingElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/layout/PaddingElement;->update(Landroidx/compose/foundation/layout/PaddingNode;)V +HSPLandroidx/compose/foundation/layout/PaddingElement;->update(Landroidx/compose/ui/Modifier$Node;)V +Landroidx/compose/foundation/layout/PaddingKt; +HSPLandroidx/compose/foundation/layout/PaddingKt;->PaddingValues-0680j_4(F)Landroidx/compose/foundation/layout/PaddingValues; +HSPLandroidx/compose/foundation/layout/PaddingKt;->PaddingValues-YgX7TsA$default(FFILjava/lang/Object;)Landroidx/compose/foundation/layout/PaddingValues; +HSPLandroidx/compose/foundation/layout/PaddingKt;->PaddingValues-YgX7TsA(FF)Landroidx/compose/foundation/layout/PaddingValues; +HSPLandroidx/compose/foundation/layout/PaddingKt;->PaddingValues-a9UjIt4$default(FFFFILjava/lang/Object;)Landroidx/compose/foundation/layout/PaddingValues; +HSPLandroidx/compose/foundation/layout/PaddingKt;->PaddingValues-a9UjIt4(FFFF)Landroidx/compose/foundation/layout/PaddingValues; +HSPLandroidx/compose/foundation/layout/PaddingKt;->calculateEndPadding(Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/ui/unit/LayoutDirection;)F +HSPLandroidx/compose/foundation/layout/PaddingKt;->calculateStartPadding(Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/ui/unit/LayoutDirection;)F +HSPLandroidx/compose/foundation/layout/PaddingKt;->padding(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/layout/PaddingValues;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/PaddingKt;->padding-3ABfNKs(Landroidx/compose/ui/Modifier;F)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/PaddingKt;->padding-VpY3zN4$default(Landroidx/compose/ui/Modifier;FFILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/PaddingKt;->padding-VpY3zN4(Landroidx/compose/ui/Modifier;FF)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/PaddingKt;->padding-qDBjuR0$default(Landroidx/compose/ui/Modifier;FFFFILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/PaddingKt;->padding-qDBjuR0(Landroidx/compose/ui/Modifier;FFFF)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/layout/PaddingKt$padding$1; +HSPLandroidx/compose/foundation/layout/PaddingKt$padding$1;->(FFFF)V +Landroidx/compose/foundation/layout/PaddingKt$padding$2; +HSPLandroidx/compose/foundation/layout/PaddingKt$padding$2;->(FF)V +Landroidx/compose/foundation/layout/PaddingKt$padding$3; +HSPLandroidx/compose/foundation/layout/PaddingKt$padding$3;->(F)V +Landroidx/compose/foundation/layout/PaddingKt$padding$4; +HSPLandroidx/compose/foundation/layout/PaddingKt$padding$4;->(Landroidx/compose/foundation/layout/PaddingValues;)V +Landroidx/compose/foundation/layout/PaddingNode; +HSPLandroidx/compose/foundation/layout/PaddingNode;->(FFFFZ)V +HSPLandroidx/compose/foundation/layout/PaddingNode;->(FFFFZLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/PaddingNode;->getRtlAware()Z +HSPLandroidx/compose/foundation/layout/PaddingNode;->getStart-D9Ej5fM()F +HSPLandroidx/compose/foundation/layout/PaddingNode;->getTop-D9Ej5fM()F +HSPLandroidx/compose/foundation/layout/PaddingNode;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/foundation/layout/PaddingNode;->setBottom-0680j_4(F)V +HSPLandroidx/compose/foundation/layout/PaddingNode;->setEnd-0680j_4(F)V +HSPLandroidx/compose/foundation/layout/PaddingNode;->setRtlAware(Z)V +HSPLandroidx/compose/foundation/layout/PaddingNode;->setStart-0680j_4(F)V +HSPLandroidx/compose/foundation/layout/PaddingNode;->setTop-0680j_4(F)V +Landroidx/compose/foundation/layout/PaddingNode$measure$1; +HSPLandroidx/compose/foundation/layout/PaddingNode$measure$1;->(Landroidx/compose/foundation/layout/PaddingNode;Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/layout/MeasureScope;)V +HSPLandroidx/compose/foundation/layout/PaddingNode$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/layout/PaddingNode$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/PaddingValues; +Landroidx/compose/foundation/layout/PaddingValuesElement; +HSPLandroidx/compose/foundation/layout/PaddingValuesElement;->(Landroidx/compose/foundation/layout/PaddingValues;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/layout/PaddingValuesElement;->create()Landroidx/compose/foundation/layout/PaddingValuesModifier; +HSPLandroidx/compose/foundation/layout/PaddingValuesElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/layout/PaddingValuesElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/layout/PaddingValuesElement;->update(Landroidx/compose/foundation/layout/PaddingValuesModifier;)V +HSPLandroidx/compose/foundation/layout/PaddingValuesElement;->update(Landroidx/compose/ui/Modifier$Node;)V +Landroidx/compose/foundation/layout/PaddingValuesImpl; +HSPLandroidx/compose/foundation/layout/PaddingValuesImpl;->(FFFF)V +HSPLandroidx/compose/foundation/layout/PaddingValuesImpl;->(FFFFLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/PaddingValuesImpl;->calculateBottomPadding-D9Ej5fM()F +HSPLandroidx/compose/foundation/layout/PaddingValuesImpl;->calculateLeftPadding-u2uoSUM(Landroidx/compose/ui/unit/LayoutDirection;)F +HSPLandroidx/compose/foundation/layout/PaddingValuesImpl;->calculateRightPadding-u2uoSUM(Landroidx/compose/ui/unit/LayoutDirection;)F +HSPLandroidx/compose/foundation/layout/PaddingValuesImpl;->calculateTopPadding-D9Ej5fM()F +HSPLandroidx/compose/foundation/layout/PaddingValuesImpl;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/layout/PaddingValuesModifier; +HSPLandroidx/compose/foundation/layout/PaddingValuesModifier;->(Landroidx/compose/foundation/layout/PaddingValues;)V +HSPLandroidx/compose/foundation/layout/PaddingValuesModifier;->getPaddingValues()Landroidx/compose/foundation/layout/PaddingValues; +HSPLandroidx/compose/foundation/layout/PaddingValuesModifier;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/foundation/layout/PaddingValuesModifier;->setPaddingValues(Landroidx/compose/foundation/layout/PaddingValues;)V +Landroidx/compose/foundation/layout/PaddingValuesModifier$measure$2; +HSPLandroidx/compose/foundation/layout/PaddingValuesModifier$measure$2;->(Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/foundation/layout/PaddingValuesModifier;)V +HSPLandroidx/compose/foundation/layout/PaddingValuesModifier$measure$2;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/layout/PaddingValuesModifier$measure$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/RowColumnImplKt; +HSPLandroidx/compose/foundation/layout/RowColumnImplKt;->getCrossAxisAlignment(Landroidx/compose/foundation/layout/RowColumnParentData;)Landroidx/compose/foundation/layout/CrossAxisAlignment; +HSPLandroidx/compose/foundation/layout/RowColumnImplKt;->getFill(Landroidx/compose/foundation/layout/RowColumnParentData;)Z +HSPLandroidx/compose/foundation/layout/RowColumnImplKt;->getRowColumnParentData(Landroidx/compose/ui/layout/IntrinsicMeasurable;)Landroidx/compose/foundation/layout/RowColumnParentData; +HSPLandroidx/compose/foundation/layout/RowColumnImplKt;->getWeight(Landroidx/compose/foundation/layout/RowColumnParentData;)F +HSPLandroidx/compose/foundation/layout/RowColumnImplKt;->isRelative(Landroidx/compose/foundation/layout/RowColumnParentData;)Z +HSPLandroidx/compose/foundation/layout/RowColumnImplKt;->rowColumnMeasurePolicy-TDGSqEk(Landroidx/compose/foundation/layout/LayoutOrientation;Lkotlin/jvm/functions/Function5;FLandroidx/compose/foundation/layout/SizeMode;Landroidx/compose/foundation/layout/CrossAxisAlignment;)Landroidx/compose/ui/layout/MeasurePolicy; +Landroidx/compose/foundation/layout/RowColumnImplKt$rowColumnMeasurePolicy$1; +HSPLandroidx/compose/foundation/layout/RowColumnImplKt$rowColumnMeasurePolicy$1;->(Landroidx/compose/foundation/layout/LayoutOrientation;Lkotlin/jvm/functions/Function5;FLandroidx/compose/foundation/layout/SizeMode;Landroidx/compose/foundation/layout/CrossAxisAlignment;)V +HSPLandroidx/compose/foundation/layout/RowColumnImplKt$rowColumnMeasurePolicy$1;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/layout/RowColumnImplKt$rowColumnMeasurePolicy$1$measure$1; +HSPLandroidx/compose/foundation/layout/RowColumnImplKt$rowColumnMeasurePolicy$1$measure$1;->(Landroidx/compose/foundation/layout/RowColumnMeasurementHelper;Landroidx/compose/foundation/layout/RowColumnMeasureHelperResult;Landroidx/compose/ui/layout/MeasureScope;)V +HSPLandroidx/compose/foundation/layout/RowColumnImplKt$rowColumnMeasurePolicy$1$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/layout/RowColumnImplKt$rowColumnMeasurePolicy$1$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/RowColumnMeasureHelperResult; +HSPLandroidx/compose/foundation/layout/RowColumnMeasureHelperResult;->(IIIII[I)V +HSPLandroidx/compose/foundation/layout/RowColumnMeasureHelperResult;->getBeforeCrossAxisAlignmentLine()I +HSPLandroidx/compose/foundation/layout/RowColumnMeasureHelperResult;->getCrossAxisSize()I +HSPLandroidx/compose/foundation/layout/RowColumnMeasureHelperResult;->getEndIndex()I +HSPLandroidx/compose/foundation/layout/RowColumnMeasureHelperResult;->getMainAxisPositions()[I +HSPLandroidx/compose/foundation/layout/RowColumnMeasureHelperResult;->getMainAxisSize()I +HSPLandroidx/compose/foundation/layout/RowColumnMeasureHelperResult;->getStartIndex()I +Landroidx/compose/foundation/layout/RowColumnMeasurementHelper; +HSPLandroidx/compose/foundation/layout/RowColumnMeasurementHelper;->(Landroidx/compose/foundation/layout/LayoutOrientation;Lkotlin/jvm/functions/Function5;FLandroidx/compose/foundation/layout/SizeMode;Landroidx/compose/foundation/layout/CrossAxisAlignment;Ljava/util/List;[Landroidx/compose/ui/layout/Placeable;)V +HSPLandroidx/compose/foundation/layout/RowColumnMeasurementHelper;->(Landroidx/compose/foundation/layout/LayoutOrientation;Lkotlin/jvm/functions/Function5;FLandroidx/compose/foundation/layout/SizeMode;Landroidx/compose/foundation/layout/CrossAxisAlignment;Ljava/util/List;[Landroidx/compose/ui/layout/Placeable;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/RowColumnMeasurementHelper;->crossAxisSize(Landroidx/compose/ui/layout/Placeable;)I +HSPLandroidx/compose/foundation/layout/RowColumnMeasurementHelper;->getArrangementSpacing-D9Ej5fM()F +HSPLandroidx/compose/foundation/layout/RowColumnMeasurementHelper;->getCrossAxisPosition(Landroidx/compose/ui/layout/Placeable;Landroidx/compose/foundation/layout/RowColumnParentData;ILandroidx/compose/ui/unit/LayoutDirection;I)I +HSPLandroidx/compose/foundation/layout/RowColumnMeasurementHelper;->getMeasurables()Ljava/util/List; +HSPLandroidx/compose/foundation/layout/RowColumnMeasurementHelper;->getPlaceables()[Landroidx/compose/ui/layout/Placeable; +HSPLandroidx/compose/foundation/layout/RowColumnMeasurementHelper;->mainAxisPositions(I[I[ILandroidx/compose/ui/layout/MeasureScope;)[I +HSPLandroidx/compose/foundation/layout/RowColumnMeasurementHelper;->mainAxisSize(Landroidx/compose/ui/layout/Placeable;)I +HSPLandroidx/compose/foundation/layout/RowColumnMeasurementHelper;->measureWithoutPlacing-_EkL_-Y(Landroidx/compose/ui/layout/MeasureScope;JII)Landroidx/compose/foundation/layout/RowColumnMeasureHelperResult; +HSPLandroidx/compose/foundation/layout/RowColumnMeasurementHelper;->placeHelper(Landroidx/compose/ui/layout/Placeable$PlacementScope;Landroidx/compose/foundation/layout/RowColumnMeasureHelperResult;ILandroidx/compose/ui/unit/LayoutDirection;)V +Landroidx/compose/foundation/layout/RowColumnParentData; +HSPLandroidx/compose/foundation/layout/RowColumnParentData;->(FZLandroidx/compose/foundation/layout/CrossAxisAlignment;)V +HSPLandroidx/compose/foundation/layout/RowColumnParentData;->(FZLandroidx/compose/foundation/layout/CrossAxisAlignment;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/RowColumnParentData;->getCrossAxisAlignment()Landroidx/compose/foundation/layout/CrossAxisAlignment; +HSPLandroidx/compose/foundation/layout/RowColumnParentData;->getFill()Z +HSPLandroidx/compose/foundation/layout/RowColumnParentData;->getWeight()F +HSPLandroidx/compose/foundation/layout/RowColumnParentData;->setFill(Z)V +HSPLandroidx/compose/foundation/layout/RowColumnParentData;->setWeight(F)V +Landroidx/compose/foundation/layout/RowKt; +HSPLandroidx/compose/foundation/layout/RowKt;->()V +HSPLandroidx/compose/foundation/layout/RowKt;->rowMeasurePolicy(Landroidx/compose/foundation/layout/Arrangement$Horizontal;Landroidx/compose/ui/Alignment$Vertical;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/layout/MeasurePolicy; +Landroidx/compose/foundation/layout/RowKt$DefaultRowMeasurePolicy$1; +HSPLandroidx/compose/foundation/layout/RowKt$DefaultRowMeasurePolicy$1;->()V +HSPLandroidx/compose/foundation/layout/RowKt$DefaultRowMeasurePolicy$1;->()V +HSPLandroidx/compose/foundation/layout/RowKt$DefaultRowMeasurePolicy$1;->invoke(I[ILandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/unit/Density;[I)V +HSPLandroidx/compose/foundation/layout/RowKt$DefaultRowMeasurePolicy$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/RowKt$rowMeasurePolicy$1$1; +HSPLandroidx/compose/foundation/layout/RowKt$rowMeasurePolicy$1$1;->(Landroidx/compose/foundation/layout/Arrangement$Horizontal;)V +HSPLandroidx/compose/foundation/layout/RowKt$rowMeasurePolicy$1$1;->invoke(I[ILandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/unit/Density;[I)V +HSPLandroidx/compose/foundation/layout/RowKt$rowMeasurePolicy$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/RowScope; +HSPLandroidx/compose/foundation/layout/RowScope;->weight$default(Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/ui/Modifier;FZILjava/lang/Object;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/layout/RowScopeInstance; +HSPLandroidx/compose/foundation/layout/RowScopeInstance;->()V +HSPLandroidx/compose/foundation/layout/RowScopeInstance;->()V +HSPLandroidx/compose/foundation/layout/RowScopeInstance;->weight(Landroidx/compose/ui/Modifier;FZ)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/layout/SizeElement; +HSPLandroidx/compose/foundation/layout/SizeElement;->(FFFFZLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/layout/SizeElement;->(FFFFZLkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/SizeElement;->(FFFFZLkotlin/jvm/functions/Function1;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/SizeElement;->create()Landroidx/compose/foundation/layout/SizeNode; +HSPLandroidx/compose/foundation/layout/SizeElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/layout/SizeElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/layout/SizeElement;->update(Landroidx/compose/foundation/layout/SizeNode;)V +HSPLandroidx/compose/foundation/layout/SizeElement;->update(Landroidx/compose/ui/Modifier$Node;)V +Landroidx/compose/foundation/layout/SizeKt; +HSPLandroidx/compose/foundation/layout/SizeKt;->()V +HSPLandroidx/compose/foundation/layout/SizeKt;->defaultMinSize-VpY3zN4$default(Landroidx/compose/ui/Modifier;FFILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->defaultMinSize-VpY3zN4(Landroidx/compose/ui/Modifier;FF)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->fillMaxHeight$default(Landroidx/compose/ui/Modifier;FILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->fillMaxHeight(Landroidx/compose/ui/Modifier;F)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->fillMaxSize$default(Landroidx/compose/ui/Modifier;FILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->fillMaxSize(Landroidx/compose/ui/Modifier;F)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->fillMaxWidth$default(Landroidx/compose/ui/Modifier;FILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->fillMaxWidth(Landroidx/compose/ui/Modifier;F)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->height-3ABfNKs(Landroidx/compose/ui/Modifier;F)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->heightIn-VpY3zN4$default(Landroidx/compose/ui/Modifier;FFILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->heightIn-VpY3zN4(Landroidx/compose/ui/Modifier;FF)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->requiredSize-3ABfNKs(Landroidx/compose/ui/Modifier;F)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->size-3ABfNKs(Landroidx/compose/ui/Modifier;F)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->width-3ABfNKs(Landroidx/compose/ui/Modifier;F)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->widthIn-VpY3zN4$default(Landroidx/compose/ui/Modifier;FFILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->widthIn-VpY3zN4(Landroidx/compose/ui/Modifier;FF)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->wrapContentSize$default(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Alignment;ZILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->wrapContentSize(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Alignment;Z)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/layout/SizeMode; +HSPLandroidx/compose/foundation/layout/SizeMode;->$values()[Landroidx/compose/foundation/layout/SizeMode; +HSPLandroidx/compose/foundation/layout/SizeMode;->()V +HSPLandroidx/compose/foundation/layout/SizeMode;->(Ljava/lang/String;I)V +Landroidx/compose/foundation/layout/SizeNode; +HSPLandroidx/compose/foundation/layout/SizeNode;->(FFFFZ)V +HSPLandroidx/compose/foundation/layout/SizeNode;->(FFFFZLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/SizeNode;->getTargetConstraints-OenEA2s(Landroidx/compose/ui/unit/Density;)J +HSPLandroidx/compose/foundation/layout/SizeNode;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/foundation/layout/SizeNode;->setEnforceIncoming(Z)V +HSPLandroidx/compose/foundation/layout/SizeNode;->setMaxHeight-0680j_4(F)V +HSPLandroidx/compose/foundation/layout/SizeNode;->setMaxWidth-0680j_4(F)V +HSPLandroidx/compose/foundation/layout/SizeNode;->setMinHeight-0680j_4(F)V +HSPLandroidx/compose/foundation/layout/SizeNode;->setMinWidth-0680j_4(F)V +Landroidx/compose/foundation/layout/SizeNode$measure$1; +HSPLandroidx/compose/foundation/layout/SizeNode$measure$1;->(Landroidx/compose/ui/layout/Placeable;)V +HSPLandroidx/compose/foundation/layout/SizeNode$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/layout/SizeNode$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/SpacerKt; +HSPLandroidx/compose/foundation/layout/SpacerKt;->Spacer(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)V +Landroidx/compose/foundation/layout/SpacerMeasurePolicy; +HSPLandroidx/compose/foundation/layout/SpacerMeasurePolicy;->()V +HSPLandroidx/compose/foundation/layout/SpacerMeasurePolicy;->()V +HSPLandroidx/compose/foundation/layout/SpacerMeasurePolicy;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/layout/SpacerMeasurePolicy$measure$1$1; +HSPLandroidx/compose/foundation/layout/SpacerMeasurePolicy$measure$1$1;->()V +HSPLandroidx/compose/foundation/layout/SpacerMeasurePolicy$measure$1$1;->()V +HSPLandroidx/compose/foundation/layout/SpacerMeasurePolicy$measure$1$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/layout/SpacerMeasurePolicy$measure$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/UnionInsets; +HSPLandroidx/compose/foundation/layout/UnionInsets;->(Landroidx/compose/foundation/layout/WindowInsets;Landroidx/compose/foundation/layout/WindowInsets;)V +HSPLandroidx/compose/foundation/layout/UnionInsets;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/layout/UnionInsets;->getBottom(Landroidx/compose/ui/unit/Density;)I +HSPLandroidx/compose/foundation/layout/UnionInsets;->getLeft(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/foundation/layout/UnionInsets;->getRight(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/foundation/layout/UnionInsets;->getTop(Landroidx/compose/ui/unit/Density;)I +Landroidx/compose/foundation/layout/UnionInsetsConsumingModifier; +HSPLandroidx/compose/foundation/layout/UnionInsetsConsumingModifier;->(Landroidx/compose/foundation/layout/WindowInsets;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/layout/UnionInsetsConsumingModifier;->calculateInsets(Landroidx/compose/foundation/layout/WindowInsets;)Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/UnionInsetsConsumingModifier;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/layout/UnspecifiedConstraintsElement; +HSPLandroidx/compose/foundation/layout/UnspecifiedConstraintsElement;->(FF)V +HSPLandroidx/compose/foundation/layout/UnspecifiedConstraintsElement;->(FFLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/UnspecifiedConstraintsElement;->create()Landroidx/compose/foundation/layout/UnspecifiedConstraintsNode; +HSPLandroidx/compose/foundation/layout/UnspecifiedConstraintsElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/layout/UnspecifiedConstraintsElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/layout/UnspecifiedConstraintsNode; +HSPLandroidx/compose/foundation/layout/UnspecifiedConstraintsNode;->(FF)V +HSPLandroidx/compose/foundation/layout/UnspecifiedConstraintsNode;->(FFLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/UnspecifiedConstraintsNode;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/layout/UnspecifiedConstraintsNode$measure$1; +HSPLandroidx/compose/foundation/layout/UnspecifiedConstraintsNode$measure$1;->(Landroidx/compose/ui/layout/Placeable;)V +HSPLandroidx/compose/foundation/layout/UnspecifiedConstraintsNode$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/layout/UnspecifiedConstraintsNode$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/ValueInsets; +HSPLandroidx/compose/foundation/layout/ValueInsets;->(Landroidx/compose/foundation/layout/InsetsValues;Ljava/lang/String;)V +HSPLandroidx/compose/foundation/layout/ValueInsets;->setValue$foundation_layout_release(Landroidx/compose/foundation/layout/InsetsValues;)V +Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsets;->()V +Landroidx/compose/foundation/layout/WindowInsets$Companion; +HSPLandroidx/compose/foundation/layout/WindowInsets$Companion;->()V +HSPLandroidx/compose/foundation/layout/WindowInsets$Companion;->()V +Landroidx/compose/foundation/layout/WindowInsetsHolder; +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder;->()V +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder;->(Landroidx/core/view/WindowInsetsCompat;Landroid/view/View;)V +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder;->(Landroidx/core/view/WindowInsetsCompat;Landroid/view/View;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder;->access$getViewMap$cp()Ljava/util/WeakHashMap; +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder;->decrementAccessors(Landroid/view/View;)V +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder;->getConsumes()Z +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder;->getDisplayCutout()Landroidx/compose/foundation/layout/AndroidWindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder;->getIme()Landroidx/compose/foundation/layout/AndroidWindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder;->getNavigationBars()Landroidx/compose/foundation/layout/AndroidWindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder;->getStatusBars()Landroidx/compose/foundation/layout/AndroidWindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder;->getSystemBars()Landroidx/compose/foundation/layout/AndroidWindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder;->incrementAccessors(Landroid/view/View;)V +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder;->update$default(Landroidx/compose/foundation/layout/WindowInsetsHolder;Landroidx/core/view/WindowInsetsCompat;IILjava/lang/Object;)V +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder;->update(Landroidx/core/view/WindowInsetsCompat;I)V +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder;->updateImeAnimationSource(Landroidx/core/view/WindowInsetsCompat;)V +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder;->updateImeAnimationTarget(Landroidx/core/view/WindowInsetsCompat;)V +Landroidx/compose/foundation/layout/WindowInsetsHolder$Companion; +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion;->()V +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion;->access$systemInsets(Landroidx/compose/foundation/layout/WindowInsetsHolder$Companion;Landroidx/core/view/WindowInsetsCompat;ILjava/lang/String;)Landroidx/compose/foundation/layout/AndroidWindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion;->access$valueInsetsIgnoringVisibility(Landroidx/compose/foundation/layout/WindowInsetsHolder$Companion;Landroidx/core/view/WindowInsetsCompat;ILjava/lang/String;)Landroidx/compose/foundation/layout/ValueInsets; +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion;->current(Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/WindowInsetsHolder; +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion;->getOrCreateFor(Landroid/view/View;)Landroidx/compose/foundation/layout/WindowInsetsHolder; +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion;->systemInsets(Landroidx/core/view/WindowInsetsCompat;ILjava/lang/String;)Landroidx/compose/foundation/layout/AndroidWindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion;->valueInsetsIgnoringVisibility(Landroidx/core/view/WindowInsetsCompat;ILjava/lang/String;)Landroidx/compose/foundation/layout/ValueInsets; +Landroidx/compose/foundation/layout/WindowInsetsHolder$Companion$current$1; +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion$current$1;->(Landroidx/compose/foundation/layout/WindowInsetsHolder;Landroid/view/View;)V +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion$current$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion$current$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/WindowInsetsHolder$Companion$current$1$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion$current$1$invoke$$inlined$onDispose$1;->(Landroidx/compose/foundation/layout/WindowInsetsHolder;Landroid/view/View;)V +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion$current$1$invoke$$inlined$onDispose$1;->dispose()V +Landroidx/compose/foundation/layout/WindowInsetsKt; +HSPLandroidx/compose/foundation/layout/WindowInsetsKt;->WindowInsets(IIII)Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsetsKt;->WindowInsets-a9UjIt4$default(FFFFILjava/lang/Object;)Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsetsKt;->WindowInsets-a9UjIt4(FFFF)Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsetsKt;->add(Landroidx/compose/foundation/layout/WindowInsets;Landroidx/compose/foundation/layout/WindowInsets;)Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsetsKt;->asPaddingValues(Landroidx/compose/foundation/layout/WindowInsets;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/PaddingValues; +HSPLandroidx/compose/foundation/layout/WindowInsetsKt;->asPaddingValues(Landroidx/compose/foundation/layout/WindowInsets;Landroidx/compose/ui/unit/Density;)Landroidx/compose/foundation/layout/PaddingValues; +HSPLandroidx/compose/foundation/layout/WindowInsetsKt;->exclude(Landroidx/compose/foundation/layout/WindowInsets;Landroidx/compose/foundation/layout/WindowInsets;)Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsetsKt;->only-bOOhFvg(Landroidx/compose/foundation/layout/WindowInsets;I)Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsetsKt;->union(Landroidx/compose/foundation/layout/WindowInsets;Landroidx/compose/foundation/layout/WindowInsets;)Landroidx/compose/foundation/layout/WindowInsets; +Landroidx/compose/foundation/layout/WindowInsetsPaddingKt; +HSPLandroidx/compose/foundation/layout/WindowInsetsPaddingKt;->()V +HSPLandroidx/compose/foundation/layout/WindowInsetsPaddingKt;->consumeWindowInsets(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/layout/WindowInsets;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/WindowInsetsPaddingKt;->getModifierLocalConsumedWindowInsets()Landroidx/compose/ui/modifier/ProvidableModifierLocal; +HSPLandroidx/compose/foundation/layout/WindowInsetsPaddingKt;->onConsumedWindowInsetsChanged(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/WindowInsetsPaddingKt;->windowInsetsPadding(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/layout/WindowInsets;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/layout/WindowInsetsPaddingKt$ModifierLocalConsumedWindowInsets$1; +HSPLandroidx/compose/foundation/layout/WindowInsetsPaddingKt$ModifierLocalConsumedWindowInsets$1;->()V +HSPLandroidx/compose/foundation/layout/WindowInsetsPaddingKt$ModifierLocalConsumedWindowInsets$1;->()V +HSPLandroidx/compose/foundation/layout/WindowInsetsPaddingKt$ModifierLocalConsumedWindowInsets$1;->invoke()Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsetsPaddingKt$ModifierLocalConsumedWindowInsets$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/layout/WindowInsetsSides; +HSPLandroidx/compose/foundation/layout/WindowInsetsSides;->()V +HSPLandroidx/compose/foundation/layout/WindowInsetsSides;->access$getAllowLeftInLtr$cp()I +HSPLandroidx/compose/foundation/layout/WindowInsetsSides;->access$getAllowRightInLtr$cp()I +HSPLandroidx/compose/foundation/layout/WindowInsetsSides;->access$getBottom$cp()I +HSPLandroidx/compose/foundation/layout/WindowInsetsSides;->access$getHorizontal$cp()I +HSPLandroidx/compose/foundation/layout/WindowInsetsSides;->access$getTop$cp()I +HSPLandroidx/compose/foundation/layout/WindowInsetsSides;->constructor-impl(I)I +HSPLandroidx/compose/foundation/layout/WindowInsetsSides;->equals-impl0(II)Z +HSPLandroidx/compose/foundation/layout/WindowInsetsSides;->hasAny-bkgdKaI$foundation_layout_release(II)Z +HSPLandroidx/compose/foundation/layout/WindowInsetsSides;->plus-gK_yJZ4(II)I +Landroidx/compose/foundation/layout/WindowInsetsSides$Companion; +HSPLandroidx/compose/foundation/layout/WindowInsetsSides$Companion;->()V +HSPLandroidx/compose/foundation/layout/WindowInsetsSides$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/WindowInsetsSides$Companion;->getAllowLeftInLtr-JoeWqyM$foundation_layout_release()I +HSPLandroidx/compose/foundation/layout/WindowInsetsSides$Companion;->getAllowRightInLtr-JoeWqyM$foundation_layout_release()I +HSPLandroidx/compose/foundation/layout/WindowInsetsSides$Companion;->getBottom-JoeWqyM()I +HSPLandroidx/compose/foundation/layout/WindowInsetsSides$Companion;->getHorizontal-JoeWqyM()I +HSPLandroidx/compose/foundation/layout/WindowInsetsSides$Companion;->getTop-JoeWqyM()I +Landroidx/compose/foundation/layout/WindowInsets_androidKt; +HSPLandroidx/compose/foundation/layout/WindowInsets_androidKt;->ValueInsets(Landroidx/core/graphics/Insets;Ljava/lang/String;)Landroidx/compose/foundation/layout/ValueInsets; +HSPLandroidx/compose/foundation/layout/WindowInsets_androidKt;->getDisplayCutout(Landroidx/compose/foundation/layout/WindowInsets$Companion;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsets_androidKt;->getIme(Landroidx/compose/foundation/layout/WindowInsets$Companion;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsets_androidKt;->getNavigationBars(Landroidx/compose/foundation/layout/WindowInsets$Companion;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsets_androidKt;->getStatusBars(Landroidx/compose/foundation/layout/WindowInsets$Companion;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsets_androidKt;->getSystemBars(Landroidx/compose/foundation/layout/WindowInsets$Companion;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsets_androidKt;->toInsetsValues(Landroidx/core/graphics/Insets;)Landroidx/compose/foundation/layout/InsetsValues; +Landroidx/compose/foundation/layout/WrapContentElement; +HSPLandroidx/compose/foundation/layout/WrapContentElement;->()V +HSPLandroidx/compose/foundation/layout/WrapContentElement;->(Landroidx/compose/foundation/layout/Direction;ZLkotlin/jvm/functions/Function2;Ljava/lang/Object;Ljava/lang/String;)V +HSPLandroidx/compose/foundation/layout/WrapContentElement;->create()Landroidx/compose/foundation/layout/WrapContentNode; +HSPLandroidx/compose/foundation/layout/WrapContentElement;->create()Landroidx/compose/ui/Modifier$Node; +Landroidx/compose/foundation/layout/WrapContentElement$Companion; +HSPLandroidx/compose/foundation/layout/WrapContentElement$Companion;->()V +HSPLandroidx/compose/foundation/layout/WrapContentElement$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/WrapContentElement$Companion;->height(Landroidx/compose/ui/Alignment$Vertical;Z)Landroidx/compose/foundation/layout/WrapContentElement; +HSPLandroidx/compose/foundation/layout/WrapContentElement$Companion;->size(Landroidx/compose/ui/Alignment;Z)Landroidx/compose/foundation/layout/WrapContentElement; +HSPLandroidx/compose/foundation/layout/WrapContentElement$Companion;->width(Landroidx/compose/ui/Alignment$Horizontal;Z)Landroidx/compose/foundation/layout/WrapContentElement; +Landroidx/compose/foundation/layout/WrapContentElement$Companion$height$1; +HSPLandroidx/compose/foundation/layout/WrapContentElement$Companion$height$1;->(Landroidx/compose/ui/Alignment$Vertical;)V +Landroidx/compose/foundation/layout/WrapContentElement$Companion$size$1; +HSPLandroidx/compose/foundation/layout/WrapContentElement$Companion$size$1;->(Landroidx/compose/ui/Alignment;)V +HSPLandroidx/compose/foundation/layout/WrapContentElement$Companion$size$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/layout/WrapContentElement$Companion$size$1;->invoke-5SAbXVA(JLandroidx/compose/ui/unit/LayoutDirection;)J +Landroidx/compose/foundation/layout/WrapContentElement$Companion$width$1; +HSPLandroidx/compose/foundation/layout/WrapContentElement$Companion$width$1;->(Landroidx/compose/ui/Alignment$Horizontal;)V +Landroidx/compose/foundation/layout/WrapContentNode; +HSPLandroidx/compose/foundation/layout/WrapContentNode;->(Landroidx/compose/foundation/layout/Direction;ZLkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/foundation/layout/WrapContentNode;->getAlignmentCallback()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/foundation/layout/WrapContentNode;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/layout/WrapContentNode$measure$1; +HSPLandroidx/compose/foundation/layout/WrapContentNode$measure$1;->(Landroidx/compose/foundation/layout/WrapContentNode;ILandroidx/compose/ui/layout/Placeable;ILandroidx/compose/ui/layout/MeasureScope;)V +HSPLandroidx/compose/foundation/layout/WrapContentNode$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/layout/WrapContentNode$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/EmptyLazyListLayoutInfo; +HSPLandroidx/compose/foundation/lazy/EmptyLazyListLayoutInfo;->()V +HSPLandroidx/compose/foundation/lazy/EmptyLazyListLayoutInfo;->()V +Landroidx/compose/foundation/lazy/LazyDslKt; +HSPLandroidx/compose/foundation/lazy/LazyDslKt;->LazyColumn(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/layout/PaddingValues;ZLandroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/ui/Alignment$Horizontal;Landroidx/compose/foundation/gestures/FlingBehavior;ZLkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)V +Landroidx/compose/foundation/lazy/LazyItemScope; +Landroidx/compose/foundation/lazy/LazyItemScopeImpl; +HSPLandroidx/compose/foundation/lazy/LazyItemScopeImpl;->()V +HSPLandroidx/compose/foundation/lazy/LazyItemScopeImpl;->setMaxSize(II)V +Landroidx/compose/foundation/lazy/LazyLayoutSemanticStateKt; +HSPLandroidx/compose/foundation/lazy/LazyLayoutSemanticStateKt;->LazyLayoutSemanticState(Landroidx/compose/foundation/lazy/LazyListState;Z)Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticState; +Landroidx/compose/foundation/lazy/LazyLayoutSemanticStateKt$LazyLayoutSemanticState$1; +HSPLandroidx/compose/foundation/lazy/LazyLayoutSemanticStateKt$LazyLayoutSemanticState$1;->(Landroidx/compose/foundation/lazy/LazyListState;Z)V +HSPLandroidx/compose/foundation/lazy/LazyLayoutSemanticStateKt$LazyLayoutSemanticState$1;->collectionInfo()Landroidx/compose/ui/semantics/CollectionInfo; +HSPLandroidx/compose/foundation/lazy/LazyLayoutSemanticStateKt$LazyLayoutSemanticState$1;->getCanScrollForward()Z +HSPLandroidx/compose/foundation/lazy/LazyLayoutSemanticStateKt$LazyLayoutSemanticState$1;->getCurrentPosition()F +Landroidx/compose/foundation/lazy/LazyListAnimateScrollScope; +HSPLandroidx/compose/foundation/lazy/LazyListAnimateScrollScope;->(Landroidx/compose/foundation/lazy/LazyListState;)V +Landroidx/compose/foundation/lazy/LazyListBeyondBoundsModifierKt; +HSPLandroidx/compose/foundation/lazy/LazyListBeyondBoundsModifierKt;->lazyListBeyondBoundsModifier(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/LazyListState;IZLandroidx/compose/foundation/gestures/Orientation;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/lazy/LazyListBeyondBoundsState; +HSPLandroidx/compose/foundation/lazy/LazyListBeyondBoundsState;->(Landroidx/compose/foundation/lazy/LazyListState;I)V +Landroidx/compose/foundation/lazy/LazyListInterval; +HSPLandroidx/compose/foundation/lazy/LazyListInterval;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function4;)V +HSPLandroidx/compose/foundation/lazy/LazyListInterval;->getItem()Lkotlin/jvm/functions/Function4; +HSPLandroidx/compose/foundation/lazy/LazyListInterval;->getKey()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/foundation/lazy/LazyListInterval;->getType()Lkotlin/jvm/functions/Function1; +Landroidx/compose/foundation/lazy/LazyListIntervalContent; +HSPLandroidx/compose/foundation/lazy/LazyListIntervalContent;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/lazy/LazyListIntervalContent;->getHeaderIndexes()Ljava/util/List; +HSPLandroidx/compose/foundation/lazy/LazyListIntervalContent;->getIntervals()Landroidx/compose/foundation/lazy/layout/IntervalList; +HSPLandroidx/compose/foundation/lazy/LazyListIntervalContent;->getIntervals()Landroidx/compose/foundation/lazy/layout/MutableIntervalList; +HSPLandroidx/compose/foundation/lazy/LazyListIntervalContent;->item(Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function3;)V +HSPLandroidx/compose/foundation/lazy/LazyListIntervalContent;->items(ILkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function4;)V +Landroidx/compose/foundation/lazy/LazyListIntervalContent$item$1; +HSPLandroidx/compose/foundation/lazy/LazyListIntervalContent$item$1;->(Ljava/lang/Object;)V +HSPLandroidx/compose/foundation/lazy/LazyListIntervalContent$item$1;->invoke(I)Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/LazyListIntervalContent$item$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/LazyListIntervalContent$item$2; +HSPLandroidx/compose/foundation/lazy/LazyListIntervalContent$item$2;->(Ljava/lang/Object;)V +HSPLandroidx/compose/foundation/lazy/LazyListIntervalContent$item$2;->invoke(I)Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/LazyListIntervalContent$item$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/LazyListIntervalContent$item$3; +HSPLandroidx/compose/foundation/lazy/LazyListIntervalContent$item$3;->(Lkotlin/jvm/functions/Function3;)V +HSPLandroidx/compose/foundation/lazy/LazyListIntervalContent$item$3;->invoke(Landroidx/compose/foundation/lazy/LazyItemScope;ILandroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/lazy/LazyListIntervalContent$item$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/LazyListItemInfo; +Landroidx/compose/foundation/lazy/LazyListItemPlacementAnimator; +HSPLandroidx/compose/foundation/lazy/LazyListItemPlacementAnimator;->()V +HSPLandroidx/compose/foundation/lazy/LazyListItemPlacementAnimator;->getHasAnimations(Landroidx/compose/foundation/lazy/LazyListMeasuredItem;)Z +HSPLandroidx/compose/foundation/lazy/LazyListItemPlacementAnimator;->getNode(Ljava/lang/Object;)Landroidx/compose/foundation/lazy/layout/LazyLayoutAnimateItemModifierNode; +HSPLandroidx/compose/foundation/lazy/LazyListItemPlacementAnimator;->onMeasured(IIILjava/util/List;Landroidx/compose/foundation/lazy/LazyListMeasuredItemProvider;Z)V +HSPLandroidx/compose/foundation/lazy/LazyListItemPlacementAnimator;->reset()V +Landroidx/compose/foundation/lazy/LazyListItemProvider; +Landroidx/compose/foundation/lazy/LazyListItemProviderImpl; +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderImpl;->(Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/lazy/LazyListIntervalContent;Landroidx/compose/foundation/lazy/LazyItemScopeImpl;Landroidx/compose/foundation/lazy/layout/LazyLayoutKeyIndexMap;)V +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderImpl;->Item(ILjava/lang/Object;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderImpl;->access$getIntervalContent$p(Landroidx/compose/foundation/lazy/LazyListItemProviderImpl;)Landroidx/compose/foundation/lazy/LazyListIntervalContent; +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderImpl;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderImpl;->getContentType(I)Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderImpl;->getHeaderIndexes()Ljava/util/List; +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderImpl;->getIndex(Ljava/lang/Object;)I +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderImpl;->getItemCount()I +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderImpl;->getItemScope()Landroidx/compose/foundation/lazy/LazyItemScopeImpl; +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderImpl;->getKey(I)Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderImpl;->getKeyIndexMap()Landroidx/compose/foundation/lazy/layout/LazyLayoutKeyIndexMap; +Landroidx/compose/foundation/lazy/LazyListItemProviderImpl$Item$1; +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderImpl$Item$1;->(Landroidx/compose/foundation/lazy/LazyListItemProviderImpl;I)V +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderImpl$Item$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderImpl$Item$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/LazyListItemProviderKt; +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderKt;->rememberLazyListItemProviderLambda(Landroidx/compose/foundation/lazy/LazyListState;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)Lkotlin/jvm/functions/Function0; +Landroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProviderLambda$1$1; +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProviderLambda$1$1;->(Ljava/lang/Object;)V +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProviderLambda$1$1;->get()Ljava/lang/Object; +Landroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProviderLambda$1$intervalContentState$1; +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProviderLambda$1$intervalContentState$1;->(Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProviderLambda$1$intervalContentState$1;->invoke()Landroidx/compose/foundation/lazy/LazyListIntervalContent; +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProviderLambda$1$intervalContentState$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProviderLambda$1$itemProviderState$1; +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProviderLambda$1$itemProviderState$1;->(Landroidx/compose/runtime/State;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/lazy/LazyItemScopeImpl;)V +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProviderLambda$1$itemProviderState$1;->invoke()Landroidx/compose/foundation/lazy/LazyListItemProviderImpl; +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProviderLambda$1$itemProviderState$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/lazy/LazyListKt; +HSPLandroidx/compose/foundation/lazy/LazyListKt;->LazyList(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/layout/PaddingValues;ZZLandroidx/compose/foundation/gestures/FlingBehavior;ZILandroidx/compose/ui/Alignment$Horizontal;Landroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/ui/Alignment$Vertical;Landroidx/compose/foundation/layout/Arrangement$Horizontal;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;III)V +HSPLandroidx/compose/foundation/lazy/LazyListKt;->ScrollPositionUpdater(Lkotlin/jvm/functions/Function0;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/lazy/LazyListKt;->rememberLazyListMeasurePolicy(Lkotlin/jvm/functions/Function0;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/layout/PaddingValues;ZZILandroidx/compose/ui/Alignment$Horizontal;Landroidx/compose/ui/Alignment$Vertical;Landroidx/compose/foundation/layout/Arrangement$Horizontal;Landroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/runtime/Composer;II)Lkotlin/jvm/functions/Function2; +Landroidx/compose/foundation/lazy/LazyListKt$ScrollPositionUpdater$1; +HSPLandroidx/compose/foundation/lazy/LazyListKt$ScrollPositionUpdater$1;->(Lkotlin/jvm/functions/Function0;Landroidx/compose/foundation/lazy/LazyListState;I)V +Landroidx/compose/foundation/lazy/LazyListKt$rememberLazyListMeasurePolicy$1$1; +HSPLandroidx/compose/foundation/lazy/LazyListKt$rememberLazyListMeasurePolicy$1$1;->(ZLandroidx/compose/foundation/layout/PaddingValues;ZLandroidx/compose/foundation/lazy/LazyListState;Lkotlin/jvm/functions/Function0;Landroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/foundation/layout/Arrangement$Horizontal;ILandroidx/compose/ui/Alignment$Horizontal;Landroidx/compose/ui/Alignment$Vertical;)V +HSPLandroidx/compose/foundation/lazy/LazyListKt$rememberLazyListMeasurePolicy$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/LazyListKt$rememberLazyListMeasurePolicy$1$1;->invoke-0kLqBqw(Landroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScope;J)Landroidx/compose/foundation/lazy/LazyListMeasureResult; +Landroidx/compose/foundation/lazy/LazyListKt$rememberLazyListMeasurePolicy$1$1$2; +HSPLandroidx/compose/foundation/lazy/LazyListKt$rememberLazyListMeasurePolicy$1$1$2;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScope;JII)V +HSPLandroidx/compose/foundation/lazy/LazyListKt$rememberLazyListMeasurePolicy$1$1$2;->invoke(IILkotlin/jvm/functions/Function1;)Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/foundation/lazy/LazyListKt$rememberLazyListMeasurePolicy$1$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/LazyListKt$rememberLazyListMeasurePolicy$1$1$measuredItemProvider$1; +HSPLandroidx/compose/foundation/lazy/LazyListKt$rememberLazyListMeasurePolicy$1$1$measuredItemProvider$1;->(JZLandroidx/compose/foundation/lazy/LazyListItemProvider;Landroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScope;IILandroidx/compose/ui/Alignment$Horizontal;Landroidx/compose/ui/Alignment$Vertical;ZIIJ)V +HSPLandroidx/compose/foundation/lazy/LazyListKt$rememberLazyListMeasurePolicy$1$1$measuredItemProvider$1;->createItem(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/List;)Landroidx/compose/foundation/lazy/LazyListMeasuredItem; +Landroidx/compose/foundation/lazy/LazyListLayoutInfo; +Landroidx/compose/foundation/lazy/LazyListMeasureKt; +HSPLandroidx/compose/foundation/lazy/LazyListMeasureKt;->calculateItemsOffsets$reverseAware(IZI)I +HSPLandroidx/compose/foundation/lazy/LazyListMeasureKt;->calculateItemsOffsets(Ljava/util/List;Ljava/util/List;Ljava/util/List;IIIIIZLandroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/foundation/layout/Arrangement$Horizontal;ZLandroidx/compose/ui/unit/Density;)Ljava/util/List; +HSPLandroidx/compose/foundation/lazy/LazyListMeasureKt;->createItemsAfterList(Ljava/util/List;Landroidx/compose/foundation/lazy/LazyListMeasuredItemProvider;IILjava/util/List;)Ljava/util/List; +HSPLandroidx/compose/foundation/lazy/LazyListMeasureKt;->createItemsBeforeList(ILandroidx/compose/foundation/lazy/LazyListMeasuredItemProvider;ILjava/util/List;)Ljava/util/List; +HSPLandroidx/compose/foundation/lazy/LazyListMeasureKt;->measureLazyList-CD5nmq0(ILandroidx/compose/foundation/lazy/LazyListMeasuredItemProvider;IIIIIIFJZLjava/util/List;Landroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/foundation/layout/Arrangement$Horizontal;ZLandroidx/compose/ui/unit/Density;Landroidx/compose/foundation/lazy/LazyListItemPlacementAnimator;ILjava/util/List;Lkotlin/jvm/functions/Function3;)Landroidx/compose/foundation/lazy/LazyListMeasureResult; +Landroidx/compose/foundation/lazy/LazyListMeasureKt$measureLazyList$5; +HSPLandroidx/compose/foundation/lazy/LazyListMeasureKt$measureLazyList$5;->(Ljava/util/List;Landroidx/compose/foundation/lazy/LazyListMeasuredItem;)V +HSPLandroidx/compose/foundation/lazy/LazyListMeasureKt$measureLazyList$5;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/lazy/LazyListMeasureKt$measureLazyList$5;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/LazyListMeasureResult; +HSPLandroidx/compose/foundation/lazy/LazyListMeasureResult;->(Landroidx/compose/foundation/lazy/LazyListMeasuredItem;IZFLandroidx/compose/ui/layout/MeasureResult;Ljava/util/List;IIIZLandroidx/compose/foundation/gestures/Orientation;II)V +HSPLandroidx/compose/foundation/lazy/LazyListMeasureResult;->getAlignmentLines()Ljava/util/Map; +HSPLandroidx/compose/foundation/lazy/LazyListMeasureResult;->getCanScrollForward()Z +HSPLandroidx/compose/foundation/lazy/LazyListMeasureResult;->getConsumedScroll()F +HSPLandroidx/compose/foundation/lazy/LazyListMeasureResult;->getFirstVisibleItem()Landroidx/compose/foundation/lazy/LazyListMeasuredItem; +HSPLandroidx/compose/foundation/lazy/LazyListMeasureResult;->getFirstVisibleItemScrollOffset()I +HSPLandroidx/compose/foundation/lazy/LazyListMeasureResult;->getHeight()I +HSPLandroidx/compose/foundation/lazy/LazyListMeasureResult;->getReverseLayout()Z +HSPLandroidx/compose/foundation/lazy/LazyListMeasureResult;->getTotalItemsCount()I +HSPLandroidx/compose/foundation/lazy/LazyListMeasureResult;->getViewportEndOffset()I +HSPLandroidx/compose/foundation/lazy/LazyListMeasureResult;->getVisibleItemsInfo()Ljava/util/List; +HSPLandroidx/compose/foundation/lazy/LazyListMeasureResult;->getWidth()I +HSPLandroidx/compose/foundation/lazy/LazyListMeasureResult;->placeChildren()V +Landroidx/compose/foundation/lazy/LazyListMeasuredItem; +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItem;->(ILjava/util/List;ZLandroidx/compose/ui/Alignment$Horizontal;Landroidx/compose/ui/Alignment$Vertical;Landroidx/compose/ui/unit/LayoutDirection;ZIIIJLjava/lang/Object;Ljava/lang/Object;)V +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItem;->(ILjava/util/List;ZLandroidx/compose/ui/Alignment$Horizontal;Landroidx/compose/ui/Alignment$Vertical;Landroidx/compose/ui/unit/LayoutDirection;ZIIIJLjava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItem;->getCrossAxisSize()I +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItem;->getIndex()I +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItem;->getKey()Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItem;->getMainAxisSize(Landroidx/compose/ui/layout/Placeable;)I +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItem;->getOffset()I +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItem;->getOffset-Bjo55l4(I)J +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItem;->getParentData(I)Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItem;->getPlaceablesCount()I +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItem;->getSize()I +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItem;->getSizeWithSpacings()I +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItem;->place(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItem;->position(III)V +Landroidx/compose/foundation/lazy/LazyListMeasuredItemProvider; +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItemProvider;->(JZLandroidx/compose/foundation/lazy/LazyListItemProvider;Landroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScope;)V +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItemProvider;->(JZLandroidx/compose/foundation/lazy/LazyListItemProvider;Landroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScope;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItemProvider;->getAndMeasure(I)Landroidx/compose/foundation/lazy/LazyListMeasuredItem; +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItemProvider;->getChildConstraints-msEJaDk()J +Landroidx/compose/foundation/lazy/LazyListScope; +HSPLandroidx/compose/foundation/lazy/LazyListScope;->item$default(Landroidx/compose/foundation/lazy/LazyListScope;Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function3;ILjava/lang/Object;)V +Landroidx/compose/foundation/lazy/LazyListScrollPosition; +HSPLandroidx/compose/foundation/lazy/LazyListScrollPosition;->(II)V +HSPLandroidx/compose/foundation/lazy/LazyListScrollPosition;->getIndex()I +HSPLandroidx/compose/foundation/lazy/LazyListScrollPosition;->getNearestRangeState()Landroidx/compose/foundation/lazy/layout/LazyLayoutNearestRangeState; +HSPLandroidx/compose/foundation/lazy/LazyListScrollPosition;->getScrollOffset()I +HSPLandroidx/compose/foundation/lazy/LazyListScrollPosition;->requestPosition(II)V +HSPLandroidx/compose/foundation/lazy/LazyListScrollPosition;->setIndex(I)V +HSPLandroidx/compose/foundation/lazy/LazyListScrollPosition;->setScrollOffset(I)V +HSPLandroidx/compose/foundation/lazy/LazyListScrollPosition;->update(II)V +HSPLandroidx/compose/foundation/lazy/LazyListScrollPosition;->updateFromMeasureResult(Landroidx/compose/foundation/lazy/LazyListMeasureResult;)V +HSPLandroidx/compose/foundation/lazy/LazyListScrollPosition;->updateScrollPositionIfTheFirstItemWasMoved(Landroidx/compose/foundation/lazy/LazyListItemProvider;I)I +Landroidx/compose/foundation/lazy/LazyListSemanticsKt; +HSPLandroidx/compose/foundation/lazy/LazyListSemanticsKt;->rememberLazyListSemanticState(Landroidx/compose/foundation/lazy/LazyListState;ZLandroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticState; +Landroidx/compose/foundation/lazy/LazyListState; +HSPLandroidx/compose/foundation/lazy/LazyListState;->()V +HSPLandroidx/compose/foundation/lazy/LazyListState;->(II)V +HSPLandroidx/compose/foundation/lazy/LazyListState;->access$setRemeasurement$p(Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/ui/layout/Remeasurement;)V +HSPLandroidx/compose/foundation/lazy/LazyListState;->applyMeasureResult$foundation_release(Landroidx/compose/foundation/lazy/LazyListMeasureResult;)V +HSPLandroidx/compose/foundation/lazy/LazyListState;->cancelPrefetchIfVisibleItemsChanged(Landroidx/compose/foundation/lazy/LazyListLayoutInfo;)V +HSPLandroidx/compose/foundation/lazy/LazyListState;->getAwaitLayoutModifier$foundation_release()Landroidx/compose/foundation/lazy/layout/AwaitFirstLayoutModifier; +HSPLandroidx/compose/foundation/lazy/LazyListState;->getBeyondBoundsInfo$foundation_release()Landroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsInfo; +HSPLandroidx/compose/foundation/lazy/LazyListState;->getCanScrollForward()Z +HSPLandroidx/compose/foundation/lazy/LazyListState;->getFirstVisibleItemIndex()I +HSPLandroidx/compose/foundation/lazy/LazyListState;->getFirstVisibleItemScrollOffset()I +HSPLandroidx/compose/foundation/lazy/LazyListState;->getInternalInteractionSource$foundation_release()Landroidx/compose/foundation/interaction/MutableInteractionSource; +HSPLandroidx/compose/foundation/lazy/LazyListState;->getLayoutInfo()Landroidx/compose/foundation/lazy/LazyListLayoutInfo; +HSPLandroidx/compose/foundation/lazy/LazyListState;->getNearestRange$foundation_release()Lkotlin/ranges/IntRange; +HSPLandroidx/compose/foundation/lazy/LazyListState;->getPinnedItems$foundation_release()Landroidx/compose/foundation/lazy/layout/LazyLayoutPinnedItemList; +HSPLandroidx/compose/foundation/lazy/LazyListState;->getPlacementAnimator$foundation_release()Landroidx/compose/foundation/lazy/LazyListItemPlacementAnimator; +HSPLandroidx/compose/foundation/lazy/LazyListState;->getPrefetchState$foundation_release()Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState; +HSPLandroidx/compose/foundation/lazy/LazyListState;->getRemeasurementModifier$foundation_release()Landroidx/compose/ui/layout/RemeasurementModifier; +HSPLandroidx/compose/foundation/lazy/LazyListState;->getScrollToBeConsumed$foundation_release()F +HSPLandroidx/compose/foundation/lazy/LazyListState;->isScrollInProgress()Z +HSPLandroidx/compose/foundation/lazy/LazyListState;->scroll(Landroidx/compose/foundation/MutatePriority;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/LazyListState;->scrollToItem(IILkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/LazyListState;->setCanScrollBackward(Z)V +HSPLandroidx/compose/foundation/lazy/LazyListState;->setCanScrollForward(Z)V +HSPLandroidx/compose/foundation/lazy/LazyListState;->setDensity$foundation_release(Landroidx/compose/ui/unit/Density;)V +HSPLandroidx/compose/foundation/lazy/LazyListState;->setPremeasureConstraints-BRTryo0$foundation_release(J)V +HSPLandroidx/compose/foundation/lazy/LazyListState;->snapToItemIndexInternal$foundation_release(II)V +HSPLandroidx/compose/foundation/lazy/LazyListState;->updateScrollPositionIfTheFirstItemWasMoved$foundation_release$default(Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/lazy/LazyListItemProvider;IILjava/lang/Object;)I +HSPLandroidx/compose/foundation/lazy/LazyListState;->updateScrollPositionIfTheFirstItemWasMoved$foundation_release(Landroidx/compose/foundation/lazy/LazyListItemProvider;I)I +Landroidx/compose/foundation/lazy/LazyListState$Companion; +HSPLandroidx/compose/foundation/lazy/LazyListState$Companion;->()V +HSPLandroidx/compose/foundation/lazy/LazyListState$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/foundation/lazy/LazyListState$Companion$Saver$1; +HSPLandroidx/compose/foundation/lazy/LazyListState$Companion$Saver$1;->()V +HSPLandroidx/compose/foundation/lazy/LazyListState$Companion$Saver$1;->()V +Landroidx/compose/foundation/lazy/LazyListState$Companion$Saver$2; +HSPLandroidx/compose/foundation/lazy/LazyListState$Companion$Saver$2;->()V +HSPLandroidx/compose/foundation/lazy/LazyListState$Companion$Saver$2;->()V +Landroidx/compose/foundation/lazy/LazyListState$remeasurementModifier$1; +HSPLandroidx/compose/foundation/lazy/LazyListState$remeasurementModifier$1;->(Landroidx/compose/foundation/lazy/LazyListState;)V +HSPLandroidx/compose/foundation/lazy/LazyListState$remeasurementModifier$1;->onRemeasurementAvailable(Landroidx/compose/ui/layout/Remeasurement;)V +Landroidx/compose/foundation/lazy/LazyListState$scroll$1; +HSPLandroidx/compose/foundation/lazy/LazyListState$scroll$1;->(Landroidx/compose/foundation/lazy/LazyListState;Lkotlin/coroutines/Continuation;)V +Landroidx/compose/foundation/lazy/LazyListState$scrollToItem$2; +HSPLandroidx/compose/foundation/lazy/LazyListState$scrollToItem$2;->(Landroidx/compose/foundation/lazy/LazyListState;IILkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/lazy/LazyListState$scrollToItem$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/lazy/LazyListState$scrollToItem$2;->invoke(Landroidx/compose/foundation/gestures/ScrollScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/LazyListState$scrollToItem$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/LazyListState$scrollToItem$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/LazyListState$scrollableState$1; +HSPLandroidx/compose/foundation/lazy/LazyListState$scrollableState$1;->(Landroidx/compose/foundation/lazy/LazyListState;)V +Landroidx/compose/foundation/lazy/layout/AwaitFirstLayoutModifier; +HSPLandroidx/compose/foundation/lazy/layout/AwaitFirstLayoutModifier;->()V +HSPLandroidx/compose/foundation/lazy/layout/AwaitFirstLayoutModifier;->onGloballyPositioned(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/foundation/lazy/layout/AwaitFirstLayoutModifier;->waitForFirstLayout(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/AwaitFirstLayoutModifier$waitForFirstLayout$1; +HSPLandroidx/compose/foundation/lazy/layout/AwaitFirstLayoutModifier$waitForFirstLayout$1;->(Landroidx/compose/foundation/lazy/layout/AwaitFirstLayoutModifier;Lkotlin/coroutines/Continuation;)V +Landroidx/compose/foundation/lazy/layout/DefaultLazyKey; +HSPLandroidx/compose/foundation/lazy/layout/DefaultLazyKey;->()V +HSPLandroidx/compose/foundation/lazy/layout/DefaultLazyKey;->(I)V +HSPLandroidx/compose/foundation/lazy/layout/DefaultLazyKey;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/lazy/layout/DefaultLazyKey;->hashCode()I +Landroidx/compose/foundation/lazy/layout/DefaultLazyKey$Companion; +HSPLandroidx/compose/foundation/lazy/layout/DefaultLazyKey$Companion;->()V +HSPLandroidx/compose/foundation/lazy/layout/DefaultLazyKey$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/foundation/lazy/layout/DefaultLazyKey$Companion$CREATOR$1; +HSPLandroidx/compose/foundation/lazy/layout/DefaultLazyKey$Companion$CREATOR$1;->()V +Landroidx/compose/foundation/lazy/layout/IntervalList; +Landroidx/compose/foundation/lazy/layout/IntervalList$Interval; +HSPLandroidx/compose/foundation/lazy/layout/IntervalList$Interval;->()V +HSPLandroidx/compose/foundation/lazy/layout/IntervalList$Interval;->(IILjava/lang/Object;)V +HSPLandroidx/compose/foundation/lazy/layout/IntervalList$Interval;->getSize()I +HSPLandroidx/compose/foundation/lazy/layout/IntervalList$Interval;->getStartIndex()I +HSPLandroidx/compose/foundation/lazy/layout/IntervalList$Interval;->getValue()Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/IntervalListKt; +HSPLandroidx/compose/foundation/lazy/layout/IntervalListKt;->access$binarySearch(Landroidx/compose/runtime/collection/MutableVector;I)I +HSPLandroidx/compose/foundation/lazy/layout/IntervalListKt;->binarySearch(Landroidx/compose/runtime/collection/MutableVector;I)I +Landroidx/compose/foundation/lazy/layout/LazyAnimateScrollScope; +Landroidx/compose/foundation/lazy/layout/LazyLayoutAnimateItemModifierNode; +Landroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsInfo; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsInfo;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsInfo;->hasIntervals()Z +Landroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsInfo$Interval; +Landroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsModifierLocal; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsModifierLocal;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsModifierLocal;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsState;Landroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsInfo;ZLandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/foundation/gestures/Orientation;)V +Landroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsModifierLocal$Companion; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsModifierLocal$Companion;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsModifierLocal$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsModifierLocal$Companion$emptyBeyondBoundsScope$1; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsModifierLocal$Companion$emptyBeyondBoundsScope$1;->()V +Landroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsState; +Landroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsStateKt; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsStateKt;->calculateLazyLayoutPinnedIndices(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemProvider;Landroidx/compose/foundation/lazy/layout/LazyLayoutPinnedItemList;Landroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsInfo;)Ljava/util/List; +Landroidx/compose/foundation/lazy/layout/LazyLayoutIntervalContent; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutIntervalContent;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutIntervalContent;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutIntervalContent;->getContentType(I)Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutIntervalContent;->getItemCount()I +Landroidx/compose/foundation/lazy/layout/LazyLayoutIntervalContent$Interval; +Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;->(Landroidx/compose/runtime/saveable/SaveableStateHolder;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;->access$getSaveableStateHolder$p(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;)Landroidx/compose/runtime/saveable/SaveableStateHolder; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;->getContent(ILjava/lang/Object;Ljava/lang/Object;)Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;->getContentType(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;->getItemProvider()Lkotlin/jvm/functions/Function0; +Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;ILjava/lang/Object;Ljava/lang/Object;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;->access$set_content$p(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;->createContentLambda()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;->getContent()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;->getContentType()Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;->getIndex()I +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;->getKey()Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1$2; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1$2;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1$2;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1$2$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1$2$invoke$$inlined$onDispose$1;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1$2$invoke$$inlined$onDispose$1;->dispose()V +Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactoryKt; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactoryKt;->SkippableItem-JVlU9Rs(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemProvider;Ljava/lang/Object;ILjava/lang/Object;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactoryKt;->access$SkippableItem-JVlU9Rs(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemProvider;Ljava/lang/Object;ILjava/lang/Object;Landroidx/compose/runtime/Composer;I)V +Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactoryKt$SkippableItem$1; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactoryKt$SkippableItem$1;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemProvider;ILjava/lang/Object;I)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactoryKt$SkippableItem$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactoryKt$SkippableItem$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/LazyLayoutItemProvider; +Landroidx/compose/foundation/lazy/layout/LazyLayoutItemProviderKt; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemProviderKt;->findIndexByKey(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemProvider;Ljava/lang/Object;I)I +Landroidx/compose/foundation/lazy/layout/LazyLayoutItemReusePolicy; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemReusePolicy;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemReusePolicy;->getSlotsToRetain(Landroidx/compose/ui/layout/SubcomposeSlotReusePolicy$SlotIdsSet;)V +Landroidx/compose/foundation/lazy/layout/LazyLayoutKeyIndexMap; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutKeyIndexMap;->()V +Landroidx/compose/foundation/lazy/layout/LazyLayoutKeyIndexMap$Empty; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutKeyIndexMap$Empty;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutKeyIndexMap$Empty;->()V +Landroidx/compose/foundation/lazy/layout/LazyLayoutKt; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutKt;->LazyLayout(Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +Landroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$3; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$3;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function2;ILandroidx/compose/runtime/State;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$3;->invoke(Landroidx/compose/runtime/saveable/SaveableStateHolder;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$3$2$1; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$3$2$1;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$3$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$3$2$1;->invoke-0kLqBqw(Landroidx/compose/ui/layout/SubcomposeMeasureScope;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$3$itemContentFactory$1$1; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$3$itemContentFactory$1$1;->(Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$3$itemContentFactory$1$1;->invoke()Landroidx/compose/foundation/lazy/layout/LazyLayoutItemProvider; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$3$itemContentFactory$1$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScope; +Landroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScopeImpl; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScopeImpl;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;Landroidx/compose/ui/layout/SubcomposeMeasureScope;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScopeImpl;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScopeImpl;->layout(IILjava/util/Map;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScopeImpl;->measure-0kLqBqw(IJ)Ljava/util/List; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScopeImpl;->roundToPx-0680j_4(F)I +Landroidx/compose/foundation/lazy/layout/LazyLayoutNearestRangeState; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutNearestRangeState;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutNearestRangeState;->(III)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutNearestRangeState;->getValue()Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutNearestRangeState;->getValue()Lkotlin/ranges/IntRange; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutNearestRangeState;->update(I)V +Landroidx/compose/foundation/lazy/layout/LazyLayoutNearestRangeState$Companion; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutNearestRangeState$Companion;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutNearestRangeState$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutNearestRangeState$Companion;->access$calculateNearestItemsRange(Landroidx/compose/foundation/lazy/layout/LazyLayoutNearestRangeState$Companion;III)Lkotlin/ranges/IntRange; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutNearestRangeState$Companion;->calculateNearestItemsRange(III)Lkotlin/ranges/IntRange; +Landroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItem; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItem;->(Ljava/lang/Object;Landroidx/compose/foundation/lazy/layout/LazyLayoutPinnedItemList;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItem;->getPinsCount()I +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItem;->get_parentPinnableContainer()Landroidx/compose/ui/layout/PinnableContainer; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItem;->onDisposed()V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItem;->setIndex(I)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItem;->setParentPinnableContainer(Landroidx/compose/ui/layout/PinnableContainer;)V +Landroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItemKt; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItemKt;->LazyLayoutPinnableItem(Ljava/lang/Object;ILandroidx/compose/foundation/lazy/layout/LazyLayoutPinnedItemList;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +Landroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItemKt$LazyLayoutPinnableItem$1$1; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItemKt$LazyLayoutPinnableItem$1$1;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItem;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItemKt$LazyLayoutPinnableItem$1$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItemKt$LazyLayoutPinnableItem$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItemKt$LazyLayoutPinnableItem$1$1$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItemKt$LazyLayoutPinnableItem$1$1$invoke$$inlined$onDispose$1;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItem;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItemKt$LazyLayoutPinnableItem$1$1$invoke$$inlined$onDispose$1;->dispose()V +Landroidx/compose/foundation/lazy/layout/LazyLayoutPinnedItemList; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPinnedItemList;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPinnedItemList;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPinnedItemList;->(Ljava/util/List;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPinnedItemList;->isEmpty()Z +Landroidx/compose/foundation/lazy/layout/LazyLayoutPinnedItemList$PinnedItem; +Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState;->setPrefetcher$foundation_release(Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState$Prefetcher;)V +Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState$PrefetchHandle; +Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState$Prefetcher; +Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState;Landroidx/compose/ui/layout/SubcomposeLayoutState;Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;Landroid/view/View;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher;->access$getFrameIntervalNs$cp()J +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher;->access$setFrameIntervalNs$cp(J)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher;->onRemembered()V +Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher$Companion; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher$Companion;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher$Companion;->access$calculateFrameIntervalIfNeeded(Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher$Companion;Landroid/view/View;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher$Companion;->calculateFrameIntervalIfNeeded(Landroid/view/View;)V +Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher$PrefetchRequest; +Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher_androidKt; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher_androidKt;->LazyLayoutPrefetcher(Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState;Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;Landroidx/compose/ui/layout/SubcomposeLayoutState;Landroidx/compose/runtime/Composer;I)V +Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticState; +Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt;->lazyLayoutSemantics(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function0;Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticState;Landroidx/compose/foundation/gestures/Orientation;ZZLandroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$1; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$1;->(Lkotlin/jvm/functions/Function1;ZLandroidx/compose/ui/semantics/ScrollAxisRange;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/semantics/CollectionInfo;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$accessibilityScrollState$1; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$accessibilityScrollState$1;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticState;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$accessibilityScrollState$1;->invoke()Ljava/lang/Float; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$accessibilityScrollState$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$accessibilityScrollState$2; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$accessibilityScrollState$2;->(Lkotlin/jvm/functions/Function0;Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticState;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$accessibilityScrollState$2;->invoke()Ljava/lang/Float; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$accessibilityScrollState$2;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$indexForKeyMapping$1; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$indexForKeyMapping$1;->(Lkotlin/jvm/functions/Function0;)V +Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$scrollByAction$1; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$scrollByAction$1;->(ZLkotlinx/coroutines/CoroutineScope;Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticState;)V +Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$scrollToIndexAction$1; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$scrollToIndexAction$1;->(Lkotlin/jvm/functions/Function0;Lkotlinx/coroutines/CoroutineScope;Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticState;)V +Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;->(Landroidx/compose/runtime/saveable/SaveableStateRegistry;)V +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;->(Landroidx/compose/runtime/saveable/SaveableStateRegistry;Ljava/util/Map;)V +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;->SaveableStateProvider(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;->access$getPreviouslyComposedKeys$p(Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;)Ljava/util/Set; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;->canBeSaved(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;->consumeRestored(Ljava/lang/String;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;->getWrappedHolder()Landroidx/compose/runtime/saveable/SaveableStateHolder; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;->performSave()Ljava/util/Map; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;->registerProvider(Ljava/lang/String;Lkotlin/jvm/functions/Function0;)Landroidx/compose/runtime/saveable/SaveableStateRegistry$Entry; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;->setWrappedHolder(Landroidx/compose/runtime/saveable/SaveableStateHolder;)V +Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$1; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$1;->(Landroidx/compose/runtime/saveable/SaveableStateRegistry;)V +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$1;->invoke(Ljava/lang/Object;)Ljava/lang/Boolean; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$Companion; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$Companion;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$Companion;->saver(Landroidx/compose/runtime/saveable/SaveableStateRegistry;)Landroidx/compose/runtime/saveable/Saver; +Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$Companion$saver$1; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$Companion$saver$1;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$Companion$saver$1;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$Companion$saver$1;->invoke(Landroidx/compose/runtime/saveable/SaverScope;Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;)Ljava/util/Map; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$Companion$saver$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$Companion$saver$2; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$Companion$saver$2;->(Landroidx/compose/runtime/saveable/SaveableStateRegistry;)V +Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$SaveableStateProvider$1; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$SaveableStateProvider$1;->(Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;Ljava/lang/Object;)V +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$SaveableStateProvider$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$SaveableStateProvider$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$SaveableStateProvider$1$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$SaveableStateProvider$1$invoke$$inlined$onDispose$1;->(Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;Ljava/lang/Object;)V +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$SaveableStateProvider$1$invoke$$inlined$onDispose$1;->dispose()V +Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$SaveableStateProvider$2; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$SaveableStateProvider$2;->(Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;I)V +Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolderKt; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolderKt;->LazySaveableStateHolderProvider(Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;I)V +Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolderKt$LazySaveableStateHolderProvider$1; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolderKt$LazySaveableStateHolderProvider$1;->(Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;Lkotlin/jvm/functions/Function3;I)V +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolderKt$LazySaveableStateHolderProvider$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolderKt$LazySaveableStateHolderProvider$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolderKt$LazySaveableStateHolderProvider$holder$1; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolderKt$LazySaveableStateHolderProvider$holder$1;->(Landroidx/compose/runtime/saveable/SaveableStateRegistry;)V +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolderKt$LazySaveableStateHolderProvider$holder$1;->invoke()Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolderKt$LazySaveableStateHolderProvider$holder$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/Lazy_androidKt; +HSPLandroidx/compose/foundation/lazy/layout/Lazy_androidKt;->getDefaultLazyLayoutKey(I)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/MutableIntervalList; +HSPLandroidx/compose/foundation/lazy/layout/MutableIntervalList;->()V +HSPLandroidx/compose/foundation/lazy/layout/MutableIntervalList;->()V +HSPLandroidx/compose/foundation/lazy/layout/MutableIntervalList;->addInterval(ILjava/lang/Object;)V +HSPLandroidx/compose/foundation/lazy/layout/MutableIntervalList;->checkIndexBounds(I)V +HSPLandroidx/compose/foundation/lazy/layout/MutableIntervalList;->contains(Landroidx/compose/foundation/lazy/layout/IntervalList$Interval;I)Z +HSPLandroidx/compose/foundation/lazy/layout/MutableIntervalList;->forEach(IILkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/lazy/layout/MutableIntervalList;->get(I)Landroidx/compose/foundation/lazy/layout/IntervalList$Interval; +HSPLandroidx/compose/foundation/lazy/layout/MutableIntervalList;->getIntervalForIndex(I)Landroidx/compose/foundation/lazy/layout/IntervalList$Interval; +HSPLandroidx/compose/foundation/lazy/layout/MutableIntervalList;->getSize()I +Landroidx/compose/foundation/lazy/layout/NearestRangeKeyIndexMap; +HSPLandroidx/compose/foundation/lazy/layout/NearestRangeKeyIndexMap;->(Lkotlin/ranges/IntRange;Landroidx/compose/foundation/lazy/layout/LazyLayoutIntervalContent;)V +HSPLandroidx/compose/foundation/lazy/layout/NearestRangeKeyIndexMap;->access$getKeys$p(Landroidx/compose/foundation/lazy/layout/NearestRangeKeyIndexMap;)[Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/layout/NearestRangeKeyIndexMap;->access$getKeysStartIndex$p(Landroidx/compose/foundation/lazy/layout/NearestRangeKeyIndexMap;)I +HSPLandroidx/compose/foundation/lazy/layout/NearestRangeKeyIndexMap;->getIndex(Ljava/lang/Object;)I +HSPLandroidx/compose/foundation/lazy/layout/NearestRangeKeyIndexMap;->getKey(I)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/NearestRangeKeyIndexMap$1$1; +HSPLandroidx/compose/foundation/lazy/layout/NearestRangeKeyIndexMap$1$1;->(IILjava/util/HashMap;Landroidx/compose/foundation/lazy/layout/NearestRangeKeyIndexMap;)V +HSPLandroidx/compose/foundation/lazy/layout/NearestRangeKeyIndexMap$1$1;->invoke(Landroidx/compose/foundation/lazy/layout/IntervalList$Interval;)V +HSPLandroidx/compose/foundation/lazy/layout/NearestRangeKeyIndexMap$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/StableValue; +HSPLandroidx/compose/foundation/lazy/layout/StableValue;->constructor-impl(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/relocation/BringIntoViewChildNode; +HSPLandroidx/compose/foundation/relocation/BringIntoViewChildNode;->()V +HSPLandroidx/compose/foundation/relocation/BringIntoViewChildNode;->getLayoutCoordinates()Landroidx/compose/ui/layout/LayoutCoordinates; +HSPLandroidx/compose/foundation/relocation/BringIntoViewChildNode;->getLocalParent()Landroidx/compose/foundation/relocation/BringIntoViewParent; +HSPLandroidx/compose/foundation/relocation/BringIntoViewChildNode;->getParent()Landroidx/compose/foundation/relocation/BringIntoViewParent; +HSPLandroidx/compose/foundation/relocation/BringIntoViewChildNode;->onPlaced(Landroidx/compose/ui/layout/LayoutCoordinates;)V +Landroidx/compose/foundation/relocation/BringIntoViewKt; +HSPLandroidx/compose/foundation/relocation/BringIntoViewKt;->()V +HSPLandroidx/compose/foundation/relocation/BringIntoViewKt;->getModifierLocalBringIntoViewParent()Landroidx/compose/ui/modifier/ProvidableModifierLocal; +Landroidx/compose/foundation/relocation/BringIntoViewKt$ModifierLocalBringIntoViewParent$1; +HSPLandroidx/compose/foundation/relocation/BringIntoViewKt$ModifierLocalBringIntoViewParent$1;->()V +HSPLandroidx/compose/foundation/relocation/BringIntoViewKt$ModifierLocalBringIntoViewParent$1;->()V +HSPLandroidx/compose/foundation/relocation/BringIntoViewKt$ModifierLocalBringIntoViewParent$1;->invoke()Landroidx/compose/foundation/relocation/BringIntoViewParent; +HSPLandroidx/compose/foundation/relocation/BringIntoViewKt$ModifierLocalBringIntoViewParent$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/relocation/BringIntoViewParent; +Landroidx/compose/foundation/relocation/BringIntoViewRequester; +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequester;->bringIntoView$default(Landroidx/compose/foundation/relocation/BringIntoViewRequester;Landroidx/compose/ui/geometry/Rect;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/relocation/BringIntoViewRequesterElement; +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterElement;->(Landroidx/compose/foundation/relocation/BringIntoViewRequester;)V +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterElement;->create()Landroidx/compose/foundation/relocation/BringIntoViewRequesterNode; +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/relocation/BringIntoViewRequesterImpl; +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterImpl;->()V +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterImpl;->bringIntoView(Landroidx/compose/ui/geometry/Rect;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterImpl;->getModifiers()Landroidx/compose/runtime/collection/MutableVector; +Landroidx/compose/foundation/relocation/BringIntoViewRequesterImpl$bringIntoView$1; +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterImpl$bringIntoView$1;->(Landroidx/compose/foundation/relocation/BringIntoViewRequesterImpl;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterImpl$bringIntoView$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/relocation/BringIntoViewRequesterKt; +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterKt;->BringIntoViewRequester()Landroidx/compose/foundation/relocation/BringIntoViewRequester; +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterKt;->bringIntoViewRequester(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/relocation/BringIntoViewRequester;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/relocation/BringIntoViewRequesterNode; +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterNode;->(Landroidx/compose/foundation/relocation/BringIntoViewRequester;)V +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterNode;->bringIntoView(Landroidx/compose/ui/geometry/Rect;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterNode;->disposeRequester()V +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterNode;->onAttach()V +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterNode;->onDetach()V +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterNode;->updateRequester(Landroidx/compose/foundation/relocation/BringIntoViewRequester;)V +Landroidx/compose/foundation/relocation/BringIntoViewRequesterNode$bringIntoView$2; +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterNode$bringIntoView$2;->(Landroidx/compose/ui/geometry/Rect;Landroidx/compose/foundation/relocation/BringIntoViewRequesterNode;)V +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterNode$bringIntoView$2;->invoke()Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterNode$bringIntoView$2;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/relocation/BringIntoViewResponder; +Landroidx/compose/foundation/relocation/BringIntoViewResponderElement; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderElement;->(Landroidx/compose/foundation/relocation/BringIntoViewResponder;)V +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderElement;->create()Landroidx/compose/foundation/relocation/BringIntoViewResponderNode; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/relocation/BringIntoViewResponderKt; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderKt;->access$localRectOf(Landroidx/compose/ui/layout/LayoutCoordinates;Landroidx/compose/ui/layout/LayoutCoordinates;Landroidx/compose/ui/geometry/Rect;)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderKt;->bringIntoViewResponder(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/relocation/BringIntoViewResponder;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderKt;->localRectOf(Landroidx/compose/ui/layout/LayoutCoordinates;Landroidx/compose/ui/layout/LayoutCoordinates;Landroidx/compose/ui/geometry/Rect;)Landroidx/compose/ui/geometry/Rect; +Landroidx/compose/foundation/relocation/BringIntoViewResponderNode; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode;->(Landroidx/compose/foundation/relocation/BringIntoViewResponder;)V +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode;->access$bringChildIntoView$localRect(Landroidx/compose/foundation/relocation/BringIntoViewResponderNode;Landroidx/compose/ui/layout/LayoutCoordinates;Lkotlin/jvm/functions/Function0;)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode;->bringChildIntoView$localRect(Landroidx/compose/foundation/relocation/BringIntoViewResponderNode;Landroidx/compose/ui/layout/LayoutCoordinates;Lkotlin/jvm/functions/Function0;)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode;->bringChildIntoView(Landroidx/compose/ui/layout/LayoutCoordinates;Lkotlin/jvm/functions/Function0;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode;->getProvidedValues()Landroidx/compose/ui/modifier/ModifierLocalMap; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode;->getResponder()Landroidx/compose/foundation/relocation/BringIntoViewResponder; +Landroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2;->(Landroidx/compose/foundation/relocation/BringIntoViewResponderNode;Landroidx/compose/ui/layout/LayoutCoordinates;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2$1; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2$1;->(Landroidx/compose/foundation/relocation/BringIntoViewResponderNode;Landroidx/compose/ui/layout/LayoutCoordinates;Lkotlin/jvm/functions/Function0;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2$1$1; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2$1$1;->(Landroidx/compose/foundation/relocation/BringIntoViewResponderNode;Landroidx/compose/ui/layout/LayoutCoordinates;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2$1$1;->invoke()Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2$1$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2$2; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2$2;->(Landroidx/compose/foundation/relocation/BringIntoViewResponderNode;Lkotlin/jvm/functions/Function0;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$parentRect$1; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$parentRect$1;->(Landroidx/compose/foundation/relocation/BringIntoViewResponderNode;Landroidx/compose/ui/layout/LayoutCoordinates;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$parentRect$1;->invoke()Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$parentRect$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/relocation/BringIntoViewResponder_androidKt; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponder_androidKt;->access$toRect(Landroidx/compose/ui/geometry/Rect;)Landroid/graphics/Rect; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponder_androidKt;->defaultBringIntoViewParent(Landroidx/compose/ui/node/CompositionLocalConsumerModifierNode;)Landroidx/compose/foundation/relocation/BringIntoViewParent; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponder_androidKt;->toRect(Landroidx/compose/ui/geometry/Rect;)Landroid/graphics/Rect; +Landroidx/compose/foundation/relocation/BringIntoViewResponder_androidKt$defaultBringIntoViewParent$1; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponder_androidKt$defaultBringIntoViewParent$1;->(Landroidx/compose/ui/node/CompositionLocalConsumerModifierNode;)V +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponder_androidKt$defaultBringIntoViewParent$1;->bringChildIntoView(Landroidx/compose/ui/layout/LayoutCoordinates;Lkotlin/jvm/functions/Function0;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/foundation/selection/SelectableGroupKt; +HSPLandroidx/compose/foundation/selection/SelectableGroupKt;->selectableGroup(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/selection/SelectableGroupKt$selectableGroup$1; +HSPLandroidx/compose/foundation/selection/SelectableGroupKt$selectableGroup$1;->()V +HSPLandroidx/compose/foundation/selection/SelectableGroupKt$selectableGroup$1;->()V +HSPLandroidx/compose/foundation/selection/SelectableGroupKt$selectableGroup$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/foundation/selection/SelectableGroupKt$selectableGroup$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/selection/SelectableKt; +HSPLandroidx/compose/foundation/selection/SelectableKt;->selectable-O2vRcR0(Landroidx/compose/ui/Modifier;ZLandroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/Indication;ZLandroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/selection/SelectableKt$selectable$4$1; +HSPLandroidx/compose/foundation/selection/SelectableKt$selectable$4$1;->(Z)V +HSPLandroidx/compose/foundation/selection/SelectableKt$selectable$4$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/foundation/selection/SelectableKt$selectable$4$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/shape/CornerBasedShape; +HSPLandroidx/compose/foundation/shape/CornerBasedShape;->()V +HSPLandroidx/compose/foundation/shape/CornerBasedShape;->(Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;)V +HSPLandroidx/compose/foundation/shape/CornerBasedShape;->copy$default(Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;ILjava/lang/Object;)Landroidx/compose/foundation/shape/CornerBasedShape; +HSPLandroidx/compose/foundation/shape/CornerBasedShape;->createOutline-Pq9zytI(JLandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/unit/Density;)Landroidx/compose/ui/graphics/Outline; +HSPLandroidx/compose/foundation/shape/CornerBasedShape;->getTopStart()Landroidx/compose/foundation/shape/CornerSize; +Landroidx/compose/foundation/shape/CornerSize; +Landroidx/compose/foundation/shape/CornerSizeKt; +HSPLandroidx/compose/foundation/shape/CornerSizeKt;->()V +HSPLandroidx/compose/foundation/shape/CornerSizeKt;->CornerSize(I)Landroidx/compose/foundation/shape/CornerSize; +HSPLandroidx/compose/foundation/shape/CornerSizeKt;->CornerSize-0680j_4(F)Landroidx/compose/foundation/shape/CornerSize; +Landroidx/compose/foundation/shape/CornerSizeKt$ZeroCornerSize$1; +HSPLandroidx/compose/foundation/shape/CornerSizeKt$ZeroCornerSize$1;->()V +Landroidx/compose/foundation/shape/DpCornerSize; +HSPLandroidx/compose/foundation/shape/DpCornerSize;->(F)V +HSPLandroidx/compose/foundation/shape/DpCornerSize;->(FLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/shape/DpCornerSize;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/shape/DpCornerSize;->toPx-TmRCtEA(JLandroidx/compose/ui/unit/Density;)F +Landroidx/compose/foundation/shape/PercentCornerSize; +HSPLandroidx/compose/foundation/shape/PercentCornerSize;->(F)V +HSPLandroidx/compose/foundation/shape/PercentCornerSize;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/shape/PercentCornerSize;->toPx-TmRCtEA(JLandroidx/compose/ui/unit/Density;)F +Landroidx/compose/foundation/shape/RoundedCornerShape; +HSPLandroidx/compose/foundation/shape/RoundedCornerShape;->()V +HSPLandroidx/compose/foundation/shape/RoundedCornerShape;->(Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;)V +HSPLandroidx/compose/foundation/shape/RoundedCornerShape;->copy(Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;)Landroidx/compose/foundation/shape/CornerBasedShape; +HSPLandroidx/compose/foundation/shape/RoundedCornerShape;->copy(Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;)Landroidx/compose/foundation/shape/RoundedCornerShape; +HSPLandroidx/compose/foundation/shape/RoundedCornerShape;->createOutline-LjSzlW0(JFFFFLandroidx/compose/ui/unit/LayoutDirection;)Landroidx/compose/ui/graphics/Outline; +HSPLandroidx/compose/foundation/shape/RoundedCornerShape;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/shape/RoundedCornerShapeKt; +HSPLandroidx/compose/foundation/shape/RoundedCornerShapeKt;->()V +HSPLandroidx/compose/foundation/shape/RoundedCornerShapeKt;->RoundedCornerShape(I)Landroidx/compose/foundation/shape/RoundedCornerShape; +HSPLandroidx/compose/foundation/shape/RoundedCornerShapeKt;->RoundedCornerShape(Landroidx/compose/foundation/shape/CornerSize;)Landroidx/compose/foundation/shape/RoundedCornerShape; +HSPLandroidx/compose/foundation/shape/RoundedCornerShapeKt;->RoundedCornerShape-0680j_4(F)Landroidx/compose/foundation/shape/RoundedCornerShape; +HSPLandroidx/compose/foundation/shape/RoundedCornerShapeKt;->RoundedCornerShape-a9UjIt4(FFFF)Landroidx/compose/foundation/shape/RoundedCornerShape; +HSPLandroidx/compose/foundation/shape/RoundedCornerShapeKt;->getCircleShape()Landroidx/compose/foundation/shape/RoundedCornerShape; +Landroidx/compose/foundation/text/AnnotatedStringResolveInlineContentKt; +HSPLandroidx/compose/foundation/text/AnnotatedStringResolveInlineContentKt;->()V +HSPLandroidx/compose/foundation/text/AnnotatedStringResolveInlineContentKt;->hasInlineContent(Landroidx/compose/ui/text/AnnotatedString;)Z +Landroidx/compose/foundation/text/BasicTextFieldKt; +HSPLandroidx/compose/foundation/text/BasicTextFieldKt;->BasicTextField$lambda$2(Landroidx/compose/runtime/MutableState;)Landroidx/compose/ui/text/input/TextFieldValue; +HSPLandroidx/compose/foundation/text/BasicTextFieldKt;->BasicTextField$lambda$3(Landroidx/compose/runtime/MutableState;Landroidx/compose/ui/text/input/TextFieldValue;)V +HSPLandroidx/compose/foundation/text/BasicTextFieldKt;->BasicTextField$lambda$6(Landroidx/compose/runtime/MutableState;)Ljava/lang/String; +HSPLandroidx/compose/foundation/text/BasicTextFieldKt;->BasicTextField$lambda$7(Landroidx/compose/runtime/MutableState;Ljava/lang/String;)V +HSPLandroidx/compose/foundation/text/BasicTextFieldKt;->BasicTextField(Ljava/lang/String;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;ZZLandroidx/compose/ui/text/TextStyle;Landroidx/compose/foundation/text/KeyboardOptions;Landroidx/compose/foundation/text/KeyboardActions;ZIILandroidx/compose/ui/text/input/VisualTransformation;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/ui/graphics/Brush;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;III)V +HSPLandroidx/compose/foundation/text/BasicTextFieldKt;->access$BasicTextField$lambda$2(Landroidx/compose/runtime/MutableState;)Landroidx/compose/ui/text/input/TextFieldValue; +HSPLandroidx/compose/foundation/text/BasicTextFieldKt;->access$BasicTextField$lambda$3(Landroidx/compose/runtime/MutableState;Landroidx/compose/ui/text/input/TextFieldValue;)V +HSPLandroidx/compose/foundation/text/BasicTextFieldKt;->access$BasicTextField$lambda$6(Landroidx/compose/runtime/MutableState;)Ljava/lang/String; +HSPLandroidx/compose/foundation/text/BasicTextFieldKt;->access$BasicTextField$lambda$7(Landroidx/compose/runtime/MutableState;Ljava/lang/String;)V +Landroidx/compose/foundation/text/BasicTextFieldKt$BasicTextField$1; +HSPLandroidx/compose/foundation/text/BasicTextFieldKt$BasicTextField$1;->()V +HSPLandroidx/compose/foundation/text/BasicTextFieldKt$BasicTextField$1;->()V +HSPLandroidx/compose/foundation/text/BasicTextFieldKt$BasicTextField$1;->invoke(Landroidx/compose/ui/text/TextLayoutResult;)V +HSPLandroidx/compose/foundation/text/BasicTextFieldKt$BasicTextField$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/BasicTextFieldKt$BasicTextField$3$1; +HSPLandroidx/compose/foundation/text/BasicTextFieldKt$BasicTextField$3$1;->(Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/runtime/MutableState;)V +HSPLandroidx/compose/foundation/text/BasicTextFieldKt$BasicTextField$3$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/BasicTextFieldKt$BasicTextField$3$1;->invoke()V +Landroidx/compose/foundation/text/BasicTextFieldKt$BasicTextField$4$1; +HSPLandroidx/compose/foundation/text/BasicTextFieldKt$BasicTextField$4$1;->(Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/MutableState;Landroidx/compose/runtime/MutableState;)V +HSPLandroidx/compose/foundation/text/BasicTextFieldKt$BasicTextField$4$1;->invoke(Landroidx/compose/ui/text/input/TextFieldValue;)V +HSPLandroidx/compose/foundation/text/BasicTextFieldKt$BasicTextField$4$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/BasicTextFieldKt$BasicTextField$5; +HSPLandroidx/compose/foundation/text/BasicTextFieldKt$BasicTextField$5;->(Ljava/lang/String;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;ZZLandroidx/compose/ui/text/TextStyle;Landroidx/compose/foundation/text/KeyboardOptions;Landroidx/compose/foundation/text/KeyboardActions;ZIILandroidx/compose/ui/text/input/VisualTransformation;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/ui/graphics/Brush;Lkotlin/jvm/functions/Function3;III)V +Landroidx/compose/foundation/text/BasicTextKt; +HSPLandroidx/compose/foundation/text/BasicTextKt;->BasicText-4YKlhWE(Ljava/lang/String;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/text/TextStyle;Lkotlin/jvm/functions/Function1;IZIILandroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/foundation/text/BasicTextKt;->BasicText-RWo7tUw(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/text/TextStyle;Lkotlin/jvm/functions/Function1;IZIILjava/util/Map;Landroidx/compose/ui/graphics/ColorProducer;Landroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/foundation/text/BasicTextKt;->BasicText-VhcvRP8(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/text/TextStyle;Lkotlin/jvm/functions/Function1;IZIILjava/util/Map;Landroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/foundation/text/BasicTextKt;->BasicText-VhcvRP8(Ljava/lang/String;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/text/TextStyle;Lkotlin/jvm/functions/Function1;IZIILandroidx/compose/ui/graphics/ColorProducer;Landroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/foundation/text/BasicTextKt;->textModifier-RWo7tUw(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Lkotlin/jvm/functions/Function1;IZIILandroidx/compose/ui/text/font/FontFamily$Resolver;Ljava/util/List;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/text/modifiers/SelectionController;Landroidx/compose/ui/graphics/ColorProducer;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/text/BasicTextKt$BasicText-RWo7tUw$$inlined$Layout$1; +HSPLandroidx/compose/foundation/text/BasicTextKt$BasicText-RWo7tUw$$inlined$Layout$1;->(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/foundation/text/BasicTextKt$BasicText-RWo7tUw$$inlined$Layout$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/text/BasicTextKt$BasicText-VhcvRP8$$inlined$Layout$1; +HSPLandroidx/compose/foundation/text/BasicTextKt$BasicText-VhcvRP8$$inlined$Layout$1;->(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/foundation/text/BasicTextKt$BasicText-VhcvRP8$$inlined$Layout$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt;->CoreTextField$lambda$8(Landroidx/compose/runtime/State;)Z +HSPLandroidx/compose/foundation/text/CoreTextFieldKt;->CoreTextField(Landroidx/compose/ui/text/input/TextFieldValue;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/input/VisualTransformation;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/ui/graphics/Brush;ZIILandroidx/compose/ui/text/input/ImeOptions;Landroidx/compose/foundation/text/KeyboardActions;ZZLkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;III)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt;->CoreTextFieldRootBox(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt;->SelectionToolbarAndHandles(Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;ZLandroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt;->access$CoreTextField$lambda$8(Landroidx/compose/runtime/State;)Z +HSPLandroidx/compose/foundation/text/CoreTextFieldKt;->access$SelectionToolbarAndHandles(Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;ZLandroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt;->access$endInputSession(Landroidx/compose/foundation/text/TextFieldState;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt;->access$notifyFocusedRect(Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/OffsetMapping;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt;->access$startInputSession(Landroidx/compose/ui/text/input/TextInputService;Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/ImeOptions;Landroidx/compose/ui/text/input/OffsetMapping;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt;->bringSelectionEndIntoView(Landroidx/compose/foundation/relocation/BringIntoViewRequester;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/foundation/text/TextDelegate;Landroidx/compose/ui/text/TextLayoutResult;Landroidx/compose/ui/text/input/OffsetMapping;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt;->endInputSession(Landroidx/compose/foundation/text/TextFieldState;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt;->notifyFocusedRect(Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/OffsetMapping;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt;->previewKeyEventToDeselectOnBack(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt;->startInputSession(Landroidx/compose/ui/text/input/TextInputService;Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/ImeOptions;Landroidx/compose/ui/text/input/OffsetMapping;)V +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$2; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$2;->(Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/runtime/State;Landroidx/compose/ui/text/input/TextInputService;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/ImeOptions;Landroidx/compose/ui/text/input/OffsetMapping;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$2$1; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$2$1;->(Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$2$1;->invoke()Ljava/lang/Boolean; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$2$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$2$2; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$2$2;->(Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/text/input/TextInputService;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/ImeOptions;Landroidx/compose/ui/text/input/OffsetMapping;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$2$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$2$2;->emit(ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$3; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$3;->(Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$3;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$3$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$3$invoke$$inlined$onDispose$1;->(Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$3$invoke$$inlined$onDispose$1;->dispose()V +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$4; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$4;->(Landroidx/compose/ui/text/input/TextInputService;Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/ImeOptions;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$4;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$4;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$4$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$4$invoke$$inlined$onDispose$1;->()V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$4$invoke$$inlined$onDispose$1;->dispose()V +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5;->(Lkotlin/jvm/functions/Function3;ILandroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/text/TextStyle;IILandroidx/compose/foundation/text/TextFieldScrollerPosition;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/VisualTransformation;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/relocation/BringIntoViewRequester;Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;ZZLkotlin/jvm/functions/Function1;Landroidx/compose/ui/text/input/OffsetMapping;Landroidx/compose/ui/unit/Density;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1;->(Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/text/TextStyle;IILandroidx/compose/foundation/text/TextFieldScrollerPosition;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/VisualTransformation;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/relocation/BringIntoViewRequester;Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;ZZLkotlin/jvm/functions/Function1;Landroidx/compose/ui/text/input/OffsetMapping;Landroidx/compose/ui/unit/Density;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$1; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$1;->(Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;Landroidx/compose/foundation/text/TextFieldState;ZZLkotlin/jvm/functions/Function1;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/OffsetMapping;Landroidx/compose/ui/unit/Density;I)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$1$2; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$1$2;->(Landroidx/compose/foundation/text/TextFieldState;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/OffsetMapping;Landroidx/compose/ui/unit/Density;I)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$1$2;->maxIntrinsicWidth(Landroidx/compose/ui/layout/IntrinsicMeasureScope;Ljava/util/List;I)I +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$1$2;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$1$2$measure$2; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$1$2$measure$2;->()V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$1$2$measure$2;->()V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$1$2$measure$2;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$1$2$measure$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$coreTextFieldModifier$1; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$coreTextFieldModifier$1;->(Landroidx/compose/foundation/text/TextFieldState;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$coreTextFieldModifier$1;->invoke()Landroidx/compose/foundation/text/TextLayoutResultProxy; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$coreTextFieldModifier$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$6; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$6;->(Landroidx/compose/ui/text/input/TextFieldValue;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/input/VisualTransformation;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/ui/graphics/Brush;ZIILandroidx/compose/ui/text/input/ImeOptions;Landroidx/compose/foundation/text/KeyboardActions;ZZLkotlin/jvm/functions/Function3;III)V +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$decorationBoxModifier$1; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$decorationBoxModifier$1;->(Landroidx/compose/foundation/text/TextFieldState;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$decorationBoxModifier$1;->invoke(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$decorationBoxModifier$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$drawModifier$1; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$drawModifier$1;->(Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/OffsetMapping;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$drawModifier$1;->invoke(Landroidx/compose/ui/graphics/drawscope/DrawScope;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$drawModifier$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$focusModifier$1; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$focusModifier$1;->(Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/text/input/TextInputService;ZZLandroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/ImeOptions;Landroidx/compose/ui/text/input/OffsetMapping;Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;Lkotlinx/coroutines/CoroutineScope;Landroidx/compose/foundation/relocation/BringIntoViewRequester;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$focusModifier$1;->invoke(Landroidx/compose/ui/focus/FocusState;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$focusModifier$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$focusModifier$1$1$1; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$focusModifier$1$1$1;->(Landroidx/compose/foundation/relocation/BringIntoViewRequester;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/foundation/text/TextLayoutResultProxy;Landroidx/compose/ui/text/input/OffsetMapping;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$focusModifier$1$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$focusModifier$1$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$onPositionedModifier$1; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$onPositionedModifier$1;->(Landroidx/compose/foundation/text/TextFieldState;ZLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/OffsetMapping;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$onPositionedModifier$1;->invoke(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$onPositionedModifier$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$pointerModifier$1; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$pointerModifier$1;->(Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/focus/FocusRequester;ZLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;Landroidx/compose/ui/text/input/OffsetMapping;)V +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$scrollerPosition$1$1; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$scrollerPosition$1$1;->(Landroidx/compose/foundation/gestures/Orientation;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$scrollerPosition$1$1;->invoke()Landroidx/compose/foundation/text/TextFieldScrollerPosition; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$scrollerPosition$1$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1;->(Landroidx/compose/ui/text/input/ImeOptions;Landroidx/compose/ui/text/input/TransformedText;Landroidx/compose/ui/text/input/TextFieldValue;ZZZLandroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/text/input/OffsetMapping;Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;Landroidx/compose/ui/focus/FocusRequester;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$1; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$1;->(Landroidx/compose/foundation/text/TextFieldState;)V +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$10; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$10;->(Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;)V +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$2; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$2;->(ZZLandroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$2;->invoke(Landroidx/compose/ui/text/AnnotatedString;)Ljava/lang/Boolean; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$3; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$3;->(ZZLandroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Landroidx/compose/ui/text/input/TextFieldValue;)V +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$4; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$4;->(Landroidx/compose/ui/text/input/OffsetMapping;ZLandroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;Landroidx/compose/foundation/text/TextFieldState;)V +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$5; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$5;->(Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/text/input/ImeOptions;)V +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$6; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$6;->(Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/focus/FocusRequester;Z)V +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$7; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$7;->(Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;)V +Landroidx/compose/foundation/text/CoreTextFieldKt$previewKeyEventToDeselectOnBack$1; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$previewKeyEventToDeselectOnBack$1;->(Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;)V +Landroidx/compose/foundation/text/DeadKeyCombiner; +HSPLandroidx/compose/foundation/text/DeadKeyCombiner;->()V +Landroidx/compose/foundation/text/EmptyMeasurePolicy; +HSPLandroidx/compose/foundation/text/EmptyMeasurePolicy;->()V +HSPLandroidx/compose/foundation/text/EmptyMeasurePolicy;->()V +HSPLandroidx/compose/foundation/text/EmptyMeasurePolicy;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/text/EmptyMeasurePolicy$placementBlock$1; +HSPLandroidx/compose/foundation/text/EmptyMeasurePolicy$placementBlock$1;->()V +HSPLandroidx/compose/foundation/text/EmptyMeasurePolicy$placementBlock$1;->()V +HSPLandroidx/compose/foundation/text/EmptyMeasurePolicy$placementBlock$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/text/EmptyMeasurePolicy$placementBlock$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/FixedMotionDurationScale; +HSPLandroidx/compose/foundation/text/FixedMotionDurationScale;->()V +HSPLandroidx/compose/foundation/text/FixedMotionDurationScale;->()V +HSPLandroidx/compose/foundation/text/FixedMotionDurationScale;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/FixedMotionDurationScale;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLandroidx/compose/foundation/text/FixedMotionDurationScale;->getScaleFactor()F +Landroidx/compose/foundation/text/Handle; +Landroidx/compose/foundation/text/HandleState; +HSPLandroidx/compose/foundation/text/HandleState;->$values()[Landroidx/compose/foundation/text/HandleState; +HSPLandroidx/compose/foundation/text/HandleState;->()V +HSPLandroidx/compose/foundation/text/HandleState;->(Ljava/lang/String;I)V +Landroidx/compose/foundation/text/HeightInLinesModifierKt; +HSPLandroidx/compose/foundation/text/HeightInLinesModifierKt;->heightInLines(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/text/TextStyle;II)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/text/HeightInLinesModifierKt;->validateMinMaxLines(II)V +Landroidx/compose/foundation/text/HeightInLinesModifierKt$heightInLines$2; +HSPLandroidx/compose/foundation/text/HeightInLinesModifierKt$heightInLines$2;->(IILandroidx/compose/ui/text/TextStyle;)V +HSPLandroidx/compose/foundation/text/HeightInLinesModifierKt$heightInLines$2;->invoke$lambda$2(Landroidx/compose/runtime/State;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/HeightInLinesModifierKt$heightInLines$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/text/HeightInLinesModifierKt$heightInLines$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/HorizontalScrollLayoutModifier; +HSPLandroidx/compose/foundation/text/HorizontalScrollLayoutModifier;->(Landroidx/compose/foundation/text/TextFieldScrollerPosition;ILandroidx/compose/ui/text/input/TransformedText;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/foundation/text/HorizontalScrollLayoutModifier;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/text/HorizontalScrollLayoutModifier;->getCursorOffset()I +HSPLandroidx/compose/foundation/text/HorizontalScrollLayoutModifier;->getScrollerPosition()Landroidx/compose/foundation/text/TextFieldScrollerPosition; +HSPLandroidx/compose/foundation/text/HorizontalScrollLayoutModifier;->getTextLayoutResultProvider()Lkotlin/jvm/functions/Function0; +HSPLandroidx/compose/foundation/text/HorizontalScrollLayoutModifier;->getTransformedText()Landroidx/compose/ui/text/input/TransformedText; +HSPLandroidx/compose/foundation/text/HorizontalScrollLayoutModifier;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/text/HorizontalScrollLayoutModifier$measure$1; +HSPLandroidx/compose/foundation/text/HorizontalScrollLayoutModifier$measure$1;->(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/foundation/text/HorizontalScrollLayoutModifier;Landroidx/compose/ui/layout/Placeable;I)V +HSPLandroidx/compose/foundation/text/HorizontalScrollLayoutModifier$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/text/HorizontalScrollLayoutModifier$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/KeyMapping; +Landroidx/compose/foundation/text/KeyMapping_androidKt; +HSPLandroidx/compose/foundation/text/KeyMapping_androidKt;->()V +HSPLandroidx/compose/foundation/text/KeyMapping_androidKt;->getPlatformDefaultKeyMapping()Landroidx/compose/foundation/text/KeyMapping; +Landroidx/compose/foundation/text/KeyMapping_androidKt$platformDefaultKeyMapping$1; +HSPLandroidx/compose/foundation/text/KeyMapping_androidKt$platformDefaultKeyMapping$1;->()V +Landroidx/compose/foundation/text/KeyboardActionRunner; +HSPLandroidx/compose/foundation/text/KeyboardActionRunner;->()V +HSPLandroidx/compose/foundation/text/KeyboardActionRunner;->setFocusManager(Landroidx/compose/ui/focus/FocusManager;)V +HSPLandroidx/compose/foundation/text/KeyboardActionRunner;->setInputSession(Landroidx/compose/ui/text/input/TextInputSession;)V +HSPLandroidx/compose/foundation/text/KeyboardActionRunner;->setKeyboardActions(Landroidx/compose/foundation/text/KeyboardActions;)V +Landroidx/compose/foundation/text/KeyboardActionScope; +Landroidx/compose/foundation/text/KeyboardActions; +HSPLandroidx/compose/foundation/text/KeyboardActions;->()V +HSPLandroidx/compose/foundation/text/KeyboardActions;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/text/KeyboardActions;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/text/KeyboardActions;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/text/KeyboardActions$Companion; +HSPLandroidx/compose/foundation/text/KeyboardActions$Companion;->()V +HSPLandroidx/compose/foundation/text/KeyboardActions$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/foundation/text/KeyboardOptions; +HSPLandroidx/compose/foundation/text/KeyboardOptions;->()V +HSPLandroidx/compose/foundation/text/KeyboardOptions;->(IZII)V +HSPLandroidx/compose/foundation/text/KeyboardOptions;->(IZIIILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/text/KeyboardOptions;->(IZIILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/text/KeyboardOptions;->copy-3m2b7yw$default(Landroidx/compose/foundation/text/KeyboardOptions;IZIIILjava/lang/Object;)Landroidx/compose/foundation/text/KeyboardOptions; +HSPLandroidx/compose/foundation/text/KeyboardOptions;->copy-3m2b7yw(IZII)Landroidx/compose/foundation/text/KeyboardOptions; +HSPLandroidx/compose/foundation/text/KeyboardOptions;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/text/KeyboardOptions;->toImeOptions$foundation_release(Z)Landroidx/compose/ui/text/input/ImeOptions; +Landroidx/compose/foundation/text/KeyboardOptions$Companion; +HSPLandroidx/compose/foundation/text/KeyboardOptions$Companion;->()V +HSPLandroidx/compose/foundation/text/KeyboardOptions$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/foundation/text/TextDelegate; +HSPLandroidx/compose/foundation/text/TextDelegate;->()V +HSPLandroidx/compose/foundation/text/TextDelegate;->(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;IIZILandroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;Ljava/util/List;)V +HSPLandroidx/compose/foundation/text/TextDelegate;->(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;IIZILandroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/text/TextDelegate;->(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;IIZILandroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;Ljava/util/List;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/text/TextDelegate;->getDensity()Landroidx/compose/ui/unit/Density; +HSPLandroidx/compose/foundation/text/TextDelegate;->getFontFamilyResolver()Landroidx/compose/ui/text/font/FontFamily$Resolver; +HSPLandroidx/compose/foundation/text/TextDelegate;->getMaxIntrinsicWidth()I +HSPLandroidx/compose/foundation/text/TextDelegate;->getMaxLines()I +HSPLandroidx/compose/foundation/text/TextDelegate;->getMinLines()I +HSPLandroidx/compose/foundation/text/TextDelegate;->getNonNullIntrinsics()Landroidx/compose/ui/text/MultiParagraphIntrinsics; +HSPLandroidx/compose/foundation/text/TextDelegate;->getOverflow-gIe3tQ8()I +HSPLandroidx/compose/foundation/text/TextDelegate;->getPlaceholders()Ljava/util/List; +HSPLandroidx/compose/foundation/text/TextDelegate;->getSoftWrap()Z +HSPLandroidx/compose/foundation/text/TextDelegate;->getStyle()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/foundation/text/TextDelegate;->getText()Landroidx/compose/ui/text/AnnotatedString; +HSPLandroidx/compose/foundation/text/TextDelegate;->layout-NN6Ew-U(JLandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/text/TextLayoutResult;)Landroidx/compose/ui/text/TextLayoutResult; +HSPLandroidx/compose/foundation/text/TextDelegate;->layoutIntrinsics(Landroidx/compose/ui/unit/LayoutDirection;)V +HSPLandroidx/compose/foundation/text/TextDelegate;->layoutText-K40F9xA(JLandroidx/compose/ui/unit/LayoutDirection;)Landroidx/compose/ui/text/MultiParagraph; +Landroidx/compose/foundation/text/TextDelegate$Companion; +HSPLandroidx/compose/foundation/text/TextDelegate$Companion;->()V +HSPLandroidx/compose/foundation/text/TextDelegate$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/foundation/text/TextDelegateKt; +HSPLandroidx/compose/foundation/text/TextDelegateKt;->ceilToIntPx(F)I +HSPLandroidx/compose/foundation/text/TextDelegateKt;->updateTextDelegate-rm0N8CA$default(Landroidx/compose/foundation/text/TextDelegate;Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;ZIIILjava/util/List;ILjava/lang/Object;)Landroidx/compose/foundation/text/TextDelegate; +HSPLandroidx/compose/foundation/text/TextDelegateKt;->updateTextDelegate-rm0N8CA(Landroidx/compose/foundation/text/TextDelegate;Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;ZIIILjava/util/List;)Landroidx/compose/foundation/text/TextDelegate; +Landroidx/compose/foundation/text/TextDragObserver; +Landroidx/compose/foundation/text/TextFieldCursorKt; +HSPLandroidx/compose/foundation/text/TextFieldCursorKt;->()V +HSPLandroidx/compose/foundation/text/TextFieldCursorKt;->access$getCursorAnimationSpec$p()Landroidx/compose/animation/core/AnimationSpec; +HSPLandroidx/compose/foundation/text/TextFieldCursorKt;->cursor(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/OffsetMapping;Landroidx/compose/ui/graphics/Brush;Z)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/text/TextFieldCursorKt;->getDefaultCursorThickness()F +Landroidx/compose/foundation/text/TextFieldCursorKt$cursor$1; +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursor$1;->(Landroidx/compose/ui/graphics/Brush;Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/OffsetMapping;)V +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursor$1;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursor$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/TextFieldCursorKt$cursor$1$1; +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursor$1$1;->(Landroidx/compose/animation/core/Animatable;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursor$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursor$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/TextFieldCursorKt$cursor$1$1$1; +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursor$1$1$1;->(Landroidx/compose/animation/core/Animatable;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursor$1$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursor$1$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursor$1$1$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursor$1$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/TextFieldCursorKt$cursor$1$2; +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursor$1$2;->(Landroidx/compose/animation/core/Animatable;Landroidx/compose/ui/text/input/OffsetMapping;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/graphics/Brush;)V +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursor$1$2;->invoke(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursor$1$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/TextFieldCursorKt$cursorAnimationSpec$1; +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursorAnimationSpec$1;->()V +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursorAnimationSpec$1;->()V +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursorAnimationSpec$1;->invoke(Landroidx/compose/animation/core/KeyframesSpec$KeyframesSpecConfig;)V +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursorAnimationSpec$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/TextFieldDelegate; +HSPLandroidx/compose/foundation/text/TextFieldDelegate;->()V +Landroidx/compose/foundation/text/TextFieldDelegate$Companion; +HSPLandroidx/compose/foundation/text/TextFieldDelegate$Companion;->()V +HSPLandroidx/compose/foundation/text/TextFieldDelegate$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/text/TextFieldDelegate$Companion;->draw$foundation_release(Landroidx/compose/ui/graphics/Canvas;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/OffsetMapping;Landroidx/compose/ui/text/TextLayoutResult;Landroidx/compose/ui/graphics/Paint;)V +HSPLandroidx/compose/foundation/text/TextFieldDelegate$Companion;->layout-_EkL_-Y$foundation_release(Landroidx/compose/foundation/text/TextDelegate;JLandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/text/TextLayoutResult;)Lkotlin/Triple; +HSPLandroidx/compose/foundation/text/TextFieldDelegate$Companion;->notifyFocusedRect$foundation_release(Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/foundation/text/TextDelegate;Landroidx/compose/ui/text/TextLayoutResult;Landroidx/compose/ui/layout/LayoutCoordinates;Landroidx/compose/ui/text/input/TextInputSession;ZLandroidx/compose/ui/text/input/OffsetMapping;)V +HSPLandroidx/compose/foundation/text/TextFieldDelegate$Companion;->onBlur$foundation_release(Landroidx/compose/ui/text/input/TextInputSession;Landroidx/compose/ui/text/input/EditProcessor;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/text/TextFieldDelegate$Companion;->onEditCommand$foundation_release(Ljava/util/List;Landroidx/compose/ui/text/input/EditProcessor;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/text/input/TextInputSession;)V +HSPLandroidx/compose/foundation/text/TextFieldDelegate$Companion;->onFocus$foundation_release(Landroidx/compose/ui/text/input/TextInputService;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/EditProcessor;Landroidx/compose/ui/text/input/ImeOptions;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/text/input/TextInputSession; +HSPLandroidx/compose/foundation/text/TextFieldDelegate$Companion;->restartInput$foundation_release(Landroidx/compose/ui/text/input/TextInputService;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/EditProcessor;Landroidx/compose/ui/text/input/ImeOptions;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/text/input/TextInputSession; +Landroidx/compose/foundation/text/TextFieldDelegate$Companion$restartInput$1; +HSPLandroidx/compose/foundation/text/TextFieldDelegate$Companion$restartInput$1;->(Landroidx/compose/ui/text/input/EditProcessor;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/internal/Ref$ObjectRef;)V +Landroidx/compose/foundation/text/TextFieldDelegateKt; +HSPLandroidx/compose/foundation/text/TextFieldDelegateKt;->()V +HSPLandroidx/compose/foundation/text/TextFieldDelegateKt;->computeSizeForDefaultText$default(Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;Ljava/lang/String;IILjava/lang/Object;)J +HSPLandroidx/compose/foundation/text/TextFieldDelegateKt;->computeSizeForDefaultText(Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;Ljava/lang/String;I)J +HSPLandroidx/compose/foundation/text/TextFieldDelegateKt;->getEmptyTextReplacement()Ljava/lang/String; +Landroidx/compose/foundation/text/TextFieldFocusModifier_androidKt; +HSPLandroidx/compose/foundation/text/TextFieldFocusModifier_androidKt;->interceptDPadAndMoveFocus(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/focus/FocusManager;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/text/TextFieldFocusModifier_androidKt$interceptDPadAndMoveFocus$1; +HSPLandroidx/compose/foundation/text/TextFieldFocusModifier_androidKt$interceptDPadAndMoveFocus$1;->(Landroidx/compose/ui/focus/FocusManager;Landroidx/compose/foundation/text/TextFieldState;)V +Landroidx/compose/foundation/text/TextFieldGestureModifiersKt; +HSPLandroidx/compose/foundation/text/TextFieldGestureModifiersKt;->longPressDragGestureFilter(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/text/TextDragObserver;Z)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/text/TextFieldGestureModifiersKt;->textFieldFocusModifier(Landroidx/compose/ui/Modifier;ZLandroidx/compose/ui/focus/FocusRequester;Landroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/text/TextFieldGestureModifiersKt$longPressDragGestureFilter$1; +HSPLandroidx/compose/foundation/text/TextFieldGestureModifiersKt$longPressDragGestureFilter$1;->(Landroidx/compose/foundation/text/TextDragObserver;Lkotlin/coroutines/Continuation;)V +Landroidx/compose/foundation/text/TextFieldKeyInput; +HSPLandroidx/compose/foundation/text/TextFieldKeyInput;->(Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;Landroidx/compose/ui/text/input/TextFieldValue;ZZLandroidx/compose/foundation/text/selection/TextPreparedSelectionState;Landroidx/compose/ui/text/input/OffsetMapping;Landroidx/compose/foundation/text/UndoManager;Landroidx/compose/foundation/text/DeadKeyCombiner;Landroidx/compose/foundation/text/KeyMapping;Lkotlin/jvm/functions/Function1;I)V +HSPLandroidx/compose/foundation/text/TextFieldKeyInput;->(Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;Landroidx/compose/ui/text/input/TextFieldValue;ZZLandroidx/compose/foundation/text/selection/TextPreparedSelectionState;Landroidx/compose/ui/text/input/OffsetMapping;Landroidx/compose/foundation/text/UndoManager;Landroidx/compose/foundation/text/DeadKeyCombiner;Landroidx/compose/foundation/text/KeyMapping;Lkotlin/jvm/functions/Function1;IILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/text/TextFieldKeyInput;->(Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;Landroidx/compose/ui/text/input/TextFieldValue;ZZLandroidx/compose/foundation/text/selection/TextPreparedSelectionState;Landroidx/compose/ui/text/input/OffsetMapping;Landroidx/compose/foundation/text/UndoManager;Landroidx/compose/foundation/text/DeadKeyCombiner;Landroidx/compose/foundation/text/KeyMapping;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/foundation/text/TextFieldKeyInputKt; +HSPLandroidx/compose/foundation/text/TextFieldKeyInputKt;->textFieldKeyInput-2WJ9YEU(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;Landroidx/compose/ui/text/input/TextFieldValue;Lkotlin/jvm/functions/Function1;ZZLandroidx/compose/ui/text/input/OffsetMapping;Landroidx/compose/foundation/text/UndoManager;I)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/text/TextFieldKeyInputKt$textFieldKeyInput$2; +HSPLandroidx/compose/foundation/text/TextFieldKeyInputKt$textFieldKeyInput$2;->(Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;Landroidx/compose/ui/text/input/TextFieldValue;ZZLandroidx/compose/ui/text/input/OffsetMapping;Landroidx/compose/foundation/text/UndoManager;Lkotlin/jvm/functions/Function1;I)V +HSPLandroidx/compose/foundation/text/TextFieldKeyInputKt$textFieldKeyInput$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/text/TextFieldKeyInputKt$textFieldKeyInput$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/TextFieldKeyInputKt$textFieldKeyInput$2$1; +HSPLandroidx/compose/foundation/text/TextFieldKeyInputKt$textFieldKeyInput$2$1;->(Ljava/lang/Object;)V +Landroidx/compose/foundation/text/TextFieldPressGestureFilterKt; +HSPLandroidx/compose/foundation/text/TextFieldPressGestureFilterKt;->tapPressTextFieldModifier(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/interaction/MutableInteractionSource;ZLkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/text/TextFieldPressGestureFilterKt$tapPressTextFieldModifier$1; +HSPLandroidx/compose/foundation/text/TextFieldPressGestureFilterKt$tapPressTextFieldModifier$1;->(Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/interaction/MutableInteractionSource;)V +HSPLandroidx/compose/foundation/text/TextFieldPressGestureFilterKt$tapPressTextFieldModifier$1;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/text/TextFieldPressGestureFilterKt$tapPressTextFieldModifier$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/TextFieldPressGestureFilterKt$tapPressTextFieldModifier$1$1$1; +HSPLandroidx/compose/foundation/text/TextFieldPressGestureFilterKt$tapPressTextFieldModifier$1$1$1;->(Landroidx/compose/runtime/MutableState;Landroidx/compose/foundation/interaction/MutableInteractionSource;)V +HSPLandroidx/compose/foundation/text/TextFieldPressGestureFilterKt$tapPressTextFieldModifier$1$1$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/foundation/text/TextFieldPressGestureFilterKt$tapPressTextFieldModifier$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/TextFieldPressGestureFilterKt$tapPressTextFieldModifier$1$1$1$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/foundation/text/TextFieldPressGestureFilterKt$tapPressTextFieldModifier$1$1$1$invoke$$inlined$onDispose$1;->(Landroidx/compose/runtime/MutableState;Landroidx/compose/foundation/interaction/MutableInteractionSource;)V +HSPLandroidx/compose/foundation/text/TextFieldPressGestureFilterKt$tapPressTextFieldModifier$1$1$1$invoke$$inlined$onDispose$1;->dispose()V +Landroidx/compose/foundation/text/TextFieldPressGestureFilterKt$tapPressTextFieldModifier$1$2; +HSPLandroidx/compose/foundation/text/TextFieldPressGestureFilterKt$tapPressTextFieldModifier$1$2;->(Lkotlinx/coroutines/CoroutineScope;Landroidx/compose/runtime/MutableState;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/runtime/State;Lkotlin/coroutines/Continuation;)V +Landroidx/compose/foundation/text/TextFieldScrollKt; +HSPLandroidx/compose/foundation/text/TextFieldScrollKt;->access$getCursorRectInScroller(Landroidx/compose/ui/unit/Density;ILandroidx/compose/ui/text/input/TransformedText;Landroidx/compose/ui/text/TextLayoutResult;ZI)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/foundation/text/TextFieldScrollKt;->getCursorRectInScroller(Landroidx/compose/ui/unit/Density;ILandroidx/compose/ui/text/input/TransformedText;Landroidx/compose/ui/text/TextLayoutResult;ZI)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/foundation/text/TextFieldScrollKt;->textFieldScroll(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/text/TextFieldScrollerPosition;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/VisualTransformation;Lkotlin/jvm/functions/Function0;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/text/TextFieldScrollKt;->textFieldScrollable(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/text/TextFieldScrollerPosition;Landroidx/compose/foundation/interaction/MutableInteractionSource;Z)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/text/TextFieldScrollKt$WhenMappings; +HSPLandroidx/compose/foundation/text/TextFieldScrollKt$WhenMappings;->()V +Landroidx/compose/foundation/text/TextFieldScrollKt$textFieldScrollable$2; +HSPLandroidx/compose/foundation/text/TextFieldScrollKt$textFieldScrollable$2;->(Landroidx/compose/foundation/text/TextFieldScrollerPosition;ZLandroidx/compose/foundation/interaction/MutableInteractionSource;)V +HSPLandroidx/compose/foundation/text/TextFieldScrollKt$textFieldScrollable$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/text/TextFieldScrollKt$textFieldScrollable$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/TextFieldScrollKt$textFieldScrollable$2$scrollableState$1$1; +HSPLandroidx/compose/foundation/text/TextFieldScrollKt$textFieldScrollable$2$scrollableState$1$1;->(Landroidx/compose/foundation/text/TextFieldScrollerPosition;)V +Landroidx/compose/foundation/text/TextFieldScrollKt$textFieldScrollable$2$wrappedScrollableState$1$1; +HSPLandroidx/compose/foundation/text/TextFieldScrollKt$textFieldScrollable$2$wrappedScrollableState$1$1;->(Landroidx/compose/foundation/gestures/ScrollableState;Landroidx/compose/foundation/text/TextFieldScrollerPosition;)V +Landroidx/compose/foundation/text/TextFieldScrollKt$textFieldScrollable$2$wrappedScrollableState$1$1$canScrollBackward$2; +HSPLandroidx/compose/foundation/text/TextFieldScrollKt$textFieldScrollable$2$wrappedScrollableState$1$1$canScrollBackward$2;->(Landroidx/compose/foundation/text/TextFieldScrollerPosition;)V +Landroidx/compose/foundation/text/TextFieldScrollKt$textFieldScrollable$2$wrappedScrollableState$1$1$canScrollForward$2; +HSPLandroidx/compose/foundation/text/TextFieldScrollKt$textFieldScrollable$2$wrappedScrollableState$1$1$canScrollForward$2;->(Landroidx/compose/foundation/text/TextFieldScrollerPosition;)V +Landroidx/compose/foundation/text/TextFieldScrollerPosition; +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition;->()V +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition;->(Landroidx/compose/foundation/gestures/Orientation;F)V +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition;->(Landroidx/compose/foundation/gestures/Orientation;FILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition;->access$getSaver$cp()Landroidx/compose/runtime/saveable/Saver; +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition;->coerceOffset$foundation_release(FFI)V +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition;->getMaximum()F +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition;->getOffset()F +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition;->getOffsetToFollow-5zc-tL8(J)I +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition;->getOrientation()Landroidx/compose/foundation/gestures/Orientation; +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition;->setMaximum(F)V +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition;->setOffset(F)V +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition;->setPreviousSelection-5zc-tL8(J)V +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition;->update(Landroidx/compose/foundation/gestures/Orientation;Landroidx/compose/ui/geometry/Rect;II)V +Landroidx/compose/foundation/text/TextFieldScrollerPosition$Companion; +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition$Companion;->()V +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition$Companion;->getSaver()Landroidx/compose/runtime/saveable/Saver; +Landroidx/compose/foundation/text/TextFieldScrollerPosition$Companion$Saver$1; +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition$Companion$Saver$1;->()V +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition$Companion$Saver$1;->()V +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition$Companion$Saver$1;->invoke(Landroidx/compose/runtime/saveable/SaverScope;Landroidx/compose/foundation/text/TextFieldScrollerPosition;)Ljava/util/List; +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition$Companion$Saver$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/TextFieldScrollerPosition$Companion$Saver$2; +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition$Companion$Saver$2;->()V +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition$Companion$Saver$2;->()V +Landroidx/compose/foundation/text/TextFieldSize; +HSPLandroidx/compose/foundation/text/TextFieldSize;->(Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;Landroidx/compose/ui/text/TextStyle;Ljava/lang/Object;)V +HSPLandroidx/compose/foundation/text/TextFieldSize;->computeMinSize-YbymL2g()J +HSPLandroidx/compose/foundation/text/TextFieldSize;->getMinSize-YbymL2g()J +HSPLandroidx/compose/foundation/text/TextFieldSize;->update(Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;Landroidx/compose/ui/text/TextStyle;Ljava/lang/Object;)V +Landroidx/compose/foundation/text/TextFieldSizeKt; +HSPLandroidx/compose/foundation/text/TextFieldSizeKt;->textFieldMinSize(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/text/TextStyle;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/text/TextFieldSizeKt$textFieldMinSize$1; +HSPLandroidx/compose/foundation/text/TextFieldSizeKt$textFieldMinSize$1;->(Landroidx/compose/ui/text/TextStyle;)V +HSPLandroidx/compose/foundation/text/TextFieldSizeKt$textFieldMinSize$1;->access$invoke$lambda$2(Landroidx/compose/runtime/State;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/TextFieldSizeKt$textFieldMinSize$1;->invoke$lambda$2(Landroidx/compose/runtime/State;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/TextFieldSizeKt$textFieldMinSize$1;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/text/TextFieldSizeKt$textFieldMinSize$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/TextFieldSizeKt$textFieldMinSize$1$1; +HSPLandroidx/compose/foundation/text/TextFieldSizeKt$textFieldMinSize$1$1;->(Landroidx/compose/foundation/text/TextFieldSize;)V +HSPLandroidx/compose/foundation/text/TextFieldSizeKt$textFieldMinSize$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/TextFieldSizeKt$textFieldMinSize$1$1;->invoke-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/text/TextFieldSizeKt$textFieldMinSize$1$1$1; +HSPLandroidx/compose/foundation/text/TextFieldSizeKt$textFieldMinSize$1$1$1;->(Landroidx/compose/ui/layout/Placeable;)V +HSPLandroidx/compose/foundation/text/TextFieldSizeKt$textFieldMinSize$1$1$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/text/TextFieldSizeKt$textFieldMinSize$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/TextFieldState; +HSPLandroidx/compose/foundation/text/TextFieldState;->(Landroidx/compose/foundation/text/TextDelegate;Landroidx/compose/runtime/RecomposeScope;)V +HSPLandroidx/compose/foundation/text/TextFieldState;->access$getOnValueChangeOriginal$p(Landroidx/compose/foundation/text/TextFieldState;)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/foundation/text/TextFieldState;->getHandleState()Landroidx/compose/foundation/text/HandleState; +HSPLandroidx/compose/foundation/text/TextFieldState;->getHasFocus()Z +HSPLandroidx/compose/foundation/text/TextFieldState;->getInputSession()Landroidx/compose/ui/text/input/TextInputSession; +HSPLandroidx/compose/foundation/text/TextFieldState;->getLayoutCoordinates()Landroidx/compose/ui/layout/LayoutCoordinates; +HSPLandroidx/compose/foundation/text/TextFieldState;->getLayoutResult()Landroidx/compose/foundation/text/TextLayoutResultProxy; +HSPLandroidx/compose/foundation/text/TextFieldState;->getMinHeightForSingleLineField-D9Ej5fM()F +HSPLandroidx/compose/foundation/text/TextFieldState;->getOnImeActionPerformed()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/foundation/text/TextFieldState;->getOnValueChange()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/foundation/text/TextFieldState;->getProcessor()Landroidx/compose/ui/text/input/EditProcessor; +HSPLandroidx/compose/foundation/text/TextFieldState;->getRecomposeScope()Landroidx/compose/runtime/RecomposeScope; +HSPLandroidx/compose/foundation/text/TextFieldState;->getSelectionPaint()Landroidx/compose/ui/graphics/Paint; +HSPLandroidx/compose/foundation/text/TextFieldState;->getTextDelegate()Landroidx/compose/foundation/text/TextDelegate; +HSPLandroidx/compose/foundation/text/TextFieldState;->getUntransformedText()Landroidx/compose/ui/text/AnnotatedString; +HSPLandroidx/compose/foundation/text/TextFieldState;->setHandleState(Landroidx/compose/foundation/text/HandleState;)V +HSPLandroidx/compose/foundation/text/TextFieldState;->setHasFocus(Z)V +HSPLandroidx/compose/foundation/text/TextFieldState;->setInputSession(Landroidx/compose/ui/text/input/TextInputSession;)V +HSPLandroidx/compose/foundation/text/TextFieldState;->setLayoutCoordinates(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/foundation/text/TextFieldState;->setLayoutResult(Landroidx/compose/foundation/text/TextLayoutResultProxy;)V +HSPLandroidx/compose/foundation/text/TextFieldState;->setMinHeightForSingleLineField-0680j_4(F)V +HSPLandroidx/compose/foundation/text/TextFieldState;->update-fnh65Uc(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;ZLandroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/text/KeyboardActions;Landroidx/compose/ui/focus/FocusManager;J)V +Landroidx/compose/foundation/text/TextFieldState$onImeActionPerformed$1; +HSPLandroidx/compose/foundation/text/TextFieldState$onImeActionPerformed$1;->(Landroidx/compose/foundation/text/TextFieldState;)V +Landroidx/compose/foundation/text/TextFieldState$onValueChange$1; +HSPLandroidx/compose/foundation/text/TextFieldState$onValueChange$1;->(Landroidx/compose/foundation/text/TextFieldState;)V +HSPLandroidx/compose/foundation/text/TextFieldState$onValueChange$1;->invoke(Landroidx/compose/ui/text/input/TextFieldValue;)V +HSPLandroidx/compose/foundation/text/TextFieldState$onValueChange$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/TextFieldState$onValueChangeOriginal$1; +HSPLandroidx/compose/foundation/text/TextFieldState$onValueChangeOriginal$1;->()V +HSPLandroidx/compose/foundation/text/TextFieldState$onValueChangeOriginal$1;->()V +Landroidx/compose/foundation/text/TextLayoutHelperKt; +HSPLandroidx/compose/foundation/text/TextLayoutHelperKt;->canReuse-7_7YC6M(Landroidx/compose/ui/text/TextLayoutResult;Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Ljava/util/List;IZILandroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/text/font/FontFamily$Resolver;J)Z +Landroidx/compose/foundation/text/TextLayoutResultProxy; +HSPLandroidx/compose/foundation/text/TextLayoutResultProxy;->(Landroidx/compose/ui/text/TextLayoutResult;)V +HSPLandroidx/compose/foundation/text/TextLayoutResultProxy;->getValue()Landroidx/compose/ui/text/TextLayoutResult; +HSPLandroidx/compose/foundation/text/TextLayoutResultProxy;->setDecorationBoxCoordinates(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/foundation/text/TextLayoutResultProxy;->setInnerTextFieldCoordinates(Landroidx/compose/ui/layout/LayoutCoordinates;)V +Landroidx/compose/foundation/text/TextPointerIcon_androidKt; +HSPLandroidx/compose/foundation/text/TextPointerIcon_androidKt;->()V +HSPLandroidx/compose/foundation/text/TextPointerIcon_androidKt;->getTextPointerIcon()Landroidx/compose/ui/input/pointer/PointerIcon; +Landroidx/compose/foundation/text/TouchMode_androidKt; +HSPLandroidx/compose/foundation/text/TouchMode_androidKt;->()V +HSPLandroidx/compose/foundation/text/TouchMode_androidKt;->isInTouchMode()Z +Landroidx/compose/foundation/text/UndoManager; +HSPLandroidx/compose/foundation/text/UndoManager;->(I)V +HSPLandroidx/compose/foundation/text/UndoManager;->(IILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/text/UndoManager;->makeSnapshot(Landroidx/compose/ui/text/input/TextFieldValue;)V +HSPLandroidx/compose/foundation/text/UndoManager;->snapshotIfNeeded$default(Landroidx/compose/foundation/text/UndoManager;Landroidx/compose/ui/text/input/TextFieldValue;JILjava/lang/Object;)V +HSPLandroidx/compose/foundation/text/UndoManager;->snapshotIfNeeded(Landroidx/compose/ui/text/input/TextFieldValue;J)V +Landroidx/compose/foundation/text/UndoManager$Entry; +HSPLandroidx/compose/foundation/text/UndoManager$Entry;->(Landroidx/compose/foundation/text/UndoManager$Entry;Landroidx/compose/ui/text/input/TextFieldValue;)V +Landroidx/compose/foundation/text/UndoManagerKt; +HSPLandroidx/compose/foundation/text/UndoManagerKt;->()V +HSPLandroidx/compose/foundation/text/UndoManagerKt;->getSNAPSHOTS_INTERVAL_MILLIS()I +Landroidx/compose/foundation/text/UndoManager_jvmKt; +HSPLandroidx/compose/foundation/text/UndoManager_jvmKt;->timeNowMillis()J +Landroidx/compose/foundation/text/ValidatingOffsetMapping; +HSPLandroidx/compose/foundation/text/ValidatingOffsetMapping;->(Landroidx/compose/ui/text/input/OffsetMapping;II)V +HSPLandroidx/compose/foundation/text/ValidatingOffsetMapping;->originalToTransformed(I)I +Landroidx/compose/foundation/text/ValidatingOffsetMappingKt; +HSPLandroidx/compose/foundation/text/ValidatingOffsetMappingKt;->()V +HSPLandroidx/compose/foundation/text/ValidatingOffsetMappingKt;->filterWithValidation(Landroidx/compose/ui/text/input/VisualTransformation;Landroidx/compose/ui/text/AnnotatedString;)Landroidx/compose/ui/text/input/TransformedText; +HSPLandroidx/compose/foundation/text/ValidatingOffsetMappingKt;->getValidatingEmptyOffsetMappingIdentity()Landroidx/compose/ui/text/input/OffsetMapping; +Landroidx/compose/foundation/text/modifiers/InlineDensity; +HSPLandroidx/compose/foundation/text/modifiers/InlineDensity;->()V +HSPLandroidx/compose/foundation/text/modifiers/InlineDensity;->access$getUnspecified$cp()J +HSPLandroidx/compose/foundation/text/modifiers/InlineDensity;->constructor-impl(FF)J +HSPLandroidx/compose/foundation/text/modifiers/InlineDensity;->constructor-impl(J)J +HSPLandroidx/compose/foundation/text/modifiers/InlineDensity;->constructor-impl(Landroidx/compose/ui/unit/Density;)J +HSPLandroidx/compose/foundation/text/modifiers/InlineDensity;->equals-impl0(JJ)Z +Landroidx/compose/foundation/text/modifiers/InlineDensity$Companion; +HSPLandroidx/compose/foundation/text/modifiers/InlineDensity$Companion;->()V +HSPLandroidx/compose/foundation/text/modifiers/InlineDensity$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/text/modifiers/InlineDensity$Companion;->getUnspecified-L26CHvs()J +Landroidx/compose/foundation/text/modifiers/LayoutUtilsKt; +HSPLandroidx/compose/foundation/text/modifiers/LayoutUtilsKt;->finalConstraints-tfFHcEY(JZIF)J +HSPLandroidx/compose/foundation/text/modifiers/LayoutUtilsKt;->finalMaxLines-xdlQI24(ZII)I +HSPLandroidx/compose/foundation/text/modifiers/LayoutUtilsKt;->finalMaxWidth-tfFHcEY(JZIF)I +Landroidx/compose/foundation/text/modifiers/MultiParagraphLayoutCache; +HSPLandroidx/compose/foundation/text/modifiers/MultiParagraphLayoutCache;->(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/font/FontFamily$Resolver;IZIILjava/util/List;)V +HSPLandroidx/compose/foundation/text/modifiers/MultiParagraphLayoutCache;->(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/font/FontFamily$Resolver;IZIILjava/util/List;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/text/modifiers/MultiParagraphLayoutCache;->getTextLayoutResult()Landroidx/compose/ui/text/TextLayoutResult; +HSPLandroidx/compose/foundation/text/modifiers/MultiParagraphLayoutCache;->layoutText-K40F9xA(JLandroidx/compose/ui/unit/LayoutDirection;)Landroidx/compose/ui/text/MultiParagraph; +HSPLandroidx/compose/foundation/text/modifiers/MultiParagraphLayoutCache;->layoutWithConstraints-K40F9xA(JLandroidx/compose/ui/unit/LayoutDirection;)Z +HSPLandroidx/compose/foundation/text/modifiers/MultiParagraphLayoutCache;->markDirty()V +HSPLandroidx/compose/foundation/text/modifiers/MultiParagraphLayoutCache;->newLayoutWillBeDifferent-VKLhPVY(Landroidx/compose/ui/text/TextLayoutResult;JLandroidx/compose/ui/unit/LayoutDirection;)Z +HSPLandroidx/compose/foundation/text/modifiers/MultiParagraphLayoutCache;->setDensity$foundation_release(Landroidx/compose/ui/unit/Density;)V +HSPLandroidx/compose/foundation/text/modifiers/MultiParagraphLayoutCache;->setLayoutDirection(Landroidx/compose/ui/unit/LayoutDirection;)Landroidx/compose/ui/text/MultiParagraphIntrinsics; +HSPLandroidx/compose/foundation/text/modifiers/MultiParagraphLayoutCache;->textLayoutResult-VKLhPVY(Landroidx/compose/ui/unit/LayoutDirection;JLandroidx/compose/ui/text/MultiParagraph;)Landroidx/compose/ui/text/TextLayoutResult; +HSPLandroidx/compose/foundation/text/modifiers/MultiParagraphLayoutCache;->update-ZNqEYIc(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/font/FontFamily$Resolver;IZIILjava/util/List;)V +Landroidx/compose/foundation/text/modifiers/SelectionController; +Landroidx/compose/foundation/text/modifiers/TextAnnotatedStringElement; +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringElement;->(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/font/FontFamily$Resolver;Lkotlin/jvm/functions/Function1;IZIILjava/util/List;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/text/modifiers/SelectionController;Landroidx/compose/ui/graphics/ColorProducer;)V +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringElement;->(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/font/FontFamily$Resolver;Lkotlin/jvm/functions/Function1;IZIILjava/util/List;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/text/modifiers/SelectionController;Landroidx/compose/ui/graphics/ColorProducer;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringElement;->create()Landroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode; +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringElement;->update(Landroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode;)V +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringElement;->update(Landroidx/compose/ui/Modifier$Node;)V +Landroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode; +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode;->(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/font/FontFamily$Resolver;Lkotlin/jvm/functions/Function1;IZIILjava/util/List;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/text/modifiers/SelectionController;Landroidx/compose/ui/graphics/ColorProducer;)V +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode;->(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/font/FontFamily$Resolver;Lkotlin/jvm/functions/Function1;IZIILjava/util/List;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/text/modifiers/SelectionController;Landroidx/compose/ui/graphics/ColorProducer;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode;->applySemantics(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode;->doInvalidations(ZZZZ)V +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode;->draw(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode;->getLayoutCache()Landroidx/compose/foundation/text/modifiers/MultiParagraphLayoutCache; +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode;->getLayoutCache(Landroidx/compose/ui/unit/Density;)Landroidx/compose/foundation/text/modifiers/MultiParagraphLayoutCache; +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode;->updateCallbacks(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/text/modifiers/SelectionController;)Z +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode;->updateDraw(Landroidx/compose/ui/graphics/ColorProducer;Landroidx/compose/ui/text/TextStyle;)Z +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode;->updateLayoutRelatedArgs-MPT68mk(Landroidx/compose/ui/text/TextStyle;Ljava/util/List;IIZLandroidx/compose/ui/text/font/FontFamily$Resolver;I)Z +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode;->updateText(Landroidx/compose/ui/text/AnnotatedString;)Z +Landroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode$applySemantics$1; +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode$applySemantics$1;->(Landroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode;)V +Landroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode$measure$1; +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode$measure$1;->(Landroidx/compose/ui/layout/Placeable;)V +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/selection/MouseSelectionObserver; +Landroidx/compose/foundation/text/selection/SelectionMagnifierKt; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt;->()V +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt;->access$getOffsetDisplacementThreshold$p()J +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt;->access$getUnspecifiedAnimationVector2D$p()Landroidx/compose/animation/core/AnimationVector2D; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt;->access$getUnspecifiedSafeOffsetVectorConverter$p()Landroidx/compose/animation/core/TwoWayConverter; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt;->access$rememberAnimatedMagnifierPosition$lambda$1(Landroidx/compose/runtime/State;)J +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt;->access$rememberAnimatedMagnifierPosition(Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt;->animatedSelectionMagnifier(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt;->rememberAnimatedMagnifierPosition$lambda$1(Landroidx/compose/runtime/State;)J +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt;->rememberAnimatedMagnifierPosition(Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +Landroidx/compose/foundation/text/selection/SelectionMagnifierKt$UnspecifiedSafeOffsetVectorConverter$1; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$UnspecifiedSafeOffsetVectorConverter$1;->()V +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$UnspecifiedSafeOffsetVectorConverter$1;->()V +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$UnspecifiedSafeOffsetVectorConverter$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$UnspecifiedSafeOffsetVectorConverter$1;->invoke-k-4lQ0M(J)Landroidx/compose/animation/core/AnimationVector2D; +Landroidx/compose/foundation/text/selection/SelectionMagnifierKt$UnspecifiedSafeOffsetVectorConverter$2; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$UnspecifiedSafeOffsetVectorConverter$2;->()V +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$UnspecifiedSafeOffsetVectorConverter$2;->()V +Landroidx/compose/foundation/text/selection/SelectionMagnifierKt$animatedSelectionMagnifier$1; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$animatedSelectionMagnifier$1;->(Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$animatedSelectionMagnifier$1;->access$invoke$lambda$0(Landroidx/compose/runtime/State;)J +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$animatedSelectionMagnifier$1;->invoke$lambda$0(Landroidx/compose/runtime/State;)J +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$animatedSelectionMagnifier$1;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$animatedSelectionMagnifier$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/selection/SelectionMagnifierKt$animatedSelectionMagnifier$1$1$1; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$animatedSelectionMagnifier$1$1$1;->(Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$animatedSelectionMagnifier$1$1$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$animatedSelectionMagnifier$1$1$1;->invoke-F1C5BW0()J +Landroidx/compose/foundation/text/selection/SelectionMagnifierKt$rememberAnimatedMagnifierPosition$1; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$rememberAnimatedMagnifierPosition$1;->(Landroidx/compose/runtime/State;Landroidx/compose/animation/core/Animatable;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$rememberAnimatedMagnifierPosition$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$rememberAnimatedMagnifierPosition$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/selection/SelectionMagnifierKt$rememberAnimatedMagnifierPosition$1$1; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$rememberAnimatedMagnifierPosition$1$1;->(Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$rememberAnimatedMagnifierPosition$1$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$rememberAnimatedMagnifierPosition$1$1;->invoke-F1C5BW0()J +Landroidx/compose/foundation/text/selection/SelectionMagnifierKt$rememberAnimatedMagnifierPosition$1$2; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$rememberAnimatedMagnifierPosition$1$2;->(Landroidx/compose/animation/core/Animatable;Lkotlinx/coroutines/CoroutineScope;)V +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$rememberAnimatedMagnifierPosition$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$rememberAnimatedMagnifierPosition$1$2;->emit-3MmeM6k(JLkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/foundation/text/selection/SelectionRegistrar; +Landroidx/compose/foundation/text/selection/SelectionRegistrarKt; +HSPLandroidx/compose/foundation/text/selection/SelectionRegistrarKt;->()V +HSPLandroidx/compose/foundation/text/selection/SelectionRegistrarKt;->getLocalSelectionRegistrar()Landroidx/compose/runtime/ProvidableCompositionLocal; +Landroidx/compose/foundation/text/selection/SelectionRegistrarKt$LocalSelectionRegistrar$1; +HSPLandroidx/compose/foundation/text/selection/SelectionRegistrarKt$LocalSelectionRegistrar$1;->()V +HSPLandroidx/compose/foundation/text/selection/SelectionRegistrarKt$LocalSelectionRegistrar$1;->()V +HSPLandroidx/compose/foundation/text/selection/SelectionRegistrarKt$LocalSelectionRegistrar$1;->invoke()Landroidx/compose/foundation/text/selection/SelectionRegistrar; +HSPLandroidx/compose/foundation/text/selection/SelectionRegistrarKt$LocalSelectionRegistrar$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/text/selection/SimpleLayoutKt; +HSPLandroidx/compose/foundation/text/selection/SimpleLayoutKt;->SimpleLayout(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +Landroidx/compose/foundation/text/selection/SimpleLayoutKt$SimpleLayout$1; +HSPLandroidx/compose/foundation/text/selection/SimpleLayoutKt$SimpleLayout$1;->()V +HSPLandroidx/compose/foundation/text/selection/SimpleLayoutKt$SimpleLayout$1;->()V +HSPLandroidx/compose/foundation/text/selection/SimpleLayoutKt$SimpleLayout$1;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/text/selection/SimpleLayoutKt$SimpleLayout$1$measure$1; +HSPLandroidx/compose/foundation/text/selection/SimpleLayoutKt$SimpleLayout$1$measure$1;->(Ljava/util/List;)V +HSPLandroidx/compose/foundation/text/selection/SimpleLayoutKt$SimpleLayout$1$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/text/selection/SimpleLayoutKt$SimpleLayout$1$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/selection/TextFieldSelectionManager; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->(Landroidx/compose/foundation/text/UndoManager;)V +PLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->deselect-_kEHs6E$foundation_release$default(Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;Landroidx/compose/ui/geometry/Offset;ILjava/lang/Object;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->deselect-_kEHs6E$foundation_release(Landroidx/compose/ui/geometry/Offset;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->getDraggingHandle()Landroidx/compose/foundation/text/Handle; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->getTouchSelectionObserver$foundation_release()Landroidx/compose/foundation/text/TextDragObserver; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->getValue$foundation_release()Landroidx/compose/ui/text/input/TextFieldValue; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->hideSelectionToolbar$foundation_release()V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->setClipboardManager$foundation_release(Landroidx/compose/ui/platform/ClipboardManager;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->setEditable(Z)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->setFocusRequester(Landroidx/compose/ui/focus/FocusRequester;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->setHandleState(Landroidx/compose/foundation/text/HandleState;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->setHapticFeedBack(Landroidx/compose/ui/hapticfeedback/HapticFeedback;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->setOffsetMapping$foundation_release(Landroidx/compose/ui/text/input/OffsetMapping;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->setOnValueChange$foundation_release(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->setState$foundation_release(Landroidx/compose/foundation/text/TextFieldState;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->setTextToolbar(Landroidx/compose/ui/platform/TextToolbar;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->setValue$foundation_release(Landroidx/compose/ui/text/input/TextFieldValue;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->setVisualTransformation$foundation_release(Landroidx/compose/ui/text/input/VisualTransformation;)V +Landroidx/compose/foundation/text/selection/TextFieldSelectionManager$mouseSelectionObserver$1; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager$mouseSelectionObserver$1;->(Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;)V +Landroidx/compose/foundation/text/selection/TextFieldSelectionManager$onValueChange$1; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager$onValueChange$1;->()V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager$onValueChange$1;->()V +Landroidx/compose/foundation/text/selection/TextFieldSelectionManager$touchSelectionObserver$1; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager$touchSelectionObserver$1;->(Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;)V +Landroidx/compose/foundation/text/selection/TextFieldSelectionManagerKt; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManagerKt;->calculateSelectionMagnifierCenterAndroid-O0kMr_c(Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;J)J +Landroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt;->textFieldMagnifier(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1;->(Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1;->access$invoke$lambda$1(Landroidx/compose/runtime/MutableState;)J +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1;->access$invoke$lambda$2(Landroidx/compose/runtime/MutableState;J)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1;->invoke$lambda$1(Landroidx/compose/runtime/MutableState;)J +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1;->invoke$lambda$2(Landroidx/compose/runtime/MutableState;J)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1$1; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1$1;->(Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;Landroidx/compose/runtime/MutableState;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1$1;->invoke-F1C5BW0()J +Landroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1$2$1; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1$2$1;->(Landroidx/compose/ui/unit/Density;Landroidx/compose/runtime/MutableState;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1$2$1;->invoke(Lkotlin/jvm/functions/Function0;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1$2$1$1; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1$2$1$1;->(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1$2$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1$2$1$1;->invoke-tuRUvjQ(Landroidx/compose/ui/unit/Density;)J +Landroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1$2$1$2; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1$2$1$2;->(Landroidx/compose/ui/unit/Density;Landroidx/compose/runtime/MutableState;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1$2$1$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1$2$1$2;->invoke-EaSLcWc(J)V +Landroidx/compose/foundation/text/selection/TextPreparedSelectionState; +HSPLandroidx/compose/foundation/text/selection/TextPreparedSelectionState;->()V +Landroidx/compose/foundation/text/selection/TextSelectionColors; +HSPLandroidx/compose/foundation/text/selection/TextSelectionColors;->()V +HSPLandroidx/compose/foundation/text/selection/TextSelectionColors;->(JJ)V +HSPLandroidx/compose/foundation/text/selection/TextSelectionColors;->(JJLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/text/selection/TextSelectionColors;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/text/selection/TextSelectionColors;->getBackgroundColor-0d7_KjU()J +Landroidx/compose/foundation/text/selection/TextSelectionColorsKt; +HSPLandroidx/compose/foundation/text/selection/TextSelectionColorsKt;->()V +HSPLandroidx/compose/foundation/text/selection/TextSelectionColorsKt;->getLocalTextSelectionColors()Landroidx/compose/runtime/ProvidableCompositionLocal; +Landroidx/compose/foundation/text/selection/TextSelectionColorsKt$LocalTextSelectionColors$1; +HSPLandroidx/compose/foundation/text/selection/TextSelectionColorsKt$LocalTextSelectionColors$1;->()V +HSPLandroidx/compose/foundation/text/selection/TextSelectionColorsKt$LocalTextSelectionColors$1;->()V +Landroidx/compose/material/Colors; +HSPLandroidx/compose/material/Colors;->()V +HSPLandroidx/compose/material/Colors;->(JJJJJJJJJJJJZ)V +HSPLandroidx/compose/material/Colors;->(JJJJJJJJJJJJZLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material/Colors;->copy-pvPzIIM$default(Landroidx/compose/material/Colors;JJJJJJJJJJJJZILjava/lang/Object;)Landroidx/compose/material/Colors; +HSPLandroidx/compose/material/Colors;->copy-pvPzIIM(JJJJJJJJJJJJZ)Landroidx/compose/material/Colors; +HSPLandroidx/compose/material/Colors;->getBackground-0d7_KjU()J +HSPLandroidx/compose/material/Colors;->getError-0d7_KjU()J +HSPLandroidx/compose/material/Colors;->getOnBackground-0d7_KjU()J +HSPLandroidx/compose/material/Colors;->getOnError-0d7_KjU()J +HSPLandroidx/compose/material/Colors;->getOnPrimary-0d7_KjU()J +HSPLandroidx/compose/material/Colors;->getOnSecondary-0d7_KjU()J +HSPLandroidx/compose/material/Colors;->getOnSurface-0d7_KjU()J +HSPLandroidx/compose/material/Colors;->getPrimary-0d7_KjU()J +HSPLandroidx/compose/material/Colors;->getPrimaryVariant-0d7_KjU()J +HSPLandroidx/compose/material/Colors;->getSecondary-0d7_KjU()J +HSPLandroidx/compose/material/Colors;->getSecondaryVariant-0d7_KjU()J +HSPLandroidx/compose/material/Colors;->getSurface-0d7_KjU()J +HSPLandroidx/compose/material/Colors;->isLight()Z +HSPLandroidx/compose/material/Colors;->setBackground-8_81llA$material_release(J)V +HSPLandroidx/compose/material/Colors;->setError-8_81llA$material_release(J)V +HSPLandroidx/compose/material/Colors;->setLight$material_release(Z)V +HSPLandroidx/compose/material/Colors;->setOnBackground-8_81llA$material_release(J)V +HSPLandroidx/compose/material/Colors;->setOnError-8_81llA$material_release(J)V +HSPLandroidx/compose/material/Colors;->setOnPrimary-8_81llA$material_release(J)V +HSPLandroidx/compose/material/Colors;->setOnSecondary-8_81llA$material_release(J)V +HSPLandroidx/compose/material/Colors;->setOnSurface-8_81llA$material_release(J)V +HSPLandroidx/compose/material/Colors;->setPrimary-8_81llA$material_release(J)V +HSPLandroidx/compose/material/Colors;->setPrimaryVariant-8_81llA$material_release(J)V +HSPLandroidx/compose/material/Colors;->setSecondary-8_81llA$material_release(J)V +HSPLandroidx/compose/material/Colors;->setSecondaryVariant-8_81llA$material_release(J)V +HSPLandroidx/compose/material/Colors;->setSurface-8_81llA$material_release(J)V +Landroidx/compose/material/ColorsKt; +HSPLandroidx/compose/material/ColorsKt;->()V +HSPLandroidx/compose/material/ColorsKt;->contentColorFor-4WTKRHQ(Landroidx/compose/material/Colors;J)J +HSPLandroidx/compose/material/ColorsKt;->getLocalColors()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/material/ColorsKt;->lightColors-2qZNXz8$default(JJJJJJJJJJJJILjava/lang/Object;)Landroidx/compose/material/Colors; +HSPLandroidx/compose/material/ColorsKt;->lightColors-2qZNXz8(JJJJJJJJJJJJ)Landroidx/compose/material/Colors; +HSPLandroidx/compose/material/ColorsKt;->updateColorsFrom(Landroidx/compose/material/Colors;Landroidx/compose/material/Colors;)V +Landroidx/compose/material/ColorsKt$LocalColors$1; +HSPLandroidx/compose/material/ColorsKt$LocalColors$1;->()V +HSPLandroidx/compose/material/ColorsKt$LocalColors$1;->()V +HSPLandroidx/compose/material/ColorsKt$LocalColors$1;->invoke()Landroidx/compose/material/Colors; +HSPLandroidx/compose/material/ColorsKt$LocalColors$1;->invoke()Ljava/lang/Object; +Landroidx/compose/material/ContentAlpha; +HSPLandroidx/compose/material/ContentAlpha;->()V +HSPLandroidx/compose/material/ContentAlpha;->()V +HSPLandroidx/compose/material/ContentAlpha;->contentAlpha(FFLandroidx/compose/runtime/Composer;I)F +HSPLandroidx/compose/material/ContentAlpha;->getHigh(Landroidx/compose/runtime/Composer;I)F +HSPLandroidx/compose/material/ContentAlpha;->getMedium(Landroidx/compose/runtime/Composer;I)F +Landroidx/compose/material/ContentAlphaKt; +HSPLandroidx/compose/material/ContentAlphaKt;->()V +HSPLandroidx/compose/material/ContentAlphaKt;->getLocalContentAlpha()Landroidx/compose/runtime/ProvidableCompositionLocal; +Landroidx/compose/material/ContentAlphaKt$LocalContentAlpha$1; +HSPLandroidx/compose/material/ContentAlphaKt$LocalContentAlpha$1;->()V +HSPLandroidx/compose/material/ContentAlphaKt$LocalContentAlpha$1;->()V +Landroidx/compose/material/ContentColorKt; +HSPLandroidx/compose/material/ContentColorKt;->()V +HSPLandroidx/compose/material/ContentColorKt;->getLocalContentColor()Landroidx/compose/runtime/ProvidableCompositionLocal; +Landroidx/compose/material/ContentColorKt$LocalContentColor$1; +HSPLandroidx/compose/material/ContentColorKt$LocalContentColor$1;->()V +HSPLandroidx/compose/material/ContentColorKt$LocalContentColor$1;->()V +HSPLandroidx/compose/material/ContentColorKt$LocalContentColor$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/material/ContentColorKt$LocalContentColor$1;->invoke-0d7_KjU()J +Landroidx/compose/material/DefaultPlatformTextStyle_androidKt; +HSPLandroidx/compose/material/DefaultPlatformTextStyle_androidKt;->()V +HSPLandroidx/compose/material/DefaultPlatformTextStyle_androidKt;->defaultPlatformTextStyle()Landroidx/compose/ui/text/PlatformTextStyle; +Landroidx/compose/material/MaterialRippleTheme; +HSPLandroidx/compose/material/MaterialRippleTheme;->()V +HSPLandroidx/compose/material/MaterialRippleTheme;->()V +HSPLandroidx/compose/material/MaterialRippleTheme;->defaultColor-WaAFU9c(Landroidx/compose/runtime/Composer;I)J +HSPLandroidx/compose/material/MaterialRippleTheme;->rippleAlpha(Landroidx/compose/runtime/Composer;I)Landroidx/compose/material/ripple/RippleAlpha; +Landroidx/compose/material/MaterialTextSelectionColorsKt; +HSPLandroidx/compose/material/MaterialTextSelectionColorsKt;->calculateContrastRatio--OWjLjI(JJ)F +HSPLandroidx/compose/material/MaterialTextSelectionColorsKt;->calculateContrastRatio-nb2GgbA(JFJJ)F +HSPLandroidx/compose/material/MaterialTextSelectionColorsKt;->calculateSelectionBackgroundColor-ysEtTa8(JJJ)J +HSPLandroidx/compose/material/MaterialTextSelectionColorsKt;->rememberTextSelectionColors(Landroidx/compose/material/Colors;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/text/selection/TextSelectionColors; +Landroidx/compose/material/MaterialTheme; +HSPLandroidx/compose/material/MaterialTheme;->()V +HSPLandroidx/compose/material/MaterialTheme;->()V +HSPLandroidx/compose/material/MaterialTheme;->getColors(Landroidx/compose/runtime/Composer;I)Landroidx/compose/material/Colors; +HSPLandroidx/compose/material/MaterialTheme;->getShapes(Landroidx/compose/runtime/Composer;I)Landroidx/compose/material/Shapes; +HSPLandroidx/compose/material/MaterialTheme;->getTypography(Landroidx/compose/runtime/Composer;I)Landroidx/compose/material/Typography; +Landroidx/compose/material/MaterialThemeKt; +HSPLandroidx/compose/material/MaterialThemeKt;->MaterialTheme(Landroidx/compose/material/Colors;Landroidx/compose/material/Typography;Landroidx/compose/material/Shapes;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +Landroidx/compose/material/MaterialThemeKt$MaterialTheme$1; +HSPLandroidx/compose/material/MaterialThemeKt$MaterialTheme$1;->(Landroidx/compose/material/Typography;Lkotlin/jvm/functions/Function2;I)V +HSPLandroidx/compose/material/MaterialThemeKt$MaterialTheme$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material/MaterialThemeKt$MaterialTheme$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material/MaterialThemeKt$MaterialTheme$1$1; +HSPLandroidx/compose/material/MaterialThemeKt$MaterialTheme$1$1;->(Lkotlin/jvm/functions/Function2;I)V +HSPLandroidx/compose/material/MaterialThemeKt$MaterialTheme$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material/MaterialThemeKt$MaterialTheme$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material/MaterialThemeKt$MaterialTheme$2; +HSPLandroidx/compose/material/MaterialThemeKt$MaterialTheme$2;->(Landroidx/compose/material/Colors;Landroidx/compose/material/Typography;Landroidx/compose/material/Shapes;Lkotlin/jvm/functions/Function2;II)V +Landroidx/compose/material/MaterialTheme_androidKt; +HSPLandroidx/compose/material/MaterialTheme_androidKt;->PlatformMaterialTheme(Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +Landroidx/compose/material/Shapes; +HSPLandroidx/compose/material/Shapes;->()V +HSPLandroidx/compose/material/Shapes;->(Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerBasedShape;)V +HSPLandroidx/compose/material/Shapes;->(Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerBasedShape;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/material/ShapesKt; +HSPLandroidx/compose/material/ShapesKt;->()V +HSPLandroidx/compose/material/ShapesKt;->getLocalShapes()Landroidx/compose/runtime/ProvidableCompositionLocal; +Landroidx/compose/material/ShapesKt$LocalShapes$1; +HSPLandroidx/compose/material/ShapesKt$LocalShapes$1;->()V +HSPLandroidx/compose/material/ShapesKt$LocalShapes$1;->()V +HSPLandroidx/compose/material/ShapesKt$LocalShapes$1;->invoke()Landroidx/compose/material/Shapes; +HSPLandroidx/compose/material/ShapesKt$LocalShapes$1;->invoke()Ljava/lang/Object; +Landroidx/compose/material/TextKt; +HSPLandroidx/compose/material/TextKt;->()V +HSPLandroidx/compose/material/TextKt;->ProvideTextStyle(Landroidx/compose/ui/text/TextStyle;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +Landroidx/compose/material/TextKt$LocalTextStyle$1; +HSPLandroidx/compose/material/TextKt$LocalTextStyle$1;->()V +HSPLandroidx/compose/material/TextKt$LocalTextStyle$1;->()V +HSPLandroidx/compose/material/TextKt$LocalTextStyle$1;->invoke()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material/TextKt$LocalTextStyle$1;->invoke()Ljava/lang/Object; +Landroidx/compose/material/Typography; +HSPLandroidx/compose/material/Typography;->()V +HSPLandroidx/compose/material/Typography;->(Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;)V +HSPLandroidx/compose/material/Typography;->(Landroidx/compose/ui/text/font/FontFamily;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;)V +HSPLandroidx/compose/material/Typography;->(Landroidx/compose/ui/text/font/FontFamily;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material/Typography;->getBody1()Landroidx/compose/ui/text/TextStyle; +Landroidx/compose/material/TypographyKt; +HSPLandroidx/compose/material/TypographyKt;->()V +HSPLandroidx/compose/material/TypographyKt;->access$withDefaultFontFamily(Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/font/FontFamily;)Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material/TypographyKt;->getDefaultTextStyle()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material/TypographyKt;->getLocalTypography()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/material/TypographyKt;->withDefaultFontFamily(Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/font/FontFamily;)Landroidx/compose/ui/text/TextStyle; +Landroidx/compose/material/TypographyKt$LocalTypography$1; +HSPLandroidx/compose/material/TypographyKt$LocalTypography$1;->()V +HSPLandroidx/compose/material/TypographyKt$LocalTypography$1;->()V +HSPLandroidx/compose/material/TypographyKt$LocalTypography$1;->invoke()Landroidx/compose/material/Typography; +HSPLandroidx/compose/material/TypographyKt$LocalTypography$1;->invoke()Ljava/lang/Object; +Landroidx/compose/material/icons/Icons$Filled; +HSPLandroidx/compose/material/icons/Icons$Filled;->()V +HSPLandroidx/compose/material/icons/Icons$Filled;->()V +Landroidx/compose/material/icons/Icons$Outlined; +HSPLandroidx/compose/material/icons/Icons$Outlined;->()V +HSPLandroidx/compose/material/icons/Icons$Outlined;->()V +Landroidx/compose/material/icons/filled/HomeKt; +HSPLandroidx/compose/material/icons/filled/HomeKt;->()V +HSPLandroidx/compose/material/icons/filled/HomeKt;->getHome(Landroidx/compose/material/icons/Icons$Filled;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/filled/PasswordKt; +HSPLandroidx/compose/material/icons/filled/PasswordKt;->()V +HSPLandroidx/compose/material/icons/filled/PasswordKt;->getPassword(Landroidx/compose/material/icons/Icons$Filled;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/filled/SecurityKt; +HSPLandroidx/compose/material/icons/filled/SecurityKt;->()V +HSPLandroidx/compose/material/icons/filled/SecurityKt;->getSecurity(Landroidx/compose/material/icons/Icons$Filled;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/filled/SendKt; +HSPLandroidx/compose/material/icons/filled/SendKt;->()V +HSPLandroidx/compose/material/icons/filled/SendKt;->getSend(Landroidx/compose/material/icons/Icons$Filled;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/filled/SettingsKt; +HSPLandroidx/compose/material/icons/filled/SettingsKt;->()V +HSPLandroidx/compose/material/icons/filled/SettingsKt;->getSettings(Landroidx/compose/material/icons/Icons$Filled;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/AddKt; +HSPLandroidx/compose/material/icons/outlined/AddKt;->()V +HSPLandroidx/compose/material/icons/outlined/AddKt;->getAdd(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/AttachmentKt; +HSPLandroidx/compose/material/icons/outlined/AttachmentKt;->()V +HSPLandroidx/compose/material/icons/outlined/AttachmentKt;->getAttachment(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/AutoAwesomeKt; +HSPLandroidx/compose/material/icons/outlined/AutoAwesomeKt;->()V +HSPLandroidx/compose/material/icons/outlined/AutoAwesomeKt;->getAutoAwesome(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/CalendarMonthKt; +HSPLandroidx/compose/material/icons/outlined/CalendarMonthKt;->()V +HSPLandroidx/compose/material/icons/outlined/CalendarMonthKt;->getCalendarMonth(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/ChevronRightKt; +HSPLandroidx/compose/material/icons/outlined/ChevronRightKt;->()V +HSPLandroidx/compose/material/icons/outlined/ChevronRightKt;->getChevronRight(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/ClearKt; +HSPLandroidx/compose/material/icons/outlined/ClearKt;->()V +HSPLandroidx/compose/material/icons/outlined/ClearKt;->getClear(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/CloudOffKt; +HSPLandroidx/compose/material/icons/outlined/CloudOffKt;->()V +HSPLandroidx/compose/material/icons/outlined/CloudOffKt;->getCloudOff(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/CreditCardKt; +HSPLandroidx/compose/material/icons/outlined/CreditCardKt;->()V +HSPLandroidx/compose/material/icons/outlined/CreditCardKt;->getCreditCard(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/DeleteKt; +HSPLandroidx/compose/material/icons/outlined/DeleteKt;->()V +HSPLandroidx/compose/material/icons/outlined/DeleteKt;->getDelete(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/ErrorOutlineKt; +HSPLandroidx/compose/material/icons/outlined/ErrorOutlineKt;->()V +HSPLandroidx/compose/material/icons/outlined/ErrorOutlineKt;->getErrorOutline(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/FilterAltKt; +HSPLandroidx/compose/material/icons/outlined/FilterAltKt;->()V +HSPLandroidx/compose/material/icons/outlined/FilterAltKt;->getFilterAlt(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/FolderOffKt; +HSPLandroidx/compose/material/icons/outlined/FolderOffKt;->()V +HSPLandroidx/compose/material/icons/outlined/FolderOffKt;->getFolderOff(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/HomeKt; +HSPLandroidx/compose/material/icons/outlined/HomeKt;->()V +HSPLandroidx/compose/material/icons/outlined/HomeKt;->getHome(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/InfoKt; +HSPLandroidx/compose/material/icons/outlined/InfoKt;->()V +HSPLandroidx/compose/material/icons/outlined/InfoKt;->getInfo(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/KeyKt; +HSPLandroidx/compose/material/icons/outlined/KeyKt;->()V +HSPLandroidx/compose/material/icons/outlined/KeyKt;->getKey(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/LockKt; +HSPLandroidx/compose/material/icons/outlined/LockKt;->()V +HSPLandroidx/compose/material/icons/outlined/LockKt;->getLock(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/LockOpenKt; +HSPLandroidx/compose/material/icons/outlined/LockOpenKt;->()V +HSPLandroidx/compose/material/icons/outlined/LockOpenKt;->getLockOpen(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/MoreVertKt; +HSPLandroidx/compose/material/icons/outlined/MoreVertKt;->()V +HSPLandroidx/compose/material/icons/outlined/MoreVertKt;->getMoreVert(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/NumbersKt; +HSPLandroidx/compose/material/icons/outlined/NumbersKt;->()V +HSPLandroidx/compose/material/icons/outlined/NumbersKt;->getNumbers(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/PasswordKt; +HSPLandroidx/compose/material/icons/outlined/PasswordKt;->()V +HSPLandroidx/compose/material/icons/outlined/PasswordKt;->getPassword(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/PermIdentityKt; +HSPLandroidx/compose/material/icons/outlined/PermIdentityKt;->()V +HSPLandroidx/compose/material/icons/outlined/PermIdentityKt;->getPermIdentity(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/PersonAddKt; +HSPLandroidx/compose/material/icons/outlined/PersonAddKt;->()V +HSPLandroidx/compose/material/icons/outlined/PersonAddKt;->getPersonAdd(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/SearchKt; +HSPLandroidx/compose/material/icons/outlined/SearchKt;->()V +HSPLandroidx/compose/material/icons/outlined/SearchKt;->getSearch(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/SecurityKt; +HSPLandroidx/compose/material/icons/outlined/SecurityKt;->()V +HSPLandroidx/compose/material/icons/outlined/SecurityKt;->getSecurity(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/SendKt; +HSPLandroidx/compose/material/icons/outlined/SendKt;->()V +HSPLandroidx/compose/material/icons/outlined/SendKt;->getSend(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/SettingsKt; +HSPLandroidx/compose/material/icons/outlined/SettingsKt;->()V +HSPLandroidx/compose/material/icons/outlined/SettingsKt;->getSettings(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/SortByAlphaKt; +HSPLandroidx/compose/material/icons/outlined/SortByAlphaKt;->()V +HSPLandroidx/compose/material/icons/outlined/SortByAlphaKt;->getSortByAlpha(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/StickyNote2Kt; +HSPLandroidx/compose/material/icons/outlined/StickyNote2Kt;->()V +HSPLandroidx/compose/material/icons/outlined/StickyNote2Kt;->getStickyNote2(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/VisibilityOffKt; +HSPLandroidx/compose/material/icons/outlined/VisibilityOffKt;->()V +HSPLandroidx/compose/material/icons/outlined/VisibilityOffKt;->getVisibilityOff(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/pullrefresh/PullRefreshDefaults; +HSPLandroidx/compose/material/pullrefresh/PullRefreshDefaults;->()V +HSPLandroidx/compose/material/pullrefresh/PullRefreshDefaults;->()V +HSPLandroidx/compose/material/pullrefresh/PullRefreshDefaults;->getRefreshThreshold-D9Ej5fM()F +HSPLandroidx/compose/material/pullrefresh/PullRefreshDefaults;->getRefreshingOffset-D9Ej5fM()F +Landroidx/compose/material/pullrefresh/PullRefreshKt; +HSPLandroidx/compose/material/pullrefresh/PullRefreshKt;->pullRefresh$default(Landroidx/compose/ui/Modifier;Landroidx/compose/material/pullrefresh/PullRefreshState;ZILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/material/pullrefresh/PullRefreshKt;->pullRefresh(Landroidx/compose/ui/Modifier;Landroidx/compose/material/pullrefresh/PullRefreshState;Z)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/material/pullrefresh/PullRefreshKt;->pullRefresh(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;Z)Landroidx/compose/ui/Modifier; +Landroidx/compose/material/pullrefresh/PullRefreshKt$pullRefresh$2$1; +HSPLandroidx/compose/material/pullrefresh/PullRefreshKt$pullRefresh$2$1;->(Ljava/lang/Object;)V +Landroidx/compose/material/pullrefresh/PullRefreshKt$pullRefresh$2$2; +HSPLandroidx/compose/material/pullrefresh/PullRefreshKt$pullRefresh$2$2;->(Ljava/lang/Object;)V +Landroidx/compose/material/pullrefresh/PullRefreshNestedScrollConnection; +HSPLandroidx/compose/material/pullrefresh/PullRefreshNestedScrollConnection;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;Z)V +Landroidx/compose/material/pullrefresh/PullRefreshState; +HSPLandroidx/compose/material/pullrefresh/PullRefreshState;->()V +HSPLandroidx/compose/material/pullrefresh/PullRefreshState;->(Lkotlinx/coroutines/CoroutineScope;Landroidx/compose/runtime/State;FF)V +HSPLandroidx/compose/material/pullrefresh/PullRefreshState;->access$getDistancePulled(Landroidx/compose/material/pullrefresh/PullRefreshState;)F +HSPLandroidx/compose/material/pullrefresh/PullRefreshState;->getAdjustedDistancePulled()F +HSPLandroidx/compose/material/pullrefresh/PullRefreshState;->getDistancePulled()F +HSPLandroidx/compose/material/pullrefresh/PullRefreshState;->getProgress()F +HSPLandroidx/compose/material/pullrefresh/PullRefreshState;->getThreshold$material_release()F +HSPLandroidx/compose/material/pullrefresh/PullRefreshState;->get_refreshing()Z +HSPLandroidx/compose/material/pullrefresh/PullRefreshState;->get_refreshingOffset()F +HSPLandroidx/compose/material/pullrefresh/PullRefreshState;->get_threshold()F +HSPLandroidx/compose/material/pullrefresh/PullRefreshState;->setRefreshing$material_release(Z)V +HSPLandroidx/compose/material/pullrefresh/PullRefreshState;->setRefreshingOffset$material_release(F)V +HSPLandroidx/compose/material/pullrefresh/PullRefreshState;->setThreshold$material_release(F)V +HSPLandroidx/compose/material/pullrefresh/PullRefreshState;->set_threshold(F)V +Landroidx/compose/material/pullrefresh/PullRefreshState$adjustedDistancePulled$2; +HSPLandroidx/compose/material/pullrefresh/PullRefreshState$adjustedDistancePulled$2;->(Landroidx/compose/material/pullrefresh/PullRefreshState;)V +HSPLandroidx/compose/material/pullrefresh/PullRefreshState$adjustedDistancePulled$2;->invoke()Ljava/lang/Float; +HSPLandroidx/compose/material/pullrefresh/PullRefreshState$adjustedDistancePulled$2;->invoke()Ljava/lang/Object; +Landroidx/compose/material/pullrefresh/PullRefreshStateKt; +HSPLandroidx/compose/material/pullrefresh/PullRefreshStateKt;->rememberPullRefreshState-UuyPYSY(ZLkotlin/jvm/functions/Function0;FFLandroidx/compose/runtime/Composer;II)Landroidx/compose/material/pullrefresh/PullRefreshState; +Landroidx/compose/material/pullrefresh/PullRefreshStateKt$rememberPullRefreshState$3; +HSPLandroidx/compose/material/pullrefresh/PullRefreshStateKt$rememberPullRefreshState$3;->(Landroidx/compose/material/pullrefresh/PullRefreshState;ZLkotlin/jvm/internal/Ref$FloatRef;Lkotlin/jvm/internal/Ref$FloatRef;)V +HSPLandroidx/compose/material/pullrefresh/PullRefreshStateKt$rememberPullRefreshState$3;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/material/pullrefresh/PullRefreshStateKt$rememberPullRefreshState$3;->invoke()V +Landroidx/compose/material/ripple/AndroidRippleIndicationInstance; +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->(ZFLandroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/material/ripple/RippleContainer;)V +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->(ZFLandroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/material/ripple/RippleContainer;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->access$getInvalidateTick(Landroidx/compose/material/ripple/AndroidRippleIndicationInstance;)Z +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->access$setInvalidateTick(Landroidx/compose/material/ripple/AndroidRippleIndicationInstance;Z)V +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->addRipple(Landroidx/compose/foundation/interaction/PressInteraction$Press;Lkotlinx/coroutines/CoroutineScope;)V +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->dispose()V +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->drawIndication(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->getInvalidateTick()Z +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->getRippleHostView()Landroidx/compose/material/ripple/RippleHostView; +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->onForgotten()V +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->onRemembered()V +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->removeRipple(Landroidx/compose/foundation/interaction/PressInteraction$Press;)V +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->resetHostView()V +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->setInvalidateTick(Z)V +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->setRippleHostView(Landroidx/compose/material/ripple/RippleHostView;)V +Landroidx/compose/material/ripple/AndroidRippleIndicationInstance$onInvalidateRipple$1; +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance$onInvalidateRipple$1;->(Landroidx/compose/material/ripple/AndroidRippleIndicationInstance;)V +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance$onInvalidateRipple$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance$onInvalidateRipple$1;->invoke()V +Landroidx/compose/material/ripple/PlatformRipple; +HSPLandroidx/compose/material/ripple/PlatformRipple;->(ZFLandroidx/compose/runtime/State;)V +HSPLandroidx/compose/material/ripple/PlatformRipple;->(ZFLandroidx/compose/runtime/State;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material/ripple/PlatformRipple;->findNearestViewGroup(Landroidx/compose/runtime/Composer;I)Landroid/view/ViewGroup; +HSPLandroidx/compose/material/ripple/PlatformRipple;->rememberUpdatedRippleInstance-942rkJo(Landroidx/compose/foundation/interaction/InteractionSource;ZFLandroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/Composer;I)Landroidx/compose/material/ripple/RippleIndicationInstance; +Landroidx/compose/material/ripple/Ripple; +HSPLandroidx/compose/material/ripple/Ripple;->(ZFLandroidx/compose/runtime/State;)V +HSPLandroidx/compose/material/ripple/Ripple;->(ZFLandroidx/compose/runtime/State;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material/ripple/Ripple;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/material/ripple/Ripple;->rememberUpdatedInstance(Landroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/IndicationInstance; +Landroidx/compose/material/ripple/Ripple$rememberUpdatedInstance$1; +HSPLandroidx/compose/material/ripple/Ripple$rememberUpdatedInstance$1;->(Landroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/material/ripple/RippleIndicationInstance;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/material/ripple/Ripple$rememberUpdatedInstance$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/material/ripple/Ripple$rememberUpdatedInstance$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material/ripple/Ripple$rememberUpdatedInstance$1$1; +HSPLandroidx/compose/material/ripple/Ripple$rememberUpdatedInstance$1$1;->(Landroidx/compose/material/ripple/RippleIndicationInstance;Lkotlinx/coroutines/CoroutineScope;)V +HSPLandroidx/compose/material/ripple/Ripple$rememberUpdatedInstance$1$1;->emit(Landroidx/compose/foundation/interaction/Interaction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/material/ripple/Ripple$rememberUpdatedInstance$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/material/ripple/RippleAlpha; +HSPLandroidx/compose/material/ripple/RippleAlpha;->()V +HSPLandroidx/compose/material/ripple/RippleAlpha;->(FFFF)V +HSPLandroidx/compose/material/ripple/RippleAlpha;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/material/ripple/RippleAlpha;->getPressedAlpha()F +Landroidx/compose/material/ripple/RippleAnimationKt; +HSPLandroidx/compose/material/ripple/RippleAnimationKt;->()V +HSPLandroidx/compose/material/ripple/RippleAnimationKt;->getRippleEndRadius-cSwnlzA(Landroidx/compose/ui/unit/Density;ZJ)F +Landroidx/compose/material/ripple/RippleContainer; +HSPLandroidx/compose/material/ripple/RippleContainer;->(Landroid/content/Context;)V +HSPLandroidx/compose/material/ripple/RippleContainer;->disposeRippleIfNeeded(Landroidx/compose/material/ripple/AndroidRippleIndicationInstance;)V +HSPLandroidx/compose/material/ripple/RippleContainer;->getRippleHostView(Landroidx/compose/material/ripple/AndroidRippleIndicationInstance;)Landroidx/compose/material/ripple/RippleHostView; +Landroidx/compose/material/ripple/RippleHostMap; +HSPLandroidx/compose/material/ripple/RippleHostMap;->()V +HSPLandroidx/compose/material/ripple/RippleHostMap;->get(Landroidx/compose/material/ripple/AndroidRippleIndicationInstance;)Landroidx/compose/material/ripple/RippleHostView; +HSPLandroidx/compose/material/ripple/RippleHostMap;->remove(Landroidx/compose/material/ripple/AndroidRippleIndicationInstance;)V +HSPLandroidx/compose/material/ripple/RippleHostMap;->set(Landroidx/compose/material/ripple/AndroidRippleIndicationInstance;Landroidx/compose/material/ripple/RippleHostView;)V +Landroidx/compose/material/ripple/RippleHostView; +HSPLandroidx/compose/material/ripple/RippleHostView;->$r8$lambda$4nztiuYeQHklB-09QfMAnp7Ay8E(Landroidx/compose/material/ripple/RippleHostView;)V +HSPLandroidx/compose/material/ripple/RippleHostView;->()V +HSPLandroidx/compose/material/ripple/RippleHostView;->(Landroid/content/Context;)V +HSPLandroidx/compose/material/ripple/RippleHostView;->addRipple-KOepWvA(Landroidx/compose/foundation/interaction/PressInteraction$Press;ZJIJFLkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/material/ripple/RippleHostView;->createRipple(Z)V +HSPLandroidx/compose/material/ripple/RippleHostView;->disposeRipple()V +HSPLandroidx/compose/material/ripple/RippleHostView;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroidx/compose/material/ripple/RippleHostView;->refreshDrawableState()V +HSPLandroidx/compose/material/ripple/RippleHostView;->removeRipple()V +HSPLandroidx/compose/material/ripple/RippleHostView;->setRippleState$lambda$2(Landroidx/compose/material/ripple/RippleHostView;)V +HSPLandroidx/compose/material/ripple/RippleHostView;->setRippleState(Z)V +HSPLandroidx/compose/material/ripple/RippleHostView;->updateRippleProperties-biQXAtU(JIJF)V +Landroidx/compose/material/ripple/RippleHostView$$ExternalSyntheticLambda0; +HSPLandroidx/compose/material/ripple/RippleHostView$$ExternalSyntheticLambda0;->run()V +Landroidx/compose/material/ripple/RippleHostView$Companion; +HSPLandroidx/compose/material/ripple/RippleHostView$Companion;->()V +HSPLandroidx/compose/material/ripple/RippleHostView$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/material/ripple/RippleIndicationInstance; +HSPLandroidx/compose/material/ripple/RippleIndicationInstance;->(ZLandroidx/compose/runtime/State;)V +HSPLandroidx/compose/material/ripple/RippleIndicationInstance;->drawStateLayer-H2RKhps(Landroidx/compose/ui/graphics/drawscope/DrawScope;FJ)V +Landroidx/compose/material/ripple/RippleKt; +HSPLandroidx/compose/material/ripple/RippleKt;->()V +HSPLandroidx/compose/material/ripple/RippleKt;->rememberRipple-9IZ8Weo(ZFJLandroidx/compose/runtime/Composer;II)Landroidx/compose/foundation/Indication; +Landroidx/compose/material/ripple/RippleTheme; +HSPLandroidx/compose/material/ripple/RippleTheme;->()V +Landroidx/compose/material/ripple/RippleTheme$Companion; +HSPLandroidx/compose/material/ripple/RippleTheme$Companion;->()V +HSPLandroidx/compose/material/ripple/RippleTheme$Companion;->()V +HSPLandroidx/compose/material/ripple/RippleTheme$Companion;->defaultRippleAlpha-DxMtmZc(JZ)Landroidx/compose/material/ripple/RippleAlpha; +HSPLandroidx/compose/material/ripple/RippleTheme$Companion;->defaultRippleColor-5vOe2sY(JZ)J +Landroidx/compose/material/ripple/RippleThemeKt; +HSPLandroidx/compose/material/ripple/RippleThemeKt;->()V +HSPLandroidx/compose/material/ripple/RippleThemeKt;->access$getLightThemeLowContrastRippleAlpha$p()Landroidx/compose/material/ripple/RippleAlpha; +HSPLandroidx/compose/material/ripple/RippleThemeKt;->getLocalRippleTheme()Landroidx/compose/runtime/ProvidableCompositionLocal; +Landroidx/compose/material/ripple/RippleThemeKt$LocalRippleTheme$1; +HSPLandroidx/compose/material/ripple/RippleThemeKt$LocalRippleTheme$1;->()V +HSPLandroidx/compose/material/ripple/RippleThemeKt$LocalRippleTheme$1;->()V +Landroidx/compose/material/ripple/StateLayer; +HSPLandroidx/compose/material/ripple/StateLayer;->(ZLandroidx/compose/runtime/State;)V +HSPLandroidx/compose/material/ripple/StateLayer;->drawStateLayer-H2RKhps(Landroidx/compose/ui/graphics/drawscope/DrawScope;FJ)V +Landroidx/compose/material/ripple/UnprojectedRipple; +HSPLandroidx/compose/material/ripple/UnprojectedRipple;->()V +HSPLandroidx/compose/material/ripple/UnprojectedRipple;->(Z)V +HSPLandroidx/compose/material/ripple/UnprojectedRipple;->calculateRippleColor-5vOe2sY(JF)J +HSPLandroidx/compose/material/ripple/UnprojectedRipple;->getDirtyBounds()Landroid/graphics/Rect; +HSPLandroidx/compose/material/ripple/UnprojectedRipple;->isProjected()Z +HSPLandroidx/compose/material/ripple/UnprojectedRipple;->setColor-DxMtmZc(JF)V +HSPLandroidx/compose/material/ripple/UnprojectedRipple;->trySetRadius(I)V +Landroidx/compose/material/ripple/UnprojectedRipple$Companion; +HSPLandroidx/compose/material/ripple/UnprojectedRipple$Companion;->()V +HSPLandroidx/compose/material/ripple/UnprojectedRipple$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/material/ripple/UnprojectedRipple$MRadiusHelper; +HSPLandroidx/compose/material/ripple/UnprojectedRipple$MRadiusHelper;->()V +HSPLandroidx/compose/material/ripple/UnprojectedRipple$MRadiusHelper;->()V +HSPLandroidx/compose/material/ripple/UnprojectedRipple$MRadiusHelper;->setRadius(Landroid/graphics/drawable/RippleDrawable;I)V +Landroidx/compose/material3/AndroidMenu_androidKt; +HSPLandroidx/compose/material3/AndroidMenu_androidKt;->DropdownMenu-ILWXrKs(ZLkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;JLandroidx/compose/ui/window/PopupProperties;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +Landroidx/compose/material3/AndroidMenu_androidKt$DropdownMenu$2; +HSPLandroidx/compose/material3/AndroidMenu_androidKt$DropdownMenu$2;->(ZLkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;JLandroidx/compose/ui/window/PopupProperties;Lkotlin/jvm/functions/Function3;II)V +Landroidx/compose/material3/AppBarKt; +HSPLandroidx/compose/material3/AppBarKt;->()V +HSPLandroidx/compose/material3/AppBarKt;->rememberTopAppBarState(FFFLandroidx/compose/runtime/Composer;II)Landroidx/compose/material3/TopAppBarState; +Landroidx/compose/material3/AppBarKt$rememberTopAppBarState$1$1; +HSPLandroidx/compose/material3/AppBarKt$rememberTopAppBarState$1$1;->(FFF)V +HSPLandroidx/compose/material3/AppBarKt$rememberTopAppBarState$1$1;->invoke()Landroidx/compose/material3/TopAppBarState; +HSPLandroidx/compose/material3/AppBarKt$rememberTopAppBarState$1$1;->invoke()Ljava/lang/Object; +Landroidx/compose/material3/ButtonColors; +HSPLandroidx/compose/material3/ButtonColors;->()V +HSPLandroidx/compose/material3/ButtonColors;->(JJJJ)V +HSPLandroidx/compose/material3/ButtonColors;->(JJJJLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/ButtonColors;->containerColor$material3_release(ZLandroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +HSPLandroidx/compose/material3/ButtonColors;->contentColor$material3_release(ZLandroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +Landroidx/compose/material3/ButtonDefaults; +HSPLandroidx/compose/material3/ButtonDefaults;->()V +HSPLandroidx/compose/material3/ButtonDefaults;->()V +HSPLandroidx/compose/material3/ButtonDefaults;->buttonColors-ro_MJ88(JJJJLandroidx/compose/runtime/Composer;II)Landroidx/compose/material3/ButtonColors; +HSPLandroidx/compose/material3/ButtonDefaults;->buttonElevation-R_JCAzs(FFFFFLandroidx/compose/runtime/Composer;II)Landroidx/compose/material3/ButtonElevation; +HSPLandroidx/compose/material3/ButtonDefaults;->getContentPadding()Landroidx/compose/foundation/layout/PaddingValues; +HSPLandroidx/compose/material3/ButtonDefaults;->getMinHeight-D9Ej5fM()F +HSPLandroidx/compose/material3/ButtonDefaults;->getMinWidth-D9Ej5fM()F +HSPLandroidx/compose/material3/ButtonDefaults;->getShape(Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/graphics/Shape; +Landroidx/compose/material3/ButtonElevation; +HSPLandroidx/compose/material3/ButtonElevation;->()V +HSPLandroidx/compose/material3/ButtonElevation;->(FFFFF)V +HSPLandroidx/compose/material3/ButtonElevation;->(FFFFFLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/ButtonElevation;->access$getPressedElevation$p(Landroidx/compose/material3/ButtonElevation;)F +HSPLandroidx/compose/material3/ButtonElevation;->animateElevation(ZLandroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +HSPLandroidx/compose/material3/ButtonElevation;->shadowElevation$material3_release(ZLandroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +HSPLandroidx/compose/material3/ButtonElevation;->tonalElevation$material3_release(ZLandroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +Landroidx/compose/material3/ButtonElevation$animateElevation$1$1; +HSPLandroidx/compose/material3/ButtonElevation$animateElevation$1$1;->(Landroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/runtime/snapshots/SnapshotStateList;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/material3/ButtonElevation$animateElevation$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/material3/ButtonElevation$animateElevation$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/ButtonElevation$animateElevation$1$1$1; +HSPLandroidx/compose/material3/ButtonElevation$animateElevation$1$1$1;->(Landroidx/compose/runtime/snapshots/SnapshotStateList;)V +HSPLandroidx/compose/material3/ButtonElevation$animateElevation$1$1$1;->emit(Landroidx/compose/foundation/interaction/Interaction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/material3/ButtonElevation$animateElevation$1$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/material3/ButtonElevation$animateElevation$2; +HSPLandroidx/compose/material3/ButtonElevation$animateElevation$2;->(Landroidx/compose/animation/core/Animatable;FLkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/material3/ButtonElevation$animateElevation$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/material3/ButtonElevation$animateElevation$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/ButtonElevation$animateElevation$3; +HSPLandroidx/compose/material3/ButtonElevation$animateElevation$3;->(Landroidx/compose/animation/core/Animatable;Landroidx/compose/material3/ButtonElevation;FLandroidx/compose/foundation/interaction/Interaction;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/material3/ButtonElevation$animateElevation$3;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/material3/ButtonElevation$animateElevation$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/ButtonKt; +HSPLandroidx/compose/material3/ButtonKt;->Button(Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;ZLandroidx/compose/ui/graphics/Shape;Landroidx/compose/material3/ButtonColors;Landroidx/compose/material3/ButtonElevation;Landroidx/compose/foundation/BorderStroke;Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +Landroidx/compose/material3/ButtonKt$Button$2; +HSPLandroidx/compose/material3/ButtonKt$Button$2;->()V +HSPLandroidx/compose/material3/ButtonKt$Button$2;->()V +HSPLandroidx/compose/material3/ButtonKt$Button$2;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/material3/ButtonKt$Button$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/ButtonKt$Button$3; +HSPLandroidx/compose/material3/ButtonKt$Button$3;->(JLandroidx/compose/foundation/layout/PaddingValues;Lkotlin/jvm/functions/Function3;I)V +HSPLandroidx/compose/material3/ButtonKt$Button$3;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/ButtonKt$Button$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/ButtonKt$Button$3$1; +HSPLandroidx/compose/material3/ButtonKt$Button$3$1;->(Landroidx/compose/foundation/layout/PaddingValues;Lkotlin/jvm/functions/Function3;I)V +HSPLandroidx/compose/material3/ButtonKt$Button$3$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/ButtonKt$Button$3$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/ButtonKt$Button$3$1$1; +HSPLandroidx/compose/material3/ButtonKt$Button$3$1$1;->(Landroidx/compose/foundation/layout/PaddingValues;Lkotlin/jvm/functions/Function3;I)V +HSPLandroidx/compose/material3/ButtonKt$Button$3$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/ButtonKt$Button$3$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/ButtonKt$Button$4; +HSPLandroidx/compose/material3/ButtonKt$Button$4;->(Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;ZLandroidx/compose/ui/graphics/Shape;Landroidx/compose/material3/ButtonColors;Landroidx/compose/material3/ButtonElevation;Landroidx/compose/foundation/BorderStroke;Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function3;II)V +HSPLandroidx/compose/material3/ButtonKt$Button$4;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/ButtonKt$Button$4;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/CheckDrawingCache; +HSPLandroidx/compose/material3/CheckDrawingCache;->(Landroidx/compose/ui/graphics/Path;Landroidx/compose/ui/graphics/PathMeasure;Landroidx/compose/ui/graphics/Path;)V +HSPLandroidx/compose/material3/CheckDrawingCache;->(Landroidx/compose/ui/graphics/Path;Landroidx/compose/ui/graphics/PathMeasure;Landroidx/compose/ui/graphics/Path;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/CheckDrawingCache;->getCheckPath()Landroidx/compose/ui/graphics/Path; +HSPLandroidx/compose/material3/CheckDrawingCache;->getPathMeasure()Landroidx/compose/ui/graphics/PathMeasure; +HSPLandroidx/compose/material3/CheckDrawingCache;->getPathToDraw()Landroidx/compose/ui/graphics/Path; +Landroidx/compose/material3/CheckboxColors; +HSPLandroidx/compose/material3/CheckboxColors;->()V +HSPLandroidx/compose/material3/CheckboxColors;->(JJJJJJJJJJJ)V +HSPLandroidx/compose/material3/CheckboxColors;->(JJJJJJJJJJJLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/CheckboxColors;->borderColor$material3_release(ZLandroidx/compose/ui/state/ToggleableState;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +HSPLandroidx/compose/material3/CheckboxColors;->boxColor$material3_release(ZLandroidx/compose/ui/state/ToggleableState;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +HSPLandroidx/compose/material3/CheckboxColors;->checkmarkColor$material3_release(Landroidx/compose/ui/state/ToggleableState;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +Landroidx/compose/material3/CheckboxColors$WhenMappings; +HSPLandroidx/compose/material3/CheckboxColors$WhenMappings;->()V +Landroidx/compose/material3/CheckboxDefaults; +HSPLandroidx/compose/material3/CheckboxDefaults;->()V +HSPLandroidx/compose/material3/CheckboxDefaults;->()V +HSPLandroidx/compose/material3/CheckboxDefaults;->colors-5tl4gsc(JJJJJJLandroidx/compose/runtime/Composer;II)Landroidx/compose/material3/CheckboxColors; +Landroidx/compose/material3/CheckboxKt; +HSPLandroidx/compose/material3/CheckboxKt;->()V +HSPLandroidx/compose/material3/CheckboxKt;->Checkbox(ZLkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;ZLandroidx/compose/material3/CheckboxColors;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/material3/CheckboxKt;->CheckboxImpl(ZLandroidx/compose/ui/state/ToggleableState;Landroidx/compose/ui/Modifier;Landroidx/compose/material3/CheckboxColors;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/CheckboxKt;->TriStateCheckbox(Landroidx/compose/ui/state/ToggleableState;Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;ZLandroidx/compose/material3/CheckboxColors;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/material3/CheckboxKt;->access$drawBox-1wkBAMs(Landroidx/compose/ui/graphics/drawscope/DrawScope;JJFF)V +HSPLandroidx/compose/material3/CheckboxKt;->access$drawCheck-3IgeMak(Landroidx/compose/ui/graphics/drawscope/DrawScope;JFFFLandroidx/compose/material3/CheckDrawingCache;)V +HSPLandroidx/compose/material3/CheckboxKt;->access$getRadiusSize$p()F +HSPLandroidx/compose/material3/CheckboxKt;->access$getStrokeWidth$p()F +HSPLandroidx/compose/material3/CheckboxKt;->drawBox-1wkBAMs(Landroidx/compose/ui/graphics/drawscope/DrawScope;JJFF)V +HSPLandroidx/compose/material3/CheckboxKt;->drawCheck-3IgeMak(Landroidx/compose/ui/graphics/drawscope/DrawScope;JFFFLandroidx/compose/material3/CheckDrawingCache;)V +Landroidx/compose/material3/CheckboxKt$Checkbox$3; +HSPLandroidx/compose/material3/CheckboxKt$Checkbox$3;->(ZLkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;ZLandroidx/compose/material3/CheckboxColors;Landroidx/compose/foundation/interaction/MutableInteractionSource;II)V +Landroidx/compose/material3/CheckboxKt$CheckboxImpl$1$1; +HSPLandroidx/compose/material3/CheckboxKt$CheckboxImpl$1$1;->(Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/material3/CheckDrawingCache;)V +HSPLandroidx/compose/material3/CheckboxKt$CheckboxImpl$1$1;->invoke(Landroidx/compose/ui/graphics/drawscope/DrawScope;)V +HSPLandroidx/compose/material3/CheckboxKt$CheckboxImpl$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/CheckboxKt$CheckboxImpl$2; +HSPLandroidx/compose/material3/CheckboxKt$CheckboxImpl$2;->(ZLandroidx/compose/ui/state/ToggleableState;Landroidx/compose/ui/Modifier;Landroidx/compose/material3/CheckboxColors;I)V +Landroidx/compose/material3/CheckboxKt$CheckboxImpl$checkCenterGravitationShiftFraction$1; +HSPLandroidx/compose/material3/CheckboxKt$CheckboxImpl$checkCenterGravitationShiftFraction$1;->()V +HSPLandroidx/compose/material3/CheckboxKt$CheckboxImpl$checkCenterGravitationShiftFraction$1;->()V +HSPLandroidx/compose/material3/CheckboxKt$CheckboxImpl$checkCenterGravitationShiftFraction$1;->invoke(Landroidx/compose/animation/core/Transition$Segment;Landroidx/compose/runtime/Composer;I)Landroidx/compose/animation/core/FiniteAnimationSpec; +HSPLandroidx/compose/material3/CheckboxKt$CheckboxImpl$checkCenterGravitationShiftFraction$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/CheckboxKt$CheckboxImpl$checkDrawFraction$1; +HSPLandroidx/compose/material3/CheckboxKt$CheckboxImpl$checkDrawFraction$1;->()V +HSPLandroidx/compose/material3/CheckboxKt$CheckboxImpl$checkDrawFraction$1;->()V +HSPLandroidx/compose/material3/CheckboxKt$CheckboxImpl$checkDrawFraction$1;->invoke(Landroidx/compose/animation/core/Transition$Segment;Landroidx/compose/runtime/Composer;I)Landroidx/compose/animation/core/FiniteAnimationSpec; +HSPLandroidx/compose/material3/CheckboxKt$CheckboxImpl$checkDrawFraction$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/CheckboxKt$WhenMappings; +HSPLandroidx/compose/material3/CheckboxKt$WhenMappings;->()V +Landroidx/compose/material3/ColorResourceHelper; +HSPLandroidx/compose/material3/ColorResourceHelper;->()V +HSPLandroidx/compose/material3/ColorResourceHelper;->()V +HSPLandroidx/compose/material3/ColorResourceHelper;->getColor-WaAFU9c(Landroid/content/Context;I)J +Landroidx/compose/material3/ColorScheme; +HSPLandroidx/compose/material3/ColorScheme;->()V +HSPLandroidx/compose/material3/ColorScheme;->(JJJJJJJJJJJJJJJJJJJJJJJJJJJJJ)V +HSPLandroidx/compose/material3/ColorScheme;->(JJJJJJJJJJJJJJJJJJJJJJJJJJJJJLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/ColorScheme;->copy-G1PFc-w$default(Landroidx/compose/material3/ColorScheme;JJJJJJJJJJJJJJJJJJJJJJJJJJJJJILjava/lang/Object;)Landroidx/compose/material3/ColorScheme; +HSPLandroidx/compose/material3/ColorScheme;->copy-G1PFc-w(JJJJJJJJJJJJJJJJJJJJJJJJJJJJJ)Landroidx/compose/material3/ColorScheme; +HSPLandroidx/compose/material3/ColorScheme;->getBackground-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getError-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getErrorContainer-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getInverseOnSurface-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getInversePrimary-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getInverseSurface-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getOnBackground-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getOnError-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getOnErrorContainer-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getOnPrimary-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getOnPrimaryContainer-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getOnSecondary-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getOnSecondaryContainer-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getOnSurface-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getOnSurfaceVariant-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getOnTertiary-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getOnTertiaryContainer-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getOutline-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getOutlineVariant-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getPrimary-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getPrimaryContainer-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getScrim-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getSecondary-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getSecondaryContainer-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getSurface-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getSurfaceTint-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getSurfaceVariant-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getTertiary-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getTertiaryContainer-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->setBackground-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setError-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setErrorContainer-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setInverseOnSurface-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setInversePrimary-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setInverseSurface-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setOnBackground-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setOnError-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setOnErrorContainer-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setOnPrimary-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setOnPrimaryContainer-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setOnSecondary-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setOnSecondaryContainer-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setOnSurface-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setOnSurfaceVariant-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setOnTertiary-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setOnTertiaryContainer-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setOutline-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setOutlineVariant-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setPrimary-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setPrimaryContainer-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setScrim-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setSecondary-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setSecondaryContainer-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setSurface-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setSurfaceTint-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setSurfaceVariant-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setTertiary-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setTertiaryContainer-8_81llA$material3_release(J)V +Landroidx/compose/material3/ColorSchemeKt; +HSPLandroidx/compose/material3/ColorSchemeKt;->()V +HSPLandroidx/compose/material3/ColorSchemeKt;->contentColorFor-4WTKRHQ(Landroidx/compose/material3/ColorScheme;J)J +HSPLandroidx/compose/material3/ColorSchemeKt;->contentColorFor-ek8zF_U(JLandroidx/compose/runtime/Composer;I)J +HSPLandroidx/compose/material3/ColorSchemeKt;->fromToken(Landroidx/compose/material3/ColorScheme;Landroidx/compose/material3/tokens/ColorSchemeKeyTokens;)J +HSPLandroidx/compose/material3/ColorSchemeKt;->getLocalColorScheme()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/material3/ColorSchemeKt;->lightColorScheme-G1PFc-w$default(JJJJJJJJJJJJJJJJJJJJJJJJJJJJJILjava/lang/Object;)Landroidx/compose/material3/ColorScheme; +HSPLandroidx/compose/material3/ColorSchemeKt;->lightColorScheme-G1PFc-w(JJJJJJJJJJJJJJJJJJJJJJJJJJJJJ)Landroidx/compose/material3/ColorScheme; +HSPLandroidx/compose/material3/ColorSchemeKt;->surfaceColorAtElevation-3ABfNKs(Landroidx/compose/material3/ColorScheme;F)J +HSPLandroidx/compose/material3/ColorSchemeKt;->toColor(Landroidx/compose/material3/tokens/ColorSchemeKeyTokens;Landroidx/compose/runtime/Composer;I)J +HSPLandroidx/compose/material3/ColorSchemeKt;->updateColorSchemeFrom(Landroidx/compose/material3/ColorScheme;Landroidx/compose/material3/ColorScheme;)V +Landroidx/compose/material3/ColorSchemeKt$LocalColorScheme$1; +HSPLandroidx/compose/material3/ColorSchemeKt$LocalColorScheme$1;->()V +HSPLandroidx/compose/material3/ColorSchemeKt$LocalColorScheme$1;->()V +Landroidx/compose/material3/ColorSchemeKt$WhenMappings; +HSPLandroidx/compose/material3/ColorSchemeKt$WhenMappings;->()V +Landroidx/compose/material3/ContentColorKt; +HSPLandroidx/compose/material3/ContentColorKt;->()V +HSPLandroidx/compose/material3/ContentColorKt;->getLocalContentColor()Landroidx/compose/runtime/ProvidableCompositionLocal; +Landroidx/compose/material3/ContentColorKt$LocalContentColor$1; +HSPLandroidx/compose/material3/ContentColorKt$LocalContentColor$1;->()V +HSPLandroidx/compose/material3/ContentColorKt$LocalContentColor$1;->()V +Landroidx/compose/material3/DefaultPlatformTextStyle_androidKt; +HSPLandroidx/compose/material3/DefaultPlatformTextStyle_androidKt;->()V +HSPLandroidx/compose/material3/DefaultPlatformTextStyle_androidKt;->defaultPlatformTextStyle()Landroidx/compose/ui/text/PlatformTextStyle; +Landroidx/compose/material3/DynamicTonalPaletteKt; +HSPLandroidx/compose/material3/DynamicTonalPaletteKt;->dynamicLightColorScheme(Landroid/content/Context;)Landroidx/compose/material3/ColorScheme; +HSPLandroidx/compose/material3/DynamicTonalPaletteKt;->dynamicTonalPalette(Landroid/content/Context;)Landroidx/compose/material3/TonalPalette; +Landroidx/compose/material3/ElevationDefaults; +HSPLandroidx/compose/material3/ElevationDefaults;->()V +HSPLandroidx/compose/material3/ElevationDefaults;->()V +HSPLandroidx/compose/material3/ElevationDefaults;->outgoingAnimationSpecForInteraction(Landroidx/compose/foundation/interaction/Interaction;)Landroidx/compose/animation/core/AnimationSpec; +Landroidx/compose/material3/ElevationKt; +HSPLandroidx/compose/material3/ElevationKt;->()V +HSPLandroidx/compose/material3/ElevationKt;->access$getDefaultOutgoingSpec$p()Landroidx/compose/animation/core/TweenSpec; +HSPLandroidx/compose/material3/ElevationKt;->animateElevation-rAjV9yQ(Landroidx/compose/animation/core/Animatable;FLandroidx/compose/foundation/interaction/Interaction;Landroidx/compose/foundation/interaction/Interaction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/material3/FabPlacement; +Landroidx/compose/material3/FabPosition; +HSPLandroidx/compose/material3/FabPosition;->()V +HSPLandroidx/compose/material3/FabPosition;->(I)V +HSPLandroidx/compose/material3/FabPosition;->access$getEnd$cp()I +HSPLandroidx/compose/material3/FabPosition;->box-impl(I)Landroidx/compose/material3/FabPosition; +HSPLandroidx/compose/material3/FabPosition;->constructor-impl(I)I +Landroidx/compose/material3/FabPosition$Companion; +HSPLandroidx/compose/material3/FabPosition$Companion;->()V +HSPLandroidx/compose/material3/FabPosition$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/FabPosition$Companion;->getEnd-ERTFSPs()I +Landroidx/compose/material3/IconButtonColors; +HSPLandroidx/compose/material3/IconButtonColors;->()V +HSPLandroidx/compose/material3/IconButtonColors;->(JJJJ)V +HSPLandroidx/compose/material3/IconButtonColors;->(JJJJLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/IconButtonColors;->containerColor$material3_release(ZLandroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +HSPLandroidx/compose/material3/IconButtonColors;->contentColor$material3_release(ZLandroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +Landroidx/compose/material3/IconButtonDefaults; +HSPLandroidx/compose/material3/IconButtonDefaults;->()V +HSPLandroidx/compose/material3/IconButtonDefaults;->()V +HSPLandroidx/compose/material3/IconButtonDefaults;->iconButtonColors-ro_MJ88(JJJJLandroidx/compose/runtime/Composer;II)Landroidx/compose/material3/IconButtonColors; +Landroidx/compose/material3/IconButtonKt; +HSPLandroidx/compose/material3/IconButtonKt;->IconButton(Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;ZLandroidx/compose/material3/IconButtonColors;Landroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +Landroidx/compose/material3/IconButtonKt$IconButton$3; +HSPLandroidx/compose/material3/IconButtonKt$IconButton$3;->(Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;ZLandroidx/compose/material3/IconButtonColors;Landroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function2;II)V +Landroidx/compose/material3/IconKt; +HSPLandroidx/compose/material3/IconKt;->()V +HSPLandroidx/compose/material3/IconKt;->Icon-ww6aTOc(Landroidx/compose/ui/graphics/painter/Painter;Ljava/lang/String;Landroidx/compose/ui/Modifier;JLandroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/material3/IconKt;->Icon-ww6aTOc(Landroidx/compose/ui/graphics/vector/ImageVector;Ljava/lang/String;Landroidx/compose/ui/Modifier;JLandroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/material3/IconKt;->defaultSizeFor(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/painter/Painter;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/material3/IconKt;->isInfinite-uvyYCjk(J)Z +Landroidx/compose/material3/IconKt$Icon$1; +HSPLandroidx/compose/material3/IconKt$Icon$1;->(Landroidx/compose/ui/graphics/vector/ImageVector;Ljava/lang/String;Landroidx/compose/ui/Modifier;JII)V +HSPLandroidx/compose/material3/IconKt$Icon$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/IconKt$Icon$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/IconKt$Icon$3; +HSPLandroidx/compose/material3/IconKt$Icon$3;->(Landroidx/compose/ui/graphics/painter/Painter;Ljava/lang/String;Landroidx/compose/ui/Modifier;JII)V +Landroidx/compose/material3/InteractiveComponentSizeKt; +HSPLandroidx/compose/material3/InteractiveComponentSizeKt;->()V +HSPLandroidx/compose/material3/InteractiveComponentSizeKt;->access$getMinimumInteractiveComponentSize$p()J +HSPLandroidx/compose/material3/InteractiveComponentSizeKt;->getLocalMinimumInteractiveComponentEnforcement()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/material3/InteractiveComponentSizeKt;->minimumInteractiveComponentSize(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier; +Landroidx/compose/material3/InteractiveComponentSizeKt$LocalMinimumInteractiveComponentEnforcement$1; +HSPLandroidx/compose/material3/InteractiveComponentSizeKt$LocalMinimumInteractiveComponentEnforcement$1;->()V +HSPLandroidx/compose/material3/InteractiveComponentSizeKt$LocalMinimumInteractiveComponentEnforcement$1;->()V +HSPLandroidx/compose/material3/InteractiveComponentSizeKt$LocalMinimumInteractiveComponentEnforcement$1;->invoke()Ljava/lang/Boolean; +HSPLandroidx/compose/material3/InteractiveComponentSizeKt$LocalMinimumInteractiveComponentEnforcement$1;->invoke()Ljava/lang/Object; +Landroidx/compose/material3/InteractiveComponentSizeKt$minimumInteractiveComponentSize$2; +HSPLandroidx/compose/material3/InteractiveComponentSizeKt$minimumInteractiveComponentSize$2;->()V +HSPLandroidx/compose/material3/InteractiveComponentSizeKt$minimumInteractiveComponentSize$2;->()V +HSPLandroidx/compose/material3/InteractiveComponentSizeKt$minimumInteractiveComponentSize$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/material3/InteractiveComponentSizeKt$minimumInteractiveComponentSize$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/InternalMutatorMutex; +HSPLandroidx/compose/material3/InternalMutatorMutex;->()V +Landroidx/compose/material3/MappedInteractionSource; +HSPLandroidx/compose/material3/MappedInteractionSource;->(Landroidx/compose/foundation/interaction/InteractionSource;J)V +HSPLandroidx/compose/material3/MappedInteractionSource;->(Landroidx/compose/foundation/interaction/InteractionSource;JLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/MappedInteractionSource;->getInteractions()Lkotlinx/coroutines/flow/Flow; +Landroidx/compose/material3/MappedInteractionSource$special$$inlined$map$1; +HSPLandroidx/compose/material3/MappedInteractionSource$special$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Landroidx/compose/material3/MappedInteractionSource;)V +HSPLandroidx/compose/material3/MappedInteractionSource$special$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/material3/MappedInteractionSource$special$$inlined$map$1$2; +HSPLandroidx/compose/material3/MappedInteractionSource$special$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Landroidx/compose/material3/MappedInteractionSource;)V +Landroidx/compose/material3/MaterialRippleTheme; +HSPLandroidx/compose/material3/MaterialRippleTheme;->()V +HSPLandroidx/compose/material3/MaterialRippleTheme;->()V +Landroidx/compose/material3/MaterialTheme; +HSPLandroidx/compose/material3/MaterialTheme;->()V +HSPLandroidx/compose/material3/MaterialTheme;->()V +HSPLandroidx/compose/material3/MaterialTheme;->getColorScheme(Landroidx/compose/runtime/Composer;I)Landroidx/compose/material3/ColorScheme; +HSPLandroidx/compose/material3/MaterialTheme;->getShapes(Landroidx/compose/runtime/Composer;I)Landroidx/compose/material3/Shapes; +HSPLandroidx/compose/material3/MaterialTheme;->getTypography(Landroidx/compose/runtime/Composer;I)Landroidx/compose/material3/Typography; +Landroidx/compose/material3/MaterialThemeKt; +HSPLandroidx/compose/material3/MaterialThemeKt;->()V +HSPLandroidx/compose/material3/MaterialThemeKt;->MaterialTheme(Landroidx/compose/material3/ColorScheme;Landroidx/compose/material3/Shapes;Landroidx/compose/material3/Typography;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/material3/MaterialThemeKt;->rememberTextSelectionColors(Landroidx/compose/material3/ColorScheme;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/text/selection/TextSelectionColors; +Landroidx/compose/material3/MaterialThemeKt$MaterialTheme$1; +HSPLandroidx/compose/material3/MaterialThemeKt$MaterialTheme$1;->(Landroidx/compose/material3/Typography;Lkotlin/jvm/functions/Function2;I)V +HSPLandroidx/compose/material3/MaterialThemeKt$MaterialTheme$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/MaterialThemeKt$MaterialTheme$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/MaterialThemeKt$MaterialTheme$2; +HSPLandroidx/compose/material3/MaterialThemeKt$MaterialTheme$2;->(Landroidx/compose/material3/ColorScheme;Landroidx/compose/material3/Shapes;Landroidx/compose/material3/Typography;Lkotlin/jvm/functions/Function2;II)V +Landroidx/compose/material3/MinimumInteractiveComponentSizeModifier; +HSPLandroidx/compose/material3/MinimumInteractiveComponentSizeModifier;->(J)V +HSPLandroidx/compose/material3/MinimumInteractiveComponentSizeModifier;->(JLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/MinimumInteractiveComponentSizeModifier;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/material3/MinimumInteractiveComponentSizeModifier;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/material3/MinimumInteractiveComponentSizeModifier$measure$1; +HSPLandroidx/compose/material3/MinimumInteractiveComponentSizeModifier$measure$1;->(ILandroidx/compose/ui/layout/Placeable;I)V +HSPLandroidx/compose/material3/MinimumInteractiveComponentSizeModifier$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/material3/MinimumInteractiveComponentSizeModifier$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/ModalBottomSheet_androidKt; +HSPLandroidx/compose/material3/ModalBottomSheet_androidKt;->rememberModalBottomSheetState(ZLkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)Landroidx/compose/material3/SheetState; +Landroidx/compose/material3/ModalBottomSheet_androidKt$rememberModalBottomSheetState$1; +HSPLandroidx/compose/material3/ModalBottomSheet_androidKt$rememberModalBottomSheetState$1;->()V +HSPLandroidx/compose/material3/ModalBottomSheet_androidKt$rememberModalBottomSheetState$1;->()V +Landroidx/compose/material3/NavigationBarItemColors; +HSPLandroidx/compose/material3/NavigationBarItemColors;->()V +HSPLandroidx/compose/material3/NavigationBarItemColors;->(JJJJJJJ)V +HSPLandroidx/compose/material3/NavigationBarItemColors;->(JJJJJJJLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/NavigationBarItemColors;->getIndicatorColor-0d7_KjU$material3_release()J +HSPLandroidx/compose/material3/NavigationBarItemColors;->iconColor$material3_release(ZZLandroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +HSPLandroidx/compose/material3/NavigationBarItemColors;->textColor$material3_release(ZZLandroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +Landroidx/compose/material3/NavigationBarItemDefaults; +HSPLandroidx/compose/material3/NavigationBarItemDefaults;->()V +HSPLandroidx/compose/material3/NavigationBarItemDefaults;->()V +HSPLandroidx/compose/material3/NavigationBarItemDefaults;->colors-69fazGs(JJJJJJJLandroidx/compose/runtime/Composer;II)Landroidx/compose/material3/NavigationBarItemColors; +Landroidx/compose/material3/NavigationBarKt; +HSPLandroidx/compose/material3/NavigationBarKt;->()V +HSPLandroidx/compose/material3/NavigationBarKt;->NavigationBarItem$lambda$3(Landroidx/compose/runtime/MutableState;)I +HSPLandroidx/compose/material3/NavigationBarKt;->NavigationBarItem$lambda$4(Landroidx/compose/runtime/MutableState;I)V +HSPLandroidx/compose/material3/NavigationBarKt;->NavigationBarItem$lambda$9$lambda$6(Landroidx/compose/runtime/State;)F +HSPLandroidx/compose/material3/NavigationBarKt;->NavigationBarItem(Landroidx/compose/foundation/layout/RowScope;ZLkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function2;Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function2;ZLandroidx/compose/material3/NavigationBarItemColors;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/material3/NavigationBarKt;->NavigationBarItemBaselineLayout(Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;ZFLandroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/NavigationBarKt;->access$NavigationBarItem$lambda$4(Landroidx/compose/runtime/MutableState;I)V +HSPLandroidx/compose/material3/NavigationBarKt;->access$NavigationBarItem$lambda$9$lambda$6(Landroidx/compose/runtime/State;)F +HSPLandroidx/compose/material3/NavigationBarKt;->access$getIndicatorHorizontalPadding$p()F +HSPLandroidx/compose/material3/NavigationBarKt;->access$getIndicatorVerticalPadding$p()F +HSPLandroidx/compose/material3/NavigationBarKt;->access$placeLabelAndIcon-zUg2_y0(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/layout/Placeable;JZF)Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/material3/NavigationBarKt;->placeLabelAndIcon-zUg2_y0(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/layout/Placeable;JZF)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/material3/NavigationBarKt$NavigationBarItem$2$1; +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$2$1;->(Landroidx/compose/runtime/MutableState;)V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$2$1;->invoke-ozmzZPI(J)V +Landroidx/compose/material3/NavigationBarKt$NavigationBarItem$3$indicator$1; +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$3$indicator$1;->(Landroidx/compose/material3/NavigationBarItemColors;Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$3$indicator$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$3$indicator$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/NavigationBarKt$NavigationBarItem$3$indicatorRipple$1; +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$3$indicatorRipple$1;->(Landroidx/compose/material3/MappedInteractionSource;)V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$3$indicatorRipple$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$3$indicatorRipple$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/NavigationBarKt$NavigationBarItem$4; +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$4;->(Landroidx/compose/foundation/layout/RowScope;ZLkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function2;Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function2;ZLandroidx/compose/material3/NavigationBarItemColors;Landroidx/compose/foundation/interaction/MutableInteractionSource;II)V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$4;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$4;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledIcon$1; +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledIcon$1;->(Landroidx/compose/material3/NavigationBarItemColors;ZZILkotlin/jvm/functions/Function2;ZLkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledIcon$1;->invoke$lambda$0(Landroidx/compose/runtime/State;)J +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledIcon$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledIcon$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledIcon$1$1; +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledIcon$1$1;->()V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledIcon$1$1;->()V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledIcon$1$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledIcon$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledLabel$1$1; +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledLabel$1$1;->(Landroidx/compose/material3/NavigationBarItemColors;ZZILkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledLabel$1$1;->invoke$lambda$0(Landroidx/compose/runtime/State;)J +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledLabel$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledLabel$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledLabel$1$1$1; +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledLabel$1$1$1;->(Landroidx/compose/ui/text/TextStyle;Lkotlin/jvm/functions/Function2;I)V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledLabel$1$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledLabel$1$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/NavigationBarKt$NavigationBarItemBaselineLayout$2; +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItemBaselineLayout$2;->(FLkotlin/jvm/functions/Function2;Z)V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItemBaselineLayout$2;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/material3/NavigationBarKt$placeLabelAndIcon$1; +HSPLandroidx/compose/material3/NavigationBarKt$placeLabelAndIcon$1;->(Landroidx/compose/ui/layout/Placeable;ZFLandroidx/compose/ui/layout/Placeable;IIILandroidx/compose/ui/layout/Placeable;IILandroidx/compose/ui/layout/Placeable;IIILandroidx/compose/ui/layout/MeasureScope;)V +HSPLandroidx/compose/material3/NavigationBarKt$placeLabelAndIcon$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/material3/NavigationBarKt$placeLabelAndIcon$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/PinnedScrollBehavior; +HSPLandroidx/compose/material3/PinnedScrollBehavior;->(Landroidx/compose/material3/TopAppBarState;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/material3/PinnedScrollBehavior;->getNestedScrollConnection()Landroidx/compose/ui/input/nestedscroll/NestedScrollConnection; +HSPLandroidx/compose/material3/PinnedScrollBehavior;->getState()Landroidx/compose/material3/TopAppBarState; +HSPLandroidx/compose/material3/PinnedScrollBehavior;->isPinned()Z +Landroidx/compose/material3/PinnedScrollBehavior$nestedScrollConnection$1; +HSPLandroidx/compose/material3/PinnedScrollBehavior$nestedScrollConnection$1;->(Landroidx/compose/material3/PinnedScrollBehavior;)V +Landroidx/compose/material3/ProgressIndicatorDefaults; +HSPLandroidx/compose/material3/ProgressIndicatorDefaults;->()V +HSPLandroidx/compose/material3/ProgressIndicatorDefaults;->()V +HSPLandroidx/compose/material3/ProgressIndicatorDefaults;->getCircularColor(Landroidx/compose/runtime/Composer;I)J +HSPLandroidx/compose/material3/ProgressIndicatorDefaults;->getCircularIndeterminateStrokeCap-KaPHkGw()I +HSPLandroidx/compose/material3/ProgressIndicatorDefaults;->getCircularStrokeWidth-D9Ej5fM()F +HSPLandroidx/compose/material3/ProgressIndicatorDefaults;->getCircularTrackColor(Landroidx/compose/runtime/Composer;I)J +Landroidx/compose/material3/ProgressIndicatorKt; +HSPLandroidx/compose/material3/ProgressIndicatorKt;->()V +HSPLandroidx/compose/material3/ProgressIndicatorKt;->CircularProgressIndicator-LxG7B9w(Landroidx/compose/ui/Modifier;JFJILandroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/material3/ProgressIndicatorKt;->access$drawCircularIndicatorTrack-bw27NRU(Landroidx/compose/ui/graphics/drawscope/DrawScope;JLandroidx/compose/ui/graphics/drawscope/Stroke;)V +HSPLandroidx/compose/material3/ProgressIndicatorKt;->access$drawIndeterminateCircularIndicator-hrjfTZI(Landroidx/compose/ui/graphics/drawscope/DrawScope;FFFJLandroidx/compose/ui/graphics/drawscope/Stroke;)V +HSPLandroidx/compose/material3/ProgressIndicatorKt;->access$getCircularEasing$p()Landroidx/compose/animation/core/CubicBezierEasing; +HSPLandroidx/compose/material3/ProgressIndicatorKt;->drawCircularIndicator-42QJj7c(Landroidx/compose/ui/graphics/drawscope/DrawScope;FFJLandroidx/compose/ui/graphics/drawscope/Stroke;)V +HSPLandroidx/compose/material3/ProgressIndicatorKt;->drawCircularIndicatorTrack-bw27NRU(Landroidx/compose/ui/graphics/drawscope/DrawScope;JLandroidx/compose/ui/graphics/drawscope/Stroke;)V +HSPLandroidx/compose/material3/ProgressIndicatorKt;->drawIndeterminateCircularIndicator-hrjfTZI(Landroidx/compose/ui/graphics/drawscope/DrawScope;FFFJLandroidx/compose/ui/graphics/drawscope/Stroke;)V +Landroidx/compose/material3/ProgressIndicatorKt$CircularProgressIndicator$3; +HSPLandroidx/compose/material3/ProgressIndicatorKt$CircularProgressIndicator$3;->(JLandroidx/compose/ui/graphics/drawscope/Stroke;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;FJ)V +HSPLandroidx/compose/material3/ProgressIndicatorKt$CircularProgressIndicator$3;->invoke(Landroidx/compose/ui/graphics/drawscope/DrawScope;)V +HSPLandroidx/compose/material3/ProgressIndicatorKt$CircularProgressIndicator$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/ProgressIndicatorKt$CircularProgressIndicator$4; +HSPLandroidx/compose/material3/ProgressIndicatorKt$CircularProgressIndicator$4;->(Landroidx/compose/ui/Modifier;JFJIII)V +Landroidx/compose/material3/ProgressIndicatorKt$CircularProgressIndicator$endAngle$1; +HSPLandroidx/compose/material3/ProgressIndicatorKt$CircularProgressIndicator$endAngle$1;->()V +HSPLandroidx/compose/material3/ProgressIndicatorKt$CircularProgressIndicator$endAngle$1;->()V +HSPLandroidx/compose/material3/ProgressIndicatorKt$CircularProgressIndicator$endAngle$1;->invoke(Landroidx/compose/animation/core/KeyframesSpec$KeyframesSpecConfig;)V +HSPLandroidx/compose/material3/ProgressIndicatorKt$CircularProgressIndicator$endAngle$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/ProgressIndicatorKt$CircularProgressIndicator$startAngle$1; +HSPLandroidx/compose/material3/ProgressIndicatorKt$CircularProgressIndicator$startAngle$1;->()V +HSPLandroidx/compose/material3/ProgressIndicatorKt$CircularProgressIndicator$startAngle$1;->()V +HSPLandroidx/compose/material3/ProgressIndicatorKt$CircularProgressIndicator$startAngle$1;->invoke(Landroidx/compose/animation/core/KeyframesSpec$KeyframesSpecConfig;)V +HSPLandroidx/compose/material3/ProgressIndicatorKt$CircularProgressIndicator$startAngle$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/ScaffoldKt; +HSPLandroidx/compose/material3/ScaffoldKt;->()V +HSPLandroidx/compose/material3/ScaffoldKt;->Scaffold-TvnljyQ(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;IJJLandroidx/compose/foundation/layout/WindowInsets;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/material3/ScaffoldKt;->ScaffoldLayout-FMILGgc(ILkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Landroidx/compose/foundation/layout/WindowInsets;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/ScaffoldKt;->access$ScaffoldLayout-FMILGgc(ILkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Landroidx/compose/foundation/layout/WindowInsets;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/ScaffoldKt;->getLocalFabPlacement()Landroidx/compose/runtime/ProvidableCompositionLocal; +Landroidx/compose/material3/ScaffoldKt$LocalFabPlacement$1; +HSPLandroidx/compose/material3/ScaffoldKt$LocalFabPlacement$1;->()V +HSPLandroidx/compose/material3/ScaffoldKt$LocalFabPlacement$1;->()V +Landroidx/compose/material3/ScaffoldKt$Scaffold$1; +HSPLandroidx/compose/material3/ScaffoldKt$Scaffold$1;->(ILkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Landroidx/compose/foundation/layout/WindowInsets;Lkotlin/jvm/functions/Function2;I)V +HSPLandroidx/compose/material3/ScaffoldKt$Scaffold$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/ScaffoldKt$Scaffold$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/ScaffoldKt$Scaffold$2; +HSPLandroidx/compose/material3/ScaffoldKt$Scaffold$2;->(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;IJJLandroidx/compose/foundation/layout/WindowInsets;Lkotlin/jvm/functions/Function3;II)V +Landroidx/compose/material3/ScaffoldKt$ScaffoldLayout$1$1; +HSPLandroidx/compose/material3/ScaffoldKt$ScaffoldLayout$1$1;->(Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;ILandroidx/compose/foundation/layout/WindowInsets;Lkotlin/jvm/functions/Function2;ILkotlin/jvm/functions/Function3;)V +HSPLandroidx/compose/material3/ScaffoldKt$ScaffoldLayout$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/material3/ScaffoldKt$ScaffoldLayout$1$1;->invoke-0kLqBqw(Landroidx/compose/ui/layout/SubcomposeMeasureScope;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/material3/ScaffoldKt$ScaffoldLayout$1$1$1; +HSPLandroidx/compose/material3/ScaffoldKt$ScaffoldLayout$1$1$1;->(Landroidx/compose/ui/layout/SubcomposeMeasureScope;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;IILandroidx/compose/foundation/layout/WindowInsets;JLkotlin/jvm/functions/Function2;ILkotlin/jvm/functions/Function3;I)V +HSPLandroidx/compose/material3/ScaffoldKt$ScaffoldLayout$1$1$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/material3/ScaffoldKt$ScaffoldLayout$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/ScaffoldKt$ScaffoldLayout$1$1$1$bodyContentPlaceables$1; +HSPLandroidx/compose/material3/ScaffoldKt$ScaffoldLayout$1$1$1$bodyContentPlaceables$1;->(Landroidx/compose/foundation/layout/WindowInsets;Landroidx/compose/ui/layout/SubcomposeMeasureScope;Ljava/util/List;ILjava/util/List;Ljava/lang/Integer;Lkotlin/jvm/functions/Function3;I)V +HSPLandroidx/compose/material3/ScaffoldKt$ScaffoldLayout$1$1$1$bodyContentPlaceables$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/ScaffoldKt$ScaffoldLayout$1$1$1$bodyContentPlaceables$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/ScaffoldKt$ScaffoldLayout$1$1$1$bottomBarPlaceables$1; +HSPLandroidx/compose/material3/ScaffoldKt$ScaffoldLayout$1$1$1$bottomBarPlaceables$1;->(Landroidx/compose/material3/FabPlacement;Lkotlin/jvm/functions/Function2;I)V +HSPLandroidx/compose/material3/ScaffoldKt$ScaffoldLayout$1$1$1$bottomBarPlaceables$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/ScaffoldKt$ScaffoldLayout$1$1$1$bottomBarPlaceables$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/ScaffoldLayoutContent; +HSPLandroidx/compose/material3/ScaffoldLayoutContent;->$values()[Landroidx/compose/material3/ScaffoldLayoutContent; +HSPLandroidx/compose/material3/ScaffoldLayoutContent;->()V +HSPLandroidx/compose/material3/ScaffoldLayoutContent;->(Ljava/lang/String;I)V +Landroidx/compose/material3/ShapeDefaults; +HSPLandroidx/compose/material3/ShapeDefaults;->()V +HSPLandroidx/compose/material3/ShapeDefaults;->()V +HSPLandroidx/compose/material3/ShapeDefaults;->getExtraLarge()Landroidx/compose/foundation/shape/CornerBasedShape; +HSPLandroidx/compose/material3/ShapeDefaults;->getExtraSmall()Landroidx/compose/foundation/shape/CornerBasedShape; +HSPLandroidx/compose/material3/ShapeDefaults;->getLarge()Landroidx/compose/foundation/shape/CornerBasedShape; +HSPLandroidx/compose/material3/ShapeDefaults;->getMedium()Landroidx/compose/foundation/shape/CornerBasedShape; +HSPLandroidx/compose/material3/ShapeDefaults;->getSmall()Landroidx/compose/foundation/shape/CornerBasedShape; +Landroidx/compose/material3/Shapes; +HSPLandroidx/compose/material3/Shapes;->()V +HSPLandroidx/compose/material3/Shapes;->(Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerBasedShape;)V +HSPLandroidx/compose/material3/Shapes;->(Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerBasedShape;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/Shapes;->getLarge()Landroidx/compose/foundation/shape/CornerBasedShape; +HSPLandroidx/compose/material3/Shapes;->getMedium()Landroidx/compose/foundation/shape/CornerBasedShape; +HSPLandroidx/compose/material3/Shapes;->getSmall()Landroidx/compose/foundation/shape/CornerBasedShape; +Landroidx/compose/material3/ShapesKt; +HSPLandroidx/compose/material3/ShapesKt;->()V +HSPLandroidx/compose/material3/ShapesKt;->fromToken(Landroidx/compose/material3/Shapes;Landroidx/compose/material3/tokens/ShapeKeyTokens;)Landroidx/compose/ui/graphics/Shape; +HSPLandroidx/compose/material3/ShapesKt;->getLocalShapes()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/material3/ShapesKt;->toShape(Landroidx/compose/material3/tokens/ShapeKeyTokens;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/graphics/Shape; +Landroidx/compose/material3/ShapesKt$LocalShapes$1; +HSPLandroidx/compose/material3/ShapesKt$LocalShapes$1;->()V +HSPLandroidx/compose/material3/ShapesKt$LocalShapes$1;->()V +HSPLandroidx/compose/material3/ShapesKt$LocalShapes$1;->invoke()Landroidx/compose/material3/Shapes; +HSPLandroidx/compose/material3/ShapesKt$LocalShapes$1;->invoke()Ljava/lang/Object; +Landroidx/compose/material3/ShapesKt$WhenMappings; +HSPLandroidx/compose/material3/ShapesKt$WhenMappings;->()V +Landroidx/compose/material3/SheetDefaultsKt; +HSPLandroidx/compose/material3/SheetDefaultsKt;->()V +HSPLandroidx/compose/material3/SheetDefaultsKt;->rememberSheetState(ZLkotlin/jvm/functions/Function1;Landroidx/compose/material3/SheetValue;ZLandroidx/compose/runtime/Composer;II)Landroidx/compose/material3/SheetState; +Landroidx/compose/material3/SheetDefaultsKt$rememberSheetState$2$1; +HSPLandroidx/compose/material3/SheetDefaultsKt$rememberSheetState$2$1;->(ZLandroidx/compose/material3/SheetValue;Lkotlin/jvm/functions/Function1;Z)V +HSPLandroidx/compose/material3/SheetDefaultsKt$rememberSheetState$2$1;->invoke()Landroidx/compose/material3/SheetState; +HSPLandroidx/compose/material3/SheetDefaultsKt$rememberSheetState$2$1;->invoke()Ljava/lang/Object; +Landroidx/compose/material3/SheetState; +HSPLandroidx/compose/material3/SheetState;->()V +HSPLandroidx/compose/material3/SheetState;->(ZLandroidx/compose/material3/SheetValue;Lkotlin/jvm/functions/Function1;Z)V +HSPLandroidx/compose/material3/SheetState;->getCurrentValue()Landroidx/compose/material3/SheetValue; +Landroidx/compose/material3/SheetState$Companion; +HSPLandroidx/compose/material3/SheetState$Companion;->()V +HSPLandroidx/compose/material3/SheetState$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/SheetState$Companion;->Saver(ZLkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/saveable/Saver; +Landroidx/compose/material3/SheetState$Companion$Saver$1; +HSPLandroidx/compose/material3/SheetState$Companion$Saver$1;->()V +HSPLandroidx/compose/material3/SheetState$Companion$Saver$1;->()V +HSPLandroidx/compose/material3/SheetState$Companion$Saver$1;->invoke(Landroidx/compose/runtime/saveable/SaverScope;Landroidx/compose/material3/SheetState;)Landroidx/compose/material3/SheetValue; +HSPLandroidx/compose/material3/SheetState$Companion$Saver$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/SheetState$Companion$Saver$2; +HSPLandroidx/compose/material3/SheetState$Companion$Saver$2;->(ZLkotlin/jvm/functions/Function1;)V +Landroidx/compose/material3/SheetValue; +HSPLandroidx/compose/material3/SheetValue;->$values()[Landroidx/compose/material3/SheetValue; +HSPLandroidx/compose/material3/SheetValue;->()V +HSPLandroidx/compose/material3/SheetValue;->(Ljava/lang/String;I)V +Landroidx/compose/material3/SurfaceKt; +HSPLandroidx/compose/material3/SurfaceKt;->()V +HSPLandroidx/compose/material3/SurfaceKt;->Surface-T9BRK9s(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/Shape;JJFFLandroidx/compose/foundation/BorderStroke;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/material3/SurfaceKt;->Surface-o_FOJdg(Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;ZLandroidx/compose/ui/graphics/Shape;JJFFLandroidx/compose/foundation/BorderStroke;Landroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;III)V +HSPLandroidx/compose/material3/SurfaceKt;->access$surface-8ww4TTg(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/Shape;JLandroidx/compose/foundation/BorderStroke;F)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/material3/SurfaceKt;->access$surfaceColorAtElevation-CLU3JFs(JFLandroidx/compose/runtime/Composer;I)J +HSPLandroidx/compose/material3/SurfaceKt;->surface-8ww4TTg(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/Shape;JLandroidx/compose/foundation/BorderStroke;F)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/material3/SurfaceKt;->surfaceColorAtElevation-CLU3JFs(JFLandroidx/compose/runtime/Composer;I)J +Landroidx/compose/material3/SurfaceKt$LocalAbsoluteTonalElevation$1; +HSPLandroidx/compose/material3/SurfaceKt$LocalAbsoluteTonalElevation$1;->()V +HSPLandroidx/compose/material3/SurfaceKt$LocalAbsoluteTonalElevation$1;->()V +HSPLandroidx/compose/material3/SurfaceKt$LocalAbsoluteTonalElevation$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/material3/SurfaceKt$LocalAbsoluteTonalElevation$1;->invoke-D9Ej5fM()F +Landroidx/compose/material3/SurfaceKt$Surface$1; +HSPLandroidx/compose/material3/SurfaceKt$Surface$1;->(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/Shape;JFILandroidx/compose/foundation/BorderStroke;FLkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/material3/SurfaceKt$Surface$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/SurfaceKt$Surface$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/SurfaceKt$Surface$1$1; +HSPLandroidx/compose/material3/SurfaceKt$Surface$1$1;->()V +HSPLandroidx/compose/material3/SurfaceKt$Surface$1$1;->()V +HSPLandroidx/compose/material3/SurfaceKt$Surface$1$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/material3/SurfaceKt$Surface$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/SurfaceKt$Surface$1$2; +HSPLandroidx/compose/material3/SurfaceKt$Surface$1$2;->(Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/material3/SurfaceKt$Surface$1$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/material3/SurfaceKt$Surface$1$2;->invoke(Landroidx/compose/ui/input/pointer/PointerInputScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/material3/SurfaceKt$Surface$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/material3/SurfaceKt$Surface$1$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/SurfaceKt$Surface$3; +HSPLandroidx/compose/material3/SurfaceKt$Surface$3;->(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/Shape;JFILandroidx/compose/foundation/BorderStroke;FLandroidx/compose/foundation/interaction/MutableInteractionSource;ZLkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function2;I)V +HSPLandroidx/compose/material3/SurfaceKt$Surface$3;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/SurfaceKt$Surface$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/SwipeableV2Defaults; +HSPLandroidx/compose/material3/SwipeableV2Defaults;->()V +HSPLandroidx/compose/material3/SwipeableV2Defaults;->()V +HSPLandroidx/compose/material3/SwipeableV2Defaults;->getAnimationSpec()Landroidx/compose/animation/core/SpringSpec; +HSPLandroidx/compose/material3/SwipeableV2Defaults;->getPositionalThreshold()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/material3/SwipeableV2Defaults;->getVelocityThreshold-D9Ej5fM()F +Landroidx/compose/material3/SwipeableV2Kt; +HSPLandroidx/compose/material3/SwipeableV2Kt;->fixedPositionalThreshold-0680j_4(F)Lkotlin/jvm/functions/Function2; +Landroidx/compose/material3/SwipeableV2Kt$fixedPositionalThreshold$1; +HSPLandroidx/compose/material3/SwipeableV2Kt$fixedPositionalThreshold$1;->(F)V +Landroidx/compose/material3/SwipeableV2State; +HSPLandroidx/compose/material3/SwipeableV2State;->()V +HSPLandroidx/compose/material3/SwipeableV2State;->(Ljava/lang/Object;Landroidx/compose/animation/core/AnimationSpec;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;F)V +HSPLandroidx/compose/material3/SwipeableV2State;->(Ljava/lang/Object;Landroidx/compose/animation/core/AnimationSpec;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;FILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/SwipeableV2State;->(Ljava/lang/Object;Landroidx/compose/animation/core/AnimationSpec;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;FLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/SwipeableV2State;->getCurrentValue()Ljava/lang/Object; +Landroidx/compose/material3/SwipeableV2State$Companion; +HSPLandroidx/compose/material3/SwipeableV2State$Companion;->()V +HSPLandroidx/compose/material3/SwipeableV2State$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/material3/SwipeableV2State$maxOffset$2; +HSPLandroidx/compose/material3/SwipeableV2State$maxOffset$2;->(Landroidx/compose/material3/SwipeableV2State;)V +Landroidx/compose/material3/SwipeableV2State$minOffset$2; +HSPLandroidx/compose/material3/SwipeableV2State$minOffset$2;->(Landroidx/compose/material3/SwipeableV2State;)V +Landroidx/compose/material3/SwipeableV2State$progress$2; +HSPLandroidx/compose/material3/SwipeableV2State$progress$2;->(Landroidx/compose/material3/SwipeableV2State;)V +Landroidx/compose/material3/SwipeableV2State$swipeDraggableState$1; +HSPLandroidx/compose/material3/SwipeableV2State$swipeDraggableState$1;->(Landroidx/compose/material3/SwipeableV2State;)V +Landroidx/compose/material3/SwipeableV2State$swipeDraggableState$1$dragScope$1; +HSPLandroidx/compose/material3/SwipeableV2State$swipeDraggableState$1$dragScope$1;->(Landroidx/compose/material3/SwipeableV2State;)V +Landroidx/compose/material3/SwipeableV2State$targetValue$2; +HSPLandroidx/compose/material3/SwipeableV2State$targetValue$2;->(Landroidx/compose/material3/SwipeableV2State;)V +Landroidx/compose/material3/SystemBarsDefaultInsets_androidKt; +HSPLandroidx/compose/material3/SystemBarsDefaultInsets_androidKt;->getSystemBarsForVisualComponents(Landroidx/compose/foundation/layout/WindowInsets$Companion;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/WindowInsets; +Landroidx/compose/material3/TextFieldDefaults; +HSPLandroidx/compose/material3/TextFieldDefaults;->()V +HSPLandroidx/compose/material3/TextFieldDefaults;->()V +HSPLandroidx/compose/material3/TextFieldDefaults;->getMinWidth-D9Ej5fM()F +Landroidx/compose/material3/TextKt; +HSPLandroidx/compose/material3/TextKt;->()V +HSPLandroidx/compose/material3/TextKt;->ProvideTextStyle(Landroidx/compose/ui/text/TextStyle;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/TextKt;->Text--4IGK_g(Ljava/lang/String;Landroidx/compose/ui/Modifier;JJLandroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontFamily;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/text/style/TextAlign;JIZIILkotlin/jvm/functions/Function1;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/runtime/Composer;III)V +HSPLandroidx/compose/material3/TextKt;->Text-IbK3jfQ(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/Modifier;JJLandroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontFamily;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/text/style/TextAlign;JIZIILjava/util/Map;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/runtime/Composer;III)V +HSPLandroidx/compose/material3/TextKt;->getLocalTextStyle()Landroidx/compose/runtime/ProvidableCompositionLocal; +Landroidx/compose/material3/TextKt$LocalTextStyle$1; +HSPLandroidx/compose/material3/TextKt$LocalTextStyle$1;->()V +HSPLandroidx/compose/material3/TextKt$LocalTextStyle$1;->()V +HSPLandroidx/compose/material3/TextKt$LocalTextStyle$1;->invoke()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/TextKt$LocalTextStyle$1;->invoke()Ljava/lang/Object; +Landroidx/compose/material3/TextKt$ProvideTextStyle$1; +HSPLandroidx/compose/material3/TextKt$ProvideTextStyle$1;->(Landroidx/compose/ui/text/TextStyle;Lkotlin/jvm/functions/Function2;I)V +Landroidx/compose/material3/TextKt$Text$1; +HSPLandroidx/compose/material3/TextKt$Text$1;->()V +HSPLandroidx/compose/material3/TextKt$Text$1;->()V +HSPLandroidx/compose/material3/TextKt$Text$1;->invoke(Landroidx/compose/ui/text/TextLayoutResult;)V +HSPLandroidx/compose/material3/TextKt$Text$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/TextKt$Text$2; +HSPLandroidx/compose/material3/TextKt$Text$2;->(Ljava/lang/String;Landroidx/compose/ui/Modifier;JJLandroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontFamily;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/text/style/TextAlign;JIZIILkotlin/jvm/functions/Function1;Landroidx/compose/ui/text/TextStyle;III)V +Landroidx/compose/material3/TextKt$Text$5; +HSPLandroidx/compose/material3/TextKt$Text$5;->()V +HSPLandroidx/compose/material3/TextKt$Text$5;->()V +HSPLandroidx/compose/material3/TextKt$Text$5;->invoke(Landroidx/compose/ui/text/TextLayoutResult;)V +HSPLandroidx/compose/material3/TextKt$Text$5;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/TextKt$Text$6; +HSPLandroidx/compose/material3/TextKt$Text$6;->(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/Modifier;JJLandroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontFamily;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/text/style/TextAlign;JIZIILjava/util/Map;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/text/TextStyle;III)V +Landroidx/compose/material3/TonalPalette; +HSPLandroidx/compose/material3/TonalPalette;->(JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ)V +HSPLandroidx/compose/material3/TonalPalette;->(JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/TonalPalette;->getNeutral10-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getNeutral20-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getNeutral95-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getNeutral99-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getNeutralVariant30-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getNeutralVariant50-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getNeutralVariant90-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getPrimary10-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getPrimary100-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getPrimary40-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getPrimary80-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getPrimary90-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getSecondary10-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getSecondary100-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getSecondary40-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getSecondary90-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getTertiary10-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getTertiary100-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getTertiary40-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getTertiary90-0d7_KjU()J +Landroidx/compose/material3/TopAppBarDefaults; +HSPLandroidx/compose/material3/TopAppBarDefaults;->()V +HSPLandroidx/compose/material3/TopAppBarDefaults;->()V +HSPLandroidx/compose/material3/TopAppBarDefaults;->getWindowInsets(Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/material3/TopAppBarDefaults;->pinnedScrollBehavior(Landroidx/compose/material3/TopAppBarState;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;II)Landroidx/compose/material3/TopAppBarScrollBehavior; +Landroidx/compose/material3/TopAppBarDefaults$pinnedScrollBehavior$1; +HSPLandroidx/compose/material3/TopAppBarDefaults$pinnedScrollBehavior$1;->()V +HSPLandroidx/compose/material3/TopAppBarDefaults$pinnedScrollBehavior$1;->()V +Landroidx/compose/material3/TopAppBarScrollBehavior; +Landroidx/compose/material3/TopAppBarState; +HSPLandroidx/compose/material3/TopAppBarState;->()V +HSPLandroidx/compose/material3/TopAppBarState;->(FFF)V +HSPLandroidx/compose/material3/TopAppBarState;->access$getSaver$cp()Landroidx/compose/runtime/saveable/Saver; +HSPLandroidx/compose/material3/TopAppBarState;->getContentOffset()F +HSPLandroidx/compose/material3/TopAppBarState;->getHeightOffset()F +HSPLandroidx/compose/material3/TopAppBarState;->getHeightOffsetLimit()F +HSPLandroidx/compose/material3/TopAppBarState;->getOverlappedFraction()F +HSPLandroidx/compose/material3/TopAppBarState;->setHeightOffsetLimit(F)V +Landroidx/compose/material3/TopAppBarState$Companion; +HSPLandroidx/compose/material3/TopAppBarState$Companion;->()V +HSPLandroidx/compose/material3/TopAppBarState$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/TopAppBarState$Companion;->getSaver()Landroidx/compose/runtime/saveable/Saver; +Landroidx/compose/material3/TopAppBarState$Companion$Saver$1; +HSPLandroidx/compose/material3/TopAppBarState$Companion$Saver$1;->()V +HSPLandroidx/compose/material3/TopAppBarState$Companion$Saver$1;->()V +HSPLandroidx/compose/material3/TopAppBarState$Companion$Saver$1;->invoke(Landroidx/compose/runtime/saveable/SaverScope;Landroidx/compose/material3/TopAppBarState;)Ljava/util/List; +HSPLandroidx/compose/material3/TopAppBarState$Companion$Saver$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/TopAppBarState$Companion$Saver$2; +HSPLandroidx/compose/material3/TopAppBarState$Companion$Saver$2;->()V +HSPLandroidx/compose/material3/TopAppBarState$Companion$Saver$2;->()V +Landroidx/compose/material3/Typography; +HSPLandroidx/compose/material3/Typography;->()V +HSPLandroidx/compose/material3/Typography;->(Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;)V +HSPLandroidx/compose/material3/Typography;->(Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/Typography;->getBodyLarge()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/Typography;->getBodyMedium()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/Typography;->getBodySmall()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/Typography;->getLabelLarge()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/Typography;->getLabelMedium()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/Typography;->getLabelSmall()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/Typography;->getTitleLarge()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/Typography;->getTitleMedium()Landroidx/compose/ui/text/TextStyle; +Landroidx/compose/material3/TypographyKt; +HSPLandroidx/compose/material3/TypographyKt;->()V +HSPLandroidx/compose/material3/TypographyKt;->fromToken(Landroidx/compose/material3/Typography;Landroidx/compose/material3/tokens/TypographyKeyTokens;)Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/TypographyKt;->getLocalTypography()Landroidx/compose/runtime/ProvidableCompositionLocal; +Landroidx/compose/material3/TypographyKt$LocalTypography$1; +HSPLandroidx/compose/material3/TypographyKt$LocalTypography$1;->()V +HSPLandroidx/compose/material3/TypographyKt$LocalTypography$1;->()V +Landroidx/compose/material3/TypographyKt$WhenMappings; +HSPLandroidx/compose/material3/TypographyKt$WhenMappings;->()V +Landroidx/compose/material3/tokens/CheckboxTokens; +HSPLandroidx/compose/material3/tokens/CheckboxTokens;->()V +HSPLandroidx/compose/material3/tokens/CheckboxTokens;->()V +HSPLandroidx/compose/material3/tokens/CheckboxTokens;->getSelectedContainerColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +HSPLandroidx/compose/material3/tokens/CheckboxTokens;->getSelectedDisabledContainerColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +HSPLandroidx/compose/material3/tokens/CheckboxTokens;->getSelectedIconColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +HSPLandroidx/compose/material3/tokens/CheckboxTokens;->getUnselectedDisabledOutlineColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +HSPLandroidx/compose/material3/tokens/CheckboxTokens;->getUnselectedOutlineColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +Landroidx/compose/material3/tokens/CircularProgressIndicatorTokens; +HSPLandroidx/compose/material3/tokens/CircularProgressIndicatorTokens;->()V +HSPLandroidx/compose/material3/tokens/CircularProgressIndicatorTokens;->()V +HSPLandroidx/compose/material3/tokens/CircularProgressIndicatorTokens;->getActiveIndicatorColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +HSPLandroidx/compose/material3/tokens/CircularProgressIndicatorTokens;->getActiveIndicatorWidth-D9Ej5fM()F +HSPLandroidx/compose/material3/tokens/CircularProgressIndicatorTokens;->getSize-D9Ej5fM()F +Landroidx/compose/material3/tokens/ColorLightTokens; +HSPLandroidx/compose/material3/tokens/ColorLightTokens;->()V +HSPLandroidx/compose/material3/tokens/ColorLightTokens;->()V +HSPLandroidx/compose/material3/tokens/ColorLightTokens;->getError-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/ColorLightTokens;->getErrorContainer-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/ColorLightTokens;->getOnError-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/ColorLightTokens;->getOnErrorContainer-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/ColorLightTokens;->getOutlineVariant-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/ColorLightTokens;->getScrim-0d7_KjU()J +Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +HSPLandroidx/compose/material3/tokens/ColorSchemeKeyTokens;->$values()[Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +HSPLandroidx/compose/material3/tokens/ColorSchemeKeyTokens;->()V +HSPLandroidx/compose/material3/tokens/ColorSchemeKeyTokens;->(Ljava/lang/String;I)V +HSPLandroidx/compose/material3/tokens/ColorSchemeKeyTokens;->values()[Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +Landroidx/compose/material3/tokens/ElevationTokens; +HSPLandroidx/compose/material3/tokens/ElevationTokens;->()V +HSPLandroidx/compose/material3/tokens/ElevationTokens;->()V +HSPLandroidx/compose/material3/tokens/ElevationTokens;->getLevel0-D9Ej5fM()F +HSPLandroidx/compose/material3/tokens/ElevationTokens;->getLevel1-D9Ej5fM()F +HSPLandroidx/compose/material3/tokens/ElevationTokens;->getLevel2-D9Ej5fM()F +Landroidx/compose/material3/tokens/FilledButtonTokens; +HSPLandroidx/compose/material3/tokens/FilledButtonTokens;->()V +HSPLandroidx/compose/material3/tokens/FilledButtonTokens;->()V +HSPLandroidx/compose/material3/tokens/FilledButtonTokens;->getContainerColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +HSPLandroidx/compose/material3/tokens/FilledButtonTokens;->getContainerElevation-D9Ej5fM()F +HSPLandroidx/compose/material3/tokens/FilledButtonTokens;->getContainerShape()Landroidx/compose/material3/tokens/ShapeKeyTokens; +HSPLandroidx/compose/material3/tokens/FilledButtonTokens;->getDisabledContainerColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +HSPLandroidx/compose/material3/tokens/FilledButtonTokens;->getDisabledContainerElevation-D9Ej5fM()F +HSPLandroidx/compose/material3/tokens/FilledButtonTokens;->getDisabledLabelTextColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +HSPLandroidx/compose/material3/tokens/FilledButtonTokens;->getFocusContainerElevation-D9Ej5fM()F +HSPLandroidx/compose/material3/tokens/FilledButtonTokens;->getHoverContainerElevation-D9Ej5fM()F +HSPLandroidx/compose/material3/tokens/FilledButtonTokens;->getIconSize-D9Ej5fM()F +HSPLandroidx/compose/material3/tokens/FilledButtonTokens;->getLabelTextColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +HSPLandroidx/compose/material3/tokens/FilledButtonTokens;->getPressedContainerElevation-D9Ej5fM()F +Landroidx/compose/material3/tokens/IconButtonTokens; +HSPLandroidx/compose/material3/tokens/IconButtonTokens;->()V +HSPLandroidx/compose/material3/tokens/IconButtonTokens;->()V +HSPLandroidx/compose/material3/tokens/IconButtonTokens;->getIconSize-D9Ej5fM()F +HSPLandroidx/compose/material3/tokens/IconButtonTokens;->getStateLayerShape()Landroidx/compose/material3/tokens/ShapeKeyTokens; +HSPLandroidx/compose/material3/tokens/IconButtonTokens;->getStateLayerSize-D9Ej5fM()F +Landroidx/compose/material3/tokens/LinearProgressIndicatorTokens; +HSPLandroidx/compose/material3/tokens/LinearProgressIndicatorTokens;->()V +HSPLandroidx/compose/material3/tokens/LinearProgressIndicatorTokens;->()V +HSPLandroidx/compose/material3/tokens/LinearProgressIndicatorTokens;->getTrackHeight-D9Ej5fM()F +Landroidx/compose/material3/tokens/NavigationBarTokens; +HSPLandroidx/compose/material3/tokens/NavigationBarTokens;->()V +HSPLandroidx/compose/material3/tokens/NavigationBarTokens;->()V +HSPLandroidx/compose/material3/tokens/NavigationBarTokens;->getActiveIconColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +HSPLandroidx/compose/material3/tokens/NavigationBarTokens;->getActiveIndicatorColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +HSPLandroidx/compose/material3/tokens/NavigationBarTokens;->getActiveIndicatorHeight-D9Ej5fM()F +HSPLandroidx/compose/material3/tokens/NavigationBarTokens;->getActiveIndicatorShape()Landroidx/compose/material3/tokens/ShapeKeyTokens; +HSPLandroidx/compose/material3/tokens/NavigationBarTokens;->getActiveIndicatorWidth-D9Ej5fM()F +HSPLandroidx/compose/material3/tokens/NavigationBarTokens;->getActiveLabelTextColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +HSPLandroidx/compose/material3/tokens/NavigationBarTokens;->getContainerHeight-D9Ej5fM()F +HSPLandroidx/compose/material3/tokens/NavigationBarTokens;->getIconSize-D9Ej5fM()F +HSPLandroidx/compose/material3/tokens/NavigationBarTokens;->getInactiveIconColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +HSPLandroidx/compose/material3/tokens/NavigationBarTokens;->getInactiveLabelTextColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +HSPLandroidx/compose/material3/tokens/NavigationBarTokens;->getLabelTextFont()Landroidx/compose/material3/tokens/TypographyKeyTokens; +Landroidx/compose/material3/tokens/PaletteTokens; +HSPLandroidx/compose/material3/tokens/PaletteTokens;->()V +HSPLandroidx/compose/material3/tokens/PaletteTokens;->()V +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getError10-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getError100-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getError40-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getError90-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getNeutral0-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getNeutral10-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getNeutral20-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getNeutral95-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getNeutral99-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getNeutralVariant30-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getNeutralVariant50-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getNeutralVariant80-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getNeutralVariant90-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getPrimary10-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getPrimary100-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getPrimary40-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getPrimary80-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getPrimary90-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getSecondary10-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getSecondary100-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getSecondary40-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getSecondary90-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getTertiary10-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getTertiary100-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getTertiary40-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getTertiary90-0d7_KjU()J +Landroidx/compose/material3/tokens/ShapeKeyTokens; +HSPLandroidx/compose/material3/tokens/ShapeKeyTokens;->$values()[Landroidx/compose/material3/tokens/ShapeKeyTokens; +HSPLandroidx/compose/material3/tokens/ShapeKeyTokens;->()V +HSPLandroidx/compose/material3/tokens/ShapeKeyTokens;->(Ljava/lang/String;I)V +HSPLandroidx/compose/material3/tokens/ShapeKeyTokens;->values()[Landroidx/compose/material3/tokens/ShapeKeyTokens; +Landroidx/compose/material3/tokens/ShapeTokens; +HSPLandroidx/compose/material3/tokens/ShapeTokens;->()V +HSPLandroidx/compose/material3/tokens/ShapeTokens;->()V +HSPLandroidx/compose/material3/tokens/ShapeTokens;->getCornerExtraLarge()Landroidx/compose/foundation/shape/RoundedCornerShape; +HSPLandroidx/compose/material3/tokens/ShapeTokens;->getCornerExtraSmall()Landroidx/compose/foundation/shape/RoundedCornerShape; +HSPLandroidx/compose/material3/tokens/ShapeTokens;->getCornerLarge()Landroidx/compose/foundation/shape/RoundedCornerShape; +HSPLandroidx/compose/material3/tokens/ShapeTokens;->getCornerMedium()Landroidx/compose/foundation/shape/RoundedCornerShape; +HSPLandroidx/compose/material3/tokens/ShapeTokens;->getCornerSmall()Landroidx/compose/foundation/shape/RoundedCornerShape; +Landroidx/compose/material3/tokens/TypeScaleTokens; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->()V +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->()V +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodyLargeFont()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodyLargeLineHeight-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodyLargeSize-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodyLargeTracking-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodyLargeWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodyMediumFont()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodyMediumLineHeight-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodyMediumSize-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodyMediumTracking-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodyMediumWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodySmallFont()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodySmallLineHeight-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodySmallSize-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodySmallTracking-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodySmallWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplayLargeFont()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplayLargeLineHeight-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplayLargeSize-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplayLargeTracking-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplayLargeWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplayMediumFont()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplayMediumLineHeight-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplayMediumSize-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplayMediumTracking-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplayMediumWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplaySmallFont()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplaySmallLineHeight-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplaySmallSize-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplaySmallTracking-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplaySmallWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineLargeFont()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineLargeLineHeight-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineLargeSize-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineLargeTracking-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineLargeWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineMediumFont()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineMediumLineHeight-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineMediumSize-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineMediumTracking-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineMediumWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineSmallFont()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineSmallLineHeight-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineSmallSize-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineSmallTracking-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineSmallWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelLargeFont()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelLargeLineHeight-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelLargeSize-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelLargeTracking-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelLargeWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelMediumFont()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelMediumLineHeight-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelMediumSize-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelMediumTracking-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelMediumWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelSmallFont()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelSmallLineHeight-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelSmallSize-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelSmallTracking-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelSmallWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleLargeFont()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleLargeLineHeight-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleLargeSize-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleLargeTracking-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleLargeWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleMediumFont()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleMediumLineHeight-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleMediumSize-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleMediumTracking-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleMediumWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleSmallFont()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleSmallLineHeight-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleSmallSize-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleSmallTracking-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleSmallWeight()Landroidx/compose/ui/text/font/FontWeight; +Landroidx/compose/material3/tokens/TypefaceTokens; +HSPLandroidx/compose/material3/tokens/TypefaceTokens;->()V +HSPLandroidx/compose/material3/tokens/TypefaceTokens;->()V +HSPLandroidx/compose/material3/tokens/TypefaceTokens;->getBrand()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypefaceTokens;->getPlain()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypefaceTokens;->getWeightMedium()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/material3/tokens/TypefaceTokens;->getWeightRegular()Landroidx/compose/ui/text/font/FontWeight; +Landroidx/compose/material3/tokens/TypographyKeyTokens; +HSPLandroidx/compose/material3/tokens/TypographyKeyTokens;->$values()[Landroidx/compose/material3/tokens/TypographyKeyTokens; +HSPLandroidx/compose/material3/tokens/TypographyKeyTokens;->()V +HSPLandroidx/compose/material3/tokens/TypographyKeyTokens;->(Ljava/lang/String;I)V +HSPLandroidx/compose/material3/tokens/TypographyKeyTokens;->values()[Landroidx/compose/material3/tokens/TypographyKeyTokens; +Landroidx/compose/material3/tokens/TypographyTokens; +HSPLandroidx/compose/material3/tokens/TypographyTokens;->()V +HSPLandroidx/compose/material3/tokens/TypographyTokens;->()V +HSPLandroidx/compose/material3/tokens/TypographyTokens;->getBodyLarge()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/tokens/TypographyTokens;->getBodyMedium()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/tokens/TypographyTokens;->getBodySmall()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/tokens/TypographyTokens;->getDisplayLarge()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/tokens/TypographyTokens;->getDisplayMedium()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/tokens/TypographyTokens;->getDisplaySmall()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/tokens/TypographyTokens;->getHeadlineLarge()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/tokens/TypographyTokens;->getHeadlineMedium()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/tokens/TypographyTokens;->getHeadlineSmall()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/tokens/TypographyTokens;->getLabelLarge()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/tokens/TypographyTokens;->getLabelMedium()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/tokens/TypographyTokens;->getLabelSmall()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/tokens/TypographyTokens;->getTitleLarge()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/tokens/TypographyTokens;->getTitleMedium()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/tokens/TypographyTokens;->getTitleSmall()Landroidx/compose/ui/text/TextStyle; +Landroidx/compose/material3/tokens/TypographyTokensKt; +HSPLandroidx/compose/material3/tokens/TypographyTokensKt;->()V +HSPLandroidx/compose/material3/tokens/TypographyTokensKt;->getDefaultTextStyle()Landroidx/compose/ui/text/TextStyle; +Landroidx/compose/runtime/AbstractApplier; +HSPLandroidx/compose/runtime/AbstractApplier;->()V +HSPLandroidx/compose/runtime/AbstractApplier;->(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/AbstractApplier;->clear()V +HSPLandroidx/compose/runtime/AbstractApplier;->down(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/AbstractApplier;->getCurrent()Ljava/lang/Object; +HSPLandroidx/compose/runtime/AbstractApplier;->getRoot()Ljava/lang/Object; +HSPLandroidx/compose/runtime/AbstractApplier;->setCurrent(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/AbstractApplier;->up()V +Landroidx/compose/runtime/ActualAndroid_androidKt; +HSPLandroidx/compose/runtime/ActualAndroid_androidKt;->()V +HSPLandroidx/compose/runtime/ActualAndroid_androidKt;->createSnapshotMutableFloatState(F)Landroidx/compose/runtime/MutableFloatState; +HSPLandroidx/compose/runtime/ActualAndroid_androidKt;->createSnapshotMutableIntState(I)Landroidx/compose/runtime/MutableIntState; +HSPLandroidx/compose/runtime/ActualAndroid_androidKt;->createSnapshotMutableLongState(J)Landroidx/compose/runtime/MutableLongState; +HSPLandroidx/compose/runtime/ActualAndroid_androidKt;->createSnapshotMutableState(Ljava/lang/Object;Landroidx/compose/runtime/SnapshotMutationPolicy;)Landroidx/compose/runtime/snapshots/SnapshotMutableState; +Landroidx/compose/runtime/ActualAndroid_androidKt$DefaultMonotonicFrameClock$2; +HSPLandroidx/compose/runtime/ActualAndroid_androidKt$DefaultMonotonicFrameClock$2;->()V +HSPLandroidx/compose/runtime/ActualAndroid_androidKt$DefaultMonotonicFrameClock$2;->()V +Landroidx/compose/runtime/ActualJvm_jvmKt; +HSPLandroidx/compose/runtime/ActualJvm_jvmKt;->identityHashCode(Ljava/lang/Object;)I +HSPLandroidx/compose/runtime/ActualJvm_jvmKt;->invokeComposable(Landroidx/compose/runtime/Composer;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/runtime/ActualJvm_jvmKt;->invokeComposableForResult(Landroidx/compose/runtime/Composer;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +Landroidx/compose/runtime/Anchor; +HSPLandroidx/compose/runtime/Anchor;->(I)V +HSPLandroidx/compose/runtime/Anchor;->getLocation$runtime_release()I +HSPLandroidx/compose/runtime/Anchor;->getValid()Z +HSPLandroidx/compose/runtime/Anchor;->setLocation$runtime_release(I)V +HSPLandroidx/compose/runtime/Anchor;->toIndexFor(Landroidx/compose/runtime/SlotTable;)I +HSPLandroidx/compose/runtime/Anchor;->toIndexFor(Landroidx/compose/runtime/SlotWriter;)I +Landroidx/compose/runtime/Applier; +HSPLandroidx/compose/runtime/Applier;->onBeginChanges()V +HSPLandroidx/compose/runtime/Applier;->onEndChanges()V +Landroidx/compose/runtime/AtomicInt; +HSPLandroidx/compose/runtime/AtomicInt;->(I)V +HSPLandroidx/compose/runtime/AtomicInt;->add(I)I +Landroidx/compose/runtime/BroadcastFrameClock; +HSPLandroidx/compose/runtime/BroadcastFrameClock;->()V +HSPLandroidx/compose/runtime/BroadcastFrameClock;->(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/runtime/BroadcastFrameClock;->access$getAwaiters$p(Landroidx/compose/runtime/BroadcastFrameClock;)Ljava/util/List; +HSPLandroidx/compose/runtime/BroadcastFrameClock;->access$getFailureCause$p(Landroidx/compose/runtime/BroadcastFrameClock;)Ljava/lang/Throwable; +HSPLandroidx/compose/runtime/BroadcastFrameClock;->access$getLock$p(Landroidx/compose/runtime/BroadcastFrameClock;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/BroadcastFrameClock;->access$getOnNewAwaiters$p(Landroidx/compose/runtime/BroadcastFrameClock;)Lkotlin/jvm/functions/Function0; +HSPLandroidx/compose/runtime/BroadcastFrameClock;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/BroadcastFrameClock;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLandroidx/compose/runtime/BroadcastFrameClock;->getHasAwaiters()Z +HSPLandroidx/compose/runtime/BroadcastFrameClock;->minusKey(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext; +HSPLandroidx/compose/runtime/BroadcastFrameClock;->sendFrame(J)V +HSPLandroidx/compose/runtime/BroadcastFrameClock;->withFrameNanos(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/runtime/BroadcastFrameClock$FrameAwaiter; +HSPLandroidx/compose/runtime/BroadcastFrameClock$FrameAwaiter;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/runtime/BroadcastFrameClock$FrameAwaiter;->resume(J)V +Landroidx/compose/runtime/BroadcastFrameClock$withFrameNanos$2$1; +HSPLandroidx/compose/runtime/BroadcastFrameClock$withFrameNanos$2$1;->(Landroidx/compose/runtime/BroadcastFrameClock;Lkotlin/jvm/internal/Ref$ObjectRef;)V +HSPLandroidx/compose/runtime/BroadcastFrameClock$withFrameNanos$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/BroadcastFrameClock$withFrameNanos$2$1;->invoke(Ljava/lang/Throwable;)V +Landroidx/compose/runtime/ComposableSingletons$CompositionKt; +HSPLandroidx/compose/runtime/ComposableSingletons$CompositionKt;->()V +HSPLandroidx/compose/runtime/ComposableSingletons$CompositionKt;->()V +HSPLandroidx/compose/runtime/ComposableSingletons$CompositionKt;->getLambda-1$runtime_release()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/runtime/ComposableSingletons$CompositionKt;->getLambda-2$runtime_release()Lkotlin/jvm/functions/Function2; +Landroidx/compose/runtime/ComposableSingletons$CompositionKt$lambda-1$1; +HSPLandroidx/compose/runtime/ComposableSingletons$CompositionKt$lambda-1$1;->()V +HSPLandroidx/compose/runtime/ComposableSingletons$CompositionKt$lambda-1$1;->()V +Landroidx/compose/runtime/ComposableSingletons$CompositionKt$lambda-2$1; +HSPLandroidx/compose/runtime/ComposableSingletons$CompositionKt$lambda-2$1;->()V +HSPLandroidx/compose/runtime/ComposableSingletons$CompositionKt$lambda-2$1;->()V +Landroidx/compose/runtime/ComposablesKt; +HSPLandroidx/compose/runtime/ComposablesKt;->getCurrentCompositeKeyHash(Landroidx/compose/runtime/Composer;I)I +HSPLandroidx/compose/runtime/ComposablesKt;->getCurrentRecomposeScope(Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/RecomposeScope; +HSPLandroidx/compose/runtime/ComposablesKt;->rememberCompositionContext(Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/CompositionContext; +Landroidx/compose/runtime/ComposeNodeLifecycleCallback; +Landroidx/compose/runtime/Composer; +HSPLandroidx/compose/runtime/Composer;->()V +Landroidx/compose/runtime/Composer$Companion; +HSPLandroidx/compose/runtime/Composer$Companion;->()V +HSPLandroidx/compose/runtime/Composer$Companion;->()V +HSPLandroidx/compose/runtime/Composer$Companion;->getEmpty()Ljava/lang/Object; +Landroidx/compose/runtime/Composer$Companion$Empty$1; +HSPLandroidx/compose/runtime/Composer$Companion$Empty$1;->()V +Landroidx/compose/runtime/ComposerImpl; +HSPLandroidx/compose/runtime/ComposerImpl;->(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/CompositionContext;Landroidx/compose/runtime/SlotTable;Ljava/util/Set;Ljava/util/List;Ljava/util/List;Landroidx/compose/runtime/ControlledComposition;)V +HSPLandroidx/compose/runtime/ComposerImpl;->access$getChildrenComposing$p(Landroidx/compose/runtime/ComposerImpl;)I +HSPLandroidx/compose/runtime/ComposerImpl;->access$getParentContext$p(Landroidx/compose/runtime/ComposerImpl;)Landroidx/compose/runtime/CompositionContext; +HSPLandroidx/compose/runtime/ComposerImpl;->access$getReader$p(Landroidx/compose/runtime/ComposerImpl;)Landroidx/compose/runtime/SlotReader; +HSPLandroidx/compose/runtime/ComposerImpl;->access$setChildrenComposing$p(Landroidx/compose/runtime/ComposerImpl;I)V +HSPLandroidx/compose/runtime/ComposerImpl;->addRecomposeScope()V +HSPLandroidx/compose/runtime/ComposerImpl;->apply(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/runtime/ComposerImpl;->buildContext()Landroidx/compose/runtime/CompositionContext; +HSPLandroidx/compose/runtime/ComposerImpl;->changed(F)Z +HSPLandroidx/compose/runtime/ComposerImpl;->changed(I)Z +HSPLandroidx/compose/runtime/ComposerImpl;->changed(J)Z +HSPLandroidx/compose/runtime/ComposerImpl;->changed(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/ComposerImpl;->changed(Z)Z +HSPLandroidx/compose/runtime/ComposerImpl;->changedInstance(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/ComposerImpl;->changesApplied$runtime_release()V +HSPLandroidx/compose/runtime/ComposerImpl;->cleanUpCompose()V +HSPLandroidx/compose/runtime/ComposerImpl;->clearUpdatedNodeCounts()V +HSPLandroidx/compose/runtime/ComposerImpl;->composeContent$runtime_release(Landroidx/compose/runtime/collection/IdentityArrayMap;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/runtime/ComposerImpl;->compoundKeyOf(III)I +HSPLandroidx/compose/runtime/ComposerImpl;->consume(Landroidx/compose/runtime/CompositionLocal;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/ComposerImpl;->createFreshInsertTable()V +HSPLandroidx/compose/runtime/ComposerImpl;->createNode(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/runtime/ComposerImpl;->currentCompositionLocalScope()Landroidx/compose/runtime/PersistentCompositionLocalMap; +HSPLandroidx/compose/runtime/ComposerImpl;->currentCompositionLocalScope(I)Landroidx/compose/runtime/PersistentCompositionLocalMap; +HSPLandroidx/compose/runtime/ComposerImpl;->deactivateToEndGroup(Z)V +HSPLandroidx/compose/runtime/ComposerImpl;->disableReusing()V +HSPLandroidx/compose/runtime/ComposerImpl;->dispose$runtime_release()V +HSPLandroidx/compose/runtime/ComposerImpl;->doCompose(Landroidx/compose/runtime/collection/IdentityArrayMap;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/runtime/ComposerImpl;->doRecordDownsFor(II)V +HSPLandroidx/compose/runtime/ComposerImpl;->enableReusing()V +HSPLandroidx/compose/runtime/ComposerImpl;->end(Z)V +HSPLandroidx/compose/runtime/ComposerImpl;->endDefaults()V +HSPLandroidx/compose/runtime/ComposerImpl;->endGroup()V +HSPLandroidx/compose/runtime/ComposerImpl;->endMovableGroup()V +HSPLandroidx/compose/runtime/ComposerImpl;->endNode()V +HSPLandroidx/compose/runtime/ComposerImpl;->endProviders()V +HSPLandroidx/compose/runtime/ComposerImpl;->endReplaceableGroup()V +HSPLandroidx/compose/runtime/ComposerImpl;->endRestartGroup()Landroidx/compose/runtime/ScopeUpdateScope; +HSPLandroidx/compose/runtime/ComposerImpl;->endReusableGroup()V +HSPLandroidx/compose/runtime/ComposerImpl;->endRoot()V +HSPLandroidx/compose/runtime/ComposerImpl;->ensureWriter()V +HSPLandroidx/compose/runtime/ComposerImpl;->enterGroup(ZLandroidx/compose/runtime/Pending;)V +HSPLandroidx/compose/runtime/ComposerImpl;->exitGroup(IZ)V +HSPLandroidx/compose/runtime/ComposerImpl;->finalizeCompose()V +HSPLandroidx/compose/runtime/ComposerImpl;->getApplier()Landroidx/compose/runtime/Applier; +HSPLandroidx/compose/runtime/ComposerImpl;->getApplyCoroutineContext()Lkotlin/coroutines/CoroutineContext; +HSPLandroidx/compose/runtime/ComposerImpl;->getAreChildrenComposing$runtime_release()Z +HSPLandroidx/compose/runtime/ComposerImpl;->getComposition()Landroidx/compose/runtime/ControlledComposition; +HSPLandroidx/compose/runtime/ComposerImpl;->getCompoundKeyHash()I +HSPLandroidx/compose/runtime/ComposerImpl;->getCurrentCompositionLocalMap()Landroidx/compose/runtime/CompositionLocalMap; +HSPLandroidx/compose/runtime/ComposerImpl;->getCurrentRecomposeScope$runtime_release()Landroidx/compose/runtime/RecomposeScopeImpl; +HSPLandroidx/compose/runtime/ComposerImpl;->getDefaultsInvalid()Z +HSPLandroidx/compose/runtime/ComposerImpl;->getDeferredChanges$runtime_release()Ljava/util/List; +HSPLandroidx/compose/runtime/ComposerImpl;->getInserting()Z +HSPLandroidx/compose/runtime/ComposerImpl;->getNode(Landroidx/compose/runtime/SlotReader;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/ComposerImpl;->getRecomposeScope()Landroidx/compose/runtime/RecomposeScope; +HSPLandroidx/compose/runtime/ComposerImpl;->getSkipping()Z +HSPLandroidx/compose/runtime/ComposerImpl;->groupCompoundKeyPart(Landroidx/compose/runtime/SlotReader;I)I +HSPLandroidx/compose/runtime/ComposerImpl;->insertedGroupVirtualIndex(I)I +HSPLandroidx/compose/runtime/ComposerImpl;->isComposing$runtime_release()Z +HSPLandroidx/compose/runtime/ComposerImpl;->nextSlot()Ljava/lang/Object; +HSPLandroidx/compose/runtime/ComposerImpl;->nodeAt(Landroidx/compose/runtime/SlotReader;I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/ComposerImpl;->nodeIndexOf(IIII)I +HSPLandroidx/compose/runtime/ComposerImpl;->prepareCompose$runtime_release(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/runtime/ComposerImpl;->realizeDowns()V +HSPLandroidx/compose/runtime/ComposerImpl;->realizeDowns([Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl;->realizeMovement()V +HSPLandroidx/compose/runtime/ComposerImpl;->realizeOperationLocation$default(Landroidx/compose/runtime/ComposerImpl;ZILjava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl;->realizeOperationLocation(Z)V +HSPLandroidx/compose/runtime/ComposerImpl;->realizeUps()V +HSPLandroidx/compose/runtime/ComposerImpl;->recompose$runtime_release(Landroidx/compose/runtime/collection/IdentityArrayMap;)Z +HSPLandroidx/compose/runtime/ComposerImpl;->recomposeToGroupEnd()V +HSPLandroidx/compose/runtime/ComposerImpl;->record(Lkotlin/jvm/functions/Function3;)V +HSPLandroidx/compose/runtime/ComposerImpl;->recordApplierOperation(Lkotlin/jvm/functions/Function3;)V +HSPLandroidx/compose/runtime/ComposerImpl;->recordDelete()V +HSPLandroidx/compose/runtime/ComposerImpl;->recordDown(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl;->recordEndGroup()V +HSPLandroidx/compose/runtime/ComposerImpl;->recordEndRoot()V +HSPLandroidx/compose/runtime/ComposerImpl;->recordFixup(Lkotlin/jvm/functions/Function3;)V +HSPLandroidx/compose/runtime/ComposerImpl;->recordInsert(Landroidx/compose/runtime/Anchor;)V +HSPLandroidx/compose/runtime/ComposerImpl;->recordInsertUpFixup(Lkotlin/jvm/functions/Function3;)V +HSPLandroidx/compose/runtime/ComposerImpl;->recordReaderMoving(I)V +HSPLandroidx/compose/runtime/ComposerImpl;->recordRemoveNode(II)V +HSPLandroidx/compose/runtime/ComposerImpl;->recordSideEffect(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/runtime/ComposerImpl;->recordSlotEditing()V +HSPLandroidx/compose/runtime/ComposerImpl;->recordSlotEditingOperation(Lkotlin/jvm/functions/Function3;)V +HSPLandroidx/compose/runtime/ComposerImpl;->recordSlotTableOperation$default(Landroidx/compose/runtime/ComposerImpl;ZLkotlin/jvm/functions/Function3;ILjava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl;->recordSlotTableOperation(ZLkotlin/jvm/functions/Function3;)V +HSPLandroidx/compose/runtime/ComposerImpl;->recordUp()V +HSPLandroidx/compose/runtime/ComposerImpl;->recordUpsAndDowns(III)V +HSPLandroidx/compose/runtime/ComposerImpl;->recordUsed(Landroidx/compose/runtime/RecomposeScope;)V +HSPLandroidx/compose/runtime/ComposerImpl;->registerInsertUpFixup()V +HSPLandroidx/compose/runtime/ComposerImpl;->rememberedValue()Ljava/lang/Object; +HSPLandroidx/compose/runtime/ComposerImpl;->reportAllMovableContent()V +HSPLandroidx/compose/runtime/ComposerImpl;->reportFreeMovableContent$reportGroup(Landroidx/compose/runtime/ComposerImpl;IZI)I +HSPLandroidx/compose/runtime/ComposerImpl;->reportFreeMovableContent(I)V +HSPLandroidx/compose/runtime/ComposerImpl;->skipCurrentGroup()V +HSPLandroidx/compose/runtime/ComposerImpl;->skipGroup()V +HSPLandroidx/compose/runtime/ComposerImpl;->skipReaderToGroupEnd()V +HSPLandroidx/compose/runtime/ComposerImpl;->skipToGroupEnd()V +HSPLandroidx/compose/runtime/ComposerImpl;->sourceInformation(Ljava/lang/String;)V +HSPLandroidx/compose/runtime/ComposerImpl;->sourceInformationMarkerEnd()V +HSPLandroidx/compose/runtime/ComposerImpl;->sourceInformationMarkerStart(ILjava/lang/String;)V +HSPLandroidx/compose/runtime/ComposerImpl;->start-BaiHCIY(ILjava/lang/Object;ILjava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl;->startDefaults()V +HSPLandroidx/compose/runtime/ComposerImpl;->startGroup(I)V +HSPLandroidx/compose/runtime/ComposerImpl;->startGroup(ILjava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl;->startMovableGroup(ILjava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl;->startNode()V +HSPLandroidx/compose/runtime/ComposerImpl;->startProviders([Landroidx/compose/runtime/ProvidedValue;)V +HSPLandroidx/compose/runtime/ComposerImpl;->startReaderGroup(ZLjava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl;->startReplaceableGroup(I)V +HSPLandroidx/compose/runtime/ComposerImpl;->startRestartGroup(I)Landroidx/compose/runtime/Composer; +HSPLandroidx/compose/runtime/ComposerImpl;->startReusableGroup(ILjava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl;->startReusableNode()V +HSPLandroidx/compose/runtime/ComposerImpl;->startRoot()V +HSPLandroidx/compose/runtime/ComposerImpl;->tryImminentInvalidation$runtime_release(Landroidx/compose/runtime/RecomposeScopeImpl;Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/ComposerImpl;->updateCompoundKeyWhenWeEnterGroup(ILjava/lang/Object;Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl;->updateCompoundKeyWhenWeEnterGroupKeyHash(I)V +HSPLandroidx/compose/runtime/ComposerImpl;->updateCompoundKeyWhenWeExitGroup(ILjava/lang/Object;Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl;->updateCompoundKeyWhenWeExitGroupKeyHash(I)V +HSPLandroidx/compose/runtime/ComposerImpl;->updateNodeCount(II)V +HSPLandroidx/compose/runtime/ComposerImpl;->updateNodeCountOverrides(II)V +HSPLandroidx/compose/runtime/ComposerImpl;->updateProviderMapGroup(Landroidx/compose/runtime/PersistentCompositionLocalMap;Landroidx/compose/runtime/PersistentCompositionLocalMap;)Landroidx/compose/runtime/PersistentCompositionLocalMap; +HSPLandroidx/compose/runtime/ComposerImpl;->updateRememberedValue(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl;->updateValue(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl;->updatedNodeCount(I)I +HSPLandroidx/compose/runtime/ComposerImpl;->useNode()V +HSPLandroidx/compose/runtime/ComposerImpl;->validateNodeExpected()V +HSPLandroidx/compose/runtime/ComposerImpl;->validateNodeNotExpected()V +Landroidx/compose/runtime/ComposerImpl$CompositionContextHolder; +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextHolder;->(Landroidx/compose/runtime/ComposerImpl$CompositionContextImpl;)V +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextHolder;->getRef()Landroidx/compose/runtime/ComposerImpl$CompositionContextImpl; +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextHolder;->onForgotten()V +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextHolder;->onRemembered()V +Landroidx/compose/runtime/ComposerImpl$CompositionContextImpl; +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->(Landroidx/compose/runtime/ComposerImpl;IZ)V +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->composeInitial$runtime_release(Landroidx/compose/runtime/ControlledComposition;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->dispose()V +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->doneComposing$runtime_release()V +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->getCollectingParameterInformation$runtime_release()Z +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->getComposers()Ljava/util/Set; +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->getCompositionLocalScope$runtime_release()Landroidx/compose/runtime/PersistentCompositionLocalMap; +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->getCompositionLocalScope()Landroidx/compose/runtime/PersistentCompositionLocalMap; +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->getCompoundHashKey$runtime_release()I +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->getEffectCoroutineContext()Lkotlin/coroutines/CoroutineContext; +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->invalidate$runtime_release(Landroidx/compose/runtime/ControlledComposition;)V +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->registerComposer$runtime_release(Landroidx/compose/runtime/Composer;)V +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->setCompositionLocalScope(Landroidx/compose/runtime/PersistentCompositionLocalMap;)V +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->startComposing$runtime_release()V +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->unregisterComposer$runtime_release(Landroidx/compose/runtime/Composer;)V +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->unregisterComposition$runtime_release(Landroidx/compose/runtime/ControlledComposition;)V +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->updateCompositionLocalScope(Landroidx/compose/runtime/PersistentCompositionLocalMap;)V +Landroidx/compose/runtime/ComposerImpl$apply$operation$1; +HSPLandroidx/compose/runtime/ComposerImpl$apply$operation$1;->(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl$apply$operation$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$apply$operation$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$createNode$2; +HSPLandroidx/compose/runtime/ComposerImpl$createNode$2;->(Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Anchor;I)V +HSPLandroidx/compose/runtime/ComposerImpl$createNode$2;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$createNode$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$createNode$3; +HSPLandroidx/compose/runtime/ComposerImpl$createNode$3;->(Landroidx/compose/runtime/Anchor;I)V +HSPLandroidx/compose/runtime/ComposerImpl$createNode$3;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$createNode$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$2; +HSPLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$2;->(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$2;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$3; +HSPLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$3;->(Landroidx/compose/runtime/ComposerImpl;I)V +HSPLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$3;->invoke(ILjava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$3$1; +HSPLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$3$1;->(Ljava/lang/Object;I)V +HSPLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$3$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$3$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$3$2; +HSPLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$3$2;->(Ljava/lang/Object;I)V +HSPLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$3$2;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$3$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$derivedStateObserver$1; +HSPLandroidx/compose/runtime/ComposerImpl$derivedStateObserver$1;->(Landroidx/compose/runtime/ComposerImpl;)V +HSPLandroidx/compose/runtime/ComposerImpl$derivedStateObserver$1;->done(Landroidx/compose/runtime/DerivedState;)V +HSPLandroidx/compose/runtime/ComposerImpl$derivedStateObserver$1;->start(Landroidx/compose/runtime/DerivedState;)V +Landroidx/compose/runtime/ComposerImpl$doCompose$lambda$38$$inlined$sortBy$1; +HSPLandroidx/compose/runtime/ComposerImpl$doCompose$lambda$38$$inlined$sortBy$1;->()V +HSPLandroidx/compose/runtime/ComposerImpl$doCompose$lambda$38$$inlined$sortBy$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +Landroidx/compose/runtime/ComposerImpl$endRestartGroup$1$1; +HSPLandroidx/compose/runtime/ComposerImpl$endRestartGroup$1$1;->(Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/ComposerImpl;)V +HSPLandroidx/compose/runtime/ComposerImpl$endRestartGroup$1$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$endRestartGroup$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$realizeDowns$1; +HSPLandroidx/compose/runtime/ComposerImpl$realizeDowns$1;->([Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl$realizeDowns$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$realizeDowns$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$realizeMovement$1; +HSPLandroidx/compose/runtime/ComposerImpl$realizeMovement$1;->(II)V +HSPLandroidx/compose/runtime/ComposerImpl$realizeMovement$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$realizeMovement$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$realizeMovement$2; +Landroidx/compose/runtime/ComposerImpl$realizeOperationLocation$2; +HSPLandroidx/compose/runtime/ComposerImpl$realizeOperationLocation$2;->(I)V +HSPLandroidx/compose/runtime/ComposerImpl$realizeOperationLocation$2;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$realizeOperationLocation$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$realizeUps$1; +HSPLandroidx/compose/runtime/ComposerImpl$realizeUps$1;->(I)V +HSPLandroidx/compose/runtime/ComposerImpl$realizeUps$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$realizeUps$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$recordInsert$1; +HSPLandroidx/compose/runtime/ComposerImpl$recordInsert$1;->(Landroidx/compose/runtime/SlotTable;Landroidx/compose/runtime/Anchor;)V +HSPLandroidx/compose/runtime/ComposerImpl$recordInsert$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$recordInsert$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$recordInsert$2; +HSPLandroidx/compose/runtime/ComposerImpl$recordInsert$2;->(Landroidx/compose/runtime/SlotTable;Landroidx/compose/runtime/Anchor;Ljava/util/List;)V +HSPLandroidx/compose/runtime/ComposerImpl$recordInsert$2;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$recordInsert$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$recordSideEffect$1; +HSPLandroidx/compose/runtime/ComposerImpl$recordSideEffect$1;->(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/runtime/ComposerImpl$recordSideEffect$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$recordSideEffect$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$recordSlotEditing$1; +HSPLandroidx/compose/runtime/ComposerImpl$recordSlotEditing$1;->(Landroidx/compose/runtime/Anchor;)V +HSPLandroidx/compose/runtime/ComposerImpl$recordSlotEditing$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$recordSlotEditing$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$start$2; +HSPLandroidx/compose/runtime/ComposerImpl$start$2;->(I)V +HSPLandroidx/compose/runtime/ComposerImpl$start$2;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$start$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$startProviders$currentProviders$1; +HSPLandroidx/compose/runtime/ComposerImpl$startProviders$currentProviders$1;->([Landroidx/compose/runtime/ProvidedValue;Landroidx/compose/runtime/PersistentCompositionLocalMap;)V +HSPLandroidx/compose/runtime/ComposerImpl$startProviders$currentProviders$1;->invoke(Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/PersistentCompositionLocalMap; +HSPLandroidx/compose/runtime/ComposerImpl$startProviders$currentProviders$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$startReaderGroup$1; +PLandroidx/compose/runtime/ComposerImpl$startReaderGroup$1;->(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl$startReaderGroup$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$startReaderGroup$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$updateValue$1; +HSPLandroidx/compose/runtime/ComposerImpl$updateValue$1;->(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl$updateValue$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$updateValue$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$updateValue$2; +HSPLandroidx/compose/runtime/ComposerImpl$updateValue$2;->(Ljava/lang/Object;I)V +HSPLandroidx/compose/runtime/ComposerImpl$updateValue$2;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$updateValue$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerKt; +HSPLandroidx/compose/runtime/ComposerKt;->()V +HSPLandroidx/compose/runtime/ComposerKt;->access$asBool(I)Z +HSPLandroidx/compose/runtime/ComposerKt;->access$asInt(Z)I +HSPLandroidx/compose/runtime/ComposerKt;->access$firstInRange(Ljava/util/List;II)Landroidx/compose/runtime/Invalidation; +HSPLandroidx/compose/runtime/ComposerKt;->access$getEndGroupInstance$p()Lkotlin/jvm/functions/Function3; +HSPLandroidx/compose/runtime/ComposerKt;->access$getJoinedKey(Landroidx/compose/runtime/KeyInfo;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/ComposerKt;->access$getRemoveCurrentGroupInstance$p()Lkotlin/jvm/functions/Function3; +HSPLandroidx/compose/runtime/ComposerKt;->access$getStartRootGroup$p()Lkotlin/jvm/functions/Function3; +HSPLandroidx/compose/runtime/ComposerKt;->access$insertIfMissing(Ljava/util/List;ILandroidx/compose/runtime/RecomposeScopeImpl;Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerKt;->access$multiMap()Ljava/util/HashMap; +HSPLandroidx/compose/runtime/ComposerKt;->access$nearestCommonRootOf(Landroidx/compose/runtime/SlotReader;III)I +HSPLandroidx/compose/runtime/ComposerKt;->access$pop(Ljava/util/HashMap;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/ComposerKt;->access$put(Ljava/util/HashMap;Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/ComposerKt;->access$removeLocation(Ljava/util/List;I)Landroidx/compose/runtime/Invalidation; +HSPLandroidx/compose/runtime/ComposerKt;->access$removeRange(Ljava/util/List;II)V +HSPLandroidx/compose/runtime/ComposerKt;->asBool(I)Z +HSPLandroidx/compose/runtime/ComposerKt;->asInt(Z)I +HSPLandroidx/compose/runtime/ComposerKt;->distanceFrom(Landroidx/compose/runtime/SlotReader;II)I +HSPLandroidx/compose/runtime/ComposerKt;->findInsertLocation(Ljava/util/List;I)I +HSPLandroidx/compose/runtime/ComposerKt;->findLocation(Ljava/util/List;I)I +HSPLandroidx/compose/runtime/ComposerKt;->firstInRange(Ljava/util/List;II)Landroidx/compose/runtime/Invalidation; +HSPLandroidx/compose/runtime/ComposerKt;->getCompositionLocalMap()Ljava/lang/Object; +HSPLandroidx/compose/runtime/ComposerKt;->getInvocation()Ljava/lang/Object; +HSPLandroidx/compose/runtime/ComposerKt;->getJoinedKey(Landroidx/compose/runtime/KeyInfo;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/ComposerKt;->getProvider()Ljava/lang/Object; +HSPLandroidx/compose/runtime/ComposerKt;->getProviderMaps()Ljava/lang/Object; +HSPLandroidx/compose/runtime/ComposerKt;->getProviderValues()Ljava/lang/Object; +HSPLandroidx/compose/runtime/ComposerKt;->getReference()Ljava/lang/Object; +HSPLandroidx/compose/runtime/ComposerKt;->insertIfMissing(Ljava/util/List;ILandroidx/compose/runtime/RecomposeScopeImpl;Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerKt;->isTraceInProgress()Z +HSPLandroidx/compose/runtime/ComposerKt;->multiMap()Ljava/util/HashMap; +HSPLandroidx/compose/runtime/ComposerKt;->nearestCommonRootOf(Landroidx/compose/runtime/SlotReader;III)I +HSPLandroidx/compose/runtime/ComposerKt;->pop(Ljava/util/HashMap;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/ComposerKt;->put(Ljava/util/HashMap;Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/ComposerKt;->remove(Ljava/util/HashMap;Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Unit; +HSPLandroidx/compose/runtime/ComposerKt;->removeCurrentGroup(Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerKt;->removeLocation(Ljava/util/List;I)Landroidx/compose/runtime/Invalidation; +HSPLandroidx/compose/runtime/ComposerKt;->removeRange(Ljava/util/List;II)V +HSPLandroidx/compose/runtime/ComposerKt;->runtimeCheck(Z)V +HSPLandroidx/compose/runtime/ComposerKt;->sourceInformation(Landroidx/compose/runtime/Composer;Ljava/lang/String;)V +HSPLandroidx/compose/runtime/ComposerKt;->sourceInformationMarkerEnd(Landroidx/compose/runtime/Composer;)V +HSPLandroidx/compose/runtime/ComposerKt;->sourceInformationMarkerStart(Landroidx/compose/runtime/Composer;ILjava/lang/String;)V +Landroidx/compose/runtime/ComposerKt$endGroupInstance$1; +HSPLandroidx/compose/runtime/ComposerKt$endGroupInstance$1;->()V +HSPLandroidx/compose/runtime/ComposerKt$endGroupInstance$1;->()V +HSPLandroidx/compose/runtime/ComposerKt$endGroupInstance$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerKt$endGroupInstance$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerKt$removeCurrentGroupInstance$1; +HSPLandroidx/compose/runtime/ComposerKt$removeCurrentGroupInstance$1;->()V +HSPLandroidx/compose/runtime/ComposerKt$removeCurrentGroupInstance$1;->()V +HSPLandroidx/compose/runtime/ComposerKt$removeCurrentGroupInstance$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerKt$removeCurrentGroupInstance$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerKt$resetSlotsInstance$1; +HSPLandroidx/compose/runtime/ComposerKt$resetSlotsInstance$1;->()V +HSPLandroidx/compose/runtime/ComposerKt$resetSlotsInstance$1;->()V +Landroidx/compose/runtime/ComposerKt$skipToGroupEndInstance$1; +HSPLandroidx/compose/runtime/ComposerKt$skipToGroupEndInstance$1;->()V +HSPLandroidx/compose/runtime/ComposerKt$skipToGroupEndInstance$1;->()V +Landroidx/compose/runtime/ComposerKt$startRootGroup$1; +HSPLandroidx/compose/runtime/ComposerKt$startRootGroup$1;->()V +HSPLandroidx/compose/runtime/ComposerKt$startRootGroup$1;->()V +HSPLandroidx/compose/runtime/ComposerKt$startRootGroup$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerKt$startRootGroup$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/Composition; +Landroidx/compose/runtime/CompositionContext; +HSPLandroidx/compose/runtime/CompositionContext;->()V +HSPLandroidx/compose/runtime/CompositionContext;->()V +HSPLandroidx/compose/runtime/CompositionContext;->doneComposing$runtime_release()V +HSPLandroidx/compose/runtime/CompositionContext;->getCompositionLocalScope$runtime_release()Landroidx/compose/runtime/PersistentCompositionLocalMap; +HSPLandroidx/compose/runtime/CompositionContext;->registerComposer$runtime_release(Landroidx/compose/runtime/Composer;)V +HSPLandroidx/compose/runtime/CompositionContext;->startComposing$runtime_release()V +Landroidx/compose/runtime/CompositionContextKt; +HSPLandroidx/compose/runtime/CompositionContextKt;->()V +HSPLandroidx/compose/runtime/CompositionContextKt;->access$getEmptyPersistentCompositionLocalMap$p()Landroidx/compose/runtime/PersistentCompositionLocalMap; +Landroidx/compose/runtime/CompositionImpl; +HSPLandroidx/compose/runtime/CompositionImpl;->(Landroidx/compose/runtime/CompositionContext;Landroidx/compose/runtime/Applier;Lkotlin/coroutines/CoroutineContext;)V +HSPLandroidx/compose/runtime/CompositionImpl;->(Landroidx/compose/runtime/CompositionContext;Landroidx/compose/runtime/Applier;Lkotlin/coroutines/CoroutineContext;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/CompositionImpl;->addPendingInvalidationsLocked(Ljava/util/HashSet;Ljava/lang/Object;Z)Ljava/util/HashSet; +HSPLandroidx/compose/runtime/CompositionImpl;->addPendingInvalidationsLocked(Ljava/util/Set;Z)V +HSPLandroidx/compose/runtime/CompositionImpl;->applyChanges()V +HSPLandroidx/compose/runtime/CompositionImpl;->applyChangesInLocked(Ljava/util/List;)V +HSPLandroidx/compose/runtime/CompositionImpl;->applyLateChanges()V +HSPLandroidx/compose/runtime/CompositionImpl;->changesApplied()V +HSPLandroidx/compose/runtime/CompositionImpl;->cleanUpDerivedStateObservations()V +HSPLandroidx/compose/runtime/CompositionImpl;->composeContent(Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/runtime/CompositionImpl;->dispose()V +HSPLandroidx/compose/runtime/CompositionImpl;->drainPendingModificationsForCompositionLocked()V +HSPLandroidx/compose/runtime/CompositionImpl;->drainPendingModificationsLocked()V +HSPLandroidx/compose/runtime/CompositionImpl;->getAreChildrenComposing()Z +HSPLandroidx/compose/runtime/CompositionImpl;->getHasInvalidations()Z +HSPLandroidx/compose/runtime/CompositionImpl;->invalidate(Landroidx/compose/runtime/RecomposeScopeImpl;Ljava/lang/Object;)Landroidx/compose/runtime/InvalidationResult; +HSPLandroidx/compose/runtime/CompositionImpl;->invalidateChecked(Landroidx/compose/runtime/RecomposeScopeImpl;Landroidx/compose/runtime/Anchor;Ljava/lang/Object;)Landroidx/compose/runtime/InvalidationResult; +HSPLandroidx/compose/runtime/CompositionImpl;->invalidateScopeOfLocked(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/CompositionImpl;->isComposing()Z +HSPLandroidx/compose/runtime/CompositionImpl;->isDisposed()Z +HSPLandroidx/compose/runtime/CompositionImpl;->observesAnyOf(Ljava/util/Set;)Z +HSPLandroidx/compose/runtime/CompositionImpl;->prepareCompose(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/runtime/CompositionImpl;->recompose()Z +HSPLandroidx/compose/runtime/CompositionImpl;->recomposeScopeReleased(Landroidx/compose/runtime/RecomposeScopeImpl;)V +HSPLandroidx/compose/runtime/CompositionImpl;->recordModificationsOf(Ljava/util/Set;)V +HSPLandroidx/compose/runtime/CompositionImpl;->recordReadOf(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/CompositionImpl;->recordWriteOf(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/CompositionImpl;->removeDerivedStateObservation$runtime_release(Landroidx/compose/runtime/DerivedState;)V +HSPLandroidx/compose/runtime/CompositionImpl;->removeObservation$runtime_release(Ljava/lang/Object;Landroidx/compose/runtime/RecomposeScopeImpl;)V +HSPLandroidx/compose/runtime/CompositionImpl;->setContent(Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/runtime/CompositionImpl;->takeInvalidations()Landroidx/compose/runtime/collection/IdentityArrayMap; +HSPLandroidx/compose/runtime/CompositionImpl;->tryImminentInvalidation(Landroidx/compose/runtime/RecomposeScopeImpl;Ljava/lang/Object;)Z +Landroidx/compose/runtime/CompositionImpl$RememberEventDispatcher; +HSPLandroidx/compose/runtime/CompositionImpl$RememberEventDispatcher;->(Ljava/util/Set;)V +HSPLandroidx/compose/runtime/CompositionImpl$RememberEventDispatcher;->deactivating(Landroidx/compose/runtime/ComposeNodeLifecycleCallback;)V +HSPLandroidx/compose/runtime/CompositionImpl$RememberEventDispatcher;->dispatchAbandons()V +HSPLandroidx/compose/runtime/CompositionImpl$RememberEventDispatcher;->dispatchRememberObservers()V +HSPLandroidx/compose/runtime/CompositionImpl$RememberEventDispatcher;->dispatchSideEffects()V +HSPLandroidx/compose/runtime/CompositionImpl$RememberEventDispatcher;->forgetting(Landroidx/compose/runtime/RememberObserver;)V +HSPLandroidx/compose/runtime/CompositionImpl$RememberEventDispatcher;->releasing(Landroidx/compose/runtime/ComposeNodeLifecycleCallback;)V +HSPLandroidx/compose/runtime/CompositionImpl$RememberEventDispatcher;->remembering(Landroidx/compose/runtime/RememberObserver;)V +HSPLandroidx/compose/runtime/CompositionImpl$RememberEventDispatcher;->sideEffect(Lkotlin/jvm/functions/Function0;)V +Landroidx/compose/runtime/CompositionKt; +HSPLandroidx/compose/runtime/CompositionKt;->()V +HSPLandroidx/compose/runtime/CompositionKt;->Composition(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/CompositionContext;)Landroidx/compose/runtime/Composition; +HSPLandroidx/compose/runtime/CompositionKt;->access$addValue(Landroidx/compose/runtime/collection/IdentityArrayMap;Ljava/lang/Object;Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/CompositionKt;->access$getPendingApplyNoModifications$p()Ljava/lang/Object; +HSPLandroidx/compose/runtime/CompositionKt;->addValue(Landroidx/compose/runtime/collection/IdentityArrayMap;Ljava/lang/Object;Ljava/lang/Object;)V +Landroidx/compose/runtime/CompositionLocal; +HSPLandroidx/compose/runtime/CompositionLocal;->()V +HSPLandroidx/compose/runtime/CompositionLocal;->(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/runtime/CompositionLocal;->(Lkotlin/jvm/functions/Function0;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/CompositionLocal;->getDefaultValueHolder$runtime_release()Landroidx/compose/runtime/LazyValueHolder; +Landroidx/compose/runtime/CompositionLocalKt; +HSPLandroidx/compose/runtime/CompositionLocalKt;->CompositionLocalProvider([Landroidx/compose/runtime/ProvidedValue;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/runtime/CompositionLocalKt;->compositionLocalOf$default(Landroidx/compose/runtime/SnapshotMutationPolicy;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/runtime/CompositionLocalKt;->compositionLocalOf(Landroidx/compose/runtime/SnapshotMutationPolicy;Lkotlin/jvm/functions/Function0;)Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/runtime/CompositionLocalKt;->staticCompositionLocalOf(Lkotlin/jvm/functions/Function0;)Landroidx/compose/runtime/ProvidableCompositionLocal; +Landroidx/compose/runtime/CompositionLocalMap; +HSPLandroidx/compose/runtime/CompositionLocalMap;->()V +Landroidx/compose/runtime/CompositionLocalMap$Companion; +HSPLandroidx/compose/runtime/CompositionLocalMap$Companion;->()V +HSPLandroidx/compose/runtime/CompositionLocalMap$Companion;->()V +HSPLandroidx/compose/runtime/CompositionLocalMap$Companion;->getEmpty()Landroidx/compose/runtime/CompositionLocalMap; +Landroidx/compose/runtime/CompositionLocalMapKt; +HSPLandroidx/compose/runtime/CompositionLocalMapKt;->compositionLocalMapOf([Landroidx/compose/runtime/ProvidedValue;Landroidx/compose/runtime/PersistentCompositionLocalMap;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/PersistentCompositionLocalMap; +HSPLandroidx/compose/runtime/CompositionLocalMapKt;->contains(Landroidx/compose/runtime/PersistentCompositionLocalMap;Landroidx/compose/runtime/CompositionLocal;)Z +HSPLandroidx/compose/runtime/CompositionLocalMapKt;->getValueOf(Landroidx/compose/runtime/PersistentCompositionLocalMap;Landroidx/compose/runtime/CompositionLocal;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/CompositionLocalMapKt;->read(Landroidx/compose/runtime/PersistentCompositionLocalMap;Landroidx/compose/runtime/CompositionLocal;)Ljava/lang/Object; +Landroidx/compose/runtime/CompositionScopedCoroutineScopeCanceller; +HSPLandroidx/compose/runtime/CompositionScopedCoroutineScopeCanceller;->(Lkotlinx/coroutines/CoroutineScope;)V +HSPLandroidx/compose/runtime/CompositionScopedCoroutineScopeCanceller;->getCoroutineScope()Lkotlinx/coroutines/CoroutineScope; +HSPLandroidx/compose/runtime/CompositionScopedCoroutineScopeCanceller;->onForgotten()V +HSPLandroidx/compose/runtime/CompositionScopedCoroutineScopeCanceller;->onRemembered()V +Landroidx/compose/runtime/CompositionTracer; +Landroidx/compose/runtime/ControlledComposition; +Landroidx/compose/runtime/DerivedSnapshotState; +HSPLandroidx/compose/runtime/DerivedSnapshotState;->(Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/SnapshotMutationPolicy;)V +HSPLandroidx/compose/runtime/DerivedSnapshotState;->current(Landroidx/compose/runtime/snapshots/Snapshot;)Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/DerivedSnapshotState;->currentRecord(Landroidx/compose/runtime/DerivedSnapshotState$ResultRecord;Landroidx/compose/runtime/snapshots/Snapshot;ZLkotlin/jvm/functions/Function0;)Landroidx/compose/runtime/DerivedSnapshotState$ResultRecord; +HSPLandroidx/compose/runtime/DerivedSnapshotState;->getCurrentRecord()Landroidx/compose/runtime/DerivedState$Record; +HSPLandroidx/compose/runtime/DerivedSnapshotState;->getFirstStateRecord()Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/DerivedSnapshotState;->getPolicy()Landroidx/compose/runtime/SnapshotMutationPolicy; +HSPLandroidx/compose/runtime/DerivedSnapshotState;->getValue()Ljava/lang/Object; +HSPLandroidx/compose/runtime/DerivedSnapshotState;->prependStateRecord(Landroidx/compose/runtime/snapshots/StateRecord;)V +Landroidx/compose/runtime/DerivedSnapshotState$ResultRecord; +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->()V +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->()V +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->access$getUnset$cp()Ljava/lang/Object; +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->assign(Landroidx/compose/runtime/snapshots/StateRecord;)V +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->create()Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->getCurrentValue()Ljava/lang/Object; +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->getDependencies()[Ljava/lang/Object; +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->getResult()Ljava/lang/Object; +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->get_dependencies()Landroidx/compose/runtime/collection/IdentityArrayMap; +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->isValid(Landroidx/compose/runtime/DerivedState;Landroidx/compose/runtime/snapshots/Snapshot;)Z +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->readableHash(Landroidx/compose/runtime/DerivedState;Landroidx/compose/runtime/snapshots/Snapshot;)I +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->setResult(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->setResultHash(I)V +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->setValidSnapshotId(I)V +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->setValidSnapshotWriteCount(I)V +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->set_dependencies(Landroidx/compose/runtime/collection/IdentityArrayMap;)V +Landroidx/compose/runtime/DerivedSnapshotState$ResultRecord$Companion; +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord$Companion;->()V +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord$Companion;->getUnset()Ljava/lang/Object; +Landroidx/compose/runtime/DerivedSnapshotState$currentRecord$result$1$result$1; +HSPLandroidx/compose/runtime/DerivedSnapshotState$currentRecord$result$1$result$1;->(Landroidx/compose/runtime/DerivedSnapshotState;Landroidx/compose/runtime/collection/IdentityArrayMap;I)V +HSPLandroidx/compose/runtime/DerivedSnapshotState$currentRecord$result$1$result$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/DerivedSnapshotState$currentRecord$result$1$result$1;->invoke(Ljava/lang/Object;)V +Landroidx/compose/runtime/DerivedState; +Landroidx/compose/runtime/DerivedState$Record; +Landroidx/compose/runtime/DerivedStateObserver; +Landroidx/compose/runtime/DisposableEffectImpl; +HSPLandroidx/compose/runtime/DisposableEffectImpl;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/runtime/DisposableEffectImpl;->onForgotten()V +HSPLandroidx/compose/runtime/DisposableEffectImpl;->onRemembered()V +Landroidx/compose/runtime/DisposableEffectResult; +Landroidx/compose/runtime/DisposableEffectScope; +HSPLandroidx/compose/runtime/DisposableEffectScope;->()V +HSPLandroidx/compose/runtime/DisposableEffectScope;->()V +Landroidx/compose/runtime/DynamicProvidableCompositionLocal; +HSPLandroidx/compose/runtime/DynamicProvidableCompositionLocal;->(Landroidx/compose/runtime/SnapshotMutationPolicy;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/runtime/DynamicProvidableCompositionLocal;->access$getPolicy$p(Landroidx/compose/runtime/DynamicProvidableCompositionLocal;)Landroidx/compose/runtime/SnapshotMutationPolicy; +HSPLandroidx/compose/runtime/DynamicProvidableCompositionLocal;->provided$runtime_release(Ljava/lang/Object;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +Landroidx/compose/runtime/EffectsKt; +HSPLandroidx/compose/runtime/EffectsKt;->()V +HSPLandroidx/compose/runtime/EffectsKt;->DisposableEffect(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/runtime/EffectsKt;->DisposableEffect(Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/runtime/EffectsKt;->DisposableEffect(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/runtime/EffectsKt;->LaunchedEffect(Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/runtime/EffectsKt;->LaunchedEffect(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/runtime/EffectsKt;->LaunchedEffect([Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/runtime/EffectsKt;->SideEffect(Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/runtime/EffectsKt;->access$getInternalDisposableEffectScope$p()Landroidx/compose/runtime/DisposableEffectScope; +HSPLandroidx/compose/runtime/EffectsKt;->createCompositionCoroutineScope(Lkotlin/coroutines/CoroutineContext;Landroidx/compose/runtime/Composer;)Lkotlinx/coroutines/CoroutineScope; +Landroidx/compose/runtime/FloatState; +Landroidx/compose/runtime/GroupInfo; +HSPLandroidx/compose/runtime/GroupInfo;->(III)V +HSPLandroidx/compose/runtime/GroupInfo;->getNodeCount()I +HSPLandroidx/compose/runtime/GroupInfo;->getNodeIndex()I +HSPLandroidx/compose/runtime/GroupInfo;->getSlotIndex()I +HSPLandroidx/compose/runtime/GroupInfo;->setNodeCount(I)V +HSPLandroidx/compose/runtime/GroupInfo;->setNodeIndex(I)V +HSPLandroidx/compose/runtime/GroupInfo;->setSlotIndex(I)V +Landroidx/compose/runtime/GroupKind; +HSPLandroidx/compose/runtime/GroupKind;->()V +HSPLandroidx/compose/runtime/GroupKind;->access$getGroup$cp()I +HSPLandroidx/compose/runtime/GroupKind;->access$getNode$cp()I +HSPLandroidx/compose/runtime/GroupKind;->access$getReusableNode$cp()I +HSPLandroidx/compose/runtime/GroupKind;->constructor-impl(I)I +Landroidx/compose/runtime/GroupKind$Companion; +HSPLandroidx/compose/runtime/GroupKind$Companion;->()V +HSPLandroidx/compose/runtime/GroupKind$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/GroupKind$Companion;->getGroup-ULZAiWs()I +HSPLandroidx/compose/runtime/GroupKind$Companion;->getNode-ULZAiWs()I +HSPLandroidx/compose/runtime/GroupKind$Companion;->getReusableNode-ULZAiWs()I +Landroidx/compose/runtime/IntStack; +HSPLandroidx/compose/runtime/IntStack;->()V +HSPLandroidx/compose/runtime/IntStack;->clear()V +HSPLandroidx/compose/runtime/IntStack;->getSize()I +HSPLandroidx/compose/runtime/IntStack;->isEmpty()Z +HSPLandroidx/compose/runtime/IntStack;->peek()I +HSPLandroidx/compose/runtime/IntStack;->peekOr(I)I +HSPLandroidx/compose/runtime/IntStack;->pop()I +HSPLandroidx/compose/runtime/IntStack;->push(I)V +Landroidx/compose/runtime/IntState; +Landroidx/compose/runtime/Invalidation; +HSPLandroidx/compose/runtime/Invalidation;->(Landroidx/compose/runtime/RecomposeScopeImpl;ILandroidx/compose/runtime/collection/IdentityArraySet;)V +HSPLandroidx/compose/runtime/Invalidation;->getInstances()Landroidx/compose/runtime/collection/IdentityArraySet; +HSPLandroidx/compose/runtime/Invalidation;->getLocation()I +HSPLandroidx/compose/runtime/Invalidation;->getScope()Landroidx/compose/runtime/RecomposeScopeImpl; +HSPLandroidx/compose/runtime/Invalidation;->isInvalid()Z +HSPLandroidx/compose/runtime/Invalidation;->setInstances(Landroidx/compose/runtime/collection/IdentityArraySet;)V +Landroidx/compose/runtime/InvalidationResult; +HSPLandroidx/compose/runtime/InvalidationResult;->$values()[Landroidx/compose/runtime/InvalidationResult; +HSPLandroidx/compose/runtime/InvalidationResult;->()V +HSPLandroidx/compose/runtime/InvalidationResult;->(Ljava/lang/String;I)V +Landroidx/compose/runtime/JoinedKey; +HSPLandroidx/compose/runtime/JoinedKey;->(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/JoinedKey;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/JoinedKey;->hashCode()I +HSPLandroidx/compose/runtime/JoinedKey;->hashCodeOf(Ljava/lang/Object;)I +Landroidx/compose/runtime/KeyInfo; +HSPLandroidx/compose/runtime/KeyInfo;->(ILjava/lang/Object;III)V +HSPLandroidx/compose/runtime/KeyInfo;->getKey()I +HSPLandroidx/compose/runtime/KeyInfo;->getLocation()I +HSPLandroidx/compose/runtime/KeyInfo;->getNodes()I +HSPLandroidx/compose/runtime/KeyInfo;->getObjectKey()Ljava/lang/Object; +Landroidx/compose/runtime/Latch; +HSPLandroidx/compose/runtime/Latch;->()V +HSPLandroidx/compose/runtime/Latch;->await(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Latch;->closeLatch()V +HSPLandroidx/compose/runtime/Latch;->isOpen()Z +HSPLandroidx/compose/runtime/Latch;->openLatch()V +Landroidx/compose/runtime/LaunchedEffectImpl; +HSPLandroidx/compose/runtime/LaunchedEffectImpl;->(Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/runtime/LaunchedEffectImpl;->onForgotten()V +HSPLandroidx/compose/runtime/LaunchedEffectImpl;->onRemembered()V +Landroidx/compose/runtime/LazyValueHolder; +HSPLandroidx/compose/runtime/LazyValueHolder;->(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/runtime/LazyValueHolder;->getCurrent()Ljava/lang/Object; +HSPLandroidx/compose/runtime/LazyValueHolder;->getValue()Ljava/lang/Object; +Landroidx/compose/runtime/LeftCompositionCancellationException; +HSPLandroidx/compose/runtime/LeftCompositionCancellationException;->()V +HSPLandroidx/compose/runtime/LeftCompositionCancellationException;->fillInStackTrace()Ljava/lang/Throwable; +Landroidx/compose/runtime/LongState; +Landroidx/compose/runtime/MonotonicFrameClock; +HSPLandroidx/compose/runtime/MonotonicFrameClock;->()V +HSPLandroidx/compose/runtime/MonotonicFrameClock;->getKey()Lkotlin/coroutines/CoroutineContext$Key; +Landroidx/compose/runtime/MonotonicFrameClock$DefaultImpls; +HSPLandroidx/compose/runtime/MonotonicFrameClock$DefaultImpls;->fold(Landroidx/compose/runtime/MonotonicFrameClock;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/MonotonicFrameClock$DefaultImpls;->get(Landroidx/compose/runtime/MonotonicFrameClock;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLandroidx/compose/runtime/MonotonicFrameClock$DefaultImpls;->minusKey(Landroidx/compose/runtime/MonotonicFrameClock;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext; +Landroidx/compose/runtime/MonotonicFrameClock$Key; +HSPLandroidx/compose/runtime/MonotonicFrameClock$Key;->()V +HSPLandroidx/compose/runtime/MonotonicFrameClock$Key;->()V +Landroidx/compose/runtime/MonotonicFrameClockKt; +HSPLandroidx/compose/runtime/MonotonicFrameClockKt;->getMonotonicFrameClock(Lkotlin/coroutines/CoroutineContext;)Landroidx/compose/runtime/MonotonicFrameClock; +HSPLandroidx/compose/runtime/MonotonicFrameClockKt;->withFrameNanos(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/runtime/MovableContent; +Landroidx/compose/runtime/MutableFloatState; +Landroidx/compose/runtime/MutableIntState; +Landroidx/compose/runtime/MutableLongState; +Landroidx/compose/runtime/MutableState; +Landroidx/compose/runtime/NeverEqualPolicy; +HSPLandroidx/compose/runtime/NeverEqualPolicy;->()V +HSPLandroidx/compose/runtime/NeverEqualPolicy;->()V +HSPLandroidx/compose/runtime/NeverEqualPolicy;->equivalent(Ljava/lang/Object;Ljava/lang/Object;)Z +Landroidx/compose/runtime/OpaqueKey; +HSPLandroidx/compose/runtime/OpaqueKey;->(Ljava/lang/String;)V +HSPLandroidx/compose/runtime/OpaqueKey;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/OpaqueKey;->hashCode()I +Landroidx/compose/runtime/ParcelableSnapshotMutableFloatState; +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableFloatState;->()V +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableFloatState;->(F)V +Landroidx/compose/runtime/ParcelableSnapshotMutableFloatState$Companion; +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableFloatState$Companion;->()V +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableFloatState$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/runtime/ParcelableSnapshotMutableFloatState$Companion$CREATOR$1; +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableFloatState$Companion$CREATOR$1;->()V +Landroidx/compose/runtime/ParcelableSnapshotMutableIntState; +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableIntState;->()V +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableIntState;->(I)V +Landroidx/compose/runtime/ParcelableSnapshotMutableIntState$Companion; +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableIntState$Companion;->()V +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableIntState$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/runtime/ParcelableSnapshotMutableIntState$Companion$CREATOR$1; +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableIntState$Companion$CREATOR$1;->()V +Landroidx/compose/runtime/ParcelableSnapshotMutableLongState; +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableLongState;->()V +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableLongState;->(J)V +Landroidx/compose/runtime/ParcelableSnapshotMutableLongState$Companion; +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableLongState$Companion;->()V +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableLongState$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/runtime/ParcelableSnapshotMutableLongState$Companion$CREATOR$1; +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableLongState$Companion$CREATOR$1;->()V +Landroidx/compose/runtime/ParcelableSnapshotMutableState; +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableState;->()V +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableState;->(Ljava/lang/Object;Landroidx/compose/runtime/SnapshotMutationPolicy;)V +Landroidx/compose/runtime/ParcelableSnapshotMutableState$Companion; +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableState$Companion;->()V +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableState$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/runtime/ParcelableSnapshotMutableState$Companion$CREATOR$1; +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableState$Companion$CREATOR$1;->()V +Landroidx/compose/runtime/PausableMonotonicFrameClock; +HSPLandroidx/compose/runtime/PausableMonotonicFrameClock;->()V +HSPLandroidx/compose/runtime/PausableMonotonicFrameClock;->(Landroidx/compose/runtime/MonotonicFrameClock;)V +HSPLandroidx/compose/runtime/PausableMonotonicFrameClock;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/PausableMonotonicFrameClock;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLandroidx/compose/runtime/PausableMonotonicFrameClock;->minusKey(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext; +HSPLandroidx/compose/runtime/PausableMonotonicFrameClock;->pause()V +HSPLandroidx/compose/runtime/PausableMonotonicFrameClock;->resume()V +HSPLandroidx/compose/runtime/PausableMonotonicFrameClock;->withFrameNanos(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/runtime/PausableMonotonicFrameClock$withFrameNanos$1; +HSPLandroidx/compose/runtime/PausableMonotonicFrameClock$withFrameNanos$1;->(Landroidx/compose/runtime/PausableMonotonicFrameClock;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/runtime/PausableMonotonicFrameClock$withFrameNanos$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/Pending; +HSPLandroidx/compose/runtime/Pending;->(Ljava/util/List;I)V +HSPLandroidx/compose/runtime/Pending;->getGroupIndex()I +HSPLandroidx/compose/runtime/Pending;->getKeyInfos()Ljava/util/List; +HSPLandroidx/compose/runtime/Pending;->getKeyMap()Ljava/util/HashMap; +HSPLandroidx/compose/runtime/Pending;->getNext(ILjava/lang/Object;)Landroidx/compose/runtime/KeyInfo; +HSPLandroidx/compose/runtime/Pending;->getStartIndex()I +HSPLandroidx/compose/runtime/Pending;->getUsed()Ljava/util/List; +HSPLandroidx/compose/runtime/Pending;->nodePositionOf(Landroidx/compose/runtime/KeyInfo;)I +HSPLandroidx/compose/runtime/Pending;->recordUsed(Landroidx/compose/runtime/KeyInfo;)Z +HSPLandroidx/compose/runtime/Pending;->registerInsert(Landroidx/compose/runtime/KeyInfo;I)V +HSPLandroidx/compose/runtime/Pending;->registerMoveSlot(II)V +HSPLandroidx/compose/runtime/Pending;->setGroupIndex(I)V +HSPLandroidx/compose/runtime/Pending;->slotPositionOf(Landroidx/compose/runtime/KeyInfo;)I +HSPLandroidx/compose/runtime/Pending;->updateNodeCount(II)Z +HSPLandroidx/compose/runtime/Pending;->updatedNodeCountOf(Landroidx/compose/runtime/KeyInfo;)I +Landroidx/compose/runtime/Pending$keyMap$2; +HSPLandroidx/compose/runtime/Pending$keyMap$2;->(Landroidx/compose/runtime/Pending;)V +HSPLandroidx/compose/runtime/Pending$keyMap$2;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/runtime/Pending$keyMap$2;->invoke()Ljava/util/HashMap; +Landroidx/compose/runtime/PersistentCompositionLocalMap; +Landroidx/compose/runtime/PersistentCompositionLocalMap$Builder; +Landroidx/compose/runtime/PrimitiveSnapshotStateKt; +HSPLandroidx/compose/runtime/PrimitiveSnapshotStateKt;->mutableFloatStateOf(F)Landroidx/compose/runtime/MutableFloatState; +Landroidx/compose/runtime/PrimitiveSnapshotStateKt__SnapshotFloatStateKt; +HSPLandroidx/compose/runtime/PrimitiveSnapshotStateKt__SnapshotFloatStateKt;->mutableFloatStateOf(F)Landroidx/compose/runtime/MutableFloatState; +Landroidx/compose/runtime/PrioritySet; +HSPLandroidx/compose/runtime/PrioritySet;->(Ljava/util/List;)V +HSPLandroidx/compose/runtime/PrioritySet;->(Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/PrioritySet;->add(I)V +HSPLandroidx/compose/runtime/PrioritySet;->isNotEmpty()Z +HSPLandroidx/compose/runtime/PrioritySet;->peek()I +HSPLandroidx/compose/runtime/PrioritySet;->takeMax()I +Landroidx/compose/runtime/ProduceStateScope; +Landroidx/compose/runtime/ProduceStateScopeImpl; +HSPLandroidx/compose/runtime/ProduceStateScopeImpl;->(Landroidx/compose/runtime/MutableState;Lkotlin/coroutines/CoroutineContext;)V +HSPLandroidx/compose/runtime/ProduceStateScopeImpl;->setValue(Ljava/lang/Object;)V +Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/runtime/ProvidableCompositionLocal;->()V +HSPLandroidx/compose/runtime/ProvidableCompositionLocal;->(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/runtime/ProvidableCompositionLocal;->provides(Ljava/lang/Object;)Landroidx/compose/runtime/ProvidedValue; +HSPLandroidx/compose/runtime/ProvidableCompositionLocal;->providesDefault(Ljava/lang/Object;)Landroidx/compose/runtime/ProvidedValue; +Landroidx/compose/runtime/ProvidedValue; +HSPLandroidx/compose/runtime/ProvidedValue;->()V +HSPLandroidx/compose/runtime/ProvidedValue;->(Landroidx/compose/runtime/CompositionLocal;Ljava/lang/Object;Z)V +HSPLandroidx/compose/runtime/ProvidedValue;->getCanOverride()Z +HSPLandroidx/compose/runtime/ProvidedValue;->getCompositionLocal()Landroidx/compose/runtime/CompositionLocal; +HSPLandroidx/compose/runtime/ProvidedValue;->getValue()Ljava/lang/Object; +Landroidx/compose/runtime/RecomposeScope; +Landroidx/compose/runtime/RecomposeScopeImpl; +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->()V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->(Landroidx/compose/runtime/RecomposeScopeOwner;)V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->access$getCurrentToken$p(Landroidx/compose/runtime/RecomposeScopeImpl;)I +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->access$getTrackedDependencies$p(Landroidx/compose/runtime/RecomposeScopeImpl;)Landroidx/compose/runtime/collection/IdentityArrayMap; +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->access$getTrackedInstances$p(Landroidx/compose/runtime/RecomposeScopeImpl;)Landroidx/compose/runtime/collection/IdentityArrayIntMap; +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->access$setTrackedDependencies$p(Landroidx/compose/runtime/RecomposeScopeImpl;Landroidx/compose/runtime/collection/IdentityArrayMap;)V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->access$setTrackedInstances$p(Landroidx/compose/runtime/RecomposeScopeImpl;Landroidx/compose/runtime/collection/IdentityArrayIntMap;)V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->compose(Landroidx/compose/runtime/Composer;)V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->end(I)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->getAnchor()Landroidx/compose/runtime/Anchor; +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->getCanRecompose()Z +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->getDefaultsInScope()Z +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->getDefaultsInvalid()Z +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->getRequiresRecompose()Z +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->getRereading()Z +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->getSkipped$runtime_release()Z +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->getUsed()Z +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->getValid()Z +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->invalidate()V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->invalidateForResult(Ljava/lang/Object;)Landroidx/compose/runtime/InvalidationResult; +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->isConditional()Z +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->isInvalidFor(Landroidx/compose/runtime/collection/IdentityArraySet;)Z +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->recordRead(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->release()V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->rereadTrackedInstances()V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->scopeSkipped()V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->setAnchor(Landroidx/compose/runtime/Anchor;)V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->setDefaultsInScope(Z)V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->setDefaultsInvalid(Z)V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->setRequiresRecompose(Z)V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->setRereading(Z)V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->setSkipped(Z)V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->setUsed(Z)V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->start(I)V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->updateScope(Lkotlin/jvm/functions/Function2;)V +Landroidx/compose/runtime/RecomposeScopeImpl$Companion; +HSPLandroidx/compose/runtime/RecomposeScopeImpl$Companion;->()V +HSPLandroidx/compose/runtime/RecomposeScopeImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/runtime/RecomposeScopeImpl$end$1$2; +HSPLandroidx/compose/runtime/RecomposeScopeImpl$end$1$2;->(Landroidx/compose/runtime/RecomposeScopeImpl;ILandroidx/compose/runtime/collection/IdentityArrayIntMap;)V +HSPLandroidx/compose/runtime/RecomposeScopeImpl$end$1$2;->invoke(Landroidx/compose/runtime/Composition;)V +HSPLandroidx/compose/runtime/RecomposeScopeImpl$end$1$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/RecomposeScopeImplKt; +HSPLandroidx/compose/runtime/RecomposeScopeImplKt;->updateChangedFlags(I)I +Landroidx/compose/runtime/RecomposeScopeOwner; +Landroidx/compose/runtime/Recomposer; +HSPLandroidx/compose/runtime/Recomposer;->()V +HSPLandroidx/compose/runtime/Recomposer;->(Lkotlin/coroutines/CoroutineContext;)V +HSPLandroidx/compose/runtime/Recomposer;->access$awaitWorkAvailable(Landroidx/compose/runtime/Recomposer;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer;->access$deriveStateLocked(Landroidx/compose/runtime/Recomposer;)Lkotlinx/coroutines/CancellableContinuation; +HSPLandroidx/compose/runtime/Recomposer;->access$discardUnusedValues(Landroidx/compose/runtime/Recomposer;)V +HSPLandroidx/compose/runtime/Recomposer;->access$getBroadcastFrameClock$p(Landroidx/compose/runtime/Recomposer;)Landroidx/compose/runtime/BroadcastFrameClock; +HSPLandroidx/compose/runtime/Recomposer;->access$getCompositionInvalidations$p(Landroidx/compose/runtime/Recomposer;)Ljava/util/List; +HSPLandroidx/compose/runtime/Recomposer;->access$getCompositionValuesAwaitingInsert$p(Landroidx/compose/runtime/Recomposer;)Ljava/util/List; +HSPLandroidx/compose/runtime/Recomposer;->access$getHasBroadcastFrameClockAwaiters(Landroidx/compose/runtime/Recomposer;)Z +HSPLandroidx/compose/runtime/Recomposer;->access$getHasSchedulingWork(Landroidx/compose/runtime/Recomposer;)Z +HSPLandroidx/compose/runtime/Recomposer;->access$getKnownCompositions$p(Landroidx/compose/runtime/Recomposer;)Ljava/util/List; +HSPLandroidx/compose/runtime/Recomposer;->access$getRecomposerInfo$p(Landroidx/compose/runtime/Recomposer;)Landroidx/compose/runtime/Recomposer$RecomposerInfoImpl; +HSPLandroidx/compose/runtime/Recomposer;->access$getShouldKeepRecomposing(Landroidx/compose/runtime/Recomposer;)Z +HSPLandroidx/compose/runtime/Recomposer;->access$getSnapshotInvalidations$p(Landroidx/compose/runtime/Recomposer;)Landroidx/compose/runtime/collection/IdentityArraySet; +HSPLandroidx/compose/runtime/Recomposer;->access$getStateLock$p(Landroidx/compose/runtime/Recomposer;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer;->access$get_runningRecomposers$cp()Lkotlinx/coroutines/flow/MutableStateFlow; +HSPLandroidx/compose/runtime/Recomposer;->access$get_state$p(Landroidx/compose/runtime/Recomposer;)Lkotlinx/coroutines/flow/MutableStateFlow; +HSPLandroidx/compose/runtime/Recomposer;->access$performRecompose(Landroidx/compose/runtime/Recomposer;Landroidx/compose/runtime/ControlledComposition;Landroidx/compose/runtime/collection/IdentityArraySet;)Landroidx/compose/runtime/ControlledComposition; +HSPLandroidx/compose/runtime/Recomposer;->access$recordComposerModifications(Landroidx/compose/runtime/Recomposer;)Z +HSPLandroidx/compose/runtime/Recomposer;->access$registerRunnerJob(Landroidx/compose/runtime/Recomposer;Lkotlinx/coroutines/Job;)V +HSPLandroidx/compose/runtime/Recomposer;->access$setChangeCount$p(Landroidx/compose/runtime/Recomposer;J)V +HSPLandroidx/compose/runtime/Recomposer;->access$setCompositionsRemoved$p(Landroidx/compose/runtime/Recomposer;Ljava/util/Set;)V +HSPLandroidx/compose/runtime/Recomposer;->access$setWorkContinuation$p(Landroidx/compose/runtime/Recomposer;Lkotlinx/coroutines/CancellableContinuation;)V +HSPLandroidx/compose/runtime/Recomposer;->applyAndCheck(Landroidx/compose/runtime/snapshots/MutableSnapshot;)V +HSPLandroidx/compose/runtime/Recomposer;->awaitWorkAvailable(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer;->composeInitial$runtime_release(Landroidx/compose/runtime/ControlledComposition;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/runtime/Recomposer;->deriveStateLocked()Lkotlinx/coroutines/CancellableContinuation; +HSPLandroidx/compose/runtime/Recomposer;->discardUnusedValues()V +HSPLandroidx/compose/runtime/Recomposer;->getChangeCount()J +HSPLandroidx/compose/runtime/Recomposer;->getCollectingParameterInformation$runtime_release()Z +HSPLandroidx/compose/runtime/Recomposer;->getCompoundHashKey$runtime_release()I +HSPLandroidx/compose/runtime/Recomposer;->getCurrentState()Lkotlinx/coroutines/flow/StateFlow; +HSPLandroidx/compose/runtime/Recomposer;->getEffectCoroutineContext()Lkotlin/coroutines/CoroutineContext; +HSPLandroidx/compose/runtime/Recomposer;->getHasBroadcastFrameClockAwaiters()Z +HSPLandroidx/compose/runtime/Recomposer;->getHasBroadcastFrameClockAwaitersLocked()Z +HSPLandroidx/compose/runtime/Recomposer;->getHasFrameWorkLocked()Z +HSPLandroidx/compose/runtime/Recomposer;->getHasSchedulingWork()Z +HSPLandroidx/compose/runtime/Recomposer;->getShouldKeepRecomposing()Z +HSPLandroidx/compose/runtime/Recomposer;->invalidate$runtime_release(Landroidx/compose/runtime/ControlledComposition;)V +HSPLandroidx/compose/runtime/Recomposer;->join(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer;->pauseCompositionFrameClock()V +HSPLandroidx/compose/runtime/Recomposer;->performInitialMovableContentInserts(Landroidx/compose/runtime/ControlledComposition;)V +HSPLandroidx/compose/runtime/Recomposer;->performRecompose(Landroidx/compose/runtime/ControlledComposition;Landroidx/compose/runtime/collection/IdentityArraySet;)Landroidx/compose/runtime/ControlledComposition; +HSPLandroidx/compose/runtime/Recomposer;->readObserverOf(Landroidx/compose/runtime/ControlledComposition;)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/runtime/Recomposer;->recompositionRunner(Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer;->recordComposerModifications()Z +HSPLandroidx/compose/runtime/Recomposer;->registerRunnerJob(Lkotlinx/coroutines/Job;)V +HSPLandroidx/compose/runtime/Recomposer;->reportRemovedComposition$runtime_release(Landroidx/compose/runtime/ControlledComposition;)V +HSPLandroidx/compose/runtime/Recomposer;->resumeCompositionFrameClock()V +HSPLandroidx/compose/runtime/Recomposer;->runRecomposeAndApplyChanges(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer;->unregisterComposition$runtime_release(Landroidx/compose/runtime/ControlledComposition;)V +HSPLandroidx/compose/runtime/Recomposer;->writeObserverOf(Landroidx/compose/runtime/ControlledComposition;Landroidx/compose/runtime/collection/IdentityArraySet;)Lkotlin/jvm/functions/Function1; +Landroidx/compose/runtime/Recomposer$Companion; +HSPLandroidx/compose/runtime/Recomposer$Companion;->()V +HSPLandroidx/compose/runtime/Recomposer$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/Recomposer$Companion;->access$addRunning(Landroidx/compose/runtime/Recomposer$Companion;Landroidx/compose/runtime/Recomposer$RecomposerInfoImpl;)V +HSPLandroidx/compose/runtime/Recomposer$Companion;->addRunning(Landroidx/compose/runtime/Recomposer$RecomposerInfoImpl;)V +Landroidx/compose/runtime/Recomposer$RecomposerErrorState; +Landroidx/compose/runtime/Recomposer$RecomposerInfoImpl; +HSPLandroidx/compose/runtime/Recomposer$RecomposerInfoImpl;->(Landroidx/compose/runtime/Recomposer;)V +Landroidx/compose/runtime/Recomposer$State; +HSPLandroidx/compose/runtime/Recomposer$State;->$values()[Landroidx/compose/runtime/Recomposer$State; +HSPLandroidx/compose/runtime/Recomposer$State;->()V +HSPLandroidx/compose/runtime/Recomposer$State;->(Ljava/lang/String;I)V +Landroidx/compose/runtime/Recomposer$broadcastFrameClock$1; +HSPLandroidx/compose/runtime/Recomposer$broadcastFrameClock$1;->(Landroidx/compose/runtime/Recomposer;)V +HSPLandroidx/compose/runtime/Recomposer$broadcastFrameClock$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer$broadcastFrameClock$1;->invoke()V +Landroidx/compose/runtime/Recomposer$effectJob$1$1; +HSPLandroidx/compose/runtime/Recomposer$effectJob$1$1;->(Landroidx/compose/runtime/Recomposer;)V +Landroidx/compose/runtime/Recomposer$join$2; +HSPLandroidx/compose/runtime/Recomposer$join$2;->(Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/runtime/Recomposer$join$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/runtime/Recomposer$join$2;->invoke(Landroidx/compose/runtime/Recomposer$State;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer$join$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer$join$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/Recomposer$performRecompose$1$1; +PLandroidx/compose/runtime/Recomposer$performRecompose$1$1;->(Landroidx/compose/runtime/collection/IdentityArraySet;Landroidx/compose/runtime/ControlledComposition;)V +HSPLandroidx/compose/runtime/Recomposer$performRecompose$1$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer$performRecompose$1$1;->invoke()V +Landroidx/compose/runtime/Recomposer$readObserverOf$1; +HSPLandroidx/compose/runtime/Recomposer$readObserverOf$1;->(Landroidx/compose/runtime/ControlledComposition;)V +HSPLandroidx/compose/runtime/Recomposer$readObserverOf$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer$readObserverOf$1;->invoke(Ljava/lang/Object;)V +Landroidx/compose/runtime/Recomposer$recompositionRunner$2; +HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2;->(Landroidx/compose/runtime/Recomposer;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/MonotonicFrameClock;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/Recomposer$recompositionRunner$2$3; +HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2$3;->(Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/MonotonicFrameClock;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2$3;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2$3;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/Recomposer$recompositionRunner$2$unregisterApplyObserver$1; +HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2$unregisterApplyObserver$1;->(Landroidx/compose/runtime/Recomposer;)V +HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2$unregisterApplyObserver$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2$unregisterApplyObserver$1;->invoke(Ljava/util/Set;Landroidx/compose/runtime/snapshots/Snapshot;)V +Landroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2; +HSPLandroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2;->(Landroidx/compose/runtime/Recomposer;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2;->access$invokeSuspend$fillToInsert(Ljava/util/List;Landroidx/compose/runtime/Recomposer;)V +HSPLandroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Landroidx/compose/runtime/MonotonicFrameClock;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2;->invokeSuspend$fillToInsert(Ljava/util/List;Landroidx/compose/runtime/Recomposer;)V +HSPLandroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2$1; +HSPLandroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2$1;->(Landroidx/compose/runtime/Recomposer;Ljava/util/List;Ljava/util/List;Ljava/util/Set;Ljava/util/List;Ljava/util/Set;)V +HSPLandroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2$1;->invoke(J)V +HSPLandroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/Recomposer$writeObserverOf$1; +HSPLandroidx/compose/runtime/Recomposer$writeObserverOf$1;->(Landroidx/compose/runtime/ControlledComposition;Landroidx/compose/runtime/collection/IdentityArraySet;)V +HSPLandroidx/compose/runtime/Recomposer$writeObserverOf$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer$writeObserverOf$1;->invoke(Ljava/lang/Object;)V +Landroidx/compose/runtime/RecomposerErrorInfo; +Landroidx/compose/runtime/RecomposerInfo; +Landroidx/compose/runtime/ReferentialEqualityPolicy; +HSPLandroidx/compose/runtime/ReferentialEqualityPolicy;->()V +HSPLandroidx/compose/runtime/ReferentialEqualityPolicy;->()V +HSPLandroidx/compose/runtime/ReferentialEqualityPolicy;->equivalent(Ljava/lang/Object;Ljava/lang/Object;)Z +Landroidx/compose/runtime/RememberManager; +Landroidx/compose/runtime/RememberObserver; +Landroidx/compose/runtime/ScopeUpdateScope; +Landroidx/compose/runtime/SkippableUpdater; +HSPLandroidx/compose/runtime/SkippableUpdater;->(Landroidx/compose/runtime/Composer;)V +HSPLandroidx/compose/runtime/SkippableUpdater;->box-impl(Landroidx/compose/runtime/Composer;)Landroidx/compose/runtime/SkippableUpdater; +HSPLandroidx/compose/runtime/SkippableUpdater;->constructor-impl(Landroidx/compose/runtime/Composer;)Landroidx/compose/runtime/Composer; +HSPLandroidx/compose/runtime/SkippableUpdater;->unbox-impl()Landroidx/compose/runtime/Composer; +Landroidx/compose/runtime/SlotReader; +HSPLandroidx/compose/runtime/SlotReader;->(Landroidx/compose/runtime/SlotTable;)V +HSPLandroidx/compose/runtime/SlotReader;->anchor(I)Landroidx/compose/runtime/Anchor; +HSPLandroidx/compose/runtime/SlotReader;->aux([II)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotReader;->beginEmpty()V +HSPLandroidx/compose/runtime/SlotReader;->close()V +HSPLandroidx/compose/runtime/SlotReader;->containsMark(I)Z +HSPLandroidx/compose/runtime/SlotReader;->endEmpty()V +HSPLandroidx/compose/runtime/SlotReader;->endGroup()V +HSPLandroidx/compose/runtime/SlotReader;->extractKeys()Ljava/util/List; +HSPLandroidx/compose/runtime/SlotReader;->forEachData$runtime_release(ILkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/runtime/SlotReader;->getCurrentEnd()I +HSPLandroidx/compose/runtime/SlotReader;->getCurrentGroup()I +HSPLandroidx/compose/runtime/SlotReader;->getGroupAux()Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotReader;->getGroupEnd()I +HSPLandroidx/compose/runtime/SlotReader;->getGroupKey()I +HSPLandroidx/compose/runtime/SlotReader;->getGroupObjectKey()Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotReader;->getGroupSize()I +HSPLandroidx/compose/runtime/SlotReader;->getGroupSlotIndex()I +HSPLandroidx/compose/runtime/SlotReader;->getInEmpty()Z +HSPLandroidx/compose/runtime/SlotReader;->getParent()I +HSPLandroidx/compose/runtime/SlotReader;->getParentNodes()I +HSPLandroidx/compose/runtime/SlotReader;->getSize()I +HSPLandroidx/compose/runtime/SlotReader;->getTable$runtime_release()Landroidx/compose/runtime/SlotTable; +HSPLandroidx/compose/runtime/SlotReader;->groupAux(I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotReader;->groupGet(I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotReader;->groupGet(II)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotReader;->groupKey(I)I +HSPLandroidx/compose/runtime/SlotReader;->groupObjectKey(I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotReader;->groupSize(I)I +HSPLandroidx/compose/runtime/SlotReader;->hasMark(I)Z +HSPLandroidx/compose/runtime/SlotReader;->hasObjectKey(I)Z +HSPLandroidx/compose/runtime/SlotReader;->isGroupEnd()Z +HSPLandroidx/compose/runtime/SlotReader;->isNode()Z +HSPLandroidx/compose/runtime/SlotReader;->isNode(I)Z +HSPLandroidx/compose/runtime/SlotReader;->next()Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotReader;->node(I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotReader;->node([II)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotReader;->nodeCount(I)I +HSPLandroidx/compose/runtime/SlotReader;->objectKey([II)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotReader;->parent(I)I +HSPLandroidx/compose/runtime/SlotReader;->reposition(I)V +HSPLandroidx/compose/runtime/SlotReader;->restoreParent(I)V +HSPLandroidx/compose/runtime/SlotReader;->skipGroup()I +HSPLandroidx/compose/runtime/SlotReader;->skipToGroupEnd()V +HSPLandroidx/compose/runtime/SlotReader;->startGroup()V +HSPLandroidx/compose/runtime/SlotReader;->startNode()V +Landroidx/compose/runtime/SlotTable; +HSPLandroidx/compose/runtime/SlotTable;->()V +HSPLandroidx/compose/runtime/SlotTable;->anchorIndex(Landroidx/compose/runtime/Anchor;)I +HSPLandroidx/compose/runtime/SlotTable;->close$runtime_release(Landroidx/compose/runtime/SlotReader;)V +HSPLandroidx/compose/runtime/SlotTable;->close$runtime_release(Landroidx/compose/runtime/SlotWriter;[II[Ljava/lang/Object;ILjava/util/ArrayList;)V +HSPLandroidx/compose/runtime/SlotTable;->containsMark()Z +HSPLandroidx/compose/runtime/SlotTable;->getAnchors$runtime_release()Ljava/util/ArrayList; +HSPLandroidx/compose/runtime/SlotTable;->getGroups()[I +HSPLandroidx/compose/runtime/SlotTable;->getGroupsSize()I +HSPLandroidx/compose/runtime/SlotTable;->getSlots()[Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotTable;->getSlotsSize()I +HSPLandroidx/compose/runtime/SlotTable;->isEmpty()Z +HSPLandroidx/compose/runtime/SlotTable;->openReader()Landroidx/compose/runtime/SlotReader; +HSPLandroidx/compose/runtime/SlotTable;->openWriter()Landroidx/compose/runtime/SlotWriter; +HSPLandroidx/compose/runtime/SlotTable;->ownsAnchor(Landroidx/compose/runtime/Anchor;)Z +HSPLandroidx/compose/runtime/SlotTable;->setTo$runtime_release([II[Ljava/lang/Object;ILjava/util/ArrayList;)V +Landroidx/compose/runtime/SlotTableKt; +HSPLandroidx/compose/runtime/SlotTableKt;->access$addAux([II)V +HSPLandroidx/compose/runtime/SlotTableKt;->access$auxIndex([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->access$containsAnyMark([II)Z +HSPLandroidx/compose/runtime/SlotTableKt;->access$containsMark([II)Z +HSPLandroidx/compose/runtime/SlotTableKt;->access$countOneBits(I)I +HSPLandroidx/compose/runtime/SlotTableKt;->access$dataAnchor([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->access$groupInfo([II)I +HPLandroidx/compose/runtime/SlotTableKt;->access$groupSize([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->access$hasAux([II)Z +HSPLandroidx/compose/runtime/SlotTableKt;->access$hasMark([II)Z +HPLandroidx/compose/runtime/SlotTableKt;->access$hasObjectKey([II)Z +HSPLandroidx/compose/runtime/SlotTableKt;->access$initGroup([IIIZZZII)V +HSPLandroidx/compose/runtime/SlotTableKt;->access$isNode([II)Z +HSPLandroidx/compose/runtime/SlotTableKt;->access$key([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->access$locationOf(Ljava/util/ArrayList;II)I +HSPLandroidx/compose/runtime/SlotTableKt;->access$nodeCount([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->access$nodeIndex([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->access$objectKeyIndex([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->access$parentAnchor([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->access$search(Ljava/util/ArrayList;II)I +HSPLandroidx/compose/runtime/SlotTableKt;->access$slotAnchor([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->access$updateContainsMark([IIZ)V +HSPLandroidx/compose/runtime/SlotTableKt;->access$updateDataAnchor([III)V +HSPLandroidx/compose/runtime/SlotTableKt;->access$updateGroupSize([III)V +HSPLandroidx/compose/runtime/SlotTableKt;->access$updateMark([IIZ)V +HSPLandroidx/compose/runtime/SlotTableKt;->access$updateNodeCount([III)V +HSPLandroidx/compose/runtime/SlotTableKt;->access$updateParentAnchor([III)V +HSPLandroidx/compose/runtime/SlotTableKt;->addAux([II)V +HSPLandroidx/compose/runtime/SlotTableKt;->auxIndex([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->containsAnyMark([II)Z +HSPLandroidx/compose/runtime/SlotTableKt;->containsMark([II)Z +HSPLandroidx/compose/runtime/SlotTableKt;->countOneBits(I)I +HSPLandroidx/compose/runtime/SlotTableKt;->dataAnchor([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->groupInfo([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->groupSize([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->hasAux([II)Z +HSPLandroidx/compose/runtime/SlotTableKt;->hasMark([II)Z +HSPLandroidx/compose/runtime/SlotTableKt;->hasObjectKey([II)Z +HSPLandroidx/compose/runtime/SlotTableKt;->initGroup([IIIZZZII)V +HSPLandroidx/compose/runtime/SlotTableKt;->isNode([II)Z +HSPLandroidx/compose/runtime/SlotTableKt;->key([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->locationOf(Ljava/util/ArrayList;II)I +HSPLandroidx/compose/runtime/SlotTableKt;->nodeCount([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->nodeIndex([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->objectKeyIndex([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->parentAnchor([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->search(Ljava/util/ArrayList;II)I +HSPLandroidx/compose/runtime/SlotTableKt;->slotAnchor([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->updateContainsMark([IIZ)V +HSPLandroidx/compose/runtime/SlotTableKt;->updateDataAnchor([III)V +HSPLandroidx/compose/runtime/SlotTableKt;->updateGroupSize([III)V +HSPLandroidx/compose/runtime/SlotTableKt;->updateMark([IIZ)V +HSPLandroidx/compose/runtime/SlotTableKt;->updateNodeCount([III)V +HSPLandroidx/compose/runtime/SlotTableKt;->updateParentAnchor([III)V +Landroidx/compose/runtime/SlotWriter; +HSPLandroidx/compose/runtime/SlotWriter;->()V +HSPLandroidx/compose/runtime/SlotWriter;->(Landroidx/compose/runtime/SlotTable;)V +HSPLandroidx/compose/runtime/SlotWriter;->access$containsAnyGroupMarks(Landroidx/compose/runtime/SlotWriter;I)Z +HSPLandroidx/compose/runtime/SlotWriter;->access$dataIndex(Landroidx/compose/runtime/SlotWriter;I)I +HSPLandroidx/compose/runtime/SlotWriter;->access$dataIndex(Landroidx/compose/runtime/SlotWriter;[II)I +HSPLandroidx/compose/runtime/SlotWriter;->access$dataIndexToDataAddress(Landroidx/compose/runtime/SlotWriter;I)I +HSPLandroidx/compose/runtime/SlotWriter;->access$dataIndexToDataAnchor(Landroidx/compose/runtime/SlotWriter;IIII)I +HSPLandroidx/compose/runtime/SlotWriter;->access$getAnchors$p(Landroidx/compose/runtime/SlotWriter;)Ljava/util/ArrayList; +HSPLandroidx/compose/runtime/SlotWriter;->access$getCurrentSlot$p(Landroidx/compose/runtime/SlotWriter;)I +HSPLandroidx/compose/runtime/SlotWriter;->access$getGroupGapStart$p(Landroidx/compose/runtime/SlotWriter;)I +HSPLandroidx/compose/runtime/SlotWriter;->access$getGroups$p(Landroidx/compose/runtime/SlotWriter;)[I +HSPLandroidx/compose/runtime/SlotWriter;->access$getNodeCount$p(Landroidx/compose/runtime/SlotWriter;)I +HSPLandroidx/compose/runtime/SlotWriter;->access$getSlots$p(Landroidx/compose/runtime/SlotWriter;)[Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotWriter;->access$getSlotsGapLen$p(Landroidx/compose/runtime/SlotWriter;)I +HSPLandroidx/compose/runtime/SlotWriter;->access$getSlotsGapOwner$p(Landroidx/compose/runtime/SlotWriter;)I +HSPLandroidx/compose/runtime/SlotWriter;->access$getSlotsGapStart$p(Landroidx/compose/runtime/SlotWriter;)I +HSPLandroidx/compose/runtime/SlotWriter;->access$insertGroups(Landroidx/compose/runtime/SlotWriter;I)V +HSPLandroidx/compose/runtime/SlotWriter;->access$insertSlots(Landroidx/compose/runtime/SlotWriter;II)V +HSPLandroidx/compose/runtime/SlotWriter;->access$setCurrentGroup$p(Landroidx/compose/runtime/SlotWriter;I)V +HSPLandroidx/compose/runtime/SlotWriter;->access$setCurrentSlot$p(Landroidx/compose/runtime/SlotWriter;I)V +HSPLandroidx/compose/runtime/SlotWriter;->access$setNodeCount$p(Landroidx/compose/runtime/SlotWriter;I)V +HSPLandroidx/compose/runtime/SlotWriter;->access$setSlotsGapOwner$p(Landroidx/compose/runtime/SlotWriter;I)V +HSPLandroidx/compose/runtime/SlotWriter;->access$updateContainsMark(Landroidx/compose/runtime/SlotWriter;I)V +HSPLandroidx/compose/runtime/SlotWriter;->advanceBy(I)V +HSPLandroidx/compose/runtime/SlotWriter;->anchor(I)Landroidx/compose/runtime/Anchor; +HSPLandroidx/compose/runtime/SlotWriter;->anchorIndex(Landroidx/compose/runtime/Anchor;)I +HSPLandroidx/compose/runtime/SlotWriter;->auxIndex([II)I +HSPLandroidx/compose/runtime/SlotWriter;->beginInsert()V +HSPLandroidx/compose/runtime/SlotWriter;->childContainsAnyMarks(I)Z +HSPLandroidx/compose/runtime/SlotWriter;->clearSlotGap()V +HSPLandroidx/compose/runtime/SlotWriter;->close()V +HSPLandroidx/compose/runtime/SlotWriter;->containsAnyGroupMarks(I)Z +HSPLandroidx/compose/runtime/SlotWriter;->containsGroupMark(I)Z +HSPLandroidx/compose/runtime/SlotWriter;->dataAnchorToDataIndex(III)I +HSPLandroidx/compose/runtime/SlotWriter;->dataIndex(I)I +HSPLandroidx/compose/runtime/SlotWriter;->dataIndex([II)I +HSPLandroidx/compose/runtime/SlotWriter;->dataIndexToDataAddress(I)I +HSPLandroidx/compose/runtime/SlotWriter;->dataIndexToDataAnchor(IIII)I +HSPLandroidx/compose/runtime/SlotWriter;->endGroup()I +HSPLandroidx/compose/runtime/SlotWriter;->endInsert()V +HSPLandroidx/compose/runtime/SlotWriter;->ensureStarted(I)V +HSPLandroidx/compose/runtime/SlotWriter;->ensureStarted(Landroidx/compose/runtime/Anchor;)V +HSPLandroidx/compose/runtime/SlotWriter;->fixParentAnchorsFor(III)V +HSPLandroidx/compose/runtime/SlotWriter;->getCapacity()I +HSPLandroidx/compose/runtime/SlotWriter;->getClosed()Z +HSPLandroidx/compose/runtime/SlotWriter;->getCurrentGroup()I +HSPLandroidx/compose/runtime/SlotWriter;->getParent()I +HSPLandroidx/compose/runtime/SlotWriter;->getSize$runtime_release()I +HSPLandroidx/compose/runtime/SlotWriter;->getTable$runtime_release()Landroidx/compose/runtime/SlotTable; +HSPLandroidx/compose/runtime/SlotWriter;->groupAux(I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotWriter;->groupIndexToAddress(I)I +HSPLandroidx/compose/runtime/SlotWriter;->groupKey(I)I +HSPLandroidx/compose/runtime/SlotWriter;->groupObjectKey(I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotWriter;->groupSize(I)I +HSPLandroidx/compose/runtime/SlotWriter;->groupSlots()Ljava/util/Iterator; +HSPLandroidx/compose/runtime/SlotWriter;->insertAux(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/SlotWriter;->insertGroups(I)V +HSPLandroidx/compose/runtime/SlotWriter;->insertSlots(II)V +HSPLandroidx/compose/runtime/SlotWriter;->markGroup$default(Landroidx/compose/runtime/SlotWriter;IILjava/lang/Object;)V +HSPLandroidx/compose/runtime/SlotWriter;->markGroup(I)V +HSPLandroidx/compose/runtime/SlotWriter;->moveAnchors(III)V +HSPLandroidx/compose/runtime/SlotWriter;->moveFrom(Landroidx/compose/runtime/SlotTable;IZ)Ljava/util/List; +HSPLandroidx/compose/runtime/SlotWriter;->moveGroup(I)V +HSPLandroidx/compose/runtime/SlotWriter;->moveGroupGapTo(I)V +HSPLandroidx/compose/runtime/SlotWriter;->moveSlotGapTo(II)V +HSPLandroidx/compose/runtime/SlotWriter;->node(I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotWriter;->node(Landroidx/compose/runtime/Anchor;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotWriter;->nodeIndex([II)I +HSPLandroidx/compose/runtime/SlotWriter;->parent(I)I +HSPLandroidx/compose/runtime/SlotWriter;->parent([II)I +HSPLandroidx/compose/runtime/SlotWriter;->parentAnchorToIndex(I)I +HSPLandroidx/compose/runtime/SlotWriter;->parentIndexToAnchor(II)I +HSPLandroidx/compose/runtime/SlotWriter;->recalculateMarks()V +HSPLandroidx/compose/runtime/SlotWriter;->removeAnchors(II)Z +HSPLandroidx/compose/runtime/SlotWriter;->removeGroup()Z +HSPLandroidx/compose/runtime/SlotWriter;->removeGroups(II)Z +HSPLandroidx/compose/runtime/SlotWriter;->removeSlots(III)V +HSPLandroidx/compose/runtime/SlotWriter;->restoreCurrentGroupEnd()I +HSPLandroidx/compose/runtime/SlotWriter;->saveCurrentGroupEnd()V +HSPLandroidx/compose/runtime/SlotWriter;->set(ILjava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotWriter;->set(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/SlotWriter;->skip()Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotWriter;->skipGroup()I +HSPLandroidx/compose/runtime/SlotWriter;->skipToGroupEnd()V +HSPLandroidx/compose/runtime/SlotWriter;->slot(II)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotWriter;->slotIndex([II)I +HSPLandroidx/compose/runtime/SlotWriter;->startData(ILjava/lang/Object;Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/SlotWriter;->startGroup()V +HSPLandroidx/compose/runtime/SlotWriter;->startGroup(ILjava/lang/Object;)V +HSPLandroidx/compose/runtime/SlotWriter;->startGroup(ILjava/lang/Object;ZLjava/lang/Object;)V +HSPLandroidx/compose/runtime/SlotWriter;->startNode(ILjava/lang/Object;)V +HSPLandroidx/compose/runtime/SlotWriter;->update(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotWriter;->updateAnchors(II)V +HSPLandroidx/compose/runtime/SlotWriter;->updateAux(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/SlotWriter;->updateContainsMark(I)V +HSPLandroidx/compose/runtime/SlotWriter;->updateContainsMarkNow(ILandroidx/compose/runtime/PrioritySet;)V +HSPLandroidx/compose/runtime/SlotWriter;->updateDataIndex([III)V +HSPLandroidx/compose/runtime/SlotWriter;->updateNode(Landroidx/compose/runtime/Anchor;Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/SlotWriter;->updateNodeOfGroup(ILjava/lang/Object;)V +Landroidx/compose/runtime/SlotWriter$Companion; +HSPLandroidx/compose/runtime/SlotWriter$Companion;->()V +HSPLandroidx/compose/runtime/SlotWriter$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/SlotWriter$Companion;->access$moveGroup(Landroidx/compose/runtime/SlotWriter$Companion;Landroidx/compose/runtime/SlotWriter;ILandroidx/compose/runtime/SlotWriter;ZZZ)Ljava/util/List; +HSPLandroidx/compose/runtime/SlotWriter$Companion;->moveGroup(Landroidx/compose/runtime/SlotWriter;ILandroidx/compose/runtime/SlotWriter;ZZZ)Ljava/util/List; +Landroidx/compose/runtime/SlotWriter$groupSlots$1; +HSPLandroidx/compose/runtime/SlotWriter$groupSlots$1;->(IILandroidx/compose/runtime/SlotWriter;)V +HSPLandroidx/compose/runtime/SlotWriter$groupSlots$1;->hasNext()Z +HSPLandroidx/compose/runtime/SlotWriter$groupSlots$1;->next()Ljava/lang/Object; +Landroidx/compose/runtime/SnapshotIntStateKt; +HSPLandroidx/compose/runtime/SnapshotIntStateKt;->mutableIntStateOf(I)Landroidx/compose/runtime/MutableIntState; +Landroidx/compose/runtime/SnapshotIntStateKt__SnapshotIntStateKt; +HSPLandroidx/compose/runtime/SnapshotIntStateKt__SnapshotIntStateKt;->mutableIntStateOf(I)Landroidx/compose/runtime/MutableIntState; +Landroidx/compose/runtime/SnapshotLongStateKt; +HSPLandroidx/compose/runtime/SnapshotLongStateKt;->mutableLongStateOf(J)Landroidx/compose/runtime/MutableLongState; +Landroidx/compose/runtime/SnapshotLongStateKt__SnapshotLongStateKt; +HSPLandroidx/compose/runtime/SnapshotLongStateKt__SnapshotLongStateKt;->mutableLongStateOf(J)Landroidx/compose/runtime/MutableLongState; +Landroidx/compose/runtime/SnapshotMutableFloatStateImpl; +HSPLandroidx/compose/runtime/SnapshotMutableFloatStateImpl;->(F)V +HSPLandroidx/compose/runtime/SnapshotMutableFloatStateImpl;->getFirstStateRecord()Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/SnapshotMutableFloatStateImpl;->getFloatValue()F +HSPLandroidx/compose/runtime/SnapshotMutableFloatStateImpl;->setFloatValue(F)V +Landroidx/compose/runtime/SnapshotMutableFloatStateImpl$FloatStateStateRecord; +HSPLandroidx/compose/runtime/SnapshotMutableFloatStateImpl$FloatStateStateRecord;->(F)V +HSPLandroidx/compose/runtime/SnapshotMutableFloatStateImpl$FloatStateStateRecord;->getValue()F +Landroidx/compose/runtime/SnapshotMutableIntStateImpl; +HSPLandroidx/compose/runtime/SnapshotMutableIntStateImpl;->(I)V +HSPLandroidx/compose/runtime/SnapshotMutableIntStateImpl;->getFirstStateRecord()Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/SnapshotMutableIntStateImpl;->getIntValue()I +HSPLandroidx/compose/runtime/SnapshotMutableIntStateImpl;->prependStateRecord(Landroidx/compose/runtime/snapshots/StateRecord;)V +HSPLandroidx/compose/runtime/SnapshotMutableIntStateImpl;->setIntValue(I)V +Landroidx/compose/runtime/SnapshotMutableIntStateImpl$IntStateStateRecord; +HSPLandroidx/compose/runtime/SnapshotMutableIntStateImpl$IntStateStateRecord;->(I)V +HSPLandroidx/compose/runtime/SnapshotMutableIntStateImpl$IntStateStateRecord;->assign(Landroidx/compose/runtime/snapshots/StateRecord;)V +HSPLandroidx/compose/runtime/SnapshotMutableIntStateImpl$IntStateStateRecord;->create()Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/SnapshotMutableIntStateImpl$IntStateStateRecord;->getValue()I +HSPLandroidx/compose/runtime/SnapshotMutableIntStateImpl$IntStateStateRecord;->setValue(I)V +Landroidx/compose/runtime/SnapshotMutableLongStateImpl; +HSPLandroidx/compose/runtime/SnapshotMutableLongStateImpl;->(J)V +HSPLandroidx/compose/runtime/SnapshotMutableLongStateImpl;->getFirstStateRecord()Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/SnapshotMutableLongStateImpl;->getLongValue()J +HSPLandroidx/compose/runtime/SnapshotMutableLongStateImpl;->prependStateRecord(Landroidx/compose/runtime/snapshots/StateRecord;)V +HSPLandroidx/compose/runtime/SnapshotMutableLongStateImpl;->setLongValue(J)V +Landroidx/compose/runtime/SnapshotMutableLongStateImpl$LongStateStateRecord; +HSPLandroidx/compose/runtime/SnapshotMutableLongStateImpl$LongStateStateRecord;->(J)V +HSPLandroidx/compose/runtime/SnapshotMutableLongStateImpl$LongStateStateRecord;->assign(Landroidx/compose/runtime/snapshots/StateRecord;)V +HSPLandroidx/compose/runtime/SnapshotMutableLongStateImpl$LongStateStateRecord;->create()Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/SnapshotMutableLongStateImpl$LongStateStateRecord;->getValue()J +HSPLandroidx/compose/runtime/SnapshotMutableLongStateImpl$LongStateStateRecord;->setValue(J)V +Landroidx/compose/runtime/SnapshotMutableStateImpl; +HSPLandroidx/compose/runtime/SnapshotMutableStateImpl;->(Ljava/lang/Object;Landroidx/compose/runtime/SnapshotMutationPolicy;)V +HSPLandroidx/compose/runtime/SnapshotMutableStateImpl;->getFirstStateRecord()Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/SnapshotMutableStateImpl;->getPolicy()Landroidx/compose/runtime/SnapshotMutationPolicy; +HSPLandroidx/compose/runtime/SnapshotMutableStateImpl;->getValue()Ljava/lang/Object; +HSPLandroidx/compose/runtime/SnapshotMutableStateImpl;->prependStateRecord(Landroidx/compose/runtime/snapshots/StateRecord;)V +HSPLandroidx/compose/runtime/SnapshotMutableStateImpl;->setValue(Ljava/lang/Object;)V +Landroidx/compose/runtime/SnapshotMutableStateImpl$StateStateRecord; +HSPLandroidx/compose/runtime/SnapshotMutableStateImpl$StateStateRecord;->(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/SnapshotMutableStateImpl$StateStateRecord;->assign(Landroidx/compose/runtime/snapshots/StateRecord;)V +HSPLandroidx/compose/runtime/SnapshotMutableStateImpl$StateStateRecord;->create()Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/SnapshotMutableStateImpl$StateStateRecord;->getValue()Ljava/lang/Object; +HSPLandroidx/compose/runtime/SnapshotMutableStateImpl$StateStateRecord;->setValue(Ljava/lang/Object;)V +Landroidx/compose/runtime/SnapshotMutationPolicy; +Landroidx/compose/runtime/SnapshotStateKt; +HSPLandroidx/compose/runtime/SnapshotStateKt;->collectAsState(Lkotlinx/coroutines/flow/Flow;Ljava/lang/Object;Lkotlin/coroutines/CoroutineContext;Landroidx/compose/runtime/Composer;II)Landroidx/compose/runtime/State; +HSPLandroidx/compose/runtime/SnapshotStateKt;->collectAsState(Lkotlinx/coroutines/flow/StateFlow;Lkotlin/coroutines/CoroutineContext;Landroidx/compose/runtime/Composer;II)Landroidx/compose/runtime/State; +HSPLandroidx/compose/runtime/SnapshotStateKt;->derivedStateObservers()Landroidx/compose/runtime/collection/MutableVector; +HSPLandroidx/compose/runtime/SnapshotStateKt;->derivedStateOf(Landroidx/compose/runtime/SnapshotMutationPolicy;Lkotlin/jvm/functions/Function0;)Landroidx/compose/runtime/State; +HSPLandroidx/compose/runtime/SnapshotStateKt;->derivedStateOf(Lkotlin/jvm/functions/Function0;)Landroidx/compose/runtime/State; +HSPLandroidx/compose/runtime/SnapshotStateKt;->mutableStateListOf()Landroidx/compose/runtime/snapshots/SnapshotStateList; +HSPLandroidx/compose/runtime/SnapshotStateKt;->mutableStateListOf([Ljava/lang/Object;)Landroidx/compose/runtime/snapshots/SnapshotStateList; +HSPLandroidx/compose/runtime/SnapshotStateKt;->mutableStateMapOf()Landroidx/compose/runtime/snapshots/SnapshotStateMap; +HSPLandroidx/compose/runtime/SnapshotStateKt;->mutableStateOf$default(Ljava/lang/Object;Landroidx/compose/runtime/SnapshotMutationPolicy;ILjava/lang/Object;)Landroidx/compose/runtime/MutableState; +HSPLandroidx/compose/runtime/SnapshotStateKt;->mutableStateOf(Ljava/lang/Object;Landroidx/compose/runtime/SnapshotMutationPolicy;)Landroidx/compose/runtime/MutableState; +HSPLandroidx/compose/runtime/SnapshotStateKt;->neverEqualPolicy()Landroidx/compose/runtime/SnapshotMutationPolicy; +HSPLandroidx/compose/runtime/SnapshotStateKt;->produceState(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +HSPLandroidx/compose/runtime/SnapshotStateKt;->referentialEqualityPolicy()Landroidx/compose/runtime/SnapshotMutationPolicy; +HSPLandroidx/compose/runtime/SnapshotStateKt;->rememberUpdatedState(Ljava/lang/Object;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +HSPLandroidx/compose/runtime/SnapshotStateKt;->snapshotFlow(Lkotlin/jvm/functions/Function0;)Lkotlinx/coroutines/flow/Flow; +HSPLandroidx/compose/runtime/SnapshotStateKt;->structuralEqualityPolicy()Landroidx/compose/runtime/SnapshotMutationPolicy; +Landroidx/compose/runtime/SnapshotStateKt__DerivedStateKt; +HSPLandroidx/compose/runtime/SnapshotStateKt__DerivedStateKt;->()V +HSPLandroidx/compose/runtime/SnapshotStateKt__DerivedStateKt;->access$getCalculationBlockNestedLevel$p()Landroidx/compose/runtime/SnapshotThreadLocal; +HSPLandroidx/compose/runtime/SnapshotStateKt__DerivedStateKt;->derivedStateObservers()Landroidx/compose/runtime/collection/MutableVector; +HSPLandroidx/compose/runtime/SnapshotStateKt__DerivedStateKt;->derivedStateOf(Landroidx/compose/runtime/SnapshotMutationPolicy;Lkotlin/jvm/functions/Function0;)Landroidx/compose/runtime/State; +HSPLandroidx/compose/runtime/SnapshotStateKt__DerivedStateKt;->derivedStateOf(Lkotlin/jvm/functions/Function0;)Landroidx/compose/runtime/State; +Landroidx/compose/runtime/SnapshotStateKt__ProduceStateKt; +HSPLandroidx/compose/runtime/SnapshotStateKt__ProduceStateKt;->produceState(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +Landroidx/compose/runtime/SnapshotStateKt__ProduceStateKt$produceState$3; +HSPLandroidx/compose/runtime/SnapshotStateKt__ProduceStateKt$produceState$3;->(Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/MutableState;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/runtime/SnapshotStateKt__ProduceStateKt$produceState$3;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/runtime/SnapshotStateKt__ProduceStateKt$produceState$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt;->access$intersects(Ljava/util/Set;Ljava/util/Set;)Z +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt;->collectAsState(Lkotlinx/coroutines/flow/Flow;Ljava/lang/Object;Lkotlin/coroutines/CoroutineContext;Landroidx/compose/runtime/Composer;II)Landroidx/compose/runtime/State; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt;->collectAsState(Lkotlinx/coroutines/flow/StateFlow;Lkotlin/coroutines/CoroutineContext;Landroidx/compose/runtime/Composer;II)Landroidx/compose/runtime/State; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt;->intersects$SnapshotStateKt__SnapshotFlowKt(Ljava/util/Set;Ljava/util/Set;)Z +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt;->snapshotFlow(Lkotlin/jvm/functions/Function0;)Lkotlinx/coroutines/flow/Flow; +Landroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$collectAsState$1; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$collectAsState$1;->(Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$collectAsState$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$collectAsState$1;->invoke(Landroidx/compose/runtime/ProduceStateScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$collectAsState$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$collectAsState$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$collectAsState$1$1; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$collectAsState$1$1;->(Landroidx/compose/runtime/ProduceStateScope;)V +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$collectAsState$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1;->(Lkotlin/jvm/functions/Function0;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1$readObserver$1; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1$readObserver$1;->(Ljava/util/Set;)V +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1$readObserver$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1$readObserver$1;->invoke(Ljava/lang/Object;)V +Landroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1$unregisterApplyObserver$1; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1$unregisterApplyObserver$1;->(Lkotlinx/coroutines/channels/Channel;)V +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1$unregisterApplyObserver$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1$unregisterApplyObserver$1;->invoke(Ljava/util/Set;Landroidx/compose/runtime/snapshots/Snapshot;)V +Landroidx/compose/runtime/SnapshotStateKt__SnapshotMutationPolicyKt; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotMutationPolicyKt;->neverEqualPolicy()Landroidx/compose/runtime/SnapshotMutationPolicy; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotMutationPolicyKt;->referentialEqualityPolicy()Landroidx/compose/runtime/SnapshotMutationPolicy; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotMutationPolicyKt;->structuralEqualityPolicy()Landroidx/compose/runtime/SnapshotMutationPolicy; +Landroidx/compose/runtime/SnapshotStateKt__SnapshotStateKt; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotStateKt;->mutableStateListOf()Landroidx/compose/runtime/snapshots/SnapshotStateList; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotStateKt;->mutableStateListOf([Ljava/lang/Object;)Landroidx/compose/runtime/snapshots/SnapshotStateList; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotStateKt;->mutableStateMapOf()Landroidx/compose/runtime/snapshots/SnapshotStateMap; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotStateKt;->mutableStateOf$default(Ljava/lang/Object;Landroidx/compose/runtime/SnapshotMutationPolicy;ILjava/lang/Object;)Landroidx/compose/runtime/MutableState; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotStateKt;->mutableStateOf(Ljava/lang/Object;Landroidx/compose/runtime/SnapshotMutationPolicy;)Landroidx/compose/runtime/MutableState; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotStateKt;->rememberUpdatedState(Ljava/lang/Object;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +Landroidx/compose/runtime/SnapshotThreadLocal; +HSPLandroidx/compose/runtime/SnapshotThreadLocal;->()V +HSPLandroidx/compose/runtime/SnapshotThreadLocal;->get()Ljava/lang/Object; +HSPLandroidx/compose/runtime/SnapshotThreadLocal;->set(Ljava/lang/Object;)V +Landroidx/compose/runtime/Stack; +HSPLandroidx/compose/runtime/Stack;->()V +HSPLandroidx/compose/runtime/Stack;->clear()V +HSPLandroidx/compose/runtime/Stack;->getSize()I +HSPLandroidx/compose/runtime/Stack;->isEmpty()Z +HSPLandroidx/compose/runtime/Stack;->isNotEmpty()Z +HSPLandroidx/compose/runtime/Stack;->peek()Ljava/lang/Object; +HSPLandroidx/compose/runtime/Stack;->peek(I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Stack;->pop()Ljava/lang/Object; +HSPLandroidx/compose/runtime/Stack;->push(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/Stack;->toArray()[Ljava/lang/Object; +Landroidx/compose/runtime/State; +Landroidx/compose/runtime/StaticProvidableCompositionLocal; +HSPLandroidx/compose/runtime/StaticProvidableCompositionLocal;->(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/runtime/StaticProvidableCompositionLocal;->provided$runtime_release(Ljava/lang/Object;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +Landroidx/compose/runtime/StaticValueHolder; +HSPLandroidx/compose/runtime/StaticValueHolder;->(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/StaticValueHolder;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/StaticValueHolder;->getValue()Ljava/lang/Object; +Landroidx/compose/runtime/StructuralEqualityPolicy; +HSPLandroidx/compose/runtime/StructuralEqualityPolicy;->()V +HSPLandroidx/compose/runtime/StructuralEqualityPolicy;->()V +HSPLandroidx/compose/runtime/StructuralEqualityPolicy;->equivalent(Ljava/lang/Object;Ljava/lang/Object;)Z +Landroidx/compose/runtime/Trace; +HSPLandroidx/compose/runtime/Trace;->()V +HSPLandroidx/compose/runtime/Trace;->()V +HSPLandroidx/compose/runtime/Trace;->beginSection(Ljava/lang/String;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Trace;->endSection(Ljava/lang/Object;)V +Landroidx/compose/runtime/Updater; +HSPLandroidx/compose/runtime/Updater;->constructor-impl(Landroidx/compose/runtime/Composer;)Landroidx/compose/runtime/Composer; +HSPLandroidx/compose/runtime/Updater;->set-impl(Landroidx/compose/runtime/Composer;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)V +Landroidx/compose/runtime/WeakReference; +HSPLandroidx/compose/runtime/WeakReference;->(Ljava/lang/Object;)V +Landroidx/compose/runtime/collection/IdentityArrayIntMap; +HSPLandroidx/compose/runtime/collection/IdentityArrayIntMap;->()V +HSPLandroidx/compose/runtime/collection/IdentityArrayIntMap;->access$setSize$p(Landroidx/compose/runtime/collection/IdentityArrayIntMap;I)V +HSPLandroidx/compose/runtime/collection/IdentityArrayIntMap;->add(Ljava/lang/Object;I)I +HSPLandroidx/compose/runtime/collection/IdentityArrayIntMap;->find(Ljava/lang/Object;)I +HSPLandroidx/compose/runtime/collection/IdentityArrayIntMap;->getKeys()[Ljava/lang/Object; +HSPLandroidx/compose/runtime/collection/IdentityArrayIntMap;->getSize()I +HSPLandroidx/compose/runtime/collection/IdentityArrayIntMap;->getValues()[I +Landroidx/compose/runtime/collection/IdentityArrayMap; +HSPLandroidx/compose/runtime/collection/IdentityArrayMap;->(I)V +HSPLandroidx/compose/runtime/collection/IdentityArrayMap;->(IILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/collection/IdentityArrayMap;->access$setSize$p(Landroidx/compose/runtime/collection/IdentityArrayMap;I)V +HSPLandroidx/compose/runtime/collection/IdentityArrayMap;->contains(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/collection/IdentityArrayMap;->find(Ljava/lang/Object;)I +HSPLandroidx/compose/runtime/collection/IdentityArrayMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/collection/IdentityArrayMap;->getKeys()[Ljava/lang/Object; +HSPLandroidx/compose/runtime/collection/IdentityArrayMap;->getSize()I +HSPLandroidx/compose/runtime/collection/IdentityArrayMap;->getValues()[Ljava/lang/Object; +HSPLandroidx/compose/runtime/collection/IdentityArrayMap;->isNotEmpty()Z +HSPLandroidx/compose/runtime/collection/IdentityArrayMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/collection/IdentityArrayMap;->set(Ljava/lang/Object;Ljava/lang/Object;)V +Landroidx/compose/runtime/collection/IdentityArraySet; +HSPLandroidx/compose/runtime/collection/IdentityArraySet;->()V +HSPLandroidx/compose/runtime/collection/IdentityArraySet;->access$setSize$p(Landroidx/compose/runtime/collection/IdentityArraySet;I)V +HSPLandroidx/compose/runtime/collection/IdentityArraySet;->add(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/collection/IdentityArraySet;->addAll(Ljava/util/Collection;)V +HSPLandroidx/compose/runtime/collection/IdentityArraySet;->clear()V +HSPLandroidx/compose/runtime/collection/IdentityArraySet;->contains(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/collection/IdentityArraySet;->find(Ljava/lang/Object;)I +HSPLandroidx/compose/runtime/collection/IdentityArraySet;->getSize()I +HSPLandroidx/compose/runtime/collection/IdentityArraySet;->getValues()[Ljava/lang/Object; +HSPLandroidx/compose/runtime/collection/IdentityArraySet;->isEmpty()Z +HSPLandroidx/compose/runtime/collection/IdentityArraySet;->isNotEmpty()Z +HSPLandroidx/compose/runtime/collection/IdentityArraySet;->iterator()Ljava/util/Iterator; +HSPLandroidx/compose/runtime/collection/IdentityArraySet;->remove(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/collection/IdentityArraySet;->size()I +Landroidx/compose/runtime/collection/IdentityArraySet$iterator$1; +HSPLandroidx/compose/runtime/collection/IdentityArraySet$iterator$1;->(Landroidx/compose/runtime/collection/IdentityArraySet;)V +HSPLandroidx/compose/runtime/collection/IdentityArraySet$iterator$1;->hasNext()Z +HSPLandroidx/compose/runtime/collection/IdentityArraySet$iterator$1;->next()Ljava/lang/Object; +Landroidx/compose/runtime/collection/IdentityScopeMap; +HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->()V +HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->access$find(Landroidx/compose/runtime/collection/IdentityScopeMap;Ljava/lang/Object;)I +HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->access$scopeSetAt(Landroidx/compose/runtime/collection/IdentityScopeMap;I)Landroidx/compose/runtime/collection/IdentityArraySet; +HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->add(Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->contains(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->find(Ljava/lang/Object;)I +HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->getOrCreateIdentitySet(Ljava/lang/Object;)Landroidx/compose/runtime/collection/IdentityArraySet; +HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->getScopeSets()[Landroidx/compose/runtime/collection/IdentityArraySet; +HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->getSize()I +HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->getValueOrder()[I +HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->getValues()[Ljava/lang/Object; +HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->remove(Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->removeScope(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->scopeSetAt(I)Landroidx/compose/runtime/collection/IdentityArraySet; +HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->setSize(I)V +Landroidx/compose/runtime/collection/IntMap; +HSPLandroidx/compose/runtime/collection/IntMap;->(I)V +HSPLandroidx/compose/runtime/collection/IntMap;->(IILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/collection/IntMap;->(Landroid/util/SparseArray;)V +HSPLandroidx/compose/runtime/collection/IntMap;->clear()V +HSPLandroidx/compose/runtime/collection/IntMap;->get(I)Ljava/lang/Object; +Landroidx/compose/runtime/collection/MutableVector; +HSPLandroidx/compose/runtime/collection/MutableVector;->()V +HSPLandroidx/compose/runtime/collection/MutableVector;->([Ljava/lang/Object;I)V +HSPLandroidx/compose/runtime/collection/MutableVector;->add(ILjava/lang/Object;)V +HSPLandroidx/compose/runtime/collection/MutableVector;->add(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/collection/MutableVector;->addAll(ILandroidx/compose/runtime/collection/MutableVector;)Z +HSPLandroidx/compose/runtime/collection/MutableVector;->asMutableList()Ljava/util/List; +HSPLandroidx/compose/runtime/collection/MutableVector;->clear()V +HSPLandroidx/compose/runtime/collection/MutableVector;->contains(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/collection/MutableVector;->ensureCapacity(I)V +HSPLandroidx/compose/runtime/collection/MutableVector;->getContent()[Ljava/lang/Object; +HSPLandroidx/compose/runtime/collection/MutableVector;->getSize()I +HSPLandroidx/compose/runtime/collection/MutableVector;->indexOf(Ljava/lang/Object;)I +HSPLandroidx/compose/runtime/collection/MutableVector;->isEmpty()Z +HSPLandroidx/compose/runtime/collection/MutableVector;->isNotEmpty()Z +HSPLandroidx/compose/runtime/collection/MutableVector;->remove(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/collection/MutableVector;->removeAt(I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/collection/MutableVector;->removeRange(II)V +HSPLandroidx/compose/runtime/collection/MutableVector;->set(ILjava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/collection/MutableVector;->sortWith(Ljava/util/Comparator;)V +Landroidx/compose/runtime/collection/MutableVector$MutableVectorList; +HSPLandroidx/compose/runtime/collection/MutableVector$MutableVectorList;->(Landroidx/compose/runtime/collection/MutableVector;)V +HSPLandroidx/compose/runtime/collection/MutableVector$MutableVectorList;->get(I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/collection/MutableVector$MutableVectorList;->getSize()I +HSPLandroidx/compose/runtime/collection/MutableVector$MutableVectorList;->indexOf(Ljava/lang/Object;)I +HSPLandroidx/compose/runtime/collection/MutableVector$MutableVectorList;->isEmpty()Z +HSPLandroidx/compose/runtime/collection/MutableVector$MutableVectorList;->iterator()Ljava/util/Iterator; +HSPLandroidx/compose/runtime/collection/MutableVector$MutableVectorList;->size()I +Landroidx/compose/runtime/collection/MutableVector$VectorListIterator; +HSPLandroidx/compose/runtime/collection/MutableVector$VectorListIterator;->(Ljava/util/List;I)V +HSPLandroidx/compose/runtime/collection/MutableVector$VectorListIterator;->hasNext()Z +HSPLandroidx/compose/runtime/collection/MutableVector$VectorListIterator;->next()Ljava/lang/Object; +Landroidx/compose/runtime/collection/MutableVectorKt; +HSPLandroidx/compose/runtime/collection/MutableVectorKt;->access$checkIndex(Ljava/util/List;I)V +HSPLandroidx/compose/runtime/collection/MutableVectorKt;->checkIndex(Ljava/util/List;I)V +Landroidx/compose/runtime/external/kotlinx/collections/immutable/ExtensionsKt; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/ExtensionsKt;->persistentHashMapOf()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/ExtensionsKt;->persistentListOf()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/ExtensionsKt;->persistentSetOf()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentSet; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/ImmutableCollection; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/ImmutableList; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/ImmutableMap; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/ImmutableSet; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentCollection; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentCollection$Builder; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList$Builder; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap$Builder; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentSet; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/AbstractListIterator; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/AbstractListIterator;->(II)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/AbstractListIterator;->getIndex()I +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/AbstractListIterator;->hasNext()Z +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/AbstractListIterator;->setIndex(I)V +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/AbstractPersistentList; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/AbstractPersistentList;->()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/AbstractPersistentList;->contains(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/AbstractPersistentList;->iterator()Ljava/util/Iterator; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/AbstractPersistentList;->listIterator()Ljava/util/ListIterator; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/AbstractPersistentList;->remove(Ljava/lang/Object;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/BufferIterator; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/BufferIterator;->([Ljava/lang/Object;II)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/BufferIterator;->next()Ljava/lang/Object; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->([Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->access$getEMPTY$cp()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->add(Ljava/lang/Object;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->addAll(Ljava/util/Collection;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->get(I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->getSize()I +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->indexOf(Ljava/lang/Object;)I +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->listIterator(I)Ljava/util/ListIterator; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->removeAt(I)Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->set(ILjava/lang/Object;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector$Companion; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector$Companion;->()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector$Companion;->getEMPTY()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/UtilsKt; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/UtilsKt;->persistentVectorOf()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/MapEntry; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/MapEntry;->(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/MapEntry;->getKey()Ljava/lang/Object; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/MapEntry;->getValue()Ljava/lang/Object; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;I)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->access$getEMPTY$cp()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->builder()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap$Builder; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->builder()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->containsKey(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->createEntries()Landroidx/compose/runtime/external/kotlinx/collections/immutable/ImmutableSet; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->getEntries()Ljava/util/Set; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->getNode$runtime_release()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->getSize()I +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap$Companion; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap$Companion;->()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap$Companion;->emptyOf$runtime_release()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBaseIterator; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBaseIterator;->(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;[Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBaseIterator;->checkHasNext()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBaseIterator;->ensureNextEntryIsReady()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBaseIterator;->hasNext()Z +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBaseIterator;->moveToNextNodeWithData(I)I +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBaseIterator;->next()Ljava/lang/Object; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->build()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->build()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->getModCount$runtime_release()I +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->getNode$runtime_release()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->getOwnership()Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->getSize()I +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->putAll(Ljava/util/Map;)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->setModCount$runtime_release(I)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->setOperationResult$runtime_release(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->setOwnership(Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership;)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->setSize(I)V +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapEntries; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapEntries;->(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapEntries;->getSize()I +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapEntries;->iterator()Ljava/util/Iterator; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapEntriesIterator; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapEntriesIterator;->(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;)V +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->(II[Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->(II[Ljava/lang/Object;Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership;)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->access$getEMPTY$cp()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->asInsertResult()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->bufferMoveEntryToNode(IIILjava/lang/Object;Ljava/lang/Object;ILandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership;)[Ljava/lang/Object; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->containsKey(ILjava/lang/Object;I)Z +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->elementsIdentityEquals(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;)Z +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->entryCount$runtime_release()I +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->entryKeyIndex$runtime_release(I)I +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->get(ILjava/lang/Object;I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->getBuffer$runtime_release()[Ljava/lang/Object; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->hasEntryAt$runtime_release(I)Z +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->hasNodeAt(I)Z +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->insertEntryAt(ILjava/lang/Object;Ljava/lang/Object;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->keyAtIndex(I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->makeNode(ILjava/lang/Object;Ljava/lang/Object;ILjava/lang/Object;Ljava/lang/Object;ILandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->mutableInsertEntryAt(ILjava/lang/Object;Ljava/lang/Object;Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->mutableMoveEntryToNode(IIILjava/lang/Object;Ljava/lang/Object;ILandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->mutablePut(ILjava/lang/Object;Ljava/lang/Object;ILandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->mutablePutAll(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;ILandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/DeltaCounter;Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->mutablePutAllFromOtherNodeCell(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;IILandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/DeltaCounter;Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->mutableUpdateValueAtIndex(ILjava/lang/Object;Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->nodeAtIndex$runtime_release(I)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->nodeIndex$runtime_release(I)I +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->put(ILjava/lang/Object;Ljava/lang/Object;I)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->valueAtKeyIndex(I)Ljava/lang/Object; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$Companion; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$Companion;->()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$Companion;->getEMPTY$runtime_release()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult;->(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;I)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult;->getNode()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult;->getSizeDelta()I +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;->()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;->getBuffer()[Ljava/lang/Object; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;->getIndex()I +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;->hasNextKey()Z +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;->hasNextNode()Z +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;->reset([Ljava/lang/Object;I)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;->reset([Ljava/lang/Object;II)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;->setIndex(I)V +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeEntriesIterator; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeEntriesIterator;->()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeEntriesIterator;->next()Ljava/lang/Object; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeEntriesIterator;->next()Ljava/util/Map$Entry; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeKt; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeKt;->access$insertEntryAtIndex([Ljava/lang/Object;ILjava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeKt;->access$replaceEntryWithNode([Ljava/lang/Object;IILandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;)[Ljava/lang/Object; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeKt;->indexSegment(II)I +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeKt;->insertEntryAtIndex([Ljava/lang/Object;ILjava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeKt;->replaceEntryWithNode([Ljava/lang/Object;IILandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;)[Ljava/lang/Object; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/Links; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/Links;->()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/Links;->(Ljava/lang/Object;Ljava/lang/Object;)V +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet;->()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet;->(Ljava/lang/Object;Ljava/lang/Object;Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet;->access$getEMPTY$cp()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet;->add(Ljava/lang/Object;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentSet; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet;->getSize()I +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet$Companion; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet$Companion;->()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet$Companion;->emptyOf$runtime_release()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentSet; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/CommonFunctionsKt; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/CommonFunctionsKt;->assert(Z)V +Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/DeltaCounter; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/DeltaCounter;->(I)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/DeltaCounter;->(IILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/DeltaCounter;->getCount()I +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/DeltaCounter;->setCount(I)V +Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/EndOfChain; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/EndOfChain;->()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/EndOfChain;->()V +Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/ListImplementation; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/ListImplementation;->()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/ListImplementation;->()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/ListImplementation;->checkElementIndex$runtime_release(II)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/ListImplementation;->checkPositionIndex$runtime_release(II)V +Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership;->()V +Landroidx/compose/runtime/internal/ComposableLambda; +Landroidx/compose/runtime/internal/ComposableLambdaImpl; +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl;->(IZ)V +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl;->invoke(Landroidx/compose/runtime/Composer;I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl;->invoke(Ljava/lang/Object;Landroidx/compose/runtime/Composer;I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl;->invoke(Ljava/lang/Object;Ljava/lang/Object;Landroidx/compose/runtime/Composer;I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Landroidx/compose/runtime/Composer;I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl;->trackRead(Landroidx/compose/runtime/Composer;)V +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl;->trackWrite()V +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl;->update(Ljava/lang/Object;)V +Landroidx/compose/runtime/internal/ComposableLambdaImpl$invoke$1; +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl$invoke$1;->(Landroidx/compose/runtime/internal/ComposableLambdaImpl;Ljava/lang/Object;I)V +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl$invoke$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl$invoke$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/internal/ComposableLambdaImpl$invoke$2; +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl$invoke$2;->(Landroidx/compose/runtime/internal/ComposableLambdaImpl;Ljava/lang/Object;Ljava/lang/Object;I)V +Landroidx/compose/runtime/internal/ComposableLambdaImpl$invoke$3; +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl$invoke$3;->(Landroidx/compose/runtime/internal/ComposableLambdaImpl;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;I)V +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl$invoke$3;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl$invoke$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/internal/ComposableLambdaKt; +HSPLandroidx/compose/runtime/internal/ComposableLambdaKt;->bitsForSlot(II)I +HSPLandroidx/compose/runtime/internal/ComposableLambdaKt;->composableLambda(Landroidx/compose/runtime/Composer;IZLjava/lang/Object;)Landroidx/compose/runtime/internal/ComposableLambda; +HSPLandroidx/compose/runtime/internal/ComposableLambdaKt;->composableLambdaInstance(IZLjava/lang/Object;)Landroidx/compose/runtime/internal/ComposableLambda; +HSPLandroidx/compose/runtime/internal/ComposableLambdaKt;->differentBits(I)I +HSPLandroidx/compose/runtime/internal/ComposableLambdaKt;->replacableWith(Landroidx/compose/runtime/RecomposeScope;Landroidx/compose/runtime/RecomposeScope;)Z +HSPLandroidx/compose/runtime/internal/ComposableLambdaKt;->sameBits(I)I +Landroidx/compose/runtime/internal/PersistentCompositionLocalHashMap; +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap;->()V +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap;->(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;I)V +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap;->access$getEmpty$cp()Landroidx/compose/runtime/internal/PersistentCompositionLocalHashMap; +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap;->builder()Landroidx/compose/runtime/PersistentCompositionLocalMap$Builder; +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap;->builder()Landroidx/compose/runtime/internal/PersistentCompositionLocalHashMap$Builder; +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap;->containsKey(Landroidx/compose/runtime/CompositionLocal;)Z +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap;->containsKey(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap;->get(Landroidx/compose/runtime/CompositionLocal;)Landroidx/compose/runtime/State; +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap;->get(Landroidx/compose/runtime/CompositionLocal;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/internal/PersistentCompositionLocalHashMap$Builder; +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap$Builder;->()V +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap$Builder;->(Landroidx/compose/runtime/internal/PersistentCompositionLocalHashMap;)V +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap$Builder;->build()Landroidx/compose/runtime/PersistentCompositionLocalMap; +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap$Builder;->build()Landroidx/compose/runtime/internal/PersistentCompositionLocalHashMap; +Landroidx/compose/runtime/internal/PersistentCompositionLocalHashMap$Companion; +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap$Companion;->()V +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap$Companion;->getEmpty()Landroidx/compose/runtime/internal/PersistentCompositionLocalHashMap; +Landroidx/compose/runtime/internal/PersistentCompositionLocalMapKt; +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalMapKt;->persistentCompositionLocalHashMapOf()Landroidx/compose/runtime/internal/PersistentCompositionLocalHashMap; +Landroidx/compose/runtime/internal/ThreadMap; +HSPLandroidx/compose/runtime/internal/ThreadMap;->(I[J[Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/internal/ThreadMap;->find(J)I +HSPLandroidx/compose/runtime/internal/ThreadMap;->get(J)Ljava/lang/Object; +HSPLandroidx/compose/runtime/internal/ThreadMap;->newWith(JLjava/lang/Object;)Landroidx/compose/runtime/internal/ThreadMap; +HSPLandroidx/compose/runtime/internal/ThreadMap;->trySet(JLjava/lang/Object;)Z +Landroidx/compose/runtime/internal/ThreadMapKt; +HSPLandroidx/compose/runtime/internal/ThreadMapKt;->()V +HSPLandroidx/compose/runtime/internal/ThreadMapKt;->getEmptyThreadMap()Landroidx/compose/runtime/internal/ThreadMap; +Landroidx/compose/runtime/saveable/ListSaverKt; +HSPLandroidx/compose/runtime/saveable/ListSaverKt;->listSaver(Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/saveable/Saver; +Landroidx/compose/runtime/saveable/ListSaverKt$listSaver$1; +HSPLandroidx/compose/runtime/saveable/ListSaverKt$listSaver$1;->(Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/runtime/saveable/ListSaverKt$listSaver$1;->invoke(Landroidx/compose/runtime/saveable/SaverScope;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/saveable/ListSaverKt$listSaver$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/saveable/RememberSaveableKt; +HSPLandroidx/compose/runtime/saveable/RememberSaveableKt;->()V +HSPLandroidx/compose/runtime/saveable/RememberSaveableKt;->access$requireCanBeSaved(Landroidx/compose/runtime/saveable/SaveableStateRegistry;Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/saveable/RememberSaveableKt;->rememberSaveable([Ljava/lang/Object;Landroidx/compose/runtime/saveable/Saver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;II)Ljava/lang/Object; +HSPLandroidx/compose/runtime/saveable/RememberSaveableKt;->requireCanBeSaved(Landroidx/compose/runtime/saveable/SaveableStateRegistry;Ljava/lang/Object;)V +Landroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1; +HSPLandroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1;->(Landroidx/compose/runtime/saveable/SaveableStateRegistry;Ljava/lang/String;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1$invoke$$inlined$onDispose$1;->(Landroidx/compose/runtime/saveable/SaveableStateRegistry$Entry;)V +HSPLandroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1$invoke$$inlined$onDispose$1;->dispose()V +Landroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1$valueProvider$1; +HSPLandroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1$valueProvider$1;->(Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/saveable/SaveableStateRegistry;)V +HSPLandroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1$valueProvider$1;->invoke()Ljava/lang/Object; +Landroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1$valueProvider$1$1$1; +HSPLandroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1$valueProvider$1$1$1;->(Landroidx/compose/runtime/saveable/SaveableStateRegistry;)V +HSPLandroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1$valueProvider$1$1$1;->canBeSaved(Ljava/lang/Object;)Z +Landroidx/compose/runtime/saveable/SaveableStateHolder; +Landroidx/compose/runtime/saveable/SaveableStateHolderImpl; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;->()V +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;->(Ljava/util/Map;)V +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;->(Ljava/util/Map;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;->SaveableStateProvider(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;->access$getRegistryHolders$p(Landroidx/compose/runtime/saveable/SaveableStateHolderImpl;)Ljava/util/Map; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;->access$getSavedStates$p(Landroidx/compose/runtime/saveable/SaveableStateHolderImpl;)Ljava/util/Map; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;->access$getSaver$cp()Landroidx/compose/runtime/saveable/Saver; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;->access$saveAll(Landroidx/compose/runtime/saveable/SaveableStateHolderImpl;)Ljava/util/Map; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;->getParentSaveableStateRegistry()Landroidx/compose/runtime/saveable/SaveableStateRegistry; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;->saveAll()Ljava/util/Map; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;->setParentSaveableStateRegistry(Landroidx/compose/runtime/saveable/SaveableStateRegistry;)V +Landroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion;->()V +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion;->getSaver()Landroidx/compose/runtime/saveable/Saver; +Landroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion$Saver$1; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion$Saver$1;->()V +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion$Saver$1;->()V +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion$Saver$1;->invoke(Landroidx/compose/runtime/saveable/SaverScope;Landroidx/compose/runtime/saveable/SaveableStateHolderImpl;)Ljava/util/Map; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion$Saver$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion$Saver$2; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion$Saver$2;->()V +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion$Saver$2;->()V +Landroidx/compose/runtime/saveable/SaveableStateHolderImpl$RegistryHolder; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$RegistryHolder;->(Landroidx/compose/runtime/saveable/SaveableStateHolderImpl;Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$RegistryHolder;->getRegistry()Landroidx/compose/runtime/saveable/SaveableStateRegistry; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$RegistryHolder;->saveTo(Ljava/util/Map;)V +Landroidx/compose/runtime/saveable/SaveableStateHolderImpl$RegistryHolder$registry$1; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$RegistryHolder$registry$1;->(Landroidx/compose/runtime/saveable/SaveableStateHolderImpl;)V +Landroidx/compose/runtime/saveable/SaveableStateHolderImpl$SaveableStateProvider$1$1; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$SaveableStateProvider$1$1;->(Landroidx/compose/runtime/saveable/SaveableStateHolderImpl;Ljava/lang/Object;Landroidx/compose/runtime/saveable/SaveableStateHolderImpl$RegistryHolder;)V +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$SaveableStateProvider$1$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$SaveableStateProvider$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/saveable/SaveableStateHolderImpl$SaveableStateProvider$1$1$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$SaveableStateProvider$1$1$invoke$$inlined$onDispose$1;->(Landroidx/compose/runtime/saveable/SaveableStateHolderImpl$RegistryHolder;Landroidx/compose/runtime/saveable/SaveableStateHolderImpl;Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$SaveableStateProvider$1$1$invoke$$inlined$onDispose$1;->dispose()V +Landroidx/compose/runtime/saveable/SaveableStateHolderKt; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderKt;->rememberSaveableStateHolder(Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/saveable/SaveableStateHolder; +Landroidx/compose/runtime/saveable/SaveableStateHolderKt$rememberSaveableStateHolder$1; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderKt$rememberSaveableStateHolder$1;->()V +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderKt$rememberSaveableStateHolder$1;->()V +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderKt$rememberSaveableStateHolder$1;->invoke()Landroidx/compose/runtime/saveable/SaveableStateHolderImpl; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderKt$rememberSaveableStateHolder$1;->invoke()Ljava/lang/Object; +Landroidx/compose/runtime/saveable/SaveableStateRegistry; +Landroidx/compose/runtime/saveable/SaveableStateRegistry$Entry; +Landroidx/compose/runtime/saveable/SaveableStateRegistryImpl; +HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryImpl;->(Ljava/util/Map;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryImpl;->access$getValueProviders$p(Landroidx/compose/runtime/saveable/SaveableStateRegistryImpl;)Ljava/util/Map; +HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryImpl;->canBeSaved(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryImpl;->consumeRestored(Ljava/lang/String;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryImpl;->performSave()Ljava/util/Map; +HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryImpl;->registerProvider(Ljava/lang/String;Lkotlin/jvm/functions/Function0;)Landroidx/compose/runtime/saveable/SaveableStateRegistry$Entry; +Landroidx/compose/runtime/saveable/SaveableStateRegistryImpl$registerProvider$3; +HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryImpl$registerProvider$3;->(Landroidx/compose/runtime/saveable/SaveableStateRegistryImpl;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryImpl$registerProvider$3;->unregister()V +Landroidx/compose/runtime/saveable/SaveableStateRegistryKt; +HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryKt;->()V +HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryKt;->SaveableStateRegistry(Ljava/util/Map;Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/saveable/SaveableStateRegistry; +HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryKt;->getLocalSaveableStateRegistry()Landroidx/compose/runtime/ProvidableCompositionLocal; +Landroidx/compose/runtime/saveable/SaveableStateRegistryKt$LocalSaveableStateRegistry$1; +HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryKt$LocalSaveableStateRegistry$1;->()V +HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryKt$LocalSaveableStateRegistry$1;->()V +Landroidx/compose/runtime/saveable/Saver; +Landroidx/compose/runtime/saveable/SaverKt; +HSPLandroidx/compose/runtime/saveable/SaverKt;->()V +HSPLandroidx/compose/runtime/saveable/SaverKt;->Saver(Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/saveable/Saver; +Landroidx/compose/runtime/saveable/SaverKt$AutoSaver$1; +HSPLandroidx/compose/runtime/saveable/SaverKt$AutoSaver$1;->()V +HSPLandroidx/compose/runtime/saveable/SaverKt$AutoSaver$1;->()V +Landroidx/compose/runtime/saveable/SaverKt$AutoSaver$2; +HSPLandroidx/compose/runtime/saveable/SaverKt$AutoSaver$2;->()V +HSPLandroidx/compose/runtime/saveable/SaverKt$AutoSaver$2;->()V +Landroidx/compose/runtime/saveable/SaverKt$Saver$1; +HSPLandroidx/compose/runtime/saveable/SaverKt$Saver$1;->(Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/runtime/saveable/SaverKt$Saver$1;->save(Landroidx/compose/runtime/saveable/SaverScope;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/saveable/SaverScope; +Landroidx/compose/runtime/snapshots/GlobalSnapshot; +HSPLandroidx/compose/runtime/snapshots/GlobalSnapshot;->(ILandroidx/compose/runtime/snapshots/SnapshotIdSet;)V +HSPLandroidx/compose/runtime/snapshots/GlobalSnapshot;->dispose()V +HSPLandroidx/compose/runtime/snapshots/GlobalSnapshot;->notifyObjectsInitialized$runtime_release()V +HSPLandroidx/compose/runtime/snapshots/GlobalSnapshot;->takeNestedMutableSnapshot(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/MutableSnapshot; +HSPLandroidx/compose/runtime/snapshots/GlobalSnapshot;->takeNestedSnapshot(Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/Snapshot; +Landroidx/compose/runtime/snapshots/GlobalSnapshot$takeNestedMutableSnapshot$1; +HSPLandroidx/compose/runtime/snapshots/GlobalSnapshot$takeNestedMutableSnapshot$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/runtime/snapshots/GlobalSnapshot$takeNestedMutableSnapshot$1;->invoke(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)Landroidx/compose/runtime/snapshots/MutableSnapshot; +HSPLandroidx/compose/runtime/snapshots/GlobalSnapshot$takeNestedMutableSnapshot$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/snapshots/GlobalSnapshot$takeNestedSnapshot$1; +HSPLandroidx/compose/runtime/snapshots/GlobalSnapshot$takeNestedSnapshot$1;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/runtime/snapshots/GlobalSnapshot$takeNestedSnapshot$1;->invoke(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)Landroidx/compose/runtime/snapshots/ReadonlySnapshot; +HSPLandroidx/compose/runtime/snapshots/GlobalSnapshot$takeNestedSnapshot$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/snapshots/ListUtilsKt; +HSPLandroidx/compose/runtime/snapshots/ListUtilsKt;->fastToSet(Ljava/util/List;)Ljava/util/Set; +Landroidx/compose/runtime/snapshots/MutableSnapshot; +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->()V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->(ILandroidx/compose/runtime/snapshots/SnapshotIdSet;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->advance$runtime_release()V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->apply()Landroidx/compose/runtime/snapshots/SnapshotApplyResult; +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->closeLocked$runtime_release()V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->dispose()V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->getApplied$runtime_release()Z +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->getModified$runtime_release()Landroidx/compose/runtime/collection/IdentityArraySet; +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->getPreviousIds$runtime_release()Landroidx/compose/runtime/snapshots/SnapshotIdSet; +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->getPreviousPinnedSnapshots$runtime_release()[I +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->getReadObserver$runtime_release()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->getReadOnly()Z +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->getWriteCount$runtime_release()I +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->getWriteObserver$runtime_release()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->innerApplyLocked$runtime_release(ILjava/util/Map;Landroidx/compose/runtime/snapshots/SnapshotIdSet;)Landroidx/compose/runtime/snapshots/SnapshotApplyResult; +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->nestedActivated$runtime_release(Landroidx/compose/runtime/snapshots/Snapshot;)V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->nestedDeactivated$runtime_release(Landroidx/compose/runtime/snapshots/Snapshot;)V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->notifyObjectsInitialized$runtime_release()V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->recordModified$runtime_release(Landroidx/compose/runtime/snapshots/StateObject;)V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->recordPrevious$runtime_release(I)V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->recordPreviousList$runtime_release(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->recordPreviousPinnedSnapshot$runtime_release(I)V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->recordPreviousPinnedSnapshots$runtime_release([I)V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->releasePinnedSnapshotsForCloseLocked$runtime_release()V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->releasePreviouslyPinnedSnapshotsLocked()V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->setApplied$runtime_release(Z)V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->setModified(Landroidx/compose/runtime/collection/IdentityArraySet;)V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->setWriteCount$runtime_release(I)V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->takeNestedMutableSnapshot(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/MutableSnapshot; +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->validateNotAppliedOrPinned()V +Landroidx/compose/runtime/snapshots/MutableSnapshot$Companion; +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot$Companion;->()V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/runtime/snapshots/NestedMutableSnapshot; +HSPLandroidx/compose/runtime/snapshots/NestedMutableSnapshot;->(ILandroidx/compose/runtime/snapshots/SnapshotIdSet;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/snapshots/MutableSnapshot;)V +HSPLandroidx/compose/runtime/snapshots/NestedMutableSnapshot;->apply()Landroidx/compose/runtime/snapshots/SnapshotApplyResult; +HSPLandroidx/compose/runtime/snapshots/NestedMutableSnapshot;->deactivate()V +HSPLandroidx/compose/runtime/snapshots/NestedMutableSnapshot;->dispose()V +Landroidx/compose/runtime/snapshots/NestedReadonlySnapshot; +HSPLandroidx/compose/runtime/snapshots/NestedReadonlySnapshot;->(ILandroidx/compose/runtime/snapshots/SnapshotIdSet;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/snapshots/Snapshot;)V +HSPLandroidx/compose/runtime/snapshots/NestedReadonlySnapshot;->dispose()V +HSPLandroidx/compose/runtime/snapshots/NestedReadonlySnapshot;->getReadObserver$runtime_release()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/runtime/snapshots/NestedReadonlySnapshot;->takeNestedSnapshot(Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/NestedReadonlySnapshot; +HSPLandroidx/compose/runtime/snapshots/NestedReadonlySnapshot;->takeNestedSnapshot(Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/Snapshot; +Landroidx/compose/runtime/snapshots/NestedReadonlySnapshot$readObserver$1$1$1; +HSPLandroidx/compose/runtime/snapshots/NestedReadonlySnapshot$readObserver$1$1$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/runtime/snapshots/NestedReadonlySnapshot$readObserver$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/NestedReadonlySnapshot$readObserver$1$1$1;->invoke(Ljava/lang/Object;)V +Landroidx/compose/runtime/snapshots/ObserverHandle; +Landroidx/compose/runtime/snapshots/ReadonlySnapshot; +HSPLandroidx/compose/runtime/snapshots/ReadonlySnapshot;->(ILandroidx/compose/runtime/snapshots/SnapshotIdSet;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/runtime/snapshots/ReadonlySnapshot;->dispose()V +HSPLandroidx/compose/runtime/snapshots/ReadonlySnapshot;->getReadObserver$runtime_release()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/runtime/snapshots/ReadonlySnapshot;->nestedActivated$runtime_release(Landroidx/compose/runtime/snapshots/Snapshot;)V +HSPLandroidx/compose/runtime/snapshots/ReadonlySnapshot;->nestedDeactivated$runtime_release(Landroidx/compose/runtime/snapshots/Snapshot;)V +HSPLandroidx/compose/runtime/snapshots/ReadonlySnapshot;->notifyObjectsInitialized$runtime_release()V +HSPLandroidx/compose/runtime/snapshots/ReadonlySnapshot;->takeNestedSnapshot(Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/Snapshot; +Landroidx/compose/runtime/snapshots/Snapshot; +HSPLandroidx/compose/runtime/snapshots/Snapshot;->()V +HSPLandroidx/compose/runtime/snapshots/Snapshot;->(ILandroidx/compose/runtime/snapshots/SnapshotIdSet;)V +HSPLandroidx/compose/runtime/snapshots/Snapshot;->(ILandroidx/compose/runtime/snapshots/SnapshotIdSet;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/snapshots/Snapshot;->closeAndReleasePinning$runtime_release()V +HSPLandroidx/compose/runtime/snapshots/Snapshot;->closeLocked$runtime_release()V +HSPLandroidx/compose/runtime/snapshots/Snapshot;->dispose()V +HSPLandroidx/compose/runtime/snapshots/Snapshot;->getDisposed$runtime_release()Z +HSPLandroidx/compose/runtime/snapshots/Snapshot;->getId()I +HSPLandroidx/compose/runtime/snapshots/Snapshot;->getInvalid$runtime_release()Landroidx/compose/runtime/snapshots/SnapshotIdSet; +HSPLandroidx/compose/runtime/snapshots/Snapshot;->getWriteCount$runtime_release()I +HSPLandroidx/compose/runtime/snapshots/Snapshot;->makeCurrent()Landroidx/compose/runtime/snapshots/Snapshot; +HSPLandroidx/compose/runtime/snapshots/Snapshot;->releasePinnedSnapshotLocked$runtime_release()V +HSPLandroidx/compose/runtime/snapshots/Snapshot;->releasePinnedSnapshotsForCloseLocked$runtime_release()V +HSPLandroidx/compose/runtime/snapshots/Snapshot;->restoreCurrent(Landroidx/compose/runtime/snapshots/Snapshot;)V +HSPLandroidx/compose/runtime/snapshots/Snapshot;->setDisposed$runtime_release(Z)V +HSPLandroidx/compose/runtime/snapshots/Snapshot;->setId$runtime_release(I)V +HSPLandroidx/compose/runtime/snapshots/Snapshot;->setInvalid$runtime_release(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)V +HSPLandroidx/compose/runtime/snapshots/Snapshot;->takeoverPinnedSnapshot$runtime_release()I +HSPLandroidx/compose/runtime/snapshots/Snapshot;->validateNotDisposed$runtime_release()V +Landroidx/compose/runtime/snapshots/Snapshot$Companion; +HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion;->()V +HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion;->createNonObservableSnapshot()Landroidx/compose/runtime/snapshots/Snapshot; +HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion;->getCurrent()Landroidx/compose/runtime/snapshots/Snapshot; +HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion;->notifyObjectsInitialized()V +HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion;->observe(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion;->registerApplyObserver(Lkotlin/jvm/functions/Function2;)Landroidx/compose/runtime/snapshots/ObserverHandle; +HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion;->registerGlobalWriteObserver(Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/ObserverHandle; +HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion;->sendApplyNotifications()V +HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion;->takeMutableSnapshot(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/MutableSnapshot; +HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion;->takeSnapshot(Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/Snapshot; +Landroidx/compose/runtime/snapshots/Snapshot$Companion$registerApplyObserver$2; +HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion$registerApplyObserver$2;->(Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion$registerApplyObserver$2;->dispose()V +Landroidx/compose/runtime/snapshots/Snapshot$Companion$registerGlobalWriteObserver$2; +HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion$registerGlobalWriteObserver$2;->(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/runtime/snapshots/SnapshotApplyResult; +HSPLandroidx/compose/runtime/snapshots/SnapshotApplyResult;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotApplyResult;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotApplyResult;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/runtime/snapshots/SnapshotApplyResult$Failure; +Landroidx/compose/runtime/snapshots/SnapshotApplyResult$Success; +HSPLandroidx/compose/runtime/snapshots/SnapshotApplyResult$Success;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotApplyResult$Success;->()V +Landroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap; +HSPLandroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;->add(I)I +HSPLandroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;->allocateHandle()I +HSPLandroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;->ensure(I)V +HSPLandroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;->freeHandle(I)V +HSPLandroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;->lowestOrDefault(I)I +HSPLandroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;->remove(I)V +HSPLandroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;->shiftDown(I)V +HSPLandroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;->shiftUp(I)V +HSPLandroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;->swap(II)V +Landroidx/compose/runtime/snapshots/SnapshotIdSet; +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->(JJI[I)V +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->access$getBelowBound$p(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)[I +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->access$getEMPTY$cp()Landroidx/compose/runtime/snapshots/SnapshotIdSet; +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->access$getLowerBound$p(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)I +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->access$getLowerSet$p(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)J +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->access$getUpperSet$p(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)J +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->andNot(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)Landroidx/compose/runtime/snapshots/SnapshotIdSet; +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->clear(I)Landroidx/compose/runtime/snapshots/SnapshotIdSet; +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->get(I)Z +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->iterator()Ljava/util/Iterator; +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->lowest(I)I +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->or(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)Landroidx/compose/runtime/snapshots/SnapshotIdSet; +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->set(I)Landroidx/compose/runtime/snapshots/SnapshotIdSet; +Landroidx/compose/runtime/snapshots/SnapshotIdSet$Companion; +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet$Companion;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet$Companion;->getEMPTY()Landroidx/compose/runtime/snapshots/SnapshotIdSet; +Landroidx/compose/runtime/snapshots/SnapshotIdSet$iterator$1; +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet$iterator$1;->(Landroidx/compose/runtime/snapshots/SnapshotIdSet;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet$iterator$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet$iterator$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/snapshots/SnapshotIdSetKt; +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSetKt;->access$lowestBitOf(J)I +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSetKt;->binarySearch([II)I +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSetKt;->lowestBitOf(J)I +Landroidx/compose/runtime/snapshots/SnapshotKt; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$advanceGlobalSnapshot()V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$advanceGlobalSnapshot(Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$checkAndOverwriteUnusedRecordsLocked()V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$getApplyObservers$p()Ljava/util/List; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$getCurrentGlobalSnapshot$p()Ljava/util/concurrent/atomic/AtomicReference; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$getEmptyLambda$p()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$getGlobalWriteObservers$p()Ljava/util/List; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$getNextSnapshotId$p()I +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$getOpenSnapshots$p()Landroidx/compose/runtime/snapshots/SnapshotIdSet; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$getThreadSnapshot$p()Landroidx/compose/runtime/SnapshotThreadLocal; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$mergedReadObserver(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Z)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$mergedWriteObserver(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$optimisticMerges(Landroidx/compose/runtime/snapshots/MutableSnapshot;Landroidx/compose/runtime/snapshots/MutableSnapshot;Landroidx/compose/runtime/snapshots/SnapshotIdSet;)Ljava/util/Map; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$processForUnusedRecordsLocked(Landroidx/compose/runtime/snapshots/StateObject;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$readable(Landroidx/compose/runtime/snapshots/StateRecord;ILandroidx/compose/runtime/snapshots/SnapshotIdSet;)Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$setNextSnapshotId$p(I)V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$setOpenSnapshots$p(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$takeNewGlobalSnapshot(Landroidx/compose/runtime/snapshots/Snapshot;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$takeNewSnapshot(Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/Snapshot; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$validateOpen(Landroidx/compose/runtime/snapshots/Snapshot;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->addRange(Landroidx/compose/runtime/snapshots/SnapshotIdSet;II)Landroidx/compose/runtime/snapshots/SnapshotIdSet; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->advanceGlobalSnapshot()V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->advanceGlobalSnapshot(Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->checkAndOverwriteUnusedRecordsLocked()V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->createTransparentSnapshotWithNoParentReadObserver$default(Landroidx/compose/runtime/snapshots/Snapshot;Lkotlin/jvm/functions/Function1;ZILjava/lang/Object;)Landroidx/compose/runtime/snapshots/Snapshot; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->createTransparentSnapshotWithNoParentReadObserver(Landroidx/compose/runtime/snapshots/Snapshot;Lkotlin/jvm/functions/Function1;Z)Landroidx/compose/runtime/snapshots/Snapshot; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->current(Landroidx/compose/runtime/snapshots/StateRecord;)Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->current(Landroidx/compose/runtime/snapshots/StateRecord;Landroidx/compose/runtime/snapshots/Snapshot;)Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->currentSnapshot()Landroidx/compose/runtime/snapshots/Snapshot; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->getLock()Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->getSnapshotInitializer()Landroidx/compose/runtime/snapshots/Snapshot; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->mergedReadObserver$default(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ZILjava/lang/Object;)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->mergedReadObserver(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Z)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->mergedWriteObserver(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->newOverwritableRecordLocked(Landroidx/compose/runtime/snapshots/StateRecord;Landroidx/compose/runtime/snapshots/StateObject;)Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->newWritableRecord(Landroidx/compose/runtime/snapshots/StateRecord;Landroidx/compose/runtime/snapshots/StateObject;Landroidx/compose/runtime/snapshots/Snapshot;)Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->newWritableRecordLocked(Landroidx/compose/runtime/snapshots/StateRecord;Landroidx/compose/runtime/snapshots/StateObject;Landroidx/compose/runtime/snapshots/Snapshot;)Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->notifyWrite(Landroidx/compose/runtime/snapshots/Snapshot;Landroidx/compose/runtime/snapshots/StateObject;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->optimisticMerges(Landroidx/compose/runtime/snapshots/MutableSnapshot;Landroidx/compose/runtime/snapshots/MutableSnapshot;Landroidx/compose/runtime/snapshots/SnapshotIdSet;)Ljava/util/Map; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->overwritableRecord(Landroidx/compose/runtime/snapshots/StateRecord;Landroidx/compose/runtime/snapshots/StateObject;Landroidx/compose/runtime/snapshots/Snapshot;Landroidx/compose/runtime/snapshots/StateRecord;)Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->overwriteUnusedRecordsLocked(Landroidx/compose/runtime/snapshots/StateObject;)Z +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->processForUnusedRecordsLocked(Landroidx/compose/runtime/snapshots/StateObject;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->readable(Landroidx/compose/runtime/snapshots/StateRecord;ILandroidx/compose/runtime/snapshots/SnapshotIdSet;)Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->readable(Landroidx/compose/runtime/snapshots/StateRecord;Landroidx/compose/runtime/snapshots/StateObject;)Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->releasePinningLocked(I)V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->takeNewGlobalSnapshot(Landroidx/compose/runtime/snapshots/Snapshot;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->takeNewSnapshot(Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/Snapshot; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->trackPinning(ILandroidx/compose/runtime/snapshots/SnapshotIdSet;)I +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->usedLocked(Landroidx/compose/runtime/snapshots/StateObject;)Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->valid(IILandroidx/compose/runtime/snapshots/SnapshotIdSet;)Z +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->valid(Landroidx/compose/runtime/snapshots/StateRecord;ILandroidx/compose/runtime/snapshots/SnapshotIdSet;)Z +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->validateOpen(Landroidx/compose/runtime/snapshots/Snapshot;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->writableRecord(Landroidx/compose/runtime/snapshots/StateRecord;Landroidx/compose/runtime/snapshots/StateObject;Landroidx/compose/runtime/snapshots/Snapshot;)Landroidx/compose/runtime/snapshots/StateRecord; +Landroidx/compose/runtime/snapshots/SnapshotKt$advanceGlobalSnapshot$3; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$advanceGlobalSnapshot$3;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$advanceGlobalSnapshot$3;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$advanceGlobalSnapshot$3;->invoke(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$advanceGlobalSnapshot$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/snapshots/SnapshotKt$emptyLambda$1; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$emptyLambda$1;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$emptyLambda$1;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$emptyLambda$1;->invoke(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$emptyLambda$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/snapshots/SnapshotKt$mergedReadObserver$1; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$mergedReadObserver$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$mergedReadObserver$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$mergedReadObserver$1;->invoke(Ljava/lang/Object;)V +Landroidx/compose/runtime/snapshots/SnapshotKt$mergedWriteObserver$1; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$mergedWriteObserver$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$mergedWriteObserver$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$mergedWriteObserver$1;->invoke(Ljava/lang/Object;)V +Landroidx/compose/runtime/snapshots/SnapshotKt$takeNewSnapshot$1; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$takeNewSnapshot$1;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$takeNewSnapshot$1;->invoke(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)Landroidx/compose/runtime/snapshots/Snapshot; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$takeNewSnapshot$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/snapshots/SnapshotMapEntrySet; +HSPLandroidx/compose/runtime/snapshots/SnapshotMapEntrySet;->(Landroidx/compose/runtime/snapshots/SnapshotStateMap;)V +Landroidx/compose/runtime/snapshots/SnapshotMapKeySet; +HSPLandroidx/compose/runtime/snapshots/SnapshotMapKeySet;->(Landroidx/compose/runtime/snapshots/SnapshotStateMap;)V +Landroidx/compose/runtime/snapshots/SnapshotMapSet; +HSPLandroidx/compose/runtime/snapshots/SnapshotMapSet;->(Landroidx/compose/runtime/snapshots/SnapshotStateMap;)V +Landroidx/compose/runtime/snapshots/SnapshotMapValueSet; +HSPLandroidx/compose/runtime/snapshots/SnapshotMapValueSet;->(Landroidx/compose/runtime/snapshots/SnapshotStateMap;)V +Landroidx/compose/runtime/snapshots/SnapshotMutableState; +Landroidx/compose/runtime/snapshots/SnapshotStateList; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->add(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->addAll(Ljava/util/Collection;)Z +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->contains(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->get(I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->getFirstStateRecord()Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->getModification$runtime_release()I +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->getReadable$runtime_release()Landroidx/compose/runtime/snapshots/SnapshotStateList$StateListStateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->getSize()I +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->isEmpty()Z +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->iterator()Ljava/util/Iterator; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->listIterator()Ljava/util/ListIterator; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->prependStateRecord(Landroidx/compose/runtime/snapshots/StateRecord;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->remove(I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->remove(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->removeAt(I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->set(ILjava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->size()I +Landroidx/compose/runtime/snapshots/SnapshotStateList$StateListStateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList$StateListStateRecord;->(Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList$StateListStateRecord;->assign(Landroidx/compose/runtime/snapshots/StateRecord;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList$StateListStateRecord;->create()Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList$StateListStateRecord;->getList$runtime_release()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList$StateListStateRecord;->getModification$runtime_release()I +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList$StateListStateRecord;->setList$runtime_release(Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList$StateListStateRecord;->setModification$runtime_release(I)V +Landroidx/compose/runtime/snapshots/SnapshotStateList$addAll$1; +Landroidx/compose/runtime/snapshots/SnapshotStateList$retainAll$1; +Landroidx/compose/runtime/snapshots/SnapshotStateListKt; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateListKt;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateListKt;->access$getSync$p()Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateListKt;->access$validateRange(II)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateListKt;->validateRange(II)V +Landroidx/compose/runtime/snapshots/SnapshotStateMap; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateMap;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateMap;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateMap;->getFirstStateRecord()Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateMap;->getReadable$runtime_release()Landroidx/compose/runtime/snapshots/SnapshotStateMap$StateMapStateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/snapshots/SnapshotStateMap$StateMapStateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateMap$StateMapStateRecord;->(Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateMap$StateMapStateRecord;->getMap$runtime_release()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateMap$StateMapStateRecord;->getModification$runtime_release()I +HSPLandroidx/compose/runtime/snapshots/SnapshotStateMap$StateMapStateRecord;->setMap$runtime_release(Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateMap$StateMapStateRecord;->setModification$runtime_release(I)V +Landroidx/compose/runtime/snapshots/SnapshotStateMapKt; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateMapKt;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateMapKt;->access$getSync$p()Ljava/lang/Object; +Landroidx/compose/runtime/snapshots/SnapshotStateObserver; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->access$addChanges(Landroidx/compose/runtime/snapshots/SnapshotStateObserver;Ljava/util/Set;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->access$drainChanges(Landroidx/compose/runtime/snapshots/SnapshotStateObserver;)Z +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->access$getCurrentMap$p(Landroidx/compose/runtime/snapshots/SnapshotStateObserver;)Landroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->access$getObservedScopeMaps$p(Landroidx/compose/runtime/snapshots/SnapshotStateObserver;)Landroidx/compose/runtime/collection/MutableVector; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->access$getSendingNotifications$p(Landroidx/compose/runtime/snapshots/SnapshotStateObserver;)Z +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->access$isPaused$p(Landroidx/compose/runtime/snapshots/SnapshotStateObserver;)Z +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->access$sendNotifications(Landroidx/compose/runtime/snapshots/SnapshotStateObserver;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->access$setSendingNotifications$p(Landroidx/compose/runtime/snapshots/SnapshotStateObserver;Z)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->addChanges(Ljava/util/Set;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->clearIf(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->drainChanges()Z +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->ensureMap(Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->observeReads(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->removeChanges()Ljava/util/Set; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->sendNotifications()V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->start()V +Landroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->access$getDeriveStateScopeCount$p(Landroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;)I +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->access$setDeriveStateScopeCount$p(Landroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;I)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->clearObsoleteStateReads(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->getOnChanged()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->notifyInvalidatedScopes()V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->observe(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->recordInvalidation(Ljava/util/Set;)Z +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->recordRead(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->recordRead(Ljava/lang/Object;ILjava/lang/Object;Landroidx/compose/runtime/collection/IdentityArrayIntMap;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->removeObservation(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->removeScopeIf(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap$derivedStateObserver$1; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap$derivedStateObserver$1;->(Landroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap$derivedStateObserver$1;->done(Landroidx/compose/runtime/DerivedState;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap$derivedStateObserver$1;->start(Landroidx/compose/runtime/DerivedState;)V +Landroidx/compose/runtime/snapshots/SnapshotStateObserver$applyObserver$1; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$applyObserver$1;->(Landroidx/compose/runtime/snapshots/SnapshotStateObserver;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$applyObserver$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$applyObserver$1;->invoke(Ljava/util/Set;Landroidx/compose/runtime/snapshots/Snapshot;)V +Landroidx/compose/runtime/snapshots/SnapshotStateObserver$readObserver$1; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$readObserver$1;->(Landroidx/compose/runtime/snapshots/SnapshotStateObserver;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$readObserver$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$readObserver$1;->invoke(Ljava/lang/Object;)V +Landroidx/compose/runtime/snapshots/SnapshotStateObserver$sendNotifications$1; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$sendNotifications$1;->(Landroidx/compose/runtime/snapshots/SnapshotStateObserver;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$sendNotifications$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$sendNotifications$1;->invoke()V +Landroidx/compose/runtime/snapshots/SnapshotWeakSet; +HSPLandroidx/compose/runtime/snapshots/SnapshotWeakSet;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotWeakSet;->add(Ljava/lang/Object;)Z +PLandroidx/compose/runtime/snapshots/SnapshotWeakSet;->getHashes$runtime_release()[I +HSPLandroidx/compose/runtime/snapshots/SnapshotWeakSet;->getSize$runtime_release()I +PLandroidx/compose/runtime/snapshots/SnapshotWeakSet;->getValues$runtime_release()[Landroidx/compose/runtime/WeakReference; +PLandroidx/compose/runtime/snapshots/SnapshotWeakSet;->setSize$runtime_release(I)V +Landroidx/compose/runtime/snapshots/StateListIterator; +HSPLandroidx/compose/runtime/snapshots/StateListIterator;->(Landroidx/compose/runtime/snapshots/SnapshotStateList;I)V +HSPLandroidx/compose/runtime/snapshots/StateListIterator;->hasNext()Z +HSPLandroidx/compose/runtime/snapshots/StateListIterator;->next()Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/StateListIterator;->remove()V +HSPLandroidx/compose/runtime/snapshots/StateListIterator;->validateModification()V +Landroidx/compose/runtime/snapshots/StateObject; +Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/snapshots/StateRecord;->()V +HSPLandroidx/compose/runtime/snapshots/StateRecord;->()V +HSPLandroidx/compose/runtime/snapshots/StateRecord;->getNext$runtime_release()Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/snapshots/StateRecord;->getSnapshotId$runtime_release()I +HSPLandroidx/compose/runtime/snapshots/StateRecord;->setNext$runtime_release(Landroidx/compose/runtime/snapshots/StateRecord;)V +HSPLandroidx/compose/runtime/snapshots/StateRecord;->setSnapshotId$runtime_release(I)V +Landroidx/compose/runtime/snapshots/SubList; +Landroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot; +HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;->(Landroidx/compose/runtime/snapshots/MutableSnapshot;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ZZ)V +HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;->apply()Landroidx/compose/runtime/snapshots/SnapshotApplyResult; +HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;->dispose()V +HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;->getCurrentSnapshot()Landroidx/compose/runtime/snapshots/MutableSnapshot; +HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;->getReadOnly()Z +HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;->getWriteCount$runtime_release()I +HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;->notifyObjectsInitialized$runtime_release()V +HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;->recordModified$runtime_release(Landroidx/compose/runtime/snapshots/StateObject;)V +HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;->setWriteCount$runtime_release(I)V +HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;->takeNestedMutableSnapshot(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/MutableSnapshot; +Landroidx/compose/runtime/tooling/CompositionData; +Landroidx/compose/runtime/tooling/InspectionTablesKt; +HSPLandroidx/compose/runtime/tooling/InspectionTablesKt;->()V +HSPLandroidx/compose/runtime/tooling/InspectionTablesKt;->getLocalInspectionTables()Landroidx/compose/runtime/ProvidableCompositionLocal; +Landroidx/compose/runtime/tooling/InspectionTablesKt$LocalInspectionTables$1; +HSPLandroidx/compose/runtime/tooling/InspectionTablesKt$LocalInspectionTables$1;->()V +HSPLandroidx/compose/runtime/tooling/InspectionTablesKt$LocalInspectionTables$1;->()V +HSPLandroidx/compose/runtime/tooling/InspectionTablesKt$LocalInspectionTables$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/runtime/tooling/InspectionTablesKt$LocalInspectionTables$1;->invoke()Ljava/util/Set; +Landroidx/compose/ui/ActualKt; +HSPLandroidx/compose/ui/ActualKt;->areObjectsOfSameType(Ljava/lang/Object;Ljava/lang/Object;)Z +Landroidx/compose/ui/Alignment; +HSPLandroidx/compose/ui/Alignment;->()V +Landroidx/compose/ui/Alignment$Companion; +HSPLandroidx/compose/ui/Alignment$Companion;->()V +HSPLandroidx/compose/ui/Alignment$Companion;->()V +HSPLandroidx/compose/ui/Alignment$Companion;->getBottom()Landroidx/compose/ui/Alignment$Vertical; +HSPLandroidx/compose/ui/Alignment$Companion;->getBottomCenter()Landroidx/compose/ui/Alignment; +HSPLandroidx/compose/ui/Alignment$Companion;->getBottomEnd()Landroidx/compose/ui/Alignment; +HSPLandroidx/compose/ui/Alignment$Companion;->getCenter()Landroidx/compose/ui/Alignment; +HSPLandroidx/compose/ui/Alignment$Companion;->getCenterEnd()Landroidx/compose/ui/Alignment; +HSPLandroidx/compose/ui/Alignment$Companion;->getCenterHorizontally()Landroidx/compose/ui/Alignment$Horizontal; +HSPLandroidx/compose/ui/Alignment$Companion;->getCenterStart()Landroidx/compose/ui/Alignment; +HSPLandroidx/compose/ui/Alignment$Companion;->getCenterVertically()Landroidx/compose/ui/Alignment$Vertical; +HSPLandroidx/compose/ui/Alignment$Companion;->getEnd()Landroidx/compose/ui/Alignment$Horizontal; +HSPLandroidx/compose/ui/Alignment$Companion;->getStart()Landroidx/compose/ui/Alignment$Horizontal; +HSPLandroidx/compose/ui/Alignment$Companion;->getTop()Landroidx/compose/ui/Alignment$Vertical; +HSPLandroidx/compose/ui/Alignment$Companion;->getTopEnd()Landroidx/compose/ui/Alignment; +HSPLandroidx/compose/ui/Alignment$Companion;->getTopStart()Landroidx/compose/ui/Alignment; +Landroidx/compose/ui/Alignment$Horizontal; +Landroidx/compose/ui/Alignment$Vertical; +Landroidx/compose/ui/BiasAlignment; +HSPLandroidx/compose/ui/BiasAlignment;->()V +HSPLandroidx/compose/ui/BiasAlignment;->(FF)V +HSPLandroidx/compose/ui/BiasAlignment;->align-KFBX0sM(JJLandroidx/compose/ui/unit/LayoutDirection;)J +HSPLandroidx/compose/ui/BiasAlignment;->equals(Ljava/lang/Object;)Z +Landroidx/compose/ui/BiasAlignment$Horizontal; +HSPLandroidx/compose/ui/BiasAlignment$Horizontal;->()V +HSPLandroidx/compose/ui/BiasAlignment$Horizontal;->(F)V +HSPLandroidx/compose/ui/BiasAlignment$Horizontal;->align(IILandroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/ui/BiasAlignment$Horizontal;->equals(Ljava/lang/Object;)Z +Landroidx/compose/ui/BiasAlignment$Vertical; +HSPLandroidx/compose/ui/BiasAlignment$Vertical;->()V +HSPLandroidx/compose/ui/BiasAlignment$Vertical;->(F)V +HSPLandroidx/compose/ui/BiasAlignment$Vertical;->align(II)I +HSPLandroidx/compose/ui/BiasAlignment$Vertical;->equals(Ljava/lang/Object;)Z +Landroidx/compose/ui/CombinedModifier; +HSPLandroidx/compose/ui/CombinedModifier;->()V +HSPLandroidx/compose/ui/CombinedModifier;->(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;)V +HSPLandroidx/compose/ui/CombinedModifier;->all(Lkotlin/jvm/functions/Function1;)Z +HSPLandroidx/compose/ui/CombinedModifier;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/CombinedModifier;->foldIn(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLandroidx/compose/ui/CombinedModifier;->getInner$ui_release()Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/CombinedModifier;->getOuter$ui_release()Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/ComposedModifier; +HSPLandroidx/compose/ui/ComposedModifier;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;)V +HSPLandroidx/compose/ui/ComposedModifier;->getFactory()Lkotlin/jvm/functions/Function3; +Landroidx/compose/ui/ComposedModifierKt; +HSPLandroidx/compose/ui/ComposedModifierKt;->composed$default(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;ILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/ComposedModifierKt;->composed(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/ComposedModifierKt;->materializeModifier(Landroidx/compose/runtime/Composer;Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/ComposedModifierKt;->materializeWithCompositionLocalInjectionInternal(Landroidx/compose/runtime/Composer;Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/ComposedModifierKt$materialize$1; +HSPLandroidx/compose/ui/ComposedModifierKt$materialize$1;->()V +HSPLandroidx/compose/ui/ComposedModifierKt$materialize$1;->()V +HSPLandroidx/compose/ui/ComposedModifierKt$materialize$1;->invoke(Landroidx/compose/ui/Modifier$Element;)Ljava/lang/Boolean; +HSPLandroidx/compose/ui/ComposedModifierKt$materialize$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/ComposedModifierKt$materialize$result$1; +HSPLandroidx/compose/ui/ComposedModifierKt$materialize$result$1;->(Landroidx/compose/runtime/Composer;)V +HSPLandroidx/compose/ui/ComposedModifierKt$materialize$result$1;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier$Element;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/ComposedModifierKt$materialize$result$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/CompositionLocalMapInjectionElement; +HSPLandroidx/compose/ui/CompositionLocalMapInjectionElement;->(Landroidx/compose/runtime/CompositionLocalMap;)V +HSPLandroidx/compose/ui/CompositionLocalMapInjectionElement;->create()Landroidx/compose/ui/CompositionLocalMapInjectionNode; +HSPLandroidx/compose/ui/CompositionLocalMapInjectionElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/CompositionLocalMapInjectionElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/ui/CompositionLocalMapInjectionNode; +HSPLandroidx/compose/ui/CompositionLocalMapInjectionNode;->(Landroidx/compose/runtime/CompositionLocalMap;)V +HSPLandroidx/compose/ui/CompositionLocalMapInjectionNode;->onAttach()V +Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/Modifier;->()V +HSPLandroidx/compose/ui/Modifier;->then(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/Modifier$Companion; +HSPLandroidx/compose/ui/Modifier$Companion;->()V +HSPLandroidx/compose/ui/Modifier$Companion;->()V +HSPLandroidx/compose/ui/Modifier$Companion;->all(Lkotlin/jvm/functions/Function1;)Z +HSPLandroidx/compose/ui/Modifier$Companion;->then(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/Modifier$Element; +HSPLandroidx/compose/ui/Modifier$Element;->all(Lkotlin/jvm/functions/Function1;)Z +HSPLandroidx/compose/ui/Modifier$Element;->foldIn(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/Modifier$Node;->()V +HSPLandroidx/compose/ui/Modifier$Node;->()V +HSPLandroidx/compose/ui/Modifier$Node;->getAggregateChildKindSet$ui_release()I +HSPLandroidx/compose/ui/Modifier$Node;->getChild$ui_release()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/Modifier$Node;->getCoordinator$ui_release()Landroidx/compose/ui/node/NodeCoordinator; +HSPLandroidx/compose/ui/Modifier$Node;->getCoroutineScope()Lkotlinx/coroutines/CoroutineScope; +HSPLandroidx/compose/ui/Modifier$Node;->getInsertedNodeAwaitingAttachForInvalidation$ui_release()Z +HSPLandroidx/compose/ui/Modifier$Node;->getKindSet$ui_release()I +HSPLandroidx/compose/ui/Modifier$Node;->getNode()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/Modifier$Node;->getOwnerScope$ui_release()Landroidx/compose/ui/node/ObserverNodeOwnerScope; +HSPLandroidx/compose/ui/Modifier$Node;->getParent$ui_release()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/Modifier$Node;->getShouldAutoInvalidate()Z +HSPLandroidx/compose/ui/Modifier$Node;->getUpdatedNodeAwaitingAttachForInvalidation$ui_release()Z +HSPLandroidx/compose/ui/Modifier$Node;->isAttached()Z +HSPLandroidx/compose/ui/Modifier$Node;->markAsAttached$ui_release()V +HSPLandroidx/compose/ui/Modifier$Node;->markAsDetached$ui_release()V +HSPLandroidx/compose/ui/Modifier$Node;->onAttach()V +HSPLandroidx/compose/ui/Modifier$Node;->onDetach()V +HSPLandroidx/compose/ui/Modifier$Node;->onReset()V +HSPLandroidx/compose/ui/Modifier$Node;->reset$ui_release()V +HSPLandroidx/compose/ui/Modifier$Node;->runAttachLifecycle$ui_release()V +HSPLandroidx/compose/ui/Modifier$Node;->runDetachLifecycle$ui_release()V +HSPLandroidx/compose/ui/Modifier$Node;->setAggregateChildKindSet$ui_release(I)V +HSPLandroidx/compose/ui/Modifier$Node;->setAsDelegateTo$ui_release(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/Modifier$Node;->setChild$ui_release(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/Modifier$Node;->setInsertedNodeAwaitingAttachForInvalidation$ui_release(Z)V +HSPLandroidx/compose/ui/Modifier$Node;->setKindSet$ui_release(I)V +HSPLandroidx/compose/ui/Modifier$Node;->setOwnerScope$ui_release(Landroidx/compose/ui/node/ObserverNodeOwnerScope;)V +HSPLandroidx/compose/ui/Modifier$Node;->setParent$ui_release(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/Modifier$Node;->setUpdatedNodeAwaitingAttachForInvalidation$ui_release(Z)V +HSPLandroidx/compose/ui/Modifier$Node;->sideEffect(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/Modifier$Node;->updateCoordinator$ui_release(Landroidx/compose/ui/node/NodeCoordinator;)V +Landroidx/compose/ui/ModifierNodeDetachedCancellationException; +HSPLandroidx/compose/ui/ModifierNodeDetachedCancellationException;->()V +HSPLandroidx/compose/ui/ModifierNodeDetachedCancellationException;->fillInStackTrace()Ljava/lang/Throwable; +Landroidx/compose/ui/MotionDurationScale; +HSPLandroidx/compose/ui/MotionDurationScale;->()V +HSPLandroidx/compose/ui/MotionDurationScale;->getKey()Lkotlin/coroutines/CoroutineContext$Key; +Landroidx/compose/ui/MotionDurationScale$DefaultImpls; +HSPLandroidx/compose/ui/MotionDurationScale$DefaultImpls;->fold(Landroidx/compose/ui/MotionDurationScale;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLandroidx/compose/ui/MotionDurationScale$DefaultImpls;->get(Landroidx/compose/ui/MotionDurationScale;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLandroidx/compose/ui/MotionDurationScale$DefaultImpls;->minusKey(Landroidx/compose/ui/MotionDurationScale;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext; +Landroidx/compose/ui/MotionDurationScale$Key; +HSPLandroidx/compose/ui/MotionDurationScale$Key;->()V +HSPLandroidx/compose/ui/MotionDurationScale$Key;->()V +Landroidx/compose/ui/R$id; +Landroidx/compose/ui/R$string; +Landroidx/compose/ui/ZIndexElement; +HSPLandroidx/compose/ui/ZIndexElement;->(F)V +Landroidx/compose/ui/ZIndexModifierKt; +HSPLandroidx/compose/ui/ZIndexModifierKt;->zIndex(Landroidx/compose/ui/Modifier;F)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/autofill/AndroidAutofill; +HSPLandroidx/compose/ui/autofill/AndroidAutofill;->(Landroid/view/View;Landroidx/compose/ui/autofill/AutofillTree;)V +HSPLandroidx/compose/ui/autofill/AndroidAutofill;->cancelAutofillForNode(Landroidx/compose/ui/autofill/AutofillNode;)V +HSPLandroidx/compose/ui/autofill/AndroidAutofill;->getAutofillManager()Landroid/view/autofill/AutofillManager; +HSPLandroidx/compose/ui/autofill/AndroidAutofill;->getAutofillTree()Landroidx/compose/ui/autofill/AutofillTree; +HSPLandroidx/compose/ui/autofill/AndroidAutofill;->getView()Landroid/view/View; +HSPLandroidx/compose/ui/autofill/AndroidAutofill;->requestAutofillForNode(Landroidx/compose/ui/autofill/AutofillNode;)V +Landroidx/compose/ui/autofill/AndroidAutofillType_androidKt; +HSPLandroidx/compose/ui/autofill/AndroidAutofillType_androidKt;->()V +HSPLandroidx/compose/ui/autofill/AndroidAutofillType_androidKt;->getAndroidType(Landroidx/compose/ui/autofill/AutofillType;)Ljava/lang/String; +Landroidx/compose/ui/autofill/AndroidAutofill_androidKt; +HSPLandroidx/compose/ui/autofill/AndroidAutofill_androidKt;->populateViewStructure(Landroidx/compose/ui/autofill/AndroidAutofill;Landroid/view/ViewStructure;)V +Landroidx/compose/ui/autofill/Autofill; +Landroidx/compose/ui/autofill/AutofillApi23Helper; +HSPLandroidx/compose/ui/autofill/AutofillApi23Helper;->()V +HSPLandroidx/compose/ui/autofill/AutofillApi23Helper;->()V +HSPLandroidx/compose/ui/autofill/AutofillApi23Helper;->addChildCount(Landroid/view/ViewStructure;I)I +HSPLandroidx/compose/ui/autofill/AutofillApi23Helper;->newChild(Landroid/view/ViewStructure;I)Landroid/view/ViewStructure; +HSPLandroidx/compose/ui/autofill/AutofillApi23Helper;->setDimens(Landroid/view/ViewStructure;IIIIII)V +HSPLandroidx/compose/ui/autofill/AutofillApi23Helper;->setId(Landroid/view/ViewStructure;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +Landroidx/compose/ui/autofill/AutofillApi26Helper; +HSPLandroidx/compose/ui/autofill/AutofillApi26Helper;->()V +HSPLandroidx/compose/ui/autofill/AutofillApi26Helper;->()V +HSPLandroidx/compose/ui/autofill/AutofillApi26Helper;->getAutofillId(Landroid/view/ViewStructure;)Landroid/view/autofill/AutofillId; +HSPLandroidx/compose/ui/autofill/AutofillApi26Helper;->setAutofillHints(Landroid/view/ViewStructure;[Ljava/lang/String;)V +HSPLandroidx/compose/ui/autofill/AutofillApi26Helper;->setAutofillId(Landroid/view/ViewStructure;Landroid/view/autofill/AutofillId;I)V +HSPLandroidx/compose/ui/autofill/AutofillApi26Helper;->setAutofillType(Landroid/view/ViewStructure;I)V +Landroidx/compose/ui/autofill/AutofillCallback; +HSPLandroidx/compose/ui/autofill/AutofillCallback;->()V +HSPLandroidx/compose/ui/autofill/AutofillCallback;->()V +HSPLandroidx/compose/ui/autofill/AutofillCallback;->onAutofillEvent(Landroid/view/View;II)V +HSPLandroidx/compose/ui/autofill/AutofillCallback;->register(Landroidx/compose/ui/autofill/AndroidAutofill;)V +Landroidx/compose/ui/autofill/AutofillNode; +HSPLandroidx/compose/ui/autofill/AutofillNode;->()V +HSPLandroidx/compose/ui/autofill/AutofillNode;->(Ljava/util/List;Landroidx/compose/ui/geometry/Rect;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/autofill/AutofillNode;->(Ljava/util/List;Landroidx/compose/ui/geometry/Rect;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/autofill/AutofillNode;->access$getPreviousId$cp()I +HSPLandroidx/compose/ui/autofill/AutofillNode;->access$setPreviousId$cp(I)V +HSPLandroidx/compose/ui/autofill/AutofillNode;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/autofill/AutofillNode;->getAutofillTypes()Ljava/util/List; +HSPLandroidx/compose/ui/autofill/AutofillNode;->getBoundingBox()Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/autofill/AutofillNode;->getId()I +HSPLandroidx/compose/ui/autofill/AutofillNode;->setBoundingBox(Landroidx/compose/ui/geometry/Rect;)V +Landroidx/compose/ui/autofill/AutofillNode$Companion; +HSPLandroidx/compose/ui/autofill/AutofillNode$Companion;->()V +HSPLandroidx/compose/ui/autofill/AutofillNode$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/autofill/AutofillNode$Companion;->access$generateId(Landroidx/compose/ui/autofill/AutofillNode$Companion;)I +HSPLandroidx/compose/ui/autofill/AutofillNode$Companion;->generateId()I +Landroidx/compose/ui/autofill/AutofillTree; +HSPLandroidx/compose/ui/autofill/AutofillTree;->()V +HSPLandroidx/compose/ui/autofill/AutofillTree;->()V +HSPLandroidx/compose/ui/autofill/AutofillTree;->getChildren()Ljava/util/Map; +HSPLandroidx/compose/ui/autofill/AutofillTree;->plusAssign(Landroidx/compose/ui/autofill/AutofillNode;)V +Landroidx/compose/ui/autofill/AutofillType; +HSPLandroidx/compose/ui/autofill/AutofillType;->$values()[Landroidx/compose/ui/autofill/AutofillType; +HSPLandroidx/compose/ui/autofill/AutofillType;->()V +HSPLandroidx/compose/ui/autofill/AutofillType;->(Ljava/lang/String;I)V +Landroidx/compose/ui/draw/AlphaKt; +HSPLandroidx/compose/ui/draw/AlphaKt;->alpha(Landroidx/compose/ui/Modifier;F)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/draw/BuildDrawCacheParams; +Landroidx/compose/ui/draw/CacheDrawModifierNode; +Landroidx/compose/ui/draw/CacheDrawModifierNodeImpl; +HSPLandroidx/compose/ui/draw/CacheDrawModifierNodeImpl;->(Landroidx/compose/ui/draw/CacheDrawScope;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/draw/CacheDrawModifierNodeImpl;->draw(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V +HSPLandroidx/compose/ui/draw/CacheDrawModifierNodeImpl;->getBlock()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/ui/draw/CacheDrawModifierNodeImpl;->getDensity()Landroidx/compose/ui/unit/Density; +HSPLandroidx/compose/ui/draw/CacheDrawModifierNodeImpl;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/draw/CacheDrawModifierNodeImpl;->getOrBuildCachedDrawBlock()Landroidx/compose/ui/draw/DrawResult; +HSPLandroidx/compose/ui/draw/CacheDrawModifierNodeImpl;->getSize-NH-jbRc()J +HSPLandroidx/compose/ui/draw/CacheDrawModifierNodeImpl;->invalidateDrawCache()V +HSPLandroidx/compose/ui/draw/CacheDrawModifierNodeImpl;->onMeasureResultChanged()V +Landroidx/compose/ui/draw/CacheDrawModifierNodeImpl$getOrBuildCachedDrawBlock$1$1; +HSPLandroidx/compose/ui/draw/CacheDrawModifierNodeImpl$getOrBuildCachedDrawBlock$1$1;->(Landroidx/compose/ui/draw/CacheDrawModifierNodeImpl;Landroidx/compose/ui/draw/CacheDrawScope;)V +HSPLandroidx/compose/ui/draw/CacheDrawModifierNodeImpl$getOrBuildCachedDrawBlock$1$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/draw/CacheDrawModifierNodeImpl$getOrBuildCachedDrawBlock$1$1;->invoke()V +Landroidx/compose/ui/draw/CacheDrawScope; +HSPLandroidx/compose/ui/draw/CacheDrawScope;->()V +HSPLandroidx/compose/ui/draw/CacheDrawScope;->()V +HSPLandroidx/compose/ui/draw/CacheDrawScope;->getDensity()F +HSPLandroidx/compose/ui/draw/CacheDrawScope;->getDrawResult$ui_release()Landroidx/compose/ui/draw/DrawResult; +HSPLandroidx/compose/ui/draw/CacheDrawScope;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/draw/CacheDrawScope;->getSize-NH-jbRc()J +HSPLandroidx/compose/ui/draw/CacheDrawScope;->onDrawWithContent(Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/draw/DrawResult; +HSPLandroidx/compose/ui/draw/CacheDrawScope;->setCacheParams$ui_release(Landroidx/compose/ui/draw/BuildDrawCacheParams;)V +HSPLandroidx/compose/ui/draw/CacheDrawScope;->setDrawResult$ui_release(Landroidx/compose/ui/draw/DrawResult;)V +Landroidx/compose/ui/draw/ClipKt; +HSPLandroidx/compose/ui/draw/ClipKt;->clip(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/Shape;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/draw/ClipKt;->clipToBounds(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/draw/DrawBackgroundModifier; +HSPLandroidx/compose/ui/draw/DrawBackgroundModifier;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/draw/DrawBackgroundModifier;->draw(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V +HSPLandroidx/compose/ui/draw/DrawBackgroundModifier;->setOnDraw(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/ui/draw/DrawBehindElement; +HSPLandroidx/compose/ui/draw/DrawBehindElement;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/draw/DrawBehindElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/draw/DrawBehindElement;->create()Landroidx/compose/ui/draw/DrawBackgroundModifier; +HSPLandroidx/compose/ui/draw/DrawBehindElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/draw/DrawBehindElement;->update(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/draw/DrawBehindElement;->update(Landroidx/compose/ui/draw/DrawBackgroundModifier;)V +Landroidx/compose/ui/draw/DrawCacheModifier; +Landroidx/compose/ui/draw/DrawModifier; +Landroidx/compose/ui/draw/DrawModifierKt; +HSPLandroidx/compose/ui/draw/DrawModifierKt;->CacheDrawModifierNode(Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/draw/CacheDrawModifierNode; +HSPLandroidx/compose/ui/draw/DrawModifierKt;->drawBehind(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/draw/DrawModifierKt;->drawWithContent(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/draw/DrawResult; +HSPLandroidx/compose/ui/draw/DrawResult;->()V +HSPLandroidx/compose/ui/draw/DrawResult;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/draw/DrawResult;->getBlock$ui_release()Lkotlin/jvm/functions/Function1; +Landroidx/compose/ui/draw/DrawWithContentElement; +HSPLandroidx/compose/ui/draw/DrawWithContentElement;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/draw/DrawWithContentElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/draw/DrawWithContentElement;->create()Landroidx/compose/ui/draw/DrawWithContentModifier; +HSPLandroidx/compose/ui/draw/DrawWithContentElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/draw/DrawWithContentElement;->update(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/draw/DrawWithContentElement;->update(Landroidx/compose/ui/draw/DrawWithContentModifier;)V +Landroidx/compose/ui/draw/DrawWithContentModifier; +HSPLandroidx/compose/ui/draw/DrawWithContentModifier;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/draw/DrawWithContentModifier;->draw(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V +HSPLandroidx/compose/ui/draw/DrawWithContentModifier;->setOnDraw(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/ui/draw/EmptyBuildDrawCacheParams; +HSPLandroidx/compose/ui/draw/EmptyBuildDrawCacheParams;->()V +HSPLandroidx/compose/ui/draw/EmptyBuildDrawCacheParams;->()V +Landroidx/compose/ui/draw/PainterElement; +HSPLandroidx/compose/ui/draw/PainterElement;->(Landroidx/compose/ui/graphics/painter/Painter;ZLandroidx/compose/ui/Alignment;Landroidx/compose/ui/layout/ContentScale;FLandroidx/compose/ui/graphics/ColorFilter;)V +HSPLandroidx/compose/ui/draw/PainterElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/draw/PainterElement;->create()Landroidx/compose/ui/draw/PainterNode; +HSPLandroidx/compose/ui/draw/PainterElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/draw/PainterElement;->update(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/draw/PainterElement;->update(Landroidx/compose/ui/draw/PainterNode;)V +Landroidx/compose/ui/draw/PainterModifierKt; +HSPLandroidx/compose/ui/draw/PainterModifierKt;->paint$default(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/painter/Painter;ZLandroidx/compose/ui/Alignment;Landroidx/compose/ui/layout/ContentScale;FLandroidx/compose/ui/graphics/ColorFilter;ILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/draw/PainterModifierKt;->paint(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/painter/Painter;ZLandroidx/compose/ui/Alignment;Landroidx/compose/ui/layout/ContentScale;FLandroidx/compose/ui/graphics/ColorFilter;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/draw/PainterNode; +HSPLandroidx/compose/ui/draw/PainterNode;->(Landroidx/compose/ui/graphics/painter/Painter;ZLandroidx/compose/ui/Alignment;Landroidx/compose/ui/layout/ContentScale;FLandroidx/compose/ui/graphics/ColorFilter;)V +HSPLandroidx/compose/ui/draw/PainterNode;->calculateScaledSize-E7KxVPU(J)J +HSPLandroidx/compose/ui/draw/PainterNode;->draw(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V +HSPLandroidx/compose/ui/draw/PainterNode;->getPainter()Landroidx/compose/ui/graphics/painter/Painter; +HSPLandroidx/compose/ui/draw/PainterNode;->getShouldAutoInvalidate()Z +HSPLandroidx/compose/ui/draw/PainterNode;->getSizeToIntrinsics()Z +HSPLandroidx/compose/ui/draw/PainterNode;->getUseIntrinsicSize()Z +HSPLandroidx/compose/ui/draw/PainterNode;->hasSpecifiedAndFiniteHeight-uvyYCjk(J)Z +HSPLandroidx/compose/ui/draw/PainterNode;->hasSpecifiedAndFiniteWidth-uvyYCjk(J)Z +HSPLandroidx/compose/ui/draw/PainterNode;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/ui/draw/PainterNode;->modifyConstraints-ZezNO4M(J)J +HSPLandroidx/compose/ui/draw/PainterNode;->setAlignment(Landroidx/compose/ui/Alignment;)V +HSPLandroidx/compose/ui/draw/PainterNode;->setAlpha(F)V +HSPLandroidx/compose/ui/draw/PainterNode;->setColorFilter(Landroidx/compose/ui/graphics/ColorFilter;)V +HSPLandroidx/compose/ui/draw/PainterNode;->setContentScale(Landroidx/compose/ui/layout/ContentScale;)V +HSPLandroidx/compose/ui/draw/PainterNode;->setPainter(Landroidx/compose/ui/graphics/painter/Painter;)V +HSPLandroidx/compose/ui/draw/PainterNode;->setSizeToIntrinsics(Z)V +Landroidx/compose/ui/draw/PainterNode$measure$1; +HSPLandroidx/compose/ui/draw/PainterNode$measure$1;->(Landroidx/compose/ui/layout/Placeable;)V +HSPLandroidx/compose/ui/draw/PainterNode$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/ui/draw/PainterNode$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/draw/ShadowKt; +HSPLandroidx/compose/ui/draw/ShadowKt;->shadow-s4CzXII$default(Landroidx/compose/ui/Modifier;FLandroidx/compose/ui/graphics/Shape;ZJJILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/draw/ShadowKt;->shadow-s4CzXII(Landroidx/compose/ui/Modifier;FLandroidx/compose/ui/graphics/Shape;ZJJ)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/focus/CustomDestinationResult; +HSPLandroidx/compose/ui/focus/CustomDestinationResult;->$values()[Landroidx/compose/ui/focus/CustomDestinationResult; +HSPLandroidx/compose/ui/focus/CustomDestinationResult;->()V +HSPLandroidx/compose/ui/focus/CustomDestinationResult;->(Ljava/lang/String;I)V +HSPLandroidx/compose/ui/focus/CustomDestinationResult;->values()[Landroidx/compose/ui/focus/CustomDestinationResult; +Landroidx/compose/ui/focus/FocusChangedElement; +HSPLandroidx/compose/ui/focus/FocusChangedElement;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/focus/FocusChangedElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/focus/FocusChangedElement;->create()Landroidx/compose/ui/focus/FocusChangedNode; +HSPLandroidx/compose/ui/focus/FocusChangedElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/focus/FocusChangedElement;->update(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/focus/FocusChangedElement;->update(Landroidx/compose/ui/focus/FocusChangedNode;)V +Landroidx/compose/ui/focus/FocusChangedModifierKt; +HSPLandroidx/compose/ui/focus/FocusChangedModifierKt;->onFocusChanged(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/focus/FocusChangedNode; +HSPLandroidx/compose/ui/focus/FocusChangedNode;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/focus/FocusChangedNode;->onFocusEvent(Landroidx/compose/ui/focus/FocusState;)V +HSPLandroidx/compose/ui/focus/FocusChangedNode;->setOnFocusChanged(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/ui/focus/FocusDirection; +HSPLandroidx/compose/ui/focus/FocusDirection;->()V +HSPLandroidx/compose/ui/focus/FocusDirection;->(I)V +HSPLandroidx/compose/ui/focus/FocusDirection;->access$getEnter$cp()I +HSPLandroidx/compose/ui/focus/FocusDirection;->box-impl(I)Landroidx/compose/ui/focus/FocusDirection; +HSPLandroidx/compose/ui/focus/FocusDirection;->constructor-impl(I)I +HSPLandroidx/compose/ui/focus/FocusDirection;->unbox-impl()I +Landroidx/compose/ui/focus/FocusDirection$Companion; +HSPLandroidx/compose/ui/focus/FocusDirection$Companion;->()V +HSPLandroidx/compose/ui/focus/FocusDirection$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/focus/FocusDirection$Companion;->getEnter-dhqQ-8s()I +Landroidx/compose/ui/focus/FocusEventElement; +HSPLandroidx/compose/ui/focus/FocusEventElement;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/focus/FocusEventElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/focus/FocusEventElement;->create()Landroidx/compose/ui/focus/FocusEventNode; +HSPLandroidx/compose/ui/focus/FocusEventElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/focus/FocusEventElement;->update(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/focus/FocusEventElement;->update(Landroidx/compose/ui/focus/FocusEventNode;)V +Landroidx/compose/ui/focus/FocusEventModifier; +Landroidx/compose/ui/focus/FocusEventModifierKt; +HSPLandroidx/compose/ui/focus/FocusEventModifierKt;->onFocusEvent(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/focus/FocusEventModifierNode; +Landroidx/compose/ui/focus/FocusEventModifierNodeKt; +HSPLandroidx/compose/ui/focus/FocusEventModifierNodeKt;->getFocusState(Landroidx/compose/ui/focus/FocusEventModifierNode;)Landroidx/compose/ui/focus/FocusState; +HSPLandroidx/compose/ui/focus/FocusEventModifierNodeKt;->invalidateFocusEvent(Landroidx/compose/ui/focus/FocusEventModifierNode;)V +HSPLandroidx/compose/ui/focus/FocusEventModifierNodeKt;->refreshFocusEventNodes(Landroidx/compose/ui/focus/FocusTargetNode;)V +Landroidx/compose/ui/focus/FocusEventModifierNodeKt$WhenMappings; +HSPLandroidx/compose/ui/focus/FocusEventModifierNodeKt$WhenMappings;->()V +Landroidx/compose/ui/focus/FocusEventNode; +HSPLandroidx/compose/ui/focus/FocusEventNode;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/focus/FocusEventNode;->onFocusEvent(Landroidx/compose/ui/focus/FocusState;)V +HSPLandroidx/compose/ui/focus/FocusEventNode;->setOnFocusEvent(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/ui/focus/FocusInvalidationManager; +HSPLandroidx/compose/ui/focus/FocusInvalidationManager;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/focus/FocusInvalidationManager;->access$getFocusEventNodes$p(Landroidx/compose/ui/focus/FocusInvalidationManager;)Ljava/util/Set; +HSPLandroidx/compose/ui/focus/FocusInvalidationManager;->access$getFocusPropertiesNodes$p(Landroidx/compose/ui/focus/FocusInvalidationManager;)Ljava/util/Set; +HSPLandroidx/compose/ui/focus/FocusInvalidationManager;->access$getFocusTargetNodes$p(Landroidx/compose/ui/focus/FocusInvalidationManager;)Ljava/util/Set; +HSPLandroidx/compose/ui/focus/FocusInvalidationManager;->scheduleInvalidation(Landroidx/compose/ui/focus/FocusEventModifierNode;)V +HSPLandroidx/compose/ui/focus/FocusInvalidationManager;->scheduleInvalidation(Landroidx/compose/ui/focus/FocusPropertiesModifierNode;)V +HSPLandroidx/compose/ui/focus/FocusInvalidationManager;->scheduleInvalidation(Landroidx/compose/ui/focus/FocusTargetNode;)V +HSPLandroidx/compose/ui/focus/FocusInvalidationManager;->scheduleInvalidation(Ljava/util/Set;Ljava/lang/Object;)V +Landroidx/compose/ui/focus/FocusInvalidationManager$invalidateNodes$1; +HSPLandroidx/compose/ui/focus/FocusInvalidationManager$invalidateNodes$1;->(Landroidx/compose/ui/focus/FocusInvalidationManager;)V +HSPLandroidx/compose/ui/focus/FocusInvalidationManager$invalidateNodes$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/focus/FocusInvalidationManager$invalidateNodes$1;->invoke()V +Landroidx/compose/ui/focus/FocusManager; +Landroidx/compose/ui/focus/FocusModifierKt; +HSPLandroidx/compose/ui/focus/FocusModifierKt;->focusTarget(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/focus/FocusOrderModifier; +Landroidx/compose/ui/focus/FocusOwner; +Landroidx/compose/ui/focus/FocusOwnerImpl; +HSPLandroidx/compose/ui/focus/FocusOwnerImpl;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/focus/FocusOwnerImpl;->clearFocus(ZZ)V +HSPLandroidx/compose/ui/focus/FocusOwnerImpl;->getModifier()Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/focus/FocusOwnerImpl;->getRootFocusNode$ui_release()Landroidx/compose/ui/focus/FocusTargetNode; +HSPLandroidx/compose/ui/focus/FocusOwnerImpl;->scheduleInvalidation(Landroidx/compose/ui/focus/FocusEventModifierNode;)V +HSPLandroidx/compose/ui/focus/FocusOwnerImpl;->scheduleInvalidation(Landroidx/compose/ui/focus/FocusPropertiesModifierNode;)V +HSPLandroidx/compose/ui/focus/FocusOwnerImpl;->scheduleInvalidation(Landroidx/compose/ui/focus/FocusTargetNode;)V +HSPLandroidx/compose/ui/focus/FocusOwnerImpl;->setLayoutDirection(Landroidx/compose/ui/unit/LayoutDirection;)V +HSPLandroidx/compose/ui/focus/FocusOwnerImpl;->takeFocus()V +Landroidx/compose/ui/focus/FocusOwnerImpl$WhenMappings; +HSPLandroidx/compose/ui/focus/FocusOwnerImpl$WhenMappings;->()V +Landroidx/compose/ui/focus/FocusOwnerImpl$modifier$1; +HSPLandroidx/compose/ui/focus/FocusOwnerImpl$modifier$1;->(Landroidx/compose/ui/focus/FocusOwnerImpl;)V +HSPLandroidx/compose/ui/focus/FocusOwnerImpl$modifier$1;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/focus/FocusOwnerImpl$modifier$1;->create()Landroidx/compose/ui/focus/FocusTargetNode; +Landroidx/compose/ui/focus/FocusProperties; +Landroidx/compose/ui/focus/FocusPropertiesElement; +HSPLandroidx/compose/ui/focus/FocusPropertiesElement;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/focus/FocusPropertiesElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/focus/FocusPropertiesElement;->create()Landroidx/compose/ui/focus/FocusPropertiesNode; +HSPLandroidx/compose/ui/focus/FocusPropertiesElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/ui/focus/FocusPropertiesImpl; +HSPLandroidx/compose/ui/focus/FocusPropertiesImpl;->()V +HSPLandroidx/compose/ui/focus/FocusPropertiesImpl;->getCanFocus()Z +HSPLandroidx/compose/ui/focus/FocusPropertiesImpl;->getEnter()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/ui/focus/FocusPropertiesImpl;->setCanFocus(Z)V +Landroidx/compose/ui/focus/FocusPropertiesImpl$enter$1; +HSPLandroidx/compose/ui/focus/FocusPropertiesImpl$enter$1;->()V +HSPLandroidx/compose/ui/focus/FocusPropertiesImpl$enter$1;->()V +HSPLandroidx/compose/ui/focus/FocusPropertiesImpl$enter$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/focus/FocusPropertiesImpl$enter$1;->invoke-3ESFkO8(I)Landroidx/compose/ui/focus/FocusRequester; +Landroidx/compose/ui/focus/FocusPropertiesImpl$exit$1; +HSPLandroidx/compose/ui/focus/FocusPropertiesImpl$exit$1;->()V +HSPLandroidx/compose/ui/focus/FocusPropertiesImpl$exit$1;->()V +Landroidx/compose/ui/focus/FocusPropertiesKt; +HSPLandroidx/compose/ui/focus/FocusPropertiesKt;->focusProperties(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/focus/FocusPropertiesModifierNode; +Landroidx/compose/ui/focus/FocusPropertiesModifierNodeKt; +HSPLandroidx/compose/ui/focus/FocusPropertiesModifierNodeKt;->invalidateFocusProperties(Landroidx/compose/ui/focus/FocusPropertiesModifierNode;)V +Landroidx/compose/ui/focus/FocusPropertiesNode; +HSPLandroidx/compose/ui/focus/FocusPropertiesNode;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/focus/FocusPropertiesNode;->applyFocusProperties(Landroidx/compose/ui/focus/FocusProperties;)V +Landroidx/compose/ui/focus/FocusRequester; +HSPLandroidx/compose/ui/focus/FocusRequester;->()V +HSPLandroidx/compose/ui/focus/FocusRequester;->()V +HSPLandroidx/compose/ui/focus/FocusRequester;->access$getCancel$cp()Landroidx/compose/ui/focus/FocusRequester; +HSPLandroidx/compose/ui/focus/FocusRequester;->access$getDefault$cp()Landroidx/compose/ui/focus/FocusRequester; +HSPLandroidx/compose/ui/focus/FocusRequester;->focus$ui_release()Z +HSPLandroidx/compose/ui/focus/FocusRequester;->getFocusRequesterNodes$ui_release()Landroidx/compose/runtime/collection/MutableVector; +HSPLandroidx/compose/ui/focus/FocusRequester;->requestFocus()V +Landroidx/compose/ui/focus/FocusRequester$Companion; +HSPLandroidx/compose/ui/focus/FocusRequester$Companion;->()V +HSPLandroidx/compose/ui/focus/FocusRequester$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/focus/FocusRequester$Companion;->getCancel()Landroidx/compose/ui/focus/FocusRequester; +HSPLandroidx/compose/ui/focus/FocusRequester$Companion;->getDefault()Landroidx/compose/ui/focus/FocusRequester; +Landroidx/compose/ui/focus/FocusRequesterElement; +HSPLandroidx/compose/ui/focus/FocusRequesterElement;->(Landroidx/compose/ui/focus/FocusRequester;)V +HSPLandroidx/compose/ui/focus/FocusRequesterElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/focus/FocusRequesterElement;->create()Landroidx/compose/ui/focus/FocusRequesterNode; +HSPLandroidx/compose/ui/focus/FocusRequesterElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/ui/focus/FocusRequesterModifier; +Landroidx/compose/ui/focus/FocusRequesterModifierKt; +HSPLandroidx/compose/ui/focus/FocusRequesterModifierKt;->focusRequester(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/focus/FocusRequester;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/focus/FocusRequesterModifierNode; +Landroidx/compose/ui/focus/FocusRequesterNode; +HSPLandroidx/compose/ui/focus/FocusRequesterNode;->(Landroidx/compose/ui/focus/FocusRequester;)V +HSPLandroidx/compose/ui/focus/FocusRequesterNode;->onAttach()V +HSPLandroidx/compose/ui/focus/FocusRequesterNode;->onDetach()V +Landroidx/compose/ui/focus/FocusState; +Landroidx/compose/ui/focus/FocusStateImpl; +HSPLandroidx/compose/ui/focus/FocusStateImpl;->$values()[Landroidx/compose/ui/focus/FocusStateImpl; +HSPLandroidx/compose/ui/focus/FocusStateImpl;->()V +HSPLandroidx/compose/ui/focus/FocusStateImpl;->(Ljava/lang/String;I)V +HSPLandroidx/compose/ui/focus/FocusStateImpl;->getHasFocus()Z +HSPLandroidx/compose/ui/focus/FocusStateImpl;->isFocused()Z +HSPLandroidx/compose/ui/focus/FocusStateImpl;->values()[Landroidx/compose/ui/focus/FocusStateImpl; +Landroidx/compose/ui/focus/FocusStateImpl$WhenMappings; +HSPLandroidx/compose/ui/focus/FocusStateImpl$WhenMappings;->()V +Landroidx/compose/ui/focus/FocusTargetModifierNode; +Landroidx/compose/ui/focus/FocusTargetNode; +HSPLandroidx/compose/ui/focus/FocusTargetNode;->()V +HSPLandroidx/compose/ui/focus/FocusTargetNode;->access$isProcessingCustomEnter$p(Landroidx/compose/ui/focus/FocusTargetNode;)Z +HSPLandroidx/compose/ui/focus/FocusTargetNode;->access$setProcessingCustomEnter$p(Landroidx/compose/ui/focus/FocusTargetNode;Z)V +HSPLandroidx/compose/ui/focus/FocusTargetNode;->fetchFocusProperties$ui_release()Landroidx/compose/ui/focus/FocusProperties; +HSPLandroidx/compose/ui/focus/FocusTargetNode;->getFocusState()Landroidx/compose/ui/focus/FocusStateImpl; +HSPLandroidx/compose/ui/focus/FocusTargetNode;->invalidateFocus$ui_release()V +HSPLandroidx/compose/ui/focus/FocusTargetNode;->onReset()V +HSPLandroidx/compose/ui/focus/FocusTargetNode;->scheduleInvalidationForFocusEvents$ui_release()V +HSPLandroidx/compose/ui/focus/FocusTargetNode;->setFocusState(Landroidx/compose/ui/focus/FocusStateImpl;)V +Landroidx/compose/ui/focus/FocusTargetNode$FocusTargetElement; +HSPLandroidx/compose/ui/focus/FocusTargetNode$FocusTargetElement;->()V +HSPLandroidx/compose/ui/focus/FocusTargetNode$FocusTargetElement;->()V +HSPLandroidx/compose/ui/focus/FocusTargetNode$FocusTargetElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/focus/FocusTargetNode$FocusTargetElement;->create()Landroidx/compose/ui/focus/FocusTargetNode; +HSPLandroidx/compose/ui/focus/FocusTargetNode$FocusTargetElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/ui/focus/FocusTargetNode$WhenMappings; +HSPLandroidx/compose/ui/focus/FocusTargetNode$WhenMappings;->()V +Landroidx/compose/ui/focus/FocusTransactionsKt; +HSPLandroidx/compose/ui/focus/FocusTransactionsKt;->clearChildFocus(Landroidx/compose/ui/focus/FocusTargetNode;ZZ)Z +HSPLandroidx/compose/ui/focus/FocusTransactionsKt;->clearFocus(Landroidx/compose/ui/focus/FocusTargetNode;ZZ)Z +HSPLandroidx/compose/ui/focus/FocusTransactionsKt;->grantFocus(Landroidx/compose/ui/focus/FocusTargetNode;)Z +HSPLandroidx/compose/ui/focus/FocusTransactionsKt;->performCustomEnter-Mxy_nc0(Landroidx/compose/ui/focus/FocusTargetNode;I)Landroidx/compose/ui/focus/CustomDestinationResult; +HSPLandroidx/compose/ui/focus/FocusTransactionsKt;->performCustomRequestFocus-Mxy_nc0(Landroidx/compose/ui/focus/FocusTargetNode;I)Landroidx/compose/ui/focus/CustomDestinationResult; +HSPLandroidx/compose/ui/focus/FocusTransactionsKt;->performRequestFocus(Landroidx/compose/ui/focus/FocusTargetNode;)Z +HSPLandroidx/compose/ui/focus/FocusTransactionsKt;->requestFocus(Landroidx/compose/ui/focus/FocusTargetNode;)Z +HSPLandroidx/compose/ui/focus/FocusTransactionsKt;->requestFocusForChild(Landroidx/compose/ui/focus/FocusTargetNode;Landroidx/compose/ui/focus/FocusTargetNode;)Z +HSPLandroidx/compose/ui/focus/FocusTransactionsKt;->requestFocusForOwner(Landroidx/compose/ui/focus/FocusTargetNode;)Z +Landroidx/compose/ui/focus/FocusTransactionsKt$WhenMappings; +HSPLandroidx/compose/ui/focus/FocusTransactionsKt$WhenMappings;->()V +Landroidx/compose/ui/focus/FocusTransactionsKt$grantFocus$1; +HSPLandroidx/compose/ui/focus/FocusTransactionsKt$grantFocus$1;->(Landroidx/compose/ui/focus/FocusTargetNode;)V +HSPLandroidx/compose/ui/focus/FocusTransactionsKt$grantFocus$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/focus/FocusTransactionsKt$grantFocus$1;->invoke()V +Landroidx/compose/ui/focus/FocusTraversalKt; +HSPLandroidx/compose/ui/focus/FocusTraversalKt;->getActiveChild(Landroidx/compose/ui/focus/FocusTargetNode;)Landroidx/compose/ui/focus/FocusTargetNode; +Landroidx/compose/ui/focus/FocusTraversalKt$WhenMappings; +HSPLandroidx/compose/ui/focus/FocusTraversalKt$WhenMappings;->()V +Landroidx/compose/ui/geometry/CornerRadius; +HSPLandroidx/compose/ui/geometry/CornerRadius;->()V +HSPLandroidx/compose/ui/geometry/CornerRadius;->access$getZero$cp()J +HSPLandroidx/compose/ui/geometry/CornerRadius;->constructor-impl(J)J +HSPLandroidx/compose/ui/geometry/CornerRadius;->getX-impl(J)F +HSPLandroidx/compose/ui/geometry/CornerRadius;->getY-impl(J)F +Landroidx/compose/ui/geometry/CornerRadius$Companion; +HSPLandroidx/compose/ui/geometry/CornerRadius$Companion;->()V +HSPLandroidx/compose/ui/geometry/CornerRadius$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/geometry/CornerRadius$Companion;->getZero-kKHJgLs()J +Landroidx/compose/ui/geometry/CornerRadiusKt; +HSPLandroidx/compose/ui/geometry/CornerRadiusKt;->CornerRadius$default(FFILjava/lang/Object;)J +HSPLandroidx/compose/ui/geometry/CornerRadiusKt;->CornerRadius(FF)J +Landroidx/compose/ui/geometry/MutableRect; +HSPLandroidx/compose/ui/geometry/MutableRect;->()V +HSPLandroidx/compose/ui/geometry/MutableRect;->(FFFF)V +HSPLandroidx/compose/ui/geometry/MutableRect;->getBottom()F +HSPLandroidx/compose/ui/geometry/MutableRect;->getLeft()F +HSPLandroidx/compose/ui/geometry/MutableRect;->getRight()F +HSPLandroidx/compose/ui/geometry/MutableRect;->getTop()F +HSPLandroidx/compose/ui/geometry/MutableRect;->intersect(FFFF)V +HSPLandroidx/compose/ui/geometry/MutableRect;->isEmpty()Z +HSPLandroidx/compose/ui/geometry/MutableRect;->setBottom(F)V +HSPLandroidx/compose/ui/geometry/MutableRect;->setLeft(F)V +HSPLandroidx/compose/ui/geometry/MutableRect;->setRight(F)V +HSPLandroidx/compose/ui/geometry/MutableRect;->setTop(F)V +Landroidx/compose/ui/geometry/MutableRectKt; +HSPLandroidx/compose/ui/geometry/MutableRectKt;->toRect(Landroidx/compose/ui/geometry/MutableRect;)Landroidx/compose/ui/geometry/Rect; +Landroidx/compose/ui/geometry/Offset; +HSPLandroidx/compose/ui/geometry/Offset;->()V +HSPLandroidx/compose/ui/geometry/Offset;->(J)V +HSPLandroidx/compose/ui/geometry/Offset;->access$getInfinite$cp()J +HSPLandroidx/compose/ui/geometry/Offset;->access$getUnspecified$cp()J +HSPLandroidx/compose/ui/geometry/Offset;->access$getZero$cp()J +HSPLandroidx/compose/ui/geometry/Offset;->box-impl(J)Landroidx/compose/ui/geometry/Offset; +HSPLandroidx/compose/ui/geometry/Offset;->component1-impl(J)F +HSPLandroidx/compose/ui/geometry/Offset;->component2-impl(J)F +HSPLandroidx/compose/ui/geometry/Offset;->constructor-impl(J)J +HSPLandroidx/compose/ui/geometry/Offset;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/geometry/Offset;->equals-impl(JLjava/lang/Object;)Z +HSPLandroidx/compose/ui/geometry/Offset;->equals-impl0(JJ)Z +HSPLandroidx/compose/ui/geometry/Offset;->getDistance-impl(J)F +HSPLandroidx/compose/ui/geometry/Offset;->getX-impl(J)F +HSPLandroidx/compose/ui/geometry/Offset;->getY-impl(J)F +HSPLandroidx/compose/ui/geometry/Offset;->minus-MK-Hz9U(JJ)J +HSPLandroidx/compose/ui/geometry/Offset;->plus-MK-Hz9U(JJ)J +HSPLandroidx/compose/ui/geometry/Offset;->unaryMinus-F1C5BW0(J)J +HSPLandroidx/compose/ui/geometry/Offset;->unbox-impl()J +Landroidx/compose/ui/geometry/Offset$Companion; +HSPLandroidx/compose/ui/geometry/Offset$Companion;->()V +HSPLandroidx/compose/ui/geometry/Offset$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/geometry/Offset$Companion;->getInfinite-F1C5BW0()J +HSPLandroidx/compose/ui/geometry/Offset$Companion;->getUnspecified-F1C5BW0()J +HSPLandroidx/compose/ui/geometry/Offset$Companion;->getZero-F1C5BW0()J +Landroidx/compose/ui/geometry/OffsetKt; +HSPLandroidx/compose/ui/geometry/OffsetKt;->Offset(FF)J +HSPLandroidx/compose/ui/geometry/OffsetKt;->isFinite-k-4lQ0M(J)Z +HSPLandroidx/compose/ui/geometry/OffsetKt;->isSpecified-k-4lQ0M(J)Z +Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/geometry/Rect;->()V +HSPLandroidx/compose/ui/geometry/Rect;->(FFFF)V +HSPLandroidx/compose/ui/geometry/Rect;->access$getZero$cp()Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/geometry/Rect;->copy$default(Landroidx/compose/ui/geometry/Rect;FFFFILjava/lang/Object;)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/geometry/Rect;->copy(FFFF)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/geometry/Rect;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/geometry/Rect;->getBottom()F +HSPLandroidx/compose/ui/geometry/Rect;->getCenter-F1C5BW0()J +HSPLandroidx/compose/ui/geometry/Rect;->getHeight()F +HSPLandroidx/compose/ui/geometry/Rect;->getLeft()F +HSPLandroidx/compose/ui/geometry/Rect;->getRight()F +HSPLandroidx/compose/ui/geometry/Rect;->getSize-NH-jbRc()J +HSPLandroidx/compose/ui/geometry/Rect;->getTop()F +HSPLandroidx/compose/ui/geometry/Rect;->getTopLeft-F1C5BW0()J +HSPLandroidx/compose/ui/geometry/Rect;->getWidth()F +HSPLandroidx/compose/ui/geometry/Rect;->intersect(Landroidx/compose/ui/geometry/Rect;)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/geometry/Rect;->isEmpty()Z +HSPLandroidx/compose/ui/geometry/Rect;->translate-k-4lQ0M(J)Landroidx/compose/ui/geometry/Rect; +Landroidx/compose/ui/geometry/Rect$Companion; +HSPLandroidx/compose/ui/geometry/Rect$Companion;->()V +HSPLandroidx/compose/ui/geometry/Rect$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/geometry/Rect$Companion;->getZero()Landroidx/compose/ui/geometry/Rect; +Landroidx/compose/ui/geometry/RectKt; +HSPLandroidx/compose/ui/geometry/RectKt;->Rect-tz77jQw(JJ)Landroidx/compose/ui/geometry/Rect; +Landroidx/compose/ui/geometry/RoundRect; +HSPLandroidx/compose/ui/geometry/RoundRect;->()V +HSPLandroidx/compose/ui/geometry/RoundRect;->(FFFFJJJJ)V +HSPLandroidx/compose/ui/geometry/RoundRect;->(FFFFJJJJLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/geometry/RoundRect;->getBottom()F +HSPLandroidx/compose/ui/geometry/RoundRect;->getBottomLeftCornerRadius-kKHJgLs()J +HSPLandroidx/compose/ui/geometry/RoundRect;->getBottomRightCornerRadius-kKHJgLs()J +HSPLandroidx/compose/ui/geometry/RoundRect;->getHeight()F +HSPLandroidx/compose/ui/geometry/RoundRect;->getLeft()F +HSPLandroidx/compose/ui/geometry/RoundRect;->getRight()F +HSPLandroidx/compose/ui/geometry/RoundRect;->getTop()F +HSPLandroidx/compose/ui/geometry/RoundRect;->getTopLeftCornerRadius-kKHJgLs()J +HSPLandroidx/compose/ui/geometry/RoundRect;->getTopRightCornerRadius-kKHJgLs()J +HSPLandroidx/compose/ui/geometry/RoundRect;->getWidth()F +Landroidx/compose/ui/geometry/RoundRect$Companion; +HSPLandroidx/compose/ui/geometry/RoundRect$Companion;->()V +HSPLandroidx/compose/ui/geometry/RoundRect$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/geometry/RoundRectKt; +HSPLandroidx/compose/ui/geometry/RoundRectKt;->RoundRect(FFFFFF)Landroidx/compose/ui/geometry/RoundRect; +HSPLandroidx/compose/ui/geometry/RoundRectKt;->RoundRect-ZAM2FJo(Landroidx/compose/ui/geometry/Rect;JJJJ)Landroidx/compose/ui/geometry/RoundRect; +HSPLandroidx/compose/ui/geometry/RoundRectKt;->RoundRect-gG7oq9Y(FFFFJ)Landroidx/compose/ui/geometry/RoundRect; +HSPLandroidx/compose/ui/geometry/RoundRectKt;->isSimple(Landroidx/compose/ui/geometry/RoundRect;)Z +Landroidx/compose/ui/geometry/Size; +HSPLandroidx/compose/ui/geometry/Size;->()V +HSPLandroidx/compose/ui/geometry/Size;->(J)V +HSPLandroidx/compose/ui/geometry/Size;->access$getUnspecified$cp()J +HSPLandroidx/compose/ui/geometry/Size;->access$getZero$cp()J +HSPLandroidx/compose/ui/geometry/Size;->box-impl(J)Landroidx/compose/ui/geometry/Size; +HSPLandroidx/compose/ui/geometry/Size;->constructor-impl(J)J +HSPLandroidx/compose/ui/geometry/Size;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/geometry/Size;->equals-impl(JLjava/lang/Object;)Z +HSPLandroidx/compose/ui/geometry/Size;->equals-impl0(JJ)Z +HSPLandroidx/compose/ui/geometry/Size;->getHeight-impl(J)F +HSPLandroidx/compose/ui/geometry/Size;->getMinDimension-impl(J)F +HSPLandroidx/compose/ui/geometry/Size;->getWidth-impl(J)F +HSPLandroidx/compose/ui/geometry/Size;->isEmpty-impl(J)Z +HSPLandroidx/compose/ui/geometry/Size;->unbox-impl()J +Landroidx/compose/ui/geometry/Size$Companion; +HSPLandroidx/compose/ui/geometry/Size$Companion;->()V +HSPLandroidx/compose/ui/geometry/Size$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/geometry/Size$Companion;->getUnspecified-NH-jbRc()J +HSPLandroidx/compose/ui/geometry/Size$Companion;->getZero-NH-jbRc()J +Landroidx/compose/ui/geometry/SizeKt; +HSPLandroidx/compose/ui/geometry/SizeKt;->Size(FF)J +HSPLandroidx/compose/ui/geometry/SizeKt;->toRect-uvyYCjk(J)Landroidx/compose/ui/geometry/Rect; +Landroidx/compose/ui/graphics/AndroidBlendMode_androidKt; +HSPLandroidx/compose/ui/graphics/AndroidBlendMode_androidKt;->toAndroidBlendMode-s9anfk8(I)Landroid/graphics/BlendMode; +Landroidx/compose/ui/graphics/AndroidCanvas; +HSPLandroidx/compose/ui/graphics/AndroidCanvas;->()V +HSPLandroidx/compose/ui/graphics/AndroidCanvas;->concat-58bKbWc([F)V +HSPLandroidx/compose/ui/graphics/AndroidCanvas;->drawArc(FFFFFFZLandroidx/compose/ui/graphics/Paint;)V +HSPLandroidx/compose/ui/graphics/AndroidCanvas;->drawImageRect-HPBpro0(Landroidx/compose/ui/graphics/ImageBitmap;JJJJLandroidx/compose/ui/graphics/Paint;)V +HSPLandroidx/compose/ui/graphics/AndroidCanvas;->drawLine-Wko1d7g(JJLandroidx/compose/ui/graphics/Paint;)V +HSPLandroidx/compose/ui/graphics/AndroidCanvas;->drawPath(Landroidx/compose/ui/graphics/Path;Landroidx/compose/ui/graphics/Paint;)V +HSPLandroidx/compose/ui/graphics/AndroidCanvas;->drawRect(FFFFLandroidx/compose/ui/graphics/Paint;)V +HSPLandroidx/compose/ui/graphics/AndroidCanvas;->drawRoundRect(FFFFFFLandroidx/compose/ui/graphics/Paint;)V +HSPLandroidx/compose/ui/graphics/AndroidCanvas;->getInternalCanvas()Landroid/graphics/Canvas; +HSPLandroidx/compose/ui/graphics/AndroidCanvas;->restore()V +HSPLandroidx/compose/ui/graphics/AndroidCanvas;->save()V +HSPLandroidx/compose/ui/graphics/AndroidCanvas;->saveLayer(Landroidx/compose/ui/geometry/Rect;Landroidx/compose/ui/graphics/Paint;)V +HSPLandroidx/compose/ui/graphics/AndroidCanvas;->setInternalCanvas(Landroid/graphics/Canvas;)V +HSPLandroidx/compose/ui/graphics/AndroidCanvas;->translate(FF)V +Landroidx/compose/ui/graphics/AndroidCanvas_androidKt; +HSPLandroidx/compose/ui/graphics/AndroidCanvas_androidKt;->()V +HSPLandroidx/compose/ui/graphics/AndroidCanvas_androidKt;->ActualCanvas(Landroidx/compose/ui/graphics/ImageBitmap;)Landroidx/compose/ui/graphics/Canvas; +HSPLandroidx/compose/ui/graphics/AndroidCanvas_androidKt;->access$getEmptyCanvas$p()Landroid/graphics/Canvas; +HSPLandroidx/compose/ui/graphics/AndroidCanvas_androidKt;->getNativeCanvas(Landroidx/compose/ui/graphics/Canvas;)Landroid/graphics/Canvas; +Landroidx/compose/ui/graphics/AndroidColorFilter_androidKt; +HSPLandroidx/compose/ui/graphics/AndroidColorFilter_androidKt;->actualTintColorFilter-xETnrds(JI)Landroidx/compose/ui/graphics/ColorFilter; +HSPLandroidx/compose/ui/graphics/AndroidColorFilter_androidKt;->asAndroidColorFilter(Landroidx/compose/ui/graphics/ColorFilter;)Landroid/graphics/ColorFilter; +Landroidx/compose/ui/graphics/AndroidColorSpace_androidKt; +HSPLandroidx/compose/ui/graphics/AndroidColorSpace_androidKt;->toAndroidColorSpace(Landroidx/compose/ui/graphics/colorspace/ColorSpace;)Landroid/graphics/ColorSpace; +Landroidx/compose/ui/graphics/AndroidImageBitmap; +HSPLandroidx/compose/ui/graphics/AndroidImageBitmap;->(Landroid/graphics/Bitmap;)V +HSPLandroidx/compose/ui/graphics/AndroidImageBitmap;->getBitmap$ui_graphics_release()Landroid/graphics/Bitmap; +HSPLandroidx/compose/ui/graphics/AndroidImageBitmap;->getHeight()I +HSPLandroidx/compose/ui/graphics/AndroidImageBitmap;->getWidth()I +HSPLandroidx/compose/ui/graphics/AndroidImageBitmap;->prepareToDraw()V +Landroidx/compose/ui/graphics/AndroidImageBitmap_androidKt; +HSPLandroidx/compose/ui/graphics/AndroidImageBitmap_androidKt;->ActualImageBitmap-x__-hDU(IIIZLandroidx/compose/ui/graphics/colorspace/ColorSpace;)Landroidx/compose/ui/graphics/ImageBitmap; +HSPLandroidx/compose/ui/graphics/AndroidImageBitmap_androidKt;->asAndroidBitmap(Landroidx/compose/ui/graphics/ImageBitmap;)Landroid/graphics/Bitmap; +HSPLandroidx/compose/ui/graphics/AndroidImageBitmap_androidKt;->toBitmapConfig-1JJdX4A(I)Landroid/graphics/Bitmap$Config; +Landroidx/compose/ui/graphics/AndroidMatrixConversions_androidKt; +HSPLandroidx/compose/ui/graphics/AndroidMatrixConversions_androidKt;->setFrom-EL8BTi8(Landroid/graphics/Matrix;[F)V +HSPLandroidx/compose/ui/graphics/AndroidMatrixConversions_androidKt;->setFrom-tU-YjHk([FLandroid/graphics/Matrix;)V +Landroidx/compose/ui/graphics/AndroidPaint; +HSPLandroidx/compose/ui/graphics/AndroidPaint;->()V +HSPLandroidx/compose/ui/graphics/AndroidPaint;->(Landroid/graphics/Paint;)V +HSPLandroidx/compose/ui/graphics/AndroidPaint;->asFrameworkPaint()Landroid/graphics/Paint; +HSPLandroidx/compose/ui/graphics/AndroidPaint;->getAlpha()F +HSPLandroidx/compose/ui/graphics/AndroidPaint;->getBlendMode-0nO6VwU()I +HSPLandroidx/compose/ui/graphics/AndroidPaint;->getColor-0d7_KjU()J +HSPLandroidx/compose/ui/graphics/AndroidPaint;->getColorFilter()Landroidx/compose/ui/graphics/ColorFilter; +HSPLandroidx/compose/ui/graphics/AndroidPaint;->getFilterQuality-f-v9h1I()I +HSPLandroidx/compose/ui/graphics/AndroidPaint;->getPathEffect()Landroidx/compose/ui/graphics/PathEffect; +HSPLandroidx/compose/ui/graphics/AndroidPaint;->getShader()Landroid/graphics/Shader; +HSPLandroidx/compose/ui/graphics/AndroidPaint;->getStrokeCap-KaPHkGw()I +HSPLandroidx/compose/ui/graphics/AndroidPaint;->getStrokeJoin-LxFBmk8()I +HSPLandroidx/compose/ui/graphics/AndroidPaint;->getStrokeMiterLimit()F +HSPLandroidx/compose/ui/graphics/AndroidPaint;->getStrokeWidth()F +HSPLandroidx/compose/ui/graphics/AndroidPaint;->setAlpha(F)V +HSPLandroidx/compose/ui/graphics/AndroidPaint;->setAntiAlias(Z)V +HSPLandroidx/compose/ui/graphics/AndroidPaint;->setBlendMode-s9anfk8(I)V +HSPLandroidx/compose/ui/graphics/AndroidPaint;->setColor-8_81llA(J)V +HSPLandroidx/compose/ui/graphics/AndroidPaint;->setColorFilter(Landroidx/compose/ui/graphics/ColorFilter;)V +HSPLandroidx/compose/ui/graphics/AndroidPaint;->setShader(Landroid/graphics/Shader;)V +HSPLandroidx/compose/ui/graphics/AndroidPaint;->setStrokeCap-BeK7IIE(I)V +HSPLandroidx/compose/ui/graphics/AndroidPaint;->setStrokeWidth(F)V +HSPLandroidx/compose/ui/graphics/AndroidPaint;->setStyle-k9PVt8s(I)V +Landroidx/compose/ui/graphics/AndroidPaint_androidKt; +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->Paint()Landroidx/compose/ui/graphics/Paint; +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->asComposePaint(Landroid/graphics/Paint;)Landroidx/compose/ui/graphics/Paint; +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->getNativeAlpha(Landroid/graphics/Paint;)F +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->getNativeColor(Landroid/graphics/Paint;)J +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->getNativeFilterQuality(Landroid/graphics/Paint;)I +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->getNativeStrokeCap(Landroid/graphics/Paint;)I +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->getNativeStrokeJoin(Landroid/graphics/Paint;)I +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->getNativeStrokeMiterLimit(Landroid/graphics/Paint;)F +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->getNativeStrokeWidth(Landroid/graphics/Paint;)F +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->makeNativePaint()Landroid/graphics/Paint; +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->setNativeAlpha(Landroid/graphics/Paint;F)V +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->setNativeAntiAlias(Landroid/graphics/Paint;Z)V +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->setNativeBlendMode-GB0RdKg(Landroid/graphics/Paint;I)V +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->setNativeColor-4WTKRHQ(Landroid/graphics/Paint;J)V +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->setNativeColorFilter(Landroid/graphics/Paint;Landroidx/compose/ui/graphics/ColorFilter;)V +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->setNativeShader(Landroid/graphics/Paint;Landroid/graphics/Shader;)V +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->setNativeStrokeCap-CSYIeUk(Landroid/graphics/Paint;I)V +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->setNativeStrokeWidth(Landroid/graphics/Paint;F)V +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->setNativeStyle--5YerkU(Landroid/graphics/Paint;I)V +Landroidx/compose/ui/graphics/AndroidPaint_androidKt$WhenMappings; +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt$WhenMappings;->()V +Landroidx/compose/ui/graphics/AndroidPath; +HSPLandroidx/compose/ui/graphics/AndroidPath;->(Landroid/graphics/Path;)V +HSPLandroidx/compose/ui/graphics/AndroidPath;->(Landroid/graphics/Path;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/AndroidPath;->addRoundRect(Landroidx/compose/ui/geometry/RoundRect;)V +HSPLandroidx/compose/ui/graphics/AndroidPath;->close()V +HSPLandroidx/compose/ui/graphics/AndroidPath;->cubicTo(FFFFFF)V +HSPLandroidx/compose/ui/graphics/AndroidPath;->getFillType-Rg-k1Os()I +HSPLandroidx/compose/ui/graphics/AndroidPath;->getInternalPath()Landroid/graphics/Path; +HSPLandroidx/compose/ui/graphics/AndroidPath;->lineTo(FF)V +HSPLandroidx/compose/ui/graphics/AndroidPath;->moveTo(FF)V +HSPLandroidx/compose/ui/graphics/AndroidPath;->relativeCubicTo(FFFFFF)V +HSPLandroidx/compose/ui/graphics/AndroidPath;->relativeLineTo(FF)V +HSPLandroidx/compose/ui/graphics/AndroidPath;->relativeMoveTo(FF)V +HSPLandroidx/compose/ui/graphics/AndroidPath;->reset()V +HSPLandroidx/compose/ui/graphics/AndroidPath;->rewind()V +HSPLandroidx/compose/ui/graphics/AndroidPath;->setFillType-oQ8Xj4U(I)V +Landroidx/compose/ui/graphics/AndroidPathMeasure; +HSPLandroidx/compose/ui/graphics/AndroidPathMeasure;->(Landroid/graphics/PathMeasure;)V +HSPLandroidx/compose/ui/graphics/AndroidPathMeasure;->getLength()F +HSPLandroidx/compose/ui/graphics/AndroidPathMeasure;->getSegment(FFLandroidx/compose/ui/graphics/Path;Z)Z +HSPLandroidx/compose/ui/graphics/AndroidPathMeasure;->setPath(Landroidx/compose/ui/graphics/Path;Z)V +Landroidx/compose/ui/graphics/AndroidPathMeasure_androidKt; +HSPLandroidx/compose/ui/graphics/AndroidPathMeasure_androidKt;->PathMeasure()Landroidx/compose/ui/graphics/PathMeasure; +Landroidx/compose/ui/graphics/AndroidPath_androidKt; +HSPLandroidx/compose/ui/graphics/AndroidPath_androidKt;->Path()Landroidx/compose/ui/graphics/Path; +Landroidx/compose/ui/graphics/AndroidShader_androidKt; +HSPLandroidx/compose/ui/graphics/AndroidShader_androidKt;->ActualLinearGradientShader-VjE6UOU(JJLjava/util/List;Ljava/util/List;I)Landroid/graphics/Shader; +HSPLandroidx/compose/ui/graphics/AndroidShader_androidKt;->countTransparentColors(Ljava/util/List;)I +HSPLandroidx/compose/ui/graphics/AndroidShader_androidKt;->makeTransparentColors(Ljava/util/List;I)[I +HSPLandroidx/compose/ui/graphics/AndroidShader_androidKt;->makeTransparentStops(Ljava/util/List;Ljava/util/List;I)[F +HSPLandroidx/compose/ui/graphics/AndroidShader_androidKt;->validateColorStops(Ljava/util/List;Ljava/util/List;)V +Landroidx/compose/ui/graphics/AndroidTileMode_androidKt; +HSPLandroidx/compose/ui/graphics/AndroidTileMode_androidKt;->toAndroidTileMode-0vamqd0(I)Landroid/graphics/Shader$TileMode; +Landroidx/compose/ui/graphics/Api26Bitmap; +HSPLandroidx/compose/ui/graphics/Api26Bitmap;->()V +HSPLandroidx/compose/ui/graphics/Api26Bitmap;->()V +HSPLandroidx/compose/ui/graphics/Api26Bitmap;->createBitmap-x__-hDU$ui_graphics_release(IIIZLandroidx/compose/ui/graphics/colorspace/ColorSpace;)Landroid/graphics/Bitmap; +Landroidx/compose/ui/graphics/BlendMode; +HSPLandroidx/compose/ui/graphics/BlendMode;->()V +HSPLandroidx/compose/ui/graphics/BlendMode;->(I)V +HSPLandroidx/compose/ui/graphics/BlendMode;->access$getClear$cp()I +HSPLandroidx/compose/ui/graphics/BlendMode;->access$getDst$cp()I +HSPLandroidx/compose/ui/graphics/BlendMode;->access$getDstIn$cp()I +HSPLandroidx/compose/ui/graphics/BlendMode;->access$getDstOver$cp()I +HSPLandroidx/compose/ui/graphics/BlendMode;->access$getSrc$cp()I +HSPLandroidx/compose/ui/graphics/BlendMode;->access$getSrcIn$cp()I +HSPLandroidx/compose/ui/graphics/BlendMode;->access$getSrcOver$cp()I +HSPLandroidx/compose/ui/graphics/BlendMode;->box-impl(I)Landroidx/compose/ui/graphics/BlendMode; +HSPLandroidx/compose/ui/graphics/BlendMode;->constructor-impl(I)I +HSPLandroidx/compose/ui/graphics/BlendMode;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/graphics/BlendMode;->equals-impl(ILjava/lang/Object;)Z +HSPLandroidx/compose/ui/graphics/BlendMode;->equals-impl0(II)Z +HSPLandroidx/compose/ui/graphics/BlendMode;->hashCode-impl(I)I +HSPLandroidx/compose/ui/graphics/BlendMode;->unbox-impl()I +Landroidx/compose/ui/graphics/BlendMode$Companion; +HSPLandroidx/compose/ui/graphics/BlendMode$Companion;->()V +HSPLandroidx/compose/ui/graphics/BlendMode$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/BlendMode$Companion;->getClear-0nO6VwU()I +HSPLandroidx/compose/ui/graphics/BlendMode$Companion;->getDst-0nO6VwU()I +HSPLandroidx/compose/ui/graphics/BlendMode$Companion;->getDstIn-0nO6VwU()I +HSPLandroidx/compose/ui/graphics/BlendMode$Companion;->getDstOver-0nO6VwU()I +HSPLandroidx/compose/ui/graphics/BlendMode$Companion;->getSrc-0nO6VwU()I +HSPLandroidx/compose/ui/graphics/BlendMode$Companion;->getSrcIn-0nO6VwU()I +HSPLandroidx/compose/ui/graphics/BlendMode$Companion;->getSrcOver-0nO6VwU()I +Landroidx/compose/ui/graphics/BlendModeColorFilterHelper; +HSPLandroidx/compose/ui/graphics/BlendModeColorFilterHelper;->()V +HSPLandroidx/compose/ui/graphics/BlendModeColorFilterHelper;->()V +HSPLandroidx/compose/ui/graphics/BlendModeColorFilterHelper;->BlendModeColorFilter-xETnrds(JI)Landroid/graphics/BlendModeColorFilter; +Landroidx/compose/ui/graphics/BlockGraphicsLayerElement; +HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerElement;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerElement;->create()Landroidx/compose/ui/graphics/BlockGraphicsLayerModifier; +HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerElement;->update(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerElement;->update(Landroidx/compose/ui/graphics/BlockGraphicsLayerModifier;)V +Landroidx/compose/ui/graphics/BlockGraphicsLayerModifier; +HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerModifier;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerModifier;->getLayerBlock()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerModifier;->getShouldAutoInvalidate()Z +HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerModifier;->invalidateLayerBlock()V +HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerModifier;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerModifier;->setLayerBlock(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/ui/graphics/BlockGraphicsLayerModifier$measure$1; +HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerModifier$measure$1;->(Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/graphics/BlockGraphicsLayerModifier;)V +HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerModifier$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerModifier$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/Brush; +HSPLandroidx/compose/ui/graphics/Brush;->()V +HSPLandroidx/compose/ui/graphics/Brush;->()V +HSPLandroidx/compose/ui/graphics/Brush;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/graphics/Brush$Companion; +HSPLandroidx/compose/ui/graphics/Brush$Companion;->()V +HSPLandroidx/compose/ui/graphics/Brush$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/graphics/Canvas; +Landroidx/compose/ui/graphics/CanvasHolder; +HSPLandroidx/compose/ui/graphics/CanvasHolder;->()V +HSPLandroidx/compose/ui/graphics/CanvasHolder;->getAndroidCanvas()Landroidx/compose/ui/graphics/AndroidCanvas; +Landroidx/compose/ui/graphics/CanvasKt; +HSPLandroidx/compose/ui/graphics/CanvasKt;->Canvas(Landroidx/compose/ui/graphics/ImageBitmap;)Landroidx/compose/ui/graphics/Canvas; +Landroidx/compose/ui/graphics/Color; +HSPLandroidx/compose/ui/graphics/Color;->()V +HSPLandroidx/compose/ui/graphics/Color;->(J)V +HSPLandroidx/compose/ui/graphics/Color;->access$getBlack$cp()J +HSPLandroidx/compose/ui/graphics/Color;->access$getBlue$cp()J +HSPLandroidx/compose/ui/graphics/Color;->access$getGray$cp()J +HSPLandroidx/compose/ui/graphics/Color;->access$getRed$cp()J +HSPLandroidx/compose/ui/graphics/Color;->access$getTransparent$cp()J +HSPLandroidx/compose/ui/graphics/Color;->access$getUnspecified$cp()J +HSPLandroidx/compose/ui/graphics/Color;->access$getWhite$cp()J +HSPLandroidx/compose/ui/graphics/Color;->box-impl(J)Landroidx/compose/ui/graphics/Color; +HSPLandroidx/compose/ui/graphics/Color;->component1-impl(J)F +HSPLandroidx/compose/ui/graphics/Color;->component2-impl(J)F +HSPLandroidx/compose/ui/graphics/Color;->component3-impl(J)F +HSPLandroidx/compose/ui/graphics/Color;->component4-impl(J)F +HSPLandroidx/compose/ui/graphics/Color;->constructor-impl(J)J +HSPLandroidx/compose/ui/graphics/Color;->convert-vNxB06k(JLandroidx/compose/ui/graphics/colorspace/ColorSpace;)J +HSPLandroidx/compose/ui/graphics/Color;->copy-wmQWz5c$default(JFFFFILjava/lang/Object;)J +HSPLandroidx/compose/ui/graphics/Color;->copy-wmQWz5c(JFFFF)J +HSPLandroidx/compose/ui/graphics/Color;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/graphics/Color;->equals-impl(JLjava/lang/Object;)Z +HSPLandroidx/compose/ui/graphics/Color;->equals-impl0(JJ)Z +HSPLandroidx/compose/ui/graphics/Color;->getAlpha-impl(J)F +HSPLandroidx/compose/ui/graphics/Color;->getBlue-impl(J)F +HSPLandroidx/compose/ui/graphics/Color;->getColorSpace-impl(J)Landroidx/compose/ui/graphics/colorspace/ColorSpace; +HSPLandroidx/compose/ui/graphics/Color;->getGreen-impl(J)F +HSPLandroidx/compose/ui/graphics/Color;->getRed-impl(J)F +HSPLandroidx/compose/ui/graphics/Color;->hashCode-impl(J)I +HSPLandroidx/compose/ui/graphics/Color;->unbox-impl()J +Landroidx/compose/ui/graphics/Color$Companion; +HSPLandroidx/compose/ui/graphics/Color$Companion;->()V +HSPLandroidx/compose/ui/graphics/Color$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/Color$Companion;->getBlack-0d7_KjU()J +HSPLandroidx/compose/ui/graphics/Color$Companion;->getBlue-0d7_KjU()J +HSPLandroidx/compose/ui/graphics/Color$Companion;->getGray-0d7_KjU()J +HSPLandroidx/compose/ui/graphics/Color$Companion;->getRed-0d7_KjU()J +HSPLandroidx/compose/ui/graphics/Color$Companion;->getTransparent-0d7_KjU()J +HSPLandroidx/compose/ui/graphics/Color$Companion;->getUnspecified-0d7_KjU()J +HSPLandroidx/compose/ui/graphics/Color$Companion;->getWhite-0d7_KjU()J +HSPLandroidx/compose/ui/graphics/Color$Companion;->hsv-JlNiLsg$default(Landroidx/compose/ui/graphics/Color$Companion;FFFFLandroidx/compose/ui/graphics/colorspace/Rgb;ILjava/lang/Object;)J +HSPLandroidx/compose/ui/graphics/Color$Companion;->hsv-JlNiLsg(FFFFLandroidx/compose/ui/graphics/colorspace/Rgb;)J +HSPLandroidx/compose/ui/graphics/Color$Companion;->hsvToRgbComponent(IFFF)F +Landroidx/compose/ui/graphics/ColorFilter; +HSPLandroidx/compose/ui/graphics/ColorFilter;->()V +HSPLandroidx/compose/ui/graphics/ColorFilter;->(Landroid/graphics/ColorFilter;)V +HSPLandroidx/compose/ui/graphics/ColorFilter;->getNativeColorFilter$ui_graphics_release()Landroid/graphics/ColorFilter; +Landroidx/compose/ui/graphics/ColorFilter$Companion; +HSPLandroidx/compose/ui/graphics/ColorFilter$Companion;->()V +HSPLandroidx/compose/ui/graphics/ColorFilter$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/ColorFilter$Companion;->tint-xETnrds$default(Landroidx/compose/ui/graphics/ColorFilter$Companion;JIILjava/lang/Object;)Landroidx/compose/ui/graphics/ColorFilter; +HSPLandroidx/compose/ui/graphics/ColorFilter$Companion;->tint-xETnrds(JI)Landroidx/compose/ui/graphics/ColorFilter; +Landroidx/compose/ui/graphics/ColorKt; +HSPLandroidx/compose/ui/graphics/ColorKt;->Color$default(FFFFLandroidx/compose/ui/graphics/colorspace/ColorSpace;ILjava/lang/Object;)J +HSPLandroidx/compose/ui/graphics/ColorKt;->Color$default(IIIIILjava/lang/Object;)J +HSPLandroidx/compose/ui/graphics/ColorKt;->Color(FFFFLandroidx/compose/ui/graphics/colorspace/ColorSpace;)J +HSPLandroidx/compose/ui/graphics/ColorKt;->Color(I)J +HSPLandroidx/compose/ui/graphics/ColorKt;->Color(IIII)J +HSPLandroidx/compose/ui/graphics/ColorKt;->Color(J)J +HSPLandroidx/compose/ui/graphics/ColorKt;->compositeOver--OWjLjI(JJ)J +HSPLandroidx/compose/ui/graphics/ColorKt;->lerp-jxsXWHM(JJF)J +HSPLandroidx/compose/ui/graphics/ColorKt;->luminance-8_81llA(J)F +HSPLandroidx/compose/ui/graphics/ColorKt;->saturate(F)F +HSPLandroidx/compose/ui/graphics/ColorKt;->toArgb-8_81llA(J)I +Landroidx/compose/ui/graphics/ColorProducer; +Landroidx/compose/ui/graphics/ColorSpaceVerificationHelper; +HSPLandroidx/compose/ui/graphics/ColorSpaceVerificationHelper;->()V +HSPLandroidx/compose/ui/graphics/ColorSpaceVerificationHelper;->()V +HSPLandroidx/compose/ui/graphics/ColorSpaceVerificationHelper;->androidColorSpace(Landroidx/compose/ui/graphics/colorspace/ColorSpace;)Landroid/graphics/ColorSpace; +Landroidx/compose/ui/graphics/CompositingStrategy; +HSPLandroidx/compose/ui/graphics/CompositingStrategy;->()V +HSPLandroidx/compose/ui/graphics/CompositingStrategy;->access$getAuto$cp()I +HSPLandroidx/compose/ui/graphics/CompositingStrategy;->access$getModulateAlpha$cp()I +HSPLandroidx/compose/ui/graphics/CompositingStrategy;->access$getOffscreen$cp()I +HSPLandroidx/compose/ui/graphics/CompositingStrategy;->constructor-impl(I)I +HSPLandroidx/compose/ui/graphics/CompositingStrategy;->equals-impl0(II)Z +Landroidx/compose/ui/graphics/CompositingStrategy$Companion; +HSPLandroidx/compose/ui/graphics/CompositingStrategy$Companion;->()V +HSPLandroidx/compose/ui/graphics/CompositingStrategy$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/CompositingStrategy$Companion;->getAuto--NrFUSI()I +HSPLandroidx/compose/ui/graphics/CompositingStrategy$Companion;->getModulateAlpha--NrFUSI()I +HSPLandroidx/compose/ui/graphics/CompositingStrategy$Companion;->getOffscreen--NrFUSI()I +Landroidx/compose/ui/graphics/FilterQuality; +HSPLandroidx/compose/ui/graphics/FilterQuality;->()V +HSPLandroidx/compose/ui/graphics/FilterQuality;->access$getLow$cp()I +HSPLandroidx/compose/ui/graphics/FilterQuality;->constructor-impl(I)I +HSPLandroidx/compose/ui/graphics/FilterQuality;->equals-impl0(II)Z +Landroidx/compose/ui/graphics/FilterQuality$Companion; +HSPLandroidx/compose/ui/graphics/FilterQuality$Companion;->()V +HSPLandroidx/compose/ui/graphics/FilterQuality$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/FilterQuality$Companion;->getLow-f-v9h1I()I +Landroidx/compose/ui/graphics/Float16; +HSPLandroidx/compose/ui/graphics/Float16;->()V +HSPLandroidx/compose/ui/graphics/Float16;->constructor-impl(F)S +HSPLandroidx/compose/ui/graphics/Float16;->constructor-impl(S)S +HSPLandroidx/compose/ui/graphics/Float16;->toFloat-impl(S)F +Landroidx/compose/ui/graphics/Float16$Companion; +HSPLandroidx/compose/ui/graphics/Float16$Companion;->()V +HSPLandroidx/compose/ui/graphics/Float16$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/Float16$Companion;->access$floatToHalf(Landroidx/compose/ui/graphics/Float16$Companion;F)S +HSPLandroidx/compose/ui/graphics/Float16$Companion;->floatToHalf(F)S +Landroidx/compose/ui/graphics/GraphicsLayerElement; +HSPLandroidx/compose/ui/graphics/GraphicsLayerElement;->(FFFFFFFFFFJLandroidx/compose/ui/graphics/Shape;ZLandroidx/compose/ui/graphics/RenderEffect;JJI)V +HSPLandroidx/compose/ui/graphics/GraphicsLayerElement;->(FFFFFFFFFFJLandroidx/compose/ui/graphics/Shape;ZLandroidx/compose/ui/graphics/RenderEffect;JJILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/GraphicsLayerElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/graphics/GraphicsLayerElement;->create()Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier; +HSPLandroidx/compose/ui/graphics/GraphicsLayerElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/ui/graphics/GraphicsLayerModifierKt; +HSPLandroidx/compose/ui/graphics/GraphicsLayerModifierKt;->graphicsLayer(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/graphics/GraphicsLayerModifierKt;->graphicsLayer-Ap8cVGQ$default(Landroidx/compose/ui/Modifier;FFFFFFFFFFJLandroidx/compose/ui/graphics/Shape;ZLandroidx/compose/ui/graphics/RenderEffect;JJIILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/graphics/GraphicsLayerModifierKt;->graphicsLayer-Ap8cVGQ(Landroidx/compose/ui/Modifier;FFFFFFFFFFJLandroidx/compose/ui/graphics/Shape;ZLandroidx/compose/ui/graphics/RenderEffect;JJI)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/graphics/GraphicsLayerModifierKt;->toolingGraphicsLayer(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/graphics/GraphicsLayerScope; +Landroidx/compose/ui/graphics/GraphicsLayerScopeKt; +HSPLandroidx/compose/ui/graphics/GraphicsLayerScopeKt;->()V +HSPLandroidx/compose/ui/graphics/GraphicsLayerScopeKt;->getDefaultShadowColor()J +Landroidx/compose/ui/graphics/ImageBitmap; +Landroidx/compose/ui/graphics/ImageBitmapConfig; +HSPLandroidx/compose/ui/graphics/ImageBitmapConfig;->()V +HSPLandroidx/compose/ui/graphics/ImageBitmapConfig;->access$getArgb8888$cp()I +HSPLandroidx/compose/ui/graphics/ImageBitmapConfig;->constructor-impl(I)I +HSPLandroidx/compose/ui/graphics/ImageBitmapConfig;->equals-impl0(II)Z +Landroidx/compose/ui/graphics/ImageBitmapConfig$Companion; +HSPLandroidx/compose/ui/graphics/ImageBitmapConfig$Companion;->()V +HSPLandroidx/compose/ui/graphics/ImageBitmapConfig$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/ImageBitmapConfig$Companion;->getArgb8888-_sVssgQ()I +Landroidx/compose/ui/graphics/ImageBitmapKt; +HSPLandroidx/compose/ui/graphics/ImageBitmapKt;->ImageBitmap-x__-hDU$default(IIIZLandroidx/compose/ui/graphics/colorspace/ColorSpace;ILjava/lang/Object;)Landroidx/compose/ui/graphics/ImageBitmap; +HSPLandroidx/compose/ui/graphics/ImageBitmapKt;->ImageBitmap-x__-hDU(IIIZLandroidx/compose/ui/graphics/colorspace/ColorSpace;)Landroidx/compose/ui/graphics/ImageBitmap; +Landroidx/compose/ui/graphics/Matrix; +HSPLandroidx/compose/ui/graphics/Matrix;->()V +HSPLandroidx/compose/ui/graphics/Matrix;->([F)V +HSPLandroidx/compose/ui/graphics/Matrix;->box-impl([F)Landroidx/compose/ui/graphics/Matrix; +HSPLandroidx/compose/ui/graphics/Matrix;->constructor-impl$default([FILkotlin/jvm/internal/DefaultConstructorMarker;)[F +HSPLandroidx/compose/ui/graphics/Matrix;->constructor-impl([F)[F +HSPLandroidx/compose/ui/graphics/Matrix;->map-MK-Hz9U([FJ)J +HSPLandroidx/compose/ui/graphics/Matrix;->map-impl([FLandroidx/compose/ui/geometry/MutableRect;)V +HSPLandroidx/compose/ui/graphics/Matrix;->reset-impl([F)V +HSPLandroidx/compose/ui/graphics/Matrix;->rotateZ-impl([FF)V +HSPLandroidx/compose/ui/graphics/Matrix;->scale-impl([FFFF)V +HSPLandroidx/compose/ui/graphics/Matrix;->translate-impl$default([FFFFILjava/lang/Object;)V +HSPLandroidx/compose/ui/graphics/Matrix;->translate-impl([FFFF)V +HSPLandroidx/compose/ui/graphics/Matrix;->unbox-impl()[F +Landroidx/compose/ui/graphics/Matrix$Companion; +HSPLandroidx/compose/ui/graphics/Matrix$Companion;->()V +HSPLandroidx/compose/ui/graphics/Matrix$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/graphics/MatrixKt; +HSPLandroidx/compose/ui/graphics/MatrixKt;->isIdentity-58bKbWc([F)Z +Landroidx/compose/ui/graphics/Outline; +HSPLandroidx/compose/ui/graphics/Outline;->()V +HSPLandroidx/compose/ui/graphics/Outline;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/graphics/Outline$Generic; +Landroidx/compose/ui/graphics/Outline$Rectangle; +HSPLandroidx/compose/ui/graphics/Outline$Rectangle;->(Landroidx/compose/ui/geometry/Rect;)V +HSPLandroidx/compose/ui/graphics/Outline$Rectangle;->getRect()Landroidx/compose/ui/geometry/Rect; +Landroidx/compose/ui/graphics/Outline$Rounded; +HSPLandroidx/compose/ui/graphics/Outline$Rounded;->(Landroidx/compose/ui/geometry/RoundRect;)V +HSPLandroidx/compose/ui/graphics/Outline$Rounded;->getRoundRect()Landroidx/compose/ui/geometry/RoundRect; +HSPLandroidx/compose/ui/graphics/Outline$Rounded;->getRoundRectPath$ui_graphics_release()Landroidx/compose/ui/graphics/Path; +Landroidx/compose/ui/graphics/OutlineKt; +HSPLandroidx/compose/ui/graphics/OutlineKt;->access$hasSameCornerRadius(Landroidx/compose/ui/geometry/RoundRect;)Z +HSPLandroidx/compose/ui/graphics/OutlineKt;->drawOutline-wDX37Ww$default(Landroidx/compose/ui/graphics/drawscope/DrawScope;Landroidx/compose/ui/graphics/Outline;JFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;IILjava/lang/Object;)V +HSPLandroidx/compose/ui/graphics/OutlineKt;->drawOutline-wDX37Ww(Landroidx/compose/ui/graphics/drawscope/DrawScope;Landroidx/compose/ui/graphics/Outline;JFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;I)V +HSPLandroidx/compose/ui/graphics/OutlineKt;->hasSameCornerRadius(Landroidx/compose/ui/geometry/RoundRect;)Z +HSPLandroidx/compose/ui/graphics/OutlineKt;->size(Landroidx/compose/ui/geometry/RoundRect;)J +HSPLandroidx/compose/ui/graphics/OutlineKt;->topLeft(Landroidx/compose/ui/geometry/RoundRect;)J +Landroidx/compose/ui/graphics/Paint; +Landroidx/compose/ui/graphics/PaintingStyle; +HSPLandroidx/compose/ui/graphics/PaintingStyle;->()V +HSPLandroidx/compose/ui/graphics/PaintingStyle;->access$getFill$cp()I +HSPLandroidx/compose/ui/graphics/PaintingStyle;->access$getStroke$cp()I +HSPLandroidx/compose/ui/graphics/PaintingStyle;->constructor-impl(I)I +HSPLandroidx/compose/ui/graphics/PaintingStyle;->equals-impl0(II)Z +Landroidx/compose/ui/graphics/PaintingStyle$Companion; +HSPLandroidx/compose/ui/graphics/PaintingStyle$Companion;->()V +HSPLandroidx/compose/ui/graphics/PaintingStyle$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/PaintingStyle$Companion;->getFill-TiuSbCo()I +HSPLandroidx/compose/ui/graphics/PaintingStyle$Companion;->getStroke-TiuSbCo()I +Landroidx/compose/ui/graphics/Path; +HSPLandroidx/compose/ui/graphics/Path;->()V +Landroidx/compose/ui/graphics/Path$Companion; +HSPLandroidx/compose/ui/graphics/Path$Companion;->()V +HSPLandroidx/compose/ui/graphics/Path$Companion;->()V +Landroidx/compose/ui/graphics/PathEffect; +Landroidx/compose/ui/graphics/PathFillType; +HSPLandroidx/compose/ui/graphics/PathFillType;->()V +HSPLandroidx/compose/ui/graphics/PathFillType;->(I)V +HSPLandroidx/compose/ui/graphics/PathFillType;->access$getEvenOdd$cp()I +HSPLandroidx/compose/ui/graphics/PathFillType;->access$getNonZero$cp()I +HSPLandroidx/compose/ui/graphics/PathFillType;->box-impl(I)Landroidx/compose/ui/graphics/PathFillType; +HSPLandroidx/compose/ui/graphics/PathFillType;->constructor-impl(I)I +HSPLandroidx/compose/ui/graphics/PathFillType;->equals-impl0(II)Z +HSPLandroidx/compose/ui/graphics/PathFillType;->hashCode-impl(I)I +HSPLandroidx/compose/ui/graphics/PathFillType;->unbox-impl()I +Landroidx/compose/ui/graphics/PathFillType$Companion; +HSPLandroidx/compose/ui/graphics/PathFillType$Companion;->()V +HSPLandroidx/compose/ui/graphics/PathFillType$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/PathFillType$Companion;->getEvenOdd-Rg-k1Os()I +HSPLandroidx/compose/ui/graphics/PathFillType$Companion;->getNonZero-Rg-k1Os()I +Landroidx/compose/ui/graphics/PathMeasure; +Landroidx/compose/ui/graphics/RectangleShapeKt; +HSPLandroidx/compose/ui/graphics/RectangleShapeKt;->()V +HSPLandroidx/compose/ui/graphics/RectangleShapeKt;->getRectangleShape()Landroidx/compose/ui/graphics/Shape; +Landroidx/compose/ui/graphics/RectangleShapeKt$RectangleShape$1; +HSPLandroidx/compose/ui/graphics/RectangleShapeKt$RectangleShape$1;->()V +Landroidx/compose/ui/graphics/RenderEffect; +Landroidx/compose/ui/graphics/ReusableGraphicsLayerScope; +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->()V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getAlpha()F +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getAmbientShadowColor-0d7_KjU()J +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getCameraDistance()F +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getClip()Z +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getCompositingStrategy--NrFUSI()I +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getDensity()F +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getRenderEffect()Landroidx/compose/ui/graphics/RenderEffect; +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getRotationX()F +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getRotationY()F +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getRotationZ()F +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getScaleX()F +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getScaleY()F +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getShadowElevation()F +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getShape()Landroidx/compose/ui/graphics/Shape; +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getSpotShadowColor-0d7_KjU()J +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getTransformOrigin-SzJe1aQ()J +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getTranslationX()F +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getTranslationY()F +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->reset()V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setAlpha(F)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setAmbientShadowColor-8_81llA(J)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setCameraDistance(F)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setClip(Z)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setCompositingStrategy-aDBOjCE(I)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setGraphicsDensity$ui_release(Landroidx/compose/ui/unit/Density;)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setRenderEffect(Landroidx/compose/ui/graphics/RenderEffect;)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setRotationX(F)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setRotationY(F)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setRotationZ(F)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setScaleX(F)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setScaleY(F)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setShadowElevation(F)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setShape(Landroidx/compose/ui/graphics/Shape;)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setSize-uvyYCjk(J)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setSpotShadowColor-8_81llA(J)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setTransformOrigin-__ExYCQ(J)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setTranslationX(F)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setTranslationY(F)V +Landroidx/compose/ui/graphics/ShaderBrush; +Landroidx/compose/ui/graphics/ShaderKt; +HSPLandroidx/compose/ui/graphics/ShaderKt;->LinearGradientShader-VjE6UOU$default(JJLjava/util/List;Ljava/util/List;IILjava/lang/Object;)Landroid/graphics/Shader; +HSPLandroidx/compose/ui/graphics/ShaderKt;->LinearGradientShader-VjE6UOU(JJLjava/util/List;Ljava/util/List;I)Landroid/graphics/Shader; +Landroidx/compose/ui/graphics/Shadow; +HSPLandroidx/compose/ui/graphics/Shadow;->()V +HSPLandroidx/compose/ui/graphics/Shadow;->(JJF)V +HSPLandroidx/compose/ui/graphics/Shadow;->(JJFILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/Shadow;->(JJFLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/Shadow;->access$getNone$cp()Landroidx/compose/ui/graphics/Shadow; +HSPLandroidx/compose/ui/graphics/Shadow;->equals(Ljava/lang/Object;)Z +Landroidx/compose/ui/graphics/Shadow$Companion; +HSPLandroidx/compose/ui/graphics/Shadow$Companion;->()V +HSPLandroidx/compose/ui/graphics/Shadow$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/Shadow$Companion;->getNone()Landroidx/compose/ui/graphics/Shadow; +Landroidx/compose/ui/graphics/Shape; +Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier; +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->(FFFFFFFFFFJLandroidx/compose/ui/graphics/Shape;ZLandroidx/compose/ui/graphics/RenderEffect;JJI)V +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->(FFFFFFFFFFJLandroidx/compose/ui/graphics/Shape;ZLandroidx/compose/ui/graphics/RenderEffect;JJILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->access$getLayerBlock$p(Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getAlpha()F +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getAmbientShadowColor-0d7_KjU()J +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getCameraDistance()F +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getClip()Z +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getCompositingStrategy--NrFUSI()I +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getRenderEffect()Landroidx/compose/ui/graphics/RenderEffect; +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getRotationX()F +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getRotationY()F +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getRotationZ()F +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getScaleX()F +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getScaleY()F +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getShadowElevation()F +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getShape()Landroidx/compose/ui/graphics/Shape; +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getSpotShadowColor-0d7_KjU()J +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getTransformOrigin-SzJe1aQ()J +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getTranslationX()F +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getTranslationY()F +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier$layerBlock$1; +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier$layerBlock$1;->(Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;)V +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier$layerBlock$1;->invoke(Landroidx/compose/ui/graphics/GraphicsLayerScope;)V +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier$layerBlock$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier$measure$1; +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier$measure$1;->(Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;)V +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/SolidColor; +HSPLandroidx/compose/ui/graphics/SolidColor;->(J)V +HSPLandroidx/compose/ui/graphics/SolidColor;->(JLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/SolidColor;->applyTo-Pq9zytI(JLandroidx/compose/ui/graphics/Paint;F)V +HSPLandroidx/compose/ui/graphics/SolidColor;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/graphics/SolidColor;->getValue-0d7_KjU()J +HSPLandroidx/compose/ui/graphics/SolidColor;->hashCode()I +Landroidx/compose/ui/graphics/StrokeCap; +HSPLandroidx/compose/ui/graphics/StrokeCap;->()V +HSPLandroidx/compose/ui/graphics/StrokeCap;->(I)V +HSPLandroidx/compose/ui/graphics/StrokeCap;->access$getButt$cp()I +HSPLandroidx/compose/ui/graphics/StrokeCap;->access$getRound$cp()I +HSPLandroidx/compose/ui/graphics/StrokeCap;->access$getSquare$cp()I +HSPLandroidx/compose/ui/graphics/StrokeCap;->box-impl(I)Landroidx/compose/ui/graphics/StrokeCap; +HSPLandroidx/compose/ui/graphics/StrokeCap;->constructor-impl(I)I +HSPLandroidx/compose/ui/graphics/StrokeCap;->equals-impl0(II)Z +HSPLandroidx/compose/ui/graphics/StrokeCap;->hashCode-impl(I)I +HSPLandroidx/compose/ui/graphics/StrokeCap;->unbox-impl()I +Landroidx/compose/ui/graphics/StrokeCap$Companion; +HSPLandroidx/compose/ui/graphics/StrokeCap$Companion;->()V +HSPLandroidx/compose/ui/graphics/StrokeCap$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/StrokeCap$Companion;->getButt-KaPHkGw()I +HSPLandroidx/compose/ui/graphics/StrokeCap$Companion;->getRound-KaPHkGw()I +HSPLandroidx/compose/ui/graphics/StrokeCap$Companion;->getSquare-KaPHkGw()I +Landroidx/compose/ui/graphics/StrokeJoin; +HSPLandroidx/compose/ui/graphics/StrokeJoin;->()V +HSPLandroidx/compose/ui/graphics/StrokeJoin;->(I)V +HSPLandroidx/compose/ui/graphics/StrokeJoin;->access$getBevel$cp()I +HSPLandroidx/compose/ui/graphics/StrokeJoin;->access$getMiter$cp()I +HSPLandroidx/compose/ui/graphics/StrokeJoin;->box-impl(I)Landroidx/compose/ui/graphics/StrokeJoin; +HSPLandroidx/compose/ui/graphics/StrokeJoin;->constructor-impl(I)I +HSPLandroidx/compose/ui/graphics/StrokeJoin;->equals-impl0(II)Z +HSPLandroidx/compose/ui/graphics/StrokeJoin;->hashCode-impl(I)I +HSPLandroidx/compose/ui/graphics/StrokeJoin;->unbox-impl()I +Landroidx/compose/ui/graphics/StrokeJoin$Companion; +HSPLandroidx/compose/ui/graphics/StrokeJoin$Companion;->()V +HSPLandroidx/compose/ui/graphics/StrokeJoin$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/StrokeJoin$Companion;->getBevel-LxFBmk8()I +HSPLandroidx/compose/ui/graphics/StrokeJoin$Companion;->getMiter-LxFBmk8()I +Landroidx/compose/ui/graphics/TileMode; +HSPLandroidx/compose/ui/graphics/TileMode;->()V +HSPLandroidx/compose/ui/graphics/TileMode;->access$getClamp$cp()I +HSPLandroidx/compose/ui/graphics/TileMode;->constructor-impl(I)I +HSPLandroidx/compose/ui/graphics/TileMode;->equals-impl0(II)Z +Landroidx/compose/ui/graphics/TileMode$Companion; +HSPLandroidx/compose/ui/graphics/TileMode$Companion;->()V +HSPLandroidx/compose/ui/graphics/TileMode$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/TileMode$Companion;->getClamp-3opZhB0()I +Landroidx/compose/ui/graphics/TransformOrigin; +HSPLandroidx/compose/ui/graphics/TransformOrigin;->()V +HSPLandroidx/compose/ui/graphics/TransformOrigin;->(J)V +HSPLandroidx/compose/ui/graphics/TransformOrigin;->access$getCenter$cp()J +HSPLandroidx/compose/ui/graphics/TransformOrigin;->box-impl(J)Landroidx/compose/ui/graphics/TransformOrigin; +HSPLandroidx/compose/ui/graphics/TransformOrigin;->constructor-impl(J)J +HSPLandroidx/compose/ui/graphics/TransformOrigin;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/graphics/TransformOrigin;->equals-impl(JLjava/lang/Object;)Z +HSPLandroidx/compose/ui/graphics/TransformOrigin;->equals-impl0(JJ)Z +HSPLandroidx/compose/ui/graphics/TransformOrigin;->getPivotFractionX-impl(J)F +HSPLandroidx/compose/ui/graphics/TransformOrigin;->getPivotFractionY-impl(J)F +HSPLandroidx/compose/ui/graphics/TransformOrigin;->unbox-impl()J +Landroidx/compose/ui/graphics/TransformOrigin$Companion; +HSPLandroidx/compose/ui/graphics/TransformOrigin$Companion;->()V +HSPLandroidx/compose/ui/graphics/TransformOrigin$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/TransformOrigin$Companion;->getCenter-SzJe1aQ()J +Landroidx/compose/ui/graphics/TransformOriginKt; +HSPLandroidx/compose/ui/graphics/TransformOriginKt;->TransformOrigin(FF)J +Landroidx/compose/ui/graphics/WrapperVerificationHelperMethods; +HSPLandroidx/compose/ui/graphics/WrapperVerificationHelperMethods;->()V +HSPLandroidx/compose/ui/graphics/WrapperVerificationHelperMethods;->()V +HSPLandroidx/compose/ui/graphics/WrapperVerificationHelperMethods;->setBlendMode-GB0RdKg(Landroid/graphics/Paint;I)V +Landroidx/compose/ui/graphics/colorspace/Adaptation; +HSPLandroidx/compose/ui/graphics/colorspace/Adaptation;->()V +HSPLandroidx/compose/ui/graphics/colorspace/Adaptation;->([F)V +HSPLandroidx/compose/ui/graphics/colorspace/Adaptation;->([FLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/colorspace/Adaptation;->access$getBradford$cp()Landroidx/compose/ui/graphics/colorspace/Adaptation; +HSPLandroidx/compose/ui/graphics/colorspace/Adaptation;->getTransform$ui_graphics_release()[F +Landroidx/compose/ui/graphics/colorspace/Adaptation$Companion; +HSPLandroidx/compose/ui/graphics/colorspace/Adaptation$Companion;->()V +HSPLandroidx/compose/ui/graphics/colorspace/Adaptation$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/colorspace/Adaptation$Companion;->getBradford()Landroidx/compose/ui/graphics/colorspace/Adaptation; +Landroidx/compose/ui/graphics/colorspace/Adaptation$Companion$Bradford$1; +HSPLandroidx/compose/ui/graphics/colorspace/Adaptation$Companion$Bradford$1;->([F)V +Landroidx/compose/ui/graphics/colorspace/Adaptation$Companion$Ciecat02$1; +HSPLandroidx/compose/ui/graphics/colorspace/Adaptation$Companion$Ciecat02$1;->([F)V +Landroidx/compose/ui/graphics/colorspace/Adaptation$Companion$VonKries$1; +HSPLandroidx/compose/ui/graphics/colorspace/Adaptation$Companion$VonKries$1;->([F)V +Landroidx/compose/ui/graphics/colorspace/ColorModel; +HSPLandroidx/compose/ui/graphics/colorspace/ColorModel;->()V +HSPLandroidx/compose/ui/graphics/colorspace/ColorModel;->access$getLab$cp()J +HSPLandroidx/compose/ui/graphics/colorspace/ColorModel;->access$getRgb$cp()J +HSPLandroidx/compose/ui/graphics/colorspace/ColorModel;->access$getXyz$cp()J +HSPLandroidx/compose/ui/graphics/colorspace/ColorModel;->constructor-impl(J)J +HSPLandroidx/compose/ui/graphics/colorspace/ColorModel;->equals-impl0(JJ)Z +HSPLandroidx/compose/ui/graphics/colorspace/ColorModel;->getComponentCount-impl(J)I +Landroidx/compose/ui/graphics/colorspace/ColorModel$Companion; +HSPLandroidx/compose/ui/graphics/colorspace/ColorModel$Companion;->()V +HSPLandroidx/compose/ui/graphics/colorspace/ColorModel$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/colorspace/ColorModel$Companion;->getLab-xdoWZVw()J +HSPLandroidx/compose/ui/graphics/colorspace/ColorModel$Companion;->getRgb-xdoWZVw()J +HSPLandroidx/compose/ui/graphics/colorspace/ColorModel$Companion;->getXyz-xdoWZVw()J +Landroidx/compose/ui/graphics/colorspace/ColorSpace; +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace;->()V +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace;->(Ljava/lang/String;JI)V +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace;->(Ljava/lang/String;JILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace;->getComponentCount()I +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace;->getId$ui_graphics_release()I +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace;->getModel-xdoWZVw()J +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace;->getName()Ljava/lang/String; +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace;->isSrgb()Z +Landroidx/compose/ui/graphics/colorspace/ColorSpace$Companion; +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace$Companion;->()V +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/graphics/colorspace/ColorSpaceKt; +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->adapt$default(Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/WhitePoint;Landroidx/compose/ui/graphics/colorspace/Adaptation;ILjava/lang/Object;)Landroidx/compose/ui/graphics/colorspace/ColorSpace; +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->adapt(Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/WhitePoint;Landroidx/compose/ui/graphics/colorspace/Adaptation;)Landroidx/compose/ui/graphics/colorspace/ColorSpace; +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->chromaticAdaptation([F[F[F)[F +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->compare(Landroidx/compose/ui/graphics/colorspace/WhitePoint;Landroidx/compose/ui/graphics/colorspace/WhitePoint;)Z +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->compare([F[F)Z +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->connect-YBCOT_4$default(Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;IILjava/lang/Object;)Landroidx/compose/ui/graphics/colorspace/Connector; +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->connect-YBCOT_4(Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;I)Landroidx/compose/ui/graphics/colorspace/Connector; +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->inverse3x3([F)[F +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->mul3x3([F[F)[F +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->mul3x3Diag([F[F)[F +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->mul3x3Float3([F[F)[F +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->mul3x3Float3_0([FFFF)F +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->mul3x3Float3_1([FFFF)F +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->mul3x3Float3_2([FFFF)F +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->rcpResponse(DDDDDD)D +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->response(DDDDDD)D +Landroidx/compose/ui/graphics/colorspace/ColorSpaces; +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces;->()V +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces;->()V +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces;->getColorSpacesArray$ui_graphics_release()[Landroidx/compose/ui/graphics/colorspace/ColorSpace; +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces;->getNtsc1953Primaries$ui_graphics_release()[F +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces;->getOklab()Landroidx/compose/ui/graphics/colorspace/ColorSpace; +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces;->getSrgb()Landroidx/compose/ui/graphics/colorspace/Rgb; +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces;->getSrgbPrimaries$ui_graphics_release()[F +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces;->getUnspecified$ui_graphics_release()Landroidx/compose/ui/graphics/colorspace/Rgb; +Landroidx/compose/ui/graphics/colorspace/ColorSpaces$$ExternalSyntheticLambda0; +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces$$ExternalSyntheticLambda0;->()V +Landroidx/compose/ui/graphics/colorspace/ColorSpaces$$ExternalSyntheticLambda1; +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces$$ExternalSyntheticLambda1;->()V +Landroidx/compose/ui/graphics/colorspace/Connector; +HSPLandroidx/compose/ui/graphics/colorspace/Connector;->()V +HSPLandroidx/compose/ui/graphics/colorspace/Connector;->(Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;I)V +HSPLandroidx/compose/ui/graphics/colorspace/Connector;->(Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/colorspace/Connector;->(Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;I[F)V +HSPLandroidx/compose/ui/graphics/colorspace/Connector;->(Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;I[FLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/colorspace/Connector;->access$getOklabToSrgbPerceptual$cp()Landroidx/compose/ui/graphics/colorspace/Connector; +HSPLandroidx/compose/ui/graphics/colorspace/Connector;->access$getSrgbToOklabPerceptual$cp()Landroidx/compose/ui/graphics/colorspace/Connector; +HSPLandroidx/compose/ui/graphics/colorspace/Connector;->transformToColor-wmQWz5c$ui_graphics_release(FFFF)J +Landroidx/compose/ui/graphics/colorspace/Connector$Companion; +HSPLandroidx/compose/ui/graphics/colorspace/Connector$Companion;->()V +HSPLandroidx/compose/ui/graphics/colorspace/Connector$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/colorspace/Connector$Companion;->access$computeTransform-YBCOT_4(Landroidx/compose/ui/graphics/colorspace/Connector$Companion;Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;I)[F +HSPLandroidx/compose/ui/graphics/colorspace/Connector$Companion;->computeTransform-YBCOT_4(Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;I)[F +HSPLandroidx/compose/ui/graphics/colorspace/Connector$Companion;->getOklabToSrgbPerceptual$ui_graphics_release()Landroidx/compose/ui/graphics/colorspace/Connector; +HSPLandroidx/compose/ui/graphics/colorspace/Connector$Companion;->getSrgbToOklabPerceptual$ui_graphics_release()Landroidx/compose/ui/graphics/colorspace/Connector; +HSPLandroidx/compose/ui/graphics/colorspace/Connector$Companion;->identity$ui_graphics_release(Landroidx/compose/ui/graphics/colorspace/ColorSpace;)Landroidx/compose/ui/graphics/colorspace/Connector; +Landroidx/compose/ui/graphics/colorspace/Connector$Companion$identity$1; +HSPLandroidx/compose/ui/graphics/colorspace/Connector$Companion$identity$1;->(Landroidx/compose/ui/graphics/colorspace/ColorSpace;I)V +Landroidx/compose/ui/graphics/colorspace/Connector$RgbConnector; +HSPLandroidx/compose/ui/graphics/colorspace/Connector$RgbConnector;->(Landroidx/compose/ui/graphics/colorspace/Rgb;Landroidx/compose/ui/graphics/colorspace/Rgb;I)V +HSPLandroidx/compose/ui/graphics/colorspace/Connector$RgbConnector;->(Landroidx/compose/ui/graphics/colorspace/Rgb;Landroidx/compose/ui/graphics/colorspace/Rgb;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/colorspace/Connector$RgbConnector;->computeTransform-YBCOT_4(Landroidx/compose/ui/graphics/colorspace/Rgb;Landroidx/compose/ui/graphics/colorspace/Rgb;I)[F +HSPLandroidx/compose/ui/graphics/colorspace/Connector$RgbConnector;->transformToColor-wmQWz5c$ui_graphics_release(FFFF)J +Landroidx/compose/ui/graphics/colorspace/DoubleFunction; +Landroidx/compose/ui/graphics/colorspace/Illuminant; +HSPLandroidx/compose/ui/graphics/colorspace/Illuminant;->()V +HSPLandroidx/compose/ui/graphics/colorspace/Illuminant;->()V +HSPLandroidx/compose/ui/graphics/colorspace/Illuminant;->getC()Landroidx/compose/ui/graphics/colorspace/WhitePoint; +HSPLandroidx/compose/ui/graphics/colorspace/Illuminant;->getD50()Landroidx/compose/ui/graphics/colorspace/WhitePoint; +HSPLandroidx/compose/ui/graphics/colorspace/Illuminant;->getD60()Landroidx/compose/ui/graphics/colorspace/WhitePoint; +HSPLandroidx/compose/ui/graphics/colorspace/Illuminant;->getD65()Landroidx/compose/ui/graphics/colorspace/WhitePoint; +Landroidx/compose/ui/graphics/colorspace/Lab; +HSPLandroidx/compose/ui/graphics/colorspace/Lab;->()V +HSPLandroidx/compose/ui/graphics/colorspace/Lab;->(Ljava/lang/String;I)V +Landroidx/compose/ui/graphics/colorspace/Lab$Companion; +HSPLandroidx/compose/ui/graphics/colorspace/Lab$Companion;->()V +HSPLandroidx/compose/ui/graphics/colorspace/Lab$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/graphics/colorspace/Oklab; +HSPLandroidx/compose/ui/graphics/colorspace/Oklab;->()V +HSPLandroidx/compose/ui/graphics/colorspace/Oklab;->(Ljava/lang/String;I)V +HSPLandroidx/compose/ui/graphics/colorspace/Oklab;->getMaxValue(I)F +HSPLandroidx/compose/ui/graphics/colorspace/Oklab;->getMinValue(I)F +HSPLandroidx/compose/ui/graphics/colorspace/Oklab;->toXy$ui_graphics_release(FFF)J +HSPLandroidx/compose/ui/graphics/colorspace/Oklab;->toZ$ui_graphics_release(FFF)F +HSPLandroidx/compose/ui/graphics/colorspace/Oklab;->xyzaToColor-JlNiLsg$ui_graphics_release(FFFFLandroidx/compose/ui/graphics/colorspace/ColorSpace;)J +Landroidx/compose/ui/graphics/colorspace/Oklab$Companion; +HSPLandroidx/compose/ui/graphics/colorspace/Oklab$Companion;->()V +HSPLandroidx/compose/ui/graphics/colorspace/Oklab$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/graphics/colorspace/RenderIntent; +HSPLandroidx/compose/ui/graphics/colorspace/RenderIntent;->()V +HSPLandroidx/compose/ui/graphics/colorspace/RenderIntent;->access$getAbsolute$cp()I +HSPLandroidx/compose/ui/graphics/colorspace/RenderIntent;->access$getPerceptual$cp()I +HSPLandroidx/compose/ui/graphics/colorspace/RenderIntent;->access$getRelative$cp()I +HSPLandroidx/compose/ui/graphics/colorspace/RenderIntent;->constructor-impl(I)I +HSPLandroidx/compose/ui/graphics/colorspace/RenderIntent;->equals-impl0(II)Z +Landroidx/compose/ui/graphics/colorspace/RenderIntent$Companion; +HSPLandroidx/compose/ui/graphics/colorspace/RenderIntent$Companion;->()V +HSPLandroidx/compose/ui/graphics/colorspace/RenderIntent$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/colorspace/RenderIntent$Companion;->getAbsolute-uksYyKA()I +HSPLandroidx/compose/ui/graphics/colorspace/RenderIntent$Companion;->getPerceptual-uksYyKA()I +HSPLandroidx/compose/ui/graphics/colorspace/RenderIntent$Companion;->getRelative-uksYyKA()I +Landroidx/compose/ui/graphics/colorspace/Rgb; +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->$r8$lambda$FANKyyW7TMwi4gnihl1LqxbkU6k(Landroidx/compose/ui/graphics/colorspace/Rgb;D)D +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->$r8$lambda$G8Pyx7Z9bMrnDjgEiQ7pXGTZEzg(Landroidx/compose/ui/graphics/colorspace/TransferParameters;D)D +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->$r8$lambda$OfmTeMXzL_nayJmS5mO6N4G4DlI(Landroidx/compose/ui/graphics/colorspace/Rgb;D)D +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->$r8$lambda$ahWovdYS5NpJ-IThda37cTda4qg(D)D +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->$r8$lambda$q_AtDSzDu9yw5JwgrVWJo3kmlB0(Landroidx/compose/ui/graphics/colorspace/TransferParameters;D)D +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->()V +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->(Landroidx/compose/ui/graphics/colorspace/Rgb;[FLandroidx/compose/ui/graphics/colorspace/WhitePoint;)V +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->(Ljava/lang/String;[FLandroidx/compose/ui/graphics/colorspace/WhitePoint;DFFI)V +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->(Ljava/lang/String;[FLandroidx/compose/ui/graphics/colorspace/WhitePoint;Landroidx/compose/ui/graphics/colorspace/TransferParameters;I)V +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->(Ljava/lang/String;[FLandroidx/compose/ui/graphics/colorspace/WhitePoint;[FLandroidx/compose/ui/graphics/colorspace/DoubleFunction;Landroidx/compose/ui/graphics/colorspace/DoubleFunction;FFLandroidx/compose/ui/graphics/colorspace/TransferParameters;I)V +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->DoubleIdentity$lambda$12(D)D +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->_init_$lambda$6(Landroidx/compose/ui/graphics/colorspace/TransferParameters;D)D +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->_init_$lambda$8(Landroidx/compose/ui/graphics/colorspace/TransferParameters;D)D +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->eotfFunc$lambda$1(Landroidx/compose/ui/graphics/colorspace/Rgb;D)D +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->getEotfFunc$ui_graphics_release()Landroidx/compose/ui/graphics/colorspace/DoubleFunction; +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->getEotfOrig$ui_graphics_release()Landroidx/compose/ui/graphics/colorspace/DoubleFunction; +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->getInverseTransform$ui_graphics_release()[F +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->getMaxValue(I)F +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->getMinValue(I)F +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->getOetfFunc$ui_graphics_release()Landroidx/compose/ui/graphics/colorspace/DoubleFunction; +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->getOetfOrig$ui_graphics_release()Landroidx/compose/ui/graphics/colorspace/DoubleFunction; +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->getTransform$ui_graphics_release()[F +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->getWhitePoint()Landroidx/compose/ui/graphics/colorspace/WhitePoint; +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->isSrgb()Z +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->oetfFunc$lambda$0(Landroidx/compose/ui/graphics/colorspace/Rgb;D)D +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->toXy$ui_graphics_release(FFF)J +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->toZ$ui_graphics_release(FFF)F +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->xyzaToColor-JlNiLsg$ui_graphics_release(FFFFLandroidx/compose/ui/graphics/colorspace/ColorSpace;)J +Landroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda1; +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda1;->()V +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda1;->invoke(D)D +Landroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda11; +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda11;->(Landroidx/compose/ui/graphics/colorspace/TransferParameters;)V +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda11;->invoke(D)D +Landroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda2; +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda2;->(D)V +Landroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda3; +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda3;->(D)V +Landroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda7; +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda7;->(Landroidx/compose/ui/graphics/colorspace/Rgb;)V +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda7;->invoke(D)D +Landroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda8; +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda8;->(Landroidx/compose/ui/graphics/colorspace/Rgb;)V +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda8;->invoke(D)D +Landroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda9; +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda9;->(Landroidx/compose/ui/graphics/colorspace/TransferParameters;)V +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda9;->invoke(D)D +Landroidx/compose/ui/graphics/colorspace/Rgb$Companion; +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->()V +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->access$computeXYZMatrix(Landroidx/compose/ui/graphics/colorspace/Rgb$Companion;[FLandroidx/compose/ui/graphics/colorspace/WhitePoint;)[F +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->access$isSrgb(Landroidx/compose/ui/graphics/colorspace/Rgb$Companion;[FLandroidx/compose/ui/graphics/colorspace/WhitePoint;Landroidx/compose/ui/graphics/colorspace/DoubleFunction;Landroidx/compose/ui/graphics/colorspace/DoubleFunction;FFI)Z +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->access$isWideGamut(Landroidx/compose/ui/graphics/colorspace/Rgb$Companion;[FFF)Z +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->access$xyPrimaries(Landroidx/compose/ui/graphics/colorspace/Rgb$Companion;[F)[F +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->area([F)F +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->compare(DLandroidx/compose/ui/graphics/colorspace/DoubleFunction;Landroidx/compose/ui/graphics/colorspace/DoubleFunction;)Z +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->computeXYZMatrix([FLandroidx/compose/ui/graphics/colorspace/WhitePoint;)[F +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->contains([F[F)Z +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->cross(FFFF)F +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->isSrgb([FLandroidx/compose/ui/graphics/colorspace/WhitePoint;Landroidx/compose/ui/graphics/colorspace/DoubleFunction;Landroidx/compose/ui/graphics/colorspace/DoubleFunction;FFI)Z +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->isWideGamut([FFF)Z +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->xyPrimaries([F)[F +Landroidx/compose/ui/graphics/colorspace/Rgb$eotf$1; +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$eotf$1;->(Landroidx/compose/ui/graphics/colorspace/Rgb;)V +Landroidx/compose/ui/graphics/colorspace/Rgb$oetf$1; +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$oetf$1;->(Landroidx/compose/ui/graphics/colorspace/Rgb;)V +Landroidx/compose/ui/graphics/colorspace/TransferParameters; +HSPLandroidx/compose/ui/graphics/colorspace/TransferParameters;->(DDDDDDD)V +HSPLandroidx/compose/ui/graphics/colorspace/TransferParameters;->(DDDDDDDILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/colorspace/TransferParameters;->getA()D +HSPLandroidx/compose/ui/graphics/colorspace/TransferParameters;->getB()D +HSPLandroidx/compose/ui/graphics/colorspace/TransferParameters;->getC()D +HSPLandroidx/compose/ui/graphics/colorspace/TransferParameters;->getD()D +HSPLandroidx/compose/ui/graphics/colorspace/TransferParameters;->getE()D +HSPLandroidx/compose/ui/graphics/colorspace/TransferParameters;->getF()D +HSPLandroidx/compose/ui/graphics/colorspace/TransferParameters;->getGamma()D +Landroidx/compose/ui/graphics/colorspace/WhitePoint; +HSPLandroidx/compose/ui/graphics/colorspace/WhitePoint;->(FF)V +HSPLandroidx/compose/ui/graphics/colorspace/WhitePoint;->getX()F +HSPLandroidx/compose/ui/graphics/colorspace/WhitePoint;->getY()F +HSPLandroidx/compose/ui/graphics/colorspace/WhitePoint;->toXyz$ui_graphics_release()[F +Landroidx/compose/ui/graphics/colorspace/Xyz; +HSPLandroidx/compose/ui/graphics/colorspace/Xyz;->(Ljava/lang/String;I)V +Landroidx/compose/ui/graphics/drawscope/CanvasDrawScope; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->()V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->configurePaint-2qPWKa0$default(Landroidx/compose/ui/graphics/drawscope/CanvasDrawScope;JLandroidx/compose/ui/graphics/drawscope/DrawStyle;FLandroidx/compose/ui/graphics/ColorFilter;IIILjava/lang/Object;)Landroidx/compose/ui/graphics/Paint; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->configurePaint-2qPWKa0(JLandroidx/compose/ui/graphics/drawscope/DrawStyle;FLandroidx/compose/ui/graphics/ColorFilter;II)Landroidx/compose/ui/graphics/Paint; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->configurePaint-swdJneE$default(Landroidx/compose/ui/graphics/drawscope/CanvasDrawScope;Landroidx/compose/ui/graphics/Brush;Landroidx/compose/ui/graphics/drawscope/DrawStyle;FLandroidx/compose/ui/graphics/ColorFilter;IIILjava/lang/Object;)Landroidx/compose/ui/graphics/Paint; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->configurePaint-swdJneE(Landroidx/compose/ui/graphics/Brush;Landroidx/compose/ui/graphics/drawscope/DrawStyle;FLandroidx/compose/ui/graphics/ColorFilter;II)Landroidx/compose/ui/graphics/Paint; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->configureStrokePaint-ho4zsrM$default(Landroidx/compose/ui/graphics/drawscope/CanvasDrawScope;Landroidx/compose/ui/graphics/Brush;FFIILandroidx/compose/ui/graphics/PathEffect;FLandroidx/compose/ui/graphics/ColorFilter;IIILjava/lang/Object;)Landroidx/compose/ui/graphics/Paint; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->configureStrokePaint-ho4zsrM(Landroidx/compose/ui/graphics/Brush;FFIILandroidx/compose/ui/graphics/PathEffect;FLandroidx/compose/ui/graphics/ColorFilter;II)Landroidx/compose/ui/graphics/Paint; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->drawArc-yD3GUKo(JFFZJJFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;I)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->drawImage-AZ2fEMs(Landroidx/compose/ui/graphics/ImageBitmap;JJJJFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;II)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->drawLine-1RTmtNc(Landroidx/compose/ui/graphics/Brush;JJFILandroidx/compose/ui/graphics/PathEffect;FLandroidx/compose/ui/graphics/ColorFilter;I)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->drawPath-GBMwjPU(Landroidx/compose/ui/graphics/Path;Landroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;I)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->drawPath-LG529CI(Landroidx/compose/ui/graphics/Path;JFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;I)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->drawRect-n-J9OG0(JJJFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;I)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->drawRoundRect-ZuiqVtQ(Landroidx/compose/ui/graphics/Brush;JJJFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;I)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->drawRoundRect-u-Aw5IA(JJJJLandroidx/compose/ui/graphics/drawscope/DrawStyle;FLandroidx/compose/ui/graphics/ColorFilter;I)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->getDensity()F +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->getDrawContext()Landroidx/compose/ui/graphics/drawscope/DrawContext; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->getDrawParams()Landroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->modulate-5vOe2sY(JF)J +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->obtainFillPaint()Landroidx/compose/ui/graphics/Paint; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->obtainStrokePaint()Landroidx/compose/ui/graphics/Paint; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->selectPaint(Landroidx/compose/ui/graphics/drawscope/DrawStyle;)Landroidx/compose/ui/graphics/Paint; +Landroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/graphics/Canvas;J)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/graphics/Canvas;JILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/graphics/Canvas;JLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->component1()Landroidx/compose/ui/unit/Density; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->component2()Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->component3()Landroidx/compose/ui/graphics/Canvas; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->component4-NH-jbRc()J +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->getCanvas()Landroidx/compose/ui/graphics/Canvas; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->getDensity()Landroidx/compose/ui/unit/Density; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->getSize-NH-jbRc()J +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->setCanvas(Landroidx/compose/ui/graphics/Canvas;)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->setDensity(Landroidx/compose/ui/unit/Density;)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->setLayoutDirection(Landroidx/compose/ui/unit/LayoutDirection;)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->setSize-uvyYCjk(J)V +Landroidx/compose/ui/graphics/drawscope/CanvasDrawScope$drawContext$1; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$drawContext$1;->(Landroidx/compose/ui/graphics/drawscope/CanvasDrawScope;)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$drawContext$1;->getCanvas()Landroidx/compose/ui/graphics/Canvas; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$drawContext$1;->getSize-NH-jbRc()J +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$drawContext$1;->getTransform()Landroidx/compose/ui/graphics/drawscope/DrawTransform; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$drawContext$1;->setSize-uvyYCjk(J)V +Landroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt;->()V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt;->access$asDrawTransform(Landroidx/compose/ui/graphics/drawscope/DrawContext;)Landroidx/compose/ui/graphics/drawscope/DrawTransform; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt;->access$getDefaultDensity$p()Landroidx/compose/ui/unit/Density; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt;->asDrawTransform(Landroidx/compose/ui/graphics/drawscope/DrawContext;)Landroidx/compose/ui/graphics/drawscope/DrawTransform; +Landroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt$asDrawTransform$1; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt$asDrawTransform$1;->(Landroidx/compose/ui/graphics/drawscope/DrawContext;)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt$asDrawTransform$1;->getSize-NH-jbRc()J +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt$asDrawTransform$1;->inset(FFFF)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt$asDrawTransform$1;->transform-58bKbWc([F)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt$asDrawTransform$1;->translate(FF)V +Landroidx/compose/ui/graphics/drawscope/ContentDrawScope; +Landroidx/compose/ui/graphics/drawscope/DrawContext; +Landroidx/compose/ui/graphics/drawscope/DrawScope; +HSPLandroidx/compose/ui/graphics/drawscope/DrawScope;->()V +HSPLandroidx/compose/ui/graphics/drawscope/DrawScope;->drawArc-yD3GUKo$default(Landroidx/compose/ui/graphics/drawscope/DrawScope;JFFZJJFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;IILjava/lang/Object;)V +HSPLandroidx/compose/ui/graphics/drawscope/DrawScope;->drawImage-AZ2fEMs$default(Landroidx/compose/ui/graphics/drawscope/DrawScope;Landroidx/compose/ui/graphics/ImageBitmap;JJJJFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;IIILjava/lang/Object;)V +HSPLandroidx/compose/ui/graphics/drawscope/DrawScope;->drawLine-1RTmtNc$default(Landroidx/compose/ui/graphics/drawscope/DrawScope;Landroidx/compose/ui/graphics/Brush;JJFILandroidx/compose/ui/graphics/PathEffect;FLandroidx/compose/ui/graphics/ColorFilter;IILjava/lang/Object;)V +HSPLandroidx/compose/ui/graphics/drawscope/DrawScope;->drawPath-GBMwjPU$default(Landroidx/compose/ui/graphics/drawscope/DrawScope;Landroidx/compose/ui/graphics/Path;Landroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;IILjava/lang/Object;)V +HSPLandroidx/compose/ui/graphics/drawscope/DrawScope;->drawPath-LG529CI$default(Landroidx/compose/ui/graphics/drawscope/DrawScope;Landroidx/compose/ui/graphics/Path;JFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;IILjava/lang/Object;)V +HSPLandroidx/compose/ui/graphics/drawscope/DrawScope;->drawRect-n-J9OG0$default(Landroidx/compose/ui/graphics/drawscope/DrawScope;JJJFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;IILjava/lang/Object;)V +HSPLandroidx/compose/ui/graphics/drawscope/DrawScope;->drawRoundRect-ZuiqVtQ$default(Landroidx/compose/ui/graphics/drawscope/DrawScope;Landroidx/compose/ui/graphics/Brush;JJJFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;IILjava/lang/Object;)V +HSPLandroidx/compose/ui/graphics/drawscope/DrawScope;->drawRoundRect-u-Aw5IA$default(Landroidx/compose/ui/graphics/drawscope/DrawScope;JJJJLandroidx/compose/ui/graphics/drawscope/DrawStyle;FLandroidx/compose/ui/graphics/ColorFilter;IILjava/lang/Object;)V +HSPLandroidx/compose/ui/graphics/drawscope/DrawScope;->getSize-NH-jbRc()J +HSPLandroidx/compose/ui/graphics/drawscope/DrawScope;->offsetSize-PENXr5M(JJ)J +Landroidx/compose/ui/graphics/drawscope/DrawScope$Companion; +HSPLandroidx/compose/ui/graphics/drawscope/DrawScope$Companion;->()V +HSPLandroidx/compose/ui/graphics/drawscope/DrawScope$Companion;->()V +HSPLandroidx/compose/ui/graphics/drawscope/DrawScope$Companion;->getDefaultBlendMode-0nO6VwU()I +HSPLandroidx/compose/ui/graphics/drawscope/DrawScope$Companion;->getDefaultFilterQuality-f-v9h1I()I +Landroidx/compose/ui/graphics/drawscope/DrawStyle; +HSPLandroidx/compose/ui/graphics/drawscope/DrawStyle;->()V +HSPLandroidx/compose/ui/graphics/drawscope/DrawStyle;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/graphics/drawscope/DrawTransform; +Landroidx/compose/ui/graphics/drawscope/EmptyCanvas; +HSPLandroidx/compose/ui/graphics/drawscope/EmptyCanvas;->()V +Landroidx/compose/ui/graphics/drawscope/Fill; +HSPLandroidx/compose/ui/graphics/drawscope/Fill;->()V +HSPLandroidx/compose/ui/graphics/drawscope/Fill;->()V +Landroidx/compose/ui/graphics/drawscope/Stroke; +HSPLandroidx/compose/ui/graphics/drawscope/Stroke;->()V +HSPLandroidx/compose/ui/graphics/drawscope/Stroke;->(FFIILandroidx/compose/ui/graphics/PathEffect;)V +HSPLandroidx/compose/ui/graphics/drawscope/Stroke;->(FFIILandroidx/compose/ui/graphics/PathEffect;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/drawscope/Stroke;->(FFIILandroidx/compose/ui/graphics/PathEffect;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/drawscope/Stroke;->access$getDefaultCap$cp()I +HSPLandroidx/compose/ui/graphics/drawscope/Stroke;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/graphics/drawscope/Stroke;->getCap-KaPHkGw()I +HSPLandroidx/compose/ui/graphics/drawscope/Stroke;->getJoin-LxFBmk8()I +HSPLandroidx/compose/ui/graphics/drawscope/Stroke;->getMiter()F +HSPLandroidx/compose/ui/graphics/drawscope/Stroke;->getPathEffect()Landroidx/compose/ui/graphics/PathEffect; +HSPLandroidx/compose/ui/graphics/drawscope/Stroke;->getWidth()F +Landroidx/compose/ui/graphics/drawscope/Stroke$Companion; +HSPLandroidx/compose/ui/graphics/drawscope/Stroke$Companion;->()V +HSPLandroidx/compose/ui/graphics/drawscope/Stroke$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/drawscope/Stroke$Companion;->getDefaultCap-KaPHkGw()I +Landroidx/compose/ui/graphics/painter/Painter; +HSPLandroidx/compose/ui/graphics/painter/Painter;->()V +HSPLandroidx/compose/ui/graphics/painter/Painter;->configureAlpha(F)V +HSPLandroidx/compose/ui/graphics/painter/Painter;->configureColorFilter(Landroidx/compose/ui/graphics/ColorFilter;)V +HSPLandroidx/compose/ui/graphics/painter/Painter;->configureLayoutDirection(Landroidx/compose/ui/unit/LayoutDirection;)V +HSPLandroidx/compose/ui/graphics/painter/Painter;->draw-x_KDEd0(Landroidx/compose/ui/graphics/drawscope/DrawScope;JFLandroidx/compose/ui/graphics/ColorFilter;)V +Landroidx/compose/ui/graphics/painter/Painter$drawLambda$1; +HSPLandroidx/compose/ui/graphics/painter/Painter$drawLambda$1;->(Landroidx/compose/ui/graphics/painter/Painter;)V +Landroidx/compose/ui/graphics/vector/DrawCache; +HSPLandroidx/compose/ui/graphics/vector/DrawCache;->()V +HSPLandroidx/compose/ui/graphics/vector/DrawCache;->clear(Landroidx/compose/ui/graphics/drawscope/DrawScope;)V +HSPLandroidx/compose/ui/graphics/vector/DrawCache;->drawCachedImage-CJJAR-o(JLandroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/graphics/vector/DrawCache;->drawInto(Landroidx/compose/ui/graphics/drawscope/DrawScope;FLandroidx/compose/ui/graphics/ColorFilter;)V +Landroidx/compose/ui/graphics/vector/GroupComponent; +HSPLandroidx/compose/ui/graphics/vector/GroupComponent;->()V +HSPLandroidx/compose/ui/graphics/vector/GroupComponent;->draw(Landroidx/compose/ui/graphics/drawscope/DrawScope;)V +HSPLandroidx/compose/ui/graphics/vector/GroupComponent;->getInvalidateListener$ui_release()Lkotlin/jvm/functions/Function0; +HSPLandroidx/compose/ui/graphics/vector/GroupComponent;->getNumChildren()I +HSPLandroidx/compose/ui/graphics/vector/GroupComponent;->getWillClipPath()Z +HSPLandroidx/compose/ui/graphics/vector/GroupComponent;->insertAt(ILandroidx/compose/ui/graphics/vector/VNode;)V +HSPLandroidx/compose/ui/graphics/vector/GroupComponent;->remove(II)V +HSPLandroidx/compose/ui/graphics/vector/GroupComponent;->setInvalidateListener$ui_release(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/graphics/vector/GroupComponent;->setName(Ljava/lang/String;)V +HSPLandroidx/compose/ui/graphics/vector/GroupComponent;->setPivotX(F)V +HSPLandroidx/compose/ui/graphics/vector/GroupComponent;->setPivotY(F)V +HSPLandroidx/compose/ui/graphics/vector/GroupComponent;->setScaleX(F)V +HSPLandroidx/compose/ui/graphics/vector/GroupComponent;->setScaleY(F)V +HSPLandroidx/compose/ui/graphics/vector/GroupComponent;->updateClipPath()V +HSPLandroidx/compose/ui/graphics/vector/GroupComponent;->updateMatrix()V +Landroidx/compose/ui/graphics/vector/ImageVector; +HSPLandroidx/compose/ui/graphics/vector/ImageVector;->()V +HSPLandroidx/compose/ui/graphics/vector/ImageVector;->(Ljava/lang/String;FFFFLandroidx/compose/ui/graphics/vector/VectorGroup;JIZ)V +HSPLandroidx/compose/ui/graphics/vector/ImageVector;->(Ljava/lang/String;FFFFLandroidx/compose/ui/graphics/vector/VectorGroup;JIZLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/vector/ImageVector;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/graphics/vector/ImageVector;->getAutoMirror()Z +HSPLandroidx/compose/ui/graphics/vector/ImageVector;->getDefaultHeight-D9Ej5fM()F +HSPLandroidx/compose/ui/graphics/vector/ImageVector;->getDefaultWidth-D9Ej5fM()F +HSPLandroidx/compose/ui/graphics/vector/ImageVector;->getName()Ljava/lang/String; +HSPLandroidx/compose/ui/graphics/vector/ImageVector;->getRoot()Landroidx/compose/ui/graphics/vector/VectorGroup; +HSPLandroidx/compose/ui/graphics/vector/ImageVector;->getTintBlendMode-0nO6VwU()I +HSPLandroidx/compose/ui/graphics/vector/ImageVector;->getTintColor-0d7_KjU()J +HSPLandroidx/compose/ui/graphics/vector/ImageVector;->getViewportHeight()F +HSPLandroidx/compose/ui/graphics/vector/ImageVector;->getViewportWidth()F +HSPLandroidx/compose/ui/graphics/vector/ImageVector;->hashCode()I +Landroidx/compose/ui/graphics/vector/ImageVector$Builder; +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder;->()V +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder;->(Ljava/lang/String;FFFFJIZ)V +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder;->(Ljava/lang/String;FFFFJIZILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder;->(Ljava/lang/String;FFFFJIZLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder;->addPath-oIyEayM$default(Landroidx/compose/ui/graphics/vector/ImageVector$Builder;Ljava/util/List;ILjava/lang/String;Landroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/Brush;FFIIFFFFILjava/lang/Object;)Landroidx/compose/ui/graphics/vector/ImageVector$Builder; +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder;->addPath-oIyEayM(Ljava/util/List;ILjava/lang/String;Landroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/Brush;FFIIFFFF)Landroidx/compose/ui/graphics/vector/ImageVector$Builder; +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder;->asVectorGroup(Landroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;)Landroidx/compose/ui/graphics/vector/VectorGroup; +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder;->build()Landroidx/compose/ui/graphics/vector/ImageVector; +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder;->ensureNotConsumed()V +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder;->getCurrentGroup()Landroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams; +Landroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams; +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->(Ljava/lang/String;FFFFFFFLjava/util/List;Ljava/util/List;)V +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->(Ljava/lang/String;FFFFFFFLjava/util/List;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->getChildren()Ljava/util/List; +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->getClipPathData()Ljava/util/List; +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->getName()Ljava/lang/String; +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->getPivotX()F +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->getPivotY()F +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->getRotate()F +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->getScaleX()F +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->getScaleY()F +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->getTranslationX()F +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->getTranslationY()F +Landroidx/compose/ui/graphics/vector/ImageVector$Companion; +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Companion;->()V +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/graphics/vector/ImageVectorKt; +HSPLandroidx/compose/ui/graphics/vector/ImageVectorKt;->access$peek(Ljava/util/ArrayList;)Ljava/lang/Object; +HSPLandroidx/compose/ui/graphics/vector/ImageVectorKt;->access$push(Ljava/util/ArrayList;Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/graphics/vector/ImageVectorKt;->peek(Ljava/util/ArrayList;)Ljava/lang/Object; +HSPLandroidx/compose/ui/graphics/vector/ImageVectorKt;->push(Ljava/util/ArrayList;Ljava/lang/Object;)Z +Landroidx/compose/ui/graphics/vector/PathBuilder; +HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->()V +HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->addNode(Landroidx/compose/ui/graphics/vector/PathNode;)Landroidx/compose/ui/graphics/vector/PathBuilder; +HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->close()Landroidx/compose/ui/graphics/vector/PathBuilder; +HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->curveTo(FFFFFF)Landroidx/compose/ui/graphics/vector/PathBuilder; +HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->curveToRelative(FFFFFF)Landroidx/compose/ui/graphics/vector/PathBuilder; +HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->getNodes()Ljava/util/List; +HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->horizontalLineTo(F)Landroidx/compose/ui/graphics/vector/PathBuilder; +HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->horizontalLineToRelative(F)Landroidx/compose/ui/graphics/vector/PathBuilder; +HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->lineTo(FF)Landroidx/compose/ui/graphics/vector/PathBuilder; +HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->lineToRelative(FF)Landroidx/compose/ui/graphics/vector/PathBuilder; +HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->moveTo(FF)Landroidx/compose/ui/graphics/vector/PathBuilder; +HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->moveToRelative(FF)Landroidx/compose/ui/graphics/vector/PathBuilder; +HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->reflectiveCurveTo(FFFF)Landroidx/compose/ui/graphics/vector/PathBuilder; +HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->reflectiveCurveToRelative(FFFF)Landroidx/compose/ui/graphics/vector/PathBuilder; +HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->verticalLineTo(F)Landroidx/compose/ui/graphics/vector/PathBuilder; +HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->verticalLineToRelative(F)Landroidx/compose/ui/graphics/vector/PathBuilder; +Landroidx/compose/ui/graphics/vector/PathComponent; +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->()V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->draw(Landroidx/compose/ui/graphics/drawscope/DrawScope;)V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->setFill(Landroidx/compose/ui/graphics/Brush;)V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->setFillAlpha(F)V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->setName(Ljava/lang/String;)V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->setPathData(Ljava/util/List;)V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->setPathFillType-oQ8Xj4U(I)V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->setStroke(Landroidx/compose/ui/graphics/Brush;)V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->setStrokeAlpha(F)V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->setStrokeLineCap-BeK7IIE(I)V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->setStrokeLineJoin-Ww9F2mQ(I)V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->setStrokeLineMiter(F)V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->setStrokeLineWidth(F)V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->setTrimPathEnd(F)V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->setTrimPathOffset(F)V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->setTrimPathStart(F)V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->updatePath()V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->updateRenderPath()V +Landroidx/compose/ui/graphics/vector/PathComponent$pathMeasure$2; +HSPLandroidx/compose/ui/graphics/vector/PathComponent$pathMeasure$2;->()V +HSPLandroidx/compose/ui/graphics/vector/PathComponent$pathMeasure$2;->()V +Landroidx/compose/ui/graphics/vector/PathNode; +HSPLandroidx/compose/ui/graphics/vector/PathNode;->(ZZ)V +HSPLandroidx/compose/ui/graphics/vector/PathNode;->(ZZILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/vector/PathNode;->(ZZLkotlin/jvm/internal/DefaultConstructorMarker;)V +PLandroidx/compose/ui/graphics/vector/PathNode;->isCurve()Z +Landroidx/compose/ui/graphics/vector/PathNode$Close; +HSPLandroidx/compose/ui/graphics/vector/PathNode$Close;->()V +HSPLandroidx/compose/ui/graphics/vector/PathNode$Close;->()V +Landroidx/compose/ui/graphics/vector/PathNode$CurveTo; +HSPLandroidx/compose/ui/graphics/vector/PathNode$CurveTo;->(FFFFFF)V +HSPLandroidx/compose/ui/graphics/vector/PathNode$CurveTo;->getX1()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$CurveTo;->getX2()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$CurveTo;->getX3()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$CurveTo;->getY1()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$CurveTo;->getY2()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$CurveTo;->getY3()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$CurveTo;->hashCode()I +Landroidx/compose/ui/graphics/vector/PathNode$HorizontalTo; +HSPLandroidx/compose/ui/graphics/vector/PathNode$HorizontalTo;->(F)V +HSPLandroidx/compose/ui/graphics/vector/PathNode$HorizontalTo;->getX()F +Landroidx/compose/ui/graphics/vector/PathNode$LineTo; +HSPLandroidx/compose/ui/graphics/vector/PathNode$LineTo;->(FF)V +HSPLandroidx/compose/ui/graphics/vector/PathNode$LineTo;->getX()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$LineTo;->getY()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$LineTo;->hashCode()I +Landroidx/compose/ui/graphics/vector/PathNode$MoveTo; +HSPLandroidx/compose/ui/graphics/vector/PathNode$MoveTo;->(FF)V +HSPLandroidx/compose/ui/graphics/vector/PathNode$MoveTo;->getX()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$MoveTo;->getY()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$MoveTo;->hashCode()I +Landroidx/compose/ui/graphics/vector/PathNode$ReflectiveCurveTo; +HSPLandroidx/compose/ui/graphics/vector/PathNode$ReflectiveCurveTo;->(FFFF)V +PLandroidx/compose/ui/graphics/vector/PathNode$ReflectiveCurveTo;->getX1()F +PLandroidx/compose/ui/graphics/vector/PathNode$ReflectiveCurveTo;->getX2()F +PLandroidx/compose/ui/graphics/vector/PathNode$ReflectiveCurveTo;->getY1()F +PLandroidx/compose/ui/graphics/vector/PathNode$ReflectiveCurveTo;->getY2()F +Landroidx/compose/ui/graphics/vector/PathNode$RelativeCurveTo; +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeCurveTo;->(FFFFFF)V +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeCurveTo;->getDx1()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeCurveTo;->getDx2()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeCurveTo;->getDx3()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeCurveTo;->getDy1()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeCurveTo;->getDy2()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeCurveTo;->getDy3()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeCurveTo;->hashCode()I +Landroidx/compose/ui/graphics/vector/PathNode$RelativeHorizontalTo; +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeHorizontalTo;->(F)V +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeHorizontalTo;->getDx()F +Landroidx/compose/ui/graphics/vector/PathNode$RelativeLineTo; +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeLineTo;->(FF)V +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeLineTo;->getDx()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeLineTo;->getDy()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeLineTo;->hashCode()I +Landroidx/compose/ui/graphics/vector/PathNode$RelativeMoveTo; +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeMoveTo;->(FF)V +PLandroidx/compose/ui/graphics/vector/PathNode$RelativeMoveTo;->getDx()F +PLandroidx/compose/ui/graphics/vector/PathNode$RelativeMoveTo;->getDy()F +Landroidx/compose/ui/graphics/vector/PathNode$RelativeReflectiveCurveTo; +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeReflectiveCurveTo;->(FFFF)V +PLandroidx/compose/ui/graphics/vector/PathNode$RelativeReflectiveCurveTo;->getDx1()F +PLandroidx/compose/ui/graphics/vector/PathNode$RelativeReflectiveCurveTo;->getDx2()F +PLandroidx/compose/ui/graphics/vector/PathNode$RelativeReflectiveCurveTo;->getDy1()F +PLandroidx/compose/ui/graphics/vector/PathNode$RelativeReflectiveCurveTo;->getDy2()F +Landroidx/compose/ui/graphics/vector/PathNode$RelativeVerticalTo; +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeVerticalTo;->(F)V +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeVerticalTo;->getDy()F +Landroidx/compose/ui/graphics/vector/PathNode$VerticalTo; +HSPLandroidx/compose/ui/graphics/vector/PathNode$VerticalTo;->(F)V +HSPLandroidx/compose/ui/graphics/vector/PathNode$VerticalTo;->getY()F +Landroidx/compose/ui/graphics/vector/PathParserKt; +HSPLandroidx/compose/ui/graphics/vector/PathParserKt;->()V +HSPLandroidx/compose/ui/graphics/vector/PathParserKt;->toPath(Ljava/util/List;Landroidx/compose/ui/graphics/Path;)Landroidx/compose/ui/graphics/Path; +Landroidx/compose/ui/graphics/vector/VNode; +HSPLandroidx/compose/ui/graphics/vector/VNode;->()V +HSPLandroidx/compose/ui/graphics/vector/VNode;->()V +HSPLandroidx/compose/ui/graphics/vector/VNode;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/vector/VNode;->getInvalidateListener$ui_release()Lkotlin/jvm/functions/Function0; +HSPLandroidx/compose/ui/graphics/vector/VNode;->invalidate()V +HSPLandroidx/compose/ui/graphics/vector/VNode;->setInvalidateListener$ui_release(Lkotlin/jvm/functions/Function0;)V +Landroidx/compose/ui/graphics/vector/VectorApplier; +HSPLandroidx/compose/ui/graphics/vector/VectorApplier;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorApplier;->(Landroidx/compose/ui/graphics/vector/VNode;)V +HSPLandroidx/compose/ui/graphics/vector/VectorApplier;->asGroup(Landroidx/compose/ui/graphics/vector/VNode;)Landroidx/compose/ui/graphics/vector/GroupComponent; +HSPLandroidx/compose/ui/graphics/vector/VectorApplier;->insertBottomUp(ILandroidx/compose/ui/graphics/vector/VNode;)V +HSPLandroidx/compose/ui/graphics/vector/VectorApplier;->insertBottomUp(ILjava/lang/Object;)V +HSPLandroidx/compose/ui/graphics/vector/VectorApplier;->insertTopDown(ILandroidx/compose/ui/graphics/vector/VNode;)V +HSPLandroidx/compose/ui/graphics/vector/VectorApplier;->insertTopDown(ILjava/lang/Object;)V +HSPLandroidx/compose/ui/graphics/vector/VectorApplier;->onClear()V +Landroidx/compose/ui/graphics/vector/VectorComponent; +HSPLandroidx/compose/ui/graphics/vector/VectorComponent;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComponent;->access$doInvalidate(Landroidx/compose/ui/graphics/vector/VectorComponent;)V +HSPLandroidx/compose/ui/graphics/vector/VectorComponent;->doInvalidate()V +HSPLandroidx/compose/ui/graphics/vector/VectorComponent;->draw(Landroidx/compose/ui/graphics/drawscope/DrawScope;FLandroidx/compose/ui/graphics/ColorFilter;)V +HSPLandroidx/compose/ui/graphics/vector/VectorComponent;->getRoot()Landroidx/compose/ui/graphics/vector/GroupComponent; +HSPLandroidx/compose/ui/graphics/vector/VectorComponent;->getViewportHeight()F +HSPLandroidx/compose/ui/graphics/vector/VectorComponent;->getViewportWidth()F +HSPLandroidx/compose/ui/graphics/vector/VectorComponent;->setIntrinsicColorFilter$ui_release(Landroidx/compose/ui/graphics/ColorFilter;)V +HSPLandroidx/compose/ui/graphics/vector/VectorComponent;->setInvalidateCallback$ui_release(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/graphics/vector/VectorComponent;->setName(Ljava/lang/String;)V +HSPLandroidx/compose/ui/graphics/vector/VectorComponent;->setViewportHeight(F)V +HSPLandroidx/compose/ui/graphics/vector/VectorComponent;->setViewportWidth(F)V +Landroidx/compose/ui/graphics/vector/VectorComponent$drawVectorBlock$1; +HSPLandroidx/compose/ui/graphics/vector/VectorComponent$drawVectorBlock$1;->(Landroidx/compose/ui/graphics/vector/VectorComponent;)V +HSPLandroidx/compose/ui/graphics/vector/VectorComponent$drawVectorBlock$1;->invoke(Landroidx/compose/ui/graphics/drawscope/DrawScope;)V +HSPLandroidx/compose/ui/graphics/vector/VectorComponent$drawVectorBlock$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorComponent$invalidateCallback$1; +HSPLandroidx/compose/ui/graphics/vector/VectorComponent$invalidateCallback$1;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComponent$invalidateCallback$1;->()V +Landroidx/compose/ui/graphics/vector/VectorComponent$root$1$1; +HSPLandroidx/compose/ui/graphics/vector/VectorComponent$root$1$1;->(Landroidx/compose/ui/graphics/vector/VectorComponent;)V +HSPLandroidx/compose/ui/graphics/vector/VectorComponent$root$1$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/graphics/vector/VectorComponent$root$1$1;->invoke()V +Landroidx/compose/ui/graphics/vector/VectorComposeKt; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt;->Path-9cdaXJ4(Ljava/util/List;ILjava/lang/String;Landroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/Brush;FFIIFFFFLandroidx/compose/runtime/Composer;III)V +Landroidx/compose/ui/graphics/vector/VectorComposeKt$Path$1; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$1;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$1;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$1;->invoke()Landroidx/compose/ui/graphics/vector/PathComponent; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$1;->invoke()Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$1; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$1;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$1;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$1;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;Ljava/lang/String;)V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$10; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$10;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$10;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$10;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$10;->invoke-CSYIeUk(Landroidx/compose/ui/graphics/vector/PathComponent;I)V +Landroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$11; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$11;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$11;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$11;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;F)V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$11;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$12; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$12;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$12;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$12;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;F)V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$12;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$13; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$13;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$13;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$13;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;F)V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$13;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$14; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$14;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$14;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$14;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;F)V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$14;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$2; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$2;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$2;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$2;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;Ljava/util/List;)V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$3; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$3;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$3;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$3;->invoke-pweu1eQ(Landroidx/compose/ui/graphics/vector/PathComponent;I)V +Landroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$4; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$4;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$4;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$4;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;Landroidx/compose/ui/graphics/Brush;)V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$4;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$5; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$5;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$5;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$5;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;F)V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$5;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$6; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$6;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$6;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$6;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;Landroidx/compose/ui/graphics/Brush;)V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$6;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$7; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$7;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$7;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$7;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;F)V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$7;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$8; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$8;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$8;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$8;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;F)V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$8;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$9; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$9;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$9;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$9;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$9;->invoke-kLtJ_vA(Landroidx/compose/ui/graphics/vector/PathComponent;I)V +Landroidx/compose/ui/graphics/vector/VectorComposeKt$Path-9cdaXJ4$$inlined$ComposeNode$1; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path-9cdaXJ4$$inlined$ComposeNode$1;->(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path-9cdaXJ4$$inlined$ComposeNode$1;->invoke()Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorConfig; +HSPLandroidx/compose/ui/graphics/vector/VectorConfig;->getOrDefault(Landroidx/compose/ui/graphics/vector/VectorProperty;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorGroup; +HSPLandroidx/compose/ui/graphics/vector/VectorGroup;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorGroup;->(Ljava/lang/String;FFFFFFFLjava/util/List;Ljava/util/List;)V +HSPLandroidx/compose/ui/graphics/vector/VectorGroup;->access$getChildren$p(Landroidx/compose/ui/graphics/vector/VectorGroup;)Ljava/util/List; +HSPLandroidx/compose/ui/graphics/vector/VectorGroup;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/graphics/vector/VectorGroup;->hashCode()I +HSPLandroidx/compose/ui/graphics/vector/VectorGroup;->iterator()Ljava/util/Iterator; +Landroidx/compose/ui/graphics/vector/VectorGroup$iterator$1; +HSPLandroidx/compose/ui/graphics/vector/VectorGroup$iterator$1;->(Landroidx/compose/ui/graphics/vector/VectorGroup;)V +HSPLandroidx/compose/ui/graphics/vector/VectorGroup$iterator$1;->hasNext()Z +HSPLandroidx/compose/ui/graphics/vector/VectorGroup$iterator$1;->next()Landroidx/compose/ui/graphics/vector/VectorNode; +HSPLandroidx/compose/ui/graphics/vector/VectorGroup$iterator$1;->next()Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorKt; +HSPLandroidx/compose/ui/graphics/vector/VectorKt;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorKt;->getDefaultFillType()I +HSPLandroidx/compose/ui/graphics/vector/VectorKt;->getDefaultStrokeLineCap()I +HSPLandroidx/compose/ui/graphics/vector/VectorKt;->getDefaultStrokeLineJoin()I +HSPLandroidx/compose/ui/graphics/vector/VectorKt;->getEmptyPath()Ljava/util/List; +Landroidx/compose/ui/graphics/vector/VectorNode; +HSPLandroidx/compose/ui/graphics/vector/VectorNode;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorNode;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorNode;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/graphics/vector/VectorPainter; +HSPLandroidx/compose/ui/graphics/vector/VectorPainter;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorPainter;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorPainter;->RenderVector$ui_release(Ljava/lang/String;FFLkotlin/jvm/functions/Function4;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/ui/graphics/vector/VectorPainter;->access$getVector$p(Landroidx/compose/ui/graphics/vector/VectorPainter;)Landroidx/compose/ui/graphics/vector/VectorComponent; +HSPLandroidx/compose/ui/graphics/vector/VectorPainter;->access$setDirty(Landroidx/compose/ui/graphics/vector/VectorPainter;Z)V +HSPLandroidx/compose/ui/graphics/vector/VectorPainter;->applyColorFilter(Landroidx/compose/ui/graphics/ColorFilter;)Z +HSPLandroidx/compose/ui/graphics/vector/VectorPainter;->composeVector(Landroidx/compose/runtime/CompositionContext;Lkotlin/jvm/functions/Function4;)Landroidx/compose/runtime/Composition; +HSPLandroidx/compose/ui/graphics/vector/VectorPainter;->getAutoMirror$ui_release()Z +HSPLandroidx/compose/ui/graphics/vector/VectorPainter;->getIntrinsicSize-NH-jbRc()J +HSPLandroidx/compose/ui/graphics/vector/VectorPainter;->getSize-NH-jbRc$ui_release()J +HSPLandroidx/compose/ui/graphics/vector/VectorPainter;->isDirty()Z +HSPLandroidx/compose/ui/graphics/vector/VectorPainter;->onDraw(Landroidx/compose/ui/graphics/drawscope/DrawScope;)V +HSPLandroidx/compose/ui/graphics/vector/VectorPainter;->setAutoMirror$ui_release(Z)V +HSPLandroidx/compose/ui/graphics/vector/VectorPainter;->setDirty(Z)V +HSPLandroidx/compose/ui/graphics/vector/VectorPainter;->setIntrinsicColorFilter$ui_release(Landroidx/compose/ui/graphics/ColorFilter;)V +HSPLandroidx/compose/ui/graphics/vector/VectorPainter;->setSize-uvyYCjk$ui_release(J)V +Landroidx/compose/ui/graphics/vector/VectorPainter$RenderVector$2; +HSPLandroidx/compose/ui/graphics/vector/VectorPainter$RenderVector$2;->(Landroidx/compose/runtime/Composition;)V +HSPLandroidx/compose/ui/graphics/vector/VectorPainter$RenderVector$2;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/ui/graphics/vector/VectorPainter$RenderVector$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorPainter$RenderVector$2$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/ui/graphics/vector/VectorPainter$RenderVector$2$invoke$$inlined$onDispose$1;->(Landroidx/compose/runtime/Composition;)V +HSPLandroidx/compose/ui/graphics/vector/VectorPainter$RenderVector$2$invoke$$inlined$onDispose$1;->dispose()V +Landroidx/compose/ui/graphics/vector/VectorPainter$composeVector$1; +HSPLandroidx/compose/ui/graphics/vector/VectorPainter$composeVector$1;->(Lkotlin/jvm/functions/Function4;Landroidx/compose/ui/graphics/vector/VectorPainter;)V +HSPLandroidx/compose/ui/graphics/vector/VectorPainter$composeVector$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/ui/graphics/vector/VectorPainter$composeVector$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorPainter$vector$1$1; +HSPLandroidx/compose/ui/graphics/vector/VectorPainter$vector$1$1;->(Landroidx/compose/ui/graphics/vector/VectorPainter;)V +HSPLandroidx/compose/ui/graphics/vector/VectorPainter$vector$1$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/graphics/vector/VectorPainter$vector$1$1;->invoke()V +Landroidx/compose/ui/graphics/vector/VectorPainterKt; +HSPLandroidx/compose/ui/graphics/vector/VectorPainterKt;->RenderVectorGroup(Landroidx/compose/ui/graphics/vector/VectorGroup;Ljava/util/Map;Landroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/ui/graphics/vector/VectorPainterKt;->rememberVectorPainter(Landroidx/compose/ui/graphics/vector/ImageVector;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/graphics/vector/VectorPainter; +HSPLandroidx/compose/ui/graphics/vector/VectorPainterKt;->rememberVectorPainter-vIP8VLU(FFFFLjava/lang/String;JIZLkotlin/jvm/functions/Function4;Landroidx/compose/runtime/Composer;II)Landroidx/compose/ui/graphics/vector/VectorPainter; +Landroidx/compose/ui/graphics/vector/VectorPainterKt$RenderVectorGroup$config$1; +HSPLandroidx/compose/ui/graphics/vector/VectorPainterKt$RenderVectorGroup$config$1;->()V +Landroidx/compose/ui/graphics/vector/VectorPainterKt$rememberVectorPainter$3; +HSPLandroidx/compose/ui/graphics/vector/VectorPainterKt$rememberVectorPainter$3;->(Landroidx/compose/ui/graphics/vector/ImageVector;)V +HSPLandroidx/compose/ui/graphics/vector/VectorPainterKt$rememberVectorPainter$3;->invoke(FFLandroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/ui/graphics/vector/VectorPainterKt$rememberVectorPainter$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorPath; +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->(Ljava/lang/String;Ljava/util/List;ILandroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/Brush;FFIIFFFF)V +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->(Ljava/lang/String;Ljava/util/List;ILandroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/Brush;FFIIFFFFLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->getFill()Landroidx/compose/ui/graphics/Brush; +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->getFillAlpha()F +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->getName()Ljava/lang/String; +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->getPathData()Ljava/util/List; +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->getPathFillType-Rg-k1Os()I +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->getStroke()Landroidx/compose/ui/graphics/Brush; +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->getStrokeAlpha()F +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->getStrokeLineCap-KaPHkGw()I +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->getStrokeLineJoin-LxFBmk8()I +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->getStrokeLineMiter()F +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->getStrokeLineWidth()F +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->getTrimPathEnd()F +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->getTrimPathOffset()F +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->getTrimPathStart()F +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->hashCode()I +Landroidx/compose/ui/graphics/vector/VectorProperty; +HSPLandroidx/compose/ui/graphics/vector/VectorProperty;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorProperty;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorProperty;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/graphics/vector/VectorProperty$Fill; +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$Fill;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$Fill;->()V +Landroidx/compose/ui/graphics/vector/VectorProperty$FillAlpha; +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$FillAlpha;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$FillAlpha;->()V +Landroidx/compose/ui/graphics/vector/VectorProperty$PathData; +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$PathData;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$PathData;->()V +Landroidx/compose/ui/graphics/vector/VectorProperty$Stroke; +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$Stroke;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$Stroke;->()V +Landroidx/compose/ui/graphics/vector/VectorProperty$StrokeAlpha; +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$StrokeAlpha;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$StrokeAlpha;->()V +Landroidx/compose/ui/graphics/vector/VectorProperty$StrokeLineWidth; +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$StrokeLineWidth;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$StrokeLineWidth;->()V +Landroidx/compose/ui/graphics/vector/VectorProperty$TrimPathEnd; +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$TrimPathEnd;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$TrimPathEnd;->()V +Landroidx/compose/ui/graphics/vector/VectorProperty$TrimPathOffset; +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$TrimPathOffset;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$TrimPathOffset;->()V +Landroidx/compose/ui/graphics/vector/VectorProperty$TrimPathStart; +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$TrimPathStart;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$TrimPathStart;->()V +Landroidx/compose/ui/hapticfeedback/HapticFeedback; +Landroidx/compose/ui/hapticfeedback/PlatformHapticFeedback; +HSPLandroidx/compose/ui/hapticfeedback/PlatformHapticFeedback;->(Landroid/view/View;)V +Landroidx/compose/ui/input/InputMode; +HSPLandroidx/compose/ui/input/InputMode;->()V +HSPLandroidx/compose/ui/input/InputMode;->(I)V +HSPLandroidx/compose/ui/input/InputMode;->access$getKeyboard$cp()I +HSPLandroidx/compose/ui/input/InputMode;->access$getTouch$cp()I +HSPLandroidx/compose/ui/input/InputMode;->box-impl(I)Landroidx/compose/ui/input/InputMode; +HSPLandroidx/compose/ui/input/InputMode;->constructor-impl(I)I +HSPLandroidx/compose/ui/input/InputMode;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/input/InputMode;->equals-impl(ILjava/lang/Object;)Z +HSPLandroidx/compose/ui/input/InputMode;->equals-impl0(II)Z +HSPLandroidx/compose/ui/input/InputMode;->unbox-impl()I +Landroidx/compose/ui/input/InputMode$Companion; +HSPLandroidx/compose/ui/input/InputMode$Companion;->()V +HSPLandroidx/compose/ui/input/InputMode$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/input/InputMode$Companion;->getKeyboard-aOaMEAU()I +HSPLandroidx/compose/ui/input/InputMode$Companion;->getTouch-aOaMEAU()I +Landroidx/compose/ui/input/InputModeManager; +Landroidx/compose/ui/input/InputModeManagerImpl; +HSPLandroidx/compose/ui/input/InputModeManagerImpl;->(ILkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/input/InputModeManagerImpl;->(ILkotlin/jvm/functions/Function1;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/input/InputModeManagerImpl;->getInputMode-aOaMEAU()I +HSPLandroidx/compose/ui/input/InputModeManagerImpl;->setInputMode-iuPiT84(I)V +Landroidx/compose/ui/input/key/KeyInputElement; +HSPLandroidx/compose/ui/input/key/KeyInputElement;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/input/key/KeyInputElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/input/key/KeyInputElement;->create()Landroidx/compose/ui/input/key/KeyInputNode; +HSPLandroidx/compose/ui/input/key/KeyInputElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/input/key/KeyInputElement;->update(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/input/key/KeyInputElement;->update(Landroidx/compose/ui/input/key/KeyInputNode;)V +Landroidx/compose/ui/input/key/KeyInputModifierKt; +HSPLandroidx/compose/ui/input/key/KeyInputModifierKt;->onKeyEvent(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/input/key/KeyInputModifierKt;->onPreviewKeyEvent(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/input/key/KeyInputModifierNode; +Landroidx/compose/ui/input/key/KeyInputNode; +HSPLandroidx/compose/ui/input/key/KeyInputNode;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/input/key/KeyInputNode;->setOnEvent(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/input/key/KeyInputNode;->setOnPreEvent(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/ui/input/key/SoftKeyboardInterceptionModifierNode; +Landroidx/compose/ui/input/nestedscroll/NestedScrollConnection; +Landroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher; +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;->()V +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;->()V +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;->getModifierLocalNode$ui_release()Landroidx/compose/ui/modifier/ModifierLocalModifierNode; +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;->setCalculateNestedScrollScope$ui_release(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;->setModifierLocalNode$ui_release(Landroidx/compose/ui/modifier/ModifierLocalModifierNode;)V +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;->setScope$ui_release(Lkotlinx/coroutines/CoroutineScope;)V +Landroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher$calculateNestedScrollScope$1; +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher$calculateNestedScrollScope$1;->(Landroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;)V +Landroidx/compose/ui/input/nestedscroll/NestedScrollElement; +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollElement;->(Landroidx/compose/ui/input/nestedscroll/NestedScrollConnection;Landroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;)V +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollElement;->create()Landroidx/compose/ui/input/nestedscroll/NestedScrollNode; +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollElement;->update(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollElement;->update(Landroidx/compose/ui/input/nestedscroll/NestedScrollNode;)V +Landroidx/compose/ui/input/nestedscroll/NestedScrollModifierKt; +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierKt;->nestedScroll$default(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/input/nestedscroll/NestedScrollConnection;Landroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;ILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierKt;->nestedScroll(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/input/nestedscroll/NestedScrollConnection;Landroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/input/nestedscroll/NestedScrollNode; +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollNode;->(Landroidx/compose/ui/input/nestedscroll/NestedScrollConnection;Landroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;)V +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollNode;->getProvidedValues()Landroidx/compose/ui/modifier/ModifierLocalMap; +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollNode;->onAttach()V +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollNode;->onDetach()V +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollNode;->resetDispatcherFields()V +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollNode;->updateDispatcher(Landroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;)V +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollNode;->updateDispatcherFields()V +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollNode;->updateNode$ui_release(Landroidx/compose/ui/input/nestedscroll/NestedScrollConnection;Landroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;)V +Landroidx/compose/ui/input/nestedscroll/NestedScrollNode$updateDispatcherFields$1; +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollNode$updateDispatcherFields$1;->(Landroidx/compose/ui/input/nestedscroll/NestedScrollNode;)V +Landroidx/compose/ui/input/nestedscroll/NestedScrollNodeKt; +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollNodeKt;->()V +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollNodeKt;->getModifierLocalNestedScroll()Landroidx/compose/ui/modifier/ProvidableModifierLocal; +Landroidx/compose/ui/input/nestedscroll/NestedScrollNodeKt$ModifierLocalNestedScroll$1; +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollNodeKt$ModifierLocalNestedScroll$1;->()V +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollNodeKt$ModifierLocalNestedScroll$1;->()V +Landroidx/compose/ui/input/pointer/AndroidPointerIconType; +HSPLandroidx/compose/ui/input/pointer/AndroidPointerIconType;->(I)V +HSPLandroidx/compose/ui/input/pointer/AndroidPointerIconType;->equals(Ljava/lang/Object;)Z +Landroidx/compose/ui/input/pointer/AwaitPointerEventScope; +HSPLandroidx/compose/ui/input/pointer/AwaitPointerEventScope;->awaitPointerEvent$default(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Landroidx/compose/ui/input/pointer/PointerEventPass;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/input/pointer/ConsumedData; +HSPLandroidx/compose/ui/input/pointer/ConsumedData;->()V +HSPLandroidx/compose/ui/input/pointer/ConsumedData;->(ZZ)V +HSPLandroidx/compose/ui/input/pointer/ConsumedData;->getDownChange()Z +HSPLandroidx/compose/ui/input/pointer/ConsumedData;->getPositionChange()Z +HSPLandroidx/compose/ui/input/pointer/ConsumedData;->setDownChange(Z)V +HSPLandroidx/compose/ui/input/pointer/ConsumedData;->setPositionChange(Z)V +Landroidx/compose/ui/input/pointer/HitPathTracker; +HSPLandroidx/compose/ui/input/pointer/HitPathTracker;->(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/ui/input/pointer/HitPathTracker;->addHitPath-KNwqfcY(JLjava/util/List;)V +HSPLandroidx/compose/ui/input/pointer/HitPathTracker;->dispatchChanges(Landroidx/compose/ui/input/pointer/InternalPointerEvent;Z)Z +HSPLandroidx/compose/ui/input/pointer/HitPathTracker;->removeDetachedPointerInputFilters()V +Landroidx/compose/ui/input/pointer/InternalPointerEvent; +HSPLandroidx/compose/ui/input/pointer/InternalPointerEvent;->(Ljava/util/Map;Landroidx/compose/ui/input/pointer/PointerInputEvent;)V +HSPLandroidx/compose/ui/input/pointer/InternalPointerEvent;->getChanges()Ljava/util/Map; +HSPLandroidx/compose/ui/input/pointer/InternalPointerEvent;->getMotionEvent()Landroid/view/MotionEvent; +HSPLandroidx/compose/ui/input/pointer/InternalPointerEvent;->getSuppressMovementConsumption()Z +HSPLandroidx/compose/ui/input/pointer/InternalPointerEvent;->issuesEnterExitEvent-0FcD4WY(J)Z +Landroidx/compose/ui/input/pointer/MotionEventAdapter; +HSPLandroidx/compose/ui/input/pointer/MotionEventAdapter;->()V +HSPLandroidx/compose/ui/input/pointer/MotionEventAdapter;->addFreshIds(Landroid/view/MotionEvent;)V +HSPLandroidx/compose/ui/input/pointer/MotionEventAdapter;->clearOnDeviceChange(Landroid/view/MotionEvent;)V +HSPLandroidx/compose/ui/input/pointer/MotionEventAdapter;->convertToPointerInputEvent$ui_release(Landroid/view/MotionEvent;Landroidx/compose/ui/input/pointer/PositionCalculator;)Landroidx/compose/ui/input/pointer/PointerInputEvent; +HSPLandroidx/compose/ui/input/pointer/MotionEventAdapter;->createPointerInputEventData(Landroidx/compose/ui/input/pointer/PositionCalculator;Landroid/view/MotionEvent;IZ)Landroidx/compose/ui/input/pointer/PointerInputEventData; +HSPLandroidx/compose/ui/input/pointer/MotionEventAdapter;->getComposePointerId-_I2yYro(I)J +HSPLandroidx/compose/ui/input/pointer/MotionEventAdapter;->removeStaleIds(Landroid/view/MotionEvent;)V +Landroidx/compose/ui/input/pointer/Node; +HSPLandroidx/compose/ui/input/pointer/Node;->(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/input/pointer/Node;->buildCache(Ljava/util/Map;Landroidx/compose/ui/layout/LayoutCoordinates;Landroidx/compose/ui/input/pointer/InternalPointerEvent;Z)Z +HSPLandroidx/compose/ui/input/pointer/Node;->cleanUpHits(Landroidx/compose/ui/input/pointer/InternalPointerEvent;)V +HSPLandroidx/compose/ui/input/pointer/Node;->clearCache()V +HSPLandroidx/compose/ui/input/pointer/Node;->dispatchFinalEventPass(Landroidx/compose/ui/input/pointer/InternalPointerEvent;)Z +HSPLandroidx/compose/ui/input/pointer/Node;->dispatchMainEventPass(Ljava/util/Map;Landroidx/compose/ui/layout/LayoutCoordinates;Landroidx/compose/ui/input/pointer/InternalPointerEvent;Z)Z +HSPLandroidx/compose/ui/input/pointer/Node;->getModifierNode()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/input/pointer/Node;->getPointerIds()Landroidx/compose/runtime/collection/MutableVector; +Landroidx/compose/ui/input/pointer/NodeParent; +HSPLandroidx/compose/ui/input/pointer/NodeParent;->()V +HSPLandroidx/compose/ui/input/pointer/NodeParent;->buildCache(Ljava/util/Map;Landroidx/compose/ui/layout/LayoutCoordinates;Landroidx/compose/ui/input/pointer/InternalPointerEvent;Z)Z +HSPLandroidx/compose/ui/input/pointer/NodeParent;->cleanUpHits(Landroidx/compose/ui/input/pointer/InternalPointerEvent;)V +HSPLandroidx/compose/ui/input/pointer/NodeParent;->dispatchFinalEventPass(Landroidx/compose/ui/input/pointer/InternalPointerEvent;)Z +HSPLandroidx/compose/ui/input/pointer/NodeParent;->dispatchMainEventPass(Ljava/util/Map;Landroidx/compose/ui/layout/LayoutCoordinates;Landroidx/compose/ui/input/pointer/InternalPointerEvent;Z)Z +HSPLandroidx/compose/ui/input/pointer/NodeParent;->getChildren()Landroidx/compose/runtime/collection/MutableVector; +HSPLandroidx/compose/ui/input/pointer/NodeParent;->removeDetachedPointerInputFilters()V +Landroidx/compose/ui/input/pointer/PointerButtons; +HSPLandroidx/compose/ui/input/pointer/PointerButtons;->constructor-impl(I)I +Landroidx/compose/ui/input/pointer/PointerEvent; +HSPLandroidx/compose/ui/input/pointer/PointerEvent;->()V +HSPLandroidx/compose/ui/input/pointer/PointerEvent;->(Ljava/util/List;)V +HSPLandroidx/compose/ui/input/pointer/PointerEvent;->(Ljava/util/List;Landroidx/compose/ui/input/pointer/InternalPointerEvent;)V +HSPLandroidx/compose/ui/input/pointer/PointerEvent;->calculatePointerEventType-7fucELk()I +HSPLandroidx/compose/ui/input/pointer/PointerEvent;->getChanges()Ljava/util/List; +HSPLandroidx/compose/ui/input/pointer/PointerEvent;->getMotionEvent$ui_release()Landroid/view/MotionEvent; +HSPLandroidx/compose/ui/input/pointer/PointerEvent;->getType-7fucELk()I +Landroidx/compose/ui/input/pointer/PointerEventKt; +HSPLandroidx/compose/ui/input/pointer/PointerEventKt;->changedToDown(Landroidx/compose/ui/input/pointer/PointerInputChange;)Z +HSPLandroidx/compose/ui/input/pointer/PointerEventKt;->changedToDownIgnoreConsumed(Landroidx/compose/ui/input/pointer/PointerInputChange;)Z +HSPLandroidx/compose/ui/input/pointer/PointerEventKt;->changedToUp(Landroidx/compose/ui/input/pointer/PointerInputChange;)Z +HSPLandroidx/compose/ui/input/pointer/PointerEventKt;->changedToUpIgnoreConsumed(Landroidx/compose/ui/input/pointer/PointerInputChange;)Z +HSPLandroidx/compose/ui/input/pointer/PointerEventKt;->positionChangeInternal(Landroidx/compose/ui/input/pointer/PointerInputChange;Z)J +HSPLandroidx/compose/ui/input/pointer/PointerEventKt;->positionChangedIgnoreConsumed(Landroidx/compose/ui/input/pointer/PointerInputChange;)Z +Landroidx/compose/ui/input/pointer/PointerEventPass; +HSPLandroidx/compose/ui/input/pointer/PointerEventPass;->$values()[Landroidx/compose/ui/input/pointer/PointerEventPass; +HSPLandroidx/compose/ui/input/pointer/PointerEventPass;->()V +HSPLandroidx/compose/ui/input/pointer/PointerEventPass;->(Ljava/lang/String;I)V +HSPLandroidx/compose/ui/input/pointer/PointerEventPass;->values()[Landroidx/compose/ui/input/pointer/PointerEventPass; +Landroidx/compose/ui/input/pointer/PointerEventTimeoutCancellationException; +Landroidx/compose/ui/input/pointer/PointerEventType; +HSPLandroidx/compose/ui/input/pointer/PointerEventType;->()V +HSPLandroidx/compose/ui/input/pointer/PointerEventType;->access$getEnter$cp()I +HSPLandroidx/compose/ui/input/pointer/PointerEventType;->access$getExit$cp()I +HSPLandroidx/compose/ui/input/pointer/PointerEventType;->access$getMove$cp()I +HSPLandroidx/compose/ui/input/pointer/PointerEventType;->access$getPress$cp()I +HSPLandroidx/compose/ui/input/pointer/PointerEventType;->access$getRelease$cp()I +HSPLandroidx/compose/ui/input/pointer/PointerEventType;->access$getScroll$cp()I +HSPLandroidx/compose/ui/input/pointer/PointerEventType;->constructor-impl(I)I +HSPLandroidx/compose/ui/input/pointer/PointerEventType;->equals-impl0(II)Z +Landroidx/compose/ui/input/pointer/PointerEventType$Companion; +HSPLandroidx/compose/ui/input/pointer/PointerEventType$Companion;->()V +HSPLandroidx/compose/ui/input/pointer/PointerEventType$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/input/pointer/PointerEventType$Companion;->getEnter-7fucELk()I +HSPLandroidx/compose/ui/input/pointer/PointerEventType$Companion;->getExit-7fucELk()I +HSPLandroidx/compose/ui/input/pointer/PointerEventType$Companion;->getMove-7fucELk()I +HSPLandroidx/compose/ui/input/pointer/PointerEventType$Companion;->getPress-7fucELk()I +HSPLandroidx/compose/ui/input/pointer/PointerEventType$Companion;->getRelease-7fucELk()I +HSPLandroidx/compose/ui/input/pointer/PointerEventType$Companion;->getScroll-7fucELk()I +Landroidx/compose/ui/input/pointer/PointerEvent_androidKt; +HSPLandroidx/compose/ui/input/pointer/PointerEvent_androidKt;->EmptyPointerKeyboardModifiers()I +Landroidx/compose/ui/input/pointer/PointerIcon; +HSPLandroidx/compose/ui/input/pointer/PointerIcon;->()V +Landroidx/compose/ui/input/pointer/PointerIcon$Companion; +HSPLandroidx/compose/ui/input/pointer/PointerIcon$Companion;->()V +HSPLandroidx/compose/ui/input/pointer/PointerIcon$Companion;->()V +HSPLandroidx/compose/ui/input/pointer/PointerIcon$Companion;->getDefault()Landroidx/compose/ui/input/pointer/PointerIcon; +Landroidx/compose/ui/input/pointer/PointerIconKt; +HSPLandroidx/compose/ui/input/pointer/PointerIconKt;->()V +HSPLandroidx/compose/ui/input/pointer/PointerIconKt;->access$getModifierLocalPointerIcon$p()Landroidx/compose/ui/modifier/ProvidableModifierLocal; +HSPLandroidx/compose/ui/input/pointer/PointerIconKt;->pointerHoverIcon$default(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/input/pointer/PointerIcon;ZILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/input/pointer/PointerIconKt;->pointerHoverIcon(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/input/pointer/PointerIcon;Z)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/input/pointer/PointerIconKt$ModifierLocalPointerIcon$1; +HSPLandroidx/compose/ui/input/pointer/PointerIconKt$ModifierLocalPointerIcon$1;->()V +HSPLandroidx/compose/ui/input/pointer/PointerIconKt$ModifierLocalPointerIcon$1;->()V +HSPLandroidx/compose/ui/input/pointer/PointerIconKt$ModifierLocalPointerIcon$1;->invoke()Landroidx/compose/ui/input/pointer/PointerIconModifierLocal; +HSPLandroidx/compose/ui/input/pointer/PointerIconKt$ModifierLocalPointerIcon$1;->invoke()Ljava/lang/Object; +Landroidx/compose/ui/input/pointer/PointerIconKt$pointerHoverIcon$2; +HSPLandroidx/compose/ui/input/pointer/PointerIconKt$pointerHoverIcon$2;->(Landroidx/compose/ui/input/pointer/PointerIcon;Z)V +HSPLandroidx/compose/ui/input/pointer/PointerIconKt$pointerHoverIcon$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/input/pointer/PointerIconKt$pointerHoverIcon$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/input/pointer/PointerIconKt$pointerHoverIcon$2$1$1; +HSPLandroidx/compose/ui/input/pointer/PointerIconKt$pointerHoverIcon$2$1$1;->(Landroidx/compose/ui/input/pointer/PointerIconModifierLocal;Landroidx/compose/ui/input/pointer/PointerIcon;ZLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/input/pointer/PointerIconKt$pointerHoverIcon$2$1$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/input/pointer/PointerIconKt$pointerHoverIcon$2$1$1;->invoke()V +Landroidx/compose/ui/input/pointer/PointerIconKt$pointerHoverIcon$2$onSetIcon$1; +HSPLandroidx/compose/ui/input/pointer/PointerIconKt$pointerHoverIcon$2$onSetIcon$1;->(Landroidx/compose/ui/input/pointer/PointerIconService;)V +Landroidx/compose/ui/input/pointer/PointerIconKt$pointerHoverIcon$2$pointerInputModifier$1$1; +HSPLandroidx/compose/ui/input/pointer/PointerIconKt$pointerHoverIcon$2$pointerInputModifier$1$1;->(Landroidx/compose/ui/input/pointer/PointerIconModifierLocal;Lkotlin/coroutines/Continuation;)V +Landroidx/compose/ui/input/pointer/PointerIconModifierLocal; +HSPLandroidx/compose/ui/input/pointer/PointerIconModifierLocal;->(Landroidx/compose/ui/input/pointer/PointerIcon;ZLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/input/pointer/PointerIconModifierLocal;->getKey()Landroidx/compose/ui/modifier/ProvidableModifierLocal; +HSPLandroidx/compose/ui/input/pointer/PointerIconModifierLocal;->getParentInfo()Landroidx/compose/ui/input/pointer/PointerIconModifierLocal; +HSPLandroidx/compose/ui/input/pointer/PointerIconModifierLocal;->onModifierLocalsUpdated(Landroidx/compose/ui/modifier/ModifierLocalReadScope;)V +HSPLandroidx/compose/ui/input/pointer/PointerIconModifierLocal;->setParentInfo(Landroidx/compose/ui/input/pointer/PointerIconModifierLocal;)V +HSPLandroidx/compose/ui/input/pointer/PointerIconModifierLocal;->shouldUpdatePointerIcon()Z +HSPLandroidx/compose/ui/input/pointer/PointerIconModifierLocal;->updateValues(Landroidx/compose/ui/input/pointer/PointerIcon;ZLkotlin/jvm/functions/Function1;)V +Landroidx/compose/ui/input/pointer/PointerIconService; +Landroidx/compose/ui/input/pointer/PointerIcon_androidKt; +HSPLandroidx/compose/ui/input/pointer/PointerIcon_androidKt;->()V +HSPLandroidx/compose/ui/input/pointer/PointerIcon_androidKt;->PointerIcon(I)Landroidx/compose/ui/input/pointer/PointerIcon; +HSPLandroidx/compose/ui/input/pointer/PointerIcon_androidKt;->getPointerIconCrosshair()Landroidx/compose/ui/input/pointer/PointerIcon; +HSPLandroidx/compose/ui/input/pointer/PointerIcon_androidKt;->getPointerIconDefault()Landroidx/compose/ui/input/pointer/PointerIcon; +HSPLandroidx/compose/ui/input/pointer/PointerIcon_androidKt;->getPointerIconHand()Landroidx/compose/ui/input/pointer/PointerIcon; +HSPLandroidx/compose/ui/input/pointer/PointerIcon_androidKt;->getPointerIconText()Landroidx/compose/ui/input/pointer/PointerIcon; +Landroidx/compose/ui/input/pointer/PointerId; +HSPLandroidx/compose/ui/input/pointer/PointerId;->(J)V +HSPLandroidx/compose/ui/input/pointer/PointerId;->box-impl(J)Landroidx/compose/ui/input/pointer/PointerId; +HSPLandroidx/compose/ui/input/pointer/PointerId;->constructor-impl(J)J +HSPLandroidx/compose/ui/input/pointer/PointerId;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/input/pointer/PointerId;->equals-impl(JLjava/lang/Object;)Z +HSPLandroidx/compose/ui/input/pointer/PointerId;->equals-impl0(JJ)Z +HSPLandroidx/compose/ui/input/pointer/PointerId;->hashCode()I +HSPLandroidx/compose/ui/input/pointer/PointerId;->hashCode-impl(J)I +HSPLandroidx/compose/ui/input/pointer/PointerId;->unbox-impl()J +Landroidx/compose/ui/input/pointer/PointerInputChange; +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->()V +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->(JJJZFJJZZIJ)V +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->(JJJZFJJZZIJLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->(JJJZFJJZZILjava/util/List;J)V +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->(JJJZFJJZZILjava/util/List;JLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->consume()V +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->copy-OHpmEuE$default(Landroidx/compose/ui/input/pointer/PointerInputChange;JJJZJJZILjava/util/List;JILjava/lang/Object;)Landroidx/compose/ui/input/pointer/PointerInputChange; +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->copy-OHpmEuE(JJJZJJZILjava/util/List;J)Landroidx/compose/ui/input/pointer/PointerInputChange; +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->copy-wbzehF4(JJJZFJJZILjava/util/List;J)Landroidx/compose/ui/input/pointer/PointerInputChange; +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->getHistorical()Ljava/util/List; +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->getId-J3iCeTQ()J +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->getPosition-F1C5BW0()J +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->getPressed()Z +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->getPreviousPosition-F1C5BW0()J +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->getPreviousPressed()Z +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->getType-T8wyACA()I +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->getUptimeMillis()J +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->isConsumed()Z +Landroidx/compose/ui/input/pointer/PointerInputChangeEventProducer; +HSPLandroidx/compose/ui/input/pointer/PointerInputChangeEventProducer;->()V +HSPLandroidx/compose/ui/input/pointer/PointerInputChangeEventProducer;->produce(Landroidx/compose/ui/input/pointer/PointerInputEvent;Landroidx/compose/ui/input/pointer/PositionCalculator;)Landroidx/compose/ui/input/pointer/InternalPointerEvent; +Landroidx/compose/ui/input/pointer/PointerInputChangeEventProducer$PointerInputData; +HSPLandroidx/compose/ui/input/pointer/PointerInputChangeEventProducer$PointerInputData;->(JJZI)V +HSPLandroidx/compose/ui/input/pointer/PointerInputChangeEventProducer$PointerInputData;->(JJZILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/input/pointer/PointerInputChangeEventProducer$PointerInputData;->getDown()Z +HSPLandroidx/compose/ui/input/pointer/PointerInputChangeEventProducer$PointerInputData;->getPositionOnScreen-F1C5BW0()J +HSPLandroidx/compose/ui/input/pointer/PointerInputChangeEventProducer$PointerInputData;->getUptime()J +Landroidx/compose/ui/input/pointer/PointerInputEvent; +HSPLandroidx/compose/ui/input/pointer/PointerInputEvent;->(JLjava/util/List;Landroid/view/MotionEvent;)V +HSPLandroidx/compose/ui/input/pointer/PointerInputEvent;->getMotionEvent()Landroid/view/MotionEvent; +HSPLandroidx/compose/ui/input/pointer/PointerInputEvent;->getPointers()Ljava/util/List; +Landroidx/compose/ui/input/pointer/PointerInputEventData; +HSPLandroidx/compose/ui/input/pointer/PointerInputEventData;->(JJJJZFIZLjava/util/List;J)V +HSPLandroidx/compose/ui/input/pointer/PointerInputEventData;->(JJJJZFIZLjava/util/List;JLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/input/pointer/PointerInputEventData;->getDown()Z +HSPLandroidx/compose/ui/input/pointer/PointerInputEventData;->getHistorical()Ljava/util/List; +HSPLandroidx/compose/ui/input/pointer/PointerInputEventData;->getId-J3iCeTQ()J +HSPLandroidx/compose/ui/input/pointer/PointerInputEventData;->getIssuesEnterExit()Z +HSPLandroidx/compose/ui/input/pointer/PointerInputEventData;->getPosition-F1C5BW0()J +HSPLandroidx/compose/ui/input/pointer/PointerInputEventData;->getPositionOnScreen-F1C5BW0()J +HSPLandroidx/compose/ui/input/pointer/PointerInputEventData;->getPressure()F +HSPLandroidx/compose/ui/input/pointer/PointerInputEventData;->getScrollDelta-F1C5BW0()J +HSPLandroidx/compose/ui/input/pointer/PointerInputEventData;->getType-T8wyACA()I +HSPLandroidx/compose/ui/input/pointer/PointerInputEventData;->getUptime()J +Landroidx/compose/ui/input/pointer/PointerInputEventProcessor; +HSPLandroidx/compose/ui/input/pointer/PointerInputEventProcessor;->(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/input/pointer/PointerInputEventProcessor;->process-BIzXfog(Landroidx/compose/ui/input/pointer/PointerInputEvent;Landroidx/compose/ui/input/pointer/PositionCalculator;Z)I +Landroidx/compose/ui/input/pointer/PointerInputEventProcessorKt; +HSPLandroidx/compose/ui/input/pointer/PointerInputEventProcessorKt;->ProcessResult(ZZ)I +Landroidx/compose/ui/input/pointer/PointerInputModifier; +Landroidx/compose/ui/input/pointer/PointerInputResetException; +PLandroidx/compose/ui/input/pointer/PointerInputResetException;->()V +PLandroidx/compose/ui/input/pointer/PointerInputResetException;->fillInStackTrace()Ljava/lang/Throwable; +Landroidx/compose/ui/input/pointer/PointerInputScope; +Landroidx/compose/ui/input/pointer/PointerKeyboardModifiers; +HSPLandroidx/compose/ui/input/pointer/PointerKeyboardModifiers;->(I)V +HSPLandroidx/compose/ui/input/pointer/PointerKeyboardModifiers;->box-impl(I)Landroidx/compose/ui/input/pointer/PointerKeyboardModifiers; +HSPLandroidx/compose/ui/input/pointer/PointerKeyboardModifiers;->constructor-impl(I)I +HSPLandroidx/compose/ui/input/pointer/PointerKeyboardModifiers;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/input/pointer/PointerKeyboardModifiers;->equals-impl(ILjava/lang/Object;)Z +HSPLandroidx/compose/ui/input/pointer/PointerKeyboardModifiers;->unbox-impl()I +Landroidx/compose/ui/input/pointer/PointerType; +HSPLandroidx/compose/ui/input/pointer/PointerType;->()V +HSPLandroidx/compose/ui/input/pointer/PointerType;->access$getMouse$cp()I +HSPLandroidx/compose/ui/input/pointer/PointerType;->access$getTouch$cp()I +HSPLandroidx/compose/ui/input/pointer/PointerType;->constructor-impl(I)I +HSPLandroidx/compose/ui/input/pointer/PointerType;->equals-impl0(II)Z +Landroidx/compose/ui/input/pointer/PointerType$Companion; +HSPLandroidx/compose/ui/input/pointer/PointerType$Companion;->()V +HSPLandroidx/compose/ui/input/pointer/PointerType$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/input/pointer/PointerType$Companion;->getMouse-T8wyACA()I +HSPLandroidx/compose/ui/input/pointer/PointerType$Companion;->getTouch-T8wyACA()I +Landroidx/compose/ui/input/pointer/PositionCalculator; +Landroidx/compose/ui/input/pointer/ProcessResult; +HSPLandroidx/compose/ui/input/pointer/ProcessResult;->constructor-impl(I)I +HSPLandroidx/compose/ui/input/pointer/ProcessResult;->getAnyMovementConsumed-impl(I)Z +HSPLandroidx/compose/ui/input/pointer/ProcessResult;->getDispatchedToAPointerInputModifier-impl(I)Z +Landroidx/compose/ui/input/pointer/SuspendPointerInputElement; +HSPLandroidx/compose/ui/input/pointer/SuspendPointerInputElement;->(Ljava/lang/Object;Ljava/lang/Object;[Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/input/pointer/SuspendPointerInputElement;->(Ljava/lang/Object;Ljava/lang/Object;[Ljava/lang/Object;Lkotlin/jvm/functions/Function2;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/input/pointer/SuspendPointerInputElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/input/pointer/SuspendPointerInputElement;->create()Landroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl; +HSPLandroidx/compose/ui/input/pointer/SuspendPointerInputElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt;->()V +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt;->SuspendingPointerInputModifierNode(Lkotlin/jvm/functions/Function2;)Landroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNode; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt;->access$getEmptyPointerEvent$p()Landroidx/compose/ui/input/pointer/PointerEvent; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt;->pointerInput(Landroidx/compose/ui/Modifier;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNode; +Landroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl;->(Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl;->access$getCurrentEvent$p(Landroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl;)Landroidx/compose/ui/input/pointer/PointerEvent; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl;->access$getPointerHandlers$p(Landroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl;)Landroidx/compose/runtime/collection/MutableVector; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl;->awaitPointerEventScope(Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl;->dispatchPointerEvent(Landroidx/compose/ui/input/pointer/PointerEvent;Landroidx/compose/ui/input/pointer/PointerEventPass;)V +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl;->getPointerInputHandler()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl;->getSize-YbymL2g()J +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl;->getViewConfiguration()Landroidx/compose/ui/platform/ViewConfiguration; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl;->onDetach()V +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl;->onPointerEvent-H0pRuoY(Landroidx/compose/ui/input/pointer/PointerEvent;Landroidx/compose/ui/input/pointer/PointerEventPass;J)V +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl;->resetPointerInputHandler()V +Landroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine;->(Landroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine;->access$setAwaitPass$p(Landroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine;Landroidx/compose/ui/input/pointer/PointerEventPass;)V +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine;->access$setPointerAwaiter$p(Landroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine;Lkotlinx/coroutines/CancellableContinuation;)V +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine;->awaitPointerEvent(Landroidx/compose/ui/input/pointer/PointerEventPass;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine;->cancel(Ljava/lang/Throwable;)V +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine;->getContext()Lkotlin/coroutines/CoroutineContext; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine;->getCurrentEvent()Landroidx/compose/ui/input/pointer/PointerEvent; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine;->getViewConfiguration()Landroidx/compose/ui/platform/ViewConfiguration; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine;->offerPointerEvent(Landroidx/compose/ui/input/pointer/PointerEvent;Landroidx/compose/ui/input/pointer/PointerEventPass;)V +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine;->resumeWith(Ljava/lang/Object;)V +Landroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$WhenMappings; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$WhenMappings;->()V +Landroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$awaitPointerEventScope$2$2; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$awaitPointerEventScope$2$2;->(Landroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine;)V +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$awaitPointerEventScope$2$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$awaitPointerEventScope$2$2;->invoke(Ljava/lang/Throwable;)V +Landroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$onPointerEvent$1; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$onPointerEvent$1;->(Landroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$onPointerEvent$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$onPointerEvent$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$onPointerEvent$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$onPointerEvent$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/input/pointer/util/DataPointAtTime; +HSPLandroidx/compose/ui/input/pointer/util/DataPointAtTime;->(JF)V +Landroidx/compose/ui/input/pointer/util/VelocityTracker; +HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker;->()V +HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker;->()V +HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker;->addPosition-Uv8p0NA(JJ)V +HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker;->getCurrentPointerPositionAccumulator-F1C5BW0$ui_release()J +HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker;->resetTracking()V +HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker;->setCurrentPointerPositionAccumulator-k-4lQ0M$ui_release(J)V +Landroidx/compose/ui/input/pointer/util/VelocityTracker1D; +HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker1D;->()V +HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker1D;->(ZLandroidx/compose/ui/input/pointer/util/VelocityTracker1D$Strategy;)V +HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker1D;->(ZLandroidx/compose/ui/input/pointer/util/VelocityTracker1D$Strategy;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker1D;->addDataPoint(JF)V +HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker1D;->resetTracking()V +Landroidx/compose/ui/input/pointer/util/VelocityTracker1D$Strategy; +HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker1D$Strategy;->$values()[Landroidx/compose/ui/input/pointer/util/VelocityTracker1D$Strategy; +HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker1D$Strategy;->()V +HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker1D$Strategy;->(Ljava/lang/String;I)V +HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker1D$Strategy;->values()[Landroidx/compose/ui/input/pointer/util/VelocityTracker1D$Strategy; +Landroidx/compose/ui/input/pointer/util/VelocityTracker1D$WhenMappings; +HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker1D$WhenMappings;->()V +Landroidx/compose/ui/input/pointer/util/VelocityTrackerKt; +HSPLandroidx/compose/ui/input/pointer/util/VelocityTrackerKt;->access$set([Landroidx/compose/ui/input/pointer/util/DataPointAtTime;IJF)V +HSPLandroidx/compose/ui/input/pointer/util/VelocityTrackerKt;->addPointerInputChange(Landroidx/compose/ui/input/pointer/util/VelocityTracker;Landroidx/compose/ui/input/pointer/PointerInputChange;)V +HSPLandroidx/compose/ui/input/pointer/util/VelocityTrackerKt;->set([Landroidx/compose/ui/input/pointer/util/DataPointAtTime;IJF)V +Landroidx/compose/ui/input/rotary/RotaryInputElement; +HSPLandroidx/compose/ui/input/rotary/RotaryInputElement;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/input/rotary/RotaryInputElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/input/rotary/RotaryInputElement;->create()Landroidx/compose/ui/input/rotary/RotaryInputNode; +Landroidx/compose/ui/input/rotary/RotaryInputModifierKt; +HSPLandroidx/compose/ui/input/rotary/RotaryInputModifierKt;->onRotaryScrollEvent(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/input/rotary/RotaryInputModifierNode; +Landroidx/compose/ui/input/rotary/RotaryInputNode; +HSPLandroidx/compose/ui/input/rotary/RotaryInputNode;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/ui/layout/AlignmentLine; +HSPLandroidx/compose/ui/layout/AlignmentLine;->()V +HSPLandroidx/compose/ui/layout/AlignmentLine;->(Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/layout/AlignmentLine;->(Lkotlin/jvm/functions/Function2;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/layout/AlignmentLine$Companion; +HSPLandroidx/compose/ui/layout/AlignmentLine$Companion;->()V +HSPLandroidx/compose/ui/layout/AlignmentLine$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/layout/AlignmentLineKt; +HSPLandroidx/compose/ui/layout/AlignmentLineKt;->()V +HSPLandroidx/compose/ui/layout/AlignmentLineKt;->getFirstBaseline()Landroidx/compose/ui/layout/HorizontalAlignmentLine; +HSPLandroidx/compose/ui/layout/AlignmentLineKt;->getLastBaseline()Landroidx/compose/ui/layout/HorizontalAlignmentLine; +Landroidx/compose/ui/layout/AlignmentLineKt$FirstBaseline$1; +HSPLandroidx/compose/ui/layout/AlignmentLineKt$FirstBaseline$1;->()V +HSPLandroidx/compose/ui/layout/AlignmentLineKt$FirstBaseline$1;->()V +Landroidx/compose/ui/layout/AlignmentLineKt$LastBaseline$1; +HSPLandroidx/compose/ui/layout/AlignmentLineKt$LastBaseline$1;->()V +HSPLandroidx/compose/ui/layout/AlignmentLineKt$LastBaseline$1;->()V +Landroidx/compose/ui/layout/BeyondBoundsLayout; +Landroidx/compose/ui/layout/BeyondBoundsLayout$BeyondBoundsScope; +Landroidx/compose/ui/layout/ComposableSingletons$SubcomposeLayoutKt; +HSPLandroidx/compose/ui/layout/ComposableSingletons$SubcomposeLayoutKt;->()V +HSPLandroidx/compose/ui/layout/ComposableSingletons$SubcomposeLayoutKt;->()V +HSPLandroidx/compose/ui/layout/ComposableSingletons$SubcomposeLayoutKt;->getLambda-1$ui_release()Lkotlin/jvm/functions/Function2; +Landroidx/compose/ui/layout/ComposableSingletons$SubcomposeLayoutKt$lambda-1$1; +HSPLandroidx/compose/ui/layout/ComposableSingletons$SubcomposeLayoutKt$lambda-1$1;->()V +HSPLandroidx/compose/ui/layout/ComposableSingletons$SubcomposeLayoutKt$lambda-1$1;->()V +Landroidx/compose/ui/layout/ContentScale; +HSPLandroidx/compose/ui/layout/ContentScale;->()V +Landroidx/compose/ui/layout/ContentScale$Companion; +HSPLandroidx/compose/ui/layout/ContentScale$Companion;->()V +HSPLandroidx/compose/ui/layout/ContentScale$Companion;->()V +HSPLandroidx/compose/ui/layout/ContentScale$Companion;->getFit()Landroidx/compose/ui/layout/ContentScale; +Landroidx/compose/ui/layout/ContentScale$Companion$Crop$1; +HSPLandroidx/compose/ui/layout/ContentScale$Companion$Crop$1;->()V +Landroidx/compose/ui/layout/ContentScale$Companion$FillBounds$1; +HSPLandroidx/compose/ui/layout/ContentScale$Companion$FillBounds$1;->()V +Landroidx/compose/ui/layout/ContentScale$Companion$FillHeight$1; +HSPLandroidx/compose/ui/layout/ContentScale$Companion$FillHeight$1;->()V +Landroidx/compose/ui/layout/ContentScale$Companion$FillWidth$1; +HSPLandroidx/compose/ui/layout/ContentScale$Companion$FillWidth$1;->()V +Landroidx/compose/ui/layout/ContentScale$Companion$Fit$1; +HSPLandroidx/compose/ui/layout/ContentScale$Companion$Fit$1;->()V +HSPLandroidx/compose/ui/layout/ContentScale$Companion$Fit$1;->computeScaleFactor-H7hwNQA(JJ)J +Landroidx/compose/ui/layout/ContentScale$Companion$Inside$1; +HSPLandroidx/compose/ui/layout/ContentScale$Companion$Inside$1;->()V +Landroidx/compose/ui/layout/ContentScaleKt; +HSPLandroidx/compose/ui/layout/ContentScaleKt;->access$computeFillMinDimension-iLBOSCw(JJ)F +HSPLandroidx/compose/ui/layout/ContentScaleKt;->computeFillHeight-iLBOSCw(JJ)F +HSPLandroidx/compose/ui/layout/ContentScaleKt;->computeFillMinDimension-iLBOSCw(JJ)F +HSPLandroidx/compose/ui/layout/ContentScaleKt;->computeFillWidth-iLBOSCw(JJ)F +Landroidx/compose/ui/layout/DefaultIntrinsicMeasurable; +HSPLandroidx/compose/ui/layout/DefaultIntrinsicMeasurable;->(Landroidx/compose/ui/layout/IntrinsicMeasurable;Landroidx/compose/ui/layout/IntrinsicMinMax;Landroidx/compose/ui/layout/IntrinsicWidthHeight;)V +HSPLandroidx/compose/ui/layout/DefaultIntrinsicMeasurable;->measure-BRTryo0(J)Landroidx/compose/ui/layout/Placeable; +Landroidx/compose/ui/layout/FixedScale; +HSPLandroidx/compose/ui/layout/FixedScale;->()V +HSPLandroidx/compose/ui/layout/FixedScale;->(F)V +Landroidx/compose/ui/layout/FixedSizeIntrinsicsPlaceable; +HSPLandroidx/compose/ui/layout/FixedSizeIntrinsicsPlaceable;->(II)V +Landroidx/compose/ui/layout/GraphicLayerInfo; +Landroidx/compose/ui/layout/HorizontalAlignmentLine; +HSPLandroidx/compose/ui/layout/HorizontalAlignmentLine;->()V +HSPLandroidx/compose/ui/layout/HorizontalAlignmentLine;->(Lkotlin/jvm/functions/Function2;)V +Landroidx/compose/ui/layout/IntermediateLayoutModifierNode; +Landroidx/compose/ui/layout/IntrinsicMeasurable; +Landroidx/compose/ui/layout/IntrinsicMeasureScope; +Landroidx/compose/ui/layout/IntrinsicMinMax; +HSPLandroidx/compose/ui/layout/IntrinsicMinMax;->$values()[Landroidx/compose/ui/layout/IntrinsicMinMax; +HSPLandroidx/compose/ui/layout/IntrinsicMinMax;->()V +HSPLandroidx/compose/ui/layout/IntrinsicMinMax;->(Ljava/lang/String;I)V +Landroidx/compose/ui/layout/IntrinsicWidthHeight; +HSPLandroidx/compose/ui/layout/IntrinsicWidthHeight;->$values()[Landroidx/compose/ui/layout/IntrinsicWidthHeight; +HSPLandroidx/compose/ui/layout/IntrinsicWidthHeight;->()V +HSPLandroidx/compose/ui/layout/IntrinsicWidthHeight;->(Ljava/lang/String;I)V +Landroidx/compose/ui/layout/IntrinsicsMeasureScope; +HSPLandroidx/compose/ui/layout/IntrinsicsMeasureScope;->(Landroidx/compose/ui/layout/IntrinsicMeasureScope;Landroidx/compose/ui/unit/LayoutDirection;)V +Landroidx/compose/ui/layout/LayoutCoordinates; +HSPLandroidx/compose/ui/layout/LayoutCoordinates;->localBoundingBoxOf$default(Landroidx/compose/ui/layout/LayoutCoordinates;Landroidx/compose/ui/layout/LayoutCoordinates;ZILjava/lang/Object;)Landroidx/compose/ui/geometry/Rect; +Landroidx/compose/ui/layout/LayoutCoordinatesKt; +HSPLandroidx/compose/ui/layout/LayoutCoordinatesKt;->boundsInRoot(Landroidx/compose/ui/layout/LayoutCoordinates;)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/layout/LayoutCoordinatesKt;->boundsInWindow(Landroidx/compose/ui/layout/LayoutCoordinates;)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/layout/LayoutCoordinatesKt;->findRootCoordinates(Landroidx/compose/ui/layout/LayoutCoordinates;)Landroidx/compose/ui/layout/LayoutCoordinates; +HSPLandroidx/compose/ui/layout/LayoutCoordinatesKt;->positionInRoot(Landroidx/compose/ui/layout/LayoutCoordinates;)J +HSPLandroidx/compose/ui/layout/LayoutCoordinatesKt;->positionInWindow(Landroidx/compose/ui/layout/LayoutCoordinates;)J +Landroidx/compose/ui/layout/LayoutElement; +HSPLandroidx/compose/ui/layout/LayoutElement;->(Lkotlin/jvm/functions/Function3;)V +HSPLandroidx/compose/ui/layout/LayoutElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/layout/LayoutElement;->create()Landroidx/compose/ui/layout/LayoutModifierImpl; +HSPLandroidx/compose/ui/layout/LayoutElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/layout/LayoutElement;->update(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/layout/LayoutElement;->update(Landroidx/compose/ui/layout/LayoutModifierImpl;)V +Landroidx/compose/ui/layout/LayoutIdElement; +HSPLandroidx/compose/ui/layout/LayoutIdElement;->(Ljava/lang/Object;)V +HSPLandroidx/compose/ui/layout/LayoutIdElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/layout/LayoutIdElement;->create()Landroidx/compose/ui/layout/LayoutIdModifier; +HSPLandroidx/compose/ui/layout/LayoutIdElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/ui/layout/LayoutIdKt; +HSPLandroidx/compose/ui/layout/LayoutIdKt;->getLayoutId(Landroidx/compose/ui/layout/Measurable;)Ljava/lang/Object; +HSPLandroidx/compose/ui/layout/LayoutIdKt;->layoutId(Landroidx/compose/ui/Modifier;Ljava/lang/Object;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/layout/LayoutIdModifier; +HSPLandroidx/compose/ui/layout/LayoutIdModifier;->(Ljava/lang/Object;)V +HSPLandroidx/compose/ui/layout/LayoutIdModifier;->getLayoutId()Ljava/lang/Object; +HSPLandroidx/compose/ui/layout/LayoutIdModifier;->modifyParentData(Landroidx/compose/ui/unit/Density;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/layout/LayoutIdParentData; +Landroidx/compose/ui/layout/LayoutInfo; +Landroidx/compose/ui/layout/LayoutKt; +HSPLandroidx/compose/ui/layout/LayoutKt;->materializerOf(Landroidx/compose/ui/Modifier;)Lkotlin/jvm/functions/Function3; +HSPLandroidx/compose/ui/layout/LayoutKt;->modifierMaterializerOf(Landroidx/compose/ui/Modifier;)Lkotlin/jvm/functions/Function3; +Landroidx/compose/ui/layout/LayoutKt$materializerOf$1; +HSPLandroidx/compose/ui/layout/LayoutKt$materializerOf$1;->(Landroidx/compose/ui/Modifier;)V +HSPLandroidx/compose/ui/layout/LayoutKt$materializerOf$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/layout/LayoutKt$materializerOf$1;->invoke-Deg8D_g(Landroidx/compose/runtime/Composer;Landroidx/compose/runtime/Composer;I)V +Landroidx/compose/ui/layout/LayoutKt$materializerOfWithCompositionLocalInjection$1; +HSPLandroidx/compose/ui/layout/LayoutKt$materializerOfWithCompositionLocalInjection$1;->(Landroidx/compose/ui/Modifier;)V +HSPLandroidx/compose/ui/layout/LayoutKt$materializerOfWithCompositionLocalInjection$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/layout/LayoutKt$materializerOfWithCompositionLocalInjection$1;->invoke-Deg8D_g(Landroidx/compose/runtime/Composer;Landroidx/compose/runtime/Composer;I)V +Landroidx/compose/ui/layout/LayoutModifier; +Landroidx/compose/ui/layout/LayoutModifierImpl; +HSPLandroidx/compose/ui/layout/LayoutModifierImpl;->(Lkotlin/jvm/functions/Function3;)V +HSPLandroidx/compose/ui/layout/LayoutModifierImpl;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/ui/layout/LayoutModifierImpl;->setMeasureBlock(Lkotlin/jvm/functions/Function3;)V +Landroidx/compose/ui/layout/LayoutModifierKt; +HSPLandroidx/compose/ui/layout/LayoutModifierKt;->layout(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function3;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/layout/SubcomposeSlotReusePolicy;)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->access$getCurrentIndex$p(Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;)I +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->access$getIntermediateMeasureScope$p(Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;)Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState$IntermediateMeasureScopeImpl; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->access$getRoot$p(Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;)Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->access$getScope$p(Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;)Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState$Scope; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->access$setCurrentIndex$p(Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;I)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->createMeasurePolicy(Lkotlin/jvm/functions/Function2;)Landroidx/compose/ui/layout/MeasurePolicy; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->createNodeAt(I)Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->disposeOrReuseStartingFromIndex(I)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->forceRecomposeChildren()V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->getSlotIdAtIndex(I)Ljava/lang/Object; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->makeSureStateIsConsistent()V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->setCompositionContext(Landroidx/compose/runtime/CompositionContext;)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->setIntermediateMeasurePolicy$ui_release(Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->setSlotReusePolicy(Landroidx/compose/ui/layout/SubcomposeSlotReusePolicy;)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->subcompose(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->subcompose(Landroidx/compose/ui/node/LayoutNode;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->subcompose(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/util/List; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->subcomposeInto(Landroidx/compose/runtime/Composition;Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/runtime/CompositionContext;Lkotlin/jvm/functions/Function2;)Landroidx/compose/runtime/Composition; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->takeNodeFromReusables(Ljava/lang/Object;)Landroidx/compose/ui/node/LayoutNode; +Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState$IntermediateMeasureScopeImpl; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$IntermediateMeasureScopeImpl;->(Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$IntermediateMeasureScopeImpl;->setLookaheadConstraints-BRTryo0(J)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$IntermediateMeasureScopeImpl;->setLookaheadMeasurePolicy(Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$IntermediateMeasureScopeImpl;->setLookaheadSize-ozmzZPI(J)V +Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;->(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composition;)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;->(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composition;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;->getActive()Z +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;->getComposition()Landroidx/compose/runtime/Composition; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;->getContent()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;->getForceRecompose()Z +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;->getSlotId()Ljava/lang/Object; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;->setActive(Z)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;->setComposition(Landroidx/compose/runtime/Composition;)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;->setContent(Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;->setForceRecompose(Z)V +Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState$Scope; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$Scope;->(Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$Scope;->getDensity()F +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$Scope;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$Scope;->setDensity(F)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$Scope;->setFontScale(F)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$Scope;->setLayoutDirection(Landroidx/compose/ui/unit/LayoutDirection;)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$Scope;->subcompose(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/util/List; +Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState$createMeasurePolicy$1; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$createMeasurePolicy$1;->(Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;Lkotlin/jvm/functions/Function2;Ljava/lang/String;)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$createMeasurePolicy$1;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState$createMeasurePolicy$1$measure$1; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$createMeasurePolicy$1$measure$1;->(Landroidx/compose/ui/layout/MeasureResult;Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;I)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$createMeasurePolicy$1$measure$1;->getAlignmentLines()Ljava/util/Map; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$createMeasurePolicy$1$measure$1;->getHeight()I +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$createMeasurePolicy$1$measure$1;->getWidth()I +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$createMeasurePolicy$1$measure$1;->placeChildren()V +Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState$intermediateMeasurePolicy$1; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$intermediateMeasurePolicy$1;->()V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$intermediateMeasurePolicy$1;->()V +Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState$subcompose$3$1$1; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$subcompose$3$1$1;->(Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$subcompose$3$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$subcompose$3$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/layout/LookaheadLayoutCoordinates; +Landroidx/compose/ui/layout/LookaheadLayoutCoordinatesImpl; +Landroidx/compose/ui/layout/Measurable; +Landroidx/compose/ui/layout/MeasurePolicy; +HSPLandroidx/compose/ui/layout/MeasurePolicy;->maxIntrinsicWidth(Landroidx/compose/ui/layout/IntrinsicMeasureScope;Ljava/util/List;I)I +Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/ui/layout/MeasureScope; +HSPLandroidx/compose/ui/layout/MeasureScope;->layout$default(Landroidx/compose/ui/layout/MeasureScope;IILjava/util/Map;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/ui/layout/MeasureScope;->layout(IILjava/util/Map;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/ui/layout/MeasureScope$layout$1; +HSPLandroidx/compose/ui/layout/MeasureScope$layout$1;->(IILjava/util/Map;Landroidx/compose/ui/layout/MeasureScope;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/layout/MeasureScope$layout$1;->getAlignmentLines()Ljava/util/Map; +HSPLandroidx/compose/ui/layout/MeasureScope$layout$1;->getHeight()I +HSPLandroidx/compose/ui/layout/MeasureScope$layout$1;->getWidth()I +HSPLandroidx/compose/ui/layout/MeasureScope$layout$1;->placeChildren()V +Landroidx/compose/ui/layout/Measured; +Landroidx/compose/ui/layout/NoOpSubcomposeSlotReusePolicy; +HSPLandroidx/compose/ui/layout/NoOpSubcomposeSlotReusePolicy;->()V +HSPLandroidx/compose/ui/layout/NoOpSubcomposeSlotReusePolicy;->()V +Landroidx/compose/ui/layout/OnGloballyPositionedElement; +HSPLandroidx/compose/ui/layout/OnGloballyPositionedElement;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/layout/OnGloballyPositionedElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/layout/OnGloballyPositionedElement;->create()Landroidx/compose/ui/layout/OnGloballyPositionedNode; +HSPLandroidx/compose/ui/layout/OnGloballyPositionedElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/layout/OnGloballyPositionedElement;->update(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/layout/OnGloballyPositionedElement;->update(Landroidx/compose/ui/layout/OnGloballyPositionedNode;)V +Landroidx/compose/ui/layout/OnGloballyPositionedModifier; +Landroidx/compose/ui/layout/OnGloballyPositionedModifierKt; +HSPLandroidx/compose/ui/layout/OnGloballyPositionedModifierKt;->onGloballyPositioned(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/layout/OnGloballyPositionedNode; +HSPLandroidx/compose/ui/layout/OnGloballyPositionedNode;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/layout/OnGloballyPositionedNode;->onGloballyPositioned(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/ui/layout/OnGloballyPositionedNode;->setCallback(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/ui/layout/OnPlacedModifier; +Landroidx/compose/ui/layout/OnRemeasuredModifier; +Landroidx/compose/ui/layout/OnRemeasuredModifierKt; +HSPLandroidx/compose/ui/layout/OnRemeasuredModifierKt;->onSizeChanged(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/layout/OnSizeChangedModifier; +HSPLandroidx/compose/ui/layout/OnSizeChangedModifier;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/layout/OnSizeChangedModifier;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/layout/OnSizeChangedModifier;->onRemeasured-ozmzZPI(J)V +Landroidx/compose/ui/layout/ParentDataModifier; +Landroidx/compose/ui/layout/PinnableContainer; +Landroidx/compose/ui/layout/PinnableContainer$PinnedHandle; +Landroidx/compose/ui/layout/PinnableContainerKt; +HSPLandroidx/compose/ui/layout/PinnableContainerKt;->()V +HSPLandroidx/compose/ui/layout/PinnableContainerKt;->getLocalPinnableContainer()Landroidx/compose/runtime/ProvidableCompositionLocal; +Landroidx/compose/ui/layout/PinnableContainerKt$LocalPinnableContainer$1; +HSPLandroidx/compose/ui/layout/PinnableContainerKt$LocalPinnableContainer$1;->()V +HSPLandroidx/compose/ui/layout/PinnableContainerKt$LocalPinnableContainer$1;->()V +HSPLandroidx/compose/ui/layout/PinnableContainerKt$LocalPinnableContainer$1;->invoke()Landroidx/compose/ui/layout/PinnableContainer; +HSPLandroidx/compose/ui/layout/PinnableContainerKt$LocalPinnableContainer$1;->invoke()Ljava/lang/Object; +Landroidx/compose/ui/layout/Placeable; +HSPLandroidx/compose/ui/layout/Placeable;->()V +HSPLandroidx/compose/ui/layout/Placeable;->()V +HSPLandroidx/compose/ui/layout/Placeable;->access$getApparentToRealOffset-nOcc-ac(Landroidx/compose/ui/layout/Placeable;)J +HSPLandroidx/compose/ui/layout/Placeable;->access$placeAt-f8xVGno(Landroidx/compose/ui/layout/Placeable;JFLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/layout/Placeable;->getApparentToRealOffset-nOcc-ac()J +HSPLandroidx/compose/ui/layout/Placeable;->getHeight()I +HSPLandroidx/compose/ui/layout/Placeable;->getMeasuredHeight()I +HSPLandroidx/compose/ui/layout/Placeable;->getMeasuredSize-YbymL2g()J +HSPLandroidx/compose/ui/layout/Placeable;->getMeasuredWidth()I +HSPLandroidx/compose/ui/layout/Placeable;->getMeasurementConstraints-msEJaDk()J +HSPLandroidx/compose/ui/layout/Placeable;->getWidth()I +HSPLandroidx/compose/ui/layout/Placeable;->onMeasuredSizeChanged()V +HSPLandroidx/compose/ui/layout/Placeable;->setMeasuredSize-ozmzZPI(J)V +HSPLandroidx/compose/ui/layout/Placeable;->setMeasurementConstraints-BRTryo0(J)V +Landroidx/compose/ui/layout/Placeable$PlacementScope; +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->()V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->()V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->access$getLayoutDelegate$cp()Landroidx/compose/ui/node/LayoutNodeLayoutDelegate; +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->access$getParentLayoutDirection$cp()Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->access$getParentLayoutDirection(Landroidx/compose/ui/layout/Placeable$PlacementScope;)Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->access$getParentWidth$cp()I +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->access$get_coordinates$cp()Landroidx/compose/ui/layout/LayoutCoordinates; +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->access$setLayoutDelegate$cp(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;)V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->access$setParentLayoutDirection$cp(Landroidx/compose/ui/unit/LayoutDirection;)V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->access$setParentWidth$cp(I)V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->access$set_coordinates$cp(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->place$default(Landroidx/compose/ui/layout/Placeable$PlacementScope;Landroidx/compose/ui/layout/Placeable;IIFILjava/lang/Object;)V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->place(Landroidx/compose/ui/layout/Placeable;IIF)V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->place-70tqf50$default(Landroidx/compose/ui/layout/Placeable$PlacementScope;Landroidx/compose/ui/layout/Placeable;JFILjava/lang/Object;)V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->place-70tqf50(Landroidx/compose/ui/layout/Placeable;JF)V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->placeRelative$default(Landroidx/compose/ui/layout/Placeable$PlacementScope;Landroidx/compose/ui/layout/Placeable;IIFILjava/lang/Object;)V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->placeRelative(Landroidx/compose/ui/layout/Placeable;IIF)V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->placeRelativeWithLayer$default(Landroidx/compose/ui/layout/Placeable$PlacementScope;Landroidx/compose/ui/layout/Placeable;IIFLkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->placeRelativeWithLayer(Landroidx/compose/ui/layout/Placeable;IIFLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->placeWithLayer$default(Landroidx/compose/ui/layout/Placeable$PlacementScope;Landroidx/compose/ui/layout/Placeable;IIFLkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->placeWithLayer(Landroidx/compose/ui/layout/Placeable;IIFLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->placeWithLayer-aW-9-wM$default(Landroidx/compose/ui/layout/Placeable$PlacementScope;Landroidx/compose/ui/layout/Placeable;JFLkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->placeWithLayer-aW-9-wM(Landroidx/compose/ui/layout/Placeable;JFLkotlin/jvm/functions/Function1;)V +Landroidx/compose/ui/layout/Placeable$PlacementScope$Companion; +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope$Companion;->()V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope$Companion;->access$configureForPlacingForAlignment(Landroidx/compose/ui/layout/Placeable$PlacementScope$Companion;Landroidx/compose/ui/node/LookaheadCapablePlaceable;)Z +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope$Companion;->access$getParentLayoutDirection(Landroidx/compose/ui/layout/Placeable$PlacementScope$Companion;)Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope$Companion;->access$getParentWidth(Landroidx/compose/ui/layout/Placeable$PlacementScope$Companion;)I +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope$Companion;->configureForPlacingForAlignment(Landroidx/compose/ui/node/LookaheadCapablePlaceable;)Z +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope$Companion;->getParentLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope$Companion;->getParentWidth()I +Landroidx/compose/ui/layout/PlaceableKt; +HSPLandroidx/compose/ui/layout/PlaceableKt;->()V +HSPLandroidx/compose/ui/layout/PlaceableKt;->access$getDefaultConstraints$p()J +HSPLandroidx/compose/ui/layout/PlaceableKt;->access$getDefaultLayerBlock$p()Lkotlin/jvm/functions/Function1; +Landroidx/compose/ui/layout/PlaceableKt$DefaultLayerBlock$1; +HSPLandroidx/compose/ui/layout/PlaceableKt$DefaultLayerBlock$1;->()V +HSPLandroidx/compose/ui/layout/PlaceableKt$DefaultLayerBlock$1;->()V +HSPLandroidx/compose/ui/layout/PlaceableKt$DefaultLayerBlock$1;->invoke(Landroidx/compose/ui/graphics/GraphicsLayerScope;)V +HSPLandroidx/compose/ui/layout/PlaceableKt$DefaultLayerBlock$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/layout/Remeasurement; +Landroidx/compose/ui/layout/RemeasurementModifier; +Landroidx/compose/ui/layout/RootMeasurePolicy; +HSPLandroidx/compose/ui/layout/RootMeasurePolicy;->()V +HSPLandroidx/compose/ui/layout/RootMeasurePolicy;->()V +HSPLandroidx/compose/ui/layout/RootMeasurePolicy;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/ui/layout/RootMeasurePolicy$measure$2; +HSPLandroidx/compose/ui/layout/RootMeasurePolicy$measure$2;->(Landroidx/compose/ui/layout/Placeable;)V +HSPLandroidx/compose/ui/layout/RootMeasurePolicy$measure$2;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/ui/layout/RootMeasurePolicy$measure$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/layout/ScaleFactor; +HSPLandroidx/compose/ui/layout/ScaleFactor;->()V +HSPLandroidx/compose/ui/layout/ScaleFactor;->constructor-impl(J)J +HSPLandroidx/compose/ui/layout/ScaleFactor;->getScaleX-impl(J)F +HSPLandroidx/compose/ui/layout/ScaleFactor;->getScaleY-impl(J)F +Landroidx/compose/ui/layout/ScaleFactor$Companion; +HSPLandroidx/compose/ui/layout/ScaleFactor$Companion;->()V +HSPLandroidx/compose/ui/layout/ScaleFactor$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/layout/ScaleFactorKt; +HSPLandroidx/compose/ui/layout/ScaleFactorKt;->ScaleFactor(FF)J +HSPLandroidx/compose/ui/layout/ScaleFactorKt;->times-UQTWf7w(JJ)J +Landroidx/compose/ui/layout/SubcomposeIntermediateMeasureScope; +Landroidx/compose/ui/layout/SubcomposeLayoutKt; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt;->SubcomposeLayout(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt;->SubcomposeLayout(Landroidx/compose/ui/layout/SubcomposeLayoutState;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt;->SubcomposeLayout(Landroidx/compose/ui/layout/SubcomposeLayoutState;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +Landroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$$inlined$ComposeNode$1; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$$inlined$ComposeNode$1;->(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$$inlined$ComposeNode$1;->invoke()Ljava/lang/Object; +Landroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$10; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$10;->(Landroidx/compose/ui/layout/SubcomposeLayoutState;)V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$10;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$10;->invoke()V +Landroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$11$1; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$11$1;->(Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$11$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$11$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$11$1$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$11$1$invoke$$inlined$onDispose$1;->(Landroidx/compose/runtime/State;)V +Landroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$12; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$12;->(Landroidx/compose/ui/layout/SubcomposeLayoutState;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;II)V +Landroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$6; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$6;->()V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$6;->()V +Landroidx/compose/ui/layout/SubcomposeLayoutState; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;->()V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;->()V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;->(Landroidx/compose/ui/layout/SubcomposeSlotReusePolicy;)V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;->access$getSlotReusePolicy$p(Landroidx/compose/ui/layout/SubcomposeLayoutState;)Landroidx/compose/ui/layout/SubcomposeSlotReusePolicy; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;->access$getState(Landroidx/compose/ui/layout/SubcomposeLayoutState;)Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;->access$set_state$p(Landroidx/compose/ui/layout/SubcomposeLayoutState;Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;)V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;->forceRecomposeChildren$ui_release()V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;->getSetCompositionContext$ui_release()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;->getSetIntermediateMeasurePolicy$ui_release()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;->getSetMeasurePolicy$ui_release()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;->getSetRoot$ui_release()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;->getState()Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState; +Landroidx/compose/ui/layout/SubcomposeLayoutState$setCompositionContext$1; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setCompositionContext$1;->(Landroidx/compose/ui/layout/SubcomposeLayoutState;)V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setCompositionContext$1;->invoke(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/runtime/CompositionContext;)V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setCompositionContext$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/layout/SubcomposeLayoutState$setIntermediateMeasurePolicy$1; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setIntermediateMeasurePolicy$1;->(Landroidx/compose/ui/layout/SubcomposeLayoutState;)V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setIntermediateMeasurePolicy$1;->invoke(Landroidx/compose/ui/node/LayoutNode;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setIntermediateMeasurePolicy$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/layout/SubcomposeLayoutState$setMeasurePolicy$1; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setMeasurePolicy$1;->(Landroidx/compose/ui/layout/SubcomposeLayoutState;)V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setMeasurePolicy$1;->invoke(Landroidx/compose/ui/node/LayoutNode;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setMeasurePolicy$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/layout/SubcomposeLayoutState$setRoot$1; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setRoot$1;->(Landroidx/compose/ui/layout/SubcomposeLayoutState;)V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setRoot$1;->invoke(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/layout/SubcomposeLayoutState;)V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setRoot$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/layout/SubcomposeMeasureScope; +Landroidx/compose/ui/layout/SubcomposeSlotReusePolicy; +Landroidx/compose/ui/layout/SubcomposeSlotReusePolicy$SlotIdsSet; +HSPLandroidx/compose/ui/layout/SubcomposeSlotReusePolicy$SlotIdsSet;->()V +HSPLandroidx/compose/ui/layout/SubcomposeSlotReusePolicy$SlotIdsSet;->(Ljava/util/Set;)V +HSPLandroidx/compose/ui/layout/SubcomposeSlotReusePolicy$SlotIdsSet;->(Ljava/util/Set;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/layout/SubcomposeSlotReusePolicy$SlotIdsSet;->add$ui_release(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/layout/SubcomposeSlotReusePolicy$SlotIdsSet;->clear()V +HSPLandroidx/compose/ui/layout/SubcomposeSlotReusePolicy$SlotIdsSet;->contains(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/layout/SubcomposeSlotReusePolicy$SlotIdsSet;->iterator()Ljava/util/Iterator; +Landroidx/compose/ui/modifier/BackwardsCompatLocalMap; +HSPLandroidx/compose/ui/modifier/BackwardsCompatLocalMap;->(Landroidx/compose/ui/modifier/ModifierLocalProvider;)V +HSPLandroidx/compose/ui/modifier/BackwardsCompatLocalMap;->contains$ui_release(Landroidx/compose/ui/modifier/ModifierLocal;)Z +HSPLandroidx/compose/ui/modifier/BackwardsCompatLocalMap;->get$ui_release(Landroidx/compose/ui/modifier/ModifierLocal;)Ljava/lang/Object; +Landroidx/compose/ui/modifier/EmptyMap; +HSPLandroidx/compose/ui/modifier/EmptyMap;->()V +HSPLandroidx/compose/ui/modifier/EmptyMap;->()V +HSPLandroidx/compose/ui/modifier/EmptyMap;->contains$ui_release(Landroidx/compose/ui/modifier/ModifierLocal;)Z +Landroidx/compose/ui/modifier/ModifierLocal; +HSPLandroidx/compose/ui/modifier/ModifierLocal;->()V +HSPLandroidx/compose/ui/modifier/ModifierLocal;->(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/modifier/ModifierLocal;->(Lkotlin/jvm/functions/Function0;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/modifier/ModifierLocal;->getDefaultFactory$ui_release()Lkotlin/jvm/functions/Function0; +Landroidx/compose/ui/modifier/ModifierLocalConsumer; +Landroidx/compose/ui/modifier/ModifierLocalKt; +HSPLandroidx/compose/ui/modifier/ModifierLocalKt;->modifierLocalOf(Lkotlin/jvm/functions/Function0;)Landroidx/compose/ui/modifier/ProvidableModifierLocal; +Landroidx/compose/ui/modifier/ModifierLocalManager; +HSPLandroidx/compose/ui/modifier/ModifierLocalManager;->(Landroidx/compose/ui/node/Owner;)V +HSPLandroidx/compose/ui/modifier/ModifierLocalManager;->invalidate()V +HSPLandroidx/compose/ui/modifier/ModifierLocalManager;->removedProvider(Landroidx/compose/ui/node/BackwardsCompatNode;Landroidx/compose/ui/modifier/ModifierLocal;)V +HSPLandroidx/compose/ui/modifier/ModifierLocalManager;->triggerUpdates()V +Landroidx/compose/ui/modifier/ModifierLocalManager$invalidate$1; +HSPLandroidx/compose/ui/modifier/ModifierLocalManager$invalidate$1;->(Landroidx/compose/ui/modifier/ModifierLocalManager;)V +HSPLandroidx/compose/ui/modifier/ModifierLocalManager$invalidate$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/modifier/ModifierLocalManager$invalidate$1;->invoke()V +Landroidx/compose/ui/modifier/ModifierLocalMap; +HSPLandroidx/compose/ui/modifier/ModifierLocalMap;->()V +HSPLandroidx/compose/ui/modifier/ModifierLocalMap;->()V +HSPLandroidx/compose/ui/modifier/ModifierLocalMap;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/modifier/ModifierLocalModifierNode; +HSPLandroidx/compose/ui/modifier/ModifierLocalModifierNode;->getCurrent(Landroidx/compose/ui/modifier/ModifierLocal;)Ljava/lang/Object; +HSPLandroidx/compose/ui/modifier/ModifierLocalModifierNode;->getProvidedValues()Landroidx/compose/ui/modifier/ModifierLocalMap; +Landroidx/compose/ui/modifier/ModifierLocalModifierNodeKt; +PLandroidx/compose/ui/modifier/ModifierLocalModifierNodeKt;->modifierLocalMapOf()Landroidx/compose/ui/modifier/ModifierLocalMap; +HSPLandroidx/compose/ui/modifier/ModifierLocalModifierNodeKt;->modifierLocalMapOf(Lkotlin/Pair;)Landroidx/compose/ui/modifier/ModifierLocalMap; +Landroidx/compose/ui/modifier/ModifierLocalProvider; +Landroidx/compose/ui/modifier/ModifierLocalReadScope; +Landroidx/compose/ui/modifier/ProvidableModifierLocal; +HSPLandroidx/compose/ui/modifier/ProvidableModifierLocal;->()V +HSPLandroidx/compose/ui/modifier/ProvidableModifierLocal;->(Lkotlin/jvm/functions/Function0;)V +Landroidx/compose/ui/modifier/SingleLocalMap; +HSPLandroidx/compose/ui/modifier/SingleLocalMap;->(Landroidx/compose/ui/modifier/ModifierLocal;)V +HSPLandroidx/compose/ui/modifier/SingleLocalMap;->contains$ui_release(Landroidx/compose/ui/modifier/ModifierLocal;)Z +HSPLandroidx/compose/ui/modifier/SingleLocalMap;->get$ui_release(Landroidx/compose/ui/modifier/ModifierLocal;)Ljava/lang/Object; +HSPLandroidx/compose/ui/modifier/SingleLocalMap;->getValue()Ljava/lang/Object; +HSPLandroidx/compose/ui/modifier/SingleLocalMap;->set$ui_release(Landroidx/compose/ui/modifier/ModifierLocal;Ljava/lang/Object;)V +HSPLandroidx/compose/ui/modifier/SingleLocalMap;->setValue(Ljava/lang/Object;)V +Landroidx/compose/ui/node/AlignmentLines; +HSPLandroidx/compose/ui/node/AlignmentLines;->(Landroidx/compose/ui/node/AlignmentLinesOwner;)V +HSPLandroidx/compose/ui/node/AlignmentLines;->(Landroidx/compose/ui/node/AlignmentLinesOwner;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/node/AlignmentLines;->getDirty$ui_release()Z +HSPLandroidx/compose/ui/node/AlignmentLines;->getQueried$ui_release()Z +HSPLandroidx/compose/ui/node/AlignmentLines;->getRequired$ui_release()Z +HSPLandroidx/compose/ui/node/AlignmentLines;->getUsedDuringParentLayout$ui_release()Z +HSPLandroidx/compose/ui/node/AlignmentLines;->onAlignmentsChanged()V +HSPLandroidx/compose/ui/node/AlignmentLines;->recalculateQueryOwner()V +HSPLandroidx/compose/ui/node/AlignmentLines;->reset$ui_release()V +HSPLandroidx/compose/ui/node/AlignmentLines;->setPreviousUsedDuringParentLayout$ui_release(Z)V +HSPLandroidx/compose/ui/node/AlignmentLines;->setUsedByModifierLayout$ui_release(Z)V +HSPLandroidx/compose/ui/node/AlignmentLines;->setUsedByModifierMeasurement$ui_release(Z)V +HSPLandroidx/compose/ui/node/AlignmentLines;->setUsedDuringParentLayout$ui_release(Z)V +HSPLandroidx/compose/ui/node/AlignmentLines;->setUsedDuringParentMeasurement$ui_release(Z)V +Landroidx/compose/ui/node/AlignmentLinesOwner; +Landroidx/compose/ui/node/BackwardsCompatNode; +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->(Landroidx/compose/ui/Modifier$Element;)V +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->draw(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->getCurrent(Landroidx/compose/ui/modifier/ModifierLocal;)Ljava/lang/Object; +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->getElement()Landroidx/compose/ui/Modifier$Element; +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->getProvidedValues()Landroidx/compose/ui/modifier/ModifierLocalMap; +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->initializeModifier(Z)V +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->isValidOwnerScope()Z +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->modifyParentData(Landroidx/compose/ui/unit/Density;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->onAttach()V +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->onDetach()V +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->onGloballyPositioned(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->onMeasureResultChanged()V +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->onPlaced(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->onRemeasured-ozmzZPI(J)V +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->setElement(Landroidx/compose/ui/Modifier$Element;)V +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->unInitializeModifier()V +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->updateModifierLocalConsumer()V +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->updateModifierLocalProvider(Landroidx/compose/ui/modifier/ModifierLocalProvider;)V +Landroidx/compose/ui/node/BackwardsCompatNode$initializeModifier$1; +HSPLandroidx/compose/ui/node/BackwardsCompatNode$initializeModifier$1;->(Landroidx/compose/ui/node/BackwardsCompatNode;)V +HSPLandroidx/compose/ui/node/BackwardsCompatNode$initializeModifier$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/node/BackwardsCompatNode$initializeModifier$1;->invoke()V +Landroidx/compose/ui/node/BackwardsCompatNode$updateModifierLocalConsumer$1; +HSPLandroidx/compose/ui/node/BackwardsCompatNode$updateModifierLocalConsumer$1;->(Landroidx/compose/ui/node/BackwardsCompatNode;)V +HSPLandroidx/compose/ui/node/BackwardsCompatNode$updateModifierLocalConsumer$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/node/BackwardsCompatNode$updateModifierLocalConsumer$1;->invoke()V +Landroidx/compose/ui/node/BackwardsCompatNodeKt; +HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt;->()V +HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt;->access$getDetachedModifierLocalReadScope$p()Landroidx/compose/ui/node/BackwardsCompatNodeKt$DetachedModifierLocalReadScope$1; +HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt;->access$getUpdateModifierLocalConsumer$p()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt;->access$isChainUpdate(Landroidx/compose/ui/node/BackwardsCompatNode;)Z +HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt;->isChainUpdate(Landroidx/compose/ui/node/BackwardsCompatNode;)Z +Landroidx/compose/ui/node/BackwardsCompatNodeKt$DetachedModifierLocalReadScope$1; +HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt$DetachedModifierLocalReadScope$1;->()V +HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt$DetachedModifierLocalReadScope$1;->getCurrent(Landroidx/compose/ui/modifier/ModifierLocal;)Ljava/lang/Object; +Landroidx/compose/ui/node/BackwardsCompatNodeKt$onDrawCacheReadsChanged$1; +HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt$onDrawCacheReadsChanged$1;->()V +HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt$onDrawCacheReadsChanged$1;->()V +Landroidx/compose/ui/node/BackwardsCompatNodeKt$updateModifierLocalConsumer$1; +HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt$updateModifierLocalConsumer$1;->()V +HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt$updateModifierLocalConsumer$1;->()V +HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt$updateModifierLocalConsumer$1;->invoke(Landroidx/compose/ui/node/BackwardsCompatNode;)V +HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt$updateModifierLocalConsumer$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/CanFocusChecker; +HSPLandroidx/compose/ui/node/CanFocusChecker;->()V +HSPLandroidx/compose/ui/node/CanFocusChecker;->()V +HSPLandroidx/compose/ui/node/CanFocusChecker;->isCanFocusSet()Z +HSPLandroidx/compose/ui/node/CanFocusChecker;->reset()V +HSPLandroidx/compose/ui/node/CanFocusChecker;->setCanFocus(Z)V +Landroidx/compose/ui/node/CenteredArray; +HSPLandroidx/compose/ui/node/CenteredArray;->constructor-impl([I)[I +HSPLandroidx/compose/ui/node/CenteredArray;->get-impl([II)I +HSPLandroidx/compose/ui/node/CenteredArray;->getMid-impl([I)I +HSPLandroidx/compose/ui/node/CenteredArray;->set-impl([III)V +Landroidx/compose/ui/node/ComposeUiNode; +HSPLandroidx/compose/ui/node/ComposeUiNode;->()V +Landroidx/compose/ui/node/ComposeUiNode$Companion; +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion;->getConstructor()Lkotlin/jvm/functions/Function0; +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion;->getSetCompositeKeyHash()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion;->getSetDensity()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion;->getSetLayoutDirection()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion;->getSetMeasurePolicy()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion;->getSetModifier()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion;->getSetResolvedCompositionLocals()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion;->getSetViewConfiguration()Lkotlin/jvm/functions/Function2; +Landroidx/compose/ui/node/ComposeUiNode$Companion$SetCompositeKeyHash$1; +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetCompositeKeyHash$1;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetCompositeKeyHash$1;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetCompositeKeyHash$1;->invoke(Landroidx/compose/ui/node/ComposeUiNode;I)V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetCompositeKeyHash$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/ComposeUiNode$Companion$SetDensity$1; +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetDensity$1;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetDensity$1;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetDensity$1;->invoke(Landroidx/compose/ui/node/ComposeUiNode;Landroidx/compose/ui/unit/Density;)V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetDensity$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/ComposeUiNode$Companion$SetLayoutDirection$1; +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetLayoutDirection$1;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetLayoutDirection$1;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetLayoutDirection$1;->invoke(Landroidx/compose/ui/node/ComposeUiNode;Landroidx/compose/ui/unit/LayoutDirection;)V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetLayoutDirection$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/ComposeUiNode$Companion$SetMeasurePolicy$1; +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetMeasurePolicy$1;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetMeasurePolicy$1;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetMeasurePolicy$1;->invoke(Landroidx/compose/ui/node/ComposeUiNode;Landroidx/compose/ui/layout/MeasurePolicy;)V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetMeasurePolicy$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/ComposeUiNode$Companion$SetModifier$1; +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetModifier$1;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetModifier$1;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetModifier$1;->invoke(Landroidx/compose/ui/node/ComposeUiNode;Landroidx/compose/ui/Modifier;)V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetModifier$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/ComposeUiNode$Companion$SetResolvedCompositionLocals$1; +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetResolvedCompositionLocals$1;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetResolvedCompositionLocals$1;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetResolvedCompositionLocals$1;->invoke(Landroidx/compose/ui/node/ComposeUiNode;Landroidx/compose/runtime/CompositionLocalMap;)V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetResolvedCompositionLocals$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/ComposeUiNode$Companion$SetViewConfiguration$1; +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetViewConfiguration$1;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetViewConfiguration$1;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetViewConfiguration$1;->invoke(Landroidx/compose/ui/node/ComposeUiNode;Landroidx/compose/ui/platform/ViewConfiguration;)V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetViewConfiguration$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/ComposeUiNode$Companion$VirtualConstructor$1; +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$VirtualConstructor$1;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$VirtualConstructor$1;->()V +Landroidx/compose/ui/node/CompositionLocalConsumerModifierNode; +Landroidx/compose/ui/node/CompositionLocalConsumerModifierNodeKt; +HSPLandroidx/compose/ui/node/CompositionLocalConsumerModifierNodeKt;->currentValueOf(Landroidx/compose/ui/node/CompositionLocalConsumerModifierNode;Landroidx/compose/runtime/CompositionLocal;)Ljava/lang/Object; +Landroidx/compose/ui/node/DelegatableNode; +Landroidx/compose/ui/node/DelegatableNodeKt; +HSPLandroidx/compose/ui/node/DelegatableNodeKt;->access$addLayoutNodeChildren(Landroidx/compose/runtime/collection/MutableVector;Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/node/DelegatableNodeKt;->access$pop(Landroidx/compose/runtime/collection/MutableVector;)Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/DelegatableNodeKt;->addLayoutNodeChildren(Landroidx/compose/runtime/collection/MutableVector;Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/node/DelegatableNodeKt;->asLayoutModifierNode(Landroidx/compose/ui/Modifier$Node;)Landroidx/compose/ui/node/LayoutModifierNode; +HSPLandroidx/compose/ui/node/DelegatableNodeKt;->has-64DMado(Landroidx/compose/ui/node/DelegatableNode;I)Z +HSPLandroidx/compose/ui/node/DelegatableNodeKt;->isDelegationRoot(Landroidx/compose/ui/node/DelegatableNode;)Z +HSPLandroidx/compose/ui/node/DelegatableNodeKt;->pop(Landroidx/compose/runtime/collection/MutableVector;)Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/DelegatableNodeKt;->requireCoordinator-64DMado(Landroidx/compose/ui/node/DelegatableNode;I)Landroidx/compose/ui/node/NodeCoordinator; +HSPLandroidx/compose/ui/node/DelegatableNodeKt;->requireDensity(Landroidx/compose/ui/node/DelegatableNode;)Landroidx/compose/ui/unit/Density; +HSPLandroidx/compose/ui/node/DelegatableNodeKt;->requireLayoutDirection(Landroidx/compose/ui/node/DelegatableNode;)Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/node/DelegatableNodeKt;->requireLayoutNode(Landroidx/compose/ui/node/DelegatableNode;)Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/node/DelegatableNodeKt;->requireOwner(Landroidx/compose/ui/node/DelegatableNode;)Landroidx/compose/ui/node/Owner; +Landroidx/compose/ui/node/DelegatingNode; +HSPLandroidx/compose/ui/node/DelegatingNode;->()V +HSPLandroidx/compose/ui/node/DelegatingNode;->()V +HSPLandroidx/compose/ui/node/DelegatingNode;->delegate(Landroidx/compose/ui/node/DelegatableNode;)Landroidx/compose/ui/node/DelegatableNode; +HSPLandroidx/compose/ui/node/DelegatingNode;->getDelegate$ui_release()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/DelegatingNode;->getSelfKindSet$ui_release()I +HSPLandroidx/compose/ui/node/DelegatingNode;->markAsAttached$ui_release()V +HSPLandroidx/compose/ui/node/DelegatingNode;->markAsDetached$ui_release()V +HSPLandroidx/compose/ui/node/DelegatingNode;->reset$ui_release()V +HSPLandroidx/compose/ui/node/DelegatingNode;->runAttachLifecycle$ui_release()V +HSPLandroidx/compose/ui/node/DelegatingNode;->runDetachLifecycle$ui_release()V +HSPLandroidx/compose/ui/node/DelegatingNode;->updateCoordinator$ui_release(Landroidx/compose/ui/node/NodeCoordinator;)V +HSPLandroidx/compose/ui/node/DelegatingNode;->updateNodeKindSet(IZ)V +HSPLandroidx/compose/ui/node/DelegatingNode;->validateDelegateKindSet(ILandroidx/compose/ui/Modifier$Node;)V +Landroidx/compose/ui/node/DepthSortedSet; +HSPLandroidx/compose/ui/node/DepthSortedSet;->(Z)V +HSPLandroidx/compose/ui/node/DepthSortedSet;->add(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/DepthSortedSet;->contains(Landroidx/compose/ui/node/LayoutNode;)Z +HSPLandroidx/compose/ui/node/DepthSortedSet;->isEmpty()Z +HSPLandroidx/compose/ui/node/DepthSortedSet;->pop()Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/node/DepthSortedSet;->remove(Landroidx/compose/ui/node/LayoutNode;)Z +Landroidx/compose/ui/node/DepthSortedSet$DepthComparator$1; +HSPLandroidx/compose/ui/node/DepthSortedSet$DepthComparator$1;->()V +HSPLandroidx/compose/ui/node/DepthSortedSet$DepthComparator$1;->compare(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/node/LayoutNode;)I +HSPLandroidx/compose/ui/node/DepthSortedSet$DepthComparator$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +Landroidx/compose/ui/node/DepthSortedSet$mapOfOriginalDepth$2; +HSPLandroidx/compose/ui/node/DepthSortedSet$mapOfOriginalDepth$2;->()V +HSPLandroidx/compose/ui/node/DepthSortedSet$mapOfOriginalDepth$2;->()V +Landroidx/compose/ui/node/DepthSortedSetsForDifferentPasses; +HSPLandroidx/compose/ui/node/DepthSortedSetsForDifferentPasses;->(Z)V +HSPLandroidx/compose/ui/node/DepthSortedSetsForDifferentPasses;->access$getLookaheadSet$p(Landroidx/compose/ui/node/DepthSortedSetsForDifferentPasses;)Landroidx/compose/ui/node/DepthSortedSet; +HSPLandroidx/compose/ui/node/DepthSortedSetsForDifferentPasses;->access$getSet$p(Landroidx/compose/ui/node/DepthSortedSetsForDifferentPasses;)Landroidx/compose/ui/node/DepthSortedSet; +HSPLandroidx/compose/ui/node/DepthSortedSetsForDifferentPasses;->add(Landroidx/compose/ui/node/LayoutNode;Z)V +HSPLandroidx/compose/ui/node/DepthSortedSetsForDifferentPasses;->isEmpty()Z +HSPLandroidx/compose/ui/node/DepthSortedSetsForDifferentPasses;->isNotEmpty()Z +HSPLandroidx/compose/ui/node/DepthSortedSetsForDifferentPasses;->remove(Landroidx/compose/ui/node/LayoutNode;)Z +HSPLandroidx/compose/ui/node/DepthSortedSetsForDifferentPasses;->remove(Landroidx/compose/ui/node/LayoutNode;Z)Z +Landroidx/compose/ui/node/DiffCallback; +Landroidx/compose/ui/node/DistanceAndInLayer; +HSPLandroidx/compose/ui/node/DistanceAndInLayer;->compareTo-S_HNhKs(JJ)I +HSPLandroidx/compose/ui/node/DistanceAndInLayer;->constructor-impl(J)J +HSPLandroidx/compose/ui/node/DistanceAndInLayer;->getDistance-impl(J)F +HSPLandroidx/compose/ui/node/DistanceAndInLayer;->isInLayer-impl(J)Z +Landroidx/compose/ui/node/DrawModifierNode; +HSPLandroidx/compose/ui/node/DrawModifierNode;->onMeasureResultChanged()V +Landroidx/compose/ui/node/DrawModifierNodeKt; +HSPLandroidx/compose/ui/node/DrawModifierNodeKt;->invalidateDraw(Landroidx/compose/ui/node/DrawModifierNode;)V +Landroidx/compose/ui/node/ForceUpdateElement; +HSPLandroidx/compose/ui/node/ForceUpdateElement;->(Landroidx/compose/ui/node/ModifierNodeElement;)V +Landroidx/compose/ui/node/GlobalPositionAwareModifierNode; +Landroidx/compose/ui/node/HitTestResult; +HSPLandroidx/compose/ui/node/HitTestResult;->()V +HSPLandroidx/compose/ui/node/HitTestResult;->access$getHitDepth$p(Landroidx/compose/ui/node/HitTestResult;)I +HSPLandroidx/compose/ui/node/HitTestResult;->access$setHitDepth$p(Landroidx/compose/ui/node/HitTestResult;I)V +HSPLandroidx/compose/ui/node/HitTestResult;->clear()V +HSPLandroidx/compose/ui/node/HitTestResult;->ensureContainerSize()V +HSPLandroidx/compose/ui/node/HitTestResult;->findBestHitDistance-ptXAw2c()J +HSPLandroidx/compose/ui/node/HitTestResult;->get(I)Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/HitTestResult;->get(I)Ljava/lang/Object; +HSPLandroidx/compose/ui/node/HitTestResult;->getSize()I +HSPLandroidx/compose/ui/node/HitTestResult;->hasHit()Z +HSPLandroidx/compose/ui/node/HitTestResult;->hit(Landroidx/compose/ui/Modifier$Node;ZLkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/node/HitTestResult;->hitInMinimumTouchTarget(Landroidx/compose/ui/Modifier$Node;FZLkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/node/HitTestResult;->isEmpty()Z +HSPLandroidx/compose/ui/node/HitTestResult;->resizeToHitDepth()V +HSPLandroidx/compose/ui/node/HitTestResult;->size()I +Landroidx/compose/ui/node/HitTestResultKt; +HSPLandroidx/compose/ui/node/HitTestResultKt;->DistanceAndInLayer(FZ)J +HSPLandroidx/compose/ui/node/HitTestResultKt;->access$DistanceAndInLayer(FZ)J +Landroidx/compose/ui/node/InnerNodeCoordinator; +HSPLandroidx/compose/ui/node/InnerNodeCoordinator;->()V +HSPLandroidx/compose/ui/node/InnerNodeCoordinator;->(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/InnerNodeCoordinator;->getTail()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/InnerNodeCoordinator;->getTail()Landroidx/compose/ui/node/TailModifierNode; +HSPLandroidx/compose/ui/node/InnerNodeCoordinator;->hitTestChild-YqVAtuI(Landroidx/compose/ui/node/NodeCoordinator$HitTestSource;JLandroidx/compose/ui/node/HitTestResult;ZZ)V +HSPLandroidx/compose/ui/node/InnerNodeCoordinator;->maxIntrinsicWidth(I)I +HSPLandroidx/compose/ui/node/InnerNodeCoordinator;->measure-BRTryo0(J)Landroidx/compose/ui/layout/Placeable; +HSPLandroidx/compose/ui/node/InnerNodeCoordinator;->performDraw(Landroidx/compose/ui/graphics/Canvas;)V +HSPLandroidx/compose/ui/node/InnerNodeCoordinator;->placeAt-f8xVGno(JFLkotlin/jvm/functions/Function1;)V +Landroidx/compose/ui/node/InnerNodeCoordinator$Companion; +HSPLandroidx/compose/ui/node/InnerNodeCoordinator$Companion;->()V +HSPLandroidx/compose/ui/node/InnerNodeCoordinator$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/node/IntStack; +HSPLandroidx/compose/ui/node/IntStack;->(I)V +HSPLandroidx/compose/ui/node/IntStack;->compareDiagonal(II)Z +HSPLandroidx/compose/ui/node/IntStack;->get(I)I +HSPLandroidx/compose/ui/node/IntStack;->getSize()I +HSPLandroidx/compose/ui/node/IntStack;->isNotEmpty()Z +HSPLandroidx/compose/ui/node/IntStack;->partition(III)I +HSPLandroidx/compose/ui/node/IntStack;->pop()I +HSPLandroidx/compose/ui/node/IntStack;->pushDiagonal(III)V +HSPLandroidx/compose/ui/node/IntStack;->pushRange(IIII)V +HSPLandroidx/compose/ui/node/IntStack;->quickSort(III)V +HSPLandroidx/compose/ui/node/IntStack;->sortDiagonals()V +HSPLandroidx/compose/ui/node/IntStack;->swapDiagonal(II)V +Landroidx/compose/ui/node/InteroperableComposeUiNode; +Landroidx/compose/ui/node/IntrinsicsPolicy; +HSPLandroidx/compose/ui/node/IntrinsicsPolicy;->()V +HSPLandroidx/compose/ui/node/IntrinsicsPolicy;->(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/IntrinsicsPolicy;->getMeasurePolicyState()Landroidx/compose/ui/layout/MeasurePolicy; +HSPLandroidx/compose/ui/node/IntrinsicsPolicy;->maxIntrinsicWidth(I)I +HSPLandroidx/compose/ui/node/IntrinsicsPolicy;->measurePolicyFromState()Landroidx/compose/ui/layout/MeasurePolicy; +HSPLandroidx/compose/ui/node/IntrinsicsPolicy;->setMeasurePolicyState(Landroidx/compose/ui/layout/MeasurePolicy;)V +HSPLandroidx/compose/ui/node/IntrinsicsPolicy;->updateFrom(Landroidx/compose/ui/layout/MeasurePolicy;)V +Landroidx/compose/ui/node/IntrinsicsPolicy$Companion; +HSPLandroidx/compose/ui/node/IntrinsicsPolicy$Companion;->()V +HSPLandroidx/compose/ui/node/IntrinsicsPolicy$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/node/LayerPositionalProperties; +HSPLandroidx/compose/ui/node/LayerPositionalProperties;->()V +HSPLandroidx/compose/ui/node/LayerPositionalProperties;->copyFrom(Landroidx/compose/ui/graphics/GraphicsLayerScope;)V +HSPLandroidx/compose/ui/node/LayerPositionalProperties;->copyFrom(Landroidx/compose/ui/node/LayerPositionalProperties;)V +HSPLandroidx/compose/ui/node/LayerPositionalProperties;->hasSameValuesAs(Landroidx/compose/ui/node/LayerPositionalProperties;)Z +Landroidx/compose/ui/node/LayoutAwareModifierNode; +HSPLandroidx/compose/ui/node/LayoutAwareModifierNode;->onRemeasured-ozmzZPI(J)V +Landroidx/compose/ui/node/LayoutModifierNode; +HSPLandroidx/compose/ui/node/LayoutModifierNode;->maxIntrinsicWidth(Landroidx/compose/ui/layout/IntrinsicMeasureScope;Landroidx/compose/ui/layout/IntrinsicMeasurable;I)I +Landroidx/compose/ui/node/LayoutModifierNode$maxIntrinsicWidth$1; +HSPLandroidx/compose/ui/node/LayoutModifierNode$maxIntrinsicWidth$1;->(Landroidx/compose/ui/node/LayoutModifierNode;)V +HSPLandroidx/compose/ui/node/LayoutModifierNode$maxIntrinsicWidth$1;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/ui/node/LayoutModifierNodeCoordinator; +HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator;->()V +HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator;->(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/node/LayoutModifierNode;)V +HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator;->getLayoutModifierNode()Landroidx/compose/ui/node/LayoutModifierNode; +HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator;->getTail()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator;->getWrappedNonNull()Landroidx/compose/ui/node/NodeCoordinator; +HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator;->maxIntrinsicWidth(I)I +HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator;->measure-BRTryo0(J)Landroidx/compose/ui/layout/Placeable; +HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator;->performDraw(Landroidx/compose/ui/graphics/Canvas;)V +HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator;->placeAt-f8xVGno(JFLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator;->setLayoutModifierNode$ui_release(Landroidx/compose/ui/node/LayoutModifierNode;)V +Landroidx/compose/ui/node/LayoutModifierNodeCoordinator$Companion; +HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator$Companion;->()V +HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/node/LayoutModifierNodeKt; +HSPLandroidx/compose/ui/node/LayoutModifierNodeKt;->invalidateLayer(Landroidx/compose/ui/node/LayoutModifierNode;)V +HSPLandroidx/compose/ui/node/LayoutModifierNodeKt;->invalidateMeasurement(Landroidx/compose/ui/node/LayoutModifierNode;)V +Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/node/LayoutNode;->$r8$lambda$DzqjNqe9pzqBZZ9IiiTtp-hu0n4(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/node/LayoutNode;)I +HSPLandroidx/compose/ui/node/LayoutNode;->()V +HSPLandroidx/compose/ui/node/LayoutNode;->(ZI)V +HSPLandroidx/compose/ui/node/LayoutNode;->(ZIILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/node/LayoutNode;->ZComparator$lambda$38(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/node/LayoutNode;)I +HSPLandroidx/compose/ui/node/LayoutNode;->access$getConstructor$cp()Lkotlin/jvm/functions/Function0; +HSPLandroidx/compose/ui/node/LayoutNode;->access$getZComparator$cp()Ljava/util/Comparator; +HSPLandroidx/compose/ui/node/LayoutNode;->access$setIgnoreRemeasureRequests$p(Landroidx/compose/ui/node/LayoutNode;Z)V +HSPLandroidx/compose/ui/node/LayoutNode;->attach$ui_release(Landroidx/compose/ui/node/Owner;)V +HSPLandroidx/compose/ui/node/LayoutNode;->clearSubtreeIntrinsicsUsage$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNode;->clearSubtreePlacementIntrinsicsUsage()V +HSPLandroidx/compose/ui/node/LayoutNode;->detach$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNode;->dispatchOnPositionedCallbacks$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNode;->draw$ui_release(Landroidx/compose/ui/graphics/Canvas;)V +HSPLandroidx/compose/ui/node/LayoutNode;->forceRemeasure()V +HSPLandroidx/compose/ui/node/LayoutNode;->getCanMultiMeasure$ui_release()Z +HSPLandroidx/compose/ui/node/LayoutNode;->getChildMeasurables$ui_release()Ljava/util/List; +HSPLandroidx/compose/ui/node/LayoutNode;->getChildren$ui_release()Ljava/util/List; +HSPLandroidx/compose/ui/node/LayoutNode;->getCollapsedSemantics$ui_release()Landroidx/compose/ui/semantics/SemanticsConfiguration; +HSPLandroidx/compose/ui/node/LayoutNode;->getCompositionLocalMap()Landroidx/compose/runtime/CompositionLocalMap; +HSPLandroidx/compose/ui/node/LayoutNode;->getCoordinates()Landroidx/compose/ui/layout/LayoutCoordinates; +HSPLandroidx/compose/ui/node/LayoutNode;->getDensity()Landroidx/compose/ui/unit/Density; +HSPLandroidx/compose/ui/node/LayoutNode;->getDepth$ui_release()I +HSPLandroidx/compose/ui/node/LayoutNode;->getFoldedChildren$ui_release()Ljava/util/List; +HSPLandroidx/compose/ui/node/LayoutNode;->getHasFixedInnerContentConstraints$ui_release()Z +HSPLandroidx/compose/ui/node/LayoutNode;->getHeight()I +HSPLandroidx/compose/ui/node/LayoutNode;->getInnerCoordinator$ui_release()Landroidx/compose/ui/node/NodeCoordinator; +HSPLandroidx/compose/ui/node/LayoutNode;->getInnerLayerCoordinator()Landroidx/compose/ui/node/NodeCoordinator; +HSPLandroidx/compose/ui/node/LayoutNode;->getIntrinsicsPolicy$ui_release()Landroidx/compose/ui/node/IntrinsicsPolicy; +HSPLandroidx/compose/ui/node/LayoutNode;->getIntrinsicsUsageByParent$ui_release()Landroidx/compose/ui/node/LayoutNode$UsageByParent; +HSPLandroidx/compose/ui/node/LayoutNode;->getLayoutDelegate$ui_release()Landroidx/compose/ui/node/LayoutNodeLayoutDelegate; +HSPLandroidx/compose/ui/node/LayoutNode;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/node/LayoutNode;->getLayoutPending$ui_release()Z +HSPLandroidx/compose/ui/node/LayoutNode;->getLayoutState$ui_release()Landroidx/compose/ui/node/LayoutNode$LayoutState; +HSPLandroidx/compose/ui/node/LayoutNode;->getLookaheadLayoutPending$ui_release()Z +HSPLandroidx/compose/ui/node/LayoutNode;->getLookaheadMeasurePending$ui_release()Z +HSPLandroidx/compose/ui/node/LayoutNode;->getLookaheadPassDelegate$ui_release()Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$LookaheadPassDelegate; +HSPLandroidx/compose/ui/node/LayoutNode;->getLookaheadRoot$ui_release()Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/node/LayoutNode;->getMDrawScope$ui_release()Landroidx/compose/ui/node/LayoutNodeDrawScope; +HSPLandroidx/compose/ui/node/LayoutNode;->getMeasurePassDelegate$ui_release()Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate; +HSPLandroidx/compose/ui/node/LayoutNode;->getMeasurePending$ui_release()Z +HSPLandroidx/compose/ui/node/LayoutNode;->getMeasurePolicy()Landroidx/compose/ui/layout/MeasurePolicy; +HSPLandroidx/compose/ui/node/LayoutNode;->getMeasuredByParent$ui_release()Landroidx/compose/ui/node/LayoutNode$UsageByParent; +HSPLandroidx/compose/ui/node/LayoutNode;->getNeedsOnPositionedDispatch$ui_release()Z +HSPLandroidx/compose/ui/node/LayoutNode;->getNodes$ui_release()Landroidx/compose/ui/node/NodeChain; +HSPLandroidx/compose/ui/node/LayoutNode;->getOuterCoordinator$ui_release()Landroidx/compose/ui/node/NodeCoordinator; +HSPLandroidx/compose/ui/node/LayoutNode;->getOwner$ui_release()Landroidx/compose/ui/node/Owner; +HSPLandroidx/compose/ui/node/LayoutNode;->getParent$ui_release()Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/node/LayoutNode;->getPlaceOrder$ui_release()I +HSPLandroidx/compose/ui/node/LayoutNode;->getSemanticsId()I +HSPLandroidx/compose/ui/node/LayoutNode;->getSubcompositionsState$ui_release()Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState; +HSPLandroidx/compose/ui/node/LayoutNode;->getViewConfiguration()Landroidx/compose/ui/platform/ViewConfiguration; +HSPLandroidx/compose/ui/node/LayoutNode;->getWidth()I +HSPLandroidx/compose/ui/node/LayoutNode;->getZIndex()F +HSPLandroidx/compose/ui/node/LayoutNode;->getZSortedChildren()Landroidx/compose/runtime/collection/MutableVector; +HSPLandroidx/compose/ui/node/LayoutNode;->get_children$ui_release()Landroidx/compose/runtime/collection/MutableVector; +HSPLandroidx/compose/ui/node/LayoutNode;->hitTest-M_7yMNQ$ui_release$default(Landroidx/compose/ui/node/LayoutNode;JLandroidx/compose/ui/node/HitTestResult;ZZILjava/lang/Object;)V +HSPLandroidx/compose/ui/node/LayoutNode;->hitTest-M_7yMNQ$ui_release(JLandroidx/compose/ui/node/HitTestResult;ZZ)V +HSPLandroidx/compose/ui/node/LayoutNode;->insertAt$ui_release(ILandroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/LayoutNode;->invalidateFocusOnAttach()V +HSPLandroidx/compose/ui/node/LayoutNode;->invalidateFocusOnDetach()V +HSPLandroidx/compose/ui/node/LayoutNode;->invalidateLayer$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNode;->invalidateLayers$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNode;->invalidateMeasurements$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNode;->invalidateParentData$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNode;->invalidateSemantics$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNode;->invalidateUnfoldedVirtualChildren()V +HSPLandroidx/compose/ui/node/LayoutNode;->isAttached()Z +HSPLandroidx/compose/ui/node/LayoutNode;->isPlaced()Z +HSPLandroidx/compose/ui/node/LayoutNode;->isValidOwnerScope()Z +HSPLandroidx/compose/ui/node/LayoutNode;->markLayoutPending$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNode;->markMeasurePending$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNode;->onChildRemoved(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/LayoutNode;->onDeactivate()V +HSPLandroidx/compose/ui/node/LayoutNode;->onDensityOrLayoutDirectionChanged()V +HSPLandroidx/compose/ui/node/LayoutNode;->onRelease()V +HSPLandroidx/compose/ui/node/LayoutNode;->onZSortedChildrenInvalidated$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNode;->place$ui_release(II)V +HSPLandroidx/compose/ui/node/LayoutNode;->recreateUnfoldedChildrenIfDirty()V +HSPLandroidx/compose/ui/node/LayoutNode;->remeasure-_Sx5XlM$ui_release$default(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/unit/Constraints;ILjava/lang/Object;)Z +HSPLandroidx/compose/ui/node/LayoutNode;->remeasure-_Sx5XlM$ui_release(Landroidx/compose/ui/unit/Constraints;)Z +HSPLandroidx/compose/ui/node/LayoutNode;->removeAt$ui_release(II)V +HSPLandroidx/compose/ui/node/LayoutNode;->replace$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNode;->requestRelayout$ui_release$default(Landroidx/compose/ui/node/LayoutNode;ZILjava/lang/Object;)V +HSPLandroidx/compose/ui/node/LayoutNode;->requestRelayout$ui_release(Z)V +HSPLandroidx/compose/ui/node/LayoutNode;->requestRemeasure$ui_release$default(Landroidx/compose/ui/node/LayoutNode;ZZILjava/lang/Object;)V +HSPLandroidx/compose/ui/node/LayoutNode;->requestRemeasure$ui_release(ZZ)V +HSPLandroidx/compose/ui/node/LayoutNode;->resetModifierState()V +HSPLandroidx/compose/ui/node/LayoutNode;->resetSubtreeIntrinsicsUsage$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNode;->setCanMultiMeasure$ui_release(Z)V +HSPLandroidx/compose/ui/node/LayoutNode;->setCompositeKeyHash(I)V +HSPLandroidx/compose/ui/node/LayoutNode;->setCompositionLocalMap(Landroidx/compose/runtime/CompositionLocalMap;)V +HSPLandroidx/compose/ui/node/LayoutNode;->setDensity(Landroidx/compose/ui/unit/Density;)V +HSPLandroidx/compose/ui/node/LayoutNode;->setInnerLayerCoordinatorIsDirty$ui_release(Z)V +HSPLandroidx/compose/ui/node/LayoutNode;->setIntrinsicsUsageByParent$ui_release(Landroidx/compose/ui/node/LayoutNode$UsageByParent;)V +HSPLandroidx/compose/ui/node/LayoutNode;->setLayoutDirection(Landroidx/compose/ui/unit/LayoutDirection;)V +HSPLandroidx/compose/ui/node/LayoutNode;->setLookaheadRoot(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/LayoutNode;->setMeasurePolicy(Landroidx/compose/ui/layout/MeasurePolicy;)V +HSPLandroidx/compose/ui/node/LayoutNode;->setModifier(Landroidx/compose/ui/Modifier;)V +HSPLandroidx/compose/ui/node/LayoutNode;->setNeedsOnPositionedDispatch$ui_release(Z)V +HSPLandroidx/compose/ui/node/LayoutNode;->setSubcompositionsState$ui_release(Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;)V +HSPLandroidx/compose/ui/node/LayoutNode;->setViewConfiguration(Landroidx/compose/ui/platform/ViewConfiguration;)V +HSPLandroidx/compose/ui/node/LayoutNode;->updateChildrenIfDirty$ui_release()V +Landroidx/compose/ui/node/LayoutNode$$ExternalSyntheticLambda0; +HSPLandroidx/compose/ui/node/LayoutNode$$ExternalSyntheticLambda0;->()V +HSPLandroidx/compose/ui/node/LayoutNode$$ExternalSyntheticLambda0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +Landroidx/compose/ui/node/LayoutNode$Companion; +HSPLandroidx/compose/ui/node/LayoutNode$Companion;->()V +HSPLandroidx/compose/ui/node/LayoutNode$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/node/LayoutNode$Companion;->getConstructor$ui_release()Lkotlin/jvm/functions/Function0; +HSPLandroidx/compose/ui/node/LayoutNode$Companion;->getZComparator$ui_release()Ljava/util/Comparator; +Landroidx/compose/ui/node/LayoutNode$Companion$Constructor$1; +HSPLandroidx/compose/ui/node/LayoutNode$Companion$Constructor$1;->()V +HSPLandroidx/compose/ui/node/LayoutNode$Companion$Constructor$1;->()V +HSPLandroidx/compose/ui/node/LayoutNode$Companion$Constructor$1;->invoke()Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/node/LayoutNode$Companion$Constructor$1;->invoke()Ljava/lang/Object; +Landroidx/compose/ui/node/LayoutNode$Companion$DummyViewConfiguration$1; +HSPLandroidx/compose/ui/node/LayoutNode$Companion$DummyViewConfiguration$1;->()V +Landroidx/compose/ui/node/LayoutNode$Companion$ErrorMeasurePolicy$1; +HSPLandroidx/compose/ui/node/LayoutNode$Companion$ErrorMeasurePolicy$1;->()V +Landroidx/compose/ui/node/LayoutNode$LayoutState; +HSPLandroidx/compose/ui/node/LayoutNode$LayoutState;->$values()[Landroidx/compose/ui/node/LayoutNode$LayoutState; +HSPLandroidx/compose/ui/node/LayoutNode$LayoutState;->()V +HSPLandroidx/compose/ui/node/LayoutNode$LayoutState;->(Ljava/lang/String;I)V +HSPLandroidx/compose/ui/node/LayoutNode$LayoutState;->values()[Landroidx/compose/ui/node/LayoutNode$LayoutState; +Landroidx/compose/ui/node/LayoutNode$NoIntrinsicsMeasurePolicy; +HSPLandroidx/compose/ui/node/LayoutNode$NoIntrinsicsMeasurePolicy;->(Ljava/lang/String;)V +Landroidx/compose/ui/node/LayoutNode$UsageByParent; +HSPLandroidx/compose/ui/node/LayoutNode$UsageByParent;->$values()[Landroidx/compose/ui/node/LayoutNode$UsageByParent; +HSPLandroidx/compose/ui/node/LayoutNode$UsageByParent;->()V +HSPLandroidx/compose/ui/node/LayoutNode$UsageByParent;->(Ljava/lang/String;I)V +HSPLandroidx/compose/ui/node/LayoutNode$UsageByParent;->values()[Landroidx/compose/ui/node/LayoutNode$UsageByParent; +Landroidx/compose/ui/node/LayoutNode$_foldedChildren$1; +HSPLandroidx/compose/ui/node/LayoutNode$_foldedChildren$1;->(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/LayoutNode$_foldedChildren$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/node/LayoutNode$_foldedChildren$1;->invoke()V +Landroidx/compose/ui/node/LayoutNode$collapsedSemantics$1; +HSPLandroidx/compose/ui/node/LayoutNode$collapsedSemantics$1;->(Landroidx/compose/ui/node/LayoutNode;Lkotlin/jvm/internal/Ref$ObjectRef;)V +HSPLandroidx/compose/ui/node/LayoutNode$collapsedSemantics$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/node/LayoutNode$collapsedSemantics$1;->invoke()V +Landroidx/compose/ui/node/LayoutNodeAlignmentLines; +HSPLandroidx/compose/ui/node/LayoutNodeAlignmentLines;->(Landroidx/compose/ui/node/AlignmentLinesOwner;)V +Landroidx/compose/ui/node/LayoutNodeDrawScope; +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->(Landroidx/compose/ui/graphics/drawscope/CanvasDrawScope;)V +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->(Landroidx/compose/ui/graphics/drawscope/CanvasDrawScope;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->draw-x_KDEd0$ui_release(Landroidx/compose/ui/graphics/Canvas;JLandroidx/compose/ui/node/NodeCoordinator;Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->drawArc-yD3GUKo(JFFZJJFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;I)V +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->drawContent()V +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->drawDirect-x_KDEd0$ui_release(Landroidx/compose/ui/graphics/Canvas;JLandroidx/compose/ui/node/NodeCoordinator;Landroidx/compose/ui/node/DrawModifierNode;)V +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->drawImage-AZ2fEMs(Landroidx/compose/ui/graphics/ImageBitmap;JJJJFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;II)V +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->drawLine-1RTmtNc(Landroidx/compose/ui/graphics/Brush;JJFILandroidx/compose/ui/graphics/PathEffect;FLandroidx/compose/ui/graphics/ColorFilter;I)V +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->drawPath-LG529CI(Landroidx/compose/ui/graphics/Path;JFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;I)V +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->drawRect-n-J9OG0(JJJFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;I)V +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->drawRoundRect-ZuiqVtQ(Landroidx/compose/ui/graphics/Brush;JJJFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;I)V +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->drawRoundRect-u-Aw5IA(JJJJLandroidx/compose/ui/graphics/drawscope/DrawStyle;FLandroidx/compose/ui/graphics/ColorFilter;I)V +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->getDrawContext()Landroidx/compose/ui/graphics/drawscope/DrawContext; +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->getSize-NH-jbRc()J +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->performDraw(Landroidx/compose/ui/node/DrawModifierNode;Landroidx/compose/ui/graphics/Canvas;)V +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->roundToPx-0680j_4(F)I +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->toPx-0680j_4(F)F +Landroidx/compose/ui/node/LayoutNodeDrawScopeKt; +HSPLandroidx/compose/ui/node/LayoutNodeDrawScopeKt;->access$nextDrawNode(Landroidx/compose/ui/node/DelegatableNode;)Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/LayoutNodeDrawScopeKt;->nextDrawNode(Landroidx/compose/ui/node/DelegatableNode;)Landroidx/compose/ui/Modifier$Node; +Landroidx/compose/ui/node/LayoutNodeKt; +HSPLandroidx/compose/ui/node/LayoutNodeKt;->()V +HSPLandroidx/compose/ui/node/LayoutNodeKt;->access$getDefaultDensity$p()Landroidx/compose/ui/unit/Density; +HSPLandroidx/compose/ui/node/LayoutNodeKt;->requireOwner(Landroidx/compose/ui/node/LayoutNode;)Landroidx/compose/ui/node/Owner; +Landroidx/compose/ui/node/LayoutNodeLayoutDelegate; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->access$getLayoutNode$p(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;)Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->access$getLayoutPendingForAlignment$p(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;)Z +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->access$getNextChildPlaceOrder$p(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;)I +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->access$isOutMostLookaheadRoot(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;Landroidx/compose/ui/node/LayoutNode;)Z +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->access$performMeasure-BRTryo0(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;J)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->access$setLayoutPending$p(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;Z)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->access$setLayoutPendingForAlignment$p(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;Z)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->access$setLayoutState$p(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;Landroidx/compose/ui/node/LayoutNode$LayoutState;)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->access$setNextChildPlaceOrder$p(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;I)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getAlignmentLinesOwner$ui_release()Landroidx/compose/ui/node/AlignmentLinesOwner; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getChildrenAccessingCoordinatesDuringPlacement()I +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getCoordinatesAccessedDuringModifierPlacement()Z +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getCoordinatesAccessedDuringPlacement()Z +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getHeight$ui_release()I +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getLastConstraints-DWUhwKw()Landroidx/compose/ui/unit/Constraints; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getLayoutPending$ui_release()Z +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getLayoutState$ui_release()Landroidx/compose/ui/node/LayoutNode$LayoutState; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getLookaheadLayoutPending$ui_release()Z +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getLookaheadMeasurePending$ui_release()Z +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getLookaheadPassDelegate$ui_release()Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$LookaheadPassDelegate; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getMeasurePassDelegate$ui_release()Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getMeasurePending$ui_release()Z +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getOuterCoordinator()Landroidx/compose/ui/node/NodeCoordinator; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getWidth$ui_release()I +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->invalidateParentData()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->isOutMostLookaheadRoot(Landroidx/compose/ui/node/LayoutNode;)Z +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->markChildrenDirty()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->markLayoutPending$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->markMeasurePending$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->onCoordinatesUsed()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->performMeasure-BRTryo0(J)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->resetAlignmentLines()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->setCoordinatesAccessedDuringModifierPlacement(Z)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->setCoordinatesAccessedDuringPlacement(Z)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->updateParentData()V +Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$LookaheadPassDelegate; +Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->access$checkChildrenPlaceOrderForUpdates(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->access$clearPlaceOrder(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->checkChildrenPlaceOrderForUpdates()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->clearPlaceOrder()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->forEachChildAlignmentLinesOwner(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->getAlignmentLines()Landroidx/compose/ui/node/AlignmentLines; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->getChildDelegates$ui_release()Ljava/util/List; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->getInnerCoordinator()Landroidx/compose/ui/node/NodeCoordinator; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->getLastConstraints-DWUhwKw()Landroidx/compose/ui/unit/Constraints; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->getMeasuredByParent$ui_release()Landroidx/compose/ui/node/LayoutNode$UsageByParent; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->getMeasuredWidth()I +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->getParentAlignmentLinesOwner()Landroidx/compose/ui/node/AlignmentLinesOwner; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->getParentData()Ljava/lang/Object; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->getPlaceOrder$ui_release()I +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->getZIndex$ui_release()F +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->invalidateIntrinsicsParent(Z)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->invalidateParentData()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->isPlaced()Z +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->layoutChildren()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->markNodeAndSubtreeAsPlaced()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->markSubtreeAsNotPlaced()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->maxIntrinsicWidth(I)I +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->measure-BRTryo0(J)Landroidx/compose/ui/layout/Placeable; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->notifyChildrenUsingCoordinatesWhilePlacing()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->onBeforeLayoutChildren()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->onIntrinsicsQueried()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->onNodeDetached()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->onNodePlaced$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->placeAt-f8xVGno(JFLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->placeOuterCoordinator-f8xVGno(JFLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->remeasure-BRTryo0(J)Z +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->replace()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->setChildDelegatesDirty$ui_release(Z)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->setMeasuredByParent$ui_release(Landroidx/compose/ui/node/LayoutNode$UsageByParent;)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->setPlaced$ui_release(Z)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->trackMeasurementByParent(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->updateParentData()Z +Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$WhenMappings; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$WhenMappings;->()V +Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1;->(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1;->invoke()V +Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1$1; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1$1;->()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1$1;->()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1$1;->invoke(Landroidx/compose/ui/node/AlignmentLinesOwner;)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1$2; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1$2;->()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1$2;->()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1$2;->invoke(Landroidx/compose/ui/node/AlignmentLinesOwner;)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$placeOuterCoordinator$1; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$placeOuterCoordinator$1;->(Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;JF)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$placeOuterCoordinator$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$placeOuterCoordinator$1;->invoke()V +Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$remeasure$1; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$remeasure$1;->()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$remeasure$1;->()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$remeasure$1;->invoke(Landroidx/compose/ui/node/AlignmentLinesOwner;)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$remeasure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$performMeasure$2; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$performMeasure$2;->(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;J)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$performMeasure$2;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$performMeasure$2;->invoke()V +Landroidx/compose/ui/node/LayoutTreeConsistencyChecker; +Landroidx/compose/ui/node/LookaheadCapablePlaceable; +HSPLandroidx/compose/ui/node/LookaheadCapablePlaceable;->()V +HSPLandroidx/compose/ui/node/LookaheadCapablePlaceable;->invalidateAlignmentLinesFromPositionChange(Landroidx/compose/ui/node/NodeCoordinator;)V +HSPLandroidx/compose/ui/node/LookaheadCapablePlaceable;->isPlacingForAlignment$ui_release()Z +HSPLandroidx/compose/ui/node/LookaheadCapablePlaceable;->isShallowPlacing$ui_release()Z +HSPLandroidx/compose/ui/node/LookaheadCapablePlaceable;->setPlacingForAlignment$ui_release(Z)V +Landroidx/compose/ui/node/LookaheadDelegate; +Landroidx/compose/ui/node/MeasureAndLayoutDelegate; +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->access$getRoot$p(Landroidx/compose/ui/node/MeasureAndLayoutDelegate;)Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->access$remeasureAndRelayoutIfNeeded(Landroidx/compose/ui/node/MeasureAndLayoutDelegate;Landroidx/compose/ui/node/LayoutNode;Z)Z +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->callOnLayoutCompletedListeners()V +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->dispatchOnPositionedCallbacks$default(Landroidx/compose/ui/node/MeasureAndLayoutDelegate;ZILjava/lang/Object;)V +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->dispatchOnPositionedCallbacks(Z)V +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->doLookaheadRemeasure-sdFAvZA(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/unit/Constraints;)Z +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->doRemeasure-sdFAvZA(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/unit/Constraints;)Z +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->forceMeasureTheSubtree(Landroidx/compose/ui/node/LayoutNode;Z)V +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->getCanAffectParent(Landroidx/compose/ui/node/LayoutNode;)Z +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->getHasPendingMeasureOrLayout()Z +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->getHasPendingOnPositionedCallbacks()Z +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->getMeasureAffectsParent(Landroidx/compose/ui/node/LayoutNode;)Z +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->measureAndLayout(Lkotlin/jvm/functions/Function0;)Z +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->measureAndLayout-0kLqBqw(Landroidx/compose/ui/node/LayoutNode;J)V +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->measureOnly()V +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->onNodeDetached(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->recurseRemeasure(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->remeasureAndRelayoutIfNeeded$default(Landroidx/compose/ui/node/MeasureAndLayoutDelegate;Landroidx/compose/ui/node/LayoutNode;ZILjava/lang/Object;)Z +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->remeasureAndRelayoutIfNeeded(Landroidx/compose/ui/node/LayoutNode;Z)Z +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->remeasureOnly(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->requestOnPositionedCallback(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->requestRelayout(Landroidx/compose/ui/node/LayoutNode;Z)Z +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->requestRemeasure$default(Landroidx/compose/ui/node/MeasureAndLayoutDelegate;Landroidx/compose/ui/node/LayoutNode;ZILjava/lang/Object;)Z +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->requestRemeasure(Landroidx/compose/ui/node/LayoutNode;Z)Z +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->updateRootConstraints-BRTryo0(J)V +Landroidx/compose/ui/node/MeasureAndLayoutDelegate$PostponedRequest; +Landroidx/compose/ui/node/MeasureAndLayoutDelegate$WhenMappings; +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate$WhenMappings;->()V +Landroidx/compose/ui/node/MeasureAndLayoutDelegate$forceMeasureTheSubtree$pending$1; +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate$forceMeasureTheSubtree$pending$1;->(Z)V +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate$forceMeasureTheSubtree$pending$1;->invoke(Landroidx/compose/ui/node/LayoutNode;)Ljava/lang/Boolean; +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate$forceMeasureTheSubtree$pending$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/MeasureScopeWithLayoutNode; +Landroidx/compose/ui/node/ModifierNodeElement; +HSPLandroidx/compose/ui/node/ModifierNodeElement;->()V +HSPLandroidx/compose/ui/node/ModifierNodeElement;->()V +Landroidx/compose/ui/node/MutableVectorWithMutationTracking; +HSPLandroidx/compose/ui/node/MutableVectorWithMutationTracking;->(Landroidx/compose/runtime/collection/MutableVector;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/node/MutableVectorWithMutationTracking;->add(ILjava/lang/Object;)V +HSPLandroidx/compose/ui/node/MutableVectorWithMutationTracking;->asList()Ljava/util/List; +HSPLandroidx/compose/ui/node/MutableVectorWithMutationTracking;->getVector()Landroidx/compose/runtime/collection/MutableVector; +HSPLandroidx/compose/ui/node/MutableVectorWithMutationTracking;->removeAt(I)Ljava/lang/Object; +Landroidx/compose/ui/node/MyersDiffKt; +HSPLandroidx/compose/ui/node/MyersDiffKt;->access$swap([III)V +HSPLandroidx/compose/ui/node/MyersDiffKt;->applyDiff(Landroidx/compose/ui/node/IntStack;Landroidx/compose/ui/node/DiffCallback;)V +HSPLandroidx/compose/ui/node/MyersDiffKt;->backward-4l5_RBY(IIIILandroidx/compose/ui/node/DiffCallback;[I[II[I)Z +HSPLandroidx/compose/ui/node/MyersDiffKt;->calculateDiff(IILandroidx/compose/ui/node/DiffCallback;)Landroidx/compose/ui/node/IntStack; +HSPLandroidx/compose/ui/node/MyersDiffKt;->executeDiff(IILandroidx/compose/ui/node/DiffCallback;)V +HSPLandroidx/compose/ui/node/MyersDiffKt;->fillSnake(IIIIZ[I)V +HSPLandroidx/compose/ui/node/MyersDiffKt;->forward-4l5_RBY(IIIILandroidx/compose/ui/node/DiffCallback;[I[II[I)Z +HSPLandroidx/compose/ui/node/MyersDiffKt;->midPoint-q5eDKzI(IIIILandroidx/compose/ui/node/DiffCallback;[I[I[I)Z +HSPLandroidx/compose/ui/node/MyersDiffKt;->swap([III)V +Landroidx/compose/ui/node/NodeChain; +HSPLandroidx/compose/ui/node/NodeChain;->(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/NodeChain;->access$createAndInsertNodeAsChild(Landroidx/compose/ui/node/NodeChain;Landroidx/compose/ui/Modifier$Element;Landroidx/compose/ui/Modifier$Node;)Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/NodeChain;->access$detachAndRemoveNode(Landroidx/compose/ui/node/NodeChain;Landroidx/compose/ui/Modifier$Node;)Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/NodeChain;->access$getAggregateChildKindSet(Landroidx/compose/ui/node/NodeChain;)I +HSPLandroidx/compose/ui/node/NodeChain;->access$getLogger$p(Landroidx/compose/ui/node/NodeChain;)Landroidx/compose/ui/node/NodeChain$Logger; +PLandroidx/compose/ui/node/NodeChain;->access$propagateCoordinator(Landroidx/compose/ui/node/NodeChain;Landroidx/compose/ui/Modifier$Node;Landroidx/compose/ui/node/NodeCoordinator;)V +HSPLandroidx/compose/ui/node/NodeChain;->access$updateNode(Landroidx/compose/ui/node/NodeChain;Landroidx/compose/ui/Modifier$Element;Landroidx/compose/ui/Modifier$Element;Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/node/NodeChain;->createAndInsertNodeAsChild(Landroidx/compose/ui/Modifier$Element;Landroidx/compose/ui/Modifier$Node;)Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/NodeChain;->detachAndRemoveNode(Landroidx/compose/ui/Modifier$Node;)Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/NodeChain;->getAggregateChildKindSet()I +HSPLandroidx/compose/ui/node/NodeChain;->getDiffer(Landroidx/compose/ui/Modifier$Node;ILandroidx/compose/runtime/collection/MutableVector;Landroidx/compose/runtime/collection/MutableVector;Z)Landroidx/compose/ui/node/NodeChain$Differ; +HSPLandroidx/compose/ui/node/NodeChain;->getHead$ui_release()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/NodeChain;->getInnerCoordinator$ui_release()Landroidx/compose/ui/node/InnerNodeCoordinator; +HSPLandroidx/compose/ui/node/NodeChain;->getOuterCoordinator$ui_release()Landroidx/compose/ui/node/NodeCoordinator; +HSPLandroidx/compose/ui/node/NodeChain;->getTail$ui_release()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/NodeChain;->has$ui_release(I)Z +HSPLandroidx/compose/ui/node/NodeChain;->has-H91voCI$ui_release(I)Z +HSPLandroidx/compose/ui/node/NodeChain;->insertChild(Landroidx/compose/ui/Modifier$Node;Landroidx/compose/ui/Modifier$Node;)Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/NodeChain;->markAsAttached()V +HSPLandroidx/compose/ui/node/NodeChain;->markAsDetached$ui_release()V +HSPLandroidx/compose/ui/node/NodeChain;->padChain()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/NodeChain;->propagateCoordinator(Landroidx/compose/ui/Modifier$Node;Landroidx/compose/ui/node/NodeCoordinator;)V +HSPLandroidx/compose/ui/node/NodeChain;->removeNode(Landroidx/compose/ui/Modifier$Node;)Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/NodeChain;->resetState$ui_release()V +HSPLandroidx/compose/ui/node/NodeChain;->runAttachLifecycle()V +HSPLandroidx/compose/ui/node/NodeChain;->runDetachLifecycle$ui_release()V +HSPLandroidx/compose/ui/node/NodeChain;->structuralUpdate(ILandroidx/compose/runtime/collection/MutableVector;Landroidx/compose/runtime/collection/MutableVector;Landroidx/compose/ui/Modifier$Node;Z)V +HSPLandroidx/compose/ui/node/NodeChain;->syncAggregateChildKindSet()V +HSPLandroidx/compose/ui/node/NodeChain;->syncCoordinators()V +HSPLandroidx/compose/ui/node/NodeChain;->trimChain(Landroidx/compose/ui/Modifier$Node;)Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/NodeChain;->updateFrom$ui_release(Landroidx/compose/ui/Modifier;)V +HSPLandroidx/compose/ui/node/NodeChain;->updateNode(Landroidx/compose/ui/Modifier$Element;Landroidx/compose/ui/Modifier$Element;Landroidx/compose/ui/Modifier$Node;)V +Landroidx/compose/ui/node/NodeChain$Differ; +HSPLandroidx/compose/ui/node/NodeChain$Differ;->(Landroidx/compose/ui/node/NodeChain;Landroidx/compose/ui/Modifier$Node;ILandroidx/compose/runtime/collection/MutableVector;Landroidx/compose/runtime/collection/MutableVector;Z)V +HSPLandroidx/compose/ui/node/NodeChain$Differ;->areItemsTheSame(II)Z +HSPLandroidx/compose/ui/node/NodeChain$Differ;->insert(I)V +HSPLandroidx/compose/ui/node/NodeChain$Differ;->remove(II)V +HSPLandroidx/compose/ui/node/NodeChain$Differ;->same(II)V +HSPLandroidx/compose/ui/node/NodeChain$Differ;->setAfter(Landroidx/compose/runtime/collection/MutableVector;)V +HSPLandroidx/compose/ui/node/NodeChain$Differ;->setBefore(Landroidx/compose/runtime/collection/MutableVector;)V +HSPLandroidx/compose/ui/node/NodeChain$Differ;->setNode(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/node/NodeChain$Differ;->setOffset(I)V +HSPLandroidx/compose/ui/node/NodeChain$Differ;->setShouldAttachOnInsert(Z)V +Landroidx/compose/ui/node/NodeChain$Logger; +Landroidx/compose/ui/node/NodeChainKt; +HSPLandroidx/compose/ui/node/NodeChainKt;->()V +HSPLandroidx/compose/ui/node/NodeChainKt;->access$fillVector(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/collection/MutableVector;)Landroidx/compose/runtime/collection/MutableVector; +HSPLandroidx/compose/ui/node/NodeChainKt;->access$getSentinelHead$p()Landroidx/compose/ui/node/NodeChainKt$SentinelHead$1; +HSPLandroidx/compose/ui/node/NodeChainKt;->access$updateUnsafe(Landroidx/compose/ui/node/ModifierNodeElement;Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/node/NodeChainKt;->actionForModifiers(Landroidx/compose/ui/Modifier$Element;Landroidx/compose/ui/Modifier$Element;)I +HSPLandroidx/compose/ui/node/NodeChainKt;->fillVector(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/collection/MutableVector;)Landroidx/compose/runtime/collection/MutableVector; +HSPLandroidx/compose/ui/node/NodeChainKt;->updateUnsafe(Landroidx/compose/ui/node/ModifierNodeElement;Landroidx/compose/ui/Modifier$Node;)V +Landroidx/compose/ui/node/NodeChainKt$SentinelHead$1; +HSPLandroidx/compose/ui/node/NodeChainKt$SentinelHead$1;->()V +Landroidx/compose/ui/node/NodeChainKt$fillVector$1; +HSPLandroidx/compose/ui/node/NodeChainKt$fillVector$1;->(Landroidx/compose/runtime/collection/MutableVector;)V +Landroidx/compose/ui/node/NodeCoordinator; +HSPLandroidx/compose/ui/node/NodeCoordinator;->()V +HSPLandroidx/compose/ui/node/NodeCoordinator;->(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->access$drawContainedDrawModifiers(Landroidx/compose/ui/node/NodeCoordinator;Landroidx/compose/ui/graphics/Canvas;)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->access$getGraphicsLayerScope$cp()Landroidx/compose/ui/graphics/ReusableGraphicsLayerScope; +HSPLandroidx/compose/ui/node/NodeCoordinator;->access$getLayerPositionalProperties$p(Landroidx/compose/ui/node/NodeCoordinator;)Landroidx/compose/ui/node/LayerPositionalProperties; +HSPLandroidx/compose/ui/node/NodeCoordinator;->access$getPointerInputSource$cp()Landroidx/compose/ui/node/NodeCoordinator$HitTestSource; +HSPLandroidx/compose/ui/node/NodeCoordinator;->access$getTmpLayerPositionalProperties$cp()Landroidx/compose/ui/node/LayerPositionalProperties; +HSPLandroidx/compose/ui/node/NodeCoordinator;->access$headNode(Landroidx/compose/ui/node/NodeCoordinator;Z)Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/NodeCoordinator;->access$hit-1hIXUjU(Landroidx/compose/ui/node/NodeCoordinator;Landroidx/compose/ui/Modifier$Node;Landroidx/compose/ui/node/NodeCoordinator$HitTestSource;JLandroidx/compose/ui/node/HitTestResult;ZZ)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->access$setMeasurementConstraints-BRTryo0(Landroidx/compose/ui/node/NodeCoordinator;J)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->ancestorToLocal(Landroidx/compose/ui/node/NodeCoordinator;Landroidx/compose/ui/geometry/MutableRect;Z)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->ancestorToLocal-R5De75A(Landroidx/compose/ui/node/NodeCoordinator;J)J +HSPLandroidx/compose/ui/node/NodeCoordinator;->calculateMinimumTouchTargetPadding-E7KxVPU(J)J +HSPLandroidx/compose/ui/node/NodeCoordinator;->distanceInMinimumTouchTarget-tz77jQw(JJ)F +HSPLandroidx/compose/ui/node/NodeCoordinator;->draw(Landroidx/compose/ui/graphics/Canvas;)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->drawContainedDrawModifiers(Landroidx/compose/ui/graphics/Canvas;)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->findCommonAncestor$ui_release(Landroidx/compose/ui/node/NodeCoordinator;)Landroidx/compose/ui/node/NodeCoordinator; +HSPLandroidx/compose/ui/node/NodeCoordinator;->fromParentPosition-MK-Hz9U(J)J +HSPLandroidx/compose/ui/node/NodeCoordinator;->getAlignmentLinesOwner()Landroidx/compose/ui/node/AlignmentLinesOwner; +HSPLandroidx/compose/ui/node/NodeCoordinator;->getCoordinates()Landroidx/compose/ui/layout/LayoutCoordinates; +HSPLandroidx/compose/ui/node/NodeCoordinator;->getDensity()F +HSPLandroidx/compose/ui/node/NodeCoordinator;->getFontScale()F +HSPLandroidx/compose/ui/node/NodeCoordinator;->getLastLayerDrawingWasSkipped$ui_release()Z +HSPLandroidx/compose/ui/node/NodeCoordinator;->getLastMeasurementConstraints-msEJaDk$ui_release()J +HSPLandroidx/compose/ui/node/NodeCoordinator;->getLayer()Landroidx/compose/ui/node/OwnedLayer; +HSPLandroidx/compose/ui/node/NodeCoordinator;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/node/NodeCoordinator;->getLayoutNode()Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/node/NodeCoordinator;->getMeasureResult$ui_release()Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/ui/node/NodeCoordinator;->getMinimumTouchTargetSize-NH-jbRc()J +HSPLandroidx/compose/ui/node/NodeCoordinator;->getParent()Landroidx/compose/ui/node/LookaheadCapablePlaceable; +HSPLandroidx/compose/ui/node/NodeCoordinator;->getParentData()Ljava/lang/Object; +HSPLandroidx/compose/ui/node/NodeCoordinator;->getParentLayoutCoordinates()Landroidx/compose/ui/layout/LayoutCoordinates; +HSPLandroidx/compose/ui/node/NodeCoordinator;->getPosition-nOcc-ac()J +HSPLandroidx/compose/ui/node/NodeCoordinator;->getRectCache()Landroidx/compose/ui/geometry/MutableRect; +HSPLandroidx/compose/ui/node/NodeCoordinator;->getSize-YbymL2g()J +HSPLandroidx/compose/ui/node/NodeCoordinator;->getSnapshotObserver()Landroidx/compose/ui/node/OwnerSnapshotObserver; +HSPLandroidx/compose/ui/node/NodeCoordinator;->getWrapped$ui_release()Landroidx/compose/ui/node/NodeCoordinator; +HSPLandroidx/compose/ui/node/NodeCoordinator;->getWrappedBy$ui_release()Landroidx/compose/ui/node/NodeCoordinator; +HSPLandroidx/compose/ui/node/NodeCoordinator;->getZIndex()F +HSPLandroidx/compose/ui/node/NodeCoordinator;->hasNode-H91voCI(I)Z +HSPLandroidx/compose/ui/node/NodeCoordinator;->head-H91voCI(I)Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/NodeCoordinator;->headNode(Z)Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/NodeCoordinator;->hit-1hIXUjU(Landroidx/compose/ui/Modifier$Node;Landroidx/compose/ui/node/NodeCoordinator$HitTestSource;JLandroidx/compose/ui/node/HitTestResult;ZZ)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->hitTest-YqVAtuI(Landroidx/compose/ui/node/NodeCoordinator$HitTestSource;JLandroidx/compose/ui/node/HitTestResult;ZZ)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->hitTestChild-YqVAtuI(Landroidx/compose/ui/node/NodeCoordinator$HitTestSource;JLandroidx/compose/ui/node/HitTestResult;ZZ)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->invalidateLayer()V +HSPLandroidx/compose/ui/node/NodeCoordinator;->invoke(Landroidx/compose/ui/graphics/Canvas;)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/node/NodeCoordinator;->isAttached()Z +HSPLandroidx/compose/ui/node/NodeCoordinator;->isPointerInBounds-k-4lQ0M(J)Z +HSPLandroidx/compose/ui/node/NodeCoordinator;->isTransparent()Z +HSPLandroidx/compose/ui/node/NodeCoordinator;->isValidOwnerScope()Z +HSPLandroidx/compose/ui/node/NodeCoordinator;->localBoundingBoxOf(Landroidx/compose/ui/layout/LayoutCoordinates;Z)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/node/NodeCoordinator;->localPositionOf-R5De75A(Landroidx/compose/ui/layout/LayoutCoordinates;J)J +HSPLandroidx/compose/ui/node/NodeCoordinator;->localToRoot-MK-Hz9U(J)J +HSPLandroidx/compose/ui/node/NodeCoordinator;->localToWindow-MK-Hz9U(J)J +HSPLandroidx/compose/ui/node/NodeCoordinator;->offsetFromEdge-MK-Hz9U(J)J +HSPLandroidx/compose/ui/node/NodeCoordinator;->onCoordinatesUsed$ui_release()V +HSPLandroidx/compose/ui/node/NodeCoordinator;->onLayoutModifierNodeChanged()V +HSPLandroidx/compose/ui/node/NodeCoordinator;->onLayoutNodeAttach()V +HSPLandroidx/compose/ui/node/NodeCoordinator;->onMeasureResultChanged(II)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->onMeasured()V +HSPLandroidx/compose/ui/node/NodeCoordinator;->onPlaced()V +HSPLandroidx/compose/ui/node/NodeCoordinator;->onRelease()V +HSPLandroidx/compose/ui/node/NodeCoordinator;->placeAt-f8xVGno(JFLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->placeSelf-f8xVGno(JFLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->placeSelfApparentToRealOffset-f8xVGno(JFLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->rectInParent$ui_release$default(Landroidx/compose/ui/node/NodeCoordinator;Landroidx/compose/ui/geometry/MutableRect;ZZILjava/lang/Object;)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->rectInParent$ui_release(Landroidx/compose/ui/geometry/MutableRect;ZZ)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->setMeasureResult$ui_release(Landroidx/compose/ui/layout/MeasureResult;)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->setPosition--gyyYBs(J)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->setWrapped$ui_release(Landroidx/compose/ui/node/NodeCoordinator;)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->setWrappedBy$ui_release(Landroidx/compose/ui/node/NodeCoordinator;)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->shouldSharePointerInputWithSiblings()Z +HSPLandroidx/compose/ui/node/NodeCoordinator;->toCoordinator(Landroidx/compose/ui/layout/LayoutCoordinates;)Landroidx/compose/ui/node/NodeCoordinator; +HSPLandroidx/compose/ui/node/NodeCoordinator;->toParentPosition-MK-Hz9U(J)J +HSPLandroidx/compose/ui/node/NodeCoordinator;->touchBoundsInRoot()Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/node/NodeCoordinator;->updateLayerBlock$default(Landroidx/compose/ui/node/NodeCoordinator;Lkotlin/jvm/functions/Function1;ZILjava/lang/Object;)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->updateLayerBlock(Lkotlin/jvm/functions/Function1;Z)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->updateLayerParameters$default(Landroidx/compose/ui/node/NodeCoordinator;ZILjava/lang/Object;)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->updateLayerParameters(Z)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->withinLayerBounds-k-4lQ0M(J)Z +Landroidx/compose/ui/node/NodeCoordinator$Companion; +HSPLandroidx/compose/ui/node/NodeCoordinator$Companion;->()V +HSPLandroidx/compose/ui/node/NodeCoordinator$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/node/NodeCoordinator$Companion;->getPointerInputSource()Landroidx/compose/ui/node/NodeCoordinator$HitTestSource; +Landroidx/compose/ui/node/NodeCoordinator$Companion$PointerInputSource$1; +HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$PointerInputSource$1;->()V +HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$PointerInputSource$1;->childHitTest-YqVAtuI(Landroidx/compose/ui/node/LayoutNode;JLandroidx/compose/ui/node/HitTestResult;ZZ)V +HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$PointerInputSource$1;->entityType-OLwlOKw()I +HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$PointerInputSource$1;->shouldHitTestChildren(Landroidx/compose/ui/node/LayoutNode;)Z +Landroidx/compose/ui/node/NodeCoordinator$Companion$SemanticsSource$1; +HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$SemanticsSource$1;->()V +Landroidx/compose/ui/node/NodeCoordinator$Companion$onCommitAffectingLayer$1; +HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$onCommitAffectingLayer$1;->()V +HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$onCommitAffectingLayer$1;->()V +HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$onCommitAffectingLayer$1;->invoke(Landroidx/compose/ui/node/NodeCoordinator;)V +HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$onCommitAffectingLayer$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/NodeCoordinator$Companion$onCommitAffectingLayerParams$1; +HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$onCommitAffectingLayerParams$1;->()V +HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$onCommitAffectingLayerParams$1;->()V +HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$onCommitAffectingLayerParams$1;->invoke(Landroidx/compose/ui/node/NodeCoordinator;)V +HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$onCommitAffectingLayerParams$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/NodeCoordinator$HitTestSource; +Landroidx/compose/ui/node/NodeCoordinator$hit$1; +HSPLandroidx/compose/ui/node/NodeCoordinator$hit$1;->(Landroidx/compose/ui/node/NodeCoordinator;Landroidx/compose/ui/Modifier$Node;Landroidx/compose/ui/node/NodeCoordinator$HitTestSource;JLandroidx/compose/ui/node/HitTestResult;ZZ)V +HSPLandroidx/compose/ui/node/NodeCoordinator$hit$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/node/NodeCoordinator$hit$1;->invoke()V +Landroidx/compose/ui/node/NodeCoordinator$invalidateParentLayer$1; +HSPLandroidx/compose/ui/node/NodeCoordinator$invalidateParentLayer$1;->(Landroidx/compose/ui/node/NodeCoordinator;)V +HSPLandroidx/compose/ui/node/NodeCoordinator$invalidateParentLayer$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/node/NodeCoordinator$invalidateParentLayer$1;->invoke()V +Landroidx/compose/ui/node/NodeCoordinator$invoke$1; +HSPLandroidx/compose/ui/node/NodeCoordinator$invoke$1;->(Landroidx/compose/ui/node/NodeCoordinator;Landroidx/compose/ui/graphics/Canvas;)V +HSPLandroidx/compose/ui/node/NodeCoordinator$invoke$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/node/NodeCoordinator$invoke$1;->invoke()V +Landroidx/compose/ui/node/NodeCoordinator$updateLayerParameters$1; +HSPLandroidx/compose/ui/node/NodeCoordinator$updateLayerParameters$1;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/node/NodeCoordinator$updateLayerParameters$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/node/NodeCoordinator$updateLayerParameters$1;->invoke()V +Landroidx/compose/ui/node/NodeCoordinatorKt; +HSPLandroidx/compose/ui/node/NodeCoordinatorKt;->access$nextUntil-hw7D004(Landroidx/compose/ui/node/DelegatableNode;II)Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/NodeCoordinatorKt;->nextUntil-hw7D004(Landroidx/compose/ui/node/DelegatableNode;II)Landroidx/compose/ui/Modifier$Node; +Landroidx/compose/ui/node/NodeKind; +HSPLandroidx/compose/ui/node/NodeKind;->constructor-impl(I)I +Landroidx/compose/ui/node/NodeKindKt; +HSPLandroidx/compose/ui/node/NodeKindKt;->autoInvalidateInsertedNode(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/node/NodeKindKt;->autoInvalidateNodeIncludingDelegates(Landroidx/compose/ui/Modifier$Node;II)V +HSPLandroidx/compose/ui/node/NodeKindKt;->autoInvalidateNodeSelf(Landroidx/compose/ui/Modifier$Node;II)V +HSPLandroidx/compose/ui/node/NodeKindKt;->autoInvalidateRemovedNode(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/node/NodeKindKt;->autoInvalidateUpdatedNode(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/node/NodeKindKt;->calculateNodeKindSetFrom(Landroidx/compose/ui/Modifier$Element;)I +HSPLandroidx/compose/ui/node/NodeKindKt;->calculateNodeKindSetFrom(Landroidx/compose/ui/Modifier$Node;)I +HSPLandroidx/compose/ui/node/NodeKindKt;->calculateNodeKindSetFromIncludingDelegates(Landroidx/compose/ui/Modifier$Node;)I +HSPLandroidx/compose/ui/node/NodeKindKt;->getIncludeSelfInTraversal-H91voCI(I)Z +HSPLandroidx/compose/ui/node/NodeKindKt;->specifiesCanFocusProperty(Landroidx/compose/ui/focus/FocusPropertiesModifierNode;)Z +Landroidx/compose/ui/node/NodeMeasuringIntrinsics; +HSPLandroidx/compose/ui/node/NodeMeasuringIntrinsics;->()V +HSPLandroidx/compose/ui/node/NodeMeasuringIntrinsics;->()V +HSPLandroidx/compose/ui/node/NodeMeasuringIntrinsics;->maxWidth$ui_release(Landroidx/compose/ui/node/NodeMeasuringIntrinsics$MeasureBlock;Landroidx/compose/ui/layout/IntrinsicMeasureScope;Landroidx/compose/ui/layout/IntrinsicMeasurable;I)I +Landroidx/compose/ui/node/NodeMeasuringIntrinsics$DefaultIntrinsicMeasurable; +HSPLandroidx/compose/ui/node/NodeMeasuringIntrinsics$DefaultIntrinsicMeasurable;->(Landroidx/compose/ui/layout/IntrinsicMeasurable;Landroidx/compose/ui/node/NodeMeasuringIntrinsics$IntrinsicMinMax;Landroidx/compose/ui/node/NodeMeasuringIntrinsics$IntrinsicWidthHeight;)V +HSPLandroidx/compose/ui/node/NodeMeasuringIntrinsics$DefaultIntrinsicMeasurable;->measure-BRTryo0(J)Landroidx/compose/ui/layout/Placeable; +Landroidx/compose/ui/node/NodeMeasuringIntrinsics$EmptyPlaceable; +HSPLandroidx/compose/ui/node/NodeMeasuringIntrinsics$EmptyPlaceable;->(II)V +Landroidx/compose/ui/node/NodeMeasuringIntrinsics$IntrinsicMinMax; +HSPLandroidx/compose/ui/node/NodeMeasuringIntrinsics$IntrinsicMinMax;->$values()[Landroidx/compose/ui/node/NodeMeasuringIntrinsics$IntrinsicMinMax; +HSPLandroidx/compose/ui/node/NodeMeasuringIntrinsics$IntrinsicMinMax;->()V +HSPLandroidx/compose/ui/node/NodeMeasuringIntrinsics$IntrinsicMinMax;->(Ljava/lang/String;I)V +Landroidx/compose/ui/node/NodeMeasuringIntrinsics$IntrinsicWidthHeight; +HSPLandroidx/compose/ui/node/NodeMeasuringIntrinsics$IntrinsicWidthHeight;->$values()[Landroidx/compose/ui/node/NodeMeasuringIntrinsics$IntrinsicWidthHeight; +HSPLandroidx/compose/ui/node/NodeMeasuringIntrinsics$IntrinsicWidthHeight;->()V +HSPLandroidx/compose/ui/node/NodeMeasuringIntrinsics$IntrinsicWidthHeight;->(Ljava/lang/String;I)V +Landroidx/compose/ui/node/NodeMeasuringIntrinsics$MeasureBlock; +Landroidx/compose/ui/node/ObserverModifierNode; +Landroidx/compose/ui/node/ObserverModifierNodeKt; +HSPLandroidx/compose/ui/node/ObserverModifierNodeKt;->observeReads(Landroidx/compose/ui/Modifier$Node;Lkotlin/jvm/functions/Function0;)V +Landroidx/compose/ui/node/ObserverNodeOwnerScope; +HSPLandroidx/compose/ui/node/ObserverNodeOwnerScope;->()V +HSPLandroidx/compose/ui/node/ObserverNodeOwnerScope;->(Landroidx/compose/ui/node/ObserverModifierNode;)V +HSPLandroidx/compose/ui/node/ObserverNodeOwnerScope;->access$getOnObserveReadsChanged$cp()Lkotlin/jvm/functions/Function1; +Landroidx/compose/ui/node/ObserverNodeOwnerScope$Companion; +HSPLandroidx/compose/ui/node/ObserverNodeOwnerScope$Companion;->()V +HSPLandroidx/compose/ui/node/ObserverNodeOwnerScope$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/node/ObserverNodeOwnerScope$Companion;->getOnObserveReadsChanged$ui_release()Lkotlin/jvm/functions/Function1; +Landroidx/compose/ui/node/ObserverNodeOwnerScope$Companion$OnObserveReadsChanged$1; +HSPLandroidx/compose/ui/node/ObserverNodeOwnerScope$Companion$OnObserveReadsChanged$1;->()V +HSPLandroidx/compose/ui/node/ObserverNodeOwnerScope$Companion$OnObserveReadsChanged$1;->()V +Landroidx/compose/ui/node/OnPositionedDispatcher; +HSPLandroidx/compose/ui/node/OnPositionedDispatcher;->()V +HSPLandroidx/compose/ui/node/OnPositionedDispatcher;->()V +HSPLandroidx/compose/ui/node/OnPositionedDispatcher;->dispatch()V +HSPLandroidx/compose/ui/node/OnPositionedDispatcher;->dispatchHierarchy(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/OnPositionedDispatcher;->isNotEmpty()Z +HSPLandroidx/compose/ui/node/OnPositionedDispatcher;->onNodePositioned(Landroidx/compose/ui/node/LayoutNode;)V +Landroidx/compose/ui/node/OnPositionedDispatcher$Companion; +HSPLandroidx/compose/ui/node/OnPositionedDispatcher$Companion;->()V +HSPLandroidx/compose/ui/node/OnPositionedDispatcher$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/node/OnPositionedDispatcher$Companion$DepthComparator; +HSPLandroidx/compose/ui/node/OnPositionedDispatcher$Companion$DepthComparator;->()V +HSPLandroidx/compose/ui/node/OnPositionedDispatcher$Companion$DepthComparator;->()V +HSPLandroidx/compose/ui/node/OnPositionedDispatcher$Companion$DepthComparator;->compare(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/node/LayoutNode;)I +HSPLandroidx/compose/ui/node/OnPositionedDispatcher$Companion$DepthComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +Landroidx/compose/ui/node/OwnedLayer; +Landroidx/compose/ui/node/Owner; +HSPLandroidx/compose/ui/node/Owner;->()V +HSPLandroidx/compose/ui/node/Owner;->forceMeasureTheSubtree$default(Landroidx/compose/ui/node/Owner;Landroidx/compose/ui/node/LayoutNode;ZILjava/lang/Object;)V +HSPLandroidx/compose/ui/node/Owner;->measureAndLayout$default(Landroidx/compose/ui/node/Owner;ZILjava/lang/Object;)V +HSPLandroidx/compose/ui/node/Owner;->onRequestMeasure$default(Landroidx/compose/ui/node/Owner;Landroidx/compose/ui/node/LayoutNode;ZZZILjava/lang/Object;)V +HSPLandroidx/compose/ui/node/Owner;->onRequestRelayout$default(Landroidx/compose/ui/node/Owner;Landroidx/compose/ui/node/LayoutNode;ZZILjava/lang/Object;)V +Landroidx/compose/ui/node/Owner$Companion; +HSPLandroidx/compose/ui/node/Owner$Companion;->()V +HSPLandroidx/compose/ui/node/Owner$Companion;->()V +HSPLandroidx/compose/ui/node/Owner$Companion;->getEnableExtraAssertions()Z +Landroidx/compose/ui/node/Owner$OnLayoutCompletedListener; +Landroidx/compose/ui/node/OwnerScope; +Landroidx/compose/ui/node/OwnerSnapshotObserver; +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver;->clearInvalidObservations$ui_release()V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver;->observeLayoutModifierSnapshotReads$ui_release(Landroidx/compose/ui/node/LayoutNode;ZLkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver;->observeLayoutSnapshotReads$ui_release(Landroidx/compose/ui/node/LayoutNode;ZLkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver;->observeMeasureSnapshotReads$ui_release(Landroidx/compose/ui/node/LayoutNode;ZLkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver;->observeReads$ui_release(Landroidx/compose/ui/node/OwnerScope;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver;->observeSemanticsReads$ui_release(Landroidx/compose/ui/node/LayoutNode;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver;->startObserving$ui_release()V +Landroidx/compose/ui/node/OwnerSnapshotObserver$clearInvalidObservations$1; +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$clearInvalidObservations$1;->()V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$clearInvalidObservations$1;->()V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$clearInvalidObservations$1;->invoke(Ljava/lang/Object;)Ljava/lang/Boolean; +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$clearInvalidObservations$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayout$1; +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayout$1;->()V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayout$1;->()V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayout$1;->invoke(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayout$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayoutModifier$1; +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayoutModifier$1;->()V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayoutModifier$1;->()V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayoutModifier$1;->invoke(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayoutModifier$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayoutModifierInLookahead$1; +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayoutModifierInLookahead$1;->()V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayoutModifierInLookahead$1;->()V +Landroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLookaheadLayout$1; +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLookaheadLayout$1;->()V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLookaheadLayout$1;->()V +Landroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLookaheadMeasure$1; +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLookaheadMeasure$1;->()V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLookaheadMeasure$1;->()V +Landroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingMeasure$1; +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingMeasure$1;->()V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingMeasure$1;->()V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingMeasure$1;->invoke(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingMeasure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingSemantics$1; +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingSemantics$1;->()V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingSemantics$1;->()V +Landroidx/compose/ui/node/ParentDataModifierNode; +Landroidx/compose/ui/node/ParentDataModifierNodeKt; +HSPLandroidx/compose/ui/node/ParentDataModifierNodeKt;->invalidateParentData(Landroidx/compose/ui/node/ParentDataModifierNode;)V +Landroidx/compose/ui/node/PointerInputModifierNode; +HSPLandroidx/compose/ui/node/PointerInputModifierNode;->sharePointerInputWithSiblings()Z +Landroidx/compose/ui/node/PointerInputModifierNodeKt; +HSPLandroidx/compose/ui/node/PointerInputModifierNodeKt;->getLayoutCoordinates(Landroidx/compose/ui/node/PointerInputModifierNode;)Landroidx/compose/ui/layout/LayoutCoordinates; +Landroidx/compose/ui/node/RootForTest; +Landroidx/compose/ui/node/SemanticsModifierNode; +HSPLandroidx/compose/ui/node/SemanticsModifierNode;->getShouldClearDescendantSemantics()Z +HSPLandroidx/compose/ui/node/SemanticsModifierNode;->getShouldMergeDescendantSemantics()Z +Landroidx/compose/ui/node/SemanticsModifierNodeKt; +HSPLandroidx/compose/ui/node/SemanticsModifierNodeKt;->getUseMinimumTouchTarget(Landroidx/compose/ui/semantics/SemanticsConfiguration;)Z +HSPLandroidx/compose/ui/node/SemanticsModifierNodeKt;->invalidateSemantics(Landroidx/compose/ui/node/SemanticsModifierNode;)V +HSPLandroidx/compose/ui/node/SemanticsModifierNodeKt;->touchBoundsInRoot(Landroidx/compose/ui/Modifier$Node;Z)Landroidx/compose/ui/geometry/Rect; +Landroidx/compose/ui/node/Snake; +HSPLandroidx/compose/ui/node/Snake;->addDiagonalToStack-impl([ILandroidx/compose/ui/node/IntStack;)V +HSPLandroidx/compose/ui/node/Snake;->constructor-impl([I)[I +HSPLandroidx/compose/ui/node/Snake;->getDiagonalSize-impl([I)I +HSPLandroidx/compose/ui/node/Snake;->getEndX-impl([I)I +HSPLandroidx/compose/ui/node/Snake;->getEndY-impl([I)I +HSPLandroidx/compose/ui/node/Snake;->getHasAdditionOrRemoval-impl([I)Z +HSPLandroidx/compose/ui/node/Snake;->getReverse-impl([I)Z +HSPLandroidx/compose/ui/node/Snake;->getStartX-impl([I)I +HSPLandroidx/compose/ui/node/Snake;->getStartY-impl([I)I +HSPLandroidx/compose/ui/node/Snake;->isAddition-impl([I)Z +Landroidx/compose/ui/node/TailModifierNode; +HSPLandroidx/compose/ui/node/TailModifierNode;->()V +HSPLandroidx/compose/ui/node/TailModifierNode;->getAttachHasBeenRun()Z +HSPLandroidx/compose/ui/node/TailModifierNode;->onAttach()V +HSPLandroidx/compose/ui/node/TailModifierNode;->onDetach()V +Landroidx/compose/ui/node/TreeSet; +HSPLandroidx/compose/ui/node/TreeSet;->(Ljava/util/Comparator;)V +Landroidx/compose/ui/node/UiApplier; +HSPLandroidx/compose/ui/node/UiApplier;->(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/UiApplier;->insertBottomUp(ILandroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/UiApplier;->insertBottomUp(ILjava/lang/Object;)V +HSPLandroidx/compose/ui/node/UiApplier;->insertTopDown(ILandroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/UiApplier;->insertTopDown(ILjava/lang/Object;)V +HSPLandroidx/compose/ui/node/UiApplier;->onEndChanges()V +HSPLandroidx/compose/ui/node/UiApplier;->remove(II)V +Landroidx/compose/ui/platform/AbstractComposeView; +HSPLandroidx/compose/ui/platform/AbstractComposeView;->()V +HSPLandroidx/compose/ui/platform/AbstractComposeView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroidx/compose/ui/platform/AbstractComposeView;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V +HSPLandroidx/compose/ui/platform/AbstractComposeView;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V +HSPLandroidx/compose/ui/platform/AbstractComposeView;->cacheIfAlive(Landroidx/compose/runtime/CompositionContext;)Landroidx/compose/runtime/CompositionContext; +HSPLandroidx/compose/ui/platform/AbstractComposeView;->checkAddView()V +HSPLandroidx/compose/ui/platform/AbstractComposeView;->ensureCompositionCreated()V +HSPLandroidx/compose/ui/platform/AbstractComposeView;->internalOnLayout$ui_release(ZIIII)V +HSPLandroidx/compose/ui/platform/AbstractComposeView;->internalOnMeasure$ui_release(II)V +HSPLandroidx/compose/ui/platform/AbstractComposeView;->isAlive(Landroidx/compose/runtime/CompositionContext;)Z +HSPLandroidx/compose/ui/platform/AbstractComposeView;->onAttachedToWindow()V +HSPLandroidx/compose/ui/platform/AbstractComposeView;->onLayout(ZIIII)V +HSPLandroidx/compose/ui/platform/AbstractComposeView;->onMeasure(II)V +HSPLandroidx/compose/ui/platform/AbstractComposeView;->onRtlPropertiesChanged(I)V +HSPLandroidx/compose/ui/platform/AbstractComposeView;->resolveParentCompositionContext()Landroidx/compose/runtime/CompositionContext; +HSPLandroidx/compose/ui/platform/AbstractComposeView;->setParentCompositionContext(Landroidx/compose/runtime/CompositionContext;)V +HSPLandroidx/compose/ui/platform/AbstractComposeView;->setParentContext(Landroidx/compose/runtime/CompositionContext;)V +HSPLandroidx/compose/ui/platform/AbstractComposeView;->setPreviousAttachedWindowToken(Landroid/os/IBinder;)V +Landroidx/compose/ui/platform/AbstractComposeView$ensureCompositionCreated$1; +HSPLandroidx/compose/ui/platform/AbstractComposeView$ensureCompositionCreated$1;->(Landroidx/compose/ui/platform/AbstractComposeView;)V +HSPLandroidx/compose/ui/platform/AbstractComposeView$ensureCompositionCreated$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/ui/platform/AbstractComposeView$ensureCompositionCreated$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/AccessibilityManager; +Landroidx/compose/ui/platform/AccessibilityNodeInfoVerificationHelperMethods; +HSPLandroidx/compose/ui/platform/AccessibilityNodeInfoVerificationHelperMethods;->()V +HSPLandroidx/compose/ui/platform/AccessibilityNodeInfoVerificationHelperMethods;->()V +HSPLandroidx/compose/ui/platform/AccessibilityNodeInfoVerificationHelperMethods;->setAvailableExtraData(Landroid/view/accessibility/AccessibilityNodeInfo;Ljava/util/List;)V +Landroidx/compose/ui/platform/AndroidAccessibilityManager; +HSPLandroidx/compose/ui/platform/AndroidAccessibilityManager;->()V +HSPLandroidx/compose/ui/platform/AndroidAccessibilityManager;->(Landroid/content/Context;)V +Landroidx/compose/ui/platform/AndroidAccessibilityManager$Companion; +HSPLandroidx/compose/ui/platform/AndroidAccessibilityManager$Companion;->()V +HSPLandroidx/compose/ui/platform/AndroidAccessibilityManager$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/platform/AndroidClipboardManager; +HSPLandroidx/compose/ui/platform/AndroidClipboardManager;->(Landroid/content/ClipboardManager;)V +HSPLandroidx/compose/ui/platform/AndroidClipboardManager;->(Landroid/content/Context;)V +HSPLandroidx/compose/ui/platform/AndroidClipboardManager;->hasText()Z +Landroidx/compose/ui/platform/AndroidComposeView; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->$r8$lambda$6rnsioIDxAVR319ScBkOteeoeiE(Landroidx/compose/ui/platform/AndroidComposeView;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->$r8$lambda$TvhWqMihl4JwF42Odovn0ewO6fk(Landroidx/compose/ui/platform/AndroidComposeView;Z)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->(Landroid/content/Context;Lkotlin/coroutines/CoroutineContext;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->access$getGetBooleanMethod$cp()Ljava/lang/reflect/Method; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->access$getPreviousMotionEvent$p(Landroidx/compose/ui/platform/AndroidComposeView;)Landroid/view/MotionEvent; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->access$getSystemPropertiesClass$cp()Ljava/lang/Class; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->access$get_viewTreeOwners(Landroidx/compose/ui/platform/AndroidComposeView;)Landroidx/compose/ui/platform/AndroidComposeView$ViewTreeOwners; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->access$setGetBooleanMethod$cp(Ljava/lang/reflect/Method;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->access$setSystemPropertiesClass$cp(Ljava/lang/Class;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->autofillSupported()Z +HSPLandroidx/compose/ui/platform/AndroidComposeView;->boundsUpdatesEventLoop(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->calculatePositionInWindow-MK-Hz9U(J)J +HSPLandroidx/compose/ui/platform/AndroidComposeView;->childSizeCanAffectParentSize(Landroidx/compose/ui/node/LayoutNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeView;->clearChildInvalidObservations(Landroid/view/ViewGroup;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->convertMeasureSpec-I7RO_PI(I)J +HSPLandroidx/compose/ui/platform/AndroidComposeView;->createLayer(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)Landroidx/compose/ui/node/OwnedLayer; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->dispatchDraw(Landroid/graphics/Canvas;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeView;->forceMeasureTheSubtree(Landroidx/compose/ui/node/LayoutNode;Z)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getAccessibilityManager()Landroidx/compose/ui/platform/AccessibilityManager; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getAccessibilityManager()Landroidx/compose/ui/platform/AndroidAccessibilityManager; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getAndroidViewsHandler$ui_release()Landroidx/compose/ui/platform/AndroidViewsHandler; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getAutofill()Landroidx/compose/ui/autofill/Autofill; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getAutofillTree()Landroidx/compose/ui/autofill/AutofillTree; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getClipboardManager()Landroidx/compose/ui/platform/AndroidClipboardManager; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getClipboardManager()Landroidx/compose/ui/platform/ClipboardManager; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getCoroutineContext()Lkotlin/coroutines/CoroutineContext; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getDensity()Landroidx/compose/ui/unit/Density; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getFocusOwner()Landroidx/compose/ui/focus/FocusOwner; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getFontFamilyResolver()Landroidx/compose/ui/text/font/FontFamily$Resolver; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getFontLoader()Landroidx/compose/ui/text/font/Font$ResourceLoader; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getFontWeightAdjustmentCompat(Landroid/content/res/Configuration;)I +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getHapticFeedBack()Landroidx/compose/ui/hapticfeedback/HapticFeedback; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getInputModeManager()Landroidx/compose/ui/input/InputModeManager; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getModifierLocalManager()Landroidx/compose/ui/modifier/ModifierLocalManager; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getPlatformTextInputPluginRegistry()Landroidx/compose/ui/text/input/PlatformTextInputPluginRegistry; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getPlatformTextInputPluginRegistry()Landroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getPointerIconService()Landroidx/compose/ui/input/pointer/PointerIconService; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getRoot()Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getSemanticsOwner()Landroidx/compose/ui/semantics/SemanticsOwner; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getSharedDrawScope()Landroidx/compose/ui/node/LayoutNodeDrawScope; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getShowLayoutBounds()Z +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getSnapshotObserver()Landroidx/compose/ui/node/OwnerSnapshotObserver; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getTextInputService()Landroidx/compose/ui/text/input/TextInputService; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getTextToolbar()Landroidx/compose/ui/platform/TextToolbar; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getView()Landroid/view/View; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getViewConfiguration()Landroidx/compose/ui/platform/ViewConfiguration; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getViewTreeOwners()Landroidx/compose/ui/platform/AndroidComposeView$ViewTreeOwners; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getWindowInfo()Landroidx/compose/ui/platform/WindowInfo; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->get_viewTreeOwners()Landroidx/compose/ui/platform/AndroidComposeView$ViewTreeOwners; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->globalLayoutListener$lambda$1(Landroidx/compose/ui/platform/AndroidComposeView;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->handleMotionEvent-8iAsVTc(Landroid/view/MotionEvent;)I +HSPLandroidx/compose/ui/platform/AndroidComposeView;->hasChangedDevices(Landroid/view/MotionEvent;Landroid/view/MotionEvent;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeView;->invalidateLayers(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->invalidateLayoutNodeMeasurement(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->isBadMotionEvent(Landroid/view/MotionEvent;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeView;->isInBounds(Landroid/view/MotionEvent;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeView;->localToScreen-MK-Hz9U(J)J +HSPLandroidx/compose/ui/platform/AndroidComposeView;->measureAndLayout(Z)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->measureAndLayout-0kLqBqw(Landroidx/compose/ui/node/LayoutNode;J)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->notifyLayerIsDirty$ui_release(Landroidx/compose/ui/node/OwnedLayer;Z)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onAttach(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onAttachedToWindow()V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onCheckIsTextEditor()Z +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onCreateInputConnection(Landroid/view/inputmethod/EditorInfo;)Landroid/view/inputmethod/InputConnection; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onDetach(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onDraw(Landroid/graphics/Canvas;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onEndApplyChanges()V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onFocusChanged(ZILandroid/graphics/Rect;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onLayout(ZIIII)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onLayoutChange(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onMeasure(II)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onProvideAutofillVirtualStructure(Landroid/view/ViewStructure;I)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onRequestMeasure(Landroidx/compose/ui/node/LayoutNode;ZZZ)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onRequestRelayout(Landroidx/compose/ui/node/LayoutNode;ZZ)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onResume(Landroidx/lifecycle/LifecycleOwner;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onRtlPropertiesChanged(I)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onSemanticsChange()V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onWindowFocusChanged(Z)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->pack-ZIaKswc(II)J +HSPLandroidx/compose/ui/platform/AndroidComposeView;->recalculateWindowPosition()V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->recalculateWindowPosition(Landroid/view/MotionEvent;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->recalculateWindowViewTransforms()V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->recycle$ui_release(Landroidx/compose/ui/node/OwnedLayer;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeView;->registerOnEndApplyChangesListener(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->requestClearInvalidObservations()V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->requestOnPositionedCallback(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->scheduleMeasureAndLayout$default(Landroidx/compose/ui/platform/AndroidComposeView;Landroidx/compose/ui/node/LayoutNode;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->scheduleMeasureAndLayout(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->screenToLocal-MK-Hz9U(J)J +HSPLandroidx/compose/ui/platform/AndroidComposeView;->sendMotionEvent-8iAsVTc(Landroid/view/MotionEvent;)I +HSPLandroidx/compose/ui/platform/AndroidComposeView;->setConfigurationChangeObserver(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->setLayoutDirection(Landroidx/compose/ui/unit/LayoutDirection;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->setOnViewTreeOwnersAvailable(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->setShowLayoutBounds(Z)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->set_viewTreeOwners(Landroidx/compose/ui/platform/AndroidComposeView$ViewTreeOwners;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->touchModeChangeListener$lambda$3(Landroidx/compose/ui/platform/AndroidComposeView;Z)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->updatePositionCacheAndDispatch()V +Landroidx/compose/ui/platform/AndroidComposeView$$ExternalSyntheticLambda1; +HSPLandroidx/compose/ui/platform/AndroidComposeView$$ExternalSyntheticLambda1;->(Landroidx/compose/ui/platform/AndroidComposeView;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView$$ExternalSyntheticLambda1;->onGlobalLayout()V +Landroidx/compose/ui/platform/AndroidComposeView$$ExternalSyntheticLambda2; +HSPLandroidx/compose/ui/platform/AndroidComposeView$$ExternalSyntheticLambda2;->(Landroidx/compose/ui/platform/AndroidComposeView;)V +Landroidx/compose/ui/platform/AndroidComposeView$$ExternalSyntheticLambda3; +HSPLandroidx/compose/ui/platform/AndroidComposeView$$ExternalSyntheticLambda3;->(Landroidx/compose/ui/platform/AndroidComposeView;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView$$ExternalSyntheticLambda3;->onTouchModeChanged(Z)V +Landroidx/compose/ui/platform/AndroidComposeView$$ExternalSyntheticLambda4; +HSPLandroidx/compose/ui/platform/AndroidComposeView$$ExternalSyntheticLambda4;->(Landroidx/compose/ui/platform/AndroidComposeView;)V +Landroidx/compose/ui/platform/AndroidComposeView$Companion; +HSPLandroidx/compose/ui/platform/AndroidComposeView$Companion;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeView$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView$Companion;->access$getIsShowingLayoutBounds(Landroidx/compose/ui/platform/AndroidComposeView$Companion;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeView$Companion;->getIsShowingLayoutBounds()Z +Landroidx/compose/ui/platform/AndroidComposeView$ViewTreeOwners; +HSPLandroidx/compose/ui/platform/AndroidComposeView$ViewTreeOwners;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeView$ViewTreeOwners;->(Landroidx/lifecycle/LifecycleOwner;Landroidx/savedstate/SavedStateRegistryOwner;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView$ViewTreeOwners;->getLifecycleOwner()Landroidx/lifecycle/LifecycleOwner; +HSPLandroidx/compose/ui/platform/AndroidComposeView$ViewTreeOwners;->getSavedStateRegistryOwner()Landroidx/savedstate/SavedStateRegistryOwner; +Landroidx/compose/ui/platform/AndroidComposeView$_inputModeManager$1; +HSPLandroidx/compose/ui/platform/AndroidComposeView$_inputModeManager$1;->(Landroidx/compose/ui/platform/AndroidComposeView;)V +Landroidx/compose/ui/platform/AndroidComposeView$configurationChangeObserver$1; +HSPLandroidx/compose/ui/platform/AndroidComposeView$configurationChangeObserver$1;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeView$configurationChangeObserver$1;->()V +Landroidx/compose/ui/platform/AndroidComposeView$focusOwner$1; +HSPLandroidx/compose/ui/platform/AndroidComposeView$focusOwner$1;->(Landroidx/compose/ui/platform/AndroidComposeView;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView$focusOwner$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/AndroidComposeView$focusOwner$1;->invoke(Lkotlin/jvm/functions/Function0;)V +Landroidx/compose/ui/platform/AndroidComposeView$keyInputModifier$1; +HSPLandroidx/compose/ui/platform/AndroidComposeView$keyInputModifier$1;->(Landroidx/compose/ui/platform/AndroidComposeView;)V +Landroidx/compose/ui/platform/AndroidComposeView$platformTextInputPluginRegistry$1; +HSPLandroidx/compose/ui/platform/AndroidComposeView$platformTextInputPluginRegistry$1;->(Landroidx/compose/ui/platform/AndroidComposeView;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView$platformTextInputPluginRegistry$1;->invoke(Landroidx/compose/ui/text/input/PlatformTextInputPlugin;Landroidx/compose/ui/text/input/PlatformTextInput;)Landroidx/compose/ui/text/input/PlatformTextInputAdapter; +HSPLandroidx/compose/ui/platform/AndroidComposeView$platformTextInputPluginRegistry$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/AndroidComposeView$pointerIconService$1; +HSPLandroidx/compose/ui/platform/AndroidComposeView$pointerIconService$1;->(Landroidx/compose/ui/platform/AndroidComposeView;)V +Landroidx/compose/ui/platform/AndroidComposeView$resendMotionEventOnLayout$1; +HSPLandroidx/compose/ui/platform/AndroidComposeView$resendMotionEventOnLayout$1;->(Landroidx/compose/ui/platform/AndroidComposeView;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView$resendMotionEventOnLayout$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/AndroidComposeView$resendMotionEventOnLayout$1;->invoke()V +Landroidx/compose/ui/platform/AndroidComposeView$resendMotionEventRunnable$1; +HSPLandroidx/compose/ui/platform/AndroidComposeView$resendMotionEventRunnable$1;->(Landroidx/compose/ui/platform/AndroidComposeView;)V +Landroidx/compose/ui/platform/AndroidComposeView$rotaryInputModifier$1; +HSPLandroidx/compose/ui/platform/AndroidComposeView$rotaryInputModifier$1;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeView$rotaryInputModifier$1;->()V +Landroidx/compose/ui/platform/AndroidComposeView$snapshotObserver$1; +HSPLandroidx/compose/ui/platform/AndroidComposeView$snapshotObserver$1;->$r8$lambda$fxmMOjfIK0OrAcx22ga9_XhotFQ(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView$snapshotObserver$1;->(Landroidx/compose/ui/platform/AndroidComposeView;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView$snapshotObserver$1;->invoke$lambda$0(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView$snapshotObserver$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/AndroidComposeView$snapshotObserver$1;->invoke(Lkotlin/jvm/functions/Function0;)V +Landroidx/compose/ui/platform/AndroidComposeView$snapshotObserver$1$$ExternalSyntheticLambda0; +HSPLandroidx/compose/ui/platform/AndroidComposeView$snapshotObserver$1$$ExternalSyntheticLambda0;->run()V +Landroidx/compose/ui/platform/AndroidComposeView$viewTreeOwners$2; +HSPLandroidx/compose/ui/platform/AndroidComposeView$viewTreeOwners$2;->(Landroidx/compose/ui/platform/AndroidComposeView;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView$viewTreeOwners$2;->invoke()Landroidx/compose/ui/platform/AndroidComposeView$ViewTreeOwners; +HSPLandroidx/compose/ui/platform/AndroidComposeView$viewTreeOwners$2;->invoke()Ljava/lang/Object; +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->(Landroidx/compose/ui/platform/AndroidComposeView;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->access$createNodeInfo(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;I)Landroid/view/accessibility/AccessibilityNodeInfo; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->access$getContentCaptureSessionCompat(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;Landroid/view/View;)Landroidx/compose/ui/platform/coreshims/ContentCaptureSessionCompat; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->access$performActionHelper(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;IILandroid/os/Bundle;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->addExtraDataToAccessibilityNodeInfoHelper(ILandroid/view/accessibility/AccessibilityNodeInfo;Ljava/lang/String;Landroid/os/Bundle;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->boundsUpdatesEventLoop(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->createNodeInfo(I)Landroid/view/accessibility/AccessibilityNodeInfo; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getAccessibilityManager$ui_release()Landroid/view/accessibility/AccessibilityManager; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getAccessibilityNodeProvider(Landroid/view/View;)Landroidx/core/view/accessibility/AccessibilityNodeProviderCompat; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getAccessibilitySelectionEnd(Landroidx/compose/ui/semantics/SemanticsNode;)I +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getAccessibilitySelectionStart(Landroidx/compose/ui/semantics/SemanticsNode;)I +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getContentCaptureSessionCompat(Landroid/view/View;)Landroidx/compose/ui/platform/coreshims/ContentCaptureSessionCompat; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getCurrentSemanticsNodes$ui_release()Ljava/util/Map; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getEnabledStateListener$ui_release()Landroid/view/accessibility/AccessibilityManager$AccessibilityStateChangeListener; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getInfoIsCheckable(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getInfoStateDescriptionOrNull(Landroidx/compose/ui/semantics/SemanticsNode;)Ljava/lang/String; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getInfoText(Landroidx/compose/ui/semantics/SemanticsNode;)Landroid/text/SpannableString; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getIterableTextForAccessibility(Landroidx/compose/ui/semantics/SemanticsNode;)Ljava/lang/String; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getTextForTextField(Landroidx/compose/ui/semantics/SemanticsConfiguration;)Landroidx/compose/ui/text/AnnotatedString; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getTouchExplorationStateListener$ui_release()Landroid/view/accessibility/AccessibilityManager$TouchExplorationStateChangeListener; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->isEnabled$ui_release()Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->isEnabledForAccessibility()Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->isEnabledForContentCapture()Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->isScreenReaderFocusable(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->onLayoutChange$ui_release(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->onSemanticsChange$ui_release()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->performActionHelper(IILandroid/os/Bundle;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->populateAccessibilityNodeInfoProperties$canScrollBackward(Landroidx/compose/ui/semantics/ScrollAxisRange;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->populateAccessibilityNodeInfoProperties$canScrollForward(Landroidx/compose/ui/semantics/ScrollAxisRange;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->populateAccessibilityNodeInfoProperties(ILandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;Landroidx/compose/ui/semantics/SemanticsNode;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->semanticComparator(Z)Ljava/util/Comparator; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->setContentCaptureSession$ui_release(Landroidx/compose/ui/platform/coreshims/ContentCaptureSessionCompat;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->setContentInvalid(Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->setIsCheckable(Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->setStateDescription(Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->setText(Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->setTraversalValues()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->sortByGeometryGroupings$placedEntryRowOverlaps(Ljava/util/List;Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->sortByGeometryGroupings(ZLjava/util/List;Ljava/util/Map;)Ljava/util/List; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->subtreeSortedByGeometryGrouping$depthFirstSearch(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;Ljava/util/List;Ljava/util/Map;ZLandroidx/compose/ui/semantics/SemanticsNode;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->subtreeSortedByGeometryGrouping(ZLjava/util/List;)Ljava/util/List; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->trimToSize(Ljava/lang/CharSequence;I)Ljava/lang/CharSequence; +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$$ExternalSyntheticLambda0; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$$ExternalSyntheticLambda0;->(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;)V +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$$ExternalSyntheticLambda1; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$$ExternalSyntheticLambda1;->(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;)V +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$$ExternalSyntheticLambda2; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$$ExternalSyntheticLambda2;->(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;)V +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$1; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$1;->(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$1;->onViewAttachedToWindow(Landroid/view/View;)V +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Api24Impl; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Api24Impl;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Api24Impl;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Api24Impl;->addSetProgressAction(Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;Landroidx/compose/ui/semantics/SemanticsNode;)V +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Api29Impl; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Api29Impl;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Api29Impl;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Api29Impl;->addPageActions(Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;Landroidx/compose/ui/semantics/SemanticsNode;)V +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Companion; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Companion;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$MyNodeProvider; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$MyNodeProvider;->(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$MyNodeProvider;->createAccessibilityNodeInfo(I)Landroid/view/accessibility/AccessibilityNodeInfo; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$MyNodeProvider;->performAction(IILandroid/os/Bundle;)Z +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$SemanticsNodeCopy; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$SemanticsNodeCopy;->(Landroidx/compose/ui/semantics/SemanticsNode;Ljava/util/Map;)V +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$WhenMappings; +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$boundsUpdatesEventLoop$1; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$boundsUpdatesEventLoop$1;->(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;Lkotlin/coroutines/Continuation;)V +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$$inlined$thenBy$1; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$$inlined$thenBy$1;->(Ljava/util/Comparator;Ljava/util/Comparator;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$$inlined$thenBy$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$$inlined$thenBy$2; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$$inlined$thenBy$2;->(Ljava/util/Comparator;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$$inlined$thenBy$2;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$comparator$1; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$comparator$1;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$comparator$1;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$comparator$1;->invoke(Landroidx/compose/ui/semantics/SemanticsNode;)Ljava/lang/Comparable; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$comparator$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$comparator$2; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$comparator$2;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$comparator$2;->()V +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$comparator$3; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$comparator$3;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$comparator$3;->()V +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$comparator$4; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$comparator$4;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$comparator$4;->()V +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sendScrollEventIfNeededLambda$1; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sendScrollEventIfNeededLambda$1;->(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;)V +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sortByGeometryGroupings$$inlined$compareBy$1; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sortByGeometryGroupings$$inlined$compareBy$1;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sortByGeometryGroupings$$inlined$compareBy$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sortByGeometryGroupings$1; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sortByGeometryGroupings$1;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sortByGeometryGroupings$1;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sortByGeometryGroupings$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sortByGeometryGroupings$1;->invoke(Lkotlin/Pair;)Ljava/lang/Comparable; +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sortByGeometryGroupings$2; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sortByGeometryGroupings$2;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sortByGeometryGroupings$2;->()V +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->access$enabled(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->access$excludeLineAndPageGranularities(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->access$getGetTraversalIndex(Landroidx/compose/ui/semantics/SemanticsNode;)F +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->access$getInfoContentDescriptionOrNull(Landroidx/compose/ui/semantics/SemanticsNode;)Ljava/lang/String; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->access$isPassword(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->access$isRtl(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->access$isTextField(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->access$isTraversalGroup(Landroidx/compose/ui/semantics/SemanticsNode;)Ljava/lang/Boolean; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->access$isVisible(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->access$overlaps(Landroidx/compose/ui/platform/OpenEndRange;Landroidx/compose/ui/platform/OpenEndRange;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->access$toLegacyClassName-V4PA4sw(I)Ljava/lang/String; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->enabled(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->excludeLineAndPageGranularities(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->findClosestParentNode(Landroidx/compose/ui/node/LayoutNode;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->getAllUncoveredSemanticsNodesToMap$findAllSemanticNodesRecursive(Landroid/graphics/Region;Landroidx/compose/ui/semantics/SemanticsNode;Ljava/util/Map;Landroidx/compose/ui/semantics/SemanticsNode;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->getAllUncoveredSemanticsNodesToMap(Landroidx/compose/ui/semantics/SemanticsOwner;)Ljava/util/Map; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->getGetTraversalIndex(Landroidx/compose/ui/semantics/SemanticsNode;)F +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->getInfoContentDescriptionOrNull(Landroidx/compose/ui/semantics/SemanticsNode;)Ljava/lang/String; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->isPassword(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->isRtl(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->isTextField(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->isTraversalGroup(Landroidx/compose/ui/semantics/SemanticsNode;)Ljava/lang/Boolean; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->isVisible(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->overlaps(Landroidx/compose/ui/platform/OpenEndRange;Landroidx/compose/ui/platform/OpenEndRange;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->rangeUntil(FF)Landroidx/compose/ui/platform/OpenEndRange; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->semanticsIdToView(Landroidx/compose/ui/platform/AndroidViewsHandler;I)Landroid/view/View; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->toLegacyClassName-V4PA4sw(I)Ljava/lang/String; +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt$excludeLineAndPageGranularities$ancestor$1; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt$excludeLineAndPageGranularities$ancestor$1;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt$excludeLineAndPageGranularities$ancestor$1;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt$excludeLineAndPageGranularities$ancestor$1;->invoke(Landroidx/compose/ui/node/LayoutNode;)Ljava/lang/Boolean; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt$excludeLineAndPageGranularities$ancestor$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/AndroidComposeViewForceDarkModeQ; +HSPLandroidx/compose/ui/platform/AndroidComposeViewForceDarkModeQ;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewForceDarkModeQ;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewForceDarkModeQ;->disallowForceDark(Landroid/view/View;)V +Landroidx/compose/ui/platform/AndroidComposeViewVerificationHelperMethodsO; +HSPLandroidx/compose/ui/platform/AndroidComposeViewVerificationHelperMethodsO;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewVerificationHelperMethodsO;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewVerificationHelperMethodsO;->focusable(Landroid/view/View;IZ)V +Landroidx/compose/ui/platform/AndroidComposeView_androidKt; +HSPLandroidx/compose/ui/platform/AndroidComposeView_androidKt;->access$layoutDirectionFromInt(I)Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/platform/AndroidComposeView_androidKt;->getLocaleLayoutDirection(Landroid/content/res/Configuration;)Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/platform/AndroidComposeView_androidKt;->layoutDirectionFromInt(I)Landroidx/compose/ui/unit/LayoutDirection; +Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt;->()V +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt;->ProvideAndroidCompositionLocals$lambda$1(Landroidx/compose/runtime/MutableState;)Landroid/content/res/Configuration; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt;->ProvideAndroidCompositionLocals(Landroidx/compose/ui/platform/AndroidComposeView;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt;->getLocalConfiguration()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt;->getLocalContext()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt;->getLocalLifecycleOwner()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt;->getLocalView()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt;->obtainImageVectorCache(Landroid/content/Context;Landroid/content/res/Configuration;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/res/ImageVectorCache; +Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalConfiguration$1; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalConfiguration$1;->()V +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalConfiguration$1;->()V +Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalContext$1; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalContext$1;->()V +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalContext$1;->()V +Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalImageVectorCache$1; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalImageVectorCache$1;->()V +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalImageVectorCache$1;->()V +Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalLifecycleOwner$1; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalLifecycleOwner$1;->()V +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalLifecycleOwner$1;->()V +Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalSavedStateRegistryOwner$1; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalSavedStateRegistryOwner$1;->()V +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalSavedStateRegistryOwner$1;->()V +Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalView$1; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalView$1;->()V +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalView$1;->()V +Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$1$1; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$1$1;->(Landroidx/compose/runtime/MutableState;)V +Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$2; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$2;->(Landroidx/compose/ui/platform/DisposableSaveableStateRegistry;)V +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$2;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$2$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$2$invoke$$inlined$onDispose$1;->(Landroidx/compose/ui/platform/DisposableSaveableStateRegistry;)V +Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3;->(Landroidx/compose/ui/platform/AndroidComposeView;Landroidx/compose/ui/platform/AndroidUriHandler;Lkotlin/jvm/functions/Function2;I)V +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$4; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$4;->(Landroidx/compose/ui/platform/AndroidComposeView;Lkotlin/jvm/functions/Function2;I)V +Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$1; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$1;->(Landroid/content/Context;Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$callbacks$1$1;)V +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$1$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$1$invoke$$inlined$onDispose$1;->(Landroid/content/Context;Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$callbacks$1$1;)V +Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$callbacks$1$1; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$callbacks$1$1;->(Landroid/content/res/Configuration;Landroidx/compose/ui/res/ImageVectorCache;)V +Landroidx/compose/ui/platform/AndroidFontResourceLoader; +HSPLandroidx/compose/ui/platform/AndroidFontResourceLoader;->(Landroid/content/Context;)V +Landroidx/compose/ui/platform/AndroidTextToolbar; +HSPLandroidx/compose/ui/platform/AndroidTextToolbar;->(Landroid/view/View;)V +HSPLandroidx/compose/ui/platform/AndroidTextToolbar;->getStatus()Landroidx/compose/ui/platform/TextToolbarStatus; +Landroidx/compose/ui/platform/AndroidTextToolbar$textActionModeCallback$1; +HSPLandroidx/compose/ui/platform/AndroidTextToolbar$textActionModeCallback$1;->(Landroidx/compose/ui/platform/AndroidTextToolbar;)V +Landroidx/compose/ui/platform/AndroidUiDispatcher; +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->()V +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->(Landroid/view/Choreographer;Landroid/os/Handler;)V +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->(Landroid/view/Choreographer;Landroid/os/Handler;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$getHandler$p(Landroidx/compose/ui/platform/AndroidUiDispatcher;)Landroid/os/Handler; +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$getLock$p(Landroidx/compose/ui/platform/AndroidUiDispatcher;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$getMain$delegate$cp()Lkotlin/Lazy; +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$getToRunOnFrame$p(Landroidx/compose/ui/platform/AndroidUiDispatcher;)Ljava/util/List; +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$performFrameDispatch(Landroidx/compose/ui/platform/AndroidUiDispatcher;J)V +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$performTrampolineDispatch(Landroidx/compose/ui/platform/AndroidUiDispatcher;)V +PLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$setScheduledFrameDispatch$p(Landroidx/compose/ui/platform/AndroidUiDispatcher;Z)V +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->dispatch(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Runnable;)V +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->getChoreographer()Landroid/view/Choreographer; +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->getFrameClock()Landroidx/compose/runtime/MonotonicFrameClock; +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->nextTask()Ljava/lang/Runnable; +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->performFrameDispatch(J)V +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->performTrampolineDispatch()V +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->postFrameCallback$ui_release(Landroid/view/Choreographer$FrameCallback;)V +Landroidx/compose/ui/platform/AndroidUiDispatcher$Companion; +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$Companion;->()V +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$Companion;->getCurrentThread()Lkotlin/coroutines/CoroutineContext; +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$Companion;->getMain()Lkotlin/coroutines/CoroutineContext; +Landroidx/compose/ui/platform/AndroidUiDispatcher$Companion$Main$2; +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$Companion$Main$2;->()V +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$Companion$Main$2;->()V +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$Companion$Main$2;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$Companion$Main$2;->invoke()Lkotlin/coroutines/CoroutineContext; +Landroidx/compose/ui/platform/AndroidUiDispatcher$Companion$currentThread$1; +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$Companion$currentThread$1;->()V +Landroidx/compose/ui/platform/AndroidUiDispatcher$dispatchCallback$1; +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$dispatchCallback$1;->(Landroidx/compose/ui/platform/AndroidUiDispatcher;)V +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$dispatchCallback$1;->doFrame(J)V +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$dispatchCallback$1;->run()V +Landroidx/compose/ui/platform/AndroidUiDispatcher_androidKt; +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher_androidKt;->access$isMainThread()Z +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher_androidKt;->isMainThread()Z +Landroidx/compose/ui/platform/AndroidUiFrameClock; +HSPLandroidx/compose/ui/platform/AndroidUiFrameClock;->()V +HSPLandroidx/compose/ui/platform/AndroidUiFrameClock;->(Landroid/view/Choreographer;Landroidx/compose/ui/platform/AndroidUiDispatcher;)V +HSPLandroidx/compose/ui/platform/AndroidUiFrameClock;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/AndroidUiFrameClock;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLandroidx/compose/ui/platform/AndroidUiFrameClock;->getChoreographer()Landroid/view/Choreographer; +HSPLandroidx/compose/ui/platform/AndroidUiFrameClock;->minusKey(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext; +HSPLandroidx/compose/ui/platform/AndroidUiFrameClock;->withFrameNanos(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/ui/platform/AndroidUiFrameClock$withFrameNanos$2$1; +HSPLandroidx/compose/ui/platform/AndroidUiFrameClock$withFrameNanos$2$1;->(Landroidx/compose/ui/platform/AndroidUiDispatcher;Landroid/view/Choreographer$FrameCallback;)V +Landroidx/compose/ui/platform/AndroidUiFrameClock$withFrameNanos$2$callback$1; +HSPLandroidx/compose/ui/platform/AndroidUiFrameClock$withFrameNanos$2$callback$1;->(Lkotlinx/coroutines/CancellableContinuation;Landroidx/compose/ui/platform/AndroidUiFrameClock;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/platform/AndroidUiFrameClock$withFrameNanos$2$callback$1;->doFrame(J)V +Landroidx/compose/ui/platform/AndroidUriHandler; +HSPLandroidx/compose/ui/platform/AndroidUriHandler;->()V +HSPLandroidx/compose/ui/platform/AndroidUriHandler;->(Landroid/content/Context;)V +Landroidx/compose/ui/platform/AndroidViewConfiguration; +HSPLandroidx/compose/ui/platform/AndroidViewConfiguration;->()V +HSPLandroidx/compose/ui/platform/AndroidViewConfiguration;->(Landroid/view/ViewConfiguration;)V +HSPLandroidx/compose/ui/platform/AndroidViewConfiguration;->getTouchSlop()F +Landroidx/compose/ui/platform/AndroidViewsHandler; +HSPLandroidx/compose/ui/platform/AndroidViewsHandler;->(Landroid/content/Context;)V +HSPLandroidx/compose/ui/platform/AndroidViewsHandler;->getLayoutNodeToHolder()Ljava/util/HashMap; +HSPLandroidx/compose/ui/platform/AndroidViewsHandler;->onLayout(ZIIII)V +HSPLandroidx/compose/ui/platform/AndroidViewsHandler;->onMeasure(II)V +HSPLandroidx/compose/ui/platform/AndroidViewsHandler;->requestLayout()V +Landroidx/compose/ui/platform/CalculateMatrixToWindow; +Landroidx/compose/ui/platform/CalculateMatrixToWindowApi29; +HSPLandroidx/compose/ui/platform/CalculateMatrixToWindowApi29;->()V +HSPLandroidx/compose/ui/platform/CalculateMatrixToWindowApi29;->calculateMatrixToWindow-EL8BTi8(Landroid/view/View;[F)V +Landroidx/compose/ui/platform/ClipboardManager; +Landroidx/compose/ui/platform/ComposableSingletons$Wrapper_androidKt; +HSPLandroidx/compose/ui/platform/ComposableSingletons$Wrapper_androidKt;->()V +HSPLandroidx/compose/ui/platform/ComposableSingletons$Wrapper_androidKt;->()V +HSPLandroidx/compose/ui/platform/ComposableSingletons$Wrapper_androidKt;->getLambda-1$ui_release()Lkotlin/jvm/functions/Function2; +Landroidx/compose/ui/platform/ComposableSingletons$Wrapper_androidKt$lambda-1$1; +HSPLandroidx/compose/ui/platform/ComposableSingletons$Wrapper_androidKt$lambda-1$1;->()V +HSPLandroidx/compose/ui/platform/ComposableSingletons$Wrapper_androidKt$lambda-1$1;->()V +Landroidx/compose/ui/platform/ComposeView; +HSPLandroidx/compose/ui/platform/ComposeView;->()V +HSPLandroidx/compose/ui/platform/ComposeView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroidx/compose/ui/platform/ComposeView;->(Landroid/content/Context;Landroid/util/AttributeSet;IILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/platform/ComposeView;->Content(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/ui/platform/ComposeView;->getAccessibilityClassName()Ljava/lang/CharSequence; +HSPLandroidx/compose/ui/platform/ComposeView;->getShouldCreateCompositionOnAttachedToWindow()Z +HSPLandroidx/compose/ui/platform/ComposeView;->setContent(Lkotlin/jvm/functions/Function2;)V +Landroidx/compose/ui/platform/ComposeView$Content$1; +HSPLandroidx/compose/ui/platform/ComposeView$Content$1;->(Landroidx/compose/ui/platform/ComposeView;I)V +Landroidx/compose/ui/platform/CompositionLocalsKt; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->ProvideCommonCompositionLocals(Landroidx/compose/ui/node/Owner;Landroidx/compose/ui/platform/UriHandler;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->getLocalAutofill()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->getLocalAutofillTree()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->getLocalClipboardManager()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->getLocalDensity()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->getLocalFocusManager()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->getLocalFontFamilyResolver()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->getLocalHapticFeedback()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->getLocalInputModeManager()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->getLocalLayoutDirection()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->getLocalPointerIconService()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->getLocalTextInputService()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->getLocalTextToolbar()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->getLocalViewConfiguration()Landroidx/compose/runtime/ProvidableCompositionLocal; +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalAccessibilityManager$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalAccessibilityManager$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalAccessibilityManager$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalAutofill$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalAutofill$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalAutofill$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalAutofillTree$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalAutofillTree$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalAutofillTree$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalClipboardManager$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalClipboardManager$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalClipboardManager$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalDensity$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalDensity$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalDensity$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalFocusManager$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalFocusManager$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalFocusManager$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalFontFamilyResolver$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalFontFamilyResolver$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalFontFamilyResolver$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalFontLoader$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalFontLoader$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalFontLoader$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalHapticFeedback$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalHapticFeedback$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalHapticFeedback$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalInputModeManager$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalInputModeManager$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalInputModeManager$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalLayoutDirection$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalLayoutDirection$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalLayoutDirection$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalPlatformTextInputPluginRegistry$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalPlatformTextInputPluginRegistry$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalPlatformTextInputPluginRegistry$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalPointerIconService$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalPointerIconService$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalPointerIconService$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalTextInputService$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalTextInputService$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalTextInputService$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalTextToolbar$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalTextToolbar$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalTextToolbar$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalUriHandler$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalUriHandler$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalUriHandler$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalViewConfiguration$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalViewConfiguration$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalViewConfiguration$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalWindowInfo$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalWindowInfo$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalWindowInfo$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$ProvideCommonCompositionLocals$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$ProvideCommonCompositionLocals$1;->(Landroidx/compose/ui/node/Owner;Landroidx/compose/ui/platform/UriHandler;Lkotlin/jvm/functions/Function2;I)V +Landroidx/compose/ui/platform/DelegatingSoftwareKeyboardController; +HSPLandroidx/compose/ui/platform/DelegatingSoftwareKeyboardController;->(Landroidx/compose/ui/text/input/TextInputService;)V +Landroidx/compose/ui/platform/DeviceRenderNode; +Landroidx/compose/ui/platform/DisposableSaveableStateRegistry; +HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry;->(Landroidx/compose/runtime/saveable/SaveableStateRegistry;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry;->canBeSaved(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry;->consumeRestored(Ljava/lang/String;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry;->registerProvider(Ljava/lang/String;Lkotlin/jvm/functions/Function0;)Landroidx/compose/runtime/saveable/SaveableStateRegistry$Entry; +Landroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt; +HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt;->()V +HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt;->DisposableSaveableStateRegistry(Landroid/view/View;Landroidx/savedstate/SavedStateRegistryOwner;)Landroidx/compose/ui/platform/DisposableSaveableStateRegistry; +HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt;->DisposableSaveableStateRegistry(Ljava/lang/String;Landroidx/savedstate/SavedStateRegistryOwner;)Landroidx/compose/ui/platform/DisposableSaveableStateRegistry; +HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt;->access$canBeSavedToBundle(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt;->canBeSavedToBundle(Ljava/lang/Object;)Z +Landroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$1; +HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$1;->(ZLandroidx/savedstate/SavedStateRegistry;Ljava/lang/String;)V +Landroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$registered$1; +HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$registered$1;->(Landroidx/compose/runtime/saveable/SaveableStateRegistry;)V +Landroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$saveableStateRegistry$1; +HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$saveableStateRegistry$1;->()V +HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$saveableStateRegistry$1;->()V +HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$saveableStateRegistry$1;->invoke(Ljava/lang/Object;)Ljava/lang/Boolean; +HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$saveableStateRegistry$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/GlobalSnapshotManager; +HSPLandroidx/compose/ui/platform/GlobalSnapshotManager;->()V +HSPLandroidx/compose/ui/platform/GlobalSnapshotManager;->()V +HSPLandroidx/compose/ui/platform/GlobalSnapshotManager;->ensureStarted()V +Landroidx/compose/ui/platform/GlobalSnapshotManager$ensureStarted$1; +HSPLandroidx/compose/ui/platform/GlobalSnapshotManager$ensureStarted$1;->(Lkotlinx/coroutines/channels/Channel;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/ui/platform/GlobalSnapshotManager$ensureStarted$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/ui/platform/GlobalSnapshotManager$ensureStarted$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/GlobalSnapshotManager$ensureStarted$2; +HSPLandroidx/compose/ui/platform/GlobalSnapshotManager$ensureStarted$2;->(Lkotlinx/coroutines/channels/Channel;)V +HSPLandroidx/compose/ui/platform/GlobalSnapshotManager$ensureStarted$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/GlobalSnapshotManager$ensureStarted$2;->invoke(Ljava/lang/Object;)V +Landroidx/compose/ui/platform/InfiniteAnimationPolicy; +HSPLandroidx/compose/ui/platform/InfiniteAnimationPolicy;->()V +Landroidx/compose/ui/platform/InfiniteAnimationPolicy$Key; +HSPLandroidx/compose/ui/platform/InfiniteAnimationPolicy$Key;->()V +HSPLandroidx/compose/ui/platform/InfiniteAnimationPolicy$Key;->()V +Landroidx/compose/ui/platform/InspectableModifier; +HSPLandroidx/compose/ui/platform/InspectableModifier;->()V +HSPLandroidx/compose/ui/platform/InspectableModifier;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/platform/InspectableModifier;->getEnd()Landroidx/compose/ui/platform/InspectableModifier$End; +Landroidx/compose/ui/platform/InspectableModifier$End; +HSPLandroidx/compose/ui/platform/InspectableModifier$End;->(Landroidx/compose/ui/platform/InspectableModifier;)V +Landroidx/compose/ui/platform/InspectableValue; +Landroidx/compose/ui/platform/InspectableValueKt; +HSPLandroidx/compose/ui/platform/InspectableValueKt;->()V +HSPLandroidx/compose/ui/platform/InspectableValueKt;->getNoInspectorInfo()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/ui/platform/InspectableValueKt;->inspectableWrapper(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/platform/InspectableValueKt;->isDebugInspectorInfoEnabled()Z +Landroidx/compose/ui/platform/InspectableValueKt$NoInspectorInfo$1; +HSPLandroidx/compose/ui/platform/InspectableValueKt$NoInspectorInfo$1;->()V +HSPLandroidx/compose/ui/platform/InspectableValueKt$NoInspectorInfo$1;->()V +Landroidx/compose/ui/platform/InspectorValueInfo; +HSPLandroidx/compose/ui/platform/InspectorValueInfo;->()V +HSPLandroidx/compose/ui/platform/InspectorValueInfo;->(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/ui/platform/InvertMatrixKt; +HSPLandroidx/compose/ui/platform/InvertMatrixKt;->invertTo-JiSxe2E([F[F)Z +Landroidx/compose/ui/platform/LayerMatrixCache; +HSPLandroidx/compose/ui/platform/LayerMatrixCache;->(Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/platform/LayerMatrixCache;->calculateInverseMatrix-bWbORWo(Ljava/lang/Object;)[F +HSPLandroidx/compose/ui/platform/LayerMatrixCache;->calculateMatrix-GrdbGEg(Ljava/lang/Object;)[F +HSPLandroidx/compose/ui/platform/LayerMatrixCache;->invalidate()V +Landroidx/compose/ui/platform/LocalSoftwareKeyboardController; +HSPLandroidx/compose/ui/platform/LocalSoftwareKeyboardController;->()V +HSPLandroidx/compose/ui/platform/LocalSoftwareKeyboardController;->()V +HSPLandroidx/compose/ui/platform/LocalSoftwareKeyboardController;->delegatingController(Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/platform/SoftwareKeyboardController; +HSPLandroidx/compose/ui/platform/LocalSoftwareKeyboardController;->getCurrent(Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/platform/SoftwareKeyboardController; +Landroidx/compose/ui/platform/LocalSoftwareKeyboardController$LocalSoftwareKeyboardController$1; +HSPLandroidx/compose/ui/platform/LocalSoftwareKeyboardController$LocalSoftwareKeyboardController$1;->()V +HSPLandroidx/compose/ui/platform/LocalSoftwareKeyboardController$LocalSoftwareKeyboardController$1;->()V +HSPLandroidx/compose/ui/platform/LocalSoftwareKeyboardController$LocalSoftwareKeyboardController$1;->invoke()Landroidx/compose/ui/platform/SoftwareKeyboardController; +HSPLandroidx/compose/ui/platform/LocalSoftwareKeyboardController$LocalSoftwareKeyboardController$1;->invoke()Ljava/lang/Object; +Landroidx/compose/ui/platform/MotionDurationScaleImpl; +HSPLandroidx/compose/ui/platform/MotionDurationScaleImpl;->()V +HSPLandroidx/compose/ui/platform/MotionDurationScaleImpl;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/MotionDurationScaleImpl;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLandroidx/compose/ui/platform/MotionDurationScaleImpl;->getScaleFactor()F +HSPLandroidx/compose/ui/platform/MotionDurationScaleImpl;->minusKey(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext; +HSPLandroidx/compose/ui/platform/MotionDurationScaleImpl;->setScaleFactor(F)V +Landroidx/compose/ui/platform/OpenEndFloatRange; +HSPLandroidx/compose/ui/platform/OpenEndFloatRange;->(FF)V +HSPLandroidx/compose/ui/platform/OpenEndFloatRange;->getEndExclusive()Ljava/lang/Comparable; +HSPLandroidx/compose/ui/platform/OpenEndFloatRange;->getEndExclusive()Ljava/lang/Float; +HSPLandroidx/compose/ui/platform/OpenEndFloatRange;->getStart()Ljava/lang/Comparable; +HSPLandroidx/compose/ui/platform/OpenEndFloatRange;->getStart()Ljava/lang/Float; +HSPLandroidx/compose/ui/platform/OpenEndFloatRange;->isEmpty()Z +Landroidx/compose/ui/platform/OpenEndRange; +Landroidx/compose/ui/platform/OutlineResolver; +HSPLandroidx/compose/ui/platform/OutlineResolver;->(Landroidx/compose/ui/unit/Density;)V +HSPLandroidx/compose/ui/platform/OutlineResolver;->getOutline()Landroid/graphics/Outline; +HSPLandroidx/compose/ui/platform/OutlineResolver;->getOutlineClipSupported()Z +HSPLandroidx/compose/ui/platform/OutlineResolver;->isInOutline-k-4lQ0M(J)Z +HSPLandroidx/compose/ui/platform/OutlineResolver;->update(Landroidx/compose/ui/graphics/Shape;FZFLandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/unit/Density;)Z +HSPLandroidx/compose/ui/platform/OutlineResolver;->update-uvyYCjk(J)V +HSPLandroidx/compose/ui/platform/OutlineResolver;->updateCache()V +HSPLandroidx/compose/ui/platform/OutlineResolver;->updateCacheWithPath(Landroidx/compose/ui/graphics/Path;)V +HSPLandroidx/compose/ui/platform/OutlineResolver;->updateCacheWithRect(Landroidx/compose/ui/geometry/Rect;)V +HSPLandroidx/compose/ui/platform/OutlineResolver;->updateCacheWithRoundRect(Landroidx/compose/ui/geometry/RoundRect;)V +Landroidx/compose/ui/platform/RenderNodeApi29; +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->(Landroidx/compose/ui/platform/AndroidComposeView;)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->discardDisplayList()V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->drawInto(Landroid/graphics/Canvas;)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->getAlpha()F +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->getClipToBounds()Z +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->getClipToOutline()Z +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->getElevation()F +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->getHasDisplayList()Z +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->getHeight()I +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->getLeft()I +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->getMatrix(Landroid/graphics/Matrix;)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->getTop()I +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->getWidth()I +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->offsetLeftAndRight(I)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->offsetTopAndBottom(I)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->record(Landroidx/compose/ui/graphics/CanvasHolder;Landroidx/compose/ui/graphics/Path;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setAlpha(F)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setAmbientShadowColor(I)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setCameraDistance(F)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setClipToBounds(Z)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setClipToOutline(Z)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setCompositingStrategy-aDBOjCE(I)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setElevation(F)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setHasOverlappingRendering(Z)Z +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setOutline(Landroid/graphics/Outline;)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setPivotX(F)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setPivotY(F)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setPosition(IIII)Z +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setRenderEffect(Landroidx/compose/ui/graphics/RenderEffect;)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setRotationX(F)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setRotationY(F)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setRotationZ(F)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setScaleX(F)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setScaleY(F)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setSpotShadowColor(I)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setTranslationX(F)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setTranslationY(F)V +Landroidx/compose/ui/platform/RenderNodeApi29VerificationHelper; +HSPLandroidx/compose/ui/platform/RenderNodeApi29VerificationHelper;->()V +HSPLandroidx/compose/ui/platform/RenderNodeApi29VerificationHelper;->()V +HSPLandroidx/compose/ui/platform/RenderNodeApi29VerificationHelper;->setRenderEffect(Landroid/graphics/RenderNode;Landroidx/compose/ui/graphics/RenderEffect;)V +Landroidx/compose/ui/platform/RenderNodeLayer; +HSPLandroidx/compose/ui/platform/RenderNodeLayer;->()V +HSPLandroidx/compose/ui/platform/RenderNodeLayer;->(Landroidx/compose/ui/platform/AndroidComposeView;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/platform/RenderNodeLayer;->destroy()V +HSPLandroidx/compose/ui/platform/RenderNodeLayer;->drawLayer(Landroidx/compose/ui/graphics/Canvas;)V +HSPLandroidx/compose/ui/platform/RenderNodeLayer;->invalidate()V +HSPLandroidx/compose/ui/platform/RenderNodeLayer;->isInLayer-k-4lQ0M(J)Z +HSPLandroidx/compose/ui/platform/RenderNodeLayer;->mapBounds(Landroidx/compose/ui/geometry/MutableRect;Z)V +HSPLandroidx/compose/ui/platform/RenderNodeLayer;->mapOffset-8S9VItk(JZ)J +HSPLandroidx/compose/ui/platform/RenderNodeLayer;->move--gyyYBs(J)V +HSPLandroidx/compose/ui/platform/RenderNodeLayer;->resize-ozmzZPI(J)V +HSPLandroidx/compose/ui/platform/RenderNodeLayer;->reuseLayer(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/platform/RenderNodeLayer;->setDirty(Z)V +HSPLandroidx/compose/ui/platform/RenderNodeLayer;->triggerRepaint()V +HSPLandroidx/compose/ui/platform/RenderNodeLayer;->updateDisplayList()V +HSPLandroidx/compose/ui/platform/RenderNodeLayer;->updateLayerProperties-dDxr-wY(FFFFFFFFFFJLandroidx/compose/ui/graphics/Shape;ZLandroidx/compose/ui/graphics/RenderEffect;JJILandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/unit/Density;)V +Landroidx/compose/ui/platform/RenderNodeLayer$Companion; +HSPLandroidx/compose/ui/platform/RenderNodeLayer$Companion;->()V +HSPLandroidx/compose/ui/platform/RenderNodeLayer$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/platform/RenderNodeLayer$Companion$getMatrix$1; +HSPLandroidx/compose/ui/platform/RenderNodeLayer$Companion$getMatrix$1;->()V +HSPLandroidx/compose/ui/platform/RenderNodeLayer$Companion$getMatrix$1;->()V +HSPLandroidx/compose/ui/platform/RenderNodeLayer$Companion$getMatrix$1;->invoke(Landroidx/compose/ui/platform/DeviceRenderNode;Landroid/graphics/Matrix;)V +HSPLandroidx/compose/ui/platform/RenderNodeLayer$Companion$getMatrix$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/SemanticsNodeWithAdjustedBounds; +HSPLandroidx/compose/ui/platform/SemanticsNodeWithAdjustedBounds;->(Landroidx/compose/ui/semantics/SemanticsNode;Landroid/graphics/Rect;)V +HSPLandroidx/compose/ui/platform/SemanticsNodeWithAdjustedBounds;->getAdjustedBounds()Landroid/graphics/Rect; +HSPLandroidx/compose/ui/platform/SemanticsNodeWithAdjustedBounds;->getSemanticsNode()Landroidx/compose/ui/semantics/SemanticsNode; +Landroidx/compose/ui/platform/ShapeContainingUtilKt; +HSPLandroidx/compose/ui/platform/ShapeContainingUtilKt;->cornersFit(Landroidx/compose/ui/geometry/RoundRect;)Z +HSPLandroidx/compose/ui/platform/ShapeContainingUtilKt;->isInOutline(Landroidx/compose/ui/graphics/Outline;FFLandroidx/compose/ui/graphics/Path;Landroidx/compose/ui/graphics/Path;)Z +HSPLandroidx/compose/ui/platform/ShapeContainingUtilKt;->isInRectangle(Landroidx/compose/ui/geometry/Rect;FF)Z +HSPLandroidx/compose/ui/platform/ShapeContainingUtilKt;->isInRoundedRect(Landroidx/compose/ui/graphics/Outline$Rounded;FFLandroidx/compose/ui/graphics/Path;Landroidx/compose/ui/graphics/Path;)Z +Landroidx/compose/ui/platform/SoftwareKeyboardController; +Landroidx/compose/ui/platform/TestTagKt; +HSPLandroidx/compose/ui/platform/TestTagKt;->testTag(Landroidx/compose/ui/Modifier;Ljava/lang/String;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/platform/TestTagKt$testTag$1; +HSPLandroidx/compose/ui/platform/TestTagKt$testTag$1;->(Ljava/lang/String;)V +HSPLandroidx/compose/ui/platform/TestTagKt$testTag$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/ui/platform/TestTagKt$testTag$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/TextToolbar; +Landroidx/compose/ui/platform/TextToolbarStatus; +HSPLandroidx/compose/ui/platform/TextToolbarStatus;->$values()[Landroidx/compose/ui/platform/TextToolbarStatus; +HSPLandroidx/compose/ui/platform/TextToolbarStatus;->()V +HSPLandroidx/compose/ui/platform/TextToolbarStatus;->(Ljava/lang/String;I)V +Landroidx/compose/ui/platform/UriHandler; +Landroidx/compose/ui/platform/ViewCompositionStrategy; +HSPLandroidx/compose/ui/platform/ViewCompositionStrategy;->()V +Landroidx/compose/ui/platform/ViewCompositionStrategy$Companion; +HSPLandroidx/compose/ui/platform/ViewCompositionStrategy$Companion;->()V +HSPLandroidx/compose/ui/platform/ViewCompositionStrategy$Companion;->()V +HSPLandroidx/compose/ui/platform/ViewCompositionStrategy$Companion;->getDefault()Landroidx/compose/ui/platform/ViewCompositionStrategy; +Landroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool; +HSPLandroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool;->()V +HSPLandroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool;->()V +HSPLandroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool;->installFor(Landroidx/compose/ui/platform/AbstractComposeView;)Lkotlin/jvm/functions/Function0; +Landroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool$installFor$1; +HSPLandroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool$installFor$1;->(Landroidx/compose/ui/platform/AbstractComposeView;Landroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool$installFor$listener$1;Landroidx/customview/poolingcontainer/PoolingContainerListener;)V +Landroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool$installFor$listener$1; +HSPLandroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool$installFor$listener$1;->(Landroidx/compose/ui/platform/AbstractComposeView;)V +HSPLandroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool$installFor$listener$1;->onViewAttachedToWindow(Landroid/view/View;)V +Landroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool$installFor$poolingContainerListener$1; +HSPLandroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool$installFor$poolingContainerListener$1;->(Landroidx/compose/ui/platform/AbstractComposeView;)V +Landroidx/compose/ui/platform/ViewConfiguration; +HSPLandroidx/compose/ui/platform/ViewConfiguration;->getMinimumTouchTargetSize-MYxV2XQ()J +Landroidx/compose/ui/platform/ViewLayer; +HSPLandroidx/compose/ui/platform/ViewLayer;->()V +HSPLandroidx/compose/ui/platform/ViewLayer;->access$getShouldUseDispatchDraw$cp()Z +Landroidx/compose/ui/platform/ViewLayer$Companion; +HSPLandroidx/compose/ui/platform/ViewLayer$Companion;->()V +HSPLandroidx/compose/ui/platform/ViewLayer$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/platform/ViewLayer$Companion;->getShouldUseDispatchDraw()Z +Landroidx/compose/ui/platform/ViewLayer$Companion$OutlineProvider$1; +HSPLandroidx/compose/ui/platform/ViewLayer$Companion$OutlineProvider$1;->()V +Landroidx/compose/ui/platform/ViewLayer$Companion$getMatrix$1; +HSPLandroidx/compose/ui/platform/ViewLayer$Companion$getMatrix$1;->()V +HSPLandroidx/compose/ui/platform/ViewLayer$Companion$getMatrix$1;->()V +Landroidx/compose/ui/platform/ViewRootForTest; +HSPLandroidx/compose/ui/platform/ViewRootForTest;->()V +Landroidx/compose/ui/platform/ViewRootForTest$Companion; +HSPLandroidx/compose/ui/platform/ViewRootForTest$Companion;->()V +HSPLandroidx/compose/ui/platform/ViewRootForTest$Companion;->()V +HSPLandroidx/compose/ui/platform/ViewRootForTest$Companion;->getOnViewCreatedCallback()Lkotlin/jvm/functions/Function1; +Landroidx/compose/ui/platform/WeakCache; +HSPLandroidx/compose/ui/platform/WeakCache;->()V +HSPLandroidx/compose/ui/platform/WeakCache;->clearWeakReferences()V +HSPLandroidx/compose/ui/platform/WeakCache;->pop()Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/WeakCache;->push(Ljava/lang/Object;)V +Landroidx/compose/ui/platform/WindowInfo; +Landroidx/compose/ui/platform/WindowInfoImpl; +HSPLandroidx/compose/ui/platform/WindowInfoImpl;->()V +HSPLandroidx/compose/ui/platform/WindowInfoImpl;->()V +HSPLandroidx/compose/ui/platform/WindowInfoImpl;->setKeyboardModifiers-5xRPYO0(I)V +HSPLandroidx/compose/ui/platform/WindowInfoImpl;->setWindowFocused(Z)V +Landroidx/compose/ui/platform/WindowInfoImpl$Companion; +HSPLandroidx/compose/ui/platform/WindowInfoImpl$Companion;->()V +HSPLandroidx/compose/ui/platform/WindowInfoImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/platform/WindowRecomposerFactory; +HSPLandroidx/compose/ui/platform/WindowRecomposerFactory;->()V +Landroidx/compose/ui/platform/WindowRecomposerFactory$Companion; +HSPLandroidx/compose/ui/platform/WindowRecomposerFactory$Companion;->()V +HSPLandroidx/compose/ui/platform/WindowRecomposerFactory$Companion;->()V +HSPLandroidx/compose/ui/platform/WindowRecomposerFactory$Companion;->getLifecycleAware()Landroidx/compose/ui/platform/WindowRecomposerFactory; +Landroidx/compose/ui/platform/WindowRecomposerFactory$Companion$LifecycleAware$1; +HSPLandroidx/compose/ui/platform/WindowRecomposerFactory$Companion$LifecycleAware$1;->()V +HSPLandroidx/compose/ui/platform/WindowRecomposerFactory$Companion$LifecycleAware$1;->()V +HSPLandroidx/compose/ui/platform/WindowRecomposerFactory$Companion$LifecycleAware$1;->createRecomposer(Landroid/view/View;)Landroidx/compose/runtime/Recomposer; +Landroidx/compose/ui/platform/WindowRecomposerPolicy; +HSPLandroidx/compose/ui/platform/WindowRecomposerPolicy;->()V +HSPLandroidx/compose/ui/platform/WindowRecomposerPolicy;->()V +HSPLandroidx/compose/ui/platform/WindowRecomposerPolicy;->createAndInstallWindowRecomposer$ui_release(Landroid/view/View;)Landroidx/compose/runtime/Recomposer; +Landroidx/compose/ui/platform/WindowRecomposerPolicy$createAndInstallWindowRecomposer$1; +HSPLandroidx/compose/ui/platform/WindowRecomposerPolicy$createAndInstallWindowRecomposer$1;->(Lkotlinx/coroutines/Job;)V +HSPLandroidx/compose/ui/platform/WindowRecomposerPolicy$createAndInstallWindowRecomposer$1;->onViewAttachedToWindow(Landroid/view/View;)V +Landroidx/compose/ui/platform/WindowRecomposerPolicy$createAndInstallWindowRecomposer$unsetJob$1; +HSPLandroidx/compose/ui/platform/WindowRecomposerPolicy$createAndInstallWindowRecomposer$unsetJob$1;->(Landroidx/compose/runtime/Recomposer;Landroid/view/View;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/ui/platform/WindowRecomposerPolicy$createAndInstallWindowRecomposer$unsetJob$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/ui/platform/WindowRecomposerPolicy$createAndInstallWindowRecomposer$unsetJob$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/WindowRecomposer_androidKt; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt;->()V +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt;->access$getAnimationScaleFlowFor(Landroid/content/Context;)Lkotlinx/coroutines/flow/StateFlow; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt;->createLifecycleAwareWindowRecomposer$default(Landroid/view/View;Lkotlin/coroutines/CoroutineContext;Landroidx/lifecycle/Lifecycle;ILjava/lang/Object;)Landroidx/compose/runtime/Recomposer; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt;->createLifecycleAwareWindowRecomposer(Landroid/view/View;Lkotlin/coroutines/CoroutineContext;Landroidx/lifecycle/Lifecycle;)Landroidx/compose/runtime/Recomposer; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt;->findViewTreeCompositionContext(Landroid/view/View;)Landroidx/compose/runtime/CompositionContext; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt;->getAnimationScaleFlowFor(Landroid/content/Context;)Lkotlinx/coroutines/flow/StateFlow; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt;->getCompositionContext(Landroid/view/View;)Landroidx/compose/runtime/CompositionContext; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt;->getContentChild(Landroid/view/View;)Landroid/view/View; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt;->getWindowRecomposer(Landroid/view/View;)Landroidx/compose/runtime/Recomposer; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt;->setCompositionContext(Landroid/view/View;Landroidx/compose/runtime/CompositionContext;)V +Landroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$1; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$1;->(Landroid/view/View;Landroidx/compose/runtime/Recomposer;)V +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$1;->onViewAttachedToWindow(Landroid/view/View;)V +Landroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2;->(Lkotlinx/coroutines/CoroutineScope;Landroidx/compose/runtime/PausableMonotonicFrameClock;Landroidx/compose/runtime/Recomposer;Lkotlin/jvm/internal/Ref$ObjectRef;Landroid/view/View;)V +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +Landroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$WhenMappings; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$WhenMappings;->()V +Landroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1;->(Lkotlin/jvm/internal/Ref$ObjectRef;Landroidx/compose/runtime/Recomposer;Landroidx/lifecycle/LifecycleOwner;Landroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2;Landroid/view/View;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1$1$1; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1$1$1;->(Lkotlinx/coroutines/flow/StateFlow;Landroidx/compose/ui/platform/MotionDurationScaleImpl;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1$1$1$1; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1$1$1$1;->(Landroidx/compose/ui/platform/MotionDurationScaleImpl;)V +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1$1$1$1;->emit(FLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1$1$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/ui/platform/WindowRecomposer_androidKt$getAnimationScaleFlowFor$1$1$1; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$getAnimationScaleFlowFor$1$1$1;->(Landroid/content/ContentResolver;Landroid/net/Uri;Landroidx/compose/ui/platform/WindowRecomposer_androidKt$getAnimationScaleFlowFor$1$1$contentObserver$1;Lkotlinx/coroutines/channels/Channel;Landroid/content/Context;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$getAnimationScaleFlowFor$1$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$getAnimationScaleFlowFor$1$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$getAnimationScaleFlowFor$1$1$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$getAnimationScaleFlowFor$1$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/WindowRecomposer_androidKt$getAnimationScaleFlowFor$1$1$contentObserver$1; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$getAnimationScaleFlowFor$1$1$contentObserver$1;->(Lkotlinx/coroutines/channels/Channel;Landroid/os/Handler;)V +Landroidx/compose/ui/platform/WrappedComposition; +HSPLandroidx/compose/ui/platform/WrappedComposition;->(Landroidx/compose/ui/platform/AndroidComposeView;Landroidx/compose/runtime/Composition;)V +HSPLandroidx/compose/ui/platform/WrappedComposition;->access$getAddedToLifecycle$p(Landroidx/compose/ui/platform/WrappedComposition;)Landroidx/lifecycle/Lifecycle; +HSPLandroidx/compose/ui/platform/WrappedComposition;->access$getDisposed$p(Landroidx/compose/ui/platform/WrappedComposition;)Z +HSPLandroidx/compose/ui/platform/WrappedComposition;->access$setAddedToLifecycle$p(Landroidx/compose/ui/platform/WrappedComposition;Landroidx/lifecycle/Lifecycle;)V +HSPLandroidx/compose/ui/platform/WrappedComposition;->access$setLastContent$p(Landroidx/compose/ui/platform/WrappedComposition;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/platform/WrappedComposition;->getOriginal()Landroidx/compose/runtime/Composition; +HSPLandroidx/compose/ui/platform/WrappedComposition;->getOwner()Landroidx/compose/ui/platform/AndroidComposeView; +HSPLandroidx/compose/ui/platform/WrappedComposition;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +HSPLandroidx/compose/ui/platform/WrappedComposition;->setContent(Lkotlin/jvm/functions/Function2;)V +Landroidx/compose/ui/platform/WrappedComposition$setContent$1; +HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1;->(Landroidx/compose/ui/platform/WrappedComposition;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1;->invoke(Landroidx/compose/ui/platform/AndroidComposeView$ViewTreeOwners;)V +HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/WrappedComposition$setContent$1$1; +HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1$1;->(Landroidx/compose/ui/platform/WrappedComposition;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/WrappedComposition$setContent$1$1$1; +HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1$1$1;->(Landroidx/compose/ui/platform/WrappedComposition;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/WrappedComposition$setContent$1$1$2; +HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1$1$2;->(Landroidx/compose/ui/platform/WrappedComposition;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1$1$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/WrapperRenderNodeLayerHelperMethods; +HSPLandroidx/compose/ui/platform/WrapperRenderNodeLayerHelperMethods;->()V +HSPLandroidx/compose/ui/platform/WrapperRenderNodeLayerHelperMethods;->()V +HSPLandroidx/compose/ui/platform/WrapperRenderNodeLayerHelperMethods;->onDescendantInvalidated(Landroidx/compose/ui/platform/AndroidComposeView;)V +Landroidx/compose/ui/platform/WrapperVerificationHelperMethods; +HSPLandroidx/compose/ui/platform/WrapperVerificationHelperMethods;->()V +HSPLandroidx/compose/ui/platform/WrapperVerificationHelperMethods;->()V +HSPLandroidx/compose/ui/platform/WrapperVerificationHelperMethods;->attributeSourceResourceMap(Landroid/view/View;)Ljava/util/Map; +Landroidx/compose/ui/platform/Wrapper_androidKt; +HSPLandroidx/compose/ui/platform/Wrapper_androidKt;->()V +HSPLandroidx/compose/ui/platform/Wrapper_androidKt;->createSubcomposition(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/runtime/CompositionContext;)Landroidx/compose/runtime/Composition; +HSPLandroidx/compose/ui/platform/Wrapper_androidKt;->doSetContent(Landroidx/compose/ui/platform/AndroidComposeView;Landroidx/compose/runtime/CompositionContext;Lkotlin/jvm/functions/Function2;)Landroidx/compose/runtime/Composition; +HSPLandroidx/compose/ui/platform/Wrapper_androidKt;->inspectionWanted(Landroidx/compose/ui/platform/AndroidComposeView;)Z +HSPLandroidx/compose/ui/platform/Wrapper_androidKt;->setContent(Landroidx/compose/ui/platform/AbstractComposeView;Landroidx/compose/runtime/CompositionContext;Lkotlin/jvm/functions/Function2;)Landroidx/compose/runtime/Composition; +Landroidx/compose/ui/platform/accessibility/CollectionInfoKt; +HSPLandroidx/compose/ui/platform/accessibility/CollectionInfoKt;->calculateIfHorizontallyStacked(Ljava/util/List;)Z +HSPLandroidx/compose/ui/platform/accessibility/CollectionInfoKt;->hasCollectionInfo(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/accessibility/CollectionInfoKt;->setCollectionInfo(Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V +HSPLandroidx/compose/ui/platform/accessibility/CollectionInfoKt;->setCollectionItemInfo(Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V +PLandroidx/compose/ui/platform/accessibility/CollectionInfoKt;->toAccessibilityCollectionInfo(Landroidx/compose/ui/semantics/CollectionInfo;)Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$CollectionInfoCompat; +Landroidx/compose/ui/platform/accessibility/CollectionInfoKt$setCollectionItemInfo$itemInfo$1; +HSPLandroidx/compose/ui/platform/accessibility/CollectionInfoKt$setCollectionItemInfo$itemInfo$1;->()V +HSPLandroidx/compose/ui/platform/accessibility/CollectionInfoKt$setCollectionItemInfo$itemInfo$1;->()V +Landroidx/compose/ui/platform/actionmodecallback/TextActionModeCallback; +HSPLandroidx/compose/ui/platform/actionmodecallback/TextActionModeCallback;->(Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/geometry/Rect;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/platform/actionmodecallback/TextActionModeCallback;->(Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/geometry/Rect;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/platform/coreshims/ContentCaptureSessionCompat; +Landroidx/compose/ui/platform/coreshims/SoftwareKeyboardControllerCompat; +HSPLandroidx/compose/ui/platform/coreshims/SoftwareKeyboardControllerCompat;->(Landroid/view/View;)V +HSPLandroidx/compose/ui/platform/coreshims/SoftwareKeyboardControllerCompat;->hide()V +HSPLandroidx/compose/ui/platform/coreshims/SoftwareKeyboardControllerCompat;->show()V +Landroidx/compose/ui/platform/coreshims/SoftwareKeyboardControllerCompat$Impl; +HSPLandroidx/compose/ui/platform/coreshims/SoftwareKeyboardControllerCompat$Impl;->()V +Landroidx/compose/ui/platform/coreshims/SoftwareKeyboardControllerCompat$Impl20; +HSPLandroidx/compose/ui/platform/coreshims/SoftwareKeyboardControllerCompat$Impl20;->(Landroid/view/View;)V +Landroidx/compose/ui/platform/coreshims/SoftwareKeyboardControllerCompat$Impl30; +HSPLandroidx/compose/ui/platform/coreshims/SoftwareKeyboardControllerCompat$Impl30;->(Landroid/view/View;)V +HSPLandroidx/compose/ui/platform/coreshims/SoftwareKeyboardControllerCompat$Impl30;->hide()V +HSPLandroidx/compose/ui/platform/coreshims/SoftwareKeyboardControllerCompat$Impl30;->lambda$hide$0(Ljava/util/concurrent/atomic/AtomicBoolean;Landroid/view/WindowInsetsController;I)V +HSPLandroidx/compose/ui/platform/coreshims/SoftwareKeyboardControllerCompat$Impl30;->show()V +Landroidx/compose/ui/platform/coreshims/SoftwareKeyboardControllerCompat$Impl30$$ExternalSyntheticLambda5; +HSPLandroidx/compose/ui/platform/coreshims/SoftwareKeyboardControllerCompat$Impl30$$ExternalSyntheticLambda5;->(Ljava/util/concurrent/atomic/AtomicBoolean;)V +HSPLandroidx/compose/ui/platform/coreshims/SoftwareKeyboardControllerCompat$Impl30$$ExternalSyntheticLambda5;->onControllableInsetsChanged(Landroid/view/WindowInsetsController;I)V +Landroidx/compose/ui/platform/coreshims/ViewCompatShims; +HSPLandroidx/compose/ui/platform/coreshims/ViewCompatShims;->getContentCaptureSession(Landroid/view/View;)Landroidx/compose/ui/platform/coreshims/ContentCaptureSessionCompat; +HSPLandroidx/compose/ui/platform/coreshims/ViewCompatShims;->setImportantForContentCapture(Landroid/view/View;I)V +Landroidx/compose/ui/platform/coreshims/ViewCompatShims$Api29Impl; +HSPLandroidx/compose/ui/platform/coreshims/ViewCompatShims$Api29Impl;->getContentCaptureSession(Landroid/view/View;)Landroid/view/contentcapture/ContentCaptureSession; +Landroidx/compose/ui/platform/coreshims/ViewCompatShims$Api30Impl; +HSPLandroidx/compose/ui/platform/coreshims/ViewCompatShims$Api30Impl;->setImportantForContentCapture(Landroid/view/View;I)V +Landroidx/compose/ui/res/ImageVectorCache; +HSPLandroidx/compose/ui/res/ImageVectorCache;->()V +Landroidx/compose/ui/semantics/AccessibilityAction; +HSPLandroidx/compose/ui/semantics/AccessibilityAction;->()V +HSPLandroidx/compose/ui/semantics/AccessibilityAction;->(Ljava/lang/String;Lkotlin/Function;)V +HSPLandroidx/compose/ui/semantics/AccessibilityAction;->getAction()Lkotlin/Function; +HSPLandroidx/compose/ui/semantics/AccessibilityAction;->getLabel()Ljava/lang/String; +Landroidx/compose/ui/semantics/AppendedSemanticsElement; +HSPLandroidx/compose/ui/semantics/AppendedSemanticsElement;->(ZLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/semantics/AppendedSemanticsElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/semantics/AppendedSemanticsElement;->create()Landroidx/compose/ui/semantics/CoreSemanticsModifierNode; +HSPLandroidx/compose/ui/semantics/AppendedSemanticsElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/semantics/AppendedSemanticsElement;->update(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/semantics/AppendedSemanticsElement;->update(Landroidx/compose/ui/semantics/CoreSemanticsModifierNode;)V +Landroidx/compose/ui/semantics/ClearAndSetSemanticsElement; +HSPLandroidx/compose/ui/semantics/ClearAndSetSemanticsElement;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/semantics/ClearAndSetSemanticsElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/semantics/ClearAndSetSemanticsElement;->create()Landroidx/compose/ui/semantics/CoreSemanticsModifierNode; +HSPLandroidx/compose/ui/semantics/ClearAndSetSemanticsElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/ui/semantics/CollectionInfo; +HSPLandroidx/compose/ui/semantics/CollectionInfo;->()V +HSPLandroidx/compose/ui/semantics/CollectionInfo;->(II)V +PLandroidx/compose/ui/semantics/CollectionInfo;->getColumnCount()I +PLandroidx/compose/ui/semantics/CollectionInfo;->getRowCount()I +Landroidx/compose/ui/semantics/CollectionItemInfo; +Landroidx/compose/ui/semantics/CoreSemanticsModifierNode; +HSPLandroidx/compose/ui/semantics/CoreSemanticsModifierNode;->(ZZLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/semantics/CoreSemanticsModifierNode;->applySemantics(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/ui/semantics/CoreSemanticsModifierNode;->getShouldClearDescendantSemantics()Z +HSPLandroidx/compose/ui/semantics/CoreSemanticsModifierNode;->getShouldMergeDescendantSemantics()Z +HSPLandroidx/compose/ui/semantics/CoreSemanticsModifierNode;->setMergeDescendants(Z)V +HSPLandroidx/compose/ui/semantics/CoreSemanticsModifierNode;->setProperties(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/ui/semantics/CustomAccessibilityAction; +Landroidx/compose/ui/semantics/EmptySemanticsElement; +HSPLandroidx/compose/ui/semantics/EmptySemanticsElement;->()V +HSPLandroidx/compose/ui/semantics/EmptySemanticsElement;->()V +HSPLandroidx/compose/ui/semantics/EmptySemanticsElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/semantics/EmptySemanticsElement;->create()Landroidx/compose/ui/semantics/EmptySemanticsModifier; +Landroidx/compose/ui/semantics/EmptySemanticsModifier; +HSPLandroidx/compose/ui/semantics/EmptySemanticsModifier;->()V +HSPLandroidx/compose/ui/semantics/EmptySemanticsModifier;->applySemantics(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +Landroidx/compose/ui/semantics/LiveRegionMode; +Landroidx/compose/ui/semantics/LiveRegionMode$Companion; +Landroidx/compose/ui/semantics/ProgressBarRangeInfo; +HSPLandroidx/compose/ui/semantics/ProgressBarRangeInfo;->()V +HSPLandroidx/compose/ui/semantics/ProgressBarRangeInfo;->(FLkotlin/ranges/ClosedFloatingPointRange;I)V +HSPLandroidx/compose/ui/semantics/ProgressBarRangeInfo;->(FLkotlin/ranges/ClosedFloatingPointRange;IILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/semantics/ProgressBarRangeInfo;->access$getIndeterminate$cp()Landroidx/compose/ui/semantics/ProgressBarRangeInfo; +Landroidx/compose/ui/semantics/ProgressBarRangeInfo$Companion; +HSPLandroidx/compose/ui/semantics/ProgressBarRangeInfo$Companion;->()V +HSPLandroidx/compose/ui/semantics/ProgressBarRangeInfo$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/semantics/ProgressBarRangeInfo$Companion;->getIndeterminate()Landroidx/compose/ui/semantics/ProgressBarRangeInfo; +Landroidx/compose/ui/semantics/Role; +HSPLandroidx/compose/ui/semantics/Role;->()V +HSPLandroidx/compose/ui/semantics/Role;->(I)V +HSPLandroidx/compose/ui/semantics/Role;->access$getButton$cp()I +HSPLandroidx/compose/ui/semantics/Role;->access$getCheckbox$cp()I +HSPLandroidx/compose/ui/semantics/Role;->access$getImage$cp()I +HSPLandroidx/compose/ui/semantics/Role;->access$getSwitch$cp()I +HSPLandroidx/compose/ui/semantics/Role;->access$getTab$cp()I +HSPLandroidx/compose/ui/semantics/Role;->box-impl(I)Landroidx/compose/ui/semantics/Role; +HSPLandroidx/compose/ui/semantics/Role;->constructor-impl(I)I +PLandroidx/compose/ui/semantics/Role;->equals(Ljava/lang/Object;)Z +PLandroidx/compose/ui/semantics/Role;->equals-impl(ILjava/lang/Object;)Z +HSPLandroidx/compose/ui/semantics/Role;->equals-impl0(II)Z +HSPLandroidx/compose/ui/semantics/Role;->unbox-impl()I +Landroidx/compose/ui/semantics/Role$Companion; +HSPLandroidx/compose/ui/semantics/Role$Companion;->()V +HSPLandroidx/compose/ui/semantics/Role$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/semantics/Role$Companion;->getButton-o7Vup1c()I +HSPLandroidx/compose/ui/semantics/Role$Companion;->getCheckbox-o7Vup1c()I +HSPLandroidx/compose/ui/semantics/Role$Companion;->getImage-o7Vup1c()I +HSPLandroidx/compose/ui/semantics/Role$Companion;->getSwitch-o7Vup1c()I +HSPLandroidx/compose/ui/semantics/Role$Companion;->getTab-o7Vup1c()I +Landroidx/compose/ui/semantics/ScrollAxisRange; +HSPLandroidx/compose/ui/semantics/ScrollAxisRange;->()V +HSPLandroidx/compose/ui/semantics/ScrollAxisRange;->(Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Z)V +HSPLandroidx/compose/ui/semantics/ScrollAxisRange;->getMaxValue()Lkotlin/jvm/functions/Function0; +HSPLandroidx/compose/ui/semantics/ScrollAxisRange;->getValue()Lkotlin/jvm/functions/Function0; +Landroidx/compose/ui/semantics/SemanticsActions; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->()V +HSPLandroidx/compose/ui/semantics/SemanticsActions;->()V +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getCollapse()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getCopyText()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getCustomActions()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getCutText()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getDismiss()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getExpand()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getGetTextLayoutResult()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getInsertTextAtCursor()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getOnClick()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getOnLongClick()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getPageDown()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getPageLeft()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getPageRight()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getPageUp()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getPasteText()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getPerformImeAction()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getRequestFocus()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getScrollBy()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getScrollToIndex()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getSetProgress()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getSetSelection()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getSetText()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +Landroidx/compose/ui/semantics/SemanticsConfiguration; +HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->()V +HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->()V +HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->contains(Landroidx/compose/ui/semantics/SemanticsPropertyKey;)Z +HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->get(Landroidx/compose/ui/semantics/SemanticsPropertyKey;)Ljava/lang/Object; +PLandroidx/compose/ui/semantics/SemanticsConfiguration;->getOrElse(Landroidx/compose/ui/semantics/SemanticsPropertyKey;Lkotlin/jvm/functions/Function0;)Ljava/lang/Object; +HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->getOrElseNullable(Landroidx/compose/ui/semantics/SemanticsPropertyKey;Lkotlin/jvm/functions/Function0;)Ljava/lang/Object; +HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->isClearingSemantics()Z +HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->isMergingSemanticsOfDescendants()Z +HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->set(Landroidx/compose/ui/semantics/SemanticsPropertyKey;Ljava/lang/Object;)V +HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->setClearingSemantics(Z)V +HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->setMergingSemanticsOfDescendants(Z)V +Landroidx/compose/ui/semantics/SemanticsConfigurationKt; +HSPLandroidx/compose/ui/semantics/SemanticsConfigurationKt;->getOrNull(Landroidx/compose/ui/semantics/SemanticsConfiguration;Landroidx/compose/ui/semantics/SemanticsPropertyKey;)Ljava/lang/Object; +Landroidx/compose/ui/semantics/SemanticsConfigurationKt$getOrNull$1; +HSPLandroidx/compose/ui/semantics/SemanticsConfigurationKt$getOrNull$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsConfigurationKt$getOrNull$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsConfigurationKt$getOrNull$1;->invoke()Ljava/lang/Object; +Landroidx/compose/ui/semantics/SemanticsModifier; +Landroidx/compose/ui/semantics/SemanticsModifierKt; +HSPLandroidx/compose/ui/semantics/SemanticsModifierKt;->()V +HSPLandroidx/compose/ui/semantics/SemanticsModifierKt;->clearAndSetSemantics(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/semantics/SemanticsModifierKt;->generateSemanticsId()I +HSPLandroidx/compose/ui/semantics/SemanticsModifierKt;->semantics$default(Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/semantics/SemanticsModifierKt;->semantics(Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/semantics/SemanticsNode; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->()V +HSPLandroidx/compose/ui/semantics/SemanticsNode;->(Landroidx/compose/ui/Modifier$Node;ZLandroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/semantics/SemanticsConfiguration;)V +HSPLandroidx/compose/ui/semantics/SemanticsNode;->emitFakeNodes(Ljava/util/List;)V +HSPLandroidx/compose/ui/semantics/SemanticsNode;->fakeSemanticsNode-ypyhhiA(Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/semantics/SemanticsNode; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->fillOneLayerOfSemanticsWrappers(Landroidx/compose/ui/node/LayoutNode;Ljava/util/List;)V +HSPLandroidx/compose/ui/semantics/SemanticsNode;->findCoordinatorToGetBounds$ui_release()Landroidx/compose/ui/node/NodeCoordinator; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->getBoundsInRoot()Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->getBoundsInWindow()Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->getChildren()Ljava/util/List; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->getChildren(ZZ)Ljava/util/List; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->getConfig()Landroidx/compose/ui/semantics/SemanticsConfiguration; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->getId()I +HSPLandroidx/compose/ui/semantics/SemanticsNode;->getLayoutInfo()Landroidx/compose/ui/layout/LayoutInfo; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->getLayoutNode$ui_release()Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->getParent()Landroidx/compose/ui/semantics/SemanticsNode; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->getReplacedChildren$ui_release()Ljava/util/List; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->getTouchBoundsInRoot()Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->getUnmergedConfig$ui_release()Landroidx/compose/ui/semantics/SemanticsConfiguration; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->isFake$ui_release()Z +HSPLandroidx/compose/ui/semantics/SemanticsNode;->isMergingSemanticsOfDescendants()Z +HSPLandroidx/compose/ui/semantics/SemanticsNode;->isTransparent$ui_release()Z +HSPLandroidx/compose/ui/semantics/SemanticsNode;->isUnmergedLeafNode$ui_release()Z +HSPLandroidx/compose/ui/semantics/SemanticsNode;->unmergedChildren$ui_release(Z)Ljava/util/List; +Landroidx/compose/ui/semantics/SemanticsNode$emitFakeNodes$fakeNode$1; +HSPLandroidx/compose/ui/semantics/SemanticsNode$emitFakeNodes$fakeNode$1;->(Landroidx/compose/ui/semantics/Role;)V +HSPLandroidx/compose/ui/semantics/SemanticsNode$emitFakeNodes$fakeNode$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/ui/semantics/SemanticsNode$emitFakeNodes$fakeNode$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/semantics/SemanticsNode$fakeSemanticsNode$fakeNode$1; +HSPLandroidx/compose/ui/semantics/SemanticsNode$fakeSemanticsNode$fakeNode$1;->(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/ui/semantics/SemanticsNode$isUnmergedLeafNode$1; +HSPLandroidx/compose/ui/semantics/SemanticsNode$isUnmergedLeafNode$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsNode$isUnmergedLeafNode$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsNode$isUnmergedLeafNode$1;->invoke(Landroidx/compose/ui/node/LayoutNode;)Ljava/lang/Boolean; +HSPLandroidx/compose/ui/semantics/SemanticsNode$isUnmergedLeafNode$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/semantics/SemanticsNode$parent$2; +HSPLandroidx/compose/ui/semantics/SemanticsNode$parent$2;->()V +HSPLandroidx/compose/ui/semantics/SemanticsNode$parent$2;->()V +HSPLandroidx/compose/ui/semantics/SemanticsNode$parent$2;->invoke(Landroidx/compose/ui/node/LayoutNode;)Ljava/lang/Boolean; +HSPLandroidx/compose/ui/semantics/SemanticsNode$parent$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/semantics/SemanticsNodeKt; +HSPLandroidx/compose/ui/semantics/SemanticsNodeKt;->SemanticsNode(Landroidx/compose/ui/node/LayoutNode;Z)Landroidx/compose/ui/semantics/SemanticsNode; +HSPLandroidx/compose/ui/semantics/SemanticsNodeKt;->access$getRole(Landroidx/compose/ui/semantics/SemanticsNode;)Landroidx/compose/ui/semantics/Role; +HSPLandroidx/compose/ui/semantics/SemanticsNodeKt;->access$roleFakeNodeId(Landroidx/compose/ui/semantics/SemanticsNode;)I +HSPLandroidx/compose/ui/semantics/SemanticsNodeKt;->findClosestParentNode(Landroidx/compose/ui/node/LayoutNode;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/semantics/SemanticsNodeKt;->getOuterMergingSemantics(Landroidx/compose/ui/node/LayoutNode;)Landroidx/compose/ui/node/SemanticsModifierNode; +HSPLandroidx/compose/ui/semantics/SemanticsNodeKt;->getRole(Landroidx/compose/ui/semantics/SemanticsNode;)Landroidx/compose/ui/semantics/Role; +HSPLandroidx/compose/ui/semantics/SemanticsNodeKt;->roleFakeNodeId(Landroidx/compose/ui/semantics/SemanticsNode;)I +Landroidx/compose/ui/semantics/SemanticsOwner; +HSPLandroidx/compose/ui/semantics/SemanticsOwner;->()V +HSPLandroidx/compose/ui/semantics/SemanticsOwner;->(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/semantics/SemanticsOwner;->getUnmergedRootSemanticsNode()Landroidx/compose/ui/semantics/SemanticsNode; +Landroidx/compose/ui/semantics/SemanticsProperties; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->()V +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->()V +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getCollectionInfo()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getCollectionItemInfo()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getContentDescription()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getDisabled()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getEditableText()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getError()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getFocused()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getHeading()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getHorizontalScrollAxisRange()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getImeAction()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getIndexForKey()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getInvisibleToUser()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getIsTraversalGroup()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getLiveRegion()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getPaneTitle()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getPassword()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getProgressBarRangeInfo()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getRole()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getSelectableGroup()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getSelected()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getStateDescription()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getTestTag()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getText()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getTextSelectionRange()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getToggleableState()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getTraversalIndex()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getVerticalScrollAxisRange()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +Landroidx/compose/ui/semantics/SemanticsProperties$ContentDescription$1; +HSPLandroidx/compose/ui/semantics/SemanticsProperties$ContentDescription$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsProperties$ContentDescription$1;->()V +Landroidx/compose/ui/semantics/SemanticsProperties$InvisibleToUser$1; +HSPLandroidx/compose/ui/semantics/SemanticsProperties$InvisibleToUser$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsProperties$InvisibleToUser$1;->()V +Landroidx/compose/ui/semantics/SemanticsProperties$IsDialog$1; +HSPLandroidx/compose/ui/semantics/SemanticsProperties$IsDialog$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsProperties$IsDialog$1;->()V +Landroidx/compose/ui/semantics/SemanticsProperties$IsPopup$1; +HSPLandroidx/compose/ui/semantics/SemanticsProperties$IsPopup$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsProperties$IsPopup$1;->()V +Landroidx/compose/ui/semantics/SemanticsProperties$PaneTitle$1; +HSPLandroidx/compose/ui/semantics/SemanticsProperties$PaneTitle$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsProperties$PaneTitle$1;->()V +Landroidx/compose/ui/semantics/SemanticsProperties$Role$1; +HSPLandroidx/compose/ui/semantics/SemanticsProperties$Role$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsProperties$Role$1;->()V +Landroidx/compose/ui/semantics/SemanticsProperties$TestTag$1; +HSPLandroidx/compose/ui/semantics/SemanticsProperties$TestTag$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsProperties$TestTag$1;->()V +Landroidx/compose/ui/semantics/SemanticsProperties$Text$1; +HSPLandroidx/compose/ui/semantics/SemanticsProperties$Text$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsProperties$Text$1;->()V +Landroidx/compose/ui/semantics/SemanticsProperties$TraversalIndex$1; +HSPLandroidx/compose/ui/semantics/SemanticsProperties$TraversalIndex$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsProperties$TraversalIndex$1;->()V +Landroidx/compose/ui/semantics/SemanticsPropertiesAndroid; +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesAndroid;->()V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesAndroid;->()V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesAndroid;->getTestTagsAsResourceId()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +Landroidx/compose/ui/semantics/SemanticsPropertiesAndroid$TestTagsAsResourceId$1; +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesAndroid$TestTagsAsResourceId$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesAndroid$TestTagsAsResourceId$1;->()V +Landroidx/compose/ui/semantics/SemanticsPropertiesKt; +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->()V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->disabled(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->getTextLayoutResult$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->getTextLayoutResult(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->indexForKey(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->insertTextAtCursor$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->insertTextAtCursor(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->onClick$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->onClick(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->onLongClick$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->onLongClick(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->password(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->pasteText$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->pasteText(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->performImeAction$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->performImeAction(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->requestFocus$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->requestFocus(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->scrollBy$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->scrollBy(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->scrollToIndex$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->scrollToIndex(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->selectableGroup(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setCollectionInfo(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Landroidx/compose/ui/semantics/CollectionInfo;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setContainer(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Z)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setEditableText(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Landroidx/compose/ui/text/AnnotatedString;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setFocused(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Z)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setImeAction-4L7nppU(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;I)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setProgressBarRangeInfo(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Landroidx/compose/ui/semantics/ProgressBarRangeInfo;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setRole-kuIjeqM(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;I)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setSelected(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Z)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setSelection$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function3;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setSelection(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function3;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setTestTag(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setText$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setText(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Landroidx/compose/ui/text/AnnotatedString;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setText(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setTextSelectionRange-FDrldGo(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;J)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setTraversalGroup(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Z)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setVerticalScrollAxisRange(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Landroidx/compose/ui/semantics/ScrollAxisRange;)V +Landroidx/compose/ui/semantics/SemanticsPropertiesKt$ActionPropertyKey$1; +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt$ActionPropertyKey$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt$ActionPropertyKey$1;->()V +Landroidx/compose/ui/semantics/SemanticsProperties_androidKt; +HSPLandroidx/compose/ui/semantics/SemanticsProperties_androidKt;->()V +HSPLandroidx/compose/ui/semantics/SemanticsProperties_androidKt;->setTestTagsAsResourceId(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Z)V +Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsPropertyKey;->()V +HSPLandroidx/compose/ui/semantics/SemanticsPropertyKey;->(Ljava/lang/String;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertyKey;->(Ljava/lang/String;Lkotlin/jvm/functions/Function2;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertyKey;->setValue(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Lkotlin/reflect/KProperty;Ljava/lang/Object;)V +Landroidx/compose/ui/semantics/SemanticsPropertyKey$1; +HSPLandroidx/compose/ui/semantics/SemanticsPropertyKey$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsPropertyKey$1;->()V +Landroidx/compose/ui/semantics/SemanticsPropertyReceiver; +Landroidx/compose/ui/state/ToggleableState; +HSPLandroidx/compose/ui/state/ToggleableState;->$values()[Landroidx/compose/ui/state/ToggleableState; +HSPLandroidx/compose/ui/state/ToggleableState;->()V +HSPLandroidx/compose/ui/state/ToggleableState;->(Ljava/lang/String;I)V +HSPLandroidx/compose/ui/state/ToggleableState;->values()[Landroidx/compose/ui/state/ToggleableState; +Landroidx/compose/ui/state/ToggleableStateKt; +HSPLandroidx/compose/ui/state/ToggleableStateKt;->ToggleableState(Z)Landroidx/compose/ui/state/ToggleableState; +Landroidx/compose/ui/text/AndroidParagraph; +HSPLandroidx/compose/ui/text/AndroidParagraph;->(Landroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;IZJ)V +HSPLandroidx/compose/ui/text/AndroidParagraph;->(Landroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;IZJLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/AndroidParagraph;->constructTextLayout(IILandroid/text/TextUtils$TruncateAt;IIIII)Landroidx/compose/ui/text/android/TextLayout; +HSPLandroidx/compose/ui/text/AndroidParagraph;->getBoundingBox(I)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/text/AndroidParagraph;->getCursorRect(I)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/text/AndroidParagraph;->getDidExceedMaxLines()Z +HSPLandroidx/compose/ui/text/AndroidParagraph;->getFirstBaseline()F +HSPLandroidx/compose/ui/text/AndroidParagraph;->getHeight()F +HSPLandroidx/compose/ui/text/AndroidParagraph;->getLastBaseline()F +HSPLandroidx/compose/ui/text/AndroidParagraph;->getLineBaseline$ui_text_release(I)F +HSPLandroidx/compose/ui/text/AndroidParagraph;->getLineBottom(I)F +HSPLandroidx/compose/ui/text/AndroidParagraph;->getLineCount()I +HSPLandroidx/compose/ui/text/AndroidParagraph;->getMinIntrinsicWidth()F +HSPLandroidx/compose/ui/text/AndroidParagraph;->getPlaceholderRects()Ljava/util/List; +HSPLandroidx/compose/ui/text/AndroidParagraph;->getShaderBrushSpans(Landroidx/compose/ui/text/android/TextLayout;)[Landroidx/compose/ui/text/platform/style/ShaderBrushSpan; +HSPLandroidx/compose/ui/text/AndroidParagraph;->getTextPaint$ui_text_release()Landroidx/compose/ui/text/platform/AndroidTextPaint; +HSPLandroidx/compose/ui/text/AndroidParagraph;->getWidth()F +HSPLandroidx/compose/ui/text/AndroidParagraph;->paint(Landroidx/compose/ui/graphics/Canvas;)V +HSPLandroidx/compose/ui/text/AndroidParagraph;->paint-LG529CI(Landroidx/compose/ui/graphics/Canvas;JLandroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/drawscope/DrawStyle;I)V +Landroidx/compose/ui/text/AndroidParagraph$wordBoundary$2; +HSPLandroidx/compose/ui/text/AndroidParagraph$wordBoundary$2;->(Landroidx/compose/ui/text/AndroidParagraph;)V +Landroidx/compose/ui/text/AndroidParagraph_androidKt; +HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->access$shouldAttachIndentationFixSpan(Landroidx/compose/ui/text/TextStyle;Z)Z +HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->access$toLayoutAlign-AMY3VfE(Landroidx/compose/ui/text/style/TextAlign;)I +HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->access$toLayoutBreakStrategy-u6PBz3U(Landroidx/compose/ui/text/style/LineBreak$Strategy;)I +HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->access$toLayoutHyphenationFrequency-0_XeFpE(Landroidx/compose/ui/text/style/Hyphens;)I +HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->access$toLayoutLineBreakStyle-4a2g8L8(Landroidx/compose/ui/text/style/LineBreak$Strictness;)I +HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->access$toLayoutLineBreakWordStyle-gvcdTPQ(Landroidx/compose/ui/text/style/LineBreak$WordBreak;)I +HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->shouldAttachIndentationFixSpan(Landroidx/compose/ui/text/TextStyle;Z)Z +HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->toLayoutAlign-AMY3VfE(Landroidx/compose/ui/text/style/TextAlign;)I +HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->toLayoutBreakStrategy-u6PBz3U(Landroidx/compose/ui/text/style/LineBreak$Strategy;)I +HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->toLayoutHyphenationFrequency-0_XeFpE(Landroidx/compose/ui/text/style/Hyphens;)I +HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->toLayoutLineBreakStyle-4a2g8L8(Landroidx/compose/ui/text/style/LineBreak$Strictness;)I +HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->toLayoutLineBreakWordStyle-gvcdTPQ(Landroidx/compose/ui/text/style/LineBreak$WordBreak;)I +Landroidx/compose/ui/text/AndroidTextStyle_androidKt; +HSPLandroidx/compose/ui/text/AndroidTextStyle_androidKt;->createPlatformTextStyle(Landroidx/compose/ui/text/PlatformSpanStyle;Landroidx/compose/ui/text/PlatformParagraphStyle;)Landroidx/compose/ui/text/PlatformTextStyle; +Landroidx/compose/ui/text/AnnotatedString; +HSPLandroidx/compose/ui/text/AnnotatedString;->()V +HSPLandroidx/compose/ui/text/AnnotatedString;->(Ljava/lang/String;Ljava/util/List;Ljava/util/List;)V +HSPLandroidx/compose/ui/text/AnnotatedString;->(Ljava/lang/String;Ljava/util/List;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/AnnotatedString;->(Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/util/List;)V +HSPLandroidx/compose/ui/text/AnnotatedString;->(Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/AnnotatedString;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/AnnotatedString;->getLength()I +HSPLandroidx/compose/ui/text/AnnotatedString;->getParagraphStylesOrNull$ui_text_release()Ljava/util/List; +HSPLandroidx/compose/ui/text/AnnotatedString;->getSpanStyles()Ljava/util/List; +HSPLandroidx/compose/ui/text/AnnotatedString;->getSpanStylesOrNull$ui_text_release()Ljava/util/List; +HSPLandroidx/compose/ui/text/AnnotatedString;->getText()Ljava/lang/String; +HSPLandroidx/compose/ui/text/AnnotatedString;->getTtsAnnotations(II)Ljava/util/List; +HSPLandroidx/compose/ui/text/AnnotatedString;->getUrlAnnotations(II)Ljava/util/List; +HSPLandroidx/compose/ui/text/AnnotatedString;->hasStringAnnotations(Ljava/lang/String;II)Z +HSPLandroidx/compose/ui/text/AnnotatedString;->length()I +HSPLandroidx/compose/ui/text/AnnotatedString;->subSequence(II)Landroidx/compose/ui/text/AnnotatedString; +HSPLandroidx/compose/ui/text/AnnotatedString;->toString()Ljava/lang/String; +Landroidx/compose/ui/text/AnnotatedString$Builder; +HSPLandroidx/compose/ui/text/AnnotatedString$Builder;->()V +HSPLandroidx/compose/ui/text/AnnotatedString$Builder;->(I)V +HSPLandroidx/compose/ui/text/AnnotatedString$Builder;->(IILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/AnnotatedString$Builder;->append(Ljava/lang/String;)V +HSPLandroidx/compose/ui/text/AnnotatedString$Builder;->pop()V +HSPLandroidx/compose/ui/text/AnnotatedString$Builder;->pop(I)V +HSPLandroidx/compose/ui/text/AnnotatedString$Builder;->pushStyle(Landroidx/compose/ui/text/SpanStyle;)I +HSPLandroidx/compose/ui/text/AnnotatedString$Builder;->toAnnotatedString()Landroidx/compose/ui/text/AnnotatedString; +Landroidx/compose/ui/text/AnnotatedString$Builder$MutableRange; +HSPLandroidx/compose/ui/text/AnnotatedString$Builder$MutableRange;->(Ljava/lang/Object;IILjava/lang/String;)V +HSPLandroidx/compose/ui/text/AnnotatedString$Builder$MutableRange;->(Ljava/lang/Object;IILjava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/AnnotatedString$Builder$MutableRange;->setEnd(I)V +HSPLandroidx/compose/ui/text/AnnotatedString$Builder$MutableRange;->toRange(I)Landroidx/compose/ui/text/AnnotatedString$Range; +Landroidx/compose/ui/text/AnnotatedString$Range; +HSPLandroidx/compose/ui/text/AnnotatedString$Range;->()V +HSPLandroidx/compose/ui/text/AnnotatedString$Range;->(Ljava/lang/Object;II)V +HSPLandroidx/compose/ui/text/AnnotatedString$Range;->(Ljava/lang/Object;IILjava/lang/String;)V +HSPLandroidx/compose/ui/text/AnnotatedString$Range;->component1()Ljava/lang/Object; +HSPLandroidx/compose/ui/text/AnnotatedString$Range;->component2()I +HSPLandroidx/compose/ui/text/AnnotatedString$Range;->component3()I +HSPLandroidx/compose/ui/text/AnnotatedString$Range;->getEnd()I +HSPLandroidx/compose/ui/text/AnnotatedString$Range;->getItem()Ljava/lang/Object; +HSPLandroidx/compose/ui/text/AnnotatedString$Range;->getStart()I +Landroidx/compose/ui/text/AnnotatedStringKt; +HSPLandroidx/compose/ui/text/AnnotatedStringKt;->()V +HSPLandroidx/compose/ui/text/AnnotatedStringKt;->access$filterRanges(Ljava/util/List;II)Ljava/util/List; +HSPLandroidx/compose/ui/text/AnnotatedStringKt;->access$substringWithoutParagraphStyles(Landroidx/compose/ui/text/AnnotatedString;II)Landroidx/compose/ui/text/AnnotatedString; +HSPLandroidx/compose/ui/text/AnnotatedStringKt;->emptyAnnotatedString()Landroidx/compose/ui/text/AnnotatedString; +HSPLandroidx/compose/ui/text/AnnotatedStringKt;->filterRanges(Ljava/util/List;II)Ljava/util/List; +HSPLandroidx/compose/ui/text/AnnotatedStringKt;->getLocalSpanStyles(Landroidx/compose/ui/text/AnnotatedString;II)Ljava/util/List; +HSPLandroidx/compose/ui/text/AnnotatedStringKt;->normalizedParagraphStyles(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/ParagraphStyle;)Ljava/util/List; +HSPLandroidx/compose/ui/text/AnnotatedStringKt;->substringWithoutParagraphStyles(Landroidx/compose/ui/text/AnnotatedString;II)Landroidx/compose/ui/text/AnnotatedString; +Landroidx/compose/ui/text/EmojiSupportMatch; +HSPLandroidx/compose/ui/text/EmojiSupportMatch;->()V +HSPLandroidx/compose/ui/text/EmojiSupportMatch;->(I)V +HSPLandroidx/compose/ui/text/EmojiSupportMatch;->access$getDefault$cp()I +HSPLandroidx/compose/ui/text/EmojiSupportMatch;->access$getNone$cp()I +HSPLandroidx/compose/ui/text/EmojiSupportMatch;->box-impl(I)Landroidx/compose/ui/text/EmojiSupportMatch; +HSPLandroidx/compose/ui/text/EmojiSupportMatch;->constructor-impl(I)I +HSPLandroidx/compose/ui/text/EmojiSupportMatch;->equals-impl0(II)Z +HSPLandroidx/compose/ui/text/EmojiSupportMatch;->unbox-impl()I +Landroidx/compose/ui/text/EmojiSupportMatch$Companion; +HSPLandroidx/compose/ui/text/EmojiSupportMatch$Companion;->()V +HSPLandroidx/compose/ui/text/EmojiSupportMatch$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/EmojiSupportMatch$Companion;->getDefault-_3YsG6Y()I +HSPLandroidx/compose/ui/text/EmojiSupportMatch$Companion;->getNone-_3YsG6Y()I +Landroidx/compose/ui/text/MultiParagraph; +HSPLandroidx/compose/ui/text/MultiParagraph;->()V +HSPLandroidx/compose/ui/text/MultiParagraph;->(Landroidx/compose/ui/text/MultiParagraphIntrinsics;JIZ)V +HSPLandroidx/compose/ui/text/MultiParagraph;->(Landroidx/compose/ui/text/MultiParagraphIntrinsics;JIZLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/MultiParagraph;->getAnnotatedString()Landroidx/compose/ui/text/AnnotatedString; +HSPLandroidx/compose/ui/text/MultiParagraph;->getBoundingBox(I)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/text/MultiParagraph;->getCursorRect(I)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/text/MultiParagraph;->getDidExceedMaxLines()Z +HSPLandroidx/compose/ui/text/MultiParagraph;->getFirstBaseline()F +HSPLandroidx/compose/ui/text/MultiParagraph;->getHeight()F +HSPLandroidx/compose/ui/text/MultiParagraph;->getIntrinsics()Landroidx/compose/ui/text/MultiParagraphIntrinsics; +HSPLandroidx/compose/ui/text/MultiParagraph;->getLastBaseline()F +HSPLandroidx/compose/ui/text/MultiParagraph;->getLineBottom(I)F +HSPLandroidx/compose/ui/text/MultiParagraph;->getPlaceholderRects()Ljava/util/List; +HSPLandroidx/compose/ui/text/MultiParagraph;->getWidth()F +HSPLandroidx/compose/ui/text/MultiParagraph;->paint-LG529CI$default(Landroidx/compose/ui/text/MultiParagraph;Landroidx/compose/ui/graphics/Canvas;JLandroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/drawscope/DrawStyle;IILjava/lang/Object;)V +HSPLandroidx/compose/ui/text/MultiParagraph;->paint-LG529CI(Landroidx/compose/ui/graphics/Canvas;JLandroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/drawscope/DrawStyle;I)V +HSPLandroidx/compose/ui/text/MultiParagraph;->requireIndexInRange(I)V +HSPLandroidx/compose/ui/text/MultiParagraph;->requireIndexInRangeInclusiveEnd(I)V +HSPLandroidx/compose/ui/text/MultiParagraph;->requireLineIndexInRange(I)V +Landroidx/compose/ui/text/MultiParagraphIntrinsics; +HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics;->()V +HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics;->(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Ljava/util/List;Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;)V +HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics;->access$resolveTextDirection(Landroidx/compose/ui/text/MultiParagraphIntrinsics;Landroidx/compose/ui/text/ParagraphStyle;Landroidx/compose/ui/text/ParagraphStyle;)Landroidx/compose/ui/text/ParagraphStyle; +HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics;->getAnnotatedString()Landroidx/compose/ui/text/AnnotatedString; +HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics;->getHasStaleResolvedFonts()Z +HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics;->getInfoList$ui_text_release()Ljava/util/List; +HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics;->getMaxIntrinsicWidth()F +HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics;->getPlaceholders()Ljava/util/List; +HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics;->resolveTextDirection(Landroidx/compose/ui/text/ParagraphStyle;Landroidx/compose/ui/text/ParagraphStyle;)Landroidx/compose/ui/text/ParagraphStyle; +Landroidx/compose/ui/text/MultiParagraphIntrinsics$maxIntrinsicWidth$2; +HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics$maxIntrinsicWidth$2;->(Landroidx/compose/ui/text/MultiParagraphIntrinsics;)V +HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics$maxIntrinsicWidth$2;->invoke()Ljava/lang/Float; +HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics$maxIntrinsicWidth$2;->invoke()Ljava/lang/Object; +Landroidx/compose/ui/text/MultiParagraphIntrinsics$minIntrinsicWidth$2; +HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics$minIntrinsicWidth$2;->(Landroidx/compose/ui/text/MultiParagraphIntrinsics;)V +Landroidx/compose/ui/text/MultiParagraphIntrinsicsKt; +HSPLandroidx/compose/ui/text/MultiParagraphIntrinsicsKt;->access$getLocalPlaceholders(Ljava/util/List;II)Ljava/util/List; +HSPLandroidx/compose/ui/text/MultiParagraphIntrinsicsKt;->getLocalPlaceholders(Ljava/util/List;II)Ljava/util/List; +Landroidx/compose/ui/text/MultiParagraphKt; +HSPLandroidx/compose/ui/text/MultiParagraphKt;->findParagraphByIndex(Ljava/util/List;I)I +HSPLandroidx/compose/ui/text/MultiParagraphKt;->findParagraphByLineIndex(Ljava/util/List;I)I +Landroidx/compose/ui/text/Paragraph; +Landroidx/compose/ui/text/ParagraphInfo; +HSPLandroidx/compose/ui/text/ParagraphInfo;->(Landroidx/compose/ui/text/Paragraph;IIIIFF)V +HSPLandroidx/compose/ui/text/ParagraphInfo;->getEndIndex()I +HSPLandroidx/compose/ui/text/ParagraphInfo;->getEndLineIndex()I +HSPLandroidx/compose/ui/text/ParagraphInfo;->getParagraph()Landroidx/compose/ui/text/Paragraph; +HSPLandroidx/compose/ui/text/ParagraphInfo;->getStartIndex()I +HSPLandroidx/compose/ui/text/ParagraphInfo;->getStartLineIndex()I +HSPLandroidx/compose/ui/text/ParagraphInfo;->toGlobal(Landroidx/compose/ui/geometry/Rect;)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/text/ParagraphInfo;->toGlobalYPosition(F)F +HSPLandroidx/compose/ui/text/ParagraphInfo;->toLocalIndex(I)I +HSPLandroidx/compose/ui/text/ParagraphInfo;->toLocalLineIndex(I)I +Landroidx/compose/ui/text/ParagraphIntrinsicInfo; +HSPLandroidx/compose/ui/text/ParagraphIntrinsicInfo;->(Landroidx/compose/ui/text/ParagraphIntrinsics;II)V +HSPLandroidx/compose/ui/text/ParagraphIntrinsicInfo;->getEndIndex()I +HSPLandroidx/compose/ui/text/ParagraphIntrinsicInfo;->getIntrinsics()Landroidx/compose/ui/text/ParagraphIntrinsics; +HSPLandroidx/compose/ui/text/ParagraphIntrinsicInfo;->getStartIndex()I +Landroidx/compose/ui/text/ParagraphIntrinsics; +Landroidx/compose/ui/text/ParagraphIntrinsicsKt; +HSPLandroidx/compose/ui/text/ParagraphIntrinsicsKt;->ParagraphIntrinsics(Ljava/lang/String;Landroidx/compose/ui/text/TextStyle;Ljava/util/List;Ljava/util/List;Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;)Landroidx/compose/ui/text/ParagraphIntrinsics; +Landroidx/compose/ui/text/ParagraphKt; +HSPLandroidx/compose/ui/text/ParagraphKt;->Paragraph-UdtVg6A$default(Ljava/lang/String;Landroidx/compose/ui/text/TextStyle;JLandroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;Ljava/util/List;Ljava/util/List;IZILjava/lang/Object;)Landroidx/compose/ui/text/Paragraph; +HSPLandroidx/compose/ui/text/ParagraphKt;->Paragraph-UdtVg6A(Ljava/lang/String;Landroidx/compose/ui/text/TextStyle;JLandroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;Ljava/util/List;Ljava/util/List;IZ)Landroidx/compose/ui/text/Paragraph; +HSPLandroidx/compose/ui/text/ParagraphKt;->Paragraph-_EkL_-Y(Landroidx/compose/ui/text/ParagraphIntrinsics;JIZ)Landroidx/compose/ui/text/Paragraph; +HSPLandroidx/compose/ui/text/ParagraphKt;->ceilToInt(F)I +Landroidx/compose/ui/text/ParagraphStyle; +HSPLandroidx/compose/ui/text/ParagraphStyle;->()V +HSPLandroidx/compose/ui/text/ParagraphStyle;->(Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Landroidx/compose/ui/text/PlatformParagraphStyle;Landroidx/compose/ui/text/style/LineHeightStyle;Landroidx/compose/ui/text/style/LineBreak;Landroidx/compose/ui/text/style/Hyphens;Landroidx/compose/ui/text/style/TextMotion;)V +HSPLandroidx/compose/ui/text/ParagraphStyle;->(Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Landroidx/compose/ui/text/PlatformParagraphStyle;Landroidx/compose/ui/text/style/LineHeightStyle;Landroidx/compose/ui/text/style/LineBreak;Landroidx/compose/ui/text/style/Hyphens;Landroidx/compose/ui/text/style/TextMotion;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/ParagraphStyle;->(Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Landroidx/compose/ui/text/PlatformParagraphStyle;Landroidx/compose/ui/text/style/LineHeightStyle;Landroidx/compose/ui/text/style/LineBreak;Landroidx/compose/ui/text/style/Hyphens;Landroidx/compose/ui/text/style/TextMotion;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/ParagraphStyle;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/ParagraphStyle;->getHyphens-EaSxIns()Landroidx/compose/ui/text/style/Hyphens; +HSPLandroidx/compose/ui/text/ParagraphStyle;->getHyphensOrDefault-vmbZdU8$ui_text_release()I +HSPLandroidx/compose/ui/text/ParagraphStyle;->getLineBreak-LgCVezo()Landroidx/compose/ui/text/style/LineBreak; +HSPLandroidx/compose/ui/text/ParagraphStyle;->getLineBreakOrDefault-rAG3T2k$ui_text_release()I +HSPLandroidx/compose/ui/text/ParagraphStyle;->getLineHeight-XSAIIZE()J +HSPLandroidx/compose/ui/text/ParagraphStyle;->getLineHeightStyle()Landroidx/compose/ui/text/style/LineHeightStyle; +HSPLandroidx/compose/ui/text/ParagraphStyle;->getPlatformStyle()Landroidx/compose/ui/text/PlatformParagraphStyle; +HSPLandroidx/compose/ui/text/ParagraphStyle;->getTextAlign-buA522U()Landroidx/compose/ui/text/style/TextAlign; +HSPLandroidx/compose/ui/text/ParagraphStyle;->getTextAlignOrDefault-e0LSkKk$ui_text_release()I +HSPLandroidx/compose/ui/text/ParagraphStyle;->getTextDirection-mmuk1to()Landroidx/compose/ui/text/style/TextDirection; +HSPLandroidx/compose/ui/text/ParagraphStyle;->getTextIndent()Landroidx/compose/ui/text/style/TextIndent; +HSPLandroidx/compose/ui/text/ParagraphStyle;->getTextMotion()Landroidx/compose/ui/text/style/TextMotion; +HSPLandroidx/compose/ui/text/ParagraphStyle;->merge(Landroidx/compose/ui/text/ParagraphStyle;)Landroidx/compose/ui/text/ParagraphStyle; +Landroidx/compose/ui/text/ParagraphStyleKt; +HSPLandroidx/compose/ui/text/ParagraphStyleKt;->()V +HSPLandroidx/compose/ui/text/ParagraphStyleKt;->fastMerge-HtYhynw(Landroidx/compose/ui/text/ParagraphStyle;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Landroidx/compose/ui/text/PlatformParagraphStyle;Landroidx/compose/ui/text/style/LineHeightStyle;Landroidx/compose/ui/text/style/LineBreak;Landroidx/compose/ui/text/style/Hyphens;Landroidx/compose/ui/text/style/TextMotion;)Landroidx/compose/ui/text/ParagraphStyle; +HSPLandroidx/compose/ui/text/ParagraphStyleKt;->mergePlatformStyle(Landroidx/compose/ui/text/ParagraphStyle;Landroidx/compose/ui/text/PlatformParagraphStyle;)Landroidx/compose/ui/text/PlatformParagraphStyle; +HSPLandroidx/compose/ui/text/ParagraphStyleKt;->resolveParagraphStyleDefaults(Landroidx/compose/ui/text/ParagraphStyle;Landroidx/compose/ui/unit/LayoutDirection;)Landroidx/compose/ui/text/ParagraphStyle; +Landroidx/compose/ui/text/PlatformParagraphStyle; +HSPLandroidx/compose/ui/text/PlatformParagraphStyle;->()V +HSPLandroidx/compose/ui/text/PlatformParagraphStyle;->()V +HSPLandroidx/compose/ui/text/PlatformParagraphStyle;->(IZ)V +HSPLandroidx/compose/ui/text/PlatformParagraphStyle;->(IZLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/PlatformParagraphStyle;->(Z)V +HSPLandroidx/compose/ui/text/PlatformParagraphStyle;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/PlatformParagraphStyle;->getEmojiSupportMatch-_3YsG6Y()I +HSPLandroidx/compose/ui/text/PlatformParagraphStyle;->getIncludeFontPadding()Z +HSPLandroidx/compose/ui/text/PlatformParagraphStyle;->merge(Landroidx/compose/ui/text/PlatformParagraphStyle;)Landroidx/compose/ui/text/PlatformParagraphStyle; +Landroidx/compose/ui/text/PlatformParagraphStyle$Companion; +HSPLandroidx/compose/ui/text/PlatformParagraphStyle$Companion;->()V +HSPLandroidx/compose/ui/text/PlatformParagraphStyle$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/text/PlatformSpanStyle; +Landroidx/compose/ui/text/PlatformTextStyle; +HSPLandroidx/compose/ui/text/PlatformTextStyle;->()V +HSPLandroidx/compose/ui/text/PlatformTextStyle;->(Landroidx/compose/ui/text/PlatformSpanStyle;Landroidx/compose/ui/text/PlatformParagraphStyle;)V +HSPLandroidx/compose/ui/text/PlatformTextStyle;->(Z)V +HSPLandroidx/compose/ui/text/PlatformTextStyle;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/PlatformTextStyle;->getParagraphStyle()Landroidx/compose/ui/text/PlatformParagraphStyle; +HSPLandroidx/compose/ui/text/PlatformTextStyle;->getSpanStyle()Landroidx/compose/ui/text/PlatformSpanStyle; +Landroidx/compose/ui/text/SpanStyle; +HSPLandroidx/compose/ui/text/SpanStyle;->()V +HSPLandroidx/compose/ui/text/SpanStyle;->(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/PlatformSpanStyle;Landroidx/compose/ui/graphics/drawscope/DrawStyle;)V +HSPLandroidx/compose/ui/text/SpanStyle;->(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/PlatformSpanStyle;Landroidx/compose/ui/graphics/drawscope/DrawStyle;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/SpanStyle;->(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/PlatformSpanStyle;Landroidx/compose/ui/graphics/drawscope/DrawStyle;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/SpanStyle;->(Landroidx/compose/ui/text/style/TextForegroundStyle;JLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/PlatformSpanStyle;Landroidx/compose/ui/graphics/drawscope/DrawStyle;)V +HSPLandroidx/compose/ui/text/SpanStyle;->(Landroidx/compose/ui/text/style/TextForegroundStyle;JLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/PlatformSpanStyle;Landroidx/compose/ui/graphics/drawscope/DrawStyle;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/SpanStyle;->copy-GSF8kmg$default(Landroidx/compose/ui/text/SpanStyle;JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/PlatformSpanStyle;Landroidx/compose/ui/graphics/drawscope/DrawStyle;ILjava/lang/Object;)Landroidx/compose/ui/text/SpanStyle; +HSPLandroidx/compose/ui/text/SpanStyle;->copy-GSF8kmg(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/PlatformSpanStyle;Landroidx/compose/ui/graphics/drawscope/DrawStyle;)Landroidx/compose/ui/text/SpanStyle; +HSPLandroidx/compose/ui/text/SpanStyle;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/SpanStyle;->getAlpha()F +HSPLandroidx/compose/ui/text/SpanStyle;->getBackground-0d7_KjU()J +HSPLandroidx/compose/ui/text/SpanStyle;->getBaselineShift-5SSeXJ0()Landroidx/compose/ui/text/style/BaselineShift; +HSPLandroidx/compose/ui/text/SpanStyle;->getBrush()Landroidx/compose/ui/graphics/Brush; +HSPLandroidx/compose/ui/text/SpanStyle;->getColor-0d7_KjU()J +HSPLandroidx/compose/ui/text/SpanStyle;->getDrawStyle()Landroidx/compose/ui/graphics/drawscope/DrawStyle; +HSPLandroidx/compose/ui/text/SpanStyle;->getFontFamily()Landroidx/compose/ui/text/font/FontFamily; +HSPLandroidx/compose/ui/text/SpanStyle;->getFontFeatureSettings()Ljava/lang/String; +HSPLandroidx/compose/ui/text/SpanStyle;->getFontSize-XSAIIZE()J +HSPLandroidx/compose/ui/text/SpanStyle;->getFontStyle-4Lr2A7w()Landroidx/compose/ui/text/font/FontStyle; +HSPLandroidx/compose/ui/text/SpanStyle;->getFontSynthesis-ZQGJjVo()Landroidx/compose/ui/text/font/FontSynthesis; +HSPLandroidx/compose/ui/text/SpanStyle;->getFontWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/ui/text/SpanStyle;->getLetterSpacing-XSAIIZE()J +HSPLandroidx/compose/ui/text/SpanStyle;->getLocaleList()Landroidx/compose/ui/text/intl/LocaleList; +HSPLandroidx/compose/ui/text/SpanStyle;->getPlatformStyle()Landroidx/compose/ui/text/PlatformSpanStyle; +HSPLandroidx/compose/ui/text/SpanStyle;->getShadow()Landroidx/compose/ui/graphics/Shadow; +HSPLandroidx/compose/ui/text/SpanStyle;->getTextDecoration()Landroidx/compose/ui/text/style/TextDecoration; +HSPLandroidx/compose/ui/text/SpanStyle;->getTextForegroundStyle$ui_text_release()Landroidx/compose/ui/text/style/TextForegroundStyle; +HSPLandroidx/compose/ui/text/SpanStyle;->getTextGeometricTransform()Landroidx/compose/ui/text/style/TextGeometricTransform; +HSPLandroidx/compose/ui/text/SpanStyle;->hasSameLayoutAffectingAttributes$ui_text_release(Landroidx/compose/ui/text/SpanStyle;)Z +HSPLandroidx/compose/ui/text/SpanStyle;->hasSameNonLayoutAttributes$ui_text_release(Landroidx/compose/ui/text/SpanStyle;)Z +HSPLandroidx/compose/ui/text/SpanStyle;->merge(Landroidx/compose/ui/text/SpanStyle;)Landroidx/compose/ui/text/SpanStyle; +Landroidx/compose/ui/text/SpanStyleKt; +HSPLandroidx/compose/ui/text/SpanStyleKt;->()V +HSPLandroidx/compose/ui/text/SpanStyleKt;->fastMerge-dSHsh3o(Landroidx/compose/ui/text/SpanStyle;JLandroidx/compose/ui/graphics/Brush;FJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/PlatformSpanStyle;Landroidx/compose/ui/graphics/drawscope/DrawStyle;)Landroidx/compose/ui/text/SpanStyle; +HSPLandroidx/compose/ui/text/SpanStyleKt;->mergePlatformStyle(Landroidx/compose/ui/text/SpanStyle;Landroidx/compose/ui/text/PlatformSpanStyle;)Landroidx/compose/ui/text/PlatformSpanStyle; +HSPLandroidx/compose/ui/text/SpanStyleKt;->resolveSpanStyleDefaults(Landroidx/compose/ui/text/SpanStyle;)Landroidx/compose/ui/text/SpanStyle; +Landroidx/compose/ui/text/SpanStyleKt$resolveSpanStyleDefaults$1; +HSPLandroidx/compose/ui/text/SpanStyleKt$resolveSpanStyleDefaults$1;->()V +HSPLandroidx/compose/ui/text/SpanStyleKt$resolveSpanStyleDefaults$1;->()V +Landroidx/compose/ui/text/TextLayoutInput; +HSPLandroidx/compose/ui/text/TextLayoutInput;->()V +HSPLandroidx/compose/ui/text/TextLayoutInput;->(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Ljava/util/List;IZILandroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/text/font/Font$ResourceLoader;Landroidx/compose/ui/text/font/FontFamily$Resolver;J)V +HSPLandroidx/compose/ui/text/TextLayoutInput;->(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Ljava/util/List;IZILandroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/text/font/FontFamily$Resolver;J)V +HSPLandroidx/compose/ui/text/TextLayoutInput;->(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Ljava/util/List;IZILandroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/text/font/FontFamily$Resolver;JLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/TextLayoutInput;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/TextLayoutInput;->getConstraints-msEJaDk()J +HSPLandroidx/compose/ui/text/TextLayoutInput;->getDensity()Landroidx/compose/ui/unit/Density; +HSPLandroidx/compose/ui/text/TextLayoutInput;->getFontFamilyResolver()Landroidx/compose/ui/text/font/FontFamily$Resolver; +HSPLandroidx/compose/ui/text/TextLayoutInput;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/text/TextLayoutInput;->getMaxLines()I +HSPLandroidx/compose/ui/text/TextLayoutInput;->getOverflow-gIe3tQ8()I +HSPLandroidx/compose/ui/text/TextLayoutInput;->getPlaceholders()Ljava/util/List; +HSPLandroidx/compose/ui/text/TextLayoutInput;->getSoftWrap()Z +HSPLandroidx/compose/ui/text/TextLayoutInput;->getStyle()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/ui/text/TextLayoutInput;->getText()Landroidx/compose/ui/text/AnnotatedString; +Landroidx/compose/ui/text/TextLayoutResult; +HSPLandroidx/compose/ui/text/TextLayoutResult;->()V +HSPLandroidx/compose/ui/text/TextLayoutResult;->(Landroidx/compose/ui/text/TextLayoutInput;Landroidx/compose/ui/text/MultiParagraph;J)V +HSPLandroidx/compose/ui/text/TextLayoutResult;->(Landroidx/compose/ui/text/TextLayoutInput;Landroidx/compose/ui/text/MultiParagraph;JLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/TextLayoutResult;->copy-O0kMr_c(Landroidx/compose/ui/text/TextLayoutInput;J)Landroidx/compose/ui/text/TextLayoutResult; +HSPLandroidx/compose/ui/text/TextLayoutResult;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/TextLayoutResult;->getBoundingBox(I)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/text/TextLayoutResult;->getCursorRect(I)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/text/TextLayoutResult;->getDidOverflowHeight()Z +HSPLandroidx/compose/ui/text/TextLayoutResult;->getDidOverflowWidth()Z +HSPLandroidx/compose/ui/text/TextLayoutResult;->getFirstBaseline()F +HSPLandroidx/compose/ui/text/TextLayoutResult;->getHasVisualOverflow()Z +HSPLandroidx/compose/ui/text/TextLayoutResult;->getLastBaseline()F +HSPLandroidx/compose/ui/text/TextLayoutResult;->getLayoutInput()Landroidx/compose/ui/text/TextLayoutInput; +HSPLandroidx/compose/ui/text/TextLayoutResult;->getLineBottom(I)F +HSPLandroidx/compose/ui/text/TextLayoutResult;->getMultiParagraph()Landroidx/compose/ui/text/MultiParagraph; +HSPLandroidx/compose/ui/text/TextLayoutResult;->getSize-YbymL2g()J +Landroidx/compose/ui/text/TextPainter; +HSPLandroidx/compose/ui/text/TextPainter;->()V +HSPLandroidx/compose/ui/text/TextPainter;->()V +HSPLandroidx/compose/ui/text/TextPainter;->paint(Landroidx/compose/ui/graphics/Canvas;Landroidx/compose/ui/text/TextLayoutResult;)V +Landroidx/compose/ui/text/TextRange; +HSPLandroidx/compose/ui/text/TextRange;->()V +HSPLandroidx/compose/ui/text/TextRange;->(J)V +HSPLandroidx/compose/ui/text/TextRange;->access$getZero$cp()J +HSPLandroidx/compose/ui/text/TextRange;->box-impl(J)Landroidx/compose/ui/text/TextRange; +HSPLandroidx/compose/ui/text/TextRange;->constructor-impl(J)J +HSPLandroidx/compose/ui/text/TextRange;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/TextRange;->equals-impl(JLjava/lang/Object;)Z +HSPLandroidx/compose/ui/text/TextRange;->equals-impl0(JJ)Z +HSPLandroidx/compose/ui/text/TextRange;->getCollapsed-impl(J)Z +HSPLandroidx/compose/ui/text/TextRange;->getEnd-impl(J)I +HSPLandroidx/compose/ui/text/TextRange;->getMax-impl(J)I +HSPLandroidx/compose/ui/text/TextRange;->getMin-impl(J)I +HSPLandroidx/compose/ui/text/TextRange;->getStart-impl(J)I +HSPLandroidx/compose/ui/text/TextRange;->unbox-impl()J +Landroidx/compose/ui/text/TextRange$Companion; +HSPLandroidx/compose/ui/text/TextRange$Companion;->()V +HSPLandroidx/compose/ui/text/TextRange$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/TextRange$Companion;->getZero-d9O1mEE()J +Landroidx/compose/ui/text/TextRangeKt; +HSPLandroidx/compose/ui/text/TextRangeKt;->TextRange(I)J +HSPLandroidx/compose/ui/text/TextRangeKt;->TextRange(II)J +HSPLandroidx/compose/ui/text/TextRangeKt;->coerceIn-8ffj60Q(JII)J +HSPLandroidx/compose/ui/text/TextRangeKt;->packWithCheck(II)J +Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/ui/text/TextStyle;->()V +HSPLandroidx/compose/ui/text/TextStyle;->(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Landroidx/compose/ui/text/PlatformTextStyle;Landroidx/compose/ui/text/style/LineHeightStyle;Landroidx/compose/ui/text/style/LineBreak;Landroidx/compose/ui/text/style/Hyphens;Landroidx/compose/ui/text/style/TextMotion;)V +HSPLandroidx/compose/ui/text/TextStyle;->(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Landroidx/compose/ui/text/PlatformTextStyle;Landroidx/compose/ui/text/style/LineHeightStyle;Landroidx/compose/ui/text/style/LineBreak;Landroidx/compose/ui/text/style/Hyphens;Landroidx/compose/ui/text/style/TextMotion;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/TextStyle;->(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Landroidx/compose/ui/text/PlatformTextStyle;Landroidx/compose/ui/text/style/LineHeightStyle;Landroidx/compose/ui/text/style/LineBreak;Landroidx/compose/ui/text/style/Hyphens;Landroidx/compose/ui/text/style/TextMotion;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/TextStyle;->(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Landroidx/compose/ui/text/PlatformTextStyle;Landroidx/compose/ui/text/style/LineHeightStyle;Landroidx/compose/ui/text/style/LineBreak;Landroidx/compose/ui/text/style/Hyphens;)V +HSPLandroidx/compose/ui/text/TextStyle;->(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Landroidx/compose/ui/text/PlatformTextStyle;Landroidx/compose/ui/text/style/LineHeightStyle;Landroidx/compose/ui/text/style/LineBreak;Landroidx/compose/ui/text/style/Hyphens;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/TextStyle;->(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Landroidx/compose/ui/text/PlatformTextStyle;Landroidx/compose/ui/text/style/LineHeightStyle;Landroidx/compose/ui/text/style/LineBreak;Landroidx/compose/ui/text/style/Hyphens;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/TextStyle;->(Landroidx/compose/ui/text/SpanStyle;Landroidx/compose/ui/text/ParagraphStyle;)V +HSPLandroidx/compose/ui/text/TextStyle;->(Landroidx/compose/ui/text/SpanStyle;Landroidx/compose/ui/text/ParagraphStyle;Landroidx/compose/ui/text/PlatformTextStyle;)V +HSPLandroidx/compose/ui/text/TextStyle;->access$getDefault$cp()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/ui/text/TextStyle;->copy-CXVQc50$default(Landroidx/compose/ui/text/TextStyle;JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Landroidx/compose/ui/text/PlatformTextStyle;Landroidx/compose/ui/text/style/LineHeightStyle;Landroidx/compose/ui/text/style/LineBreak;Landroidx/compose/ui/text/style/Hyphens;ILjava/lang/Object;)Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/ui/text/TextStyle;->copy-CXVQc50(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Landroidx/compose/ui/text/PlatformTextStyle;Landroidx/compose/ui/text/style/LineHeightStyle;Landroidx/compose/ui/text/style/LineBreak;Landroidx/compose/ui/text/style/Hyphens;)Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/ui/text/TextStyle;->copy-v2rsoow$default(Landroidx/compose/ui/text/TextStyle;JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Landroidx/compose/ui/text/PlatformTextStyle;Landroidx/compose/ui/text/style/LineHeightStyle;Landroidx/compose/ui/text/style/LineBreak;Landroidx/compose/ui/text/style/Hyphens;Landroidx/compose/ui/text/style/TextMotion;ILjava/lang/Object;)Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/ui/text/TextStyle;->copy-v2rsoow(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Landroidx/compose/ui/text/PlatformTextStyle;Landroidx/compose/ui/text/style/LineHeightStyle;Landroidx/compose/ui/text/style/LineBreak;Landroidx/compose/ui/text/style/Hyphens;Landroidx/compose/ui/text/style/TextMotion;)Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/ui/text/TextStyle;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/TextStyle;->getAlpha()F +HSPLandroidx/compose/ui/text/TextStyle;->getBrush()Landroidx/compose/ui/graphics/Brush; +HSPLandroidx/compose/ui/text/TextStyle;->getColor-0d7_KjU()J +HSPLandroidx/compose/ui/text/TextStyle;->getDrawStyle()Landroidx/compose/ui/graphics/drawscope/DrawStyle; +HSPLandroidx/compose/ui/text/TextStyle;->getFontFamily()Landroidx/compose/ui/text/font/FontFamily; +HSPLandroidx/compose/ui/text/TextStyle;->getFontSize-XSAIIZE()J +HSPLandroidx/compose/ui/text/TextStyle;->getFontStyle-4Lr2A7w()Landroidx/compose/ui/text/font/FontStyle; +HSPLandroidx/compose/ui/text/TextStyle;->getFontSynthesis-ZQGJjVo()Landroidx/compose/ui/text/font/FontSynthesis; +HSPLandroidx/compose/ui/text/TextStyle;->getFontWeight()Landroidx/compose/ui/text/font/FontWeight; +PLandroidx/compose/ui/text/TextStyle;->getLetterSpacing-XSAIIZE()J +HSPLandroidx/compose/ui/text/TextStyle;->getLineBreak-LgCVezo()Landroidx/compose/ui/text/style/LineBreak; +HSPLandroidx/compose/ui/text/TextStyle;->getLineHeight-XSAIIZE()J +HSPLandroidx/compose/ui/text/TextStyle;->getLineHeightStyle()Landroidx/compose/ui/text/style/LineHeightStyle; +HSPLandroidx/compose/ui/text/TextStyle;->getLocaleList()Landroidx/compose/ui/text/intl/LocaleList; +HSPLandroidx/compose/ui/text/TextStyle;->getParagraphStyle$ui_text_release()Landroidx/compose/ui/text/ParagraphStyle; +HSPLandroidx/compose/ui/text/TextStyle;->getPlatformStyle()Landroidx/compose/ui/text/PlatformTextStyle; +HSPLandroidx/compose/ui/text/TextStyle;->getShadow()Landroidx/compose/ui/graphics/Shadow; +HSPLandroidx/compose/ui/text/TextStyle;->getSpanStyle$ui_text_release()Landroidx/compose/ui/text/SpanStyle; +HSPLandroidx/compose/ui/text/TextStyle;->getTextAlign-buA522U()Landroidx/compose/ui/text/style/TextAlign; +HSPLandroidx/compose/ui/text/TextStyle;->getTextDecoration()Landroidx/compose/ui/text/style/TextDecoration; +HSPLandroidx/compose/ui/text/TextStyle;->getTextDirection-mmuk1to()Landroidx/compose/ui/text/style/TextDirection; +HSPLandroidx/compose/ui/text/TextStyle;->getTextIndent()Landroidx/compose/ui/text/style/TextIndent; +HSPLandroidx/compose/ui/text/TextStyle;->getTextMotion()Landroidx/compose/ui/text/style/TextMotion; +HSPLandroidx/compose/ui/text/TextStyle;->hasSameDrawAffectingAttributes(Landroidx/compose/ui/text/TextStyle;)Z +HSPLandroidx/compose/ui/text/TextStyle;->hasSameLayoutAffectingAttributes(Landroidx/compose/ui/text/TextStyle;)Z +HSPLandroidx/compose/ui/text/TextStyle;->merge(Landroidx/compose/ui/text/ParagraphStyle;)Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/ui/text/TextStyle;->merge(Landroidx/compose/ui/text/TextStyle;)Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/ui/text/TextStyle;->toParagraphStyle()Landroidx/compose/ui/text/ParagraphStyle; +HSPLandroidx/compose/ui/text/TextStyle;->toSpanStyle()Landroidx/compose/ui/text/SpanStyle; +Landroidx/compose/ui/text/TextStyle$Companion; +HSPLandroidx/compose/ui/text/TextStyle$Companion;->()V +HSPLandroidx/compose/ui/text/TextStyle$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/TextStyle$Companion;->getDefault()Landroidx/compose/ui/text/TextStyle; +Landroidx/compose/ui/text/TextStyleKt; +HSPLandroidx/compose/ui/text/TextStyleKt;->access$createPlatformTextStyleInternal(Landroidx/compose/ui/text/PlatformSpanStyle;Landroidx/compose/ui/text/PlatformParagraphStyle;)Landroidx/compose/ui/text/PlatformTextStyle; +HSPLandroidx/compose/ui/text/TextStyleKt;->createPlatformTextStyleInternal(Landroidx/compose/ui/text/PlatformSpanStyle;Landroidx/compose/ui/text/PlatformParagraphStyle;)Landroidx/compose/ui/text/PlatformTextStyle; +HSPLandroidx/compose/ui/text/TextStyleKt;->resolveDefaults(Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/unit/LayoutDirection;)Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/ui/text/TextStyleKt;->resolveTextDirection-Yj3eThk(Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/text/style/TextDirection;)I +Landroidx/compose/ui/text/TextStyleKt$WhenMappings; +HSPLandroidx/compose/ui/text/TextStyleKt$WhenMappings;->()V +Landroidx/compose/ui/text/android/BoringLayoutFactory; +HSPLandroidx/compose/ui/text/android/BoringLayoutFactory;->()V +HSPLandroidx/compose/ui/text/android/BoringLayoutFactory;->()V +HSPLandroidx/compose/ui/text/android/BoringLayoutFactory;->create(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/BoringLayout$Metrics;Landroid/text/Layout$Alignment;ZZLandroid/text/TextUtils$TruncateAt;I)Landroid/text/BoringLayout; +HSPLandroidx/compose/ui/text/android/BoringLayoutFactory;->measure(Ljava/lang/CharSequence;Landroid/text/TextPaint;Landroid/text/TextDirectionHeuristic;)Landroid/text/BoringLayout$Metrics; +Landroidx/compose/ui/text/android/BoringLayoutFactory33; +HSPLandroidx/compose/ui/text/android/BoringLayoutFactory33;->()V +HSPLandroidx/compose/ui/text/android/BoringLayoutFactory33;->()V +HSPLandroidx/compose/ui/text/android/BoringLayoutFactory33;->create(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZZLandroid/text/TextUtils$TruncateAt;I)Landroid/text/BoringLayout; +HSPLandroidx/compose/ui/text/android/BoringLayoutFactory33;->isBoring(Ljava/lang/CharSequence;Landroid/text/TextPaint;Landroid/text/TextDirectionHeuristic;)Landroid/text/BoringLayout$Metrics; +Landroidx/compose/ui/text/android/CharSequenceCharacterIterator; +HSPLandroidx/compose/ui/text/android/CharSequenceCharacterIterator;->(Ljava/lang/CharSequence;II)V +HSPLandroidx/compose/ui/text/android/CharSequenceCharacterIterator;->current()C +HSPLandroidx/compose/ui/text/android/CharSequenceCharacterIterator;->first()C +HSPLandroidx/compose/ui/text/android/CharSequenceCharacterIterator;->getBeginIndex()I +HSPLandroidx/compose/ui/text/android/CharSequenceCharacterIterator;->getEndIndex()I +HSPLandroidx/compose/ui/text/android/CharSequenceCharacterIterator;->getIndex()I +HSPLandroidx/compose/ui/text/android/CharSequenceCharacterIterator;->next()C +HSPLandroidx/compose/ui/text/android/CharSequenceCharacterIterator;->setIndex(I)C +Landroidx/compose/ui/text/android/LayoutCompatKt; +HSPLandroidx/compose/ui/text/android/LayoutCompatKt;->getLineForOffset(Landroid/text/Layout;IZ)I +Landroidx/compose/ui/text/android/LayoutHelper; +HSPLandroidx/compose/ui/text/android/LayoutHelper;->(Landroid/text/Layout;)V +HSPLandroidx/compose/ui/text/android/LayoutHelper;->getDownstreamHorizontal(IZ)F +HSPLandroidx/compose/ui/text/android/LayoutHelper;->getHorizontalPosition(IZZ)F +Landroidx/compose/ui/text/android/LayoutIntrinsics; +HSPLandroidx/compose/ui/text/android/LayoutIntrinsics;->(Ljava/lang/CharSequence;Landroid/text/TextPaint;I)V +HSPLandroidx/compose/ui/text/android/LayoutIntrinsics;->getBoringMetrics()Landroid/text/BoringLayout$Metrics; +HSPLandroidx/compose/ui/text/android/LayoutIntrinsics;->getMaxIntrinsicWidth()F +HSPLandroidx/compose/ui/text/android/LayoutIntrinsics;->getMinIntrinsicWidth()F +Landroidx/compose/ui/text/android/LayoutIntrinsicsKt; +HSPLandroidx/compose/ui/text/android/LayoutIntrinsicsKt;->$r8$lambda$DtXonrOPJPXM49GdHH_fq-Et3g0(Lkotlin/Pair;Lkotlin/Pair;)I +HSPLandroidx/compose/ui/text/android/LayoutIntrinsicsKt;->access$shouldIncreaseMaxIntrinsic(FLjava/lang/CharSequence;Landroid/text/TextPaint;)Z +HSPLandroidx/compose/ui/text/android/LayoutIntrinsicsKt;->minIntrinsicWidth$lambda$0(Lkotlin/Pair;Lkotlin/Pair;)I +HSPLandroidx/compose/ui/text/android/LayoutIntrinsicsKt;->minIntrinsicWidth(Ljava/lang/CharSequence;Landroid/text/TextPaint;)F +HSPLandroidx/compose/ui/text/android/LayoutIntrinsicsKt;->shouldIncreaseMaxIntrinsic(FLjava/lang/CharSequence;Landroid/text/TextPaint;)Z +Landroidx/compose/ui/text/android/LayoutIntrinsicsKt$$ExternalSyntheticLambda0; +HSPLandroidx/compose/ui/text/android/LayoutIntrinsicsKt$$ExternalSyntheticLambda0;->()V +HSPLandroidx/compose/ui/text/android/LayoutIntrinsicsKt$$ExternalSyntheticLambda0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +Landroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0; +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/graphics/RenderNode;)V +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/graphics/RenderNode;)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/graphics/RenderNode;F)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/graphics/RenderNode;I)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/graphics/RenderNode;Landroid/graphics/Matrix;)V +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/graphics/RenderNode;Z)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/graphics/text/LineBreakConfig$Builder;I)Landroid/graphics/text/LineBreakConfig$Builder; +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/view/WindowInsetsController;I)V +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/view/WindowInsetsController;Landroid/view/WindowInsetsController$OnControllableInsetsChangedListener;)V +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$10(Landroid/graphics/RenderNode;F)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$11(Landroid/graphics/RenderNode;F)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$2(Landroid/graphics/RenderNode;)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$2(Landroid/graphics/RenderNode;F)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$2(Landroid/graphics/RenderNode;I)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$2(Landroid/graphics/RenderNode;Z)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$3(Landroid/graphics/RenderNode;)I +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$3(Landroid/graphics/RenderNode;F)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$3(Landroid/graphics/RenderNode;I)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$4(Landroid/graphics/RenderNode;)I +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$4(Landroid/graphics/RenderNode;F)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$5(Landroid/graphics/RenderNode;)F +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$5(Landroid/graphics/RenderNode;)I +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$5(Landroid/graphics/RenderNode;F)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$6(Landroid/graphics/RenderNode;F)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$7(Landroid/graphics/RenderNode;F)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$8(Landroid/graphics/RenderNode;F)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$9(Landroid/graphics/RenderNode;)F +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$9(Landroid/graphics/RenderNode;F)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m()I +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m()Landroid/graphics/text/LineBreakConfig$Builder; +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m()V +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(ILandroid/graphics/BlendMode;)Landroid/graphics/BlendModeColorFilter; +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/content/res/Configuration;)I +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/Canvas;Landroid/graphics/RenderNode;)V +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/Paint;Landroid/graphics/BlendMode;)V +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/RenderNode;)I +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/RenderNode;)Landroid/graphics/RecordingCanvas; +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/RenderNode;)V +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/RenderNode;)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/RenderNode;F)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/RenderNode;I)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/RenderNode;IIII)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/RenderNode;Landroid/graphics/Outline;)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/RenderNode;Landroid/graphics/RenderEffect;)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/RenderNode;Z)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/RenderNode;ZLandroid/graphics/Paint;)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/text/LineBreakConfig$Builder;)Landroid/graphics/text/LineBreakConfig; +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/text/LineBreakConfig$Builder;I)Landroid/graphics/text/LineBreakConfig$Builder; +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/text/StaticLayout$Builder;Landroid/graphics/text/LineBreakConfig;)Landroid/text/StaticLayout$Builder; +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/text/StaticLayout$Builder;Z)Landroid/text/StaticLayout$Builder; +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/View;)Ljava/util/Map; +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/View;Landroid/graphics/Matrix;)V +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/View;Z)V +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/WindowInsetsController;I)V +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/WindowInsetsController;Landroid/view/WindowInsetsController$OnControllableInsetsChangedListener;)V +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;IZ)Landroid/text/BoringLayout; +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Ljava/lang/CharSequence;Landroid/text/TextPaint;Landroid/text/TextDirectionHeuristic;ZLandroid/text/BoringLayout$Metrics;)Landroid/text/BoringLayout$Metrics; +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Ljava/lang/String;)Landroid/graphics/RenderNode; +Landroidx/compose/ui/text/android/SpannedExtensionsKt; +HSPLandroidx/compose/ui/text/android/SpannedExtensionsKt;->hasSpan(Landroid/text/Spanned;Ljava/lang/Class;)Z +Landroidx/compose/ui/text/android/StaticLayoutFactory; +HSPLandroidx/compose/ui/text/android/StaticLayoutFactory;->()V +HSPLandroidx/compose/ui/text/android/StaticLayoutFactory;->()V +HSPLandroidx/compose/ui/text/android/StaticLayoutFactory;->create(Ljava/lang/CharSequence;IILandroid/text/TextPaint;ILandroid/text/TextDirectionHeuristic;Landroid/text/Layout$Alignment;ILandroid/text/TextUtils$TruncateAt;IFFIZZIIII[I[I)Landroid/text/StaticLayout; +Landroidx/compose/ui/text/android/StaticLayoutFactory23; +HSPLandroidx/compose/ui/text/android/StaticLayoutFactory23;->()V +HSPLandroidx/compose/ui/text/android/StaticLayoutFactory23;->create(Landroidx/compose/ui/text/android/StaticLayoutParams;)Landroid/text/StaticLayout; +Landroidx/compose/ui/text/android/StaticLayoutFactory26; +HSPLandroidx/compose/ui/text/android/StaticLayoutFactory26;->()V +HSPLandroidx/compose/ui/text/android/StaticLayoutFactory26;->()V +HSPLandroidx/compose/ui/text/android/StaticLayoutFactory26;->setJustificationMode(Landroid/text/StaticLayout$Builder;I)V +Landroidx/compose/ui/text/android/StaticLayoutFactory28; +HSPLandroidx/compose/ui/text/android/StaticLayoutFactory28;->()V +HSPLandroidx/compose/ui/text/android/StaticLayoutFactory28;->()V +HSPLandroidx/compose/ui/text/android/StaticLayoutFactory28;->setUseLineSpacingFromFallbacks(Landroid/text/StaticLayout$Builder;Z)V +Landroidx/compose/ui/text/android/StaticLayoutFactory33; +HSPLandroidx/compose/ui/text/android/StaticLayoutFactory33;->()V +HSPLandroidx/compose/ui/text/android/StaticLayoutFactory33;->()V +HSPLandroidx/compose/ui/text/android/StaticLayoutFactory33;->setLineBreakConfig(Landroid/text/StaticLayout$Builder;II)V +Landroidx/compose/ui/text/android/StaticLayoutFactoryImpl; +Landroidx/compose/ui/text/android/StaticLayoutParams; +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->(Ljava/lang/CharSequence;IILandroid/text/TextPaint;ILandroid/text/TextDirectionHeuristic;Landroid/text/Layout$Alignment;ILandroid/text/TextUtils$TruncateAt;IFFIZZIIII[I[I)V +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getAlignment()Landroid/text/Layout$Alignment; +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getBreakStrategy()I +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getEllipsize()Landroid/text/TextUtils$TruncateAt; +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getEllipsizedWidth()I +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getEnd()I +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getHyphenationFrequency()I +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getIncludePadding()Z +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getJustificationMode()I +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getLeftIndents()[I +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getLineBreakStyle()I +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getLineBreakWordStyle()I +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getLineSpacingExtra()F +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getLineSpacingMultiplier()F +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getMaxLines()I +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getPaint()Landroid/text/TextPaint; +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getRightIndents()[I +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getStart()I +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getText()Ljava/lang/CharSequence; +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getTextDir()Landroid/text/TextDirectionHeuristic; +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getUseFallbackLineSpacing()Z +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getWidth()I +Landroidx/compose/ui/text/android/TextAlignmentAdapter; +HSPLandroidx/compose/ui/text/android/TextAlignmentAdapter;->()V +HSPLandroidx/compose/ui/text/android/TextAlignmentAdapter;->()V +HSPLandroidx/compose/ui/text/android/TextAlignmentAdapter;->get(I)Landroid/text/Layout$Alignment; +Landroidx/compose/ui/text/android/TextAndroidCanvas; +HSPLandroidx/compose/ui/text/android/TextAndroidCanvas;->()V +HSPLandroidx/compose/ui/text/android/TextAndroidCanvas;->drawText(Ljava/lang/String;FFLandroid/graphics/Paint;)V +HSPLandroidx/compose/ui/text/android/TextAndroidCanvas;->drawTextRun(Ljava/lang/CharSequence;IIIIFFZLandroid/graphics/Paint;)V +HSPLandroidx/compose/ui/text/android/TextAndroidCanvas;->getClipBounds(Landroid/graphics/Rect;)Z +HSPLandroidx/compose/ui/text/android/TextAndroidCanvas;->setCanvas(Landroid/graphics/Canvas;)V +Landroidx/compose/ui/text/android/TextLayout; +HSPLandroidx/compose/ui/text/android/TextLayout;->(Ljava/lang/CharSequence;FLandroid/text/TextPaint;ILandroid/text/TextUtils$TruncateAt;IFFZZIIIIII[I[ILandroidx/compose/ui/text/android/LayoutIntrinsics;)V +HSPLandroidx/compose/ui/text/android/TextLayout;->(Ljava/lang/CharSequence;FLandroid/text/TextPaint;ILandroid/text/TextUtils$TruncateAt;IFFZZIIIIII[I[ILandroidx/compose/ui/text/android/LayoutIntrinsics;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/android/TextLayout;->getBoundingBox(I)Landroid/graphics/RectF; +HSPLandroidx/compose/ui/text/android/TextLayout;->getDidExceedMaxLines()Z +HSPLandroidx/compose/ui/text/android/TextLayout;->getHeight()I +HSPLandroidx/compose/ui/text/android/TextLayout;->getHorizontalPadding(I)F +HSPLandroidx/compose/ui/text/android/TextLayout;->getIncludePadding()Z +HSPLandroidx/compose/ui/text/android/TextLayout;->getLayout()Landroid/text/Layout; +HSPLandroidx/compose/ui/text/android/TextLayout;->getLayoutHelper()Landroidx/compose/ui/text/android/LayoutHelper; +HSPLandroidx/compose/ui/text/android/TextLayout;->getLineBaseline(I)F +HSPLandroidx/compose/ui/text/android/TextLayout;->getLineBottom(I)F +HSPLandroidx/compose/ui/text/android/TextLayout;->getLineCount()I +HSPLandroidx/compose/ui/text/android/TextLayout;->getLineForOffset(I)I +HSPLandroidx/compose/ui/text/android/TextLayout;->getLineTop(I)F +HSPLandroidx/compose/ui/text/android/TextLayout;->getParagraphDirection(I)I +HSPLandroidx/compose/ui/text/android/TextLayout;->getPrimaryHorizontal$default(Landroidx/compose/ui/text/android/TextLayout;IZILjava/lang/Object;)F +HSPLandroidx/compose/ui/text/android/TextLayout;->getPrimaryHorizontal(IZ)F +HSPLandroidx/compose/ui/text/android/TextLayout;->getText()Ljava/lang/CharSequence; +HSPLandroidx/compose/ui/text/android/TextLayout;->paint(Landroid/graphics/Canvas;)V +Landroidx/compose/ui/text/android/TextLayout$layoutHelper$2; +HSPLandroidx/compose/ui/text/android/TextLayout$layoutHelper$2;->(Landroidx/compose/ui/text/android/TextLayout;)V +HSPLandroidx/compose/ui/text/android/TextLayout$layoutHelper$2;->invoke()Landroidx/compose/ui/text/android/LayoutHelper; +HSPLandroidx/compose/ui/text/android/TextLayout$layoutHelper$2;->invoke()Ljava/lang/Object; +Landroidx/compose/ui/text/android/TextLayoutKt; +HSPLandroidx/compose/ui/text/android/TextLayoutKt;->()V +HSPLandroidx/compose/ui/text/android/TextLayoutKt;->VerticalPaddings(II)J +HSPLandroidx/compose/ui/text/android/TextLayoutKt;->access$getLastLineMetrics(Landroidx/compose/ui/text/android/TextLayout;Landroid/text/TextPaint;Landroid/text/TextDirectionHeuristic;[Landroidx/compose/ui/text/android/style/LineHeightStyleSpan;)Landroid/graphics/Paint$FontMetricsInt; +HSPLandroidx/compose/ui/text/android/TextLayoutKt;->access$getLineHeightPaddings(Landroidx/compose/ui/text/android/TextLayout;[Landroidx/compose/ui/text/android/style/LineHeightStyleSpan;)J +HSPLandroidx/compose/ui/text/android/TextLayoutKt;->access$getLineHeightSpans(Landroidx/compose/ui/text/android/TextLayout;)[Landroidx/compose/ui/text/android/style/LineHeightStyleSpan; +HSPLandroidx/compose/ui/text/android/TextLayoutKt;->access$getSharedTextAndroidCanvas$p()Landroidx/compose/ui/text/android/TextAndroidCanvas; +HSPLandroidx/compose/ui/text/android/TextLayoutKt;->access$getVerticalPaddings(Landroidx/compose/ui/text/android/TextLayout;)J +HSPLandroidx/compose/ui/text/android/TextLayoutKt;->getLastLineMetrics(Landroidx/compose/ui/text/android/TextLayout;Landroid/text/TextPaint;Landroid/text/TextDirectionHeuristic;[Landroidx/compose/ui/text/android/style/LineHeightStyleSpan;)Landroid/graphics/Paint$FontMetricsInt; +HSPLandroidx/compose/ui/text/android/TextLayoutKt;->getLineHeightPaddings(Landroidx/compose/ui/text/android/TextLayout;[Landroidx/compose/ui/text/android/style/LineHeightStyleSpan;)J +HSPLandroidx/compose/ui/text/android/TextLayoutKt;->getLineHeightSpans(Landroidx/compose/ui/text/android/TextLayout;)[Landroidx/compose/ui/text/android/style/LineHeightStyleSpan; +HSPLandroidx/compose/ui/text/android/TextLayoutKt;->getTextDirectionHeuristic(I)Landroid/text/TextDirectionHeuristic; +HSPLandroidx/compose/ui/text/android/TextLayoutKt;->getVerticalPaddings(Landroidx/compose/ui/text/android/TextLayout;)J +HSPLandroidx/compose/ui/text/android/TextLayoutKt;->isLineEllipsized(Landroid/text/Layout;I)Z +Landroidx/compose/ui/text/android/VerticalPaddings; +HSPLandroidx/compose/ui/text/android/VerticalPaddings;->constructor-impl(J)J +HSPLandroidx/compose/ui/text/android/VerticalPaddings;->getBottomPadding-impl(J)I +HSPLandroidx/compose/ui/text/android/VerticalPaddings;->getTopPadding-impl(J)I +Landroidx/compose/ui/text/android/style/BaselineShiftSpan; +Landroidx/compose/ui/text/android/style/IndentationFixSpanKt; +HSPLandroidx/compose/ui/text/android/style/IndentationFixSpanKt;->getEllipsizedLeftPadding$default(Landroid/text/Layout;ILandroid/graphics/Paint;ILjava/lang/Object;)F +HSPLandroidx/compose/ui/text/android/style/IndentationFixSpanKt;->getEllipsizedLeftPadding(Landroid/text/Layout;ILandroid/graphics/Paint;)F +HSPLandroidx/compose/ui/text/android/style/IndentationFixSpanKt;->getEllipsizedRightPadding$default(Landroid/text/Layout;ILandroid/graphics/Paint;ILjava/lang/Object;)F +HSPLandroidx/compose/ui/text/android/style/IndentationFixSpanKt;->getEllipsizedRightPadding(Landroid/text/Layout;ILandroid/graphics/Paint;)F +Landroidx/compose/ui/text/android/style/LetterSpacingSpanEm; +Landroidx/compose/ui/text/android/style/LetterSpacingSpanPx; +Landroidx/compose/ui/text/android/style/LineHeightSpan; +HSPLandroidx/compose/ui/text/android/style/LineHeightSpan;->(F)V +HSPLandroidx/compose/ui/text/android/style/LineHeightSpan;->chooseHeight(Ljava/lang/CharSequence;IIIILandroid/graphics/Paint$FontMetricsInt;)V +Landroidx/compose/ui/text/android/style/LineHeightStyleSpan; +Landroidx/compose/ui/text/android/style/LineHeightStyleSpanKt; +HSPLandroidx/compose/ui/text/android/style/LineHeightStyleSpanKt;->lineHeight(Landroid/graphics/Paint$FontMetricsInt;)I +Landroidx/compose/ui/text/android/style/PlaceholderSpan; +Landroidx/compose/ui/text/android/style/TypefaceSpan; +HSPLandroidx/compose/ui/text/android/style/TypefaceSpan;->(Landroid/graphics/Typeface;)V +HSPLandroidx/compose/ui/text/android/style/TypefaceSpan;->updateDrawState(Landroid/text/TextPaint;)V +HSPLandroidx/compose/ui/text/android/style/TypefaceSpan;->updateMeasureState(Landroid/text/TextPaint;)V +HSPLandroidx/compose/ui/text/android/style/TypefaceSpan;->updateTypeface(Landroid/graphics/Paint;)V +Landroidx/compose/ui/text/caches/ContainerHelpersKt; +HSPLandroidx/compose/ui/text/caches/ContainerHelpersKt;->()V +Landroidx/compose/ui/text/caches/LruCache; +HSPLandroidx/compose/ui/text/caches/LruCache;->(I)V +HSPLandroidx/compose/ui/text/caches/LruCache;->access$getMonitor$p(Landroidx/compose/ui/text/caches/LruCache;)Landroidx/compose/ui/text/platform/SynchronizedObject; +HSPLandroidx/compose/ui/text/caches/LruCache;->create(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/text/caches/LruCache;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/text/caches/LruCache;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/text/caches/LruCache;->safeSizeOf(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLandroidx/compose/ui/text/caches/LruCache;->size()I +HSPLandroidx/compose/ui/text/caches/LruCache;->sizeOf(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLandroidx/compose/ui/text/caches/LruCache;->trimToSize(I)V +Landroidx/compose/ui/text/caches/SimpleArrayMap; +HSPLandroidx/compose/ui/text/caches/SimpleArrayMap;->(I)V +HSPLandroidx/compose/ui/text/caches/SimpleArrayMap;->(IILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/caches/SimpleArrayMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/text/caches/SimpleArrayMap;->indexOf(Ljava/lang/Object;I)I +HSPLandroidx/compose/ui/text/caches/SimpleArrayMap;->indexOfKey(Ljava/lang/Object;)I +Landroidx/compose/ui/text/font/AndroidFont; +Landroidx/compose/ui/text/font/AndroidFontLoader; +HSPLandroidx/compose/ui/text/font/AndroidFontLoader;->(Landroid/content/Context;)V +HSPLandroidx/compose/ui/text/font/AndroidFontLoader;->getCacheKey()Ljava/lang/Object; +HSPLandroidx/compose/ui/text/font/AndroidFontLoader;->loadBlocking(Landroidx/compose/ui/text/font/Font;)Landroid/graphics/Typeface; +HSPLandroidx/compose/ui/text/font/AndroidFontLoader;->loadBlocking(Landroidx/compose/ui/text/font/Font;)Ljava/lang/Object; +Landroidx/compose/ui/text/font/AndroidFontLoader_androidKt; +HSPLandroidx/compose/ui/text/font/AndroidFontLoader_androidKt;->access$load(Landroidx/compose/ui/text/font/ResourceFont;Landroid/content/Context;)Landroid/graphics/Typeface; +HSPLandroidx/compose/ui/text/font/AndroidFontLoader_androidKt;->load(Landroidx/compose/ui/text/font/ResourceFont;Landroid/content/Context;)Landroid/graphics/Typeface; +Landroidx/compose/ui/text/font/AndroidFontResolveInterceptor; +HSPLandroidx/compose/ui/text/font/AndroidFontResolveInterceptor;->(I)V +HSPLandroidx/compose/ui/text/font/AndroidFontResolveInterceptor;->interceptFontWeight(Landroidx/compose/ui/text/font/FontWeight;)Landroidx/compose/ui/text/font/FontWeight; +Landroidx/compose/ui/text/font/AndroidFontResolveInterceptor_androidKt; +HSPLandroidx/compose/ui/text/font/AndroidFontResolveInterceptor_androidKt;->AndroidFontResolveInterceptor(Landroid/content/Context;)Landroidx/compose/ui/text/font/AndroidFontResolveInterceptor; +Landroidx/compose/ui/text/font/AndroidFontUtils_androidKt; +HSPLandroidx/compose/ui/text/font/AndroidFontUtils_androidKt;->getAndroidBold(Landroidx/compose/ui/text/font/FontWeight$Companion;)Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/ui/text/font/AndroidFontUtils_androidKt;->getAndroidTypefaceStyle(ZZ)I +HSPLandroidx/compose/ui/text/font/AndroidFontUtils_androidKt;->getAndroidTypefaceStyle-FO1MlWM(Landroidx/compose/ui/text/font/FontWeight;I)I +Landroidx/compose/ui/text/font/AsyncTypefaceCache; +HSPLandroidx/compose/ui/text/font/AsyncTypefaceCache;->()V +HSPLandroidx/compose/ui/text/font/AsyncTypefaceCache;->access$getCacheLock$p(Landroidx/compose/ui/text/font/AsyncTypefaceCache;)Landroidx/compose/ui/text/platform/SynchronizedObject; +HSPLandroidx/compose/ui/text/font/AsyncTypefaceCache;->access$getPermanentCache$p(Landroidx/compose/ui/text/font/AsyncTypefaceCache;)Landroidx/compose/ui/text/caches/SimpleArrayMap; +HSPLandroidx/compose/ui/text/font/AsyncTypefaceCache;->access$getResultCache$p(Landroidx/compose/ui/text/font/AsyncTypefaceCache;)Landroidx/compose/ui/text/caches/LruCache; +HSPLandroidx/compose/ui/text/font/AsyncTypefaceCache;->put$default(Landroidx/compose/ui/text/font/AsyncTypefaceCache;Landroidx/compose/ui/text/font/Font;Landroidx/compose/ui/text/font/PlatformFontLoader;Ljava/lang/Object;ZILjava/lang/Object;)V +HSPLandroidx/compose/ui/text/font/AsyncTypefaceCache;->put(Landroidx/compose/ui/text/font/Font;Landroidx/compose/ui/text/font/PlatformFontLoader;Ljava/lang/Object;Z)V +Landroidx/compose/ui/text/font/AsyncTypefaceCache$AsyncTypefaceResult; +HSPLandroidx/compose/ui/text/font/AsyncTypefaceCache$AsyncTypefaceResult;->(Ljava/lang/Object;)V +HSPLandroidx/compose/ui/text/font/AsyncTypefaceCache$AsyncTypefaceResult;->box-impl(Ljava/lang/Object;)Landroidx/compose/ui/text/font/AsyncTypefaceCache$AsyncTypefaceResult; +HSPLandroidx/compose/ui/text/font/AsyncTypefaceCache$AsyncTypefaceResult;->constructor-impl(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/text/font/AsyncTypefaceCache$Key; +HSPLandroidx/compose/ui/text/font/AsyncTypefaceCache$Key;->(Landroidx/compose/ui/text/font/Font;Ljava/lang/Object;)V +HSPLandroidx/compose/ui/text/font/AsyncTypefaceCache$Key;->hashCode()I +Landroidx/compose/ui/text/font/DefaultFontFamily; +HSPLandroidx/compose/ui/text/font/DefaultFontFamily;->()V +Landroidx/compose/ui/text/font/FileBasedFontFamily; +HSPLandroidx/compose/ui/text/font/FileBasedFontFamily;->()V +HSPLandroidx/compose/ui/text/font/FileBasedFontFamily;->()V +HSPLandroidx/compose/ui/text/font/FileBasedFontFamily;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/text/font/Font; +HSPLandroidx/compose/ui/text/font/Font;->()V +Landroidx/compose/ui/text/font/Font$Companion; +HSPLandroidx/compose/ui/text/font/Font$Companion;->()V +HSPLandroidx/compose/ui/text/font/Font$Companion;->()V +Landroidx/compose/ui/text/font/Font$ResourceLoader; +Landroidx/compose/ui/text/font/FontFamily; +HSPLandroidx/compose/ui/text/font/FontFamily;->()V +HSPLandroidx/compose/ui/text/font/FontFamily;->(Z)V +HSPLandroidx/compose/ui/text/font/FontFamily;->(ZLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/font/FontFamily;->access$getDefault$cp()Landroidx/compose/ui/text/font/SystemFontFamily; +HSPLandroidx/compose/ui/text/font/FontFamily;->access$getSansSerif$cp()Landroidx/compose/ui/text/font/GenericFontFamily; +Landroidx/compose/ui/text/font/FontFamily$Companion; +HSPLandroidx/compose/ui/text/font/FontFamily$Companion;->()V +HSPLandroidx/compose/ui/text/font/FontFamily$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/font/FontFamily$Companion;->getDefault()Landroidx/compose/ui/text/font/SystemFontFamily; +HSPLandroidx/compose/ui/text/font/FontFamily$Companion;->getSansSerif()Landroidx/compose/ui/text/font/GenericFontFamily; +Landroidx/compose/ui/text/font/FontFamily$Resolver; +Landroidx/compose/ui/text/font/FontFamilyKt; +HSPLandroidx/compose/ui/text/font/FontFamilyKt;->FontFamily([Landroidx/compose/ui/text/font/Font;)Landroidx/compose/ui/text/font/FontFamily; +Landroidx/compose/ui/text/font/FontFamilyResolverImpl; +HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl;->(Landroidx/compose/ui/text/font/PlatformFontLoader;Landroidx/compose/ui/text/font/PlatformResolveInterceptor;Landroidx/compose/ui/text/font/TypefaceRequestCache;Landroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter;Landroidx/compose/ui/text/font/PlatformFontFamilyTypefaceAdapter;)V +HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl;->(Landroidx/compose/ui/text/font/PlatformFontLoader;Landroidx/compose/ui/text/font/PlatformResolveInterceptor;Landroidx/compose/ui/text/font/TypefaceRequestCache;Landroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter;Landroidx/compose/ui/text/font/PlatformFontFamilyTypefaceAdapter;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl;->access$getCreateDefaultTypeface$p(Landroidx/compose/ui/text/font/FontFamilyResolverImpl;)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl;->access$getFontListFontFamilyTypefaceAdapter$p(Landroidx/compose/ui/text/font/FontFamilyResolverImpl;)Landroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter; +HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl;->access$getPlatformFamilyTypefaceAdapter$p(Landroidx/compose/ui/text/font/FontFamilyResolverImpl;)Landroidx/compose/ui/text/font/PlatformFontFamilyTypefaceAdapter; +HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl;->getPlatformFontLoader$ui_text_release()Landroidx/compose/ui/text/font/PlatformFontLoader; +HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl;->resolve(Landroidx/compose/ui/text/font/TypefaceRequest;)Landroidx/compose/runtime/State; +HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl;->resolve-DPcqOEQ(Landroidx/compose/ui/text/font/FontFamily;Landroidx/compose/ui/text/font/FontWeight;II)Landroidx/compose/runtime/State; +Landroidx/compose/ui/text/font/FontFamilyResolverImpl$createDefaultTypeface$1; +HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl$createDefaultTypeface$1;->(Landroidx/compose/ui/text/font/FontFamilyResolverImpl;)V +Landroidx/compose/ui/text/font/FontFamilyResolverImpl$resolve$result$1; +HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl$resolve$result$1;->(Landroidx/compose/ui/text/font/FontFamilyResolverImpl;Landroidx/compose/ui/text/font/TypefaceRequest;)V +HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl$resolve$result$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl$resolve$result$1;->invoke(Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/text/font/TypefaceResult; +Landroidx/compose/ui/text/font/FontFamilyResolverKt; +HSPLandroidx/compose/ui/text/font/FontFamilyResolverKt;->()V +HSPLandroidx/compose/ui/text/font/FontFamilyResolverKt;->getGlobalAsyncTypefaceCache()Landroidx/compose/ui/text/font/AsyncTypefaceCache; +HSPLandroidx/compose/ui/text/font/FontFamilyResolverKt;->getGlobalTypefaceRequestCache()Landroidx/compose/ui/text/font/TypefaceRequestCache; +Landroidx/compose/ui/text/font/FontFamilyResolver_androidKt; +HSPLandroidx/compose/ui/text/font/FontFamilyResolver_androidKt;->createFontFamilyResolver(Landroid/content/Context;)Landroidx/compose/ui/text/font/FontFamily$Resolver; +Landroidx/compose/ui/text/font/FontFamilyTypefaceAdapter; +Landroidx/compose/ui/text/font/FontKt; +HSPLandroidx/compose/ui/text/font/FontKt;->Font-YpTlLL0$default(ILandroidx/compose/ui/text/font/FontWeight;IIILjava/lang/Object;)Landroidx/compose/ui/text/font/Font; +HSPLandroidx/compose/ui/text/font/FontKt;->Font-YpTlLL0(ILandroidx/compose/ui/text/font/FontWeight;II)Landroidx/compose/ui/text/font/Font; +Landroidx/compose/ui/text/font/FontListFontFamily; +HSPLandroidx/compose/ui/text/font/FontListFontFamily;->()V +HSPLandroidx/compose/ui/text/font/FontListFontFamily;->(Ljava/util/List;)V +HSPLandroidx/compose/ui/text/font/FontListFontFamily;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/font/FontListFontFamily;->getFonts()Ljava/util/List; +HSPLandroidx/compose/ui/text/font/FontListFontFamily;->hashCode()I +Landroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter; +HSPLandroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter;->()V +HSPLandroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter;->(Landroidx/compose/ui/text/font/AsyncTypefaceCache;Lkotlin/coroutines/CoroutineContext;)V +HSPLandroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter;->(Landroidx/compose/ui/text/font/AsyncTypefaceCache;Lkotlin/coroutines/CoroutineContext;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter;->resolve(Landroidx/compose/ui/text/font/TypefaceRequest;Landroidx/compose/ui/text/font/PlatformFontLoader;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/text/font/TypefaceResult; +Landroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter$Companion; +HSPLandroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter$Companion;->()V +HSPLandroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter$special$$inlined$CoroutineExceptionHandler$1; +HSPLandroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter$special$$inlined$CoroutineExceptionHandler$1;->(Lkotlinx/coroutines/CoroutineExceptionHandler$Key;)V +Landroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapterKt; +HSPLandroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapterKt;->access$firstImmediatelyAvailable(Ljava/util/List;Landroidx/compose/ui/text/font/TypefaceRequest;Landroidx/compose/ui/text/font/AsyncTypefaceCache;Landroidx/compose/ui/text/font/PlatformFontLoader;Lkotlin/jvm/functions/Function1;)Lkotlin/Pair; +HSPLandroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapterKt;->firstImmediatelyAvailable(Ljava/util/List;Landroidx/compose/ui/text/font/TypefaceRequest;Landroidx/compose/ui/text/font/AsyncTypefaceCache;Landroidx/compose/ui/text/font/PlatformFontLoader;Lkotlin/jvm/functions/Function1;)Lkotlin/Pair; +Landroidx/compose/ui/text/font/FontLoadingStrategy; +HSPLandroidx/compose/ui/text/font/FontLoadingStrategy;->()V +HSPLandroidx/compose/ui/text/font/FontLoadingStrategy;->access$getBlocking$cp()I +HSPLandroidx/compose/ui/text/font/FontLoadingStrategy;->constructor-impl(I)I +HSPLandroidx/compose/ui/text/font/FontLoadingStrategy;->equals-impl0(II)Z +HSPLandroidx/compose/ui/text/font/FontLoadingStrategy;->hashCode-impl(I)I +Landroidx/compose/ui/text/font/FontLoadingStrategy$Companion; +HSPLandroidx/compose/ui/text/font/FontLoadingStrategy$Companion;->()V +HSPLandroidx/compose/ui/text/font/FontLoadingStrategy$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/font/FontLoadingStrategy$Companion;->getBlocking-PKNRLFQ()I +Landroidx/compose/ui/text/font/FontMatcher; +HSPLandroidx/compose/ui/text/font/FontMatcher;->()V +HSPLandroidx/compose/ui/text/font/FontMatcher;->matchFont-RetOiIg(Ljava/util/List;Landroidx/compose/ui/text/font/FontWeight;I)Ljava/util/List; +Landroidx/compose/ui/text/font/FontStyle; +HSPLandroidx/compose/ui/text/font/FontStyle;->()V +HSPLandroidx/compose/ui/text/font/FontStyle;->(I)V +HSPLandroidx/compose/ui/text/font/FontStyle;->access$getItalic$cp()I +HSPLandroidx/compose/ui/text/font/FontStyle;->access$getNormal$cp()I +HSPLandroidx/compose/ui/text/font/FontStyle;->box-impl(I)Landroidx/compose/ui/text/font/FontStyle; +HSPLandroidx/compose/ui/text/font/FontStyle;->constructor-impl(I)I +HSPLandroidx/compose/ui/text/font/FontStyle;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/font/FontStyle;->equals-impl(ILjava/lang/Object;)Z +HSPLandroidx/compose/ui/text/font/FontStyle;->equals-impl0(II)Z +HSPLandroidx/compose/ui/text/font/FontStyle;->hashCode-impl(I)I +HSPLandroidx/compose/ui/text/font/FontStyle;->unbox-impl()I +Landroidx/compose/ui/text/font/FontStyle$Companion; +HSPLandroidx/compose/ui/text/font/FontStyle$Companion;->()V +HSPLandroidx/compose/ui/text/font/FontStyle$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/font/FontStyle$Companion;->getItalic-_-LCdwA()I +HSPLandroidx/compose/ui/text/font/FontStyle$Companion;->getNormal-_-LCdwA()I +Landroidx/compose/ui/text/font/FontSynthesis; +HSPLandroidx/compose/ui/text/font/FontSynthesis;->()V +HSPLandroidx/compose/ui/text/font/FontSynthesis;->(I)V +HSPLandroidx/compose/ui/text/font/FontSynthesis;->access$getAll$cp()I +HSPLandroidx/compose/ui/text/font/FontSynthesis;->box-impl(I)Landroidx/compose/ui/text/font/FontSynthesis; +HSPLandroidx/compose/ui/text/font/FontSynthesis;->constructor-impl(I)I +HSPLandroidx/compose/ui/text/font/FontSynthesis;->equals-impl0(II)Z +HSPLandroidx/compose/ui/text/font/FontSynthesis;->hashCode-impl(I)I +HSPLandroidx/compose/ui/text/font/FontSynthesis;->isStyleOn-impl$ui_text_release(I)Z +HSPLandroidx/compose/ui/text/font/FontSynthesis;->isWeightOn-impl$ui_text_release(I)Z +HSPLandroidx/compose/ui/text/font/FontSynthesis;->unbox-impl()I +Landroidx/compose/ui/text/font/FontSynthesis$Companion; +HSPLandroidx/compose/ui/text/font/FontSynthesis$Companion;->()V +HSPLandroidx/compose/ui/text/font/FontSynthesis$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/font/FontSynthesis$Companion;->getAll-GVVA2EU()I +Landroidx/compose/ui/text/font/FontSynthesis_androidKt; +HSPLandroidx/compose/ui/text/font/FontSynthesis_androidKt;->synthesizeTypeface-FxwP2eA(ILjava/lang/Object;Landroidx/compose/ui/text/font/Font;Landroidx/compose/ui/text/font/FontWeight;I)Ljava/lang/Object; +Landroidx/compose/ui/text/font/FontVariation$Setting; +Landroidx/compose/ui/text/font/FontVariation$Settings; +HSPLandroidx/compose/ui/text/font/FontVariation$Settings;->()V +HSPLandroidx/compose/ui/text/font/FontVariation$Settings;->([Landroidx/compose/ui/text/font/FontVariation$Setting;)V +HSPLandroidx/compose/ui/text/font/FontVariation$Settings;->getSettings()Ljava/util/List; +HSPLandroidx/compose/ui/text/font/FontVariation$Settings;->hashCode()I +Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/ui/text/font/FontWeight;->()V +HSPLandroidx/compose/ui/text/font/FontWeight;->(I)V +HSPLandroidx/compose/ui/text/font/FontWeight;->access$getBold$cp()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/ui/text/font/FontWeight;->access$getLight$cp()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/ui/text/font/FontWeight;->access$getMedium$cp()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/ui/text/font/FontWeight;->access$getNormal$cp()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/ui/text/font/FontWeight;->access$getW600$cp()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/ui/text/font/FontWeight;->compareTo(Landroidx/compose/ui/text/font/FontWeight;)I +HSPLandroidx/compose/ui/text/font/FontWeight;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/font/FontWeight;->getWeight()I +HSPLandroidx/compose/ui/text/font/FontWeight;->hashCode()I +Landroidx/compose/ui/text/font/FontWeight$Companion; +HSPLandroidx/compose/ui/text/font/FontWeight$Companion;->()V +HSPLandroidx/compose/ui/text/font/FontWeight$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/font/FontWeight$Companion;->getBold()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/ui/text/font/FontWeight$Companion;->getLight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/ui/text/font/FontWeight$Companion;->getMedium()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/ui/text/font/FontWeight$Companion;->getNormal()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/ui/text/font/FontWeight$Companion;->getW600()Landroidx/compose/ui/text/font/FontWeight; +Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/ui/text/font/GenericFontFamily;->()V +HSPLandroidx/compose/ui/text/font/GenericFontFamily;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroidx/compose/ui/text/font/GenericFontFamily;->getName()Ljava/lang/String; +Landroidx/compose/ui/text/font/PlatformFontFamilyTypefaceAdapter; +HSPLandroidx/compose/ui/text/font/PlatformFontFamilyTypefaceAdapter;->()V +HSPLandroidx/compose/ui/text/font/PlatformFontFamilyTypefaceAdapter;->resolve(Landroidx/compose/ui/text/font/TypefaceRequest;Landroidx/compose/ui/text/font/PlatformFontLoader;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/text/font/TypefaceResult; +Landroidx/compose/ui/text/font/PlatformFontLoader; +Landroidx/compose/ui/text/font/PlatformResolveInterceptor; +HSPLandroidx/compose/ui/text/font/PlatformResolveInterceptor;->()V +HSPLandroidx/compose/ui/text/font/PlatformResolveInterceptor;->interceptFontFamily(Landroidx/compose/ui/text/font/FontFamily;)Landroidx/compose/ui/text/font/FontFamily; +HSPLandroidx/compose/ui/text/font/PlatformResolveInterceptor;->interceptFontStyle-T2F_aPo(I)I +HSPLandroidx/compose/ui/text/font/PlatformResolveInterceptor;->interceptFontSynthesis-Mscr08Y(I)I +Landroidx/compose/ui/text/font/PlatformResolveInterceptor$Companion; +HSPLandroidx/compose/ui/text/font/PlatformResolveInterceptor$Companion;->()V +HSPLandroidx/compose/ui/text/font/PlatformResolveInterceptor$Companion;->()V +Landroidx/compose/ui/text/font/PlatformResolveInterceptor$Companion$Default$1; +HSPLandroidx/compose/ui/text/font/PlatformResolveInterceptor$Companion$Default$1;->()V +Landroidx/compose/ui/text/font/PlatformTypefaces; +Landroidx/compose/ui/text/font/PlatformTypefacesApi28; +HSPLandroidx/compose/ui/text/font/PlatformTypefacesApi28;->()V +HSPLandroidx/compose/ui/text/font/PlatformTypefacesApi28;->createAndroidTypefaceApi28-RetOiIg(Ljava/lang/String;Landroidx/compose/ui/text/font/FontWeight;I)Landroid/graphics/Typeface; +HSPLandroidx/compose/ui/text/font/PlatformTypefacesApi28;->createDefault-FO1MlWM(Landroidx/compose/ui/text/font/FontWeight;I)Landroid/graphics/Typeface; +HSPLandroidx/compose/ui/text/font/PlatformTypefacesApi28;->createNamed-RetOiIg(Landroidx/compose/ui/text/font/GenericFontFamily;Landroidx/compose/ui/text/font/FontWeight;I)Landroid/graphics/Typeface; +Landroidx/compose/ui/text/font/PlatformTypefacesKt; +HSPLandroidx/compose/ui/text/font/PlatformTypefacesKt;->PlatformTypefaces()Landroidx/compose/ui/text/font/PlatformTypefaces; +HSPLandroidx/compose/ui/text/font/PlatformTypefacesKt;->setFontVariationSettings(Landroid/graphics/Typeface;Landroidx/compose/ui/text/font/FontVariation$Settings;Landroid/content/Context;)Landroid/graphics/Typeface; +Landroidx/compose/ui/text/font/ResourceFont; +HSPLandroidx/compose/ui/text/font/ResourceFont;->()V +HSPLandroidx/compose/ui/text/font/ResourceFont;->(ILandroidx/compose/ui/text/font/FontWeight;ILandroidx/compose/ui/text/font/FontVariation$Settings;I)V +HSPLandroidx/compose/ui/text/font/ResourceFont;->(ILandroidx/compose/ui/text/font/FontWeight;ILandroidx/compose/ui/text/font/FontVariation$Settings;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/font/ResourceFont;->getLoadingStrategy-PKNRLFQ()I +HSPLandroidx/compose/ui/text/font/ResourceFont;->getResId()I +HSPLandroidx/compose/ui/text/font/ResourceFont;->getStyle-_-LCdwA()I +HSPLandroidx/compose/ui/text/font/ResourceFont;->getVariationSettings()Landroidx/compose/ui/text/font/FontVariation$Settings; +HSPLandroidx/compose/ui/text/font/ResourceFont;->getWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/ui/text/font/ResourceFont;->hashCode()I +Landroidx/compose/ui/text/font/ResourceFontHelper; +HSPLandroidx/compose/ui/text/font/ResourceFontHelper;->()V +HSPLandroidx/compose/ui/text/font/ResourceFontHelper;->()V +HSPLandroidx/compose/ui/text/font/ResourceFontHelper;->load(Landroid/content/Context;Landroidx/compose/ui/text/font/ResourceFont;)Landroid/graphics/Typeface; +Landroidx/compose/ui/text/font/SystemFontFamily; +HSPLandroidx/compose/ui/text/font/SystemFontFamily;->()V +HSPLandroidx/compose/ui/text/font/SystemFontFamily;->()V +HSPLandroidx/compose/ui/text/font/SystemFontFamily;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/text/font/TypefaceCompatApi26; +HSPLandroidx/compose/ui/text/font/TypefaceCompatApi26;->()V +HSPLandroidx/compose/ui/text/font/TypefaceCompatApi26;->()V +HSPLandroidx/compose/ui/text/font/TypefaceCompatApi26;->setFontVariationSettings(Landroid/graphics/Typeface;Landroidx/compose/ui/text/font/FontVariation$Settings;Landroid/content/Context;)Landroid/graphics/Typeface; +Landroidx/compose/ui/text/font/TypefaceRequest; +HSPLandroidx/compose/ui/text/font/TypefaceRequest;->(Landroidx/compose/ui/text/font/FontFamily;Landroidx/compose/ui/text/font/FontWeight;IILjava/lang/Object;)V +HSPLandroidx/compose/ui/text/font/TypefaceRequest;->(Landroidx/compose/ui/text/font/FontFamily;Landroidx/compose/ui/text/font/FontWeight;IILjava/lang/Object;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/font/TypefaceRequest;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/font/TypefaceRequest;->getFontFamily()Landroidx/compose/ui/text/font/FontFamily; +HSPLandroidx/compose/ui/text/font/TypefaceRequest;->getFontStyle-_-LCdwA()I +HSPLandroidx/compose/ui/text/font/TypefaceRequest;->getFontSynthesis-GVVA2EU()I +HSPLandroidx/compose/ui/text/font/TypefaceRequest;->getFontWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/ui/text/font/TypefaceRequest;->hashCode()I +Landroidx/compose/ui/text/font/TypefaceRequestCache; +HSPLandroidx/compose/ui/text/font/TypefaceRequestCache;->()V +HSPLandroidx/compose/ui/text/font/TypefaceRequestCache;->runCached(Landroidx/compose/ui/text/font/TypefaceRequest;Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/State; +Landroidx/compose/ui/text/font/TypefaceRequestCache$runCached$currentTypefaceResult$1; +HSPLandroidx/compose/ui/text/font/TypefaceRequestCache$runCached$currentTypefaceResult$1;->(Landroidx/compose/ui/text/font/TypefaceRequestCache;Landroidx/compose/ui/text/font/TypefaceRequest;)V +Landroidx/compose/ui/text/font/TypefaceResult; +Landroidx/compose/ui/text/font/TypefaceResult$Immutable; +HSPLandroidx/compose/ui/text/font/TypefaceResult$Immutable;->()V +HSPLandroidx/compose/ui/text/font/TypefaceResult$Immutable;->(Ljava/lang/Object;Z)V +HSPLandroidx/compose/ui/text/font/TypefaceResult$Immutable;->(Ljava/lang/Object;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/font/TypefaceResult$Immutable;->getCacheable()Z +HSPLandroidx/compose/ui/text/font/TypefaceResult$Immutable;->getValue()Ljava/lang/Object; +Landroidx/compose/ui/text/input/AndroidTextInputServicePlugin; +HSPLandroidx/compose/ui/text/input/AndroidTextInputServicePlugin;->()V +HSPLandroidx/compose/ui/text/input/AndroidTextInputServicePlugin;->()V +HSPLandroidx/compose/ui/text/input/AndroidTextInputServicePlugin;->createAdapter(Landroidx/compose/ui/text/input/PlatformTextInput;Landroid/view/View;)Landroidx/compose/ui/text/input/AndroidTextInputServicePlugin$Adapter; +HSPLandroidx/compose/ui/text/input/AndroidTextInputServicePlugin;->createAdapter(Landroidx/compose/ui/text/input/PlatformTextInput;Landroid/view/View;)Landroidx/compose/ui/text/input/PlatformTextInputAdapter; +Landroidx/compose/ui/text/input/AndroidTextInputServicePlugin$Adapter; +HSPLandroidx/compose/ui/text/input/AndroidTextInputServicePlugin$Adapter;->()V +HSPLandroidx/compose/ui/text/input/AndroidTextInputServicePlugin$Adapter;->(Landroidx/compose/ui/text/input/TextInputService;Landroidx/compose/ui/text/input/TextInputServiceAndroid;)V +HSPLandroidx/compose/ui/text/input/AndroidTextInputServicePlugin$Adapter;->createInputConnection(Landroid/view/inputmethod/EditorInfo;)Landroid/view/inputmethod/InputConnection; +HSPLandroidx/compose/ui/text/input/AndroidTextInputServicePlugin$Adapter;->getService()Landroidx/compose/ui/text/input/TextInputService; +Landroidx/compose/ui/text/input/CommitTextCommand; +HSPLandroidx/compose/ui/text/input/CommitTextCommand;->()V +HSPLandroidx/compose/ui/text/input/CommitTextCommand;->(Landroidx/compose/ui/text/AnnotatedString;I)V +HSPLandroidx/compose/ui/text/input/CommitTextCommand;->applyTo(Landroidx/compose/ui/text/input/EditingBuffer;)V +HSPLandroidx/compose/ui/text/input/CommitTextCommand;->getText()Ljava/lang/String; +Landroidx/compose/ui/text/input/DeleteAllCommand; +HSPLandroidx/compose/ui/text/input/DeleteAllCommand;->()V +HSPLandroidx/compose/ui/text/input/DeleteAllCommand;->()V +HSPLandroidx/compose/ui/text/input/DeleteAllCommand;->applyTo(Landroidx/compose/ui/text/input/EditingBuffer;)V +Landroidx/compose/ui/text/input/EditCommand; +Landroidx/compose/ui/text/input/EditProcessor; +HSPLandroidx/compose/ui/text/input/EditProcessor;->()V +HSPLandroidx/compose/ui/text/input/EditProcessor;->()V +HSPLandroidx/compose/ui/text/input/EditProcessor;->apply(Ljava/util/List;)Landroidx/compose/ui/text/input/TextFieldValue; +HSPLandroidx/compose/ui/text/input/EditProcessor;->reset(Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/TextInputSession;)V +HSPLandroidx/compose/ui/text/input/EditProcessor;->toTextFieldValue()Landroidx/compose/ui/text/input/TextFieldValue; +Landroidx/compose/ui/text/input/EditingBuffer; +HSPLandroidx/compose/ui/text/input/EditingBuffer;->()V +HSPLandroidx/compose/ui/text/input/EditingBuffer;->(Landroidx/compose/ui/text/AnnotatedString;J)V +HSPLandroidx/compose/ui/text/input/EditingBuffer;->(Landroidx/compose/ui/text/AnnotatedString;JLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/input/EditingBuffer;->commitComposition$ui_text_release()V +HSPLandroidx/compose/ui/text/input/EditingBuffer;->getComposition-MzsxiRA$ui_text_release()Landroidx/compose/ui/text/TextRange; +HSPLandroidx/compose/ui/text/input/EditingBuffer;->getCursor$ui_text_release()I +HSPLandroidx/compose/ui/text/input/EditingBuffer;->getLength$ui_text_release()I +HSPLandroidx/compose/ui/text/input/EditingBuffer;->getSelection-d9O1mEE$ui_text_release()J +HSPLandroidx/compose/ui/text/input/EditingBuffer;->getSelectionEnd$ui_text_release()I +HSPLandroidx/compose/ui/text/input/EditingBuffer;->getSelectionStart$ui_text_release()I +HSPLandroidx/compose/ui/text/input/EditingBuffer;->hasComposition$ui_text_release()Z +HSPLandroidx/compose/ui/text/input/EditingBuffer;->replace$ui_text_release(IILjava/lang/String;)V +HSPLandroidx/compose/ui/text/input/EditingBuffer;->setCursor$ui_text_release(I)V +HSPLandroidx/compose/ui/text/input/EditingBuffer;->setSelection$ui_text_release(II)V +HSPLandroidx/compose/ui/text/input/EditingBuffer;->setSelectionEnd(I)V +HSPLandroidx/compose/ui/text/input/EditingBuffer;->setSelectionStart(I)V +HSPLandroidx/compose/ui/text/input/EditingBuffer;->toAnnotatedString$ui_text_release()Landroidx/compose/ui/text/AnnotatedString; +HSPLandroidx/compose/ui/text/input/EditingBuffer;->toString()Ljava/lang/String; +Landroidx/compose/ui/text/input/EditingBuffer$Companion; +HSPLandroidx/compose/ui/text/input/EditingBuffer$Companion;->()V +HSPLandroidx/compose/ui/text/input/EditingBuffer$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/text/input/GapBuffer; +HSPLandroidx/compose/ui/text/input/GapBuffer;->([CII)V +HSPLandroidx/compose/ui/text/input/GapBuffer;->append(Ljava/lang/StringBuilder;)V +HSPLandroidx/compose/ui/text/input/GapBuffer;->delete(II)V +HSPLandroidx/compose/ui/text/input/GapBuffer;->gapLength()I +HSPLandroidx/compose/ui/text/input/GapBuffer;->length()I +HSPLandroidx/compose/ui/text/input/GapBuffer;->makeSureAvailableSpace(I)V +HSPLandroidx/compose/ui/text/input/GapBuffer;->replace(IILjava/lang/String;)V +Landroidx/compose/ui/text/input/GapBufferKt; +HSPLandroidx/compose/ui/text/input/GapBufferKt;->access$toCharArray(Ljava/lang/String;[CI)V +HSPLandroidx/compose/ui/text/input/GapBufferKt;->toCharArray(Ljava/lang/String;[CI)V +Landroidx/compose/ui/text/input/GapBuffer_jvmKt; +HSPLandroidx/compose/ui/text/input/GapBuffer_jvmKt;->toCharArray(Ljava/lang/String;[CIII)V +Landroidx/compose/ui/text/input/ImeAction; +HSPLandroidx/compose/ui/text/input/ImeAction;->()V +HSPLandroidx/compose/ui/text/input/ImeAction;->(I)V +HSPLandroidx/compose/ui/text/input/ImeAction;->access$getDefault$cp()I +HSPLandroidx/compose/ui/text/input/ImeAction;->access$getDone$cp()I +HSPLandroidx/compose/ui/text/input/ImeAction;->access$getGo$cp()I +HSPLandroidx/compose/ui/text/input/ImeAction;->access$getNone$cp()I +HSPLandroidx/compose/ui/text/input/ImeAction;->box-impl(I)Landroidx/compose/ui/text/input/ImeAction; +HSPLandroidx/compose/ui/text/input/ImeAction;->constructor-impl(I)I +HSPLandroidx/compose/ui/text/input/ImeAction;->equals-impl0(II)Z +Landroidx/compose/ui/text/input/ImeAction$Companion; +HSPLandroidx/compose/ui/text/input/ImeAction$Companion;->()V +HSPLandroidx/compose/ui/text/input/ImeAction$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/input/ImeAction$Companion;->getDefault-eUduSuo()I +HSPLandroidx/compose/ui/text/input/ImeAction$Companion;->getDone-eUduSuo()I +HSPLandroidx/compose/ui/text/input/ImeAction$Companion;->getGo-eUduSuo()I +HSPLandroidx/compose/ui/text/input/ImeAction$Companion;->getNone-eUduSuo()I +Landroidx/compose/ui/text/input/ImeOptions; +HSPLandroidx/compose/ui/text/input/ImeOptions;->()V +HSPLandroidx/compose/ui/text/input/ImeOptions;->(ZIZII)V +HSPLandroidx/compose/ui/text/input/ImeOptions;->(ZIZIIILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/input/ImeOptions;->(ZIZIILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/input/ImeOptions;->access$getDefault$cp()Landroidx/compose/ui/text/input/ImeOptions; +HSPLandroidx/compose/ui/text/input/ImeOptions;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/input/ImeOptions;->getAutoCorrect()Z +HSPLandroidx/compose/ui/text/input/ImeOptions;->getCapitalization-IUNYP9k()I +HSPLandroidx/compose/ui/text/input/ImeOptions;->getImeAction-eUduSuo()I +HSPLandroidx/compose/ui/text/input/ImeOptions;->getKeyboardType-PjHm6EE()I +HSPLandroidx/compose/ui/text/input/ImeOptions;->getSingleLine()Z +Landroidx/compose/ui/text/input/ImeOptions$Companion; +HSPLandroidx/compose/ui/text/input/ImeOptions$Companion;->()V +HSPLandroidx/compose/ui/text/input/ImeOptions$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/input/ImeOptions$Companion;->getDefault()Landroidx/compose/ui/text/input/ImeOptions; +Landroidx/compose/ui/text/input/InputEventCallback2; +Landroidx/compose/ui/text/input/InputMethodManager; +Landroidx/compose/ui/text/input/InputMethodManagerImpl; +HSPLandroidx/compose/ui/text/input/InputMethodManagerImpl;->(Landroid/view/View;)V +HSPLandroidx/compose/ui/text/input/InputMethodManagerImpl;->access$getView$p(Landroidx/compose/ui/text/input/InputMethodManagerImpl;)Landroid/view/View; +HSPLandroidx/compose/ui/text/input/InputMethodManagerImpl;->getImm()Landroid/view/inputmethod/InputMethodManager; +HSPLandroidx/compose/ui/text/input/InputMethodManagerImpl;->hideSoftInput()V +HSPLandroidx/compose/ui/text/input/InputMethodManagerImpl;->restartInput()V +HSPLandroidx/compose/ui/text/input/InputMethodManagerImpl;->showSoftInput()V +HSPLandroidx/compose/ui/text/input/InputMethodManagerImpl;->updateSelection(IIII)V +Landroidx/compose/ui/text/input/InputMethodManagerImpl$imm$2; +HSPLandroidx/compose/ui/text/input/InputMethodManagerImpl$imm$2;->(Landroidx/compose/ui/text/input/InputMethodManagerImpl;)V +HSPLandroidx/compose/ui/text/input/InputMethodManagerImpl$imm$2;->invoke()Landroid/view/inputmethod/InputMethodManager; +HSPLandroidx/compose/ui/text/input/InputMethodManagerImpl$imm$2;->invoke()Ljava/lang/Object; +Landroidx/compose/ui/text/input/KeyboardCapitalization; +HSPLandroidx/compose/ui/text/input/KeyboardCapitalization;->()V +HSPLandroidx/compose/ui/text/input/KeyboardCapitalization;->access$getCharacters$cp()I +HSPLandroidx/compose/ui/text/input/KeyboardCapitalization;->access$getNone$cp()I +HSPLandroidx/compose/ui/text/input/KeyboardCapitalization;->access$getSentences$cp()I +HSPLandroidx/compose/ui/text/input/KeyboardCapitalization;->access$getWords$cp()I +HSPLandroidx/compose/ui/text/input/KeyboardCapitalization;->constructor-impl(I)I +HSPLandroidx/compose/ui/text/input/KeyboardCapitalization;->equals-impl0(II)Z +Landroidx/compose/ui/text/input/KeyboardCapitalization$Companion; +HSPLandroidx/compose/ui/text/input/KeyboardCapitalization$Companion;->()V +HSPLandroidx/compose/ui/text/input/KeyboardCapitalization$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/input/KeyboardCapitalization$Companion;->getCharacters-IUNYP9k()I +HSPLandroidx/compose/ui/text/input/KeyboardCapitalization$Companion;->getNone-IUNYP9k()I +HSPLandroidx/compose/ui/text/input/KeyboardCapitalization$Companion;->getSentences-IUNYP9k()I +HSPLandroidx/compose/ui/text/input/KeyboardCapitalization$Companion;->getWords-IUNYP9k()I +Landroidx/compose/ui/text/input/KeyboardType; +HSPLandroidx/compose/ui/text/input/KeyboardType;->()V +HSPLandroidx/compose/ui/text/input/KeyboardType;->access$getAscii$cp()I +HSPLandroidx/compose/ui/text/input/KeyboardType;->access$getEmail$cp()I +HSPLandroidx/compose/ui/text/input/KeyboardType;->access$getNumber$cp()I +HSPLandroidx/compose/ui/text/input/KeyboardType;->access$getPassword$cp()I +HSPLandroidx/compose/ui/text/input/KeyboardType;->access$getPhone$cp()I +HSPLandroidx/compose/ui/text/input/KeyboardType;->access$getText$cp()I +HSPLandroidx/compose/ui/text/input/KeyboardType;->access$getUri$cp()I +HSPLandroidx/compose/ui/text/input/KeyboardType;->constructor-impl(I)I +HSPLandroidx/compose/ui/text/input/KeyboardType;->equals-impl0(II)Z +Landroidx/compose/ui/text/input/KeyboardType$Companion; +HSPLandroidx/compose/ui/text/input/KeyboardType$Companion;->()V +HSPLandroidx/compose/ui/text/input/KeyboardType$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/input/KeyboardType$Companion;->getAscii-PjHm6EE()I +HSPLandroidx/compose/ui/text/input/KeyboardType$Companion;->getEmail-PjHm6EE()I +HSPLandroidx/compose/ui/text/input/KeyboardType$Companion;->getNumber-PjHm6EE()I +HSPLandroidx/compose/ui/text/input/KeyboardType$Companion;->getPassword-PjHm6EE()I +HSPLandroidx/compose/ui/text/input/KeyboardType$Companion;->getPhone-PjHm6EE()I +HSPLandroidx/compose/ui/text/input/KeyboardType$Companion;->getText-PjHm6EE()I +HSPLandroidx/compose/ui/text/input/KeyboardType$Companion;->getUri-PjHm6EE()I +Landroidx/compose/ui/text/input/OffsetMapping; +HSPLandroidx/compose/ui/text/input/OffsetMapping;->()V +Landroidx/compose/ui/text/input/OffsetMapping$Companion; +HSPLandroidx/compose/ui/text/input/OffsetMapping$Companion;->()V +HSPLandroidx/compose/ui/text/input/OffsetMapping$Companion;->()V +HSPLandroidx/compose/ui/text/input/OffsetMapping$Companion;->getIdentity()Landroidx/compose/ui/text/input/OffsetMapping; +Landroidx/compose/ui/text/input/OffsetMapping$Companion$Identity$1; +HSPLandroidx/compose/ui/text/input/OffsetMapping$Companion$Identity$1;->()V +HSPLandroidx/compose/ui/text/input/OffsetMapping$Companion$Identity$1;->originalToTransformed(I)I +Landroidx/compose/ui/text/input/PartialGapBuffer; +HSPLandroidx/compose/ui/text/input/PartialGapBuffer;->()V +HSPLandroidx/compose/ui/text/input/PartialGapBuffer;->(Ljava/lang/String;)V +HSPLandroidx/compose/ui/text/input/PartialGapBuffer;->getLength()I +HSPLandroidx/compose/ui/text/input/PartialGapBuffer;->replace(IILjava/lang/String;)V +HSPLandroidx/compose/ui/text/input/PartialGapBuffer;->toString()Ljava/lang/String; +Landroidx/compose/ui/text/input/PartialGapBuffer$Companion; +HSPLandroidx/compose/ui/text/input/PartialGapBuffer$Companion;->()V +HSPLandroidx/compose/ui/text/input/PartialGapBuffer$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/text/input/PasswordVisualTransformation; +HSPLandroidx/compose/ui/text/input/PasswordVisualTransformation;->()V +HSPLandroidx/compose/ui/text/input/PasswordVisualTransformation;->(C)V +HSPLandroidx/compose/ui/text/input/PasswordVisualTransformation;->(CILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/input/PasswordVisualTransformation;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/input/PasswordVisualTransformation;->filter(Landroidx/compose/ui/text/AnnotatedString;)Landroidx/compose/ui/text/input/TransformedText; +Landroidx/compose/ui/text/input/PlatformTextInput; +Landroidx/compose/ui/text/input/PlatformTextInputAdapter; +Landroidx/compose/ui/text/input/PlatformTextInputPlugin; +Landroidx/compose/ui/text/input/PlatformTextInputPluginRegistry; +Landroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl; +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl;->()V +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl;->(Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl;->access$getFocusedPlugin$p(Landroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl;)Landroidx/compose/ui/text/input/PlatformTextInputPlugin; +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl;->access$setFocusedPlugin$p(Landroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl;Landroidx/compose/ui/text/input/PlatformTextInputPlugin;)V +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl;->getFocusedAdapter()Landroidx/compose/ui/text/input/PlatformTextInputAdapter; +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl;->getOrCreateAdapter(Landroidx/compose/ui/text/input/PlatformTextInputPlugin;)Landroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterHandle; +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl;->instantiateAdapter(Landroidx/compose/ui/text/input/PlatformTextInputPlugin;)Landroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterWithRefCount; +Landroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterHandle; +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterHandle;->()V +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterHandle;->(Landroidx/compose/ui/text/input/PlatformTextInputAdapter;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterHandle;->getAdapter()Landroidx/compose/ui/text/input/PlatformTextInputAdapter; +Landroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterInput; +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterInput;->(Landroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl;Landroidx/compose/ui/text/input/PlatformTextInputPlugin;)V +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterInput;->releaseInputFocus()V +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterInput;->requestInputFocus()V +Landroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterWithRefCount; +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterWithRefCount;->(Landroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl;Landroidx/compose/ui/text/input/PlatformTextInputAdapter;)V +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterWithRefCount;->getAdapter()Landroidx/compose/ui/text/input/PlatformTextInputAdapter; +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterWithRefCount;->getRefCount()I +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterWithRefCount;->incrementRefCount()V +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterWithRefCount;->setRefCount(I)V +Landroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$getOrCreateAdapter$1; +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$getOrCreateAdapter$1;->(Landroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterWithRefCount;)V +Landroidx/compose/ui/text/input/PlatformTextInputService; +Landroidx/compose/ui/text/input/RecordingInputConnection; +HSPLandroidx/compose/ui/text/input/RecordingInputConnection;->(Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/InputEventCallback2;Z)V +HSPLandroidx/compose/ui/text/input/RecordingInputConnection;->closeConnection()V +HSPLandroidx/compose/ui/text/input/RecordingInputConnection;->getHandler()Landroid/os/Handler; +HSPLandroidx/compose/ui/text/input/RecordingInputConnection;->getSelectedText(I)Ljava/lang/CharSequence; +HSPLandroidx/compose/ui/text/input/RecordingInputConnection;->getTextAfterCursor(II)Ljava/lang/CharSequence; +HSPLandroidx/compose/ui/text/input/RecordingInputConnection;->getTextBeforeCursor(II)Ljava/lang/CharSequence; +HSPLandroidx/compose/ui/text/input/RecordingInputConnection;->setMTextFieldValue$ui_release(Landroidx/compose/ui/text/input/TextFieldValue;)V +HSPLandroidx/compose/ui/text/input/RecordingInputConnection;->updateInputState(Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/InputMethodManager;)V +Landroidx/compose/ui/text/input/TextFieldValue; +HSPLandroidx/compose/ui/text/input/TextFieldValue;->()V +HSPLandroidx/compose/ui/text/input/TextFieldValue;->(Landroidx/compose/ui/text/AnnotatedString;JLandroidx/compose/ui/text/TextRange;)V +HSPLandroidx/compose/ui/text/input/TextFieldValue;->(Landroidx/compose/ui/text/AnnotatedString;JLandroidx/compose/ui/text/TextRange;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/input/TextFieldValue;->(Ljava/lang/String;JLandroidx/compose/ui/text/TextRange;)V +HSPLandroidx/compose/ui/text/input/TextFieldValue;->(Ljava/lang/String;JLandroidx/compose/ui/text/TextRange;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/input/TextFieldValue;->(Ljava/lang/String;JLandroidx/compose/ui/text/TextRange;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/input/TextFieldValue;->copy-3r_uNRQ$default(Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/AnnotatedString;JLandroidx/compose/ui/text/TextRange;ILjava/lang/Object;)Landroidx/compose/ui/text/input/TextFieldValue; +HSPLandroidx/compose/ui/text/input/TextFieldValue;->copy-3r_uNRQ$default(Landroidx/compose/ui/text/input/TextFieldValue;Ljava/lang/String;JLandroidx/compose/ui/text/TextRange;ILjava/lang/Object;)Landroidx/compose/ui/text/input/TextFieldValue; +HSPLandroidx/compose/ui/text/input/TextFieldValue;->copy-3r_uNRQ(Landroidx/compose/ui/text/AnnotatedString;JLandroidx/compose/ui/text/TextRange;)Landroidx/compose/ui/text/input/TextFieldValue; +HSPLandroidx/compose/ui/text/input/TextFieldValue;->copy-3r_uNRQ(Ljava/lang/String;JLandroidx/compose/ui/text/TextRange;)Landroidx/compose/ui/text/input/TextFieldValue; +HSPLandroidx/compose/ui/text/input/TextFieldValue;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/input/TextFieldValue;->getAnnotatedString()Landroidx/compose/ui/text/AnnotatedString; +HSPLandroidx/compose/ui/text/input/TextFieldValue;->getComposition-MzsxiRA()Landroidx/compose/ui/text/TextRange; +HSPLandroidx/compose/ui/text/input/TextFieldValue;->getSelection-d9O1mEE()J +HSPLandroidx/compose/ui/text/input/TextFieldValue;->getText()Ljava/lang/String; +Landroidx/compose/ui/text/input/TextFieldValue$Companion; +HSPLandroidx/compose/ui/text/input/TextFieldValue$Companion;->()V +HSPLandroidx/compose/ui/text/input/TextFieldValue$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/text/input/TextFieldValue$Companion$Saver$1; +HSPLandroidx/compose/ui/text/input/TextFieldValue$Companion$Saver$1;->()V +HSPLandroidx/compose/ui/text/input/TextFieldValue$Companion$Saver$1;->()V +Landroidx/compose/ui/text/input/TextFieldValue$Companion$Saver$2; +HSPLandroidx/compose/ui/text/input/TextFieldValue$Companion$Saver$2;->()V +HSPLandroidx/compose/ui/text/input/TextFieldValue$Companion$Saver$2;->()V +Landroidx/compose/ui/text/input/TextFieldValueKt; +HSPLandroidx/compose/ui/text/input/TextFieldValueKt;->getTextAfterSelection(Landroidx/compose/ui/text/input/TextFieldValue;I)Landroidx/compose/ui/text/AnnotatedString; +HSPLandroidx/compose/ui/text/input/TextFieldValueKt;->getTextBeforeSelection(Landroidx/compose/ui/text/input/TextFieldValue;I)Landroidx/compose/ui/text/AnnotatedString; +Landroidx/compose/ui/text/input/TextInputService; +HSPLandroidx/compose/ui/text/input/TextInputService;->()V +HSPLandroidx/compose/ui/text/input/TextInputService;->(Landroidx/compose/ui/text/input/PlatformTextInputService;)V +HSPLandroidx/compose/ui/text/input/TextInputService;->getCurrentInputSession$ui_text_release()Landroidx/compose/ui/text/input/TextInputSession; +HSPLandroidx/compose/ui/text/input/TextInputService;->startInput(Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/ImeOptions;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/text/input/TextInputSession; +HSPLandroidx/compose/ui/text/input/TextInputService;->stopInput(Landroidx/compose/ui/text/input/TextInputSession;)V +Landroidx/compose/ui/text/input/TextInputServiceAndroid; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->$r8$lambda$tFIm8sXGny3G873nGUe23EJe7OY(Landroidx/compose/ui/text/input/TextInputServiceAndroid;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->(Landroid/view/View;Landroidx/compose/ui/text/input/InputMethodManager;Landroidx/compose/ui/text/input/PlatformTextInput;Ljava/util/concurrent/Executor;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->(Landroid/view/View;Landroidx/compose/ui/text/input/InputMethodManager;Landroidx/compose/ui/text/input/PlatformTextInput;Ljava/util/concurrent/Executor;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->(Landroid/view/View;Landroidx/compose/ui/text/input/PlatformTextInput;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->access$getIcs$p(Landroidx/compose/ui/text/input/TextInputServiceAndroid;)Ljava/util/List; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->createInputConnection(Landroid/view/inputmethod/EditorInfo;)Landroid/view/inputmethod/InputConnection; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->notifyFocusedRect(Landroidx/compose/ui/geometry/Rect;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->processInputCommands$applyToState(Landroidx/compose/ui/text/input/TextInputServiceAndroid$TextInputCommand;Lkotlin/jvm/internal/Ref$ObjectRef;Lkotlin/jvm/internal/Ref$ObjectRef;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->processInputCommands()V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->restartInputImmediately()V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->sendInputCommand$lambda$1(Landroidx/compose/ui/text/input/TextInputServiceAndroid;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->sendInputCommand(Landroidx/compose/ui/text/input/TextInputServiceAndroid$TextInputCommand;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->setKeyboardVisibleImmediately(Z)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->startInput(Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/ImeOptions;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->stopInput()V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->updateState(Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/TextFieldValue;)V +Landroidx/compose/ui/text/input/TextInputServiceAndroid$$ExternalSyntheticLambda0; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$$ExternalSyntheticLambda0;->(Landroidx/compose/ui/text/input/TextInputServiceAndroid;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$$ExternalSyntheticLambda0;->run()V +Landroidx/compose/ui/text/input/TextInputServiceAndroid$TextInputCommand; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$TextInputCommand;->$values()[Landroidx/compose/ui/text/input/TextInputServiceAndroid$TextInputCommand; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$TextInputCommand;->()V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$TextInputCommand;->(Ljava/lang/String;I)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$TextInputCommand;->values()[Landroidx/compose/ui/text/input/TextInputServiceAndroid$TextInputCommand; +Landroidx/compose/ui/text/input/TextInputServiceAndroid$WhenMappings; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$WhenMappings;->()V +Landroidx/compose/ui/text/input/TextInputServiceAndroid$baseInputConnection$2; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$baseInputConnection$2;->(Landroidx/compose/ui/text/input/TextInputServiceAndroid;)V +Landroidx/compose/ui/text/input/TextInputServiceAndroid$createInputConnection$1; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$createInputConnection$1;->(Landroidx/compose/ui/text/input/TextInputServiceAndroid;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$createInputConnection$1;->onConnectionClosed(Landroidx/compose/ui/text/input/RecordingInputConnection;)V +Landroidx/compose/ui/text/input/TextInputServiceAndroid$onEditCommand$1; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$onEditCommand$1;->()V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$onEditCommand$1;->()V +Landroidx/compose/ui/text/input/TextInputServiceAndroid$onImeActionPerformed$1; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$onImeActionPerformed$1;->()V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$onImeActionPerformed$1;->()V +Landroidx/compose/ui/text/input/TextInputServiceAndroid$stopInput$1; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$stopInput$1;->()V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$stopInput$1;->()V +Landroidx/compose/ui/text/input/TextInputServiceAndroid$stopInput$2; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$stopInput$2;->()V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$stopInput$2;->()V +Landroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt;->$r8$lambda$RYljF3nl5HRu6JKEM8xFRHwbGFg(Ljava/lang/Runnable;J)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt;->$r8$lambda$zzP0QYZAK9fPNHI8CrYdtRFmmqA(Landroid/view/Choreographer;Ljava/lang/Runnable;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt;->access$updateWithEmojiCompat(Landroid/view/inputmethod/EditorInfo;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt;->asExecutor$lambda$1$lambda$0(Ljava/lang/Runnable;J)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt;->asExecutor$lambda$1(Landroid/view/Choreographer;Ljava/lang/Runnable;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt;->asExecutor(Landroid/view/Choreographer;)Ljava/util/concurrent/Executor; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt;->hasFlag(II)Z +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt;->update(Landroid/view/inputmethod/EditorInfo;Landroidx/compose/ui/text/input/ImeOptions;Landroidx/compose/ui/text/input/TextFieldValue;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt;->updateWithEmojiCompat(Landroid/view/inputmethod/EditorInfo;)V +Landroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt$$ExternalSyntheticLambda0; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt$$ExternalSyntheticLambda0;->(Ljava/lang/Runnable;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt$$ExternalSyntheticLambda0;->doFrame(J)V +Landroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt$$ExternalSyntheticLambda1; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt$$ExternalSyntheticLambda1;->(Landroid/view/Choreographer;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt$$ExternalSyntheticLambda1;->execute(Ljava/lang/Runnable;)V +Landroidx/compose/ui/text/input/TextInputSession; +HSPLandroidx/compose/ui/text/input/TextInputSession;->()V +HSPLandroidx/compose/ui/text/input/TextInputSession;->(Landroidx/compose/ui/text/input/TextInputService;Landroidx/compose/ui/text/input/PlatformTextInputService;)V +HSPLandroidx/compose/ui/text/input/TextInputSession;->dispose()V +HSPLandroidx/compose/ui/text/input/TextInputSession;->isOpen()Z +HSPLandroidx/compose/ui/text/input/TextInputSession;->notifyFocusedRect(Landroidx/compose/ui/geometry/Rect;)Z +HSPLandroidx/compose/ui/text/input/TextInputSession;->updateState(Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/TextFieldValue;)Z +Landroidx/compose/ui/text/input/TransformedText; +HSPLandroidx/compose/ui/text/input/TransformedText;->()V +HSPLandroidx/compose/ui/text/input/TransformedText;->(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/input/OffsetMapping;)V +HSPLandroidx/compose/ui/text/input/TransformedText;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/input/TransformedText;->getOffsetMapping()Landroidx/compose/ui/text/input/OffsetMapping; +HSPLandroidx/compose/ui/text/input/TransformedText;->getText()Landroidx/compose/ui/text/AnnotatedString; +Landroidx/compose/ui/text/input/VisualTransformation; +HSPLandroidx/compose/ui/text/input/VisualTransformation;->()V +Landroidx/compose/ui/text/input/VisualTransformation$Companion; +HSPLandroidx/compose/ui/text/input/VisualTransformation$Companion;->()V +HSPLandroidx/compose/ui/text/input/VisualTransformation$Companion;->()V +HSPLandroidx/compose/ui/text/input/VisualTransformation$Companion;->getNone()Landroidx/compose/ui/text/input/VisualTransformation; +Landroidx/compose/ui/text/input/VisualTransformation$Companion$None$1; +HSPLandroidx/compose/ui/text/input/VisualTransformation$Companion$None$1;->()V +HSPLandroidx/compose/ui/text/input/VisualTransformation$Companion$None$1;->()V +HSPLandroidx/compose/ui/text/input/VisualTransformation$Companion$None$1;->filter(Landroidx/compose/ui/text/AnnotatedString;)Landroidx/compose/ui/text/input/TransformedText; +Landroidx/compose/ui/text/intl/AndroidLocale; +HSPLandroidx/compose/ui/text/intl/AndroidLocale;->(Ljava/util/Locale;)V +Landroidx/compose/ui/text/intl/AndroidLocaleDelegateAPI24; +HSPLandroidx/compose/ui/text/intl/AndroidLocaleDelegateAPI24;->()V +HSPLandroidx/compose/ui/text/intl/AndroidLocaleDelegateAPI24;->getCurrent()Landroidx/compose/ui/text/intl/LocaleList; +Landroidx/compose/ui/text/intl/AndroidPlatformLocale_androidKt; +HSPLandroidx/compose/ui/text/intl/AndroidPlatformLocale_androidKt;->createPlatformLocaleDelegate()Landroidx/compose/ui/text/intl/PlatformLocaleDelegate; +Landroidx/compose/ui/text/intl/Locale; +HSPLandroidx/compose/ui/text/intl/Locale;->()V +HSPLandroidx/compose/ui/text/intl/Locale;->(Landroidx/compose/ui/text/intl/PlatformLocale;)V +Landroidx/compose/ui/text/intl/Locale$Companion; +HSPLandroidx/compose/ui/text/intl/Locale$Companion;->()V +HSPLandroidx/compose/ui/text/intl/Locale$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/text/intl/LocaleList; +HSPLandroidx/compose/ui/text/intl/LocaleList;->()V +HSPLandroidx/compose/ui/text/intl/LocaleList;->(Ljava/util/List;)V +HSPLandroidx/compose/ui/text/intl/LocaleList;->equals(Ljava/lang/Object;)Z +Landroidx/compose/ui/text/intl/LocaleList$Companion; +HSPLandroidx/compose/ui/text/intl/LocaleList$Companion;->()V +HSPLandroidx/compose/ui/text/intl/LocaleList$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/intl/LocaleList$Companion;->getCurrent()Landroidx/compose/ui/text/intl/LocaleList; +Landroidx/compose/ui/text/intl/PlatformLocale; +Landroidx/compose/ui/text/intl/PlatformLocaleDelegate; +Landroidx/compose/ui/text/intl/PlatformLocaleKt; +HSPLandroidx/compose/ui/text/intl/PlatformLocaleKt;->()V +HSPLandroidx/compose/ui/text/intl/PlatformLocaleKt;->getPlatformLocaleDelegate()Landroidx/compose/ui/text/intl/PlatformLocaleDelegate; +Landroidx/compose/ui/text/platform/AndroidAccessibilitySpannableString_androidKt; +HSPLandroidx/compose/ui/text/platform/AndroidAccessibilitySpannableString_androidKt;->setSpanStyle(Landroid/text/SpannableString;Landroidx/compose/ui/text/SpanStyle;IILandroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;)V +HSPLandroidx/compose/ui/text/platform/AndroidAccessibilitySpannableString_androidKt;->toAccessibilitySpannableString(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;Landroidx/compose/ui/text/platform/URLSpanCache;)Landroid/text/SpannableString; +Landroidx/compose/ui/text/platform/AndroidParagraphHelper_androidKt; +HSPLandroidx/compose/ui/text/platform/AndroidParagraphHelper_androidKt;->()V +HSPLandroidx/compose/ui/text/platform/AndroidParagraphHelper_androidKt;->createCharSequence(Ljava/lang/String;FLandroidx/compose/ui/text/TextStyle;Ljava/util/List;Ljava/util/List;Landroidx/compose/ui/unit/Density;Lkotlin/jvm/functions/Function4;Z)Ljava/lang/CharSequence; +HSPLandroidx/compose/ui/text/platform/AndroidParagraphHelper_androidKt;->isIncludeFontPaddingEnabled(Landroidx/compose/ui/text/TextStyle;)Z +Landroidx/compose/ui/text/platform/AndroidParagraphHelper_androidKt$NoopSpan$1; +HSPLandroidx/compose/ui/text/platform/AndroidParagraphHelper_androidKt$NoopSpan$1;->()V +Landroidx/compose/ui/text/platform/AndroidParagraphIntrinsics; +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;->(Ljava/lang/String;Landroidx/compose/ui/text/TextStyle;Ljava/util/List;Ljava/util/List;Landroidx/compose/ui/text/font/FontFamily$Resolver;Landroidx/compose/ui/unit/Density;)V +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;->getCharSequence$ui_text_release()Ljava/lang/CharSequence; +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;->getFontFamilyResolver()Landroidx/compose/ui/text/font/FontFamily$Resolver; +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;->getHasStaleResolvedFonts()Z +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;->getLayoutIntrinsics$ui_text_release()Landroidx/compose/ui/text/android/LayoutIntrinsics; +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;->getMaxIntrinsicWidth()F +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;->getMinIntrinsicWidth()F +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;->getStyle()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;->getTextDirectionHeuristic$ui_text_release()I +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;->getTextPaint$ui_text_release()Landroidx/compose/ui/text/platform/AndroidTextPaint; +Landroidx/compose/ui/text/platform/AndroidParagraphIntrinsics$resolveTypeface$1; +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics$resolveTypeface$1;->(Landroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;)V +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics$resolveTypeface$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics$resolveTypeface$1;->invoke-DPcqOEQ(Landroidx/compose/ui/text/font/FontFamily;Landroidx/compose/ui/text/font/FontWeight;II)Landroid/graphics/Typeface; +Landroidx/compose/ui/text/platform/AndroidParagraphIntrinsics_androidKt; +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics_androidKt;->ActualParagraphIntrinsics(Ljava/lang/String;Landroidx/compose/ui/text/TextStyle;Ljava/util/List;Ljava/util/List;Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;)Landroidx/compose/ui/text/ParagraphIntrinsics; +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics_androidKt;->access$getHasEmojiCompat(Landroidx/compose/ui/text/TextStyle;)Z +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics_androidKt;->getHasEmojiCompat(Landroidx/compose/ui/text/TextStyle;)Z +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics_androidKt;->resolveTextDirectionHeuristics-9GRLPo0(Landroidx/compose/ui/text/style/TextDirection;Landroidx/compose/ui/text/intl/LocaleList;)I +Landroidx/compose/ui/text/platform/AndroidParagraph_androidKt; +HSPLandroidx/compose/ui/text/platform/AndroidParagraph_androidKt;->ActualParagraph--hBUhpc(Landroidx/compose/ui/text/ParagraphIntrinsics;IZJ)Landroidx/compose/ui/text/Paragraph; +HSPLandroidx/compose/ui/text/platform/AndroidParagraph_androidKt;->ActualParagraph-O3s9Psw(Ljava/lang/String;Landroidx/compose/ui/text/TextStyle;Ljava/util/List;Ljava/util/List;IZJLandroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;)Landroidx/compose/ui/text/Paragraph; +Landroidx/compose/ui/text/platform/AndroidTextPaint; +HSPLandroidx/compose/ui/text/platform/AndroidTextPaint;->(IF)V +HSPLandroidx/compose/ui/text/platform/AndroidTextPaint;->getBlendMode-0nO6VwU()I +HSPLandroidx/compose/ui/text/platform/AndroidTextPaint;->setBlendMode-s9anfk8(I)V +HSPLandroidx/compose/ui/text/platform/AndroidTextPaint;->setBrush-12SF9DM(Landroidx/compose/ui/graphics/Brush;JF)V +HSPLandroidx/compose/ui/text/platform/AndroidTextPaint;->setColor-8_81llA(J)V +HSPLandroidx/compose/ui/text/platform/AndroidTextPaint;->setDrawStyle(Landroidx/compose/ui/graphics/drawscope/DrawStyle;)V +HSPLandroidx/compose/ui/text/platform/AndroidTextPaint;->setShadow(Landroidx/compose/ui/graphics/Shadow;)V +HSPLandroidx/compose/ui/text/platform/AndroidTextPaint;->setTextDecoration(Landroidx/compose/ui/text/style/TextDecoration;)V +Landroidx/compose/ui/text/platform/DefaultImpl; +HSPLandroidx/compose/ui/text/platform/DefaultImpl;->()V +HSPLandroidx/compose/ui/text/platform/DefaultImpl;->access$setLoadState$p(Landroidx/compose/ui/text/platform/DefaultImpl;Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/ui/text/platform/DefaultImpl;->getFontLoadState()Landroidx/compose/runtime/State; +HSPLandroidx/compose/ui/text/platform/DefaultImpl;->getFontLoaded()Landroidx/compose/runtime/State; +Landroidx/compose/ui/text/platform/DefaultImpl$getFontLoadState$initCallback$1; +HSPLandroidx/compose/ui/text/platform/DefaultImpl$getFontLoadState$initCallback$1;->(Landroidx/compose/runtime/MutableState;Landroidx/compose/ui/text/platform/DefaultImpl;)V +HSPLandroidx/compose/ui/text/platform/DefaultImpl$getFontLoadState$initCallback$1;->onInitialized()V +Landroidx/compose/ui/text/platform/EmojiCompatStatus; +HSPLandroidx/compose/ui/text/platform/EmojiCompatStatus;->()V +HSPLandroidx/compose/ui/text/platform/EmojiCompatStatus;->()V +HSPLandroidx/compose/ui/text/platform/EmojiCompatStatus;->getFontLoaded()Landroidx/compose/runtime/State; +Landroidx/compose/ui/text/platform/EmojiCompatStatusDelegate; +Landroidx/compose/ui/text/platform/ImmutableBool; +HSPLandroidx/compose/ui/text/platform/ImmutableBool;->(Z)V +HSPLandroidx/compose/ui/text/platform/ImmutableBool;->getValue()Ljava/lang/Boolean; +HSPLandroidx/compose/ui/text/platform/ImmutableBool;->getValue()Ljava/lang/Object; +Landroidx/compose/ui/text/platform/Synchronization_jvmKt; +HSPLandroidx/compose/ui/text/platform/Synchronization_jvmKt;->createSynchronizedObject()Landroidx/compose/ui/text/platform/SynchronizedObject; +Landroidx/compose/ui/text/platform/SynchronizedObject; +HSPLandroidx/compose/ui/text/platform/SynchronizedObject;->()V +Landroidx/compose/ui/text/platform/URLSpanCache; +HSPLandroidx/compose/ui/text/platform/URLSpanCache;->()V +HSPLandroidx/compose/ui/text/platform/URLSpanCache;->()V +Landroidx/compose/ui/text/platform/extensions/PlaceholderExtensions_androidKt; +HSPLandroidx/compose/ui/text/platform/extensions/PlaceholderExtensions_androidKt;->setPlaceholders(Landroid/text/Spannable;Ljava/util/List;Landroidx/compose/ui/unit/Density;)V +Landroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt; +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->flattenFontStylesAndApply(Landroidx/compose/ui/text/SpanStyle;Ljava/util/List;Lkotlin/jvm/functions/Function3;)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->getNeedsLetterSpacingSpan(Landroidx/compose/ui/text/SpanStyle;)Z +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->hasFontAttributes(Landroidx/compose/ui/text/TextStyle;)Z +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->merge(Landroidx/compose/ui/text/SpanStyle;Landroidx/compose/ui/text/SpanStyle;)Landroidx/compose/ui/text/SpanStyle; +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->resolveLineHeightInPx-o2QH7mI(JFLandroidx/compose/ui/unit/Density;)F +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setBackground-RPmYEkk(Landroid/text/Spannable;JII)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setBaselineShift-0ocSgnM(Landroid/text/Spannable;Landroidx/compose/ui/text/style/BaselineShift;II)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setBrush(Landroid/text/Spannable;Landroidx/compose/ui/graphics/Brush;FII)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setColor-RPmYEkk(Landroid/text/Spannable;JII)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setDrawStyle(Landroid/text/Spannable;Landroidx/compose/ui/graphics/drawscope/DrawStyle;II)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setFontAttributes(Landroid/text/Spannable;Landroidx/compose/ui/text/TextStyle;Ljava/util/List;Lkotlin/jvm/functions/Function4;)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setFontFeatureSettings(Landroid/text/Spannable;Ljava/lang/String;II)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setFontSize-KmRG4DE(Landroid/text/Spannable;JLandroidx/compose/ui/unit/Density;II)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setGeometricTransform(Landroid/text/Spannable;Landroidx/compose/ui/text/style/TextGeometricTransform;II)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setLineHeight-r9BaKPg(Landroid/text/Spannable;JFLandroidx/compose/ui/unit/Density;)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setLocaleList(Landroid/text/Spannable;Landroidx/compose/ui/text/intl/LocaleList;II)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setShadow(Landroid/text/Spannable;Landroidx/compose/ui/graphics/Shadow;II)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setSpan(Landroid/text/Spannable;Ljava/lang/Object;II)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setSpanStyle(Landroid/text/Spannable;Landroidx/compose/ui/text/AnnotatedString$Range;Landroidx/compose/ui/unit/Density;)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setSpanStyles(Landroid/text/Spannable;Landroidx/compose/ui/text/TextStyle;Ljava/util/List;Landroidx/compose/ui/unit/Density;Lkotlin/jvm/functions/Function4;)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setTextDecoration(Landroid/text/Spannable;Landroidx/compose/ui/text/style/TextDecoration;II)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setTextIndent(Landroid/text/Spannable;Landroidx/compose/ui/text/style/TextIndent;FLandroidx/compose/ui/unit/Density;)V +Landroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt$setFontAttributes$1; +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt$setFontAttributes$1;->(Landroid/text/Spannable;Lkotlin/jvm/functions/Function4;)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt$setFontAttributes$1;->invoke(Landroidx/compose/ui/text/SpanStyle;II)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt$setFontAttributes$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/text/platform/extensions/TextPaintExtensions_androidKt; +HSPLandroidx/compose/ui/text/platform/extensions/TextPaintExtensions_androidKt;->applySpanStyle(Landroidx/compose/ui/text/platform/AndroidTextPaint;Landroidx/compose/ui/text/SpanStyle;Lkotlin/jvm/functions/Function4;Landroidx/compose/ui/unit/Density;Z)Landroidx/compose/ui/text/SpanStyle; +HSPLandroidx/compose/ui/text/platform/extensions/TextPaintExtensions_androidKt;->generateFallbackSpanStyle-62GTOB8(JZJLandroidx/compose/ui/text/style/BaselineShift;)Landroidx/compose/ui/text/SpanStyle; +HSPLandroidx/compose/ui/text/platform/extensions/TextPaintExtensions_androidKt;->hasFontAttributes(Landroidx/compose/ui/text/SpanStyle;)Z +HSPLandroidx/compose/ui/text/platform/extensions/TextPaintExtensions_androidKt;->setTextMotion(Landroidx/compose/ui/text/platform/AndroidTextPaint;Landroidx/compose/ui/text/style/TextMotion;)V +Landroidx/compose/ui/text/platform/style/ShaderBrushSpan; +Landroidx/compose/ui/text/style/BaselineShift; +HSPLandroidx/compose/ui/text/style/BaselineShift;->()V +HSPLandroidx/compose/ui/text/style/BaselineShift;->(F)V +HSPLandroidx/compose/ui/text/style/BaselineShift;->access$getNone$cp()F +HSPLandroidx/compose/ui/text/style/BaselineShift;->box-impl(F)Landroidx/compose/ui/text/style/BaselineShift; +HSPLandroidx/compose/ui/text/style/BaselineShift;->constructor-impl(F)F +HSPLandroidx/compose/ui/text/style/BaselineShift;->equals-impl0(FF)Z +HSPLandroidx/compose/ui/text/style/BaselineShift;->unbox-impl()F +Landroidx/compose/ui/text/style/BaselineShift$Companion; +HSPLandroidx/compose/ui/text/style/BaselineShift$Companion;->()V +HSPLandroidx/compose/ui/text/style/BaselineShift$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/BaselineShift$Companion;->getNone-y9eOQZs()F +Landroidx/compose/ui/text/style/BrushStyle; +Landroidx/compose/ui/text/style/ColorStyle; +HSPLandroidx/compose/ui/text/style/ColorStyle;->(J)V +HSPLandroidx/compose/ui/text/style/ColorStyle;->(JLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/ColorStyle;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/style/ColorStyle;->getAlpha()F +HSPLandroidx/compose/ui/text/style/ColorStyle;->getBrush()Landroidx/compose/ui/graphics/Brush; +HSPLandroidx/compose/ui/text/style/ColorStyle;->getColor-0d7_KjU()J +Landroidx/compose/ui/text/style/Hyphens; +HSPLandroidx/compose/ui/text/style/Hyphens;->()V +HSPLandroidx/compose/ui/text/style/Hyphens;->(I)V +HSPLandroidx/compose/ui/text/style/Hyphens;->access$getAuto$cp()I +HSPLandroidx/compose/ui/text/style/Hyphens;->access$getNone$cp()I +HSPLandroidx/compose/ui/text/style/Hyphens;->box-impl(I)Landroidx/compose/ui/text/style/Hyphens; +HSPLandroidx/compose/ui/text/style/Hyphens;->constructor-impl(I)I +HSPLandroidx/compose/ui/text/style/Hyphens;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/style/Hyphens;->equals-impl(ILjava/lang/Object;)Z +HSPLandroidx/compose/ui/text/style/Hyphens;->equals-impl0(II)Z +HSPLandroidx/compose/ui/text/style/Hyphens;->unbox-impl()I +Landroidx/compose/ui/text/style/Hyphens$Companion; +HSPLandroidx/compose/ui/text/style/Hyphens$Companion;->()V +HSPLandroidx/compose/ui/text/style/Hyphens$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/Hyphens$Companion;->getAuto-vmbZdU8()I +HSPLandroidx/compose/ui/text/style/Hyphens$Companion;->getNone-vmbZdU8()I +Landroidx/compose/ui/text/style/LineBreak; +HSPLandroidx/compose/ui/text/style/LineBreak;->()V +HSPLandroidx/compose/ui/text/style/LineBreak;->(I)V +HSPLandroidx/compose/ui/text/style/LineBreak;->access$getSimple$cp()I +HSPLandroidx/compose/ui/text/style/LineBreak;->box-impl(I)Landroidx/compose/ui/text/style/LineBreak; +HSPLandroidx/compose/ui/text/style/LineBreak;->constructor-impl(I)I +HSPLandroidx/compose/ui/text/style/LineBreak;->constructor-impl(III)I +HSPLandroidx/compose/ui/text/style/LineBreak;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/style/LineBreak;->equals-impl(ILjava/lang/Object;)Z +HSPLandroidx/compose/ui/text/style/LineBreak;->getStrategy-fcGXIks(I)I +HSPLandroidx/compose/ui/text/style/LineBreak;->getStrictness-usljTpc(I)I +HSPLandroidx/compose/ui/text/style/LineBreak;->getWordBreak-jp8hJ3c(I)I +HSPLandroidx/compose/ui/text/style/LineBreak;->unbox-impl()I +Landroidx/compose/ui/text/style/LineBreak$Companion; +HSPLandroidx/compose/ui/text/style/LineBreak$Companion;->()V +HSPLandroidx/compose/ui/text/style/LineBreak$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/LineBreak$Companion;->getSimple-rAG3T2k()I +Landroidx/compose/ui/text/style/LineBreak$Strategy; +HSPLandroidx/compose/ui/text/style/LineBreak$Strategy;->()V +HSPLandroidx/compose/ui/text/style/LineBreak$Strategy;->(I)V +HSPLandroidx/compose/ui/text/style/LineBreak$Strategy;->access$getBalanced$cp()I +HSPLandroidx/compose/ui/text/style/LineBreak$Strategy;->access$getHighQuality$cp()I +HSPLandroidx/compose/ui/text/style/LineBreak$Strategy;->access$getSimple$cp()I +HSPLandroidx/compose/ui/text/style/LineBreak$Strategy;->box-impl(I)Landroidx/compose/ui/text/style/LineBreak$Strategy; +HSPLandroidx/compose/ui/text/style/LineBreak$Strategy;->constructor-impl(I)I +HSPLandroidx/compose/ui/text/style/LineBreak$Strategy;->equals-impl0(II)Z +HSPLandroidx/compose/ui/text/style/LineBreak$Strategy;->unbox-impl()I +Landroidx/compose/ui/text/style/LineBreak$Strategy$Companion; +HSPLandroidx/compose/ui/text/style/LineBreak$Strategy$Companion;->()V +HSPLandroidx/compose/ui/text/style/LineBreak$Strategy$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/LineBreak$Strategy$Companion;->getBalanced-fcGXIks()I +HSPLandroidx/compose/ui/text/style/LineBreak$Strategy$Companion;->getHighQuality-fcGXIks()I +HSPLandroidx/compose/ui/text/style/LineBreak$Strategy$Companion;->getSimple-fcGXIks()I +Landroidx/compose/ui/text/style/LineBreak$Strictness; +HSPLandroidx/compose/ui/text/style/LineBreak$Strictness;->()V +HSPLandroidx/compose/ui/text/style/LineBreak$Strictness;->(I)V +HSPLandroidx/compose/ui/text/style/LineBreak$Strictness;->access$getDefault$cp()I +HSPLandroidx/compose/ui/text/style/LineBreak$Strictness;->access$getLoose$cp()I +HSPLandroidx/compose/ui/text/style/LineBreak$Strictness;->access$getNormal$cp()I +HSPLandroidx/compose/ui/text/style/LineBreak$Strictness;->access$getStrict$cp()I +HSPLandroidx/compose/ui/text/style/LineBreak$Strictness;->box-impl(I)Landroidx/compose/ui/text/style/LineBreak$Strictness; +HSPLandroidx/compose/ui/text/style/LineBreak$Strictness;->constructor-impl(I)I +HSPLandroidx/compose/ui/text/style/LineBreak$Strictness;->equals-impl0(II)Z +HSPLandroidx/compose/ui/text/style/LineBreak$Strictness;->unbox-impl()I +Landroidx/compose/ui/text/style/LineBreak$Strictness$Companion; +HSPLandroidx/compose/ui/text/style/LineBreak$Strictness$Companion;->()V +HSPLandroidx/compose/ui/text/style/LineBreak$Strictness$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/LineBreak$Strictness$Companion;->getDefault-usljTpc()I +HSPLandroidx/compose/ui/text/style/LineBreak$Strictness$Companion;->getLoose-usljTpc()I +HSPLandroidx/compose/ui/text/style/LineBreak$Strictness$Companion;->getNormal-usljTpc()I +HSPLandroidx/compose/ui/text/style/LineBreak$Strictness$Companion;->getStrict-usljTpc()I +Landroidx/compose/ui/text/style/LineBreak$WordBreak; +HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak;->()V +HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak;->(I)V +HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak;->access$getDefault$cp()I +HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak;->access$getPhrase$cp()I +HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak;->box-impl(I)Landroidx/compose/ui/text/style/LineBreak$WordBreak; +HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak;->constructor-impl(I)I +HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak;->equals-impl0(II)Z +HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak;->unbox-impl()I +Landroidx/compose/ui/text/style/LineBreak$WordBreak$Companion; +HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak$Companion;->()V +HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak$Companion;->getDefault-jp8hJ3c()I +HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak$Companion;->getPhrase-jp8hJ3c()I +Landroidx/compose/ui/text/style/LineBreak_androidKt; +HSPLandroidx/compose/ui/text/style/LineBreak_androidKt;->access$packBytes(III)I +HSPLandroidx/compose/ui/text/style/LineBreak_androidKt;->access$unpackByte1(I)I +HSPLandroidx/compose/ui/text/style/LineBreak_androidKt;->access$unpackByte2(I)I +HSPLandroidx/compose/ui/text/style/LineBreak_androidKt;->access$unpackByte3(I)I +HSPLandroidx/compose/ui/text/style/LineBreak_androidKt;->packBytes(III)I +HSPLandroidx/compose/ui/text/style/LineBreak_androidKt;->unpackByte1(I)I +HSPLandroidx/compose/ui/text/style/LineBreak_androidKt;->unpackByte2(I)I +HSPLandroidx/compose/ui/text/style/LineBreak_androidKt;->unpackByte3(I)I +Landroidx/compose/ui/text/style/LineHeightStyle; +Landroidx/compose/ui/text/style/TextAlign; +HSPLandroidx/compose/ui/text/style/TextAlign;->()V +HSPLandroidx/compose/ui/text/style/TextAlign;->(I)V +HSPLandroidx/compose/ui/text/style/TextAlign;->access$getCenter$cp()I +HSPLandroidx/compose/ui/text/style/TextAlign;->access$getEnd$cp()I +HSPLandroidx/compose/ui/text/style/TextAlign;->access$getJustify$cp()I +HSPLandroidx/compose/ui/text/style/TextAlign;->access$getLeft$cp()I +HSPLandroidx/compose/ui/text/style/TextAlign;->access$getRight$cp()I +HSPLandroidx/compose/ui/text/style/TextAlign;->access$getStart$cp()I +HSPLandroidx/compose/ui/text/style/TextAlign;->box-impl(I)Landroidx/compose/ui/text/style/TextAlign; +HSPLandroidx/compose/ui/text/style/TextAlign;->constructor-impl(I)I +HSPLandroidx/compose/ui/text/style/TextAlign;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/style/TextAlign;->equals-impl(ILjava/lang/Object;)Z +HSPLandroidx/compose/ui/text/style/TextAlign;->equals-impl0(II)Z +HSPLandroidx/compose/ui/text/style/TextAlign;->unbox-impl()I +Landroidx/compose/ui/text/style/TextAlign$Companion; +HSPLandroidx/compose/ui/text/style/TextAlign$Companion;->()V +HSPLandroidx/compose/ui/text/style/TextAlign$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/TextAlign$Companion;->getCenter-e0LSkKk()I +HSPLandroidx/compose/ui/text/style/TextAlign$Companion;->getEnd-e0LSkKk()I +HSPLandroidx/compose/ui/text/style/TextAlign$Companion;->getJustify-e0LSkKk()I +HSPLandroidx/compose/ui/text/style/TextAlign$Companion;->getLeft-e0LSkKk()I +HSPLandroidx/compose/ui/text/style/TextAlign$Companion;->getRight-e0LSkKk()I +HSPLandroidx/compose/ui/text/style/TextAlign$Companion;->getStart-e0LSkKk()I +Landroidx/compose/ui/text/style/TextDecoration; +HSPLandroidx/compose/ui/text/style/TextDecoration;->()V +HSPLandroidx/compose/ui/text/style/TextDecoration;->(I)V +HSPLandroidx/compose/ui/text/style/TextDecoration;->access$getNone$cp()Landroidx/compose/ui/text/style/TextDecoration; +HSPLandroidx/compose/ui/text/style/TextDecoration;->access$getUnderline$cp()Landroidx/compose/ui/text/style/TextDecoration; +HSPLandroidx/compose/ui/text/style/TextDecoration;->equals(Ljava/lang/Object;)Z +Landroidx/compose/ui/text/style/TextDecoration$Companion; +HSPLandroidx/compose/ui/text/style/TextDecoration$Companion;->()V +HSPLandroidx/compose/ui/text/style/TextDecoration$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/TextDecoration$Companion;->getNone()Landroidx/compose/ui/text/style/TextDecoration; +HSPLandroidx/compose/ui/text/style/TextDecoration$Companion;->getUnderline()Landroidx/compose/ui/text/style/TextDecoration; +Landroidx/compose/ui/text/style/TextDirection; +HSPLandroidx/compose/ui/text/style/TextDirection;->()V +HSPLandroidx/compose/ui/text/style/TextDirection;->(I)V +HSPLandroidx/compose/ui/text/style/TextDirection;->access$getContent$cp()I +HSPLandroidx/compose/ui/text/style/TextDirection;->access$getContentOrLtr$cp()I +HSPLandroidx/compose/ui/text/style/TextDirection;->access$getContentOrRtl$cp()I +HSPLandroidx/compose/ui/text/style/TextDirection;->access$getLtr$cp()I +HSPLandroidx/compose/ui/text/style/TextDirection;->access$getRtl$cp()I +HSPLandroidx/compose/ui/text/style/TextDirection;->box-impl(I)Landroidx/compose/ui/text/style/TextDirection; +HSPLandroidx/compose/ui/text/style/TextDirection;->constructor-impl(I)I +HSPLandroidx/compose/ui/text/style/TextDirection;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/style/TextDirection;->equals-impl(ILjava/lang/Object;)Z +HSPLandroidx/compose/ui/text/style/TextDirection;->equals-impl0(II)Z +HSPLandroidx/compose/ui/text/style/TextDirection;->unbox-impl()I +Landroidx/compose/ui/text/style/TextDirection$Companion; +HSPLandroidx/compose/ui/text/style/TextDirection$Companion;->()V +HSPLandroidx/compose/ui/text/style/TextDirection$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/TextDirection$Companion;->getContent-s_7X-co()I +HSPLandroidx/compose/ui/text/style/TextDirection$Companion;->getContentOrLtr-s_7X-co()I +HSPLandroidx/compose/ui/text/style/TextDirection$Companion;->getContentOrRtl-s_7X-co()I +HSPLandroidx/compose/ui/text/style/TextDirection$Companion;->getLtr-s_7X-co()I +HSPLandroidx/compose/ui/text/style/TextDirection$Companion;->getRtl-s_7X-co()I +Landroidx/compose/ui/text/style/TextForegroundStyle; +HSPLandroidx/compose/ui/text/style/TextForegroundStyle;->()V +HSPLandroidx/compose/ui/text/style/TextForegroundStyle;->merge(Landroidx/compose/ui/text/style/TextForegroundStyle;)Landroidx/compose/ui/text/style/TextForegroundStyle; +HSPLandroidx/compose/ui/text/style/TextForegroundStyle;->takeOrElse(Lkotlin/jvm/functions/Function0;)Landroidx/compose/ui/text/style/TextForegroundStyle; +Landroidx/compose/ui/text/style/TextForegroundStyle$Companion; +HSPLandroidx/compose/ui/text/style/TextForegroundStyle$Companion;->()V +HSPLandroidx/compose/ui/text/style/TextForegroundStyle$Companion;->()V +HSPLandroidx/compose/ui/text/style/TextForegroundStyle$Companion;->from-8_81llA(J)Landroidx/compose/ui/text/style/TextForegroundStyle; +Landroidx/compose/ui/text/style/TextForegroundStyle$Unspecified; +HSPLandroidx/compose/ui/text/style/TextForegroundStyle$Unspecified;->()V +HSPLandroidx/compose/ui/text/style/TextForegroundStyle$Unspecified;->()V +HSPLandroidx/compose/ui/text/style/TextForegroundStyle$Unspecified;->getAlpha()F +HSPLandroidx/compose/ui/text/style/TextForegroundStyle$Unspecified;->getBrush()Landroidx/compose/ui/graphics/Brush; +HSPLandroidx/compose/ui/text/style/TextForegroundStyle$Unspecified;->getColor-0d7_KjU()J +Landroidx/compose/ui/text/style/TextForegroundStyle$merge$2; +HSPLandroidx/compose/ui/text/style/TextForegroundStyle$merge$2;->(Landroidx/compose/ui/text/style/TextForegroundStyle;)V +HSPLandroidx/compose/ui/text/style/TextForegroundStyle$merge$2;->invoke()Landroidx/compose/ui/text/style/TextForegroundStyle; +HSPLandroidx/compose/ui/text/style/TextForegroundStyle$merge$2;->invoke()Ljava/lang/Object; +Landroidx/compose/ui/text/style/TextGeometricTransform; +HSPLandroidx/compose/ui/text/style/TextGeometricTransform;->()V +HSPLandroidx/compose/ui/text/style/TextGeometricTransform;->(FF)V +HSPLandroidx/compose/ui/text/style/TextGeometricTransform;->access$getNone$cp()Landroidx/compose/ui/text/style/TextGeometricTransform; +HSPLandroidx/compose/ui/text/style/TextGeometricTransform;->equals(Ljava/lang/Object;)Z +Landroidx/compose/ui/text/style/TextGeometricTransform$Companion; +HSPLandroidx/compose/ui/text/style/TextGeometricTransform$Companion;->()V +HSPLandroidx/compose/ui/text/style/TextGeometricTransform$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/TextGeometricTransform$Companion;->getNone$ui_text_release()Landroidx/compose/ui/text/style/TextGeometricTransform; +Landroidx/compose/ui/text/style/TextIndent; +HSPLandroidx/compose/ui/text/style/TextIndent;->()V +HSPLandroidx/compose/ui/text/style/TextIndent;->(JJ)V +HSPLandroidx/compose/ui/text/style/TextIndent;->(JJILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/TextIndent;->(JJLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/TextIndent;->access$getNone$cp()Landroidx/compose/ui/text/style/TextIndent; +HSPLandroidx/compose/ui/text/style/TextIndent;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/style/TextIndent;->getFirstLine-XSAIIZE()J +HSPLandroidx/compose/ui/text/style/TextIndent;->getRestLine-XSAIIZE()J +Landroidx/compose/ui/text/style/TextIndent$Companion; +HSPLandroidx/compose/ui/text/style/TextIndent$Companion;->()V +HSPLandroidx/compose/ui/text/style/TextIndent$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/TextIndent$Companion;->getNone()Landroidx/compose/ui/text/style/TextIndent; +Landroidx/compose/ui/text/style/TextMotion; +HSPLandroidx/compose/ui/text/style/TextMotion;->()V +HSPLandroidx/compose/ui/text/style/TextMotion;->(IZ)V +HSPLandroidx/compose/ui/text/style/TextMotion;->(IZLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/TextMotion;->access$getStatic$cp()Landroidx/compose/ui/text/style/TextMotion; +HSPLandroidx/compose/ui/text/style/TextMotion;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/style/TextMotion;->getLinearity-4e0Vf04$ui_text_release()I +HSPLandroidx/compose/ui/text/style/TextMotion;->getSubpixelTextPositioning$ui_text_release()Z +Landroidx/compose/ui/text/style/TextMotion$Companion; +HSPLandroidx/compose/ui/text/style/TextMotion$Companion;->()V +HSPLandroidx/compose/ui/text/style/TextMotion$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/TextMotion$Companion;->getStatic()Landroidx/compose/ui/text/style/TextMotion; +Landroidx/compose/ui/text/style/TextMotion$Linearity; +HSPLandroidx/compose/ui/text/style/TextMotion$Linearity;->()V +HSPLandroidx/compose/ui/text/style/TextMotion$Linearity;->access$getFontHinting$cp()I +HSPLandroidx/compose/ui/text/style/TextMotion$Linearity;->access$getLinear$cp()I +HSPLandroidx/compose/ui/text/style/TextMotion$Linearity;->constructor-impl(I)I +HSPLandroidx/compose/ui/text/style/TextMotion$Linearity;->equals-impl0(II)Z +Landroidx/compose/ui/text/style/TextMotion$Linearity$Companion; +HSPLandroidx/compose/ui/text/style/TextMotion$Linearity$Companion;->()V +HSPLandroidx/compose/ui/text/style/TextMotion$Linearity$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/TextMotion$Linearity$Companion;->getFontHinting-4e0Vf04()I +HSPLandroidx/compose/ui/text/style/TextMotion$Linearity$Companion;->getLinear-4e0Vf04()I +Landroidx/compose/ui/text/style/TextOverflow; +HSPLandroidx/compose/ui/text/style/TextOverflow;->()V +HSPLandroidx/compose/ui/text/style/TextOverflow;->access$getClip$cp()I +HSPLandroidx/compose/ui/text/style/TextOverflow;->access$getEllipsis$cp()I +HSPLandroidx/compose/ui/text/style/TextOverflow;->constructor-impl(I)I +HSPLandroidx/compose/ui/text/style/TextOverflow;->equals-impl0(II)Z +Landroidx/compose/ui/text/style/TextOverflow$Companion; +HSPLandroidx/compose/ui/text/style/TextOverflow$Companion;->()V +HSPLandroidx/compose/ui/text/style/TextOverflow$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/TextOverflow$Companion;->getClip-gIe3tQ8()I +HSPLandroidx/compose/ui/text/style/TextOverflow$Companion;->getEllipsis-gIe3tQ8()I +Landroidx/compose/ui/unit/AndroidDensity_androidKt; +HSPLandroidx/compose/ui/unit/AndroidDensity_androidKt;->Density(Landroid/content/Context;)Landroidx/compose/ui/unit/Density; +Landroidx/compose/ui/unit/Constraints; +HSPLandroidx/compose/ui/unit/Constraints;->()V +HSPLandroidx/compose/ui/unit/Constraints;->(J)V +HSPLandroidx/compose/ui/unit/Constraints;->access$getMinHeightOffsets$cp()[I +HSPLandroidx/compose/ui/unit/Constraints;->box-impl(J)Landroidx/compose/ui/unit/Constraints; +HSPLandroidx/compose/ui/unit/Constraints;->constructor-impl(J)J +HSPLandroidx/compose/ui/unit/Constraints;->copy-Zbe2FdA$default(JIIIIILjava/lang/Object;)J +HSPLandroidx/compose/ui/unit/Constraints;->copy-Zbe2FdA(JIIII)J +HSPLandroidx/compose/ui/unit/Constraints;->equals-impl0(JJ)Z +HSPLandroidx/compose/ui/unit/Constraints;->getFocusIndex-impl(J)I +HSPLandroidx/compose/ui/unit/Constraints;->getHasBoundedHeight-impl(J)Z +HSPLandroidx/compose/ui/unit/Constraints;->getHasBoundedWidth-impl(J)Z +HSPLandroidx/compose/ui/unit/Constraints;->getHasFixedHeight-impl(J)Z +HSPLandroidx/compose/ui/unit/Constraints;->getHasFixedWidth-impl(J)Z +HSPLandroidx/compose/ui/unit/Constraints;->getMaxHeight-impl(J)I +HSPLandroidx/compose/ui/unit/Constraints;->getMaxWidth-impl(J)I +HSPLandroidx/compose/ui/unit/Constraints;->getMinHeight-impl(J)I +HSPLandroidx/compose/ui/unit/Constraints;->getMinWidth-impl(J)I +HSPLandroidx/compose/ui/unit/Constraints;->unbox-impl()J +Landroidx/compose/ui/unit/Constraints$Companion; +HSPLandroidx/compose/ui/unit/Constraints$Companion;->()V +HSPLandroidx/compose/ui/unit/Constraints$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/unit/Constraints$Companion;->bitsNeedForSize(I)I +HSPLandroidx/compose/ui/unit/Constraints$Companion;->createConstraints-Zbe2FdA$ui_unit_release(IIII)J +HSPLandroidx/compose/ui/unit/Constraints$Companion;->fixed-JhjzzOo(II)J +Landroidx/compose/ui/unit/ConstraintsKt; +HSPLandroidx/compose/ui/unit/ConstraintsKt;->Constraints$default(IIIIILjava/lang/Object;)J +HSPLandroidx/compose/ui/unit/ConstraintsKt;->Constraints(IIII)J +HSPLandroidx/compose/ui/unit/ConstraintsKt;->addMaxWithMinimum(II)I +HSPLandroidx/compose/ui/unit/ConstraintsKt;->constrain-4WqzIAM(JJ)J +HSPLandroidx/compose/ui/unit/ConstraintsKt;->constrain-N9IONVI(JJ)J +HSPLandroidx/compose/ui/unit/ConstraintsKt;->constrainHeight-K40F9xA(JI)I +HSPLandroidx/compose/ui/unit/ConstraintsKt;->constrainWidth-K40F9xA(JI)I +HSPLandroidx/compose/ui/unit/ConstraintsKt;->offset-NN6Ew-U(JII)J +Landroidx/compose/ui/unit/Density; +HSPLandroidx/compose/ui/unit/Density;->roundToPx-0680j_4(F)I +HSPLandroidx/compose/ui/unit/Density;->toDp-GaN1DYA(J)F +HSPLandroidx/compose/ui/unit/Density;->toDp-u2uoSUM(F)F +HSPLandroidx/compose/ui/unit/Density;->toDp-u2uoSUM(I)F +HSPLandroidx/compose/ui/unit/Density;->toDpSize-k-rfVVM(J)J +HSPLandroidx/compose/ui/unit/Density;->toPx--R2X_6o(J)F +HSPLandroidx/compose/ui/unit/Density;->toPx-0680j_4(F)F +HSPLandroidx/compose/ui/unit/Density;->toSize-XkaWNTQ(J)J +Landroidx/compose/ui/unit/DensityImpl; +HSPLandroidx/compose/ui/unit/DensityImpl;->(FF)V +HSPLandroidx/compose/ui/unit/DensityImpl;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/unit/DensityImpl;->getDensity()F +HSPLandroidx/compose/ui/unit/DensityImpl;->getFontScale()F +Landroidx/compose/ui/unit/DensityKt; +HSPLandroidx/compose/ui/unit/DensityKt;->Density$default(FFILjava/lang/Object;)Landroidx/compose/ui/unit/Density; +HSPLandroidx/compose/ui/unit/DensityKt;->Density(FF)Landroidx/compose/ui/unit/Density; +Landroidx/compose/ui/unit/Dp; +HSPLandroidx/compose/ui/unit/Dp;->()V +HSPLandroidx/compose/ui/unit/Dp;->(F)V +HSPLandroidx/compose/ui/unit/Dp;->access$getHairline$cp()F +HSPLandroidx/compose/ui/unit/Dp;->access$getUnspecified$cp()F +HSPLandroidx/compose/ui/unit/Dp;->box-impl(F)Landroidx/compose/ui/unit/Dp; +HSPLandroidx/compose/ui/unit/Dp;->compareTo(Ljava/lang/Object;)I +HSPLandroidx/compose/ui/unit/Dp;->compareTo-0680j_4(F)I +HSPLandroidx/compose/ui/unit/Dp;->compareTo-0680j_4(FF)I +HSPLandroidx/compose/ui/unit/Dp;->constructor-impl(F)F +HSPLandroidx/compose/ui/unit/Dp;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/unit/Dp;->equals-impl(FLjava/lang/Object;)Z +HSPLandroidx/compose/ui/unit/Dp;->equals-impl0(FF)Z +HSPLandroidx/compose/ui/unit/Dp;->hashCode-impl(F)I +HSPLandroidx/compose/ui/unit/Dp;->unbox-impl()F +Landroidx/compose/ui/unit/Dp$Companion; +HSPLandroidx/compose/ui/unit/Dp$Companion;->()V +HSPLandroidx/compose/ui/unit/Dp$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/unit/Dp$Companion;->getHairline-D9Ej5fM()F +HSPLandroidx/compose/ui/unit/Dp$Companion;->getUnspecified-D9Ej5fM()F +Landroidx/compose/ui/unit/DpKt; +HSPLandroidx/compose/ui/unit/DpKt;->DpOffset-YgX7TsA(FF)J +HSPLandroidx/compose/ui/unit/DpKt;->DpSize-YgX7TsA(FF)J +Landroidx/compose/ui/unit/DpOffset; +HSPLandroidx/compose/ui/unit/DpOffset;->()V +HSPLandroidx/compose/ui/unit/DpOffset;->constructor-impl(J)J +Landroidx/compose/ui/unit/DpOffset$Companion; +HSPLandroidx/compose/ui/unit/DpOffset$Companion;->()V +HSPLandroidx/compose/ui/unit/DpOffset$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/unit/DpSize; +HSPLandroidx/compose/ui/unit/DpSize;->()V +HSPLandroidx/compose/ui/unit/DpSize;->(J)V +HSPLandroidx/compose/ui/unit/DpSize;->access$getUnspecified$cp()J +HSPLandroidx/compose/ui/unit/DpSize;->box-impl(J)Landroidx/compose/ui/unit/DpSize; +HSPLandroidx/compose/ui/unit/DpSize;->constructor-impl(J)J +HSPLandroidx/compose/ui/unit/DpSize;->equals-impl0(JJ)Z +HSPLandroidx/compose/ui/unit/DpSize;->getHeight-D9Ej5fM(J)F +HSPLandroidx/compose/ui/unit/DpSize;->getWidth-D9Ej5fM(J)F +HSPLandroidx/compose/ui/unit/DpSize;->unbox-impl()J +Landroidx/compose/ui/unit/DpSize$Companion; +HSPLandroidx/compose/ui/unit/DpSize$Companion;->()V +HSPLandroidx/compose/ui/unit/DpSize$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/unit/DpSize$Companion;->getUnspecified-MYxV2XQ()J +Landroidx/compose/ui/unit/IntOffset; +HSPLandroidx/compose/ui/unit/IntOffset;->()V +HSPLandroidx/compose/ui/unit/IntOffset;->(J)V +HSPLandroidx/compose/ui/unit/IntOffset;->access$getZero$cp()J +HSPLandroidx/compose/ui/unit/IntOffset;->box-impl(J)Landroidx/compose/ui/unit/IntOffset; +HSPLandroidx/compose/ui/unit/IntOffset;->component1-impl(J)I +HSPLandroidx/compose/ui/unit/IntOffset;->component2-impl(J)I +HSPLandroidx/compose/ui/unit/IntOffset;->constructor-impl(J)J +HSPLandroidx/compose/ui/unit/IntOffset;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/unit/IntOffset;->equals-impl(JLjava/lang/Object;)Z +HSPLandroidx/compose/ui/unit/IntOffset;->equals-impl0(JJ)Z +HSPLandroidx/compose/ui/unit/IntOffset;->getX-impl(J)I +HSPLandroidx/compose/ui/unit/IntOffset;->getY-impl(J)I +HSPLandroidx/compose/ui/unit/IntOffset;->unbox-impl()J +Landroidx/compose/ui/unit/IntOffset$Companion; +HSPLandroidx/compose/ui/unit/IntOffset$Companion;->()V +HSPLandroidx/compose/ui/unit/IntOffset$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/unit/IntOffset$Companion;->getZero-nOcc-ac()J +Landroidx/compose/ui/unit/IntOffsetKt; +HSPLandroidx/compose/ui/unit/IntOffsetKt;->IntOffset(II)J +HSPLandroidx/compose/ui/unit/IntOffsetKt;->minus-Nv-tHpc(JJ)J +HSPLandroidx/compose/ui/unit/IntOffsetKt;->plus-Nv-tHpc(JJ)J +Landroidx/compose/ui/unit/IntSize; +HSPLandroidx/compose/ui/unit/IntSize;->()V +HSPLandroidx/compose/ui/unit/IntSize;->(J)V +HSPLandroidx/compose/ui/unit/IntSize;->access$getZero$cp()J +HSPLandroidx/compose/ui/unit/IntSize;->box-impl(J)Landroidx/compose/ui/unit/IntSize; +HSPLandroidx/compose/ui/unit/IntSize;->constructor-impl(J)J +HSPLandroidx/compose/ui/unit/IntSize;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/unit/IntSize;->equals-impl(JLjava/lang/Object;)Z +HSPLandroidx/compose/ui/unit/IntSize;->equals-impl0(JJ)Z +HSPLandroidx/compose/ui/unit/IntSize;->getHeight-impl(J)I +HSPLandroidx/compose/ui/unit/IntSize;->getWidth-impl(J)I +HSPLandroidx/compose/ui/unit/IntSize;->unbox-impl()J +Landroidx/compose/ui/unit/IntSize$Companion; +HSPLandroidx/compose/ui/unit/IntSize$Companion;->()V +HSPLandroidx/compose/ui/unit/IntSize$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/unit/IntSize$Companion;->getZero-YbymL2g()J +Landroidx/compose/ui/unit/IntSizeKt; +HSPLandroidx/compose/ui/unit/IntSizeKt;->IntSize(II)J +HSPLandroidx/compose/ui/unit/IntSizeKt;->getCenter-ozmzZPI(J)J +HSPLandroidx/compose/ui/unit/IntSizeKt;->toSize-ozmzZPI(J)J +Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/unit/LayoutDirection;->$values()[Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/unit/LayoutDirection;->()V +HSPLandroidx/compose/ui/unit/LayoutDirection;->(Ljava/lang/String;I)V +HSPLandroidx/compose/ui/unit/LayoutDirection;->values()[Landroidx/compose/ui/unit/LayoutDirection; +Landroidx/compose/ui/unit/TextUnit; +HSPLandroidx/compose/ui/unit/TextUnit;->()V +HSPLandroidx/compose/ui/unit/TextUnit;->access$getUnspecified$cp()J +HSPLandroidx/compose/ui/unit/TextUnit;->constructor-impl(J)J +HSPLandroidx/compose/ui/unit/TextUnit;->equals-impl0(JJ)Z +HSPLandroidx/compose/ui/unit/TextUnit;->getRawType-impl(J)J +HSPLandroidx/compose/ui/unit/TextUnit;->getType-UIouoOA(J)J +HSPLandroidx/compose/ui/unit/TextUnit;->getValue-impl(J)F +Landroidx/compose/ui/unit/TextUnit$Companion; +HSPLandroidx/compose/ui/unit/TextUnit$Companion;->()V +HSPLandroidx/compose/ui/unit/TextUnit$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/unit/TextUnit$Companion;->getUnspecified-XSAIIZE()J +Landroidx/compose/ui/unit/TextUnitKt; +HSPLandroidx/compose/ui/unit/TextUnitKt;->checkArithmetic--R2X_6o(J)V +HSPLandroidx/compose/ui/unit/TextUnitKt;->getSp(D)J +HSPLandroidx/compose/ui/unit/TextUnitKt;->getSp(F)J +HSPLandroidx/compose/ui/unit/TextUnitKt;->getSp(I)J +HSPLandroidx/compose/ui/unit/TextUnitKt;->isUnspecified--R2X_6o(J)Z +HSPLandroidx/compose/ui/unit/TextUnitKt;->pack(JF)J +Landroidx/compose/ui/unit/TextUnitType; +HSPLandroidx/compose/ui/unit/TextUnitType;->()V +HSPLandroidx/compose/ui/unit/TextUnitType;->(J)V +HSPLandroidx/compose/ui/unit/TextUnitType;->access$getEm$cp()J +HSPLandroidx/compose/ui/unit/TextUnitType;->access$getSp$cp()J +HSPLandroidx/compose/ui/unit/TextUnitType;->access$getUnspecified$cp()J +HSPLandroidx/compose/ui/unit/TextUnitType;->box-impl(J)Landroidx/compose/ui/unit/TextUnitType; +HSPLandroidx/compose/ui/unit/TextUnitType;->constructor-impl(J)J +HSPLandroidx/compose/ui/unit/TextUnitType;->equals-impl0(JJ)Z +HSPLandroidx/compose/ui/unit/TextUnitType;->unbox-impl()J +Landroidx/compose/ui/unit/TextUnitType$Companion; +HSPLandroidx/compose/ui/unit/TextUnitType$Companion;->()V +HSPLandroidx/compose/ui/unit/TextUnitType$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/unit/TextUnitType$Companion;->getEm-UIouoOA()J +HSPLandroidx/compose/ui/unit/TextUnitType$Companion;->getSp-UIouoOA()J +HSPLandroidx/compose/ui/unit/TextUnitType$Companion;->getUnspecified-UIouoOA()J +Landroidx/compose/ui/util/MathHelpersKt; +HSPLandroidx/compose/ui/util/MathHelpersKt;->lerp(FFF)F +Landroidx/compose/ui/viewinterop/AndroidViewHolder; +Landroidx/compose/ui/window/DialogWindowProvider; +Landroidx/compose/ui/window/PopupProperties; +HSPLandroidx/compose/ui/window/PopupProperties;->()V +HSPLandroidx/compose/ui/window/PopupProperties;->(ZZZLandroidx/compose/ui/window/SecureFlagPolicy;ZZ)V +HSPLandroidx/compose/ui/window/PopupProperties;->(ZZZLandroidx/compose/ui/window/SecureFlagPolicy;ZZILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/window/PopupProperties;->(ZZZLandroidx/compose/ui/window/SecureFlagPolicy;ZZZ)V +Landroidx/compose/ui/window/SecureFlagPolicy; +HSPLandroidx/compose/ui/window/SecureFlagPolicy;->$values()[Landroidx/compose/ui/window/SecureFlagPolicy; +HSPLandroidx/compose/ui/window/SecureFlagPolicy;->()V +HSPLandroidx/compose/ui/window/SecureFlagPolicy;->(Ljava/lang/String;I)V +PLandroidx/concurrent/futures/AbstractResolvableFuture;->()V +PLandroidx/concurrent/futures/AbstractResolvableFuture;->()V +PLandroidx/concurrent/futures/AbstractResolvableFuture;->afterDone()V +PLandroidx/concurrent/futures/AbstractResolvableFuture;->clearListeners(Landroidx/concurrent/futures/AbstractResolvableFuture$Listener;)Landroidx/concurrent/futures/AbstractResolvableFuture$Listener; +PLandroidx/concurrent/futures/AbstractResolvableFuture;->complete(Landroidx/concurrent/futures/AbstractResolvableFuture;)V +PLandroidx/concurrent/futures/AbstractResolvableFuture;->releaseWaiters()V +PLandroidx/concurrent/futures/AbstractResolvableFuture;->set(Ljava/lang/Object;)Z +PLandroidx/concurrent/futures/AbstractResolvableFuture$AtomicHelper;->()V +PLandroidx/concurrent/futures/AbstractResolvableFuture$AtomicHelper;->(Landroidx/concurrent/futures/AbstractResolvableFuture$1;)V +PLandroidx/concurrent/futures/AbstractResolvableFuture$Listener;->()V +PLandroidx/concurrent/futures/AbstractResolvableFuture$Listener;->(Ljava/lang/Runnable;Ljava/util/concurrent/Executor;)V +PLandroidx/concurrent/futures/AbstractResolvableFuture$SafeAtomicHelper;->(Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;)V +PLandroidx/concurrent/futures/AbstractResolvableFuture$SafeAtomicHelper;->casListeners(Landroidx/concurrent/futures/AbstractResolvableFuture;Landroidx/concurrent/futures/AbstractResolvableFuture$Listener;Landroidx/concurrent/futures/AbstractResolvableFuture$Listener;)Z +PLandroidx/concurrent/futures/AbstractResolvableFuture$SafeAtomicHelper;->casValue(Landroidx/concurrent/futures/AbstractResolvableFuture;Ljava/lang/Object;Ljava/lang/Object;)Z +PLandroidx/concurrent/futures/AbstractResolvableFuture$SafeAtomicHelper;->casWaiters(Landroidx/concurrent/futures/AbstractResolvableFuture;Landroidx/concurrent/futures/AbstractResolvableFuture$Waiter;Landroidx/concurrent/futures/AbstractResolvableFuture$Waiter;)Z +Landroidx/concurrent/futures/AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0; +HSPLandroidx/concurrent/futures/AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0;->m(Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z +PLandroidx/concurrent/futures/AbstractResolvableFuture$Waiter;->()V +PLandroidx/concurrent/futures/AbstractResolvableFuture$Waiter;->(Z)V +PLandroidx/concurrent/futures/ResolvableFuture;->()V +PLandroidx/concurrent/futures/ResolvableFuture;->create()Landroidx/concurrent/futures/ResolvableFuture; +PLandroidx/concurrent/futures/ResolvableFuture;->set(Ljava/lang/Object;)Z +Landroidx/core/R$id; +Landroidx/core/app/ActivityCompat$OnRequestPermissionsResultCallback; +Landroidx/core/app/ActivityCompat$RequestPermissionsRequestCodeValidator; +Landroidx/core/app/AppLocalesStorageHelper; +HSPLandroidx/core/app/AppLocalesStorageHelper;->()V +HSPLandroidx/core/app/AppLocalesStorageHelper;->readLocales(Landroid/content/Context;)Ljava/lang/String; +Landroidx/core/app/ComponentActivity; +HSPLandroidx/core/app/ComponentActivity;->()V +HSPLandroidx/core/app/ComponentActivity;->onCreate(Landroid/os/Bundle;)V +Landroidx/core/app/CoreComponentFactory; +HSPLandroidx/core/app/CoreComponentFactory;->()V +HSPLandroidx/core/app/CoreComponentFactory;->checkCompatWrapper(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/core/app/CoreComponentFactory;->instantiateActivity(Ljava/lang/ClassLoader;Ljava/lang/String;Landroid/content/Intent;)Landroid/app/Activity; +HSPLandroidx/core/app/CoreComponentFactory;->instantiateApplication(Ljava/lang/ClassLoader;Ljava/lang/String;)Landroid/app/Application; +HSPLandroidx/core/app/CoreComponentFactory;->instantiateProvider(Ljava/lang/ClassLoader;Ljava/lang/String;)Landroid/content/ContentProvider; +PLandroidx/core/app/CoreComponentFactory;->instantiateReceiver(Ljava/lang/ClassLoader;Ljava/lang/String;Landroid/content/Intent;)Landroid/content/BroadcastReceiver; +HSPLandroidx/core/app/CoreComponentFactory;->instantiateService(Ljava/lang/ClassLoader;Ljava/lang/String;Landroid/content/Intent;)Landroid/app/Service; +Landroidx/core/app/CoreComponentFactory$CompatWrapped; +Landroidx/core/app/LocaleManagerCompat; +HSPLandroidx/core/app/LocaleManagerCompat;->getApplicationLocales(Landroid/content/Context;)Landroidx/core/os/LocaleListCompat; +HSPLandroidx/core/app/LocaleManagerCompat;->getLocaleManagerForApplication(Landroid/content/Context;)Ljava/lang/Object; +Landroidx/core/app/LocaleManagerCompat$Api33Impl; +HSPLandroidx/core/app/LocaleManagerCompat$Api33Impl;->localeManagerGetApplicationLocales(Ljava/lang/Object;)Landroid/os/LocaleList; +Landroidx/core/app/NavUtils; +HSPLandroidx/core/app/NavUtils;->getParentActivityName(Landroid/app/Activity;)Ljava/lang/String; +HSPLandroidx/core/app/NavUtils;->getParentActivityName(Landroid/content/Context;Landroid/content/ComponentName;)Ljava/lang/String; +Landroidx/core/app/OnMultiWindowModeChangedProvider; +Landroidx/core/app/OnNewIntentProvider; +Landroidx/core/app/OnPictureInPictureModeChangedProvider; +Landroidx/core/app/TaskStackBuilder$SupportParentable; +Landroidx/core/content/ContextCompat; +HSPLandroidx/core/content/ContextCompat;->()V +HSPLandroidx/core/content/ContextCompat;->createDeviceProtectedStorageContext(Landroid/content/Context;)Landroid/content/Context; +HSPLandroidx/core/content/ContextCompat;->getContextForLanguage(Landroid/content/Context;)Landroid/content/Context; +HSPLandroidx/core/content/ContextCompat;->getDrawable(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable; +HSPLandroidx/core/content/ContextCompat;->getSystemService(Landroid/content/Context;Ljava/lang/Class;)Ljava/lang/Object; +Landroidx/core/content/ContextCompat$Api21Impl; +HSPLandroidx/core/content/ContextCompat$Api21Impl;->getDrawable(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable; +Landroidx/core/content/ContextCompat$Api23Impl; +HSPLandroidx/core/content/ContextCompat$Api23Impl;->getSystemService(Landroid/content/Context;Ljava/lang/Class;)Ljava/lang/Object; +Landroidx/core/content/ContextCompat$Api24Impl; +HSPLandroidx/core/content/ContextCompat$Api24Impl;->createDeviceProtectedStorageContext(Landroid/content/Context;)Landroid/content/Context; +Landroidx/core/content/FileProvider; +HSPLandroidx/core/content/FileProvider;->()V +HSPLandroidx/core/content/FileProvider;->()V +HSPLandroidx/core/content/FileProvider;->attachInfo(Landroid/content/Context;Landroid/content/pm/ProviderInfo;)V +HSPLandroidx/core/content/FileProvider;->onCreate()Z +Landroidx/core/content/OnConfigurationChangedProvider; +Landroidx/core/content/OnTrimMemoryProvider; +Landroidx/core/graphics/Insets; +HSPLandroidx/core/graphics/Insets;->()V +HSPLandroidx/core/graphics/Insets;->(IIII)V +HSPLandroidx/core/graphics/Insets;->equals(Ljava/lang/Object;)Z +HSPLandroidx/core/graphics/Insets;->of(IIII)Landroidx/core/graphics/Insets; +HSPLandroidx/core/graphics/Insets;->toCompatInsets(Landroid/graphics/Insets;)Landroidx/core/graphics/Insets; +HSPLandroidx/core/graphics/Insets;->toPlatformInsets()Landroid/graphics/Insets; +Landroidx/core/graphics/Insets$Api29Impl; +HSPLandroidx/core/graphics/Insets$Api29Impl;->of(IIII)Landroid/graphics/Insets; +Landroidx/core/graphics/TypefaceCompat; +HSPLandroidx/core/graphics/TypefaceCompat;->()V +HSPLandroidx/core/graphics/TypefaceCompat;->createFromFontInfo(Landroid/content/Context;Landroid/os/CancellationSignal;[Landroidx/core/provider/FontsContractCompat$FontInfo;I)Landroid/graphics/Typeface; +Landroidx/core/graphics/TypefaceCompatApi29Impl; +HSPLandroidx/core/graphics/TypefaceCompatApi29Impl;->()V +HSPLandroidx/core/graphics/TypefaceCompatApi29Impl;->createFromFontInfo(Landroid/content/Context;Landroid/os/CancellationSignal;[Landroidx/core/provider/FontsContractCompat$FontInfo;I)Landroid/graphics/Typeface; +HSPLandroidx/core/graphics/TypefaceCompatApi29Impl;->findBaseFont(Landroid/graphics/fonts/FontFamily;I)Landroid/graphics/fonts/Font; +HSPLandroidx/core/graphics/TypefaceCompatApi29Impl;->getMatchScore(Landroid/graphics/fonts/FontStyle;Landroid/graphics/fonts/FontStyle;)I +Landroidx/core/graphics/TypefaceCompatBaseImpl; +HSPLandroidx/core/graphics/TypefaceCompatBaseImpl;->()V +Landroidx/core/graphics/TypefaceCompatUtil; +HSPLandroidx/core/graphics/TypefaceCompatUtil;->mmap(Landroid/content/Context;Landroid/os/CancellationSignal;Landroid/net/Uri;)Ljava/nio/ByteBuffer; +Landroidx/core/graphics/TypefaceCompatUtil$Api19Impl; +HSPLandroidx/core/graphics/TypefaceCompatUtil$Api19Impl;->openFileDescriptor(Landroid/content/ContentResolver;Landroid/net/Uri;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/os/ParcelFileDescriptor; +Landroidx/core/graphics/drawable/TintAwareDrawable; +Landroidx/core/hardware/fingerprint/FingerprintManagerCompat; +Landroidx/core/net/ConnectivityManagerCompat; +HSPLandroidx/core/net/ConnectivityManagerCompat;->isActiveNetworkMetered(Landroid/net/ConnectivityManager;)Z +Landroidx/core/net/ConnectivityManagerCompat$Api16Impl; +HSPLandroidx/core/net/ConnectivityManagerCompat$Api16Impl;->isActiveNetworkMetered(Landroid/net/ConnectivityManager;)Z +Landroidx/core/os/BundleKt; +HSPLandroidx/core/os/BundleKt;->bundleOf([Lkotlin/Pair;)Landroid/os/Bundle; +Landroidx/core/os/HandlerCompat; +HSPLandroidx/core/os/HandlerCompat;->createAsync(Landroid/os/Looper;)Landroid/os/Handler; +Landroidx/core/os/HandlerCompat$Api28Impl; +HSPLandroidx/core/os/HandlerCompat$Api28Impl;->createAsync(Landroid/os/Looper;)Landroid/os/Handler; +Landroidx/core/os/LocaleListCompat; +HSPLandroidx/core/os/LocaleListCompat;->()V +HSPLandroidx/core/os/LocaleListCompat;->(Landroidx/core/os/LocaleListInterface;)V +HSPLandroidx/core/os/LocaleListCompat;->create([Ljava/util/Locale;)Landroidx/core/os/LocaleListCompat; +HSPLandroidx/core/os/LocaleListCompat;->forLanguageTags(Ljava/lang/String;)Landroidx/core/os/LocaleListCompat; +HSPLandroidx/core/os/LocaleListCompat;->isEmpty()Z +HSPLandroidx/core/os/LocaleListCompat;->wrap(Landroid/os/LocaleList;)Landroidx/core/os/LocaleListCompat; +Landroidx/core/os/LocaleListCompat$$ExternalSyntheticApiModelOutline0; +HSPLandroidx/core/os/LocaleListCompat$$ExternalSyntheticApiModelOutline0;->m$1()V +HSPLandroidx/core/os/LocaleListCompat$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/view/WindowInsetsAnimation$Bounds;)Landroid/graphics/Insets; +HSPLandroidx/core/os/LocaleListCompat$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/view/WindowInsetsAnimation;)F +HSPLandroidx/core/os/LocaleListCompat$$ExternalSyntheticApiModelOutline0;->m()Landroid/view/WindowInsets$Builder; +HSPLandroidx/core/os/LocaleListCompat$$ExternalSyntheticApiModelOutline0;->m(ILandroid/view/animation/Interpolator;J)Landroid/view/WindowInsetsAnimation; +HSPLandroidx/core/os/LocaleListCompat$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/Insets;Landroid/graphics/Insets;)Landroid/view/WindowInsetsAnimation$Bounds; +HSPLandroidx/core/os/LocaleListCompat$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/Typeface;IZ)Landroid/graphics/Typeface; +HSPLandroidx/core/os/LocaleListCompat$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/View;Landroid/view/WindowInsetsAnimation$Callback;)V +HSPLandroidx/core/os/LocaleListCompat$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/WindowInsets$Builder;)Landroid/view/WindowInsets; +HSPLandroidx/core/os/LocaleListCompat$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/WindowInsetsAnimation$Bounds;)Landroid/graphics/Insets; +HSPLandroidx/core/os/LocaleListCompat$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/WindowInsetsAnimation;)J +HSPLandroidx/core/os/LocaleListCompat$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/WindowInsetsAnimation;F)V +HSPLandroidx/core/os/LocaleListCompat$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/WindowInsetsController;II)V +HSPLandroidx/core/os/LocaleListCompat$$ExternalSyntheticApiModelOutline0;->m(Ljava/lang/Object;)Landroid/view/WindowInsetsAnimation; +Landroidx/core/os/LocaleListCompat$Api21Impl; +HSPLandroidx/core/os/LocaleListCompat$Api21Impl;->()V +HSPLandroidx/core/os/LocaleListCompat$Api21Impl;->forLanguageTag(Ljava/lang/String;)Ljava/util/Locale; +Landroidx/core/os/LocaleListCompat$Api24Impl; +HSPLandroidx/core/os/LocaleListCompat$Api24Impl;->createLocaleList([Ljava/util/Locale;)Landroid/os/LocaleList; +Landroidx/core/os/LocaleListInterface; +Landroidx/core/os/LocaleListPlatformWrapper; +HSPLandroidx/core/os/LocaleListPlatformWrapper;->(Ljava/lang/Object;)V +HSPLandroidx/core/os/LocaleListPlatformWrapper;->isEmpty()Z +Landroidx/core/os/TraceCompat; +HSPLandroidx/core/os/TraceCompat;->()V +HSPLandroidx/core/os/TraceCompat;->beginSection(Ljava/lang/String;)V +HSPLandroidx/core/os/TraceCompat;->endSection()V +Landroidx/core/os/TraceCompat$Api18Impl; +HSPLandroidx/core/os/TraceCompat$Api18Impl;->beginSection(Ljava/lang/String;)V +HSPLandroidx/core/os/TraceCompat$Api18Impl;->endSection()V +Landroidx/core/os/UserManagerCompat; +HSPLandroidx/core/os/UserManagerCompat;->isUserUnlocked(Landroid/content/Context;)Z +Landroidx/core/os/UserManagerCompat$Api24Impl; +HSPLandroidx/core/os/UserManagerCompat$Api24Impl;->isUserUnlocked(Landroid/content/Context;)Z +Landroidx/core/provider/FontProvider; +HSPLandroidx/core/provider/FontProvider;->()V +HSPLandroidx/core/provider/FontProvider;->convertToByteArrayList([Landroid/content/pm/Signature;)Ljava/util/List; +HSPLandroidx/core/provider/FontProvider;->equalsByteArrayList(Ljava/util/List;Ljava/util/List;)Z +HSPLandroidx/core/provider/FontProvider;->getCertificates(Landroidx/core/provider/FontRequest;Landroid/content/res/Resources;)Ljava/util/List; +HSPLandroidx/core/provider/FontProvider;->getFontFamilyResult(Landroid/content/Context;Landroidx/core/provider/FontRequest;Landroid/os/CancellationSignal;)Landroidx/core/provider/FontsContractCompat$FontFamilyResult; +HSPLandroidx/core/provider/FontProvider;->getProvider(Landroid/content/pm/PackageManager;Landroidx/core/provider/FontRequest;Landroid/content/res/Resources;)Landroid/content/pm/ProviderInfo; +HSPLandroidx/core/provider/FontProvider;->query(Landroid/content/Context;Landroidx/core/provider/FontRequest;Ljava/lang/String;Landroid/os/CancellationSignal;)[Landroidx/core/provider/FontsContractCompat$FontInfo; +Landroidx/core/provider/FontProvider$$ExternalSyntheticLambda0; +HSPLandroidx/core/provider/FontProvider$$ExternalSyntheticLambda0;->()V +Landroidx/core/provider/FontProvider$Api16Impl; +HSPLandroidx/core/provider/FontProvider$Api16Impl;->query(Landroid/content/ContentResolver;Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)Landroid/database/Cursor; +Landroidx/core/provider/FontRequest; +HSPLandroidx/core/provider/FontRequest;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)V +HSPLandroidx/core/provider/FontRequest;->createIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroidx/core/provider/FontRequest;->getCertificates()Ljava/util/List; +HSPLandroidx/core/provider/FontRequest;->getProviderAuthority()Ljava/lang/String; +HSPLandroidx/core/provider/FontRequest;->getProviderPackage()Ljava/lang/String; +HSPLandroidx/core/provider/FontRequest;->getQuery()Ljava/lang/String; +Landroidx/core/provider/FontsContractCompat; +HSPLandroidx/core/provider/FontsContractCompat;->buildTypeface(Landroid/content/Context;Landroid/os/CancellationSignal;[Landroidx/core/provider/FontsContractCompat$FontInfo;)Landroid/graphics/Typeface; +HSPLandroidx/core/provider/FontsContractCompat;->fetchFonts(Landroid/content/Context;Landroid/os/CancellationSignal;Landroidx/core/provider/FontRequest;)Landroidx/core/provider/FontsContractCompat$FontFamilyResult; +Landroidx/core/provider/FontsContractCompat$FontFamilyResult; +HSPLandroidx/core/provider/FontsContractCompat$FontFamilyResult;->(I[Landroidx/core/provider/FontsContractCompat$FontInfo;)V +HSPLandroidx/core/provider/FontsContractCompat$FontFamilyResult;->create(I[Landroidx/core/provider/FontsContractCompat$FontInfo;)Landroidx/core/provider/FontsContractCompat$FontFamilyResult; +HSPLandroidx/core/provider/FontsContractCompat$FontFamilyResult;->getFonts()[Landroidx/core/provider/FontsContractCompat$FontInfo; +HSPLandroidx/core/provider/FontsContractCompat$FontFamilyResult;->getStatusCode()I +Landroidx/core/provider/FontsContractCompat$FontInfo; +HSPLandroidx/core/provider/FontsContractCompat$FontInfo;->(Landroid/net/Uri;IIZI)V +HSPLandroidx/core/provider/FontsContractCompat$FontInfo;->create(Landroid/net/Uri;IIZI)Landroidx/core/provider/FontsContractCompat$FontInfo; +HSPLandroidx/core/provider/FontsContractCompat$FontInfo;->getResultCode()I +HSPLandroidx/core/provider/FontsContractCompat$FontInfo;->getTtcIndex()I +HSPLandroidx/core/provider/FontsContractCompat$FontInfo;->getUri()Landroid/net/Uri; +HSPLandroidx/core/provider/FontsContractCompat$FontInfo;->getWeight()I +HSPLandroidx/core/provider/FontsContractCompat$FontInfo;->isItalic()Z +Landroidx/core/splashscreen/R$attr; +Landroidx/core/splashscreen/SplashScreen; +HSPLandroidx/core/splashscreen/SplashScreen;->()V +HSPLandroidx/core/splashscreen/SplashScreen;->(Landroid/app/Activity;)V +HSPLandroidx/core/splashscreen/SplashScreen;->(Landroid/app/Activity;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/core/splashscreen/SplashScreen;->access$install(Landroidx/core/splashscreen/SplashScreen;)V +HSPLandroidx/core/splashscreen/SplashScreen;->install()V +Landroidx/core/splashscreen/SplashScreen$Companion; +HSPLandroidx/core/splashscreen/SplashScreen$Companion;->()V +HSPLandroidx/core/splashscreen/SplashScreen$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/core/splashscreen/SplashScreen$Companion;->installSplashScreen(Landroid/app/Activity;)Landroidx/core/splashscreen/SplashScreen; +Landroidx/core/splashscreen/SplashScreen$Impl; +HSPLandroidx/core/splashscreen/SplashScreen$Impl;->(Landroid/app/Activity;)V +HSPLandroidx/core/splashscreen/SplashScreen$Impl;->getActivity()Landroid/app/Activity; +HSPLandroidx/core/splashscreen/SplashScreen$Impl;->setPostSplashScreenTheme(Landroid/content/res/Resources$Theme;Landroid/util/TypedValue;)V +Landroidx/core/splashscreen/SplashScreen$Impl$$ExternalSyntheticLambda1; +HSPLandroidx/core/splashscreen/SplashScreen$Impl$$ExternalSyntheticLambda1;->()V +Landroidx/core/splashscreen/SplashScreen$Impl31; +HSPLandroidx/core/splashscreen/SplashScreen$Impl31;->(Landroid/app/Activity;)V +HSPLandroidx/core/splashscreen/SplashScreen$Impl31;->install()V +Landroidx/core/splashscreen/SplashScreen$Impl31$hierarchyListener$1; +HSPLandroidx/core/splashscreen/SplashScreen$Impl31$hierarchyListener$1;->(Landroidx/core/splashscreen/SplashScreen$Impl31;Landroid/app/Activity;)V +Landroidx/core/splashscreen/SplashScreen$KeepOnScreenCondition; +Landroidx/core/text/TextUtilsCompat; +HSPLandroidx/core/text/TextUtilsCompat;->()V +HSPLandroidx/core/text/TextUtilsCompat;->getLayoutDirectionFromLocale(Ljava/util/Locale;)I +Landroidx/core/text/TextUtilsCompat$Api17Impl; +HSPLandroidx/core/text/TextUtilsCompat$Api17Impl;->getLayoutDirectionFromLocale(Ljava/util/Locale;)I +Landroidx/core/util/Consumer; +Landroidx/core/util/Preconditions; +HSPLandroidx/core/util/Preconditions;->checkArgument(ZLjava/lang/Object;)V +HSPLandroidx/core/util/Preconditions;->checkArgumentNonnegative(ILjava/lang/String;)I +HSPLandroidx/core/util/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/core/util/Preconditions;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/core/util/Preconditions;->checkState(ZLjava/lang/String;)V +Landroidx/core/view/AccessibilityDelegateCompat; +HSPLandroidx/core/view/AccessibilityDelegateCompat;->()V +HSPLandroidx/core/view/AccessibilityDelegateCompat;->()V +HSPLandroidx/core/view/AccessibilityDelegateCompat;->(Landroid/view/View$AccessibilityDelegate;)V +HSPLandroidx/core/view/AccessibilityDelegateCompat;->dispatchPopulateAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z +HSPLandroidx/core/view/AccessibilityDelegateCompat;->getBridge()Landroid/view/View$AccessibilityDelegate; +HSPLandroidx/core/view/AccessibilityDelegateCompat;->onInitializeAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V +HSPLandroidx/core/view/AccessibilityDelegateCompat;->onPopulateAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V +HSPLandroidx/core/view/AccessibilityDelegateCompat;->onRequestSendAccessibilityEvent(Landroid/view/ViewGroup;Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z +HSPLandroidx/core/view/AccessibilityDelegateCompat;->sendAccessibilityEvent(Landroid/view/View;I)V +HSPLandroidx/core/view/AccessibilityDelegateCompat;->sendAccessibilityEventUnchecked(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V +Landroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter; +HSPLandroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter;->(Landroidx/core/view/AccessibilityDelegateCompat;)V +HSPLandroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter;->dispatchPopulateAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z +HSPLandroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter;->getAccessibilityNodeProvider(Landroid/view/View;)Landroid/view/accessibility/AccessibilityNodeProvider; +HSPLandroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter;->onInitializeAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V +HSPLandroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter;->onPopulateAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V +HSPLandroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter;->onRequestSendAccessibilityEvent(Landroid/view/ViewGroup;Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z +HSPLandroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter;->sendAccessibilityEvent(Landroid/view/View;I)V +HSPLandroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter;->sendAccessibilityEventUnchecked(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V +Landroidx/core/view/DisplayCutoutCompat; +HSPLandroidx/core/view/DisplayCutoutCompat;->(Landroid/view/DisplayCutout;)V +HSPLandroidx/core/view/DisplayCutoutCompat;->getWaterfallInsets()Landroidx/core/graphics/Insets; +HSPLandroidx/core/view/DisplayCutoutCompat;->wrap(Landroid/view/DisplayCutout;)Landroidx/core/view/DisplayCutoutCompat; +Landroidx/core/view/DisplayCutoutCompat$Api30Impl; +HSPLandroidx/core/view/DisplayCutoutCompat$Api30Impl;->getWaterfallInsets(Landroid/view/DisplayCutout;)Landroid/graphics/Insets; +Landroidx/core/view/KeyEventDispatcher$Component; +Landroidx/core/view/LayoutInflaterCompat; +HSPLandroidx/core/view/LayoutInflaterCompat;->setFactory2(Landroid/view/LayoutInflater;Landroid/view/LayoutInflater$Factory2;)V +Landroidx/core/view/MenuHost; +Landroidx/core/view/MenuHostHelper; +HSPLandroidx/core/view/MenuHostHelper;->(Ljava/lang/Runnable;)V +HSPLandroidx/core/view/MenuHostHelper;->addMenuProvider(Landroidx/core/view/MenuProvider;)V +Landroidx/core/view/MenuProvider; +Landroidx/core/view/NestedScrollingParent; +Landroidx/core/view/NestedScrollingParent2; +Landroidx/core/view/NestedScrollingParent3; +Landroidx/core/view/OnApplyWindowInsetsListener; +Landroidx/core/view/OnReceiveContentViewBehavior; +Landroidx/core/view/SoftwareKeyboardControllerCompat; +HSPLandroidx/core/view/SoftwareKeyboardControllerCompat;->(Landroid/view/View;)V +Landroidx/core/view/SoftwareKeyboardControllerCompat$Impl; +HSPLandroidx/core/view/SoftwareKeyboardControllerCompat$Impl;->()V +Landroidx/core/view/SoftwareKeyboardControllerCompat$Impl20; +HSPLandroidx/core/view/SoftwareKeyboardControllerCompat$Impl20;->(Landroid/view/View;)V +Landroidx/core/view/SoftwareKeyboardControllerCompat$Impl30; +HSPLandroidx/core/view/SoftwareKeyboardControllerCompat$Impl30;->(Landroid/view/View;)V +Landroidx/core/view/ViewCompat; +HSPLandroidx/core/view/ViewCompat;->()V +HSPLandroidx/core/view/ViewCompat;->getImportantForAccessibility(Landroid/view/View;)I +HSPLandroidx/core/view/ViewCompat;->getParentForAccessibility(Landroid/view/View;)Landroid/view/ViewParent; +HSPLandroidx/core/view/ViewCompat;->getRootWindowInsets(Landroid/view/View;)Landroidx/core/view/WindowInsetsCompat; +HSPLandroidx/core/view/ViewCompat;->isAttachedToWindow(Landroid/view/View;)Z +HSPLandroidx/core/view/ViewCompat;->isLaidOut(Landroid/view/View;)Z +HSPLandroidx/core/view/ViewCompat;->onApplyWindowInsets(Landroid/view/View;Landroidx/core/view/WindowInsetsCompat;)Landroidx/core/view/WindowInsetsCompat; +HSPLandroidx/core/view/ViewCompat;->postOnAnimation(Landroid/view/View;Ljava/lang/Runnable;)V +HSPLandroidx/core/view/ViewCompat;->setAccessibilityDelegate(Landroid/view/View;Landroidx/core/view/AccessibilityDelegateCompat;)V +HSPLandroidx/core/view/ViewCompat;->setImportantForAccessibility(Landroid/view/View;I)V +HSPLandroidx/core/view/ViewCompat;->setImportantForAccessibilityIfNeeded(Landroid/view/View;)V +HSPLandroidx/core/view/ViewCompat;->setOnApplyWindowInsetsListener(Landroid/view/View;Landroidx/core/view/OnApplyWindowInsetsListener;)V +HSPLandroidx/core/view/ViewCompat;->setWindowInsetsAnimationCallback(Landroid/view/View;Landroidx/core/view/WindowInsetsAnimationCompat$Callback;)V +Landroidx/core/view/ViewCompat$$ExternalSyntheticLambda0; +HSPLandroidx/core/view/ViewCompat$$ExternalSyntheticLambda0;->()V +Landroidx/core/view/ViewCompat$AccessibilityPaneVisibilityManager; +HSPLandroidx/core/view/ViewCompat$AccessibilityPaneVisibilityManager;->()V +Landroidx/core/view/ViewCompat$Api16Impl; +HSPLandroidx/core/view/ViewCompat$Api16Impl;->getImportantForAccessibility(Landroid/view/View;)I +HSPLandroidx/core/view/ViewCompat$Api16Impl;->getParentForAccessibility(Landroid/view/View;)Landroid/view/ViewParent; +HSPLandroidx/core/view/ViewCompat$Api16Impl;->postOnAnimation(Landroid/view/View;Ljava/lang/Runnable;)V +HSPLandroidx/core/view/ViewCompat$Api16Impl;->setImportantForAccessibility(Landroid/view/View;I)V +Landroidx/core/view/ViewCompat$Api19Impl; +HSPLandroidx/core/view/ViewCompat$Api19Impl;->isAttachedToWindow(Landroid/view/View;)Z +HSPLandroidx/core/view/ViewCompat$Api19Impl;->isLaidOut(Landroid/view/View;)Z +Landroidx/core/view/ViewCompat$Api20Impl; +HSPLandroidx/core/view/ViewCompat$Api20Impl;->onApplyWindowInsets(Landroid/view/View;Landroid/view/WindowInsets;)Landroid/view/WindowInsets; +Landroidx/core/view/ViewCompat$Api21Impl; +HSPLandroidx/core/view/ViewCompat$Api21Impl;->setOnApplyWindowInsetsListener(Landroid/view/View;Landroidx/core/view/OnApplyWindowInsetsListener;)V +Landroidx/core/view/ViewCompat$Api21Impl$1; +HSPLandroidx/core/view/ViewCompat$Api21Impl$1;->(Landroid/view/View;Landroidx/core/view/OnApplyWindowInsetsListener;)V +HSPLandroidx/core/view/ViewCompat$Api21Impl$1;->onApplyWindowInsets(Landroid/view/View;Landroid/view/WindowInsets;)Landroid/view/WindowInsets; +Landroidx/core/view/ViewCompat$Api23Impl; +HSPLandroidx/core/view/ViewCompat$Api23Impl;->getRootWindowInsets(Landroid/view/View;)Landroidx/core/view/WindowInsetsCompat; +Landroidx/core/view/ViewPropertyAnimatorCompat; +Landroidx/core/view/WindowCompat; +HSPLandroidx/core/view/WindowCompat;->getInsetsController(Landroid/view/Window;Landroid/view/View;)Landroidx/core/view/WindowInsetsControllerCompat; +HSPLandroidx/core/view/WindowCompat;->setDecorFitsSystemWindows(Landroid/view/Window;Z)V +Landroidx/core/view/WindowCompat$Api30Impl; +HSPLandroidx/core/view/WindowCompat$Api30Impl;->setDecorFitsSystemWindows(Landroid/view/Window;Z)V +Landroidx/core/view/WindowInsetsAnimationCompat; +HSPLandroidx/core/view/WindowInsetsAnimationCompat;->(ILandroid/view/animation/Interpolator;J)V +HSPLandroidx/core/view/WindowInsetsAnimationCompat;->(Landroid/view/WindowInsetsAnimation;)V +HSPLandroidx/core/view/WindowInsetsAnimationCompat;->getDurationMillis()J +HSPLandroidx/core/view/WindowInsetsAnimationCompat;->setCallback(Landroid/view/View;Landroidx/core/view/WindowInsetsAnimationCompat$Callback;)V +HSPLandroidx/core/view/WindowInsetsAnimationCompat;->setFraction(F)V +HSPLandroidx/core/view/WindowInsetsAnimationCompat;->toWindowInsetsAnimationCompat(Landroid/view/WindowInsetsAnimation;)Landroidx/core/view/WindowInsetsAnimationCompat; +Landroidx/core/view/WindowInsetsAnimationCompat$BoundsCompat; +HSPLandroidx/core/view/WindowInsetsAnimationCompat$BoundsCompat;->(Landroid/view/WindowInsetsAnimation$Bounds;)V +HSPLandroidx/core/view/WindowInsetsAnimationCompat$BoundsCompat;->getLowerBound()Landroidx/core/graphics/Insets; +HSPLandroidx/core/view/WindowInsetsAnimationCompat$BoundsCompat;->getUpperBound()Landroidx/core/graphics/Insets; +HSPLandroidx/core/view/WindowInsetsAnimationCompat$BoundsCompat;->toBounds()Landroid/view/WindowInsetsAnimation$Bounds; +HSPLandroidx/core/view/WindowInsetsAnimationCompat$BoundsCompat;->toBoundsCompat(Landroid/view/WindowInsetsAnimation$Bounds;)Landroidx/core/view/WindowInsetsAnimationCompat$BoundsCompat; +Landroidx/core/view/WindowInsetsAnimationCompat$Callback; +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Callback;->(I)V +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Callback;->getDispatchMode()I +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Callback;->onEnd(Landroidx/core/view/WindowInsetsAnimationCompat;)V +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Callback;->onPrepare(Landroidx/core/view/WindowInsetsAnimationCompat;)V +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Callback;->onStart(Landroidx/core/view/WindowInsetsAnimationCompat;Landroidx/core/view/WindowInsetsAnimationCompat$BoundsCompat;)Landroidx/core/view/WindowInsetsAnimationCompat$BoundsCompat; +Landroidx/core/view/WindowInsetsAnimationCompat$Impl; +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Impl;->(ILandroid/view/animation/Interpolator;J)V +Landroidx/core/view/WindowInsetsAnimationCompat$Impl30; +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Impl30;->(ILandroid/view/animation/Interpolator;J)V +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Impl30;->(Landroid/view/WindowInsetsAnimation;)V +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Impl30;->createPlatformBounds(Landroidx/core/view/WindowInsetsAnimationCompat$BoundsCompat;)Landroid/view/WindowInsetsAnimation$Bounds; +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Impl30;->getDurationMillis()J +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Impl30;->getHigherBounds(Landroid/view/WindowInsetsAnimation$Bounds;)Landroidx/core/graphics/Insets; +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Impl30;->getLowerBounds(Landroid/view/WindowInsetsAnimation$Bounds;)Landroidx/core/graphics/Insets; +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Impl30;->setCallback(Landroid/view/View;Landroidx/core/view/WindowInsetsAnimationCompat$Callback;)V +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Impl30;->setFraction(F)V +Landroidx/core/view/WindowInsetsAnimationCompat$Impl30$ProxyCallback; +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Impl30$ProxyCallback;->(Landroidx/core/view/WindowInsetsAnimationCompat$Callback;)V +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Impl30$ProxyCallback;->getWindowInsetsAnimationCompat(Landroid/view/WindowInsetsAnimation;)Landroidx/core/view/WindowInsetsAnimationCompat; +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Impl30$ProxyCallback;->onEnd(Landroid/view/WindowInsetsAnimation;)V +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Impl30$ProxyCallback;->onPrepare(Landroid/view/WindowInsetsAnimation;)V +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Impl30$ProxyCallback;->onProgress(Landroid/view/WindowInsets;Ljava/util/List;)Landroid/view/WindowInsets; +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Impl30$ProxyCallback;->onStart(Landroid/view/WindowInsetsAnimation;Landroid/view/WindowInsetsAnimation$Bounds;)Landroid/view/WindowInsetsAnimation$Bounds; +Landroidx/core/view/WindowInsetsCompat; +HSPLandroidx/core/view/WindowInsetsCompat;->()V +HSPLandroidx/core/view/WindowInsetsCompat;->(Landroid/view/WindowInsets;)V +HSPLandroidx/core/view/WindowInsetsCompat;->(Landroidx/core/view/WindowInsetsCompat;)V +HSPLandroidx/core/view/WindowInsetsCompat;->consumeDisplayCutout()Landroidx/core/view/WindowInsetsCompat; +HSPLandroidx/core/view/WindowInsetsCompat;->consumeStableInsets()Landroidx/core/view/WindowInsetsCompat; +HSPLandroidx/core/view/WindowInsetsCompat;->consumeSystemWindowInsets()Landroidx/core/view/WindowInsetsCompat; +HSPLandroidx/core/view/WindowInsetsCompat;->copyRootViewBounds(Landroid/view/View;)V +HSPLandroidx/core/view/WindowInsetsCompat;->getDisplayCutout()Landroidx/core/view/DisplayCutoutCompat; +HSPLandroidx/core/view/WindowInsetsCompat;->getInsets(I)Landroidx/core/graphics/Insets; +HSPLandroidx/core/view/WindowInsetsCompat;->getInsetsIgnoringVisibility(I)Landroidx/core/graphics/Insets; +HSPLandroidx/core/view/WindowInsetsCompat;->getSystemWindowInsetTop()I +HSPLandroidx/core/view/WindowInsetsCompat;->isVisible(I)Z +HSPLandroidx/core/view/WindowInsetsCompat;->setOverriddenInsets([Landroidx/core/graphics/Insets;)V +HSPLandroidx/core/view/WindowInsetsCompat;->setRootWindowInsets(Landroidx/core/view/WindowInsetsCompat;)V +HSPLandroidx/core/view/WindowInsetsCompat;->toWindowInsets()Landroid/view/WindowInsets; +HSPLandroidx/core/view/WindowInsetsCompat;->toWindowInsetsCompat(Landroid/view/WindowInsets;)Landroidx/core/view/WindowInsetsCompat; +HSPLandroidx/core/view/WindowInsetsCompat;->toWindowInsetsCompat(Landroid/view/WindowInsets;Landroid/view/View;)Landroidx/core/view/WindowInsetsCompat; +Landroidx/core/view/WindowInsetsCompat$Builder; +HSPLandroidx/core/view/WindowInsetsCompat$Builder;->()V +HSPLandroidx/core/view/WindowInsetsCompat$Builder;->build()Landroidx/core/view/WindowInsetsCompat; +Landroidx/core/view/WindowInsetsCompat$BuilderImpl; +HSPLandroidx/core/view/WindowInsetsCompat$BuilderImpl;->()V +HSPLandroidx/core/view/WindowInsetsCompat$BuilderImpl;->(Landroidx/core/view/WindowInsetsCompat;)V +HSPLandroidx/core/view/WindowInsetsCompat$BuilderImpl;->applyInsetTypes()V +Landroidx/core/view/WindowInsetsCompat$BuilderImpl29; +HSPLandroidx/core/view/WindowInsetsCompat$BuilderImpl29;->()V +HSPLandroidx/core/view/WindowInsetsCompat$BuilderImpl29;->build()Landroidx/core/view/WindowInsetsCompat; +Landroidx/core/view/WindowInsetsCompat$BuilderImpl30; +HSPLandroidx/core/view/WindowInsetsCompat$BuilderImpl30;->()V +Landroidx/core/view/WindowInsetsCompat$Impl; +HSPLandroidx/core/view/WindowInsetsCompat$Impl;->()V +HSPLandroidx/core/view/WindowInsetsCompat$Impl;->(Landroidx/core/view/WindowInsetsCompat;)V +Landroidx/core/view/WindowInsetsCompat$Impl20; +HSPLandroidx/core/view/WindowInsetsCompat$Impl20;->()V +HSPLandroidx/core/view/WindowInsetsCompat$Impl20;->(Landroidx/core/view/WindowInsetsCompat;Landroid/view/WindowInsets;)V +HSPLandroidx/core/view/WindowInsetsCompat$Impl20;->getSystemWindowInsets()Landroidx/core/graphics/Insets; +HSPLandroidx/core/view/WindowInsetsCompat$Impl20;->setOverriddenInsets([Landroidx/core/graphics/Insets;)V +HSPLandroidx/core/view/WindowInsetsCompat$Impl20;->setRootWindowInsets(Landroidx/core/view/WindowInsetsCompat;)V +Landroidx/core/view/WindowInsetsCompat$Impl21; +HSPLandroidx/core/view/WindowInsetsCompat$Impl21;->(Landroidx/core/view/WindowInsetsCompat;Landroid/view/WindowInsets;)V +HSPLandroidx/core/view/WindowInsetsCompat$Impl21;->consumeStableInsets()Landroidx/core/view/WindowInsetsCompat; +HSPLandroidx/core/view/WindowInsetsCompat$Impl21;->consumeSystemWindowInsets()Landroidx/core/view/WindowInsetsCompat; +Landroidx/core/view/WindowInsetsCompat$Impl28; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28;->(Landroidx/core/view/WindowInsetsCompat;Landroid/view/WindowInsets;)V +HSPLandroidx/core/view/WindowInsetsCompat$Impl28;->consumeDisplayCutout()Landroidx/core/view/WindowInsetsCompat; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28;->getDisplayCutout()Landroidx/core/view/DisplayCutoutCompat; +Landroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$1()I +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$1()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/view/WindowInsets;I)Landroid/graphics/Insets; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/view/accessibility/AccessibilityNodeInfo;Ljava/lang/CharSequence;)V +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$10()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$11()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$12()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$2()I +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$2()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$2(Landroid/view/accessibility/AccessibilityNodeInfo;Z)V +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$3()I +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$3()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$4()I +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$4()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$5()I +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$5()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$6()I +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$6()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$7()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$8()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$9()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m()I +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m()Landroid/view/WindowInsets; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/Window;)Landroid/view/WindowInsetsController; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/WindowInsets;)Landroid/view/DisplayCutout; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/WindowInsets;)Landroid/view/WindowInsets; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/WindowInsets;I)Landroid/graphics/Insets; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/WindowInsets;I)Z +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/WindowInsetsController;)I +Landroidx/core/view/WindowInsetsCompat$Impl29; +HSPLandroidx/core/view/WindowInsetsCompat$Impl29;->(Landroidx/core/view/WindowInsetsCompat;Landroid/view/WindowInsets;)V +Landroidx/core/view/WindowInsetsCompat$Impl30; +HSPLandroidx/core/view/WindowInsetsCompat$Impl30;->()V +HSPLandroidx/core/view/WindowInsetsCompat$Impl30;->(Landroidx/core/view/WindowInsetsCompat;Landroid/view/WindowInsets;)V +HSPLandroidx/core/view/WindowInsetsCompat$Impl30;->copyRootViewBounds(Landroid/view/View;)V +HSPLandroidx/core/view/WindowInsetsCompat$Impl30;->getInsets(I)Landroidx/core/graphics/Insets; +HSPLandroidx/core/view/WindowInsetsCompat$Impl30;->getInsetsIgnoringVisibility(I)Landroidx/core/graphics/Insets; +HSPLandroidx/core/view/WindowInsetsCompat$Impl30;->isVisible(I)Z +Landroidx/core/view/WindowInsetsCompat$Type; +HSPLandroidx/core/view/WindowInsetsCompat$Type;->captionBar()I +HSPLandroidx/core/view/WindowInsetsCompat$Type;->displayCutout()I +HSPLandroidx/core/view/WindowInsetsCompat$Type;->ime()I +HSPLandroidx/core/view/WindowInsetsCompat$Type;->mandatorySystemGestures()I +HSPLandroidx/core/view/WindowInsetsCompat$Type;->navigationBars()I +HSPLandroidx/core/view/WindowInsetsCompat$Type;->statusBars()I +HSPLandroidx/core/view/WindowInsetsCompat$Type;->systemBars()I +HSPLandroidx/core/view/WindowInsetsCompat$Type;->systemGestures()I +HSPLandroidx/core/view/WindowInsetsCompat$Type;->tappableElement()I +Landroidx/core/view/WindowInsetsCompat$TypeImpl30; +HSPLandroidx/core/view/WindowInsetsCompat$TypeImpl30;->toPlatformType(I)I +Landroidx/core/view/WindowInsetsControllerCompat; +HSPLandroidx/core/view/WindowInsetsControllerCompat;->(Landroid/view/Window;Landroid/view/View;)V +HSPLandroidx/core/view/WindowInsetsControllerCompat;->isAppearanceLightNavigationBars()Z +HSPLandroidx/core/view/WindowInsetsControllerCompat;->isAppearanceLightStatusBars()Z +HSPLandroidx/core/view/WindowInsetsControllerCompat;->setAppearanceLightNavigationBars(Z)V +HSPLandroidx/core/view/WindowInsetsControllerCompat;->setAppearanceLightStatusBars(Z)V +Landroidx/core/view/WindowInsetsControllerCompat$Impl; +HSPLandroidx/core/view/WindowInsetsControllerCompat$Impl;->()V +Landroidx/core/view/WindowInsetsControllerCompat$Impl30; +HSPLandroidx/core/view/WindowInsetsControllerCompat$Impl30;->(Landroid/view/Window;Landroidx/core/view/WindowInsetsControllerCompat;Landroidx/core/view/SoftwareKeyboardControllerCompat;)V +HSPLandroidx/core/view/WindowInsetsControllerCompat$Impl30;->(Landroid/view/WindowInsetsController;Landroidx/core/view/WindowInsetsControllerCompat;Landroidx/core/view/SoftwareKeyboardControllerCompat;)V +HSPLandroidx/core/view/WindowInsetsControllerCompat$Impl30;->isAppearanceLightNavigationBars()Z +HSPLandroidx/core/view/WindowInsetsControllerCompat$Impl30;->isAppearanceLightStatusBars()Z +HSPLandroidx/core/view/WindowInsetsControllerCompat$Impl30;->setAppearanceLightNavigationBars(Z)V +HSPLandroidx/core/view/WindowInsetsControllerCompat$Impl30;->setAppearanceLightStatusBars(Z)V +HSPLandroidx/core/view/WindowInsetsControllerCompat$Impl30;->setSystemUiFlag(I)V +Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat; +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->()V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->(Landroid/view/accessibility/AccessibilityNodeInfo;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->addAction(I)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->addAction(Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->addChild(Landroid/view/View;I)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->extrasIntList(Ljava/lang/String;)Ljava/util/List; +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->getMovementGranularities()I +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->getText()Ljava/lang/CharSequence; +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->hasSpans()Z +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->isFocusable()Z +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->isFocused()Z +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->obtain()Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat; +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setAccessibilityFocused(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setBoundsInScreen(Landroid/graphics/Rect;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setCheckable(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setClassName(Ljava/lang/CharSequence;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setClickable(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setCollectionInfo(Ljava/lang/Object;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setCollectionItemInfo(Ljava/lang/Object;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setContentDescription(Ljava/lang/CharSequence;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setEditable(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setEnabled(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setFocusable(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setFocused(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setImportantForAccessibility(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setLongClickable(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setMovementGranularities(I)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setPackageName(Ljava/lang/CharSequence;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setPaneTitle(Ljava/lang/CharSequence;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setParent(Landroid/view/View;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setParent(Landroid/view/View;I)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setPassword(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setRoleDescription(Ljava/lang/CharSequence;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setScreenReaderFocusable(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setSelected(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setSource(Landroid/view/View;I)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setStateDescription(Ljava/lang/CharSequence;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setText(Ljava/lang/CharSequence;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setTextSelection(II)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setTraversalBefore(Landroid/view/View;I)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setViewIdResourceName(Ljava/lang/String;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setVisibleToUser(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->unwrap()Landroid/view/accessibility/AccessibilityNodeInfo; +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->wrap(Landroid/view/accessibility/AccessibilityNodeInfo;)Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat; +Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat; +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat;->()V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat;->(ILjava/lang/CharSequence;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat;->(ILjava/lang/CharSequence;Ljava/lang/Class;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat;->(Ljava/lang/Object;ILjava/lang/CharSequence;Landroidx/core/view/accessibility/AccessibilityViewCommand;Ljava/lang/Class;)V +Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$Api19Impl; +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$Api19Impl;->getExtras(Landroid/view/accessibility/AccessibilityNodeInfo;)Landroid/os/Bundle; +Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$Api30Impl; +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$Api30Impl;->setStateDescription(Landroid/view/accessibility/AccessibilityNodeInfo;Ljava/lang/CharSequence;)V +Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$CollectionInfoCompat; +PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$CollectionInfoCompat;->(Ljava/lang/Object;)V +PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$CollectionInfoCompat;->obtain(IIZI)Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$CollectionInfoCompat; +Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$CollectionItemInfoCompat; +PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$CollectionItemInfoCompat;->(Ljava/lang/Object;)V +PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$CollectionItemInfoCompat;->obtain(IIIIZZ)Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$CollectionItemInfoCompat; +Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$RangeInfoCompat; +Landroidx/core/view/accessibility/AccessibilityNodeProviderCompat; +HSPLandroidx/core/view/accessibility/AccessibilityNodeProviderCompat;->(Ljava/lang/Object;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeProviderCompat;->getProvider()Ljava/lang/Object; +Landroidx/core/view/accessibility/AccessibilityViewCommand; +Landroidx/core/view/accessibility/AccessibilityViewCommand$CommandArguments; +Landroidx/core/view/accessibility/AccessibilityViewCommand$MoveAtGranularityArguments; +Landroidx/core/view/accessibility/AccessibilityViewCommand$MoveHtmlArguments; +Landroidx/core/view/accessibility/AccessibilityViewCommand$MoveWindowArguments; +Landroidx/core/view/accessibility/AccessibilityViewCommand$ScrollToPositionArguments; +Landroidx/core/view/accessibility/AccessibilityViewCommand$SetProgressArguments; +Landroidx/core/view/accessibility/AccessibilityViewCommand$SetSelectionArguments; +Landroidx/core/view/accessibility/AccessibilityViewCommand$SetTextArguments; +Landroidx/core/view/inputmethod/EditorInfoCompat; +HSPLandroidx/core/view/inputmethod/EditorInfoCompat;->()V +HSPLandroidx/core/view/inputmethod/EditorInfoCompat;->setInitialSurroundingText(Landroid/view/inputmethod/EditorInfo;Ljava/lang/CharSequence;)V +Landroidx/core/view/inputmethod/EditorInfoCompat$Api30Impl; +HSPLandroidx/core/view/inputmethod/EditorInfoCompat$Api30Impl;->setInitialSurroundingSubText(Landroid/view/inputmethod/EditorInfo;Ljava/lang/CharSequence;I)V +Landroidx/credentials/provider/Action$Companion$$ExternalSyntheticApiModelOutline0; +HSPLandroidx/credentials/provider/Action$Companion$$ExternalSyntheticApiModelOutline0;->m(Landroid/app/Activity;Landroid/app/Application$ActivityLifecycleCallbacks;)V +HSPLandroidx/credentials/provider/Action$Companion$$ExternalSyntheticApiModelOutline0;->m(Landroid/os/Looper;)Landroid/os/Handler; +Landroidx/customview/poolingcontainer/PoolingContainer; +HSPLandroidx/customview/poolingcontainer/PoolingContainer;->()V +HSPLandroidx/customview/poolingcontainer/PoolingContainer;->addPoolingContainerListener(Landroid/view/View;Landroidx/customview/poolingcontainer/PoolingContainerListener;)V +HSPLandroidx/customview/poolingcontainer/PoolingContainer;->getPoolingContainerListenerHolder(Landroid/view/View;)Landroidx/customview/poolingcontainer/PoolingContainerListenerHolder; +Landroidx/customview/poolingcontainer/PoolingContainerListener; +Landroidx/customview/poolingcontainer/PoolingContainerListenerHolder; +HSPLandroidx/customview/poolingcontainer/PoolingContainerListenerHolder;->()V +HSPLandroidx/customview/poolingcontainer/PoolingContainerListenerHolder;->addListener(Landroidx/customview/poolingcontainer/PoolingContainerListener;)V +Landroidx/customview/poolingcontainer/R$id; +Landroidx/datastore/DataStoreFile; +HSPLandroidx/datastore/DataStoreFile;->dataStoreFile(Landroid/content/Context;Ljava/lang/String;)Ljava/io/File; +Landroidx/datastore/core/CorruptionException; +Landroidx/datastore/core/CorruptionHandler; +Landroidx/datastore/core/Data; +HSPLandroidx/datastore/core/Data;->(Ljava/lang/Object;I)V +HSPLandroidx/datastore/core/Data;->getValue()Ljava/lang/Object; +Landroidx/datastore/core/DataMigrationInitializer; +HSPLandroidx/datastore/core/DataMigrationInitializer;->()V +Landroidx/datastore/core/DataMigrationInitializer$Companion; +HSPLandroidx/datastore/core/DataMigrationInitializer$Companion;->()V +HSPLandroidx/datastore/core/DataMigrationInitializer$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/datastore/core/DataMigrationInitializer$Companion;->access$runMigrations(Landroidx/datastore/core/DataMigrationInitializer$Companion;Ljava/util/List;Landroidx/datastore/core/InitializerApi;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/datastore/core/DataMigrationInitializer$Companion;->getInitializer(Ljava/util/List;)Lkotlin/jvm/functions/Function2; +HSPLandroidx/datastore/core/DataMigrationInitializer$Companion;->runMigrations(Ljava/util/List;Landroidx/datastore/core/InitializerApi;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/datastore/core/DataMigrationInitializer$Companion$getInitializer$1; +HSPLandroidx/datastore/core/DataMigrationInitializer$Companion$getInitializer$1;->(Ljava/util/List;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/datastore/core/DataMigrationInitializer$Companion$getInitializer$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/datastore/core/DataMigrationInitializer$Companion$getInitializer$1;->invoke(Landroidx/datastore/core/InitializerApi;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/datastore/core/DataMigrationInitializer$Companion$getInitializer$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/datastore/core/DataMigrationInitializer$Companion$getInitializer$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/datastore/core/DataMigrationInitializer$Companion$runMigrations$1; +HSPLandroidx/datastore/core/DataMigrationInitializer$Companion$runMigrations$1;->(Landroidx/datastore/core/DataMigrationInitializer$Companion;Lkotlin/coroutines/Continuation;)V +Landroidx/datastore/core/DataMigrationInitializer$Companion$runMigrations$2; +HSPLandroidx/datastore/core/DataMigrationInitializer$Companion$runMigrations$2;->(Ljava/util/List;Ljava/util/List;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/datastore/core/DataMigrationInitializer$Companion$runMigrations$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/datastore/core/DataMigrationInitializer$Companion$runMigrations$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/datastore/core/DataMigrationInitializer$Companion$runMigrations$2;->invoke(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/datastore/core/DataMigrationInitializer$Companion$runMigrations$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/datastore/core/DataStore; +Landroidx/datastore/core/DataStoreFactory; +HSPLandroidx/datastore/core/DataStoreFactory;->()V +HSPLandroidx/datastore/core/DataStoreFactory;->()V +HSPLandroidx/datastore/core/DataStoreFactory;->create(Landroidx/datastore/core/Serializer;Landroidx/datastore/core/handlers/ReplaceFileCorruptionHandler;Ljava/util/List;Lkotlinx/coroutines/CoroutineScope;Lkotlin/jvm/functions/Function0;)Landroidx/datastore/core/DataStore; +Landroidx/datastore/core/Final; +Landroidx/datastore/core/InitializerApi; +Landroidx/datastore/core/ReadException; +Landroidx/datastore/core/Serializer; +Landroidx/datastore/core/SimpleActor; +HSPLandroidx/datastore/core/SimpleActor;->(Lkotlinx/coroutines/CoroutineScope;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/datastore/core/SimpleActor;->access$getConsumeMessage$p(Landroidx/datastore/core/SimpleActor;)Lkotlin/jvm/functions/Function2; +HSPLandroidx/datastore/core/SimpleActor;->access$getMessageQueue$p(Landroidx/datastore/core/SimpleActor;)Lkotlinx/coroutines/channels/Channel; +HSPLandroidx/datastore/core/SimpleActor;->access$getRemainingMessages$p(Landroidx/datastore/core/SimpleActor;)Ljava/util/concurrent/atomic/AtomicInteger; +HSPLandroidx/datastore/core/SimpleActor;->access$getScope$p(Landroidx/datastore/core/SimpleActor;)Lkotlinx/coroutines/CoroutineScope; +HSPLandroidx/datastore/core/SimpleActor;->offer(Ljava/lang/Object;)V +Landroidx/datastore/core/SimpleActor$1; +HSPLandroidx/datastore/core/SimpleActor$1;->(Lkotlin/jvm/functions/Function1;Landroidx/datastore/core/SimpleActor;Lkotlin/jvm/functions/Function2;)V +Landroidx/datastore/core/SimpleActor$offer$2; +HSPLandroidx/datastore/core/SimpleActor$offer$2;->(Landroidx/datastore/core/SimpleActor;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/datastore/core/SimpleActor$offer$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/datastore/core/SimpleActor$offer$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/datastore/core/SingleProcessDataStore; +HSPLandroidx/datastore/core/SingleProcessDataStore;->()V +HSPLandroidx/datastore/core/SingleProcessDataStore;->(Lkotlin/jvm/functions/Function0;Landroidx/datastore/core/Serializer;Ljava/util/List;Landroidx/datastore/core/CorruptionHandler;Lkotlinx/coroutines/CoroutineScope;)V +HSPLandroidx/datastore/core/SingleProcessDataStore;->access$getActiveFiles$cp()Ljava/util/Set; +HSPLandroidx/datastore/core/SingleProcessDataStore;->access$getActiveFilesLock$cp()Ljava/lang/Object; +HSPLandroidx/datastore/core/SingleProcessDataStore;->access$getActor$p(Landroidx/datastore/core/SingleProcessDataStore;)Landroidx/datastore/core/SimpleActor; +HSPLandroidx/datastore/core/SingleProcessDataStore;->access$getDownstreamFlow$p(Landroidx/datastore/core/SingleProcessDataStore;)Lkotlinx/coroutines/flow/MutableStateFlow; +HSPLandroidx/datastore/core/SingleProcessDataStore;->access$getProduceFile$p(Landroidx/datastore/core/SingleProcessDataStore;)Lkotlin/jvm/functions/Function0; +HSPLandroidx/datastore/core/SingleProcessDataStore;->access$handleRead(Landroidx/datastore/core/SingleProcessDataStore;Landroidx/datastore/core/SingleProcessDataStore$Message$Read;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/datastore/core/SingleProcessDataStore;->getData()Lkotlinx/coroutines/flow/Flow; +HSPLandroidx/datastore/core/SingleProcessDataStore;->getFile()Ljava/io/File; +HSPLandroidx/datastore/core/SingleProcessDataStore;->handleRead(Landroidx/datastore/core/SingleProcessDataStore$Message$Read;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/datastore/core/SingleProcessDataStore;->readAndInit(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/datastore/core/SingleProcessDataStore;->readAndInitOrPropagateFailure(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/datastore/core/SingleProcessDataStore;->readData(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/datastore/core/SingleProcessDataStore;->readDataOrHandleCorruption(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/datastore/core/SingleProcessDataStore$Companion; +HSPLandroidx/datastore/core/SingleProcessDataStore$Companion;->()V +HSPLandroidx/datastore/core/SingleProcessDataStore$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/datastore/core/SingleProcessDataStore$Companion;->getActiveFiles$datastore_core()Ljava/util/Set; +HSPLandroidx/datastore/core/SingleProcessDataStore$Companion;->getActiveFilesLock$datastore_core()Ljava/lang/Object; +Landroidx/datastore/core/SingleProcessDataStore$Message; +HSPLandroidx/datastore/core/SingleProcessDataStore$Message;->()V +HSPLandroidx/datastore/core/SingleProcessDataStore$Message;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/datastore/core/SingleProcessDataStore$Message$Read; +HSPLandroidx/datastore/core/SingleProcessDataStore$Message$Read;->(Landroidx/datastore/core/State;)V +Landroidx/datastore/core/SingleProcessDataStore$actor$1; +HSPLandroidx/datastore/core/SingleProcessDataStore$actor$1;->(Landroidx/datastore/core/SingleProcessDataStore;)V +Landroidx/datastore/core/SingleProcessDataStore$actor$2; +HSPLandroidx/datastore/core/SingleProcessDataStore$actor$2;->()V +HSPLandroidx/datastore/core/SingleProcessDataStore$actor$2;->()V +Landroidx/datastore/core/SingleProcessDataStore$actor$3; +HSPLandroidx/datastore/core/SingleProcessDataStore$actor$3;->(Landroidx/datastore/core/SingleProcessDataStore;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/datastore/core/SingleProcessDataStore$actor$3;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/datastore/core/SingleProcessDataStore$actor$3;->invoke(Landroidx/datastore/core/SingleProcessDataStore$Message;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/datastore/core/SingleProcessDataStore$actor$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/datastore/core/SingleProcessDataStore$actor$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/datastore/core/SingleProcessDataStore$data$1; +HSPLandroidx/datastore/core/SingleProcessDataStore$data$1;->(Landroidx/datastore/core/SingleProcessDataStore;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/datastore/core/SingleProcessDataStore$data$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/datastore/core/SingleProcessDataStore$data$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/datastore/core/SingleProcessDataStore$data$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/datastore/core/SingleProcessDataStore$data$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/datastore/core/SingleProcessDataStore$data$1$1; +HSPLandroidx/datastore/core/SingleProcessDataStore$data$1$1;->(Landroidx/datastore/core/State;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/datastore/core/SingleProcessDataStore$data$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/datastore/core/SingleProcessDataStore$data$1$1;->invoke(Landroidx/datastore/core/State;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/datastore/core/SingleProcessDataStore$data$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/datastore/core/SingleProcessDataStore$data$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/datastore/core/SingleProcessDataStore$data$1$invokeSuspend$$inlined$map$1; +HSPLandroidx/datastore/core/SingleProcessDataStore$data$1$invokeSuspend$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLandroidx/datastore/core/SingleProcessDataStore$data$1$invokeSuspend$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/datastore/core/SingleProcessDataStore$data$1$invokeSuspend$$inlined$map$1$2; +HSPLandroidx/datastore/core/SingleProcessDataStore$data$1$invokeSuspend$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLandroidx/datastore/core/SingleProcessDataStore$data$1$invokeSuspend$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/datastore/core/SingleProcessDataStore$data$1$invokeSuspend$$inlined$map$1$2$1; +HSPLandroidx/datastore/core/SingleProcessDataStore$data$1$invokeSuspend$$inlined$map$1$2$1;->(Landroidx/datastore/core/SingleProcessDataStore$data$1$invokeSuspend$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Landroidx/datastore/core/SingleProcessDataStore$file$2; +HSPLandroidx/datastore/core/SingleProcessDataStore$file$2;->(Landroidx/datastore/core/SingleProcessDataStore;)V +HSPLandroidx/datastore/core/SingleProcessDataStore$file$2;->invoke()Ljava/io/File; +HSPLandroidx/datastore/core/SingleProcessDataStore$file$2;->invoke()Ljava/lang/Object; +Landroidx/datastore/core/SingleProcessDataStore$readAndInit$1; +HSPLandroidx/datastore/core/SingleProcessDataStore$readAndInit$1;->(Landroidx/datastore/core/SingleProcessDataStore;Lkotlin/coroutines/Continuation;)V +Landroidx/datastore/core/SingleProcessDataStore$readAndInit$api$1; +HSPLandroidx/datastore/core/SingleProcessDataStore$readAndInit$api$1;->(Lkotlinx/coroutines/sync/Mutex;Lkotlin/jvm/internal/Ref$BooleanRef;Lkotlin/jvm/internal/Ref$ObjectRef;Landroidx/datastore/core/SingleProcessDataStore;)V +HSPLandroidx/datastore/core/SingleProcessDataStore$readAndInit$api$1;->updateData(Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/datastore/core/SingleProcessDataStore$readAndInit$api$1$updateData$1; +HSPLandroidx/datastore/core/SingleProcessDataStore$readAndInit$api$1$updateData$1;->(Landroidx/datastore/core/SingleProcessDataStore$readAndInit$api$1;Lkotlin/coroutines/Continuation;)V +Landroidx/datastore/core/SingleProcessDataStore$readAndInitOrPropagateFailure$1; +HSPLandroidx/datastore/core/SingleProcessDataStore$readAndInitOrPropagateFailure$1;->(Landroidx/datastore/core/SingleProcessDataStore;Lkotlin/coroutines/Continuation;)V +Landroidx/datastore/core/SingleProcessDataStore$readData$1; +HSPLandroidx/datastore/core/SingleProcessDataStore$readData$1;->(Landroidx/datastore/core/SingleProcessDataStore;Lkotlin/coroutines/Continuation;)V +Landroidx/datastore/core/SingleProcessDataStore$readDataOrHandleCorruption$1; +HSPLandroidx/datastore/core/SingleProcessDataStore$readDataOrHandleCorruption$1;->(Landroidx/datastore/core/SingleProcessDataStore;Lkotlin/coroutines/Continuation;)V +Landroidx/datastore/core/State; +HSPLandroidx/datastore/core/State;->()V +HSPLandroidx/datastore/core/State;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/datastore/core/UnInitialized; +HSPLandroidx/datastore/core/UnInitialized;->()V +HSPLandroidx/datastore/core/UnInitialized;->()V +Landroidx/datastore/core/handlers/NoOpCorruptionHandler; +HSPLandroidx/datastore/core/handlers/NoOpCorruptionHandler;->()V +Landroidx/datastore/core/handlers/ReplaceFileCorruptionHandler; +Landroidx/datastore/preferences/PreferenceDataStoreDelegateKt; +HSPLandroidx/datastore/preferences/PreferenceDataStoreDelegateKt;->preferencesDataStore$default(Ljava/lang/String;Landroidx/datastore/core/handlers/ReplaceFileCorruptionHandler;Lkotlin/jvm/functions/Function1;Lkotlinx/coroutines/CoroutineScope;ILjava/lang/Object;)Lkotlin/properties/ReadOnlyProperty; +HSPLandroidx/datastore/preferences/PreferenceDataStoreDelegateKt;->preferencesDataStore(Ljava/lang/String;Landroidx/datastore/core/handlers/ReplaceFileCorruptionHandler;Lkotlin/jvm/functions/Function1;Lkotlinx/coroutines/CoroutineScope;)Lkotlin/properties/ReadOnlyProperty; +Landroidx/datastore/preferences/PreferenceDataStoreDelegateKt$preferencesDataStore$1; +HSPLandroidx/datastore/preferences/PreferenceDataStoreDelegateKt$preferencesDataStore$1;->()V +HSPLandroidx/datastore/preferences/PreferenceDataStoreDelegateKt$preferencesDataStore$1;->()V +HSPLandroidx/datastore/preferences/PreferenceDataStoreDelegateKt$preferencesDataStore$1;->invoke(Landroid/content/Context;)Ljava/util/List; +HSPLandroidx/datastore/preferences/PreferenceDataStoreDelegateKt$preferencesDataStore$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/datastore/preferences/PreferenceDataStoreFile; +HSPLandroidx/datastore/preferences/PreferenceDataStoreFile;->preferencesDataStoreFile(Landroid/content/Context;Ljava/lang/String;)Ljava/io/File; +Landroidx/datastore/preferences/PreferenceDataStoreSingletonDelegate; +HSPLandroidx/datastore/preferences/PreferenceDataStoreSingletonDelegate;->(Ljava/lang/String;Landroidx/datastore/core/handlers/ReplaceFileCorruptionHandler;Lkotlin/jvm/functions/Function1;Lkotlinx/coroutines/CoroutineScope;)V +HSPLandroidx/datastore/preferences/PreferenceDataStoreSingletonDelegate;->access$getName$p(Landroidx/datastore/preferences/PreferenceDataStoreSingletonDelegate;)Ljava/lang/String; +HSPLandroidx/datastore/preferences/PreferenceDataStoreSingletonDelegate;->getValue(Landroid/content/Context;Lkotlin/reflect/KProperty;)Landroidx/datastore/core/DataStore; +HSPLandroidx/datastore/preferences/PreferenceDataStoreSingletonDelegate;->getValue(Ljava/lang/Object;Lkotlin/reflect/KProperty;)Ljava/lang/Object; +Landroidx/datastore/preferences/PreferenceDataStoreSingletonDelegate$getValue$1$1; +HSPLandroidx/datastore/preferences/PreferenceDataStoreSingletonDelegate$getValue$1$1;->(Landroid/content/Context;Landroidx/datastore/preferences/PreferenceDataStoreSingletonDelegate;)V +HSPLandroidx/datastore/preferences/PreferenceDataStoreSingletonDelegate$getValue$1$1;->invoke()Ljava/io/File; +HSPLandroidx/datastore/preferences/PreferenceDataStoreSingletonDelegate$getValue$1$1;->invoke()Ljava/lang/Object; +Landroidx/datastore/preferences/core/MutablePreferences; +HSPLandroidx/datastore/preferences/core/MutablePreferences;->(Ljava/util/Map;Z)V +HSPLandroidx/datastore/preferences/core/MutablePreferences;->(Ljava/util/Map;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/datastore/preferences/core/MutablePreferences;->asMap()Ljava/util/Map; +HSPLandroidx/datastore/preferences/core/MutablePreferences;->equals(Ljava/lang/Object;)Z +HSPLandroidx/datastore/preferences/core/MutablePreferences;->get(Landroidx/datastore/preferences/core/Preferences$Key;)Ljava/lang/Object; +HSPLandroidx/datastore/preferences/core/MutablePreferences;->hashCode()I +Landroidx/datastore/preferences/core/PreferenceDataStore; +HSPLandroidx/datastore/preferences/core/PreferenceDataStore;->(Landroidx/datastore/core/DataStore;)V +HSPLandroidx/datastore/preferences/core/PreferenceDataStore;->getData()Lkotlinx/coroutines/flow/Flow; +Landroidx/datastore/preferences/core/PreferenceDataStoreFactory; +HSPLandroidx/datastore/preferences/core/PreferenceDataStoreFactory;->()V +HSPLandroidx/datastore/preferences/core/PreferenceDataStoreFactory;->()V +HSPLandroidx/datastore/preferences/core/PreferenceDataStoreFactory;->create(Landroidx/datastore/core/handlers/ReplaceFileCorruptionHandler;Ljava/util/List;Lkotlinx/coroutines/CoroutineScope;Lkotlin/jvm/functions/Function0;)Landroidx/datastore/core/DataStore; +Landroidx/datastore/preferences/core/PreferenceDataStoreFactory$create$delegate$1; +HSPLandroidx/datastore/preferences/core/PreferenceDataStoreFactory$create$delegate$1;->(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/datastore/preferences/core/PreferenceDataStoreFactory$create$delegate$1;->invoke()Ljava/io/File; +HSPLandroidx/datastore/preferences/core/PreferenceDataStoreFactory$create$delegate$1;->invoke()Ljava/lang/Object; +Landroidx/datastore/preferences/core/Preferences; +HSPLandroidx/datastore/preferences/core/Preferences;->()V +HSPLandroidx/datastore/preferences/core/Preferences;->toPreferences()Landroidx/datastore/preferences/core/Preferences; +Landroidx/datastore/preferences/core/Preferences$Key; +HSPLandroidx/datastore/preferences/core/Preferences$Key;->(Ljava/lang/String;)V +Landroidx/datastore/preferences/core/PreferencesFactory; +HSPLandroidx/datastore/preferences/core/PreferencesFactory;->createEmpty()Landroidx/datastore/preferences/core/Preferences; +Landroidx/datastore/preferences/core/PreferencesKeys; +HSPLandroidx/datastore/preferences/core/PreferencesKeys;->booleanKey(Ljava/lang/String;)Landroidx/datastore/preferences/core/Preferences$Key; +HSPLandroidx/datastore/preferences/core/PreferencesKeys;->doubleKey(Ljava/lang/String;)Landroidx/datastore/preferences/core/Preferences$Key; +HSPLandroidx/datastore/preferences/core/PreferencesKeys;->intKey(Ljava/lang/String;)Landroidx/datastore/preferences/core/Preferences$Key; +HSPLandroidx/datastore/preferences/core/PreferencesKeys;->longKey(Ljava/lang/String;)Landroidx/datastore/preferences/core/Preferences$Key; +Landroidx/datastore/preferences/core/PreferencesSerializer; +HSPLandroidx/datastore/preferences/core/PreferencesSerializer;->()V +HSPLandroidx/datastore/preferences/core/PreferencesSerializer;->()V +HSPLandroidx/datastore/preferences/core/PreferencesSerializer;->getDefaultValue()Landroidx/datastore/preferences/core/Preferences; +HSPLandroidx/datastore/preferences/core/PreferencesSerializer;->getDefaultValue()Ljava/lang/Object; +HSPLandroidx/datastore/preferences/core/PreferencesSerializer;->getFileExtension()Ljava/lang/String; +Landroidx/emoji2/text/ConcurrencyHelpers; +HSPLandroidx/emoji2/text/ConcurrencyHelpers;->createBackgroundPriorityExecutor(Ljava/lang/String;)Ljava/util/concurrent/ThreadPoolExecutor; +HSPLandroidx/emoji2/text/ConcurrencyHelpers;->lambda$createBackgroundPriorityExecutor$0(Ljava/lang/String;Ljava/lang/Runnable;)Ljava/lang/Thread; +HSPLandroidx/emoji2/text/ConcurrencyHelpers;->mainHandlerAsync()Landroid/os/Handler; +Landroidx/emoji2/text/ConcurrencyHelpers$$ExternalSyntheticLambda0; +HSPLandroidx/emoji2/text/ConcurrencyHelpers$$ExternalSyntheticLambda0;->(Ljava/lang/String;)V +HSPLandroidx/emoji2/text/ConcurrencyHelpers$$ExternalSyntheticLambda0;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread; +Landroidx/emoji2/text/ConcurrencyHelpers$Handler28Impl; +HSPLandroidx/emoji2/text/ConcurrencyHelpers$Handler28Impl;->createAsync(Landroid/os/Looper;)Landroid/os/Handler; +Landroidx/emoji2/text/DefaultEmojiCompatConfig; +HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig;->create(Landroid/content/Context;)Landroidx/emoji2/text/FontRequestEmojiCompatConfig; +Landroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory; +HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;->(Landroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper;)V +HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;->configOrNull(Landroid/content/Context;Landroidx/core/provider/FontRequest;)Landroidx/emoji2/text/EmojiCompat$Config; +HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;->convertToByteArray([Landroid/content/pm/Signature;)Ljava/util/List; +HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;->create(Landroid/content/Context;)Landroidx/emoji2/text/EmojiCompat$Config; +HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;->generateFontRequestFrom(Landroid/content/pm/ProviderInfo;Landroid/content/pm/PackageManager;)Landroidx/core/provider/FontRequest; +HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;->getHelperForApi()Landroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper; +HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;->hasFlagSystem(Landroid/content/pm/ProviderInfo;)Z +HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;->queryDefaultInstalledContentProvider(Landroid/content/pm/PackageManager;)Landroid/content/pm/ProviderInfo; +HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;->queryForDefaultFontRequest(Landroid/content/Context;)Landroidx/core/provider/FontRequest; +Landroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper; +HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper;->()V +Landroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper_API19; +HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper_API19;->()V +HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper_API19;->getProviderInfo(Landroid/content/pm/ResolveInfo;)Landroid/content/pm/ProviderInfo; +HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper_API19;->queryIntentContentProviders(Landroid/content/pm/PackageManager;Landroid/content/Intent;I)Ljava/util/List; +Landroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper_API28; +HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper_API28;->()V +HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper_API28;->getSigningSignatures(Landroid/content/pm/PackageManager;Ljava/lang/String;)[Landroid/content/pm/Signature; +Landroidx/emoji2/text/DefaultGlyphChecker; +HSPLandroidx/emoji2/text/DefaultGlyphChecker;->()V +HSPLandroidx/emoji2/text/DefaultGlyphChecker;->()V +Landroidx/emoji2/text/EmojiCompat; +HSPLandroidx/emoji2/text/EmojiCompat;->()V +HSPLandroidx/emoji2/text/EmojiCompat;->(Landroidx/emoji2/text/EmojiCompat$Config;)V +HSPLandroidx/emoji2/text/EmojiCompat;->access$000(Landroidx/emoji2/text/EmojiCompat;)Landroidx/emoji2/text/EmojiCompat$SpanFactory; +HSPLandroidx/emoji2/text/EmojiCompat;->access$100(Landroidx/emoji2/text/EmojiCompat;)Landroidx/emoji2/text/EmojiCompat$GlyphChecker; +HSPLandroidx/emoji2/text/EmojiCompat;->get()Landroidx/emoji2/text/EmojiCompat; +HSPLandroidx/emoji2/text/EmojiCompat;->getLoadState()I +HSPLandroidx/emoji2/text/EmojiCompat;->init(Landroidx/emoji2/text/EmojiCompat$Config;)Landroidx/emoji2/text/EmojiCompat; +HSPLandroidx/emoji2/text/EmojiCompat;->isConfigured()Z +HSPLandroidx/emoji2/text/EmojiCompat;->isInitialized()Z +HSPLandroidx/emoji2/text/EmojiCompat;->load()V +HSPLandroidx/emoji2/text/EmojiCompat;->loadMetadata()V +HSPLandroidx/emoji2/text/EmojiCompat;->onMetadataLoadSuccess()V +HSPLandroidx/emoji2/text/EmojiCompat;->process(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; +HSPLandroidx/emoji2/text/EmojiCompat;->process(Ljava/lang/CharSequence;II)Ljava/lang/CharSequence; +HSPLandroidx/emoji2/text/EmojiCompat;->process(Ljava/lang/CharSequence;III)Ljava/lang/CharSequence; +HSPLandroidx/emoji2/text/EmojiCompat;->process(Ljava/lang/CharSequence;IIII)Ljava/lang/CharSequence; +HSPLandroidx/emoji2/text/EmojiCompat;->registerInitCallback(Landroidx/emoji2/text/EmojiCompat$InitCallback;)V +HSPLandroidx/emoji2/text/EmojiCompat;->updateEditorInfo(Landroid/view/inputmethod/EditorInfo;)V +Landroidx/emoji2/text/EmojiCompat$CompatInternal; +HSPLandroidx/emoji2/text/EmojiCompat$CompatInternal;->(Landroidx/emoji2/text/EmojiCompat;)V +Landroidx/emoji2/text/EmojiCompat$CompatInternal19; +HSPLandroidx/emoji2/text/EmojiCompat$CompatInternal19;->(Landroidx/emoji2/text/EmojiCompat;)V +HSPLandroidx/emoji2/text/EmojiCompat$CompatInternal19;->loadMetadata()V +HSPLandroidx/emoji2/text/EmojiCompat$CompatInternal19;->onMetadataLoadSuccess(Landroidx/emoji2/text/MetadataRepo;)V +HSPLandroidx/emoji2/text/EmojiCompat$CompatInternal19;->process(Ljava/lang/CharSequence;IIIZ)Ljava/lang/CharSequence; +HSPLandroidx/emoji2/text/EmojiCompat$CompatInternal19;->updateEditorInfoAttrs(Landroid/view/inputmethod/EditorInfo;)V +Landroidx/emoji2/text/EmojiCompat$CompatInternal19$1; +HSPLandroidx/emoji2/text/EmojiCompat$CompatInternal19$1;->(Landroidx/emoji2/text/EmojiCompat$CompatInternal19;)V +HSPLandroidx/emoji2/text/EmojiCompat$CompatInternal19$1;->onLoaded(Landroidx/emoji2/text/MetadataRepo;)V +Landroidx/emoji2/text/EmojiCompat$Config; +HSPLandroidx/emoji2/text/EmojiCompat$Config;->(Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoader;)V +HSPLandroidx/emoji2/text/EmojiCompat$Config;->getMetadataRepoLoader()Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoader; +HSPLandroidx/emoji2/text/EmojiCompat$Config;->setMetadataLoadStrategy(I)Landroidx/emoji2/text/EmojiCompat$Config; +Landroidx/emoji2/text/EmojiCompat$DefaultSpanFactory; +HSPLandroidx/emoji2/text/EmojiCompat$DefaultSpanFactory;->()V +Landroidx/emoji2/text/EmojiCompat$GlyphChecker; +Landroidx/emoji2/text/EmojiCompat$InitCallback; +HSPLandroidx/emoji2/text/EmojiCompat$InitCallback;->()V +Landroidx/emoji2/text/EmojiCompat$ListenerDispatcher; +HSPLandroidx/emoji2/text/EmojiCompat$ListenerDispatcher;->(Ljava/util/Collection;I)V +HSPLandroidx/emoji2/text/EmojiCompat$ListenerDispatcher;->(Ljava/util/Collection;ILjava/lang/Throwable;)V +HSPLandroidx/emoji2/text/EmojiCompat$ListenerDispatcher;->run()V +Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoader; +Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback; +HSPLandroidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback;->()V +Landroidx/emoji2/text/EmojiCompat$SpanFactory; +Landroidx/emoji2/text/EmojiCompatInitializer; +HSPLandroidx/emoji2/text/EmojiCompatInitializer;->()V +HSPLandroidx/emoji2/text/EmojiCompatInitializer;->create(Landroid/content/Context;)Ljava/lang/Boolean; +HSPLandroidx/emoji2/text/EmojiCompatInitializer;->create(Landroid/content/Context;)Ljava/lang/Object; +HSPLandroidx/emoji2/text/EmojiCompatInitializer;->delayUntilFirstResume(Landroid/content/Context;)V +HSPLandroidx/emoji2/text/EmojiCompatInitializer;->dependencies()Ljava/util/List; +HSPLandroidx/emoji2/text/EmojiCompatInitializer;->loadEmojiCompatAfterDelay()V +Landroidx/emoji2/text/EmojiCompatInitializer$1; +HSPLandroidx/emoji2/text/EmojiCompatInitializer$1;->(Landroidx/emoji2/text/EmojiCompatInitializer;Landroidx/lifecycle/Lifecycle;)V +HSPLandroidx/emoji2/text/EmojiCompatInitializer$1;->onResume(Landroidx/lifecycle/LifecycleOwner;)V +Landroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultConfig; +HSPLandroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultConfig;->(Landroid/content/Context;)V +Landroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader; +HSPLandroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader;->(Landroid/content/Context;)V +HSPLandroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader;->doLoad(Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback;Ljava/util/concurrent/ThreadPoolExecutor;)V +HSPLandroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader;->lambda$load$0$androidx-emoji2-text-EmojiCompatInitializer$BackgroundDefaultLoader(Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback;Ljava/util/concurrent/ThreadPoolExecutor;)V +HSPLandroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader;->load(Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback;)V +Landroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader$$ExternalSyntheticLambda0; +HSPLandroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader$$ExternalSyntheticLambda0;->(Landroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader;Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback;Ljava/util/concurrent/ThreadPoolExecutor;)V +HSPLandroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader$$ExternalSyntheticLambda0;->run()V +Landroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader$1; +HSPLandroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader$1;->(Landroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader;Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback;Ljava/util/concurrent/ThreadPoolExecutor;)V +HSPLandroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader$1;->onLoaded(Landroidx/emoji2/text/MetadataRepo;)V +Landroidx/emoji2/text/EmojiCompatInitializer$LoadEmojiCompatRunnable; +HSPLandroidx/emoji2/text/EmojiCompatInitializer$LoadEmojiCompatRunnable;->()V +HSPLandroidx/emoji2/text/EmojiCompatInitializer$LoadEmojiCompatRunnable;->run()V +Landroidx/emoji2/text/EmojiExclusions; +HSPLandroidx/emoji2/text/EmojiExclusions;->getEmojiExclusions()Ljava/util/Set; +Landroidx/emoji2/text/EmojiExclusions$EmojiExclusions_Api34; +HSPLandroidx/emoji2/text/EmojiExclusions$EmojiExclusions_Api34;->getExclusions()Ljava/util/Set; +Landroidx/emoji2/text/EmojiExclusions$EmojiExclusions_Reflections; +HSPLandroidx/emoji2/text/EmojiExclusions$EmojiExclusions_Reflections;->getExclusions()Ljava/util/Set; +Landroidx/emoji2/text/EmojiProcessor; +HSPLandroidx/emoji2/text/EmojiProcessor;->(Landroidx/emoji2/text/MetadataRepo;Landroidx/emoji2/text/EmojiCompat$SpanFactory;Landroidx/emoji2/text/EmojiCompat$GlyphChecker;Z[ILjava/util/Set;)V +HSPLandroidx/emoji2/text/EmojiProcessor;->initExclusions(Ljava/util/Set;)V +HSPLandroidx/emoji2/text/EmojiProcessor;->process(Ljava/lang/CharSequence;IIIZ)Ljava/lang/CharSequence; +HSPLandroidx/emoji2/text/EmojiProcessor;->process(Ljava/lang/CharSequence;IIIZLandroidx/emoji2/text/EmojiProcessor$EmojiProcessCallback;)Ljava/lang/Object; +Landroidx/emoji2/text/EmojiProcessor$EmojiProcessAddSpanCallback; +HSPLandroidx/emoji2/text/EmojiProcessor$EmojiProcessAddSpanCallback;->(Landroidx/emoji2/text/UnprecomputeTextOnModificationSpannable;Landroidx/emoji2/text/EmojiCompat$SpanFactory;)V +HSPLandroidx/emoji2/text/EmojiProcessor$EmojiProcessAddSpanCallback;->getResult()Landroidx/emoji2/text/UnprecomputeTextOnModificationSpannable; +HSPLandroidx/emoji2/text/EmojiProcessor$EmojiProcessAddSpanCallback;->getResult()Ljava/lang/Object; +Landroidx/emoji2/text/EmojiProcessor$EmojiProcessCallback; +Landroidx/emoji2/text/EmojiProcessor$ProcessorSm; +HSPLandroidx/emoji2/text/EmojiProcessor$ProcessorSm;->(Landroidx/emoji2/text/MetadataRepo$Node;Z[I)V +HSPLandroidx/emoji2/text/EmojiProcessor$ProcessorSm;->check(I)I +HSPLandroidx/emoji2/text/EmojiProcessor$ProcessorSm;->isInFlushableState()Z +HSPLandroidx/emoji2/text/EmojiProcessor$ProcessorSm;->reset()I +Landroidx/emoji2/text/FontRequestEmojiCompatConfig; +HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig;->()V +HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig;->(Landroid/content/Context;Landroidx/core/provider/FontRequest;)V +HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig;->setLoadingExecutor(Ljava/util/concurrent/Executor;)Landroidx/emoji2/text/FontRequestEmojiCompatConfig; +Landroidx/emoji2/text/FontRequestEmojiCompatConfig$FontProviderHelper; +HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontProviderHelper;->()V +HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontProviderHelper;->buildTypeface(Landroid/content/Context;Landroidx/core/provider/FontsContractCompat$FontInfo;)Landroid/graphics/Typeface; +HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontProviderHelper;->fetchFonts(Landroid/content/Context;Landroidx/core/provider/FontRequest;)Landroidx/core/provider/FontsContractCompat$FontFamilyResult; +Landroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader; +HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader;->(Landroid/content/Context;Landroidx/core/provider/FontRequest;Landroidx/emoji2/text/FontRequestEmojiCompatConfig$FontProviderHelper;)V +HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader;->cleanUp()V +HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader;->createMetadata()V +HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader;->load(Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback;)V +HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader;->loadInternal()V +HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader;->retrieveFontInfo()Landroidx/core/provider/FontsContractCompat$FontInfo; +HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader;->setExecutor(Ljava/util/concurrent/Executor;)V +Landroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader$$ExternalSyntheticLambda0; +HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader$$ExternalSyntheticLambda0;->(Landroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader;)V +HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader$$ExternalSyntheticLambda0;->run()V +Landroidx/emoji2/text/MetadataListReader; +HSPLandroidx/emoji2/text/MetadataListReader;->findOffsetInfo(Landroidx/emoji2/text/MetadataListReader$OpenTypeReader;)Landroidx/emoji2/text/MetadataListReader$OffsetInfo; +HSPLandroidx/emoji2/text/MetadataListReader;->read(Ljava/nio/ByteBuffer;)Landroidx/emoji2/text/flatbuffer/MetadataList; +HSPLandroidx/emoji2/text/MetadataListReader;->toUnsignedInt(I)J +HSPLandroidx/emoji2/text/MetadataListReader;->toUnsignedShort(S)I +Landroidx/emoji2/text/MetadataListReader$ByteBufferReader; +HSPLandroidx/emoji2/text/MetadataListReader$ByteBufferReader;->(Ljava/nio/ByteBuffer;)V +HSPLandroidx/emoji2/text/MetadataListReader$ByteBufferReader;->getPosition()J +HSPLandroidx/emoji2/text/MetadataListReader$ByteBufferReader;->readTag()I +HSPLandroidx/emoji2/text/MetadataListReader$ByteBufferReader;->readUnsignedInt()J +HSPLandroidx/emoji2/text/MetadataListReader$ByteBufferReader;->readUnsignedShort()I +HSPLandroidx/emoji2/text/MetadataListReader$ByteBufferReader;->skip(I)V +Landroidx/emoji2/text/MetadataListReader$OffsetInfo; +HSPLandroidx/emoji2/text/MetadataListReader$OffsetInfo;->(JJ)V +HSPLandroidx/emoji2/text/MetadataListReader$OffsetInfo;->getStartOffset()J +Landroidx/emoji2/text/MetadataListReader$OpenTypeReader; +Landroidx/emoji2/text/MetadataRepo; +HSPLandroidx/emoji2/text/MetadataRepo;->(Landroid/graphics/Typeface;Landroidx/emoji2/text/flatbuffer/MetadataList;)V +HSPLandroidx/emoji2/text/MetadataRepo;->constructIndex(Landroidx/emoji2/text/flatbuffer/MetadataList;)V +HSPLandroidx/emoji2/text/MetadataRepo;->create(Landroid/graphics/Typeface;Ljava/nio/ByteBuffer;)Landroidx/emoji2/text/MetadataRepo; +HPLandroidx/emoji2/text/MetadataRepo;->getMetadataList()Landroidx/emoji2/text/flatbuffer/MetadataList; +HSPLandroidx/emoji2/text/MetadataRepo;->getMetadataVersion()I +HSPLandroidx/emoji2/text/MetadataRepo;->getRootNode()Landroidx/emoji2/text/MetadataRepo$Node; +HSPLandroidx/emoji2/text/MetadataRepo;->put(Landroidx/emoji2/text/TypefaceEmojiRasterizer;)V +Landroidx/emoji2/text/MetadataRepo$Node; +HSPLandroidx/emoji2/text/MetadataRepo$Node;->()V +HSPLandroidx/emoji2/text/MetadataRepo$Node;->(I)V +HSPLandroidx/emoji2/text/MetadataRepo$Node;->get(I)Landroidx/emoji2/text/MetadataRepo$Node; +HSPLandroidx/emoji2/text/MetadataRepo$Node;->put(Landroidx/emoji2/text/TypefaceEmojiRasterizer;II)V +Landroidx/emoji2/text/SpannableBuilder; +Landroidx/emoji2/text/TypefaceEmojiRasterizer; +HSPLandroidx/emoji2/text/TypefaceEmojiRasterizer;->()V +HSPLandroidx/emoji2/text/TypefaceEmojiRasterizer;->(Landroidx/emoji2/text/MetadataRepo;I)V +HSPLandroidx/emoji2/text/TypefaceEmojiRasterizer;->getCodepointAt(I)I +HSPLandroidx/emoji2/text/TypefaceEmojiRasterizer;->getCodepointsLength()I +HSPLandroidx/emoji2/text/TypefaceEmojiRasterizer;->getId()I +Landroidx/emoji2/text/UnprecomputeTextOnModificationSpannable; +Landroidx/emoji2/text/flatbuffer/MetadataItem; +HSPLandroidx/emoji2/text/flatbuffer/MetadataItem;->()V +HSPLandroidx/emoji2/text/flatbuffer/MetadataItem;->codepoints(I)I +HSPLandroidx/emoji2/text/flatbuffer/MetadataItem;->codepointsLength()I +HSPLandroidx/emoji2/text/flatbuffer/MetadataItem;->id()I +Landroidx/emoji2/text/flatbuffer/MetadataList; +HSPLandroidx/emoji2/text/flatbuffer/MetadataList;->()V +HSPLandroidx/emoji2/text/flatbuffer/MetadataList;->__assign(ILjava/nio/ByteBuffer;)Landroidx/emoji2/text/flatbuffer/MetadataList; +HSPLandroidx/emoji2/text/flatbuffer/MetadataList;->__init(ILjava/nio/ByteBuffer;)V +HSPLandroidx/emoji2/text/flatbuffer/MetadataList;->getRootAsMetadataList(Ljava/nio/ByteBuffer;)Landroidx/emoji2/text/flatbuffer/MetadataList; +HSPLandroidx/emoji2/text/flatbuffer/MetadataList;->getRootAsMetadataList(Ljava/nio/ByteBuffer;Landroidx/emoji2/text/flatbuffer/MetadataList;)Landroidx/emoji2/text/flatbuffer/MetadataList; +HSPLandroidx/emoji2/text/flatbuffer/MetadataList;->list(Landroidx/emoji2/text/flatbuffer/MetadataItem;I)Landroidx/emoji2/text/flatbuffer/MetadataItem; +HSPLandroidx/emoji2/text/flatbuffer/MetadataList;->listLength()I +HSPLandroidx/emoji2/text/flatbuffer/MetadataList;->version()I +Landroidx/emoji2/text/flatbuffer/Table; +HSPLandroidx/emoji2/text/flatbuffer/Table;->()V +HSPLandroidx/emoji2/text/flatbuffer/Table;->__indirect(I)I +HSPLandroidx/emoji2/text/flatbuffer/Table;->__offset(I)I +HSPLandroidx/emoji2/text/flatbuffer/Table;->__reset(ILjava/nio/ByteBuffer;)V +HSPLandroidx/emoji2/text/flatbuffer/Table;->__vector(I)I +HPLandroidx/emoji2/text/flatbuffer/Table;->__vector_len(I)I +Landroidx/emoji2/text/flatbuffer/Utf8; +HSPLandroidx/emoji2/text/flatbuffer/Utf8;->()V +HSPLandroidx/emoji2/text/flatbuffer/Utf8;->getDefault()Landroidx/emoji2/text/flatbuffer/Utf8; +Landroidx/emoji2/text/flatbuffer/Utf8Safe; +HSPLandroidx/emoji2/text/flatbuffer/Utf8Safe;->()V +Landroidx/fragment/app/Fragment; +Landroidx/fragment/app/FragmentActivity; +HSPLandroidx/fragment/app/FragmentActivity;->()V +HSPLandroidx/fragment/app/FragmentActivity;->dispatchFragmentsOnCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLandroidx/fragment/app/FragmentActivity;->init()V +HSPLandroidx/fragment/app/FragmentActivity;->lambda$init$3$androidx-fragment-app-FragmentActivity(Landroid/content/Context;)V +HSPLandroidx/fragment/app/FragmentActivity;->onCreate(Landroid/os/Bundle;)V +HSPLandroidx/fragment/app/FragmentActivity;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLandroidx/fragment/app/FragmentActivity;->onCreateView(Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLandroidx/fragment/app/FragmentActivity;->onPostResume()V +HSPLandroidx/fragment/app/FragmentActivity;->onResume()V +HSPLandroidx/fragment/app/FragmentActivity;->onResumeFragments()V +HSPLandroidx/fragment/app/FragmentActivity;->onStart()V +HSPLandroidx/fragment/app/FragmentActivity;->onStateNotSaved()V +Landroidx/fragment/app/FragmentActivity$$ExternalSyntheticLambda0; +HSPLandroidx/fragment/app/FragmentActivity$$ExternalSyntheticLambda0;->(Landroidx/fragment/app/FragmentActivity;)V +Landroidx/fragment/app/FragmentActivity$$ExternalSyntheticLambda1; +HSPLandroidx/fragment/app/FragmentActivity$$ExternalSyntheticLambda1;->(Landroidx/fragment/app/FragmentActivity;)V +Landroidx/fragment/app/FragmentActivity$$ExternalSyntheticLambda2; +HSPLandroidx/fragment/app/FragmentActivity$$ExternalSyntheticLambda2;->(Landroidx/fragment/app/FragmentActivity;)V +Landroidx/fragment/app/FragmentActivity$$ExternalSyntheticLambda3; +HSPLandroidx/fragment/app/FragmentActivity$$ExternalSyntheticLambda3;->(Landroidx/fragment/app/FragmentActivity;)V +HSPLandroidx/fragment/app/FragmentActivity$$ExternalSyntheticLambda3;->onContextAvailable(Landroid/content/Context;)V +Landroidx/fragment/app/FragmentActivity$HostCallbacks; +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->(Landroidx/fragment/app/FragmentActivity;)V +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->addMenuProvider(Landroidx/core/view/MenuProvider;)V +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->addOnConfigurationChangedListener(Landroidx/core/util/Consumer;)V +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->addOnMultiWindowModeChangedListener(Landroidx/core/util/Consumer;)V +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->addOnPictureInPictureModeChangedListener(Landroidx/core/util/Consumer;)V +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->addOnTrimMemoryListener(Landroidx/core/util/Consumer;)V +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->getActivityResultRegistry()Landroidx/activity/result/ActivityResultRegistry; +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->getLifecycle()Landroidx/lifecycle/Lifecycle; +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->getOnBackPressedDispatcher()Landroidx/activity/OnBackPressedDispatcher; +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->getSavedStateRegistry()Landroidx/savedstate/SavedStateRegistry; +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->getViewModelStore()Landroidx/lifecycle/ViewModelStore; +Landroidx/fragment/app/FragmentContainer; +HSPLandroidx/fragment/app/FragmentContainer;->()V +Landroidx/fragment/app/FragmentContainerView; +Landroidx/fragment/app/FragmentController; +HSPLandroidx/fragment/app/FragmentController;->(Landroidx/fragment/app/FragmentHostCallback;)V +HSPLandroidx/fragment/app/FragmentController;->attachHost(Landroidx/fragment/app/Fragment;)V +HSPLandroidx/fragment/app/FragmentController;->createController(Landroidx/fragment/app/FragmentHostCallback;)Landroidx/fragment/app/FragmentController; +HSPLandroidx/fragment/app/FragmentController;->dispatchActivityCreated()V +HSPLandroidx/fragment/app/FragmentController;->dispatchCreate()V +HSPLandroidx/fragment/app/FragmentController;->dispatchResume()V +HSPLandroidx/fragment/app/FragmentController;->dispatchStart()V +HSPLandroidx/fragment/app/FragmentController;->execPendingActions()Z +HSPLandroidx/fragment/app/FragmentController;->noteStateNotSaved()V +HSPLandroidx/fragment/app/FragmentController;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; +Landroidx/fragment/app/FragmentFactory; +HSPLandroidx/fragment/app/FragmentFactory;->()V +HSPLandroidx/fragment/app/FragmentFactory;->()V +Landroidx/fragment/app/FragmentHostCallback; +HSPLandroidx/fragment/app/FragmentHostCallback;->(Landroid/app/Activity;Landroid/content/Context;Landroid/os/Handler;I)V +HSPLandroidx/fragment/app/FragmentHostCallback;->(Landroidx/fragment/app/FragmentActivity;)V +HSPLandroidx/fragment/app/FragmentHostCallback;->getHandler()Landroid/os/Handler; +Landroidx/fragment/app/FragmentLayoutInflaterFactory; +HSPLandroidx/fragment/app/FragmentLayoutInflaterFactory;->(Landroidx/fragment/app/FragmentManager;)V +HSPLandroidx/fragment/app/FragmentLayoutInflaterFactory;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; +Landroidx/fragment/app/FragmentLifecycleCallbacksDispatcher; +HSPLandroidx/fragment/app/FragmentLifecycleCallbacksDispatcher;->(Landroidx/fragment/app/FragmentManager;)V +Landroidx/fragment/app/FragmentManager; +HSPLandroidx/fragment/app/FragmentManager;->()V +HSPLandroidx/fragment/app/FragmentManager;->()V +HSPLandroidx/fragment/app/FragmentManager;->addFragmentOnAttachListener(Landroidx/fragment/app/FragmentOnAttachListener;)V +HSPLandroidx/fragment/app/FragmentManager;->attachController(Landroidx/fragment/app/FragmentHostCallback;Landroidx/fragment/app/FragmentContainer;Landroidx/fragment/app/Fragment;)V +HSPLandroidx/fragment/app/FragmentManager;->collectAllSpecialEffectsController()Ljava/util/Set; +HSPLandroidx/fragment/app/FragmentManager;->dispatchActivityCreated()V +HSPLandroidx/fragment/app/FragmentManager;->dispatchCreate()V +HSPLandroidx/fragment/app/FragmentManager;->dispatchResume()V +HSPLandroidx/fragment/app/FragmentManager;->dispatchStart()V +HSPLandroidx/fragment/app/FragmentManager;->dispatchStateChange(I)V +HSPLandroidx/fragment/app/FragmentManager;->doPendingDeferredStart()V +HSPLandroidx/fragment/app/FragmentManager;->ensureExecReady(Z)V +HSPLandroidx/fragment/app/FragmentManager;->execPendingActions(Z)Z +HSPLandroidx/fragment/app/FragmentManager;->generateOpsForPendingActions(Ljava/util/ArrayList;Ljava/util/ArrayList;)Z +HSPLandroidx/fragment/app/FragmentManager;->getBackStackEntryCount()I +HSPLandroidx/fragment/app/FragmentManager;->getLayoutInflaterFactory()Landroid/view/LayoutInflater$Factory2; +HSPLandroidx/fragment/app/FragmentManager;->isStateSaved()Z +HSPLandroidx/fragment/app/FragmentManager;->moveToState(IZ)V +HSPLandroidx/fragment/app/FragmentManager;->noteStateNotSaved()V +HSPLandroidx/fragment/app/FragmentManager;->startPendingDeferredFragments()V +HSPLandroidx/fragment/app/FragmentManager;->updateOnBackPressedCallbackEnabled()V +Landroidx/fragment/app/FragmentManager$$ExternalSyntheticLambda0; +HSPLandroidx/fragment/app/FragmentManager$$ExternalSyntheticLambda0;->(Landroidx/fragment/app/FragmentManager;)V +Landroidx/fragment/app/FragmentManager$$ExternalSyntheticLambda1; +HSPLandroidx/fragment/app/FragmentManager$$ExternalSyntheticLambda1;->(Landroidx/fragment/app/FragmentManager;)V +Landroidx/fragment/app/FragmentManager$$ExternalSyntheticLambda2; +HSPLandroidx/fragment/app/FragmentManager$$ExternalSyntheticLambda2;->(Landroidx/fragment/app/FragmentManager;)V +Landroidx/fragment/app/FragmentManager$$ExternalSyntheticLambda3; +HSPLandroidx/fragment/app/FragmentManager$$ExternalSyntheticLambda3;->(Landroidx/fragment/app/FragmentManager;)V +Landroidx/fragment/app/FragmentManager$$ExternalSyntheticLambda4; +HSPLandroidx/fragment/app/FragmentManager$$ExternalSyntheticLambda4;->(Landroidx/fragment/app/FragmentManager;)V +Landroidx/fragment/app/FragmentManager$1; +HSPLandroidx/fragment/app/FragmentManager$1;->(Landroidx/fragment/app/FragmentManager;Z)V +Landroidx/fragment/app/FragmentManager$10; +HSPLandroidx/fragment/app/FragmentManager$10;->(Landroidx/fragment/app/FragmentManager;)V +Landroidx/fragment/app/FragmentManager$2; +HSPLandroidx/fragment/app/FragmentManager$2;->(Landroidx/fragment/app/FragmentManager;)V +Landroidx/fragment/app/FragmentManager$3; +HSPLandroidx/fragment/app/FragmentManager$3;->(Landroidx/fragment/app/FragmentManager;)V +Landroidx/fragment/app/FragmentManager$4; +HSPLandroidx/fragment/app/FragmentManager$4;->(Landroidx/fragment/app/FragmentManager;)V +Landroidx/fragment/app/FragmentManager$5; +HSPLandroidx/fragment/app/FragmentManager$5;->(Landroidx/fragment/app/FragmentManager;)V +Landroidx/fragment/app/FragmentManager$8; +HSPLandroidx/fragment/app/FragmentManager$8;->(Landroidx/fragment/app/FragmentManager;)V +Landroidx/fragment/app/FragmentManager$9; +HSPLandroidx/fragment/app/FragmentManager$9;->(Landroidx/fragment/app/FragmentManager;)V +Landroidx/fragment/app/FragmentManager$FragmentIntentSenderContract; +HSPLandroidx/fragment/app/FragmentManager$FragmentIntentSenderContract;->()V +Landroidx/fragment/app/FragmentManagerImpl; +HSPLandroidx/fragment/app/FragmentManagerImpl;->()V +Landroidx/fragment/app/FragmentManagerViewModel; +HSPLandroidx/fragment/app/FragmentManagerViewModel;->()V +HSPLandroidx/fragment/app/FragmentManagerViewModel;->(Z)V +HSPLandroidx/fragment/app/FragmentManagerViewModel;->getInstance(Landroidx/lifecycle/ViewModelStore;)Landroidx/fragment/app/FragmentManagerViewModel; +HSPLandroidx/fragment/app/FragmentManagerViewModel;->setIsStateSaved(Z)V +Landroidx/fragment/app/FragmentManagerViewModel$1; +HSPLandroidx/fragment/app/FragmentManagerViewModel$1;->()V +HSPLandroidx/fragment/app/FragmentManagerViewModel$1;->create(Ljava/lang/Class;)Landroidx/lifecycle/ViewModel; +Landroidx/fragment/app/FragmentOnAttachListener; +Landroidx/fragment/app/FragmentResultOwner; +Landroidx/fragment/app/FragmentStore; +HSPLandroidx/fragment/app/FragmentStore;->()V +HSPLandroidx/fragment/app/FragmentStore;->burpActive()V +HSPLandroidx/fragment/app/FragmentStore;->dispatchStateChange(I)V +HSPLandroidx/fragment/app/FragmentStore;->getActiveFragmentStateManagers()Ljava/util/List; +HSPLandroidx/fragment/app/FragmentStore;->getFragments()Ljava/util/List; +HSPLandroidx/fragment/app/FragmentStore;->moveToExpectedState()V +HSPLandroidx/fragment/app/FragmentStore;->setNonConfig(Landroidx/fragment/app/FragmentManagerViewModel;)V +Landroidx/fragment/app/SpecialEffectsControllerFactory; +Landroidx/lifecycle/AndroidViewModel; +Landroidx/lifecycle/DefaultLifecycleObserver; +HSPLandroidx/lifecycle/DefaultLifecycleObserver;->onCreate(Landroidx/lifecycle/LifecycleOwner;)V +HSPLandroidx/lifecycle/DefaultLifecycleObserver;->onStart(Landroidx/lifecycle/LifecycleOwner;)V +Landroidx/lifecycle/DefaultLifecycleObserverAdapter; +HSPLandroidx/lifecycle/DefaultLifecycleObserverAdapter;->(Landroidx/lifecycle/DefaultLifecycleObserver;Landroidx/lifecycle/LifecycleEventObserver;)V +HSPLandroidx/lifecycle/DefaultLifecycleObserverAdapter;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +Landroidx/lifecycle/DefaultLifecycleObserverAdapter$WhenMappings; +HSPLandroidx/lifecycle/DefaultLifecycleObserverAdapter$WhenMappings;->()V +Landroidx/lifecycle/EmptyActivityLifecycleCallbacks; +HSPLandroidx/lifecycle/EmptyActivityLifecycleCallbacks;->()V +HSPLandroidx/lifecycle/EmptyActivityLifecycleCallbacks;->onActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V +HSPLandroidx/lifecycle/EmptyActivityLifecycleCallbacks;->onActivityResumed(Landroid/app/Activity;)V +HSPLandroidx/lifecycle/EmptyActivityLifecycleCallbacks;->onActivityStarted(Landroid/app/Activity;)V +Landroidx/lifecycle/HasDefaultViewModelProviderFactory; +Landroidx/lifecycle/Lifecycle; +HSPLandroidx/lifecycle/Lifecycle;->()V +HSPLandroidx/lifecycle/Lifecycle;->getInternalScopeRef()Ljava/util/concurrent/atomic/AtomicReference; +Landroidx/lifecycle/Lifecycle$Event; +HSPLandroidx/lifecycle/Lifecycle$Event;->$values()[Landroidx/lifecycle/Lifecycle$Event; +HSPLandroidx/lifecycle/Lifecycle$Event;->()V +HSPLandroidx/lifecycle/Lifecycle$Event;->(Ljava/lang/String;I)V +HSPLandroidx/lifecycle/Lifecycle$Event;->getTargetState()Landroidx/lifecycle/Lifecycle$State; +HSPLandroidx/lifecycle/Lifecycle$Event;->values()[Landroidx/lifecycle/Lifecycle$Event; +Landroidx/lifecycle/Lifecycle$Event$Companion; +HSPLandroidx/lifecycle/Lifecycle$Event$Companion;->()V +HSPLandroidx/lifecycle/Lifecycle$Event$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/lifecycle/Lifecycle$Event$Companion;->upFrom(Landroidx/lifecycle/Lifecycle$State;)Landroidx/lifecycle/Lifecycle$Event; +Landroidx/lifecycle/Lifecycle$Event$Companion$WhenMappings; +HSPLandroidx/lifecycle/Lifecycle$Event$Companion$WhenMappings;->()V +Landroidx/lifecycle/Lifecycle$Event$WhenMappings; +HSPLandroidx/lifecycle/Lifecycle$Event$WhenMappings;->()V +Landroidx/lifecycle/Lifecycle$State; +HSPLandroidx/lifecycle/Lifecycle$State;->$values()[Landroidx/lifecycle/Lifecycle$State; +HSPLandroidx/lifecycle/Lifecycle$State;->()V +HSPLandroidx/lifecycle/Lifecycle$State;->(Ljava/lang/String;I)V +HSPLandroidx/lifecycle/Lifecycle$State;->isAtLeast(Landroidx/lifecycle/Lifecycle$State;)Z +HSPLandroidx/lifecycle/Lifecycle$State;->values()[Landroidx/lifecycle/Lifecycle$State; +Landroidx/lifecycle/LifecycleCoroutineScope; +HSPLandroidx/lifecycle/LifecycleCoroutineScope;->()V +Landroidx/lifecycle/LifecycleCoroutineScopeImpl; +HSPLandroidx/lifecycle/LifecycleCoroutineScopeImpl;->(Landroidx/lifecycle/Lifecycle;Lkotlin/coroutines/CoroutineContext;)V +HSPLandroidx/lifecycle/LifecycleCoroutineScopeImpl;->getCoroutineContext()Lkotlin/coroutines/CoroutineContext; +HSPLandroidx/lifecycle/LifecycleCoroutineScopeImpl;->getLifecycle$lifecycle_common()Landroidx/lifecycle/Lifecycle; +HSPLandroidx/lifecycle/LifecycleCoroutineScopeImpl;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +HSPLandroidx/lifecycle/LifecycleCoroutineScopeImpl;->register()V +Landroidx/lifecycle/LifecycleCoroutineScopeImpl$register$1; +HSPLandroidx/lifecycle/LifecycleCoroutineScopeImpl$register$1;->(Landroidx/lifecycle/LifecycleCoroutineScopeImpl;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/lifecycle/LifecycleCoroutineScopeImpl$register$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/lifecycle/LifecycleCoroutineScopeImpl$register$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/lifecycle/LifecycleDispatcher; +HSPLandroidx/lifecycle/LifecycleDispatcher;->()V +HSPLandroidx/lifecycle/LifecycleDispatcher;->()V +HSPLandroidx/lifecycle/LifecycleDispatcher;->init(Landroid/content/Context;)V +Landroidx/lifecycle/LifecycleDispatcher$DispatcherActivityCallback; +HSPLandroidx/lifecycle/LifecycleDispatcher$DispatcherActivityCallback;->()V +HSPLandroidx/lifecycle/LifecycleDispatcher$DispatcherActivityCallback;->onActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V +Landroidx/lifecycle/LifecycleEventObserver; +Landroidx/lifecycle/LifecycleKt; +HSPLandroidx/lifecycle/LifecycleKt;->getCoroutineScope(Landroidx/lifecycle/Lifecycle;)Landroidx/lifecycle/LifecycleCoroutineScope; +Landroidx/lifecycle/LifecycleObserver; +Landroidx/lifecycle/LifecycleOwner; +Landroidx/lifecycle/LifecycleOwnerKt; +HSPLandroidx/lifecycle/LifecycleOwnerKt;->getLifecycleScope(Landroidx/lifecycle/LifecycleOwner;)Landroidx/lifecycle/LifecycleCoroutineScope; +Landroidx/lifecycle/LifecycleRegistry; +HSPLandroidx/lifecycle/LifecycleRegistry;->()V +HSPLandroidx/lifecycle/LifecycleRegistry;->(Landroidx/lifecycle/LifecycleOwner;)V +HSPLandroidx/lifecycle/LifecycleRegistry;->(Landroidx/lifecycle/LifecycleOwner;Z)V +HSPLandroidx/lifecycle/LifecycleRegistry;->addObserver(Landroidx/lifecycle/LifecycleObserver;)V +HSPLandroidx/lifecycle/LifecycleRegistry;->calculateTargetState(Landroidx/lifecycle/LifecycleObserver;)Landroidx/lifecycle/Lifecycle$State; +HSPLandroidx/lifecycle/LifecycleRegistry;->enforceMainThreadIfNeeded(Ljava/lang/String;)V +HSPLandroidx/lifecycle/LifecycleRegistry;->forwardPass(Landroidx/lifecycle/LifecycleOwner;)V +HSPLandroidx/lifecycle/LifecycleRegistry;->getCurrentState()Landroidx/lifecycle/Lifecycle$State; +HSPLandroidx/lifecycle/LifecycleRegistry;->getCurrentStateFlow()Lkotlinx/coroutines/flow/StateFlow; +HSPLandroidx/lifecycle/LifecycleRegistry;->handleLifecycleEvent(Landroidx/lifecycle/Lifecycle$Event;)V +HSPLandroidx/lifecycle/LifecycleRegistry;->isSynced()Z +HSPLandroidx/lifecycle/LifecycleRegistry;->moveToState(Landroidx/lifecycle/Lifecycle$State;)V +HSPLandroidx/lifecycle/LifecycleRegistry;->popParentState()V +HSPLandroidx/lifecycle/LifecycleRegistry;->pushParentState(Landroidx/lifecycle/Lifecycle$State;)V +HSPLandroidx/lifecycle/LifecycleRegistry;->removeObserver(Landroidx/lifecycle/LifecycleObserver;)V +HSPLandroidx/lifecycle/LifecycleRegistry;->sync()V +Landroidx/lifecycle/LifecycleRegistry$Companion; +HSPLandroidx/lifecycle/LifecycleRegistry$Companion;->()V +HSPLandroidx/lifecycle/LifecycleRegistry$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/lifecycle/LifecycleRegistry$Companion;->min$lifecycle_runtime_release(Landroidx/lifecycle/Lifecycle$State;Landroidx/lifecycle/Lifecycle$State;)Landroidx/lifecycle/Lifecycle$State; +Landroidx/lifecycle/LifecycleRegistry$ObserverWithState; +HSPLandroidx/lifecycle/LifecycleRegistry$ObserverWithState;->(Landroidx/lifecycle/LifecycleObserver;Landroidx/lifecycle/Lifecycle$State;)V +HSPLandroidx/lifecycle/LifecycleRegistry$ObserverWithState;->dispatchEvent(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +HSPLandroidx/lifecycle/LifecycleRegistry$ObserverWithState;->getState()Landroidx/lifecycle/Lifecycle$State; +Landroidx/lifecycle/LifecycleRegistryOwner; +Landroidx/lifecycle/Lifecycling; +HSPLandroidx/lifecycle/Lifecycling;->()V +HSPLandroidx/lifecycle/Lifecycling;->()V +HSPLandroidx/lifecycle/Lifecycling;->lifecycleEventObserver(Ljava/lang/Object;)Landroidx/lifecycle/LifecycleEventObserver; +Landroidx/lifecycle/LiveData; +HSPLandroidx/lifecycle/LiveData;->()V +HSPLandroidx/lifecycle/LiveData;->()V +HSPLandroidx/lifecycle/LiveData;->assertMainThread(Ljava/lang/String;)V +HSPLandroidx/lifecycle/LiveData;->dispatchingValue(Landroidx/lifecycle/LiveData$ObserverWrapper;)V +HSPLandroidx/lifecycle/LiveData;->postValue(Ljava/lang/Object;)V +HSPLandroidx/lifecycle/LiveData;->setValue(Ljava/lang/Object;)V +Landroidx/lifecycle/LiveData$1; +HSPLandroidx/lifecycle/LiveData$1;->(Landroidx/lifecycle/LiveData;)V +HSPLandroidx/lifecycle/LiveData$1;->run()V +Landroidx/lifecycle/MutableLiveData; +HSPLandroidx/lifecycle/MutableLiveData;->()V +HSPLandroidx/lifecycle/MutableLiveData;->postValue(Ljava/lang/Object;)V +HSPLandroidx/lifecycle/MutableLiveData;->setValue(Ljava/lang/Object;)V +Landroidx/lifecycle/ProcessLifecycleInitializer; +HSPLandroidx/lifecycle/ProcessLifecycleInitializer;->()V +HSPLandroidx/lifecycle/ProcessLifecycleInitializer;->create(Landroid/content/Context;)Landroidx/lifecycle/LifecycleOwner; +HSPLandroidx/lifecycle/ProcessLifecycleInitializer;->create(Landroid/content/Context;)Ljava/lang/Object; +HSPLandroidx/lifecycle/ProcessLifecycleInitializer;->dependencies()Ljava/util/List; +Landroidx/lifecycle/ProcessLifecycleOwner; +HSPLandroidx/lifecycle/ProcessLifecycleOwner;->()V +HSPLandroidx/lifecycle/ProcessLifecycleOwner;->()V +HSPLandroidx/lifecycle/ProcessLifecycleOwner;->access$getNewInstance$cp()Landroidx/lifecycle/ProcessLifecycleOwner; +HSPLandroidx/lifecycle/ProcessLifecycleOwner;->activityResumed$lifecycle_process_release()V +HSPLandroidx/lifecycle/ProcessLifecycleOwner;->activityStarted$lifecycle_process_release()V +HSPLandroidx/lifecycle/ProcessLifecycleOwner;->attach$lifecycle_process_release(Landroid/content/Context;)V +HSPLandroidx/lifecycle/ProcessLifecycleOwner;->getLifecycle()Landroidx/lifecycle/Lifecycle; +Landroidx/lifecycle/ProcessLifecycleOwner$$ExternalSyntheticLambda0; +HSPLandroidx/lifecycle/ProcessLifecycleOwner$$ExternalSyntheticLambda0;->(Landroidx/lifecycle/ProcessLifecycleOwner;)V +Landroidx/lifecycle/ProcessLifecycleOwner$Api29Impl; +HSPLandroidx/lifecycle/ProcessLifecycleOwner$Api29Impl;->()V +HSPLandroidx/lifecycle/ProcessLifecycleOwner$Api29Impl;->()V +HSPLandroidx/lifecycle/ProcessLifecycleOwner$Api29Impl;->registerActivityLifecycleCallbacks(Landroid/app/Activity;Landroid/app/Application$ActivityLifecycleCallbacks;)V +Landroidx/lifecycle/ProcessLifecycleOwner$Companion; +HSPLandroidx/lifecycle/ProcessLifecycleOwner$Companion;->()V +HSPLandroidx/lifecycle/ProcessLifecycleOwner$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/lifecycle/ProcessLifecycleOwner$Companion;->get()Landroidx/lifecycle/LifecycleOwner; +HSPLandroidx/lifecycle/ProcessLifecycleOwner$Companion;->init$lifecycle_process_release(Landroid/content/Context;)V +Landroidx/lifecycle/ProcessLifecycleOwner$attach$1; +HSPLandroidx/lifecycle/ProcessLifecycleOwner$attach$1;->(Landroidx/lifecycle/ProcessLifecycleOwner;)V +HSPLandroidx/lifecycle/ProcessLifecycleOwner$attach$1;->onActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V +HSPLandroidx/lifecycle/ProcessLifecycleOwner$attach$1;->onActivityPreCreated(Landroid/app/Activity;Landroid/os/Bundle;)V +Landroidx/lifecycle/ProcessLifecycleOwner$attach$1$onActivityPreCreated$1; +HSPLandroidx/lifecycle/ProcessLifecycleOwner$attach$1$onActivityPreCreated$1;->(Landroidx/lifecycle/ProcessLifecycleOwner;)V +HSPLandroidx/lifecycle/ProcessLifecycleOwner$attach$1$onActivityPreCreated$1;->onActivityPostResumed(Landroid/app/Activity;)V +HSPLandroidx/lifecycle/ProcessLifecycleOwner$attach$1$onActivityPreCreated$1;->onActivityPostStarted(Landroid/app/Activity;)V +Landroidx/lifecycle/ProcessLifecycleOwner$initializationListener$1; +HSPLandroidx/lifecycle/ProcessLifecycleOwner$initializationListener$1;->(Landroidx/lifecycle/ProcessLifecycleOwner;)V +Landroidx/lifecycle/ReportFragment; +HSPLandroidx/lifecycle/ReportFragment;->()V +HSPLandroidx/lifecycle/ReportFragment;->()V +HSPLandroidx/lifecycle/ReportFragment;->dispatch(Landroidx/lifecycle/Lifecycle$Event;)V +HSPLandroidx/lifecycle/ReportFragment;->dispatchCreate(Landroidx/lifecycle/ReportFragment$ActivityInitializationListener;)V +HSPLandroidx/lifecycle/ReportFragment;->dispatchResume(Landroidx/lifecycle/ReportFragment$ActivityInitializationListener;)V +HSPLandroidx/lifecycle/ReportFragment;->dispatchStart(Landroidx/lifecycle/ReportFragment$ActivityInitializationListener;)V +HSPLandroidx/lifecycle/ReportFragment;->injectIfNeededIn(Landroid/app/Activity;)V +HSPLandroidx/lifecycle/ReportFragment;->onActivityCreated(Landroid/os/Bundle;)V +HSPLandroidx/lifecycle/ReportFragment;->onResume()V +HSPLandroidx/lifecycle/ReportFragment;->onStart()V +Landroidx/lifecycle/ReportFragment$ActivityInitializationListener; +Landroidx/lifecycle/ReportFragment$Companion; +HSPLandroidx/lifecycle/ReportFragment$Companion;->()V +HSPLandroidx/lifecycle/ReportFragment$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/lifecycle/ReportFragment$Companion;->dispatch$lifecycle_runtime_release(Landroid/app/Activity;Landroidx/lifecycle/Lifecycle$Event;)V +HSPLandroidx/lifecycle/ReportFragment$Companion;->injectIfNeededIn(Landroid/app/Activity;)V +Landroidx/lifecycle/ReportFragment$LifecycleCallbacks; +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->()V +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->()V +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityPostCreated(Landroid/app/Activity;Landroid/os/Bundle;)V +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityPostResumed(Landroid/app/Activity;)V +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityPostStarted(Landroid/app/Activity;)V +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityResumed(Landroid/app/Activity;)V +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityStarted(Landroid/app/Activity;)V +Landroidx/lifecycle/ReportFragment$LifecycleCallbacks$Companion; +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks$Companion;->()V +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks$Companion;->registerIn(Landroid/app/Activity;)V +Landroidx/lifecycle/SavedStateHandleAttacher; +HSPLandroidx/lifecycle/SavedStateHandleAttacher;->(Landroidx/lifecycle/SavedStateHandlesProvider;)V +HSPLandroidx/lifecycle/SavedStateHandleAttacher;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +Landroidx/lifecycle/SavedStateHandleSupport; +HSPLandroidx/lifecycle/SavedStateHandleSupport;->()V +HSPLandroidx/lifecycle/SavedStateHandleSupport;->enableSavedStateHandles(Landroidx/savedstate/SavedStateRegistryOwner;)V +HSPLandroidx/lifecycle/SavedStateHandleSupport;->getSavedStateHandlesVM(Landroidx/lifecycle/ViewModelStoreOwner;)Landroidx/lifecycle/SavedStateHandlesVM; +Landroidx/lifecycle/SavedStateHandleSupport$DEFAULT_ARGS_KEY$1; +HSPLandroidx/lifecycle/SavedStateHandleSupport$DEFAULT_ARGS_KEY$1;->()V +Landroidx/lifecycle/SavedStateHandleSupport$SAVED_STATE_REGISTRY_OWNER_KEY$1; +HSPLandroidx/lifecycle/SavedStateHandleSupport$SAVED_STATE_REGISTRY_OWNER_KEY$1;->()V +Landroidx/lifecycle/SavedStateHandleSupport$VIEW_MODEL_STORE_OWNER_KEY$1; +HSPLandroidx/lifecycle/SavedStateHandleSupport$VIEW_MODEL_STORE_OWNER_KEY$1;->()V +Landroidx/lifecycle/SavedStateHandleSupport$savedStateHandlesVM$1; +HSPLandroidx/lifecycle/SavedStateHandleSupport$savedStateHandlesVM$1;->()V +HSPLandroidx/lifecycle/SavedStateHandleSupport$savedStateHandlesVM$1;->create(Ljava/lang/Class;Landroidx/lifecycle/viewmodel/CreationExtras;)Landroidx/lifecycle/ViewModel; +Landroidx/lifecycle/SavedStateHandlesProvider; +HSPLandroidx/lifecycle/SavedStateHandlesProvider;->(Landroidx/savedstate/SavedStateRegistry;Landroidx/lifecycle/ViewModelStoreOwner;)V +HSPLandroidx/lifecycle/SavedStateHandlesProvider;->getViewModel()Landroidx/lifecycle/SavedStateHandlesVM; +HSPLandroidx/lifecycle/SavedStateHandlesProvider;->performRestore()V +Landroidx/lifecycle/SavedStateHandlesProvider$viewModel$2; +HSPLandroidx/lifecycle/SavedStateHandlesProvider$viewModel$2;->(Landroidx/lifecycle/ViewModelStoreOwner;)V +HSPLandroidx/lifecycle/SavedStateHandlesProvider$viewModel$2;->invoke()Landroidx/lifecycle/SavedStateHandlesVM; +HSPLandroidx/lifecycle/SavedStateHandlesProvider$viewModel$2;->invoke()Ljava/lang/Object; +Landroidx/lifecycle/SavedStateHandlesVM; +HSPLandroidx/lifecycle/SavedStateHandlesVM;->()V +Landroidx/lifecycle/ViewModel; +HSPLandroidx/lifecycle/ViewModel;->()V +Landroidx/lifecycle/ViewModelProvider; +HSPLandroidx/lifecycle/ViewModelProvider;->(Landroidx/lifecycle/ViewModelStore;Landroidx/lifecycle/ViewModelProvider$Factory;)V +HSPLandroidx/lifecycle/ViewModelProvider;->(Landroidx/lifecycle/ViewModelStore;Landroidx/lifecycle/ViewModelProvider$Factory;Landroidx/lifecycle/viewmodel/CreationExtras;)V +HSPLandroidx/lifecycle/ViewModelProvider;->(Landroidx/lifecycle/ViewModelStore;Landroidx/lifecycle/ViewModelProvider$Factory;Landroidx/lifecycle/viewmodel/CreationExtras;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/lifecycle/ViewModelProvider;->(Landroidx/lifecycle/ViewModelStoreOwner;Landroidx/lifecycle/ViewModelProvider$Factory;)V +HSPLandroidx/lifecycle/ViewModelProvider;->get(Ljava/lang/Class;)Landroidx/lifecycle/ViewModel; +HSPLandroidx/lifecycle/ViewModelProvider;->get(Ljava/lang/String;Ljava/lang/Class;)Landroidx/lifecycle/ViewModel; +Landroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory; +HSPLandroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory;->()V +Landroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory$Companion; +HSPLandroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory$Companion;->()V +HSPLandroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory$Companion$ApplicationKeyImpl; +HSPLandroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory$Companion$ApplicationKeyImpl;->()V +HSPLandroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory$Companion$ApplicationKeyImpl;->()V +Landroidx/lifecycle/ViewModelProvider$Factory; +HSPLandroidx/lifecycle/ViewModelProvider$Factory;->()V +HSPLandroidx/lifecycle/ViewModelProvider$Factory;->create(Ljava/lang/Class;Landroidx/lifecycle/viewmodel/CreationExtras;)Landroidx/lifecycle/ViewModel; +Landroidx/lifecycle/ViewModelProvider$Factory$Companion; +HSPLandroidx/lifecycle/ViewModelProvider$Factory$Companion;->()V +HSPLandroidx/lifecycle/ViewModelProvider$Factory$Companion;->()V +Landroidx/lifecycle/ViewModelProvider$NewInstanceFactory; +HSPLandroidx/lifecycle/ViewModelProvider$NewInstanceFactory;->()V +Landroidx/lifecycle/ViewModelProvider$NewInstanceFactory$Companion; +HSPLandroidx/lifecycle/ViewModelProvider$NewInstanceFactory$Companion;->()V +HSPLandroidx/lifecycle/ViewModelProvider$NewInstanceFactory$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/lifecycle/ViewModelProvider$NewInstanceFactory$Companion$ViewModelKeyImpl; +HSPLandroidx/lifecycle/ViewModelProvider$NewInstanceFactory$Companion$ViewModelKeyImpl;->()V +HSPLandroidx/lifecycle/ViewModelProvider$NewInstanceFactory$Companion$ViewModelKeyImpl;->()V +Landroidx/lifecycle/ViewModelProviderGetKt; +HSPLandroidx/lifecycle/ViewModelProviderGetKt;->defaultCreationExtras(Landroidx/lifecycle/ViewModelStoreOwner;)Landroidx/lifecycle/viewmodel/CreationExtras; +Landroidx/lifecycle/ViewModelStore; +HSPLandroidx/lifecycle/ViewModelStore;->()V +HSPLandroidx/lifecycle/ViewModelStore;->get(Ljava/lang/String;)Landroidx/lifecycle/ViewModel; +HSPLandroidx/lifecycle/ViewModelStore;->put(Ljava/lang/String;Landroidx/lifecycle/ViewModel;)V +Landroidx/lifecycle/ViewModelStoreOwner; +Landroidx/lifecycle/ViewTreeLifecycleOwner; +HSPLandroidx/lifecycle/ViewTreeLifecycleOwner;->get(Landroid/view/View;)Landroidx/lifecycle/LifecycleOwner; +HSPLandroidx/lifecycle/ViewTreeLifecycleOwner;->set(Landroid/view/View;Landroidx/lifecycle/LifecycleOwner;)V +Landroidx/lifecycle/ViewTreeLifecycleOwner$findViewTreeLifecycleOwner$1; +HSPLandroidx/lifecycle/ViewTreeLifecycleOwner$findViewTreeLifecycleOwner$1;->()V +HSPLandroidx/lifecycle/ViewTreeLifecycleOwner$findViewTreeLifecycleOwner$1;->()V +HSPLandroidx/lifecycle/ViewTreeLifecycleOwner$findViewTreeLifecycleOwner$1;->invoke(Landroid/view/View;)Landroid/view/View; +HSPLandroidx/lifecycle/ViewTreeLifecycleOwner$findViewTreeLifecycleOwner$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/lifecycle/ViewTreeLifecycleOwner$findViewTreeLifecycleOwner$2; +HSPLandroidx/lifecycle/ViewTreeLifecycleOwner$findViewTreeLifecycleOwner$2;->()V +HSPLandroidx/lifecycle/ViewTreeLifecycleOwner$findViewTreeLifecycleOwner$2;->()V +HSPLandroidx/lifecycle/ViewTreeLifecycleOwner$findViewTreeLifecycleOwner$2;->invoke(Landroid/view/View;)Landroidx/lifecycle/LifecycleOwner; +HSPLandroidx/lifecycle/ViewTreeLifecycleOwner$findViewTreeLifecycleOwner$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/lifecycle/ViewTreeViewModelStoreOwner; +HSPLandroidx/lifecycle/ViewTreeViewModelStoreOwner;->get(Landroid/view/View;)Landroidx/lifecycle/ViewModelStoreOwner; +HSPLandroidx/lifecycle/ViewTreeViewModelStoreOwner;->set(Landroid/view/View;Landroidx/lifecycle/ViewModelStoreOwner;)V +Landroidx/lifecycle/ViewTreeViewModelStoreOwner$findViewTreeViewModelStoreOwner$1; +HSPLandroidx/lifecycle/ViewTreeViewModelStoreOwner$findViewTreeViewModelStoreOwner$1;->()V +HSPLandroidx/lifecycle/ViewTreeViewModelStoreOwner$findViewTreeViewModelStoreOwner$1;->()V +HSPLandroidx/lifecycle/ViewTreeViewModelStoreOwner$findViewTreeViewModelStoreOwner$1;->invoke(Landroid/view/View;)Landroid/view/View; +HSPLandroidx/lifecycle/ViewTreeViewModelStoreOwner$findViewTreeViewModelStoreOwner$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/lifecycle/ViewTreeViewModelStoreOwner$findViewTreeViewModelStoreOwner$2; +HSPLandroidx/lifecycle/ViewTreeViewModelStoreOwner$findViewTreeViewModelStoreOwner$2;->()V +HSPLandroidx/lifecycle/ViewTreeViewModelStoreOwner$findViewTreeViewModelStoreOwner$2;->()V +HSPLandroidx/lifecycle/ViewTreeViewModelStoreOwner$findViewTreeViewModelStoreOwner$2;->invoke(Landroid/view/View;)Landroidx/lifecycle/ViewModelStoreOwner; +HSPLandroidx/lifecycle/ViewTreeViewModelStoreOwner$findViewTreeViewModelStoreOwner$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/lifecycle/runtime/R$id; +Landroidx/lifecycle/viewmodel/CreationExtras; +HSPLandroidx/lifecycle/viewmodel/CreationExtras;->()V +HSPLandroidx/lifecycle/viewmodel/CreationExtras;->getMap$lifecycle_viewmodel_release()Ljava/util/Map; +Landroidx/lifecycle/viewmodel/CreationExtras$Empty; +HSPLandroidx/lifecycle/viewmodel/CreationExtras$Empty;->()V +HSPLandroidx/lifecycle/viewmodel/CreationExtras$Empty;->()V +Landroidx/lifecycle/viewmodel/CreationExtras$Key; +Landroidx/lifecycle/viewmodel/MutableCreationExtras; +HSPLandroidx/lifecycle/viewmodel/MutableCreationExtras;->()V +HSPLandroidx/lifecycle/viewmodel/MutableCreationExtras;->(Landroidx/lifecycle/viewmodel/CreationExtras;)V +HSPLandroidx/lifecycle/viewmodel/MutableCreationExtras;->(Landroidx/lifecycle/viewmodel/CreationExtras;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/lifecycle/viewmodel/MutableCreationExtras;->set(Landroidx/lifecycle/viewmodel/CreationExtras$Key;Ljava/lang/Object;)V +Landroidx/lifecycle/viewmodel/R$id; +Landroidx/loader/content/Loader; +PLandroidx/profileinstaller/ProfileInstallReceiver;->()V +PLandroidx/profileinstaller/ProfileInstallReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLandroidx/profileinstaller/ProfileInstallReceiver;->saveProfile(Landroidx/profileinstaller/ProfileInstaller$DiagnosticsCallback;)V +PLandroidx/profileinstaller/ProfileInstallReceiver$ResultDiagnostics;->(Landroidx/profileinstaller/ProfileInstallReceiver;)V +PLandroidx/profileinstaller/ProfileInstallReceiver$ResultDiagnostics;->onResultReceived(ILjava/lang/Object;)V +PLandroidx/profileinstaller/ProfileInstaller;->()V +PLandroidx/profileinstaller/ProfileInstaller;->hasAlreadyWrittenProfileForThisInstall(Landroid/content/pm/PackageInfo;Ljava/io/File;Landroidx/profileinstaller/ProfileInstaller$DiagnosticsCallback;)Z +PLandroidx/profileinstaller/ProfileInstaller;->writeProfile(Landroid/content/Context;)V +PLandroidx/profileinstaller/ProfileInstaller;->writeProfile(Landroid/content/Context;Ljava/util/concurrent/Executor;Landroidx/profileinstaller/ProfileInstaller$DiagnosticsCallback;)V +PLandroidx/profileinstaller/ProfileInstaller;->writeProfile(Landroid/content/Context;Ljava/util/concurrent/Executor;Landroidx/profileinstaller/ProfileInstaller$DiagnosticsCallback;Z)V +PLandroidx/profileinstaller/ProfileInstaller$1;->()V +PLandroidx/profileinstaller/ProfileInstaller$1;->onResultReceived(ILjava/lang/Object;)V +PLandroidx/profileinstaller/ProfileInstaller$2;->()V +PLandroidx/profileinstaller/ProfileInstaller$2;->onResultReceived(ILjava/lang/Object;)V +Landroidx/profileinstaller/ProfileInstallerInitializer; +HSPLandroidx/profileinstaller/ProfileInstallerInitializer;->()V +HSPLandroidx/profileinstaller/ProfileInstallerInitializer;->create(Landroid/content/Context;)Landroidx/profileinstaller/ProfileInstallerInitializer$Result; +HSPLandroidx/profileinstaller/ProfileInstallerInitializer;->create(Landroid/content/Context;)Ljava/lang/Object; +HSPLandroidx/profileinstaller/ProfileInstallerInitializer;->delayAfterFirstFrame(Landroid/content/Context;)V +HSPLandroidx/profileinstaller/ProfileInstallerInitializer;->dependencies()Ljava/util/List; +HSPLandroidx/profileinstaller/ProfileInstallerInitializer;->installAfterDelay(Landroid/content/Context;)V +HSPLandroidx/profileinstaller/ProfileInstallerInitializer;->lambda$delayAfterFirstFrame$0$androidx-profileinstaller-ProfileInstallerInitializer(Landroid/content/Context;)V +PLandroidx/profileinstaller/ProfileInstallerInitializer;->lambda$installAfterDelay$1(Landroid/content/Context;)V +PLandroidx/profileinstaller/ProfileInstallerInitializer;->lambda$writeInBackground$2(Landroid/content/Context;)V +PLandroidx/profileinstaller/ProfileInstallerInitializer;->writeInBackground(Landroid/content/Context;)V +Landroidx/profileinstaller/ProfileInstallerInitializer$$ExternalSyntheticLambda0; +HSPLandroidx/profileinstaller/ProfileInstallerInitializer$$ExternalSyntheticLambda0;->(Landroid/content/Context;)V +PLandroidx/profileinstaller/ProfileInstallerInitializer$$ExternalSyntheticLambda0;->run()V +Landroidx/profileinstaller/ProfileInstallerInitializer$$ExternalSyntheticLambda1; +HSPLandroidx/profileinstaller/ProfileInstallerInitializer$$ExternalSyntheticLambda1;->(Landroidx/profileinstaller/ProfileInstallerInitializer;Landroid/content/Context;)V +HSPLandroidx/profileinstaller/ProfileInstallerInitializer$$ExternalSyntheticLambda1;->run()V +PLandroidx/profileinstaller/ProfileInstallerInitializer$$ExternalSyntheticLambda2;->(Landroid/content/Context;)V +PLandroidx/profileinstaller/ProfileInstallerInitializer$$ExternalSyntheticLambda2;->run()V +Landroidx/profileinstaller/ProfileInstallerInitializer$Choreographer16Impl; +HSPLandroidx/profileinstaller/ProfileInstallerInitializer$Choreographer16Impl;->lambda$postFrameCallback$0(Ljava/lang/Runnable;J)V +HSPLandroidx/profileinstaller/ProfileInstallerInitializer$Choreographer16Impl;->postFrameCallback(Ljava/lang/Runnable;)V +Landroidx/profileinstaller/ProfileInstallerInitializer$Choreographer16Impl$$ExternalSyntheticLambda0; +HSPLandroidx/profileinstaller/ProfileInstallerInitializer$Choreographer16Impl$$ExternalSyntheticLambda0;->(Ljava/lang/Runnable;)V +HSPLandroidx/profileinstaller/ProfileInstallerInitializer$Choreographer16Impl$$ExternalSyntheticLambda0;->doFrame(J)V +Landroidx/profileinstaller/ProfileInstallerInitializer$Handler28Impl; +HSPLandroidx/profileinstaller/ProfileInstallerInitializer$Handler28Impl;->createAsync(Landroid/os/Looper;)Landroid/os/Handler; +Landroidx/profileinstaller/ProfileInstallerInitializer$Result; +HSPLandroidx/profileinstaller/ProfileInstallerInitializer$Result;->()V +PLandroidx/profileinstaller/ProfileVerifier;->()V +PLandroidx/profileinstaller/ProfileVerifier;->getPackageLastUpdateTime(Landroid/content/Context;)J +PLandroidx/profileinstaller/ProfileVerifier;->setCompilationStatus(IZZ)Landroidx/profileinstaller/ProfileVerifier$CompilationStatus; +PLandroidx/profileinstaller/ProfileVerifier;->writeProfileVerification(Landroid/content/Context;Z)Landroidx/profileinstaller/ProfileVerifier$CompilationStatus; +PLandroidx/profileinstaller/ProfileVerifier$Api33Impl;->getPackageInfo(Landroid/content/pm/PackageManager;Landroid/content/Context;)Landroid/content/pm/PackageInfo; +PLandroidx/profileinstaller/ProfileVerifier$Cache;->(IIJJ)V +PLandroidx/profileinstaller/ProfileVerifier$Cache;->equals(Ljava/lang/Object;)Z +PLandroidx/profileinstaller/ProfileVerifier$Cache;->readFromFile(Ljava/io/File;)Landroidx/profileinstaller/ProfileVerifier$Cache; +PLandroidx/profileinstaller/ProfileVerifier$Cache;->writeOnFile(Ljava/io/File;)V +PLandroidx/profileinstaller/ProfileVerifier$CompilationStatus;->(IZZ)V +Landroidx/room/AutoClosingRoomOpenHelper; +Landroidx/room/CoroutinesRoom; +HSPLandroidx/room/CoroutinesRoom;->()V +HSPLandroidx/room/CoroutinesRoom;->createFlow(Landroidx/room/RoomDatabase;Z[Ljava/lang/String;Ljava/util/concurrent/Callable;)Lkotlinx/coroutines/flow/Flow; +HSPLandroidx/room/CoroutinesRoom;->execute(Landroidx/room/RoomDatabase;ZLjava/util/concurrent/Callable;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/room/CoroutinesRoom$Companion; +HSPLandroidx/room/CoroutinesRoom$Companion;->()V +HSPLandroidx/room/CoroutinesRoom$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/room/CoroutinesRoom$Companion;->createFlow(Landroidx/room/RoomDatabase;Z[Ljava/lang/String;Ljava/util/concurrent/Callable;)Lkotlinx/coroutines/flow/Flow; +HSPLandroidx/room/CoroutinesRoom$Companion;->execute(Landroidx/room/RoomDatabase;ZLjava/util/concurrent/Callable;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/room/CoroutinesRoom$Companion$createFlow$1; +HSPLandroidx/room/CoroutinesRoom$Companion$createFlow$1;->(ZLandroidx/room/RoomDatabase;[Ljava/lang/String;Ljava/util/concurrent/Callable;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/room/CoroutinesRoom$Companion$createFlow$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/room/CoroutinesRoom$Companion$createFlow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/room/CoroutinesRoom$Companion$createFlow$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/room/CoroutinesRoom$Companion$createFlow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/room/CoroutinesRoom$Companion$createFlow$1$1; +HSPLandroidx/room/CoroutinesRoom$Companion$createFlow$1$1;->(ZLandroidx/room/RoomDatabase;Lkotlinx/coroutines/flow/FlowCollector;[Ljava/lang/String;Ljava/util/concurrent/Callable;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/room/CoroutinesRoom$Companion$createFlow$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/room/CoroutinesRoom$Companion$createFlow$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/room/CoroutinesRoom$Companion$createFlow$1$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/room/CoroutinesRoom$Companion$createFlow$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/room/CoroutinesRoom$Companion$createFlow$1$1$1; +HSPLandroidx/room/CoroutinesRoom$Companion$createFlow$1$1$1;->(Landroidx/room/RoomDatabase;Landroidx/room/CoroutinesRoom$Companion$createFlow$1$1$observer$1;Lkotlinx/coroutines/channels/Channel;Ljava/util/concurrent/Callable;Lkotlinx/coroutines/channels/Channel;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/room/CoroutinesRoom$Companion$createFlow$1$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/room/CoroutinesRoom$Companion$createFlow$1$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/room/CoroutinesRoom$Companion$createFlow$1$1$observer$1; +HSPLandroidx/room/CoroutinesRoom$Companion$createFlow$1$1$observer$1;->([Ljava/lang/String;Lkotlinx/coroutines/channels/Channel;)V +Landroidx/room/DatabaseConfiguration; +HSPLandroidx/room/DatabaseConfiguration;->(Landroid/content/Context;Ljava/lang/String;Landroidx/sqlite/db/SupportSQLiteOpenHelper$Factory;Landroidx/room/RoomDatabase$MigrationContainer;Ljava/util/List;ZLandroidx/room/RoomDatabase$JournalMode;Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executor;Landroid/content/Intent;ZZLjava/util/Set;Ljava/lang/String;Ljava/io/File;Ljava/util/concurrent/Callable;Landroidx/room/RoomDatabase$PrepackagedDatabaseCallback;Ljava/util/List;Ljava/util/List;)V +Landroidx/room/DelegatingOpenHelper; +Landroidx/room/EntityDeletionOrUpdateAdapter; +HSPLandroidx/room/EntityDeletionOrUpdateAdapter;->(Landroidx/room/RoomDatabase;)V +Landroidx/room/EntityInsertionAdapter; +HSPLandroidx/room/EntityInsertionAdapter;->(Landroidx/room/RoomDatabase;)V +HSPLandroidx/room/EntityInsertionAdapter;->insert(Ljava/lang/Object;)V +Landroidx/room/InvalidationLiveDataContainer; +HSPLandroidx/room/InvalidationLiveDataContainer;->(Landroidx/room/RoomDatabase;)V +Landroidx/room/InvalidationTracker; +HSPLandroidx/room/InvalidationTracker;->()V +HSPLandroidx/room/InvalidationTracker;->(Landroidx/room/RoomDatabase;Ljava/util/Map;Ljava/util/Map;[Ljava/lang/String;)V +HSPLandroidx/room/InvalidationTracker;->access$getAutoCloser$p(Landroidx/room/InvalidationTracker;)Landroidx/room/AutoCloser; +HSPLandroidx/room/InvalidationTracker;->addObserver(Landroidx/room/InvalidationTracker$Observer;)V +HSPLandroidx/room/InvalidationTracker;->ensureInitialization$room_runtime_release()Z +HSPLandroidx/room/InvalidationTracker;->getDatabase$room_runtime_release()Landroidx/room/RoomDatabase; +HSPLandroidx/room/InvalidationTracker;->getPendingRefresh()Ljava/util/concurrent/atomic/AtomicBoolean; +HSPLandroidx/room/InvalidationTracker;->internalInit$room_runtime_release(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +HSPLandroidx/room/InvalidationTracker;->refreshVersionsAsync()V +HSPLandroidx/room/InvalidationTracker;->removeObserver(Landroidx/room/InvalidationTracker$Observer;)V +HSPLandroidx/room/InvalidationTracker;->resolveViews([Ljava/lang/String;)[Ljava/lang/String; +HSPLandroidx/room/InvalidationTracker;->syncTriggers$room_runtime_release()V +HSPLandroidx/room/InvalidationTracker;->syncTriggers$room_runtime_release(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +Landroidx/room/InvalidationTracker$Companion; +HSPLandroidx/room/InvalidationTracker$Companion;->()V +HSPLandroidx/room/InvalidationTracker$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/room/InvalidationTracker$ObservedTableTracker; +HSPLandroidx/room/InvalidationTracker$ObservedTableTracker;->()V +HSPLandroidx/room/InvalidationTracker$ObservedTableTracker;->(I)V +HSPLandroidx/room/InvalidationTracker$ObservedTableTracker;->getTablesToSync()[I +HSPLandroidx/room/InvalidationTracker$ObservedTableTracker;->onAdded([I)Z +HSPLandroidx/room/InvalidationTracker$ObservedTableTracker;->onRemoved([I)Z +Landroidx/room/InvalidationTracker$ObservedTableTracker$Companion; +HSPLandroidx/room/InvalidationTracker$ObservedTableTracker$Companion;->()V +HSPLandroidx/room/InvalidationTracker$ObservedTableTracker$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/room/InvalidationTracker$Observer; +HSPLandroidx/room/InvalidationTracker$Observer;->([Ljava/lang/String;)V +HSPLandroidx/room/InvalidationTracker$Observer;->getTables$room_runtime_release()[Ljava/lang/String; +Landroidx/room/InvalidationTracker$ObserverWrapper; +HSPLandroidx/room/InvalidationTracker$ObserverWrapper;->(Landroidx/room/InvalidationTracker$Observer;[I[Ljava/lang/String;)V +HSPLandroidx/room/InvalidationTracker$ObserverWrapper;->getTableIds$room_runtime_release()[I +Landroidx/room/InvalidationTracker$refreshRunnable$1; +HSPLandroidx/room/InvalidationTracker$refreshRunnable$1;->(Landroidx/room/InvalidationTracker;)V +HSPLandroidx/room/InvalidationTracker$refreshRunnable$1;->checkUpdatedTable()Ljava/util/Set; +HSPLandroidx/room/InvalidationTracker$refreshRunnable$1;->run()V +Landroidx/room/Room; +HSPLandroidx/room/Room;->()V +HSPLandroidx/room/Room;->()V +HSPLandroidx/room/Room;->databaseBuilder(Landroid/content/Context;Ljava/lang/Class;Ljava/lang/String;)Landroidx/room/RoomDatabase$Builder; +HSPLandroidx/room/Room;->getGeneratedImplementation(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object; +Landroidx/room/RoomDatabase; +HSPLandroidx/room/RoomDatabase;->()V +HSPLandroidx/room/RoomDatabase;->()V +HSPLandroidx/room/RoomDatabase;->assertNotMainThread()V +HSPLandroidx/room/RoomDatabase;->assertNotSuspendingTransaction()V +HSPLandroidx/room/RoomDatabase;->beginTransaction()V +HSPLandroidx/room/RoomDatabase;->compileStatement(Ljava/lang/String;)Landroidx/sqlite/db/SupportSQLiteStatement; +HSPLandroidx/room/RoomDatabase;->endTransaction()V +HSPLandroidx/room/RoomDatabase;->getCloseLock$room_runtime_release()Ljava/util/concurrent/locks/Lock; +HSPLandroidx/room/RoomDatabase;->getInvalidationTracker()Landroidx/room/InvalidationTracker; +HSPLandroidx/room/RoomDatabase;->getOpenHelper()Landroidx/sqlite/db/SupportSQLiteOpenHelper; +HSPLandroidx/room/RoomDatabase;->getQueryExecutor()Ljava/util/concurrent/Executor; +HSPLandroidx/room/RoomDatabase;->getSuspendingTransactionId()Ljava/lang/ThreadLocal; +HSPLandroidx/room/RoomDatabase;->getTransactionExecutor()Ljava/util/concurrent/Executor; +HSPLandroidx/room/RoomDatabase;->inTransaction()Z +HSPLandroidx/room/RoomDatabase;->init(Landroidx/room/DatabaseConfiguration;)V +HSPLandroidx/room/RoomDatabase;->internalBeginTransaction()V +HSPLandroidx/room/RoomDatabase;->internalEndTransaction()V +HSPLandroidx/room/RoomDatabase;->internalInitInvalidationTracker(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +HSPLandroidx/room/RoomDatabase;->isMainThread$room_runtime_release()Z +HSPLandroidx/room/RoomDatabase;->isOpenInternal()Z +HSPLandroidx/room/RoomDatabase;->query$default(Landroidx/room/RoomDatabase;Landroidx/sqlite/db/SupportSQLiteQuery;Landroid/os/CancellationSignal;ILjava/lang/Object;)Landroid/database/Cursor; +HSPLandroidx/room/RoomDatabase;->query(Landroidx/sqlite/db/SupportSQLiteQuery;Landroid/os/CancellationSignal;)Landroid/database/Cursor; +HSPLandroidx/room/RoomDatabase;->runInTransaction(Ljava/util/concurrent/Callable;)Ljava/lang/Object; +HSPLandroidx/room/RoomDatabase;->setTransactionSuccessful()V +HSPLandroidx/room/RoomDatabase;->unwrapOpenHelper(Ljava/lang/Class;Landroidx/sqlite/db/SupportSQLiteOpenHelper;)Ljava/lang/Object; +Landroidx/room/RoomDatabase$Builder; +HSPLandroidx/room/RoomDatabase$Builder;->(Landroid/content/Context;Ljava/lang/Class;Ljava/lang/String;)V +HSPLandroidx/room/RoomDatabase$Builder;->addCallback(Landroidx/room/RoomDatabase$Callback;)Landroidx/room/RoomDatabase$Builder; +HSPLandroidx/room/RoomDatabase$Builder;->addMigrations([Landroidx/room/migration/Migration;)Landroidx/room/RoomDatabase$Builder; +HSPLandroidx/room/RoomDatabase$Builder;->addTypeConverter(Ljava/lang/Object;)Landroidx/room/RoomDatabase$Builder; +HSPLandroidx/room/RoomDatabase$Builder;->build()Landroidx/room/RoomDatabase; +HSPLandroidx/room/RoomDatabase$Builder;->fallbackToDestructiveMigration()Landroidx/room/RoomDatabase$Builder; +HSPLandroidx/room/RoomDatabase$Builder;->openHelperFactory(Landroidx/sqlite/db/SupportSQLiteOpenHelper$Factory;)Landroidx/room/RoomDatabase$Builder; +HSPLandroidx/room/RoomDatabase$Builder;->setQueryExecutor(Ljava/util/concurrent/Executor;)Landroidx/room/RoomDatabase$Builder; +Landroidx/room/RoomDatabase$Callback; +HSPLandroidx/room/RoomDatabase$Callback;->()V +HSPLandroidx/room/RoomDatabase$Callback;->onOpen(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +Landroidx/room/RoomDatabase$Companion; +HSPLandroidx/room/RoomDatabase$Companion;->()V +HSPLandroidx/room/RoomDatabase$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/room/RoomDatabase$JournalMode; +HSPLandroidx/room/RoomDatabase$JournalMode;->$values()[Landroidx/room/RoomDatabase$JournalMode; +HSPLandroidx/room/RoomDatabase$JournalMode;->()V +HSPLandroidx/room/RoomDatabase$JournalMode;->(Ljava/lang/String;I)V +HSPLandroidx/room/RoomDatabase$JournalMode;->isLowRamDevice(Landroid/app/ActivityManager;)Z +HSPLandroidx/room/RoomDatabase$JournalMode;->resolve$room_runtime_release(Landroid/content/Context;)Landroidx/room/RoomDatabase$JournalMode; +Landroidx/room/RoomDatabase$MigrationContainer; +HSPLandroidx/room/RoomDatabase$MigrationContainer;->()V +HSPLandroidx/room/RoomDatabase$MigrationContainer;->addMigration(Landroidx/room/migration/Migration;)V +HSPLandroidx/room/RoomDatabase$MigrationContainer;->addMigrations([Landroidx/room/migration/Migration;)V +HSPLandroidx/room/RoomDatabase$MigrationContainer;->contains(II)Z +HSPLandroidx/room/RoomDatabase$MigrationContainer;->getMigrations()Ljava/util/Map; +Landroidx/room/RoomDatabase$PrepackagedDatabaseCallback; +Landroidx/room/RoomDatabaseKt; +HSPLandroidx/room/RoomDatabaseKt;->access$createTransactionContext(Landroidx/room/RoomDatabase;Lkotlin/coroutines/ContinuationInterceptor;)Lkotlin/coroutines/CoroutineContext; +HSPLandroidx/room/RoomDatabaseKt;->createTransactionContext(Landroidx/room/RoomDatabase;Lkotlin/coroutines/ContinuationInterceptor;)Lkotlin/coroutines/CoroutineContext; +HSPLandroidx/room/RoomDatabaseKt;->startTransactionCoroutine(Landroidx/room/RoomDatabase;Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/room/RoomDatabaseKt;->withTransaction(Landroidx/room/RoomDatabase;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/room/RoomDatabaseKt$startTransactionCoroutine$2$1; +HSPLandroidx/room/RoomDatabaseKt$startTransactionCoroutine$2$1;->(Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/CancellableContinuation;Landroidx/room/RoomDatabase;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/room/RoomDatabaseKt$startTransactionCoroutine$2$1;->run()V +Landroidx/room/RoomDatabaseKt$startTransactionCoroutine$2$1$1; +HSPLandroidx/room/RoomDatabaseKt$startTransactionCoroutine$2$1$1;->(Landroidx/room/RoomDatabase;Lkotlinx/coroutines/CancellableContinuation;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/room/RoomDatabaseKt$startTransactionCoroutine$2$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/room/RoomDatabaseKt$startTransactionCoroutine$2$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/room/RoomDatabaseKt$withTransaction$transactionBlock$1; +HSPLandroidx/room/RoomDatabaseKt$withTransaction$transactionBlock$1;->(Landroidx/room/RoomDatabase;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/room/RoomDatabaseKt$withTransaction$transactionBlock$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/room/RoomDatabaseKt$withTransaction$transactionBlock$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/room/RoomDatabaseKt$withTransaction$transactionBlock$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/room/RoomDatabaseKt$withTransaction$transactionBlock$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +PLandroidx/room/RoomMasterTable;->()V +PLandroidx/room/RoomMasterTable;->()V +PLandroidx/room/RoomMasterTable;->createInsertQuery(Ljava/lang/String;)Ljava/lang/String; +Landroidx/room/RoomOpenHelper; +HSPLandroidx/room/RoomOpenHelper;->()V +HSPLandroidx/room/RoomOpenHelper;->(Landroidx/room/DatabaseConfiguration;Landroidx/room/RoomOpenHelper$Delegate;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroidx/room/RoomOpenHelper;->checkIdentity(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +PLandroidx/room/RoomOpenHelper;->createMasterTableIfNotExists(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +HSPLandroidx/room/RoomOpenHelper;->onConfigure(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +PLandroidx/room/RoomOpenHelper;->onCreate(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +HSPLandroidx/room/RoomOpenHelper;->onOpen(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +PLandroidx/room/RoomOpenHelper;->updateIdentity(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +Landroidx/room/RoomOpenHelper$Companion; +HSPLandroidx/room/RoomOpenHelper$Companion;->()V +HSPLandroidx/room/RoomOpenHelper$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +PLandroidx/room/RoomOpenHelper$Companion;->hasEmptySchema$room_runtime_release(Landroidx/sqlite/db/SupportSQLiteDatabase;)Z +HSPLandroidx/room/RoomOpenHelper$Companion;->hasRoomMasterTable$room_runtime_release(Landroidx/sqlite/db/SupportSQLiteDatabase;)Z +Landroidx/room/RoomOpenHelper$Delegate; +HSPLandroidx/room/RoomOpenHelper$Delegate;->(I)V +Landroidx/room/RoomSQLiteQuery; +HSPLandroidx/room/RoomSQLiteQuery;->()V +HSPLandroidx/room/RoomSQLiteQuery;->(I)V +HSPLandroidx/room/RoomSQLiteQuery;->(ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/room/RoomSQLiteQuery;->acquire(Ljava/lang/String;I)Landroidx/room/RoomSQLiteQuery; +HSPLandroidx/room/RoomSQLiteQuery;->bindLong(IJ)V +HSPLandroidx/room/RoomSQLiteQuery;->bindString(ILjava/lang/String;)V +HSPLandroidx/room/RoomSQLiteQuery;->bindTo(Landroidx/sqlite/db/SupportSQLiteProgram;)V +HSPLandroidx/room/RoomSQLiteQuery;->getArgCount()I +HSPLandroidx/room/RoomSQLiteQuery;->getSql()Ljava/lang/String; +HSPLandroidx/room/RoomSQLiteQuery;->init(Ljava/lang/String;I)V +HSPLandroidx/room/RoomSQLiteQuery;->release()V +Landroidx/room/RoomSQLiteQuery$Companion; +HSPLandroidx/room/RoomSQLiteQuery$Companion;->()V +HSPLandroidx/room/RoomSQLiteQuery$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/room/RoomSQLiteQuery$Companion;->acquire(Ljava/lang/String;I)Landroidx/room/RoomSQLiteQuery; +HSPLandroidx/room/RoomSQLiteQuery$Companion;->prunePoolLocked$room_runtime_release()V +Landroidx/room/SQLiteCopyOpenHelper; +Landroidx/room/SharedSQLiteStatement; +HSPLandroidx/room/SharedSQLiteStatement;->(Landroidx/room/RoomDatabase;)V +HSPLandroidx/room/SharedSQLiteStatement;->access$createNewStatement(Landroidx/room/SharedSQLiteStatement;)Landroidx/sqlite/db/SupportSQLiteStatement; +HSPLandroidx/room/SharedSQLiteStatement;->acquire()Landroidx/sqlite/db/SupportSQLiteStatement; +HSPLandroidx/room/SharedSQLiteStatement;->assertNotMainThread()V +HSPLandroidx/room/SharedSQLiteStatement;->createNewStatement()Landroidx/sqlite/db/SupportSQLiteStatement; +HSPLandroidx/room/SharedSQLiteStatement;->getStmt()Landroidx/sqlite/db/SupportSQLiteStatement; +HSPLandroidx/room/SharedSQLiteStatement;->getStmt(Z)Landroidx/sqlite/db/SupportSQLiteStatement; +HSPLandroidx/room/SharedSQLiteStatement;->release(Landroidx/sqlite/db/SupportSQLiteStatement;)V +Landroidx/room/SharedSQLiteStatement$stmt$2; +HSPLandroidx/room/SharedSQLiteStatement$stmt$2;->(Landroidx/room/SharedSQLiteStatement;)V +HSPLandroidx/room/SharedSQLiteStatement$stmt$2;->invoke()Landroidx/sqlite/db/SupportSQLiteStatement; +HSPLandroidx/room/SharedSQLiteStatement$stmt$2;->invoke()Ljava/lang/Object; +Landroidx/room/TransactionElement; +HSPLandroidx/room/TransactionElement;->()V +HSPLandroidx/room/TransactionElement;->(Lkotlin/coroutines/ContinuationInterceptor;)V +HSPLandroidx/room/TransactionElement;->acquire()V +HSPLandroidx/room/TransactionElement;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLandroidx/room/TransactionElement;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLandroidx/room/TransactionElement;->getKey()Lkotlin/coroutines/CoroutineContext$Key; +HSPLandroidx/room/TransactionElement;->getTransactionDispatcher$room_ktx_release()Lkotlin/coroutines/ContinuationInterceptor; +HSPLandroidx/room/TransactionElement;->minusKey(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext; +HSPLandroidx/room/TransactionElement;->release()V +Landroidx/room/TransactionElement$Key; +HSPLandroidx/room/TransactionElement$Key;->()V +HSPLandroidx/room/TransactionElement$Key;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/room/TransactionExecutor; +HSPLandroidx/room/TransactionExecutor;->$r8$lambda$AympDHYBb78s7_N_9gRsXF0sHiw(Ljava/lang/Runnable;Landroidx/room/TransactionExecutor;)V +HSPLandroidx/room/TransactionExecutor;->(Ljava/util/concurrent/Executor;)V +HSPLandroidx/room/TransactionExecutor;->execute$lambda$1$lambda$0(Ljava/lang/Runnable;Landroidx/room/TransactionExecutor;)V +HSPLandroidx/room/TransactionExecutor;->execute(Ljava/lang/Runnable;)V +HSPLandroidx/room/TransactionExecutor;->scheduleNext()V +Landroidx/room/TransactionExecutor$$ExternalSyntheticLambda0; +HSPLandroidx/room/TransactionExecutor$$ExternalSyntheticLambda0;->(Ljava/lang/Runnable;Landroidx/room/TransactionExecutor;)V +HSPLandroidx/room/TransactionExecutor$$ExternalSyntheticLambda0;->run()V +Landroidx/room/migration/AutoMigrationSpec; +Landroidx/room/migration/Migration; +HSPLandroidx/room/migration/Migration;->(II)V +Landroidx/room/util/CursorUtil; +HSPLandroidx/room/util/CursorUtil;->getColumnIndex(Landroid/database/Cursor;Ljava/lang/String;)I +HSPLandroidx/room/util/CursorUtil;->getColumnIndexOrThrow(Landroid/database/Cursor;Ljava/lang/String;)I +Landroidx/room/util/DBUtil; +HSPLandroidx/room/util/DBUtil;->query(Landroidx/room/RoomDatabase;Landroidx/sqlite/db/SupportSQLiteQuery;ZLandroid/os/CancellationSignal;)Landroid/database/Cursor; +Landroidx/savedstate/R$id; +Landroidx/savedstate/Recreator; +HSPLandroidx/savedstate/Recreator;->()V +HSPLandroidx/savedstate/Recreator;->(Landroidx/savedstate/SavedStateRegistryOwner;)V +HSPLandroidx/savedstate/Recreator;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +Landroidx/savedstate/Recreator$Companion; +HSPLandroidx/savedstate/Recreator$Companion;->()V +HSPLandroidx/savedstate/Recreator$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/savedstate/SavedStateRegistry; +HSPLandroidx/savedstate/SavedStateRegistry;->$r8$lambda$AUDDdpkzZrJMhBj0r-_9pI-j6hA(Landroidx/savedstate/SavedStateRegistry;Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +HSPLandroidx/savedstate/SavedStateRegistry;->()V +HSPLandroidx/savedstate/SavedStateRegistry;->()V +HSPLandroidx/savedstate/SavedStateRegistry;->consumeRestoredStateForKey(Ljava/lang/String;)Landroid/os/Bundle; +HSPLandroidx/savedstate/SavedStateRegistry;->getSavedStateProvider(Ljava/lang/String;)Landroidx/savedstate/SavedStateRegistry$SavedStateProvider; +HSPLandroidx/savedstate/SavedStateRegistry;->performAttach$lambda$4(Landroidx/savedstate/SavedStateRegistry;Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +HSPLandroidx/savedstate/SavedStateRegistry;->performAttach$savedstate_release(Landroidx/lifecycle/Lifecycle;)V +HSPLandroidx/savedstate/SavedStateRegistry;->performRestore$savedstate_release(Landroid/os/Bundle;)V +HSPLandroidx/savedstate/SavedStateRegistry;->registerSavedStateProvider(Ljava/lang/String;Landroidx/savedstate/SavedStateRegistry$SavedStateProvider;)V +Landroidx/savedstate/SavedStateRegistry$$ExternalSyntheticLambda0; +HSPLandroidx/savedstate/SavedStateRegistry$$ExternalSyntheticLambda0;->(Landroidx/savedstate/SavedStateRegistry;)V +HSPLandroidx/savedstate/SavedStateRegistry$$ExternalSyntheticLambda0;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +Landroidx/savedstate/SavedStateRegistry$Companion; +HSPLandroidx/savedstate/SavedStateRegistry$Companion;->()V +HSPLandroidx/savedstate/SavedStateRegistry$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/savedstate/SavedStateRegistry$SavedStateProvider; +Landroidx/savedstate/SavedStateRegistryController; +HSPLandroidx/savedstate/SavedStateRegistryController;->()V +HSPLandroidx/savedstate/SavedStateRegistryController;->(Landroidx/savedstate/SavedStateRegistryOwner;)V +HSPLandroidx/savedstate/SavedStateRegistryController;->(Landroidx/savedstate/SavedStateRegistryOwner;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/savedstate/SavedStateRegistryController;->create(Landroidx/savedstate/SavedStateRegistryOwner;)Landroidx/savedstate/SavedStateRegistryController; +HSPLandroidx/savedstate/SavedStateRegistryController;->getSavedStateRegistry()Landroidx/savedstate/SavedStateRegistry; +HSPLandroidx/savedstate/SavedStateRegistryController;->performAttach()V +HSPLandroidx/savedstate/SavedStateRegistryController;->performRestore(Landroid/os/Bundle;)V +Landroidx/savedstate/SavedStateRegistryController$Companion; +HSPLandroidx/savedstate/SavedStateRegistryController$Companion;->()V +HSPLandroidx/savedstate/SavedStateRegistryController$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/savedstate/SavedStateRegistryController$Companion;->create(Landroidx/savedstate/SavedStateRegistryOwner;)Landroidx/savedstate/SavedStateRegistryController; +Landroidx/savedstate/SavedStateRegistryOwner; +Landroidx/savedstate/ViewTreeSavedStateRegistryOwner; +HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner;->get(Landroid/view/View;)Landroidx/savedstate/SavedStateRegistryOwner; +HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner;->set(Landroid/view/View;Landroidx/savedstate/SavedStateRegistryOwner;)V +Landroidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$1; +HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$1;->()V +HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$1;->()V +HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$1;->invoke(Landroid/view/View;)Landroid/view/View; +HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$2; +HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$2;->()V +HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$2;->()V +HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$2;->invoke(Landroid/view/View;)Landroidx/savedstate/SavedStateRegistryOwner; +HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/security/crypto/EncryptedSharedPreferences; +HSPLandroidx/security/crypto/EncryptedSharedPreferences;->(Ljava/lang/String;Ljava/lang/String;Landroid/content/SharedPreferences;Lcom/google/crypto/tink/Aead;Lcom/google/crypto/tink/DeterministicAead;)V +HSPLandroidx/security/crypto/EncryptedSharedPreferences;->create(Landroid/content/Context;Ljava/lang/String;Landroidx/security/crypto/MasterKey;Landroidx/security/crypto/EncryptedSharedPreferences$PrefKeyEncryptionScheme;Landroidx/security/crypto/EncryptedSharedPreferences$PrefValueEncryptionScheme;)Landroid/content/SharedPreferences; +HSPLandroidx/security/crypto/EncryptedSharedPreferences;->create(Ljava/lang/String;Ljava/lang/String;Landroid/content/Context;Landroidx/security/crypto/EncryptedSharedPreferences$PrefKeyEncryptionScheme;Landroidx/security/crypto/EncryptedSharedPreferences$PrefValueEncryptionScheme;)Landroid/content/SharedPreferences; +HSPLandroidx/security/crypto/EncryptedSharedPreferences;->edit()Landroid/content/SharedPreferences$Editor; +HSPLandroidx/security/crypto/EncryptedSharedPreferences;->encryptKey(Ljava/lang/String;)Ljava/lang/String; +HSPLandroidx/security/crypto/EncryptedSharedPreferences;->encryptKeyValuePair(Ljava/lang/String;[B)Landroid/util/Pair; +HSPLandroidx/security/crypto/EncryptedSharedPreferences;->getBoolean(Ljava/lang/String;Z)Z +HSPLandroidx/security/crypto/EncryptedSharedPreferences;->getDecryptedObject(Ljava/lang/String;)Ljava/lang/Object; +HSPLandroidx/security/crypto/EncryptedSharedPreferences;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroidx/security/crypto/EncryptedSharedPreferences;->isReservedKey(Ljava/lang/String;)Z +HSPLandroidx/security/crypto/EncryptedSharedPreferences;->registerOnSharedPreferenceChangeListener(Landroid/content/SharedPreferences$OnSharedPreferenceChangeListener;)V +HSPLandroidx/security/crypto/EncryptedSharedPreferences;->unregisterOnSharedPreferenceChangeListener(Landroid/content/SharedPreferences$OnSharedPreferenceChangeListener;)V +Landroidx/security/crypto/EncryptedSharedPreferences$1; +HSPLandroidx/security/crypto/EncryptedSharedPreferences$1;->()V +Landroidx/security/crypto/EncryptedSharedPreferences$Editor; +HSPLandroidx/security/crypto/EncryptedSharedPreferences$Editor;->(Landroidx/security/crypto/EncryptedSharedPreferences;Landroid/content/SharedPreferences$Editor;)V +HSPLandroidx/security/crypto/EncryptedSharedPreferences$Editor;->clearKeysIfNeeded()V +HSPLandroidx/security/crypto/EncryptedSharedPreferences$Editor;->commit()Z +HSPLandroidx/security/crypto/EncryptedSharedPreferences$Editor;->notifyListeners()V +HSPLandroidx/security/crypto/EncryptedSharedPreferences$Editor;->putEncryptedObject(Ljava/lang/String;[B)V +HSPLandroidx/security/crypto/EncryptedSharedPreferences$Editor;->putLong(Ljava/lang/String;J)Landroid/content/SharedPreferences$Editor; +HSPLandroidx/security/crypto/EncryptedSharedPreferences$Editor;->putString(Ljava/lang/String;Ljava/lang/String;)Landroid/content/SharedPreferences$Editor; +Landroidx/security/crypto/EncryptedSharedPreferences$EncryptedType; +HSPLandroidx/security/crypto/EncryptedSharedPreferences$EncryptedType;->$values()[Landroidx/security/crypto/EncryptedSharedPreferences$EncryptedType; +HSPLandroidx/security/crypto/EncryptedSharedPreferences$EncryptedType;->()V +HSPLandroidx/security/crypto/EncryptedSharedPreferences$EncryptedType;->(Ljava/lang/String;II)V +HSPLandroidx/security/crypto/EncryptedSharedPreferences$EncryptedType;->fromId(I)Landroidx/security/crypto/EncryptedSharedPreferences$EncryptedType; +HSPLandroidx/security/crypto/EncryptedSharedPreferences$EncryptedType;->getId()I +HSPLandroidx/security/crypto/EncryptedSharedPreferences$EncryptedType;->values()[Landroidx/security/crypto/EncryptedSharedPreferences$EncryptedType; +Landroidx/security/crypto/EncryptedSharedPreferences$PrefKeyEncryptionScheme; +HSPLandroidx/security/crypto/EncryptedSharedPreferences$PrefKeyEncryptionScheme;->$values()[Landroidx/security/crypto/EncryptedSharedPreferences$PrefKeyEncryptionScheme; +HSPLandroidx/security/crypto/EncryptedSharedPreferences$PrefKeyEncryptionScheme;->()V +HSPLandroidx/security/crypto/EncryptedSharedPreferences$PrefKeyEncryptionScheme;->(Ljava/lang/String;ILjava/lang/String;)V +HSPLandroidx/security/crypto/EncryptedSharedPreferences$PrefKeyEncryptionScheme;->getKeyTemplate()Lcom/google/crypto/tink/KeyTemplate; +Landroidx/security/crypto/EncryptedSharedPreferences$PrefValueEncryptionScheme; +HSPLandroidx/security/crypto/EncryptedSharedPreferences$PrefValueEncryptionScheme;->$values()[Landroidx/security/crypto/EncryptedSharedPreferences$PrefValueEncryptionScheme; +HSPLandroidx/security/crypto/EncryptedSharedPreferences$PrefValueEncryptionScheme;->()V +HSPLandroidx/security/crypto/EncryptedSharedPreferences$PrefValueEncryptionScheme;->(Ljava/lang/String;ILjava/lang/String;)V +HSPLandroidx/security/crypto/EncryptedSharedPreferences$PrefValueEncryptionScheme;->getKeyTemplate()Lcom/google/crypto/tink/KeyTemplate; +Landroidx/security/crypto/MasterKey; +HSPLandroidx/security/crypto/MasterKey;->(Ljava/lang/String;Ljava/lang/Object;)V +HSPLandroidx/security/crypto/MasterKey;->getDefaultAuthenticationValidityDurationSeconds()I +HSPLandroidx/security/crypto/MasterKey;->getKeyAlias()Ljava/lang/String; +Landroidx/security/crypto/MasterKey$1; +HSPLandroidx/security/crypto/MasterKey$1;->()V +Landroidx/security/crypto/MasterKey$Builder; +HSPLandroidx/security/crypto/MasterKey$Builder;->(Landroid/content/Context;Ljava/lang/String;)V +HSPLandroidx/security/crypto/MasterKey$Builder;->build()Landroidx/security/crypto/MasterKey; +HSPLandroidx/security/crypto/MasterKey$Builder;->setKeyScheme(Landroidx/security/crypto/MasterKey$KeyScheme;)Landroidx/security/crypto/MasterKey$Builder; +HSPLandroidx/security/crypto/MasterKey$Builder;->setRequestStrongBoxBacked(Z)Landroidx/security/crypto/MasterKey$Builder; +HSPLandroidx/security/crypto/MasterKey$Builder;->setUserAuthenticationRequired(Z)Landroidx/security/crypto/MasterKey$Builder; +HSPLandroidx/security/crypto/MasterKey$Builder;->setUserAuthenticationRequired(ZI)Landroidx/security/crypto/MasterKey$Builder; +Landroidx/security/crypto/MasterKey$Builder$Api23Impl; +HSPLandroidx/security/crypto/MasterKey$Builder$Api23Impl;->build(Landroidx/security/crypto/MasterKey$Builder;)Landroidx/security/crypto/MasterKey; +Landroidx/security/crypto/MasterKey$KeyScheme; +HSPLandroidx/security/crypto/MasterKey$KeyScheme;->$values()[Landroidx/security/crypto/MasterKey$KeyScheme; +HSPLandroidx/security/crypto/MasterKey$KeyScheme;->()V +HSPLandroidx/security/crypto/MasterKey$KeyScheme;->(Ljava/lang/String;I)V +HSPLandroidx/security/crypto/MasterKey$KeyScheme;->values()[Landroidx/security/crypto/MasterKey$KeyScheme; +Landroidx/security/crypto/MasterKeys; +HSPLandroidx/security/crypto/MasterKeys;->()V +HSPLandroidx/security/crypto/MasterKeys;->createAES256GCMKeyGenParameterSpec(Ljava/lang/String;)Landroid/security/keystore/KeyGenParameterSpec; +HSPLandroidx/security/crypto/MasterKeys;->generateKey(Landroid/security/keystore/KeyGenParameterSpec;)V +HSPLandroidx/security/crypto/MasterKeys;->getOrCreate(Landroid/security/keystore/KeyGenParameterSpec;)Ljava/lang/String; +HSPLandroidx/security/crypto/MasterKeys;->keyExists(Ljava/lang/String;)Z +HSPLandroidx/security/crypto/MasterKeys;->validate(Landroid/security/keystore/KeyGenParameterSpec;)V +Landroidx/sqlite/db/SimpleSQLiteQuery; +HSPLandroidx/sqlite/db/SimpleSQLiteQuery;->()V +HSPLandroidx/sqlite/db/SimpleSQLiteQuery;->(Ljava/lang/String;)V +HSPLandroidx/sqlite/db/SimpleSQLiteQuery;->(Ljava/lang/String;[Ljava/lang/Object;)V +HSPLandroidx/sqlite/db/SimpleSQLiteQuery;->bindTo(Landroidx/sqlite/db/SupportSQLiteProgram;)V +HSPLandroidx/sqlite/db/SimpleSQLiteQuery;->getSql()Ljava/lang/String; +Landroidx/sqlite/db/SimpleSQLiteQuery$Companion; +HSPLandroidx/sqlite/db/SimpleSQLiteQuery$Companion;->()V +HSPLandroidx/sqlite/db/SimpleSQLiteQuery$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/sqlite/db/SimpleSQLiteQuery$Companion;->bind(Landroidx/sqlite/db/SupportSQLiteProgram;[Ljava/lang/Object;)V +Landroidx/sqlite/db/SupportSQLiteCompat$Api16Impl; +HSPLandroidx/sqlite/db/SupportSQLiteCompat$Api16Impl;->()V +HSPLandroidx/sqlite/db/SupportSQLiteCompat$Api16Impl;->()V +HSPLandroidx/sqlite/db/SupportSQLiteCompat$Api16Impl;->isWriteAheadLoggingEnabled(Landroid/database/sqlite/SQLiteDatabase;)Z +HSPLandroidx/sqlite/db/SupportSQLiteCompat$Api16Impl;->setWriteAheadLoggingEnabled(Landroid/database/sqlite/SQLiteOpenHelper;Z)V +Landroidx/sqlite/db/SupportSQLiteCompat$Api19Impl; +HSPLandroidx/sqlite/db/SupportSQLiteCompat$Api19Impl;->()V +HSPLandroidx/sqlite/db/SupportSQLiteCompat$Api19Impl;->()V +HSPLandroidx/sqlite/db/SupportSQLiteCompat$Api19Impl;->isLowRamDevice(Landroid/app/ActivityManager;)Z +Landroidx/sqlite/db/SupportSQLiteCompat$Api21Impl; +HSPLandroidx/sqlite/db/SupportSQLiteCompat$Api21Impl;->()V +HSPLandroidx/sqlite/db/SupportSQLiteCompat$Api21Impl;->()V +HSPLandroidx/sqlite/db/SupportSQLiteCompat$Api21Impl;->getNoBackupFilesDir(Landroid/content/Context;)Ljava/io/File; +Landroidx/sqlite/db/SupportSQLiteDatabase; +Landroidx/sqlite/db/SupportSQLiteOpenHelper; +Landroidx/sqlite/db/SupportSQLiteOpenHelper$Callback; +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Callback;->()V +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Callback;->(I)V +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Callback;->onConfigure(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Callback;->onOpen(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +Landroidx/sqlite/db/SupportSQLiteOpenHelper$Callback$Companion; +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Callback$Companion;->()V +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Callback$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration; +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration;->()V +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration;->(Landroid/content/Context;Ljava/lang/String;Landroidx/sqlite/db/SupportSQLiteOpenHelper$Callback;ZZ)V +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration;->builder(Landroid/content/Context;)Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Builder; +Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Builder; +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Builder;->(Landroid/content/Context;)V +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Builder;->allowDataLossOnRecovery(Z)Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Builder; +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Builder;->build()Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration; +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Builder;->callback(Landroidx/sqlite/db/SupportSQLiteOpenHelper$Callback;)Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Builder; +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Builder;->name(Ljava/lang/String;)Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Builder; +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Builder;->noBackupDirectory(Z)Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Builder; +Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Companion; +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Companion;->()V +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Companion;->builder(Landroid/content/Context;)Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Builder; +Landroidx/sqlite/db/SupportSQLiteOpenHelper$Factory; +Landroidx/sqlite/db/SupportSQLiteProgram; +Landroidx/sqlite/db/SupportSQLiteQuery; +Landroidx/sqlite/db/SupportSQLiteStatement; +Landroidx/sqlite/db/framework/FrameworkSQLiteDatabase; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase;->$r8$lambda$xWs7VTYEzeAWyi_2-SJixQ1HyKQ(Lkotlin/jvm/functions/Function4;Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteCursorDriver;Ljava/lang/String;Landroid/database/sqlite/SQLiteQuery;)Landroid/database/Cursor; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase;->()V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase;->(Landroid/database/sqlite/SQLiteDatabase;)V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase;->beginTransaction()V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase;->beginTransactionNonExclusive()V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase;->compileStatement(Ljava/lang/String;)Landroidx/sqlite/db/SupportSQLiteStatement; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase;->endTransaction()V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase;->execSQL(Ljava/lang/String;)V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase;->inTransaction()Z +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase;->isDelegate(Landroid/database/sqlite/SQLiteDatabase;)Z +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase;->isOpen()Z +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase;->isWriteAheadLoggingEnabled()Z +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase;->query$lambda$0(Lkotlin/jvm/functions/Function4;Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteCursorDriver;Ljava/lang/String;Landroid/database/sqlite/SQLiteQuery;)Landroid/database/Cursor; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase;->query(Landroidx/sqlite/db/SupportSQLiteQuery;)Landroid/database/Cursor; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase;->query(Ljava/lang/String;)Landroid/database/Cursor; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase;->setTransactionSuccessful()V +Landroidx/sqlite/db/framework/FrameworkSQLiteDatabase$$ExternalSyntheticLambda1; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase$$ExternalSyntheticLambda1;->(Lkotlin/jvm/functions/Function4;)V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase$$ExternalSyntheticLambda1;->newCursor(Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteCursorDriver;Ljava/lang/String;Landroid/database/sqlite/SQLiteQuery;)Landroid/database/Cursor; +Landroidx/sqlite/db/framework/FrameworkSQLiteDatabase$Companion; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase$Companion;->()V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/sqlite/db/framework/FrameworkSQLiteDatabase$query$cursorFactory$1; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase$query$cursorFactory$1;->(Landroidx/sqlite/db/SupportSQLiteQuery;)V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase$query$cursorFactory$1;->invoke(Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteCursorDriver;Ljava/lang/String;Landroid/database/sqlite/SQLiteQuery;)Landroid/database/sqlite/SQLiteCursor; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase$query$cursorFactory$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;->()V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;->(Landroid/content/Context;Ljava/lang/String;Landroidx/sqlite/db/SupportSQLiteOpenHelper$Callback;ZZ)V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;->access$getAllowDataLossOnRecovery$p(Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;)Z +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;->access$getCallback$p(Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;)Landroidx/sqlite/db/SupportSQLiteOpenHelper$Callback; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;->access$getContext$p(Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;)Landroid/content/Context; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;->access$getName$p(Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;)Ljava/lang/String; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;->access$getUseNoBackupDirectory$p(Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;)Z +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;->access$getWriteAheadLoggingEnabled$p(Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;)Z +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;->getDelegate()Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;->getWritableDatabase()Landroidx/sqlite/db/SupportSQLiteDatabase; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;->setWriteAheadLoggingEnabled(Z)V +Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$Companion; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$Companion;->()V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$DBRefHolder; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$DBRefHolder;->(Landroidx/sqlite/db/framework/FrameworkSQLiteDatabase;)V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$DBRefHolder;->getDb()Landroidx/sqlite/db/framework/FrameworkSQLiteDatabase; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$DBRefHolder;->setDb(Landroidx/sqlite/db/framework/FrameworkSQLiteDatabase;)V +Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper;->()V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper;->(Landroid/content/Context;Ljava/lang/String;Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$DBRefHolder;Landroidx/sqlite/db/SupportSQLiteOpenHelper$Callback;Z)V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper;->getSupportDatabase(Z)Landroidx/sqlite/db/SupportSQLiteDatabase; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper;->getWrappedDb(Landroid/database/sqlite/SQLiteDatabase;)Landroidx/sqlite/db/framework/FrameworkSQLiteDatabase; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper;->getWritableOrReadableDatabase(Z)Landroid/database/sqlite/SQLiteDatabase; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper;->innerGetDatabase(Z)Landroid/database/sqlite/SQLiteDatabase; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper;->onConfigure(Landroid/database/sqlite/SQLiteDatabase;)V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper;->onOpen(Landroid/database/sqlite/SQLiteDatabase;)V +Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper$$ExternalSyntheticLambda0; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper$$ExternalSyntheticLambda0;->(Landroidx/sqlite/db/SupportSQLiteOpenHelper$Callback;Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$DBRefHolder;)V +Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper$CallbackException; +Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper$Companion; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper$Companion;->()V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper$Companion;->getWrappedDb(Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$DBRefHolder;Landroid/database/sqlite/SQLiteDatabase;)Landroidx/sqlite/db/framework/FrameworkSQLiteDatabase; +Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$lazyDelegate$1; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$lazyDelegate$1;->(Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;)V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$lazyDelegate$1;->invoke()Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$lazyDelegate$1;->invoke()Ljava/lang/Object; +Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelperFactory; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelperFactory;->()V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelperFactory;->create(Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration;)Landroidx/sqlite/db/SupportSQLiteOpenHelper; +Landroidx/sqlite/db/framework/FrameworkSQLiteProgram; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteProgram;->(Landroid/database/sqlite/SQLiteProgram;)V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteProgram;->bindBlob(I[B)V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteProgram;->bindLong(IJ)V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteProgram;->bindString(ILjava/lang/String;)V +Landroidx/sqlite/db/framework/FrameworkSQLiteStatement; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteStatement;->(Landroid/database/sqlite/SQLiteStatement;)V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteStatement;->executeInsert()J +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteStatement;->executeUpdateDelete()I +Landroidx/sqlite/util/ProcessLock; +HSPLandroidx/sqlite/util/ProcessLock;->()V +HSPLandroidx/sqlite/util/ProcessLock;->(Ljava/lang/String;Ljava/io/File;Z)V +HSPLandroidx/sqlite/util/ProcessLock;->access$getThreadLocksMap$cp()Ljava/util/Map; +HSPLandroidx/sqlite/util/ProcessLock;->lock(Z)V +HSPLandroidx/sqlite/util/ProcessLock;->unlock()V +Landroidx/sqlite/util/ProcessLock$Companion; +HSPLandroidx/sqlite/util/ProcessLock$Companion;->()V +HSPLandroidx/sqlite/util/ProcessLock$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/sqlite/util/ProcessLock$Companion;->access$getThreadLock(Landroidx/sqlite/util/ProcessLock$Companion;Ljava/lang/String;)Ljava/util/concurrent/locks/Lock; +HSPLandroidx/sqlite/util/ProcessLock$Companion;->getThreadLock(Ljava/lang/String;)Ljava/util/concurrent/locks/Lock; +Landroidx/startup/AppInitializer; +HSPLandroidx/startup/AppInitializer;->()V +HSPLandroidx/startup/AppInitializer;->(Landroid/content/Context;)V +HSPLandroidx/startup/AppInitializer;->discoverAndInitialize()V +HSPLandroidx/startup/AppInitializer;->discoverAndInitialize(Landroid/os/Bundle;)V +HSPLandroidx/startup/AppInitializer;->doInitialize(Ljava/lang/Class;)Ljava/lang/Object; +HSPLandroidx/startup/AppInitializer;->doInitialize(Ljava/lang/Class;Ljava/util/Set;)Ljava/lang/Object; +HSPLandroidx/startup/AppInitializer;->getInstance(Landroid/content/Context;)Landroidx/startup/AppInitializer; +HSPLandroidx/startup/AppInitializer;->initializeComponent(Ljava/lang/Class;)Ljava/lang/Object; +HSPLandroidx/startup/AppInitializer;->isEagerlyInitialized(Ljava/lang/Class;)Z +Landroidx/startup/InitializationProvider; +HSPLandroidx/startup/InitializationProvider;->()V +HSPLandroidx/startup/InitializationProvider;->onCreate()Z +Landroidx/startup/Initializer; +Landroidx/startup/R$string; +Landroidx/tracing/Trace; +HSPLandroidx/tracing/Trace;->beginSection(Ljava/lang/String;)V +HSPLandroidx/tracing/Trace;->endSection()V +HSPLandroidx/tracing/Trace;->isEnabled()Z +Landroidx/tracing/Trace$$ExternalSyntheticApiModelOutline0; +HSPLandroidx/tracing/Trace$$ExternalSyntheticApiModelOutline0;->m$1()Ljava/lang/String; +HSPLandroidx/tracing/Trace$$ExternalSyntheticApiModelOutline0;->m$1()V +HSPLandroidx/tracing/Trace$$ExternalSyntheticApiModelOutline0;->m()Ljava/lang/String; +HSPLandroidx/tracing/Trace$$ExternalSyntheticApiModelOutline0;->m()V +HSPLandroidx/tracing/Trace$$ExternalSyntheticApiModelOutline0;->m()Z +HSPLandroidx/tracing/Trace$$ExternalSyntheticApiModelOutline0;->m(Landroid/app/ActivityManager;Ljava/lang/String;II)Ljava/util/List; +HSPLandroidx/tracing/Trace$$ExternalSyntheticApiModelOutline0;->m(Landroid/app/ApplicationExitInfo;)I +HSPLandroidx/tracing/Trace$$ExternalSyntheticApiModelOutline0;->m(Landroid/app/ApplicationExitInfo;)J +PLandroidx/tracing/Trace$$ExternalSyntheticApiModelOutline0;->m(Landroid/app/job/JobInfo$Builder;Z)Landroid/app/job/JobInfo$Builder; +HSPLandroidx/tracing/Trace$$ExternalSyntheticApiModelOutline0;->m(Landroid/content/pm/PackageInfo;)J +HSPLandroidx/tracing/Trace$$ExternalSyntheticApiModelOutline0;->m(Landroid/os/StrictMode$VmPolicy$Builder;)Landroid/os/StrictMode$VmPolicy$Builder; +HSPLandroidx/tracing/Trace$$ExternalSyntheticApiModelOutline0;->m(Ljava/lang/Object;)Landroid/app/ApplicationExitInfo; +HSPLandroidx/tracing/Trace$$ExternalSyntheticApiModelOutline0;->m(Ljava/lang/String;J)Landroid/database/CursorWindow; +HSPLandroidx/tracing/Trace$$ExternalSyntheticApiModelOutline0;->m(Ljava/lang/String;Ljava/lang/ClassLoader;)Ldalvik/system/DelegateLastClassLoader; +Landroidx/tracing/TraceApi18Impl; +HSPLandroidx/tracing/TraceApi18Impl;->beginSection(Ljava/lang/String;)V +HSPLandroidx/tracing/TraceApi18Impl;->endSection()V +Landroidx/vectordrawable/graphics/drawable/VectorDrawableCommon; +Landroidx/vectordrawable/graphics/drawable/VectorDrawableCompat; +Landroidx/work/BackoffPolicy; +HSPLandroidx/work/BackoffPolicy;->$values()[Landroidx/work/BackoffPolicy; +HSPLandroidx/work/BackoffPolicy;->()V +HSPLandroidx/work/BackoffPolicy;->(Ljava/lang/String;I)V +HSPLandroidx/work/BackoffPolicy;->values()[Landroidx/work/BackoffPolicy; +Landroidx/work/Clock; +Landroidx/work/Configuration; +HSPLandroidx/work/Configuration;->()V +HSPLandroidx/work/Configuration;->(Landroidx/work/Configuration$Builder;)V +HSPLandroidx/work/Configuration;->getClock()Landroidx/work/Clock; +HSPLandroidx/work/Configuration;->getDefaultProcessName()Ljava/lang/String; +HSPLandroidx/work/Configuration;->getExecutor()Ljava/util/concurrent/Executor; +HSPLandroidx/work/Configuration;->getInputMergerFactory()Landroidx/work/InputMergerFactory; +PLandroidx/work/Configuration;->getMaxJobSchedulerId()I +HSPLandroidx/work/Configuration;->getMaxSchedulerLimit()I +PLandroidx/work/Configuration;->getMinJobSchedulerId()I +HSPLandroidx/work/Configuration;->getMinimumLoggingLevel()I +HSPLandroidx/work/Configuration;->getRunnableScheduler()Landroidx/work/RunnableScheduler; +HSPLandroidx/work/Configuration;->getTaskExecutor()Ljava/util/concurrent/Executor; +HSPLandroidx/work/Configuration;->getWorkerFactory()Landroidx/work/WorkerFactory; +Landroidx/work/Configuration$Builder; +HSPLandroidx/work/Configuration$Builder;->()V +HSPLandroidx/work/Configuration$Builder;->build()Landroidx/work/Configuration; +HSPLandroidx/work/Configuration$Builder;->getClock$work_runtime_release()Landroidx/work/Clock; +HSPLandroidx/work/Configuration$Builder;->getContentUriTriggerWorkersLimit$work_runtime_release()I +HSPLandroidx/work/Configuration$Builder;->getDefaultProcessName$work_runtime_release()Ljava/lang/String; +HSPLandroidx/work/Configuration$Builder;->getExecutor$work_runtime_release()Ljava/util/concurrent/Executor; +HSPLandroidx/work/Configuration$Builder;->getInitializationExceptionHandler$work_runtime_release()Landroidx/core/util/Consumer; +HSPLandroidx/work/Configuration$Builder;->getInputMergerFactory$work_runtime_release()Landroidx/work/InputMergerFactory; +HSPLandroidx/work/Configuration$Builder;->getLoggingLevel$work_runtime_release()I +HSPLandroidx/work/Configuration$Builder;->getMaxJobSchedulerId$work_runtime_release()I +HSPLandroidx/work/Configuration$Builder;->getMaxSchedulerLimit$work_runtime_release()I +HSPLandroidx/work/Configuration$Builder;->getMinJobSchedulerId$work_runtime_release()I +HSPLandroidx/work/Configuration$Builder;->getRunnableScheduler$work_runtime_release()Landroidx/work/RunnableScheduler; +HSPLandroidx/work/Configuration$Builder;->getSchedulingExceptionHandler$work_runtime_release()Landroidx/core/util/Consumer; +HSPLandroidx/work/Configuration$Builder;->getTaskExecutor$work_runtime_release()Ljava/util/concurrent/Executor; +HSPLandroidx/work/Configuration$Builder;->getWorkerFactory$work_runtime_release()Landroidx/work/WorkerFactory; +Landroidx/work/Configuration$Companion; +HSPLandroidx/work/Configuration$Companion;->()V +HSPLandroidx/work/Configuration$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/work/ConfigurationKt; +HSPLandroidx/work/ConfigurationKt;->()V +HSPLandroidx/work/ConfigurationKt;->access$createDefaultExecutor(Z)Ljava/util/concurrent/Executor; +HSPLandroidx/work/ConfigurationKt;->createDefaultExecutor(Z)Ljava/util/concurrent/Executor; +HSPLandroidx/work/ConfigurationKt;->getDEFAULT_CONTENT_URI_TRIGGERS_WORKERS_LIMIT()I +Landroidx/work/ConfigurationKt$createDefaultExecutor$factory$1; +HSPLandroidx/work/ConfigurationKt$createDefaultExecutor$factory$1;->(Z)V +HSPLandroidx/work/ConfigurationKt$createDefaultExecutor$factory$1;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread; +Landroidx/work/Constraints; +HSPLandroidx/work/Constraints;->()V +HSPLandroidx/work/Constraints;->(Landroidx/work/Constraints;)V +HSPLandroidx/work/Constraints;->(Landroidx/work/NetworkType;ZZZ)V +HSPLandroidx/work/Constraints;->(Landroidx/work/NetworkType;ZZZILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/work/Constraints;->(Landroidx/work/NetworkType;ZZZZ)V +HSPLandroidx/work/Constraints;->(Landroidx/work/NetworkType;ZZZZJJLjava/util/Set;)V +HSPLandroidx/work/Constraints;->(Landroidx/work/NetworkType;ZZZZJJLjava/util/Set;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/work/Constraints;->equals(Ljava/lang/Object;)Z +HSPLandroidx/work/Constraints;->getContentTriggerMaxDelayMillis()J +HSPLandroidx/work/Constraints;->getContentTriggerUpdateDelayMillis()J +HSPLandroidx/work/Constraints;->getContentUriTriggers()Ljava/util/Set; +HSPLandroidx/work/Constraints;->getRequiredNetworkType()Landroidx/work/NetworkType; +HSPLandroidx/work/Constraints;->hasContentUriTriggers()Z +HSPLandroidx/work/Constraints;->hashCode()I +HSPLandroidx/work/Constraints;->requiresBatteryNotLow()Z +HSPLandroidx/work/Constraints;->requiresCharging()Z +HSPLandroidx/work/Constraints;->requiresDeviceIdle()Z +HSPLandroidx/work/Constraints;->requiresStorageNotLow()Z +Landroidx/work/Constraints$Builder; +HSPLandroidx/work/Constraints$Builder;->()V +HSPLandroidx/work/Constraints$Builder;->build()Landroidx/work/Constraints; +HSPLandroidx/work/Constraints$Builder;->setRequiredNetworkType(Landroidx/work/NetworkType;)Landroidx/work/Constraints$Builder; +Landroidx/work/Constraints$Companion; +HSPLandroidx/work/Constraints$Companion;->()V +HSPLandroidx/work/Constraints$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/work/CoroutineWorker; +HSPLandroidx/work/CoroutineWorker;->$r8$lambda$vS4ut6uACXh9vB8D1LtSlAShhGE(Landroidx/work/CoroutineWorker;)V +HSPLandroidx/work/CoroutineWorker;->(Landroid/content/Context;Landroidx/work/WorkerParameters;)V +HSPLandroidx/work/CoroutineWorker;->_init_$lambda$0(Landroidx/work/CoroutineWorker;)V +HSPLandroidx/work/CoroutineWorker;->getCoroutineContext()Lkotlinx/coroutines/CoroutineDispatcher; +HSPLandroidx/work/CoroutineWorker;->getFuture$work_runtime_release()Landroidx/work/impl/utils/futures/SettableFuture; +HSPLandroidx/work/CoroutineWorker;->startWork()Lcom/google/common/util/concurrent/ListenableFuture; +Landroidx/work/CoroutineWorker$$ExternalSyntheticLambda0; +HSPLandroidx/work/CoroutineWorker$$ExternalSyntheticLambda0;->(Landroidx/work/CoroutineWorker;)V +HSPLandroidx/work/CoroutineWorker$$ExternalSyntheticLambda0;->run()V +Landroidx/work/CoroutineWorker$startWork$1; +HSPLandroidx/work/CoroutineWorker$startWork$1;->(Landroidx/work/CoroutineWorker;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/work/CoroutineWorker$startWork$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/work/CoroutineWorker$startWork$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/work/Data; +HSPLandroidx/work/Data;->()V +HSPLandroidx/work/Data;->(Landroidx/work/Data;)V +HSPLandroidx/work/Data;->(Ljava/util/Map;)V +HSPLandroidx/work/Data;->fromByteArray([B)Landroidx/work/Data; +HSPLandroidx/work/Data;->getKeyValueMap()Ljava/util/Map; +HSPLandroidx/work/Data;->getStringArray(Ljava/lang/String;)[Ljava/lang/String; +HSPLandroidx/work/Data;->hashCode()I +HSPLandroidx/work/Data;->size()I +HSPLandroidx/work/Data;->toByteArrayInternal(Landroidx/work/Data;)[B +HSPLandroidx/work/Data;->toString()Ljava/lang/String; +Landroidx/work/Data$Builder; +HSPLandroidx/work/Data$Builder;->()V +HSPLandroidx/work/Data$Builder;->build()Landroidx/work/Data; +HSPLandroidx/work/Data$Builder;->put(Ljava/lang/String;Ljava/lang/Object;)Landroidx/work/Data$Builder; +HSPLandroidx/work/Data$Builder;->putAll(Ljava/util/Map;)Landroidx/work/Data$Builder; +HSPLandroidx/work/Data$Builder;->putStringArray(Ljava/lang/String;[Ljava/lang/String;)Landroidx/work/Data$Builder; +Landroidx/work/ExistingPeriodicWorkPolicy; +HSPLandroidx/work/ExistingPeriodicWorkPolicy;->$values()[Landroidx/work/ExistingPeriodicWorkPolicy; +HSPLandroidx/work/ExistingPeriodicWorkPolicy;->()V +HSPLandroidx/work/ExistingPeriodicWorkPolicy;->(Ljava/lang/String;I)V +Landroidx/work/ExistingWorkPolicy; +HSPLandroidx/work/ExistingWorkPolicy;->$values()[Landroidx/work/ExistingWorkPolicy; +HSPLandroidx/work/ExistingWorkPolicy;->()V +HSPLandroidx/work/ExistingWorkPolicy;->(Ljava/lang/String;I)V +Landroidx/work/ForegroundUpdater; +Landroidx/work/InputMerger; +HSPLandroidx/work/InputMerger;->()V +Landroidx/work/InputMergerFactory; +HSPLandroidx/work/InputMergerFactory;->()V +HSPLandroidx/work/InputMergerFactory;->createInputMergerWithDefaultFallback(Ljava/lang/String;)Landroidx/work/InputMerger; +Landroidx/work/InputMergerKt; +HSPLandroidx/work/InputMergerKt;->()V +HSPLandroidx/work/InputMergerKt;->fromClassName(Ljava/lang/String;)Landroidx/work/InputMerger; +Landroidx/work/ListenableWorker; +HSPLandroidx/work/ListenableWorker;->(Landroid/content/Context;Landroidx/work/WorkerParameters;)V +HSPLandroidx/work/ListenableWorker;->getApplicationContext()Landroid/content/Context; +HSPLandroidx/work/ListenableWorker;->getInputData()Landroidx/work/Data; +HSPLandroidx/work/ListenableWorker;->getTaskExecutor()Landroidx/work/impl/utils/taskexecutor/TaskExecutor; +HSPLandroidx/work/ListenableWorker;->isUsed()Z +HSPLandroidx/work/ListenableWorker;->setUsed()V +Landroidx/work/ListenableWorker$Result; +HSPLandroidx/work/ListenableWorker$Result;->()V +HSPLandroidx/work/ListenableWorker$Result;->failure()Landroidx/work/ListenableWorker$Result; +HSPLandroidx/work/ListenableWorker$Result;->success()Landroidx/work/ListenableWorker$Result; +Landroidx/work/ListenableWorker$Result$Failure; +HSPLandroidx/work/ListenableWorker$Result$Failure;->()V +HSPLandroidx/work/ListenableWorker$Result$Failure;->(Landroidx/work/Data;)V +Landroidx/work/ListenableWorker$Result$Success; +HSPLandroidx/work/ListenableWorker$Result$Success;->()V +HSPLandroidx/work/ListenableWorker$Result$Success;->(Landroidx/work/Data;)V +HSPLandroidx/work/ListenableWorker$Result$Success;->getOutputData()Landroidx/work/Data; +HSPLandroidx/work/ListenableWorker$Result$Success;->toString()Ljava/lang/String; +Landroidx/work/Logger; +HSPLandroidx/work/Logger;->()V +HSPLandroidx/work/Logger;->(I)V +HSPLandroidx/work/Logger;->get()Landroidx/work/Logger; +HSPLandroidx/work/Logger;->setLogger(Landroidx/work/Logger;)V +HSPLandroidx/work/Logger;->tagWithPrefix(Ljava/lang/String;)Ljava/lang/String; +Landroidx/work/Logger$LogcatLogger; +HSPLandroidx/work/Logger$LogcatLogger;->(I)V +HSPLandroidx/work/Logger$LogcatLogger;->debug(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroidx/work/Logger$LogcatLogger;->info(Ljava/lang/String;Ljava/lang/String;)V +Landroidx/work/NetworkType; +HSPLandroidx/work/NetworkType;->$values()[Landroidx/work/NetworkType; +HSPLandroidx/work/NetworkType;->()V +HSPLandroidx/work/NetworkType;->(Ljava/lang/String;I)V +HSPLandroidx/work/NetworkType;->values()[Landroidx/work/NetworkType; +Landroidx/work/NoOpInputMergerFactory; +HSPLandroidx/work/NoOpInputMergerFactory;->()V +HSPLandroidx/work/NoOpInputMergerFactory;->()V +HSPLandroidx/work/NoOpInputMergerFactory;->createInputMerger(Ljava/lang/String;)Landroidx/work/InputMerger; +HSPLandroidx/work/NoOpInputMergerFactory;->createInputMerger(Ljava/lang/String;)Ljava/lang/Void; +Landroidx/work/OneTimeWorkRequest; +HSPLandroidx/work/OneTimeWorkRequest;->()V +HSPLandroidx/work/OneTimeWorkRequest;->(Landroidx/work/OneTimeWorkRequest$Builder;)V +Landroidx/work/OneTimeWorkRequest$Builder; +HSPLandroidx/work/OneTimeWorkRequest$Builder;->(Ljava/lang/Class;)V +HSPLandroidx/work/OneTimeWorkRequest$Builder;->buildInternal$work_runtime_release()Landroidx/work/OneTimeWorkRequest; +HSPLandroidx/work/OneTimeWorkRequest$Builder;->buildInternal$work_runtime_release()Landroidx/work/WorkRequest; +HSPLandroidx/work/OneTimeWorkRequest$Builder;->getThisObject$work_runtime_release()Landroidx/work/OneTimeWorkRequest$Builder; +HSPLandroidx/work/OneTimeWorkRequest$Builder;->getThisObject$work_runtime_release()Landroidx/work/WorkRequest$Builder; +Landroidx/work/OneTimeWorkRequest$Companion; +HSPLandroidx/work/OneTimeWorkRequest$Companion;->()V +HSPLandroidx/work/OneTimeWorkRequest$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/work/Operation; +HSPLandroidx/work/Operation;->()V +Landroidx/work/Operation$State; +HSPLandroidx/work/Operation$State;->()V +Landroidx/work/Operation$State$FAILURE; +Landroidx/work/Operation$State$IN_PROGRESS; +HSPLandroidx/work/Operation$State$IN_PROGRESS;->()V +HSPLandroidx/work/Operation$State$IN_PROGRESS;->(Landroidx/work/Operation$1;)V +Landroidx/work/Operation$State$SUCCESS; +HSPLandroidx/work/Operation$State$SUCCESS;->()V +HSPLandroidx/work/Operation$State$SUCCESS;->(Landroidx/work/Operation$1;)V +Landroidx/work/OutOfQuotaPolicy; +HSPLandroidx/work/OutOfQuotaPolicy;->$values()[Landroidx/work/OutOfQuotaPolicy; +HSPLandroidx/work/OutOfQuotaPolicy;->()V +HSPLandroidx/work/OutOfQuotaPolicy;->(Ljava/lang/String;I)V +HSPLandroidx/work/OutOfQuotaPolicy;->values()[Landroidx/work/OutOfQuotaPolicy; +Landroidx/work/OverwritingInputMerger; +HSPLandroidx/work/OverwritingInputMerger;->()V +HSPLandroidx/work/OverwritingInputMerger;->merge(Ljava/util/List;)Landroidx/work/Data; +Landroidx/work/PeriodicWorkRequest; +HSPLandroidx/work/PeriodicWorkRequest;->()V +HSPLandroidx/work/PeriodicWorkRequest;->(Landroidx/work/PeriodicWorkRequest$Builder;)V +Landroidx/work/PeriodicWorkRequest$Builder; +HSPLandroidx/work/PeriodicWorkRequest$Builder;->(Ljava/lang/Class;JLjava/util/concurrent/TimeUnit;JLjava/util/concurrent/TimeUnit;)V +HSPLandroidx/work/PeriodicWorkRequest$Builder;->buildInternal$work_runtime_release()Landroidx/work/PeriodicWorkRequest; +HSPLandroidx/work/PeriodicWorkRequest$Builder;->buildInternal$work_runtime_release()Landroidx/work/WorkRequest; +HSPLandroidx/work/PeriodicWorkRequest$Builder;->getThisObject$work_runtime_release()Landroidx/work/PeriodicWorkRequest$Builder; +HSPLandroidx/work/PeriodicWorkRequest$Builder;->getThisObject$work_runtime_release()Landroidx/work/WorkRequest$Builder; +Landroidx/work/PeriodicWorkRequest$Companion; +HSPLandroidx/work/PeriodicWorkRequest$Companion;->()V +HSPLandroidx/work/PeriodicWorkRequest$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/work/ProgressUpdater; +Landroidx/work/R$bool; +Landroidx/work/RunnableScheduler; +Landroidx/work/SystemClock; +HSPLandroidx/work/SystemClock;->()V +HSPLandroidx/work/SystemClock;->currentTimeMillis()J +Landroidx/work/WorkContinuation; +HSPLandroidx/work/WorkContinuation;->()V +Landroidx/work/WorkInfo$State; +HSPLandroidx/work/WorkInfo$State;->$values()[Landroidx/work/WorkInfo$State; +HSPLandroidx/work/WorkInfo$State;->()V +HSPLandroidx/work/WorkInfo$State;->(Ljava/lang/String;I)V +HSPLandroidx/work/WorkInfo$State;->values()[Landroidx/work/WorkInfo$State; +Landroidx/work/WorkManager; +HSPLandroidx/work/WorkManager;->()V +HSPLandroidx/work/WorkManager;->enqueueUniqueWork(Ljava/lang/String;Landroidx/work/ExistingWorkPolicy;Landroidx/work/OneTimeWorkRequest;)Landroidx/work/Operation; +HSPLandroidx/work/WorkManager;->getInstance(Landroid/content/Context;)Landroidx/work/WorkManager; +HSPLandroidx/work/WorkManager;->initialize(Landroid/content/Context;Landroidx/work/Configuration;)V +Landroidx/work/WorkManagerInitializer; +HSPLandroidx/work/WorkManagerInitializer;->()V +HSPLandroidx/work/WorkManagerInitializer;->()V +HSPLandroidx/work/WorkManagerInitializer;->create(Landroid/content/Context;)Landroidx/work/WorkManager; +HSPLandroidx/work/WorkManagerInitializer;->create(Landroid/content/Context;)Ljava/lang/Object; +HSPLandroidx/work/WorkManagerInitializer;->dependencies()Ljava/util/List; +Landroidx/work/WorkRequest; +HSPLandroidx/work/WorkRequest;->()V +HSPLandroidx/work/WorkRequest;->(Ljava/util/UUID;Landroidx/work/impl/model/WorkSpec;Ljava/util/Set;)V +HSPLandroidx/work/WorkRequest;->getId()Ljava/util/UUID; +HSPLandroidx/work/WorkRequest;->getStringId()Ljava/lang/String; +PLandroidx/work/WorkRequest;->getTags()Ljava/util/Set; +HSPLandroidx/work/WorkRequest;->getWorkSpec()Landroidx/work/impl/model/WorkSpec; +Landroidx/work/WorkRequest$Builder; +HSPLandroidx/work/WorkRequest$Builder;->(Ljava/lang/Class;)V +HSPLandroidx/work/WorkRequest$Builder;->build()Landroidx/work/WorkRequest; +HSPLandroidx/work/WorkRequest$Builder;->getBackoffCriteriaSet$work_runtime_release()Z +HSPLandroidx/work/WorkRequest$Builder;->getId$work_runtime_release()Ljava/util/UUID; +HSPLandroidx/work/WorkRequest$Builder;->getTags$work_runtime_release()Ljava/util/Set; +HSPLandroidx/work/WorkRequest$Builder;->getWorkSpec$work_runtime_release()Landroidx/work/impl/model/WorkSpec; +HSPLandroidx/work/WorkRequest$Builder;->setConstraints(Landroidx/work/Constraints;)Landroidx/work/WorkRequest$Builder; +HSPLandroidx/work/WorkRequest$Builder;->setId(Ljava/util/UUID;)Landroidx/work/WorkRequest$Builder; +HSPLandroidx/work/WorkRequest$Builder;->setInputData(Landroidx/work/Data;)Landroidx/work/WorkRequest$Builder; +Landroidx/work/WorkRequest$Companion; +HSPLandroidx/work/WorkRequest$Companion;->()V +HSPLandroidx/work/WorkRequest$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/work/WorkerFactory; +HSPLandroidx/work/WorkerFactory;->()V +HSPLandroidx/work/WorkerFactory;->()V +HSPLandroidx/work/WorkerFactory;->createWorkerWithDefaultFallback(Landroid/content/Context;Ljava/lang/String;Landroidx/work/WorkerParameters;)Landroidx/work/ListenableWorker; +HSPLandroidx/work/WorkerFactory;->getDefaultWorkerFactory()Landroidx/work/WorkerFactory; +Landroidx/work/WorkerFactory$1; +HSPLandroidx/work/WorkerFactory$1;->()V +HSPLandroidx/work/WorkerFactory$1;->createWorker(Landroid/content/Context;Ljava/lang/String;Landroidx/work/WorkerParameters;)Landroidx/work/ListenableWorker; +Landroidx/work/WorkerParameters; +HSPLandroidx/work/WorkerParameters;->(Ljava/util/UUID;Landroidx/work/Data;Ljava/util/Collection;Landroidx/work/WorkerParameters$RuntimeExtras;IILjava/util/concurrent/Executor;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;Landroidx/work/WorkerFactory;Landroidx/work/ProgressUpdater;Landroidx/work/ForegroundUpdater;)V +HSPLandroidx/work/WorkerParameters;->getForegroundUpdater()Landroidx/work/ForegroundUpdater; +HSPLandroidx/work/WorkerParameters;->getInputData()Landroidx/work/Data; +HSPLandroidx/work/WorkerParameters;->getTaskExecutor()Landroidx/work/impl/utils/taskexecutor/TaskExecutor; +Landroidx/work/WorkerParameters$RuntimeExtras; +HSPLandroidx/work/WorkerParameters$RuntimeExtras;->()V +Landroidx/work/impl/AutoMigration_14_15; +HSPLandroidx/work/impl/AutoMigration_14_15;->()V +Landroidx/work/impl/AutoMigration_19_20; +HSPLandroidx/work/impl/AutoMigration_19_20;->()V +Landroidx/work/impl/CleanupCallback; +HSPLandroidx/work/impl/CleanupCallback;->(Landroidx/work/Clock;)V +HSPLandroidx/work/impl/CleanupCallback;->getPruneDate()J +HSPLandroidx/work/impl/CleanupCallback;->getPruneSQL()Ljava/lang/String; +HSPLandroidx/work/impl/CleanupCallback;->onOpen(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +Landroidx/work/impl/DefaultRunnableScheduler; +HSPLandroidx/work/impl/DefaultRunnableScheduler;->()V +HSPLandroidx/work/impl/DefaultRunnableScheduler;->cancel(Ljava/lang/Runnable;)V +HSPLandroidx/work/impl/DefaultRunnableScheduler;->scheduleWithDelay(JLjava/lang/Runnable;)V +Landroidx/work/impl/ExecutionListener; +Landroidx/work/impl/Migration_11_12; +HSPLandroidx/work/impl/Migration_11_12;->()V +HSPLandroidx/work/impl/Migration_11_12;->()V +Landroidx/work/impl/Migration_12_13; +HSPLandroidx/work/impl/Migration_12_13;->()V +HSPLandroidx/work/impl/Migration_12_13;->()V +Landroidx/work/impl/Migration_15_16; +HSPLandroidx/work/impl/Migration_15_16;->()V +HSPLandroidx/work/impl/Migration_15_16;->()V +Landroidx/work/impl/Migration_16_17; +HSPLandroidx/work/impl/Migration_16_17;->()V +HSPLandroidx/work/impl/Migration_16_17;->()V +Landroidx/work/impl/Migration_1_2; +HSPLandroidx/work/impl/Migration_1_2;->()V +HSPLandroidx/work/impl/Migration_1_2;->()V +Landroidx/work/impl/Migration_3_4; +HSPLandroidx/work/impl/Migration_3_4;->()V +HSPLandroidx/work/impl/Migration_3_4;->()V +Landroidx/work/impl/Migration_4_5; +HSPLandroidx/work/impl/Migration_4_5;->()V +HSPLandroidx/work/impl/Migration_4_5;->()V +Landroidx/work/impl/Migration_6_7; +HSPLandroidx/work/impl/Migration_6_7;->()V +HSPLandroidx/work/impl/Migration_6_7;->()V +Landroidx/work/impl/Migration_7_8; +HSPLandroidx/work/impl/Migration_7_8;->()V +HSPLandroidx/work/impl/Migration_7_8;->()V +Landroidx/work/impl/Migration_8_9; +HSPLandroidx/work/impl/Migration_8_9;->()V +HSPLandroidx/work/impl/Migration_8_9;->()V +Landroidx/work/impl/OperationImpl; +HSPLandroidx/work/impl/OperationImpl;->()V +HSPLandroidx/work/impl/OperationImpl;->markState(Landroidx/work/Operation$State;)V +Landroidx/work/impl/Processor; +HSPLandroidx/work/impl/Processor;->()V +HSPLandroidx/work/impl/Processor;->(Landroid/content/Context;Landroidx/work/Configuration;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;Landroidx/work/impl/WorkDatabase;)V +HSPLandroidx/work/impl/Processor;->addExecutionListener(Landroidx/work/impl/ExecutionListener;)V +HSPLandroidx/work/impl/Processor;->cleanUpWorkerUnsafe(Ljava/lang/String;)Landroidx/work/impl/WorkerWrapper; +HSPLandroidx/work/impl/Processor;->getWorkerWrapperUnsafe(Ljava/lang/String;)Landroidx/work/impl/WorkerWrapper; +HSPLandroidx/work/impl/Processor;->isCancelled(Ljava/lang/String;)Z +HSPLandroidx/work/impl/Processor;->isEnqueued(Ljava/lang/String;)Z +HSPLandroidx/work/impl/Processor;->lambda$startWork$0$androidx-work-impl-Processor(Ljava/util/ArrayList;Ljava/lang/String;)Landroidx/work/impl/model/WorkSpec; +HSPLandroidx/work/impl/Processor;->lambda$startWork$1$androidx-work-impl-Processor(Lcom/google/common/util/concurrent/ListenableFuture;Landroidx/work/impl/WorkerWrapper;)V +HSPLandroidx/work/impl/Processor;->onExecuted(Landroidx/work/impl/WorkerWrapper;Z)V +HSPLandroidx/work/impl/Processor;->removeExecutionListener(Landroidx/work/impl/ExecutionListener;)V +HSPLandroidx/work/impl/Processor;->startWork(Landroidx/work/impl/StartStopToken;Landroidx/work/WorkerParameters$RuntimeExtras;)Z +Landroidx/work/impl/Processor$$ExternalSyntheticLambda0; +HSPLandroidx/work/impl/Processor$$ExternalSyntheticLambda0;->(Landroidx/work/impl/Processor;Ljava/util/ArrayList;Ljava/lang/String;)V +HSPLandroidx/work/impl/Processor$$ExternalSyntheticLambda0;->call()Ljava/lang/Object; +Landroidx/work/impl/Processor$$ExternalSyntheticLambda1; +HSPLandroidx/work/impl/Processor$$ExternalSyntheticLambda1;->(Landroidx/work/impl/Processor;Lcom/google/common/util/concurrent/ListenableFuture;Landroidx/work/impl/WorkerWrapper;)V +HSPLandroidx/work/impl/Processor$$ExternalSyntheticLambda1;->run()V +Landroidx/work/impl/RescheduleMigration; +HSPLandroidx/work/impl/RescheduleMigration;->(Landroid/content/Context;II)V +Landroidx/work/impl/Scheduler; +Landroidx/work/impl/Schedulers; +HSPLandroidx/work/impl/Schedulers;->()V +HSPLandroidx/work/impl/Schedulers;->createBestAvailableBackgroundScheduler(Landroid/content/Context;Landroidx/work/impl/WorkDatabase;Landroidx/work/Configuration;)Landroidx/work/impl/Scheduler; +HSPLandroidx/work/impl/Schedulers;->lambda$registerRescheduling$0(Ljava/util/List;Landroidx/work/impl/model/WorkGenerationalId;Landroidx/work/Configuration;Landroidx/work/impl/WorkDatabase;)V +HSPLandroidx/work/impl/Schedulers;->lambda$registerRescheduling$1(Ljava/util/concurrent/Executor;Ljava/util/List;Landroidx/work/Configuration;Landroidx/work/impl/WorkDatabase;Landroidx/work/impl/model/WorkGenerationalId;Z)V +HSPLandroidx/work/impl/Schedulers;->markScheduled(Landroidx/work/impl/model/WorkSpecDao;Landroidx/work/Clock;Ljava/util/List;)V +HSPLandroidx/work/impl/Schedulers;->registerRescheduling(Ljava/util/List;Landroidx/work/impl/Processor;Ljava/util/concurrent/Executor;Landroidx/work/impl/WorkDatabase;Landroidx/work/Configuration;)V +HSPLandroidx/work/impl/Schedulers;->schedule(Landroidx/work/Configuration;Landroidx/work/impl/WorkDatabase;Ljava/util/List;)V +Landroidx/work/impl/Schedulers$$ExternalSyntheticLambda0; +HSPLandroidx/work/impl/Schedulers$$ExternalSyntheticLambda0;->(Ljava/util/List;Landroidx/work/impl/model/WorkGenerationalId;Landroidx/work/Configuration;Landroidx/work/impl/WorkDatabase;)V +HSPLandroidx/work/impl/Schedulers$$ExternalSyntheticLambda0;->run()V +Landroidx/work/impl/Schedulers$$ExternalSyntheticLambda1; +HSPLandroidx/work/impl/Schedulers$$ExternalSyntheticLambda1;->(Ljava/util/concurrent/Executor;Ljava/util/List;Landroidx/work/Configuration;Landroidx/work/impl/WorkDatabase;)V +HSPLandroidx/work/impl/Schedulers$$ExternalSyntheticLambda1;->onExecuted(Landroidx/work/impl/model/WorkGenerationalId;Z)V +Landroidx/work/impl/StartStopToken; +HSPLandroidx/work/impl/StartStopToken;->(Landroidx/work/impl/model/WorkGenerationalId;)V +HSPLandroidx/work/impl/StartStopToken;->getId()Landroidx/work/impl/model/WorkGenerationalId; +Landroidx/work/impl/StartStopTokens; +HSPLandroidx/work/impl/StartStopTokens;->()V +HSPLandroidx/work/impl/StartStopTokens;->contains(Landroidx/work/impl/model/WorkGenerationalId;)Z +HSPLandroidx/work/impl/StartStopTokens;->remove(Landroidx/work/impl/model/WorkGenerationalId;)Landroidx/work/impl/StartStopToken; +HSPLandroidx/work/impl/StartStopTokens;->remove(Ljava/lang/String;)Ljava/util/List; +HSPLandroidx/work/impl/StartStopTokens;->tokenFor(Landroidx/work/impl/model/WorkGenerationalId;)Landroidx/work/impl/StartStopToken; +Landroidx/work/impl/WorkContinuationImpl; +HSPLandroidx/work/impl/WorkContinuationImpl;->()V +HSPLandroidx/work/impl/WorkContinuationImpl;->(Landroidx/work/impl/WorkManagerImpl;Ljava/lang/String;Landroidx/work/ExistingWorkPolicy;Ljava/util/List;)V +HSPLandroidx/work/impl/WorkContinuationImpl;->(Landroidx/work/impl/WorkManagerImpl;Ljava/lang/String;Landroidx/work/ExistingWorkPolicy;Ljava/util/List;Ljava/util/List;)V +HSPLandroidx/work/impl/WorkContinuationImpl;->enqueue()Landroidx/work/Operation; +HSPLandroidx/work/impl/WorkContinuationImpl;->getExistingWorkPolicy()Landroidx/work/ExistingWorkPolicy; +HSPLandroidx/work/impl/WorkContinuationImpl;->getIds()Ljava/util/List; +HSPLandroidx/work/impl/WorkContinuationImpl;->getName()Ljava/lang/String; +HSPLandroidx/work/impl/WorkContinuationImpl;->getParents()Ljava/util/List; +HSPLandroidx/work/impl/WorkContinuationImpl;->getWork()Ljava/util/List; +HSPLandroidx/work/impl/WorkContinuationImpl;->getWorkManagerImpl()Landroidx/work/impl/WorkManagerImpl; +HSPLandroidx/work/impl/WorkContinuationImpl;->hasCycles()Z +HSPLandroidx/work/impl/WorkContinuationImpl;->hasCycles(Landroidx/work/impl/WorkContinuationImpl;Ljava/util/Set;)Z +HSPLandroidx/work/impl/WorkContinuationImpl;->markEnqueued()V +HSPLandroidx/work/impl/WorkContinuationImpl;->prerequisitesFor(Landroidx/work/impl/WorkContinuationImpl;)Ljava/util/Set; +Landroidx/work/impl/WorkDatabase; +HSPLandroidx/work/impl/WorkDatabase;->()V +HSPLandroidx/work/impl/WorkDatabase;->()V +Landroidx/work/impl/WorkDatabase$Companion; +HSPLandroidx/work/impl/WorkDatabase$Companion;->$r8$lambda$ZkS5S0p_73DOI66Tm39UHOpqbt0(Landroid/content/Context;Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration;)Landroidx/sqlite/db/SupportSQLiteOpenHelper; +HSPLandroidx/work/impl/WorkDatabase$Companion;->()V +HSPLandroidx/work/impl/WorkDatabase$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/work/impl/WorkDatabase$Companion;->create$lambda$0(Landroid/content/Context;Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration;)Landroidx/sqlite/db/SupportSQLiteOpenHelper; +HSPLandroidx/work/impl/WorkDatabase$Companion;->create(Landroid/content/Context;Ljava/util/concurrent/Executor;Landroidx/work/Clock;Z)Landroidx/work/impl/WorkDatabase; +Landroidx/work/impl/WorkDatabase$Companion$$ExternalSyntheticLambda0; +HSPLandroidx/work/impl/WorkDatabase$Companion$$ExternalSyntheticLambda0;->(Landroid/content/Context;)V +HSPLandroidx/work/impl/WorkDatabase$Companion$$ExternalSyntheticLambda0;->create(Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration;)Landroidx/sqlite/db/SupportSQLiteOpenHelper; +Landroidx/work/impl/WorkDatabaseKt; +HSPLandroidx/work/impl/WorkDatabaseKt;->()V +Landroidx/work/impl/WorkDatabasePathHelper; +HSPLandroidx/work/impl/WorkDatabasePathHelper;->()V +HSPLandroidx/work/impl/WorkDatabasePathHelper;->()V +HSPLandroidx/work/impl/WorkDatabasePathHelper;->getDefaultDatabasePath(Landroid/content/Context;)Ljava/io/File; +HSPLandroidx/work/impl/WorkDatabasePathHelper;->migrateDatabase(Landroid/content/Context;)V +Landroidx/work/impl/WorkDatabase_AutoMigration_13_14_Impl; +HSPLandroidx/work/impl/WorkDatabase_AutoMigration_13_14_Impl;->()V +Landroidx/work/impl/WorkDatabase_AutoMigration_14_15_Impl; +HSPLandroidx/work/impl/WorkDatabase_AutoMigration_14_15_Impl;->()V +Landroidx/work/impl/WorkDatabase_AutoMigration_16_17_Impl; +HSPLandroidx/work/impl/WorkDatabase_AutoMigration_16_17_Impl;->()V +Landroidx/work/impl/WorkDatabase_AutoMigration_17_18_Impl; +HSPLandroidx/work/impl/WorkDatabase_AutoMigration_17_18_Impl;->()V +Landroidx/work/impl/WorkDatabase_AutoMigration_18_19_Impl; +HSPLandroidx/work/impl/WorkDatabase_AutoMigration_18_19_Impl;->()V +Landroidx/work/impl/WorkDatabase_AutoMigration_19_20_Impl; +HSPLandroidx/work/impl/WorkDatabase_AutoMigration_19_20_Impl;->()V +Landroidx/work/impl/WorkDatabase_Impl; +HSPLandroidx/work/impl/WorkDatabase_Impl;->()V +HSPLandroidx/work/impl/WorkDatabase_Impl;->access$1000(Landroidx/work/impl/WorkDatabase_Impl;)Ljava/util/List; +HSPLandroidx/work/impl/WorkDatabase_Impl;->access$602(Landroidx/work/impl/WorkDatabase_Impl;Landroidx/sqlite/db/SupportSQLiteDatabase;)Landroidx/sqlite/db/SupportSQLiteDatabase; +HSPLandroidx/work/impl/WorkDatabase_Impl;->access$700(Landroidx/work/impl/WorkDatabase_Impl;Landroidx/sqlite/db/SupportSQLiteDatabase;)V +HSPLandroidx/work/impl/WorkDatabase_Impl;->access$800(Landroidx/work/impl/WorkDatabase_Impl;)Ljava/util/List; +HSPLandroidx/work/impl/WorkDatabase_Impl;->access$900(Landroidx/work/impl/WorkDatabase_Impl;)Ljava/util/List; +HSPLandroidx/work/impl/WorkDatabase_Impl;->createInvalidationTracker()Landroidx/room/InvalidationTracker; +HSPLandroidx/work/impl/WorkDatabase_Impl;->createOpenHelper(Landroidx/room/DatabaseConfiguration;)Landroidx/sqlite/db/SupportSQLiteOpenHelper; +HSPLandroidx/work/impl/WorkDatabase_Impl;->dependencyDao()Landroidx/work/impl/model/DependencyDao; +HSPLandroidx/work/impl/WorkDatabase_Impl;->getAutoMigrations(Ljava/util/Map;)Ljava/util/List; +HSPLandroidx/work/impl/WorkDatabase_Impl;->getRequiredAutoMigrationSpecs()Ljava/util/Set; +HSPLandroidx/work/impl/WorkDatabase_Impl;->getRequiredTypeConverters()Ljava/util/Map; +HSPLandroidx/work/impl/WorkDatabase_Impl;->preferenceDao()Landroidx/work/impl/model/PreferenceDao; +HSPLandroidx/work/impl/WorkDatabase_Impl;->systemIdInfoDao()Landroidx/work/impl/model/SystemIdInfoDao; +HSPLandroidx/work/impl/WorkDatabase_Impl;->workNameDao()Landroidx/work/impl/model/WorkNameDao; +HSPLandroidx/work/impl/WorkDatabase_Impl;->workProgressDao()Landroidx/work/impl/model/WorkProgressDao; +HSPLandroidx/work/impl/WorkDatabase_Impl;->workSpecDao()Landroidx/work/impl/model/WorkSpecDao; +HSPLandroidx/work/impl/WorkDatabase_Impl;->workTagDao()Landroidx/work/impl/model/WorkTagDao; +Landroidx/work/impl/WorkDatabase_Impl$1; +HSPLandroidx/work/impl/WorkDatabase_Impl$1;->(Landroidx/work/impl/WorkDatabase_Impl;I)V +HSPLandroidx/work/impl/WorkDatabase_Impl$1;->onOpen(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +Landroidx/work/impl/WorkLauncher; +HSPLandroidx/work/impl/WorkLauncher;->startWork(Landroidx/work/impl/StartStopToken;)V +Landroidx/work/impl/WorkLauncherImpl; +HSPLandroidx/work/impl/WorkLauncherImpl;->(Landroidx/work/impl/Processor;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;)V +HSPLandroidx/work/impl/WorkLauncherImpl;->startWork(Landroidx/work/impl/StartStopToken;Landroidx/work/WorkerParameters$RuntimeExtras;)V +Landroidx/work/impl/WorkManagerImpl; +HSPLandroidx/work/impl/WorkManagerImpl;->()V +HSPLandroidx/work/impl/WorkManagerImpl;->(Landroid/content/Context;Landroidx/work/Configuration;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;Landroidx/work/impl/WorkDatabase;Ljava/util/List;Landroidx/work/impl/Processor;Landroidx/work/impl/constraints/trackers/Trackers;)V +HSPLandroidx/work/impl/WorkManagerImpl;->createWorkContinuationForUniquePeriodicWork(Ljava/lang/String;Landroidx/work/ExistingPeriodicWorkPolicy;Landroidx/work/PeriodicWorkRequest;)Landroidx/work/impl/WorkContinuationImpl; +HSPLandroidx/work/impl/WorkManagerImpl;->enqueueUniquePeriodicWork(Ljava/lang/String;Landroidx/work/ExistingPeriodicWorkPolicy;Landroidx/work/PeriodicWorkRequest;)Landroidx/work/Operation; +HSPLandroidx/work/impl/WorkManagerImpl;->enqueueUniqueWork(Ljava/lang/String;Landroidx/work/ExistingWorkPolicy;Ljava/util/List;)Landroidx/work/Operation; +HSPLandroidx/work/impl/WorkManagerImpl;->getApplicationContext()Landroid/content/Context; +HSPLandroidx/work/impl/WorkManagerImpl;->getConfiguration()Landroidx/work/Configuration; +HSPLandroidx/work/impl/WorkManagerImpl;->getInstance()Landroidx/work/impl/WorkManagerImpl; +HSPLandroidx/work/impl/WorkManagerImpl;->getInstance(Landroid/content/Context;)Landroidx/work/impl/WorkManagerImpl; +HSPLandroidx/work/impl/WorkManagerImpl;->getPreferenceUtils()Landroidx/work/impl/utils/PreferenceUtils; +HSPLandroidx/work/impl/WorkManagerImpl;->getProcessor()Landroidx/work/impl/Processor; +HSPLandroidx/work/impl/WorkManagerImpl;->getSchedulers()Ljava/util/List; +HSPLandroidx/work/impl/WorkManagerImpl;->getWorkDatabase()Landroidx/work/impl/WorkDatabase; +HSPLandroidx/work/impl/WorkManagerImpl;->getWorkTaskExecutor()Landroidx/work/impl/utils/taskexecutor/TaskExecutor; +HSPLandroidx/work/impl/WorkManagerImpl;->initialize(Landroid/content/Context;Landroidx/work/Configuration;)V +HSPLandroidx/work/impl/WorkManagerImpl;->onForceStopRunnableCompleted()V +HSPLandroidx/work/impl/WorkManagerImpl;->rescheduleEligibleWork()V +Landroidx/work/impl/WorkManagerImpl$Api24Impl; +HSPLandroidx/work/impl/WorkManagerImpl$Api24Impl;->isDeviceProtectedStorage(Landroid/content/Context;)Z +Landroidx/work/impl/WorkManagerImplExtKt; +HSPLandroidx/work/impl/WorkManagerImplExtKt;->access$createSchedulers(Landroid/content/Context;Landroidx/work/Configuration;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;Landroidx/work/impl/WorkDatabase;Landroidx/work/impl/constraints/trackers/Trackers;Landroidx/work/impl/Processor;)Ljava/util/List; +HSPLandroidx/work/impl/WorkManagerImplExtKt;->createSchedulers(Landroid/content/Context;Landroidx/work/Configuration;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;Landroidx/work/impl/WorkDatabase;Landroidx/work/impl/constraints/trackers/Trackers;Landroidx/work/impl/Processor;)Ljava/util/List; +HSPLandroidx/work/impl/WorkManagerImplExtKt;->createWorkManager$default(Landroid/content/Context;Landroidx/work/Configuration;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;Landroidx/work/impl/WorkDatabase;Landroidx/work/impl/constraints/trackers/Trackers;Landroidx/work/impl/Processor;Lkotlin/jvm/functions/Function6;ILjava/lang/Object;)Landroidx/work/impl/WorkManagerImpl; +HSPLandroidx/work/impl/WorkManagerImplExtKt;->createWorkManager(Landroid/content/Context;Landroidx/work/Configuration;)Landroidx/work/impl/WorkManagerImpl; +HSPLandroidx/work/impl/WorkManagerImplExtKt;->createWorkManager(Landroid/content/Context;Landroidx/work/Configuration;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;Landroidx/work/impl/WorkDatabase;Landroidx/work/impl/constraints/trackers/Trackers;Landroidx/work/impl/Processor;Lkotlin/jvm/functions/Function6;)Landroidx/work/impl/WorkManagerImpl; +Landroidx/work/impl/WorkManagerImplExtKt$WorkManagerImpl$1; +HSPLandroidx/work/impl/WorkManagerImplExtKt$WorkManagerImpl$1;->()V +HSPLandroidx/work/impl/WorkManagerImplExtKt$WorkManagerImpl$1;->()V +HSPLandroidx/work/impl/WorkManagerImplExtKt$WorkManagerImpl$1;->invoke(Landroid/content/Context;Landroidx/work/Configuration;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;Landroidx/work/impl/WorkDatabase;Landroidx/work/impl/constraints/trackers/Trackers;Landroidx/work/impl/Processor;)Ljava/util/List; +HSPLandroidx/work/impl/WorkManagerImplExtKt$WorkManagerImpl$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/work/impl/WorkMigration9To10; +HSPLandroidx/work/impl/WorkMigration9To10;->(Landroid/content/Context;)V +Landroidx/work/impl/WorkerWrapper; +HSPLandroidx/work/impl/WorkerWrapper;->()V +HSPLandroidx/work/impl/WorkerWrapper;->(Landroidx/work/impl/WorkerWrapper$Builder;)V +HSPLandroidx/work/impl/WorkerWrapper;->createWorkDescription(Ljava/util/List;)Ljava/lang/String; +HSPLandroidx/work/impl/WorkerWrapper;->getFuture()Lcom/google/common/util/concurrent/ListenableFuture; +HSPLandroidx/work/impl/WorkerWrapper;->getWorkGenerationalId()Landroidx/work/impl/model/WorkGenerationalId; +HSPLandroidx/work/impl/WorkerWrapper;->handleResult(Landroidx/work/ListenableWorker$Result;)V +HSPLandroidx/work/impl/WorkerWrapper;->lambda$runWorker$0$androidx-work-impl-WorkerWrapper(Lcom/google/common/util/concurrent/ListenableFuture;)V +HSPLandroidx/work/impl/WorkerWrapper;->onWorkFinished()V +HSPLandroidx/work/impl/WorkerWrapper;->resolve(Z)V +HSPLandroidx/work/impl/WorkerWrapper;->run()V +HSPLandroidx/work/impl/WorkerWrapper;->runWorker()V +HSPLandroidx/work/impl/WorkerWrapper;->setSucceededAndResolve()V +HSPLandroidx/work/impl/WorkerWrapper;->tryCheckForInterruptionAndResolve()Z +HSPLandroidx/work/impl/WorkerWrapper;->trySetRunning()Z +Landroidx/work/impl/WorkerWrapper$$ExternalSyntheticLambda0; +HSPLandroidx/work/impl/WorkerWrapper$$ExternalSyntheticLambda0;->(Landroidx/work/impl/WorkerWrapper;Lcom/google/common/util/concurrent/ListenableFuture;)V +HSPLandroidx/work/impl/WorkerWrapper$$ExternalSyntheticLambda0;->run()V +Landroidx/work/impl/WorkerWrapper$1; +HSPLandroidx/work/impl/WorkerWrapper$1;->(Landroidx/work/impl/WorkerWrapper;Lcom/google/common/util/concurrent/ListenableFuture;)V +HSPLandroidx/work/impl/WorkerWrapper$1;->run()V +Landroidx/work/impl/WorkerWrapper$2; +HSPLandroidx/work/impl/WorkerWrapper$2;->(Landroidx/work/impl/WorkerWrapper;Ljava/lang/String;)V +HSPLandroidx/work/impl/WorkerWrapper$2;->run()V +Landroidx/work/impl/WorkerWrapper$Builder; +HSPLandroidx/work/impl/WorkerWrapper$Builder;->(Landroid/content/Context;Landroidx/work/Configuration;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;Landroidx/work/impl/foreground/ForegroundProcessor;Landroidx/work/impl/WorkDatabase;Landroidx/work/impl/model/WorkSpec;Ljava/util/List;)V +HSPLandroidx/work/impl/WorkerWrapper$Builder;->access$000(Landroidx/work/impl/WorkerWrapper$Builder;)Ljava/util/List; +HSPLandroidx/work/impl/WorkerWrapper$Builder;->build()Landroidx/work/impl/WorkerWrapper; +HSPLandroidx/work/impl/WorkerWrapper$Builder;->withRuntimeExtras(Landroidx/work/WorkerParameters$RuntimeExtras;)Landroidx/work/impl/WorkerWrapper$Builder; +Landroidx/work/impl/background/greedy/DelayedWorkTracker; +HSPLandroidx/work/impl/background/greedy/DelayedWorkTracker;->()V +HSPLandroidx/work/impl/background/greedy/DelayedWorkTracker;->(Landroidx/work/impl/Scheduler;Landroidx/work/RunnableScheduler;Landroidx/work/Clock;)V +HSPLandroidx/work/impl/background/greedy/DelayedWorkTracker;->schedule(Landroidx/work/impl/model/WorkSpec;J)V +HSPLandroidx/work/impl/background/greedy/DelayedWorkTracker;->unschedule(Ljava/lang/String;)V +Landroidx/work/impl/background/greedy/DelayedWorkTracker$1; +HSPLandroidx/work/impl/background/greedy/DelayedWorkTracker$1;->(Landroidx/work/impl/background/greedy/DelayedWorkTracker;Landroidx/work/impl/model/WorkSpec;)V +Landroidx/work/impl/background/greedy/GreedyScheduler; +HSPLandroidx/work/impl/background/greedy/GreedyScheduler;->()V +HSPLandroidx/work/impl/background/greedy/GreedyScheduler;->(Landroid/content/Context;Landroidx/work/Configuration;Landroidx/work/impl/constraints/trackers/Trackers;Landroidx/work/impl/Processor;Landroidx/work/impl/WorkLauncher;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;)V +HSPLandroidx/work/impl/background/greedy/GreedyScheduler;->cancel(Ljava/lang/String;)V +HSPLandroidx/work/impl/background/greedy/GreedyScheduler;->checkDefaultProcess()V +HSPLandroidx/work/impl/background/greedy/GreedyScheduler;->hasLimitedSchedulingSlots()Z +HSPLandroidx/work/impl/background/greedy/GreedyScheduler;->onConstraintsStateChanged(Landroidx/work/impl/model/WorkSpec;Landroidx/work/impl/constraints/ConstraintsState;)V +HSPLandroidx/work/impl/background/greedy/GreedyScheduler;->onExecuted(Landroidx/work/impl/model/WorkGenerationalId;Z)V +HSPLandroidx/work/impl/background/greedy/GreedyScheduler;->registerExecutionListenerIfNeeded()V +HSPLandroidx/work/impl/background/greedy/GreedyScheduler;->removeConstraintTrackingFor(Landroidx/work/impl/model/WorkGenerationalId;)V +HSPLandroidx/work/impl/background/greedy/GreedyScheduler;->schedule([Landroidx/work/impl/model/WorkSpec;)V +HSPLandroidx/work/impl/background/greedy/GreedyScheduler;->throttleIfNeeded(Landroidx/work/impl/model/WorkSpec;)J +Landroidx/work/impl/background/greedy/GreedyScheduler$AttemptData; +HSPLandroidx/work/impl/background/greedy/GreedyScheduler$AttemptData;->(IJ)V +HSPLandroidx/work/impl/background/greedy/GreedyScheduler$AttemptData;->(IJLandroidx/work/impl/background/greedy/GreedyScheduler$1;)V +Landroidx/work/impl/background/greedy/TimeLimiter; +HSPLandroidx/work/impl/background/greedy/TimeLimiter;->(Landroidx/work/RunnableScheduler;Landroidx/work/impl/WorkLauncher;)V +HSPLandroidx/work/impl/background/greedy/TimeLimiter;->(Landroidx/work/RunnableScheduler;Landroidx/work/impl/WorkLauncher;J)V +HSPLandroidx/work/impl/background/greedy/TimeLimiter;->(Landroidx/work/RunnableScheduler;Landroidx/work/impl/WorkLauncher;JILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/work/impl/background/greedy/TimeLimiter;->cancel(Landroidx/work/impl/StartStopToken;)V +HSPLandroidx/work/impl/background/greedy/TimeLimiter;->track(Landroidx/work/impl/StartStopToken;)V +Landroidx/work/impl/background/greedy/TimeLimiter$$ExternalSyntheticLambda0; +HSPLandroidx/work/impl/background/greedy/TimeLimiter$$ExternalSyntheticLambda0;->(Landroidx/work/impl/background/greedy/TimeLimiter;Landroidx/work/impl/StartStopToken;)V +Landroidx/work/impl/background/systemalarm/RescheduleReceiver; +Landroidx/work/impl/background/systemjob/SystemJobInfoConverter; +HSPLandroidx/work/impl/background/systemjob/SystemJobInfoConverter;->()V +HSPLandroidx/work/impl/background/systemjob/SystemJobInfoConverter;->(Landroid/content/Context;Landroidx/work/Clock;)V +HSPLandroidx/work/impl/background/systemjob/SystemJobInfoConverter;->convert(Landroidx/work/impl/model/WorkSpec;I)Landroid/app/job/JobInfo; +HSPLandroidx/work/impl/background/systemjob/SystemJobInfoConverter;->convertNetworkType(Landroidx/work/NetworkType;)I +HSPLandroidx/work/impl/background/systemjob/SystemJobInfoConverter;->setRequiredNetwork(Landroid/app/job/JobInfo$Builder;Landroidx/work/NetworkType;)V +Landroidx/work/impl/background/systemjob/SystemJobInfoConverter$1; +HSPLandroidx/work/impl/background/systemjob/SystemJobInfoConverter$1;->()V +Landroidx/work/impl/background/systemjob/SystemJobScheduler; +HSPLandroidx/work/impl/background/systemjob/SystemJobScheduler;->()V +HSPLandroidx/work/impl/background/systemjob/SystemJobScheduler;->(Landroid/content/Context;Landroidx/work/impl/WorkDatabase;Landroidx/work/Configuration;)V +HSPLandroidx/work/impl/background/systemjob/SystemJobScheduler;->(Landroid/content/Context;Landroidx/work/impl/WorkDatabase;Landroidx/work/Configuration;Landroid/app/job/JobScheduler;Landroidx/work/impl/background/systemjob/SystemJobInfoConverter;)V +HSPLandroidx/work/impl/background/systemjob/SystemJobScheduler;->cancel(Ljava/lang/String;)V +HSPLandroidx/work/impl/background/systemjob/SystemJobScheduler;->cancelAll(Landroid/content/Context;)V +HSPLandroidx/work/impl/background/systemjob/SystemJobScheduler;->cancelJobById(Landroid/app/job/JobScheduler;I)V +HSPLandroidx/work/impl/background/systemjob/SystemJobScheduler;->getPendingJobIds(Landroid/content/Context;Landroid/app/job/JobScheduler;Ljava/lang/String;)Ljava/util/List; +HSPLandroidx/work/impl/background/systemjob/SystemJobScheduler;->getPendingJobs(Landroid/content/Context;Landroid/app/job/JobScheduler;)Ljava/util/List; +HSPLandroidx/work/impl/background/systemjob/SystemJobScheduler;->getWorkGenerationalIdFromJobInfo(Landroid/app/job/JobInfo;)Landroidx/work/impl/model/WorkGenerationalId; +HSPLandroidx/work/impl/background/systemjob/SystemJobScheduler;->hasLimitedSchedulingSlots()Z +HSPLandroidx/work/impl/background/systemjob/SystemJobScheduler;->reconcileJobs(Landroid/content/Context;Landroidx/work/impl/WorkDatabase;)Z +HSPLandroidx/work/impl/background/systemjob/SystemJobScheduler;->schedule([Landroidx/work/impl/model/WorkSpec;)V +HSPLandroidx/work/impl/background/systemjob/SystemJobScheduler;->scheduleInternal(Landroidx/work/impl/model/WorkSpec;I)V +Landroidx/work/impl/background/systemjob/SystemJobService; +HSPLandroidx/work/impl/background/systemjob/SystemJobService;->()V +HSPLandroidx/work/impl/background/systemjob/SystemJobService;->()V +HSPLandroidx/work/impl/background/systemjob/SystemJobService;->onCreate()V +HSPLandroidx/work/impl/background/systemjob/SystemJobService;->onDestroy()V +HSPLandroidx/work/impl/background/systemjob/SystemJobService;->onExecuted(Landroidx/work/impl/model/WorkGenerationalId;Z)V +HSPLandroidx/work/impl/background/systemjob/SystemJobService;->onStartJob(Landroid/app/job/JobParameters;)Z +HSPLandroidx/work/impl/background/systemjob/SystemJobService;->onStopJob(Landroid/app/job/JobParameters;)Z +HSPLandroidx/work/impl/background/systemjob/SystemJobService;->workGenerationalIdFromJobParameters(Landroid/app/job/JobParameters;)Landroidx/work/impl/model/WorkGenerationalId; +Landroidx/work/impl/background/systemjob/SystemJobService$Api24Impl; +HSPLandroidx/work/impl/background/systemjob/SystemJobService$Api24Impl;->getTriggeredContentAuthorities(Landroid/app/job/JobParameters;)[Ljava/lang/String; +HSPLandroidx/work/impl/background/systemjob/SystemJobService$Api24Impl;->getTriggeredContentUris(Landroid/app/job/JobParameters;)[Landroid/net/Uri; +Landroidx/work/impl/background/systemjob/SystemJobService$Api28Impl; +HSPLandroidx/work/impl/background/systemjob/SystemJobService$Api28Impl;->getNetwork(Landroid/app/job/JobParameters;)Landroid/net/Network; +Landroidx/work/impl/constraints/ConstraintListener; +Landroidx/work/impl/constraints/ConstraintsState; +HSPLandroidx/work/impl/constraints/ConstraintsState;->()V +HSPLandroidx/work/impl/constraints/ConstraintsState;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/work/impl/constraints/ConstraintsState$ConstraintsMet; +HSPLandroidx/work/impl/constraints/ConstraintsState$ConstraintsMet;->()V +HSPLandroidx/work/impl/constraints/ConstraintsState$ConstraintsMet;->()V +Landroidx/work/impl/constraints/NetworkState; +HSPLandroidx/work/impl/constraints/NetworkState;->(ZZZZ)V +HSPLandroidx/work/impl/constraints/NetworkState;->equals(Ljava/lang/Object;)Z +HSPLandroidx/work/impl/constraints/NetworkState;->isConnected()Z +HSPLandroidx/work/impl/constraints/NetworkState;->isValidated()Z +HSPLandroidx/work/impl/constraints/NetworkState;->toString()Ljava/lang/String; +Landroidx/work/impl/constraints/OnConstraintsStateChangedListener; +Landroidx/work/impl/constraints/WorkConstraintsTracker; +HSPLandroidx/work/impl/constraints/WorkConstraintsTracker;->(Landroidx/work/impl/constraints/trackers/Trackers;)V +HSPLandroidx/work/impl/constraints/WorkConstraintsTracker;->(Ljava/util/List;)V +HSPLandroidx/work/impl/constraints/WorkConstraintsTracker;->track(Landroidx/work/impl/model/WorkSpec;)Lkotlinx/coroutines/flow/Flow; +Landroidx/work/impl/constraints/WorkConstraintsTracker$track$$inlined$combine$1; +HSPLandroidx/work/impl/constraints/WorkConstraintsTracker$track$$inlined$combine$1;->([Lkotlinx/coroutines/flow/Flow;)V +HSPLandroidx/work/impl/constraints/WorkConstraintsTracker$track$$inlined$combine$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/work/impl/constraints/WorkConstraintsTracker$track$$inlined$combine$1$2; +HSPLandroidx/work/impl/constraints/WorkConstraintsTracker$track$$inlined$combine$1$2;->([Lkotlinx/coroutines/flow/Flow;)V +HSPLandroidx/work/impl/constraints/WorkConstraintsTracker$track$$inlined$combine$1$2;->invoke()Ljava/lang/Object; +HSPLandroidx/work/impl/constraints/WorkConstraintsTracker$track$$inlined$combine$1$2;->invoke()[Ljava/lang/Object; +Landroidx/work/impl/constraints/WorkConstraintsTracker$track$$inlined$combine$1$3; +HSPLandroidx/work/impl/constraints/WorkConstraintsTracker$track$$inlined$combine$1$3;->(Lkotlin/coroutines/Continuation;)V +HSPLandroidx/work/impl/constraints/WorkConstraintsTracker$track$$inlined$combine$1$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/work/impl/constraints/WorkConstraintsTracker$track$$inlined$combine$1$3;->invoke(Lkotlinx/coroutines/flow/FlowCollector;[Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/work/impl/constraints/WorkConstraintsTracker$track$$inlined$combine$1$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/work/impl/constraints/WorkConstraintsTrackerKt; +HSPLandroidx/work/impl/constraints/WorkConstraintsTrackerKt;->()V +HSPLandroidx/work/impl/constraints/WorkConstraintsTrackerKt;->listen(Landroidx/work/impl/constraints/WorkConstraintsTracker;Landroidx/work/impl/model/WorkSpec;Lkotlinx/coroutines/CoroutineDispatcher;Landroidx/work/impl/constraints/OnConstraintsStateChangedListener;)Lkotlinx/coroutines/Job; +Landroidx/work/impl/constraints/WorkConstraintsTrackerKt$listen$1; +HSPLandroidx/work/impl/constraints/WorkConstraintsTrackerKt$listen$1;->(Landroidx/work/impl/constraints/WorkConstraintsTracker;Landroidx/work/impl/model/WorkSpec;Landroidx/work/impl/constraints/OnConstraintsStateChangedListener;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/work/impl/constraints/WorkConstraintsTrackerKt$listen$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/work/impl/constraints/WorkConstraintsTrackerKt$listen$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/work/impl/constraints/WorkConstraintsTrackerKt$listen$1$1; +HSPLandroidx/work/impl/constraints/WorkConstraintsTrackerKt$listen$1$1;->(Landroidx/work/impl/constraints/OnConstraintsStateChangedListener;Landroidx/work/impl/model/WorkSpec;)V +HSPLandroidx/work/impl/constraints/WorkConstraintsTrackerKt$listen$1$1;->emit(Landroidx/work/impl/constraints/ConstraintsState;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/work/impl/constraints/WorkConstraintsTrackerKt$listen$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/work/impl/constraints/controllers/BatteryChargingController; +HSPLandroidx/work/impl/constraints/controllers/BatteryChargingController;->(Landroidx/work/impl/constraints/trackers/ConstraintTracker;)V +HSPLandroidx/work/impl/constraints/controllers/BatteryChargingController;->hasConstraint(Landroidx/work/impl/model/WorkSpec;)Z +Landroidx/work/impl/constraints/controllers/BatteryNotLowController; +HSPLandroidx/work/impl/constraints/controllers/BatteryNotLowController;->(Landroidx/work/impl/constraints/trackers/BatteryNotLowTracker;)V +HSPLandroidx/work/impl/constraints/controllers/BatteryNotLowController;->hasConstraint(Landroidx/work/impl/model/WorkSpec;)Z +Landroidx/work/impl/constraints/controllers/ConstraintController; +HSPLandroidx/work/impl/constraints/controllers/ConstraintController;->(Landroidx/work/impl/constraints/trackers/ConstraintTracker;)V +HSPLandroidx/work/impl/constraints/controllers/ConstraintController;->access$getTracker$p(Landroidx/work/impl/constraints/controllers/ConstraintController;)Landroidx/work/impl/constraints/trackers/ConstraintTracker; +HSPLandroidx/work/impl/constraints/controllers/ConstraintController;->track()Lkotlinx/coroutines/flow/Flow; +Landroidx/work/impl/constraints/controllers/ConstraintController$track$1; +HSPLandroidx/work/impl/constraints/controllers/ConstraintController$track$1;->(Landroidx/work/impl/constraints/controllers/ConstraintController;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/work/impl/constraints/controllers/ConstraintController$track$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/work/impl/constraints/controllers/ConstraintController$track$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/work/impl/constraints/controllers/ConstraintController$track$1;->invoke(Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/work/impl/constraints/controllers/ConstraintController$track$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/work/impl/constraints/controllers/ConstraintController$track$1$1; +HSPLandroidx/work/impl/constraints/controllers/ConstraintController$track$1$1;->(Landroidx/work/impl/constraints/controllers/ConstraintController;Landroidx/work/impl/constraints/controllers/ConstraintController$track$1$listener$1;)V +HSPLandroidx/work/impl/constraints/controllers/ConstraintController$track$1$1;->invoke()Ljava/lang/Object; +HSPLandroidx/work/impl/constraints/controllers/ConstraintController$track$1$1;->invoke()V +Landroidx/work/impl/constraints/controllers/ConstraintController$track$1$listener$1; +HSPLandroidx/work/impl/constraints/controllers/ConstraintController$track$1$listener$1;->(Landroidx/work/impl/constraints/controllers/ConstraintController;Lkotlinx/coroutines/channels/ProducerScope;)V +HSPLandroidx/work/impl/constraints/controllers/ConstraintController$track$1$listener$1;->onConstraintChanged(Ljava/lang/Object;)V +Landroidx/work/impl/constraints/controllers/NetworkConnectedController; +HSPLandroidx/work/impl/constraints/controllers/NetworkConnectedController;->(Landroidx/work/impl/constraints/trackers/ConstraintTracker;)V +HSPLandroidx/work/impl/constraints/controllers/NetworkConnectedController;->hasConstraint(Landroidx/work/impl/model/WorkSpec;)Z +HSPLandroidx/work/impl/constraints/controllers/NetworkConnectedController;->isConstrained(Landroidx/work/impl/constraints/NetworkState;)Z +HSPLandroidx/work/impl/constraints/controllers/NetworkConnectedController;->isConstrained(Ljava/lang/Object;)Z +Landroidx/work/impl/constraints/controllers/NetworkMeteredController; +HSPLandroidx/work/impl/constraints/controllers/NetworkMeteredController;->()V +HSPLandroidx/work/impl/constraints/controllers/NetworkMeteredController;->(Landroidx/work/impl/constraints/trackers/ConstraintTracker;)V +HSPLandroidx/work/impl/constraints/controllers/NetworkMeteredController;->hasConstraint(Landroidx/work/impl/model/WorkSpec;)Z +Landroidx/work/impl/constraints/controllers/NetworkMeteredController$Companion; +HSPLandroidx/work/impl/constraints/controllers/NetworkMeteredController$Companion;->()V +HSPLandroidx/work/impl/constraints/controllers/NetworkMeteredController$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/work/impl/constraints/controllers/NetworkNotRoamingController; +HSPLandroidx/work/impl/constraints/controllers/NetworkNotRoamingController;->()V +HSPLandroidx/work/impl/constraints/controllers/NetworkNotRoamingController;->(Landroidx/work/impl/constraints/trackers/ConstraintTracker;)V +HSPLandroidx/work/impl/constraints/controllers/NetworkNotRoamingController;->hasConstraint(Landroidx/work/impl/model/WorkSpec;)Z +Landroidx/work/impl/constraints/controllers/NetworkNotRoamingController$Companion; +HSPLandroidx/work/impl/constraints/controllers/NetworkNotRoamingController$Companion;->()V +HSPLandroidx/work/impl/constraints/controllers/NetworkNotRoamingController$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/work/impl/constraints/controllers/NetworkUnmeteredController; +HSPLandroidx/work/impl/constraints/controllers/NetworkUnmeteredController;->(Landroidx/work/impl/constraints/trackers/ConstraintTracker;)V +HSPLandroidx/work/impl/constraints/controllers/NetworkUnmeteredController;->hasConstraint(Landroidx/work/impl/model/WorkSpec;)Z +Landroidx/work/impl/constraints/controllers/StorageNotLowController; +HSPLandroidx/work/impl/constraints/controllers/StorageNotLowController;->(Landroidx/work/impl/constraints/trackers/ConstraintTracker;)V +HSPLandroidx/work/impl/constraints/controllers/StorageNotLowController;->hasConstraint(Landroidx/work/impl/model/WorkSpec;)Z +Landroidx/work/impl/constraints/trackers/BatteryChargingTracker; +HSPLandroidx/work/impl/constraints/trackers/BatteryChargingTracker;->(Landroid/content/Context;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;)V +Landroidx/work/impl/constraints/trackers/BatteryNotLowTracker; +HSPLandroidx/work/impl/constraints/trackers/BatteryNotLowTracker;->(Landroid/content/Context;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;)V +Landroidx/work/impl/constraints/trackers/BroadcastReceiverConstraintTracker; +HSPLandroidx/work/impl/constraints/trackers/BroadcastReceiverConstraintTracker;->(Landroid/content/Context;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;)V +Landroidx/work/impl/constraints/trackers/BroadcastReceiverConstraintTracker$broadcastReceiver$1; +HSPLandroidx/work/impl/constraints/trackers/BroadcastReceiverConstraintTracker$broadcastReceiver$1;->(Landroidx/work/impl/constraints/trackers/BroadcastReceiverConstraintTracker;)V +Landroidx/work/impl/constraints/trackers/ConstraintTracker; +HSPLandroidx/work/impl/constraints/trackers/ConstraintTracker;->(Landroid/content/Context;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;)V +HSPLandroidx/work/impl/constraints/trackers/ConstraintTracker;->addListener(Landroidx/work/impl/constraints/ConstraintListener;)V +HSPLandroidx/work/impl/constraints/trackers/ConstraintTracker;->getAppContext()Landroid/content/Context; +HSPLandroidx/work/impl/constraints/trackers/ConstraintTracker;->removeListener(Landroidx/work/impl/constraints/ConstraintListener;)V +HSPLandroidx/work/impl/constraints/trackers/ConstraintTracker;->setState(Ljava/lang/Object;)V +Landroidx/work/impl/constraints/trackers/ConstraintTrackerKt; +HSPLandroidx/work/impl/constraints/trackers/ConstraintTrackerKt;->()V +HSPLandroidx/work/impl/constraints/trackers/ConstraintTrackerKt;->access$getTAG$p()Ljava/lang/String; +Landroidx/work/impl/constraints/trackers/NetworkStateTracker24; +HSPLandroidx/work/impl/constraints/trackers/NetworkStateTracker24;->(Landroid/content/Context;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;)V +HSPLandroidx/work/impl/constraints/trackers/NetworkStateTracker24;->access$getConnectivityManager$p(Landroidx/work/impl/constraints/trackers/NetworkStateTracker24;)Landroid/net/ConnectivityManager; +HSPLandroidx/work/impl/constraints/trackers/NetworkStateTracker24;->readSystemState()Landroidx/work/impl/constraints/NetworkState; +HSPLandroidx/work/impl/constraints/trackers/NetworkStateTracker24;->readSystemState()Ljava/lang/Object; +HSPLandroidx/work/impl/constraints/trackers/NetworkStateTracker24;->startTracking()V +HSPLandroidx/work/impl/constraints/trackers/NetworkStateTracker24;->stopTracking()V +Landroidx/work/impl/constraints/trackers/NetworkStateTracker24$networkCallback$1; +HSPLandroidx/work/impl/constraints/trackers/NetworkStateTracker24$networkCallback$1;->(Landroidx/work/impl/constraints/trackers/NetworkStateTracker24;)V +HSPLandroidx/work/impl/constraints/trackers/NetworkStateTracker24$networkCallback$1;->onCapabilitiesChanged(Landroid/net/Network;Landroid/net/NetworkCapabilities;)V +Landroidx/work/impl/constraints/trackers/NetworkStateTrackerKt; +HSPLandroidx/work/impl/constraints/trackers/NetworkStateTrackerKt;->()V +HSPLandroidx/work/impl/constraints/trackers/NetworkStateTrackerKt;->NetworkStateTracker(Landroid/content/Context;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;)Landroidx/work/impl/constraints/trackers/ConstraintTracker; +HSPLandroidx/work/impl/constraints/trackers/NetworkStateTrackerKt;->access$getTAG$p()Ljava/lang/String; +HSPLandroidx/work/impl/constraints/trackers/NetworkStateTrackerKt;->getActiveNetworkState(Landroid/net/ConnectivityManager;)Landroidx/work/impl/constraints/NetworkState; +HSPLandroidx/work/impl/constraints/trackers/NetworkStateTrackerKt;->isActiveNetworkValidated(Landroid/net/ConnectivityManager;)Z +Landroidx/work/impl/constraints/trackers/StorageNotLowTracker; +HSPLandroidx/work/impl/constraints/trackers/StorageNotLowTracker;->(Landroid/content/Context;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;)V +Landroidx/work/impl/constraints/trackers/Trackers; +HSPLandroidx/work/impl/constraints/trackers/Trackers;->(Landroid/content/Context;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;Landroidx/work/impl/constraints/trackers/ConstraintTracker;Landroidx/work/impl/constraints/trackers/BatteryNotLowTracker;Landroidx/work/impl/constraints/trackers/ConstraintTracker;Landroidx/work/impl/constraints/trackers/ConstraintTracker;)V +HSPLandroidx/work/impl/constraints/trackers/Trackers;->(Landroid/content/Context;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;Landroidx/work/impl/constraints/trackers/ConstraintTracker;Landroidx/work/impl/constraints/trackers/BatteryNotLowTracker;Landroidx/work/impl/constraints/trackers/ConstraintTracker;Landroidx/work/impl/constraints/trackers/ConstraintTracker;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/work/impl/constraints/trackers/Trackers;->getBatteryChargingTracker()Landroidx/work/impl/constraints/trackers/ConstraintTracker; +HSPLandroidx/work/impl/constraints/trackers/Trackers;->getBatteryNotLowTracker()Landroidx/work/impl/constraints/trackers/BatteryNotLowTracker; +HSPLandroidx/work/impl/constraints/trackers/Trackers;->getNetworkStateTracker()Landroidx/work/impl/constraints/trackers/ConstraintTracker; +HSPLandroidx/work/impl/constraints/trackers/Trackers;->getStorageNotLowTracker()Landroidx/work/impl/constraints/trackers/ConstraintTracker; +Landroidx/work/impl/foreground/ForegroundProcessor; +Landroidx/work/impl/model/Dependency; +HSPLandroidx/work/impl/model/Dependency;->getPrerequisiteId()Ljava/lang/String; +HSPLandroidx/work/impl/model/Dependency;->getWorkSpecId()Ljava/lang/String; +Landroidx/work/impl/model/DependencyDao; +Landroidx/work/impl/model/DependencyDao_Impl; +HSPLandroidx/work/impl/model/DependencyDao_Impl;->(Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/DependencyDao_Impl;->getDependentWorkIds(Ljava/lang/String;)Ljava/util/List; +HSPLandroidx/work/impl/model/DependencyDao_Impl;->getRequiredConverters()Ljava/util/List; +HSPLandroidx/work/impl/model/DependencyDao_Impl;->hasDependents(Ljava/lang/String;)Z +HSPLandroidx/work/impl/model/DependencyDao_Impl;->insertDependency(Landroidx/work/impl/model/Dependency;)V +Landroidx/work/impl/model/DependencyDao_Impl$1; +HSPLandroidx/work/impl/model/DependencyDao_Impl$1;->(Landroidx/work/impl/model/DependencyDao_Impl;Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/DependencyDao_Impl$1;->bind(Landroidx/sqlite/db/SupportSQLiteStatement;Landroidx/work/impl/model/Dependency;)V +HSPLandroidx/work/impl/model/DependencyDao_Impl$1;->bind(Landroidx/sqlite/db/SupportSQLiteStatement;Ljava/lang/Object;)V +HSPLandroidx/work/impl/model/DependencyDao_Impl$1;->createQuery()Ljava/lang/String; +Landroidx/work/impl/model/Preference; +HSPLandroidx/work/impl/model/Preference;->(Ljava/lang/String;Ljava/lang/Long;)V +HSPLandroidx/work/impl/model/Preference;->getKey()Ljava/lang/String; +HSPLandroidx/work/impl/model/Preference;->getValue()Ljava/lang/Long; +Landroidx/work/impl/model/PreferenceDao; +Landroidx/work/impl/model/PreferenceDao_Impl; +HSPLandroidx/work/impl/model/PreferenceDao_Impl;->(Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/PreferenceDao_Impl;->getLongValue(Ljava/lang/String;)Ljava/lang/Long; +HSPLandroidx/work/impl/model/PreferenceDao_Impl;->getRequiredConverters()Ljava/util/List; +HSPLandroidx/work/impl/model/PreferenceDao_Impl;->insertPreference(Landroidx/work/impl/model/Preference;)V +Landroidx/work/impl/model/PreferenceDao_Impl$1; +HSPLandroidx/work/impl/model/PreferenceDao_Impl$1;->(Landroidx/work/impl/model/PreferenceDao_Impl;Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/PreferenceDao_Impl$1;->bind(Landroidx/sqlite/db/SupportSQLiteStatement;Landroidx/work/impl/model/Preference;)V +HSPLandroidx/work/impl/model/PreferenceDao_Impl$1;->bind(Landroidx/sqlite/db/SupportSQLiteStatement;Ljava/lang/Object;)V +HSPLandroidx/work/impl/model/PreferenceDao_Impl$1;->createQuery()Ljava/lang/String; +Landroidx/work/impl/model/RawWorkInfoDao; +Landroidx/work/impl/model/RawWorkInfoDao_Impl; +HSPLandroidx/work/impl/model/RawWorkInfoDao_Impl;->getRequiredConverters()Ljava/util/List; +Landroidx/work/impl/model/SystemIdInfo; +HSPLandroidx/work/impl/model/SystemIdInfo;->(Ljava/lang/String;II)V +HSPLandroidx/work/impl/model/SystemIdInfo;->getGeneration()I +Landroidx/work/impl/model/SystemIdInfoDao; +HSPLandroidx/work/impl/model/SystemIdInfoDao;->access$getSystemIdInfo$jd(Landroidx/work/impl/model/SystemIdInfoDao;Landroidx/work/impl/model/WorkGenerationalId;)Landroidx/work/impl/model/SystemIdInfo; +HSPLandroidx/work/impl/model/SystemIdInfoDao;->getSystemIdInfo(Landroidx/work/impl/model/WorkGenerationalId;)Landroidx/work/impl/model/SystemIdInfo; +Landroidx/work/impl/model/SystemIdInfoDao$DefaultImpls; +HSPLandroidx/work/impl/model/SystemIdInfoDao$DefaultImpls;->getSystemIdInfo(Landroidx/work/impl/model/SystemIdInfoDao;Landroidx/work/impl/model/WorkGenerationalId;)Landroidx/work/impl/model/SystemIdInfo; +Landroidx/work/impl/model/SystemIdInfoDao_Impl; +HSPLandroidx/work/impl/model/SystemIdInfoDao_Impl;->(Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/SystemIdInfoDao_Impl;->getRequiredConverters()Ljava/util/List; +HSPLandroidx/work/impl/model/SystemIdInfoDao_Impl;->getSystemIdInfo(Landroidx/work/impl/model/WorkGenerationalId;)Landroidx/work/impl/model/SystemIdInfo; +HSPLandroidx/work/impl/model/SystemIdInfoDao_Impl;->getSystemIdInfo(Ljava/lang/String;I)Landroidx/work/impl/model/SystemIdInfo; +HSPLandroidx/work/impl/model/SystemIdInfoDao_Impl;->getWorkSpecIds()Ljava/util/List; +HSPLandroidx/work/impl/model/SystemIdInfoDao_Impl;->insertSystemIdInfo(Landroidx/work/impl/model/SystemIdInfo;)V +HSPLandroidx/work/impl/model/SystemIdInfoDao_Impl;->removeSystemIdInfo(Ljava/lang/String;)V +Landroidx/work/impl/model/SystemIdInfoDao_Impl$1; +HSPLandroidx/work/impl/model/SystemIdInfoDao_Impl$1;->(Landroidx/work/impl/model/SystemIdInfoDao_Impl;Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/SystemIdInfoDao_Impl$1;->bind(Landroidx/sqlite/db/SupportSQLiteStatement;Landroidx/work/impl/model/SystemIdInfo;)V +HSPLandroidx/work/impl/model/SystemIdInfoDao_Impl$1;->bind(Landroidx/sqlite/db/SupportSQLiteStatement;Ljava/lang/Object;)V +HSPLandroidx/work/impl/model/SystemIdInfoDao_Impl$1;->createQuery()Ljava/lang/String; +Landroidx/work/impl/model/SystemIdInfoDao_Impl$2; +HSPLandroidx/work/impl/model/SystemIdInfoDao_Impl$2;->(Landroidx/work/impl/model/SystemIdInfoDao_Impl;Landroidx/room/RoomDatabase;)V +Landroidx/work/impl/model/SystemIdInfoDao_Impl$3; +HSPLandroidx/work/impl/model/SystemIdInfoDao_Impl$3;->(Landroidx/work/impl/model/SystemIdInfoDao_Impl;Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/SystemIdInfoDao_Impl$3;->createQuery()Ljava/lang/String; +Landroidx/work/impl/model/SystemIdInfoKt; +PLandroidx/work/impl/model/SystemIdInfoKt;->systemIdInfo(Landroidx/work/impl/model/WorkGenerationalId;I)Landroidx/work/impl/model/SystemIdInfo; +Landroidx/work/impl/model/WorkGenerationalId; +HSPLandroidx/work/impl/model/WorkGenerationalId;->(Ljava/lang/String;I)V +HSPLandroidx/work/impl/model/WorkGenerationalId;->equals(Ljava/lang/Object;)Z +HSPLandroidx/work/impl/model/WorkGenerationalId;->getGeneration()I +HSPLandroidx/work/impl/model/WorkGenerationalId;->getWorkSpecId()Ljava/lang/String; +HSPLandroidx/work/impl/model/WorkGenerationalId;->hashCode()I +HSPLandroidx/work/impl/model/WorkGenerationalId;->toString()Ljava/lang/String; +Landroidx/work/impl/model/WorkName; +PLandroidx/work/impl/model/WorkName;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroidx/work/impl/model/WorkName;->getName()Ljava/lang/String; +HSPLandroidx/work/impl/model/WorkName;->getWorkSpecId()Ljava/lang/String; +Landroidx/work/impl/model/WorkNameDao; +Landroidx/work/impl/model/WorkNameDao_Impl; +HSPLandroidx/work/impl/model/WorkNameDao_Impl;->(Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/WorkNameDao_Impl;->getRequiredConverters()Ljava/util/List; +HSPLandroidx/work/impl/model/WorkNameDao_Impl;->insert(Landroidx/work/impl/model/WorkName;)V +Landroidx/work/impl/model/WorkNameDao_Impl$1; +HSPLandroidx/work/impl/model/WorkNameDao_Impl$1;->(Landroidx/work/impl/model/WorkNameDao_Impl;Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/WorkNameDao_Impl$1;->bind(Landroidx/sqlite/db/SupportSQLiteStatement;Landroidx/work/impl/model/WorkName;)V +HSPLandroidx/work/impl/model/WorkNameDao_Impl$1;->bind(Landroidx/sqlite/db/SupportSQLiteStatement;Ljava/lang/Object;)V +HSPLandroidx/work/impl/model/WorkNameDao_Impl$1;->createQuery()Ljava/lang/String; +Landroidx/work/impl/model/WorkProgressDao; +Landroidx/work/impl/model/WorkProgressDao_Impl; +HSPLandroidx/work/impl/model/WorkProgressDao_Impl;->(Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/WorkProgressDao_Impl;->delete(Ljava/lang/String;)V +HSPLandroidx/work/impl/model/WorkProgressDao_Impl;->deleteAll()V +HSPLandroidx/work/impl/model/WorkProgressDao_Impl;->getRequiredConverters()Ljava/util/List; +Landroidx/work/impl/model/WorkProgressDao_Impl$1; +HSPLandroidx/work/impl/model/WorkProgressDao_Impl$1;->(Landroidx/work/impl/model/WorkProgressDao_Impl;Landroidx/room/RoomDatabase;)V +Landroidx/work/impl/model/WorkProgressDao_Impl$2; +HSPLandroidx/work/impl/model/WorkProgressDao_Impl$2;->(Landroidx/work/impl/model/WorkProgressDao_Impl;Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/WorkProgressDao_Impl$2;->createQuery()Ljava/lang/String; +Landroidx/work/impl/model/WorkProgressDao_Impl$3; +HSPLandroidx/work/impl/model/WorkProgressDao_Impl$3;->(Landroidx/work/impl/model/WorkProgressDao_Impl;Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/WorkProgressDao_Impl$3;->createQuery()Ljava/lang/String; +Landroidx/work/impl/model/WorkSpec; +HSPLandroidx/work/impl/model/WorkSpec;->()V +HSPLandroidx/work/impl/model/WorkSpec;->(Ljava/lang/String;Landroidx/work/WorkInfo$State;Ljava/lang/String;Ljava/lang/String;Landroidx/work/Data;Landroidx/work/Data;JJJLandroidx/work/Constraints;ILandroidx/work/BackoffPolicy;JJJJZLandroidx/work/OutOfQuotaPolicy;IIJII)V +HSPLandroidx/work/impl/model/WorkSpec;->(Ljava/lang/String;Landroidx/work/WorkInfo$State;Ljava/lang/String;Ljava/lang/String;Landroidx/work/Data;Landroidx/work/Data;JJJLandroidx/work/Constraints;ILandroidx/work/BackoffPolicy;JJJJZLandroidx/work/OutOfQuotaPolicy;IIJIIILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/work/impl/model/WorkSpec;->(Ljava/lang/String;Landroidx/work/impl/model/WorkSpec;)V +HSPLandroidx/work/impl/model/WorkSpec;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroidx/work/impl/model/WorkSpec;->calculateNextRunTime()J +HSPLandroidx/work/impl/model/WorkSpec;->getGeneration()I +HSPLandroidx/work/impl/model/WorkSpec;->getNextScheduleTimeOverride()J +HSPLandroidx/work/impl/model/WorkSpec;->getNextScheduleTimeOverrideGeneration()I +HSPLandroidx/work/impl/model/WorkSpec;->getPeriodCount()I +HSPLandroidx/work/impl/model/WorkSpec;->getStopReason()I +PLandroidx/work/impl/model/WorkSpec;->hasConstraints()Z +HSPLandroidx/work/impl/model/WorkSpec;->hashCode()I +HSPLandroidx/work/impl/model/WorkSpec;->isBackedOff()Z +HSPLandroidx/work/impl/model/WorkSpec;->isPeriodic()Z +HSPLandroidx/work/impl/model/WorkSpec;->setPeriodic(JJ)V +Landroidx/work/impl/model/WorkSpec$$ExternalSyntheticLambda0; +HSPLandroidx/work/impl/model/WorkSpec$$ExternalSyntheticLambda0;->()V +Landroidx/work/impl/model/WorkSpec$Companion; +HSPLandroidx/work/impl/model/WorkSpec$Companion;->()V +HSPLandroidx/work/impl/model/WorkSpec$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/work/impl/model/WorkSpec$Companion;->calculateNextRunTime(ZILandroidx/work/BackoffPolicy;JJIZJJJJ)J +Landroidx/work/impl/model/WorkSpec$IdAndState; +HSPLandroidx/work/impl/model/WorkSpec$IdAndState;->(Ljava/lang/String;Landroidx/work/WorkInfo$State;)V +Landroidx/work/impl/model/WorkSpecDao; +Landroidx/work/impl/model/WorkSpecDao_Impl; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->(Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->getAllEligibleWorkSpecsForScheduling(I)Ljava/util/List; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->getEligibleWorkForScheduling(I)Ljava/util/List; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->getEligibleWorkForSchedulingWithContentUris()Ljava/util/List; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->getInputsFromPrerequisites(Ljava/lang/String;)Ljava/util/List; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->getRequiredConverters()Ljava/util/List; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->getRunningWork()Ljava/util/List; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->getState(Ljava/lang/String;)Landroidx/work/WorkInfo$State; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->getWorkSpec(Ljava/lang/String;)Landroidx/work/impl/model/WorkSpec; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->getWorkSpecIdAndStatesForName(Ljava/lang/String;)Ljava/util/List; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->hasUnfinishedWork()Z +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->incrementWorkSpecRunAttemptCount(Ljava/lang/String;)I +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->insertWorkSpec(Landroidx/work/impl/model/WorkSpec;)V +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->markWorkSpecScheduled(Ljava/lang/String;J)I +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->resetScheduledState()I +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->setOutput(Ljava/lang/String;Landroidx/work/Data;)V +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->setState(Landroidx/work/WorkInfo$State;Ljava/lang/String;)I +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->setStopReason(Ljava/lang/String;I)V +Landroidx/work/impl/model/WorkSpecDao_Impl$1; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$1;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$1;->bind(Landroidx/sqlite/db/SupportSQLiteStatement;Landroidx/work/impl/model/WorkSpec;)V +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$1;->bind(Landroidx/sqlite/db/SupportSQLiteStatement;Ljava/lang/Object;)V +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$1;->createQuery()Ljava/lang/String; +Landroidx/work/impl/model/WorkSpecDao_Impl$10; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$10;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +Landroidx/work/impl/model/WorkSpecDao_Impl$11; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$11;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +Landroidx/work/impl/model/WorkSpecDao_Impl$12; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$12;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +Landroidx/work/impl/model/WorkSpecDao_Impl$13; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$13;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$13;->createQuery()Ljava/lang/String; +Landroidx/work/impl/model/WorkSpecDao_Impl$14; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$14;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$14;->createQuery()Ljava/lang/String; +Landroidx/work/impl/model/WorkSpecDao_Impl$15; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$15;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +Landroidx/work/impl/model/WorkSpecDao_Impl$16; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$16;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +Landroidx/work/impl/model/WorkSpecDao_Impl$17; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$17;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$17;->createQuery()Ljava/lang/String; +Landroidx/work/impl/model/WorkSpecDao_Impl$2; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$2;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +Landroidx/work/impl/model/WorkSpecDao_Impl$3; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$3;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +Landroidx/work/impl/model/WorkSpecDao_Impl$4; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$4;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$4;->createQuery()Ljava/lang/String; +Landroidx/work/impl/model/WorkSpecDao_Impl$5; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$5;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +Landroidx/work/impl/model/WorkSpecDao_Impl$6; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$6;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +Landroidx/work/impl/model/WorkSpecDao_Impl$7; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$7;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$7;->createQuery()Ljava/lang/String; +Landroidx/work/impl/model/WorkSpecDao_Impl$8; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$8;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +Landroidx/work/impl/model/WorkSpecDao_Impl$9; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$9;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$9;->createQuery()Ljava/lang/String; +Landroidx/work/impl/model/WorkSpecKt; +HSPLandroidx/work/impl/model/WorkSpecKt;->generationalId(Landroidx/work/impl/model/WorkSpec;)Landroidx/work/impl/model/WorkGenerationalId; +Landroidx/work/impl/model/WorkTag; +HSPLandroidx/work/impl/model/WorkTag;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroidx/work/impl/model/WorkTag;->getTag()Ljava/lang/String; +HSPLandroidx/work/impl/model/WorkTag;->getWorkSpecId()Ljava/lang/String; +Landroidx/work/impl/model/WorkTagDao; +HSPLandroidx/work/impl/model/WorkTagDao;->access$insertTags$jd(Landroidx/work/impl/model/WorkTagDao;Ljava/lang/String;Ljava/util/Set;)V +HSPLandroidx/work/impl/model/WorkTagDao;->insertTags(Ljava/lang/String;Ljava/util/Set;)V +Landroidx/work/impl/model/WorkTagDao$DefaultImpls; +HSPLandroidx/work/impl/model/WorkTagDao$DefaultImpls;->insertTags(Landroidx/work/impl/model/WorkTagDao;Ljava/lang/String;Ljava/util/Set;)V +Landroidx/work/impl/model/WorkTagDao_Impl; +HSPLandroidx/work/impl/model/WorkTagDao_Impl;->(Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/WorkTagDao_Impl;->getRequiredConverters()Ljava/util/List; +HSPLandroidx/work/impl/model/WorkTagDao_Impl;->getTagsForWorkSpecId(Ljava/lang/String;)Ljava/util/List; +HSPLandroidx/work/impl/model/WorkTagDao_Impl;->insert(Landroidx/work/impl/model/WorkTag;)V +HSPLandroidx/work/impl/model/WorkTagDao_Impl;->insertTags(Ljava/lang/String;Ljava/util/Set;)V +Landroidx/work/impl/model/WorkTagDao_Impl$1; +HSPLandroidx/work/impl/model/WorkTagDao_Impl$1;->(Landroidx/work/impl/model/WorkTagDao_Impl;Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/WorkTagDao_Impl$1;->bind(Landroidx/sqlite/db/SupportSQLiteStatement;Landroidx/work/impl/model/WorkTag;)V +HSPLandroidx/work/impl/model/WorkTagDao_Impl$1;->bind(Landroidx/sqlite/db/SupportSQLiteStatement;Ljava/lang/Object;)V +HSPLandroidx/work/impl/model/WorkTagDao_Impl$1;->createQuery()Ljava/lang/String; +Landroidx/work/impl/model/WorkTagDao_Impl$2; +HSPLandroidx/work/impl/model/WorkTagDao_Impl$2;->(Landroidx/work/impl/model/WorkTagDao_Impl;Landroidx/room/RoomDatabase;)V +Landroidx/work/impl/model/WorkTypeConverters; +HSPLandroidx/work/impl/model/WorkTypeConverters;->()V +HSPLandroidx/work/impl/model/WorkTypeConverters;->()V +HSPLandroidx/work/impl/model/WorkTypeConverters;->backoffPolicyToInt(Landroidx/work/BackoffPolicy;)I +HSPLandroidx/work/impl/model/WorkTypeConverters;->byteArrayToSetOfTriggers([B)Ljava/util/Set; +HSPLandroidx/work/impl/model/WorkTypeConverters;->intToBackoffPolicy(I)Landroidx/work/BackoffPolicy; +HSPLandroidx/work/impl/model/WorkTypeConverters;->intToNetworkType(I)Landroidx/work/NetworkType; +HSPLandroidx/work/impl/model/WorkTypeConverters;->intToOutOfQuotaPolicy(I)Landroidx/work/OutOfQuotaPolicy; +HSPLandroidx/work/impl/model/WorkTypeConverters;->intToState(I)Landroidx/work/WorkInfo$State; +HSPLandroidx/work/impl/model/WorkTypeConverters;->networkTypeToInt(Landroidx/work/NetworkType;)I +HSPLandroidx/work/impl/model/WorkTypeConverters;->outOfQuotaPolicyToInt(Landroidx/work/OutOfQuotaPolicy;)I +HSPLandroidx/work/impl/model/WorkTypeConverters;->setOfTriggersToByteArray(Ljava/util/Set;)[B +HSPLandroidx/work/impl/model/WorkTypeConverters;->stateToInt(Landroidx/work/WorkInfo$State;)I +Landroidx/work/impl/model/WorkTypeConverters$WhenMappings; +HSPLandroidx/work/impl/model/WorkTypeConverters$WhenMappings;->()V +Landroidx/work/impl/utils/Api28Impl; +HSPLandroidx/work/impl/utils/Api28Impl;->()V +HSPLandroidx/work/impl/utils/Api28Impl;->()V +HSPLandroidx/work/impl/utils/Api28Impl;->getProcessName()Ljava/lang/String; +Landroidx/work/impl/utils/EnqueueRunnable; +HSPLandroidx/work/impl/utils/EnqueueRunnable;->()V +HSPLandroidx/work/impl/utils/EnqueueRunnable;->(Landroidx/work/impl/WorkContinuationImpl;)V +HSPLandroidx/work/impl/utils/EnqueueRunnable;->(Landroidx/work/impl/WorkContinuationImpl;Landroidx/work/impl/OperationImpl;)V +HSPLandroidx/work/impl/utils/EnqueueRunnable;->addToDatabase()Z +HSPLandroidx/work/impl/utils/EnqueueRunnable;->enqueueContinuation(Landroidx/work/impl/WorkContinuationImpl;)Z +HSPLandroidx/work/impl/utils/EnqueueRunnable;->enqueueWorkWithPrerequisites(Landroidx/work/impl/WorkManagerImpl;Ljava/util/List;[Ljava/lang/String;Ljava/lang/String;Landroidx/work/ExistingWorkPolicy;)Z +HSPLandroidx/work/impl/utils/EnqueueRunnable;->getOperation()Landroidx/work/Operation; +HSPLandroidx/work/impl/utils/EnqueueRunnable;->processContinuation(Landroidx/work/impl/WorkContinuationImpl;)Z +HSPLandroidx/work/impl/utils/EnqueueRunnable;->run()V +HSPLandroidx/work/impl/utils/EnqueueRunnable;->scheduleWorkInBackground()V +Landroidx/work/impl/utils/EnqueueUtilsKt; +HSPLandroidx/work/impl/utils/EnqueueUtilsKt;->checkContentUriTriggerWorkerLimits(Landroidx/work/impl/WorkDatabase;Landroidx/work/Configuration;Landroidx/work/impl/WorkContinuationImpl;)V +PLandroidx/work/impl/utils/EnqueueUtilsKt;->wrapInConstraintTrackingWorkerIfNeeded(Ljava/util/List;Landroidx/work/impl/model/WorkSpec;)Landroidx/work/impl/model/WorkSpec; +Landroidx/work/impl/utils/ForceStopRunnable; +HSPLandroidx/work/impl/utils/ForceStopRunnable;->()V +HSPLandroidx/work/impl/utils/ForceStopRunnable;->(Landroid/content/Context;Landroidx/work/impl/WorkManagerImpl;)V +HSPLandroidx/work/impl/utils/ForceStopRunnable;->cleanUp()Z +HSPLandroidx/work/impl/utils/ForceStopRunnable;->forceStopRunnable()V +HSPLandroidx/work/impl/utils/ForceStopRunnable;->getIntent(Landroid/content/Context;)Landroid/content/Intent; +HSPLandroidx/work/impl/utils/ForceStopRunnable;->getPendingIntent(Landroid/content/Context;I)Landroid/app/PendingIntent; +HSPLandroidx/work/impl/utils/ForceStopRunnable;->isForceStopped()Z +HSPLandroidx/work/impl/utils/ForceStopRunnable;->multiProcessChecks()Z +HSPLandroidx/work/impl/utils/ForceStopRunnable;->run()V +HSPLandroidx/work/impl/utils/ForceStopRunnable;->shouldRescheduleWorkers()Z +Landroidx/work/impl/utils/ForceStopRunnable$BroadcastReceiver; +Landroidx/work/impl/utils/IdGenerator; +HSPLandroidx/work/impl/utils/IdGenerator;->$r8$lambda$LyUC9fmKDw6AhARQq6V7VCdkafU(Landroidx/work/impl/utils/IdGenerator;II)Ljava/lang/Integer; +HSPLandroidx/work/impl/utils/IdGenerator;->(Landroidx/work/impl/WorkDatabase;)V +HSPLandroidx/work/impl/utils/IdGenerator;->nextJobSchedulerIdWithRange$lambda$0(Landroidx/work/impl/utils/IdGenerator;II)Ljava/lang/Integer; +PLandroidx/work/impl/utils/IdGenerator;->nextJobSchedulerIdWithRange(II)I +Landroidx/work/impl/utils/IdGenerator$$ExternalSyntheticLambda1; +PLandroidx/work/impl/utils/IdGenerator$$ExternalSyntheticLambda1;->(Landroidx/work/impl/utils/IdGenerator;II)V +HSPLandroidx/work/impl/utils/IdGenerator$$ExternalSyntheticLambda1;->call()Ljava/lang/Object; +Landroidx/work/impl/utils/IdGeneratorKt; +HSPLandroidx/work/impl/utils/IdGeneratorKt;->access$nextId(Landroidx/work/impl/WorkDatabase;Ljava/lang/String;)I +HSPLandroidx/work/impl/utils/IdGeneratorKt;->nextId(Landroidx/work/impl/WorkDatabase;Ljava/lang/String;)I +HSPLandroidx/work/impl/utils/IdGeneratorKt;->updatePreference(Landroidx/work/impl/WorkDatabase;Ljava/lang/String;I)V +Landroidx/work/impl/utils/NetworkApi21; +HSPLandroidx/work/impl/utils/NetworkApi21;->getNetworkCapabilitiesCompat(Landroid/net/ConnectivityManager;Landroid/net/Network;)Landroid/net/NetworkCapabilities; +HSPLandroidx/work/impl/utils/NetworkApi21;->hasCapabilityCompat(Landroid/net/NetworkCapabilities;I)Z +HSPLandroidx/work/impl/utils/NetworkApi21;->unregisterNetworkCallbackCompat(Landroid/net/ConnectivityManager;Landroid/net/ConnectivityManager$NetworkCallback;)V +Landroidx/work/impl/utils/NetworkApi23; +HSPLandroidx/work/impl/utils/NetworkApi23;->getActiveNetworkCompat(Landroid/net/ConnectivityManager;)Landroid/net/Network; +Landroidx/work/impl/utils/NetworkApi24; +HSPLandroidx/work/impl/utils/NetworkApi24;->registerDefaultNetworkCallbackCompat(Landroid/net/ConnectivityManager;Landroid/net/ConnectivityManager$NetworkCallback;)V +Landroidx/work/impl/utils/PackageManagerHelper; +HSPLandroidx/work/impl/utils/PackageManagerHelper;->()V +HSPLandroidx/work/impl/utils/PackageManagerHelper;->getComponentEnabledSetting(Landroid/content/Context;Ljava/lang/String;)I +HSPLandroidx/work/impl/utils/PackageManagerHelper;->isComponentEnabled(IZ)Z +HSPLandroidx/work/impl/utils/PackageManagerHelper;->setComponentEnabled(Landroid/content/Context;Ljava/lang/Class;Z)V +Landroidx/work/impl/utils/PreferenceUtils; +HSPLandroidx/work/impl/utils/PreferenceUtils;->(Landroidx/work/impl/WorkDatabase;)V +HSPLandroidx/work/impl/utils/PreferenceUtils;->getLastForceStopEventMillis()J +HSPLandroidx/work/impl/utils/PreferenceUtils;->getNeedsReschedule()Z +HSPLandroidx/work/impl/utils/PreferenceUtils;->setLastForceStopEventMillis(J)V +Landroidx/work/impl/utils/ProcessUtils; +HSPLandroidx/work/impl/utils/ProcessUtils;->()V +HSPLandroidx/work/impl/utils/ProcessUtils;->getProcessName(Landroid/content/Context;)Ljava/lang/String; +HSPLandroidx/work/impl/utils/ProcessUtils;->isDefaultProcess(Landroid/content/Context;Landroidx/work/Configuration;)Z +Landroidx/work/impl/utils/SerialExecutorImpl; +HSPLandroidx/work/impl/utils/SerialExecutorImpl;->(Ljava/util/concurrent/Executor;)V +HSPLandroidx/work/impl/utils/SerialExecutorImpl;->execute(Ljava/lang/Runnable;)V +HSPLandroidx/work/impl/utils/SerialExecutorImpl;->scheduleNext()V +Landroidx/work/impl/utils/SerialExecutorImpl$Task; +HSPLandroidx/work/impl/utils/SerialExecutorImpl$Task;->(Landroidx/work/impl/utils/SerialExecutorImpl;Ljava/lang/Runnable;)V +HSPLandroidx/work/impl/utils/SerialExecutorImpl$Task;->run()V +Landroidx/work/impl/utils/StartWorkRunnable; +HSPLandroidx/work/impl/utils/StartWorkRunnable;->(Landroidx/work/impl/Processor;Landroidx/work/impl/StartStopToken;Landroidx/work/WorkerParameters$RuntimeExtras;)V +HSPLandroidx/work/impl/utils/StartWorkRunnable;->run()V +Landroidx/work/impl/utils/SynchronousExecutor; +HSPLandroidx/work/impl/utils/SynchronousExecutor;->()V +HSPLandroidx/work/impl/utils/SynchronousExecutor;->execute(Ljava/lang/Runnable;)V +Landroidx/work/impl/utils/WorkForegroundRunnable; +HSPLandroidx/work/impl/utils/WorkForegroundRunnable;->()V +HSPLandroidx/work/impl/utils/WorkForegroundRunnable;->(Landroid/content/Context;Landroidx/work/impl/model/WorkSpec;Landroidx/work/ListenableWorker;Landroidx/work/ForegroundUpdater;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;)V +HSPLandroidx/work/impl/utils/WorkForegroundRunnable;->getFuture()Lcom/google/common/util/concurrent/ListenableFuture; +HSPLandroidx/work/impl/utils/WorkForegroundRunnable;->run()V +Landroidx/work/impl/utils/WorkForegroundUpdater; +HSPLandroidx/work/impl/utils/WorkForegroundUpdater;->()V +HSPLandroidx/work/impl/utils/WorkForegroundUpdater;->(Landroidx/work/impl/WorkDatabase;Landroidx/work/impl/foreground/ForegroundProcessor;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;)V +Landroidx/work/impl/utils/WorkProgressUpdater; +HSPLandroidx/work/impl/utils/WorkProgressUpdater;->()V +HSPLandroidx/work/impl/utils/WorkProgressUpdater;->(Landroidx/work/impl/WorkDatabase;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;)V +Landroidx/work/impl/utils/futures/AbstractFuture; +HSPLandroidx/work/impl/utils/futures/AbstractFuture;->()V +HSPLandroidx/work/impl/utils/futures/AbstractFuture;->()V +HSPLandroidx/work/impl/utils/futures/AbstractFuture;->addListener(Ljava/lang/Runnable;Ljava/util/concurrent/Executor;)V +HSPLandroidx/work/impl/utils/futures/AbstractFuture;->afterDone()V +HSPLandroidx/work/impl/utils/futures/AbstractFuture;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/work/impl/utils/futures/AbstractFuture;->clearListeners(Landroidx/work/impl/utils/futures/AbstractFuture$Listener;)Landroidx/work/impl/utils/futures/AbstractFuture$Listener; +HSPLandroidx/work/impl/utils/futures/AbstractFuture;->complete(Landroidx/work/impl/utils/futures/AbstractFuture;)V +HSPLandroidx/work/impl/utils/futures/AbstractFuture;->executeListener(Ljava/lang/Runnable;Ljava/util/concurrent/Executor;)V +HSPLandroidx/work/impl/utils/futures/AbstractFuture;->get()Ljava/lang/Object; +HSPLandroidx/work/impl/utils/futures/AbstractFuture;->getDoneValue(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/work/impl/utils/futures/AbstractFuture;->getFutureValue(Lcom/google/common/util/concurrent/ListenableFuture;)Ljava/lang/Object; +HSPLandroidx/work/impl/utils/futures/AbstractFuture;->isCancelled()Z +HSPLandroidx/work/impl/utils/futures/AbstractFuture;->isDone()Z +HSPLandroidx/work/impl/utils/futures/AbstractFuture;->releaseWaiters()V +HSPLandroidx/work/impl/utils/futures/AbstractFuture;->set(Ljava/lang/Object;)Z +HSPLandroidx/work/impl/utils/futures/AbstractFuture;->setFuture(Lcom/google/common/util/concurrent/ListenableFuture;)Z +Landroidx/work/impl/utils/futures/AbstractFuture$AtomicHelper; +HSPLandroidx/work/impl/utils/futures/AbstractFuture$AtomicHelper;->()V +HSPLandroidx/work/impl/utils/futures/AbstractFuture$AtomicHelper;->(Landroidx/work/impl/utils/futures/AbstractFuture$1;)V +Landroidx/work/impl/utils/futures/AbstractFuture$Cancellation; +Landroidx/work/impl/utils/futures/AbstractFuture$Failure; +Landroidx/work/impl/utils/futures/AbstractFuture$Listener; +HSPLandroidx/work/impl/utils/futures/AbstractFuture$Listener;->()V +HSPLandroidx/work/impl/utils/futures/AbstractFuture$Listener;->(Ljava/lang/Runnable;Ljava/util/concurrent/Executor;)V +Landroidx/work/impl/utils/futures/AbstractFuture$SafeAtomicHelper; +HSPLandroidx/work/impl/utils/futures/AbstractFuture$SafeAtomicHelper;->(Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;)V +HSPLandroidx/work/impl/utils/futures/AbstractFuture$SafeAtomicHelper;->casListeners(Landroidx/work/impl/utils/futures/AbstractFuture;Landroidx/work/impl/utils/futures/AbstractFuture$Listener;Landroidx/work/impl/utils/futures/AbstractFuture$Listener;)Z +HSPLandroidx/work/impl/utils/futures/AbstractFuture$SafeAtomicHelper;->casValue(Landroidx/work/impl/utils/futures/AbstractFuture;Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLandroidx/work/impl/utils/futures/AbstractFuture$SafeAtomicHelper;->casWaiters(Landroidx/work/impl/utils/futures/AbstractFuture;Landroidx/work/impl/utils/futures/AbstractFuture$Waiter;Landroidx/work/impl/utils/futures/AbstractFuture$Waiter;)Z +Landroidx/work/impl/utils/futures/AbstractFuture$SetFuture; +HSPLandroidx/work/impl/utils/futures/AbstractFuture$SetFuture;->(Landroidx/work/impl/utils/futures/AbstractFuture;Lcom/google/common/util/concurrent/ListenableFuture;)V +Landroidx/work/impl/utils/futures/AbstractFuture$Waiter; +HSPLandroidx/work/impl/utils/futures/AbstractFuture$Waiter;->()V +HSPLandroidx/work/impl/utils/futures/AbstractFuture$Waiter;->(Z)V +Landroidx/work/impl/utils/futures/DirectExecutor; +HSPLandroidx/work/impl/utils/futures/DirectExecutor;->$values()[Landroidx/work/impl/utils/futures/DirectExecutor; +HSPLandroidx/work/impl/utils/futures/DirectExecutor;->()V +HSPLandroidx/work/impl/utils/futures/DirectExecutor;->(Ljava/lang/String;I)V +Landroidx/work/impl/utils/futures/SettableFuture; +HSPLandroidx/work/impl/utils/futures/SettableFuture;->()V +HSPLandroidx/work/impl/utils/futures/SettableFuture;->create()Landroidx/work/impl/utils/futures/SettableFuture; +HSPLandroidx/work/impl/utils/futures/SettableFuture;->set(Ljava/lang/Object;)Z +HSPLandroidx/work/impl/utils/futures/SettableFuture;->setFuture(Lcom/google/common/util/concurrent/ListenableFuture;)Z +Landroidx/work/impl/utils/taskexecutor/SerialExecutor; +Landroidx/work/impl/utils/taskexecutor/TaskExecutor; +HSPLandroidx/work/impl/utils/taskexecutor/TaskExecutor;->executeOnTaskThread(Ljava/lang/Runnable;)V +Landroidx/work/impl/utils/taskexecutor/WorkManagerTaskExecutor; +HSPLandroidx/work/impl/utils/taskexecutor/WorkManagerTaskExecutor;->(Ljava/util/concurrent/Executor;)V +HSPLandroidx/work/impl/utils/taskexecutor/WorkManagerTaskExecutor;->getMainThreadExecutor()Ljava/util/concurrent/Executor; +HSPLandroidx/work/impl/utils/taskexecutor/WorkManagerTaskExecutor;->getSerialTaskExecutor()Landroidx/work/impl/utils/SerialExecutorImpl; +HSPLandroidx/work/impl/utils/taskexecutor/WorkManagerTaskExecutor;->getSerialTaskExecutor()Landroidx/work/impl/utils/taskexecutor/SerialExecutor; +HSPLandroidx/work/impl/utils/taskexecutor/WorkManagerTaskExecutor;->getTaskCoroutineDispatcher()Lkotlinx/coroutines/CoroutineDispatcher; +Landroidx/work/impl/utils/taskexecutor/WorkManagerTaskExecutor$1; +HSPLandroidx/work/impl/utils/taskexecutor/WorkManagerTaskExecutor$1;->(Landroidx/work/impl/utils/taskexecutor/WorkManagerTaskExecutor;)V +HSPLandroidx/work/impl/utils/taskexecutor/WorkManagerTaskExecutor$1;->execute(Ljava/lang/Runnable;)V +Lapp/cash/sqldelight/BaseTransacterImpl; +HSPLapp/cash/sqldelight/BaseTransacterImpl;->(Lapp/cash/sqldelight/db/SqlDriver;)V +HSPLapp/cash/sqldelight/BaseTransacterImpl;->getDriver()Lapp/cash/sqldelight/db/SqlDriver; +HSPLapp/cash/sqldelight/BaseTransacterImpl;->postTransactionCleanup(Lapp/cash/sqldelight/Transacter$Transaction;Lapp/cash/sqldelight/Transacter$Transaction;Ljava/lang/Throwable;Ljava/lang/Object;)Ljava/lang/Object; +Lapp/cash/sqldelight/ColumnAdapter; +Lapp/cash/sqldelight/ExecutableQuery; +HSPLapp/cash/sqldelight/ExecutableQuery;->(Lkotlin/jvm/functions/Function1;)V +HSPLapp/cash/sqldelight/ExecutableQuery;->executeAsList()Ljava/util/List; +Lapp/cash/sqldelight/ExecutableQuery$executeAsList$1; +HSPLapp/cash/sqldelight/ExecutableQuery$executeAsList$1;->(Lapp/cash/sqldelight/ExecutableQuery;)V +HSPLapp/cash/sqldelight/ExecutableQuery$executeAsList$1;->invoke(Lapp/cash/sqldelight/db/SqlCursor;)Lapp/cash/sqldelight/db/QueryResult; +HSPLapp/cash/sqldelight/ExecutableQuery$executeAsList$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lapp/cash/sqldelight/Query; +HSPLapp/cash/sqldelight/Query;->(Lkotlin/jvm/functions/Function1;)V +Lapp/cash/sqldelight/Query$Listener; +Lapp/cash/sqldelight/QueryKt; +HSPLapp/cash/sqldelight/QueryKt;->Query(I[Ljava/lang/String;Lapp/cash/sqldelight/db/SqlDriver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)Lapp/cash/sqldelight/Query; +Lapp/cash/sqldelight/RollbackException; +Lapp/cash/sqldelight/SimpleQuery; +HSPLapp/cash/sqldelight/SimpleQuery;->(I[Ljava/lang/String;Lapp/cash/sqldelight/db/SqlDriver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V +HSPLapp/cash/sqldelight/SimpleQuery;->addListener(Lapp/cash/sqldelight/Query$Listener;)V +HSPLapp/cash/sqldelight/SimpleQuery;->execute(Lkotlin/jvm/functions/Function1;)Lapp/cash/sqldelight/db/QueryResult; +HSPLapp/cash/sqldelight/SimpleQuery;->removeListener(Lapp/cash/sqldelight/Query$Listener;)V +Lapp/cash/sqldelight/Transacter; +Lapp/cash/sqldelight/Transacter$DefaultImpls; +HSPLapp/cash/sqldelight/Transacter$DefaultImpls;->transaction$default(Lapp/cash/sqldelight/Transacter;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +Lapp/cash/sqldelight/Transacter$Transaction; +HSPLapp/cash/sqldelight/Transacter$Transaction;->()V +HSPLapp/cash/sqldelight/Transacter$Transaction;->checkThreadConfinement$runtime()V +HSPLapp/cash/sqldelight/Transacter$Transaction;->enclosingTransaction$runtime()Lapp/cash/sqldelight/Transacter$Transaction; +HSPLapp/cash/sqldelight/Transacter$Transaction;->endTransaction$runtime()Lapp/cash/sqldelight/db/QueryResult; +HSPLapp/cash/sqldelight/Transacter$Transaction;->getChildrenSuccessful$runtime()Z +HSPLapp/cash/sqldelight/Transacter$Transaction;->getPendingTables$runtime()Ljava/util/Set; +HSPLapp/cash/sqldelight/Transacter$Transaction;->getPostCommitHooks$runtime()Ljava/util/List; +HSPLapp/cash/sqldelight/Transacter$Transaction;->getRegisteredQueries$runtime()Ljava/util/Set; +HSPLapp/cash/sqldelight/Transacter$Transaction;->getSuccessful$runtime()Z +HSPLapp/cash/sqldelight/Transacter$Transaction;->setSuccessful$runtime(Z)V +HSPLapp/cash/sqldelight/Transacter$Transaction;->setTransacter$runtime(Lapp/cash/sqldelight/TransacterBase;)V +Lapp/cash/sqldelight/TransacterBase; +Lapp/cash/sqldelight/TransacterImpl; +HSPLapp/cash/sqldelight/TransacterImpl;->(Lapp/cash/sqldelight/db/SqlDriver;)V +HSPLapp/cash/sqldelight/TransacterImpl;->transaction(ZLkotlin/jvm/functions/Function1;)V +HSPLapp/cash/sqldelight/TransacterImpl;->transactionWithWrapper(ZLkotlin/jvm/functions/Function1;)Ljava/lang/Object; +Lapp/cash/sqldelight/TransactionCallbacks; +Lapp/cash/sqldelight/TransactionWithReturn; +Lapp/cash/sqldelight/TransactionWithoutReturn; +Lapp/cash/sqldelight/TransactionWrapper; +HSPLapp/cash/sqldelight/TransactionWrapper;->(Lapp/cash/sqldelight/Transacter$Transaction;)V +Lapp/cash/sqldelight/async/coroutines/QueryExtensionsKt; +HSPLapp/cash/sqldelight/async/coroutines/QueryExtensionsKt;->awaitAsList(Lapp/cash/sqldelight/ExecutableQuery;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lapp/cash/sqldelight/async/coroutines/QueryExtensionsKt$awaitAsList$2; +HSPLapp/cash/sqldelight/async/coroutines/QueryExtensionsKt$awaitAsList$2;->(Lapp/cash/sqldelight/ExecutableQuery;)V +HSPLapp/cash/sqldelight/async/coroutines/QueryExtensionsKt$awaitAsList$2;->invoke(Lapp/cash/sqldelight/db/SqlCursor;)Lapp/cash/sqldelight/db/QueryResult; +HSPLapp/cash/sqldelight/async/coroutines/QueryExtensionsKt$awaitAsList$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lapp/cash/sqldelight/coroutines/FlowQuery; +HSPLapp/cash/sqldelight/coroutines/FlowQuery;->mapToList(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/CoroutineContext;)Lkotlinx/coroutines/flow/Flow; +HSPLapp/cash/sqldelight/coroutines/FlowQuery;->toFlow(Lapp/cash/sqldelight/Query;)Lkotlinx/coroutines/flow/Flow; +Lapp/cash/sqldelight/coroutines/FlowQuery$asFlow$1; +HSPLapp/cash/sqldelight/coroutines/FlowQuery$asFlow$1;->(Lapp/cash/sqldelight/Query;Lkotlin/coroutines/Continuation;)V +HSPLapp/cash/sqldelight/coroutines/FlowQuery$asFlow$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLapp/cash/sqldelight/coroutines/FlowQuery$asFlow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLapp/cash/sqldelight/coroutines/FlowQuery$asFlow$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLapp/cash/sqldelight/coroutines/FlowQuery$asFlow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lapp/cash/sqldelight/coroutines/FlowQuery$asFlow$1$$ExternalSyntheticLambda0; +HSPLapp/cash/sqldelight/coroutines/FlowQuery$asFlow$1$$ExternalSyntheticLambda0;->(Lkotlinx/coroutines/channels/Channel;)V +Lapp/cash/sqldelight/coroutines/FlowQuery$mapToList$$inlined$map$1; +HSPLapp/cash/sqldelight/coroutines/FlowQuery$mapToList$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/CoroutineContext;)V +HSPLapp/cash/sqldelight/coroutines/FlowQuery$mapToList$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lapp/cash/sqldelight/coroutines/FlowQuery$mapToList$$inlined$map$1$2; +HSPLapp/cash/sqldelight/coroutines/FlowQuery$mapToList$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/CoroutineContext;)V +HSPLapp/cash/sqldelight/coroutines/FlowQuery$mapToList$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lapp/cash/sqldelight/coroutines/FlowQuery$mapToList$$inlined$map$1$2$1; +HSPLapp/cash/sqldelight/coroutines/FlowQuery$mapToList$$inlined$map$1$2$1;->(Lapp/cash/sqldelight/coroutines/FlowQuery$mapToList$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +HSPLapp/cash/sqldelight/coroutines/FlowQuery$mapToList$$inlined$map$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lapp/cash/sqldelight/coroutines/FlowQuery$mapToList$1$1; +HSPLapp/cash/sqldelight/coroutines/FlowQuery$mapToList$1$1;->(Lapp/cash/sqldelight/Query;Lkotlin/coroutines/Continuation;)V +HSPLapp/cash/sqldelight/coroutines/FlowQuery$mapToList$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLapp/cash/sqldelight/coroutines/FlowQuery$mapToList$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lapp/cash/sqldelight/db/AfterVersion; +Lapp/cash/sqldelight/db/QueryResult; +HSPLapp/cash/sqldelight/db/QueryResult;->()V +Lapp/cash/sqldelight/db/QueryResult$AsyncValue; +Lapp/cash/sqldelight/db/QueryResult$Companion; +HSPLapp/cash/sqldelight/db/QueryResult$Companion;->()V +HSPLapp/cash/sqldelight/db/QueryResult$Companion;->()V +HSPLapp/cash/sqldelight/db/QueryResult$Companion;->getUnit-mlR-ZEE()Ljava/lang/Object; +Lapp/cash/sqldelight/db/QueryResult$Value; +HSPLapp/cash/sqldelight/db/QueryResult$Value;->(Ljava/lang/Object;)V +HSPLapp/cash/sqldelight/db/QueryResult$Value;->await(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLapp/cash/sqldelight/db/QueryResult$Value;->await-impl(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLapp/cash/sqldelight/db/QueryResult$Value;->box-impl(Ljava/lang/Object;)Lapp/cash/sqldelight/db/QueryResult$Value; +HSPLapp/cash/sqldelight/db/QueryResult$Value;->constructor-impl(Ljava/lang/Object;)Ljava/lang/Object; +HSPLapp/cash/sqldelight/db/QueryResult$Value;->getValue()Ljava/lang/Object; +Lapp/cash/sqldelight/db/SqlCursor; +Lapp/cash/sqldelight/db/SqlDriver; +PLapp/cash/sqldelight/db/SqlDriver$DefaultImpls;->execute$default(Lapp/cash/sqldelight/db/SqlDriver;Ljava/lang/Integer;Ljava/lang/String;ILkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lapp/cash/sqldelight/db/QueryResult; +Lapp/cash/sqldelight/db/SqlPreparedStatement; +Lapp/cash/sqldelight/db/SqlSchema; +Lapp/cash/sqldelight/driver/android/AndroidCursor; +HSPLapp/cash/sqldelight/driver/android/AndroidCursor;->(Landroid/database/Cursor;Ljava/lang/Long;)V +HSPLapp/cash/sqldelight/driver/android/AndroidCursor;->next()Lapp/cash/sqldelight/db/QueryResult; +HSPLapp/cash/sqldelight/driver/android/AndroidCursor;->next-mlR-ZEE()Ljava/lang/Object; +PLapp/cash/sqldelight/driver/android/AndroidPreparedStatement;->(Landroidx/sqlite/db/SupportSQLiteStatement;)V +PLapp/cash/sqldelight/driver/android/AndroidPreparedStatement;->close()V +PLapp/cash/sqldelight/driver/android/AndroidPreparedStatement;->execute()J +Lapp/cash/sqldelight/driver/android/AndroidQuery; +HSPLapp/cash/sqldelight/driver/android/AndroidQuery;->(Ljava/lang/String;Landroidx/sqlite/db/SupportSQLiteDatabase;ILjava/lang/Long;)V +HSPLapp/cash/sqldelight/driver/android/AndroidQuery;->bindTo(Landroidx/sqlite/db/SupportSQLiteProgram;)V +HSPLapp/cash/sqldelight/driver/android/AndroidQuery;->close()V +HSPLapp/cash/sqldelight/driver/android/AndroidQuery;->executeQuery(Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +HSPLapp/cash/sqldelight/driver/android/AndroidQuery;->getArgCount()I +HSPLapp/cash/sqldelight/driver/android/AndroidQuery;->getSql()Ljava/lang/String; +Lapp/cash/sqldelight/driver/android/AndroidSqliteDriver; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver;->(Landroidx/sqlite/db/SupportSQLiteOpenHelper;)V +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver;->(Landroidx/sqlite/db/SupportSQLiteOpenHelper;Landroidx/sqlite/db/SupportSQLiteDatabase;ILjava/lang/Long;)V +PLapp/cash/sqldelight/driver/android/AndroidSqliteDriver;->(Landroidx/sqlite/db/SupportSQLiteOpenHelper;Landroidx/sqlite/db/SupportSQLiteDatabase;ILjava/lang/Long;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver;->access$getDatabase(Lapp/cash/sqldelight/driver/android/AndroidSqliteDriver;)Landroidx/sqlite/db/SupportSQLiteDatabase; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver;->access$getOpenHelper$p(Lapp/cash/sqldelight/driver/android/AndroidSqliteDriver;)Landroidx/sqlite/db/SupportSQLiteOpenHelper; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver;->access$getTransactions$p(Lapp/cash/sqldelight/driver/android/AndroidSqliteDriver;)Ljava/lang/ThreadLocal; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver;->access$getWindowSizeBytes$p(Lapp/cash/sqldelight/driver/android/AndroidSqliteDriver;)Ljava/lang/Long; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver;->addListener([Ljava/lang/String;Lapp/cash/sqldelight/Query$Listener;)V +PLapp/cash/sqldelight/driver/android/AndroidSqliteDriver;->execute(Ljava/lang/Integer;Ljava/lang/String;ILkotlin/jvm/functions/Function1;)Lapp/cash/sqldelight/db/QueryResult; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver;->execute-zeHU3Mk(Ljava/lang/Integer;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver;->executeQuery(Ljava/lang/Integer;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/functions/Function1;)Lapp/cash/sqldelight/db/QueryResult; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver;->executeQuery-0yMERmw(Ljava/lang/Integer;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/functions/Function1;)Ljava/lang/Object; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver;->getDatabase()Landroidx/sqlite/db/SupportSQLiteDatabase; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver;->newTransaction()Lapp/cash/sqldelight/db/QueryResult; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver;->removeListener([Ljava/lang/String;Lapp/cash/sqldelight/Query$Listener;)V +Lapp/cash/sqldelight/driver/android/AndroidSqliteDriver$Callback; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$Callback;->(Lapp/cash/sqldelight/db/SqlSchema;[Lapp/cash/sqldelight/db/AfterVersion;)V +PLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$Callback;->onCreate(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +Lapp/cash/sqldelight/driver/android/AndroidSqliteDriver$Transaction; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$Transaction;->(Lapp/cash/sqldelight/driver/android/AndroidSqliteDriver;Lapp/cash/sqldelight/Transacter$Transaction;)V +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$Transaction;->endTransaction(Z)Lapp/cash/sqldelight/db/QueryResult; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$Transaction;->getEnclosingTransaction()Lapp/cash/sqldelight/Transacter$Transaction; +Lapp/cash/sqldelight/driver/android/AndroidSqliteDriver$database$2; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$database$2;->(Lapp/cash/sqldelight/driver/android/AndroidSqliteDriver;Landroidx/sqlite/db/SupportSQLiteDatabase;)V +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$database$2;->invoke()Landroidx/sqlite/db/SupportSQLiteDatabase; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$database$2;->invoke()Ljava/lang/Object; +PLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$execute$1;->(Lapp/cash/sqldelight/driver/android/AndroidSqliteDriver;Ljava/lang/String;)V +PLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$execute$1;->invoke()Lapp/cash/sqldelight/driver/android/AndroidStatement; +PLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$execute$1;->invoke()Ljava/lang/Object; +PLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$execute$2;->()V +PLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$execute$2;->()V +PLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$execute$2;->invoke(Lapp/cash/sqldelight/driver/android/AndroidStatement;)Ljava/lang/Long; +PLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$execute$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lapp/cash/sqldelight/driver/android/AndroidSqliteDriver$executeQuery$1; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$executeQuery$1;->(Ljava/lang/String;Lapp/cash/sqldelight/driver/android/AndroidSqliteDriver;I)V +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$executeQuery$1;->invoke()Lapp/cash/sqldelight/driver/android/AndroidStatement; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$executeQuery$1;->invoke()Ljava/lang/Object; +Lapp/cash/sqldelight/driver/android/AndroidSqliteDriver$executeQuery$2; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$executeQuery$2;->(Lkotlin/jvm/functions/Function1;)V +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$executeQuery$2;->invoke(Lapp/cash/sqldelight/driver/android/AndroidStatement;)Ljava/lang/Object; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$executeQuery$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lapp/cash/sqldelight/driver/android/AndroidSqliteDriver$statements$1; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$statements$1;->(I)V +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$statements$1;->entryRemoved(ZILapp/cash/sqldelight/driver/android/AndroidStatement;Lapp/cash/sqldelight/driver/android/AndroidStatement;)V +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$statements$1;->entryRemoved(ZLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V +Lapp/cash/sqldelight/driver/android/AndroidStatement; +Lapp/cash/sqldelight/internal/CurrentThreadIdKt; +HSPLapp/cash/sqldelight/internal/CurrentThreadIdKt;->currentThreadId()J +Larrow/core/AndThen1; +HSPLarrow/core/AndThen1;->()V +HSPLarrow/core/AndThen1;->()V +HSPLarrow/core/AndThen1;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLarrow/core/AndThen1;->compose(Lkotlin/jvm/functions/Function1;)Larrow/core/AndThen1; +HSPLarrow/core/AndThen1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Larrow/core/AndThen1$Companion; +HSPLarrow/core/AndThen1$Companion;->()V +HSPLarrow/core/AndThen1$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLarrow/core/AndThen1$Companion;->invoke(Lkotlin/jvm/functions/Function1;)Larrow/core/AndThen1; +HSPLarrow/core/AndThen1$Companion;->loop(Larrow/core/AndThen1;Ljava/lang/Object;I)Ljava/lang/Object; +Larrow/core/AndThen1$Single; +HSPLarrow/core/AndThen1$Single;->(Lkotlin/jvm/functions/Function1;I)V +HSPLarrow/core/AndThen1$Single;->getF()Lkotlin/jvm/functions/Function1; +HSPLarrow/core/AndThen1$Single;->getIndex()I +Larrow/core/AndThen1$compose$1; +HSPLarrow/core/AndThen1$compose$1;->(Larrow/core/AndThen1;Lkotlin/jvm/functions/Function1;)V +HSPLarrow/core/AndThen1$compose$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Larrow/core/Composition; +HSPLarrow/core/Composition;->compose(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function1; +Larrow/core/Either; +HSPLarrow/core/Either;->()V +HSPLarrow/core/Either;->()V +HSPLarrow/core/Either;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLarrow/core/Either;->getOrNull()Ljava/lang/Object; +Larrow/core/Either$Companion; +HSPLarrow/core/Either$Companion;->()V +HSPLarrow/core/Either$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Larrow/core/Either$Left; +Larrow/core/Either$Right; +HSPLarrow/core/Either$Right;->()V +HSPLarrow/core/Either$Right;->(Ljava/lang/Object;)V +HSPLarrow/core/Either$Right;->getValue()Ljava/lang/Object; +Larrow/core/Either$Right$Companion; +HSPLarrow/core/Either$Right$Companion;->()V +HSPLarrow/core/Either$Right$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Larrow/core/EitherKt; +PLarrow/core/EitherKt;->right(Ljava/lang/Object;)Larrow/core/Either; +Larrow/core/IterableKt; +HSPLarrow/core/IterableKt;->()V +HSPLarrow/core/IterableKt;->widen(Ljava/util/List;)Ljava/util/List; +Larrow/core/None; +Larrow/core/Option; +HSPLarrow/core/Option;->()V +HSPLarrow/core/Option;->()V +HSPLarrow/core/Option;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Larrow/core/Option$Companion; +HSPLarrow/core/Option$Companion;->()V +HSPLarrow/core/Option$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Larrow/core/Partials; +HSPLarrow/core/Partials;->partially1(Lkotlin/jvm/functions/Function1;Ljava/lang/Object;)Lkotlin/jvm/functions/Function0; +HSPLarrow/core/Partials;->partially1(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;)Lkotlin/jvm/functions/Function1; +HSPLarrow/core/Partials;->partially1Effect(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;)Lkotlin/jvm/functions/Function1; +Larrow/core/Partials$partially1$1; +HSPLarrow/core/Partials$partially1$1;->(Lkotlin/jvm/functions/Function1;Ljava/lang/Object;)V +HSPLarrow/core/Partials$partially1$1;->invoke()Ljava/lang/Object; +Larrow/core/Partials$partially1$2; +HSPLarrow/core/Partials$partially1$2;->(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;)V +Larrow/core/Partials$partially1$23; +HSPLarrow/core/Partials$partially1$23;->(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)V +Larrow/core/PredefKt; +Larrow/core/Some; +HSPLarrow/core/Some;->()V +HSPLarrow/core/Some;->(Ljava/lang/Object;)V +HSPLarrow/core/Some;->getValue()Ljava/lang/Object; +Larrow/core/Some$Companion; +HSPLarrow/core/Some$Companion;->()V +HSPLarrow/core/Some$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Larrow/optics/Fold; +Larrow/optics/Getter; +Larrow/optics/OptionalKt; +HSPLarrow/optics/OptionalKt;->Optional(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Larrow/optics/POptional; +Larrow/optics/OptionalKt$Optional$1; +HSPLarrow/optics/OptionalKt$Optional$1;->(Lkotlin/jvm/functions/Function1;)V +Larrow/optics/PEvery; +Larrow/optics/PLens; +HSPLarrow/optics/PLens;->()V +Larrow/optics/PLens$Companion; +HSPLarrow/optics/PLens$Companion;->()V +HSPLarrow/optics/PLens$Companion;->()V +HSPLarrow/optics/PLens$Companion;->invoke(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Larrow/optics/PLens; +Larrow/optics/PLens$Companion$invoke$1; +HSPLarrow/optics/PLens$Companion$invoke$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)V +Larrow/optics/POptional; +HSPLarrow/optics/POptional;->()V +Larrow/optics/POptional$Companion; +HSPLarrow/optics/POptional$Companion;->()V +HSPLarrow/optics/POptional$Companion;->()V +HSPLarrow/optics/POptional$Companion;->invoke(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Larrow/optics/POptional; +Larrow/optics/POptional$Companion$invoke$1; +HSPLarrow/optics/POptional$Companion$invoke$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)V +Larrow/optics/POptionalGetter; +Larrow/optics/PSetter; +Larrow/optics/PTraversal; +Lch/qos/logback/classic/Level; +HSPLch/qos/logback/classic/Level;->()V +HSPLch/qos/logback/classic/Level;->(ILjava/lang/String;)V +HSPLch/qos/logback/classic/Level;->toLevel(Ljava/lang/String;)Lch/qos/logback/classic/Level; +HSPLch/qos/logback/classic/Level;->toLevel(Ljava/lang/String;Lch/qos/logback/classic/Level;)Lch/qos/logback/classic/Level; +HSPLch/qos/logback/classic/Level;->toString()Ljava/lang/String; +Lch/qos/logback/classic/Logger; +HSPLch/qos/logback/classic/Logger;->()V +HSPLch/qos/logback/classic/Logger;->(Ljava/lang/String;Lch/qos/logback/classic/Logger;Lch/qos/logback/classic/LoggerContext;)V +HSPLch/qos/logback/classic/Logger;->addAppender(Lch/qos/logback/core/Appender;)V +HSPLch/qos/logback/classic/Logger;->createChildByName(Ljava/lang/String;)Lch/qos/logback/classic/Logger; +HSPLch/qos/logback/classic/Logger;->getChildByName(Ljava/lang/String;)Lch/qos/logback/classic/Logger; +HSPLch/qos/logback/classic/Logger;->getName()Ljava/lang/String; +HSPLch/qos/logback/classic/Logger;->setLevel(Lch/qos/logback/classic/Level;)V +HSPLch/qos/logback/classic/Logger;->toString()Ljava/lang/String; +Lch/qos/logback/classic/LoggerContext; +HSPLch/qos/logback/classic/LoggerContext;->()V +HSPLch/qos/logback/classic/LoggerContext;->fireOnLevelChange(Lch/qos/logback/classic/Logger;Lch/qos/logback/classic/Level;)V +HSPLch/qos/logback/classic/LoggerContext;->fireOnStart()V +HSPLch/qos/logback/classic/LoggerContext;->getLogger(Ljava/lang/String;)Lch/qos/logback/classic/Logger; +HSPLch/qos/logback/classic/LoggerContext;->getLogger(Ljava/lang/String;)Lorg/slf4j/Logger; +HSPLch/qos/logback/classic/LoggerContext;->incSize()V +HSPLch/qos/logback/classic/LoggerContext;->initEvaluatorMap()V +HSPLch/qos/logback/classic/LoggerContext;->isPackagingDataEnabled()Z +HSPLch/qos/logback/classic/LoggerContext;->putProperty(Ljava/lang/String;Ljava/lang/String;)V +HSPLch/qos/logback/classic/LoggerContext;->setName(Ljava/lang/String;)V +HSPLch/qos/logback/classic/LoggerContext;->setPackagingDataEnabled(Z)V +HSPLch/qos/logback/classic/LoggerContext;->start()V +HSPLch/qos/logback/classic/LoggerContext;->updateLoggerContextVO()V +Lch/qos/logback/classic/PatternLayout; +HSPLch/qos/logback/classic/PatternLayout;->()V +HSPLch/qos/logback/classic/PatternLayout;->()V +HSPLch/qos/logback/classic/PatternLayout;->getDefaultConverterMap()Ljava/util/Map; +Lch/qos/logback/classic/android/LogcatAppender; +HSPLch/qos/logback/classic/android/LogcatAppender;->()V +HSPLch/qos/logback/classic/android/LogcatAppender;->setEncoder(Lch/qos/logback/classic/encoder/PatternLayoutEncoder;)V +HSPLch/qos/logback/classic/android/LogcatAppender;->setTagEncoder(Lch/qos/logback/classic/encoder/PatternLayoutEncoder;)V +HSPLch/qos/logback/classic/android/LogcatAppender;->start()V +Lch/qos/logback/classic/encoder/PatternLayoutEncoder; +HSPLch/qos/logback/classic/encoder/PatternLayoutEncoder;->()V +HSPLch/qos/logback/classic/encoder/PatternLayoutEncoder;->start()V +Lch/qos/logback/classic/joran/JoranConfigurator; +HSPLch/qos/logback/classic/joran/JoranConfigurator;->()V +HSPLch/qos/logback/classic/joran/JoranConfigurator;->addDefaultNestedComponentRegistryRules(Lch/qos/logback/core/joran/spi/DefaultNestedComponentRegistry;)V +HSPLch/qos/logback/classic/joran/JoranConfigurator;->addInstanceRules(Lch/qos/logback/core/joran/spi/RuleStore;)V +Lch/qos/logback/classic/joran/action/ConditionalIncludeAction; +HSPLch/qos/logback/classic/joran/action/ConditionalIncludeAction;->()V +Lch/qos/logback/classic/joran/action/ConfigurationAction; +HSPLch/qos/logback/classic/joran/action/ConfigurationAction;->()V +HSPLch/qos/logback/classic/joran/action/ConfigurationAction;->()V +HSPLch/qos/logback/classic/joran/action/ConfigurationAction;->begin(Lch/qos/logback/core/joran/spi/InterpretationContext;Ljava/lang/String;Lorg/xml/sax/Attributes;)V +HSPLch/qos/logback/classic/joran/action/ConfigurationAction;->end(Lch/qos/logback/core/joran/spi/InterpretationContext;Ljava/lang/String;)V +HSPLch/qos/logback/classic/joran/action/ConfigurationAction;->processScanAttrib(Lch/qos/logback/core/joran/spi/InterpretationContext;Lorg/xml/sax/Attributes;)V +Lch/qos/logback/classic/joran/action/ContextNameAction; +HSPLch/qos/logback/classic/joran/action/ContextNameAction;->()V +Lch/qos/logback/classic/joran/action/FindIncludeAction; +HSPLch/qos/logback/classic/joran/action/FindIncludeAction;->()V +Lch/qos/logback/classic/joran/action/LevelAction; +HSPLch/qos/logback/classic/joran/action/LevelAction;->()V +Lch/qos/logback/classic/joran/action/LoggerAction; +HSPLch/qos/logback/classic/joran/action/LoggerAction;->()V +Lch/qos/logback/classic/joran/action/LoggerContextListenerAction; +HSPLch/qos/logback/classic/joran/action/LoggerContextListenerAction;->()V +Lch/qos/logback/classic/joran/action/ReceiverAction; +HSPLch/qos/logback/classic/joran/action/ReceiverAction;->()V +Lch/qos/logback/classic/joran/action/RootLoggerAction; +HSPLch/qos/logback/classic/joran/action/RootLoggerAction;->()V +HSPLch/qos/logback/classic/joran/action/RootLoggerAction;->begin(Lch/qos/logback/core/joran/spi/InterpretationContext;Ljava/lang/String;Lorg/xml/sax/Attributes;)V +HSPLch/qos/logback/classic/joran/action/RootLoggerAction;->end(Lch/qos/logback/core/joran/spi/InterpretationContext;Ljava/lang/String;)V +Lch/qos/logback/classic/pattern/Abbreviator; +Lch/qos/logback/classic/pattern/CallerDataConverter; +Lch/qos/logback/classic/pattern/ClassOfCallerConverter; +Lch/qos/logback/classic/pattern/ClassicConverter; +HSPLch/qos/logback/classic/pattern/ClassicConverter;->()V +Lch/qos/logback/classic/pattern/ContextNameConverter; +Lch/qos/logback/classic/pattern/DateConverter; +Lch/qos/logback/classic/pattern/EnsureExceptionHandling; +HSPLch/qos/logback/classic/pattern/EnsureExceptionHandling;->()V +HSPLch/qos/logback/classic/pattern/EnsureExceptionHandling;->chainHandlesThrowable(Lch/qos/logback/core/pattern/Converter;)Z +HSPLch/qos/logback/classic/pattern/EnsureExceptionHandling;->process(Lch/qos/logback/core/Context;Lch/qos/logback/core/pattern/Converter;)V +Lch/qos/logback/classic/pattern/ExtendedThrowableProxyConverter; +Lch/qos/logback/classic/pattern/FileOfCallerConverter; +Lch/qos/logback/classic/pattern/LevelConverter; +Lch/qos/logback/classic/pattern/LineOfCallerConverter; +Lch/qos/logback/classic/pattern/LineSeparatorConverter; +Lch/qos/logback/classic/pattern/LocalSequenceNumberConverter; +Lch/qos/logback/classic/pattern/LoggerConverter; +HSPLch/qos/logback/classic/pattern/LoggerConverter;->()V +Lch/qos/logback/classic/pattern/MDCConverter; +Lch/qos/logback/classic/pattern/MarkerConverter; +Lch/qos/logback/classic/pattern/MessageConverter; +HSPLch/qos/logback/classic/pattern/MessageConverter;->()V +Lch/qos/logback/classic/pattern/MethodOfCallerConverter; +Lch/qos/logback/classic/pattern/NamedConverter; +HSPLch/qos/logback/classic/pattern/NamedConverter;->()V +HSPLch/qos/logback/classic/pattern/NamedConverter;->start()V +Lch/qos/logback/classic/pattern/NopThrowableInformationConverter; +HSPLch/qos/logback/classic/pattern/NopThrowableInformationConverter;->()V +Lch/qos/logback/classic/pattern/PropertyConverter; +Lch/qos/logback/classic/pattern/RelativeTimeConverter; +Lch/qos/logback/classic/pattern/RootCauseFirstThrowableProxyConverter; +Lch/qos/logback/classic/pattern/TargetLengthBasedClassNameAbbreviator; +HSPLch/qos/logback/classic/pattern/TargetLengthBasedClassNameAbbreviator;->(I)V +Lch/qos/logback/classic/pattern/ThreadConverter; +HSPLch/qos/logback/classic/pattern/ThreadConverter;->()V +Lch/qos/logback/classic/pattern/ThrowableHandlingConverter; +HSPLch/qos/logback/classic/pattern/ThrowableHandlingConverter;->()V +Lch/qos/logback/classic/pattern/ThrowableProxyConverter; +HSPLch/qos/logback/classic/pattern/ThrowableProxyConverter;->()V +HSPLch/qos/logback/classic/pattern/ThrowableProxyConverter;->start()V +Lch/qos/logback/classic/sift/SiftAction; +HSPLch/qos/logback/classic/sift/SiftAction;->()V +Lch/qos/logback/classic/spi/LoggerContextVO; +HSPLch/qos/logback/classic/spi/LoggerContextVO;->(Lch/qos/logback/classic/LoggerContext;)V +Lch/qos/logback/classic/spi/TurboFilterList; +HSPLch/qos/logback/classic/spi/TurboFilterList;->()V +Lch/qos/logback/classic/util/ContextInitializer; +HSPLch/qos/logback/classic/util/ContextInitializer;->(Lch/qos/logback/classic/LoggerContext;)V +HSPLch/qos/logback/classic/util/ContextInitializer;->autoConfig()V +HSPLch/qos/logback/classic/util/ContextInitializer;->findConfigFileFromSystemProperties(Z)Ljava/net/URL; +HSPLch/qos/logback/classic/util/ContextInitializer;->findConfigFileURLFromAssets(Z)Ljava/net/URL; +HSPLch/qos/logback/classic/util/ContextInitializer;->getResource(Ljava/lang/String;Ljava/lang/ClassLoader;Z)Ljava/net/URL; +HSPLch/qos/logback/classic/util/ContextInitializer;->statusOnResourceSearch(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/String;)V +Lch/qos/logback/classic/util/DefaultNestedComponentRules; +HSPLch/qos/logback/classic/util/DefaultNestedComponentRules;->addDefaultNestedComponentRegistryRules(Lch/qos/logback/core/joran/spi/DefaultNestedComponentRegistry;)V +Lch/qos/logback/classic/util/LogbackMDCAdapter; +HSPLch/qos/logback/classic/util/LogbackMDCAdapter;->()V +Lch/qos/logback/classic/util/LoggerNameUtil; +HSPLch/qos/logback/classic/util/LoggerNameUtil;->getSeparatorIndexOf(Ljava/lang/String;I)I +Lch/qos/logback/core/Appender; +Lch/qos/logback/core/AppenderBase; +Lch/qos/logback/core/BasicStatusManager; +HSPLch/qos/logback/core/BasicStatusManager;->()V +HSPLch/qos/logback/core/BasicStatusManager;->add(Lch/qos/logback/core/status/Status;)V +HSPLch/qos/logback/core/BasicStatusManager;->fireStatusAddEvent(Lch/qos/logback/core/status/Status;)V +HSPLch/qos/logback/core/BasicStatusManager;->getCopyOfStatusList()Ljava/util/List; +HSPLch/qos/logback/core/BasicStatusManager;->getCopyOfStatusListenerList()Ljava/util/List; +Lch/qos/logback/core/Context; +Lch/qos/logback/core/ContextBase; +HSPLch/qos/logback/core/ContextBase;->()V +HSPLch/qos/logback/core/ContextBase;->getBirthTime()J +HSPLch/qos/logback/core/ContextBase;->getConfigurationLock()Ljava/lang/Object; +HSPLch/qos/logback/core/ContextBase;->getCopyOfPropertyMap()Ljava/util/Map; +HSPLch/qos/logback/core/ContextBase;->getName()Ljava/lang/String; +HSPLch/qos/logback/core/ContextBase;->getObject(Ljava/lang/String;)Ljava/lang/Object; +HSPLch/qos/logback/core/ContextBase;->getStatusManager()Lch/qos/logback/core/status/StatusManager; +HSPLch/qos/logback/core/ContextBase;->initCollisionMaps()V +HSPLch/qos/logback/core/ContextBase;->putObject(Ljava/lang/String;Ljava/lang/Object;)V +HSPLch/qos/logback/core/ContextBase;->putProperty(Ljava/lang/String;Ljava/lang/String;)V +HSPLch/qos/logback/core/ContextBase;->setName(Ljava/lang/String;)V +HSPLch/qos/logback/core/ContextBase;->start()V +Lch/qos/logback/core/CoreConstants; +HSPLch/qos/logback/core/CoreConstants;->()V +Lch/qos/logback/core/Layout; +Lch/qos/logback/core/LayoutBase; +HSPLch/qos/logback/core/LayoutBase;->()V +HSPLch/qos/logback/core/LayoutBase;->getContext()Lch/qos/logback/core/Context; +HSPLch/qos/logback/core/LayoutBase;->setContext(Lch/qos/logback/core/Context;)V +HSPLch/qos/logback/core/LayoutBase;->start()V +Lch/qos/logback/core/UnsynchronizedAppenderBase; +HSPLch/qos/logback/core/UnsynchronizedAppenderBase;->()V +HSPLch/qos/logback/core/UnsynchronizedAppenderBase;->setName(Ljava/lang/String;)V +HSPLch/qos/logback/core/UnsynchronizedAppenderBase;->start()V +Lch/qos/logback/core/android/AndroidContextUtil; +HSPLch/qos/logback/core/android/AndroidContextUtil;->containsProperties(Ljava/lang/String;)Z +Lch/qos/logback/core/android/SystemPropertiesProxy; +HSPLch/qos/logback/core/android/SystemPropertiesProxy;->()V +HSPLch/qos/logback/core/android/SystemPropertiesProxy;->(Ljava/lang/ClassLoader;)V +HSPLch/qos/logback/core/android/SystemPropertiesProxy;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLch/qos/logback/core/android/SystemPropertiesProxy;->getInstance()Lch/qos/logback/core/android/SystemPropertiesProxy; +HSPLch/qos/logback/core/android/SystemPropertiesProxy;->setClassLoader(Ljava/lang/ClassLoader;)V +Lch/qos/logback/core/boolex/EvaluationException; +Lch/qos/logback/core/encoder/Encoder; +Lch/qos/logback/core/encoder/EncoderBase; +HSPLch/qos/logback/core/encoder/EncoderBase;->()V +Lch/qos/logback/core/encoder/LayoutWrappingEncoder; +HSPLch/qos/logback/core/encoder/LayoutWrappingEncoder;->()V +HSPLch/qos/logback/core/encoder/LayoutWrappingEncoder;->getLayout()Lch/qos/logback/core/Layout; +HSPLch/qos/logback/core/encoder/LayoutWrappingEncoder;->setParent(Lch/qos/logback/core/Appender;)V +HSPLch/qos/logback/core/encoder/LayoutWrappingEncoder;->start()V +HSPLch/qos/logback/core/encoder/LayoutWrappingEncoder;->stop()V +Lch/qos/logback/core/filter/Filter; +Lch/qos/logback/core/helpers/CyclicBuffer; +HSPLch/qos/logback/core/helpers/CyclicBuffer;->(I)V +HSPLch/qos/logback/core/helpers/CyclicBuffer;->asList()Ljava/util/List; +HSPLch/qos/logback/core/helpers/CyclicBuffer;->init(I)V +HSPLch/qos/logback/core/helpers/CyclicBuffer;->length()I +Lch/qos/logback/core/joran/GenericConfigurator; +HSPLch/qos/logback/core/joran/GenericConfigurator;->()V +HSPLch/qos/logback/core/joran/GenericConfigurator;->buildInterpreter()V +HSPLch/qos/logback/core/joran/GenericConfigurator;->doConfigure(Ljava/io/InputStream;Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/GenericConfigurator;->doConfigure(Ljava/net/URL;)V +HSPLch/qos/logback/core/joran/GenericConfigurator;->doConfigure(Ljava/util/List;)V +HSPLch/qos/logback/core/joran/GenericConfigurator;->doConfigure(Lorg/xml/sax/InputSource;)V +HSPLch/qos/logback/core/joran/GenericConfigurator;->informContextOfURLUsedForConfiguration(Lch/qos/logback/core/Context;Ljava/net/URL;)V +HSPLch/qos/logback/core/joran/GenericConfigurator;->initialElementPath()Lch/qos/logback/core/joran/spi/ElementPath; +HSPLch/qos/logback/core/joran/GenericConfigurator;->registerSafeConfiguration(Ljava/util/List;)V +Lch/qos/logback/core/joran/JoranConfiguratorBase; +HSPLch/qos/logback/core/joran/JoranConfiguratorBase;->()V +HSPLch/qos/logback/core/joran/JoranConfiguratorBase;->addImplicitRules(Lch/qos/logback/core/joran/spi/Interpreter;)V +HSPLch/qos/logback/core/joran/JoranConfiguratorBase;->addInstanceRules(Lch/qos/logback/core/joran/spi/RuleStore;)V +HSPLch/qos/logback/core/joran/JoranConfiguratorBase;->buildInterpreter()V +Lch/qos/logback/core/joran/action/AbstractIncludeAction; +HSPLch/qos/logback/core/joran/action/AbstractIncludeAction;->()V +Lch/qos/logback/core/joran/action/Action; +HSPLch/qos/logback/core/joran/action/Action;->()V +Lch/qos/logback/core/joran/action/AppenderAction; +HSPLch/qos/logback/core/joran/action/AppenderAction;->()V +HSPLch/qos/logback/core/joran/action/AppenderAction;->begin(Lch/qos/logback/core/joran/spi/InterpretationContext;Ljava/lang/String;Lorg/xml/sax/Attributes;)V +HSPLch/qos/logback/core/joran/action/AppenderAction;->end(Lch/qos/logback/core/joran/spi/InterpretationContext;Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/action/AppenderAction;->warnDeprecated(Ljava/lang/String;)V +Lch/qos/logback/core/joran/action/AppenderRefAction; +HSPLch/qos/logback/core/joran/action/AppenderRefAction;->()V +HSPLch/qos/logback/core/joran/action/AppenderRefAction;->begin(Lch/qos/logback/core/joran/spi/InterpretationContext;Ljava/lang/String;Lorg/xml/sax/Attributes;)V +HSPLch/qos/logback/core/joran/action/AppenderRefAction;->end(Lch/qos/logback/core/joran/spi/InterpretationContext;Ljava/lang/String;)V +Lch/qos/logback/core/joran/action/ConversionRuleAction; +HSPLch/qos/logback/core/joran/action/ConversionRuleAction;->()V +Lch/qos/logback/core/joran/action/DefinePropertyAction; +HSPLch/qos/logback/core/joran/action/DefinePropertyAction;->()V +Lch/qos/logback/core/joran/action/IADataForBasicProperty; +HSPLch/qos/logback/core/joran/action/IADataForBasicProperty;->(Lch/qos/logback/core/joran/util/PropertySetter;Lch/qos/logback/core/util/AggregationType;Ljava/lang/String;)V +Lch/qos/logback/core/joran/action/IADataForComplexProperty; +HSPLch/qos/logback/core/joran/action/IADataForComplexProperty;->(Lch/qos/logback/core/joran/util/PropertySetter;Lch/qos/logback/core/util/AggregationType;Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/action/IADataForComplexProperty;->getAggregationType()Lch/qos/logback/core/util/AggregationType; +HSPLch/qos/logback/core/joran/action/IADataForComplexProperty;->getComplexPropertyName()Ljava/lang/String; +HSPLch/qos/logback/core/joran/action/IADataForComplexProperty;->getNestedComplexProperty()Ljava/lang/Object; +HSPLch/qos/logback/core/joran/action/IADataForComplexProperty;->setNestedComplexProperty(Ljava/lang/Object;)V +Lch/qos/logback/core/joran/action/ImplicitAction; +HSPLch/qos/logback/core/joran/action/ImplicitAction;->()V +Lch/qos/logback/core/joran/action/IncludeAction; +HSPLch/qos/logback/core/joran/action/IncludeAction;->()V +HSPLch/qos/logback/core/joran/action/IncludeAction;->setEventOffset(I)V +Lch/qos/logback/core/joran/action/NOPAction; +HSPLch/qos/logback/core/joran/action/NOPAction;->()V +Lch/qos/logback/core/joran/action/NestedBasicPropertyIA; +HSPLch/qos/logback/core/joran/action/NestedBasicPropertyIA;->()V +HSPLch/qos/logback/core/joran/action/NestedBasicPropertyIA;->begin(Lch/qos/logback/core/joran/spi/InterpretationContext;Ljava/lang/String;Lorg/xml/sax/Attributes;)V +HSPLch/qos/logback/core/joran/action/NestedBasicPropertyIA;->body(Lch/qos/logback/core/joran/spi/InterpretationContext;Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/action/NestedBasicPropertyIA;->end(Lch/qos/logback/core/joran/spi/InterpretationContext;Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/action/NestedBasicPropertyIA;->isApplicable(Lch/qos/logback/core/joran/spi/ElementPath;Lorg/xml/sax/Attributes;Lch/qos/logback/core/joran/spi/InterpretationContext;)Z +Lch/qos/logback/core/joran/action/NestedBasicPropertyIA$1; +HSPLch/qos/logback/core/joran/action/NestedBasicPropertyIA$1;->()V +Lch/qos/logback/core/joran/action/NestedComplexPropertyIA; +HSPLch/qos/logback/core/joran/action/NestedComplexPropertyIA;->()V +HSPLch/qos/logback/core/joran/action/NestedComplexPropertyIA;->begin(Lch/qos/logback/core/joran/spi/InterpretationContext;Ljava/lang/String;Lorg/xml/sax/Attributes;)V +HSPLch/qos/logback/core/joran/action/NestedComplexPropertyIA;->end(Lch/qos/logback/core/joran/spi/InterpretationContext;Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/action/NestedComplexPropertyIA;->isApplicable(Lch/qos/logback/core/joran/spi/ElementPath;Lorg/xml/sax/Attributes;Lch/qos/logback/core/joran/spi/InterpretationContext;)Z +Lch/qos/logback/core/joran/action/NestedComplexPropertyIA$1; +HSPLch/qos/logback/core/joran/action/NestedComplexPropertyIA$1;->()V +Lch/qos/logback/core/joran/action/NewRuleAction; +HSPLch/qos/logback/core/joran/action/NewRuleAction;->()V +Lch/qos/logback/core/joran/action/ParamAction; +HSPLch/qos/logback/core/joran/action/ParamAction;->()V +HSPLch/qos/logback/core/joran/action/ParamAction;->()V +Lch/qos/logback/core/joran/action/PropertyAction; +HSPLch/qos/logback/core/joran/action/PropertyAction;->()V +HSPLch/qos/logback/core/joran/action/PropertyAction;->()V +Lch/qos/logback/core/joran/action/ShutdownHookAction; +HSPLch/qos/logback/core/joran/action/ShutdownHookAction;->()V +Lch/qos/logback/core/joran/action/StatusListenerAction; +HSPLch/qos/logback/core/joran/action/StatusListenerAction;->()V +Lch/qos/logback/core/joran/action/TimestampAction; +HSPLch/qos/logback/core/joran/action/TimestampAction;->()V +HSPLch/qos/logback/core/joran/action/TimestampAction;->()V +Lch/qos/logback/core/joran/event/BodyEvent; +HSPLch/qos/logback/core/joran/event/BodyEvent;->(Ljava/lang/String;Lorg/xml/sax/Locator;)V +HSPLch/qos/logback/core/joran/event/BodyEvent;->getText()Ljava/lang/String; +Lch/qos/logback/core/joran/event/EndEvent; +HSPLch/qos/logback/core/joran/event/EndEvent;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/xml/sax/Locator;)V +Lch/qos/logback/core/joran/event/InPlayListener; +Lch/qos/logback/core/joran/event/SaxEvent; +HSPLch/qos/logback/core/joran/event/SaxEvent;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/xml/sax/Locator;)V +HSPLch/qos/logback/core/joran/event/SaxEvent;->getLocator()Lorg/xml/sax/Locator; +Lch/qos/logback/core/joran/event/SaxEventRecorder; +HSPLch/qos/logback/core/joran/event/SaxEventRecorder;->(Lch/qos/logback/core/Context;)V +HSPLch/qos/logback/core/joran/event/SaxEventRecorder;->buildPullParser()Lorg/xmlpull/v1/sax2/Driver; +HSPLch/qos/logback/core/joran/event/SaxEventRecorder;->characters([CII)V +HSPLch/qos/logback/core/joran/event/SaxEventRecorder;->endElement(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/event/SaxEventRecorder;->getLastEvent()Lch/qos/logback/core/joran/event/SaxEvent; +HSPLch/qos/logback/core/joran/event/SaxEventRecorder;->getLocator()Lorg/xml/sax/Locator; +HSPLch/qos/logback/core/joran/event/SaxEventRecorder;->getSaxEventList()Ljava/util/List; +HSPLch/qos/logback/core/joran/event/SaxEventRecorder;->getTagName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLch/qos/logback/core/joran/event/SaxEventRecorder;->isSpaceOnly(Ljava/lang/String;)Z +HSPLch/qos/logback/core/joran/event/SaxEventRecorder;->recordEvents(Lorg/xml/sax/InputSource;)Ljava/util/List; +HSPLch/qos/logback/core/joran/event/SaxEventRecorder;->setDocumentLocator(Lorg/xml/sax/Locator;)V +HSPLch/qos/logback/core/joran/event/SaxEventRecorder;->startDocument()V +HSPLch/qos/logback/core/joran/event/SaxEventRecorder;->startElement(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/xml/sax/Attributes;)V +Lch/qos/logback/core/joran/event/StartEvent; +HSPLch/qos/logback/core/joran/event/StartEvent;->(Lch/qos/logback/core/joran/spi/ElementPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/xml/sax/Attributes;Lorg/xml/sax/Locator;)V +Lch/qos/logback/core/joran/spi/ActionException; +Lch/qos/logback/core/joran/spi/CAI_WithLocatorSupport; +HSPLch/qos/logback/core/joran/spi/CAI_WithLocatorSupport;->(Lch/qos/logback/core/Context;Lch/qos/logback/core/joran/spi/Interpreter;)V +Lch/qos/logback/core/joran/spi/ConfigurationWatchList; +HSPLch/qos/logback/core/joran/spi/ConfigurationWatchList;->()V +HSPLch/qos/logback/core/joran/spi/ConfigurationWatchList;->addAsFileToWatch(Ljava/net/URL;)V +HSPLch/qos/logback/core/joran/spi/ConfigurationWatchList;->convertToFile(Ljava/net/URL;)Ljava/io/File; +HSPLch/qos/logback/core/joran/spi/ConfigurationWatchList;->setMainURL(Ljava/net/URL;)V +Lch/qos/logback/core/joran/spi/DefaultClass; +Lch/qos/logback/core/joran/spi/DefaultNestedComponentRegistry; +HSPLch/qos/logback/core/joran/spi/DefaultNestedComponentRegistry;->()V +HSPLch/qos/logback/core/joran/spi/DefaultNestedComponentRegistry;->add(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)V +HSPLch/qos/logback/core/joran/spi/DefaultNestedComponentRegistry;->findDefaultComponentType(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Class; +HSPLch/qos/logback/core/joran/spi/DefaultNestedComponentRegistry;->oneShotFind(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Class; +Lch/qos/logback/core/joran/spi/ElementPath; +HSPLch/qos/logback/core/joran/spi/ElementPath;->()V +HSPLch/qos/logback/core/joran/spi/ElementPath;->(Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/spi/ElementPath;->duplicate()Lch/qos/logback/core/joran/spi/ElementPath; +HSPLch/qos/logback/core/joran/spi/ElementPath;->get(I)Ljava/lang/String; +HSPLch/qos/logback/core/joran/spi/ElementPath;->peekLast()Ljava/lang/String; +HSPLch/qos/logback/core/joran/spi/ElementPath;->pop()V +HSPLch/qos/logback/core/joran/spi/ElementPath;->push(Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/spi/ElementPath;->size()I +Lch/qos/logback/core/joran/spi/ElementSelector; +HSPLch/qos/logback/core/joran/spi/ElementSelector;->(Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/spi/ElementSelector;->equalityCheck(Ljava/lang/String;Ljava/lang/String;)Z +HSPLch/qos/logback/core/joran/spi/ElementSelector;->fullPathMatch(Lch/qos/logback/core/joran/spi/ElementPath;)Z +HSPLch/qos/logback/core/joran/spi/ElementSelector;->getPrefixMatchLength(Lch/qos/logback/core/joran/spi/ElementPath;)I +HSPLch/qos/logback/core/joran/spi/ElementSelector;->getTailMatchLength(Lch/qos/logback/core/joran/spi/ElementPath;)I +HSPLch/qos/logback/core/joran/spi/ElementSelector;->hashCode()I +Lch/qos/logback/core/joran/spi/EventPlayer; +HSPLch/qos/logback/core/joran/spi/EventPlayer;->(Lch/qos/logback/core/joran/spi/Interpreter;)V +HSPLch/qos/logback/core/joran/spi/EventPlayer;->play(Ljava/util/List;)V +Lch/qos/logback/core/joran/spi/HostClassAndPropertyDouble; +HSPLch/qos/logback/core/joran/spi/HostClassAndPropertyDouble;->(Ljava/lang/Class;Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/spi/HostClassAndPropertyDouble;->equals(Ljava/lang/Object;)Z +HSPLch/qos/logback/core/joran/spi/HostClassAndPropertyDouble;->hashCode()I +Lch/qos/logback/core/joran/spi/InterpretationContext; +HSPLch/qos/logback/core/joran/spi/InterpretationContext;->()V +HSPLch/qos/logback/core/joran/spi/InterpretationContext;->(Lch/qos/logback/core/Context;Lch/qos/logback/core/joran/spi/Interpreter;)V +HSPLch/qos/logback/core/joran/spi/InterpretationContext;->fireInPlay(Lch/qos/logback/core/joran/event/SaxEvent;)V +HSPLch/qos/logback/core/joran/spi/InterpretationContext;->getDefaultNestedComponentRegistry()Lch/qos/logback/core/joran/spi/DefaultNestedComponentRegistry; +HSPLch/qos/logback/core/joran/spi/InterpretationContext;->getObjectMap()Ljava/util/Map; +HSPLch/qos/logback/core/joran/spi/InterpretationContext;->initAndroidContextIfValueHasSpecialVars(Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/spi/InterpretationContext;->isEmpty()Z +HSPLch/qos/logback/core/joran/spi/InterpretationContext;->peekObject()Ljava/lang/Object; +HSPLch/qos/logback/core/joran/spi/InterpretationContext;->popObject()Ljava/lang/Object; +HSPLch/qos/logback/core/joran/spi/InterpretationContext;->pushObject(Ljava/lang/Object;)V +HSPLch/qos/logback/core/joran/spi/InterpretationContext;->subst(Ljava/lang/String;)Ljava/lang/String; +Lch/qos/logback/core/joran/spi/Interpreter; +HSPLch/qos/logback/core/joran/spi/Interpreter;->()V +HSPLch/qos/logback/core/joran/spi/Interpreter;->(Lch/qos/logback/core/Context;Lch/qos/logback/core/joran/spi/RuleStore;Lch/qos/logback/core/joran/spi/ElementPath;)V +HSPLch/qos/logback/core/joran/spi/Interpreter;->addImplicitAction(Lch/qos/logback/core/joran/action/ImplicitAction;)V +HSPLch/qos/logback/core/joran/spi/Interpreter;->callBeginAction(Ljava/util/List;Ljava/lang/String;Lorg/xml/sax/Attributes;)V +HSPLch/qos/logback/core/joran/spi/Interpreter;->callBodyAction(Ljava/util/List;Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/spi/Interpreter;->callEndAction(Ljava/util/List;Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/spi/Interpreter;->characters(Lch/qos/logback/core/joran/event/BodyEvent;)V +HSPLch/qos/logback/core/joran/spi/Interpreter;->endElement(Lch/qos/logback/core/joran/event/EndEvent;)V +HSPLch/qos/logback/core/joran/spi/Interpreter;->endElement(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/spi/Interpreter;->getApplicableActionList(Lch/qos/logback/core/joran/spi/ElementPath;Lorg/xml/sax/Attributes;)Ljava/util/List; +HSPLch/qos/logback/core/joran/spi/Interpreter;->getEventPlayer()Lch/qos/logback/core/joran/spi/EventPlayer; +HSPLch/qos/logback/core/joran/spi/Interpreter;->getInterpretationContext()Lch/qos/logback/core/joran/spi/InterpretationContext; +HSPLch/qos/logback/core/joran/spi/Interpreter;->getTagName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLch/qos/logback/core/joran/spi/Interpreter;->lookupImplicitAction(Lch/qos/logback/core/joran/spi/ElementPath;Lorg/xml/sax/Attributes;Lch/qos/logback/core/joran/spi/InterpretationContext;)Ljava/util/List; +HSPLch/qos/logback/core/joran/spi/Interpreter;->setDocumentLocator(Lorg/xml/sax/Locator;)V +HSPLch/qos/logback/core/joran/spi/Interpreter;->startElement(Lch/qos/logback/core/joran/event/StartEvent;)V +HSPLch/qos/logback/core/joran/spi/Interpreter;->startElement(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/xml/sax/Attributes;)V +Lch/qos/logback/core/joran/spi/JoranException; +Lch/qos/logback/core/joran/spi/NoAutoStart; +Lch/qos/logback/core/joran/spi/NoAutoStartUtil; +HSPLch/qos/logback/core/joran/spi/NoAutoStartUtil;->notMarkedWithNoAutoStart(Ljava/lang/Object;)Z +Lch/qos/logback/core/joran/spi/RuleStore; +Lch/qos/logback/core/joran/spi/SimpleRuleStore; +HSPLch/qos/logback/core/joran/spi/SimpleRuleStore;->()V +HSPLch/qos/logback/core/joran/spi/SimpleRuleStore;->(Lch/qos/logback/core/Context;)V +HSPLch/qos/logback/core/joran/spi/SimpleRuleStore;->addRule(Lch/qos/logback/core/joran/spi/ElementSelector;Lch/qos/logback/core/joran/action/Action;)V +HSPLch/qos/logback/core/joran/spi/SimpleRuleStore;->fullPathMatch(Lch/qos/logback/core/joran/spi/ElementPath;)Ljava/util/List; +HSPLch/qos/logback/core/joran/spi/SimpleRuleStore;->isKleeneStar(Ljava/lang/String;)Z +HSPLch/qos/logback/core/joran/spi/SimpleRuleStore;->isSuffixPattern(Lch/qos/logback/core/joran/spi/ElementSelector;)Z +HSPLch/qos/logback/core/joran/spi/SimpleRuleStore;->matchActions(Lch/qos/logback/core/joran/spi/ElementPath;)Ljava/util/List; +HSPLch/qos/logback/core/joran/spi/SimpleRuleStore;->middleMatch(Lch/qos/logback/core/joran/spi/ElementPath;)Ljava/util/List; +HSPLch/qos/logback/core/joran/spi/SimpleRuleStore;->prefixMatch(Lch/qos/logback/core/joran/spi/ElementPath;)Ljava/util/List; +HSPLch/qos/logback/core/joran/spi/SimpleRuleStore;->suffixMatch(Lch/qos/logback/core/joran/spi/ElementPath;)Ljava/util/List; +Lch/qos/logback/core/joran/util/ConfigurationWatchListUtil; +HSPLch/qos/logback/core/joran/util/ConfigurationWatchListUtil;->()V +HSPLch/qos/logback/core/joran/util/ConfigurationWatchListUtil;->()V +HSPLch/qos/logback/core/joran/util/ConfigurationWatchListUtil;->getConfigurationWatchList(Lch/qos/logback/core/Context;)Lch/qos/logback/core/joran/spi/ConfigurationWatchList; +HSPLch/qos/logback/core/joran/util/ConfigurationWatchListUtil;->setMainWatchURL(Lch/qos/logback/core/Context;Ljava/net/URL;)V +Lch/qos/logback/core/joran/util/IntrospectionException; +Lch/qos/logback/core/joran/util/Introspector; +HSPLch/qos/logback/core/joran/util/Introspector;->decapitalize(Ljava/lang/String;)Ljava/lang/String; +HSPLch/qos/logback/core/joran/util/Introspector;->getMethodDescriptors(Ljava/lang/Class;)[Lch/qos/logback/core/joran/util/MethodDescriptor; +HSPLch/qos/logback/core/joran/util/Introspector;->getPropertyDescriptors(Ljava/lang/Class;)[Lch/qos/logback/core/joran/util/PropertyDescriptor; +Lch/qos/logback/core/joran/util/MethodDescriptor; +HSPLch/qos/logback/core/joran/util/MethodDescriptor;->(Ljava/lang/String;Ljava/lang/reflect/Method;)V +HSPLch/qos/logback/core/joran/util/MethodDescriptor;->getName()Ljava/lang/String; +Lch/qos/logback/core/joran/util/PropertyDescriptor; +HSPLch/qos/logback/core/joran/util/PropertyDescriptor;->(Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/util/PropertyDescriptor;->getName()Ljava/lang/String; +HSPLch/qos/logback/core/joran/util/PropertyDescriptor;->getPropertyType()Ljava/lang/Class; +HSPLch/qos/logback/core/joran/util/PropertyDescriptor;->getWriteMethod()Ljava/lang/reflect/Method; +HSPLch/qos/logback/core/joran/util/PropertyDescriptor;->setPropertyType(Ljava/lang/Class;)V +HSPLch/qos/logback/core/joran/util/PropertyDescriptor;->setReadMethod(Ljava/lang/reflect/Method;)V +HSPLch/qos/logback/core/joran/util/PropertyDescriptor;->setWriteMethod(Ljava/lang/reflect/Method;)V +Lch/qos/logback/core/joran/util/PropertySetter; +HSPLch/qos/logback/core/joran/util/PropertySetter;->(Ljava/lang/Object;)V +HSPLch/qos/logback/core/joran/util/PropertySetter;->capitalizeFirstLetter(Ljava/lang/String;)Ljava/lang/String; +HSPLch/qos/logback/core/joran/util/PropertySetter;->computeAggregationType(Ljava/lang/String;)Lch/qos/logback/core/util/AggregationType; +HSPLch/qos/logback/core/joran/util/PropertySetter;->computeRawAggregationType(Ljava/lang/reflect/Method;)Lch/qos/logback/core/util/AggregationType; +HSPLch/qos/logback/core/joran/util/PropertySetter;->findAdderMethod(Ljava/lang/String;)Ljava/lang/reflect/Method; +HSPLch/qos/logback/core/joran/util/PropertySetter;->findSetterMethod(Ljava/lang/String;)Ljava/lang/reflect/Method; +HSPLch/qos/logback/core/joran/util/PropertySetter;->getAnnotation(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/reflect/Method;)Ljava/lang/annotation/Annotation; +HSPLch/qos/logback/core/joran/util/PropertySetter;->getByConcreteType(Ljava/lang/String;Ljava/lang/reflect/Method;)Ljava/lang/Class; +HSPLch/qos/logback/core/joran/util/PropertySetter;->getClassNameViaImplicitRules(Ljava/lang/String;Lch/qos/logback/core/util/AggregationType;Lch/qos/logback/core/joran/spi/DefaultNestedComponentRegistry;)Ljava/lang/Class; +HSPLch/qos/logback/core/joran/util/PropertySetter;->getDefaultClassNameByAnnonation(Ljava/lang/String;Ljava/lang/reflect/Method;)Ljava/lang/Class; +HSPLch/qos/logback/core/joran/util/PropertySetter;->getMethod(Ljava/lang/String;)Ljava/lang/reflect/Method; +HSPLch/qos/logback/core/joran/util/PropertySetter;->getObj()Ljava/lang/Object; +HSPLch/qos/logback/core/joran/util/PropertySetter;->getParameterClassForMethod(Ljava/lang/reflect/Method;)Ljava/lang/Class; +HSPLch/qos/logback/core/joran/util/PropertySetter;->getPropertyDescriptor(Ljava/lang/String;)Lch/qos/logback/core/joran/util/PropertyDescriptor; +HSPLch/qos/logback/core/joran/util/PropertySetter;->getRelevantMethod(Ljava/lang/String;Lch/qos/logback/core/util/AggregationType;)Ljava/lang/reflect/Method; +HSPLch/qos/logback/core/joran/util/PropertySetter;->introspect()V +HSPLch/qos/logback/core/joran/util/PropertySetter;->invokeMethodWithSingleParameterOnThisObject(Ljava/lang/reflect/Method;Ljava/lang/Object;)V +HSPLch/qos/logback/core/joran/util/PropertySetter;->isSanityCheckSuccessful(Ljava/lang/String;Ljava/lang/reflect/Method;[Ljava/lang/Class;Ljava/lang/Object;)Z +HSPLch/qos/logback/core/joran/util/PropertySetter;->isUnequivocallyInstantiable(Ljava/lang/Class;)Z +HSPLch/qos/logback/core/joran/util/PropertySetter;->setComplexProperty(Ljava/lang/String;Ljava/lang/Object;)V +HSPLch/qos/logback/core/joran/util/PropertySetter;->setProperty(Lch/qos/logback/core/joran/util/PropertyDescriptor;Ljava/lang/String;Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/util/PropertySetter;->setProperty(Ljava/lang/String;Ljava/lang/String;)V +Lch/qos/logback/core/joran/util/StringToObjectConverter; +HSPLch/qos/logback/core/joran/util/StringToObjectConverter;->()V +HSPLch/qos/logback/core/joran/util/StringToObjectConverter;->canBeBuiltFromSimpleString(Ljava/lang/Class;)Z +HSPLch/qos/logback/core/joran/util/StringToObjectConverter;->convertArg(Lch/qos/logback/core/spi/ContextAware;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object; +HSPLch/qos/logback/core/joran/util/StringToObjectConverter;->followsTheValueOfConvention(Ljava/lang/Class;)Z +HSPLch/qos/logback/core/joran/util/StringToObjectConverter;->getValueOfMethod(Ljava/lang/Class;)Ljava/lang/reflect/Method; +HSPLch/qos/logback/core/joran/util/StringToObjectConverter;->isOfTypeCharset(Ljava/lang/Class;)Z +Lch/qos/logback/core/net/ssl/KeyManagerFactoryFactoryBean; +Lch/qos/logback/core/net/ssl/KeyStoreFactoryBean; +Lch/qos/logback/core/net/ssl/SSLComponent; +Lch/qos/logback/core/net/ssl/SSLConfiguration; +Lch/qos/logback/core/net/ssl/SSLContextFactoryBean; +Lch/qos/logback/core/net/ssl/SSLNestedComponentRegistryRules; +HSPLch/qos/logback/core/net/ssl/SSLNestedComponentRegistryRules;->addDefaultNestedComponentRegistryRules(Lch/qos/logback/core/joran/spi/DefaultNestedComponentRegistry;)V +Lch/qos/logback/core/net/ssl/SSLParametersConfiguration; +Lch/qos/logback/core/net/ssl/SecureRandomFactoryBean; +Lch/qos/logback/core/net/ssl/TrustManagerFactoryFactoryBean; +Lch/qos/logback/core/pattern/CompositeConverter; +Lch/qos/logback/core/pattern/Converter; +HSPLch/qos/logback/core/pattern/Converter;->()V +HSPLch/qos/logback/core/pattern/Converter;->getNext()Lch/qos/logback/core/pattern/Converter; +HSPLch/qos/logback/core/pattern/Converter;->setNext(Lch/qos/logback/core/pattern/Converter;)V +Lch/qos/logback/core/pattern/ConverterUtil; +HSPLch/qos/logback/core/pattern/ConverterUtil;->findTail(Lch/qos/logback/core/pattern/Converter;)Lch/qos/logback/core/pattern/Converter; +HSPLch/qos/logback/core/pattern/ConverterUtil;->setContextForConverters(Lch/qos/logback/core/Context;Lch/qos/logback/core/pattern/Converter;)V +HSPLch/qos/logback/core/pattern/ConverterUtil;->startConverters(Lch/qos/logback/core/pattern/Converter;)V +Lch/qos/logback/core/pattern/DynamicConverter; +HSPLch/qos/logback/core/pattern/DynamicConverter;->()V +HSPLch/qos/logback/core/pattern/DynamicConverter;->getFirstOption()Ljava/lang/String; +HSPLch/qos/logback/core/pattern/DynamicConverter;->getOptionList()Ljava/util/List; +HSPLch/qos/logback/core/pattern/DynamicConverter;->setContext(Lch/qos/logback/core/Context;)V +HSPLch/qos/logback/core/pattern/DynamicConverter;->setOptionList(Ljava/util/List;)V +HSPLch/qos/logback/core/pattern/DynamicConverter;->start()V +Lch/qos/logback/core/pattern/FormatInfo; +HSPLch/qos/logback/core/pattern/FormatInfo;->()V +HSPLch/qos/logback/core/pattern/FormatInfo;->valueOf(Ljava/lang/String;)Lch/qos/logback/core/pattern/FormatInfo; +Lch/qos/logback/core/pattern/FormattingConverter; +HSPLch/qos/logback/core/pattern/FormattingConverter;->()V +HSPLch/qos/logback/core/pattern/FormattingConverter;->setFormattingInfo(Lch/qos/logback/core/pattern/FormatInfo;)V +Lch/qos/logback/core/pattern/IdentityCompositeConverter; +Lch/qos/logback/core/pattern/LiteralConverter; +HSPLch/qos/logback/core/pattern/LiteralConverter;->(Ljava/lang/String;)V +Lch/qos/logback/core/pattern/PatternLayoutBase; +HSPLch/qos/logback/core/pattern/PatternLayoutBase;->()V +HSPLch/qos/logback/core/pattern/PatternLayoutBase;->getEffectiveConverterMap()Ljava/util/Map; +HSPLch/qos/logback/core/pattern/PatternLayoutBase;->setOutputPatternAsHeader(Z)V +HSPLch/qos/logback/core/pattern/PatternLayoutBase;->setPattern(Ljava/lang/String;)V +HSPLch/qos/logback/core/pattern/PatternLayoutBase;->setPostCompileProcessor(Lch/qos/logback/core/pattern/PostCompileProcessor;)V +HSPLch/qos/logback/core/pattern/PatternLayoutBase;->start()V +Lch/qos/logback/core/pattern/PatternLayoutEncoderBase; +HSPLch/qos/logback/core/pattern/PatternLayoutEncoderBase;->()V +HSPLch/qos/logback/core/pattern/PatternLayoutEncoderBase;->getPattern()Ljava/lang/String; +HSPLch/qos/logback/core/pattern/PatternLayoutEncoderBase;->setPattern(Ljava/lang/String;)V +Lch/qos/logback/core/pattern/PostCompileProcessor; +Lch/qos/logback/core/pattern/ReplacingCompositeConverter; +Lch/qos/logback/core/pattern/parser/Compiler; +HSPLch/qos/logback/core/pattern/parser/Compiler;->(Lch/qos/logback/core/pattern/parser/Node;Ljava/util/Map;)V +HSPLch/qos/logback/core/pattern/parser/Compiler;->addToList(Lch/qos/logback/core/pattern/Converter;)V +HSPLch/qos/logback/core/pattern/parser/Compiler;->compile()Lch/qos/logback/core/pattern/Converter; +HSPLch/qos/logback/core/pattern/parser/Compiler;->createConverter(Lch/qos/logback/core/pattern/parser/SimpleKeywordNode;)Lch/qos/logback/core/pattern/DynamicConverter; +Lch/qos/logback/core/pattern/parser/FormattingNode; +HSPLch/qos/logback/core/pattern/parser/FormattingNode;->(ILjava/lang/Object;)V +HSPLch/qos/logback/core/pattern/parser/FormattingNode;->getFormatInfo()Lch/qos/logback/core/pattern/FormatInfo; +HSPLch/qos/logback/core/pattern/parser/FormattingNode;->setFormatInfo(Lch/qos/logback/core/pattern/FormatInfo;)V +Lch/qos/logback/core/pattern/parser/Node; +HSPLch/qos/logback/core/pattern/parser/Node;->(ILjava/lang/Object;)V +HSPLch/qos/logback/core/pattern/parser/Node;->getValue()Ljava/lang/Object; +HSPLch/qos/logback/core/pattern/parser/Node;->setNext(Lch/qos/logback/core/pattern/parser/Node;)V +Lch/qos/logback/core/pattern/parser/OptionTokenizer; +HSPLch/qos/logback/core/pattern/parser/OptionTokenizer;->(Lch/qos/logback/core/pattern/parser/TokenStream;)V +HSPLch/qos/logback/core/pattern/parser/OptionTokenizer;->(Lch/qos/logback/core/pattern/parser/TokenStream;Lch/qos/logback/core/pattern/util/IEscapeUtil;)V +HSPLch/qos/logback/core/pattern/parser/OptionTokenizer;->emitOptionToken(Ljava/util/List;Ljava/util/List;)V +HSPLch/qos/logback/core/pattern/parser/OptionTokenizer;->tokenize(CLjava/util/List;)V +Lch/qos/logback/core/pattern/parser/Parser; +HSPLch/qos/logback/core/pattern/parser/Parser;->()V +HSPLch/qos/logback/core/pattern/parser/Parser;->(Ljava/lang/String;)V +HSPLch/qos/logback/core/pattern/parser/Parser;->(Ljava/lang/String;Lch/qos/logback/core/pattern/util/IEscapeUtil;)V +HSPLch/qos/logback/core/pattern/parser/Parser;->C()Lch/qos/logback/core/pattern/parser/FormattingNode; +HSPLch/qos/logback/core/pattern/parser/Parser;->E()Lch/qos/logback/core/pattern/parser/Node; +HSPLch/qos/logback/core/pattern/parser/Parser;->Eopt()Lch/qos/logback/core/pattern/parser/Node; +HSPLch/qos/logback/core/pattern/parser/Parser;->SINGLE()Lch/qos/logback/core/pattern/parser/FormattingNode; +HSPLch/qos/logback/core/pattern/parser/Parser;->T()Lch/qos/logback/core/pattern/parser/Node; +HSPLch/qos/logback/core/pattern/parser/Parser;->advanceTokenPointer()V +HSPLch/qos/logback/core/pattern/parser/Parser;->compile(Lch/qos/logback/core/pattern/parser/Node;Ljava/util/Map;)Lch/qos/logback/core/pattern/Converter; +HSPLch/qos/logback/core/pattern/parser/Parser;->expectNotNull(Lch/qos/logback/core/pattern/parser/Token;Ljava/lang/String;)V +HSPLch/qos/logback/core/pattern/parser/Parser;->getCurentToken()Lch/qos/logback/core/pattern/parser/Token; +HSPLch/qos/logback/core/pattern/parser/Parser;->getNextToken()Lch/qos/logback/core/pattern/parser/Token; +HSPLch/qos/logback/core/pattern/parser/Parser;->parse()Lch/qos/logback/core/pattern/parser/Node; +Lch/qos/logback/core/pattern/parser/SimpleKeywordNode; +HSPLch/qos/logback/core/pattern/parser/SimpleKeywordNode;->(Ljava/lang/Object;)V +HSPLch/qos/logback/core/pattern/parser/SimpleKeywordNode;->getOptions()Ljava/util/List; +HSPLch/qos/logback/core/pattern/parser/SimpleKeywordNode;->setOptions(Ljava/util/List;)V +Lch/qos/logback/core/pattern/parser/Token; +HSPLch/qos/logback/core/pattern/parser/Token;->()V +HSPLch/qos/logback/core/pattern/parser/Token;->(I)V +HSPLch/qos/logback/core/pattern/parser/Token;->(ILjava/lang/String;)V +HSPLch/qos/logback/core/pattern/parser/Token;->(ILjava/lang/String;Ljava/util/List;)V +HSPLch/qos/logback/core/pattern/parser/Token;->(ILjava/util/List;)V +HSPLch/qos/logback/core/pattern/parser/Token;->getOptionsList()Ljava/util/List; +HSPLch/qos/logback/core/pattern/parser/Token;->getType()I +HSPLch/qos/logback/core/pattern/parser/Token;->getValue()Ljava/lang/String; +Lch/qos/logback/core/pattern/parser/TokenStream; +HSPLch/qos/logback/core/pattern/parser/TokenStream;->(Ljava/lang/String;Lch/qos/logback/core/pattern/util/IEscapeUtil;)V +HSPLch/qos/logback/core/pattern/parser/TokenStream;->addValuedToken(ILjava/lang/StringBuffer;Ljava/util/List;)V +HSPLch/qos/logback/core/pattern/parser/TokenStream;->handleFormatModifierState(CLjava/util/List;Ljava/lang/StringBuffer;)V +HSPLch/qos/logback/core/pattern/parser/TokenStream;->handleKeywordState(CLjava/util/List;Ljava/lang/StringBuffer;)V +HSPLch/qos/logback/core/pattern/parser/TokenStream;->handleLiteralState(CLjava/util/List;Ljava/lang/StringBuffer;)V +HSPLch/qos/logback/core/pattern/parser/TokenStream;->processOption(CLjava/util/List;Ljava/lang/StringBuffer;)V +HSPLch/qos/logback/core/pattern/parser/TokenStream;->tokenize()Ljava/util/List; +Lch/qos/logback/core/pattern/parser/TokenStream$1; +HSPLch/qos/logback/core/pattern/parser/TokenStream$1;->()V +Lch/qos/logback/core/pattern/parser/TokenStream$TokenizerState; +HSPLch/qos/logback/core/pattern/parser/TokenStream$TokenizerState;->()V +HSPLch/qos/logback/core/pattern/parser/TokenStream$TokenizerState;->(Ljava/lang/String;I)V +HSPLch/qos/logback/core/pattern/parser/TokenStream$TokenizerState;->values()[Lch/qos/logback/core/pattern/parser/TokenStream$TokenizerState; +Lch/qos/logback/core/pattern/util/AsIsEscapeUtil; +HSPLch/qos/logback/core/pattern/util/AsIsEscapeUtil;->()V +Lch/qos/logback/core/pattern/util/IEscapeUtil; +Lch/qos/logback/core/pattern/util/RegularEscapeUtil; +HSPLch/qos/logback/core/pattern/util/RegularEscapeUtil;->()V +Lch/qos/logback/core/pattern/util/RestrictedEscapeUtil; +HSPLch/qos/logback/core/pattern/util/RestrictedEscapeUtil;->()V +Lch/qos/logback/core/spi/AppenderAttachable; +Lch/qos/logback/core/spi/AppenderAttachableImpl; +HSPLch/qos/logback/core/spi/AppenderAttachableImpl;->()V +HSPLch/qos/logback/core/spi/AppenderAttachableImpl;->()V +HSPLch/qos/logback/core/spi/AppenderAttachableImpl;->addAppender(Lch/qos/logback/core/Appender;)V +Lch/qos/logback/core/spi/ContextAware; +Lch/qos/logback/core/spi/ContextAwareBase; +HSPLch/qos/logback/core/spi/ContextAwareBase;->()V +HSPLch/qos/logback/core/spi/ContextAwareBase;->(Lch/qos/logback/core/spi/ContextAware;)V +HSPLch/qos/logback/core/spi/ContextAwareBase;->addInfo(Ljava/lang/String;)V +HSPLch/qos/logback/core/spi/ContextAwareBase;->addStatus(Lch/qos/logback/core/status/Status;)V +HSPLch/qos/logback/core/spi/ContextAwareBase;->getContext()Lch/qos/logback/core/Context; +HSPLch/qos/logback/core/spi/ContextAwareBase;->getDeclaredOrigin()Ljava/lang/Object; +HSPLch/qos/logback/core/spi/ContextAwareBase;->setContext(Lch/qos/logback/core/Context;)V +Lch/qos/logback/core/spi/ContextAwareImpl; +HSPLch/qos/logback/core/spi/ContextAwareImpl;->(Lch/qos/logback/core/Context;Ljava/lang/Object;)V +Lch/qos/logback/core/spi/FilterAttachable; +Lch/qos/logback/core/spi/FilterAttachableImpl; +HSPLch/qos/logback/core/spi/FilterAttachableImpl;->()V +Lch/qos/logback/core/spi/FilterReply; +Lch/qos/logback/core/spi/LifeCycle; +Lch/qos/logback/core/spi/LogbackLock; +HSPLch/qos/logback/core/spi/LogbackLock;->()V +Lch/qos/logback/core/spi/PropertyContainer; +Lch/qos/logback/core/spi/ScanException; +Lch/qos/logback/core/status/InfoStatus; +HSPLch/qos/logback/core/status/InfoStatus;->(Ljava/lang/String;Ljava/lang/Object;)V +Lch/qos/logback/core/status/Status; +Lch/qos/logback/core/status/StatusBase; +HSPLch/qos/logback/core/status/StatusBase;->()V +HSPLch/qos/logback/core/status/StatusBase;->(ILjava/lang/String;Ljava/lang/Object;)V +HSPLch/qos/logback/core/status/StatusBase;->(ILjava/lang/String;Ljava/lang/Object;Ljava/lang/Throwable;)V +HSPLch/qos/logback/core/status/StatusBase;->getDate()Ljava/lang/Long; +HSPLch/qos/logback/core/status/StatusBase;->getLevel()I +Lch/qos/logback/core/status/StatusListener; +Lch/qos/logback/core/status/StatusManager; +Lch/qos/logback/core/status/StatusUtil; +HSPLch/qos/logback/core/status/StatusUtil;->(Lch/qos/logback/core/Context;)V +HSPLch/qos/logback/core/status/StatusUtil;->containsMatch(JILjava/lang/String;)Z +HSPLch/qos/logback/core/status/StatusUtil;->contextHasStatusListener(Lch/qos/logback/core/Context;)Z +HSPLch/qos/logback/core/status/StatusUtil;->filterStatusListByTimeThreshold(Ljava/util/List;J)Ljava/util/List; +HSPLch/qos/logback/core/status/StatusUtil;->getHighestLevel(J)I +HSPLch/qos/logback/core/status/StatusUtil;->hasXMLParsingErrors(J)Z +HSPLch/qos/logback/core/status/StatusUtil;->noXMLParsingErrorsOccurred(J)Z +Lch/qos/logback/core/subst/Node; +HSPLch/qos/logback/core/subst/Node;->(Lch/qos/logback/core/subst/Node$Type;Ljava/lang/Object;)V +HSPLch/qos/logback/core/subst/Node;->append(Lch/qos/logback/core/subst/Node;)V +Lch/qos/logback/core/subst/Node$Type; +HSPLch/qos/logback/core/subst/Node$Type;->()V +HSPLch/qos/logback/core/subst/Node$Type;->(Ljava/lang/String;I)V +HSPLch/qos/logback/core/subst/Node$Type;->values()[Lch/qos/logback/core/subst/Node$Type; +Lch/qos/logback/core/subst/NodeToStringTransformer; +HSPLch/qos/logback/core/subst/NodeToStringTransformer;->(Lch/qos/logback/core/subst/Node;Lch/qos/logback/core/spi/PropertyContainer;Lch/qos/logback/core/spi/PropertyContainer;)V +HSPLch/qos/logback/core/subst/NodeToStringTransformer;->compileNode(Lch/qos/logback/core/subst/Node;Ljava/lang/StringBuilder;Ljava/util/Stack;)V +HSPLch/qos/logback/core/subst/NodeToStringTransformer;->handleLiteral(Lch/qos/logback/core/subst/Node;Ljava/lang/StringBuilder;)V +HSPLch/qos/logback/core/subst/NodeToStringTransformer;->substituteVariable(Ljava/lang/String;Lch/qos/logback/core/spi/PropertyContainer;Lch/qos/logback/core/spi/PropertyContainer;)Ljava/lang/String; +HSPLch/qos/logback/core/subst/NodeToStringTransformer;->tokenizeAndParseString(Ljava/lang/String;)Lch/qos/logback/core/subst/Node; +HSPLch/qos/logback/core/subst/NodeToStringTransformer;->transform()Ljava/lang/String; +Lch/qos/logback/core/subst/NodeToStringTransformer$1; +HSPLch/qos/logback/core/subst/NodeToStringTransformer$1;->()V +Lch/qos/logback/core/subst/Parser; +HSPLch/qos/logback/core/subst/Parser;->(Ljava/util/List;)V +HSPLch/qos/logback/core/subst/Parser;->C()Lch/qos/logback/core/subst/Node; +HSPLch/qos/logback/core/subst/Parser;->E()Lch/qos/logback/core/subst/Node; +HSPLch/qos/logback/core/subst/Parser;->Eopt()Lch/qos/logback/core/subst/Node; +HSPLch/qos/logback/core/subst/Parser;->T()Lch/qos/logback/core/subst/Node; +HSPLch/qos/logback/core/subst/Parser;->advanceTokenPointer()V +HSPLch/qos/logback/core/subst/Parser;->expectCurlyRight(Lch/qos/logback/core/subst/Token;)V +HSPLch/qos/logback/core/subst/Parser;->expectNotNull(Lch/qos/logback/core/subst/Token;Ljava/lang/String;)V +HSPLch/qos/logback/core/subst/Parser;->isDefaultToken(Lch/qos/logback/core/subst/Token;)Z +HSPLch/qos/logback/core/subst/Parser;->makeNewLiteralNode(Ljava/lang/String;)Lch/qos/logback/core/subst/Node; +HSPLch/qos/logback/core/subst/Parser;->parse()Lch/qos/logback/core/subst/Node; +HSPLch/qos/logback/core/subst/Parser;->peekAtCurentToken()Lch/qos/logback/core/subst/Token; +Lch/qos/logback/core/subst/Parser$1; +HSPLch/qos/logback/core/subst/Parser$1;->()V +Lch/qos/logback/core/subst/Token; +HSPLch/qos/logback/core/subst/Token;->()V +HSPLch/qos/logback/core/subst/Token;->(Lch/qos/logback/core/subst/Token$Type;Ljava/lang/String;)V +Lch/qos/logback/core/subst/Token$Type; +HSPLch/qos/logback/core/subst/Token$Type;->()V +HSPLch/qos/logback/core/subst/Token$Type;->(Ljava/lang/String;I)V +HSPLch/qos/logback/core/subst/Token$Type;->values()[Lch/qos/logback/core/subst/Token$Type; +Lch/qos/logback/core/subst/Tokenizer; +HSPLch/qos/logback/core/subst/Tokenizer;->(Ljava/lang/String;)V +HSPLch/qos/logback/core/subst/Tokenizer;->addLiteralToken(Ljava/util/List;Ljava/lang/StringBuilder;)V +HSPLch/qos/logback/core/subst/Tokenizer;->handleLiteralState(CLjava/util/List;Ljava/lang/StringBuilder;)V +HSPLch/qos/logback/core/subst/Tokenizer;->tokenize()Ljava/util/List; +Lch/qos/logback/core/subst/Tokenizer$1; +HSPLch/qos/logback/core/subst/Tokenizer$1;->()V +Lch/qos/logback/core/subst/Tokenizer$TokenizerState; +HSPLch/qos/logback/core/subst/Tokenizer$TokenizerState;->()V +HSPLch/qos/logback/core/subst/Tokenizer$TokenizerState;->(Ljava/lang/String;I)V +HSPLch/qos/logback/core/subst/Tokenizer$TokenizerState;->values()[Lch/qos/logback/core/subst/Tokenizer$TokenizerState; +Lch/qos/logback/core/util/AggregationType; +HSPLch/qos/logback/core/util/AggregationType;->()V +HSPLch/qos/logback/core/util/AggregationType;->(Ljava/lang/String;I)V +HSPLch/qos/logback/core/util/AggregationType;->values()[Lch/qos/logback/core/util/AggregationType; +Lch/qos/logback/core/util/COWArrayList; +HSPLch/qos/logback/core/util/COWArrayList;->([Ljava/lang/Object;)V +HSPLch/qos/logback/core/util/COWArrayList;->addIfAbsent(Ljava/lang/Object;)V +HSPLch/qos/logback/core/util/COWArrayList;->markAsStale()V +Lch/qos/logback/core/util/CachingDateFormatter; +HSPLch/qos/logback/core/util/CachingDateFormatter;->(Ljava/lang/String;)V +HSPLch/qos/logback/core/util/CachingDateFormatter;->(Ljava/lang/String;Ljava/util/Locale;)V +Lch/qos/logback/core/util/CloseUtil; +HSPLch/qos/logback/core/util/CloseUtil;->closeQuietly(Ljava/io/Closeable;)V +Lch/qos/logback/core/util/ContextUtil; +HSPLch/qos/logback/core/util/ContextUtil;->(Lch/qos/logback/core/Context;)V +HSPLch/qos/logback/core/util/ContextUtil;->addHostNameAsProperty()V +Lch/qos/logback/core/util/Duration; +HSPLch/qos/logback/core/util/Duration;->()V +HSPLch/qos/logback/core/util/Duration;->(J)V +HSPLch/qos/logback/core/util/Duration;->buildByMinutes(D)Lch/qos/logback/core/util/Duration; +Lch/qos/logback/core/util/EnvUtil; +HSPLch/qos/logback/core/util/EnvUtil;->()V +HSPLch/qos/logback/core/util/EnvUtil;->isJDK5()Z +HSPLch/qos/logback/core/util/EnvUtil;->isJDK_N_OrHigher(I)Z +Lch/qos/logback/core/util/IncompatibleClassException; +Lch/qos/logback/core/util/Loader; +HSPLch/qos/logback/core/util/Loader;->()V +HSPLch/qos/logback/core/util/Loader;->getClassLoaderOfClass(Ljava/lang/Class;)Ljava/lang/ClassLoader; +HSPLch/qos/logback/core/util/Loader;->getClassLoaderOfObject(Ljava/lang/Object;)Ljava/lang/ClassLoader; +Lch/qos/logback/core/util/Loader$1; +HSPLch/qos/logback/core/util/Loader$1;->()V +HSPLch/qos/logback/core/util/Loader$1;->run()Ljava/lang/Boolean; +HSPLch/qos/logback/core/util/Loader$1;->run()Ljava/lang/Object; +Lch/qos/logback/core/util/OptionHelper; +HSPLch/qos/logback/core/util/OptionHelper;->getAndroidSystemProperty(Ljava/lang/String;)Ljava/lang/String; +HSPLch/qos/logback/core/util/OptionHelper;->getSystemProperty(Ljava/lang/String;)Ljava/lang/String; +HSPLch/qos/logback/core/util/OptionHelper;->getSystemProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLch/qos/logback/core/util/OptionHelper;->instantiateByClassName(Ljava/lang/String;Ljava/lang/Class;Lch/qos/logback/core/Context;)Ljava/lang/Object; +HSPLch/qos/logback/core/util/OptionHelper;->instantiateByClassName(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/ClassLoader;)Ljava/lang/Object; +HSPLch/qos/logback/core/util/OptionHelper;->instantiateByClassNameAndParameter(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/ClassLoader;Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/Object; +HSPLch/qos/logback/core/util/OptionHelper;->isEmpty(Ljava/lang/String;)Z +HSPLch/qos/logback/core/util/OptionHelper;->substVars(Ljava/lang/String;Lch/qos/logback/core/spi/PropertyContainer;Lch/qos/logback/core/spi/PropertyContainer;)Ljava/lang/String; +HSPLch/qos/logback/core/util/OptionHelper;->toBoolean(Ljava/lang/String;Z)Z +Lch/qos/logback/core/util/PropertySetterException; +Lch/qos/logback/core/util/StatusListenerConfigHelper; +HSPLch/qos/logback/core/util/StatusListenerConfigHelper;->installIfAsked(Lch/qos/logback/core/Context;)V +Lch/qos/logback/core/util/StatusPrinter; +HSPLch/qos/logback/core/util/StatusPrinter;->()V +HSPLch/qos/logback/core/util/StatusPrinter;->printInCaseOfErrorsOrWarnings(Lch/qos/logback/core/Context;)V +HSPLch/qos/logback/core/util/StatusPrinter;->printInCaseOfErrorsOrWarnings(Lch/qos/logback/core/Context;J)V +Lcom/artemchep/bindin/BindInKt; +HSPLcom/artemchep/bindin/BindInKt;->$r8$lambda$7FZYiAZKPPHiKth_BqoIeBFpcSE(Landroidx/lifecycle/Lifecycle$State;Lkotlin/jvm/internal/Ref$BooleanRef;Lkotlin/jvm/internal/Ref$ObjectRef;Landroidx/lifecycle/LifecycleOwner;Lkotlin/jvm/functions/Function1;Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +HSPLcom/artemchep/bindin/BindInKt;->()V +HSPLcom/artemchep/bindin/BindInKt;->bindBlock$default(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$State;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lkotlin/jvm/functions/Function0; +HSPLcom/artemchep/bindin/BindInKt;->bindBlock$lambda-2(Landroidx/lifecycle/Lifecycle$State;Lkotlin/jvm/internal/Ref$BooleanRef;Lkotlin/jvm/internal/Ref$ObjectRef;Landroidx/lifecycle/LifecycleOwner;Lkotlin/jvm/functions/Function1;Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +HSPLcom/artemchep/bindin/BindInKt;->bindBlock(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$State;Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function0; +Lcom/artemchep/bindin/BindInKt$$ExternalSyntheticLambda0; +HSPLcom/artemchep/bindin/BindInKt$$ExternalSyntheticLambda0;->(Landroidx/lifecycle/Lifecycle$State;Lkotlin/jvm/internal/Ref$BooleanRef;Lkotlin/jvm/internal/Ref$ObjectRef;Landroidx/lifecycle/LifecycleOwner;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/bindin/BindInKt$$ExternalSyntheticLambda0;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +Lcom/artemchep/bindin/BindInKt$bindBlock$observer$1$1; +HSPLcom/artemchep/bindin/BindInKt$bindBlock$observer$1$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/bindin/BindInKt$bindBlock$observer$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/bindin/BindInKt$bindBlock$observer$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/bindin/BindInKt$bindBlock$registration$1; +HSPLcom/artemchep/bindin/BindInKt$bindBlock$registration$1;->(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/LifecycleEventObserver;Lkotlin/jvm/internal/Ref$ObjectRef;)V +Lcom/artemchep/keyguard/AppMode; +Lcom/artemchep/keyguard/AppMode$HasType; +Lcom/artemchep/keyguard/AppMode$Main; +HSPLcom/artemchep/keyguard/AppMode$Main;->()V +HSPLcom/artemchep/keyguard/AppMode$Main;->()V +Lcom/artemchep/keyguard/AppMode$Pick; +Lcom/artemchep/keyguard/AppMode$PickPasskey; +Lcom/artemchep/keyguard/AppMode$Save; +Lcom/artemchep/keyguard/AppMode$SavePasskey; +Lcom/artemchep/keyguard/AutofillActArgsKt; +HSPLcom/artemchep/keyguard/AutofillActArgsKt;->getAutofillTarget(Lcom/artemchep/keyguard/AppMode;)Lcom/artemchep/keyguard/common/model/AutofillTarget; +Lcom/artemchep/keyguard/LocalAppModeKt; +HSPLcom/artemchep/keyguard/LocalAppModeKt;->()V +HSPLcom/artemchep/keyguard/LocalAppModeKt;->getLocalAppMode()Landroidx/compose/runtime/ProvidableCompositionLocal; +Lcom/artemchep/keyguard/LocalAppModeKt$LocalAppMode$1; +HSPLcom/artemchep/keyguard/LocalAppModeKt$LocalAppMode$1;->()V +HSPLcom/artemchep/keyguard/LocalAppModeKt$LocalAppMode$1;->()V +Lcom/artemchep/keyguard/Main; +HSPLcom/artemchep/keyguard/Main;->()V +HSPLcom/artemchep/keyguard/Main;->()V +HSPLcom/artemchep/keyguard/Main;->access$onCreate$lambda$1(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetVaultSession; +HSPLcom/artemchep/keyguard/Main;->access$onCreate$lambda$11(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetVaultLockAfterScreenOff; +HSPLcom/artemchep/keyguard/Main;->access$onCreate$lambda$12(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/service/power/PowerService; +HSPLcom/artemchep/keyguard/Main;->access$onCreate$lambda$3(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetVaultPersist; +HSPLcom/artemchep/keyguard/Main;->access$onCreate$lambda$4(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/service/vault/KeyReadWriteRepository; +HSPLcom/artemchep/keyguard/Main;->access$onCreate$lambda$6(Lkotlin/Lazy;)Lcom/artemchep/keyguard/android/downloader/journal/DownloadRepository; +HSPLcom/artemchep/keyguard/Main;->access$onCreate$lambda$7(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/CleanUpAttachment; +HSPLcom/artemchep/keyguard/Main;->access$onCreate$lambda$8(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/AppWorker; +HSPLcom/artemchep/keyguard/Main;->attachBaseContext(Landroid/content/Context;)V +HSPLcom/artemchep/keyguard/Main;->getDi()Lorg/kodein/di/DI; +HSPLcom/artemchep/keyguard/Main;->getDi()Lorg/kodein/di/LazyDI; +HSPLcom/artemchep/keyguard/Main;->getDiContext()Lorg/kodein/di/DIContext; +HSPLcom/artemchep/keyguard/Main;->getDiTrigger()Lorg/kodein/di/DITrigger; +HSPLcom/artemchep/keyguard/Main;->onCreate$lambda$1(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetVaultSession; +HSPLcom/artemchep/keyguard/Main;->onCreate$lambda$11(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetVaultLockAfterScreenOff; +HSPLcom/artemchep/keyguard/Main;->onCreate$lambda$12(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/service/power/PowerService; +HSPLcom/artemchep/keyguard/Main;->onCreate$lambda$3(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetVaultPersist; +HSPLcom/artemchep/keyguard/Main;->onCreate$lambda$4(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/service/vault/KeyReadWriteRepository; +HSPLcom/artemchep/keyguard/Main;->onCreate$lambda$6(Lkotlin/Lazy;)Lcom/artemchep/keyguard/android/downloader/journal/DownloadRepository; +HSPLcom/artemchep/keyguard/Main;->onCreate$lambda$7(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/CleanUpAttachment; +HSPLcom/artemchep/keyguard/Main;->onCreate$lambda$8(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/AppWorker; +HSPLcom/artemchep/keyguard/Main;->onCreate()V +Lcom/artemchep/keyguard/Main$di$2; +HSPLcom/artemchep/keyguard/Main$di$2;->(Lcom/artemchep/keyguard/Main;)V +HSPLcom/artemchep/keyguard/Main$di$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$di$2;->invoke(Lorg/kodein/di/DI$MainBuilder;)V +Lcom/artemchep/keyguard/Main$di$2$1; +HSPLcom/artemchep/keyguard/Main$di$2$1;->(Lcom/artemchep/keyguard/Main;)V +HSPLcom/artemchep/keyguard/Main$di$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$di$2$1;->invoke(Lorg/kodein/di/bindings/NoArgBindingDI;)Lcom/artemchep/keyguard/billing/BillingManagerImpl; +Lcom/artemchep/keyguard/Main$di$2$invoke$$inlined$bind$default$1; +HSPLcom/artemchep/keyguard/Main$di$2$invoke$$inlined$bind$default$1;->()V +Lcom/artemchep/keyguard/Main$di$2$invoke$$inlined$singleton$default$1; +HSPLcom/artemchep/keyguard/Main$di$2$invoke$$inlined$singleton$default$1;->()V +Lcom/artemchep/keyguard/Main$onCreate$$inlined$instance$1; +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$instance$1;->()V +Lcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$10; +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$10;->()V +Lcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$11; +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$11;->()V +Lcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$4; +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$4;->()V +Lcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$5; +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$5;->()V +Lcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$6; +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$6;->()V +Lcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$7; +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$7;->()V +Lcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$8; +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$8;->()V +Lcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$9; +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$9;->()V +Lcom/artemchep/keyguard/Main$onCreate$$inlined$map$1; +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/Main$onCreate$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/Main$onCreate$1; +HSPLcom/artemchep/keyguard/Main$onCreate$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/Lazy;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/Main$onCreate$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/Main$onCreate$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$2; +HSPLcom/artemchep/keyguard/Main$onCreate$2;->(Lkotlin/Lazy;Lkotlin/Lazy;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/Main$onCreate$2;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/Main$onCreate$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$2;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$2$1; +HSPLcom/artemchep/keyguard/Main$onCreate$2$1;->(Lkotlin/Lazy;Lkotlin/Lazy;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/Main$onCreate$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/Main$onCreate$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$2$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$3; +HSPLcom/artemchep/keyguard/Main$onCreate$3;->(Lkotlin/Lazy;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/Main$onCreate$3;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/Main$onCreate$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$3;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$3$2; +HSPLcom/artemchep/keyguard/Main$onCreate$3$2;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/Main$onCreate$3$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/Main$onCreate$3$2;->invoke(Lcom/artemchep/keyguard/common/usecase/GetAccounts;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$3$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$3$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$3$2$1; +HSPLcom/artemchep/keyguard/Main$onCreate$3$2$1;->(Lcom/artemchep/keyguard/common/usecase/GetAccounts;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/Main$onCreate$3$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/Main$onCreate$3$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$3$2$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$3$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$3$invokeSuspend$$inlined$map$1; +HSPLcom/artemchep/keyguard/Main$onCreate$3$invokeSuspend$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/Main$onCreate$3$invokeSuspend$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$3$invokeSuspend$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/Main$onCreate$3$invokeSuspend$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/Main$onCreate$3$invokeSuspend$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$3$invokeSuspend$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/Main$onCreate$3$invokeSuspend$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/Main$onCreate$3$invokeSuspend$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/Main$onCreate$3$invokeSuspend$lambda$0$$inlined$instance$default$1; +PLcom/artemchep/keyguard/Main$onCreate$3$invokeSuspend$lambda$0$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/Main$onCreate$4; +HSPLcom/artemchep/keyguard/Main$onCreate$4;->(Lkotlin/Lazy;Lkotlin/Lazy;Lkotlin/Lazy;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/Main$onCreate$4;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/Main$onCreate$4;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$4;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$4;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$4$1; +HSPLcom/artemchep/keyguard/Main$onCreate$4$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/Main$onCreate$4$1;->invoke(Lcom/artemchep/keyguard/common/model/MasterSession;ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$4$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$4$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$4$2; +HSPLcom/artemchep/keyguard/Main$onCreate$4$2;->(Lkotlin/Lazy;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/Main$onCreate$4$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/Main$onCreate$4$2;->invoke(Lcom/artemchep/keyguard/common/model/MasterKey;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$4$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$4$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$5; +HSPLcom/artemchep/keyguard/Main$onCreate$5;->(Lkotlin/jvm/internal/Ref$ObjectRef;Lkotlin/Lazy;Lcom/artemchep/keyguard/Main;Lkotlin/Lazy;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/Main$onCreate$5;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/Main$onCreate$5;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$5;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$5;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$6; +HSPLcom/artemchep/keyguard/Main$onCreate$6;->(Lkotlin/Lazy;Lkotlin/Lazy;Lkotlin/Lazy;Lkotlin/Lazy;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/Main$onCreate$6;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/Main$onCreate$6;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$6$6; +HSPLcom/artemchep/keyguard/Main$onCreate$6$6;->(Lkotlinx/coroutines/CoroutineScope;Lkotlin/Lazy;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$filter$1; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$filter$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$filter$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$filter$1$2; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$filter$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;Lkotlin/Lazy;)V +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$flatMapLatest$2; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$flatMapLatest$2;->(Lkotlin/coroutines/Continuation;Lkotlinx/coroutines/flow/SharedFlow;)V +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$flatMapLatest$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$flatMapLatest$2;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$flatMapLatest$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$1; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$2; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$2;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$2;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$2$2; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$2$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$2$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$2$2$1; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$2$2$1;->(Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$2$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$3; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$3;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$3;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$3$2; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$3$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$3$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$3$2$1; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$3$2$1;->(Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$3$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$lambda$6$$inlined$mapNotNull$1; +PLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$lambda$6$$inlined$mapNotNull$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlinx/datetime/Instant;)V +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$lambda$6$$inlined$mapNotNull$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$lambda$6$$inlined$mapNotNull$1$2; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$lambda$6$$inlined$mapNotNull$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lkotlinx/datetime/Instant;)V +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$lambda$6$$inlined$mapNotNull$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$lambda$6$$inlined$mapNotNull$1$2$1; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$lambda$6$$inlined$mapNotNull$1$2$1;->(Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$lambda$6$$inlined$mapNotNull$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/android/BaseActivity; +HSPLcom/artemchep/keyguard/android/BaseActivity;->()V +HSPLcom/artemchep/keyguard/android/BaseActivity;->()V +HSPLcom/artemchep/keyguard/android/BaseActivity;->Navigation(Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/android/BaseActivity;->access$Navigation(Lcom/artemchep/keyguard/android/BaseActivity;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/android/BaseActivity;->access$setLastUseExternalBrowser$p(Lcom/artemchep/keyguard/android/BaseActivity;Z)V +HSPLcom/artemchep/keyguard/android/BaseActivity;->getDi()Lorg/kodein/di/DI; +HSPLcom/artemchep/keyguard/android/BaseActivity;->getDiContext()Lorg/kodein/di/DIContext; +HSPLcom/artemchep/keyguard/android/BaseActivity;->getDiTrigger()Lorg/kodein/di/DITrigger; +HSPLcom/artemchep/keyguard/android/BaseActivity;->onCreate$lambda$0(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetAllowScreenshots; +HSPLcom/artemchep/keyguard/android/BaseActivity;->onCreate$lambda$1(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetUseExternalBrowser; +HSPLcom/artemchep/keyguard/android/BaseActivity;->onCreate(Landroid/os/Bundle;)V +Lcom/artemchep/keyguard/android/BaseActivity$Navigation$1; +HSPLcom/artemchep/keyguard/android/BaseActivity$Navigation$1;->()V +HSPLcom/artemchep/keyguard/android/BaseActivity$Navigation$1;->(Lcom/artemchep/keyguard/android/BaseActivity;Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/android/BaseActivity$Navigation$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/android/BaseActivity$Navigation$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/BaseActivity$Navigation$1$1; +HSPLcom/artemchep/keyguard/android/BaseActivity$Navigation$1$1;->(Lcom/artemchep/keyguard/android/BaseActivity;Lkotlin/Lazy;)V +Lcom/artemchep/keyguard/android/BaseActivity$Navigation$1$2; +HSPLcom/artemchep/keyguard/android/BaseActivity$Navigation$1$2;->(Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/android/BaseActivity$Navigation$1$2;->invoke(Lcom/artemchep/keyguard/feature/navigation/NavigationController;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/android/BaseActivity$Navigation$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/BaseActivity$Navigation$1$2$1; +HSPLcom/artemchep/keyguard/android/BaseActivity$Navigation$1$2$1;->(Lcom/artemchep/keyguard/feature/navigation/BackHandler;Lcom/artemchep/keyguard/feature/navigation/NavigationController;)V +HSPLcom/artemchep/keyguard/android/BaseActivity$Navigation$1$2$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLcom/artemchep/keyguard/android/BaseActivity$Navigation$1$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/BaseActivity$Navigation$1$2$1$invoke$$inlined$onDispose$1; +HSPLcom/artemchep/keyguard/android/BaseActivity$Navigation$1$2$1$invoke$$inlined$onDispose$1;->(Lkotlin/jvm/functions/Function0;)V +Lcom/artemchep/keyguard/android/BaseActivity$Navigation$1$invoke$$inlined$rememberInstance$1; +HSPLcom/artemchep/keyguard/android/BaseActivity$Navigation$1$invoke$$inlined$rememberInstance$1;->()V +Lcom/artemchep/keyguard/android/BaseActivity$onCreate$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/android/BaseActivity$onCreate$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/android/BaseActivity$onCreate$1; +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$1;->(Lcom/artemchep/keyguard/android/BaseActivity;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$1;->invoke(ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/BaseActivity$onCreate$2; +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$2;->(Lcom/artemchep/keyguard/android/BaseActivity;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$2;->invoke(ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/BaseActivity$onCreate$3; +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$3;->(Lcom/artemchep/keyguard/android/BaseActivity;)V +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$3;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1; +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1;->(Lcom/artemchep/keyguard/android/BaseActivity;)V +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1$1; +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1$1;->()V +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1$1;->()V +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1$2; +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1$2;->(Lcom/artemchep/keyguard/android/BaseActivity;)V +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1$2$1; +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1$2$1;->(Lcom/artemchep/keyguard/android/BaseActivity;)V +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1$2$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/BaseActivity$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/android/BaseActivity$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/android/BaseActivity$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/android/BaseActivity$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/android/BaseApp; +HSPLcom/artemchep/keyguard/android/BaseApp;->()V +HSPLcom/artemchep/keyguard/android/BaseApp;->()V +Lcom/artemchep/keyguard/android/ComposableSingletons$MainActivityKt; +HSPLcom/artemchep/keyguard/android/ComposableSingletons$MainActivityKt;->()V +HSPLcom/artemchep/keyguard/android/ComposableSingletons$MainActivityKt;->()V +HSPLcom/artemchep/keyguard/android/ComposableSingletons$MainActivityKt;->getLambda-1$common_noneRelease()Lkotlin/jvm/functions/Function2; +Lcom/artemchep/keyguard/android/ComposableSingletons$MainActivityKt$lambda-1$1; +HSPLcom/artemchep/keyguard/android/ComposableSingletons$MainActivityKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/android/ComposableSingletons$MainActivityKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/android/ComposableSingletons$MainActivityKt$lambda-1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/android/ComposableSingletons$MainActivityKt$lambda-1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/MainActivity; +HSPLcom/artemchep/keyguard/android/MainActivity;->()V +HSPLcom/artemchep/keyguard/android/MainActivity;->()V +HSPLcom/artemchep/keyguard/android/MainActivity;->Content(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/android/MainActivity;->onCreate(Landroid/os/Bundle;)V +HSPLcom/artemchep/keyguard/android/MainActivity;->updateDeeplinkFromIntent(Landroid/content/Intent;)V +Lcom/artemchep/keyguard/android/MainActivity$Companion; +HSPLcom/artemchep/keyguard/android/MainActivity$Companion;->()V +HSPLcom/artemchep/keyguard/android/MainActivity$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/android/MainActivity$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/android/MainActivity$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/android/PasskeyBeginGetRequest; +Lcom/artemchep/keyguard/android/PasskeyCreateRequest; +Lcom/artemchep/keyguard/android/PasskeyGenerator; +Lcom/artemchep/keyguard/android/PasskeyGeneratorBase; +Lcom/artemchep/keyguard/android/PasskeyGeneratorES256; +Lcom/artemchep/keyguard/android/PasskeyModuleKt; +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt;->passkeysModule()Lorg/kodein/di/DI$Module; +Lcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1; +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1;->()V +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1;->()V +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1;->invoke(Lorg/kodein/di/DI$Builder;)V +Lcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$1; +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$1;->()V +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$1;->()V +Lcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$2; +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$2;->()V +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$2;->()V +Lcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$3; +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$3;->()V +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$3;->()V +Lcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$4; +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$4;->()V +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$4;->()V +Lcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$5; +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$5;->()V +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$5;->()V +Lcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$invoke$$inlined$bindSingleton$default$1; +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$invoke$$inlined$bindSingleton$default$1;->()V +Lcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$invoke$$inlined$bindSingleton$default$2; +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$invoke$$inlined$bindSingleton$default$2;->()V +Lcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$invoke$$inlined$bindSingleton$default$3; +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$invoke$$inlined$bindSingleton$default$3;->()V +Lcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$invoke$$inlined$bindSingleton$default$4; +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$invoke$$inlined$bindSingleton$default$4;->()V +Lcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$invoke$$inlined$bindSingleton$default$5; +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$invoke$$inlined$bindSingleton$default$5;->()V +Lcom/artemchep/keyguard/android/PasskeyProviderGetRequest; +Lcom/artemchep/keyguard/android/PasskeyUtils; +Lcom/artemchep/keyguard/android/downloader/DownloadClientAndroid; +Lcom/artemchep/keyguard/android/downloader/journal/CipherHistoryOpenedRepository; +Lcom/artemchep/keyguard/android/downloader/journal/CipherHistoryOpenedRepositoryImpl; +HSPLcom/artemchep/keyguard/android/downloader/journal/CipherHistoryOpenedRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/android/downloader/journal/CipherHistoryOpenedRepositoryImpl;->(Lcom/artemchep/keyguard/core/store/DatabaseManager;Lkotlinx/coroutines/CoroutineDispatcher;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/CipherHistoryOpenedRepositoryImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/android/downloader/journal/CipherHistoryOpenedRepositoryImpl$special$$inlined$instance$1; +HSPLcom/artemchep/keyguard/android/downloader/journal/CipherHistoryOpenedRepositoryImpl$special$$inlined$instance$1;->()V +Lcom/artemchep/keyguard/android/downloader/journal/CipherHistoryOpenedRepositoryImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/android/downloader/journal/CipherHistoryOpenedRepositoryImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/android/downloader/journal/DownloadRepository; +Lcom/artemchep/keyguard/android/downloader/journal/DownloadRepositoryImpl; +HSPLcom/artemchep/keyguard/android/downloader/journal/DownloadRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/android/downloader/journal/DownloadRepositoryImpl;->(Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/DownloadRepositoryImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/android/downloader/journal/DownloadRepositoryImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/android/downloader/journal/DownloadRepositoryImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/android/downloader/journal/GeneratorHistoryRepository; +Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase;->()V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase;->()V +Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;->()V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;->(Landroid/content/Context;Ljava/lang/String;Lcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;->access$getApplicationContext$p(Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;)Landroid/content/Context; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;->access$getDbIo$p(Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;->access$getName$p(Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;->migrateIfExists(Lcom/artemchep/keyguard/data/Database;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Lkotlin/coroutines/CoroutineContext;Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;Lcom/artemchep/keyguard/data/Database;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$$inlined$ioEffect$1$1; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$$inlined$ioEffect$1$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;Lcom/artemchep/keyguard/data/Database;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$$inlined$ioEffect$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$$inlined$ioEffect$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$1$1; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$1$1;->(Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase;Lcom/artemchep/keyguard/data/Database;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$1$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$1$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$1$1$1; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$1$1$1;->(Ljava/util/List;Lcom/artemchep/keyguard/data/Database;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$1$1$1;->invoke(Lapp/cash/sqldelight/TransactionWithoutReturn;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$special$$inlined$effectMap$1; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$special$$inlined$effectMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$special$$inlined$effectMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$special$$inlined$effectMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$special$$inlined$effectMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$special$$inlined$effectMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$special$$inlined$effectMap$1$1; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$special$$inlined$effectMap$1$1;->(Ljava/lang/Object;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$special$$inlined$effectMap$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$special$$inlined$effectMap$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$special$$inlined$retry$1; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$special$$inlined$retry$1;->(Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function1;Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$special$$inlined$retry$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$special$$inlined$retry$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$special$$inlined$retry$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$special$$inlined$retry$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseTypeConverter; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseTypeConverter;->()V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseTypeConverter;->()V +Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_AutoMigration_1_2_Impl; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_AutoMigration_1_2_Impl;->()V +Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl;->()V +PLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl;->access$100(Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl;)Ljava/util/List; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl;->access$202(Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl;Landroidx/sqlite/db/SupportSQLiteDatabase;)Landroidx/sqlite/db/SupportSQLiteDatabase; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl;->access$300(Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl;Landroidx/sqlite/db/SupportSQLiteDatabase;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl;->access$400(Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl;)Ljava/util/List; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl;->createInvalidationTracker()Landroidx/room/InvalidationTracker; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl;->createOpenHelper(Landroidx/room/DatabaseConfiguration;)Landroidx/sqlite/db/SupportSQLiteOpenHelper; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl;->generatorDao()Lcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl;->getAutoMigrations(Ljava/util/Map;)Ljava/util/List; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl;->getRequiredAutoMigrationSpecs()Ljava/util/Set; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl;->getRequiredTypeConverters()Ljava/util/Map; +Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl$1; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl$1;->(Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl;I)V +PLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl$1;->createAllTables(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +PLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl$1;->onCreate(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl$1;->onOpen(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadInfoDao; +Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadInfoDao_Impl; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadInfoDao_Impl;->getRequiredConverters()Ljava/util/List; +Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadInfoEntity2; +Lcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao; +Lcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl;->-$$Nest$fget__db(Lcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl;)Landroidx/room/RoomDatabase; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl;->-$$Nest$fget__preparedStmtOfRemoveAll(Lcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl;)Landroidx/room/SharedSQLiteStatement; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl;->(Landroidx/room/RoomDatabase;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl;->getAll()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl;->getRequiredConverters()Ljava/util/List; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl;->removeAll(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl$1; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl$1;->(Lcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl;Landroidx/room/RoomDatabase;)V +Lcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl$2; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl$2;->(Lcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl;Landroidx/room/RoomDatabase;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl$2;->createQuery()Ljava/lang/String; +Lcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl$4; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl$4;->(Lcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl$4;->call()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl$4;->call()Lkotlin/Unit; +Lcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl$5; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl$5;->(Lcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl;Landroidx/room/RoomSQLiteQuery;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl$5;->call()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl$5;->call()Ljava/util/List; +PLcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl$5;->finalize()V +Lcom/artemchep/keyguard/android/downloader/worker/AttachmentDownloadAllWorker; +HSPLcom/artemchep/keyguard/android/downloader/worker/AttachmentDownloadAllWorker;->()V +Lcom/artemchep/keyguard/android/downloader/worker/AttachmentDownloadAllWorker$Companion; +HSPLcom/artemchep/keyguard/android/downloader/worker/AttachmentDownloadAllWorker$Companion;->()V +HSPLcom/artemchep/keyguard/android/downloader/worker/AttachmentDownloadAllWorker$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/android/downloader/worker/AttachmentDownloadAllWorker$Companion;->enqueue(Landroid/content/Context;)Landroidx/work/Operation; +Lcom/artemchep/keyguard/android/util/ScreenFlowKt; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt;->access$screenState(Landroid/content/Context;)Lcom/artemchep/keyguard/common/model/Screen; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt;->isScreenOn(Landroid/content/Context;)Z +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt;->screenFlow(Landroid/content/Context;)Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt;->screenState(Landroid/content/Context;)Lcom/artemchep/keyguard/common/model/Screen; +Lcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;Landroid/content/Context;)V +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1;->(Lkotlin/coroutines/Continuation;Landroid/content/Context;)V +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1;->invoke(Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1$1; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1$1;->(Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/coroutines/Continuation;Landroid/content/Context;)V +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1$1$1; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1$1$1;->(Lkotlinx/coroutines/channels/ProducerScope;)V +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1$1$1;->invoke-JP2dKIU(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1$2; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1$2;->(Lkotlinx/coroutines/CancellableContinuation;)V +Lcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$1$1; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$1$1;->(Landroid/content/Context;Lcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$1$broadcastReceiver$1;)V +Lcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$1$broadcastReceiver$1; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$1$broadcastReceiver$1;->(Lkotlin/jvm/functions/Function1;)V +Lcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$2$1; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$2$1;->(Lcom/artemchep/keyguard/common/model/Screen;Landroid/content/Context;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$2$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/worker/SyncWorker; +HSPLcom/artemchep/keyguard/android/worker/SyncWorker;->()V +HSPLcom/artemchep/keyguard/android/worker/SyncWorker;->(Landroid/content/Context;Landroidx/work/WorkerParameters;)V +HSPLcom/artemchep/keyguard/android/worker/SyncWorker;->doWork(Lorg/kodein/di/DI;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/worker/SyncWorker;->getAccountIds()Ljava/util/Set; +Lcom/artemchep/keyguard/android/worker/SyncWorker$Companion; +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$Companion;->()V +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$Companion;->enqueueOnce$default(Lcom/artemchep/keyguard/android/worker/SyncWorker$Companion;Landroid/content/Context;Ljava/util/Set;ILjava/lang/Object;)Landroidx/work/Operation; +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$Companion;->enqueueOnce(Landroid/content/Context;Ljava/util/Set;)Landroidx/work/Operation; +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$Companion;->getConstraints()Landroidx/work/Constraints; +Lcom/artemchep/keyguard/android/worker/SyncWorker$accountIds$2; +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$accountIds$2;->(Lcom/artemchep/keyguard/android/worker/SyncWorker;)V +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$accountIds$2;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$accountIds$2;->invoke()Ljava/util/Set; +Lcom/artemchep/keyguard/android/worker/SyncWorker$accountIds$2$1; +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$accountIds$2$1;->()V +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$accountIds$2$1;->()V +Lcom/artemchep/keyguard/android/worker/SyncWorker$doWork$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$doWork$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/android/worker/SyncWorker$doWork$$inlined$map$1; +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$doWork$$inlined$map$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$doWork$$inlined$map$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$doWork$$inlined$map$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$doWork$$inlined$map$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$doWork$$inlined$map$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/worker/SyncWorker$doWork$1; +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$doWork$1;->(Lcom/artemchep/keyguard/android/worker/SyncWorker;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$doWork$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/worker/util/SessionWorker; +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker;->()V +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker;->(Landroid/content/Context;Landroidx/work/WorkerParameters;)V +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker;->doWork$suspendImpl(Lcom/artemchep/keyguard/android/worker/util/SessionWorker;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker;->doWork(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker;->getDi()Lorg/kodein/di/DI; +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker;->getGetVaultSession()Lcom/artemchep/keyguard/common/usecase/GetVaultSession; +Lcom/artemchep/keyguard/android/worker/util/SessionWorker$Companion; +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker$Companion;->()V +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/android/worker/util/SessionWorker$di$2; +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker$di$2;->(Lcom/artemchep/keyguard/android/worker/util/SessionWorker;)V +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker$di$2;->invoke()Landroid/content/Context; +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker$di$2;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/android/worker/util/SessionWorker$doWork$2$1; +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker$doWork$2$1;->(Lcom/artemchep/keyguard/android/worker/util/SessionWorker;Lcom/artemchep/keyguard/common/model/MasterSession;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker$doWork$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker$doWork$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker$doWork$2$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker$doWork$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/worker/util/SessionWorker$doWork$suspendImpl$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker$doWork$suspendImpl$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/android/worker/util/SessionWorker;)V +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker$doWork$suspendImpl$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker$doWork$suspendImpl$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker$doWork$suspendImpl$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/worker/util/SessionWorker$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/billing/BillingManager; +Lcom/artemchep/keyguard/billing/BillingManagerImpl; +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl;->()V +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl;->(Landroid/content/Context;)V +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl;->getBillingConnectionFlow()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/billing/BillingManagerImpl$Companion; +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$Companion;->()V +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/billing/BillingManagerImpl$billingConnectionFlow$1; +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$billingConnectionFlow$1;->(Lcom/artemchep/keyguard/billing/BillingManagerImpl;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/build/BuildKonfig; +HSPLcom/artemchep/keyguard/build/BuildKonfig;->()V +HSPLcom/artemchep/keyguard/build/BuildKonfig;->()V +HSPLcom/artemchep/keyguard/build/BuildKonfig;->getBuildType()Ljava/lang/String; +Lcom/artemchep/keyguard/common/AppWorker; +Lcom/artemchep/keyguard/common/AppWorker$Feature; +HSPLcom/artemchep/keyguard/common/AppWorker$Feature;->$values()[Lcom/artemchep/keyguard/common/AppWorker$Feature; +HSPLcom/artemchep/keyguard/common/AppWorker$Feature;->()V +HSPLcom/artemchep/keyguard/common/AppWorker$Feature;->(Ljava/lang/String;I)V +Lcom/artemchep/keyguard/common/AppWorkerIm; +HSPLcom/artemchep/keyguard/common/AppWorkerIm;->()V +HSPLcom/artemchep/keyguard/common/AppWorkerIm;->(Lcom/artemchep/keyguard/common/usecase/GetVaultSession;)V +HSPLcom/artemchep/keyguard/common/AppWorkerIm;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/AppWorkerIm;->access$launchSyncManagerWhenAvailable(Lcom/artemchep/keyguard/common/AppWorkerIm;Lkotlinx/coroutines/CoroutineScope;)Lkotlinx/coroutines/Job; +HSPLcom/artemchep/keyguard/common/AppWorkerIm;->launch(Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/flow/Flow;)Lkotlinx/coroutines/Job; +HSPLcom/artemchep/keyguard/common/AppWorkerIm;->launchSyncManagerWhenAvailable(Lkotlinx/coroutines/CoroutineScope;)Lkotlinx/coroutines/Job; +Lcom/artemchep/keyguard/common/AppWorkerIm$launch$1; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launch$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/common/AppWorkerIm;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launch$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launch$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/AppWorkerIm$launch$1$1; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launch$1$1;->(Lcom/artemchep/keyguard/common/AppWorkerIm;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launch$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launch$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launch$1$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launch$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$2; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$2;->()V +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$2;->()V +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$2;->invoke(Lcom/artemchep/keyguard/common/NotificationsWorker;Lcom/artemchep/keyguard/common/NotificationsWorker;)Ljava/lang/Boolean; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$3; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$3;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$3;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$3;->invoke(Lcom/artemchep/keyguard/common/NotificationsWorker;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$3$1; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$3$1;->(Lcom/artemchep/keyguard/common/NotificationsWorker;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$3$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$3$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$3$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$3$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$lambda$0$$inlined$instance$default$1; +PLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$lambda$0$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/AppWorkerIm$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/NotificationsWorker; +Lcom/artemchep/keyguard/common/R$font; +Lcom/artemchep/keyguard/common/R$string; +Lcom/artemchep/keyguard/common/io/IOBindKt; +HSPLcom/artemchep/keyguard/common/io/IOBindKt;->bind(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOExceptionKt; +HSPLcom/artemchep/keyguard/common/io/IOExceptionKt;->attempt(Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/io/IOExceptionKt$attempt$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/common/io/IOExceptionKt$attempt$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/common/io/IOExceptionKt$attempt$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/io/IOExceptionKt$attempt$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOExceptionKt$attempt$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOExceptionKt$attempt$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOFactoryKt; +HSPLcom/artemchep/keyguard/common/io/IOFactoryKt;->()V +HSPLcom/artemchep/keyguard/common/io/IOFactoryKt;->io(Ljava/lang/Object;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/io/IOFactoryKt$io$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/common/io/IOFactoryKt$io$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Ljava/lang/Object;)V +HSPLcom/artemchep/keyguard/common/io/IOFactoryKt$io$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/io/IOFactoryKt$io$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOFactoryKt$io$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOFactoryKt$io$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOFlattenKt; +HSPLcom/artemchep/keyguard/common/io/IOFlattenKt;->flatten(Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/common/io/IOFlattenKt;->flattenMap(Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/io/IOFlattenKt$flatten$$inlined$flatMap$1; +HSPLcom/artemchep/keyguard/common/io/IOFlattenKt$flatten$$inlined$flatMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/io/IOFlattenKt$flatten$$inlined$flatMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/io/IOFlattenKt$flatten$$inlined$flatMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOFlattenKt$flatten$$inlined$flatMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOFlattenKt$flatten$$inlined$flatMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOFlattenKt$flattenMap$$inlined$effectMap$1; +HSPLcom/artemchep/keyguard/common/io/IOFlattenKt$flattenMap$$inlined$effectMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/io/IOFlattenKt$flattenMap$$inlined$effectMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/io/IOFlattenKt$flattenMap$$inlined$effectMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOFlattenKt$flattenMap$$inlined$effectMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOFlattenKt$flattenMap$$inlined$effectMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOFlowKt; +HSPLcom/artemchep/keyguard/common/io/IOFlowKt;->toIO(Lkotlinx/coroutines/flow/Flow;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/io/IOFlowKt$toIO$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/common/io/IOFlowKt$toIO$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/common/io/IOFlowKt$toIO$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/io/IOFlowKt$toIO$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOFlowKt$toIO$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOFlowKt$toIO$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOForkKt; +HSPLcom/artemchep/keyguard/common/io/IOForkKt;->dispatchOn(Lkotlin/jvm/functions/Function1;Lkotlinx/coroutines/CoroutineDispatcher;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/io/IOForkKt$dispatchOn$1; +HSPLcom/artemchep/keyguard/common/io/IOForkKt$dispatchOn$1;->(Lkotlinx/coroutines/CoroutineDispatcher;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/io/IOForkKt$dispatchOn$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/io/IOForkKt$dispatchOn$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOForkKt$dispatchOn$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOForkKt$dispatchOn$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOForkKt$dispatchOn$1$1; +HSPLcom/artemchep/keyguard/common/io/IOForkKt$dispatchOn$1$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/io/IOForkKt$dispatchOn$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/io/IOForkKt$dispatchOn$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOForkKt$dispatchOn$1$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOForkKt$dispatchOn$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOLaunchInKt; +HSPLcom/artemchep/keyguard/common/io/IOLaunchInKt;->launchIn(Lkotlin/jvm/functions/Function1;Lkotlinx/coroutines/CoroutineScope;)Lkotlinx/coroutines/Job; +Lcom/artemchep/keyguard/common/io/IOLaunchInKt$launchIn$1; +HSPLcom/artemchep/keyguard/common/io/IOLaunchInKt$launchIn$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/io/IOLaunchInKt$launchIn$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/io/IOLaunchInKt$launchIn$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOMonadKt; +HSPLcom/artemchep/keyguard/common/io/IOMonadKt;->parallel$default(Ljava/util/List;Lkotlin/coroutines/CoroutineContext;IILjava/lang/Object;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/common/io/IOMonadKt;->parallel(Ljava/util/List;Lkotlin/coroutines/CoroutineContext;I)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/io/IOMonadKt$flatMap$1; +HSPLcom/artemchep/keyguard/common/io/IOMonadKt$flatMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/io/IOMonadKt$flatMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/io/IOMonadKt$flatMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOMonadKt$flatMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOMonadKt$flatMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOMonadKt$parallel$1; +HSPLcom/artemchep/keyguard/common/io/IOMonadKt$parallel$1;->(Ljava/util/List;ILkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/io/IOMonadKt$parallel$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/io/IOMonadKt$parallel$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOMonadKt$parallel$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOMonadKt$parallel$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOMonadKt$parallel$1$1; +HSPLcom/artemchep/keyguard/common/io/IOMonadKt$parallel$1$1;->(Ljava/util/List;ILkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/io/IOMonadKt$parallel$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/io/IOMonadKt$parallel$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOMonadKt$parallel$1$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOMonadKt$parallel$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOSharedKt; +HSPLcom/artemchep/keyguard/common/io/IOSharedKt;->shared$default(Lkotlin/jvm/functions/Function1;ZILjava/lang/Object;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/common/io/IOSharedKt;->shared(Lkotlin/jvm/functions/Function1;Z)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/io/IOSharedKt$shared$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/common/io/IOSharedKt$shared$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Lkotlin/jvm/internal/Ref$ObjectRef;Lkotlin/jvm/functions/Function1;ZLkotlin/jvm/internal/Ref$ObjectRef;)V +HSPLcom/artemchep/keyguard/common/io/IOSharedKt$shared$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/io/IOSharedKt$shared$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOSharedKt$shared$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOSharedKt$shared$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOSharedKt$shared$1$2$1; +HSPLcom/artemchep/keyguard/common/io/IOSharedKt$shared$1$2$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/internal/Ref$ObjectRef;Lkotlin/jvm/internal/Ref$ObjectRef;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/io/IOSharedKt$shared$1$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/io/IOSharedKt$shared$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOWidenKt; +HSPLcom/artemchep/keyguard/common/io/IOWidenKt;->nullable(Lkotlinx/coroutines/flow/Flow;)Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/io/IOWidenKt$nullable$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/io/IOWidenKt$nullable$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/common/io/IOWidenKt$nullable$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOWidenKt$nullable$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/common/io/IOWidenKt$nullable$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/common/io/IOWidenKt$nullable$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOWidenKt$nullable$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/common/io/IOWidenKt$nullable$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/common/io/IOWidenKt$nullable$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/common/model/AccountId; +Lcom/artemchep/keyguard/common/model/AccountTask; +HSPLcom/artemchep/keyguard/common/model/AccountTask;->$values()[Lcom/artemchep/keyguard/common/model/AccountTask; +HSPLcom/artemchep/keyguard/common/model/AccountTask;->()V +HSPLcom/artemchep/keyguard/common/model/AccountTask;->(Ljava/lang/String;I)V +Lcom/artemchep/keyguard/common/model/AddCipherOpenedHistoryRequest; +Lcom/artemchep/keyguard/common/model/AddCipherUsedPasskeyHistoryRequest; +Lcom/artemchep/keyguard/common/model/AddPasskeyCipherRequest; +Lcom/artemchep/keyguard/common/model/AddUriCipherRequest; +Lcom/artemchep/keyguard/common/model/AnyMap; +HSPLcom/artemchep/keyguard/common/model/AnyMap;->()V +HSPLcom/artemchep/keyguard/common/model/AnyMap;->(Ljava/util/Map;)V +HSPLcom/artemchep/keyguard/common/model/AnyMap;->getValue()Ljava/util/Map; +Lcom/artemchep/keyguard/common/model/AppColors; +HSPLcom/artemchep/keyguard/common/model/AppColors;->$values()[Lcom/artemchep/keyguard/common/model/AppColors; +HSPLcom/artemchep/keyguard/common/model/AppColors;->()V +HSPLcom/artemchep/keyguard/common/model/AppColors;->(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;I)V +HSPLcom/artemchep/keyguard/common/model/AppColors;->getKey()Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/model/AppColors;->values()[Lcom/artemchep/keyguard/common/model/AppColors; +Lcom/artemchep/keyguard/common/model/AppFont; +HSPLcom/artemchep/keyguard/common/model/AppFont;->$values()[Lcom/artemchep/keyguard/common/model/AppFont; +HSPLcom/artemchep/keyguard/common/model/AppFont;->()V +HSPLcom/artemchep/keyguard/common/model/AppFont;->(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/common/model/AppFont;->getKey()Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/model/AppFont;->values()[Lcom/artemchep/keyguard/common/model/AppFont; +Lcom/artemchep/keyguard/common/model/AppTheme; +HSPLcom/artemchep/keyguard/common/model/AppTheme;->$values()[Lcom/artemchep/keyguard/common/model/AppTheme; +HSPLcom/artemchep/keyguard/common/model/AppTheme;->()V +HSPLcom/artemchep/keyguard/common/model/AppTheme;->(Ljava/lang/String;ILjava/lang/String;)V +HSPLcom/artemchep/keyguard/common/model/AppTheme;->getKey()Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/model/AppTheme;->values()[Lcom/artemchep/keyguard/common/model/AppTheme; +Lcom/artemchep/keyguard/common/model/AuthResult; +HSPLcom/artemchep/keyguard/common/model/AuthResult;->()V +HSPLcom/artemchep/keyguard/common/model/AuthResult;->(Lcom/artemchep/keyguard/common/model/MasterKey;Lcom/artemchep/keyguard/common/model/FingerprintPassword;)V +HSPLcom/artemchep/keyguard/common/model/AuthResult;->getKey()Lcom/artemchep/keyguard/common/model/MasterKey; +PLcom/artemchep/keyguard/common/model/AuthResult;->getToken()Lcom/artemchep/keyguard/common/model/FingerprintPassword; +Lcom/artemchep/keyguard/common/model/AutofillHint; +HSPLcom/artemchep/keyguard/common/model/AutofillHint;->$values()[Lcom/artemchep/keyguard/common/model/AutofillHint; +HSPLcom/artemchep/keyguard/common/model/AutofillHint;->()V +HSPLcom/artemchep/keyguard/common/model/AutofillHint;->(Ljava/lang/String;I)V +HSPLcom/artemchep/keyguard/common/model/AutofillHint;->values()[Lcom/artemchep/keyguard/common/model/AutofillHint; +Lcom/artemchep/keyguard/common/model/AutofillTarget; +Lcom/artemchep/keyguard/common/model/BarcodeImageRequest; +Lcom/artemchep/keyguard/common/model/BiometricStatus; +Lcom/artemchep/keyguard/common/model/BiometricStatus$Available; +Lcom/artemchep/keyguard/common/model/BiometricStatus$Unavailable; +HSPLcom/artemchep/keyguard/common/model/BiometricStatus$Unavailable;->()V +HSPLcom/artemchep/keyguard/common/model/BiometricStatus$Unavailable;->()V +Lcom/artemchep/keyguard/common/model/CheckPasswordLeakRequest; +Lcom/artemchep/keyguard/common/model/CheckPasswordSetLeakRequest; +Lcom/artemchep/keyguard/common/model/CheckUsernameLeakRequest; +Lcom/artemchep/keyguard/common/model/CipherFieldSwitchToggleRequest; +Lcom/artemchep/keyguard/common/model/CipherOpenedHistoryMode; +Lcom/artemchep/keyguard/common/model/DAccount; +Lcom/artemchep/keyguard/common/model/DAccountStatus; +HSPLcom/artemchep/keyguard/common/model/DAccountStatus;->()V +HSPLcom/artemchep/keyguard/common/model/DAccountStatus;->(Lcom/artemchep/keyguard/common/model/DAccountStatus$Error;Lcom/artemchep/keyguard/common/model/DAccountStatus$Pending;Ljava/util/List;)V +HSPLcom/artemchep/keyguard/common/model/DAccountStatus;->(Lcom/artemchep/keyguard/common/model/DAccountStatus$Error;Lcom/artemchep/keyguard/common/model/DAccountStatus$Pending;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/common/model/DAccountStatus;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/common/model/DAccountStatus;->getError()Lcom/artemchep/keyguard/common/model/DAccountStatus$Error; +HSPLcom/artemchep/keyguard/common/model/DAccountStatus;->getPending()Lcom/artemchep/keyguard/common/model/DAccountStatus$Pending; +HSPLcom/artemchep/keyguard/common/model/DAccountStatus;->getPendingPermissions()Ljava/util/List; +Lcom/artemchep/keyguard/common/model/DAccountStatus$Error; +HSPLcom/artemchep/keyguard/common/model/DAccountStatus$Error;->()V +HSPLcom/artemchep/keyguard/common/model/DAccountStatus$Error;->(I)V +Lcom/artemchep/keyguard/common/model/DAccountStatus$Pending; +HSPLcom/artemchep/keyguard/common/model/DAccountStatus$Pending;->()V +HSPLcom/artemchep/keyguard/common/model/DAccountStatus$Pending;->(I)V +Lcom/artemchep/keyguard/common/model/DCipherOpenedHistory; +Lcom/artemchep/keyguard/common/model/DCollection; +Lcom/artemchep/keyguard/common/model/DFilter; +HSPLcom/artemchep/keyguard/common/model/DFilter;->()V +Lcom/artemchep/keyguard/common/model/DFilter$All; +HSPLcom/artemchep/keyguard/common/model/DFilter$All;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$All;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$All;->toString()Ljava/lang/String; +Lcom/artemchep/keyguard/common/model/DFilter$All$1; +HSPLcom/artemchep/keyguard/common/model/DFilter$All$1;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$All$1;->()V +Lcom/artemchep/keyguard/common/model/DFilter$And; +HSPLcom/artemchep/keyguard/common/model/DFilter$And;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$And;->(Ljava/util/Collection;)V +HSPLcom/artemchep/keyguard/common/model/DFilter$And;->getFilters()Ljava/util/Collection; +Lcom/artemchep/keyguard/common/model/DFilter$And$Companion; +HSPLcom/artemchep/keyguard/common/model/DFilter$And$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$And$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/model/DFilter$ByAttachments; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByAttachments;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByAttachments;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByAttachments;->getKey()Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByAttachments;->prepare(Lorg/kodein/di/DirectDI;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/model/DFilter$ByAttachments$1; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByAttachments$1;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByAttachments$1;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByAttachments$prepare$2; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByAttachments$prepare$2;->(Ljava/lang/Object;)V +Lcom/artemchep/keyguard/common/model/DFilter$ByDuplicateWebsites; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByDuplicateWebsites;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByDuplicateWebsites;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByDuplicateWebsites$1; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByDuplicateWebsites$1;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByDuplicateWebsites$1;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByError; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByError;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByError;->(Z)V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByError;->getKey()Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByError;->prepare(Lorg/kodein/di/DirectDI;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/model/DFilter$ByError$$serializer; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByError$$serializer;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByError$$serializer;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByError$$serializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lcom/artemchep/keyguard/common/model/DFilter$ByError$Companion; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByError$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByError$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/model/DFilter$ByError$prepare$2; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByError$prepare$2;->(Ljava/lang/Object;)V +Lcom/artemchep/keyguard/common/model/DFilter$ByExpiring; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByExpiring;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByExpiring;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByExpiring$1; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByExpiring$1;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByExpiring$1;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ById; +HSPLcom/artemchep/keyguard/common/model/DFilter$ById;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ById;->(Ljava/lang/String;Lcom/artemchep/keyguard/common/model/DFilter$ById$What;)V +HSPLcom/artemchep/keyguard/common/model/DFilter$ById;->getId()Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/model/DFilter$ById;->getKey()Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/model/DFilter$ById;->getWhat()Lcom/artemchep/keyguard/common/model/DFilter$ById$What; +Lcom/artemchep/keyguard/common/model/DFilter$ById$$serializer; +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$$serializer;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$$serializer;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$$serializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lcom/artemchep/keyguard/common/model/DFilter$ById$Companion; +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/model/DFilter$ById$What; +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$What;->$values()[Lcom/artemchep/keyguard/common/model/DFilter$ById$What; +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$What;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$What;->(Ljava/lang/String;I)V +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$What;->access$get$cachedSerializer$delegate$cp()Lkotlin/Lazy; +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$What;->values()[Lcom/artemchep/keyguard/common/model/DFilter$ById$What; +Lcom/artemchep/keyguard/common/model/DFilter$ById$What$Companion; +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$What$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$What$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$What$Companion;->get$cachedSerializer()Lkotlinx/serialization/KSerializer; +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$What$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/common/model/DFilter$ById$What$Companion$1; +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$What$Companion$1;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$What$Companion$1;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$What$Companion$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$What$Companion$1;->invoke()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/common/model/DFilter$ByIncomplete; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByIncomplete;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByIncomplete;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByIncomplete$1; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByIncomplete$1;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByIncomplete$1;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByOtp; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByOtp;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByOtp;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByOtp;->getKey()Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByOtp;->prepare(Lorg/kodein/di/DirectDI;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/model/DFilter$ByOtp$1; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByOtp$1;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByOtp$1;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByOtp$prepare$2; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByOtp$prepare$2;->(Ljava/lang/Object;)V +Lcom/artemchep/keyguard/common/model/DFilter$ByPasskeyWebsites; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasskeyWebsites;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasskeyWebsites;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByPasskeyWebsites$1; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasskeyWebsites$1;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasskeyWebsites$1;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByPasskeys; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasskeys;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasskeys;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasskeys;->getKey()Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasskeys;->prepare(Lorg/kodein/di/DirectDI;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/model/DFilter$ByPasskeys$1; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasskeys$1;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasskeys$1;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByPasskeys$prepare$2; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasskeys$prepare$2;->(Ljava/lang/Object;)V +Lcom/artemchep/keyguard/common/model/DFilter$ByPasswordDuplicates; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasswordDuplicates;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasswordDuplicates;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByPasswordDuplicates$1; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasswordDuplicates$1;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasswordDuplicates$1;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByPasswordPwned; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasswordPwned;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasswordPwned;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByPasswordPwned$1; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasswordPwned$1;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasswordPwned$1;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByPasswordStrength; +Lcom/artemchep/keyguard/common/model/DFilter$ByPasswordStrength$$serializer; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasswordStrength$$serializer;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasswordStrength$$serializer;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasswordStrength$$serializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lcom/artemchep/keyguard/common/model/DFilter$ByPasswordValue; +Lcom/artemchep/keyguard/common/model/DFilter$ByPasswordValue$$serializer; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasswordValue$$serializer;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasswordValue$$serializer;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasswordValue$$serializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lcom/artemchep/keyguard/common/model/DFilter$ByReprompt; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByReprompt;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByReprompt;->(Z)V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByReprompt;->getKey()Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByReprompt;->prepare(Lorg/kodein/di/DirectDI;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/model/DFilter$ByReprompt$$serializer; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByReprompt$$serializer;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByReprompt$$serializer;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByReprompt$$serializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lcom/artemchep/keyguard/common/model/DFilter$ByReprompt$Companion; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByReprompt$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByReprompt$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/model/DFilter$ByReprompt$prepare$2; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByReprompt$prepare$2;->(Ljava/lang/Object;)V +Lcom/artemchep/keyguard/common/model/DFilter$BySync; +HSPLcom/artemchep/keyguard/common/model/DFilter$BySync;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$BySync;->(Z)V +HSPLcom/artemchep/keyguard/common/model/DFilter$BySync;->getKey()Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/model/DFilter$BySync;->prepare(Lorg/kodein/di/DirectDI;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/model/DFilter$BySync$$serializer; +HSPLcom/artemchep/keyguard/common/model/DFilter$BySync$$serializer;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$BySync$$serializer;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$BySync$$serializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lcom/artemchep/keyguard/common/model/DFilter$BySync$Companion; +HSPLcom/artemchep/keyguard/common/model/DFilter$BySync$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$BySync$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/model/DFilter$BySync$prepare$2; +HSPLcom/artemchep/keyguard/common/model/DFilter$BySync$prepare$2;->(Ljava/lang/Object;)V +Lcom/artemchep/keyguard/common/model/DFilter$ByTfaWebsites; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByTfaWebsites;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByTfaWebsites;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByTfaWebsites$1; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByTfaWebsites$1;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByTfaWebsites$1;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByType; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByType;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByType;->(Lcom/artemchep/keyguard/common/model/DSecret$Type;)V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByType;->getKey()Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByType;->prepare(Lorg/kodein/di/DirectDI;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/model/DFilter$ByType$$serializer; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByType$$serializer;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByType$$serializer;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByType$$serializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lcom/artemchep/keyguard/common/model/DFilter$ByType$Companion; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByType$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByType$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/model/DFilter$ByType$prepare$2; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByType$prepare$2;->(Ljava/lang/Object;)V +Lcom/artemchep/keyguard/common/model/DFilter$ByUnsecureWebsites; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByUnsecureWebsites;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByUnsecureWebsites;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByUnsecureWebsites$1; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByUnsecureWebsites$1;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByUnsecureWebsites$1;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByWebsitePwned; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByWebsitePwned;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByWebsitePwned;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByWebsitePwned$1; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByWebsitePwned$1;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByWebsitePwned$1;->()V +Lcom/artemchep/keyguard/common/model/DFilter$Companion; +HSPLcom/artemchep/keyguard/common/model/DFilter$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$Companion;->_findOne(Lcom/artemchep/keyguard/common/model/DFilter;Ljava/lang/Class;Lkotlin/jvm/functions/Function1;)Larrow/core/Either; +HSPLcom/artemchep/keyguard/common/model/DFilter$Companion;->findOne$default(Lcom/artemchep/keyguard/common/model/DFilter$Companion;Lcom/artemchep/keyguard/common/model/DFilter;Ljava/lang/Class;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/model/DFilter$Companion;->findOne(Lcom/artemchep/keyguard/common/model/DFilter;Ljava/lang/Class;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/model/DFilter$Companion$findOne$2; +HSPLcom/artemchep/keyguard/common/model/DFilter$Companion$findOne$2;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$Companion$findOne$2;->()V +Lcom/artemchep/keyguard/common/model/DFilter$Or; +Lcom/artemchep/keyguard/common/model/DFilter$Primitive; +Lcom/artemchep/keyguard/common/model/DFolder; +Lcom/artemchep/keyguard/common/model/DFolderTree; +Lcom/artemchep/keyguard/common/model/DGeneratorEmailRelay; +Lcom/artemchep/keyguard/common/model/DGeneratorHistory; +Lcom/artemchep/keyguard/common/model/DHibpC; +Lcom/artemchep/keyguard/common/model/DMeta; +Lcom/artemchep/keyguard/common/model/DOrganization; +Lcom/artemchep/keyguard/common/model/DProfile; +Lcom/artemchep/keyguard/common/model/DSecret; +HSPLcom/artemchep/keyguard/common/model/DSecret;->()V +Lcom/artemchep/keyguard/common/model/DSecret$Companion; +HSPLcom/artemchep/keyguard/common/model/DSecret$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/model/DSecret$Field$LinkedId; +HSPLcom/artemchep/keyguard/common/model/DSecret$Field$LinkedId;->$values()[Lcom/artemchep/keyguard/common/model/DSecret$Field$LinkedId; +HSPLcom/artemchep/keyguard/common/model/DSecret$Field$LinkedId;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret$Field$LinkedId;->(Ljava/lang/String;ILcom/artemchep/keyguard/common/model/DSecret$Type;)V +HSPLcom/artemchep/keyguard/common/model/DSecret$Field$LinkedId;->values()[Lcom/artemchep/keyguard/common/model/DSecret$Field$LinkedId; +Lcom/artemchep/keyguard/common/model/DSecret$Identity; +HSPLcom/artemchep/keyguard/common/model/DSecret$Identity;->()V +Lcom/artemchep/keyguard/common/model/DSecret$Identity$Companion; +HSPLcom/artemchep/keyguard/common/model/DSecret$Identity$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret$Identity$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/model/DSecret$Login; +HSPLcom/artemchep/keyguard/common/model/DSecret$Login;->()V +Lcom/artemchep/keyguard/common/model/DSecret$Login$Companion; +HSPLcom/artemchep/keyguard/common/model/DSecret$Login$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret$Login$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/model/DSecret$Login$Fido2Credentials; +Lcom/artemchep/keyguard/common/model/DSecret$Type; +HSPLcom/artemchep/keyguard/common/model/DSecret$Type;->$values()[Lcom/artemchep/keyguard/common/model/DSecret$Type; +HSPLcom/artemchep/keyguard/common/model/DSecret$Type;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret$Type;->(Ljava/lang/String;I)V +HSPLcom/artemchep/keyguard/common/model/DSecret$Type;->values()[Lcom/artemchep/keyguard/common/model/DSecret$Type; +Lcom/artemchep/keyguard/common/model/DSecret$Uri; +Lcom/artemchep/keyguard/common/model/DSecret$Uri$MatchType; +HSPLcom/artemchep/keyguard/common/model/DSecret$Uri$MatchType;->$values()[Lcom/artemchep/keyguard/common/model/DSecret$Uri$MatchType; +HSPLcom/artemchep/keyguard/common/model/DSecret$Uri$MatchType;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret$Uri$MatchType;->(Ljava/lang/String;I)V +HSPLcom/artemchep/keyguard/common/model/DSecret$Uri$MatchType;->values()[Lcom/artemchep/keyguard/common/model/DSecret$Uri$MatchType; +Lcom/artemchep/keyguard/common/model/DSecret$Uri$MatchType$Companion; +HSPLcom/artemchep/keyguard/common/model/DSecret$Uri$MatchType$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret$Uri$MatchType$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/model/DSecretDuplicateGroup; +Lcom/artemchep/keyguard/common/model/DSecretFun; +HSPLcom/artemchep/keyguard/common/model/DSecretFun;->iconImageVector(Lcom/artemchep/keyguard/common/model/DSecret$Type;)Landroidx/compose/ui/graphics/vector/ImageVector; +HSPLcom/artemchep/keyguard/common/model/DSecretFun;->titleH(Lcom/artemchep/keyguard/common/model/DSecret$Type;)Ldev/icerock/moko/resources/StringResource; +Lcom/artemchep/keyguard/common/model/DSecretFun$WhenMappings; +HSPLcom/artemchep/keyguard/common/model/DSecretFun$WhenMappings;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address1$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address1$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address1$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address1$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address1$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address1$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address2$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address2$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address2$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address2$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address2$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address2$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address3$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address3$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address3$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address3$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address3$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address3$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$city$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$city$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$city$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$city$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$city$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$city$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$company$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$company$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$company$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$company$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$company$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$company$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$country$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$country$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$country$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$country$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$country$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$country$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$email$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$email$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$email$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$email$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$email$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$email$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$firstName$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$firstName$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$firstName$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$firstName$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$firstName$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$firstName$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$lastName$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$lastName$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$lastName$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$lastName$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$lastName$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$lastName$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$licenseNumber$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$licenseNumber$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$licenseNumber$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$licenseNumber$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$licenseNumber$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$licenseNumber$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$middleName$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$middleName$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$middleName$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$middleName$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$middleName$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$middleName$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$passportNumber$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$passportNumber$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$passportNumber$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$passportNumber$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$passportNumber$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$passportNumber$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$phone$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$phone$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$phone$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$phone$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$phone$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$phone$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$postalCode$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$postalCode$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$postalCode$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$postalCode$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$postalCode$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$postalCode$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$ssn$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$ssn$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$ssn$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$ssn$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$ssn$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$ssn$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$state$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$state$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$state$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$state$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$state$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$state$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$title$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$title$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$title$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$title$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$title$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$title$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$username$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$username$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$username$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$username$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$username$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$username$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$password$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$password$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$password$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$password$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$password$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$password$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$totp$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$totp$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$totp$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$totp$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$totp$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$totp$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$username$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$username$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$username$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$username$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$username$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$username$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$attachments$1; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$attachments$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$attachments$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$attachments$2; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$attachments$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$attachments$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$card$1; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$card$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$card$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$card$2; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$card$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$card$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$favorite$1; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$favorite$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$favorite$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$favorite$2; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$favorite$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$favorite$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$fields$1; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$fields$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$fields$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$fields$2; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$fields$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$fields$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$identity$1; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$identity$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$identity$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$identity$2; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$identity$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$identity$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$login$1; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$login$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$login$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$login$2; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$login$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$login$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$notes$1; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$notes$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$notes$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$notes$2; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$notes$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$notes$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$reprompt$1; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$reprompt$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$reprompt$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$reprompt$2; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$reprompt$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$reprompt$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$type$1; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$type$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$type$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$type$2; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$type$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$type$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$uris$1; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$uris$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$uris$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$uris$2; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$uris$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$uris$2;->()V +Lcom/artemchep/keyguard/common/model/DSend; +Lcom/artemchep/keyguard/common/model/DownloadAttachmentRequest; +Lcom/artemchep/keyguard/common/model/Fingerprint; +HSPLcom/artemchep/keyguard/common/model/Fingerprint;->()V +HSPLcom/artemchep/keyguard/common/model/Fingerprint;->(Lcom/artemchep/keyguard/common/model/FingerprintPassword;Lcom/artemchep/keyguard/common/model/FingerprintBiometric;)V +HSPLcom/artemchep/keyguard/common/model/Fingerprint;->getBiometric()Lcom/artemchep/keyguard/common/model/FingerprintBiometric; +HSPLcom/artemchep/keyguard/common/model/Fingerprint;->getMaster()Lcom/artemchep/keyguard/common/model/FingerprintPassword; +Lcom/artemchep/keyguard/common/model/FingerprintPassword; +HSPLcom/artemchep/keyguard/common/model/FingerprintPassword;->()V +HSPLcom/artemchep/keyguard/common/model/FingerprintPassword;->(Lcom/artemchep/keyguard/common/model/MasterPasswordHash;Lcom/artemchep/keyguard/common/model/MasterPasswordSalt;)V +HSPLcom/artemchep/keyguard/common/model/FingerprintPassword;->getHash()Lcom/artemchep/keyguard/common/model/MasterPasswordHash; +HSPLcom/artemchep/keyguard/common/model/FingerprintPassword;->getSalt()Lcom/artemchep/keyguard/common/model/MasterPasswordSalt; +HSPLcom/artemchep/keyguard/common/model/FingerprintPassword;->hashCode()I +Lcom/artemchep/keyguard/common/model/FolderOwnership2; +Lcom/artemchep/keyguard/common/model/GeneratorContext; +Lcom/artemchep/keyguard/common/model/HasAccountId; +Lcom/artemchep/keyguard/common/model/LinkInfo; +Lcom/artemchep/keyguard/common/model/LinkInfoAndroid; +Lcom/artemchep/keyguard/common/model/LinkInfoExecute; +Lcom/artemchep/keyguard/common/model/LinkInfoLaunch; +Lcom/artemchep/keyguard/common/model/LinkInfoPlatform; +Lcom/artemchep/keyguard/common/model/LinkInfoPlatform$Android; +Lcom/artemchep/keyguard/common/model/Loadable; +Lcom/artemchep/keyguard/common/model/Loadable$Loading; +HSPLcom/artemchep/keyguard/common/model/Loadable$Loading;->()V +HSPLcom/artemchep/keyguard/common/model/Loadable$Loading;->()V +HSPLcom/artemchep/keyguard/common/model/Loadable$Loading;->equals(Ljava/lang/Object;)Z +Lcom/artemchep/keyguard/common/model/Loadable$Ok; +HSPLcom/artemchep/keyguard/common/model/Loadable$Ok;->()V +HSPLcom/artemchep/keyguard/common/model/Loadable$Ok;->(Ljava/lang/Object;)V +HSPLcom/artemchep/keyguard/common/model/Loadable$Ok;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/common/model/Loadable$Ok;->getValue()Ljava/lang/Object; +Lcom/artemchep/keyguard/common/model/Loadable$Ok$Companion; +HSPLcom/artemchep/keyguard/common/model/Loadable$Ok$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/Loadable$Ok$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/model/MasterKey; +HSPLcom/artemchep/keyguard/common/model/MasterKey;->()V +HSPLcom/artemchep/keyguard/common/model/MasterKey;->([B)V +HSPLcom/artemchep/keyguard/common/model/MasterKey;->getByteArray()[B +HSPLcom/artemchep/keyguard/common/model/MasterKey;->hashCode()I +Lcom/artemchep/keyguard/common/model/MasterPassword; +HSPLcom/artemchep/keyguard/common/model/MasterPassword;->([B)V +HSPLcom/artemchep/keyguard/common/model/MasterPassword;->box-impl([B)Lcom/artemchep/keyguard/common/model/MasterPassword; +HSPLcom/artemchep/keyguard/common/model/MasterPassword;->constructor-impl([B)[B +HSPLcom/artemchep/keyguard/common/model/MasterPassword;->unbox-impl()[B +Lcom/artemchep/keyguard/common/model/MasterPasswordHash; +HSPLcom/artemchep/keyguard/common/model/MasterPasswordHash;->()V +HSPLcom/artemchep/keyguard/common/model/MasterPasswordHash;->([B)V +HSPLcom/artemchep/keyguard/common/model/MasterPasswordHash;->getByteArray()[B +HSPLcom/artemchep/keyguard/common/model/MasterPasswordHash;->hashCode()I +Lcom/artemchep/keyguard/common/model/MasterPasswordSalt; +HSPLcom/artemchep/keyguard/common/model/MasterPasswordSalt;->()V +HSPLcom/artemchep/keyguard/common/model/MasterPasswordSalt;->([B)V +HSPLcom/artemchep/keyguard/common/model/MasterPasswordSalt;->getByteArray()[B +HSPLcom/artemchep/keyguard/common/model/MasterPasswordSalt;->hashCode()I +Lcom/artemchep/keyguard/common/model/MasterSession; +Lcom/artemchep/keyguard/common/model/MasterSession$Empty; +HSPLcom/artemchep/keyguard/common/model/MasterSession$Empty;->()V +HSPLcom/artemchep/keyguard/common/model/MasterSession$Empty;->(Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/common/model/MasterSession$Empty;->(Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/common/model/MasterSession$Empty;->equals(Ljava/lang/Object;)Z +Lcom/artemchep/keyguard/common/model/MasterSession$Empty$Companion; +HSPLcom/artemchep/keyguard/common/model/MasterSession$Empty$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/MasterSession$Empty$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/model/MasterSession$Key; +HSPLcom/artemchep/keyguard/common/model/MasterSession$Key;->()V +HSPLcom/artemchep/keyguard/common/model/MasterSession$Key;->(Lcom/artemchep/keyguard/common/model/MasterKey;Lorg/kodein/di/DI;Lcom/artemchep/keyguard/common/model/MasterSession$Key$Origin;Lkotlinx/datetime/Instant;)V +HSPLcom/artemchep/keyguard/common/model/MasterSession$Key;->getDi()Lorg/kodein/di/DI; +HSPLcom/artemchep/keyguard/common/model/MasterSession$Key;->getMasterKey()Lcom/artemchep/keyguard/common/model/MasterKey; +Lcom/artemchep/keyguard/common/model/MasterSession$Key$Authenticated; +HSPLcom/artemchep/keyguard/common/model/MasterSession$Key$Authenticated;->()V +HSPLcom/artemchep/keyguard/common/model/MasterSession$Key$Authenticated;->()V +Lcom/artemchep/keyguard/common/model/MasterSession$Key$Companion; +HSPLcom/artemchep/keyguard/common/model/MasterSession$Key$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/MasterSession$Key$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/model/MasterSession$Key$Origin; +Lcom/artemchep/keyguard/common/model/NavAnimation; +HSPLcom/artemchep/keyguard/common/model/NavAnimation;->$values()[Lcom/artemchep/keyguard/common/model/NavAnimation; +HSPLcom/artemchep/keyguard/common/model/NavAnimation;->()V +HSPLcom/artemchep/keyguard/common/model/NavAnimation;->(Ljava/lang/String;ILjava/lang/String;Ldev/icerock/moko/resources/StringResource;)V +HSPLcom/artemchep/keyguard/common/model/NavAnimation;->getKey()Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/model/NavAnimation;->values()[Lcom/artemchep/keyguard/common/model/NavAnimation; +Lcom/artemchep/keyguard/common/model/NavAnimation$Companion; +HSPLcom/artemchep/keyguard/common/model/NavAnimation$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/NavAnimation$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/common/model/NavAnimation$Companion;->getDefault()Lcom/artemchep/keyguard/common/model/NavAnimation; +Lcom/artemchep/keyguard/common/model/PasswordGeneratorConfig; +Lcom/artemchep/keyguard/common/model/PasswordGeneratorConfig$Passphrase; +Lcom/artemchep/keyguard/common/model/PasswordPwnage; +Lcom/artemchep/keyguard/common/model/PasswordStrength; +Lcom/artemchep/keyguard/common/model/PersistedSession; +Lcom/artemchep/keyguard/common/model/Product; +Lcom/artemchep/keyguard/common/model/RemoveAttachmentRequest; +Lcom/artemchep/keyguard/common/model/Screen; +HSPLcom/artemchep/keyguard/common/model/Screen;->()V +HSPLcom/artemchep/keyguard/common/model/Screen;->()V +HSPLcom/artemchep/keyguard/common/model/Screen;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/model/Screen$On; +HSPLcom/artemchep/keyguard/common/model/Screen$On;->()V +HSPLcom/artemchep/keyguard/common/model/Screen$On;->()V +HSPLcom/artemchep/keyguard/common/model/Screen$On;->equals(Ljava/lang/Object;)Z +Lcom/artemchep/keyguard/common/model/Subscription; +Lcom/artemchep/keyguard/common/model/TotpCode; +Lcom/artemchep/keyguard/common/model/TotpToken; +Lcom/artemchep/keyguard/common/model/VaultState; +Lcom/artemchep/keyguard/common/model/VaultState$Create; +HSPLcom/artemchep/keyguard/common/model/VaultState$Create;->()V +HSPLcom/artemchep/keyguard/common/model/VaultState$Create;->(Lcom/artemchep/keyguard/common/model/VaultState$Create$WithPassword;Lcom/artemchep/keyguard/common/model/VaultState$Create$WithBiometric;)V +HSPLcom/artemchep/keyguard/common/model/VaultState$Create;->getCreateWithMasterPassword()Lcom/artemchep/keyguard/common/model/VaultState$Create$WithPassword; +HSPLcom/artemchep/keyguard/common/model/VaultState$Create;->getCreateWithMasterPasswordAndBiometric()Lcom/artemchep/keyguard/common/model/VaultState$Create$WithBiometric; +Lcom/artemchep/keyguard/common/model/VaultState$Create$WithBiometric; +Lcom/artemchep/keyguard/common/model/VaultState$Create$WithPassword; +HSPLcom/artemchep/keyguard/common/model/VaultState$Create$WithPassword;->()V +HSPLcom/artemchep/keyguard/common/model/VaultState$Create$WithPassword;->(Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/common/model/VaultState$Create$WithPassword;->getGetCreateIo()Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/model/VaultState$Loading; +HSPLcom/artemchep/keyguard/common/model/VaultState$Loading;->()V +HSPLcom/artemchep/keyguard/common/model/VaultState$Loading;->()V +HSPLcom/artemchep/keyguard/common/model/VaultState$Loading;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/common/model/VaultState$Loading;->hashCode()I +Lcom/artemchep/keyguard/common/model/VaultState$Main; +HSPLcom/artemchep/keyguard/common/model/VaultState$Main;->()V +PLcom/artemchep/keyguard/common/model/VaultState$Main;->(Lcom/artemchep/keyguard/common/model/MasterKey;Lcom/artemchep/keyguard/common/model/VaultState$Main$ChangePassword;Lorg/kodein/di/DI;)V +HSPLcom/artemchep/keyguard/common/model/VaultState$Main;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/common/model/VaultState$Main;->getDi()Lorg/kodein/di/DI; +HSPLcom/artemchep/keyguard/common/model/VaultState$Main;->hashCode()I +Lcom/artemchep/keyguard/common/model/VaultState$Main$ChangePassword; +HSPLcom/artemchep/keyguard/common/model/VaultState$Main$ChangePassword;->()V +PLcom/artemchep/keyguard/common/model/VaultState$Main$ChangePassword;->(Ljava/lang/Object;Lcom/artemchep/keyguard/common/model/VaultState$Main$ChangePassword$WithPassword;Lcom/artemchep/keyguard/common/model/VaultState$Main$ChangePassword$WithBiometric;)V +HSPLcom/artemchep/keyguard/common/model/VaultState$Main$ChangePassword;->hashCode()I +Lcom/artemchep/keyguard/common/model/VaultState$Main$ChangePassword$WithPassword; +HSPLcom/artemchep/keyguard/common/model/VaultState$Main$ChangePassword$WithPassword;->()V +PLcom/artemchep/keyguard/common/model/VaultState$Main$ChangePassword$WithPassword;->(Lkotlin/jvm/functions/Function2;)V +Lcom/artemchep/keyguard/common/model/VaultState$Unlock; +HSPLcom/artemchep/keyguard/common/model/VaultState$Unlock;->()V +HSPLcom/artemchep/keyguard/common/model/VaultState$Unlock;->(Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithPassword;Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithBiometric;Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/common/model/VaultState$Unlock;->getLockReason()Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/model/VaultState$Unlock;->getUnlockWithBiometric()Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithBiometric; +HSPLcom/artemchep/keyguard/common/model/VaultState$Unlock;->getUnlockWithMasterPassword()Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithPassword; +Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithBiometric; +Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithPassword; +HSPLcom/artemchep/keyguard/common/model/VaultState$Unlock$WithPassword;->()V +HSPLcom/artemchep/keyguard/common/model/VaultState$Unlock$WithPassword;->(Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/common/model/VaultState$Unlock$WithPassword;->getGetCreateIo()Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/model/WithBiometric; +Lcom/artemchep/keyguard/common/model/create/CreateRequest; +Lcom/artemchep/keyguard/common/model/create/CreateRequest$Ownership2; +Lcom/artemchep/keyguard/common/service/Files; +HSPLcom/artemchep/keyguard/common/service/Files;->$values()[Lcom/artemchep/keyguard/common/service/Files; +HSPLcom/artemchep/keyguard/common/service/Files;->()V +HSPLcom/artemchep/keyguard/common/service/Files;->(Ljava/lang/String;ILjava/lang/String;)V +HSPLcom/artemchep/keyguard/common/service/Files;->getFilename()Ljava/lang/String; +Lcom/artemchep/keyguard/common/service/autofill/AutofillService; +Lcom/artemchep/keyguard/common/service/clipboard/ClipboardService; +Lcom/artemchep/keyguard/common/service/connectivity/ConnectivityService; +Lcom/artemchep/keyguard/common/service/crypto/CipherEncryptor; +Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator; +Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator$DefaultImpls; +HSPLcom/artemchep/keyguard/common/service/crypto/CryptoGenerator$DefaultImpls;->hkdf$default(Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator;[B[B[BIILjava/lang/Object;)[B +HSPLcom/artemchep/keyguard/common/service/crypto/CryptoGenerator$DefaultImpls;->pbkdf2$default(Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator;[B[BIIILjava/lang/Object;)[B +Lcom/artemchep/keyguard/common/service/crypto/FileEncryptor; +Lcom/artemchep/keyguard/common/service/deeplink/DeeplinkService; +Lcom/artemchep/keyguard/common/service/deeplink/impl/DeeplinkServiceImpl; +HSPLcom/artemchep/keyguard/common/service/deeplink/impl/DeeplinkServiceImpl;->()V +HSPLcom/artemchep/keyguard/common/service/deeplink/impl/DeeplinkServiceImpl;->()V +HSPLcom/artemchep/keyguard/common/service/deeplink/impl/DeeplinkServiceImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/service/deeplink/impl/DeeplinkServiceImpl;->clear(Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/common/service/deeplink/impl/DeeplinkServiceImpl;->get(Ljava/lang/String;)Ljava/lang/String; +Lcom/artemchep/keyguard/common/service/download/DownloadManager; +Lcom/artemchep/keyguard/common/service/download/DownloadService; +Lcom/artemchep/keyguard/common/service/extract/LinkInfoExtractor; +Lcom/artemchep/keyguard/common/service/extract/impl/LinkInfoPlatformExtractor; +Lcom/artemchep/keyguard/common/service/gpmprivapps/PrivilegedAppsService; +Lcom/artemchep/keyguard/common/service/hibp/breaches/all/BreachesLocalDataSource; +Lcom/artemchep/keyguard/common/service/hibp/breaches/all/BreachesRemoteDataSource; +Lcom/artemchep/keyguard/common/service/hibp/breaches/all/BreachesRepository; +Lcom/artemchep/keyguard/common/service/hibp/passwords/PasswordPwnageDataSource; +Lcom/artemchep/keyguard/common/service/hibp/passwords/PasswordPwnageDataSourceLocal; +Lcom/artemchep/keyguard/common/service/hibp/passwords/PasswordPwnageDataSourceRemote; +Lcom/artemchep/keyguard/common/service/hibp/passwords/PasswordPwnageRepository; +Lcom/artemchep/keyguard/common/service/id/IdRepository; +Lcom/artemchep/keyguard/common/service/id/impl/IdRepositoryImpl; +HSPLcom/artemchep/keyguard/common/service/id/impl/IdRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/common/service/id/impl/IdRepositoryImpl;->(Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStore;)V +HSPLcom/artemchep/keyguard/common/service/id/impl/IdRepositoryImpl;->get()Lkotlin/jvm/functions/Function1; +PLcom/artemchep/keyguard/common/service/id/impl/IdRepositoryImpl;->put(Ljava/lang/String;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/service/id/impl/IdRepositoryImpl$Companion; +HSPLcom/artemchep/keyguard/common/service/id/impl/IdRepositoryImpl$Companion;->()V +HSPLcom/artemchep/keyguard/common/service/id/impl/IdRepositoryImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/service/justdeleteme/JustDeleteMeService; +Lcom/artemchep/keyguard/common/service/justdeleteme/JustDeleteMeServiceInfo; +Lcom/artemchep/keyguard/common/service/justgetmydata/JustGetMyDataService; +Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreferenceKt; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreferenceKt;->asDuration(Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference;)Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreferenceKt$asDuration$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreferenceKt$asDuration$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStore; +Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt;->getObject(Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStore;Ljava/lang/String;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1;->(Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1;->setAndCommit(Ljava/lang/Object;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$collect$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$collect$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$collect$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$collect$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$collect$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$collect$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$collect$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$collect$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$collect$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$collect$$inlined$map$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$flatMap$1; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$flatMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference;)V +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$flatMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$flatMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$flatMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$flatMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function1;Ljava/lang/Object;)V +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$ioEffect$1$1; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$ioEffect$1$1;->(Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function1;Ljava/lang/Object;)V +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$ioEffect$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$ioEffect$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$ioEffect$1$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$ioEffect$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/keyvalue/SecureKeyValueStore; +Lcom/artemchep/keyguard/common/service/license/LicenseService; +Lcom/artemchep/keyguard/common/service/logging/LogLevel; +HSPLcom/artemchep/keyguard/common/service/logging/LogLevel;->$values()[Lcom/artemchep/keyguard/common/service/logging/LogLevel; +HSPLcom/artemchep/keyguard/common/service/logging/LogLevel;->()V +HSPLcom/artemchep/keyguard/common/service/logging/LogLevel;->(Ljava/lang/String;I)V +Lcom/artemchep/keyguard/common/service/logging/LogRepository; +Lcom/artemchep/keyguard/common/service/logging/LogRepository$DefaultImpls; +HSPLcom/artemchep/keyguard/common/service/logging/LogRepository$DefaultImpls;->post$default(Lcom/artemchep/keyguard/common/service/logging/LogRepository;Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/common/service/logging/LogLevel;ILjava/lang/Object;)V +Lcom/artemchep/keyguard/common/service/passkey/PassKeyService; +Lcom/artemchep/keyguard/common/service/permission/Permission; +HSPLcom/artemchep/keyguard/common/service/permission/Permission;->$values()[Lcom/artemchep/keyguard/common/service/permission/Permission; +HSPLcom/artemchep/keyguard/common/service/permission/Permission;->()V +HSPLcom/artemchep/keyguard/common/service/permission/Permission;->(Ljava/lang/String;ILjava/lang/String;II)V +HSPLcom/artemchep/keyguard/common/service/permission/Permission;->(Ljava/lang/String;ILjava/lang/String;IIILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/common/service/permission/Permission;->getMaxSdk()I +HSPLcom/artemchep/keyguard/common/service/permission/Permission;->getMinSdk()I +HSPLcom/artemchep/keyguard/common/service/permission/Permission;->getPermission()Ljava/lang/String; +Lcom/artemchep/keyguard/common/service/permission/PermissionService; +Lcom/artemchep/keyguard/common/service/permission/PermissionState; +Lcom/artemchep/keyguard/common/service/permission/PermissionState$Declined; +HSPLcom/artemchep/keyguard/common/service/permission/PermissionState$Declined;->()V +HSPLcom/artemchep/keyguard/common/service/permission/PermissionState$Declined;->(Lkotlin/jvm/functions/Function1;)V +Lcom/artemchep/keyguard/common/service/power/PowerService; +Lcom/artemchep/keyguard/common/service/relays/api/EmailRelay; +Lcom/artemchep/keyguard/common/service/relays/api/anonaddy/AnonAddyEmailRelay; +Lcom/artemchep/keyguard/common/service/relays/api/duckduckgo/DuckDuckGoEmailRelay; +Lcom/artemchep/keyguard/common/service/relays/api/firefoxrelay/FirefoxRelayEmailRelay; +Lcom/artemchep/keyguard/common/service/relays/api/forwardemail/ForwardEmailEmailRelay; +Lcom/artemchep/keyguard/common/service/relays/api/simplelogin/SimpleLoginEmailRelay; +Lcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt; +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt;->emailRelayDiModule()Lorg/kodein/di/DI$Module; +Lcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1; +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1;->()V +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1;->()V +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1;->invoke(Lorg/kodein/di/DI$Builder;)V +Lcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$1; +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$1;->()V +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$1;->()V +Lcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$2; +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$2;->()V +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$2;->()V +Lcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$3; +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$3;->()V +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$3;->()V +Lcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$4; +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$4;->()V +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$4;->()V +Lcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$5; +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$5;->()V +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$5;->()V +Lcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$invoke$$inlined$bindSingleton$default$1; +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$invoke$$inlined$bindSingleton$default$1;->()V +Lcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$invoke$$inlined$bindSingleton$default$2; +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$invoke$$inlined$bindSingleton$default$2;->()V +Lcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$invoke$$inlined$bindSingleton$default$3; +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$invoke$$inlined$bindSingleton$default$3;->()V +Lcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$invoke$$inlined$bindSingleton$default$4; +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$invoke$$inlined$bindSingleton$default$4;->()V +Lcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$invoke$$inlined$bindSingleton$default$5; +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$invoke$$inlined$bindSingleton$default$5;->()V +Lcom/artemchep/keyguard/common/service/relays/repo/GeneratorEmailRelayRepository; +Lcom/artemchep/keyguard/common/service/review/ReviewLog; +Lcom/artemchep/keyguard/common/service/review/ReviewService; +Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository; +Lcom/artemchep/keyguard/common/service/settings/SettingsReadWriteRepository; +Lcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->(Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStore;)V +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getAllowScreenshots()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getAllowScreenshots()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getAllowTwoPanelLayoutInLandscape()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getAllowTwoPanelLayoutInLandscape()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getAllowTwoPanelLayoutInPortrait()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getAllowTwoPanelLayoutInPortrait()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getAppIcons()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getAppIcons()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getBiometricTimeout()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getCachePremium()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getCachePremium()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getColors()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getColors()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getConcealFields()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getConcealFields()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getDebugPremium()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getDebugPremium()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getDebugScreenDelay()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getDebugScreenDelay()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getFont()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getFont()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getNavAnimation()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getNavAnimation()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getNavLabel()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getNavLabel()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getTheme()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getTheme()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getThemeUseAmoledDark()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getThemeUseAmoledDark()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getUseExternalBrowser()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getUseExternalBrowser()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getVaultPersist()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getVaultScreenLock()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getVaultScreenLock()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getWebsiteIcons()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getWebsiteIcons()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getWriteAccess()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getWriteAccess()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$Companion; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$Companion;->()V +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$onboardingLastVisitInstantPref$1; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$onboardingLastVisitInstantPref$1;->()V +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$onboardingLastVisitInstantPref$1;->()V +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$onboardingLastVisitInstantPref$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$onboardingLastVisitInstantPref$1;->invoke(Lkotlinx/datetime/Instant;)Ljava/lang/String; +Lcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$onboardingLastVisitInstantPref$2; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$onboardingLastVisitInstantPref$2;->()V +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$onboardingLastVisitInstantPref$2;->()V +Lcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$1; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$1;->()V +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$1;->invoke(Ljava/lang/Enum;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$2; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$2;->()V +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$2;->invoke(Ljava/lang/String;)Ljava/lang/Enum; +Lcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$3; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$3;->()V +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$3;->invoke(Ljava/lang/Enum;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$4; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$4;->()V +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$4;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$4;->invoke(Ljava/lang/String;)Ljava/lang/Enum; +Lcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$5; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$5;->()V +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$5;->invoke(Ljava/lang/Enum;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$5;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$6; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$6;->()V +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$6;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$6;->invoke(Ljava/lang/String;)Ljava/lang/Enum; +Lcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$7; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$7;->()V +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$7;->invoke(Ljava/lang/Enum;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$7;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$8; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$8;->()V +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$8;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$8;->invoke(Ljava/lang/String;)Ljava/lang/Enum; +Lcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/service/similarity/SimilarityService; +Lcom/artemchep/keyguard/common/service/state/StateRepository; +Lcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl; +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl;->(Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStore;Lkotlinx/serialization/json/Json;)V +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl;->access$getJson$p(Lcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl;)Lkotlinx/serialization/json/Json; +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl;->createOrGetPref(Ljava/lang/String;)Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl;->createPref(Ljava/lang/String;)Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl;->get(Ljava/lang/String;)Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl;->put(Ljava/lang/String;Ljava/util/Map;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$createPref$1; +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$createPref$1;->(Lcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl;)V +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$createPref$1;->invoke(Lcom/artemchep/keyguard/common/model/AnyMap;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$createPref$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$createPref$2; +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$createPref$2;->(Lcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl;)V +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$createPref$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$createPref$2;->invoke(Ljava/lang/String;)Lcom/artemchep/keyguard/common/model/AnyMap; +Lcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$get$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$get$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$get$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$get$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$get$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$get$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$get$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$get$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$get$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImplKt; +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImplKt;->getExtractedContent(Lkotlinx/serialization/json/JsonElement;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImplKt;->toJson(Ljava/lang/Object;)Lkotlinx/serialization/json/JsonElement; +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImplKt;->toMap(Lkotlinx/serialization/json/JsonObject;)Ljava/util/Map; +Lcom/artemchep/keyguard/common/service/subscription/SubscriptionService; +Lcom/artemchep/keyguard/common/service/text/Base32Service; +Lcom/artemchep/keyguard/common/service/text/Base64Service; +Lcom/artemchep/keyguard/common/service/text/Base64Service$DefaultImpls; +HSPLcom/artemchep/keyguard/common/service/text/Base64Service$DefaultImpls;->decode(Lcom/artemchep/keyguard/common/service/text/Base64Service;Ljava/lang/String;)[B +Lcom/artemchep/keyguard/common/service/text/TextService; +Lcom/artemchep/keyguard/common/service/tld/TldService; +Lcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl; +HSPLcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl;->()V +HSPLcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl;->(Lcom/artemchep/keyguard/common/service/text/TextService;Lcom/artemchep/keyguard/common/service/logging/LogRepository;)V +HSPLcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl$Companion; +HSPLcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl$Companion;->()V +HSPLcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl$dataIo$1; +HSPLcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl$dataIo$1;->()V +HSPLcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl$dataIo$1;->()V +Lcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl$special$$inlined$measure$1; +HSPLcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl$special$$inlined$measure$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl;)V +Lcom/artemchep/keyguard/common/service/tld/impl/TldServiceImplKt; +Lcom/artemchep/keyguard/common/service/totp/TotpService; +Lcom/artemchep/keyguard/common/service/totp/impl/TotpServiceImpl; +HSPLcom/artemchep/keyguard/common/service/totp/impl/TotpServiceImpl;->()V +HSPLcom/artemchep/keyguard/common/service/totp/impl/TotpServiceImpl;->(Lcom/artemchep/keyguard/common/service/text/Base32Service;Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator;)V +HSPLcom/artemchep/keyguard/common/service/totp/impl/TotpServiceImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/common/service/totp/impl/TotpServiceImpl$Companion; +HSPLcom/artemchep/keyguard/common/service/totp/impl/TotpServiceImpl$Companion;->()V +HSPLcom/artemchep/keyguard/common/service/totp/impl/TotpServiceImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/service/totp/impl/TotpServiceImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/service/totp/impl/TotpServiceImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/service/totp/impl/TotpServiceImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/service/totp/impl/TotpServiceImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/service/twofa/TwoFaService; +Lcom/artemchep/keyguard/common/service/vault/FingerprintReadRepository; +Lcom/artemchep/keyguard/common/service/vault/FingerprintReadWriteRepository; +Lcom/artemchep/keyguard/common/service/vault/KeyReadRepository; +Lcom/artemchep/keyguard/common/service/vault/KeyReadWriteRepository; +Lcom/artemchep/keyguard/common/service/vault/SessionMetadataReadRepository; +Lcom/artemchep/keyguard/common/service/vault/SessionMetadataReadWriteRepository; +Lcom/artemchep/keyguard/common/service/vault/SessionReadRepository; +Lcom/artemchep/keyguard/common/service/vault/SessionReadWriteRepository; +Lcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl; +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl;->(Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStore;Lcom/artemchep/keyguard/common/service/text/Base64Service;)V +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl;->access$getBase64Service$p(Lcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl;)Lcom/artemchep/keyguard/common/service/text/Base64Service; +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl;->get()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl;->put(Lcom/artemchep/keyguard/common/model/Fingerprint;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$dataPref$1; +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$dataPref$1;->(Lcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl;)V +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$dataPref$1;->invoke(Lcom/artemchep/keyguard/common/model/Fingerprint;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$dataPref$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +PLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$dataPref$1$2;->()V +PLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$dataPref$1$2;->()V +PLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$dataPref$1$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +PLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$dataPref$1$2;->invoke([B)Ljava/lang/CharSequence; +Lcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$dataPref$2; +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$dataPref$2;->(Lcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl;)V +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$dataPref$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$dataPref$2;->invoke(Ljava/lang/String;)Lcom/artemchep/keyguard/common/model/Fingerprint; +Lcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl;->(Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStore;Lkotlinx/serialization/json/Json;Lcom/artemchep/keyguard/common/service/text/Base64Service;)V +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl;->access$getDataPref$p(Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl;)Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl;->get()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl;->put(Lcom/artemchep/keyguard/common/model/PersistedSession;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$dataPref$1; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$dataPref$1;->(Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl;)V +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$dataPref$1;->invoke(Lcom/artemchep/keyguard/common/service/vault/impl/PersistedSessionEntity;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$dataPref$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$dataPref$2; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$dataPref$2;->(Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl;)V +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$dataPref$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$dataPref$2;->invoke(Ljava/lang/String;)Lcom/artemchep/keyguard/common/service/vault/impl/PersistedSessionEntity; +Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$get$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$get$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl;)V +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$get$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$get$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$get$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl;)V +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$get$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$get$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$get$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$get$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$put$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$put$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/model/PersistedSession;Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl;)V +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$put$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$put$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$put$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$put$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$special$$inlined$instance$default$4; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$special$$inlined$instance$default$4;->()V +Lcom/artemchep/keyguard/common/service/vault/impl/PersistedSessionEntity; +Lcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl; +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl;->(Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStore;)V +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl;->setAndCommit(Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference;Lkotlinx/datetime/Instant;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl;->setLastPasswordUseTimestamp(Lkotlinx/datetime/Instant;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$Companion; +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$Companion;->()V +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$setAndCommit$$inlined$flatMap$1; +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$setAndCommit$$inlined$flatMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference;)V +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$setAndCommit$$inlined$flatMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$setAndCommit$$inlined$flatMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$setAndCommit$$inlined$flatMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$setAndCommit$$inlined$flatMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$setAndCommit$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$setAndCommit$$inlined$map$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$setAndCommit$$inlined$map$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$setAndCommit$$inlined$map$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$setAndCommit$$inlined$map$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$setAndCommit$$inlined$map$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/service/vault/impl/SessionRepositoryImpl; +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionRepositoryImpl;->get()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionRepositoryImpl;->put(Lcom/artemchep/keyguard/common/model/MasterSession;)V +Lcom/artemchep/keyguard/common/service/wordlist/WordlistService; +Lcom/artemchep/keyguard/common/service/wordlist/impl/WordlistServiceImpl; +HSPLcom/artemchep/keyguard/common/service/wordlist/impl/WordlistServiceImpl;->()V +HSPLcom/artemchep/keyguard/common/service/wordlist/impl/WordlistServiceImpl;->(Lcom/artemchep/keyguard/common/service/text/TextService;)V +HSPLcom/artemchep/keyguard/common/service/wordlist/impl/WordlistServiceImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/common/service/wordlist/impl/WordlistServiceImpl$special$$inlined$handleErrorTap$default$1; +HSPLcom/artemchep/keyguard/common/service/wordlist/impl/WordlistServiceImpl$special$$inlined$handleErrorTap$default$1;->(Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function1;)V +Lcom/artemchep/keyguard/common/service/wordlist/impl/WordlistServiceImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/service/wordlist/impl/WordlistServiceImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/service/wordlist/impl/WordlistServiceImpl$wordListIo$1; +HSPLcom/artemchep/keyguard/common/service/wordlist/impl/WordlistServiceImpl$wordListIo$1;->()V +HSPLcom/artemchep/keyguard/common/service/wordlist/impl/WordlistServiceImpl$wordListIo$1;->()V +Lcom/artemchep/keyguard/common/service/wordlist/impl/WordlistServiceImplKt; +Lcom/artemchep/keyguard/common/usecase/AddCipher; +Lcom/artemchep/keyguard/common/usecase/AddCipherOpenedHistory; +Lcom/artemchep/keyguard/common/usecase/AddCipherUsedAutofillHistory; +Lcom/artemchep/keyguard/common/usecase/AddCipherUsedPasskeyHistory; +Lcom/artemchep/keyguard/common/usecase/AddEmailRelay; +Lcom/artemchep/keyguard/common/usecase/AddFolder; +Lcom/artemchep/keyguard/common/usecase/AddGeneratorHistory; +Lcom/artemchep/keyguard/common/usecase/AddPasskeyCipher; +Lcom/artemchep/keyguard/common/usecase/AddUriCipher; +Lcom/artemchep/keyguard/common/usecase/AuthConfirmMasterKeyUseCase; +Lcom/artemchep/keyguard/common/usecase/AuthGenerateMasterKeyUseCase; +Lcom/artemchep/keyguard/common/usecase/BiometricKeyDecryptUseCase; +Lcom/artemchep/keyguard/common/usecase/BiometricKeyEncryptUseCase; +Lcom/artemchep/keyguard/common/usecase/BiometricStatusUseCase; +Lcom/artemchep/keyguard/common/usecase/ChangeCipherNameById; +Lcom/artemchep/keyguard/common/usecase/ChangeCipherPasswordById; +Lcom/artemchep/keyguard/common/usecase/CheckPasswordLeak; +Lcom/artemchep/keyguard/common/usecase/CheckPasswordSetLeak; +Lcom/artemchep/keyguard/common/usecase/CheckUsernameLeak; +Lcom/artemchep/keyguard/common/usecase/CipherBreachCheck; +Lcom/artemchep/keyguard/common/usecase/CipherDuplicatesCheck; +Lcom/artemchep/keyguard/common/usecase/CipherDuplicatesCheck$Sensitivity; +Lcom/artemchep/keyguard/common/usecase/CipherExpiringCheck; +Lcom/artemchep/keyguard/common/usecase/CipherFieldSwitchToggle; +Lcom/artemchep/keyguard/common/usecase/CipherIncompleteCheck; +Lcom/artemchep/keyguard/common/usecase/CipherMerge; +Lcom/artemchep/keyguard/common/usecase/CipherRemovePasswordHistory; +Lcom/artemchep/keyguard/common/usecase/CipherRemovePasswordHistoryById; +Lcom/artemchep/keyguard/common/usecase/CipherToolbox; +Lcom/artemchep/keyguard/common/usecase/CipherToolboxImpl; +HSPLcom/artemchep/keyguard/common/usecase/CipherToolboxImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/CipherToolboxImpl;->(Lcom/artemchep/keyguard/common/usecase/FavouriteCipherById;Lcom/artemchep/keyguard/common/usecase/RePromptCipherById;Lcom/artemchep/keyguard/common/usecase/ChangeCipherNameById;Lcom/artemchep/keyguard/common/usecase/ChangeCipherPasswordById;Lcom/artemchep/keyguard/common/usecase/CopyCipherById;Lcom/artemchep/keyguard/common/usecase/MoveCipherToFolderById;Lcom/artemchep/keyguard/common/usecase/RestoreCipherById;Lcom/artemchep/keyguard/common/usecase/TrashCipherById;Lcom/artemchep/keyguard/common/usecase/RemoveCipherById;Lcom/artemchep/keyguard/common/usecase/CipherMerge;)V +HSPLcom/artemchep/keyguard/common/usecase/CipherToolboxImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$10; +HSPLcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$10;->()V +Lcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$4; +HSPLcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$4;->()V +Lcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$5; +HSPLcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$5;->()V +Lcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$6; +HSPLcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$6;->()V +Lcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$7; +HSPLcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$7;->()V +Lcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$8; +HSPLcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$8;->()V +Lcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$9; +HSPLcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$9;->()V +Lcom/artemchep/keyguard/common/usecase/CipherUnsecureUrlAutoFix; +Lcom/artemchep/keyguard/common/usecase/CipherUnsecureUrlCheck; +Lcom/artemchep/keyguard/common/usecase/CipherUrlCheck; +Lcom/artemchep/keyguard/common/usecase/CipherUrlDuplicateCheck; +Lcom/artemchep/keyguard/common/usecase/CleanUpAttachment; +Lcom/artemchep/keyguard/common/usecase/ClearData; +Lcom/artemchep/keyguard/common/usecase/ClearVaultSession; +Lcom/artemchep/keyguard/common/usecase/ConfirmAccessByPasswordUseCase; +Lcom/artemchep/keyguard/common/usecase/CopyCipherById; +Lcom/artemchep/keyguard/common/usecase/CopyText; +HSPLcom/artemchep/keyguard/common/usecase/CopyText;->()V +HSPLcom/artemchep/keyguard/common/usecase/CopyText;->(Lcom/artemchep/keyguard/common/service/clipboard/ClipboardService;Lkotlin/jvm/functions/Function1;)V +Lcom/artemchep/keyguard/common/usecase/DateFormatter; +Lcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase; +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase;->()V +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase;->(Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator;Lcom/artemchep/keyguard/common/usecase/DeviceIdUseCase;)V +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase;->access$getCryptoGenerator$p(Lcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase;)Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator; +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase;->invoke()Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase$invoke$$inlined$effectMap$1; +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase$invoke$$inlined$effectMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase;)V +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase$invoke$$inlined$effectMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase$invoke$$inlined$effectMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase$invoke$$inlined$effectMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase$invoke$$inlined$effectMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase$invoke$$inlined$effectMap$1$1; +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase$invoke$$inlined$effectMap$1$1;->(Ljava/lang/Object;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase;)V +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase$invoke$$inlined$effectMap$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase$invoke$$inlined$effectMap$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase$invoke$$inlined$effectMap$1$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase$invoke$$inlined$effectMap$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/usecase/DeviceIdUseCase; +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase;->()V +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase;->(Lcom/artemchep/keyguard/common/service/id/IdRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase;->access$getDeviceId$p(Lcom/artemchep/keyguard/common/usecase/DeviceIdUseCase;)Ljava/lang/String; +PLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase;->access$getDeviceIdRepository$p(Lcom/artemchep/keyguard/common/usecase/DeviceIdUseCase;)Lcom/artemchep/keyguard/common/service/id/IdRepository; +PLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase;->access$setDeviceId$p(Lcom/artemchep/keyguard/common/usecase/DeviceIdUseCase;Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase;->getOrSet()Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase;->invoke()Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/usecase/DeviceIdUseCase$getOrSet$$inlined$flatMap$1; +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase$getOrSet$$inlined$flatMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/usecase/DeviceIdUseCase;)V +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase$getOrSet$$inlined$flatMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase$getOrSet$$inlined$flatMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase$getOrSet$$inlined$flatMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase$getOrSet$$inlined$flatMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +PLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase$getOrSet$1$inMemoryId$1$3;->(Ljava/lang/Object;)V +PLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase$getOrSet$1$inMemoryId$1$3;->set(Ljava/lang/Object;)V +PLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase$getOrSet$lambda$5$lambda$4$$inlined$flatTap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/service/id/IdRepository;)V +PLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase$getOrSet$lambda$5$lambda$4$$inlined$flatTap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +PLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase$getOrSet$lambda$5$lambda$4$$inlined$flatTap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +PLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase$getOrSet$lambda$5$lambda$4$$inlined$flatTap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +PLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase$getOrSet$lambda$5$lambda$4$$inlined$flatTap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/DeviceIdUseCase$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase$special$$inlined$instance$default$1;->()V +PLcom/artemchep/keyguard/common/usecase/DeviceIdUseCaseKt;->access$getDeviceId()Ljava/lang/String; +PLcom/artemchep/keyguard/common/usecase/DeviceIdUseCaseKt;->getDeviceId()Ljava/lang/String; +Lcom/artemchep/keyguard/common/usecase/DisableBiometric; +Lcom/artemchep/keyguard/common/usecase/DownloadAttachment; +Lcom/artemchep/keyguard/common/usecase/EnableBiometric; +Lcom/artemchep/keyguard/common/usecase/FavouriteCipherById; +Lcom/artemchep/keyguard/common/usecase/GenerateMasterHashUseCase; +Lcom/artemchep/keyguard/common/usecase/GenerateMasterKeyUseCase; +Lcom/artemchep/keyguard/common/usecase/GenerateMasterSaltUseCase; +Lcom/artemchep/keyguard/common/usecase/GetAccountHasError; +Lcom/artemchep/keyguard/common/usecase/GetAccountStatus; +Lcom/artemchep/keyguard/common/usecase/GetAccounts; +Lcom/artemchep/keyguard/common/usecase/GetAccountsHasError; +Lcom/artemchep/keyguard/common/usecase/GetAllowScreenshots; +Lcom/artemchep/keyguard/common/usecase/GetAllowTwoPanelLayoutInLandscape; +Lcom/artemchep/keyguard/common/usecase/GetAllowTwoPanelLayoutInPortrait; +Lcom/artemchep/keyguard/common/usecase/GetAppBuildDate; +Lcom/artemchep/keyguard/common/usecase/GetAppBuildType; +Lcom/artemchep/keyguard/common/usecase/GetAppIcons; +Lcom/artemchep/keyguard/common/usecase/GetAppVersion; +Lcom/artemchep/keyguard/common/usecase/GetAppVersionCode; +Lcom/artemchep/keyguard/common/usecase/GetAppVersionName; +Lcom/artemchep/keyguard/common/usecase/GetAutofillCopyTotp; +Lcom/artemchep/keyguard/common/usecase/GetAutofillInlineSuggestions; +Lcom/artemchep/keyguard/common/usecase/GetAutofillManualSelection; +Lcom/artemchep/keyguard/common/usecase/GetAutofillRespectAutofillOff; +Lcom/artemchep/keyguard/common/usecase/GetAutofillSaveRequest; +Lcom/artemchep/keyguard/common/usecase/GetAutofillSaveUri; +Lcom/artemchep/keyguard/common/usecase/GetBarcodeImage; +Lcom/artemchep/keyguard/common/usecase/GetBiometricRemainingDuration; +Lcom/artemchep/keyguard/common/usecase/GetBiometricTimeout; +Lcom/artemchep/keyguard/common/usecase/GetBiometricTimeoutVariants; +Lcom/artemchep/keyguard/common/usecase/GetCachePremium; +Lcom/artemchep/keyguard/common/usecase/GetCanAddAccount; +Lcom/artemchep/keyguard/common/usecase/GetCanWrite; +Lcom/artemchep/keyguard/common/usecase/GetCheckPwnedPasswords; +Lcom/artemchep/keyguard/common/usecase/GetCheckPwnedServices; +Lcom/artemchep/keyguard/common/usecase/GetCheckTwoFA; +Lcom/artemchep/keyguard/common/usecase/GetCipherOpenedCount; +Lcom/artemchep/keyguard/common/usecase/GetCipherOpenedHistory; +Lcom/artemchep/keyguard/common/usecase/GetCiphers; +Lcom/artemchep/keyguard/common/usecase/GetClipboardAutoClear; +Lcom/artemchep/keyguard/common/usecase/GetClipboardAutoClearVariants; +Lcom/artemchep/keyguard/common/usecase/GetClipboardAutoRefresh; +Lcom/artemchep/keyguard/common/usecase/GetClipboardAutoRefreshVariants; +Lcom/artemchep/keyguard/common/usecase/GetCollections; +Lcom/artemchep/keyguard/common/usecase/GetColors; +Lcom/artemchep/keyguard/common/usecase/GetColorsVariants; +Lcom/artemchep/keyguard/common/usecase/GetConcealFields; +Lcom/artemchep/keyguard/common/usecase/GetDebugPremium; +Lcom/artemchep/keyguard/common/usecase/GetDebugScreenDelay; +Lcom/artemchep/keyguard/common/usecase/GetEmailRelays; +Lcom/artemchep/keyguard/common/usecase/GetEnvSendUrl; +Lcom/artemchep/keyguard/common/usecase/GetFingerprint; +Lcom/artemchep/keyguard/common/usecase/GetFolderTree; +Lcom/artemchep/keyguard/common/usecase/GetFolderTreeById; +Lcom/artemchep/keyguard/common/usecase/GetFolders; +Lcom/artemchep/keyguard/common/usecase/GetFont; +Lcom/artemchep/keyguard/common/usecase/GetFontVariants; +Lcom/artemchep/keyguard/common/usecase/GetGeneratorHistory; +Lcom/artemchep/keyguard/common/usecase/GetGravatarUrl; +Lcom/artemchep/keyguard/common/usecase/GetJustDeleteMeByUrl; +Lcom/artemchep/keyguard/common/usecase/GetKeepScreenOn; +Lcom/artemchep/keyguard/common/usecase/GetLocale; +Lcom/artemchep/keyguard/common/usecase/GetLocaleVariants; +Lcom/artemchep/keyguard/common/usecase/GetMarkdown; +Lcom/artemchep/keyguard/common/usecase/GetMetas; +Lcom/artemchep/keyguard/common/usecase/GetNavAnimation; +Lcom/artemchep/keyguard/common/usecase/GetNavAnimationVariants; +Lcom/artemchep/keyguard/common/usecase/GetNavLabel; +Lcom/artemchep/keyguard/common/usecase/GetOnboardingLastVisitInstant; +Lcom/artemchep/keyguard/common/usecase/GetOrganizations; +Lcom/artemchep/keyguard/common/usecase/GetPassphrase; +Lcom/artemchep/keyguard/common/usecase/GetPassword; +Lcom/artemchep/keyguard/common/usecase/GetPasswordStrength; +Lcom/artemchep/keyguard/common/usecase/GetProducts; +Lcom/artemchep/keyguard/common/usecase/GetProfiles; +Lcom/artemchep/keyguard/common/usecase/GetPurchased; +Lcom/artemchep/keyguard/common/usecase/GetScreenState; +Lcom/artemchep/keyguard/common/usecase/GetSends; +Lcom/artemchep/keyguard/common/usecase/GetShouldRequestAppReview; +Lcom/artemchep/keyguard/common/usecase/GetSubscriptions; +Lcom/artemchep/keyguard/common/usecase/GetSuggestions; +Lcom/artemchep/keyguard/common/usecase/GetTheme; +Lcom/artemchep/keyguard/common/usecase/GetThemeUseAmoledDark; +Lcom/artemchep/keyguard/common/usecase/GetThemeVariants; +Lcom/artemchep/keyguard/common/usecase/GetTotpCode; +Lcom/artemchep/keyguard/common/usecase/GetUseExternalBrowser; +Lcom/artemchep/keyguard/common/usecase/GetVaultLockAfterReboot; +Lcom/artemchep/keyguard/common/usecase/GetVaultLockAfterScreenOff; +Lcom/artemchep/keyguard/common/usecase/GetVaultLockAfterTimeout; +Lcom/artemchep/keyguard/common/usecase/GetVaultLockAfterTimeoutVariants; +Lcom/artemchep/keyguard/common/usecase/GetVaultPersist; +Lcom/artemchep/keyguard/common/usecase/GetVaultSession; +Lcom/artemchep/keyguard/common/usecase/GetWebsiteIcons; +Lcom/artemchep/keyguard/common/usecase/GetWriteAccess; +Lcom/artemchep/keyguard/common/usecase/MergeFolderById; +Lcom/artemchep/keyguard/common/usecase/MessageHub; +Lcom/artemchep/keyguard/common/usecase/MoveCipherToFolderById; +Lcom/artemchep/keyguard/common/usecase/NumberFormatter; +Lcom/artemchep/keyguard/common/usecase/PasskeyTarget; +Lcom/artemchep/keyguard/common/usecase/PasskeyTargetCheck; +Lcom/artemchep/keyguard/common/usecase/PutAccountColorById; +Lcom/artemchep/keyguard/common/usecase/PutAccountMasterPasswordHintById; +Lcom/artemchep/keyguard/common/usecase/PutAccountNameById; +Lcom/artemchep/keyguard/common/usecase/PutAllowScreenshots; +Lcom/artemchep/keyguard/common/usecase/PutAllowTwoPanelLayoutInLandscape; +Lcom/artemchep/keyguard/common/usecase/PutAllowTwoPanelLayoutInPortrait; +Lcom/artemchep/keyguard/common/usecase/PutAppIcons; +Lcom/artemchep/keyguard/common/usecase/PutAutofillCopyTotp; +Lcom/artemchep/keyguard/common/usecase/PutAutofillInlineSuggestions; +Lcom/artemchep/keyguard/common/usecase/PutAutofillManualSelection; +Lcom/artemchep/keyguard/common/usecase/PutAutofillRespectAutofillOff; +Lcom/artemchep/keyguard/common/usecase/PutAutofillSaveRequest; +Lcom/artemchep/keyguard/common/usecase/PutAutofillSaveUri; +Lcom/artemchep/keyguard/common/usecase/PutBiometricTimeout; +Lcom/artemchep/keyguard/common/usecase/PutCachePremium; +Lcom/artemchep/keyguard/common/usecase/PutCheckPwnedPasswords; +Lcom/artemchep/keyguard/common/usecase/PutCheckPwnedServices; +Lcom/artemchep/keyguard/common/usecase/PutCheckTwoFA; +Lcom/artemchep/keyguard/common/usecase/PutClipboardAutoClear; +Lcom/artemchep/keyguard/common/usecase/PutClipboardAutoRefresh; +Lcom/artemchep/keyguard/common/usecase/PutColors; +Lcom/artemchep/keyguard/common/usecase/PutConcealFields; +Lcom/artemchep/keyguard/common/usecase/PutDebugPremium; +Lcom/artemchep/keyguard/common/usecase/PutDebugScreenDelay; +Lcom/artemchep/keyguard/common/usecase/PutFont; +Lcom/artemchep/keyguard/common/usecase/PutKeepScreenOn; +Lcom/artemchep/keyguard/common/usecase/PutLocale; +Lcom/artemchep/keyguard/common/usecase/PutMarkdown; +Lcom/artemchep/keyguard/common/usecase/PutNavAnimation; +Lcom/artemchep/keyguard/common/usecase/PutNavLabel; +Lcom/artemchep/keyguard/common/usecase/PutOnboardingLastVisitInstant; +Lcom/artemchep/keyguard/common/usecase/PutScreenState; +Lcom/artemchep/keyguard/common/usecase/PutTheme; +Lcom/artemchep/keyguard/common/usecase/PutThemeUseAmoledDark; +Lcom/artemchep/keyguard/common/usecase/PutUseExternalBrowser; +Lcom/artemchep/keyguard/common/usecase/PutVaultLockAfterReboot; +Lcom/artemchep/keyguard/common/usecase/PutVaultLockAfterScreenOff; +Lcom/artemchep/keyguard/common/usecase/PutVaultLockAfterTimeout; +Lcom/artemchep/keyguard/common/usecase/PutVaultPersist; +Lcom/artemchep/keyguard/common/usecase/PutVaultSession; +Lcom/artemchep/keyguard/common/usecase/PutWebsiteIcons; +Lcom/artemchep/keyguard/common/usecase/PutWriteAccess; +Lcom/artemchep/keyguard/common/usecase/QueueSyncAll; +Lcom/artemchep/keyguard/common/usecase/QueueSyncById; +Lcom/artemchep/keyguard/common/usecase/RePromptCipherById; +Lcom/artemchep/keyguard/common/usecase/RemoveAccountById; +Lcom/artemchep/keyguard/common/usecase/RemoveAccounts; +Lcom/artemchep/keyguard/common/usecase/RemoveAttachment; +Lcom/artemchep/keyguard/common/usecase/RemoveCipherById; +Lcom/artemchep/keyguard/common/usecase/RemoveEmailRelayById; +Lcom/artemchep/keyguard/common/usecase/RemoveFolderById; +Lcom/artemchep/keyguard/common/usecase/RemoveFolderById$OnCiphersConflict; +Lcom/artemchep/keyguard/common/usecase/RemoveGeneratorHistory; +Lcom/artemchep/keyguard/common/usecase/RemoveGeneratorHistoryById; +Lcom/artemchep/keyguard/common/usecase/RenameFolderById; +Lcom/artemchep/keyguard/common/usecase/RequestAppReview; +Lcom/artemchep/keyguard/common/usecase/RestoreCipherById; +Lcom/artemchep/keyguard/common/usecase/RetryCipher; +Lcom/artemchep/keyguard/common/usecase/RotateDeviceIdUseCase; +Lcom/artemchep/keyguard/common/usecase/ShowMessage; +Lcom/artemchep/keyguard/common/usecase/SupervisorRead; +Lcom/artemchep/keyguard/common/usecase/SyncAll; +Lcom/artemchep/keyguard/common/usecase/SyncById; +Lcom/artemchep/keyguard/common/usecase/TrashCipherByFolderId; +Lcom/artemchep/keyguard/common/usecase/TrashCipherById; +Lcom/artemchep/keyguard/common/usecase/UnlockUseCase; +Lcom/artemchep/keyguard/common/usecase/Watchdog; +Lcom/artemchep/keyguard/common/usecase/WatchdogImpl; +HSPLcom/artemchep/keyguard/common/usecase/WatchdogImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/WatchdogImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/WatchdogImpl;->get()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/usecase/WatchdogImpl;->get(Lcom/artemchep/keyguard/common/model/AccountTask;)Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/common/usecase/WatchdogImpl;)V +HSPLcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/common/usecase/WatchdogImpl;)V +HSPLcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$2; +HSPLcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$2;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/common/model/AccountTask;)V +HSPLcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$2;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$2$2; +HSPLcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$2$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/common/model/AccountTask;)V +HSPLcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$2$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$2$2$1; +HSPLcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$2$2$1;->(Lcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$2$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$2$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope; +Lcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl;->(Lcom/artemchep/keyguard/common/usecase/GenerateMasterHashUseCase;Lcom/artemchep/keyguard/common/usecase/GenerateMasterKeyUseCase;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl;->access$getGenerateMasterHashUseCase$p(Lcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl;)Lcom/artemchep/keyguard/common/usecase/GenerateMasterHashUseCase; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl;->access$getGenerateMasterKeyUseCase$p(Lcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl;)Lcom/artemchep/keyguard/common/usecase/GenerateMasterKeyUseCase; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl;->invoke(Lcom/artemchep/keyguard/common/model/MasterPasswordSalt;Lcom/artemchep/keyguard/common/model/MasterPasswordHash;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$invoke$1; +PLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$invoke$1;->(Lcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl;Lcom/artemchep/keyguard/common/model/MasterPasswordSalt;Lcom/artemchep/keyguard/common/model/MasterPasswordHash;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$invoke$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$invoke$1;->invoke-A0jvUzs([B)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$flatMap$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$flatMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/model/MasterPasswordHash;Lcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl;[B)V +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$flatMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$flatMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$flatMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$flatMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$map$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/model/MasterPasswordHash;Lcom/artemchep/keyguard/common/model/MasterPasswordSalt;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$map$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$map$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$map$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$map$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl;->(Lcom/artemchep/keyguard/common/usecase/GenerateMasterHashUseCase;Lcom/artemchep/keyguard/common/usecase/GenerateMasterKeyUseCase;Lcom/artemchep/keyguard/common/usecase/GenerateMasterSaltUseCase;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl;->access$getGenerateMasterHashUseCase$p(Lcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl;)Lcom/artemchep/keyguard/common/usecase/GenerateMasterHashUseCase; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl;->access$getGenerateMasterKeyUseCase$p(Lcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl;)Lcom/artemchep/keyguard/common/usecase/GenerateMasterKeyUseCase; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl;->access$getGenerateMasterSaltUseCase$p(Lcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl;)Lcom/artemchep/keyguard/common/usecase/GenerateMasterSaltUseCase; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl;->invoke()Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl$invoke$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl$invoke$1;->(Lcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl$invoke$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl$invoke$1;->invoke-A0jvUzs([B)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$effectMap$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$effectMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl;[B)V +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$effectMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$effectMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$effectMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$effectMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/common/usecase/impl/BiometricKeyDecryptUseCaseImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/BiometricKeyDecryptUseCaseImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/BiometricKeyDecryptUseCaseImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/BiometricKeyDecryptUseCaseImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/common/usecase/impl/BiometricKeyEncryptUseCaseImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/BiometricKeyEncryptUseCaseImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/BiometricKeyEncryptUseCaseImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/BiometricKeyEncryptUseCaseImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl;->(Landroid/content/Context;Lcom/artemchep/keyguard/common/service/logging/LogRepository;Lcom/artemchep/keyguard/android/downloader/journal/DownloadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl$Companion; +HSPLcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl$Companion;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl$Companion;->zzz(Lkotlinx/coroutines/CoroutineScope;Lcom/artemchep/keyguard/android/downloader/journal/DownloadRepository;Lcom/artemchep/keyguard/common/usecase/CleanUpAttachment;)Lkotlinx/coroutines/Job; +Lcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl$Companion$zzz$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl$Companion$zzz$1;->(Lcom/artemchep/keyguard/android/downloader/journal/DownloadRepository;Lkotlinx/coroutines/CoroutineScope;Lcom/artemchep/keyguard/common/usecase/CleanUpAttachment;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl$Companion$zzz$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl$Companion$zzz$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/common/usecase/impl/ClearVaultSessionImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/ClearVaultSessionImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/ClearVaultSessionImpl;->(Lcom/artemchep/keyguard/common/usecase/PutVaultSession;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/ClearVaultSessionImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/common/usecase/impl/ClearVaultSessionImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/ClearVaultSessionImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/DisableBiometricImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/DisableBiometricImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/DisableBiometricImpl;->(Lcom/artemchep/keyguard/common/service/vault/FingerprintReadWriteRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/DisableBiometricImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/common/usecase/impl/DisableBiometricImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/DisableBiometricImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl;->(Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl;->access$encode(Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl;[B[B)[B +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl;->encode([B[B)[B +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl;->invoke-NTeWIBM([BLcom/artemchep/keyguard/common/model/MasterPasswordSalt;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$Companion; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$Companion;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Lkotlin/coroutines/CoroutineContext;Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl;[BLcom/artemchep/keyguard/common/model/MasterPasswordSalt;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl;[BLcom/artemchep/keyguard/common/model/MasterPasswordSalt;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$map$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$map$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$map$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$map$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$map$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl;->(Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl;->access$encode(Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl;[B[B)[B +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl;->encode([B[B)[B +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl;->invoke-NTeWIBM([BLcom/artemchep/keyguard/common/model/MasterPasswordHash;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$Companion; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$Companion;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Lkotlin/coroutines/CoroutineContext;Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl;[BLcom/artemchep/keyguard/common/model/MasterPasswordHash;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl;[BLcom/artemchep/keyguard/common/model/MasterPasswordHash;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$map$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$map$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$map$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$map$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$map$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl;->(Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl;->access$getCryptoGenerator$p(Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl;)Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl;->invoke()Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$Companion; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$Companion;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Lkotlin/coroutines/CoroutineContext;Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$ioEffect$1$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$ioEffect$1$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$ioEffect$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$ioEffect$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$ioEffect$1$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$ioEffect$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$map$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$map$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$map$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$map$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$map$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl;->(Lcom/artemchep/keyguard/common/service/permission/PermissionService;Lcom/artemchep/keyguard/common/usecase/GetAccounts;Lcom/artemchep/keyguard/common/usecase/GetMetas;Lcom/artemchep/keyguard/common/usecase/GetCiphers;Lcom/artemchep/keyguard/common/usecase/GetFolders;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1;->(Ljava/util/List;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$1;->(Ljava/util/List;[Ljava/lang/Object;Ljava/util/concurrent/atomic/AtomicInteger;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$1;->invoke(Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$1$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$1$1;->(Lkotlinx/coroutines/flow/Flow;[Ljava/lang/Object;ILjava/util/concurrent/atomic/AtomicInteger;Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$1$1$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$1$1$1;->([Ljava/lang/Object;ILkotlin/jvm/internal/Ref$BooleanRef;Ljava/util/concurrent/atomic/AtomicInteger;Lkotlinx/coroutines/channels/ProducerScope;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$1$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$2;->(Ljava/util/concurrent/atomic/AtomicInteger;Lkotlinx/coroutines/flow/FlowCollector;[Ljava/lang/Object;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$2;->emit(Lkotlin/Unit;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$map$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$1;->invoke(IILjava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$hasFailureFlow$1$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$hasFailureFlow$1$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$hasFailureFlow$1$1;->invoke(IIILkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$hasFailureFlow$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$hasFailureFlow$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$hasPendingFlow$1$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$hasPendingFlow$1$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$hasPendingFlow$1$1;->invoke(IILkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$hasPendingFlow$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$hasPendingFlow$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$2;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$2;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$2$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$2$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$2$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$2$2$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$2$2$1;->(Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$2$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$2$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$2;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$2;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$2$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$2$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$2$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$2$2$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$2$2$1;->(Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$2$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$2$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$3; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$3;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$3;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$3$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$3$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$3$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$3$2$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$3$2$1;->(Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$3$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$3$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$special$$inlined$instance$default$4; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$special$$inlined$instance$default$4;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$special$$inlined$instance$default$5; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$special$$inlined$instance$default$5;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetAllowScreenshotsImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowScreenshotsImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowScreenshotsImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowScreenshotsImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowScreenshotsImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowScreenshotsImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetAllowScreenshotsImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowScreenshotsImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInLandscapeImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInLandscapeImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInLandscapeImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInLandscapeImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInLandscapeImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInLandscapeImpl;->invoke()Lkotlinx/coroutines/flow/StateFlow; +Lcom/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInLandscapeImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInLandscapeImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInPortraitImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInPortraitImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInPortraitImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInPortraitImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInPortraitImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInPortraitImpl;->invoke()Lkotlinx/coroutines/flow/StateFlow; +Lcom/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInPortraitImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInPortraitImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetAppIconsImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAppIconsImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAppIconsImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAppIconsImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAppIconsImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAppIconsImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetAppIconsImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAppIconsImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetBiometricRemainingDurationImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetBiometricRemainingDurationImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetBiometricRemainingDurationImpl;->(Lcom/artemchep/keyguard/common/service/vault/SessionMetadataReadRepository;Lcom/artemchep/keyguard/common/usecase/GetBiometricTimeout;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetBiometricRemainingDurationImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/common/usecase/impl/GetBiometricRemainingDurationImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetBiometricRemainingDurationImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetBiometricRemainingDurationImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetBiometricRemainingDurationImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetBiometricTimeoutImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetBiometricTimeoutImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetBiometricTimeoutImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetBiometricTimeoutImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/common/usecase/impl/GetBiometricTimeoutImpl$Companion; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetBiometricTimeoutImpl$Companion;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetBiometricTimeoutImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/usecase/impl/GetBiometricTimeoutImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetBiometricTimeoutImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetBiometricTimeoutImpl$special$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetBiometricTimeoutImpl$special$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +Lcom/artemchep/keyguard/common/usecase/impl/GetCachePremiumImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetCachePremiumImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetCachePremiumImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetCachePremiumImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetCachePremiumImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetCachePremiumImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetCachePremiumImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetCachePremiumImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetCanWriteImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetCanWriteImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetCanWriteImpl;->(Lcom/artemchep/keyguard/common/usecase/GetPurchased;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetCanWriteImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetCanWriteImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetCanWriteImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetCanWriteImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetCanWriteImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetColorsImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetColorsImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetColorsImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetColorsImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetColorsImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetColorsImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetColorsImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetColorsImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetConcealFieldsImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetConcealFieldsImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetConcealFieldsImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetConcealFieldsImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetConcealFieldsImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetConcealFieldsImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetConcealFieldsImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetConcealFieldsImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetDebugPremiumImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetDebugPremiumImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetDebugPremiumImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetDebugPremiumImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetDebugPremiumImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetDebugPremiumImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetDebugPremiumImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetDebugPremiumImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetDebugScreenDelayImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetDebugScreenDelayImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetDebugScreenDelayImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetDebugScreenDelayImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetDebugScreenDelayImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetDebugScreenDelayImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetDebugScreenDelayImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetDebugScreenDelayImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetFontImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetFontImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetFontImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetFontImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetFontImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetFontImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetFontImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetFontImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl;->invoke()Lkotlinx/coroutines/flow/StateFlow; +Lcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl$special$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl$special$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl$special$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl$special$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl$special$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl$special$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl$special$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl$special$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl$special$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/common/usecase/impl/GetNavLabelImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavLabelImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavLabelImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavLabelImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavLabelImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavLabelImpl;->invoke()Lkotlinx/coroutines/flow/StateFlow; +Lcom/artemchep/keyguard/common/usecase/impl/GetNavLabelImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavLabelImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl;->(Landroid/content/Context;Lcom/artemchep/keyguard/common/service/subscription/SubscriptionService;Lcom/artemchep/keyguard/common/usecase/GetDebugPremium;Lcom/artemchep/keyguard/common/usecase/GetCachePremium;Lcom/artemchep/keyguard/common/usecase/PutCachePremium;Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl;->hasGooglePlayServices()Z +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl;->localStatusFlow()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl;->upstreamStatusFlow()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$localStatusFlow$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$localStatusFlow$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$sharedFlow$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$sharedFlow$1;->(Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$sharedFlow$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$sharedFlow$2;->(Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$instance$default$4; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$instance$default$4;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$instance$default$5; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$instance$default$5;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$instance$default$6; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$instance$default$6;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$1$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$1$1;->(Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$1$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$1$2;->(Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$lambda$3$$inlined$mapNotNull$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$lambda$3$$inlined$mapNotNull$1;->(Lkotlinx/coroutines/flow/Flow;)V +Lcom/artemchep/keyguard/common/usecase/impl/GetScreenStateImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetScreenStateImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetScreenStateImpl;->(Lcom/artemchep/keyguard/common/service/state/StateRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetScreenStateImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetScreenStateImpl;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetScreenStateImpl;->invoke(Ljava/lang/String;)Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetScreenStateImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetScreenStateImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetSuggestionsImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetSuggestionsImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetSuggestionsImpl;->(Ljava/util/List;Lcom/artemchep/keyguard/common/usecase/CipherUrlCheck;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetSuggestionsImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/common/usecase/impl/GetSuggestionsImpl$special$$inlined$allInstances$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetSuggestionsImpl$special$$inlined$allInstances$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetSuggestionsImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetSuggestionsImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetThemeImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetThemeImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetThemeImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetThemeImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetThemeImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetThemeImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetThemeImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetThemeImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetThemeUseAmoledDarkImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetThemeUseAmoledDarkImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetThemeUseAmoledDarkImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetThemeUseAmoledDarkImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetThemeUseAmoledDarkImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetThemeUseAmoledDarkImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetThemeUseAmoledDarkImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetThemeUseAmoledDarkImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetTotpCodeImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetTotpCodeImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetTotpCodeImpl;->(Lcom/artemchep/keyguard/common/service/totp/TotpService;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetTotpCodeImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/common/usecase/impl/GetTotpCodeImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetTotpCodeImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetUseExternalBrowserImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetUseExternalBrowserImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetUseExternalBrowserImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetUseExternalBrowserImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetUseExternalBrowserImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetUseExternalBrowserImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetUseExternalBrowserImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetUseExternalBrowserImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;Lcom/artemchep/keyguard/common/usecase/GetVaultPersist;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl$sharedFlow$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl$sharedFlow$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl$sharedFlow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl$sharedFlow$1;->invoke(ZZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl$sharedFlow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetVaultPersistImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultPersistImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultPersistImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultPersistImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultPersistImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultPersistImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetVaultPersistImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultPersistImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl;->(Lorg/kodein/di/DI;Lcom/artemchep/keyguard/common/service/vault/SessionReadWriteRepository;Lcom/artemchep/keyguard/common/service/vault/KeyReadWriteRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl;->access$getKeyReadWriteRepository$p(Lcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl;)Lcom/artemchep/keyguard/common/service/vault/KeyReadWriteRepository; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl;->access$getSessionReadWriteRepository$p(Lcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl;)Lcom/artemchep/keyguard/common/service/vault/SessionReadWriteRepository; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$Companion; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$Companion;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$sharedFlow$1$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$sharedFlow$1$2;->(Lcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$sharedFlow$1$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$sharedFlow$1$2;->invoke(Lcom/artemchep/keyguard/common/model/MasterSession;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$sharedFlow$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$sharedFlow$1$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$sharedFlow$lambda$2$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$sharedFlow$lambda$2$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$sharedFlow$lambda$2$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$sharedFlow$lambda$2$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$sharedFlow$lambda$2$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$sharedFlow$lambda$2$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$sharedFlow$lambda$2$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$sharedFlow$lambda$2$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$sharedFlow$lambda$2$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$special$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$special$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$special$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$special$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$special$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetWebsiteIconsImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetWebsiteIconsImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetWebsiteIconsImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetWebsiteIconsImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetWebsiteIconsImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetWebsiteIconsImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetWebsiteIconsImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetWebsiteIconsImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetWriteAccessImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetWriteAccessImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetWriteAccessImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetWriteAccessImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/common/usecase/impl/GetWriteAccessImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetWriteAccessImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/MessageHubImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/MessageHubImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/MessageHubImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/MessageHubImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/MessageHubImpl;->register(Ljava/lang/String;Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function0; +Lcom/artemchep/keyguard/common/usecase/impl/MessageHubImpl$Entry; +HSPLcom/artemchep/keyguard/common/usecase/impl/MessageHubImpl$Entry;->(Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V +Lcom/artemchep/keyguard/common/usecase/impl/MessageHubImpl$register$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/MessageHubImpl$register$1;->(Lcom/artemchep/keyguard/common/usecase/impl/MessageHubImpl;Lcom/artemchep/keyguard/common/usecase/impl/MessageHubImpl$Entry;)V +Lcom/artemchep/keyguard/common/usecase/impl/PasskeyTargetCheckImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/PasskeyTargetCheckImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/PasskeyTargetCheckImpl;->(Lcom/artemchep/keyguard/common/service/tld/TldService;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/PasskeyTargetCheckImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/common/usecase/impl/PasskeyTargetCheckImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/PasskeyTargetCheckImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/PutCachePremiumImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/PutCachePremiumImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/PutCachePremiumImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadWriteRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/PutCachePremiumImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/common/usecase/impl/PutCachePremiumImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/PutCachePremiumImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/PutScreenStateImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/PutScreenStateImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/PutScreenStateImpl;->(Lcom/artemchep/keyguard/common/service/state/StateRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/PutScreenStateImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/PutScreenStateImpl;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/PutScreenStateImpl;->invoke(Ljava/lang/String;Ljava/util/Map;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/usecase/impl/PutScreenStateImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/PutScreenStateImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl;->(Lcom/artemchep/keyguard/common/service/vault/SessionReadWriteRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl;->access$getSessionReadWriteRepository$p(Lcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl;)Lcom/artemchep/keyguard/common/service/vault/SessionReadWriteRepository; +HSPLcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl;->invoke(Lcom/artemchep/keyguard/common/model/MasterSession;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl$invoke$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl$invoke$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl;Lcom/artemchep/keyguard/common/model/MasterSession;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl$invoke$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl$invoke$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl$invoke$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl$invoke$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->(Lorg/kodein/di/DI;Lcom/artemchep/keyguard/common/usecase/BiometricStatusUseCase;Lcom/artemchep/keyguard/common/usecase/GetVaultSession;Lcom/artemchep/keyguard/common/usecase/PutVaultSession;Lcom/artemchep/keyguard/common/usecase/DisableBiometric;Lcom/artemchep/keyguard/common/service/vault/FingerprintReadWriteRepository;Lcom/artemchep/keyguard/common/service/vault/SessionMetadataReadWriteRepository;Lcom/artemchep/keyguard/common/usecase/GetBiometricRemainingDuration;Lcom/artemchep/keyguard/common/usecase/BiometricKeyEncryptUseCase;Lcom/artemchep/keyguard/common/usecase/BiometricKeyDecryptUseCase;Lcom/artemchep/keyguard/common/usecase/AuthConfirmMasterKeyUseCase;Lcom/artemchep/keyguard/common/usecase/AuthGenerateMasterKeyUseCase;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->access$create(Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;Lcom/artemchep/keyguard/common/model/AuthResult;Lcom/artemchep/keyguard/common/model/FingerprintBiometric;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->access$createCreateVaultState(Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;Lcom/artemchep/keyguard/common/model/BiometricStatus;)Lcom/artemchep/keyguard/common/model/VaultState; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->access$createMainVaultState(Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;Lcom/artemchep/keyguard/common/model/Fingerprint;Lcom/artemchep/keyguard/common/model/BiometricStatus;Lcom/artemchep/keyguard/common/model/MasterKey;Lorg/kodein/di/DI;)Lcom/artemchep/keyguard/common/model/VaultState; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->access$getDi$p(Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;)Lorg/kodein/di/DI; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->access$getGenerateMasterKey$p(Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->access$unlock(Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;Lcom/artemchep/keyguard/common/model/MasterKey;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->access$writeLastPasswordUseTimestamp(Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->create(Lcom/artemchep/keyguard/common/model/AuthResult;Lcom/artemchep/keyguard/common/model/FingerprintBiometric;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->createCreateVaultState(Lcom/artemchep/keyguard/common/model/BiometricStatus;)Lcom/artemchep/keyguard/common/model/VaultState; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->createMainVaultState(Lcom/artemchep/keyguard/common/model/Fingerprint;Lcom/artemchep/keyguard/common/model/BiometricStatus;Lcom/artemchep/keyguard/common/model/MasterKey;Lorg/kodein/di/DI;)Lcom/artemchep/keyguard/common/model/VaultState; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->createUnlockVaultState(Lcom/artemchep/keyguard/common/model/Fingerprint;Lcom/artemchep/keyguard/common/model/BiometricStatus;Ljava/lang/String;)Lcom/artemchep/keyguard/common/model/VaultState; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->getBiometricStatusFlow()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->invoke()Lkotlinx/coroutines/flow/SharedFlow; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->unlock(Lcom/artemchep/keyguard/common/model/MasterKey;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->writeLastPasswordUseTimestamp()Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$ComplexBiometricStatus; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$ComplexBiometricStatus;->(Lcom/artemchep/keyguard/common/model/BiometricStatus;Lcom/artemchep/keyguard/common/model/BiometricStatus;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$ComplexBiometricStatus;->getForCreate()Lcom/artemchep/keyguard/common/model/BiometricStatus; +PLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$create$$inlined$flatMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;Lcom/artemchep/keyguard/common/model/AuthResult;)V +PLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$create$$inlined$flatMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +PLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$create$$inlined$flatMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +PLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$create$$inlined$flatMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +PLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$create$$inlined$flatMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createCreateVaultState$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createCreateVaultState$1;->(Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createCreateVaultState$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createCreateVaultState$1;->invoke(Ljava/lang/String;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createCreateVaultState$1$invoke$$inlined$flatMap$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createCreateVaultState$1$invoke$$inlined$flatMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createCreateVaultState$1$invoke$$inlined$flatMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createCreateVaultState$1$invoke$$inlined$flatMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createCreateVaultState$1$invoke$$inlined$flatMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createCreateVaultState$1$invoke$$inlined$flatMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createCreateVaultState$1$invoke$$inlined$flatTap$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createCreateVaultState$1$invoke$$inlined$flatTap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createCreateVaultState$1$invoke$$inlined$flatTap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createCreateVaultState$1$invoke$$inlined$flatTap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createCreateVaultState$1$invoke$$inlined$flatTap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createCreateVaultState$1$invoke$$inlined$flatTap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createMainVaultState$$inlined$instance$default$1; +PLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createMainVaultState$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createMainVaultState$getCreateIo$1; +PLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createMainVaultState$getCreateIo$1;->(Lkotlin/jvm/functions/Function1;Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;Lkotlin/Lazy;)V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createMainVaultState$unlockMasterKey$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createMainVaultState$unlockMasterKey$1;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createMainVaultState$unlockMasterKey$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1;->(Lkotlin/jvm/functions/Function1;Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1;->invoke(Ljava/lang/String;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$flatMap$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$flatMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$flatMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$flatMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$flatMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$flatMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$flatTap$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$flatTap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$flatTap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$flatTap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$flatTap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$flatTap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$map$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$map$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$map$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$map$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$map$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$unlockMasterKey$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$unlockMasterKey$1;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$unlockMasterKey$1;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$unlockMasterKey$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$unlockMasterKey$1;->invoke-xshU9yM(Ljava/lang/String;)[B +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$generateMasterKey$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$generateMasterKey$1;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$generateMasterKey$1;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$generateMasterKey$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$generateMasterKey$1;->invoke-xshU9yM(Ljava/lang/String;)[B +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$getBiometricStatusFlow$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$getBiometricStatusFlow$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$getBiometricStatusFlow$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$getBiometricStatusFlow$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$getBiometricStatusFlow$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$getBiometricStatusFlow$lambda$4$$inlined$map$3; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$getBiometricStatusFlow$lambda$4$$inlined$map$3;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/common/model/BiometricStatus;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$getBiometricStatusFlow$lambda$4$$inlined$map$3;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$getBiometricStatusFlow$lambda$4$$inlined$map$3$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$getBiometricStatusFlow$lambda$4$$inlined$map$3$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/common/model/BiometricStatus;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$getBiometricStatusFlow$lambda$4$$inlined$map$3$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$getBiometricStatusFlow$lambda$4$$inlined$map$3$2$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$getBiometricStatusFlow$lambda$4$$inlined$map$3$2$1;->(Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$getBiometricStatusFlow$lambda$4$$inlined$map$3$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$sharedFlow$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$sharedFlow$1;->(Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$sharedFlow$1;->invoke(Lcom/artemchep/keyguard/common/model/Fingerprint;Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$ComplexBiometricStatus;Lcom/artemchep/keyguard/common/model/MasterSession;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$sharedFlow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$sharedFlow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$10; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$10;->()V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$11; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$11;->()V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$4; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$4;->()V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$5; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$5;->()V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$6; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$6;->()V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$7; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$7;->()V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$8; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$8;->()V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$9; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$9;->()V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$unlock$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$unlock$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;Lcom/artemchep/keyguard/common/model/MasterKey;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$unlock$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$unlock$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$unlock$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$unlock$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$unlock$1$moduleDi$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$unlock$1$moduleDi$1;->(Lcom/artemchep/keyguard/common/model/MasterKey;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$unlock$1$moduleDi$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$unlock$1$moduleDi$1;->invoke(Lorg/kodein/di/DI$Builder;)V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$unlock$lambda$12$$inlined$subDI$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$unlock$lambda$12$$inlined$subDI$1;->(Lorg/kodein/di/DI;Lorg/kodein/di/Copy;Lorg/kodein/di/DI$Module;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$unlock$lambda$12$$inlined$subDI$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$unlock$lambda$12$$inlined$subDI$1;->invoke(Lorg/kodein/di/DI$MainBuilder;)V +Lcom/artemchep/keyguard/common/usecase/impl/WindowCoroutineScopeImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/WindowCoroutineScopeImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/WindowCoroutineScopeImpl;->(Lkotlinx/coroutines/CoroutineScope;Lcom/artemchep/keyguard/common/usecase/ShowMessage;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/WindowCoroutineScopeImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/WindowCoroutineScopeImpl;->getCoroutineContext()Lkotlin/coroutines/CoroutineContext; +Lcom/artemchep/keyguard/common/usecase/impl/WindowCoroutineScopeImpl$special$$inlined$CoroutineExceptionHandler$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/WindowCoroutineScopeImpl$special$$inlined$CoroutineExceptionHandler$1;->(Lkotlinx/coroutines/CoroutineExceptionHandler$Key;Lcom/artemchep/keyguard/common/usecase/impl/WindowCoroutineScopeImpl;)V +Lcom/artemchep/keyguard/common/usecase/impl/WindowCoroutineScopeImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/WindowCoroutineScopeImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/util/flow/EventFlow; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow;->()V +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow;->(Lkotlin/coroutines/CoroutineContext;)V +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow;->(Lkotlin/coroutines/CoroutineContext;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow;->access$getChannels$p(Lcom/artemchep/keyguard/common/util/flow/EventFlow;)Ljava/util/Queue; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow;->asFlow()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow;->collect$suspendImpl(Lcom/artemchep/keyguard/common/util/flow/EventFlow;Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow;->emit(Ljava/lang/Object;)V +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow;->getMonitor()Lcom/artemchep/keyguard/common/util/flow/EventFlow; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow;->onActive()V +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow;->onInactive()V +Lcom/artemchep/keyguard/common/util/flow/EventFlow$asFlow$1; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow$asFlow$1;->(Lcom/artemchep/keyguard/common/util/flow/EventFlow;)V +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow$asFlow$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow$asFlow$1;->invoke(Lkotlinx/coroutines/channels/SendChannel;)V +Lcom/artemchep/keyguard/common/util/flow/EventFlow$asFlow$2; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow$asFlow$2;->(Lcom/artemchep/keyguard/common/util/flow/EventFlow;)V +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow$asFlow$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow$asFlow$2;->invoke(Lkotlinx/coroutines/channels/SendChannel;)V +Lcom/artemchep/keyguard/common/util/flow/EventFlow$emit$1; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow$emit$1;->(Ljava/util/List;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow$emit$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow$emit$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/util/flow/EventFlowKt; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlowKt;->access$flowWithLifecycle(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlowKt;->flowWithLifecycle(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/util/flow/EventFlowKt$flowWithLifecycle$1; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlowKt$flowWithLifecycle$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/util/flow/EventFlowKt$flowWithLifecycle$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlowKt$flowWithLifecycle$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlowKt$flowWithLifecycle$1;->invoke(Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlowKt$flowWithLifecycle$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/util/flow/EventFlowKt$flowWithLifecycle$1$1$1; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlowKt$flowWithLifecycle$1$1$1;->(Lkotlinx/coroutines/CancellableContinuation;)V +HSPLcom/artemchep/keyguard/common/util/flow/EventFlowKt$flowWithLifecycle$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlowKt$flowWithLifecycle$1$1$1;->invoke(Ljava/lang/Throwable;)V +Lcom/artemchep/keyguard/common/util/flow/ReadonlyStateFlow; +HSPLcom/artemchep/keyguard/common/util/flow/ReadonlyStateFlow;->(Lkotlinx/coroutines/flow/StateFlow;Lkotlinx/coroutines/Job;)V +HSPLcom/artemchep/keyguard/common/util/flow/ReadonlyStateFlow;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/util/flow/ReadonlyStateFlow;->getValue()Ljava/lang/Object; +Lcom/artemchep/keyguard/common/util/flow/StateInKt; +HSPLcom/artemchep/keyguard/common/util/flow/StateInKt;->()V +HSPLcom/artemchep/keyguard/common/util/flow/StateInKt;->launchSharing(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/MutableStateFlow;Lkotlinx/coroutines/flow/SharingStarted;)Lkotlinx/coroutines/Job; +HSPLcom/artemchep/keyguard/common/util/flow/StateInKt;->persistingStateIn(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/flow/SharingStarted;Ljava/lang/Object;)Lkotlinx/coroutines/flow/StateFlow; +Lcom/artemchep/keyguard/common/util/flow/StateInKt$launchSharing$1; +HSPLcom/artemchep/keyguard/common/util/flow/StateInKt$launchSharing$1;->(Lkotlinx/coroutines/flow/SharingStarted;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/MutableStateFlow;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/util/flow/StateInKt$launchSharing$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/util/flow/StateInKt$launchSharing$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/util/flow/StateInKt$launchSharing$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/util/flow/StateInKt$launchSharing$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/util/flow/StateInKt$launchSharing$1$2; +HSPLcom/artemchep/keyguard/common/util/flow/StateInKt$launchSharing$1$2;->(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/MutableStateFlow;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/util/flow/StateInKt$launchSharing$1$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/util/flow/StateInKt$launchSharing$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/util/flow/StateInKt$launchSharing$1$2;->invoke(Lkotlinx/coroutines/flow/SharingCommand;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/util/flow/StateInKt$launchSharing$1$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/util/flow/StateInKt$launchSharing$1$2$WhenMappings; +HSPLcom/artemchep/keyguard/common/util/flow/StateInKt$launchSharing$1$2$WhenMappings;->()V +Lcom/artemchep/keyguard/copy/Base32ServiceJvm; +HSPLcom/artemchep/keyguard/copy/Base32ServiceJvm;->()V +HSPLcom/artemchep/keyguard/copy/Base32ServiceJvm;->()V +HSPLcom/artemchep/keyguard/copy/Base32ServiceJvm;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/copy/Base64ServiceJvm; +HSPLcom/artemchep/keyguard/copy/Base64ServiceJvm;->()V +HSPLcom/artemchep/keyguard/copy/Base64ServiceJvm;->()V +HSPLcom/artemchep/keyguard/copy/Base64ServiceJvm;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/copy/Base64ServiceJvm;->decode(Ljava/lang/String;)[B +HSPLcom/artemchep/keyguard/copy/Base64ServiceJvm;->decode([B)[B +HSPLcom/artemchep/keyguard/copy/Base64ServiceJvm;->encode([B)[B +Lcom/artemchep/keyguard/copy/ClearDataAndroid; +HSPLcom/artemchep/keyguard/copy/ClearDataAndroid;->()V +HSPLcom/artemchep/keyguard/copy/ClearDataAndroid;->(Landroid/app/Application;)V +HSPLcom/artemchep/keyguard/copy/ClearDataAndroid;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/copy/ClearDataAndroid$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/copy/ClearDataAndroid$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/copy/ClipboardServiceAndroid; +HSPLcom/artemchep/keyguard/copy/ClipboardServiceAndroid;->()V +HSPLcom/artemchep/keyguard/copy/ClipboardServiceAndroid;->(Landroid/app/Application;Landroid/content/ClipboardManager;)V +HSPLcom/artemchep/keyguard/copy/ClipboardServiceAndroid;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/copy/ClipboardServiceAndroid$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/copy/ClipboardServiceAndroid$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/copy/ClipboardServiceAndroid$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/copy/ClipboardServiceAndroid$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/copy/ConnectivityServiceAndroid; +HSPLcom/artemchep/keyguard/copy/ConnectivityServiceAndroid;->()V +HSPLcom/artemchep/keyguard/copy/ConnectivityServiceAndroid;->(Landroid/content/Context;)V +HSPLcom/artemchep/keyguard/copy/ConnectivityServiceAndroid;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/copy/ConnectivityServiceAndroid$availableFlow$1; +HSPLcom/artemchep/keyguard/copy/ConnectivityServiceAndroid$availableFlow$1;->(Lcom/artemchep/keyguard/copy/ConnectivityServiceAndroid;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/copy/ConnectivityServiceAndroid$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/copy/ConnectivityServiceAndroid$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/copy/DateFormatterAndroid; +HSPLcom/artemchep/keyguard/copy/DateFormatterAndroid;->()V +HSPLcom/artemchep/keyguard/copy/DateFormatterAndroid;->()V +HSPLcom/artemchep/keyguard/copy/DateFormatterAndroid;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/copy/GetPasswordStrengthJvm; +HSPLcom/artemchep/keyguard/copy/GetPasswordStrengthJvm;->()V +HSPLcom/artemchep/keyguard/copy/GetPasswordStrengthJvm;->(Lcom/artemchep/keyguard/common/service/wordlist/WordlistService;)V +HSPLcom/artemchep/keyguard/copy/GetPasswordStrengthJvm;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/copy/GetPasswordStrengthJvm$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/copy/GetPasswordStrengthJvm$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/copy/GetPasswordStrengthJvm$zxcvbn$2; +HSPLcom/artemchep/keyguard/copy/GetPasswordStrengthJvm$zxcvbn$2;->()V +HSPLcom/artemchep/keyguard/copy/GetPasswordStrengthJvm$zxcvbn$2;->()V +Lcom/artemchep/keyguard/copy/LinkInfoExtractorAndroid; +HSPLcom/artemchep/keyguard/copy/LinkInfoExtractorAndroid;->()V +HSPLcom/artemchep/keyguard/copy/LinkInfoExtractorAndroid;->(Landroid/content/pm/PackageManager;)V +Lcom/artemchep/keyguard/copy/LinkInfoExtractorExecute; +Lcom/artemchep/keyguard/copy/LinkInfoExtractorLaunch; +Lcom/artemchep/keyguard/copy/LogRepositoryAndroid; +HSPLcom/artemchep/keyguard/copy/LogRepositoryAndroid;->()V +HSPLcom/artemchep/keyguard/copy/LogRepositoryAndroid;->()V +HSPLcom/artemchep/keyguard/copy/LogRepositoryAndroid;->add(Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/common/service/logging/LogLevel;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/copy/LogRepositoryAndroid;->post(Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/common/service/logging/LogLevel;)V +Lcom/artemchep/keyguard/copy/LogRepositoryAndroid$add$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/copy/LogRepositoryAndroid$add$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/copy/LogRepositoryAndroid$add$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/copy/LogRepositoryAndroid$add$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/copy/LogRepositoryAndroid$add$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/copy/LogRepositoryAndroid$add$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/copy/PermissionServiceAndroid; +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid;->()V +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid;->(Landroid/content/Context;)V +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid;->access$checkPermission(Lcom/artemchep/keyguard/copy/PermissionServiceAndroid;Ljava/lang/String;)Lcom/artemchep/keyguard/common/service/permission/PermissionState; +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid;->checkPermission(Ljava/lang/String;)Lcom/artemchep/keyguard/common/service/permission/PermissionState; +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid;->getState(Lcom/artemchep/keyguard/common/service/permission/Permission;)Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/copy/PermissionServiceAndroid$Companion; +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid$Companion;->()V +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/copy/PermissionServiceAndroid$checkPermission$1; +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid$checkPermission$1;->(Ljava/lang/Object;)V +Lcom/artemchep/keyguard/copy/PermissionServiceAndroid$getState$$inlined$map$1; +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid$getState$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/copy/PermissionServiceAndroid;Lcom/artemchep/keyguard/common/service/permission/Permission;)V +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid$getState$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/copy/PermissionServiceAndroid$getState$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid$getState$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/copy/PermissionServiceAndroid;Lcom/artemchep/keyguard/common/service/permission/Permission;)V +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid$getState$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/copy/PermissionServiceAndroid$getState$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid$getState$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/copy/PermissionServiceAndroid$getState$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/copy/PermissionServiceAndroid$getState$1; +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid$getState$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid$getState$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid$getState$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid$getState$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid$getState$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/copy/PermissionServiceAndroid$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/copy/PowerServiceAndroid; +HSPLcom/artemchep/keyguard/copy/PowerServiceAndroid;->()V +HSPLcom/artemchep/keyguard/copy/PowerServiceAndroid;->(Landroid/app/Application;)V +HSPLcom/artemchep/keyguard/copy/PowerServiceAndroid;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/copy/PowerServiceAndroid;->getScreenState()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/copy/PowerServiceAndroid;->getScreenState()Lkotlinx/coroutines/flow/SharedFlow; +Lcom/artemchep/keyguard/copy/PowerServiceAndroid$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/copy/PowerServiceAndroid$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/copy/QueueSyncAllAndroid; +HSPLcom/artemchep/keyguard/copy/QueueSyncAllAndroid;->()V +HSPLcom/artemchep/keyguard/copy/QueueSyncAllAndroid;->(Landroid/content/Context;)V +HSPLcom/artemchep/keyguard/copy/QueueSyncAllAndroid;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/copy/QueueSyncAllAndroid;->access$getContext$p(Lcom/artemchep/keyguard/copy/QueueSyncAllAndroid;)Landroid/content/Context; +HSPLcom/artemchep/keyguard/copy/QueueSyncAllAndroid;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/copy/QueueSyncAllAndroid;->invoke()Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/copy/QueueSyncAllAndroid$invoke$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/copy/QueueSyncAllAndroid$invoke$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/copy/QueueSyncAllAndroid;)V +HSPLcom/artemchep/keyguard/copy/QueueSyncAllAndroid$invoke$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/copy/QueueSyncAllAndroid$invoke$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/copy/QueueSyncAllAndroid$invoke$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/copy/QueueSyncAllAndroid$invoke$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/copy/QueueSyncAllAndroid$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/copy/QueueSyncAllAndroid$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/copy/QueueSyncByIdAndroid; +HSPLcom/artemchep/keyguard/copy/QueueSyncByIdAndroid;->()V +HSPLcom/artemchep/keyguard/copy/QueueSyncByIdAndroid;->(Landroid/content/Context;)V +HSPLcom/artemchep/keyguard/copy/QueueSyncByIdAndroid;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/copy/QueueSyncByIdAndroid$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/copy/QueueSyncByIdAndroid$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/copy/SharedPreferencesStoreFactory; +Lcom/artemchep/keyguard/copy/SharedPreferencesStoreFactoryDefault; +HSPLcom/artemchep/keyguard/copy/SharedPreferencesStoreFactoryDefault;->()V +HSPLcom/artemchep/keyguard/copy/SharedPreferencesStoreFactoryDefault;->()V +HSPLcom/artemchep/keyguard/copy/SharedPreferencesStoreFactoryDefault;->getStore(Lorg/kodein/di/DI;Lcom/artemchep/keyguard/common/service/Files;)Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStore; +Lcom/artemchep/keyguard/copy/SharedPreferencesStoreFactoryDefault$getStore$$inlined$instance$1; +HSPLcom/artemchep/keyguard/copy/SharedPreferencesStoreFactoryDefault$getStore$$inlined$instance$1;->()V +Lcom/artemchep/keyguard/copy/SharedPreferencesStoreFactoryDefault$getStore$$inlined$instance$2; +HSPLcom/artemchep/keyguard/copy/SharedPreferencesStoreFactoryDefault$getStore$$inlined$instance$2;->()V +Lcom/artemchep/keyguard/copy/SubscriptionServiceAndroid; +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid;->()V +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid;->(Lcom/artemchep/keyguard/billing/BillingManager;)V +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid;->getReceiptFlow()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid;->purchased()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$Companion; +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$Companion;->()V +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$getReceiptFlow$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$getReceiptFlow$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/copy/SubscriptionServiceAndroid;)V +Lcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$purchased$$inlined$map$1; +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$purchased$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +Lcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/copy/TextServiceAndroid; +HSPLcom/artemchep/keyguard/copy/TextServiceAndroid;->()V +HSPLcom/artemchep/keyguard/copy/TextServiceAndroid;->(Landroid/content/Context;)V +HSPLcom/artemchep/keyguard/copy/TextServiceAndroid;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/copy/TextServiceAndroid$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/copy/TextServiceAndroid$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/copy/download/DownloadClientJvm; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt;->diFingerprintRepositoryModule()Lorg/kodein/di/DI$Module; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1;->invoke(Lorg/kodein/di/DI$Builder;)V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$1; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$1;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$1;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$10; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$10;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$10;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$10;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$10;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetPurchased; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$11; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$11;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$11;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$11;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$11;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/CleanUpAttachment; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$12; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$12;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$12;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$12;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$12;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/clipboard/ClipboardService; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$13; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$13;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$13;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$13;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$13;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/connectivity/ConnectivityService; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$14; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$14;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$14;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$14;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$14;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/power/PowerService; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$15; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$15;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$15;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$15;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$15;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/copy/PermissionServiceAndroid; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$16; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$16;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$16;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$16;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$16;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/permission/PermissionService; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$16$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$16$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$17; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$17;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$17;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$17;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$17;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/copy/LinkInfoExtractorAndroid; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$17$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$17$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$18; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$18;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$18;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$19; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$19;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$19;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$2; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$2;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$2;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$2;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/BiometricStatusUseCase; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$20; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$20;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$20;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$20;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$20;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/text/TextService; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$21; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$21;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$21;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$22; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$22;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$22;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$22;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$22;->invoke(Lorg/kodein/di/DirectDI;)Landroid/content/pm/PackageManager; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$22$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$22$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$23; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$23;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$23;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$24; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$24;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$24;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$25; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$25;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$25;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$25;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$25;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/android/downloader/journal/DownloadRepository; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$26; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$26;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$26;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$27; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$27;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$27;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$27;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$27;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/subscription/SubscriptionService; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$28; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$28;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$28;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$28;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$28;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/ClearData; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$29; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$29;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$29;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$29;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$29;->invoke(Lorg/kodein/di/bindings/BindingDI;Lcom/artemchep/keyguard/common/service/Files;)Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStore; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$29$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$29$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$3; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$3;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$3;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$30; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$30;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$30;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$30;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$30;->invoke(Lorg/kodein/di/bindings/BindingDI;Lcom/artemchep/keyguard/common/service/Files;)Ldb_key_value/crypto_prefs/SecurePrefKeyValueStore; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$30$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$30$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$31; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$31;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$31;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$31;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$31;->invoke(Lorg/kodein/di/bindings/BindingDI;Lcom/artemchep/keyguard/common/service/Files;)Ldb_key_value/shared_prefs/SharedPrefsKeyValueStore; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$31$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$31$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$32; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$32;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$32;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$32;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$32;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/copy/SharedPreferencesStoreFactory; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$33; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$33;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$33;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$33;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$33;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$33$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$33$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$33$invoke$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$33$invoke$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$34; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$34;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$34;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$34;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$34;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/logging/LogRepository; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$4; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$4;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$4;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$4;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$4;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetBiometricRemainingDuration; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$5; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$5;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$5;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$5;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$5;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/DisableBiometric; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$6; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$6;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$6;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$7; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$7;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$7;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$8; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$8;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$8;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$9; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$9;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$9;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$9;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$9;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetSuggestions; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bind$default$1; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bind$default$1;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bind$default$2; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bind$default$2;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bind$default$3; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bind$default$3;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindProvider$default$1; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindProvider$default$1;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindProvider$default$2; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindProvider$default$2;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindProvider$default$3; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindProvider$default$3;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$1; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$1;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$10; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$10;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$11; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$11;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$12; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$12;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$13; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$13;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$14; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$14;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$15; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$15;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$16; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$16;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$17; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$17;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$18; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$18;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$19; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$19;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$2; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$2;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$20; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$20;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$21; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$21;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$22; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$22;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$23; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$23;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$24; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$24;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$25; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$25;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$26; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$26;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$27; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$27;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$28; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$28;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$3; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$3;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$4; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$4;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$5; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$5;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$6; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$6;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$7; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$7;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$8; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$8;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$9; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$9;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$factory$1; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$factory$1;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$factory$2; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$factory$2;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$multiton$default$1; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$multiton$default$1;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$multiton$default$2; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$multiton$default$2;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$multiton$default$3; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$multiton$default$3;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$multiton$default$4; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$multiton$default$4;->()V +Lcom/artemchep/keyguard/core/session/usecase/BiometricStatusUseCaseImpl; +HSPLcom/artemchep/keyguard/core/session/usecase/BiometricStatusUseCaseImpl;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/BiometricStatusUseCaseImpl;->(Landroid/app/Application;)V +HSPLcom/artemchep/keyguard/core/session/usecase/BiometricStatusUseCaseImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/core/session/usecase/BiometricStatusUseCaseImpl;->hasStrongBiometric()Z +HSPLcom/artemchep/keyguard/core/session/usecase/BiometricStatusUseCaseImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/BiometricStatusUseCaseImpl;->invoke()Lkotlinx/coroutines/flow/MutableStateFlow; +Lcom/artemchep/keyguard/core/session/usecase/BiometricStatusUseCaseImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/session/usecase/BiometricStatusUseCaseImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt;->createSubDi(Lorg/kodein/di/DI$Builder;Lcom/artemchep/keyguard/common/model/MasterKey;)V +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$$inlined$bindSingleton$default$1; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$$inlined$bindSingleton$default$1;->()V +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$$inlined$bindSingleton$default$2; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$$inlined$bindSingleton$default$2;->()V +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$$inlined$bindSingleton$default$3; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$$inlined$bindSingleton$default$3;->()V +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$$inlined$bindSingleton$default$4; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$$inlined$bindSingleton$default$4;->()V +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$1; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$1;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$1;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$1;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/QueueSyncAll; +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$2; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$2;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$2;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$2;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/QueueSyncById; +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$3; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$3;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$3;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$3;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/NotificationsWorker; +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4;->(Lcom/artemchep/keyguard/common/model/MasterKey;)V +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/core/store/DatabaseManager; +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$invoke$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$invoke$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$invoke$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$invoke$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$invoke$$inlined$instance$default$4; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$invoke$$inlined$instance$default$4;->()V +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$invoke$$inlined$instance$default$5; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$invoke$$inlined$instance$default$5;->()V +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$invoke$$inlined$instance$default$6; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$invoke$$inlined$instance$default$6;->()V +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$sqlManager$1; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$sqlManager$1;->(Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;)V +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$sqlManager$1;->invoke(Lcom/artemchep/keyguard/data/Database;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$sqlManager$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$sqlManager$1$2; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$sqlManager$1$2;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$sqlManager$1$2;->()V +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$sqlManager$1$invoke$$inlined$flatMap$1; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$sqlManager$1$invoke$$inlined$flatMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;Lcom/artemchep/keyguard/data/Database;)V +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$sqlManager$1$invoke$$inlined$flatMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$sqlManager$1$invoke$$inlined$flatMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$sqlManager$1$invoke$$inlined$flatMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$sqlManager$1$invoke$$inlined$flatMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2; +HSPLcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2;->(Landroid/content/Context;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2;->access$getContext$p(Lcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2;)Landroid/content/Context; +HSPLcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2;->access$getOnCreate$p(Lcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2;->create(Lcom/artemchep/keyguard/common/model/MasterKey;Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2$Callback; +HSPLcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2$Callback;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2$Callback;->onConfigure(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +Lcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2$Helper; +HSPLcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2$Helper;->(Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/Database;Landroidx/sqlite/db/SupportSQLiteOpenHelper;)V +HSPLcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2$Helper;->getDatabase()Lcom/artemchep/keyguard/data/Database; +Lcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2$create$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2$create$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/model/MasterKey;Lcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2$create$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2$create$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2$create$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2$create$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt;->createSubDi2(Lorg/kodein/di/DI$Builder;Lcom/artemchep/keyguard/common/model/MasterKey;)V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$1; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$1;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$10; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$10;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$11; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$11;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$12; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$12;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$13; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$13;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$14; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$14;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$15; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$15;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$16; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$16;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$17; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$17;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$18; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$18;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$19; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$19;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$2; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$2;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$20; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$20;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$21; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$21;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$22; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$22;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$23; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$23;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$24; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$24;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$25; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$25;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$26; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$26;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$27; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$27;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$28; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$28;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$29; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$29;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$3; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$3;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$30; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$30;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$31; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$31;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$32; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$32;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$33; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$33;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$34; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$34;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$35; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$35;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$36; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$36;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$37; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$37;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$38; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$38;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$39; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$39;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$4; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$4;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$40; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$40;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$41; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$41;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$42; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$42;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$43; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$43;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$44; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$44;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$45; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$45;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$46; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$46;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$47; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$47;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$48; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$48;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$49; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$49;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$5; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$5;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$50; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$50;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$51; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$51;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$52; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$52;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$53; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$53;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$54; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$54;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$55; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$55;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$56; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$56;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$57; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$57;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$58; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$58;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$59; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$59;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$6; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$6;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$60; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$60;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$61; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$61;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$62; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$62;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$63; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$63;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$64; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$64;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$65; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$65;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$66; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$66;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$67; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$67;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$68; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$68;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$69; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$69;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$7; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$7;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$70; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$70;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$71; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$71;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$72; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$72;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$73; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$73;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$74; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$74;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$75; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$75;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$76; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$76;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$77; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$77;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$78; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$78;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$79; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$79;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$8; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$8;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$80; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$80;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$81; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$81;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$82; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$82;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$83; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$83;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$84; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$84;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$85; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$85;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$86; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$86;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$87; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$87;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$88; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$88;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$89; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$89;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$9; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$9;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$90; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$90;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$91; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$91;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$92; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$92;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$93; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$93;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$94; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$94;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$95; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$95;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$96; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$96;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$97; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$97;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$98; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$98;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$99; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$99;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$1; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$1;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$1;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$10; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$10;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$10;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$11; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$11;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$11;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$11;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$11;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetCiphers; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$12; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$12;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$12;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$13; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$13;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$13;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$13;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$13;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetCollections; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$14; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$14;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$14;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$14;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$14;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetOrganizations; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$15; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$15;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$15;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$16; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$16;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$16;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$16;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$16;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetFolders; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$17; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$17;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$17;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$17;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$17;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetFolderTree; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$18; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$18;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$18;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$19; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$19;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$19;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$19;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$19;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetProfiles; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$2; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$2;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$2;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$20; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$20;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$20;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$20;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$20;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetMetas; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$21; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$21;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$21;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$22; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$22;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$22;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$23; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$23;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$23;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$24; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$24;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$24;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$25; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$25;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$25;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$26; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$26;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$26;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$26;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$26;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$27; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$27;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$27;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$27;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$27;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyFolderById; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$28; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$28;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$28;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$29; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$29;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$29;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$29;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$29;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$3; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$3;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$3;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$30; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$30;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$30;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$30;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$30;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/TrashCipherById; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$31; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$31;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$31;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$32; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$32;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$32;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$32;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$32;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/RestoreCipherById; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$33; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$33;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$33;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$33;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$33;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/MoveCipherToFolderById; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$34; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$34;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$34;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$34;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$34;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/RemoveCipherById; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$35; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$35;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$35;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$36; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$36;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$36;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$37; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$37;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$37;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$37;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$37;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/ChangeCipherPasswordById; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$38; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$38;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$38;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$38;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$38;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/ChangeCipherNameById; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$39; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$39;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$39;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$4; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$4;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$4;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$40; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$40;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$40;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$41; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$41;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$41;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$42; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$42;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$42;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$42;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$42;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/CipherToolbox; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$43; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$43;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$43;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$44; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$44;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$44;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$45; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$45;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$45;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$45;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$45;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/CipherMerge; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$46; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$46;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$46;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$47; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$47;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$47;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$48; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$48;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$48;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$49; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$49;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$49;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$49;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$49;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/RenameFolderById; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$5; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$5;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$5;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$50; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$50;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$50;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$51; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$51;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$51;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$52; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$52;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$52;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$53; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$53;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$53;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$53;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$53;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/AddFolder; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$54; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$54;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$54;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$55; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$55;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$55;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$56; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$56;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$56;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$57; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$57;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$57;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$58; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$58;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$58;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$59; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$59;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$59;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$6; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$6;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$6;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$60; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$60;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$60;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$61; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$61;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$61;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$62; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$62;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$62;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$63; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$63;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$63;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$64; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$64;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$64;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$65; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$65;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$65;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$65;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$65;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetCipherOpenedHistory; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$66; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$66;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$66;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$67; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$67;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$67;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$68; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$68;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$68;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$68;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$68;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/android/downloader/journal/CipherHistoryOpenedRepository; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$69; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$69;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$69;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$7; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$7;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$7;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$7;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$7;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetAccounts; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$70; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$70;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$70;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$71; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$71;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$71;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$72; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$72;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$72;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$73; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$73;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$73;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$74; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$74;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$74;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$75; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$75;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$75;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$76; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$76;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$76;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$77; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$77;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$77;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$78; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$78;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$78;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$79; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$79;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$79;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$79;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$79;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/FavouriteCipherById; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$8; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$8;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$8;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$8;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$8;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetAccountStatus; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$80; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$80;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$80;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$80;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$80;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/RePromptCipherById; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$81; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$81;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$81;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$81;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$81;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/CopyCipherById; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$82; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$82;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$82;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$83; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$83;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$83;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$84; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$84;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$84;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$84;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$84;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/SyncAll; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$85; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$85;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$85;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$86; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$86;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$86;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$86;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$86;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByToken; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$87; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$87;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$87;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$87;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$87;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/WatchdogImpl; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$88; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$88;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$88;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$88;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$88;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/Watchdog; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$88$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$88$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$89; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$89;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$89;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$89;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$89;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/SupervisorRead; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$89$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$89$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$9; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$9;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$9;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$90; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$90;->(Lcom/artemchep/keyguard/common/model/MasterKey;)V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$91; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$91;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$91;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$91;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$91;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenTokenRepository; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$92; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$92;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$92;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$93; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$93;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$93;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$93;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$93;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenCipherRepository; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$94; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$94;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$94;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$94;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$94;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenCollectionRepository; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$95; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$95;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$95;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$95;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$95;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenOrganizationRepository; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$96; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$96;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$96;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$96;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$96;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenFolderRepository; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$97; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$97;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$97;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$97;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$97;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenProfileRepository; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$98; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$98;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$98;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$98;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$98;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenMetaRepository; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$99; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$99;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$99;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$99;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$99;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/core/store/DatabaseSyncer; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$99$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$99$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/store/BitwardenCipherToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/BitwardenCipherToStringAdapter;->(Lkotlinx/serialization/json/Json;)V +Lcom/artemchep/keyguard/core/store/BitwardenCollectionToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/BitwardenCollectionToStringAdapter;->(Lkotlinx/serialization/json/Json;)V +Lcom/artemchep/keyguard/core/store/BitwardenFolderToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/BitwardenFolderToStringAdapter;->(Lkotlinx/serialization/json/Json;)V +Lcom/artemchep/keyguard/core/store/BitwardenMetaToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/BitwardenMetaToStringAdapter;->(Lkotlinx/serialization/json/Json;)V +Lcom/artemchep/keyguard/core/store/BitwardenOrganizationToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/BitwardenOrganizationToStringAdapter;->(Lkotlinx/serialization/json/Json;)V +Lcom/artemchep/keyguard/core/store/BitwardenProfileToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/BitwardenProfileToStringAdapter;->(Lkotlinx/serialization/json/Json;)V +Lcom/artemchep/keyguard/core/store/BitwardenSendToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/BitwardenSendToStringAdapter;->(Lkotlinx/serialization/json/Json;)V +Lcom/artemchep/keyguard/core/store/BitwardenTokenToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/BitwardenTokenToStringAdapter;->(Lkotlinx/serialization/json/Json;)V +Lcom/artemchep/keyguard/core/store/DatabaseDispatcher; +HSPLcom/artemchep/keyguard/core/store/DatabaseDispatcher;->()V +HSPLcom/artemchep/keyguard/core/store/DatabaseDispatcher;->()V +Lcom/artemchep/keyguard/core/store/DatabaseManager; +Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;->()V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;->(Landroid/content/Context;Lkotlinx/serialization/json/Json;Ljava/lang/String;Lcom/artemchep/keyguard/common/model/MasterKey;)V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;->access$getApplicationContext$p(Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;)Landroid/content/Context; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;->access$getDbFileIo$p(Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;->access$getDbIo$p(Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;->access$getName$p(Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;->migrateIfExists(Lcom/artemchep/keyguard/data/Database;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$Companion; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$Companion;->()V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$migrateIfExists$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$migrateIfExists$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Lkotlin/coroutines/CoroutineContext;Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;Lcom/artemchep/keyguard/data/Database;)V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$migrateIfExists$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$migrateIfExists$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$migrateIfExists$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$migrateIfExists$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$migrateIfExists$$inlined$ioEffect$1$1; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$migrateIfExists$$inlined$ioEffect$1$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;Lcom/artemchep/keyguard/data/Database;)V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$migrateIfExists$$inlined$ioEffect$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$migrateIfExists$$inlined$ioEffect$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$effectMap$1; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$effectMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;)V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$effectMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$effectMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$effectMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$effectMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;)V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$retry$1; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$retry$1;->(Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function1;Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;)V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$retry$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$retry$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$retry$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$retry$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl;->()V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl;->(Lcom/artemchep/keyguard/common/service/logging/LogRepository;Lkotlinx/serialization/json/Json;Lcom/artemchep/keyguard/core/store/SqlManager;Lcom/artemchep/keyguard/common/model/MasterKey;)V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl;->access$getBitwardenCipherToStringAdapter$p(Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl;)Lcom/artemchep/keyguard/core/store/BitwardenCipherToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl;->access$getBitwardenCollectionToStringAdapter$p(Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl;)Lcom/artemchep/keyguard/core/store/BitwardenCollectionToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl;->access$getBitwardenFolderToStringAdapter$p(Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl;)Lcom/artemchep/keyguard/core/store/BitwardenFolderToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl;->access$getBitwardenMetaToStringAdapter$p(Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl;)Lcom/artemchep/keyguard/core/store/BitwardenMetaToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl;->access$getBitwardenOrganizationToStringAdapter$p(Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl;)Lcom/artemchep/keyguard/core/store/BitwardenOrganizationToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl;->access$getBitwardenProfileToStringAdapter$p(Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl;)Lcom/artemchep/keyguard/core/store/BitwardenProfileToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl;->access$getBitwardenSendToStringAdapter$p(Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl;)Lcom/artemchep/keyguard/core/store/BitwardenSendToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl;->access$getBitwardenTokenToStringAdapter$p(Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl;)Lcom/artemchep/keyguard/core/store/BitwardenTokenToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl;->access$getHibpAccountBreachToStringAdapter$p(Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl;)Lcom/artemchep/keyguard/core/store/HibpAccountBreachToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl;->access$getMutex$cp()Lkotlinx/coroutines/sync/Mutex; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl;->access$getSqlManager$p(Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl;)Lcom/artemchep/keyguard/core/store/SqlManager; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl;->get()Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl;->mutate(Lkotlin/jvm/functions/Function2;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl$Companion; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$Companion;->()V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl$dbIo$1$databaseFactory$1; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$dbIo$1$databaseFactory$1;->(Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl;)V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$dbIo$1$databaseFactory$1;->invoke(Lapp/cash/sqldelight/db/SqlDriver;)Lcom/artemchep/keyguard/data/Database; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$dbIo$1$databaseFactory$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl$get$$inlined$map$1; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$get$$inlined$map$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$get$$inlined$map$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$get$$inlined$map$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$get$$inlined$map$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$get$$inlined$map$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl$mutate$$inlined$effectMap$1; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$mutate$$inlined$effectMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$mutate$$inlined$effectMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$mutate$$inlined$effectMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$mutate$$inlined$effectMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$mutate$$inlined$effectMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl$mutate$$inlined$effectMap$1$1; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$mutate$$inlined$effectMap$1$1;->(Ljava/lang/Object;Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$mutate$$inlined$effectMap$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$mutate$$inlined$effectMap$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl$special$$inlined$effectMap$1; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$special$$inlined$effectMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl;)V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$special$$inlined$effectMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$special$$inlined$effectMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$special$$inlined$effectMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$special$$inlined$effectMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl$special$$inlined$retry$1; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$special$$inlined$retry$1;->(Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$special$$inlined$retry$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$special$$inlined$retry$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$special$$inlined$retry$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$special$$inlined$retry$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/DatabaseSyncer; +HSPLcom/artemchep/keyguard/core/store/DatabaseSyncer;->()V +HSPLcom/artemchep/keyguard/core/store/DatabaseSyncer;->(Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator;)V +Lcom/artemchep/keyguard/core/store/HibpAccountBreachToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/HibpAccountBreachToStringAdapter;->(Lkotlinx/serialization/json/Json;)V +Lcom/artemchep/keyguard/core/store/InstantToLongAdapter; +HSPLcom/artemchep/keyguard/core/store/InstantToLongAdapter;->()V +HSPLcom/artemchep/keyguard/core/store/InstantToLongAdapter;->()V +Lcom/artemchep/keyguard/core/store/ObjectToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/ObjectToStringAdapter;->()V +HSPLcom/artemchep/keyguard/core/store/ObjectToStringAdapter;->(Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/json/Json;)V +Lcom/artemchep/keyguard/core/store/ObjectToStringAdapter$Companion; +HSPLcom/artemchep/keyguard/core/store/ObjectToStringAdapter$Companion;->()V +HSPLcom/artemchep/keyguard/core/store/ObjectToStringAdapter$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/core/store/SqlHelper; +Lcom/artemchep/keyguard/core/store/SqlManager; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$$serializer; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$$serializer;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$$serializer;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Local; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Local;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Local$$serializer; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Local$$serializer;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Local$$serializer;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Local$$serializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Local$Companion; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Local$Companion;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Local$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Local$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Remote; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Remote;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Remote$$serializer; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Remote$$serializer;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Remote$$serializer;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Remote$$serializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Remote$Companion; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Remote$Companion;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Remote$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Remote$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Companion; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Companion;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Field$$serializer; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Field$$serializer;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Field$$serializer;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Field$$serializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType;->$values()[Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType;->(Ljava/lang/String;I)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType;->access$get$cachedSerializer$delegate$cp()Lkotlin/Lazy; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType;->values()[Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType$Companion; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType$Companion;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType$Companion;->get$cachedSerializer()Lkotlinx/serialization/KSerializer; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType$Companion$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType$Companion$1;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType$Companion$1;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType$Companion$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType$Companion$1;->invoke()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type;->$values()[Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type;->(Ljava/lang/String;I)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type;->access$get$cachedSerializer$delegate$cp()Lkotlin/Lazy; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type;->values()[Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type$Companion; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type$Companion;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type$Companion;->get$cachedSerializer()Lkotlinx/serialization/KSerializer; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type$Companion$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type$Companion$1;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type$Companion$1;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type$Companion$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type$Companion$1;->invoke()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl;->(Lcom/artemchep/keyguard/core/store/DatabaseManager;Lkotlinx/coroutines/CoroutineDispatcher;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl;->access$getDispatcher$p(Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl;)Lkotlinx/coroutines/CoroutineDispatcher; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl;->get()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$get$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$get$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$get$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$get$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$get$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$get$1$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$get$1$1;->(Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$get$lambda$2$$inlined$map$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$get$lambda$2$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$get$lambda$2$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$get$lambda$2$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$get$lambda$2$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$get$lambda$2$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$get$lambda$2$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$get$lambda$2$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$get$lambda$2$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$special$$inlined$instance$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$special$$inlined$instance$1;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollection; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollection;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollection$$serializer; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollection$$serializer;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollection$$serializer;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollection$Companion; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollection$Companion;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollection$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollection$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl;->(Lcom/artemchep/keyguard/core/store/DatabaseManager;Lkotlinx/coroutines/CoroutineDispatcher;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl;->access$getDispatcher$p(Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl;)Lkotlinx/coroutines/CoroutineDispatcher; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl;->get()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$get$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$get$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$get$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$get$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$get$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$get$lambda$2$$inlined$map$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$get$lambda$2$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$get$lambda$2$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$get$lambda$2$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$get$lambda$2$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$get$lambda$2$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$get$lambda$2$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$get$lambda$2$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$get$lambda$2$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$special$$inlined$instance$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$special$$inlined$instance$1;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolder; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolder;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolder$$serializer; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolder$$serializer;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolder$$serializer;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolder$Companion; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolder$Companion;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolder$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolder$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl;->(Lcom/artemchep/keyguard/core/store/DatabaseManager;Lkotlinx/coroutines/CoroutineDispatcher;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl;->access$getDispatcher$p(Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl;)Lkotlinx/coroutines/CoroutineDispatcher; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl;->get()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$get$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$get$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$get$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$get$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$get$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$get$lambda$2$$inlined$map$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$get$lambda$2$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$get$lambda$2$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$get$lambda$2$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$get$lambda$2$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$get$lambda$2$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$get$lambda$2$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$get$lambda$2$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$get$lambda$2$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$special$$inlined$instance$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$special$$inlined$instance$1;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$$serializer; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$$serializer;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$$serializer;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$Companion; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$Companion;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$LastSyncResult; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$LastSyncResult$Failure; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$LastSyncResult$Failure$$serializer; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$LastSyncResult$Failure$$serializer;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$LastSyncResult$Failure$$serializer;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$LastSyncResult$Failure$$serializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$LastSyncResult$Success; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$LastSyncResult$Success;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$LastSyncResult$Success;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$LastSyncResult$Success$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$LastSyncResult$Success$1;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$LastSyncResult$Success$1;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl;->(Lcom/artemchep/keyguard/core/store/DatabaseManager;Lkotlinx/coroutines/CoroutineDispatcher;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl;->access$getDispatcher$p(Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl;)Lkotlinx/coroutines/CoroutineDispatcher; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl;->get()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$get$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$get$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$get$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$get$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$get$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$get$lambda$2$$inlined$map$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$get$lambda$2$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$get$lambda$2$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$get$lambda$2$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$get$lambda$2$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$get$lambda$2$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$get$lambda$2$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$get$lambda$2$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$get$lambda$2$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$special$$inlined$instance$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$special$$inlined$instance$1;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganization; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganization;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganization$$serializer; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganization$$serializer;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganization$$serializer;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganization$Companion; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganization$Companion;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganization$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganization$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl;->(Lcom/artemchep/keyguard/core/store/DatabaseManager;Lkotlinx/coroutines/CoroutineDispatcher;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl;->access$getDispatcher$p(Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl;)Lkotlinx/coroutines/CoroutineDispatcher; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl;->get()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$get$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$get$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$get$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$get$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$get$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$get$lambda$2$$inlined$map$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$get$lambda$2$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$get$lambda$2$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$get$lambda$2$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$get$lambda$2$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$get$lambda$2$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$get$lambda$2$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$get$lambda$2$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$get$lambda$2$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$special$$inlined$instance$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$special$$inlined$instance$1;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfile; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfile;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfile$$serializer; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfile$$serializer;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfile$$serializer;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfile$Companion; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfile$Companion;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfile$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfile$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl;->(Lcom/artemchep/keyguard/core/store/DatabaseManager;Lkotlinx/coroutines/CoroutineDispatcher;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl;->access$getDispatcher$p(Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl;)Lkotlinx/coroutines/CoroutineDispatcher; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl;->get()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$get$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$get$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$get$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$get$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$get$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$get$lambda$2$$inlined$map$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$get$lambda$2$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$get$lambda$2$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$get$lambda$2$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$get$lambda$2$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$get$lambda$2$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$get$lambda$2$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$get$lambda$2$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$get$lambda$2$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$special$$inlined$instance$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$special$$inlined$instance$1;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$$serializer; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$$serializer;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$$serializer;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Companion; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Companion;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type;->$values()[Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type;->(Ljava/lang/String;I)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type;->access$get$cachedSerializer$delegate$cp()Lkotlin/Lazy; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type;->values()[Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type$Companion; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type$Companion;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type$Companion;->get$cachedSerializer()Lkotlinx/serialization/KSerializer; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type$Companion$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type$Companion$1;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type$Companion$1;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type$Companion$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type$Companion$1;->invoke()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenService$Has; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenToken; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenToken;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenToken$$serializer; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenToken$$serializer;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenToken$$serializer;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenToken$Companion; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenToken$Companion;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenToken$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenToken$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl;->(Lcom/artemchep/keyguard/core/store/DatabaseManager;Lkotlinx/coroutines/CoroutineDispatcher;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl;->access$getDispatcher$p(Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl;)Lkotlinx/coroutines/CoroutineDispatcher; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl;->get()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl;->getSnapshot()Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$get$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$get$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$get$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$get$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$get$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$get$lambda$2$$inlined$map$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$get$lambda$2$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$get$lambda$2$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$get$lambda$2$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$get$lambda$2$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$get$lambda$2$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$get$lambda$2$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$get$lambda$2$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$get$lambda$2$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$special$$inlined$instance$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$special$$inlined$instance$1;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/crypto/CipherEncryptorImpl; +HSPLcom/artemchep/keyguard/crypto/CipherEncryptorImpl;->()V +HSPLcom/artemchep/keyguard/crypto/CipherEncryptorImpl;->(Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator;Lcom/artemchep/keyguard/common/service/text/Base64Service;)V +HSPLcom/artemchep/keyguard/crypto/CipherEncryptorImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/crypto/CipherEncryptorImpl$Companion; +HSPLcom/artemchep/keyguard/crypto/CipherEncryptorImpl$Companion;->()V +HSPLcom/artemchep/keyguard/crypto/CipherEncryptorImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/crypto/CipherEncryptorImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/crypto/CipherEncryptorImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/crypto/CipherEncryptorImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/crypto/CipherEncryptorImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/crypto/CryptoGeneratorJvm; +HSPLcom/artemchep/keyguard/crypto/CryptoGeneratorJvm;->()V +HSPLcom/artemchep/keyguard/crypto/CryptoGeneratorJvm;->()V +HSPLcom/artemchep/keyguard/crypto/CryptoGeneratorJvm;->getSecureRandom()Ljava/security/SecureRandom; +HSPLcom/artemchep/keyguard/crypto/CryptoGeneratorJvm;->hkdf([B[B[BI)[B +HSPLcom/artemchep/keyguard/crypto/CryptoGeneratorJvm;->pbkdf2([B[BII)[B +HSPLcom/artemchep/keyguard/crypto/CryptoGeneratorJvm;->seed(I)[B +Lcom/artemchep/keyguard/crypto/CryptoGeneratorJvm$Companion; +HSPLcom/artemchep/keyguard/crypto/CryptoGeneratorJvm$Companion;->()V +HSPLcom/artemchep/keyguard/crypto/CryptoGeneratorJvm$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/crypto/CryptoGeneratorJvm$secureRandom$2; +HSPLcom/artemchep/keyguard/crypto/CryptoGeneratorJvm$secureRandom$2;->()V +HSPLcom/artemchep/keyguard/crypto/CryptoGeneratorJvm$secureRandom$2;->()V +HSPLcom/artemchep/keyguard/crypto/CryptoGeneratorJvm$secureRandom$2;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/crypto/CryptoGeneratorJvm$secureRandom$2;->invoke()Ljava/security/SecureRandom; +Lcom/artemchep/keyguard/crypto/util/HkdfKt; +HSPLcom/artemchep/keyguard/crypto/util/HkdfKt;->hkdf(Lorg/bouncycastle/crypto/Digest;[B[B[BI)[B +HSPLcom/artemchep/keyguard/crypto/util/HkdfKt;->hkdfSha256([B[B[BI)[B +Lcom/artemchep/keyguard/crypto/util/Pbkdf2Kt; +HSPLcom/artemchep/keyguard/crypto/util/Pbkdf2Kt;->pbkdf2(Lorg/bouncycastle/crypto/Digest;[B[BII)[B +HSPLcom/artemchep/keyguard/crypto/util/Pbkdf2Kt;->pbkdf2Sha256([B[BII)[B +Lcom/artemchep/keyguard/data/CipherUsageHistory$Adapter; +HSPLcom/artemchep/keyguard/data/CipherUsageHistory$Adapter;->()V +HSPLcom/artemchep/keyguard/data/CipherUsageHistory$Adapter;->(Lapp/cash/sqldelight/ColumnAdapter;)V +Lcom/artemchep/keyguard/data/CipherUsageHistoryQueries; +HSPLcom/artemchep/keyguard/data/CipherUsageHistoryQueries;->()V +HSPLcom/artemchep/keyguard/data/CipherUsageHistoryQueries;->(Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/CipherUsageHistory$Adapter;)V +Lcom/artemchep/keyguard/data/Database; +HSPLcom/artemchep/keyguard/data/Database;->()V +Lcom/artemchep/keyguard/data/Database$Companion; +HSPLcom/artemchep/keyguard/data/Database$Companion;->()V +HSPLcom/artemchep/keyguard/data/Database$Companion;->()V +HSPLcom/artemchep/keyguard/data/Database$Companion;->getSchema()Lapp/cash/sqldelight/db/SqlSchema; +HSPLcom/artemchep/keyguard/data/Database$Companion;->invoke(Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/bitwarden/Account$Adapter;Lcom/artemchep/keyguard/data/pwnage/AccountBreach$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Cipher$Adapter;Lcom/artemchep/keyguard/data/CipherUsageHistory$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Collection$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Folder$Adapter;Lcom/artemchep/keyguard/data/GeneratorEmailRelay$Adapter;Lcom/artemchep/keyguard/data/GeneratorHistory$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Meta$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Organization$Adapter;Lcom/artemchep/keyguard/data/pwnage/PasswordBreach$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Profile$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Send$Adapter;)Lcom/artemchep/keyguard/data/Database; +Lcom/artemchep/keyguard/data/GeneratorEmailRelay$Adapter; +HSPLcom/artemchep/keyguard/data/GeneratorEmailRelay$Adapter;->()V +HSPLcom/artemchep/keyguard/data/GeneratorEmailRelay$Adapter;->(Lapp/cash/sqldelight/ColumnAdapter;)V +Lcom/artemchep/keyguard/data/GeneratorEmailRelayQueries; +HSPLcom/artemchep/keyguard/data/GeneratorEmailRelayQueries;->()V +HSPLcom/artemchep/keyguard/data/GeneratorEmailRelayQueries;->(Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/GeneratorEmailRelay$Adapter;)V +Lcom/artemchep/keyguard/data/GeneratorHistory$Adapter; +HSPLcom/artemchep/keyguard/data/GeneratorHistory$Adapter;->()V +HSPLcom/artemchep/keyguard/data/GeneratorHistory$Adapter;->(Lapp/cash/sqldelight/ColumnAdapter;)V +Lcom/artemchep/keyguard/data/GeneratorHistoryQueries; +HSPLcom/artemchep/keyguard/data/GeneratorHistoryQueries;->()V +HSPLcom/artemchep/keyguard/data/GeneratorHistoryQueries;->(Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/GeneratorHistory$Adapter;)V +Lcom/artemchep/keyguard/data/bitwarden/Account$Adapter; +HSPLcom/artemchep/keyguard/data/bitwarden/Account$Adapter;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/Account$Adapter;->(Lapp/cash/sqldelight/ColumnAdapter;)V +Lcom/artemchep/keyguard/data/bitwarden/AccountQueries; +HSPLcom/artemchep/keyguard/data/bitwarden/AccountQueries;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/AccountQueries;->(Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/bitwarden/Account$Adapter;)V +HSPLcom/artemchep/keyguard/data/bitwarden/AccountQueries;->get()Lapp/cash/sqldelight/Query; +HSPLcom/artemchep/keyguard/data/bitwarden/AccountQueries;->get(Lkotlin/jvm/functions/Function2;)Lapp/cash/sqldelight/Query; +Lcom/artemchep/keyguard/data/bitwarden/AccountQueries$get$1; +HSPLcom/artemchep/keyguard/data/bitwarden/AccountQueries$get$1;->(Lkotlin/jvm/functions/Function2;Lcom/artemchep/keyguard/data/bitwarden/AccountQueries;)V +Lcom/artemchep/keyguard/data/bitwarden/AccountQueries$get$2; +HSPLcom/artemchep/keyguard/data/bitwarden/AccountQueries$get$2;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/AccountQueries$get$2;->()V +Lcom/artemchep/keyguard/data/bitwarden/Cipher; +Lcom/artemchep/keyguard/data/bitwarden/Cipher$Adapter; +HSPLcom/artemchep/keyguard/data/bitwarden/Cipher$Adapter;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/Cipher$Adapter;->(Lapp/cash/sqldelight/ColumnAdapter;)V +Lcom/artemchep/keyguard/data/bitwarden/CipherQueries; +HSPLcom/artemchep/keyguard/data/bitwarden/CipherQueries;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/CipherQueries;->(Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/bitwarden/Cipher$Adapter;)V +HSPLcom/artemchep/keyguard/data/bitwarden/CipherQueries;->get()Lapp/cash/sqldelight/Query; +HSPLcom/artemchep/keyguard/data/bitwarden/CipherQueries;->get(Lkotlin/jvm/functions/Function4;)Lapp/cash/sqldelight/Query; +Lcom/artemchep/keyguard/data/bitwarden/CipherQueries$get$1; +HSPLcom/artemchep/keyguard/data/bitwarden/CipherQueries$get$1;->(Lkotlin/jvm/functions/Function4;Lcom/artemchep/keyguard/data/bitwarden/CipherQueries;)V +Lcom/artemchep/keyguard/data/bitwarden/CipherQueries$get$2; +HSPLcom/artemchep/keyguard/data/bitwarden/CipherQueries$get$2;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/CipherQueries$get$2;->()V +Lcom/artemchep/keyguard/data/bitwarden/Collection$Adapter; +HSPLcom/artemchep/keyguard/data/bitwarden/Collection$Adapter;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/Collection$Adapter;->(Lapp/cash/sqldelight/ColumnAdapter;)V +Lcom/artemchep/keyguard/data/bitwarden/CollectionQueries; +HSPLcom/artemchep/keyguard/data/bitwarden/CollectionQueries;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/CollectionQueries;->(Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/bitwarden/Collection$Adapter;)V +HSPLcom/artemchep/keyguard/data/bitwarden/CollectionQueries;->get()Lapp/cash/sqldelight/Query; +HSPLcom/artemchep/keyguard/data/bitwarden/CollectionQueries;->get(Lkotlin/jvm/functions/Function3;)Lapp/cash/sqldelight/Query; +Lcom/artemchep/keyguard/data/bitwarden/CollectionQueries$get$1; +HSPLcom/artemchep/keyguard/data/bitwarden/CollectionQueries$get$1;->(Lkotlin/jvm/functions/Function3;Lcom/artemchep/keyguard/data/bitwarden/CollectionQueries;)V +Lcom/artemchep/keyguard/data/bitwarden/CollectionQueries$get$2; +HSPLcom/artemchep/keyguard/data/bitwarden/CollectionQueries$get$2;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/CollectionQueries$get$2;->()V +Lcom/artemchep/keyguard/data/bitwarden/Folder$Adapter; +HSPLcom/artemchep/keyguard/data/bitwarden/Folder$Adapter;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/Folder$Adapter;->(Lapp/cash/sqldelight/ColumnAdapter;)V +Lcom/artemchep/keyguard/data/bitwarden/FolderQueries; +HSPLcom/artemchep/keyguard/data/bitwarden/FolderQueries;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/FolderQueries;->(Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/bitwarden/Folder$Adapter;)V +HSPLcom/artemchep/keyguard/data/bitwarden/FolderQueries;->get()Lapp/cash/sqldelight/Query; +HSPLcom/artemchep/keyguard/data/bitwarden/FolderQueries;->get(Lkotlin/jvm/functions/Function3;)Lapp/cash/sqldelight/Query; +Lcom/artemchep/keyguard/data/bitwarden/FolderQueries$get$1; +HSPLcom/artemchep/keyguard/data/bitwarden/FolderQueries$get$1;->(Lkotlin/jvm/functions/Function3;Lcom/artemchep/keyguard/data/bitwarden/FolderQueries;)V +Lcom/artemchep/keyguard/data/bitwarden/FolderQueries$get$2; +HSPLcom/artemchep/keyguard/data/bitwarden/FolderQueries$get$2;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/FolderQueries$get$2;->()V +Lcom/artemchep/keyguard/data/bitwarden/Meta$Adapter; +HSPLcom/artemchep/keyguard/data/bitwarden/Meta$Adapter;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/Meta$Adapter;->(Lapp/cash/sqldelight/ColumnAdapter;)V +Lcom/artemchep/keyguard/data/bitwarden/MetaQueries; +HSPLcom/artemchep/keyguard/data/bitwarden/MetaQueries;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/MetaQueries;->(Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/bitwarden/Meta$Adapter;)V +HSPLcom/artemchep/keyguard/data/bitwarden/MetaQueries;->get()Lapp/cash/sqldelight/Query; +HSPLcom/artemchep/keyguard/data/bitwarden/MetaQueries;->get(Lkotlin/jvm/functions/Function2;)Lapp/cash/sqldelight/Query; +Lcom/artemchep/keyguard/data/bitwarden/MetaQueries$get$1; +HSPLcom/artemchep/keyguard/data/bitwarden/MetaQueries$get$1;->(Lkotlin/jvm/functions/Function2;Lcom/artemchep/keyguard/data/bitwarden/MetaQueries;)V +Lcom/artemchep/keyguard/data/bitwarden/MetaQueries$get$2; +HSPLcom/artemchep/keyguard/data/bitwarden/MetaQueries$get$2;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/MetaQueries$get$2;->()V +Lcom/artemchep/keyguard/data/bitwarden/Organization$Adapter; +HSPLcom/artemchep/keyguard/data/bitwarden/Organization$Adapter;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/Organization$Adapter;->(Lapp/cash/sqldelight/ColumnAdapter;)V +Lcom/artemchep/keyguard/data/bitwarden/OrganizationQueries; +HSPLcom/artemchep/keyguard/data/bitwarden/OrganizationQueries;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/OrganizationQueries;->(Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/bitwarden/Organization$Adapter;)V +HSPLcom/artemchep/keyguard/data/bitwarden/OrganizationQueries;->get()Lapp/cash/sqldelight/Query; +HSPLcom/artemchep/keyguard/data/bitwarden/OrganizationQueries;->get(Lkotlin/jvm/functions/Function3;)Lapp/cash/sqldelight/Query; +Lcom/artemchep/keyguard/data/bitwarden/OrganizationQueries$get$1; +HSPLcom/artemchep/keyguard/data/bitwarden/OrganizationQueries$get$1;->(Lkotlin/jvm/functions/Function3;Lcom/artemchep/keyguard/data/bitwarden/OrganizationQueries;)V +Lcom/artemchep/keyguard/data/bitwarden/OrganizationQueries$get$2; +HSPLcom/artemchep/keyguard/data/bitwarden/OrganizationQueries$get$2;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/OrganizationQueries$get$2;->()V +Lcom/artemchep/keyguard/data/bitwarden/Profile$Adapter; +HSPLcom/artemchep/keyguard/data/bitwarden/Profile$Adapter;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/Profile$Adapter;->(Lapp/cash/sqldelight/ColumnAdapter;)V +Lcom/artemchep/keyguard/data/bitwarden/ProfileQueries; +HSPLcom/artemchep/keyguard/data/bitwarden/ProfileQueries;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/ProfileQueries;->(Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/bitwarden/Profile$Adapter;)V +HSPLcom/artemchep/keyguard/data/bitwarden/ProfileQueries;->get()Lapp/cash/sqldelight/Query; +HSPLcom/artemchep/keyguard/data/bitwarden/ProfileQueries;->get(Lkotlin/jvm/functions/Function3;)Lapp/cash/sqldelight/Query; +Lcom/artemchep/keyguard/data/bitwarden/ProfileQueries$get$1; +HSPLcom/artemchep/keyguard/data/bitwarden/ProfileQueries$get$1;->(Lkotlin/jvm/functions/Function3;Lcom/artemchep/keyguard/data/bitwarden/ProfileQueries;)V +Lcom/artemchep/keyguard/data/bitwarden/ProfileQueries$get$2; +HSPLcom/artemchep/keyguard/data/bitwarden/ProfileQueries$get$2;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/ProfileQueries$get$2;->()V +Lcom/artemchep/keyguard/data/bitwarden/Send$Adapter; +HSPLcom/artemchep/keyguard/data/bitwarden/Send$Adapter;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/Send$Adapter;->(Lapp/cash/sqldelight/ColumnAdapter;)V +Lcom/artemchep/keyguard/data/bitwarden/SendQueries; +HSPLcom/artemchep/keyguard/data/bitwarden/SendQueries;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/SendQueries;->(Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/bitwarden/Send$Adapter;)V +Lcom/artemchep/keyguard/data/common/DatabaseImpl; +HSPLcom/artemchep/keyguard/data/common/DatabaseImpl;->(Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/bitwarden/Account$Adapter;Lcom/artemchep/keyguard/data/pwnage/AccountBreach$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Cipher$Adapter;Lcom/artemchep/keyguard/data/CipherUsageHistory$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Collection$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Folder$Adapter;Lcom/artemchep/keyguard/data/GeneratorEmailRelay$Adapter;Lcom/artemchep/keyguard/data/GeneratorHistory$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Meta$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Organization$Adapter;Lcom/artemchep/keyguard/data/pwnage/PasswordBreach$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Profile$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Send$Adapter;)V +HSPLcom/artemchep/keyguard/data/common/DatabaseImpl;->getAccountQueries()Lcom/artemchep/keyguard/data/bitwarden/AccountQueries; +HSPLcom/artemchep/keyguard/data/common/DatabaseImpl;->getCipherQueries()Lcom/artemchep/keyguard/data/bitwarden/CipherQueries; +HSPLcom/artemchep/keyguard/data/common/DatabaseImpl;->getCollectionQueries()Lcom/artemchep/keyguard/data/bitwarden/CollectionQueries; +HSPLcom/artemchep/keyguard/data/common/DatabaseImpl;->getFolderQueries()Lcom/artemchep/keyguard/data/bitwarden/FolderQueries; +HSPLcom/artemchep/keyguard/data/common/DatabaseImpl;->getMetaQueries()Lcom/artemchep/keyguard/data/bitwarden/MetaQueries; +HSPLcom/artemchep/keyguard/data/common/DatabaseImpl;->getOrganizationQueries()Lcom/artemchep/keyguard/data/bitwarden/OrganizationQueries; +HSPLcom/artemchep/keyguard/data/common/DatabaseImpl;->getProfileQueries()Lcom/artemchep/keyguard/data/bitwarden/ProfileQueries; +Lcom/artemchep/keyguard/data/common/DatabaseImpl$Schema; +HSPLcom/artemchep/keyguard/data/common/DatabaseImpl$Schema;->()V +HSPLcom/artemchep/keyguard/data/common/DatabaseImpl$Schema;->()V +PLcom/artemchep/keyguard/data/common/DatabaseImpl$Schema;->create(Lapp/cash/sqldelight/db/SqlDriver;)Lapp/cash/sqldelight/db/QueryResult; +PLcom/artemchep/keyguard/data/common/DatabaseImpl$Schema;->create-0iQ1-z0(Lapp/cash/sqldelight/db/SqlDriver;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/data/common/DatabaseImpl$Schema;->getVersion()J +Lcom/artemchep/keyguard/data/common/DatabaseImplKt; +HSPLcom/artemchep/keyguard/data/common/DatabaseImplKt;->getSchema(Lkotlin/reflect/KClass;)Lapp/cash/sqldelight/db/SqlSchema; +HSPLcom/artemchep/keyguard/data/common/DatabaseImplKt;->newInstance(Lkotlin/reflect/KClass;Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/bitwarden/Account$Adapter;Lcom/artemchep/keyguard/data/pwnage/AccountBreach$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Cipher$Adapter;Lcom/artemchep/keyguard/data/CipherUsageHistory$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Collection$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Folder$Adapter;Lcom/artemchep/keyguard/data/GeneratorEmailRelay$Adapter;Lcom/artemchep/keyguard/data/GeneratorHistory$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Meta$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Organization$Adapter;Lcom/artemchep/keyguard/data/pwnage/PasswordBreach$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Profile$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Send$Adapter;)Lcom/artemchep/keyguard/data/Database; +Lcom/artemchep/keyguard/data/pwnage/AccountBreach$Adapter; +HSPLcom/artemchep/keyguard/data/pwnage/AccountBreach$Adapter;->()V +HSPLcom/artemchep/keyguard/data/pwnage/AccountBreach$Adapter;->(Lapp/cash/sqldelight/ColumnAdapter;Lapp/cash/sqldelight/ColumnAdapter;)V +Lcom/artemchep/keyguard/data/pwnage/AccountBreachQueries; +HSPLcom/artemchep/keyguard/data/pwnage/AccountBreachQueries;->()V +HSPLcom/artemchep/keyguard/data/pwnage/AccountBreachQueries;->(Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/pwnage/AccountBreach$Adapter;)V +Lcom/artemchep/keyguard/data/pwnage/PasswordBreach$Adapter; +HSPLcom/artemchep/keyguard/data/pwnage/PasswordBreach$Adapter;->()V +HSPLcom/artemchep/keyguard/data/pwnage/PasswordBreach$Adapter;->(Lapp/cash/sqldelight/ColumnAdapter;)V +Lcom/artemchep/keyguard/data/pwnage/PasswordBreachQueries; +HSPLcom/artemchep/keyguard/data/pwnage/PasswordBreachQueries;->()V +HSPLcom/artemchep/keyguard/data/pwnage/PasswordBreachQueries;->(Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/pwnage/PasswordBreach$Adapter;)V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt;->access$installFingerprintRepo(Lorg/kodein/di/DI$Builder;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt;->access$installKeyRepo(Lorg/kodein/di/DI$Builder;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt;->access$installSessionMetadataRepo(Lorg/kodein/di/DI$Builder;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt;->access$installSessionRepo(Lorg/kodein/di/DI$Builder;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt;->access$installSettingsRepo(Lorg/kodein/di/DI$Builder;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt;->globalModuleJvm()Lorg/kodein/di/DI$Module; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt;->installFingerprintRepo(Lorg/kodein/di/DI$Builder;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt;->installKeyRepo(Lorg/kodein/di/DI$Builder;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt;->installSessionMetadataRepo(Lorg/kodein/di/DI$Builder;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt;->installSessionRepo(Lorg/kodein/di/DI$Builder;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt;->installSettingsRepo(Lorg/kodein/di/DI$Builder;)V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1;->invoke(Lorg/kodein/di/DI$Builder;)V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$1;->invoke(Lorg/kodein/di/DirectDI;)Lkotlinx/coroutines/CoroutineDispatcher; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$10; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$10;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$10;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$100; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$100;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$100;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$101; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$101;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$101;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$102; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$102;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$102;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$103; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$103;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$103;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$104; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$104;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$104;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$105; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$105;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$105;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$106; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$106;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$106;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$107; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$107;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$107;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$107;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$107;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/AppWorker; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$108; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$108;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$108;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$108;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$108;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetVaultSession; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$109; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$109;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$109;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$109;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$109;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetVaultPersist; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$11; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$11;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$11;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$11;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$11;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/UnlockUseCase; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$110; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$110;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$110;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$111; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$111;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$111;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$112; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$112;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$112;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$113; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$113;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$113;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$113;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$113;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/MessageHub; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$113$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$113$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$114; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$114;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$114;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$114;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$114;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/ShowMessage; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$114$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$114$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$115; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$115;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$115;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$115;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$115;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/impl/MessageHubImpl; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$116; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$116;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$116;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$117; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$117;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$117;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$118; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$118;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$118;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$118;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$118;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$119; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$119;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$119;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$119;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$119;->invoke(Lorg/kodein/di/DirectDI;)Lkotlinx/serialization/json/Json; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$119$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$119$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$119$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$119$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$119$1;->invoke(Lkotlinx/serialization/json/JsonBuilder;)V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$119$1$1$1$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$119$1$1$1$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$119$1$1$1$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$12; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$12;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$12;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$12;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$12;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/text/Base64Service; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$120; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$120;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$120;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$120;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$120;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/crypto/CipherEncryptor; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$121; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$121;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$121;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$122; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$122;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$122;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$123; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$123;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$123;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$124; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$124;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$124;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$124;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$124;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/deeplink/DeeplinkService; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$125; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$125;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$125;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$125;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$125;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/wordlist/WordlistService; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$126; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$126;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$126;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$127; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$127;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$127;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$128; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$128;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$128;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$129; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$129;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$129;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$13; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$13;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$13;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$13;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$13;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/text/Base32Service; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$130; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$130;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$130;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$131; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$131;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$131;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$132; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$132;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$132;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$132;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$132;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/tld/TldService; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$133; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$133;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$133;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$134; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$134;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$134;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$135; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$135;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$135;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$135;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$135;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/id/IdRepository; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$135$invoke$$inlined$instance$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$135$invoke$$inlined$instance$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$135$invoke$$inlined$instance$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$135$invoke$$inlined$instance$2;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$136; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$136;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$136;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$136;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$136;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/state/StateRepository; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$136$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$136$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$136$invoke$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$136$invoke$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$136$invoke$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$136$invoke$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$137; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$137;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$137;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$137;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$137;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/DeviceIdUseCase; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$138; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$138;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$138;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$138;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$138;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$139; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$139;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$139;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$14; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$14;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$14;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$14;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$14;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetTotpCode; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$140; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$140;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$140;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$141; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$141;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$141;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$141;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$141;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetPasswordStrength; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$142; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$142;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$142;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$143; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$143;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$143;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$143;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$143;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/DateFormatter; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$144; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$144;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$144;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$145; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$145;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$145;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$145;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$145;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$146; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$146;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$146;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$146;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$146;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/totp/TotpService; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147;->invoke(Lorg/kodein/di/DirectDI;)Lio/ktor/client/HttpClient; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1;->(Lokhttp3/OkHttpClient;Lkotlinx/serialization/json/Json;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1;->invoke(Lio/ktor/client/HttpClientConfig;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$1;->invoke(Lio/ktor/client/plugins/UserAgentConfig;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$2;->(Lokhttp3/OkHttpClient;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$2;->invoke(Lio/ktor/client/engine/okhttp/OkHttpConfig;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$3; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$3;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$3;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$3;->invoke(Lio/ktor/client/plugins/logging/LoggingConfig;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$4; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$4;->(Lkotlinx/serialization/json/Json;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$4;->invoke(Lio/ktor/client/plugins/contentnegotiation/ContentNegotiationConfig;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$4;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$5; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$5;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$5;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$5;->invoke(Lio/ktor/client/plugins/websocket/WebSockets$Config;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$5;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$6; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$6;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$6;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$6;->invoke(Lio/ktor/client/plugins/cache/HttpCache$Config;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$6;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$7; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$7;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$7;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$7;->invoke(Lio/ktor/client/plugins/HttpRequestRetryConfig;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$7;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$7$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$7$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$7$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$invoke$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$invoke$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$148; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$148;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$148;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$149; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$149;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$149;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$149;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$149;->invoke(Lorg/kodein/di/DirectDI;)Lokhttp3/OkHttpClient; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$149$$ExternalSyntheticLambda0; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$149$$ExternalSyntheticLambda0;->(Lcom/artemchep/keyguard/common/service/logging/LogRepository;)V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$149$invoke$lambda$2$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$149$invoke$lambda$2$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$15; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$15;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$15;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$16; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$16;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$16;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$16;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$16;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetScreenState; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$17; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$17;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$17;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$17;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$17;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetConcealFields; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$18; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$18;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$18;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$19; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$19;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$19;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$2;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$2;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$20; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$20;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$20;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$21; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$21;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$21;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$21;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$21;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetBiometricTimeout; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$22; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$22;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$22;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$23; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$23;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$23;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$24; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$24;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$24;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$25; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$25;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$25;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$26; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$26;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$26;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$27; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$27;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$27;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$28; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$28;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$28;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$29; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$29;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$29;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$3; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$3;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$3;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$3;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/AuthConfirmMasterKeyUseCase; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$30; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$30;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$30;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$31; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$31;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$31;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$32; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$32;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$32;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$33; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$33;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$33;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$34; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$34;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$34;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$35; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$35;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$35;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$36; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$36;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$36;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$37; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$37;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$37;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$37;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$37;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/PutVaultSession; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$38; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$38;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$38;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$38;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$38;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/ClearVaultSession; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$39; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$39;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$39;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$4; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$4;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$4;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$4;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$4;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/AuthGenerateMasterKeyUseCase; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$40; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$40;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$40;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$41; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$41;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$41;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$42; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$42;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$42;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$43; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$43;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$43;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$44; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$44;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$44;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$44;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$44;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/PutScreenState; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$45; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$45;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$45;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$45;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$45;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetAllowScreenshots; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$46; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$46;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$46;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$46;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$46;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetAllowTwoPanelLayoutInLandscape; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$47; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$47;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$47;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$47;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$47;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetAllowTwoPanelLayoutInPortrait; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$48; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$48;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$48;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$48;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$48;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetVaultLockAfterScreenOff; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$49; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$49;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$49;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$5; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$5;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$5;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$5;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$5;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/BiometricKeyDecryptUseCase; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$50; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$50;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$50;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$50;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$50;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/PasskeyTargetCheck; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$51; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$51;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$51;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$52; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$52;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$52;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$52;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$52;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetUseExternalBrowser; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$53; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$53;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$53;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$54; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$54;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$54;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$55; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$55;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$55;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$56; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$56;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$56;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$57; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$57;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$57;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$58; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$58;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$58;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$59; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$59;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$59;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$6; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$6;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$6;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$6;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$6;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/BiometricKeyEncryptUseCase; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$60; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$60;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$60;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$61; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$61;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$61;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$62; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$62;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$62;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$63; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$63;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$63;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$64; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$64;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$64;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$65; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$65;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$65;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$66; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$66;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$66;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$66;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$66;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetNavAnimation; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$67; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$67;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$67;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$67;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$67;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetNavLabel; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$68; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$68;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$68;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$69; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$69;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$69;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$69;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$69;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetFont; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$7; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$7;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$7;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$7;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$7;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GenerateMasterHashUseCase; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$70; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$70;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$70;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$71; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$71;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$71;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$72; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$72;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$72;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$73; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$73;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$73;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$73;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$73;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetTheme; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$74; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$74;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$74;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$74;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$74;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetThemeUseAmoledDark; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$75; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$75;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$75;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$75;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$75;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetColors; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$76; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$76;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$76;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$77; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$77;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$77;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$78; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$78;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$78;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$78;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$78;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/CipherUrlCheck; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$79; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$79;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$79;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$8; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$8;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$8;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$8;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$8;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GenerateMasterKeyUseCase; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$80; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$80;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$80;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$80;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$80;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetCanWrite; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$81; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$81;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$81;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$81;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$81;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetCachePremium; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$82; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$82;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$82;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$82;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$82;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/PutCachePremium; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$83; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$83;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$83;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$84; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$84;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$84;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$85; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$85;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$85;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$86; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$86;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$86;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$87; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$87;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$87;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$88; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$88;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$88;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$89; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$89;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$89;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$9; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$9;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$9;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$9;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$9;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GenerateMasterSaltUseCase; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$90; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$90;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$90;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$91; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$91;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$91;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$91;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$91;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetDebugPremium; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$92; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$92;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$92;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$92;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$92;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetWriteAccess; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$93; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$93;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$93;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$93;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$93;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetDebugScreenDelay; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$94; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$94;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$94;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$94;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$94;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetAppIcons; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$95; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$95;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$95;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$95;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$95;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetWebsiteIcons; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$96; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$96;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$96;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$97; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$97;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$97;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$98; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$98;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$98;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$99; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$99;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$99;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindProvider$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindProvider$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindProvider$default$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindProvider$default$2;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindProvider$default$3; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindProvider$default$3;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$10; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$10;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$100; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$100;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$101; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$101;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$102; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$102;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$103; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$103;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$104; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$104;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$105; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$105;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$106; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$106;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$107; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$107;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$108; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$108;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$109; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$109;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$11; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$11;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$110; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$110;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$111; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$111;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$112; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$112;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$113; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$113;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$114; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$114;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$115; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$115;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$116; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$116;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$117; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$117;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$118; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$118;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$119; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$119;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$12; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$12;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$120; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$120;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$121; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$121;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$122; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$122;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$123; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$123;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$124; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$124;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$125; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$125;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$126; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$126;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$127; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$127;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$128; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$128;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$129; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$129;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$13; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$13;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$130; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$130;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$131; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$131;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$132; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$132;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$133; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$133;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$134; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$134;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$135; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$135;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$136; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$136;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$137; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$137;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$138; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$138;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$139; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$139;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$14; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$14;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$140; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$140;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$141; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$141;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$142; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$142;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$143; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$143;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$144; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$144;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$145; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$145;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$146; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$146;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$15; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$15;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$16; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$16;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$17; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$17;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$18; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$18;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$19; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$19;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$2;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$20; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$20;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$21; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$21;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$22; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$22;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$23; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$23;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$24; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$24;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$25; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$25;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$26; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$26;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$27; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$27;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$28; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$28;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$29; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$29;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$3; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$3;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$30; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$30;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$31; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$31;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$32; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$32;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$33; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$33;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$34; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$34;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$35; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$35;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$36; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$36;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$37; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$37;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$38; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$38;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$39; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$39;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$4; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$4;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$40; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$40;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$41; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$41;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$42; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$42;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$43; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$43;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$44; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$44;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$45; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$45;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$46; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$46;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$47; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$47;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$48; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$48;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$49; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$49;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$5; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$5;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$50; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$50;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$51; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$51;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$52; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$52;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$53; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$53;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$54; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$54;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$55; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$55;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$56; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$56;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$57; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$57;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$58; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$58;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$59; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$59;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$6; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$6;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$60; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$60;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$61; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$61;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$62; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$62;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$63; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$63;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$64; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$64;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$65; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$65;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$66; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$66;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$67; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$67;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$68; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$68;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$69; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$69;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$7; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$7;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$70; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$70;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$71; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$71;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$72; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$72;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$73; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$73;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$74; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$74;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$75; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$75;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$76; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$76;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$77; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$77;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$78; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$78;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$79; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$79;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$8; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$8;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$80; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$80;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$81; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$81;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$82; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$82;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$83; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$83;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$84; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$84;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$85; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$85;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$86; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$86;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$87; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$87;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$88; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$88;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$89; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$89;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$9; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$9;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$90; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$90;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$91; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$91;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$92; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$92;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$93; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$93;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$94; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$94;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$95; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$95;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$96; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$96;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$97; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$97;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$98; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$98;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$99; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$99;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$$inlined$bindProvider$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$$inlined$bindProvider$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$$inlined$bindProvider$default$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$$inlined$bindProvider$default$2;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$$inlined$bindSingleton$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$$inlined$bindSingleton$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$1;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$2;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$2;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$3; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$3;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$3;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$3;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/vault/FingerprintReadWriteRepository; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$3$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$3$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$$inlined$bindProvider$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$$inlined$bindProvider$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$$inlined$bindProvider$default$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$$inlined$bindProvider$default$2;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$$inlined$bindSingleton$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$$inlined$bindSingleton$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$1;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$2;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$2;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$3; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$3;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$3;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$3;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/vault/KeyReadWriteRepository; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$3$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$3$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$$inlined$bindProvider$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$$inlined$bindProvider$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$$inlined$bindProvider$default$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$$inlined$bindProvider$default$2;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$$inlined$bindSingleton$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$$inlined$bindSingleton$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$1;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$2;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$2;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$2;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/vault/SessionMetadataReadRepository; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$2$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$2$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$3; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$3;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$3;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$3;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/vault/SessionMetadataReadWriteRepository; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$3$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$3$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$$inlined$bindProvider$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$$inlined$bindProvider$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$$inlined$bindProvider$default$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$$inlined$bindProvider$default$2;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$$inlined$bindSingleton$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$$inlined$bindSingleton$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$1;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/vault/impl/SessionRepositoryImpl; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$2;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$2;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$3; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$3;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$3;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$3;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/vault/SessionReadWriteRepository; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$3$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$3$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$$inlined$bindProvider$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$$inlined$bindProvider$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$$inlined$bindProvider$default$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$$inlined$bindProvider$default$2;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$$inlined$bindSingleton$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$$inlined$bindSingleton$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$1;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$2;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$2;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$2;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$2$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$2$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$3; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$3;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$3;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$3;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/settings/SettingsReadWriteRepository; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$3$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$3$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/feature/attachments/SelectableItemState; +HSPLcom/artemchep/keyguard/feature/attachments/SelectableItemState;->()V +HSPLcom/artemchep/keyguard/feature/attachments/SelectableItemState;->(ZZZLkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)V +Lcom/artemchep/keyguard/feature/auth/common/AutofillKt; +HSPLcom/artemchep/keyguard/feature/auth/common/AutofillKt;->autofill(Landroidx/compose/ui/Modifier;Ljava/lang/String;Ljava/util/List;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +Lcom/artemchep/keyguard/feature/auth/common/AutofillKt$autofill$1; +HSPLcom/artemchep/keyguard/feature/auth/common/AutofillKt$autofill$1;->(Ljava/util/List;Lkotlin/jvm/functions/Function1;Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/feature/auth/common/AutofillKt$autofill$1;->access$invoke$lambda$1(Landroidx/compose/runtime/State;)Landroidx/compose/ui/autofill/Autofill; +HSPLcom/artemchep/keyguard/feature/auth/common/AutofillKt$autofill$1;->access$invoke$lambda$2(Landroidx/compose/runtime/State;)Landroidx/compose/ui/autofill/AutofillNode; +HSPLcom/artemchep/keyguard/feature/auth/common/AutofillKt$autofill$1;->invoke$lambda$1(Landroidx/compose/runtime/State;)Landroidx/compose/ui/autofill/Autofill; +HSPLcom/artemchep/keyguard/feature/auth/common/AutofillKt$autofill$1;->invoke$lambda$2(Landroidx/compose/runtime/State;)Landroidx/compose/ui/autofill/AutofillNode; +HSPLcom/artemchep/keyguard/feature/auth/common/AutofillKt$autofill$1;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLcom/artemchep/keyguard/feature/auth/common/AutofillKt$autofill$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/auth/common/AutofillKt$autofill$1$1; +HSPLcom/artemchep/keyguard/feature/auth/common/AutofillKt$autofill$1$1;->(Landroidx/compose/ui/autofill/AutofillNode;)V +HSPLcom/artemchep/keyguard/feature/auth/common/AutofillKt$autofill$1$1;->invoke(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLcom/artemchep/keyguard/feature/auth/common/AutofillKt$autofill$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/auth/common/AutofillKt$autofill$1$2; +HSPLcom/artemchep/keyguard/feature/auth/common/AutofillKt$autofill$1$2;->(Landroidx/compose/ui/autofill/AutofillNode;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/feature/auth/common/AutofillKt$autofill$1$2;->invoke(Landroidx/compose/ui/focus/FocusState;)V +HSPLcom/artemchep/keyguard/feature/auth/common/AutofillKt$autofill$1$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/auth/common/Autofill_androidKt; +HSPLcom/artemchep/keyguard/feature/auth/common/Autofill_androidKt;->AutofillSideEffect(Ljava/lang/String;Landroidx/compose/ui/autofill/AutofillNode;Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/auth/common/Autofill_androidKt$AutofillSideEffect$1; +HSPLcom/artemchep/keyguard/feature/auth/common/Autofill_androidKt$AutofillSideEffect$1;->(Landroidx/compose/ui/autofill/AutofillNode;Landroid/view/autofill/AutofillManager;Landroid/view/View;Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/feature/auth/common/Autofill_androidKt$AutofillSideEffect$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/auth/common/Autofill_androidKt$AutofillSideEffect$1;->invoke()V +Lcom/artemchep/keyguard/feature/auth/common/SwitchFieldModel; +HSPLcom/artemchep/keyguard/feature/auth/common/SwitchFieldModel;->()V +HSPLcom/artemchep/keyguard/feature/auth/common/SwitchFieldModel;->(ZLkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/feature/auth/common/SwitchFieldModel;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/feature/auth/common/SwitchFieldModel;->getChecked()Z +HSPLcom/artemchep/keyguard/feature/auth/common/SwitchFieldModel;->getOnChange()Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/feature/auth/common/SwitchFieldModel$Companion; +HSPLcom/artemchep/keyguard/feature/auth/common/SwitchFieldModel$Companion;->()V +HSPLcom/artemchep/keyguard/feature/auth/common/SwitchFieldModel$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2; +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;->()V +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;->(Landroidx/compose/runtime/MutableState;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Vl;Lkotlinx/collections/immutable/ImmutableList;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;->(Landroidx/compose/runtime/MutableState;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Vl;Lkotlinx/collections/immutable/ImmutableList;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;->getAutocompleteOptions()Lkotlinx/collections/immutable/ImmutableList; +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;->getError()Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;->getHint()Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;->getOnChange()Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;->getState()Landroidx/compose/runtime/MutableState; +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;->getText()Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;->getVl()Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Vl; +Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Companion; +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Companion;->()V +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Companion;->of$default(Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Companion;Landroidx/compose/runtime/MutableState;Lcom/artemchep/keyguard/feature/auth/common/Validated;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2; +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Companion;->of(Landroidx/compose/runtime/MutableState;Lcom/artemchep/keyguard/feature/auth/common/Validated;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2; +Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Companion$of$1; +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Companion$of$1;->(Ljava/lang/Object;)V +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Companion$of$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Companion$of$1;->invoke(Ljava/lang/String;)V +Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Companion$of$2; +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Companion$of$2;->(Ljava/lang/Object;)V +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Companion$of$2;->set(Ljava/lang/Object;)V +Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Vl; +Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Vl$Type; +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Vl$Type;->$values()[Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Vl$Type; +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Vl$Type;->()V +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Vl$Type;->(Ljava/lang/String;I)V +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Vl$Type;->values()[Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Vl$Type; +Lcom/artemchep/keyguard/feature/auth/common/Validated; +Lcom/artemchep/keyguard/feature/auth/common/Validated$Failure; +HSPLcom/artemchep/keyguard/feature/auth/common/Validated$Failure;->()V +HSPLcom/artemchep/keyguard/feature/auth/common/Validated$Failure;->(Ljava/lang/Object;Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/feature/auth/common/Validated$Failure;->getError()Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/auth/common/Validated$Failure;->getModel()Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/auth/common/Validated$Success; +HSPLcom/artemchep/keyguard/feature/auth/common/Validated$Success;->()V +HSPLcom/artemchep/keyguard/feature/auth/common/Validated$Success;->(Ljava/lang/Object;)V +HSPLcom/artemchep/keyguard/feature/auth/common/Validated$Success;->getModel()Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/auth/common/VisibilityKt; +HSPLcom/artemchep/keyguard/feature/auth/common/VisibilityKt;->VisibilityToggle(Lcom/artemchep/keyguard/feature/auth/common/VisibilityState;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/auth/common/VisibilityKt;->VisibilityToggle(ZZLkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/feature/auth/common/VisibilityKt$VisibilityToggle$1$1; +HSPLcom/artemchep/keyguard/feature/auth/common/VisibilityKt$VisibilityToggle$1$1;->(Lcom/artemchep/keyguard/feature/auth/common/VisibilityState;)V +Lcom/artemchep/keyguard/feature/auth/common/VisibilityKt$VisibilityToggle$2; +HSPLcom/artemchep/keyguard/feature/auth/common/VisibilityKt$VisibilityToggle$2;->(Lcom/artemchep/keyguard/feature/auth/common/VisibilityState;I)V +Lcom/artemchep/keyguard/feature/auth/common/VisibilityKt$VisibilityToggle$3; +HSPLcom/artemchep/keyguard/feature/auth/common/VisibilityKt$VisibilityToggle$3;->(Z)V +HSPLcom/artemchep/keyguard/feature/auth/common/VisibilityKt$VisibilityToggle$3;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/auth/common/VisibilityKt$VisibilityToggle$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/auth/common/VisibilityState; +HSPLcom/artemchep/keyguard/feature/auth/common/VisibilityState;->()V +HSPLcom/artemchep/keyguard/feature/auth/common/VisibilityState;->(ZZ)V +HSPLcom/artemchep/keyguard/feature/auth/common/VisibilityState;->(ZZILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/auth/common/VisibilityState;->isEnabled()Z +HSPLcom/artemchep/keyguard/feature/auth/common/VisibilityState;->isVisible()Z +Lcom/artemchep/keyguard/feature/auth/common/util/ValidationPassword; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidationPassword;->$values()[Lcom/artemchep/keyguard/feature/auth/common/util/ValidationPassword; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidationPassword;->()V +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidationPassword;->(Ljava/lang/String;I)V +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidationPassword;->values()[Lcom/artemchep/keyguard/feature/auth/common/util/ValidationPassword; +Lcom/artemchep/keyguard/feature/auth/common/util/ValidationTitle; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidationTitle;->$values()[Lcom/artemchep/keyguard/feature/auth/common/util/ValidationTitle; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidationTitle;->()V +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidationTitle;->(Ljava/lang/String;I)V +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidationTitle;->values()[Lcom/artemchep/keyguard/feature/auth/common/util/ValidationTitle; +Lcom/artemchep/keyguard/feature/auth/common/util/ValidatorPasswordKt; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorPasswordKt;->format(Lcom/artemchep/keyguard/feature/auth/common/util/ValidationPassword;Lcom/artemchep/keyguard/feature/navigation/state/TranslatorScope;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorPasswordKt;->validatePassword(Ljava/lang/String;)Lcom/artemchep/keyguard/feature/auth/common/util/ValidationPassword; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorPasswordKt;->validatedPassword(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/feature/navigation/state/TranslatorScope;)Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/feature/auth/common/util/ValidatorPasswordKt$WhenMappings; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorPasswordKt$WhenMappings;->()V +Lcom/artemchep/keyguard/feature/auth/common/util/ValidatorPasswordKt$validatedPassword$$inlined$map$1; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorPasswordKt$validatedPassword$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/feature/navigation/state/TranslatorScope;)V +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorPasswordKt$validatedPassword$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/auth/common/util/ValidatorPasswordKt$validatedPassword$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorPasswordKt$validatedPassword$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/feature/navigation/state/TranslatorScope;)V +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorPasswordKt$validatedPassword$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/auth/common/util/ValidatorPasswordKt$validatedPassword$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorPasswordKt$validatedPassword$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/feature/auth/common/util/ValidatorPasswordKt$validatedPassword$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorPasswordKt$validatedPassword$$inlined$map$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/auth/common/util/ValidatorTitleKt; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorTitleKt;->format(Lcom/artemchep/keyguard/feature/auth/common/util/ValidationTitle;Lcom/artemchep/keyguard/feature/navigation/state/TranslatorScope;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorTitleKt;->validateTitle(Ljava/lang/String;)Lcom/artemchep/keyguard/feature/auth/common/util/ValidationTitle; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorTitleKt;->validatedTitle(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/feature/navigation/state/TranslatorScope;)Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/feature/auth/common/util/ValidatorTitleKt$WhenMappings; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorTitleKt$WhenMappings;->()V +Lcom/artemchep/keyguard/feature/auth/common/util/ValidatorTitleKt$validatedTitle$$inlined$map$1; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorTitleKt$validatedTitle$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/feature/navigation/state/TranslatorScope;)V +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorTitleKt$validatedTitle$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/auth/common/util/ValidatorTitleKt$validatedTitle$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorTitleKt$validatedTitle$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/feature/navigation/state/TranslatorScope;)V +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorTitleKt$validatedTitle$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/auth/common/util/ValidatorTitleKt$validatedTitle$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorTitleKt$validatedTitle$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/feature/auth/common/util/ValidatorTitleKt$validatedTitle$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorTitleKt$validatedTitle$$inlined$map$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/biometric/BiometricPromptEffectKt; +HSPLcom/artemchep/keyguard/feature/biometric/BiometricPromptEffectKt;->BiometricPromptEffect(Lkotlinx/coroutines/flow/Flow;Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/biometric/BiometricPromptEffectKt$BiometricPromptEffect$1$1; +HSPLcom/artemchep/keyguard/feature/biometric/BiometricPromptEffectKt$BiometricPromptEffect$1$1;->(Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/feature/crashlytics/CrashlyticsMapKt; +HSPLcom/artemchep/keyguard/feature/crashlytics/CrashlyticsMapKt;->crashlyticsTap$default(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/feature/crashlytics/CrashlyticsMapKt;->crashlyticsTap(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/feature/crashlytics/CrashlyticsMapKt$crashlyticsTap$$inlined$handleErrorTap$default$1; +HSPLcom/artemchep/keyguard/feature/crashlytics/CrashlyticsMapKt$crashlyticsTap$$inlined$handleErrorTap$default$1;->(Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/feature/crashlytics/CrashlyticsMapKt$crashlyticsTap$$inlined$handleErrorTap$default$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/crashlytics/CrashlyticsMapKt$crashlyticsTap$$inlined$handleErrorTap$default$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/crashlytics/CrashlyticsMapKt$crashlyticsTap$$inlined$handleErrorTap$default$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/crashlytics/CrashlyticsMapKt$crashlyticsTap$$inlined$handleErrorTap$default$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/crashlytics/CrashlyticsMapKt$crashlyticsTap$1; +HSPLcom/artemchep/keyguard/feature/crashlytics/CrashlyticsMapKt$crashlyticsTap$1;->()V +HSPLcom/artemchep/keyguard/feature/crashlytics/CrashlyticsMapKt$crashlyticsTap$1;->()V +Lcom/artemchep/keyguard/feature/decorator/ItemDecorator; +Lcom/artemchep/keyguard/feature/decorator/ItemDecoratorNone; +HSPLcom/artemchep/keyguard/feature/decorator/ItemDecoratorNone;->()V +HSPLcom/artemchep/keyguard/feature/decorator/ItemDecoratorNone;->()V +Lcom/artemchep/keyguard/feature/duplicates/DuplicatesStateProducerKt; +HSPLcom/artemchep/keyguard/feature/duplicates/DuplicatesStateProducerKt;->createCipherSelectionFlow(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lcom/artemchep/keyguard/ui/selection/SelectionHandle;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/common/usecase/CipherToolbox;)Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/feature/duplicates/DuplicatesStateProducerKt$createCipherSelectionFlow$1; +HSPLcom/artemchep/keyguard/feature/duplicates/DuplicatesStateProducerKt$createCipherSelectionFlow$1;->(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lcom/artemchep/keyguard/common/usecase/CipherToolbox;Lcom/artemchep/keyguard/ui/selection/SelectionHandle;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/duplicates/DuplicatesStateProducerKt$createCipherSelectionFlow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/duplicates/DuplicatesStateProducerKt$createCipherSelectionFlow$1;->invoke(Ljava/util/List;Ljava/util/Set;Ljava/util/List;ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/duplicates/DuplicatesStateProducerKt$createCipherSelectionFlow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/favicon/Favicon; +HSPLcom/artemchep/keyguard/feature/favicon/Favicon;->()V +HSPLcom/artemchep/keyguard/feature/favicon/Favicon;->()V +HSPLcom/artemchep/keyguard/feature/favicon/Favicon;->launch(Lkotlinx/coroutines/CoroutineScope;Lcom/artemchep/keyguard/common/usecase/GetAccounts;)V +HSPLcom/artemchep/keyguard/feature/favicon/Favicon;->setServers(Ljava/util/List;)V +Lcom/artemchep/keyguard/feature/favicon/Favicon$launch$$inlined$map$1; +HSPLcom/artemchep/keyguard/feature/favicon/Favicon$launch$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/favicon/Favicon$launch$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/favicon/Favicon$launch$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/feature/favicon/Favicon$launch$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/feature/favicon/Favicon$launch$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/favicon/Favicon$launch$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/feature/favicon/Favicon$launch$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/feature/favicon/Favicon$launch$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/feature/favicon/Favicon$launch$2; +HSPLcom/artemchep/keyguard/feature/favicon/Favicon$launch$2;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/favicon/Favicon$launch$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/favicon/Favicon$launch$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/favicon/Favicon$launch$2;->invoke(Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/favicon/Favicon$launch$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/favicon/GravatarUrl; +Lcom/artemchep/keyguard/feature/generator/GeneratorRoute; +HSPLcom/artemchep/keyguard/feature/generator/GeneratorRoute;->()V +HSPLcom/artemchep/keyguard/feature/generator/GeneratorRoute;->(Lcom/artemchep/keyguard/feature/generator/GeneratorRoute$Args;)V +Lcom/artemchep/keyguard/feature/generator/GeneratorRoute$Args; +HSPLcom/artemchep/keyguard/feature/generator/GeneratorRoute$Args;->()V +HSPLcom/artemchep/keyguard/feature/generator/GeneratorRoute$Args;->(ZZ)V +Lcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt; +HSPLcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt;->mapLatestScoped(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function3;)V +HSPLcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$1$1; +HSPLcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$1$1;->(Lkotlin/jvm/functions/Function3;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$1$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$1$1$1; +HSPLcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$1$1$1;->(Lkotlin/jvm/functions/Function3;Ljava/lang/Object;Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$1$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$1$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$1$1$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$1$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/BannerStatusBadgeContentModel; +HSPLcom/artemchep/keyguard/feature/home/BannerStatusBadgeContentModel;->(ILcom/artemchep/keyguard/feature/localization/TextHolder;Lcom/artemchep/keyguard/feature/localization/TextHolder;ZLkotlin/jvm/functions/Function0;)V +HSPLcom/artemchep/keyguard/feature/home/BannerStatusBadgeContentModel;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/feature/home/BannerStatusBadgeContentModel;->getCount()I +HSPLcom/artemchep/keyguard/feature/home/BannerStatusBadgeContentModel;->getError()Z +HSPLcom/artemchep/keyguard/feature/home/BannerStatusBadgeContentModel;->getOnClick()Lkotlin/jvm/functions/Function0; +HSPLcom/artemchep/keyguard/feature/home/BannerStatusBadgeContentModel;->getText()Lcom/artemchep/keyguard/feature/localization/TextHolder; +HSPLcom/artemchep/keyguard/feature/home/BannerStatusBadgeContentModel;->getTitle()Lcom/artemchep/keyguard/feature/localization/TextHolder; +Lcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt; +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt;->()V +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt;->()V +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt;->getLambda-1$common_noneRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt;->getLambda-2$common_noneRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt;->getLambda-4$common_noneRelease()Lkotlin/jvm/functions/Function3; +Lcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-1$1; +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-1$1;->()V +Lcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-2$1; +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-2$1;->invoke(Lcom/artemchep/keyguard/feature/home/BannerStatusBadgeContentModel;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-3$1; +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-3$1;->()V +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-3$1;->()V +Lcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-4$1; +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-4$1;->()V +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-4$1;->()V +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-4$1;->invoke(Lcom/artemchep/keyguard/feature/localization/TextHolder;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-4$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-5$1; +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-5$1;->()V +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-5$1;->()V +Lcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-6$1; +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-6$1;->()V +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-6$1;->()V +Lcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-7$1; +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-7$1;->()V +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-7$1;->()V +Lcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-8$1; +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-8$1;->()V +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-8$1;->()V +Lcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-9$1; +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-9$1;->()V +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-9$1;->()V +Lcom/artemchep/keyguard/feature/home/HomeLayout; +Lcom/artemchep/keyguard/feature/home/HomeLayout$Horizontal; +Lcom/artemchep/keyguard/feature/home/HomeLayout$Vertical; +HSPLcom/artemchep/keyguard/feature/home/HomeLayout$Vertical;->()V +HSPLcom/artemchep/keyguard/feature/home/HomeLayout$Vertical;->()V +Lcom/artemchep/keyguard/feature/home/HomeLayoutKt; +HSPLcom/artemchep/keyguard/feature/home/HomeLayoutKt;->()V +HSPLcom/artemchep/keyguard/feature/home/HomeLayoutKt;->ResponsiveLayout(Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/HomeLayoutKt;->getLocalHomeLayout()Landroidx/compose/runtime/ProvidableCompositionLocal; +Lcom/artemchep/keyguard/feature/home/HomeLayoutKt$LocalHomeLayout$1; +HSPLcom/artemchep/keyguard/feature/home/HomeLayoutKt$LocalHomeLayout$1;->()V +HSPLcom/artemchep/keyguard/feature/home/HomeLayoutKt$LocalHomeLayout$1;->()V +Lcom/artemchep/keyguard/feature/home/HomeLayoutKt$ResponsiveLayout$1; +HSPLcom/artemchep/keyguard/feature/home/HomeLayoutKt$ResponsiveLayout$1;->(Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/feature/home/HomeLayoutKt$ResponsiveLayout$1;->invoke(Landroidx/compose/foundation/layout/BoxWithConstraintsScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/HomeLayoutKt$ResponsiveLayout$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/HomeLayoutKt$ResponsiveLayout$1$1; +HSPLcom/artemchep/keyguard/feature/home/HomeLayoutKt$ResponsiveLayout$1$1;->(Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/feature/home/HomeLayoutKt$ResponsiveLayout$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/HomeLayoutKt$ResponsiveLayout$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/HomeScreenKt; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt;->()V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt;->BannerStatusBadge(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/State;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt;->BannerStatusBadgeContent(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Lcom/artemchep/keyguard/feature/home/BannerStatusBadgeContentModel;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt;->BottomNavigationControllerItem(Landroidx/compose/foundation/layout/RowScope;Ljava/util/List;Lcom/artemchep/keyguard/feature/navigation/Route;Landroidx/compose/ui/graphics/vector/ImageVector;Landroidx/compose/ui/graphics/vector/ImageVector;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt;->HomeEffect$lambda$0(Lkotlin/Lazy;)Lcom/artemchep/keyguard/core/store/DatabaseManager; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt;->HomeEffect(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt;->HomeScreen(Lcom/artemchep/keyguard/feature/navigation/Route;ZLandroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt;->HomeScreenContent(Lkotlinx/collections/immutable/PersistentList;Ljava/util/List;ZLandroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt;->NavigationIcon(ZLandroidx/compose/ui/graphics/vector/ImageVector;Landroidx/compose/ui/graphics/vector/ImageVector;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt;->access$BannerStatusBadge(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/State;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt;->access$BannerStatusBadgeContent(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Lcom/artemchep/keyguard/feature/home/BannerStatusBadgeContentModel;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt;->access$BottomNavigationControllerItem(Landroidx/compose/foundation/layout/RowScope;Ljava/util/List;Lcom/artemchep/keyguard/feature/navigation/Route;Landroidx/compose/ui/graphics/vector/ImageVector;Landroidx/compose/ui/graphics/vector/ImageVector;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt;->access$HomeEffect$lambda$0(Lkotlin/Lazy;)Lcom/artemchep/keyguard/core/store/DatabaseManager; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt;->access$NavigationIcon(ZLandroidx/compose/ui/graphics/vector/ImageVector;Landroidx/compose/ui/graphics/vector/ImageVector;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt;->access$getVaultRoute$p()Lcom/artemchep/keyguard/feature/home/vault/VaultRoute; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt;->isSelected(Ljava/util/List;Lcom/artemchep/keyguard/feature/navigation/Route;)Z +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$BannerStatusBadge$1; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$BannerStatusBadge$1;->(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/State;II)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$BannerStatusBadge$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$BannerStatusBadge$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$BannerStatusBadge$errorState$1$1; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$BannerStatusBadge$errorState$1$1;->(Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$BannerStatusBadge$errorState$1$1;->invoke()Lcom/artemchep/keyguard/feature/home/BannerStatusBadgeContentModel; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$BannerStatusBadge$errorState$1$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$BannerStatusBadge$errorState$1$1$2; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$BannerStatusBadge$errorState$1$1$2;->(Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;)V +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$BannerStatusBadgeContent$2; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$BannerStatusBadgeContent$2;->(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Lcom/artemchep/keyguard/feature/home/BannerStatusBadgeContentModel;II)V +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$BottomNavigationControllerItem$1; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$BottomNavigationControllerItem$1;->(Lcom/artemchep/keyguard/feature/navigation/NavigationController;Ljava/util/List;Lcom/artemchep/keyguard/feature/navigation/Route;)V +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$BottomNavigationControllerItem$2; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$BottomNavigationControllerItem$2;->(ZLandroidx/compose/ui/graphics/vector/ImageVector;Landroidx/compose/ui/graphics/vector/ImageVector;Lkotlin/jvm/functions/Function3;)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$BottomNavigationControllerItem$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$BottomNavigationControllerItem$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$$inlined$rememberInstance$1; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$$inlined$rememberInstance$1;->()V +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$$inlined$rememberInstance$2; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$$inlined$rememberInstance$2;->()V +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$1; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$1;->(Lkotlin/Lazy;Lkotlin/Lazy;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$1$1; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$1$1;->(Lkotlin/Lazy;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$1$1;->invoke(Lcom/artemchep/keyguard/data/Database;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$1$1$1; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$1$1$1;->([Lcom/artemchep/keyguard/data/bitwarden/Cipher;Lcom/artemchep/keyguard/data/Database;)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$1$1$1;->invoke(Lapp/cash/sqldelight/TransactionWithoutReturn;)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$2; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$2;->(I)V +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreen$1; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreen$1;->(Ljava/util/List;Z)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreen$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreen$1;->invoke(Lkotlinx/collections/immutable/PersistentList;Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1;->()V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1;->(ZLjava/util/List;Lkotlinx/collections/immutable/PersistentList;)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1;->access$invoke$lambda$6$lambda$0(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetNavLabel; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1;->access$invoke$lambda$6$lambda$2(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetAccountStatus; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1;->invoke$lambda$6$lambda$0(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetNavLabel; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1;->invoke$lambda$6$lambda$2(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetAccountStatus; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$1; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$1;->(Ljava/util/List;Lkotlinx/collections/immutable/PersistentList;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;)V +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$1$1; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$1$1;->(Lkotlinx/collections/immutable/PersistentList;)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$2; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$2;->(Landroidx/compose/runtime/State;Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/foundation/layout/WindowInsets;Ljava/util/List;Lkotlinx/collections/immutable/PersistentList;Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$2;->invoke(Landroidx/compose/animation/AnimatedVisibilityScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$2$1; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$2$1;->(Landroidx/compose/runtime/State;Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/foundation/layout/WindowInsets;Ljava/util/List;Lkotlinx/collections/immutable/PersistentList;Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$2$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$2$1$1$1$1$1; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$2$1$1$1$1$1;->(Lcom/artemchep/keyguard/feature/home/Rail;)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$2$1$1$1$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$2$1$1$1$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$2$1$isSyncingState$1$1; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$2$1$isSyncingState$1$1;->(Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$2$1$isSyncingState$1$1;->invoke()Ljava/lang/Boolean; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$2$1$isSyncingState$1$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$invoke$lambda$6$$inlined$rememberInstance$1; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$invoke$lambda$6$$inlined$rememberInstance$1;->()V +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$invoke$lambda$6$$inlined$rememberInstance$2; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$invoke$lambda$6$$inlined$rememberInstance$2;->()V +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$NavigationIcon$1; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$NavigationIcon$1;->(Landroidx/compose/ui/graphics/vector/ImageVector;Landroidx/compose/ui/graphics/vector/ImageVector;)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$NavigationIcon$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$NavigationIcon$1;->invoke(ZLandroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/home/Rail; +HSPLcom/artemchep/keyguard/feature/home/Rail;->()V +HSPLcom/artemchep/keyguard/feature/home/Rail;->(Lcom/artemchep/keyguard/feature/navigation/Route;Landroidx/compose/ui/graphics/vector/ImageVector;Landroidx/compose/ui/graphics/vector/ImageVector;Lcom/artemchep/keyguard/feature/localization/TextHolder;)V +HSPLcom/artemchep/keyguard/feature/home/Rail;->getIcon()Landroidx/compose/ui/graphics/vector/ImageVector; +HSPLcom/artemchep/keyguard/feature/home/Rail;->getIconSelected()Landroidx/compose/ui/graphics/vector/ImageVector; +HSPLcom/artemchep/keyguard/feature/home/Rail;->getLabel()Lcom/artemchep/keyguard/feature/localization/TextHolder; +HSPLcom/artemchep/keyguard/feature/home/Rail;->getRoute()Lcom/artemchep/keyguard/feature/navigation/Route; +Lcom/artemchep/keyguard/feature/home/settings/SettingsRoute; +HSPLcom/artemchep/keyguard/feature/home/settings/SettingsRoute;->()V +HSPLcom/artemchep/keyguard/feature/home/settings/SettingsRoute;->()V +Lcom/artemchep/keyguard/feature/home/vault/ComposableSingletons$VaultScreenKt; +HSPLcom/artemchep/keyguard/feature/home/vault/ComposableSingletons$VaultScreenKt;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/ComposableSingletons$VaultScreenKt;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/ComposableSingletons$VaultScreenKt;->getLambda-1$common_noneRelease()Lkotlin/jvm/functions/Function3; +Lcom/artemchep/keyguard/feature/home/vault/ComposableSingletons$VaultScreenKt$lambda-1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/ComposableSingletons$VaultScreenKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/ComposableSingletons$VaultScreenKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/ComposableSingletons$VaultScreenKt$lambda-1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/ComposableSingletons$VaultScreenKt$lambda-1$1;->invoke(Lkotlinx/collections/immutable/PersistentList;Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/home/vault/VaultRoute; +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute;->(Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;)V +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute;->(Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute;->Content(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute;->hashCode()I +Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args; +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;->(Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args$AppBar;Lcom/artemchep/keyguard/common/model/DFilter;Lcom/artemchep/keyguard/feature/home/vault/search/sort/Sort;ZLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args$SearchBy;Ljava/lang/Boolean;ZZ)V +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;->(Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args$AppBar;Lcom/artemchep/keyguard/common/model/DFilter;Lcom/artemchep/keyguard/feature/home/vault/search/sort/Sort;ZLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args$SearchBy;Ljava/lang/Boolean;ZZILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;->getAppBar()Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args$AppBar; +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;->getCanAddSecrets()Z +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;->getCanAlwaysShowKeyboard()Z +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;->getCanQuickFilter()Z +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;->getFilter()Lcom/artemchep/keyguard/common/model/DFilter; +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;->getPreselect()Z +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;->getSort()Lcom/artemchep/keyguard/feature/home/vault/search/sort/Sort; +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;->hashCode()I +Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args$AppBar; +Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args$SearchBy; +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args$SearchBy;->$values()[Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args$SearchBy; +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args$SearchBy;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args$SearchBy;->(Ljava/lang/String;I)V +Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Companion; +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Companion;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/home/vault/VaultScreenKt; +HSPLcom/artemchep/keyguard/feature/home/vault/VaultScreenKt;->VaultScreen(Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/home/vault/VaultScreenKt$VaultScreen$1; +HSPLcom/artemchep/keyguard/feature/home/vault/VaultScreenKt$VaultScreen$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListRoute;)V +HSPLcom/artemchep/keyguard/feature/home/vault/VaultScreenKt$VaultScreen$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/VaultScreenKt$VaultScreen$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/VaultScreenKt$VaultScreen$2; +HSPLcom/artemchep/keyguard/feature/home/vault/VaultScreenKt$VaultScreen$2;->(Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;I)V +Lcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt; +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt;->SearchTextField(Landroidx/compose/ui/Modifier;Ljava/lang/String;Ljava/lang/String;ZLkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt;->searchTextFieldBackground(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/ui/graphics/Shape;)Landroidx/compose/ui/Modifier; +Lcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$SearchTextField$1$1$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$SearchTextField$1$1$2$1;->(Lkotlin/jvm/functions/Function0;)V +Lcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$SearchTextField$1$1$3$1; +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$SearchTextField$1$1$3$1;->(Landroidx/compose/runtime/State;)V +Lcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$SearchTextField$1$1$4; +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$SearchTextField$1$1$4;->(Ljava/lang/String;Landroidx/compose/ui/text/TextStyle;)V +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$SearchTextField$1$1$4;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$SearchTextField$1$1$4;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$SearchTextField$1$1$6; +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$SearchTextField$1$1$6;->(Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/State;)V +Lcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$SearchTextField$2; +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$SearchTextField$2;->(Landroidx/compose/ui/Modifier;Ljava/lang/String;Ljava/lang/String;ZLkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;II)V +Lcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$searchTextFieldBackground$1; +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$searchTextFieldBackground$1;->(Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/ui/graphics/Shape;)V +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$searchTextFieldBackground$1;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$searchTextFieldBackground$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$searchTextFieldBackground$1$1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$searchTextFieldBackground$1$1$1;->(Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$searchTextFieldBackground$1$1$1;->invoke(Landroidx/compose/ui/graphics/drawscope/DrawScope;)V +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$searchTextFieldBackground$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$searchTextFieldBackground$1$isHighlightedState$1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$searchTextFieldBackground$1$isHighlightedState$1$1;->(Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$searchTextFieldBackground$1$isHighlightedState$1$1;->invoke()Ljava/lang/Boolean; +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$searchTextFieldBackground$1$isHighlightedState$1$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem; +Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item;->(Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;ZZILkotlin/jvm/functions/Function2;Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item;->copy$default(Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;ZZILkotlin/jvm/functions/Function2;Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item;->copy(Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;ZZILkotlin/jvm/functions/Function2;Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item;->getChecked()Z +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item;->getFilterSectionId()Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item;->getFilters()Ljava/util/Set; +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item;->getSectionId()Ljava/lang/String; +Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item$Companion; +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item$Companion;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item$id$1; +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item$id$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item$id$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item$id$1;->invoke(Lcom/artemchep/keyguard/common/model/DFilter$Primitive;)Ljava/lang/CharSequence; +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item$id$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Section; +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Section;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Section;->(Ljava/lang/String;Ljava/lang/String;ZLkotlin/jvm/functions/Function0;)V +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Section;->(Ljava/lang/String;Ljava/lang/String;ZLkotlin/jvm/functions/Function0;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Section;->getSectionId()Ljava/lang/String; +Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Section$Companion; +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Section$Companion;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Section$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/home/vault/model/SortItem; +Lcom/artemchep/keyguard/feature/home/vault/model/SortItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/model/SortItem$Item;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/model/SortItem$Item;->(Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;Landroidx/compose/ui/graphics/vector/ImageVector;Lcom/artemchep/keyguard/feature/localization/TextHolder;ZLkotlin/jvm/functions/Function0;)V +HSPLcom/artemchep/keyguard/feature/home/vault/model/SortItem$Item;->copy$default(Lcom/artemchep/keyguard/feature/home/vault/model/SortItem$Item;Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;Landroidx/compose/ui/graphics/vector/ImageVector;Lcom/artemchep/keyguard/feature/localization/TextHolder;ZLkotlin/jvm/functions/Function0;ILjava/lang/Object;)Lcom/artemchep/keyguard/feature/home/vault/model/SortItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/model/SortItem$Item;->copy(Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;Landroidx/compose/ui/graphics/vector/ImageVector;Lcom/artemchep/keyguard/feature/localization/TextHolder;ZLkotlin/jvm/functions/Function0;)Lcom/artemchep/keyguard/feature/home/vault/model/SortItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/model/SortItem$Item;->getConfig()Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder; +Lcom/artemchep/keyguard/feature/home/vault/model/SortItem$Section; +HSPLcom/artemchep/keyguard/feature/home/vault/model/SortItem$Section;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/model/SortItem$Section;->(Ljava/lang/String;Lcom/artemchep/keyguard/feature/localization/TextHolder;)V +Lcom/artemchep/keyguard/feature/home/vault/model/SortItem$Section$Companion; +HSPLcom/artemchep/keyguard/feature/home/vault/model/SortItem$Section$Companion;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/model/SortItem$Section$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/home/vault/model/VaultItem2; +Lcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$Item; +Lcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$Item$LocalState; +HSPLcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$Item$LocalState;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$Item$LocalState;->(Lcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$Item$OpenedState;Lcom/artemchep/keyguard/feature/attachments/SelectableItemState;)V +Lcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$Item$OpenedState; +HSPLcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$Item$OpenedState;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$Item$OpenedState;->(Z)V +Lcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$NoItems; +HSPLcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$NoItems;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$NoItems;->()V +Lcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$QuickFilters; +HSPLcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$QuickFilters;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$QuickFilters;->(Ljava/lang/String;Lkotlinx/collections/immutable/ImmutableList;)V +Lcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$QuickFilters$Companion; +HSPLcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$QuickFilters$Companion;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$QuickFilters$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;->(Lcom/artemchep/keyguard/feature/home/vault/search/sort/Sort;ZZ)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;->(Lcom/artemchep/keyguard/feature/home/vault/search/sort/Sort;ZZILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;->getComparator()Lcom/artemchep/keyguard/feature/home/vault/search/sort/Sort; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;->hashCode()I +Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder$Companion; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder$Companion;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder$Creator; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder$Creator;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt;->getLambda-1$common_noneRelease()Lkotlin/jvm/functions/Function2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt;->getLambda-2$common_noneRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt;->getLambda-3$common_noneRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt;->getLambda-4$common_noneRelease()Lkotlin/jvm/functions/Function2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt;->getLambda-5$common_noneRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt;->getLambda-6$common_noneRelease()Lkotlin/jvm/functions/Function3; +Lcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-1$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-2$1;->invoke(Landroidx/compose/foundation/lazy/LazyItemScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-3$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-3$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-3$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-3$1;->invoke(Landroidx/compose/foundation/lazy/LazyItemScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-3$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-4$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-4$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-4$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-4$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-4$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-5$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-5$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-5$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-5$1;->invoke(Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-5$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-6$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-6$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-6$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-6$1;->invoke(Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-6$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt;->getLambda-1$common_noneRelease()Lkotlin/jvm/functions/Function2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt;->getLambda-2$common_noneRelease()Lkotlin/jvm/functions/Function2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt;->getLambda-3$common_noneRelease()Lkotlin/jvm/functions/Function2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt;->getLambda-4$common_noneRelease()Lkotlin/jvm/functions/Function2; +Lcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-1$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-2$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-3$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-3$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-3$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-4$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-4$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-4$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-5$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-5$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-5$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-6$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-6$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-6$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-7$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-7$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-7$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-8$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-8$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-8$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function0;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;->getFilterFlow()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;->getOnClear()Lkotlin/jvm/functions/Function0; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;->getOnToggle()Lkotlin/jvm/functions/Function2; +Lcom/artemchep/keyguard/feature/home/vault/screen/FilterParams; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilterParams;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilterParams;->(Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/FilterParams$Section;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilterParams;->(Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/FilterParams$Section;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilterParams;->getDeeplinkCustomFilter()Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilterParams;->getSection()Lcom/artemchep/keyguard/feature/home/vault/screen/FilterParams$Section; +Lcom/artemchep/keyguard/feature/home/vault/screen/FilterParams$Section; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilterParams$Section;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilterParams$Section;->(ZZZZZZ)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilterParams$Section;->(ZZZZZZILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilterParams$Section;->getAccount()Z +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilterParams$Section;->getCollection()Z +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilterParams$Section;->getFolder()Z +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilterParams$Section;->getMisc()Z +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilterParams$Section;->getOrganization()Z +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilterParams$Section;->getType()Z +Lcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo;->(ILjava/util/List;Ljava/util/List;Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;Lcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder;Lcom/artemchep/keyguard/feature/home/vault/search/IndexedText;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo;->(ILjava/util/List;Ljava/util/List;Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;Lcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder;Lcom/artemchep/keyguard/feature/home/vault/search/IndexedText;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo;->copy$default(Lcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo;ILjava/util/List;Ljava/util/List;Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;Lcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder;Lcom/artemchep/keyguard/feature/home/vault/search/IndexedText;ILjava/lang/Object;)Lcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo;->copy(ILjava/util/List;Ljava/util/List;Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;Lcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder;Lcom/artemchep/keyguard/feature/home/vault/search/IndexedText;)Lcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo;->getCount()I +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo;->getFilterConfig()Lcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo;->getList()Ljava/util/List; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo;->getOrderConfig()Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo;->getPreferredList()Ljava/util/List; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo;->getQueryConfig()Lcom/artemchep/keyguard/feature/home/vault/search/IndexedText; +Lcom/artemchep/keyguard/feature/home/vault/screen/OhOhOh; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/OhOhOh;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/OhOhOh;->(Ljava/lang/String;II)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/OhOhOh;->(Ljava/lang/String;IIILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/OhOhOh;->getRevision()I +Lcom/artemchep/keyguard/feature/home/vault/screen/OhOhOh$Creator; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/OhOhOh$Creator;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/OurFilterResult; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/OurFilterResult;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/OurFilterResult;->(ILjava/util/List;Lkotlin/jvm/functions/Function0;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/OurFilterResult;->(ILjava/util/List;Lkotlin/jvm/functions/Function0;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/OurFilterResult;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/feature/home/vault/screen/OurFilterResult;->getItems()Ljava/util/List; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/OurFilterResult;->getOnClear()Lkotlin/jvm/functions/Function0; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/OurFilterResult;->getRev()I +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt;->access$ah$createFolderFilterAction(Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;Ljava/util/Set;Ljava/lang/String;Landroidx/compose/ui/graphics/vector/ImageVector;ZI)Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt;->ah$aaa$default(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;Lkotlinx/coroutines/flow/MutableStateFlow;Ljava/lang/String;Ljava/lang/String;ZILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt;->ah$aaa(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;Lkotlinx/coroutines/flow/MutableStateFlow;Ljava/lang/String;Ljava/lang/String;Z)Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt;->ah$createCollectionFilterAction$default(Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;Ljava/util/Set;Ljava/lang/String;Landroidx/compose/ui/graphics/vector/ImageVector;ILjava/lang/Object;)Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt;->ah$createCollectionFilterAction(Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;Ljava/util/Set;Ljava/lang/String;Landroidx/compose/ui/graphics/vector/ImageVector;)Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt;->ah$createFilterAction$default(Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;Ljava/lang/String;Ljava/util/Set;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/ui/icons/AccentColors;Landroidx/compose/ui/graphics/vector/ImageVector;ZIILjava/lang/Object;)Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt;->ah$createFilterAction(Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;Ljava/lang/String;Ljava/util/Set;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/ui/icons/AccentColors;Landroidx/compose/ui/graphics/vector/ImageVector;ZI)Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt;->ah$createFolderFilterAction(Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;Ljava/util/Set;Ljava/lang/String;Landroidx/compose/ui/graphics/vector/ImageVector;ZI)Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt;->ah$createOrganizationFilterAction$default(Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;Ljava/util/Set;Ljava/lang/String;Landroidx/compose/ui/graphics/vector/ImageVector;ILjava/lang/Object;)Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt;->ah$createOrganizationFilterAction(Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;Ljava/util/Set;Ljava/lang/String;Landroidx/compose/ui/graphics/vector/ImageVector;)Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt;->ah$createTypeFilterAction$default(Ljava/lang/String;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;Lcom/artemchep/keyguard/common/model/DSecret$Type;Ljava/lang/String;ILjava/lang/Object;)Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt;->ah$createTypeFilterAction(Ljava/lang/String;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;Lcom/artemchep/keyguard/common/model/DSecret$Type;Ljava/lang/String;)Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt;->ah$filterSection(Lkotlinx/coroutines/flow/Flow;Z)Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt;->ah(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lorg/kodein/di/DirectDI;Lkotlin/jvm/functions/Function1;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;Lcom/artemchep/keyguard/feature/home/vault/screen/FilterParams;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt;->createFilter(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt;->mapCiphers(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$combine$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$combine$1;->([Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$combine$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$combine$1$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$combine$1$2;->([Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$combine$1$2;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$combine$1$2;->invoke()[Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$combine$1$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$combine$1$3;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$combine$1$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$combine$1$3;->invoke(Lkotlinx/coroutines/flow/FlowCollector;[Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$combine$1$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$2;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$2;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$2$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$2$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$2$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$2$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$2$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$2$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$2$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$3;->(Lkotlinx/coroutines/flow/Flow;Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$3;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$3$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$3$2;->(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$3$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$3$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$3$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$3$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$3$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$4; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$4;->(Lkotlinx/coroutines/flow/Flow;Ljava/util/List;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$4;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$4$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$4$2;->(Lkotlinx/coroutines/flow/FlowCollector;Ljava/util/List;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$4$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$4$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$4$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$4$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$4$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$5; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$5;->(Lkotlinx/coroutines/flow/Flow;Ljava/util/Set;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lkotlin/jvm/functions/Function1;Lcom/artemchep/keyguard/common/usecase/GetFolderTree;Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$5;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$5$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$5$2;->(Lkotlinx/coroutines/flow/FlowCollector;Ljava/util/Set;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lkotlin/jvm/functions/Function1;Lcom/artemchep/keyguard/common/usecase/GetFolderTree;Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$5$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$5$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$5$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$5$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$5$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$6; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$6;->(Lkotlinx/coroutines/flow/Flow;Ljava/util/Set;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lkotlin/jvm/functions/Function1;Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$6;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$6$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$6$2;->(Lkotlinx/coroutines/flow/FlowCollector;Ljava/util/Set;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lkotlin/jvm/functions/Function1;Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$6$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$6$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$6$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$6$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$6$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$7; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$7;->(Lkotlinx/coroutines/flow/Flow;Ljava/util/Set;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lkotlin/jvm/functions/Function1;Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$7;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$7$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$7$2;->(Lkotlinx/coroutines/flow/FlowCollector;Ljava/util/Set;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lkotlin/jvm/functions/Function1;Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$7$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$7$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$7$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$7$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$7$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$8; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$8;->(Lkotlinx/coroutines/flow/Flow;Ljava/util/List;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$8;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$8$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$8$2;->(Lkotlinx/coroutines/flow/FlowCollector;Ljava/util/List;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$8$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$8$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$8$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$8$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$8$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$9; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$9;->(Lkotlinx/coroutines/flow/Flow;Ljava/util/List;Ljava/util/List;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$9;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$9$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$9$2;->(Lkotlinx/coroutines/flow/FlowCollector;Ljava/util/List;Ljava/util/List;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$9$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$9$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$9$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$9$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$9$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$3;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$3;->invoke(Ljava/util/List;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$4; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$4;->(Lorg/kodein/di/DirectDI;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$4;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$4;->invoke(Ljava/util/List;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$4;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$4$checkedSectionIds$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$4$checkedSectionIds$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$4$checkedSectionIds$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$4$checkedSectionIds$1;->invoke(Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$4$checkedSectionIds$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$5; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$5;->(Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$5;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$5;->invoke(Ljava/util/List;Lcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$5;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$$inlined$map$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;ZLjava/lang/String;Ljava/lang/String;Lkotlinx/coroutines/flow/MutableStateFlow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;ZLjava/lang/String;Ljava/lang/String;Lkotlinx/coroutines/flow/MutableStateFlow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$$inlined$map$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$1;->invoke(Ljava/util/List;Lcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$2$1$sectionItem$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$2$1$sectionItem$1;->(Ljava/lang/String;Lkotlinx/coroutines/flow/MutableStateFlow;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$collapsedSectionIdsSink$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$collapsedSectionIdsSink$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$collapsedSectionIdsSink$1;->()V +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$collapsedSectionIdsSink$1;->invoke()Ljava/lang/Object; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$collapsedSectionIdsSink$1;->invoke()Ljava/util/List; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createCollectionFilterAction$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createCollectionFilterAction$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createCollectionFilterAction$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createCollectionFilterAction$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createCollectionFilterAction$1;->invoke(Ljava/lang/String;)Lcom/artemchep/keyguard/common/model/DFilter$ById; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createFilterAction$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createFilterAction$1;->(Landroidx/compose/ui/graphics/vector/ImageVector;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createFolderFilterAction$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createFolderFilterAction$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createFolderFilterAction$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createFolderFilterAction$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createFolderFilterAction$1;->invoke(Ljava/lang/String;)Lcom/artemchep/keyguard/common/model/DFilter$ById; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createOrganizationFilterAction$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createOrganizationFilterAction$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createOrganizationFilterAction$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createOrganizationFilterAction$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createOrganizationFilterAction$1;->invoke(Ljava/lang/String;)Lcom/artemchep/keyguard/common/model/DFilter$ById; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterAccountListFlow$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterAccountListFlow$2;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterAccountListFlow$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterAccountListFlow$2;->invoke(Ljava/util/List;Ljava/util/Set;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterAccountListFlow$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterAccountsWithCiphers$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterAccountsWithCiphers$1;->(Lkotlin/jvm/functions/Function1;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterCollectionListFlow$1$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterCollectionListFlow$1$2;->(Lkotlin/jvm/functions/Function1;Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterCollectionListFlow$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterCollectionListFlow$2;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterCollectionListFlow$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterCollectionListFlow$2;->invoke(Ljava/util/List;Ljava/util/Set;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterCollectionListFlow$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterCollectionsWithCiphers$1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterCollectionsWithCiphers$1$1;->(Lkotlin/jvm/functions/Function1;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterFolderListFlow$1$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterFolderListFlow$1$2;->(Lkotlin/jvm/functions/Function1;Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterFolderListFlow$1$p$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterFolderListFlow$1$p$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterFolderListFlow$1$p$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterFolderListFlow$1$p$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterFolderListFlow$1$p$2;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterFolderListFlow$1$p$2;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterFolderListFlow$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterFolderListFlow$2;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterFolderListFlow$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterFolderListFlow$2;->invoke(Ljava/util/List;Ljava/util/Set;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterFolderListFlow$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterFoldersWithCiphers$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterFoldersWithCiphers$1;->(Lkotlin/jvm/functions/Function1;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterOrganizationListFlow$1$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterOrganizationListFlow$1$2;->(Lkotlin/jvm/functions/Function1;Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterOrganizationListFlow$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterOrganizationListFlow$2;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterOrganizationListFlow$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterOrganizationListFlow$2;->invoke(Ljava/util/List;Ljava/util/Set;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterOrganizationListFlow$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterOrganizationsWithCiphers$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterOrganizationsWithCiphers$1;->(Lkotlin/jvm/functions/Function1;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterTypesWithCiphers$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterTypesWithCiphers$1;->(Lkotlin/jvm/functions/Function1;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$lambda$17$$inlined$sortedBy$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$lambda$17$$inlined$sortedBy$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$lambda$20$$inlined$sortedBy$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$lambda$20$$inlined$sortedBy$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$lambda$23$$inlined$sortedBy$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$lambda$23$$inlined$sortedBy$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$createFilter$filterSink$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$createFilter$filterSink$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$createFilter$filterSink$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$createFilter$filterSink$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$createFilter$filterSink$2;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$createFilter$filterSink$2;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$createFilter$filterSink$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$createFilter$filterSink$3;->(Lcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$createFilter$filterSink$3;->invoke()Lcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$createFilter$filterSink$3;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$createFilter$onClear$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$createFilter$onClear$1;->(Lkotlinx/coroutines/flow/MutableStateFlow;Lcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$createFilter$onToggle$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$createFilter$onToggle$1;->(Lkotlinx/coroutines/flow/MutableStateFlow;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$mapCiphers$$inlined$map$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$mapCiphers$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$mapCiphers$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$mapCiphers$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$mapCiphers$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$mapCiphers$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$mapCiphers$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$mapCiphers$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$mapCiphers$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$mapCiphers$$inlined$map$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListRoute; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListRoute;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListRoute;->(Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListRoute;->Content(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListRoute;->hashCode()I +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt;->VaultHomeScreenListPane(Landroidx/compose/ui/Modifier;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;Lcom/artemchep/keyguard/ui/focus/FocusRequester2;Ljava/lang/String;Ljava/lang/String;ZZZLandroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt;->VaultListFilterButton(Landroidx/compose/ui/Modifier;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt;->VaultListScreen(Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt;->VaultListSortButton(Landroidx/compose/ui/Modifier;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt;->access$VaultListFilterButton(Landroidx/compose/ui/Modifier;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt;->access$VaultListSortButton(Landroidx/compose/ui/Modifier;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items$Revision;Landroidx/compose/foundation/lazy/LazyListState;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$2;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items$Revision;Landroidx/compose/foundation/lazy/LazyListState;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$4; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$4;->(Landroidx/compose/material3/TopAppBarScrollBehavior;Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/ui/focus/FocusRequester2;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;Z)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$4;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$4;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$4$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$4$1;->(Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/ui/focus/FocusRequester2;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;Z)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$4$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$4$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$4$1$1$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$4$1$1$2;->(Z)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$4$1$1$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$4$1$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$4$1$1$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$4$1$1$3;->(ZZLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$4$1$1$3;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$4$1$1$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$5; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$5;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$5;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$5;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$6; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$6;->(Landroidx/compose/runtime/MutableState;Landroidx/compose/runtime/State;Landroidx/compose/runtime/MutableState;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$6;->invoke(Lcom/artemchep/keyguard/ui/FabScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$6;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$6$1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$6$1$1;->(Landroidx/compose/runtime/MutableState;Landroidx/compose/runtime/State;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$6$1$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$6$1$2$1;->(Landroidx/compose/runtime/MutableState;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$6$1$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$6$1$3;->(Landroidx/compose/runtime/MutableState;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$7; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$7;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;Landroidx/compose/material/pullrefresh/PullRefreshState;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$7;->invoke(Lcom/artemchep/keyguard/ui/OverlayScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$7;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;ZZ)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1;->invoke(Landroidx/compose/foundation/lazy/LazyListScope;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1$1;->invoke(Landroidx/compose/foundation/lazy/LazyItemScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1$2;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1$2;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1$invoke$$inlined$items$default$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1$invoke$$inlined$items$default$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1$invoke$$inlined$items$default$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1$invoke$$inlined$items$default$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1$invoke$$inlined$items$default$2;->(Lkotlin/jvm/functions/Function1;Ljava/util/List;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1$invoke$$inlined$items$default$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1$invoke$$inlined$items$default$3;->(Lkotlin/jvm/functions/Function1;Ljava/util/List;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1$invoke$$inlined$items$default$4; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1$invoke$$inlined$items$default$4;->(Ljava/util/List;ZLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;Z)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$pullRefreshState$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$pullRefreshState$1;->(Lcom/artemchep/keyguard/ui/focus/FocusRequester2;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$1$1;->(Landroidx/compose/runtime/MutableState;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$1$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$1$1;->invoke()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$2;->(Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$2$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$2$1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$2$1$1;->(Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$2$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$2$1$1;->emit(Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$2$childBackStackFlow$1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$2$childBackStackFlow$1$1;->(Lkotlinx/collections/immutable/PersistentList;Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$2$childBackStackFlow$1$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$2$childBackStackFlow$1$1;->invoke()Ljava/util/List; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$3$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$3$1;->(Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$4; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$4;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$5; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$5;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;Lcom/artemchep/keyguard/ui/focus/FocusRequester2;Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$5;->invoke(Lcom/artemchep/keyguard/feature/twopane/TwoPaneScaffoldScope;Landroidx/compose/ui/Modifier;ZLandroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$5;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$6; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$6;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;Lcom/artemchep/keyguard/ui/focus/FocusRequester2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$6;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$6;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$7; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$7;->(Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$7;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$7;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->(ILcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;Ljava/util/List;Ljava/util/List;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;ZLjava/util/List;Ljava/util/List;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$SideEffects;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->(ILcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;Ljava/util/List;Ljava/util/List;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;ZLjava/util/List;Ljava/util/List;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$SideEffects;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->copy$default(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;ILcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;Ljava/util/List;Ljava/util/List;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;ZLjava/util/List;Ljava/util/List;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$SideEffects;ILjava/lang/Object;)Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->copy(ILcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;Ljava/util/List;Ljava/util/List;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;ZLjava/util/List;Ljava/util/List;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$SideEffects;)Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->getActions()Ljava/util/List; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->getClearFilters()Lkotlin/jvm/functions/Function0; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->getClearSort()Lkotlin/jvm/functions/Function0; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->getContent()Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->getFilters()Ljava/util/List; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->getPrimaryActions()Ljava/util/List; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->getQuery()Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->getSelectCipher()Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->getShowKeyboard()Z +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->getSideEffects()Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$SideEffects; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->getSort()Ljava/util/List; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Companion; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Companion;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$AddAccount; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$AddAccount;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$AddAccount;->(Lkotlin/jvm/functions/Function0;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$AddAccount;->getOnAddAccount()Lkotlin/jvm/functions/Function0; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$AddAccount$Companion; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$AddAccount$Companion;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$AddAccount$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items$Revision;Lcom/artemchep/keyguard/ui/Selection;Ljava/util/List;ILkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items$Revision;Lcom/artemchep/keyguard/ui/Selection;Ljava/util/List;ILkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items$Companion; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items$Companion;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items$Revision; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items$Revision;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items$Revision;->(ILcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items$Revision$Mutable;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items$Revision$Mutable;Lkotlin/jvm/functions/Function2;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items$Revision$Companion; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items$Revision$Companion;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items$Revision$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items$Revision$Mutable; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Skeleton; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Skeleton;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Skeleton;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$SideEffects; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$SideEffects;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$SideEffects;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$SideEffects;->(Lkotlinx/coroutines/flow/Flow;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$SideEffects;->getShowBiometricPromptFlow()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$SideEffects$Companion; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$SideEffects$Companion;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$SideEffects$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt;->access$hahah-Samhc0A(Lorg/kodein/di/DirectDI;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/common/model/AutofillTarget;Lcom/artemchep/keyguard/common/usecase/GetSuggestions;Lcom/artemchep/keyguard/common/usecase/DateFormatter;JJ)Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt;->hahah-Samhc0A(Lorg/kodein/di/DirectDI;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/common/model/AutofillTarget;Lcom/artemchep/keyguard/common/usecase/GetSuggestions;Lcom/artemchep/keyguard/common/usecase/DateFormatter;JJ)Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt;->vaultListScreenState-ML3G3h0(Lorg/kodein/di/DirectDI;Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;JJLcom/artemchep/keyguard/AppMode;Lcom/artemchep/keyguard/common/service/deeplink/DeeplinkService;Lcom/artemchep/keyguard/common/usecase/GetSuggestions;Lcom/artemchep/keyguard/common/usecase/GetAccounts;Lcom/artemchep/keyguard/common/usecase/GetProfiles;Lcom/artemchep/keyguard/common/usecase/GetCanWrite;Lcom/artemchep/keyguard/common/usecase/GetCiphers;Lcom/artemchep/keyguard/common/usecase/GetFolders;Lcom/artemchep/keyguard/common/usecase/GetCollections;Lcom/artemchep/keyguard/common/usecase/GetOrganizations;Lcom/artemchep/keyguard/common/usecase/GetTotpCode;Lcom/artemchep/keyguard/common/usecase/GetConcealFields;Lcom/artemchep/keyguard/common/usecase/GetAppIcons;Lcom/artemchep/keyguard/common/usecase/GetWebsiteIcons;Lcom/artemchep/keyguard/common/usecase/GetPasswordStrength;Lcom/artemchep/keyguard/common/usecase/GetCipherOpenedHistory;Lcom/artemchep/keyguard/common/usecase/PasskeyTargetCheck;Lcom/artemchep/keyguard/common/usecase/RenameFolderById;Lcom/artemchep/keyguard/common/usecase/ClearVaultSession;Lcom/artemchep/keyguard/common/usecase/CipherToolbox;Lcom/artemchep/keyguard/common/usecase/QueueSyncAll;Lcom/artemchep/keyguard/common/usecase/SupervisorRead;Lcom/artemchep/keyguard/common/usecase/DateFormatter;Lcom/artemchep/keyguard/common/service/clipboard/ClipboardService;Landroidx/compose/runtime/Composer;III)Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt;->vaultListScreenState-RIQooxk(Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;JJLcom/artemchep/keyguard/AppMode;Landroidx/compose/runtime/Composer;I)Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$2$orderComparator$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$2$orderComparator$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$3;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$3;->invoke(Lcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo;Lkotlin/Pair;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$4; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$4;->(Lorg/kodein/di/DirectDI;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$4;->invoke(Lcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo;Lcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$4;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$4;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$5; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$5;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$5;->invoke(Lcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo;Lcom/artemchep/keyguard/feature/home/vault/search/IndexedText;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$5;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$5;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$6; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$6;->(JJLkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$6;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$6;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$6;->invoke(Lkotlin/Pair;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$6;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$7$items$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$7$items$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo;Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;Lcom/artemchep/keyguard/feature/decorator/ItemDecorator;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$7$items$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$7$items$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/common/model/AutofillTarget;Lcom/artemchep/keyguard/common/usecase/GetSuggestions;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/common/model/AutofillTarget;Lcom/artemchep/keyguard/common/usecase/GetSuggestions;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$2;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$2;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$2$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$2$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$2$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$2$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$2$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$2$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$2$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$3;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/common/usecase/DateFormatter;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$3;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$3$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$3$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/common/usecase/DateFormatter;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$3$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$3$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$3$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$3$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2;->(Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;Lcom/artemchep/keyguard/common/service/clipboard/ClipboardService;Lcom/artemchep/keyguard/common/usecase/GetCiphers;Lcom/artemchep/keyguard/common/usecase/SupervisorRead;Lcom/artemchep/keyguard/common/usecase/GetConcealFields;Lcom/artemchep/keyguard/common/usecase/GetAppIcons;Lcom/artemchep/keyguard/common/usecase/GetWebsiteIcons;Lcom/artemchep/keyguard/common/usecase/GetOrganizations;Lcom/artemchep/keyguard/AppMode;Lorg/kodein/di/DirectDI;Lcom/artemchep/keyguard/common/usecase/GetSuggestions;Lcom/artemchep/keyguard/common/usecase/DateFormatter;JJLcom/artemchep/keyguard/common/service/deeplink/DeeplinkService;Lcom/artemchep/keyguard/common/usecase/GetAccounts;Lcom/artemchep/keyguard/common/usecase/GetProfiles;Lcom/artemchep/keyguard/common/usecase/GetFolders;Lcom/artemchep/keyguard/common/usecase/GetCollections;Lcom/artemchep/keyguard/common/usecase/GetCanWrite;Lcom/artemchep/keyguard/common/usecase/CipherToolbox;Lcom/artemchep/keyguard/common/usecase/QueueSyncAll;Lcom/artemchep/keyguard/common/usecase/ClearVaultSession;Lcom/artemchep/keyguard/common/usecase/RenameFolderById;Lcom/artemchep/keyguard/common/usecase/PasskeyTargetCheck;Lcom/artemchep/keyguard/common/usecase/GetTotpCode;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2;->invoke(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2;->invokeSuspend$createComparatorAction$default(Lkotlinx/coroutines/flow/MutableStateFlow;Ljava/lang/String;Ldev/icerock/moko/resources/StringResource;Landroidx/compose/ui/graphics/vector/ImageVector;Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;ILjava/lang/Object;)Lcom/artemchep/keyguard/feature/home/vault/model/SortItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2;->invokeSuspend$createComparatorAction(Lkotlinx/coroutines/flow/MutableStateFlow;Ljava/lang/String;Ldev/icerock/moko/resources/StringResource;Landroidx/compose/ui/graphics/vector/ImageVector;Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;)Lcom/artemchep/keyguard/feature/home/vault/model/SortItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$1;->(Lcom/artemchep/keyguard/ui/selection/SelectionHandle;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$1;->invoke(Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$2;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$2;->invoke(Ljava/util/List;Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$4; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$4;->(Landroidx/compose/runtime/MutableState;Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;Lcom/artemchep/keyguard/common/util/flow/EventFlow;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lcom/artemchep/keyguard/AppMode;Lkotlinx/coroutines/flow/MutableStateFlow;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$4;->invoke(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items;Lcom/artemchep/keyguard/feature/home/vault/screen/OurFilterResult;Lkotlin/Pair;Lkotlin/Pair;ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$4;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$4;->invokeSuspend$createTypeAction(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lcom/artemchep/keyguard/AppMode;Ljava/lang/String;Lcom/artemchep/keyguard/common/model/DSecret$Type;)Lcom/artemchep/keyguard/ui/FlatItemAction; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$4;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$4$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$4$3;->(Ljava/lang/Object;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$4$content$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$4$content$1;->(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$4$createTypeAction$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$4$createTypeAction$1;->(Lcom/artemchep/keyguard/AppMode;Ljava/lang/String;Lcom/artemchep/keyguard/common/model/DSecret$Type;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$5; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$5;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$5;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$5;->invoke(ZLjava/util/Set;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$5;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$6; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$6;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$6;->invoke(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$6;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$6;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$7; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$7;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$7;->invoke(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;Lkotlinx/collections/immutable/PersistentList;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$7;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$7;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$8; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$8;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$8;->invoke(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$8;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$8;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$ConfigMapper; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$ConfigMapper;->(ZZZ)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Fuu; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Fuu;->(Lcom/artemchep/keyguard/feature/home/vault/model/SortItem$Item;Ljava/util/List;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Fuu;->getItem()Lcom/artemchep/keyguard/feature/home/vault/model/SortItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Fuu;->getSubItems()Ljava/util/List; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Rev; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Rev;->(ILjava/util/List;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Rev;->copy$default(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Rev;ILjava/util/List;IILjava/lang/Object;)Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Rev; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Rev;->copy(ILjava/util/List;I)Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Rev; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Rev;->getCount()I +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Rev;->getList()Ljava/util/List; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Rev;->getRevision()I +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$1$1$1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$1$1$1$1;->(Lkotlinx/collections/immutable/PersistentList;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$1$1$1$1;->invoke(Lcom/artemchep/keyguard/ui/ContextItemBuilder;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$1$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionAlwaysShowKeyboardFlow$1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionAlwaysShowKeyboardFlow$1$1;->(ZLkotlinx/coroutines/flow/MutableStateFlow;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionAlwaysShowKeyboardFlow$1$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionAlwaysShowKeyboardFlow$1$2;->(Ljava/lang/Object;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionAlwaysShowKeyboardFlow$1$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionAlwaysShowKeyboardFlow$1$3;->(Ljava/lang/Object;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionDownloadsItem$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionDownloadsItem$1;->(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionGroup2Flow$1$1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionGroup2Flow$1$1$1;->([Lcom/artemchep/keyguard/ui/FlatItemAction;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionGroup2Flow$1$1$1;->invoke(Lcom/artemchep/keyguard/ui/ContextItemBuilder;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionGroup2Flow$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionGroup3Flow$1$1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionGroup3Flow$1$1$1;->([Lcom/artemchep/keyguard/ui/FlatItemAction;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionGroup3Flow$1$1$1;->invoke(Lcom/artemchep/keyguard/ui/ContextItemBuilder;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionGroup3Flow$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionGroupFlow$1$1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionGroupFlow$1$1$1;->([Lcom/artemchep/keyguard/ui/FlatItemAction;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionGroupFlow$1$1$1;->invoke(Lcom/artemchep/keyguard/ui/ContextItemBuilder;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionGroupFlow$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionLockVaultItem$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionLockVaultItem$1;->(Lcom/artemchep/keyguard/common/usecase/ClearVaultSession;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionSyncAccountsFlow$1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionSyncAccountsFlow$1$1;->(Z)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionSyncAccountsFlow$1$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionSyncAccountsFlow$1$2;->(Lcom/artemchep/keyguard/common/usecase/QueueSyncAll;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionTrashItem$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionTrashItem$1;->(Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$ciphersFlow$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$ciphersFlow$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$ciphersFlow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$ciphersFlow$1;->invoke(Ljava/util/List;Ljava/util/Map;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$ConfigMapper;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$ciphersFlow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$ciphersFlow$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$ciphersFlow$2;->(Lcom/artemchep/keyguard/AppMode;Lcom/artemchep/keyguard/common/usecase/PasskeyTargetCheck;Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;Lcom/artemchep/keyguard/ui/selection/SelectionHandle;Lkotlinx/coroutines/flow/MutableStateFlow;Lcom/artemchep/keyguard/common/usecase/CopyText;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lcom/artemchep/keyguard/common/usecase/GetTotpCode;Lcom/artemchep/keyguard/common/util/flow/EventFlow;Lorg/kodein/di/DirectDI;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$ciphersFlow$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$ciphersFlow$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/Triple;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$ciphersFlow$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$configFlow$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$configFlow$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$configFlow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$configFlow$1;->invoke(ZZZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$configFlow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$createComparatorAction$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$createComparatorAction$1;->(Lkotlinx/coroutines/flow/MutableStateFlow;Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$fffFolderId$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$fffFolderId$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$fffFolderId$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$3;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$3;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$4; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$4;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$4;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$5; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$5;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$5;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$6; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$6;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$6;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$7; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$7;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$7;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$2;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$2;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$2$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$2$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$2$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$2$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$2$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$2$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$2$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$3;->(Lkotlinx/coroutines/flow/Flow;Ljava/util/Map;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$3;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$3$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$3$2;->(Lkotlinx/coroutines/flow/FlowCollector;Ljava/util/Map;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$3$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$3$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$3$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$3$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$3$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$4; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$4;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$4;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$4$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$4$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$4$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$4$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$4$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$4$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$4$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$5; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$5;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$5;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$5$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$5$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$5$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$5$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$5$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$5$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$5$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$6; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$6;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/AppMode;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$6;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$6$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$6$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/AppMode;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$6$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$6$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$6$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$6$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$7; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$7;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$7;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$7$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$7$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$7$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$7$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$7$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$7$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$7$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$8; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$8;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$8;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$8$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$8$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$8$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$8$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$8$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$8$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$8$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$9; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$9;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$9;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$9$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$9$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$9$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$9$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$9$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$9$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$9$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$1;->([Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$1$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$1$2;->([Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$1$2;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$1$2;->invoke()[Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$1$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$1$3;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$1$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$1$3;->invoke(Lkotlinx/coroutines/flow/FlowCollector;[Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$1$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$2;->([Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$2;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$2$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$2$2;->([Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$2$2;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$2$2;->invoke()[Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$2$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$2$3;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$2$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$2$3;->invoke(Lkotlinx/coroutines/flow/FlowCollector;[Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$2$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$3;->([Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$3;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$3$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$3$2;->([Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$3$2;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$3$2;->invoke()[Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$3$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$3$3;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$3$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$3$3;->invoke(Lkotlinx/coroutines/flow/FlowCollector;[Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$3$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$4; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$4;->([Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$4;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$4$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$4$2;->([Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$4$2;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$4$2;->invoke()[Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$4$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$4$3;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$4$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$4$3;->invoke(Lkotlinx/coroutines/flow/FlowCollector;[Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$4$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lkotlinx/coroutines/flow/MutableStateFlow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lkotlinx/coroutines/flow/MutableStateFlow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$2;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lcom/artemchep/keyguard/common/usecase/QueueSyncAll;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$2;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$2$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$2$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lcom/artemchep/keyguard/common/usecase/QueueSyncAll;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$2$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$2$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$2$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$2$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$2$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$3;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Ljava/lang/String;Lcom/artemchep/keyguard/common/usecase/RenameFolderById;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$3;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$3$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$3$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Ljava/lang/String;Lcom/artemchep/keyguard/common/usecase/RenameFolderById;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$3$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$3$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$3$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$3$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$3$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$4; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$4;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$4;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$4$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$4$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$4$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$4$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$4$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$4$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$4$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemSink$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemSink$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemSink$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemSink$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemSink$1;->invoke()Ljava/lang/String; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2;->(Lkotlin/jvm/internal/Ref$ObjectRef;Lkotlinx/coroutines/flow/MutableStateFlow;Lkotlinx/coroutines/flow/MutableStateFlow;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2;->invoke(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Rev;Lcom/artemchep/keyguard/ui/Selection;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2$2;->(Ljava/util/List;Lkotlin/jvm/internal/Ref$ObjectRef;Ljava/util/List;Lkotlinx/coroutines/flow/MutableStateFlow;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Rev;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2$3;->(Lkotlinx/coroutines/flow/MutableStateFlow;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2$a$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2$a$1;->(Lkotlinx/coroutines/flow/MutableStateFlow;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Rev;Ljava/util/List;II)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2$b$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2$b$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2$a$1;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2$c$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2$c$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2$a$1;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$querySink$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$querySink$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$querySink$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$querySink$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$querySink$1;->invoke()Ljava/lang/String; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$scrollPositionSink$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$scrollPositionSink$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$scrollPositionSink$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$scrollPositionSink$1;->invoke()Lcom/artemchep/keyguard/feature/home/vault/screen/OhOhOh; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$scrollPositionSink$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$showKeyboardSink$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$showKeyboardSink$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$showKeyboardSink$1;->()V +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$showKeyboardSink$1;->invoke()Ljava/lang/Boolean; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$showKeyboardSink$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$sortSink$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$sortSink$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$sortSink$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$sortSink$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$sortSink$2;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$sortSink$2;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$sortSink$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$sortSink$3;->(Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$sortSink$3;->invoke()Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$sortSink$3;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$10; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$10;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$11; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$11;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$12; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$12;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$13; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$13;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$14; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$14;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$15; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$15;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$16; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$16;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$17; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$17;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$18; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$18;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$19; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$19;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$20; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$20;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$21; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$21;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$22; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$22;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$23; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$23;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$4; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$4;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$5; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$5;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$6; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$6;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$7; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$7;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$8; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$8;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$9; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$9;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultViewRoute; +Lcom/artemchep/keyguard/feature/home/vault/search/IndexedText; +Lcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder; +HSPLcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder;->(Ljava/util/Map;)V +HSPLcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder;->getFilter()Lcom/artemchep/keyguard/common/model/DFilter$And; +HSPLcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder;->getId()I +HSPLcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder;->getState()Ljava/util/Map; +Lcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder$1; +HSPLcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder$1;->(Lcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder;)V +HSPLcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder$1;->invoke()Lcom/artemchep/keyguard/common/model/DFilter$And; +HSPLcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder$2; +HSPLcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder$2;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder$2;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder$Companion; +HSPLcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder$Companion;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/AlphabeticalSort; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/AlphabeticalSort;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/AlphabeticalSort;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/AlphabeticalSort$1; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/AlphabeticalSort$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/AlphabeticalSort$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/AlphabeticalSort$Creator; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/AlphabeticalSort$Creator;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/LastCreatedSort; +Lcom/artemchep/keyguard/feature/home/vault/search/sort/LastModifiedSort; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/LastModifiedSort;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/LastModifiedSort;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/LastModifiedSort$1; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/LastModifiedSort$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/LastModifiedSort$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/LastModifiedSort$Creator; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/LastModifiedSort$Creator;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/LastModifiedSort$LastModifiedRawComparator; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/LastModifiedSort$LastModifiedRawComparator;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/LastModifiedSort$LastModifiedRawComparator;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/LastModifiedSort$special$$inlined$thenBy$1; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/LastModifiedSort$special$$inlined$thenBy$1;->(Ljava/util/Comparator;Ljava/util/Comparator;)V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordLastModifiedSort; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordLastModifiedSort;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordLastModifiedSort;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordLastModifiedSort$1; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordLastModifiedSort$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordLastModifiedSort$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordLastModifiedSort$Creator; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordLastModifiedSort$Creator;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordLastModifiedSort$PasswordLastModifiedRawComparator; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordLastModifiedSort$PasswordLastModifiedRawComparator;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordLastModifiedSort$PasswordLastModifiedRawComparator;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordLastModifiedSort$special$$inlined$thenBy$1; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordLastModifiedSort$special$$inlined$thenBy$1;->(Ljava/util/Comparator;Ljava/util/Comparator;)V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordSort; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordSort;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordSort;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordSort$1; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordSort$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordSort$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordSort$Creator; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordSort$Creator;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordStrengthSort; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordStrengthSort;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordStrengthSort;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordStrengthSort$1; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordStrengthSort$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordStrengthSort$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordStrengthSort$Creator; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordStrengthSort$Creator;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordStrengthSort$PasswordStrengthRawComparator; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordStrengthSort$PasswordStrengthRawComparator;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordStrengthSort$PasswordStrengthRawComparator;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordStrengthSort$special$$inlined$thenBy$1; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordStrengthSort$special$$inlined$thenBy$1;->(Ljava/util/Comparator;Ljava/util/Comparator;)V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/PureSort; +Lcom/artemchep/keyguard/feature/home/vault/search/sort/Sort; +Lcom/artemchep/keyguard/feature/keyguard/AppRoute; +HSPLcom/artemchep/keyguard/feature/keyguard/AppRoute;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/AppRoute;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/AppRoute;->Content(Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/keyguard/AppScreenKt; +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt;->AppScreen(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt;->ManualAppScreen$lambda$6$lambda$3(Landroidx/compose/runtime/MutableState;)Lcom/artemchep/keyguard/common/model/VaultState; +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt;->ManualAppScreen$lambda$6$lambda$4(Landroidx/compose/runtime/MutableState;Lcom/artemchep/keyguard/common/model/VaultState;)V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt;->ManualAppScreen$lambda$6$lambda$5(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/UnlockUseCase; +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt;->ManualAppScreen(Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt;->ManualAppScreenOnCreate(Lcom/artemchep/keyguard/common/model/VaultState$Create;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt;->ManualAppScreenOnLoading(Lcom/artemchep/keyguard/common/model/VaultState$Loading;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt;->ManualAppScreenOnMain(Lcom/artemchep/keyguard/common/model/VaultState$Main;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt;->ManualAppScreenOnUnlock(Lcom/artemchep/keyguard/common/model/VaultState$Unlock;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt;->access$ManualAppScreen$lambda$6$lambda$3(Landroidx/compose/runtime/MutableState;)Lcom/artemchep/keyguard/common/model/VaultState; +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt;->access$ManualAppScreen$lambda$6$lambda$4(Landroidx/compose/runtime/MutableState;Lcom/artemchep/keyguard/common/model/VaultState;)V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt;->access$ManualAppScreen$lambda$6$lambda$5(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/UnlockUseCase; +Lcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$1; +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$1;->(Lkotlinx/coroutines/flow/StateFlow;Lkotlin/Lazy;Landroidx/compose/runtime/MutableState;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$1$1; +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$1$1;->(Landroidx/compose/runtime/MutableState;)V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$1$1;->emit(Lcom/artemchep/keyguard/common/model/VaultState;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$2; +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$2;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$2;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$2;->invoke(Lcom/artemchep/keyguard/common/model/VaultState;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$3; +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$3;->(Lkotlin/jvm/functions/Function3;)V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$3;->invoke(Lcom/artemchep/keyguard/common/model/VaultState;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$2; +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$2;->(Lkotlin/jvm/functions/Function3;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$lambda$6$$inlined$rememberInstance$1; +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$lambda$6$$inlined$rememberInstance$1;->()V +Lcom/artemchep/keyguard/feature/keyguard/ComposableSingletons$AppScreenKt; +HSPLcom/artemchep/keyguard/feature/keyguard/ComposableSingletons$AppScreenKt;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/ComposableSingletons$AppScreenKt;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/ComposableSingletons$AppScreenKt;->getLambda-1$common_noneRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/feature/keyguard/ComposableSingletons$AppScreenKt;->getLambda-2$common_noneRelease()Lkotlin/jvm/functions/Function2; +Lcom/artemchep/keyguard/feature/keyguard/ComposableSingletons$AppScreenKt$lambda-1$1; +HSPLcom/artemchep/keyguard/feature/keyguard/ComposableSingletons$AppScreenKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/ComposableSingletons$AppScreenKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/ComposableSingletons$AppScreenKt$lambda-1$1;->invoke(Lcom/artemchep/keyguard/common/model/VaultState;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/ComposableSingletons$AppScreenKt$lambda-1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/ComposableSingletons$AppScreenKt$lambda-2$1; +HSPLcom/artemchep/keyguard/feature/keyguard/ComposableSingletons$AppScreenKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/ComposableSingletons$AppScreenKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/ComposableSingletons$AppScreenKt$lambda-2$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/ComposableSingletons$AppScreenKt$lambda-2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/main/MainRoute; +HSPLcom/artemchep/keyguard/feature/keyguard/main/MainRoute;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/main/MainRoute;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/main/MainRoute;->Content(Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/keyguard/main/MainScreenKt; +HSPLcom/artemchep/keyguard/feature/keyguard/main/MainScreenKt;->MainScreen(Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt;->getLambda-1$common_noneRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt;->getLambda-2$common_noneRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt;->getLambda-3$common_noneRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt;->getLambda-4$common_noneRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt;->getLambda-5$common_noneRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt;->getLambda-7$common_noneRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt;->getLambda-8$common_noneRelease()Lkotlin/jvm/functions/Function3; +Lcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-1$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-1$1;->invoke(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-2$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-2$1;->invoke(Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-3$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-3$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-3$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-3$1;->invoke(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-3$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-4$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-4$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-4$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-4$1;->invoke(Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-4$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-5$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-5$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-5$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-5$1;->invoke(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-5$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-6$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-6$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-6$1;->()V +Lcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-7$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-7$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-7$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-7$1;->invoke(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-7$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-8$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-8$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-8$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-8$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-8$1;->invoke(ZLandroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/keyguard/setup/CreateVaultWithBiometric; +Lcom/artemchep/keyguard/feature/keyguard/setup/CreateVaultWithPassword; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/CreateVaultWithPassword;->(Lcom/artemchep/keyguard/feature/loading/LoadingTask;Lcom/artemchep/keyguard/common/model/VaultState$Create$WithPassword;)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/CreateVaultWithPassword;->(Lcom/artemchep/keyguard/feature/loading/LoadingTask;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/CreateVaultWithPassword;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/CreateVaultWithPassword;->invoke(Ljava/lang/String;)V +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupRoute; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupRoute;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupRoute;->(Lcom/artemchep/keyguard/common/model/VaultState$Create$WithPassword;Lcom/artemchep/keyguard/common/model/VaultState$Create$WithBiometric;)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupRoute;->Content(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupRoute;->hashCode()I +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt;->SetupContent$lambda$7(Landroidx/compose/runtime/State;)Lcom/artemchep/keyguard/feature/auth/common/SwitchFieldModel; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt;->SetupContent$lambda$9(Landroidx/compose/runtime/State;)Lkotlin/jvm/functions/Function0; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt;->SetupContent(Landroidx/compose/foundation/layout/ColumnScope;Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt;->SetupScreen(Lcom/artemchep/keyguard/common/model/VaultState$Create$WithPassword;Lcom/artemchep/keyguard/common/model/VaultState$Create$WithBiometric;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt;->SetupScreen(Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt;->SetupScreenCreateVaultTitle(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt;->SetupScreenSkeleton(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt;->access$SetupContent$lambda$9(Landroidx/compose/runtime/State;)Lkotlin/jvm/functions/Function0; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt;->access$SetupScreenCreateVaultTitle(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt;->keyguardSpan()Landroidx/compose/ui/text/AnnotatedString; +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$1$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$1$1;->(Landroidx/compose/ui/focus/FocusRequester;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$2; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$2;->(Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState;)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$2;->invoke(Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$5; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$5;->(Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState;)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$5;->invoke(Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$5;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$6$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$6$1;->(Landroidx/compose/runtime/State;)V +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$7$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$7$1;->(Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$7$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$7$1;->invoke()V +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$8; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$8;->(Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState;)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$8;->invoke(Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$8;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$9; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$9;->(Landroidx/compose/foundation/layout/ColumnScope;Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState;I)V +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$keyboardOnGo$1$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$keyboardOnGo$1$1;->(Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState;)V +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupScreen$3; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupScreen$3;->(Lcom/artemchep/keyguard/common/model/VaultState$Create$WithPassword;Lcom/artemchep/keyguard/common/model/VaultState$Create$WithBiometric;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupScreen$3;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupScreen$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupScreen$4; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupScreen$4;->(Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState;)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupScreen$4;->invoke(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupScreen$4;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupScreenCreateVaultTitle$2; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupScreenCreateVaultTitle$2;->(Landroidx/compose/foundation/layout/ColumnScope;I)V +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState;->(Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState$SideEffects;Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;Lcom/artemchep/keyguard/feature/auth/common/SwitchFieldModel;Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState$Biometric;ZLkotlin/jvm/functions/Function0;)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState;->getBiometric()Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState$Biometric; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState;->getCrashlytics()Lcom/artemchep/keyguard/feature/auth/common/SwitchFieldModel; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState;->getOnCreateVault()Lkotlin/jvm/functions/Function0; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState;->getPassword()Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState;->getSideEffects()Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState$SideEffects; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState;->isLoading()Z +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState$Biometric; +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState$Companion; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState$Companion;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState$SideEffects; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState$SideEffects;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState$SideEffects;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState$SideEffects;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState$SideEffects;->getShowBiometricPromptFlow()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState$SideEffects$Companion; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState$SideEffects$Companion;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState$SideEffects$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt;->access$biometricStateFlow(Lkotlinx/coroutines/flow/MutableStateFlow;Z)Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt;->biometricStateFlow(Lkotlinx/coroutines/flow/MutableStateFlow;Z)Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt;->setupScreenState(Lcom/artemchep/keyguard/common/model/VaultState$Create$WithPassword;Lcom/artemchep/keyguard/common/model/VaultState$Create$WithBiometric;Landroidx/compose/runtime/Composer;I)Lcom/artemchep/keyguard/common/model/Loadable; +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1;->(Lcom/artemchep/keyguard/common/model/VaultState$Create$WithPassword;Lcom/artemchep/keyguard/common/model/VaultState$Create$WithBiometric;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1;->invoke(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$1;->(Landroidx/compose/runtime/MutableState;Lkotlinx/coroutines/flow/MutableStateFlow;Lcom/artemchep/keyguard/common/util/flow/EventFlow;Lcom/artemchep/keyguard/feature/keyguard/setup/CreateVaultWithBiometric;Lcom/artemchep/keyguard/feature/keyguard/setup/CreateVaultWithPassword;Lcom/artemchep/keyguard/feature/loading/LoadingTask;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$1;->invoke(Lcom/artemchep/keyguard/feature/auth/common/Validated;ZLcom/artemchep/keyguard/feature/keyguard/setup/SetupState$Biometric;ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$1$state$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$1$state$1;->(Ljava/lang/Object;)V +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$1$state$2; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$1$state$2;->(Ljava/lang/Object;)V +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$biometricSink$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$biometricSink$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$biometricSink$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$biometricSink$1;->invoke()Ljava/lang/Boolean; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$biometricSink$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$crashlyticsSink$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$crashlyticsSink$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$crashlyticsSink$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$crashlyticsSink$1;->invoke()Ljava/lang/Boolean; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$crashlyticsSink$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$passwordSink$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$passwordSink$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$passwordSink$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$passwordSink$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$passwordSink$1;->invoke()Ljava/lang/String; +Lcom/artemchep/keyguard/feature/keyguard/unlock/BiometricStatePrecomputed; +Lcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt;->getLambda-1$common_noneRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt;->getLambda-2$common_noneRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt;->getLambda-3$common_noneRelease()Lkotlin/jvm/functions/Function3; +Lcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt$lambda-1$1; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt$lambda-1$1;->invoke(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt$lambda-1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt$lambda-2$1; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt$lambda-2$1;->()V +Lcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt$lambda-3$1; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt$lambda-3$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt$lambda-3$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt$lambda-3$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt$lambda-3$1;->invoke(ZLandroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt$lambda-4$1; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt$lambda-4$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt$lambda-4$1;->()V +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockRoute; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockRoute;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockRoute;->(Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithPassword;Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithBiometric;Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockRoute;->Content(Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt;->UnlockScreen$lambda$3(Landroidx/compose/runtime/State;)Z +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt;->UnlockScreen(Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithPassword;Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithBiometric;Ljava/lang/String;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt;->UnlockScreen(Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt;->UnlockScreenSkeleton(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt;->UnlockScreenTheVaultIsLockedTitle(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt;->access$UnlockScreen$lambda$3(Landroidx/compose/runtime/State;)Z +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt;->access$UnlockScreenTheVaultIsLockedTitle(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt;->getUnlockScreenActionPadding()F +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt;->getUnlockScreenTitlePadding()F +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$3; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$3;->(Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithPassword;Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithBiometric;Ljava/lang/String;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$3;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$4; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$4;->(Lcom/artemchep/keyguard/ui/focus/FocusRequester2;Landroidx/compose/runtime/State;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$4;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$4;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$5; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$5;->(Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState;)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$5;->invoke(Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$5;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6;->(Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState;Lcom/artemchep/keyguard/ui/focus/FocusRequester2;)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6;->access$invoke$lambda$6$lambda$3(Landroidx/compose/runtime/State;)Lkotlin/jvm/functions/Function0; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6;->invoke$lambda$6$lambda$3(Landroidx/compose/runtime/State;)Lkotlin/jvm/functions/Function0; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6;->invoke(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6$2$keyboardOnGo$1$1; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6$2$keyboardOnGo$1$1;->(Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState;)V +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6$3$1$1; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6$3$1$1;->(Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6$3$1$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6$3$1$1;->invoke()V +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6$3$2; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6$3$2;->(Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState;)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6$3$2;->invoke(Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6$3$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6$3$3; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6$3$3;->(Landroidx/compose/runtime/State;)V +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState;->(Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState$SideEffects;Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState$Biometric;Ljava/lang/String;ZLkotlinx/collections/immutable/ImmutableList;Lkotlin/jvm/functions/Function0;)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState;->getActions()Lkotlinx/collections/immutable/ImmutableList; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState;->getBiometric()Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState$Biometric; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState;->getLockReason()Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState;->getPassword()Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState;->getSideEffects()Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState$SideEffects; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState;->getUnlockVaultByMasterPassword()Lkotlin/jvm/functions/Function0; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState;->isLoading()Z +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState$Biometric; +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState$Companion; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState$Companion;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState$SideEffects; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState$SideEffects;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState$SideEffects;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState$SideEffects;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState$SideEffects;->getShowBiometricPromptFlow()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState$SideEffects$Companion; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState$SideEffects$Companion;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState$SideEffects$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt;->access$getDEFAULT_PASSWORD$p()Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt;->unlockScreenState(Lcom/artemchep/keyguard/common/usecase/ClearData;Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithPassword;Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithBiometric;Ljava/lang/String;Landroidx/compose/runtime/Composer;II)Lcom/artemchep/keyguard/common/model/Loadable; +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1;->(Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithPassword;Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithBiometric;Lcom/artemchep/keyguard/common/usecase/ClearData;Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1;->invoke(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$1; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$1;->(Landroidx/compose/runtime/MutableState;Lcom/artemchep/keyguard/feature/keyguard/unlock/BiometricStatePrecomputed;Lkotlinx/coroutines/flow/SharedFlow;Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockVaultWithPassword;Ljava/lang/String;Lkotlinx/collections/immutable/PersistentList;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$1;->invoke(Lcom/artemchep/keyguard/feature/auth/common/Validated;ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$actions$1; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$actions$1;->(Lcom/artemchep/keyguard/common/usecase/ClearData;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;)V +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$biometricPromptFlow$1; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$biometricPromptFlow$1;->(Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockVaultWithBiometric;Lcom/artemchep/keyguard/feature/loading/LoadingTask;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$biometricPromptFlow$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$biometricPromptFlow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$biometricPromptFlow$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$biometricPromptFlow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$passwordSink$1; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$passwordSink$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$passwordSink$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$passwordSink$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$passwordSink$1;->invoke()Ljava/lang/String; +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockVaultWithBiometric; +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockVaultWithPassword; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockVaultWithPassword;->(Lcom/artemchep/keyguard/feature/loading/LoadingTask;Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithPassword;)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockVaultWithPassword;->(Lcom/artemchep/keyguard/feature/loading/LoadingTask;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockVaultWithPassword;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockVaultWithPassword;->invoke(Ljava/lang/String;)V +Lcom/artemchep/keyguard/feature/loading/LoadingScreenKt; +HSPLcom/artemchep/keyguard/feature/loading/LoadingScreenKt;->LoadingScreen(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/loading/LoadingScreenKt;->LoadingScreenContent(Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/loading/LoadingTask; +HSPLcom/artemchep/keyguard/feature/loading/LoadingTask;->()V +HSPLcom/artemchep/keyguard/feature/loading/LoadingTask;->(Lcom/artemchep/keyguard/feature/navigation/state/TranslatorScope;Lkotlinx/coroutines/CoroutineScope;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/feature/loading/LoadingTask;->(Lcom/artemchep/keyguard/feature/navigation/state/TranslatorScope;Lkotlinx/coroutines/CoroutineScope;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/loading/LoadingTask;->access$isWorkingSink$p(Lcom/artemchep/keyguard/feature/loading/LoadingTask;)Lkotlinx/coroutines/flow/MutableStateFlow; +HSPLcom/artemchep/keyguard/feature/loading/LoadingTask;->execute(Lkotlin/jvm/functions/Function1;Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/feature/loading/LoadingTask;->getErrorFlow()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/feature/loading/LoadingTask;->isExecutingFlow()Lkotlinx/coroutines/flow/MutableStateFlow; +Lcom/artemchep/keyguard/feature/loading/LoadingTask$1; +HSPLcom/artemchep/keyguard/feature/loading/LoadingTask$1;->(Lcom/artemchep/keyguard/feature/navigation/state/TranslatorScope;)V +Lcom/artemchep/keyguard/feature/loading/LoadingTask$execute$1; +HSPLcom/artemchep/keyguard/feature/loading/LoadingTask$execute$1;->(Lcom/artemchep/keyguard/feature/loading/LoadingTask;Lkotlin/jvm/functions/Function1;Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/loading/LoadingTask$execute$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/loading/LoadingTask$execute$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/loading/LoadingTask$special$$inlined$map$1; +HSPLcom/artemchep/keyguard/feature/loading/LoadingTask$special$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/loading/LoadingTask$special$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/loading/LoadingTask$special$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/feature/loading/LoadingTask$special$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +Lcom/artemchep/keyguard/feature/localization/TextHolder; +Lcom/artemchep/keyguard/feature/localization/TextHolder$Res; +HSPLcom/artemchep/keyguard/feature/localization/TextHolder$Res;->()V +HSPLcom/artemchep/keyguard/feature/localization/TextHolder$Res;->(Ldev/icerock/moko/resources/StringResource;)V +HSPLcom/artemchep/keyguard/feature/localization/TextHolder$Res;->getData()Ldev/icerock/moko/resources/StringResource; +Lcom/artemchep/keyguard/feature/localization/TextHolder$Value; +HSPLcom/artemchep/keyguard/feature/localization/TextHolder$Value;->()V +HSPLcom/artemchep/keyguard/feature/localization/TextHolder$Value;->(Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/feature/localization/TextHolder$Value;->getData()Ljava/lang/String; +Lcom/artemchep/keyguard/feature/localization/TextHolderKt; +HSPLcom/artemchep/keyguard/feature/localization/TextHolderKt;->textResource(Lcom/artemchep/keyguard/feature/localization/TextHolder;Landroidx/compose/runtime/Composer;I)Ljava/lang/String; +Lcom/artemchep/keyguard/feature/localization/TextResourceKt; +HSPLcom/artemchep/keyguard/feature/localization/TextResourceKt;->textResource(Ldev/icerock/moko/resources/StringResource;Lcom/artemchep/keyguard/platform/LeContext;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/localization/TextResourceKt;->textResource(Ldev/icerock/moko/resources/StringResource;Lcom/artemchep/keyguard/platform/LeContext;[Ljava/lang/Object;)Ljava/lang/String; +Lcom/artemchep/keyguard/feature/navigation/BackHandler; +HSPLcom/artemchep/keyguard/feature/navigation/BackHandler;->()V +HSPLcom/artemchep/keyguard/feature/navigation/BackHandler;->(Lkotlinx/coroutines/flow/MutableStateFlow;Lkotlinx/coroutines/flow/MutableStateFlow;)V +HSPLcom/artemchep/keyguard/feature/navigation/BackHandler;->(Lkotlinx/coroutines/flow/MutableStateFlow;Lkotlinx/coroutines/flow/MutableStateFlow;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/navigation/BackHandler;->getEek()Lkotlinx/coroutines/flow/MutableStateFlow; +HSPLcom/artemchep/keyguard/feature/navigation/BackHandler;->register(Lcom/artemchep/keyguard/feature/navigation/NavigationController;Ljava/util/List;)Lkotlin/jvm/functions/Function0; +Lcom/artemchep/keyguard/feature/navigation/BackHandler$Entry; +HSPLcom/artemchep/keyguard/feature/navigation/BackHandler$Entry;->()V +HSPLcom/artemchep/keyguard/feature/navigation/BackHandler$Entry;->(Lcom/artemchep/keyguard/feature/navigation/NavigationController;Ljava/util/List;)V +PLcom/artemchep/keyguard/feature/navigation/BackHandler$Entry;->getBackStack()Ljava/util/List; +HSPLcom/artemchep/keyguard/feature/navigation/BackHandler$Entry;->getController()Lcom/artemchep/keyguard/feature/navigation/NavigationController; +Lcom/artemchep/keyguard/feature/navigation/BackHandler$register$1; +HSPLcom/artemchep/keyguard/feature/navigation/BackHandler$register$1;->(Lcom/artemchep/keyguard/feature/navigation/BackHandler;Ljava/lang/String;)V +Lcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt; +HSPLcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt;->()V +HSPLcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt;->()V +HSPLcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt;->getLambda-1$common_noneRelease()Lkotlin/jvm/functions/Function4; +HSPLcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt;->getLambda-2$common_noneRelease()Lkotlin/jvm/functions/Function3; +Lcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt$lambda-1$1; +HSPLcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt$lambda-1$1;->invoke(Landroidx/compose/animation/AnimatedContentScope;Lcom/artemchep/keyguard/feature/navigation/Foo;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt$lambda-1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt$lambda-1$1$1; +HSPLcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt$lambda-1$1$1;->(Lcom/artemchep/keyguard/feature/navigation/NavigationEntry;)V +HSPLcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt$lambda-1$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt$lambda-1$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt$lambda-2$1; +HSPLcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt$lambda-2$1;->invoke(Lcom/artemchep/keyguard/feature/navigation/Foo;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt$lambda-2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/DialogRoute; +Lcom/artemchep/keyguard/feature/navigation/Foo; +HSPLcom/artemchep/keyguard/feature/navigation/Foo;->()V +HSPLcom/artemchep/keyguard/feature/navigation/Foo;->(Lkotlinx/collections/immutable/PersistentList;Lkotlinx/collections/immutable/PersistentList;Lcom/artemchep/keyguard/feature/navigation/NavigationEntry;)V +HSPLcom/artemchep/keyguard/feature/navigation/Foo;->access$getEmpty$cp()Lcom/artemchep/keyguard/feature/navigation/Foo; +HSPLcom/artemchep/keyguard/feature/navigation/Foo;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/feature/navigation/Foo;->getEntry()Lcom/artemchep/keyguard/feature/navigation/NavigationEntry; +HSPLcom/artemchep/keyguard/feature/navigation/Foo;->getLogicalStack()Lkotlinx/collections/immutable/PersistentList; +HSPLcom/artemchep/keyguard/feature/navigation/Foo;->getVisualStack()Lkotlinx/collections/immutable/PersistentList; +HSPLcom/artemchep/keyguard/feature/navigation/Foo;->hashCode()I +Lcom/artemchep/keyguard/feature/navigation/Foo$Companion; +HSPLcom/artemchep/keyguard/feature/navigation/Foo$Companion;->()V +HSPLcom/artemchep/keyguard/feature/navigation/Foo$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/navigation/Foo$Companion;->getEmpty()Lcom/artemchep/keyguard/feature/navigation/Foo; +Lcom/artemchep/keyguard/feature/navigation/N; +HSPLcom/artemchep/keyguard/feature/navigation/N;->()V +HSPLcom/artemchep/keyguard/feature/navigation/N;->()V +HSPLcom/artemchep/keyguard/feature/navigation/N;->tag(Ljava/lang/String;)Ljava/lang/String; +Lcom/artemchep/keyguard/feature/navigation/NavigationAnimation; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimation;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimation;->()V +Lcom/artemchep/keyguard/feature/navigation/NavigationAnimationKt; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimationKt;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimationKt;->transform(Lcom/artemchep/keyguard/feature/navigation/NavigationAnimation;FLcom/artemchep/keyguard/common/model/NavAnimation;Lcom/artemchep/keyguard/feature/navigation/NavigationAnimationType;)Landroidx/compose/animation/ContentTransform; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimationKt;->transformGoBack(Lcom/artemchep/keyguard/feature/navigation/NavigationAnimation;F)Landroidx/compose/animation/ContentTransform; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimationKt;->transformSwitchContext(Lcom/artemchep/keyguard/feature/navigation/NavigationAnimation;F)Landroidx/compose/animation/ContentTransform; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimationKt;->twaat(I)Landroidx/compose/animation/core/TweenSpec; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimationKt;->twuut(I)Landroidx/compose/animation/core/TweenSpec; +Lcom/artemchep/keyguard/feature/navigation/NavigationAnimationKt$WhenMappings; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimationKt$WhenMappings;->()V +Lcom/artemchep/keyguard/feature/navigation/NavigationAnimationKt$transformGoBack$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimationKt$transformGoBack$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimationKt$transformGoBack$1;->()V +Lcom/artemchep/keyguard/feature/navigation/NavigationAnimationKt$transformGoBack$2; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimationKt$transformGoBack$2;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimationKt$transformGoBack$2;->()V +Lcom/artemchep/keyguard/feature/navigation/NavigationAnimationType; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimationType;->$values()[Lcom/artemchep/keyguard/feature/navigation/NavigationAnimationType; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimationType;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimationType;->(Ljava/lang/String;I)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimationType;->values()[Lcom/artemchep/keyguard/feature/navigation/NavigationAnimationType; +Lcom/artemchep/keyguard/feature/navigation/NavigationController; +Lcom/artemchep/keyguard/feature/navigation/NavigationControllerKt; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt;->NavigationController(Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt;->getLocalNavigationController()Landroidx/compose/runtime/ProvidableCompositionLocal; +Lcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$LocalNavigationController$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$LocalNavigationController$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$LocalNavigationController$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$LocalNavigationController$1;->invoke()Lcom/artemchep/keyguard/feature/navigation/NavigationController; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$LocalNavigationController$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$LocalNavigationController$1$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$LocalNavigationController$1$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$LocalNavigationController$1$1;->canPop()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$NavigationController$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$NavigationController$1;->(Lkotlin/jvm/functions/Function3;Lcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$NavigationController$controller$1$handler$1;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$NavigationController$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$NavigationController$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$NavigationController$controller$1$combinedCanPop$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$NavigationController$controller$1$combinedCanPop$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$NavigationController$controller$1$combinedCanPop$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$NavigationController$controller$1$combinedCanPop$1;->invoke(ZZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$NavigationController$controller$1$combinedCanPop$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$NavigationController$controller$1$handler$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$NavigationController$controller$1$handler$1;->(Lkotlinx/coroutines/CoroutineScope;Lcom/artemchep/keyguard/feature/navigation/NavigationController;Lkotlin/jvm/functions/Function1;Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$NavigationController$controller$1$handler$1;->canPop()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$NavigationController$controller$1$handler$1;->getScope()Lkotlinx/coroutines/CoroutineScope; +Lcom/artemchep/keyguard/feature/navigation/NavigationEntry; +Lcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl;->(Ljava/lang/String;Lkotlinx/coroutines/CoroutineScope;Ljava/lang/String;Lcom/artemchep/keyguard/feature/navigation/Route;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl;->destroy()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl;->getId()Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl;->getRoute()Lcom/artemchep/keyguard/feature/navigation/Route; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl;->getScope()Lkotlinx/coroutines/CoroutineScope; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl;->getType()Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl;->getVm()Lcom/artemchep/keyguard/feature/navigation/state/FlowHolderViewModel; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl;->hashCode()I +Lcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl$1;->(Lcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationEntryKt; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryKt;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryKt;->getLocalNavigationEntry()Landroidx/compose/runtime/ProvidableCompositionLocal; +Lcom/artemchep/keyguard/feature/navigation/NavigationEntryKt$LocalNavigationEntry$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryKt$LocalNavigationEntry$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryKt$LocalNavigationEntry$1;->()V +Lcom/artemchep/keyguard/feature/navigation/NavigationEntryProviderKt; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryProviderKt;->NavigationNode(Ljava/lang/String;Lcom/artemchep/keyguard/feature/navigation/Route;Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/navigation/NavigationEntryProviderKt$NavigationNode$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryProviderKt$NavigationNode$1;->(Lcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryProviderKt$NavigationNode$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryProviderKt$NavigationNode$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationEntryProviderKt$NavigationNode$1$invoke$$inlined$onDispose$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryProviderKt$NavigationNode$1$invoke$$inlined$onDispose$1;->(Lcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryProviderKt$NavigationNode$1$invoke$$inlined$onDispose$1;->dispose()V +Lcom/artemchep/keyguard/feature/navigation/NavigationKt; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationKt;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationKt;->getLocalRoute()Landroidx/compose/runtime/ProvidableCompositionLocal; +Lcom/artemchep/keyguard/feature/navigation/NavigationKt$LocalBackHost$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationKt$LocalBackHost$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationKt$LocalBackHost$1;->()V +Lcom/artemchep/keyguard/feature/navigation/NavigationKt$LocalRoute$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationKt$LocalRoute$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationKt$LocalRoute$1;->()V +Lcom/artemchep/keyguard/feature/navigation/NavigationNodeCurrentStackKt; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeCurrentStackKt;->access$navigationNodeStack$lambda$0(Landroidx/compose/runtime/State;)Lkotlinx/collections/immutable/PersistentList; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeCurrentStackKt;->navigationNodeStack$lambda$0(Landroidx/compose/runtime/State;)Lkotlinx/collections/immutable/PersistentList; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeCurrentStackKt;->navigationNodeStack$lambda$2(Landroidx/compose/runtime/State;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeCurrentStackKt;->navigationNodeStack(Landroidx/compose/runtime/Composer;I)Ljava/lang/String; +Lcom/artemchep/keyguard/feature/navigation/NavigationNodeCurrentStackKt$navigationNodeStack$value$2$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeCurrentStackKt$navigationNodeStack$value$2$1;->(Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeCurrentStackKt$navigationNodeStack$value$2$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeCurrentStackKt$navigationNodeStack$value$2$1;->invoke()Ljava/lang/String; +Lcom/artemchep/keyguard/feature/navigation/NavigationNodeCurrentStackKt$navigationNodeStack$value$2$1$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeCurrentStackKt$navigationNodeStack$value$2$1$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeCurrentStackKt$navigationNodeStack$value$2$1$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeCurrentStackKt$navigationNodeStack$value$2$1$1;->invoke(Lcom/artemchep/keyguard/feature/navigation/NavigationEntry;)Ljava/lang/CharSequence; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeCurrentStackKt$navigationNodeStack$value$2$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationNodeKt; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt;->NavigationNode$lambda$0(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetNavAnimation; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt;->NavigationNode$lambda$12$lambda$9(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt;->NavigationNode(Lcom/artemchep/keyguard/feature/navigation/NavigationEntry;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt;->NavigationNode(Lkotlinx/collections/immutable/PersistentList;ILandroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt;->NavigationRoute(Lcom/artemchep/keyguard/feature/navigation/NavigationEntry;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt;->access$NavigationNode$lambda$0(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetNavAnimation; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt;->access$NavigationNode$lambda$12$lambda$9(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt;->access$NavigationRoute(Lcom/artemchep/keyguard/feature/navigation/NavigationEntry;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt;->getLocalNavigationNodeLogicalStack()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt;->getLocalNavigationNodeVisualStack()Landroidx/compose/runtime/ProvidableCompositionLocal; +Lcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$LocalNavigationNodeLogicalStack$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$LocalNavigationNodeLogicalStack$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$LocalNavigationNodeLogicalStack$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$LocalNavigationNodeLogicalStack$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$LocalNavigationNodeLogicalStack$1;->invoke()Lkotlinx/collections/immutable/PersistentList; +Lcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$LocalNavigationNodeVisualStack$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$LocalNavigationNodeVisualStack$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$LocalNavigationNodeVisualStack$1;->()V +Lcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationNode$$inlined$rememberInstance$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationNode$$inlined$rememberInstance$1;->()V +Lcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationNode$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationNode$1;->(Lcom/artemchep/keyguard/feature/navigation/NavigationEntry;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationNode$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationNode$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationNode$2; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationNode$2;->(Lcom/artemchep/keyguard/feature/navigation/NavigationEntry;I)V +Lcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationNode$3$2; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationNode$3$2;->(Lkotlin/Lazy;Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationNode$3$2;->invoke(Landroidx/compose/animation/AnimatedContentTransitionScope;)Landroidx/compose/animation/ContentTransform; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationNode$3$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationNode$4; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationNode$4;->(Lkotlinx/collections/immutable/PersistentList;III)V +Lcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationRoute$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationRoute$1;->(Lcom/artemchep/keyguard/feature/navigation/NavigationEntry;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationRoute$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationRoute$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2;->NavigationRouterBackHandler(Landroidx/activity/OnBackPressedDispatcher;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1;->(Landroidx/activity/OnBackPressedDispatcher;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1;->invoke(Lcom/artemchep/keyguard/feature/navigation/BackHandler;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$1;->(Landroidx/activity/OnBackPressedDispatcher;Landroidx/activity/OnBackPressedCallback;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$1$invoke$$inlined$onDispose$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$1$invoke$$inlined$onDispose$1;->(Landroidx/activity/OnBackPressedCallback;)V +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2;->(Lcom/artemchep/keyguard/feature/navigation/BackHandler;Landroidx/activity/OnBackPressedCallback;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$3; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$3;->(Landroidx/activity/OnBackPressedCallback;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$3;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$3;->invoke(ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$invokeSuspend$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$invokeSuspend$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$invokeSuspend$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$invokeSuspend$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$invokeSuspend$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$invokeSuspend$$inlined$map$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$invokeSuspend$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$invokeSuspend$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$invokeSuspend$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$invokeSuspend$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$invokeSuspend$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$invokeSuspend$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$invokeSuspend$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$invokeSuspend$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$callback$1$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$callback$1$1;->(Lcom/artemchep/keyguard/feature/navigation/BackHandler;)V +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandlerKt; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandlerKt;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandlerKt;->NavigationRouterBackHandler(Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandlerKt;->getLocalNavigationBackHandler()Landroidx/compose/runtime/ProvidableCompositionLocal; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandlerKt$LocalNavigationBackHandler$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandlerKt$LocalNavigationBackHandler$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandlerKt$LocalNavigationBackHandler$1;->()V +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandlerKt$NavigationRouterBackHandler$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandlerKt$NavigationRouterBackHandler$1;->(Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandlerKt$NavigationRouterBackHandler$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandlerKt$NavigationRouterBackHandler$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackIconKt; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackIconKt;->NavigationIcon(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackIconKt$NavigationIcon$2; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackIconKt$NavigationIcon$2;->(Landroidx/compose/ui/Modifier;II)V +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterKt; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt;->NavigationRouter(Ljava/lang/String;Lcom/artemchep/keyguard/feature/navigation/Route;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt;->getLocalNavigationRouter()Landroidx/compose/runtime/ProvidableCompositionLocal; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$LocalNavigationRouter$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$LocalNavigationRouter$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$LocalNavigationRouter$1;->()V +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$1;->(Lcom/artemchep/keyguard/feature/navigation/NavigationStack;Lkotlinx/coroutines/CoroutineScope;)V +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$2; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$2;->(Lcom/artemchep/keyguard/feature/navigation/NavigationStack;Lkotlin/jvm/functions/Function3;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$2;->invoke(Lcom/artemchep/keyguard/feature/navigation/NavigationController;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$2$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$2$1;->(Lcom/artemchep/keyguard/feature/navigation/BackHandler;Lcom/artemchep/keyguard/feature/navigation/NavigationController;Lkotlinx/collections/immutable/PersistentList;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$2$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$2$1$invoke$$inlined$onDispose$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$2$1$invoke$$inlined$onDispose$1;->(Lkotlin/jvm/functions/Function0;)V +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$2$2; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$2$2;->(Lkotlin/jvm/functions/Function3;Lkotlinx/collections/immutable/PersistentList;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$2$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$2$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$3; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$3;->(Ljava/lang/String;Lcom/artemchep/keyguard/feature/navigation/Route;Lkotlin/jvm/functions/Function3;I)V +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$canPop$1$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$canPop$1$1;->(Lcom/artemchep/keyguard/feature/navigation/NavigationStack;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$canPop$1$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$canPop$1$1;->invoke()Lkotlinx/collections/immutable/PersistentList; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$lambda$2$$inlined$map$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$lambda$2$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$lambda$2$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$lambda$2$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$lambda$2$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$lambda$2$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$lambda$2$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$lambda$2$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$lambda$2$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$lambda$2$$inlined$map$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationStack; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationStack;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationStack;->(Lcom/artemchep/keyguard/feature/navigation/NavigationEntry;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationStack;->getValue()Lkotlinx/collections/immutable/PersistentList; +Lcom/artemchep/keyguard/feature/navigation/Route; +Lcom/artemchep/keyguard/feature/navigation/state/CopyKt; +HSPLcom/artemchep/keyguard/feature/navigation/state/CopyKt;->copy(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lcom/artemchep/keyguard/common/service/clipboard/ClipboardService;)Lcom/artemchep/keyguard/common/usecase/CopyText; +Lcom/artemchep/keyguard/feature/navigation/state/CopyKt$copy$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/CopyKt$copy$1;->(Ljava/lang/Object;)V +Lcom/artemchep/keyguard/feature/navigation/state/DiskHandle; +Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl;->()V +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl;->(Lkotlinx/coroutines/CoroutineScope;Lcom/artemchep/keyguard/common/usecase/PutScreenState;Ljava/lang/String;Ljava/util/Map;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl;->(Lkotlinx/coroutines/CoroutineScope;Lcom/artemchep/keyguard/common/usecase/PutScreenState;Ljava/lang/String;Ljava/util/Map;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl;->access$tryWrite(Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl;Ljava/util/Map;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl;->getRestoredState()Ljava/util/Map; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl;->link(Ljava/lang/String;Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl;->tryWrite(Ljava/util/Map;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$2; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$2;->(Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$2;->invoke(Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$Companion; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$Companion;->()V +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$Companion;->read(Lkotlinx/coroutines/CoroutineScope;Lcom/artemchep/keyguard/common/usecase/GetScreenState;Lcom/artemchep/keyguard/common/usecase/PutScreenState;Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$Companion$read$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$Companion$read$1;->(Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$Companion;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$Companion$read$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1;->(Ljava/util/List;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$1;->(Ljava/util/List;[Ljava/lang/Object;Ljava/util/concurrent/atomic/AtomicInteger;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$1;->invoke(Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$1$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$1$1;->(Lkotlinx/coroutines/flow/Flow;[Ljava/lang/Object;ILjava/util/concurrent/atomic/AtomicInteger;Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$1$1$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$1$1$1;->([Ljava/lang/Object;ILkotlin/jvm/internal/Ref$BooleanRef;Ljava/util/concurrent/atomic/AtomicInteger;Lkotlinx/coroutines/channels/ProducerScope;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$1$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$2; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$2;->(Ljava/util/concurrent/atomic/AtomicInteger;Lkotlinx/coroutines/flow/FlowCollector;[Ljava/lang/Object;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$2;->emit(Lkotlin/Unit;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$lambda$2$lambda$1$$inlined$map$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$lambda$2$lambda$1$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$lambda$2$lambda$1$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$lambda$2$lambda$1$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$lambda$2$lambda$1$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$lambda$2$lambda$1$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$lambda$2$lambda$1$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$lambda$2$lambda$1$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$lambda$2$lambda$1$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$special$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$special$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$special$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$special$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$special$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/FlowHolderViewModel; +HSPLcom/artemchep/keyguard/feature/navigation/state/FlowHolderViewModel;->()V +HSPLcom/artemchep/keyguard/feature/navigation/state/FlowHolderViewModel;->(Ljava/lang/String;Lkotlinx/coroutines/CoroutineScope;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/FlowHolderViewModel;->clear(Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/FlowHolderViewModel;->destroy()V +HSPLcom/artemchep/keyguard/feature/navigation/state/FlowHolderViewModel;->getOrPut(Ljava/lang/String;Lcom/artemchep/keyguard/feature/navigation/NavigationController;Lcom/artemchep/keyguard/common/usecase/ShowMessage;Lcom/artemchep/keyguard/common/usecase/GetScreenState;Lcom/artemchep/keyguard/common/usecase/PutScreenState;Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope;Lkotlinx/serialization/json/Json;Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/platform/LeContext;Landroidx/compose/runtime/State;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/FlowHolderViewModel$Entry; +HSPLcom/artemchep/keyguard/feature/navigation/state/FlowHolderViewModel$Entry;->(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lkotlinx/coroutines/Job;Ljava/lang/Object;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/FlowHolderViewModel$Entry;->getJob()Lkotlinx/coroutines/Job; +HSPLcom/artemchep/keyguard/feature/navigation/state/FlowHolderViewModel$Entry;->getValue()Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/PersistedStorage; +Lcom/artemchep/keyguard/feature/navigation/state/PersistedStorage$InDisk; +HSPLcom/artemchep/keyguard/feature/navigation/state/PersistedStorage$InDisk;->()V +HSPLcom/artemchep/keyguard/feature/navigation/state/PersistedStorage$InDisk;->(Lcom/artemchep/keyguard/feature/navigation/state/DiskHandle;)V +PLcom/artemchep/keyguard/feature/navigation/state/PersistedStorage$InDisk;->getDisk()Lcom/artemchep/keyguard/feature/navigation/state/DiskHandle; +Lcom/artemchep/keyguard/feature/navigation/state/PersistedStorage$InMemory; +HSPLcom/artemchep/keyguard/feature/navigation/state/PersistedStorage$InMemory;->()V +HSPLcom/artemchep/keyguard/feature/navigation/state/PersistedStorage$InMemory;->()V +Lcom/artemchep/keyguard/feature/navigation/state/ProduceScreenStateKt; +HSPLcom/artemchep/keyguard/feature/navigation/state/ProduceScreenStateKt;->produceScreenState$lambda$0(Landroidx/compose/runtime/State;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/ProduceScreenStateKt;->produceScreenState(Ljava/lang/String;[Ljava/lang/Object;[Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/ProduceScreenStateKt;->rememberScreenState(Ljava/lang/String;[Ljava/lang/Object;[Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)Landroidx/compose/runtime/State; +Lcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt;->()V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt;->access$rememberScreenStateFlow$lambda$0(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/ShowMessage; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt;->access$rememberScreenStateFlow$lambda$1(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetScreenState; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt;->access$rememberScreenStateFlow$lambda$2(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetDebugScreenDelay; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt;->access$rememberScreenStateFlow$lambda$3(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/PutScreenState; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt;->access$rememberScreenStateFlow$lambda$4(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt;->access$rememberScreenStateFlow$lambda$5(Lkotlin/Lazy;)Lkotlinx/serialization/json/Json; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt;->rememberScreenStateFlow$lambda$0(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/ShowMessage; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt;->rememberScreenStateFlow$lambda$1(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetScreenState; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt;->rememberScreenStateFlow$lambda$2(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetDebugScreenDelay; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt;->rememberScreenStateFlow$lambda$3(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/PutScreenState; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt;->rememberScreenStateFlow$lambda$4(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt;->rememberScreenStateFlow$lambda$5(Lkotlin/Lazy;)Lkotlinx/serialization/json/Json; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt;->rememberScreenStateFlow(Ljava/lang/String;[Ljava/lang/Object;[Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)Lkotlinx/coroutines/flow/StateFlow; +Lcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$$inlined$rememberInstance$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$$inlined$rememberInstance$1;->()V +Lcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$$inlined$rememberInstance$2; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$$inlined$rememberInstance$2;->()V +Lcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$$inlined$rememberInstance$3; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$$inlined$rememberInstance$3;->()V +Lcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$$inlined$rememberInstance$4; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$$inlined$rememberInstance$4;->()V +Lcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$$inlined$rememberInstance$5; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$$inlined$rememberInstance$5;->()V +Lcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$$inlined$rememberInstance$6; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$$inlined$rememberInstance$6;->()V +Lcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1;->(Ljava/lang/Object;Lkotlin/Lazy;Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1;->invoke(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;)Lkotlinx/coroutines/flow/StateFlow; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$invoke$$inlined$map$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$invoke$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$invoke$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$invoke$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$invoke$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$invoke$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$invoke$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$invoke$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$invoke$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$structureFlow$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$structureFlow$1;->(Lkotlin/Lazy;Lkotlin/jvm/functions/Function2;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$structureFlow$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$structureFlow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$structureFlow$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$structureFlow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$structureFlow$1$structure$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$structureFlow$1$structure$1;->(Lkotlin/jvm/functions/Function2;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$structureFlow$1$structure$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$structureFlow$1$structure$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$structureFlow$1$structure$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$structureFlow$1$structure$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope; +Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->()V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->(Ljava/lang/String;Landroid/os/Bundle;Lcom/artemchep/keyguard/common/usecase/ShowMessage;Lcom/artemchep/keyguard/common/usecase/GetScreenState;Lcom/artemchep/keyguard/common/usecase/PutScreenState;Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope;Lcom/artemchep/keyguard/feature/navigation/NavigationController;Lkotlinx/serialization/json/Json;Lkotlinx/coroutines/CoroutineScope;Ljava/lang/String;Landroidx/compose/runtime/State;Ljava/lang/String;Lcom/artemchep/keyguard/platform/LeContext;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->access$getJson$p(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;)Lkotlinx/serialization/json/Json; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->getAppScope()Lkotlinx/coroutines/CoroutineScope; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->getBundleKey(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->getContext()Lcom/artemchep/keyguard/platform/LeContext; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->getCoroutineContext()Lkotlin/coroutines/CoroutineContext; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->getScreenName()Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->getScreenScope()Lkotlinx/coroutines/CoroutineScope; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->interceptBackPress(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->loadDiskHandle(Ljava/lang/String;ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->mutableComposeState(Lkotlinx/coroutines/flow/MutableStateFlow;)Landroidx/compose/runtime/MutableState; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->mutablePersistedFlow(Ljava/lang/String;Lcom/artemchep/keyguard/feature/navigation/state/PersistedStorage;Lkotlin/jvm/functions/Function0;)Lkotlinx/coroutines/flow/MutableStateFlow; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->mutablePersistedFlow(Ljava/lang/String;Lcom/artemchep/keyguard/feature/navigation/state/PersistedStorage;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function0;)Lkotlinx/coroutines/flow/MutableStateFlow; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->screenExecutor()Lcom/artemchep/keyguard/feature/loading/LoadingTask; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->translate(Ldev/icerock/moko/resources/StringResource;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->translate(Ldev/icerock/moko/resources/StringResource;[Ljava/lang/Object;)Ljava/lang/String; +Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$Entry; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$Entry;->(Lkotlinx/coroutines/flow/MutableStateFlow;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$Entry$ComposeState;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$Entry;->getSink()Lkotlinx/coroutines/flow/MutableStateFlow; +Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$Entry$ComposeState; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$Entry$ComposeState;->()V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$Entry$ComposeState;->(Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/flow/MutableStateFlow;)V +Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$Entry$ComposeState$collectScope$2; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$Entry$ComposeState$collectScope$2;->(Lkotlinx/coroutines/CoroutineScope;)V +Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$Entry$ComposeState$mutableState$2; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$Entry$ComposeState$mutableState$2;->(Lkotlinx/coroutines/flow/MutableStateFlow;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$Entry$ComposeState;)V +Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutableComposeState$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutableComposeState$1;->(Landroidx/compose/runtime/MutableState;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutableComposeState$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutableComposeState$2; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutableComposeState$2;->(Lkotlinx/coroutines/flow/MutableStateFlow;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutableComposeState$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutableComposeState$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutableComposeState$2;->invoke(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutableComposeState$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$1;->invoke(Lkotlinx/serialization/json/Json;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$2; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$2;->()V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$2;->()V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$2;->invoke(Lkotlinx/serialization/json/Json;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$lambda$4$lambda$3$$inlined$map$1; +PLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$lambda$4$lambda$3$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$lambda$4$lambda$3$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$lambda$4$lambda$3$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$lambda$4$lambda$3$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/jvm/functions/Function2;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$lambda$4$lambda$3$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$lambda$4$lambda$3$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$lambda$4$lambda$3$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$lambda$4$lambda$3$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$screenExecutor$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$screenExecutor$1;->(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeSub; +Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeSub$DefaultImpls; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeSub$DefaultImpls;->loadDiskHandle$default(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeSub;Ljava/lang/String;ZLkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeSub$DefaultImpls;->mutablePersistedFlow$default(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeSub;Ljava/lang/String;Lcom/artemchep/keyguard/feature/navigation/state/PersistedStorage;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)Lkotlinx/coroutines/flow/MutableStateFlow; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeSub$DefaultImpls;->mutablePersistedFlow$default(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeSub;Ljava/lang/String;Lcom/artemchep/keyguard/feature/navigation/state/PersistedStorage;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)Lkotlinx/coroutines/flow/MutableStateFlow; +Lcom/artemchep/keyguard/feature/navigation/state/TranslatorScope; +Lcom/artemchep/keyguard/feature/search/component/ComposableSingletons$DropdownButtonKt; +HSPLcom/artemchep/keyguard/feature/search/component/ComposableSingletons$DropdownButtonKt;->()V +HSPLcom/artemchep/keyguard/feature/search/component/ComposableSingletons$DropdownButtonKt;->()V +HSPLcom/artemchep/keyguard/feature/search/component/ComposableSingletons$DropdownButtonKt;->getLambda-1$common_noneRelease()Lkotlin/jvm/functions/Function3; +Lcom/artemchep/keyguard/feature/search/component/ComposableSingletons$DropdownButtonKt$lambda-1$1; +HSPLcom/artemchep/keyguard/feature/search/component/ComposableSingletons$DropdownButtonKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/feature/search/component/ComposableSingletons$DropdownButtonKt$lambda-1$1;->()V +Lcom/artemchep/keyguard/feature/search/component/DropdownButtonKt; +HSPLcom/artemchep/keyguard/feature/search/component/DropdownButtonKt;->DropdownButton$lambda$1(Landroidx/compose/runtime/MutableState;)Z +HSPLcom/artemchep/keyguard/feature/search/component/DropdownButtonKt;->DropdownButton(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/vector/ImageVector;Ljava/lang/String;Ljava/util/List;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/search/component/DropdownButtonKt;->access$DropdownButton$lambda$1(Landroidx/compose/runtime/MutableState;)Z +Lcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$1; +HSPLcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$1;->(Ljava/util/List;Landroidx/compose/runtime/MutableState;)V +HSPLcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$1;->invoke()V +Lcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$2$2; +HSPLcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$2$2;->(Ljava/util/List;Landroidx/compose/runtime/MutableState;Landroidx/compose/ui/graphics/vector/ImageVector;Lkotlin/jvm/functions/Function0;)V +HSPLcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$2$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$2$2;->invoke(Lkotlin/Unit;Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$2$2$1$1; +HSPLcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$2$2$1$1;->(Landroidx/compose/runtime/MutableState;)V +Lcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$2$2$2; +HSPLcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$2$2$2;->(Landroidx/compose/ui/graphics/vector/ImageVector;Lkotlin/jvm/functions/Function0;)V +HSPLcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$2$2$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$2$2$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$2$3; +HSPLcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$2$3;->(Ljava/lang/String;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;)V +Lcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$2$onDismissRequest$1$1; +HSPLcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$2$onDismissRequest$1$1;->(Landroidx/compose/runtime/MutableState;)V +Lcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$3; +HSPLcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$3;->(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/vector/ImageVector;Ljava/lang/String;Ljava/util/List;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;II)V +Lcom/artemchep/keyguard/feature/search/filter/FilterButtonKt; +HSPLcom/artemchep/keyguard/feature/search/filter/FilterButtonKt;->FilterButton(Landroidx/compose/ui/Modifier;Ljava/lang/Integer;Ljava/util/List;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/feature/search/filter/FilterButtonKt$FilterButton$1; +HSPLcom/artemchep/keyguard/feature/search/filter/FilterButtonKt$FilterButton$1;->(Ljava/lang/Integer;Ljava/util/List;)V +Lcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt; +HSPLcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt;->FilterItemLayout$lambda$0(Landroidx/compose/runtime/State;)Lkotlin/jvm/functions/Function0; +HSPLcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt;->FilterItemLayout(Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function0;ZLandroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt;->access$FilterItemLayout$lambda$0(Landroidx/compose/runtime/State;)Lkotlin/jvm/functions/Function0; +Lcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt$FilterItemLayout$1; +HSPLcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt$FilterItemLayout$1;->()V +HSPLcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt$FilterItemLayout$1;->()V +HSPLcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt$FilterItemLayout$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt$FilterItemLayout$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt$FilterItemLayout$2; +HSPLcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt$FilterItemLayout$2;->(ZLandroidx/compose/runtime/State;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt$FilterItemLayout$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt$FilterItemLayout$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt$FilterItemLayout$2$1; +HSPLcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt$FilterItemLayout$2$1;->(Landroidx/compose/runtime/State;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt$FilterItemLayout$2$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt$FilterItemLayout$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt$FilterItemLayout$3; +HSPLcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt$FilterItemLayout$3;->(Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function0;ZII)V +Lcom/artemchep/keyguard/feature/search/filter/model/FilterItemModel; +Lcom/artemchep/keyguard/feature/search/filter/model/FilterItemModel$Item; +Lcom/artemchep/keyguard/feature/search/filter/model/FilterItemModel$Section; +Lcom/artemchep/keyguard/feature/search/sort/SortButtonKt; +HSPLcom/artemchep/keyguard/feature/search/sort/SortButtonKt;->SortButton(Landroidx/compose/ui/Modifier;Ljava/util/List;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/feature/search/sort/SortButtonKt$SortButton$1; +HSPLcom/artemchep/keyguard/feature/search/sort/SortButtonKt$SortButton$1;->(Ljava/util/List;)V +Lcom/artemchep/keyguard/feature/search/sort/model/SortItemModel; +Lcom/artemchep/keyguard/feature/search/sort/model/SortItemModel$Item; +Lcom/artemchep/keyguard/feature/search/sort/model/SortItemModel$Section; +Lcom/artemchep/keyguard/feature/send/SendRoute; +HSPLcom/artemchep/keyguard/feature/send/SendRoute;->()V +HSPLcom/artemchep/keyguard/feature/send/SendRoute;->()V +Lcom/artemchep/keyguard/feature/twopane/ComposableSingletons$TwoPaneLayoutKt; +HSPLcom/artemchep/keyguard/feature/twopane/ComposableSingletons$TwoPaneLayoutKt;->()V +HSPLcom/artemchep/keyguard/feature/twopane/ComposableSingletons$TwoPaneLayoutKt;->()V +HSPLcom/artemchep/keyguard/feature/twopane/ComposableSingletons$TwoPaneLayoutKt;->getLambda-1$common_noneRelease()Lkotlin/jvm/functions/Function4; +Lcom/artemchep/keyguard/feature/twopane/ComposableSingletons$TwoPaneLayoutKt$lambda-1$1; +HSPLcom/artemchep/keyguard/feature/twopane/ComposableSingletons$TwoPaneLayoutKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/feature/twopane/ComposableSingletons$TwoPaneLayoutKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/feature/twopane/ComposableSingletons$TwoPaneLayoutKt$lambda-1$1;->invoke(Landroidx/compose/animation/AnimatedContentScope;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/twopane/ComposableSingletons$TwoPaneLayoutKt$lambda-1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt;->()V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt;->PaneLayout(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt;->TwoPaneLayout$lambda$5(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetNavAnimation; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt;->TwoPaneLayout(Lcom/artemchep/keyguard/feature/twopane/TwoPaneScaffoldScope;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt;->TwoPaneScaffold-KLGhzwk(Landroidx/compose/ui/Modifier;FFFFLkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt;->TwoPaneScaffold_KLGhzwk$lambda$0(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetAllowTwoPanelLayoutInPortrait; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt;->TwoPaneScaffold_KLGhzwk$lambda$2(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetAllowTwoPanelLayoutInLandscape; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt;->access$TwoPaneLayout$lambda$5(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetNavAnimation; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt;->access$TwoPaneScaffold_KLGhzwk$lambda$0(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetAllowTwoPanelLayoutInPortrait; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt;->access$TwoPaneScaffold_KLGhzwk$lambda$2(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetAllowTwoPanelLayoutInLandscape; +Lcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneLayout$$inlined$rememberInstance$1; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneLayout$$inlined$rememberInstance$1;->()V +Lcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneLayout$1$2; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneLayout$1$2;->(Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lcom/artemchep/keyguard/feature/twopane/TwoPaneScaffoldScope;Lkotlin/Lazy;)V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneLayout$1$2;->access$invoke$lambda$1(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneLayout$1$2;->invoke$lambda$1(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneLayout$1$2;->invoke(Landroidx/compose/foundation/layout/BoxScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneLayout$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneLayout$1$2$1; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneLayout$1$2$1;->(Lkotlin/Lazy;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneLayout$1$2$1;->invoke(Landroidx/compose/animation/AnimatedContentTransitionScope;)Landroidx/compose/animation/ContentTransform; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneLayout$1$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneLayout$2; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneLayout$2;->(Lcom/artemchep/keyguard/feature/twopane/TwoPaneScaffoldScope;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;II)V +Lcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneScaffold$2; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneScaffold$2;->(FFFFLandroidx/compose/runtime/State;Landroidx/compose/runtime/State;Lkotlin/jvm/functions/Function3;)V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneScaffold$2;->invoke(Landroidx/compose/foundation/layout/BoxWithConstraintsScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneScaffold$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneScaffold$3; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneScaffold$3;->(Landroidx/compose/ui/Modifier;FFFFLkotlin/jvm/functions/Function3;II)V +Lcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneScaffold-KLGhzwk$$inlined$rememberInstance$1; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneScaffold-KLGhzwk$$inlined$rememberInstance$1;->()V +Lcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneScaffold-KLGhzwk$$inlined$rememberInstance$2; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneScaffold-KLGhzwk$$inlined$rememberInstance$2;->()V +Lcom/artemchep/keyguard/feature/twopane/TwoPaneNavigationKt; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneNavigationKt;->TwoPaneNavigationContent(Lkotlinx/collections/immutable/PersistentList;Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/twopane/TwoPaneNavigationKt$TwoPaneNavigationContent$1; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneNavigationKt$TwoPaneNavigationContent$1;->(Lkotlinx/collections/immutable/PersistentList;)V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneNavigationKt$TwoPaneNavigationContent$1;->invoke(Lcom/artemchep/keyguard/feature/twopane/TwoPaneScaffoldScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneNavigationKt$TwoPaneNavigationContent$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/twopane/TwoPaneNavigationKt$TwoPaneNavigationContent$1$2; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneNavigationKt$TwoPaneNavigationContent$1$2;->(Lcom/artemchep/keyguard/feature/navigation/NavigationEntry;Lcom/artemchep/keyguard/feature/navigation/NavigationEntry;Lkotlinx/collections/immutable/PersistentList;)V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneNavigationKt$TwoPaneNavigationContent$1$2;->invoke(Landroidx/compose/foundation/layout/BoxScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneNavigationKt$TwoPaneNavigationContent$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/twopane/TwoPaneScaffoldScope; +Lcom/artemchep/keyguard/feature/twopane/TwoPaneScaffoldScopeImpl; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneScaffoldScopeImpl;->(Landroidx/compose/foundation/layout/BoxScope;ZF)V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneScaffoldScopeImpl;->(Landroidx/compose/foundation/layout/BoxScope;ZFLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneScaffoldScopeImpl;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneScaffoldScopeImpl;->getTabletUi()Z +Lcom/artemchep/keyguard/feature/twopane/TwoPaneScreenKt; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneScreenKt;->TwoPaneScreen(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function4;Lkotlin/jvm/functions/Function5;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/feature/twopane/TwoPaneScreenKt$TwoPaneScreen$1; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneScreenKt$TwoPaneScreen$1;->(Lkotlin/jvm/functions/Function5;Lkotlin/jvm/functions/Function4;)V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneScreenKt$TwoPaneScreen$1;->invoke(Lcom/artemchep/keyguard/feature/twopane/TwoPaneScaffoldScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneScreenKt$TwoPaneScreen$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/watchtower/WatchtowerRoute; +HSPLcom/artemchep/keyguard/feature/watchtower/WatchtowerRoute;->()V +HSPLcom/artemchep/keyguard/feature/watchtower/WatchtowerRoute;->()V +Lcom/artemchep/keyguard/platform/LeAnimationKt; +HSPLcom/artemchep/keyguard/platform/LeAnimationKt;->getLocalAnimationFactor(Landroidx/compose/runtime/Composer;I)F +Lcom/artemchep/keyguard/platform/LeBundleKt; +HSPLcom/artemchep/keyguard/platform/LeBundleKt;->contains(Landroid/os/Bundle;Ljava/lang/String;)Z +HSPLcom/artemchep/keyguard/platform/LeBundleKt;->leBundleOf([Lkotlin/Pair;)Landroid/os/Bundle; +Lcom/artemchep/keyguard/platform/LeContext; +HSPLcom/artemchep/keyguard/platform/LeContext;->()V +HSPLcom/artemchep/keyguard/platform/LeContext;->(Landroid/content/Context;)V +HSPLcom/artemchep/keyguard/platform/LeContext;->getContext()Landroid/content/Context; +Lcom/artemchep/keyguard/platform/LeContextKt; +HSPLcom/artemchep/keyguard/platform/LeContextKt;->getLocalLeContext(Landroidx/compose/runtime/Composer;I)Lcom/artemchep/keyguard/platform/LeContext; +Lcom/artemchep/keyguard/platform/LeDebugKt; +HSPLcom/artemchep/keyguard/platform/LeDebugKt;->()V +HSPLcom/artemchep/keyguard/platform/LeDebugKt;->isStandalone()Z +Lcom/artemchep/keyguard/platform/LeImeKt; +HSPLcom/artemchep/keyguard/platform/LeImeKt;->getLeDisplayCutout(Landroidx/compose/foundation/layout/WindowInsets$Companion;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/WindowInsets; +HSPLcom/artemchep/keyguard/platform/LeImeKt;->getLeIme(Landroidx/compose/foundation/layout/WindowInsets$Companion;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/WindowInsets; +HSPLcom/artemchep/keyguard/platform/LeImeKt;->getLeNavigationBars(Landroidx/compose/foundation/layout/WindowInsets$Companion;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/WindowInsets; +HSPLcom/artemchep/keyguard/platform/LeImeKt;->getLeStatusBars(Landroidx/compose/foundation/layout/WindowInsets$Companion;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/WindowInsets; +HSPLcom/artemchep/keyguard/platform/LeImeKt;->getLeSystemBars(Landroidx/compose/foundation/layout/WindowInsets$Companion;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/WindowInsets; +Lcom/artemchep/keyguard/platform/LePlatformKt; +HSPLcom/artemchep/keyguard/platform/LePlatformKt;->()V +HSPLcom/artemchep/keyguard/platform/LePlatformKt;->getCurrentPlatform()Lcom/artemchep/keyguard/platform/Platform; +HSPLcom/artemchep/keyguard/platform/LePlatformKt;->getPlatform()Lcom/artemchep/keyguard/platform/Platform$Mobile$Android; +Lcom/artemchep/keyguard/platform/LePlatformKt$platform$2; +HSPLcom/artemchep/keyguard/platform/LePlatformKt$platform$2;->()V +HSPLcom/artemchep/keyguard/platform/LePlatformKt$platform$2;->()V +HSPLcom/artemchep/keyguard/platform/LePlatformKt$platform$2;->invoke()Lcom/artemchep/keyguard/platform/Platform$Mobile$Android; +HSPLcom/artemchep/keyguard/platform/LePlatformKt$platform$2;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/platform/Platform; +Lcom/artemchep/keyguard/platform/Platform$Desktop; +Lcom/artemchep/keyguard/platform/Platform$Mobile; +Lcom/artemchep/keyguard/platform/Platform$Mobile$Android; +HSPLcom/artemchep/keyguard/platform/Platform$Mobile$Android;->()V +HSPLcom/artemchep/keyguard/platform/Platform$Mobile$Android;->(Z)V +Lcom/artemchep/keyguard/platform/RecordExceptionKt; +HSPLcom/artemchep/keyguard/platform/RecordExceptionKt;->crashlyticsIsEnabled()Ljava/lang/Boolean; +HSPLcom/artemchep/keyguard/platform/RecordExceptionKt;->crashlyticsSetEnabled(Ljava/lang/Boolean;)V +HSPLcom/artemchep/keyguard/platform/RecordExceptionKt;->recordLog(Ljava/lang/String;)V +Lcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt; +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt;->flowWithLifecycle$default(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/platform/lifecycle/LeLifecycleState;ILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt;->flowWithLifecycle(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/platform/lifecycle/LeLifecycleState;)Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt;->onState(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/platform/lifecycle/LeLifecycleState;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$flowWithLifecycle$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$flowWithLifecycle$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$flowWithLifecycle$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$flowWithLifecycle$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$flowWithLifecycle$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$flowWithLifecycle$$inlined$map$1; +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$flowWithLifecycle$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/platform/lifecycle/LeLifecycleState;)V +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$flowWithLifecycle$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$flowWithLifecycle$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$flowWithLifecycle$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/platform/lifecycle/LeLifecycleState;)V +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$flowWithLifecycle$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$flowWithLifecycle$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$flowWithLifecycle$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$flowWithLifecycle$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$onState$1$flow$1; +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$onState$1$flow$1;->(Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$onState$1$flow$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$onState$1$flow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$onState$1$flow$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$onState$1$flow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/platform/lifecycle/LeLifecycleState; +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleState;->$values()[Lcom/artemchep/keyguard/platform/lifecycle/LeLifecycleState; +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleState;->()V +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleState;->(Ljava/lang/String;I)V +Lcom/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlowKt; +HSPLcom/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlowKt;->getLocalLifecycleStateFlow(Landroidx/compose/runtime/Composer;I)Lkotlinx/coroutines/flow/StateFlow; +HSPLcom/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlowKt;->toCommon(Landroidx/lifecycle/Lifecycle$State;)Lcom/artemchep/keyguard/platform/lifecycle/LeLifecycleState; +Lcom/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlowKt$LocalLifecycleStateFlow$1; +HSPLcom/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlowKt$LocalLifecycleStateFlow$1;->$r8$lambda$YdcAxOC5sem8u3fiyg-GfdyOe8c(Lkotlinx/coroutines/flow/MutableStateFlow;Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +HSPLcom/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlowKt$LocalLifecycleStateFlow$1;->(Landroidx/lifecycle/LifecycleOwner;Lkotlinx/coroutines/flow/MutableStateFlow;)V +HSPLcom/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlowKt$LocalLifecycleStateFlow$1;->invoke$lambda$0(Lkotlinx/coroutines/flow/MutableStateFlow;Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +HSPLcom/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlowKt$LocalLifecycleStateFlow$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLcom/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlowKt$LocalLifecycleStateFlow$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlowKt$LocalLifecycleStateFlow$1$$ExternalSyntheticLambda0; +HSPLcom/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlowKt$LocalLifecycleStateFlow$1$$ExternalSyntheticLambda0;->(Lkotlinx/coroutines/flow/MutableStateFlow;)V +HSPLcom/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlowKt$LocalLifecycleStateFlow$1$$ExternalSyntheticLambda0;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +Lcom/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlowKt$LocalLifecycleStateFlow$1$invoke$$inlined$onDispose$1; +HSPLcom/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlowKt$LocalLifecycleStateFlow$1$invoke$$inlined$onDispose$1;->(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/LifecycleEventObserver;)V +Lcom/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlowKt$WhenMappings; +HSPLcom/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlowKt$WhenMappings;->()V +Lcom/artemchep/keyguard/platform/util/IsReleaseKt; +HSPLcom/artemchep/keyguard/platform/util/IsReleaseKt;->()V +HSPLcom/artemchep/keyguard/platform/util/IsReleaseKt;->isRelease()Z +Lcom/artemchep/keyguard/provider/bitwarden/ServerEnv; +Lcom/artemchep/keyguard/provider/bitwarden/ServerTwoFactorToken; +Lcom/artemchep/keyguard/provider/bitwarden/entity/HibpBreachGroup; +HSPLcom/artemchep/keyguard/provider/bitwarden/entity/HibpBreachGroup;->()V +Lcom/artemchep/keyguard/provider/bitwarden/entity/HibpBreachGroup$$serializer; +HSPLcom/artemchep/keyguard/provider/bitwarden/entity/HibpBreachGroup$$serializer;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/entity/HibpBreachGroup$$serializer;->()V +Lcom/artemchep/keyguard/provider/bitwarden/entity/HibpBreachGroup$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/entity/HibpBreachGroup$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/entity/HibpBreachGroup$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/entity/HibpBreachGroup$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/provider/bitwarden/entity/HibpBreachResponse$$serializer; +HSPLcom/artemchep/keyguard/provider/bitwarden/entity/HibpBreachResponse$$serializer;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/entity/HibpBreachResponse$$serializer;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/entity/HibpBreachResponse$$serializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lcom/artemchep/keyguard/provider/bitwarden/entity/HibpBreachResponse$$serializer$annotationImpl$kotlinx_serialization_json_JsonNames$0; +HSPLcom/artemchep/keyguard/provider/bitwarden/entity/HibpBreachResponse$$serializer$annotationImpl$kotlinx_serialization_json_JsonNames$0;->([Ljava/lang/String;)V +Lcom/artemchep/keyguard/provider/bitwarden/repository/BaseRepository; +Lcom/artemchep/keyguard/provider/bitwarden/repository/BaseRepository$DefaultImpls; +HSPLcom/artemchep/keyguard/provider/bitwarden/repository/BaseRepository$DefaultImpls;->getSnapshot(Lcom/artemchep/keyguard/provider/bitwarden/repository/BaseRepository;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenCipherRepository; +Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenCollectionRepository; +Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenFolderRepository; +Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenMetaRepository; +Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenOrganizationRepository; +Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenProfileRepository; +Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenSendRepository; +Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenTokenRepository; +Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenTokenRepository$DefaultImpls; +HSPLcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenTokenRepository$DefaultImpls;->getSnapshot(Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenTokenRepository;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/AddFolderImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/AddFolderImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/AddFolderImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase;Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/AddFolderImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/AddFolderImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/AddFolderImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/AddFolderImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/AddFolderImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/AddFolderImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/AddFolderImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/AddFolderImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherNameByIdImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherNameByIdImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherNameByIdImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherNameByIdImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherNameByIdImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherNameByIdImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherNameByIdImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherNameByIdImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherNameByIdImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherPasswordByIdImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherPasswordByIdImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherPasswordByIdImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById;Lcom/artemchep/keyguard/common/usecase/GetPasswordStrength;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherPasswordByIdImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherPasswordByIdImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherPasswordByIdImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherPasswordByIdImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherPasswordByIdImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherPasswordByIdImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherPasswordByIdImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherPasswordByIdImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$Node; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$Node$Group; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$Node$Group;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$Node$Group;->(Larrow/optics/POptional;Ljava/util/List;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$Node$Leaf; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$Node$Leaf;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$Node$Leaf;->(Larrow/optics/POptional;Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$PickStrategy;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$Node$Leaf;->(Larrow/optics/POptional;Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$PickStrategy;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$PickAttachmentStrategy; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$PickAttachmentStrategy;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$PickCardStrategy; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$PickCardStrategy;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$PickFieldStrategy; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$PickFieldStrategy;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$PickModeStrategy; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$PickModeStrategy;->(Lkotlin/jvm/functions/Function0;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$PickModeStrategy;->(Lkotlin/jvm/functions/Function0;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$PickStrategy; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$PickUriStrategy; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$PickUriStrategy;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$mergeRules$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$mergeRules$1;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$mergeRules$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$mergeRules$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$mergeRules$2;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$mergeRules$2;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$mergeRules$3; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$mergeRules$3;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$mergeRules$3;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$mergeRules$4; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$mergeRules$4;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$mergeRules$4;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$mergeRules$5; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$mergeRules$5;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$mergeRules$5;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherUrlCheckImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherUrlCheckImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherUrlCheckImpl;->(Lcom/artemchep/keyguard/common/service/tld/TldService;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherUrlCheckImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherUrlCheckImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherUrlCheckImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherUrlCheckImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherUrlCheckImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherUrlCheckImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CopyCipherByIdImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CopyCipherByIdImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CopyCipherByIdImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById;Lcom/artemchep/keyguard/common/usecase/AddFolder;Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CopyCipherByIdImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CopyCipherByIdImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CopyCipherByIdImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CopyCipherByIdImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CopyCipherByIdImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CopyCipherByIdImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CopyCipherByIdImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CopyCipherByIdImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CopyCipherByIdImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CopyCipherByIdImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/FavouriteCipherByIdImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/FavouriteCipherByIdImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/FavouriteCipherByIdImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/FavouriteCipherByIdImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/FavouriteCipherByIdImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/FavouriteCipherByIdImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/FavouriteCipherByIdImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/FavouriteCipherByIdImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/FavouriteCipherByIdImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenTokenRepository;Lkotlin/coroutines/CoroutineContext;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenTokenRepository;Lkotlin/coroutines/CoroutineContext;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl$invoke$$inlined$map$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl$invoke$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl$invoke$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl$invoke$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl$invoke$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl$invoke$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl$invoke$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl$invoke$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl$invoke$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl$invoke$$inlined$map$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCipherOpenedHistoryImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCipherOpenedHistoryImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCipherOpenedHistoryImpl;->(Lcom/artemchep/keyguard/android/downloader/journal/CipherHistoryOpenedRepository;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCipherOpenedHistoryImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCipherOpenedHistoryImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCipherOpenedHistoryImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl;->(Lcom/artemchep/keyguard/common/service/logging/LogRepository;Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenCipherRepository;Lcom/artemchep/keyguard/common/usecase/GetPasswordStrength;Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope;Lkotlin/coroutines/CoroutineContext;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl;->(Lcom/artemchep/keyguard/common/service/logging/LogRepository;Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenCipherRepository;Lcom/artemchep/keyguard/common/usecase/GetPasswordStrength;Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope;Lkotlin/coroutines/CoroutineContext;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$instance$default$4; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$instance$default$4;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$map$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/common/service/logging/LogRepository;Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->(Lkotlin/jvm/internal/Ref$BooleanRef;Lkotlinx/datetime/Instant;Lcom/artemchep/keyguard/common/service/logging/LogRepository;Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->invoke(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl;->(Lcom/artemchep/keyguard/common/service/logging/LogRepository;Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenCollectionRepository;Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope;Lkotlin/coroutines/CoroutineContext;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl;->(Lcom/artemchep/keyguard/common/service/logging/LogRepository;Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenCollectionRepository;Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope;Lkotlin/coroutines/CoroutineContext;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$map$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/common/service/logging/LogRepository;Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->(Lkotlin/jvm/internal/Ref$BooleanRef;Lkotlinx/datetime/Instant;Lcom/artemchep/keyguard/common/service/logging/LogRepository;Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->invoke(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetFolderTreeImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFolderTreeImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFolderTreeImpl;->(Lkotlin/coroutines/CoroutineContext;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFolderTreeImpl;->(Lkotlin/coroutines/CoroutineContext;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFolderTreeImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetFolderTreeImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFolderTreeImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFolderTreeImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl;->(Lcom/artemchep/keyguard/common/service/logging/LogRepository;Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenFolderRepository;Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope;Lkotlin/coroutines/CoroutineContext;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl;->(Lcom/artemchep/keyguard/common/service/logging/LogRepository;Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenFolderRepository;Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope;Lkotlin/coroutines/CoroutineContext;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$map$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/common/service/logging/LogRepository;Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->(Lkotlin/jvm/internal/Ref$BooleanRef;Lkotlinx/datetime/Instant;Lcom/artemchep/keyguard/common/service/logging/LogRepository;Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->invoke(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenMetaRepository;Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope;Lkotlin/coroutines/CoroutineContext;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenMetaRepository;Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope;Lkotlin/coroutines/CoroutineContext;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl$special$$inlined$map$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl$special$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl$special$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl$special$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl$special$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl$special$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl$special$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl$special$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl$special$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl;->(Lcom/artemchep/keyguard/common/service/logging/LogRepository;Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenOrganizationRepository;Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope;Lkotlin/coroutines/CoroutineContext;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl;->(Lcom/artemchep/keyguard/common/service/logging/LogRepository;Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenOrganizationRepository;Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope;Lkotlin/coroutines/CoroutineContext;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$map$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/common/service/logging/LogRepository;Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->(Lkotlin/jvm/internal/Ref$BooleanRef;Lkotlinx/datetime/Instant;Lcom/artemchep/keyguard/common/service/logging/LogRepository;Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->invoke(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenTokenRepository;Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenProfileRepository;Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope;Lkotlin/coroutines/CoroutineContext;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenTokenRepository;Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenProfileRepository;Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope;Lkotlin/coroutines/CoroutineContext;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl$sharedFlow$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl$sharedFlow$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl$sharedFlow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl$sharedFlow$1;->invoke(Ljava/util/List;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl$sharedFlow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/MoveCipherToFolderByIdImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/MoveCipherToFolderByIdImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/MoveCipherToFolderByIdImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById;Lcom/artemchep/keyguard/common/usecase/AddFolder;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/MoveCipherToFolderByIdImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/MoveCipherToFolderByIdImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/MoveCipherToFolderByIdImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/MoveCipherToFolderByIdImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/MoveCipherToFolderByIdImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/MoveCipherToFolderByIdImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/MoveCipherToFolderByIdImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/MoveCipherToFolderByIdImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenTokenRepository;Lcom/artemchep/keyguard/common/service/text/Base64Service;Lcom/artemchep/keyguard/common/service/connectivity/ConnectivityService;Lkotlinx/serialization/json/Json;Lio/ktor/client/HttpClient;Lcom/artemchep/keyguard/core/store/DatabaseManager;Lcom/artemchep/keyguard/common/usecase/QueueSyncById;Lcom/artemchep/keyguard/common/usecase/QueueSyncAll;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl;->access$getQueueSyncAll$p(Lcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl;)Lcom/artemchep/keyguard/common/usecase/QueueSyncAll; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl;->access$getTokenRepository$p(Lcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl;)Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenTokenRepository; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl;->launch(Lkotlinx/coroutines/CoroutineScope;)Lkotlinx/coroutines/Job; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$launch$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$launch$1;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$launch$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$launch$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$launch$1$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$launch$1$1;->(Lkotlinx/coroutines/CoroutineScope;Lcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$launch$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$launch$1$1;->invoke(Lkotlinx/collections/immutable/PersistentMap;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$launch$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$special$$inlined$instance$default$4; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$special$$inlined$instance$default$4;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$special$$inlined$instance$default$5; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$special$$inlined$instance$default$5;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$special$$inlined$instance$default$6; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$special$$inlined$instance$default$6;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$special$$inlined$instance$default$7; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$special$$inlined$instance$default$7;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$special$$inlined$instance$default$8; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$special$$inlined$instance$default$8;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/RePromptCipherByIdImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RePromptCipherByIdImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RePromptCipherByIdImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RePromptCipherByIdImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/RePromptCipherByIdImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RePromptCipherByIdImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RePromptCipherByIdImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/RePromptCipherByIdImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RePromptCipherByIdImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/RemoveCipherByIdImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RemoveCipherByIdImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RemoveCipherByIdImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RemoveCipherByIdImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/RemoveCipherByIdImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RemoveCipherByIdImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RemoveCipherByIdImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/RemoveCipherByIdImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RemoveCipherByIdImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/RenameFolderByIdImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RenameFolderByIdImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RenameFolderByIdImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyFolderById;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RenameFolderByIdImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/RenameFolderByIdImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RenameFolderByIdImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RenameFolderByIdImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/RenameFolderByIdImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RenameFolderByIdImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/RestoreCipherByIdImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RestoreCipherByIdImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RestoreCipherByIdImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RestoreCipherByIdImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/RestoreCipherByIdImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RestoreCipherByIdImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RestoreCipherByIdImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/RestoreCipherByIdImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RestoreCipherByIdImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl;->(Lcom/artemchep/keyguard/common/service/logging/LogRepository;Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenTokenRepository;Lcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByToken;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl;->access$getLogRepository$p(Lcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl;)Lcom/artemchep/keyguard/common/service/logging/LogRepository; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl;->invoke()Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$invoke$$inlined$flatMap$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$invoke$$inlined$flatMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$invoke$$inlined$flatMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$invoke$$inlined$flatMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$invoke$$inlined$flatMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$invoke$$inlined$flatMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$invoke$lambda$3$$inlined$map$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$invoke$lambda$3$$inlined$map$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$invoke$lambda$3$$inlined$map$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$invoke$lambda$3$$inlined$map$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$invoke$lambda$3$$inlined$map$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$invoke$lambda$3$$inlined$map$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/TrashCipherByIdImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/TrashCipherByIdImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/TrashCipherByIdImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/TrashCipherByIdImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/TrashCipherByIdImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/TrashCipherByIdImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/TrashCipherByIdImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/TrashCipherByIdImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/TrashCipherByIdImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/internal/AddAccount; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/internal/RequestEmailTfa; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByToken; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl;->(Lcom/artemchep/keyguard/common/service/logging/LogRepository;Lcom/artemchep/keyguard/common/service/crypto/CipherEncryptor;Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator;Lcom/artemchep/keyguard/common/service/text/Base64Service;Lkotlinx/serialization/json/Json;Lio/ktor/client/HttpClient;Lcom/artemchep/keyguard/core/store/DatabaseManager;Lcom/artemchep/keyguard/core/store/DatabaseSyncer;Lcom/artemchep/keyguard/common/usecase/Watchdog;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$4; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$4;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$5; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$5;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$6; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$6;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$7; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$7;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$8; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$8;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$9; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$9;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase;->(Lcom/artemchep/keyguard/core/store/DatabaseManager;Lcom/artemchep/keyguard/common/usecase/GetCanWrite;Lcom/artemchep/keyguard/common/usecase/GetWriteAccess;Lcom/artemchep/keyguard/common/usecase/QueueSyncById;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase$special$$inlined$instance$default$4; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase$special$$inlined$instance$default$4;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyFolderById; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyFolderById;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyFolderById;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyFolderById;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyFolderById$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyFolderById$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyFolderById$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyFolderById$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyFolderById$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyProfileById; +Lcom/artemchep/keyguard/res/Res$fonts$RobotoMono; +HSPLcom/artemchep/keyguard/res/Res$fonts$RobotoMono;->()V +HSPLcom/artemchep/keyguard/res/Res$fonts$RobotoMono;->()V +HSPLcom/artemchep/keyguard/res/Res$fonts$RobotoMono;->getRobotoMono()Ldev/icerock/moko/resources/FontResource; +Lcom/artemchep/keyguard/res/Res$strings; +HSPLcom/artemchep/keyguard/res/Res$strings;->()V +HSPLcom/artemchep/keyguard/res/Res$strings;->()V +HSPLcom/artemchep/keyguard/res/Res$strings;->getAccount()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getAccount_main_add_account_title()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getAttachments()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getCipher_type_card()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getCipher_type_identity()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getCipher_type_login()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getCipher_type_note()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getCollection()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getCollection_none()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getCustom()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getDownloads()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getError_must_have_at_least_n_symbols()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getError_must_not_be_blank()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getFilter_header_title()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getFolder()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getFolder_none()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getHome_generator_label()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getHome_send_label()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getHome_settings_label()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getHome_vault_label()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getHome_watchtower_label()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getMisc()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getNav_animation_crossfade()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getNav_animation_disabled()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getNav_animation_dynamic()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getOne_time_password()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getOptions()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getOrganization()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getOrganization_none()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getPasskeys()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getPassword()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getPref_item_erase_data_text()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getPref_item_erase_data_title()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getPull_to_search()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSetup_button_create_vault()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSetup_button_send_crash_reports()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSetup_field_app_password_label()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSetup_header_text()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSort_header_title()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSortby_modification_date_normal_mode()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSortby_modification_date_reverse_mode()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSortby_modification_date_title()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSortby_password_modification_date_normal_mode()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSortby_password_modification_date_reverse_mode()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSortby_password_modification_date_title()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSortby_password_normal_mode()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSortby_password_reverse_mode()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSortby_password_strength_normal_mode()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSortby_password_strength_reverse_mode()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSortby_password_strength_title()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSortby_password_title()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSortby_title_normal_mode()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSortby_title_reverse_mode()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSortby_title_title()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getTrash()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getType()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getUnlock_button_unlock()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getUnlock_header_text()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getVault_action_always_show_keyboard_title()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getVault_action_lock_vault_title()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getVault_action_sync_vault_title()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getVault_main_search_placeholder()Ldev/icerock/moko/resources/StringResource; +Lcom/artemchep/keyguard/room/AppDatabase; +Lcom/artemchep/keyguard/ui/Afh; +HSPLcom/artemchep/keyguard/ui/Afh;->(Lkotlinx/collections/immutable/ImmutableList;Lkotlinx/datetime/Instant;)V +HSPLcom/artemchep/keyguard/ui/Afh;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/ui/Afh;->getOptions()Lkotlinx/collections/immutable/ImmutableList; +Lcom/artemchep/keyguard/ui/AnimatedFabVisibilityKt; +HSPLcom/artemchep/keyguard/ui/AnimatedFabVisibilityKt;->rememberFabExpanded(Landroidx/compose/material3/TopAppBarScrollBehavior;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +Lcom/artemchep/keyguard/ui/AnimatedFabVisibilityKt$rememberFabExpanded$1$1; +HSPLcom/artemchep/keyguard/ui/AnimatedFabVisibilityKt$rememberFabExpanded$1$1;->(Landroidx/compose/material3/TopAppBarScrollBehavior;)V +Lcom/artemchep/keyguard/ui/AutofillWindowKt; +HSPLcom/artemchep/keyguard/ui/AutofillWindowKt;->AutofillButton$lambda$1(Landroidx/compose/runtime/MutableState;)Z +HSPLcom/artemchep/keyguard/ui/AutofillWindowKt;->AutofillButton(Ljava/lang/String;ZZLkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/ui/AutofillWindowKt$AutofillButton$1$1; +HSPLcom/artemchep/keyguard/ui/AutofillWindowKt$AutofillButton$1$1;->(Landroidx/compose/runtime/MutableState;)V +Lcom/artemchep/keyguard/ui/AutofillWindowKt$AutofillButton$2; +HSPLcom/artemchep/keyguard/ui/AutofillWindowKt$AutofillButton$2;->(Ljava/lang/String;ZZLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)V +Lcom/artemchep/keyguard/ui/AutofillWindowKt$AutofillButton$3; +HSPLcom/artemchep/keyguard/ui/AutofillWindowKt$AutofillButton$3;->(Ljava/lang/String;ZZLkotlin/jvm/functions/Function1;II)V +Lcom/artemchep/keyguard/ui/AutofillWindowKt$AutofillButton$onDismissRequest$1$1; +HSPLcom/artemchep/keyguard/ui/AutofillWindowKt$AutofillButton$onDismissRequest$1$1;->(Landroidx/compose/runtime/MutableState;)V +Lcom/artemchep/keyguard/ui/CollectedEffectKt; +HSPLcom/artemchep/keyguard/ui/CollectedEffectKt;->CollectedEffect(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/ui/CollectedEffectKt$CollectedEffect$1; +HSPLcom/artemchep/keyguard/ui/CollectedEffectKt$CollectedEffect$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/ui/CollectedEffectKt$CollectedEffect$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/ui/CollectedEffectKt$CollectedEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/CollectedEffectKt$CollectedEffect$1$1; +HSPLcom/artemchep/keyguard/ui/CollectedEffectKt$CollectedEffect$1$1;->(Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/ui/CollectedEffectKt$CollectedEffect$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/ComposableKt; +HSPLcom/artemchep/keyguard/ui/ComposableKt;->Compose(Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt;->getLambda-1$common_noneRelease()Lkotlin/jvm/functions/Function2; +Lcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-1$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-2$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-2$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-3$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-3$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-3$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-4$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-4$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-4$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-5$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-5$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-5$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-6$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-6$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-6$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$OptionsWindowKt; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$OptionsWindowKt;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$OptionsWindowKt;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$OptionsWindowKt;->getLambda-1$common_noneRelease()Lkotlin/jvm/functions/Function2; +Lcom/artemchep/keyguard/ui/ComposableSingletons$OptionsWindowKt$lambda-1$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$OptionsWindowKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$OptionsWindowKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$OptionsWindowKt$lambda-1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$OptionsWindowKt$lambda-1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt;->getLambda-12$common_noneRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt;->getLambda-13$common_noneRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt;->getLambda-3$common_noneRelease()Lkotlin/jvm/functions/Function2; +Lcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-1$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-1$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-10$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-10$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-10$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-11$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-11$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-11$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-12$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-12$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-12$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-13$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-13$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-13$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-2$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-2$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-3$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-3$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-3$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-3$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-3$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-4$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-4$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-4$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-5$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-5$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-5$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-6$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-6$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-6$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-7$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-7$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-7$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-8$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-8$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-8$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-9$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-9$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-9$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt;->getLambda-3$common_noneRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt;->getLambda-4$common_noneRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt;->getLambda-5$common_noneRelease()Lkotlin/jvm/functions/Function2; +Lcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-1$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-1$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-2$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-2$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-3$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-3$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-3$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-3$1;->invoke(Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-3$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-4$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-4$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-4$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-5$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-5$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-5$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-5$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-5$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-6$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-6$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-6$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-7$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-7$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-7$1;->()V +Lcom/artemchep/keyguard/ui/ContextItem; +Lcom/artemchep/keyguard/ui/ContextItem$Section; +HSPLcom/artemchep/keyguard/ui/ContextItem$Section;->()V +HSPLcom/artemchep/keyguard/ui/ContextItem$Section;->(Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/ui/ContextItem$Section;->getTitle()Ljava/lang/String; +Lcom/artemchep/keyguard/ui/ContextItemBuilder; +HSPLcom/artemchep/keyguard/ui/ContextItemBuilder;->()V +HSPLcom/artemchep/keyguard/ui/ContextItemBuilder;->([Ljava/util/List;)V +HSPLcom/artemchep/keyguard/ui/ContextItemBuilder;->access$getItems$p(Lcom/artemchep/keyguard/ui/ContextItemBuilder;)Ljava/util/List; +HSPLcom/artemchep/keyguard/ui/ContextItemBuilder;->build()Lkotlinx/collections/immutable/PersistentList; +HSPLcom/artemchep/keyguard/ui/ContextItemBuilder;->plusAssign(Lcom/artemchep/keyguard/ui/ContextItem;)V +HSPLcom/artemchep/keyguard/ui/ContextItemBuilder;->section$default(Lcom/artemchep/keyguard/ui/ContextItemBuilder;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +HSPLcom/artemchep/keyguard/ui/ContextItemBuilder;->section(Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V +Lcom/artemchep/keyguard/ui/ContextItemBuilder$build$1; +HSPLcom/artemchep/keyguard/ui/ContextItemBuilder$build$1;->(Lcom/artemchep/keyguard/ui/ContextItemBuilder;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/ui/ContextItemBuilder$build$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/ui/ContextItemBuilder$build$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/DropdownKt; +HSPLcom/artemchep/keyguard/ui/DropdownKt;->()V +HSPLcom/artemchep/keyguard/ui/DropdownKt;->getDropdownMinWidth()F +Lcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt; +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt;->ExpandedIfNotEmpty(Ljava/lang/Object;Landroidx/compose/ui/Modifier;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt;->ExpandedIfNotEmptyForRow(Ljava/lang/Object;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmpty$1; +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmpty$1;->()V +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmpty$1;->()V +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmpty$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmpty$1;->invoke-mzRDjE0(J)J +Lcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmpty$2; +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmpty$2;->()V +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmpty$2;->()V +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmpty$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmpty$2;->invoke-mzRDjE0(J)J +Lcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmpty$3; +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmpty$3;->(Ljava/lang/Object;Lkotlin/jvm/functions/Function3;I)V +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmpty$3;->invoke$lambda$1(Landroidx/compose/runtime/MutableState;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmpty$3;->invoke$lambda$2(Landroidx/compose/runtime/MutableState;Ljava/lang/Object;)V +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmpty$3;->invoke(Landroidx/compose/animation/AnimatedVisibilityScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmpty$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmptyForRow$1; +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmptyForRow$1;->()V +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmptyForRow$1;->()V +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmptyForRow$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmptyForRow$1;->invoke-mzRDjE0(J)J +Lcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmptyForRow$2; +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmptyForRow$2;->()V +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmptyForRow$2;->()V +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmptyForRow$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmptyForRow$2;->invoke-mzRDjE0(J)J +Lcom/artemchep/keyguard/ui/FabScope; +Lcom/artemchep/keyguard/ui/FabState; +Lcom/artemchep/keyguard/ui/FlatItemAction; +HSPLcom/artemchep/keyguard/ui/FlatItemAction;->()V +HSPLcom/artemchep/keyguard/ui/FlatItemAction;->(Ljava/lang/String;Landroidx/compose/ui/graphics/vector/ImageVector;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/ui/FlatItemAction$Type;Lkotlin/jvm/functions/Function0;)V +HSPLcom/artemchep/keyguard/ui/FlatItemAction;->(Ljava/lang/String;Landroidx/compose/ui/graphics/vector/ImageVector;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/ui/FlatItemAction$Type;Lkotlin/jvm/functions/Function0;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/ui/FlatItemAction$Companion; +HSPLcom/artemchep/keyguard/ui/FlatItemAction$Companion;->()V +HSPLcom/artemchep/keyguard/ui/FlatItemAction$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/ui/FlatItemAction$Type; +Lcom/artemchep/keyguard/ui/InputPhase; +HSPLcom/artemchep/keyguard/ui/InputPhase;->$values()[Lcom/artemchep/keyguard/ui/InputPhase; +HSPLcom/artemchep/keyguard/ui/InputPhase;->()V +HSPLcom/artemchep/keyguard/ui/InputPhase;->(Ljava/lang/String;I)V +HSPLcom/artemchep/keyguard/ui/InputPhase;->values()[Lcom/artemchep/keyguard/ui/InputPhase; +Lcom/artemchep/keyguard/ui/LeMOdelBottomSheetKt; +HSPLcom/artemchep/keyguard/ui/LeMOdelBottomSheetKt;->LeMOdelBottomSheet(ZLkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/ui/LeMOdelBottomSheetKt$LeMOdelBottomSheet$3; +HSPLcom/artemchep/keyguard/ui/LeMOdelBottomSheetKt$LeMOdelBottomSheet$3;->(ZLkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;I)V +Lcom/artemchep/keyguard/ui/MutableFabScope; +HSPLcom/artemchep/keyguard/ui/MutableFabScope;->(Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/ui/MutableFabScope;->getState()Landroidx/compose/runtime/State; +Lcom/artemchep/keyguard/ui/MutableOverlayScope; +HSPLcom/artemchep/keyguard/ui/MutableOverlayScope;->(Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/ui/MutableOverlayScope;->getContentPadding()Landroidx/compose/runtime/State; +Lcom/artemchep/keyguard/ui/OptionsWindowKt; +HSPLcom/artemchep/keyguard/ui/OptionsWindowKt;->OptionsButton$lambda$4(Landroidx/compose/runtime/MutableState;)Z +HSPLcom/artemchep/keyguard/ui/OptionsWindowKt;->OptionsButton(Ljava/util/List;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/ui/OptionsWindowKt;->OptionsButton(ZLkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/ui/OptionsWindowKt$OptionsButton$1; +HSPLcom/artemchep/keyguard/ui/OptionsWindowKt$OptionsButton$1;->(Ljava/util/List;)V +Lcom/artemchep/keyguard/ui/OptionsWindowKt$OptionsButton$3$1$1; +HSPLcom/artemchep/keyguard/ui/OptionsWindowKt$OptionsButton$3$1$1;->(Landroidx/compose/runtime/MutableState;)V +Lcom/artemchep/keyguard/ui/OptionsWindowKt$OptionsButton$3$2; +HSPLcom/artemchep/keyguard/ui/OptionsWindowKt$OptionsButton$3$2;->(Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;)V +Lcom/artemchep/keyguard/ui/OptionsWindowKt$OptionsButton$3$onDismissRequest$1$1; +HSPLcom/artemchep/keyguard/ui/OptionsWindowKt$OptionsButton$3$onDismissRequest$1$1;->(Landroidx/compose/runtime/MutableState;)V +Lcom/artemchep/keyguard/ui/OptionsWindowKt$OptionsButton$4; +HSPLcom/artemchep/keyguard/ui/OptionsWindowKt$OptionsButton$4;->(ZLkotlin/jvm/functions/Function3;II)V +Lcom/artemchep/keyguard/ui/OtherScaffoldKt; +HSPLcom/artemchep/keyguard/ui/OtherScaffoldKt;->OtherScaffold(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/ui/OverlayScope; +Lcom/artemchep/keyguard/ui/PaddingKt; +HSPLcom/artemchep/keyguard/ui/PaddingKt;->minus(Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/PaddingValues;)Landroidx/compose/foundation/layout/PaddingValues; +HSPLcom/artemchep/keyguard/ui/PaddingKt;->plus(Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/PaddingValues;)Landroidx/compose/foundation/layout/PaddingValues; +Lcom/artemchep/keyguard/ui/PaddingKt$minus$1; +HSPLcom/artemchep/keyguard/ui/PaddingKt$minus$1;->(Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/PaddingValues;)V +Lcom/artemchep/keyguard/ui/PaddingKt$plus$1; +HSPLcom/artemchep/keyguard/ui/PaddingKt$plus$1;->(Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/PaddingValues;)V +HSPLcom/artemchep/keyguard/ui/PaddingKt$plus$1;->calculateBottomPadding-D9Ej5fM()F +HSPLcom/artemchep/keyguard/ui/PaddingKt$plus$1;->calculateLeftPadding-u2uoSUM(Landroidx/compose/ui/unit/LayoutDirection;)F +HSPLcom/artemchep/keyguard/ui/PaddingKt$plus$1;->calculateRightPadding-u2uoSUM(Landroidx/compose/ui/unit/LayoutDirection;)F +HSPLcom/artemchep/keyguard/ui/PaddingKt$plus$1;->calculateTopPadding-D9Ej5fM()F +Lcom/artemchep/keyguard/ui/PasswordFilterItemKt; +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt;->()V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt;->Avatar-3IgeMak(Landroidx/compose/ui/Modifier;JLkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt;->FlatItem-ws5HyW4(Landroidx/compose/ui/Modifier;FJLkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Ljava/util/List;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/PaddingValues;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;ZLandroidx/compose/runtime/Composer;III)V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt;->FlatItemLayout-uncuNKo(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/PaddingValues;FJLkotlin/jvm/functions/Function3;Ljava/util/List;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;ZLandroidx/compose/runtime/Composer;III)V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt;->FlatItemLayout_uncuNKo$lambda$11$lambda$7(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt;->FlatItemLayout_uncuNKo$lambda$11$lambda$9(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt;->FlatItemTextContent-uDo3WH8(Landroidx/compose/foundation/layout/ColumnScope;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;JZLandroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt;->getDefaultEmphasisAlpha()F +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt;->getDisabledEmphasisAlpha()F +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt;->getHighEmphasisAlpha()F +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt;->getMediumEmphasisAlpha()F +Lcom/artemchep/keyguard/ui/PasswordFilterItemKt$Avatar$3; +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$Avatar$3;->(Landroidx/compose/ui/Modifier;JLkotlin/jvm/functions/Function3;II)V +Lcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItem$1; +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItem$1;->(Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItem$1;->invoke(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItem$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$1$1; +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$1$1;->(Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;ZLandroidx/compose/foundation/layout/PaddingValues;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;)V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$1$1$2$1; +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$1$1$2$1;->(Landroidx/compose/runtime/State;)V +Lcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$1$1$3$1; +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$1$1$3$1;->(Landroidx/compose/runtime/State;)V +Lcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$1$1$4$1$2; +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$1$1$4$1$2;->(Lkotlin/jvm/functions/Function3;Landroidx/compose/foundation/layout/RowScope;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;)V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$1$1$4$1$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$1$1$4$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$1$1$4$1$2$1; +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$1$1$4$1$2$1;->(Lkotlin/jvm/functions/Function3;Landroidx/compose/foundation/layout/RowScope;)V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$1$1$4$1$2$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$1$1$4$1$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$2; +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$2;->(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/PaddingValues;FJLkotlin/jvm/functions/Function3;Ljava/util/List;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;ZIII)V +Lcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemTextContent$1; +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemTextContent$1;->(Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemTextContent$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemTextContent$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemTextContent$2; +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemTextContent$2;->(Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemTextContent$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemTextContent$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemTextContent$3; +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemTextContent$3;->(Landroidx/compose/foundation/layout/ColumnScope;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;JZII)V +Lcom/artemchep/keyguard/ui/RightClickableKt; +HSPLcom/artemchep/keyguard/ui/RightClickableKt;->rightClickable(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function0;)Landroidx/compose/ui/Modifier; +Lcom/artemchep/keyguard/ui/ScaffoldKt; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt;->()V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt;->DefaultFab-DTcfvLk(Lcom/artemchep/keyguard/ui/FabScope;JJLkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt;->DefaultProgressBar(Lcom/artemchep/keyguard/ui/OverlayScope;Landroidx/compose/ui/Modifier;ZLandroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt;->DefaultSelection(Lcom/artemchep/keyguard/ui/Selection;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt;->ScaffoldLazyColumn-k0_msSU(Landroidx/compose/ui/Modifier;Landroidx/compose/material3/TopAppBarScrollBehavior;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/State;Lkotlin/jvm/functions/Function3;ILandroidx/compose/material/pullrefresh/PullRefreshState;JJLandroidx/compose/foundation/layout/WindowInsets;Lkotlin/jvm/functions/Function3;Landroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/foundation/lazy/LazyListState;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;III)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt;->SmallFab(Lcom/artemchep/keyguard/ui/FabScope;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt;->access$calculatePaddingWithFab(Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/runtime/State;)Landroidx/compose/foundation/layout/PaddingValues; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt;->access$getScreenPaddingTop$p()F +HSPLcom/artemchep/keyguard/ui/ScaffoldKt;->calculatePaddingWithFab(Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/runtime/State;)Landroidx/compose/foundation/layout/PaddingValues; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt;->getScaffoldContentWindowInsets(Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/WindowInsets; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt;->getScreenMaxWidth()F +Lcom/artemchep/keyguard/ui/ScaffoldKt$DefaultFab$1; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$DefaultFab$1;->(JJLcom/artemchep/keyguard/ui/FabScope;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/State;)V +Lcom/artemchep/keyguard/ui/ScaffoldKt$DefaultFab$2; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$DefaultFab$2;->(Lcom/artemchep/keyguard/ui/FabScope;JJLkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;II)V +Lcom/artemchep/keyguard/ui/ScaffoldKt$DefaultProgressBar$1; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$DefaultProgressBar$1;->()V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$DefaultProgressBar$1;->()V +Lcom/artemchep/keyguard/ui/ScaffoldKt$DefaultProgressBar$2; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$DefaultProgressBar$2;->()V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$DefaultProgressBar$2;->()V +Lcom/artemchep/keyguard/ui/ScaffoldKt$DefaultProgressBar$3; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$DefaultProgressBar$3;->(Lcom/artemchep/keyguard/ui/OverlayScope;Landroidx/compose/ui/Modifier;ZII)V +Lcom/artemchep/keyguard/ui/ScaffoldKt$DefaultProgressBar$finalPadding$1$1; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$DefaultProgressBar$finalPadding$1$1;->(Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$DefaultProgressBar$finalPadding$1$1;->invoke()Landroidx/compose/foundation/layout/PaddingValues; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$DefaultProgressBar$finalPadding$1$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$1$1; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$1$1;->(Landroidx/compose/foundation/layout/MutableWindowInsets;Landroidx/compose/foundation/layout/WindowInsets;)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$1$1;->invoke(Landroidx/compose/foundation/layout/WindowInsets;)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$2; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$2;->(Landroidx/compose/material3/TopAppBarScrollBehavior;Landroidx/compose/runtime/State;Lkotlin/jvm/functions/Function3;)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$3; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$3;->(Landroidx/compose/runtime/State;Landroidx/compose/foundation/layout/WindowInsets;Landroidx/compose/foundation/lazy/LazyListState;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/State;Landroidx/compose/foundation/layout/Arrangement$Vertical;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$3;->invoke(Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$3$1; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$3$1;->(Landroidx/compose/runtime/State;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/Arrangement$Vertical;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$3$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$3$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$3$1$1$1; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$3$1$1$1;->(Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$3$1$1$1;->invoke(Landroidx/compose/ui/graphics/GraphicsLayerScope;)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$3$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$3$1$2$1; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$3$1$2$1;->(Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$3$1$2$1;->invoke(Landroidx/compose/foundation/lazy/LazyListScope;)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$3$1$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$4; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$4;->(Landroidx/compose/ui/Modifier;Landroidx/compose/material3/TopAppBarScrollBehavior;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/State;Lkotlin/jvm/functions/Function3;ILandroidx/compose/material/pullrefresh/PullRefreshState;JJLandroidx/compose/foundation/layout/WindowInsets;Lkotlin/jvm/functions/Function3;Landroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/foundation/lazy/LazyListState;Lkotlin/jvm/functions/Function1;III)V +Lcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$translationYState$1$1; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$translationYState$1$1;->(Landroidx/compose/ui/unit/Density;Landroidx/compose/material/pullrefresh/PullRefreshState;)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$translationYState$1$1;->invoke()Ljava/lang/Float; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$translationYState$1$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/ScaffoldKt$SmallFab$1; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$SmallFab$1;->(Landroidx/compose/runtime/State;Lkotlin/jvm/functions/Function2;)V +Lcom/artemchep/keyguard/ui/ScaffoldKt$SmallFab$2; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$SmallFab$2;->(Lcom/artemchep/keyguard/ui/FabScope;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function0;I)V +Lcom/artemchep/keyguard/ui/Selection; +Lcom/artemchep/keyguard/ui/TextItemKt; +HSPLcom/artemchep/keyguard/ui/TextItemKt;->()V +HSPLcom/artemchep/keyguard/ui/TextItemKt;->ConcealedFlatTextField(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;Landroidx/compose/foundation/text/KeyboardOptions;Landroidx/compose/foundation/text/KeyboardActions;ZILandroidx/compose/foundation/interaction/MutableInteractionSource;ZLkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;III)V +HSPLcom/artemchep/keyguard/ui/TextItemKt;->Decoration-KTwxG1Y(JLandroidx/compose/ui/text/TextStyle;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/ui/TextItemKt;->FlatTextField$lambda$4(Landroidx/compose/runtime/MutableState;)Z +HSPLcom/artemchep/keyguard/ui/TextItemKt;->FlatTextField$lambda$5(Landroidx/compose/runtime/MutableState;Z)V +HSPLcom/artemchep/keyguard/ui/TextItemKt;->FlatTextField(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/input/VisualTransformation;Landroidx/compose/foundation/text/KeyboardOptions;Landroidx/compose/foundation/text/KeyboardActions;ZILandroidx/compose/foundation/interaction/MutableInteractionSource;ZLkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;III)V +HSPLcom/artemchep/keyguard/ui/TextItemKt;->FlatTextFieldSurface$lambda$27(Landroidx/compose/runtime/State;)J +HSPLcom/artemchep/keyguard/ui/TextItemKt;->FlatTextFieldSurface(Landroidx/compose/ui/Modifier;ZZLkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/ui/TextItemKt;->PasswordFlatTextField(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;Landroidx/compose/foundation/text/KeyboardOptions;Landroidx/compose/foundation/text/KeyboardActions;ZLkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;III)V +HSPLcom/artemchep/keyguard/ui/TextItemKt;->PlainTextField(Ljava/lang/String;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Ljava/lang/String;ZZLandroidx/compose/ui/text/TextStyle;Lkotlin/jvm/functions/Function2;ZLandroidx/compose/ui/text/input/VisualTransformation;Landroidx/compose/foundation/text/KeyboardOptions;Landroidx/compose/foundation/text/KeyboardActions;ZILandroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/runtime/Composer;III)V +HSPLcom/artemchep/keyguard/ui/TextItemKt;->PlainTextFieldDecorationBox$lambda$15(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/TextItemKt;->PlainTextFieldDecorationBox(Landroidx/compose/ui/Modifier;Ljava/lang/String;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Landroidx/compose/ui/text/input/VisualTransformation;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/ui/TextItemKt;->access$Decoration-KTwxG1Y(JLandroidx/compose/ui/text/TextStyle;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/ui/TextItemKt;->access$FlatTextField$lambda$4(Landroidx/compose/runtime/MutableState;)Z +HSPLcom/artemchep/keyguard/ui/TextItemKt;->access$FlatTextField$lambda$5(Landroidx/compose/runtime/MutableState;Z)V +HSPLcom/artemchep/keyguard/ui/TextItemKt;->access$FlatTextFieldSurface(Landroidx/compose/ui/Modifier;ZZLkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/ui/TextItemKt;->access$PlainTextFieldDecorationBox$lambda$15(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/TextItemKt;->access$PlainTextFieldDecorationBox(Landroidx/compose/ui/Modifier;Ljava/lang/String;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Landroidx/compose/ui/text/input/VisualTransformation;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/ui/TextItemKt$ConcealedFlatTextField$2; +HSPLcom/artemchep/keyguard/ui/TextItemKt$ConcealedFlatTextField$2;->(Lcom/artemchep/keyguard/feature/auth/common/VisibilityState;Lkotlin/jvm/functions/Function3;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$ConcealedFlatTextField$2;->invoke(Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$ConcealedFlatTextField$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/TextItemKt$ConcealedFlatTextField$3; +HSPLcom/artemchep/keyguard/ui/TextItemKt$ConcealedFlatTextField$3;->(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;Landroidx/compose/foundation/text/KeyboardOptions;Landroidx/compose/foundation/text/KeyboardActions;ZILandroidx/compose/foundation/interaction/MutableInteractionSource;ZLkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;III)V +Lcom/artemchep/keyguard/ui/TextItemKt$Decoration$contentWithColor$1; +HSPLcom/artemchep/keyguard/ui/TextItemKt$Decoration$contentWithColor$1;->(JLkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$Decoration$contentWithColor$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$Decoration$contentWithColor$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$2$1; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$2$1;->(Landroidx/compose/runtime/MutableState;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$2$1;->invoke(Landroidx/compose/ui/focus/FocusState;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3;->(Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Ljava/lang/String;ZLjava/lang/String;Landroidx/compose/ui/Modifier;Lcom/artemchep/keyguard/ui/focus/FocusRequester2;Landroidx/compose/ui/Modifier;Ljava/lang/String;ZLandroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/input/VisualTransformation;Landroidx/compose/foundation/text/KeyboardOptions;Landroidx/compose/foundation/text/KeyboardActions;ZILandroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/runtime/MutableState;Lkotlin/jvm/functions/Function3;Z)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3;->invoke$lambda$20$lambda$15$lambda$11$lambda$9$lambda$2(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3;->invoke$lambda$20$lambda$15$lambda$11$lambda$9$lambda$3(Landroidx/compose/runtime/State;)J +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3;->invoke$lambda$20$lambda$15$lambda$11$lambda$9$lambda$4(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3;->invoke$lambda$20$lambda$15$lambda$11$lambda$9$lambda$7(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3;->invoke$lambda$20$lambda$18(Landroidx/compose/runtime/State;)Lcom/artemchep/keyguard/ui/Afh; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$1$1; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$1$1;->(Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$1$1;->invoke(Landroidx/compose/ui/graphics/GraphicsLayerScope;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$3$1$1$1; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$3$1$1$1;->(Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$3$1$1$1;->invoke(Landroidx/compose/ui/graphics/GraphicsLayerScope;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$3$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$3$1$3; +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$3$1$4$1; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$3$1$4$1;->(Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$3$1$4$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$3$1$4$1;->invoke(Ljava/lang/String;)V +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$4$1; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$4$1;->(Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$4$1;->invoke(Landroidx/compose/ui/graphics/GraphicsLayerScope;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$4$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$7; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$7;->(Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;Lcom/artemchep/keyguard/ui/focus/FocusRequester2;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$7;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$7;->invoke(Lkotlin/Unit;Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$7$1$1; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$7$1$1;->(Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;Lcom/artemchep/keyguard/ui/focus/FocusRequester2;)V +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$3; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$3;->(Landroidx/compose/runtime/State;Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;)V +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$options$2$1; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$options$2$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$options$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$options$2$1;->invoke(Ljava/lang/String;Lkotlinx/collections/immutable/ImmutableList;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$options$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$options$2$1$filteredOptions$1; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$options$2$1$filteredOptions$1;->(Ljava/lang/String;)V +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$options$2$optionsFlow$1; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$options$2$optionsFlow$1;->(Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$options$2$optionsFlow$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$options$2$optionsFlow$1;->invoke()Lkotlinx/collections/immutable/ImmutableList; +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$options$2$valueFlow$1; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$options$2$valueFlow$1;->(Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$options$2$valueFlow$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$options$2$valueFlow$1;->invoke()Ljava/lang/String; +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$invoke$lambda$20$lambda$17$$inlined$map$1; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$invoke$lambda$20$lambda$17$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$invoke$lambda$20$lambda$17$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$invoke$lambda$20$lambda$17$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$invoke$lambda$20$lambda$17$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$invoke$lambda$20$lambda$17$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$invoke$lambda$20$lambda$17$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$invoke$lambda$20$lambda$17$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$invoke$lambda$20$lambda$17$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$4; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$4;->(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/input/VisualTransformation;Landroidx/compose/foundation/text/KeyboardOptions;Landroidx/compose/foundation/text/KeyboardActions;ZILandroidx/compose/foundation/interaction/MutableInteractionSource;ZLkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;III)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$4;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$4;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextFieldSurface$1; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextFieldSurface$1;->(Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextFieldSurface$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextFieldSurface$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextFieldSurface$2; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextFieldSurface$2;->(Landroidx/compose/ui/Modifier;ZZLkotlin/jvm/functions/Function2;II)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextFieldSurface$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextFieldSurface$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/TextItemKt$PlainTextField$2; +HSPLcom/artemchep/keyguard/ui/TextItemKt$PlainTextField$2;->(Landroidx/compose/ui/Modifier;Ljava/lang/String;Lkotlin/jvm/functions/Function2;Landroidx/compose/ui/text/input/VisualTransformation;Landroidx/compose/foundation/interaction/MutableInteractionSource;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$PlainTextField$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/TextItemKt$PlainTextField$2;->invoke(Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/ui/TextItemKt$PlainTextField$3; +HSPLcom/artemchep/keyguard/ui/TextItemKt$PlainTextField$3;->(Ljava/lang/String;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Ljava/lang/String;ZZLandroidx/compose/ui/text/TextStyle;Lkotlin/jvm/functions/Function2;ZLandroidx/compose/ui/text/input/VisualTransformation;Landroidx/compose/foundation/text/KeyboardOptions;Landroidx/compose/foundation/text/KeyboardActions;ZILandroidx/compose/foundation/interaction/MutableInteractionSource;III)V +Lcom/artemchep/keyguard/ui/TextItemKt$PlainTextFieldDecorationBox$3; +HSPLcom/artemchep/keyguard/ui/TextItemKt$PlainTextFieldDecorationBox$3;->(Landroidx/compose/ui/Modifier;Ljava/lang/String;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Landroidx/compose/ui/text/input/VisualTransformation;Landroidx/compose/foundation/interaction/MutableInteractionSource;II)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$PlainTextFieldDecorationBox$3;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$PlainTextFieldDecorationBox$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/TextItemKt$PlainTextFieldDecorationBox$decoratedPlaceholder$1; +PLcom/artemchep/keyguard/ui/TextItemKt$PlainTextFieldDecorationBox$decoratedPlaceholder$1;->(Landroidx/compose/runtime/State;Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$PlainTextFieldDecorationBox$decoratedPlaceholder$1;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$PlainTextFieldDecorationBox$decoratedPlaceholder$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/TextItemKt$PlainTextFieldDecorationBox$placeholderOpacity$2; +HSPLcom/artemchep/keyguard/ui/TextItemKt$PlainTextFieldDecorationBox$placeholderOpacity$2;->()V +HSPLcom/artemchep/keyguard/ui/TextItemKt$PlainTextFieldDecorationBox$placeholderOpacity$2;->()V +HSPLcom/artemchep/keyguard/ui/TextItemKt$PlainTextFieldDecorationBox$placeholderOpacity$2;->invoke(Landroidx/compose/animation/core/Transition$Segment;Landroidx/compose/runtime/Composer;I)Landroidx/compose/animation/core/FiniteAnimationSpec; +HSPLcom/artemchep/keyguard/ui/TextItemKt$PlainTextFieldDecorationBox$placeholderOpacity$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/TextItemKt$WhenMappings; +HSPLcom/artemchep/keyguard/ui/TextItemKt$WhenMappings;->()V +Lcom/artemchep/keyguard/ui/ToastComposableKt; +HSPLcom/artemchep/keyguard/ui/ToastComposableKt;->()V +HSPLcom/artemchep/keyguard/ui/ToastComposableKt;->ToastMessageHost$lambda$1(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/MessageHub; +HSPLcom/artemchep/keyguard/ui/ToastComposableKt;->ToastMessageHost$lambda$2(Landroidx/compose/runtime/State;)Ljava/util/List; +HSPLcom/artemchep/keyguard/ui/ToastComposableKt;->ToastMessageHost(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/ui/ToastComposableKt;->access$ToastMessageHost$lambda$1(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/MessageHub; +Lcom/artemchep/keyguard/ui/ToastComposableKt$ToastMessageHost$$inlined$rememberInstance$1; +HSPLcom/artemchep/keyguard/ui/ToastComposableKt$ToastMessageHost$$inlined$rememberInstance$1;->()V +Lcom/artemchep/keyguard/ui/ToastComposableKt$ToastMessageHost$1; +HSPLcom/artemchep/keyguard/ui/ToastComposableKt$ToastMessageHost$1;->(Ljava/lang/String;Lkotlin/Lazy;Lkotlinx/coroutines/flow/MutableStateFlow;Lkotlinx/coroutines/CoroutineScope;)V +HSPLcom/artemchep/keyguard/ui/ToastComposableKt$ToastMessageHost$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLcom/artemchep/keyguard/ui/ToastComposableKt$ToastMessageHost$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/ToastComposableKt$ToastMessageHost$1$invoke$$inlined$onDispose$1; +HSPLcom/artemchep/keyguard/ui/ToastComposableKt$ToastMessageHost$1$invoke$$inlined$onDispose$1;->(Lkotlin/jvm/functions/Function0;)V +Lcom/artemchep/keyguard/ui/ToastComposableKt$ToastMessageHost$1$unregister$1; +HSPLcom/artemchep/keyguard/ui/ToastComposableKt$ToastMessageHost$1$unregister$1;->(Lkotlinx/coroutines/flow/MutableStateFlow;Lkotlinx/coroutines/CoroutineScope;)V +Lcom/artemchep/keyguard/ui/ToastComposableKt$ToastMessageHost$3; +HSPLcom/artemchep/keyguard/ui/ToastComposableKt$ToastMessageHost$3;->(Landroidx/compose/ui/Modifier;II)V +Lcom/artemchep/keyguard/ui/focus/BringIntoViewKt; +HSPLcom/artemchep/keyguard/ui/focus/BringIntoViewKt;->bringIntoView(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier; +Lcom/artemchep/keyguard/ui/focus/BringIntoViewKt$bringIntoView$1; +HSPLcom/artemchep/keyguard/ui/focus/BringIntoViewKt$bringIntoView$1;->()V +HSPLcom/artemchep/keyguard/ui/focus/BringIntoViewKt$bringIntoView$1;->()V +HSPLcom/artemchep/keyguard/ui/focus/BringIntoViewKt$bringIntoView$1;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLcom/artemchep/keyguard/ui/focus/BringIntoViewKt$bringIntoView$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/focus/BringIntoViewKt$bringIntoView$1$1; +HSPLcom/artemchep/keyguard/ui/focus/BringIntoViewKt$bringIntoView$1$1;->(Landroidx/compose/runtime/MutableState;Lkotlinx/coroutines/CoroutineScope;Landroidx/compose/foundation/relocation/BringIntoViewRequester;)V +HSPLcom/artemchep/keyguard/ui/focus/BringIntoViewKt$bringIntoView$1$1;->invoke(Landroidx/compose/ui/focus/FocusState;)V +HSPLcom/artemchep/keyguard/ui/focus/BringIntoViewKt$bringIntoView$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/focus/BringIntoViewKt$bringIntoView$1$1$1; +HSPLcom/artemchep/keyguard/ui/focus/BringIntoViewKt$bringIntoView$1$1$1;->(Landroidx/compose/foundation/relocation/BringIntoViewRequester;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/ui/focus/BringIntoViewKt$bringIntoView$1$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/ui/focus/BringIntoViewKt$bringIntoView$1$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/focus/FocusEvent; +HSPLcom/artemchep/keyguard/ui/focus/FocusEvent;->()V +HSPLcom/artemchep/keyguard/ui/focus/FocusEvent;->(Z)V +Lcom/artemchep/keyguard/ui/focus/FocusRequester2; +HSPLcom/artemchep/keyguard/ui/focus/FocusRequester2;->()V +HSPLcom/artemchep/keyguard/ui/focus/FocusRequester2;->()V +HSPLcom/artemchep/keyguard/ui/focus/FocusRequester2;->getOnRequestFocusFlow()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/ui/focus/FocusRequester2;->requestFocus$default(Lcom/artemchep/keyguard/ui/focus/FocusRequester2;ZILjava/lang/Object;)V +HSPLcom/artemchep/keyguard/ui/focus/FocusRequester2;->requestFocus(Z)V +Lcom/artemchep/keyguard/ui/focus/FocusRequesterKt; +HSPLcom/artemchep/keyguard/ui/focus/FocusRequesterKt;->focusRequester2(Landroidx/compose/ui/Modifier;Lcom/artemchep/keyguard/ui/focus/FocusRequester2;)Landroidx/compose/ui/Modifier; +Lcom/artemchep/keyguard/ui/focus/FocusRequesterKt$focusRequester2$1; +HSPLcom/artemchep/keyguard/ui/focus/FocusRequesterKt$focusRequester2$1;->(Lcom/artemchep/keyguard/ui/focus/FocusRequester2;)V +HSPLcom/artemchep/keyguard/ui/focus/FocusRequesterKt$focusRequester2$1;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLcom/artemchep/keyguard/ui/focus/FocusRequesterKt$focusRequester2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/focus/FocusRequesterKt$focusRequester2$1$1$1; +HSPLcom/artemchep/keyguard/ui/focus/FocusRequesterKt$focusRequester2$1$1$1;->(Landroidx/compose/runtime/MutableState;Landroidx/compose/ui/platform/SoftwareKeyboardController;Landroidx/compose/ui/focus/FocusRequester;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/ui/focus/FocusRequesterKt$focusRequester2$1$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/ui/focus/FocusRequesterKt$focusRequester2$1$1$1;->invoke(Lcom/artemchep/keyguard/ui/focus/FocusEvent;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/focus/FocusRequesterKt$focusRequester2$1$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/focus/FocusRequesterKt$focusRequester2$1$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/focus/FocusRequesterKt$focusRequester2$1$2$1; +HSPLcom/artemchep/keyguard/ui/focus/FocusRequesterKt$focusRequester2$1$2$1;->(Landroidx/compose/runtime/MutableState;)V +HSPLcom/artemchep/keyguard/ui/focus/FocusRequesterKt$focusRequester2$1$2$1;->invoke(Landroidx/compose/ui/focus/FocusState;)V +HSPLcom/artemchep/keyguard/ui/focus/FocusRequesterKt$focusRequester2$1$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/icons/ChevronIconKt; +HSPLcom/artemchep/keyguard/ui/icons/ChevronIconKt;->ChevronIcon-iJQMabo(Landroidx/compose/ui/Modifier;JLandroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/ui/icons/ChevronIconKt$ChevronIcon$1; +HSPLcom/artemchep/keyguard/ui/icons/ChevronIconKt$ChevronIcon$1;->(Landroidx/compose/ui/Modifier;JII)V +Lcom/artemchep/keyguard/ui/icons/ComposableSingletons$VisibilityIconKt; +HSPLcom/artemchep/keyguard/ui/icons/ComposableSingletons$VisibilityIconKt;->()V +HSPLcom/artemchep/keyguard/ui/icons/ComposableSingletons$VisibilityIconKt;->()V +HSPLcom/artemchep/keyguard/ui/icons/ComposableSingletons$VisibilityIconKt;->getLambda-1$common_noneRelease()Lkotlin/jvm/functions/Function3; +Lcom/artemchep/keyguard/ui/icons/ComposableSingletons$VisibilityIconKt$lambda-1$1; +HSPLcom/artemchep/keyguard/ui/icons/ComposableSingletons$VisibilityIconKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/ui/icons/ComposableSingletons$VisibilityIconKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/ui/icons/ComposableSingletons$VisibilityIconKt$lambda-1$1;->invoke(Landroidx/compose/ui/graphics/vector/ImageVector;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/icons/ComposableSingletons$VisibilityIconKt$lambda-1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/icons/IconBoxKt; +HSPLcom/artemchep/keyguard/ui/icons/IconBoxKt;->IconBox(Landroidx/compose/ui/graphics/vector/ImageVector;Landroidx/compose/ui/graphics/vector/ImageVector;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/ui/icons/IconBoxKt$IconBox$1; +HSPLcom/artemchep/keyguard/ui/icons/IconBoxKt$IconBox$1;->()V +HSPLcom/artemchep/keyguard/ui/icons/IconBoxKt$IconBox$1;->()V +Lcom/artemchep/keyguard/ui/icons/IconBoxKt$IconBox$2; +HSPLcom/artemchep/keyguard/ui/icons/IconBoxKt$IconBox$2;->()V +HSPLcom/artemchep/keyguard/ui/icons/IconBoxKt$IconBox$2;->()V +Lcom/artemchep/keyguard/ui/icons/IconBoxKt$icon$1; +HSPLcom/artemchep/keyguard/ui/icons/IconBoxKt$icon$1;->(Landroidx/compose/ui/graphics/vector/ImageVector;Landroidx/compose/ui/graphics/vector/ImageVector;)V +Lcom/artemchep/keyguard/ui/icons/IconsKt; +HSPLcom/artemchep/keyguard/ui/icons/IconsKt;->()V +HSPLcom/artemchep/keyguard/ui/icons/IconsKt;->getKeyguardAttachment(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +HSPLcom/artemchep/keyguard/ui/icons/IconsKt;->getKeyguardNote(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +HSPLcom/artemchep/keyguard/ui/icons/IconsKt;->getKeyguardTwoFa(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Lcom/artemchep/keyguard/ui/icons/VisibilityIconKt; +HSPLcom/artemchep/keyguard/ui/icons/VisibilityIconKt;->VisibilityIcon(Landroidx/compose/ui/Modifier;ZLandroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/ui/pulltosearch/PullToSearchKt; +HSPLcom/artemchep/keyguard/ui/pulltosearch/PullToSearchKt;->PullToSearch$lambda$4$lambda$1(Landroidx/compose/runtime/State;)Z +HSPLcom/artemchep/keyguard/ui/pulltosearch/PullToSearchKt;->PullToSearch$lambda$4$lambda$3$lambda$2(Landroidx/compose/runtime/State;)J +HSPLcom/artemchep/keyguard/ui/pulltosearch/PullToSearchKt;->PullToSearch(Landroidx/compose/ui/Modifier;Landroidx/compose/material/pullrefresh/PullRefreshState;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/ui/pulltosearch/PullToSearchKt$PullToSearch$1$1; +HSPLcom/artemchep/keyguard/ui/pulltosearch/PullToSearchKt$PullToSearch$1$1;->(Landroidx/compose/material/pullrefresh/PullRefreshState;)V +HSPLcom/artemchep/keyguard/ui/pulltosearch/PullToSearchKt$PullToSearch$1$1;->invoke(Landroidx/compose/ui/graphics/GraphicsLayerScope;)V +HSPLcom/artemchep/keyguard/ui/pulltosearch/PullToSearchKt$PullToSearch$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/pulltosearch/PullToSearchKt$PullToSearch$1$willSearch$2$1; +HSPLcom/artemchep/keyguard/ui/pulltosearch/PullToSearchKt$PullToSearch$1$willSearch$2$1;->(Landroidx/compose/material/pullrefresh/PullRefreshState;)V +HSPLcom/artemchep/keyguard/ui/pulltosearch/PullToSearchKt$PullToSearch$1$willSearch$2$1;->invoke()Ljava/lang/Boolean; +HSPLcom/artemchep/keyguard/ui/pulltosearch/PullToSearchKt$PullToSearch$1$willSearch$2$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/pulltosearch/PullToSearchKt$PullToSearch$2; +HSPLcom/artemchep/keyguard/ui/pulltosearch/PullToSearchKt$PullToSearch$2;->(Landroidx/compose/ui/Modifier;Landroidx/compose/material/pullrefresh/PullRefreshState;II)V +Lcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->InternalLazyColumnScrollbar-pAIm_bA(Landroidx/compose/foundation/lazy/LazyListState;ZFFFJJLandroidx/compose/ui/graphics/Shape;Lcom/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode;Lkotlin/jvm/functions/Function4;Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/runtime/Composer;III)V +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->InternalLazyColumnScrollbar_pAIm_bA$fractionHiddenTop(Landroidx/compose/foundation/lazy/LazyListItemInfo;)F +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->InternalLazyColumnScrollbar_pAIm_bA$fractionVisibleBottom(Landroidx/compose/foundation/lazy/LazyListItemInfo;I)F +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->InternalLazyColumnScrollbar_pAIm_bA$lambda$11(Landroidx/compose/runtime/State;)Landroidx/compose/foundation/lazy/LazyListItemInfo; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->InternalLazyColumnScrollbar_pAIm_bA$lambda$13(Landroidx/compose/runtime/State;)Z +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->InternalLazyColumnScrollbar_pAIm_bA$lambda$15(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->InternalLazyColumnScrollbar_pAIm_bA$lambda$17(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->InternalLazyColumnScrollbar_pAIm_bA$lambda$19(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->InternalLazyColumnScrollbar_pAIm_bA$lambda$20(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->InternalLazyColumnScrollbar_pAIm_bA$lambda$21(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->InternalLazyColumnScrollbar_pAIm_bA$lambda$3(Landroidx/compose/runtime/MutableState;)Z +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->InternalLazyColumnScrollbar_pAIm_bA$lambda$9(Landroidx/compose/runtime/State;)Z +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->InternalLazyColumnScrollbar_pAIm_bA$offsetCorrection(FLandroidx/compose/runtime/State;Landroidx/compose/runtime/State;F)F +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->LazyColumnScrollbar-lnVutNI(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/LazyListState;ZFFFJJLandroidx/compose/ui/graphics/Shape;Lcom/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode;ZLkotlin/jvm/functions/Function4;Landroidx/compose/foundation/layout/PaddingValues;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;III)V +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->access$InternalLazyColumnScrollbar_pAIm_bA$fractionHiddenTop(Landroidx/compose/foundation/lazy/LazyListItemInfo;)F +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->access$InternalLazyColumnScrollbar_pAIm_bA$fractionVisibleBottom(Landroidx/compose/foundation/lazy/LazyListItemInfo;I)F +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->access$InternalLazyColumnScrollbar_pAIm_bA$lambda$11(Landroidx/compose/runtime/State;)Landroidx/compose/foundation/lazy/LazyListItemInfo; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->access$InternalLazyColumnScrollbar_pAIm_bA$lambda$13(Landroidx/compose/runtime/State;)Z +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->access$InternalLazyColumnScrollbar_pAIm_bA$lambda$15(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->access$InternalLazyColumnScrollbar_pAIm_bA$lambda$17(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->access$InternalLazyColumnScrollbar_pAIm_bA$lambda$19(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->access$InternalLazyColumnScrollbar_pAIm_bA$lambda$21(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->access$InternalLazyColumnScrollbar_pAIm_bA$lambda$3(Landroidx/compose/runtime/MutableState;)Z +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->access$InternalLazyColumnScrollbar_pAIm_bA$offsetCorrection(FLandroidx/compose/runtime/State;Landroidx/compose/runtime/State;F)F +Lcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$1; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$1;->(Lkotlin/jvm/functions/Function4;ZLcom/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode;Landroidx/compose/runtime/MutableState;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/MutableState;Landroidx/compose/foundation/lazy/LazyListState;Lkotlinx/coroutines/CoroutineScope;Landroidx/compose/runtime/State;FLandroidx/compose/runtime/State;Landroidx/compose/runtime/State;FFLandroidx/compose/ui/graphics/Shape;JJ)V +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$1;->invoke(Landroidx/compose/foundation/layout/BoxWithConstraintsScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$1$3; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$1$3;->(Landroidx/compose/foundation/layout/BoxWithConstraintsScope;Landroidx/compose/runtime/State;Landroidx/compose/runtime/MutableState;Landroidx/compose/runtime/MutableState;Landroidx/compose/foundation/lazy/LazyListState;Lkotlinx/coroutines/CoroutineScope;Landroidx/compose/runtime/State;FLandroidx/compose/runtime/State;Landroidx/compose/runtime/State;)V +Lcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$1$4; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$1$4;->(Landroidx/compose/foundation/layout/BoxWithConstraintsScope;Lcom/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/MutableState;Landroidx/compose/foundation/lazy/LazyListState;Lkotlinx/coroutines/CoroutineScope;FLandroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/MutableState;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$1$5$1; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$1$5$1;->(Landroidx/compose/runtime/MutableState;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$1$7; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$1$7;->(FFLandroidx/compose/ui/graphics/Shape;JJLandroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/MutableState;)V +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$1$7;->invoke$lambda$0(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$1$7;->invoke(Landroidx/compose/foundation/layout/BoxWithConstraintsScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$1$7;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$2; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$2;->(Landroidx/compose/foundation/lazy/LazyListState;ZFFFJJLandroidx/compose/ui/graphics/Shape;Lcom/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode;Lkotlin/jvm/functions/Function4;Landroidx/compose/foundation/layout/PaddingValues;III)V +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$firstVisibleItemIndex$1$1; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$firstVisibleItemIndex$1$1;->(Landroidx/compose/foundation/lazy/LazyListState;)V +Lcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$isStickyHeaderInAction$2$1; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$isStickyHeaderInAction$2$1;->(Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$isStickyHeaderInAction$2$1;->invoke()Ljava/lang/Boolean; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$isStickyHeaderInAction$2$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$normalizedOffsetPosition$2$1; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$normalizedOffsetPosition$2$1;->(Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/runtime/State;FLandroidx/compose/runtime/State;Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$normalizedOffsetPosition$2$1;->invoke()Ljava/lang/Float; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$normalizedOffsetPosition$2$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$normalizedThumbSize$2$1; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$normalizedThumbSize$2$1;->(FLandroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$normalizedThumbSize$2$1;->invoke()Ljava/lang/Float; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$normalizedThumbSize$2$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$normalizedThumbSizeReal$2$1; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$normalizedThumbSizeReal$2$1;->(Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$normalizedThumbSizeReal$2$1;->invoke()Ljava/lang/Float; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$normalizedThumbSizeReal$2$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$realFirstVisibleItem$2$1; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$realFirstVisibleItem$2$1;->(Landroidx/compose/foundation/lazy/LazyListState;)V +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$realFirstVisibleItem$2$1;->invoke()Landroidx/compose/foundation/lazy/LazyListItemInfo; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$realFirstVisibleItem$2$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$reverseLayout$2$1; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$reverseLayout$2$1;->(Landroidx/compose/foundation/lazy/LazyListState;)V +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$reverseLayout$2$1;->invoke()Ljava/lang/Boolean; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$reverseLayout$2$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$LazyColumnScrollbar$2; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$LazyColumnScrollbar$2;->(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/LazyListState;ZFFFJJLandroidx/compose/ui/graphics/Shape;Lcom/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode;ZLkotlin/jvm/functions/Function4;Landroidx/compose/foundation/layout/PaddingValues;Lkotlin/jvm/functions/Function2;III)V +Lcom/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode; +HSPLcom/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode;->$values()[Lcom/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode; +HSPLcom/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode;->()V +HSPLcom/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode;->(Ljava/lang/String;I)V +Lcom/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode$Companion; +HSPLcom/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode$Companion;->()V +HSPLcom/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode$Companion;->getDefault(Landroidx/compose/runtime/Composer;I)Lcom/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode; +Lcom/artemchep/keyguard/ui/selection/SelectionHandle; +Lcom/artemchep/keyguard/ui/selection/SelectionUtilKt; +HSPLcom/artemchep/keyguard/ui/selection/SelectionUtilKt;->selectionHandle(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Ljava/lang/String;)Lcom/artemchep/keyguard/ui/selection/SelectionHandle; +Lcom/artemchep/keyguard/ui/selection/SelectionUtilKt$selectionHandle$$inlined$map$1; +HSPLcom/artemchep/keyguard/ui/selection/SelectionUtilKt$selectionHandle$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +Lcom/artemchep/keyguard/ui/selection/SelectionUtilKt$selectionHandle$2; +HSPLcom/artemchep/keyguard/ui/selection/SelectionUtilKt$selectionHandle$2;->(Lkotlinx/coroutines/flow/MutableStateFlow;)V +Lcom/artemchep/keyguard/ui/selection/SelectionUtilKt$selectionHandle$3; +HSPLcom/artemchep/keyguard/ui/selection/SelectionUtilKt$selectionHandle$3;->(Lkotlinx/coroutines/flow/MutableStateFlow;)V +HSPLcom/artemchep/keyguard/ui/selection/SelectionUtilKt$selectionHandle$3;->getIdsFlow()Lkotlinx/coroutines/flow/StateFlow; +Lcom/artemchep/keyguard/ui/selection/SelectionUtilKt$selectionHandle$itemIdsSink$1; +HSPLcom/artemchep/keyguard/ui/selection/SelectionUtilKt$selectionHandle$itemIdsSink$1;->()V +HSPLcom/artemchep/keyguard/ui/selection/SelectionUtilKt$selectionHandle$itemIdsSink$1;->()V +HSPLcom/artemchep/keyguard/ui/selection/SelectionUtilKt$selectionHandle$itemIdsSink$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/selection/SelectionUtilKt$selectionHandle$itemIdsSink$1;->invoke()Ljava/util/Set; +Lcom/artemchep/keyguard/ui/shimmer/RememberShimmerBoundsWindowKt; +HSPLcom/artemchep/keyguard/ui/shimmer/RememberShimmerBoundsWindowKt;->rememberShimmerBoundsWindow(Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/geometry/Rect; +Lcom/artemchep/keyguard/ui/shimmer/RememberShimmerEffectKt; +HSPLcom/artemchep/keyguard/ui/shimmer/RememberShimmerEffectKt;->rememberShimmerEffect(Lcom/artemchep/keyguard/ui/shimmer/ShimmerTheme;Landroidx/compose/runtime/Composer;I)Lcom/artemchep/keyguard/ui/shimmer/ShimmerEffect; +Lcom/artemchep/keyguard/ui/shimmer/RememberShimmerEffectKt$rememberShimmerEffect$1; +HSPLcom/artemchep/keyguard/ui/shimmer/RememberShimmerEffectKt$rememberShimmerEffect$1;->(Lcom/artemchep/keyguard/ui/shimmer/ShimmerEffect;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/ui/shimmer/RememberShimmerEffectKt$rememberShimmerEffect$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/ui/shimmer/RememberShimmerEffectKt$rememberShimmerEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/shimmer/RememberShimmerKt; +HSPLcom/artemchep/keyguard/ui/shimmer/RememberShimmerKt;->rememberShimmer(Lcom/artemchep/keyguard/ui/shimmer/ShimmerBounds;Lcom/artemchep/keyguard/ui/shimmer/ShimmerTheme;Landroidx/compose/runtime/Composer;II)Lcom/artemchep/keyguard/ui/shimmer/Shimmer; +Lcom/artemchep/keyguard/ui/shimmer/Shimmer; +HSPLcom/artemchep/keyguard/ui/shimmer/Shimmer;->()V +HSPLcom/artemchep/keyguard/ui/shimmer/Shimmer;->(Lcom/artemchep/keyguard/ui/shimmer/ShimmerTheme;Lcom/artemchep/keyguard/ui/shimmer/ShimmerEffect;Landroidx/compose/ui/geometry/Rect;)V +HSPLcom/artemchep/keyguard/ui/shimmer/Shimmer;->getBoundsFlow$common_noneRelease()Lkotlinx/coroutines/flow/MutableStateFlow; +HSPLcom/artemchep/keyguard/ui/shimmer/Shimmer;->getEffect$common_noneRelease()Lcom/artemchep/keyguard/ui/shimmer/ShimmerEffect; +HSPLcom/artemchep/keyguard/ui/shimmer/Shimmer;->getTheme$common_noneRelease()Lcom/artemchep/keyguard/ui/shimmer/ShimmerTheme; +Lcom/artemchep/keyguard/ui/shimmer/ShimmerArea; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerArea;->()V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerArea;->(FF)V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerArea;->computeShimmerBounds()V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerArea;->computeTranslationDistance()V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerArea;->getPivotPoint-F1C5BW0()J +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerArea;->getShimmerBounds()Landroidx/compose/ui/geometry/Rect; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerArea;->getTranslationDistance()F +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerArea;->getViewBounds()Landroidx/compose/ui/geometry/Rect; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerArea;->reduceRotation(F)F +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerArea;->setViewBounds(Landroidx/compose/ui/geometry/Rect;)V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerArea;->toRadian(F)F +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerArea;->updateBounds(Landroidx/compose/ui/geometry/Rect;)V +Lcom/artemchep/keyguard/ui/shimmer/ShimmerBounds; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerBounds;->()V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerBounds;->()V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerBounds;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/ui/shimmer/ShimmerBounds$Custom; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerBounds$Custom;->()V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerBounds$Custom;->()V +Lcom/artemchep/keyguard/ui/shimmer/ShimmerBounds$View; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerBounds$View;->()V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerBounds$View;->()V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerBounds$View;->equals(Ljava/lang/Object;)Z +Lcom/artemchep/keyguard/ui/shimmer/ShimmerBounds$Window; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerBounds$Window;->()V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerBounds$Window;->()V +Lcom/artemchep/keyguard/ui/shimmer/ShimmerBoundsKt; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerBoundsKt;->rememberShimmerBounds(Lcom/artemchep/keyguard/ui/shimmer/ShimmerBounds;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/geometry/Rect; +Lcom/artemchep/keyguard/ui/shimmer/ShimmerEffect; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerEffect;->()V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerEffect;->(Landroidx/compose/animation/core/AnimationSpec;IFLjava/util/List;Ljava/util/List;F)V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerEffect;->(Landroidx/compose/animation/core/AnimationSpec;IFLjava/util/List;Ljava/util/List;FLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerEffect;->draw(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;Lcom/artemchep/keyguard/ui/shimmer/ShimmerArea;)V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerEffect;->startAnimation$common_noneRelease(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/shimmer/ShimmerKt; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerKt;->shimmer$default(Landroidx/compose/ui/Modifier;Lcom/artemchep/keyguard/ui/shimmer/Shimmer;ILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerKt;->shimmer(Landroidx/compose/ui/Modifier;Lcom/artemchep/keyguard/ui/shimmer/Shimmer;)Landroidx/compose/ui/Modifier; +Lcom/artemchep/keyguard/ui/shimmer/ShimmerKt$shimmer$2; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerKt$shimmer$2;->(Lcom/artemchep/keyguard/ui/shimmer/Shimmer;)V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerKt$shimmer$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerKt$shimmer$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/shimmer/ShimmerKt$shimmer$2$1; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerKt$shimmer$2$1;->(Lcom/artemchep/keyguard/ui/shimmer/Shimmer;Lcom/artemchep/keyguard/ui/shimmer/ShimmerArea;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerKt$shimmer$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerKt$shimmer$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/shimmer/ShimmerKt$shimmer$2$1$1; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerKt$shimmer$2$1$1;->(Lcom/artemchep/keyguard/ui/shimmer/ShimmerArea;)V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerKt$shimmer$2$1$1;->emit(Landroidx/compose/ui/geometry/Rect;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerKt$shimmer$2$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/shimmer/ShimmerModifier; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerModifier;->()V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerModifier;->(Lcom/artemchep/keyguard/ui/shimmer/ShimmerArea;Lcom/artemchep/keyguard/ui/shimmer/ShimmerEffect;)V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerModifier;->draw(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerModifier;->onGloballyPositioned(Landroidx/compose/ui/layout/LayoutCoordinates;)V +Lcom/artemchep/keyguard/ui/shimmer/ShimmerTheme; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerTheme;->()V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerTheme;->(Landroidx/compose/animation/core/AnimationSpec;IFLjava/util/List;Ljava/util/List;F)V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerTheme;->(Landroidx/compose/animation/core/AnimationSpec;IFLjava/util/List;Ljava/util/List;FLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerTheme;->getAnimationSpec()Landroidx/compose/animation/core/AnimationSpec; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerTheme;->getBlendMode-0nO6VwU()I +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerTheme;->getRotation()F +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerTheme;->getShaderColorStops()Ljava/util/List; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerTheme;->getShaderColors()Ljava/util/List; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerTheme;->getShimmerWidth-D9Ej5fM()F +Lcom/artemchep/keyguard/ui/shimmer/ShimmerThemeKt; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerThemeKt;->()V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerThemeKt;->getDefaultShimmerTheme()Lcom/artemchep/keyguard/ui/shimmer/ShimmerTheme; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerThemeKt;->getLocalShimmerTheme()Landroidx/compose/runtime/ProvidableCompositionLocal; +Lcom/artemchep/keyguard/ui/shimmer/ShimmerThemeKt$LocalShimmerTheme$1; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerThemeKt$LocalShimmerTheme$1;->()V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerThemeKt$LocalShimmerTheme$1;->()V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerThemeKt$LocalShimmerTheme$1;->invoke()Lcom/artemchep/keyguard/ui/shimmer/ShimmerTheme; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerThemeKt$LocalShimmerTheme$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/shimmer/UnclippedBoundsInWindowKt; +HSPLcom/artemchep/keyguard/ui/shimmer/UnclippedBoundsInWindowKt;->unclippedBoundsInWindow(Landroidx/compose/ui/layout/LayoutCoordinates;)Landroidx/compose/ui/geometry/Rect; +Lcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonFilterKt; +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonFilterKt;->()V +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonFilterKt;->()V +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonFilterKt;->getLambda-1$common_noneRelease()Lkotlin/jvm/functions/Function2; +Lcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonFilterKt$lambda-1$1; +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonFilterKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonFilterKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonFilterKt$lambda-1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonFilterKt$lambda-1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonItemKt; +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonItemKt;->()V +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonItemKt;->()V +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonItemKt;->getLambda-1$common_noneRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonItemKt;->getLambda-2$common_noneRelease()Lkotlin/jvm/functions/Function3; +Lcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonItemKt$lambda-1$1; +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonItemKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonItemKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonItemKt$lambda-1$1;->invoke(Landroidx/compose/foundation/layout/BoxScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonItemKt$lambda-1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonItemKt$lambda-2$1; +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonItemKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonItemKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonItemKt$lambda-2$1;->invoke(Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonItemKt$lambda-2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/skeleton/SkeletonButtonKt; +HSPLcom/artemchep/keyguard/ui/skeleton/SkeletonButtonKt;->SkeletonButton(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/ui/skeleton/SkeletonButtonKt$SkeletonButton$1; +HSPLcom/artemchep/keyguard/ui/skeleton/SkeletonButtonKt$SkeletonButton$1;->(Landroidx/compose/ui/Modifier;II)V +Lcom/artemchep/keyguard/ui/skeleton/SkeletonCheckBoxKt; +HSPLcom/artemchep/keyguard/ui/skeleton/SkeletonCheckBoxKt;->SkeletonCheckbox(Landroidx/compose/ui/Modifier;ZLandroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/ui/skeleton/SkeletonCheckBoxKt$SkeletonCheckbox$2; +HSPLcom/artemchep/keyguard/ui/skeleton/SkeletonCheckBoxKt$SkeletonCheckbox$2;->(Landroidx/compose/ui/Modifier;ZII)V +Lcom/artemchep/keyguard/ui/skeleton/SkeletonFilterKt; +HSPLcom/artemchep/keyguard/ui/skeleton/SkeletonFilterKt;->SkeletonFilter(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/ui/skeleton/SkeletonItemKt; +HSPLcom/artemchep/keyguard/ui/skeleton/SkeletonItemKt;->SkeletonItem(ZFLjava/lang/Float;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/ui/skeleton/SkeletonItemKt$SkeletonItem$1; +HSPLcom/artemchep/keyguard/ui/skeleton/SkeletonItemKt$SkeletonItem$1;->(Ljava/lang/Float;)V +HSPLcom/artemchep/keyguard/ui/skeleton/SkeletonItemKt$SkeletonItem$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/skeleton/SkeletonItemKt$SkeletonItem$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/skeleton/SkeletonItemKt$SkeletonItem$2; +HSPLcom/artemchep/keyguard/ui/skeleton/SkeletonItemKt$SkeletonItem$2;->(F)V +HSPLcom/artemchep/keyguard/ui/skeleton/SkeletonItemKt$SkeletonItem$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/skeleton/SkeletonItemKt$SkeletonItem$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/skeleton/SkeletonTextFieldKt; +HSPLcom/artemchep/keyguard/ui/skeleton/SkeletonTextFieldKt;->SkeletonTextField(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/ui/skeleton/SkeletonTextFieldKt$SkeletonTextField$1; +HSPLcom/artemchep/keyguard/ui/skeleton/SkeletonTextFieldKt$SkeletonTextField$1;->(Landroidx/compose/ui/Modifier;II)V +Lcom/artemchep/keyguard/ui/skeleton/SkeletonTextKt; +HSPLcom/artemchep/keyguard/ui/skeleton/SkeletonTextKt;->SkeletonText(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/text/TextStyle;FLandroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/ui/skeleton/SkeletonTextKt$SkeletonText$1; +HSPLcom/artemchep/keyguard/ui/skeleton/SkeletonTextKt$SkeletonText$1;->(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/text/TextStyle;FII)V +Lcom/artemchep/keyguard/ui/theme/ColorKt; +HSPLcom/artemchep/keyguard/ui/theme/ColorKt;->combineAlpha-DxMtmZc(JF)J +Lcom/artemchep/keyguard/ui/theme/Dimen; +HSPLcom/artemchep/keyguard/ui/theme/Dimen;->()V +HSPLcom/artemchep/keyguard/ui/theme/Dimen;->(FFFF)V +HSPLcom/artemchep/keyguard/ui/theme/Dimen;->(FFFFILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/ui/theme/Dimen;->(FFFFLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/ui/theme/Dimen;->getButtonIconPadding-D9Ej5fM()F +HSPLcom/artemchep/keyguard/ui/theme/Dimen;->getHorizontalPadding-D9Ej5fM()F +HSPLcom/artemchep/keyguard/ui/theme/Dimen;->getVerticalPadding-D9Ej5fM()F +Lcom/artemchep/keyguard/ui/theme/Dimen$Companion; +HSPLcom/artemchep/keyguard/ui/theme/Dimen$Companion;->()V +HSPLcom/artemchep/keyguard/ui/theme/Dimen$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/ui/theme/Dimen$Companion;->normal()Lcom/artemchep/keyguard/ui/theme/Dimen; +Lcom/artemchep/keyguard/ui/theme/DimenKt; +HSPLcom/artemchep/keyguard/ui/theme/DimenKt;->()V +HSPLcom/artemchep/keyguard/ui/theme/DimenKt;->getDimens(Landroidx/compose/runtime/Composer;I)Lcom/artemchep/keyguard/ui/theme/Dimen; +Lcom/artemchep/keyguard/ui/theme/DimenKt$LocalDimens$1; +HSPLcom/artemchep/keyguard/ui/theme/DimenKt$LocalDimens$1;->()V +HSPLcom/artemchep/keyguard/ui/theme/DimenKt$LocalDimens$1;->()V +HSPLcom/artemchep/keyguard/ui/theme/DimenKt$LocalDimens$1;->invoke()Lcom/artemchep/keyguard/ui/theme/Dimen; +HSPLcom/artemchep/keyguard/ui/theme/DimenKt$LocalDimens$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/theme/PlatformTheme; +HSPLcom/artemchep/keyguard/ui/theme/PlatformTheme;->SystemUiThemeEffect(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/theme/PlatformTheme;->appDynamicLightColorScheme(Landroidx/compose/runtime/Composer;I)Landroidx/compose/material3/ColorScheme; +Lcom/artemchep/keyguard/ui/theme/PlatformTheme$SystemUiThemeEffect$1$1; +HSPLcom/artemchep/keyguard/ui/theme/PlatformTheme$SystemUiThemeEffect$1$1;->(Lcom/google/accompanist/systemuicontroller/SystemUiController;Z)V +HSPLcom/artemchep/keyguard/ui/theme/PlatformTheme$SystemUiThemeEffect$1$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/theme/PlatformTheme$SystemUiThemeEffect$1$1;->invoke()V +Lcom/artemchep/keyguard/ui/theme/PlatformTheme$SystemUiThemeEffect$2; +HSPLcom/artemchep/keyguard/ui/theme/PlatformTheme$SystemUiThemeEffect$2;->(I)V +Lcom/artemchep/keyguard/ui/theme/ThemeKt; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->()V +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->KeyguardTheme$lambda$10(Landroidx/compose/runtime/State;)Z +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->KeyguardTheme$lambda$12(Landroidx/compose/runtime/State;)Lcom/artemchep/keyguard/common/model/AppColors; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->KeyguardTheme$lambda$14(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetFont; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->KeyguardTheme$lambda$4(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetTheme; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->KeyguardTheme$lambda$5(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetThemeUseAmoledDark; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->KeyguardTheme$lambda$6(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetColors; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->KeyguardTheme$lambda$8(Landroidx/compose/runtime/State;)Lcom/artemchep/keyguard/common/model/AppTheme; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->KeyguardTheme(Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->access$KeyguardTheme$lambda$14(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetFont; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->access$KeyguardTheme$lambda$4(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetTheme; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->access$KeyguardTheme$lambda$5(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetThemeUseAmoledDark; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->access$KeyguardTheme$lambda$6(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetColors; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->access$buildContentColor(FZ)J +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->appColorScheme(Lcom/artemchep/keyguard/common/model/AppColors;ZLandroidx/compose/runtime/Composer;I)Landroidx/compose/material3/ColorScheme; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->buildContainerColor(Landroidx/compose/material3/ColorScheme;FLandroidx/compose/runtime/Composer;I)J +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->buildContentColor(FZ)J +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->buildContentColor(Landroidx/compose/material3/ColorScheme;FLandroidx/compose/runtime/Composer;I)J +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->getInfo(Landroidx/compose/material3/ColorScheme;Landroidx/compose/runtime/Composer;I)J +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->getInfoContainer(Landroidx/compose/material3/ColorScheme;Landroidx/compose/runtime/Composer;I)J +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->getMonoFontFamily(Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/text/font/FontFamily; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->getRobotoMonoFontFamily(Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/text/font/FontFamily; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->get_error(Landroidx/compose/material3/ColorScheme;Landroidx/compose/runtime/Composer;I)J +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->get_errorContainer(Landroidx/compose/material3/ColorScheme;Landroidx/compose/runtime/Composer;I)J +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->get_onErrorContainer(Landroidx/compose/material3/ColorScheme;Landroidx/compose/runtime/Composer;I)J +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->isDark(Landroidx/compose/material3/ColorScheme;)Z +Lcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$$inlined$rememberInstance$1; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$$inlined$rememberInstance$1;->()V +Lcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$$inlined$rememberInstance$2; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$$inlined$rememberInstance$2;->()V +Lcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$$inlined$rememberInstance$3; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$$inlined$rememberInstance$3;->()V +Lcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$$inlined$rememberInstance$4; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$$inlined$rememberInstance$4;->()V +Lcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$1; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$1;->(ZLandroidx/compose/material3/ColorScheme;Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$1$1; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$1$1;->(Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$2; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$2;->(Lkotlin/jvm/functions/Function2;I)V +Lcom/artemchep/keyguard/ui/toolbar/CustomToolbarKt; +HSPLcom/artemchep/keyguard/ui/toolbar/CustomToolbarKt;->CustomToolbar$lambda$0(Landroidx/compose/runtime/State;)J +HSPLcom/artemchep/keyguard/ui/toolbar/CustomToolbarKt;->CustomToolbar(Landroidx/compose/ui/Modifier;Landroidx/compose/material3/TopAppBarScrollBehavior;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/ui/toolbar/CustomToolbarKt$CustomToolbar$1; +HSPLcom/artemchep/keyguard/ui/toolbar/CustomToolbarKt$CustomToolbar$1;->(Landroidx/compose/foundation/layout/WindowInsets;Landroidx/compose/material3/TopAppBarScrollBehavior;Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/ui/toolbar/CustomToolbarKt$CustomToolbar$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/toolbar/CustomToolbarKt$CustomToolbar$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/toolbar/CustomToolbarKt$CustomToolbar$1$1$1; +HSPLcom/artemchep/keyguard/ui/toolbar/CustomToolbarKt$CustomToolbar$1$1$1;->(Landroidx/compose/material3/TopAppBarScrollBehavior;)V +HSPLcom/artemchep/keyguard/ui/toolbar/CustomToolbarKt$CustomToolbar$1$1$1;->invoke(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLcom/artemchep/keyguard/ui/toolbar/CustomToolbarKt$CustomToolbar$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/toolbar/CustomToolbarKt$CustomToolbar$2; +HSPLcom/artemchep/keyguard/ui/toolbar/CustomToolbarKt$CustomToolbar$2;->(Landroidx/compose/ui/Modifier;Landroidx/compose/material3/TopAppBarScrollBehavior;Lkotlin/jvm/functions/Function2;II)V +HSPLcom/artemchep/keyguard/ui/toolbar/CustomToolbarKt$CustomToolbar$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/toolbar/CustomToolbarKt$CustomToolbar$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/util/DividerKt; +HSPLcom/artemchep/keyguard/ui/util/DividerKt;->Divider(Landroidx/compose/ui/Modifier;ZLandroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/ui/util/DividerKt;->VerticalDivider(Landroidx/compose/ui/Modifier;ZLandroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/ui/util/DividerKt;->getDividerColor(Landroidx/compose/runtime/Composer;I)J +HSPLcom/artemchep/keyguard/ui/util/DividerKt;->getDividerSize()F +Lcom/artemchep/keyguard/ui/util/DividerKt$Divider$1; +HSPLcom/artemchep/keyguard/ui/util/DividerKt$Divider$1;->(Landroidx/compose/ui/Modifier;ZII)V +Lcom/fredporciuncula/flow/preferences/BasePreference; +HSPLcom/fredporciuncula/flow/preferences/BasePreference;->(Ljava/lang/String;Lkotlinx/coroutines/flow/Flow;Landroid/content/SharedPreferences;Lkotlin/coroutines/CoroutineContext;)V +HSPLcom/fredporciuncula/flow/preferences/BasePreference;->asFlow()Lkotlinx/coroutines/flow/Flow; +Lcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$filter$1; +HSPLcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$filter$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/fredporciuncula/flow/preferences/BasePreference;)V +HSPLcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$filter$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$filter$1$2; +HSPLcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$filter$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/fredporciuncula/flow/preferences/BasePreference;)V +HSPLcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$filter$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +PLcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$filter$1$2$1;->(Lcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$filter$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$map$1; +HSPLcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/fredporciuncula/flow/preferences/BasePreference;)V +HSPLcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$map$1$2; +HSPLcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/fredporciuncula/flow/preferences/BasePreference;)V +HSPLcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$map$1$2$1; +HSPLcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$map$1$2$1;->(Lcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/fredporciuncula/flow/preferences/BasePreference$asFlow$2; +HSPLcom/fredporciuncula/flow/preferences/BasePreference$asFlow$2;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/fredporciuncula/flow/preferences/BasePreference$asFlow$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/fredporciuncula/flow/preferences/BasePreference$asFlow$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/fredporciuncula/flow/preferences/BasePreference$asFlow$2;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/fredporciuncula/flow/preferences/BasePreference$asFlow$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/fredporciuncula/flow/preferences/BooleanPreference; +HSPLcom/fredporciuncula/flow/preferences/BooleanPreference;->(Ljava/lang/String;ZLkotlinx/coroutines/flow/Flow;Landroid/content/SharedPreferences;Lkotlin/coroutines/CoroutineContext;)V +HSPLcom/fredporciuncula/flow/preferences/BooleanPreference;->get()Ljava/lang/Boolean; +HSPLcom/fredporciuncula/flow/preferences/BooleanPreference;->get()Ljava/lang/Object; +HSPLcom/fredporciuncula/flow/preferences/BooleanPreference;->getDefaultValue()Ljava/lang/Boolean; +HSPLcom/fredporciuncula/flow/preferences/BooleanPreference;->getKey()Ljava/lang/String; +Lcom/fredporciuncula/flow/preferences/FlowSharedPreferences; +HSPLcom/fredporciuncula/flow/preferences/FlowSharedPreferences;->(Landroid/content/SharedPreferences;Lkotlin/coroutines/CoroutineContext;)V +HSPLcom/fredporciuncula/flow/preferences/FlowSharedPreferences;->(Landroid/content/SharedPreferences;Lkotlin/coroutines/CoroutineContext;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/fredporciuncula/flow/preferences/FlowSharedPreferences;->getBoolean(Ljava/lang/String;Z)Lcom/fredporciuncula/flow/preferences/Preference; +HSPLcom/fredporciuncula/flow/preferences/FlowSharedPreferences;->getLong(Ljava/lang/String;J)Lcom/fredporciuncula/flow/preferences/Preference; +HSPLcom/fredporciuncula/flow/preferences/FlowSharedPreferences;->getString(Ljava/lang/String;Ljava/lang/String;)Lcom/fredporciuncula/flow/preferences/Preference; +Lcom/fredporciuncula/flow/preferences/LongPreference; +HSPLcom/fredporciuncula/flow/preferences/LongPreference;->(Ljava/lang/String;JLkotlinx/coroutines/flow/Flow;Landroid/content/SharedPreferences;Lkotlin/coroutines/CoroutineContext;)V +HSPLcom/fredporciuncula/flow/preferences/LongPreference;->access$getSharedPreferences$p(Lcom/fredporciuncula/flow/preferences/LongPreference;)Landroid/content/SharedPreferences; +HSPLcom/fredporciuncula/flow/preferences/LongPreference;->getKey()Ljava/lang/String; +HSPLcom/fredporciuncula/flow/preferences/LongPreference;->setAndCommit(JLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/fredporciuncula/flow/preferences/LongPreference;->setAndCommit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/fredporciuncula/flow/preferences/LongPreference$setAndCommit$2; +HSPLcom/fredporciuncula/flow/preferences/LongPreference$setAndCommit$2;->(Lcom/fredporciuncula/flow/preferences/LongPreference;JLkotlin/coroutines/Continuation;)V +HSPLcom/fredporciuncula/flow/preferences/LongPreference$setAndCommit$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/fredporciuncula/flow/preferences/LongPreference$setAndCommit$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/fredporciuncula/flow/preferences/LongPreference$setAndCommit$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/fredporciuncula/flow/preferences/LongPreference$setAndCommit$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/fredporciuncula/flow/preferences/Preference; +Lcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt; +HSPLcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt;->getKeyFlow(Landroid/content/SharedPreferences;)Lkotlinx/coroutines/flow/Flow; +Lcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt$keyFlow$1; +HSPLcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt$keyFlow$1;->$r8$lambda$ILt5lcHT_KsH_b03g0fr8T5gYPE(Lkotlinx/coroutines/channels/ProducerScope;Landroid/content/SharedPreferences;Ljava/lang/String;)V +HSPLcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt$keyFlow$1;->(Landroid/content/SharedPreferences;Lkotlin/coroutines/Continuation;)V +HSPLcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt$keyFlow$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt$keyFlow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt$keyFlow$1;->invoke(Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt$keyFlow$1;->invokeSuspend$lambda$0(Lkotlinx/coroutines/channels/ProducerScope;Landroid/content/SharedPreferences;Ljava/lang/String;)V +HSPLcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt$keyFlow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt$keyFlow$1$$ExternalSyntheticLambda0; +HSPLcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt$keyFlow$1$$ExternalSyntheticLambda0;->(Lkotlinx/coroutines/channels/ProducerScope;)V +HSPLcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt$keyFlow$1$$ExternalSyntheticLambda0;->onSharedPreferenceChanged(Landroid/content/SharedPreferences;Ljava/lang/String;)V +Lcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt$keyFlow$1$1; +HSPLcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt$keyFlow$1$1;->(Landroid/content/SharedPreferences;Landroid/content/SharedPreferences$OnSharedPreferenceChangeListener;)V +HSPLcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt$keyFlow$1$1;->invoke()Ljava/lang/Object; +HSPLcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt$keyFlow$1$1;->invoke()V +Lcom/fredporciuncula/flow/preferences/StringPreference; +HSPLcom/fredporciuncula/flow/preferences/StringPreference;->(Ljava/lang/String;Ljava/lang/String;Lkotlinx/coroutines/flow/Flow;Landroid/content/SharedPreferences;Lkotlin/coroutines/CoroutineContext;)V +HSPLcom/fredporciuncula/flow/preferences/StringPreference;->access$getSharedPreferences$p(Lcom/fredporciuncula/flow/preferences/StringPreference;)Landroid/content/SharedPreferences; +HSPLcom/fredporciuncula/flow/preferences/StringPreference;->get()Ljava/lang/Object; +HSPLcom/fredporciuncula/flow/preferences/StringPreference;->get()Ljava/lang/String; +HSPLcom/fredporciuncula/flow/preferences/StringPreference;->getDefaultValue()Ljava/lang/String; +HSPLcom/fredporciuncula/flow/preferences/StringPreference;->getKey()Ljava/lang/String; +HSPLcom/fredporciuncula/flow/preferences/StringPreference;->setAndCommit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/fredporciuncula/flow/preferences/StringPreference;->setAndCommit(Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/fredporciuncula/flow/preferences/StringPreference$setAndCommit$2; +HSPLcom/fredporciuncula/flow/preferences/StringPreference$setAndCommit$2;->(Lcom/fredporciuncula/flow/preferences/StringPreference;Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +HSPLcom/fredporciuncula/flow/preferences/StringPreference$setAndCommit$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/fredporciuncula/flow/preferences/StringPreference$setAndCommit$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/fredporciuncula/flow/preferences/StringPreference$setAndCommit$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/fredporciuncula/flow/preferences/StringPreference$setAndCommit$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/google/accompanist/systemuicontroller/AndroidSystemUiController; +HSPLcom/google/accompanist/systemuicontroller/AndroidSystemUiController;->(Landroid/view/View;Landroid/view/Window;)V +HSPLcom/google/accompanist/systemuicontroller/AndroidSystemUiController;->setNavigationBarColor-Iv8Zu3U(JZZLkotlin/jvm/functions/Function1;)V +HSPLcom/google/accompanist/systemuicontroller/AndroidSystemUiController;->setNavigationBarContrastEnforced(Z)V +HSPLcom/google/accompanist/systemuicontroller/AndroidSystemUiController;->setNavigationBarDarkContentEnabled(Z)V +HSPLcom/google/accompanist/systemuicontroller/AndroidSystemUiController;->setStatusBarColor-ek8zF_U(JZLkotlin/jvm/functions/Function1;)V +HSPLcom/google/accompanist/systemuicontroller/AndroidSystemUiController;->setStatusBarDarkContentEnabled(Z)V +Lcom/google/accompanist/systemuicontroller/SystemUiController; +HSPLcom/google/accompanist/systemuicontroller/SystemUiController;->setSystemBarsColor-Iv8Zu3U$default(Lcom/google/accompanist/systemuicontroller/SystemUiController;JZZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +HSPLcom/google/accompanist/systemuicontroller/SystemUiController;->setSystemBarsColor-Iv8Zu3U(JZZLkotlin/jvm/functions/Function1;)V +Lcom/google/accompanist/systemuicontroller/SystemUiControllerKt; +HSPLcom/google/accompanist/systemuicontroller/SystemUiControllerKt;->()V +HSPLcom/google/accompanist/systemuicontroller/SystemUiControllerKt;->access$getBlackScrimmed$p()Lkotlin/jvm/functions/Function1; +HSPLcom/google/accompanist/systemuicontroller/SystemUiControllerKt;->findWindow(Landroid/content/Context;)Landroid/view/Window; +HSPLcom/google/accompanist/systemuicontroller/SystemUiControllerKt;->findWindow(Landroidx/compose/runtime/Composer;I)Landroid/view/Window; +HSPLcom/google/accompanist/systemuicontroller/SystemUiControllerKt;->rememberSystemUiController(Landroid/view/Window;Landroidx/compose/runtime/Composer;II)Lcom/google/accompanist/systemuicontroller/SystemUiController; +Lcom/google/accompanist/systemuicontroller/SystemUiControllerKt$BlackScrimmed$1; +HSPLcom/google/accompanist/systemuicontroller/SystemUiControllerKt$BlackScrimmed$1;->()V +HSPLcom/google/accompanist/systemuicontroller/SystemUiControllerKt$BlackScrimmed$1;->()V +Lcom/google/android/datatransport/Encoding; +HSPLcom/google/android/datatransport/Encoding;->(Ljava/lang/String;)V +HSPLcom/google/android/datatransport/Encoding;->equals(Ljava/lang/Object;)Z +HSPLcom/google/android/datatransport/Encoding;->hashCode()I +HSPLcom/google/android/datatransport/Encoding;->of(Ljava/lang/String;)Lcom/google/android/datatransport/Encoding; +Lcom/google/android/datatransport/Priority; +HSPLcom/google/android/datatransport/Priority;->()V +HSPLcom/google/android/datatransport/Priority;->(Ljava/lang/String;I)V +HSPLcom/google/android/datatransport/Priority;->values()[Lcom/google/android/datatransport/Priority; +Lcom/google/android/datatransport/Transformer; +Lcom/google/android/datatransport/Transport; +Lcom/google/android/datatransport/TransportFactory; +Lcom/google/android/datatransport/cct/CCTDestination; +HSPLcom/google/android/datatransport/cct/CCTDestination;->()V +HSPLcom/google/android/datatransport/cct/CCTDestination;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/google/android/datatransport/cct/CCTDestination;->asByteArray()[B +HSPLcom/google/android/datatransport/cct/CCTDestination;->getExtras()[B +HSPLcom/google/android/datatransport/cct/CCTDestination;->getName()Ljava/lang/String; +HSPLcom/google/android/datatransport/cct/CCTDestination;->getSupportedEncodings()Ljava/util/Set; +Lcom/google/android/datatransport/cct/StringMerger; +HSPLcom/google/android/datatransport/cct/StringMerger;->mergeStrings(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +Lcom/google/android/datatransport/runtime/AutoValue_TransportContext; +HSPLcom/google/android/datatransport/runtime/AutoValue_TransportContext;->(Ljava/lang/String;[BLcom/google/android/datatransport/Priority;)V +HSPLcom/google/android/datatransport/runtime/AutoValue_TransportContext;->(Ljava/lang/String;[BLcom/google/android/datatransport/Priority;Lcom/google/android/datatransport/runtime/AutoValue_TransportContext$1;)V +Lcom/google/android/datatransport/runtime/AutoValue_TransportContext$Builder; +HSPLcom/google/android/datatransport/runtime/AutoValue_TransportContext$Builder;->()V +HSPLcom/google/android/datatransport/runtime/AutoValue_TransportContext$Builder;->build()Lcom/google/android/datatransport/runtime/TransportContext; +HSPLcom/google/android/datatransport/runtime/AutoValue_TransportContext$Builder;->setBackendName(Ljava/lang/String;)Lcom/google/android/datatransport/runtime/TransportContext$Builder; +HSPLcom/google/android/datatransport/runtime/AutoValue_TransportContext$Builder;->setExtras([B)Lcom/google/android/datatransport/runtime/TransportContext$Builder; +HSPLcom/google/android/datatransport/runtime/AutoValue_TransportContext$Builder;->setPriority(Lcom/google/android/datatransport/Priority;)Lcom/google/android/datatransport/runtime/TransportContext$Builder; +Lcom/google/android/datatransport/runtime/DaggerTransportRuntimeComponent; +HSPLcom/google/android/datatransport/runtime/DaggerTransportRuntimeComponent;->(Landroid/content/Context;)V +HSPLcom/google/android/datatransport/runtime/DaggerTransportRuntimeComponent;->(Landroid/content/Context;Lcom/google/android/datatransport/runtime/DaggerTransportRuntimeComponent$1;)V +HSPLcom/google/android/datatransport/runtime/DaggerTransportRuntimeComponent;->builder()Lcom/google/android/datatransport/runtime/TransportRuntimeComponent$Builder; +HSPLcom/google/android/datatransport/runtime/DaggerTransportRuntimeComponent;->getTransportRuntime()Lcom/google/android/datatransport/runtime/TransportRuntime; +HSPLcom/google/android/datatransport/runtime/DaggerTransportRuntimeComponent;->initialize(Landroid/content/Context;)V +Lcom/google/android/datatransport/runtime/DaggerTransportRuntimeComponent$Builder; +HSPLcom/google/android/datatransport/runtime/DaggerTransportRuntimeComponent$Builder;->()V +HSPLcom/google/android/datatransport/runtime/DaggerTransportRuntimeComponent$Builder;->(Lcom/google/android/datatransport/runtime/DaggerTransportRuntimeComponent$1;)V +HSPLcom/google/android/datatransport/runtime/DaggerTransportRuntimeComponent$Builder;->build()Lcom/google/android/datatransport/runtime/TransportRuntimeComponent; +HSPLcom/google/android/datatransport/runtime/DaggerTransportRuntimeComponent$Builder;->setApplicationContext(Landroid/content/Context;)Lcom/google/android/datatransport/runtime/DaggerTransportRuntimeComponent$Builder; +HSPLcom/google/android/datatransport/runtime/DaggerTransportRuntimeComponent$Builder;->setApplicationContext(Landroid/content/Context;)Lcom/google/android/datatransport/runtime/TransportRuntimeComponent$Builder; +Lcom/google/android/datatransport/runtime/Destination; +Lcom/google/android/datatransport/runtime/EncodedDestination; +Lcom/google/android/datatransport/runtime/ExecutionModule; +HSPLcom/google/android/datatransport/runtime/ExecutionModule;->executor()Ljava/util/concurrent/Executor; +Lcom/google/android/datatransport/runtime/ExecutionModule_ExecutorFactory; +HSPLcom/google/android/datatransport/runtime/ExecutionModule_ExecutorFactory;->()V +HSPLcom/google/android/datatransport/runtime/ExecutionModule_ExecutorFactory;->create()Lcom/google/android/datatransport/runtime/ExecutionModule_ExecutorFactory; +HSPLcom/google/android/datatransport/runtime/ExecutionModule_ExecutorFactory;->executor()Ljava/util/concurrent/Executor; +HSPLcom/google/android/datatransport/runtime/ExecutionModule_ExecutorFactory;->get()Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/ExecutionModule_ExecutorFactory;->get()Ljava/util/concurrent/Executor; +Lcom/google/android/datatransport/runtime/ExecutionModule_ExecutorFactory$InstanceHolder; +HSPLcom/google/android/datatransport/runtime/ExecutionModule_ExecutorFactory$InstanceHolder;->()V +HSPLcom/google/android/datatransport/runtime/ExecutionModule_ExecutorFactory$InstanceHolder;->access$000()Lcom/google/android/datatransport/runtime/ExecutionModule_ExecutorFactory; +Lcom/google/android/datatransport/runtime/SafeLoggingExecutor; +HSPLcom/google/android/datatransport/runtime/SafeLoggingExecutor;->(Ljava/util/concurrent/Executor;)V +HSPLcom/google/android/datatransport/runtime/SafeLoggingExecutor;->execute(Ljava/lang/Runnable;)V +Lcom/google/android/datatransport/runtime/SafeLoggingExecutor$SafeLoggingRunnable; +HSPLcom/google/android/datatransport/runtime/SafeLoggingExecutor$SafeLoggingRunnable;->(Ljava/lang/Runnable;)V +HSPLcom/google/android/datatransport/runtime/SafeLoggingExecutor$SafeLoggingRunnable;->run()V +Lcom/google/android/datatransport/runtime/TransportContext; +HSPLcom/google/android/datatransport/runtime/TransportContext;->()V +HSPLcom/google/android/datatransport/runtime/TransportContext;->builder()Lcom/google/android/datatransport/runtime/TransportContext$Builder; +Lcom/google/android/datatransport/runtime/TransportContext$Builder; +HSPLcom/google/android/datatransport/runtime/TransportContext$Builder;->()V +Lcom/google/android/datatransport/runtime/TransportFactoryImpl; +HSPLcom/google/android/datatransport/runtime/TransportFactoryImpl;->(Ljava/util/Set;Lcom/google/android/datatransport/runtime/TransportContext;Lcom/google/android/datatransport/runtime/TransportInternal;)V +HSPLcom/google/android/datatransport/runtime/TransportFactoryImpl;->getTransport(Ljava/lang/String;Ljava/lang/Class;Lcom/google/android/datatransport/Encoding;Lcom/google/android/datatransport/Transformer;)Lcom/google/android/datatransport/Transport; +Lcom/google/android/datatransport/runtime/TransportImpl; +HSPLcom/google/android/datatransport/runtime/TransportImpl;->(Lcom/google/android/datatransport/runtime/TransportContext;Ljava/lang/String;Lcom/google/android/datatransport/Encoding;Lcom/google/android/datatransport/Transformer;Lcom/google/android/datatransport/runtime/TransportInternal;)V +Lcom/google/android/datatransport/runtime/TransportInternal; +Lcom/google/android/datatransport/runtime/TransportRuntime; +HSPLcom/google/android/datatransport/runtime/TransportRuntime;->()V +HSPLcom/google/android/datatransport/runtime/TransportRuntime;->(Lcom/google/android/datatransport/runtime/time/Clock;Lcom/google/android/datatransport/runtime/time/Clock;Lcom/google/android/datatransport/runtime/scheduling/Scheduler;Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/Uploader;Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer;)V +HSPLcom/google/android/datatransport/runtime/TransportRuntime;->getInstance()Lcom/google/android/datatransport/runtime/TransportRuntime; +HSPLcom/google/android/datatransport/runtime/TransportRuntime;->getSupportedEncodings(Lcom/google/android/datatransport/runtime/Destination;)Ljava/util/Set; +HSPLcom/google/android/datatransport/runtime/TransportRuntime;->initialize(Landroid/content/Context;)V +HSPLcom/google/android/datatransport/runtime/TransportRuntime;->newFactory(Lcom/google/android/datatransport/runtime/Destination;)Lcom/google/android/datatransport/TransportFactory; +Lcom/google/android/datatransport/runtime/TransportRuntimeComponent; +HSPLcom/google/android/datatransport/runtime/TransportRuntimeComponent;->()V +Lcom/google/android/datatransport/runtime/TransportRuntimeComponent$Builder; +Lcom/google/android/datatransport/runtime/TransportRuntime_Factory; +HSPLcom/google/android/datatransport/runtime/TransportRuntime_Factory;->(Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)V +HSPLcom/google/android/datatransport/runtime/TransportRuntime_Factory;->create(Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)Lcom/google/android/datatransport/runtime/TransportRuntime_Factory; +HSPLcom/google/android/datatransport/runtime/TransportRuntime_Factory;->get()Lcom/google/android/datatransport/runtime/TransportRuntime; +HSPLcom/google/android/datatransport/runtime/TransportRuntime_Factory;->get()Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/TransportRuntime_Factory;->newInstance(Lcom/google/android/datatransport/runtime/time/Clock;Lcom/google/android/datatransport/runtime/time/Clock;Lcom/google/android/datatransport/runtime/scheduling/Scheduler;Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/Uploader;Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer;)Lcom/google/android/datatransport/runtime/TransportRuntime; +Lcom/google/android/datatransport/runtime/backends/BackendRegistry; +Lcom/google/android/datatransport/runtime/backends/CreationContextFactory; +HSPLcom/google/android/datatransport/runtime/backends/CreationContextFactory;->(Landroid/content/Context;Lcom/google/android/datatransport/runtime/time/Clock;Lcom/google/android/datatransport/runtime/time/Clock;)V +Lcom/google/android/datatransport/runtime/backends/CreationContextFactory_Factory; +HSPLcom/google/android/datatransport/runtime/backends/CreationContextFactory_Factory;->(Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)V +HSPLcom/google/android/datatransport/runtime/backends/CreationContextFactory_Factory;->create(Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)Lcom/google/android/datatransport/runtime/backends/CreationContextFactory_Factory; +HSPLcom/google/android/datatransport/runtime/backends/CreationContextFactory_Factory;->get()Lcom/google/android/datatransport/runtime/backends/CreationContextFactory; +HSPLcom/google/android/datatransport/runtime/backends/CreationContextFactory_Factory;->get()Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/backends/CreationContextFactory_Factory;->newInstance(Landroid/content/Context;Lcom/google/android/datatransport/runtime/time/Clock;Lcom/google/android/datatransport/runtime/time/Clock;)Lcom/google/android/datatransport/runtime/backends/CreationContextFactory; +Lcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry; +HSPLcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry;->(Landroid/content/Context;Lcom/google/android/datatransport/runtime/backends/CreationContextFactory;)V +HSPLcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry;->(Lcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry$BackendFactoryProvider;Lcom/google/android/datatransport/runtime/backends/CreationContextFactory;)V +Lcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry$BackendFactoryProvider; +HSPLcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry$BackendFactoryProvider;->(Landroid/content/Context;)V +Lcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry_Factory; +HSPLcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry_Factory;->(Ljavax/inject/Provider;Ljavax/inject/Provider;)V +HSPLcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry_Factory;->create(Ljavax/inject/Provider;Ljavax/inject/Provider;)Lcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry_Factory; +HSPLcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry_Factory;->get()Lcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry; +HSPLcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry_Factory;->get()Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry_Factory;->newInstance(Landroid/content/Context;Ljava/lang/Object;)Lcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry; +Lcom/google/android/datatransport/runtime/dagger/Lazy; +Lcom/google/android/datatransport/runtime/dagger/internal/DoubleCheck; +HSPLcom/google/android/datatransport/runtime/dagger/internal/DoubleCheck;->()V +HSPLcom/google/android/datatransport/runtime/dagger/internal/DoubleCheck;->(Ljavax/inject/Provider;)V +HSPLcom/google/android/datatransport/runtime/dagger/internal/DoubleCheck;->get()Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/dagger/internal/DoubleCheck;->provider(Ljavax/inject/Provider;)Ljavax/inject/Provider; +HSPLcom/google/android/datatransport/runtime/dagger/internal/DoubleCheck;->reentrantCheck(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/google/android/datatransport/runtime/dagger/internal/Factory; +Lcom/google/android/datatransport/runtime/dagger/internal/InstanceFactory; +HSPLcom/google/android/datatransport/runtime/dagger/internal/InstanceFactory;->()V +HSPLcom/google/android/datatransport/runtime/dagger/internal/InstanceFactory;->(Ljava/lang/Object;)V +HSPLcom/google/android/datatransport/runtime/dagger/internal/InstanceFactory;->create(Ljava/lang/Object;)Lcom/google/android/datatransport/runtime/dagger/internal/Factory; +HSPLcom/google/android/datatransport/runtime/dagger/internal/InstanceFactory;->get()Ljava/lang/Object; +Lcom/google/android/datatransport/runtime/dagger/internal/Preconditions; +HSPLcom/google/android/datatransport/runtime/dagger/internal/Preconditions;->checkBuilderRequirement(Ljava/lang/Object;Ljava/lang/Class;)V +HSPLcom/google/android/datatransport/runtime/dagger/internal/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/dagger/internal/Preconditions;->checkNotNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; +Lcom/google/android/datatransport/runtime/scheduling/DefaultScheduler; +HSPLcom/google/android/datatransport/runtime/scheduling/DefaultScheduler;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/DefaultScheduler;->(Ljava/util/concurrent/Executor;Lcom/google/android/datatransport/runtime/backends/BackendRegistry;Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkScheduler;Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStore;Lcom/google/android/datatransport/runtime/synchronization/SynchronizationGuard;)V +Lcom/google/android/datatransport/runtime/scheduling/DefaultScheduler_Factory; +HSPLcom/google/android/datatransport/runtime/scheduling/DefaultScheduler_Factory;->(Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)V +HSPLcom/google/android/datatransport/runtime/scheduling/DefaultScheduler_Factory;->create(Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)Lcom/google/android/datatransport/runtime/scheduling/DefaultScheduler_Factory; +HSPLcom/google/android/datatransport/runtime/scheduling/DefaultScheduler_Factory;->get()Lcom/google/android/datatransport/runtime/scheduling/DefaultScheduler; +HSPLcom/google/android/datatransport/runtime/scheduling/DefaultScheduler_Factory;->get()Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/scheduling/DefaultScheduler_Factory;->newInstance(Ljava/util/concurrent/Executor;Lcom/google/android/datatransport/runtime/backends/BackendRegistry;Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkScheduler;Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStore;Lcom/google/android/datatransport/runtime/synchronization/SynchronizationGuard;)Lcom/google/android/datatransport/runtime/scheduling/DefaultScheduler; +Lcom/google/android/datatransport/runtime/scheduling/Scheduler; +Lcom/google/android/datatransport/runtime/scheduling/SchedulingConfigModule; +HSPLcom/google/android/datatransport/runtime/scheduling/SchedulingConfigModule;->config(Lcom/google/android/datatransport/runtime/time/Clock;)Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig; +Lcom/google/android/datatransport/runtime/scheduling/SchedulingConfigModule_ConfigFactory; +HSPLcom/google/android/datatransport/runtime/scheduling/SchedulingConfigModule_ConfigFactory;->(Ljavax/inject/Provider;)V +HSPLcom/google/android/datatransport/runtime/scheduling/SchedulingConfigModule_ConfigFactory;->config(Lcom/google/android/datatransport/runtime/time/Clock;)Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig; +HSPLcom/google/android/datatransport/runtime/scheduling/SchedulingConfigModule_ConfigFactory;->create(Ljavax/inject/Provider;)Lcom/google/android/datatransport/runtime/scheduling/SchedulingConfigModule_ConfigFactory; +HSPLcom/google/android/datatransport/runtime/scheduling/SchedulingConfigModule_ConfigFactory;->get()Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig; +HSPLcom/google/android/datatransport/runtime/scheduling/SchedulingConfigModule_ConfigFactory;->get()Ljava/lang/Object; +Lcom/google/android/datatransport/runtime/scheduling/SchedulingModule; +HSPLcom/google/android/datatransport/runtime/scheduling/SchedulingModule;->workScheduler(Landroid/content/Context;Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStore;Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig;Lcom/google/android/datatransport/runtime/time/Clock;)Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkScheduler; +Lcom/google/android/datatransport/runtime/scheduling/SchedulingModule_WorkSchedulerFactory; +HSPLcom/google/android/datatransport/runtime/scheduling/SchedulingModule_WorkSchedulerFactory;->(Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)V +HSPLcom/google/android/datatransport/runtime/scheduling/SchedulingModule_WorkSchedulerFactory;->create(Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)Lcom/google/android/datatransport/runtime/scheduling/SchedulingModule_WorkSchedulerFactory; +HSPLcom/google/android/datatransport/runtime/scheduling/SchedulingModule_WorkSchedulerFactory;->get()Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkScheduler; +HSPLcom/google/android/datatransport/runtime/scheduling/SchedulingModule_WorkSchedulerFactory;->get()Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/scheduling/SchedulingModule_WorkSchedulerFactory;->workScheduler(Landroid/content/Context;Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStore;Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig;Lcom/google/android/datatransport/runtime/time/Clock;)Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkScheduler; +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/AutoValue_SchedulerConfig; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/AutoValue_SchedulerConfig;->(Lcom/google/android/datatransport/runtime/time/Clock;Ljava/util/Map;)V +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/AutoValue_SchedulerConfig_ConfigValue; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/AutoValue_SchedulerConfig_ConfigValue;->(JJLjava/util/Set;)V +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/AutoValue_SchedulerConfig_ConfigValue;->(JJLjava/util/Set;Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/AutoValue_SchedulerConfig_ConfigValue$1;)V +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/AutoValue_SchedulerConfig_ConfigValue$Builder; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/AutoValue_SchedulerConfig_ConfigValue$Builder;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/AutoValue_SchedulerConfig_ConfigValue$Builder;->build()Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$ConfigValue; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/AutoValue_SchedulerConfig_ConfigValue$Builder;->setDelta(J)Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$ConfigValue$Builder; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/AutoValue_SchedulerConfig_ConfigValue$Builder;->setFlags(Ljava/util/Set;)Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$ConfigValue$Builder; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/AutoValue_SchedulerConfig_ConfigValue$Builder;->setMaxAllowedDelay(J)Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$ConfigValue$Builder; +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/JobInfoScheduler; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/JobInfoScheduler;->(Landroid/content/Context;Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStore;Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig;)V +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig;->builder()Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$Builder; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig;->create(Lcom/google/android/datatransport/runtime/time/Clock;Ljava/util/Map;)Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig;->getDefault(Lcom/google/android/datatransport/runtime/time/Clock;)Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig;->immutableSetOf([Ljava/lang/Object;)Ljava/util/Set; +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$Builder; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$Builder;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$Builder;->addConfig(Lcom/google/android/datatransport/Priority;Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$ConfigValue;)Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$Builder; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$Builder;->build()Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$Builder;->setClock(Lcom/google/android/datatransport/runtime/time/Clock;)Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$Builder; +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$ConfigValue; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$ConfigValue;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$ConfigValue;->builder()Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$ConfigValue$Builder; +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$ConfigValue$Builder; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$ConfigValue$Builder;->()V +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$Flag; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$Flag;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$Flag;->(Ljava/lang/String;I)V +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/Uploader; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/Uploader;->(Landroid/content/Context;Lcom/google/android/datatransport/runtime/backends/BackendRegistry;Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStore;Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkScheduler;Ljava/util/concurrent/Executor;Lcom/google/android/datatransport/runtime/synchronization/SynchronizationGuard;Lcom/google/android/datatransport/runtime/time/Clock;Lcom/google/android/datatransport/runtime/time/Clock;Lcom/google/android/datatransport/runtime/scheduling/persistence/ClientHealthMetricsStore;)V +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/Uploader_Factory; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/Uploader_Factory;->(Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)V +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/Uploader_Factory;->create(Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/Uploader_Factory; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/Uploader_Factory;->get()Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/Uploader; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/Uploader_Factory;->get()Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/Uploader_Factory;->newInstance(Landroid/content/Context;Lcom/google/android/datatransport/runtime/backends/BackendRegistry;Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStore;Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkScheduler;Ljava/util/concurrent/Executor;Lcom/google/android/datatransport/runtime/synchronization/SynchronizationGuard;Lcom/google/android/datatransport/runtime/time/Clock;Lcom/google/android/datatransport/runtime/time/Clock;Lcom/google/android/datatransport/runtime/scheduling/persistence/ClientHealthMetricsStore;)Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/Uploader; +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer;->(Ljava/util/concurrent/Executor;Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStore;Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkScheduler;Lcom/google/android/datatransport/runtime/synchronization/SynchronizationGuard;)V +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer;->ensureContextsScheduled()V +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer;->lambda$ensureContextsScheduled$0$com-google-android-datatransport-runtime-scheduling-jobscheduling-WorkInitializer()Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer;->lambda$ensureContextsScheduled$1$com-google-android-datatransport-runtime-scheduling-jobscheduling-WorkInitializer()V +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer$$ExternalSyntheticLambda0; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer$$ExternalSyntheticLambda0;->(Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer;)V +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer$$ExternalSyntheticLambda0;->execute()Ljava/lang/Object; +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer$$ExternalSyntheticLambda1; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer$$ExternalSyntheticLambda1;->(Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer;)V +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer$$ExternalSyntheticLambda1;->run()V +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer_Factory; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer_Factory;->(Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)V +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer_Factory;->create(Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer_Factory; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer_Factory;->get()Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer_Factory;->get()Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer_Factory;->newInstance(Ljava/util/concurrent/Executor;Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStore;Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkScheduler;Lcom/google/android/datatransport/runtime/synchronization/SynchronizationGuard;)Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer; +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkScheduler; +Lcom/google/android/datatransport/runtime/scheduling/persistence/AutoValue_EventStoreConfig; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/AutoValue_EventStoreConfig;->(JIIJI)V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/AutoValue_EventStoreConfig;->(JIIJILcom/google/android/datatransport/runtime/scheduling/persistence/AutoValue_EventStoreConfig$1;)V +Lcom/google/android/datatransport/runtime/scheduling/persistence/AutoValue_EventStoreConfig$Builder; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/AutoValue_EventStoreConfig$Builder;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/AutoValue_EventStoreConfig$Builder;->build()Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/AutoValue_EventStoreConfig$Builder;->setCriticalSectionEnterTimeoutMs(I)Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig$Builder; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/AutoValue_EventStoreConfig$Builder;->setEventCleanUpAge(J)Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig$Builder; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/AutoValue_EventStoreConfig$Builder;->setLoadBatchSize(I)Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig$Builder; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/AutoValue_EventStoreConfig$Builder;->setMaxBlobByteSizePerRow(I)Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig$Builder; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/AutoValue_EventStoreConfig$Builder;->setMaxStorageSizeInBytes(J)Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig$Builder; +Lcom/google/android/datatransport/runtime/scheduling/persistence/ClientHealthMetricsStore; +Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStore; +Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig;->builder()Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig$Builder; +Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig$Builder; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig$Builder;->()V +Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule;->dbName()Ljava/lang/String; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule;->schemaVersion()I +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule;->storeConfig()Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig; +Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_DbNameFactory; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_DbNameFactory;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_DbNameFactory;->create()Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_DbNameFactory; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_DbNameFactory;->dbName()Ljava/lang/String; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_DbNameFactory;->get()Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_DbNameFactory;->get()Ljava/lang/String; +Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_DbNameFactory$InstanceHolder; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_DbNameFactory$InstanceHolder;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_DbNameFactory$InstanceHolder;->access$000()Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_DbNameFactory; +Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_PackageNameFactory; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_PackageNameFactory;->(Ljavax/inject/Provider;)V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_PackageNameFactory;->create(Ljavax/inject/Provider;)Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_PackageNameFactory; +Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_SchemaVersionFactory; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_SchemaVersionFactory;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_SchemaVersionFactory;->create()Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_SchemaVersionFactory; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_SchemaVersionFactory;->get()Ljava/lang/Integer; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_SchemaVersionFactory;->get()Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_SchemaVersionFactory;->schemaVersion()I +Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_SchemaVersionFactory$InstanceHolder; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_SchemaVersionFactory$InstanceHolder;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_SchemaVersionFactory$InstanceHolder;->access$000()Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_SchemaVersionFactory; +Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_StoreConfigFactory; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_StoreConfigFactory;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_StoreConfigFactory;->create()Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_StoreConfigFactory; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_StoreConfigFactory;->get()Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_StoreConfigFactory;->get()Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_StoreConfigFactory;->storeConfig()Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig; +Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_StoreConfigFactory$InstanceHolder; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_StoreConfigFactory$InstanceHolder;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_StoreConfigFactory$InstanceHolder;->access$000()Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_StoreConfigFactory; +Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->(Lcom/google/android/datatransport/runtime/time/Clock;Lcom/google/android/datatransport/runtime/time/Clock;Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig;Lcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager;Ljavax/inject/Provider;)V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->ensureBeginTransaction(Landroid/database/sqlite/SQLiteDatabase;)V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->getDb()Landroid/database/sqlite/SQLiteDatabase; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->inTransaction(Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$Function;)Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->lambda$ensureBeginTransaction$24(Landroid/database/sqlite/SQLiteDatabase;)Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->lambda$loadActiveContexts$10(Landroid/database/sqlite/SQLiteDatabase;)Ljava/util/List; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->lambda$loadActiveContexts$9(Landroid/database/Cursor;)Ljava/util/List; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->loadActiveContexts()Ljava/lang/Iterable; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->retryIfDbLocked(Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$Producer;Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$Function;)Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->runCriticalSection(Lcom/google/android/datatransport/runtime/synchronization/SynchronizationGuard$CriticalSection;)Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->tryWithCursor(Landroid/database/Cursor;Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$Function;)Ljava/lang/Object; +Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda10; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda10;->(Landroid/database/sqlite/SQLiteDatabase;)V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda10;->produce()Ljava/lang/Object; +Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda12; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda12;->()V +Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda15; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda15;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda15;->apply(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda2; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda2;->(Lcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager;)V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda2;->produce()Ljava/lang/Object; +Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda24; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda24;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda24;->apply(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda3; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda3;->()V +Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$Function; +Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$Producer; +Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore_Factory; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore_Factory;->(Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore_Factory;->create(Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore_Factory; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore_Factory;->get()Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore_Factory;->get()Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore_Factory;->newInstance(Lcom/google/android/datatransport/runtime/time/Clock;Lcom/google/android/datatransport/runtime/time/Clock;Ljava/lang/Object;Ljava/lang/Object;Ljavax/inject/Provider;)Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore; +Lcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager;->(Landroid/content/Context;Ljava/lang/String;I)V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager;->ensureConfigured(Landroid/database/sqlite/SQLiteDatabase;)V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager;->onConfigure(Landroid/database/sqlite/SQLiteDatabase;)V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager;->onOpen(Landroid/database/sqlite/SQLiteDatabase;)V +Lcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager$$ExternalSyntheticLambda0; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager$$ExternalSyntheticLambda0;->()V +Lcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager$$ExternalSyntheticLambda1; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager$$ExternalSyntheticLambda1;->()V +Lcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager$$ExternalSyntheticLambda2; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager$$ExternalSyntheticLambda2;->()V +Lcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager$$ExternalSyntheticLambda3; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager$$ExternalSyntheticLambda3;->()V +Lcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager$$ExternalSyntheticLambda4; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager$$ExternalSyntheticLambda4;->()V +Lcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager$Migration; +Lcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager_Factory; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager_Factory;->(Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager_Factory;->create(Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)Lcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager_Factory; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager_Factory;->get()Lcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager_Factory;->get()Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager_Factory;->newInstance(Landroid/content/Context;Ljava/lang/String;I)Lcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager; +Lcom/google/android/datatransport/runtime/synchronization/SynchronizationException; +Lcom/google/android/datatransport/runtime/synchronization/SynchronizationGuard; +Lcom/google/android/datatransport/runtime/synchronization/SynchronizationGuard$CriticalSection; +Lcom/google/android/datatransport/runtime/time/Clock; +Lcom/google/android/datatransport/runtime/time/TimeModule; +HSPLcom/google/android/datatransport/runtime/time/TimeModule;->eventClock()Lcom/google/android/datatransport/runtime/time/Clock; +HSPLcom/google/android/datatransport/runtime/time/TimeModule;->uptimeClock()Lcom/google/android/datatransport/runtime/time/Clock; +Lcom/google/android/datatransport/runtime/time/TimeModule_EventClockFactory; +HSPLcom/google/android/datatransport/runtime/time/TimeModule_EventClockFactory;->()V +HSPLcom/google/android/datatransport/runtime/time/TimeModule_EventClockFactory;->create()Lcom/google/android/datatransport/runtime/time/TimeModule_EventClockFactory; +HSPLcom/google/android/datatransport/runtime/time/TimeModule_EventClockFactory;->eventClock()Lcom/google/android/datatransport/runtime/time/Clock; +HSPLcom/google/android/datatransport/runtime/time/TimeModule_EventClockFactory;->get()Lcom/google/android/datatransport/runtime/time/Clock; +HSPLcom/google/android/datatransport/runtime/time/TimeModule_EventClockFactory;->get()Ljava/lang/Object; +Lcom/google/android/datatransport/runtime/time/TimeModule_EventClockFactory$InstanceHolder; +HSPLcom/google/android/datatransport/runtime/time/TimeModule_EventClockFactory$InstanceHolder;->()V +HSPLcom/google/android/datatransport/runtime/time/TimeModule_EventClockFactory$InstanceHolder;->access$000()Lcom/google/android/datatransport/runtime/time/TimeModule_EventClockFactory; +Lcom/google/android/datatransport/runtime/time/TimeModule_UptimeClockFactory; +HSPLcom/google/android/datatransport/runtime/time/TimeModule_UptimeClockFactory;->()V +HSPLcom/google/android/datatransport/runtime/time/TimeModule_UptimeClockFactory;->create()Lcom/google/android/datatransport/runtime/time/TimeModule_UptimeClockFactory; +HSPLcom/google/android/datatransport/runtime/time/TimeModule_UptimeClockFactory;->get()Lcom/google/android/datatransport/runtime/time/Clock; +HSPLcom/google/android/datatransport/runtime/time/TimeModule_UptimeClockFactory;->get()Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/time/TimeModule_UptimeClockFactory;->uptimeClock()Lcom/google/android/datatransport/runtime/time/Clock; +Lcom/google/android/datatransport/runtime/time/TimeModule_UptimeClockFactory$InstanceHolder; +HSPLcom/google/android/datatransport/runtime/time/TimeModule_UptimeClockFactory$InstanceHolder;->()V +HSPLcom/google/android/datatransport/runtime/time/TimeModule_UptimeClockFactory$InstanceHolder;->access$000()Lcom/google/android/datatransport/runtime/time/TimeModule_UptimeClockFactory; +Lcom/google/android/datatransport/runtime/time/UptimeClock; +HSPLcom/google/android/datatransport/runtime/time/UptimeClock;->()V +HSPLcom/google/android/datatransport/runtime/time/UptimeClock;->getTime()J +Lcom/google/android/datatransport/runtime/time/WallTimeClock; +HSPLcom/google/android/datatransport/runtime/time/WallTimeClock;->()V +Lcom/google/android/gms/common/ConnectionResult; +HSPLcom/google/android/gms/common/ConnectionResult;->()V +HSPLcom/google/android/gms/common/ConnectionResult;->(I)V +HSPLcom/google/android/gms/common/ConnectionResult;->(IILandroid/app/PendingIntent;Ljava/lang/String;)V +HSPLcom/google/android/gms/common/ConnectionResult;->(ILandroid/app/PendingIntent;Ljava/lang/String;)V +HSPLcom/google/android/gms/common/ConnectionResult;->isSuccess()Z +Lcom/google/android/gms/common/Feature; +HSPLcom/google/android/gms/common/Feature;->()V +Lcom/google/android/gms/common/GoogleApiAvailability; +HSPLcom/google/android/gms/common/GoogleApiAvailability;->()V +HSPLcom/google/android/gms/common/GoogleApiAvailability;->()V +HSPLcom/google/android/gms/common/GoogleApiAvailability;->getInstance()Lcom/google/android/gms/common/GoogleApiAvailability; +HSPLcom/google/android/gms/common/GoogleApiAvailability;->isGooglePlayServicesAvailable(Landroid/content/Context;)I +HSPLcom/google/android/gms/common/GoogleApiAvailability;->isGooglePlayServicesAvailable(Landroid/content/Context;I)I +Lcom/google/android/gms/common/GoogleApiAvailabilityLight; +HSPLcom/google/android/gms/common/GoogleApiAvailabilityLight;->()V +HSPLcom/google/android/gms/common/GoogleApiAvailabilityLight;->()V +HSPLcom/google/android/gms/common/GoogleApiAvailabilityLight;->getInstance()Lcom/google/android/gms/common/GoogleApiAvailabilityLight; +HSPLcom/google/android/gms/common/GoogleApiAvailabilityLight;->isGooglePlayServicesAvailable(Landroid/content/Context;)I +HSPLcom/google/android/gms/common/GoogleApiAvailabilityLight;->isGooglePlayServicesAvailable(Landroid/content/Context;I)I +Lcom/google/android/gms/common/GooglePlayServicesUtilLight; +HSPLcom/google/android/gms/common/GooglePlayServicesUtilLight;->()V +HSPLcom/google/android/gms/common/GooglePlayServicesUtilLight;->isGooglePlayServicesAvailable(Landroid/content/Context;I)I +HSPLcom/google/android/gms/common/GooglePlayServicesUtilLight;->isPlayServicesPossiblyUpdating(Landroid/content/Context;I)Z +Lcom/google/android/gms/common/GoogleSignatureVerifier; +HSPLcom/google/android/gms/common/GoogleSignatureVerifier;->(Landroid/content/Context;)V +HSPLcom/google/android/gms/common/GoogleSignatureVerifier;->getInstance(Landroid/content/Context;)Lcom/google/android/gms/common/GoogleSignatureVerifier; +HSPLcom/google/android/gms/common/GoogleSignatureVerifier;->zza(Landroid/content/pm/PackageInfo;[Lcom/google/android/gms/common/zzj;)Lcom/google/android/gms/common/zzj; +HSPLcom/google/android/gms/common/GoogleSignatureVerifier;->zzb(Landroid/content/pm/PackageInfo;Z)Z +Lcom/google/android/gms/common/R$string; +Lcom/google/android/gms/common/api/Scope; +Lcom/google/android/gms/common/api/internal/BackgroundDetector; +HSPLcom/google/android/gms/common/api/internal/BackgroundDetector;->()V +HSPLcom/google/android/gms/common/api/internal/BackgroundDetector;->()V +HSPLcom/google/android/gms/common/api/internal/BackgroundDetector;->addListener(Lcom/google/android/gms/common/api/internal/BackgroundDetector$BackgroundStateChangeListener;)V +HSPLcom/google/android/gms/common/api/internal/BackgroundDetector;->getInstance()Lcom/google/android/gms/common/api/internal/BackgroundDetector; +HSPLcom/google/android/gms/common/api/internal/BackgroundDetector;->initialize(Landroid/app/Application;)V +HSPLcom/google/android/gms/common/api/internal/BackgroundDetector;->onActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V +HSPLcom/google/android/gms/common/api/internal/BackgroundDetector;->onActivityResumed(Landroid/app/Activity;)V +HSPLcom/google/android/gms/common/api/internal/BackgroundDetector;->onActivityStarted(Landroid/app/Activity;)V +Lcom/google/android/gms/common/api/internal/BackgroundDetector$BackgroundStateChangeListener; +Lcom/google/android/gms/common/internal/BaseGmsClient; +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->()V +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->(Landroid/content/Context;Landroid/os/Looper;ILcom/google/android/gms/common/internal/BaseGmsClient$BaseConnectionCallbacks;Lcom/google/android/gms/common/internal/BaseGmsClient$BaseOnConnectionFailedListener;Ljava/lang/String;)V +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->(Landroid/content/Context;Landroid/os/Looper;Lcom/google/android/gms/common/internal/GmsClientSupervisor;Lcom/google/android/gms/common/GoogleApiAvailabilityLight;ILcom/google/android/gms/common/internal/BaseGmsClient$BaseConnectionCallbacks;Lcom/google/android/gms/common/internal/BaseGmsClient$BaseOnConnectionFailedListener;Ljava/lang/String;)V +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->checkAvailabilityAndConnect()V +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->checkConnected()V +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->connect(Lcom/google/android/gms/common/internal/BaseGmsClient$ConnectionProgressReportCallbacks;)V +PLcom/google/android/gms/common/internal/BaseGmsClient;->disconnect()V +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->getApiFeatures()[Lcom/google/android/gms/common/Feature; +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->getBindServiceExecutor()Ljava/util/concurrent/Executor; +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->getConnectionHint()Landroid/os/Bundle; +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->getGetServiceRequestExtraArgs()Landroid/os/Bundle; +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->getRemoteService(Lcom/google/android/gms/common/internal/IAccountAccessor;Ljava/util/Set;)V +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->getScopes()Ljava/util/Set; +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->getService()Landroid/os/IInterface; +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->getStartServicePackage()Ljava/lang/String; +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->getUseDynamicLookup()Z +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->isConnected()Z +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->isConnecting()Z +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->onConnectedLocked(Landroid/os/IInterface;)V +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->onPostInitHandler(ILandroid/os/IBinder;Landroid/os/Bundle;I)V +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->requiresAccount()Z +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->requiresSignIn()Z +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->usesClientTelemetry()Z +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->zzb(Lcom/google/android/gms/common/internal/BaseGmsClient;)Lcom/google/android/gms/common/internal/BaseGmsClient$BaseConnectionCallbacks; +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->zzd(Lcom/google/android/gms/common/internal/BaseGmsClient;)Ljava/lang/Object; +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->zze()Ljava/lang/String; +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->zzf(Lcom/google/android/gms/common/internal/BaseGmsClient;)Ljava/util/ArrayList; +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->zzg(Lcom/google/android/gms/common/internal/BaseGmsClient;Lcom/google/android/gms/common/ConnectionResult;)V +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->zzh(Lcom/google/android/gms/common/internal/BaseGmsClient;Lcom/google/android/gms/common/internal/IGmsServiceBroker;)V +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->zzj(Lcom/google/android/gms/common/internal/BaseGmsClient;Lcom/google/android/gms/common/internal/zzj;)V +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->zzl(ILandroid/os/Bundle;I)V +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->zzn(Lcom/google/android/gms/common/internal/BaseGmsClient;IILandroid/os/IInterface;)Z +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->zzp(ILandroid/os/IInterface;)V +Lcom/google/android/gms/common/internal/BaseGmsClient$BaseConnectionCallbacks; +Lcom/google/android/gms/common/internal/BaseGmsClient$BaseOnConnectionFailedListener; +Lcom/google/android/gms/common/internal/BaseGmsClient$ConnectionProgressReportCallbacks; +Lcom/google/android/gms/common/internal/BaseGmsClient$LegacyClientCallbackAdapter; +HSPLcom/google/android/gms/common/internal/BaseGmsClient$LegacyClientCallbackAdapter;->(Lcom/google/android/gms/common/internal/BaseGmsClient;)V +HSPLcom/google/android/gms/common/internal/BaseGmsClient$LegacyClientCallbackAdapter;->onReportServiceBinding(Lcom/google/android/gms/common/ConnectionResult;)V +Lcom/google/android/gms/common/internal/ConnectionTelemetryConfiguration; +Lcom/google/android/gms/common/internal/GetServiceRequest; +HSPLcom/google/android/gms/common/internal/GetServiceRequest;->()V +HSPLcom/google/android/gms/common/internal/GetServiceRequest;->(IIILjava/lang/String;Landroid/os/IBinder;[Lcom/google/android/gms/common/api/Scope;Landroid/os/Bundle;Landroid/accounts/Account;[Lcom/google/android/gms/common/Feature;[Lcom/google/android/gms/common/Feature;ZIZLjava/lang/String;)V +HSPLcom/google/android/gms/common/internal/GetServiceRequest;->zza()Ljava/lang/String; +Lcom/google/android/gms/common/internal/GmsClientSupervisor; +HSPLcom/google/android/gms/common/internal/GmsClientSupervisor;->()V +HSPLcom/google/android/gms/common/internal/GmsClientSupervisor;->()V +HSPLcom/google/android/gms/common/internal/GmsClientSupervisor;->getDefaultBindFlags()I +HSPLcom/google/android/gms/common/internal/GmsClientSupervisor;->getInstance(Landroid/content/Context;)Lcom/google/android/gms/common/internal/GmsClientSupervisor; +PLcom/google/android/gms/common/internal/GmsClientSupervisor;->zzb(Ljava/lang/String;Ljava/lang/String;ILandroid/content/ServiceConnection;Ljava/lang/String;Z)V +Lcom/google/android/gms/common/internal/IGmsCallbacks; +Lcom/google/android/gms/common/internal/IGmsServiceBroker; +Lcom/google/android/gms/common/internal/Objects; +HSPLcom/google/android/gms/common/internal/Objects;->equal(Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLcom/google/android/gms/common/internal/Objects;->hashCode([Ljava/lang/Object;)I +Lcom/google/android/gms/common/internal/Preconditions; +HSPLcom/google/android/gms/common/internal/Preconditions;->checkArgument(Z)V +HSPLcom/google/android/gms/common/internal/Preconditions;->checkMainThread(Ljava/lang/String;)V +HSPLcom/google/android/gms/common/internal/Preconditions;->checkNotEmpty(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/google/android/gms/common/internal/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/android/gms/common/internal/Preconditions;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/android/gms/common/internal/Preconditions;->checkState(Z)V +HSPLcom/google/android/gms/common/internal/Preconditions;->checkState(ZLjava/lang/Object;)V +Lcom/google/android/gms/common/internal/ReflectedParcelable; +Lcom/google/android/gms/common/internal/StringResourceValueReader; +HSPLcom/google/android/gms/common/internal/StringResourceValueReader;->(Landroid/content/Context;)V +HSPLcom/google/android/gms/common/internal/StringResourceValueReader;->getString(Ljava/lang/String;)Ljava/lang/String; +Lcom/google/android/gms/common/internal/safeparcel/AbstractSafeParcelable; +HSPLcom/google/android/gms/common/internal/safeparcel/AbstractSafeParcelable;->()V +Lcom/google/android/gms/common/internal/safeparcel/SafeParcelReader; +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelReader;->createTypedArray(Landroid/os/Parcel;ILandroid/os/Parcelable$Creator;)[Ljava/lang/Object; +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelReader;->ensureAtEnd(Landroid/os/Parcel;I)V +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelReader;->getFieldId(I)I +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelReader;->readHeader(Landroid/os/Parcel;)I +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelReader;->readInt(Landroid/os/Parcel;I)I +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelReader;->readSize(Landroid/os/Parcel;I)I +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelReader;->validateObjectHeader(Landroid/os/Parcel;)I +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelReader;->zzb(Landroid/os/Parcel;II)V +Lcom/google/android/gms/common/internal/safeparcel/SafeParcelReader$ParseException; +Lcom/google/android/gms/common/internal/safeparcel/SafeParcelWriter; +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelWriter;->beginObjectHeader(Landroid/os/Parcel;)I +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelWriter;->finishObjectHeader(Landroid/os/Parcel;I)V +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelWriter;->writeBoolean(Landroid/os/Parcel;IZ)V +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelWriter;->writeBooleanObject(Landroid/os/Parcel;ILjava/lang/Boolean;Z)V +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelWriter;->writeBundle(Landroid/os/Parcel;ILandroid/os/Bundle;Z)V +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelWriter;->writeIBinder(Landroid/os/Parcel;ILandroid/os/IBinder;Z)V +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelWriter;->writeInt(Landroid/os/Parcel;II)V +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelWriter;->writeLong(Landroid/os/Parcel;IJ)V +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelWriter;->writeParcelable(Landroid/os/Parcel;ILandroid/os/Parcelable;IZ)V +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelWriter;->writeString(Landroid/os/Parcel;ILjava/lang/String;Z)V +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelWriter;->writeStringList(Landroid/os/Parcel;ILjava/util/List;Z)V +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelWriter;->writeTypedArray(Landroid/os/Parcel;I[Landroid/os/Parcelable;IZ)V +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelWriter;->zza(Landroid/os/Parcel;I)I +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelWriter;->zzb(Landroid/os/Parcel;I)V +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelWriter;->zzc(Landroid/os/Parcel;II)V +Lcom/google/android/gms/common/internal/safeparcel/SafeParcelable; +Lcom/google/android/gms/common/internal/zza; +HSPLcom/google/android/gms/common/internal/zza;->(Lcom/google/android/gms/common/internal/BaseGmsClient;ILandroid/os/Bundle;)V +HSPLcom/google/android/gms/common/internal/zza;->zza(Ljava/lang/Object;)V +Lcom/google/android/gms/common/internal/zzab; +HSPLcom/google/android/gms/common/internal/zzab;->()V +HSPLcom/google/android/gms/common/internal/zzab;->zza(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +Lcom/google/android/gms/common/internal/zzac; +HSPLcom/google/android/gms/common/internal/zzac;->(Landroid/os/IBinder;)V +HSPLcom/google/android/gms/common/internal/zzac;->getService(Lcom/google/android/gms/common/internal/IGmsCallbacks;Lcom/google/android/gms/common/internal/GetServiceRequest;)V +Lcom/google/android/gms/common/internal/zzag; +HSPLcom/google/android/gms/common/internal/zzag;->()V +HSPLcom/google/android/gms/common/internal/zzag;->zza(Landroid/content/Context;)I +HSPLcom/google/android/gms/common/internal/zzag;->zzc(Landroid/content/Context;)V +Lcom/google/android/gms/common/internal/zzb; +HSPLcom/google/android/gms/common/internal/zzb;->(Lcom/google/android/gms/common/internal/BaseGmsClient;Landroid/os/Looper;)V +HSPLcom/google/android/gms/common/internal/zzb;->handleMessage(Landroid/os/Message;)V +HSPLcom/google/android/gms/common/internal/zzb;->zzb(Landroid/os/Message;)Z +Lcom/google/android/gms/common/internal/zzc; +HSPLcom/google/android/gms/common/internal/zzc;->(Lcom/google/android/gms/common/internal/BaseGmsClient;Ljava/lang/Object;)V +HSPLcom/google/android/gms/common/internal/zzc;->zze()V +HSPLcom/google/android/gms/common/internal/zzc;->zzf()V +HSPLcom/google/android/gms/common/internal/zzc;->zzg()V +Lcom/google/android/gms/common/internal/zzd; +HSPLcom/google/android/gms/common/internal/zzd;->(Lcom/google/android/gms/common/internal/BaseGmsClient;I)V +HSPLcom/google/android/gms/common/internal/zzd;->onPostInitComplete(ILandroid/os/IBinder;Landroid/os/Bundle;)V +HSPLcom/google/android/gms/common/internal/zzd;->zzc(ILandroid/os/IBinder;Lcom/google/android/gms/common/internal/zzj;)V +Lcom/google/android/gms/common/internal/zze; +HSPLcom/google/android/gms/common/internal/zze;->(Lcom/google/android/gms/common/internal/BaseGmsClient;I)V +HSPLcom/google/android/gms/common/internal/zze;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +Lcom/google/android/gms/common/internal/zzf; +HSPLcom/google/android/gms/common/internal/zzf;->(Lcom/google/android/gms/common/internal/BaseGmsClient;ILandroid/os/IBinder;Landroid/os/Bundle;)V +HSPLcom/google/android/gms/common/internal/zzf;->zzd()Z +Lcom/google/android/gms/common/internal/zzg; +HSPLcom/google/android/gms/common/internal/zzg;->(Lcom/google/android/gms/common/internal/BaseGmsClient;ILandroid/os/Bundle;)V +HSPLcom/google/android/gms/common/internal/zzg;->zzd()Z +Lcom/google/android/gms/common/internal/zzj; +HSPLcom/google/android/gms/common/internal/zzj;->()V +HSPLcom/google/android/gms/common/internal/zzj;->(Landroid/os/Bundle;[Lcom/google/android/gms/common/Feature;ILcom/google/android/gms/common/internal/ConnectionTelemetryConfiguration;)V +Lcom/google/android/gms/common/internal/zzk; +HSPLcom/google/android/gms/common/internal/zzk;->()V +HSPLcom/google/android/gms/common/internal/zzk;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +Lcom/google/android/gms/common/internal/zzm; +HSPLcom/google/android/gms/common/internal/zzm;->()V +HSPLcom/google/android/gms/common/internal/zzm;->zza(Lcom/google/android/gms/common/internal/GetServiceRequest;Landroid/os/Parcel;I)V +Lcom/google/android/gms/common/internal/zzn; +HSPLcom/google/android/gms/common/internal/zzn;->()V +HSPLcom/google/android/gms/common/internal/zzn;->(Ljava/lang/String;Ljava/lang/String;IZ)V +PLcom/google/android/gms/common/internal/zzn;->equals(Ljava/lang/Object;)Z +HSPLcom/google/android/gms/common/internal/zzn;->hashCode()I +HSPLcom/google/android/gms/common/internal/zzn;->zza()I +HSPLcom/google/android/gms/common/internal/zzn;->zzc(Landroid/content/Context;)Landroid/content/Intent; +Lcom/google/android/gms/common/internal/zzo; +HSPLcom/google/android/gms/common/internal/zzo;->(Lcom/google/android/gms/common/internal/zzr;Lcom/google/android/gms/common/internal/zzn;)V +HSPLcom/google/android/gms/common/internal/zzo;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +HSPLcom/google/android/gms/common/internal/zzo;->zzd(Landroid/content/ServiceConnection;Landroid/content/ServiceConnection;Ljava/lang/String;)V +HSPLcom/google/android/gms/common/internal/zzo;->zze(Ljava/lang/String;Ljava/util/concurrent/Executor;)V +PLcom/google/android/gms/common/internal/zzo;->zzf(Landroid/content/ServiceConnection;Ljava/lang/String;)V +PLcom/google/android/gms/common/internal/zzo;->zzg(Ljava/lang/String;)V +PLcom/google/android/gms/common/internal/zzo;->zzh(Landroid/content/ServiceConnection;)Z +PLcom/google/android/gms/common/internal/zzo;->zzi()Z +HSPLcom/google/android/gms/common/internal/zzo;->zzj()Z +Lcom/google/android/gms/common/internal/zzq; +HSPLcom/google/android/gms/common/internal/zzq;->(Lcom/google/android/gms/common/internal/zzr;Lcom/google/android/gms/common/internal/zzp;)V +PLcom/google/android/gms/common/internal/zzq;->handleMessage(Landroid/os/Message;)Z +Lcom/google/android/gms/common/internal/zzr; +HSPLcom/google/android/gms/common/internal/zzr;->(Landroid/content/Context;Landroid/os/Looper;)V +PLcom/google/android/gms/common/internal/zzr;->zza(Lcom/google/android/gms/common/internal/zzn;Landroid/content/ServiceConnection;Ljava/lang/String;)V +HSPLcom/google/android/gms/common/internal/zzr;->zzc(Lcom/google/android/gms/common/internal/zzn;Landroid/content/ServiceConnection;Ljava/lang/String;Ljava/util/concurrent/Executor;)Z +HSPLcom/google/android/gms/common/internal/zzr;->zzd(Lcom/google/android/gms/common/internal/zzr;)J +HSPLcom/google/android/gms/common/internal/zzr;->zze(Lcom/google/android/gms/common/internal/zzr;)Landroid/content/Context; +HSPLcom/google/android/gms/common/internal/zzr;->zzf(Lcom/google/android/gms/common/internal/zzr;)Landroid/os/Handler; +HSPLcom/google/android/gms/common/internal/zzr;->zzg(Lcom/google/android/gms/common/internal/zzr;)Lcom/google/android/gms/common/stats/ConnectionTracker; +HSPLcom/google/android/gms/common/internal/zzr;->zzh(Lcom/google/android/gms/common/internal/zzr;)Ljava/util/HashMap; +Lcom/google/android/gms/common/internal/zzs; +Lcom/google/android/gms/common/internal/zzu; +HSPLcom/google/android/gms/common/internal/zzu;->(Ljava/lang/String;Ljava/lang/String;ZIZ)V +HSPLcom/google/android/gms/common/internal/zzu;->zza()I +HSPLcom/google/android/gms/common/internal/zzu;->zzb()Ljava/lang/String; +HSPLcom/google/android/gms/common/internal/zzu;->zzc()Ljava/lang/String; +HSPLcom/google/android/gms/common/internal/zzu;->zzd()Z +Lcom/google/android/gms/common/internal/zzy; +HSPLcom/google/android/gms/common/internal/zzy;->()V +Lcom/google/android/gms/common/internal/zzz; +Lcom/google/android/gms/common/stats/ConnectionTracker; +HSPLcom/google/android/gms/common/stats/ConnectionTracker;->()V +HSPLcom/google/android/gms/common/stats/ConnectionTracker;->()V +HSPLcom/google/android/gms/common/stats/ConnectionTracker;->getInstance()Lcom/google/android/gms/common/stats/ConnectionTracker; +PLcom/google/android/gms/common/stats/ConnectionTracker;->unbindService(Landroid/content/Context;Landroid/content/ServiceConnection;)V +HSPLcom/google/android/gms/common/stats/ConnectionTracker;->zza(Landroid/content/Context;Ljava/lang/String;Landroid/content/Intent;Landroid/content/ServiceConnection;ILjava/util/concurrent/Executor;)Z +PLcom/google/android/gms/common/stats/ConnectionTracker;->zzb(Landroid/content/Context;Landroid/content/ServiceConnection;)V +HSPLcom/google/android/gms/common/stats/ConnectionTracker;->zzc(Landroid/content/Context;Ljava/lang/String;Landroid/content/Intent;Landroid/content/ServiceConnection;IZLjava/util/concurrent/Executor;)Z +HSPLcom/google/android/gms/common/stats/ConnectionTracker;->zzd(Landroid/content/ServiceConnection;)Z +HSPLcom/google/android/gms/common/stats/ConnectionTracker;->zze(Landroid/content/Context;Landroid/content/Intent;Landroid/content/ServiceConnection;ILjava/util/concurrent/Executor;)Z +Lcom/google/android/gms/common/util/Base64Utils; +HSPLcom/google/android/gms/common/util/Base64Utils;->encodeUrlSafeNoPadding([B)Ljava/lang/String; +Lcom/google/android/gms/common/util/Clock; +Lcom/google/android/gms/common/util/DefaultClock; +HSPLcom/google/android/gms/common/util/DefaultClock;->()V +HSPLcom/google/android/gms/common/util/DefaultClock;->()V +HSPLcom/google/android/gms/common/util/DefaultClock;->currentTimeMillis()J +HSPLcom/google/android/gms/common/util/DefaultClock;->elapsedRealtime()J +HSPLcom/google/android/gms/common/util/DefaultClock;->getInstance()Lcom/google/android/gms/common/util/Clock; +Lcom/google/android/gms/common/util/DeviceProperties; +HSPLcom/google/android/gms/common/util/DeviceProperties;->isWearable(Landroid/content/Context;)Z +HSPLcom/google/android/gms/common/util/DeviceProperties;->isWearableWithoutPlayStore(Landroid/content/Context;)Z +HSPLcom/google/android/gms/common/util/DeviceProperties;->zza(Landroid/content/Context;)Z +HSPLcom/google/android/gms/common/util/DeviceProperties;->zzb(Landroid/content/Context;)Z +Lcom/google/android/gms/common/util/PlatformVersion; +HSPLcom/google/android/gms/common/util/PlatformVersion;->isAtLeastIceCreamSandwich()Z +HSPLcom/google/android/gms/common/util/PlatformVersion;->isAtLeastKitKatWatch()Z +HSPLcom/google/android/gms/common/util/PlatformVersion;->isAtLeastLollipop()Z +HSPLcom/google/android/gms/common/util/PlatformVersion;->isAtLeastO()Z +HSPLcom/google/android/gms/common/util/PlatformVersion;->isAtLeastQ()Z +HSPLcom/google/android/gms/common/util/PlatformVersion;->isAtLeastS()Z +Lcom/google/android/gms/common/util/Strings; +HSPLcom/google/android/gms/common/util/Strings;->()V +HSPLcom/google/android/gms/common/util/Strings;->isEmptyOrWhitespace(Ljava/lang/String;)Z +Lcom/google/android/gms/common/util/zza; +HSPLcom/google/android/gms/common/util/zza;->zza(I)I +Lcom/google/android/gms/common/util/zzb; +HSPLcom/google/android/gms/common/util/zzb;->zza()Z +Lcom/google/android/gms/common/wrappers/InstantApps; +HSPLcom/google/android/gms/common/wrappers/InstantApps;->isInstantApp(Landroid/content/Context;)Z +Lcom/google/android/gms/common/wrappers/PackageManagerWrapper; +HSPLcom/google/android/gms/common/wrappers/PackageManagerWrapper;->(Landroid/content/Context;)V +HSPLcom/google/android/gms/common/wrappers/PackageManagerWrapper;->checkCallingOrSelfPermission(Ljava/lang/String;)I +HSPLcom/google/android/gms/common/wrappers/PackageManagerWrapper;->getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo; +HSPLcom/google/android/gms/common/wrappers/PackageManagerWrapper;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo; +HSPLcom/google/android/gms/common/wrappers/PackageManagerWrapper;->isCallerInstantApp()Z +Lcom/google/android/gms/common/wrappers/Wrappers; +HSPLcom/google/android/gms/common/wrappers/Wrappers;->()V +HSPLcom/google/android/gms/common/wrappers/Wrappers;->()V +HSPLcom/google/android/gms/common/wrappers/Wrappers;->packageManager(Landroid/content/Context;)Lcom/google/android/gms/common/wrappers/PackageManagerWrapper; +HSPLcom/google/android/gms/common/wrappers/Wrappers;->zza(Landroid/content/Context;)Lcom/google/android/gms/common/wrappers/PackageManagerWrapper; +Lcom/google/android/gms/common/zzb; +HSPLcom/google/android/gms/common/zzb;->()V +Lcom/google/android/gms/common/zzc; +HSPLcom/google/android/gms/common/zzc;->()V +HSPLcom/google/android/gms/common/zzc;->newArray(I)[Ljava/lang/Object; +Lcom/google/android/gms/common/zzf; +HSPLcom/google/android/gms/common/zzf;->([B)V +Lcom/google/android/gms/common/zzg; +HSPLcom/google/android/gms/common/zzg;->([B)V +Lcom/google/android/gms/common/zzh; +HSPLcom/google/android/gms/common/zzh;->([B)V +HSPLcom/google/android/gms/common/zzh;->zzb()[B +Lcom/google/android/gms/common/zzi; +HSPLcom/google/android/gms/common/zzi;->([B)V +Lcom/google/android/gms/common/zzj; +HSPLcom/google/android/gms/common/zzj;->([B)V +HSPLcom/google/android/gms/common/zzj;->equals(Ljava/lang/Object;)Z +HSPLcom/google/android/gms/common/zzj;->zzc()I +HSPLcom/google/android/gms/common/zzj;->zzd()Lcom/google/android/gms/dynamic/IObjectWrapper; +HSPLcom/google/android/gms/common/zzj;->zze(Ljava/lang/String;)[B +Lcom/google/android/gms/common/zzk; +HSPLcom/google/android/gms/common/zzk;->([B)V +HSPLcom/google/android/gms/common/zzk;->zzf()[B +Lcom/google/android/gms/common/zzl; +HSPLcom/google/android/gms/common/zzl;->()V +HSPLcom/google/android/gms/common/zzl;->([B)V +HSPLcom/google/android/gms/common/zzl;->zzf()[B +Lcom/google/android/gms/common/zzm; +HSPLcom/google/android/gms/common/zzm;->()V +Lcom/google/android/gms/common/zzn; +HSPLcom/google/android/gms/common/zzn;->()V +HSPLcom/google/android/gms/common/zzn;->zze(Landroid/content/Context;)V +Lcom/google/android/gms/dynamic/IObjectWrapper; +Lcom/google/android/gms/dynamic/IObjectWrapper$Stub; +HSPLcom/google/android/gms/dynamic/IObjectWrapper$Stub;->()V +Lcom/google/android/gms/dynamic/ObjectWrapper; +HSPLcom/google/android/gms/dynamic/ObjectWrapper;->(Ljava/lang/Object;)V +HSPLcom/google/android/gms/dynamic/ObjectWrapper;->unwrap(Lcom/google/android/gms/dynamic/IObjectWrapper;)Ljava/lang/Object; +HSPLcom/google/android/gms/dynamic/ObjectWrapper;->wrap(Ljava/lang/Object;)Lcom/google/android/gms/dynamic/IObjectWrapper; +Lcom/google/android/gms/dynamite/DynamiteModule; +HSPLcom/google/android/gms/dynamite/DynamiteModule;->()V +HSPLcom/google/android/gms/dynamite/DynamiteModule;->(Landroid/content/Context;)V +HSPLcom/google/android/gms/dynamite/DynamiteModule;->getLocalVersion(Landroid/content/Context;Ljava/lang/String;)I +HSPLcom/google/android/gms/dynamite/DynamiteModule;->getRemoteVersion(Landroid/content/Context;Ljava/lang/String;)I +HSPLcom/google/android/gms/dynamite/DynamiteModule;->instantiate(Ljava/lang/String;)Landroid/os/IBinder; +HSPLcom/google/android/gms/dynamite/DynamiteModule;->load(Landroid/content/Context;Lcom/google/android/gms/dynamite/DynamiteModule$VersionPolicy;Ljava/lang/String;)Lcom/google/android/gms/dynamite/DynamiteModule; +HSPLcom/google/android/gms/dynamite/DynamiteModule;->zza(Landroid/content/Context;Ljava/lang/String;Z)I +HSPLcom/google/android/gms/dynamite/DynamiteModule;->zzb(Landroid/content/Context;Ljava/lang/String;ZZ)I +HSPLcom/google/android/gms/dynamite/DynamiteModule;->zzc(Landroid/content/Context;Ljava/lang/String;)Lcom/google/android/gms/dynamite/DynamiteModule; +HSPLcom/google/android/gms/dynamite/DynamiteModule;->zzd(Ljava/lang/ClassLoader;)V +HSPLcom/google/android/gms/dynamite/DynamiteModule;->zze(Landroid/database/Cursor;)Z +HSPLcom/google/android/gms/dynamite/DynamiteModule;->zzf(Landroid/content/Context;)Z +Lcom/google/android/gms/dynamite/DynamiteModule$DynamiteLoaderClassLoader; +Lcom/google/android/gms/dynamite/DynamiteModule$LoadingException; +Lcom/google/android/gms/dynamite/DynamiteModule$VersionPolicy; +Lcom/google/android/gms/dynamite/DynamiteModule$VersionPolicy$IVersions; +Lcom/google/android/gms/dynamite/DynamiteModule$VersionPolicy$SelectionResult; +HSPLcom/google/android/gms/dynamite/DynamiteModule$VersionPolicy$SelectionResult;->()V +Lcom/google/android/gms/dynamite/descriptors/com/google/android/gms/measurement/dynamite/ModuleDescriptor; +Lcom/google/android/gms/dynamite/zza; +HSPLcom/google/android/gms/dynamite/zza;->(Ljava/lang/ThreadGroup;Ljava/lang/String;)V +HSPLcom/google/android/gms/dynamite/zza;->run()V +Lcom/google/android/gms/dynamite/zzb; +HSPLcom/google/android/gms/dynamite/zzb;->()V +HSPLcom/google/android/gms/dynamite/zzb;->zza()Ljava/lang/ClassLoader; +HSPLcom/google/android/gms/dynamite/zzb;->zzb()Ljava/lang/ClassLoader; +HSPLcom/google/android/gms/dynamite/zzb;->zzc()Ljava/lang/Thread; +Lcom/google/android/gms/dynamite/zzd; +HSPLcom/google/android/gms/dynamite/zzd;->()V +HSPLcom/google/android/gms/dynamite/zzd;->initialValue()Ljava/lang/Object; +Lcom/google/android/gms/dynamite/zze; +HSPLcom/google/android/gms/dynamite/zze;->()V +HSPLcom/google/android/gms/dynamite/zze;->zza(Landroid/content/Context;Ljava/lang/String;)I +HSPLcom/google/android/gms/dynamite/zze;->zzb(Landroid/content/Context;Ljava/lang/String;Z)I +Lcom/google/android/gms/dynamite/zzf; +HSPLcom/google/android/gms/dynamite/zzf;->()V +Lcom/google/android/gms/dynamite/zzg; +HSPLcom/google/android/gms/dynamite/zzg;->()V +Lcom/google/android/gms/dynamite/zzh; +HSPLcom/google/android/gms/dynamite/zzh;->()V +Lcom/google/android/gms/dynamite/zzi; +HSPLcom/google/android/gms/dynamite/zzi;->()V +HSPLcom/google/android/gms/dynamite/zzi;->selectModule(Landroid/content/Context;Ljava/lang/String;Lcom/google/android/gms/dynamite/DynamiteModule$VersionPolicy$IVersions;)Lcom/google/android/gms/dynamite/DynamiteModule$VersionPolicy$SelectionResult; +Lcom/google/android/gms/dynamite/zzj; +HSPLcom/google/android/gms/dynamite/zzj;->()V +Lcom/google/android/gms/dynamite/zzk; +HSPLcom/google/android/gms/dynamite/zzk;->()V +Lcom/google/android/gms/dynamite/zzl; +HSPLcom/google/android/gms/dynamite/zzl;->()V +Lcom/google/android/gms/dynamite/zzn; +HSPLcom/google/android/gms/dynamite/zzn;->(Lcom/google/android/gms/dynamite/zzm;)V +Lcom/google/android/gms/dynamite/zzr; +HSPLcom/google/android/gms/dynamite/zzr;->(Landroid/os/IBinder;)V +Lcom/google/android/gms/internal/common/zza; +HSPLcom/google/android/gms/internal/common/zza;->(Landroid/os/IBinder;Ljava/lang/String;)V +Lcom/google/android/gms/internal/common/zzb; +HSPLcom/google/android/gms/internal/common/zzb;->(Ljava/lang/String;)V +HSPLcom/google/android/gms/internal/common/zzb;->asBinder()Landroid/os/IBinder; +HSPLcom/google/android/gms/internal/common/zzb;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +Lcom/google/android/gms/internal/common/zzc; +HSPLcom/google/android/gms/internal/common/zzc;->()V +HSPLcom/google/android/gms/internal/common/zzc;->zza(Landroid/os/Parcel;Landroid/os/Parcelable$Creator;)Landroid/os/Parcelable; +HSPLcom/google/android/gms/internal/common/zzc;->zzb(Landroid/os/Parcel;)V +Lcom/google/android/gms/internal/common/zzi; +HSPLcom/google/android/gms/internal/common/zzi;->(Landroid/os/Looper;)V +HSPLcom/google/android/gms/internal/common/zzi;->(Landroid/os/Looper;Landroid/os/Handler$Callback;)V +Lcom/google/android/gms/internal/measurement/zzbu; +HSPLcom/google/android/gms/internal/measurement/zzbu;->(Landroid/os/IBinder;Ljava/lang/String;)V +HSPLcom/google/android/gms/internal/measurement/zzbu;->a_()Landroid/os/Parcel; +HSPLcom/google/android/gms/internal/measurement/zzbu;->zza(ILandroid/os/Parcel;)Landroid/os/Parcel; +HSPLcom/google/android/gms/internal/measurement/zzbu;->zzb(ILandroid/os/Parcel;)V +Lcom/google/android/gms/internal/measurement/zzbw; +HSPLcom/google/android/gms/internal/measurement/zzbw;->()V +HSPLcom/google/android/gms/internal/measurement/zzbw;->zza(Landroid/os/Parcel;Landroid/os/Parcelable;)V +Lcom/google/android/gms/internal/measurement/zzbx; +HSPLcom/google/android/gms/internal/measurement/zzbx;->()V +HSPLcom/google/android/gms/internal/measurement/zzbx;->(Ljava/lang/String;)V +Lcom/google/android/gms/internal/measurement/zzch; +HSPLcom/google/android/gms/internal/measurement/zzch;->()V +HSPLcom/google/android/gms/internal/measurement/zzch;->zza()Lcom/google/android/gms/internal/measurement/zzci; +Lcom/google/android/gms/internal/measurement/zzci; +Lcom/google/android/gms/internal/measurement/zzck; +HSPLcom/google/android/gms/internal/measurement/zzck;->()V +HSPLcom/google/android/gms/internal/measurement/zzck;->(Lcom/google/android/gms/internal/measurement/zzcj;)V +HSPLcom/google/android/gms/internal/measurement/zzck;->zza(Ljava/util/concurrent/ThreadFactory;I)Ljava/util/concurrent/ExecutorService; +Lcom/google/android/gms/internal/measurement/zzcl; +HSPLcom/google/android/gms/internal/measurement/zzcl;->zza()Lcom/google/android/gms/internal/measurement/zzcm; +Lcom/google/android/gms/internal/measurement/zzcm; +Lcom/google/android/gms/internal/measurement/zzcn; +HSPLcom/google/android/gms/internal/measurement/zzcn;->()V +HSPLcom/google/android/gms/internal/measurement/zzcn;->zza(Ljava/lang/Runnable;)Ljava/lang/Runnable; +Lcom/google/android/gms/internal/measurement/zzco; +HSPLcom/google/android/gms/internal/measurement/zzco;->()V +HSPLcom/google/android/gms/internal/measurement/zzco;->zza()Lcom/google/android/gms/internal/measurement/zzcm; +Lcom/google/android/gms/internal/measurement/zzcp; +HSPLcom/google/android/gms/internal/measurement/zzcp;->()V +HSPLcom/google/android/gms/internal/measurement/zzcp;->(Landroid/os/Looper;)V +Lcom/google/android/gms/internal/measurement/zzcq; +HSPLcom/google/android/gms/internal/measurement/zzcq;->()V +Lcom/google/android/gms/internal/measurement/zzct; +HSPLcom/google/android/gms/internal/measurement/zzct;->()V +HSPLcom/google/android/gms/internal/measurement/zzct;->asInterface(Landroid/os/IBinder;)Lcom/google/android/gms/internal/measurement/zzcu; +Lcom/google/android/gms/internal/measurement/zzcu; +Lcom/google/android/gms/internal/measurement/zzcz; +HSPLcom/google/android/gms/internal/measurement/zzcz;->()V +Lcom/google/android/gms/internal/measurement/zzda; +Lcom/google/android/gms/internal/measurement/zzdd; +HSPLcom/google/android/gms/internal/measurement/zzdd;->()V +HSPLcom/google/android/gms/internal/measurement/zzdd;->(JJZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;Ljava/lang/String;)V +Lcom/google/android/gms/internal/measurement/zzdf; +HSPLcom/google/android/gms/internal/measurement/zzdf;->(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)V +HSPLcom/google/android/gms/internal/measurement/zzdf;->zza(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Lcom/google/android/gms/internal/measurement/zzdf; +HSPLcom/google/android/gms/internal/measurement/zzdf;->zza(Landroid/content/Context;Z)Lcom/google/android/gms/internal/measurement/zzcu; +HSPLcom/google/android/gms/internal/measurement/zzdf;->zza(Lcom/google/android/gms/internal/measurement/zzdf$zza;)V +HSPLcom/google/android/gms/internal/measurement/zzdf;->zza(Lcom/google/android/gms/internal/measurement/zzdf;)Lcom/google/android/gms/internal/measurement/zzcu; +HSPLcom/google/android/gms/internal/measurement/zzdf;->zza(Lcom/google/android/gms/internal/measurement/zzdf;Lcom/google/android/gms/internal/measurement/zzcu;)V +HSPLcom/google/android/gms/internal/measurement/zzdf;->zza(Lcom/google/android/gms/internal/measurement/zzdf;Lcom/google/android/gms/internal/measurement/zzdf$zza;)V +HSPLcom/google/android/gms/internal/measurement/zzdf;->zza(Lcom/google/android/gms/internal/measurement/zzdf;Ljava/lang/String;Ljava/lang/String;)Z +HSPLcom/google/android/gms/internal/measurement/zzdf;->zza(Lcom/google/android/gms/measurement/internal/zzil;)V +HSPLcom/google/android/gms/internal/measurement/zzdf;->zzb()Lcom/google/android/gms/measurement/api/AppMeasurementSdk; +HSPLcom/google/android/gms/internal/measurement/zzdf;->zzb(Landroid/content/Context;)Z +HSPLcom/google/android/gms/internal/measurement/zzdf;->zzc(Lcom/google/android/gms/internal/measurement/zzdf;)Z +HSPLcom/google/android/gms/internal/measurement/zzdf;->zzc(Ljava/lang/String;Ljava/lang/String;)Z +HSPLcom/google/android/gms/internal/measurement/zzdf;->zzk()Z +Lcom/google/android/gms/internal/measurement/zzdf$zza; +HSPLcom/google/android/gms/internal/measurement/zzdf$zza;->(Lcom/google/android/gms/internal/measurement/zzdf;)V +HSPLcom/google/android/gms/internal/measurement/zzdf$zza;->(Lcom/google/android/gms/internal/measurement/zzdf;Z)V +HSPLcom/google/android/gms/internal/measurement/zzdf$zza;->run()V +Lcom/google/android/gms/internal/measurement/zzdf$zzb; +HSPLcom/google/android/gms/internal/measurement/zzdf$zzb;->(Lcom/google/android/gms/measurement/internal/zzil;)V +HSPLcom/google/android/gms/internal/measurement/zzdf$zzb;->zza()I +Lcom/google/android/gms/internal/measurement/zzdf$zzd; +HSPLcom/google/android/gms/internal/measurement/zzdf$zzd;->(Lcom/google/android/gms/internal/measurement/zzdf;)V +HSPLcom/google/android/gms/internal/measurement/zzdf$zzd;->onActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V +HSPLcom/google/android/gms/internal/measurement/zzdf$zzd;->onActivityResumed(Landroid/app/Activity;)V +HSPLcom/google/android/gms/internal/measurement/zzdf$zzd;->onActivityStarted(Landroid/app/Activity;)V +Lcom/google/android/gms/internal/measurement/zzdg; +HSPLcom/google/android/gms/internal/measurement/zzdg;->()V +Lcom/google/android/gms/internal/measurement/zzdi; +HSPLcom/google/android/gms/internal/measurement/zzdi;->(Lcom/google/android/gms/internal/measurement/zzdf;Ljava/lang/String;Ljava/lang/String;Landroid/content/Context;Landroid/os/Bundle;)V +HSPLcom/google/android/gms/internal/measurement/zzdi;->zza()V +Lcom/google/android/gms/internal/measurement/zzdr; +HSPLcom/google/android/gms/internal/measurement/zzdr;->(Lcom/google/android/gms/internal/measurement/zzdf;)V +HSPLcom/google/android/gms/internal/measurement/zzdr;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread; +Lcom/google/android/gms/internal/measurement/zzej; +HSPLcom/google/android/gms/internal/measurement/zzej;->(Lcom/google/android/gms/internal/measurement/zzdf;Lcom/google/android/gms/internal/measurement/zzdf$zzb;)V +HSPLcom/google/android/gms/internal/measurement/zzej;->zza()V +Lcom/google/android/gms/internal/measurement/zzeo; +HSPLcom/google/android/gms/internal/measurement/zzeo;->(Lcom/google/android/gms/internal/measurement/zzdf$zzd;Landroid/os/Bundle;Landroid/app/Activity;)V +HSPLcom/google/android/gms/internal/measurement/zzeo;->zza()V +Lcom/google/android/gms/internal/measurement/zzep; +HSPLcom/google/android/gms/internal/measurement/zzep;->(Lcom/google/android/gms/internal/measurement/zzdf$zzd;Landroid/app/Activity;)V +HSPLcom/google/android/gms/internal/measurement/zzep;->zza()V +Lcom/google/android/gms/internal/measurement/zzeq; +HSPLcom/google/android/gms/internal/measurement/zzeq;->(Lcom/google/android/gms/internal/measurement/zzdf$zzd;Landroid/app/Activity;)V +HSPLcom/google/android/gms/internal/measurement/zzeq;->zza()V +Lcom/google/android/gms/internal/measurement/zzfr; +HSPLcom/google/android/gms/internal/measurement/zzfr;->()V +Lcom/google/android/gms/internal/measurement/zzfr$zzb; +Lcom/google/android/gms/internal/measurement/zzfv; +HSPLcom/google/android/gms/internal/measurement/zzfv;->(Landroid/content/Context;Lcom/google/common/base/Supplier;)V +HSPLcom/google/android/gms/internal/measurement/zzfv;->zza()Landroid/content/Context; +HSPLcom/google/android/gms/internal/measurement/zzfv;->zzb()Lcom/google/common/base/Supplier; +Lcom/google/android/gms/internal/measurement/zzfx; +HSPLcom/google/android/gms/internal/measurement/zzfx;->(Lcom/google/android/gms/internal/measurement/zzfy;)V +HSPLcom/google/android/gms/internal/measurement/zzfx;->zza()Ljava/lang/Object; +Lcom/google/android/gms/internal/measurement/zzfy; +HSPLcom/google/android/gms/internal/measurement/zzfy;->()V +HSPLcom/google/android/gms/internal/measurement/zzfy;->(Landroid/content/ContentResolver;Landroid/net/Uri;Ljava/lang/Runnable;)V +HSPLcom/google/android/gms/internal/measurement/zzfy;->zza()Ljava/util/Map; +HSPLcom/google/android/gms/internal/measurement/zzfy;->zza(Landroid/content/ContentResolver;Landroid/net/Uri;Ljava/lang/Runnable;)Lcom/google/android/gms/internal/measurement/zzfy; +HSPLcom/google/android/gms/internal/measurement/zzfy;->zza(Ljava/lang/String;)Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzfy;->zzb()Ljava/util/Map; +HSPLcom/google/android/gms/internal/measurement/zzfy;->zzc()V +HSPLcom/google/android/gms/internal/measurement/zzfy;->zze()Ljava/util/Map; +Lcom/google/android/gms/internal/measurement/zzga; +HSPLcom/google/android/gms/internal/measurement/zzga;->(Lcom/google/android/gms/internal/measurement/zzfy;Landroid/os/Handler;)V +Lcom/google/android/gms/internal/measurement/zzgb; +Lcom/google/android/gms/internal/measurement/zzgd; +Lcom/google/android/gms/internal/measurement/zzge; +HSPLcom/google/android/gms/internal/measurement/zzge;->zza(Lcom/google/android/gms/internal/measurement/zzgd;)Ljava/lang/Object; +Lcom/google/android/gms/internal/measurement/zzgg; +HSPLcom/google/android/gms/internal/measurement/zzgg;->zza()V +Lcom/google/android/gms/internal/measurement/zzgh; +Lcom/google/android/gms/internal/measurement/zzgj; +HSPLcom/google/android/gms/internal/measurement/zzgj;->()V +Lcom/google/android/gms/internal/measurement/zzgj$zza; +HSPLcom/google/android/gms/internal/measurement/zzgj$zza;->()V +HSPLcom/google/android/gms/internal/measurement/zzgj$zza;->zza(Landroid/content/Context;)Lcom/google/common/base/Optional; +Lcom/google/android/gms/internal/measurement/zzgk; +HSPLcom/google/android/gms/internal/measurement/zzgk;->()V +HSPLcom/google/android/gms/internal/measurement/zzgk;->zza(Ljava/lang/String;)Landroid/net/Uri; +Lcom/google/android/gms/internal/measurement/zzgl; +HSPLcom/google/android/gms/internal/measurement/zzgl;->()V +HSPLcom/google/android/gms/internal/measurement/zzgl;->zza(Landroid/content/Context;)Z +HSPLcom/google/android/gms/internal/measurement/zzgl;->zza(Landroid/content/Context;Landroid/net/Uri;)Z +Lcom/google/android/gms/internal/measurement/zzgm; +HSPLcom/google/android/gms/internal/measurement/zzgm;->()V +HSPLcom/google/android/gms/internal/measurement/zzgm;->()V +Lcom/google/android/gms/internal/measurement/zzgn; +HSPLcom/google/android/gms/internal/measurement/zzgn;->()V +HSPLcom/google/android/gms/internal/measurement/zzgn;->(Lcom/google/android/gms/internal/measurement/zzgv;Ljava/lang/String;Ljava/lang/Object;Z)V +HSPLcom/google/android/gms/internal/measurement/zzgn;->(Lcom/google/android/gms/internal/measurement/zzgv;Ljava/lang/String;Ljava/lang/Object;ZLcom/google/android/gms/internal/measurement/zzgx;)V +HSPLcom/google/android/gms/internal/measurement/zzgn;->zza()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzgn;->zza(Landroid/content/Context;)Lcom/google/common/base/Optional; +HSPLcom/google/android/gms/internal/measurement/zzgn;->zza(Lcom/google/android/gms/internal/measurement/zzgu;)Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzgn;->zza(Lcom/google/android/gms/internal/measurement/zzgv;Ljava/lang/String;Ljava/lang/Boolean;Z)Lcom/google/android/gms/internal/measurement/zzgn; +HSPLcom/google/android/gms/internal/measurement/zzgn;->zza(Lcom/google/android/gms/internal/measurement/zzgv;Ljava/lang/String;Ljava/lang/Double;Z)Lcom/google/android/gms/internal/measurement/zzgn; +HSPLcom/google/android/gms/internal/measurement/zzgn;->zza(Lcom/google/android/gms/internal/measurement/zzgv;Ljava/lang/String;Ljava/lang/Long;Z)Lcom/google/android/gms/internal/measurement/zzgn; +HSPLcom/google/android/gms/internal/measurement/zzgn;->zza(Lcom/google/android/gms/internal/measurement/zzgv;Ljava/lang/String;Ljava/lang/String;Z)Lcom/google/android/gms/internal/measurement/zzgn; +HSPLcom/google/android/gms/internal/measurement/zzgn;->zza(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzgn;->zzb()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzgn;->zzb(Landroid/content/Context;)V +HSPLcom/google/android/gms/internal/measurement/zzgn;->zzb(Lcom/google/android/gms/internal/measurement/zzgu;)Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzgn;->zzd()Z +Lcom/google/android/gms/internal/measurement/zzgo; +HSPLcom/google/android/gms/internal/measurement/zzgo;->()V +HSPLcom/google/android/gms/internal/measurement/zzgo;->()V +HSPLcom/google/android/gms/internal/measurement/zzgo;->zza()Z +Lcom/google/android/gms/internal/measurement/zzgp; +HSPLcom/google/android/gms/internal/measurement/zzgp;->(Landroid/content/Context;)V +HSPLcom/google/android/gms/internal/measurement/zzgp;->get()Ljava/lang/Object; +Lcom/google/android/gms/internal/measurement/zzgq; +HSPLcom/google/android/gms/internal/measurement/zzgq;->(Lcom/google/android/gms/internal/measurement/zzgv;Ljava/lang/String;Ljava/lang/Boolean;Z)V +HSPLcom/google/android/gms/internal/measurement/zzgq;->zza(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/google/android/gms/internal/measurement/zzgr; +HSPLcom/google/android/gms/internal/measurement/zzgr;->(Lcom/google/android/gms/internal/measurement/zzgv;Ljava/lang/String;Ljava/lang/Long;Z)V +HSPLcom/google/android/gms/internal/measurement/zzgr;->zza(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzgr;->zzb(Ljava/lang/Object;)Ljava/lang/Long; +Lcom/google/android/gms/internal/measurement/zzgs; +HSPLcom/google/android/gms/internal/measurement/zzgs;->(Lcom/google/android/gms/internal/measurement/zzgv;Ljava/lang/String;Ljava/lang/String;Z)V +HSPLcom/google/android/gms/internal/measurement/zzgs;->zza(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/google/android/gms/internal/measurement/zzgt; +HSPLcom/google/android/gms/internal/measurement/zzgt;->(Lcom/google/android/gms/internal/measurement/zzgv;Ljava/lang/String;Ljava/lang/Double;Z)V +HSPLcom/google/android/gms/internal/measurement/zzgt;->zza(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzgt;->zzb(Ljava/lang/Object;)Ljava/lang/Double; +Lcom/google/android/gms/internal/measurement/zzgu; +HSPLcom/google/android/gms/internal/measurement/zzgu;->()V +Lcom/google/android/gms/internal/measurement/zzgv; +HSPLcom/google/android/gms/internal/measurement/zzgv;->(Landroid/net/Uri;)V +HSPLcom/google/android/gms/internal/measurement/zzgv;->(Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;ZZZZLcom/google/common/base/Function;)V +HSPLcom/google/android/gms/internal/measurement/zzgv;->zza()Lcom/google/android/gms/internal/measurement/zzgv; +HSPLcom/google/android/gms/internal/measurement/zzgv;->zza(Ljava/lang/String;D)Lcom/google/android/gms/internal/measurement/zzgn; +HSPLcom/google/android/gms/internal/measurement/zzgv;->zza(Ljava/lang/String;J)Lcom/google/android/gms/internal/measurement/zzgn; +HSPLcom/google/android/gms/internal/measurement/zzgv;->zza(Ljava/lang/String;Ljava/lang/String;)Lcom/google/android/gms/internal/measurement/zzgn; +HSPLcom/google/android/gms/internal/measurement/zzgv;->zza(Ljava/lang/String;Z)Lcom/google/android/gms/internal/measurement/zzgn; +HSPLcom/google/android/gms/internal/measurement/zzgv;->zzb()Lcom/google/android/gms/internal/measurement/zzgv; +Lcom/google/android/gms/internal/measurement/zzgw; +HSPLcom/google/android/gms/internal/measurement/zzgw;->()V +HSPLcom/google/android/gms/internal/measurement/zzgw;->zza()V +Lcom/google/android/gms/internal/measurement/zzgy; +HSPLcom/google/android/gms/internal/measurement/zzgy;->(Lcom/google/android/gms/internal/measurement/zzhb;)V +Lcom/google/android/gms/internal/measurement/zzhb; +Lcom/google/android/gms/internal/measurement/zzmy; +HSPLcom/google/android/gms/internal/measurement/zzmy;->()V +HSPLcom/google/android/gms/internal/measurement/zzmy;->()V +HSPLcom/google/android/gms/internal/measurement/zzmy;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzmy;->zza()Z +Lcom/google/android/gms/internal/measurement/zzna; +HSPLcom/google/android/gms/internal/measurement/zzna;->()V +HSPLcom/google/android/gms/internal/measurement/zzna;->()V +HSPLcom/google/android/gms/internal/measurement/zzna;->zza()Z +Lcom/google/android/gms/internal/measurement/zznb; +Lcom/google/android/gms/internal/measurement/zznc; +Lcom/google/android/gms/internal/measurement/zznd; +HSPLcom/google/android/gms/internal/measurement/zznd;->()V +HSPLcom/google/android/gms/internal/measurement/zznd;->()V +HSPLcom/google/android/gms/internal/measurement/zznd;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zznd;->zza()Z +Lcom/google/android/gms/internal/measurement/zzne; +HSPLcom/google/android/gms/internal/measurement/zzne;->()V +HSPLcom/google/android/gms/internal/measurement/zzne;->()V +HSPLcom/google/android/gms/internal/measurement/zzne;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzne;->zza()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzaa()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzab()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzac()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzad()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzae()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzaf()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzag()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzah()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzai()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzaj()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzak()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzal()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzne;->zzam()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzne;->zzan()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzne;->zzao()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzne;->zzap()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzne;->zzaq()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzne;->zzar()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzne;->zzas()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzne;->zzat()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzne;->zzau()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzne;->zzb()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzc()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzd()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zze()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzf()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzg()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzh()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzi()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzj()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzk()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzl()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzm()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzn()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzo()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzp()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzq()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzr()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzs()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzt()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzu()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzv()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzw()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzx()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzy()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzz()J +Lcom/google/android/gms/internal/measurement/zznf; +HSPLcom/google/android/gms/internal/measurement/zznf;->()V +HSPLcom/google/android/gms/internal/measurement/zznf;->()V +HSPLcom/google/android/gms/internal/measurement/zznf;->zza()Z +Lcom/google/android/gms/internal/measurement/zzng; +HSPLcom/google/android/gms/internal/measurement/zzng;->()V +HSPLcom/google/android/gms/internal/measurement/zzng;->()V +HSPLcom/google/android/gms/internal/measurement/zzng;->zza()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzaa()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzab()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzac()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzad()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzae()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzaf()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzag()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzah()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzai()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzaj()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzak()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzal()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzng;->zzam()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzng;->zzan()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzng;->zzao()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzng;->zzap()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzng;->zzaq()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzng;->zzar()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzng;->zzas()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzng;->zzat()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzng;->zzau()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzng;->zzb()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzc()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzd()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zze()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzf()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzg()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzh()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzi()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzj()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzk()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzl()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzm()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzn()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzo()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzp()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzq()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzr()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzs()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzt()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzu()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzv()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzw()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzx()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzy()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzz()J +Lcom/google/android/gms/internal/measurement/zznh; +Lcom/google/android/gms/internal/measurement/zzni; +Lcom/google/android/gms/internal/measurement/zznj; +HSPLcom/google/android/gms/internal/measurement/zznj;->()V +HSPLcom/google/android/gms/internal/measurement/zznj;->()V +HSPLcom/google/android/gms/internal/measurement/zznj;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zznj;->zza()J +Lcom/google/android/gms/internal/measurement/zznk; +HSPLcom/google/android/gms/internal/measurement/zznk;->()V +HSPLcom/google/android/gms/internal/measurement/zznk;->()V +HSPLcom/google/android/gms/internal/measurement/zznk;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zznk;->zzb()Z +Lcom/google/android/gms/internal/measurement/zznl; +HSPLcom/google/android/gms/internal/measurement/zznl;->()V +HSPLcom/google/android/gms/internal/measurement/zznl;->()V +HSPLcom/google/android/gms/internal/measurement/zznl;->zza()J +Lcom/google/android/gms/internal/measurement/zznm; +HSPLcom/google/android/gms/internal/measurement/zznm;->()V +HSPLcom/google/android/gms/internal/measurement/zznm;->()V +HSPLcom/google/android/gms/internal/measurement/zznm;->zzb()Z +Lcom/google/android/gms/internal/measurement/zznn; +Lcom/google/android/gms/internal/measurement/zzno; +Lcom/google/android/gms/internal/measurement/zznp; +HSPLcom/google/android/gms/internal/measurement/zznp;->()V +HSPLcom/google/android/gms/internal/measurement/zznp;->()V +HSPLcom/google/android/gms/internal/measurement/zznp;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zznp;->zza()Z +HSPLcom/google/android/gms/internal/measurement/zznp;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zznp;->zzc()Z +HSPLcom/google/android/gms/internal/measurement/zznp;->zzd()Z +HSPLcom/google/android/gms/internal/measurement/zznp;->zze()Z +HSPLcom/google/android/gms/internal/measurement/zznp;->zzf()Z +HSPLcom/google/android/gms/internal/measurement/zznp;->zzg()Z +Lcom/google/android/gms/internal/measurement/zznq; +HSPLcom/google/android/gms/internal/measurement/zznq;->()V +HSPLcom/google/android/gms/internal/measurement/zznq;->()V +HSPLcom/google/android/gms/internal/measurement/zznq;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zznq;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zznq;->zzc()Z +Lcom/google/android/gms/internal/measurement/zznr; +HSPLcom/google/android/gms/internal/measurement/zznr;->()V +HSPLcom/google/android/gms/internal/measurement/zznr;->()V +HSPLcom/google/android/gms/internal/measurement/zznr;->zza()Z +HSPLcom/google/android/gms/internal/measurement/zznr;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zznr;->zzc()Z +HSPLcom/google/android/gms/internal/measurement/zznr;->zzd()Z +HSPLcom/google/android/gms/internal/measurement/zznr;->zze()Z +HSPLcom/google/android/gms/internal/measurement/zznr;->zzf()Z +HSPLcom/google/android/gms/internal/measurement/zznr;->zzg()Z +Lcom/google/android/gms/internal/measurement/zzns; +HSPLcom/google/android/gms/internal/measurement/zzns;->()V +HSPLcom/google/android/gms/internal/measurement/zzns;->()V +HSPLcom/google/android/gms/internal/measurement/zzns;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zzns;->zzc()Z +Lcom/google/android/gms/internal/measurement/zznt; +Lcom/google/android/gms/internal/measurement/zznu; +Lcom/google/android/gms/internal/measurement/zznv; +HSPLcom/google/android/gms/internal/measurement/zznv;->()V +HSPLcom/google/android/gms/internal/measurement/zznv;->()V +HSPLcom/google/android/gms/internal/measurement/zznv;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zznv;->zza()Z +HSPLcom/google/android/gms/internal/measurement/zznv;->zzb()Z +Lcom/google/android/gms/internal/measurement/zznw; +HSPLcom/google/android/gms/internal/measurement/zznw;->()V +HSPLcom/google/android/gms/internal/measurement/zznw;->()V +HSPLcom/google/android/gms/internal/measurement/zznw;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zznw;->zzb()Z +Lcom/google/android/gms/internal/measurement/zznx; +HSPLcom/google/android/gms/internal/measurement/zznx;->()V +HSPLcom/google/android/gms/internal/measurement/zznx;->()V +HSPLcom/google/android/gms/internal/measurement/zznx;->zza()Z +HSPLcom/google/android/gms/internal/measurement/zznx;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzny; +HSPLcom/google/android/gms/internal/measurement/zzny;->()V +HSPLcom/google/android/gms/internal/measurement/zzny;->()V +HSPLcom/google/android/gms/internal/measurement/zzny;->zzb()Z +Lcom/google/android/gms/internal/measurement/zznz; +Lcom/google/android/gms/internal/measurement/zzoa; +Lcom/google/android/gms/internal/measurement/zzob; +HSPLcom/google/android/gms/internal/measurement/zzob;->()V +HSPLcom/google/android/gms/internal/measurement/zzob;->()V +HSPLcom/google/android/gms/internal/measurement/zzob;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzob;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zzob;->zzc()Z +HSPLcom/google/android/gms/internal/measurement/zzob;->zzd()Z +Lcom/google/android/gms/internal/measurement/zzoc; +HSPLcom/google/android/gms/internal/measurement/zzoc;->()V +HSPLcom/google/android/gms/internal/measurement/zzoc;->()V +HSPLcom/google/android/gms/internal/measurement/zzoc;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzoc;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzod; +HSPLcom/google/android/gms/internal/measurement/zzod;->()V +HSPLcom/google/android/gms/internal/measurement/zzod;->()V +HSPLcom/google/android/gms/internal/measurement/zzod;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zzod;->zzc()Z +HSPLcom/google/android/gms/internal/measurement/zzod;->zzd()Z +Lcom/google/android/gms/internal/measurement/zzoe; +HSPLcom/google/android/gms/internal/measurement/zzoe;->()V +HSPLcom/google/android/gms/internal/measurement/zzoe;->()V +HSPLcom/google/android/gms/internal/measurement/zzoe;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzof; +Lcom/google/android/gms/internal/measurement/zzog; +Lcom/google/android/gms/internal/measurement/zzoh; +HSPLcom/google/android/gms/internal/measurement/zzoh;->()V +HSPLcom/google/android/gms/internal/measurement/zzoh;->()V +HSPLcom/google/android/gms/internal/measurement/zzoh;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzoh;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzoi; +HSPLcom/google/android/gms/internal/measurement/zzoi;->()V +HSPLcom/google/android/gms/internal/measurement/zzoi;->()V +HSPLcom/google/android/gms/internal/measurement/zzoi;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzoi;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zzoi;->zzc()Z +Lcom/google/android/gms/internal/measurement/zzoj; +HSPLcom/google/android/gms/internal/measurement/zzoj;->()V +HSPLcom/google/android/gms/internal/measurement/zzoj;->()V +HSPLcom/google/android/gms/internal/measurement/zzoj;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzok; +HSPLcom/google/android/gms/internal/measurement/zzok;->()V +HSPLcom/google/android/gms/internal/measurement/zzok;->()V +HSPLcom/google/android/gms/internal/measurement/zzok;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zzok;->zzc()Z +Lcom/google/android/gms/internal/measurement/zzol; +Lcom/google/android/gms/internal/measurement/zzom; +Lcom/google/android/gms/internal/measurement/zzon; +HSPLcom/google/android/gms/internal/measurement/zzon;->()V +HSPLcom/google/android/gms/internal/measurement/zzon;->()V +HSPLcom/google/android/gms/internal/measurement/zzon;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzon;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzoo; +HSPLcom/google/android/gms/internal/measurement/zzoo;->()V +HSPLcom/google/android/gms/internal/measurement/zzoo;->()V +HSPLcom/google/android/gms/internal/measurement/zzoo;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzoo;->zza()Z +HSPLcom/google/android/gms/internal/measurement/zzoo;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzop; +HSPLcom/google/android/gms/internal/measurement/zzop;->()V +HSPLcom/google/android/gms/internal/measurement/zzop;->()V +HSPLcom/google/android/gms/internal/measurement/zzop;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzoq; +HSPLcom/google/android/gms/internal/measurement/zzoq;->()V +HSPLcom/google/android/gms/internal/measurement/zzoq;->()V +HSPLcom/google/android/gms/internal/measurement/zzoq;->zza()Z +HSPLcom/google/android/gms/internal/measurement/zzoq;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzor; +Lcom/google/android/gms/internal/measurement/zzos; +Lcom/google/android/gms/internal/measurement/zzot; +HSPLcom/google/android/gms/internal/measurement/zzot;->()V +HSPLcom/google/android/gms/internal/measurement/zzot;->()V +HSPLcom/google/android/gms/internal/measurement/zzot;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzot;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zzot;->zzc()Z +Lcom/google/android/gms/internal/measurement/zzou; +HSPLcom/google/android/gms/internal/measurement/zzou;->()V +HSPLcom/google/android/gms/internal/measurement/zzou;->()V +HSPLcom/google/android/gms/internal/measurement/zzou;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzou;->zza()Z +Lcom/google/android/gms/internal/measurement/zzov; +HSPLcom/google/android/gms/internal/measurement/zzov;->()V +HSPLcom/google/android/gms/internal/measurement/zzov;->()V +HSPLcom/google/android/gms/internal/measurement/zzov;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zzov;->zzc()Z +Lcom/google/android/gms/internal/measurement/zzow; +HSPLcom/google/android/gms/internal/measurement/zzow;->()V +HSPLcom/google/android/gms/internal/measurement/zzow;->()V +HSPLcom/google/android/gms/internal/measurement/zzow;->zza()Z +Lcom/google/android/gms/internal/measurement/zzox; +Lcom/google/android/gms/internal/measurement/zzoy; +Lcom/google/android/gms/internal/measurement/zzoz; +HSPLcom/google/android/gms/internal/measurement/zzoz;->()V +HSPLcom/google/android/gms/internal/measurement/zzoz;->()V +HSPLcom/google/android/gms/internal/measurement/zzoz;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzoz;->zza()Z +Lcom/google/android/gms/internal/measurement/zzpa; +HSPLcom/google/android/gms/internal/measurement/zzpa;->()V +HSPLcom/google/android/gms/internal/measurement/zzpa;->()V +HSPLcom/google/android/gms/internal/measurement/zzpa;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzpa;->zza()D +HSPLcom/google/android/gms/internal/measurement/zzpa;->zzb()J +HSPLcom/google/android/gms/internal/measurement/zzpa;->zzc()J +HSPLcom/google/android/gms/internal/measurement/zzpa;->zzd()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzpa;->zze()Z +Lcom/google/android/gms/internal/measurement/zzpb; +HSPLcom/google/android/gms/internal/measurement/zzpb;->()V +HSPLcom/google/android/gms/internal/measurement/zzpb;->()V +HSPLcom/google/android/gms/internal/measurement/zzpb;->zza()Z +Lcom/google/android/gms/internal/measurement/zzpc; +HSPLcom/google/android/gms/internal/measurement/zzpc;->()V +HSPLcom/google/android/gms/internal/measurement/zzpc;->()V +HSPLcom/google/android/gms/internal/measurement/zzpc;->zza()D +HSPLcom/google/android/gms/internal/measurement/zzpc;->zzb()J +HSPLcom/google/android/gms/internal/measurement/zzpc;->zzc()J +HSPLcom/google/android/gms/internal/measurement/zzpc;->zzd()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzpc;->zze()Z +Lcom/google/android/gms/internal/measurement/zzpd; +Lcom/google/android/gms/internal/measurement/zzpe; +Lcom/google/android/gms/internal/measurement/zzpf; +HSPLcom/google/android/gms/internal/measurement/zzpf;->()V +HSPLcom/google/android/gms/internal/measurement/zzpf;->()V +HSPLcom/google/android/gms/internal/measurement/zzpf;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzpf;->zza()Z +Lcom/google/android/gms/internal/measurement/zzpg; +HSPLcom/google/android/gms/internal/measurement/zzpg;->()V +HSPLcom/google/android/gms/internal/measurement/zzpg;->()V +HSPLcom/google/android/gms/internal/measurement/zzpg;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzpg;->zza()Z +HSPLcom/google/android/gms/internal/measurement/zzpg;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zzpg;->zzc()Z +HSPLcom/google/android/gms/internal/measurement/zzpg;->zzd()Z +HSPLcom/google/android/gms/internal/measurement/zzpg;->zze()Z +HSPLcom/google/android/gms/internal/measurement/zzpg;->zzf()Z +Lcom/google/android/gms/internal/measurement/zzph; +HSPLcom/google/android/gms/internal/measurement/zzph;->()V +HSPLcom/google/android/gms/internal/measurement/zzph;->()V +HSPLcom/google/android/gms/internal/measurement/zzph;->zza()Z +Lcom/google/android/gms/internal/measurement/zzpi; +HSPLcom/google/android/gms/internal/measurement/zzpi;->()V +HSPLcom/google/android/gms/internal/measurement/zzpi;->()V +HSPLcom/google/android/gms/internal/measurement/zzpi;->zza()Z +HSPLcom/google/android/gms/internal/measurement/zzpi;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zzpi;->zzc()Z +HSPLcom/google/android/gms/internal/measurement/zzpi;->zzd()Z +HSPLcom/google/android/gms/internal/measurement/zzpi;->zze()Z +HSPLcom/google/android/gms/internal/measurement/zzpi;->zzf()Z +Lcom/google/android/gms/internal/measurement/zzpj; +Lcom/google/android/gms/internal/measurement/zzpk; +Lcom/google/android/gms/internal/measurement/zzpl; +HSPLcom/google/android/gms/internal/measurement/zzpl;->()V +HSPLcom/google/android/gms/internal/measurement/zzpl;->()V +HSPLcom/google/android/gms/internal/measurement/zzpl;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzpl;->zza()Z +HSPLcom/google/android/gms/internal/measurement/zzpl;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzpm; +HSPLcom/google/android/gms/internal/measurement/zzpm;->()V +HSPLcom/google/android/gms/internal/measurement/zzpm;->()V +HSPLcom/google/android/gms/internal/measurement/zzpm;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzpm;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzpn; +HSPLcom/google/android/gms/internal/measurement/zzpn;->()V +HSPLcom/google/android/gms/internal/measurement/zzpn;->()V +HSPLcom/google/android/gms/internal/measurement/zzpn;->zza()Z +HSPLcom/google/android/gms/internal/measurement/zzpn;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzpo; +HSPLcom/google/android/gms/internal/measurement/zzpo;->()V +HSPLcom/google/android/gms/internal/measurement/zzpo;->()V +HSPLcom/google/android/gms/internal/measurement/zzpo;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzpp; +Lcom/google/android/gms/internal/measurement/zzpq; +Lcom/google/android/gms/internal/measurement/zzpr; +HSPLcom/google/android/gms/internal/measurement/zzpr;->()V +HSPLcom/google/android/gms/internal/measurement/zzpr;->()V +HSPLcom/google/android/gms/internal/measurement/zzpr;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzpr;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzps; +HSPLcom/google/android/gms/internal/measurement/zzps;->()V +HSPLcom/google/android/gms/internal/measurement/zzps;->()V +HSPLcom/google/android/gms/internal/measurement/zzps;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzps;->zza()Z +HSPLcom/google/android/gms/internal/measurement/zzps;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zzps;->zzc()Z +HSPLcom/google/android/gms/internal/measurement/zzps;->zzd()Z +Lcom/google/android/gms/internal/measurement/zzpt; +HSPLcom/google/android/gms/internal/measurement/zzpt;->()V +HSPLcom/google/android/gms/internal/measurement/zzpt;->()V +HSPLcom/google/android/gms/internal/measurement/zzpt;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzpu; +HSPLcom/google/android/gms/internal/measurement/zzpu;->()V +HSPLcom/google/android/gms/internal/measurement/zzpu;->()V +HSPLcom/google/android/gms/internal/measurement/zzpu;->zza()Z +HSPLcom/google/android/gms/internal/measurement/zzpu;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zzpu;->zzc()Z +HSPLcom/google/android/gms/internal/measurement/zzpu;->zzd()Z +Lcom/google/android/gms/internal/measurement/zzpv; +Lcom/google/android/gms/internal/measurement/zzpw; +Lcom/google/android/gms/internal/measurement/zzpx; +HSPLcom/google/android/gms/internal/measurement/zzpx;->()V +HSPLcom/google/android/gms/internal/measurement/zzpx;->()V +HSPLcom/google/android/gms/internal/measurement/zzpx;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzpx;->zza()Z +Lcom/google/android/gms/internal/measurement/zzpy; +HSPLcom/google/android/gms/internal/measurement/zzpy;->()V +HSPLcom/google/android/gms/internal/measurement/zzpy;->()V +HSPLcom/google/android/gms/internal/measurement/zzpy;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzpy;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zzpy;->zzc()Z +Lcom/google/android/gms/internal/measurement/zzpz; +HSPLcom/google/android/gms/internal/measurement/zzpz;->()V +HSPLcom/google/android/gms/internal/measurement/zzpz;->()V +HSPLcom/google/android/gms/internal/measurement/zzpz;->zza()Z +Lcom/google/android/gms/internal/measurement/zzqa; +HSPLcom/google/android/gms/internal/measurement/zzqa;->()V +HSPLcom/google/android/gms/internal/measurement/zzqa;->()V +HSPLcom/google/android/gms/internal/measurement/zzqa;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zzqa;->zzc()Z +Lcom/google/android/gms/internal/measurement/zzqb; +Lcom/google/android/gms/internal/measurement/zzqc; +Lcom/google/android/gms/internal/measurement/zzqd; +HSPLcom/google/android/gms/internal/measurement/zzqd;->()V +HSPLcom/google/android/gms/internal/measurement/zzqd;->()V +HSPLcom/google/android/gms/internal/measurement/zzqd;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzqd;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zzqd;->zzc()Z +Lcom/google/android/gms/internal/measurement/zzqe; +HSPLcom/google/android/gms/internal/measurement/zzqe;->()V +HSPLcom/google/android/gms/internal/measurement/zzqe;->()V +HSPLcom/google/android/gms/internal/measurement/zzqe;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzqe;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzqf; +HSPLcom/google/android/gms/internal/measurement/zzqf;->()V +HSPLcom/google/android/gms/internal/measurement/zzqf;->()V +HSPLcom/google/android/gms/internal/measurement/zzqf;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zzqf;->zzc()Z +Lcom/google/android/gms/internal/measurement/zzqg; +HSPLcom/google/android/gms/internal/measurement/zzqg;->()V +HSPLcom/google/android/gms/internal/measurement/zzqg;->()V +HSPLcom/google/android/gms/internal/measurement/zzqg;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzqh; +Lcom/google/android/gms/internal/measurement/zzqi; +Lcom/google/android/gms/internal/measurement/zzqj; +HSPLcom/google/android/gms/internal/measurement/zzqj;->()V +HSPLcom/google/android/gms/internal/measurement/zzqj;->()V +HSPLcom/google/android/gms/internal/measurement/zzqj;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzqj;->zza()Z +Lcom/google/android/gms/internal/measurement/zzqk; +HSPLcom/google/android/gms/internal/measurement/zzqk;->()V +HSPLcom/google/android/gms/internal/measurement/zzqk;->()V +HSPLcom/google/android/gms/internal/measurement/zzqk;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzqk;->zza()Z +Lcom/google/android/gms/internal/measurement/zzql; +HSPLcom/google/android/gms/internal/measurement/zzql;->()V +HSPLcom/google/android/gms/internal/measurement/zzql;->()V +HSPLcom/google/android/gms/internal/measurement/zzql;->zza()Z +Lcom/google/android/gms/internal/measurement/zzqm; +HSPLcom/google/android/gms/internal/measurement/zzqm;->()V +HSPLcom/google/android/gms/internal/measurement/zzqm;->()V +HSPLcom/google/android/gms/internal/measurement/zzqm;->zza()Z +Lcom/google/android/gms/internal/measurement/zzqn; +Lcom/google/android/gms/internal/mlkit_common/zzaf; +HSPLcom/google/android/gms/internal/mlkit_common/zzaf;->zzb(IILjava/lang/String;)I +Lcom/google/android/gms/internal/mlkit_common/zzah; +HSPLcom/google/android/gms/internal/mlkit_common/zzah;->(II)V +Lcom/google/android/gms/internal/mlkit_common/zzaj; +Lcom/google/android/gms/internal/mlkit_common/zzan; +HSPLcom/google/android/gms/internal/mlkit_common/zzan;->()V +HSPLcom/google/android/gms/internal/mlkit_common/zzan;->()V +HSPLcom/google/android/gms/internal/mlkit_common/zzan;->toArray()[Ljava/lang/Object; +HSPLcom/google/android/gms/internal/mlkit_common/zzan;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; +Lcom/google/android/gms/internal/mlkit_common/zzap; +HSPLcom/google/android/gms/internal/mlkit_common/zzap;->(Lcom/google/android/gms/internal/mlkit_common/zzar;I)V +Lcom/google/android/gms/internal/mlkit_common/zzar; +HSPLcom/google/android/gms/internal/mlkit_common/zzar;->()V +HSPLcom/google/android/gms/internal/mlkit_common/zzar;->()V +HSPLcom/google/android/gms/internal/mlkit_common/zzar;->zzg([Ljava/lang/Object;I)Lcom/google/android/gms/internal/mlkit_common/zzar; +HSPLcom/google/android/gms/internal/mlkit_common/zzar;->zzi(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lcom/google/android/gms/internal/mlkit_common/zzar; +Lcom/google/android/gms/internal/mlkit_common/zzaw; +HSPLcom/google/android/gms/internal/mlkit_common/zzaw;->zza([Ljava/lang/Object;I)[Ljava/lang/Object; +Lcom/google/android/gms/internal/mlkit_common/zzax; +HSPLcom/google/android/gms/internal/mlkit_common/zzax;->()V +HSPLcom/google/android/gms/internal/mlkit_common/zzax;->([Ljava/lang/Object;I)V +HSPLcom/google/android/gms/internal/mlkit_common/zzax;->size()I +HSPLcom/google/android/gms/internal/mlkit_common/zzax;->zzb()I +HSPLcom/google/android/gms/internal/mlkit_common/zzax;->zzc()I +HSPLcom/google/android/gms/internal/mlkit_common/zzax;->zze()[Ljava/lang/Object; +Lcom/google/android/gms/internal/mlkit_common/zzbe; +HSPLcom/google/android/gms/internal/mlkit_common/zzbe;->()V +Lcom/google/android/gms/internal/mlkit_common/zzbf; +HSPLcom/google/android/gms/internal/mlkit_common/zzbf;->()V +Lcom/google/android/gms/internal/mlkit_common/zzbh; +Lcom/google/android/gms/internal/mlkit_vision_barcode/zzbc; +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzbc;->zzb(IILjava/lang/String;)I +Lcom/google/android/gms/internal/mlkit_vision_barcode/zzbg; +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzbg;->(II)V +Lcom/google/android/gms/internal/mlkit_vision_barcode/zzcq; +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzcq;->()V +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzcq;->()V +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzcq;->toArray()[Ljava/lang/Object; +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzcq;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; +Lcom/google/android/gms/internal/mlkit_vision_barcode/zzct; +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzct;->(Lcom/google/android/gms/internal/mlkit_vision_barcode/zzcv;I)V +Lcom/google/android/gms/internal/mlkit_vision_barcode/zzcv; +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzcv;->()V +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzcv;->()V +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzcv;->zzg([Ljava/lang/Object;I)Lcom/google/android/gms/internal/mlkit_vision_barcode/zzcv; +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzcv;->zzh(Ljava/lang/Object;Ljava/lang/Object;)Lcom/google/android/gms/internal/mlkit_vision_barcode/zzcv; +Lcom/google/android/gms/internal/mlkit_vision_barcode/zzdm; +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzdm;->zza([Ljava/lang/Object;I)[Ljava/lang/Object; +Lcom/google/android/gms/internal/mlkit_vision_barcode/zzdn; +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzdn;->()V +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzdn;->([Ljava/lang/Object;I)V +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzdn;->size()I +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzdn;->zzb()I +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzdn;->zzc()I +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzdn;->zze()[Ljava/lang/Object; +Lcom/google/android/gms/internal/mlkit_vision_barcode/zzdx; +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzdx;->()V +Lcom/google/android/gms/internal/mlkit_vision_barcode/zzdy; +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzdy;->()V +Lcom/google/android/gms/internal/mlkit_vision_common/zzab; +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzab;->()V +Lcom/google/android/gms/internal/mlkit_vision_common/zzac; +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzac;->()V +Lcom/google/android/gms/internal/mlkit_vision_common/zzf; +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzf;->zzb(IILjava/lang/String;)I +Lcom/google/android/gms/internal/mlkit_vision_common/zzh; +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzh;->(II)V +Lcom/google/android/gms/internal/mlkit_vision_common/zzl; +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzl;->()V +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzl;->()V +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzl;->toArray()[Ljava/lang/Object; +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzl;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; +Lcom/google/android/gms/internal/mlkit_vision_common/zzn; +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzn;->(Lcom/google/android/gms/internal/mlkit_vision_common/zzp;I)V +Lcom/google/android/gms/internal/mlkit_vision_common/zzp; +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzp;->()V +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzp;->()V +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzp;->zzh([Ljava/lang/Object;I)Lcom/google/android/gms/internal/mlkit_vision_common/zzp; +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzp;->zzi(Ljava/lang/Object;)Lcom/google/android/gms/internal/mlkit_vision_common/zzp; +Lcom/google/android/gms/internal/mlkit_vision_common/zzt; +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzt;->zza([Ljava/lang/Object;I)[Ljava/lang/Object; +Lcom/google/android/gms/internal/mlkit_vision_common/zzu; +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzu;->()V +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzu;->([Ljava/lang/Object;I)V +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzu;->size()I +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzu;->zzb()I +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzu;->zzc()I +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzu;->zze()[Ljava/lang/Object; +Lcom/google/android/gms/internal/tasks/zza; +HSPLcom/google/android/gms/internal/tasks/zza;->(Landroid/os/Looper;)V +Lcom/google/android/gms/measurement/api/AppMeasurementSdk; +HSPLcom/google/android/gms/measurement/api/AppMeasurementSdk;->(Lcom/google/android/gms/internal/measurement/zzdf;)V +HSPLcom/google/android/gms/measurement/api/AppMeasurementSdk;->registerOnMeasurementEventListener(Lcom/google/android/gms/measurement/api/AppMeasurementSdk$OnEventListener;)V +Lcom/google/android/gms/measurement/api/AppMeasurementSdk$OnEventListener; +Lcom/google/android/gms/measurement/internal/AppMeasurementDynamiteService; +HSPLcom/google/android/gms/measurement/internal/AppMeasurementDynamiteService;->()V +HSPLcom/google/android/gms/measurement/internal/AppMeasurementDynamiteService;->initialize(Lcom/google/android/gms/dynamic/IObjectWrapper;Lcom/google/android/gms/internal/measurement/zzdd;J)V +HSPLcom/google/android/gms/measurement/internal/AppMeasurementDynamiteService;->onActivityCreated(Lcom/google/android/gms/dynamic/IObjectWrapper;Landroid/os/Bundle;J)V +HSPLcom/google/android/gms/measurement/internal/AppMeasurementDynamiteService;->onActivityResumed(Lcom/google/android/gms/dynamic/IObjectWrapper;J)V +HSPLcom/google/android/gms/measurement/internal/AppMeasurementDynamiteService;->onActivityStarted(Lcom/google/android/gms/dynamic/IObjectWrapper;J)V +HSPLcom/google/android/gms/measurement/internal/AppMeasurementDynamiteService;->registerOnMeasurementEventListener(Lcom/google/android/gms/internal/measurement/zzda;)V +HSPLcom/google/android/gms/measurement/internal/AppMeasurementDynamiteService;->zza()V +Lcom/google/android/gms/measurement/internal/AppMeasurementDynamiteService$zzb; +HSPLcom/google/android/gms/measurement/internal/AppMeasurementDynamiteService$zzb;->(Lcom/google/android/gms/measurement/internal/AppMeasurementDynamiteService;Lcom/google/android/gms/internal/measurement/zzda;)V +Lcom/google/android/gms/measurement/internal/zzae; +HSPLcom/google/android/gms/measurement/internal/zzae;->(Landroid/content/Context;)V +HSPLcom/google/android/gms/measurement/internal/zzae;->zza()Z +Lcom/google/android/gms/measurement/internal/zzaf; +HSPLcom/google/android/gms/measurement/internal/zzaf;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zzaf;->zza()Landroid/content/Context; +HSPLcom/google/android/gms/measurement/internal/zzaf;->zza(Lcom/google/android/gms/measurement/internal/zzfi;)Z +HSPLcom/google/android/gms/measurement/internal/zzaf;->zza(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzaf;->zzb(Ljava/lang/String;)I +HSPLcom/google/android/gms/measurement/internal/zzaf;->zze()Lcom/google/android/gms/measurement/internal/zzaf; +HSPLcom/google/android/gms/measurement/internal/zzaf;->zzf(Ljava/lang/String;Lcom/google/android/gms/measurement/internal/zzfi;)Z +HSPLcom/google/android/gms/measurement/internal/zzaf;->zzg(Ljava/lang/String;)Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzaf;->zzi(Ljava/lang/String;)Ljava/util/List; +HSPLcom/google/android/gms/measurement/internal/zzaf;->zzn()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzaf;->zzp()Z +HSPLcom/google/android/gms/measurement/internal/zzaf;->zzu()Z +HSPLcom/google/android/gms/measurement/internal/zzaf;->zzv()Z +HSPLcom/google/android/gms/measurement/internal/zzaf;->zzw()Z +HSPLcom/google/android/gms/measurement/internal/zzaf;->zzy()Landroid/os/Bundle; +Lcom/google/android/gms/measurement/internal/zzah; +Lcom/google/android/gms/measurement/internal/zzai; +HSPLcom/google/android/gms/measurement/internal/zzai;->()V +HSPLcom/google/android/gms/measurement/internal/zzai;->()V +Lcom/google/android/gms/measurement/internal/zzav; +HSPLcom/google/android/gms/measurement/internal/zzav;->(Lcom/google/android/gms/measurement/internal/zzaw;Lcom/google/android/gms/measurement/internal/zzif;)V +PLcom/google/android/gms/measurement/internal/zzav;->run()V +Lcom/google/android/gms/measurement/internal/zzaw; +HSPLcom/google/android/gms/measurement/internal/zzaw;->(Lcom/google/android/gms/measurement/internal/zzif;)V +HSPLcom/google/android/gms/measurement/internal/zzaw;->zza()V +HSPLcom/google/android/gms/measurement/internal/zzaw;->zza(J)V +PLcom/google/android/gms/measurement/internal/zzaw;->zza(Lcom/google/android/gms/measurement/internal/zzaw;J)V +PLcom/google/android/gms/measurement/internal/zzaw;->zzc()Z +HSPLcom/google/android/gms/measurement/internal/zzaw;->zzd()Landroid/os/Handler; +Lcom/google/android/gms/measurement/internal/zzb; +HSPLcom/google/android/gms/measurement/internal/zzb;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zzb;->zza(Lcom/google/android/gms/measurement/internal/zzb;J)V +HSPLcom/google/android/gms/measurement/internal/zzb;->zzb()Lcom/google/android/gms/common/util/Clock; +HSPLcom/google/android/gms/measurement/internal/zzb;->zzb(J)V +HSPLcom/google/android/gms/measurement/internal/zzb;->zzl()Lcom/google/android/gms/measurement/internal/zzgy; +Lcom/google/android/gms/measurement/internal/zzba; +HSPLcom/google/android/gms/measurement/internal/zzba;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zzba;->zzo()Z +Lcom/google/android/gms/measurement/internal/zzbi; +HSPLcom/google/android/gms/measurement/internal/zzbi;->()V +HSPLcom/google/android/gms/measurement/internal/zzbi;->zza()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zza(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Lcom/google/android/gms/measurement/internal/zzfg;)Lcom/google/android/gms/measurement/internal/zzfi; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzaa()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzab()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzac()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzad()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzae()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzaf()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzag()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzah()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzai()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzaj()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzak()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzal()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzam()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzan()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzao()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzap()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzaq()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzar()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzas()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzat()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzau()Ljava/lang/Double; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzav()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzaw()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzax()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzay()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzaz()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzb()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzba()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbb()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbc()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbd()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbe()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbf()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbg()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbh()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbi()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbj()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbk()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbl()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbm()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbn()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbo()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbp()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbq()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbr()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbs()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbt()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbu()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbv()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbw()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbx()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzby()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbz()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzc()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzca()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzcb()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzcc()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzcd()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzce()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzcf()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzcg()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzch()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzci()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzcj()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzck()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzcl()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzcm()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzcn()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzco()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzcp()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzcq()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzcr()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzcs()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzct()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzcu()Ljava/util/List; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzd()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zze()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzf()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzg()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzh()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzi()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzj()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzk()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzl()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzm()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzn()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzo()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzp()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzq()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzr()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzs()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzt()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzu()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzv()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzw()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzx()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzy()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzz()Ljava/lang/Boolean; +Lcom/google/android/gms/measurement/internal/zzbj; +HSPLcom/google/android/gms/measurement/internal/zzbj;->()V +HSPLcom/google/android/gms/measurement/internal/zzbj;->()V +HSPLcom/google/android/gms/measurement/internal/zzbj;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzbk; +HSPLcom/google/android/gms/measurement/internal/zzbk;->()V +HSPLcom/google/android/gms/measurement/internal/zzbk;->()V +HSPLcom/google/android/gms/measurement/internal/zzbk;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzbl; +HSPLcom/google/android/gms/measurement/internal/zzbl;->()V +HSPLcom/google/android/gms/measurement/internal/zzbl;->()V +HSPLcom/google/android/gms/measurement/internal/zzbl;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzbm; +HSPLcom/google/android/gms/measurement/internal/zzbm;->()V +HSPLcom/google/android/gms/measurement/internal/zzbm;->()V +HSPLcom/google/android/gms/measurement/internal/zzbm;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzbn; +HSPLcom/google/android/gms/measurement/internal/zzbn;->()V +HSPLcom/google/android/gms/measurement/internal/zzbn;->()V +HSPLcom/google/android/gms/measurement/internal/zzbn;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzbo; +HSPLcom/google/android/gms/measurement/internal/zzbo;->()V +HSPLcom/google/android/gms/measurement/internal/zzbo;->()V +HSPLcom/google/android/gms/measurement/internal/zzbo;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzbp; +HSPLcom/google/android/gms/measurement/internal/zzbp;->()V +HSPLcom/google/android/gms/measurement/internal/zzbp;->()V +HSPLcom/google/android/gms/measurement/internal/zzbp;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzbq; +HSPLcom/google/android/gms/measurement/internal/zzbq;->()V +HSPLcom/google/android/gms/measurement/internal/zzbq;->()V +HSPLcom/google/android/gms/measurement/internal/zzbq;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzbr; +HSPLcom/google/android/gms/measurement/internal/zzbr;->()V +HSPLcom/google/android/gms/measurement/internal/zzbr;->()V +HSPLcom/google/android/gms/measurement/internal/zzbr;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzbs; +HSPLcom/google/android/gms/measurement/internal/zzbs;->()V +HSPLcom/google/android/gms/measurement/internal/zzbs;->()V +HSPLcom/google/android/gms/measurement/internal/zzbs;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzbt; +HSPLcom/google/android/gms/measurement/internal/zzbt;->()V +HSPLcom/google/android/gms/measurement/internal/zzbt;->()V +HSPLcom/google/android/gms/measurement/internal/zzbt;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzbu; +HSPLcom/google/android/gms/measurement/internal/zzbu;->()V +HSPLcom/google/android/gms/measurement/internal/zzbu;->()V +HSPLcom/google/android/gms/measurement/internal/zzbu;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzbv; +HSPLcom/google/android/gms/measurement/internal/zzbv;->()V +HSPLcom/google/android/gms/measurement/internal/zzbv;->()V +HSPLcom/google/android/gms/measurement/internal/zzbv;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzbw; +HSPLcom/google/android/gms/measurement/internal/zzbw;->()V +HSPLcom/google/android/gms/measurement/internal/zzbw;->()V +HSPLcom/google/android/gms/measurement/internal/zzbw;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzbx; +HSPLcom/google/android/gms/measurement/internal/zzbx;->()V +HSPLcom/google/android/gms/measurement/internal/zzbx;->()V +HSPLcom/google/android/gms/measurement/internal/zzbx;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzby; +HSPLcom/google/android/gms/measurement/internal/zzby;->()V +HSPLcom/google/android/gms/measurement/internal/zzby;->()V +HSPLcom/google/android/gms/measurement/internal/zzby;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzbz; +HSPLcom/google/android/gms/measurement/internal/zzbz;->()V +HSPLcom/google/android/gms/measurement/internal/zzbz;->()V +HSPLcom/google/android/gms/measurement/internal/zzbz;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzc; +HSPLcom/google/android/gms/measurement/internal/zzc;->(Lcom/google/android/gms/measurement/internal/zzb;J)V +HSPLcom/google/android/gms/measurement/internal/zzc;->run()V +Lcom/google/android/gms/measurement/internal/zzca; +HSPLcom/google/android/gms/measurement/internal/zzca;->()V +HSPLcom/google/android/gms/measurement/internal/zzca;->()V +HSPLcom/google/android/gms/measurement/internal/zzca;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcb; +HSPLcom/google/android/gms/measurement/internal/zzcb;->()V +HSPLcom/google/android/gms/measurement/internal/zzcb;->()V +HSPLcom/google/android/gms/measurement/internal/zzcb;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcc; +HSPLcom/google/android/gms/measurement/internal/zzcc;->()V +HSPLcom/google/android/gms/measurement/internal/zzcc;->()V +HSPLcom/google/android/gms/measurement/internal/zzcc;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcd; +HSPLcom/google/android/gms/measurement/internal/zzcd;->()V +HSPLcom/google/android/gms/measurement/internal/zzcd;->()V +HSPLcom/google/android/gms/measurement/internal/zzcd;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzce; +HSPLcom/google/android/gms/measurement/internal/zzce;->()V +HSPLcom/google/android/gms/measurement/internal/zzce;->()V +HSPLcom/google/android/gms/measurement/internal/zzce;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcf; +HSPLcom/google/android/gms/measurement/internal/zzcf;->()V +HSPLcom/google/android/gms/measurement/internal/zzcf;->()V +HSPLcom/google/android/gms/measurement/internal/zzcf;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcg; +HSPLcom/google/android/gms/measurement/internal/zzcg;->()V +HSPLcom/google/android/gms/measurement/internal/zzcg;->()V +HSPLcom/google/android/gms/measurement/internal/zzcg;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzch; +HSPLcom/google/android/gms/measurement/internal/zzch;->()V +HSPLcom/google/android/gms/measurement/internal/zzch;->()V +HSPLcom/google/android/gms/measurement/internal/zzch;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzci; +HSPLcom/google/android/gms/measurement/internal/zzci;->()V +HSPLcom/google/android/gms/measurement/internal/zzci;->()V +HSPLcom/google/android/gms/measurement/internal/zzci;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcj; +HSPLcom/google/android/gms/measurement/internal/zzcj;->()V +HSPLcom/google/android/gms/measurement/internal/zzcj;->()V +HSPLcom/google/android/gms/measurement/internal/zzcj;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzck; +HSPLcom/google/android/gms/measurement/internal/zzck;->()V +HSPLcom/google/android/gms/measurement/internal/zzck;->()V +HSPLcom/google/android/gms/measurement/internal/zzck;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcl; +HSPLcom/google/android/gms/measurement/internal/zzcl;->()V +HSPLcom/google/android/gms/measurement/internal/zzcl;->()V +HSPLcom/google/android/gms/measurement/internal/zzcl;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcm; +HSPLcom/google/android/gms/measurement/internal/zzcm;->()V +HSPLcom/google/android/gms/measurement/internal/zzcm;->()V +HSPLcom/google/android/gms/measurement/internal/zzcm;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcn; +HSPLcom/google/android/gms/measurement/internal/zzcn;->()V +HSPLcom/google/android/gms/measurement/internal/zzcn;->()V +HSPLcom/google/android/gms/measurement/internal/zzcn;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzco; +HSPLcom/google/android/gms/measurement/internal/zzco;->()V +HSPLcom/google/android/gms/measurement/internal/zzco;->()V +HSPLcom/google/android/gms/measurement/internal/zzco;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcp; +HSPLcom/google/android/gms/measurement/internal/zzcp;->()V +HSPLcom/google/android/gms/measurement/internal/zzcp;->()V +HSPLcom/google/android/gms/measurement/internal/zzcp;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcq; +HSPLcom/google/android/gms/measurement/internal/zzcq;->()V +HSPLcom/google/android/gms/measurement/internal/zzcq;->()V +HSPLcom/google/android/gms/measurement/internal/zzcq;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcr; +HSPLcom/google/android/gms/measurement/internal/zzcr;->()V +HSPLcom/google/android/gms/measurement/internal/zzcr;->()V +HSPLcom/google/android/gms/measurement/internal/zzcr;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcs; +HSPLcom/google/android/gms/measurement/internal/zzcs;->()V +HSPLcom/google/android/gms/measurement/internal/zzcs;->()V +HSPLcom/google/android/gms/measurement/internal/zzcs;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzct; +HSPLcom/google/android/gms/measurement/internal/zzct;->()V +HSPLcom/google/android/gms/measurement/internal/zzct;->()V +HSPLcom/google/android/gms/measurement/internal/zzct;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcu; +HSPLcom/google/android/gms/measurement/internal/zzcu;->()V +HSPLcom/google/android/gms/measurement/internal/zzcu;->()V +HSPLcom/google/android/gms/measurement/internal/zzcu;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcv; +HSPLcom/google/android/gms/measurement/internal/zzcv;->()V +HSPLcom/google/android/gms/measurement/internal/zzcv;->()V +HSPLcom/google/android/gms/measurement/internal/zzcv;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcw; +HSPLcom/google/android/gms/measurement/internal/zzcw;->()V +HSPLcom/google/android/gms/measurement/internal/zzcw;->()V +HSPLcom/google/android/gms/measurement/internal/zzcw;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcx; +HSPLcom/google/android/gms/measurement/internal/zzcx;->()V +HSPLcom/google/android/gms/measurement/internal/zzcx;->()V +HSPLcom/google/android/gms/measurement/internal/zzcx;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcy; +HSPLcom/google/android/gms/measurement/internal/zzcy;->()V +HSPLcom/google/android/gms/measurement/internal/zzcy;->()V +HSPLcom/google/android/gms/measurement/internal/zzcy;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcz; +HSPLcom/google/android/gms/measurement/internal/zzcz;->()V +HSPLcom/google/android/gms/measurement/internal/zzcz;->()V +HSPLcom/google/android/gms/measurement/internal/zzcz;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzda; +HSPLcom/google/android/gms/measurement/internal/zzda;->()V +HSPLcom/google/android/gms/measurement/internal/zzda;->()V +HSPLcom/google/android/gms/measurement/internal/zzda;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdb; +HSPLcom/google/android/gms/measurement/internal/zzdb;->()V +HSPLcom/google/android/gms/measurement/internal/zzdb;->()V +HSPLcom/google/android/gms/measurement/internal/zzdb;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdc; +HSPLcom/google/android/gms/measurement/internal/zzdc;->()V +HSPLcom/google/android/gms/measurement/internal/zzdc;->()V +HSPLcom/google/android/gms/measurement/internal/zzdc;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdd; +HSPLcom/google/android/gms/measurement/internal/zzdd;->()V +HSPLcom/google/android/gms/measurement/internal/zzdd;->()V +HSPLcom/google/android/gms/measurement/internal/zzdd;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzde; +HSPLcom/google/android/gms/measurement/internal/zzde;->()V +HSPLcom/google/android/gms/measurement/internal/zzde;->()V +HSPLcom/google/android/gms/measurement/internal/zzde;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdf; +HSPLcom/google/android/gms/measurement/internal/zzdf;->()V +HSPLcom/google/android/gms/measurement/internal/zzdf;->()V +HSPLcom/google/android/gms/measurement/internal/zzdf;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdg; +HSPLcom/google/android/gms/measurement/internal/zzdg;->()V +HSPLcom/google/android/gms/measurement/internal/zzdg;->()V +HSPLcom/google/android/gms/measurement/internal/zzdg;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdh; +HSPLcom/google/android/gms/measurement/internal/zzdh;->()V +HSPLcom/google/android/gms/measurement/internal/zzdh;->()V +HSPLcom/google/android/gms/measurement/internal/zzdh;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdi; +HSPLcom/google/android/gms/measurement/internal/zzdi;->()V +HSPLcom/google/android/gms/measurement/internal/zzdi;->()V +HSPLcom/google/android/gms/measurement/internal/zzdi;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdj; +HSPLcom/google/android/gms/measurement/internal/zzdj;->()V +HSPLcom/google/android/gms/measurement/internal/zzdj;->()V +HSPLcom/google/android/gms/measurement/internal/zzdj;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdk; +HSPLcom/google/android/gms/measurement/internal/zzdk;->()V +HSPLcom/google/android/gms/measurement/internal/zzdk;->()V +HSPLcom/google/android/gms/measurement/internal/zzdk;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdl; +HSPLcom/google/android/gms/measurement/internal/zzdl;->()V +HSPLcom/google/android/gms/measurement/internal/zzdl;->()V +HSPLcom/google/android/gms/measurement/internal/zzdl;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdm; +HSPLcom/google/android/gms/measurement/internal/zzdm;->()V +HSPLcom/google/android/gms/measurement/internal/zzdm;->()V +HSPLcom/google/android/gms/measurement/internal/zzdm;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdn; +HSPLcom/google/android/gms/measurement/internal/zzdn;->()V +HSPLcom/google/android/gms/measurement/internal/zzdn;->()V +HSPLcom/google/android/gms/measurement/internal/zzdn;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdo; +HSPLcom/google/android/gms/measurement/internal/zzdo;->()V +HSPLcom/google/android/gms/measurement/internal/zzdo;->()V +HSPLcom/google/android/gms/measurement/internal/zzdo;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdp; +HSPLcom/google/android/gms/measurement/internal/zzdp;->()V +HSPLcom/google/android/gms/measurement/internal/zzdp;->()V +HSPLcom/google/android/gms/measurement/internal/zzdp;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdq; +HSPLcom/google/android/gms/measurement/internal/zzdq;->()V +HSPLcom/google/android/gms/measurement/internal/zzdq;->()V +HSPLcom/google/android/gms/measurement/internal/zzdq;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdr; +HSPLcom/google/android/gms/measurement/internal/zzdr;->()V +HSPLcom/google/android/gms/measurement/internal/zzdr;->()V +HSPLcom/google/android/gms/measurement/internal/zzdr;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzds; +HSPLcom/google/android/gms/measurement/internal/zzds;->()V +HSPLcom/google/android/gms/measurement/internal/zzds;->()V +HSPLcom/google/android/gms/measurement/internal/zzds;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdt; +HSPLcom/google/android/gms/measurement/internal/zzdt;->()V +HSPLcom/google/android/gms/measurement/internal/zzdt;->()V +HSPLcom/google/android/gms/measurement/internal/zzdt;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdu; +HSPLcom/google/android/gms/measurement/internal/zzdu;->()V +HSPLcom/google/android/gms/measurement/internal/zzdu;->()V +HSPLcom/google/android/gms/measurement/internal/zzdu;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdv; +HSPLcom/google/android/gms/measurement/internal/zzdv;->()V +HSPLcom/google/android/gms/measurement/internal/zzdv;->()V +HSPLcom/google/android/gms/measurement/internal/zzdv;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdw; +HSPLcom/google/android/gms/measurement/internal/zzdw;->()V +HSPLcom/google/android/gms/measurement/internal/zzdw;->()V +HSPLcom/google/android/gms/measurement/internal/zzdw;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdx; +HSPLcom/google/android/gms/measurement/internal/zzdx;->()V +HSPLcom/google/android/gms/measurement/internal/zzdx;->()V +HSPLcom/google/android/gms/measurement/internal/zzdx;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdy; +HSPLcom/google/android/gms/measurement/internal/zzdy;->()V +HSPLcom/google/android/gms/measurement/internal/zzdy;->()V +HSPLcom/google/android/gms/measurement/internal/zzdy;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdz; +HSPLcom/google/android/gms/measurement/internal/zzdz;->()V +HSPLcom/google/android/gms/measurement/internal/zzdz;->()V +HSPLcom/google/android/gms/measurement/internal/zzdz;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zze; +HSPLcom/google/android/gms/measurement/internal/zze;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zze;->zzu()V +HSPLcom/google/android/gms/measurement/internal/zze;->zzv()V +HSPLcom/google/android/gms/measurement/internal/zze;->zzw()V +HSPLcom/google/android/gms/measurement/internal/zze;->zzy()Z +Lcom/google/android/gms/measurement/internal/zzea; +HSPLcom/google/android/gms/measurement/internal/zzea;->()V +HSPLcom/google/android/gms/measurement/internal/zzea;->()V +HSPLcom/google/android/gms/measurement/internal/zzea;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzeb; +HSPLcom/google/android/gms/measurement/internal/zzeb;->()V +HSPLcom/google/android/gms/measurement/internal/zzeb;->()V +HSPLcom/google/android/gms/measurement/internal/zzeb;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzec; +HSPLcom/google/android/gms/measurement/internal/zzec;->()V +HSPLcom/google/android/gms/measurement/internal/zzec;->()V +HSPLcom/google/android/gms/measurement/internal/zzec;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzed; +HSPLcom/google/android/gms/measurement/internal/zzed;->()V +HSPLcom/google/android/gms/measurement/internal/zzed;->()V +HSPLcom/google/android/gms/measurement/internal/zzed;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzee; +HSPLcom/google/android/gms/measurement/internal/zzee;->()V +HSPLcom/google/android/gms/measurement/internal/zzee;->()V +HSPLcom/google/android/gms/measurement/internal/zzee;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzef; +HSPLcom/google/android/gms/measurement/internal/zzef;->()V +HSPLcom/google/android/gms/measurement/internal/zzef;->()V +HSPLcom/google/android/gms/measurement/internal/zzef;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzeg; +HSPLcom/google/android/gms/measurement/internal/zzeg;->()V +HSPLcom/google/android/gms/measurement/internal/zzeg;->()V +HSPLcom/google/android/gms/measurement/internal/zzeg;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzeh; +HSPLcom/google/android/gms/measurement/internal/zzeh;->()V +HSPLcom/google/android/gms/measurement/internal/zzeh;->()V +HSPLcom/google/android/gms/measurement/internal/zzeh;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzei; +HSPLcom/google/android/gms/measurement/internal/zzei;->()V +HSPLcom/google/android/gms/measurement/internal/zzei;->()V +HSPLcom/google/android/gms/measurement/internal/zzei;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzej; +HSPLcom/google/android/gms/measurement/internal/zzej;->()V +HSPLcom/google/android/gms/measurement/internal/zzej;->()V +HSPLcom/google/android/gms/measurement/internal/zzej;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzek; +HSPLcom/google/android/gms/measurement/internal/zzek;->()V +HSPLcom/google/android/gms/measurement/internal/zzek;->()V +HSPLcom/google/android/gms/measurement/internal/zzek;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzel; +HSPLcom/google/android/gms/measurement/internal/zzel;->()V +HSPLcom/google/android/gms/measurement/internal/zzel;->()V +HSPLcom/google/android/gms/measurement/internal/zzel;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzem; +HSPLcom/google/android/gms/measurement/internal/zzem;->()V +HSPLcom/google/android/gms/measurement/internal/zzem;->()V +HSPLcom/google/android/gms/measurement/internal/zzem;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzen; +HSPLcom/google/android/gms/measurement/internal/zzen;->()V +HSPLcom/google/android/gms/measurement/internal/zzen;->()V +HSPLcom/google/android/gms/measurement/internal/zzen;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzeo; +HSPLcom/google/android/gms/measurement/internal/zzeo;->()V +HSPLcom/google/android/gms/measurement/internal/zzeo;->()V +HSPLcom/google/android/gms/measurement/internal/zzeo;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzep; +HSPLcom/google/android/gms/measurement/internal/zzep;->()V +HSPLcom/google/android/gms/measurement/internal/zzep;->()V +HSPLcom/google/android/gms/measurement/internal/zzep;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzeq; +HSPLcom/google/android/gms/measurement/internal/zzeq;->()V +HSPLcom/google/android/gms/measurement/internal/zzeq;->()V +HSPLcom/google/android/gms/measurement/internal/zzeq;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzer; +HSPLcom/google/android/gms/measurement/internal/zzer;->()V +HSPLcom/google/android/gms/measurement/internal/zzer;->()V +HSPLcom/google/android/gms/measurement/internal/zzer;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzes; +HSPLcom/google/android/gms/measurement/internal/zzes;->()V +HSPLcom/google/android/gms/measurement/internal/zzes;->()V +HSPLcom/google/android/gms/measurement/internal/zzes;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzet; +HSPLcom/google/android/gms/measurement/internal/zzet;->()V +HSPLcom/google/android/gms/measurement/internal/zzet;->()V +HSPLcom/google/android/gms/measurement/internal/zzet;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzeu; +HSPLcom/google/android/gms/measurement/internal/zzeu;->()V +HSPLcom/google/android/gms/measurement/internal/zzeu;->()V +HSPLcom/google/android/gms/measurement/internal/zzeu;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzev; +HSPLcom/google/android/gms/measurement/internal/zzev;->()V +HSPLcom/google/android/gms/measurement/internal/zzev;->()V +HSPLcom/google/android/gms/measurement/internal/zzev;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzew; +HSPLcom/google/android/gms/measurement/internal/zzew;->()V +HSPLcom/google/android/gms/measurement/internal/zzew;->()V +HSPLcom/google/android/gms/measurement/internal/zzew;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzex; +HSPLcom/google/android/gms/measurement/internal/zzex;->()V +HSPLcom/google/android/gms/measurement/internal/zzex;->()V +HSPLcom/google/android/gms/measurement/internal/zzex;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzey; +HSPLcom/google/android/gms/measurement/internal/zzey;->()V +HSPLcom/google/android/gms/measurement/internal/zzey;->()V +HSPLcom/google/android/gms/measurement/internal/zzey;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzez; +HSPLcom/google/android/gms/measurement/internal/zzez;->()V +HSPLcom/google/android/gms/measurement/internal/zzez;->()V +HSPLcom/google/android/gms/measurement/internal/zzez;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzf; +HSPLcom/google/android/gms/measurement/internal/zzf;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zzf;->zzc()Lcom/google/android/gms/measurement/internal/zzb; +HSPLcom/google/android/gms/measurement/internal/zzf;->zzg()Lcom/google/android/gms/measurement/internal/zzfl; +HSPLcom/google/android/gms/measurement/internal/zzf;->zzm()Lcom/google/android/gms/measurement/internal/zziq; +HSPLcom/google/android/gms/measurement/internal/zzf;->zzn()Lcom/google/android/gms/measurement/internal/zzkh; +HSPLcom/google/android/gms/measurement/internal/zzf;->zzo()Lcom/google/android/gms/measurement/internal/zzkp; +HSPLcom/google/android/gms/measurement/internal/zzf;->zzp()Lcom/google/android/gms/measurement/internal/zzlx; +HSPLcom/google/android/gms/measurement/internal/zzf;->zzt()V +Lcom/google/android/gms/measurement/internal/zzfa; +HSPLcom/google/android/gms/measurement/internal/zzfa;->()V +HSPLcom/google/android/gms/measurement/internal/zzfa;->()V +HSPLcom/google/android/gms/measurement/internal/zzfa;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzfb; +HSPLcom/google/android/gms/measurement/internal/zzfb;->()V +HSPLcom/google/android/gms/measurement/internal/zzfb;->()V +HSPLcom/google/android/gms/measurement/internal/zzfb;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzfc; +HSPLcom/google/android/gms/measurement/internal/zzfc;->()V +HSPLcom/google/android/gms/measurement/internal/zzfc;->()V +HSPLcom/google/android/gms/measurement/internal/zzfc;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzfd; +HSPLcom/google/android/gms/measurement/internal/zzfd;->()V +HSPLcom/google/android/gms/measurement/internal/zzfd;->()V +HSPLcom/google/android/gms/measurement/internal/zzfd;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzfe; +HSPLcom/google/android/gms/measurement/internal/zzfe;->()V +HSPLcom/google/android/gms/measurement/internal/zzfe;->()V +HSPLcom/google/android/gms/measurement/internal/zzfe;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzff; +Lcom/google/android/gms/measurement/internal/zzfg; +Lcom/google/android/gms/measurement/internal/zzfi; +HSPLcom/google/android/gms/measurement/internal/zzfi;->()V +HSPLcom/google/android/gms/measurement/internal/zzfi;->(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Lcom/google/android/gms/measurement/internal/zzfg;)V +HSPLcom/google/android/gms/measurement/internal/zzfi;->(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Lcom/google/android/gms/measurement/internal/zzfg;Lcom/google/android/gms/measurement/internal/zzfh;)V +HSPLcom/google/android/gms/measurement/internal/zzfi;->zza(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzfk; +Lcom/google/android/gms/measurement/internal/zzfl; +HSPLcom/google/android/gms/measurement/internal/zzfl;->(Lcom/google/android/gms/measurement/internal/zzhf;J)V +HSPLcom/google/android/gms/measurement/internal/zzfl;->zza()Landroid/content/Context; +HSPLcom/google/android/gms/measurement/internal/zzfl;->zza(Ljava/lang/String;)Lcom/google/android/gms/measurement/internal/zzo; +HSPLcom/google/android/gms/measurement/internal/zzfl;->zzaa()I +HSPLcom/google/android/gms/measurement/internal/zzfl;->zzab()I +HSPLcom/google/android/gms/measurement/internal/zzfl;->zzac()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzfl;->zzad()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzfl;->zzae()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzfl;->zzag()V +HSPLcom/google/android/gms/measurement/internal/zzfl;->zzb()Lcom/google/android/gms/common/util/Clock; +HSPLcom/google/android/gms/measurement/internal/zzfl;->zze()Lcom/google/android/gms/measurement/internal/zzaf; +HSPLcom/google/android/gms/measurement/internal/zzfl;->zzj()Lcom/google/android/gms/measurement/internal/zzfr; +HSPLcom/google/android/gms/measurement/internal/zzfl;->zzk()Lcom/google/android/gms/measurement/internal/zzgd; +HSPLcom/google/android/gms/measurement/internal/zzfl;->zzq()Lcom/google/android/gms/measurement/internal/zznd; +HSPLcom/google/android/gms/measurement/internal/zzfl;->zzt()V +HSPLcom/google/android/gms/measurement/internal/zzfl;->zzx()V +HSPLcom/google/android/gms/measurement/internal/zzfl;->zzz()Z +Lcom/google/android/gms/measurement/internal/zzfm; +HSPLcom/google/android/gms/measurement/internal/zzfm;->(Landroid/os/IBinder;)V +HSPLcom/google/android/gms/measurement/internal/zzfm;->zza(JLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/google/android/gms/measurement/internal/zzfm;->zza(Landroid/os/Bundle;Lcom/google/android/gms/measurement/internal/zzo;)V +HSPLcom/google/android/gms/measurement/internal/zzfm;->zzb(Lcom/google/android/gms/measurement/internal/zzo;)Ljava/lang/String; +Lcom/google/android/gms/measurement/internal/zzfn; +HSPLcom/google/android/gms/measurement/internal/zzfn;->(Lcom/google/android/gms/measurement/internal/zzfo;Landroid/content/Context;Ljava/lang/String;)V +Lcom/google/android/gms/measurement/internal/zzfo; +HSPLcom/google/android/gms/measurement/internal/zzfo;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zzfo;->zza()Landroid/content/Context; +HSPLcom/google/android/gms/measurement/internal/zzfo;->zzz()Z +Lcom/google/android/gms/measurement/internal/zzfp; +Lcom/google/android/gms/measurement/internal/zzfq; +HSPLcom/google/android/gms/measurement/internal/zzfq;->()V +HSPLcom/google/android/gms/measurement/internal/zzfq;->(Lcom/google/android/gms/measurement/internal/zzfp;)V +Lcom/google/android/gms/measurement/internal/zzfr; +HSPLcom/google/android/gms/measurement/internal/zzfr;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zzfr;->zza(I)Z +HSPLcom/google/android/gms/measurement/internal/zzfr;->zza(ILjava/lang/String;)V +HSPLcom/google/android/gms/measurement/internal/zzfr;->zza(IZZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V +HSPLcom/google/android/gms/measurement/internal/zzfr;->zza(ZLjava/lang/Object;)Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzfr;->zza(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzfr;->zzc()Lcom/google/android/gms/measurement/internal/zzft; +HSPLcom/google/android/gms/measurement/internal/zzfr;->zzn()Lcom/google/android/gms/measurement/internal/zzft; +HSPLcom/google/android/gms/measurement/internal/zzfr;->zzo()Z +HSPLcom/google/android/gms/measurement/internal/zzfr;->zzp()Lcom/google/android/gms/measurement/internal/zzft; +HSPLcom/google/android/gms/measurement/internal/zzfr;->zzy()Ljava/lang/String; +Lcom/google/android/gms/measurement/internal/zzfs; +HSPLcom/google/android/gms/measurement/internal/zzfs;->(Landroid/content/Context;Landroid/os/Looper;Lcom/google/android/gms/common/internal/BaseGmsClient$BaseConnectionCallbacks;Lcom/google/android/gms/common/internal/BaseGmsClient$BaseOnConnectionFailedListener;)V +HSPLcom/google/android/gms/measurement/internal/zzfs;->createServiceInterface(Landroid/os/IBinder;)Landroid/os/IInterface; +HSPLcom/google/android/gms/measurement/internal/zzfs;->getMinApkVersion()I +HSPLcom/google/android/gms/measurement/internal/zzfs;->getServiceDescriptor()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzfs;->getStartServiceAction()Ljava/lang/String; +Lcom/google/android/gms/measurement/internal/zzft; +HSPLcom/google/android/gms/measurement/internal/zzft;->(Lcom/google/android/gms/measurement/internal/zzfr;IZZ)V +HSPLcom/google/android/gms/measurement/internal/zzft;->zza(Ljava/lang/String;)V +HSPLcom/google/android/gms/measurement/internal/zzft;->zza(Ljava/lang/String;Ljava/lang/Object;)V +Lcom/google/android/gms/measurement/internal/zzgd; +HSPLcom/google/android/gms/measurement/internal/zzgd;->()V +HSPLcom/google/android/gms/measurement/internal/zzgd;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zzgd;->zza(J)Z +HSPLcom/google/android/gms/measurement/internal/zzgd;->zzaa()Z +HSPLcom/google/android/gms/measurement/internal/zzgd;->zzb(Ljava/lang/String;)V +HSPLcom/google/android/gms/measurement/internal/zzgd;->zzc()Landroid/content/SharedPreferences; +HSPLcom/google/android/gms/measurement/internal/zzgd;->zzc(Ljava/lang/String;)V +HSPLcom/google/android/gms/measurement/internal/zzgd;->zzm()Lcom/google/android/gms/measurement/internal/zzih; +HSPLcom/google/android/gms/measurement/internal/zzgd;->zzn()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzgd;->zzo()Z +HSPLcom/google/android/gms/measurement/internal/zzgd;->zzu()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzgd;->zzw()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzgd;->zzx()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzgd;->zzz()V +Lcom/google/android/gms/measurement/internal/zzgf; +HSPLcom/google/android/gms/measurement/internal/zzgf;->(Lcom/google/android/gms/measurement/internal/zzgd;Ljava/lang/String;Landroid/os/Bundle;)V +HSPLcom/google/android/gms/measurement/internal/zzgf;->zza()Landroid/os/Bundle; +Lcom/google/android/gms/measurement/internal/zzgg; +HSPLcom/google/android/gms/measurement/internal/zzgg;->(Lcom/google/android/gms/measurement/internal/zzgd;Ljava/lang/String;Z)V +HSPLcom/google/android/gms/measurement/internal/zzgg;->zza(Z)V +Lcom/google/android/gms/measurement/internal/zzgh; +HSPLcom/google/android/gms/measurement/internal/zzgh;->(Lcom/google/android/gms/measurement/internal/zzgd;Ljava/lang/String;J)V +HSPLcom/google/android/gms/measurement/internal/zzgh;->(Lcom/google/android/gms/measurement/internal/zzgd;Ljava/lang/String;JLcom/google/android/gms/measurement/internal/zzgk;)V +Lcom/google/android/gms/measurement/internal/zzgi; +HSPLcom/google/android/gms/measurement/internal/zzgi;->(Lcom/google/android/gms/measurement/internal/zzgd;Ljava/lang/String;J)V +HSPLcom/google/android/gms/measurement/internal/zzgi;->zza()J +Lcom/google/android/gms/measurement/internal/zzgj; +HSPLcom/google/android/gms/measurement/internal/zzgj;->(Lcom/google/android/gms/measurement/internal/zzgd;Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/google/android/gms/measurement/internal/zzgj;->zza()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzgj;->zza(Ljava/lang/String;)V +Lcom/google/android/gms/measurement/internal/zzgy; +HSPLcom/google/android/gms/measurement/internal/zzgy;->()V +HSPLcom/google/android/gms/measurement/internal/zzgy;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zzgy;->zza(Lcom/google/android/gms/measurement/internal/zzhd;)V +HSPLcom/google/android/gms/measurement/internal/zzgy;->zzb(Ljava/lang/Runnable;)V +HSPLcom/google/android/gms/measurement/internal/zzgy;->zzc()Ljava/util/concurrent/atomic/AtomicLong; +HSPLcom/google/android/gms/measurement/internal/zzgy;->zzc(Lcom/google/android/gms/measurement/internal/zzgy;)Ljava/lang/Object; +HSPLcom/google/android/gms/measurement/internal/zzgy;->zzd(Lcom/google/android/gms/measurement/internal/zzgy;)Ljava/util/concurrent/Semaphore; +HSPLcom/google/android/gms/measurement/internal/zzgy;->zze(Lcom/google/android/gms/measurement/internal/zzgy;)Z +HSPLcom/google/android/gms/measurement/internal/zzgy;->zzo()Z +HSPLcom/google/android/gms/measurement/internal/zzgy;->zzt()V +Lcom/google/android/gms/measurement/internal/zzgz; +HSPLcom/google/android/gms/measurement/internal/zzgz;->(Landroid/content/Context;Ljava/lang/String;)V +HSPLcom/google/android/gms/measurement/internal/zzgz;->zza(Landroid/content/Context;)Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzgz;->zza(Ljava/lang/String;)Ljava/lang/String; +Lcom/google/android/gms/measurement/internal/zzha; +HSPLcom/google/android/gms/measurement/internal/zzha;->(Lcom/google/android/gms/measurement/internal/zzgy;Ljava/lang/String;)V +Lcom/google/android/gms/measurement/internal/zzhc; +HSPLcom/google/android/gms/measurement/internal/zzhc;->(Lcom/google/android/gms/measurement/internal/zzgy;Ljava/lang/String;Ljava/util/concurrent/BlockingQueue;)V +HSPLcom/google/android/gms/measurement/internal/zzhc;->run()V +HSPLcom/google/android/gms/measurement/internal/zzhc;->zza()V +Lcom/google/android/gms/measurement/internal/zzhd; +HSPLcom/google/android/gms/measurement/internal/zzhd;->(Lcom/google/android/gms/measurement/internal/zzgy;Ljava/lang/Runnable;ZLjava/lang/String;)V +HSPLcom/google/android/gms/measurement/internal/zzhd;->compareTo(Ljava/lang/Object;)I +Lcom/google/android/gms/measurement/internal/zzhf; +HSPLcom/google/android/gms/measurement/internal/zzhf;->(Lcom/google/android/gms/measurement/internal/zzio;)V +HSPLcom/google/android/gms/measurement/internal/zzhf;->zza()Landroid/content/Context; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zza(Landroid/content/Context;Lcom/google/android/gms/internal/measurement/zzdd;Ljava/lang/Long;)Lcom/google/android/gms/measurement/internal/zzhf; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zza(Lcom/google/android/gms/internal/measurement/zzdd;)V +HSPLcom/google/android/gms/measurement/internal/zzhf;->zza(Lcom/google/android/gms/measurement/internal/zze;)V +HSPLcom/google/android/gms/measurement/internal/zzhf;->zza(Lcom/google/android/gms/measurement/internal/zzhf;Lcom/google/android/gms/measurement/internal/zzio;)V +HSPLcom/google/android/gms/measurement/internal/zzhf;->zza(Lcom/google/android/gms/measurement/internal/zzic;)V +HSPLcom/google/android/gms/measurement/internal/zzhf;->zza(Lcom/google/android/gms/measurement/internal/zzid;)V +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzaa()V +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzac()Z +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzad()Z +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzaf()Z +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzag()Z +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzb()Lcom/google/android/gms/common/util/Clock; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzc()I +PLcom/google/android/gms/measurement/internal/zzhf;->zzd()Lcom/google/android/gms/measurement/internal/zzae; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zze()Lcom/google/android/gms/measurement/internal/zzb; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzf()Lcom/google/android/gms/measurement/internal/zzaf; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzh()Lcom/google/android/gms/measurement/internal/zzfl; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzj()Lcom/google/android/gms/measurement/internal/zzfr; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzl()Lcom/google/android/gms/measurement/internal/zzgy; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzn()Lcom/google/android/gms/measurement/internal/zzgd; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzp()Lcom/google/android/gms/measurement/internal/zziq; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzq()Lcom/google/android/gms/measurement/internal/zzkh; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzr()Lcom/google/android/gms/measurement/internal/zzkp; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzs()Lcom/google/android/gms/measurement/internal/zzlx; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzt()Lcom/google/android/gms/measurement/internal/zznd; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzu()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzw()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzx()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzz()V +Lcom/google/android/gms/measurement/internal/zzhg; +HSPLcom/google/android/gms/measurement/internal/zzhg;->(Lcom/google/android/gms/measurement/internal/zzhf;Lcom/google/android/gms/measurement/internal/zzio;)V +HSPLcom/google/android/gms/measurement/internal/zzhg;->run()V +Lcom/google/android/gms/measurement/internal/zzic; +HSPLcom/google/android/gms/measurement/internal/zzic;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zzic;->zzab()V +HSPLcom/google/android/gms/measurement/internal/zzic;->zzac()V +HSPLcom/google/android/gms/measurement/internal/zzic;->zzad()V +HSPLcom/google/android/gms/measurement/internal/zzic;->zzae()Z +Lcom/google/android/gms/measurement/internal/zzid; +HSPLcom/google/android/gms/measurement/internal/zzid;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zzid;->zza()Landroid/content/Context; +HSPLcom/google/android/gms/measurement/internal/zzid;->zzb()Lcom/google/android/gms/common/util/Clock; +HSPLcom/google/android/gms/measurement/internal/zzid;->zze()Lcom/google/android/gms/measurement/internal/zzaf; +HSPLcom/google/android/gms/measurement/internal/zzid;->zzj()Lcom/google/android/gms/measurement/internal/zzfr; +HSPLcom/google/android/gms/measurement/internal/zzid;->zzk()Lcom/google/android/gms/measurement/internal/zzgd; +HSPLcom/google/android/gms/measurement/internal/zzid;->zzl()Lcom/google/android/gms/measurement/internal/zzgy; +HSPLcom/google/android/gms/measurement/internal/zzid;->zzq()Lcom/google/android/gms/measurement/internal/zznd; +HSPLcom/google/android/gms/measurement/internal/zzid;->zzt()V +Lcom/google/android/gms/measurement/internal/zzif; +Lcom/google/android/gms/measurement/internal/zzig; +HSPLcom/google/android/gms/measurement/internal/zzig;->()V +HSPLcom/google/android/gms/measurement/internal/zzig;->(Ljava/lang/String;I[Lcom/google/android/gms/measurement/internal/zzih$zza;)V +HSPLcom/google/android/gms/measurement/internal/zzig;->zza()[Lcom/google/android/gms/measurement/internal/zzih$zza; +Lcom/google/android/gms/measurement/internal/zzih; +HSPLcom/google/android/gms/measurement/internal/zzih;->()V +HSPLcom/google/android/gms/measurement/internal/zzih;->(Ljava/lang/Boolean;Ljava/lang/Boolean;I)V +HSPLcom/google/android/gms/measurement/internal/zzih;->(Ljava/util/EnumMap;I)V +HSPLcom/google/android/gms/measurement/internal/zzih;->zza()I +HSPLcom/google/android/gms/measurement/internal/zzih;->zza(Lcom/google/android/gms/measurement/internal/zzih$zza;)Z +HSPLcom/google/android/gms/measurement/internal/zzih;->zza(Ljava/lang/Boolean;)C +HSPLcom/google/android/gms/measurement/internal/zzih;->zza(Ljava/lang/String;I)Lcom/google/android/gms/measurement/internal/zzih; +HSPLcom/google/android/gms/measurement/internal/zzih;->zze()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzih;->zzg()Z +HSPLcom/google/android/gms/measurement/internal/zzih;->zzh()Z +Lcom/google/android/gms/measurement/internal/zzih$zza; +HSPLcom/google/android/gms/measurement/internal/zzih$zza;->()V +HSPLcom/google/android/gms/measurement/internal/zzih$zza;->(Ljava/lang/String;ILjava/lang/String;)V +HSPLcom/google/android/gms/measurement/internal/zzih$zza;->values()[Lcom/google/android/gms/measurement/internal/zzih$zza; +Lcom/google/android/gms/measurement/internal/zzij; +HSPLcom/google/android/gms/measurement/internal/zzij;->()V +Lcom/google/android/gms/measurement/internal/zzil; +Lcom/google/android/gms/measurement/internal/zzin; +HSPLcom/google/android/gms/measurement/internal/zzin;->(Lcom/google/android/gms/measurement/internal/zzio;Lcom/google/android/gms/measurement/internal/zzhf;)V +Lcom/google/android/gms/measurement/internal/zzio; +HSPLcom/google/android/gms/measurement/internal/zzio;->(Landroid/content/Context;Lcom/google/android/gms/internal/measurement/zzdd;Ljava/lang/Long;)V +Lcom/google/android/gms/measurement/internal/zziq; +HSPLcom/google/android/gms/measurement/internal/zziq;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zziq;->zza()Landroid/content/Context; +HSPLcom/google/android/gms/measurement/internal/zziq;->zza(Lcom/google/android/gms/measurement/internal/zzih;)V +HSPLcom/google/android/gms/measurement/internal/zziq;->zza(Lcom/google/android/gms/measurement/internal/zzil;)V +HSPLcom/google/android/gms/measurement/internal/zziq;->zza(Ljava/lang/String;)V +HSPLcom/google/android/gms/measurement/internal/zziq;->zza(Ljava/lang/String;Ljava/lang/String;JLandroid/os/Bundle;)V +HSPLcom/google/android/gms/measurement/internal/zziq;->zza(Ljava/lang/String;Ljava/lang/String;JLandroid/os/Bundle;ZZZLjava/lang/String;)V +HSPLcom/google/android/gms/measurement/internal/zziq;->zzak()V +HSPLcom/google/android/gms/measurement/internal/zziq;->zzj()Lcom/google/android/gms/measurement/internal/zzfr; +HSPLcom/google/android/gms/measurement/internal/zziq;->zzn()Lcom/google/android/gms/measurement/internal/zzkh; +HSPLcom/google/android/gms/measurement/internal/zziq;->zzp()Lcom/google/android/gms/measurement/internal/zzlx; +HSPLcom/google/android/gms/measurement/internal/zziq;->zzt()V +HSPLcom/google/android/gms/measurement/internal/zziq;->zzz()Z +Lcom/google/android/gms/measurement/internal/zzjp; +HSPLcom/google/android/gms/measurement/internal/zzjp;->(Lcom/google/android/gms/measurement/internal/zziq;)V +Lcom/google/android/gms/measurement/internal/zzjx; +HSPLcom/google/android/gms/measurement/internal/zzjx;->(Lcom/google/android/gms/measurement/internal/zziq;)V +HSPLcom/google/android/gms/measurement/internal/zzjx;->onActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V +HSPLcom/google/android/gms/measurement/internal/zzjx;->onActivityResumed(Landroid/app/Activity;)V +HSPLcom/google/android/gms/measurement/internal/zzjx;->onActivityStarted(Landroid/app/Activity;)V +Lcom/google/android/gms/measurement/internal/zzkc; +HSPLcom/google/android/gms/measurement/internal/zzkc;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zzkc;->zzo()Z +Lcom/google/android/gms/measurement/internal/zzkh; +HSPLcom/google/android/gms/measurement/internal/zzkh;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zzkh;->zza(Landroid/app/Activity;Landroid/os/Bundle;)V +HSPLcom/google/android/gms/measurement/internal/zzkh;->zza(Landroid/app/Activity;Lcom/google/android/gms/measurement/internal/zzki;Z)V +HSPLcom/google/android/gms/measurement/internal/zzkh;->zza(Lcom/google/android/gms/measurement/internal/zzkh;Lcom/google/android/gms/measurement/internal/zzki;)V +HSPLcom/google/android/gms/measurement/internal/zzkh;->zza(Lcom/google/android/gms/measurement/internal/zzkh;Lcom/google/android/gms/measurement/internal/zzki;Lcom/google/android/gms/measurement/internal/zzki;JZLandroid/os/Bundle;)V +HSPLcom/google/android/gms/measurement/internal/zzkh;->zza(Lcom/google/android/gms/measurement/internal/zzki;Lcom/google/android/gms/measurement/internal/zzki;JZLandroid/os/Bundle;)V +HSPLcom/google/android/gms/measurement/internal/zzkh;->zza(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzkh;->zzb()Lcom/google/android/gms/common/util/Clock; +HSPLcom/google/android/gms/measurement/internal/zzkh;->zzc()Lcom/google/android/gms/measurement/internal/zzb; +HSPLcom/google/android/gms/measurement/internal/zzkh;->zzc(Landroid/app/Activity;)V +HSPLcom/google/android/gms/measurement/internal/zzkh;->zzd(Landroid/app/Activity;)Lcom/google/android/gms/measurement/internal/zzki; +HSPLcom/google/android/gms/measurement/internal/zzkh;->zze()Lcom/google/android/gms/measurement/internal/zzaf; +HSPLcom/google/android/gms/measurement/internal/zzkh;->zzl()Lcom/google/android/gms/measurement/internal/zzgy; +HSPLcom/google/android/gms/measurement/internal/zzkh;->zzm()Lcom/google/android/gms/measurement/internal/zziq; +HSPLcom/google/android/gms/measurement/internal/zzkh;->zzo()Lcom/google/android/gms/measurement/internal/zzkp; +HSPLcom/google/android/gms/measurement/internal/zzkh;->zzq()Lcom/google/android/gms/measurement/internal/zznd; +HSPLcom/google/android/gms/measurement/internal/zzkh;->zzt()V +HSPLcom/google/android/gms/measurement/internal/zzkh;->zzz()Z +Lcom/google/android/gms/measurement/internal/zzki; +HSPLcom/google/android/gms/measurement/internal/zzki;->(Ljava/lang/String;Ljava/lang/String;J)V +HSPLcom/google/android/gms/measurement/internal/zzki;->(Ljava/lang/String;Ljava/lang/String;JZJ)V +Lcom/google/android/gms/measurement/internal/zzkm; +HSPLcom/google/android/gms/measurement/internal/zzkm;->(Lcom/google/android/gms/measurement/internal/zzkh;Lcom/google/android/gms/measurement/internal/zzki;Lcom/google/android/gms/measurement/internal/zzki;JZ)V +HSPLcom/google/android/gms/measurement/internal/zzkm;->run()V +Lcom/google/android/gms/measurement/internal/zzkp; +HSPLcom/google/android/gms/measurement/internal/zzkp;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zzkp;->zza()Landroid/content/Context; +HSPLcom/google/android/gms/measurement/internal/zzkp;->zza(Landroid/os/Bundle;)V +HSPLcom/google/android/gms/measurement/internal/zzkp;->zza(Lcom/google/android/gms/measurement/internal/zzfk;)V +HSPLcom/google/android/gms/measurement/internal/zzkp;->zza(Lcom/google/android/gms/measurement/internal/zzki;)V +HSPLcom/google/android/gms/measurement/internal/zzkp;->zza(Lcom/google/android/gms/measurement/internal/zzkp;)Lcom/google/android/gms/measurement/internal/zzfk; +HSPLcom/google/android/gms/measurement/internal/zzkp;->zza(Ljava/lang/Runnable;)V +HSPLcom/google/android/gms/measurement/internal/zzkp;->zza(Ljava/util/concurrent/atomic/AtomicReference;)V +HSPLcom/google/android/gms/measurement/internal/zzkp;->zzad()V +PLcom/google/android/gms/measurement/internal/zzkp;->zzae()V +HSPLcom/google/android/gms/measurement/internal/zzkp;->zzah()Z +HSPLcom/google/android/gms/measurement/internal/zzkp;->zzak()V +HSPLcom/google/android/gms/measurement/internal/zzkp;->zzal()V +HSPLcom/google/android/gms/measurement/internal/zzkp;->zzam()Z +HSPLcom/google/android/gms/measurement/internal/zzkp;->zzb(Z)Lcom/google/android/gms/measurement/internal/zzo; +PLcom/google/android/gms/measurement/internal/zzkp;->zzd(Lcom/google/android/gms/measurement/internal/zzkp;)V +HSPLcom/google/android/gms/measurement/internal/zzkp;->zze(Lcom/google/android/gms/measurement/internal/zzkp;)V +HSPLcom/google/android/gms/measurement/internal/zzkp;->zzg()Lcom/google/android/gms/measurement/internal/zzfl; +HSPLcom/google/android/gms/measurement/internal/zzkp;->zzj()Lcom/google/android/gms/measurement/internal/zzfr; +HSPLcom/google/android/gms/measurement/internal/zzkp;->zzk()Lcom/google/android/gms/measurement/internal/zzgd; +HSPLcom/google/android/gms/measurement/internal/zzkp;->zzl()Lcom/google/android/gms/measurement/internal/zzgy; +HSPLcom/google/android/gms/measurement/internal/zzkp;->zzm()Lcom/google/android/gms/measurement/internal/zziq; +HSPLcom/google/android/gms/measurement/internal/zzkp;->zzt()V +HSPLcom/google/android/gms/measurement/internal/zzkp;->zzz()Z +Lcom/google/android/gms/measurement/internal/zzkq; +HSPLcom/google/android/gms/measurement/internal/zzkq;->(Lcom/google/android/gms/measurement/internal/zzkh;)V +HSPLcom/google/android/gms/measurement/internal/zzkq;->run()V +Lcom/google/android/gms/measurement/internal/zzks; +HSPLcom/google/android/gms/measurement/internal/zzks;->(Lcom/google/android/gms/measurement/internal/zzkp;Lcom/google/android/gms/measurement/internal/zzif;)V +PLcom/google/android/gms/measurement/internal/zzks;->zzb()V +Lcom/google/android/gms/measurement/internal/zzky; +HSPLcom/google/android/gms/measurement/internal/zzky;->(Lcom/google/android/gms/measurement/internal/zzkp;Ljava/util/concurrent/atomic/AtomicReference;Lcom/google/android/gms/measurement/internal/zzo;)V +HSPLcom/google/android/gms/measurement/internal/zzky;->run()V +Lcom/google/android/gms/measurement/internal/zzkz; +HSPLcom/google/android/gms/measurement/internal/zzkz;->(Lcom/google/android/gms/measurement/internal/zzkp;Lcom/google/android/gms/measurement/internal/zzki;)V +HSPLcom/google/android/gms/measurement/internal/zzkz;->run()V +Lcom/google/android/gms/measurement/internal/zzlb; +HSPLcom/google/android/gms/measurement/internal/zzlb;->(Lcom/google/android/gms/measurement/internal/zzkp;Lcom/google/android/gms/measurement/internal/zzif;)V +Lcom/google/android/gms/measurement/internal/zzlc; +HSPLcom/google/android/gms/measurement/internal/zzlc;->(Lcom/google/android/gms/measurement/internal/zzkp;Lcom/google/android/gms/measurement/internal/zzo;Landroid/os/Bundle;)V +HSPLcom/google/android/gms/measurement/internal/zzlc;->run()V +Lcom/google/android/gms/measurement/internal/zzlm; +HSPLcom/google/android/gms/measurement/internal/zzlm;->(Lcom/google/android/gms/measurement/internal/zzkp;)V +HSPLcom/google/android/gms/measurement/internal/zzlm;->onConnected(Landroid/os/Bundle;)V +HSPLcom/google/android/gms/measurement/internal/zzlm;->zza()V +HSPLcom/google/android/gms/measurement/internal/zzlm;->zza(Lcom/google/android/gms/measurement/internal/zzlm;Z)V +PLcom/google/android/gms/measurement/internal/zzlm;->zzb()V +Lcom/google/android/gms/measurement/internal/zzln; +HSPLcom/google/android/gms/measurement/internal/zzln;->(Lcom/google/android/gms/measurement/internal/zzlm;Lcom/google/android/gms/measurement/internal/zzfk;)V +HSPLcom/google/android/gms/measurement/internal/zzln;->run()V +Lcom/google/android/gms/measurement/internal/zzlx; +HSPLcom/google/android/gms/measurement/internal/zzlx;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zzlx;->zza(Z)V +HSPLcom/google/android/gms/measurement/internal/zzlx;->zzab()V +HSPLcom/google/android/gms/measurement/internal/zzlx;->zzb()Lcom/google/android/gms/common/util/Clock; +HSPLcom/google/android/gms/measurement/internal/zzlx;->zzb(Lcom/google/android/gms/measurement/internal/zzlx;J)V +HSPLcom/google/android/gms/measurement/internal/zzlx;->zze()Lcom/google/android/gms/measurement/internal/zzaf; +HSPLcom/google/android/gms/measurement/internal/zzlx;->zzj()Lcom/google/android/gms/measurement/internal/zzfr; +HSPLcom/google/android/gms/measurement/internal/zzlx;->zzk()Lcom/google/android/gms/measurement/internal/zzgd; +HSPLcom/google/android/gms/measurement/internal/zzlx;->zzl()Lcom/google/android/gms/measurement/internal/zzgy; +HSPLcom/google/android/gms/measurement/internal/zzlx;->zzt()V +HSPLcom/google/android/gms/measurement/internal/zzlx;->zzz()Z +Lcom/google/android/gms/measurement/internal/zzma; +HSPLcom/google/android/gms/measurement/internal/zzma;->(Lcom/google/android/gms/measurement/internal/zzlx;J)V +HSPLcom/google/android/gms/measurement/internal/zzma;->run()V +Lcom/google/android/gms/measurement/internal/zzmc; +HSPLcom/google/android/gms/measurement/internal/zzmc;->(Lcom/google/android/gms/measurement/internal/zzlx;)V +HSPLcom/google/android/gms/measurement/internal/zzmc;->zza()V +Lcom/google/android/gms/measurement/internal/zzmd; +HSPLcom/google/android/gms/measurement/internal/zzmd;->(Lcom/google/android/gms/measurement/internal/zzlx;)V +HSPLcom/google/android/gms/measurement/internal/zzmd;->zzc(J)V +Lcom/google/android/gms/measurement/internal/zzmf; +HSPLcom/google/android/gms/measurement/internal/zzmf;->(Lcom/google/android/gms/measurement/internal/zzlx;)V +HSPLcom/google/android/gms/measurement/internal/zzmf;->zza()V +HSPLcom/google/android/gms/measurement/internal/zzmf;->zzb(JZ)V +Lcom/google/android/gms/measurement/internal/zzmg; +HSPLcom/google/android/gms/measurement/internal/zzmg;->(Lcom/google/android/gms/measurement/internal/zzmd;Lcom/google/android/gms/measurement/internal/zzif;)V +Lcom/google/android/gms/measurement/internal/zzmi; +HSPLcom/google/android/gms/measurement/internal/zzmi;->(Lcom/google/android/gms/common/util/Clock;)V +HSPLcom/google/android/gms/measurement/internal/zzmi;->zzb()V +Lcom/google/android/gms/measurement/internal/zznd; +HSPLcom/google/android/gms/measurement/internal/zznd;->()V +HSPLcom/google/android/gms/measurement/internal/zznd;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zznd;->zza()Landroid/content/Context; +HSPLcom/google/android/gms/measurement/internal/zznd;->zza(Landroid/content/Context;)Z +HSPLcom/google/android/gms/measurement/internal/zznd;->zza(Landroid/content/Context;Ljava/lang/String;)J +HSPLcom/google/android/gms/measurement/internal/zznd;->zza(Landroid/content/Context;Z)Z +HSPLcom/google/android/gms/measurement/internal/zznd;->zza(Lcom/google/android/gms/measurement/internal/zzki;Landroid/os/Bundle;Z)V +HSPLcom/google/android/gms/measurement/internal/zznd;->zza(Ljava/lang/String;Ljava/lang/String;)Z +HSPLcom/google/android/gms/measurement/internal/zznd;->zza(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z +HSPLcom/google/android/gms/measurement/internal/zznd;->zza([B)J +HSPLcom/google/android/gms/measurement/internal/zznd;->zzb(Landroid/content/Context;Ljava/lang/String;)Z +HSPLcom/google/android/gms/measurement/internal/zznd;->zzc(Landroid/content/Context;Ljava/lang/String;)Z +HSPLcom/google/android/gms/measurement/internal/zznd;->zzc(Ljava/lang/String;)J +HSPLcom/google/android/gms/measurement/internal/zznd;->zze()Lcom/google/android/gms/measurement/internal/zzaf; +HSPLcom/google/android/gms/measurement/internal/zznd;->zze(Ljava/lang/String;)Z +HSPLcom/google/android/gms/measurement/internal/zznd;->zzf(Ljava/lang/String;)Z +HSPLcom/google/android/gms/measurement/internal/zznd;->zzm()J +HSPLcom/google/android/gms/measurement/internal/zznd;->zzn(Ljava/lang/String;)Z +HSPLcom/google/android/gms/measurement/internal/zznd;->zzo()Z +HSPLcom/google/android/gms/measurement/internal/zznd;->zzp()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zznd;->zzt()V +HSPLcom/google/android/gms/measurement/internal/zznd;->zzu()Ljava/security/MessageDigest; +HSPLcom/google/android/gms/measurement/internal/zznd;->zzv()Ljava/security/SecureRandom; +HSPLcom/google/android/gms/measurement/internal/zznd;->zzx()Z +HSPLcom/google/android/gms/measurement/internal/zznd;->zzz()V +Lcom/google/android/gms/measurement/internal/zznf; +Lcom/google/android/gms/measurement/internal/zzo; +HSPLcom/google/android/gms/measurement/internal/zzo;->()V +HSPLcom/google/android/gms/measurement/internal/zzo;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JLjava/lang/String;JJLjava/lang/String;ZZLjava/lang/String;JJIZZLjava/lang/String;Ljava/lang/Boolean;JLjava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZJILjava/lang/String;IJ)V +HSPLcom/google/android/gms/measurement/internal/zzo;->writeToParcel(Landroid/os/Parcel;I)V +Lcom/google/android/gms/measurement/internal/zzq; +HSPLcom/google/android/gms/measurement/internal/zzq;->()V +Lcom/google/android/gms/measurement/internal/zzu; +HSPLcom/google/android/gms/measurement/internal/zzu;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zzu;->zzb()V +HSPLcom/google/android/gms/measurement/internal/zzu;->zzc()Z +Lcom/google/android/gms/tasks/Continuation; +Lcom/google/android/gms/tasks/OnCanceledListener; +Lcom/google/android/gms/tasks/OnFailureListener; +Lcom/google/android/gms/tasks/OnSuccessListener; +Lcom/google/android/gms/tasks/RuntimeExecutionException; +Lcom/google/android/gms/tasks/SuccessContinuation; +Lcom/google/android/gms/tasks/Task; +HSPLcom/google/android/gms/tasks/Task;->()V +Lcom/google/android/gms/tasks/TaskCompletionSource; +HSPLcom/google/android/gms/tasks/TaskCompletionSource;->()V +HSPLcom/google/android/gms/tasks/TaskCompletionSource;->getTask()Lcom/google/android/gms/tasks/Task; +HSPLcom/google/android/gms/tasks/TaskCompletionSource;->setResult(Ljava/lang/Object;)V +HSPLcom/google/android/gms/tasks/TaskCompletionSource;->trySetResult(Ljava/lang/Object;)Z +Lcom/google/android/gms/tasks/TaskExecutors; +HSPLcom/google/android/gms/tasks/TaskExecutors;->()V +Lcom/google/android/gms/tasks/Tasks; +HSPLcom/google/android/gms/tasks/Tasks;->call(Ljava/util/concurrent/Executor;Ljava/util/concurrent/Callable;)Lcom/google/android/gms/tasks/Task; +HSPLcom/google/android/gms/tasks/Tasks;->forResult(Ljava/lang/Object;)Lcom/google/android/gms/tasks/Task; +Lcom/google/android/gms/tasks/zzc; +HSPLcom/google/android/gms/tasks/zzc;->(Lcom/google/android/gms/tasks/zzd;Lcom/google/android/gms/tasks/Task;)V +HSPLcom/google/android/gms/tasks/zzc;->run()V +Lcom/google/android/gms/tasks/zzd; +HSPLcom/google/android/gms/tasks/zzd;->(Ljava/util/concurrent/Executor;Lcom/google/android/gms/tasks/Continuation;Lcom/google/android/gms/tasks/zzw;)V +HSPLcom/google/android/gms/tasks/zzd;->zza(Lcom/google/android/gms/tasks/zzd;)Lcom/google/android/gms/tasks/Continuation; +HSPLcom/google/android/gms/tasks/zzd;->zzb(Lcom/google/android/gms/tasks/zzd;)Lcom/google/android/gms/tasks/zzw; +HSPLcom/google/android/gms/tasks/zzd;->zzd(Lcom/google/android/gms/tasks/Task;)V +Lcom/google/android/gms/tasks/zzp; +HSPLcom/google/android/gms/tasks/zzp;->(Ljava/util/concurrent/Executor;Lcom/google/android/gms/tasks/SuccessContinuation;Lcom/google/android/gms/tasks/zzw;)V +Lcom/google/android/gms/tasks/zzq; +Lcom/google/android/gms/tasks/zzr; +HSPLcom/google/android/gms/tasks/zzr;->()V +HSPLcom/google/android/gms/tasks/zzr;->zza(Lcom/google/android/gms/tasks/zzq;)V +HSPLcom/google/android/gms/tasks/zzr;->zzb(Lcom/google/android/gms/tasks/Task;)V +Lcom/google/android/gms/tasks/zzt; +HSPLcom/google/android/gms/tasks/zzt;->()V +Lcom/google/android/gms/tasks/zzu; +HSPLcom/google/android/gms/tasks/zzu;->()V +Lcom/google/android/gms/tasks/zzw; +HSPLcom/google/android/gms/tasks/zzw;->()V +HSPLcom/google/android/gms/tasks/zzw;->continueWith(Ljava/util/concurrent/Executor;Lcom/google/android/gms/tasks/Continuation;)Lcom/google/android/gms/tasks/Task; +HSPLcom/google/android/gms/tasks/zzw;->getResult()Ljava/lang/Object; +HSPLcom/google/android/gms/tasks/zzw;->isCanceled()Z +HSPLcom/google/android/gms/tasks/zzw;->isSuccessful()Z +HSPLcom/google/android/gms/tasks/zzw;->onSuccessTask(Ljava/util/concurrent/Executor;Lcom/google/android/gms/tasks/SuccessContinuation;)Lcom/google/android/gms/tasks/Task; +HSPLcom/google/android/gms/tasks/zzw;->zzb(Ljava/lang/Object;)V +HSPLcom/google/android/gms/tasks/zzw;->zze(Ljava/lang/Object;)Z +HSPLcom/google/android/gms/tasks/zzw;->zzf()V +HSPLcom/google/android/gms/tasks/zzw;->zzg()V +HSPLcom/google/android/gms/tasks/zzw;->zzh()V +HSPLcom/google/android/gms/tasks/zzw;->zzi()V +Lcom/google/android/gms/tasks/zzz; +HSPLcom/google/android/gms/tasks/zzz;->(Lcom/google/android/gms/tasks/zzw;Ljava/util/concurrent/Callable;)V +HSPLcom/google/android/gms/tasks/zzz;->run()V +Lcom/google/common/base/Absent; +HSPLcom/google/common/base/Absent;->()V +HSPLcom/google/common/base/Absent;->()V +HSPLcom/google/common/base/Absent;->isPresent()Z +HSPLcom/google/common/base/Absent;->withType()Lcom/google/common/base/Optional; +Lcom/google/common/base/Function; +Lcom/google/common/base/NullnessCasts; +HSPLcom/google/common/base/NullnessCasts;->uncheckedCastNullableTToT(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/google/common/base/Optional; +HSPLcom/google/common/base/Optional;->()V +HSPLcom/google/common/base/Optional;->absent()Lcom/google/common/base/Optional; +HSPLcom/google/common/base/Optional;->of(Ljava/lang/Object;)Lcom/google/common/base/Optional; +Lcom/google/common/base/Preconditions; +HSPLcom/google/common/base/Preconditions;->checkArgument(ZLjava/lang/Object;)V +HSPLcom/google/common/base/Preconditions;->checkElementIndex(II)I +HSPLcom/google/common/base/Preconditions;->checkElementIndex(IILjava/lang/String;)I +HSPLcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/common/base/Preconditions;->checkPositionIndex(II)I +HSPLcom/google/common/base/Preconditions;->checkPositionIndex(IILjava/lang/String;)I +HSPLcom/google/common/base/Preconditions;->checkState(ZLjava/lang/Object;)V +Lcom/google/common/base/Present; +HSPLcom/google/common/base/Present;->(Ljava/lang/Object;)V +HSPLcom/google/common/base/Present;->get()Ljava/lang/Object; +HSPLcom/google/common/base/Present;->isPresent()Z +Lcom/google/common/base/Supplier; +Lcom/google/common/base/Suppliers; +HSPLcom/google/common/base/Suppliers;->memoize(Lcom/google/common/base/Supplier;)Lcom/google/common/base/Supplier; +HSPLcom/google/common/base/Suppliers;->ofInstance(Ljava/lang/Object;)Lcom/google/common/base/Supplier; +Lcom/google/common/base/Suppliers$MemoizingSupplier; +Lcom/google/common/base/Suppliers$NonSerializableMemoizingSupplier; +HSPLcom/google/common/base/Suppliers$NonSerializableMemoizingSupplier;->(Lcom/google/common/base/Supplier;)V +HSPLcom/google/common/base/Suppliers$NonSerializableMemoizingSupplier;->get()Ljava/lang/Object; +Lcom/google/common/base/Suppliers$SupplierOfInstance; +HSPLcom/google/common/base/Suppliers$SupplierOfInstance;->(Ljava/lang/Object;)V +HSPLcom/google/common/base/Suppliers$SupplierOfInstance;->get()Ljava/lang/Object; +Lcom/google/common/collect/AbstractIndexedListIterator; +HSPLcom/google/common/collect/AbstractIndexedListIterator;->(II)V +Lcom/google/common/collect/CollectPreconditions; +HSPLcom/google/common/collect/CollectPreconditions;->checkNonnegative(ILjava/lang/String;)I +Lcom/google/common/collect/Hashing; +HSPLcom/google/common/collect/Hashing;->smear(I)I +Lcom/google/common/collect/ImmutableCollection; +HSPLcom/google/common/collect/ImmutableCollection;->()V +HSPLcom/google/common/collect/ImmutableCollection;->()V +Lcom/google/common/collect/ImmutableCollection$ArrayBasedBuilder; +HSPLcom/google/common/collect/ImmutableCollection$ArrayBasedBuilder;->(I)V +HSPLcom/google/common/collect/ImmutableCollection$ArrayBasedBuilder;->add([Ljava/lang/Object;)Lcom/google/common/collect/ImmutableCollection$Builder; +HSPLcom/google/common/collect/ImmutableCollection$ArrayBasedBuilder;->addAll([Ljava/lang/Object;I)V +HSPLcom/google/common/collect/ImmutableCollection$ArrayBasedBuilder;->getReadyToExpandTo(I)V +Lcom/google/common/collect/ImmutableCollection$Builder; +HSPLcom/google/common/collect/ImmutableCollection$Builder;->()V +HSPLcom/google/common/collect/ImmutableCollection$Builder;->expandedCapacity(II)I +Lcom/google/common/collect/ImmutableList; +HSPLcom/google/common/collect/ImmutableList;->()V +HSPLcom/google/common/collect/ImmutableList;->()V +HSPLcom/google/common/collect/ImmutableList;->asImmutableList([Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList; +HSPLcom/google/common/collect/ImmutableList;->asImmutableList([Ljava/lang/Object;I)Lcom/google/common/collect/ImmutableList; +HSPLcom/google/common/collect/ImmutableList;->construct([Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList; +HSPLcom/google/common/collect/ImmutableList;->contains(Ljava/lang/Object;)Z +HSPLcom/google/common/collect/ImmutableList;->indexOf(Ljava/lang/Object;)I +HSPLcom/google/common/collect/ImmutableList;->of(Ljava/lang/Object;Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList; +HSPLcom/google/common/collect/ImmutableList;->of(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList; +HSPLcom/google/common/collect/ImmutableList;->of(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList; +Lcom/google/common/collect/ImmutableList$Builder; +HSPLcom/google/common/collect/ImmutableList$Builder;->()V +HSPLcom/google/common/collect/ImmutableList$Builder;->(I)V +HSPLcom/google/common/collect/ImmutableList$Builder;->add([Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList$Builder; +HSPLcom/google/common/collect/ImmutableList$Builder;->build()Lcom/google/common/collect/ImmutableList; +Lcom/google/common/collect/ImmutableList$Itr; +HSPLcom/google/common/collect/ImmutableList$Itr;->(Lcom/google/common/collect/ImmutableList;I)V +Lcom/google/common/collect/ImmutableSet; +HSPLcom/google/common/collect/ImmutableSet;->()V +HSPLcom/google/common/collect/ImmutableSet;->chooseTableSize(I)I +HSPLcom/google/common/collect/ImmutableSet;->construct(I[Ljava/lang/Object;)Lcom/google/common/collect/ImmutableSet; +HSPLcom/google/common/collect/ImmutableSet;->of(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;[Ljava/lang/Object;)Lcom/google/common/collect/ImmutableSet; +HSPLcom/google/common/collect/ImmutableSet;->shouldTrim(II)Z +Lcom/google/common/collect/Lists; +HSPLcom/google/common/collect/Lists;->indexOfImpl(Ljava/util/List;Ljava/lang/Object;)I +HSPLcom/google/common/collect/Lists;->indexOfRandomAccess(Ljava/util/List;Ljava/lang/Object;)I +Lcom/google/common/collect/ObjectArrays; +HSPLcom/google/common/collect/ObjectArrays;->checkElementNotNull(Ljava/lang/Object;I)Ljava/lang/Object; +HSPLcom/google/common/collect/ObjectArrays;->checkElementsNotNull([Ljava/lang/Object;)[Ljava/lang/Object; +HSPLcom/google/common/collect/ObjectArrays;->checkElementsNotNull([Ljava/lang/Object;I)[Ljava/lang/Object; +Lcom/google/common/collect/RegularImmutableList; +HSPLcom/google/common/collect/RegularImmutableList;->()V +HSPLcom/google/common/collect/RegularImmutableList;->([Ljava/lang/Object;I)V +HSPLcom/google/common/collect/RegularImmutableList;->get(I)Ljava/lang/Object; +HSPLcom/google/common/collect/RegularImmutableList;->size()I +Lcom/google/common/collect/RegularImmutableSet; +HSPLcom/google/common/collect/RegularImmutableSet;->()V +HSPLcom/google/common/collect/RegularImmutableSet;->([Ljava/lang/Object;I[Ljava/lang/Object;II)V +Lcom/google/common/collect/UnmodifiableIterator; +HSPLcom/google/common/collect/UnmodifiableIterator;->()V +Lcom/google/common/collect/UnmodifiableListIterator; +HSPLcom/google/common/collect/UnmodifiableListIterator;->()V +Lcom/google/common/util/concurrent/ListenableFuture; +Lcom/google/common/util/concurrent/Striped$SmallLazyStriped$$ExternalSyntheticBackportWithForwarding0; +HSPLcom/google/common/util/concurrent/Striped$SmallLazyStriped$$ExternalSyntheticBackportWithForwarding0;->m(Ljava/util/concurrent/atomic/AtomicReferenceArray;ILjava/lang/Object;Ljava/lang/Object;)Z +Lcom/google/crypto/tink/Aead; +Lcom/google/crypto/tink/BinaryKeysetReader; +HSPLcom/google/crypto/tink/BinaryKeysetReader;->(Ljava/io/InputStream;)V +HSPLcom/google/crypto/tink/BinaryKeysetReader;->readEncrypted()Lcom/google/crypto/tink/proto/EncryptedKeyset; +HSPLcom/google/crypto/tink/BinaryKeysetReader;->withBytes([B)Lcom/google/crypto/tink/KeysetReader; +Lcom/google/crypto/tink/CryptoFormat; +HSPLcom/google/crypto/tink/CryptoFormat;->()V +HSPLcom/google/crypto/tink/CryptoFormat;->getOutputPrefix(Lcom/google/crypto/tink/proto/Keyset$Key;)[B +Lcom/google/crypto/tink/CryptoFormat$1; +HSPLcom/google/crypto/tink/CryptoFormat$1;->()V +Lcom/google/crypto/tink/DeterministicAead; +Lcom/google/crypto/tink/InsecureSecretKeyAccess; +HSPLcom/google/crypto/tink/InsecureSecretKeyAccess;->get()Lcom/google/crypto/tink/SecretKeyAccess; +Lcom/google/crypto/tink/Key; +HSPLcom/google/crypto/tink/Key;->()V +Lcom/google/crypto/tink/KeyManager; +Lcom/google/crypto/tink/KeyManagerImpl; +HSPLcom/google/crypto/tink/KeyManagerImpl;->(Lcom/google/crypto/tink/internal/KeyTypeManager;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/KeyManagerImpl;->getKeyType()Ljava/lang/String; +HSPLcom/google/crypto/tink/KeyManagerImpl;->getPrimitive(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/KeyManagerImpl;->keyFactoryHelper()Lcom/google/crypto/tink/KeyManagerImpl$KeyFactoryHelper; +HSPLcom/google/crypto/tink/KeyManagerImpl;->newKeyData(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)Lcom/google/crypto/tink/proto/KeyData; +HSPLcom/google/crypto/tink/KeyManagerImpl;->validateKeyAndGetPrimitive(Lcom/google/crypto/tink/shaded/protobuf/MessageLite;)Ljava/lang/Object; +Lcom/google/crypto/tink/KeyManagerImpl$KeyFactoryHelper; +HSPLcom/google/crypto/tink/KeyManagerImpl$KeyFactoryHelper;->(Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory;)V +HSPLcom/google/crypto/tink/KeyManagerImpl$KeyFactoryHelper;->parseValidateCreate(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)Lcom/google/crypto/tink/shaded/protobuf/MessageLite; +HSPLcom/google/crypto/tink/KeyManagerImpl$KeyFactoryHelper;->validateCreate(Lcom/google/crypto/tink/shaded/protobuf/MessageLite;)Lcom/google/crypto/tink/shaded/protobuf/MessageLite; +Lcom/google/crypto/tink/KeyManagerRegistry; +HSPLcom/google/crypto/tink/KeyManagerRegistry;->()V +HSPLcom/google/crypto/tink/KeyManagerRegistry;->()V +HSPLcom/google/crypto/tink/KeyManagerRegistry;->(Lcom/google/crypto/tink/KeyManagerRegistry;)V +HSPLcom/google/crypto/tink/KeyManagerRegistry;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/KeyManagerRegistry;->createContainerFor(Lcom/google/crypto/tink/internal/KeyTypeManager;)Lcom/google/crypto/tink/KeyManagerRegistry$KeyManagerContainer; +HSPLcom/google/crypto/tink/KeyManagerRegistry;->getKeyManager(Ljava/lang/String;Ljava/lang/Class;)Lcom/google/crypto/tink/KeyManager; +HSPLcom/google/crypto/tink/KeyManagerRegistry;->getKeyManagerContainerOrThrow(Ljava/lang/String;)Lcom/google/crypto/tink/KeyManagerRegistry$KeyManagerContainer; +HSPLcom/google/crypto/tink/KeyManagerRegistry;->getKeyManagerInternal(Ljava/lang/String;Ljava/lang/Class;)Lcom/google/crypto/tink/KeyManager; +HSPLcom/google/crypto/tink/KeyManagerRegistry;->getUntypedKeyManager(Ljava/lang/String;)Lcom/google/crypto/tink/KeyManager; +HSPLcom/google/crypto/tink/KeyManagerRegistry;->registerKeyManager(Lcom/google/crypto/tink/internal/KeyTypeManager;)V +HSPLcom/google/crypto/tink/KeyManagerRegistry;->registerKeyManagerContainer(Lcom/google/crypto/tink/KeyManagerRegistry$KeyManagerContainer;Z)V +HSPLcom/google/crypto/tink/KeyManagerRegistry;->typeUrlExists(Ljava/lang/String;)Z +Lcom/google/crypto/tink/KeyManagerRegistry$2; +HSPLcom/google/crypto/tink/KeyManagerRegistry$2;->(Lcom/google/crypto/tink/internal/KeyTypeManager;)V +HSPLcom/google/crypto/tink/KeyManagerRegistry$2;->getImplementingClass()Ljava/lang/Class; +HSPLcom/google/crypto/tink/KeyManagerRegistry$2;->getKeyManager(Ljava/lang/Class;)Lcom/google/crypto/tink/KeyManager; +HSPLcom/google/crypto/tink/KeyManagerRegistry$2;->getUntypedKeyManager()Lcom/google/crypto/tink/KeyManager; +HSPLcom/google/crypto/tink/KeyManagerRegistry$2;->supportedPrimitives()Ljava/util/Set; +Lcom/google/crypto/tink/KeyManagerRegistry$KeyManagerContainer; +Lcom/google/crypto/tink/KeyStatus; +HSPLcom/google/crypto/tink/KeyStatus;->()V +HSPLcom/google/crypto/tink/KeyStatus;->(Ljava/lang/String;)V +Lcom/google/crypto/tink/KeyTemplate; +HSPLcom/google/crypto/tink/KeyTemplate;->(Lcom/google/crypto/tink/proto/KeyTemplate;)V +HSPLcom/google/crypto/tink/KeyTemplate;->create(Ljava/lang/String;[BLcom/google/crypto/tink/KeyTemplate$OutputPrefixType;)Lcom/google/crypto/tink/KeyTemplate; +HSPLcom/google/crypto/tink/KeyTemplate;->getProto()Lcom/google/crypto/tink/proto/KeyTemplate; +HSPLcom/google/crypto/tink/KeyTemplate;->toProto(Lcom/google/crypto/tink/KeyTemplate$OutputPrefixType;)Lcom/google/crypto/tink/proto/OutputPrefixType; +Lcom/google/crypto/tink/KeyTemplate$1; +HSPLcom/google/crypto/tink/KeyTemplate$1;->()V +Lcom/google/crypto/tink/KeyTemplate$OutputPrefixType; +HSPLcom/google/crypto/tink/KeyTemplate$OutputPrefixType;->()V +HSPLcom/google/crypto/tink/KeyTemplate$OutputPrefixType;->(Ljava/lang/String;I)V +HSPLcom/google/crypto/tink/KeyTemplate$OutputPrefixType;->values()[Lcom/google/crypto/tink/KeyTemplate$OutputPrefixType; +Lcom/google/crypto/tink/KeyTemplates; +HSPLcom/google/crypto/tink/KeyTemplates;->get(Ljava/lang/String;)Lcom/google/crypto/tink/KeyTemplate; +Lcom/google/crypto/tink/KeysetHandle; +HSPLcom/google/crypto/tink/KeysetHandle;->(Lcom/google/crypto/tink/proto/Keyset;Ljava/util/List;)V +HSPLcom/google/crypto/tink/KeysetHandle;->assertEnoughEncryptedKeyMaterial(Lcom/google/crypto/tink/proto/EncryptedKeyset;)V +HSPLcom/google/crypto/tink/KeysetHandle;->assertEnoughKeyMaterial(Lcom/google/crypto/tink/proto/Keyset;)V +HSPLcom/google/crypto/tink/KeysetHandle;->decrypt(Lcom/google/crypto/tink/proto/EncryptedKeyset;Lcom/google/crypto/tink/Aead;[B)Lcom/google/crypto/tink/proto/Keyset; +HSPLcom/google/crypto/tink/KeysetHandle;->encrypt(Lcom/google/crypto/tink/proto/Keyset;Lcom/google/crypto/tink/Aead;[B)Lcom/google/crypto/tink/proto/EncryptedKeyset; +HSPLcom/google/crypto/tink/KeysetHandle;->fromKeyset(Lcom/google/crypto/tink/proto/Keyset;)Lcom/google/crypto/tink/KeysetHandle; +HSPLcom/google/crypto/tink/KeysetHandle;->getEntriesFromKeyset(Lcom/google/crypto/tink/proto/Keyset;)Ljava/util/List; +HSPLcom/google/crypto/tink/KeysetHandle;->getFullPrimitiveOrNull(Lcom/google/crypto/tink/Key;Ljava/lang/Class;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/KeysetHandle;->getKeyset()Lcom/google/crypto/tink/proto/Keyset; +HSPLcom/google/crypto/tink/KeysetHandle;->getKeysetInfo()Lcom/google/crypto/tink/proto/KeysetInfo; +HSPLcom/google/crypto/tink/KeysetHandle;->getLegacyPrimitiveOrNull(Lcom/google/crypto/tink/proto/Keyset$Key;Ljava/lang/Class;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/KeysetHandle;->getPrimitive(Ljava/lang/Class;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/KeysetHandle;->getPrimitiveWithKnownInputPrimitive(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/KeysetHandle;->parseStatus(Lcom/google/crypto/tink/proto/KeyStatusType;)Lcom/google/crypto/tink/KeyStatus; +HSPLcom/google/crypto/tink/KeysetHandle;->read(Lcom/google/crypto/tink/KeysetReader;Lcom/google/crypto/tink/Aead;)Lcom/google/crypto/tink/KeysetHandle; +HSPLcom/google/crypto/tink/KeysetHandle;->readWithAssociatedData(Lcom/google/crypto/tink/KeysetReader;Lcom/google/crypto/tink/Aead;[B)Lcom/google/crypto/tink/KeysetHandle; +HSPLcom/google/crypto/tink/KeysetHandle;->size()I +HSPLcom/google/crypto/tink/KeysetHandle;->toProtoKeySerialization(Lcom/google/crypto/tink/proto/Keyset$Key;)Lcom/google/crypto/tink/internal/ProtoKeySerialization; +HSPLcom/google/crypto/tink/KeysetHandle;->write(Lcom/google/crypto/tink/KeysetWriter;Lcom/google/crypto/tink/Aead;)V +HSPLcom/google/crypto/tink/KeysetHandle;->writeWithAssociatedData(Lcom/google/crypto/tink/KeysetWriter;Lcom/google/crypto/tink/Aead;[B)V +Lcom/google/crypto/tink/KeysetHandle$1; +HSPLcom/google/crypto/tink/KeysetHandle$1;->()V +Lcom/google/crypto/tink/KeysetHandle$Entry; +HSPLcom/google/crypto/tink/KeysetHandle$Entry;->(Lcom/google/crypto/tink/Key;Lcom/google/crypto/tink/KeyStatus;IZ)V +HSPLcom/google/crypto/tink/KeysetHandle$Entry;->(Lcom/google/crypto/tink/Key;Lcom/google/crypto/tink/KeyStatus;IZLcom/google/crypto/tink/KeysetHandle$1;)V +HSPLcom/google/crypto/tink/KeysetHandle$Entry;->getKey()Lcom/google/crypto/tink/Key; +Lcom/google/crypto/tink/KeysetManager; +HSPLcom/google/crypto/tink/KeysetManager;->(Lcom/google/crypto/tink/proto/Keyset$Builder;)V +HSPLcom/google/crypto/tink/KeysetManager;->add(Lcom/google/crypto/tink/KeyTemplate;)Lcom/google/crypto/tink/KeysetManager; +HSPLcom/google/crypto/tink/KeysetManager;->addNewKey(Lcom/google/crypto/tink/proto/KeyTemplate;Z)I +HSPLcom/google/crypto/tink/KeysetManager;->createKeysetKey(Lcom/google/crypto/tink/proto/KeyData;Lcom/google/crypto/tink/proto/OutputPrefixType;)Lcom/google/crypto/tink/proto/Keyset$Key; +HSPLcom/google/crypto/tink/KeysetManager;->getKeysetHandle()Lcom/google/crypto/tink/KeysetHandle; +HSPLcom/google/crypto/tink/KeysetManager;->keyIdExists(I)Z +HSPLcom/google/crypto/tink/KeysetManager;->newKey(Lcom/google/crypto/tink/proto/KeyTemplate;)Lcom/google/crypto/tink/proto/Keyset$Key; +HSPLcom/google/crypto/tink/KeysetManager;->newKeyId()I +HSPLcom/google/crypto/tink/KeysetManager;->setPrimary(I)Lcom/google/crypto/tink/KeysetManager; +HSPLcom/google/crypto/tink/KeysetManager;->withEmptyKeyset()Lcom/google/crypto/tink/KeysetManager; +HSPLcom/google/crypto/tink/KeysetManager;->withKeysetHandle(Lcom/google/crypto/tink/KeysetHandle;)Lcom/google/crypto/tink/KeysetManager; +Lcom/google/crypto/tink/KeysetReader; +Lcom/google/crypto/tink/KeysetWriter; +Lcom/google/crypto/tink/KmsClient; +Lcom/google/crypto/tink/Mac; +Lcom/google/crypto/tink/Parameters; +HSPLcom/google/crypto/tink/Parameters;->()V +Lcom/google/crypto/tink/PrimitiveSet; +HSPLcom/google/crypto/tink/PrimitiveSet;->(Ljava/util/concurrent/ConcurrentMap;Lcom/google/crypto/tink/PrimitiveSet$Entry;Lcom/google/crypto/tink/monitoring/MonitoringAnnotations;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/PrimitiveSet;->(Ljava/util/concurrent/ConcurrentMap;Lcom/google/crypto/tink/PrimitiveSet$Entry;Lcom/google/crypto/tink/monitoring/MonitoringAnnotations;Ljava/lang/Class;Lcom/google/crypto/tink/PrimitiveSet$1;)V +HSPLcom/google/crypto/tink/PrimitiveSet;->access$100(Ljava/lang/Object;Ljava/lang/Object;Lcom/google/crypto/tink/proto/Keyset$Key;Ljava/util/concurrent/ConcurrentMap;)Lcom/google/crypto/tink/PrimitiveSet$Entry; +HSPLcom/google/crypto/tink/PrimitiveSet;->addEntryToMap(Ljava/lang/Object;Ljava/lang/Object;Lcom/google/crypto/tink/proto/Keyset$Key;Ljava/util/concurrent/ConcurrentMap;)Lcom/google/crypto/tink/PrimitiveSet$Entry; +HSPLcom/google/crypto/tink/PrimitiveSet;->getPrimary()Lcom/google/crypto/tink/PrimitiveSet$Entry; +HSPLcom/google/crypto/tink/PrimitiveSet;->getPrimitive([B)Ljava/util/List; +HSPLcom/google/crypto/tink/PrimitiveSet;->getPrimitiveClass()Ljava/lang/Class; +HSPLcom/google/crypto/tink/PrimitiveSet;->hasAnnotations()Z +HSPLcom/google/crypto/tink/PrimitiveSet;->newBuilder(Ljava/lang/Class;)Lcom/google/crypto/tink/PrimitiveSet$Builder; +Lcom/google/crypto/tink/PrimitiveSet$Builder; +HSPLcom/google/crypto/tink/PrimitiveSet$Builder;->(Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/PrimitiveSet$Builder;->(Ljava/lang/Class;Lcom/google/crypto/tink/PrimitiveSet$1;)V +HSPLcom/google/crypto/tink/PrimitiveSet$Builder;->addPrimaryFullPrimitiveAndOptionalPrimitive(Ljava/lang/Object;Ljava/lang/Object;Lcom/google/crypto/tink/proto/Keyset$Key;)Lcom/google/crypto/tink/PrimitiveSet$Builder; +HSPLcom/google/crypto/tink/PrimitiveSet$Builder;->addPrimitive(Ljava/lang/Object;Ljava/lang/Object;Lcom/google/crypto/tink/proto/Keyset$Key;Z)Lcom/google/crypto/tink/PrimitiveSet$Builder; +HSPLcom/google/crypto/tink/PrimitiveSet$Builder;->build()Lcom/google/crypto/tink/PrimitiveSet; +HSPLcom/google/crypto/tink/PrimitiveSet$Builder;->setAnnotations(Lcom/google/crypto/tink/monitoring/MonitoringAnnotations;)Lcom/google/crypto/tink/PrimitiveSet$Builder; +Lcom/google/crypto/tink/PrimitiveSet$Entry; +HSPLcom/google/crypto/tink/PrimitiveSet$Entry;->(Ljava/lang/Object;Ljava/lang/Object;[BLcom/google/crypto/tink/proto/KeyStatusType;Lcom/google/crypto/tink/proto/OutputPrefixType;ILjava/lang/String;Lcom/google/crypto/tink/Key;)V +HSPLcom/google/crypto/tink/PrimitiveSet$Entry;->getIdentifier()[B +HSPLcom/google/crypto/tink/PrimitiveSet$Entry;->getKeyId()I +HSPLcom/google/crypto/tink/PrimitiveSet$Entry;->getPrimitive()Ljava/lang/Object; +Lcom/google/crypto/tink/PrimitiveSet$Prefix; +HSPLcom/google/crypto/tink/PrimitiveSet$Prefix;->([B)V +HSPLcom/google/crypto/tink/PrimitiveSet$Prefix;->([BLcom/google/crypto/tink/PrimitiveSet$1;)V +HSPLcom/google/crypto/tink/PrimitiveSet$Prefix;->equals(Ljava/lang/Object;)Z +HSPLcom/google/crypto/tink/PrimitiveSet$Prefix;->hashCode()I +Lcom/google/crypto/tink/PrimitiveWrapper; +Lcom/google/crypto/tink/Registry; +HSPLcom/google/crypto/tink/Registry;->()V +HSPLcom/google/crypto/tink/Registry;->createDeriverFor(Lcom/google/crypto/tink/internal/KeyTypeManager;)Lcom/google/crypto/tink/Registry$KeyDeriverContainer; +HSPLcom/google/crypto/tink/Registry;->ensureKeyManagerInsertable(Ljava/lang/String;Ljava/util/Map;Z)V +HSPLcom/google/crypto/tink/Registry;->getFullPrimitive(Lcom/google/crypto/tink/Key;Ljava/lang/Class;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/Registry;->getInputPrimitive(Ljava/lang/Class;)Ljava/lang/Class; +HSPLcom/google/crypto/tink/Registry;->getPrimitive(Lcom/google/crypto/tink/proto/KeyData;Ljava/lang/Class;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/Registry;->getPrimitive(Ljava/lang/String;Lcom/google/crypto/tink/shaded/protobuf/ByteString;Ljava/lang/Class;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/Registry;->getUntypedKeyManager(Ljava/lang/String;)Lcom/google/crypto/tink/KeyManager; +HSPLcom/google/crypto/tink/Registry;->keyTemplateMap()Ljava/util/Map; +HSPLcom/google/crypto/tink/Registry;->newKeyData(Lcom/google/crypto/tink/proto/KeyTemplate;)Lcom/google/crypto/tink/proto/KeyData; +HSPLcom/google/crypto/tink/Registry;->registerKeyManager(Lcom/google/crypto/tink/internal/KeyTypeManager;Z)V +HSPLcom/google/crypto/tink/Registry;->registerKeyTemplates(Ljava/lang/String;Ljava/util/Map;)V +HSPLcom/google/crypto/tink/Registry;->registerPrimitiveWrapper(Lcom/google/crypto/tink/PrimitiveWrapper;)V +HSPLcom/google/crypto/tink/Registry;->wrap(Lcom/google/crypto/tink/PrimitiveSet;Ljava/lang/Class;)Ljava/lang/Object; +Lcom/google/crypto/tink/Registry$1; +HSPLcom/google/crypto/tink/Registry$1;->(Lcom/google/crypto/tink/internal/KeyTypeManager;)V +Lcom/google/crypto/tink/Registry$KeyDeriverContainer; +Lcom/google/crypto/tink/SecretKeyAccess; +HSPLcom/google/crypto/tink/SecretKeyAccess;->()V +HSPLcom/google/crypto/tink/SecretKeyAccess;->()V +HSPLcom/google/crypto/tink/SecretKeyAccess;->instance()Lcom/google/crypto/tink/SecretKeyAccess; +HSPLcom/google/crypto/tink/SecretKeyAccess;->requireAccess(Lcom/google/crypto/tink/SecretKeyAccess;)Lcom/google/crypto/tink/SecretKeyAccess; +Lcom/google/crypto/tink/Util; +HSPLcom/google/crypto/tink/Util;->()V +HSPLcom/google/crypto/tink/Util;->getKeyInfo(Lcom/google/crypto/tink/proto/Keyset$Key;)Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo; +HSPLcom/google/crypto/tink/Util;->getKeysetInfo(Lcom/google/crypto/tink/proto/Keyset;)Lcom/google/crypto/tink/proto/KeysetInfo; +HSPLcom/google/crypto/tink/Util;->validateKey(Lcom/google/crypto/tink/proto/Keyset$Key;)V +HSPLcom/google/crypto/tink/Util;->validateKeyset(Lcom/google/crypto/tink/proto/Keyset;)V +Lcom/google/crypto/tink/aead/AeadConfig; +HSPLcom/google/crypto/tink/aead/AeadConfig;->()V +HSPLcom/google/crypto/tink/aead/AeadConfig;->init()V +HSPLcom/google/crypto/tink/aead/AeadConfig;->register()V +Lcom/google/crypto/tink/aead/AeadKey; +HSPLcom/google/crypto/tink/aead/AeadKey;->()V +Lcom/google/crypto/tink/aead/AeadParameters; +HSPLcom/google/crypto/tink/aead/AeadParameters;->()V +Lcom/google/crypto/tink/aead/AeadWrapper; +HSPLcom/google/crypto/tink/aead/AeadWrapper;->()V +HSPLcom/google/crypto/tink/aead/AeadWrapper;->()V +HSPLcom/google/crypto/tink/aead/AeadWrapper;->getInputPrimitiveClass()Ljava/lang/Class; +HSPLcom/google/crypto/tink/aead/AeadWrapper;->getPrimitiveClass()Ljava/lang/Class; +HSPLcom/google/crypto/tink/aead/AeadWrapper;->register()V +HSPLcom/google/crypto/tink/aead/AeadWrapper;->wrap(Lcom/google/crypto/tink/PrimitiveSet;)Lcom/google/crypto/tink/Aead; +HSPLcom/google/crypto/tink/aead/AeadWrapper;->wrap(Lcom/google/crypto/tink/PrimitiveSet;)Ljava/lang/Object; +Lcom/google/crypto/tink/aead/AeadWrapper$WrappedAead; +HSPLcom/google/crypto/tink/aead/AeadWrapper$WrappedAead;->(Lcom/google/crypto/tink/PrimitiveSet;)V +HSPLcom/google/crypto/tink/aead/AeadWrapper$WrappedAead;->(Lcom/google/crypto/tink/PrimitiveSet;Lcom/google/crypto/tink/aead/AeadWrapper$1;)V +HSPLcom/google/crypto/tink/aead/AeadWrapper$WrappedAead;->decrypt([B[B)[B +HSPLcom/google/crypto/tink/aead/AeadWrapper$WrappedAead;->encrypt([B[B)[B +Lcom/google/crypto/tink/aead/AesCtrHmacAeadKeyManager; +HSPLcom/google/crypto/tink/aead/AesCtrHmacAeadKeyManager;->()V +HSPLcom/google/crypto/tink/aead/AesCtrHmacAeadKeyManager;->access$000(IIIILcom/google/crypto/tink/proto/HashType;Lcom/google/crypto/tink/KeyTemplate$OutputPrefixType;)Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory$KeyFormat; +HSPLcom/google/crypto/tink/aead/AesCtrHmacAeadKeyManager;->createKeyFormat(IIIILcom/google/crypto/tink/proto/HashType;)Lcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat; +HSPLcom/google/crypto/tink/aead/AesCtrHmacAeadKeyManager;->createKeyFormat(IIIILcom/google/crypto/tink/proto/HashType;Lcom/google/crypto/tink/KeyTemplate$OutputPrefixType;)Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory$KeyFormat; +HSPLcom/google/crypto/tink/aead/AesCtrHmacAeadKeyManager;->fipsStatus()Lcom/google/crypto/tink/config/internal/TinkFipsUtil$AlgorithmFipsCompatibility; +HSPLcom/google/crypto/tink/aead/AesCtrHmacAeadKeyManager;->getKeyType()Ljava/lang/String; +HSPLcom/google/crypto/tink/aead/AesCtrHmacAeadKeyManager;->keyFactory()Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory; +HSPLcom/google/crypto/tink/aead/AesCtrHmacAeadKeyManager;->register(Z)V +Lcom/google/crypto/tink/aead/AesCtrHmacAeadKeyManager$1; +HSPLcom/google/crypto/tink/aead/AesCtrHmacAeadKeyManager$1;->(Ljava/lang/Class;)V +Lcom/google/crypto/tink/aead/AesCtrHmacAeadKeyManager$2; +HSPLcom/google/crypto/tink/aead/AesCtrHmacAeadKeyManager$2;->(Lcom/google/crypto/tink/aead/AesCtrHmacAeadKeyManager;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/aead/AesCtrHmacAeadKeyManager$2;->keyFormats()Ljava/util/Map; +Lcom/google/crypto/tink/aead/AesEaxKey; +Lcom/google/crypto/tink/aead/AesEaxKeyManager; +HSPLcom/google/crypto/tink/aead/AesEaxKeyManager;->()V +HSPLcom/google/crypto/tink/aead/AesEaxKeyManager;->access$000(IILcom/google/crypto/tink/KeyTemplate$OutputPrefixType;)Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory$KeyFormat; +HSPLcom/google/crypto/tink/aead/AesEaxKeyManager;->createKeyFormat(IILcom/google/crypto/tink/KeyTemplate$OutputPrefixType;)Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory$KeyFormat; +HSPLcom/google/crypto/tink/aead/AesEaxKeyManager;->getKeyType()Ljava/lang/String; +HSPLcom/google/crypto/tink/aead/AesEaxKeyManager;->keyFactory()Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory; +HSPLcom/google/crypto/tink/aead/AesEaxKeyManager;->register(Z)V +Lcom/google/crypto/tink/aead/AesEaxKeyManager$1; +HSPLcom/google/crypto/tink/aead/AesEaxKeyManager$1;->(Ljava/lang/Class;)V +Lcom/google/crypto/tink/aead/AesEaxKeyManager$2; +HSPLcom/google/crypto/tink/aead/AesEaxKeyManager$2;->(Lcom/google/crypto/tink/aead/AesEaxKeyManager;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/aead/AesEaxKeyManager$2;->keyFormats()Ljava/util/Map; +Lcom/google/crypto/tink/aead/AesEaxParameters; +Lcom/google/crypto/tink/aead/AesEaxProtoSerialization; +HSPLcom/google/crypto/tink/aead/AesEaxProtoSerialization;->()V +HSPLcom/google/crypto/tink/aead/AesEaxProtoSerialization;->register()V +HSPLcom/google/crypto/tink/aead/AesEaxProtoSerialization;->register(Lcom/google/crypto/tink/internal/MutableSerializationRegistry;)V +Lcom/google/crypto/tink/aead/AesEaxProtoSerialization$$ExternalSyntheticLambda0; +HSPLcom/google/crypto/tink/aead/AesEaxProtoSerialization$$ExternalSyntheticLambda0;->()V +Lcom/google/crypto/tink/aead/AesEaxProtoSerialization$$ExternalSyntheticLambda1; +HSPLcom/google/crypto/tink/aead/AesEaxProtoSerialization$$ExternalSyntheticLambda1;->()V +Lcom/google/crypto/tink/aead/AesEaxProtoSerialization$$ExternalSyntheticLambda2; +HSPLcom/google/crypto/tink/aead/AesEaxProtoSerialization$$ExternalSyntheticLambda2;->()V +Lcom/google/crypto/tink/aead/AesEaxProtoSerialization$$ExternalSyntheticLambda3; +HSPLcom/google/crypto/tink/aead/AesEaxProtoSerialization$$ExternalSyntheticLambda3;->()V +Lcom/google/crypto/tink/aead/AesGcmKey; +HSPLcom/google/crypto/tink/aead/AesGcmKey;->(Lcom/google/crypto/tink/aead/AesGcmParameters;Lcom/google/crypto/tink/util/SecretBytes;Lcom/google/crypto/tink/util/Bytes;Ljava/lang/Integer;)V +HSPLcom/google/crypto/tink/aead/AesGcmKey;->(Lcom/google/crypto/tink/aead/AesGcmParameters;Lcom/google/crypto/tink/util/SecretBytes;Lcom/google/crypto/tink/util/Bytes;Ljava/lang/Integer;Lcom/google/crypto/tink/aead/AesGcmKey$1;)V +HSPLcom/google/crypto/tink/aead/AesGcmKey;->builder()Lcom/google/crypto/tink/aead/AesGcmKey$Builder; +Lcom/google/crypto/tink/aead/AesGcmKey$Builder; +HSPLcom/google/crypto/tink/aead/AesGcmKey$Builder;->()V +HSPLcom/google/crypto/tink/aead/AesGcmKey$Builder;->(Lcom/google/crypto/tink/aead/AesGcmKey$1;)V +HSPLcom/google/crypto/tink/aead/AesGcmKey$Builder;->build()Lcom/google/crypto/tink/aead/AesGcmKey; +HSPLcom/google/crypto/tink/aead/AesGcmKey$Builder;->getOutputPrefix()Lcom/google/crypto/tink/util/Bytes; +HSPLcom/google/crypto/tink/aead/AesGcmKey$Builder;->setIdRequirement(Ljava/lang/Integer;)Lcom/google/crypto/tink/aead/AesGcmKey$Builder; +HSPLcom/google/crypto/tink/aead/AesGcmKey$Builder;->setKeyBytes(Lcom/google/crypto/tink/util/SecretBytes;)Lcom/google/crypto/tink/aead/AesGcmKey$Builder; +HSPLcom/google/crypto/tink/aead/AesGcmKey$Builder;->setParameters(Lcom/google/crypto/tink/aead/AesGcmParameters;)Lcom/google/crypto/tink/aead/AesGcmKey$Builder; +Lcom/google/crypto/tink/aead/AesGcmKeyManager; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager;->()V +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager;->access$000(ILcom/google/crypto/tink/KeyTemplate$OutputPrefixType;)Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory$KeyFormat; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager;->createKeyFormat(ILcom/google/crypto/tink/KeyTemplate$OutputPrefixType;)Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory$KeyFormat; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager;->fipsStatus()Lcom/google/crypto/tink/config/internal/TinkFipsUtil$AlgorithmFipsCompatibility; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager;->getKeyType()Ljava/lang/String; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager;->getVersion()I +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager;->keyFactory()Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager;->keyMaterialType()Lcom/google/crypto/tink/proto/KeyData$KeyMaterialType; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager;->parseKey(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)Lcom/google/crypto/tink/proto/AesGcmKey; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager;->parseKey(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)Lcom/google/crypto/tink/shaded/protobuf/MessageLite; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager;->register(Z)V +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager;->validateKey(Lcom/google/crypto/tink/proto/AesGcmKey;)V +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager;->validateKey(Lcom/google/crypto/tink/shaded/protobuf/MessageLite;)V +Lcom/google/crypto/tink/aead/AesGcmKeyManager$1; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager$1;->(Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager$1;->getPrimitive(Lcom/google/crypto/tink/proto/AesGcmKey;)Lcom/google/crypto/tink/Aead; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager$1;->getPrimitive(Lcom/google/crypto/tink/shaded/protobuf/MessageLite;)Ljava/lang/Object; +Lcom/google/crypto/tink/aead/AesGcmKeyManager$2; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager$2;->(Lcom/google/crypto/tink/aead/AesGcmKeyManager;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager$2;->createKey(Lcom/google/crypto/tink/proto/AesGcmKeyFormat;)Lcom/google/crypto/tink/proto/AesGcmKey; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager$2;->createKey(Lcom/google/crypto/tink/shaded/protobuf/MessageLite;)Lcom/google/crypto/tink/shaded/protobuf/MessageLite; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager$2;->keyFormats()Ljava/util/Map; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager$2;->parseKeyFormat(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)Lcom/google/crypto/tink/proto/AesGcmKeyFormat; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager$2;->parseKeyFormat(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)Lcom/google/crypto/tink/shaded/protobuf/MessageLite; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager$2;->validateKeyFormat(Lcom/google/crypto/tink/proto/AesGcmKeyFormat;)V +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager$2;->validateKeyFormat(Lcom/google/crypto/tink/shaded/protobuf/MessageLite;)V +Lcom/google/crypto/tink/aead/AesGcmParameters; +HSPLcom/google/crypto/tink/aead/AesGcmParameters;->(IIILcom/google/crypto/tink/aead/AesGcmParameters$Variant;)V +HSPLcom/google/crypto/tink/aead/AesGcmParameters;->(IIILcom/google/crypto/tink/aead/AesGcmParameters$Variant;Lcom/google/crypto/tink/aead/AesGcmParameters$1;)V +HSPLcom/google/crypto/tink/aead/AesGcmParameters;->builder()Lcom/google/crypto/tink/aead/AesGcmParameters$Builder; +HSPLcom/google/crypto/tink/aead/AesGcmParameters;->getKeySizeBytes()I +HSPLcom/google/crypto/tink/aead/AesGcmParameters;->getVariant()Lcom/google/crypto/tink/aead/AesGcmParameters$Variant; +HSPLcom/google/crypto/tink/aead/AesGcmParameters;->hasIdRequirement()Z +Lcom/google/crypto/tink/aead/AesGcmParameters$Builder; +HSPLcom/google/crypto/tink/aead/AesGcmParameters$Builder;->()V +HSPLcom/google/crypto/tink/aead/AesGcmParameters$Builder;->(Lcom/google/crypto/tink/aead/AesGcmParameters$1;)V +HSPLcom/google/crypto/tink/aead/AesGcmParameters$Builder;->build()Lcom/google/crypto/tink/aead/AesGcmParameters; +HSPLcom/google/crypto/tink/aead/AesGcmParameters$Builder;->setIvSizeBytes(I)Lcom/google/crypto/tink/aead/AesGcmParameters$Builder; +HSPLcom/google/crypto/tink/aead/AesGcmParameters$Builder;->setKeySizeBytes(I)Lcom/google/crypto/tink/aead/AesGcmParameters$Builder; +HSPLcom/google/crypto/tink/aead/AesGcmParameters$Builder;->setTagSizeBytes(I)Lcom/google/crypto/tink/aead/AesGcmParameters$Builder; +HSPLcom/google/crypto/tink/aead/AesGcmParameters$Builder;->setVariant(Lcom/google/crypto/tink/aead/AesGcmParameters$Variant;)Lcom/google/crypto/tink/aead/AesGcmParameters$Builder; +Lcom/google/crypto/tink/aead/AesGcmParameters$Variant; +HSPLcom/google/crypto/tink/aead/AesGcmParameters$Variant;->()V +HSPLcom/google/crypto/tink/aead/AesGcmParameters$Variant;->(Ljava/lang/String;)V +Lcom/google/crypto/tink/aead/AesGcmProtoSerialization; +HSPLcom/google/crypto/tink/aead/AesGcmProtoSerialization;->$r8$lambda$RUN6s-jYME9EdLASXNpQ12CSlHc(Lcom/google/crypto/tink/internal/ProtoKeySerialization;Lcom/google/crypto/tink/SecretKeyAccess;)Lcom/google/crypto/tink/aead/AesGcmKey; +HSPLcom/google/crypto/tink/aead/AesGcmProtoSerialization;->()V +HSPLcom/google/crypto/tink/aead/AesGcmProtoSerialization;->parseKey(Lcom/google/crypto/tink/internal/ProtoKeySerialization;Lcom/google/crypto/tink/SecretKeyAccess;)Lcom/google/crypto/tink/aead/AesGcmKey; +HSPLcom/google/crypto/tink/aead/AesGcmProtoSerialization;->register()V +HSPLcom/google/crypto/tink/aead/AesGcmProtoSerialization;->register(Lcom/google/crypto/tink/internal/MutableSerializationRegistry;)V +HSPLcom/google/crypto/tink/aead/AesGcmProtoSerialization;->toVariant(Lcom/google/crypto/tink/proto/OutputPrefixType;)Lcom/google/crypto/tink/aead/AesGcmParameters$Variant; +Lcom/google/crypto/tink/aead/AesGcmProtoSerialization$$ExternalSyntheticLambda0; +HSPLcom/google/crypto/tink/aead/AesGcmProtoSerialization$$ExternalSyntheticLambda0;->()V +Lcom/google/crypto/tink/aead/AesGcmProtoSerialization$$ExternalSyntheticLambda1; +HSPLcom/google/crypto/tink/aead/AesGcmProtoSerialization$$ExternalSyntheticLambda1;->()V +Lcom/google/crypto/tink/aead/AesGcmProtoSerialization$$ExternalSyntheticLambda2; +HSPLcom/google/crypto/tink/aead/AesGcmProtoSerialization$$ExternalSyntheticLambda2;->()V +Lcom/google/crypto/tink/aead/AesGcmProtoSerialization$$ExternalSyntheticLambda3; +HSPLcom/google/crypto/tink/aead/AesGcmProtoSerialization$$ExternalSyntheticLambda3;->()V +HSPLcom/google/crypto/tink/aead/AesGcmProtoSerialization$$ExternalSyntheticLambda3;->parseKey(Lcom/google/crypto/tink/internal/Serialization;Lcom/google/crypto/tink/SecretKeyAccess;)Lcom/google/crypto/tink/Key; +Lcom/google/crypto/tink/aead/AesGcmProtoSerialization$1; +HSPLcom/google/crypto/tink/aead/AesGcmProtoSerialization$1;->()V +Lcom/google/crypto/tink/aead/AesGcmSivKey; +Lcom/google/crypto/tink/aead/AesGcmSivKeyManager; +HSPLcom/google/crypto/tink/aead/AesGcmSivKeyManager;->()V +HSPLcom/google/crypto/tink/aead/AesGcmSivKeyManager;->access$000(ILcom/google/crypto/tink/KeyTemplate$OutputPrefixType;)Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory$KeyFormat; +HSPLcom/google/crypto/tink/aead/AesGcmSivKeyManager;->canUseAesGcmSive()Z +HSPLcom/google/crypto/tink/aead/AesGcmSivKeyManager;->createKeyFormat(ILcom/google/crypto/tink/KeyTemplate$OutputPrefixType;)Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory$KeyFormat; +HSPLcom/google/crypto/tink/aead/AesGcmSivKeyManager;->getKeyType()Ljava/lang/String; +HSPLcom/google/crypto/tink/aead/AesGcmSivKeyManager;->keyFactory()Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory; +HSPLcom/google/crypto/tink/aead/AesGcmSivKeyManager;->register(Z)V +Lcom/google/crypto/tink/aead/AesGcmSivKeyManager$1; +HSPLcom/google/crypto/tink/aead/AesGcmSivKeyManager$1;->(Ljava/lang/Class;)V +Lcom/google/crypto/tink/aead/AesGcmSivKeyManager$2; +HSPLcom/google/crypto/tink/aead/AesGcmSivKeyManager$2;->(Lcom/google/crypto/tink/aead/AesGcmSivKeyManager;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/aead/AesGcmSivKeyManager$2;->keyFormats()Ljava/util/Map; +Lcom/google/crypto/tink/aead/AesGcmSivParameters; +Lcom/google/crypto/tink/aead/AesGcmSivProtoSerialization; +HSPLcom/google/crypto/tink/aead/AesGcmSivProtoSerialization;->()V +HSPLcom/google/crypto/tink/aead/AesGcmSivProtoSerialization;->register()V +HSPLcom/google/crypto/tink/aead/AesGcmSivProtoSerialization;->register(Lcom/google/crypto/tink/internal/MutableSerializationRegistry;)V +Lcom/google/crypto/tink/aead/AesGcmSivProtoSerialization$$ExternalSyntheticLambda0; +HSPLcom/google/crypto/tink/aead/AesGcmSivProtoSerialization$$ExternalSyntheticLambda0;->()V +Lcom/google/crypto/tink/aead/AesGcmSivProtoSerialization$$ExternalSyntheticLambda1; +HSPLcom/google/crypto/tink/aead/AesGcmSivProtoSerialization$$ExternalSyntheticLambda1;->()V +Lcom/google/crypto/tink/aead/AesGcmSivProtoSerialization$$ExternalSyntheticLambda2; +HSPLcom/google/crypto/tink/aead/AesGcmSivProtoSerialization$$ExternalSyntheticLambda2;->()V +Lcom/google/crypto/tink/aead/AesGcmSivProtoSerialization$$ExternalSyntheticLambda3; +HSPLcom/google/crypto/tink/aead/AesGcmSivProtoSerialization$$ExternalSyntheticLambda3;->()V +Lcom/google/crypto/tink/aead/ChaCha20Poly1305Key; +Lcom/google/crypto/tink/aead/ChaCha20Poly1305KeyManager; +HSPLcom/google/crypto/tink/aead/ChaCha20Poly1305KeyManager;->()V +HSPLcom/google/crypto/tink/aead/ChaCha20Poly1305KeyManager;->getKeyType()Ljava/lang/String; +HSPLcom/google/crypto/tink/aead/ChaCha20Poly1305KeyManager;->keyFactory()Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory; +HSPLcom/google/crypto/tink/aead/ChaCha20Poly1305KeyManager;->register(Z)V +Lcom/google/crypto/tink/aead/ChaCha20Poly1305KeyManager$1; +HSPLcom/google/crypto/tink/aead/ChaCha20Poly1305KeyManager$1;->(Ljava/lang/Class;)V +Lcom/google/crypto/tink/aead/ChaCha20Poly1305KeyManager$2; +HSPLcom/google/crypto/tink/aead/ChaCha20Poly1305KeyManager$2;->(Lcom/google/crypto/tink/aead/ChaCha20Poly1305KeyManager;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/aead/ChaCha20Poly1305KeyManager$2;->keyFormats()Ljava/util/Map; +Lcom/google/crypto/tink/aead/ChaCha20Poly1305Parameters; +Lcom/google/crypto/tink/aead/ChaCha20Poly1305ProtoSerialization; +HSPLcom/google/crypto/tink/aead/ChaCha20Poly1305ProtoSerialization;->()V +HSPLcom/google/crypto/tink/aead/ChaCha20Poly1305ProtoSerialization;->register()V +HSPLcom/google/crypto/tink/aead/ChaCha20Poly1305ProtoSerialization;->register(Lcom/google/crypto/tink/internal/MutableSerializationRegistry;)V +Lcom/google/crypto/tink/aead/ChaCha20Poly1305ProtoSerialization$$ExternalSyntheticLambda0; +HSPLcom/google/crypto/tink/aead/ChaCha20Poly1305ProtoSerialization$$ExternalSyntheticLambda0;->()V +Lcom/google/crypto/tink/aead/ChaCha20Poly1305ProtoSerialization$$ExternalSyntheticLambda1; +HSPLcom/google/crypto/tink/aead/ChaCha20Poly1305ProtoSerialization$$ExternalSyntheticLambda1;->()V +Lcom/google/crypto/tink/aead/ChaCha20Poly1305ProtoSerialization$$ExternalSyntheticLambda2; +HSPLcom/google/crypto/tink/aead/ChaCha20Poly1305ProtoSerialization$$ExternalSyntheticLambda2;->()V +Lcom/google/crypto/tink/aead/ChaCha20Poly1305ProtoSerialization$$ExternalSyntheticLambda3; +HSPLcom/google/crypto/tink/aead/ChaCha20Poly1305ProtoSerialization$$ExternalSyntheticLambda3;->()V +Lcom/google/crypto/tink/aead/KmsAeadKeyManager; +HSPLcom/google/crypto/tink/aead/KmsAeadKeyManager;->()V +HSPLcom/google/crypto/tink/aead/KmsAeadKeyManager;->getKeyType()Ljava/lang/String; +HSPLcom/google/crypto/tink/aead/KmsAeadKeyManager;->keyFactory()Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory; +HSPLcom/google/crypto/tink/aead/KmsAeadKeyManager;->register(Z)V +Lcom/google/crypto/tink/aead/KmsAeadKeyManager$1; +HSPLcom/google/crypto/tink/aead/KmsAeadKeyManager$1;->(Ljava/lang/Class;)V +Lcom/google/crypto/tink/aead/KmsAeadKeyManager$2; +HSPLcom/google/crypto/tink/aead/KmsAeadKeyManager$2;->(Lcom/google/crypto/tink/aead/KmsAeadKeyManager;Ljava/lang/Class;)V +Lcom/google/crypto/tink/aead/KmsEnvelopeAeadKeyManager; +HSPLcom/google/crypto/tink/aead/KmsEnvelopeAeadKeyManager;->()V +HSPLcom/google/crypto/tink/aead/KmsEnvelopeAeadKeyManager;->getKeyType()Ljava/lang/String; +HSPLcom/google/crypto/tink/aead/KmsEnvelopeAeadKeyManager;->keyFactory()Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory; +HSPLcom/google/crypto/tink/aead/KmsEnvelopeAeadKeyManager;->register(Z)V +Lcom/google/crypto/tink/aead/KmsEnvelopeAeadKeyManager$1; +HSPLcom/google/crypto/tink/aead/KmsEnvelopeAeadKeyManager$1;->(Ljava/lang/Class;)V +Lcom/google/crypto/tink/aead/KmsEnvelopeAeadKeyManager$2; +HSPLcom/google/crypto/tink/aead/KmsEnvelopeAeadKeyManager$2;->(Lcom/google/crypto/tink/aead/KmsEnvelopeAeadKeyManager;Ljava/lang/Class;)V +Lcom/google/crypto/tink/aead/XChaCha20Poly1305Key; +Lcom/google/crypto/tink/aead/XChaCha20Poly1305KeyManager; +HSPLcom/google/crypto/tink/aead/XChaCha20Poly1305KeyManager;->()V +HSPLcom/google/crypto/tink/aead/XChaCha20Poly1305KeyManager;->getKeyType()Ljava/lang/String; +HSPLcom/google/crypto/tink/aead/XChaCha20Poly1305KeyManager;->keyFactory()Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory; +HSPLcom/google/crypto/tink/aead/XChaCha20Poly1305KeyManager;->register(Z)V +Lcom/google/crypto/tink/aead/XChaCha20Poly1305KeyManager$1; +HSPLcom/google/crypto/tink/aead/XChaCha20Poly1305KeyManager$1;->(Ljava/lang/Class;)V +Lcom/google/crypto/tink/aead/XChaCha20Poly1305KeyManager$2; +HSPLcom/google/crypto/tink/aead/XChaCha20Poly1305KeyManager$2;->(Lcom/google/crypto/tink/aead/XChaCha20Poly1305KeyManager;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/aead/XChaCha20Poly1305KeyManager$2;->keyFormats()Ljava/util/Map; +Lcom/google/crypto/tink/aead/XChaCha20Poly1305Parameters; +Lcom/google/crypto/tink/aead/XChaCha20Poly1305ProtoSerialization; +HSPLcom/google/crypto/tink/aead/XChaCha20Poly1305ProtoSerialization;->()V +HSPLcom/google/crypto/tink/aead/XChaCha20Poly1305ProtoSerialization;->register()V +HSPLcom/google/crypto/tink/aead/XChaCha20Poly1305ProtoSerialization;->register(Lcom/google/crypto/tink/internal/MutableSerializationRegistry;)V +Lcom/google/crypto/tink/aead/XChaCha20Poly1305ProtoSerialization$$ExternalSyntheticLambda0; +HSPLcom/google/crypto/tink/aead/XChaCha20Poly1305ProtoSerialization$$ExternalSyntheticLambda0;->()V +Lcom/google/crypto/tink/aead/XChaCha20Poly1305ProtoSerialization$$ExternalSyntheticLambda1; +HSPLcom/google/crypto/tink/aead/XChaCha20Poly1305ProtoSerialization$$ExternalSyntheticLambda1;->()V +Lcom/google/crypto/tink/aead/XChaCha20Poly1305ProtoSerialization$$ExternalSyntheticLambda2; +HSPLcom/google/crypto/tink/aead/XChaCha20Poly1305ProtoSerialization$$ExternalSyntheticLambda2;->()V +Lcom/google/crypto/tink/aead/XChaCha20Poly1305ProtoSerialization$$ExternalSyntheticLambda3; +HSPLcom/google/crypto/tink/aead/XChaCha20Poly1305ProtoSerialization$$ExternalSyntheticLambda3;->()V +Lcom/google/crypto/tink/aead/internal/InsecureNonceAesGcmJce; +HSPLcom/google/crypto/tink/aead/internal/InsecureNonceAesGcmJce;->()V +HSPLcom/google/crypto/tink/aead/internal/InsecureNonceAesGcmJce;->([BZ)V +HSPLcom/google/crypto/tink/aead/internal/InsecureNonceAesGcmJce;->decrypt([B[B[B)[B +HSPLcom/google/crypto/tink/aead/internal/InsecureNonceAesGcmJce;->encrypt([B[B[B)[B +HSPLcom/google/crypto/tink/aead/internal/InsecureNonceAesGcmJce;->getParams([B)Ljava/security/spec/AlgorithmParameterSpec; +HSPLcom/google/crypto/tink/aead/internal/InsecureNonceAesGcmJce;->getParams([BII)Ljava/security/spec/AlgorithmParameterSpec; +Lcom/google/crypto/tink/aead/internal/InsecureNonceAesGcmJce$1; +HSPLcom/google/crypto/tink/aead/internal/InsecureNonceAesGcmJce$1;->()V +HSPLcom/google/crypto/tink/aead/internal/InsecureNonceAesGcmJce$1;->initialValue()Ljava/lang/Object; +HSPLcom/google/crypto/tink/aead/internal/InsecureNonceAesGcmJce$1;->initialValue()Ljavax/crypto/Cipher; +Lcom/google/crypto/tink/config/TinkFips; +HSPLcom/google/crypto/tink/config/TinkFips;->useOnlyFips()Z +Lcom/google/crypto/tink/config/internal/TinkFipsStatus; +HSPLcom/google/crypto/tink/config/internal/TinkFipsStatus;->useOnlyFips()Z +Lcom/google/crypto/tink/config/internal/TinkFipsUtil; +HSPLcom/google/crypto/tink/config/internal/TinkFipsUtil;->()V +HSPLcom/google/crypto/tink/config/internal/TinkFipsUtil;->useOnlyFips()Z +Lcom/google/crypto/tink/config/internal/TinkFipsUtil$AlgorithmFipsCompatibility; +HSPLcom/google/crypto/tink/config/internal/TinkFipsUtil$AlgorithmFipsCompatibility;->()V +HSPLcom/google/crypto/tink/config/internal/TinkFipsUtil$AlgorithmFipsCompatibility;->(Ljava/lang/String;I)V +HSPLcom/google/crypto/tink/config/internal/TinkFipsUtil$AlgorithmFipsCompatibility;->(Ljava/lang/String;ILcom/google/crypto/tink/config/internal/TinkFipsUtil$1;)V +Lcom/google/crypto/tink/config/internal/TinkFipsUtil$AlgorithmFipsCompatibility$1; +HSPLcom/google/crypto/tink/config/internal/TinkFipsUtil$AlgorithmFipsCompatibility$1;->(Ljava/lang/String;I)V +HSPLcom/google/crypto/tink/config/internal/TinkFipsUtil$AlgorithmFipsCompatibility$1;->isCompatible()Z +Lcom/google/crypto/tink/config/internal/TinkFipsUtil$AlgorithmFipsCompatibility$2; +HSPLcom/google/crypto/tink/config/internal/TinkFipsUtil$AlgorithmFipsCompatibility$2;->(Ljava/lang/String;I)V +HSPLcom/google/crypto/tink/config/internal/TinkFipsUtil$AlgorithmFipsCompatibility$2;->isCompatible()Z +Lcom/google/crypto/tink/daead/AesSivKeyManager; +HSPLcom/google/crypto/tink/daead/AesSivKeyManager;->()V +HSPLcom/google/crypto/tink/daead/AesSivKeyManager;->getKeyType()Ljava/lang/String; +HSPLcom/google/crypto/tink/daead/AesSivKeyManager;->getVersion()I +HSPLcom/google/crypto/tink/daead/AesSivKeyManager;->keyFactory()Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory; +HSPLcom/google/crypto/tink/daead/AesSivKeyManager;->keyMaterialType()Lcom/google/crypto/tink/proto/KeyData$KeyMaterialType; +HSPLcom/google/crypto/tink/daead/AesSivKeyManager;->parseKey(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)Lcom/google/crypto/tink/proto/AesSivKey; +HSPLcom/google/crypto/tink/daead/AesSivKeyManager;->parseKey(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)Lcom/google/crypto/tink/shaded/protobuf/MessageLite; +HSPLcom/google/crypto/tink/daead/AesSivKeyManager;->register(Z)V +HSPLcom/google/crypto/tink/daead/AesSivKeyManager;->validateKey(Lcom/google/crypto/tink/proto/AesSivKey;)V +HSPLcom/google/crypto/tink/daead/AesSivKeyManager;->validateKey(Lcom/google/crypto/tink/shaded/protobuf/MessageLite;)V +Lcom/google/crypto/tink/daead/AesSivKeyManager$1; +HSPLcom/google/crypto/tink/daead/AesSivKeyManager$1;->(Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/daead/AesSivKeyManager$1;->getPrimitive(Lcom/google/crypto/tink/proto/AesSivKey;)Lcom/google/crypto/tink/DeterministicAead; +HSPLcom/google/crypto/tink/daead/AesSivKeyManager$1;->getPrimitive(Lcom/google/crypto/tink/shaded/protobuf/MessageLite;)Ljava/lang/Object; +Lcom/google/crypto/tink/daead/AesSivKeyManager$2; +HSPLcom/google/crypto/tink/daead/AesSivKeyManager$2;->(Lcom/google/crypto/tink/daead/AesSivKeyManager;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/daead/AesSivKeyManager$2;->createKey(Lcom/google/crypto/tink/proto/AesSivKeyFormat;)Lcom/google/crypto/tink/proto/AesSivKey; +HSPLcom/google/crypto/tink/daead/AesSivKeyManager$2;->createKey(Lcom/google/crypto/tink/shaded/protobuf/MessageLite;)Lcom/google/crypto/tink/shaded/protobuf/MessageLite; +HSPLcom/google/crypto/tink/daead/AesSivKeyManager$2;->keyFormats()Ljava/util/Map; +HSPLcom/google/crypto/tink/daead/AesSivKeyManager$2;->parseKeyFormat(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)Lcom/google/crypto/tink/proto/AesSivKeyFormat; +HSPLcom/google/crypto/tink/daead/AesSivKeyManager$2;->parseKeyFormat(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)Lcom/google/crypto/tink/shaded/protobuf/MessageLite; +HSPLcom/google/crypto/tink/daead/AesSivKeyManager$2;->validateKeyFormat(Lcom/google/crypto/tink/proto/AesSivKeyFormat;)V +HSPLcom/google/crypto/tink/daead/AesSivKeyManager$2;->validateKeyFormat(Lcom/google/crypto/tink/shaded/protobuf/MessageLite;)V +Lcom/google/crypto/tink/daead/DeterministicAeadConfig; +HSPLcom/google/crypto/tink/daead/DeterministicAeadConfig;->()V +HSPLcom/google/crypto/tink/daead/DeterministicAeadConfig;->register()V +Lcom/google/crypto/tink/daead/DeterministicAeadWrapper; +HSPLcom/google/crypto/tink/daead/DeterministicAeadWrapper;->()V +HSPLcom/google/crypto/tink/daead/DeterministicAeadWrapper;->()V +HSPLcom/google/crypto/tink/daead/DeterministicAeadWrapper;->getInputPrimitiveClass()Ljava/lang/Class; +HSPLcom/google/crypto/tink/daead/DeterministicAeadWrapper;->getPrimitiveClass()Ljava/lang/Class; +HSPLcom/google/crypto/tink/daead/DeterministicAeadWrapper;->register()V +HSPLcom/google/crypto/tink/daead/DeterministicAeadWrapper;->wrap(Lcom/google/crypto/tink/PrimitiveSet;)Lcom/google/crypto/tink/DeterministicAead; +HSPLcom/google/crypto/tink/daead/DeterministicAeadWrapper;->wrap(Lcom/google/crypto/tink/PrimitiveSet;)Ljava/lang/Object; +Lcom/google/crypto/tink/daead/DeterministicAeadWrapper$WrappedDeterministicAead; +HSPLcom/google/crypto/tink/daead/DeterministicAeadWrapper$WrappedDeterministicAead;->(Lcom/google/crypto/tink/PrimitiveSet;)V +HSPLcom/google/crypto/tink/daead/DeterministicAeadWrapper$WrappedDeterministicAead;->encryptDeterministically([B[B)[B +Lcom/google/crypto/tink/integration/android/AndroidKeysetManager; +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager;->()V +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager;->(Lcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;)V +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager;->(Lcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;Lcom/google/crypto/tink/integration/android/AndroidKeysetManager$1;)V +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager;->access$600()Ljava/lang/Object; +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager;->access$700()Z +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager;->getKeysetHandle()Lcom/google/crypto/tink/KeysetHandle; +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager;->isAtLeastM()Z +Lcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder; +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;->()V +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;->access$000(Lcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;)Landroid/content/Context; +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;->access$100(Lcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;)Ljava/lang/String; +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;->access$200(Lcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;)Ljava/lang/String; +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;->access$300(Lcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;)Lcom/google/crypto/tink/Aead; +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;->access$400(Lcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;)Lcom/google/crypto/tink/KeysetManager; +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;->build()Lcom/google/crypto/tink/integration/android/AndroidKeysetManager; +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;->generateKeysetAndWriteToPrefs()Lcom/google/crypto/tink/KeysetManager; +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;->readKeysetFromPrefs(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)[B +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;->readMasterkeyDecryptAndParseKeyset([B)Lcom/google/crypto/tink/KeysetManager; +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;->readOrGenerateNewMasterKey()Lcom/google/crypto/tink/Aead; +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;->withKeyTemplate(Lcom/google/crypto/tink/KeyTemplate;)Lcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder; +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;->withMasterKeyUri(Ljava/lang/String;)Lcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder; +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;->withSharedPref(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)Lcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder; +Lcom/google/crypto/tink/integration/android/AndroidKeystoreAesGcm; +HSPLcom/google/crypto/tink/integration/android/AndroidKeystoreAesGcm;->()V +HSPLcom/google/crypto/tink/integration/android/AndroidKeystoreAesGcm;->(Ljava/lang/String;Ljava/security/KeyStore;)V +HSPLcom/google/crypto/tink/integration/android/AndroidKeystoreAesGcm;->decrypt([B[B)[B +HSPLcom/google/crypto/tink/integration/android/AndroidKeystoreAesGcm;->decryptInternal([B[B)[B +HSPLcom/google/crypto/tink/integration/android/AndroidKeystoreAesGcm;->encrypt([B[B)[B +HSPLcom/google/crypto/tink/integration/android/AndroidKeystoreAesGcm;->encryptInternal([B[B)[B +Lcom/google/crypto/tink/integration/android/AndroidKeystoreKmsClient; +HSPLcom/google/crypto/tink/integration/android/AndroidKeystoreKmsClient;->()V +HSPLcom/google/crypto/tink/integration/android/AndroidKeystoreKmsClient;->()V +HSPLcom/google/crypto/tink/integration/android/AndroidKeystoreKmsClient;->(Lcom/google/crypto/tink/integration/android/AndroidKeystoreKmsClient$Builder;)V +HSPLcom/google/crypto/tink/integration/android/AndroidKeystoreKmsClient;->access$000()Z +HSPLcom/google/crypto/tink/integration/android/AndroidKeystoreKmsClient;->generateKeyIfNotExist(Ljava/lang/String;)Z +HSPLcom/google/crypto/tink/integration/android/AndroidKeystoreKmsClient;->getAead(Ljava/lang/String;)Lcom/google/crypto/tink/Aead; +HSPLcom/google/crypto/tink/integration/android/AndroidKeystoreKmsClient;->hasKey(Ljava/lang/String;)Z +HSPLcom/google/crypto/tink/integration/android/AndroidKeystoreKmsClient;->isAtLeastM()Z +HSPLcom/google/crypto/tink/integration/android/AndroidKeystoreKmsClient;->validateAead(Lcom/google/crypto/tink/Aead;)Lcom/google/crypto/tink/Aead; +Lcom/google/crypto/tink/integration/android/AndroidKeystoreKmsClient$Builder; +HSPLcom/google/crypto/tink/integration/android/AndroidKeystoreKmsClient$Builder;->()V +Lcom/google/crypto/tink/integration/android/SharedPrefKeysetWriter; +HSPLcom/google/crypto/tink/integration/android/SharedPrefKeysetWriter;->(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/google/crypto/tink/integration/android/SharedPrefKeysetWriter;->write(Lcom/google/crypto/tink/proto/EncryptedKeyset;)V +Lcom/google/crypto/tink/internal/BuildDispatchedCode; +HSPLcom/google/crypto/tink/internal/BuildDispatchedCode;->getApiLevel()Ljava/lang/Integer; +Lcom/google/crypto/tink/internal/KeyParser; +HSPLcom/google/crypto/tink/internal/KeyParser;->(Lcom/google/crypto/tink/util/Bytes;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/internal/KeyParser;->(Lcom/google/crypto/tink/util/Bytes;Ljava/lang/Class;Lcom/google/crypto/tink/internal/KeyParser$1;)V +HSPLcom/google/crypto/tink/internal/KeyParser;->create(Lcom/google/crypto/tink/internal/KeyParser$KeyParsingFunction;Lcom/google/crypto/tink/util/Bytes;Ljava/lang/Class;)Lcom/google/crypto/tink/internal/KeyParser; +HSPLcom/google/crypto/tink/internal/KeyParser;->getObjectIdentifier()Lcom/google/crypto/tink/util/Bytes; +HSPLcom/google/crypto/tink/internal/KeyParser;->getSerializationClass()Ljava/lang/Class; +Lcom/google/crypto/tink/internal/KeyParser$1; +HSPLcom/google/crypto/tink/internal/KeyParser$1;->(Lcom/google/crypto/tink/util/Bytes;Ljava/lang/Class;Lcom/google/crypto/tink/internal/KeyParser$KeyParsingFunction;)V +HSPLcom/google/crypto/tink/internal/KeyParser$1;->parseKey(Lcom/google/crypto/tink/internal/Serialization;Lcom/google/crypto/tink/SecretKeyAccess;)Lcom/google/crypto/tink/Key; +Lcom/google/crypto/tink/internal/KeyParser$KeyParsingFunction; +Lcom/google/crypto/tink/internal/KeySerializer; +HSPLcom/google/crypto/tink/internal/KeySerializer;->(Ljava/lang/Class;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/internal/KeySerializer;->(Ljava/lang/Class;Ljava/lang/Class;Lcom/google/crypto/tink/internal/KeySerializer$1;)V +HSPLcom/google/crypto/tink/internal/KeySerializer;->create(Lcom/google/crypto/tink/internal/KeySerializer$KeySerializationFunction;Ljava/lang/Class;Ljava/lang/Class;)Lcom/google/crypto/tink/internal/KeySerializer; +HSPLcom/google/crypto/tink/internal/KeySerializer;->getKeyClass()Ljava/lang/Class; +HSPLcom/google/crypto/tink/internal/KeySerializer;->getSerializationClass()Ljava/lang/Class; +Lcom/google/crypto/tink/internal/KeySerializer$1; +HSPLcom/google/crypto/tink/internal/KeySerializer$1;->(Ljava/lang/Class;Ljava/lang/Class;Lcom/google/crypto/tink/internal/KeySerializer$KeySerializationFunction;)V +Lcom/google/crypto/tink/internal/KeySerializer$KeySerializationFunction; +Lcom/google/crypto/tink/internal/KeyTypeManager; +HSPLcom/google/crypto/tink/internal/KeyTypeManager;->(Ljava/lang/Class;[Lcom/google/crypto/tink/internal/PrimitiveFactory;)V +HSPLcom/google/crypto/tink/internal/KeyTypeManager;->fipsStatus()Lcom/google/crypto/tink/config/internal/TinkFipsUtil$AlgorithmFipsCompatibility; +HSPLcom/google/crypto/tink/internal/KeyTypeManager;->firstSupportedPrimitiveClass()Ljava/lang/Class; +HSPLcom/google/crypto/tink/internal/KeyTypeManager;->getPrimitive(Lcom/google/crypto/tink/shaded/protobuf/MessageLite;Ljava/lang/Class;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/internal/KeyTypeManager;->supportedPrimitives()Ljava/util/Set; +Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory; +HSPLcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory;->(Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory;->keyFormats()Ljava/util/Map; +Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory$KeyFormat; +HSPLcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory$KeyFormat;->(Ljava/lang/Object;Lcom/google/crypto/tink/KeyTemplate$OutputPrefixType;)V +Lcom/google/crypto/tink/internal/LegacyProtoKey; +HSPLcom/google/crypto/tink/internal/LegacyProtoKey;->(Lcom/google/crypto/tink/internal/ProtoKeySerialization;Lcom/google/crypto/tink/SecretKeyAccess;)V +HSPLcom/google/crypto/tink/internal/LegacyProtoKey;->throwIfMissingAccess(Lcom/google/crypto/tink/internal/ProtoKeySerialization;Lcom/google/crypto/tink/SecretKeyAccess;)V +Lcom/google/crypto/tink/internal/LegacyProtoKey$1; +HSPLcom/google/crypto/tink/internal/LegacyProtoKey$1;->()V +Lcom/google/crypto/tink/internal/MonitoringUtil; +HSPLcom/google/crypto/tink/internal/MonitoringUtil;->()V +Lcom/google/crypto/tink/internal/MonitoringUtil$DoNothingLogger; +HSPLcom/google/crypto/tink/internal/MonitoringUtil$DoNothingLogger;->()V +HSPLcom/google/crypto/tink/internal/MonitoringUtil$DoNothingLogger;->(Lcom/google/crypto/tink/internal/MonitoringUtil$1;)V +HSPLcom/google/crypto/tink/internal/MonitoringUtil$DoNothingLogger;->log(IJ)V +Lcom/google/crypto/tink/internal/MutablePrimitiveRegistry; +HSPLcom/google/crypto/tink/internal/MutablePrimitiveRegistry;->()V +HSPLcom/google/crypto/tink/internal/MutablePrimitiveRegistry;->()V +HSPLcom/google/crypto/tink/internal/MutablePrimitiveRegistry;->getInputPrimitiveClass(Ljava/lang/Class;)Ljava/lang/Class; +HSPLcom/google/crypto/tink/internal/MutablePrimitiveRegistry;->getPrimitive(Lcom/google/crypto/tink/Key;Ljava/lang/Class;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/internal/MutablePrimitiveRegistry;->globalInstance()Lcom/google/crypto/tink/internal/MutablePrimitiveRegistry; +HSPLcom/google/crypto/tink/internal/MutablePrimitiveRegistry;->registerPrimitiveConstructor(Lcom/google/crypto/tink/internal/PrimitiveConstructor;)V +HSPLcom/google/crypto/tink/internal/MutablePrimitiveRegistry;->registerPrimitiveWrapper(Lcom/google/crypto/tink/PrimitiveWrapper;)V +HSPLcom/google/crypto/tink/internal/MutablePrimitiveRegistry;->wrap(Lcom/google/crypto/tink/PrimitiveSet;Ljava/lang/Class;)Ljava/lang/Object; +Lcom/google/crypto/tink/internal/MutableSerializationRegistry; +HSPLcom/google/crypto/tink/internal/MutableSerializationRegistry;->()V +HSPLcom/google/crypto/tink/internal/MutableSerializationRegistry;->()V +HSPLcom/google/crypto/tink/internal/MutableSerializationRegistry;->globalInstance()Lcom/google/crypto/tink/internal/MutableSerializationRegistry; +HSPLcom/google/crypto/tink/internal/MutableSerializationRegistry;->hasParserForKey(Lcom/google/crypto/tink/internal/Serialization;)Z +HSPLcom/google/crypto/tink/internal/MutableSerializationRegistry;->parseKey(Lcom/google/crypto/tink/internal/Serialization;Lcom/google/crypto/tink/SecretKeyAccess;)Lcom/google/crypto/tink/Key; +HSPLcom/google/crypto/tink/internal/MutableSerializationRegistry;->parseKeyWithLegacyFallback(Lcom/google/crypto/tink/internal/ProtoKeySerialization;Lcom/google/crypto/tink/SecretKeyAccess;)Lcom/google/crypto/tink/Key; +HSPLcom/google/crypto/tink/internal/MutableSerializationRegistry;->registerKeyParser(Lcom/google/crypto/tink/internal/KeyParser;)V +HSPLcom/google/crypto/tink/internal/MutableSerializationRegistry;->registerKeySerializer(Lcom/google/crypto/tink/internal/KeySerializer;)V +HSPLcom/google/crypto/tink/internal/MutableSerializationRegistry;->registerParametersParser(Lcom/google/crypto/tink/internal/ParametersParser;)V +HSPLcom/google/crypto/tink/internal/MutableSerializationRegistry;->registerParametersSerializer(Lcom/google/crypto/tink/internal/ParametersSerializer;)V +Lcom/google/crypto/tink/internal/ParametersParser; +HSPLcom/google/crypto/tink/internal/ParametersParser;->(Lcom/google/crypto/tink/util/Bytes;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/internal/ParametersParser;->(Lcom/google/crypto/tink/util/Bytes;Ljava/lang/Class;Lcom/google/crypto/tink/internal/ParametersParser$1;)V +HSPLcom/google/crypto/tink/internal/ParametersParser;->create(Lcom/google/crypto/tink/internal/ParametersParser$ParametersParsingFunction;Lcom/google/crypto/tink/util/Bytes;Ljava/lang/Class;)Lcom/google/crypto/tink/internal/ParametersParser; +HSPLcom/google/crypto/tink/internal/ParametersParser;->getObjectIdentifier()Lcom/google/crypto/tink/util/Bytes; +HSPLcom/google/crypto/tink/internal/ParametersParser;->getSerializationClass()Ljava/lang/Class; +Lcom/google/crypto/tink/internal/ParametersParser$1; +HSPLcom/google/crypto/tink/internal/ParametersParser$1;->(Lcom/google/crypto/tink/util/Bytes;Ljava/lang/Class;Lcom/google/crypto/tink/internal/ParametersParser$ParametersParsingFunction;)V +Lcom/google/crypto/tink/internal/ParametersParser$ParametersParsingFunction; +Lcom/google/crypto/tink/internal/ParametersSerializer; +HSPLcom/google/crypto/tink/internal/ParametersSerializer;->(Ljava/lang/Class;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/internal/ParametersSerializer;->(Ljava/lang/Class;Ljava/lang/Class;Lcom/google/crypto/tink/internal/ParametersSerializer$1;)V +HSPLcom/google/crypto/tink/internal/ParametersSerializer;->create(Lcom/google/crypto/tink/internal/ParametersSerializer$ParametersSerializationFunction;Ljava/lang/Class;Ljava/lang/Class;)Lcom/google/crypto/tink/internal/ParametersSerializer; +HSPLcom/google/crypto/tink/internal/ParametersSerializer;->getParametersClass()Ljava/lang/Class; +HSPLcom/google/crypto/tink/internal/ParametersSerializer;->getSerializationClass()Ljava/lang/Class; +Lcom/google/crypto/tink/internal/ParametersSerializer$1; +HSPLcom/google/crypto/tink/internal/ParametersSerializer$1;->(Ljava/lang/Class;Ljava/lang/Class;Lcom/google/crypto/tink/internal/ParametersSerializer$ParametersSerializationFunction;)V +Lcom/google/crypto/tink/internal/ParametersSerializer$ParametersSerializationFunction; +Lcom/google/crypto/tink/internal/PrimitiveConstructor; +HSPLcom/google/crypto/tink/internal/PrimitiveConstructor;->(Ljava/lang/Class;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/internal/PrimitiveConstructor;->(Ljava/lang/Class;Ljava/lang/Class;Lcom/google/crypto/tink/internal/PrimitiveConstructor$1;)V +HSPLcom/google/crypto/tink/internal/PrimitiveConstructor;->create(Lcom/google/crypto/tink/internal/PrimitiveConstructor$PrimitiveConstructionFunction;Ljava/lang/Class;Ljava/lang/Class;)Lcom/google/crypto/tink/internal/PrimitiveConstructor; +HSPLcom/google/crypto/tink/internal/PrimitiveConstructor;->getKeyClass()Ljava/lang/Class; +HSPLcom/google/crypto/tink/internal/PrimitiveConstructor;->getPrimitiveClass()Ljava/lang/Class; +Lcom/google/crypto/tink/internal/PrimitiveConstructor$1; +HSPLcom/google/crypto/tink/internal/PrimitiveConstructor$1;->(Ljava/lang/Class;Ljava/lang/Class;Lcom/google/crypto/tink/internal/PrimitiveConstructor$PrimitiveConstructionFunction;)V +Lcom/google/crypto/tink/internal/PrimitiveConstructor$PrimitiveConstructionFunction; +Lcom/google/crypto/tink/internal/PrimitiveFactory; +HSPLcom/google/crypto/tink/internal/PrimitiveFactory;->(Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/internal/PrimitiveFactory;->getPrimitiveClass()Ljava/lang/Class; +Lcom/google/crypto/tink/internal/PrimitiveRegistry; +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry;->(Lcom/google/crypto/tink/internal/PrimitiveRegistry$Builder;)V +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry;->(Lcom/google/crypto/tink/internal/PrimitiveRegistry$Builder;Lcom/google/crypto/tink/internal/PrimitiveRegistry$1;)V +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry;->access$000(Lcom/google/crypto/tink/internal/PrimitiveRegistry;)Ljava/util/Map; +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry;->access$100(Lcom/google/crypto/tink/internal/PrimitiveRegistry;)Ljava/util/Map; +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry;->getInputPrimitiveClass(Ljava/lang/Class;)Ljava/lang/Class; +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry;->getPrimitive(Lcom/google/crypto/tink/Key;Ljava/lang/Class;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry;->wrap(Lcom/google/crypto/tink/PrimitiveSet;Ljava/lang/Class;)Ljava/lang/Object; +Lcom/google/crypto/tink/internal/PrimitiveRegistry$Builder; +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry$Builder;->()V +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry$Builder;->(Lcom/google/crypto/tink/internal/PrimitiveRegistry;)V +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry$Builder;->access$400(Lcom/google/crypto/tink/internal/PrimitiveRegistry$Builder;)Ljava/util/Map; +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry$Builder;->access$500(Lcom/google/crypto/tink/internal/PrimitiveRegistry$Builder;)Ljava/util/Map; +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry$Builder;->build()Lcom/google/crypto/tink/internal/PrimitiveRegistry; +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry$Builder;->registerPrimitiveConstructor(Lcom/google/crypto/tink/internal/PrimitiveConstructor;)Lcom/google/crypto/tink/internal/PrimitiveRegistry$Builder; +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry$Builder;->registerPrimitiveWrapper(Lcom/google/crypto/tink/PrimitiveWrapper;)Lcom/google/crypto/tink/internal/PrimitiveRegistry$Builder; +Lcom/google/crypto/tink/internal/PrimitiveRegistry$PrimitiveConstructorIndex; +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry$PrimitiveConstructorIndex;->(Ljava/lang/Class;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry$PrimitiveConstructorIndex;->(Ljava/lang/Class;Ljava/lang/Class;Lcom/google/crypto/tink/internal/PrimitiveRegistry$1;)V +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry$PrimitiveConstructorIndex;->equals(Ljava/lang/Object;)Z +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry$PrimitiveConstructorIndex;->hashCode()I +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry$PrimitiveConstructorIndex;->toString()Ljava/lang/String; +Lcom/google/crypto/tink/internal/ProtoKeySerialization; +HSPLcom/google/crypto/tink/internal/ProtoKeySerialization;->(Ljava/lang/String;Lcom/google/crypto/tink/shaded/protobuf/ByteString;Lcom/google/crypto/tink/proto/KeyData$KeyMaterialType;Lcom/google/crypto/tink/proto/OutputPrefixType;Ljava/lang/Integer;)V +HSPLcom/google/crypto/tink/internal/ProtoKeySerialization;->create(Ljava/lang/String;Lcom/google/crypto/tink/shaded/protobuf/ByteString;Lcom/google/crypto/tink/proto/KeyData$KeyMaterialType;Lcom/google/crypto/tink/proto/OutputPrefixType;Ljava/lang/Integer;)Lcom/google/crypto/tink/internal/ProtoKeySerialization; +HSPLcom/google/crypto/tink/internal/ProtoKeySerialization;->getIdRequirementOrNull()Ljava/lang/Integer; +HSPLcom/google/crypto/tink/internal/ProtoKeySerialization;->getKeyMaterialType()Lcom/google/crypto/tink/proto/KeyData$KeyMaterialType; +HSPLcom/google/crypto/tink/internal/ProtoKeySerialization;->getObjectIdentifier()Lcom/google/crypto/tink/util/Bytes; +HSPLcom/google/crypto/tink/internal/ProtoKeySerialization;->getOutputPrefixType()Lcom/google/crypto/tink/proto/OutputPrefixType; +HSPLcom/google/crypto/tink/internal/ProtoKeySerialization;->getTypeUrl()Ljava/lang/String; +HSPLcom/google/crypto/tink/internal/ProtoKeySerialization;->getValue()Lcom/google/crypto/tink/shaded/protobuf/ByteString; +Lcom/google/crypto/tink/internal/ProtoParametersSerialization; +Lcom/google/crypto/tink/internal/Serialization; +Lcom/google/crypto/tink/internal/SerializationRegistry; +HSPLcom/google/crypto/tink/internal/SerializationRegistry;->(Lcom/google/crypto/tink/internal/SerializationRegistry$Builder;)V +HSPLcom/google/crypto/tink/internal/SerializationRegistry;->(Lcom/google/crypto/tink/internal/SerializationRegistry$Builder;Lcom/google/crypto/tink/internal/SerializationRegistry$1;)V +HSPLcom/google/crypto/tink/internal/SerializationRegistry;->access$000(Lcom/google/crypto/tink/internal/SerializationRegistry;)Ljava/util/Map; +HSPLcom/google/crypto/tink/internal/SerializationRegistry;->access$100(Lcom/google/crypto/tink/internal/SerializationRegistry;)Ljava/util/Map; +HSPLcom/google/crypto/tink/internal/SerializationRegistry;->access$200(Lcom/google/crypto/tink/internal/SerializationRegistry;)Ljava/util/Map; +HSPLcom/google/crypto/tink/internal/SerializationRegistry;->access$300(Lcom/google/crypto/tink/internal/SerializationRegistry;)Ljava/util/Map; +HSPLcom/google/crypto/tink/internal/SerializationRegistry;->hasParserForKey(Lcom/google/crypto/tink/internal/Serialization;)Z +HSPLcom/google/crypto/tink/internal/SerializationRegistry;->parseKey(Lcom/google/crypto/tink/internal/Serialization;Lcom/google/crypto/tink/SecretKeyAccess;)Lcom/google/crypto/tink/Key; +Lcom/google/crypto/tink/internal/SerializationRegistry$Builder; +HSPLcom/google/crypto/tink/internal/SerializationRegistry$Builder;->()V +HSPLcom/google/crypto/tink/internal/SerializationRegistry$Builder;->(Lcom/google/crypto/tink/internal/SerializationRegistry;)V +HSPLcom/google/crypto/tink/internal/SerializationRegistry$Builder;->access$1000(Lcom/google/crypto/tink/internal/SerializationRegistry$Builder;)Ljava/util/Map; +HSPLcom/google/crypto/tink/internal/SerializationRegistry$Builder;->access$700(Lcom/google/crypto/tink/internal/SerializationRegistry$Builder;)Ljava/util/Map; +HSPLcom/google/crypto/tink/internal/SerializationRegistry$Builder;->access$800(Lcom/google/crypto/tink/internal/SerializationRegistry$Builder;)Ljava/util/Map; +HSPLcom/google/crypto/tink/internal/SerializationRegistry$Builder;->access$900(Lcom/google/crypto/tink/internal/SerializationRegistry$Builder;)Ljava/util/Map; +HSPLcom/google/crypto/tink/internal/SerializationRegistry$Builder;->build()Lcom/google/crypto/tink/internal/SerializationRegistry; +HSPLcom/google/crypto/tink/internal/SerializationRegistry$Builder;->registerKeyParser(Lcom/google/crypto/tink/internal/KeyParser;)Lcom/google/crypto/tink/internal/SerializationRegistry$Builder; +HSPLcom/google/crypto/tink/internal/SerializationRegistry$Builder;->registerKeySerializer(Lcom/google/crypto/tink/internal/KeySerializer;)Lcom/google/crypto/tink/internal/SerializationRegistry$Builder; +HSPLcom/google/crypto/tink/internal/SerializationRegistry$Builder;->registerParametersParser(Lcom/google/crypto/tink/internal/ParametersParser;)Lcom/google/crypto/tink/internal/SerializationRegistry$Builder; +HSPLcom/google/crypto/tink/internal/SerializationRegistry$Builder;->registerParametersSerializer(Lcom/google/crypto/tink/internal/ParametersSerializer;)Lcom/google/crypto/tink/internal/SerializationRegistry$Builder; +Lcom/google/crypto/tink/internal/SerializationRegistry$ParserIndex; +HSPLcom/google/crypto/tink/internal/SerializationRegistry$ParserIndex;->(Ljava/lang/Class;Lcom/google/crypto/tink/util/Bytes;)V +HSPLcom/google/crypto/tink/internal/SerializationRegistry$ParserIndex;->(Ljava/lang/Class;Lcom/google/crypto/tink/util/Bytes;Lcom/google/crypto/tink/internal/SerializationRegistry$1;)V +HSPLcom/google/crypto/tink/internal/SerializationRegistry$ParserIndex;->equals(Ljava/lang/Object;)Z +HSPLcom/google/crypto/tink/internal/SerializationRegistry$ParserIndex;->hashCode()I +Lcom/google/crypto/tink/internal/SerializationRegistry$SerializerIndex; +HSPLcom/google/crypto/tink/internal/SerializationRegistry$SerializerIndex;->(Ljava/lang/Class;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/internal/SerializationRegistry$SerializerIndex;->(Ljava/lang/Class;Ljava/lang/Class;Lcom/google/crypto/tink/internal/SerializationRegistry$1;)V +HSPLcom/google/crypto/tink/internal/SerializationRegistry$SerializerIndex;->equals(Ljava/lang/Object;)Z +HSPLcom/google/crypto/tink/internal/SerializationRegistry$SerializerIndex;->hashCode()I +Lcom/google/crypto/tink/internal/Util; +HSPLcom/google/crypto/tink/internal/Util;->()V +HSPLcom/google/crypto/tink/internal/Util;->getAndroidApiLevel()Ljava/lang/Integer; +HSPLcom/google/crypto/tink/internal/Util;->isAndroid()Z +HSPLcom/google/crypto/tink/internal/Util;->randKeyId()I +HSPLcom/google/crypto/tink/internal/Util;->toByteFromPrintableAscii(C)B +HSPLcom/google/crypto/tink/internal/Util;->toBytesFromPrintableAscii(Ljava/lang/String;)Lcom/google/crypto/tink/util/Bytes; +Lcom/google/crypto/tink/mac/AesCmacKey; +Lcom/google/crypto/tink/mac/AesCmacKeyManager; +HSPLcom/google/crypto/tink/mac/AesCmacKeyManager;->()V +HSPLcom/google/crypto/tink/mac/AesCmacKeyManager;->()V +HSPLcom/google/crypto/tink/mac/AesCmacKeyManager;->getKeyType()Ljava/lang/String; +HSPLcom/google/crypto/tink/mac/AesCmacKeyManager;->keyFactory()Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory; +HSPLcom/google/crypto/tink/mac/AesCmacKeyManager;->register(Z)V +Lcom/google/crypto/tink/mac/AesCmacKeyManager$$ExternalSyntheticLambda0; +HSPLcom/google/crypto/tink/mac/AesCmacKeyManager$$ExternalSyntheticLambda0;->()V +Lcom/google/crypto/tink/mac/AesCmacKeyManager$1; +HSPLcom/google/crypto/tink/mac/AesCmacKeyManager$1;->(Ljava/lang/Class;)V +Lcom/google/crypto/tink/mac/AesCmacKeyManager$2; +HSPLcom/google/crypto/tink/mac/AesCmacKeyManager$2;->(Lcom/google/crypto/tink/mac/AesCmacKeyManager;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/mac/AesCmacKeyManager$2;->keyFormats()Ljava/util/Map; +Lcom/google/crypto/tink/mac/AesCmacParameters; +Lcom/google/crypto/tink/mac/AesCmacProtoSerialization; +HSPLcom/google/crypto/tink/mac/AesCmacProtoSerialization;->()V +HSPLcom/google/crypto/tink/mac/AesCmacProtoSerialization;->register()V +HSPLcom/google/crypto/tink/mac/AesCmacProtoSerialization;->register(Lcom/google/crypto/tink/internal/MutableSerializationRegistry;)V +Lcom/google/crypto/tink/mac/AesCmacProtoSerialization$$ExternalSyntheticLambda0; +HSPLcom/google/crypto/tink/mac/AesCmacProtoSerialization$$ExternalSyntheticLambda0;->()V +Lcom/google/crypto/tink/mac/AesCmacProtoSerialization$$ExternalSyntheticLambda1; +HSPLcom/google/crypto/tink/mac/AesCmacProtoSerialization$$ExternalSyntheticLambda1;->()V +Lcom/google/crypto/tink/mac/AesCmacProtoSerialization$$ExternalSyntheticLambda2; +HSPLcom/google/crypto/tink/mac/AesCmacProtoSerialization$$ExternalSyntheticLambda2;->()V +Lcom/google/crypto/tink/mac/AesCmacProtoSerialization$$ExternalSyntheticLambda3; +HSPLcom/google/crypto/tink/mac/AesCmacProtoSerialization$$ExternalSyntheticLambda3;->()V +Lcom/google/crypto/tink/mac/ChunkedMac; +Lcom/google/crypto/tink/mac/ChunkedMacWrapper; +HSPLcom/google/crypto/tink/mac/ChunkedMacWrapper;->()V +HSPLcom/google/crypto/tink/mac/ChunkedMacWrapper;->()V +HSPLcom/google/crypto/tink/mac/ChunkedMacWrapper;->getPrimitiveClass()Ljava/lang/Class; +HSPLcom/google/crypto/tink/mac/ChunkedMacWrapper;->register()V +Lcom/google/crypto/tink/mac/HmacKey; +Lcom/google/crypto/tink/mac/HmacKeyManager; +HSPLcom/google/crypto/tink/mac/HmacKeyManager;->()V +HSPLcom/google/crypto/tink/mac/HmacKeyManager;->()V +HSPLcom/google/crypto/tink/mac/HmacKeyManager;->access$100(IILcom/google/crypto/tink/proto/HashType;Lcom/google/crypto/tink/KeyTemplate$OutputPrefixType;)Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory$KeyFormat; +HSPLcom/google/crypto/tink/mac/HmacKeyManager;->createKeyFormat(IILcom/google/crypto/tink/proto/HashType;Lcom/google/crypto/tink/KeyTemplate$OutputPrefixType;)Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory$KeyFormat; +HSPLcom/google/crypto/tink/mac/HmacKeyManager;->fipsStatus()Lcom/google/crypto/tink/config/internal/TinkFipsUtil$AlgorithmFipsCompatibility; +HSPLcom/google/crypto/tink/mac/HmacKeyManager;->getKeyType()Ljava/lang/String; +HSPLcom/google/crypto/tink/mac/HmacKeyManager;->keyFactory()Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory; +HSPLcom/google/crypto/tink/mac/HmacKeyManager;->register(Z)V +Lcom/google/crypto/tink/mac/HmacKeyManager$$ExternalSyntheticLambda0; +HSPLcom/google/crypto/tink/mac/HmacKeyManager$$ExternalSyntheticLambda0;->()V +Lcom/google/crypto/tink/mac/HmacKeyManager$1; +HSPLcom/google/crypto/tink/mac/HmacKeyManager$1;->(Ljava/lang/Class;)V +Lcom/google/crypto/tink/mac/HmacKeyManager$2; +HSPLcom/google/crypto/tink/mac/HmacKeyManager$2;->(Lcom/google/crypto/tink/mac/HmacKeyManager;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/mac/HmacKeyManager$2;->keyFormats()Ljava/util/Map; +Lcom/google/crypto/tink/mac/HmacParameters; +Lcom/google/crypto/tink/mac/HmacProtoSerialization; +HSPLcom/google/crypto/tink/mac/HmacProtoSerialization;->()V +HSPLcom/google/crypto/tink/mac/HmacProtoSerialization;->register()V +HSPLcom/google/crypto/tink/mac/HmacProtoSerialization;->register(Lcom/google/crypto/tink/internal/MutableSerializationRegistry;)V +Lcom/google/crypto/tink/mac/HmacProtoSerialization$$ExternalSyntheticLambda0; +HSPLcom/google/crypto/tink/mac/HmacProtoSerialization$$ExternalSyntheticLambda0;->()V +Lcom/google/crypto/tink/mac/HmacProtoSerialization$$ExternalSyntheticLambda1; +HSPLcom/google/crypto/tink/mac/HmacProtoSerialization$$ExternalSyntheticLambda1;->()V +Lcom/google/crypto/tink/mac/HmacProtoSerialization$$ExternalSyntheticLambda2; +HSPLcom/google/crypto/tink/mac/HmacProtoSerialization$$ExternalSyntheticLambda2;->()V +Lcom/google/crypto/tink/mac/HmacProtoSerialization$$ExternalSyntheticLambda3; +HSPLcom/google/crypto/tink/mac/HmacProtoSerialization$$ExternalSyntheticLambda3;->()V +Lcom/google/crypto/tink/mac/MacConfig; +HSPLcom/google/crypto/tink/mac/MacConfig;->()V +HSPLcom/google/crypto/tink/mac/MacConfig;->init()V +HSPLcom/google/crypto/tink/mac/MacConfig;->register()V +Lcom/google/crypto/tink/mac/MacKey; +Lcom/google/crypto/tink/mac/MacParameters; +Lcom/google/crypto/tink/mac/MacWrapper; +HSPLcom/google/crypto/tink/mac/MacWrapper;->()V +HSPLcom/google/crypto/tink/mac/MacWrapper;->()V +HSPLcom/google/crypto/tink/mac/MacWrapper;->getPrimitiveClass()Ljava/lang/Class; +HSPLcom/google/crypto/tink/mac/MacWrapper;->register()V +Lcom/google/crypto/tink/mac/internal/AesUtil; +HSPLcom/google/crypto/tink/mac/internal/AesUtil;->cmacPad([B)[B +HSPLcom/google/crypto/tink/mac/internal/AesUtil;->dbl([B)[B +Lcom/google/crypto/tink/monitoring/MonitoringAnnotations; +HSPLcom/google/crypto/tink/monitoring/MonitoringAnnotations;->()V +HSPLcom/google/crypto/tink/monitoring/MonitoringAnnotations;->(Ljava/util/Map;)V +HSPLcom/google/crypto/tink/monitoring/MonitoringAnnotations;->(Ljava/util/Map;Lcom/google/crypto/tink/monitoring/MonitoringAnnotations$1;)V +HSPLcom/google/crypto/tink/monitoring/MonitoringAnnotations;->newBuilder()Lcom/google/crypto/tink/monitoring/MonitoringAnnotations$Builder; +HSPLcom/google/crypto/tink/monitoring/MonitoringAnnotations;->toMap()Ljava/util/Map; +Lcom/google/crypto/tink/monitoring/MonitoringAnnotations$Builder; +HSPLcom/google/crypto/tink/monitoring/MonitoringAnnotations$Builder;->()V +HSPLcom/google/crypto/tink/monitoring/MonitoringAnnotations$Builder;->build()Lcom/google/crypto/tink/monitoring/MonitoringAnnotations; +Lcom/google/crypto/tink/monitoring/MonitoringClient$Logger; +Lcom/google/crypto/tink/prf/Prf; +Lcom/google/crypto/tink/proto/AesCmacKey; +Lcom/google/crypto/tink/proto/AesCmacKeyFormat; +HSPLcom/google/crypto/tink/proto/AesCmacKeyFormat;->()V +HSPLcom/google/crypto/tink/proto/AesCmacKeyFormat;->()V +HSPLcom/google/crypto/tink/proto/AesCmacKeyFormat;->access$000()Lcom/google/crypto/tink/proto/AesCmacKeyFormat; +HSPLcom/google/crypto/tink/proto/AesCmacKeyFormat;->access$100(Lcom/google/crypto/tink/proto/AesCmacKeyFormat;I)V +HSPLcom/google/crypto/tink/proto/AesCmacKeyFormat;->access$300(Lcom/google/crypto/tink/proto/AesCmacKeyFormat;Lcom/google/crypto/tink/proto/AesCmacParams;)V +HSPLcom/google/crypto/tink/proto/AesCmacKeyFormat;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/AesCmacKeyFormat;->newBuilder()Lcom/google/crypto/tink/proto/AesCmacKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesCmacKeyFormat;->setKeySize(I)V +HSPLcom/google/crypto/tink/proto/AesCmacKeyFormat;->setParams(Lcom/google/crypto/tink/proto/AesCmacParams;)V +Lcom/google/crypto/tink/proto/AesCmacKeyFormat$1; +HSPLcom/google/crypto/tink/proto/AesCmacKeyFormat$1;->()V +Lcom/google/crypto/tink/proto/AesCmacKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesCmacKeyFormat$Builder;->()V +HSPLcom/google/crypto/tink/proto/AesCmacKeyFormat$Builder;->(Lcom/google/crypto/tink/proto/AesCmacKeyFormat$1;)V +HSPLcom/google/crypto/tink/proto/AesCmacKeyFormat$Builder;->setKeySize(I)Lcom/google/crypto/tink/proto/AesCmacKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesCmacKeyFormat$Builder;->setParams(Lcom/google/crypto/tink/proto/AesCmacParams;)Lcom/google/crypto/tink/proto/AesCmacKeyFormat$Builder; +Lcom/google/crypto/tink/proto/AesCmacKeyFormatOrBuilder; +Lcom/google/crypto/tink/proto/AesCmacKeyOrBuilder; +Lcom/google/crypto/tink/proto/AesCmacParams; +HSPLcom/google/crypto/tink/proto/AesCmacParams;->()V +HSPLcom/google/crypto/tink/proto/AesCmacParams;->()V +HSPLcom/google/crypto/tink/proto/AesCmacParams;->access$000()Lcom/google/crypto/tink/proto/AesCmacParams; +HSPLcom/google/crypto/tink/proto/AesCmacParams;->access$100(Lcom/google/crypto/tink/proto/AesCmacParams;I)V +HSPLcom/google/crypto/tink/proto/AesCmacParams;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/AesCmacParams;->newBuilder()Lcom/google/crypto/tink/proto/AesCmacParams$Builder; +HSPLcom/google/crypto/tink/proto/AesCmacParams;->setTagSize(I)V +Lcom/google/crypto/tink/proto/AesCmacParams$1; +HSPLcom/google/crypto/tink/proto/AesCmacParams$1;->()V +Lcom/google/crypto/tink/proto/AesCmacParams$Builder; +HSPLcom/google/crypto/tink/proto/AesCmacParams$Builder;->()V +HSPLcom/google/crypto/tink/proto/AesCmacParams$Builder;->(Lcom/google/crypto/tink/proto/AesCmacParams$1;)V +HSPLcom/google/crypto/tink/proto/AesCmacParams$Builder;->setTagSize(I)Lcom/google/crypto/tink/proto/AesCmacParams$Builder; +Lcom/google/crypto/tink/proto/AesCmacParamsOrBuilder; +Lcom/google/crypto/tink/proto/AesCtrHmacAeadKey; +Lcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat; +HSPLcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat;->()V +HSPLcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat;->()V +HSPLcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat;->access$000()Lcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat; +HSPLcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat;->access$100(Lcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat;Lcom/google/crypto/tink/proto/AesCtrKeyFormat;)V +HSPLcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat;->access$400(Lcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat;Lcom/google/crypto/tink/proto/HmacKeyFormat;)V +HSPLcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat;->newBuilder()Lcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat;->setAesCtrKeyFormat(Lcom/google/crypto/tink/proto/AesCtrKeyFormat;)V +HSPLcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat;->setHmacKeyFormat(Lcom/google/crypto/tink/proto/HmacKeyFormat;)V +Lcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat$1; +HSPLcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat$1;->()V +Lcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat$Builder;->()V +HSPLcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat$Builder;->(Lcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat$1;)V +HSPLcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat$Builder;->setAesCtrKeyFormat(Lcom/google/crypto/tink/proto/AesCtrKeyFormat;)Lcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat$Builder;->setHmacKeyFormat(Lcom/google/crypto/tink/proto/HmacKeyFormat;)Lcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat$Builder; +Lcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormatOrBuilder; +Lcom/google/crypto/tink/proto/AesCtrHmacAeadKeyOrBuilder; +Lcom/google/crypto/tink/proto/AesCtrKeyFormat; +HSPLcom/google/crypto/tink/proto/AesCtrKeyFormat;->()V +HSPLcom/google/crypto/tink/proto/AesCtrKeyFormat;->()V +HSPLcom/google/crypto/tink/proto/AesCtrKeyFormat;->access$000()Lcom/google/crypto/tink/proto/AesCtrKeyFormat; +HSPLcom/google/crypto/tink/proto/AesCtrKeyFormat;->access$100(Lcom/google/crypto/tink/proto/AesCtrKeyFormat;Lcom/google/crypto/tink/proto/AesCtrParams;)V +HSPLcom/google/crypto/tink/proto/AesCtrKeyFormat;->access$400(Lcom/google/crypto/tink/proto/AesCtrKeyFormat;I)V +HSPLcom/google/crypto/tink/proto/AesCtrKeyFormat;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/AesCtrKeyFormat;->newBuilder()Lcom/google/crypto/tink/proto/AesCtrKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesCtrKeyFormat;->setKeySize(I)V +HSPLcom/google/crypto/tink/proto/AesCtrKeyFormat;->setParams(Lcom/google/crypto/tink/proto/AesCtrParams;)V +Lcom/google/crypto/tink/proto/AesCtrKeyFormat$1; +HSPLcom/google/crypto/tink/proto/AesCtrKeyFormat$1;->()V +Lcom/google/crypto/tink/proto/AesCtrKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesCtrKeyFormat$Builder;->()V +HSPLcom/google/crypto/tink/proto/AesCtrKeyFormat$Builder;->(Lcom/google/crypto/tink/proto/AesCtrKeyFormat$1;)V +HSPLcom/google/crypto/tink/proto/AesCtrKeyFormat$Builder;->setKeySize(I)Lcom/google/crypto/tink/proto/AesCtrKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesCtrKeyFormat$Builder;->setParams(Lcom/google/crypto/tink/proto/AesCtrParams;)Lcom/google/crypto/tink/proto/AesCtrKeyFormat$Builder; +Lcom/google/crypto/tink/proto/AesCtrKeyFormatOrBuilder; +Lcom/google/crypto/tink/proto/AesCtrParams; +HSPLcom/google/crypto/tink/proto/AesCtrParams;->()V +HSPLcom/google/crypto/tink/proto/AesCtrParams;->()V +HSPLcom/google/crypto/tink/proto/AesCtrParams;->access$000()Lcom/google/crypto/tink/proto/AesCtrParams; +HSPLcom/google/crypto/tink/proto/AesCtrParams;->access$100(Lcom/google/crypto/tink/proto/AesCtrParams;I)V +HSPLcom/google/crypto/tink/proto/AesCtrParams;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/AesCtrParams;->newBuilder()Lcom/google/crypto/tink/proto/AesCtrParams$Builder; +HSPLcom/google/crypto/tink/proto/AesCtrParams;->setIvSize(I)V +Lcom/google/crypto/tink/proto/AesCtrParams$1; +HSPLcom/google/crypto/tink/proto/AesCtrParams$1;->()V +Lcom/google/crypto/tink/proto/AesCtrParams$Builder; +HSPLcom/google/crypto/tink/proto/AesCtrParams$Builder;->()V +HSPLcom/google/crypto/tink/proto/AesCtrParams$Builder;->(Lcom/google/crypto/tink/proto/AesCtrParams$1;)V +HSPLcom/google/crypto/tink/proto/AesCtrParams$Builder;->setIvSize(I)Lcom/google/crypto/tink/proto/AesCtrParams$Builder; +Lcom/google/crypto/tink/proto/AesCtrParamsOrBuilder; +Lcom/google/crypto/tink/proto/AesEaxKey; +Lcom/google/crypto/tink/proto/AesEaxKeyFormat; +HSPLcom/google/crypto/tink/proto/AesEaxKeyFormat;->()V +HSPLcom/google/crypto/tink/proto/AesEaxKeyFormat;->()V +HSPLcom/google/crypto/tink/proto/AesEaxKeyFormat;->access$000()Lcom/google/crypto/tink/proto/AesEaxKeyFormat; +HSPLcom/google/crypto/tink/proto/AesEaxKeyFormat;->access$100(Lcom/google/crypto/tink/proto/AesEaxKeyFormat;Lcom/google/crypto/tink/proto/AesEaxParams;)V +HSPLcom/google/crypto/tink/proto/AesEaxKeyFormat;->access$400(Lcom/google/crypto/tink/proto/AesEaxKeyFormat;I)V +HSPLcom/google/crypto/tink/proto/AesEaxKeyFormat;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/AesEaxKeyFormat;->newBuilder()Lcom/google/crypto/tink/proto/AesEaxKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesEaxKeyFormat;->setKeySize(I)V +HSPLcom/google/crypto/tink/proto/AesEaxKeyFormat;->setParams(Lcom/google/crypto/tink/proto/AesEaxParams;)V +Lcom/google/crypto/tink/proto/AesEaxKeyFormat$1; +HSPLcom/google/crypto/tink/proto/AesEaxKeyFormat$1;->()V +Lcom/google/crypto/tink/proto/AesEaxKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesEaxKeyFormat$Builder;->()V +HSPLcom/google/crypto/tink/proto/AesEaxKeyFormat$Builder;->(Lcom/google/crypto/tink/proto/AesEaxKeyFormat$1;)V +HSPLcom/google/crypto/tink/proto/AesEaxKeyFormat$Builder;->setKeySize(I)Lcom/google/crypto/tink/proto/AesEaxKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesEaxKeyFormat$Builder;->setParams(Lcom/google/crypto/tink/proto/AesEaxParams;)Lcom/google/crypto/tink/proto/AesEaxKeyFormat$Builder; +Lcom/google/crypto/tink/proto/AesEaxKeyFormatOrBuilder; +Lcom/google/crypto/tink/proto/AesEaxKeyOrBuilder; +Lcom/google/crypto/tink/proto/AesEaxParams; +HSPLcom/google/crypto/tink/proto/AesEaxParams;->()V +HSPLcom/google/crypto/tink/proto/AesEaxParams;->()V +HSPLcom/google/crypto/tink/proto/AesEaxParams;->access$000()Lcom/google/crypto/tink/proto/AesEaxParams; +HSPLcom/google/crypto/tink/proto/AesEaxParams;->access$100(Lcom/google/crypto/tink/proto/AesEaxParams;I)V +HSPLcom/google/crypto/tink/proto/AesEaxParams;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/AesEaxParams;->newBuilder()Lcom/google/crypto/tink/proto/AesEaxParams$Builder; +HSPLcom/google/crypto/tink/proto/AesEaxParams;->setIvSize(I)V +Lcom/google/crypto/tink/proto/AesEaxParams$1; +HSPLcom/google/crypto/tink/proto/AesEaxParams$1;->()V +Lcom/google/crypto/tink/proto/AesEaxParams$Builder; +HSPLcom/google/crypto/tink/proto/AesEaxParams$Builder;->()V +HSPLcom/google/crypto/tink/proto/AesEaxParams$Builder;->(Lcom/google/crypto/tink/proto/AesEaxParams$1;)V +HSPLcom/google/crypto/tink/proto/AesEaxParams$Builder;->setIvSize(I)Lcom/google/crypto/tink/proto/AesEaxParams$Builder; +Lcom/google/crypto/tink/proto/AesEaxParamsOrBuilder; +Lcom/google/crypto/tink/proto/AesGcmKey; +HSPLcom/google/crypto/tink/proto/AesGcmKey;->()V +HSPLcom/google/crypto/tink/proto/AesGcmKey;->()V +HSPLcom/google/crypto/tink/proto/AesGcmKey;->access$000()Lcom/google/crypto/tink/proto/AesGcmKey; +HSPLcom/google/crypto/tink/proto/AesGcmKey;->access$100(Lcom/google/crypto/tink/proto/AesGcmKey;I)V +HSPLcom/google/crypto/tink/proto/AesGcmKey;->access$300(Lcom/google/crypto/tink/proto/AesGcmKey;Lcom/google/crypto/tink/shaded/protobuf/ByteString;)V +HSPLcom/google/crypto/tink/proto/AesGcmKey;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/AesGcmKey;->getKeyValue()Lcom/google/crypto/tink/shaded/protobuf/ByteString; +HSPLcom/google/crypto/tink/proto/AesGcmKey;->getVersion()I +HSPLcom/google/crypto/tink/proto/AesGcmKey;->newBuilder()Lcom/google/crypto/tink/proto/AesGcmKey$Builder; +HSPLcom/google/crypto/tink/proto/AesGcmKey;->parseFrom(Lcom/google/crypto/tink/shaded/protobuf/ByteString;Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)Lcom/google/crypto/tink/proto/AesGcmKey; +HSPLcom/google/crypto/tink/proto/AesGcmKey;->setKeyValue(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)V +HSPLcom/google/crypto/tink/proto/AesGcmKey;->setVersion(I)V +Lcom/google/crypto/tink/proto/AesGcmKey$1; +HSPLcom/google/crypto/tink/proto/AesGcmKey$1;->()V +Lcom/google/crypto/tink/proto/AesGcmKey$Builder; +HSPLcom/google/crypto/tink/proto/AesGcmKey$Builder;->()V +HSPLcom/google/crypto/tink/proto/AesGcmKey$Builder;->(Lcom/google/crypto/tink/proto/AesGcmKey$1;)V +HSPLcom/google/crypto/tink/proto/AesGcmKey$Builder;->setKeyValue(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)Lcom/google/crypto/tink/proto/AesGcmKey$Builder; +HSPLcom/google/crypto/tink/proto/AesGcmKey$Builder;->setVersion(I)Lcom/google/crypto/tink/proto/AesGcmKey$Builder; +Lcom/google/crypto/tink/proto/AesGcmKeyFormat; +HSPLcom/google/crypto/tink/proto/AesGcmKeyFormat;->()V +HSPLcom/google/crypto/tink/proto/AesGcmKeyFormat;->()V +HSPLcom/google/crypto/tink/proto/AesGcmKeyFormat;->access$000()Lcom/google/crypto/tink/proto/AesGcmKeyFormat; +HSPLcom/google/crypto/tink/proto/AesGcmKeyFormat;->access$100(Lcom/google/crypto/tink/proto/AesGcmKeyFormat;I)V +HSPLcom/google/crypto/tink/proto/AesGcmKeyFormat;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/AesGcmKeyFormat;->getKeySize()I +HSPLcom/google/crypto/tink/proto/AesGcmKeyFormat;->newBuilder()Lcom/google/crypto/tink/proto/AesGcmKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesGcmKeyFormat;->parseFrom(Lcom/google/crypto/tink/shaded/protobuf/ByteString;Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)Lcom/google/crypto/tink/proto/AesGcmKeyFormat; +HSPLcom/google/crypto/tink/proto/AesGcmKeyFormat;->setKeySize(I)V +Lcom/google/crypto/tink/proto/AesGcmKeyFormat$1; +HSPLcom/google/crypto/tink/proto/AesGcmKeyFormat$1;->()V +Lcom/google/crypto/tink/proto/AesGcmKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesGcmKeyFormat$Builder;->()V +HSPLcom/google/crypto/tink/proto/AesGcmKeyFormat$Builder;->(Lcom/google/crypto/tink/proto/AesGcmKeyFormat$1;)V +HSPLcom/google/crypto/tink/proto/AesGcmKeyFormat$Builder;->setKeySize(I)Lcom/google/crypto/tink/proto/AesGcmKeyFormat$Builder; +Lcom/google/crypto/tink/proto/AesGcmKeyFormatOrBuilder; +Lcom/google/crypto/tink/proto/AesGcmKeyOrBuilder; +Lcom/google/crypto/tink/proto/AesGcmSivKey; +Lcom/google/crypto/tink/proto/AesGcmSivKeyFormat; +HSPLcom/google/crypto/tink/proto/AesGcmSivKeyFormat;->()V +HSPLcom/google/crypto/tink/proto/AesGcmSivKeyFormat;->()V +HSPLcom/google/crypto/tink/proto/AesGcmSivKeyFormat;->access$000()Lcom/google/crypto/tink/proto/AesGcmSivKeyFormat; +HSPLcom/google/crypto/tink/proto/AesGcmSivKeyFormat;->access$100(Lcom/google/crypto/tink/proto/AesGcmSivKeyFormat;I)V +HSPLcom/google/crypto/tink/proto/AesGcmSivKeyFormat;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/AesGcmSivKeyFormat;->newBuilder()Lcom/google/crypto/tink/proto/AesGcmSivKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesGcmSivKeyFormat;->setKeySize(I)V +Lcom/google/crypto/tink/proto/AesGcmSivKeyFormat$1; +HSPLcom/google/crypto/tink/proto/AesGcmSivKeyFormat$1;->()V +Lcom/google/crypto/tink/proto/AesGcmSivKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesGcmSivKeyFormat$Builder;->()V +HSPLcom/google/crypto/tink/proto/AesGcmSivKeyFormat$Builder;->(Lcom/google/crypto/tink/proto/AesGcmSivKeyFormat$1;)V +HSPLcom/google/crypto/tink/proto/AesGcmSivKeyFormat$Builder;->setKeySize(I)Lcom/google/crypto/tink/proto/AesGcmSivKeyFormat$Builder; +Lcom/google/crypto/tink/proto/AesGcmSivKeyFormatOrBuilder; +Lcom/google/crypto/tink/proto/AesGcmSivKeyOrBuilder; +Lcom/google/crypto/tink/proto/AesSivKey; +HSPLcom/google/crypto/tink/proto/AesSivKey;->()V +HSPLcom/google/crypto/tink/proto/AesSivKey;->()V +HSPLcom/google/crypto/tink/proto/AesSivKey;->access$000()Lcom/google/crypto/tink/proto/AesSivKey; +HSPLcom/google/crypto/tink/proto/AesSivKey;->access$100(Lcom/google/crypto/tink/proto/AesSivKey;I)V +HSPLcom/google/crypto/tink/proto/AesSivKey;->access$300(Lcom/google/crypto/tink/proto/AesSivKey;Lcom/google/crypto/tink/shaded/protobuf/ByteString;)V +HSPLcom/google/crypto/tink/proto/AesSivKey;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/AesSivKey;->getKeyValue()Lcom/google/crypto/tink/shaded/protobuf/ByteString; +HSPLcom/google/crypto/tink/proto/AesSivKey;->getVersion()I +HSPLcom/google/crypto/tink/proto/AesSivKey;->newBuilder()Lcom/google/crypto/tink/proto/AesSivKey$Builder; +HSPLcom/google/crypto/tink/proto/AesSivKey;->parseFrom(Lcom/google/crypto/tink/shaded/protobuf/ByteString;Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)Lcom/google/crypto/tink/proto/AesSivKey; +HSPLcom/google/crypto/tink/proto/AesSivKey;->setKeyValue(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)V +HSPLcom/google/crypto/tink/proto/AesSivKey;->setVersion(I)V +Lcom/google/crypto/tink/proto/AesSivKey$1; +HSPLcom/google/crypto/tink/proto/AesSivKey$1;->()V +Lcom/google/crypto/tink/proto/AesSivKey$Builder; +HSPLcom/google/crypto/tink/proto/AesSivKey$Builder;->()V +HSPLcom/google/crypto/tink/proto/AesSivKey$Builder;->(Lcom/google/crypto/tink/proto/AesSivKey$1;)V +HSPLcom/google/crypto/tink/proto/AesSivKey$Builder;->setKeyValue(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)Lcom/google/crypto/tink/proto/AesSivKey$Builder; +HSPLcom/google/crypto/tink/proto/AesSivKey$Builder;->setVersion(I)Lcom/google/crypto/tink/proto/AesSivKey$Builder; +Lcom/google/crypto/tink/proto/AesSivKeyFormat; +HSPLcom/google/crypto/tink/proto/AesSivKeyFormat;->()V +HSPLcom/google/crypto/tink/proto/AesSivKeyFormat;->()V +HSPLcom/google/crypto/tink/proto/AesSivKeyFormat;->access$000()Lcom/google/crypto/tink/proto/AesSivKeyFormat; +HSPLcom/google/crypto/tink/proto/AesSivKeyFormat;->access$100(Lcom/google/crypto/tink/proto/AesSivKeyFormat;I)V +HSPLcom/google/crypto/tink/proto/AesSivKeyFormat;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/AesSivKeyFormat;->getKeySize()I +HSPLcom/google/crypto/tink/proto/AesSivKeyFormat;->newBuilder()Lcom/google/crypto/tink/proto/AesSivKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesSivKeyFormat;->parseFrom(Lcom/google/crypto/tink/shaded/protobuf/ByteString;Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)Lcom/google/crypto/tink/proto/AesSivKeyFormat; +HSPLcom/google/crypto/tink/proto/AesSivKeyFormat;->setKeySize(I)V +Lcom/google/crypto/tink/proto/AesSivKeyFormat$1; +HSPLcom/google/crypto/tink/proto/AesSivKeyFormat$1;->()V +Lcom/google/crypto/tink/proto/AesSivKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesSivKeyFormat$Builder;->()V +HSPLcom/google/crypto/tink/proto/AesSivKeyFormat$Builder;->(Lcom/google/crypto/tink/proto/AesSivKeyFormat$1;)V +HSPLcom/google/crypto/tink/proto/AesSivKeyFormat$Builder;->setKeySize(I)Lcom/google/crypto/tink/proto/AesSivKeyFormat$Builder; +Lcom/google/crypto/tink/proto/AesSivKeyFormatOrBuilder; +Lcom/google/crypto/tink/proto/AesSivKeyOrBuilder; +Lcom/google/crypto/tink/proto/ChaCha20Poly1305Key; +Lcom/google/crypto/tink/proto/ChaCha20Poly1305KeyFormat; +HSPLcom/google/crypto/tink/proto/ChaCha20Poly1305KeyFormat;->()V +HSPLcom/google/crypto/tink/proto/ChaCha20Poly1305KeyFormat;->()V +HSPLcom/google/crypto/tink/proto/ChaCha20Poly1305KeyFormat;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/ChaCha20Poly1305KeyFormat;->getDefaultInstance()Lcom/google/crypto/tink/proto/ChaCha20Poly1305KeyFormat; +Lcom/google/crypto/tink/proto/ChaCha20Poly1305KeyFormat$1; +HSPLcom/google/crypto/tink/proto/ChaCha20Poly1305KeyFormat$1;->()V +Lcom/google/crypto/tink/proto/ChaCha20Poly1305KeyFormatOrBuilder; +Lcom/google/crypto/tink/proto/ChaCha20Poly1305KeyOrBuilder; +Lcom/google/crypto/tink/proto/EncryptedKeyset; +HSPLcom/google/crypto/tink/proto/EncryptedKeyset;->()V +HSPLcom/google/crypto/tink/proto/EncryptedKeyset;->()V +HSPLcom/google/crypto/tink/proto/EncryptedKeyset;->access$000()Lcom/google/crypto/tink/proto/EncryptedKeyset; +HSPLcom/google/crypto/tink/proto/EncryptedKeyset;->access$100(Lcom/google/crypto/tink/proto/EncryptedKeyset;Lcom/google/crypto/tink/shaded/protobuf/ByteString;)V +HSPLcom/google/crypto/tink/proto/EncryptedKeyset;->access$300(Lcom/google/crypto/tink/proto/EncryptedKeyset;Lcom/google/crypto/tink/proto/KeysetInfo;)V +HSPLcom/google/crypto/tink/proto/EncryptedKeyset;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/EncryptedKeyset;->getEncryptedKeyset()Lcom/google/crypto/tink/shaded/protobuf/ByteString; +HSPLcom/google/crypto/tink/proto/EncryptedKeyset;->newBuilder()Lcom/google/crypto/tink/proto/EncryptedKeyset$Builder; +HSPLcom/google/crypto/tink/proto/EncryptedKeyset;->parseFrom(Ljava/io/InputStream;Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)Lcom/google/crypto/tink/proto/EncryptedKeyset; +HSPLcom/google/crypto/tink/proto/EncryptedKeyset;->setEncryptedKeyset(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)V +HSPLcom/google/crypto/tink/proto/EncryptedKeyset;->setKeysetInfo(Lcom/google/crypto/tink/proto/KeysetInfo;)V +Lcom/google/crypto/tink/proto/EncryptedKeyset$1; +HSPLcom/google/crypto/tink/proto/EncryptedKeyset$1;->()V +Lcom/google/crypto/tink/proto/EncryptedKeyset$Builder; +HSPLcom/google/crypto/tink/proto/EncryptedKeyset$Builder;->()V +HSPLcom/google/crypto/tink/proto/EncryptedKeyset$Builder;->(Lcom/google/crypto/tink/proto/EncryptedKeyset$1;)V +HSPLcom/google/crypto/tink/proto/EncryptedKeyset$Builder;->setEncryptedKeyset(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)Lcom/google/crypto/tink/proto/EncryptedKeyset$Builder; +HSPLcom/google/crypto/tink/proto/EncryptedKeyset$Builder;->setKeysetInfo(Lcom/google/crypto/tink/proto/KeysetInfo;)Lcom/google/crypto/tink/proto/EncryptedKeyset$Builder; +Lcom/google/crypto/tink/proto/EncryptedKeysetOrBuilder; +Lcom/google/crypto/tink/proto/HashType; +HSPLcom/google/crypto/tink/proto/HashType;->()V +HSPLcom/google/crypto/tink/proto/HashType;->(Ljava/lang/String;II)V +HSPLcom/google/crypto/tink/proto/HashType;->getNumber()I +Lcom/google/crypto/tink/proto/HashType$1; +HSPLcom/google/crypto/tink/proto/HashType$1;->()V +Lcom/google/crypto/tink/proto/HmacKey; +Lcom/google/crypto/tink/proto/HmacKeyFormat; +HSPLcom/google/crypto/tink/proto/HmacKeyFormat;->()V +HSPLcom/google/crypto/tink/proto/HmacKeyFormat;->()V +HSPLcom/google/crypto/tink/proto/HmacKeyFormat;->access$000()Lcom/google/crypto/tink/proto/HmacKeyFormat; +HSPLcom/google/crypto/tink/proto/HmacKeyFormat;->access$100(Lcom/google/crypto/tink/proto/HmacKeyFormat;Lcom/google/crypto/tink/proto/HmacParams;)V +HSPLcom/google/crypto/tink/proto/HmacKeyFormat;->access$400(Lcom/google/crypto/tink/proto/HmacKeyFormat;I)V +HSPLcom/google/crypto/tink/proto/HmacKeyFormat;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/HmacKeyFormat;->newBuilder()Lcom/google/crypto/tink/proto/HmacKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/HmacKeyFormat;->setKeySize(I)V +HSPLcom/google/crypto/tink/proto/HmacKeyFormat;->setParams(Lcom/google/crypto/tink/proto/HmacParams;)V +Lcom/google/crypto/tink/proto/HmacKeyFormat$1; +HSPLcom/google/crypto/tink/proto/HmacKeyFormat$1;->()V +Lcom/google/crypto/tink/proto/HmacKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/HmacKeyFormat$Builder;->()V +HSPLcom/google/crypto/tink/proto/HmacKeyFormat$Builder;->(Lcom/google/crypto/tink/proto/HmacKeyFormat$1;)V +HSPLcom/google/crypto/tink/proto/HmacKeyFormat$Builder;->setKeySize(I)Lcom/google/crypto/tink/proto/HmacKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/HmacKeyFormat$Builder;->setParams(Lcom/google/crypto/tink/proto/HmacParams;)Lcom/google/crypto/tink/proto/HmacKeyFormat$Builder; +Lcom/google/crypto/tink/proto/HmacKeyFormatOrBuilder; +Lcom/google/crypto/tink/proto/HmacKeyOrBuilder; +Lcom/google/crypto/tink/proto/HmacParams; +HSPLcom/google/crypto/tink/proto/HmacParams;->()V +HSPLcom/google/crypto/tink/proto/HmacParams;->()V +HSPLcom/google/crypto/tink/proto/HmacParams;->access$000()Lcom/google/crypto/tink/proto/HmacParams; +HSPLcom/google/crypto/tink/proto/HmacParams;->access$200(Lcom/google/crypto/tink/proto/HmacParams;Lcom/google/crypto/tink/proto/HashType;)V +HSPLcom/google/crypto/tink/proto/HmacParams;->access$400(Lcom/google/crypto/tink/proto/HmacParams;I)V +HSPLcom/google/crypto/tink/proto/HmacParams;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/HmacParams;->newBuilder()Lcom/google/crypto/tink/proto/HmacParams$Builder; +HSPLcom/google/crypto/tink/proto/HmacParams;->setHash(Lcom/google/crypto/tink/proto/HashType;)V +HSPLcom/google/crypto/tink/proto/HmacParams;->setTagSize(I)V +Lcom/google/crypto/tink/proto/HmacParams$1; +HSPLcom/google/crypto/tink/proto/HmacParams$1;->()V +Lcom/google/crypto/tink/proto/HmacParams$Builder; +HSPLcom/google/crypto/tink/proto/HmacParams$Builder;->()V +HSPLcom/google/crypto/tink/proto/HmacParams$Builder;->(Lcom/google/crypto/tink/proto/HmacParams$1;)V +HSPLcom/google/crypto/tink/proto/HmacParams$Builder;->setHash(Lcom/google/crypto/tink/proto/HashType;)Lcom/google/crypto/tink/proto/HmacParams$Builder; +HSPLcom/google/crypto/tink/proto/HmacParams$Builder;->setTagSize(I)Lcom/google/crypto/tink/proto/HmacParams$Builder; +Lcom/google/crypto/tink/proto/HmacParamsOrBuilder; +Lcom/google/crypto/tink/proto/KeyData; +HSPLcom/google/crypto/tink/proto/KeyData;->()V +HSPLcom/google/crypto/tink/proto/KeyData;->()V +HSPLcom/google/crypto/tink/proto/KeyData;->access$000()Lcom/google/crypto/tink/proto/KeyData; +HSPLcom/google/crypto/tink/proto/KeyData;->access$100(Lcom/google/crypto/tink/proto/KeyData;Ljava/lang/String;)V +HSPLcom/google/crypto/tink/proto/KeyData;->access$400(Lcom/google/crypto/tink/proto/KeyData;Lcom/google/crypto/tink/shaded/protobuf/ByteString;)V +HSPLcom/google/crypto/tink/proto/KeyData;->access$700(Lcom/google/crypto/tink/proto/KeyData;Lcom/google/crypto/tink/proto/KeyData$KeyMaterialType;)V +HSPLcom/google/crypto/tink/proto/KeyData;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/KeyData;->getKeyMaterialType()Lcom/google/crypto/tink/proto/KeyData$KeyMaterialType; +HSPLcom/google/crypto/tink/proto/KeyData;->getTypeUrl()Ljava/lang/String; +HSPLcom/google/crypto/tink/proto/KeyData;->getValue()Lcom/google/crypto/tink/shaded/protobuf/ByteString; +HSPLcom/google/crypto/tink/proto/KeyData;->newBuilder()Lcom/google/crypto/tink/proto/KeyData$Builder; +HSPLcom/google/crypto/tink/proto/KeyData;->setKeyMaterialType(Lcom/google/crypto/tink/proto/KeyData$KeyMaterialType;)V +HSPLcom/google/crypto/tink/proto/KeyData;->setTypeUrl(Ljava/lang/String;)V +HSPLcom/google/crypto/tink/proto/KeyData;->setValue(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)V +Lcom/google/crypto/tink/proto/KeyData$1; +HSPLcom/google/crypto/tink/proto/KeyData$1;->()V +Lcom/google/crypto/tink/proto/KeyData$Builder; +HSPLcom/google/crypto/tink/proto/KeyData$Builder;->()V +HSPLcom/google/crypto/tink/proto/KeyData$Builder;->(Lcom/google/crypto/tink/proto/KeyData$1;)V +HSPLcom/google/crypto/tink/proto/KeyData$Builder;->setKeyMaterialType(Lcom/google/crypto/tink/proto/KeyData$KeyMaterialType;)Lcom/google/crypto/tink/proto/KeyData$Builder; +HSPLcom/google/crypto/tink/proto/KeyData$Builder;->setTypeUrl(Ljava/lang/String;)Lcom/google/crypto/tink/proto/KeyData$Builder; +HSPLcom/google/crypto/tink/proto/KeyData$Builder;->setValue(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)Lcom/google/crypto/tink/proto/KeyData$Builder; +Lcom/google/crypto/tink/proto/KeyData$KeyMaterialType; +HSPLcom/google/crypto/tink/proto/KeyData$KeyMaterialType;->()V +HSPLcom/google/crypto/tink/proto/KeyData$KeyMaterialType;->(Ljava/lang/String;II)V +HSPLcom/google/crypto/tink/proto/KeyData$KeyMaterialType;->forNumber(I)Lcom/google/crypto/tink/proto/KeyData$KeyMaterialType; +HSPLcom/google/crypto/tink/proto/KeyData$KeyMaterialType;->getNumber()I +HSPLcom/google/crypto/tink/proto/KeyData$KeyMaterialType;->values()[Lcom/google/crypto/tink/proto/KeyData$KeyMaterialType; +Lcom/google/crypto/tink/proto/KeyData$KeyMaterialType$1; +HSPLcom/google/crypto/tink/proto/KeyData$KeyMaterialType$1;->()V +Lcom/google/crypto/tink/proto/KeyDataOrBuilder; +Lcom/google/crypto/tink/proto/KeyStatusType; +HSPLcom/google/crypto/tink/proto/KeyStatusType;->()V +HSPLcom/google/crypto/tink/proto/KeyStatusType;->(Ljava/lang/String;II)V +HSPLcom/google/crypto/tink/proto/KeyStatusType;->forNumber(I)Lcom/google/crypto/tink/proto/KeyStatusType; +HSPLcom/google/crypto/tink/proto/KeyStatusType;->getNumber()I +HSPLcom/google/crypto/tink/proto/KeyStatusType;->values()[Lcom/google/crypto/tink/proto/KeyStatusType; +Lcom/google/crypto/tink/proto/KeyStatusType$1; +HSPLcom/google/crypto/tink/proto/KeyStatusType$1;->()V +Lcom/google/crypto/tink/proto/KeyTemplate; +HSPLcom/google/crypto/tink/proto/KeyTemplate;->()V +HSPLcom/google/crypto/tink/proto/KeyTemplate;->()V +HSPLcom/google/crypto/tink/proto/KeyTemplate;->access$000()Lcom/google/crypto/tink/proto/KeyTemplate; +HSPLcom/google/crypto/tink/proto/KeyTemplate;->access$100(Lcom/google/crypto/tink/proto/KeyTemplate;Ljava/lang/String;)V +HSPLcom/google/crypto/tink/proto/KeyTemplate;->access$400(Lcom/google/crypto/tink/proto/KeyTemplate;Lcom/google/crypto/tink/shaded/protobuf/ByteString;)V +HSPLcom/google/crypto/tink/proto/KeyTemplate;->access$700(Lcom/google/crypto/tink/proto/KeyTemplate;Lcom/google/crypto/tink/proto/OutputPrefixType;)V +HSPLcom/google/crypto/tink/proto/KeyTemplate;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/KeyTemplate;->getOutputPrefixType()Lcom/google/crypto/tink/proto/OutputPrefixType; +HSPLcom/google/crypto/tink/proto/KeyTemplate;->getTypeUrl()Ljava/lang/String; +HSPLcom/google/crypto/tink/proto/KeyTemplate;->getValue()Lcom/google/crypto/tink/shaded/protobuf/ByteString; +HSPLcom/google/crypto/tink/proto/KeyTemplate;->newBuilder()Lcom/google/crypto/tink/proto/KeyTemplate$Builder; +HSPLcom/google/crypto/tink/proto/KeyTemplate;->setOutputPrefixType(Lcom/google/crypto/tink/proto/OutputPrefixType;)V +HSPLcom/google/crypto/tink/proto/KeyTemplate;->setTypeUrl(Ljava/lang/String;)V +HSPLcom/google/crypto/tink/proto/KeyTemplate;->setValue(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)V +Lcom/google/crypto/tink/proto/KeyTemplate$1; +HSPLcom/google/crypto/tink/proto/KeyTemplate$1;->()V +Lcom/google/crypto/tink/proto/KeyTemplate$Builder; +HSPLcom/google/crypto/tink/proto/KeyTemplate$Builder;->()V +HSPLcom/google/crypto/tink/proto/KeyTemplate$Builder;->(Lcom/google/crypto/tink/proto/KeyTemplate$1;)V +HSPLcom/google/crypto/tink/proto/KeyTemplate$Builder;->setOutputPrefixType(Lcom/google/crypto/tink/proto/OutputPrefixType;)Lcom/google/crypto/tink/proto/KeyTemplate$Builder; +HSPLcom/google/crypto/tink/proto/KeyTemplate$Builder;->setTypeUrl(Ljava/lang/String;)Lcom/google/crypto/tink/proto/KeyTemplate$Builder; +HSPLcom/google/crypto/tink/proto/KeyTemplate$Builder;->setValue(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)Lcom/google/crypto/tink/proto/KeyTemplate$Builder; +Lcom/google/crypto/tink/proto/KeyTemplateOrBuilder; +Lcom/google/crypto/tink/proto/Keyset; +HSPLcom/google/crypto/tink/proto/Keyset;->()V +HSPLcom/google/crypto/tink/proto/Keyset;->()V +HSPLcom/google/crypto/tink/proto/Keyset;->access$1300()Lcom/google/crypto/tink/proto/Keyset; +HSPLcom/google/crypto/tink/proto/Keyset;->access$1400(Lcom/google/crypto/tink/proto/Keyset;I)V +HSPLcom/google/crypto/tink/proto/Keyset;->access$1700(Lcom/google/crypto/tink/proto/Keyset;Lcom/google/crypto/tink/proto/Keyset$Key;)V +HSPLcom/google/crypto/tink/proto/Keyset;->addKey(Lcom/google/crypto/tink/proto/Keyset$Key;)V +HSPLcom/google/crypto/tink/proto/Keyset;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/Keyset;->ensureKeyIsMutable()V +HSPLcom/google/crypto/tink/proto/Keyset;->getKey(I)Lcom/google/crypto/tink/proto/Keyset$Key; +HSPLcom/google/crypto/tink/proto/Keyset;->getKeyCount()I +HSPLcom/google/crypto/tink/proto/Keyset;->getKeyList()Ljava/util/List; +HSPLcom/google/crypto/tink/proto/Keyset;->getPrimaryKeyId()I +HSPLcom/google/crypto/tink/proto/Keyset;->newBuilder()Lcom/google/crypto/tink/proto/Keyset$Builder; +HSPLcom/google/crypto/tink/proto/Keyset;->parseFrom([BLcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)Lcom/google/crypto/tink/proto/Keyset; +HSPLcom/google/crypto/tink/proto/Keyset;->setPrimaryKeyId(I)V +Lcom/google/crypto/tink/proto/Keyset$1; +HSPLcom/google/crypto/tink/proto/Keyset$1;->()V +Lcom/google/crypto/tink/proto/Keyset$Builder; +HSPLcom/google/crypto/tink/proto/Keyset$Builder;->()V +HSPLcom/google/crypto/tink/proto/Keyset$Builder;->(Lcom/google/crypto/tink/proto/Keyset$1;)V +HSPLcom/google/crypto/tink/proto/Keyset$Builder;->addKey(Lcom/google/crypto/tink/proto/Keyset$Key;)Lcom/google/crypto/tink/proto/Keyset$Builder; +HSPLcom/google/crypto/tink/proto/Keyset$Builder;->getKey(I)Lcom/google/crypto/tink/proto/Keyset$Key; +HSPLcom/google/crypto/tink/proto/Keyset$Builder;->getKeyCount()I +HSPLcom/google/crypto/tink/proto/Keyset$Builder;->getKeyList()Ljava/util/List; +HSPLcom/google/crypto/tink/proto/Keyset$Builder;->setPrimaryKeyId(I)Lcom/google/crypto/tink/proto/Keyset$Builder; +Lcom/google/crypto/tink/proto/Keyset$Key; +HSPLcom/google/crypto/tink/proto/Keyset$Key;->()V +HSPLcom/google/crypto/tink/proto/Keyset$Key;->()V +HSPLcom/google/crypto/tink/proto/Keyset$Key;->access$000()Lcom/google/crypto/tink/proto/Keyset$Key; +HSPLcom/google/crypto/tink/proto/Keyset$Key;->access$100(Lcom/google/crypto/tink/proto/Keyset$Key;Lcom/google/crypto/tink/proto/KeyData;)V +HSPLcom/google/crypto/tink/proto/Keyset$Key;->access$1000(Lcom/google/crypto/tink/proto/Keyset$Key;Lcom/google/crypto/tink/proto/OutputPrefixType;)V +HSPLcom/google/crypto/tink/proto/Keyset$Key;->access$500(Lcom/google/crypto/tink/proto/Keyset$Key;Lcom/google/crypto/tink/proto/KeyStatusType;)V +HSPLcom/google/crypto/tink/proto/Keyset$Key;->access$700(Lcom/google/crypto/tink/proto/Keyset$Key;I)V +HSPLcom/google/crypto/tink/proto/Keyset$Key;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/Keyset$Key;->getKeyData()Lcom/google/crypto/tink/proto/KeyData; +HSPLcom/google/crypto/tink/proto/Keyset$Key;->getKeyId()I +HSPLcom/google/crypto/tink/proto/Keyset$Key;->getOutputPrefixType()Lcom/google/crypto/tink/proto/OutputPrefixType; +HSPLcom/google/crypto/tink/proto/Keyset$Key;->getStatus()Lcom/google/crypto/tink/proto/KeyStatusType; +HSPLcom/google/crypto/tink/proto/Keyset$Key;->hasKeyData()Z +HSPLcom/google/crypto/tink/proto/Keyset$Key;->newBuilder()Lcom/google/crypto/tink/proto/Keyset$Key$Builder; +HSPLcom/google/crypto/tink/proto/Keyset$Key;->setKeyData(Lcom/google/crypto/tink/proto/KeyData;)V +HSPLcom/google/crypto/tink/proto/Keyset$Key;->setKeyId(I)V +HSPLcom/google/crypto/tink/proto/Keyset$Key;->setOutputPrefixType(Lcom/google/crypto/tink/proto/OutputPrefixType;)V +HSPLcom/google/crypto/tink/proto/Keyset$Key;->setStatus(Lcom/google/crypto/tink/proto/KeyStatusType;)V +Lcom/google/crypto/tink/proto/Keyset$Key$Builder; +HSPLcom/google/crypto/tink/proto/Keyset$Key$Builder;->()V +HSPLcom/google/crypto/tink/proto/Keyset$Key$Builder;->(Lcom/google/crypto/tink/proto/Keyset$1;)V +HSPLcom/google/crypto/tink/proto/Keyset$Key$Builder;->setKeyData(Lcom/google/crypto/tink/proto/KeyData;)Lcom/google/crypto/tink/proto/Keyset$Key$Builder; +HSPLcom/google/crypto/tink/proto/Keyset$Key$Builder;->setKeyId(I)Lcom/google/crypto/tink/proto/Keyset$Key$Builder; +HSPLcom/google/crypto/tink/proto/Keyset$Key$Builder;->setOutputPrefixType(Lcom/google/crypto/tink/proto/OutputPrefixType;)Lcom/google/crypto/tink/proto/Keyset$Key$Builder; +HSPLcom/google/crypto/tink/proto/Keyset$Key$Builder;->setStatus(Lcom/google/crypto/tink/proto/KeyStatusType;)Lcom/google/crypto/tink/proto/Keyset$Key$Builder; +Lcom/google/crypto/tink/proto/Keyset$KeyOrBuilder; +Lcom/google/crypto/tink/proto/KeysetInfo; +HSPLcom/google/crypto/tink/proto/KeysetInfo;->()V +HSPLcom/google/crypto/tink/proto/KeysetInfo;->()V +HSPLcom/google/crypto/tink/proto/KeysetInfo;->access$1300()Lcom/google/crypto/tink/proto/KeysetInfo; +HSPLcom/google/crypto/tink/proto/KeysetInfo;->access$1400(Lcom/google/crypto/tink/proto/KeysetInfo;I)V +HSPLcom/google/crypto/tink/proto/KeysetInfo;->access$1700(Lcom/google/crypto/tink/proto/KeysetInfo;Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;)V +HSPLcom/google/crypto/tink/proto/KeysetInfo;->addKeyInfo(Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;)V +HSPLcom/google/crypto/tink/proto/KeysetInfo;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/KeysetInfo;->ensureKeyInfoIsMutable()V +HSPLcom/google/crypto/tink/proto/KeysetInfo;->getKeyInfo(I)Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo; +HSPLcom/google/crypto/tink/proto/KeysetInfo;->newBuilder()Lcom/google/crypto/tink/proto/KeysetInfo$Builder; +HSPLcom/google/crypto/tink/proto/KeysetInfo;->setPrimaryKeyId(I)V +Lcom/google/crypto/tink/proto/KeysetInfo$1; +HSPLcom/google/crypto/tink/proto/KeysetInfo$1;->()V +Lcom/google/crypto/tink/proto/KeysetInfo$Builder; +HSPLcom/google/crypto/tink/proto/KeysetInfo$Builder;->()V +HSPLcom/google/crypto/tink/proto/KeysetInfo$Builder;->(Lcom/google/crypto/tink/proto/KeysetInfo$1;)V +HSPLcom/google/crypto/tink/proto/KeysetInfo$Builder;->addKeyInfo(Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;)Lcom/google/crypto/tink/proto/KeysetInfo$Builder; +HSPLcom/google/crypto/tink/proto/KeysetInfo$Builder;->setPrimaryKeyId(I)Lcom/google/crypto/tink/proto/KeysetInfo$Builder; +Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo; +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;->()V +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;->()V +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;->access$000()Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo; +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;->access$100(Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;Ljava/lang/String;)V +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;->access$1000(Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;Lcom/google/crypto/tink/proto/OutputPrefixType;)V +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;->access$500(Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;Lcom/google/crypto/tink/proto/KeyStatusType;)V +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;->access$700(Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;I)V +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;->getKeyId()I +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;->newBuilder()Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo$Builder; +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;->setKeyId(I)V +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;->setOutputPrefixType(Lcom/google/crypto/tink/proto/OutputPrefixType;)V +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;->setStatus(Lcom/google/crypto/tink/proto/KeyStatusType;)V +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;->setTypeUrl(Ljava/lang/String;)V +Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo$Builder; +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo$Builder;->()V +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo$Builder;->(Lcom/google/crypto/tink/proto/KeysetInfo$1;)V +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo$Builder;->setKeyId(I)Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo$Builder; +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo$Builder;->setOutputPrefixType(Lcom/google/crypto/tink/proto/OutputPrefixType;)Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo$Builder; +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo$Builder;->setStatus(Lcom/google/crypto/tink/proto/KeyStatusType;)Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo$Builder; +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo$Builder;->setTypeUrl(Ljava/lang/String;)Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo$Builder; +Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfoOrBuilder; +Lcom/google/crypto/tink/proto/KeysetInfoOrBuilder; +Lcom/google/crypto/tink/proto/KeysetOrBuilder; +Lcom/google/crypto/tink/proto/KmsAeadKey; +Lcom/google/crypto/tink/proto/KmsAeadKeyFormat; +Lcom/google/crypto/tink/proto/KmsAeadKeyFormatOrBuilder; +Lcom/google/crypto/tink/proto/KmsAeadKeyOrBuilder; +Lcom/google/crypto/tink/proto/KmsEnvelopeAeadKey; +Lcom/google/crypto/tink/proto/KmsEnvelopeAeadKeyFormat; +Lcom/google/crypto/tink/proto/KmsEnvelopeAeadKeyFormatOrBuilder; +Lcom/google/crypto/tink/proto/KmsEnvelopeAeadKeyOrBuilder; +Lcom/google/crypto/tink/proto/OutputPrefixType; +HSPLcom/google/crypto/tink/proto/OutputPrefixType;->()V +HSPLcom/google/crypto/tink/proto/OutputPrefixType;->(Ljava/lang/String;II)V +HSPLcom/google/crypto/tink/proto/OutputPrefixType;->forNumber(I)Lcom/google/crypto/tink/proto/OutputPrefixType; +HSPLcom/google/crypto/tink/proto/OutputPrefixType;->getNumber()I +HSPLcom/google/crypto/tink/proto/OutputPrefixType;->values()[Lcom/google/crypto/tink/proto/OutputPrefixType; +Lcom/google/crypto/tink/proto/OutputPrefixType$1; +HSPLcom/google/crypto/tink/proto/OutputPrefixType$1;->()V +Lcom/google/crypto/tink/proto/RegistryConfig; +HSPLcom/google/crypto/tink/proto/RegistryConfig;->()V +HSPLcom/google/crypto/tink/proto/RegistryConfig;->()V +HSPLcom/google/crypto/tink/proto/RegistryConfig;->getDefaultInstance()Lcom/google/crypto/tink/proto/RegistryConfig; +Lcom/google/crypto/tink/proto/RegistryConfigOrBuilder; +Lcom/google/crypto/tink/proto/XChaCha20Poly1305Key; +Lcom/google/crypto/tink/proto/XChaCha20Poly1305KeyFormat; +HSPLcom/google/crypto/tink/proto/XChaCha20Poly1305KeyFormat;->()V +HSPLcom/google/crypto/tink/proto/XChaCha20Poly1305KeyFormat;->()V +HSPLcom/google/crypto/tink/proto/XChaCha20Poly1305KeyFormat;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/XChaCha20Poly1305KeyFormat;->getDefaultInstance()Lcom/google/crypto/tink/proto/XChaCha20Poly1305KeyFormat; +Lcom/google/crypto/tink/proto/XChaCha20Poly1305KeyFormat$1; +HSPLcom/google/crypto/tink/proto/XChaCha20Poly1305KeyFormat$1;->()V +Lcom/google/crypto/tink/proto/XChaCha20Poly1305KeyFormatOrBuilder; +Lcom/google/crypto/tink/proto/XChaCha20Poly1305KeyOrBuilder; +Lcom/google/crypto/tink/shaded/protobuf/AbstractMessageLite; +HSPLcom/google/crypto/tink/shaded/protobuf/AbstractMessageLite;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/AbstractMessageLite;->toByteArray()[B +HSPLcom/google/crypto/tink/shaded/protobuf/AbstractMessageLite;->toByteString()Lcom/google/crypto/tink/shaded/protobuf/ByteString; +Lcom/google/crypto/tink/shaded/protobuf/AbstractMessageLite$Builder; +HSPLcom/google/crypto/tink/shaded/protobuf/AbstractMessageLite$Builder;->()V +Lcom/google/crypto/tink/shaded/protobuf/AbstractProtobufList; +HSPLcom/google/crypto/tink/shaded/protobuf/AbstractProtobufList;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/AbstractProtobufList;->ensureIsMutable()V +HSPLcom/google/crypto/tink/shaded/protobuf/AbstractProtobufList;->equals(Ljava/lang/Object;)Z +HSPLcom/google/crypto/tink/shaded/protobuf/AbstractProtobufList;->isModifiable()Z +HSPLcom/google/crypto/tink/shaded/protobuf/AbstractProtobufList;->makeImmutable()V +Lcom/google/crypto/tink/shaded/protobuf/Android; +HSPLcom/google/crypto/tink/shaded/protobuf/Android;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/Android;->getClassForName(Ljava/lang/String;)Ljava/lang/Class; +HSPLcom/google/crypto/tink/shaded/protobuf/Android;->getMemoryClass()Ljava/lang/Class; +HSPLcom/google/crypto/tink/shaded/protobuf/Android;->isOnAndroidDevice()Z +Lcom/google/crypto/tink/shaded/protobuf/ArrayDecoders; +HSPLcom/google/crypto/tink/shaded/protobuf/ArrayDecoders;->decodeBytes([BILcom/google/crypto/tink/shaded/protobuf/ArrayDecoders$Registers;)I +HSPLcom/google/crypto/tink/shaded/protobuf/ArrayDecoders;->decodeMessageField(Lcom/google/crypto/tink/shaded/protobuf/Schema;[BIILcom/google/crypto/tink/shaded/protobuf/ArrayDecoders$Registers;)I +HSPLcom/google/crypto/tink/shaded/protobuf/ArrayDecoders;->decodeMessageList(Lcom/google/crypto/tink/shaded/protobuf/Schema;I[BIILcom/google/crypto/tink/shaded/protobuf/Internal$ProtobufList;Lcom/google/crypto/tink/shaded/protobuf/ArrayDecoders$Registers;)I +HSPLcom/google/crypto/tink/shaded/protobuf/ArrayDecoders;->decodeStringRequireUtf8([BILcom/google/crypto/tink/shaded/protobuf/ArrayDecoders$Registers;)I +HSPLcom/google/crypto/tink/shaded/protobuf/ArrayDecoders;->decodeVarint32(I[BILcom/google/crypto/tink/shaded/protobuf/ArrayDecoders$Registers;)I +HSPLcom/google/crypto/tink/shaded/protobuf/ArrayDecoders;->decodeVarint32([BILcom/google/crypto/tink/shaded/protobuf/ArrayDecoders$Registers;)I +HSPLcom/google/crypto/tink/shaded/protobuf/ArrayDecoders;->mergeMessageField(Ljava/lang/Object;Lcom/google/crypto/tink/shaded/protobuf/Schema;[BIILcom/google/crypto/tink/shaded/protobuf/ArrayDecoders$Registers;)I +Lcom/google/crypto/tink/shaded/protobuf/ArrayDecoders$Registers; +HSPLcom/google/crypto/tink/shaded/protobuf/ArrayDecoders$Registers;->(Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)V +Lcom/google/crypto/tink/shaded/protobuf/ByteOutput; +HSPLcom/google/crypto/tink/shaded/protobuf/ByteOutput;->()V +Lcom/google/crypto/tink/shaded/protobuf/ByteString; +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString;->checkRange(III)I +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString;->copyFrom([B)Lcom/google/crypto/tink/shaded/protobuf/ByteString; +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString;->copyFrom([BII)Lcom/google/crypto/tink/shaded/protobuf/ByteString; +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString;->newCodedBuilder(I)Lcom/google/crypto/tink/shaded/protobuf/ByteString$CodedBuilder; +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString;->peekCachedHashCode()I +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString;->toByteArray()[B +Lcom/google/crypto/tink/shaded/protobuf/ByteString$2; +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$2;->()V +Lcom/google/crypto/tink/shaded/protobuf/ByteString$ByteArrayCopier; +Lcom/google/crypto/tink/shaded/protobuf/ByteString$CodedBuilder; +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$CodedBuilder;->(I)V +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$CodedBuilder;->(ILcom/google/crypto/tink/shaded/protobuf/ByteString$1;)V +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$CodedBuilder;->build()Lcom/google/crypto/tink/shaded/protobuf/ByteString; +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$CodedBuilder;->getCodedOutput()Lcom/google/crypto/tink/shaded/protobuf/CodedOutputStream; +Lcom/google/crypto/tink/shaded/protobuf/ByteString$LeafByteString; +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$LeafByteString;->()V +Lcom/google/crypto/tink/shaded/protobuf/ByteString$LiteralByteString; +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$LiteralByteString;->([B)V +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$LiteralByteString;->copyToInternal([BIII)V +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$LiteralByteString;->equals(Ljava/lang/Object;)Z +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$LiteralByteString;->equalsRange(Lcom/google/crypto/tink/shaded/protobuf/ByteString;II)Z +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$LiteralByteString;->getOffsetIntoBytes()I +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$LiteralByteString;->newCodedInput()Lcom/google/crypto/tink/shaded/protobuf/CodedInputStream; +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$LiteralByteString;->size()I +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$LiteralByteString;->writeTo(Lcom/google/crypto/tink/shaded/protobuf/ByteOutput;)V +Lcom/google/crypto/tink/shaded/protobuf/ByteString$SystemByteArrayCopier; +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$SystemByteArrayCopier;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$SystemByteArrayCopier;->(Lcom/google/crypto/tink/shaded/protobuf/ByteString$1;)V +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$SystemByteArrayCopier;->copyFrom([BII)[B +Lcom/google/crypto/tink/shaded/protobuf/CodedInputStream; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream;->(Lcom/google/crypto/tink/shaded/protobuf/CodedInputStream$1;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream;->newInstance(Ljava/io/InputStream;)Lcom/google/crypto/tink/shaded/protobuf/CodedInputStream; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream;->newInstance(Ljava/io/InputStream;I)Lcom/google/crypto/tink/shaded/protobuf/CodedInputStream; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream;->newInstance([B)Lcom/google/crypto/tink/shaded/protobuf/CodedInputStream; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream;->newInstance([BII)Lcom/google/crypto/tink/shaded/protobuf/CodedInputStream; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream;->newInstance([BIIZ)Lcom/google/crypto/tink/shaded/protobuf/CodedInputStream; +Lcom/google/crypto/tink/shaded/protobuf/CodedInputStream$ArrayDecoder; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$ArrayDecoder;->([BIIZ)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$ArrayDecoder;->([BIIZLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$1;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$ArrayDecoder;->checkLastTagWas(I)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$ArrayDecoder;->getTotalBytesRead()I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$ArrayDecoder;->isAtEnd()Z +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$ArrayDecoder;->pushLimit(I)I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$ArrayDecoder;->readBytes()Lcom/google/crypto/tink/shaded/protobuf/ByteString; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$ArrayDecoder;->readRawVarint32()I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$ArrayDecoder;->readTag()I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$ArrayDecoder;->readUInt32()I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$ArrayDecoder;->recomputeBufferSizeAfterLimit()V +Lcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->(Ljava/io/InputStream;I)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->(Ljava/io/InputStream;ILcom/google/crypto/tink/shaded/protobuf/CodedInputStream$1;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->checkLastTagWas(I)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->isAtEnd()Z +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->popLimit(I)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->pushLimit(I)I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->read(Ljava/io/InputStream;[BII)I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->readBytes()Lcom/google/crypto/tink/shaded/protobuf/ByteString; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->readEnum()I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->readRawByte()B +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->readRawVarint32()I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->readRawVarint64SlowPath()J +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->readStringRequireUtf8()Ljava/lang/String; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->readTag()I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->readUInt32()I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->recomputeBufferSizeAfterLimit()V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->tryRefillBuffer(I)Z +Lcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder$RefillCallback; +Lcom/google/crypto/tink/shaded/protobuf/CodedInputStreamReader; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStreamReader;->(Lcom/google/crypto/tink/shaded/protobuf/CodedInputStream;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStreamReader;->forCodedInput(Lcom/google/crypto/tink/shaded/protobuf/CodedInputStream;)Lcom/google/crypto/tink/shaded/protobuf/CodedInputStreamReader; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStreamReader;->getFieldNumber()I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStreamReader;->mergeMessageField(Ljava/lang/Object;Lcom/google/crypto/tink/shaded/protobuf/Schema;Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStreamReader;->mergeMessageFieldInternal(Ljava/lang/Object;Lcom/google/crypto/tink/shaded/protobuf/Schema;Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStreamReader;->readBytes()Lcom/google/crypto/tink/shaded/protobuf/ByteString; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStreamReader;->readEnum()I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStreamReader;->readMessage(Lcom/google/crypto/tink/shaded/protobuf/Schema;Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStreamReader;->readMessageList(Ljava/util/List;Lcom/google/crypto/tink/shaded/protobuf/Schema;Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStreamReader;->readStringRequireUtf8()Ljava/lang/String; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStreamReader;->readUInt32()I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStreamReader;->requireWireType(I)V +Lcom/google/crypto/tink/shaded/protobuf/CodedOutputStream; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->(Lcom/google/crypto/tink/shaded/protobuf/CodedOutputStream$1;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->checkNoSpaceLeft()V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->computeBytesSize(ILcom/google/crypto/tink/shaded/protobuf/ByteString;)I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->computeBytesSizeNoTag(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->computeEnumSize(II)I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->computeEnumSizeNoTag(I)I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->computeInt32SizeNoTag(I)I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->computeLengthDelimitedFieldSize(I)I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->computeMessageSize(ILcom/google/crypto/tink/shaded/protobuf/MessageLite;Lcom/google/crypto/tink/shaded/protobuf/Schema;)I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->computeMessageSizeNoTag(Lcom/google/crypto/tink/shaded/protobuf/MessageLite;Lcom/google/crypto/tink/shaded/protobuf/Schema;)I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->computeStringSize(ILjava/lang/String;)I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->computeStringSizeNoTag(Ljava/lang/String;)I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->computeTagSize(I)I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->computeUInt32Size(II)I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->computeUInt32SizeNoTag(I)I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->newInstance([B)Lcom/google/crypto/tink/shaded/protobuf/CodedOutputStream; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->newInstance([BII)Lcom/google/crypto/tink/shaded/protobuf/CodedOutputStream; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->writeEnum(II)V +Lcom/google/crypto/tink/shaded/protobuf/CodedOutputStream$ArrayEncoder; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream$ArrayEncoder;->([BII)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream$ArrayEncoder;->spaceLeft()I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream$ArrayEncoder;->write([BII)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream$ArrayEncoder;->writeBytes(ILcom/google/crypto/tink/shaded/protobuf/ByteString;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream$ArrayEncoder;->writeBytesNoTag(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream$ArrayEncoder;->writeInt32(II)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream$ArrayEncoder;->writeInt32NoTag(I)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream$ArrayEncoder;->writeLazy([BII)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream$ArrayEncoder;->writeMessage(ILcom/google/crypto/tink/shaded/protobuf/MessageLite;Lcom/google/crypto/tink/shaded/protobuf/Schema;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream$ArrayEncoder;->writeString(ILjava/lang/String;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream$ArrayEncoder;->writeStringNoTag(Ljava/lang/String;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream$ArrayEncoder;->writeTag(II)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream$ArrayEncoder;->writeUInt32(II)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream$ArrayEncoder;->writeUInt32NoTag(I)V +Lcom/google/crypto/tink/shaded/protobuf/CodedOutputStreamWriter; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStreamWriter;->(Lcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStreamWriter;->fieldOrder()Lcom/google/crypto/tink/shaded/protobuf/Writer$FieldOrder; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStreamWriter;->forCodedOutput(Lcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;)Lcom/google/crypto/tink/shaded/protobuf/CodedOutputStreamWriter; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStreamWriter;->writeBytes(ILcom/google/crypto/tink/shaded/protobuf/ByteString;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStreamWriter;->writeEnum(II)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStreamWriter;->writeMessage(ILjava/lang/Object;Lcom/google/crypto/tink/shaded/protobuf/Schema;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStreamWriter;->writeMessageList(ILjava/util/List;Lcom/google/crypto/tink/shaded/protobuf/Schema;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStreamWriter;->writeString(ILjava/lang/String;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStreamWriter;->writeUInt32(II)V +Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryFactory; +HSPLcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryFactory;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryFactory;->createEmpty()Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite; +HSPLcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryFactory;->invokeSubclassFactory(Ljava/lang/String;)Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite; +HSPLcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryFactory;->reflectExtensionRegistry()Ljava/lang/Class; +Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite; +HSPLcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;->(Z)V +HSPLcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;->getEmptyRegistry()Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite; +Lcom/google/crypto/tink/shaded/protobuf/ExtensionSchema; +Lcom/google/crypto/tink/shaded/protobuf/FieldType; +HSPLcom/google/crypto/tink/shaded/protobuf/FieldType;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/FieldType;->(Ljava/lang/String;IILcom/google/crypto/tink/shaded/protobuf/FieldType$Collection;Lcom/google/crypto/tink/shaded/protobuf/JavaType;)V +HSPLcom/google/crypto/tink/shaded/protobuf/FieldType;->id()I +HSPLcom/google/crypto/tink/shaded/protobuf/FieldType;->values()[Lcom/google/crypto/tink/shaded/protobuf/FieldType; +Lcom/google/crypto/tink/shaded/protobuf/FieldType$1; +HSPLcom/google/crypto/tink/shaded/protobuf/FieldType$1;->()V +Lcom/google/crypto/tink/shaded/protobuf/FieldType$Collection; +HSPLcom/google/crypto/tink/shaded/protobuf/FieldType$Collection;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/FieldType$Collection;->(Ljava/lang/String;IZ)V +HSPLcom/google/crypto/tink/shaded/protobuf/FieldType$Collection;->values()[Lcom/google/crypto/tink/shaded/protobuf/FieldType$Collection; +Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageInfoFactory; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageInfoFactory;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageInfoFactory;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageInfoFactory;->getInstance()Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageInfoFactory; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageInfoFactory;->isSupported(Ljava/lang/Class;)Z +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageInfoFactory;->messageInfoFor(Ljava/lang/Class;)Lcom/google/crypto/tink/shaded/protobuf/MessageInfo; +Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->buildMessageInfo()Ljava/lang/Object; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->checkMessageInitialized(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;)Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->clearMemoizedHashCode()V +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->clearMemoizedSerializedSize()V +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->computeSerializedSize(Lcom/google/crypto/tink/shaded/protobuf/Schema;)I +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->createBuilder()Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$Builder; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->emptyProtobufList()Lcom/google/crypto/tink/shaded/protobuf/Internal$ProtobufList; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->equals(Ljava/lang/Object;)Z +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->getDefaultInstance(Ljava/lang/Class;)Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->getMemoizedSerializedSize()I +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->getSerializedSize()I +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->getSerializedSize(Lcom/google/crypto/tink/shaded/protobuf/Schema;)I +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->isInitialized()Z +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->isInitialized(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;Z)Z +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->isMutable()Z +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->makeImmutable()V +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->markImmutable()V +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->mutableCopy(Lcom/google/crypto/tink/shaded/protobuf/Internal$ProtobufList;)Lcom/google/crypto/tink/shaded/protobuf/Internal$ProtobufList; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->newMessageInfo(Lcom/google/crypto/tink/shaded/protobuf/MessageLite;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->newMutableInstance()Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->parseFrom(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;Lcom/google/crypto/tink/shaded/protobuf/ByteString;Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->parseFrom(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;Ljava/io/InputStream;Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->parseFrom(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;[BLcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->parsePartialFrom(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;Lcom/google/crypto/tink/shaded/protobuf/ByteString;Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->parsePartialFrom(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;Lcom/google/crypto/tink/shaded/protobuf/CodedInputStream;Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->parsePartialFrom(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;[BIILcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->registerDefaultInstance(Ljava/lang/Class;Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;)V +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->setMemoizedSerializedSize(I)V +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->toBuilder()Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$Builder; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->writeTo(Lcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;)V +Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$Builder; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$Builder;->(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;)V +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$Builder;->build()Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$Builder;->buildPartial()Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$Builder;->copyOnWrite()V +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$Builder;->copyOnWriteInternal()V +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$Builder;->getDefaultInstanceForType()Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$Builder;->mergeFrom(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;)Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$Builder; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$Builder;->mergeFromInstance(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$Builder;->newMutableInstance()Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite; +Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;->(Ljava/lang/String;I)V +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;->values()[Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke; +Lcom/google/crypto/tink/shaded/protobuf/Internal; +HSPLcom/google/crypto/tink/shaded/protobuf/Internal;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/Internal;->checkNotNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; +Lcom/google/crypto/tink/shaded/protobuf/Internal$EnumLite; +Lcom/google/crypto/tink/shaded/protobuf/Internal$EnumLiteMap; +Lcom/google/crypto/tink/shaded/protobuf/Internal$EnumVerifier; +Lcom/google/crypto/tink/shaded/protobuf/Internal$ProtobufList; +Lcom/google/crypto/tink/shaded/protobuf/InvalidProtocolBufferException; +Lcom/google/crypto/tink/shaded/protobuf/InvalidProtocolBufferException$InvalidWireTypeException; +Lcom/google/crypto/tink/shaded/protobuf/JavaType; +HSPLcom/google/crypto/tink/shaded/protobuf/JavaType;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/JavaType;->(Ljava/lang/String;ILjava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;)V +HSPLcom/google/crypto/tink/shaded/protobuf/JavaType;->getBoxedType()Ljava/lang/Class; +HSPLcom/google/crypto/tink/shaded/protobuf/JavaType;->values()[Lcom/google/crypto/tink/shaded/protobuf/JavaType; +Lcom/google/crypto/tink/shaded/protobuf/LazyFieldLite; +Lcom/google/crypto/tink/shaded/protobuf/ListFieldSchema; +HSPLcom/google/crypto/tink/shaded/protobuf/ListFieldSchema;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/ListFieldSchema;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/ListFieldSchema;->(Lcom/google/crypto/tink/shaded/protobuf/ListFieldSchema$1;)V +HSPLcom/google/crypto/tink/shaded/protobuf/ListFieldSchema;->lite()Lcom/google/crypto/tink/shaded/protobuf/ListFieldSchema; +Lcom/google/crypto/tink/shaded/protobuf/ListFieldSchema$ListFieldSchemaFull; +HSPLcom/google/crypto/tink/shaded/protobuf/ListFieldSchema$ListFieldSchemaFull;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/ListFieldSchema$ListFieldSchemaFull;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/ListFieldSchema$ListFieldSchemaFull;->(Lcom/google/crypto/tink/shaded/protobuf/ListFieldSchema$1;)V +Lcom/google/crypto/tink/shaded/protobuf/ListFieldSchema$ListFieldSchemaLite; +HSPLcom/google/crypto/tink/shaded/protobuf/ListFieldSchema$ListFieldSchemaLite;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/ListFieldSchema$ListFieldSchemaLite;->(Lcom/google/crypto/tink/shaded/protobuf/ListFieldSchema$1;)V +HSPLcom/google/crypto/tink/shaded/protobuf/ListFieldSchema$ListFieldSchemaLite;->getProtobufList(Ljava/lang/Object;J)Lcom/google/crypto/tink/shaded/protobuf/Internal$ProtobufList; +HSPLcom/google/crypto/tink/shaded/protobuf/ListFieldSchema$ListFieldSchemaLite;->makeImmutableListAt(Ljava/lang/Object;J)V +HSPLcom/google/crypto/tink/shaded/protobuf/ListFieldSchema$ListFieldSchemaLite;->mergeListsAt(Ljava/lang/Object;Ljava/lang/Object;J)V +HSPLcom/google/crypto/tink/shaded/protobuf/ListFieldSchema$ListFieldSchemaLite;->mutableListAt(Ljava/lang/Object;J)Ljava/util/List; +Lcom/google/crypto/tink/shaded/protobuf/ManifestSchemaFactory; +HSPLcom/google/crypto/tink/shaded/protobuf/ManifestSchemaFactory;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/ManifestSchemaFactory;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/ManifestSchemaFactory;->(Lcom/google/crypto/tink/shaded/protobuf/MessageInfoFactory;)V +HSPLcom/google/crypto/tink/shaded/protobuf/ManifestSchemaFactory;->createSchema(Ljava/lang/Class;)Lcom/google/crypto/tink/shaded/protobuf/Schema; +HSPLcom/google/crypto/tink/shaded/protobuf/ManifestSchemaFactory;->getDefaultMessageInfoFactory()Lcom/google/crypto/tink/shaded/protobuf/MessageInfoFactory; +HSPLcom/google/crypto/tink/shaded/protobuf/ManifestSchemaFactory;->getDescriptorMessageInfoFactory()Lcom/google/crypto/tink/shaded/protobuf/MessageInfoFactory; +HSPLcom/google/crypto/tink/shaded/protobuf/ManifestSchemaFactory;->isProto2(Lcom/google/crypto/tink/shaded/protobuf/MessageInfo;)Z +HSPLcom/google/crypto/tink/shaded/protobuf/ManifestSchemaFactory;->newSchema(Ljava/lang/Class;Lcom/google/crypto/tink/shaded/protobuf/MessageInfo;)Lcom/google/crypto/tink/shaded/protobuf/Schema; +Lcom/google/crypto/tink/shaded/protobuf/ManifestSchemaFactory$1; +HSPLcom/google/crypto/tink/shaded/protobuf/ManifestSchemaFactory$1;->()V +Lcom/google/crypto/tink/shaded/protobuf/ManifestSchemaFactory$CompositeMessageInfoFactory; +HSPLcom/google/crypto/tink/shaded/protobuf/ManifestSchemaFactory$CompositeMessageInfoFactory;->([Lcom/google/crypto/tink/shaded/protobuf/MessageInfoFactory;)V +HSPLcom/google/crypto/tink/shaded/protobuf/ManifestSchemaFactory$CompositeMessageInfoFactory;->messageInfoFor(Ljava/lang/Class;)Lcom/google/crypto/tink/shaded/protobuf/MessageInfo; +Lcom/google/crypto/tink/shaded/protobuf/MapFieldSchema; +Lcom/google/crypto/tink/shaded/protobuf/MapFieldSchemaLite; +HSPLcom/google/crypto/tink/shaded/protobuf/MapFieldSchemaLite;->()V +Lcom/google/crypto/tink/shaded/protobuf/MapFieldSchemas; +HSPLcom/google/crypto/tink/shaded/protobuf/MapFieldSchemas;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/MapFieldSchemas;->lite()Lcom/google/crypto/tink/shaded/protobuf/MapFieldSchema; +HSPLcom/google/crypto/tink/shaded/protobuf/MapFieldSchemas;->loadSchemaForFullRuntime()Lcom/google/crypto/tink/shaded/protobuf/MapFieldSchema; +Lcom/google/crypto/tink/shaded/protobuf/MessageInfo; +Lcom/google/crypto/tink/shaded/protobuf/MessageInfoFactory; +Lcom/google/crypto/tink/shaded/protobuf/MessageLite; +Lcom/google/crypto/tink/shaded/protobuf/MessageLite$Builder; +Lcom/google/crypto/tink/shaded/protobuf/MessageLiteOrBuilder; +Lcom/google/crypto/tink/shaded/protobuf/MessageSchema; +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->([I[Ljava/lang/Object;IILcom/google/crypto/tink/shaded/protobuf/MessageLite;ZZ[IIILcom/google/crypto/tink/shaded/protobuf/NewInstanceSchema;Lcom/google/crypto/tink/shaded/protobuf/ListFieldSchema;Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSchema;Lcom/google/crypto/tink/shaded/protobuf/ExtensionSchema;Lcom/google/crypto/tink/shaded/protobuf/MapFieldSchema;)V +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->arePresentForEquals(Ljava/lang/Object;Ljava/lang/Object;I)Z +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->checkMutable(Ljava/lang/Object;)V +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->equals(Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->equals(Ljava/lang/Object;Ljava/lang/Object;I)Z +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->getEnumFieldVerifier(I)Lcom/google/crypto/tink/shaded/protobuf/Internal$EnumVerifier; +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->getMessageFieldSchema(I)Lcom/google/crypto/tink/shaded/protobuf/Schema; +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->getSerializedSize(Ljava/lang/Object;)I +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->getSerializedSizeProto3(Ljava/lang/Object;)I +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->getUnknownFieldsSerializedSize(Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSchema;Ljava/lang/Object;)I +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->intAt(Ljava/lang/Object;J)I +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->isEnforceUtf8(I)Z +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->isFieldPresent(Ljava/lang/Object;I)Z +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->isMutable(Ljava/lang/Object;)Z +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->listAt(Ljava/lang/Object;J)Ljava/util/List; +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->makeImmutable(Ljava/lang/Object;)V +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->mergeFrom(Ljava/lang/Object;Lcom/google/crypto/tink/shaded/protobuf/Reader;Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)V +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->mergeFrom(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->mergeFrom(Ljava/lang/Object;[BIILcom/google/crypto/tink/shaded/protobuf/ArrayDecoders$Registers;)V +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->mergeFromHelper(Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSchema;Lcom/google/crypto/tink/shaded/protobuf/ExtensionSchema;Ljava/lang/Object;Lcom/google/crypto/tink/shaded/protobuf/Reader;Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)V +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->mergeSingleField(Ljava/lang/Object;Ljava/lang/Object;I)V +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->mutableMessageFieldForMerge(Ljava/lang/Object;I)Ljava/lang/Object; +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->newInstance()Ljava/lang/Object; +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->newSchema(Ljava/lang/Class;Lcom/google/crypto/tink/shaded/protobuf/MessageInfo;Lcom/google/crypto/tink/shaded/protobuf/NewInstanceSchema;Lcom/google/crypto/tink/shaded/protobuf/ListFieldSchema;Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSchema;Lcom/google/crypto/tink/shaded/protobuf/ExtensionSchema;Lcom/google/crypto/tink/shaded/protobuf/MapFieldSchema;)Lcom/google/crypto/tink/shaded/protobuf/MessageSchema; +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->newSchemaForRawMessageInfo(Lcom/google/crypto/tink/shaded/protobuf/RawMessageInfo;Lcom/google/crypto/tink/shaded/protobuf/NewInstanceSchema;Lcom/google/crypto/tink/shaded/protobuf/ListFieldSchema;Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSchema;Lcom/google/crypto/tink/shaded/protobuf/ExtensionSchema;Lcom/google/crypto/tink/shaded/protobuf/MapFieldSchema;)Lcom/google/crypto/tink/shaded/protobuf/MessageSchema; +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->numberAt(I)I +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->offset(I)J +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->parseProto3Message(Ljava/lang/Object;[BIILcom/google/crypto/tink/shaded/protobuf/ArrayDecoders$Registers;)I +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->positionForFieldNumber(I)I +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->positionForFieldNumber(II)I +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->presenceMaskAndOffsetAt(I)I +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->readMessageList(Ljava/lang/Object;ILcom/google/crypto/tink/shaded/protobuf/Reader;Lcom/google/crypto/tink/shaded/protobuf/Schema;Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)V +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->readString(Ljava/lang/Object;ILcom/google/crypto/tink/shaded/protobuf/Reader;)V +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->reflectField(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/reflect/Field; +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->setFieldPresent(Ljava/lang/Object;I)V +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->slowPositionForFieldNumber(II)I +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->storeMessageField(Ljava/lang/Object;ILjava/lang/Object;)V +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->type(I)I +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->typeAndOffsetAt(I)I +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->writeFieldsInAscendingOrderProto3(Ljava/lang/Object;Lcom/google/crypto/tink/shaded/protobuf/Writer;)V +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->writeString(ILjava/lang/Object;Lcom/google/crypto/tink/shaded/protobuf/Writer;)V +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->writeTo(Ljava/lang/Object;Lcom/google/crypto/tink/shaded/protobuf/Writer;)V +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->writeUnknownInMessageTo(Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSchema;Ljava/lang/Object;Lcom/google/crypto/tink/shaded/protobuf/Writer;)V +Lcom/google/crypto/tink/shaded/protobuf/NewInstanceSchema; +Lcom/google/crypto/tink/shaded/protobuf/NewInstanceSchemaLite; +HSPLcom/google/crypto/tink/shaded/protobuf/NewInstanceSchemaLite;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/NewInstanceSchemaLite;->newInstance(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/google/crypto/tink/shaded/protobuf/NewInstanceSchemas; +HSPLcom/google/crypto/tink/shaded/protobuf/NewInstanceSchemas;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/NewInstanceSchemas;->lite()Lcom/google/crypto/tink/shaded/protobuf/NewInstanceSchema; +HSPLcom/google/crypto/tink/shaded/protobuf/NewInstanceSchemas;->loadSchemaForFullRuntime()Lcom/google/crypto/tink/shaded/protobuf/NewInstanceSchema; +Lcom/google/crypto/tink/shaded/protobuf/ProtoSyntax; +HSPLcom/google/crypto/tink/shaded/protobuf/ProtoSyntax;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/ProtoSyntax;->(Ljava/lang/String;I)V +Lcom/google/crypto/tink/shaded/protobuf/Protobuf; +HSPLcom/google/crypto/tink/shaded/protobuf/Protobuf;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/Protobuf;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/Protobuf;->getInstance()Lcom/google/crypto/tink/shaded/protobuf/Protobuf; +HSPLcom/google/crypto/tink/shaded/protobuf/Protobuf;->registerSchema(Ljava/lang/Class;Lcom/google/crypto/tink/shaded/protobuf/Schema;)Lcom/google/crypto/tink/shaded/protobuf/Schema; +HSPLcom/google/crypto/tink/shaded/protobuf/Protobuf;->schemaFor(Ljava/lang/Class;)Lcom/google/crypto/tink/shaded/protobuf/Schema; +HSPLcom/google/crypto/tink/shaded/protobuf/Protobuf;->schemaFor(Ljava/lang/Object;)Lcom/google/crypto/tink/shaded/protobuf/Schema; +Lcom/google/crypto/tink/shaded/protobuf/ProtobufArrayList; +HSPLcom/google/crypto/tink/shaded/protobuf/ProtobufArrayList;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/ProtobufArrayList;->([Ljava/lang/Object;I)V +HSPLcom/google/crypto/tink/shaded/protobuf/ProtobufArrayList;->add(Ljava/lang/Object;)Z +HSPLcom/google/crypto/tink/shaded/protobuf/ProtobufArrayList;->emptyList()Lcom/google/crypto/tink/shaded/protobuf/ProtobufArrayList; +HSPLcom/google/crypto/tink/shaded/protobuf/ProtobufArrayList;->ensureIndexInRange(I)V +HSPLcom/google/crypto/tink/shaded/protobuf/ProtobufArrayList;->get(I)Ljava/lang/Object; +HSPLcom/google/crypto/tink/shaded/protobuf/ProtobufArrayList;->mutableCopyWithCapacity(I)Lcom/google/crypto/tink/shaded/protobuf/Internal$ProtobufList; +HSPLcom/google/crypto/tink/shaded/protobuf/ProtobufArrayList;->mutableCopyWithCapacity(I)Lcom/google/crypto/tink/shaded/protobuf/ProtobufArrayList; +HSPLcom/google/crypto/tink/shaded/protobuf/ProtobufArrayList;->size()I +Lcom/google/crypto/tink/shaded/protobuf/RawMessageInfo; +HSPLcom/google/crypto/tink/shaded/protobuf/RawMessageInfo;->(Lcom/google/crypto/tink/shaded/protobuf/MessageLite;Ljava/lang/String;[Ljava/lang/Object;)V +HSPLcom/google/crypto/tink/shaded/protobuf/RawMessageInfo;->getDefaultInstance()Lcom/google/crypto/tink/shaded/protobuf/MessageLite; +HSPLcom/google/crypto/tink/shaded/protobuf/RawMessageInfo;->getObjects()[Ljava/lang/Object; +HSPLcom/google/crypto/tink/shaded/protobuf/RawMessageInfo;->getStringInfo()Ljava/lang/String; +HSPLcom/google/crypto/tink/shaded/protobuf/RawMessageInfo;->getSyntax()Lcom/google/crypto/tink/shaded/protobuf/ProtoSyntax; +HSPLcom/google/crypto/tink/shaded/protobuf/RawMessageInfo;->isMessageSetWireFormat()Z +Lcom/google/crypto/tink/shaded/protobuf/Reader; +Lcom/google/crypto/tink/shaded/protobuf/Schema; +Lcom/google/crypto/tink/shaded/protobuf/SchemaFactory; +Lcom/google/crypto/tink/shaded/protobuf/SchemaUtil; +HSPLcom/google/crypto/tink/shaded/protobuf/SchemaUtil;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/SchemaUtil;->computeSizeMessage(ILjava/lang/Object;Lcom/google/crypto/tink/shaded/protobuf/Schema;)I +HSPLcom/google/crypto/tink/shaded/protobuf/SchemaUtil;->computeSizeMessageList(ILjava/util/List;Lcom/google/crypto/tink/shaded/protobuf/Schema;)I +HSPLcom/google/crypto/tink/shaded/protobuf/SchemaUtil;->getGeneratedMessageClass()Ljava/lang/Class; +HSPLcom/google/crypto/tink/shaded/protobuf/SchemaUtil;->getUnknownFieldSetSchema(Z)Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSchema; +HSPLcom/google/crypto/tink/shaded/protobuf/SchemaUtil;->getUnknownFieldSetSchemaClass()Ljava/lang/Class; +HSPLcom/google/crypto/tink/shaded/protobuf/SchemaUtil;->mergeUnknownFields(Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSchema;Ljava/lang/Object;Ljava/lang/Object;)V +HSPLcom/google/crypto/tink/shaded/protobuf/SchemaUtil;->requireGeneratedMessage(Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/shaded/protobuf/SchemaUtil;->safeEquals(Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLcom/google/crypto/tink/shaded/protobuf/SchemaUtil;->unknownFieldSetLiteSchema()Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSchema; +HSPLcom/google/crypto/tink/shaded/protobuf/SchemaUtil;->writeMessageList(ILjava/util/List;Lcom/google/crypto/tink/shaded/protobuf/Writer;Lcom/google/crypto/tink/shaded/protobuf/Schema;)V +Lcom/google/crypto/tink/shaded/protobuf/UninitializedMessageException; +Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSchema; +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSchema;->()V +Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLite; +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLite;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLite;->(I[I[Ljava/lang/Object;Z)V +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLite;->equals(Ljava/lang/Object;)Z +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLite;->getDefaultInstance()Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLite; +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLite;->getSerializedSize()I +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLite;->makeImmutable()V +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLite;->writeTo(Lcom/google/crypto/tink/shaded/protobuf/Writer;)V +Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLiteSchema; +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLiteSchema;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLiteSchema;->getFromMessage(Ljava/lang/Object;)Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLite; +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLiteSchema;->getFromMessage(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLiteSchema;->getSerializedSize(Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLite;)I +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLiteSchema;->getSerializedSize(Ljava/lang/Object;)I +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLiteSchema;->makeImmutable(Ljava/lang/Object;)V +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLiteSchema;->merge(Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLite;Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLite;)Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLite; +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLiteSchema;->merge(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLiteSchema;->setToMessage(Ljava/lang/Object;Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLite;)V +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLiteSchema;->setToMessage(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLiteSchema;->writeTo(Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLite;Lcom/google/crypto/tink/shaded/protobuf/Writer;)V +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLiteSchema;->writeTo(Ljava/lang/Object;Lcom/google/crypto/tink/shaded/protobuf/Writer;)V +Lcom/google/crypto/tink/shaded/protobuf/UnsafeUtil; +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->arrayBaseOffset(Ljava/lang/Class;)I +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->arrayIndexScale(Ljava/lang/Class;)I +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->bufferAddressField()Ljava/lang/reflect/Field; +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->determineAndroidSupportByAddressSize(Ljava/lang/Class;)Z +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->field(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/reflect/Field; +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->fieldOffset(Ljava/lang/reflect/Field;)J +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->getInt(Ljava/lang/Object;J)I +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->getMemoryAccessor()Lcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$MemoryAccessor; +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->getUnsafe()Lsun/misc/Unsafe; +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->hasUnsafeArrayOperations()Z +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->hasUnsafeByteBufferOperations()Z +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->putInt(Ljava/lang/Object;JI)V +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->supportsUnsafeArrayOperations()Z +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->supportsUnsafeByteBufferOperations()Z +Lcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$1; +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$1;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$1;->run()Ljava/lang/Object; +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$1;->run()Lsun/misc/Unsafe; +Lcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$Android64MemoryAccessor; +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$Android64MemoryAccessor;->(Lsun/misc/Unsafe;)V +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$Android64MemoryAccessor;->supportsUnsafeByteBufferOperations()Z +Lcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$MemoryAccessor; +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$MemoryAccessor;->(Lsun/misc/Unsafe;)V +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$MemoryAccessor;->arrayBaseOffset(Ljava/lang/Class;)I +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$MemoryAccessor;->arrayIndexScale(Ljava/lang/Class;)I +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$MemoryAccessor;->getInt(Ljava/lang/Object;J)I +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$MemoryAccessor;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$MemoryAccessor;->objectFieldOffset(Ljava/lang/reflect/Field;)J +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$MemoryAccessor;->putInt(Ljava/lang/Object;JI)V +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$MemoryAccessor;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$MemoryAccessor;->supportsUnsafeArrayOperations()Z +Lcom/google/crypto/tink/shaded/protobuf/Utf8; +HSPLcom/google/crypto/tink/shaded/protobuf/Utf8;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/Utf8;->decodeUtf8([BII)Ljava/lang/String; +HSPLcom/google/crypto/tink/shaded/protobuf/Utf8;->encode(Ljava/lang/CharSequence;[BII)I +HSPLcom/google/crypto/tink/shaded/protobuf/Utf8;->encodedLength(Ljava/lang/CharSequence;)I +Lcom/google/crypto/tink/shaded/protobuf/Utf8$DecodeUtil; +HSPLcom/google/crypto/tink/shaded/protobuf/Utf8$DecodeUtil;->access$400(B)Z +HSPLcom/google/crypto/tink/shaded/protobuf/Utf8$DecodeUtil;->access$500(B[CI)V +HSPLcom/google/crypto/tink/shaded/protobuf/Utf8$DecodeUtil;->handleOneByte(B[CI)V +HSPLcom/google/crypto/tink/shaded/protobuf/Utf8$DecodeUtil;->isOneByte(B)Z +Lcom/google/crypto/tink/shaded/protobuf/Utf8$Processor; +HSPLcom/google/crypto/tink/shaded/protobuf/Utf8$Processor;->()V +Lcom/google/crypto/tink/shaded/protobuf/Utf8$SafeProcessor; +HSPLcom/google/crypto/tink/shaded/protobuf/Utf8$SafeProcessor;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/Utf8$SafeProcessor;->decodeUtf8([BII)Ljava/lang/String; +HSPLcom/google/crypto/tink/shaded/protobuf/Utf8$SafeProcessor;->encodeUtf8(Ljava/lang/CharSequence;[BII)I +Lcom/google/crypto/tink/shaded/protobuf/Utf8$UnpairedSurrogateException; +Lcom/google/crypto/tink/shaded/protobuf/Utf8$UnsafeProcessor; +HSPLcom/google/crypto/tink/shaded/protobuf/Utf8$UnsafeProcessor;->isAvailable()Z +Lcom/google/crypto/tink/shaded/protobuf/WireFormat; +HSPLcom/google/crypto/tink/shaded/protobuf/WireFormat;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/WireFormat;->getTagFieldNumber(I)I +HSPLcom/google/crypto/tink/shaded/protobuf/WireFormat;->getTagWireType(I)I +HSPLcom/google/crypto/tink/shaded/protobuf/WireFormat;->makeTag(II)I +Lcom/google/crypto/tink/shaded/protobuf/Writer; +Lcom/google/crypto/tink/shaded/protobuf/Writer$FieldOrder; +HSPLcom/google/crypto/tink/shaded/protobuf/Writer$FieldOrder;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/Writer$FieldOrder;->(Ljava/lang/String;I)V +Lcom/google/crypto/tink/subtle/AesGcmJce; +HSPLcom/google/crypto/tink/subtle/AesGcmJce;->()V +HSPLcom/google/crypto/tink/subtle/AesGcmJce;->([B)V +HSPLcom/google/crypto/tink/subtle/AesGcmJce;->decrypt([B[B)[B +HSPLcom/google/crypto/tink/subtle/AesGcmJce;->encrypt([B[B)[B +Lcom/google/crypto/tink/subtle/AesSiv; +HSPLcom/google/crypto/tink/subtle/AesSiv;->()V +HSPLcom/google/crypto/tink/subtle/AesSiv;->([B)V +HSPLcom/google/crypto/tink/subtle/AesSiv;->encryptDeterministically([B[B)[B +HSPLcom/google/crypto/tink/subtle/AesSiv;->s2v([[B)[B +Lcom/google/crypto/tink/subtle/Base64; +HSPLcom/google/crypto/tink/subtle/Base64;->()V +HSPLcom/google/crypto/tink/subtle/Base64;->decode(Ljava/lang/String;I)[B +HSPLcom/google/crypto/tink/subtle/Base64;->decode([BI)[B +HSPLcom/google/crypto/tink/subtle/Base64;->decode([BIII)[B +HSPLcom/google/crypto/tink/subtle/Base64;->encode([B)Ljava/lang/String; +HSPLcom/google/crypto/tink/subtle/Base64;->encode([BI)[B +HSPLcom/google/crypto/tink/subtle/Base64;->encode([BIII)[B +HSPLcom/google/crypto/tink/subtle/Base64;->encodeToString([BI)Ljava/lang/String; +Lcom/google/crypto/tink/subtle/Base64$Coder; +HSPLcom/google/crypto/tink/subtle/Base64$Coder;->()V +Lcom/google/crypto/tink/subtle/Base64$Decoder; +HSPLcom/google/crypto/tink/subtle/Base64$Decoder;->()V +PLcom/google/crypto/tink/subtle/Base64$Decoder;->(I[B)V +HSPLcom/google/crypto/tink/subtle/Base64$Decoder;->process([BIIZ)Z +Lcom/google/crypto/tink/subtle/Base64$Encoder; +HSPLcom/google/crypto/tink/subtle/Base64$Encoder;->()V +HSPLcom/google/crypto/tink/subtle/Base64$Encoder;->(I[B)V +HSPLcom/google/crypto/tink/subtle/Base64$Encoder;->process([BIIZ)Z +Lcom/google/crypto/tink/subtle/Bytes; +HSPLcom/google/crypto/tink/subtle/Bytes;->concat([[B)[B +HSPLcom/google/crypto/tink/subtle/Bytes;->xor([BI[BII)[B +HSPLcom/google/crypto/tink/subtle/Bytes;->xor([B[B)[B +HSPLcom/google/crypto/tink/subtle/Bytes;->xorEnd([B[B)[B +Lcom/google/crypto/tink/subtle/EngineFactory; +HSPLcom/google/crypto/tink/subtle/EngineFactory;->()V +HSPLcom/google/crypto/tink/subtle/EngineFactory;->(Lcom/google/crypto/tink/subtle/EngineWrapper;)V +HSPLcom/google/crypto/tink/subtle/EngineFactory;->getInstance(Ljava/lang/String;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/subtle/EngineFactory;->toProviderList([Ljava/lang/String;)Ljava/util/List; +Lcom/google/crypto/tink/subtle/EngineFactory$AndroidPolicy; +HSPLcom/google/crypto/tink/subtle/EngineFactory$AndroidPolicy;->(Lcom/google/crypto/tink/subtle/EngineWrapper;)V +HSPLcom/google/crypto/tink/subtle/EngineFactory$AndroidPolicy;->(Lcom/google/crypto/tink/subtle/EngineWrapper;Lcom/google/crypto/tink/subtle/EngineFactory$1;)V +HSPLcom/google/crypto/tink/subtle/EngineFactory$AndroidPolicy;->getInstance(Ljava/lang/String;)Ljava/lang/Object; +Lcom/google/crypto/tink/subtle/EngineFactory$Policy; +Lcom/google/crypto/tink/subtle/EngineWrapper; +Lcom/google/crypto/tink/subtle/EngineWrapper$TCipher; +HSPLcom/google/crypto/tink/subtle/EngineWrapper$TCipher;->()V +HSPLcom/google/crypto/tink/subtle/EngineWrapper$TCipher;->getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/subtle/EngineWrapper$TCipher;->getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljavax/crypto/Cipher; +Lcom/google/crypto/tink/subtle/EngineWrapper$TKeyAgreement; +HSPLcom/google/crypto/tink/subtle/EngineWrapper$TKeyAgreement;->()V +Lcom/google/crypto/tink/subtle/EngineWrapper$TKeyFactory; +HSPLcom/google/crypto/tink/subtle/EngineWrapper$TKeyFactory;->()V +Lcom/google/crypto/tink/subtle/EngineWrapper$TKeyPairGenerator; +HSPLcom/google/crypto/tink/subtle/EngineWrapper$TKeyPairGenerator;->()V +Lcom/google/crypto/tink/subtle/EngineWrapper$TMac; +HSPLcom/google/crypto/tink/subtle/EngineWrapper$TMac;->()V +Lcom/google/crypto/tink/subtle/EngineWrapper$TMessageDigest; +HSPLcom/google/crypto/tink/subtle/EngineWrapper$TMessageDigest;->()V +Lcom/google/crypto/tink/subtle/EngineWrapper$TSignature; +HSPLcom/google/crypto/tink/subtle/EngineWrapper$TSignature;->()V +Lcom/google/crypto/tink/subtle/Hex; +HSPLcom/google/crypto/tink/subtle/Hex;->decode(Ljava/lang/String;)[B +HSPLcom/google/crypto/tink/subtle/Hex;->encode([B)Ljava/lang/String; +Lcom/google/crypto/tink/subtle/PrfAesCmac; +HSPLcom/google/crypto/tink/subtle/PrfAesCmac;->()V +HSPLcom/google/crypto/tink/subtle/PrfAesCmac;->([B)V +HSPLcom/google/crypto/tink/subtle/PrfAesCmac;->compute([BI)[B +HSPLcom/google/crypto/tink/subtle/PrfAesCmac;->generateSubKeys()V +HSPLcom/google/crypto/tink/subtle/PrfAesCmac;->instance()Ljavax/crypto/Cipher; +Lcom/google/crypto/tink/subtle/Random; +HSPLcom/google/crypto/tink/subtle/Random;->()V +HSPLcom/google/crypto/tink/subtle/Random;->access$000()Ljava/security/SecureRandom; +HSPLcom/google/crypto/tink/subtle/Random;->newDefaultSecureRandom()Ljava/security/SecureRandom; +HSPLcom/google/crypto/tink/subtle/Random;->randBytes(I)[B +Lcom/google/crypto/tink/subtle/Random$1; +HSPLcom/google/crypto/tink/subtle/Random$1;->()V +HSPLcom/google/crypto/tink/subtle/Random$1;->initialValue()Ljava/lang/Object; +HSPLcom/google/crypto/tink/subtle/Random$1;->initialValue()Ljava/security/SecureRandom; +Lcom/google/crypto/tink/subtle/SubtleUtil; +HSPLcom/google/crypto/tink/subtle/SubtleUtil;->androidApiLevel()I +HSPLcom/google/crypto/tink/subtle/SubtleUtil;->isAndroid()Z +Lcom/google/crypto/tink/subtle/Validators; +HSPLcom/google/crypto/tink/subtle/Validators;->()V +HSPLcom/google/crypto/tink/subtle/Validators;->validateAesKeySize(I)V +HSPLcom/google/crypto/tink/subtle/Validators;->validateKmsKeyUriAndRemovePrefix(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLcom/google/crypto/tink/subtle/Validators;->validateVersion(II)V +Lcom/google/crypto/tink/util/Bytes; +HSPLcom/google/crypto/tink/util/Bytes;->([BII)V +HSPLcom/google/crypto/tink/util/Bytes;->copyFrom([B)Lcom/google/crypto/tink/util/Bytes; +HSPLcom/google/crypto/tink/util/Bytes;->copyFrom([BII)Lcom/google/crypto/tink/util/Bytes; +HSPLcom/google/crypto/tink/util/Bytes;->equals(Ljava/lang/Object;)Z +HSPLcom/google/crypto/tink/util/Bytes;->hashCode()I +HSPLcom/google/crypto/tink/util/Bytes;->size()I +Lcom/google/crypto/tink/util/SecretBytes; +HSPLcom/google/crypto/tink/util/SecretBytes;->(Lcom/google/crypto/tink/util/Bytes;)V +HSPLcom/google/crypto/tink/util/SecretBytes;->copyFrom([BLcom/google/crypto/tink/SecretKeyAccess;)Lcom/google/crypto/tink/util/SecretBytes; +HSPLcom/google/crypto/tink/util/SecretBytes;->size()I +Lcom/google/firebase/AutoValue_StartupTime; +HSPLcom/google/firebase/AutoValue_StartupTime;->(JJJ)V +Lcom/google/firebase/DataCollectionDefaultChange; +Lcom/google/firebase/FirebaseApp; +HSPLcom/google/firebase/FirebaseApp;->()V +HSPLcom/google/firebase/FirebaseApp;->(Landroid/content/Context;Ljava/lang/String;Lcom/google/firebase/FirebaseOptions;)V +HSPLcom/google/firebase/FirebaseApp;->addBackgroundStateChangeListener(Lcom/google/firebase/FirebaseApp$BackgroundStateChangeListener;)V +HSPLcom/google/firebase/FirebaseApp;->checkNotDeleted()V +HSPLcom/google/firebase/FirebaseApp;->get(Ljava/lang/Class;)Ljava/lang/Object; +HSPLcom/google/firebase/FirebaseApp;->getApplicationContext()Landroid/content/Context; +HSPLcom/google/firebase/FirebaseApp;->getInstance()Lcom/google/firebase/FirebaseApp; +HSPLcom/google/firebase/FirebaseApp;->getName()Ljava/lang/String; +HSPLcom/google/firebase/FirebaseApp;->getOptions()Lcom/google/firebase/FirebaseOptions; +HSPLcom/google/firebase/FirebaseApp;->getPersistenceKey()Ljava/lang/String; +HSPLcom/google/firebase/FirebaseApp;->initializeAllApis()V +HSPLcom/google/firebase/FirebaseApp;->initializeApp(Landroid/content/Context;)Lcom/google/firebase/FirebaseApp; +HSPLcom/google/firebase/FirebaseApp;->initializeApp(Landroid/content/Context;Lcom/google/firebase/FirebaseOptions;)Lcom/google/firebase/FirebaseApp; +HSPLcom/google/firebase/FirebaseApp;->initializeApp(Landroid/content/Context;Lcom/google/firebase/FirebaseOptions;Ljava/lang/String;)Lcom/google/firebase/FirebaseApp; +HSPLcom/google/firebase/FirebaseApp;->isDataCollectionDefaultEnabled()Z +HSPLcom/google/firebase/FirebaseApp;->isDefaultApp()Z +HSPLcom/google/firebase/FirebaseApp;->lambda$new$0$com-google-firebase-FirebaseApp(Landroid/content/Context;)Lcom/google/firebase/internal/DataCollectionConfigStorage; +HSPLcom/google/firebase/FirebaseApp;->normalize(Ljava/lang/String;)Ljava/lang/String; +Lcom/google/firebase/FirebaseApp$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/FirebaseApp$$ExternalSyntheticLambda0;->(Lcom/google/firebase/FirebaseApp;Landroid/content/Context;)V +HSPLcom/google/firebase/FirebaseApp$$ExternalSyntheticLambda0;->get()Ljava/lang/Object; +Lcom/google/firebase/FirebaseApp$$ExternalSyntheticLambda1; +HSPLcom/google/firebase/FirebaseApp$$ExternalSyntheticLambda1;->(Lcom/google/firebase/FirebaseApp;)V +Lcom/google/firebase/FirebaseApp$BackgroundStateChangeListener; +Lcom/google/firebase/FirebaseApp$GlobalBackgroundStateListener; +HSPLcom/google/firebase/FirebaseApp$GlobalBackgroundStateListener;->()V +HSPLcom/google/firebase/FirebaseApp$GlobalBackgroundStateListener;->()V +HSPLcom/google/firebase/FirebaseApp$GlobalBackgroundStateListener;->access$000(Landroid/content/Context;)V +HSPLcom/google/firebase/FirebaseApp$GlobalBackgroundStateListener;->ensureBackgroundStateListenerRegistered(Landroid/content/Context;)V +Lcom/google/firebase/FirebaseCommonKtxRegistrar; +HSPLcom/google/firebase/FirebaseCommonKtxRegistrar;->()V +HSPLcom/google/firebase/FirebaseCommonKtxRegistrar;->getComponents()Ljava/util/List; +Lcom/google/firebase/FirebaseCommonKtxRegistrar$getComponents$$inlined$coroutineDispatcher$1; +HSPLcom/google/firebase/FirebaseCommonKtxRegistrar$getComponents$$inlined$coroutineDispatcher$1;->()V +HSPLcom/google/firebase/FirebaseCommonKtxRegistrar$getComponents$$inlined$coroutineDispatcher$1;->()V +HSPLcom/google/firebase/FirebaseCommonKtxRegistrar$getComponents$$inlined$coroutineDispatcher$1;->create(Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +HSPLcom/google/firebase/FirebaseCommonKtxRegistrar$getComponents$$inlined$coroutineDispatcher$1;->create(Lcom/google/firebase/components/ComponentContainer;)Lkotlinx/coroutines/CoroutineDispatcher; +Lcom/google/firebase/FirebaseCommonKtxRegistrar$getComponents$$inlined$coroutineDispatcher$2; +HSPLcom/google/firebase/FirebaseCommonKtxRegistrar$getComponents$$inlined$coroutineDispatcher$2;->()V +HSPLcom/google/firebase/FirebaseCommonKtxRegistrar$getComponents$$inlined$coroutineDispatcher$2;->()V +Lcom/google/firebase/FirebaseCommonKtxRegistrar$getComponents$$inlined$coroutineDispatcher$3; +HSPLcom/google/firebase/FirebaseCommonKtxRegistrar$getComponents$$inlined$coroutineDispatcher$3;->()V +HSPLcom/google/firebase/FirebaseCommonKtxRegistrar$getComponents$$inlined$coroutineDispatcher$3;->()V +HSPLcom/google/firebase/FirebaseCommonKtxRegistrar$getComponents$$inlined$coroutineDispatcher$3;->create(Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +HSPLcom/google/firebase/FirebaseCommonKtxRegistrar$getComponents$$inlined$coroutineDispatcher$3;->create(Lcom/google/firebase/components/ComponentContainer;)Lkotlinx/coroutines/CoroutineDispatcher; +Lcom/google/firebase/FirebaseCommonKtxRegistrar$getComponents$$inlined$coroutineDispatcher$4; +HSPLcom/google/firebase/FirebaseCommonKtxRegistrar$getComponents$$inlined$coroutineDispatcher$4;->()V +HSPLcom/google/firebase/FirebaseCommonKtxRegistrar$getComponents$$inlined$coroutineDispatcher$4;->()V +Lcom/google/firebase/FirebaseCommonRegistrar; +HSPLcom/google/firebase/FirebaseCommonRegistrar;->()V +HSPLcom/google/firebase/FirebaseCommonRegistrar;->getComponents()Ljava/util/List; +HSPLcom/google/firebase/FirebaseCommonRegistrar;->lambda$getComponents$0(Landroid/content/Context;)Ljava/lang/String; +HSPLcom/google/firebase/FirebaseCommonRegistrar;->lambda$getComponents$1(Landroid/content/Context;)Ljava/lang/String; +HSPLcom/google/firebase/FirebaseCommonRegistrar;->lambda$getComponents$2(Landroid/content/Context;)Ljava/lang/String; +HSPLcom/google/firebase/FirebaseCommonRegistrar;->lambda$getComponents$3(Landroid/content/Context;)Ljava/lang/String; +HSPLcom/google/firebase/FirebaseCommonRegistrar;->safeValue(Ljava/lang/String;)Ljava/lang/String; +Lcom/google/firebase/FirebaseCommonRegistrar$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/FirebaseCommonRegistrar$$ExternalSyntheticLambda0;->()V +HSPLcom/google/firebase/FirebaseCommonRegistrar$$ExternalSyntheticLambda0;->extract(Ljava/lang/Object;)Ljava/lang/String; +Lcom/google/firebase/FirebaseCommonRegistrar$$ExternalSyntheticLambda1; +HSPLcom/google/firebase/FirebaseCommonRegistrar$$ExternalSyntheticLambda1;->()V +HSPLcom/google/firebase/FirebaseCommonRegistrar$$ExternalSyntheticLambda1;->extract(Ljava/lang/Object;)Ljava/lang/String; +Lcom/google/firebase/FirebaseCommonRegistrar$$ExternalSyntheticLambda2; +HSPLcom/google/firebase/FirebaseCommonRegistrar$$ExternalSyntheticLambda2;->()V +HSPLcom/google/firebase/FirebaseCommonRegistrar$$ExternalSyntheticLambda2;->extract(Ljava/lang/Object;)Ljava/lang/String; +Lcom/google/firebase/FirebaseCommonRegistrar$$ExternalSyntheticLambda3; +HSPLcom/google/firebase/FirebaseCommonRegistrar$$ExternalSyntheticLambda3;->()V +HSPLcom/google/firebase/FirebaseCommonRegistrar$$ExternalSyntheticLambda3;->extract(Ljava/lang/Object;)Ljava/lang/String; +Lcom/google/firebase/FirebaseException; +Lcom/google/firebase/FirebaseOptions; +HSPLcom/google/firebase/FirebaseOptions;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/google/firebase/FirebaseOptions;->fromResource(Landroid/content/Context;)Lcom/google/firebase/FirebaseOptions; +HSPLcom/google/firebase/FirebaseOptions;->getApplicationId()Ljava/lang/String; +Lcom/google/firebase/StartupTime; +HSPLcom/google/firebase/StartupTime;->()V +HSPLcom/google/firebase/StartupTime;->create(JJJ)Lcom/google/firebase/StartupTime; +HSPLcom/google/firebase/StartupTime;->now()Lcom/google/firebase/StartupTime; +Lcom/google/firebase/analytics/FirebaseAnalytics; +Lcom/google/firebase/analytics/connector/AnalyticsConnector; +Lcom/google/firebase/analytics/connector/AnalyticsConnector$AnalyticsConnectorHandle; +Lcom/google/firebase/analytics/connector/AnalyticsConnector$AnalyticsConnectorListener; +Lcom/google/firebase/analytics/connector/AnalyticsConnectorImpl; +HSPLcom/google/firebase/analytics/connector/AnalyticsConnectorImpl;->(Lcom/google/android/gms/measurement/api/AppMeasurementSdk;)V +HSPLcom/google/firebase/analytics/connector/AnalyticsConnectorImpl;->getInstance(Lcom/google/firebase/FirebaseApp;Landroid/content/Context;Lcom/google/firebase/events/Subscriber;)Lcom/google/firebase/analytics/connector/AnalyticsConnector; +HSPLcom/google/firebase/analytics/connector/AnalyticsConnectorImpl;->registerAnalyticsConnectorListener(Ljava/lang/String;Lcom/google/firebase/analytics/connector/AnalyticsConnector$AnalyticsConnectorListener;)Lcom/google/firebase/analytics/connector/AnalyticsConnector$AnalyticsConnectorHandle; +HSPLcom/google/firebase/analytics/connector/AnalyticsConnectorImpl;->zza(Ljava/lang/String;)Z +Lcom/google/firebase/analytics/connector/AnalyticsConnectorImpl$1; +HSPLcom/google/firebase/analytics/connector/AnalyticsConnectorImpl$1;->(Lcom/google/firebase/analytics/connector/AnalyticsConnectorImpl;Ljava/lang/String;)V +Lcom/google/firebase/analytics/connector/internal/AnalyticsConnectorRegistrar; +HSPLcom/google/firebase/analytics/connector/internal/AnalyticsConnectorRegistrar;->()V +HSPLcom/google/firebase/analytics/connector/internal/AnalyticsConnectorRegistrar;->getComponents()Ljava/util/List; +HSPLcom/google/firebase/analytics/connector/internal/AnalyticsConnectorRegistrar;->lambda$getComponents$0(Lcom/google/firebase/components/ComponentContainer;)Lcom/google/firebase/analytics/connector/AnalyticsConnector; +Lcom/google/firebase/analytics/connector/internal/zza; +Lcom/google/firebase/analytics/connector/internal/zzb; +HSPLcom/google/firebase/analytics/connector/internal/zzb;->()V +HSPLcom/google/firebase/analytics/connector/internal/zzb;->zzf(Ljava/lang/String;)Z +Lcom/google/firebase/analytics/connector/internal/zzc; +HSPLcom/google/firebase/analytics/connector/internal/zzc;->()V +HSPLcom/google/firebase/analytics/connector/internal/zzc;->()V +HSPLcom/google/firebase/analytics/connector/internal/zzc;->create(Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +Lcom/google/firebase/analytics/connector/internal/zzf; +HSPLcom/google/firebase/analytics/connector/internal/zzf;->(Lcom/google/firebase/analytics/connector/internal/zzg;)V +Lcom/google/firebase/analytics/connector/internal/zzg; +HSPLcom/google/firebase/analytics/connector/internal/zzg;->(Lcom/google/android/gms/measurement/api/AppMeasurementSdk;Lcom/google/firebase/analytics/connector/AnalyticsConnector$AnalyticsConnectorListener;)V +Lcom/google/firebase/analytics/connector/zza; +HSPLcom/google/firebase/analytics/connector/zza;->()V +HSPLcom/google/firebase/analytics/connector/zza;->()V +Lcom/google/firebase/analytics/connector/zzb; +HSPLcom/google/firebase/analytics/connector/zzb;->()V +HSPLcom/google/firebase/analytics/connector/zzb;->()V +Lcom/google/firebase/analytics/ktx/FirebaseAnalyticsLegacyRegistrar; +HSPLcom/google/firebase/analytics/ktx/FirebaseAnalyticsLegacyRegistrar;->()V +HSPLcom/google/firebase/analytics/ktx/FirebaseAnalyticsLegacyRegistrar;->getComponents()Ljava/util/List; +Lcom/google/firebase/annotations/concurrent/Background; +Lcom/google/firebase/annotations/concurrent/Blocking; +Lcom/google/firebase/annotations/concurrent/Lightweight; +Lcom/google/firebase/annotations/concurrent/UiThread; +Lcom/google/firebase/components/Component; +HSPLcom/google/firebase/components/Component;->(Ljava/lang/String;Ljava/util/Set;Ljava/util/Set;IILcom/google/firebase/components/ComponentFactory;Ljava/util/Set;)V +HSPLcom/google/firebase/components/Component;->(Ljava/lang/String;Ljava/util/Set;Ljava/util/Set;IILcom/google/firebase/components/ComponentFactory;Ljava/util/Set;Lcom/google/firebase/components/Component$1;)V +HSPLcom/google/firebase/components/Component;->builder(Lcom/google/firebase/components/Qualified;)Lcom/google/firebase/components/Component$Builder; +HSPLcom/google/firebase/components/Component;->builder(Lcom/google/firebase/components/Qualified;[Lcom/google/firebase/components/Qualified;)Lcom/google/firebase/components/Component$Builder; +HSPLcom/google/firebase/components/Component;->builder(Ljava/lang/Class;)Lcom/google/firebase/components/Component$Builder; +HSPLcom/google/firebase/components/Component;->builder(Ljava/lang/Class;[Ljava/lang/Class;)Lcom/google/firebase/components/Component$Builder; +HSPLcom/google/firebase/components/Component;->getDependencies()Ljava/util/Set; +HSPLcom/google/firebase/components/Component;->getFactory()Lcom/google/firebase/components/ComponentFactory; +HSPLcom/google/firebase/components/Component;->getName()Ljava/lang/String; +HSPLcom/google/firebase/components/Component;->getProvidedInterfaces()Ljava/util/Set; +HSPLcom/google/firebase/components/Component;->getPublishedEvents()Ljava/util/Set; +HSPLcom/google/firebase/components/Component;->intoSet(Ljava/lang/Object;Ljava/lang/Class;)Lcom/google/firebase/components/Component; +HSPLcom/google/firebase/components/Component;->intoSetBuilder(Ljava/lang/Class;)Lcom/google/firebase/components/Component$Builder; +HSPLcom/google/firebase/components/Component;->isAlwaysEager()Z +HSPLcom/google/firebase/components/Component;->isEagerInDefaultApp()Z +HSPLcom/google/firebase/components/Component;->isValue()Z +HSPLcom/google/firebase/components/Component;->lambda$intoSet$3(Ljava/lang/Object;Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +HSPLcom/google/firebase/components/Component;->lambda$of$1(Ljava/lang/Object;Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +HSPLcom/google/firebase/components/Component;->of(Ljava/lang/Object;Ljava/lang/Class;[Ljava/lang/Class;)Lcom/google/firebase/components/Component; +HSPLcom/google/firebase/components/Component;->withFactory(Lcom/google/firebase/components/ComponentFactory;)Lcom/google/firebase/components/Component; +Lcom/google/firebase/components/Component$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/components/Component$$ExternalSyntheticLambda0;->(Ljava/lang/Object;)V +HSPLcom/google/firebase/components/Component$$ExternalSyntheticLambda0;->create(Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +Lcom/google/firebase/components/Component$$ExternalSyntheticLambda1; +HSPLcom/google/firebase/components/Component$$ExternalSyntheticLambda1;->(Ljava/lang/Object;)V +HSPLcom/google/firebase/components/Component$$ExternalSyntheticLambda1;->create(Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +Lcom/google/firebase/components/Component$Builder; +HSPLcom/google/firebase/components/Component$Builder;->(Lcom/google/firebase/components/Qualified;[Lcom/google/firebase/components/Qualified;)V +HSPLcom/google/firebase/components/Component$Builder;->(Lcom/google/firebase/components/Qualified;[Lcom/google/firebase/components/Qualified;Lcom/google/firebase/components/Component$1;)V +HSPLcom/google/firebase/components/Component$Builder;->(Ljava/lang/Class;[Ljava/lang/Class;)V +HSPLcom/google/firebase/components/Component$Builder;->(Ljava/lang/Class;[Ljava/lang/Class;Lcom/google/firebase/components/Component$1;)V +HSPLcom/google/firebase/components/Component$Builder;->access$200(Lcom/google/firebase/components/Component$Builder;)Lcom/google/firebase/components/Component$Builder; +HSPLcom/google/firebase/components/Component$Builder;->add(Lcom/google/firebase/components/Dependency;)Lcom/google/firebase/components/Component$Builder; +HSPLcom/google/firebase/components/Component$Builder;->build()Lcom/google/firebase/components/Component; +HSPLcom/google/firebase/components/Component$Builder;->eagerInDefaultApp()Lcom/google/firebase/components/Component$Builder; +HSPLcom/google/firebase/components/Component$Builder;->factory(Lcom/google/firebase/components/ComponentFactory;)Lcom/google/firebase/components/Component$Builder; +HSPLcom/google/firebase/components/Component$Builder;->intoSet()Lcom/google/firebase/components/Component$Builder; +HSPLcom/google/firebase/components/Component$Builder;->name(Ljava/lang/String;)Lcom/google/firebase/components/Component$Builder; +HSPLcom/google/firebase/components/Component$Builder;->setInstantiation(I)Lcom/google/firebase/components/Component$Builder; +HSPLcom/google/firebase/components/Component$Builder;->validateInterface(Lcom/google/firebase/components/Qualified;)V +Lcom/google/firebase/components/ComponentContainer; +HSPLcom/google/firebase/components/ComponentContainer;->get(Lcom/google/firebase/components/Qualified;)Ljava/lang/Object; +HSPLcom/google/firebase/components/ComponentContainer;->get(Ljava/lang/Class;)Ljava/lang/Object; +HSPLcom/google/firebase/components/ComponentContainer;->getProvider(Ljava/lang/Class;)Lcom/google/firebase/inject/Provider; +HSPLcom/google/firebase/components/ComponentContainer;->setOf(Lcom/google/firebase/components/Qualified;)Ljava/util/Set; +HSPLcom/google/firebase/components/ComponentContainer;->setOf(Ljava/lang/Class;)Ljava/util/Set; +Lcom/google/firebase/components/ComponentDiscovery; +HSPLcom/google/firebase/components/ComponentDiscovery;->(Ljava/lang/Object;Lcom/google/firebase/components/ComponentDiscovery$RegistrarNameRetriever;)V +HSPLcom/google/firebase/components/ComponentDiscovery;->discoverLazy()Ljava/util/List; +HSPLcom/google/firebase/components/ComponentDiscovery;->forContext(Landroid/content/Context;Ljava/lang/Class;)Lcom/google/firebase/components/ComponentDiscovery; +HSPLcom/google/firebase/components/ComponentDiscovery;->instantiate(Ljava/lang/String;)Lcom/google/firebase/components/ComponentRegistrar; +HSPLcom/google/firebase/components/ComponentDiscovery;->lambda$discoverLazy$0(Ljava/lang/String;)Lcom/google/firebase/components/ComponentRegistrar; +Lcom/google/firebase/components/ComponentDiscovery$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/components/ComponentDiscovery$$ExternalSyntheticLambda0;->(Ljava/lang/String;)V +HSPLcom/google/firebase/components/ComponentDiscovery$$ExternalSyntheticLambda0;->get()Ljava/lang/Object; +Lcom/google/firebase/components/ComponentDiscovery$MetadataRegistrarNameRetriever; +HSPLcom/google/firebase/components/ComponentDiscovery$MetadataRegistrarNameRetriever;->(Ljava/lang/Class;)V +HSPLcom/google/firebase/components/ComponentDiscovery$MetadataRegistrarNameRetriever;->(Ljava/lang/Class;Lcom/google/firebase/components/ComponentDiscovery$1;)V +HSPLcom/google/firebase/components/ComponentDiscovery$MetadataRegistrarNameRetriever;->getMetadata(Landroid/content/Context;)Landroid/os/Bundle; +HSPLcom/google/firebase/components/ComponentDiscovery$MetadataRegistrarNameRetriever;->retrieve(Landroid/content/Context;)Ljava/util/List; +HSPLcom/google/firebase/components/ComponentDiscovery$MetadataRegistrarNameRetriever;->retrieve(Ljava/lang/Object;)Ljava/util/List; +Lcom/google/firebase/components/ComponentDiscovery$RegistrarNameRetriever; +Lcom/google/firebase/components/ComponentDiscoveryService; +Lcom/google/firebase/components/ComponentFactory; +Lcom/google/firebase/components/ComponentRegistrar; +Lcom/google/firebase/components/ComponentRegistrarProcessor; +HSPLcom/google/firebase/components/ComponentRegistrarProcessor;->()V +Lcom/google/firebase/components/ComponentRegistrarProcessor$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/components/ComponentRegistrarProcessor$$ExternalSyntheticLambda0;->()V +HSPLcom/google/firebase/components/ComponentRegistrarProcessor$$ExternalSyntheticLambda0;->processRegistrar(Lcom/google/firebase/components/ComponentRegistrar;)Ljava/util/List; +Lcom/google/firebase/components/ComponentRuntime; +HSPLcom/google/firebase/components/ComponentRuntime;->()V +HSPLcom/google/firebase/components/ComponentRuntime;->(Ljava/util/concurrent/Executor;Ljava/lang/Iterable;Ljava/util/Collection;Lcom/google/firebase/components/ComponentRegistrarProcessor;)V +HSPLcom/google/firebase/components/ComponentRuntime;->(Ljava/util/concurrent/Executor;Ljava/lang/Iterable;Ljava/util/Collection;Lcom/google/firebase/components/ComponentRegistrarProcessor;Lcom/google/firebase/components/ComponentRuntime$1;)V +HSPLcom/google/firebase/components/ComponentRuntime;->builder(Ljava/util/concurrent/Executor;)Lcom/google/firebase/components/ComponentRuntime$Builder; +HSPLcom/google/firebase/components/ComponentRuntime;->discoverComponents(Ljava/util/List;)V +HSPLcom/google/firebase/components/ComponentRuntime;->doInitializeEagerComponents(Ljava/util/Map;Z)V +HSPLcom/google/firebase/components/ComponentRuntime;->getDeferred(Lcom/google/firebase/components/Qualified;)Lcom/google/firebase/inject/Deferred; +HSPLcom/google/firebase/components/ComponentRuntime;->getProvider(Lcom/google/firebase/components/Qualified;)Lcom/google/firebase/inject/Provider; +HSPLcom/google/firebase/components/ComponentRuntime;->initializeEagerComponents(Z)V +HSPLcom/google/firebase/components/ComponentRuntime;->iterableToList(Ljava/lang/Iterable;)Ljava/util/List; +HSPLcom/google/firebase/components/ComponentRuntime;->lambda$discoverComponents$0$com-google-firebase-components-ComponentRuntime(Lcom/google/firebase/components/Component;)Ljava/lang/Object; +HSPLcom/google/firebase/components/ComponentRuntime;->maybeInitializeEagerComponents()V +HSPLcom/google/firebase/components/ComponentRuntime;->processDependencies()V +HSPLcom/google/firebase/components/ComponentRuntime;->processInstanceComponents(Ljava/util/List;)Ljava/util/List; +HSPLcom/google/firebase/components/ComponentRuntime;->processSetComponents()Ljava/util/List; +HSPLcom/google/firebase/components/ComponentRuntime;->setOfProvider(Lcom/google/firebase/components/Qualified;)Lcom/google/firebase/inject/Provider; +Lcom/google/firebase/components/ComponentRuntime$$ExternalSyntheticLambda1; +HSPLcom/google/firebase/components/ComponentRuntime$$ExternalSyntheticLambda1;->(Lcom/google/firebase/components/ComponentRuntime;Lcom/google/firebase/components/Component;)V +HSPLcom/google/firebase/components/ComponentRuntime$$ExternalSyntheticLambda1;->get()Ljava/lang/Object; +Lcom/google/firebase/components/ComponentRuntime$$ExternalSyntheticLambda4; +HSPLcom/google/firebase/components/ComponentRuntime$$ExternalSyntheticLambda4;->()V +Lcom/google/firebase/components/ComponentRuntime$Builder; +HSPLcom/google/firebase/components/ComponentRuntime$Builder;->(Ljava/util/concurrent/Executor;)V +HSPLcom/google/firebase/components/ComponentRuntime$Builder;->addComponent(Lcom/google/firebase/components/Component;)Lcom/google/firebase/components/ComponentRuntime$Builder; +HSPLcom/google/firebase/components/ComponentRuntime$Builder;->addComponentRegistrar(Lcom/google/firebase/components/ComponentRegistrar;)Lcom/google/firebase/components/ComponentRuntime$Builder; +HSPLcom/google/firebase/components/ComponentRuntime$Builder;->addLazyComponentRegistrars(Ljava/util/Collection;)Lcom/google/firebase/components/ComponentRuntime$Builder; +HSPLcom/google/firebase/components/ComponentRuntime$Builder;->build()Lcom/google/firebase/components/ComponentRuntime; +HSPLcom/google/firebase/components/ComponentRuntime$Builder;->lambda$addComponentRegistrar$0(Lcom/google/firebase/components/ComponentRegistrar;)Lcom/google/firebase/components/ComponentRegistrar; +HSPLcom/google/firebase/components/ComponentRuntime$Builder;->setProcessor(Lcom/google/firebase/components/ComponentRegistrarProcessor;)Lcom/google/firebase/components/ComponentRuntime$Builder; +Lcom/google/firebase/components/ComponentRuntime$Builder$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/components/ComponentRuntime$Builder$$ExternalSyntheticLambda0;->(Lcom/google/firebase/components/ComponentRegistrar;)V +HSPLcom/google/firebase/components/ComponentRuntime$Builder$$ExternalSyntheticLambda0;->get()Ljava/lang/Object; +Lcom/google/firebase/components/CycleDetector; +HSPLcom/google/firebase/components/CycleDetector;->detect(Ljava/util/List;)V +HSPLcom/google/firebase/components/CycleDetector;->getRoots(Ljava/util/Set;)Ljava/util/Set; +HSPLcom/google/firebase/components/CycleDetector;->toGraph(Ljava/util/List;)Ljava/util/Set; +Lcom/google/firebase/components/CycleDetector$ComponentNode; +HSPLcom/google/firebase/components/CycleDetector$ComponentNode;->(Lcom/google/firebase/components/Component;)V +HSPLcom/google/firebase/components/CycleDetector$ComponentNode;->addDependency(Lcom/google/firebase/components/CycleDetector$ComponentNode;)V +HSPLcom/google/firebase/components/CycleDetector$ComponentNode;->addDependent(Lcom/google/firebase/components/CycleDetector$ComponentNode;)V +HSPLcom/google/firebase/components/CycleDetector$ComponentNode;->getComponent()Lcom/google/firebase/components/Component; +HSPLcom/google/firebase/components/CycleDetector$ComponentNode;->getDependencies()Ljava/util/Set; +HSPLcom/google/firebase/components/CycleDetector$ComponentNode;->isRoot()Z +HSPLcom/google/firebase/components/CycleDetector$ComponentNode;->removeDependent(Lcom/google/firebase/components/CycleDetector$ComponentNode;)V +Lcom/google/firebase/components/CycleDetector$Dep; +HSPLcom/google/firebase/components/CycleDetector$Dep;->(Lcom/google/firebase/components/Qualified;Z)V +HSPLcom/google/firebase/components/CycleDetector$Dep;->(Lcom/google/firebase/components/Qualified;ZLcom/google/firebase/components/CycleDetector$1;)V +HSPLcom/google/firebase/components/CycleDetector$Dep;->access$100(Lcom/google/firebase/components/CycleDetector$Dep;)Z +HSPLcom/google/firebase/components/CycleDetector$Dep;->equals(Ljava/lang/Object;)Z +HSPLcom/google/firebase/components/CycleDetector$Dep;->hashCode()I +Lcom/google/firebase/components/Dependency; +HSPLcom/google/firebase/components/Dependency;->(Lcom/google/firebase/components/Qualified;II)V +HSPLcom/google/firebase/components/Dependency;->(Ljava/lang/Class;II)V +HSPLcom/google/firebase/components/Dependency;->deferred(Ljava/lang/Class;)Lcom/google/firebase/components/Dependency; +HSPLcom/google/firebase/components/Dependency;->getInterface()Lcom/google/firebase/components/Qualified; +HSPLcom/google/firebase/components/Dependency;->hashCode()I +HSPLcom/google/firebase/components/Dependency;->isDeferred()Z +HSPLcom/google/firebase/components/Dependency;->isDirectInjection()Z +HSPLcom/google/firebase/components/Dependency;->isRequired()Z +HSPLcom/google/firebase/components/Dependency;->isSet()Z +HSPLcom/google/firebase/components/Dependency;->optionalProvider(Ljava/lang/Class;)Lcom/google/firebase/components/Dependency; +HSPLcom/google/firebase/components/Dependency;->required(Lcom/google/firebase/components/Qualified;)Lcom/google/firebase/components/Dependency; +HSPLcom/google/firebase/components/Dependency;->required(Ljava/lang/Class;)Lcom/google/firebase/components/Dependency; +HSPLcom/google/firebase/components/Dependency;->requiredProvider(Lcom/google/firebase/components/Qualified;)Lcom/google/firebase/components/Dependency; +HSPLcom/google/firebase/components/Dependency;->requiredProvider(Ljava/lang/Class;)Lcom/google/firebase/components/Dependency; +HSPLcom/google/firebase/components/Dependency;->setOf(Ljava/lang/Class;)Lcom/google/firebase/components/Dependency; +Lcom/google/firebase/components/EventBus; +HSPLcom/google/firebase/components/EventBus;->(Ljava/util/concurrent/Executor;)V +HSPLcom/google/firebase/components/EventBus;->enablePublishingAndFlushPending()V +HSPLcom/google/firebase/components/EventBus;->subscribe(Ljava/lang/Class;Ljava/util/concurrent/Executor;Lcom/google/firebase/events/EventHandler;)V +Lcom/google/firebase/components/InvalidRegistrarException; +Lcom/google/firebase/components/Lazy; +HSPLcom/google/firebase/components/Lazy;->()V +HSPLcom/google/firebase/components/Lazy;->(Lcom/google/firebase/inject/Provider;)V +HSPLcom/google/firebase/components/Lazy;->get()Ljava/lang/Object; +Lcom/google/firebase/components/LazySet; +HSPLcom/google/firebase/components/LazySet;->(Ljava/util/Collection;)V +HSPLcom/google/firebase/components/LazySet;->fromCollection(Ljava/util/Collection;)Lcom/google/firebase/components/LazySet; +HSPLcom/google/firebase/components/LazySet;->get()Ljava/lang/Object; +HSPLcom/google/firebase/components/LazySet;->get()Ljava/util/Set; +HSPLcom/google/firebase/components/LazySet;->updateSet()V +Lcom/google/firebase/components/OptionalProvider; +HSPLcom/google/firebase/components/OptionalProvider;->()V +HSPLcom/google/firebase/components/OptionalProvider;->(Lcom/google/firebase/inject/Deferred$DeferredHandler;Lcom/google/firebase/inject/Provider;)V +HSPLcom/google/firebase/components/OptionalProvider;->empty()Lcom/google/firebase/components/OptionalProvider; +HSPLcom/google/firebase/components/OptionalProvider;->of(Lcom/google/firebase/inject/Provider;)Lcom/google/firebase/components/OptionalProvider; +HSPLcom/google/firebase/components/OptionalProvider;->whenAvailable(Lcom/google/firebase/inject/Deferred$DeferredHandler;)V +Lcom/google/firebase/components/OptionalProvider$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/components/OptionalProvider$$ExternalSyntheticLambda0;->()V +Lcom/google/firebase/components/OptionalProvider$$ExternalSyntheticLambda1; +HSPLcom/google/firebase/components/OptionalProvider$$ExternalSyntheticLambda1;->()V +Lcom/google/firebase/components/OptionalProvider$$ExternalSyntheticLambda2; +HSPLcom/google/firebase/components/OptionalProvider$$ExternalSyntheticLambda2;->(Lcom/google/firebase/inject/Deferred$DeferredHandler;Lcom/google/firebase/inject/Deferred$DeferredHandler;)V +Lcom/google/firebase/components/Preconditions; +HSPLcom/google/firebase/components/Preconditions;->checkArgument(ZLjava/lang/String;)V +HSPLcom/google/firebase/components/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/firebase/components/Preconditions;->checkNotNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; +HSPLcom/google/firebase/components/Preconditions;->checkState(ZLjava/lang/String;)V +Lcom/google/firebase/components/Qualified; +HSPLcom/google/firebase/components/Qualified;->(Ljava/lang/Class;Ljava/lang/Class;)V +HSPLcom/google/firebase/components/Qualified;->equals(Ljava/lang/Object;)Z +HSPLcom/google/firebase/components/Qualified;->hashCode()I +HSPLcom/google/firebase/components/Qualified;->qualified(Ljava/lang/Class;Ljava/lang/Class;)Lcom/google/firebase/components/Qualified; +HSPLcom/google/firebase/components/Qualified;->toString()Ljava/lang/String; +HSPLcom/google/firebase/components/Qualified;->unqualified(Ljava/lang/Class;)Lcom/google/firebase/components/Qualified; +Lcom/google/firebase/components/Qualified$Unqualified; +Lcom/google/firebase/components/RestrictedComponentContainer; +HSPLcom/google/firebase/components/RestrictedComponentContainer;->(Lcom/google/firebase/components/Component;Lcom/google/firebase/components/ComponentContainer;)V +HSPLcom/google/firebase/components/RestrictedComponentContainer;->get(Lcom/google/firebase/components/Qualified;)Ljava/lang/Object; +HSPLcom/google/firebase/components/RestrictedComponentContainer;->get(Ljava/lang/Class;)Ljava/lang/Object; +HSPLcom/google/firebase/components/RestrictedComponentContainer;->getDeferred(Lcom/google/firebase/components/Qualified;)Lcom/google/firebase/inject/Deferred; +HSPLcom/google/firebase/components/RestrictedComponentContainer;->getDeferred(Ljava/lang/Class;)Lcom/google/firebase/inject/Deferred; +HSPLcom/google/firebase/components/RestrictedComponentContainer;->getProvider(Lcom/google/firebase/components/Qualified;)Lcom/google/firebase/inject/Provider; +HSPLcom/google/firebase/components/RestrictedComponentContainer;->getProvider(Ljava/lang/Class;)Lcom/google/firebase/inject/Provider; +HSPLcom/google/firebase/components/RestrictedComponentContainer;->setOf(Lcom/google/firebase/components/Qualified;)Ljava/util/Set; +Lcom/google/firebase/concurrent/CustomThreadFactory; +HSPLcom/google/firebase/concurrent/CustomThreadFactory;->()V +HSPLcom/google/firebase/concurrent/CustomThreadFactory;->(Ljava/lang/String;ILandroid/os/StrictMode$ThreadPolicy;)V +HSPLcom/google/firebase/concurrent/CustomThreadFactory;->lambda$newThread$0$com-google-firebase-concurrent-CustomThreadFactory(Ljava/lang/Runnable;)V +HSPLcom/google/firebase/concurrent/CustomThreadFactory;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread; +Lcom/google/firebase/concurrent/CustomThreadFactory$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/concurrent/CustomThreadFactory$$ExternalSyntheticLambda0;->(Lcom/google/firebase/concurrent/CustomThreadFactory;Ljava/lang/Runnable;)V +HSPLcom/google/firebase/concurrent/CustomThreadFactory$$ExternalSyntheticLambda0;->run()V +Lcom/google/firebase/concurrent/DelegatingScheduledExecutorService; +HSPLcom/google/firebase/concurrent/DelegatingScheduledExecutorService;->(Ljava/util/concurrent/ExecutorService;Ljava/util/concurrent/ScheduledExecutorService;)V +HSPLcom/google/firebase/concurrent/DelegatingScheduledExecutorService;->execute(Ljava/lang/Runnable;)V +Lcom/google/firebase/concurrent/ExecutorsRegistrar; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar;->()V +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar;->()V +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar;->bgPolicy()Landroid/os/StrictMode$ThreadPolicy; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar;->factory(Ljava/lang/String;I)Ljava/util/concurrent/ThreadFactory; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar;->factory(Ljava/lang/String;ILandroid/os/StrictMode$ThreadPolicy;)Ljava/util/concurrent/ThreadFactory; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar;->getComponents()Ljava/util/List; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar;->lambda$getComponents$4(Lcom/google/firebase/components/ComponentContainer;)Ljava/util/concurrent/ScheduledExecutorService; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar;->lambda$getComponents$5(Lcom/google/firebase/components/ComponentContainer;)Ljava/util/concurrent/ScheduledExecutorService; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar;->lambda$static$0()Ljava/util/concurrent/ScheduledExecutorService; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar;->lambda$static$2()Ljava/util/concurrent/ScheduledExecutorService; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar;->lambda$static$3()Ljava/util/concurrent/ScheduledExecutorService; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar;->scheduled(Ljava/util/concurrent/ExecutorService;)Ljava/util/concurrent/ScheduledExecutorService; +Lcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda0;->()V +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda0;->create(Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +Lcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda1; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda1;->()V +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda1;->create(Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +Lcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda2; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda2;->()V +Lcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda3; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda3;->()V +Lcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda4; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda4;->()V +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda4;->get()Ljava/lang/Object; +Lcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda5; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda5;->()V +Lcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda6; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda6;->()V +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda6;->get()Ljava/lang/Object; +Lcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda7; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda7;->()V +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda7;->get()Ljava/lang/Object; +Lcom/google/firebase/concurrent/FirebaseExecutors; +HSPLcom/google/firebase/concurrent/FirebaseExecutors;->newSequentialExecutor(Ljava/util/concurrent/Executor;)Ljava/util/concurrent/Executor; +Lcom/google/firebase/concurrent/SequentialExecutor; +HSPLcom/google/firebase/concurrent/SequentialExecutor;->()V +HSPLcom/google/firebase/concurrent/SequentialExecutor;->(Ljava/util/concurrent/Executor;)V +Lcom/google/firebase/concurrent/SequentialExecutor$QueueWorker; +HSPLcom/google/firebase/concurrent/SequentialExecutor$QueueWorker;->(Lcom/google/firebase/concurrent/SequentialExecutor;)V +HSPLcom/google/firebase/concurrent/SequentialExecutor$QueueWorker;->(Lcom/google/firebase/concurrent/SequentialExecutor;Lcom/google/firebase/concurrent/SequentialExecutor$1;)V +Lcom/google/firebase/concurrent/SequentialExecutor$WorkerRunningState; +HSPLcom/google/firebase/concurrent/SequentialExecutor$WorkerRunningState;->()V +HSPLcom/google/firebase/concurrent/SequentialExecutor$WorkerRunningState;->(Ljava/lang/String;I)V +Lcom/google/firebase/concurrent/UiExecutor; +HSPLcom/google/firebase/concurrent/UiExecutor;->()V +HSPLcom/google/firebase/concurrent/UiExecutor;->(Ljava/lang/String;I)V +Lcom/google/firebase/crashlytics/AnalyticsDeferredProxy; +HSPLcom/google/firebase/crashlytics/AnalyticsDeferredProxy;->(Lcom/google/firebase/inject/Deferred;)V +HSPLcom/google/firebase/crashlytics/AnalyticsDeferredProxy;->(Lcom/google/firebase/inject/Deferred;Lcom/google/firebase/crashlytics/internal/breadcrumbs/BreadcrumbSource;Lcom/google/firebase/crashlytics/internal/analytics/AnalyticsEventLogger;)V +HSPLcom/google/firebase/crashlytics/AnalyticsDeferredProxy;->getAnalyticsEventLogger()Lcom/google/firebase/crashlytics/internal/analytics/AnalyticsEventLogger; +HSPLcom/google/firebase/crashlytics/AnalyticsDeferredProxy;->getDeferredBreadcrumbSource()Lcom/google/firebase/crashlytics/internal/breadcrumbs/BreadcrumbSource; +HSPLcom/google/firebase/crashlytics/AnalyticsDeferredProxy;->init()V +HSPLcom/google/firebase/crashlytics/AnalyticsDeferredProxy;->lambda$getDeferredBreadcrumbSource$0$com-google-firebase-crashlytics-AnalyticsDeferredProxy(Lcom/google/firebase/crashlytics/internal/breadcrumbs/BreadcrumbHandler;)V +HSPLcom/google/firebase/crashlytics/AnalyticsDeferredProxy;->lambda$init$2$com-google-firebase-crashlytics-AnalyticsDeferredProxy(Lcom/google/firebase/inject/Provider;)V +HSPLcom/google/firebase/crashlytics/AnalyticsDeferredProxy;->subscribeToAnalyticsEvents(Lcom/google/firebase/analytics/connector/AnalyticsConnector;Lcom/google/firebase/crashlytics/CrashlyticsAnalyticsListener;)Lcom/google/firebase/analytics/connector/AnalyticsConnector$AnalyticsConnectorHandle; +Lcom/google/firebase/crashlytics/AnalyticsDeferredProxy$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/crashlytics/AnalyticsDeferredProxy$$ExternalSyntheticLambda0;->(Lcom/google/firebase/crashlytics/AnalyticsDeferredProxy;)V +HSPLcom/google/firebase/crashlytics/AnalyticsDeferredProxy$$ExternalSyntheticLambda0;->registerBreadcrumbHandler(Lcom/google/firebase/crashlytics/internal/breadcrumbs/BreadcrumbHandler;)V +Lcom/google/firebase/crashlytics/AnalyticsDeferredProxy$$ExternalSyntheticLambda1; +HSPLcom/google/firebase/crashlytics/AnalyticsDeferredProxy$$ExternalSyntheticLambda1;->(Lcom/google/firebase/crashlytics/AnalyticsDeferredProxy;)V +Lcom/google/firebase/crashlytics/AnalyticsDeferredProxy$$ExternalSyntheticLambda2; +HSPLcom/google/firebase/crashlytics/AnalyticsDeferredProxy$$ExternalSyntheticLambda2;->(Lcom/google/firebase/crashlytics/AnalyticsDeferredProxy;)V +HSPLcom/google/firebase/crashlytics/AnalyticsDeferredProxy$$ExternalSyntheticLambda2;->handle(Lcom/google/firebase/inject/Provider;)V +Lcom/google/firebase/crashlytics/CrashlyticsAnalyticsListener; +HSPLcom/google/firebase/crashlytics/CrashlyticsAnalyticsListener;->()V +HSPLcom/google/firebase/crashlytics/CrashlyticsAnalyticsListener;->setBreadcrumbEventReceiver(Lcom/google/firebase/crashlytics/internal/analytics/AnalyticsEventReceiver;)V +HSPLcom/google/firebase/crashlytics/CrashlyticsAnalyticsListener;->setCrashlyticsOriginEventReceiver(Lcom/google/firebase/crashlytics/internal/analytics/AnalyticsEventReceiver;)V +Lcom/google/firebase/crashlytics/CrashlyticsRegistrar; +HSPLcom/google/firebase/crashlytics/CrashlyticsRegistrar;->$r8$lambda$Pfd5XmDCFzNyAT9o9H6rDnTBQE4(Lcom/google/firebase/crashlytics/CrashlyticsRegistrar;Lcom/google/firebase/components/ComponentContainer;)Lcom/google/firebase/crashlytics/FirebaseCrashlytics; +HSPLcom/google/firebase/crashlytics/CrashlyticsRegistrar;->()V +HSPLcom/google/firebase/crashlytics/CrashlyticsRegistrar;->()V +HSPLcom/google/firebase/crashlytics/CrashlyticsRegistrar;->buildCrashlytics(Lcom/google/firebase/components/ComponentContainer;)Lcom/google/firebase/crashlytics/FirebaseCrashlytics; +HSPLcom/google/firebase/crashlytics/CrashlyticsRegistrar;->getComponents()Ljava/util/List; +Lcom/google/firebase/crashlytics/CrashlyticsRegistrar$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/crashlytics/CrashlyticsRegistrar$$ExternalSyntheticLambda0;->(Lcom/google/firebase/crashlytics/CrashlyticsRegistrar;)V +HSPLcom/google/firebase/crashlytics/CrashlyticsRegistrar$$ExternalSyntheticLambda0;->create(Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +Lcom/google/firebase/crashlytics/FirebaseCrashlytics; +HSPLcom/google/firebase/crashlytics/FirebaseCrashlytics;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;)V +HSPLcom/google/firebase/crashlytics/FirebaseCrashlytics;->getInstance()Lcom/google/firebase/crashlytics/FirebaseCrashlytics; +HSPLcom/google/firebase/crashlytics/FirebaseCrashlytics;->init(Lcom/google/firebase/FirebaseApp;Lcom/google/firebase/installations/FirebaseInstallationsApi;Lcom/google/firebase/inject/Deferred;Lcom/google/firebase/inject/Deferred;Lcom/google/firebase/inject/Deferred;)Lcom/google/firebase/crashlytics/FirebaseCrashlytics; +HSPLcom/google/firebase/crashlytics/FirebaseCrashlytics;->log(Ljava/lang/String;)V +HSPLcom/google/firebase/crashlytics/FirebaseCrashlytics;->setCrashlyticsCollectionEnabled(Ljava/lang/Boolean;)V +Lcom/google/firebase/crashlytics/FirebaseCrashlytics$1; +HSPLcom/google/firebase/crashlytics/FirebaseCrashlytics$1;->()V +Lcom/google/firebase/crashlytics/FirebaseCrashlytics$2; +HSPLcom/google/firebase/crashlytics/FirebaseCrashlytics$2;->(ZLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;Lcom/google/firebase/crashlytics/internal/settings/SettingsController;)V +HSPLcom/google/firebase/crashlytics/FirebaseCrashlytics$2;->call()Ljava/lang/Object; +HSPLcom/google/firebase/crashlytics/FirebaseCrashlytics$2;->call()Ljava/lang/Void; +Lcom/google/firebase/crashlytics/FirebaseCrashlyticsKtxRegistrar; +HSPLcom/google/firebase/crashlytics/FirebaseCrashlyticsKtxRegistrar;->()V +HSPLcom/google/firebase/crashlytics/FirebaseCrashlyticsKtxRegistrar;->()V +HSPLcom/google/firebase/crashlytics/FirebaseCrashlyticsKtxRegistrar;->getComponents()Ljava/util/List; +Lcom/google/firebase/crashlytics/FirebaseCrashlyticsKtxRegistrar$Companion; +HSPLcom/google/firebase/crashlytics/FirebaseCrashlyticsKtxRegistrar$Companion;->()V +HSPLcom/google/firebase/crashlytics/FirebaseCrashlyticsKtxRegistrar$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/google/firebase/crashlytics/IsEnabledKt; +HSPLcom/google/firebase/crashlytics/IsEnabledKt;->()V +HSPLcom/google/firebase/crashlytics/IsEnabledKt;->isEnabled(Lcom/google/firebase/crashlytics/FirebaseCrashlytics;)Ljava/lang/Boolean; +HSPLcom/google/firebase/crashlytics/IsEnabledKt;->setEnabled(Lcom/google/firebase/crashlytics/FirebaseCrashlytics;Ljava/lang/Boolean;)V +Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponent; +Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponentDeferredProxy; +HSPLcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponentDeferredProxy;->()V +HSPLcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponentDeferredProxy;->(Lcom/google/firebase/inject/Deferred;)V +HSPLcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponentDeferredProxy;->hasCrashDataForSession(Ljava/lang/String;)Z +HSPLcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponentDeferredProxy;->prepareNativeSession(Ljava/lang/String;Ljava/lang/String;JLcom/google/firebase/crashlytics/internal/model/StaticSessionData;)V +Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponentDeferredProxy$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponentDeferredProxy$$ExternalSyntheticLambda0;->(Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponentDeferredProxy;)V +Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponentDeferredProxy$$ExternalSyntheticLambda1; +HSPLcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponentDeferredProxy$$ExternalSyntheticLambda1;->(Ljava/lang/String;Ljava/lang/String;JLcom/google/firebase/crashlytics/internal/model/StaticSessionData;)V +Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponentDeferredProxy$MissingNativeSessionFileProvider; +HSPLcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponentDeferredProxy$MissingNativeSessionFileProvider;->()V +HSPLcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponentDeferredProxy$MissingNativeSessionFileProvider;->(Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponentDeferredProxy$1;)V +Lcom/google/firebase/crashlytics/internal/CrashlyticsRemoteConfigListener; +HSPLcom/google/firebase/crashlytics/internal/CrashlyticsRemoteConfigListener;->(Lcom/google/firebase/crashlytics/internal/metadata/UserMetadata;)V +Lcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider; +HSPLcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider;->(Landroid/content/Context;)V +HSPLcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider;->access$300(Lcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider;)Landroid/content/Context; +HSPLcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider;->access$400(Lcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider;Ljava/lang/String;)Z +HSPLcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider;->assetFileExists(Ljava/lang/String;)Z +HSPLcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider;->getDevelopmentPlatform()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider;->getDevelopmentPlatformVersion()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider;->initDevelopmentPlatform()Lcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider$DevelopmentPlatform; +Lcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider$DevelopmentPlatform; +HSPLcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider$DevelopmentPlatform;->(Lcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider;)V +HSPLcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider$DevelopmentPlatform;->(Lcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider;Lcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider$1;)V +HSPLcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider$DevelopmentPlatform;->access$000(Lcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider$DevelopmentPlatform;)Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider$DevelopmentPlatform;->access$100(Lcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider$DevelopmentPlatform;)Ljava/lang/String; +Lcom/google/firebase/crashlytics/internal/Logger; +HSPLcom/google/firebase/crashlytics/internal/Logger;->()V +HSPLcom/google/firebase/crashlytics/internal/Logger;->(Ljava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/Logger;->canLog(I)Z +HSPLcom/google/firebase/crashlytics/internal/Logger;->d(Ljava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/Logger;->d(Ljava/lang/String;Ljava/lang/Throwable;)V +HSPLcom/google/firebase/crashlytics/internal/Logger;->getLogger()Lcom/google/firebase/crashlytics/internal/Logger; +HSPLcom/google/firebase/crashlytics/internal/Logger;->i(Ljava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/Logger;->i(Ljava/lang/String;Ljava/lang/Throwable;)V +HSPLcom/google/firebase/crashlytics/internal/Logger;->v(Ljava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/Logger;->v(Ljava/lang/String;Ljava/lang/Throwable;)V +Lcom/google/firebase/crashlytics/internal/NativeSessionFileProvider; +Lcom/google/firebase/crashlytics/internal/ProcessDetailsProvider; +HSPLcom/google/firebase/crashlytics/internal/ProcessDetailsProvider;->()V +HSPLcom/google/firebase/crashlytics/internal/ProcessDetailsProvider;->()V +Lcom/google/firebase/crashlytics/internal/RemoteConfigDeferredProxy; +HSPLcom/google/firebase/crashlytics/internal/RemoteConfigDeferredProxy;->(Lcom/google/firebase/inject/Deferred;)V +HSPLcom/google/firebase/crashlytics/internal/RemoteConfigDeferredProxy;->setupListener(Lcom/google/firebase/crashlytics/internal/metadata/UserMetadata;)V +Lcom/google/firebase/crashlytics/internal/RemoteConfigDeferredProxy$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/crashlytics/internal/RemoteConfigDeferredProxy$$ExternalSyntheticLambda0;->(Lcom/google/firebase/crashlytics/internal/CrashlyticsRemoteConfigListener;)V +Lcom/google/firebase/crashlytics/internal/analytics/AnalyticsEventLogger; +Lcom/google/firebase/crashlytics/internal/analytics/AnalyticsEventReceiver; +Lcom/google/firebase/crashlytics/internal/analytics/BlockingAnalyticsEventLogger; +HSPLcom/google/firebase/crashlytics/internal/analytics/BlockingAnalyticsEventLogger;->(Lcom/google/firebase/crashlytics/internal/analytics/CrashlyticsOriginAnalyticsEventLogger;ILjava/util/concurrent/TimeUnit;)V +Lcom/google/firebase/crashlytics/internal/analytics/BreadcrumbAnalyticsEventReceiver; +HSPLcom/google/firebase/crashlytics/internal/analytics/BreadcrumbAnalyticsEventReceiver;->()V +HSPLcom/google/firebase/crashlytics/internal/analytics/BreadcrumbAnalyticsEventReceiver;->registerBreadcrumbHandler(Lcom/google/firebase/crashlytics/internal/breadcrumbs/BreadcrumbHandler;)V +Lcom/google/firebase/crashlytics/internal/analytics/CrashlyticsOriginAnalyticsEventLogger; +HSPLcom/google/firebase/crashlytics/internal/analytics/CrashlyticsOriginAnalyticsEventLogger;->(Lcom/google/firebase/analytics/connector/AnalyticsConnector;)V +Lcom/google/firebase/crashlytics/internal/analytics/UnavailableAnalyticsEventLogger; +HSPLcom/google/firebase/crashlytics/internal/analytics/UnavailableAnalyticsEventLogger;->()V +Lcom/google/firebase/crashlytics/internal/breadcrumbs/BreadcrumbHandler; +Lcom/google/firebase/crashlytics/internal/breadcrumbs/BreadcrumbSource; +Lcom/google/firebase/crashlytics/internal/breadcrumbs/DisabledBreadcrumbSource; +HSPLcom/google/firebase/crashlytics/internal/breadcrumbs/DisabledBreadcrumbSource;->()V +Lcom/google/firebase/crashlytics/internal/common/AppData; +HSPLcom/google/firebase/crashlytics/internal/common/AppData;->(Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider;)V +HSPLcom/google/firebase/crashlytics/internal/common/AppData;->create(Landroid/content/Context;Lcom/google/firebase/crashlytics/internal/common/IdManager;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider;)Lcom/google/firebase/crashlytics/internal/common/AppData; +HSPLcom/google/firebase/crashlytics/internal/common/AppData;->getAppBuildVersion(Landroid/content/pm/PackageInfo;)Ljava/lang/String; +Lcom/google/firebase/crashlytics/internal/common/AutoValue_InstallIdProvider_InstallIds; +HSPLcom/google/firebase/crashlytics/internal/common/AutoValue_InstallIdProvider_InstallIds;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/common/AutoValue_InstallIdProvider_InstallIds;->getCrashlyticsInstallId()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/AutoValue_InstallIdProvider_InstallIds;->getFirebaseInstallationId()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/AutoValue_InstallIdProvider_InstallIds;->toString()Ljava/lang/String; +Lcom/google/firebase/crashlytics/internal/common/BackgroundPriorityRunnable; +HSPLcom/google/firebase/crashlytics/internal/common/BackgroundPriorityRunnable;->()V +HSPLcom/google/firebase/crashlytics/internal/common/BackgroundPriorityRunnable;->run()V +Lcom/google/firebase/crashlytics/internal/common/CLSUUID; +HSPLcom/google/firebase/crashlytics/internal/common/CLSUUID;->()V +HSPLcom/google/firebase/crashlytics/internal/common/CLSUUID;->(Lcom/google/firebase/crashlytics/internal/common/IdManager;)V +HSPLcom/google/firebase/crashlytics/internal/common/CLSUUID;->convertLongToFourByteBuffer(J)[B +HSPLcom/google/firebase/crashlytics/internal/common/CLSUUID;->convertLongToTwoByteBuffer(J)[B +HSPLcom/google/firebase/crashlytics/internal/common/CLSUUID;->populatePID([B)V +HSPLcom/google/firebase/crashlytics/internal/common/CLSUUID;->populateSequenceNumber([B)V +HSPLcom/google/firebase/crashlytics/internal/common/CLSUUID;->populateTime([B)V +HSPLcom/google/firebase/crashlytics/internal/common/CLSUUID;->toString()Ljava/lang/String; +Lcom/google/firebase/crashlytics/internal/common/CommonUtils; +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->()V +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->calculateTotalRamInBytes(Landroid/content/Context;)J +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->closeOrLog(Ljava/io/Closeable;Ljava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->createInstanceIdFrom([Ljava/lang/String;)Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->getBooleanResourceValue(Landroid/content/Context;Ljava/lang/String;Z)Z +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->getBuildIdInfo(Landroid/content/Context;)Ljava/util/List; +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->getCpuArchitectureInt()I +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->getDeviceState()I +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->getMappingFileId(Landroid/content/Context;)Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->getResourcePackageName(Landroid/content/Context;)Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->getResourcesIdentifier(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)I +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->getSharedPrefs(Landroid/content/Context;)Landroid/content/SharedPreferences; +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->hash(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->hash([BLjava/lang/String;)Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->hexify([B)Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->isDebuggerAttached()Z +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->isEmulator()Z +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->isRooted()Z +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->sha1(Ljava/lang/String;)Ljava/lang/String; +Lcom/google/firebase/crashlytics/internal/common/CommonUtils$Architecture; +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils$Architecture;->()V +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils$Architecture;->(Ljava/lang/String;I)V +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils$Architecture;->getValue()Lcom/google/firebase/crashlytics/internal/common/CommonUtils$Architecture; +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsStore; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsStore;->()V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsStore;->(Lcom/google/firebase/crashlytics/internal/persistence/FileStore;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsStore;->persist(Lcom/google/firebase/crashlytics/internal/persistence/FileStore;Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsStore;->rotateSessionId(Ljava/lang/String;)V +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsStore$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsStore$$ExternalSyntheticLambda0;->()V +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsStore$$ExternalSyntheticLambda1; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsStore$$ExternalSyntheticLambda1;->()V +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsSubscriber; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsSubscriber;->(Lcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;Lcom/google/firebase/crashlytics/internal/persistence/FileStore;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsSubscriber;->getSessionSubscriberName()Lcom/google/firebase/sessions/api/SessionSubscriber$Name; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsSubscriber;->isDataCollectionEnabled()Z +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsSubscriber;->setSessionId(Ljava/lang/String;)V +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;->(Ljava/util/concurrent/Executor;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;->access$000(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;)Ljava/lang/ThreadLocal; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;->checkRunningOnThread()V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;->ignoreResult(Lcom/google/android/gms/tasks/Task;)Lcom/google/android/gms/tasks/Task; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;->isRunningOnThread()Z +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;->newContinuation(Ljava/util/concurrent/Callable;)Lcom/google/android/gms/tasks/Continuation; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;->submit(Ljava/util/concurrent/Callable;)Lcom/google/android/gms/tasks/Task; +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker$1; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker$1;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker$1;->run()V +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker$3; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker$3;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;Ljava/util/concurrent/Callable;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker$3;->then(Lcom/google/android/gms/tasks/Task;)Ljava/lang/Object; +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker$4; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker$4;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker$4;->then(Lcom/google/android/gms/tasks/Task;)Ljava/lang/Object; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker$4;->then(Lcom/google/android/gms/tasks/Task;)Ljava/lang/Void; +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->()V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->(Landroid/content/Context;Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;Lcom/google/firebase/crashlytics/internal/common/IdManager;Lcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;Lcom/google/firebase/crashlytics/internal/persistence/FileStore;Lcom/google/firebase/crashlytics/internal/common/CrashlyticsFileMarker;Lcom/google/firebase/crashlytics/internal/common/AppData;Lcom/google/firebase/crashlytics/internal/metadata/UserMetadata;Lcom/google/firebase/crashlytics/internal/metadata/LogFileManager;Lcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator;Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponent;Lcom/google/firebase/crashlytics/internal/analytics/AnalyticsEventLogger;Lcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsSubscriber;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->access$1100(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;)Lcom/google/firebase/crashlytics/internal/metadata/LogFileManager; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->access$600(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;Ljava/lang/String;Ljava/lang/Boolean;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->createAppData(Lcom/google/firebase/crashlytics/internal/common/IdManager;Lcom/google/firebase/crashlytics/internal/common/AppData;)Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$AppData; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->createDeviceData(Landroid/content/Context;)Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$DeviceData; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->createOsData()Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$OsData; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->didCrashOnPreviousExecution()Z +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->doCloseSessions(ZLcom/google/firebase/crashlytics/internal/settings/SettingsProvider;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->doOpenSession(Ljava/lang/String;Ljava/lang/Boolean;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->enableExceptionHandling(Ljava/lang/String;Ljava/lang/Thread$UncaughtExceptionHandler;Lcom/google/firebase/crashlytics/internal/settings/SettingsProvider;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->finalizeSessions(Lcom/google/firebase/crashlytics/internal/settings/SettingsProvider;)Z +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->getCurrentSessionId()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->getCurrentTimestampSeconds()J +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->getResourceAsStream(Ljava/lang/String;)Ljava/io/InputStream; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->getTimestampSeconds(J)J +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->getVersionControlInfo()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->isHandlingException()Z +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->openSession(Ljava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->saveVersionControlInfo()V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->submitAllReports(Lcom/google/android/gms/tasks/Task;)Lcom/google/android/gms/tasks/Task; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->writeToLog(JLjava/lang/String;)V +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController$$ExternalSyntheticLambda0;->()V +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController$1; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController$1;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;)V +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController$5; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController$5;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;JLjava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController$5;->call()Ljava/lang/Object; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController$5;->call()Ljava/lang/Void; +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController$7; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController$7;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;Ljava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController$7;->call()Ljava/lang/Object; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController$7;->call()Ljava/lang/Void; +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsCore; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;->(Lcom/google/firebase/FirebaseApp;Lcom/google/firebase/crashlytics/internal/common/IdManager;Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponent;Lcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;Lcom/google/firebase/crashlytics/internal/breadcrumbs/BreadcrumbSource;Lcom/google/firebase/crashlytics/internal/analytics/AnalyticsEventLogger;Lcom/google/firebase/crashlytics/internal/persistence/FileStore;Ljava/util/concurrent/ExecutorService;Lcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsSubscriber;Lcom/google/firebase/crashlytics/internal/RemoteConfigDeferredProxy;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;->access$000(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;Lcom/google/firebase/crashlytics/internal/settings/SettingsProvider;)Lcom/google/android/gms/tasks/Task; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;->access$100(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;)Lcom/google/firebase/crashlytics/internal/common/CrashlyticsFileMarker; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;->access$200(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;)Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;->checkForPreviousCrash()V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;->didPreviousInitializationFail()Z +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;->doBackgroundInitialization(Lcom/google/firebase/crashlytics/internal/settings/SettingsProvider;)Lcom/google/android/gms/tasks/Task; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;->doBackgroundInitializationAsync(Lcom/google/firebase/crashlytics/internal/settings/SettingsProvider;)Lcom/google/android/gms/tasks/Task; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;->getVersion()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;->isBuildIdValid(Ljava/lang/String;Z)Z +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;->log(Ljava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;->markInitializationComplete()V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;->markInitializationStarted()V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;->onPreExecute(Lcom/google/firebase/crashlytics/internal/common/AppData;Lcom/google/firebase/crashlytics/internal/settings/SettingsProvider;)Z +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;->setCrashlyticsCollectionEnabled(Ljava/lang/Boolean;)V +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsCore$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore$$ExternalSyntheticLambda0;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;)V +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsCore$1; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore$1;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;Lcom/google/firebase/crashlytics/internal/settings/SettingsProvider;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore$1;->call()Lcom/google/android/gms/tasks/Task; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore$1;->call()Ljava/lang/Object; +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsCore$3; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore$3;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore$3;->call()Ljava/lang/Boolean; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore$3;->call()Ljava/lang/Object; +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsCore$4; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore$4;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore$4;->call()Ljava/lang/Boolean; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore$4;->call()Ljava/lang/Object; +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsFileMarker; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsFileMarker;->(Ljava/lang/String;Lcom/google/firebase/crashlytics/internal/persistence/FileStore;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsFileMarker;->create()Z +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsFileMarker;->getMarkerFile()Ljava/io/File; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsFileMarker;->isPresent()Z +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsFileMarker;->remove()Z +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsLifecycleEvents; +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsReportDataCapture; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsReportDataCapture;->()V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsReportDataCapture;->(Landroid/content/Context;Lcom/google/firebase/crashlytics/internal/common/IdManager;Lcom/google/firebase/crashlytics/internal/common/AppData;Lcom/google/firebase/crashlytics/internal/stacktrace/StackTraceTrimmingStrategy;Lcom/google/firebase/crashlytics/internal/settings/SettingsProvider;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsReportDataCapture;->buildReportData()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Builder; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsReportDataCapture;->captureReportData(Ljava/lang/String;J)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsReportDataCapture;->getDeviceArchitecture()I +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsReportDataCapture;->populateSessionApplicationData()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsReportDataCapture;->populateSessionData(Ljava/lang/String;J)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsReportDataCapture;->populateSessionDeviceData()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsReportDataCapture;->populateSessionOperatingSystemData()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem; +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsUncaughtExceptionHandler; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsUncaughtExceptionHandler;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsUncaughtExceptionHandler$CrashListener;Lcom/google/firebase/crashlytics/internal/settings/SettingsProvider;Ljava/lang/Thread$UncaughtExceptionHandler;Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponent;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsUncaughtExceptionHandler;->isHandlingException()Z +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsUncaughtExceptionHandler$CrashListener; +Lcom/google/firebase/crashlytics/internal/common/CurrentTimeProvider; +Lcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter; +HSPLcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;->(Lcom/google/firebase/FirebaseApp;)V +HSPLcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;->getDataCollectionValueFromManifest(Landroid/content/Context;)Ljava/lang/Boolean; +HSPLcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;->getDataCollectionValueFromSharedPreferences()Ljava/lang/Boolean; +HSPLcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;->isAutomaticDataCollectionEnabled()Z +HSPLcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;->logDataCollectionState(Z)V +HSPLcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;->readCrashlyticsDataCollectionEnabledFromManifest(Landroid/content/Context;)Ljava/lang/Boolean; +HSPLcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;->setCrashlyticsDataCollectionEnabled(Ljava/lang/Boolean;)V +HSPLcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;->storeDataCollectionValueInSharedPreferences(Landroid/content/SharedPreferences;Ljava/lang/Boolean;)V +HSPLcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;->waitForAutomaticDataCollectionEnabled()Lcom/google/android/gms/tasks/Task; +HSPLcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;->waitForDataCollectionPermission(Ljava/util/concurrent/Executor;)Lcom/google/android/gms/tasks/Task; +Lcom/google/firebase/crashlytics/internal/common/DeliveryMechanism; +HSPLcom/google/firebase/crashlytics/internal/common/DeliveryMechanism;->()V +HSPLcom/google/firebase/crashlytics/internal/common/DeliveryMechanism;->(Ljava/lang/String;II)V +HSPLcom/google/firebase/crashlytics/internal/common/DeliveryMechanism;->determineFrom(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/common/DeliveryMechanism; +HSPLcom/google/firebase/crashlytics/internal/common/DeliveryMechanism;->getId()I +Lcom/google/firebase/crashlytics/internal/common/ExecutorUtils; +HSPLcom/google/firebase/crashlytics/internal/common/ExecutorUtils;->addDelayedShutdownHook(Ljava/lang/String;Ljava/util/concurrent/ExecutorService;)V +HSPLcom/google/firebase/crashlytics/internal/common/ExecutorUtils;->addDelayedShutdownHook(Ljava/lang/String;Ljava/util/concurrent/ExecutorService;JLjava/util/concurrent/TimeUnit;)V +HSPLcom/google/firebase/crashlytics/internal/common/ExecutorUtils;->buildSingleThreadExecutorService(Ljava/lang/String;)Ljava/util/concurrent/ExecutorService; +HSPLcom/google/firebase/crashlytics/internal/common/ExecutorUtils;->getNamedThreadFactory(Ljava/lang/String;)Ljava/util/concurrent/ThreadFactory; +HSPLcom/google/firebase/crashlytics/internal/common/ExecutorUtils;->newSingleThreadExecutor(Ljava/util/concurrent/ThreadFactory;Ljava/util/concurrent/RejectedExecutionHandler;)Ljava/util/concurrent/ExecutorService; +Lcom/google/firebase/crashlytics/internal/common/ExecutorUtils$1; +HSPLcom/google/firebase/crashlytics/internal/common/ExecutorUtils$1;->(Ljava/lang/String;Ljava/util/concurrent/atomic/AtomicLong;)V +HSPLcom/google/firebase/crashlytics/internal/common/ExecutorUtils$1;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread; +Lcom/google/firebase/crashlytics/internal/common/ExecutorUtils$1$1; +HSPLcom/google/firebase/crashlytics/internal/common/ExecutorUtils$1$1;->(Lcom/google/firebase/crashlytics/internal/common/ExecutorUtils$1;Ljava/lang/Runnable;)V +HSPLcom/google/firebase/crashlytics/internal/common/ExecutorUtils$1$1;->onRun()V +Lcom/google/firebase/crashlytics/internal/common/ExecutorUtils$2; +HSPLcom/google/firebase/crashlytics/internal/common/ExecutorUtils$2;->(Ljava/lang/String;Ljava/util/concurrent/ExecutorService;JLjava/util/concurrent/TimeUnit;)V +Lcom/google/firebase/crashlytics/internal/common/IdManager; +HSPLcom/google/firebase/crashlytics/internal/common/IdManager;->()V +HSPLcom/google/firebase/crashlytics/internal/common/IdManager;->(Landroid/content/Context;Ljava/lang/String;Lcom/google/firebase/installations/FirebaseInstallationsApi;Lcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;)V +HSPLcom/google/firebase/crashlytics/internal/common/IdManager;->getAppIdentifier()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/IdManager;->getInstallIds()Lcom/google/firebase/crashlytics/internal/common/InstallIdProvider$InstallIds; +HSPLcom/google/firebase/crashlytics/internal/common/IdManager;->getInstallerPackageName()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/IdManager;->getModelName()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/IdManager;->getOsBuildVersionString()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/IdManager;->getOsDisplayVersionString()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/IdManager;->isSyntheticFid(Ljava/lang/String;)Z +HSPLcom/google/firebase/crashlytics/internal/common/IdManager;->readCachedCrashlyticsInstallId(Landroid/content/SharedPreferences;)Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/IdManager;->removeForwardSlashesIn(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/IdManager;->shouldRefresh()Z +Lcom/google/firebase/crashlytics/internal/common/InstallIdProvider; +Lcom/google/firebase/crashlytics/internal/common/InstallIdProvider$InstallIds; +HSPLcom/google/firebase/crashlytics/internal/common/InstallIdProvider$InstallIds;->()V +HSPLcom/google/firebase/crashlytics/internal/common/InstallIdProvider$InstallIds;->create(Ljava/lang/String;Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/common/InstallIdProvider$InstallIds; +HSPLcom/google/firebase/crashlytics/internal/common/InstallIdProvider$InstallIds;->createWithoutFid(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/common/InstallIdProvider$InstallIds; +Lcom/google/firebase/crashlytics/internal/common/InstallerPackageNameProvider; +HSPLcom/google/firebase/crashlytics/internal/common/InstallerPackageNameProvider;->()V +HSPLcom/google/firebase/crashlytics/internal/common/InstallerPackageNameProvider;->getInstallerPackageName(Landroid/content/Context;)Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/InstallerPackageNameProvider;->loadInstallerPackageName(Landroid/content/Context;)Ljava/lang/String; +Lcom/google/firebase/crashlytics/internal/common/OnDemandCounter; +HSPLcom/google/firebase/crashlytics/internal/common/OnDemandCounter;->()V +Lcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator; +HSPLcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsReportDataCapture;Lcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence;Lcom/google/firebase/crashlytics/internal/send/DataTransportCrashlyticsReportSender;Lcom/google/firebase/crashlytics/internal/metadata/LogFileManager;Lcom/google/firebase/crashlytics/internal/metadata/UserMetadata;Lcom/google/firebase/crashlytics/internal/common/IdManager;)V +HSPLcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator;->create(Landroid/content/Context;Lcom/google/firebase/crashlytics/internal/common/IdManager;Lcom/google/firebase/crashlytics/internal/persistence/FileStore;Lcom/google/firebase/crashlytics/internal/common/AppData;Lcom/google/firebase/crashlytics/internal/metadata/LogFileManager;Lcom/google/firebase/crashlytics/internal/metadata/UserMetadata;Lcom/google/firebase/crashlytics/internal/stacktrace/StackTraceTrimmingStrategy;Lcom/google/firebase/crashlytics/internal/settings/SettingsProvider;Lcom/google/firebase/crashlytics/internal/common/OnDemandCounter;Lcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsSubscriber;)Lcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator; +HSPLcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator;->finalizeSessions(JLjava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator;->hasReportsToSend()Z +HSPLcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator;->listSortedOpenSessionIds()Ljava/util/SortedSet; +HSPLcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator;->onBeginSession(Ljava/lang/String;J)V +Lcom/google/firebase/crashlytics/internal/common/SystemCurrentTimeProvider; +HSPLcom/google/firebase/crashlytics/internal/common/SystemCurrentTimeProvider;->()V +HSPLcom/google/firebase/crashlytics/internal/common/SystemCurrentTimeProvider;->getCurrentTimeMillis()J +Lcom/google/firebase/crashlytics/internal/common/Utils; +HSPLcom/google/firebase/crashlytics/internal/common/Utils;->()V +HSPLcom/google/firebase/crashlytics/internal/common/Utils;->awaitEvenIfOnMainThread(Lcom/google/android/gms/tasks/Task;)Ljava/lang/Object; +HSPLcom/google/firebase/crashlytics/internal/common/Utils;->callTask(Ljava/util/concurrent/Executor;Ljava/util/concurrent/Callable;)Lcom/google/android/gms/tasks/Task; +HSPLcom/google/firebase/crashlytics/internal/common/Utils;->lambda$awaitEvenIfOnMainThread$4(Ljava/util/concurrent/CountDownLatch;Lcom/google/android/gms/tasks/Task;)Ljava/lang/Object; +HSPLcom/google/firebase/crashlytics/internal/common/Utils;->lambda$callTask$2(Lcom/google/android/gms/tasks/TaskCompletionSource;Lcom/google/android/gms/tasks/Task;)Ljava/lang/Object; +HSPLcom/google/firebase/crashlytics/internal/common/Utils;->lambda$callTask$3(Ljava/util/concurrent/Callable;Ljava/util/concurrent/Executor;Lcom/google/android/gms/tasks/TaskCompletionSource;)V +HSPLcom/google/firebase/crashlytics/internal/common/Utils;->race(Ljava/util/concurrent/Executor;Lcom/google/android/gms/tasks/Task;Lcom/google/android/gms/tasks/Task;)Lcom/google/android/gms/tasks/Task; +Lcom/google/firebase/crashlytics/internal/common/Utils$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/crashlytics/internal/common/Utils$$ExternalSyntheticLambda0;->(Lcom/google/android/gms/tasks/TaskCompletionSource;)V +HSPLcom/google/firebase/crashlytics/internal/common/Utils$$ExternalSyntheticLambda0;->then(Lcom/google/android/gms/tasks/Task;)Ljava/lang/Object; +Lcom/google/firebase/crashlytics/internal/common/Utils$$ExternalSyntheticLambda2; +HSPLcom/google/firebase/crashlytics/internal/common/Utils$$ExternalSyntheticLambda2;->(Ljava/util/concurrent/CountDownLatch;)V +HSPLcom/google/firebase/crashlytics/internal/common/Utils$$ExternalSyntheticLambda2;->then(Lcom/google/android/gms/tasks/Task;)Ljava/lang/Object; +Lcom/google/firebase/crashlytics/internal/common/Utils$$ExternalSyntheticLambda3; +HSPLcom/google/firebase/crashlytics/internal/common/Utils$$ExternalSyntheticLambda3;->(Lcom/google/android/gms/tasks/TaskCompletionSource;)V +Lcom/google/firebase/crashlytics/internal/common/Utils$$ExternalSyntheticLambda4; +HSPLcom/google/firebase/crashlytics/internal/common/Utils$$ExternalSyntheticLambda4;->(Ljava/util/concurrent/Callable;Ljava/util/concurrent/Executor;Lcom/google/android/gms/tasks/TaskCompletionSource;)V +HSPLcom/google/firebase/crashlytics/internal/common/Utils$$ExternalSyntheticLambda4;->run()V +Lcom/google/firebase/crashlytics/internal/metadata/FileLogStore; +Lcom/google/firebase/crashlytics/internal/metadata/KeysMap; +HSPLcom/google/firebase/crashlytics/internal/metadata/KeysMap;->(II)V +Lcom/google/firebase/crashlytics/internal/metadata/LogFileManager; +HSPLcom/google/firebase/crashlytics/internal/metadata/LogFileManager;->()V +HSPLcom/google/firebase/crashlytics/internal/metadata/LogFileManager;->(Lcom/google/firebase/crashlytics/internal/persistence/FileStore;)V +HSPLcom/google/firebase/crashlytics/internal/metadata/LogFileManager;->getWorkingFileForSession(Ljava/lang/String;)Ljava/io/File; +HSPLcom/google/firebase/crashlytics/internal/metadata/LogFileManager;->setCurrentSession(Ljava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/metadata/LogFileManager;->setLogFile(Ljava/io/File;I)V +HSPLcom/google/firebase/crashlytics/internal/metadata/LogFileManager;->writeToLog(JLjava/lang/String;)V +Lcom/google/firebase/crashlytics/internal/metadata/LogFileManager$NoopLogStore; +HSPLcom/google/firebase/crashlytics/internal/metadata/LogFileManager$NoopLogStore;->()V +HSPLcom/google/firebase/crashlytics/internal/metadata/LogFileManager$NoopLogStore;->(Lcom/google/firebase/crashlytics/internal/metadata/LogFileManager$1;)V +HSPLcom/google/firebase/crashlytics/internal/metadata/LogFileManager$NoopLogStore;->closeLogFile()V +Lcom/google/firebase/crashlytics/internal/metadata/MetaDataStore; +HSPLcom/google/firebase/crashlytics/internal/metadata/MetaDataStore;->()V +HSPLcom/google/firebase/crashlytics/internal/metadata/MetaDataStore;->(Lcom/google/firebase/crashlytics/internal/persistence/FileStore;)V +Lcom/google/firebase/crashlytics/internal/metadata/QueueFile; +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->()V +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->(Ljava/io/File;)V +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->add([B)V +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->add([BII)V +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->expandIfNecessary(I)V +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->initialize(Ljava/io/File;)V +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->isEmpty()Z +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->nonNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->open(Ljava/io/File;)Ljava/io/RandomAccessFile; +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->readElement(I)Lcom/google/firebase/crashlytics/internal/metadata/QueueFile$Element; +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->readHeader()V +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->readInt([BI)I +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->remainingBytes()I +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->ringWrite(I[BII)V +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->usedBytes()I +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->wrapPosition(I)I +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->writeHeader(IIII)V +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->writeInt([BII)V +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->writeInts([B[I)V +Lcom/google/firebase/crashlytics/internal/metadata/QueueFile$Element; +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile$Element;->()V +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile$Element;->(II)V +Lcom/google/firebase/crashlytics/internal/metadata/QueueFileLogStore; +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFileLogStore;->()V +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFileLogStore;->(Ljava/io/File;I)V +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFileLogStore;->doWriteToLog(JLjava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFileLogStore;->openLogFile()V +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFileLogStore;->writeToLog(JLjava/lang/String;)V +Lcom/google/firebase/crashlytics/internal/metadata/RolloutAssignmentList; +HSPLcom/google/firebase/crashlytics/internal/metadata/RolloutAssignmentList;->(I)V +Lcom/google/firebase/crashlytics/internal/metadata/UserMetadata; +HSPLcom/google/firebase/crashlytics/internal/metadata/UserMetadata;->(Ljava/lang/String;Lcom/google/firebase/crashlytics/internal/persistence/FileStore;Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;)V +Lcom/google/firebase/crashlytics/internal/metadata/UserMetadata$SerializeableKeysMap; +HSPLcom/google/firebase/crashlytics/internal/metadata/UserMetadata$SerializeableKeysMap;->(Lcom/google/firebase/crashlytics/internal/metadata/UserMetadata;Z)V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder;->configure(Lcom/google/firebase/encoders/config/EncoderConfig;)V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportApplicationExitInfoBuildIdMappingForArchEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportApplicationExitInfoBuildIdMappingForArchEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportApplicationExitInfoBuildIdMappingForArchEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportApplicationExitInfoEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportApplicationExitInfoEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportApplicationExitInfoEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportCustomAttributeEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportCustomAttributeEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportCustomAttributeEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportEncoder;->encode(Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport;Lcom/google/firebase/encoders/ObjectEncoderContext;)V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportEncoder;->encode(Ljava/lang/Object;Ljava/lang/Object;)V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportFilesPayloadEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportFilesPayloadEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportFilesPayloadEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportFilesPayloadFileEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportFilesPayloadFileEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportFilesPayloadFileEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionApplicationEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionApplicationEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionApplicationEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionApplicationEncoder;->encode(Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application;Lcom/google/firebase/encoders/ObjectEncoderContext;)V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionApplicationEncoder;->encode(Ljava/lang/Object;Ljava/lang/Object;)V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionApplicationOrganizationEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionApplicationOrganizationEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionApplicationOrganizationEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionDeviceEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionDeviceEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionDeviceEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionDeviceEncoder;->encode(Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device;Lcom/google/firebase/encoders/ObjectEncoderContext;)V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionDeviceEncoder;->encode(Ljava/lang/Object;Ljava/lang/Object;)V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEncoder;->encode(Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session;Lcom/google/firebase/encoders/ObjectEncoderContext;)V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEncoder;->encode(Ljava/lang/Object;Ljava/lang/Object;)V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionBinaryImageEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionBinaryImageEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionBinaryImageEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionExceptionEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionExceptionEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionExceptionEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionSignalEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionSignalEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionSignalEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionThreadEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionThreadEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionThreadEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionThreadFrameEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionThreadFrameEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionThreadFrameEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationProcessDetailsEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationProcessDetailsEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationProcessDetailsEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventDeviceEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventDeviceEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventDeviceEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventLogEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventLogEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventLogEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventRolloutAssignmentEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventRolloutAssignmentEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventRolloutAssignmentEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventRolloutAssignmentRolloutVariantEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventRolloutAssignmentRolloutVariantEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventRolloutAssignmentRolloutVariantEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventRolloutsStateEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventRolloutsStateEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventRolloutsStateEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionOperatingSystemEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionOperatingSystemEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionOperatingSystemEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionOperatingSystemEncoder;->encode(Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem;Lcom/google/firebase/encoders/ObjectEncoderContext;)V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionOperatingSystemEncoder;->encode(Ljava/lang/Object;Ljava/lang/Object;)V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionUserEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionUserEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionUserEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport;->(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session;Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$FilesPayload;Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$ApplicationExitInfo;)V +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport;->(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session;Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$FilesPayload;Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$ApplicationExitInfo;Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport$1;)V +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport;->getAppExitInfo()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$ApplicationExitInfo; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport;->getAppQualitySessionId()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport;->getBuildVersion()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport;->getDisplayVersion()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport;->getFirebaseInstallationId()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport;->getGmpAppId()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport;->getInstallationUuid()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport;->getNdkPayload()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$FilesPayload; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport;->getPlatform()I +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport;->getSdkVersion()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport;->getSession()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport$Builder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport$Builder;->build()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport$Builder;->setBuildVersion(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport$Builder;->setDisplayVersion(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport$Builder;->setFirebaseInstallationId(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport$Builder;->setGmpAppId(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport$Builder;->setInstallationUuid(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport$Builder;->setPlatform(I)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport$Builder;->setSdkVersion(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport$Builder;->setSession(Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Builder; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_ApplicationExitInfo; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_ApplicationExitInfo_BuildIdMappingForArch; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_CustomAttribute; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_FilesPayload; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_FilesPayload_File; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JLjava/lang/Long;ZLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application;Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$User;Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem;Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device;Ljava/util/List;I)V +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JLjava/lang/Long;ZLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application;Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$User;Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem;Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device;Ljava/util/List;ILcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session$1;)V +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session;->getApp()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session;->getAppQualitySessionId()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session;->getDevice()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session;->getEndedAt()Ljava/lang/Long; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session;->getEvents()Ljava/util/List; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session;->getGenerator()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session;->getGeneratorType()I +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session;->getIdentifier()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session;->getOs()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session;->getStartedAt()J +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session;->getUser()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$User; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session;->isCrashed()Z +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session$Builder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session$Builder;->build()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session$Builder;->setApp(Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session$Builder;->setCrashed(Z)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session$Builder;->setDevice(Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session$Builder;->setGenerator(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session$Builder;->setGeneratorType(I)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session$Builder;->setIdentifier(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session$Builder;->setOs(Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session$Builder;->setStartedAt(J)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Builder; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application$Organization;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application$Organization;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application$1;)V +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application;->getDevelopmentPlatform()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application;->getDevelopmentPlatformVersion()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application;->getDisplayVersion()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application;->getIdentifier()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application;->getInstallationUuid()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application;->getOrganization()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application$Organization; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application;->getVersion()Ljava/lang/String; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application$Builder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application$Builder;->build()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application$Builder;->setDevelopmentPlatform(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application$Builder;->setDevelopmentPlatformVersion(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application$Builder;->setDisplayVersion(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application$Builder;->setIdentifier(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application$Builder;->setInstallationUuid(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application$Builder;->setVersion(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application$Builder; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application_Organization; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device;->(ILjava/lang/String;IJJZILjava/lang/String;Ljava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device;->(ILjava/lang/String;IJJZILjava/lang/String;Ljava/lang/String;Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device$1;)V +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device;->getArch()I +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device;->getCores()I +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device;->getDiskSpace()J +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device;->getManufacturer()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device;->getModel()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device;->getModelClass()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device;->getRam()J +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device;->getState()I +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device;->isSimulator()Z +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device$Builder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device$Builder;->build()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device$Builder;->setArch(I)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device$Builder;->setCores(I)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device$Builder;->setDiskSpace(J)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device$Builder;->setManufacturer(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device$Builder;->setModel(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device$Builder;->setModelClass(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device$Builder;->setRam(J)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device$Builder;->setSimulator(Z)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device$Builder;->setState(I)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device$Builder; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Event; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Event_Application; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Event_Application_Execution; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Event_Application_Execution_BinaryImage; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Event_Application_Execution_Exception; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Event_Application_Execution_Signal; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Event_Application_Execution_Thread; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Event_Application_Execution_Thread_Frame; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Event_Application_ProcessDetails; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Event_Device; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Event_Log; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Event_RolloutAssignment; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Event_RolloutAssignment_RolloutVariant; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Event_RolloutsState; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_OperatingSystem; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_OperatingSystem;->(ILjava/lang/String;Ljava/lang/String;Z)V +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_OperatingSystem;->(ILjava/lang/String;Ljava/lang/String;ZLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_OperatingSystem$1;)V +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_OperatingSystem;->getBuildVersion()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_OperatingSystem;->getPlatform()I +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_OperatingSystem;->getVersion()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_OperatingSystem;->isJailbroken()Z +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_OperatingSystem$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_OperatingSystem$Builder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_OperatingSystem$Builder;->build()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_OperatingSystem$Builder;->setBuildVersion(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_OperatingSystem$Builder;->setJailbroken(Z)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_OperatingSystem$Builder;->setPlatform(I)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_OperatingSystem$Builder;->setVersion(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem$Builder; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_User; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_StaticSessionData; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_StaticSessionData;->(Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$AppData;Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$OsData;Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$DeviceData;)V +Lcom/google/firebase/crashlytics/internal/model/AutoValue_StaticSessionData_AppData; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_StaticSessionData_AppData;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider;)V +Lcom/google/firebase/crashlytics/internal/model/AutoValue_StaticSessionData_DeviceData; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_StaticSessionData_DeviceData;->(ILjava/lang/String;IJJZILjava/lang/String;Ljava/lang/String;)V +Lcom/google/firebase/crashlytics/internal/model/AutoValue_StaticSessionData_OsData; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_StaticSessionData_OsData;->(Ljava/lang/String;Ljava/lang/String;Z)V +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport; +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport;->()V +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport;->()V +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport;->access$000()Ljava/nio/charset/Charset; +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport;->builder()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Builder; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$ApplicationExitInfo; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$ApplicationExitInfo$BuildIdMappingForArch; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Builder;->()V +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$CustomAttribute; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$FilesPayload; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$FilesPayload$File; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session; +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session;->()V +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session;->builder()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session;->getIdentifierUtf8Bytes()[B +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application; +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application;->()V +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application;->builder()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application$Builder; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application$Builder;->()V +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application$Organization; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Builder;->()V +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device; +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device;->()V +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device;->builder()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device$Builder; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device$Builder;->()V +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Event; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Event$Application; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Event$Application$Execution; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Event$Application$Execution$BinaryImage; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Event$Application$Execution$Exception; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Event$Application$Execution$Signal; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Event$Application$Execution$Thread; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Event$Application$Execution$Thread$Frame; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Event$Application$ProcessDetails; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Event$Device; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Event$Log; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Event$RolloutAssignment; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Event$RolloutAssignment$RolloutVariant; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Event$RolloutsState; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem; +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem;->()V +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem;->builder()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem$Builder; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem$Builder;->()V +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$User; +Lcom/google/firebase/crashlytics/internal/model/StaticSessionData; +HSPLcom/google/firebase/crashlytics/internal/model/StaticSessionData;->()V +HSPLcom/google/firebase/crashlytics/internal/model/StaticSessionData;->create(Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$AppData;Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$OsData;Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$DeviceData;)Lcom/google/firebase/crashlytics/internal/model/StaticSessionData; +Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$AppData; +HSPLcom/google/firebase/crashlytics/internal/model/StaticSessionData$AppData;->()V +HSPLcom/google/firebase/crashlytics/internal/model/StaticSessionData$AppData;->create(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider;)Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$AppData; +Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$DeviceData; +HSPLcom/google/firebase/crashlytics/internal/model/StaticSessionData$DeviceData;->()V +HSPLcom/google/firebase/crashlytics/internal/model/StaticSessionData$DeviceData;->create(ILjava/lang/String;IJJZILjava/lang/String;Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$DeviceData; +Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$OsData; +HSPLcom/google/firebase/crashlytics/internal/model/StaticSessionData$OsData;->()V +HSPLcom/google/firebase/crashlytics/internal/model/StaticSessionData$OsData;->create(Ljava/lang/String;Ljava/lang/String;Z)Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$OsData; +Lcom/google/firebase/crashlytics/internal/model/serialization/CrashlyticsReportJsonTransform; +HSPLcom/google/firebase/crashlytics/internal/model/serialization/CrashlyticsReportJsonTransform;->()V +HSPLcom/google/firebase/crashlytics/internal/model/serialization/CrashlyticsReportJsonTransform;->()V +HSPLcom/google/firebase/crashlytics/internal/model/serialization/CrashlyticsReportJsonTransform;->reportToJson(Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport;)Ljava/lang/String; +Lcom/google/firebase/crashlytics/internal/network/HttpRequestFactory; +HSPLcom/google/firebase/crashlytics/internal/network/HttpRequestFactory;->()V +Lcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence; +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence;->()V +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence;->(Lcom/google/firebase/crashlytics/internal/persistence/FileStore;Lcom/google/firebase/crashlytics/internal/settings/SettingsProvider;Lcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsSubscriber;)V +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence;->capAndGetOpenSessions(Ljava/lang/String;)Ljava/util/SortedSet; +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence;->capFinalizedReports()V +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence;->convertTimestampFromSecondsToMs(J)J +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence;->finalizeReports(Ljava/lang/String;J)V +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence;->getAllFinalizedReportFiles()Ljava/util/List; +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence;->getOpenSessionIds()Ljava/util/SortedSet; +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence;->hasFinalizedReports()Z +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence;->lambda$static$1(Ljava/io/File;Ljava/lang/String;)Z +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence;->persistReport(Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport;)V +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence;->synthesizeReport(Ljava/lang/String;J)V +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence;->writeTextFile(Ljava/io/File;Ljava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence;->writeTextFile(Ljava/io/File;Ljava/lang/String;J)V +Lcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence$$ExternalSyntheticLambda2; +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence$$ExternalSyntheticLambda2;->()V +Lcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence$$ExternalSyntheticLambda3; +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence$$ExternalSyntheticLambda3;->()V +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence$$ExternalSyntheticLambda3;->accept(Ljava/io/File;Ljava/lang/String;)Z +Lcom/google/firebase/crashlytics/internal/persistence/FileStore; +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->(Landroid/content/Context;)V +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->cleanupDir(Ljava/io/File;)V +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->cleanupPreviousFileSystems()V +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->deleteSessionFiles(Ljava/lang/String;)Z +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->getAllOpenSessionIds()Ljava/util/List; +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->getCommonFile(Ljava/lang/String;)Ljava/io/File; +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->getNativeReports()Ljava/util/List; +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->getPriorityReports()Ljava/util/List; +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->getReports()Ljava/util/List; +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->getSessionDir(Ljava/lang/String;)Ljava/io/File; +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->getSessionFile(Ljava/lang/String;Ljava/lang/String;)Ljava/io/File; +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->getSessionFiles(Ljava/lang/String;Ljava/io/FilenameFilter;)Ljava/util/List; +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->prepareBaseDir(Ljava/io/File;)Ljava/io/File; +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->prepareDir(Ljava/io/File;)Ljava/io/File; +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->recursiveDelete(Ljava/io/File;)Z +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->safeArrayToList([Ljava/lang/Object;)Ljava/util/List; +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->sanitizeName(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->useV2FileSystem()Z +Lcom/google/firebase/crashlytics/internal/send/DataTransportCrashlyticsReportSender; +HSPLcom/google/firebase/crashlytics/internal/send/DataTransportCrashlyticsReportSender;->()V +HSPLcom/google/firebase/crashlytics/internal/send/DataTransportCrashlyticsReportSender;->(Lcom/google/firebase/crashlytics/internal/send/ReportQueue;Lcom/google/android/datatransport/Transformer;)V +HSPLcom/google/firebase/crashlytics/internal/send/DataTransportCrashlyticsReportSender;->create(Landroid/content/Context;Lcom/google/firebase/crashlytics/internal/settings/SettingsProvider;Lcom/google/firebase/crashlytics/internal/common/OnDemandCounter;)Lcom/google/firebase/crashlytics/internal/send/DataTransportCrashlyticsReportSender; +HSPLcom/google/firebase/crashlytics/internal/send/DataTransportCrashlyticsReportSender;->mergeStrings(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +Lcom/google/firebase/crashlytics/internal/send/DataTransportCrashlyticsReportSender$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/crashlytics/internal/send/DataTransportCrashlyticsReportSender$$ExternalSyntheticLambda0;->()V +Lcom/google/firebase/crashlytics/internal/send/ReportQueue; +HSPLcom/google/firebase/crashlytics/internal/send/ReportQueue;->(DDJLcom/google/android/datatransport/Transport;Lcom/google/firebase/crashlytics/internal/common/OnDemandCounter;)V +HSPLcom/google/firebase/crashlytics/internal/send/ReportQueue;->(Lcom/google/android/datatransport/Transport;Lcom/google/firebase/crashlytics/internal/settings/Settings;Lcom/google/firebase/crashlytics/internal/common/OnDemandCounter;)V +Lcom/google/firebase/crashlytics/internal/settings/CachedSettingsIo; +HSPLcom/google/firebase/crashlytics/internal/settings/CachedSettingsIo;->(Lcom/google/firebase/crashlytics/internal/persistence/FileStore;)V +HSPLcom/google/firebase/crashlytics/internal/settings/CachedSettingsIo;->getSettingsFile()Ljava/io/File; +HSPLcom/google/firebase/crashlytics/internal/settings/CachedSettingsIo;->readCachedSettings()Lorg/json/JSONObject; +Lcom/google/firebase/crashlytics/internal/settings/DefaultSettingsJsonTransform; +HSPLcom/google/firebase/crashlytics/internal/settings/DefaultSettingsJsonTransform;->defaultSettings(Lcom/google/firebase/crashlytics/internal/common/CurrentTimeProvider;)Lcom/google/firebase/crashlytics/internal/settings/Settings; +Lcom/google/firebase/crashlytics/internal/settings/DefaultSettingsSpiCall; +HSPLcom/google/firebase/crashlytics/internal/settings/DefaultSettingsSpiCall;->(Ljava/lang/String;Lcom/google/firebase/crashlytics/internal/network/HttpRequestFactory;)V +HSPLcom/google/firebase/crashlytics/internal/settings/DefaultSettingsSpiCall;->(Ljava/lang/String;Lcom/google/firebase/crashlytics/internal/network/HttpRequestFactory;Lcom/google/firebase/crashlytics/internal/Logger;)V +Lcom/google/firebase/crashlytics/internal/settings/Settings; +HSPLcom/google/firebase/crashlytics/internal/settings/Settings;->(JLcom/google/firebase/crashlytics/internal/settings/Settings$SessionData;Lcom/google/firebase/crashlytics/internal/settings/Settings$FeatureFlagData;IIDDI)V +Lcom/google/firebase/crashlytics/internal/settings/Settings$FeatureFlagData; +HSPLcom/google/firebase/crashlytics/internal/settings/Settings$FeatureFlagData;->(ZZZ)V +Lcom/google/firebase/crashlytics/internal/settings/Settings$SessionData; +HSPLcom/google/firebase/crashlytics/internal/settings/Settings$SessionData;->(II)V +Lcom/google/firebase/crashlytics/internal/settings/SettingsCacheBehavior; +HSPLcom/google/firebase/crashlytics/internal/settings/SettingsCacheBehavior;->()V +HSPLcom/google/firebase/crashlytics/internal/settings/SettingsCacheBehavior;->(Ljava/lang/String;I)V +Lcom/google/firebase/crashlytics/internal/settings/SettingsController; +HSPLcom/google/firebase/crashlytics/internal/settings/SettingsController;->(Landroid/content/Context;Lcom/google/firebase/crashlytics/internal/settings/SettingsRequest;Lcom/google/firebase/crashlytics/internal/common/CurrentTimeProvider;Lcom/google/firebase/crashlytics/internal/settings/SettingsJsonParser;Lcom/google/firebase/crashlytics/internal/settings/CachedSettingsIo;Lcom/google/firebase/crashlytics/internal/settings/SettingsSpiCall;Lcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;)V +HSPLcom/google/firebase/crashlytics/internal/settings/SettingsController;->buildInstanceIdentifierChanged()Z +HSPLcom/google/firebase/crashlytics/internal/settings/SettingsController;->create(Landroid/content/Context;Ljava/lang/String;Lcom/google/firebase/crashlytics/internal/common/IdManager;Lcom/google/firebase/crashlytics/internal/network/HttpRequestFactory;Ljava/lang/String;Ljava/lang/String;Lcom/google/firebase/crashlytics/internal/persistence/FileStore;Lcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;)Lcom/google/firebase/crashlytics/internal/settings/SettingsController; +HSPLcom/google/firebase/crashlytics/internal/settings/SettingsController;->getCachedSettingsData(Lcom/google/firebase/crashlytics/internal/settings/SettingsCacheBehavior;)Lcom/google/firebase/crashlytics/internal/settings/Settings; +HSPLcom/google/firebase/crashlytics/internal/settings/SettingsController;->getSettingsAsync()Lcom/google/android/gms/tasks/Task; +HSPLcom/google/firebase/crashlytics/internal/settings/SettingsController;->getSettingsSync()Lcom/google/firebase/crashlytics/internal/settings/Settings; +HSPLcom/google/firebase/crashlytics/internal/settings/SettingsController;->getStoredBuildInstanceIdentifier()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/settings/SettingsController;->loadSettingsData(Lcom/google/firebase/crashlytics/internal/settings/SettingsCacheBehavior;Ljava/util/concurrent/Executor;)Lcom/google/android/gms/tasks/Task; +HSPLcom/google/firebase/crashlytics/internal/settings/SettingsController;->loadSettingsData(Ljava/util/concurrent/Executor;)Lcom/google/android/gms/tasks/Task; +Lcom/google/firebase/crashlytics/internal/settings/SettingsController$1; +HSPLcom/google/firebase/crashlytics/internal/settings/SettingsController$1;->(Lcom/google/firebase/crashlytics/internal/settings/SettingsController;)V +Lcom/google/firebase/crashlytics/internal/settings/SettingsJsonParser; +HSPLcom/google/firebase/crashlytics/internal/settings/SettingsJsonParser;->(Lcom/google/firebase/crashlytics/internal/common/CurrentTimeProvider;)V +Lcom/google/firebase/crashlytics/internal/settings/SettingsJsonTransform; +Lcom/google/firebase/crashlytics/internal/settings/SettingsProvider; +Lcom/google/firebase/crashlytics/internal/settings/SettingsRequest; +HSPLcom/google/firebase/crashlytics/internal/settings/SettingsRequest;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/google/firebase/crashlytics/internal/common/InstallIdProvider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V +Lcom/google/firebase/crashlytics/internal/settings/SettingsSpiCall; +Lcom/google/firebase/crashlytics/internal/stacktrace/MiddleOutFallbackStrategy; +HSPLcom/google/firebase/crashlytics/internal/stacktrace/MiddleOutFallbackStrategy;->(I[Lcom/google/firebase/crashlytics/internal/stacktrace/StackTraceTrimmingStrategy;)V +Lcom/google/firebase/crashlytics/internal/stacktrace/MiddleOutStrategy; +HSPLcom/google/firebase/crashlytics/internal/stacktrace/MiddleOutStrategy;->(I)V +Lcom/google/firebase/crashlytics/internal/stacktrace/RemoveRepeatsStrategy; +HSPLcom/google/firebase/crashlytics/internal/stacktrace/RemoveRepeatsStrategy;->(I)V +Lcom/google/firebase/crashlytics/internal/stacktrace/StackTraceTrimmingStrategy; +Lcom/google/firebase/crashlytics/ktx/FirebaseCrashlyticsKt; +HSPLcom/google/firebase/crashlytics/ktx/FirebaseCrashlyticsKt;->getCrashlytics(Lcom/google/firebase/ktx/Firebase;)Lcom/google/firebase/crashlytics/FirebaseCrashlytics; +Lcom/google/firebase/crashlytics/ktx/FirebaseCrashlyticsKtxRegistrar; +HSPLcom/google/firebase/crashlytics/ktx/FirebaseCrashlyticsKtxRegistrar;->()V +HSPLcom/google/firebase/crashlytics/ktx/FirebaseCrashlyticsKtxRegistrar;->()V +HSPLcom/google/firebase/crashlytics/ktx/FirebaseCrashlyticsKtxRegistrar;->getComponents()Ljava/util/List; +Lcom/google/firebase/crashlytics/ktx/FirebaseCrashlyticsKtxRegistrar$Companion; +HSPLcom/google/firebase/crashlytics/ktx/FirebaseCrashlyticsKtxRegistrar$Companion;->()V +HSPLcom/google/firebase/crashlytics/ktx/FirebaseCrashlyticsKtxRegistrar$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/google/firebase/datatransport/TransportRegistrar; +HSPLcom/google/firebase/datatransport/TransportRegistrar;->()V +HSPLcom/google/firebase/datatransport/TransportRegistrar;->getComponents()Ljava/util/List; +Lcom/google/firebase/datatransport/TransportRegistrar$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/datatransport/TransportRegistrar$$ExternalSyntheticLambda0;->()V +Lcom/google/firebase/dynamicloading/ComponentLoader; +Lcom/google/firebase/encoders/DataEncoder; +Lcom/google/firebase/encoders/Encoder; +Lcom/google/firebase/encoders/FieldDescriptor; +HSPLcom/google/firebase/encoders/FieldDescriptor;->(Ljava/lang/String;Ljava/util/Map;)V +HSPLcom/google/firebase/encoders/FieldDescriptor;->getName()Ljava/lang/String; +HSPLcom/google/firebase/encoders/FieldDescriptor;->of(Ljava/lang/String;)Lcom/google/firebase/encoders/FieldDescriptor; +Lcom/google/firebase/encoders/ObjectEncoder; +Lcom/google/firebase/encoders/ObjectEncoderContext; +Lcom/google/firebase/encoders/ValueEncoder; +Lcom/google/firebase/encoders/ValueEncoderContext; +Lcom/google/firebase/encoders/config/Configurator; +Lcom/google/firebase/encoders/config/EncoderConfig; +Lcom/google/firebase/encoders/json/JsonDataEncoderBuilder; +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder;->()V +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder;->()V +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder;->access$100(Lcom/google/firebase/encoders/json/JsonDataEncoderBuilder;)Ljava/util/Map; +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder;->access$200(Lcom/google/firebase/encoders/json/JsonDataEncoderBuilder;)Ljava/util/Map; +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder;->access$300(Lcom/google/firebase/encoders/json/JsonDataEncoderBuilder;)Lcom/google/firebase/encoders/ObjectEncoder; +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder;->access$400(Lcom/google/firebase/encoders/json/JsonDataEncoderBuilder;)Z +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder;->build()Lcom/google/firebase/encoders/DataEncoder; +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder;->configureWith(Lcom/google/firebase/encoders/config/Configurator;)Lcom/google/firebase/encoders/json/JsonDataEncoderBuilder; +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder;->ignoreNullValues(Z)Lcom/google/firebase/encoders/json/JsonDataEncoderBuilder; +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder;->lambda$static$1(Ljava/lang/String;Lcom/google/firebase/encoders/ValueEncoderContext;)V +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder;->registerEncoder(Ljava/lang/Class;Lcom/google/firebase/encoders/ObjectEncoder;)Lcom/google/firebase/encoders/config/EncoderConfig; +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder;->registerEncoder(Ljava/lang/Class;Lcom/google/firebase/encoders/ObjectEncoder;)Lcom/google/firebase/encoders/json/JsonDataEncoderBuilder; +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder;->registerEncoder(Ljava/lang/Class;Lcom/google/firebase/encoders/ValueEncoder;)Lcom/google/firebase/encoders/json/JsonDataEncoderBuilder; +Lcom/google/firebase/encoders/json/JsonDataEncoderBuilder$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder$$ExternalSyntheticLambda0;->()V +Lcom/google/firebase/encoders/json/JsonDataEncoderBuilder$$ExternalSyntheticLambda1; +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder$$ExternalSyntheticLambda1;->()V +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder$$ExternalSyntheticLambda1;->encode(Ljava/lang/Object;Ljava/lang/Object;)V +Lcom/google/firebase/encoders/json/JsonDataEncoderBuilder$$ExternalSyntheticLambda2; +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder$$ExternalSyntheticLambda2;->()V +Lcom/google/firebase/encoders/json/JsonDataEncoderBuilder$1; +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder$1;->(Lcom/google/firebase/encoders/json/JsonDataEncoderBuilder;)V +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder$1;->encode(Ljava/lang/Object;)Ljava/lang/String; +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder$1;->encode(Ljava/lang/Object;Ljava/io/Writer;)V +Lcom/google/firebase/encoders/json/JsonDataEncoderBuilder$TimestampEncoder; +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder$TimestampEncoder;->()V +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder$TimestampEncoder;->()V +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder$TimestampEncoder;->(Lcom/google/firebase/encoders/json/JsonDataEncoderBuilder$1;)V +Lcom/google/firebase/encoders/json/JsonValueObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->(Ljava/io/Writer;Ljava/util/Map;Ljava/util/Map;Lcom/google/firebase/encoders/ObjectEncoder;Z)V +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->add(I)Lcom/google/firebase/encoders/json/JsonValueObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->add(J)Lcom/google/firebase/encoders/json/JsonValueObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->add(Lcom/google/firebase/encoders/FieldDescriptor;I)Lcom/google/firebase/encoders/ObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->add(Lcom/google/firebase/encoders/FieldDescriptor;J)Lcom/google/firebase/encoders/ObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->add(Lcom/google/firebase/encoders/FieldDescriptor;Ljava/lang/Object;)Lcom/google/firebase/encoders/ObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->add(Lcom/google/firebase/encoders/FieldDescriptor;Z)Lcom/google/firebase/encoders/ObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->add(Ljava/lang/Object;Z)Lcom/google/firebase/encoders/json/JsonValueObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->add(Ljava/lang/String;)Lcom/google/firebase/encoders/ValueEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->add(Ljava/lang/String;)Lcom/google/firebase/encoders/json/JsonValueObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->add(Ljava/lang/String;I)Lcom/google/firebase/encoders/json/JsonValueObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->add(Ljava/lang/String;J)Lcom/google/firebase/encoders/json/JsonValueObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->add(Ljava/lang/String;Ljava/lang/Object;)Lcom/google/firebase/encoders/json/JsonValueObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->add(Ljava/lang/String;Z)Lcom/google/firebase/encoders/json/JsonValueObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->add(Z)Lcom/google/firebase/encoders/json/JsonValueObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->add([B)Lcom/google/firebase/encoders/json/JsonValueObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->close()V +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->doEncode(Lcom/google/firebase/encoders/ObjectEncoder;Ljava/lang/Object;Z)Lcom/google/firebase/encoders/json/JsonValueObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->internalAddIgnoreNullValues(Ljava/lang/String;Ljava/lang/Object;)Lcom/google/firebase/encoders/json/JsonValueObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->maybeUnNest()V +Lcom/google/firebase/encoders/json/NumberedEnum; +Lcom/google/firebase/events/EventHandler; +Lcom/google/firebase/events/Publisher; +Lcom/google/firebase/events/Subscriber; +Lcom/google/firebase/heartbeatinfo/DefaultHeartBeatController; +HSPLcom/google/firebase/heartbeatinfo/DefaultHeartBeatController;->(Landroid/content/Context;Ljava/lang/String;Ljava/util/Set;Lcom/google/firebase/inject/Provider;Ljava/util/concurrent/Executor;)V +HSPLcom/google/firebase/heartbeatinfo/DefaultHeartBeatController;->(Lcom/google/firebase/inject/Provider;Ljava/util/Set;Ljava/util/concurrent/Executor;Lcom/google/firebase/inject/Provider;Landroid/content/Context;)V +HSPLcom/google/firebase/heartbeatinfo/DefaultHeartBeatController;->component()Lcom/google/firebase/components/Component; +HSPLcom/google/firebase/heartbeatinfo/DefaultHeartBeatController;->lambda$component$3(Lcom/google/firebase/components/Qualified;Lcom/google/firebase/components/ComponentContainer;)Lcom/google/firebase/heartbeatinfo/DefaultHeartBeatController; +HSPLcom/google/firebase/heartbeatinfo/DefaultHeartBeatController;->lambda$new$2(Landroid/content/Context;Ljava/lang/String;)Lcom/google/firebase/heartbeatinfo/HeartBeatInfoStorage; +HSPLcom/google/firebase/heartbeatinfo/DefaultHeartBeatController;->lambda$registerHeartBeat$0$com-google-firebase-heartbeatinfo-DefaultHeartBeatController()Ljava/lang/Void; +HSPLcom/google/firebase/heartbeatinfo/DefaultHeartBeatController;->registerHeartBeat()Lcom/google/android/gms/tasks/Task; +Lcom/google/firebase/heartbeatinfo/DefaultHeartBeatController$$ExternalSyntheticLambda1; +HSPLcom/google/firebase/heartbeatinfo/DefaultHeartBeatController$$ExternalSyntheticLambda1;->(Lcom/google/firebase/heartbeatinfo/DefaultHeartBeatController;)V +HSPLcom/google/firebase/heartbeatinfo/DefaultHeartBeatController$$ExternalSyntheticLambda1;->call()Ljava/lang/Object; +Lcom/google/firebase/heartbeatinfo/DefaultHeartBeatController$$ExternalSyntheticLambda2; +HSPLcom/google/firebase/heartbeatinfo/DefaultHeartBeatController$$ExternalSyntheticLambda2;->(Lcom/google/firebase/components/Qualified;)V +HSPLcom/google/firebase/heartbeatinfo/DefaultHeartBeatController$$ExternalSyntheticLambda2;->create(Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +Lcom/google/firebase/heartbeatinfo/DefaultHeartBeatController$$ExternalSyntheticLambda3; +HSPLcom/google/firebase/heartbeatinfo/DefaultHeartBeatController$$ExternalSyntheticLambda3;->(Landroid/content/Context;Ljava/lang/String;)V +HSPLcom/google/firebase/heartbeatinfo/DefaultHeartBeatController$$ExternalSyntheticLambda3;->get()Ljava/lang/Object; +Lcom/google/firebase/heartbeatinfo/HeartBeatConsumer; +Lcom/google/firebase/heartbeatinfo/HeartBeatConsumerComponent; +HSPLcom/google/firebase/heartbeatinfo/HeartBeatConsumerComponent;->create()Lcom/google/firebase/components/Component; +Lcom/google/firebase/heartbeatinfo/HeartBeatConsumerComponent$1; +HSPLcom/google/firebase/heartbeatinfo/HeartBeatConsumerComponent$1;->()V +Lcom/google/firebase/heartbeatinfo/HeartBeatController; +Lcom/google/firebase/heartbeatinfo/HeartBeatInfo; +Lcom/google/firebase/heartbeatinfo/HeartBeatInfoStorage; +HSPLcom/google/firebase/heartbeatinfo/HeartBeatInfoStorage;->()V +HSPLcom/google/firebase/heartbeatinfo/HeartBeatInfoStorage;->(Landroid/content/Context;Ljava/lang/String;)V +HSPLcom/google/firebase/heartbeatinfo/HeartBeatInfoStorage;->getFormattedDate(J)Ljava/lang/String; +HSPLcom/google/firebase/heartbeatinfo/HeartBeatInfoStorage;->getStoredUserAgentString(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/google/firebase/heartbeatinfo/HeartBeatInfoStorage;->storeHeartBeat(JLjava/lang/String;)V +Lcom/google/firebase/inject/Deferred; +Lcom/google/firebase/inject/Deferred$DeferredHandler; +Lcom/google/firebase/inject/Provider; +Lcom/google/firebase/installations/FirebaseInstallations; +HSPLcom/google/firebase/installations/FirebaseInstallations;->()V +HSPLcom/google/firebase/installations/FirebaseInstallations;->(Lcom/google/firebase/FirebaseApp;Lcom/google/firebase/inject/Provider;Ljava/util/concurrent/ExecutorService;Ljava/util/concurrent/Executor;)V +HSPLcom/google/firebase/installations/FirebaseInstallations;->(Ljava/util/concurrent/ExecutorService;Ljava/util/concurrent/Executor;Lcom/google/firebase/FirebaseApp;Lcom/google/firebase/installations/remote/FirebaseInstallationServiceClient;Lcom/google/firebase/installations/local/PersistedInstallation;Lcom/google/firebase/installations/Utils;Lcom/google/firebase/components/Lazy;Lcom/google/firebase/installations/RandomFidGenerator;)V +Lcom/google/firebase/installations/FirebaseInstallations$$ExternalSyntheticLambda4; +HSPLcom/google/firebase/installations/FirebaseInstallations$$ExternalSyntheticLambda4;->(Lcom/google/firebase/FirebaseApp;)V +Lcom/google/firebase/installations/FirebaseInstallations$1; +HSPLcom/google/firebase/installations/FirebaseInstallations$1;->()V +Lcom/google/firebase/installations/FirebaseInstallationsApi; +Lcom/google/firebase/installations/FirebaseInstallationsException; +Lcom/google/firebase/installations/FirebaseInstallationsKtxRegistrar; +HSPLcom/google/firebase/installations/FirebaseInstallationsKtxRegistrar;->()V +HSPLcom/google/firebase/installations/FirebaseInstallationsKtxRegistrar;->getComponents()Ljava/util/List; +Lcom/google/firebase/installations/FirebaseInstallationsRegistrar; +HSPLcom/google/firebase/installations/FirebaseInstallationsRegistrar;->()V +HSPLcom/google/firebase/installations/FirebaseInstallationsRegistrar;->getComponents()Ljava/util/List; +HSPLcom/google/firebase/installations/FirebaseInstallationsRegistrar;->lambda$getComponents$0(Lcom/google/firebase/components/ComponentContainer;)Lcom/google/firebase/installations/FirebaseInstallationsApi; +Lcom/google/firebase/installations/FirebaseInstallationsRegistrar$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/installations/FirebaseInstallationsRegistrar$$ExternalSyntheticLambda0;->()V +HSPLcom/google/firebase/installations/FirebaseInstallationsRegistrar$$ExternalSyntheticLambda0;->create(Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +Lcom/google/firebase/installations/RandomFidGenerator; +HSPLcom/google/firebase/installations/RandomFidGenerator;->()V +HSPLcom/google/firebase/installations/RandomFidGenerator;->()V +Lcom/google/firebase/installations/Utils; +HSPLcom/google/firebase/installations/Utils;->()V +HSPLcom/google/firebase/installations/Utils;->(Lcom/google/firebase/installations/time/Clock;)V +HSPLcom/google/firebase/installations/Utils;->getInstance()Lcom/google/firebase/installations/Utils; +HSPLcom/google/firebase/installations/Utils;->getInstance(Lcom/google/firebase/installations/time/Clock;)Lcom/google/firebase/installations/Utils; +Lcom/google/firebase/installations/local/PersistedInstallation; +HSPLcom/google/firebase/installations/local/PersistedInstallation;->(Lcom/google/firebase/FirebaseApp;)V +Lcom/google/firebase/installations/remote/FirebaseInstallationServiceClient; +HSPLcom/google/firebase/installations/remote/FirebaseInstallationServiceClient;->()V +HSPLcom/google/firebase/installations/remote/FirebaseInstallationServiceClient;->(Landroid/content/Context;Lcom/google/firebase/inject/Provider;)V +Lcom/google/firebase/installations/remote/RequestLimiter; +HSPLcom/google/firebase/installations/remote/RequestLimiter;->()V +HSPLcom/google/firebase/installations/remote/RequestLimiter;->()V +Lcom/google/firebase/installations/time/Clock; +Lcom/google/firebase/installations/time/SystemClock; +HSPLcom/google/firebase/installations/time/SystemClock;->()V +HSPLcom/google/firebase/installations/time/SystemClock;->getInstance()Lcom/google/firebase/installations/time/SystemClock; +Lcom/google/firebase/internal/DataCollectionConfigStorage; +HSPLcom/google/firebase/internal/DataCollectionConfigStorage;->(Landroid/content/Context;Ljava/lang/String;Lcom/google/firebase/events/Publisher;)V +HSPLcom/google/firebase/internal/DataCollectionConfigStorage;->directBootSafe(Landroid/content/Context;)Landroid/content/Context; +HSPLcom/google/firebase/internal/DataCollectionConfigStorage;->isEnabled()Z +HSPLcom/google/firebase/internal/DataCollectionConfigStorage;->readAutoDataCollectionEnabled()Z +HSPLcom/google/firebase/internal/DataCollectionConfigStorage;->readManifestDataCollectionEnabled()Z +Lcom/google/firebase/ktx/Firebase; +HSPLcom/google/firebase/ktx/Firebase;->()V +HSPLcom/google/firebase/ktx/Firebase;->()V +Lcom/google/firebase/ktx/FirebaseCommonLegacyRegistrar; +HSPLcom/google/firebase/ktx/FirebaseCommonLegacyRegistrar;->()V +HSPLcom/google/firebase/ktx/FirebaseCommonLegacyRegistrar;->getComponents()Ljava/util/List; +Lcom/google/firebase/platforminfo/AutoValue_LibraryVersion; +HSPLcom/google/firebase/platforminfo/AutoValue_LibraryVersion;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/google/firebase/platforminfo/AutoValue_LibraryVersion;->getLibraryName()Ljava/lang/String; +HSPLcom/google/firebase/platforminfo/AutoValue_LibraryVersion;->getVersion()Ljava/lang/String; +HSPLcom/google/firebase/platforminfo/AutoValue_LibraryVersion;->hashCode()I +Lcom/google/firebase/platforminfo/DefaultUserAgentPublisher; +HSPLcom/google/firebase/platforminfo/DefaultUserAgentPublisher;->(Ljava/util/Set;Lcom/google/firebase/platforminfo/GlobalLibraryVersionRegistrar;)V +HSPLcom/google/firebase/platforminfo/DefaultUserAgentPublisher;->component()Lcom/google/firebase/components/Component; +HSPLcom/google/firebase/platforminfo/DefaultUserAgentPublisher;->getUserAgent()Ljava/lang/String; +HSPLcom/google/firebase/platforminfo/DefaultUserAgentPublisher;->lambda$component$0(Lcom/google/firebase/components/ComponentContainer;)Lcom/google/firebase/platforminfo/UserAgentPublisher; +HSPLcom/google/firebase/platforminfo/DefaultUserAgentPublisher;->toUserAgent(Ljava/util/Set;)Ljava/lang/String; +Lcom/google/firebase/platforminfo/DefaultUserAgentPublisher$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/platforminfo/DefaultUserAgentPublisher$$ExternalSyntheticLambda0;->()V +HSPLcom/google/firebase/platforminfo/DefaultUserAgentPublisher$$ExternalSyntheticLambda0;->create(Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +Lcom/google/firebase/platforminfo/GlobalLibraryVersionRegistrar; +HSPLcom/google/firebase/platforminfo/GlobalLibraryVersionRegistrar;->()V +HSPLcom/google/firebase/platforminfo/GlobalLibraryVersionRegistrar;->getInstance()Lcom/google/firebase/platforminfo/GlobalLibraryVersionRegistrar; +HSPLcom/google/firebase/platforminfo/GlobalLibraryVersionRegistrar;->getRegisteredVersions()Ljava/util/Set; +Lcom/google/firebase/platforminfo/KotlinDetector; +HSPLcom/google/firebase/platforminfo/KotlinDetector;->detectVersion()Ljava/lang/String; +Lcom/google/firebase/platforminfo/LibraryVersion; +HSPLcom/google/firebase/platforminfo/LibraryVersion;->()V +HSPLcom/google/firebase/platforminfo/LibraryVersion;->create(Ljava/lang/String;Ljava/lang/String;)Lcom/google/firebase/platforminfo/LibraryVersion; +Lcom/google/firebase/platforminfo/LibraryVersionComponent; +HSPLcom/google/firebase/platforminfo/LibraryVersionComponent;->create(Ljava/lang/String;Ljava/lang/String;)Lcom/google/firebase/components/Component; +HSPLcom/google/firebase/platforminfo/LibraryVersionComponent;->fromContext(Ljava/lang/String;Lcom/google/firebase/platforminfo/LibraryVersionComponent$VersionExtractor;)Lcom/google/firebase/components/Component; +HSPLcom/google/firebase/platforminfo/LibraryVersionComponent;->lambda$fromContext$0(Ljava/lang/String;Lcom/google/firebase/platforminfo/LibraryVersionComponent$VersionExtractor;Lcom/google/firebase/components/ComponentContainer;)Lcom/google/firebase/platforminfo/LibraryVersion; +Lcom/google/firebase/platforminfo/LibraryVersionComponent$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/platforminfo/LibraryVersionComponent$$ExternalSyntheticLambda0;->(Ljava/lang/String;Lcom/google/firebase/platforminfo/LibraryVersionComponent$VersionExtractor;)V +HSPLcom/google/firebase/platforminfo/LibraryVersionComponent$$ExternalSyntheticLambda0;->create(Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +Lcom/google/firebase/platforminfo/LibraryVersionComponent$VersionExtractor; +Lcom/google/firebase/platforminfo/UserAgentPublisher; +Lcom/google/firebase/provider/FirebaseInitProvider; +HSPLcom/google/firebase/provider/FirebaseInitProvider;->()V +HSPLcom/google/firebase/provider/FirebaseInitProvider;->()V +HSPLcom/google/firebase/provider/FirebaseInitProvider;->attachInfo(Landroid/content/Context;Landroid/content/pm/ProviderInfo;)V +HSPLcom/google/firebase/provider/FirebaseInitProvider;->checkContentProviderAuthority(Landroid/content/pm/ProviderInfo;)V +HSPLcom/google/firebase/provider/FirebaseInitProvider;->getStartupTime()Lcom/google/firebase/StartupTime; +HSPLcom/google/firebase/provider/FirebaseInitProvider;->isCurrentlyInitializing()Z +HSPLcom/google/firebase/provider/FirebaseInitProvider;->onCreate()Z +Lcom/google/firebase/remoteconfig/interop/FirebaseRemoteConfigInterop; +Lcom/google/firebase/remoteconfig/interop/rollouts/RolloutsStateSubscriber; +Lcom/google/firebase/sessions/AndroidApplicationInfo; +HSPLcom/google/firebase/sessions/AndroidApplicationInfo;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/google/firebase/sessions/ProcessDetails;Ljava/util/List;)V +Lcom/google/firebase/sessions/ApplicationInfo; +HSPLcom/google/firebase/sessions/ApplicationInfo;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/google/firebase/sessions/LogEnvironment;Lcom/google/firebase/sessions/AndroidApplicationInfo;)V +Lcom/google/firebase/sessions/AutoSessionEventEncoder; +HSPLcom/google/firebase/sessions/AutoSessionEventEncoder;->()V +HSPLcom/google/firebase/sessions/AutoSessionEventEncoder;->()V +HSPLcom/google/firebase/sessions/AutoSessionEventEncoder;->configure(Lcom/google/firebase/encoders/config/EncoderConfig;)V +Lcom/google/firebase/sessions/AutoSessionEventEncoder$AndroidApplicationInfoEncoder; +HSPLcom/google/firebase/sessions/AutoSessionEventEncoder$AndroidApplicationInfoEncoder;->()V +HSPLcom/google/firebase/sessions/AutoSessionEventEncoder$AndroidApplicationInfoEncoder;->()V +Lcom/google/firebase/sessions/AutoSessionEventEncoder$ApplicationInfoEncoder; +HSPLcom/google/firebase/sessions/AutoSessionEventEncoder$ApplicationInfoEncoder;->()V +HSPLcom/google/firebase/sessions/AutoSessionEventEncoder$ApplicationInfoEncoder;->()V +Lcom/google/firebase/sessions/AutoSessionEventEncoder$DataCollectionStatusEncoder; +HSPLcom/google/firebase/sessions/AutoSessionEventEncoder$DataCollectionStatusEncoder;->()V +HSPLcom/google/firebase/sessions/AutoSessionEventEncoder$DataCollectionStatusEncoder;->()V +Lcom/google/firebase/sessions/AutoSessionEventEncoder$ProcessDetailsEncoder; +HSPLcom/google/firebase/sessions/AutoSessionEventEncoder$ProcessDetailsEncoder;->()V +HSPLcom/google/firebase/sessions/AutoSessionEventEncoder$ProcessDetailsEncoder;->()V +Lcom/google/firebase/sessions/AutoSessionEventEncoder$SessionEventEncoder; +HSPLcom/google/firebase/sessions/AutoSessionEventEncoder$SessionEventEncoder;->()V +HSPLcom/google/firebase/sessions/AutoSessionEventEncoder$SessionEventEncoder;->()V +Lcom/google/firebase/sessions/AutoSessionEventEncoder$SessionInfoEncoder; +HSPLcom/google/firebase/sessions/AutoSessionEventEncoder$SessionInfoEncoder;->()V +HSPLcom/google/firebase/sessions/AutoSessionEventEncoder$SessionInfoEncoder;->()V +Lcom/google/firebase/sessions/DataCollectionStatus; +Lcom/google/firebase/sessions/FirebaseSessions; +HSPLcom/google/firebase/sessions/FirebaseSessions;->()V +HSPLcom/google/firebase/sessions/FirebaseSessions;->(Lcom/google/firebase/FirebaseApp;Lcom/google/firebase/sessions/settings/SessionsSettings;Lkotlin/coroutines/CoroutineContext;)V +Lcom/google/firebase/sessions/FirebaseSessions$1; +HSPLcom/google/firebase/sessions/FirebaseSessions$1;->(Lcom/google/firebase/sessions/FirebaseSessions;Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/Continuation;)V +HSPLcom/google/firebase/sessions/FirebaseSessions$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/google/firebase/sessions/FirebaseSessions$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/google/firebase/sessions/FirebaseSessions$Companion; +HSPLcom/google/firebase/sessions/FirebaseSessions$Companion;->()V +HSPLcom/google/firebase/sessions/FirebaseSessions$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/google/firebase/sessions/FirebaseSessionsRegistrar; +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar;->$r8$lambda$JITndpZCWeA0w9BDlkcI3l22oGY(Lcom/google/firebase/components/ComponentContainer;)Lcom/google/firebase/sessions/FirebaseSessions; +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar;->$r8$lambda$lQmicvH5m7EC8I4trkeatnIrMEc(Lcom/google/firebase/components/ComponentContainer;)Lcom/google/firebase/sessions/settings/SessionsSettings; +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar;->()V +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar;->()V +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar;->getComponents$lambda-0(Lcom/google/firebase/components/ComponentContainer;)Lcom/google/firebase/sessions/FirebaseSessions; +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar;->getComponents$lambda-3(Lcom/google/firebase/components/ComponentContainer;)Lcom/google/firebase/sessions/settings/SessionsSettings; +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar;->getComponents()Ljava/util/List; +Lcom/google/firebase/sessions/FirebaseSessionsRegistrar$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar$$ExternalSyntheticLambda0;->()V +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar$$ExternalSyntheticLambda0;->create(Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +Lcom/google/firebase/sessions/FirebaseSessionsRegistrar$$ExternalSyntheticLambda1; +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar$$ExternalSyntheticLambda1;->()V +Lcom/google/firebase/sessions/FirebaseSessionsRegistrar$$ExternalSyntheticLambda2; +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar$$ExternalSyntheticLambda2;->()V +Lcom/google/firebase/sessions/FirebaseSessionsRegistrar$$ExternalSyntheticLambda3; +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar$$ExternalSyntheticLambda3;->()V +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar$$ExternalSyntheticLambda3;->create(Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +Lcom/google/firebase/sessions/FirebaseSessionsRegistrar$$ExternalSyntheticLambda4; +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar$$ExternalSyntheticLambda4;->()V +Lcom/google/firebase/sessions/FirebaseSessionsRegistrar$$ExternalSyntheticLambda5; +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar$$ExternalSyntheticLambda5;->()V +Lcom/google/firebase/sessions/FirebaseSessionsRegistrar$Companion; +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar$Companion;->()V +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/google/firebase/sessions/LogEnvironment; +HSPLcom/google/firebase/sessions/LogEnvironment;->$values()[Lcom/google/firebase/sessions/LogEnvironment; +HSPLcom/google/firebase/sessions/LogEnvironment;->()V +HSPLcom/google/firebase/sessions/LogEnvironment;->(Ljava/lang/String;II)V +Lcom/google/firebase/sessions/ProcessDetails; +HSPLcom/google/firebase/sessions/ProcessDetails;->(Ljava/lang/String;IIZ)V +HSPLcom/google/firebase/sessions/ProcessDetails;->getPid()I +Lcom/google/firebase/sessions/ProcessDetailsProvider; +HSPLcom/google/firebase/sessions/ProcessDetailsProvider;->()V +HSPLcom/google/firebase/sessions/ProcessDetailsProvider;->()V +HSPLcom/google/firebase/sessions/ProcessDetailsProvider;->getAppProcessDetails(Landroid/content/Context;)Ljava/util/List; +HSPLcom/google/firebase/sessions/ProcessDetailsProvider;->getCurrentProcessDetails(Landroid/content/Context;)Lcom/google/firebase/sessions/ProcessDetails; +HSPLcom/google/firebase/sessions/ProcessDetailsProvider;->getProcessName$com_google_firebase_firebase_sessions()Ljava/lang/String; +Lcom/google/firebase/sessions/SessionDataStoreConfigs; +HSPLcom/google/firebase/sessions/SessionDataStoreConfigs;->()V +HSPLcom/google/firebase/sessions/SessionDataStoreConfigs;->()V +HSPLcom/google/firebase/sessions/SessionDataStoreConfigs;->getSETTINGS_CONFIG_NAME()Ljava/lang/String; +Lcom/google/firebase/sessions/SessionDatastore; +Lcom/google/firebase/sessions/SessionEvent; +Lcom/google/firebase/sessions/SessionEvents; +HSPLcom/google/firebase/sessions/SessionEvents;->()V +HSPLcom/google/firebase/sessions/SessionEvents;->()V +HSPLcom/google/firebase/sessions/SessionEvents;->getApplicationInfo(Lcom/google/firebase/FirebaseApp;)Lcom/google/firebase/sessions/ApplicationInfo; +Lcom/google/firebase/sessions/SessionFirelogPublisher; +Lcom/google/firebase/sessions/SessionGenerator; +Lcom/google/firebase/sessions/SessionInfo; +Lcom/google/firebase/sessions/SessionLifecycleServiceBinder; +Lcom/google/firebase/sessions/SessionsActivityLifecycleCallbacks; +HSPLcom/google/firebase/sessions/SessionsActivityLifecycleCallbacks;->()V +HSPLcom/google/firebase/sessions/SessionsActivityLifecycleCallbacks;->()V +HSPLcom/google/firebase/sessions/SessionsActivityLifecycleCallbacks;->onActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V +HSPLcom/google/firebase/sessions/SessionsActivityLifecycleCallbacks;->onActivityResumed(Landroid/app/Activity;)V +HSPLcom/google/firebase/sessions/SessionsActivityLifecycleCallbacks;->onActivityStarted(Landroid/app/Activity;)V +Lcom/google/firebase/sessions/api/FirebaseSessionsDependencies; +HSPLcom/google/firebase/sessions/api/FirebaseSessionsDependencies;->()V +HSPLcom/google/firebase/sessions/api/FirebaseSessionsDependencies;->()V +HSPLcom/google/firebase/sessions/api/FirebaseSessionsDependencies;->addDependency(Lcom/google/firebase/sessions/api/SessionSubscriber$Name;)V +HSPLcom/google/firebase/sessions/api/FirebaseSessionsDependencies;->getDependency(Lcom/google/firebase/sessions/api/SessionSubscriber$Name;)Lcom/google/firebase/sessions/api/FirebaseSessionsDependencies$Dependency; +HSPLcom/google/firebase/sessions/api/FirebaseSessionsDependencies;->getRegisteredSubscribers$com_google_firebase_firebase_sessions(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/google/firebase/sessions/api/FirebaseSessionsDependencies;->getSubscriber$com_google_firebase_firebase_sessions(Lcom/google/firebase/sessions/api/SessionSubscriber$Name;)Lcom/google/firebase/sessions/api/SessionSubscriber; +HSPLcom/google/firebase/sessions/api/FirebaseSessionsDependencies;->register(Lcom/google/firebase/sessions/api/SessionSubscriber;)V +Lcom/google/firebase/sessions/api/FirebaseSessionsDependencies$Dependency; +HSPLcom/google/firebase/sessions/api/FirebaseSessionsDependencies$Dependency;->(Lkotlinx/coroutines/sync/Mutex;Lcom/google/firebase/sessions/api/SessionSubscriber;)V +HSPLcom/google/firebase/sessions/api/FirebaseSessionsDependencies$Dependency;->(Lkotlinx/coroutines/sync/Mutex;Lcom/google/firebase/sessions/api/SessionSubscriber;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/google/firebase/sessions/api/FirebaseSessionsDependencies$Dependency;->getMutex()Lkotlinx/coroutines/sync/Mutex; +HSPLcom/google/firebase/sessions/api/FirebaseSessionsDependencies$Dependency;->getSubscriber()Lcom/google/firebase/sessions/api/SessionSubscriber; +HSPLcom/google/firebase/sessions/api/FirebaseSessionsDependencies$Dependency;->setSubscriber(Lcom/google/firebase/sessions/api/SessionSubscriber;)V +Lcom/google/firebase/sessions/api/FirebaseSessionsDependencies$getRegisteredSubscribers$1; +HSPLcom/google/firebase/sessions/api/FirebaseSessionsDependencies$getRegisteredSubscribers$1;->(Lcom/google/firebase/sessions/api/FirebaseSessionsDependencies;Lkotlin/coroutines/Continuation;)V +HSPLcom/google/firebase/sessions/api/FirebaseSessionsDependencies$getRegisteredSubscribers$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/google/firebase/sessions/api/SessionSubscriber; +Lcom/google/firebase/sessions/api/SessionSubscriber$Name; +HSPLcom/google/firebase/sessions/api/SessionSubscriber$Name;->$values()[Lcom/google/firebase/sessions/api/SessionSubscriber$Name; +HSPLcom/google/firebase/sessions/api/SessionSubscriber$Name;->()V +HSPLcom/google/firebase/sessions/api/SessionSubscriber$Name;->(Ljava/lang/String;I)V +Lcom/google/firebase/sessions/settings/CrashlyticsSettingsFetcher; +Lcom/google/firebase/sessions/settings/LocalOverrideSettings; +HSPLcom/google/firebase/sessions/settings/LocalOverrideSettings;->()V +HSPLcom/google/firebase/sessions/settings/LocalOverrideSettings;->(Landroid/content/Context;)V +Lcom/google/firebase/sessions/settings/LocalOverrideSettings$Companion; +HSPLcom/google/firebase/sessions/settings/LocalOverrideSettings$Companion;->()V +HSPLcom/google/firebase/sessions/settings/LocalOverrideSettings$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/google/firebase/sessions/settings/RemoteSettings; +HSPLcom/google/firebase/sessions/settings/RemoteSettings;->()V +HSPLcom/google/firebase/sessions/settings/RemoteSettings;->(Lkotlin/coroutines/CoroutineContext;Lcom/google/firebase/installations/FirebaseInstallationsApi;Lcom/google/firebase/sessions/ApplicationInfo;Lcom/google/firebase/sessions/settings/CrashlyticsSettingsFetcher;Landroidx/datastore/core/DataStore;)V +Lcom/google/firebase/sessions/settings/RemoteSettings$Companion; +HSPLcom/google/firebase/sessions/settings/RemoteSettings$Companion;->()V +HSPLcom/google/firebase/sessions/settings/RemoteSettings$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/google/firebase/sessions/settings/RemoteSettingsFetcher; +HSPLcom/google/firebase/sessions/settings/RemoteSettingsFetcher;->()V +HSPLcom/google/firebase/sessions/settings/RemoteSettingsFetcher;->(Lcom/google/firebase/sessions/ApplicationInfo;Lkotlin/coroutines/CoroutineContext;Ljava/lang/String;)V +HSPLcom/google/firebase/sessions/settings/RemoteSettingsFetcher;->(Lcom/google/firebase/sessions/ApplicationInfo;Lkotlin/coroutines/CoroutineContext;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/google/firebase/sessions/settings/RemoteSettingsFetcher$Companion; +HSPLcom/google/firebase/sessions/settings/RemoteSettingsFetcher$Companion;->()V +HSPLcom/google/firebase/sessions/settings/RemoteSettingsFetcher$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/google/firebase/sessions/settings/SessionConfigs; +HSPLcom/google/firebase/sessions/settings/SessionConfigs;->(Ljava/lang/Boolean;Ljava/lang/Double;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Long;)V +Lcom/google/firebase/sessions/settings/SessionsSettings; +HSPLcom/google/firebase/sessions/settings/SessionsSettings;->()V +HSPLcom/google/firebase/sessions/settings/SessionsSettings;->(Landroid/content/Context;Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/CoroutineContext;Lcom/google/firebase/installations/FirebaseInstallationsApi;Lcom/google/firebase/sessions/ApplicationInfo;)V +HSPLcom/google/firebase/sessions/settings/SessionsSettings;->(Lcom/google/firebase/FirebaseApp;Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/CoroutineContext;Lcom/google/firebase/installations/FirebaseInstallationsApi;)V +HSPLcom/google/firebase/sessions/settings/SessionsSettings;->(Lcom/google/firebase/sessions/settings/SettingsProvider;Lcom/google/firebase/sessions/settings/SettingsProvider;)V +HSPLcom/google/firebase/sessions/settings/SessionsSettings;->access$getDataStore$delegate$cp()Lkotlin/properties/ReadOnlyProperty; +Lcom/google/firebase/sessions/settings/SessionsSettings$Companion; +HSPLcom/google/firebase/sessions/settings/SessionsSettings$Companion;->()V +HSPLcom/google/firebase/sessions/settings/SessionsSettings$Companion;->()V +HSPLcom/google/firebase/sessions/settings/SessionsSettings$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/google/firebase/sessions/settings/SessionsSettings$Companion;->access$getDataStore(Lcom/google/firebase/sessions/settings/SessionsSettings$Companion;Landroid/content/Context;)Landroidx/datastore/core/DataStore; +HSPLcom/google/firebase/sessions/settings/SessionsSettings$Companion;->getDataStore(Landroid/content/Context;)Landroidx/datastore/core/DataStore; +Lcom/google/firebase/sessions/settings/SettingsCache; +HSPLcom/google/firebase/sessions/settings/SettingsCache;->()V +HSPLcom/google/firebase/sessions/settings/SettingsCache;->(Landroidx/datastore/core/DataStore;)V +HSPLcom/google/firebase/sessions/settings/SettingsCache;->access$getDataStore$p(Lcom/google/firebase/sessions/settings/SettingsCache;)Landroidx/datastore/core/DataStore; +HSPLcom/google/firebase/sessions/settings/SettingsCache;->access$updateSessionConfigs(Lcom/google/firebase/sessions/settings/SettingsCache;Landroidx/datastore/preferences/core/Preferences;)V +HSPLcom/google/firebase/sessions/settings/SettingsCache;->updateSessionConfigs(Landroidx/datastore/preferences/core/Preferences;)V +Lcom/google/firebase/sessions/settings/SettingsCache$1; +HSPLcom/google/firebase/sessions/settings/SettingsCache$1;->(Lcom/google/firebase/sessions/settings/SettingsCache;Lkotlin/coroutines/Continuation;)V +HSPLcom/google/firebase/sessions/settings/SettingsCache$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/google/firebase/sessions/settings/SettingsCache$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/google/firebase/sessions/settings/SettingsCache$Companion; +HSPLcom/google/firebase/sessions/settings/SettingsCache$Companion;->()V +HSPLcom/google/firebase/sessions/settings/SettingsCache$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/google/firebase/sessions/settings/SettingsProvider; +Lcom/google/firebase/tracing/ComponentMonitor; +HSPLcom/google/firebase/tracing/ComponentMonitor;->()V +HSPLcom/google/firebase/tracing/ComponentMonitor;->lambda$processRegistrar$0(Ljava/lang/String;Lcom/google/firebase/components/Component;Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +HSPLcom/google/firebase/tracing/ComponentMonitor;->processRegistrar(Lcom/google/firebase/components/ComponentRegistrar;)Ljava/util/List; +Lcom/google/firebase/tracing/ComponentMonitor$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/tracing/ComponentMonitor$$ExternalSyntheticLambda0;->(Ljava/lang/String;Lcom/google/firebase/components/Component;)V +HSPLcom/google/firebase/tracing/ComponentMonitor$$ExternalSyntheticLambda0;->create(Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +Lcom/google/firebase/tracing/FirebaseTrace; +HSPLcom/google/firebase/tracing/FirebaseTrace;->popTrace()V +HSPLcom/google/firebase/tracing/FirebaseTrace;->pushTrace(Ljava/lang/String;)V +Lcom/google/mlkit/common/internal/CommonComponentRegistrar; +HSPLcom/google/mlkit/common/internal/CommonComponentRegistrar;->()V +HSPLcom/google/mlkit/common/internal/CommonComponentRegistrar;->getComponents()Ljava/util/List; +Lcom/google/mlkit/common/internal/MlKitComponentDiscoveryService; +Lcom/google/mlkit/common/internal/MlKitInitProvider; +HSPLcom/google/mlkit/common/internal/MlKitInitProvider;->()V +HSPLcom/google/mlkit/common/internal/MlKitInitProvider;->attachInfo(Landroid/content/Context;Landroid/content/pm/ProviderInfo;)V +HSPLcom/google/mlkit/common/internal/MlKitInitProvider;->onCreate()Z +Lcom/google/mlkit/common/internal/model/zzg; +Lcom/google/mlkit/common/internal/zza; +HSPLcom/google/mlkit/common/internal/zza;->()V +HSPLcom/google/mlkit/common/internal/zza;->()V +Lcom/google/mlkit/common/internal/zzb; +HSPLcom/google/mlkit/common/internal/zzb;->()V +HSPLcom/google/mlkit/common/internal/zzb;->()V +Lcom/google/mlkit/common/internal/zzc; +HSPLcom/google/mlkit/common/internal/zzc;->()V +HSPLcom/google/mlkit/common/internal/zzc;->()V +Lcom/google/mlkit/common/internal/zzd; +HSPLcom/google/mlkit/common/internal/zzd;->()V +HSPLcom/google/mlkit/common/internal/zzd;->()V +Lcom/google/mlkit/common/internal/zze; +HSPLcom/google/mlkit/common/internal/zze;->()V +HSPLcom/google/mlkit/common/internal/zze;->()V +Lcom/google/mlkit/common/internal/zzf; +HSPLcom/google/mlkit/common/internal/zzf;->()V +HSPLcom/google/mlkit/common/internal/zzf;->()V +Lcom/google/mlkit/common/internal/zzg; +HSPLcom/google/mlkit/common/internal/zzg;->()V +HSPLcom/google/mlkit/common/internal/zzg;->()V +Lcom/google/mlkit/common/internal/zzh; +HSPLcom/google/mlkit/common/internal/zzh;->()V +HSPLcom/google/mlkit/common/internal/zzh;->()V +Lcom/google/mlkit/common/model/RemoteModelManager; +Lcom/google/mlkit/common/model/RemoteModelManager$RemoteModelManagerRegistration; +Lcom/google/mlkit/common/sdkinternal/Cleaner; +Lcom/google/mlkit/common/sdkinternal/CloseGuard$Factory; +Lcom/google/mlkit/common/sdkinternal/ExecutorSelector; +Lcom/google/mlkit/common/sdkinternal/LazyInstanceMap; +Lcom/google/mlkit/common/sdkinternal/MlKitContext; +HSPLcom/google/mlkit/common/sdkinternal/MlKitContext;->()V +HSPLcom/google/mlkit/common/sdkinternal/MlKitContext;->()V +HSPLcom/google/mlkit/common/sdkinternal/MlKitContext;->zza(Landroid/content/Context;)Lcom/google/mlkit/common/sdkinternal/MlKitContext; +HSPLcom/google/mlkit/common/sdkinternal/MlKitContext;->zzb(Landroid/content/Context;)Landroid/content/Context; +Lcom/google/mlkit/common/sdkinternal/MlKitThreadPool; +Lcom/google/mlkit/common/sdkinternal/SharedPrefManager; +HSPLcom/google/mlkit/common/sdkinternal/SharedPrefManager;->()V +Lcom/google/mlkit/common/sdkinternal/model/ModelFileHelper; +Lcom/google/mlkit/common/sdkinternal/model/RemoteModelManagerInterface; +Lcom/google/mlkit/common/sdkinternal/zzs; +HSPLcom/google/mlkit/common/sdkinternal/zzs;->()V +HSPLcom/google/mlkit/common/sdkinternal/zzs;->()V +Lcom/google/mlkit/vision/barcode/internal/BarcodeRegistrar; +HSPLcom/google/mlkit/vision/barcode/internal/BarcodeRegistrar;->()V +HSPLcom/google/mlkit/vision/barcode/internal/BarcodeRegistrar;->getComponents()Ljava/util/List; +Lcom/google/mlkit/vision/barcode/internal/zzc; +HSPLcom/google/mlkit/vision/barcode/internal/zzc;->()V +HSPLcom/google/mlkit/vision/barcode/internal/zzc;->()V +Lcom/google/mlkit/vision/barcode/internal/zzd; +HSPLcom/google/mlkit/vision/barcode/internal/zzd;->()V +HSPLcom/google/mlkit/vision/barcode/internal/zzd;->()V +Lcom/google/mlkit/vision/barcode/internal/zzg; +Lcom/google/mlkit/vision/barcode/internal/zzh; +Lcom/google/mlkit/vision/common/internal/MultiFlavorDetectorCreator; +Lcom/google/mlkit/vision/common/internal/MultiFlavorDetectorCreator$Registration; +Lcom/google/mlkit/vision/common/internal/VisionCommonRegistrar; +HSPLcom/google/mlkit/vision/common/internal/VisionCommonRegistrar;->()V +HSPLcom/google/mlkit/vision/common/internal/VisionCommonRegistrar;->getComponents()Ljava/util/List; +Lcom/google/mlkit/vision/common/internal/zzf; +HSPLcom/google/mlkit/vision/common/internal/zzf;->()V +HSPLcom/google/mlkit/vision/common/internal/zzf;->()V +Ldb_key_value/crypto_prefs/SecurePrefKeyValueStore; +HSPLdb_key_value/crypto_prefs/SecurePrefKeyValueStore;->()V +HSPLdb_key_value/crypto_prefs/SecurePrefKeyValueStore;->(Landroid/content/Context;Ljava/lang/String;)V +HSPLdb_key_value/crypto_prefs/SecurePrefKeyValueStore;->getBoolean(Ljava/lang/String;Z)Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLdb_key_value/crypto_prefs/SecurePrefKeyValueStore;->getLong(Ljava/lang/String;J)Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLdb_key_value/crypto_prefs/SecurePrefKeyValueStore;->getString(Ljava/lang/String;Ljava/lang/String;)Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +Ldb_key_value/crypto_prefs/SecurePrefKeyValueStore$1; +HSPLdb_key_value/crypto_prefs/SecurePrefKeyValueStore$1;->(Landroid/content/Context;Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +HSPLdb_key_value/crypto_prefs/SecurePrefKeyValueStore$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLdb_key_value/crypto_prefs/SecurePrefKeyValueStore$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLdb_key_value/crypto_prefs/SecurePrefKeyValueStore$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLdb_key_value/crypto_prefs/SecurePrefKeyValueStore$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Ldb_key_value/crypto_prefs/SecurePrefKeyValueStoreKt; +HSPLdb_key_value/crypto_prefs/SecurePrefKeyValueStoreKt;->access$getEncryptedSharedPrefsOrRecreate(Landroid/content/Context;Ljava/lang/String;)Landroid/content/SharedPreferences; +HSPLdb_key_value/crypto_prefs/SecurePrefKeyValueStoreKt;->getEncryptedSharedPrefs(Landroid/content/Context;Ljava/lang/String;)Landroid/content/SharedPreferences; +HSPLdb_key_value/crypto_prefs/SecurePrefKeyValueStoreKt;->getEncryptedSharedPrefsOrRecreate(Landroid/content/Context;Ljava/lang/String;)Landroid/content/SharedPreferences; +HSPLdb_key_value/crypto_prefs/SecurePrefKeyValueStoreKt;->getMasterKeyAlias(Landroid/content/Context;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)Landroidx/security/crypto/MasterKey; +Ldb_key_value/crypto_prefs/SecurePrefKeyValueStoreKt$getEncryptedSharedPrefs$1$masterKeyAlias$1; +HSPLdb_key_value/crypto_prefs/SecurePrefKeyValueStoreKt$getEncryptedSharedPrefs$1$masterKeyAlias$1;->(Landroid/content/Context;Ljava/lang/String;)V +Ldb_key_value/shared_prefs/SharedPrefsKeyValuePreference; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference;->()V +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference;->(Lkotlin/jvm/functions/Function1;)V +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference;->access$getPref(Ldb_key_value/shared_prefs/SharedPrefsKeyValuePreference;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference;->flowOfPref()Lkotlinx/coroutines/flow/Flow; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference;->getPref(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference;->setAndCommit(Ljava/lang/Object;)Lkotlin/jvm/functions/Function1; +Ldb_key_value/shared_prefs/SharedPrefsKeyValuePreference$flowOfPref$1; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$flowOfPref$1;->(Ldb_key_value/shared_prefs/SharedPrefsKeyValuePreference;Lkotlin/coroutines/Continuation;)V +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$flowOfPref$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$flowOfPref$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$flowOfPref$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$flowOfPref$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Ldb_key_value/shared_prefs/SharedPrefsKeyValuePreference$flowOfPref$1$1; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$flowOfPref$1$1;->(Ldb_key_value/shared_prefs/SharedPrefsKeyValuePreference;Lkotlin/coroutines/Continuation;)V +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$flowOfPref$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$flowOfPref$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Ldb_key_value/shared_prefs/SharedPrefsKeyValuePreference$flowOfPref$1$2; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$flowOfPref$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$flowOfPref$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Ldb_key_value/shared_prefs/SharedPrefsKeyValuePreference$getPref$1; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$getPref$1;->(Ldb_key_value/shared_prefs/SharedPrefsKeyValuePreference;Lkotlin/coroutines/Continuation;)V +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$getPref$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Ldb_key_value/shared_prefs/SharedPrefsKeyValuePreference$setAndCommit$$inlined$ioEffect$1; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$setAndCommit$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Lkotlin/coroutines/CoroutineContext;Ldb_key_value/shared_prefs/SharedPrefsKeyValuePreference;Ljava/lang/Object;)V +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$setAndCommit$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$setAndCommit$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$setAndCommit$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$setAndCommit$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Ldb_key_value/shared_prefs/SharedPrefsKeyValuePreference$setAndCommit$$inlined$ioEffect$1$1; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$setAndCommit$$inlined$ioEffect$1$1;->(Lkotlin/coroutines/Continuation;Ldb_key_value/shared_prefs/SharedPrefsKeyValuePreference;Ljava/lang/Object;)V +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$setAndCommit$$inlined$ioEffect$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$setAndCommit$$inlined$ioEffect$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Ldb_key_value/shared_prefs/SharedPrefsKeyValueStore; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore;->()V +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore;->(Landroid/content/Context;Ljava/lang/String;)V +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore;->(Lkotlin/jvm/functions/Function1;)V +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore;->access$getFlowPrefs(Ldb_key_value/shared_prefs/SharedPrefsKeyValueStore;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore;->getBoolean(Ljava/lang/String;Z)Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore;->getFlowPrefs(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore;->getLong(Ljava/lang/String;J)Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore;->getString(Ljava/lang/String;Ljava/lang/String;)Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +Ldb_key_value/shared_prefs/SharedPrefsKeyValueStore$1; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$1;->(Landroid/content/Context;Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Ldb_key_value/shared_prefs/SharedPrefsKeyValueStore$getBoolean$1; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getBoolean$1;->(Ldb_key_value/shared_prefs/SharedPrefsKeyValueStore;Ljava/lang/String;ZLkotlin/coroutines/Continuation;)V +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getBoolean$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getBoolean$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getBoolean$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getBoolean$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Ldb_key_value/shared_prefs/SharedPrefsKeyValueStore$getFlowPrefs$1; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getFlowPrefs$1;->(Ldb_key_value/shared_prefs/SharedPrefsKeyValueStore;Lkotlin/coroutines/Continuation;)V +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getFlowPrefs$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Ldb_key_value/shared_prefs/SharedPrefsKeyValueStore$getLong$1; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getLong$1;->(Ldb_key_value/shared_prefs/SharedPrefsKeyValueStore;Ljava/lang/String;JLkotlin/coroutines/Continuation;)V +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getLong$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getLong$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getLong$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getLong$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Ldb_key_value/shared_prefs/SharedPrefsKeyValueStore$getString$1; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getString$1;->(Ldb_key_value/shared_prefs/SharedPrefsKeyValueStore;Ljava/lang/String;Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getString$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getString$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getString$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getString$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Ldev/icerock/moko/resources/FontResource; +HSPLdev/icerock/moko/resources/FontResource;->()V +HSPLdev/icerock/moko/resources/FontResource;->(I)V +HSPLdev/icerock/moko/resources/FontResource;->getFontResourceId()I +Ldev/icerock/moko/resources/FontResource$Creator; +HSPLdev/icerock/moko/resources/FontResource$Creator;->()V +Ldev/icerock/moko/resources/ResourceContainer; +Ldev/icerock/moko/resources/StringResource; +HSPLdev/icerock/moko/resources/StringResource;->()V +HSPLdev/icerock/moko/resources/StringResource;->(I)V +HSPLdev/icerock/moko/resources/StringResource;->getResourceId()I +Ldev/icerock/moko/resources/StringResource$Creator; +HSPLdev/icerock/moko/resources/StringResource$Creator;->()V +Ldev/icerock/moko/resources/compose/FontResource_androidKt; +HSPLdev/icerock/moko/resources/compose/FontResource_androidKt;->asFont-DnXFreY(Ldev/icerock/moko/resources/FontResource;Landroidx/compose/ui/text/font/FontWeight;ILandroidx/compose/runtime/Composer;II)Landroidx/compose/ui/text/font/Font; +Ldev/icerock/moko/resources/compose/FontResource_commonKt; +HSPLdev/icerock/moko/resources/compose/FontResource_commonKt;->fontFamilyResource(Ldev/icerock/moko/resources/FontResource;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/text/font/FontFamily; +Ldev/icerock/moko/resources/compose/StringResourceKt; +HSPLdev/icerock/moko/resources/compose/StringResourceKt;->stringResource(Ldev/icerock/moko/resources/StringResource;Landroidx/compose/runtime/Composer;I)Ljava/lang/String; +Ldev/icerock/moko/resources/desc/ResourceFormattedStringDesc; +HSPLdev/icerock/moko/resources/desc/ResourceFormattedStringDesc;->(Ldev/icerock/moko/resources/StringResource;Ljava/util/List;)V +HSPLdev/icerock/moko/resources/desc/ResourceFormattedStringDesc;->toString(Landroid/content/Context;)Ljava/lang/String; +Ldev/icerock/moko/resources/desc/ResourceFormattedStringDescKt; +HSPLdev/icerock/moko/resources/desc/ResourceFormattedStringDescKt;->ResourceFormatted(Ldev/icerock/moko/resources/desc/StringDesc$Companion;Ldev/icerock/moko/resources/StringResource;[Ljava/lang/Object;)Ldev/icerock/moko/resources/desc/ResourceFormattedStringDesc; +Ldev/icerock/moko/resources/desc/ResourceStringDesc; +HSPLdev/icerock/moko/resources/desc/ResourceStringDesc;->()V +HSPLdev/icerock/moko/resources/desc/ResourceStringDesc;->(Ldev/icerock/moko/resources/StringResource;)V +HSPLdev/icerock/moko/resources/desc/ResourceStringDesc;->toString(Landroid/content/Context;)Ljava/lang/String; +Ldev/icerock/moko/resources/desc/ResourceStringDesc$Creator; +HSPLdev/icerock/moko/resources/desc/ResourceStringDesc$Creator;->()V +Ldev/icerock/moko/resources/desc/ResourceStringDescKt; +HSPLdev/icerock/moko/resources/desc/ResourceStringDescKt;->Resource(Ldev/icerock/moko/resources/desc/StringDesc$Companion;Ldev/icerock/moko/resources/StringResource;)Ldev/icerock/moko/resources/desc/ResourceStringDesc; +Ldev/icerock/moko/resources/desc/StringDesc; +HSPLdev/icerock/moko/resources/desc/StringDesc;->()V +Ldev/icerock/moko/resources/desc/StringDesc$Companion; +HSPLdev/icerock/moko/resources/desc/StringDesc$Companion;->()V +HSPLdev/icerock/moko/resources/desc/StringDesc$Companion;->()V +HSPLdev/icerock/moko/resources/desc/StringDesc$Companion;->getLocaleType()Ldev/icerock/moko/resources/desc/StringDesc$LocaleType; +Ldev/icerock/moko/resources/desc/StringDesc$LocaleType; +HSPLdev/icerock/moko/resources/desc/StringDesc$LocaleType;->()V +HSPLdev/icerock/moko/resources/desc/StringDesc$LocaleType;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Ldev/icerock/moko/resources/desc/StringDesc$LocaleType$System; +HSPLdev/icerock/moko/resources/desc/StringDesc$LocaleType$System;->()V +HSPLdev/icerock/moko/resources/desc/StringDesc$LocaleType$System;->()V +HSPLdev/icerock/moko/resources/desc/StringDesc$LocaleType$System;->getSystemLocale()Ljava/util/Locale; +Ldev/icerock/moko/resources/desc/Utils; +HSPLdev/icerock/moko/resources/desc/Utils;->()V +HSPLdev/icerock/moko/resources/desc/Utils;->()V +HSPLdev/icerock/moko/resources/desc/Utils;->localizedContext(Landroid/content/Context;)Landroid/content/Context; +HSPLdev/icerock/moko/resources/desc/Utils;->processArgs(Ljava/util/List;Landroid/content/Context;)[Ljava/lang/Object; +HSPLdev/icerock/moko/resources/desc/Utils;->resourcesForContext(Landroid/content/Context;)Landroid/content/res/Resources; +Lio/ktor/client/HttpClient; +HSPLio/ktor/client/HttpClient;->()V +HSPLio/ktor/client/HttpClient;->(Lio/ktor/client/engine/HttpClientEngine;Lio/ktor/client/HttpClientConfig;)V +HSPLio/ktor/client/HttpClient;->(Lio/ktor/client/engine/HttpClientEngine;Lio/ktor/client/HttpClientConfig;Z)V +HSPLio/ktor/client/HttpClient;->getAttributes()Lio/ktor/util/Attributes; +HSPLio/ktor/client/HttpClient;->getConfig$ktor_client_core()Lio/ktor/client/HttpClientConfig; +HSPLio/ktor/client/HttpClient;->getCoroutineContext()Lkotlin/coroutines/CoroutineContext; +HSPLio/ktor/client/HttpClient;->getEngine()Lio/ktor/client/engine/HttpClientEngine; +HSPLio/ktor/client/HttpClient;->getReceivePipeline()Lio/ktor/client/statement/HttpReceivePipeline; +HSPLio/ktor/client/HttpClient;->getRequestPipeline()Lio/ktor/client/request/HttpRequestPipeline; +HSPLio/ktor/client/HttpClient;->getResponsePipeline()Lio/ktor/client/statement/HttpResponsePipeline; +HSPLio/ktor/client/HttpClient;->getSendPipeline()Lio/ktor/client/request/HttpSendPipeline; +Lio/ktor/client/HttpClient$2; +HSPLio/ktor/client/HttpClient$2;->(Lio/ktor/client/HttpClient;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/HttpClient$3$1; +HSPLio/ktor/client/HttpClient$3$1;->()V +HSPLio/ktor/client/HttpClient$3$1;->()V +HSPLio/ktor/client/HttpClient$3$1;->invoke(Lio/ktor/client/HttpClient;)V +HSPLio/ktor/client/HttpClient$3$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/HttpClient$4; +HSPLio/ktor/client/HttpClient$4;->(Lio/ktor/client/HttpClient;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/HttpClientConfig; +HSPLio/ktor/client/HttpClientConfig;->()V +HSPLio/ktor/client/HttpClientConfig;->access$getPluginConfigurations$p(Lio/ktor/client/HttpClientConfig;)Ljava/util/Map; +HSPLio/ktor/client/HttpClientConfig;->engine(Lkotlin/jvm/functions/Function1;)V +HSPLio/ktor/client/HttpClientConfig;->getDevelopmentMode()Z +HSPLio/ktor/client/HttpClientConfig;->getEngineConfig$ktor_client_core()Lkotlin/jvm/functions/Function1; +HSPLio/ktor/client/HttpClientConfig;->getExpectSuccess()Z +HSPLio/ktor/client/HttpClientConfig;->getFollowRedirects()Z +HSPLio/ktor/client/HttpClientConfig;->getUseDefaultTransformers()Z +HSPLio/ktor/client/HttpClientConfig;->install$default(Lio/ktor/client/HttpClientConfig;Lio/ktor/client/plugins/HttpClientPlugin;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +HSPLio/ktor/client/HttpClientConfig;->install(Lio/ktor/client/HttpClient;)V +HSPLio/ktor/client/HttpClientConfig;->install(Lio/ktor/client/plugins/HttpClientPlugin;Lkotlin/jvm/functions/Function1;)V +HSPLio/ktor/client/HttpClientConfig;->install(Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V +HSPLio/ktor/client/HttpClientConfig;->plusAssign(Lio/ktor/client/HttpClientConfig;)V +Lio/ktor/client/HttpClientConfig$engine$1; +HSPLio/ktor/client/HttpClientConfig$engine$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLio/ktor/client/HttpClientConfig$engine$1;->invoke(Lio/ktor/client/engine/HttpClientEngineConfig;)V +HSPLio/ktor/client/HttpClientConfig$engine$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/HttpClientConfig$engineConfig$1; +HSPLio/ktor/client/HttpClientConfig$engineConfig$1;->()V +HSPLio/ktor/client/HttpClientConfig$engineConfig$1;->()V +HSPLio/ktor/client/HttpClientConfig$engineConfig$1;->invoke(Lio/ktor/client/engine/HttpClientEngineConfig;)V +HSPLio/ktor/client/HttpClientConfig$engineConfig$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/HttpClientConfig$install$1; +HSPLio/ktor/client/HttpClientConfig$install$1;->()V +HSPLio/ktor/client/HttpClientConfig$install$1;->()V +HSPLio/ktor/client/HttpClientConfig$install$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLio/ktor/client/HttpClientConfig$install$1;->invoke(Ljava/lang/Object;)V +Lio/ktor/client/HttpClientConfig$install$2; +HSPLio/ktor/client/HttpClientConfig$install$2;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLio/ktor/client/HttpClientConfig$install$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLio/ktor/client/HttpClientConfig$install$2;->invoke(Ljava/lang/Object;)V +Lio/ktor/client/HttpClientConfig$install$3; +HSPLio/ktor/client/HttpClientConfig$install$3;->(Lio/ktor/client/plugins/HttpClientPlugin;)V +HSPLio/ktor/client/HttpClientConfig$install$3;->invoke(Lio/ktor/client/HttpClient;)V +HSPLio/ktor/client/HttpClientConfig$install$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/HttpClientConfig$install$3$attributes$1; +HSPLio/ktor/client/HttpClientConfig$install$3$attributes$1;->()V +HSPLio/ktor/client/HttpClientConfig$install$3$attributes$1;->()V +HSPLio/ktor/client/HttpClientConfig$install$3$attributes$1;->invoke()Lio/ktor/util/Attributes; +HSPLio/ktor/client/HttpClientConfig$install$3$attributes$1;->invoke()Ljava/lang/Object; +Lio/ktor/client/HttpClientKt; +HSPLio/ktor/client/HttpClientKt;->HttpClient(Lio/ktor/client/engine/HttpClientEngineFactory;Lkotlin/jvm/functions/Function1;)Lio/ktor/client/HttpClient; +Lio/ktor/client/HttpClientKt$HttpClient$2; +HSPLio/ktor/client/HttpClientKt$HttpClient$2;->(Lio/ktor/client/engine/HttpClientEngine;)V +Lio/ktor/client/content/ProgressListener; +Lio/ktor/client/engine/HttpClientEngine; +Lio/ktor/client/engine/HttpClientEngine$DefaultImpls; +HSPLio/ktor/client/engine/HttpClientEngine$DefaultImpls;->install(Lio/ktor/client/engine/HttpClientEngine;Lio/ktor/client/HttpClient;)V +Lio/ktor/client/engine/HttpClientEngine$install$1; +HSPLio/ktor/client/engine/HttpClientEngine$install$1;->(Lio/ktor/client/HttpClient;Lio/ktor/client/engine/HttpClientEngine;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/engine/HttpClientEngineBase; +HSPLio/ktor/client/engine/HttpClientEngineBase;->()V +HSPLio/ktor/client/engine/HttpClientEngineBase;->(Ljava/lang/String;)V +HSPLio/ktor/client/engine/HttpClientEngineBase;->access$getEngineName$p(Lio/ktor/client/engine/HttpClientEngineBase;)Ljava/lang/String; +HSPLio/ktor/client/engine/HttpClientEngineBase;->getCoroutineContext()Lkotlin/coroutines/CoroutineContext; +HSPLio/ktor/client/engine/HttpClientEngineBase;->getDispatcher()Lkotlinx/coroutines/CoroutineDispatcher; +HSPLio/ktor/client/engine/HttpClientEngineBase;->install(Lio/ktor/client/HttpClient;)V +Lio/ktor/client/engine/HttpClientEngineBase$coroutineContext$2; +HSPLio/ktor/client/engine/HttpClientEngineBase$coroutineContext$2;->(Lio/ktor/client/engine/HttpClientEngineBase;)V +HSPLio/ktor/client/engine/HttpClientEngineBase$coroutineContext$2;->invoke()Ljava/lang/Object; +HSPLio/ktor/client/engine/HttpClientEngineBase$coroutineContext$2;->invoke()Lkotlin/coroutines/CoroutineContext; +Lio/ktor/client/engine/HttpClientEngineBase_jvmKt; +HSPLio/ktor/client/engine/HttpClientEngineBase_jvmKt;->ioDispatcher()Lkotlinx/coroutines/CoroutineDispatcher; +Lio/ktor/client/engine/HttpClientEngineCapability; +Lio/ktor/client/engine/HttpClientEngineConfig; +HSPLio/ktor/client/engine/HttpClientEngineConfig;->()V +Lio/ktor/client/engine/HttpClientEngineFactory; +Lio/ktor/client/engine/okhttp/OkHttp; +HSPLio/ktor/client/engine/okhttp/OkHttp;->()V +HSPLio/ktor/client/engine/okhttp/OkHttp;->()V +HSPLio/ktor/client/engine/okhttp/OkHttp;->create(Lkotlin/jvm/functions/Function1;)Lio/ktor/client/engine/HttpClientEngine; +Lio/ktor/client/engine/okhttp/OkHttpConfig; +HSPLio/ktor/client/engine/okhttp/OkHttpConfig;->()V +HSPLio/ktor/client/engine/okhttp/OkHttpConfig;->getClientCacheSize()I +HSPLio/ktor/client/engine/okhttp/OkHttpConfig;->setPreconfigured(Lokhttp3/OkHttpClient;)V +Lio/ktor/client/engine/okhttp/OkHttpConfig$config$1; +HSPLio/ktor/client/engine/okhttp/OkHttpConfig$config$1;->()V +HSPLio/ktor/client/engine/okhttp/OkHttpConfig$config$1;->()V +Lio/ktor/client/engine/okhttp/OkHttpEngine; +HSPLio/ktor/client/engine/okhttp/OkHttpEngine;->()V +HSPLio/ktor/client/engine/okhttp/OkHttpEngine;->(Lio/ktor/client/engine/okhttp/OkHttpConfig;)V +HSPLio/ktor/client/engine/okhttp/OkHttpEngine;->access$getRequestsJob$p(Lio/ktor/client/engine/okhttp/OkHttpEngine;)Lkotlin/coroutines/CoroutineContext; +HSPLio/ktor/client/engine/okhttp/OkHttpEngine;->getConfig()Lio/ktor/client/engine/HttpClientEngineConfig; +HSPLio/ktor/client/engine/okhttp/OkHttpEngine;->getConfig()Lio/ktor/client/engine/okhttp/OkHttpConfig; +HSPLio/ktor/client/engine/okhttp/OkHttpEngine;->getCoroutineContext()Lkotlin/coroutines/CoroutineContext; +HSPLio/ktor/client/engine/okhttp/OkHttpEngine;->getSupportedCapabilities()Ljava/util/Set; +Lio/ktor/client/engine/okhttp/OkHttpEngine$1; +HSPLio/ktor/client/engine/okhttp/OkHttpEngine$1;->(Lio/ktor/client/engine/okhttp/OkHttpEngine;Lkotlin/coroutines/Continuation;)V +HSPLio/ktor/client/engine/okhttp/OkHttpEngine$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLio/ktor/client/engine/okhttp/OkHttpEngine$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/engine/okhttp/OkHttpEngine$Companion; +HSPLio/ktor/client/engine/okhttp/OkHttpEngine$Companion;->()V +HSPLio/ktor/client/engine/okhttp/OkHttpEngine$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lio/ktor/client/engine/okhttp/OkHttpEngine$Companion$okHttpClientPrototype$2; +HSPLio/ktor/client/engine/okhttp/OkHttpEngine$Companion$okHttpClientPrototype$2;->()V +HSPLio/ktor/client/engine/okhttp/OkHttpEngine$Companion$okHttpClientPrototype$2;->()V +Lio/ktor/client/engine/okhttp/OkHttpEngine$clientCache$1; +HSPLio/ktor/client/engine/okhttp/OkHttpEngine$clientCache$1;->(Ljava/lang/Object;)V +Lio/ktor/client/engine/okhttp/OkHttpEngine$clientCache$2; +HSPLio/ktor/client/engine/okhttp/OkHttpEngine$clientCache$2;->()V +HSPLio/ktor/client/engine/okhttp/OkHttpEngine$clientCache$2;->()V +Lio/ktor/client/plugins/AfterReceiveHook; +HSPLio/ktor/client/plugins/AfterReceiveHook;->()V +HSPLio/ktor/client/plugins/AfterReceiveHook;->()V +HSPLio/ktor/client/plugins/AfterReceiveHook;->install(Lio/ktor/client/HttpClient;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/AfterReceiveHook;->install(Lio/ktor/client/HttpClient;Lkotlin/jvm/functions/Function2;)V +Lio/ktor/client/plugins/AfterReceiveHook$install$1; +HSPLio/ktor/client/plugins/AfterReceiveHook$install$1;->(Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/AfterRenderHook; +HSPLio/ktor/client/plugins/AfterRenderHook;->()V +HSPLio/ktor/client/plugins/AfterRenderHook;->()V +HSPLio/ktor/client/plugins/AfterRenderHook;->install(Lio/ktor/client/HttpClient;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/AfterRenderHook;->install(Lio/ktor/client/HttpClient;Lkotlin/jvm/functions/Function3;)V +Lio/ktor/client/plugins/AfterRenderHook$install$1; +HSPLio/ktor/client/plugins/AfterRenderHook$install$1;->(Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/BodyProgressKt; +HSPLio/ktor/client/plugins/BodyProgressKt;->()V +HSPLio/ktor/client/plugins/BodyProgressKt;->getBodyProgress()Lio/ktor/client/plugins/api/ClientPlugin; +Lio/ktor/client/plugins/BodyProgressKt$BodyProgress$1; +HSPLio/ktor/client/plugins/BodyProgressKt$BodyProgress$1;->()V +HSPLio/ktor/client/plugins/BodyProgressKt$BodyProgress$1;->()V +HSPLio/ktor/client/plugins/BodyProgressKt$BodyProgress$1;->invoke(Lio/ktor/client/plugins/api/ClientPluginBuilder;)V +HSPLio/ktor/client/plugins/BodyProgressKt$BodyProgress$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/plugins/BodyProgressKt$BodyProgress$1$1; +HSPLio/ktor/client/plugins/BodyProgressKt$BodyProgress$1$1;->(Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/BodyProgressKt$BodyProgress$1$2; +HSPLio/ktor/client/plugins/BodyProgressKt$BodyProgress$1$2;->(Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/DefaultResponseValidationKt; +HSPLio/ktor/client/plugins/DefaultResponseValidationKt;->()V +HSPLio/ktor/client/plugins/DefaultResponseValidationKt;->addDefaultResponseValidation(Lio/ktor/client/HttpClientConfig;)V +Lio/ktor/client/plugins/DefaultResponseValidationKt$addDefaultResponseValidation$1; +HSPLio/ktor/client/plugins/DefaultResponseValidationKt$addDefaultResponseValidation$1;->(Lio/ktor/client/HttpClientConfig;)V +HSPLio/ktor/client/plugins/DefaultResponseValidationKt$addDefaultResponseValidation$1;->invoke(Lio/ktor/client/plugins/HttpCalValidatorConfig;)V +HSPLio/ktor/client/plugins/DefaultResponseValidationKt$addDefaultResponseValidation$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/plugins/DefaultResponseValidationKt$addDefaultResponseValidation$1$1; +HSPLio/ktor/client/plugins/DefaultResponseValidationKt$addDefaultResponseValidation$1$1;->(Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/DefaultTransformKt; +HSPLio/ktor/client/plugins/DefaultTransformKt;->()V +HSPLio/ktor/client/plugins/DefaultTransformKt;->defaultTransformers(Lio/ktor/client/HttpClient;)V +Lio/ktor/client/plugins/DefaultTransformKt$defaultTransformers$1; +HSPLio/ktor/client/plugins/DefaultTransformKt$defaultTransformers$1;->(Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/DefaultTransformKt$defaultTransformers$2; +HSPLio/ktor/client/plugins/DefaultTransformKt$defaultTransformers$2;->(Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/DefaultTransformersJvmKt; +HSPLio/ktor/client/plugins/DefaultTransformersJvmKt;->platformResponseDefaultTransformers(Lio/ktor/client/HttpClient;)V +Lio/ktor/client/plugins/DefaultTransformersJvmKt$platformResponseDefaultTransformers$1; +HSPLio/ktor/client/plugins/DefaultTransformersJvmKt$platformResponseDefaultTransformers$1;->(Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/DoubleReceivePluginKt; +HSPLio/ktor/client/plugins/DoubleReceivePluginKt;->()V +HSPLio/ktor/client/plugins/DoubleReceivePluginKt;->getSaveBodyPlugin()Lio/ktor/client/plugins/api/ClientPlugin; +Lio/ktor/client/plugins/DoubleReceivePluginKt$SaveBodyPlugin$1; +HSPLio/ktor/client/plugins/DoubleReceivePluginKt$SaveBodyPlugin$1;->()V +HSPLio/ktor/client/plugins/DoubleReceivePluginKt$SaveBodyPlugin$1;->()V +HSPLio/ktor/client/plugins/DoubleReceivePluginKt$SaveBodyPlugin$1;->invoke()Lio/ktor/client/plugins/SaveBodyPluginConfig; +HSPLio/ktor/client/plugins/DoubleReceivePluginKt$SaveBodyPlugin$1;->invoke()Ljava/lang/Object; +Lio/ktor/client/plugins/DoubleReceivePluginKt$SaveBodyPlugin$2; +HSPLio/ktor/client/plugins/DoubleReceivePluginKt$SaveBodyPlugin$2;->()V +HSPLio/ktor/client/plugins/DoubleReceivePluginKt$SaveBodyPlugin$2;->()V +HSPLio/ktor/client/plugins/DoubleReceivePluginKt$SaveBodyPlugin$2;->invoke(Lio/ktor/client/plugins/api/ClientPluginBuilder;)V +HSPLio/ktor/client/plugins/DoubleReceivePluginKt$SaveBodyPlugin$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/plugins/DoubleReceivePluginKt$SaveBodyPlugin$2$1; +HSPLio/ktor/client/plugins/DoubleReceivePluginKt$SaveBodyPlugin$2$1;->(ZLkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/HttpCalValidatorConfig; +HSPLio/ktor/client/plugins/HttpCalValidatorConfig;->()V +HSPLio/ktor/client/plugins/HttpCalValidatorConfig;->getExpectSuccess()Z +HSPLio/ktor/client/plugins/HttpCalValidatorConfig;->getResponseExceptionHandlers$ktor_client_core()Ljava/util/List; +HSPLio/ktor/client/plugins/HttpCalValidatorConfig;->getResponseValidators$ktor_client_core()Ljava/util/List; +HSPLio/ktor/client/plugins/HttpCalValidatorConfig;->setExpectSuccess(Z)V +HSPLio/ktor/client/plugins/HttpCalValidatorConfig;->validateResponse(Lkotlin/jvm/functions/Function2;)V +Lio/ktor/client/plugins/HttpCallValidatorKt; +HSPLio/ktor/client/plugins/HttpCallValidatorKt;->()V +HSPLio/ktor/client/plugins/HttpCallValidatorKt;->HttpResponseValidator(Lio/ktor/client/HttpClientConfig;Lkotlin/jvm/functions/Function1;)V +HSPLio/ktor/client/plugins/HttpCallValidatorKt;->getHttpCallValidator()Lio/ktor/client/plugins/api/ClientPlugin; +Lio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$1; +HSPLio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$1;->()V +HSPLio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$1;->()V +HSPLio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$1;->invoke()Lio/ktor/client/plugins/HttpCalValidatorConfig; +HSPLio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$1;->invoke()Ljava/lang/Object; +Lio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$2; +HSPLio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$2;->()V +HSPLio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$2;->()V +HSPLio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$2;->invoke(Lio/ktor/client/plugins/api/ClientPluginBuilder;)V +HSPLio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$2$1; +HSPLio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$2$1;->(ZLkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$2$2; +HSPLio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$2$2;->(Ljava/util/List;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$2$3; +HSPLio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$2$3;->(Ljava/util/List;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$2$4; +HSPLio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$2$4;->(Ljava/util/List;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/HttpClientPlugin; +Lio/ktor/client/plugins/HttpClientPluginKt; +HSPLio/ktor/client/plugins/HttpClientPluginKt;->()V +HSPLio/ktor/client/plugins/HttpClientPluginKt;->getPLUGIN_INSTALLED_LIST()Lio/ktor/util/AttributeKey; +HSPLio/ktor/client/plugins/HttpClientPluginKt;->plugin(Lio/ktor/client/HttpClient;Lio/ktor/client/plugins/HttpClientPlugin;)Ljava/lang/Object; +HSPLio/ktor/client/plugins/HttpClientPluginKt;->pluginOrNull(Lio/ktor/client/HttpClient;Lio/ktor/client/plugins/HttpClientPlugin;)Ljava/lang/Object; +Lio/ktor/client/plugins/HttpPlainTextConfig; +HSPLio/ktor/client/plugins/HttpPlainTextConfig;->()V +HSPLio/ktor/client/plugins/HttpPlainTextConfig;->getCharsetQuality$ktor_client_core()Ljava/util/Map; +HSPLio/ktor/client/plugins/HttpPlainTextConfig;->getCharsets$ktor_client_core()Ljava/util/Set; +HSPLio/ktor/client/plugins/HttpPlainTextConfig;->getResponseCharsetFallback()Ljava/nio/charset/Charset; +HSPLio/ktor/client/plugins/HttpPlainTextConfig;->getSendCharset()Ljava/nio/charset/Charset; +Lio/ktor/client/plugins/HttpPlainTextKt; +HSPLio/ktor/client/plugins/HttpPlainTextKt;->()V +HSPLio/ktor/client/plugins/HttpPlainTextKt;->getHttpPlainText()Lio/ktor/client/plugins/api/ClientPlugin; +Lio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$1; +HSPLio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$1;->()V +HSPLio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$1;->()V +HSPLio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$1;->invoke()Lio/ktor/client/plugins/HttpPlainTextConfig; +HSPLio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$1;->invoke()Ljava/lang/Object; +Lio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$2; +HSPLio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$2;->()V +HSPLio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$2;->()V +HSPLio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$2;->invoke(Lio/ktor/client/plugins/api/ClientPluginBuilder;)V +HSPLio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$2$1; +HSPLio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$2$1;->(Ljava/lang/String;Ljava/nio/charset/Charset;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$2$2; +HSPLio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$2$2;->(Ljava/nio/charset/Charset;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$2$invoke$$inlined$sortedBy$1; +HSPLio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$2$invoke$$inlined$sortedBy$1;->()V +Lio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$2$invoke$$inlined$sortedByDescending$1; +HSPLio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$2$invoke$$inlined$sortedByDescending$1;->()V +Lio/ktor/client/plugins/HttpRedirectConfig; +HSPLio/ktor/client/plugins/HttpRedirectConfig;->()V +HSPLio/ktor/client/plugins/HttpRedirectConfig;->getAllowHttpsDowngrade()Z +HSPLio/ktor/client/plugins/HttpRedirectConfig;->getCheckHttpMethod()Z +Lio/ktor/client/plugins/HttpRedirectKt; +HSPLio/ktor/client/plugins/HttpRedirectKt;->()V +HSPLio/ktor/client/plugins/HttpRedirectKt;->getHttpRedirect()Lio/ktor/client/plugins/api/ClientPlugin; +Lio/ktor/client/plugins/HttpRedirectKt$HttpRedirect$1; +HSPLio/ktor/client/plugins/HttpRedirectKt$HttpRedirect$1;->()V +HSPLio/ktor/client/plugins/HttpRedirectKt$HttpRedirect$1;->()V +HSPLio/ktor/client/plugins/HttpRedirectKt$HttpRedirect$1;->invoke()Lio/ktor/client/plugins/HttpRedirectConfig; +HSPLio/ktor/client/plugins/HttpRedirectKt$HttpRedirect$1;->invoke()Ljava/lang/Object; +Lio/ktor/client/plugins/HttpRedirectKt$HttpRedirect$2; +HSPLio/ktor/client/plugins/HttpRedirectKt$HttpRedirect$2;->()V +HSPLio/ktor/client/plugins/HttpRedirectKt$HttpRedirect$2;->()V +HSPLio/ktor/client/plugins/HttpRedirectKt$HttpRedirect$2;->invoke(Lio/ktor/client/plugins/api/ClientPluginBuilder;)V +HSPLio/ktor/client/plugins/HttpRedirectKt$HttpRedirect$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/plugins/HttpRedirectKt$HttpRedirect$2$1; +HSPLio/ktor/client/plugins/HttpRedirectKt$HttpRedirect$2$1;->(ZZLio/ktor/client/plugins/api/ClientPluginBuilder;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/HttpRequestLifecycleKt; +HSPLio/ktor/client/plugins/HttpRequestLifecycleKt;->()V +HSPLio/ktor/client/plugins/HttpRequestLifecycleKt;->getHttpRequestLifecycle()Lio/ktor/client/plugins/api/ClientPlugin; +Lio/ktor/client/plugins/HttpRequestLifecycleKt$HttpRequestLifecycle$1; +HSPLio/ktor/client/plugins/HttpRequestLifecycleKt$HttpRequestLifecycle$1;->()V +HSPLio/ktor/client/plugins/HttpRequestLifecycleKt$HttpRequestLifecycle$1;->()V +HSPLio/ktor/client/plugins/HttpRequestLifecycleKt$HttpRequestLifecycle$1;->invoke(Lio/ktor/client/plugins/api/ClientPluginBuilder;)V +HSPLio/ktor/client/plugins/HttpRequestLifecycleKt$HttpRequestLifecycle$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/plugins/HttpRequestLifecycleKt$HttpRequestLifecycle$1$1; +HSPLio/ktor/client/plugins/HttpRequestLifecycleKt$HttpRequestLifecycle$1$1;->(Lio/ktor/client/plugins/api/ClientPluginBuilder;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/HttpRequestRetryConfig; +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->()V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->constantDelay$default(Lio/ktor/client/plugins/HttpRequestRetryConfig;JJZILjava/lang/Object;)V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->constantDelay(JJZ)V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->delayMillis(ZLkotlin/jvm/functions/Function2;)V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->exponentialDelay$default(Lio/ktor/client/plugins/HttpRequestRetryConfig;DJJZILjava/lang/Object;)V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->exponentialDelay(DJJZ)V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->getDelay$ktor_client_core()Lkotlin/jvm/functions/Function2; +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->getDelayMillis$ktor_client_core()Lkotlin/jvm/functions/Function2; +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->getMaxRetries()I +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->getModifyRequest$ktor_client_core()Lkotlin/jvm/functions/Function2; +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->getShouldRetry$ktor_client_core()Lkotlin/jvm/functions/Function3; +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->getShouldRetryOnException$ktor_client_core()Lkotlin/jvm/functions/Function3; +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->retryIf$default(Lio/ktor/client/plugins/HttpRequestRetryConfig;ILkotlin/jvm/functions/Function3;ILjava/lang/Object;)V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->retryIf(ILkotlin/jvm/functions/Function3;)V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->retryOnException$default(Lio/ktor/client/plugins/HttpRequestRetryConfig;IZILjava/lang/Object;)V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->retryOnException(IZ)V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->retryOnExceptionIf(ILkotlin/jvm/functions/Function3;)V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->retryOnExceptionOrServerErrors(I)V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->retryOnServerErrors(I)V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->setDelayMillis$ktor_client_core(Lkotlin/jvm/functions/Function2;)V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->setMaxRetries(I)V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->setShouldRetry$ktor_client_core(Lkotlin/jvm/functions/Function3;)V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->setShouldRetryOnException$ktor_client_core(Lkotlin/jvm/functions/Function3;)V +Lio/ktor/client/plugins/HttpRequestRetryConfig$constantDelay$1; +HSPLio/ktor/client/plugins/HttpRequestRetryConfig$constantDelay$1;->(JLio/ktor/client/plugins/HttpRequestRetryConfig;J)V +Lio/ktor/client/plugins/HttpRequestRetryConfig$delay$1; +HSPLio/ktor/client/plugins/HttpRequestRetryConfig$delay$1;->(Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/HttpRequestRetryConfig$delayMillis$1; +HSPLio/ktor/client/plugins/HttpRequestRetryConfig$delayMillis$1;->(ZLkotlin/jvm/functions/Function2;)V +Lio/ktor/client/plugins/HttpRequestRetryConfig$exponentialDelay$1; +HSPLio/ktor/client/plugins/HttpRequestRetryConfig$exponentialDelay$1;->(DJLio/ktor/client/plugins/HttpRequestRetryConfig;J)V +Lio/ktor/client/plugins/HttpRequestRetryConfig$modifyRequest$1; +HSPLio/ktor/client/plugins/HttpRequestRetryConfig$modifyRequest$1;->()V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig$modifyRequest$1;->()V +Lio/ktor/client/plugins/HttpRequestRetryConfig$retryOnException$1; +HSPLio/ktor/client/plugins/HttpRequestRetryConfig$retryOnException$1;->(Z)V +Lio/ktor/client/plugins/HttpRequestRetryConfig$retryOnServerErrors$1; +HSPLio/ktor/client/plugins/HttpRequestRetryConfig$retryOnServerErrors$1;->()V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig$retryOnServerErrors$1;->()V +Lio/ktor/client/plugins/HttpRequestRetryKt; +HSPLio/ktor/client/plugins/HttpRequestRetryKt;->()V +HSPLio/ktor/client/plugins/HttpRequestRetryKt;->getHttpRequestRetry()Lio/ktor/client/plugins/api/ClientPlugin; +Lio/ktor/client/plugins/HttpRequestRetryKt$HttpRequestRetry$1; +HSPLio/ktor/client/plugins/HttpRequestRetryKt$HttpRequestRetry$1;->()V +HSPLio/ktor/client/plugins/HttpRequestRetryKt$HttpRequestRetry$1;->()V +HSPLio/ktor/client/plugins/HttpRequestRetryKt$HttpRequestRetry$1;->invoke()Lio/ktor/client/plugins/HttpRequestRetryConfig; +HSPLio/ktor/client/plugins/HttpRequestRetryKt$HttpRequestRetry$1;->invoke()Ljava/lang/Object; +Lio/ktor/client/plugins/HttpRequestRetryKt$HttpRequestRetry$2; +HSPLio/ktor/client/plugins/HttpRequestRetryKt$HttpRequestRetry$2;->()V +HSPLio/ktor/client/plugins/HttpRequestRetryKt$HttpRequestRetry$2;->()V +HSPLio/ktor/client/plugins/HttpRequestRetryKt$HttpRequestRetry$2;->invoke(Lio/ktor/client/plugins/api/ClientPluginBuilder;)V +HSPLio/ktor/client/plugins/HttpRequestRetryKt$HttpRequestRetry$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/plugins/HttpRequestRetryKt$HttpRequestRetry$2$1; +HSPLio/ktor/client/plugins/HttpRequestRetryKt$HttpRequestRetry$2$1;->(Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;ILkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lio/ktor/client/plugins/api/ClientPluginBuilder;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/HttpSend; +HSPLio/ktor/client/plugins/HttpSend;->()V +HSPLio/ktor/client/plugins/HttpSend;->(I)V +HSPLio/ktor/client/plugins/HttpSend;->(ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLio/ktor/client/plugins/HttpSend;->access$getKey$cp()Lio/ktor/util/AttributeKey; +HSPLio/ktor/client/plugins/HttpSend;->intercept(Lkotlin/jvm/functions/Function3;)V +Lio/ktor/client/plugins/HttpSend$Config; +HSPLio/ktor/client/plugins/HttpSend$Config;->()V +HSPLio/ktor/client/plugins/HttpSend$Config;->getMaxSendCount()I +Lio/ktor/client/plugins/HttpSend$Plugin; +HSPLio/ktor/client/plugins/HttpSend$Plugin;->()V +HSPLio/ktor/client/plugins/HttpSend$Plugin;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLio/ktor/client/plugins/HttpSend$Plugin;->getKey()Lio/ktor/util/AttributeKey; +HSPLio/ktor/client/plugins/HttpSend$Plugin;->install(Lio/ktor/client/plugins/HttpSend;Lio/ktor/client/HttpClient;)V +HSPLio/ktor/client/plugins/HttpSend$Plugin;->install(Ljava/lang/Object;Lio/ktor/client/HttpClient;)V +HSPLio/ktor/client/plugins/HttpSend$Plugin;->prepare(Lkotlin/jvm/functions/Function1;)Lio/ktor/client/plugins/HttpSend; +HSPLio/ktor/client/plugins/HttpSend$Plugin;->prepare(Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +Lio/ktor/client/plugins/HttpSend$Plugin$install$1; +HSPLio/ktor/client/plugins/HttpSend$Plugin$install$1;->(Lio/ktor/client/plugins/HttpSend;Lio/ktor/client/HttpClient;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/HttpTimeoutCapability; +HSPLio/ktor/client/plugins/HttpTimeoutCapability;->()V +HSPLio/ktor/client/plugins/HttpTimeoutCapability;->()V +Lio/ktor/client/plugins/ReceiveError; +HSPLio/ktor/client/plugins/ReceiveError;->()V +HSPLio/ktor/client/plugins/ReceiveError;->()V +HSPLio/ktor/client/plugins/ReceiveError;->install(Lio/ktor/client/HttpClient;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/ReceiveError;->install(Lio/ktor/client/HttpClient;Lkotlin/jvm/functions/Function3;)V +Lio/ktor/client/plugins/ReceiveError$install$1; +HSPLio/ktor/client/plugins/ReceiveError$install$1;->(Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/RenderRequestHook; +HSPLio/ktor/client/plugins/RenderRequestHook;->()V +HSPLio/ktor/client/plugins/RenderRequestHook;->()V +HSPLio/ktor/client/plugins/RenderRequestHook;->install(Lio/ktor/client/HttpClient;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/RenderRequestHook;->install(Lio/ktor/client/HttpClient;Lkotlin/jvm/functions/Function3;)V +Lio/ktor/client/plugins/RenderRequestHook$install$1; +HSPLio/ktor/client/plugins/RenderRequestHook$install$1;->(Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/RequestError; +HSPLio/ktor/client/plugins/RequestError;->()V +HSPLio/ktor/client/plugins/RequestError;->()V +HSPLio/ktor/client/plugins/RequestError;->install(Lio/ktor/client/HttpClient;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/RequestError;->install(Lio/ktor/client/HttpClient;Lkotlin/jvm/functions/Function3;)V +Lio/ktor/client/plugins/RequestError$install$1; +HSPLio/ktor/client/plugins/RequestError$install$1;->(Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/SaveBodyPluginConfig; +HSPLio/ktor/client/plugins/SaveBodyPluginConfig;->()V +HSPLio/ktor/client/plugins/SaveBodyPluginConfig;->getDisabled()Z +Lio/ktor/client/plugins/SetupRequestContext; +HSPLio/ktor/client/plugins/SetupRequestContext;->()V +HSPLio/ktor/client/plugins/SetupRequestContext;->()V +HSPLio/ktor/client/plugins/SetupRequestContext;->install(Lio/ktor/client/HttpClient;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/SetupRequestContext;->install(Lio/ktor/client/HttpClient;Lkotlin/jvm/functions/Function3;)V +Lio/ktor/client/plugins/SetupRequestContext$install$1; +HSPLio/ktor/client/plugins/SetupRequestContext$install$1;->(Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/UserAgentConfig; +HSPLio/ktor/client/plugins/UserAgentConfig;->(Ljava/lang/String;)V +HSPLio/ktor/client/plugins/UserAgentConfig;->(Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLio/ktor/client/plugins/UserAgentConfig;->getAgent()Ljava/lang/String; +HSPLio/ktor/client/plugins/UserAgentConfig;->setAgent(Ljava/lang/String;)V +Lio/ktor/client/plugins/UserAgentKt; +HSPLio/ktor/client/plugins/UserAgentKt;->()V +HSPLio/ktor/client/plugins/UserAgentKt;->getUserAgent()Lio/ktor/client/plugins/api/ClientPlugin; +Lio/ktor/client/plugins/UserAgentKt$UserAgent$1; +HSPLio/ktor/client/plugins/UserAgentKt$UserAgent$1;->()V +HSPLio/ktor/client/plugins/UserAgentKt$UserAgent$1;->()V +HSPLio/ktor/client/plugins/UserAgentKt$UserAgent$1;->invoke()Lio/ktor/client/plugins/UserAgentConfig; +HSPLio/ktor/client/plugins/UserAgentKt$UserAgent$1;->invoke()Ljava/lang/Object; +Lio/ktor/client/plugins/UserAgentKt$UserAgent$2; +HSPLio/ktor/client/plugins/UserAgentKt$UserAgent$2;->()V +HSPLio/ktor/client/plugins/UserAgentKt$UserAgent$2;->()V +HSPLio/ktor/client/plugins/UserAgentKt$UserAgent$2;->invoke(Lio/ktor/client/plugins/api/ClientPluginBuilder;)V +HSPLio/ktor/client/plugins/UserAgentKt$UserAgent$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/plugins/UserAgentKt$UserAgent$2$1; +HSPLio/ktor/client/plugins/UserAgentKt$UserAgent$2$1;->(Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/api/ClientHook; +Lio/ktor/client/plugins/api/ClientPlugin; +Lio/ktor/client/plugins/api/ClientPluginBuilder; +HSPLio/ktor/client/plugins/api/ClientPluginBuilder;->(Lio/ktor/util/AttributeKey;Lio/ktor/client/HttpClient;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/api/ClientPluginBuilder;->getClient()Lio/ktor/client/HttpClient; +HSPLio/ktor/client/plugins/api/ClientPluginBuilder;->getHooks$ktor_client_core()Ljava/util/List; +HSPLio/ktor/client/plugins/api/ClientPluginBuilder;->getOnClose$ktor_client_core()Lkotlin/jvm/functions/Function0; +HSPLio/ktor/client/plugins/api/ClientPluginBuilder;->getPluginConfig()Ljava/lang/Object; +HSPLio/ktor/client/plugins/api/ClientPluginBuilder;->on(Lio/ktor/client/plugins/api/ClientHook;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/api/ClientPluginBuilder;->onRequest(Lkotlin/jvm/functions/Function4;)V +HSPLio/ktor/client/plugins/api/ClientPluginBuilder;->transformRequestBody(Lkotlin/jvm/functions/Function5;)V +HSPLio/ktor/client/plugins/api/ClientPluginBuilder;->transformResponseBody(Lkotlin/jvm/functions/Function5;)V +Lio/ktor/client/plugins/api/ClientPluginBuilder$onClose$1; +HSPLio/ktor/client/plugins/api/ClientPluginBuilder$onClose$1;->()V +HSPLio/ktor/client/plugins/api/ClientPluginBuilder$onClose$1;->()V +Lio/ktor/client/plugins/api/ClientPluginInstance; +HSPLio/ktor/client/plugins/api/ClientPluginInstance;->(Ljava/lang/Object;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V +HSPLio/ktor/client/plugins/api/ClientPluginInstance;->install(Lio/ktor/client/HttpClient;)V +Lio/ktor/client/plugins/api/ClientPluginInstance$onClose$1; +HSPLio/ktor/client/plugins/api/ClientPluginInstance$onClose$1;->()V +HSPLio/ktor/client/plugins/api/ClientPluginInstance$onClose$1;->()V +Lio/ktor/client/plugins/api/CreatePluginUtilsKt; +HSPLio/ktor/client/plugins/api/CreatePluginUtilsKt;->createClientPlugin(Ljava/lang/String;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;)Lio/ktor/client/plugins/api/ClientPlugin; +HSPLio/ktor/client/plugins/api/CreatePluginUtilsKt;->createClientPlugin(Ljava/lang/String;Lkotlin/jvm/functions/Function1;)Lio/ktor/client/plugins/api/ClientPlugin; +Lio/ktor/client/plugins/api/CreatePluginUtilsKt$createClientPlugin$1; +HSPLio/ktor/client/plugins/api/CreatePluginUtilsKt$createClientPlugin$1;->(Ljava/lang/String;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;)V +HSPLio/ktor/client/plugins/api/CreatePluginUtilsKt$createClientPlugin$1;->getKey()Lio/ktor/util/AttributeKey; +HSPLio/ktor/client/plugins/api/CreatePluginUtilsKt$createClientPlugin$1;->install(Lio/ktor/client/plugins/api/ClientPluginInstance;Lio/ktor/client/HttpClient;)V +HSPLio/ktor/client/plugins/api/CreatePluginUtilsKt$createClientPlugin$1;->install(Ljava/lang/Object;Lio/ktor/client/HttpClient;)V +HSPLio/ktor/client/plugins/api/CreatePluginUtilsKt$createClientPlugin$1;->prepare(Lkotlin/jvm/functions/Function1;)Lio/ktor/client/plugins/api/ClientPluginInstance; +HSPLio/ktor/client/plugins/api/CreatePluginUtilsKt$createClientPlugin$1;->prepare(Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +Lio/ktor/client/plugins/api/CreatePluginUtilsKt$createClientPlugin$2; +HSPLio/ktor/client/plugins/api/CreatePluginUtilsKt$createClientPlugin$2;->()V +HSPLio/ktor/client/plugins/api/CreatePluginUtilsKt$createClientPlugin$2;->()V +HSPLio/ktor/client/plugins/api/CreatePluginUtilsKt$createClientPlugin$2;->invoke()Ljava/lang/Object; +HSPLio/ktor/client/plugins/api/CreatePluginUtilsKt$createClientPlugin$2;->invoke()V +Lio/ktor/client/plugins/api/HookHandler; +HSPLio/ktor/client/plugins/api/HookHandler;->(Lio/ktor/client/plugins/api/ClientHook;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/api/HookHandler;->install(Lio/ktor/client/HttpClient;)V +Lio/ktor/client/plugins/api/RequestHook; +HSPLio/ktor/client/plugins/api/RequestHook;->()V +HSPLio/ktor/client/plugins/api/RequestHook;->()V +HSPLio/ktor/client/plugins/api/RequestHook;->install(Lio/ktor/client/HttpClient;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/api/RequestHook;->install(Lio/ktor/client/HttpClient;Lkotlin/jvm/functions/Function4;)V +Lio/ktor/client/plugins/api/RequestHook$install$1; +HSPLio/ktor/client/plugins/api/RequestHook$install$1;->(Lkotlin/jvm/functions/Function4;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/api/Send; +HSPLio/ktor/client/plugins/api/Send;->()V +HSPLio/ktor/client/plugins/api/Send;->()V +HSPLio/ktor/client/plugins/api/Send;->install(Lio/ktor/client/HttpClient;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/api/Send;->install(Lio/ktor/client/HttpClient;Lkotlin/jvm/functions/Function3;)V +Lio/ktor/client/plugins/api/Send$install$1; +HSPLio/ktor/client/plugins/api/Send$install$1;->(Lkotlin/jvm/functions/Function3;Lio/ktor/client/HttpClient;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/api/SetupRequest; +HSPLio/ktor/client/plugins/api/SetupRequest;->()V +HSPLio/ktor/client/plugins/api/SetupRequest;->()V +HSPLio/ktor/client/plugins/api/SetupRequest;->install(Lio/ktor/client/HttpClient;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/api/SetupRequest;->install(Lio/ktor/client/HttpClient;Lkotlin/jvm/functions/Function2;)V +Lio/ktor/client/plugins/api/SetupRequest$install$1; +HSPLio/ktor/client/plugins/api/SetupRequest$install$1;->(Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/api/TransformRequestBodyHook; +HSPLio/ktor/client/plugins/api/TransformRequestBodyHook;->()V +HSPLio/ktor/client/plugins/api/TransformRequestBodyHook;->()V +HSPLio/ktor/client/plugins/api/TransformRequestBodyHook;->install(Lio/ktor/client/HttpClient;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/api/TransformRequestBodyHook;->install(Lio/ktor/client/HttpClient;Lkotlin/jvm/functions/Function5;)V +Lio/ktor/client/plugins/api/TransformRequestBodyHook$install$1; +HSPLio/ktor/client/plugins/api/TransformRequestBodyHook$install$1;->(Lkotlin/jvm/functions/Function5;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/api/TransformResponseBodyHook; +HSPLio/ktor/client/plugins/api/TransformResponseBodyHook;->()V +HSPLio/ktor/client/plugins/api/TransformResponseBodyHook;->()V +HSPLio/ktor/client/plugins/api/TransformResponseBodyHook;->install(Lio/ktor/client/HttpClient;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/api/TransformResponseBodyHook;->install(Lio/ktor/client/HttpClient;Lkotlin/jvm/functions/Function5;)V +Lio/ktor/client/plugins/api/TransformResponseBodyHook$install$1; +HSPLio/ktor/client/plugins/api/TransformResponseBodyHook$install$1;->(Lkotlin/jvm/functions/Function5;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/cache/HttpCache; +HSPLio/ktor/client/plugins/cache/HttpCache;->()V +HSPLio/ktor/client/plugins/cache/HttpCache;->(Lio/ktor/client/plugins/cache/storage/HttpCacheStorage;Lio/ktor/client/plugins/cache/storage/HttpCacheStorage;Lio/ktor/client/plugins/cache/storage/CacheStorage;Lio/ktor/client/plugins/cache/storage/CacheStorage;ZZ)V +HSPLio/ktor/client/plugins/cache/HttpCache;->(Lio/ktor/client/plugins/cache/storage/HttpCacheStorage;Lio/ktor/client/plugins/cache/storage/HttpCacheStorage;Lio/ktor/client/plugins/cache/storage/CacheStorage;Lio/ktor/client/plugins/cache/storage/CacheStorage;ZZLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLio/ktor/client/plugins/cache/HttpCache;->access$getKey$cp()Lio/ktor/util/AttributeKey; +Lio/ktor/client/plugins/cache/HttpCache$Companion; +HSPLio/ktor/client/plugins/cache/HttpCache$Companion;->()V +HSPLio/ktor/client/plugins/cache/HttpCache$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLio/ktor/client/plugins/cache/HttpCache$Companion;->getKey()Lio/ktor/util/AttributeKey; +HSPLio/ktor/client/plugins/cache/HttpCache$Companion;->install(Lio/ktor/client/plugins/cache/HttpCache;Lio/ktor/client/HttpClient;)V +HSPLio/ktor/client/plugins/cache/HttpCache$Companion;->install(Ljava/lang/Object;Lio/ktor/client/HttpClient;)V +HSPLio/ktor/client/plugins/cache/HttpCache$Companion;->prepare(Lkotlin/jvm/functions/Function1;)Lio/ktor/client/plugins/cache/HttpCache; +HSPLio/ktor/client/plugins/cache/HttpCache$Companion;->prepare(Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +Lio/ktor/client/plugins/cache/HttpCache$Companion$install$1; +HSPLio/ktor/client/plugins/cache/HttpCache$Companion$install$1;->(Lio/ktor/client/plugins/cache/HttpCache;Lio/ktor/client/HttpClient;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/cache/HttpCache$Companion$install$2; +HSPLio/ktor/client/plugins/cache/HttpCache$Companion$install$2;->(Lio/ktor/client/plugins/cache/HttpCache;Lio/ktor/client/HttpClient;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/cache/HttpCache$Config; +HSPLio/ktor/client/plugins/cache/HttpCache$Config;->()V +HSPLio/ktor/client/plugins/cache/HttpCache$Config;->getPrivateStorage()Lio/ktor/client/plugins/cache/storage/HttpCacheStorage; +HSPLio/ktor/client/plugins/cache/HttpCache$Config;->getPrivateStorageNew$ktor_client_core()Lio/ktor/client/plugins/cache/storage/CacheStorage; +HSPLio/ktor/client/plugins/cache/HttpCache$Config;->getPublicStorage()Lio/ktor/client/plugins/cache/storage/HttpCacheStorage; +HSPLio/ktor/client/plugins/cache/HttpCache$Config;->getPublicStorageNew$ktor_client_core()Lio/ktor/client/plugins/cache/storage/CacheStorage; +HSPLio/ktor/client/plugins/cache/HttpCache$Config;->getUseOldStorage$ktor_client_core()Z +HSPLio/ktor/client/plugins/cache/HttpCache$Config;->isShared()Z +Lio/ktor/client/plugins/cache/storage/CacheStorage; +HSPLio/ktor/client/plugins/cache/storage/CacheStorage;->()V +Lio/ktor/client/plugins/cache/storage/CacheStorage$Companion; +HSPLio/ktor/client/plugins/cache/storage/CacheStorage$Companion;->()V +HSPLio/ktor/client/plugins/cache/storage/CacheStorage$Companion;->()V +HSPLio/ktor/client/plugins/cache/storage/CacheStorage$Companion;->getUnlimited()Lkotlin/jvm/functions/Function0; +Lio/ktor/client/plugins/cache/storage/CacheStorage$Companion$Unlimited$1; +HSPLio/ktor/client/plugins/cache/storage/CacheStorage$Companion$Unlimited$1;->()V +HSPLio/ktor/client/plugins/cache/storage/CacheStorage$Companion$Unlimited$1;->()V +HSPLio/ktor/client/plugins/cache/storage/CacheStorage$Companion$Unlimited$1;->invoke()Lio/ktor/client/plugins/cache/storage/UnlimitedStorage; +HSPLio/ktor/client/plugins/cache/storage/CacheStorage$Companion$Unlimited$1;->invoke()Ljava/lang/Object; +Lio/ktor/client/plugins/cache/storage/DisabledCacheStorage; +HSPLio/ktor/client/plugins/cache/storage/DisabledCacheStorage;->()V +HSPLio/ktor/client/plugins/cache/storage/DisabledCacheStorage;->()V +Lio/ktor/client/plugins/cache/storage/DisabledStorage; +HSPLio/ktor/client/plugins/cache/storage/DisabledStorage;->()V +HSPLio/ktor/client/plugins/cache/storage/DisabledStorage;->()V +Lio/ktor/client/plugins/cache/storage/HttpCacheStorage; +HSPLio/ktor/client/plugins/cache/storage/HttpCacheStorage;->()V +HSPLio/ktor/client/plugins/cache/storage/HttpCacheStorage;->()V +HSPLio/ktor/client/plugins/cache/storage/HttpCacheStorage;->access$getUnlimited$cp()Lkotlin/jvm/functions/Function0; +Lio/ktor/client/plugins/cache/storage/HttpCacheStorage$Companion; +HSPLio/ktor/client/plugins/cache/storage/HttpCacheStorage$Companion;->()V +HSPLio/ktor/client/plugins/cache/storage/HttpCacheStorage$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLio/ktor/client/plugins/cache/storage/HttpCacheStorage$Companion;->getUnlimited()Lkotlin/jvm/functions/Function0; +Lio/ktor/client/plugins/cache/storage/HttpCacheStorage$Companion$Unlimited$1; +HSPLio/ktor/client/plugins/cache/storage/HttpCacheStorage$Companion$Unlimited$1;->()V +HSPLio/ktor/client/plugins/cache/storage/HttpCacheStorage$Companion$Unlimited$1;->()V +HSPLio/ktor/client/plugins/cache/storage/HttpCacheStorage$Companion$Unlimited$1;->invoke()Lio/ktor/client/plugins/cache/storage/UnlimitedCacheStorage; +HSPLio/ktor/client/plugins/cache/storage/HttpCacheStorage$Companion$Unlimited$1;->invoke()Ljava/lang/Object; +Lio/ktor/client/plugins/cache/storage/UnlimitedCacheStorage; +HSPLio/ktor/client/plugins/cache/storage/UnlimitedCacheStorage;->()V +Lio/ktor/client/plugins/cache/storage/UnlimitedStorage; +HSPLio/ktor/client/plugins/cache/storage/UnlimitedStorage;->()V +Lio/ktor/client/plugins/contentnegotiation/ContentNegotiationConfig; +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationConfig;->()V +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationConfig;->getIgnoredTypes$ktor_client_content_negotiation()Ljava/util/Set; +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationConfig;->getRegistrations$ktor_client_content_negotiation()Ljava/util/List; +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationConfig;->register(Lio/ktor/http/ContentType;Lio/ktor/serialization/ContentConverter;Lio/ktor/http/ContentTypeMatcher;Lkotlin/jvm/functions/Function1;)V +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationConfig;->register(Lio/ktor/http/ContentType;Lio/ktor/serialization/ContentConverter;Lkotlin/jvm/functions/Function1;)V +Lio/ktor/client/plugins/contentnegotiation/ContentNegotiationConfig$ConverterRegistration; +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationConfig$ConverterRegistration;->(Lio/ktor/serialization/ContentConverter;Lio/ktor/http/ContentType;Lio/ktor/http/ContentTypeMatcher;)V +Lio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt; +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt;->()V +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt;->getContentNegotiation()Lio/ktor/client/plugins/api/ClientPlugin; +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt;->getDefaultCommonIgnoredTypes()Ljava/util/Set; +Lio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt$ContentNegotiation$1; +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt$ContentNegotiation$1;->()V +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt$ContentNegotiation$1;->()V +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt$ContentNegotiation$1;->invoke()Lio/ktor/client/plugins/contentnegotiation/ContentNegotiationConfig; +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt$ContentNegotiation$1;->invoke()Ljava/lang/Object; +Lio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt$ContentNegotiation$2; +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt$ContentNegotiation$2;->()V +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt$ContentNegotiation$2;->()V +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt$ContentNegotiation$2;->invoke(Lio/ktor/client/plugins/api/ClientPluginBuilder;)V +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt$ContentNegotiation$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt$ContentNegotiation$2$1; +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt$ContentNegotiation$2$1;->(Ljava/util/List;Ljava/util/Set;Lio/ktor/client/plugins/api/ClientPluginBuilder;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt$ContentNegotiation$2$2; +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt$ContentNegotiation$2$2;->(Ljava/util/Set;Ljava/util/List;Lio/ktor/client/plugins/api/ClientPluginBuilder;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/contentnegotiation/DefaultIgnoredTypesJvmKt; +HSPLio/ktor/client/plugins/contentnegotiation/DefaultIgnoredTypesJvmKt;->()V +HSPLio/ktor/client/plugins/contentnegotiation/DefaultIgnoredTypesJvmKt;->getDefaultIgnoredTypes()Ljava/util/Set; +Lio/ktor/client/plugins/contentnegotiation/JsonContentTypeMatcher; +HSPLio/ktor/client/plugins/contentnegotiation/JsonContentTypeMatcher;->()V +HSPLio/ktor/client/plugins/contentnegotiation/JsonContentTypeMatcher;->()V +Lio/ktor/client/plugins/logging/HttpClientCallLogger; +Lio/ktor/client/plugins/logging/LogLevel; +HSPLio/ktor/client/plugins/logging/LogLevel;->$values()[Lio/ktor/client/plugins/logging/LogLevel; +HSPLio/ktor/client/plugins/logging/LogLevel;->()V +HSPLio/ktor/client/plugins/logging/LogLevel;->(Ljava/lang/String;IZZZ)V +HSPLio/ktor/client/plugins/logging/LogLevel;->getBody()Z +Lio/ktor/client/plugins/logging/Logger; +HSPLio/ktor/client/plugins/logging/Logger;->()V +Lio/ktor/client/plugins/logging/Logger$Companion; +HSPLio/ktor/client/plugins/logging/Logger$Companion;->()V +HSPLio/ktor/client/plugins/logging/Logger$Companion;->()V +Lio/ktor/client/plugins/logging/LoggerJvmKt; +HSPLio/ktor/client/plugins/logging/LoggerJvmKt;->getDEFAULT(Lio/ktor/client/plugins/logging/Logger$Companion;)Lio/ktor/client/plugins/logging/Logger; +Lio/ktor/client/plugins/logging/LoggerJvmKt$DEFAULT$1; +HSPLio/ktor/client/plugins/logging/LoggerJvmKt$DEFAULT$1;->()V +Lio/ktor/client/plugins/logging/LoggingConfig; +HSPLio/ktor/client/plugins/logging/LoggingConfig;->()V +HSPLio/ktor/client/plugins/logging/LoggingConfig;->getFilters$ktor_client_logging()Ljava/util/List; +HSPLio/ktor/client/plugins/logging/LoggingConfig;->getLevel()Lio/ktor/client/plugins/logging/LogLevel; +HSPLio/ktor/client/plugins/logging/LoggingConfig;->getLogger()Lio/ktor/client/plugins/logging/Logger; +HSPLio/ktor/client/plugins/logging/LoggingConfig;->getSanitizedHeaders$ktor_client_logging()Ljava/util/List; +HSPLio/ktor/client/plugins/logging/LoggingConfig;->setLevel(Lio/ktor/client/plugins/logging/LogLevel;)V +Lio/ktor/client/plugins/logging/LoggingKt; +HSPLio/ktor/client/plugins/logging/LoggingKt;->()V +HSPLio/ktor/client/plugins/logging/LoggingKt;->getLogging()Lio/ktor/client/plugins/api/ClientPlugin; +Lio/ktor/client/plugins/logging/LoggingKt$Logging$1; +HSPLio/ktor/client/plugins/logging/LoggingKt$Logging$1;->()V +HSPLio/ktor/client/plugins/logging/LoggingKt$Logging$1;->()V +HSPLio/ktor/client/plugins/logging/LoggingKt$Logging$1;->invoke()Lio/ktor/client/plugins/logging/LoggingConfig; +HSPLio/ktor/client/plugins/logging/LoggingKt$Logging$1;->invoke()Ljava/lang/Object; +Lio/ktor/client/plugins/logging/LoggingKt$Logging$2; +HSPLio/ktor/client/plugins/logging/LoggingKt$Logging$2;->()V +HSPLio/ktor/client/plugins/logging/LoggingKt$Logging$2;->()V +HSPLio/ktor/client/plugins/logging/LoggingKt$Logging$2;->invoke(Lio/ktor/client/plugins/api/ClientPluginBuilder;)V +HSPLio/ktor/client/plugins/logging/LoggingKt$Logging$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/plugins/logging/LoggingKt$Logging$2$1; +HSPLio/ktor/client/plugins/logging/LoggingKt$Logging$2$1;->(Ljava/util/List;Lio/ktor/client/plugins/logging/Logger;Lio/ktor/client/plugins/logging/LogLevel;Ljava/util/List;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/logging/LoggingKt$Logging$2$2; +HSPLio/ktor/client/plugins/logging/LoggingKt$Logging$2$2;->(Lio/ktor/client/plugins/logging/LogLevel;Ljava/util/List;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/logging/LoggingKt$Logging$2$3; +HSPLio/ktor/client/plugins/logging/LoggingKt$Logging$2$3;->(Lio/ktor/client/plugins/logging/LogLevel;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/logging/LoggingKt$Logging$2$4; +HSPLio/ktor/client/plugins/logging/LoggingKt$Logging$2$4;->(Lkotlin/jvm/functions/Function2;)V +HSPLio/ktor/client/plugins/logging/LoggingKt$Logging$2$4;->invoke(Lio/ktor/client/plugins/observer/ResponseObserverConfig;)V +HSPLio/ktor/client/plugins/logging/LoggingKt$Logging$2$4;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/plugins/logging/LoggingKt$Logging$2$observer$1; +HSPLio/ktor/client/plugins/logging/LoggingKt$Logging$2$observer$1;->(Lio/ktor/client/plugins/logging/LogLevel;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/logging/ReceiveHook; +HSPLio/ktor/client/plugins/logging/ReceiveHook;->()V +HSPLio/ktor/client/plugins/logging/ReceiveHook;->()V +HSPLio/ktor/client/plugins/logging/ReceiveHook;->install(Lio/ktor/client/HttpClient;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/logging/ReceiveHook;->install(Lio/ktor/client/HttpClient;Lkotlin/jvm/functions/Function3;)V +Lio/ktor/client/plugins/logging/ReceiveHook$install$1; +HSPLio/ktor/client/plugins/logging/ReceiveHook$install$1;->(Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/logging/ResponseHook; +HSPLio/ktor/client/plugins/logging/ResponseHook;->()V +HSPLio/ktor/client/plugins/logging/ResponseHook;->()V +HSPLio/ktor/client/plugins/logging/ResponseHook;->install(Lio/ktor/client/HttpClient;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/logging/ResponseHook;->install(Lio/ktor/client/HttpClient;Lkotlin/jvm/functions/Function3;)V +Lio/ktor/client/plugins/logging/ResponseHook$install$1; +HSPLio/ktor/client/plugins/logging/ResponseHook$install$1;->(Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/logging/SendHook; +HSPLio/ktor/client/plugins/logging/SendHook;->()V +HSPLio/ktor/client/plugins/logging/SendHook;->()V +HSPLio/ktor/client/plugins/logging/SendHook;->install(Lio/ktor/client/HttpClient;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/logging/SendHook;->install(Lio/ktor/client/HttpClient;Lkotlin/jvm/functions/Function3;)V +Lio/ktor/client/plugins/logging/SendHook$install$1; +HSPLio/ktor/client/plugins/logging/SendHook$install$1;->(Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/observer/AfterReceiveHook; +HSPLio/ktor/client/plugins/observer/AfterReceiveHook;->()V +HSPLio/ktor/client/plugins/observer/AfterReceiveHook;->()V +HSPLio/ktor/client/plugins/observer/AfterReceiveHook;->install(Lio/ktor/client/HttpClient;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/observer/AfterReceiveHook;->install(Lio/ktor/client/HttpClient;Lkotlin/jvm/functions/Function3;)V +Lio/ktor/client/plugins/observer/AfterReceiveHook$install$1; +HSPLio/ktor/client/plugins/observer/AfterReceiveHook$install$1;->(Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/observer/ResponseObserverConfig; +HSPLio/ktor/client/plugins/observer/ResponseObserverConfig;->()V +HSPLio/ktor/client/plugins/observer/ResponseObserverConfig;->getFilter$ktor_client_core()Lkotlin/jvm/functions/Function1; +HSPLio/ktor/client/plugins/observer/ResponseObserverConfig;->getResponseHandler$ktor_client_core()Lkotlin/jvm/functions/Function2; +HSPLio/ktor/client/plugins/observer/ResponseObserverConfig;->onResponse(Lkotlin/jvm/functions/Function2;)V +Lio/ktor/client/plugins/observer/ResponseObserverConfig$responseHandler$1; +HSPLio/ktor/client/plugins/observer/ResponseObserverConfig$responseHandler$1;->(Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/observer/ResponseObserverKt; +HSPLio/ktor/client/plugins/observer/ResponseObserverKt;->()V +HSPLio/ktor/client/plugins/observer/ResponseObserverKt;->getResponseObserver()Lio/ktor/client/plugins/api/ClientPlugin; +Lio/ktor/client/plugins/observer/ResponseObserverKt$ResponseObserver$1; +HSPLio/ktor/client/plugins/observer/ResponseObserverKt$ResponseObserver$1;->()V +HSPLio/ktor/client/plugins/observer/ResponseObserverKt$ResponseObserver$1;->()V +HSPLio/ktor/client/plugins/observer/ResponseObserverKt$ResponseObserver$1;->invoke()Lio/ktor/client/plugins/observer/ResponseObserverConfig; +HSPLio/ktor/client/plugins/observer/ResponseObserverKt$ResponseObserver$1;->invoke()Ljava/lang/Object; +Lio/ktor/client/plugins/observer/ResponseObserverKt$ResponseObserver$2; +HSPLio/ktor/client/plugins/observer/ResponseObserverKt$ResponseObserver$2;->()V +HSPLio/ktor/client/plugins/observer/ResponseObserverKt$ResponseObserver$2;->()V +HSPLio/ktor/client/plugins/observer/ResponseObserverKt$ResponseObserver$2;->invoke(Lio/ktor/client/plugins/api/ClientPluginBuilder;)V +HSPLio/ktor/client/plugins/observer/ResponseObserverKt$ResponseObserver$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/plugins/observer/ResponseObserverKt$ResponseObserver$2$1; +HSPLio/ktor/client/plugins/observer/ResponseObserverKt$ResponseObserver$2$1;->(Lkotlin/jvm/functions/Function1;Lio/ktor/client/plugins/api/ClientPluginBuilder;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/sse/SSECapability; +HSPLio/ktor/client/plugins/sse/SSECapability;->()V +HSPLio/ktor/client/plugins/sse/SSECapability;->()V +Lio/ktor/client/plugins/websocket/WebSocketCapability; +HSPLio/ktor/client/plugins/websocket/WebSocketCapability;->()V +HSPLio/ktor/client/plugins/websocket/WebSocketCapability;->()V +Lio/ktor/client/plugins/websocket/WebSocketExtensionsCapability; +HSPLio/ktor/client/plugins/websocket/WebSocketExtensionsCapability;->()V +HSPLio/ktor/client/plugins/websocket/WebSocketExtensionsCapability;->()V +Lio/ktor/client/plugins/websocket/WebSockets; +HSPLio/ktor/client/plugins/websocket/WebSockets;->()V +HSPLio/ktor/client/plugins/websocket/WebSockets;->(JJLio/ktor/websocket/WebSocketExtensionsConfig;Lio/ktor/serialization/WebsocketContentConverter;)V +HSPLio/ktor/client/plugins/websocket/WebSockets;->access$getKey$cp()Lio/ktor/util/AttributeKey; +Lio/ktor/client/plugins/websocket/WebSockets$Config; +HSPLio/ktor/client/plugins/websocket/WebSockets$Config;->()V +HSPLio/ktor/client/plugins/websocket/WebSockets$Config;->getContentConverter()Lio/ktor/serialization/WebsocketContentConverter; +HSPLio/ktor/client/plugins/websocket/WebSockets$Config;->getExtensionsConfig$ktor_client_core()Lio/ktor/websocket/WebSocketExtensionsConfig; +HSPLio/ktor/client/plugins/websocket/WebSockets$Config;->getMaxFrameSize()J +HSPLio/ktor/client/plugins/websocket/WebSockets$Config;->getPingInterval()J +HSPLio/ktor/client/plugins/websocket/WebSockets$Config;->setPingInterval(J)V +Lio/ktor/client/plugins/websocket/WebSockets$Plugin; +HSPLio/ktor/client/plugins/websocket/WebSockets$Plugin;->()V +HSPLio/ktor/client/plugins/websocket/WebSockets$Plugin;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLio/ktor/client/plugins/websocket/WebSockets$Plugin;->getKey()Lio/ktor/util/AttributeKey; +HSPLio/ktor/client/plugins/websocket/WebSockets$Plugin;->install(Lio/ktor/client/plugins/websocket/WebSockets;Lio/ktor/client/HttpClient;)V +HSPLio/ktor/client/plugins/websocket/WebSockets$Plugin;->install(Ljava/lang/Object;Lio/ktor/client/HttpClient;)V +HSPLio/ktor/client/plugins/websocket/WebSockets$Plugin;->prepare(Lkotlin/jvm/functions/Function1;)Lio/ktor/client/plugins/websocket/WebSockets; +HSPLio/ktor/client/plugins/websocket/WebSockets$Plugin;->prepare(Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +Lio/ktor/client/plugins/websocket/WebSockets$Plugin$install$1; +HSPLio/ktor/client/plugins/websocket/WebSockets$Plugin$install$1;->(ZLio/ktor/client/plugins/websocket/WebSockets;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/websocket/WebSockets$Plugin$install$2; +HSPLio/ktor/client/plugins/websocket/WebSockets$Plugin$install$2;->(Lio/ktor/client/plugins/websocket/WebSockets;ZLkotlin/coroutines/Continuation;)V +Lio/ktor/client/request/HttpRequestPipeline; +HSPLio/ktor/client/request/HttpRequestPipeline;->()V +HSPLio/ktor/client/request/HttpRequestPipeline;->(Z)V +HSPLio/ktor/client/request/HttpRequestPipeline;->access$getBefore$cp()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/request/HttpRequestPipeline;->access$getRender$cp()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/request/HttpRequestPipeline;->access$getSend$cp()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/request/HttpRequestPipeline;->access$getState$cp()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/request/HttpRequestPipeline;->access$getTransform$cp()Lio/ktor/util/pipeline/PipelinePhase; +Lio/ktor/client/request/HttpRequestPipeline$Phases; +HSPLio/ktor/client/request/HttpRequestPipeline$Phases;->()V +HSPLio/ktor/client/request/HttpRequestPipeline$Phases;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLio/ktor/client/request/HttpRequestPipeline$Phases;->getBefore()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/request/HttpRequestPipeline$Phases;->getRender()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/request/HttpRequestPipeline$Phases;->getSend()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/request/HttpRequestPipeline$Phases;->getState()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/request/HttpRequestPipeline$Phases;->getTransform()Lio/ktor/util/pipeline/PipelinePhase; +Lio/ktor/client/request/HttpSendPipeline; +HSPLio/ktor/client/request/HttpSendPipeline;->()V +HSPLio/ktor/client/request/HttpSendPipeline;->(Z)V +HSPLio/ktor/client/request/HttpSendPipeline;->access$getEngine$cp()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/request/HttpSendPipeline;->access$getMonitoring$cp()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/request/HttpSendPipeline;->access$getReceive$cp()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/request/HttpSendPipeline;->access$getState$cp()Lio/ktor/util/pipeline/PipelinePhase; +Lio/ktor/client/request/HttpSendPipeline$Phases; +HSPLio/ktor/client/request/HttpSendPipeline$Phases;->()V +HSPLio/ktor/client/request/HttpSendPipeline$Phases;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLio/ktor/client/request/HttpSendPipeline$Phases;->getEngine()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/request/HttpSendPipeline$Phases;->getMonitoring()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/request/HttpSendPipeline$Phases;->getReceive()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/request/HttpSendPipeline$Phases;->getState()Lio/ktor/util/pipeline/PipelinePhase; +Lio/ktor/client/statement/HttpReceivePipeline; +HSPLio/ktor/client/statement/HttpReceivePipeline;->()V +HSPLio/ktor/client/statement/HttpReceivePipeline;->(Z)V +HSPLio/ktor/client/statement/HttpReceivePipeline;->access$getAfter$cp()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/statement/HttpReceivePipeline;->access$getBefore$cp()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/statement/HttpReceivePipeline;->access$getState$cp()Lio/ktor/util/pipeline/PipelinePhase; +Lio/ktor/client/statement/HttpReceivePipeline$Phases; +HSPLio/ktor/client/statement/HttpReceivePipeline$Phases;->()V +HSPLio/ktor/client/statement/HttpReceivePipeline$Phases;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLio/ktor/client/statement/HttpReceivePipeline$Phases;->getAfter()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/statement/HttpReceivePipeline$Phases;->getBefore()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/statement/HttpReceivePipeline$Phases;->getState()Lio/ktor/util/pipeline/PipelinePhase; +Lio/ktor/client/statement/HttpResponsePipeline; +HSPLio/ktor/client/statement/HttpResponsePipeline;->()V +HSPLio/ktor/client/statement/HttpResponsePipeline;->(Z)V +HSPLio/ktor/client/statement/HttpResponsePipeline;->access$getParse$cp()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/statement/HttpResponsePipeline;->access$getReceive$cp()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/statement/HttpResponsePipeline;->access$getTransform$cp()Lio/ktor/util/pipeline/PipelinePhase; +Lio/ktor/client/statement/HttpResponsePipeline$Phases; +HSPLio/ktor/client/statement/HttpResponsePipeline$Phases;->()V +HSPLio/ktor/client/statement/HttpResponsePipeline$Phases;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLio/ktor/client/statement/HttpResponsePipeline$Phases;->getParse()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/statement/HttpResponsePipeline$Phases;->getReceive()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/statement/HttpResponsePipeline$Phases;->getTransform()Lio/ktor/util/pipeline/PipelinePhase; +Lio/ktor/events/EventDefinition; +HSPLio/ktor/events/EventDefinition;->()V +Lio/ktor/events/Events; +HSPLio/ktor/events/Events;->()V +Lio/ktor/http/ContentType; +HSPLio/ktor/http/ContentType;->()V +HSPLio/ktor/http/ContentType;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)V +HSPLio/ktor/http/ContentType;->(Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)V +HSPLio/ktor/http/ContentType;->(Ljava/lang/String;Ljava/lang/String;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLio/ktor/http/ContentType;->equals(Ljava/lang/Object;)Z +Lio/ktor/http/ContentType$Application; +HSPLio/ktor/http/ContentType$Application;->()V +HSPLio/ktor/http/ContentType$Application;->()V +HSPLio/ktor/http/ContentType$Application;->getJson()Lio/ktor/http/ContentType; +Lio/ktor/http/ContentType$Companion; +HSPLio/ktor/http/ContentType$Companion;->()V +HSPLio/ktor/http/ContentType$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lio/ktor/http/ContentTypeMatcher; +Lio/ktor/http/HeaderValueWithParameters; +HSPLio/ktor/http/HeaderValueWithParameters;->()V +HSPLio/ktor/http/HeaderValueWithParameters;->(Ljava/lang/String;Ljava/util/List;)V +HSPLio/ktor/http/HeaderValueWithParameters;->getParameters()Ljava/util/List; +Lio/ktor/http/HeaderValueWithParameters$Companion; +HSPLio/ktor/http/HeaderValueWithParameters$Companion;->()V +HSPLio/ktor/http/HeaderValueWithParameters$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lio/ktor/http/HttpMethod; +HSPLio/ktor/http/HttpMethod;->()V +HSPLio/ktor/http/HttpMethod;->(Ljava/lang/String;)V +HSPLio/ktor/http/HttpMethod;->access$getGet$cp()Lio/ktor/http/HttpMethod; +HSPLio/ktor/http/HttpMethod;->access$getHead$cp()Lio/ktor/http/HttpMethod; +HSPLio/ktor/http/HttpMethod;->hashCode()I +Lio/ktor/http/HttpMethod$Companion; +HSPLio/ktor/http/HttpMethod$Companion;->()V +HSPLio/ktor/http/HttpMethod$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLio/ktor/http/HttpMethod$Companion;->getGet()Lio/ktor/http/HttpMethod; +HSPLio/ktor/http/HttpMethod$Companion;->getHead()Lio/ktor/http/HttpMethod; +Lio/ktor/http/HttpStatusCode; +Lio/ktor/http/content/OutgoingContent; +Lio/ktor/serialization/Configuration; +Lio/ktor/serialization/Configuration$DefaultImpls; +HSPLio/ktor/serialization/Configuration$DefaultImpls;->register$default(Lio/ktor/serialization/Configuration;Lio/ktor/http/ContentType;Lio/ktor/serialization/ContentConverter;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +Lio/ktor/serialization/Configuration$register$1; +HSPLio/ktor/serialization/Configuration$register$1;->()V +HSPLio/ktor/serialization/Configuration$register$1;->()V +HSPLio/ktor/serialization/Configuration$register$1;->invoke(Lio/ktor/serialization/ContentConverter;)V +HSPLio/ktor/serialization/Configuration$register$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/serialization/ContentConverter; +Lio/ktor/serialization/WebsocketContentConverter; +Lio/ktor/serialization/kotlinx/ExtensionsJvmKt; +HSPLio/ktor/serialization/kotlinx/ExtensionsJvmKt;->()V +HSPLio/ktor/serialization/kotlinx/ExtensionsJvmKt;->getProviders()Ljava/util/List; +Lio/ktor/serialization/kotlinx/ExtensionsKt; +HSPLio/ktor/serialization/kotlinx/ExtensionsKt;->extensions(Lkotlinx/serialization/SerialFormat;)Ljava/util/List; +Lio/ktor/serialization/kotlinx/KotlinxSerializationConverter; +HSPLio/ktor/serialization/kotlinx/KotlinxSerializationConverter;->(Lkotlinx/serialization/SerialFormat;)V +Lio/ktor/serialization/kotlinx/KotlinxSerializationExtensionProvider; +Lio/ktor/util/AttributeKey; +HSPLio/ktor/util/AttributeKey;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLio/ktor/util/AttributeKey;->hashCode()I +Lio/ktor/util/Attributes; +Lio/ktor/util/AttributesJvmBase; +HSPLio/ktor/util/AttributesJvmBase;->()V +HSPLio/ktor/util/AttributesJvmBase;->getOrNull(Lio/ktor/util/AttributeKey;)Ljava/lang/Object; +HSPLio/ktor/util/AttributesJvmBase;->put(Lio/ktor/util/AttributeKey;Ljava/lang/Object;)V +Lio/ktor/util/AttributesJvmKt; +HSPLio/ktor/util/AttributesJvmKt;->Attributes(Z)Lio/ktor/util/Attributes; +Lio/ktor/util/CacheKt; +HSPLio/ktor/util/CacheKt;->createLRUCache(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;I)Ljava/util/Map; +Lio/ktor/util/ConcurrentSafeAttributes; +HSPLio/ktor/util/ConcurrentSafeAttributes;->()V +HSPLio/ktor/util/ConcurrentSafeAttributes;->computeIfAbsent(Lio/ktor/util/AttributeKey;Lkotlin/jvm/functions/Function0;)Ljava/lang/Object; +HSPLio/ktor/util/ConcurrentSafeAttributes;->getMap()Ljava/util/Map; +HSPLio/ktor/util/ConcurrentSafeAttributes;->getMap()Ljava/util/concurrent/ConcurrentHashMap; +Lio/ktor/util/CoroutinesUtilsKt; +HSPLio/ktor/util/CoroutinesUtilsKt;->SilentSupervisor$default(Lkotlinx/coroutines/Job;ILjava/lang/Object;)Lkotlin/coroutines/CoroutineContext; +HSPLio/ktor/util/CoroutinesUtilsKt;->SilentSupervisor(Lkotlinx/coroutines/Job;)Lkotlin/coroutines/CoroutineContext; +Lio/ktor/util/CoroutinesUtilsKt$SilentSupervisor$$inlined$CoroutineExceptionHandler$1; +HSPLio/ktor/util/CoroutinesUtilsKt$SilentSupervisor$$inlined$CoroutineExceptionHandler$1;->(Lkotlinx/coroutines/CoroutineExceptionHandler$Key;)V +Lio/ktor/util/LRUCache; +HSPLio/ktor/util/LRUCache;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;I)V +Lio/ktor/util/Platform; +HSPLio/ktor/util/Platform;->$values()[Lio/ktor/util/Platform; +HSPLio/ktor/util/Platform;->()V +HSPLio/ktor/util/Platform;->(Ljava/lang/String;I)V +Lio/ktor/util/PlatformUtils; +HSPLio/ktor/util/PlatformUtils;->()V +HSPLio/ktor/util/PlatformUtils;->()V +HSPLio/ktor/util/PlatformUtils;->getIS_DEVELOPMENT_MODE()Z +Lio/ktor/util/PlatformUtilsJvmKt; +HSPLio/ktor/util/PlatformUtilsJvmKt;->getPlatform(Lio/ktor/util/PlatformUtils;)Lio/ktor/util/Platform; +HSPLio/ktor/util/PlatformUtilsJvmKt;->isDevelopmentMode(Lio/ktor/util/PlatformUtils;)Z +HSPLio/ktor/util/PlatformUtilsJvmKt;->isNewMemoryModel(Lio/ktor/util/PlatformUtils;)Z +Lio/ktor/util/collections/ConcurrentMap; +HSPLio/ktor/util/collections/ConcurrentMap;->(I)V +HSPLio/ktor/util/collections/ConcurrentMap;->(IILkotlin/jvm/internal/DefaultConstructorMarker;)V +Lio/ktor/util/collections/CopyOnWriteHashMap; +HSPLio/ktor/util/collections/CopyOnWriteHashMap;->()V +HSPLio/ktor/util/collections/CopyOnWriteHashMap;->()V +Lio/ktor/util/logging/KtorSimpleLoggerJvmKt; +HSPLio/ktor/util/logging/KtorSimpleLoggerJvmKt;->KtorSimpleLogger(Ljava/lang/String;)Lorg/slf4j/Logger; +Lio/ktor/util/pipeline/PhaseContent; +HSPLio/ktor/util/pipeline/PhaseContent;->()V +HSPLio/ktor/util/pipeline/PhaseContent;->(Lio/ktor/util/pipeline/PipelinePhase;Lio/ktor/util/pipeline/PipelinePhaseRelation;)V +HSPLio/ktor/util/pipeline/PhaseContent;->(Lio/ktor/util/pipeline/PipelinePhase;Lio/ktor/util/pipeline/PipelinePhaseRelation;Ljava/util/List;)V +HSPLio/ktor/util/pipeline/PhaseContent;->addInterceptor(Lkotlin/jvm/functions/Function3;)V +HSPLio/ktor/util/pipeline/PhaseContent;->copiedInterceptors()Ljava/util/List; +HSPLio/ktor/util/pipeline/PhaseContent;->copyInterceptors()V +HSPLio/ktor/util/pipeline/PhaseContent;->getPhase()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/util/pipeline/PhaseContent;->getRelation()Lio/ktor/util/pipeline/PipelinePhaseRelation; +Lio/ktor/util/pipeline/PhaseContent$Companion; +HSPLio/ktor/util/pipeline/PhaseContent$Companion;->()V +HSPLio/ktor/util/pipeline/PhaseContent$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lio/ktor/util/pipeline/Pipeline; +HSPLio/ktor/util/pipeline/Pipeline;->([Lio/ktor/util/pipeline/PipelinePhase;)V +HSPLio/ktor/util/pipeline/Pipeline;->afterIntercepted()V +HSPLio/ktor/util/pipeline/Pipeline;->findPhase(Lio/ktor/util/pipeline/PipelinePhase;)Lio/ktor/util/pipeline/PhaseContent; +HSPLio/ktor/util/pipeline/Pipeline;->findPhaseIndex(Lio/ktor/util/pipeline/PipelinePhase;)I +HSPLio/ktor/util/pipeline/Pipeline;->getInterceptors()Ljava/util/List; +HSPLio/ktor/util/pipeline/Pipeline;->hasPhase(Lio/ktor/util/pipeline/PipelinePhase;)Z +HSPLio/ktor/util/pipeline/Pipeline;->insertPhaseAfter(Lio/ktor/util/pipeline/PipelinePhase;Lio/ktor/util/pipeline/PipelinePhase;)V +HSPLio/ktor/util/pipeline/Pipeline;->insertPhaseBefore(Lio/ktor/util/pipeline/PipelinePhase;Lio/ktor/util/pipeline/PipelinePhase;)V +HSPLio/ktor/util/pipeline/Pipeline;->intercept(Lio/ktor/util/pipeline/PipelinePhase;Lkotlin/jvm/functions/Function3;)V +HSPLio/ktor/util/pipeline/Pipeline;->resetInterceptorsList()V +HSPLio/ktor/util/pipeline/Pipeline;->setInterceptors(Ljava/util/List;)V +HSPLio/ktor/util/pipeline/Pipeline;->tryAddToPhaseFastPath(Lio/ktor/util/pipeline/PipelinePhase;Lkotlin/jvm/functions/Function3;)Z +Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/util/pipeline/PipelinePhase;->(Ljava/lang/String;)V +Lio/ktor/util/pipeline/PipelinePhaseRelation; +HSPLio/ktor/util/pipeline/PipelinePhaseRelation;->()V +HSPLio/ktor/util/pipeline/PipelinePhaseRelation;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lio/ktor/util/pipeline/PipelinePhaseRelation$After; +HSPLio/ktor/util/pipeline/PipelinePhaseRelation$After;->(Lio/ktor/util/pipeline/PipelinePhase;)V +Lio/ktor/util/pipeline/PipelinePhaseRelation$Before; +HSPLio/ktor/util/pipeline/PipelinePhaseRelation$Before;->(Lio/ktor/util/pipeline/PipelinePhase;)V +Lio/ktor/util/pipeline/PipelinePhaseRelation$Last; +HSPLio/ktor/util/pipeline/PipelinePhaseRelation$Last;->()V +HSPLio/ktor/util/pipeline/PipelinePhaseRelation$Last;->()V +Lio/ktor/utils/io/ByteReadChannel; +Lio/ktor/utils/io/charsets/CharsetJVMKt; +HSPLio/ktor/utils/io/charsets/CharsetJVMKt;->()V +HSPLio/ktor/utils/io/charsets/CharsetJVMKt;->getName(Ljava/nio/charset/Charset;)Ljava/lang/String; +Lio/ktor/utils/io/charsets/MalformedInputException; +Lio/ktor/websocket/WebSocketExtensionsConfig; +HSPLio/ktor/websocket/WebSocketExtensionsConfig;->()V +Ljavax/inject/Provider; +Lkotlin/Function; +Lkotlin/KotlinNothingValueException; +Lkotlin/KotlinVersion; +HSPLkotlin/KotlinVersion;->()V +HSPLkotlin/KotlinVersion;->(III)V +HSPLkotlin/KotlinVersion;->toString()Ljava/lang/String; +HSPLkotlin/KotlinVersion;->versionOf(III)I +Lkotlin/KotlinVersion$Companion; +HSPLkotlin/KotlinVersion$Companion;->()V +HSPLkotlin/KotlinVersion$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/KotlinVersionCurrentValue; +HSPLkotlin/KotlinVersionCurrentValue;->()V +HSPLkotlin/KotlinVersionCurrentValue;->()V +HSPLkotlin/KotlinVersionCurrentValue;->get()Lkotlin/KotlinVersion; +Lkotlin/Lazy; +Lkotlin/LazyKt; +Lkotlin/LazyKt__LazyJVMKt; +HSPLkotlin/LazyKt__LazyJVMKt;->lazy(Lkotlin/LazyThreadSafetyMode;Lkotlin/jvm/functions/Function0;)Lkotlin/Lazy; +HSPLkotlin/LazyKt__LazyJVMKt;->lazy(Lkotlin/jvm/functions/Function0;)Lkotlin/Lazy; +Lkotlin/LazyKt__LazyJVMKt$WhenMappings; +HSPLkotlin/LazyKt__LazyJVMKt$WhenMappings;->()V +Lkotlin/LazyKt__LazyKt; +Lkotlin/LazyThreadSafetyMode; +HSPLkotlin/LazyThreadSafetyMode;->$values()[Lkotlin/LazyThreadSafetyMode; +HSPLkotlin/LazyThreadSafetyMode;->()V +HSPLkotlin/LazyThreadSafetyMode;->(Ljava/lang/String;I)V +HSPLkotlin/LazyThreadSafetyMode;->values()[Lkotlin/LazyThreadSafetyMode; +Lkotlin/Pair; +HSPLkotlin/Pair;->(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLkotlin/Pair;->component1()Ljava/lang/Object; +HSPLkotlin/Pair;->component2()Ljava/lang/Object; +HSPLkotlin/Pair;->getFirst()Ljava/lang/Object; +HSPLkotlin/Pair;->getSecond()Ljava/lang/Object; +Lkotlin/Result; +HSPLkotlin/Result;->()V +HSPLkotlin/Result;->constructor-impl(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlin/Result;->exceptionOrNull-impl(Ljava/lang/Object;)Ljava/lang/Throwable; +HSPLkotlin/Result;->isFailure-impl(Ljava/lang/Object;)Z +HSPLkotlin/Result;->isSuccess-impl(Ljava/lang/Object;)Z +Lkotlin/Result$Companion; +HSPLkotlin/Result$Companion;->()V +HSPLkotlin/Result$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/Result$Failure; +HSPLkotlin/Result$Failure;->(Ljava/lang/Throwable;)V +Lkotlin/ResultKt; +HSPLkotlin/ResultKt;->createFailure(Ljava/lang/Throwable;)Ljava/lang/Object; +HSPLkotlin/ResultKt;->throwOnFailure(Ljava/lang/Object;)V +Lkotlin/SafePublicationLazyImpl; +HSPLkotlin/SafePublicationLazyImpl;->()V +HSPLkotlin/SafePublicationLazyImpl;->(Lkotlin/jvm/functions/Function0;)V +HSPLkotlin/SafePublicationLazyImpl;->getValue()Ljava/lang/Object; +Lkotlin/SafePublicationLazyImpl$Companion; +HSPLkotlin/SafePublicationLazyImpl$Companion;->()V +HSPLkotlin/SafePublicationLazyImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/SynchronizedLazyImpl; +HSPLkotlin/SynchronizedLazyImpl;->(Lkotlin/jvm/functions/Function0;Ljava/lang/Object;)V +HSPLkotlin/SynchronizedLazyImpl;->(Lkotlin/jvm/functions/Function0;Ljava/lang/Object;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlin/SynchronizedLazyImpl;->getValue()Ljava/lang/Object; +HSPLkotlin/SynchronizedLazyImpl;->isInitialized()Z +Lkotlin/Triple; +HSPLkotlin/Triple;->(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V +HSPLkotlin/Triple;->component1()Ljava/lang/Object; +HSPLkotlin/Triple;->component2()Ljava/lang/Object; +HSPLkotlin/Triple;->component3()Ljava/lang/Object; +PLkotlin/Triple;->copy$default(Lkotlin/Triple;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;ILjava/lang/Object;)Lkotlin/Triple; +PLkotlin/Triple;->copy(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Triple; +HSPLkotlin/Triple;->getSecond()Ljava/lang/Object; +Lkotlin/TuplesKt; +HSPLkotlin/TuplesKt;->to(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair; +Lkotlin/UByte; +HSPLkotlin/UByte;->()V +Lkotlin/UByte$Companion; +HSPLkotlin/UByte$Companion;->()V +HSPLkotlin/UByte$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/UByteArray; +Lkotlin/UInt; +HSPLkotlin/UInt;->()V +Lkotlin/UInt$Companion; +HSPLkotlin/UInt$Companion;->()V +HSPLkotlin/UInt$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/UIntArray; +Lkotlin/ULong; +HSPLkotlin/ULong;->()V +HSPLkotlin/ULong;->constructor-impl(J)J +HSPLkotlin/ULong;->equals-impl0(JJ)Z +HSPLkotlin/ULong;->hashCode-impl(J)I +Lkotlin/ULong$Companion; +HSPLkotlin/ULong$Companion;->()V +HSPLkotlin/ULong$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/ULongArray; +Lkotlin/UNINITIALIZED_VALUE; +HSPLkotlin/UNINITIALIZED_VALUE;->()V +HSPLkotlin/UNINITIALIZED_VALUE;->()V +Lkotlin/UShort; +HSPLkotlin/UShort;->()V +Lkotlin/UShort$Companion; +HSPLkotlin/UShort$Companion;->()V +HSPLkotlin/UShort$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/UShortArray; +Lkotlin/Unit; +HSPLkotlin/Unit;->()V +HSPLkotlin/Unit;->()V +Lkotlin/UnsafeLazyImpl; +HSPLkotlin/UnsafeLazyImpl;->(Lkotlin/jvm/functions/Function0;)V +HSPLkotlin/UnsafeLazyImpl;->getValue()Ljava/lang/Object; +Lkotlin/UnsignedKt; +HSPLkotlin/UnsignedKt;->ulongToDouble(J)D +Lkotlin/collections/AbstractCollection; +HSPLkotlin/collections/AbstractCollection;->()V +HSPLkotlin/collections/AbstractCollection;->isEmpty()Z +HSPLkotlin/collections/AbstractCollection;->size()I +HSPLkotlin/collections/AbstractCollection;->toArray()[Ljava/lang/Object; +Lkotlin/collections/AbstractList; +HSPLkotlin/collections/AbstractList;->()V +HSPLkotlin/collections/AbstractList;->()V +HSPLkotlin/collections/AbstractList;->equals(Ljava/lang/Object;)Z +HSPLkotlin/collections/AbstractList;->hashCode()I +HSPLkotlin/collections/AbstractList;->iterator()Ljava/util/Iterator; +HSPLkotlin/collections/AbstractList;->listIterator(I)Ljava/util/ListIterator; +Lkotlin/collections/AbstractList$Companion; +HSPLkotlin/collections/AbstractList$Companion;->()V +HSPLkotlin/collections/AbstractList$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlin/collections/AbstractList$Companion;->checkElementIndex$kotlin_stdlib(II)V +HSPLkotlin/collections/AbstractList$Companion;->checkPositionIndex$kotlin_stdlib(II)V +HSPLkotlin/collections/AbstractList$Companion;->newCapacity$kotlin_stdlib(II)I +HSPLkotlin/collections/AbstractList$Companion;->orderedEquals$kotlin_stdlib(Ljava/util/Collection;Ljava/util/Collection;)Z +HSPLkotlin/collections/AbstractList$Companion;->orderedHashCode$kotlin_stdlib(Ljava/util/Collection;)I +Lkotlin/collections/AbstractList$IteratorImpl; +HSPLkotlin/collections/AbstractList$IteratorImpl;->(Lkotlin/collections/AbstractList;)V +HSPLkotlin/collections/AbstractList$IteratorImpl;->getIndex()I +HSPLkotlin/collections/AbstractList$IteratorImpl;->hasNext()Z +HSPLkotlin/collections/AbstractList$IteratorImpl;->next()Ljava/lang/Object; +HSPLkotlin/collections/AbstractList$IteratorImpl;->setIndex(I)V +Lkotlin/collections/AbstractList$ListIteratorImpl; +HSPLkotlin/collections/AbstractList$ListIteratorImpl;->(Lkotlin/collections/AbstractList;I)V +HSPLkotlin/collections/AbstractList$ListIteratorImpl;->hasPrevious()Z +HSPLkotlin/collections/AbstractList$ListIteratorImpl;->nextIndex()I +HSPLkotlin/collections/AbstractList$ListIteratorImpl;->previous()Ljava/lang/Object; +Lkotlin/collections/AbstractMap; +HSPLkotlin/collections/AbstractMap;->()V +HSPLkotlin/collections/AbstractMap;->()V +HSPLkotlin/collections/AbstractMap;->containsEntry$kotlin_stdlib(Ljava/util/Map$Entry;)Z +HSPLkotlin/collections/AbstractMap;->entrySet()Ljava/util/Set; +HSPLkotlin/collections/AbstractMap;->equals(Ljava/lang/Object;)Z +HSPLkotlin/collections/AbstractMap;->isEmpty()Z +HSPLkotlin/collections/AbstractMap;->size()I +HSPLkotlin/collections/AbstractMap;->values()Ljava/util/Collection; +Lkotlin/collections/AbstractMap$Companion; +HSPLkotlin/collections/AbstractMap$Companion;->()V +HSPLkotlin/collections/AbstractMap$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/collections/AbstractMutableList; +HSPLkotlin/collections/AbstractMutableList;->()V +HSPLkotlin/collections/AbstractMutableList;->size()I +Lkotlin/collections/AbstractMutableMap; +HSPLkotlin/collections/AbstractMutableMap;->()V +HSPLkotlin/collections/AbstractMutableMap;->size()I +Lkotlin/collections/AbstractMutableSet; +HSPLkotlin/collections/AbstractMutableSet;->()V +HSPLkotlin/collections/AbstractMutableSet;->size()I +Lkotlin/collections/AbstractSet; +HSPLkotlin/collections/AbstractSet;->()V +HSPLkotlin/collections/AbstractSet;->()V +HSPLkotlin/collections/AbstractSet;->equals(Ljava/lang/Object;)Z +Lkotlin/collections/AbstractSet$Companion; +HSPLkotlin/collections/AbstractSet$Companion;->()V +HSPLkotlin/collections/AbstractSet$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlin/collections/AbstractSet$Companion;->setEquals$kotlin_stdlib(Ljava/util/Set;Ljava/util/Set;)Z +Lkotlin/collections/ArrayAsCollection; +HSPLkotlin/collections/ArrayAsCollection;->([Ljava/lang/Object;Z)V +HSPLkotlin/collections/ArrayAsCollection;->toArray()[Ljava/lang/Object; +Lkotlin/collections/ArrayDeque; +HSPLkotlin/collections/ArrayDeque;->()V +HSPLkotlin/collections/ArrayDeque;->()V +HSPLkotlin/collections/ArrayDeque;->add(Ljava/lang/Object;)Z +HSPLkotlin/collections/ArrayDeque;->addLast(Ljava/lang/Object;)V +HSPLkotlin/collections/ArrayDeque;->copyElements(I)V +HSPLkotlin/collections/ArrayDeque;->ensureCapacity(I)V +HSPLkotlin/collections/ArrayDeque;->first()Ljava/lang/Object; +HSPLkotlin/collections/ArrayDeque;->get(I)Ljava/lang/Object; +HSPLkotlin/collections/ArrayDeque;->getSize()I +HSPLkotlin/collections/ArrayDeque;->incremented(I)I +HSPLkotlin/collections/ArrayDeque;->isEmpty()Z +HSPLkotlin/collections/ArrayDeque;->positiveMod(I)I +HSPLkotlin/collections/ArrayDeque;->removeFirst()Ljava/lang/Object; +HSPLkotlin/collections/ArrayDeque;->removeFirstOrNull()Ljava/lang/Object; +HSPLkotlin/collections/ArrayDeque;->removeLast()Ljava/lang/Object; +HSPLkotlin/collections/ArrayDeque;->removeLastOrNull()Ljava/lang/Object; +Lkotlin/collections/ArrayDeque$Companion; +HSPLkotlin/collections/ArrayDeque$Companion;->()V +HSPLkotlin/collections/ArrayDeque$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/collections/ArraysKt; +Lkotlin/collections/ArraysKt__ArraysJVMKt; +Lkotlin/collections/ArraysKt__ArraysKt; +Lkotlin/collections/ArraysKt___ArraysJvmKt; +HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->asList([Ljava/lang/Object;)Ljava/util/List; +HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto$default([F[FIIIILjava/lang/Object;)[F +HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto$default([I[IIIIILjava/lang/Object;)[I +HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto$default([Ljava/lang/Object;[Ljava/lang/Object;IIIILjava/lang/Object;)[Ljava/lang/Object; +HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto([B[BIII)[B +HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto([C[CIII)[C +HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto([F[FIII)[F +HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto([I[IIII)[I +HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto([Ljava/lang/Object;[Ljava/lang/Object;III)[Ljava/lang/Object; +HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->fill$default([IIIIILjava/lang/Object;)V +HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->fill$default([Ljava/lang/Object;Ljava/lang/Object;IIILjava/lang/Object;)V +HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->fill([IIII)V +HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->fill([Ljava/lang/Object;Ljava/lang/Object;II)V +HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->sortWith([Ljava/lang/Object;Ljava/util/Comparator;II)V +Lkotlin/collections/ArraysKt___ArraysKt; +HSPLkotlin/collections/ArraysKt___ArraysKt;->asIterable([Ljava/lang/Object;)Ljava/lang/Iterable; +HSPLkotlin/collections/ArraysKt___ArraysKt;->asSequence([Ljava/lang/Object;)Lkotlin/sequences/Sequence; +HSPLkotlin/collections/ArraysKt___ArraysKt;->filterNotNull([Ljava/lang/Object;)Ljava/util/List; +HSPLkotlin/collections/ArraysKt___ArraysKt;->filterNotNullTo([Ljava/lang/Object;Ljava/util/Collection;)Ljava/util/Collection; +HSPLkotlin/collections/ArraysKt___ArraysKt;->getIndices([I)Lkotlin/ranges/IntRange; +HSPLkotlin/collections/ArraysKt___ArraysKt;->getIndices([Ljava/lang/Object;)Lkotlin/ranges/IntRange; +HSPLkotlin/collections/ArraysKt___ArraysKt;->getLastIndex([I)I +HSPLkotlin/collections/ArraysKt___ArraysKt;->getLastIndex([Ljava/lang/Object;)I +HSPLkotlin/collections/ArraysKt___ArraysKt;->getOrNull([Ljava/lang/Object;I)Ljava/lang/Object; +HSPLkotlin/collections/ArraysKt___ArraysKt;->indexOf([Ljava/lang/Object;Ljava/lang/Object;)I +HSPLkotlin/collections/ArraysKt___ArraysKt;->toCollection([Ljava/lang/Object;Ljava/util/Collection;)Ljava/util/Collection; +HSPLkotlin/collections/ArraysKt___ArraysKt;->toList([Ljava/lang/Object;)Ljava/util/List; +HSPLkotlin/collections/ArraysKt___ArraysKt;->toMutableList([Ljava/lang/Object;)Ljava/util/List; +HSPLkotlin/collections/ArraysKt___ArraysKt;->toSet([Ljava/lang/Object;)Ljava/util/Set; +HSPLkotlin/collections/ArraysKt___ArraysKt;->withIndex([Ljava/lang/Object;)Ljava/lang/Iterable; +HSPLkotlin/collections/ArraysKt___ArraysKt;->zip([Ljava/lang/Object;[Ljava/lang/Object;)Ljava/util/List; +Lkotlin/collections/ArraysKt___ArraysKt$asIterable$$inlined$Iterable$1; +HSPLkotlin/collections/ArraysKt___ArraysKt$asIterable$$inlined$Iterable$1;->([Ljava/lang/Object;)V +Lkotlin/collections/ArraysKt___ArraysKt$withIndex$1; +HSPLkotlin/collections/ArraysKt___ArraysKt$withIndex$1;->([Ljava/lang/Object;)V +HSPLkotlin/collections/ArraysKt___ArraysKt$withIndex$1;->invoke()Ljava/lang/Object; +HSPLkotlin/collections/ArraysKt___ArraysKt$withIndex$1;->invoke()Ljava/util/Iterator; +Lkotlin/collections/ArraysUtilJVM; +HSPLkotlin/collections/ArraysUtilJVM;->asList([Ljava/lang/Object;)Ljava/util/List; +Lkotlin/collections/CollectionsKt; +Lkotlin/collections/CollectionsKt__CollectionsJVMKt; +HSPLkotlin/collections/CollectionsKt__CollectionsJVMKt;->build(Ljava/util/List;)Ljava/util/List; +HSPLkotlin/collections/CollectionsKt__CollectionsJVMKt;->copyToArrayOfAny([Ljava/lang/Object;Z)[Ljava/lang/Object; +HSPLkotlin/collections/CollectionsKt__CollectionsJVMKt;->createListBuilder()Ljava/util/List; +HSPLkotlin/collections/CollectionsKt__CollectionsJVMKt;->listOf(Ljava/lang/Object;)Ljava/util/List; +HSPLkotlin/collections/CollectionsKt__CollectionsJVMKt;->terminateCollectionToArray(I[Ljava/lang/Object;)[Ljava/lang/Object; +Lkotlin/collections/CollectionsKt__CollectionsKt; +HSPLkotlin/collections/CollectionsKt__CollectionsKt;->asCollection([Ljava/lang/Object;)Ljava/util/Collection; +HSPLkotlin/collections/CollectionsKt__CollectionsKt;->binarySearch$default(Ljava/util/List;Ljava/lang/Comparable;IIILjava/lang/Object;)I +HSPLkotlin/collections/CollectionsKt__CollectionsKt;->binarySearch(Ljava/util/List;Ljava/lang/Comparable;II)I +HSPLkotlin/collections/CollectionsKt__CollectionsKt;->emptyList()Ljava/util/List; +HSPLkotlin/collections/CollectionsKt__CollectionsKt;->getLastIndex(Ljava/util/List;)I +HSPLkotlin/collections/CollectionsKt__CollectionsKt;->listOf([Ljava/lang/Object;)Ljava/util/List; +HSPLkotlin/collections/CollectionsKt__CollectionsKt;->listOfNotNull([Ljava/lang/Object;)Ljava/util/List; +HSPLkotlin/collections/CollectionsKt__CollectionsKt;->mutableListOf([Ljava/lang/Object;)Ljava/util/List; +PLkotlin/collections/CollectionsKt__CollectionsKt;->optimizeReadOnlyList(Ljava/util/List;)Ljava/util/List; +HSPLkotlin/collections/CollectionsKt__CollectionsKt;->rangeCheck$CollectionsKt__CollectionsKt(III)V +Lkotlin/collections/CollectionsKt__IterablesKt; +HSPLkotlin/collections/CollectionsKt__IterablesKt;->collectionSizeOrDefault(Ljava/lang/Iterable;I)I +HSPLkotlin/collections/CollectionsKt__IterablesKt;->collectionSizeOrNull(Ljava/lang/Iterable;)Ljava/lang/Integer; +Lkotlin/collections/CollectionsKt__IteratorsJVMKt; +Lkotlin/collections/CollectionsKt__IteratorsKt; +Lkotlin/collections/CollectionsKt__MutableCollectionsJVMKt; +HSPLkotlin/collections/CollectionsKt__MutableCollectionsJVMKt;->sort(Ljava/util/List;)V +HSPLkotlin/collections/CollectionsKt__MutableCollectionsJVMKt;->sortWith(Ljava/util/List;Ljava/util/Comparator;)V +Lkotlin/collections/CollectionsKt__MutableCollectionsKt; +HSPLkotlin/collections/CollectionsKt__MutableCollectionsKt;->addAll(Ljava/util/Collection;Ljava/lang/Iterable;)Z +HSPLkotlin/collections/CollectionsKt__MutableCollectionsKt;->addAll(Ljava/util/Collection;Lkotlin/sequences/Sequence;)Z +HSPLkotlin/collections/CollectionsKt__MutableCollectionsKt;->filterInPlace$CollectionsKt__MutableCollectionsKt(Ljava/lang/Iterable;Lkotlin/jvm/functions/Function1;Z)Z +HSPLkotlin/collections/CollectionsKt__MutableCollectionsKt;->filterInPlace$CollectionsKt__MutableCollectionsKt(Ljava/util/List;Lkotlin/jvm/functions/Function1;Z)Z +HSPLkotlin/collections/CollectionsKt__MutableCollectionsKt;->removeAll(Ljava/util/List;Lkotlin/jvm/functions/Function1;)Z +HSPLkotlin/collections/CollectionsKt__MutableCollectionsKt;->removeFirstOrNull(Ljava/util/List;)Ljava/lang/Object; +HSPLkotlin/collections/CollectionsKt__MutableCollectionsKt;->removeLast(Ljava/util/List;)Ljava/lang/Object; +Lkotlin/collections/CollectionsKt__ReversedViewsKt; +Lkotlin/collections/CollectionsKt___CollectionsJvmKt; +Lkotlin/collections/CollectionsKt___CollectionsKt; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->asSequence(Ljava/lang/Iterable;)Lkotlin/sequences/Sequence; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->filterNotNull(Ljava/lang/Iterable;)Ljava/util/List; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->filterNotNullTo(Ljava/lang/Iterable;Ljava/util/Collection;)Ljava/util/Collection; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->first(Ljava/util/List;)Ljava/lang/Object; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->firstOrNull(Ljava/lang/Iterable;)Ljava/lang/Object; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->firstOrNull(Ljava/util/List;)Ljava/lang/Object; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->getOrNull(Ljava/util/List;I)Ljava/lang/Object; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->joinTo(Ljava/lang/Iterable;Ljava/lang/Appendable;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;)Ljava/lang/Appendable; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->joinToString$default(Ljava/lang/Iterable;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/String; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->joinToString(Ljava/lang/Iterable;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;)Ljava/lang/String; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->last(Ljava/util/List;)Ljava/lang/Object; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->lastOrNull(Ljava/util/List;)Ljava/lang/Object; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->plus(Ljava/util/Collection;Ljava/lang/Iterable;)Ljava/util/List; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->plus(Ljava/util/Collection;Ljava/lang/Object;)Ljava/util/List; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->reversed(Ljava/lang/Iterable;)Ljava/util/List; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->singleOrNull(Ljava/util/List;)Ljava/lang/Object; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->sorted(Ljava/lang/Iterable;)Ljava/util/List; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->sortedWith(Ljava/lang/Iterable;Ljava/util/Comparator;)Ljava/util/List; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toBooleanArray(Ljava/util/Collection;)[Z +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toCollection(Ljava/lang/Iterable;Ljava/util/Collection;)Ljava/util/Collection; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toFloatArray(Ljava/util/Collection;)[F +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toHashSet(Ljava/lang/Iterable;)Ljava/util/HashSet; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toIntArray(Ljava/util/Collection;)[I +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toList(Ljava/lang/Iterable;)Ljava/util/List; +PLkotlin/collections/CollectionsKt___CollectionsKt;->toMutableList(Ljava/lang/Iterable;)Ljava/util/List; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toMutableList(Ljava/util/Collection;)Ljava/util/List; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toMutableSet(Ljava/lang/Iterable;)Ljava/util/Set; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toSet(Ljava/lang/Iterable;)Ljava/util/Set; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->windowed(Ljava/lang/Iterable;IIZ)Ljava/util/List; +Lkotlin/collections/CollectionsKt___CollectionsKt$asSequence$$inlined$Sequence$1; +HSPLkotlin/collections/CollectionsKt___CollectionsKt$asSequence$$inlined$Sequence$1;->(Ljava/lang/Iterable;)V +HSPLkotlin/collections/CollectionsKt___CollectionsKt$asSequence$$inlined$Sequence$1;->iterator()Ljava/util/Iterator; +Lkotlin/collections/EmptyIterator; +HSPLkotlin/collections/EmptyIterator;->()V +HSPLkotlin/collections/EmptyIterator;->()V +HSPLkotlin/collections/EmptyIterator;->hasNext()Z +Lkotlin/collections/EmptyList; +HSPLkotlin/collections/EmptyList;->()V +HSPLkotlin/collections/EmptyList;->()V +PLkotlin/collections/EmptyList;->contains(Ljava/lang/Object;)Z +HSPLkotlin/collections/EmptyList;->equals(Ljava/lang/Object;)Z +HSPLkotlin/collections/EmptyList;->getSize()I +HSPLkotlin/collections/EmptyList;->hashCode()I +HSPLkotlin/collections/EmptyList;->isEmpty()Z +HSPLkotlin/collections/EmptyList;->iterator()Ljava/util/Iterator; +HSPLkotlin/collections/EmptyList;->size()I +HSPLkotlin/collections/EmptyList;->toArray()[Ljava/lang/Object; +Lkotlin/collections/EmptyMap; +HSPLkotlin/collections/EmptyMap;->()V +HSPLkotlin/collections/EmptyMap;->()V +PLkotlin/collections/EmptyMap;->containsKey(Ljava/lang/Object;)Z +HSPLkotlin/collections/EmptyMap;->entrySet()Ljava/util/Set; +HSPLkotlin/collections/EmptyMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlin/collections/EmptyMap;->get(Ljava/lang/Object;)Ljava/lang/Void; +HSPLkotlin/collections/EmptyMap;->getEntries()Ljava/util/Set; +HSPLkotlin/collections/EmptyMap;->getSize()I +HSPLkotlin/collections/EmptyMap;->isEmpty()Z +HSPLkotlin/collections/EmptyMap;->size()I +Lkotlin/collections/EmptySet; +HSPLkotlin/collections/EmptySet;->()V +HSPLkotlin/collections/EmptySet;->()V +HSPLkotlin/collections/EmptySet;->contains(Ljava/lang/Object;)Z +HSPLkotlin/collections/EmptySet;->getSize()I +HSPLkotlin/collections/EmptySet;->isEmpty()Z +HSPLkotlin/collections/EmptySet;->iterator()Ljava/util/Iterator; +HSPLkotlin/collections/EmptySet;->size()I +Lkotlin/collections/Grouping; +Lkotlin/collections/IndexedValue; +HSPLkotlin/collections/IndexedValue;->(ILjava/lang/Object;)V +HSPLkotlin/collections/IndexedValue;->getIndex()I +HSPLkotlin/collections/IndexedValue;->getValue()Ljava/lang/Object; +Lkotlin/collections/IndexingIterable; +HSPLkotlin/collections/IndexingIterable;->(Lkotlin/jvm/functions/Function0;)V +HSPLkotlin/collections/IndexingIterable;->iterator()Ljava/util/Iterator; +Lkotlin/collections/IndexingIterator; +HSPLkotlin/collections/IndexingIterator;->(Ljava/util/Iterator;)V +HSPLkotlin/collections/IndexingIterator;->hasNext()Z +HSPLkotlin/collections/IndexingIterator;->next()Ljava/lang/Object; +HSPLkotlin/collections/IndexingIterator;->next()Lkotlin/collections/IndexedValue; +Lkotlin/collections/IntIterator; +HSPLkotlin/collections/IntIterator;->()V +Lkotlin/collections/MapWithDefault; +Lkotlin/collections/MapsKt; +Lkotlin/collections/MapsKt__MapWithDefaultKt; +HSPLkotlin/collections/MapsKt__MapWithDefaultKt;->getOrImplicitDefaultNullable(Ljava/util/Map;Ljava/lang/Object;)Ljava/lang/Object; +Lkotlin/collections/MapsKt__MapsJVMKt; +HSPLkotlin/collections/MapsKt__MapsJVMKt;->mapCapacity(I)I +PLkotlin/collections/MapsKt__MapsJVMKt;->mapOf(Lkotlin/Pair;)Ljava/util/Map; +Lkotlin/collections/MapsKt__MapsKt; +HSPLkotlin/collections/MapsKt__MapsKt;->emptyMap()Ljava/util/Map; +HSPLkotlin/collections/MapsKt__MapsKt;->getValue(Ljava/util/Map;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlin/collections/MapsKt__MapsKt;->hashMapOf([Lkotlin/Pair;)Ljava/util/HashMap; +HSPLkotlin/collections/MapsKt__MapsKt;->mapOf([Lkotlin/Pair;)Ljava/util/Map; +HSPLkotlin/collections/MapsKt__MapsKt;->putAll(Ljava/util/Map;Ljava/lang/Iterable;)V +HSPLkotlin/collections/MapsKt__MapsKt;->putAll(Ljava/util/Map;[Lkotlin/Pair;)V +HSPLkotlin/collections/MapsKt__MapsKt;->toMap(Ljava/lang/Iterable;)Ljava/util/Map; +HSPLkotlin/collections/MapsKt__MapsKt;->toMap(Ljava/lang/Iterable;Ljava/util/Map;)Ljava/util/Map; +HSPLkotlin/collections/MapsKt__MapsKt;->toMap(Ljava/util/Map;)Ljava/util/Map; +HSPLkotlin/collections/MapsKt__MapsKt;->toMap([Lkotlin/Pair;Ljava/util/Map;)Ljava/util/Map; +HSPLkotlin/collections/MapsKt__MapsKt;->toMutableMap(Ljava/util/Map;)Ljava/util/Map; +Lkotlin/collections/MapsKt___MapsJvmKt; +Lkotlin/collections/MapsKt___MapsKt; +HSPLkotlin/collections/MapsKt___MapsKt;->asSequence(Ljava/util/Map;)Lkotlin/sequences/Sequence; +HSPLkotlin/collections/MapsKt___MapsKt;->toList(Ljava/util/Map;)Ljava/util/List; +Lkotlin/collections/SetsKt; +Lkotlin/collections/SetsKt__SetsJVMKt; +HSPLkotlin/collections/SetsKt__SetsJVMKt;->build(Ljava/util/Set;)Ljava/util/Set; +HSPLkotlin/collections/SetsKt__SetsJVMKt;->createSetBuilder()Ljava/util/Set; +HSPLkotlin/collections/SetsKt__SetsJVMKt;->setOf(Ljava/lang/Object;)Ljava/util/Set; +Lkotlin/collections/SetsKt__SetsKt; +HSPLkotlin/collections/SetsKt__SetsKt;->emptySet()Ljava/util/Set; +HSPLkotlin/collections/SetsKt__SetsKt;->mutableSetOf([Ljava/lang/Object;)Ljava/util/Set; +HSPLkotlin/collections/SetsKt__SetsKt;->setOf([Ljava/lang/Object;)Ljava/util/Set; +Lkotlin/collections/SetsKt___SetsKt; +HSPLkotlin/collections/SetsKt___SetsKt;->plus(Ljava/util/Set;Ljava/lang/Iterable;)Ljava/util/Set; +HSPLkotlin/collections/SetsKt___SetsKt;->plus(Ljava/util/Set;Ljava/lang/Object;)Ljava/util/Set; +Lkotlin/collections/SlidingWindowKt; +HSPLkotlin/collections/SlidingWindowKt;->checkWindowSizeStep(II)V +Lkotlin/collections/builders/ListBuilder; +HSPLkotlin/collections/builders/ListBuilder;->()V +PLkotlin/collections/builders/ListBuilder;->()V +HSPLkotlin/collections/builders/ListBuilder;->(I)V +HSPLkotlin/collections/builders/ListBuilder;->([Ljava/lang/Object;IIZLkotlin/collections/builders/ListBuilder;Lkotlin/collections/builders/ListBuilder;)V +HSPLkotlin/collections/builders/ListBuilder;->add(Ljava/lang/Object;)Z +HSPLkotlin/collections/builders/ListBuilder;->addAtInternal(ILjava/lang/Object;)V +PLkotlin/collections/builders/ListBuilder;->build()Ljava/util/List; +HSPLkotlin/collections/builders/ListBuilder;->checkForComodification()V +HSPLkotlin/collections/builders/ListBuilder;->checkIsMutable()V +HSPLkotlin/collections/builders/ListBuilder;->ensureCapacityInternal(I)V +HSPLkotlin/collections/builders/ListBuilder;->ensureExtraCapacity(I)V +HSPLkotlin/collections/builders/ListBuilder;->insertAtInternal(II)V +HSPLkotlin/collections/builders/ListBuilder;->isEffectivelyReadOnly()Z +HSPLkotlin/collections/builders/ListBuilder;->registerModification()V +HPLkotlin/collections/builders/ListBuilder;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; +Lkotlin/collections/builders/ListBuilder$Companion; +HSPLkotlin/collections/builders/ListBuilder$Companion;->()V +HSPLkotlin/collections/builders/ListBuilder$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/collections/builders/ListBuilderKt; +HSPLkotlin/collections/builders/ListBuilderKt;->arrayOfUninitializedElements(I)[Ljava/lang/Object; +Lkotlin/collections/builders/MapBuilder; +HSPLkotlin/collections/builders/MapBuilder;->()V +HSPLkotlin/collections/builders/MapBuilder;->()V +HSPLkotlin/collections/builders/MapBuilder;->(I)V +HSPLkotlin/collections/builders/MapBuilder;->([Ljava/lang/Object;[Ljava/lang/Object;[I[III)V +HSPLkotlin/collections/builders/MapBuilder;->access$getEmpty$cp()Lkotlin/collections/builders/MapBuilder; +HSPLkotlin/collections/builders/MapBuilder;->access$getKeysArray$p(Lkotlin/collections/builders/MapBuilder;)[Ljava/lang/Object; +HSPLkotlin/collections/builders/MapBuilder;->access$getLength$p(Lkotlin/collections/builders/MapBuilder;)I +HSPLkotlin/collections/builders/MapBuilder;->access$getModCount$p(Lkotlin/collections/builders/MapBuilder;)I +HSPLkotlin/collections/builders/MapBuilder;->access$getPresenceArray$p(Lkotlin/collections/builders/MapBuilder;)[I +HSPLkotlin/collections/builders/MapBuilder;->addKey$kotlin_stdlib(Ljava/lang/Object;)I +HSPLkotlin/collections/builders/MapBuilder;->build()Ljava/util/Map; +HSPLkotlin/collections/builders/MapBuilder;->checkIsMutable$kotlin_stdlib()V +HSPLkotlin/collections/builders/MapBuilder;->getCapacity$kotlin_stdlib()I +HSPLkotlin/collections/builders/MapBuilder;->getHashSize()I +HSPLkotlin/collections/builders/MapBuilder;->getSize()I +HSPLkotlin/collections/builders/MapBuilder;->hash(Ljava/lang/Object;)I +HSPLkotlin/collections/builders/MapBuilder;->isEmpty()Z +HSPLkotlin/collections/builders/MapBuilder;->keysIterator$kotlin_stdlib()Lkotlin/collections/builders/MapBuilder$KeysItr; +HSPLkotlin/collections/builders/MapBuilder;->registerModification()V +HSPLkotlin/collections/builders/MapBuilder;->size()I +Lkotlin/collections/builders/MapBuilder$Companion; +HSPLkotlin/collections/builders/MapBuilder$Companion;->()V +HSPLkotlin/collections/builders/MapBuilder$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlin/collections/builders/MapBuilder$Companion;->access$computeHashSize(Lkotlin/collections/builders/MapBuilder$Companion;I)I +HSPLkotlin/collections/builders/MapBuilder$Companion;->access$computeShift(Lkotlin/collections/builders/MapBuilder$Companion;I)I +HSPLkotlin/collections/builders/MapBuilder$Companion;->computeHashSize(I)I +HSPLkotlin/collections/builders/MapBuilder$Companion;->computeShift(I)I +HSPLkotlin/collections/builders/MapBuilder$Companion;->getEmpty$kotlin_stdlib()Lkotlin/collections/builders/MapBuilder; +Lkotlin/collections/builders/MapBuilder$Itr; +HSPLkotlin/collections/builders/MapBuilder$Itr;->(Lkotlin/collections/builders/MapBuilder;)V +HSPLkotlin/collections/builders/MapBuilder$Itr;->checkForComodification$kotlin_stdlib()V +HSPLkotlin/collections/builders/MapBuilder$Itr;->getIndex$kotlin_stdlib()I +HSPLkotlin/collections/builders/MapBuilder$Itr;->getLastIndex$kotlin_stdlib()I +HSPLkotlin/collections/builders/MapBuilder$Itr;->getMap$kotlin_stdlib()Lkotlin/collections/builders/MapBuilder; +HSPLkotlin/collections/builders/MapBuilder$Itr;->hasNext()Z +HSPLkotlin/collections/builders/MapBuilder$Itr;->initNext$kotlin_stdlib()V +HSPLkotlin/collections/builders/MapBuilder$Itr;->setIndex$kotlin_stdlib(I)V +HSPLkotlin/collections/builders/MapBuilder$Itr;->setLastIndex$kotlin_stdlib(I)V +Lkotlin/collections/builders/MapBuilder$KeysItr; +HSPLkotlin/collections/builders/MapBuilder$KeysItr;->(Lkotlin/collections/builders/MapBuilder;)V +HSPLkotlin/collections/builders/MapBuilder$KeysItr;->next()Ljava/lang/Object; +Lkotlin/collections/builders/SetBuilder; +HSPLkotlin/collections/builders/SetBuilder;->()V +HSPLkotlin/collections/builders/SetBuilder;->()V +HSPLkotlin/collections/builders/SetBuilder;->(Lkotlin/collections/builders/MapBuilder;)V +HSPLkotlin/collections/builders/SetBuilder;->add(Ljava/lang/Object;)Z +HSPLkotlin/collections/builders/SetBuilder;->build()Ljava/util/Set; +HSPLkotlin/collections/builders/SetBuilder;->getSize()I +HSPLkotlin/collections/builders/SetBuilder;->isEmpty()Z +HSPLkotlin/collections/builders/SetBuilder;->iterator()Ljava/util/Iterator; +Lkotlin/collections/builders/SetBuilder$Companion; +HSPLkotlin/collections/builders/SetBuilder$Companion;->()V +HSPLkotlin/collections/builders/SetBuilder$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/comparisons/ComparisonsKt; +Lkotlin/comparisons/ComparisonsKt__ComparisonsKt; +HSPLkotlin/comparisons/ComparisonsKt__ComparisonsKt;->$r8$lambda$nq8UCGW90ISdL04-oV8sJ24EEKI([Lkotlin/jvm/functions/Function1;Ljava/lang/Object;Ljava/lang/Object;)I +HSPLkotlin/comparisons/ComparisonsKt__ComparisonsKt;->compareBy$lambda$0$ComparisonsKt__ComparisonsKt([Lkotlin/jvm/functions/Function1;Ljava/lang/Object;Ljava/lang/Object;)I +HSPLkotlin/comparisons/ComparisonsKt__ComparisonsKt;->compareBy([Lkotlin/jvm/functions/Function1;)Ljava/util/Comparator; +HSPLkotlin/comparisons/ComparisonsKt__ComparisonsKt;->compareValues(Ljava/lang/Comparable;Ljava/lang/Comparable;)I +HSPLkotlin/comparisons/ComparisonsKt__ComparisonsKt;->compareValuesByImpl$ComparisonsKt__ComparisonsKt(Ljava/lang/Object;Ljava/lang/Object;[Lkotlin/jvm/functions/Function1;)I +Lkotlin/comparisons/ComparisonsKt__ComparisonsKt$$ExternalSyntheticLambda1; +HSPLkotlin/comparisons/ComparisonsKt__ComparisonsKt$$ExternalSyntheticLambda1;->([Lkotlin/jvm/functions/Function1;)V +HSPLkotlin/comparisons/ComparisonsKt__ComparisonsKt$$ExternalSyntheticLambda1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +Lkotlin/comparisons/ComparisonsKt___ComparisonsJvmKt; +HSPLkotlin/comparisons/ComparisonsKt___ComparisonsJvmKt;->maxOf(F[F)F +HSPLkotlin/comparisons/ComparisonsKt___ComparisonsJvmKt;->minOf(F[F)F +Lkotlin/comparisons/ComparisonsKt___ComparisonsKt; +Lkotlin/coroutines/AbstractCoroutineContextElement; +HSPLkotlin/coroutines/AbstractCoroutineContextElement;->(Lkotlin/coroutines/CoroutineContext$Key;)V +HSPLkotlin/coroutines/AbstractCoroutineContextElement;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLkotlin/coroutines/AbstractCoroutineContextElement;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLkotlin/coroutines/AbstractCoroutineContextElement;->getKey()Lkotlin/coroutines/CoroutineContext$Key; +HSPLkotlin/coroutines/AbstractCoroutineContextElement;->minusKey(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext; +HSPLkotlin/coroutines/AbstractCoroutineContextElement;->plus(Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext; +Lkotlin/coroutines/AbstractCoroutineContextKey; +HSPLkotlin/coroutines/AbstractCoroutineContextKey;->(Lkotlin/coroutines/CoroutineContext$Key;Lkotlin/jvm/functions/Function1;)V +Lkotlin/coroutines/CombinedContext; +HSPLkotlin/coroutines/CombinedContext;->(Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/CoroutineContext$Element;)V +HSPLkotlin/coroutines/CombinedContext;->contains(Lkotlin/coroutines/CoroutineContext$Element;)Z +HSPLkotlin/coroutines/CombinedContext;->containsAll(Lkotlin/coroutines/CombinedContext;)Z +HSPLkotlin/coroutines/CombinedContext;->equals(Ljava/lang/Object;)Z +HSPLkotlin/coroutines/CombinedContext;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLkotlin/coroutines/CombinedContext;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLkotlin/coroutines/CombinedContext;->minusKey(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext; +HSPLkotlin/coroutines/CombinedContext;->plus(Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext; +HSPLkotlin/coroutines/CombinedContext;->size()I +Lkotlin/coroutines/Continuation; +Lkotlin/coroutines/ContinuationInterceptor; +HSPLkotlin/coroutines/ContinuationInterceptor;->()V +Lkotlin/coroutines/ContinuationInterceptor$DefaultImpls; +HSPLkotlin/coroutines/ContinuationInterceptor$DefaultImpls;->get(Lkotlin/coroutines/ContinuationInterceptor;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLkotlin/coroutines/ContinuationInterceptor$DefaultImpls;->minusKey(Lkotlin/coroutines/ContinuationInterceptor;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext; +Lkotlin/coroutines/ContinuationInterceptor$Key; +HSPLkotlin/coroutines/ContinuationInterceptor$Key;->()V +HSPLkotlin/coroutines/ContinuationInterceptor$Key;->()V +Lkotlin/coroutines/ContinuationKt; +HSPLkotlin/coroutines/ContinuationKt;->createCoroutine(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlin/coroutines/ContinuationKt;->startCoroutine(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)V +Lkotlin/coroutines/CoroutineContext; +Lkotlin/coroutines/CoroutineContext$DefaultImpls; +HSPLkotlin/coroutines/CoroutineContext$DefaultImpls;->plus(Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext; +Lkotlin/coroutines/CoroutineContext$Element; +Lkotlin/coroutines/CoroutineContext$Element$DefaultImpls; +HSPLkotlin/coroutines/CoroutineContext$Element$DefaultImpls;->fold(Lkotlin/coroutines/CoroutineContext$Element;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLkotlin/coroutines/CoroutineContext$Element$DefaultImpls;->get(Lkotlin/coroutines/CoroutineContext$Element;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLkotlin/coroutines/CoroutineContext$Element$DefaultImpls;->minusKey(Lkotlin/coroutines/CoroutineContext$Element;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext; +HSPLkotlin/coroutines/CoroutineContext$Element$DefaultImpls;->plus(Lkotlin/coroutines/CoroutineContext$Element;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext; +Lkotlin/coroutines/CoroutineContext$Key; +Lkotlin/coroutines/CoroutineContext$plus$1; +HSPLkotlin/coroutines/CoroutineContext$plus$1;->()V +HSPLkotlin/coroutines/CoroutineContext$plus$1;->()V +HSPLkotlin/coroutines/CoroutineContext$plus$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlin/coroutines/CoroutineContext$plus$1;->invoke(Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/CoroutineContext$Element;)Lkotlin/coroutines/CoroutineContext; +Lkotlin/coroutines/EmptyCoroutineContext; +HSPLkotlin/coroutines/EmptyCoroutineContext;->()V +HSPLkotlin/coroutines/EmptyCoroutineContext;->()V +HSPLkotlin/coroutines/EmptyCoroutineContext;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLkotlin/coroutines/EmptyCoroutineContext;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLkotlin/coroutines/EmptyCoroutineContext;->plus(Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext; +Lkotlin/coroutines/SafeContinuation; +HSPLkotlin/coroutines/SafeContinuation;->()V +HSPLkotlin/coroutines/SafeContinuation;->(Lkotlin/coroutines/Continuation;Ljava/lang/Object;)V +HSPLkotlin/coroutines/SafeContinuation;->resumeWith(Ljava/lang/Object;)V +Lkotlin/coroutines/SafeContinuation$Companion; +HSPLkotlin/coroutines/SafeContinuation$Companion;->()V +HSPLkotlin/coroutines/SafeContinuation$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/coroutines/intrinsics/CoroutineSingletons; +HSPLkotlin/coroutines/intrinsics/CoroutineSingletons;->$values()[Lkotlin/coroutines/intrinsics/CoroutineSingletons; +HSPLkotlin/coroutines/intrinsics/CoroutineSingletons;->()V +HSPLkotlin/coroutines/intrinsics/CoroutineSingletons;->(Ljava/lang/String;I)V +Lkotlin/coroutines/intrinsics/IntrinsicsKt; +Lkotlin/coroutines/intrinsics/IntrinsicsKt__IntrinsicsJvmKt; +HSPLkotlin/coroutines/intrinsics/IntrinsicsKt__IntrinsicsJvmKt;->createCoroutineUnintercepted(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlin/coroutines/intrinsics/IntrinsicsKt__IntrinsicsJvmKt;->intercepted(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +Lkotlin/coroutines/intrinsics/IntrinsicsKt__IntrinsicsKt; +HSPLkotlin/coroutines/intrinsics/IntrinsicsKt__IntrinsicsKt;->getCOROUTINE_SUSPENDED()Ljava/lang/Object; +Lkotlin/coroutines/jvm/internal/BaseContinuationImpl; +HSPLkotlin/coroutines/jvm/internal/BaseContinuationImpl;->(Lkotlin/coroutines/Continuation;)V +HSPLkotlin/coroutines/jvm/internal/BaseContinuationImpl;->getCallerFrame()Lkotlin/coroutines/jvm/internal/CoroutineStackFrame; +HSPLkotlin/coroutines/jvm/internal/BaseContinuationImpl;->releaseIntercepted()V +HSPLkotlin/coroutines/jvm/internal/BaseContinuationImpl;->resumeWith(Ljava/lang/Object;)V +Lkotlin/coroutines/jvm/internal/Boxing; +HSPLkotlin/coroutines/jvm/internal/Boxing;->boxBoolean(Z)Ljava/lang/Boolean; +HSPLkotlin/coroutines/jvm/internal/Boxing;->boxFloat(F)Ljava/lang/Float; +HSPLkotlin/coroutines/jvm/internal/Boxing;->boxInt(I)Ljava/lang/Integer; +HSPLkotlin/coroutines/jvm/internal/Boxing;->boxLong(J)Ljava/lang/Long; +Lkotlin/coroutines/jvm/internal/CompletedContinuation; +HSPLkotlin/coroutines/jvm/internal/CompletedContinuation;->()V +HSPLkotlin/coroutines/jvm/internal/CompletedContinuation;->()V +Lkotlin/coroutines/jvm/internal/ContinuationImpl; +HSPLkotlin/coroutines/jvm/internal/ContinuationImpl;->(Lkotlin/coroutines/Continuation;)V +HSPLkotlin/coroutines/jvm/internal/ContinuationImpl;->(Lkotlin/coroutines/Continuation;Lkotlin/coroutines/CoroutineContext;)V +HSPLkotlin/coroutines/jvm/internal/ContinuationImpl;->getContext()Lkotlin/coroutines/CoroutineContext; +HSPLkotlin/coroutines/jvm/internal/ContinuationImpl;->intercepted()Lkotlin/coroutines/Continuation; +HSPLkotlin/coroutines/jvm/internal/ContinuationImpl;->releaseIntercepted()V +Lkotlin/coroutines/jvm/internal/CoroutineStackFrame; +Lkotlin/coroutines/jvm/internal/DebugProbesKt; +HSPLkotlin/coroutines/jvm/internal/DebugProbesKt;->probeCoroutineCreated(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlin/coroutines/jvm/internal/DebugProbesKt;->probeCoroutineResumed(Lkotlin/coroutines/Continuation;)V +HSPLkotlin/coroutines/jvm/internal/DebugProbesKt;->probeCoroutineSuspended(Lkotlin/coroutines/Continuation;)V +Lkotlin/coroutines/jvm/internal/RestrictedContinuationImpl; +HSPLkotlin/coroutines/jvm/internal/RestrictedContinuationImpl;->(Lkotlin/coroutines/Continuation;)V +HSPLkotlin/coroutines/jvm/internal/RestrictedContinuationImpl;->getContext()Lkotlin/coroutines/CoroutineContext; +Lkotlin/coroutines/jvm/internal/RestrictedSuspendLambda; +HSPLkotlin/coroutines/jvm/internal/RestrictedSuspendLambda;->(ILkotlin/coroutines/Continuation;)V +Lkotlin/coroutines/jvm/internal/SuspendFunction; +Lkotlin/coroutines/jvm/internal/SuspendLambda; +HSPLkotlin/coroutines/jvm/internal/SuspendLambda;->(ILkotlin/coroutines/Continuation;)V +HSPLkotlin/coroutines/jvm/internal/SuspendLambda;->getArity()I +Lkotlin/enums/EnumEntries; +Lkotlin/enums/EnumEntriesKt; +HSPLkotlin/enums/EnumEntriesKt;->enumEntries([Ljava/lang/Enum;)Lkotlin/enums/EnumEntries; +Lkotlin/enums/EnumEntriesList; +HSPLkotlin/enums/EnumEntriesList;->([Ljava/lang/Enum;)V +HSPLkotlin/enums/EnumEntriesList;->getSize()I +Lkotlin/internal/PlatformImplementations; +HSPLkotlin/internal/PlatformImplementations;->()V +Lkotlin/internal/PlatformImplementationsKt; +HSPLkotlin/internal/PlatformImplementationsKt;->()V +Lkotlin/internal/ProgressionUtilKt; +HSPLkotlin/internal/ProgressionUtilKt;->differenceModulo(III)I +HSPLkotlin/internal/ProgressionUtilKt;->differenceModulo(JJJ)J +HSPLkotlin/internal/ProgressionUtilKt;->getProgressionLastElement(III)I +HSPLkotlin/internal/ProgressionUtilKt;->getProgressionLastElement(JJJ)J +HSPLkotlin/internal/ProgressionUtilKt;->mod(II)I +HSPLkotlin/internal/ProgressionUtilKt;->mod(JJ)J +Lkotlin/internal/jdk7/JDK7PlatformImplementations; +HSPLkotlin/internal/jdk7/JDK7PlatformImplementations;->()V +Lkotlin/internal/jdk8/JDK8PlatformImplementations; +HSPLkotlin/internal/jdk8/JDK8PlatformImplementations;->()V +HSPLkotlin/internal/jdk8/JDK8PlatformImplementations;->defaultPlatformRandom()Lkotlin/random/Random; +HSPLkotlin/internal/jdk8/JDK8PlatformImplementations;->sdkIsNullOrAtLeast(I)Z +Lkotlin/internal/jdk8/JDK8PlatformImplementations$ReflectSdkVersion; +HSPLkotlin/internal/jdk8/JDK8PlatformImplementations$ReflectSdkVersion;->()V +HSPLkotlin/internal/jdk8/JDK8PlatformImplementations$ReflectSdkVersion;->()V +Lkotlin/io/CloseableKt; +HSPLkotlin/io/CloseableKt;->closeFinally(Ljava/io/Closeable;Ljava/lang/Throwable;)V +Lkotlin/io/FileSystemException; +Lkotlin/io/FilesKt; +Lkotlin/io/FilesKt__FilePathComponentsKt; +Lkotlin/io/FilesKt__FileReadWriteKt; +Lkotlin/io/FilesKt__FileTreeWalkKt; +Lkotlin/io/FilesKt__UtilsKt; +HSPLkotlin/io/FilesKt__UtilsKt;->getExtension(Ljava/io/File;)Ljava/lang/String; +Lkotlin/io/TerminateException; +Lkotlin/jvm/JvmClassMappingKt; +HSPLkotlin/jvm/JvmClassMappingKt;->getJavaClass(Lkotlin/reflect/KClass;)Ljava/lang/Class; +HSPLkotlin/jvm/JvmClassMappingKt;->getJavaObjectType(Lkotlin/reflect/KClass;)Ljava/lang/Class; +HSPLkotlin/jvm/JvmClassMappingKt;->getJavaPrimitiveType(Lkotlin/reflect/KClass;)Ljava/lang/Class; +Lkotlin/jvm/functions/Function0; +Lkotlin/jvm/functions/Function1; +Lkotlin/jvm/functions/Function10; +Lkotlin/jvm/functions/Function11; +Lkotlin/jvm/functions/Function12; +Lkotlin/jvm/functions/Function13; +Lkotlin/jvm/functions/Function14; +Lkotlin/jvm/functions/Function15; +Lkotlin/jvm/functions/Function16; +Lkotlin/jvm/functions/Function17; +Lkotlin/jvm/functions/Function18; +Lkotlin/jvm/functions/Function19; +Lkotlin/jvm/functions/Function2; +Lkotlin/jvm/functions/Function20; +Lkotlin/jvm/functions/Function21; +Lkotlin/jvm/functions/Function22; +Lkotlin/jvm/functions/Function3; +Lkotlin/jvm/functions/Function4; +Lkotlin/jvm/functions/Function5; +Lkotlin/jvm/functions/Function6; +Lkotlin/jvm/functions/Function7; +Lkotlin/jvm/functions/Function8; +Lkotlin/jvm/functions/Function9; +Lkotlin/jvm/internal/AdaptedFunctionReference; +HSPLkotlin/jvm/internal/AdaptedFunctionReference;->(ILjava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +HSPLkotlin/jvm/internal/AdaptedFunctionReference;->(ILjava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +Lkotlin/jvm/internal/ArrayIterator; +HSPLkotlin/jvm/internal/ArrayIterator;->([Ljava/lang/Object;)V +HSPLkotlin/jvm/internal/ArrayIterator;->hasNext()Z +HSPLkotlin/jvm/internal/ArrayIterator;->next()Ljava/lang/Object; +Lkotlin/jvm/internal/ArrayIteratorKt; +HSPLkotlin/jvm/internal/ArrayIteratorKt;->iterator([Ljava/lang/Object;)Ljava/util/Iterator; +Lkotlin/jvm/internal/BooleanCompanionObject; +HSPLkotlin/jvm/internal/BooleanCompanionObject;->()V +HSPLkotlin/jvm/internal/BooleanCompanionObject;->()V +Lkotlin/jvm/internal/ByteCompanionObject; +HSPLkotlin/jvm/internal/ByteCompanionObject;->()V +HSPLkotlin/jvm/internal/ByteCompanionObject;->()V +Lkotlin/jvm/internal/CallableReference; +HSPLkotlin/jvm/internal/CallableReference;->()V +HSPLkotlin/jvm/internal/CallableReference;->(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;Z)V +HSPLkotlin/jvm/internal/CallableReference;->getBoundReceiver()Ljava/lang/Object; +HSPLkotlin/jvm/internal/CallableReference;->getName()Ljava/lang/String; +HSPLkotlin/jvm/internal/CallableReference;->getOwner()Lkotlin/reflect/KDeclarationContainer; +HSPLkotlin/jvm/internal/CallableReference;->getSignature()Ljava/lang/String; +Lkotlin/jvm/internal/CallableReference$NoReceiver; +HSPLkotlin/jvm/internal/CallableReference$NoReceiver;->()V +HSPLkotlin/jvm/internal/CallableReference$NoReceiver;->()V +HSPLkotlin/jvm/internal/CallableReference$NoReceiver;->access$000()Lkotlin/jvm/internal/CallableReference$NoReceiver; +Lkotlin/jvm/internal/CharCompanionObject; +HSPLkotlin/jvm/internal/CharCompanionObject;->()V +HSPLkotlin/jvm/internal/CharCompanionObject;->()V +Lkotlin/jvm/internal/ClassBasedDeclarationContainer; +Lkotlin/jvm/internal/CollectionToArray; +HSPLkotlin/jvm/internal/CollectionToArray;->()V +HSPLkotlin/jvm/internal/CollectionToArray;->toArray(Ljava/util/Collection;)[Ljava/lang/Object; +Lkotlin/jvm/internal/DefaultConstructorMarker; +Lkotlin/jvm/internal/DoubleCompanionObject; +HSPLkotlin/jvm/internal/DoubleCompanionObject;->()V +HSPLkotlin/jvm/internal/DoubleCompanionObject;->()V +Lkotlin/jvm/internal/FloatCompanionObject; +HSPLkotlin/jvm/internal/FloatCompanionObject;->()V +HSPLkotlin/jvm/internal/FloatCompanionObject;->()V +Lkotlin/jvm/internal/FunctionBase; +Lkotlin/jvm/internal/FunctionReference; +HSPLkotlin/jvm/internal/FunctionReference;->(ILjava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +HSPLkotlin/jvm/internal/FunctionReference;->equals(Ljava/lang/Object;)Z +HSPLkotlin/jvm/internal/FunctionReference;->getArity()I +Lkotlin/jvm/internal/FunctionReferenceImpl; +HSPLkotlin/jvm/internal/FunctionReferenceImpl;->(ILjava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +HSPLkotlin/jvm/internal/FunctionReferenceImpl;->(ILjava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +Lkotlin/jvm/internal/InlineMarker; +HSPLkotlin/jvm/internal/InlineMarker;->mark(I)V +Lkotlin/jvm/internal/IntCompanionObject; +HSPLkotlin/jvm/internal/IntCompanionObject;->()V +HSPLkotlin/jvm/internal/IntCompanionObject;->()V +Lkotlin/jvm/internal/Intrinsics; +HSPLkotlin/jvm/internal/Intrinsics;->areEqual(Ljava/lang/Float;F)Z +HSPLkotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;)V +HSPLkotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;Ljava/lang/String;)V +HSPLkotlin/jvm/internal/Intrinsics;->checkNotNullExpressionValue(Ljava/lang/Object;Ljava/lang/String;)V +HSPLkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V +HSPLkotlin/jvm/internal/Intrinsics;->compare(II)I +HSPLkotlin/jvm/internal/Intrinsics;->sanitizeStackTrace(Ljava/lang/Throwable;)Ljava/lang/Throwable; +HSPLkotlin/jvm/internal/Intrinsics;->sanitizeStackTrace(Ljava/lang/Throwable;Ljava/lang/String;)Ljava/lang/Throwable; +HSPLkotlin/jvm/internal/Intrinsics;->stringPlus(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/String; +Lkotlin/jvm/internal/Intrinsics$Kotlin; +Lkotlin/jvm/internal/Lambda; +HSPLkotlin/jvm/internal/Lambda;->(I)V +HSPLkotlin/jvm/internal/Lambda;->getArity()I +Lkotlin/jvm/internal/LongCompanionObject; +HSPLkotlin/jvm/internal/LongCompanionObject;->()V +HSPLkotlin/jvm/internal/LongCompanionObject;->()V +Lkotlin/jvm/internal/MutablePropertyReference; +HSPLkotlin/jvm/internal/MutablePropertyReference;->(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +Lkotlin/jvm/internal/MutablePropertyReference0; +HSPLkotlin/jvm/internal/MutablePropertyReference0;->(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +Lkotlin/jvm/internal/MutablePropertyReference0Impl; +HSPLkotlin/jvm/internal/MutablePropertyReference0Impl;->(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +Lkotlin/jvm/internal/MutablePropertyReference1; +HSPLkotlin/jvm/internal/MutablePropertyReference1;->(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +Lkotlin/jvm/internal/MutablePropertyReference1Impl; +HSPLkotlin/jvm/internal/MutablePropertyReference1Impl;->(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +Lkotlin/jvm/internal/PropertyReference; +HSPLkotlin/jvm/internal/PropertyReference;->(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +HSPLkotlin/jvm/internal/PropertyReference;->equals(Ljava/lang/Object;)Z +Lkotlin/jvm/internal/PropertyReference0; +HSPLkotlin/jvm/internal/PropertyReference0;->(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +HSPLkotlin/jvm/internal/PropertyReference0;->invoke()Ljava/lang/Object; +Lkotlin/jvm/internal/PropertyReference0Impl; +HSPLkotlin/jvm/internal/PropertyReference0Impl;->(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +HSPLkotlin/jvm/internal/PropertyReference0Impl;->(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +Lkotlin/jvm/internal/PropertyReference1; +HSPLkotlin/jvm/internal/PropertyReference1;->(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +Lkotlin/jvm/internal/PropertyReference1Impl; +HSPLkotlin/jvm/internal/PropertyReference1Impl;->(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +HSPLkotlin/jvm/internal/PropertyReference1Impl;->(Lkotlin/reflect/KDeclarationContainer;Ljava/lang/String;Ljava/lang/String;)V +Lkotlin/jvm/internal/PropertyReference2; +HSPLkotlin/jvm/internal/PropertyReference2;->(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +Lkotlin/jvm/internal/PropertyReference2Impl; +HSPLkotlin/jvm/internal/PropertyReference2Impl;->(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +Lkotlin/jvm/internal/Ref$BooleanRef; +HSPLkotlin/jvm/internal/Ref$BooleanRef;->()V +Lkotlin/jvm/internal/Ref$FloatRef; +HSPLkotlin/jvm/internal/Ref$FloatRef;->()V +Lkotlin/jvm/internal/Ref$IntRef; +HSPLkotlin/jvm/internal/Ref$IntRef;->()V +Lkotlin/jvm/internal/Ref$LongRef; +HSPLkotlin/jvm/internal/Ref$LongRef;->()V +Lkotlin/jvm/internal/Ref$ObjectRef; +HSPLkotlin/jvm/internal/Ref$ObjectRef;->()V +Lkotlin/jvm/internal/Reflection; +HSPLkotlin/jvm/internal/Reflection;->()V +HSPLkotlin/jvm/internal/Reflection;->getOrCreateKotlinClass(Ljava/lang/Class;)Lkotlin/reflect/KClass; +HSPLkotlin/jvm/internal/Reflection;->getOrCreateKotlinPackage(Ljava/lang/Class;)Lkotlin/reflect/KDeclarationContainer; +HSPLkotlin/jvm/internal/Reflection;->mutableProperty1(Lkotlin/jvm/internal/MutablePropertyReference1;)Lkotlin/reflect/KMutableProperty1; +HSPLkotlin/jvm/internal/Reflection;->property0(Lkotlin/jvm/internal/PropertyReference0;)Lkotlin/reflect/KProperty0; +HSPLkotlin/jvm/internal/Reflection;->property1(Lkotlin/jvm/internal/PropertyReference1;)Lkotlin/reflect/KProperty1; +HSPLkotlin/jvm/internal/Reflection;->property2(Lkotlin/jvm/internal/PropertyReference2;)Lkotlin/reflect/KProperty2; +Lkotlin/jvm/internal/ReflectionFactory; +HSPLkotlin/jvm/internal/ReflectionFactory;->()V +Lkotlin/jvm/internal/ShortCompanionObject; +HSPLkotlin/jvm/internal/ShortCompanionObject;->()V +HSPLkotlin/jvm/internal/ShortCompanionObject;->()V +Lkotlin/jvm/internal/SpreadBuilder; +HSPLkotlin/jvm/internal/SpreadBuilder;->(I)V +HSPLkotlin/jvm/internal/SpreadBuilder;->add(Ljava/lang/Object;)V +HSPLkotlin/jvm/internal/SpreadBuilder;->addSpread(Ljava/lang/Object;)V +HSPLkotlin/jvm/internal/SpreadBuilder;->size()I +HSPLkotlin/jvm/internal/SpreadBuilder;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; +Lkotlin/jvm/internal/StringCompanionObject; +HSPLkotlin/jvm/internal/StringCompanionObject;->()V +HSPLkotlin/jvm/internal/StringCompanionObject;->()V +Lkotlin/jvm/internal/TypeIntrinsics; +HSPLkotlin/jvm/internal/TypeIntrinsics;->asMutableCollection(Ljava/lang/Object;)Ljava/util/Collection; +HSPLkotlin/jvm/internal/TypeIntrinsics;->asMutableIterable(Ljava/lang/Object;)Ljava/lang/Iterable; +HSPLkotlin/jvm/internal/TypeIntrinsics;->asMutableList(Ljava/lang/Object;)Ljava/util/List; +HSPLkotlin/jvm/internal/TypeIntrinsics;->beforeCheckcastToFunctionOfArity(Ljava/lang/Object;I)Ljava/lang/Object; +HSPLkotlin/jvm/internal/TypeIntrinsics;->castToCollection(Ljava/lang/Object;)Ljava/util/Collection; +HSPLkotlin/jvm/internal/TypeIntrinsics;->castToIterable(Ljava/lang/Object;)Ljava/lang/Iterable; +HSPLkotlin/jvm/internal/TypeIntrinsics;->castToList(Ljava/lang/Object;)Ljava/util/List; +HSPLkotlin/jvm/internal/TypeIntrinsics;->getFunctionArity(Ljava/lang/Object;)I +HSPLkotlin/jvm/internal/TypeIntrinsics;->isFunctionOfArity(Ljava/lang/Object;I)Z +HSPLkotlin/jvm/internal/TypeIntrinsics;->isMutableSet(Ljava/lang/Object;)Z +Lkotlin/jvm/internal/markers/KMappedMarker; +Lkotlin/jvm/internal/markers/KMutableCollection; +Lkotlin/jvm/internal/markers/KMutableIterable; +Lkotlin/jvm/internal/markers/KMutableIterator; +Lkotlin/jvm/internal/markers/KMutableList; +Lkotlin/jvm/internal/markers/KMutableListIterator; +Lkotlin/jvm/internal/markers/KMutableMap; +Lkotlin/jvm/internal/markers/KMutableSet; +Lkotlin/math/MathKt; +Lkotlin/math/MathKt__MathHKt; +Lkotlin/math/MathKt__MathJVMKt; +HSPLkotlin/math/MathKt__MathJVMKt;->getSign(I)I +HSPLkotlin/math/MathKt__MathJVMKt;->getSign(J)I +HSPLkotlin/math/MathKt__MathJVMKt;->roundToInt(F)I +Lkotlin/properties/ReadOnlyProperty; +Lkotlin/random/AbstractPlatformRandom; +HSPLkotlin/random/AbstractPlatformRandom;->()V +HSPLkotlin/random/AbstractPlatformRandom;->nextInt()I +HSPLkotlin/random/AbstractPlatformRandom;->nextInt(I)I +Lkotlin/random/Random; +HSPLkotlin/random/Random;->()V +HSPLkotlin/random/Random;->()V +HSPLkotlin/random/Random;->access$getDefaultRandom$cp()Lkotlin/random/Random; +Lkotlin/random/Random$Default; +HSPLkotlin/random/Random$Default;->()V +HSPLkotlin/random/Random$Default;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlin/random/Random$Default;->nextInt()I +HSPLkotlin/random/Random$Default;->nextInt(I)I +Lkotlin/random/jdk8/PlatformThreadLocalRandom; +HSPLkotlin/random/jdk8/PlatformThreadLocalRandom;->()V +HSPLkotlin/random/jdk8/PlatformThreadLocalRandom;->getImpl()Ljava/util/Random; +Lkotlin/ranges/ClosedFloatRange; +HSPLkotlin/ranges/ClosedFloatRange;->(FF)V +HSPLkotlin/ranges/ClosedFloatRange;->getEndInclusive()Ljava/lang/Comparable; +HSPLkotlin/ranges/ClosedFloatRange;->getEndInclusive()Ljava/lang/Float; +HSPLkotlin/ranges/ClosedFloatRange;->getStart()Ljava/lang/Comparable; +HSPLkotlin/ranges/ClosedFloatRange;->getStart()Ljava/lang/Float; +HSPLkotlin/ranges/ClosedFloatRange;->isEmpty()Z +HSPLkotlin/ranges/ClosedFloatRange;->lessThanOrEquals(FF)Z +HSPLkotlin/ranges/ClosedFloatRange;->lessThanOrEquals(Ljava/lang/Comparable;Ljava/lang/Comparable;)Z +Lkotlin/ranges/ClosedFloatingPointRange; +Lkotlin/ranges/ClosedRange; +Lkotlin/ranges/IntProgression; +HSPLkotlin/ranges/IntProgression;->()V +HSPLkotlin/ranges/IntProgression;->(III)V +HSPLkotlin/ranges/IntProgression;->getFirst()I +HSPLkotlin/ranges/IntProgression;->getLast()I +HSPLkotlin/ranges/IntProgression;->getStep()I +HSPLkotlin/ranges/IntProgression;->iterator()Ljava/util/Iterator; +HSPLkotlin/ranges/IntProgression;->iterator()Lkotlin/collections/IntIterator; +Lkotlin/ranges/IntProgression$Companion; +HSPLkotlin/ranges/IntProgression$Companion;->()V +HSPLkotlin/ranges/IntProgression$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/ranges/IntProgressionIterator; +HSPLkotlin/ranges/IntProgressionIterator;->(III)V +HSPLkotlin/ranges/IntProgressionIterator;->hasNext()Z +HSPLkotlin/ranges/IntProgressionIterator;->nextInt()I +Lkotlin/ranges/IntRange; +HSPLkotlin/ranges/IntRange;->()V +HSPLkotlin/ranges/IntRange;->(II)V +HSPLkotlin/ranges/IntRange;->contains(I)Z +Lkotlin/ranges/IntRange$Companion; +HSPLkotlin/ranges/IntRange$Companion;->()V +HSPLkotlin/ranges/IntRange$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/ranges/LongProgression; +HSPLkotlin/ranges/LongProgression;->()V +HSPLkotlin/ranges/LongProgression;->(JJJ)V +HSPLkotlin/ranges/LongProgression;->getFirst()J +HSPLkotlin/ranges/LongProgression;->getLast()J +Lkotlin/ranges/LongProgression$Companion; +HSPLkotlin/ranges/LongProgression$Companion;->()V +HSPLkotlin/ranges/LongProgression$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/ranges/LongRange; +HSPLkotlin/ranges/LongRange;->()V +HSPLkotlin/ranges/LongRange;->(JJ)V +HSPLkotlin/ranges/LongRange;->contains(J)Z +Lkotlin/ranges/LongRange$Companion; +HSPLkotlin/ranges/LongRange$Companion;->()V +HSPLkotlin/ranges/LongRange$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/ranges/OpenEndRange; +Lkotlin/ranges/RangesKt; +Lkotlin/ranges/RangesKt__RangesKt; +HSPLkotlin/ranges/RangesKt__RangesKt;->rangeTo(FF)Lkotlin/ranges/ClosedFloatingPointRange; +Lkotlin/ranges/RangesKt___RangesKt; +HSPLkotlin/ranges/RangesKt___RangesKt;->coerceAtLeast(FF)F +HSPLkotlin/ranges/RangesKt___RangesKt;->coerceAtLeast(II)I +HSPLkotlin/ranges/RangesKt___RangesKt;->coerceAtLeast(JJ)J +HSPLkotlin/ranges/RangesKt___RangesKt;->coerceAtLeast(Ljava/lang/Comparable;Ljava/lang/Comparable;)Ljava/lang/Comparable; +HSPLkotlin/ranges/RangesKt___RangesKt;->coerceAtMost(FF)F +HSPLkotlin/ranges/RangesKt___RangesKt;->coerceAtMost(II)I +HSPLkotlin/ranges/RangesKt___RangesKt;->coerceAtMost(JJ)J +HSPLkotlin/ranges/RangesKt___RangesKt;->coerceIn(DDD)D +HSPLkotlin/ranges/RangesKt___RangesKt;->coerceIn(FFF)F +HSPLkotlin/ranges/RangesKt___RangesKt;->coerceIn(III)I +HSPLkotlin/ranges/RangesKt___RangesKt;->coerceIn(JJJ)J +HSPLkotlin/ranges/RangesKt___RangesKt;->coerceIn(Ljava/lang/Comparable;Lkotlin/ranges/ClosedFloatingPointRange;)Ljava/lang/Comparable; +HSPLkotlin/ranges/RangesKt___RangesKt;->until(II)Lkotlin/ranges/IntRange; +Lkotlin/reflect/KAnnotatedElement; +Lkotlin/reflect/KCallable; +Lkotlin/reflect/KClass; +Lkotlin/reflect/KClassifier; +Lkotlin/reflect/KDeclarationContainer; +Lkotlin/reflect/KFunction; +Lkotlin/reflect/KMutableProperty; +Lkotlin/reflect/KMutableProperty0; +Lkotlin/reflect/KMutableProperty1; +Lkotlin/reflect/KProperty; +Lkotlin/reflect/KProperty0; +Lkotlin/reflect/KProperty1; +Lkotlin/reflect/KProperty2; +Lkotlin/reflect/jvm/internal/CacheByClass; +HSPLkotlin/reflect/jvm/internal/CacheByClass;->()V +Lkotlin/reflect/jvm/internal/CacheByClassKt; +HSPLkotlin/reflect/jvm/internal/CacheByClassKt;->()V +HSPLkotlin/reflect/jvm/internal/CacheByClassKt;->createCache(Lkotlin/jvm/functions/Function1;)Lkotlin/reflect/jvm/internal/CacheByClass; +Lkotlin/reflect/jvm/internal/CachesKt; +HSPLkotlin/reflect/jvm/internal/CachesKt;->()V +HSPLkotlin/reflect/jvm/internal/CachesKt;->getOrCreateKotlinClass(Ljava/lang/Class;)Lkotlin/reflect/jvm/internal/KClassImpl; +HSPLkotlin/reflect/jvm/internal/CachesKt;->getOrCreateKotlinPackage(Ljava/lang/Class;)Lkotlin/reflect/KDeclarationContainer; +Lkotlin/reflect/jvm/internal/CachesKt$CACHE_FOR_BASE_CLASSIFIERS$1; +HSPLkotlin/reflect/jvm/internal/CachesKt$CACHE_FOR_BASE_CLASSIFIERS$1;->()V +HSPLkotlin/reflect/jvm/internal/CachesKt$CACHE_FOR_BASE_CLASSIFIERS$1;->()V +Lkotlin/reflect/jvm/internal/CachesKt$CACHE_FOR_GENERIC_CLASSIFIERS$1; +HSPLkotlin/reflect/jvm/internal/CachesKt$CACHE_FOR_GENERIC_CLASSIFIERS$1;->()V +HSPLkotlin/reflect/jvm/internal/CachesKt$CACHE_FOR_GENERIC_CLASSIFIERS$1;->()V +Lkotlin/reflect/jvm/internal/CachesKt$CACHE_FOR_NULLABLE_BASE_CLASSIFIERS$1; +HSPLkotlin/reflect/jvm/internal/CachesKt$CACHE_FOR_NULLABLE_BASE_CLASSIFIERS$1;->()V +HSPLkotlin/reflect/jvm/internal/CachesKt$CACHE_FOR_NULLABLE_BASE_CLASSIFIERS$1;->()V +Lkotlin/reflect/jvm/internal/CachesKt$K_CLASS_CACHE$1; +HSPLkotlin/reflect/jvm/internal/CachesKt$K_CLASS_CACHE$1;->()V +HSPLkotlin/reflect/jvm/internal/CachesKt$K_CLASS_CACHE$1;->()V +HSPLkotlin/reflect/jvm/internal/CachesKt$K_CLASS_CACHE$1;->invoke(Ljava/lang/Class;)Lkotlin/reflect/jvm/internal/KClassImpl; +HSPLkotlin/reflect/jvm/internal/CachesKt$K_CLASS_CACHE$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlin/reflect/jvm/internal/CachesKt$K_PACKAGE_CACHE$1; +HSPLkotlin/reflect/jvm/internal/CachesKt$K_PACKAGE_CACHE$1;->()V +HSPLkotlin/reflect/jvm/internal/CachesKt$K_PACKAGE_CACHE$1;->()V +HSPLkotlin/reflect/jvm/internal/CachesKt$K_PACKAGE_CACHE$1;->invoke(Ljava/lang/Class;)Lkotlin/reflect/jvm/internal/KPackageImpl; +HSPLkotlin/reflect/jvm/internal/CachesKt$K_PACKAGE_CACHE$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlin/reflect/jvm/internal/ClassValueCache; +HSPLkotlin/reflect/jvm/internal/ClassValueCache;->(Lkotlin/jvm/functions/Function1;)V +HSPLkotlin/reflect/jvm/internal/ClassValueCache;->get(Ljava/lang/Class;)Ljava/lang/Object; +Lkotlin/reflect/jvm/internal/ClassValueCache$$ExternalSyntheticApiModelOutline0; +HSPLkotlin/reflect/jvm/internal/ClassValueCache$$ExternalSyntheticApiModelOutline0;->m(Lkotlin/reflect/jvm/internal/ComputableClassValue;Ljava/lang/Class;)Ljava/lang/Object; +Lkotlin/reflect/jvm/internal/ComputableClassValue; +HSPLkotlin/reflect/jvm/internal/ComputableClassValue;->(Lkotlin/jvm/functions/Function1;)V +HSPLkotlin/reflect/jvm/internal/ComputableClassValue;->computeValue(Ljava/lang/Class;)Ljava/lang/Object; +HSPLkotlin/reflect/jvm/internal/ComputableClassValue;->computeValue(Ljava/lang/Class;)Ljava/lang/ref/SoftReference; +Lkotlin/reflect/jvm/internal/KCallableImpl; +HSPLkotlin/reflect/jvm/internal/KCallableImpl;->()V +Lkotlin/reflect/jvm/internal/KCallableImpl$_absentArguments$1; +HSPLkotlin/reflect/jvm/internal/KCallableImpl$_absentArguments$1;->(Lkotlin/reflect/jvm/internal/KCallableImpl;)V +Lkotlin/reflect/jvm/internal/KCallableImpl$_annotations$1; +HSPLkotlin/reflect/jvm/internal/KCallableImpl$_annotations$1;->(Lkotlin/reflect/jvm/internal/KCallableImpl;)V +Lkotlin/reflect/jvm/internal/KCallableImpl$_parameters$1; +HSPLkotlin/reflect/jvm/internal/KCallableImpl$_parameters$1;->(Lkotlin/reflect/jvm/internal/KCallableImpl;)V +Lkotlin/reflect/jvm/internal/KCallableImpl$_returnType$1; +HSPLkotlin/reflect/jvm/internal/KCallableImpl$_returnType$1;->(Lkotlin/reflect/jvm/internal/KCallableImpl;)V +Lkotlin/reflect/jvm/internal/KCallableImpl$_typeParameters$1; +HSPLkotlin/reflect/jvm/internal/KCallableImpl$_typeParameters$1;->(Lkotlin/reflect/jvm/internal/KCallableImpl;)V +Lkotlin/reflect/jvm/internal/KCallableImpl$parametersNeedMFVCFlattening$1; +HSPLkotlin/reflect/jvm/internal/KCallableImpl$parametersNeedMFVCFlattening$1;->(Lkotlin/reflect/jvm/internal/KCallableImpl;)V +Lkotlin/reflect/jvm/internal/KClassImpl; +HSPLkotlin/reflect/jvm/internal/KClassImpl;->(Ljava/lang/Class;)V +HSPLkotlin/reflect/jvm/internal/KClassImpl;->access$getClassId(Lkotlin/reflect/jvm/internal/KClassImpl;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/KClassImpl;->equals(Ljava/lang/Object;)Z +HSPLkotlin/reflect/jvm/internal/KClassImpl;->getClassId()Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/KClassImpl;->getJClass()Ljava/lang/Class; +HSPLkotlin/reflect/jvm/internal/KClassImpl;->getSimpleName()Ljava/lang/String; +HSPLkotlin/reflect/jvm/internal/KClassImpl;->hashCode()I +HSPLkotlin/reflect/jvm/internal/KClassImpl;->toString()Ljava/lang/String; +Lkotlin/reflect/jvm/internal/KClassImpl$Data; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data;->()V +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data;->(Lkotlin/reflect/jvm/internal/KClassImpl;)V +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data;->getSimpleName()Ljava/lang/String; +Lkotlin/reflect/jvm/internal/KClassImpl$Data$allMembers$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$allMembers$2;->(Lkotlin/reflect/jvm/internal/KClassImpl$Data;)V +Lkotlin/reflect/jvm/internal/KClassImpl$Data$allNonStaticMembers$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$allNonStaticMembers$2;->(Lkotlin/reflect/jvm/internal/KClassImpl$Data;)V +Lkotlin/reflect/jvm/internal/KClassImpl$Data$allStaticMembers$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$allStaticMembers$2;->(Lkotlin/reflect/jvm/internal/KClassImpl$Data;)V +Lkotlin/reflect/jvm/internal/KClassImpl$Data$annotations$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$annotations$2;->(Lkotlin/reflect/jvm/internal/KClassImpl$Data;)V +Lkotlin/reflect/jvm/internal/KClassImpl$Data$constructors$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$constructors$2;->(Lkotlin/reflect/jvm/internal/KClassImpl;)V +Lkotlin/reflect/jvm/internal/KClassImpl$Data$declaredMembers$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$declaredMembers$2;->(Lkotlin/reflect/jvm/internal/KClassImpl$Data;)V +Lkotlin/reflect/jvm/internal/KClassImpl$Data$declaredNonStaticMembers$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$declaredNonStaticMembers$2;->(Lkotlin/reflect/jvm/internal/KClassImpl;)V +Lkotlin/reflect/jvm/internal/KClassImpl$Data$declaredStaticMembers$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$declaredStaticMembers$2;->(Lkotlin/reflect/jvm/internal/KClassImpl;)V +Lkotlin/reflect/jvm/internal/KClassImpl$Data$descriptor$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$descriptor$2;->(Lkotlin/reflect/jvm/internal/KClassImpl;)V +Lkotlin/reflect/jvm/internal/KClassImpl$Data$inheritedNonStaticMembers$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$inheritedNonStaticMembers$2;->(Lkotlin/reflect/jvm/internal/KClassImpl;)V +Lkotlin/reflect/jvm/internal/KClassImpl$Data$inheritedStaticMembers$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$inheritedStaticMembers$2;->(Lkotlin/reflect/jvm/internal/KClassImpl;)V +Lkotlin/reflect/jvm/internal/KClassImpl$Data$nestedClasses$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$nestedClasses$2;->(Lkotlin/reflect/jvm/internal/KClassImpl$Data;)V +Lkotlin/reflect/jvm/internal/KClassImpl$Data$objectInstance$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$objectInstance$2;->(Lkotlin/reflect/jvm/internal/KClassImpl$Data;Lkotlin/reflect/jvm/internal/KClassImpl;)V +Lkotlin/reflect/jvm/internal/KClassImpl$Data$qualifiedName$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$qualifiedName$2;->(Lkotlin/reflect/jvm/internal/KClassImpl;)V +Lkotlin/reflect/jvm/internal/KClassImpl$Data$sealedSubclasses$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$sealedSubclasses$2;->(Lkotlin/reflect/jvm/internal/KClassImpl$Data;)V +Lkotlin/reflect/jvm/internal/KClassImpl$Data$simpleName$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$simpleName$2;->(Lkotlin/reflect/jvm/internal/KClassImpl;Lkotlin/reflect/jvm/internal/KClassImpl$Data;)V +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$simpleName$2;->invoke()Ljava/lang/Object; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$simpleName$2;->invoke()Ljava/lang/String; +Lkotlin/reflect/jvm/internal/KClassImpl$Data$supertypes$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$supertypes$2;->(Lkotlin/reflect/jvm/internal/KClassImpl$Data;Lkotlin/reflect/jvm/internal/KClassImpl;)V +Lkotlin/reflect/jvm/internal/KClassImpl$Data$typeParameters$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$typeParameters$2;->(Lkotlin/reflect/jvm/internal/KClassImpl$Data;Lkotlin/reflect/jvm/internal/KClassImpl;)V +Lkotlin/reflect/jvm/internal/KClassImpl$data$1; +HSPLkotlin/reflect/jvm/internal/KClassImpl$data$1;->(Lkotlin/reflect/jvm/internal/KClassImpl;)V +HSPLkotlin/reflect/jvm/internal/KClassImpl$data$1;->invoke()Ljava/lang/Object; +HSPLkotlin/reflect/jvm/internal/KClassImpl$data$1;->invoke()Lkotlin/reflect/jvm/internal/KClassImpl$Data; +Lkotlin/reflect/jvm/internal/KClassifierImpl; +Lkotlin/reflect/jvm/internal/KDeclarationContainerImpl; +HSPLkotlin/reflect/jvm/internal/KDeclarationContainerImpl;->()V +HSPLkotlin/reflect/jvm/internal/KDeclarationContainerImpl;->()V +Lkotlin/reflect/jvm/internal/KDeclarationContainerImpl$Companion; +HSPLkotlin/reflect/jvm/internal/KDeclarationContainerImpl$Companion;->()V +HSPLkotlin/reflect/jvm/internal/KDeclarationContainerImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/reflect/jvm/internal/KDeclarationContainerImpl$Data; +HSPLkotlin/reflect/jvm/internal/KDeclarationContainerImpl$Data;->()V +HSPLkotlin/reflect/jvm/internal/KDeclarationContainerImpl$Data;->(Lkotlin/reflect/jvm/internal/KDeclarationContainerImpl;)V +Lkotlin/reflect/jvm/internal/KDeclarationContainerImpl$Data$moduleData$2; +HSPLkotlin/reflect/jvm/internal/KDeclarationContainerImpl$Data$moduleData$2;->(Lkotlin/reflect/jvm/internal/KDeclarationContainerImpl;)V +Lkotlin/reflect/jvm/internal/KMutableProperty1Impl; +HSPLkotlin/reflect/jvm/internal/KMutableProperty1Impl;->(Lkotlin/reflect/jvm/internal/KDeclarationContainerImpl;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V +Lkotlin/reflect/jvm/internal/KMutableProperty1Impl$_setter$1; +HSPLkotlin/reflect/jvm/internal/KMutableProperty1Impl$_setter$1;->(Lkotlin/reflect/jvm/internal/KMutableProperty1Impl;)V +Lkotlin/reflect/jvm/internal/KPackageImpl; +HSPLkotlin/reflect/jvm/internal/KPackageImpl;->(Ljava/lang/Class;)V +Lkotlin/reflect/jvm/internal/KPackageImpl$data$1; +HSPLkotlin/reflect/jvm/internal/KPackageImpl$data$1;->(Lkotlin/reflect/jvm/internal/KPackageImpl;)V +Lkotlin/reflect/jvm/internal/KProperty0Impl; +HSPLkotlin/reflect/jvm/internal/KProperty0Impl;->(Lkotlin/reflect/jvm/internal/KDeclarationContainerImpl;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V +Lkotlin/reflect/jvm/internal/KProperty0Impl$_getter$1; +HSPLkotlin/reflect/jvm/internal/KProperty0Impl$_getter$1;->(Lkotlin/reflect/jvm/internal/KProperty0Impl;)V +Lkotlin/reflect/jvm/internal/KProperty0Impl$delegateValue$1; +HSPLkotlin/reflect/jvm/internal/KProperty0Impl$delegateValue$1;->(Lkotlin/reflect/jvm/internal/KProperty0Impl;)V +Lkotlin/reflect/jvm/internal/KProperty1Impl; +HSPLkotlin/reflect/jvm/internal/KProperty1Impl;->(Lkotlin/reflect/jvm/internal/KDeclarationContainerImpl;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V +Lkotlin/reflect/jvm/internal/KProperty1Impl$_getter$1; +HSPLkotlin/reflect/jvm/internal/KProperty1Impl$_getter$1;->(Lkotlin/reflect/jvm/internal/KProperty1Impl;)V +Lkotlin/reflect/jvm/internal/KProperty1Impl$delegateSource$1; +HSPLkotlin/reflect/jvm/internal/KProperty1Impl$delegateSource$1;->(Lkotlin/reflect/jvm/internal/KProperty1Impl;)V +Lkotlin/reflect/jvm/internal/KProperty2Impl; +HSPLkotlin/reflect/jvm/internal/KProperty2Impl;->(Lkotlin/reflect/jvm/internal/KDeclarationContainerImpl;Ljava/lang/String;Ljava/lang/String;)V +Lkotlin/reflect/jvm/internal/KProperty2Impl$_getter$1; +HSPLkotlin/reflect/jvm/internal/KProperty2Impl$_getter$1;->(Lkotlin/reflect/jvm/internal/KProperty2Impl;)V +Lkotlin/reflect/jvm/internal/KProperty2Impl$delegateSource$1; +HSPLkotlin/reflect/jvm/internal/KProperty2Impl$delegateSource$1;->(Lkotlin/reflect/jvm/internal/KProperty2Impl;)V +Lkotlin/reflect/jvm/internal/KPropertyImpl; +HSPLkotlin/reflect/jvm/internal/KPropertyImpl;->()V +HSPLkotlin/reflect/jvm/internal/KPropertyImpl;->(Lkotlin/reflect/jvm/internal/KDeclarationContainerImpl;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V +HSPLkotlin/reflect/jvm/internal/KPropertyImpl;->(Lkotlin/reflect/jvm/internal/KDeclarationContainerImpl;Ljava/lang/String;Ljava/lang/String;Lkotlin/reflect/jvm/internal/impl/descriptors/PropertyDescriptor;Ljava/lang/Object;)V +HSPLkotlin/reflect/jvm/internal/KPropertyImpl;->getName()Ljava/lang/String; +Lkotlin/reflect/jvm/internal/KPropertyImpl$Companion; +HSPLkotlin/reflect/jvm/internal/KPropertyImpl$Companion;->()V +HSPLkotlin/reflect/jvm/internal/KPropertyImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/reflect/jvm/internal/KPropertyImpl$_descriptor$1; +HSPLkotlin/reflect/jvm/internal/KPropertyImpl$_descriptor$1;->(Lkotlin/reflect/jvm/internal/KPropertyImpl;)V +Lkotlin/reflect/jvm/internal/KPropertyImpl$_javaField$1; +HSPLkotlin/reflect/jvm/internal/KPropertyImpl$_javaField$1;->(Lkotlin/reflect/jvm/internal/KPropertyImpl;)V +Lkotlin/reflect/jvm/internal/KTypeParameterOwnerImpl; +Lkotlin/reflect/jvm/internal/ReflectProperties; +HSPLkotlin/reflect/jvm/internal/ReflectProperties;->lazy(Lkotlin/jvm/functions/Function0;)Lkotlin/reflect/jvm/internal/ReflectProperties$LazyVal; +HSPLkotlin/reflect/jvm/internal/ReflectProperties;->lazySoft(Ljava/lang/Object;Lkotlin/jvm/functions/Function0;)Lkotlin/reflect/jvm/internal/ReflectProperties$LazySoftVal; +HSPLkotlin/reflect/jvm/internal/ReflectProperties;->lazySoft(Lkotlin/jvm/functions/Function0;)Lkotlin/reflect/jvm/internal/ReflectProperties$LazySoftVal; +Lkotlin/reflect/jvm/internal/ReflectProperties$LazySoftVal; +HSPLkotlin/reflect/jvm/internal/ReflectProperties$LazySoftVal;->(Ljava/lang/Object;Lkotlin/jvm/functions/Function0;)V +HSPLkotlin/reflect/jvm/internal/ReflectProperties$LazySoftVal;->invoke()Ljava/lang/Object; +Lkotlin/reflect/jvm/internal/ReflectProperties$LazyVal; +HSPLkotlin/reflect/jvm/internal/ReflectProperties$LazyVal;->(Lkotlin/jvm/functions/Function0;)V +HSPLkotlin/reflect/jvm/internal/ReflectProperties$LazyVal;->invoke()Ljava/lang/Object; +Lkotlin/reflect/jvm/internal/ReflectProperties$Val; +HSPLkotlin/reflect/jvm/internal/ReflectProperties$Val;->()V +HSPLkotlin/reflect/jvm/internal/ReflectProperties$Val;->()V +HSPLkotlin/reflect/jvm/internal/ReflectProperties$Val;->escape(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlin/reflect/jvm/internal/ReflectProperties$Val;->getValue(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lkotlin/reflect/jvm/internal/ReflectProperties$Val$1; +HSPLkotlin/reflect/jvm/internal/ReflectProperties$Val$1;->()V +Lkotlin/reflect/jvm/internal/ReflectionFactoryImpl; +HSPLkotlin/reflect/jvm/internal/ReflectionFactoryImpl;->()V +HSPLkotlin/reflect/jvm/internal/ReflectionFactoryImpl;->getOrCreateKotlinClass(Ljava/lang/Class;)Lkotlin/reflect/KClass; +HSPLkotlin/reflect/jvm/internal/ReflectionFactoryImpl;->getOrCreateKotlinPackage(Ljava/lang/Class;Ljava/lang/String;)Lkotlin/reflect/KDeclarationContainer; +HSPLkotlin/reflect/jvm/internal/ReflectionFactoryImpl;->getOwner(Lkotlin/jvm/internal/CallableReference;)Lkotlin/reflect/jvm/internal/KDeclarationContainerImpl; +HSPLkotlin/reflect/jvm/internal/ReflectionFactoryImpl;->mutableProperty1(Lkotlin/jvm/internal/MutablePropertyReference1;)Lkotlin/reflect/KMutableProperty1; +HSPLkotlin/reflect/jvm/internal/ReflectionFactoryImpl;->property0(Lkotlin/jvm/internal/PropertyReference0;)Lkotlin/reflect/KProperty0; +HSPLkotlin/reflect/jvm/internal/ReflectionFactoryImpl;->property1(Lkotlin/jvm/internal/PropertyReference1;)Lkotlin/reflect/KProperty1; +HSPLkotlin/reflect/jvm/internal/ReflectionFactoryImpl;->property2(Lkotlin/jvm/internal/PropertyReference2;)Lkotlin/reflect/KProperty2; +Lkotlin/reflect/jvm/internal/RuntimeTypeMapper; +HSPLkotlin/reflect/jvm/internal/RuntimeTypeMapper;->()V +HSPLkotlin/reflect/jvm/internal/RuntimeTypeMapper;->()V +HSPLkotlin/reflect/jvm/internal/RuntimeTypeMapper;->getPrimitiveType(Ljava/lang/Class;)Lkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType; +HSPLkotlin/reflect/jvm/internal/RuntimeTypeMapper;->mapJvmClassToKotlinClassId(Ljava/lang/Class;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +Lkotlin/reflect/jvm/internal/impl/builtins/CompanionObjectMapping; +HSPLkotlin/reflect/jvm/internal/impl/builtins/CompanionObjectMapping;->()V +HSPLkotlin/reflect/jvm/internal/impl/builtins/CompanionObjectMapping;->()V +HSPLkotlin/reflect/jvm/internal/impl/builtins/CompanionObjectMapping;->allClassesWithIntrinsicCompanions()Ljava/util/Set; +Lkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType; +HSPLkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType;->$values()[Lkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType; +HSPLkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType;->()V +HSPLkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType;->(Ljava/lang/String;ILjava/lang/String;)V +HSPLkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType;->getArrayTypeName()Lkotlin/reflect/jvm/internal/impl/name/Name; +HSPLkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType;->getTypeName()Lkotlin/reflect/jvm/internal/impl/name/Name; +HSPLkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType;->values()[Lkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType; +Lkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType$Companion; +HSPLkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType$Companion;->()V +HSPLkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType$arrayTypeFqName$2; +HSPLkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType$arrayTypeFqName$2;->(Lkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType;)V +Lkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType$typeFqName$2; +HSPLkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType$typeFqName$2;->(Lkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType;)V +Lkotlin/reflect/jvm/internal/impl/builtins/StandardNames; +HSPLkotlin/reflect/jvm/internal/impl/builtins/StandardNames;->()V +HSPLkotlin/reflect/jvm/internal/impl/builtins/StandardNames;->()V +HSPLkotlin/reflect/jvm/internal/impl/builtins/StandardNames;->getFunctionClassId(I)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/builtins/StandardNames;->getFunctionName(I)Ljava/lang/String; +HSPLkotlin/reflect/jvm/internal/impl/builtins/StandardNames;->getPrimitiveFqName(Lkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType;)Lkotlin/reflect/jvm/internal/impl/name/FqName; +Lkotlin/reflect/jvm/internal/impl/builtins/StandardNames$FqNames; +HSPLkotlin/reflect/jvm/internal/impl/builtins/StandardNames$FqNames;->()V +HSPLkotlin/reflect/jvm/internal/impl/builtins/StandardNames$FqNames;->()V +HSPLkotlin/reflect/jvm/internal/impl/builtins/StandardNames$FqNames;->annotationName(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/builtins/StandardNames$FqNames;->collectionsFqName(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/builtins/StandardNames$FqNames;->fqName(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/builtins/StandardNames$FqNames;->fqNameUnsafe(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe; +HSPLkotlin/reflect/jvm/internal/impl/builtins/StandardNames$FqNames;->internalName(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/builtins/StandardNames$FqNames;->rangesFqName(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe; +HSPLkotlin/reflect/jvm/internal/impl/builtins/StandardNames$FqNames;->reflect(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe; +Lkotlin/reflect/jvm/internal/impl/builtins/functions/FunctionTypeKind; +HSPLkotlin/reflect/jvm/internal/impl/builtins/functions/FunctionTypeKind;->(Lkotlin/reflect/jvm/internal/impl/name/FqName;Ljava/lang/String;ZLkotlin/reflect/jvm/internal/impl/name/ClassId;)V +HSPLkotlin/reflect/jvm/internal/impl/builtins/functions/FunctionTypeKind;->getClassNamePrefix()Ljava/lang/String; +HSPLkotlin/reflect/jvm/internal/impl/builtins/functions/FunctionTypeKind;->getPackageFqName()Lkotlin/reflect/jvm/internal/impl/name/FqName; +Lkotlin/reflect/jvm/internal/impl/builtins/functions/FunctionTypeKind$Function; +HSPLkotlin/reflect/jvm/internal/impl/builtins/functions/FunctionTypeKind$Function;->()V +HSPLkotlin/reflect/jvm/internal/impl/builtins/functions/FunctionTypeKind$Function;->()V +Lkotlin/reflect/jvm/internal/impl/builtins/functions/FunctionTypeKind$KFunction; +HSPLkotlin/reflect/jvm/internal/impl/builtins/functions/FunctionTypeKind$KFunction;->()V +HSPLkotlin/reflect/jvm/internal/impl/builtins/functions/FunctionTypeKind$KFunction;->()V +Lkotlin/reflect/jvm/internal/impl/builtins/functions/FunctionTypeKind$KSuspendFunction; +HSPLkotlin/reflect/jvm/internal/impl/builtins/functions/FunctionTypeKind$KSuspendFunction;->()V +HSPLkotlin/reflect/jvm/internal/impl/builtins/functions/FunctionTypeKind$KSuspendFunction;->()V +Lkotlin/reflect/jvm/internal/impl/builtins/functions/FunctionTypeKind$SuspendFunction; +HSPLkotlin/reflect/jvm/internal/impl/builtins/functions/FunctionTypeKind$SuspendFunction;->()V +HSPLkotlin/reflect/jvm/internal/impl/builtins/functions/FunctionTypeKind$SuspendFunction;->()V +Lkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap; +HSPLkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap;->()V +HSPLkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap;->()V +HSPLkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap;->add(Lkotlin/reflect/jvm/internal/impl/name/ClassId;Lkotlin/reflect/jvm/internal/impl/name/ClassId;)V +HSPLkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap;->addJavaToKotlin(Lkotlin/reflect/jvm/internal/impl/name/ClassId;Lkotlin/reflect/jvm/internal/impl/name/ClassId;)V +HSPLkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap;->addKotlinToJava(Lkotlin/reflect/jvm/internal/impl/name/FqName;Lkotlin/reflect/jvm/internal/impl/name/ClassId;)V +HSPLkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap;->addMapping(Lkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap$PlatformMutabilityMapping;)V +HSPLkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap;->addTopLevel(Ljava/lang/Class;Lkotlin/reflect/jvm/internal/impl/name/FqName;)V +HSPLkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap;->addTopLevel(Ljava/lang/Class;Lkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;)V +HSPLkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap;->classId(Ljava/lang/Class;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap;->mapJavaToKotlin(Lkotlin/reflect/jvm/internal/impl/name/FqName;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +Lkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap$PlatformMutabilityMapping; +HSPLkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap$PlatformMutabilityMapping;->(Lkotlin/reflect/jvm/internal/impl/name/ClassId;Lkotlin/reflect/jvm/internal/impl/name/ClassId;Lkotlin/reflect/jvm/internal/impl/name/ClassId;)V +HSPLkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap$PlatformMutabilityMapping;->component1()Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap$PlatformMutabilityMapping;->component2()Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap$PlatformMutabilityMapping;->component3()Lkotlin/reflect/jvm/internal/impl/name/ClassId; +Lkotlin/reflect/jvm/internal/impl/descriptors/runtime/structure/ReflectClassUtilKt; +HSPLkotlin/reflect/jvm/internal/impl/descriptors/runtime/structure/ReflectClassUtilKt;->()V +HSPLkotlin/reflect/jvm/internal/impl/descriptors/runtime/structure/ReflectClassUtilKt;->getClassId(Ljava/lang/Class;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/ClassId;->()V +HSPLkotlin/reflect/jvm/internal/impl/name/ClassId;->(Lkotlin/reflect/jvm/internal/impl/name/FqName;Lkotlin/reflect/jvm/internal/impl/name/FqName;Z)V +HSPLkotlin/reflect/jvm/internal/impl/name/ClassId;->(Lkotlin/reflect/jvm/internal/impl/name/FqName;Lkotlin/reflect/jvm/internal/impl/name/Name;)V +HSPLkotlin/reflect/jvm/internal/impl/name/ClassId;->asSingleFqName()Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/name/ClassId;->createNestedClassId(Lkotlin/reflect/jvm/internal/impl/name/Name;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/ClassId;->getPackageFqName()Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/name/ClassId;->getRelativeClassName()Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/name/ClassId;->getShortClassName()Lkotlin/reflect/jvm/internal/impl/name/Name; +HSPLkotlin/reflect/jvm/internal/impl/name/ClassId;->hashCode()I +HSPLkotlin/reflect/jvm/internal/impl/name/ClassId;->isLocal()Z +HSPLkotlin/reflect/jvm/internal/impl/name/ClassId;->topLevel(Lkotlin/reflect/jvm/internal/impl/name/FqName;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/name/FqName;->()V +HSPLkotlin/reflect/jvm/internal/impl/name/FqName;->(Ljava/lang/String;)V +HSPLkotlin/reflect/jvm/internal/impl/name/FqName;->(Lkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;)V +HSPLkotlin/reflect/jvm/internal/impl/name/FqName;->(Lkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;Lkotlin/reflect/jvm/internal/impl/name/FqName;)V +HSPLkotlin/reflect/jvm/internal/impl/name/FqName;->asString()Ljava/lang/String; +HSPLkotlin/reflect/jvm/internal/impl/name/FqName;->child(Lkotlin/reflect/jvm/internal/impl/name/Name;)Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/name/FqName;->equals(Ljava/lang/Object;)Z +HSPLkotlin/reflect/jvm/internal/impl/name/FqName;->hashCode()I +HSPLkotlin/reflect/jvm/internal/impl/name/FqName;->isRoot()Z +HSPLkotlin/reflect/jvm/internal/impl/name/FqName;->parent()Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/name/FqName;->shortName()Lkotlin/reflect/jvm/internal/impl/name/Name; +HSPLkotlin/reflect/jvm/internal/impl/name/FqName;->toString()Ljava/lang/String; +HSPLkotlin/reflect/jvm/internal/impl/name/FqName;->toUnsafe()Lkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe; +HSPLkotlin/reflect/jvm/internal/impl/name/FqName;->topLevel(Lkotlin/reflect/jvm/internal/impl/name/Name;)Lkotlin/reflect/jvm/internal/impl/name/FqName; +Lkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe; +HSPLkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;->()V +HSPLkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;->(Ljava/lang/String;)V +HSPLkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;->(Ljava/lang/String;Lkotlin/reflect/jvm/internal/impl/name/FqName;)V +HSPLkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;->(Ljava/lang/String;Lkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;Lkotlin/reflect/jvm/internal/impl/name/Name;)V +HSPLkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;->asString()Ljava/lang/String; +HSPLkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;->child(Lkotlin/reflect/jvm/internal/impl/name/Name;)Lkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe; +HSPLkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;->compute()V +HSPLkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;->equals(Ljava/lang/Object;)Z +HSPLkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;->hashCode()I +HSPLkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;->isRoot()Z +HSPLkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;->parent()Lkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe; +HSPLkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;->shortName()Lkotlin/reflect/jvm/internal/impl/name/Name; +HSPLkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;->toSafe()Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;->toString()Ljava/lang/String; +HSPLkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;->topLevel(Lkotlin/reflect/jvm/internal/impl/name/Name;)Lkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe; +Lkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe$1; +HSPLkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe$1;->()V +Lkotlin/reflect/jvm/internal/impl/name/FqNamesUtilKt; +HSPLkotlin/reflect/jvm/internal/impl/name/FqNamesUtilKt;->isSubpackageOf(Ljava/lang/String;Ljava/lang/String;)Z +HSPLkotlin/reflect/jvm/internal/impl/name/FqNamesUtilKt;->isSubpackageOf(Lkotlin/reflect/jvm/internal/impl/name/FqName;Lkotlin/reflect/jvm/internal/impl/name/FqName;)Z +HSPLkotlin/reflect/jvm/internal/impl/name/FqNamesUtilKt;->tail(Lkotlin/reflect/jvm/internal/impl/name/FqName;Lkotlin/reflect/jvm/internal/impl/name/FqName;)Lkotlin/reflect/jvm/internal/impl/name/FqName; +Lkotlin/reflect/jvm/internal/impl/name/Name; +HSPLkotlin/reflect/jvm/internal/impl/name/Name;->(Ljava/lang/String;Z)V +HSPLkotlin/reflect/jvm/internal/impl/name/Name;->asString()Ljava/lang/String; +HSPLkotlin/reflect/jvm/internal/impl/name/Name;->getIdentifier()Ljava/lang/String; +HSPLkotlin/reflect/jvm/internal/impl/name/Name;->guessByFirstCharacter(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/Name; +HSPLkotlin/reflect/jvm/internal/impl/name/Name;->hashCode()I +HSPLkotlin/reflect/jvm/internal/impl/name/Name;->identifier(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/Name; +HSPLkotlin/reflect/jvm/internal/impl/name/Name;->special(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/Name; +Lkotlin/reflect/jvm/internal/impl/name/SpecialNames; +HSPLkotlin/reflect/jvm/internal/impl/name/SpecialNames;->()V +HSPLkotlin/reflect/jvm/internal/impl/name/SpecialNames;->()V +Lkotlin/reflect/jvm/internal/impl/name/StandardClassIds; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIds;->()V +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIds;->()V +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIds;->getArray()Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIds;->getBASE_ANNOTATION_PACKAGE()Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIds;->getBASE_COLLECTIONS_PACKAGE()Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIds;->getBASE_COROUTINES_PACKAGE()Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIds;->getBASE_ENUMS_PACKAGE()Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIds;->getBASE_KOTLIN_PACKAGE()Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIds;->getBASE_RANGES_PACKAGE()Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIds;->getBASE_REFLECT_PACKAGE()Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIds;->getKClass()Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIds;->getKFunction()Lkotlin/reflect/jvm/internal/impl/name/ClassId; +Lkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->()V +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->access$annotationId(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->access$baseId(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->access$collectionsId(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->access$coroutinesId(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->access$enumsId(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->access$inverseMap(Ljava/util/Map;)Ljava/util/Map; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->access$primitiveArrayId(Lkotlin/reflect/jvm/internal/impl/name/Name;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->access$rangesId(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->access$reflectId(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->access$unsignedId(Lkotlin/reflect/jvm/internal/impl/name/ClassId;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->annotationId(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->baseId(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->collectionsId(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->coroutinesId(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->enumsId(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->inverseMap(Ljava/util/Map;)Ljava/util/Map; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->primitiveArrayId(Lkotlin/reflect/jvm/internal/impl/name/Name;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->rangesId(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->reflectId(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->unsignedId(Lkotlin/reflect/jvm/internal/impl/name/ClassId;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +Lkotlin/reflect/jvm/internal/impl/resolve/jvm/JvmPrimitiveType; +HSPLkotlin/reflect/jvm/internal/impl/resolve/jvm/JvmPrimitiveType;->()V +HSPLkotlin/reflect/jvm/internal/impl/resolve/jvm/JvmPrimitiveType;->(Ljava/lang/String;ILkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLkotlin/reflect/jvm/internal/impl/resolve/jvm/JvmPrimitiveType;->get(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/resolve/jvm/JvmPrimitiveType; +HSPLkotlin/reflect/jvm/internal/impl/resolve/jvm/JvmPrimitiveType;->getDesc()Ljava/lang/String; +HSPLkotlin/reflect/jvm/internal/impl/resolve/jvm/JvmPrimitiveType;->getJavaKeywordName()Ljava/lang/String; +HSPLkotlin/reflect/jvm/internal/impl/resolve/jvm/JvmPrimitiveType;->getPrimitiveType()Lkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType; +HSPLkotlin/reflect/jvm/internal/impl/resolve/jvm/JvmPrimitiveType;->getWrapperFqName()Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/resolve/jvm/JvmPrimitiveType;->values()[Lkotlin/reflect/jvm/internal/impl/resolve/jvm/JvmPrimitiveType; +Lkotlin/reflect/jvm/internal/impl/utils/CollectionsKt; +HSPLkotlin/reflect/jvm/internal/impl/utils/CollectionsKt;->capacity(I)I +HSPLkotlin/reflect/jvm/internal/impl/utils/CollectionsKt;->newHashMapWithExpectedSize(I)Ljava/util/HashMap; +HSPLkotlin/reflect/jvm/internal/impl/utils/CollectionsKt;->newHashSetWithExpectedSize(I)Ljava/util/HashSet; +Lkotlin/sequences/DropTakeSequence; +Lkotlin/sequences/EmptySequence; +HSPLkotlin/sequences/EmptySequence;->()V +HSPLkotlin/sequences/EmptySequence;->()V +HSPLkotlin/sequences/EmptySequence;->iterator()Ljava/util/Iterator; +Lkotlin/sequences/FilteringSequence; +HSPLkotlin/sequences/FilteringSequence;->(Lkotlin/sequences/Sequence;ZLkotlin/jvm/functions/Function1;)V +HSPLkotlin/sequences/FilteringSequence;->access$getPredicate$p(Lkotlin/sequences/FilteringSequence;)Lkotlin/jvm/functions/Function1; +HSPLkotlin/sequences/FilteringSequence;->access$getSendWhen$p(Lkotlin/sequences/FilteringSequence;)Z +HSPLkotlin/sequences/FilteringSequence;->access$getSequence$p(Lkotlin/sequences/FilteringSequence;)Lkotlin/sequences/Sequence; +HSPLkotlin/sequences/FilteringSequence;->iterator()Ljava/util/Iterator; +Lkotlin/sequences/FilteringSequence$iterator$1; +HSPLkotlin/sequences/FilteringSequence$iterator$1;->(Lkotlin/sequences/FilteringSequence;)V +HSPLkotlin/sequences/FilteringSequence$iterator$1;->calcNext()V +HSPLkotlin/sequences/FilteringSequence$iterator$1;->hasNext()Z +HSPLkotlin/sequences/FilteringSequence$iterator$1;->next()Ljava/lang/Object; +Lkotlin/sequences/FlatteningSequence; +HSPLkotlin/sequences/FlatteningSequence;->(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLkotlin/sequences/FlatteningSequence;->access$getIterator$p(Lkotlin/sequences/FlatteningSequence;)Lkotlin/jvm/functions/Function1; +HSPLkotlin/sequences/FlatteningSequence;->access$getSequence$p(Lkotlin/sequences/FlatteningSequence;)Lkotlin/sequences/Sequence; +HSPLkotlin/sequences/FlatteningSequence;->access$getTransformer$p(Lkotlin/sequences/FlatteningSequence;)Lkotlin/jvm/functions/Function1; +HSPLkotlin/sequences/FlatteningSequence;->iterator()Ljava/util/Iterator; +Lkotlin/sequences/FlatteningSequence$iterator$1; +HSPLkotlin/sequences/FlatteningSequence$iterator$1;->(Lkotlin/sequences/FlatteningSequence;)V +HSPLkotlin/sequences/FlatteningSequence$iterator$1;->ensureItemIterator()Z +HSPLkotlin/sequences/FlatteningSequence$iterator$1;->hasNext()Z +HSPLkotlin/sequences/FlatteningSequence$iterator$1;->next()Ljava/lang/Object; +Lkotlin/sequences/GeneratorSequence; +HSPLkotlin/sequences/GeneratorSequence;->(Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;)V +HSPLkotlin/sequences/GeneratorSequence;->access$getGetInitialValue$p(Lkotlin/sequences/GeneratorSequence;)Lkotlin/jvm/functions/Function0; +HSPLkotlin/sequences/GeneratorSequence;->access$getGetNextValue$p(Lkotlin/sequences/GeneratorSequence;)Lkotlin/jvm/functions/Function1; +HSPLkotlin/sequences/GeneratorSequence;->iterator()Ljava/util/Iterator; +Lkotlin/sequences/GeneratorSequence$iterator$1; +HSPLkotlin/sequences/GeneratorSequence$iterator$1;->(Lkotlin/sequences/GeneratorSequence;)V +HSPLkotlin/sequences/GeneratorSequence$iterator$1;->calcNext()V +HSPLkotlin/sequences/GeneratorSequence$iterator$1;->hasNext()Z +HSPLkotlin/sequences/GeneratorSequence$iterator$1;->next()Ljava/lang/Object; +Lkotlin/sequences/Sequence; +Lkotlin/sequences/SequenceBuilderIterator; +HSPLkotlin/sequences/SequenceBuilderIterator;->()V +HSPLkotlin/sequences/SequenceBuilderIterator;->getContext()Lkotlin/coroutines/CoroutineContext; +HSPLkotlin/sequences/SequenceBuilderIterator;->hasNext()Z +HSPLkotlin/sequences/SequenceBuilderIterator;->next()Ljava/lang/Object; +HSPLkotlin/sequences/SequenceBuilderIterator;->resumeWith(Ljava/lang/Object;)V +HSPLkotlin/sequences/SequenceBuilderIterator;->setNextStep(Lkotlin/coroutines/Continuation;)V +HSPLkotlin/sequences/SequenceBuilderIterator;->yield(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlin/sequences/SequenceScope; +HSPLkotlin/sequences/SequenceScope;->()V +Lkotlin/sequences/SequencesKt; +Lkotlin/sequences/SequencesKt__SequenceBuilderKt; +HSPLkotlin/sequences/SequencesKt__SequenceBuilderKt;->iterator(Lkotlin/jvm/functions/Function2;)Ljava/util/Iterator; +HSPLkotlin/sequences/SequencesKt__SequenceBuilderKt;->sequence(Lkotlin/jvm/functions/Function2;)Lkotlin/sequences/Sequence; +Lkotlin/sequences/SequencesKt__SequenceBuilderKt$sequence$$inlined$Sequence$1; +HSPLkotlin/sequences/SequencesKt__SequenceBuilderKt$sequence$$inlined$Sequence$1;->(Lkotlin/jvm/functions/Function2;)V +HSPLkotlin/sequences/SequencesKt__SequenceBuilderKt$sequence$$inlined$Sequence$1;->iterator()Ljava/util/Iterator; +Lkotlin/sequences/SequencesKt__SequencesJVMKt; +Lkotlin/sequences/SequencesKt__SequencesKt; +HSPLkotlin/sequences/SequencesKt__SequencesKt;->emptySequence()Lkotlin/sequences/Sequence; +HSPLkotlin/sequences/SequencesKt__SequencesKt;->generateSequence(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Lkotlin/sequences/Sequence; +Lkotlin/sequences/SequencesKt__SequencesKt$generateSequence$2; +HSPLkotlin/sequences/SequencesKt__SequencesKt$generateSequence$2;->(Ljava/lang/Object;)V +HSPLkotlin/sequences/SequencesKt__SequencesKt$generateSequence$2;->invoke()Ljava/lang/Object; +Lkotlin/sequences/SequencesKt___SequencesJvmKt; +Lkotlin/sequences/SequencesKt___SequencesKt; +HSPLkotlin/sequences/SequencesKt___SequencesKt;->filter(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;)Lkotlin/sequences/Sequence; +HSPLkotlin/sequences/SequencesKt___SequencesKt;->filterNot(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;)Lkotlin/sequences/Sequence; +HSPLkotlin/sequences/SequencesKt___SequencesKt;->filterNotNull(Lkotlin/sequences/Sequence;)Lkotlin/sequences/Sequence; +HSPLkotlin/sequences/SequencesKt___SequencesKt;->firstOrNull(Lkotlin/sequences/Sequence;)Ljava/lang/Object; +HSPLkotlin/sequences/SequencesKt___SequencesKt;->flatMap(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;)Lkotlin/sequences/Sequence; +HSPLkotlin/sequences/SequencesKt___SequencesKt;->flatMapIterable(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;)Lkotlin/sequences/Sequence; +HSPLkotlin/sequences/SequencesKt___SequencesKt;->map(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;)Lkotlin/sequences/Sequence; +HSPLkotlin/sequences/SequencesKt___SequencesKt;->mapNotNull(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;)Lkotlin/sequences/Sequence; +HSPLkotlin/sequences/SequencesKt___SequencesKt;->sortedWith(Lkotlin/sequences/Sequence;Ljava/util/Comparator;)Lkotlin/sequences/Sequence; +HSPLkotlin/sequences/SequencesKt___SequencesKt;->take(Lkotlin/sequences/Sequence;I)Lkotlin/sequences/Sequence; +HSPLkotlin/sequences/SequencesKt___SequencesKt;->toCollection(Lkotlin/sequences/Sequence;Ljava/util/Collection;)Ljava/util/Collection; +HSPLkotlin/sequences/SequencesKt___SequencesKt;->toList(Lkotlin/sequences/Sequence;)Ljava/util/List; +HSPLkotlin/sequences/SequencesKt___SequencesKt;->toMutableList(Lkotlin/sequences/Sequence;)Ljava/util/List; +HSPLkotlin/sequences/SequencesKt___SequencesKt;->toSet(Lkotlin/sequences/Sequence;)Ljava/util/Set; +Lkotlin/sequences/SequencesKt___SequencesKt$filterNotNull$1; +HSPLkotlin/sequences/SequencesKt___SequencesKt$filterNotNull$1;->()V +HSPLkotlin/sequences/SequencesKt___SequencesKt$filterNotNull$1;->()V +HSPLkotlin/sequences/SequencesKt___SequencesKt$filterNotNull$1;->invoke(Ljava/lang/Object;)Ljava/lang/Boolean; +HSPLkotlin/sequences/SequencesKt___SequencesKt$filterNotNull$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlin/sequences/SequencesKt___SequencesKt$flatMap$1; +HSPLkotlin/sequences/SequencesKt___SequencesKt$flatMap$1;->()V +HSPLkotlin/sequences/SequencesKt___SequencesKt$flatMap$1;->()V +Lkotlin/sequences/SequencesKt___SequencesKt$flatMap$2; +HSPLkotlin/sequences/SequencesKt___SequencesKt$flatMap$2;->()V +HSPLkotlin/sequences/SequencesKt___SequencesKt$flatMap$2;->()V +HSPLkotlin/sequences/SequencesKt___SequencesKt$flatMap$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlin/sequences/SequencesKt___SequencesKt$flatMap$2;->invoke(Lkotlin/sequences/Sequence;)Ljava/util/Iterator; +Lkotlin/sequences/SequencesKt___SequencesKt$sortedWith$1; +HSPLkotlin/sequences/SequencesKt___SequencesKt$sortedWith$1;->(Lkotlin/sequences/Sequence;Ljava/util/Comparator;)V +HSPLkotlin/sequences/SequencesKt___SequencesKt$sortedWith$1;->iterator()Ljava/util/Iterator; +Lkotlin/sequences/TakeSequence; +HSPLkotlin/sequences/TakeSequence;->(Lkotlin/sequences/Sequence;I)V +HSPLkotlin/sequences/TakeSequence;->access$getCount$p(Lkotlin/sequences/TakeSequence;)I +HSPLkotlin/sequences/TakeSequence;->access$getSequence$p(Lkotlin/sequences/TakeSequence;)Lkotlin/sequences/Sequence; +HSPLkotlin/sequences/TakeSequence;->iterator()Ljava/util/Iterator; +Lkotlin/sequences/TakeSequence$iterator$1; +HSPLkotlin/sequences/TakeSequence$iterator$1;->(Lkotlin/sequences/TakeSequence;)V +HSPLkotlin/sequences/TakeSequence$iterator$1;->hasNext()Z +Lkotlin/sequences/TransformingSequence; +HSPLkotlin/sequences/TransformingSequence;->(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;)V +HSPLkotlin/sequences/TransformingSequence;->access$getSequence$p(Lkotlin/sequences/TransformingSequence;)Lkotlin/sequences/Sequence; +HSPLkotlin/sequences/TransformingSequence;->access$getTransformer$p(Lkotlin/sequences/TransformingSequence;)Lkotlin/jvm/functions/Function1; +HSPLkotlin/sequences/TransformingSequence;->iterator()Ljava/util/Iterator; +Lkotlin/sequences/TransformingSequence$iterator$1; +HSPLkotlin/sequences/TransformingSequence$iterator$1;->(Lkotlin/sequences/TransformingSequence;)V +HSPLkotlin/sequences/TransformingSequence$iterator$1;->hasNext()Z +HSPLkotlin/sequences/TransformingSequence$iterator$1;->next()Ljava/lang/Object; +Lkotlin/text/CharsKt; +Lkotlin/text/CharsKt__CharJVMKt; +HSPLkotlin/text/CharsKt__CharJVMKt;->checkRadix(I)I +HSPLkotlin/text/CharsKt__CharJVMKt;->digitOf(CI)I +HSPLkotlin/text/CharsKt__CharJVMKt;->isWhitespace(C)Z +Lkotlin/text/CharsKt__CharKt; +HSPLkotlin/text/CharsKt__CharKt;->equals(CCZ)Z +Lkotlin/text/Charsets; +HSPLkotlin/text/Charsets;->()V +HSPLkotlin/text/Charsets;->()V +Lkotlin/text/Regex; +HSPLkotlin/text/Regex;->()V +HSPLkotlin/text/Regex;->(Ljava/lang/String;)V +HSPLkotlin/text/Regex;->(Ljava/util/regex/Pattern;)V +HSPLkotlin/text/Regex;->matches(Ljava/lang/CharSequence;)Z +Lkotlin/text/Regex$Companion; +HSPLkotlin/text/Regex$Companion;->()V +HSPLkotlin/text/Regex$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/text/ScreenFloatValueRegEx; +HSPLkotlin/text/ScreenFloatValueRegEx;->()V +HSPLkotlin/text/ScreenFloatValueRegEx;->()V +Lkotlin/text/StringsKt; +Lkotlin/text/StringsKt__AppendableKt; +HSPLkotlin/text/StringsKt__AppendableKt;->appendElement(Ljava/lang/Appendable;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)V +Lkotlin/text/StringsKt__IndentKt; +Lkotlin/text/StringsKt__RegexExtensionsJVMKt; +Lkotlin/text/StringsKt__RegexExtensionsKt; +Lkotlin/text/StringsKt__StringBuilderJVMKt; +Lkotlin/text/StringsKt__StringBuilderKt; +Lkotlin/text/StringsKt__StringNumberConversionsJVMKt; +HSPLkotlin/text/StringsKt__StringNumberConversionsJVMKt;->toDoubleOrNull(Ljava/lang/String;)Ljava/lang/Double; +Lkotlin/text/StringsKt__StringNumberConversionsKt; +HSPLkotlin/text/StringsKt__StringNumberConversionsKt;->toLongOrNull(Ljava/lang/String;)Ljava/lang/Long; +HSPLkotlin/text/StringsKt__StringNumberConversionsKt;->toLongOrNull(Ljava/lang/String;I)Ljava/lang/Long; +Lkotlin/text/StringsKt__StringsJVMKt; +HSPLkotlin/text/StringsKt__StringsJVMKt;->encodeToByteArray(Ljava/lang/String;)[B +HSPLkotlin/text/StringsKt__StringsJVMKt;->endsWith$default(Ljava/lang/String;Ljava/lang/String;ZILjava/lang/Object;)Z +HSPLkotlin/text/StringsKt__StringsJVMKt;->endsWith(Ljava/lang/String;Ljava/lang/String;Z)Z +HSPLkotlin/text/StringsKt__StringsJVMKt;->equals(Ljava/lang/String;Ljava/lang/String;Z)Z +HSPLkotlin/text/StringsKt__StringsJVMKt;->isBlank(Ljava/lang/CharSequence;)Z +HSPLkotlin/text/StringsKt__StringsJVMKt;->repeat(Ljava/lang/CharSequence;I)Ljava/lang/String; +HSPLkotlin/text/StringsKt__StringsJVMKt;->replace$default(Ljava/lang/String;CCZILjava/lang/Object;)Ljava/lang/String; +HSPLkotlin/text/StringsKt__StringsJVMKt;->replace(Ljava/lang/String;CCZ)Ljava/lang/String; +HSPLkotlin/text/StringsKt__StringsJVMKt;->startsWith$default(Ljava/lang/String;Ljava/lang/String;ZILjava/lang/Object;)Z +HSPLkotlin/text/StringsKt__StringsJVMKt;->startsWith(Ljava/lang/String;Ljava/lang/String;Z)Z +Lkotlin/text/StringsKt__StringsKt; +HSPLkotlin/text/StringsKt__StringsKt;->contains$default(Ljava/lang/CharSequence;CZILjava/lang/Object;)Z +HSPLkotlin/text/StringsKt__StringsKt;->contains(Ljava/lang/CharSequence;CZ)Z +HSPLkotlin/text/StringsKt__StringsKt;->endsWith$default(Ljava/lang/CharSequence;Ljava/lang/CharSequence;ZILjava/lang/Object;)Z +HSPLkotlin/text/StringsKt__StringsKt;->endsWith(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Z)Z +HSPLkotlin/text/StringsKt__StringsKt;->getIndices(Ljava/lang/CharSequence;)Lkotlin/ranges/IntRange; +HSPLkotlin/text/StringsKt__StringsKt;->getLastIndex(Ljava/lang/CharSequence;)I +HSPLkotlin/text/StringsKt__StringsKt;->indexOf$default(Ljava/lang/CharSequence;CIZILjava/lang/Object;)I +HSPLkotlin/text/StringsKt__StringsKt;->indexOf(Ljava/lang/CharSequence;CIZ)I +HSPLkotlin/text/StringsKt__StringsKt;->indexOf(Ljava/lang/CharSequence;Ljava/lang/String;IZ)I +HSPLkotlin/text/StringsKt__StringsKt;->indexOfAny(Ljava/lang/CharSequence;[CIZ)I +HSPLkotlin/text/StringsKt__StringsKt;->lastIndexOf$default(Ljava/lang/CharSequence;CIZILjava/lang/Object;)I +HSPLkotlin/text/StringsKt__StringsKt;->lastIndexOf(Ljava/lang/CharSequence;CIZ)I +HSPLkotlin/text/StringsKt__StringsKt;->padStart(Ljava/lang/CharSequence;IC)Ljava/lang/CharSequence; +HSPLkotlin/text/StringsKt__StringsKt;->padStart(Ljava/lang/String;IC)Ljava/lang/String; +HSPLkotlin/text/StringsKt__StringsKt;->removePrefix(Ljava/lang/String;Ljava/lang/CharSequence;)Ljava/lang/String; +HSPLkotlin/text/StringsKt__StringsKt;->removeSuffix(Ljava/lang/String;Ljava/lang/CharSequence;)Ljava/lang/String; +HSPLkotlin/text/StringsKt__StringsKt;->requireNonNegativeLimit(I)V +HSPLkotlin/text/StringsKt__StringsKt;->split$StringsKt__StringsKt(Ljava/lang/CharSequence;Ljava/lang/String;ZI)Ljava/util/List; +HSPLkotlin/text/StringsKt__StringsKt;->split$default(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List; +HSPLkotlin/text/StringsKt__StringsKt;->split(Ljava/lang/CharSequence;[Ljava/lang/String;ZI)Ljava/util/List; +HSPLkotlin/text/StringsKt__StringsKt;->startsWith$default(Ljava/lang/CharSequence;Ljava/lang/CharSequence;ZILjava/lang/Object;)Z +HSPLkotlin/text/StringsKt__StringsKt;->startsWith(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Z)Z +HSPLkotlin/text/StringsKt__StringsKt;->substringAfterLast(Ljava/lang/String;CLjava/lang/String;)Ljava/lang/String; +HSPLkotlin/text/StringsKt__StringsKt;->toBooleanStrictOrNull(Ljava/lang/String;)Ljava/lang/Boolean; +HSPLkotlin/text/StringsKt__StringsKt;->trim(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; +Lkotlin/text/StringsKt___StringsJvmKt; +Lkotlin/text/StringsKt___StringsKt; +Lkotlin/text/UStringsKt; +HSPLkotlin/text/UStringsKt;->toULongOrNull(Ljava/lang/String;)Lkotlin/ULong; +HSPLkotlin/text/UStringsKt;->toULongOrNull(Ljava/lang/String;I)Lkotlin/ULong; +Lkotlin/time/Duration; +HSPLkotlin/time/Duration;->()V +HSPLkotlin/time/Duration;->appendFractional-impl(JLjava/lang/StringBuilder;IIILjava/lang/String;Z)V +HSPLkotlin/time/Duration;->constructor-impl(J)J +HSPLkotlin/time/Duration;->getAbsoluteValue-UwyO8pc(J)J +HSPLkotlin/time/Duration;->getHoursComponent-impl(J)I +HSPLkotlin/time/Duration;->getInWholeDays-impl(J)J +HSPLkotlin/time/Duration;->getInWholeHours-impl(J)J +HSPLkotlin/time/Duration;->getInWholeMilliseconds-impl(J)J +HSPLkotlin/time/Duration;->getInWholeMinutes-impl(J)J +HSPLkotlin/time/Duration;->getInWholeSeconds-impl(J)J +HSPLkotlin/time/Duration;->getMinutesComponent-impl(J)I +HSPLkotlin/time/Duration;->getNanosecondsComponent-impl(J)I +HSPLkotlin/time/Duration;->getSecondsComponent-impl(J)I +HSPLkotlin/time/Duration;->getStorageUnit-impl(J)Lkotlin/time/DurationUnit; +HSPLkotlin/time/Duration;->getValue-impl(J)J +HSPLkotlin/time/Duration;->isInMillis-impl(J)Z +HSPLkotlin/time/Duration;->isInNanos-impl(J)Z +HSPLkotlin/time/Duration;->isInfinite-impl(J)Z +HSPLkotlin/time/Duration;->isNegative-impl(J)Z +HSPLkotlin/time/Duration;->isPositive-impl(J)Z +HSPLkotlin/time/Duration;->plus-LRDsOJo(JJ)J +HSPLkotlin/time/Duration;->toLong-impl(JLkotlin/time/DurationUnit;)J +HSPLkotlin/time/Duration;->toString-impl(J)Ljava/lang/String; +Lkotlin/time/Duration$Companion; +HSPLkotlin/time/Duration$Companion;->()V +HSPLkotlin/time/Duration$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/time/DurationJvmKt; +HSPLkotlin/time/DurationJvmKt;->()V +HSPLkotlin/time/DurationJvmKt;->getDurationAssertionsEnabled()Z +Lkotlin/time/DurationKt; +HSPLkotlin/time/DurationKt;->access$durationOfMillis(J)J +HSPLkotlin/time/DurationKt;->access$durationOfNanosNormalized(J)J +HSPLkotlin/time/DurationKt;->durationOfMillis(J)J +HSPLkotlin/time/DurationKt;->durationOfNanos(J)J +HSPLkotlin/time/DurationKt;->durationOfNanosNormalized(J)J +HSPLkotlin/time/DurationKt;->toDuration(ILkotlin/time/DurationUnit;)J +HSPLkotlin/time/DurationKt;->toDuration(JLkotlin/time/DurationUnit;)J +Lkotlin/time/DurationUnit; +HSPLkotlin/time/DurationUnit;->$values()[Lkotlin/time/DurationUnit; +HSPLkotlin/time/DurationUnit;->()V +HSPLkotlin/time/DurationUnit;->(Ljava/lang/String;ILjava/util/concurrent/TimeUnit;)V +HSPLkotlin/time/DurationUnit;->getTimeUnit$kotlin_stdlib()Ljava/util/concurrent/TimeUnit; +Lkotlin/time/DurationUnitKt; +Lkotlin/time/DurationUnitKt__DurationUnitJvmKt; +HSPLkotlin/time/DurationUnitKt__DurationUnitJvmKt;->convertDurationUnit(JLkotlin/time/DurationUnit;Lkotlin/time/DurationUnit;)J +HSPLkotlin/time/DurationUnitKt__DurationUnitJvmKt;->convertDurationUnitOverflow(JLkotlin/time/DurationUnit;Lkotlin/time/DurationUnit;)J +Lkotlin/time/DurationUnitKt__DurationUnitKt; +Lkotlinx/collections/immutable/ExtensionsKt; +HSPLkotlinx/collections/immutable/ExtensionsKt;->persistentListOf()Lkotlinx/collections/immutable/PersistentList; +HSPLkotlinx/collections/immutable/ExtensionsKt;->persistentListOf([Ljava/lang/Object;)Lkotlinx/collections/immutable/PersistentList; +HSPLkotlinx/collections/immutable/ExtensionsKt;->persistentMapOf()Lkotlinx/collections/immutable/PersistentMap; +HSPLkotlinx/collections/immutable/ExtensionsKt;->plus(Lkotlinx/collections/immutable/PersistentList;Lkotlin/sequences/Sequence;)Lkotlinx/collections/immutable/PersistentList; +HSPLkotlinx/collections/immutable/ExtensionsKt;->toImmutableList(Lkotlin/sequences/Sequence;)Lkotlinx/collections/immutable/ImmutableList; +HSPLkotlinx/collections/immutable/ExtensionsKt;->toPersistentList(Lkotlin/sequences/Sequence;)Lkotlinx/collections/immutable/PersistentList; +Lkotlinx/collections/immutable/ImmutableCollection; +Lkotlinx/collections/immutable/ImmutableList; +Lkotlinx/collections/immutable/ImmutableList$DefaultImpls; +HSPLkotlinx/collections/immutable/ImmutableList$DefaultImpls;->subList(Lkotlinx/collections/immutable/ImmutableList;II)Lkotlinx/collections/immutable/ImmutableList; +Lkotlinx/collections/immutable/ImmutableList$SubList; +HSPLkotlinx/collections/immutable/ImmutableList$SubList;->(Lkotlinx/collections/immutable/ImmutableList;II)V +HSPLkotlinx/collections/immutable/ImmutableList$SubList;->get(I)Ljava/lang/Object; +HSPLkotlinx/collections/immutable/ImmutableList$SubList;->getSize()I +HSPLkotlinx/collections/immutable/ImmutableList$SubList;->subList(II)Lkotlinx/collections/immutable/ImmutableList; +Lkotlinx/collections/immutable/ImmutableMap; +Lkotlinx/collections/immutable/ImmutableSet; +Lkotlinx/collections/immutable/PersistentCollection; +Lkotlinx/collections/immutable/PersistentCollection$Builder; +Lkotlinx/collections/immutable/PersistentList; +Lkotlinx/collections/immutable/PersistentList$Builder; +Lkotlinx/collections/immutable/PersistentList$DefaultImpls; +HSPLkotlinx/collections/immutable/PersistentList$DefaultImpls;->subList(Lkotlinx/collections/immutable/PersistentList;II)Lkotlinx/collections/immutable/ImmutableList; +Lkotlinx/collections/immutable/PersistentMap; +Lkotlinx/collections/immutable/implementations/immutableList/AbstractListIterator; +HSPLkotlinx/collections/immutable/implementations/immutableList/AbstractListIterator;->(II)V +HSPLkotlinx/collections/immutable/implementations/immutableList/AbstractListIterator;->getIndex()I +HSPLkotlinx/collections/immutable/implementations/immutableList/AbstractListIterator;->hasNext()Z +HSPLkotlinx/collections/immutable/implementations/immutableList/AbstractListIterator;->setIndex(I)V +Lkotlinx/collections/immutable/implementations/immutableList/AbstractPersistentList; +HSPLkotlinx/collections/immutable/implementations/immutableList/AbstractPersistentList;->()V +HSPLkotlinx/collections/immutable/implementations/immutableList/AbstractPersistentList;->iterator()Ljava/util/Iterator; +HSPLkotlinx/collections/immutable/implementations/immutableList/AbstractPersistentList;->listIterator()Ljava/util/ListIterator; +HSPLkotlinx/collections/immutable/implementations/immutableList/AbstractPersistentList;->subList(II)Lkotlinx/collections/immutable/ImmutableList; +Lkotlinx/collections/immutable/implementations/immutableList/BufferIterator; +HSPLkotlinx/collections/immutable/implementations/immutableList/BufferIterator;->([Ljava/lang/Object;II)V +HSPLkotlinx/collections/immutable/implementations/immutableList/BufferIterator;->next()Ljava/lang/Object; +Lkotlinx/collections/immutable/implementations/immutableList/PersistentVectorBuilder; +HSPLkotlinx/collections/immutable/implementations/immutableList/PersistentVectorBuilder;->(Lkotlinx/collections/immutable/PersistentList;[Ljava/lang/Object;[Ljava/lang/Object;I)V +HSPLkotlinx/collections/immutable/implementations/immutableList/PersistentVectorBuilder;->add(Ljava/lang/Object;)Z +HSPLkotlinx/collections/immutable/implementations/immutableList/PersistentVectorBuilder;->build()Lkotlinx/collections/immutable/PersistentList; +HSPLkotlinx/collections/immutable/implementations/immutableList/PersistentVectorBuilder;->getSize()I +HSPLkotlinx/collections/immutable/implementations/immutableList/PersistentVectorBuilder;->isMutable([Ljava/lang/Object;)Z +HSPLkotlinx/collections/immutable/implementations/immutableList/PersistentVectorBuilder;->makeMutable([Ljava/lang/Object;)[Ljava/lang/Object; +HSPLkotlinx/collections/immutable/implementations/immutableList/PersistentVectorBuilder;->mutableBuffer()[Ljava/lang/Object; +HSPLkotlinx/collections/immutable/implementations/immutableList/PersistentVectorBuilder;->tailSize()I +HSPLkotlinx/collections/immutable/implementations/immutableList/PersistentVectorBuilder;->tailSize(I)I +Lkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector; +HSPLkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->()V +HSPLkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->([Ljava/lang/Object;)V +HSPLkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->access$getEMPTY$cp()Lkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector; +HSPLkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->add(Ljava/lang/Object;)Lkotlinx/collections/immutable/PersistentList; +HSPLkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->addAll(Ljava/util/Collection;)Lkotlinx/collections/immutable/PersistentList; +HSPLkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->builder()Lkotlinx/collections/immutable/PersistentList$Builder; +HSPLkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->get(I)Ljava/lang/Object; +HSPLkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->getSize()I +HSPLkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->listIterator(I)Ljava/util/ListIterator; +HSPLkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->removeAt(I)Lkotlinx/collections/immutable/PersistentList; +Lkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector$Companion; +HSPLkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector$Companion;->()V +HSPLkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector$Companion;->getEMPTY()Lkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector; +Lkotlinx/collections/immutable/implementations/immutableList/UtilsKt; +HSPLkotlinx/collections/immutable/implementations/immutableList/UtilsKt;->persistentVectorOf()Lkotlinx/collections/immutable/PersistentList; +Lkotlinx/collections/immutable/implementations/immutableMap/MapEntry; +HSPLkotlinx/collections/immutable/implementations/immutableMap/MapEntry;->(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLkotlinx/collections/immutable/implementations/immutableMap/MapEntry;->getKey()Ljava/lang/Object; +HSPLkotlinx/collections/immutable/implementations/immutableMap/MapEntry;->getValue()Ljava/lang/Object; +Lkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap; +HSPLkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->()V +HSPLkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->(Lkotlinx/collections/immutable/implementations/immutableMap/TrieNode;I)V +HSPLkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->access$getEMPTY$cp()Lkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap; +HSPLkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->getSize()I +HSPLkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Lkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap; +Lkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap$Companion; +HSPLkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap$Companion;->()V +HSPLkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap$Companion;->emptyOf$kotlinx_collections_immutable()Lkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap; +Lkotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->()V +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->(II[Ljava/lang/Object;)V +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->(II[Ljava/lang/Object;Lkotlinx/collections/immutable/internal/MutabilityOwnership;)V +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->access$getEMPTY$cp()Lkotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->asInsertResult()Lkotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult; +PLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->asUpdateResult()Lkotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult; +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->bufferMoveEntryToNode(IIILjava/lang/Object;Ljava/lang/Object;ILkotlinx/collections/immutable/internal/MutabilityOwnership;)[Ljava/lang/Object; +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->entryKeyIndex$kotlinx_collections_immutable(I)I +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->get(ILjava/lang/Object;I)Ljava/lang/Object; +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->hasEntryAt$kotlinx_collections_immutable(I)Z +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->hasNodeAt(I)Z +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->insertEntryAt(ILjava/lang/Object;Ljava/lang/Object;)Lkotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->keyAtIndex(I)Ljava/lang/Object; +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->makeNode(ILjava/lang/Object;Ljava/lang/Object;ILjava/lang/Object;Ljava/lang/Object;ILkotlinx/collections/immutable/internal/MutabilityOwnership;)Lkotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->nodeIndex$kotlinx_collections_immutable(I)I +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->put(ILjava/lang/Object;Ljava/lang/Object;I)Lkotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult; +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->updateNodeAtIndex(IILkotlinx/collections/immutable/implementations/immutableMap/TrieNode;)Lkotlinx/collections/immutable/implementations/immutableMap/TrieNode; +PLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->updateValueAtIndex(ILjava/lang/Object;)Lkotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->valueAtKeyIndex(I)Ljava/lang/Object; +Lkotlinx/collections/immutable/implementations/immutableMap/TrieNode$Companion; +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode$Companion;->()V +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode$Companion;->getEMPTY$kotlinx_collections_immutable()Lkotlinx/collections/immutable/implementations/immutableMap/TrieNode; +Lkotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult; +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult;->(Lkotlinx/collections/immutable/implementations/immutableMap/TrieNode;I)V +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult;->getNode()Lkotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult;->getSizeDelta()I +Lkotlinx/collections/immutable/implementations/immutableMap/TrieNodeKt; +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNodeKt;->access$insertEntryAtIndex([Ljava/lang/Object;ILjava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object; +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNodeKt;->access$replaceEntryWithNode([Ljava/lang/Object;IILkotlinx/collections/immutable/implementations/immutableMap/TrieNode;)[Ljava/lang/Object; +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNodeKt;->indexSegment(II)I +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNodeKt;->insertEntryAtIndex([Ljava/lang/Object;ILjava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object; +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNodeKt;->replaceEntryWithNode([Ljava/lang/Object;IILkotlinx/collections/immutable/implementations/immutableMap/TrieNode;)[Ljava/lang/Object; +Lkotlinx/collections/immutable/implementations/persistentOrderedMap/LinkedValue; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/LinkedValue;->(Ljava/lang/Object;)V +PLkotlinx/collections/immutable/implementations/persistentOrderedMap/LinkedValue;->(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/LinkedValue;->(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/LinkedValue;->getNext()Ljava/lang/Object; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/LinkedValue;->getValue()Ljava/lang/Object; +PLkotlinx/collections/immutable/implementations/persistentOrderedMap/LinkedValue;->withNext(Ljava/lang/Object;)Lkotlinx/collections/immutable/implementations/persistentOrderedMap/LinkedValue; +Lkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;->()V +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;->(Ljava/lang/Object;Ljava/lang/Object;Lkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;)V +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;->access$getEMPTY$cp()Lkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;->createEntries()Lkotlinx/collections/immutable/ImmutableSet; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;->equals(Ljava/lang/Object;)Z +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;->getEntries()Ljava/util/Set; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;->getFirstKey$kotlinx_collections_immutable()Ljava/lang/Object; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;->getHashMap$kotlinx_collections_immutable()Lkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;->getSize()I +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;->getValues()Ljava/util/Collection; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;->getValues()Lkotlinx/collections/immutable/ImmutableCollection; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Lkotlinx/collections/immutable/PersistentMap; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Lkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;->remove(Ljava/lang/Object;)Lkotlinx/collections/immutable/PersistentMap; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;->remove(Ljava/lang/Object;)Lkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap; +Lkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap$Companion; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap$Companion;->()V +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap$Companion;->emptyOf$kotlinx_collections_immutable()Lkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap; +Lkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapEntries; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapEntries;->(Lkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;)V +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapEntries;->getSize()I +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapEntries;->iterator()Ljava/util/Iterator; +Lkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapEntriesIterator; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapEntriesIterator;->(Lkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;)V +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapEntriesIterator;->hasNext()Z +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapEntriesIterator;->next()Ljava/lang/Object; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapEntriesIterator;->next()Ljava/util/Map$Entry; +Lkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapLinksIterator; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapLinksIterator;->(Ljava/lang/Object;Ljava/util/Map;)V +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapLinksIterator;->getNextKey$kotlinx_collections_immutable()Ljava/lang/Object; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapLinksIterator;->hasNext()Z +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapLinksIterator;->next()Lkotlinx/collections/immutable/implementations/persistentOrderedMap/LinkedValue; +Lkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapValues; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapValues;->(Lkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;)V +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapValues;->iterator()Ljava/util/Iterator; +Lkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapValuesIterator; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapValuesIterator;->(Lkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;)V +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapValuesIterator;->hasNext()Z +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapValuesIterator;->next()Ljava/lang/Object; +Lkotlinx/collections/immutable/internal/CommonFunctionsKt; +HSPLkotlinx/collections/immutable/internal/CommonFunctionsKt;->assert(Z)V +Lkotlinx/collections/immutable/internal/EndOfChain; +HSPLkotlinx/collections/immutable/internal/EndOfChain;->()V +HSPLkotlinx/collections/immutable/internal/EndOfChain;->()V +Lkotlinx/collections/immutable/internal/ListImplementation; +HSPLkotlinx/collections/immutable/internal/ListImplementation;->()V +HSPLkotlinx/collections/immutable/internal/ListImplementation;->()V +HSPLkotlinx/collections/immutable/internal/ListImplementation;->checkElementIndex$kotlinx_collections_immutable(II)V +HSPLkotlinx/collections/immutable/internal/ListImplementation;->checkPositionIndex$kotlinx_collections_immutable(II)V +HSPLkotlinx/collections/immutable/internal/ListImplementation;->checkRangeIndexes$kotlinx_collections_immutable(III)V +Lkotlinx/collections/immutable/internal/MutabilityOwnership; +HSPLkotlinx/collections/immutable/internal/MutabilityOwnership;->()V +Lkotlinx/coroutines/AbstractCoroutine; +HSPLkotlinx/coroutines/AbstractCoroutine;->(Lkotlin/coroutines/CoroutineContext;ZZ)V +HSPLkotlinx/coroutines/AbstractCoroutine;->afterResume(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/AbstractCoroutine;->cancellationExceptionMessage()Ljava/lang/String; +HSPLkotlinx/coroutines/AbstractCoroutine;->getContext()Lkotlin/coroutines/CoroutineContext; +HSPLkotlinx/coroutines/AbstractCoroutine;->getCoroutineContext()Lkotlin/coroutines/CoroutineContext; +HSPLkotlinx/coroutines/AbstractCoroutine;->isActive()Z +HSPLkotlinx/coroutines/AbstractCoroutine;->onCancelled(Ljava/lang/Throwable;Z)V +HSPLkotlinx/coroutines/AbstractCoroutine;->onCompleted(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/AbstractCoroutine;->onCompletionInternal(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/AbstractCoroutine;->resumeWith(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/AbstractCoroutine;->start(Lkotlinx/coroutines/CoroutineStart;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)V +Lkotlinx/coroutines/AbstractTimeSourceKt; +HSPLkotlinx/coroutines/AbstractTimeSourceKt;->()V +HSPLkotlinx/coroutines/AbstractTimeSourceKt;->getTimeSource()Lkotlinx/coroutines/AbstractTimeSource; +Lkotlinx/coroutines/Active; +HSPLkotlinx/coroutines/Active;->()V +HSPLkotlinx/coroutines/Active;->()V +Lkotlinx/coroutines/BlockingCoroutine; +HSPLkotlinx/coroutines/BlockingCoroutine;->(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Thread;Lkotlinx/coroutines/EventLoop;)V +HSPLkotlinx/coroutines/BlockingCoroutine;->afterCompletion(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/BlockingCoroutine;->joinBlocking()Ljava/lang/Object; +Lkotlinx/coroutines/BlockingEventLoop; +HSPLkotlinx/coroutines/BlockingEventLoop;->(Ljava/lang/Thread;)V +HSPLkotlinx/coroutines/BlockingEventLoop;->getThread()Ljava/lang/Thread; +Lkotlinx/coroutines/BuildersKt; +HSPLkotlinx/coroutines/BuildersKt;->async$default(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/Deferred; +HSPLkotlinx/coroutines/BuildersKt;->async(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/Deferred; +HSPLkotlinx/coroutines/BuildersKt;->launch$default(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/Job; +HSPLkotlinx/coroutines/BuildersKt;->launch(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/Job; +HSPLkotlinx/coroutines/BuildersKt;->runBlocking$default(Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/BuildersKt;->runBlocking(Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLkotlinx/coroutines/BuildersKt;->withContext(Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/BuildersKt__BuildersKt; +HSPLkotlinx/coroutines/BuildersKt__BuildersKt;->runBlocking$default(Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/BuildersKt__BuildersKt;->runBlocking(Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +Lkotlinx/coroutines/BuildersKt__Builders_commonKt; +HSPLkotlinx/coroutines/BuildersKt__Builders_commonKt;->async$default(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/Deferred; +HSPLkotlinx/coroutines/BuildersKt__Builders_commonKt;->async(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/Deferred; +HSPLkotlinx/coroutines/BuildersKt__Builders_commonKt;->launch$default(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/Job; +HSPLkotlinx/coroutines/BuildersKt__Builders_commonKt;->launch(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/Job; +HSPLkotlinx/coroutines/BuildersKt__Builders_commonKt;->withContext(Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/CancelHandler; +HSPLkotlinx/coroutines/CancelHandler;->()V +Lkotlinx/coroutines/CancelHandlerBase; +HSPLkotlinx/coroutines/CancelHandlerBase;->()V +Lkotlinx/coroutines/CancellableContinuation; +Lkotlinx/coroutines/CancellableContinuation$DefaultImpls; +Lkotlinx/coroutines/CancellableContinuationImpl; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->()V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->(Lkotlin/coroutines/Continuation;I)V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->callCancelHandler(Lkotlinx/coroutines/CancelHandler;Ljava/lang/Throwable;)V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->callSegmentOnCancellation(Lkotlinx/coroutines/internal/Segment;Ljava/lang/Throwable;)V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->cancel(Ljava/lang/Throwable;)Z +HSPLkotlinx/coroutines/CancellableContinuationImpl;->cancelCompletedResult$kotlinx_coroutines_core(Ljava/lang/Object;Ljava/lang/Throwable;)V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->cancelLater(Ljava/lang/Throwable;)Z +HSPLkotlinx/coroutines/CancellableContinuationImpl;->completeResume(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->detachChild$kotlinx_coroutines_core()V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->detachChildIfNonResuable()V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->dispatchResume(I)V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->getContext()Lkotlin/coroutines/CoroutineContext; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->getContinuationCancellationCause(Lkotlinx/coroutines/Job;)Ljava/lang/Throwable; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->getDelegate$kotlinx_coroutines_core()Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->getExceptionalResult$kotlinx_coroutines_core(Ljava/lang/Object;)Ljava/lang/Throwable; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->getParentHandle()Lkotlinx/coroutines/DisposableHandle; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->getResult()Ljava/lang/Object; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->getState$kotlinx_coroutines_core()Ljava/lang/Object; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->getSuccessfulResult$kotlinx_coroutines_core(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->get_decisionAndIndex$volatile$FU()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->get_parentHandle$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->get_state$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->initCancellability()V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->installParentHandle()Lkotlinx/coroutines/DisposableHandle; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->invokeOnCancellation(Lkotlin/jvm/functions/Function1;)V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->invokeOnCancellation(Lkotlinx/coroutines/internal/Segment;I)V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->invokeOnCancellationImpl(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->isCompleted()Z +HSPLkotlinx/coroutines/CancellableContinuationImpl;->isReusable()Z +HSPLkotlinx/coroutines/CancellableContinuationImpl;->makeCancelHandler(Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/CancelHandler; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->parentCancelled$kotlinx_coroutines_core(Ljava/lang/Throwable;)V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->releaseClaimedReusableContinuation$kotlinx_coroutines_core()V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->resetStateReusable()Z +HSPLkotlinx/coroutines/CancellableContinuationImpl;->resume(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->resumeImpl$default(Lkotlinx/coroutines/CancellableContinuationImpl;Ljava/lang/Object;ILkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->resumeImpl(Ljava/lang/Object;ILkotlin/jvm/functions/Function1;)V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->resumeUndispatched(Lkotlinx/coroutines/CoroutineDispatcher;Ljava/lang/Object;)V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->resumeWith(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->resumedState(Lkotlinx/coroutines/NotCompleted;Ljava/lang/Object;ILkotlin/jvm/functions/Function1;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->takeState$kotlinx_coroutines_core()Ljava/lang/Object; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->tryResume()Z +HSPLkotlinx/coroutines/CancellableContinuationImpl;->tryResume(Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->tryResumeImpl(Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->trySuspend()Z +Lkotlinx/coroutines/CancellableContinuationImplKt; +HSPLkotlinx/coroutines/CancellableContinuationImplKt;->()V +Lkotlinx/coroutines/CancellableContinuationKt; +HSPLkotlinx/coroutines/CancellableContinuationKt;->disposeOnCancellation(Lkotlinx/coroutines/CancellableContinuation;Lkotlinx/coroutines/DisposableHandle;)V +HSPLkotlinx/coroutines/CancellableContinuationKt;->getOrCreateCancellableContinuation(Lkotlin/coroutines/Continuation;)Lkotlinx/coroutines/CancellableContinuationImpl; +Lkotlinx/coroutines/CancelledContinuation; +HSPLkotlinx/coroutines/CancelledContinuation;->()V +HSPLkotlinx/coroutines/CancelledContinuation;->(Lkotlin/coroutines/Continuation;Ljava/lang/Throwable;Z)V +HSPLkotlinx/coroutines/CancelledContinuation;->get_resumed$volatile$FU()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; +HSPLkotlinx/coroutines/CancelledContinuation;->makeResumed()Z +Lkotlinx/coroutines/ChildContinuation; +HSPLkotlinx/coroutines/ChildContinuation;->(Lkotlinx/coroutines/CancellableContinuationImpl;)V +HSPLkotlinx/coroutines/ChildContinuation;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/ChildContinuation;->invoke(Ljava/lang/Throwable;)V +Lkotlinx/coroutines/ChildHandle; +Lkotlinx/coroutines/ChildHandleNode; +HSPLkotlinx/coroutines/ChildHandleNode;->(Lkotlinx/coroutines/ChildJob;)V +HSPLkotlinx/coroutines/ChildHandleNode;->childCancelled(Ljava/lang/Throwable;)Z +HSPLkotlinx/coroutines/ChildHandleNode;->getParent()Lkotlinx/coroutines/Job; +PLkotlinx/coroutines/ChildHandleNode;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/ChildHandleNode;->invoke(Ljava/lang/Throwable;)V +Lkotlinx/coroutines/ChildJob; +Lkotlinx/coroutines/CompletableJob; +Lkotlinx/coroutines/CompletedContinuation; +HSPLkotlinx/coroutines/CompletedContinuation;->(Ljava/lang/Object;Lkotlinx/coroutines/CancelHandler;Lkotlin/jvm/functions/Function1;Ljava/lang/Object;Ljava/lang/Throwable;)V +HSPLkotlinx/coroutines/CompletedContinuation;->(Ljava/lang/Object;Lkotlinx/coroutines/CancelHandler;Lkotlin/jvm/functions/Function1;Ljava/lang/Object;Ljava/lang/Throwable;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/coroutines/CompletedContinuation;->copy$default(Lkotlinx/coroutines/CompletedContinuation;Ljava/lang/Object;Lkotlinx/coroutines/CancelHandler;Lkotlin/jvm/functions/Function1;Ljava/lang/Object;Ljava/lang/Throwable;ILjava/lang/Object;)Lkotlinx/coroutines/CompletedContinuation; +HSPLkotlinx/coroutines/CompletedContinuation;->copy(Ljava/lang/Object;Lkotlinx/coroutines/CancelHandler;Lkotlin/jvm/functions/Function1;Ljava/lang/Object;Ljava/lang/Throwable;)Lkotlinx/coroutines/CompletedContinuation; +HSPLkotlinx/coroutines/CompletedContinuation;->getCancelled()Z +HSPLkotlinx/coroutines/CompletedContinuation;->invokeHandlers(Lkotlinx/coroutines/CancellableContinuationImpl;Ljava/lang/Throwable;)V +Lkotlinx/coroutines/CompletedExceptionally; +HSPLkotlinx/coroutines/CompletedExceptionally;->()V +HSPLkotlinx/coroutines/CompletedExceptionally;->(Ljava/lang/Throwable;Z)V +HSPLkotlinx/coroutines/CompletedExceptionally;->(Ljava/lang/Throwable;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/coroutines/CompletedExceptionally;->getHandled()Z +HSPLkotlinx/coroutines/CompletedExceptionally;->get_handled$volatile$FU()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; +HSPLkotlinx/coroutines/CompletedExceptionally;->makeHandled()Z +Lkotlinx/coroutines/CompletionHandlerBase; +HSPLkotlinx/coroutines/CompletionHandlerBase;->()V +Lkotlinx/coroutines/CompletionStateKt; +HSPLkotlinx/coroutines/CompletionStateKt;->recoverResult(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/CompletionStateKt;->toState$default(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/CompletionStateKt;->toState(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +HSPLkotlinx/coroutines/CompletionStateKt;->toState(Ljava/lang/Object;Lkotlinx/coroutines/CancellableContinuation;)Ljava/lang/Object; +Lkotlinx/coroutines/CopyableThreadContextElement; +Lkotlinx/coroutines/CopyableThrowable; +Lkotlinx/coroutines/CoroutineContextKt; +HSPLkotlinx/coroutines/CoroutineContextKt;->foldCopies(Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/CoroutineContext;Z)Lkotlin/coroutines/CoroutineContext; +HSPLkotlinx/coroutines/CoroutineContextKt;->hasCopyableElements(Lkotlin/coroutines/CoroutineContext;)Z +HSPLkotlinx/coroutines/CoroutineContextKt;->newCoroutineContext(Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext; +HSPLkotlinx/coroutines/CoroutineContextKt;->newCoroutineContext(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext; +PLkotlinx/coroutines/CoroutineContextKt;->undispatchedCompletion(Lkotlin/coroutines/jvm/internal/CoroutineStackFrame;)Lkotlinx/coroutines/UndispatchedCoroutine; +PLkotlinx/coroutines/CoroutineContextKt;->updateUndispatchedCompletion(Lkotlin/coroutines/Continuation;Lkotlin/coroutines/CoroutineContext;Ljava/lang/Object;)Lkotlinx/coroutines/UndispatchedCoroutine; +Lkotlinx/coroutines/CoroutineContextKt$hasCopyableElements$1; +HSPLkotlinx/coroutines/CoroutineContextKt$hasCopyableElements$1;->()V +HSPLkotlinx/coroutines/CoroutineContextKt$hasCopyableElements$1;->()V +HSPLkotlinx/coroutines/CoroutineContextKt$hasCopyableElements$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/CoroutineContextKt$hasCopyableElements$1;->invoke(ZLkotlin/coroutines/CoroutineContext$Element;)Ljava/lang/Boolean; +Lkotlinx/coroutines/CoroutineDispatcher; +HSPLkotlinx/coroutines/CoroutineDispatcher;->()V +HSPLkotlinx/coroutines/CoroutineDispatcher;->()V +HSPLkotlinx/coroutines/CoroutineDispatcher;->dispatchYield(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Runnable;)V +HSPLkotlinx/coroutines/CoroutineDispatcher;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLkotlinx/coroutines/CoroutineDispatcher;->interceptContinuation(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/CoroutineDispatcher;->isDispatchNeeded(Lkotlin/coroutines/CoroutineContext;)Z +HSPLkotlinx/coroutines/CoroutineDispatcher;->limitedParallelism(I)Lkotlinx/coroutines/CoroutineDispatcher; +HSPLkotlinx/coroutines/CoroutineDispatcher;->minusKey(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext; +HSPLkotlinx/coroutines/CoroutineDispatcher;->releaseInterceptedContinuation(Lkotlin/coroutines/Continuation;)V +Lkotlinx/coroutines/CoroutineDispatcher$Key; +HSPLkotlinx/coroutines/CoroutineDispatcher$Key;->()V +HSPLkotlinx/coroutines/CoroutineDispatcher$Key;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/coroutines/CoroutineDispatcher$Key$1; +HSPLkotlinx/coroutines/CoroutineDispatcher$Key$1;->()V +HSPLkotlinx/coroutines/CoroutineDispatcher$Key$1;->()V +Lkotlinx/coroutines/CoroutineExceptionHandler; +HSPLkotlinx/coroutines/CoroutineExceptionHandler;->()V +Lkotlinx/coroutines/CoroutineExceptionHandler$Key; +HSPLkotlinx/coroutines/CoroutineExceptionHandler$Key;->()V +HSPLkotlinx/coroutines/CoroutineExceptionHandler$Key;->()V +Lkotlinx/coroutines/CoroutineId; +Lkotlinx/coroutines/CoroutineName; +HSPLkotlinx/coroutines/CoroutineName;->()V +HSPLkotlinx/coroutines/CoroutineName;->(Ljava/lang/String;)V +Lkotlinx/coroutines/CoroutineName$Key; +HSPLkotlinx/coroutines/CoroutineName$Key;->()V +HSPLkotlinx/coroutines/CoroutineName$Key;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/coroutines/CoroutineScope; +Lkotlinx/coroutines/CoroutineScopeKt; +HSPLkotlinx/coroutines/CoroutineScopeKt;->CoroutineScope(Lkotlin/coroutines/CoroutineContext;)Lkotlinx/coroutines/CoroutineScope; +HSPLkotlinx/coroutines/CoroutineScopeKt;->MainScope()Lkotlinx/coroutines/CoroutineScope; +HSPLkotlinx/coroutines/CoroutineScopeKt;->cancel(Lkotlinx/coroutines/CoroutineScope;Ljava/util/concurrent/CancellationException;)V +HSPLkotlinx/coroutines/CoroutineScopeKt;->coroutineScope(Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/CoroutineScopeKt;->ensureActive(Lkotlinx/coroutines/CoroutineScope;)V +HSPLkotlinx/coroutines/CoroutineScopeKt;->isActive(Lkotlinx/coroutines/CoroutineScope;)Z +HSPLkotlinx/coroutines/CoroutineScopeKt;->plus(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;)Lkotlinx/coroutines/CoroutineScope; +Lkotlinx/coroutines/CoroutineStart; +HSPLkotlinx/coroutines/CoroutineStart;->$values()[Lkotlinx/coroutines/CoroutineStart; +HSPLkotlinx/coroutines/CoroutineStart;->()V +HSPLkotlinx/coroutines/CoroutineStart;->(Ljava/lang/String;I)V +HSPLkotlinx/coroutines/CoroutineStart;->invoke(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/CoroutineStart;->isLazy()Z +HSPLkotlinx/coroutines/CoroutineStart;->values()[Lkotlinx/coroutines/CoroutineStart; +Lkotlinx/coroutines/CoroutineStart$WhenMappings; +HSPLkotlinx/coroutines/CoroutineStart$WhenMappings;->()V +Lkotlinx/coroutines/DebugKt; +HSPLkotlinx/coroutines/DebugKt;->()V +HSPLkotlinx/coroutines/DebugKt;->getASSERTIONS_ENABLED()Z +HSPLkotlinx/coroutines/DebugKt;->getDEBUG()Z +HSPLkotlinx/coroutines/DebugKt;->getRECOVER_STACK_TRACES()Z +Lkotlinx/coroutines/DebugStringsKt; +HSPLkotlinx/coroutines/DebugStringsKt;->getClassSimpleName(Ljava/lang/Object;)Ljava/lang/String; +Lkotlinx/coroutines/DefaultExecutor; +HSPLkotlinx/coroutines/DefaultExecutor;->()V +HSPLkotlinx/coroutines/DefaultExecutor;->()V +PLkotlinx/coroutines/DefaultExecutor;->acknowledgeShutdownIfNeeded()V +HSPLkotlinx/coroutines/DefaultExecutor;->createThreadSync()Ljava/lang/Thread; +HSPLkotlinx/coroutines/DefaultExecutor;->getThread()Ljava/lang/Thread; +HSPLkotlinx/coroutines/DefaultExecutor;->invokeOnTimeout(JLjava/lang/Runnable;Lkotlin/coroutines/CoroutineContext;)Lkotlinx/coroutines/DisposableHandle; +HSPLkotlinx/coroutines/DefaultExecutor;->isShutdownRequested()Z +HSPLkotlinx/coroutines/DefaultExecutor;->notifyStartup()Z +HSPLkotlinx/coroutines/DefaultExecutor;->run()V +Lkotlinx/coroutines/DefaultExecutorKt; +HSPLkotlinx/coroutines/DefaultExecutorKt;->()V +HSPLkotlinx/coroutines/DefaultExecutorKt;->getDefaultDelay()Lkotlinx/coroutines/Delay; +HSPLkotlinx/coroutines/DefaultExecutorKt;->initializeDefaultDelay()Lkotlinx/coroutines/Delay; +Lkotlinx/coroutines/Deferred; +Lkotlinx/coroutines/DeferredCoroutine; +HSPLkotlinx/coroutines/DeferredCoroutine;->(Lkotlin/coroutines/CoroutineContext;Z)V +HSPLkotlinx/coroutines/DeferredCoroutine;->await$suspendImpl(Lkotlinx/coroutines/DeferredCoroutine;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/DeferredCoroutine;->await(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/Delay; +Lkotlinx/coroutines/DelayKt; +HSPLkotlinx/coroutines/DelayKt;->awaitCancellation(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/DelayKt;->delay(JLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/DelayKt;->delay-VtjQ1oo(JLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/DelayKt;->getDelay(Lkotlin/coroutines/CoroutineContext;)Lkotlinx/coroutines/Delay; +HSPLkotlinx/coroutines/DelayKt;->toDelayMillis-LRDsOJo(J)J +Lkotlinx/coroutines/DelayKt$awaitCancellation$1; +HSPLkotlinx/coroutines/DelayKt$awaitCancellation$1;->(Lkotlin/coroutines/Continuation;)V +Lkotlinx/coroutines/DispatchedCoroutine; +HSPLkotlinx/coroutines/DispatchedCoroutine;->()V +HSPLkotlinx/coroutines/DispatchedCoroutine;->(Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/DispatchedCoroutine;->afterCompletion(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/DispatchedCoroutine;->afterResume(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/DispatchedCoroutine;->getResult$kotlinx_coroutines_core()Ljava/lang/Object; +HSPLkotlinx/coroutines/DispatchedCoroutine;->get_decision$volatile$FU$kotlinx_coroutines_core()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; +HSPLkotlinx/coroutines/DispatchedCoroutine;->tryResume()Z +HSPLkotlinx/coroutines/DispatchedCoroutine;->trySuspend()Z +Lkotlinx/coroutines/DispatchedTask; +HSPLkotlinx/coroutines/DispatchedTask;->(I)V +HSPLkotlinx/coroutines/DispatchedTask;->getExceptionalResult$kotlinx_coroutines_core(Ljava/lang/Object;)Ljava/lang/Throwable; +HSPLkotlinx/coroutines/DispatchedTask;->getSuccessfulResult$kotlinx_coroutines_core(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/DispatchedTask;->handleFatalException$kotlinx_coroutines_core(Ljava/lang/Throwable;Ljava/lang/Throwable;)V +HSPLkotlinx/coroutines/DispatchedTask;->run()V +Lkotlinx/coroutines/DispatchedTaskKt; +HSPLkotlinx/coroutines/DispatchedTaskKt;->dispatch(Lkotlinx/coroutines/DispatchedTask;I)V +HSPLkotlinx/coroutines/DispatchedTaskKt;->isCancellableMode(I)Z +HSPLkotlinx/coroutines/DispatchedTaskKt;->isReusableMode(I)Z +HSPLkotlinx/coroutines/DispatchedTaskKt;->resume(Lkotlinx/coroutines/DispatchedTask;Lkotlin/coroutines/Continuation;Z)V +HSPLkotlinx/coroutines/DispatchedTaskKt;->resumeUnconfined(Lkotlinx/coroutines/DispatchedTask;)V +Lkotlinx/coroutines/DispatcherExecutor; +Lkotlinx/coroutines/Dispatchers; +HSPLkotlinx/coroutines/Dispatchers;->()V +HSPLkotlinx/coroutines/Dispatchers;->()V +HSPLkotlinx/coroutines/Dispatchers;->getDefault()Lkotlinx/coroutines/CoroutineDispatcher; +HSPLkotlinx/coroutines/Dispatchers;->getIO()Lkotlinx/coroutines/CoroutineDispatcher; +HSPLkotlinx/coroutines/Dispatchers;->getMain()Lkotlinx/coroutines/MainCoroutineDispatcher; +Lkotlinx/coroutines/DisposableHandle; +Lkotlinx/coroutines/DisposeOnCancel; +HSPLkotlinx/coroutines/DisposeOnCancel;->(Lkotlinx/coroutines/DisposableHandle;)V +HSPLkotlinx/coroutines/DisposeOnCancel;->invoke(Ljava/lang/Throwable;)V +Lkotlinx/coroutines/Empty; +HSPLkotlinx/coroutines/Empty;->(Z)V +HSPLkotlinx/coroutines/Empty;->getList()Lkotlinx/coroutines/NodeList; +HSPLkotlinx/coroutines/Empty;->isActive()Z +Lkotlinx/coroutines/EventLoop; +HSPLkotlinx/coroutines/EventLoop;->()V +HSPLkotlinx/coroutines/EventLoop;->decrementUseCount$default(Lkotlinx/coroutines/EventLoop;ZILjava/lang/Object;)V +HSPLkotlinx/coroutines/EventLoop;->decrementUseCount(Z)V +HSPLkotlinx/coroutines/EventLoop;->delta(Z)J +HSPLkotlinx/coroutines/EventLoop;->dispatchUnconfined(Lkotlinx/coroutines/DispatchedTask;)V +HSPLkotlinx/coroutines/EventLoop;->getNextTime()J +HSPLkotlinx/coroutines/EventLoop;->incrementUseCount$default(Lkotlinx/coroutines/EventLoop;ZILjava/lang/Object;)V +HSPLkotlinx/coroutines/EventLoop;->incrementUseCount(Z)V +HSPLkotlinx/coroutines/EventLoop;->isUnconfinedLoopActive()Z +HSPLkotlinx/coroutines/EventLoop;->isUnconfinedQueueEmpty()Z +HSPLkotlinx/coroutines/EventLoop;->processUnconfinedEvent()Z +Lkotlinx/coroutines/EventLoopImplBase; +HSPLkotlinx/coroutines/EventLoopImplBase;->()V +HSPLkotlinx/coroutines/EventLoopImplBase;->()V +HSPLkotlinx/coroutines/EventLoopImplBase;->access$isCompleted(Lkotlinx/coroutines/EventLoopImplBase;)Z +HSPLkotlinx/coroutines/EventLoopImplBase;->closeQueue()V +HSPLkotlinx/coroutines/EventLoopImplBase;->dequeue()Ljava/lang/Runnable; +HSPLkotlinx/coroutines/EventLoopImplBase;->dispatch(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Runnable;)V +HSPLkotlinx/coroutines/EventLoopImplBase;->enqueue(Ljava/lang/Runnable;)V +HSPLkotlinx/coroutines/EventLoopImplBase;->enqueueImpl(Ljava/lang/Runnable;)Z +HSPLkotlinx/coroutines/EventLoopImplBase;->getNextTime()J +HSPLkotlinx/coroutines/EventLoopImplBase;->get_delayed$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/EventLoopImplBase;->get_isCompleted$volatile$FU()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; +HSPLkotlinx/coroutines/EventLoopImplBase;->get_queue$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/EventLoopImplBase;->isCompleted()Z +HSPLkotlinx/coroutines/EventLoopImplBase;->isEmpty()Z +HSPLkotlinx/coroutines/EventLoopImplBase;->processNextEvent()J +HSPLkotlinx/coroutines/EventLoopImplBase;->rescheduleAllDelayed()V +HSPLkotlinx/coroutines/EventLoopImplBase;->schedule(JLkotlinx/coroutines/EventLoopImplBase$DelayedTask;)V +HSPLkotlinx/coroutines/EventLoopImplBase;->scheduleImpl(JLkotlinx/coroutines/EventLoopImplBase$DelayedTask;)I +HSPLkotlinx/coroutines/EventLoopImplBase;->scheduleInvokeOnTimeout(JLjava/lang/Runnable;)Lkotlinx/coroutines/DisposableHandle; +HSPLkotlinx/coroutines/EventLoopImplBase;->scheduleResumeAfterDelay(JLkotlinx/coroutines/CancellableContinuation;)V +HSPLkotlinx/coroutines/EventLoopImplBase;->setCompleted(Z)V +HSPLkotlinx/coroutines/EventLoopImplBase;->shouldUnpark(Lkotlinx/coroutines/EventLoopImplBase$DelayedTask;)Z +HSPLkotlinx/coroutines/EventLoopImplBase;->shutdown()V +Lkotlinx/coroutines/EventLoopImplBase$DelayedResumeTask; +HSPLkotlinx/coroutines/EventLoopImplBase$DelayedResumeTask;->(Lkotlinx/coroutines/EventLoopImplBase;JLkotlinx/coroutines/CancellableContinuation;)V +HSPLkotlinx/coroutines/EventLoopImplBase$DelayedResumeTask;->run()V +Lkotlinx/coroutines/EventLoopImplBase$DelayedRunnableTask; +HSPLkotlinx/coroutines/EventLoopImplBase$DelayedRunnableTask;->(JLjava/lang/Runnable;)V +HSPLkotlinx/coroutines/EventLoopImplBase$DelayedRunnableTask;->run()V +Lkotlinx/coroutines/EventLoopImplBase$DelayedTask; +HSPLkotlinx/coroutines/EventLoopImplBase$DelayedTask;->(J)V +HSPLkotlinx/coroutines/EventLoopImplBase$DelayedTask;->compareTo(Ljava/lang/Object;)I +HSPLkotlinx/coroutines/EventLoopImplBase$DelayedTask;->compareTo(Lkotlinx/coroutines/EventLoopImplBase$DelayedTask;)I +HSPLkotlinx/coroutines/EventLoopImplBase$DelayedTask;->dispose()V +HSPLkotlinx/coroutines/EventLoopImplBase$DelayedTask;->getHeap()Lkotlinx/coroutines/internal/ThreadSafeHeap; +HSPLkotlinx/coroutines/EventLoopImplBase$DelayedTask;->getIndex()I +HSPLkotlinx/coroutines/EventLoopImplBase$DelayedTask;->scheduleTask(JLkotlinx/coroutines/EventLoopImplBase$DelayedTaskQueue;Lkotlinx/coroutines/EventLoopImplBase;)I +HSPLkotlinx/coroutines/EventLoopImplBase$DelayedTask;->setHeap(Lkotlinx/coroutines/internal/ThreadSafeHeap;)V +HSPLkotlinx/coroutines/EventLoopImplBase$DelayedTask;->setIndex(I)V +HSPLkotlinx/coroutines/EventLoopImplBase$DelayedTask;->timeToExecute(J)Z +Lkotlinx/coroutines/EventLoopImplBase$DelayedTaskQueue; +HSPLkotlinx/coroutines/EventLoopImplBase$DelayedTaskQueue;->(J)V +Lkotlinx/coroutines/EventLoopImplPlatform; +HSPLkotlinx/coroutines/EventLoopImplPlatform;->()V +HSPLkotlinx/coroutines/EventLoopImplPlatform;->unpark()V +Lkotlinx/coroutines/EventLoopKt; +HSPLkotlinx/coroutines/EventLoopKt;->createEventLoop()Lkotlinx/coroutines/EventLoop; +Lkotlinx/coroutines/EventLoop_commonKt; +HSPLkotlinx/coroutines/EventLoop_commonKt;->()V +HSPLkotlinx/coroutines/EventLoop_commonKt;->access$getCLOSED_EMPTY$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/EventLoop_commonKt;->access$getDISPOSED_TASK$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/EventLoop_commonKt;->delayToNanos(J)J +Lkotlinx/coroutines/ExecutorCoroutineDispatcher; +HSPLkotlinx/coroutines/ExecutorCoroutineDispatcher;->()V +HSPLkotlinx/coroutines/ExecutorCoroutineDispatcher;->()V +Lkotlinx/coroutines/ExecutorCoroutineDispatcher$Key; +HSPLkotlinx/coroutines/ExecutorCoroutineDispatcher$Key;->()V +HSPLkotlinx/coroutines/ExecutorCoroutineDispatcher$Key;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/coroutines/ExecutorCoroutineDispatcher$Key$1; +HSPLkotlinx/coroutines/ExecutorCoroutineDispatcher$Key$1;->()V +HSPLkotlinx/coroutines/ExecutorCoroutineDispatcher$Key$1;->()V +Lkotlinx/coroutines/ExecutorCoroutineDispatcherImpl; +HSPLkotlinx/coroutines/ExecutorCoroutineDispatcherImpl;->(Ljava/util/concurrent/Executor;)V +HSPLkotlinx/coroutines/ExecutorCoroutineDispatcherImpl;->dispatch(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Runnable;)V +HSPLkotlinx/coroutines/ExecutorCoroutineDispatcherImpl;->getExecutor()Ljava/util/concurrent/Executor; +Lkotlinx/coroutines/ExecutorsKt; +HSPLkotlinx/coroutines/ExecutorsKt;->from(Ljava/util/concurrent/Executor;)Lkotlinx/coroutines/CoroutineDispatcher; +Lkotlinx/coroutines/GlobalScope; +HSPLkotlinx/coroutines/GlobalScope;->()V +HSPLkotlinx/coroutines/GlobalScope;->()V +HSPLkotlinx/coroutines/GlobalScope;->getCoroutineContext()Lkotlin/coroutines/CoroutineContext; +Lkotlinx/coroutines/InactiveNodeList; +Lkotlinx/coroutines/Incomplete; +Lkotlinx/coroutines/IncompleteStateBox; +Lkotlinx/coroutines/InvokeOnCancel; +HSPLkotlinx/coroutines/InvokeOnCancel;->(Lkotlin/jvm/functions/Function1;)V +HSPLkotlinx/coroutines/InvokeOnCancel;->invoke(Ljava/lang/Throwable;)V +Lkotlinx/coroutines/InvokeOnCancelling; +Lkotlinx/coroutines/InvokeOnCompletion; +HSPLkotlinx/coroutines/InvokeOnCompletion;->(Lkotlin/jvm/functions/Function1;)V +Lkotlinx/coroutines/Job; +HSPLkotlinx/coroutines/Job;->()V +Lkotlinx/coroutines/Job$DefaultImpls; +HSPLkotlinx/coroutines/Job$DefaultImpls;->cancel$default(Lkotlinx/coroutines/Job;Ljava/util/concurrent/CancellationException;ILjava/lang/Object;)V +HSPLkotlinx/coroutines/Job$DefaultImpls;->fold(Lkotlinx/coroutines/Job;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLkotlinx/coroutines/Job$DefaultImpls;->get(Lkotlinx/coroutines/Job;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLkotlinx/coroutines/Job$DefaultImpls;->invokeOnCompletion$default(Lkotlinx/coroutines/Job;ZZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lkotlinx/coroutines/DisposableHandle; +HSPLkotlinx/coroutines/Job$DefaultImpls;->minusKey(Lkotlinx/coroutines/Job;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext; +HSPLkotlinx/coroutines/Job$DefaultImpls;->plus(Lkotlinx/coroutines/Job;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext; +Lkotlinx/coroutines/Job$Key; +HSPLkotlinx/coroutines/Job$Key;->()V +HSPLkotlinx/coroutines/Job$Key;->()V +Lkotlinx/coroutines/JobCancellationException; +PLkotlinx/coroutines/JobCancellationException;->(Ljava/lang/String;Ljava/lang/Throwable;Lkotlinx/coroutines/Job;)V +HSPLkotlinx/coroutines/JobCancellationException;->equals(Ljava/lang/Object;)Z +PLkotlinx/coroutines/JobCancellationException;->fillInStackTrace()Ljava/lang/Throwable; +Lkotlinx/coroutines/JobCancellingNode; +HSPLkotlinx/coroutines/JobCancellingNode;->()V +Lkotlinx/coroutines/JobImpl; +HSPLkotlinx/coroutines/JobImpl;->(Lkotlinx/coroutines/Job;)V +HSPLkotlinx/coroutines/JobImpl;->getHandlesException$kotlinx_coroutines_core()Z +HSPLkotlinx/coroutines/JobImpl;->getOnCancelComplete$kotlinx_coroutines_core()Z +HSPLkotlinx/coroutines/JobImpl;->handlesException()Z +Lkotlinx/coroutines/JobKt; +HSPLkotlinx/coroutines/JobKt;->Job$default(Lkotlinx/coroutines/Job;ILjava/lang/Object;)Lkotlinx/coroutines/CompletableJob; +HSPLkotlinx/coroutines/JobKt;->Job(Lkotlinx/coroutines/Job;)Lkotlinx/coroutines/CompletableJob; +HSPLkotlinx/coroutines/JobKt;->ensureActive(Lkotlin/coroutines/CoroutineContext;)V +HSPLkotlinx/coroutines/JobKt;->ensureActive(Lkotlinx/coroutines/Job;)V +HSPLkotlinx/coroutines/JobKt;->getJob(Lkotlin/coroutines/CoroutineContext;)Lkotlinx/coroutines/Job; +HSPLkotlinx/coroutines/JobKt;->isActive(Lkotlin/coroutines/CoroutineContext;)Z +Lkotlinx/coroutines/JobKt__JobKt; +HSPLkotlinx/coroutines/JobKt__JobKt;->Job$default(Lkotlinx/coroutines/Job;ILjava/lang/Object;)Lkotlinx/coroutines/CompletableJob; +HSPLkotlinx/coroutines/JobKt__JobKt;->Job(Lkotlinx/coroutines/Job;)Lkotlinx/coroutines/CompletableJob; +HSPLkotlinx/coroutines/JobKt__JobKt;->ensureActive(Lkotlin/coroutines/CoroutineContext;)V +HSPLkotlinx/coroutines/JobKt__JobKt;->ensureActive(Lkotlinx/coroutines/Job;)V +HSPLkotlinx/coroutines/JobKt__JobKt;->getJob(Lkotlin/coroutines/CoroutineContext;)Lkotlinx/coroutines/Job; +HSPLkotlinx/coroutines/JobKt__JobKt;->isActive(Lkotlin/coroutines/CoroutineContext;)Z +Lkotlinx/coroutines/JobNode; +HSPLkotlinx/coroutines/JobNode;->()V +HSPLkotlinx/coroutines/JobNode;->dispose()V +HSPLkotlinx/coroutines/JobNode;->getJob()Lkotlinx/coroutines/JobSupport; +HSPLkotlinx/coroutines/JobNode;->getList()Lkotlinx/coroutines/NodeList; +HSPLkotlinx/coroutines/JobNode;->isActive()Z +HSPLkotlinx/coroutines/JobNode;->setJob(Lkotlinx/coroutines/JobSupport;)V +Lkotlinx/coroutines/JobSupport; +HSPLkotlinx/coroutines/JobSupport;->()V +HSPLkotlinx/coroutines/JobSupport;->(Z)V +PLkotlinx/coroutines/JobSupport;->access$cancellationExceptionMessage(Lkotlinx/coroutines/JobSupport;)Ljava/lang/String; +HSPLkotlinx/coroutines/JobSupport;->access$continueCompleting(Lkotlinx/coroutines/JobSupport;Lkotlinx/coroutines/JobSupport$Finishing;Lkotlinx/coroutines/ChildHandleNode;Ljava/lang/Object;)V +HSPLkotlinx/coroutines/JobSupport;->addLastAtomic(Ljava/lang/Object;Lkotlinx/coroutines/NodeList;Lkotlinx/coroutines/JobNode;)Z +HSPLkotlinx/coroutines/JobSupport;->addSuppressedExceptions(Ljava/lang/Throwable;Ljava/util/List;)V +HSPLkotlinx/coroutines/JobSupport;->afterCompletion(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/JobSupport;->attachChild(Lkotlinx/coroutines/ChildJob;)Lkotlinx/coroutines/ChildHandle; +HSPLkotlinx/coroutines/JobSupport;->awaitInternal(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/JobSupport;->awaitSuspend(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/JobSupport;->cancel(Ljava/util/concurrent/CancellationException;)V +HSPLkotlinx/coroutines/JobSupport;->cancelCoroutine(Ljava/lang/Throwable;)Z +HSPLkotlinx/coroutines/JobSupport;->cancelImpl$kotlinx_coroutines_core(Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/JobSupport;->cancelInternal(Ljava/lang/Throwable;)V +HSPLkotlinx/coroutines/JobSupport;->cancelMakeCompleting(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/JobSupport;->cancelParent(Ljava/lang/Throwable;)Z +HSPLkotlinx/coroutines/JobSupport;->cancellationExceptionMessage()Ljava/lang/String; +HSPLkotlinx/coroutines/JobSupport;->childCancelled(Ljava/lang/Throwable;)Z +HSPLkotlinx/coroutines/JobSupport;->completeStateFinalization(Lkotlinx/coroutines/Incomplete;Ljava/lang/Object;)V +HSPLkotlinx/coroutines/JobSupport;->continueCompleting(Lkotlinx/coroutines/JobSupport$Finishing;Lkotlinx/coroutines/ChildHandleNode;Ljava/lang/Object;)V +HSPLkotlinx/coroutines/JobSupport;->createCauseException(Ljava/lang/Object;)Ljava/lang/Throwable; +HSPLkotlinx/coroutines/JobSupport;->finalizeFinishingState(Lkotlinx/coroutines/JobSupport$Finishing;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/JobSupport;->firstChild(Lkotlinx/coroutines/Incomplete;)Lkotlinx/coroutines/ChildHandleNode; +HSPLkotlinx/coroutines/JobSupport;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLkotlinx/coroutines/JobSupport;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLkotlinx/coroutines/JobSupport;->getCancellationException()Ljava/util/concurrent/CancellationException; +HSPLkotlinx/coroutines/JobSupport;->getChildJobCancellationCause()Ljava/util/concurrent/CancellationException; +HSPLkotlinx/coroutines/JobSupport;->getFinalRootCause(Lkotlinx/coroutines/JobSupport$Finishing;Ljava/util/List;)Ljava/lang/Throwable; +HSPLkotlinx/coroutines/JobSupport;->getKey()Lkotlin/coroutines/CoroutineContext$Key; +HSPLkotlinx/coroutines/JobSupport;->getOnCancelComplete$kotlinx_coroutines_core()Z +HSPLkotlinx/coroutines/JobSupport;->getOrPromoteCancellingList(Lkotlinx/coroutines/Incomplete;)Lkotlinx/coroutines/NodeList; +HSPLkotlinx/coroutines/JobSupport;->getParent()Lkotlinx/coroutines/Job; +HSPLkotlinx/coroutines/JobSupport;->getParentHandle$kotlinx_coroutines_core()Lkotlinx/coroutines/ChildHandle; +HSPLkotlinx/coroutines/JobSupport;->getState$kotlinx_coroutines_core()Ljava/lang/Object; +HSPLkotlinx/coroutines/JobSupport;->get_parentHandle$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/JobSupport;->get_state$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/JobSupport;->initParentJob(Lkotlinx/coroutines/Job;)V +HSPLkotlinx/coroutines/JobSupport;->invokeOnCompletion(Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/DisposableHandle; +HSPLkotlinx/coroutines/JobSupport;->invokeOnCompletion(ZZLkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/DisposableHandle; +HSPLkotlinx/coroutines/JobSupport;->isActive()Z +HSPLkotlinx/coroutines/JobSupport;->isCancelled()Z +HSPLkotlinx/coroutines/JobSupport;->isCompleted()Z +HSPLkotlinx/coroutines/JobSupport;->isScopedCoroutine()Z +HSPLkotlinx/coroutines/JobSupport;->join(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/JobSupport;->joinInternal()Z +HSPLkotlinx/coroutines/JobSupport;->joinSuspend(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/JobSupport;->makeCancelling(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/JobSupport;->makeCompletingOnce$kotlinx_coroutines_core(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/JobSupport;->makeNode(Lkotlin/jvm/functions/Function1;Z)Lkotlinx/coroutines/JobNode; +HSPLkotlinx/coroutines/JobSupport;->minusKey(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext; +HSPLkotlinx/coroutines/JobSupport;->nextChild(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)Lkotlinx/coroutines/ChildHandleNode; +HSPLkotlinx/coroutines/JobSupport;->notifyCancelling(Lkotlinx/coroutines/NodeList;Ljava/lang/Throwable;)V +HSPLkotlinx/coroutines/JobSupport;->notifyCompletion(Lkotlinx/coroutines/NodeList;Ljava/lang/Throwable;)V +HSPLkotlinx/coroutines/JobSupport;->onCancelling(Ljava/lang/Throwable;)V +HSPLkotlinx/coroutines/JobSupport;->onCompletionInternal(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/JobSupport;->parentCancelled(Lkotlinx/coroutines/ParentJob;)V +HSPLkotlinx/coroutines/JobSupport;->plus(Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext; +HSPLkotlinx/coroutines/JobSupport;->promoteSingleToNodeList(Lkotlinx/coroutines/JobNode;)V +HSPLkotlinx/coroutines/JobSupport;->removeNode$kotlinx_coroutines_core(Lkotlinx/coroutines/JobNode;)V +HSPLkotlinx/coroutines/JobSupport;->setParentHandle$kotlinx_coroutines_core(Lkotlinx/coroutines/ChildHandle;)V +HSPLkotlinx/coroutines/JobSupport;->start()Z +HSPLkotlinx/coroutines/JobSupport;->startInternal(Ljava/lang/Object;)I +HSPLkotlinx/coroutines/JobSupport;->toCancellationException$default(Lkotlinx/coroutines/JobSupport;Ljava/lang/Throwable;Ljava/lang/String;ILjava/lang/Object;)Ljava/util/concurrent/CancellationException; +HSPLkotlinx/coroutines/JobSupport;->toCancellationException(Ljava/lang/Throwable;Ljava/lang/String;)Ljava/util/concurrent/CancellationException; +HSPLkotlinx/coroutines/JobSupport;->tryFinalizeSimpleState(Lkotlinx/coroutines/Incomplete;Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/JobSupport;->tryMakeCancelling(Lkotlinx/coroutines/Incomplete;Ljava/lang/Throwable;)Z +HSPLkotlinx/coroutines/JobSupport;->tryMakeCompleting(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/JobSupport;->tryMakeCompletingSlowPath(Lkotlinx/coroutines/Incomplete;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/JobSupport;->tryWaitForChild(Lkotlinx/coroutines/JobSupport$Finishing;Lkotlinx/coroutines/ChildHandleNode;Ljava/lang/Object;)Z +Lkotlinx/coroutines/JobSupport$AwaitContinuation; +HSPLkotlinx/coroutines/JobSupport$AwaitContinuation;->(Lkotlin/coroutines/Continuation;Lkotlinx/coroutines/JobSupport;)V +Lkotlinx/coroutines/JobSupport$ChildCompletion; +HSPLkotlinx/coroutines/JobSupport$ChildCompletion;->(Lkotlinx/coroutines/JobSupport;Lkotlinx/coroutines/JobSupport$Finishing;Lkotlinx/coroutines/ChildHandleNode;Ljava/lang/Object;)V +HSPLkotlinx/coroutines/JobSupport$ChildCompletion;->invoke(Ljava/lang/Throwable;)V +Lkotlinx/coroutines/JobSupport$Finishing; +HSPLkotlinx/coroutines/JobSupport$Finishing;->()V +HSPLkotlinx/coroutines/JobSupport$Finishing;->(Lkotlinx/coroutines/NodeList;ZLjava/lang/Throwable;)V +HSPLkotlinx/coroutines/JobSupport$Finishing;->addExceptionLocked(Ljava/lang/Throwable;)V +HSPLkotlinx/coroutines/JobSupport$Finishing;->allocateList()Ljava/util/ArrayList; +HSPLkotlinx/coroutines/JobSupport$Finishing;->getExceptionsHolder()Ljava/lang/Object; +HSPLkotlinx/coroutines/JobSupport$Finishing;->getList()Lkotlinx/coroutines/NodeList; +HSPLkotlinx/coroutines/JobSupport$Finishing;->getRootCause()Ljava/lang/Throwable; +HSPLkotlinx/coroutines/JobSupport$Finishing;->get_exceptionsHolder$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/JobSupport$Finishing;->get_isCompleting$volatile$FU()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; +HSPLkotlinx/coroutines/JobSupport$Finishing;->get_rootCause$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/JobSupport$Finishing;->isActive()Z +HSPLkotlinx/coroutines/JobSupport$Finishing;->isCancelling()Z +HSPLkotlinx/coroutines/JobSupport$Finishing;->isCompleting()Z +PLkotlinx/coroutines/JobSupport$Finishing;->isSealed()Z +HSPLkotlinx/coroutines/JobSupport$Finishing;->sealLocked(Ljava/lang/Throwable;)Ljava/util/List; +HSPLkotlinx/coroutines/JobSupport$Finishing;->setCompleting(Z)V +HSPLkotlinx/coroutines/JobSupport$Finishing;->setExceptionsHolder(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/JobSupport$Finishing;->setRootCause(Ljava/lang/Throwable;)V +Lkotlinx/coroutines/JobSupport$addLastAtomic$$inlined$addLastIf$1; +HSPLkotlinx/coroutines/JobSupport$addLastAtomic$$inlined$addLastIf$1;->(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/JobSupport;Ljava/lang/Object;)V +HSPLkotlinx/coroutines/JobSupport$addLastAtomic$$inlined$addLastIf$1;->prepare(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/JobSupport$addLastAtomic$$inlined$addLastIf$1;->prepare(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)Ljava/lang/Object; +Lkotlinx/coroutines/JobSupportKt; +HSPLkotlinx/coroutines/JobSupportKt;->()V +HSPLkotlinx/coroutines/JobSupportKt;->access$getCOMPLETING_ALREADY$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/JobSupportKt;->access$getCOMPLETING_RETRY$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/JobSupportKt;->access$getEMPTY_ACTIVE$p()Lkotlinx/coroutines/Empty; +HSPLkotlinx/coroutines/JobSupportKt;->access$getSEALED$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/JobSupportKt;->access$getTOO_LATE_TO_CANCEL$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/JobSupportKt;->boxIncomplete(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/JobSupportKt;->unboxState(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/MainCoroutineDispatcher; +HSPLkotlinx/coroutines/MainCoroutineDispatcher;->()V +Lkotlinx/coroutines/NodeList; +HSPLkotlinx/coroutines/NodeList;->()V +HSPLkotlinx/coroutines/NodeList;->getList()Lkotlinx/coroutines/NodeList; +HSPLkotlinx/coroutines/NodeList;->isActive()Z +Lkotlinx/coroutines/NonDisposableHandle; +HSPLkotlinx/coroutines/NonDisposableHandle;->()V +HSPLkotlinx/coroutines/NonDisposableHandle;->()V +HSPLkotlinx/coroutines/NonDisposableHandle;->dispose()V +Lkotlinx/coroutines/NotCompleted; +Lkotlinx/coroutines/ParentJob; +Lkotlinx/coroutines/ResumeAwaitOnCompletion; +HSPLkotlinx/coroutines/ResumeAwaitOnCompletion;->(Lkotlinx/coroutines/CancellableContinuationImpl;)V +HSPLkotlinx/coroutines/ResumeAwaitOnCompletion;->invoke(Ljava/lang/Throwable;)V +Lkotlinx/coroutines/ResumeOnCompletion; +HSPLkotlinx/coroutines/ResumeOnCompletion;->(Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/ResumeOnCompletion;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/ResumeOnCompletion;->invoke(Ljava/lang/Throwable;)V +Lkotlinx/coroutines/StandaloneCoroutine; +HSPLkotlinx/coroutines/StandaloneCoroutine;->(Lkotlin/coroutines/CoroutineContext;Z)V +Lkotlinx/coroutines/SupervisorJobImpl; +HSPLkotlinx/coroutines/SupervisorJobImpl;->(Lkotlinx/coroutines/Job;)V +Lkotlinx/coroutines/SupervisorKt; +HSPLkotlinx/coroutines/SupervisorKt;->SupervisorJob$default(Lkotlinx/coroutines/Job;ILjava/lang/Object;)Lkotlinx/coroutines/CompletableJob; +HSPLkotlinx/coroutines/SupervisorKt;->SupervisorJob(Lkotlinx/coroutines/Job;)Lkotlinx/coroutines/CompletableJob; +Lkotlinx/coroutines/ThreadContextElement; +Lkotlinx/coroutines/ThreadContextElement$DefaultImpls; +HSPLkotlinx/coroutines/ThreadContextElement$DefaultImpls;->fold(Lkotlinx/coroutines/ThreadContextElement;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +Lkotlinx/coroutines/ThreadContextElementKt; +HSPLkotlinx/coroutines/ThreadContextElementKt;->asContextElement(Ljava/lang/ThreadLocal;Ljava/lang/Object;)Lkotlinx/coroutines/ThreadContextElement; +Lkotlinx/coroutines/ThreadLocalEventLoop; +HSPLkotlinx/coroutines/ThreadLocalEventLoop;->()V +HSPLkotlinx/coroutines/ThreadLocalEventLoop;->()V +HSPLkotlinx/coroutines/ThreadLocalEventLoop;->getEventLoop$kotlinx_coroutines_core()Lkotlinx/coroutines/EventLoop; +HSPLkotlinx/coroutines/ThreadLocalEventLoop;->resetEventLoop$kotlinx_coroutines_core()V +HSPLkotlinx/coroutines/ThreadLocalEventLoop;->setEventLoop$kotlinx_coroutines_core(Lkotlinx/coroutines/EventLoop;)V +Lkotlinx/coroutines/TimeoutCancellationException; +Lkotlinx/coroutines/Unconfined; +HSPLkotlinx/coroutines/Unconfined;->()V +HSPLkotlinx/coroutines/Unconfined;->()V +Lkotlinx/coroutines/UndispatchedCoroutine; +HSPLkotlinx/coroutines/UndispatchedCoroutine;->(Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/UndispatchedCoroutine;->afterResume(Ljava/lang/Object;)V +PLkotlinx/coroutines/UndispatchedCoroutine;->clearThreadContext()Z +PLkotlinx/coroutines/UndispatchedCoroutine;->saveThreadContext(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Object;)V +Lkotlinx/coroutines/UndispatchedMarker; +HSPLkotlinx/coroutines/UndispatchedMarker;->()V +HSPLkotlinx/coroutines/UndispatchedMarker;->()V +HSPLkotlinx/coroutines/UndispatchedMarker;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLkotlinx/coroutines/UndispatchedMarker;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLkotlinx/coroutines/UndispatchedMarker;->getKey()Lkotlin/coroutines/CoroutineContext$Key; +Lkotlinx/coroutines/Waiter; +Lkotlinx/coroutines/YieldContext; +HSPLkotlinx/coroutines/YieldContext;->()V +HSPLkotlinx/coroutines/YieldContext;->()V +Lkotlinx/coroutines/YieldContext$Key; +HSPLkotlinx/coroutines/YieldContext$Key;->()V +HSPLkotlinx/coroutines/YieldContext$Key;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/coroutines/YieldKt; +HSPLkotlinx/coroutines/YieldKt;->yield(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/android/AndroidDispatcherFactory; +HSPLkotlinx/coroutines/android/AndroidDispatcherFactory;->()V +HSPLkotlinx/coroutines/android/AndroidDispatcherFactory;->createDispatcher(Ljava/util/List;)Lkotlinx/coroutines/MainCoroutineDispatcher; +Lkotlinx/coroutines/android/HandlerContext; +HSPLkotlinx/coroutines/android/HandlerContext;->(Landroid/os/Handler;Ljava/lang/String;)V +HSPLkotlinx/coroutines/android/HandlerContext;->(Landroid/os/Handler;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/coroutines/android/HandlerContext;->(Landroid/os/Handler;Ljava/lang/String;Z)V +HSPLkotlinx/coroutines/android/HandlerContext;->dispatch(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Runnable;)V +HSPLkotlinx/coroutines/android/HandlerContext;->equals(Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/android/HandlerContext;->getImmediate()Lkotlinx/coroutines/MainCoroutineDispatcher; +HSPLkotlinx/coroutines/android/HandlerContext;->getImmediate()Lkotlinx/coroutines/android/HandlerContext; +HSPLkotlinx/coroutines/android/HandlerContext;->getImmediate()Lkotlinx/coroutines/android/HandlerDispatcher; +HSPLkotlinx/coroutines/android/HandlerContext;->isDispatchNeeded(Lkotlin/coroutines/CoroutineContext;)Z +HSPLkotlinx/coroutines/android/HandlerContext;->scheduleResumeAfterDelay(JLkotlinx/coroutines/CancellableContinuation;)V +Lkotlinx/coroutines/android/HandlerContext$scheduleResumeAfterDelay$$inlined$Runnable$1; +HSPLkotlinx/coroutines/android/HandlerContext$scheduleResumeAfterDelay$$inlined$Runnable$1;->(Lkotlinx/coroutines/CancellableContinuation;Lkotlinx/coroutines/android/HandlerContext;)V +HSPLkotlinx/coroutines/android/HandlerContext$scheduleResumeAfterDelay$$inlined$Runnable$1;->run()V +Lkotlinx/coroutines/android/HandlerContext$scheduleResumeAfterDelay$1; +HSPLkotlinx/coroutines/android/HandlerContext$scheduleResumeAfterDelay$1;->(Lkotlinx/coroutines/android/HandlerContext;Ljava/lang/Runnable;)V +Lkotlinx/coroutines/android/HandlerDispatcher; +HSPLkotlinx/coroutines/android/HandlerDispatcher;->()V +HSPLkotlinx/coroutines/android/HandlerDispatcher;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/coroutines/android/HandlerDispatcherKt; +HSPLkotlinx/coroutines/android/HandlerDispatcherKt;->()V +HSPLkotlinx/coroutines/android/HandlerDispatcherKt;->asHandler(Landroid/os/Looper;Z)Landroid/os/Handler; +HSPLkotlinx/coroutines/android/HandlerDispatcherKt;->from(Landroid/os/Handler;Ljava/lang/String;)Lkotlinx/coroutines/android/HandlerDispatcher; +Lkotlinx/coroutines/channels/BufferOverflow; +HSPLkotlinx/coroutines/channels/BufferOverflow;->$values()[Lkotlinx/coroutines/channels/BufferOverflow; +HSPLkotlinx/coroutines/channels/BufferOverflow;->()V +HSPLkotlinx/coroutines/channels/BufferOverflow;->(Ljava/lang/String;I)V +Lkotlinx/coroutines/channels/BufferedChannel; +HSPLkotlinx/coroutines/channels/BufferedChannel;->()V +HSPLkotlinx/coroutines/channels/BufferedChannel;->(ILkotlin/jvm/functions/Function1;)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->access$findSegmentReceive(Lkotlinx/coroutines/channels/BufferedChannel;JLkotlinx/coroutines/channels/ChannelSegment;)Lkotlinx/coroutines/channels/ChannelSegment; +HSPLkotlinx/coroutines/channels/BufferedChannel;->access$findSegmentSend(Lkotlinx/coroutines/channels/BufferedChannel;JLkotlinx/coroutines/channels/ChannelSegment;)Lkotlinx/coroutines/channels/ChannelSegment; +HSPLkotlinx/coroutines/channels/BufferedChannel;->access$getReceiveSegment$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/channels/BufferedChannel;->access$getReceivers$volatile$FU()Ljava/util/concurrent/atomic/AtomicLongFieldUpdater; +HSPLkotlinx/coroutines/channels/BufferedChannel;->access$getSendSegment$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/channels/BufferedChannel;->access$getSendersAndCloseStatus$volatile$FU()Ljava/util/concurrent/atomic/AtomicLongFieldUpdater; +HSPLkotlinx/coroutines/channels/BufferedChannel;->access$isClosedForSend0(Lkotlinx/coroutines/channels/BufferedChannel;J)Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->access$prepareReceiverForSuspension(Lkotlinx/coroutines/channels/BufferedChannel;Lkotlinx/coroutines/Waiter;Lkotlinx/coroutines/channels/ChannelSegment;I)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->access$prepareSenderForSuspension(Lkotlinx/coroutines/channels/BufferedChannel;Lkotlinx/coroutines/Waiter;Lkotlinx/coroutines/channels/ChannelSegment;I)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->access$processResultSelectReceiveCatching(Lkotlinx/coroutines/channels/BufferedChannel;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->access$receiveCatchingOnNoWaiterSuspend-GKJJFZk(Lkotlinx/coroutines/channels/BufferedChannel;Lkotlinx/coroutines/channels/ChannelSegment;IJLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->access$registerSelectForReceive(Lkotlinx/coroutines/channels/BufferedChannel;Lkotlinx/coroutines/selects/SelectInstance;Ljava/lang/Object;)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->access$updateCellReceive(Lkotlinx/coroutines/channels/BufferedChannel;Lkotlinx/coroutines/channels/ChannelSegment;IJLjava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->access$updateCellSend(Lkotlinx/coroutines/channels/BufferedChannel;Lkotlinx/coroutines/channels/ChannelSegment;ILjava/lang/Object;JLjava/lang/Object;Z)I +HSPLkotlinx/coroutines/channels/BufferedChannel;->bufferOrRendezvousSend(J)Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->cancel(Ljava/util/concurrent/CancellationException;)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->cancelImpl$kotlinx_coroutines_core(Ljava/lang/Throwable;)Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->cancelSuspendedReceiveRequests(Lkotlinx/coroutines/channels/ChannelSegment;J)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->close(Ljava/lang/Throwable;)Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->closeLinkedList()Lkotlinx/coroutines/channels/ChannelSegment; +HSPLkotlinx/coroutines/channels/BufferedChannel;->closeOrCancelImpl(Ljava/lang/Throwable;Z)Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->completeCancel(J)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->completeClose(J)Lkotlinx/coroutines/channels/ChannelSegment; +HSPLkotlinx/coroutines/channels/BufferedChannel;->completeCloseOrCancel()V +HSPLkotlinx/coroutines/channels/BufferedChannel;->dropFirstElementUntilTheSpecifiedCellIsInTheBuffer(J)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->expandBuffer()V +HSPLkotlinx/coroutines/channels/BufferedChannel;->findSegmentBufferEnd(JLkotlinx/coroutines/channels/ChannelSegment;J)Lkotlinx/coroutines/channels/ChannelSegment; +HSPLkotlinx/coroutines/channels/BufferedChannel;->findSegmentReceive(JLkotlinx/coroutines/channels/ChannelSegment;)Lkotlinx/coroutines/channels/ChannelSegment; +HSPLkotlinx/coroutines/channels/BufferedChannel;->findSegmentSend(JLkotlinx/coroutines/channels/ChannelSegment;)Lkotlinx/coroutines/channels/ChannelSegment; +HSPLkotlinx/coroutines/channels/BufferedChannel;->getBufferEnd$volatile$FU()Ljava/util/concurrent/atomic/AtomicLongFieldUpdater; +HSPLkotlinx/coroutines/channels/BufferedChannel;->getBufferEndCounter()J +HSPLkotlinx/coroutines/channels/BufferedChannel;->getBufferEndSegment$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/channels/BufferedChannel;->getCloseCause()Ljava/lang/Throwable; +HSPLkotlinx/coroutines/channels/BufferedChannel;->getCloseHandler$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/channels/BufferedChannel;->getCompletedExpandBuffersAndPauseFlag$volatile$FU()Ljava/util/concurrent/atomic/AtomicLongFieldUpdater; +HSPLkotlinx/coroutines/channels/BufferedChannel;->getOnReceiveCatching()Lkotlinx/coroutines/selects/SelectClause1; +HSPLkotlinx/coroutines/channels/BufferedChannel;->getReceiveSegment$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/channels/BufferedChannel;->getReceivers$volatile$FU()Ljava/util/concurrent/atomic/AtomicLongFieldUpdater; +HSPLkotlinx/coroutines/channels/BufferedChannel;->getReceiversCounter$kotlinx_coroutines_core()J +HSPLkotlinx/coroutines/channels/BufferedChannel;->getSendSegment$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/channels/BufferedChannel;->getSendersAndCloseStatus$volatile$FU()Ljava/util/concurrent/atomic/AtomicLongFieldUpdater; +HSPLkotlinx/coroutines/channels/BufferedChannel;->getSendersCounter$kotlinx_coroutines_core()J +HSPLkotlinx/coroutines/channels/BufferedChannel;->get_closeCause$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/channels/BufferedChannel;->hasElements$kotlinx_coroutines_core()Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->incCompletedExpandBufferAttempts$default(Lkotlinx/coroutines/channels/BufferedChannel;JILjava/lang/Object;)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->incCompletedExpandBufferAttempts(J)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->invokeCloseHandler()V +HSPLkotlinx/coroutines/channels/BufferedChannel;->invokeOnClose(Lkotlin/jvm/functions/Function1;)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->isClosed(JZ)Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->isClosedForReceive()Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->isClosedForReceive0(J)Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->isClosedForSend()Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->isClosedForSend0(J)Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->isConflatedDropOldest()Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->isRendezvousOrUnlimited()Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->iterator()Lkotlinx/coroutines/channels/ChannelIterator; +HSPLkotlinx/coroutines/channels/BufferedChannel;->markAllEmptyCellsAsClosed(Lkotlinx/coroutines/channels/ChannelSegment;)J +HSPLkotlinx/coroutines/channels/BufferedChannel;->markCancellationStarted()V +HSPLkotlinx/coroutines/channels/BufferedChannel;->markCancelled()V +HSPLkotlinx/coroutines/channels/BufferedChannel;->markClosed()V +HSPLkotlinx/coroutines/channels/BufferedChannel;->onClosedIdempotent()V +HSPLkotlinx/coroutines/channels/BufferedChannel;->onReceiveDequeued()V +HSPLkotlinx/coroutines/channels/BufferedChannel;->onReceiveEnqueued()V +HSPLkotlinx/coroutines/channels/BufferedChannel;->prepareReceiverForSuspension(Lkotlinx/coroutines/Waiter;Lkotlinx/coroutines/channels/ChannelSegment;I)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->prepareSenderForSuspension(Lkotlinx/coroutines/Waiter;Lkotlinx/coroutines/channels/ChannelSegment;I)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->processResultSelectReceiveCatching(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->receive$suspendImpl(Lkotlinx/coroutines/channels/BufferedChannel;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->receive(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->receiveCatching-JP2dKIU$suspendImpl(Lkotlinx/coroutines/channels/BufferedChannel;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->receiveCatching-JP2dKIU(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->receiveCatchingOnNoWaiterSuspend-GKJJFZk(Lkotlinx/coroutines/channels/ChannelSegment;IJLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->receiveOnNoWaiterSuspend(Lkotlinx/coroutines/channels/ChannelSegment;IJLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->registerSelectForReceive(Lkotlinx/coroutines/selects/SelectInstance;Ljava/lang/Object;)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->removeUnprocessedElements(Lkotlinx/coroutines/channels/ChannelSegment;)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->resumeReceiverOnClosedChannel(Lkotlinx/coroutines/Waiter;)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->resumeWaiterOnClosedChannel(Lkotlinx/coroutines/Waiter;Z)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->send$suspendImpl(Lkotlinx/coroutines/channels/BufferedChannel;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->send(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->sendOnNoWaiterSuspend(Lkotlinx/coroutines/channels/ChannelSegment;ILjava/lang/Object;JLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->shouldSendSuspend(J)Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->tryReceive-PtdJZtk()Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->tryResumeReceiver(Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->tryResumeSender(Ljava/lang/Object;Lkotlinx/coroutines/channels/ChannelSegment;I)Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->trySend-JP2dKIU(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->updateCellExpandBuffer(Lkotlinx/coroutines/channels/ChannelSegment;IJ)Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->updateCellExpandBufferSlow(Lkotlinx/coroutines/channels/ChannelSegment;IJ)Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->updateCellReceive(Lkotlinx/coroutines/channels/ChannelSegment;IJLjava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->updateCellReceiveSlow(Lkotlinx/coroutines/channels/ChannelSegment;IJLjava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->updateCellSend(Lkotlinx/coroutines/channels/ChannelSegment;ILjava/lang/Object;JLjava/lang/Object;Z)I +HSPLkotlinx/coroutines/channels/BufferedChannel;->updateCellSendSlow(Lkotlinx/coroutines/channels/ChannelSegment;ILjava/lang/Object;JLjava/lang/Object;Z)I +HSPLkotlinx/coroutines/channels/BufferedChannel;->waitExpandBufferCompletion$kotlinx_coroutines_core(J)V +Lkotlinx/coroutines/channels/BufferedChannel$BufferedChannelIterator; +HSPLkotlinx/coroutines/channels/BufferedChannel$BufferedChannelIterator;->(Lkotlinx/coroutines/channels/BufferedChannel;)V +HSPLkotlinx/coroutines/channels/BufferedChannel$BufferedChannelIterator;->access$setContinuation$p(Lkotlinx/coroutines/channels/BufferedChannel$BufferedChannelIterator;Lkotlinx/coroutines/CancellableContinuationImpl;)V +HSPLkotlinx/coroutines/channels/BufferedChannel$BufferedChannelIterator;->access$setReceiveResult$p(Lkotlinx/coroutines/channels/BufferedChannel$BufferedChannelIterator;Ljava/lang/Object;)V +HSPLkotlinx/coroutines/channels/BufferedChannel$BufferedChannelIterator;->hasNext(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel$BufferedChannelIterator;->hasNextOnNoWaiterSuspend(Lkotlinx/coroutines/channels/ChannelSegment;IJLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel$BufferedChannelIterator;->invokeOnCancellation(Lkotlinx/coroutines/internal/Segment;I)V +HSPLkotlinx/coroutines/channels/BufferedChannel$BufferedChannelIterator;->next()Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel$BufferedChannelIterator;->tryResumeHasNext(Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/channels/BufferedChannel$BufferedChannelIterator;->tryResumeHasNextOnClosedChannel()V +Lkotlinx/coroutines/channels/BufferedChannel$SendBroadcast; +Lkotlinx/coroutines/channels/BufferedChannel$onReceiveCatching$1; +HSPLkotlinx/coroutines/channels/BufferedChannel$onReceiveCatching$1;->()V +HSPLkotlinx/coroutines/channels/BufferedChannel$onReceiveCatching$1;->()V +HSPLkotlinx/coroutines/channels/BufferedChannel$onReceiveCatching$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel$onReceiveCatching$1;->invoke(Lkotlinx/coroutines/channels/BufferedChannel;Lkotlinx/coroutines/selects/SelectInstance;Ljava/lang/Object;)V +Lkotlinx/coroutines/channels/BufferedChannel$onReceiveCatching$2; +HSPLkotlinx/coroutines/channels/BufferedChannel$onReceiveCatching$2;->()V +HSPLkotlinx/coroutines/channels/BufferedChannel$onReceiveCatching$2;->()V +HSPLkotlinx/coroutines/channels/BufferedChannel$onReceiveCatching$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel$onReceiveCatching$2;->invoke(Lkotlinx/coroutines/channels/BufferedChannel;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/channels/BufferedChannel$receiveCatching$1; +HSPLkotlinx/coroutines/channels/BufferedChannel$receiveCatching$1;->(Lkotlinx/coroutines/channels/BufferedChannel;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/channels/BufferedChannel$receiveCatching$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/channels/BufferedChannel$receiveCatchingOnNoWaiterSuspend$1; +HSPLkotlinx/coroutines/channels/BufferedChannel$receiveCatchingOnNoWaiterSuspend$1;->(Lkotlinx/coroutines/channels/BufferedChannel;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/channels/BufferedChannel$receiveCatchingOnNoWaiterSuspend$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/channels/BufferedChannelKt; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->()V +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$constructSendersAndCloseStatus(JI)J +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$createSegment(JLkotlinx/coroutines/channels/ChannelSegment;)Lkotlinx/coroutines/channels/ChannelSegment; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$getCLOSE_HANDLER_CLOSED$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$getCLOSE_HANDLER_INVOKED$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$getDONE_RCV$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$getEXPAND_BUFFER_COMPLETION_WAIT_ITERATIONS$p()I +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$getFAILED$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$getINTERRUPTED_RCV$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$getINTERRUPTED_SEND$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$getIN_BUFFER$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$getNO_CLOSE_CAUSE$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$getNO_RECEIVE_RESULT$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$getNULL_SEGMENT$p()Lkotlinx/coroutines/channels/ChannelSegment; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$getPOISONED$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$getRESUMING_BY_EB$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$getRESUMING_BY_RCV$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$getSUSPEND$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$getSUSPEND_NO_WAITER$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$initialBufferEnd(I)J +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$tryResume0(Lkotlinx/coroutines/CancellableContinuation;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Z +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->constructSendersAndCloseStatus(JI)J +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->createSegment(JLkotlinx/coroutines/channels/ChannelSegment;)Lkotlinx/coroutines/channels/ChannelSegment; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->createSegmentFunction()Lkotlin/reflect/KFunction; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->getCHANNEL_CLOSED()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->initialBufferEnd(I)J +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->tryResume0$default(Lkotlinx/coroutines/CancellableContinuation;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Z +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->tryResume0(Lkotlinx/coroutines/CancellableContinuation;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Z +Lkotlinx/coroutines/channels/BufferedChannelKt$createSegmentFunction$1; +HSPLkotlinx/coroutines/channels/BufferedChannelKt$createSegmentFunction$1;->()V +HSPLkotlinx/coroutines/channels/BufferedChannelKt$createSegmentFunction$1;->()V +HSPLkotlinx/coroutines/channels/BufferedChannelKt$createSegmentFunction$1;->invoke(JLkotlinx/coroutines/channels/ChannelSegment;)Lkotlinx/coroutines/channels/ChannelSegment; +HSPLkotlinx/coroutines/channels/BufferedChannelKt$createSegmentFunction$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/channels/Channel; +HSPLkotlinx/coroutines/channels/Channel;->()V +Lkotlinx/coroutines/channels/Channel$Factory; +HSPLkotlinx/coroutines/channels/Channel$Factory;->()V +HSPLkotlinx/coroutines/channels/Channel$Factory;->()V +HSPLkotlinx/coroutines/channels/Channel$Factory;->getCHANNEL_DEFAULT_CAPACITY$kotlinx_coroutines_core()I +Lkotlinx/coroutines/channels/ChannelCoroutine; +HSPLkotlinx/coroutines/channels/ChannelCoroutine;->(Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/channels/Channel;ZZ)V +HSPLkotlinx/coroutines/channels/ChannelCoroutine;->cancel(Ljava/util/concurrent/CancellationException;)V +HSPLkotlinx/coroutines/channels/ChannelCoroutine;->cancelInternal(Ljava/lang/Throwable;)V +HSPLkotlinx/coroutines/channels/ChannelCoroutine;->getChannel()Lkotlinx/coroutines/channels/Channel; +HSPLkotlinx/coroutines/channels/ChannelCoroutine;->getOnReceiveCatching()Lkotlinx/coroutines/selects/SelectClause1; +HSPLkotlinx/coroutines/channels/ChannelCoroutine;->get_channel()Lkotlinx/coroutines/channels/Channel; +HSPLkotlinx/coroutines/channels/ChannelCoroutine;->invokeOnClose(Lkotlin/jvm/functions/Function1;)V +HSPLkotlinx/coroutines/channels/ChannelCoroutine;->iterator()Lkotlinx/coroutines/channels/ChannelIterator; +HSPLkotlinx/coroutines/channels/ChannelCoroutine;->send(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/ChannelCoroutine;->trySend-JP2dKIU(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/channels/ChannelIterator; +Lkotlinx/coroutines/channels/ChannelKt; +HSPLkotlinx/coroutines/channels/ChannelKt;->Channel$default(ILkotlinx/coroutines/channels/BufferOverflow;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lkotlinx/coroutines/channels/Channel; +HSPLkotlinx/coroutines/channels/ChannelKt;->Channel(ILkotlinx/coroutines/channels/BufferOverflow;Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/channels/Channel; +Lkotlinx/coroutines/channels/ChannelResult; +HSPLkotlinx/coroutines/channels/ChannelResult;->()V +HSPLkotlinx/coroutines/channels/ChannelResult;->(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/channels/ChannelResult;->access$getFailed$cp()Lkotlinx/coroutines/channels/ChannelResult$Failed; +HSPLkotlinx/coroutines/channels/ChannelResult;->box-impl(Ljava/lang/Object;)Lkotlinx/coroutines/channels/ChannelResult; +HSPLkotlinx/coroutines/channels/ChannelResult;->constructor-impl(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/ChannelResult;->getOrNull-impl(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/ChannelResult;->isSuccess-impl(Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/channels/ChannelResult;->unbox-impl()Ljava/lang/Object; +Lkotlinx/coroutines/channels/ChannelResult$Closed; +HSPLkotlinx/coroutines/channels/ChannelResult$Closed;->(Ljava/lang/Throwable;)V +Lkotlinx/coroutines/channels/ChannelResult$Companion; +HSPLkotlinx/coroutines/channels/ChannelResult$Companion;->()V +HSPLkotlinx/coroutines/channels/ChannelResult$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/coroutines/channels/ChannelResult$Companion;->closed-JP2dKIU(Ljava/lang/Throwable;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/ChannelResult$Companion;->failure-PtdJZtk()Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/ChannelResult$Companion;->success-JP2dKIU(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/channels/ChannelResult$Failed; +HSPLkotlinx/coroutines/channels/ChannelResult$Failed;->()V +Lkotlinx/coroutines/channels/ChannelSegment; +HSPLkotlinx/coroutines/channels/ChannelSegment;->(JLkotlinx/coroutines/channels/ChannelSegment;Lkotlinx/coroutines/channels/BufferedChannel;I)V +HSPLkotlinx/coroutines/channels/ChannelSegment;->casState$kotlinx_coroutines_core(ILjava/lang/Object;Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/channels/ChannelSegment;->cleanElement$kotlinx_coroutines_core(I)V +HSPLkotlinx/coroutines/channels/ChannelSegment;->getChannel()Lkotlinx/coroutines/channels/BufferedChannel; +HSPLkotlinx/coroutines/channels/ChannelSegment;->getData()Ljava/util/concurrent/atomic/AtomicReferenceArray; +HSPLkotlinx/coroutines/channels/ChannelSegment;->getElement$kotlinx_coroutines_core(I)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/ChannelSegment;->getNumberOfSlots()I +HSPLkotlinx/coroutines/channels/ChannelSegment;->getState$kotlinx_coroutines_core(I)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/ChannelSegment;->onCancellation(ILjava/lang/Throwable;Lkotlin/coroutines/CoroutineContext;)V +HSPLkotlinx/coroutines/channels/ChannelSegment;->onCancelledRequest(IZ)V +HSPLkotlinx/coroutines/channels/ChannelSegment;->retrieveElement$kotlinx_coroutines_core(I)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/ChannelSegment;->setElementLazy(ILjava/lang/Object;)V +HSPLkotlinx/coroutines/channels/ChannelSegment;->setState$kotlinx_coroutines_core(ILjava/lang/Object;)V +HSPLkotlinx/coroutines/channels/ChannelSegment;->storeElement$kotlinx_coroutines_core(ILjava/lang/Object;)V +Lkotlinx/coroutines/channels/ChannelsKt; +HSPLkotlinx/coroutines/channels/ChannelsKt;->cancelConsumed(Lkotlinx/coroutines/channels/ReceiveChannel;Ljava/lang/Throwable;)V +Lkotlinx/coroutines/channels/ChannelsKt__Channels_commonKt; +HSPLkotlinx/coroutines/channels/ChannelsKt__Channels_commonKt;->cancelConsumed(Lkotlinx/coroutines/channels/ReceiveChannel;Ljava/lang/Throwable;)V +Lkotlinx/coroutines/channels/ConflatedBufferedChannel; +HSPLkotlinx/coroutines/channels/ConflatedBufferedChannel;->(ILkotlinx/coroutines/channels/BufferOverflow;Lkotlin/jvm/functions/Function1;)V +HSPLkotlinx/coroutines/channels/ConflatedBufferedChannel;->isConflatedDropOldest()Z +HSPLkotlinx/coroutines/channels/ConflatedBufferedChannel;->send$suspendImpl(Lkotlinx/coroutines/channels/ConflatedBufferedChannel;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/ConflatedBufferedChannel;->send(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/ConflatedBufferedChannel;->trySend-JP2dKIU(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/ConflatedBufferedChannel;->trySendDropOldest-JP2dKIU(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/ConflatedBufferedChannel;->trySendImpl-Mj0NB7M(Ljava/lang/Object;Z)Ljava/lang/Object; +Lkotlinx/coroutines/channels/ProduceKt; +HSPLkotlinx/coroutines/channels/ProduceKt;->awaitClose$default(Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/jvm/functions/Function0;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/ProduceKt;->awaitClose(Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/jvm/functions/Function0;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/ProduceKt;->produce$default(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;ILkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/channels/ReceiveChannel; +HSPLkotlinx/coroutines/channels/ProduceKt;->produce$default(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/channels/ReceiveChannel; +HSPLkotlinx/coroutines/channels/ProduceKt;->produce(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;ILkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/channels/ReceiveChannel; +HSPLkotlinx/coroutines/channels/ProduceKt;->produce(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/channels/ReceiveChannel; +Lkotlinx/coroutines/channels/ProduceKt$awaitClose$1; +HSPLkotlinx/coroutines/channels/ProduceKt$awaitClose$1;->(Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/channels/ProduceKt$awaitClose$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/channels/ProduceKt$awaitClose$2; +HSPLkotlinx/coroutines/channels/ProduceKt$awaitClose$2;->()V +HSPLkotlinx/coroutines/channels/ProduceKt$awaitClose$2;->()V +Lkotlinx/coroutines/channels/ProduceKt$awaitClose$4$1; +HSPLkotlinx/coroutines/channels/ProduceKt$awaitClose$4$1;->(Lkotlinx/coroutines/CancellableContinuation;)V +HSPLkotlinx/coroutines/channels/ProduceKt$awaitClose$4$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/ProduceKt$awaitClose$4$1;->invoke(Ljava/lang/Throwable;)V +Lkotlinx/coroutines/channels/ProducerCoroutine; +HSPLkotlinx/coroutines/channels/ProducerCoroutine;->(Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/channels/Channel;)V +HSPLkotlinx/coroutines/channels/ProducerCoroutine;->getChannel()Lkotlinx/coroutines/channels/SendChannel; +HSPLkotlinx/coroutines/channels/ProducerCoroutine;->isActive()Z +HSPLkotlinx/coroutines/channels/ProducerCoroutine;->onCancelled(Ljava/lang/Throwable;Z)V +Lkotlinx/coroutines/channels/ProducerScope; +Lkotlinx/coroutines/channels/ReceiveCatching; +HSPLkotlinx/coroutines/channels/ReceiveCatching;->(Lkotlinx/coroutines/CancellableContinuationImpl;)V +HSPLkotlinx/coroutines/channels/ReceiveCatching;->invokeOnCancellation(Lkotlinx/coroutines/internal/Segment;I)V +Lkotlinx/coroutines/channels/ReceiveChannel; +Lkotlinx/coroutines/channels/SendChannel; +Lkotlinx/coroutines/channels/SendChannel$DefaultImpls; +HSPLkotlinx/coroutines/channels/SendChannel$DefaultImpls;->close$default(Lkotlinx/coroutines/channels/SendChannel;Ljava/lang/Throwable;ILjava/lang/Object;)Z +Lkotlinx/coroutines/channels/WaiterEB; +Lkotlinx/coroutines/flow/AbstractFlow; +HSPLkotlinx/coroutines/flow/AbstractFlow;->()V +HSPLkotlinx/coroutines/flow/AbstractFlow;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/AbstractFlow$collect$1; +HSPLkotlinx/coroutines/flow/AbstractFlow$collect$1;->(Lkotlinx/coroutines/flow/AbstractFlow;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/AbstractFlow$collect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/CallbackFlowBuilder; +HSPLkotlinx/coroutines/flow/CallbackFlowBuilder;->(Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;)V +HSPLkotlinx/coroutines/flow/CallbackFlowBuilder;->(Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/coroutines/flow/CallbackFlowBuilder;->collectTo(Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/CallbackFlowBuilder$collectTo$1; +HSPLkotlinx/coroutines/flow/CallbackFlowBuilder$collectTo$1;->(Lkotlinx/coroutines/flow/CallbackFlowBuilder;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/CallbackFlowBuilder$collectTo$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/CancellableFlow; +Lkotlinx/coroutines/flow/ChannelFlowBuilder; +HSPLkotlinx/coroutines/flow/ChannelFlowBuilder;->(Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;)V +HSPLkotlinx/coroutines/flow/ChannelFlowBuilder;->(Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/coroutines/flow/ChannelFlowBuilder;->collectTo$suspendImpl(Lkotlinx/coroutines/flow/ChannelFlowBuilder;Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/ChannelFlowBuilder;->collectTo(Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/DistinctFlowImpl; +HSPLkotlinx/coroutines/flow/DistinctFlowImpl;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)V +HSPLkotlinx/coroutines/flow/DistinctFlowImpl;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/DistinctFlowImpl$collect$2; +HSPLkotlinx/coroutines/flow/DistinctFlowImpl$collect$2;->(Lkotlinx/coroutines/flow/DistinctFlowImpl;Lkotlin/jvm/internal/Ref$ObjectRef;Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLkotlinx/coroutines/flow/DistinctFlowImpl$collect$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/DistinctFlowImpl$collect$2$emit$1; +HSPLkotlinx/coroutines/flow/DistinctFlowImpl$collect$2$emit$1;->(Lkotlinx/coroutines/flow/DistinctFlowImpl$collect$2;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/DistinctFlowImpl$collect$2$emit$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/EmptyFlow; +HSPLkotlinx/coroutines/flow/EmptyFlow;->()V +HSPLkotlinx/coroutines/flow/EmptyFlow;->()V +HSPLkotlinx/coroutines/flow/EmptyFlow;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/Flow; +Lkotlinx/coroutines/flow/FlowCollector; +Lkotlinx/coroutines/flow/FlowKt; +HSPLkotlinx/coroutines/flow/FlowKt;->asFlow(Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->asStateFlow(Lkotlinx/coroutines/flow/MutableStateFlow;)Lkotlinx/coroutines/flow/StateFlow; +HSPLkotlinx/coroutines/flow/FlowKt;->buffer$default(Lkotlinx/coroutines/flow/Flow;ILkotlinx/coroutines/channels/BufferOverflow;ILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->buffer(Lkotlinx/coroutines/flow/Flow;ILkotlinx/coroutines/channels/BufferOverflow;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->callbackFlow(Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->catch(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->catchImpl(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt;->channelFlow(Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->collect(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt;->collectLatest(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt;->combine(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->combine(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function4;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->combine(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function5;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->combine(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function6;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->conflate(Lkotlinx/coroutines/flow/Flow;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->debounce(Lkotlinx/coroutines/flow/Flow;J)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->distinctUntilChanged(Lkotlinx/coroutines/flow/Flow;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->distinctUntilChanged(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->dropWhile(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->emitAll(Lkotlinx/coroutines/flow/FlowCollector;Lkotlinx/coroutines/channels/ReceiveChannel;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt;->emitAll(Lkotlinx/coroutines/flow/FlowCollector;Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt;->emptyFlow()Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->ensureActive(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLkotlinx/coroutines/flow/FlowKt;->first(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt;->first(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt;->firstOrNull(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt;->flattenConcat(Lkotlinx/coroutines/flow/Flow;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->flow(Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->flowCombine(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->flowOf(Ljava/lang/Object;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->flowOn(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/CoroutineContext;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->launchIn(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/CoroutineScope;)Lkotlinx/coroutines/Job; +HSPLkotlinx/coroutines/flow/FlowKt;->mapLatest(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->merge(Ljava/lang/Iterable;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->merge([Lkotlinx/coroutines/flow/Flow;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->onEach(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->onStart(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->runningFold(Lkotlinx/coroutines/flow/Flow;Ljava/lang/Object;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->runningReduce(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->scan(Lkotlinx/coroutines/flow/Flow;Ljava/lang/Object;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->shareIn$default(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/flow/SharingStarted;IILjava/lang/Object;)Lkotlinx/coroutines/flow/SharedFlow; +HSPLkotlinx/coroutines/flow/FlowKt;->shareIn(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/flow/SharingStarted;I)Lkotlinx/coroutines/flow/SharedFlow; +HSPLkotlinx/coroutines/flow/FlowKt;->stateIn(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/flow/SharingStarted;Ljava/lang/Object;)Lkotlinx/coroutines/flow/StateFlow; +HSPLkotlinx/coroutines/flow/FlowKt;->transformLatest(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->withIndex(Lkotlinx/coroutines/flow/Flow;)Lkotlinx/coroutines/flow/Flow; +Lkotlinx/coroutines/flow/FlowKt__BuildersKt; +HSPLkotlinx/coroutines/flow/FlowKt__BuildersKt;->asFlow(Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__BuildersKt;->callbackFlow(Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__BuildersKt;->channelFlow(Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__BuildersKt;->emptyFlow()Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__BuildersKt;->flow(Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__BuildersKt;->flowOf(Ljava/lang/Object;)Lkotlinx/coroutines/flow/Flow; +Lkotlinx/coroutines/flow/FlowKt__BuildersKt$asFlow$$inlined$unsafeFlow$2; +HSPLkotlinx/coroutines/flow/FlowKt__BuildersKt$asFlow$$inlined$unsafeFlow$2;->(Lkotlin/jvm/functions/Function1;)V +HSPLkotlinx/coroutines/flow/FlowKt__BuildersKt$asFlow$$inlined$unsafeFlow$2;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__BuildersKt$asFlow$$inlined$unsafeFlow$2$1; +HSPLkotlinx/coroutines/flow/FlowKt__BuildersKt$asFlow$$inlined$unsafeFlow$2$1;->(Lkotlinx/coroutines/flow/FlowKt__BuildersKt$asFlow$$inlined$unsafeFlow$2;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__BuildersKt$asFlow$$inlined$unsafeFlow$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__BuildersKt$flowOf$$inlined$unsafeFlow$2; +HSPLkotlinx/coroutines/flow/FlowKt__BuildersKt$flowOf$$inlined$unsafeFlow$2;->(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/flow/FlowKt__BuildersKt$flowOf$$inlined$unsafeFlow$2;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ChannelsKt; +HSPLkotlinx/coroutines/flow/FlowKt__ChannelsKt;->access$emitAllImpl$FlowKt__ChannelsKt(Lkotlinx/coroutines/flow/FlowCollector;Lkotlinx/coroutines/channels/ReceiveChannel;ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ChannelsKt;->emitAll(Lkotlinx/coroutines/flow/FlowCollector;Lkotlinx/coroutines/channels/ReceiveChannel;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ChannelsKt;->emitAllImpl$FlowKt__ChannelsKt(Lkotlinx/coroutines/flow/FlowCollector;Lkotlinx/coroutines/channels/ReceiveChannel;ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ChannelsKt$emitAllImpl$1; +HSPLkotlinx/coroutines/flow/FlowKt__ChannelsKt$emitAllImpl$1;->(Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__ChannelsKt$emitAllImpl$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__CollectKt; +HSPLkotlinx/coroutines/flow/FlowKt__CollectKt;->collect(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__CollectKt;->collectLatest(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__CollectKt;->emitAll(Lkotlinx/coroutines/flow/FlowCollector;Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__CollectKt;->launchIn(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/CoroutineScope;)Lkotlinx/coroutines/Job; +Lkotlinx/coroutines/flow/FlowKt__CollectKt$launchIn$1; +HSPLkotlinx/coroutines/flow/FlowKt__CollectKt$launchIn$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__CollectKt$launchIn$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/FlowKt__CollectKt$launchIn$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ContextKt; +HSPLkotlinx/coroutines/flow/FlowKt__ContextKt;->buffer$default(Lkotlinx/coroutines/flow/Flow;ILkotlinx/coroutines/channels/BufferOverflow;ILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__ContextKt;->buffer(Lkotlinx/coroutines/flow/Flow;ILkotlinx/coroutines/channels/BufferOverflow;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__ContextKt;->checkFlowContext$FlowKt__ContextKt(Lkotlin/coroutines/CoroutineContext;)V +HSPLkotlinx/coroutines/flow/FlowKt__ContextKt;->conflate(Lkotlinx/coroutines/flow/Flow;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__ContextKt;->flowOn(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/CoroutineContext;)Lkotlinx/coroutines/flow/Flow; +Lkotlinx/coroutines/flow/FlowKt__DelayKt; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt;->debounce(Lkotlinx/coroutines/flow/Flow;J)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt;->debounceInternal$FlowKt__DelayKt(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/flow/Flow; +Lkotlinx/coroutines/flow/FlowKt__DelayKt$debounce$2; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounce$2;->(J)V +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounce$2;->invoke(Ljava/lang/Object;)Ljava/lang/Long; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounce$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1;->(Lkotlin/jvm/functions/Function1;Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$3$1; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$3$1;->(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/jvm/internal/Ref$ObjectRef;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$3$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$3$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$3$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$3$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$3$2; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$3$2;->(Lkotlin/jvm/internal/Ref$ObjectRef;Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$3$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$3$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$3$2;->invoke-WpGqRn0(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$3$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$values$1; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$values$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$values$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$values$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$values$1$1; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$values$1$1;->(Lkotlinx/coroutines/channels/ProducerScope;)V +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$values$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$values$1$1$emit$1; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$values$1$1$emit$1;->(Lkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$values$1$1;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$values$1$1$emit$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__DistinctKt; +HSPLkotlinx/coroutines/flow/FlowKt__DistinctKt;->()V +HSPLkotlinx/coroutines/flow/FlowKt__DistinctKt;->distinctUntilChanged(Lkotlinx/coroutines/flow/Flow;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__DistinctKt;->distinctUntilChanged(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__DistinctKt;->distinctUntilChangedBy$FlowKt__DistinctKt(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +Lkotlinx/coroutines/flow/FlowKt__DistinctKt$defaultAreEquivalent$1; +HSPLkotlinx/coroutines/flow/FlowKt__DistinctKt$defaultAreEquivalent$1;->()V +HSPLkotlinx/coroutines/flow/FlowKt__DistinctKt$defaultAreEquivalent$1;->()V +HSPLkotlinx/coroutines/flow/FlowKt__DistinctKt$defaultAreEquivalent$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Boolean; +HSPLkotlinx/coroutines/flow/FlowKt__DistinctKt$defaultAreEquivalent$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__DistinctKt$defaultKeySelector$1; +HSPLkotlinx/coroutines/flow/FlowKt__DistinctKt$defaultKeySelector$1;->()V +HSPLkotlinx/coroutines/flow/FlowKt__DistinctKt$defaultKeySelector$1;->()V +HSPLkotlinx/coroutines/flow/FlowKt__DistinctKt$defaultKeySelector$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__EmittersKt; +HSPLkotlinx/coroutines/flow/FlowKt__EmittersKt;->ensureActive(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLkotlinx/coroutines/flow/FlowKt__EmittersKt;->onStart(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +Lkotlinx/coroutines/flow/FlowKt__EmittersKt$onStart$$inlined$unsafeFlow$1; +HSPLkotlinx/coroutines/flow/FlowKt__EmittersKt$onStart$$inlined$unsafeFlow$1;->(Lkotlin/jvm/functions/Function2;Lkotlinx/coroutines/flow/Flow;)V +HSPLkotlinx/coroutines/flow/FlowKt__EmittersKt$onStart$$inlined$unsafeFlow$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__EmittersKt$onStart$$inlined$unsafeFlow$1$1; +HSPLkotlinx/coroutines/flow/FlowKt__EmittersKt$onStart$$inlined$unsafeFlow$1$1;->(Lkotlinx/coroutines/flow/FlowKt__EmittersKt$onStart$$inlined$unsafeFlow$1;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__EmittersKt$onStart$$inlined$unsafeFlow$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ErrorsKt; +HSPLkotlinx/coroutines/flow/FlowKt__ErrorsKt;->catch(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__ErrorsKt;->catchImpl(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ErrorsKt$catch$$inlined$unsafeFlow$1; +HSPLkotlinx/coroutines/flow/FlowKt__ErrorsKt$catch$$inlined$unsafeFlow$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)V +HSPLkotlinx/coroutines/flow/FlowKt__ErrorsKt$catch$$inlined$unsafeFlow$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ErrorsKt$catch$$inlined$unsafeFlow$1$1; +HSPLkotlinx/coroutines/flow/FlowKt__ErrorsKt$catch$$inlined$unsafeFlow$1$1;->(Lkotlinx/coroutines/flow/FlowKt__ErrorsKt$catch$$inlined$unsafeFlow$1;Lkotlin/coroutines/Continuation;)V +Lkotlinx/coroutines/flow/FlowKt__ErrorsKt$catchImpl$1; +HSPLkotlinx/coroutines/flow/FlowKt__ErrorsKt$catchImpl$1;->(Lkotlin/coroutines/Continuation;)V +Lkotlinx/coroutines/flow/FlowKt__ErrorsKt$catchImpl$2; +HSPLkotlinx/coroutines/flow/FlowKt__ErrorsKt$catchImpl$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/jvm/internal/Ref$ObjectRef;)V +HSPLkotlinx/coroutines/flow/FlowKt__ErrorsKt$catchImpl$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ErrorsKt$catchImpl$2$emit$1; +HSPLkotlinx/coroutines/flow/FlowKt__ErrorsKt$catchImpl$2$emit$1;->(Lkotlinx/coroutines/flow/FlowKt__ErrorsKt$catchImpl$2;Lkotlin/coroutines/Continuation;)V +Lkotlinx/coroutines/flow/FlowKt__LimitKt; +HSPLkotlinx/coroutines/flow/FlowKt__LimitKt;->dropWhile(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +Lkotlinx/coroutines/flow/FlowKt__LimitKt$dropWhile$$inlined$unsafeFlow$1; +HSPLkotlinx/coroutines/flow/FlowKt__LimitKt$dropWhile$$inlined$unsafeFlow$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;)V +HSPLkotlinx/coroutines/flow/FlowKt__LimitKt$dropWhile$$inlined$unsafeFlow$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__LimitKt$dropWhile$1$1; +HSPLkotlinx/coroutines/flow/FlowKt__LimitKt$dropWhile$1$1;->(Lkotlin/jvm/internal/Ref$BooleanRef;Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/jvm/functions/Function2;)V +HSPLkotlinx/coroutines/flow/FlowKt__LimitKt$dropWhile$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__LimitKt$dropWhile$1$1$emit$1; +HSPLkotlinx/coroutines/flow/FlowKt__LimitKt$dropWhile$1$1$emit$1;->(Lkotlinx/coroutines/flow/FlowKt__LimitKt$dropWhile$1$1;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__LimitKt$dropWhile$1$1$emit$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__MergeKt; +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt;->()V +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt;->flattenConcat(Lkotlinx/coroutines/flow/Flow;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt;->mapLatest(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt;->merge(Ljava/lang/Iterable;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt;->merge([Lkotlinx/coroutines/flow/Flow;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt;->transformLatest(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow; +Lkotlinx/coroutines/flow/FlowKt__MergeKt$flattenConcat$$inlined$unsafeFlow$1; +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt$flattenConcat$$inlined$unsafeFlow$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt$flattenConcat$$inlined$unsafeFlow$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__MergeKt$flattenConcat$1$1; +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt$flattenConcat$1$1;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt$flattenConcat$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt$flattenConcat$1$1;->emit(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__MergeKt$flattenConcat$1$1$emit$1; +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt$flattenConcat$1$1$emit$1;->(Lkotlinx/coroutines/flow/FlowKt__MergeKt$flattenConcat$1$1;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt$flattenConcat$1$1$emit$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__MergeKt$mapLatest$1; +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt$mapLatest$1;->(Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt$mapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt$mapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt$mapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ReduceKt; +HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt;->first(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt;->first(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt;->firstOrNull(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ReduceKt$first$$inlined$collectWhile$1; +HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$first$$inlined$collectWhile$1;->(Lkotlin/jvm/internal/Ref$ObjectRef;)V +HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$first$$inlined$collectWhile$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ReduceKt$first$$inlined$collectWhile$2; +HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$first$$inlined$collectWhile$2;->(Lkotlin/jvm/functions/Function2;Lkotlin/jvm/internal/Ref$ObjectRef;)V +HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$first$$inlined$collectWhile$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ReduceKt$first$$inlined$collectWhile$2$1; +HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$first$$inlined$collectWhile$2$1;->(Lkotlinx/coroutines/flow/FlowKt__ReduceKt$first$$inlined$collectWhile$2;Lkotlin/coroutines/Continuation;)V +Lkotlinx/coroutines/flow/FlowKt__ReduceKt$first$1; +HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$first$1;->(Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$first$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ReduceKt$first$3; +HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$first$3;->(Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$first$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ReduceKt$firstOrNull$$inlined$collectWhile$1; +HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$firstOrNull$$inlined$collectWhile$1;->(Lkotlin/jvm/internal/Ref$ObjectRef;)V +HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$firstOrNull$$inlined$collectWhile$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ReduceKt$firstOrNull$1; +HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$firstOrNull$1;->(Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$firstOrNull$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ShareKt; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt;->asStateFlow(Lkotlinx/coroutines/flow/MutableStateFlow;)Lkotlinx/coroutines/flow/StateFlow; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt;->configureSharing$FlowKt__ShareKt(Lkotlinx/coroutines/flow/Flow;I)Lkotlinx/coroutines/flow/SharingConfig; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt;->launchSharing$FlowKt__ShareKt(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/MutableSharedFlow;Lkotlinx/coroutines/flow/SharingStarted;Ljava/lang/Object;)Lkotlinx/coroutines/Job; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt;->shareIn$default(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/flow/SharingStarted;IILjava/lang/Object;)Lkotlinx/coroutines/flow/SharedFlow; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt;->shareIn(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/flow/SharingStarted;I)Lkotlinx/coroutines/flow/SharedFlow; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt;->stateIn(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/flow/SharingStarted;Ljava/lang/Object;)Lkotlinx/coroutines/flow/StateFlow; +Lkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1;->(Lkotlinx/coroutines/flow/SharingStarted;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/MutableSharedFlow;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$1; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$1;->(Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$1;->invoke(ILkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$2; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$2;->(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/MutableSharedFlow;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$2;->invoke(Lkotlinx/coroutines/flow/SharingCommand;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$2$WhenMappings; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$2$WhenMappings;->()V +Lkotlinx/coroutines/flow/FlowKt__TransformKt; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt;->onEach(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt;->runningFold(Lkotlinx/coroutines/flow/Flow;Ljava/lang/Object;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt;->runningReduce(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt;->scan(Lkotlinx/coroutines/flow/Flow;Ljava/lang/Object;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt;->withIndex(Lkotlinx/coroutines/flow/Flow;)Lkotlinx/coroutines/flow/Flow; +Lkotlinx/coroutines/flow/FlowKt__TransformKt$onEach$$inlined$unsafeTransform$1; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$onEach$$inlined$unsafeTransform$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;)V +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$onEach$$inlined$unsafeTransform$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__TransformKt$onEach$$inlined$unsafeTransform$1$2; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$onEach$$inlined$unsafeTransform$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/jvm/functions/Function2;)V +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$onEach$$inlined$unsafeTransform$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__TransformKt$onEach$$inlined$unsafeTransform$1$2$1; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$onEach$$inlined$unsafeTransform$1$2$1;->(Lkotlinx/coroutines/flow/FlowKt__TransformKt$onEach$$inlined$unsafeTransform$1$2;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$onEach$$inlined$unsafeTransform$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__TransformKt$runningFold$$inlined$unsafeFlow$1; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$runningFold$$inlined$unsafeFlow$1;->(Ljava/lang/Object;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)V +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$runningFold$$inlined$unsafeFlow$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__TransformKt$runningFold$$inlined$unsafeFlow$1$1; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$runningFold$$inlined$unsafeFlow$1$1;->(Lkotlinx/coroutines/flow/FlowKt__TransformKt$runningFold$$inlined$unsafeFlow$1;Lkotlin/coroutines/Continuation;)V +Lkotlinx/coroutines/flow/FlowKt__TransformKt$runningFold$1$1; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$runningFold$1$1;->(Lkotlin/jvm/internal/Ref$ObjectRef;Lkotlin/jvm/functions/Function3;Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$runningFold$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__TransformKt$runningFold$1$1$emit$1; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$runningFold$1$1$emit$1;->(Lkotlinx/coroutines/flow/FlowKt__TransformKt$runningFold$1$1;Lkotlin/coroutines/Continuation;)V +Lkotlinx/coroutines/flow/FlowKt__TransformKt$runningReduce$$inlined$unsafeFlow$1; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$runningReduce$$inlined$unsafeFlow$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)V +Lkotlinx/coroutines/flow/FlowKt__TransformKt$withIndex$$inlined$unsafeFlow$1; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$withIndex$$inlined$unsafeFlow$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$withIndex$$inlined$unsafeFlow$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__TransformKt$withIndex$1$1; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$withIndex$1$1;->(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/jvm/internal/Ref$IntRef;)V +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$withIndex$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__TransformKt$withIndex$1$1$emit$1; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$withIndex$1$1$emit$1;->(Lkotlinx/coroutines/flow/FlowKt__TransformKt$withIndex$1$1;Lkotlin/coroutines/Continuation;)V +Lkotlinx/coroutines/flow/FlowKt__ZipKt; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt;->access$nullArrayFactory()Lkotlin/jvm/functions/Function0; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt;->combine(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt;->combine(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function4;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt;->combine(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function5;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt;->combine(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function6;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt;->flowCombine(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt;->nullArrayFactory$FlowKt__ZipKt()Lkotlin/jvm/functions/Function0; +Lkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$1; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$1;->([Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function4;)V +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$1$2; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$1$2;->(Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function4;)V +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$1$2;->invoke(Lkotlinx/coroutines/flow/FlowCollector;[Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$1$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$2; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$2;->([Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function5;)V +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$2;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$2$2; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$2$2;->(Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function5;)V +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$2$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$2$2;->invoke(Lkotlinx/coroutines/flow/FlowCollector;[Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$2$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$3; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$3;->([Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function6;)V +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$3;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$3$2; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$3$2;->(Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function6;)V +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$3$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$3$2;->invoke(Lkotlinx/coroutines/flow/FlowCollector;[Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$3$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$unsafeFlow$1; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$unsafeFlow$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)V +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$unsafeFlow$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ZipKt$combine$1$1; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$1$1;->(Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$1$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;[Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ZipKt$nullArrayFactory$1; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$nullArrayFactory$1;->()V +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$nullArrayFactory$1;->()V +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$nullArrayFactory$1;->invoke()Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$nullArrayFactory$1;->invoke()Ljava/lang/Void; +Lkotlinx/coroutines/flow/MutableSharedFlow; +Lkotlinx/coroutines/flow/MutableStateFlow; +Lkotlinx/coroutines/flow/ReadonlySharedFlow; +HSPLkotlinx/coroutines/flow/ReadonlySharedFlow;->(Lkotlinx/coroutines/flow/SharedFlow;Lkotlinx/coroutines/Job;)V +HSPLkotlinx/coroutines/flow/ReadonlySharedFlow;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/ReadonlyStateFlow; +HSPLkotlinx/coroutines/flow/ReadonlyStateFlow;->(Lkotlinx/coroutines/flow/StateFlow;Lkotlinx/coroutines/Job;)V +HSPLkotlinx/coroutines/flow/ReadonlyStateFlow;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/ReadonlyStateFlow;->getValue()Ljava/lang/Object; +Lkotlinx/coroutines/flow/SafeFlow; +HSPLkotlinx/coroutines/flow/SafeFlow;->(Lkotlin/jvm/functions/Function2;)V +HSPLkotlinx/coroutines/flow/SafeFlow;->collectSafely(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/SharedFlow; +Lkotlinx/coroutines/flow/SharedFlowImpl; +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->(IILkotlinx/coroutines/channels/BufferOverflow;)V +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->access$tryPeekLocked(Lkotlinx/coroutines/flow/SharedFlowImpl;Lkotlinx/coroutines/flow/SharedFlowSlot;)J +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->awaitValue(Lkotlinx/coroutines/flow/SharedFlowSlot;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->cleanupTailLocked()V +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->collect$suspendImpl(Lkotlinx/coroutines/flow/SharedFlowImpl;Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->createSlot()Lkotlinx/coroutines/flow/SharedFlowSlot; +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->createSlot()Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot; +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->createSlotArray(I)[Lkotlinx/coroutines/flow/SharedFlowSlot; +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->createSlotArray(I)[Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot; +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->dropOldestLocked()V +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->emit$suspendImpl(Lkotlinx/coroutines/flow/SharedFlowImpl;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->enqueueLocked(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->findSlotsToResumeLocked([Lkotlin/coroutines/Continuation;)[Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->getBufferEndIndex()J +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->getHead()J +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->getLastReplayedLocked()Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->getPeekedValueLockedAt(J)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->getQueueEndIndex()J +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->getReplaySize()I +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->getTotalSize()I +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->growBuffer([Ljava/lang/Object;II)[Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->tryEmit(Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->tryEmitLocked(Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->tryEmitNoCollectorsLocked(Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->tryPeekLocked(Lkotlinx/coroutines/flow/SharedFlowSlot;)J +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->tryTakeValue(Lkotlinx/coroutines/flow/SharedFlowSlot;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->updateBufferLocked(JJJJ)V +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->updateCollectorIndexLocked$kotlinx_coroutines_core(J)[Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->updateNewCollectorIndexLocked$kotlinx_coroutines_core()J +Lkotlinx/coroutines/flow/SharedFlowImpl$Emitter; +Lkotlinx/coroutines/flow/SharedFlowImpl$collect$1; +HSPLkotlinx/coroutines/flow/SharedFlowImpl$collect$1;->(Lkotlinx/coroutines/flow/SharedFlowImpl;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/SharedFlowImpl$collect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/SharedFlowKt; +HSPLkotlinx/coroutines/flow/SharedFlowKt;->()V +HSPLkotlinx/coroutines/flow/SharedFlowKt;->MutableSharedFlow$default(IILkotlinx/coroutines/channels/BufferOverflow;ILjava/lang/Object;)Lkotlinx/coroutines/flow/MutableSharedFlow; +HSPLkotlinx/coroutines/flow/SharedFlowKt;->MutableSharedFlow(IILkotlinx/coroutines/channels/BufferOverflow;)Lkotlinx/coroutines/flow/MutableSharedFlow; +HSPLkotlinx/coroutines/flow/SharedFlowKt;->access$getBufferAt([Ljava/lang/Object;J)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/SharedFlowKt;->access$setBufferAt([Ljava/lang/Object;JLjava/lang/Object;)V +HSPLkotlinx/coroutines/flow/SharedFlowKt;->getBufferAt([Ljava/lang/Object;J)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/SharedFlowKt;->setBufferAt([Ljava/lang/Object;JLjava/lang/Object;)V +Lkotlinx/coroutines/flow/SharedFlowSlot; +HSPLkotlinx/coroutines/flow/SharedFlowSlot;->()V +HSPLkotlinx/coroutines/flow/SharedFlowSlot;->allocateLocked(Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/flow/SharedFlowSlot;->allocateLocked(Lkotlinx/coroutines/flow/SharedFlowImpl;)Z +HSPLkotlinx/coroutines/flow/SharedFlowSlot;->freeLocked(Ljava/lang/Object;)[Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/SharedFlowSlot;->freeLocked(Lkotlinx/coroutines/flow/SharedFlowImpl;)[Lkotlin/coroutines/Continuation; +Lkotlinx/coroutines/flow/SharingCommand; +HSPLkotlinx/coroutines/flow/SharingCommand;->$values()[Lkotlinx/coroutines/flow/SharingCommand; +HSPLkotlinx/coroutines/flow/SharingCommand;->()V +HSPLkotlinx/coroutines/flow/SharingCommand;->(Ljava/lang/String;I)V +HSPLkotlinx/coroutines/flow/SharingCommand;->values()[Lkotlinx/coroutines/flow/SharingCommand; +Lkotlinx/coroutines/flow/SharingConfig; +HSPLkotlinx/coroutines/flow/SharingConfig;->(Lkotlinx/coroutines/flow/Flow;ILkotlinx/coroutines/channels/BufferOverflow;Lkotlin/coroutines/CoroutineContext;)V +Lkotlinx/coroutines/flow/SharingStarted; +HSPLkotlinx/coroutines/flow/SharingStarted;->()V +Lkotlinx/coroutines/flow/SharingStarted$Companion; +HSPLkotlinx/coroutines/flow/SharingStarted$Companion;->()V +HSPLkotlinx/coroutines/flow/SharingStarted$Companion;->()V +HSPLkotlinx/coroutines/flow/SharingStarted$Companion;->WhileSubscribed$default(Lkotlinx/coroutines/flow/SharingStarted$Companion;JJILjava/lang/Object;)Lkotlinx/coroutines/flow/SharingStarted; +HSPLkotlinx/coroutines/flow/SharingStarted$Companion;->WhileSubscribed(JJ)Lkotlinx/coroutines/flow/SharingStarted; +HSPLkotlinx/coroutines/flow/SharingStarted$Companion;->getEagerly()Lkotlinx/coroutines/flow/SharingStarted; +HSPLkotlinx/coroutines/flow/SharingStarted$Companion;->getLazily()Lkotlinx/coroutines/flow/SharingStarted; +Lkotlinx/coroutines/flow/StartedEagerly; +HSPLkotlinx/coroutines/flow/StartedEagerly;->()V +Lkotlinx/coroutines/flow/StartedLazily; +HSPLkotlinx/coroutines/flow/StartedLazily;->()V +Lkotlinx/coroutines/flow/StartedWhileSubscribed; +HSPLkotlinx/coroutines/flow/StartedWhileSubscribed;->(JJ)V +HSPLkotlinx/coroutines/flow/StartedWhileSubscribed;->access$getReplayExpiration$p(Lkotlinx/coroutines/flow/StartedWhileSubscribed;)J +HSPLkotlinx/coroutines/flow/StartedWhileSubscribed;->access$getStopTimeout$p(Lkotlinx/coroutines/flow/StartedWhileSubscribed;)J +HSPLkotlinx/coroutines/flow/StartedWhileSubscribed;->command(Lkotlinx/coroutines/flow/StateFlow;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/StartedWhileSubscribed;->equals(Ljava/lang/Object;)Z +Lkotlinx/coroutines/flow/StartedWhileSubscribed$command$1; +HSPLkotlinx/coroutines/flow/StartedWhileSubscribed$command$1;->(Lkotlinx/coroutines/flow/StartedWhileSubscribed;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/StartedWhileSubscribed$command$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/StartedWhileSubscribed$command$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;ILkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/StartedWhileSubscribed$command$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/StartedWhileSubscribed$command$2; +HSPLkotlinx/coroutines/flow/StartedWhileSubscribed$command$2;->(Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/StartedWhileSubscribed$command$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/StartedWhileSubscribed$command$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/StartedWhileSubscribed$command$2;->invoke(Lkotlinx/coroutines/flow/SharingCommand;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/StartedWhileSubscribed$command$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/StateFlow; +Lkotlinx/coroutines/flow/StateFlowImpl; +HSPLkotlinx/coroutines/flow/StateFlowImpl;->()V +HSPLkotlinx/coroutines/flow/StateFlowImpl;->(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/flow/StateFlowImpl;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/StateFlowImpl;->compareAndSet(Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/flow/StateFlowImpl;->createSlot()Lkotlinx/coroutines/flow/StateFlowSlot; +HSPLkotlinx/coroutines/flow/StateFlowImpl;->createSlot()Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot; +HSPLkotlinx/coroutines/flow/StateFlowImpl;->createSlotArray(I)[Lkotlinx/coroutines/flow/StateFlowSlot; +HSPLkotlinx/coroutines/flow/StateFlowImpl;->createSlotArray(I)[Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot; +HSPLkotlinx/coroutines/flow/StateFlowImpl;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/StateFlowImpl;->getValue()Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/StateFlowImpl;->get_state$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/flow/StateFlowImpl;->setValue(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/flow/StateFlowImpl;->updateState(Ljava/lang/Object;Ljava/lang/Object;)Z +Lkotlinx/coroutines/flow/StateFlowImpl$collect$1; +HSPLkotlinx/coroutines/flow/StateFlowImpl$collect$1;->(Lkotlinx/coroutines/flow/StateFlowImpl;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/StateFlowImpl$collect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/StateFlowKt; +HSPLkotlinx/coroutines/flow/StateFlowKt;->()V +HSPLkotlinx/coroutines/flow/StateFlowKt;->MutableStateFlow(Ljava/lang/Object;)Lkotlinx/coroutines/flow/MutableStateFlow; +HSPLkotlinx/coroutines/flow/StateFlowKt;->access$getNONE$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/flow/StateFlowKt;->access$getPENDING$p()Lkotlinx/coroutines/internal/Symbol; +Lkotlinx/coroutines/flow/StateFlowSlot; +HSPLkotlinx/coroutines/flow/StateFlowSlot;->()V +HSPLkotlinx/coroutines/flow/StateFlowSlot;->()V +HSPLkotlinx/coroutines/flow/StateFlowSlot;->access$get_state$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/flow/StateFlowSlot;->allocateLocked(Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/flow/StateFlowSlot;->allocateLocked(Lkotlinx/coroutines/flow/StateFlowImpl;)Z +HSPLkotlinx/coroutines/flow/StateFlowSlot;->awaitPending(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/StateFlowSlot;->freeLocked(Ljava/lang/Object;)[Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/StateFlowSlot;->freeLocked(Lkotlinx/coroutines/flow/StateFlowImpl;)[Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/StateFlowSlot;->get_state$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/flow/StateFlowSlot;->makePending()V +HSPLkotlinx/coroutines/flow/StateFlowSlot;->takePending()Z +Lkotlinx/coroutines/flow/SubscribedFlowCollector; +Lkotlinx/coroutines/flow/ThrowingCollector; +Lkotlinx/coroutines/flow/internal/AbortFlowException; +HSPLkotlinx/coroutines/flow/internal/AbortFlowException;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLkotlinx/coroutines/flow/internal/AbortFlowException;->fillInStackTrace()Ljava/lang/Throwable; +Lkotlinx/coroutines/flow/internal/AbstractSharedFlow; +HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlow;->()V +HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlow;->access$getNCollectors(Lkotlinx/coroutines/flow/internal/AbstractSharedFlow;)I +HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlow;->access$getSlots(Lkotlinx/coroutines/flow/internal/AbstractSharedFlow;)[Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot; +HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlow;->allocateSlot()Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot; +HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlow;->freeSlot(Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot;)V +HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlow;->getNCollectors()I +HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlow;->getSlots()[Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot; +HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlow;->getSubscriptionCount()Lkotlinx/coroutines/flow/StateFlow; +Lkotlinx/coroutines/flow/internal/AbstractSharedFlowKt; +HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlowKt;->()V +Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot; +HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot;->()V +Lkotlinx/coroutines/flow/internal/ChannelFlow; +HSPLkotlinx/coroutines/flow/internal/ChannelFlow;->(Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;)V +HSPLkotlinx/coroutines/flow/internal/ChannelFlow;->collect$suspendImpl(Lkotlinx/coroutines/flow/internal/ChannelFlow;Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/ChannelFlow;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/ChannelFlow;->dropChannelOperators()Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/internal/ChannelFlow;->fuse(Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/internal/ChannelFlow;->getCollectToFun$kotlinx_coroutines_core()Lkotlin/jvm/functions/Function2; +HSPLkotlinx/coroutines/flow/internal/ChannelFlow;->getProduceCapacity$kotlinx_coroutines_core()I +HSPLkotlinx/coroutines/flow/internal/ChannelFlow;->produceImpl(Lkotlinx/coroutines/CoroutineScope;)Lkotlinx/coroutines/channels/ReceiveChannel; +Lkotlinx/coroutines/flow/internal/ChannelFlow$collect$2; +HSPLkotlinx/coroutines/flow/internal/ChannelFlow$collect$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lkotlinx/coroutines/flow/internal/ChannelFlow;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/internal/ChannelFlow$collect$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/internal/ChannelFlow$collect$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/ChannelFlow$collect$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/ChannelFlow$collect$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/ChannelFlow$collectToFun$1; +HSPLkotlinx/coroutines/flow/internal/ChannelFlow$collectToFun$1;->(Lkotlinx/coroutines/flow/internal/ChannelFlow;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/internal/ChannelFlow$collectToFun$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/internal/ChannelFlow$collectToFun$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/ChannelFlowOperator; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowOperator;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;)V +HSPLkotlinx/coroutines/flow/internal/ChannelFlowOperator;->collect$suspendImpl(Lkotlinx/coroutines/flow/internal/ChannelFlowOperator;Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowOperator;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowOperator;->collectTo$suspendImpl(Lkotlinx/coroutines/flow/internal/ChannelFlowOperator;Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowOperator;->collectTo(Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/ChannelFlowOperatorImpl; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowOperatorImpl;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;)V +HSPLkotlinx/coroutines/flow/internal/ChannelFlowOperatorImpl;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/coroutines/flow/internal/ChannelFlowOperatorImpl;->dropChannelOperators()Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowOperatorImpl;->flowCollect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest;->(Lkotlin/jvm/functions/Function3;Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;)V +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest;->(Lkotlin/jvm/functions/Function3;Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest;->access$getTransform$p(Lkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest;)Lkotlin/jvm/functions/Function3; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest;->create(Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;)Lkotlinx/coroutines/flow/internal/ChannelFlow; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest;->flowCollect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3;->(Lkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest;Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1;->(Lkotlin/jvm/internal/Ref$ObjectRef;Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest;Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1$2; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1$2;->(Lkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest;Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1$emit$1; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1$emit$1;->(Lkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1$emit$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/ChannelLimitedFlowMerge; +HSPLkotlinx/coroutines/flow/internal/ChannelLimitedFlowMerge;->(Ljava/lang/Iterable;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;)V +HSPLkotlinx/coroutines/flow/internal/ChannelLimitedFlowMerge;->(Ljava/lang/Iterable;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/coroutines/flow/internal/ChildCancelledException; +HSPLkotlinx/coroutines/flow/internal/ChildCancelledException;->()V +HSPLkotlinx/coroutines/flow/internal/ChildCancelledException;->fillInStackTrace()Ljava/lang/Throwable; +Lkotlinx/coroutines/flow/internal/CombineKt; +HSPLkotlinx/coroutines/flow/internal/CombineKt;->combineInternal(Lkotlinx/coroutines/flow/FlowCollector;[Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2; +HSPLkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2;->([Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2$1; +HSPLkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2$1;->([Lkotlinx/coroutines/flow/Flow;ILjava/util/concurrent/atomic/AtomicInteger;Lkotlinx/coroutines/channels/Channel;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2$1$1; +HSPLkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2$1$1;->(Lkotlinx/coroutines/channels/Channel;I)V +HSPLkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2$1$1$emit$1; +HSPLkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2$1$1$emit$1;->(Lkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2$1$1;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2$1$1$emit$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/DownstreamExceptionContext; +HSPLkotlinx/coroutines/flow/internal/DownstreamExceptionContext;->(Ljava/lang/Throwable;Lkotlin/coroutines/CoroutineContext;)V +Lkotlinx/coroutines/flow/internal/FlowCoroutine; +HSPLkotlinx/coroutines/flow/internal/FlowCoroutine;->(Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/internal/FlowCoroutine;->childCancelled(Ljava/lang/Throwable;)Z +Lkotlinx/coroutines/flow/internal/FlowCoroutineKt; +HSPLkotlinx/coroutines/flow/internal/FlowCoroutineKt;->flowScope(Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/FlowCoroutineKt;->scopedFlow(Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow; +Lkotlinx/coroutines/flow/internal/FlowCoroutineKt$scopedFlow$$inlined$unsafeFlow$1; +HSPLkotlinx/coroutines/flow/internal/FlowCoroutineKt$scopedFlow$$inlined$unsafeFlow$1;->(Lkotlin/jvm/functions/Function3;)V +HSPLkotlinx/coroutines/flow/internal/FlowCoroutineKt$scopedFlow$$inlined$unsafeFlow$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/FlowCoroutineKt$scopedFlow$1$1; +HSPLkotlinx/coroutines/flow/internal/FlowCoroutineKt$scopedFlow$1$1;->(Lkotlin/jvm/functions/Function3;Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/internal/FlowCoroutineKt$scopedFlow$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/internal/FlowCoroutineKt$scopedFlow$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/FlowCoroutineKt$scopedFlow$1$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/FlowCoroutineKt$scopedFlow$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/FlowExceptions_commonKt; +HSPLkotlinx/coroutines/flow/internal/FlowExceptions_commonKt;->checkOwnership(Lkotlinx/coroutines/flow/internal/AbortFlowException;Lkotlinx/coroutines/flow/FlowCollector;)V +Lkotlinx/coroutines/flow/internal/FusibleFlow; +Lkotlinx/coroutines/flow/internal/FusibleFlow$DefaultImpls; +HSPLkotlinx/coroutines/flow/internal/FusibleFlow$DefaultImpls;->fuse$default(Lkotlinx/coroutines/flow/internal/FusibleFlow;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;ILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow; +Lkotlinx/coroutines/flow/internal/NoOpContinuation; +HSPLkotlinx/coroutines/flow/internal/NoOpContinuation;->()V +HSPLkotlinx/coroutines/flow/internal/NoOpContinuation;->()V +Lkotlinx/coroutines/flow/internal/NopCollector; +HSPLkotlinx/coroutines/flow/internal/NopCollector;->()V +HSPLkotlinx/coroutines/flow/internal/NopCollector;->()V +HSPLkotlinx/coroutines/flow/internal/NopCollector;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/NullSurrogateKt; +HSPLkotlinx/coroutines/flow/internal/NullSurrogateKt;->()V +Lkotlinx/coroutines/flow/internal/SafeCollector; +HSPLkotlinx/coroutines/flow/internal/SafeCollector;->(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/CoroutineContext;)V +HSPLkotlinx/coroutines/flow/internal/SafeCollector;->checkContext(Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/CoroutineContext;Ljava/lang/Object;)V +HSPLkotlinx/coroutines/flow/internal/SafeCollector;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/SafeCollector;->emit(Lkotlin/coroutines/Continuation;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/SafeCollector;->getContext()Lkotlin/coroutines/CoroutineContext; +HSPLkotlinx/coroutines/flow/internal/SafeCollector;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/SafeCollector;->releaseIntercepted()V +Lkotlinx/coroutines/flow/internal/SafeCollector$collectContextSize$1; +HSPLkotlinx/coroutines/flow/internal/SafeCollector$collectContextSize$1;->()V +HSPLkotlinx/coroutines/flow/internal/SafeCollector$collectContextSize$1;->()V +HSPLkotlinx/coroutines/flow/internal/SafeCollector$collectContextSize$1;->invoke(ILkotlin/coroutines/CoroutineContext$Element;)Ljava/lang/Integer; +HSPLkotlinx/coroutines/flow/internal/SafeCollector$collectContextSize$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/SafeCollectorKt; +HSPLkotlinx/coroutines/flow/internal/SafeCollectorKt;->()V +HSPLkotlinx/coroutines/flow/internal/SafeCollectorKt;->access$getEmitFun$p()Lkotlin/jvm/functions/Function3; +Lkotlinx/coroutines/flow/internal/SafeCollectorKt$emitFun$1; +HSPLkotlinx/coroutines/flow/internal/SafeCollectorKt$emitFun$1;->()V +HSPLkotlinx/coroutines/flow/internal/SafeCollectorKt$emitFun$1;->()V +HSPLkotlinx/coroutines/flow/internal/SafeCollectorKt$emitFun$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/SafeCollectorKt$emitFun$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/SafeCollector_commonKt; +HSPLkotlinx/coroutines/flow/internal/SafeCollector_commonKt;->checkContext(Lkotlinx/coroutines/flow/internal/SafeCollector;Lkotlin/coroutines/CoroutineContext;)V +HSPLkotlinx/coroutines/flow/internal/SafeCollector_commonKt;->transitiveCoroutineParent(Lkotlinx/coroutines/Job;Lkotlinx/coroutines/Job;)Lkotlinx/coroutines/Job; +Lkotlinx/coroutines/flow/internal/SafeCollector_commonKt$checkContext$result$1; +HSPLkotlinx/coroutines/flow/internal/SafeCollector_commonKt$checkContext$result$1;->(Lkotlinx/coroutines/flow/internal/SafeCollector;)V +HSPLkotlinx/coroutines/flow/internal/SafeCollector_commonKt$checkContext$result$1;->invoke(ILkotlin/coroutines/CoroutineContext$Element;)Ljava/lang/Integer; +HSPLkotlinx/coroutines/flow/internal/SafeCollector_commonKt$checkContext$result$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/SendingCollector; +HSPLkotlinx/coroutines/flow/internal/SendingCollector;->(Lkotlinx/coroutines/channels/SendChannel;)V +HSPLkotlinx/coroutines/flow/internal/SendingCollector;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/SubscriptionCountStateFlow; +HSPLkotlinx/coroutines/flow/internal/SubscriptionCountStateFlow;->(I)V +HSPLkotlinx/coroutines/flow/internal/SubscriptionCountStateFlow;->increment(I)Z +Lkotlinx/coroutines/internal/AtomicKt; +HSPLkotlinx/coroutines/internal/AtomicKt;->()V +Lkotlinx/coroutines/internal/AtomicOp; +HSPLkotlinx/coroutines/internal/AtomicOp;->()V +HSPLkotlinx/coroutines/internal/AtomicOp;->()V +HSPLkotlinx/coroutines/internal/AtomicOp;->decide(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/internal/AtomicOp;->get_consensus$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/internal/AtomicOp;->perform(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/internal/ConcurrentKt; +HSPLkotlinx/coroutines/internal/ConcurrentKt;->()V +HSPLkotlinx/coroutines/internal/ConcurrentKt;->removeFutureOnCancel(Ljava/util/concurrent/Executor;)Z +Lkotlinx/coroutines/internal/ConcurrentLinkedListKt; +HSPLkotlinx/coroutines/internal/ConcurrentLinkedListKt;->()V +HSPLkotlinx/coroutines/internal/ConcurrentLinkedListKt;->access$getCLOSED$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/internal/ConcurrentLinkedListKt;->close(Lkotlinx/coroutines/internal/ConcurrentLinkedListNode;)Lkotlinx/coroutines/internal/ConcurrentLinkedListNode; +HSPLkotlinx/coroutines/internal/ConcurrentLinkedListKt;->findSegmentInternal(Lkotlinx/coroutines/internal/Segment;JLkotlin/jvm/functions/Function2;)Ljava/lang/Object; +Lkotlinx/coroutines/internal/ConcurrentLinkedListNode; +HSPLkotlinx/coroutines/internal/ConcurrentLinkedListNode;->()V +HSPLkotlinx/coroutines/internal/ConcurrentLinkedListNode;->(Lkotlinx/coroutines/internal/ConcurrentLinkedListNode;)V +HSPLkotlinx/coroutines/internal/ConcurrentLinkedListNode;->access$getNextOrClosed(Lkotlinx/coroutines/internal/ConcurrentLinkedListNode;)Ljava/lang/Object; +HSPLkotlinx/coroutines/internal/ConcurrentLinkedListNode;->cleanPrev()V +HSPLkotlinx/coroutines/internal/ConcurrentLinkedListNode;->getNext()Lkotlinx/coroutines/internal/ConcurrentLinkedListNode; +HSPLkotlinx/coroutines/internal/ConcurrentLinkedListNode;->getNextOrClosed()Ljava/lang/Object; +HSPLkotlinx/coroutines/internal/ConcurrentLinkedListNode;->getPrev()Lkotlinx/coroutines/internal/ConcurrentLinkedListNode; +HSPLkotlinx/coroutines/internal/ConcurrentLinkedListNode;->get_next$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/internal/ConcurrentLinkedListNode;->get_prev$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/internal/ConcurrentLinkedListNode;->markAsClosed()Z +HSPLkotlinx/coroutines/internal/ConcurrentLinkedListNode;->trySetNext(Lkotlinx/coroutines/internal/ConcurrentLinkedListNode;)Z +Lkotlinx/coroutines/internal/ContextScope; +HSPLkotlinx/coroutines/internal/ContextScope;->(Lkotlin/coroutines/CoroutineContext;)V +HSPLkotlinx/coroutines/internal/ContextScope;->getCoroutineContext()Lkotlin/coroutines/CoroutineContext; +Lkotlinx/coroutines/internal/DispatchedContinuation; +HSPLkotlinx/coroutines/internal/DispatchedContinuation;->()V +HSPLkotlinx/coroutines/internal/DispatchedContinuation;->(Lkotlinx/coroutines/CoroutineDispatcher;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/internal/DispatchedContinuation;->awaitReusability$kotlinx_coroutines_core()V +HSPLkotlinx/coroutines/internal/DispatchedContinuation;->claimReusableCancellableContinuation$kotlinx_coroutines_core()Lkotlinx/coroutines/CancellableContinuationImpl; +HSPLkotlinx/coroutines/internal/DispatchedContinuation;->dispatchYield$kotlinx_coroutines_core(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Object;)V +HSPLkotlinx/coroutines/internal/DispatchedContinuation;->getContext()Lkotlin/coroutines/CoroutineContext; +HSPLkotlinx/coroutines/internal/DispatchedContinuation;->getDelegate$kotlinx_coroutines_core()Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/internal/DispatchedContinuation;->getReusableCancellableContinuation()Lkotlinx/coroutines/CancellableContinuationImpl; +HSPLkotlinx/coroutines/internal/DispatchedContinuation;->get_reusableCancellableContinuation$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/internal/DispatchedContinuation;->isReusable$kotlinx_coroutines_core()Z +HSPLkotlinx/coroutines/internal/DispatchedContinuation;->postponeCancellation$kotlinx_coroutines_core(Ljava/lang/Throwable;)Z +HSPLkotlinx/coroutines/internal/DispatchedContinuation;->release$kotlinx_coroutines_core()V +HSPLkotlinx/coroutines/internal/DispatchedContinuation;->resumeWith(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/internal/DispatchedContinuation;->takeState$kotlinx_coroutines_core()Ljava/lang/Object; +HSPLkotlinx/coroutines/internal/DispatchedContinuation;->tryReleaseClaimedContinuation$kotlinx_coroutines_core(Lkotlinx/coroutines/CancellableContinuation;)Ljava/lang/Throwable; +Lkotlinx/coroutines/internal/DispatchedContinuationKt; +HSPLkotlinx/coroutines/internal/DispatchedContinuationKt;->()V +HSPLkotlinx/coroutines/internal/DispatchedContinuationKt;->access$getUNDEFINED$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/internal/DispatchedContinuationKt;->resumeCancellableWith$default(Lkotlin/coroutines/Continuation;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +HSPLkotlinx/coroutines/internal/DispatchedContinuationKt;->resumeCancellableWith(Lkotlin/coroutines/Continuation;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)V +Lkotlinx/coroutines/internal/FastServiceLoader; +HSPLkotlinx/coroutines/internal/FastServiceLoader;->()V +HSPLkotlinx/coroutines/internal/FastServiceLoader;->()V +HSPLkotlinx/coroutines/internal/FastServiceLoader;->loadMainDispatcherFactory$kotlinx_coroutines_core()Ljava/util/List; +Lkotlinx/coroutines/internal/FastServiceLoaderKt; +HSPLkotlinx/coroutines/internal/FastServiceLoaderKt;->()V +HSPLkotlinx/coroutines/internal/FastServiceLoaderKt;->getANDROID_DETECTED()Z +Lkotlinx/coroutines/internal/InlineList; +HSPLkotlinx/coroutines/internal/InlineList;->constructor-impl$default(Ljava/lang/Object;ILkotlin/jvm/internal/DefaultConstructorMarker;)Ljava/lang/Object; +HSPLkotlinx/coroutines/internal/InlineList;->constructor-impl(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/internal/InlineList;->plus-FjFbRPM(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/internal/LimitedDispatcher; +HSPLkotlinx/coroutines/internal/LimitedDispatcher;->()V +HSPLkotlinx/coroutines/internal/LimitedDispatcher;->(Lkotlinx/coroutines/CoroutineDispatcher;I)V +HSPLkotlinx/coroutines/internal/LimitedDispatcher;->access$obtainTaskOrDeallocateWorker(Lkotlinx/coroutines/internal/LimitedDispatcher;)Ljava/lang/Runnable; +HSPLkotlinx/coroutines/internal/LimitedDispatcher;->dispatch(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Runnable;)V +HSPLkotlinx/coroutines/internal/LimitedDispatcher;->getRunningWorkers$volatile$FU()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; +HSPLkotlinx/coroutines/internal/LimitedDispatcher;->obtainTaskOrDeallocateWorker()Ljava/lang/Runnable; +HSPLkotlinx/coroutines/internal/LimitedDispatcher;->tryAllocateWorker()Z +Lkotlinx/coroutines/internal/LimitedDispatcher$Worker; +HSPLkotlinx/coroutines/internal/LimitedDispatcher$Worker;->(Lkotlinx/coroutines/internal/LimitedDispatcher;Ljava/lang/Runnable;)V +HSPLkotlinx/coroutines/internal/LimitedDispatcher$Worker;->run()V +Lkotlinx/coroutines/internal/LimitedDispatcherKt; +HSPLkotlinx/coroutines/internal/LimitedDispatcherKt;->checkParallelism(I)V +Lkotlinx/coroutines/internal/LockFreeLinkedListHead; +HSPLkotlinx/coroutines/internal/LockFreeLinkedListHead;->()V +HSPLkotlinx/coroutines/internal/LockFreeLinkedListHead;->isRemoved()Z +Lkotlinx/coroutines/internal/LockFreeLinkedListNode; +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->()V +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->()V +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->access$finishAdd(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)V +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->access$get_next$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->addOneIfEmpty(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)Z +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->correctPrev(Lkotlinx/coroutines/internal/OpDescriptor;)Lkotlinx/coroutines/internal/LockFreeLinkedListNode; +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->findPrevNonRemoved(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)Lkotlinx/coroutines/internal/LockFreeLinkedListNode; +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->finishAdd(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)V +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->getNext()Ljava/lang/Object; +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->getNextNode()Lkotlinx/coroutines/internal/LockFreeLinkedListNode; +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->getPrevNode()Lkotlinx/coroutines/internal/LockFreeLinkedListNode; +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->get_next$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->get_prev$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->get_removedRef$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->isRemoved()Z +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->remove()Z +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->removeOrNext()Lkotlinx/coroutines/internal/LockFreeLinkedListNode; +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->removed()Lkotlinx/coroutines/internal/Removed; +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->tryCondAddNext(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/internal/LockFreeLinkedListNode$CondAddOp;)I +Lkotlinx/coroutines/internal/LockFreeLinkedListNode$CondAddOp; +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode$CondAddOp;->(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)V +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode$CondAddOp;->complete(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode$CondAddOp;->complete(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Ljava/lang/Object;)V +Lkotlinx/coroutines/internal/LockFreeTaskQueue; +HSPLkotlinx/coroutines/internal/LockFreeTaskQueue;->()V +HSPLkotlinx/coroutines/internal/LockFreeTaskQueue;->(Z)V +HSPLkotlinx/coroutines/internal/LockFreeTaskQueue;->addLast(Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/internal/LockFreeTaskQueue;->getSize()I +HSPLkotlinx/coroutines/internal/LockFreeTaskQueue;->get_cur$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/internal/LockFreeTaskQueue;->removeFirstOrNull()Ljava/lang/Object; +Lkotlinx/coroutines/internal/LockFreeTaskQueueCore; +HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore;->()V +HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore;->(IZ)V +HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore;->addLast(Ljava/lang/Object;)I +HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore;->allocateNextCopy(J)Lkotlinx/coroutines/internal/LockFreeTaskQueueCore; +PLkotlinx/coroutines/internal/LockFreeTaskQueueCore;->allocateOrGetNextCopy(J)Lkotlinx/coroutines/internal/LockFreeTaskQueueCore; +HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore;->getArray()Ljava/util/concurrent/atomic/AtomicReferenceArray; +HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore;->getSize()I +PLkotlinx/coroutines/internal/LockFreeTaskQueueCore;->get_next$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore;->get_state$volatile$FU()Ljava/util/concurrent/atomic/AtomicLongFieldUpdater; +PLkotlinx/coroutines/internal/LockFreeTaskQueueCore;->markFrozen()J +PLkotlinx/coroutines/internal/LockFreeTaskQueueCore;->next()Lkotlinx/coroutines/internal/LockFreeTaskQueueCore; +HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore;->removeFirstOrNull()Ljava/lang/Object; +Lkotlinx/coroutines/internal/LockFreeTaskQueueCore$Companion; +HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore$Companion;->()V +HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore$Companion;->updateHead(JI)J +HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore$Companion;->updateTail(JI)J +HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore$Companion;->wo(JJ)J +Lkotlinx/coroutines/internal/LockFreeTaskQueueCore$Placeholder; +Lkotlinx/coroutines/internal/MainDispatcherFactory; +Lkotlinx/coroutines/internal/MainDispatcherLoader; +HSPLkotlinx/coroutines/internal/MainDispatcherLoader;->()V +HSPLkotlinx/coroutines/internal/MainDispatcherLoader;->()V +HSPLkotlinx/coroutines/internal/MainDispatcherLoader;->loadMainDispatcher()Lkotlinx/coroutines/MainCoroutineDispatcher; +Lkotlinx/coroutines/internal/MainDispatchersKt; +HSPLkotlinx/coroutines/internal/MainDispatchersKt;->()V +HSPLkotlinx/coroutines/internal/MainDispatchersKt;->tryCreateDispatcher(Lkotlinx/coroutines/internal/MainDispatcherFactory;Ljava/util/List;)Lkotlinx/coroutines/MainCoroutineDispatcher; +Lkotlinx/coroutines/internal/OnUndeliveredElementKt; +Lkotlinx/coroutines/internal/OpDescriptor; +HSPLkotlinx/coroutines/internal/OpDescriptor;->()V +Lkotlinx/coroutines/internal/Removed; +HSPLkotlinx/coroutines/internal/Removed;->(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)V +Lkotlinx/coroutines/internal/ResizableAtomicArray; +HSPLkotlinx/coroutines/internal/ResizableAtomicArray;->(I)V +HSPLkotlinx/coroutines/internal/ResizableAtomicArray;->get(I)Ljava/lang/Object; +HSPLkotlinx/coroutines/internal/ResizableAtomicArray;->setSynchronized(ILjava/lang/Object;)V +Lkotlinx/coroutines/internal/ScopeCoroutine; +HSPLkotlinx/coroutines/internal/ScopeCoroutine;->(Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/internal/ScopeCoroutine;->afterCompletion(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/internal/ScopeCoroutine;->afterResume(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/internal/ScopeCoroutine;->getCallerFrame()Lkotlin/coroutines/jvm/internal/CoroutineStackFrame; +HSPLkotlinx/coroutines/internal/ScopeCoroutine;->isScopedCoroutine()Z +Lkotlinx/coroutines/internal/Segment; +HSPLkotlinx/coroutines/internal/Segment;->()V +HSPLkotlinx/coroutines/internal/Segment;->(JLkotlinx/coroutines/internal/Segment;I)V +HSPLkotlinx/coroutines/internal/Segment;->decPointers$kotlinx_coroutines_core()Z +HSPLkotlinx/coroutines/internal/Segment;->getCleanedAndPointers$volatile$FU()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; +HSPLkotlinx/coroutines/internal/Segment;->isRemoved()Z +HSPLkotlinx/coroutines/internal/Segment;->onSlotCleaned()V +HSPLkotlinx/coroutines/internal/Segment;->tryIncPointers$kotlinx_coroutines_core()Z +Lkotlinx/coroutines/internal/SegmentOrClosed; +HSPLkotlinx/coroutines/internal/SegmentOrClosed;->constructor-impl(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/internal/SegmentOrClosed;->getSegment-impl(Ljava/lang/Object;)Lkotlinx/coroutines/internal/Segment; +HSPLkotlinx/coroutines/internal/SegmentOrClosed;->isClosed-impl(Ljava/lang/Object;)Z +Lkotlinx/coroutines/internal/StackTraceRecoveryKt; +HSPLkotlinx/coroutines/internal/StackTraceRecoveryKt;->()V +HSPLkotlinx/coroutines/internal/StackTraceRecoveryKt;->recoverStackTrace(Ljava/lang/Throwable;)Ljava/lang/Throwable; +Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/internal/Symbol;->(Ljava/lang/String;)V +Lkotlinx/coroutines/internal/SystemPropsKt; +HSPLkotlinx/coroutines/internal/SystemPropsKt;->getAVAILABLE_PROCESSORS()I +HSPLkotlinx/coroutines/internal/SystemPropsKt;->systemProp$default(Ljava/lang/String;IIIILjava/lang/Object;)I +HSPLkotlinx/coroutines/internal/SystemPropsKt;->systemProp$default(Ljava/lang/String;JJJILjava/lang/Object;)J +HSPLkotlinx/coroutines/internal/SystemPropsKt;->systemProp(Ljava/lang/String;)Ljava/lang/String; +HSPLkotlinx/coroutines/internal/SystemPropsKt;->systemProp(Ljava/lang/String;III)I +HSPLkotlinx/coroutines/internal/SystemPropsKt;->systemProp(Ljava/lang/String;JJJ)J +HSPLkotlinx/coroutines/internal/SystemPropsKt;->systemProp(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLkotlinx/coroutines/internal/SystemPropsKt;->systemProp(Ljava/lang/String;Z)Z +Lkotlinx/coroutines/internal/SystemPropsKt__SystemPropsKt; +HSPLkotlinx/coroutines/internal/SystemPropsKt__SystemPropsKt;->()V +HSPLkotlinx/coroutines/internal/SystemPropsKt__SystemPropsKt;->getAVAILABLE_PROCESSORS()I +HSPLkotlinx/coroutines/internal/SystemPropsKt__SystemPropsKt;->systemProp(Ljava/lang/String;)Ljava/lang/String; +Lkotlinx/coroutines/internal/SystemPropsKt__SystemProps_commonKt; +HSPLkotlinx/coroutines/internal/SystemPropsKt__SystemProps_commonKt;->systemProp$default(Ljava/lang/String;IIIILjava/lang/Object;)I +HSPLkotlinx/coroutines/internal/SystemPropsKt__SystemProps_commonKt;->systemProp$default(Ljava/lang/String;JJJILjava/lang/Object;)J +HSPLkotlinx/coroutines/internal/SystemPropsKt__SystemProps_commonKt;->systemProp(Ljava/lang/String;III)I +HSPLkotlinx/coroutines/internal/SystemPropsKt__SystemProps_commonKt;->systemProp(Ljava/lang/String;JJJ)J +HSPLkotlinx/coroutines/internal/SystemPropsKt__SystemProps_commonKt;->systemProp(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLkotlinx/coroutines/internal/SystemPropsKt__SystemProps_commonKt;->systemProp(Ljava/lang/String;Z)Z +Lkotlinx/coroutines/internal/ThreadContextKt; +HSPLkotlinx/coroutines/internal/ThreadContextKt;->()V +HSPLkotlinx/coroutines/internal/ThreadContextKt;->restoreThreadContext(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Object;)V +HSPLkotlinx/coroutines/internal/ThreadContextKt;->threadContextElements(Lkotlin/coroutines/CoroutineContext;)Ljava/lang/Object; +HSPLkotlinx/coroutines/internal/ThreadContextKt;->updateThreadContext(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/internal/ThreadContextKt$countAll$1; +HSPLkotlinx/coroutines/internal/ThreadContextKt$countAll$1;->()V +HSPLkotlinx/coroutines/internal/ThreadContextKt$countAll$1;->()V +HSPLkotlinx/coroutines/internal/ThreadContextKt$countAll$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/internal/ThreadContextKt$countAll$1;->invoke(Ljava/lang/Object;Lkotlin/coroutines/CoroutineContext$Element;)Ljava/lang/Object; +Lkotlinx/coroutines/internal/ThreadContextKt$findOne$1; +HSPLkotlinx/coroutines/internal/ThreadContextKt$findOne$1;->()V +HSPLkotlinx/coroutines/internal/ThreadContextKt$findOne$1;->()V +HSPLkotlinx/coroutines/internal/ThreadContextKt$findOne$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/internal/ThreadContextKt$findOne$1;->invoke(Lkotlinx/coroutines/ThreadContextElement;Lkotlin/coroutines/CoroutineContext$Element;)Lkotlinx/coroutines/ThreadContextElement; +Lkotlinx/coroutines/internal/ThreadContextKt$updateState$1; +HSPLkotlinx/coroutines/internal/ThreadContextKt$updateState$1;->()V +HSPLkotlinx/coroutines/internal/ThreadContextKt$updateState$1;->()V +Lkotlinx/coroutines/internal/ThreadLocalElement; +HSPLkotlinx/coroutines/internal/ThreadLocalElement;->(Ljava/lang/Object;Ljava/lang/ThreadLocal;)V +HSPLkotlinx/coroutines/internal/ThreadLocalElement;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLkotlinx/coroutines/internal/ThreadLocalElement;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLkotlinx/coroutines/internal/ThreadLocalElement;->getKey()Lkotlin/coroutines/CoroutineContext$Key; +HSPLkotlinx/coroutines/internal/ThreadLocalElement;->restoreThreadContext(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Object;)V +HSPLkotlinx/coroutines/internal/ThreadLocalElement;->updateThreadContext(Lkotlin/coroutines/CoroutineContext;)Ljava/lang/Object; +Lkotlinx/coroutines/internal/ThreadLocalKey; +HSPLkotlinx/coroutines/internal/ThreadLocalKey;->(Ljava/lang/ThreadLocal;)V +HSPLkotlinx/coroutines/internal/ThreadLocalKey;->equals(Ljava/lang/Object;)Z +Lkotlinx/coroutines/internal/ThreadLocalKt; +HSPLkotlinx/coroutines/internal/ThreadLocalKt;->commonThreadLocal(Lkotlinx/coroutines/internal/Symbol;)Ljava/lang/ThreadLocal; +Lkotlinx/coroutines/internal/ThreadSafeHeap; +HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->()V +HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->()V +HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->addImpl(Lkotlinx/coroutines/internal/ThreadSafeHeapNode;)V +HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->firstImpl()Lkotlinx/coroutines/internal/ThreadSafeHeapNode; +HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->getSize()I +HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->get_size$volatile$FU()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; +HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->isEmpty()Z +HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->peek()Lkotlinx/coroutines/internal/ThreadSafeHeapNode; +HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->realloc()[Lkotlinx/coroutines/internal/ThreadSafeHeapNode; +HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->remove(Lkotlinx/coroutines/internal/ThreadSafeHeapNode;)Z +HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->removeAtImpl(I)Lkotlinx/coroutines/internal/ThreadSafeHeapNode; +HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->setSize(I)V +HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->siftDownFrom(I)V +HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->siftUpFrom(I)V +HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->swap(II)V +Lkotlinx/coroutines/internal/ThreadSafeHeapNode; +Lkotlinx/coroutines/internal/ThreadState; +Lkotlinx/coroutines/intrinsics/CancellableKt; +HSPLkotlinx/coroutines/intrinsics/CancellableKt;->startCoroutineCancellable$default(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +HSPLkotlinx/coroutines/intrinsics/CancellableKt;->startCoroutineCancellable(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function1;)V +Lkotlinx/coroutines/intrinsics/UndispatchedKt; +HSPLkotlinx/coroutines/intrinsics/UndispatchedKt;->startCoroutineUndispatched(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/intrinsics/UndispatchedKt;->startUndispatchedOrReturn(Lkotlinx/coroutines/internal/ScopeCoroutine;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +Lkotlinx/coroutines/scheduling/CoroutineScheduler; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->()V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->(IIJLjava/lang/String;)V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->access$getControlState$volatile$FU()Ljava/util/concurrent/atomic/AtomicLongFieldUpdater; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->addToGlobalQueue(Lkotlinx/coroutines/scheduling/Task;)Z +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->createNewWorker()I +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->createTask(Ljava/lang/Runnable;Lkotlinx/coroutines/scheduling/TaskContext;)Lkotlinx/coroutines/scheduling/Task; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->currentWorker()Lkotlinx/coroutines/scheduling/CoroutineScheduler$Worker; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->dispatch$default(Lkotlinx/coroutines/scheduling/CoroutineScheduler;Ljava/lang/Runnable;Lkotlinx/coroutines/scheduling/TaskContext;ZILjava/lang/Object;)V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->dispatch(Ljava/lang/Runnable;Lkotlinx/coroutines/scheduling/TaskContext;Z)V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->getControlState$volatile$FU()Ljava/util/concurrent/atomic/AtomicLongFieldUpdater; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->getParkedWorkersStack$volatile$FU()Ljava/util/concurrent/atomic/AtomicLongFieldUpdater; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->get_isTerminated$volatile$FU()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->isTerminated()Z +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->parkedWorkersStackNextIndex(Lkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;)I +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->parkedWorkersStackPop()Lkotlinx/coroutines/scheduling/CoroutineScheduler$Worker; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->parkedWorkersStackPush(Lkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;)Z +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->runSafely(Lkotlinx/coroutines/scheduling/Task;)V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->signalBlockingWork(JZ)V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->signalCpuWork()V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->submitToLocalQueue(Lkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;Lkotlinx/coroutines/scheduling/Task;Z)Lkotlinx/coroutines/scheduling/Task; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->tryCreateWorker$default(Lkotlinx/coroutines/scheduling/CoroutineScheduler;JILjava/lang/Object;)Z +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->tryCreateWorker(J)Z +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->tryUnpark()Z +Lkotlinx/coroutines/scheduling/CoroutineScheduler$Companion; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Companion;->()V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/coroutines/scheduling/CoroutineScheduler$Worker; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->()V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->(Lkotlinx/coroutines/scheduling/CoroutineScheduler;)V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->(Lkotlinx/coroutines/scheduling/CoroutineScheduler;I)V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->access$getThis$0$p(Lkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;)Lkotlinx/coroutines/scheduling/CoroutineScheduler; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->afterTask(I)V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->beforeTask(I)V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->executeTask(Lkotlinx/coroutines/scheduling/Task;)V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->findAnyTask(Z)Lkotlinx/coroutines/scheduling/Task; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->findBlockingTask()Lkotlinx/coroutines/scheduling/Task; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->findTask(Z)Lkotlinx/coroutines/scheduling/Task; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->getIndexInArray()I +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->getNextParkedWorker()Ljava/lang/Object; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->getWorkerCtl$volatile$FU$kotlinx_coroutines_core()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->idleReset(I)V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->inStack()Z +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->nextInt(I)I +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->park()V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->pollGlobalQueues()Lkotlinx/coroutines/scheduling/Task; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->run()V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->runWorker()V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->setIndexInArray(I)V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->setNextParkedWorker(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->tryAcquireCpuPermit()Z +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->tryPark()V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->tryReleaseCpu(Lkotlinx/coroutines/scheduling/CoroutineScheduler$WorkerState;)Z +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->trySteal(I)Lkotlinx/coroutines/scheduling/Task; +Lkotlinx/coroutines/scheduling/CoroutineScheduler$WorkerState; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$WorkerState;->$values()[Lkotlinx/coroutines/scheduling/CoroutineScheduler$WorkerState; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$WorkerState;->()V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$WorkerState;->(Ljava/lang/String;I)V +Lkotlinx/coroutines/scheduling/DefaultIoScheduler; +HSPLkotlinx/coroutines/scheduling/DefaultIoScheduler;->()V +HSPLkotlinx/coroutines/scheduling/DefaultIoScheduler;->()V +HSPLkotlinx/coroutines/scheduling/DefaultIoScheduler;->dispatch(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Runnable;)V +Lkotlinx/coroutines/scheduling/DefaultScheduler; +HSPLkotlinx/coroutines/scheduling/DefaultScheduler;->()V +HSPLkotlinx/coroutines/scheduling/DefaultScheduler;->()V +Lkotlinx/coroutines/scheduling/GlobalQueue; +HSPLkotlinx/coroutines/scheduling/GlobalQueue;->()V +Lkotlinx/coroutines/scheduling/NanoTimeSource; +HSPLkotlinx/coroutines/scheduling/NanoTimeSource;->()V +HSPLkotlinx/coroutines/scheduling/NanoTimeSource;->()V +HSPLkotlinx/coroutines/scheduling/NanoTimeSource;->nanoTime()J +Lkotlinx/coroutines/scheduling/SchedulerCoroutineDispatcher; +HSPLkotlinx/coroutines/scheduling/SchedulerCoroutineDispatcher;->(IIJLjava/lang/String;)V +HSPLkotlinx/coroutines/scheduling/SchedulerCoroutineDispatcher;->createScheduler()Lkotlinx/coroutines/scheduling/CoroutineScheduler; +HSPLkotlinx/coroutines/scheduling/SchedulerCoroutineDispatcher;->dispatch(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Runnable;)V +HSPLkotlinx/coroutines/scheduling/SchedulerCoroutineDispatcher;->dispatchWithContext$kotlinx_coroutines_core(Ljava/lang/Runnable;Lkotlinx/coroutines/scheduling/TaskContext;Z)V +HSPLkotlinx/coroutines/scheduling/SchedulerCoroutineDispatcher;->dispatchYield(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Runnable;)V +Lkotlinx/coroutines/scheduling/SchedulerTimeSource; +HSPLkotlinx/coroutines/scheduling/SchedulerTimeSource;->()V +Lkotlinx/coroutines/scheduling/Task; +HSPLkotlinx/coroutines/scheduling/Task;->()V +HSPLkotlinx/coroutines/scheduling/Task;->(JLkotlinx/coroutines/scheduling/TaskContext;)V +Lkotlinx/coroutines/scheduling/TaskContext; +Lkotlinx/coroutines/scheduling/TaskContextImpl; +HSPLkotlinx/coroutines/scheduling/TaskContextImpl;->(I)V +HSPLkotlinx/coroutines/scheduling/TaskContextImpl;->afterTask()V +HSPLkotlinx/coroutines/scheduling/TaskContextImpl;->getTaskMode()I +Lkotlinx/coroutines/scheduling/TaskImpl; +HSPLkotlinx/coroutines/scheduling/TaskImpl;->(Ljava/lang/Runnable;JLkotlinx/coroutines/scheduling/TaskContext;)V +HSPLkotlinx/coroutines/scheduling/TaskImpl;->run()V +Lkotlinx/coroutines/scheduling/TasksKt; +HSPLkotlinx/coroutines/scheduling/TasksKt;->()V +Lkotlinx/coroutines/scheduling/UnlimitedIoScheduler; +HSPLkotlinx/coroutines/scheduling/UnlimitedIoScheduler;->()V +HSPLkotlinx/coroutines/scheduling/UnlimitedIoScheduler;->()V +HSPLkotlinx/coroutines/scheduling/UnlimitedIoScheduler;->dispatch(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Runnable;)V +HSPLkotlinx/coroutines/scheduling/UnlimitedIoScheduler;->limitedParallelism(I)Lkotlinx/coroutines/CoroutineDispatcher; +Lkotlinx/coroutines/scheduling/WorkQueue; +HSPLkotlinx/coroutines/scheduling/WorkQueue;->()V +HSPLkotlinx/coroutines/scheduling/WorkQueue;->()V +HSPLkotlinx/coroutines/scheduling/WorkQueue;->add(Lkotlinx/coroutines/scheduling/Task;Z)Lkotlinx/coroutines/scheduling/Task; +HSPLkotlinx/coroutines/scheduling/WorkQueue;->addLast(Lkotlinx/coroutines/scheduling/Task;)Lkotlinx/coroutines/scheduling/Task; +HSPLkotlinx/coroutines/scheduling/WorkQueue;->decrementIfBlocking(Lkotlinx/coroutines/scheduling/Task;)V +HSPLkotlinx/coroutines/scheduling/WorkQueue;->getBlockingTasksInBuffer$volatile$FU()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; +HSPLkotlinx/coroutines/scheduling/WorkQueue;->getBufferSize()I +HSPLkotlinx/coroutines/scheduling/WorkQueue;->getConsumerIndex$volatile$FU()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; +HSPLkotlinx/coroutines/scheduling/WorkQueue;->getLastScheduledTask$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/scheduling/WorkQueue;->getProducerIndex$volatile$FU()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; +HSPLkotlinx/coroutines/scheduling/WorkQueue;->poll()Lkotlinx/coroutines/scheduling/Task; +HSPLkotlinx/coroutines/scheduling/WorkQueue;->pollBlocking()Lkotlinx/coroutines/scheduling/Task; +HSPLkotlinx/coroutines/scheduling/WorkQueue;->pollBuffer()Lkotlinx/coroutines/scheduling/Task; +HSPLkotlinx/coroutines/scheduling/WorkQueue;->pollWithExclusiveMode(Z)Lkotlinx/coroutines/scheduling/Task; +HSPLkotlinx/coroutines/scheduling/WorkQueue;->stealWithExclusiveMode(I)Lkotlinx/coroutines/scheduling/Task; +HSPLkotlinx/coroutines/scheduling/WorkQueue;->tryExtractFromTheMiddle(IZ)Lkotlinx/coroutines/scheduling/Task; +HSPLkotlinx/coroutines/scheduling/WorkQueue;->trySteal(ILkotlin/jvm/internal/Ref$ObjectRef;)J +HSPLkotlinx/coroutines/scheduling/WorkQueue;->tryStealLastScheduled(ILkotlin/jvm/internal/Ref$ObjectRef;)J +Lkotlinx/coroutines/selects/OnTimeout; +HSPLkotlinx/coroutines/selects/OnTimeout;->(J)V +HSPLkotlinx/coroutines/selects/OnTimeout;->access$register(Lkotlinx/coroutines/selects/OnTimeout;Lkotlinx/coroutines/selects/SelectInstance;Ljava/lang/Object;)V +HSPLkotlinx/coroutines/selects/OnTimeout;->getSelectClause()Lkotlinx/coroutines/selects/SelectClause0; +HSPLkotlinx/coroutines/selects/OnTimeout;->register(Lkotlinx/coroutines/selects/SelectInstance;Ljava/lang/Object;)V +Lkotlinx/coroutines/selects/OnTimeout$register$$inlined$Runnable$1; +HSPLkotlinx/coroutines/selects/OnTimeout$register$$inlined$Runnable$1;->(Lkotlinx/coroutines/selects/SelectInstance;Lkotlinx/coroutines/selects/OnTimeout;)V +HSPLkotlinx/coroutines/selects/OnTimeout$register$$inlined$Runnable$1;->run()V +Lkotlinx/coroutines/selects/OnTimeout$selectClause$1; +HSPLkotlinx/coroutines/selects/OnTimeout$selectClause$1;->()V +HSPLkotlinx/coroutines/selects/OnTimeout$selectClause$1;->()V +HSPLkotlinx/coroutines/selects/OnTimeout$selectClause$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/selects/OnTimeout$selectClause$1;->invoke(Lkotlinx/coroutines/selects/OnTimeout;Lkotlinx/coroutines/selects/SelectInstance;Ljava/lang/Object;)V +Lkotlinx/coroutines/selects/OnTimeoutKt; +HSPLkotlinx/coroutines/selects/OnTimeoutKt;->onTimeout(Lkotlinx/coroutines/selects/SelectBuilder;JLkotlin/jvm/functions/Function1;)V +Lkotlinx/coroutines/selects/SelectBuilder; +Lkotlinx/coroutines/selects/SelectClause; +Lkotlinx/coroutines/selects/SelectClause0; +Lkotlinx/coroutines/selects/SelectClause0Impl; +HSPLkotlinx/coroutines/selects/SelectClause0Impl;->(Ljava/lang/Object;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;)V +HSPLkotlinx/coroutines/selects/SelectClause0Impl;->(Ljava/lang/Object;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/coroutines/selects/SelectClause0Impl;->getClauseObject()Ljava/lang/Object; +HSPLkotlinx/coroutines/selects/SelectClause0Impl;->getOnCancellationConstructor()Lkotlin/jvm/functions/Function3; +HSPLkotlinx/coroutines/selects/SelectClause0Impl;->getProcessResFunc()Lkotlin/jvm/functions/Function3; +HSPLkotlinx/coroutines/selects/SelectClause0Impl;->getRegFunc()Lkotlin/jvm/functions/Function3; +Lkotlinx/coroutines/selects/SelectClause1; +Lkotlinx/coroutines/selects/SelectClause1Impl; +HSPLkotlinx/coroutines/selects/SelectClause1Impl;->(Ljava/lang/Object;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;)V +HSPLkotlinx/coroutines/selects/SelectClause1Impl;->getClauseObject()Ljava/lang/Object; +HSPLkotlinx/coroutines/selects/SelectClause1Impl;->getOnCancellationConstructor()Lkotlin/jvm/functions/Function3; +HSPLkotlinx/coroutines/selects/SelectClause1Impl;->getProcessResFunc()Lkotlin/jvm/functions/Function3; +HSPLkotlinx/coroutines/selects/SelectClause1Impl;->getRegFunc()Lkotlin/jvm/functions/Function3; +Lkotlinx/coroutines/selects/SelectImplementation; +HSPLkotlinx/coroutines/selects/SelectImplementation;->()V +HSPLkotlinx/coroutines/selects/SelectImplementation;->(Lkotlin/coroutines/CoroutineContext;)V +HSPLkotlinx/coroutines/selects/SelectImplementation;->access$doSelectSuspend(Lkotlinx/coroutines/selects/SelectImplementation;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/selects/SelectImplementation;->access$getInternalResult$p(Lkotlinx/coroutines/selects/SelectImplementation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/selects/SelectImplementation;->access$getState$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/selects/SelectImplementation;->checkClauseObject(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/selects/SelectImplementation;->cleanup(Lkotlinx/coroutines/selects/SelectImplementation$ClauseData;)V +HSPLkotlinx/coroutines/selects/SelectImplementation;->complete(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/selects/SelectImplementation;->disposeOnCompletion(Lkotlinx/coroutines/DisposableHandle;)V +HSPLkotlinx/coroutines/selects/SelectImplementation;->doSelect$suspendImpl(Lkotlinx/coroutines/selects/SelectImplementation;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/selects/SelectImplementation;->doSelect(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/selects/SelectImplementation;->doSelectSuspend(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/selects/SelectImplementation;->findClause(Ljava/lang/Object;)Lkotlinx/coroutines/selects/SelectImplementation$ClauseData; +HSPLkotlinx/coroutines/selects/SelectImplementation;->getContext()Lkotlin/coroutines/CoroutineContext; +HSPLkotlinx/coroutines/selects/SelectImplementation;->getState$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/selects/SelectImplementation;->invoke(Ljava/lang/Throwable;)V +HSPLkotlinx/coroutines/selects/SelectImplementation;->invoke(Lkotlinx/coroutines/selects/SelectClause0;Lkotlin/jvm/functions/Function1;)V +HSPLkotlinx/coroutines/selects/SelectImplementation;->invoke(Lkotlinx/coroutines/selects/SelectClause1;Lkotlin/jvm/functions/Function2;)V +HSPLkotlinx/coroutines/selects/SelectImplementation;->invokeOnCancellation(Lkotlinx/coroutines/internal/Segment;I)V +HSPLkotlinx/coroutines/selects/SelectImplementation;->isSelected()Z +HSPLkotlinx/coroutines/selects/SelectImplementation;->register$default(Lkotlinx/coroutines/selects/SelectImplementation;Lkotlinx/coroutines/selects/SelectImplementation$ClauseData;ZILjava/lang/Object;)V +HSPLkotlinx/coroutines/selects/SelectImplementation;->register(Lkotlinx/coroutines/selects/SelectImplementation$ClauseData;Z)V +HSPLkotlinx/coroutines/selects/SelectImplementation;->selectInRegistrationPhase(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/selects/SelectImplementation;->trySelect(Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/selects/SelectImplementation;->trySelectInternal(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLkotlinx/coroutines/selects/SelectImplementation;->waitUntilSelected(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/selects/SelectImplementation$ClauseData; +HSPLkotlinx/coroutines/selects/SelectImplementation$ClauseData;->(Lkotlinx/coroutines/selects/SelectImplementation;Ljava/lang/Object;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function3;)V +HSPLkotlinx/coroutines/selects/SelectImplementation$ClauseData;->createOnCancellationAction(Lkotlinx/coroutines/selects/SelectInstance;Ljava/lang/Object;)Lkotlin/jvm/functions/Function1; +HSPLkotlinx/coroutines/selects/SelectImplementation$ClauseData;->dispose()V +HSPLkotlinx/coroutines/selects/SelectImplementation$ClauseData;->invokeBlock(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/selects/SelectImplementation$ClauseData;->processResult(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/selects/SelectImplementation$ClauseData;->tryRegisterAsWaiter(Lkotlinx/coroutines/selects/SelectImplementation;)Z +Lkotlinx/coroutines/selects/SelectImplementation$doSelectSuspend$1; +HSPLkotlinx/coroutines/selects/SelectImplementation$doSelectSuspend$1;->(Lkotlinx/coroutines/selects/SelectImplementation;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/selects/SelectImplementation$doSelectSuspend$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/selects/SelectInstance; +Lkotlinx/coroutines/selects/SelectInstanceInternal; +Lkotlinx/coroutines/selects/SelectKt; +HSPLkotlinx/coroutines/selects/SelectKt;->()V +HSPLkotlinx/coroutines/selects/SelectKt;->access$getDUMMY_PROCESS_RESULT_FUNCTION$p()Lkotlin/jvm/functions/Function3; +HSPLkotlinx/coroutines/selects/SelectKt;->access$getNO_RESULT$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/selects/SelectKt;->access$getSTATE_CANCELLED$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/selects/SelectKt;->access$getSTATE_COMPLETED$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/selects/SelectKt;->access$getSTATE_REG$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/selects/SelectKt;->access$tryResume(Lkotlinx/coroutines/CancellableContinuation;Lkotlin/jvm/functions/Function1;)Z +HSPLkotlinx/coroutines/selects/SelectKt;->getPARAM_CLAUSE_0()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/selects/SelectKt;->tryResume(Lkotlinx/coroutines/CancellableContinuation;Lkotlin/jvm/functions/Function1;)Z +Lkotlinx/coroutines/selects/SelectKt$DUMMY_PROCESS_RESULT_FUNCTION$1; +HSPLkotlinx/coroutines/selects/SelectKt$DUMMY_PROCESS_RESULT_FUNCTION$1;->()V +HSPLkotlinx/coroutines/selects/SelectKt$DUMMY_PROCESS_RESULT_FUNCTION$1;->()V +HSPLkotlinx/coroutines/selects/SelectKt$DUMMY_PROCESS_RESULT_FUNCTION$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/selects/SelectKt$DUMMY_PROCESS_RESULT_FUNCTION$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Void; +Lkotlinx/coroutines/sync/Mutex; +Lkotlinx/coroutines/sync/Mutex$DefaultImpls; +HSPLkotlinx/coroutines/sync/Mutex$DefaultImpls;->lock$default(Lkotlinx/coroutines/sync/Mutex;Ljava/lang/Object;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/sync/Mutex$DefaultImpls;->unlock$default(Lkotlinx/coroutines/sync/Mutex;Ljava/lang/Object;ILjava/lang/Object;)V +Lkotlinx/coroutines/sync/MutexImpl; +HSPLkotlinx/coroutines/sync/MutexImpl;->()V +HSPLkotlinx/coroutines/sync/MutexImpl;->(Z)V +HSPLkotlinx/coroutines/sync/MutexImpl;->access$getOwner$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/sync/MutexImpl;->getOwner$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/sync/MutexImpl;->isLocked()Z +HSPLkotlinx/coroutines/sync/MutexImpl;->lock$suspendImpl(Lkotlinx/coroutines/sync/MutexImpl;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/sync/MutexImpl;->lock(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/sync/MutexImpl;->lockSuspend(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/sync/MutexImpl;->tryLock(Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/sync/MutexImpl;->tryLockImpl(Ljava/lang/Object;)I +HSPLkotlinx/coroutines/sync/MutexImpl;->unlock(Ljava/lang/Object;)V +Lkotlinx/coroutines/sync/MutexImpl$CancellableContinuationWithOwner; +HSPLkotlinx/coroutines/sync/MutexImpl$CancellableContinuationWithOwner;->(Lkotlinx/coroutines/sync/MutexImpl;Lkotlinx/coroutines/CancellableContinuationImpl;Ljava/lang/Object;)V +HSPLkotlinx/coroutines/sync/MutexImpl$CancellableContinuationWithOwner;->completeResume(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/sync/MutexImpl$CancellableContinuationWithOwner;->invokeOnCancellation(Lkotlinx/coroutines/internal/Segment;I)V +HSPLkotlinx/coroutines/sync/MutexImpl$CancellableContinuationWithOwner;->tryResume(Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +HSPLkotlinx/coroutines/sync/MutexImpl$CancellableContinuationWithOwner;->tryResume(Lkotlin/Unit;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +Lkotlinx/coroutines/sync/MutexImpl$CancellableContinuationWithOwner$tryResume$token$1; +HSPLkotlinx/coroutines/sync/MutexImpl$CancellableContinuationWithOwner$tryResume$token$1;->(Lkotlinx/coroutines/sync/MutexImpl;Lkotlinx/coroutines/sync/MutexImpl$CancellableContinuationWithOwner;)V +Lkotlinx/coroutines/sync/MutexImpl$onSelectCancellationUnlockConstructor$1; +HSPLkotlinx/coroutines/sync/MutexImpl$onSelectCancellationUnlockConstructor$1;->(Lkotlinx/coroutines/sync/MutexImpl;)V +Lkotlinx/coroutines/sync/MutexKt; +HSPLkotlinx/coroutines/sync/MutexKt;->()V +HSPLkotlinx/coroutines/sync/MutexKt;->Mutex$default(ZILjava/lang/Object;)Lkotlinx/coroutines/sync/Mutex; +HSPLkotlinx/coroutines/sync/MutexKt;->Mutex(Z)Lkotlinx/coroutines/sync/Mutex; +HSPLkotlinx/coroutines/sync/MutexKt;->access$getNO_OWNER$p()Lkotlinx/coroutines/internal/Symbol; +Lkotlinx/coroutines/sync/Semaphore; +Lkotlinx/coroutines/sync/SemaphoreImpl; +HSPLkotlinx/coroutines/sync/SemaphoreImpl;->()V +HSPLkotlinx/coroutines/sync/SemaphoreImpl;->(II)V +HSPLkotlinx/coroutines/sync/SemaphoreImpl;->acquire(Lkotlinx/coroutines/CancellableContinuation;)V +HSPLkotlinx/coroutines/sync/SemaphoreImpl;->addAcquireToQueue(Lkotlinx/coroutines/Waiter;)Z +HSPLkotlinx/coroutines/sync/SemaphoreImpl;->decPermits()I +HSPLkotlinx/coroutines/sync/SemaphoreImpl;->getAvailablePermits()I +HSPLkotlinx/coroutines/sync/SemaphoreImpl;->getDeqIdx$volatile$FU()Ljava/util/concurrent/atomic/AtomicLongFieldUpdater; +HSPLkotlinx/coroutines/sync/SemaphoreImpl;->getEnqIdx$volatile$FU()Ljava/util/concurrent/atomic/AtomicLongFieldUpdater; +HSPLkotlinx/coroutines/sync/SemaphoreImpl;->getHead$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/sync/SemaphoreImpl;->getTail$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/sync/SemaphoreImpl;->get_availablePermits$volatile$FU()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; +HSPLkotlinx/coroutines/sync/SemaphoreImpl;->release()V +HSPLkotlinx/coroutines/sync/SemaphoreImpl;->tryAcquire()Z +HSPLkotlinx/coroutines/sync/SemaphoreImpl;->tryResumeAcquire(Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/sync/SemaphoreImpl;->tryResumeNextFromQueue()Z +Lkotlinx/coroutines/sync/SemaphoreImpl$addAcquireToQueue$createNewSegment$1; +HSPLkotlinx/coroutines/sync/SemaphoreImpl$addAcquireToQueue$createNewSegment$1;->()V +HSPLkotlinx/coroutines/sync/SemaphoreImpl$addAcquireToQueue$createNewSegment$1;->()V +HSPLkotlinx/coroutines/sync/SemaphoreImpl$addAcquireToQueue$createNewSegment$1;->invoke(JLkotlinx/coroutines/sync/SemaphoreSegment;)Lkotlinx/coroutines/sync/SemaphoreSegment; +HSPLkotlinx/coroutines/sync/SemaphoreImpl$addAcquireToQueue$createNewSegment$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/sync/SemaphoreImpl$onCancellationRelease$1; +HSPLkotlinx/coroutines/sync/SemaphoreImpl$onCancellationRelease$1;->(Lkotlinx/coroutines/sync/SemaphoreImpl;)V +Lkotlinx/coroutines/sync/SemaphoreImpl$tryResumeNextFromQueue$createNewSegment$1; +HSPLkotlinx/coroutines/sync/SemaphoreImpl$tryResumeNextFromQueue$createNewSegment$1;->()V +HSPLkotlinx/coroutines/sync/SemaphoreImpl$tryResumeNextFromQueue$createNewSegment$1;->()V +Lkotlinx/coroutines/sync/SemaphoreKt; +HSPLkotlinx/coroutines/sync/SemaphoreKt;->()V +HSPLkotlinx/coroutines/sync/SemaphoreKt;->access$createSegment(JLkotlinx/coroutines/sync/SemaphoreSegment;)Lkotlinx/coroutines/sync/SemaphoreSegment; +HSPLkotlinx/coroutines/sync/SemaphoreKt;->access$getCANCELLED$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/sync/SemaphoreKt;->access$getPERMIT$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/sync/SemaphoreKt;->access$getSEGMENT_SIZE$p()I +HSPLkotlinx/coroutines/sync/SemaphoreKt;->createSegment(JLkotlinx/coroutines/sync/SemaphoreSegment;)Lkotlinx/coroutines/sync/SemaphoreSegment; +Lkotlinx/coroutines/sync/SemaphoreSegment; +HSPLkotlinx/coroutines/sync/SemaphoreSegment;->(JLkotlinx/coroutines/sync/SemaphoreSegment;I)V +HSPLkotlinx/coroutines/sync/SemaphoreSegment;->getAcquirers()Ljava/util/concurrent/atomic/AtomicReferenceArray; +HSPLkotlinx/coroutines/sync/SemaphoreSegment;->getNumberOfSlots()I +Lkotlinx/datetime/Clock; +Lkotlinx/datetime/Clock$System; +HSPLkotlinx/datetime/Clock$System;->()V +HSPLkotlinx/datetime/Clock$System;->()V +HSPLkotlinx/datetime/Clock$System;->now()Lkotlinx/datetime/Instant; +Lkotlinx/datetime/Instant; +HSPLkotlinx/datetime/Instant;->()V +HSPLkotlinx/datetime/Instant;->(Ljava/time/Instant;)V +HSPLkotlinx/datetime/Instant;->compareTo(Lkotlinx/datetime/Instant;)I +HSPLkotlinx/datetime/Instant;->equals(Ljava/lang/Object;)Z +HSPLkotlinx/datetime/Instant;->minus-5sfh64U(Lkotlinx/datetime/Instant;)J +HSPLkotlinx/datetime/Instant;->toEpochMilliseconds()J +Lkotlinx/datetime/Instant$Companion; +HSPLkotlinx/datetime/Instant$Companion;->()V +HSPLkotlinx/datetime/Instant$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/datetime/Instant$Companion;->now()Lkotlinx/datetime/Instant; +Lkotlinx/serialization/BinaryFormat; +Lkotlinx/serialization/DeserializationStrategy; +Lkotlinx/serialization/KSerializer; +Lkotlinx/serialization/MissingFieldException; +Lkotlinx/serialization/PolymorphicSerializer; +HSPLkotlinx/serialization/PolymorphicSerializer;->(Lkotlin/reflect/KClass;)V +HSPLkotlinx/serialization/PolymorphicSerializer;->(Lkotlin/reflect/KClass;[Ljava/lang/annotation/Annotation;)V +Lkotlinx/serialization/PolymorphicSerializer$descriptor$2; +HSPLkotlinx/serialization/PolymorphicSerializer$descriptor$2;->(Lkotlinx/serialization/PolymorphicSerializer;)V +Lkotlinx/serialization/SealedClassSerializer; +HSPLkotlinx/serialization/SealedClassSerializer;->(Ljava/lang/String;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;)V +HSPLkotlinx/serialization/SealedClassSerializer;->(Ljava/lang/String;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;[Ljava/lang/annotation/Annotation;)V +HSPLkotlinx/serialization/SealedClassSerializer;->access$getSerialName2Serializer$p(Lkotlinx/serialization/SealedClassSerializer;)Ljava/util/Map; +HSPLkotlinx/serialization/SealedClassSerializer;->access$get_annotations$p(Lkotlinx/serialization/SealedClassSerializer;)Ljava/util/List; +HSPLkotlinx/serialization/SealedClassSerializer;->getBaseClass()Lkotlin/reflect/KClass; +HSPLkotlinx/serialization/SealedClassSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/SealedClassSerializer$descriptor$2; +HSPLkotlinx/serialization/SealedClassSerializer$descriptor$2;->(Ljava/lang/String;Lkotlinx/serialization/SealedClassSerializer;)V +HSPLkotlinx/serialization/SealedClassSerializer$descriptor$2;->invoke()Ljava/lang/Object; +HSPLkotlinx/serialization/SealedClassSerializer$descriptor$2;->invoke()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/SealedClassSerializer$descriptor$2$1; +HSPLkotlinx/serialization/SealedClassSerializer$descriptor$2$1;->(Lkotlinx/serialization/SealedClassSerializer;)V +HSPLkotlinx/serialization/SealedClassSerializer$descriptor$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/serialization/SealedClassSerializer$descriptor$2$1;->invoke(Lkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder;)V +Lkotlinx/serialization/SealedClassSerializer$descriptor$2$1$elementDescriptor$1; +HSPLkotlinx/serialization/SealedClassSerializer$descriptor$2$1$elementDescriptor$1;->(Lkotlinx/serialization/SealedClassSerializer;)V +HSPLkotlinx/serialization/SealedClassSerializer$descriptor$2$1$elementDescriptor$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/serialization/SealedClassSerializer$descriptor$2$1$elementDescriptor$1;->invoke(Lkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder;)V +Lkotlinx/serialization/SealedClassSerializer$special$$inlined$groupingBy$1; +HSPLkotlinx/serialization/SealedClassSerializer$special$$inlined$groupingBy$1;->(Ljava/lang/Iterable;)V +HSPLkotlinx/serialization/SealedClassSerializer$special$$inlined$groupingBy$1;->keyOf(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/serialization/SealedClassSerializer$special$$inlined$groupingBy$1;->sourceIterator()Ljava/util/Iterator; +Lkotlinx/serialization/SerialFormat; +Lkotlinx/serialization/SerializationException; +PLkotlinx/serialization/SerializationException;->(Ljava/lang/String;)V +Lkotlinx/serialization/SerializationStrategy; +Lkotlinx/serialization/SerializersKt; +HSPLkotlinx/serialization/SerializersKt;->serializer(Lkotlin/reflect/KClass;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/SerializersKt;->serializerOrNull(Lkotlin/reflect/KClass;)Lkotlinx/serialization/KSerializer; +Lkotlinx/serialization/SerializersKt__SerializersKt; +HSPLkotlinx/serialization/SerializersKt__SerializersKt;->serializer(Lkotlin/reflect/KClass;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/SerializersKt__SerializersKt;->serializerOrNull(Lkotlin/reflect/KClass;)Lkotlinx/serialization/KSerializer; +Lkotlinx/serialization/StringFormat; +Lkotlinx/serialization/builtins/BuiltinSerializersKt; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->BooleanArraySerializer()Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->ByteArraySerializer()Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->CharArraySerializer()Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->DoubleArraySerializer()Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->FloatArraySerializer()Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->IntArraySerializer()Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->ListSerializer(Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->LongArraySerializer()Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->MapSerializer(Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->NothingSerializer()Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->ShortArraySerializer()Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->UByteArraySerializer()Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->UIntArraySerializer()Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->ULongArraySerializer()Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->UShortArraySerializer()Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->serializer(Lkotlin/UByte$Companion;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->serializer(Lkotlin/UInt$Companion;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->serializer(Lkotlin/ULong$Companion;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->serializer(Lkotlin/UShort$Companion;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->serializer(Lkotlin/Unit;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->serializer(Lkotlin/jvm/internal/BooleanCompanionObject;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->serializer(Lkotlin/jvm/internal/ByteCompanionObject;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->serializer(Lkotlin/jvm/internal/CharCompanionObject;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->serializer(Lkotlin/jvm/internal/DoubleCompanionObject;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->serializer(Lkotlin/jvm/internal/FloatCompanionObject;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->serializer(Lkotlin/jvm/internal/IntCompanionObject;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->serializer(Lkotlin/jvm/internal/LongCompanionObject;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->serializer(Lkotlin/jvm/internal/ShortCompanionObject;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->serializer(Lkotlin/jvm/internal/StringCompanionObject;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->serializer(Lkotlin/time/Duration$Companion;)Lkotlinx/serialization/KSerializer; +Lkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder; +HSPLkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder;->(Ljava/lang/String;)V +HSPLkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder;->element$default(Lkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder;Ljava/lang/String;Lkotlinx/serialization/descriptors/SerialDescriptor;Ljava/util/List;ZILjava/lang/Object;)V +HSPLkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder;->element(Ljava/lang/String;Lkotlinx/serialization/descriptors/SerialDescriptor;Ljava/util/List;Z)V +HSPLkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder;->getAnnotations()Ljava/util/List; +HSPLkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder;->getElementAnnotations$kotlinx_serialization_core()Ljava/util/List; +HSPLkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder;->getElementDescriptors$kotlinx_serialization_core()Ljava/util/List; +HSPLkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder;->getElementNames$kotlinx_serialization_core()Ljava/util/List; +HSPLkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder;->getElementOptionality$kotlinx_serialization_core()Ljava/util/List; +HSPLkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder;->setAnnotations(Ljava/util/List;)V +Lkotlinx/serialization/descriptors/PolymorphicKind; +HSPLkotlinx/serialization/descriptors/PolymorphicKind;->()V +HSPLkotlinx/serialization/descriptors/PolymorphicKind;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/serialization/descriptors/PolymorphicKind$SEALED; +HSPLkotlinx/serialization/descriptors/PolymorphicKind$SEALED;->()V +HSPLkotlinx/serialization/descriptors/PolymorphicKind$SEALED;->()V +Lkotlinx/serialization/descriptors/PrimitiveKind; +HSPLkotlinx/serialization/descriptors/PrimitiveKind;->()V +HSPLkotlinx/serialization/descriptors/PrimitiveKind;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/serialization/descriptors/PrimitiveKind$BOOLEAN; +HSPLkotlinx/serialization/descriptors/PrimitiveKind$BOOLEAN;->()V +HSPLkotlinx/serialization/descriptors/PrimitiveKind$BOOLEAN;->()V +Lkotlinx/serialization/descriptors/PrimitiveKind$BYTE; +HSPLkotlinx/serialization/descriptors/PrimitiveKind$BYTE;->()V +HSPLkotlinx/serialization/descriptors/PrimitiveKind$BYTE;->()V +Lkotlinx/serialization/descriptors/PrimitiveKind$CHAR; +HSPLkotlinx/serialization/descriptors/PrimitiveKind$CHAR;->()V +HSPLkotlinx/serialization/descriptors/PrimitiveKind$CHAR;->()V +Lkotlinx/serialization/descriptors/PrimitiveKind$DOUBLE; +HSPLkotlinx/serialization/descriptors/PrimitiveKind$DOUBLE;->()V +HSPLkotlinx/serialization/descriptors/PrimitiveKind$DOUBLE;->()V +Lkotlinx/serialization/descriptors/PrimitiveKind$FLOAT; +HSPLkotlinx/serialization/descriptors/PrimitiveKind$FLOAT;->()V +HSPLkotlinx/serialization/descriptors/PrimitiveKind$FLOAT;->()V +Lkotlinx/serialization/descriptors/PrimitiveKind$INT; +HSPLkotlinx/serialization/descriptors/PrimitiveKind$INT;->()V +HSPLkotlinx/serialization/descriptors/PrimitiveKind$INT;->()V +Lkotlinx/serialization/descriptors/PrimitiveKind$LONG; +HSPLkotlinx/serialization/descriptors/PrimitiveKind$LONG;->()V +HSPLkotlinx/serialization/descriptors/PrimitiveKind$LONG;->()V +Lkotlinx/serialization/descriptors/PrimitiveKind$SHORT; +HSPLkotlinx/serialization/descriptors/PrimitiveKind$SHORT;->()V +HSPLkotlinx/serialization/descriptors/PrimitiveKind$SHORT;->()V +Lkotlinx/serialization/descriptors/PrimitiveKind$STRING; +HSPLkotlinx/serialization/descriptors/PrimitiveKind$STRING;->()V +HSPLkotlinx/serialization/descriptors/PrimitiveKind$STRING;->()V +Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/descriptors/SerialDescriptor$DefaultImpls; +HSPLkotlinx/serialization/descriptors/SerialDescriptor$DefaultImpls;->isInline(Lkotlinx/serialization/descriptors/SerialDescriptor;)Z +Lkotlinx/serialization/descriptors/SerialDescriptorImpl; +HSPLkotlinx/serialization/descriptors/SerialDescriptorImpl;->(Ljava/lang/String;Lkotlinx/serialization/descriptors/SerialKind;ILjava/util/List;Lkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder;)V +HSPLkotlinx/serialization/descriptors/SerialDescriptorImpl;->getSerialName()Ljava/lang/String; +Lkotlinx/serialization/descriptors/SerialDescriptorImpl$_hashCode$2; +HSPLkotlinx/serialization/descriptors/SerialDescriptorImpl$_hashCode$2;->(Lkotlinx/serialization/descriptors/SerialDescriptorImpl;)V +Lkotlinx/serialization/descriptors/SerialDescriptorsKt; +HSPLkotlinx/serialization/descriptors/SerialDescriptorsKt;->PrimitiveSerialDescriptor(Ljava/lang/String;Lkotlinx/serialization/descriptors/PrimitiveKind;)Lkotlinx/serialization/descriptors/SerialDescriptor; +HSPLkotlinx/serialization/descriptors/SerialDescriptorsKt;->buildSerialDescriptor$default(Ljava/lang/String;Lkotlinx/serialization/descriptors/SerialKind;[Lkotlinx/serialization/descriptors/SerialDescriptor;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lkotlinx/serialization/descriptors/SerialDescriptor; +HSPLkotlinx/serialization/descriptors/SerialDescriptorsKt;->buildSerialDescriptor(Ljava/lang/String;Lkotlinx/serialization/descriptors/SerialKind;[Lkotlinx/serialization/descriptors/SerialDescriptor;Lkotlin/jvm/functions/Function1;)Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/descriptors/SerialDescriptorsKt$buildSerialDescriptor$1; +HSPLkotlinx/serialization/descriptors/SerialDescriptorsKt$buildSerialDescriptor$1;->()V +HSPLkotlinx/serialization/descriptors/SerialDescriptorsKt$buildSerialDescriptor$1;->()V +HSPLkotlinx/serialization/descriptors/SerialDescriptorsKt$buildSerialDescriptor$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/serialization/descriptors/SerialDescriptorsKt$buildSerialDescriptor$1;->invoke(Lkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder;)V +Lkotlinx/serialization/descriptors/SerialKind; +HSPLkotlinx/serialization/descriptors/SerialKind;->()V +HSPLkotlinx/serialization/descriptors/SerialKind;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/serialization/descriptors/SerialKind$CONTEXTUAL; +HSPLkotlinx/serialization/descriptors/SerialKind$CONTEXTUAL;->()V +HSPLkotlinx/serialization/descriptors/SerialKind$CONTEXTUAL;->()V +Lkotlinx/serialization/descriptors/SerialKind$ENUM; +HSPLkotlinx/serialization/descriptors/SerialKind$ENUM;->()V +HSPLkotlinx/serialization/descriptors/SerialKind$ENUM;->()V +Lkotlinx/serialization/descriptors/StructureKind; +HSPLkotlinx/serialization/descriptors/StructureKind;->()V +HSPLkotlinx/serialization/descriptors/StructureKind;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/serialization/descriptors/StructureKind$CLASS; +HSPLkotlinx/serialization/descriptors/StructureKind$CLASS;->()V +HSPLkotlinx/serialization/descriptors/StructureKind$CLASS;->()V +Lkotlinx/serialization/descriptors/StructureKind$LIST; +HSPLkotlinx/serialization/descriptors/StructureKind$LIST;->()V +HSPLkotlinx/serialization/descriptors/StructureKind$LIST;->()V +Lkotlinx/serialization/descriptors/StructureKind$MAP; +HSPLkotlinx/serialization/descriptors/StructureKind$MAP;->()V +HSPLkotlinx/serialization/descriptors/StructureKind$MAP;->()V +Lkotlinx/serialization/descriptors/StructureKind$OBJECT; +HSPLkotlinx/serialization/descriptors/StructureKind$OBJECT;->()V +HSPLkotlinx/serialization/descriptors/StructureKind$OBJECT;->()V +Lkotlinx/serialization/encoding/AbstractDecoder; +HSPLkotlinx/serialization/encoding/AbstractDecoder;->()V +HSPLkotlinx/serialization/encoding/AbstractDecoder;->decodeSequentially()Z +HSPLkotlinx/serialization/encoding/AbstractDecoder;->decodeSerializableElement(Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/serialization/encoding/AbstractDecoder;->decodeSerializableValue(Lkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/serialization/encoding/AbstractEncoder; +HSPLkotlinx/serialization/encoding/AbstractEncoder;->()V +HSPLkotlinx/serialization/encoding/AbstractEncoder;->beginCollection(Lkotlinx/serialization/descriptors/SerialDescriptor;I)Lkotlinx/serialization/encoding/CompositeEncoder; +HSPLkotlinx/serialization/encoding/AbstractEncoder;->encodeSerializableElement(Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)V +Lkotlinx/serialization/encoding/ChunkedDecoder; +Lkotlinx/serialization/encoding/CompositeDecoder; +Lkotlinx/serialization/encoding/CompositeDecoder$DefaultImpls; +HSPLkotlinx/serialization/encoding/CompositeDecoder$DefaultImpls;->decodeSequentially(Lkotlinx/serialization/encoding/CompositeDecoder;)Z +HSPLkotlinx/serialization/encoding/CompositeDecoder$DefaultImpls;->decodeSerializableElement$default(Lkotlinx/serialization/encoding/CompositeDecoder;Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;ILjava/lang/Object;)Ljava/lang/Object; +Lkotlinx/serialization/encoding/CompositeEncoder; +Lkotlinx/serialization/encoding/Decoder; +Lkotlinx/serialization/encoding/Encoder; +Lkotlinx/serialization/encoding/Encoder$DefaultImpls; +HSPLkotlinx/serialization/encoding/Encoder$DefaultImpls;->beginCollection(Lkotlinx/serialization/encoding/Encoder;Lkotlinx/serialization/descriptors/SerialDescriptor;I)Lkotlinx/serialization/encoding/CompositeEncoder; +Lkotlinx/serialization/internal/AbstractCollectionSerializer; +HSPLkotlinx/serialization/internal/AbstractCollectionSerializer;->()V +HSPLkotlinx/serialization/internal/AbstractCollectionSerializer;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/serialization/internal/AbstractCollectionSerializer;->deserialize(Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; +HSPLkotlinx/serialization/internal/AbstractCollectionSerializer;->merge(Lkotlinx/serialization/encoding/Decoder;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/serialization/internal/AbstractCollectionSerializer;->readElement$default(Lkotlinx/serialization/internal/AbstractCollectionSerializer;Lkotlinx/serialization/encoding/CompositeDecoder;ILjava/lang/Object;ZILjava/lang/Object;)V +Lkotlinx/serialization/internal/AbstractPolymorphicSerializer; +HSPLkotlinx/serialization/internal/AbstractPolymorphicSerializer;->()V +Lkotlinx/serialization/internal/ArrayListClassDesc; +HSPLkotlinx/serialization/internal/ArrayListClassDesc;->(Lkotlinx/serialization/descriptors/SerialDescriptor;)V +Lkotlinx/serialization/internal/ArrayListSerializer; +HSPLkotlinx/serialization/internal/ArrayListSerializer;->(Lkotlinx/serialization/KSerializer;)V +HSPLkotlinx/serialization/internal/ArrayListSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/BooleanArraySerializer; +HSPLkotlinx/serialization/internal/BooleanArraySerializer;->()V +HSPLkotlinx/serialization/internal/BooleanArraySerializer;->()V +Lkotlinx/serialization/internal/BooleanSerializer; +HSPLkotlinx/serialization/internal/BooleanSerializer;->()V +HSPLkotlinx/serialization/internal/BooleanSerializer;->()V +HSPLkotlinx/serialization/internal/BooleanSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/ByteArraySerializer; +HSPLkotlinx/serialization/internal/ByteArraySerializer;->()V +HSPLkotlinx/serialization/internal/ByteArraySerializer;->()V +Lkotlinx/serialization/internal/ByteSerializer; +HSPLkotlinx/serialization/internal/ByteSerializer;->()V +HSPLkotlinx/serialization/internal/ByteSerializer;->()V +HSPLkotlinx/serialization/internal/ByteSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/CachedNames; +Lkotlinx/serialization/internal/CharArraySerializer; +HSPLkotlinx/serialization/internal/CharArraySerializer;->()V +HSPLkotlinx/serialization/internal/CharArraySerializer;->()V +Lkotlinx/serialization/internal/CharSerializer; +HSPLkotlinx/serialization/internal/CharSerializer;->()V +HSPLkotlinx/serialization/internal/CharSerializer;->()V +HSPLkotlinx/serialization/internal/CharSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/CollectionLikeSerializer; +HSPLkotlinx/serialization/internal/CollectionLikeSerializer;->(Lkotlinx/serialization/KSerializer;)V +HSPLkotlinx/serialization/internal/CollectionLikeSerializer;->(Lkotlinx/serialization/KSerializer;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/serialization/internal/CollectionLikeSerializer;->serialize(Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +Lkotlinx/serialization/internal/CollectionSerializer; +HSPLkotlinx/serialization/internal/CollectionSerializer;->(Lkotlinx/serialization/KSerializer;)V +HSPLkotlinx/serialization/internal/CollectionSerializer;->collectionIterator(Ljava/lang/Object;)Ljava/util/Iterator; +HSPLkotlinx/serialization/internal/CollectionSerializer;->collectionIterator(Ljava/util/Collection;)Ljava/util/Iterator; +HSPLkotlinx/serialization/internal/CollectionSerializer;->collectionSize(Ljava/lang/Object;)I +HSPLkotlinx/serialization/internal/CollectionSerializer;->collectionSize(Ljava/util/Collection;)I +Lkotlinx/serialization/internal/DoubleArraySerializer; +HSPLkotlinx/serialization/internal/DoubleArraySerializer;->()V +HSPLkotlinx/serialization/internal/DoubleArraySerializer;->()V +Lkotlinx/serialization/internal/DoubleSerializer; +HSPLkotlinx/serialization/internal/DoubleSerializer;->()V +HSPLkotlinx/serialization/internal/DoubleSerializer;->()V +HSPLkotlinx/serialization/internal/DoubleSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/DurationSerializer; +HSPLkotlinx/serialization/internal/DurationSerializer;->()V +HSPLkotlinx/serialization/internal/DurationSerializer;->()V +Lkotlinx/serialization/internal/EnumDescriptor; +HSPLkotlinx/serialization/internal/EnumDescriptor;->(Ljava/lang/String;I)V +Lkotlinx/serialization/internal/EnumDescriptor$elementDescriptors$2; +HSPLkotlinx/serialization/internal/EnumDescriptor$elementDescriptors$2;->(ILjava/lang/String;Lkotlinx/serialization/internal/EnumDescriptor;)V +Lkotlinx/serialization/internal/EnumSerializer; +HSPLkotlinx/serialization/internal/EnumSerializer;->(Ljava/lang/String;[Ljava/lang/Enum;)V +HSPLkotlinx/serialization/internal/EnumSerializer;->(Ljava/lang/String;[Ljava/lang/Enum;Lkotlinx/serialization/descriptors/SerialDescriptor;)V +Lkotlinx/serialization/internal/EnumSerializer$descriptor$2; +HSPLkotlinx/serialization/internal/EnumSerializer$descriptor$2;->(Lkotlinx/serialization/internal/EnumSerializer;Ljava/lang/String;)V +Lkotlinx/serialization/internal/EnumsKt; +HSPLkotlinx/serialization/internal/EnumsKt;->createAnnotatedEnumSerializer(Ljava/lang/String;[Ljava/lang/Enum;[Ljava/lang/String;[[Ljava/lang/annotation/Annotation;[Ljava/lang/annotation/Annotation;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/internal/EnumsKt;->createSimpleEnumSerializer(Ljava/lang/String;[Ljava/lang/Enum;)Lkotlinx/serialization/KSerializer; +Lkotlinx/serialization/internal/FloatArraySerializer; +HSPLkotlinx/serialization/internal/FloatArraySerializer;->()V +HSPLkotlinx/serialization/internal/FloatArraySerializer;->()V +Lkotlinx/serialization/internal/FloatSerializer; +HSPLkotlinx/serialization/internal/FloatSerializer;->()V +HSPLkotlinx/serialization/internal/FloatSerializer;->()V +HSPLkotlinx/serialization/internal/FloatSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/GeneratedSerializer; +Lkotlinx/serialization/internal/InlineClassDescriptor; +HSPLkotlinx/serialization/internal/InlineClassDescriptor;->(Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;)V +Lkotlinx/serialization/internal/InlineClassDescriptorKt; +HSPLkotlinx/serialization/internal/InlineClassDescriptorKt;->InlinePrimitiveDescriptor(Ljava/lang/String;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/InlineClassDescriptorKt$InlinePrimitiveDescriptor$1; +HSPLkotlinx/serialization/internal/InlineClassDescriptorKt$InlinePrimitiveDescriptor$1;->(Lkotlinx/serialization/KSerializer;)V +Lkotlinx/serialization/internal/IntArraySerializer; +HSPLkotlinx/serialization/internal/IntArraySerializer;->()V +HSPLkotlinx/serialization/internal/IntArraySerializer;->()V +Lkotlinx/serialization/internal/IntSerializer; +HSPLkotlinx/serialization/internal/IntSerializer;->()V +HSPLkotlinx/serialization/internal/IntSerializer;->()V +HSPLkotlinx/serialization/internal/IntSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/LinkedHashMapClassDesc; +HSPLkotlinx/serialization/internal/LinkedHashMapClassDesc;->(Lkotlinx/serialization/descriptors/SerialDescriptor;Lkotlinx/serialization/descriptors/SerialDescriptor;)V +Lkotlinx/serialization/internal/LinkedHashMapSerializer; +HSPLkotlinx/serialization/internal/LinkedHashMapSerializer;->(Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)V +HSPLkotlinx/serialization/internal/LinkedHashMapSerializer;->builder()Ljava/lang/Object; +HSPLkotlinx/serialization/internal/LinkedHashMapSerializer;->builder()Ljava/util/LinkedHashMap; +HSPLkotlinx/serialization/internal/LinkedHashMapSerializer;->builderSize(Ljava/lang/Object;)I +HSPLkotlinx/serialization/internal/LinkedHashMapSerializer;->builderSize(Ljava/util/LinkedHashMap;)I +HSPLkotlinx/serialization/internal/LinkedHashMapSerializer;->collectionIterator(Ljava/lang/Object;)Ljava/util/Iterator; +HSPLkotlinx/serialization/internal/LinkedHashMapSerializer;->collectionIterator(Ljava/util/Map;)Ljava/util/Iterator; +HSPLkotlinx/serialization/internal/LinkedHashMapSerializer;->collectionSize(Ljava/lang/Object;)I +HSPLkotlinx/serialization/internal/LinkedHashMapSerializer;->collectionSize(Ljava/util/Map;)I +HSPLkotlinx/serialization/internal/LinkedHashMapSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +HSPLkotlinx/serialization/internal/LinkedHashMapSerializer;->toResult(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/serialization/internal/LinkedHashMapSerializer;->toResult(Ljava/util/LinkedHashMap;)Ljava/util/Map; +Lkotlinx/serialization/internal/LinkedHashSetClassDesc; +HSPLkotlinx/serialization/internal/LinkedHashSetClassDesc;->(Lkotlinx/serialization/descriptors/SerialDescriptor;)V +Lkotlinx/serialization/internal/LinkedHashSetSerializer; +HSPLkotlinx/serialization/internal/LinkedHashSetSerializer;->(Lkotlinx/serialization/KSerializer;)V +HSPLkotlinx/serialization/internal/LinkedHashSetSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/ListLikeDescriptor; +HSPLkotlinx/serialization/internal/ListLikeDescriptor;->(Lkotlinx/serialization/descriptors/SerialDescriptor;)V +HSPLkotlinx/serialization/internal/ListLikeDescriptor;->(Lkotlinx/serialization/descriptors/SerialDescriptor;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/serialization/internal/ListLikeDescriptor;->getKind()Lkotlinx/serialization/descriptors/SerialKind; +Lkotlinx/serialization/internal/LongArraySerializer; +HSPLkotlinx/serialization/internal/LongArraySerializer;->()V +HSPLkotlinx/serialization/internal/LongArraySerializer;->()V +Lkotlinx/serialization/internal/LongSerializer; +HSPLkotlinx/serialization/internal/LongSerializer;->()V +HSPLkotlinx/serialization/internal/LongSerializer;->()V +HSPLkotlinx/serialization/internal/LongSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/MapLikeDescriptor; +HSPLkotlinx/serialization/internal/MapLikeDescriptor;->(Ljava/lang/String;Lkotlinx/serialization/descriptors/SerialDescriptor;Lkotlinx/serialization/descriptors/SerialDescriptor;)V +HSPLkotlinx/serialization/internal/MapLikeDescriptor;->(Ljava/lang/String;Lkotlinx/serialization/descriptors/SerialDescriptor;Lkotlinx/serialization/descriptors/SerialDescriptor;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/serialization/internal/MapLikeDescriptor;->getElementDescriptor(I)Lkotlinx/serialization/descriptors/SerialDescriptor; +HSPLkotlinx/serialization/internal/MapLikeDescriptor;->getElementsCount()I +HSPLkotlinx/serialization/internal/MapLikeDescriptor;->getKind()Lkotlinx/serialization/descriptors/SerialKind; +Lkotlinx/serialization/internal/MapLikeSerializer; +HSPLkotlinx/serialization/internal/MapLikeSerializer;->(Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)V +HSPLkotlinx/serialization/internal/MapLikeSerializer;->(Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/serialization/internal/MapLikeSerializer;->getKeySerializer()Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/internal/MapLikeSerializer;->getValueSerializer()Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/internal/MapLikeSerializer;->readElement(Lkotlinx/serialization/encoding/CompositeDecoder;ILjava/lang/Object;Z)V +HSPLkotlinx/serialization/internal/MapLikeSerializer;->readElement(Lkotlinx/serialization/encoding/CompositeDecoder;ILjava/util/Map;Z)V +HSPLkotlinx/serialization/internal/MapLikeSerializer;->serialize(Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +Lkotlinx/serialization/internal/NothingSerialDescriptor; +HSPLkotlinx/serialization/internal/NothingSerialDescriptor;->()V +HSPLkotlinx/serialization/internal/NothingSerialDescriptor;->()V +Lkotlinx/serialization/internal/NothingSerializer; +HSPLkotlinx/serialization/internal/NothingSerializer;->()V +HSPLkotlinx/serialization/internal/NothingSerializer;->()V +Lkotlinx/serialization/internal/ObjectSerializer; +HSPLkotlinx/serialization/internal/ObjectSerializer;->(Ljava/lang/String;Ljava/lang/Object;)V +HSPLkotlinx/serialization/internal/ObjectSerializer;->(Ljava/lang/String;Ljava/lang/Object;[Ljava/lang/annotation/Annotation;)V +HSPLkotlinx/serialization/internal/ObjectSerializer;->access$get_annotations$p(Lkotlinx/serialization/internal/ObjectSerializer;)Ljava/util/List; +HSPLkotlinx/serialization/internal/ObjectSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/ObjectSerializer$descriptor$2; +HSPLkotlinx/serialization/internal/ObjectSerializer$descriptor$2;->(Ljava/lang/String;Lkotlinx/serialization/internal/ObjectSerializer;)V +HSPLkotlinx/serialization/internal/ObjectSerializer$descriptor$2;->invoke()Ljava/lang/Object; +HSPLkotlinx/serialization/internal/ObjectSerializer$descriptor$2;->invoke()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/ObjectSerializer$descriptor$2$1; +HSPLkotlinx/serialization/internal/ObjectSerializer$descriptor$2$1;->(Lkotlinx/serialization/internal/ObjectSerializer;)V +HSPLkotlinx/serialization/internal/ObjectSerializer$descriptor$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/serialization/internal/ObjectSerializer$descriptor$2$1;->invoke(Lkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder;)V +Lkotlinx/serialization/internal/PlatformKt; +HSPLkotlinx/serialization/internal/PlatformKt;->companionOrNull(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object; +HSPLkotlinx/serialization/internal/PlatformKt;->compiledSerializerImpl(Lkotlin/reflect/KClass;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/internal/PlatformKt;->constructSerializerForGivenTypeArgs(Ljava/lang/Class;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/internal/PlatformKt;->constructSerializerForGivenTypeArgs(Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/internal/PlatformKt;->invokeSerializerOnCompanion(Ljava/lang/Object;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/internal/PlatformKt;->invokeSerializerOnDefaultCompanion(Ljava/lang/Class;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer; +Lkotlinx/serialization/internal/Platform_commonKt; +HSPLkotlinx/serialization/internal/Platform_commonKt;->()V +HSPLkotlinx/serialization/internal/Platform_commonKt;->compactArray(Ljava/util/List;)[Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/PluginGeneratedSerialDescriptor; +HSPLkotlinx/serialization/internal/PluginGeneratedSerialDescriptor;->(Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;I)V +HSPLkotlinx/serialization/internal/PluginGeneratedSerialDescriptor;->(Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;IILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/serialization/internal/PluginGeneratedSerialDescriptor;->addElement$default(Lkotlinx/serialization/internal/PluginGeneratedSerialDescriptor;Ljava/lang/String;ZILjava/lang/Object;)V +HSPLkotlinx/serialization/internal/PluginGeneratedSerialDescriptor;->addElement(Ljava/lang/String;Z)V +HSPLkotlinx/serialization/internal/PluginGeneratedSerialDescriptor;->buildIndices()Ljava/util/Map; +HSPLkotlinx/serialization/internal/PluginGeneratedSerialDescriptor;->getElementName(I)Ljava/lang/String; +HSPLkotlinx/serialization/internal/PluginGeneratedSerialDescriptor;->getElementsCount()I +HSPLkotlinx/serialization/internal/PluginGeneratedSerialDescriptor;->getKind()Lkotlinx/serialization/descriptors/SerialKind; +HSPLkotlinx/serialization/internal/PluginGeneratedSerialDescriptor;->getSerialName()Ljava/lang/String; +HSPLkotlinx/serialization/internal/PluginGeneratedSerialDescriptor;->pushAnnotation(Ljava/lang/annotation/Annotation;)V +Lkotlinx/serialization/internal/PluginGeneratedSerialDescriptor$_hashCode$2; +HSPLkotlinx/serialization/internal/PluginGeneratedSerialDescriptor$_hashCode$2;->(Lkotlinx/serialization/internal/PluginGeneratedSerialDescriptor;)V +Lkotlinx/serialization/internal/PluginGeneratedSerialDescriptor$childSerializers$2; +HSPLkotlinx/serialization/internal/PluginGeneratedSerialDescriptor$childSerializers$2;->(Lkotlinx/serialization/internal/PluginGeneratedSerialDescriptor;)V +Lkotlinx/serialization/internal/PluginGeneratedSerialDescriptor$typeParameterDescriptors$2; +HSPLkotlinx/serialization/internal/PluginGeneratedSerialDescriptor$typeParameterDescriptors$2;->(Lkotlinx/serialization/internal/PluginGeneratedSerialDescriptor;)V +Lkotlinx/serialization/internal/PrimitiveArrayDescriptor; +HSPLkotlinx/serialization/internal/PrimitiveArrayDescriptor;->(Lkotlinx/serialization/descriptors/SerialDescriptor;)V +Lkotlinx/serialization/internal/PrimitiveArraySerializer; +HSPLkotlinx/serialization/internal/PrimitiveArraySerializer;->(Lkotlinx/serialization/KSerializer;)V +Lkotlinx/serialization/internal/PrimitiveSerialDescriptor; +HSPLkotlinx/serialization/internal/PrimitiveSerialDescriptor;->(Ljava/lang/String;Lkotlinx/serialization/descriptors/PrimitiveKind;)V +HSPLkotlinx/serialization/internal/PrimitiveSerialDescriptor;->getKind()Lkotlinx/serialization/descriptors/PrimitiveKind; +HSPLkotlinx/serialization/internal/PrimitiveSerialDescriptor;->getKind()Lkotlinx/serialization/descriptors/SerialKind; +HSPLkotlinx/serialization/internal/PrimitiveSerialDescriptor;->getSerialName()Ljava/lang/String; +HSPLkotlinx/serialization/internal/PrimitiveSerialDescriptor;->isInline()Z +Lkotlinx/serialization/internal/PrimitivesKt; +HSPLkotlinx/serialization/internal/PrimitivesKt;->()V +HSPLkotlinx/serialization/internal/PrimitivesKt;->PrimitiveDescriptorSafe(Ljava/lang/String;Lkotlinx/serialization/descriptors/PrimitiveKind;)Lkotlinx/serialization/descriptors/SerialDescriptor; +HSPLkotlinx/serialization/internal/PrimitivesKt;->capitalize(Ljava/lang/String;)Ljava/lang/String; +HSPLkotlinx/serialization/internal/PrimitivesKt;->checkName(Ljava/lang/String;)V +Lkotlinx/serialization/internal/ShortArraySerializer; +HSPLkotlinx/serialization/internal/ShortArraySerializer;->()V +HSPLkotlinx/serialization/internal/ShortArraySerializer;->()V +Lkotlinx/serialization/internal/ShortSerializer; +HSPLkotlinx/serialization/internal/ShortSerializer;->()V +HSPLkotlinx/serialization/internal/ShortSerializer;->()V +HSPLkotlinx/serialization/internal/ShortSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/StringSerializer; +HSPLkotlinx/serialization/internal/StringSerializer;->()V +HSPLkotlinx/serialization/internal/StringSerializer;->()V +HSPLkotlinx/serialization/internal/StringSerializer;->deserialize(Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; +HSPLkotlinx/serialization/internal/StringSerializer;->deserialize(Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/String; +HSPLkotlinx/serialization/internal/StringSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +HSPLkotlinx/serialization/internal/StringSerializer;->serialize(Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +HSPLkotlinx/serialization/internal/StringSerializer;->serialize(Lkotlinx/serialization/encoding/Encoder;Ljava/lang/String;)V +Lkotlinx/serialization/internal/UByteArraySerializer; +HSPLkotlinx/serialization/internal/UByteArraySerializer;->()V +HSPLkotlinx/serialization/internal/UByteArraySerializer;->()V +Lkotlinx/serialization/internal/UByteSerializer; +HSPLkotlinx/serialization/internal/UByteSerializer;->()V +HSPLkotlinx/serialization/internal/UByteSerializer;->()V +HSPLkotlinx/serialization/internal/UByteSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/UIntArraySerializer; +HSPLkotlinx/serialization/internal/UIntArraySerializer;->()V +HSPLkotlinx/serialization/internal/UIntArraySerializer;->()V +Lkotlinx/serialization/internal/UIntSerializer; +HSPLkotlinx/serialization/internal/UIntSerializer;->()V +HSPLkotlinx/serialization/internal/UIntSerializer;->()V +HSPLkotlinx/serialization/internal/UIntSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/ULongArraySerializer; +HSPLkotlinx/serialization/internal/ULongArraySerializer;->()V +HSPLkotlinx/serialization/internal/ULongArraySerializer;->()V +Lkotlinx/serialization/internal/ULongSerializer; +HSPLkotlinx/serialization/internal/ULongSerializer;->()V +HSPLkotlinx/serialization/internal/ULongSerializer;->()V +HSPLkotlinx/serialization/internal/ULongSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/UShortArraySerializer; +HSPLkotlinx/serialization/internal/UShortArraySerializer;->()V +HSPLkotlinx/serialization/internal/UShortArraySerializer;->()V +Lkotlinx/serialization/internal/UShortSerializer; +HSPLkotlinx/serialization/internal/UShortSerializer;->()V +HSPLkotlinx/serialization/internal/UShortSerializer;->()V +HSPLkotlinx/serialization/internal/UShortSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/UnitSerializer; +HSPLkotlinx/serialization/internal/UnitSerializer;->()V +HSPLkotlinx/serialization/internal/UnitSerializer;->()V +Lkotlinx/serialization/json/Json; +HSPLkotlinx/serialization/json/Json;->()V +HSPLkotlinx/serialization/json/Json;->(Lkotlinx/serialization/json/JsonConfiguration;Lkotlinx/serialization/modules/SerializersModule;)V +HSPLkotlinx/serialization/json/Json;->(Lkotlinx/serialization/json/JsonConfiguration;Lkotlinx/serialization/modules/SerializersModule;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/serialization/json/Json;->decodeFromString(Lkotlinx/serialization/DeserializationStrategy;Ljava/lang/String;)Ljava/lang/Object; +HSPLkotlinx/serialization/json/Json;->encodeToString(Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)Ljava/lang/String; +HSPLkotlinx/serialization/json/Json;->getConfiguration()Lkotlinx/serialization/json/JsonConfiguration; +HSPLkotlinx/serialization/json/Json;->getSerializersModule()Lkotlinx/serialization/modules/SerializersModule; +Lkotlinx/serialization/json/Json$Default; +HSPLkotlinx/serialization/json/Json$Default;->()V +HSPLkotlinx/serialization/json/Json$Default;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/serialization/json/JsonArray; +HSPLkotlinx/serialization/json/JsonArray;->()V +HSPLkotlinx/serialization/json/JsonArray;->(Ljava/util/List;)V +HSPLkotlinx/serialization/json/JsonArray;->getSize()I +HSPLkotlinx/serialization/json/JsonArray;->iterator()Ljava/util/Iterator; +HSPLkotlinx/serialization/json/JsonArray;->size()I +Lkotlinx/serialization/json/JsonArray$Companion; +HSPLkotlinx/serialization/json/JsonArray$Companion;->()V +HSPLkotlinx/serialization/json/JsonArray$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/serialization/json/JsonArraySerializer; +HSPLkotlinx/serialization/json/JsonArraySerializer;->()V +HSPLkotlinx/serialization/json/JsonArraySerializer;->()V +HSPLkotlinx/serialization/json/JsonArraySerializer;->serialize(Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +HSPLkotlinx/serialization/json/JsonArraySerializer;->serialize(Lkotlinx/serialization/encoding/Encoder;Lkotlinx/serialization/json/JsonArray;)V +Lkotlinx/serialization/json/JsonArraySerializer$JsonArrayDescriptor; +HSPLkotlinx/serialization/json/JsonArraySerializer$JsonArrayDescriptor;->()V +HSPLkotlinx/serialization/json/JsonArraySerializer$JsonArrayDescriptor;->()V +Lkotlinx/serialization/json/JsonBuilder; +HSPLkotlinx/serialization/json/JsonBuilder;->(Lkotlinx/serialization/json/Json;)V +HSPLkotlinx/serialization/json/JsonBuilder;->build$kotlinx_serialization_json()Lkotlinx/serialization/json/JsonConfiguration; +HSPLkotlinx/serialization/json/JsonBuilder;->getSerializersModule()Lkotlinx/serialization/modules/SerializersModule; +HSPLkotlinx/serialization/json/JsonBuilder;->setCoerceInputValues(Z)V +HSPLkotlinx/serialization/json/JsonBuilder;->setIgnoreUnknownKeys(Z)V +HSPLkotlinx/serialization/json/JsonBuilder;->setLenient(Z)V +HSPLkotlinx/serialization/json/JsonBuilder;->setPrettyPrint(Z)V +HSPLkotlinx/serialization/json/JsonBuilder;->setSerializersModule(Lkotlinx/serialization/modules/SerializersModule;)V +Lkotlinx/serialization/json/JsonConfiguration; +HSPLkotlinx/serialization/json/JsonConfiguration;->(ZZZZZZLjava/lang/String;ZZLjava/lang/String;ZZLkotlinx/serialization/json/JsonNamingStrategy;ZZ)V +HSPLkotlinx/serialization/json/JsonConfiguration;->(ZZZZZZLjava/lang/String;ZZLjava/lang/String;ZZLkotlinx/serialization/json/JsonNamingStrategy;ZZILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/serialization/json/JsonConfiguration;->getAllowSpecialFloatingPointValues()Z +HSPLkotlinx/serialization/json/JsonConfiguration;->getAllowStructuredMapKeys()Z +HSPLkotlinx/serialization/json/JsonConfiguration;->getAllowTrailingComma()Z +HSPLkotlinx/serialization/json/JsonConfiguration;->getClassDiscriminator()Ljava/lang/String; +HSPLkotlinx/serialization/json/JsonConfiguration;->getCoerceInputValues()Z +HSPLkotlinx/serialization/json/JsonConfiguration;->getDecodeEnumsCaseInsensitive()Z +HSPLkotlinx/serialization/json/JsonConfiguration;->getEncodeDefaults()Z +HSPLkotlinx/serialization/json/JsonConfiguration;->getExplicitNulls()Z +HSPLkotlinx/serialization/json/JsonConfiguration;->getIgnoreUnknownKeys()Z +HSPLkotlinx/serialization/json/JsonConfiguration;->getNamingStrategy()Lkotlinx/serialization/json/JsonNamingStrategy; +HSPLkotlinx/serialization/json/JsonConfiguration;->getPrettyPrint()Z +HSPLkotlinx/serialization/json/JsonConfiguration;->getPrettyPrintIndent()Ljava/lang/String; +HSPLkotlinx/serialization/json/JsonConfiguration;->getUseAlternativeNames()Z +HSPLkotlinx/serialization/json/JsonConfiguration;->getUseArrayPolymorphism()Z +HSPLkotlinx/serialization/json/JsonConfiguration;->isLenient()Z +Lkotlinx/serialization/json/JsonDecoder; +Lkotlinx/serialization/json/JsonElement; +HSPLkotlinx/serialization/json/JsonElement;->()V +HSPLkotlinx/serialization/json/JsonElement;->()V +HSPLkotlinx/serialization/json/JsonElement;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/serialization/json/JsonElement$Companion; +HSPLkotlinx/serialization/json/JsonElement$Companion;->()V +HSPLkotlinx/serialization/json/JsonElement$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/serialization/json/JsonElement$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lkotlinx/serialization/json/JsonElementKt; +HSPLkotlinx/serialization/json/JsonElementKt;->()V +HSPLkotlinx/serialization/json/JsonElementKt;->JsonPrimitive(Ljava/lang/Boolean;)Lkotlinx/serialization/json/JsonPrimitive; +HSPLkotlinx/serialization/json/JsonElementKt;->getBooleanOrNull(Lkotlinx/serialization/json/JsonPrimitive;)Ljava/lang/Boolean; +HSPLkotlinx/serialization/json/JsonElementKt;->getJsonArray(Lkotlinx/serialization/json/JsonElement;)Lkotlinx/serialization/json/JsonArray; +HSPLkotlinx/serialization/json/JsonElementKt;->getJsonPrimitive(Lkotlinx/serialization/json/JsonElement;)Lkotlinx/serialization/json/JsonPrimitive; +Lkotlinx/serialization/json/JsonElementSerializer; +HSPLkotlinx/serialization/json/JsonElementSerializer;->()V +HSPLkotlinx/serialization/json/JsonElementSerializer;->()V +HSPLkotlinx/serialization/json/JsonElementSerializer;->deserialize(Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; +HSPLkotlinx/serialization/json/JsonElementSerializer;->deserialize(Lkotlinx/serialization/encoding/Decoder;)Lkotlinx/serialization/json/JsonElement; +HSPLkotlinx/serialization/json/JsonElementSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +HSPLkotlinx/serialization/json/JsonElementSerializer;->serialize(Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +HSPLkotlinx/serialization/json/JsonElementSerializer;->serialize(Lkotlinx/serialization/encoding/Encoder;Lkotlinx/serialization/json/JsonElement;)V +Lkotlinx/serialization/json/JsonElementSerializer$descriptor$1; +HSPLkotlinx/serialization/json/JsonElementSerializer$descriptor$1;->()V +HSPLkotlinx/serialization/json/JsonElementSerializer$descriptor$1;->()V +HSPLkotlinx/serialization/json/JsonElementSerializer$descriptor$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/serialization/json/JsonElementSerializer$descriptor$1;->invoke(Lkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder;)V +Lkotlinx/serialization/json/JsonElementSerializer$descriptor$1$1; +HSPLkotlinx/serialization/json/JsonElementSerializer$descriptor$1$1;->()V +HSPLkotlinx/serialization/json/JsonElementSerializer$descriptor$1$1;->()V +Lkotlinx/serialization/json/JsonElementSerializer$descriptor$1$2; +HSPLkotlinx/serialization/json/JsonElementSerializer$descriptor$1$2;->()V +HSPLkotlinx/serialization/json/JsonElementSerializer$descriptor$1$2;->()V +Lkotlinx/serialization/json/JsonElementSerializer$descriptor$1$3; +HSPLkotlinx/serialization/json/JsonElementSerializer$descriptor$1$3;->()V +HSPLkotlinx/serialization/json/JsonElementSerializer$descriptor$1$3;->()V +Lkotlinx/serialization/json/JsonElementSerializer$descriptor$1$4; +HSPLkotlinx/serialization/json/JsonElementSerializer$descriptor$1$4;->()V +HSPLkotlinx/serialization/json/JsonElementSerializer$descriptor$1$4;->()V +Lkotlinx/serialization/json/JsonElementSerializer$descriptor$1$5; +HSPLkotlinx/serialization/json/JsonElementSerializer$descriptor$1$5;->()V +HSPLkotlinx/serialization/json/JsonElementSerializer$descriptor$1$5;->()V +Lkotlinx/serialization/json/JsonElementSerializersKt; +HSPLkotlinx/serialization/json/JsonElementSerializersKt;->access$defer(Lkotlin/jvm/functions/Function0;)Lkotlinx/serialization/descriptors/SerialDescriptor; +HSPLkotlinx/serialization/json/JsonElementSerializersKt;->access$verify(Lkotlinx/serialization/encoding/Decoder;)V +HSPLkotlinx/serialization/json/JsonElementSerializersKt;->access$verify(Lkotlinx/serialization/encoding/Encoder;)V +HSPLkotlinx/serialization/json/JsonElementSerializersKt;->asJsonDecoder(Lkotlinx/serialization/encoding/Decoder;)Lkotlinx/serialization/json/JsonDecoder; +HSPLkotlinx/serialization/json/JsonElementSerializersKt;->asJsonEncoder(Lkotlinx/serialization/encoding/Encoder;)Lkotlinx/serialization/json/JsonEncoder; +HSPLkotlinx/serialization/json/JsonElementSerializersKt;->defer(Lkotlin/jvm/functions/Function0;)Lkotlinx/serialization/descriptors/SerialDescriptor; +HSPLkotlinx/serialization/json/JsonElementSerializersKt;->verify(Lkotlinx/serialization/encoding/Decoder;)V +HSPLkotlinx/serialization/json/JsonElementSerializersKt;->verify(Lkotlinx/serialization/encoding/Encoder;)V +Lkotlinx/serialization/json/JsonElementSerializersKt$defer$1; +HSPLkotlinx/serialization/json/JsonElementSerializersKt$defer$1;->(Lkotlin/jvm/functions/Function0;)V +Lkotlinx/serialization/json/JsonEncoder; +Lkotlinx/serialization/json/JsonImpl; +HSPLkotlinx/serialization/json/JsonImpl;->(Lkotlinx/serialization/json/JsonConfiguration;Lkotlinx/serialization/modules/SerializersModule;)V +HSPLkotlinx/serialization/json/JsonImpl;->validateConfiguration()V +Lkotlinx/serialization/json/JsonKt; +HSPLkotlinx/serialization/json/JsonKt;->Json$default(Lkotlinx/serialization/json/Json;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lkotlinx/serialization/json/Json; +HSPLkotlinx/serialization/json/JsonKt;->Json(Lkotlinx/serialization/json/Json;Lkotlin/jvm/functions/Function1;)Lkotlinx/serialization/json/Json; +Lkotlinx/serialization/json/JsonLiteral; +HSPLkotlinx/serialization/json/JsonLiteral;->(Ljava/lang/Object;ZLkotlinx/serialization/descriptors/SerialDescriptor;)V +HSPLkotlinx/serialization/json/JsonLiteral;->(Ljava/lang/Object;ZLkotlinx/serialization/descriptors/SerialDescriptor;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/serialization/json/JsonLiteral;->getCoerceToInlineType$kotlinx_serialization_json()Lkotlinx/serialization/descriptors/SerialDescriptor; +HSPLkotlinx/serialization/json/JsonLiteral;->getContent()Ljava/lang/String; +HSPLkotlinx/serialization/json/JsonLiteral;->isString()Z +Lkotlinx/serialization/json/JsonLiteralSerializer; +HSPLkotlinx/serialization/json/JsonLiteralSerializer;->()V +HSPLkotlinx/serialization/json/JsonLiteralSerializer;->()V +HSPLkotlinx/serialization/json/JsonLiteralSerializer;->serialize(Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +HSPLkotlinx/serialization/json/JsonLiteralSerializer;->serialize(Lkotlinx/serialization/encoding/Encoder;Lkotlinx/serialization/json/JsonLiteral;)V +Lkotlinx/serialization/json/JsonNames; +Lkotlinx/serialization/json/JsonNamingStrategy; +Lkotlinx/serialization/json/JsonNull; +HSPLkotlinx/serialization/json/JsonNull;->()V +HSPLkotlinx/serialization/json/JsonNull;->()V +Lkotlinx/serialization/json/JsonNull$1; +HSPLkotlinx/serialization/json/JsonNull$1;->()V +HSPLkotlinx/serialization/json/JsonNull$1;->()V +Lkotlinx/serialization/json/JsonNullSerializer; +HSPLkotlinx/serialization/json/JsonNullSerializer;->()V +HSPLkotlinx/serialization/json/JsonNullSerializer;->()V +HSPLkotlinx/serialization/json/JsonNullSerializer;->serialize(Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +HSPLkotlinx/serialization/json/JsonNullSerializer;->serialize(Lkotlinx/serialization/encoding/Encoder;Lkotlinx/serialization/json/JsonNull;)V +Lkotlinx/serialization/json/JsonObject; +HSPLkotlinx/serialization/json/JsonObject;->()V +HSPLkotlinx/serialization/json/JsonObject;->(Ljava/util/Map;)V +HSPLkotlinx/serialization/json/JsonObject;->entrySet()Ljava/util/Set; +HSPLkotlinx/serialization/json/JsonObject;->getEntries()Ljava/util/Set; +HSPLkotlinx/serialization/json/JsonObject;->getSize()I +HSPLkotlinx/serialization/json/JsonObject;->size()I +Lkotlinx/serialization/json/JsonObject$Companion; +HSPLkotlinx/serialization/json/JsonObject$Companion;->()V +HSPLkotlinx/serialization/json/JsonObject$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/serialization/json/JsonObject$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lkotlinx/serialization/json/JsonObjectSerializer; +HSPLkotlinx/serialization/json/JsonObjectSerializer;->()V +HSPLkotlinx/serialization/json/JsonObjectSerializer;->()V +HSPLkotlinx/serialization/json/JsonObjectSerializer;->deserialize(Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; +HSPLkotlinx/serialization/json/JsonObjectSerializer;->deserialize(Lkotlinx/serialization/encoding/Decoder;)Lkotlinx/serialization/json/JsonObject; +HSPLkotlinx/serialization/json/JsonObjectSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +HSPLkotlinx/serialization/json/JsonObjectSerializer;->serialize(Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +HSPLkotlinx/serialization/json/JsonObjectSerializer;->serialize(Lkotlinx/serialization/encoding/Encoder;Lkotlinx/serialization/json/JsonObject;)V +Lkotlinx/serialization/json/JsonObjectSerializer$JsonObjectDescriptor; +HSPLkotlinx/serialization/json/JsonObjectSerializer$JsonObjectDescriptor;->()V +HSPLkotlinx/serialization/json/JsonObjectSerializer$JsonObjectDescriptor;->()V +Lkotlinx/serialization/json/JsonPrimitive; +HSPLkotlinx/serialization/json/JsonPrimitive;->()V +HSPLkotlinx/serialization/json/JsonPrimitive;->()V +HSPLkotlinx/serialization/json/JsonPrimitive;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/serialization/json/JsonPrimitive$Companion; +HSPLkotlinx/serialization/json/JsonPrimitive$Companion;->()V +HSPLkotlinx/serialization/json/JsonPrimitive$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/serialization/json/JsonPrimitiveSerializer; +HSPLkotlinx/serialization/json/JsonPrimitiveSerializer;->()V +HSPLkotlinx/serialization/json/JsonPrimitiveSerializer;->()V +HSPLkotlinx/serialization/json/JsonPrimitiveSerializer;->serialize(Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +HSPLkotlinx/serialization/json/JsonPrimitiveSerializer;->serialize(Lkotlinx/serialization/encoding/Encoder;Lkotlinx/serialization/json/JsonPrimitive;)V +Lkotlinx/serialization/json/internal/AbstractJsonLexer; +HSPLkotlinx/serialization/json/internal/AbstractJsonLexer;->()V +HSPLkotlinx/serialization/json/internal/AbstractJsonLexer;->consumeNextToken(B)B +HSPLkotlinx/serialization/json/internal/AbstractJsonLexer;->consumeString()Ljava/lang/String; +HSPLkotlinx/serialization/json/internal/AbstractJsonLexer;->consumeStringLenient()Ljava/lang/String; +HSPLkotlinx/serialization/json/internal/AbstractJsonLexer;->consumeStringLenientNotNull()Ljava/lang/String; +HSPLkotlinx/serialization/json/internal/AbstractJsonLexer;->expectEof()V +PLkotlinx/serialization/json/internal/AbstractJsonLexer;->fail$default(Lkotlinx/serialization/json/internal/AbstractJsonLexer;Ljava/lang/String;ILjava/lang/String;ILjava/lang/Object;)Ljava/lang/Void; +PLkotlinx/serialization/json/internal/AbstractJsonLexer;->fail$kotlinx_serialization_json$default(Lkotlinx/serialization/json/internal/AbstractJsonLexer;BZILjava/lang/Object;)Ljava/lang/Void; +PLkotlinx/serialization/json/internal/AbstractJsonLexer;->fail$kotlinx_serialization_json(BZ)Ljava/lang/Void; +PLkotlinx/serialization/json/internal/AbstractJsonLexer;->fail(Ljava/lang/String;ILjava/lang/String;)Ljava/lang/Void; +HSPLkotlinx/serialization/json/internal/AbstractJsonLexer;->isValidValueStart(C)Z +HSPLkotlinx/serialization/json/internal/AbstractJsonLexer;->peekNextToken()B +HSPLkotlinx/serialization/json/internal/AbstractJsonLexer;->substring(II)Ljava/lang/String; +PLkotlinx/serialization/json/internal/AbstractJsonLexer;->unexpectedToken(C)V +Lkotlinx/serialization/json/internal/AbstractJsonLexerKt; +HSPLkotlinx/serialization/json/internal/AbstractJsonLexerKt;->charToTokenClass(C)B +PLkotlinx/serialization/json/internal/AbstractJsonLexerKt;->tokenDescription(B)Ljava/lang/String; +Lkotlinx/serialization/json/internal/ArrayPoolsKt; +HSPLkotlinx/serialization/json/internal/ArrayPoolsKt;->()V +HSPLkotlinx/serialization/json/internal/ArrayPoolsKt;->access$getMAX_CHARS_IN_POOL$p()I +Lkotlinx/serialization/json/internal/CharArrayPool; +HSPLkotlinx/serialization/json/internal/CharArrayPool;->()V +HSPLkotlinx/serialization/json/internal/CharArrayPool;->()V +HSPLkotlinx/serialization/json/internal/CharArrayPool;->release([C)V +HSPLkotlinx/serialization/json/internal/CharArrayPool;->take()[C +Lkotlinx/serialization/json/internal/CharArrayPoolBase; +HSPLkotlinx/serialization/json/internal/CharArrayPoolBase;->()V +HSPLkotlinx/serialization/json/internal/CharArrayPoolBase;->releaseImpl([C)V +HSPLkotlinx/serialization/json/internal/CharArrayPoolBase;->take(I)[C +Lkotlinx/serialization/json/internal/CharMappings; +HSPLkotlinx/serialization/json/internal/CharMappings;->()V +HSPLkotlinx/serialization/json/internal/CharMappings;->()V +HSPLkotlinx/serialization/json/internal/CharMappings;->initC2ESC(CC)V +HSPLkotlinx/serialization/json/internal/CharMappings;->initC2ESC(IC)V +HSPLkotlinx/serialization/json/internal/CharMappings;->initC2TC(CB)V +HSPLkotlinx/serialization/json/internal/CharMappings;->initC2TC(IB)V +HSPLkotlinx/serialization/json/internal/CharMappings;->initCharToToken()V +HSPLkotlinx/serialization/json/internal/CharMappings;->initEscape()V +Lkotlinx/serialization/json/internal/Composer; +HSPLkotlinx/serialization/json/internal/Composer;->(Lkotlinx/serialization/json/internal/InternalJsonWriter;)V +HSPLkotlinx/serialization/json/internal/Composer;->getWritingFirst()Z +HSPLkotlinx/serialization/json/internal/Composer;->indent()V +HSPLkotlinx/serialization/json/internal/Composer;->nextItem()V +HSPLkotlinx/serialization/json/internal/Composer;->print(C)V +HSPLkotlinx/serialization/json/internal/Composer;->print(Ljava/lang/String;)V +HSPLkotlinx/serialization/json/internal/Composer;->print(Z)V +HSPLkotlinx/serialization/json/internal/Composer;->printQuoted(Ljava/lang/String;)V +HSPLkotlinx/serialization/json/internal/Composer;->space()V +HSPLkotlinx/serialization/json/internal/Composer;->unIndent()V +Lkotlinx/serialization/json/internal/ComposersKt; +HSPLkotlinx/serialization/json/internal/ComposersKt;->Composer(Lkotlinx/serialization/json/internal/InternalJsonWriter;Lkotlinx/serialization/json/Json;)Lkotlinx/serialization/json/internal/Composer; +Lkotlinx/serialization/json/internal/CreateMapForCacheKt; +HSPLkotlinx/serialization/json/internal/CreateMapForCacheKt;->createMapForCache(I)Ljava/util/Map; +Lkotlinx/serialization/json/internal/DescriptorSchemaCache; +HSPLkotlinx/serialization/json/internal/DescriptorSchemaCache;->()V +Lkotlinx/serialization/json/internal/InternalJsonWriter; +Lkotlinx/serialization/json/internal/JsonDecodingException; +PLkotlinx/serialization/json/internal/JsonDecodingException;->(Ljava/lang/String;)V +Lkotlinx/serialization/json/internal/JsonElementMarker; +Lkotlinx/serialization/json/internal/JsonException; +PLkotlinx/serialization/json/internal/JsonException;->(Ljava/lang/String;)V +PLkotlinx/serialization/json/internal/JsonExceptionsKt;->JsonDecodingException(ILjava/lang/String;)Lkotlinx/serialization/json/internal/JsonDecodingException; +PLkotlinx/serialization/json/internal/JsonExceptionsKt;->JsonDecodingException(ILjava/lang/String;Ljava/lang/CharSequence;)Lkotlinx/serialization/json/internal/JsonDecodingException; +PLkotlinx/serialization/json/internal/JsonExceptionsKt;->minify(Ljava/lang/CharSequence;I)Ljava/lang/CharSequence; +Lkotlinx/serialization/json/internal/JsonPath; +HSPLkotlinx/serialization/json/internal/JsonPath;->()V +PLkotlinx/serialization/json/internal/JsonPath;->getPath()Ljava/lang/String; +HSPLkotlinx/serialization/json/internal/JsonPath;->popDescriptor()V +HSPLkotlinx/serialization/json/internal/JsonPath;->pushDescriptor(Lkotlinx/serialization/descriptors/SerialDescriptor;)V +HSPLkotlinx/serialization/json/internal/JsonPath;->resetCurrentMapKey()V +HSPLkotlinx/serialization/json/internal/JsonPath;->updateCurrentMapKey(Ljava/lang/Object;)V +Lkotlinx/serialization/json/internal/JsonStreamsKt; +HSPLkotlinx/serialization/json/internal/JsonStreamsKt;->encodeByWriter(Lkotlinx/serialization/json/Json;Lkotlinx/serialization/json/internal/InternalJsonWriter;Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)V +Lkotlinx/serialization/json/internal/JsonToStringWriter; +HSPLkotlinx/serialization/json/internal/JsonToStringWriter;->()V +HSPLkotlinx/serialization/json/internal/JsonToStringWriter;->ensureAdditionalCapacity(I)V +HSPLkotlinx/serialization/json/internal/JsonToStringWriter;->ensureTotalCapacity(II)I +HSPLkotlinx/serialization/json/internal/JsonToStringWriter;->release()V +HSPLkotlinx/serialization/json/internal/JsonToStringWriter;->toString()Ljava/lang/String; +HSPLkotlinx/serialization/json/internal/JsonToStringWriter;->write(Ljava/lang/String;)V +HSPLkotlinx/serialization/json/internal/JsonToStringWriter;->writeChar(C)V +HSPLkotlinx/serialization/json/internal/JsonToStringWriter;->writeQuoted(Ljava/lang/String;)V +Lkotlinx/serialization/json/internal/JsonTreeReader; +HSPLkotlinx/serialization/json/internal/JsonTreeReader;->(Lkotlinx/serialization/json/JsonConfiguration;Lkotlinx/serialization/json/internal/AbstractJsonLexer;)V +HSPLkotlinx/serialization/json/internal/JsonTreeReader;->read()Lkotlinx/serialization/json/JsonElement; +HSPLkotlinx/serialization/json/internal/JsonTreeReader;->readArray()Lkotlinx/serialization/json/JsonElement; +HSPLkotlinx/serialization/json/internal/JsonTreeReader;->readValue(Z)Lkotlinx/serialization/json/JsonPrimitive; +Lkotlinx/serialization/json/internal/PolymorphismValidator; +HSPLkotlinx/serialization/json/internal/PolymorphismValidator;->(ZLjava/lang/String;)V +HSPLkotlinx/serialization/json/internal/PolymorphismValidator;->checkDiscriminatorCollisions(Lkotlinx/serialization/descriptors/SerialDescriptor;Lkotlin/reflect/KClass;)V +HSPLkotlinx/serialization/json/internal/PolymorphismValidator;->checkKind(Lkotlinx/serialization/descriptors/SerialDescriptor;Lkotlin/reflect/KClass;)V +HSPLkotlinx/serialization/json/internal/PolymorphismValidator;->polymorphic(Lkotlin/reflect/KClass;Lkotlin/reflect/KClass;Lkotlinx/serialization/KSerializer;)V +HSPLkotlinx/serialization/json/internal/PolymorphismValidator;->polymorphicDefaultDeserializer(Lkotlin/reflect/KClass;Lkotlin/jvm/functions/Function1;)V +Lkotlinx/serialization/json/internal/StreamingJsonDecoder; +HSPLkotlinx/serialization/json/internal/StreamingJsonDecoder;->(Lkotlinx/serialization/json/Json;Lkotlinx/serialization/json/internal/WriteMode;Lkotlinx/serialization/json/internal/AbstractJsonLexer;Lkotlinx/serialization/descriptors/SerialDescriptor;Lkotlinx/serialization/json/internal/StreamingJsonDecoder$DiscriminatorHolder;)V +HSPLkotlinx/serialization/json/internal/StreamingJsonDecoder;->beginStructure(Lkotlinx/serialization/descriptors/SerialDescriptor;)Lkotlinx/serialization/encoding/CompositeDecoder; +HSPLkotlinx/serialization/json/internal/StreamingJsonDecoder;->checkLeadingComma()V +HSPLkotlinx/serialization/json/internal/StreamingJsonDecoder;->decodeElementIndex(Lkotlinx/serialization/descriptors/SerialDescriptor;)I +HSPLkotlinx/serialization/json/internal/StreamingJsonDecoder;->decodeJsonElement()Lkotlinx/serialization/json/JsonElement; +HSPLkotlinx/serialization/json/internal/StreamingJsonDecoder;->decodeMapIndex()I +HSPLkotlinx/serialization/json/internal/StreamingJsonDecoder;->decodeSerializableElement(Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/serialization/json/internal/StreamingJsonDecoder;->decodeSerializableValue(Lkotlinx/serialization/DeserializationStrategy;)Ljava/lang/Object; +HSPLkotlinx/serialization/json/internal/StreamingJsonDecoder;->decodeString()Ljava/lang/String; +HSPLkotlinx/serialization/json/internal/StreamingJsonDecoder;->endStructure(Lkotlinx/serialization/descriptors/SerialDescriptor;)V +Lkotlinx/serialization/json/internal/StreamingJsonDecoder$DiscriminatorHolder; +Lkotlinx/serialization/json/internal/StreamingJsonDecoder$WhenMappings; +HSPLkotlinx/serialization/json/internal/StreamingJsonDecoder$WhenMappings;->()V +Lkotlinx/serialization/json/internal/StreamingJsonEncoder; +HSPLkotlinx/serialization/json/internal/StreamingJsonEncoder;->(Lkotlinx/serialization/json/internal/Composer;Lkotlinx/serialization/json/Json;Lkotlinx/serialization/json/internal/WriteMode;[Lkotlinx/serialization/json/JsonEncoder;)V +HSPLkotlinx/serialization/json/internal/StreamingJsonEncoder;->(Lkotlinx/serialization/json/internal/InternalJsonWriter;Lkotlinx/serialization/json/Json;Lkotlinx/serialization/json/internal/WriteMode;[Lkotlinx/serialization/json/JsonEncoder;)V +HSPLkotlinx/serialization/json/internal/StreamingJsonEncoder;->beginStructure(Lkotlinx/serialization/descriptors/SerialDescriptor;)Lkotlinx/serialization/encoding/CompositeEncoder; +HSPLkotlinx/serialization/json/internal/StreamingJsonEncoder;->encodeBoolean(Z)V +HSPLkotlinx/serialization/json/internal/StreamingJsonEncoder;->encodeElement(Lkotlinx/serialization/descriptors/SerialDescriptor;I)Z +HSPLkotlinx/serialization/json/internal/StreamingJsonEncoder;->encodeNull()V +HSPLkotlinx/serialization/json/internal/StreamingJsonEncoder;->encodeSerializableValue(Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)V +HSPLkotlinx/serialization/json/internal/StreamingJsonEncoder;->encodeString(Ljava/lang/String;)V +HSPLkotlinx/serialization/json/internal/StreamingJsonEncoder;->endStructure(Lkotlinx/serialization/descriptors/SerialDescriptor;)V +HSPLkotlinx/serialization/json/internal/StreamingJsonEncoder;->getJson()Lkotlinx/serialization/json/Json; +Lkotlinx/serialization/json/internal/StreamingJsonEncoder$WhenMappings; +HSPLkotlinx/serialization/json/internal/StreamingJsonEncoder$WhenMappings;->()V +Lkotlinx/serialization/json/internal/StringJsonLexer; +HSPLkotlinx/serialization/json/internal/StringJsonLexer;->(Ljava/lang/String;)V +HSPLkotlinx/serialization/json/internal/StringJsonLexer;->canConsumeValue()Z +HSPLkotlinx/serialization/json/internal/StringJsonLexer;->consumeKeyString()Ljava/lang/String; +HSPLkotlinx/serialization/json/internal/StringJsonLexer;->consumeNextToken()B +HSPLkotlinx/serialization/json/internal/StringJsonLexer;->consumeNextToken(C)V +HSPLkotlinx/serialization/json/internal/StringJsonLexer;->getSource()Ljava/lang/CharSequence; +HSPLkotlinx/serialization/json/internal/StringJsonLexer;->getSource()Ljava/lang/String; +HSPLkotlinx/serialization/json/internal/StringJsonLexer;->prefetchOrEof(I)I +HSPLkotlinx/serialization/json/internal/StringJsonLexer;->skipWhitespaces()I +HSPLkotlinx/serialization/json/internal/StringJsonLexer;->tryConsumeComma()Z +Lkotlinx/serialization/json/internal/StringOpsKt; +HSPLkotlinx/serialization/json/internal/StringOpsKt;->()V +HSPLkotlinx/serialization/json/internal/StringOpsKt;->getESCAPE_MARKERS()[B +HSPLkotlinx/serialization/json/internal/StringOpsKt;->toBooleanStrictOrNull(Ljava/lang/String;)Ljava/lang/Boolean; +HSPLkotlinx/serialization/json/internal/StringOpsKt;->toHexChar(I)C +Lkotlinx/serialization/json/internal/WriteMode; +HSPLkotlinx/serialization/json/internal/WriteMode;->$values()[Lkotlinx/serialization/json/internal/WriteMode; +HSPLkotlinx/serialization/json/internal/WriteMode;->()V +HSPLkotlinx/serialization/json/internal/WriteMode;->(Ljava/lang/String;ICC)V +HSPLkotlinx/serialization/json/internal/WriteMode;->getEntries()Lkotlin/enums/EnumEntries; +HSPLkotlinx/serialization/json/internal/WriteMode;->values()[Lkotlinx/serialization/json/internal/WriteMode; +Lkotlinx/serialization/json/internal/WriteModeKt; +HSPLkotlinx/serialization/json/internal/WriteModeKt;->carrierDescriptor(Lkotlinx/serialization/descriptors/SerialDescriptor;Lkotlinx/serialization/modules/SerializersModule;)Lkotlinx/serialization/descriptors/SerialDescriptor; +HSPLkotlinx/serialization/json/internal/WriteModeKt;->switchMode(Lkotlinx/serialization/json/Json;Lkotlinx/serialization/descriptors/SerialDescriptor;)Lkotlinx/serialization/json/internal/WriteMode; +Lkotlinx/serialization/modules/PolymorphicModuleBuilder; +HSPLkotlinx/serialization/modules/PolymorphicModuleBuilder;->(Lkotlin/reflect/KClass;Lkotlinx/serialization/KSerializer;)V +HSPLkotlinx/serialization/modules/PolymorphicModuleBuilder;->buildTo(Lkotlinx/serialization/modules/SerializersModuleBuilder;)V +HSPLkotlinx/serialization/modules/PolymorphicModuleBuilder;->defaultDeserializer(Lkotlin/jvm/functions/Function1;)V +HSPLkotlinx/serialization/modules/PolymorphicModuleBuilder;->subclass(Lkotlin/reflect/KClass;Lkotlinx/serialization/KSerializer;)V +Lkotlinx/serialization/modules/SerialModuleImpl; +HSPLkotlinx/serialization/modules/SerialModuleImpl;->(Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;)V +HSPLkotlinx/serialization/modules/SerialModuleImpl;->dumpTo(Lkotlinx/serialization/modules/SerializersModuleCollector;)V +Lkotlinx/serialization/modules/SerializersModule; +HSPLkotlinx/serialization/modules/SerializersModule;->()V +HSPLkotlinx/serialization/modules/SerializersModule;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/serialization/modules/SerializersModuleBuilder; +HSPLkotlinx/serialization/modules/SerializersModuleBuilder;->()V +HSPLkotlinx/serialization/modules/SerializersModuleBuilder;->build()Lkotlinx/serialization/modules/SerializersModule; +HSPLkotlinx/serialization/modules/SerializersModuleBuilder;->registerDefaultPolymorphicDeserializer(Lkotlin/reflect/KClass;Lkotlin/jvm/functions/Function1;Z)V +HSPLkotlinx/serialization/modules/SerializersModuleBuilder;->registerPolymorphicSerializer$default(Lkotlinx/serialization/modules/SerializersModuleBuilder;Lkotlin/reflect/KClass;Lkotlin/reflect/KClass;Lkotlinx/serialization/KSerializer;ZILjava/lang/Object;)V +HSPLkotlinx/serialization/modules/SerializersModuleBuilder;->registerPolymorphicSerializer(Lkotlin/reflect/KClass;Lkotlin/reflect/KClass;Lkotlinx/serialization/KSerializer;Z)V +Lkotlinx/serialization/modules/SerializersModuleBuildersKt; +HSPLkotlinx/serialization/modules/SerializersModuleBuildersKt;->EmptySerializersModule()Lkotlinx/serialization/modules/SerializersModule; +Lkotlinx/serialization/modules/SerializersModuleCollector; +Lkotlinx/serialization/modules/SerializersModuleKt; +HSPLkotlinx/serialization/modules/SerializersModuleKt;->()V +HSPLkotlinx/serialization/modules/SerializersModuleKt;->getEmptySerializersModule()Lkotlinx/serialization/modules/SerializersModule; +Lnet/zetetic/database/DatabaseErrorHandler; +Lnet/zetetic/database/DatabaseUtils; +HSPLnet/zetetic/database/DatabaseUtils;->()V +HSPLnet/zetetic/database/DatabaseUtils;->cursorPickFillWindowStartPosition(II)I +HSPLnet/zetetic/database/DatabaseUtils;->getSqlStatementType(Ljava/lang/String;)I +HSPLnet/zetetic/database/DatabaseUtils;->longForQuery(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/String;)J +HSPLnet/zetetic/database/DatabaseUtils;->longForQuery(Lnet/zetetic/database/sqlcipher/SQLiteStatement;[Ljava/lang/String;)J +Lnet/zetetic/database/DefaultDatabaseErrorHandler; +HSPLnet/zetetic/database/DefaultDatabaseErrorHandler;->()V +Lnet/zetetic/database/sqlcipher/CloseGuard; +HSPLnet/zetetic/database/sqlcipher/CloseGuard;->()V +HSPLnet/zetetic/database/sqlcipher/CloseGuard;->()V +HSPLnet/zetetic/database/sqlcipher/CloseGuard;->get()Lnet/zetetic/database/sqlcipher/CloseGuard; +HSPLnet/zetetic/database/sqlcipher/CloseGuard;->open(Ljava/lang/String;)V +Lnet/zetetic/database/sqlcipher/CloseGuard$DefaultReporter; +HSPLnet/zetetic/database/sqlcipher/CloseGuard$DefaultReporter;->()V +HSPLnet/zetetic/database/sqlcipher/CloseGuard$DefaultReporter;->(Lnet/zetetic/database/sqlcipher/CloseGuard$1;)V +Lnet/zetetic/database/sqlcipher/CloseGuard$Reporter; +Lnet/zetetic/database/sqlcipher/SQLiteClosable; +HSPLnet/zetetic/database/sqlcipher/SQLiteClosable;->()V +HSPLnet/zetetic/database/sqlcipher/SQLiteClosable;->acquireReference()V +HSPLnet/zetetic/database/sqlcipher/SQLiteClosable;->close()V +HSPLnet/zetetic/database/sqlcipher/SQLiteClosable;->releaseReference()V +Lnet/zetetic/database/sqlcipher/SQLiteConnection; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->(Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool;Lnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;IZ)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->acquirePreparedStatement(Ljava/lang/String;)Lnet/zetetic/database/sqlcipher/SQLiteConnection$PreparedStatement; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->applyBlockGuardPolicy(Lnet/zetetic/database/sqlcipher/SQLiteConnection$PreparedStatement;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->attachCancellationSignal(Landroid/os/CancellationSignal;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->bindArguments(Lnet/zetetic/database/sqlcipher/SQLiteConnection$PreparedStatement;[Ljava/lang/Object;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->canonicalizeSyncMode(Ljava/lang/String;)Ljava/lang/String; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->detachCancellationSignal(Landroid/os/CancellationSignal;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->execute(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->executeForChangedRowCount(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)I +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->executeForCursorWindow(Ljava/lang/String;[Ljava/lang/Object;Landroid/database/CursorWindow;IIZLandroid/os/CancellationSignal;)I +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->executeForLong(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)J +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->executeForString(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)Ljava/lang/String; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->finalizePreparedStatement(Lnet/zetetic/database/sqlcipher/SQLiteConnection$PreparedStatement;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->hasCodec()Z +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->isCacheable(I)Z +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->isPrimaryConnection()Z +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->obtainPreparedStatement(Ljava/lang/String;JIIZ)Lnet/zetetic/database/sqlcipher/SQLiteConnection$PreparedStatement; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->open()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->open(Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool;Lnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;IZ)Lnet/zetetic/database/sqlcipher/SQLiteConnection; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->prepare(Ljava/lang/String;Lnet/zetetic/database/sqlcipher/SQLiteStatementInfo;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->reconfigure(Lnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->recyclePreparedStatement(Lnet/zetetic/database/sqlcipher/SQLiteConnection$PreparedStatement;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->releasePreparedStatement(Lnet/zetetic/database/sqlcipher/SQLiteConnection$PreparedStatement;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->setAutoCheckpointInterval()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->setForeignKeyModeFromConfiguration()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->setJournalMode(Ljava/lang/String;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->setJournalSizeLimit()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->setOnlyAllowReadOnlyOperations(Z)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->setPageSize()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->setSyncMode(Ljava/lang/String;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->setWalModeFromConfiguration()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->throwIfStatementForbidden(Lnet/zetetic/database/sqlcipher/SQLiteConnection$PreparedStatement;)V +Lnet/zetetic/database/sqlcipher/SQLiteConnection$Operation; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection$Operation;->()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection$Operation;->(Lnet/zetetic/database/sqlcipher/SQLiteConnection$1;)V +Lnet/zetetic/database/sqlcipher/SQLiteConnection$OperationLog; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection$OperationLog;->()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection$OperationLog;->(Lnet/zetetic/database/sqlcipher/SQLiteConnection$1;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection$OperationLog;->beginOperation(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)I +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection$OperationLog;->endOperation(I)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection$OperationLog;->endOperationDeferLog(I)Z +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection$OperationLog;->endOperationDeferLogLocked(I)Z +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection$OperationLog;->getOperationLocked(I)Lnet/zetetic/database/sqlcipher/SQLiteConnection$Operation; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection$OperationLog;->newOperationCookieLocked(I)I +Lnet/zetetic/database/sqlcipher/SQLiteConnection$PreparedStatement; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection$PreparedStatement;->()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection$PreparedStatement;->(Lnet/zetetic/database/sqlcipher/SQLiteConnection$1;)V +Lnet/zetetic/database/sqlcipher/SQLiteConnection$PreparedStatementCache; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection$PreparedStatementCache;->(Lnet/zetetic/database/sqlcipher/SQLiteConnection;I)V +Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->(Lnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->acquireConnection(Ljava/lang/String;ILandroid/os/CancellationSignal;)Lnet/zetetic/database/sqlcipher/SQLiteConnection; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->closeExcessConnectionsAndLogExceptionsLocked()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->finishAcquireConnectionLocked(Lnet/zetetic/database/sqlcipher/SQLiteConnection;I)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->getPriority(I)I +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->markAcquiredConnectionsLocked(Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool$AcquiredConnectionStatus;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->obtainConnectionWaiterLocked(Ljava/lang/Thread;JIZLjava/lang/String;I)Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool$ConnectionWaiter; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->open()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->open(Lnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;)Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->openConnectionLocked(Lnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;Z)Lnet/zetetic/database/sqlcipher/SQLiteConnection; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->reconfigure(Lnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->reconfigureAllConnectionsLocked()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->recycleConnectionLocked(Lnet/zetetic/database/sqlcipher/SQLiteConnection;Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool$AcquiredConnectionStatus;)Z +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->recycleConnectionWaiterLocked(Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool$ConnectionWaiter;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->releaseConnection(Lnet/zetetic/database/sqlcipher/SQLiteConnection;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->setMaxConnectionPoolSizeLocked()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->throwIfClosedLocked()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->tryAcquireNonPrimaryConnectionLocked(Ljava/lang/String;I)Lnet/zetetic/database/sqlcipher/SQLiteConnection; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->tryAcquirePrimaryConnectionLocked(I)Lnet/zetetic/database/sqlcipher/SQLiteConnection; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->waitForConnection(Ljava/lang/String;ILandroid/os/CancellationSignal;)Lnet/zetetic/database/sqlcipher/SQLiteConnection; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->wakeConnectionWaitersLocked()V +Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool$AcquiredConnectionStatus; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool$AcquiredConnectionStatus;->$values()[Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool$AcquiredConnectionStatus; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool$AcquiredConnectionStatus;->()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool$AcquiredConnectionStatus;->(Ljava/lang/String;I)V +Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool$ConnectionWaiter; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool$ConnectionWaiter;->()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool$ConnectionWaiter;->(Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool$1;)V +Lnet/zetetic/database/sqlcipher/SQLiteCursor; +HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->()V +HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->(Lnet/zetetic/database/sqlcipher/SQLiteCursorDriver;Ljava/lang/String;Lnet/zetetic/database/sqlcipher/SQLiteQuery;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->awc_clearOrCreateWindow(Ljava/lang/String;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->close()V +HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->fillWindow(I)V +PLnet/zetetic/database/sqlcipher/SQLiteCursor;->finalize()V +HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->getColumnIndex(Ljava/lang/String;)I +HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->getCount()I +HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->getDatabase()Lnet/zetetic/database/sqlcipher/SQLiteDatabase; +HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->onMove(II)Z +HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->setWindow(Landroid/database/CursorWindow;)V +Lnet/zetetic/database/sqlcipher/SQLiteCursorDriver; +Lnet/zetetic/database/sqlcipher/SQLiteCustomFunction; +Lnet/zetetic/database/sqlcipher/SQLiteDatabase; +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->()V +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->(Ljava/lang/String;[BILnet/zetetic/database/sqlcipher/SQLiteDatabase$CursorFactory;Lnet/zetetic/database/DatabaseErrorHandler;Lnet/zetetic/database/sqlcipher/SQLiteDatabaseHook;)V +PLnet/zetetic/database/sqlcipher/SQLiteDatabase;->beginTransaction()V +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->beginTransaction(Lnet/zetetic/database/sqlcipher/SQLiteTransactionListener;Z)V +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->beginTransactionNonExclusive()V +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->compileStatement(Ljava/lang/String;)Landroidx/sqlite/db/SupportSQLiteStatement; +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->compileStatement(Ljava/lang/String;)Lnet/zetetic/database/sqlcipher/SQLiteStatement; +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->createSession()Lnet/zetetic/database/sqlcipher/SQLiteSession; +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->endTransaction()V +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->execSQL(Ljava/lang/String;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->executeSql(Ljava/lang/String;[Ljava/lang/Object;)I +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->getPath()Ljava/lang/String; +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->getThreadDefaultConnectionFlags(Z)I +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->getThreadSession()Lnet/zetetic/database/sqlcipher/SQLiteSession; +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->getVersion()I +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->hasCodec()Z +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->inTransaction()Z +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->isMainThread()Z +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->isOpen()Z +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->isReadOnly()Z +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->isReadOnlyLocked()Z +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->isWriteAheadLoggingEnabled()Z +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->open()V +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->openDatabase(Ljava/lang/String;[BLnet/zetetic/database/sqlcipher/SQLiteDatabase$CursorFactory;ILnet/zetetic/database/DatabaseErrorHandler;Lnet/zetetic/database/sqlcipher/SQLiteDatabaseHook;)Lnet/zetetic/database/sqlcipher/SQLiteDatabase; +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->openInner()V +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->query(Landroidx/sqlite/db/SupportSQLiteQuery;)Landroid/database/Cursor; +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->query(Landroidx/sqlite/db/SupportSQLiteQuery;Landroid/os/CancellationSignal;)Landroid/database/Cursor; +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->query(Ljava/lang/String;)Landroid/database/Cursor; +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->rawQuery(Ljava/lang/String;[Ljava/lang/Object;)Landroid/database/Cursor; +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->setForeignKeyConstraintsEnabled(Z)V +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->setTransactionSuccessful()V +PLnet/zetetic/database/sqlcipher/SQLiteDatabase;->setVersion(I)V +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->throwIfNotOpenLocked()V +Lnet/zetetic/database/sqlcipher/SQLiteDatabase$1; +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase$1;->(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase$1;->initialValue()Ljava/lang/Object; +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase$1;->initialValue()Lnet/zetetic/database/sqlcipher/SQLiteSession; +Lnet/zetetic/database/sqlcipher/SQLiteDatabase$CursorFactory; +Lnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration; +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;->()V +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;->(Ljava/lang/String;I[BLnet/zetetic/database/sqlcipher/SQLiteDatabaseHook;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;->(Lnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;->isInMemoryDb()Z +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;->stripPathForLogs(Ljava/lang/String;)Ljava/lang/String; +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;->updateParametersFrom(Lnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;)V +Lnet/zetetic/database/sqlcipher/SQLiteDatabaseHook; +Lnet/zetetic/database/sqlcipher/SQLiteDebug; +HSPLnet/zetetic/database/sqlcipher/SQLiteDebug;->()V +Lnet/zetetic/database/sqlcipher/SQLiteDebug$PagerStats; +Lnet/zetetic/database/sqlcipher/SQLiteDirectCursorDriver; +HSPLnet/zetetic/database/sqlcipher/SQLiteDirectCursorDriver;->(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteDirectCursorDriver;->cursorClosed()V +HSPLnet/zetetic/database/sqlcipher/SQLiteDirectCursorDriver;->query(Lnet/zetetic/database/sqlcipher/SQLiteDatabase$CursorFactory;[Ljava/lang/Object;)Landroid/database/Cursor; +Lnet/zetetic/database/sqlcipher/SQLiteGlobal; +HSPLnet/zetetic/database/sqlcipher/SQLiteGlobal;->()V +HSPLnet/zetetic/database/sqlcipher/SQLiteGlobal;->getDefaultJournalMode()Ljava/lang/String; +HSPLnet/zetetic/database/sqlcipher/SQLiteGlobal;->getDefaultSyncMode()Ljava/lang/String; +HSPLnet/zetetic/database/sqlcipher/SQLiteGlobal;->getJournalSizeLimit()I +HSPLnet/zetetic/database/sqlcipher/SQLiteGlobal;->getWALAutoCheckpoint()I +HSPLnet/zetetic/database/sqlcipher/SQLiteGlobal;->getWALConnectionPoolSize()I +HSPLnet/zetetic/database/sqlcipher/SQLiteGlobal;->getWALSyncMode()Ljava/lang/String; +Lnet/zetetic/database/sqlcipher/SQLiteOpenHelper; +HSPLnet/zetetic/database/sqlcipher/SQLiteOpenHelper;->()V +HSPLnet/zetetic/database/sqlcipher/SQLiteOpenHelper;->(Landroid/content/Context;Ljava/lang/String;[BLnet/zetetic/database/sqlcipher/SQLiteDatabase$CursorFactory;IILnet/zetetic/database/DatabaseErrorHandler;Lnet/zetetic/database/sqlcipher/SQLiteDatabaseHook;Z)V +HSPLnet/zetetic/database/sqlcipher/SQLiteOpenHelper;->getDatabaseLocked(Z)Lnet/zetetic/database/sqlcipher/SQLiteDatabase; +HSPLnet/zetetic/database/sqlcipher/SQLiteOpenHelper;->getWritableDatabase()Lnet/zetetic/database/sqlcipher/SQLiteDatabase; +HSPLnet/zetetic/database/sqlcipher/SQLiteOpenHelper;->setWriteAheadLoggingEnabled(Z)V +Lnet/zetetic/database/sqlcipher/SQLiteProgram; +HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->()V +HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->bindAllArgs([Ljava/lang/Object;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->bindAllArgsAsStrings([Ljava/lang/String;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->clearBindings()V +HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->getBindArgs()[Ljava/lang/Object; +HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->getColumnNames()[Ljava/lang/String; +HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->getConnectionFlags()I +HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->getDatabase()Lnet/zetetic/database/sqlcipher/SQLiteDatabase; +HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->getSession()Lnet/zetetic/database/sqlcipher/SQLiteSession; +HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->getSql()Ljava/lang/String; +HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->onAllReferencesReleased()V +Lnet/zetetic/database/sqlcipher/SQLiteQuery; +HSPLnet/zetetic/database/sqlcipher/SQLiteQuery;->(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;Ljava/lang/String;Landroid/os/CancellationSignal;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteQuery;->fillWindow(Landroid/database/CursorWindow;IIZ)I +Lnet/zetetic/database/sqlcipher/SQLiteSession; +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->()V +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->(Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->acquireConnection(Ljava/lang/String;ILandroid/os/CancellationSignal;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->beginTransaction(ILnet/zetetic/database/sqlcipher/SQLiteTransactionListener;ILandroid/os/CancellationSignal;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->beginTransactionUnchecked(ILnet/zetetic/database/sqlcipher/SQLiteTransactionListener;ILandroid/os/CancellationSignal;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->endTransaction(Landroid/os/CancellationSignal;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->endTransactionUnchecked(Landroid/os/CancellationSignal;Z)V +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->executeForChangedRowCount(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)I +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->executeForCursorWindow(Ljava/lang/String;[Ljava/lang/Object;Landroid/database/CursorWindow;IIZILandroid/os/CancellationSignal;)I +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->executeForLong(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)J +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->executeSpecial(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)Z +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->hasTransaction()Z +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->obtainTransaction(ILnet/zetetic/database/sqlcipher/SQLiteTransactionListener;)Lnet/zetetic/database/sqlcipher/SQLiteSession$Transaction; +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->prepare(Ljava/lang/String;ILandroid/os/CancellationSignal;Lnet/zetetic/database/sqlcipher/SQLiteStatementInfo;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->recycleTransaction(Lnet/zetetic/database/sqlcipher/SQLiteSession$Transaction;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->releaseConnection()V +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->setTransactionSuccessful()V +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->throwIfNoTransaction()V +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->throwIfTransactionMarkedSuccessful()V +Lnet/zetetic/database/sqlcipher/SQLiteSession$Transaction; +HSPLnet/zetetic/database/sqlcipher/SQLiteSession$Transaction;->()V +HSPLnet/zetetic/database/sqlcipher/SQLiteSession$Transaction;->(Lnet/zetetic/database/sqlcipher/SQLiteSession$1;)V +Lnet/zetetic/database/sqlcipher/SQLiteStatement; +HSPLnet/zetetic/database/sqlcipher/SQLiteStatement;->(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/Object;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteStatement;->executeUpdateDelete()I +HSPLnet/zetetic/database/sqlcipher/SQLiteStatement;->simpleQueryForLong()J +Lnet/zetetic/database/sqlcipher/SQLiteStatementInfo; +HSPLnet/zetetic/database/sqlcipher/SQLiteStatementInfo;->()V +Lnet/zetetic/database/sqlcipher/SQLiteTransactionListener; +Lnet/zetetic/database/sqlcipher/SupportHelper; +HSPLnet/zetetic/database/sqlcipher/SupportHelper;->(Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration;[BLnet/zetetic/database/sqlcipher/SQLiteDatabaseHook;Z)V +HSPLnet/zetetic/database/sqlcipher/SupportHelper;->(Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration;[BLnet/zetetic/database/sqlcipher/SQLiteDatabaseHook;ZI)V +HSPLnet/zetetic/database/sqlcipher/SupportHelper;->getWritableDatabase()Landroidx/sqlite/db/SupportSQLiteDatabase; +HSPLnet/zetetic/database/sqlcipher/SupportHelper;->setWriteAheadLoggingEnabled(Z)V +Lnet/zetetic/database/sqlcipher/SupportHelper$1; +HSPLnet/zetetic/database/sqlcipher/SupportHelper$1;->(Lnet/zetetic/database/sqlcipher/SupportHelper;Landroid/content/Context;Ljava/lang/String;[BLnet/zetetic/database/sqlcipher/SQLiteDatabase$CursorFactory;IILnet/zetetic/database/DatabaseErrorHandler;Lnet/zetetic/database/sqlcipher/SQLiteDatabaseHook;ZLandroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration;)V +HSPLnet/zetetic/database/sqlcipher/SupportHelper$1;->onConfigure(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;)V +PLnet/zetetic/database/sqlcipher/SupportHelper$1;->onCreate(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;)V +HSPLnet/zetetic/database/sqlcipher/SupportHelper$1;->onOpen(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;)V +Lnet/zetetic/database/sqlcipher/SupportOpenHelperFactory; +HSPLnet/zetetic/database/sqlcipher/SupportOpenHelperFactory;->([BLnet/zetetic/database/sqlcipher/SQLiteDatabaseHook;Z)V +HSPLnet/zetetic/database/sqlcipher/SupportOpenHelperFactory;->([BLnet/zetetic/database/sqlcipher/SQLiteDatabaseHook;ZI)V +HSPLnet/zetetic/database/sqlcipher/SupportOpenHelperFactory;->create(Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration;)Landroidx/sqlite/db/SupportSQLiteOpenHelper; +Lokhttp3/Authenticator; +HSPLokhttp3/Authenticator;->()V +Lokhttp3/Authenticator$Companion; +HSPLokhttp3/Authenticator$Companion;->()V +HSPLokhttp3/Authenticator$Companion;->()V +Lokhttp3/Authenticator$Companion$AuthenticatorNone; +HSPLokhttp3/Authenticator$Companion$AuthenticatorNone;->()V +Lokhttp3/Cache; +Lokhttp3/Call$Factory; +Lokhttp3/CertificatePinner; +HSPLokhttp3/CertificatePinner;->()V +HSPLokhttp3/CertificatePinner;->(Ljava/util/Set;Lokhttp3/internal/tls/CertificateChainCleaner;)V +HSPLokhttp3/CertificatePinner;->(Ljava/util/Set;Lokhttp3/internal/tls/CertificateChainCleaner;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokhttp3/CertificatePinner;->withCertificateChainCleaner$okhttp(Lokhttp3/internal/tls/CertificateChainCleaner;)Lokhttp3/CertificatePinner; +Lokhttp3/CertificatePinner$Builder; +HSPLokhttp3/CertificatePinner$Builder;->()V +HSPLokhttp3/CertificatePinner$Builder;->build()Lokhttp3/CertificatePinner; +Lokhttp3/CertificatePinner$Companion; +HSPLokhttp3/CertificatePinner$Companion;->()V +HSPLokhttp3/CertificatePinner$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lokhttp3/CipherSuite; +HSPLokhttp3/CipherSuite;->()V +HSPLokhttp3/CipherSuite;->(Ljava/lang/String;)V +HSPLokhttp3/CipherSuite;->(Ljava/lang/String;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokhttp3/CipherSuite;->access$getINSTANCES$cp()Ljava/util/Map; +HSPLokhttp3/CipherSuite;->javaName()Ljava/lang/String; +Lokhttp3/CipherSuite$Companion; +HSPLokhttp3/CipherSuite$Companion;->()V +HSPLokhttp3/CipherSuite$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokhttp3/CipherSuite$Companion;->access$init(Lokhttp3/CipherSuite$Companion;Ljava/lang/String;I)Lokhttp3/CipherSuite; +HSPLokhttp3/CipherSuite$Companion;->init(Ljava/lang/String;I)Lokhttp3/CipherSuite; +Lokhttp3/CipherSuite$Companion$ORDER_BY_NAME$1; +HSPLokhttp3/CipherSuite$Companion$ORDER_BY_NAME$1;->()V +Lokhttp3/ConnectionPool; +HSPLokhttp3/ConnectionPool;->()V +HSPLokhttp3/ConnectionPool;->(IJLjava/util/concurrent/TimeUnit;)V +HSPLokhttp3/ConnectionPool;->(Lokhttp3/internal/connection/RealConnectionPool;)V +Lokhttp3/ConnectionSpec; +HSPLokhttp3/ConnectionSpec;->()V +HSPLokhttp3/ConnectionSpec;->(ZZ[Ljava/lang/String;[Ljava/lang/String;)V +HSPLokhttp3/ConnectionSpec;->isTls()Z +Lokhttp3/ConnectionSpec$Builder; +HSPLokhttp3/ConnectionSpec$Builder;->(Z)V +HSPLokhttp3/ConnectionSpec$Builder;->build()Lokhttp3/ConnectionSpec; +HSPLokhttp3/ConnectionSpec$Builder;->cipherSuites([Ljava/lang/String;)Lokhttp3/ConnectionSpec$Builder; +HSPLokhttp3/ConnectionSpec$Builder;->cipherSuites([Lokhttp3/CipherSuite;)Lokhttp3/ConnectionSpec$Builder; +HSPLokhttp3/ConnectionSpec$Builder;->supportsTlsExtensions(Z)Lokhttp3/ConnectionSpec$Builder; +HSPLokhttp3/ConnectionSpec$Builder;->tlsVersions([Ljava/lang/String;)Lokhttp3/ConnectionSpec$Builder; +HSPLokhttp3/ConnectionSpec$Builder;->tlsVersions([Lokhttp3/TlsVersion;)Lokhttp3/ConnectionSpec$Builder; +Lokhttp3/ConnectionSpec$Companion; +HSPLokhttp3/ConnectionSpec$Companion;->()V +HSPLokhttp3/ConnectionSpec$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lokhttp3/CookieJar; +HSPLokhttp3/CookieJar;->()V +Lokhttp3/CookieJar$Companion; +HSPLokhttp3/CookieJar$Companion;->()V +HSPLokhttp3/CookieJar$Companion;->()V +Lokhttp3/CookieJar$Companion$NoCookies; +HSPLokhttp3/CookieJar$Companion$NoCookies;->()V +Lokhttp3/Dispatcher; +HSPLokhttp3/Dispatcher;->()V +Lokhttp3/Dns; +HSPLokhttp3/Dns;->()V +Lokhttp3/Dns$Companion; +HSPLokhttp3/Dns$Companion;->()V +HSPLokhttp3/Dns$Companion;->()V +Lokhttp3/Dns$Companion$DnsSystem; +HSPLokhttp3/Dns$Companion$DnsSystem;->()V +Lokhttp3/EventListener; +HSPLokhttp3/EventListener;->()V +HSPLokhttp3/EventListener;->()V +Lokhttp3/EventListener$Companion; +HSPLokhttp3/EventListener$Companion;->()V +HSPLokhttp3/EventListener$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lokhttp3/EventListener$Companion$NONE$1; +HSPLokhttp3/EventListener$Companion$NONE$1;->()V +Lokhttp3/EventListener$Factory; +Lokhttp3/Headers; +HSPLokhttp3/Headers;->()V +HSPLokhttp3/Headers;->([Ljava/lang/String;)V +HSPLokhttp3/Headers;->([Ljava/lang/String;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lokhttp3/Headers$Companion; +HSPLokhttp3/Headers$Companion;->()V +HSPLokhttp3/Headers$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokhttp3/Headers$Companion;->of([Ljava/lang/String;)Lokhttp3/Headers; +Lokhttp3/Interceptor; +Lokhttp3/MediaType; +Lokhttp3/OkHttpClient; +HSPLokhttp3/OkHttpClient;->()V +HSPLokhttp3/OkHttpClient;->(Lokhttp3/OkHttpClient$Builder;)V +HSPLokhttp3/OkHttpClient;->access$getDEFAULT_CONNECTION_SPECS$cp()Ljava/util/List; +HSPLokhttp3/OkHttpClient;->access$getDEFAULT_PROTOCOLS$cp()Ljava/util/List; +HSPLokhttp3/OkHttpClient;->verifyClientState()V +Lokhttp3/OkHttpClient$Builder; +HSPLokhttp3/OkHttpClient$Builder;->()V +HSPLokhttp3/OkHttpClient$Builder;->addInterceptor(Lokhttp3/Interceptor;)Lokhttp3/OkHttpClient$Builder; +HSPLokhttp3/OkHttpClient$Builder;->build()Lokhttp3/OkHttpClient; +HSPLokhttp3/OkHttpClient$Builder;->getAuthenticator$okhttp()Lokhttp3/Authenticator; +HSPLokhttp3/OkHttpClient$Builder;->getCache$okhttp()Lokhttp3/Cache; +HSPLokhttp3/OkHttpClient$Builder;->getCallTimeout$okhttp()I +HSPLokhttp3/OkHttpClient$Builder;->getCertificatePinner$okhttp()Lokhttp3/CertificatePinner; +HSPLokhttp3/OkHttpClient$Builder;->getConnectTimeout$okhttp()I +HSPLokhttp3/OkHttpClient$Builder;->getConnectionPool$okhttp()Lokhttp3/ConnectionPool; +HSPLokhttp3/OkHttpClient$Builder;->getConnectionSpecs$okhttp()Ljava/util/List; +HSPLokhttp3/OkHttpClient$Builder;->getCookieJar$okhttp()Lokhttp3/CookieJar; +HSPLokhttp3/OkHttpClient$Builder;->getDispatcher$okhttp()Lokhttp3/Dispatcher; +HSPLokhttp3/OkHttpClient$Builder;->getDns$okhttp()Lokhttp3/Dns; +HSPLokhttp3/OkHttpClient$Builder;->getEventListenerFactory$okhttp()Lokhttp3/EventListener$Factory; +HSPLokhttp3/OkHttpClient$Builder;->getFollowRedirects$okhttp()Z +HSPLokhttp3/OkHttpClient$Builder;->getFollowSslRedirects$okhttp()Z +HSPLokhttp3/OkHttpClient$Builder;->getHostnameVerifier$okhttp()Ljavax/net/ssl/HostnameVerifier; +HSPLokhttp3/OkHttpClient$Builder;->getInterceptors$okhttp()Ljava/util/List; +HSPLokhttp3/OkHttpClient$Builder;->getMinWebSocketMessageToCompress$okhttp()J +HSPLokhttp3/OkHttpClient$Builder;->getNetworkInterceptors$okhttp()Ljava/util/List; +HSPLokhttp3/OkHttpClient$Builder;->getPingInterval$okhttp()I +HSPLokhttp3/OkHttpClient$Builder;->getProtocols$okhttp()Ljava/util/List; +HSPLokhttp3/OkHttpClient$Builder;->getProxy$okhttp()Ljava/net/Proxy; +HSPLokhttp3/OkHttpClient$Builder;->getProxyAuthenticator$okhttp()Lokhttp3/Authenticator; +HSPLokhttp3/OkHttpClient$Builder;->getProxySelector$okhttp()Ljava/net/ProxySelector; +HSPLokhttp3/OkHttpClient$Builder;->getReadTimeout$okhttp()I +HSPLokhttp3/OkHttpClient$Builder;->getRetryOnConnectionFailure$okhttp()Z +HSPLokhttp3/OkHttpClient$Builder;->getRouteDatabase$okhttp()Lokhttp3/internal/connection/RouteDatabase; +HSPLokhttp3/OkHttpClient$Builder;->getSocketFactory$okhttp()Ljavax/net/SocketFactory; +HSPLokhttp3/OkHttpClient$Builder;->getSslSocketFactoryOrNull$okhttp()Ljavax/net/ssl/SSLSocketFactory; +HSPLokhttp3/OkHttpClient$Builder;->getWriteTimeout$okhttp()I +Lokhttp3/OkHttpClient$Companion; +HSPLokhttp3/OkHttpClient$Companion;->()V +HSPLokhttp3/OkHttpClient$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokhttp3/OkHttpClient$Companion;->getDEFAULT_CONNECTION_SPECS$okhttp()Ljava/util/List; +HSPLokhttp3/OkHttpClient$Companion;->getDEFAULT_PROTOCOLS$okhttp()Ljava/util/List; +Lokhttp3/Protocol; +HSPLokhttp3/Protocol;->$values()[Lokhttp3/Protocol; +HSPLokhttp3/Protocol;->()V +HSPLokhttp3/Protocol;->(Ljava/lang/String;ILjava/lang/String;)V +Lokhttp3/Protocol$Companion; +HSPLokhttp3/Protocol$Companion;->()V +HSPLokhttp3/Protocol$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lokhttp3/RequestBody; +HSPLokhttp3/RequestBody;->()V +HSPLokhttp3/RequestBody;->()V +Lokhttp3/RequestBody$Companion; +HSPLokhttp3/RequestBody$Companion;->()V +HSPLokhttp3/RequestBody$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokhttp3/RequestBody$Companion;->create$default(Lokhttp3/RequestBody$Companion;[BLokhttp3/MediaType;IIILjava/lang/Object;)Lokhttp3/RequestBody; +HSPLokhttp3/RequestBody$Companion;->create([BLokhttp3/MediaType;II)Lokhttp3/RequestBody; +Lokhttp3/RequestBody$Companion$toRequestBody$2; +HSPLokhttp3/RequestBody$Companion$toRequestBody$2;->(Lokhttp3/MediaType;I[BI)V +Lokhttp3/ResponseBody; +HSPLokhttp3/ResponseBody;->()V +HSPLokhttp3/ResponseBody;->()V +Lokhttp3/ResponseBody$Companion; +HSPLokhttp3/ResponseBody$Companion;->()V +HSPLokhttp3/ResponseBody$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokhttp3/ResponseBody$Companion;->create$default(Lokhttp3/ResponseBody$Companion;[BLokhttp3/MediaType;ILjava/lang/Object;)Lokhttp3/ResponseBody; +HSPLokhttp3/ResponseBody$Companion;->create(Lokio/BufferedSource;Lokhttp3/MediaType;J)Lokhttp3/ResponseBody; +HSPLokhttp3/ResponseBody$Companion;->create([BLokhttp3/MediaType;)Lokhttp3/ResponseBody; +Lokhttp3/ResponseBody$Companion$asResponseBody$1; +HSPLokhttp3/ResponseBody$Companion$asResponseBody$1;->(Lokhttp3/MediaType;JLokio/BufferedSource;)V +Lokhttp3/TlsVersion; +HSPLokhttp3/TlsVersion;->$values()[Lokhttp3/TlsVersion; +HSPLokhttp3/TlsVersion;->()V +HSPLokhttp3/TlsVersion;->(Ljava/lang/String;ILjava/lang/String;)V +HSPLokhttp3/TlsVersion;->javaName()Ljava/lang/String; +Lokhttp3/TlsVersion$Companion; +HSPLokhttp3/TlsVersion$Companion;->()V +HSPLokhttp3/TlsVersion$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lokhttp3/WebSocket$Factory; +Lokhttp3/internal/Util; +HSPLokhttp3/internal/Util;->()V +HSPLokhttp3/internal/Util;->asFactory(Lokhttp3/EventListener;)Lokhttp3/EventListener$Factory; +HSPLokhttp3/internal/Util;->checkOffsetAndCount(JJJ)V +HSPLokhttp3/internal/Util;->immutableListOf([Ljava/lang/Object;)Ljava/util/List; +HSPLokhttp3/internal/Util;->threadFactory(Ljava/lang/String;Z)Ljava/util/concurrent/ThreadFactory; +HSPLokhttp3/internal/Util;->toImmutableList(Ljava/util/List;)Ljava/util/List; +Lokhttp3/internal/Util$$ExternalSyntheticLambda0; +HSPLokhttp3/internal/Util$$ExternalSyntheticLambda0;->(Ljava/lang/String;Z)V +Lokhttp3/internal/Util$$ExternalSyntheticLambda1; +HSPLokhttp3/internal/Util$$ExternalSyntheticLambda1;->(Lokhttp3/EventListener;)V +Lokhttp3/internal/authenticator/JavaNetAuthenticator; +HSPLokhttp3/internal/authenticator/JavaNetAuthenticator;->(Lokhttp3/Dns;)V +HSPLokhttp3/internal/authenticator/JavaNetAuthenticator;->(Lokhttp3/Dns;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +Lokhttp3/internal/concurrent/Task; +HSPLokhttp3/internal/concurrent/Task;->(Ljava/lang/String;Z)V +HSPLokhttp3/internal/concurrent/Task;->(Ljava/lang/String;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V +Lokhttp3/internal/concurrent/TaskQueue; +HSPLokhttp3/internal/concurrent/TaskQueue;->(Lokhttp3/internal/concurrent/TaskRunner;Ljava/lang/String;)V +Lokhttp3/internal/concurrent/TaskRunner; +HSPLokhttp3/internal/concurrent/TaskRunner;->()V +HSPLokhttp3/internal/concurrent/TaskRunner;->(Lokhttp3/internal/concurrent/TaskRunner$Backend;)V +HSPLokhttp3/internal/concurrent/TaskRunner;->newQueue()Lokhttp3/internal/concurrent/TaskQueue; +Lokhttp3/internal/concurrent/TaskRunner$Backend; +Lokhttp3/internal/concurrent/TaskRunner$Companion; +HSPLokhttp3/internal/concurrent/TaskRunner$Companion;->()V +HSPLokhttp3/internal/concurrent/TaskRunner$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lokhttp3/internal/concurrent/TaskRunner$RealBackend; +HSPLokhttp3/internal/concurrent/TaskRunner$RealBackend;->(Ljava/util/concurrent/ThreadFactory;)V +Lokhttp3/internal/concurrent/TaskRunner$runnable$1; +HSPLokhttp3/internal/concurrent/TaskRunner$runnable$1;->(Lokhttp3/internal/concurrent/TaskRunner;)V +Lokhttp3/internal/connection/RealConnectionPool; +HSPLokhttp3/internal/connection/RealConnectionPool;->()V +HSPLokhttp3/internal/connection/RealConnectionPool;->(Lokhttp3/internal/concurrent/TaskRunner;IJLjava/util/concurrent/TimeUnit;)V +Lokhttp3/internal/connection/RealConnectionPool$Companion; +HSPLokhttp3/internal/connection/RealConnectionPool$Companion;->()V +HSPLokhttp3/internal/connection/RealConnectionPool$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lokhttp3/internal/connection/RealConnectionPool$cleanupTask$1; +HSPLokhttp3/internal/connection/RealConnectionPool$cleanupTask$1;->(Lokhttp3/internal/connection/RealConnectionPool;Ljava/lang/String;)V +Lokhttp3/internal/connection/RouteDatabase; +HSPLokhttp3/internal/connection/RouteDatabase;->()V +Lokhttp3/internal/http2/Http2; +Lokhttp3/internal/platform/Android10Platform; +HSPLokhttp3/internal/platform/Android10Platform;->()V +HSPLokhttp3/internal/platform/Android10Platform;->()V +HSPLokhttp3/internal/platform/Android10Platform;->access$isSupported$cp()Z +HSPLokhttp3/internal/platform/Android10Platform;->buildCertificateChainCleaner(Ljavax/net/ssl/X509TrustManager;)Lokhttp3/internal/tls/CertificateChainCleaner; +Lokhttp3/internal/platform/Android10Platform$Companion; +HSPLokhttp3/internal/platform/Android10Platform$Companion;->()V +HSPLokhttp3/internal/platform/Android10Platform$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokhttp3/internal/platform/Android10Platform$Companion;->buildIfSupported()Lokhttp3/internal/platform/Platform; +HSPLokhttp3/internal/platform/Android10Platform$Companion;->isSupported()Z +Lokhttp3/internal/platform/Platform; +HSPLokhttp3/internal/platform/Platform;->()V +HSPLokhttp3/internal/platform/Platform;->()V +HSPLokhttp3/internal/platform/Platform;->access$getPlatform$cp()Lokhttp3/internal/platform/Platform; +HSPLokhttp3/internal/platform/Platform;->newSSLContext()Ljavax/net/ssl/SSLContext; +HSPLokhttp3/internal/platform/Platform;->newSslSocketFactory(Ljavax/net/ssl/X509TrustManager;)Ljavax/net/ssl/SSLSocketFactory; +HSPLokhttp3/internal/platform/Platform;->platformTrustManager()Ljavax/net/ssl/X509TrustManager; +Lokhttp3/internal/platform/Platform$Companion; +HSPLokhttp3/internal/platform/Platform$Companion;->()V +HSPLokhttp3/internal/platform/Platform$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokhttp3/internal/platform/Platform$Companion;->access$findPlatform(Lokhttp3/internal/platform/Platform$Companion;)Lokhttp3/internal/platform/Platform; +HSPLokhttp3/internal/platform/Platform$Companion;->findAndroidPlatform()Lokhttp3/internal/platform/Platform; +HSPLokhttp3/internal/platform/Platform$Companion;->findPlatform()Lokhttp3/internal/platform/Platform; +HSPLokhttp3/internal/platform/Platform$Companion;->get()Lokhttp3/internal/platform/Platform; +HSPLokhttp3/internal/platform/Platform$Companion;->isAndroid()Z +Lokhttp3/internal/platform/android/Android10SocketAdapter; +HSPLokhttp3/internal/platform/android/Android10SocketAdapter;->()V +HSPLokhttp3/internal/platform/android/Android10SocketAdapter;->()V +HSPLokhttp3/internal/platform/android/Android10SocketAdapter;->isSupported()Z +Lokhttp3/internal/platform/android/Android10SocketAdapter$Companion; +HSPLokhttp3/internal/platform/android/Android10SocketAdapter$Companion;->()V +HSPLokhttp3/internal/platform/android/Android10SocketAdapter$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokhttp3/internal/platform/android/Android10SocketAdapter$Companion;->buildIfSupported()Lokhttp3/internal/platform/android/SocketAdapter; +HSPLokhttp3/internal/platform/android/Android10SocketAdapter$Companion;->isSupported()Z +Lokhttp3/internal/platform/android/AndroidCertificateChainCleaner; +HSPLokhttp3/internal/platform/android/AndroidCertificateChainCleaner;->()V +HSPLokhttp3/internal/platform/android/AndroidCertificateChainCleaner;->(Ljavax/net/ssl/X509TrustManager;Landroid/net/http/X509TrustManagerExtensions;)V +Lokhttp3/internal/platform/android/AndroidCertificateChainCleaner$Companion; +HSPLokhttp3/internal/platform/android/AndroidCertificateChainCleaner$Companion;->()V +HSPLokhttp3/internal/platform/android/AndroidCertificateChainCleaner$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokhttp3/internal/platform/android/AndroidCertificateChainCleaner$Companion;->buildIfSupported(Ljavax/net/ssl/X509TrustManager;)Lokhttp3/internal/platform/android/AndroidCertificateChainCleaner; +Lokhttp3/internal/platform/android/AndroidLog; +HSPLokhttp3/internal/platform/android/AndroidLog;->()V +HSPLokhttp3/internal/platform/android/AndroidLog;->()V +HSPLokhttp3/internal/platform/android/AndroidLog;->enable()V +HSPLokhttp3/internal/platform/android/AndroidLog;->enableLogging(Ljava/lang/String;Ljava/lang/String;)V +Lokhttp3/internal/platform/android/AndroidLogHandler; +HSPLokhttp3/internal/platform/android/AndroidLogHandler;->()V +HSPLokhttp3/internal/platform/android/AndroidLogHandler;->()V +Lokhttp3/internal/platform/android/AndroidSocketAdapter; +HSPLokhttp3/internal/platform/android/AndroidSocketAdapter;->()V +HSPLokhttp3/internal/platform/android/AndroidSocketAdapter;->access$getPlayProviderFactory$cp()Lokhttp3/internal/platform/android/DeferredSocketAdapter$Factory; +Lokhttp3/internal/platform/android/AndroidSocketAdapter$Companion; +HSPLokhttp3/internal/platform/android/AndroidSocketAdapter$Companion;->()V +HSPLokhttp3/internal/platform/android/AndroidSocketAdapter$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokhttp3/internal/platform/android/AndroidSocketAdapter$Companion;->factory(Ljava/lang/String;)Lokhttp3/internal/platform/android/DeferredSocketAdapter$Factory; +HSPLokhttp3/internal/platform/android/AndroidSocketAdapter$Companion;->getPlayProviderFactory()Lokhttp3/internal/platform/android/DeferredSocketAdapter$Factory; +Lokhttp3/internal/platform/android/AndroidSocketAdapter$Companion$factory$1; +HSPLokhttp3/internal/platform/android/AndroidSocketAdapter$Companion$factory$1;->(Ljava/lang/String;)V +Lokhttp3/internal/platform/android/BouncyCastleSocketAdapter; +HSPLokhttp3/internal/platform/android/BouncyCastleSocketAdapter;->()V +HSPLokhttp3/internal/platform/android/BouncyCastleSocketAdapter;->access$getFactory$cp()Lokhttp3/internal/platform/android/DeferredSocketAdapter$Factory; +Lokhttp3/internal/platform/android/BouncyCastleSocketAdapter$Companion; +HSPLokhttp3/internal/platform/android/BouncyCastleSocketAdapter$Companion;->()V +HSPLokhttp3/internal/platform/android/BouncyCastleSocketAdapter$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokhttp3/internal/platform/android/BouncyCastleSocketAdapter$Companion;->getFactory()Lokhttp3/internal/platform/android/DeferredSocketAdapter$Factory; +Lokhttp3/internal/platform/android/BouncyCastleSocketAdapter$Companion$factory$1; +HSPLokhttp3/internal/platform/android/BouncyCastleSocketAdapter$Companion$factory$1;->()V +Lokhttp3/internal/platform/android/ConscryptSocketAdapter; +HSPLokhttp3/internal/platform/android/ConscryptSocketAdapter;->()V +HSPLokhttp3/internal/platform/android/ConscryptSocketAdapter;->access$getFactory$cp()Lokhttp3/internal/platform/android/DeferredSocketAdapter$Factory; +Lokhttp3/internal/platform/android/ConscryptSocketAdapter$Companion; +HSPLokhttp3/internal/platform/android/ConscryptSocketAdapter$Companion;->()V +HSPLokhttp3/internal/platform/android/ConscryptSocketAdapter$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokhttp3/internal/platform/android/ConscryptSocketAdapter$Companion;->getFactory()Lokhttp3/internal/platform/android/DeferredSocketAdapter$Factory; +Lokhttp3/internal/platform/android/ConscryptSocketAdapter$Companion$factory$1; +HSPLokhttp3/internal/platform/android/ConscryptSocketAdapter$Companion$factory$1;->()V +Lokhttp3/internal/platform/android/DeferredSocketAdapter; +HSPLokhttp3/internal/platform/android/DeferredSocketAdapter;->(Lokhttp3/internal/platform/android/DeferredSocketAdapter$Factory;)V +HSPLokhttp3/internal/platform/android/DeferredSocketAdapter;->isSupported()Z +Lokhttp3/internal/platform/android/DeferredSocketAdapter$Factory; +Lokhttp3/internal/platform/android/SocketAdapter; +Lokhttp3/internal/tls/CertificateChainCleaner; +HSPLokhttp3/internal/tls/CertificateChainCleaner;->()V +HSPLokhttp3/internal/tls/CertificateChainCleaner;->()V +Lokhttp3/internal/tls/CertificateChainCleaner$Companion; +HSPLokhttp3/internal/tls/CertificateChainCleaner$Companion;->()V +HSPLokhttp3/internal/tls/CertificateChainCleaner$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokhttp3/internal/tls/CertificateChainCleaner$Companion;->get(Ljavax/net/ssl/X509TrustManager;)Lokhttp3/internal/tls/CertificateChainCleaner; +Lokhttp3/internal/tls/OkHostnameVerifier; +HSPLokhttp3/internal/tls/OkHostnameVerifier;->()V +HSPLokhttp3/internal/tls/OkHostnameVerifier;->()V +Lokhttp3/logging/HttpLoggingInterceptor; +HSPLokhttp3/logging/HttpLoggingInterceptor;->(Lokhttp3/logging/HttpLoggingInterceptor$Logger;)V +HSPLokhttp3/logging/HttpLoggingInterceptor;->level(Lokhttp3/logging/HttpLoggingInterceptor$Level;)V +Lokhttp3/logging/HttpLoggingInterceptor$Level; +HSPLokhttp3/logging/HttpLoggingInterceptor$Level;->$values()[Lokhttp3/logging/HttpLoggingInterceptor$Level; +HSPLokhttp3/logging/HttpLoggingInterceptor$Level;->()V +HSPLokhttp3/logging/HttpLoggingInterceptor$Level;->(Ljava/lang/String;I)V +Lokhttp3/logging/HttpLoggingInterceptor$Logger; +Lokio/-SegmentedByteString; +HSPLokio/-SegmentedByteString;->()V +HSPLokio/-SegmentedByteString;->arrayRangeEquals([BI[BII)Z +HSPLokio/-SegmentedByteString;->checkOffsetAndCount(JJJ)V +Lokio/Buffer; +HSPLokio/Buffer;->()V +HSPLokio/Buffer;->exhausted()Z +HSPLokio/Buffer;->read(Lokio/Buffer;J)J +HSPLokio/Buffer;->readInt()I +HSPLokio/Buffer;->setSize$okio(J)V +HSPLokio/Buffer;->size()J +HSPLokio/Buffer;->writableSegment$okio(I)Lokio/Segment; +HSPLokio/Buffer;->write(Lokio/Buffer;J)V +HSPLokio/Buffer;->write([B)Lokio/Buffer; +HSPLokio/Buffer;->write([BII)Lokio/Buffer; +HSPLokio/Buffer;->writeAll(Lokio/Source;)J +HSPLokio/Buffer;->writeInt(I)Lokio/Buffer; +Lokio/Buffer$UnsafeCursor; +HSPLokio/Buffer$UnsafeCursor;->()V +Lokio/BufferedSink; +Lokio/BufferedSource; +Lokio/ByteString; +HSPLokio/ByteString;->()V +HSPLokio/ByteString;->([B)V +HSPLokio/ByteString;->compareTo(Ljava/lang/Object;)I +HSPLokio/ByteString;->compareTo(Lokio/ByteString;)I +HSPLokio/ByteString;->getByte(I)B +HSPLokio/ByteString;->getData$okio()[B +HSPLokio/ByteString;->getSize$okio()I +HSPLokio/ByteString;->internalGet$okio(I)B +HSPLokio/ByteString;->rangeEquals(ILokio/ByteString;II)Z +HSPLokio/ByteString;->rangeEquals(I[BII)Z +HSPLokio/ByteString;->size()I +HSPLokio/ByteString;->startsWith(Lokio/ByteString;)Z +Lokio/ByteString$Companion; +HSPLokio/ByteString$Companion;->()V +HSPLokio/ByteString$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokio/ByteString$Companion;->decodeHex(Ljava/lang/String;)Lokio/ByteString; +Lokio/Options; +HSPLokio/Options;->()V +HSPLokio/Options;->([Lokio/ByteString;[I)V +HSPLokio/Options;->([Lokio/ByteString;[ILkotlin/jvm/internal/DefaultConstructorMarker;)V +Lokio/Options$Companion; +HSPLokio/Options$Companion;->()V +HSPLokio/Options$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokio/Options$Companion;->buildTrieRecursive$default(Lokio/Options$Companion;JLokio/Buffer;ILjava/util/List;IILjava/util/List;ILjava/lang/Object;)V +HSPLokio/Options$Companion;->buildTrieRecursive(JLokio/Buffer;ILjava/util/List;IILjava/util/List;)V +HSPLokio/Options$Companion;->getIntCount(Lokio/Buffer;)J +HSPLokio/Options$Companion;->of([Lokio/ByteString;)Lokio/Options; +Lokio/Segment; +HSPLokio/Segment;->()V +HSPLokio/Segment;->()V +HSPLokio/Segment;->([BIIZZ)V +HSPLokio/Segment;->compact()V +HSPLokio/Segment;->pop()Lokio/Segment; +HSPLokio/Segment;->push(Lokio/Segment;)Lokio/Segment; +HSPLokio/Segment;->writeTo(Lokio/Segment;I)V +Lokio/Segment$Companion; +HSPLokio/Segment$Companion;->()V +HSPLokio/Segment$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lokio/SegmentPool; +HSPLokio/SegmentPool;->()V +HSPLokio/SegmentPool;->()V +HSPLokio/SegmentPool;->firstRef()Ljava/util/concurrent/atomic/AtomicReference; +HSPLokio/SegmentPool;->recycle(Lokio/Segment;)V +HSPLokio/SegmentPool;->take()Lokio/Segment; +Lokio/Sink; +Lokio/Source; +Lokio/internal/-ByteString; +HSPLokio/internal/-ByteString;->()V +HSPLokio/internal/-ByteString;->access$decodeHexDigit(C)I +HSPLokio/internal/-ByteString;->decodeHexDigit(C)I +Lorg/apache/commons/codec/BinaryDecoder; +Lorg/apache/commons/codec/BinaryEncoder; +Lorg/apache/commons/codec/CodecPolicy; +HSPLorg/apache/commons/codec/CodecPolicy;->()V +HSPLorg/apache/commons/codec/CodecPolicy;->(Ljava/lang/String;I)V +Lorg/apache/commons/codec/Decoder; +Lorg/apache/commons/codec/Encoder; +Lorg/apache/commons/codec/binary/Base32; +HSPLorg/apache/commons/codec/binary/Base32;->()V +HSPLorg/apache/commons/codec/binary/Base32;->()V +HSPLorg/apache/commons/codec/binary/Base32;->(I[BZB)V +HSPLorg/apache/commons/codec/binary/Base32;->(I[BZBLorg/apache/commons/codec/CodecPolicy;)V +HSPLorg/apache/commons/codec/binary/Base32;->(Z)V +HSPLorg/apache/commons/codec/binary/Base32;->isInAlphabet(B)Z +Lorg/apache/commons/codec/binary/Base64; +HSPLorg/apache/commons/codec/binary/Base64;->()V +HSPLorg/apache/commons/codec/binary/Base64;->()V +HSPLorg/apache/commons/codec/binary/Base64;->(I)V +HSPLorg/apache/commons/codec/binary/Base64;->(I[B)V +HSPLorg/apache/commons/codec/binary/Base64;->(I[BZ)V +HSPLorg/apache/commons/codec/binary/Base64;->(I[BZLorg/apache/commons/codec/CodecPolicy;)V +HSPLorg/apache/commons/codec/binary/Base64;->decode([BIILorg/apache/commons/codec/binary/BaseNCodec$Context;)V +HSPLorg/apache/commons/codec/binary/Base64;->encode([BIILorg/apache/commons/codec/binary/BaseNCodec$Context;)V +HSPLorg/apache/commons/codec/binary/Base64;->isInAlphabet(B)Z +HSPLorg/apache/commons/codec/binary/Base64;->validateCharacter(ILorg/apache/commons/codec/binary/BaseNCodec$Context;)V +Lorg/apache/commons/codec/binary/BaseNCodec; +HSPLorg/apache/commons/codec/binary/BaseNCodec;->()V +HSPLorg/apache/commons/codec/binary/BaseNCodec;->(IIIIBLorg/apache/commons/codec/CodecPolicy;)V +HSPLorg/apache/commons/codec/binary/BaseNCodec;->available(Lorg/apache/commons/codec/binary/BaseNCodec$Context;)I +HSPLorg/apache/commons/codec/binary/BaseNCodec;->containsAlphabetOrPad([B)Z +HSPLorg/apache/commons/codec/binary/BaseNCodec;->decode([B)[B +HSPLorg/apache/commons/codec/binary/BaseNCodec;->encode([B)[B +HSPLorg/apache/commons/codec/binary/BaseNCodec;->encode([BII)[B +HSPLorg/apache/commons/codec/binary/BaseNCodec;->ensureBufferSize(ILorg/apache/commons/codec/binary/BaseNCodec$Context;)[B +HSPLorg/apache/commons/codec/binary/BaseNCodec;->getDefaultBufferSize()I +HSPLorg/apache/commons/codec/binary/BaseNCodec;->hasData(Lorg/apache/commons/codec/binary/BaseNCodec$Context;)Z +HSPLorg/apache/commons/codec/binary/BaseNCodec;->isStrictDecoding()Z +HSPLorg/apache/commons/codec/binary/BaseNCodec;->readResults([BIILorg/apache/commons/codec/binary/BaseNCodec$Context;)I +Lorg/apache/commons/codec/binary/BaseNCodec$Context; +PLorg/apache/commons/codec/binary/BaseNCodec$Context;->()V +Lorg/apache/commons/codec/binary/BinaryCodec; +HSPLorg/apache/commons/codec/binary/BinaryCodec;->()V +HSPLorg/apache/commons/codec/binary/BinaryCodec;->isEmpty([B)Z +Lorg/bouncycastle/asn1/ASN1Encodable; +Lorg/bouncycastle/asn1/ASN1Object; +HSPLorg/bouncycastle/asn1/ASN1Object;->()V +Lorg/bouncycastle/asn1/ASN1ObjectIdentifier; +HSPLorg/bouncycastle/asn1/ASN1ObjectIdentifier;->()V +HSPLorg/bouncycastle/asn1/ASN1ObjectIdentifier;->(Ljava/lang/String;)V +HSPLorg/bouncycastle/asn1/ASN1ObjectIdentifier;->(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Ljava/lang/String;)V +HSPLorg/bouncycastle/asn1/ASN1ObjectIdentifier;->branch(Ljava/lang/String;)Lorg/bouncycastle/asn1/ASN1ObjectIdentifier; +HSPLorg/bouncycastle/asn1/ASN1ObjectIdentifier;->doOutput(Ljava/io/ByteArrayOutputStream;)V +HSPLorg/bouncycastle/asn1/ASN1ObjectIdentifier;->getContents()[B +HSPLorg/bouncycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String; +HSPLorg/bouncycastle/asn1/ASN1ObjectIdentifier;->hashCode()I +HSPLorg/bouncycastle/asn1/ASN1ObjectIdentifier;->intern()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier; +HSPLorg/bouncycastle/asn1/ASN1ObjectIdentifier;->isValidIdentifier(Ljava/lang/String;)Z +HSPLorg/bouncycastle/asn1/ASN1ObjectIdentifier;->toString()Ljava/lang/String; +Lorg/bouncycastle/asn1/ASN1ObjectIdentifier$1; +HSPLorg/bouncycastle/asn1/ASN1ObjectIdentifier$1;->(Ljava/lang/Class;I)V +Lorg/bouncycastle/asn1/ASN1ObjectIdentifier$OidHandle; +HSPLorg/bouncycastle/asn1/ASN1ObjectIdentifier$OidHandle;->([B)V +HSPLorg/bouncycastle/asn1/ASN1ObjectIdentifier$OidHandle;->hashCode()I +Lorg/bouncycastle/asn1/ASN1Primitive; +HSPLorg/bouncycastle/asn1/ASN1Primitive;->()V +Lorg/bouncycastle/asn1/ASN1RelativeOID; +HSPLorg/bouncycastle/asn1/ASN1RelativeOID;->()V +HSPLorg/bouncycastle/asn1/ASN1RelativeOID;->isValidIdentifier(Ljava/lang/String;I)Z +HSPLorg/bouncycastle/asn1/ASN1RelativeOID;->writeField(Ljava/io/ByteArrayOutputStream;J)V +Lorg/bouncycastle/asn1/ASN1RelativeOID$1; +HSPLorg/bouncycastle/asn1/ASN1RelativeOID$1;->(Ljava/lang/Class;I)V +Lorg/bouncycastle/asn1/ASN1Tag; +HSPLorg/bouncycastle/asn1/ASN1Tag;->(II)V +HSPLorg/bouncycastle/asn1/ASN1Tag;->create(II)Lorg/bouncycastle/asn1/ASN1Tag; +Lorg/bouncycastle/asn1/ASN1Type; +HSPLorg/bouncycastle/asn1/ASN1Type;->(Ljava/lang/Class;)V +Lorg/bouncycastle/asn1/ASN1UniversalType; +HSPLorg/bouncycastle/asn1/ASN1UniversalType;->(Ljava/lang/Class;I)V +Lorg/bouncycastle/asn1/OIDTokenizer; +HSPLorg/bouncycastle/asn1/OIDTokenizer;->(Ljava/lang/String;)V +HSPLorg/bouncycastle/asn1/OIDTokenizer;->hasMoreTokens()Z +HSPLorg/bouncycastle/asn1/OIDTokenizer;->nextToken()Ljava/lang/String; +Lorg/bouncycastle/asn1/bc/BCObjectIdentifiers; +HSPLorg/bouncycastle/asn1/bc/BCObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/cryptopro/CryptoProObjectIdentifiers; +HSPLorg/bouncycastle/asn1/cryptopro/CryptoProObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/edec/EdECObjectIdentifiers; +HSPLorg/bouncycastle/asn1/edec/EdECObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/gm/GMObjectIdentifiers; +HSPLorg/bouncycastle/asn1/gm/GMObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/gnu/GNUObjectIdentifiers; +HSPLorg/bouncycastle/asn1/gnu/GNUObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/iana/IANAObjectIdentifiers; +HSPLorg/bouncycastle/asn1/iana/IANAObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/isara/IsaraObjectIdentifiers; +HSPLorg/bouncycastle/asn1/isara/IsaraObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/iso/ISOIECObjectIdentifiers; +HSPLorg/bouncycastle/asn1/iso/ISOIECObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/kisa/KISAObjectIdentifiers; +HSPLorg/bouncycastle/asn1/kisa/KISAObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/misc/MiscObjectIdentifiers; +HSPLorg/bouncycastle/asn1/misc/MiscObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/nist/NISTObjectIdentifiers; +HSPLorg/bouncycastle/asn1/nist/NISTObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/nsri/NSRIObjectIdentifiers; +HSPLorg/bouncycastle/asn1/nsri/NSRIObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/ntt/NTTObjectIdentifiers; +HSPLorg/bouncycastle/asn1/ntt/NTTObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/oiw/OIWObjectIdentifiers; +HSPLorg/bouncycastle/asn1/oiw/OIWObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers; +HSPLorg/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/rosstandart/RosstandartObjectIdentifiers; +HSPLorg/bouncycastle/asn1/rosstandart/RosstandartObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/sec/SECObjectIdentifiers; +HSPLorg/bouncycastle/asn1/sec/SECObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/teletrust/TeleTrusTObjectIdentifiers; +HSPLorg/bouncycastle/asn1/teletrust/TeleTrusTObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/ua/UAObjectIdentifiers; +HSPLorg/bouncycastle/asn1/ua/UAObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/x509/X509ObjectIdentifiers; +HSPLorg/bouncycastle/asn1/x509/X509ObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/x9/X9ECParameters; +Lorg/bouncycastle/asn1/x9/X9ObjectIdentifiers; +HSPLorg/bouncycastle/asn1/x9/X9ObjectIdentifiers;->()V +Lorg/bouncycastle/crypto/CipherParameters; +Lorg/bouncycastle/crypto/CryptoServiceConstraintsException; +Lorg/bouncycastle/crypto/CryptoServiceProperties; +Lorg/bouncycastle/crypto/CryptoServicePurpose; +HSPLorg/bouncycastle/crypto/CryptoServicePurpose;->()V +HSPLorg/bouncycastle/crypto/CryptoServicePurpose;->(Ljava/lang/String;I)V +Lorg/bouncycastle/crypto/CryptoServicesConstraints; +Lorg/bouncycastle/crypto/CryptoServicesPermission; +HSPLorg/bouncycastle/crypto/CryptoServicesPermission;->(Ljava/lang/String;)V +Lorg/bouncycastle/crypto/CryptoServicesRegistrar; +HSPLorg/bouncycastle/crypto/CryptoServicesRegistrar;->()V +HSPLorg/bouncycastle/crypto/CryptoServicesRegistrar;->checkConstraints(Lorg/bouncycastle/crypto/CryptoServiceProperties;)V +HSPLorg/bouncycastle/crypto/CryptoServicesRegistrar;->chooseLowerBound(I)I +HSPLorg/bouncycastle/crypto/CryptoServicesRegistrar;->getDefaultConstraints()Lorg/bouncycastle/crypto/CryptoServicesConstraints; +HSPLorg/bouncycastle/crypto/CryptoServicesRegistrar;->localSetGlobalProperty(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;[Ljava/lang/Object;)V +HSPLorg/bouncycastle/crypto/CryptoServicesRegistrar;->localSetThread(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;[Ljava/lang/Object;)V +HSPLorg/bouncycastle/crypto/CryptoServicesRegistrar;->toDH(Lorg/bouncycastle/crypto/params/DSAParameters;)Lorg/bouncycastle/crypto/params/DHParameters; +Lorg/bouncycastle/crypto/CryptoServicesRegistrar$1; +HSPLorg/bouncycastle/crypto/CryptoServicesRegistrar$1;->()V +HSPLorg/bouncycastle/crypto/CryptoServicesRegistrar$1;->check(Lorg/bouncycastle/crypto/CryptoServiceProperties;)V +Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property; +HSPLorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;->()V +HSPLorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;->(Ljava/lang/String;Ljava/lang/Class;)V +HSPLorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;->access$100(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)Ljava/lang/String; +HSPLorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;->access$200(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)Ljava/lang/Class; +Lorg/bouncycastle/crypto/CryptoServicesRegistrar$ThreadLocalSecureRandomProvider; +HSPLorg/bouncycastle/crypto/CryptoServicesRegistrar$ThreadLocalSecureRandomProvider;->()V +HSPLorg/bouncycastle/crypto/CryptoServicesRegistrar$ThreadLocalSecureRandomProvider;->(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$1;)V +Lorg/bouncycastle/crypto/DerivationFunction; +Lorg/bouncycastle/crypto/DerivationParameters; +Lorg/bouncycastle/crypto/Digest; +Lorg/bouncycastle/crypto/ExtendedDigest; +Lorg/bouncycastle/crypto/Mac; +Lorg/bouncycastle/crypto/PBEParametersGenerator; +HSPLorg/bouncycastle/crypto/PBEParametersGenerator;->()V +HSPLorg/bouncycastle/crypto/PBEParametersGenerator;->init([B[BI)V +Lorg/bouncycastle/crypto/SavableDigest; +Lorg/bouncycastle/crypto/SecureRandomProvider; +Lorg/bouncycastle/crypto/digests/EncodableDigest; +Lorg/bouncycastle/crypto/digests/GeneralDigest; +HSPLorg/bouncycastle/crypto/digests/GeneralDigest;->(Lorg/bouncycastle/crypto/CryptoServicePurpose;)V +HSPLorg/bouncycastle/crypto/digests/GeneralDigest;->(Lorg/bouncycastle/crypto/digests/GeneralDigest;)V +HSPLorg/bouncycastle/crypto/digests/GeneralDigest;->copyIn(Lorg/bouncycastle/crypto/digests/GeneralDigest;)V +HSPLorg/bouncycastle/crypto/digests/GeneralDigest;->getByteLength()I +HPLorg/bouncycastle/crypto/digests/GeneralDigest;->reset()V +Lorg/bouncycastle/crypto/digests/SHA256Digest; +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->()V +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->()V +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->(Lorg/bouncycastle/crypto/CryptoServicePurpose;)V +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->(Lorg/bouncycastle/crypto/digests/SHA256Digest;)V +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->Ch(III)I +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->Maj(III)I +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->Sum0(I)I +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->Sum1(I)I +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->Theta0(I)I +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->Theta1(I)I +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->copy()Lorg/bouncycastle/util/Memoable; +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->copyIn(Lorg/bouncycastle/crypto/digests/SHA256Digest;)V +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->cryptoServiceProperties()Lorg/bouncycastle/crypto/CryptoServiceProperties; +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->getAlgorithmName()Ljava/lang/String; +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->getDigestSize()I +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->processBlock()V +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->processLength(J)V +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->processWord([BI)V +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->reset()V +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->reset(Lorg/bouncycastle/util/Memoable;)V +Lorg/bouncycastle/crypto/digests/Utils; +HSPLorg/bouncycastle/crypto/digests/Utils;->getDefaultProperties(Lorg/bouncycastle/crypto/Digest;ILorg/bouncycastle/crypto/CryptoServicePurpose;)Lorg/bouncycastle/crypto/CryptoServiceProperties; +Lorg/bouncycastle/crypto/digests/Utils$DefaultPropertiesWithPRF; +HSPLorg/bouncycastle/crypto/digests/Utils$DefaultPropertiesWithPRF;->(IILjava/lang/String;Lorg/bouncycastle/crypto/CryptoServicePurpose;)V +Lorg/bouncycastle/crypto/generators/HKDFBytesGenerator; +HSPLorg/bouncycastle/crypto/generators/HKDFBytesGenerator;->(Lorg/bouncycastle/crypto/Digest;)V +HSPLorg/bouncycastle/crypto/generators/HKDFBytesGenerator;->expandNext()V +HSPLorg/bouncycastle/crypto/generators/HKDFBytesGenerator;->generateBytes([BII)I +HSPLorg/bouncycastle/crypto/generators/HKDFBytesGenerator;->init(Lorg/bouncycastle/crypto/DerivationParameters;)V +Lorg/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator; +HSPLorg/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator;->(Lorg/bouncycastle/crypto/Digest;)V +HPLorg/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator;->F([BI[B[BI)V +HSPLorg/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator;->generateDerivedKey(I)[B +HSPLorg/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator;->generateDerivedMacParameters(I)Lorg/bouncycastle/crypto/CipherParameters; +HSPLorg/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator;->generateDerivedParameters(I)Lorg/bouncycastle/crypto/CipherParameters; +Lorg/bouncycastle/crypto/macs/HMac; +HSPLorg/bouncycastle/crypto/macs/HMac;->()V +HSPLorg/bouncycastle/crypto/macs/HMac;->(Lorg/bouncycastle/crypto/Digest;)V +HSPLorg/bouncycastle/crypto/macs/HMac;->(Lorg/bouncycastle/crypto/Digest;I)V +HSPLorg/bouncycastle/crypto/macs/HMac;->getByteLength(Lorg/bouncycastle/crypto/Digest;)I +HSPLorg/bouncycastle/crypto/macs/HMac;->getMacSize()I +HSPLorg/bouncycastle/crypto/macs/HMac;->init(Lorg/bouncycastle/crypto/CipherParameters;)V +HSPLorg/bouncycastle/crypto/macs/HMac;->update(B)V +HSPLorg/bouncycastle/crypto/macs/HMac;->update([BII)V +HSPLorg/bouncycastle/crypto/macs/HMac;->xorPad([BIB)V +Lorg/bouncycastle/crypto/params/DHParameters; +HSPLorg/bouncycastle/crypto/params/DHParameters;->(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;IILjava/math/BigInteger;Lorg/bouncycastle/crypto/params/DHValidationParameters;)V +Lorg/bouncycastle/crypto/params/DHValidationParameters; +HSPLorg/bouncycastle/crypto/params/DHValidationParameters;->([BI)V +Lorg/bouncycastle/crypto/params/DSAParameters; +HSPLorg/bouncycastle/crypto/params/DSAParameters;->(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Lorg/bouncycastle/crypto/params/DSAValidationParameters;)V +HSPLorg/bouncycastle/crypto/params/DSAParameters;->getG()Ljava/math/BigInteger; +HSPLorg/bouncycastle/crypto/params/DSAParameters;->getP()Ljava/math/BigInteger; +HSPLorg/bouncycastle/crypto/params/DSAParameters;->getQ()Ljava/math/BigInteger; +HSPLorg/bouncycastle/crypto/params/DSAParameters;->getValidationParameters()Lorg/bouncycastle/crypto/params/DSAValidationParameters; +Lorg/bouncycastle/crypto/params/DSAValidationParameters; +HSPLorg/bouncycastle/crypto/params/DSAValidationParameters;->([BI)V +HSPLorg/bouncycastle/crypto/params/DSAValidationParameters;->([BII)V +HSPLorg/bouncycastle/crypto/params/DSAValidationParameters;->getCounter()I +HSPLorg/bouncycastle/crypto/params/DSAValidationParameters;->getSeed()[B +Lorg/bouncycastle/crypto/params/HKDFParameters; +HSPLorg/bouncycastle/crypto/params/HKDFParameters;->([BZ[B[B)V +HSPLorg/bouncycastle/crypto/params/HKDFParameters;->getIKM()[B +HSPLorg/bouncycastle/crypto/params/HKDFParameters;->getInfo()[B +HSPLorg/bouncycastle/crypto/params/HKDFParameters;->skipExtract()Z +HSPLorg/bouncycastle/crypto/params/HKDFParameters;->skipExtractParameters([B[B)Lorg/bouncycastle/crypto/params/HKDFParameters; +Lorg/bouncycastle/crypto/params/KeyParameter; +HSPLorg/bouncycastle/crypto/params/KeyParameter;->(I)V +HSPLorg/bouncycastle/crypto/params/KeyParameter;->([B)V +HSPLorg/bouncycastle/crypto/params/KeyParameter;->([BII)V +HSPLorg/bouncycastle/crypto/params/KeyParameter;->getKey()[B +Lorg/bouncycastle/internal/asn1/bsi/BSIObjectIdentifiers; +HSPLorg/bouncycastle/internal/asn1/bsi/BSIObjectIdentifiers;->()V +Lorg/bouncycastle/internal/asn1/cms/CMSObjectIdentifiers; +HSPLorg/bouncycastle/internal/asn1/cms/CMSObjectIdentifiers;->()V +Lorg/bouncycastle/internal/asn1/eac/EACObjectIdentifiers; +HSPLorg/bouncycastle/internal/asn1/eac/EACObjectIdentifiers;->()V +Lorg/bouncycastle/jcajce/provider/asymmetric/COMPOSITE; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/COMPOSITE;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/COMPOSITE;->access$000()Lorg/bouncycastle/jcajce/provider/util/AsymmetricKeyInfoConverter; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/COMPOSITE;->access$002(Lorg/bouncycastle/jcajce/provider/util/AsymmetricKeyInfoConverter;)Lorg/bouncycastle/jcajce/provider/util/AsymmetricKeyInfoConverter; +Lorg/bouncycastle/jcajce/provider/asymmetric/COMPOSITE$CompositeKeyInfoConverter; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/COMPOSITE$CompositeKeyInfoConverter;->(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/COMPOSITE$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/COMPOSITE$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/COMPOSITE$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/DH; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/DH;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/DH;->access$000()Ljava/util/Map; +Lorg/bouncycastle/jcajce/provider/asymmetric/DH$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/DH$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/DH$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/DSA$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/DSA$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/DSA$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/DSTU4145$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/DSTU4145$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/DSTU4145$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/Dilithium$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/Dilithium$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/Dilithium$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/EC; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/EC;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/EC;->access$000()Ljava/util/Map; +Lorg/bouncycastle/jcajce/provider/asymmetric/EC$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/EC$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/EC$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/ECGOST$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/ECGOST$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/ECGOST$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/EXTERNAL; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/EXTERNAL;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/EXTERNAL;->access$000()Lorg/bouncycastle/jcajce/provider/util/AsymmetricKeyInfoConverter; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/EXTERNAL;->access$002(Lorg/bouncycastle/jcajce/provider/util/AsymmetricKeyInfoConverter;)Lorg/bouncycastle/jcajce/provider/util/AsymmetricKeyInfoConverter; +Lorg/bouncycastle/jcajce/provider/asymmetric/EXTERNAL$ExternalKeyInfoConverter; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/EXTERNAL$ExternalKeyInfoConverter;->(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/EXTERNAL$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/EXTERNAL$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/EXTERNAL$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/EdEC$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/EdEC$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/EdEC$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/ElGamal$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/ElGamal$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/ElGamal$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/Falcon$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/Falcon$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/Falcon$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/GM$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/GM$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/GM$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/GOST$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/GOST$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/GOST$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/IES$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/IES$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/IES$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/LMS$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/LMS$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/LMS$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/NTRU$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/NTRU$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/NTRU$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/RSA; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/RSA;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/RSA;->access$000()Ljava/util/Map; +Lorg/bouncycastle/jcajce/provider/asymmetric/RSA$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/RSA$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/RSA$Mappings;->addDigestSignature(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/RSA$Mappings;->addISO9796Signature(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/RSA$Mappings;->addPSSSignature(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/RSA$Mappings;->addPSSSignature(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/RSA$Mappings;->addX931Signature(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/RSA$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/SPHINCSPlus$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/SPHINCSPlus$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/SPHINCSPlus$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/X509$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/X509$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/X509$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/dh/KeyFactorySpi; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/dh/KeyFactorySpi;->()V +Lorg/bouncycastle/jcajce/provider/asymmetric/dsa/DSAUtil; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/dsa/DSAUtil;->()V +Lorg/bouncycastle/jcajce/provider/asymmetric/dsa/KeyFactorySpi; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/dsa/KeyFactorySpi;->()V +Lorg/bouncycastle/jcajce/provider/asymmetric/dstu/KeyFactorySpi; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/dstu/KeyFactorySpi;->()V +Lorg/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi;->(Ljava/lang/String;Lorg/bouncycastle/jcajce/provider/config/ProviderConfiguration;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi$EC; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi$EC;->()V +Lorg/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi$ECMQV; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi$ECMQV;->()V +Lorg/bouncycastle/jcajce/provider/asymmetric/ecgost/KeyFactorySpi; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/ecgost/KeyFactorySpi;->()V +Lorg/bouncycastle/jcajce/provider/asymmetric/ecgost12/KeyFactorySpi; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/ecgost12/KeyFactorySpi;->()V +Lorg/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi;->(Ljava/lang/String;ZI)V +Lorg/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$Ed25519; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$Ed25519;->()V +Lorg/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$Ed448; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$Ed448;->()V +Lorg/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$X25519; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$X25519;->()V +Lorg/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$X448; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$X448;->()V +Lorg/bouncycastle/jcajce/provider/asymmetric/elgamal/KeyFactorySpi; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/elgamal/KeyFactorySpi;->()V +Lorg/bouncycastle/jcajce/provider/asymmetric/gost/KeyFactorySpi; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/gost/KeyFactorySpi;->()V +Lorg/bouncycastle/jcajce/provider/asymmetric/rsa/KeyFactorySpi; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/rsa/KeyFactorySpi;->()V +Lorg/bouncycastle/jcajce/provider/asymmetric/util/BaseKeyFactorySpi; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/util/BaseKeyFactorySpi;->()V +Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider; +Lorg/bouncycastle/jcajce/provider/config/ProviderConfiguration; +Lorg/bouncycastle/jcajce/provider/config/ProviderConfigurationPermission; +HSPLorg/bouncycastle/jcajce/provider/config/ProviderConfigurationPermission;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/bouncycastle/jcajce/provider/config/ProviderConfigurationPermission;->calculateMask(Ljava/lang/String;)I +Lorg/bouncycastle/jcajce/provider/digest/Blake2b; +Lorg/bouncycastle/jcajce/provider/digest/Blake2b$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/Blake2b$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/Blake2b$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/Blake2b$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/Blake2s; +Lorg/bouncycastle/jcajce/provider/digest/Blake2s$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/Blake2s$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/Blake2s$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/Blake2s$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/Blake3; +Lorg/bouncycastle/jcajce/provider/digest/Blake3$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/Blake3$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/Blake3$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/Blake3$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/DSTU7564; +Lorg/bouncycastle/jcajce/provider/digest/DSTU7564$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/DSTU7564$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/DSTU7564$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/DSTU7564$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/DigestAlgorithmProvider; +HSPLorg/bouncycastle/jcajce/provider/digest/DigestAlgorithmProvider;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/DigestAlgorithmProvider;->addHMACAlgorithm(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/bouncycastle/jcajce/provider/digest/DigestAlgorithmProvider;->addHMACAlias(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V +HSPLorg/bouncycastle/jcajce/provider/digest/DigestAlgorithmProvider;->addKMACAlgorithm(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +Lorg/bouncycastle/jcajce/provider/digest/GOST3411; +Lorg/bouncycastle/jcajce/provider/digest/GOST3411$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/GOST3411$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/GOST3411$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/GOST3411$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/Haraka; +Lorg/bouncycastle/jcajce/provider/digest/Haraka$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/Haraka$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/Haraka$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/Haraka$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/Keccak; +Lorg/bouncycastle/jcajce/provider/digest/Keccak$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/Keccak$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/Keccak$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/Keccak$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/MD2; +Lorg/bouncycastle/jcajce/provider/digest/MD2$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/MD2$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/MD2$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/MD2$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/MD4; +Lorg/bouncycastle/jcajce/provider/digest/MD4$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/MD4$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/MD4$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/MD4$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/MD5; +Lorg/bouncycastle/jcajce/provider/digest/MD5$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/MD5$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/MD5$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/MD5$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/RIPEMD128; +Lorg/bouncycastle/jcajce/provider/digest/RIPEMD128$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/RIPEMD128$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/RIPEMD128$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/RIPEMD128$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/RIPEMD160; +Lorg/bouncycastle/jcajce/provider/digest/RIPEMD160$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/RIPEMD160$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/RIPEMD160$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/RIPEMD160$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/RIPEMD256; +Lorg/bouncycastle/jcajce/provider/digest/RIPEMD256$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/RIPEMD256$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/RIPEMD256$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/RIPEMD256$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/RIPEMD320; +Lorg/bouncycastle/jcajce/provider/digest/RIPEMD320$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/RIPEMD320$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/RIPEMD320$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/RIPEMD320$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/SHA1; +Lorg/bouncycastle/jcajce/provider/digest/SHA1$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/SHA1$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/SHA1$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/SHA1$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/SHA224; +Lorg/bouncycastle/jcajce/provider/digest/SHA224$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/SHA224$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/SHA224$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/SHA224$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/SHA256; +Lorg/bouncycastle/jcajce/provider/digest/SHA256$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/SHA256$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/SHA256$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/SHA256$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/SHA3; +Lorg/bouncycastle/jcajce/provider/digest/SHA3$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/SHA3$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/SHA3$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/SHA3$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/SHA384; +Lorg/bouncycastle/jcajce/provider/digest/SHA384$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/SHA384$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/SHA384$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/SHA384$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/SHA512; +Lorg/bouncycastle/jcajce/provider/digest/SHA512$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/SHA512$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/SHA512$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/SHA512$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/SM3; +Lorg/bouncycastle/jcajce/provider/digest/SM3$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/SM3$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/SM3$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/SM3$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/Skein; +Lorg/bouncycastle/jcajce/provider/digest/Skein$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/Skein$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/Skein$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/Skein$Mappings;->addSkeinMacAlgorithm(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;II)V +HSPLorg/bouncycastle/jcajce/provider/digest/Skein$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/Tiger; +Lorg/bouncycastle/jcajce/provider/digest/Tiger$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/Tiger$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/Tiger$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/Tiger$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/Whirlpool; +Lorg/bouncycastle/jcajce/provider/digest/Whirlpool$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/Whirlpool$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/Whirlpool$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/Whirlpool$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/drbg/DRBG; +HSPLorg/bouncycastle/jcajce/provider/drbg/DRBG;->()V +HSPLorg/bouncycastle/jcajce/provider/drbg/DRBG;->access$000()Ljava/lang/String; +Lorg/bouncycastle/jcajce/provider/drbg/DRBG$Mappings; +HSPLorg/bouncycastle/jcajce/provider/drbg/DRBG$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/drbg/DRBG$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/drbg/EntropyDaemon; +HSPLorg/bouncycastle/jcajce/provider/drbg/EntropyDaemon;->()V +HSPLorg/bouncycastle/jcajce/provider/drbg/EntropyDaemon;->()V +Lorg/bouncycastle/jcajce/provider/keystore/BC$Mappings; +HSPLorg/bouncycastle/jcajce/provider/keystore/BC$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/keystore/BC$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/keystore/BCFKS$Mappings; +HSPLorg/bouncycastle/jcajce/provider/keystore/BCFKS$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/keystore/BCFKS$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/keystore/PKCS12$Mappings; +HSPLorg/bouncycastle/jcajce/provider/keystore/PKCS12$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/keystore/PKCS12$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/AES; +HSPLorg/bouncycastle/jcajce/provider/symmetric/AES;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/AES;->access$100()Ljava/util/Map; +Lorg/bouncycastle/jcajce/provider/symmetric/AES$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/AES$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/AES$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/AES$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/ARC4; +Lorg/bouncycastle/jcajce/provider/symmetric/ARC4$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/ARC4$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/ARC4$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/ARC4$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/ARIA; +Lorg/bouncycastle/jcajce/provider/symmetric/ARIA$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/ARIA$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/ARIA$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/ARIA$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/Blowfish; +Lorg/bouncycastle/jcajce/provider/symmetric/Blowfish$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/Blowfish$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Blowfish$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Blowfish$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/CAST5; +Lorg/bouncycastle/jcajce/provider/symmetric/CAST5$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/CAST5$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/CAST5$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/CAST5$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/CAST6; +Lorg/bouncycastle/jcajce/provider/symmetric/CAST6$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/CAST6$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/CAST6$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/CAST6$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/Camellia; +Lorg/bouncycastle/jcajce/provider/symmetric/Camellia$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/Camellia$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Camellia$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Camellia$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/ChaCha; +Lorg/bouncycastle/jcajce/provider/symmetric/ChaCha$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/ChaCha$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/ChaCha$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/ChaCha$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/DES; +Lorg/bouncycastle/jcajce/provider/symmetric/DES$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/DES$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/DES$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/DES$Mappings;->addAlias(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Ljava/lang/String;)V +HSPLorg/bouncycastle/jcajce/provider/symmetric/DES$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/DESede; +Lorg/bouncycastle/jcajce/provider/symmetric/DESede$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/DESede$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/DESede$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/DESede$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/DSTU7624; +Lorg/bouncycastle/jcajce/provider/symmetric/DSTU7624$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/DSTU7624$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/DSTU7624$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/DSTU7624$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/GOST28147; +Lorg/bouncycastle/jcajce/provider/symmetric/GOST28147$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/GOST28147$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/GOST28147$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/GOST28147$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/GOST3412_2015; +Lorg/bouncycastle/jcajce/provider/symmetric/GOST3412_2015$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/GOST3412_2015$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/GOST3412_2015$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/GOST3412_2015$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/Grain128; +Lorg/bouncycastle/jcajce/provider/symmetric/Grain128$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/Grain128$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Grain128$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Grain128$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/Grainv1; +Lorg/bouncycastle/jcajce/provider/symmetric/Grainv1$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/Grainv1$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Grainv1$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Grainv1$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/HC128; +Lorg/bouncycastle/jcajce/provider/symmetric/HC128$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/HC128$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/HC128$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/HC128$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/HC256; +Lorg/bouncycastle/jcajce/provider/symmetric/HC256$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/HC256$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/HC256$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/HC256$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/IDEA; +Lorg/bouncycastle/jcajce/provider/symmetric/IDEA$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/IDEA$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/IDEA$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/IDEA$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/Noekeon; +Lorg/bouncycastle/jcajce/provider/symmetric/Noekeon$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/Noekeon$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Noekeon$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Noekeon$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/OpenSSLPBKDF; +Lorg/bouncycastle/jcajce/provider/symmetric/OpenSSLPBKDF$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/OpenSSLPBKDF$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/OpenSSLPBKDF$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/OpenSSLPBKDF$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/PBEPBKDF1; +Lorg/bouncycastle/jcajce/provider/symmetric/PBEPBKDF1$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/PBEPBKDF1$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/PBEPBKDF1$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/PBEPBKDF1$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2; +Lorg/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/PBEPKCS12; +Lorg/bouncycastle/jcajce/provider/symmetric/PBEPKCS12$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/PBEPKCS12$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/PBEPKCS12$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/PBEPKCS12$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/Poly1305; +Lorg/bouncycastle/jcajce/provider/symmetric/Poly1305$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/Poly1305$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Poly1305$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Poly1305$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/RC2; +Lorg/bouncycastle/jcajce/provider/symmetric/RC2$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/RC2$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/RC2$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/RC2$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/RC5; +Lorg/bouncycastle/jcajce/provider/symmetric/RC5$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/RC5$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/RC5$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/RC5$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/RC6; +Lorg/bouncycastle/jcajce/provider/symmetric/RC6$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/RC6$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/RC6$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/RC6$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/Rijndael; +Lorg/bouncycastle/jcajce/provider/symmetric/Rijndael$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/Rijndael$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Rijndael$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Rijndael$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/SCRYPT; +Lorg/bouncycastle/jcajce/provider/symmetric/SCRYPT$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/SCRYPT$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/SCRYPT$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/SCRYPT$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/SEED; +Lorg/bouncycastle/jcajce/provider/symmetric/SEED$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/SEED$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/SEED$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/SEED$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/SM4; +Lorg/bouncycastle/jcajce/provider/symmetric/SM4$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/SM4$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/SM4$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/SM4$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/Salsa20; +Lorg/bouncycastle/jcajce/provider/symmetric/Salsa20$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/Salsa20$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Salsa20$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Salsa20$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/Serpent; +Lorg/bouncycastle/jcajce/provider/symmetric/Serpent$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/Serpent$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Serpent$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Serpent$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/Shacal2; +Lorg/bouncycastle/jcajce/provider/symmetric/Shacal2$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/Shacal2$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Shacal2$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Shacal2$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/SipHash; +Lorg/bouncycastle/jcajce/provider/symmetric/SipHash$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/SipHash$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/SipHash$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/SipHash$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/SipHash128; +Lorg/bouncycastle/jcajce/provider/symmetric/SipHash128$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/SipHash128$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/SipHash128$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/SipHash128$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/Skipjack; +Lorg/bouncycastle/jcajce/provider/symmetric/Skipjack$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/Skipjack$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Skipjack$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Skipjack$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/SymmetricAlgorithmProvider; +HSPLorg/bouncycastle/jcajce/provider/symmetric/SymmetricAlgorithmProvider;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/SymmetricAlgorithmProvider;->addCMacAlgorithm(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/bouncycastle/jcajce/provider/symmetric/SymmetricAlgorithmProvider;->addGMacAlgorithm(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/bouncycastle/jcajce/provider/symmetric/SymmetricAlgorithmProvider;->addPoly1305Algorithm(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +Lorg/bouncycastle/jcajce/provider/symmetric/TEA; +Lorg/bouncycastle/jcajce/provider/symmetric/TEA$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/TEA$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/TEA$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/TEA$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/TLSKDF; +Lorg/bouncycastle/jcajce/provider/symmetric/TLSKDF$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/TLSKDF$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/TLSKDF$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/TLSKDF$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/Threefish; +Lorg/bouncycastle/jcajce/provider/symmetric/Threefish$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/Threefish$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Threefish$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Threefish$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/Twofish; +Lorg/bouncycastle/jcajce/provider/symmetric/Twofish$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/Twofish$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Twofish$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Twofish$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/VMPC; +Lorg/bouncycastle/jcajce/provider/symmetric/VMPC$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/VMPC$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/VMPC$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/VMPC$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/VMPCKSA3; +Lorg/bouncycastle/jcajce/provider/symmetric/VMPCKSA3$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/VMPCKSA3$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/VMPCKSA3$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/VMPCKSA3$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/XSalsa20; +Lorg/bouncycastle/jcajce/provider/symmetric/XSalsa20$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/XSalsa20$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/XSalsa20$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/XSalsa20$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/XTEA; +Lorg/bouncycastle/jcajce/provider/symmetric/XTEA$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/XTEA$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/XTEA$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/XTEA$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/Zuc; +Lorg/bouncycastle/jcajce/provider/symmetric/Zuc$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/Zuc$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Zuc$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Zuc$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/util/ClassUtil; +HSPLorg/bouncycastle/jcajce/provider/symmetric/util/ClassUtil;->loadClass(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Class; +Lorg/bouncycastle/jcajce/provider/util/AlgorithmProvider; +HSPLorg/bouncycastle/jcajce/provider/util/AlgorithmProvider;->()V +Lorg/bouncycastle/jcajce/provider/util/AsymmetricAlgorithmProvider; +HSPLorg/bouncycastle/jcajce/provider/util/AsymmetricAlgorithmProvider;->()V +HSPLorg/bouncycastle/jcajce/provider/util/AsymmetricAlgorithmProvider;->addKeyFactoryAlgorithm(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Lorg/bouncycastle/jcajce/provider/util/AsymmetricKeyInfoConverter;)V +HSPLorg/bouncycastle/jcajce/provider/util/AsymmetricAlgorithmProvider;->addKeyPairGeneratorAlgorithm(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V +HSPLorg/bouncycastle/jcajce/provider/util/AsymmetricAlgorithmProvider;->addSignatureAlgorithm(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/bouncycastle/jcajce/provider/util/AsymmetricAlgorithmProvider;->addSignatureAlgorithm(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V +HSPLorg/bouncycastle/jcajce/provider/util/AsymmetricAlgorithmProvider;->addSignatureAlgorithm(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Ljava/util/Map;)V +HSPLorg/bouncycastle/jcajce/provider/util/AsymmetricAlgorithmProvider;->addSignatureAlgorithm(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V +HSPLorg/bouncycastle/jcajce/provider/util/AsymmetricAlgorithmProvider;->registerKeyFactoryOid(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Ljava/lang/String;Lorg/bouncycastle/jcajce/provider/util/AsymmetricKeyInfoConverter;)V +HSPLorg/bouncycastle/jcajce/provider/util/AsymmetricAlgorithmProvider;->registerOid(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Ljava/lang/String;Lorg/bouncycastle/jcajce/provider/util/AsymmetricKeyInfoConverter;)V +HSPLorg/bouncycastle/jcajce/provider/util/AsymmetricAlgorithmProvider;->registerOidAlgorithmParameterGenerator(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Ljava/lang/String;)V +HSPLorg/bouncycastle/jcajce/provider/util/AsymmetricAlgorithmProvider;->registerOidAlgorithmParameters(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Ljava/lang/String;)V +Lorg/bouncycastle/jcajce/provider/util/AsymmetricKeyInfoConverter; +Lorg/bouncycastle/jce/provider/BouncyCastleProvider; +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->()V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->()V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->access$000(Lorg/bouncycastle/jce/provider/BouncyCastleProvider;)V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->access$101(Lorg/bouncycastle/jce/provider/BouncyCastleProvider;Ljava/lang/String;Ljava/lang/String;)Ljava/security/Provider$Service; +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->access$200(Lorg/bouncycastle/jce/provider/BouncyCastleProvider;)Ljava/util/Map; +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->access$301(Lorg/bouncycastle/jce/provider/BouncyCastleProvider;Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->access$401(Lorg/bouncycastle/jce/provider/BouncyCastleProvider;Ljava/security/Provider$Service;)V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->addAlgorithm(Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->addAlgorithm(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->addAlgorithm(Ljava/lang/String;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Ljava/lang/String;)V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->addAlgorithm(Ljava/lang/String;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Ljava/lang/String;Ljava/util/Map;)V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->addAttributes(Ljava/lang/String;Ljava/util/Map;)V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->addKeyInfoConverter(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Lorg/bouncycastle/jcajce/provider/util/AsymmetricKeyInfoConverter;)V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->getService(Ljava/lang/String;Ljava/lang/String;)Ljava/security/Provider$Service; +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->hasAlgorithm(Ljava/lang/String;Ljava/lang/String;)Z +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->loadAlgorithms(Ljava/lang/String;[Ljava/lang/String;)V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->loadAlgorithms(Ljava/lang/String;[Lorg/bouncycastle/crypto/CryptoServiceProperties;)V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->loadPQCKeys()V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->loadServiceClass(Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->service(Ljava/lang/String;I)Lorg/bouncycastle/crypto/CryptoServiceProperties; +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->setup()V +Lorg/bouncycastle/jce/provider/BouncyCastleProvider$1; +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider$1;->(Lorg/bouncycastle/jce/provider/BouncyCastleProvider;)V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider$1;->run()Ljava/lang/Object; +Lorg/bouncycastle/jce/provider/BouncyCastleProvider$2; +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider$2;->(Lorg/bouncycastle/jce/provider/BouncyCastleProvider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider$2;->run()Ljava/lang/Object; +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider$2;->run()Ljava/security/Provider$Service; +Lorg/bouncycastle/jce/provider/BouncyCastleProvider$JcaCryptoService; +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider$JcaCryptoService;->(Ljava/lang/String;I)V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider$JcaCryptoService;->getServiceName()Ljava/lang/String; +Lorg/bouncycastle/jce/provider/BouncyCastleProviderConfiguration; +HSPLorg/bouncycastle/jce/provider/BouncyCastleProviderConfiguration;->()V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProviderConfiguration;->()V +Lorg/bouncycastle/pqc/asn1/PQCObjectIdentifiers; +HSPLorg/bouncycastle/pqc/asn1/PQCObjectIdentifiers;->()V +Lorg/bouncycastle/pqc/jcajce/provider/bike/BIKEKeyFactorySpi; +HSPLorg/bouncycastle/pqc/jcajce/provider/bike/BIKEKeyFactorySpi;->()V +Lorg/bouncycastle/pqc/jcajce/provider/cmce/CMCEKeyFactorySpi; +HSPLorg/bouncycastle/pqc/jcajce/provider/cmce/CMCEKeyFactorySpi;->()V +Lorg/bouncycastle/pqc/jcajce/provider/dilithium/DilithiumKeyFactorySpi; +HSPLorg/bouncycastle/pqc/jcajce/provider/dilithium/DilithiumKeyFactorySpi;->()V +HSPLorg/bouncycastle/pqc/jcajce/provider/dilithium/DilithiumKeyFactorySpi;->()V +HSPLorg/bouncycastle/pqc/jcajce/provider/dilithium/DilithiumKeyFactorySpi;->(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V +Lorg/bouncycastle/pqc/jcajce/provider/dilithium/DilithiumKeyFactorySpi$Base2; +HSPLorg/bouncycastle/pqc/jcajce/provider/dilithium/DilithiumKeyFactorySpi$Base2;->()V +Lorg/bouncycastle/pqc/jcajce/provider/dilithium/DilithiumKeyFactorySpi$Base3; +HSPLorg/bouncycastle/pqc/jcajce/provider/dilithium/DilithiumKeyFactorySpi$Base3;->()V +Lorg/bouncycastle/pqc/jcajce/provider/dilithium/DilithiumKeyFactorySpi$Base5; +HSPLorg/bouncycastle/pqc/jcajce/provider/dilithium/DilithiumKeyFactorySpi$Base5;->()V +Lorg/bouncycastle/pqc/jcajce/provider/falcon/FalconKeyFactorySpi; +HSPLorg/bouncycastle/pqc/jcajce/provider/falcon/FalconKeyFactorySpi;->()V +HSPLorg/bouncycastle/pqc/jcajce/provider/falcon/FalconKeyFactorySpi;->()V +HSPLorg/bouncycastle/pqc/jcajce/provider/falcon/FalconKeyFactorySpi;->(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V +Lorg/bouncycastle/pqc/jcajce/provider/falcon/FalconKeyFactorySpi$Falcon1024; +HSPLorg/bouncycastle/pqc/jcajce/provider/falcon/FalconKeyFactorySpi$Falcon1024;->()V +Lorg/bouncycastle/pqc/jcajce/provider/falcon/FalconKeyFactorySpi$Falcon512; +HSPLorg/bouncycastle/pqc/jcajce/provider/falcon/FalconKeyFactorySpi$Falcon512;->()V +Lorg/bouncycastle/pqc/jcajce/provider/hqc/HQCKeyFactorySpi; +HSPLorg/bouncycastle/pqc/jcajce/provider/hqc/HQCKeyFactorySpi;->()V +Lorg/bouncycastle/pqc/jcajce/provider/kyber/KyberKeyFactorySpi; +HSPLorg/bouncycastle/pqc/jcajce/provider/kyber/KyberKeyFactorySpi;->()V +HSPLorg/bouncycastle/pqc/jcajce/provider/kyber/KyberKeyFactorySpi;->()V +Lorg/bouncycastle/pqc/jcajce/provider/lms/LMSKeyFactorySpi; +HSPLorg/bouncycastle/pqc/jcajce/provider/lms/LMSKeyFactorySpi;->()V +Lorg/bouncycastle/pqc/jcajce/provider/newhope/NHKeyFactorySpi; +HSPLorg/bouncycastle/pqc/jcajce/provider/newhope/NHKeyFactorySpi;->()V +Lorg/bouncycastle/pqc/jcajce/provider/ntru/NTRUKeyFactorySpi; +HSPLorg/bouncycastle/pqc/jcajce/provider/ntru/NTRUKeyFactorySpi;->()V +Lorg/bouncycastle/pqc/jcajce/provider/picnic/PicnicKeyFactorySpi; +HSPLorg/bouncycastle/pqc/jcajce/provider/picnic/PicnicKeyFactorySpi;->()V +Lorg/bouncycastle/pqc/jcajce/provider/sphincs/Sphincs256KeyFactorySpi; +HSPLorg/bouncycastle/pqc/jcajce/provider/sphincs/Sphincs256KeyFactorySpi;->()V +Lorg/bouncycastle/pqc/jcajce/provider/sphincsplus/SPHINCSPlusKeyFactorySpi; +HSPLorg/bouncycastle/pqc/jcajce/provider/sphincsplus/SPHINCSPlusKeyFactorySpi;->()V +Lorg/bouncycastle/pqc/jcajce/provider/util/BaseKeyFactorySpi; +HSPLorg/bouncycastle/pqc/jcajce/provider/util/BaseKeyFactorySpi;->(Ljava/util/Set;)V +HSPLorg/bouncycastle/pqc/jcajce/provider/util/BaseKeyFactorySpi;->(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V +Lorg/bouncycastle/pqc/jcajce/provider/xmss/XMSSKeyFactorySpi; +HSPLorg/bouncycastle/pqc/jcajce/provider/xmss/XMSSKeyFactorySpi;->()V +Lorg/bouncycastle/pqc/jcajce/provider/xmss/XMSSMTKeyFactorySpi; +HSPLorg/bouncycastle/pqc/jcajce/provider/xmss/XMSSMTKeyFactorySpi;->()V +Lorg/bouncycastle/util/Arrays; +HSPLorg/bouncycastle/util/Arrays;->clone([B)[B +HSPLorg/bouncycastle/util/Arrays;->hashCode([B)I +Lorg/bouncycastle/util/Encodable; +Lorg/bouncycastle/util/Integers; +HSPLorg/bouncycastle/util/Integers;->valueOf(I)Ljava/lang/Integer; +Lorg/bouncycastle/util/Memoable; +Lorg/bouncycastle/util/Pack; +HPLorg/bouncycastle/util/Pack;->bigEndianToInt([BI)I +HSPLorg/bouncycastle/util/Pack;->intToBigEndian(I[BI)V +Lorg/bouncycastle/util/Properties; +HSPLorg/bouncycastle/util/Properties;->()V +HSPLorg/bouncycastle/util/Properties;->getPropertyValue(Ljava/lang/String;)Ljava/lang/String; +HSPLorg/bouncycastle/util/Properties;->isOverrideSet(Ljava/lang/String;)Z +HSPLorg/bouncycastle/util/Properties;->isSetTrue(Ljava/lang/String;)Z +Lorg/bouncycastle/util/Properties$1; +HSPLorg/bouncycastle/util/Properties$1;->(Ljava/lang/String;)V +HSPLorg/bouncycastle/util/Properties$1;->run()Ljava/lang/Object; +Lorg/bouncycastle/util/Properties$2; +HSPLorg/bouncycastle/util/Properties$2;->(Ljava/lang/String;)V +HSPLorg/bouncycastle/util/Properties$2;->run()Ljava/lang/Object; +Lorg/bouncycastle/util/Strings; +HSPLorg/bouncycastle/util/Strings;->()V +HSPLorg/bouncycastle/util/Strings;->toLowerCase(Ljava/lang/String;)Ljava/lang/String; +HSPLorg/bouncycastle/util/Strings;->toUpperCase(Ljava/lang/String;)Ljava/lang/String; +Lorg/bouncycastle/util/Strings$1; +HSPLorg/bouncycastle/util/Strings$1;->()V +HSPLorg/bouncycastle/util/Strings$1;->run()Ljava/lang/Object; +HSPLorg/bouncycastle/util/Strings$1;->run()Ljava/lang/String; +Lorg/bouncycastle/util/encoders/Encoder; +Lorg/bouncycastle/util/encoders/Hex; +HSPLorg/bouncycastle/util/encoders/Hex;->()V +HSPLorg/bouncycastle/util/encoders/Hex;->decode(Ljava/lang/String;)[B +HSPLorg/bouncycastle/util/encoders/Hex;->decodeStrict(Ljava/lang/String;)[B +Lorg/bouncycastle/util/encoders/HexEncoder; +HSPLorg/bouncycastle/util/encoders/HexEncoder;->()V +HSPLorg/bouncycastle/util/encoders/HexEncoder;->decode(Ljava/lang/String;Ljava/io/OutputStream;)I +HSPLorg/bouncycastle/util/encoders/HexEncoder;->decodeStrict(Ljava/lang/String;II)[B +HSPLorg/bouncycastle/util/encoders/HexEncoder;->ignore(C)Z +HSPLorg/bouncycastle/util/encoders/HexEncoder;->initialiseDecodingTable()V +Lorg/kodein/di/Contexes; +HSPLorg/kodein/di/Contexes;->()V +HSPLorg/kodein/di/Contexes;->()V +HSPLorg/kodein/di/Contexes;->getAnyDIContext()Lorg/kodein/di/DIContext; +Lorg/kodein/di/Copy; +Lorg/kodein/di/Copy$None; +HSPLorg/kodein/di/Copy$None;->()V +HSPLorg/kodein/di/Copy$None;->()V +HSPLorg/kodein/di/Copy$None;->keySet(Lorg/kodein/di/DITree;)Ljava/util/Set; +Lorg/kodein/di/DI; +HSPLorg/kodein/di/DI;->()V +Lorg/kodein/di/DI$BindBuilder; +Lorg/kodein/di/DI$BindBuilder$WithScope; +Lorg/kodein/di/DI$Builder; +Lorg/kodein/di/DI$Builder$DefaultImpls; +HSPLorg/kodein/di/DI$Builder$DefaultImpls;->import$default(Lorg/kodein/di/DI$Builder;Lorg/kodein/di/DI$Module;ZILjava/lang/Object;)V +HSPLorg/kodein/di/DI$Builder$DefaultImpls;->importOnce$default(Lorg/kodein/di/DI$Builder;Lorg/kodein/di/DI$Module;ZILjava/lang/Object;)V +Lorg/kodein/di/DI$Builder$TypeBinder; +Lorg/kodein/di/DI$Companion; +HSPLorg/kodein/di/DI$Companion;->()V +HSPLorg/kodein/di/DI$Companion;->()V +HSPLorg/kodein/di/DI$Companion;->getDefaultFullContainerTreeOnError()Z +HSPLorg/kodein/di/DI$Companion;->getDefaultFullDescriptionOnError()Z +HSPLorg/kodein/di/DI$Companion;->lazy$default(Lorg/kodein/di/DI$Companion;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lorg/kodein/di/LazyDI; +HSPLorg/kodein/di/DI$Companion;->lazy(ZLkotlin/jvm/functions/Function1;)Lorg/kodein/di/LazyDI; +Lorg/kodein/di/DI$Companion$lazy$1; +HSPLorg/kodein/di/DI$Companion$lazy$1;->(ZLkotlin/jvm/functions/Function1;)V +HSPLorg/kodein/di/DI$Companion$lazy$1;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/DI$Companion$lazy$1;->invoke()Lorg/kodein/di/DI; +Lorg/kodein/di/DI$DefaultImpls; +HSPLorg/kodein/di/DI$DefaultImpls;->getDi(Lorg/kodein/di/DI;)Lorg/kodein/di/DI; +HSPLorg/kodein/di/DI$DefaultImpls;->getDiContext(Lorg/kodein/di/DI;)Lorg/kodein/di/DIContext; +HSPLorg/kodein/di/DI$DefaultImpls;->getDiTrigger(Lorg/kodein/di/DI;)Lorg/kodein/di/DITrigger; +Lorg/kodein/di/DI$Key; +HSPLorg/kodein/di/DI$Key;->(Lorg/kodein/type/TypeToken;Lorg/kodein/type/TypeToken;Lorg/kodein/type/TypeToken;Ljava/lang/Object;)V +PLorg/kodein/di/DI$Key;->copy$default(Lorg/kodein/di/DI$Key;Lorg/kodein/type/TypeToken;Lorg/kodein/type/TypeToken;Lorg/kodein/type/TypeToken;Ljava/lang/Object;ILjava/lang/Object;)Lorg/kodein/di/DI$Key; +PLorg/kodein/di/DI$Key;->copy(Lorg/kodein/type/TypeToken;Lorg/kodein/type/TypeToken;Lorg/kodein/type/TypeToken;Ljava/lang/Object;)Lorg/kodein/di/DI$Key; +HSPLorg/kodein/di/DI$Key;->equals(Ljava/lang/Object;)Z +HSPLorg/kodein/di/DI$Key;->getArgType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/DI$Key;->getContextType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/DI$Key;->getTag()Ljava/lang/Object; +HSPLorg/kodein/di/DI$Key;->getType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/DI$Key;->hashCode()I +Lorg/kodein/di/DI$MainBuilder; +Lorg/kodein/di/DI$MainBuilder$DefaultImpls; +HSPLorg/kodein/di/DI$MainBuilder$DefaultImpls;->extend$default(Lorg/kodein/di/DI$MainBuilder;Lorg/kodein/di/DI;ZLorg/kodein/di/Copy;ILjava/lang/Object;)V +Lorg/kodein/di/DI$Module; +HSPLorg/kodein/di/DI$Module;->(Ljava/lang/String;ZLjava/lang/String;Lkotlin/jvm/functions/Function1;)V +HSPLorg/kodein/di/DI$Module;->(Ljava/lang/String;ZLjava/lang/String;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/kodein/di/DI$Module;->(ZLjava/lang/String;Lkotlin/jvm/functions/Function1;)V +HSPLorg/kodein/di/DI$Module;->getAllowSilentOverride()Z +HSPLorg/kodein/di/DI$Module;->getInit()Lkotlin/jvm/functions/Function1; +HSPLorg/kodein/di/DI$Module;->getName()Ljava/lang/String; +HSPLorg/kodein/di/DI$Module;->getPrefix()Ljava/lang/String; +Lorg/kodein/di/DIAware; +Lorg/kodein/di/DIAware$DefaultImpls; +HSPLorg/kodein/di/DIAware$DefaultImpls;->getDiContext(Lorg/kodein/di/DIAware;)Lorg/kodein/di/DIContext; +HSPLorg/kodein/di/DIAware$DefaultImpls;->getDiTrigger(Lorg/kodein/di/DIAware;)Lorg/kodein/di/DITrigger; +Lorg/kodein/di/DIAwareKt; +HSPLorg/kodein/di/DIAwareKt;->Instance(Lorg/kodein/di/DIAware;Lorg/kodein/type/TypeToken;Ljava/lang/Object;)Lorg/kodein/di/LazyDelegate; +HSPLorg/kodein/di/DIAwareKt;->On$default(Lorg/kodein/di/DIAware;Lorg/kodein/di/DIContext;Lorg/kodein/di/DITrigger;ILjava/lang/Object;)Lorg/kodein/di/DI; +HSPLorg/kodein/di/DIAwareKt;->On(Lorg/kodein/di/DIAware;Lorg/kodein/di/DIContext;Lorg/kodein/di/DITrigger;)Lorg/kodein/di/DI; +HSPLorg/kodein/di/DIAwareKt;->getAnyDIContext()Lorg/kodein/di/DIContext; +HSPLorg/kodein/di/DIAwareKt;->getDirect(Lorg/kodein/di/DIAware;)Lorg/kodein/di/DirectDI; +Lorg/kodein/di/DIAwareKt$Instance$1; +HSPLorg/kodein/di/DIAwareKt$Instance$1;->(Lorg/kodein/di/DIAware;Lorg/kodein/type/TypeToken;Ljava/lang/Object;)V +HSPLorg/kodein/di/DIAwareKt$Instance$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/DIAwareKt$Instance$1;->invoke(Lorg/kodein/di/DIContext;Ljava/lang/String;)Ljava/lang/Object; +Lorg/kodein/di/DIContainer; +Lorg/kodein/di/DIContainer$Builder; +Lorg/kodein/di/DIContainer$DefaultImpls; +HSPLorg/kodein/di/DIContainer$DefaultImpls;->allFactories$default(Lorg/kodein/di/DIContainer;Lorg/kodein/di/DI$Key;Ljava/lang/Object;IILjava/lang/Object;)Ljava/util/List; +HSPLorg/kodein/di/DIContainer$DefaultImpls;->allProviders$default(Lorg/kodein/di/DIContainer;Lorg/kodein/di/DI$Key;Ljava/lang/Object;IILjava/lang/Object;)Ljava/util/List; +HSPLorg/kodein/di/DIContainer$DefaultImpls;->allProviders(Lorg/kodein/di/DIContainer;Lorg/kodein/di/DI$Key;Ljava/lang/Object;I)Ljava/util/List; +HSPLorg/kodein/di/DIContainer$DefaultImpls;->factory$default(Lorg/kodein/di/DIContainer;Lorg/kodein/di/DI$Key;Ljava/lang/Object;IILjava/lang/Object;)Lkotlin/jvm/functions/Function1; +HSPLorg/kodein/di/DIContainer$DefaultImpls;->provider$default(Lorg/kodein/di/DIContainer;Lorg/kodein/di/DI$Key;Ljava/lang/Object;IILjava/lang/Object;)Lkotlin/jvm/functions/Function0; +HSPLorg/kodein/di/DIContainer$DefaultImpls;->provider(Lorg/kodein/di/DIContainer;Lorg/kodein/di/DI$Key;Ljava/lang/Object;I)Lkotlin/jvm/functions/Function0; +Lorg/kodein/di/DIContainer$DefaultImpls$allProviders$lambda$3$$inlined$toProvider$1; +HSPLorg/kodein/di/DIContainer$DefaultImpls$allProviders$lambda$3$$inlined$toProvider$1;->(Lkotlin/jvm/functions/Function1;)V +HSPLorg/kodein/di/DIContainer$DefaultImpls$allProviders$lambda$3$$inlined$toProvider$1;->invoke()Ljava/lang/Object; +Lorg/kodein/di/DIContainer$DefaultImpls$provider$$inlined$toProvider$1; +HSPLorg/kodein/di/DIContainer$DefaultImpls$provider$$inlined$toProvider$1;->(Lkotlin/jvm/functions/Function1;)V +HSPLorg/kodein/di/DIContainer$DefaultImpls$provider$$inlined$toProvider$1;->invoke()Ljava/lang/Object; +Lorg/kodein/di/DIContext; +HSPLorg/kodein/di/DIContext;->()V +Lorg/kodein/di/DIContext$Companion; +HSPLorg/kodein/di/DIContext$Companion;->()V +HSPLorg/kodein/di/DIContext$Companion;->()V +HSPLorg/kodein/di/DIContext$Companion;->invoke(Lorg/kodein/type/TypeToken;Ljava/lang/Object;)Lorg/kodein/di/DIContext; +Lorg/kodein/di/DIContext$Value; +HSPLorg/kodein/di/DIContext$Value;->(Lorg/kodein/type/TypeToken;Ljava/lang/Object;)V +HSPLorg/kodein/di/DIContext$Value;->getType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/DIContext$Value;->getValue()Ljava/lang/Object; +Lorg/kodein/di/DIDefining; +HSPLorg/kodein/di/DIDefining;->(Lorg/kodein/di/bindings/DIBinding;Ljava/lang/String;)V +HSPLorg/kodein/di/DIDefining;->getBinding()Lorg/kodein/di/bindings/DIBinding; +HSPLorg/kodein/di/DIDefining;->getFromModule()Ljava/lang/String; +Lorg/kodein/di/DIDefinition; +HSPLorg/kodein/di/DIDefinition;->(Lorg/kodein/di/bindings/DIBinding;Ljava/lang/String;Lorg/kodein/di/DITree;)V +HSPLorg/kodein/di/DIDefinition;->getTree()Lorg/kodein/di/DITree; +Lorg/kodein/di/DIProperty; +HSPLorg/kodein/di/DIProperty;->(Lorg/kodein/di/DITrigger;Lorg/kodein/di/DIContext;Lkotlin/jvm/functions/Function2;)V +HSPLorg/kodein/di/DIProperty;->access$getGet$p(Lorg/kodein/di/DIProperty;)Lkotlin/jvm/functions/Function2; +HSPLorg/kodein/di/DIProperty;->getOriginalContext()Lorg/kodein/di/DIContext; +HSPLorg/kodein/di/DIProperty;->provideDelegate(Ljava/lang/Object;Lkotlin/reflect/KProperty;)Lkotlin/Lazy; +Lorg/kodein/di/DIProperty$provideDelegate$1; +HSPLorg/kodein/di/DIProperty$provideDelegate$1;->(Ljava/lang/Object;Lorg/kodein/di/DIProperty;Lkotlin/reflect/KProperty;)V +HSPLorg/kodein/di/DIProperty$provideDelegate$1;->invoke()Ljava/lang/Object; +Lorg/kodein/di/DITree; +Lorg/kodein/di/DITree$DefaultImpls; +HSPLorg/kodein/di/DITree$DefaultImpls;->find$default(Lorg/kodein/di/DITree;Lorg/kodein/di/DI$Key;IZILjava/lang/Object;)Ljava/util/List; +Lorg/kodein/di/DITrigger; +Lorg/kodein/di/DIWrapper; +HSPLorg/kodein/di/DIWrapper;->(Lorg/kodein/di/DI;Lorg/kodein/di/DIContext;Lorg/kodein/di/DITrigger;)V +HSPLorg/kodein/di/DIWrapper;->(Lorg/kodein/di/DIAware;Lorg/kodein/di/DIContext;Lorg/kodein/di/DITrigger;)V +HSPLorg/kodein/di/DIWrapper;->getContainer()Lorg/kodein/di/DIContainer; +HSPLorg/kodein/di/DIWrapper;->getDi()Lorg/kodein/di/DI; +HSPLorg/kodein/di/DIWrapper;->getDiContext()Lorg/kodein/di/DIContext; +Lorg/kodein/di/DirectDI; +Lorg/kodein/di/DirectDI$DefaultImpls; +HSPLorg/kodein/di/DirectDI$DefaultImpls;->getDi(Lorg/kodein/di/DirectDI;)Lorg/kodein/di/DI; +Lorg/kodein/di/DirectDIAware; +Lorg/kodein/di/DirectDIBase; +Lorg/kodein/di/DirectDIBase$DefaultImpls; +HSPLorg/kodein/di/DirectDIBase$DefaultImpls;->getDi(Lorg/kodein/di/DirectDIBase;)Lorg/kodein/di/DI; +Lorg/kodein/di/LazyDI; +HSPLorg/kodein/di/LazyDI;->(Lkotlin/jvm/functions/Function0;)V +HSPLorg/kodein/di/LazyDI;->getBaseDI()Lorg/kodein/di/DI; +HSPLorg/kodein/di/LazyDI;->getContainer()Lorg/kodein/di/DIContainer; +HSPLorg/kodein/di/LazyDI;->getDi()Lorg/kodein/di/DI; +HSPLorg/kodein/di/LazyDI;->getDiContext()Lorg/kodein/di/DIContext; +HSPLorg/kodein/di/LazyDI;->getDiTrigger()Lorg/kodein/di/DITrigger; +HSPLorg/kodein/di/LazyDI;->getValue(Ljava/lang/Object;Lkotlin/reflect/KProperty;)Lorg/kodein/di/LazyDI; +Lorg/kodein/di/LazyDelegate; +Lorg/kodein/di/SearchSpecs; +PLorg/kodein/di/SearchSpecs;->(Lorg/kodein/type/TypeToken;Lorg/kodein/type/TypeToken;Lorg/kodein/type/TypeToken;Ljava/lang/Object;)V +HSPLorg/kodein/di/SearchSpecs;->getArgType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/SearchSpecs;->getContextType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/SearchSpecs;->getTag()Ljava/lang/Object; +HSPLorg/kodein/di/SearchSpecs;->getType()Lorg/kodein/type/TypeToken; +Lorg/kodein/di/SearchSpecs$NoDefinedTag; +HSPLorg/kodein/di/SearchSpecs$NoDefinedTag;->()V +HSPLorg/kodein/di/SearchSpecs$NoDefinedTag;->()V +Lorg/kodein/di/android/ClosestKt; +HSPLorg/kodein/di/android/ClosestKt;->access$closestDI(Ljava/lang/Object;Landroid/content/Context;)Lorg/kodein/di/DI; +HSPLorg/kodein/di/android/ClosestKt;->closestDI()Lorg/kodein/di/android/DIPropertyDelegateProvider; +HSPLorg/kodein/di/android/ClosestKt;->closestDI(Ljava/lang/Object;Landroid/content/Context;)Lorg/kodein/di/DI; +HSPLorg/kodein/di/android/ClosestKt;->closestDI(Lkotlin/jvm/functions/Function0;)Lorg/kodein/di/android/DIPropertyDelegateProvider; +Lorg/kodein/di/android/ContextDIPropertyDelegateProvider; +HSPLorg/kodein/di/android/ContextDIPropertyDelegateProvider;->()V +HSPLorg/kodein/di/android/ContextDIPropertyDelegateProvider;->provideDelegate(Landroid/content/Context;Lkotlin/reflect/KProperty;)Lkotlin/Lazy; +HSPLorg/kodein/di/android/ContextDIPropertyDelegateProvider;->provideDelegate(Ljava/lang/Object;Lkotlin/reflect/KProperty;)Lkotlin/Lazy; +Lorg/kodein/di/android/ContextDIPropertyDelegateProvider$provideDelegate$1; +HSPLorg/kodein/di/android/ContextDIPropertyDelegateProvider$provideDelegate$1;->(Landroid/content/Context;)V +HSPLorg/kodein/di/android/ContextDIPropertyDelegateProvider$provideDelegate$1;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ContextDIPropertyDelegateProvider$provideDelegate$1;->invoke()Lorg/kodein/di/DI; +Lorg/kodein/di/android/DIPropertyDelegateProvider; +Lorg/kodein/di/android/LazyContextDIPropertyDelegateProvider; +HSPLorg/kodein/di/android/LazyContextDIPropertyDelegateProvider;->(Lkotlin/jvm/functions/Function0;)V +HSPLorg/kodein/di/android/LazyContextDIPropertyDelegateProvider;->access$getGetContext$p(Lorg/kodein/di/android/LazyContextDIPropertyDelegateProvider;)Lkotlin/jvm/functions/Function0; +HSPLorg/kodein/di/android/LazyContextDIPropertyDelegateProvider;->provideDelegate(Ljava/lang/Object;Lkotlin/reflect/KProperty;)Lkotlin/Lazy; +Lorg/kodein/di/android/LazyContextDIPropertyDelegateProvider$provideDelegate$1; +HSPLorg/kodein/di/android/LazyContextDIPropertyDelegateProvider$provideDelegate$1;->(Ljava/lang/Object;Lorg/kodein/di/android/LazyContextDIPropertyDelegateProvider;)V +HSPLorg/kodein/di/android/LazyContextDIPropertyDelegateProvider$provideDelegate$1;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/LazyContextDIPropertyDelegateProvider$provideDelegate$1;->invoke()Lorg/kodein/di/DI; +Lorg/kodein/di/android/ModuleKt; +HSPLorg/kodein/di/android/ModuleKt;->()V +HSPLorg/kodein/di/android/ModuleKt;->androidCoreModule(Landroid/app/Application;)Lorg/kodein/di/DI$Module; +HSPLorg/kodein/di/android/ModuleKt;->getAndroidCoreContextTranslators()Lorg/kodein/di/DI$Module; +Lorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1;->invoke(Lorg/kodein/di/DI$Builder;)V +Lorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$2; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$2;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$2;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$3; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$3;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$3;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$4; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$4;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$4;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$5; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$5;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$5;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$10; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$10;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$2; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$2;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$3; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$3;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$4; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$4;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$5; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$5;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$6; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$6;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$7; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$7;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$8; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$8;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$9; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$9;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1;->(Landroid/app/Application;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1;->invoke(Lorg/kodein/di/DI$Builder;)V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$1;->(Landroid/app/Application;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$1;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$1;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$1$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$1$1;->(Landroid/app/Application;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$1$1;->invoke(Lorg/kodein/di/bindings/NoArgBindingDI;)Landroid/app/Application; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$1$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$1$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$10; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$10;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$10;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$10;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$10$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$10$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$10$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$10$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$10$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$10$invoke$$inlined$generic$2; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$10$invoke$$inlined$generic$2;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$11; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$11;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$11;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$11;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$11$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$11$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$11$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$11$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$11$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$12; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$12;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$12;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$12;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$12$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$12$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$12$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$12$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$12$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$13; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$13;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$13;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$13;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$13$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$13$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$13$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$13$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$13$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$14; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$14;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$14;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$14;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$14$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$14$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$14$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$14$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$14$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$15; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$15;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$15;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$15;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$15$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$15$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$15$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$15$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$15$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$16; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$16;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$16;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$16;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$16$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$16$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$16$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$16$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$16$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$17; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$17;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$17;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$17;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$17$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$17$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$17$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$17$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$17$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$18; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$18;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$18;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$18;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$18$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$18$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$18$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$18$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$18$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$19; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$19;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$19;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$19;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$19$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$19$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$19$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$19$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$19$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$2; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$2;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$2;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$2;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$2$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$2$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$2$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$2$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$2$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$20; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$20;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$20;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$20;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$20$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$20$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$20$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$20$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$20$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$21; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$21;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$21;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$21;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$21$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$21$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$21$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$21$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$21$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$22; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$22;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$22;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$22;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$22$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$22$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$22$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$22$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$22$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$23; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$23;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$23;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$23;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$23$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$23$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$23$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$23$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$23$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$24; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$24;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$24;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$24;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$24$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$24$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$24$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$24$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$24$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$25; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$25;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$25;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$25;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$25$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$25$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$25$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$25$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$25$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$26; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$26;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$26;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$26;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$26$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$26$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$26$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$26$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$26$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$27; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$27;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$27;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$27;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$27$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$27$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$27$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$27$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$27$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$28; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$28;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$28;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$28;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$28$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$28$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$28$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$28$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$28$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$29; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$29;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$29;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$29;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$29$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$29$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$29$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$29$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$29$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$3; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$3;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$3;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$3;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$3$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$3$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$3$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$3$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$3$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$30; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$30;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$30;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$30;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$30$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$30$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$30$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$30$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$30$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$31; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$31;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$31;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$31;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$31$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$31$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$31$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$31$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$31$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$32; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$32;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$32;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$32;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$32$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$32$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$32$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$32$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$32$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$33; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$33;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$33;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$33;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$33$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$33$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$33$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$33$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$33$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$34; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$34;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$34;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$34;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$34$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$34$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$34$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$34$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$34$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$35; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$35;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$35;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$35;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$35$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$35$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$35$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$35$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$35$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$36; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$36;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$36;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$36;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$36$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$36$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$36$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$36$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$36$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$37; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$37;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$37;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$37;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$37$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$37$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$37$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$37$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$37$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$38; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$38;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$38;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$38;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$38$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$38$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$38$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$38$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$38$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$39; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$39;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$39;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$39;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$39$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$39$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$39$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$39$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$39$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$4; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$4;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$4;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$4;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$4$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$4$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$4$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$4$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$4$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$40; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$40;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$40;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$40;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$40$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$40$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$40$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$40$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$40$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$41; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$41;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$41;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$41;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$41$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$41$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$41$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$41$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$41$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$42; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$42;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$42;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$42;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$42$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$42$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$42$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$42$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$42$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$43; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$43;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$43;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$43;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$43$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$43$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$43$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$43$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$43$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$44; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$44;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$44;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$44;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$44$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$44$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$44$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$44$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$44$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$45; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$45;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$45;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$45;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$45$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$45$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$45$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$45$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$45$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$46; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$46;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$46;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$46;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$46$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$46$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$46$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$46$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$46$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$47; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$47;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$47;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$47;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$47$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$47$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$47$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$47$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$47$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$48; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$48;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$48;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$48;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$48$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$48$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$48$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$48$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$48$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$49; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$49;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$49;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$49;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$49$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$49$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$49$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$49$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$49$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$5; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$5;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$5;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$5;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$5$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$5$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$5$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$5$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$5$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$50; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$50;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$50;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$50;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$50$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$50$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$50$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$50$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$50$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$51; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$51;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$51;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$51;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$51$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$51$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$51$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$51$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$51$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$52; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$52;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$52;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$52;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$52$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$52$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$52$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$52$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$52$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$53; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$53;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$53;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$53;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$53$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$53$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$53$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$53$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$53$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$54; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$54;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$54;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$54;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$54$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$54$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$54$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$54$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$54$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$55; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$55;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$55;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$55;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$55$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$55$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$55$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$55$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$55$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$56; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$56;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$56;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$56;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$56$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$56$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$56$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$56$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$56$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$57; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$57;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$57;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$57;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$57$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$57$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$57$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$57$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$57$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$58; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$58;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$58;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$58;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$58$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$58$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$58$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$58$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$58$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$59; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$59;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$59;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$59;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$59$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$59$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$59$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$59$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$59$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$6; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$6;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$6;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$6;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$6$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$6$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$6$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$6$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$6$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$60; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$60;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$60;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$60;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$60$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$60$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$60$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$60$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$60$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$61; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$61;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$61;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$61;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$61$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$61$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$61$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$61$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$61$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$62; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$62;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$62;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$62;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$62$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$62$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$62$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$62$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$62$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$63; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$63;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$63;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$63;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$63$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$63$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$63$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$63$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$63$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$64; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$64;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$64;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$64;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$64$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$64$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$64$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$64$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$64$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$7; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$7;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$7;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$7;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$7$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$7$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$7$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$7$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$7$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$8; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$8;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$8;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$8;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$8$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$8$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$8$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$8$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$8$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$9; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$9;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$9;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$9;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$9$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$9$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$9$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$9$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$9$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/x/ModuleKt; +HSPLorg/kodein/di/android/x/ModuleKt;->()V +HSPLorg/kodein/di/android/x/ModuleKt;->androidXModule(Landroid/app/Application;)Lorg/kodein/di/DI$Module; +HSPLorg/kodein/di/android/x/ModuleKt;->getAndroidXContextTranslators()Lorg/kodein/di/DI$Module; +Lorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1; +HSPLorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1;->()V +HSPLorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1;->()V +HSPLorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1;->invoke(Lorg/kodein/di/DI$Builder;)V +Lorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$1; +HSPLorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$1;->()V +HSPLorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$1;->()V +Lorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$2; +HSPLorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$2;->()V +HSPLorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$2;->()V +Lorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$3; +HSPLorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$3;->()V +HSPLorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$3;->()V +Lorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$invoke$$inlined$generic$2; +HSPLorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$invoke$$inlined$generic$2;->()V +Lorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$invoke$$inlined$generic$3; +HSPLorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$invoke$$inlined$generic$3;->()V +Lorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$invoke$$inlined$generic$4; +HSPLorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$invoke$$inlined$generic$4;->()V +Lorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$invoke$$inlined$generic$5; +HSPLorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$invoke$$inlined$generic$5;->()V +Lorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$invoke$$inlined$generic$6; +HSPLorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$invoke$$inlined$generic$6;->()V +Lorg/kodein/di/android/x/ModuleKt$androidXModule$1; +HSPLorg/kodein/di/android/x/ModuleKt$androidXModule$1;->(Landroid/app/Application;)V +HSPLorg/kodein/di/android/x/ModuleKt$androidXModule$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/android/x/ModuleKt$androidXModule$1;->invoke(Lorg/kodein/di/DI$Builder;)V +Lorg/kodein/di/bindings/Binding; +Lorg/kodein/di/bindings/BindingDI; +Lorg/kodein/di/bindings/CompositeContextTranslator; +Lorg/kodein/di/bindings/ContextTranslator; +Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/bindings/DIBinding$Copier; +HSPLorg/kodein/di/bindings/DIBinding$Copier;->()V +Lorg/kodein/di/bindings/DIBinding$Copier$Companion; +HSPLorg/kodein/di/bindings/DIBinding$Copier$Companion;->()V +HSPLorg/kodein/di/bindings/DIBinding$Copier$Companion;->()V +HSPLorg/kodein/di/bindings/DIBinding$Copier$Companion;->invoke(Lkotlin/jvm/functions/Function1;)Lorg/kodein/di/bindings/DIBinding$Copier; +Lorg/kodein/di/bindings/DIBinding$Copier$Companion$invoke$1; +HSPLorg/kodein/di/bindings/DIBinding$Copier$Companion$invoke$1;->(Lkotlin/jvm/functions/Function1;)V +Lorg/kodein/di/bindings/DIBinding$DefaultImpls; +HSPLorg/kodein/di/bindings/DIBinding$DefaultImpls;->getSupportSubTypes(Lorg/kodein/di/bindings/DIBinding;)Z +Lorg/kodein/di/bindings/ErasedContext; +HSPLorg/kodein/di/bindings/ErasedContext;->()V +HSPLorg/kodein/di/bindings/ErasedContext;->()V +HSPLorg/kodein/di/bindings/ErasedContext;->getType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/bindings/ErasedContext;->getValue()Ljava/lang/Object; +HSPLorg/kodein/di/bindings/ErasedContext;->getValue()Lorg/kodein/di/bindings/ErasedContext; +Lorg/kodein/di/bindings/Factory; +HSPLorg/kodein/di/bindings/Factory;->(Lorg/kodein/type/TypeToken;Lorg/kodein/type/TypeToken;Lorg/kodein/type/TypeToken;Lkotlin/jvm/functions/Function2;)V +HSPLorg/kodein/di/bindings/Factory;->access$getCreator$p(Lorg/kodein/di/bindings/Factory;)Lkotlin/jvm/functions/Function2; +HSPLorg/kodein/di/bindings/Factory;->getArgType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/bindings/Factory;->getContextType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/bindings/Factory;->getCreatedType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/bindings/Factory;->getFactory(Lorg/kodein/di/DI$Key;Lorg/kodein/di/bindings/BindingDI;)Lkotlin/jvm/functions/Function1; +HSPLorg/kodein/di/bindings/Factory;->getSupportSubTypes()Z +Lorg/kodein/di/bindings/Factory$getFactory$1; +HSPLorg/kodein/di/bindings/Factory$getFactory$1;->(Lorg/kodein/di/bindings/Factory;Lorg/kodein/di/bindings/BindingDI;)V +HSPLorg/kodein/di/bindings/Factory$getFactory$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lorg/kodein/di/bindings/Multiton; +HSPLorg/kodein/di/bindings/Multiton;->(Lorg/kodein/di/bindings/Scope;Lorg/kodein/type/TypeToken;ZLorg/kodein/type/TypeToken;Lorg/kodein/type/TypeToken;Lorg/kodein/di/bindings/RefMaker;ZLkotlin/jvm/functions/Function2;)V +HSPLorg/kodein/di/bindings/Multiton;->access$getCreator$p(Lorg/kodein/di/bindings/Multiton;)Lkotlin/jvm/functions/Function2; +HSPLorg/kodein/di/bindings/Multiton;->access$get_refMaker$p(Lorg/kodein/di/bindings/Multiton;)Lorg/kodein/di/bindings/RefMaker; +HSPLorg/kodein/di/bindings/Multiton;->access$get_scopeId$p(Lorg/kodein/di/bindings/Multiton;)Ljava/lang/Object; +HSPLorg/kodein/di/bindings/Multiton;->getArgType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/bindings/Multiton;->getContextType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/bindings/Multiton;->getFactory(Lorg/kodein/di/DI$Key;Lorg/kodein/di/bindings/BindingDI;)Lkotlin/jvm/functions/Function1; +HSPLorg/kodein/di/bindings/Multiton;->getScope()Lorg/kodein/di/bindings/Scope; +HSPLorg/kodein/di/bindings/Multiton;->getSupportSubTypes()Z +HSPLorg/kodein/di/bindings/Multiton;->getSync()Z +Lorg/kodein/di/bindings/Multiton$copier$1; +HSPLorg/kodein/di/bindings/Multiton$copier$1;->(Lorg/kodein/di/bindings/Multiton;)V +Lorg/kodein/di/bindings/Multiton$getFactory$1; +HSPLorg/kodein/di/bindings/Multiton$getFactory$1;->(Lkotlin/jvm/internal/Ref$ObjectRef;Lorg/kodein/di/bindings/Multiton;Lorg/kodein/di/bindings/BindingDI;)V +HSPLorg/kodein/di/bindings/Multiton$getFactory$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lorg/kodein/di/bindings/Multiton$getFactory$1$1; +HSPLorg/kodein/di/bindings/Multiton$getFactory$1$1;->(Lorg/kodein/di/bindings/Multiton;Lorg/kodein/di/bindings/BindingDI;Ljava/lang/Object;)V +HSPLorg/kodein/di/bindings/Multiton$getFactory$1$1;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/bindings/Multiton$getFactory$1$1;->invoke()Lorg/kodein/di/bindings/Reference; +Lorg/kodein/di/bindings/Multiton$getFactory$1$1$1; +HSPLorg/kodein/di/bindings/Multiton$getFactory$1$1$1;->(Lorg/kodein/di/bindings/Multiton;Lorg/kodein/di/bindings/BindingDI;Ljava/lang/Object;)V +HSPLorg/kodein/di/bindings/Multiton$getFactory$1$1$1;->invoke()Ljava/lang/Object; +Lorg/kodein/di/bindings/NoArgBindingDI; +Lorg/kodein/di/bindings/NoArgBindingDIWrap; +HSPLorg/kodein/di/bindings/NoArgBindingDIWrap;->(Lorg/kodein/di/bindings/BindingDI;)V +HSPLorg/kodein/di/bindings/NoArgBindingDIWrap;->getDi()Lorg/kodein/di/DI; +HSPLorg/kodein/di/bindings/NoArgBindingDIWrap;->getDirectDI()Lorg/kodein/di/DirectDI; +Lorg/kodein/di/bindings/NoArgDIBinding; +Lorg/kodein/di/bindings/NoArgDIBinding$DefaultImpls; +HSPLorg/kodein/di/bindings/NoArgDIBinding$DefaultImpls;->getArgType(Lorg/kodein/di/bindings/NoArgDIBinding;)Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/bindings/NoArgDIBinding$DefaultImpls;->getSupportSubTypes(Lorg/kodein/di/bindings/NoArgDIBinding;)Z +Lorg/kodein/di/bindings/NoScope; +HSPLorg/kodein/di/bindings/NoScope;->()V +HSPLorg/kodein/di/bindings/NoScope;->getRegistry(Ljava/lang/Object;)Lorg/kodein/di/bindings/ScopeRegistry; +HSPLorg/kodein/di/bindings/NoScope;->getRegistry(Ljava/lang/Object;)Lorg/kodein/di/bindings/StandardScopeRegistry; +Lorg/kodein/di/bindings/Provider; +HSPLorg/kodein/di/bindings/Provider;->(Lorg/kodein/type/TypeToken;Lorg/kodein/type/TypeToken;Lkotlin/jvm/functions/Function1;)V +HSPLorg/kodein/di/bindings/Provider;->getArgType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/bindings/Provider;->getContextType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/bindings/Provider;->getCreatedType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/bindings/Provider;->getCreator()Lkotlin/jvm/functions/Function1; +HSPLorg/kodein/di/bindings/Provider;->getFactory(Lorg/kodein/di/DI$Key;Lorg/kodein/di/bindings/BindingDI;)Lkotlin/jvm/functions/Function1; +HSPLorg/kodein/di/bindings/Provider;->getSupportSubTypes()Z +Lorg/kodein/di/bindings/Provider$getFactory$1; +HSPLorg/kodein/di/bindings/Provider$getFactory$1;->(Lorg/kodein/di/bindings/Provider;Lorg/kodein/di/bindings/BindingDI;)V +HSPLorg/kodein/di/bindings/Provider$getFactory$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/bindings/Provider$getFactory$1;->invoke(Lkotlin/Unit;)Ljava/lang/Object; +Lorg/kodein/di/bindings/RefMaker; +Lorg/kodein/di/bindings/Reference; +HSPLorg/kodein/di/bindings/Reference;->(Ljava/lang/Object;Lkotlin/jvm/functions/Function0;)V +HSPLorg/kodein/di/bindings/Reference;->component1()Ljava/lang/Object; +HSPLorg/kodein/di/bindings/Reference;->component2()Lkotlin/jvm/functions/Function0; +Lorg/kodein/di/bindings/Scope; +Lorg/kodein/di/bindings/ScopeCloseable; +Lorg/kodein/di/bindings/ScopeKey; +HSPLorg/kodein/di/bindings/ScopeKey;->(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLorg/kodein/di/bindings/ScopeKey;->hashCode()I +Lorg/kodein/di/bindings/ScopeRegistry; +HSPLorg/kodein/di/bindings/ScopeRegistry;->()V +HSPLorg/kodein/di/bindings/ScopeRegistry;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lorg/kodein/di/bindings/SimpleContextTranslator; +HSPLorg/kodein/di/bindings/SimpleContextTranslator;->(Lorg/kodein/type/TypeToken;Lorg/kodein/type/TypeToken;Lkotlin/jvm/functions/Function2;)V +HSPLorg/kodein/di/bindings/SimpleContextTranslator;->getContextType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/bindings/SimpleContextTranslator;->getScopeType()Lorg/kodein/type/TypeToken; +Lorg/kodein/di/bindings/Singleton; +HPLorg/kodein/di/bindings/Singleton;->(Lorg/kodein/di/bindings/Scope;Lorg/kodein/type/TypeToken;ZLorg/kodein/type/TypeToken;Lorg/kodein/di/bindings/RefMaker;ZLkotlin/jvm/functions/Function1;)V +HSPLorg/kodein/di/bindings/Singleton;->access$get_refMaker$p(Lorg/kodein/di/bindings/Singleton;)Lorg/kodein/di/bindings/RefMaker; +HSPLorg/kodein/di/bindings/Singleton;->access$get_scopeKey$p(Lorg/kodein/di/bindings/Singleton;)Lorg/kodein/di/bindings/ScopeKey; +HSPLorg/kodein/di/bindings/Singleton;->getArgType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/bindings/Singleton;->getContextType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/bindings/Singleton;->getCreatedType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/bindings/Singleton;->getCreator()Lkotlin/jvm/functions/Function1; +HSPLorg/kodein/di/bindings/Singleton;->getFactory(Lorg/kodein/di/DI$Key;Lorg/kodein/di/bindings/BindingDI;)Lkotlin/jvm/functions/Function1; +HSPLorg/kodein/di/bindings/Singleton;->getScope()Lorg/kodein/di/bindings/Scope; +HSPLorg/kodein/di/bindings/Singleton;->getSupportSubTypes()Z +HSPLorg/kodein/di/bindings/Singleton;->getSync()Z +Lorg/kodein/di/bindings/Singleton$copier$1; +HSPLorg/kodein/di/bindings/Singleton$copier$1;->(Lorg/kodein/di/bindings/Singleton;)V +Lorg/kodein/di/bindings/Singleton$getFactory$1; +HSPLorg/kodein/di/bindings/Singleton$getFactory$1;->(Lkotlin/jvm/internal/Ref$ObjectRef;Lorg/kodein/di/bindings/Singleton;Lorg/kodein/di/bindings/BindingDI;)V +HSPLorg/kodein/di/bindings/Singleton$getFactory$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/bindings/Singleton$getFactory$1;->invoke(Lkotlin/Unit;)Ljava/lang/Object; +Lorg/kodein/di/bindings/Singleton$getFactory$1$1; +HSPLorg/kodein/di/bindings/Singleton$getFactory$1$1;->(Lorg/kodein/di/bindings/Singleton;Lorg/kodein/di/bindings/BindingDI;)V +HSPLorg/kodein/di/bindings/Singleton$getFactory$1$1;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/bindings/Singleton$getFactory$1$1;->invoke()Lorg/kodein/di/bindings/Reference; +Lorg/kodein/di/bindings/Singleton$getFactory$1$1$1; +HSPLorg/kodein/di/bindings/Singleton$getFactory$1$1$1;->(Lorg/kodein/di/bindings/Singleton;Lorg/kodein/di/bindings/BindingDI;)V +HSPLorg/kodein/di/bindings/Singleton$getFactory$1$1$1;->invoke()Ljava/lang/Object; +Lorg/kodein/di/bindings/SingletonReference; +HSPLorg/kodein/di/bindings/SingletonReference;->()V +HSPLorg/kodein/di/bindings/SingletonReference;->()V +HSPLorg/kodein/di/bindings/SingletonReference;->make(Lkotlin/jvm/functions/Function0;)Lorg/kodein/di/bindings/Reference; +Lorg/kodein/di/bindings/SingletonReference$make$1; +HSPLorg/kodein/di/bindings/SingletonReference$make$1;->(Ljava/lang/Object;)V +HSPLorg/kodein/di/bindings/SingletonReference$make$1;->invoke()Ljava/lang/Object; +Lorg/kodein/di/bindings/StandardScopeRegistry; +HSPLorg/kodein/di/bindings/StandardScopeRegistry;->()V +HSPLorg/kodein/di/bindings/StandardScopeRegistry;->getOrCreate(Ljava/lang/Object;ZLkotlin/jvm/functions/Function0;)Ljava/lang/Object; +Lorg/kodein/di/bindings/WithContext; +Lorg/kodein/di/compose/AndroidContextKt; +HSPLorg/kodein/di/compose/AndroidContextKt;->()V +HSPLorg/kodein/di/compose/AndroidContextKt;->access$androidContextDI$lambda$0(Lkotlin/Lazy;)Lorg/kodein/di/DI; +HSPLorg/kodein/di/compose/AndroidContextKt;->androidContextDI$lambda$0(Lkotlin/Lazy;)Lorg/kodein/di/DI; +HSPLorg/kodein/di/compose/AndroidContextKt;->androidContextDI(Landroidx/compose/runtime/Composer;I)Lorg/kodein/di/DI; +HSPLorg/kodein/di/compose/AndroidContextKt;->diFromAppContext(Landroidx/compose/runtime/Composer;I)Lorg/kodein/di/DI; +Lorg/kodein/di/compose/AndroidContextKt$androidContextDI$di$2; +HSPLorg/kodein/di/compose/AndroidContextKt$androidContextDI$di$2;->(Landroid/content/Context;)V +HSPLorg/kodein/di/compose/AndroidContextKt$androidContextDI$di$2;->invoke()Landroid/content/Context; +HSPLorg/kodein/di/compose/AndroidContextKt$androidContextDI$di$2;->invoke()Ljava/lang/Object; +Lorg/kodein/di/compose/ComposableDILazyDelegate; +HSPLorg/kodein/di/compose/ComposableDILazyDelegate;->()V +HSPLorg/kodein/di/compose/ComposableDILazyDelegate;->(Lorg/kodein/di/LazyDelegate;)V +HSPLorg/kodein/di/compose/ComposableDILazyDelegate;->provideDelegate(Ljava/lang/Object;Lkotlin/reflect/KProperty;)Lkotlin/Lazy; +Lorg/kodein/di/compose/CompositionLocalKt; +HSPLorg/kodein/di/compose/CompositionLocalKt;->()V +HSPLorg/kodein/di/compose/CompositionLocalKt;->getLocalDI()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLorg/kodein/di/compose/CompositionLocalKt;->localDI(Landroidx/compose/runtime/Composer;I)Lorg/kodein/di/DI; +Lorg/kodein/di/compose/CompositionLocalKt$LocalDI$1; +HSPLorg/kodein/di/compose/CompositionLocalKt$LocalDI$1;->()V +HSPLorg/kodein/di/compose/CompositionLocalKt$LocalDI$1;->()V +HSPLorg/kodein/di/compose/CompositionLocalKt$LocalDI$1;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/compose/CompositionLocalKt$LocalDI$1;->invoke()Lorg/kodein/di/DI; +Lorg/kodein/di/compose/WithDIKt; +HSPLorg/kodein/di/compose/WithDIKt;->withDI(Lorg/kodein/di/DI;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +Lorg/kodein/di/compose/WithDIKt$withDI$7; +HSPLorg/kodein/di/compose/WithDIKt$withDI$7;->(Lkotlin/jvm/functions/Function2;)V +HSPLorg/kodein/di/compose/WithDIKt$withDI$7;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLorg/kodein/di/compose/WithDIKt$withDI$7;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lorg/kodein/di/internal/BindingDIImpl; +HSPLorg/kodein/di/internal/BindingDIImpl;->(Lorg/kodein/di/DirectDI;Lorg/kodein/di/DI$Key;I)V +HSPLorg/kodein/di/internal/BindingDIImpl;->getContext()Ljava/lang/Object; +HSPLorg/kodein/di/internal/BindingDIImpl;->getDi()Lorg/kodein/di/DI; +HSPLorg/kodein/di/internal/BindingDIImpl;->getDirectDI()Lorg/kodein/di/DirectDI; +HSPLorg/kodein/di/internal/BindingDIImpl;->onErasedContext()Lorg/kodein/di/bindings/BindingDI; +Lorg/kodein/di/internal/DIBuilderImpl; +HSPLorg/kodein/di/internal/DIBuilderImpl;->(Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;Lorg/kodein/di/internal/DIContainerBuilderImpl;)V +HSPLorg/kodein/di/internal/DIBuilderImpl;->Bind(Ljava/lang/Object;Ljava/lang/Boolean;Lorg/kodein/di/bindings/DIBinding;)V +HSPLorg/kodein/di/internal/DIBuilderImpl;->Bind(Lorg/kodein/type/TypeToken;Ljava/lang/Object;Ljava/lang/Boolean;)Lorg/kodein/di/DI$Builder$TypeBinder; +HSPLorg/kodein/di/internal/DIBuilderImpl;->Bind(Lorg/kodein/type/TypeToken;Ljava/lang/Object;Ljava/lang/Boolean;)Lorg/kodein/di/internal/DIBuilderImpl$TypeBinder; +HSPLorg/kodein/di/internal/DIBuilderImpl;->RegisterContextTranslator(Lorg/kodein/di/bindings/ContextTranslator;)V +HSPLorg/kodein/di/internal/DIBuilderImpl;->access$getModuleName$p(Lorg/kodein/di/internal/DIBuilderImpl;)Ljava/lang/String; +HSPLorg/kodein/di/internal/DIBuilderImpl;->getContainerBuilder()Lorg/kodein/di/internal/DIContainerBuilderImpl; +HSPLorg/kodein/di/internal/DIBuilderImpl;->getContextType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/internal/DIBuilderImpl;->getExplicitContext()Z +HSPLorg/kodein/di/internal/DIBuilderImpl;->getImportedModules$kodein_di()Ljava/util/Set; +HSPLorg/kodein/di/internal/DIBuilderImpl;->getScope()Lorg/kodein/di/bindings/Scope; +HSPLorg/kodein/di/internal/DIBuilderImpl;->import(Lorg/kodein/di/DI$Module;Z)V +HSPLorg/kodein/di/internal/DIBuilderImpl;->importOnce(Lorg/kodein/di/DI$Module;Z)V +Lorg/kodein/di/internal/DIBuilderImpl$TypeBinder; +HSPLorg/kodein/di/internal/DIBuilderImpl$TypeBinder;->(Lorg/kodein/di/internal/DIBuilderImpl;Lorg/kodein/type/TypeToken;Ljava/lang/Object;Ljava/lang/Boolean;)V +HSPLorg/kodein/di/internal/DIBuilderImpl$TypeBinder;->getContainerBuilder$kodein_di()Lorg/kodein/di/internal/DIContainerBuilderImpl; +HSPLorg/kodein/di/internal/DIBuilderImpl$TypeBinder;->with(Lorg/kodein/di/bindings/DIBinding;)V +Lorg/kodein/di/internal/DIContainerBuilderImpl; +HSPLorg/kodein/di/internal/DIContainerBuilderImpl;->(ZZLjava/util/Map;Ljava/util/List;Ljava/util/List;)V +HSPLorg/kodein/di/internal/DIContainerBuilderImpl;->bind(Lorg/kodein/di/DI$Key;Lorg/kodein/di/bindings/DIBinding;Ljava/lang/String;Ljava/lang/Boolean;)V +HSPLorg/kodein/di/internal/DIContainerBuilderImpl;->checkMatch(Z)V +HSPLorg/kodein/di/internal/DIContainerBuilderImpl;->checkOverrides(Lorg/kodein/di/DI$Key;Ljava/lang/Boolean;)V +HSPLorg/kodein/di/internal/DIContainerBuilderImpl;->extend(Lorg/kodein/di/DIContainer;ZLjava/util/Set;)V +HSPLorg/kodein/di/internal/DIContainerBuilderImpl;->getBindingsMap$kodein_di()Ljava/util/Map; +HSPLorg/kodein/di/internal/DIContainerBuilderImpl;->getCallbacks$kodein_di()Ljava/util/List; +HSPLorg/kodein/di/internal/DIContainerBuilderImpl;->getTranslators$kodein_di()Ljava/util/List; +HSPLorg/kodein/di/internal/DIContainerBuilderImpl;->registerContextTranslator(Lorg/kodein/di/bindings/ContextTranslator;)V +HSPLorg/kodein/di/internal/DIContainerBuilderImpl;->subBuilder(ZZ)Lorg/kodein/di/internal/DIContainerBuilderImpl; +Lorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode; +HSPLorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode;->$values()[Lorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode; +HSPLorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode;->()V +HSPLorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode;->(Ljava/lang/String;I)V +HSPLorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode;->(Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +Lorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode$ALLOW_EXPLICIT; +HSPLorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode$ALLOW_EXPLICIT;->(Ljava/lang/String;I)V +HSPLorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode$ALLOW_EXPLICIT;->isAllowed()Z +HSPLorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode$ALLOW_EXPLICIT;->must(Ljava/lang/Boolean;)Ljava/lang/Boolean; +Lorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode$ALLOW_SILENT; +HSPLorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode$ALLOW_SILENT;->(Ljava/lang/String;I)V +Lorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode$Companion; +HSPLorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode$Companion;->()V +HSPLorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode$Companion;->get(ZZ)Lorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode; +Lorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode$FORBID; +HSPLorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode$FORBID;->(Ljava/lang/String;I)V +HSPLorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode$FORBID;->isAllowed()Z +HSPLorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode$FORBID;->must(Ljava/lang/Boolean;)Ljava/lang/Boolean; +Lorg/kodein/di/internal/DIContainerImpl; +HSPLorg/kodein/di/internal/DIContainerImpl;->(Lorg/kodein/di/DITree;Lorg/kodein/di/internal/DIContainerImpl$Node;ZZ)V +HSPLorg/kodein/di/internal/DIContainerImpl;->(Lorg/kodein/di/internal/DIContainerBuilderImpl;Ljava/util/List;ZZZ)V +HSPLorg/kodein/di/internal/DIContainerImpl;->allFactories(Lorg/kodein/di/DI$Key;Ljava/lang/Object;I)Ljava/util/List; +HSPLorg/kodein/di/internal/DIContainerImpl;->allProviders(Lorg/kodein/di/DI$Key;Ljava/lang/Object;I)Ljava/util/List; +HSPLorg/kodein/di/internal/DIContainerImpl;->bindingDI(Lorg/kodein/di/DI$Key;Lorg/kodein/di/DIContext;Lorg/kodein/di/DITree;I)Lorg/kodein/di/bindings/BindingDI; +HSPLorg/kodein/di/internal/DIContainerImpl;->factory(Lorg/kodein/di/DI$Key;Ljava/lang/Object;I)Lkotlin/jvm/functions/Function1; +HSPLorg/kodein/di/internal/DIContainerImpl;->getInitCallbacks()Lkotlin/jvm/functions/Function0; +HSPLorg/kodein/di/internal/DIContainerImpl;->getTree()Lorg/kodein/di/DITree; +HSPLorg/kodein/di/internal/DIContainerImpl;->provider(Lorg/kodein/di/DI$Key;Ljava/lang/Object;I)Lkotlin/jvm/functions/Function0; +Lorg/kodein/di/internal/DIContainerImpl$Node; +HSPLorg/kodein/di/internal/DIContainerImpl$Node;->(Lorg/kodein/di/DI$Key;ILorg/kodein/di/internal/DIContainerImpl$Node;Z)V +HSPLorg/kodein/di/internal/DIContainerImpl$Node;->check$kodein_di(Lorg/kodein/di/DI$Key;I)V +HSPLorg/kodein/di/internal/DIContainerImpl$Node;->recursiveCheck(Lorg/kodein/di/internal/DIContainerImpl$Node;Lorg/kodein/di/DI$Key;I)Z +Lorg/kodein/di/internal/DIContainerImpl$init$1; +HSPLorg/kodein/di/internal/DIContainerImpl$init$1;->(Lorg/kodein/di/internal/DIContainerImpl;Lorg/kodein/di/internal/DIContainerBuilderImpl;)V +HSPLorg/kodein/di/internal/DIContainerImpl$init$1;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/internal/DIContainerImpl$init$1;->invoke()V +Lorg/kodein/di/internal/DIImpl; +HSPLorg/kodein/di/internal/DIImpl;->()V +HSPLorg/kodein/di/internal/DIImpl;->(Lorg/kodein/di/internal/DIContainerImpl;)V +HSPLorg/kodein/di/internal/DIImpl;->(Lorg/kodein/di/internal/DIMainBuilderImpl;Z)V +HSPLorg/kodein/di/internal/DIImpl;->(ZLkotlin/jvm/functions/Function1;)V +HSPLorg/kodein/di/internal/DIImpl;->access$get_container$p(Lorg/kodein/di/internal/DIImpl;)Lorg/kodein/di/internal/DIContainerImpl; +HSPLorg/kodein/di/internal/DIImpl;->getContainer()Lorg/kodein/di/DIContainer; +HSPLorg/kodein/di/internal/DIImpl;->getDi()Lorg/kodein/di/DI; +HSPLorg/kodein/di/internal/DIImpl;->getDiTrigger()Lorg/kodein/di/DITrigger; +Lorg/kodein/di/internal/DIImpl$Companion; +HSPLorg/kodein/di/internal/DIImpl$Companion;->()V +HSPLorg/kodein/di/internal/DIImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/kodein/di/internal/DIImpl$Companion;->access$newBuilder(Lorg/kodein/di/internal/DIImpl$Companion;ZLkotlin/jvm/functions/Function1;)Lorg/kodein/di/internal/DIMainBuilderImpl; +HSPLorg/kodein/di/internal/DIImpl$Companion;->newBuilder(ZLkotlin/jvm/functions/Function1;)Lorg/kodein/di/internal/DIMainBuilderImpl; +Lorg/kodein/di/internal/DIImpl$container$2; +HSPLorg/kodein/di/internal/DIImpl$container$2;->(Lorg/kodein/di/internal/DIImpl;)V +HSPLorg/kodein/di/internal/DIImpl$container$2;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/internal/DIImpl$container$2;->invoke()Lorg/kodein/di/internal/DIContainerImpl; +Lorg/kodein/di/internal/DIMainBuilderImpl; +HSPLorg/kodein/di/internal/DIMainBuilderImpl;->(Z)V +HSPLorg/kodein/di/internal/DIMainBuilderImpl;->extend(Lorg/kodein/di/DI;ZLorg/kodein/di/Copy;)V +HSPLorg/kodein/di/internal/DIMainBuilderImpl;->getExternalSources()Ljava/util/List; +HSPLorg/kodein/di/internal/DIMainBuilderImpl;->getFullContainerTreeOnError()Z +HSPLorg/kodein/di/internal/DIMainBuilderImpl;->getFullDescriptionOnError()Z +Lorg/kodein/di/internal/DITreeImpl; +HPLorg/kodein/di/internal/DITreeImpl;->(Ljava/util/Map;Ljava/util/List;Ljava/util/List;)V +HSPLorg/kodein/di/internal/DITreeImpl;->find(Lorg/kodein/di/DI$Key;IZ)Ljava/util/List; +HSPLorg/kodein/di/internal/DITreeImpl;->findBySpecs(Lorg/kodein/di/SearchSpecs;)Ljava/util/List; +HSPLorg/kodein/di/internal/DITreeImpl;->getBindings()Ljava/util/Map; +HSPLorg/kodein/di/internal/DITreeImpl;->getExternalSources()Ljava/util/List; +HSPLorg/kodein/di/internal/DITreeImpl;->getRegisteredTranslators()Ljava/util/List; +Lorg/kodein/di/internal/DITreeImpl$findBySpecs$1; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$1;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$1;->invoke(Ljava/util/Map$Entry;)Ljava/lang/Boolean; +Lorg/kodein/di/internal/DITreeImpl$findBySpecs$2; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$2;->(Lorg/kodein/type/TypeToken;Lorg/kodein/di/internal/DITreeImpl;)V +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$2;->invoke(Lkotlin/Triple;)Lkotlin/Triple; +Lorg/kodein/di/internal/DITreeImpl$findBySpecs$3; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$3;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$3;->invoke(Lkotlin/Triple;)Ljava/lang/Boolean; +Lorg/kodein/di/internal/DITreeImpl$findBySpecs$4; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$4;->(Ljava/lang/Object;)V +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$4;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$4;->invoke(Lkotlin/Triple;)Ljava/lang/Boolean; +Lorg/kodein/di/internal/DITreeImpl$findBySpecs$argSeq$1; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$argSeq$1;->()V +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$argSeq$1;->()V +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$argSeq$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$argSeq$1;->invoke(Lkotlin/Triple;)Lkotlin/sequences/Sequence; +Lorg/kodein/di/internal/DITreeImpl$findBySpecs$argSeq$1$1; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$argSeq$1$1;->(Lorg/kodein/di/bindings/ContextTranslator;)V +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$argSeq$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$argSeq$1$1;->invoke(Ljava/util/Map$Entry;)Lkotlin/Triple; +Lorg/kodein/di/internal/DITreeImpl$findBySpecs$contextSeq$1; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$contextSeq$1;->()V +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$contextSeq$1;->()V +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$contextSeq$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$contextSeq$1;->invoke(Ljava/util/Map$Entry;)Lkotlin/sequences/Sequence; +Lorg/kodein/di/internal/DITreeImpl$findBySpecs$contextSeq$1$1; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$contextSeq$1$1;->()V +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$contextSeq$1$1;->()V +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$contextSeq$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$contextSeq$1$1;->invoke(Ljava/util/Map$Entry;)Lkotlin/Triple; +Lorg/kodein/di/internal/DITreeImpl$findBySpecs$resultSeq$1; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$resultSeq$1;->()V +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$resultSeq$1;->()V +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$resultSeq$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$resultSeq$1;->invoke(Lkotlin/Triple;)Lkotlin/Pair; +Lorg/kodein/di/internal/DITreeImpl$findBySpecs$tagSeq$1; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$tagSeq$1;->()V +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$tagSeq$1;->()V +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$tagSeq$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$tagSeq$1;->invoke(Lkotlin/Triple;)Lkotlin/sequences/Sequence; +Lorg/kodein/di/internal/DITreeImpl$findBySpecs$tagSeq$1$1; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$tagSeq$1$1;->(Lorg/kodein/di/bindings/ContextTranslator;)V +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$tagSeq$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$tagSeq$1$1;->invoke(Ljava/util/Map$Entry;)Lkotlin/Triple; +Lorg/kodein/di/internal/DirectDIBaseImpl; +HSPLorg/kodein/di/internal/DirectDIBaseImpl;->(Lorg/kodein/di/DIContainer;Lorg/kodein/di/DIContext;)V +HSPLorg/kodein/di/internal/DirectDIBaseImpl;->Instance(Lorg/kodein/type/TypeToken;Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/internal/DirectDIBaseImpl;->Instance(Lorg/kodein/type/TypeToken;Lorg/kodein/type/TypeToken;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/internal/DirectDIBaseImpl;->On(Lorg/kodein/di/DIContext;)Lorg/kodein/di/DirectDI; +HSPLorg/kodein/di/internal/DirectDIBaseImpl;->getContainer()Lorg/kodein/di/DIContainer; +HSPLorg/kodein/di/internal/DirectDIBaseImpl;->getContext()Lorg/kodein/di/DIContext; +HSPLorg/kodein/di/internal/DirectDIBaseImpl;->getDi()Lorg/kodein/di/DI; +HSPLorg/kodein/di/internal/DirectDIBaseImpl;->getDirectDI()Lorg/kodein/di/DirectDI; +HSPLorg/kodein/di/internal/DirectDIBaseImpl;->getLazy()Lorg/kodein/di/DI; +Lorg/kodein/di/internal/DirectDIImpl; +HSPLorg/kodein/di/internal/DirectDIImpl;->(Lorg/kodein/di/DIContainer;Lorg/kodein/di/DIContext;)V +HSPLorg/kodein/di/internal/DirectDIImpl;->AllInstances(Lorg/kodein/type/TypeToken;Ljava/lang/Object;)Ljava/util/List; +Lorg/kodein/di/internal/DirectDIJVMImplKt; +HSPLorg/kodein/di/internal/DirectDIJVMImplKt;->access$getAnyType(Lorg/kodein/di/DIContext;)Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/internal/DirectDIJVMImplKt;->getAnyType(Lorg/kodein/di/DIContext;)Lorg/kodein/type/TypeToken; +Lorg/kodein/di/internal/LangKt; +HSPLorg/kodein/di/internal/LangKt;->newConcurrentMap()Ljava/util/Map; +HSPLorg/kodein/di/internal/LangKt;->newLinkedList()Ljava/util/List; +HSPLorg/kodein/di/internal/LangKt;->newLinkedList(Ljava/util/Collection;)Ljava/util/List; +Lorg/kodein/di/internal/TypeChecker; +HSPLorg/kodein/di/internal/TypeChecker;->()V +HSPLorg/kodein/di/internal/TypeChecker;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lorg/kodein/di/internal/TypeChecker$Down; +HSPLorg/kodein/di/internal/TypeChecker$Down;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/internal/TypeChecker$Down;->check(Lorg/kodein/type/TypeToken;)Z +HSPLorg/kodein/di/internal/TypeChecker$Down;->equals(Ljava/lang/Object;)Z +HSPLorg/kodein/di/internal/TypeChecker$Down;->getType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/internal/TypeChecker$Down;->hashCode()I +Lorg/kodein/di/internal/TypeChecker$Up; +HSPLorg/kodein/di/internal/TypeChecker$Up;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/internal/TypeChecker$Up;->check(Lorg/kodein/type/TypeToken;)Z +HSPLorg/kodein/di/internal/TypeChecker$Up;->equals(Ljava/lang/Object;)Z +HSPLorg/kodein/di/internal/TypeChecker$Up;->getType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/internal/TypeChecker$Up;->hashCode()I +Lorg/kodein/type/AbstractTypeToken; +HSPLorg/kodein/type/AbstractTypeToken;->()V +HSPLorg/kodein/type/AbstractTypeToken;->()V +HPLorg/kodein/type/AbstractTypeToken;->equals(Ljava/lang/Object;)Z +HSPLorg/kodein/type/AbstractTypeToken;->hashCode()I +HSPLorg/kodein/type/AbstractTypeToken;->isAssignableFrom(Lorg/kodein/type/TypeToken;)Z +Lorg/kodein/type/AbstractTypeToken$Companion; +HSPLorg/kodein/type/AbstractTypeToken$Companion;->()V +HSPLorg/kodein/type/AbstractTypeToken$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lorg/kodein/type/GenericArrayTypeImpl; +HSPLorg/kodein/type/GenericArrayTypeImpl;->()V +HSPLorg/kodein/type/GenericArrayTypeImpl;->(Ljava/lang/reflect/Type;)V +HSPLorg/kodein/type/GenericArrayTypeImpl;->(Ljava/lang/reflect/Type;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/kodein/type/GenericArrayTypeImpl;->getGenericComponentType()Ljava/lang/reflect/Type; +Lorg/kodein/type/GenericArrayTypeImpl$Companion; +HSPLorg/kodein/type/GenericArrayTypeImpl$Companion;->()V +HSPLorg/kodein/type/GenericArrayTypeImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/kodein/type/GenericArrayTypeImpl$Companion;->invoke(Ljava/lang/reflect/Type;)Lorg/kodein/type/GenericArrayTypeImpl; +Lorg/kodein/type/GenericJVMTypeTokenDelegate; +HSPLorg/kodein/type/GenericJVMTypeTokenDelegate;->(Lorg/kodein/type/JVMTypeToken;Ljava/lang/Class;)V +HSPLorg/kodein/type/GenericJVMTypeTokenDelegate;->equals(Ljava/lang/Object;)Z +HSPLorg/kodein/type/GenericJVMTypeTokenDelegate;->getRaw()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/type/GenericJVMTypeTokenDelegate;->getSuper()Ljava/util/List; +HSPLorg/kodein/type/GenericJVMTypeTokenDelegate;->hashCode()I +HSPLorg/kodein/type/GenericJVMTypeTokenDelegate;->isAssignableFrom(Lorg/kodein/type/TypeToken;)Z +HSPLorg/kodein/type/GenericJVMTypeTokenDelegate;->isWildcard()Z +Lorg/kodein/type/JVMAbstractTypeToken; +HSPLorg/kodein/type/JVMAbstractTypeToken;->()V +HSPLorg/kodein/type/JVMAbstractTypeToken;->()V +HSPLorg/kodein/type/JVMAbstractTypeToken;->access$getNeedGATWorkaround$delegate$cp()Lkotlin/Lazy; +HSPLorg/kodein/type/JVMAbstractTypeToken;->access$getNeedPTWorkaround$delegate$cp()Lkotlin/Lazy; +HSPLorg/kodein/type/JVMAbstractTypeToken;->typeEquals$kaverit_release(Lorg/kodein/type/TypeToken;)Z +HSPLorg/kodein/type/JVMAbstractTypeToken;->typeHashCode$kaverit_release()I +Lorg/kodein/type/JVMAbstractTypeToken$Companion; +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion;->()V +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HPLorg/kodein/type/JVMAbstractTypeToken$Companion;->Equals(Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)Z +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion;->HashCode(Ljava/lang/reflect/Type;)I +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion;->getNeedGATWorkaround()Z +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion;->getNeedPTWorkaround()Z +Lorg/kodein/type/JVMAbstractTypeToken$Companion$WrappingTest; +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion$WrappingTest;->()V +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion$WrappingTest;->getType()Ljava/lang/reflect/Type; +Lorg/kodein/type/JVMAbstractTypeToken$Companion$needGATWorkaround$2; +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion$needGATWorkaround$2;->()V +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion$needGATWorkaround$2;->()V +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion$needGATWorkaround$2;->invoke()Ljava/lang/Boolean; +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion$needGATWorkaround$2;->invoke()Ljava/lang/Object; +Lorg/kodein/type/JVMAbstractTypeToken$Companion$needGATWorkaround$2$t1$1; +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion$needGATWorkaround$2$t1$1;->()V +Lorg/kodein/type/JVMAbstractTypeToken$Companion$needGATWorkaround$2$t2$1; +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion$needGATWorkaround$2$t2$1;->()V +Lorg/kodein/type/JVMAbstractTypeToken$Companion$needPTWorkaround$2; +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion$needPTWorkaround$2;->()V +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion$needPTWorkaround$2;->()V +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion$needPTWorkaround$2;->invoke()Ljava/lang/Boolean; +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion$needPTWorkaround$2;->invoke()Ljava/lang/Object; +Lorg/kodein/type/JVMAbstractTypeToken$Companion$needPTWorkaround$2$t1$1; +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion$needPTWorkaround$2$t1$1;->()V +Lorg/kodein/type/JVMAbstractTypeToken$Companion$needPTWorkaround$2$t2$1; +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion$needPTWorkaround$2$t2$1;->()V +Lorg/kodein/type/JVMClassTypeToken; +HSPLorg/kodein/type/JVMClassTypeToken;->(Ljava/lang/Class;)V +HSPLorg/kodein/type/JVMClassTypeToken;->getJvmType()Ljava/lang/Class; +HSPLorg/kodein/type/JVMClassTypeToken;->getJvmType()Ljava/lang/reflect/Type; +HSPLorg/kodein/type/JVMClassTypeToken;->getRaw()Lorg/kodein/type/JVMClassTypeToken; +HSPLorg/kodein/type/JVMClassTypeToken;->getRaw()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/type/JVMClassTypeToken;->getSuper()Ljava/util/List; +HSPLorg/kodein/type/JVMClassTypeToken;->isAssignableFrom(Lorg/kodein/type/TypeToken;)Z +HSPLorg/kodein/type/JVMClassTypeToken;->isWildcard()Z +Lorg/kodein/type/JVMParameterizedTypeToken; +HSPLorg/kodein/type/JVMParameterizedTypeToken;->(Ljava/lang/reflect/ParameterizedType;)V +HSPLorg/kodein/type/JVMParameterizedTypeToken;->getGenericParameters()[Lorg/kodein/type/TypeToken; +HSPLorg/kodein/type/JVMParameterizedTypeToken;->getJvmType()Ljava/lang/reflect/ParameterizedType; +HSPLorg/kodein/type/JVMParameterizedTypeToken;->getJvmType()Ljava/lang/reflect/Type; +HSPLorg/kodein/type/JVMParameterizedTypeToken;->getRaw()Lorg/kodein/type/TypeToken; +HPLorg/kodein/type/JVMParameterizedTypeToken;->getSuper()Ljava/util/List; +HSPLorg/kodein/type/JVMParameterizedTypeToken;->isWildcard()Z +Lorg/kodein/type/JVMTypeToken; +Lorg/kodein/type/JVMUtilsKt; +HSPLorg/kodein/type/JVMUtilsKt;->allTypeEquals([Ljava/lang/reflect/Type;[Ljava/lang/reflect/Type;)Z +HSPLorg/kodein/type/JVMUtilsKt;->boundedTypeArguments(Ljava/lang/reflect/ParameterizedType;)[Ljava/lang/reflect/Type; +HSPLorg/kodein/type/JVMUtilsKt;->getBoundedGenericSuperClass(Ljava/lang/Class;)Ljava/lang/reflect/Type; +HSPLorg/kodein/type/JVMUtilsKt;->getRawClass(Ljava/lang/reflect/ParameterizedType;)Ljava/lang/Class; +HSPLorg/kodein/type/JVMUtilsKt;->kodein(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type; +PLorg/kodein/type/JVMUtilsKt;->reify$default(Ljava/lang/reflect/ParameterizedType;Ljava/lang/reflect/Type;Ljava/lang/reflect/ParameterizedType;[Ljava/lang/reflect/Type;ILjava/lang/Object;)Ljava/lang/reflect/Type; +HPLorg/kodein/type/JVMUtilsKt;->reify(Ljava/lang/reflect/ParameterizedType;Ljava/lang/reflect/Type;Ljava/lang/reflect/ParameterizedType;[Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type; +HSPLorg/kodein/type/JVMUtilsKt;->removeVariables(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type; +HSPLorg/kodein/type/JVMUtilsKt;->typeEquals(Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)Z +HSPLorg/kodein/type/JVMUtilsKt;->typeHashCode(Ljava/lang/reflect/Type;)I +Lorg/kodein/type/ParameterizedTypeImpl; +HSPLorg/kodein/type/ParameterizedTypeImpl;->()V +HSPLorg/kodein/type/ParameterizedTypeImpl;->(Ljava/lang/Class;[Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)V +HSPLorg/kodein/type/ParameterizedTypeImpl;->equals(Ljava/lang/Object;)Z +HSPLorg/kodein/type/ParameterizedTypeImpl;->getActualTypeArguments()[Ljava/lang/reflect/Type; +HSPLorg/kodein/type/ParameterizedTypeImpl;->getRawType()Ljava/lang/Class; +HSPLorg/kodein/type/ParameterizedTypeImpl;->getRawType()Ljava/lang/reflect/Type; +HSPLorg/kodein/type/ParameterizedTypeImpl;->hashCode()I +Lorg/kodein/type/ParameterizedTypeImpl$Companion; +HSPLorg/kodein/type/ParameterizedTypeImpl$Companion;->()V +HSPLorg/kodein/type/ParameterizedTypeImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/kodein/type/ParameterizedTypeImpl$Companion;->invoke(Ljava/lang/reflect/ParameterizedType;)Lorg/kodein/type/ParameterizedTypeImpl; +Lorg/kodein/type/TypeReference; +HSPLorg/kodein/type/TypeReference;->()V +HSPLorg/kodein/type/TypeReference;->getSuperType()Ljava/lang/reflect/Type; +Lorg/kodein/type/TypeToken; +HSPLorg/kodein/type/TypeToken;->()V +Lorg/kodein/type/TypeToken$Companion; +HSPLorg/kodein/type/TypeToken$Companion;->()V +HSPLorg/kodein/type/TypeToken$Companion;->()V +HSPLorg/kodein/type/TypeToken$Companion;->getAny()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/type/TypeToken$Companion;->getUnit()Lorg/kodein/type/TypeToken; +Lorg/kodein/type/TypeTokensJVMKt; +HSPLorg/kodein/type/TypeTokensJVMKt;->()V +HSPLorg/kodein/type/TypeTokensJVMKt;->erased(Lkotlin/reflect/KClass;)Lorg/kodein/type/TypeToken; +PLorg/kodein/type/TypeTokensJVMKt;->erasedOf(Ljava/lang/Object;)Lorg/kodein/type/TypeToken; +HSPLorg/kodein/type/TypeTokensJVMKt;->isReified(Ljava/lang/reflect/Type;)Z +HSPLorg/kodein/type/TypeTokensJVMKt;->typeToken(Ljava/lang/reflect/Type;)Lorg/kodein/type/JVMTypeToken; +Lorg/slf4j/ILoggerFactory; +Lorg/slf4j/IMarkerFactory; +Lorg/slf4j/Logger; +Lorg/slf4j/LoggerFactory; +HSPLorg/slf4j/LoggerFactory;->()V +HSPLorg/slf4j/LoggerFactory;->bind()V +HSPLorg/slf4j/LoggerFactory;->findServiceProviders()Ljava/util/List; +HSPLorg/slf4j/LoggerFactory;->fixSubstituteLoggers()V +HSPLorg/slf4j/LoggerFactory;->getILoggerFactory()Lorg/slf4j/ILoggerFactory; +HSPLorg/slf4j/LoggerFactory;->getLogger(Ljava/lang/Class;)Lorg/slf4j/Logger; +HSPLorg/slf4j/LoggerFactory;->getLogger(Ljava/lang/String;)Lorg/slf4j/Logger; +HSPLorg/slf4j/LoggerFactory;->getProvider()Lorg/slf4j/spi/SLF4JServiceProvider; +HSPLorg/slf4j/LoggerFactory;->getServiceLoader(Ljava/lang/ClassLoader;)Ljava/util/ServiceLoader; +HSPLorg/slf4j/LoggerFactory;->isAmbiguousProviderList(Ljava/util/List;)Z +HSPLorg/slf4j/LoggerFactory;->loadExplicitlySpecified(Ljava/lang/ClassLoader;)Lorg/slf4j/spi/SLF4JServiceProvider; +HSPLorg/slf4j/LoggerFactory;->performInitialization()V +HSPLorg/slf4j/LoggerFactory;->postBindCleanUp()V +HSPLorg/slf4j/LoggerFactory;->replayEvents()V +HSPLorg/slf4j/LoggerFactory;->reportActualBinding(Ljava/util/List;)V +HSPLorg/slf4j/LoggerFactory;->reportMultipleBindingAmbiguity(Ljava/util/List;)V +HSPLorg/slf4j/LoggerFactory;->safelyInstantiate(Ljava/util/List;Ljava/util/Iterator;)V +HSPLorg/slf4j/LoggerFactory;->versionSanityCheck()V +Lorg/slf4j/helpers/BasicMDCAdapter; +HSPLorg/slf4j/helpers/BasicMDCAdapter;->()V +Lorg/slf4j/helpers/BasicMDCAdapter$1; +HSPLorg/slf4j/helpers/BasicMDCAdapter$1;->(Lorg/slf4j/helpers/BasicMDCAdapter;)V +Lorg/slf4j/helpers/BasicMarkerFactory; +HSPLorg/slf4j/helpers/BasicMarkerFactory;->()V +Lorg/slf4j/helpers/NOPLoggerFactory; +HSPLorg/slf4j/helpers/NOPLoggerFactory;->()V +Lorg/slf4j/helpers/NOPMDCAdapter; +HSPLorg/slf4j/helpers/NOPMDCAdapter;->()V +Lorg/slf4j/helpers/NOP_FallbackServiceProvider; +HSPLorg/slf4j/helpers/NOP_FallbackServiceProvider;->()V +HSPLorg/slf4j/helpers/NOP_FallbackServiceProvider;->()V +Lorg/slf4j/helpers/SubstituteLoggerFactory; +HSPLorg/slf4j/helpers/SubstituteLoggerFactory;->()V +HSPLorg/slf4j/helpers/SubstituteLoggerFactory;->clear()V +HSPLorg/slf4j/helpers/SubstituteLoggerFactory;->getEventQueue()Ljava/util/concurrent/LinkedBlockingQueue; +HSPLorg/slf4j/helpers/SubstituteLoggerFactory;->getLoggers()Ljava/util/List; +HSPLorg/slf4j/helpers/SubstituteLoggerFactory;->postInitialization()V +Lorg/slf4j/helpers/SubstituteServiceProvider; +HSPLorg/slf4j/helpers/SubstituteServiceProvider;->()V +HSPLorg/slf4j/helpers/SubstituteServiceProvider;->getSubstituteLoggerFactory()Lorg/slf4j/helpers/SubstituteLoggerFactory; +Lorg/slf4j/helpers/ThreadLocalMapOfStacks; +HSPLorg/slf4j/helpers/ThreadLocalMapOfStacks;->()V +Lorg/slf4j/helpers/Util; +HSPLorg/slf4j/helpers/Util;->()V +HSPLorg/slf4j/helpers/Util;->safeGetBooleanSystemProperty(Ljava/lang/String;)Z +HSPLorg/slf4j/helpers/Util;->safeGetSystemProperty(Ljava/lang/String;)Ljava/lang/String; +Lorg/slf4j/impl/LoggerServiceProvider; +HSPLorg/slf4j/impl/LoggerServiceProvider;->()V +HSPLorg/slf4j/impl/LoggerServiceProvider;->()V +HSPLorg/slf4j/impl/LoggerServiceProvider;->getLoggerFactory()Lorg/slf4j/ILoggerFactory; +HSPLorg/slf4j/impl/LoggerServiceProvider;->getRequestedApiVersion()Ljava/lang/String; +HSPLorg/slf4j/impl/LoggerServiceProvider;->initialize()V +HSPLorg/slf4j/impl/LoggerServiceProvider;->initializeLoggerContext()V +Lorg/slf4j/spi/LocationAwareLogger; +Lorg/slf4j/spi/MDCAdapter; +Lorg/slf4j/spi/SLF4JServiceProvider; \ No newline at end of file diff --git a/androidApp/src/playStoreRelease/generated/baselineProfiles/baseline-prof.txt b/androidApp/src/playStoreRelease/generated/baselineProfiles/baseline-prof.txt new file mode 100644 index 00000000..2aa693fb --- /dev/null +++ b/androidApp/src/playStoreRelease/generated/baselineProfiles/baseline-prof.txt @@ -0,0 +1,43760 @@ +L_COROUTINE/ArtificialStackFrames; +HSPL_COROUTINE/ArtificialStackFrames;->()V +HSPL_COROUTINE/ArtificialStackFrames;->coroutineBoundary()Ljava/lang/StackTraceElement; +L_COROUTINE/CoroutineDebuggingKt; +HSPL_COROUTINE/CoroutineDebuggingKt;->()V +HSPL_COROUTINE/CoroutineDebuggingKt;->access$artificialFrame(Ljava/lang/Throwable;Ljava/lang/String;)Ljava/lang/StackTraceElement; +HSPL_COROUTINE/CoroutineDebuggingKt;->artificialFrame(Ljava/lang/Throwable;Ljava/lang/String;)Ljava/lang/StackTraceElement; +L_COROUTINE/_BOUNDARY; +Landroidx/activity/Cancellable; +Landroidx/activity/ComponentActivity; +HSPLandroidx/activity/ComponentActivity;->()V +HSPLandroidx/activity/ComponentActivity;->access$100(Landroidx/activity/ComponentActivity;)Landroidx/activity/OnBackPressedDispatcher; +HSPLandroidx/activity/ComponentActivity;->addMenuProvider(Landroidx/core/view/MenuProvider;)V +HSPLandroidx/activity/ComponentActivity;->addOnConfigurationChangedListener(Landroidx/core/util/Consumer;)V +HSPLandroidx/activity/ComponentActivity;->addOnContextAvailableListener(Landroidx/activity/contextaware/OnContextAvailableListener;)V +HSPLandroidx/activity/ComponentActivity;->addOnMultiWindowModeChangedListener(Landroidx/core/util/Consumer;)V +HSPLandroidx/activity/ComponentActivity;->addOnNewIntentListener(Landroidx/core/util/Consumer;)V +HSPLandroidx/activity/ComponentActivity;->addOnPictureInPictureModeChangedListener(Landroidx/core/util/Consumer;)V +HSPLandroidx/activity/ComponentActivity;->addOnTrimMemoryListener(Landroidx/core/util/Consumer;)V +HSPLandroidx/activity/ComponentActivity;->createFullyDrawnExecutor()Landroidx/activity/ComponentActivity$ReportFullyDrawnExecutor; +HSPLandroidx/activity/ComponentActivity;->ensureViewModelStore()V +HSPLandroidx/activity/ComponentActivity;->getActivityResultRegistry()Landroidx/activity/result/ActivityResultRegistry; +HSPLandroidx/activity/ComponentActivity;->getDefaultViewModelCreationExtras()Landroidx/lifecycle/viewmodel/CreationExtras; +HSPLandroidx/activity/ComponentActivity;->getLifecycle()Landroidx/lifecycle/Lifecycle; +HSPLandroidx/activity/ComponentActivity;->getOnBackPressedDispatcher()Landroidx/activity/OnBackPressedDispatcher; +HSPLandroidx/activity/ComponentActivity;->getSavedStateRegistry()Landroidx/savedstate/SavedStateRegistry; +HSPLandroidx/activity/ComponentActivity;->getViewModelStore()Landroidx/lifecycle/ViewModelStore; +HSPLandroidx/activity/ComponentActivity;->invalidateMenu()V +HSPLandroidx/activity/ComponentActivity;->lambda$new$2$androidx-activity-ComponentActivity(Landroid/content/Context;)V +HSPLandroidx/activity/ComponentActivity;->onCreate(Landroid/os/Bundle;)V +Landroidx/activity/ComponentActivity$$ExternalSyntheticLambda0; +HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda0;->(Landroidx/activity/ComponentActivity;)V +HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda0;->run()V +Landroidx/activity/ComponentActivity$$ExternalSyntheticLambda1; +HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda1;->(Landroidx/activity/ComponentActivity;)V +Landroidx/activity/ComponentActivity$$ExternalSyntheticLambda2; +HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda2;->(Landroidx/activity/ComponentActivity;)V +Landroidx/activity/ComponentActivity$$ExternalSyntheticLambda3; +HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda3;->(Landroidx/activity/ComponentActivity;)V +HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda3;->onContextAvailable(Landroid/content/Context;)V +Landroidx/activity/ComponentActivity$1; +HSPLandroidx/activity/ComponentActivity$1;->(Landroidx/activity/ComponentActivity;)V +Landroidx/activity/ComponentActivity$2; +HSPLandroidx/activity/ComponentActivity$2;->(Landroidx/activity/ComponentActivity;)V +HSPLandroidx/activity/ComponentActivity$2;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +Landroidx/activity/ComponentActivity$3; +HSPLandroidx/activity/ComponentActivity$3;->(Landroidx/activity/ComponentActivity;)V +HSPLandroidx/activity/ComponentActivity$3;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +Landroidx/activity/ComponentActivity$4; +HSPLandroidx/activity/ComponentActivity$4;->(Landroidx/activity/ComponentActivity;)V +HSPLandroidx/activity/ComponentActivity$4;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +Landroidx/activity/ComponentActivity$5; +HSPLandroidx/activity/ComponentActivity$5;->(Landroidx/activity/ComponentActivity;)V +Landroidx/activity/ComponentActivity$6; +HSPLandroidx/activity/ComponentActivity$6;->(Landroidx/activity/ComponentActivity;)V +HSPLandroidx/activity/ComponentActivity$6;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +Landroidx/activity/ComponentActivity$Api33Impl; +HSPLandroidx/activity/ComponentActivity$Api33Impl;->getOnBackInvokedDispatcher(Landroid/app/Activity;)Landroid/window/OnBackInvokedDispatcher; +Landroidx/activity/ComponentActivity$NonConfigurationInstances; +Landroidx/activity/ComponentActivity$ReportFullyDrawnExecutor; +Landroidx/activity/ComponentActivity$ReportFullyDrawnExecutorApi16Impl; +HSPLandroidx/activity/ComponentActivity$ReportFullyDrawnExecutorApi16Impl;->(Landroidx/activity/ComponentActivity;)V +Landroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0; +HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/graphics/Insets;)I +HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/view/Window;Z)V +HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m$2(Landroid/graphics/Insets;)I +HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m$3(Landroid/graphics/Insets;)I +HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m$4()Landroid/graphics/BlendMode; +HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m$7()Landroid/graphics/BlendMode; +HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m$8()Landroid/graphics/BlendMode; +HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m()Landroid/graphics/BlendMode; +HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m(Landroid/app/Activity;)Landroid/window/OnBackInvokedDispatcher; +HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/Insets;)I +HSPLandroidx/activity/ComponentDialog$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/View;)Landroid/view/WindowInsetsController; +Landroidx/activity/FullyDrawnReporter; +HSPLandroidx/activity/FullyDrawnReporter;->(Ljava/util/concurrent/Executor;Lkotlin/jvm/functions/Function0;)V +Landroidx/activity/FullyDrawnReporter$$ExternalSyntheticLambda0; +HSPLandroidx/activity/FullyDrawnReporter$$ExternalSyntheticLambda0;->(Landroidx/activity/FullyDrawnReporter;)V +Landroidx/activity/FullyDrawnReporterOwner; +Landroidx/activity/OnBackPressedCallback; +HSPLandroidx/activity/OnBackPressedCallback;->(Z)V +HSPLandroidx/activity/OnBackPressedCallback;->addCancellable(Landroidx/activity/Cancellable;)V +HSPLandroidx/activity/OnBackPressedCallback;->isEnabled()Z +HSPLandroidx/activity/OnBackPressedCallback;->setEnabled(Z)V +HSPLandroidx/activity/OnBackPressedCallback;->setEnabledChangedCallback$activity_release(Lkotlin/jvm/functions/Function0;)V +Landroidx/activity/OnBackPressedDispatcher; +HSPLandroidx/activity/OnBackPressedDispatcher;->(Ljava/lang/Runnable;)V +HSPLandroidx/activity/OnBackPressedDispatcher;->(Ljava/lang/Runnable;Landroidx/core/util/Consumer;)V +HSPLandroidx/activity/OnBackPressedDispatcher;->access$updateEnabledCallbacks(Landroidx/activity/OnBackPressedDispatcher;)V +HSPLandroidx/activity/OnBackPressedDispatcher;->addCallback(Landroidx/activity/OnBackPressedCallback;)V +HSPLandroidx/activity/OnBackPressedDispatcher;->addCallback(Landroidx/lifecycle/LifecycleOwner;Landroidx/activity/OnBackPressedCallback;)V +HSPLandroidx/activity/OnBackPressedDispatcher;->addCancellableCallback$activity_release(Landroidx/activity/OnBackPressedCallback;)Landroidx/activity/Cancellable; +HSPLandroidx/activity/OnBackPressedDispatcher;->setOnBackInvokedDispatcher(Landroid/window/OnBackInvokedDispatcher;)V +HSPLandroidx/activity/OnBackPressedDispatcher;->updateBackInvokedCallbackState(Z)V +HSPLandroidx/activity/OnBackPressedDispatcher;->updateEnabledCallbacks()V +Landroidx/activity/OnBackPressedDispatcher$1; +HSPLandroidx/activity/OnBackPressedDispatcher$1;->(Landroidx/activity/OnBackPressedDispatcher;)V +Landroidx/activity/OnBackPressedDispatcher$2; +HSPLandroidx/activity/OnBackPressedDispatcher$2;->(Landroidx/activity/OnBackPressedDispatcher;)V +Landroidx/activity/OnBackPressedDispatcher$3; +HSPLandroidx/activity/OnBackPressedDispatcher$3;->(Landroidx/activity/OnBackPressedDispatcher;)V +Landroidx/activity/OnBackPressedDispatcher$4; +HSPLandroidx/activity/OnBackPressedDispatcher$4;->(Landroidx/activity/OnBackPressedDispatcher;)V +Landroidx/activity/OnBackPressedDispatcher$Api34Impl; +HSPLandroidx/activity/OnBackPressedDispatcher$Api34Impl;->()V +HSPLandroidx/activity/OnBackPressedDispatcher$Api34Impl;->()V +HSPLandroidx/activity/OnBackPressedDispatcher$Api34Impl;->createOnBackAnimationCallback(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)Landroid/window/OnBackInvokedCallback; +Landroidx/activity/OnBackPressedDispatcher$Api34Impl$createOnBackAnimationCallback$1; +HSPLandroidx/activity/OnBackPressedDispatcher$Api34Impl$createOnBackAnimationCallback$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)V +Landroidx/activity/OnBackPressedDispatcher$LifecycleOnBackPressedCancellable; +HSPLandroidx/activity/OnBackPressedDispatcher$LifecycleOnBackPressedCancellable;->(Landroidx/activity/OnBackPressedDispatcher;Landroidx/lifecycle/Lifecycle;Landroidx/activity/OnBackPressedCallback;)V +HSPLandroidx/activity/OnBackPressedDispatcher$LifecycleOnBackPressedCancellable;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +Landroidx/activity/OnBackPressedDispatcher$OnBackPressedCancellable; +HSPLandroidx/activity/OnBackPressedDispatcher$OnBackPressedCancellable;->(Landroidx/activity/OnBackPressedDispatcher;Landroidx/activity/OnBackPressedCallback;)V +Landroidx/activity/OnBackPressedDispatcher$addCallback$1; +HSPLandroidx/activity/OnBackPressedDispatcher$addCallback$1;->(Ljava/lang/Object;)V +HSPLandroidx/activity/OnBackPressedDispatcher$addCallback$1;->invoke()Ljava/lang/Object; +HSPLandroidx/activity/OnBackPressedDispatcher$addCallback$1;->invoke()V +Landroidx/activity/OnBackPressedDispatcher$addCancellableCallback$1; +HSPLandroidx/activity/OnBackPressedDispatcher$addCancellableCallback$1;->(Ljava/lang/Object;)V +HSPLandroidx/activity/OnBackPressedDispatcher$addCancellableCallback$1;->invoke()Ljava/lang/Object; +HSPLandroidx/activity/OnBackPressedDispatcher$addCancellableCallback$1;->invoke()V +Landroidx/activity/OnBackPressedDispatcherOwner; +Landroidx/activity/R$id; +Landroidx/activity/ViewTreeOnBackPressedDispatcherOwner; +HSPLandroidx/activity/ViewTreeOnBackPressedDispatcherOwner;->set(Landroid/view/View;Landroidx/activity/OnBackPressedDispatcherOwner;)V +Landroidx/activity/compose/ComponentActivityKt; +HSPLandroidx/activity/compose/ComponentActivityKt;->()V +HSPLandroidx/activity/compose/ComponentActivityKt;->setContent$default(Landroidx/activity/ComponentActivity;Landroidx/compose/runtime/CompositionContext;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)V +HSPLandroidx/activity/compose/ComponentActivityKt;->setContent(Landroidx/activity/ComponentActivity;Landroidx/compose/runtime/CompositionContext;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/activity/compose/ComponentActivityKt;->setOwners(Landroidx/activity/ComponentActivity;)V +Landroidx/activity/contextaware/ContextAware; +Landroidx/activity/contextaware/ContextAwareHelper; +HSPLandroidx/activity/contextaware/ContextAwareHelper;->()V +HSPLandroidx/activity/contextaware/ContextAwareHelper;->addOnContextAvailableListener(Landroidx/activity/contextaware/OnContextAvailableListener;)V +HSPLandroidx/activity/contextaware/ContextAwareHelper;->dispatchOnContextAvailable(Landroid/content/Context;)V +Landroidx/activity/contextaware/OnContextAvailableListener; +Landroidx/activity/result/ActivityResult; +Landroidx/activity/result/ActivityResultCallback; +Landroidx/activity/result/ActivityResultCaller; +Landroidx/activity/result/ActivityResultLauncher; +HSPLandroidx/activity/result/ActivityResultLauncher;->()V +Landroidx/activity/result/ActivityResultRegistry; +HSPLandroidx/activity/result/ActivityResultRegistry;->()V +HSPLandroidx/activity/result/ActivityResultRegistry;->bindRcKey(ILjava/lang/String;)V +HSPLandroidx/activity/result/ActivityResultRegistry;->generateRandomNumber()I +HSPLandroidx/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 +Landroidx/activity/result/ActivityResultRegistry$3; +HSPLandroidx/activity/result/ActivityResultRegistry$3;->(Landroidx/activity/result/ActivityResultRegistry;Ljava/lang/String;Landroidx/activity/result/contract/ActivityResultContract;)V +Landroidx/activity/result/ActivityResultRegistry$CallbackAndContract; +HSPLandroidx/activity/result/ActivityResultRegistry$CallbackAndContract;->(Landroidx/activity/result/ActivityResultCallback;Landroidx/activity/result/contract/ActivityResultContract;)V +Landroidx/activity/result/ActivityResultRegistryOwner; +Landroidx/activity/result/contract/ActivityResultContract; +HSPLandroidx/activity/result/contract/ActivityResultContract;->()V +Landroidx/activity/result/contract/ActivityResultContracts$RequestMultiplePermissions; +HSPLandroidx/activity/result/contract/ActivityResultContracts$RequestMultiplePermissions;->()V +HSPLandroidx/activity/result/contract/ActivityResultContracts$RequestMultiplePermissions;->()V +Landroidx/activity/result/contract/ActivityResultContracts$RequestMultiplePermissions$Companion; +HSPLandroidx/activity/result/contract/ActivityResultContracts$RequestMultiplePermissions$Companion;->()V +HSPLandroidx/activity/result/contract/ActivityResultContracts$RequestMultiplePermissions$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/activity/result/contract/ActivityResultContracts$StartActivityForResult; +HSPLandroidx/activity/result/contract/ActivityResultContracts$StartActivityForResult;->()V +HSPLandroidx/activity/result/contract/ActivityResultContracts$StartActivityForResult;->()V +Landroidx/activity/result/contract/ActivityResultContracts$StartActivityForResult$Companion; +HSPLandroidx/activity/result/contract/ActivityResultContracts$StartActivityForResult$Companion;->()V +HSPLandroidx/activity/result/contract/ActivityResultContracts$StartActivityForResult$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/appcompat/R$drawable; +Landroidx/appcompat/R$id; +Landroidx/appcompat/R$layout; +Landroidx/appcompat/R$style; +Landroidx/appcompat/R$styleable; +HSPLandroidx/appcompat/R$styleable;->()V +Landroidx/appcompat/app/ActionBarDrawerToggle$DelegateProvider; +Landroidx/appcompat/app/AppCompatActivity; +HSPLandroidx/appcompat/app/AppCompatActivity;->()V +HSPLandroidx/appcompat/app/AppCompatActivity;->attachBaseContext(Landroid/content/Context;)V +HSPLandroidx/appcompat/app/AppCompatActivity;->getDelegate()Landroidx/appcompat/app/AppCompatDelegate; +HSPLandroidx/appcompat/app/AppCompatActivity;->getResources()Landroid/content/res/Resources; +HSPLandroidx/appcompat/app/AppCompatActivity;->initDelegate()V +HSPLandroidx/appcompat/app/AppCompatActivity;->initViewTreeOwners()V +HSPLandroidx/appcompat/app/AppCompatActivity;->invalidateOptionsMenu()V +HSPLandroidx/appcompat/app/AppCompatActivity;->onContentChanged()V +HSPLandroidx/appcompat/app/AppCompatActivity;->onPostCreate(Landroid/os/Bundle;)V +HSPLandroidx/appcompat/app/AppCompatActivity;->onPostResume()V +HSPLandroidx/appcompat/app/AppCompatActivity;->onStart()V +HSPLandroidx/appcompat/app/AppCompatActivity;->onSupportContentChanged()V +HSPLandroidx/appcompat/app/AppCompatActivity;->onTitleChanged(Ljava/lang/CharSequence;I)V +HSPLandroidx/appcompat/app/AppCompatActivity;->setContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V +HSPLandroidx/appcompat/app/AppCompatActivity;->setTheme(I)V +Landroidx/appcompat/app/AppCompatActivity$1; +HSPLandroidx/appcompat/app/AppCompatActivity$1;->(Landroidx/appcompat/app/AppCompatActivity;)V +Landroidx/appcompat/app/AppCompatActivity$2; +HSPLandroidx/appcompat/app/AppCompatActivity$2;->(Landroidx/appcompat/app/AppCompatActivity;)V +HSPLandroidx/appcompat/app/AppCompatActivity$2;->onContextAvailable(Landroid/content/Context;)V +Landroidx/appcompat/app/AppCompatCallback; +Landroidx/appcompat/app/AppCompatDelegate; +HSPLandroidx/appcompat/app/AppCompatDelegate;->()V +HSPLandroidx/appcompat/app/AppCompatDelegate;->()V +HSPLandroidx/appcompat/app/AppCompatDelegate;->addActiveDelegate(Landroidx/appcompat/app/AppCompatDelegate;)V +HSPLandroidx/appcompat/app/AppCompatDelegate;->attachBaseContext(Landroid/content/Context;)V +HSPLandroidx/appcompat/app/AppCompatDelegate;->attachBaseContext2(Landroid/content/Context;)Landroid/content/Context; +HSPLandroidx/appcompat/app/AppCompatDelegate;->create(Landroid/app/Activity;Landroidx/appcompat/app/AppCompatCallback;)Landroidx/appcompat/app/AppCompatDelegate; +HSPLandroidx/appcompat/app/AppCompatDelegate;->getApplicationLocales()Landroidx/core/os/LocaleListCompat; +HSPLandroidx/appcompat/app/AppCompatDelegate;->getDefaultNightMode()I +HSPLandroidx/appcompat/app/AppCompatDelegate;->getLocaleManagerForApplication()Ljava/lang/Object; +HSPLandroidx/appcompat/app/AppCompatDelegate;->isAutoStorageOptedIn(Landroid/content/Context;)Z +HSPLandroidx/appcompat/app/AppCompatDelegate;->lambda$syncRequestedAndStoredLocales$1(Landroid/content/Context;)V +HSPLandroidx/appcompat/app/AppCompatDelegate;->removeDelegateFromActives(Landroidx/appcompat/app/AppCompatDelegate;)V +HSPLandroidx/appcompat/app/AppCompatDelegate;->setOnBackInvokedDispatcher(Landroid/window/OnBackInvokedDispatcher;)V +HSPLandroidx/appcompat/app/AppCompatDelegate;->syncLocalesToFramework(Landroid/content/Context;)V +HSPLandroidx/appcompat/app/AppCompatDelegate;->syncRequestedAndStoredLocales(Landroid/content/Context;)V +Landroidx/appcompat/app/AppCompatDelegate$$ExternalSyntheticLambda1; +HSPLandroidx/appcompat/app/AppCompatDelegate$$ExternalSyntheticLambda1;->(Landroid/content/Context;)V +HSPLandroidx/appcompat/app/AppCompatDelegate$$ExternalSyntheticLambda1;->run()V +Landroidx/appcompat/app/AppCompatDelegate$Api24Impl; +HSPLandroidx/appcompat/app/AppCompatDelegate$Api24Impl;->localeListForLanguageTags(Ljava/lang/String;)Landroid/os/LocaleList; +Landroidx/appcompat/app/AppCompatDelegate$Api33Impl; +HSPLandroidx/appcompat/app/AppCompatDelegate$Api33Impl;->localeManagerSetApplicationLocales(Ljava/lang/Object;Landroid/os/LocaleList;)V +Landroidx/appcompat/app/AppCompatDelegate$SerialExecutor; +HSPLandroidx/appcompat/app/AppCompatDelegate$SerialExecutor;->(Ljava/util/concurrent/Executor;)V +HSPLandroidx/appcompat/app/AppCompatDelegate$SerialExecutor;->execute(Ljava/lang/Runnable;)V +HSPLandroidx/appcompat/app/AppCompatDelegate$SerialExecutor;->lambda$execute$0$androidx-appcompat-app-AppCompatDelegate$SerialExecutor(Ljava/lang/Runnable;)V +HSPLandroidx/appcompat/app/AppCompatDelegate$SerialExecutor;->scheduleNext()V +Landroidx/appcompat/app/AppCompatDelegate$SerialExecutor$$ExternalSyntheticLambda0; +HSPLandroidx/appcompat/app/AppCompatDelegate$SerialExecutor$$ExternalSyntheticLambda0;->(Landroidx/appcompat/app/AppCompatDelegate$SerialExecutor;Ljava/lang/Runnable;)V +HSPLandroidx/appcompat/app/AppCompatDelegate$SerialExecutor$$ExternalSyntheticLambda0;->run()V +Landroidx/appcompat/app/AppCompatDelegate$ThreadPerTaskExecutor; +HSPLandroidx/appcompat/app/AppCompatDelegate$ThreadPerTaskExecutor;->()V +HSPLandroidx/appcompat/app/AppCompatDelegate$ThreadPerTaskExecutor;->execute(Ljava/lang/Runnable;)V +Landroidx/appcompat/app/AppCompatDelegateImpl; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->(Landroid/app/Activity;Landroidx/appcompat/app/AppCompatCallback;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->(Landroid/content/Context;Landroid/view/Window;Landroidx/appcompat/app/AppCompatCallback;Ljava/lang/Object;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->applyApplicationSpecificConfig(Z)Z +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->applyApplicationSpecificConfig(ZZ)Z +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->applyFixedSizeWindow()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->attachBaseContext2(Landroid/content/Context;)Landroid/content/Context; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->attachToWindow(Landroid/view/Window;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->calculateApplicationLocales(Landroid/content/Context;)Landroidx/core/os/LocaleListCompat; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->calculateNightMode()I +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->createOverrideAppConfiguration(Landroid/content/Context;ILandroidx/core/os/LocaleListCompat;Landroid/content/res/Configuration;Z)Landroid/content/res/Configuration; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->createSubDecor()Landroid/view/ViewGroup; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->createView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->doInvalidatePanelMenu(I)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->ensureSubDecor()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->ensureWindow()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->getActivityHandlesConfigChangesFlags(Landroid/content/Context;)I +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->getConfigurationLocales(Landroid/content/res/Configuration;)Landroidx/core/os/LocaleListCompat; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->getPanelState(IZ)Landroidx/appcompat/app/AppCompatDelegateImpl$PanelFeatureState; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->getSupportActionBar()Landroidx/appcompat/app/ActionBar; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->getTitle()Ljava/lang/CharSequence; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->initWindowDecorActionBar()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->installViewFactory()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->invalidateOptionsMenu()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->invalidatePanelMenu(I)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->mapNightMode(Landroid/content/Context;I)I +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->onCreate(Landroid/os/Bundle;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->onPostCreate(Landroid/os/Bundle;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->onPostResume()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->onStart()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->onSubDecorInstalled(Landroid/view/ViewGroup;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->peekSupportActionBar()Landroidx/appcompat/app/ActionBar; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->requestWindowFeature(I)Z +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->sanitizeWindowFeatureId(I)I +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->setContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->setOnBackInvokedDispatcher(Landroid/window/OnBackInvokedDispatcher;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->setTheme(I)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->setTitle(Ljava/lang/CharSequence;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->shouldRegisterBackInvokedCallback()Z +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->throwFeatureRequestIfSubDecorInstalled()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->updateAppConfiguration(ILandroidx/core/os/LocaleListCompat;Z)Z +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->updateBackInvokedCallbackState()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->updateStatusGuard(Landroidx/core/view/WindowInsetsCompat;Landroid/graphics/Rect;)I +Landroidx/appcompat/app/AppCompatDelegateImpl$2; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$2;->(Landroidx/appcompat/app/AppCompatDelegateImpl;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$2;->run()V +Landroidx/appcompat/app/AppCompatDelegateImpl$3; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$3;->(Landroidx/appcompat/app/AppCompatDelegateImpl;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$3;->onApplyWindowInsets(Landroid/view/View;Landroidx/core/view/WindowInsetsCompat;)Landroidx/core/view/WindowInsetsCompat; +Landroidx/appcompat/app/AppCompatDelegateImpl$5; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$5;->(Landroidx/appcompat/app/AppCompatDelegateImpl;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$5;->onAttachedFromWindow()V +Landroidx/appcompat/app/AppCompatDelegateImpl$Api17Impl; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$Api17Impl;->createConfigurationContext(Landroid/content/Context;Landroid/content/res/Configuration;)Landroid/content/Context; +Landroidx/appcompat/app/AppCompatDelegateImpl$Api24Impl; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$Api24Impl;->getLocales(Landroid/content/res/Configuration;)Landroidx/core/os/LocaleListCompat; +Landroidx/appcompat/app/AppCompatDelegateImpl$Api33Impl; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$Api33Impl;->getOnBackInvokedDispatcher(Landroid/app/Activity;)Landroid/window/OnBackInvokedDispatcher; +Landroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback;->(Landroidx/appcompat/app/AppCompatDelegateImpl;Landroid/view/Window$Callback;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback;->bypassOnContentChanged(Landroid/view/Window$Callback;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback;->onContentChanged()V +Landroidx/appcompat/app/AppCompatDelegateImpl$PanelFeatureState; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$PanelFeatureState;->(I)V +Landroidx/appcompat/app/AppCompatViewInflater; +HSPLandroidx/appcompat/app/AppCompatViewInflater;->()V +HSPLandroidx/appcompat/app/AppCompatViewInflater;->()V +HSPLandroidx/appcompat/app/AppCompatViewInflater;->createView(Landroid/content/Context;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLandroidx/appcompat/app/AppCompatViewInflater;->createView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;ZZZZ)Landroid/view/View; +HSPLandroidx/appcompat/app/AppCompatViewInflater;->themifyContext(Landroid/content/Context;Landroid/util/AttributeSet;ZZ)Landroid/content/Context; +Landroidx/appcompat/app/AppLocalesMetadataHolderService; +HSPLandroidx/appcompat/app/AppLocalesMetadataHolderService;->getServiceInfo(Landroid/content/Context;)Landroid/content/pm/ServiceInfo; +Landroidx/appcompat/app/AppLocalesMetadataHolderService$Api24Impl; +HSPLandroidx/appcompat/app/AppLocalesMetadataHolderService$Api24Impl;->getDisabledComponentFlag()I +Landroidx/appcompat/resources/R$drawable; +Landroidx/appcompat/view/ContextThemeWrapper; +HSPLandroidx/appcompat/view/ContextThemeWrapper;->(Landroid/content/Context;I)V +HSPLandroidx/appcompat/view/ContextThemeWrapper;->applyOverrideConfiguration(Landroid/content/res/Configuration;)V +HSPLandroidx/appcompat/view/ContextThemeWrapper;->getResources()Landroid/content/res/Resources; +HSPLandroidx/appcompat/view/ContextThemeWrapper;->getResourcesInternal()Landroid/content/res/Resources; +HSPLandroidx/appcompat/view/ContextThemeWrapper;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; +HSPLandroidx/appcompat/view/ContextThemeWrapper;->getTheme()Landroid/content/res/Resources$Theme; +HSPLandroidx/appcompat/view/ContextThemeWrapper;->initializeTheme()V +HSPLandroidx/appcompat/view/ContextThemeWrapper;->isEmptyConfiguration(Landroid/content/res/Configuration;)Z +HSPLandroidx/appcompat/view/ContextThemeWrapper;->onApplyThemeResource(Landroid/content/res/Resources$Theme;IZ)V +Landroidx/appcompat/view/WindowCallbackWrapper; +HSPLandroidx/appcompat/view/WindowCallbackWrapper;->(Landroid/view/Window$Callback;)V +HSPLandroidx/appcompat/view/WindowCallbackWrapper;->dispatchPopulateAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)Z +HSPLandroidx/appcompat/view/WindowCallbackWrapper;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z +HSPLandroidx/appcompat/view/WindowCallbackWrapper;->getWrapped()Landroid/view/Window$Callback; +HSPLandroidx/appcompat/view/WindowCallbackWrapper;->onAttachedToWindow()V +HSPLandroidx/appcompat/view/WindowCallbackWrapper;->onWindowAttributesChanged(Landroid/view/WindowManager$LayoutParams;)V +HSPLandroidx/appcompat/view/WindowCallbackWrapper;->onWindowFocusChanged(Z)V +Landroidx/appcompat/view/menu/MenuBuilder$Callback; +Landroidx/appcompat/widget/AppCompatDrawableManager; +HSPLandroidx/appcompat/widget/AppCompatDrawableManager;->()V +HSPLandroidx/appcompat/widget/AppCompatDrawableManager;->()V +HSPLandroidx/appcompat/widget/AppCompatDrawableManager;->access$000()Landroid/graphics/PorterDuff$Mode; +HSPLandroidx/appcompat/widget/AppCompatDrawableManager;->get()Landroidx/appcompat/widget/AppCompatDrawableManager; +HSPLandroidx/appcompat/widget/AppCompatDrawableManager;->getDrawable(Landroid/content/Context;IZ)Landroid/graphics/drawable/Drawable; +HSPLandroidx/appcompat/widget/AppCompatDrawableManager;->preload()V +Landroidx/appcompat/widget/AppCompatDrawableManager$1; +HSPLandroidx/appcompat/widget/AppCompatDrawableManager$1;->()V +HSPLandroidx/appcompat/widget/AppCompatDrawableManager$1;->arrayContains([II)Z +HSPLandroidx/appcompat/widget/AppCompatDrawableManager$1;->createDrawableFor(Landroidx/appcompat/widget/ResourceManagerInternal;Landroid/content/Context;I)Landroid/graphics/drawable/Drawable; +HSPLandroidx/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 +HSPLandroidx/appcompat/widget/AppCompatDrawableManager$1;->tintDrawableUsingColorFilter(Landroid/content/Context;ILandroid/graphics/drawable/Drawable;)Z +Landroidx/appcompat/widget/ContentFrameLayout; +HSPLandroidx/appcompat/widget/ContentFrameLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroidx/appcompat/widget/ContentFrameLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroidx/appcompat/widget/ContentFrameLayout;->getMinWidthMajor()Landroid/util/TypedValue; +HSPLandroidx/appcompat/widget/ContentFrameLayout;->getMinWidthMinor()Landroid/util/TypedValue; +HSPLandroidx/appcompat/widget/ContentFrameLayout;->onAttachedToWindow()V +HSPLandroidx/appcompat/widget/ContentFrameLayout;->onMeasure(II)V +HSPLandroidx/appcompat/widget/ContentFrameLayout;->setAttachListener(Landroidx/appcompat/widget/ContentFrameLayout$OnAttachListener;)V +HSPLandroidx/appcompat/widget/ContentFrameLayout;->setDecorPadding(IIII)V +Landroidx/appcompat/widget/ContentFrameLayout$OnAttachListener; +Landroidx/appcompat/widget/DrawableUtils; +HSPLandroidx/appcompat/widget/DrawableUtils;->()V +HSPLandroidx/appcompat/widget/DrawableUtils;->fixDrawable(Landroid/graphics/drawable/Drawable;)V +Landroidx/appcompat/widget/FitWindowsLinearLayout; +HSPLandroidx/appcompat/widget/FitWindowsLinearLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroidx/appcompat/widget/FitWindowsLinearLayout;->fitSystemWindows(Landroid/graphics/Rect;)Z +Landroidx/appcompat/widget/FitWindowsViewGroup; +Landroidx/appcompat/widget/ResourceManagerInternal; +HSPLandroidx/appcompat/widget/ResourceManagerInternal;->()V +HSPLandroidx/appcompat/widget/ResourceManagerInternal;->()V +HSPLandroidx/appcompat/widget/ResourceManagerInternal;->checkVectorDrawableSetup(Landroid/content/Context;)V +HSPLandroidx/appcompat/widget/ResourceManagerInternal;->createCacheKey(Landroid/util/TypedValue;)J +HSPLandroidx/appcompat/widget/ResourceManagerInternal;->createDrawableIfNeeded(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable; +HSPLandroidx/appcompat/widget/ResourceManagerInternal;->get()Landroidx/appcompat/widget/ResourceManagerInternal; +HSPLandroidx/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; +HSPLandroidx/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; +HSPLandroidx/appcompat/widget/ResourceManagerInternal;->getTintListFromCache(Landroid/content/Context;I)Landroid/content/res/ColorStateList; +HSPLandroidx/appcompat/widget/ResourceManagerInternal;->installDefaultInflateDelegates(Landroidx/appcompat/widget/ResourceManagerInternal;)V +HSPLandroidx/appcompat/widget/ResourceManagerInternal;->isVectorDrawable(Landroid/graphics/drawable/Drawable;)Z +HSPLandroidx/appcompat/widget/ResourceManagerInternal;->loadDrawableFromDelegates(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable; +HSPLandroidx/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; +HSPLandroidx/appcompat/widget/ResourceManagerInternal;->tintDrawableUsingColorFilter(Landroid/content/Context;ILandroid/graphics/drawable/Drawable;)Z +Landroidx/appcompat/widget/ResourceManagerInternal$ColorFilterLruCache; +HSPLandroidx/appcompat/widget/ResourceManagerInternal$ColorFilterLruCache;->(I)V +Landroidx/appcompat/widget/ResourceManagerInternal$ResourceManagerHooks; +Landroidx/appcompat/widget/ResourcesWrapper; +Landroidx/appcompat/widget/TintTypedArray; +HSPLandroidx/appcompat/widget/TintTypedArray;->(Landroid/content/Context;Landroid/content/res/TypedArray;)V +HSPLandroidx/appcompat/widget/TintTypedArray;->getDrawableIfKnown(I)Landroid/graphics/drawable/Drawable; +HSPLandroidx/appcompat/widget/TintTypedArray;->obtainStyledAttributes(Landroid/content/Context;Landroid/util/AttributeSet;[I)Landroidx/appcompat/widget/TintTypedArray; +HSPLandroidx/appcompat/widget/TintTypedArray;->recycle()V +Landroidx/appcompat/widget/VectorEnabledTintResources; +HSPLandroidx/appcompat/widget/VectorEnabledTintResources;->()V +HSPLandroidx/appcompat/widget/VectorEnabledTintResources;->isCompatVectorFromResourcesEnabled()Z +HSPLandroidx/appcompat/widget/VectorEnabledTintResources;->shouldBeUsed()Z +Landroidx/appcompat/widget/ViewStubCompat; +HSPLandroidx/appcompat/widget/ViewStubCompat;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroidx/appcompat/widget/ViewStubCompat;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroidx/appcompat/widget/ViewStubCompat;->setVisibility(I)V +Landroidx/appcompat/widget/ViewUtils; +HSPLandroidx/appcompat/widget/ViewUtils;->()V +HSPLandroidx/appcompat/widget/ViewUtils;->makeOptionalFitsSystemWindows(Landroid/view/View;)V +Landroidx/arch/core/executor/ArchTaskExecutor; +HSPLandroidx/arch/core/executor/ArchTaskExecutor;->()V +HSPLandroidx/arch/core/executor/ArchTaskExecutor;->()V +HSPLandroidx/arch/core/executor/ArchTaskExecutor;->executeOnDiskIO(Ljava/lang/Runnable;)V +HSPLandroidx/arch/core/executor/ArchTaskExecutor;->getIOThreadExecutor()Ljava/util/concurrent/Executor; +HSPLandroidx/arch/core/executor/ArchTaskExecutor;->getInstance()Landroidx/arch/core/executor/ArchTaskExecutor; +HSPLandroidx/arch/core/executor/ArchTaskExecutor;->isMainThread()Z +HSPLandroidx/arch/core/executor/ArchTaskExecutor;->lambda$static$1(Ljava/lang/Runnable;)V +HSPLandroidx/arch/core/executor/ArchTaskExecutor;->postToMainThread(Ljava/lang/Runnable;)V +Landroidx/arch/core/executor/ArchTaskExecutor$$ExternalSyntheticLambda0; +HSPLandroidx/arch/core/executor/ArchTaskExecutor$$ExternalSyntheticLambda0;->()V +Landroidx/arch/core/executor/ArchTaskExecutor$$ExternalSyntheticLambda1; +HSPLandroidx/arch/core/executor/ArchTaskExecutor$$ExternalSyntheticLambda1;->()V +HSPLandroidx/arch/core/executor/ArchTaskExecutor$$ExternalSyntheticLambda1;->execute(Ljava/lang/Runnable;)V +Landroidx/arch/core/executor/DefaultTaskExecutor; +HSPLandroidx/arch/core/executor/DefaultTaskExecutor;->()V +HSPLandroidx/arch/core/executor/DefaultTaskExecutor;->createAsync(Landroid/os/Looper;)Landroid/os/Handler; +HSPLandroidx/arch/core/executor/DefaultTaskExecutor;->executeOnDiskIO(Ljava/lang/Runnable;)V +HSPLandroidx/arch/core/executor/DefaultTaskExecutor;->isMainThread()Z +HSPLandroidx/arch/core/executor/DefaultTaskExecutor;->postToMainThread(Ljava/lang/Runnable;)V +Landroidx/arch/core/executor/DefaultTaskExecutor$1; +HSPLandroidx/arch/core/executor/DefaultTaskExecutor$1;->(Landroidx/arch/core/executor/DefaultTaskExecutor;)V +HSPLandroidx/arch/core/executor/DefaultTaskExecutor$1;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread; +Landroidx/arch/core/executor/DefaultTaskExecutor$Api28Impl; +HSPLandroidx/arch/core/executor/DefaultTaskExecutor$Api28Impl;->createAsync(Landroid/os/Looper;)Landroid/os/Handler; +Landroidx/arch/core/executor/TaskExecutor; +HSPLandroidx/arch/core/executor/TaskExecutor;->()V +Landroidx/arch/core/internal/FastSafeIterableMap; +HSPLandroidx/arch/core/internal/FastSafeIterableMap;->()V +HSPLandroidx/arch/core/internal/FastSafeIterableMap;->ceil(Ljava/lang/Object;)Ljava/util/Map$Entry; +HSPLandroidx/arch/core/internal/FastSafeIterableMap;->contains(Ljava/lang/Object;)Z +HSPLandroidx/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; +HSPLandroidx/arch/core/internal/FastSafeIterableMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/arch/core/internal/SafeIterableMap; +HSPLandroidx/arch/core/internal/SafeIterableMap;->()V +HSPLandroidx/arch/core/internal/SafeIterableMap;->eldest()Ljava/util/Map$Entry; +HSPLandroidx/arch/core/internal/SafeIterableMap;->get(Ljava/lang/Object;)Landroidx/arch/core/internal/SafeIterableMap$Entry; +HSPLandroidx/arch/core/internal/SafeIterableMap;->iterator()Ljava/util/Iterator; +HSPLandroidx/arch/core/internal/SafeIterableMap;->iteratorWithAdditions()Landroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions; +HSPLandroidx/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; +HSPLandroidx/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; +HSPLandroidx/arch/core/internal/SafeIterableMap;->size()I +Landroidx/arch/core/internal/SafeIterableMap$AscendingIterator; +HSPLandroidx/arch/core/internal/SafeIterableMap$AscendingIterator;->(Landroidx/arch/core/internal/SafeIterableMap$Entry;Landroidx/arch/core/internal/SafeIterableMap$Entry;)V +Landroidx/arch/core/internal/SafeIterableMap$Entry; +HSPLandroidx/arch/core/internal/SafeIterableMap$Entry;->(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLandroidx/arch/core/internal/SafeIterableMap$Entry;->getKey()Ljava/lang/Object; +HSPLandroidx/arch/core/internal/SafeIterableMap$Entry;->getValue()Ljava/lang/Object; +Landroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions; +HSPLandroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;->(Landroidx/arch/core/internal/SafeIterableMap;)V +HSPLandroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;->hasNext()Z +HSPLandroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;->next()Ljava/lang/Object; +HSPLandroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;->next()Ljava/util/Map$Entry; +HSPLandroidx/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;->(Landroidx/arch/core/internal/SafeIterableMap$Entry;Landroidx/arch/core/internal/SafeIterableMap$Entry;)V +HSPLandroidx/arch/core/internal/SafeIterableMap$ListIterator;->hasNext()Z +Landroidx/arch/core/internal/SafeIterableMap$SupportRemove; +HSPLandroidx/arch/core/internal/SafeIterableMap$SupportRemove;->()V +Landroidx/arch/core/util/Function; +Landroidx/biometric/BiometricManager; +HSPLandroidx/biometric/BiometricManager;->(Landroidx/biometric/BiometricManager$Injector;)V +HSPLandroidx/biometric/BiometricManager;->canAuthenticate(I)I +HSPLandroidx/biometric/BiometricManager;->from(Landroid/content/Context;)Landroidx/biometric/BiometricManager; +Landroidx/biometric/BiometricManager$Api29Impl; +HSPLandroidx/biometric/BiometricManager$Api29Impl;->create(Landroid/content/Context;)Landroid/hardware/biometrics/BiometricManager; +Landroidx/biometric/BiometricManager$Api30Impl; +HSPLandroidx/biometric/BiometricManager$Api30Impl;->canAuthenticate(Landroid/hardware/biometrics/BiometricManager;I)I +Landroidx/biometric/BiometricManager$DefaultInjector; +HSPLandroidx/biometric/BiometricManager$DefaultInjector;->(Landroid/content/Context;)V +HSPLandroidx/biometric/BiometricManager$DefaultInjector;->getBiometricManager()Landroid/hardware/biometrics/BiometricManager; +Landroidx/biometric/BiometricManager$Injector; +PLandroidx/biometric/auth/Class2BiometricAuthExtensionsKt$$ExternalSyntheticLambda0;->()V +Landroidx/camera/view/PreviewView$1$$ExternalSyntheticBackportWithForwarding0; +HSPLandroidx/camera/view/PreviewView$1$$ExternalSyntheticBackportWithForwarding0;->m(Ljava/util/concurrent/atomic/AtomicReference;Ljava/lang/Object;Ljava/lang/Object;)Z +Landroidx/collection/ArrayMap; +HSPLandroidx/collection/ArrayMap;->()V +HSPLandroidx/collection/ArrayMap;->keySet()Ljava/util/Set; +HSPLandroidx/collection/ArrayMap;->values()Ljava/util/Collection; +Landroidx/collection/ArrayMap$KeyIterator; +HSPLandroidx/collection/ArrayMap$KeyIterator;->(Landroidx/collection/ArrayMap;)V +Landroidx/collection/ArrayMap$KeySet; +HSPLandroidx/collection/ArrayMap$KeySet;->(Landroidx/collection/ArrayMap;)V +HSPLandroidx/collection/ArrayMap$KeySet;->iterator()Ljava/util/Iterator; +Landroidx/collection/ArrayMap$ValueCollection; +HSPLandroidx/collection/ArrayMap$ValueCollection;->(Landroidx/collection/ArrayMap;)V +HSPLandroidx/collection/ArrayMap$ValueCollection;->iterator()Ljava/util/Iterator; +Landroidx/collection/ArrayMap$ValueIterator; +HSPLandroidx/collection/ArrayMap$ValueIterator;->(Landroidx/collection/ArrayMap;)V +Landroidx/collection/ArraySet; +HSPLandroidx/collection/ArraySet;->()V +HSPLandroidx/collection/ArraySet;->()V +HSPLandroidx/collection/ArraySet;->(I)V +HSPLandroidx/collection/ArraySet;->add(Ljava/lang/Object;)Z +HSPLandroidx/collection/ArraySet;->allocArrays(I)V +HSPLandroidx/collection/ArraySet;->clear()V +HSPLandroidx/collection/ArraySet;->freeArrays([I[Ljava/lang/Object;I)V +HSPLandroidx/collection/ArraySet;->indexOf(Ljava/lang/Object;I)I +HSPLandroidx/collection/ArraySet;->iterator()Ljava/util/Iterator; +HSPLandroidx/collection/ArraySet;->toArray()[Ljava/lang/Object; +Landroidx/collection/ArraySet$ElementIterator; +HSPLandroidx/collection/ArraySet$ElementIterator;->(Landroidx/collection/ArraySet;)V +Landroidx/collection/ContainerHelpers; +HSPLandroidx/collection/ContainerHelpers;->()V +HSPLandroidx/collection/ContainerHelpers;->binarySearch([III)I +HSPLandroidx/collection/ContainerHelpers;->idealByteArraySize(I)I +HSPLandroidx/collection/ContainerHelpers;->idealIntArraySize(I)I +Landroidx/collection/IndexBasedArrayIterator; +HSPLandroidx/collection/IndexBasedArrayIterator;->(I)V +HSPLandroidx/collection/IndexBasedArrayIterator;->hasNext()Z +Landroidx/collection/LongSparseArray; +Landroidx/collection/LruCache; +HSPLandroidx/collection/LruCache;->(I)V +Landroidx/collection/SimpleArrayMap; +HSPLandroidx/collection/SimpleArrayMap;->()V +HSPLandroidx/collection/SimpleArrayMap;->allocArrays(I)V +HSPLandroidx/collection/SimpleArrayMap;->binarySearchHashes([III)I +HSPLandroidx/collection/SimpleArrayMap;->clear()V +HSPLandroidx/collection/SimpleArrayMap;->containsKey(Ljava/lang/Object;)Z +HSPLandroidx/collection/SimpleArrayMap;->freeArrays([I[Ljava/lang/Object;I)V +HSPLandroidx/collection/SimpleArrayMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/collection/SimpleArrayMap;->getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/collection/SimpleArrayMap;->indexOf(Ljava/lang/Object;I)I +HSPLandroidx/collection/SimpleArrayMap;->indexOfKey(Ljava/lang/Object;)I +HSPLandroidx/collection/SimpleArrayMap;->isEmpty()Z +HSPLandroidx/collection/SimpleArrayMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/collection/SparseArrayCompat; +HSPLandroidx/collection/SparseArrayCompat;->()V +HSPLandroidx/collection/SparseArrayCompat;->()V +HSPLandroidx/collection/SparseArrayCompat;->(I)V +Landroidx/compose/animation/AnimatedContentKt; +HSPLandroidx/compose/animation/AnimatedContentKt;->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/AnimatedContentKt;->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/AnimatedContentKt;->SizeTransform$default(ZLkotlin/jvm/functions/Function2;ILjava/lang/Object;)Landroidx/compose/animation/SizeTransform; +HSPLandroidx/compose/animation/AnimatedContentKt;->SizeTransform(ZLkotlin/jvm/functions/Function2;)Landroidx/compose/animation/SizeTransform; +HSPLandroidx/compose/animation/AnimatedContentKt;->with(Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;)Landroidx/compose/animation/ContentTransform; +Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$2; +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$2;->()V +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$2;->()V +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$3; +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$3;->(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 +Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1; +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1;->(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(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$1; +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$1;->(Landroidx/compose/animation/ContentTransform;)V +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$1;->invoke-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$1$1; +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$1$1;->(Landroidx/compose/ui/layout/Placeable;Landroidx/compose/animation/ContentTransform;)V +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$1$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$3; +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$3;->(Ljava/lang/Object;)V +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$3;->invoke(Ljava/lang/Object;)Ljava/lang/Boolean; +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$4; +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$4;->(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$4;->invoke(Landroidx/compose/animation/AnimatedVisibilityScope;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$4;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$4$1; +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$4$1;->(Landroidx/compose/runtime/snapshots/SnapshotStateList;Ljava/lang/Object;Landroidx/compose/animation/AnimatedContentTransitionScopeImpl;)V +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$4$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$4$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$4$1$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$6$1$4$1$invoke$$inlined$onDispose$1;->(Landroidx/compose/runtime/snapshots/SnapshotStateList;Ljava/lang/Object;Landroidx/compose/animation/AnimatedContentTransitionScopeImpl;)V +Landroidx/compose/animation/AnimatedContentKt$AnimatedContent$9; +HSPLandroidx/compose/animation/AnimatedContentKt$AnimatedContent$9;->(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 +Landroidx/compose/animation/AnimatedContentKt$SizeTransform$1; +HSPLandroidx/compose/animation/AnimatedContentKt$SizeTransform$1;->()V +HSPLandroidx/compose/animation/AnimatedContentKt$SizeTransform$1;->()V +Landroidx/compose/animation/AnimatedContentMeasurePolicy; +HSPLandroidx/compose/animation/AnimatedContentMeasurePolicy;->(Landroidx/compose/animation/AnimatedContentTransitionScopeImpl;)V +HSPLandroidx/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; +Landroidx/compose/animation/AnimatedContentMeasurePolicy$measure$3; +HSPLandroidx/compose/animation/AnimatedContentMeasurePolicy$measure$3;->([Landroidx/compose/ui/layout/Placeable;Landroidx/compose/animation/AnimatedContentMeasurePolicy;II)V +HSPLandroidx/compose/animation/AnimatedContentMeasurePolicy$measure$3;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/animation/AnimatedContentMeasurePolicy$measure$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/AnimatedContentScope; +Landroidx/compose/animation/AnimatedContentScopeImpl; +HSPLandroidx/compose/animation/AnimatedContentScopeImpl;->(Landroidx/compose/animation/AnimatedVisibilityScope;)V +Landroidx/compose/animation/AnimatedContentTransitionScope; +Landroidx/compose/animation/AnimatedContentTransitionScopeImpl; +HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->(Landroidx/compose/animation/core/Transition;Landroidx/compose/ui/Alignment;Landroidx/compose/ui/unit/LayoutDirection;)V +HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->createSizeAnimationModifier$animation_release(Landroidx/compose/animation/ContentTransform;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->createSizeAnimationModifier$lambda$2(Landroidx/compose/runtime/MutableState;)Z +HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->createSizeAnimationModifier$lambda$3(Landroidx/compose/runtime/MutableState;Z)V +HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->getContentAlignment$animation_release()Landroidx/compose/ui/Alignment; +HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->getInitialState()Ljava/lang/Object; +HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->getTargetSizeMap$animation_release()Ljava/util/Map; +HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->getTargetState()Ljava/lang/Object; +HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->setContentAlignment$animation_release(Landroidx/compose/ui/Alignment;)V +HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->setLayoutDirection$animation_release(Landroidx/compose/ui/unit/LayoutDirection;)V +HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl;->setMeasuredSize-ozmzZPI$animation_release(J)V +Landroidx/compose/animation/AnimatedContentTransitionScopeImpl$ChildData; +HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$ChildData;->(Z)V +HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$ChildData;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$ChildData;->isTarget()Z +HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$ChildData;->modifyParentData(Landroidx/compose/ui/unit/Density;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/AnimatedContentTransitionScopeImpl$ChildData;->setTarget(Z)V +Landroidx/compose/animation/AnimatedEnterExitMeasurePolicy; +HSPLandroidx/compose/animation/AnimatedEnterExitMeasurePolicy;->(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; +Landroidx/compose/animation/AnimatedEnterExitMeasurePolicy$measure$1; +HSPLandroidx/compose/animation/AnimatedEnterExitMeasurePolicy$measure$1;->(Ljava/util/List;)V +HSPLandroidx/compose/animation/AnimatedEnterExitMeasurePolicy$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/animation/AnimatedEnterExitMeasurePolicy$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/AnimatedVisibilityKt; +HSPLandroidx/compose/animation/AnimatedVisibilityKt;->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/Function3;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/animation/AnimatedVisibilityKt;->AnimatedVisibility(Landroidx/compose/animation/core/Transition;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/animation/AnimatedVisibilityKt;->AnimatedVisibility(Landroidx/compose/foundation/layout/ColumnScope;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/AnimatedVisibilityKt;->AnimatedVisibility(Landroidx/compose/foundation/layout/RowScope;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/AnimatedVisibilityKt;->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/AnimatedVisibilityKt;->access$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/Function3;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/animation/AnimatedVisibilityKt;->targetEnterExit(Landroidx/compose/animation/core/Transition;Lkotlin/jvm/functions/Function1;Ljava/lang/Object;Landroidx/compose/runtime/Composer;I)Landroidx/compose/animation/EnterExitState; +Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$1$1; +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$1$1;->(Landroidx/compose/animation/core/Transition;Landroidx/compose/runtime/MutableState;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$1$1$1; +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$1$1$1;->(Landroidx/compose/animation/core/Transition;)V +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$1$1$1;->invoke()Ljava/lang/Boolean; +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$1$1$1;->invoke()Ljava/lang/Object; +Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$1$1$2; +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$1$1$2;->(Landroidx/compose/runtime/MutableState;)V +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$1$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$1$1$2;->emit(ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$2; +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$2;->(Landroidx/compose/animation/core/Transition;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Lkotlin/jvm/functions/Function3;I)V +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedEnterExitImpl$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$1; +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$1;->()V +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$1;->()V +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$1;->invoke(Z)Ljava/lang/Boolean; +Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$2; +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$2;->(ZLandroidx/compose/ui/Modifier;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Ljava/lang/String;Lkotlin/jvm/functions/Function3;II)V +Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$3; +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$3;->()V +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$3;->()V +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$3;->invoke(Z)Ljava/lang/Boolean; +Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$4; +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$4;->(Landroidx/compose/foundation/layout/RowScope;ZLandroidx/compose/ui/Modifier;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Ljava/lang/String;Lkotlin/jvm/functions/Function3;II)V +Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$5; +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$5;->()V +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$5;->()V +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$5;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$5;->invoke(Z)Ljava/lang/Boolean; +Landroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$6; +HSPLandroidx/compose/animation/AnimatedVisibilityKt$AnimatedVisibility$6;->(Landroidx/compose/foundation/layout/ColumnScope;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;->(Landroidx/compose/animation/core/Transition;)V +HSPLandroidx/compose/animation/AnimatedVisibilityScopeImpl;->getTargetSize$animation_release()Landroidx/compose/runtime/MutableState; +Landroidx/compose/animation/ChangeSize; +HSPLandroidx/compose/animation/ChangeSize;->(Landroidx/compose/ui/Alignment;Lkotlin/jvm/functions/Function1;Landroidx/compose/animation/core/FiniteAnimationSpec;Z)V +HSPLandroidx/compose/animation/ChangeSize;->equals(Ljava/lang/Object;)Z +PLandroidx/compose/animation/ChangeSize;->getAlignment()Landroidx/compose/ui/Alignment; +HSPLandroidx/compose/animation/ChangeSize;->getAnimationSpec()Landroidx/compose/animation/core/FiniteAnimationSpec; +PLandroidx/compose/animation/ChangeSize;->getClip()Z +HSPLandroidx/compose/animation/ChangeSize;->getSize()Lkotlin/jvm/functions/Function1; +Landroidx/compose/animation/ColorVectorConverterKt; +HSPLandroidx/compose/animation/ColorVectorConverterKt;->()V +HSPLandroidx/compose/animation/ColorVectorConverterKt;->getVectorConverter(Landroidx/compose/ui/graphics/Color$Companion;)Lkotlin/jvm/functions/Function1; +Landroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1; +HSPLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1;->()V +HSPLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1;->()V +HSPLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1;->invoke(Landroidx/compose/ui/graphics/colorspace/ColorSpace;)Landroidx/compose/animation/core/TwoWayConverter; +HSPLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1$1; +HSPLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1$1;->()V +HSPLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1$1;->()V +HSPLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1$1;->invoke-8_81llA(J)Landroidx/compose/animation/core/AnimationVector4D; +Landroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1$2; +HSPLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1$2;->(Landroidx/compose/ui/graphics/colorspace/ColorSpace;)V +HSPLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1$2;->invoke-vNxB06k(Landroidx/compose/animation/core/AnimationVector4D;)J +Landroidx/compose/animation/ContentTransform; +HSPLandroidx/compose/animation/ContentTransform;->()V +HSPLandroidx/compose/animation/ContentTransform;->(Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;FLandroidx/compose/animation/SizeTransform;)V +HSPLandroidx/compose/animation/ContentTransform;->(Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;FLandroidx/compose/animation/SizeTransform;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/animation/ContentTransform;->getSizeTransform()Landroidx/compose/animation/SizeTransform; +HSPLandroidx/compose/animation/ContentTransform;->getTargetContentEnter()Landroidx/compose/animation/EnterTransition; +HSPLandroidx/compose/animation/ContentTransform;->getTargetContentZIndex()F +Landroidx/compose/animation/CrossfadeKt; +HSPLandroidx/compose/animation/CrossfadeKt;->Crossfade(Landroidx/compose/animation/core/Transition;Landroidx/compose/ui/Modifier;Landroidx/compose/animation/core/FiniteAnimationSpec;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/animation/CrossfadeKt;->Crossfade(Ljava/lang/Object;Landroidx/compose/ui/Modifier;Landroidx/compose/animation/core/FiniteAnimationSpec;Ljava/lang/String;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +Landroidx/compose/animation/CrossfadeKt$Crossfade$1; +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$1;->(Ljava/lang/Object;Landroidx/compose/ui/Modifier;Landroidx/compose/animation/core/FiniteAnimationSpec;Ljava/lang/String;Lkotlin/jvm/functions/Function3;II)V +Landroidx/compose/animation/CrossfadeKt$Crossfade$3; +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$3;->()V +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$3;->()V +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/CrossfadeKt$Crossfade$4$1; +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$4$1;->(Landroidx/compose/animation/core/Transition;)V +HSPLandroidx/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; +Landroidx/compose/animation/CrossfadeKt$Crossfade$5$1; +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1;->(Landroidx/compose/animation/core/Transition;ILandroidx/compose/animation/core/FiniteAnimationSpec;Ljava/lang/Object;Lkotlin/jvm/functions/Function3;)V +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1;->access$invoke$lambda$1(Landroidx/compose/runtime/State;)F +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1;->invoke$lambda$1(Landroidx/compose/runtime/State;)F +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/CrossfadeKt$Crossfade$5$1$1$1; +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1$1$1;->(Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1$1$1;->invoke(Landroidx/compose/ui/graphics/GraphicsLayerScope;)V +HSPLandroidx/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;->(Landroidx/compose/animation/core/FiniteAnimationSpec;)V +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1$alpha$2;->invoke(Landroidx/compose/animation/core/Transition$Segment;Landroidx/compose/runtime/Composer;I)Landroidx/compose/animation/core/FiniteAnimationSpec; +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$5$1$alpha$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/CrossfadeKt$Crossfade$7; +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$7;->(Landroidx/compose/animation/core/Transition;Landroidx/compose/ui/Modifier;Landroidx/compose/animation/core/FiniteAnimationSpec;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;II)V +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$7;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/animation/CrossfadeKt$Crossfade$7;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/EnterExitState; +HSPLandroidx/compose/animation/EnterExitState;->$values()[Landroidx/compose/animation/EnterExitState; +HSPLandroidx/compose/animation/EnterExitState;->()V +HSPLandroidx/compose/animation/EnterExitState;->(Ljava/lang/String;I)V +HSPLandroidx/compose/animation/EnterExitState;->values()[Landroidx/compose/animation/EnterExitState; +Landroidx/compose/animation/EnterExitTransitionKt; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->()V +HSPLandroidx/compose/animation/EnterExitTransitionKt;->access$createModifier$lambda$11(Landroidx/compose/runtime/State;)F +HSPLandroidx/compose/animation/EnterExitTransitionKt;->access$createModifier$lambda$13(Landroidx/compose/runtime/State;)J +HSPLandroidx/compose/animation/EnterExitTransitionKt;->access$createModifier$lambda$8(Landroidx/compose/runtime/State;)F +HSPLandroidx/compose/animation/EnterExitTransitionKt;->access$getDefaultOffsetAnimationSpec$p()Landroidx/compose/animation/core/SpringSpec; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->createModifier$lambda$1(Landroidx/compose/runtime/MutableState;)Z +HSPLandroidx/compose/animation/EnterExitTransitionKt;->createModifier$lambda$11(Landroidx/compose/runtime/State;)F +HSPLandroidx/compose/animation/EnterExitTransitionKt;->createModifier$lambda$13(Landroidx/compose/runtime/State;)J +HSPLandroidx/compose/animation/EnterExitTransitionKt;->createModifier$lambda$2(Landroidx/compose/runtime/MutableState;Z)V +HSPLandroidx/compose/animation/EnterExitTransitionKt;->createModifier$lambda$4(Landroidx/compose/runtime/MutableState;)Z +HSPLandroidx/compose/animation/EnterExitTransitionKt;->createModifier$lambda$5(Landroidx/compose/runtime/MutableState;Z)V +HSPLandroidx/compose/animation/EnterExitTransitionKt;->createModifier$lambda$8(Landroidx/compose/runtime/State;)F +HSPLandroidx/compose/animation/EnterExitTransitionKt;->createModifier(Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Ljava/lang/String;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->expandHorizontally$default(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment$Horizontal;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Landroidx/compose/animation/EnterTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->expandHorizontally(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment$Horizontal;ZLkotlin/jvm/functions/Function1;)Landroidx/compose/animation/EnterTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->expandIn$default(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Landroidx/compose/animation/EnterTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->expandIn(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment;ZLkotlin/jvm/functions/Function1;)Landroidx/compose/animation/EnterTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->expandVertically$default(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment$Vertical;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Landroidx/compose/animation/EnterTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->expandVertically(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment$Vertical;ZLkotlin/jvm/functions/Function1;)Landroidx/compose/animation/EnterTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->fadeIn$default(Landroidx/compose/animation/core/FiniteAnimationSpec;FILjava/lang/Object;)Landroidx/compose/animation/EnterTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->fadeIn(Landroidx/compose/animation/core/FiniteAnimationSpec;F)Landroidx/compose/animation/EnterTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->fadeOut$default(Landroidx/compose/animation/core/FiniteAnimationSpec;FILjava/lang/Object;)Landroidx/compose/animation/ExitTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->fadeOut(Landroidx/compose/animation/core/FiniteAnimationSpec;F)Landroidx/compose/animation/ExitTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->scaleIn-L8ZKh-E$default(Landroidx/compose/animation/core/FiniteAnimationSpec;FJILjava/lang/Object;)Landroidx/compose/animation/EnterTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->scaleIn-L8ZKh-E(Landroidx/compose/animation/core/FiniteAnimationSpec;FJ)Landroidx/compose/animation/EnterTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->scaleOut-L8ZKh-E$default(Landroidx/compose/animation/core/FiniteAnimationSpec;FJILjava/lang/Object;)Landroidx/compose/animation/ExitTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->scaleOut-L8ZKh-E(Landroidx/compose/animation/core/FiniteAnimationSpec;FJ)Landroidx/compose/animation/ExitTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->shrinkExpand(Landroidx/compose/ui/Modifier;Landroidx/compose/animation/core/Transition;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Ljava/lang/String;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->shrinkHorizontally$default(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment$Horizontal;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Landroidx/compose/animation/ExitTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->shrinkHorizontally(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment$Horizontal;ZLkotlin/jvm/functions/Function1;)Landroidx/compose/animation/ExitTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->shrinkOut$default(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Landroidx/compose/animation/ExitTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->shrinkOut(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment;ZLkotlin/jvm/functions/Function1;)Landroidx/compose/animation/ExitTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->shrinkVertically$default(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment$Vertical;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Landroidx/compose/animation/ExitTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->shrinkVertically(Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/ui/Alignment$Vertical;ZLkotlin/jvm/functions/Function1;)Landroidx/compose/animation/ExitTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->slideIn(Landroidx/compose/animation/core/FiniteAnimationSpec;Lkotlin/jvm/functions/Function1;)Landroidx/compose/animation/EnterTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->slideInHorizontally(Landroidx/compose/animation/core/FiniteAnimationSpec;Lkotlin/jvm/functions/Function1;)Landroidx/compose/animation/EnterTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->slideInOut(Landroidx/compose/ui/Modifier;Landroidx/compose/animation/core/Transition;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Ljava/lang/String;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->slideOut(Landroidx/compose/animation/core/FiniteAnimationSpec;Lkotlin/jvm/functions/Function1;)Landroidx/compose/animation/ExitTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->slideOutHorizontally(Landroidx/compose/animation/core/FiniteAnimationSpec;Lkotlin/jvm/functions/Function1;)Landroidx/compose/animation/ExitTransition; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->toAlignment(Landroidx/compose/ui/Alignment$Horizontal;)Landroidx/compose/ui/Alignment; +HSPLandroidx/compose/animation/EnterExitTransitionKt;->toAlignment(Landroidx/compose/ui/Alignment$Vertical;)Landroidx/compose/ui/Alignment; +Landroidx/compose/animation/EnterExitTransitionKt$TransformOriginVectorConverter$1; +HSPLandroidx/compose/animation/EnterExitTransitionKt$TransformOriginVectorConverter$1;->()V +HSPLandroidx/compose/animation/EnterExitTransitionKt$TransformOriginVectorConverter$1;->()V +HSPLandroidx/compose/animation/EnterExitTransitionKt$TransformOriginVectorConverter$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/EnterExitTransitionKt$TransformOriginVectorConverter$1;->invoke-__ExYCQ(J)Landroidx/compose/animation/core/AnimationVector2D; +Landroidx/compose/animation/EnterExitTransitionKt$TransformOriginVectorConverter$2; +HSPLandroidx/compose/animation/EnterExitTransitionKt$TransformOriginVectorConverter$2;->()V +HSPLandroidx/compose/animation/EnterExitTransitionKt$TransformOriginVectorConverter$2;->()V +Landroidx/compose/animation/EnterExitTransitionKt$WhenMappings; +HSPLandroidx/compose/animation/EnterExitTransitionKt$WhenMappings;->()V +Landroidx/compose/animation/EnterExitTransitionKt$createModifier$$inlined$animateValue$1; +HSPLandroidx/compose/animation/EnterExitTransitionKt$createModifier$$inlined$animateValue$1;->()V +HSPLandroidx/compose/animation/EnterExitTransitionKt$createModifier$$inlined$animateValue$1;->()V +HSPLandroidx/compose/animation/EnterExitTransitionKt$createModifier$$inlined$animateValue$1;->invoke(Landroidx/compose/animation/core/Transition$Segment;Landroidx/compose/runtime/Composer;I)Landroidx/compose/animation/core/SpringSpec; +HSPLandroidx/compose/animation/EnterExitTransitionKt$createModifier$$inlined$animateValue$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/EnterExitTransitionKt$createModifier$1$1; +HSPLandroidx/compose/animation/EnterExitTransitionKt$createModifier$1$1;->(Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/animation/EnterExitTransitionKt$createModifier$1$1;->invoke(Landroidx/compose/ui/graphics/GraphicsLayerScope;)V +HSPLandroidx/compose/animation/EnterExitTransitionKt$createModifier$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/EnterExitTransitionKt$createModifier$2$1; +HSPLandroidx/compose/animation/EnterExitTransitionKt$createModifier$2$1;->(Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/animation/EnterExitTransitionKt$createModifier$2$1;->invoke(Landroidx/compose/ui/graphics/GraphicsLayerScope;)V +HSPLandroidx/compose/animation/EnterExitTransitionKt$createModifier$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/EnterExitTransitionKt$createModifier$alpha$2; +HSPLandroidx/compose/animation/EnterExitTransitionKt$createModifier$alpha$2;->(Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;)V +HSPLandroidx/compose/animation/EnterExitTransitionKt$createModifier$alpha$2;->invoke(Landroidx/compose/animation/core/Transition$Segment;Landroidx/compose/runtime/Composer;I)Landroidx/compose/animation/core/FiniteAnimationSpec; +HSPLandroidx/compose/animation/EnterExitTransitionKt$createModifier$alpha$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/EnterExitTransitionKt$createModifier$scale$2; +HSPLandroidx/compose/animation/EnterExitTransitionKt$createModifier$scale$2;->(Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;)V +HSPLandroidx/compose/animation/EnterExitTransitionKt$createModifier$scale$2;->invoke(Landroidx/compose/animation/core/Transition$Segment;Landroidx/compose/runtime/Composer;I)Landroidx/compose/animation/core/FiniteAnimationSpec; +HSPLandroidx/compose/animation/EnterExitTransitionKt$createModifier$scale$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/EnterExitTransitionKt$expandHorizontally$1; +HSPLandroidx/compose/animation/EnterExitTransitionKt$expandHorizontally$1;->()V +HSPLandroidx/compose/animation/EnterExitTransitionKt$expandHorizontally$1;->()V +Landroidx/compose/animation/EnterExitTransitionKt$expandHorizontally$2; +HSPLandroidx/compose/animation/EnterExitTransitionKt$expandHorizontally$2;->(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/animation/EnterExitTransitionKt$expandIn$1; +HSPLandroidx/compose/animation/EnterExitTransitionKt$expandIn$1;->()V +HSPLandroidx/compose/animation/EnterExitTransitionKt$expandIn$1;->()V +Landroidx/compose/animation/EnterExitTransitionKt$expandVertically$1; +HSPLandroidx/compose/animation/EnterExitTransitionKt$expandVertically$1;->()V +HSPLandroidx/compose/animation/EnterExitTransitionKt$expandVertically$1;->()V +Landroidx/compose/animation/EnterExitTransitionKt$expandVertically$2; +HSPLandroidx/compose/animation/EnterExitTransitionKt$expandVertically$2;->(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/animation/EnterExitTransitionKt$shrinkExpand$1; +HSPLandroidx/compose/animation/EnterExitTransitionKt$shrinkExpand$1;->(Landroidx/compose/animation/core/Transition;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Ljava/lang/String;)V +HSPLandroidx/compose/animation/EnterExitTransitionKt$shrinkExpand$1;->invoke$lambda$1(Landroidx/compose/runtime/MutableState;)Z +HSPLandroidx/compose/animation/EnterExitTransitionKt$shrinkExpand$1;->invoke$lambda$2(Landroidx/compose/runtime/MutableState;Z)V +HSPLandroidx/compose/animation/EnterExitTransitionKt$shrinkExpand$1;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/animation/EnterExitTransitionKt$shrinkExpand$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/EnterExitTransitionKt$shrinkHorizontally$1; +HSPLandroidx/compose/animation/EnterExitTransitionKt$shrinkHorizontally$1;->()V +HSPLandroidx/compose/animation/EnterExitTransitionKt$shrinkHorizontally$1;->()V +Landroidx/compose/animation/EnterExitTransitionKt$shrinkHorizontally$2; +HSPLandroidx/compose/animation/EnterExitTransitionKt$shrinkHorizontally$2;->(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/animation/EnterExitTransitionKt$shrinkOut$1; +HSPLandroidx/compose/animation/EnterExitTransitionKt$shrinkOut$1;->()V +HSPLandroidx/compose/animation/EnterExitTransitionKt$shrinkOut$1;->()V +Landroidx/compose/animation/EnterExitTransitionKt$shrinkVertically$1; +HSPLandroidx/compose/animation/EnterExitTransitionKt$shrinkVertically$1;->()V +HSPLandroidx/compose/animation/EnterExitTransitionKt$shrinkVertically$1;->()V +Landroidx/compose/animation/EnterExitTransitionKt$shrinkVertically$2; +HSPLandroidx/compose/animation/EnterExitTransitionKt$shrinkVertically$2;->(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/animation/EnterExitTransitionKt$slideInHorizontally$2; +HSPLandroidx/compose/animation/EnterExitTransitionKt$slideInHorizontally$2;->(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/animation/EnterExitTransitionKt$slideInOut$1; +HSPLandroidx/compose/animation/EnterExitTransitionKt$slideInOut$1;->(Landroidx/compose/animation/core/Transition;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Ljava/lang/String;)V +HSPLandroidx/compose/animation/EnterExitTransitionKt$slideInOut$1;->invoke$lambda$1(Landroidx/compose/runtime/MutableState;)Z +HSPLandroidx/compose/animation/EnterExitTransitionKt$slideInOut$1;->invoke$lambda$2(Landroidx/compose/runtime/MutableState;Z)V +HSPLandroidx/compose/animation/EnterExitTransitionKt$slideInOut$1;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/animation/EnterExitTransitionKt$slideInOut$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/EnterExitTransitionKt$slideOutHorizontally$2; +HSPLandroidx/compose/animation/EnterExitTransitionKt$slideOutHorizontally$2;->(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/animation/EnterTransition; +HSPLandroidx/compose/animation/EnterTransition;->()V +HSPLandroidx/compose/animation/EnterTransition;->()V +HSPLandroidx/compose/animation/EnterTransition;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/animation/EnterTransition;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/animation/EnterTransition;->plus(Landroidx/compose/animation/EnterTransition;)Landroidx/compose/animation/EnterTransition; +Landroidx/compose/animation/EnterTransition$Companion; +HSPLandroidx/compose/animation/EnterTransition$Companion;->()V +HSPLandroidx/compose/animation/EnterTransition$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/animation/EnterTransitionImpl; +HSPLandroidx/compose/animation/EnterTransitionImpl;->(Landroidx/compose/animation/TransitionData;)V +HSPLandroidx/compose/animation/EnterTransitionImpl;->getData$animation_release()Landroidx/compose/animation/TransitionData; +Landroidx/compose/animation/ExitTransition; +HSPLandroidx/compose/animation/ExitTransition;->()V +HSPLandroidx/compose/animation/ExitTransition;->()V +HSPLandroidx/compose/animation/ExitTransition;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/animation/ExitTransition;->access$getNone$cp()Landroidx/compose/animation/ExitTransition; +HSPLandroidx/compose/animation/ExitTransition;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/animation/ExitTransition;->plus(Landroidx/compose/animation/ExitTransition;)Landroidx/compose/animation/ExitTransition; +Landroidx/compose/animation/ExitTransition$Companion; +HSPLandroidx/compose/animation/ExitTransition$Companion;->()V +HSPLandroidx/compose/animation/ExitTransition$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/animation/ExitTransition$Companion;->getNone()Landroidx/compose/animation/ExitTransition; +Landroidx/compose/animation/ExitTransitionImpl; +HSPLandroidx/compose/animation/ExitTransitionImpl;->(Landroidx/compose/animation/TransitionData;)V +HSPLandroidx/compose/animation/ExitTransitionImpl;->getData$animation_release()Landroidx/compose/animation/TransitionData; +Landroidx/compose/animation/ExpandShrinkModifier; +HSPLandroidx/compose/animation/ExpandShrinkModifier;->(Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;)V +PLandroidx/compose/animation/ExpandShrinkModifier;->getCurrentAlignment()Landroidx/compose/ui/Alignment; +HSPLandroidx/compose/animation/ExpandShrinkModifier;->getExpand()Landroidx/compose/runtime/State; +HSPLandroidx/compose/animation/ExpandShrinkModifier;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +PLandroidx/compose/animation/ExpandShrinkModifier;->setCurrentAlignment(Landroidx/compose/ui/Alignment;)V +HSPLandroidx/compose/animation/ExpandShrinkModifier;->sizeByState-Uzc_VyU(Landroidx/compose/animation/EnterExitState;J)J +HSPLandroidx/compose/animation/ExpandShrinkModifier;->targetOffsetByState-oFUgxo0(Landroidx/compose/animation/EnterExitState;J)J +Landroidx/compose/animation/ExpandShrinkModifier$WhenMappings; +HSPLandroidx/compose/animation/ExpandShrinkModifier$WhenMappings;->()V +Landroidx/compose/animation/ExpandShrinkModifier$measure$1; +HSPLandroidx/compose/animation/ExpandShrinkModifier$measure$1;->(Landroidx/compose/ui/layout/Placeable;JJ)V +HSPLandroidx/compose/animation/ExpandShrinkModifier$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/animation/ExpandShrinkModifier$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/ExpandShrinkModifier$measure$currentSize$1; +HSPLandroidx/compose/animation/ExpandShrinkModifier$measure$currentSize$1;->(Landroidx/compose/animation/ExpandShrinkModifier;J)V +HSPLandroidx/compose/animation/ExpandShrinkModifier$measure$currentSize$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/ExpandShrinkModifier$measure$currentSize$1;->invoke-YEO4UFw(Landroidx/compose/animation/EnterExitState;)J +Landroidx/compose/animation/ExpandShrinkModifier$measure$offsetDelta$1; +HSPLandroidx/compose/animation/ExpandShrinkModifier$measure$offsetDelta$1;->()V +HSPLandroidx/compose/animation/ExpandShrinkModifier$measure$offsetDelta$1;->()V +HSPLandroidx/compose/animation/ExpandShrinkModifier$measure$offsetDelta$1;->invoke(Landroidx/compose/animation/core/Transition$Segment;)Landroidx/compose/animation/core/FiniteAnimationSpec; +HSPLandroidx/compose/animation/ExpandShrinkModifier$measure$offsetDelta$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/ExpandShrinkModifier$measure$offsetDelta$2; +HSPLandroidx/compose/animation/ExpandShrinkModifier$measure$offsetDelta$2;->(Landroidx/compose/animation/ExpandShrinkModifier;J)V +HSPLandroidx/compose/animation/ExpandShrinkModifier$measure$offsetDelta$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/ExpandShrinkModifier$measure$offsetDelta$2;->invoke-Bjo55l4(Landroidx/compose/animation/EnterExitState;)J +Landroidx/compose/animation/ExpandShrinkModifier$sizeTransitionSpec$1; +HSPLandroidx/compose/animation/ExpandShrinkModifier$sizeTransitionSpec$1;->(Landroidx/compose/animation/ExpandShrinkModifier;)V +HSPLandroidx/compose/animation/ExpandShrinkModifier$sizeTransitionSpec$1;->invoke(Landroidx/compose/animation/core/Transition$Segment;)Landroidx/compose/animation/core/FiniteAnimationSpec; +HSPLandroidx/compose/animation/ExpandShrinkModifier$sizeTransitionSpec$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/Fade; +HSPLandroidx/compose/animation/Fade;->(FLandroidx/compose/animation/core/FiniteAnimationSpec;)V +PLandroidx/compose/animation/Fade;->getAlpha()F +HSPLandroidx/compose/animation/Fade;->getAnimationSpec()Landroidx/compose/animation/core/FiniteAnimationSpec; +Landroidx/compose/animation/FlingCalculator; +HSPLandroidx/compose/animation/FlingCalculator;->(FLandroidx/compose/ui/unit/Density;)V +HSPLandroidx/compose/animation/FlingCalculator;->computeDeceleration(Landroidx/compose/ui/unit/Density;)F +Landroidx/compose/animation/FlingCalculatorKt; +HSPLandroidx/compose/animation/FlingCalculatorKt;->()V +HSPLandroidx/compose/animation/FlingCalculatorKt;->access$computeDeceleration(FF)F +HSPLandroidx/compose/animation/FlingCalculatorKt;->computeDeceleration(FF)F +Landroidx/compose/animation/LayoutModifierWithPassThroughIntrinsics; +HSPLandroidx/compose/animation/LayoutModifierWithPassThroughIntrinsics;->()V +Landroidx/compose/animation/Scale; +HSPLandroidx/compose/animation/Scale;->(FJLandroidx/compose/animation/core/FiniteAnimationSpec;)V +HSPLandroidx/compose/animation/Scale;->(FJLandroidx/compose/animation/core/FiniteAnimationSpec;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/animation/Scale;->getAnimationSpec()Landroidx/compose/animation/core/FiniteAnimationSpec; +PLandroidx/compose/animation/Scale;->getScale()F +PLandroidx/compose/animation/Scale;->getTransformOrigin-SzJe1aQ()J +Landroidx/compose/animation/SingleValueAnimationKt; +HSPLandroidx/compose/animation/SingleValueAnimationKt;->()V +HSPLandroidx/compose/animation/SingleValueAnimationKt;->animateColorAsState-euL9pac(JLandroidx/compose/animation/core/AnimationSpec;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)Landroidx/compose/runtime/State; +Landroidx/compose/animation/SizeTransform; +Landroidx/compose/animation/SizeTransformImpl; +HSPLandroidx/compose/animation/SizeTransformImpl;->(ZLkotlin/jvm/functions/Function2;)V +Landroidx/compose/animation/Slide; +HSPLandroidx/compose/animation/Slide;->(Lkotlin/jvm/functions/Function1;Landroidx/compose/animation/core/FiniteAnimationSpec;)V +HSPLandroidx/compose/animation/Slide;->equals(Ljava/lang/Object;)Z +Landroidx/compose/animation/SplineBasedFloatDecayAnimationSpec; +HSPLandroidx/compose/animation/SplineBasedFloatDecayAnimationSpec;->()V +HSPLandroidx/compose/animation/SplineBasedFloatDecayAnimationSpec;->(Landroidx/compose/ui/unit/Density;)V +Landroidx/compose/animation/SplineBasedFloatDecayAnimationSpec_androidKt; +HSPLandroidx/compose/animation/SplineBasedFloatDecayAnimationSpec_androidKt;->()V +HSPLandroidx/compose/animation/SplineBasedFloatDecayAnimationSpec_androidKt;->getPlatformFlingScrollFriction()F +HSPLandroidx/compose/animation/SplineBasedFloatDecayAnimationSpec_androidKt;->rememberSplineBasedDecay(Landroidx/compose/runtime/Composer;I)Landroidx/compose/animation/core/DecayAnimationSpec; +Landroidx/compose/animation/TransitionData; +HSPLandroidx/compose/animation/TransitionData;->(Landroidx/compose/animation/Fade;Landroidx/compose/animation/Slide;Landroidx/compose/animation/ChangeSize;Landroidx/compose/animation/Scale;)V +HSPLandroidx/compose/animation/TransitionData;->(Landroidx/compose/animation/Fade;Landroidx/compose/animation/Slide;Landroidx/compose/animation/ChangeSize;Landroidx/compose/animation/Scale;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/animation/TransitionData;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/animation/TransitionData;->getChangeSize()Landroidx/compose/animation/ChangeSize; +HSPLandroidx/compose/animation/TransitionData;->getFade()Landroidx/compose/animation/Fade; +HSPLandroidx/compose/animation/TransitionData;->getScale()Landroidx/compose/animation/Scale; +HSPLandroidx/compose/animation/TransitionData;->getSlide()Landroidx/compose/animation/Slide; +Landroidx/compose/animation/core/Animatable; +HSPLandroidx/compose/animation/core/Animatable;->()V +HSPLandroidx/compose/animation/core/Animatable;->(Ljava/lang/Object;Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Ljava/lang/String;)V +HSPLandroidx/compose/animation/core/Animatable;->(Ljava/lang/Object;Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/animation/core/Animatable;->access$clampToBounds(Landroidx/compose/animation/core/Animatable;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Animatable;->access$endAnimation(Landroidx/compose/animation/core/Animatable;)V +HSPLandroidx/compose/animation/core/Animatable;->access$setRunning(Landroidx/compose/animation/core/Animatable;Z)V +HSPLandroidx/compose/animation/core/Animatable;->access$setTargetValue(Landroidx/compose/animation/core/Animatable;Ljava/lang/Object;)V +HSPLandroidx/compose/animation/core/Animatable;->animateTo$default(Landroidx/compose/animation/core/Animatable;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationSpec;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Animatable;->animateTo(Ljava/lang/Object;Landroidx/compose/animation/core/AnimationSpec;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Animatable;->asState()Landroidx/compose/runtime/State; +HSPLandroidx/compose/animation/core/Animatable;->clampToBounds(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Animatable;->createVector(Ljava/lang/Object;F)Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/Animatable;->endAnimation()V +HSPLandroidx/compose/animation/core/Animatable;->getInternalState$animation_core_release()Landroidx/compose/animation/core/AnimationState; +HSPLandroidx/compose/animation/core/Animatable;->getTargetValue()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Animatable;->getTypeConverter()Landroidx/compose/animation/core/TwoWayConverter; +HSPLandroidx/compose/animation/core/Animatable;->getValue()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Animatable;->getVelocity()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Animatable;->getVelocityVector()Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/Animatable;->runAnimation(Landroidx/compose/animation/core/Animation;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Animatable;->setRunning(Z)V +HSPLandroidx/compose/animation/core/Animatable;->setTargetValue(Ljava/lang/Object;)V +HSPLandroidx/compose/animation/core/Animatable;->snapTo(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/animation/core/Animatable$runAnimation$2; +HSPLandroidx/compose/animation/core/Animatable$runAnimation$2;->(Landroidx/compose/animation/core/Animatable;Ljava/lang/Object;Landroidx/compose/animation/core/Animation;JLkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/animation/core/Animatable$runAnimation$2;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/animation/core/Animatable$runAnimation$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Animatable$runAnimation$2;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Animatable$runAnimation$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/Animatable$runAnimation$2$1; +HSPLandroidx/compose/animation/core/Animatable$runAnimation$2$1;->(Landroidx/compose/animation/core/Animatable;Landroidx/compose/animation/core/AnimationState;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/internal/Ref$BooleanRef;)V +HSPLandroidx/compose/animation/core/Animatable$runAnimation$2$1;->invoke(Landroidx/compose/animation/core/AnimationScope;)V +HSPLandroidx/compose/animation/core/Animatable$runAnimation$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/Animatable$snapTo$2; +HSPLandroidx/compose/animation/core/Animatable$snapTo$2;->(Landroidx/compose/animation/core/Animatable;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/animation/core/Animatable$snapTo$2;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/animation/core/Animatable$snapTo$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Animatable$snapTo$2;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Animatable$snapTo$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/AnimatableKt; +HSPLandroidx/compose/animation/core/AnimatableKt;->Animatable$default(FFILjava/lang/Object;)Landroidx/compose/animation/core/Animatable; +HSPLandroidx/compose/animation/core/AnimatableKt;->Animatable(FF)Landroidx/compose/animation/core/Animatable; +Landroidx/compose/animation/core/AnimateAsStateKt; +HSPLandroidx/compose/animation/core/AnimateAsStateKt;->()V +HSPLandroidx/compose/animation/core/AnimateAsStateKt;->access$animateValueAsState$lambda$4(Landroidx/compose/runtime/State;)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/animation/core/AnimateAsStateKt;->access$animateValueAsState$lambda$6(Landroidx/compose/runtime/State;)Landroidx/compose/animation/core/AnimationSpec; +HSPLandroidx/compose/animation/core/AnimateAsStateKt;->animateDpAsState-AjpBEmI(FLandroidx/compose/animation/core/AnimationSpec;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)Landroidx/compose/runtime/State; +HSPLandroidx/compose/animation/core/AnimateAsStateKt;->animateFloatAsState(FLandroidx/compose/animation/core/AnimationSpec;FLjava/lang/String;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)Landroidx/compose/runtime/State; +HSPLandroidx/compose/animation/core/AnimateAsStateKt;->animateValueAsState$lambda$4(Landroidx/compose/runtime/State;)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/animation/core/AnimateAsStateKt;->animateValueAsState$lambda$6(Landroidx/compose/runtime/State;)Landroidx/compose/animation/core/AnimationSpec; +HSPLandroidx/compose/animation/core/AnimateAsStateKt;->animateValueAsState(Ljava/lang/Object;Landroidx/compose/animation/core/TwoWayConverter;Landroidx/compose/animation/core/AnimationSpec;Ljava/lang/Object;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)Landroidx/compose/runtime/State; +Landroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$2; +HSPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$2;->(Lkotlinx/coroutines/channels/Channel;Ljava/lang/Object;)V +HSPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$2;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$2;->invoke()V +Landroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3; +HSPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3;->(Lkotlinx/coroutines/channels/Channel;Landroidx/compose/animation/core/Animatable;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3$1; +HSPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3$1;->(Ljava/lang/Object;Landroidx/compose/animation/core/Animatable;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/Animation; +HSPLandroidx/compose/animation/core/Animation;->isFinishedFromNanos(J)Z +Landroidx/compose/animation/core/AnimationEndReason; +HSPLandroidx/compose/animation/core/AnimationEndReason;->$values()[Landroidx/compose/animation/core/AnimationEndReason; +HSPLandroidx/compose/animation/core/AnimationEndReason;->()V +HSPLandroidx/compose/animation/core/AnimationEndReason;->(Ljava/lang/String;I)V +Landroidx/compose/animation/core/AnimationKt; +HSPLandroidx/compose/animation/core/AnimationKt;->TargetBasedAnimation(Landroidx/compose/animation/core/AnimationSpec;Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Landroidx/compose/animation/core/TargetBasedAnimation; +Landroidx/compose/animation/core/AnimationResult; +HSPLandroidx/compose/animation/core/AnimationResult;->()V +HSPLandroidx/compose/animation/core/AnimationResult;->(Landroidx/compose/animation/core/AnimationState;Landroidx/compose/animation/core/AnimationEndReason;)V +Landroidx/compose/animation/core/AnimationScope; +HSPLandroidx/compose/animation/core/AnimationScope;->()V +HSPLandroidx/compose/animation/core/AnimationScope;->(Ljava/lang/Object;Landroidx/compose/animation/core/TwoWayConverter;Landroidx/compose/animation/core/AnimationVector;JLjava/lang/Object;JZLkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/animation/core/AnimationScope;->getFinishedTimeNanos()J +HSPLandroidx/compose/animation/core/AnimationScope;->getLastFrameTimeNanos()J +HSPLandroidx/compose/animation/core/AnimationScope;->getStartTimeNanos()J +HSPLandroidx/compose/animation/core/AnimationScope;->getValue()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/AnimationScope;->getVelocityVector()Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/AnimationScope;->isRunning()Z +HSPLandroidx/compose/animation/core/AnimationScope;->setFinishedTimeNanos$animation_core_release(J)V +HSPLandroidx/compose/animation/core/AnimationScope;->setLastFrameTimeNanos$animation_core_release(J)V +HSPLandroidx/compose/animation/core/AnimationScope;->setRunning$animation_core_release(Z)V +HSPLandroidx/compose/animation/core/AnimationScope;->setValue$animation_core_release(Ljava/lang/Object;)V +HSPLandroidx/compose/animation/core/AnimationScope;->setVelocityVector$animation_core_release(Landroidx/compose/animation/core/AnimationVector;)V +Landroidx/compose/animation/core/AnimationSpec; +Landroidx/compose/animation/core/AnimationSpecKt; +HSPLandroidx/compose/animation/core/AnimationSpecKt;->access$convert(Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;)Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/AnimationSpecKt;->convert(Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;)Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/AnimationSpecKt;->infiniteRepeatable-9IiC70o$default(Landroidx/compose/animation/core/DurationBasedAnimationSpec;Landroidx/compose/animation/core/RepeatMode;JILjava/lang/Object;)Landroidx/compose/animation/core/InfiniteRepeatableSpec; +HSPLandroidx/compose/animation/core/AnimationSpecKt;->infiniteRepeatable-9IiC70o(Landroidx/compose/animation/core/DurationBasedAnimationSpec;Landroidx/compose/animation/core/RepeatMode;J)Landroidx/compose/animation/core/InfiniteRepeatableSpec; +HSPLandroidx/compose/animation/core/AnimationSpecKt;->keyframes(Lkotlin/jvm/functions/Function1;)Landroidx/compose/animation/core/KeyframesSpec; +HSPLandroidx/compose/animation/core/AnimationSpecKt;->snap$default(IILjava/lang/Object;)Landroidx/compose/animation/core/SnapSpec; +HSPLandroidx/compose/animation/core/AnimationSpecKt;->snap(I)Landroidx/compose/animation/core/SnapSpec; +HSPLandroidx/compose/animation/core/AnimationSpecKt;->spring$default(FFLjava/lang/Object;ILjava/lang/Object;)Landroidx/compose/animation/core/SpringSpec; +HSPLandroidx/compose/animation/core/AnimationSpecKt;->spring(FFLjava/lang/Object;)Landroidx/compose/animation/core/SpringSpec; +HSPLandroidx/compose/animation/core/AnimationSpecKt;->tween$default(IILandroidx/compose/animation/core/Easing;ILjava/lang/Object;)Landroidx/compose/animation/core/TweenSpec; +HSPLandroidx/compose/animation/core/AnimationSpecKt;->tween(IILandroidx/compose/animation/core/Easing;)Landroidx/compose/animation/core/TweenSpec; +Landroidx/compose/animation/core/AnimationState; +HSPLandroidx/compose/animation/core/AnimationState;->()V +HSPLandroidx/compose/animation/core/AnimationState;->(Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationVector;JJZ)V +HSPLandroidx/compose/animation/core/AnimationState;->(Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationVector;JJZILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/animation/core/AnimationState;->getLastFrameTimeNanos()J +HSPLandroidx/compose/animation/core/AnimationState;->getTypeConverter()Landroidx/compose/animation/core/TwoWayConverter; +HSPLandroidx/compose/animation/core/AnimationState;->getValue()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/AnimationState;->getVelocityVector()Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/AnimationState;->isRunning()Z +HSPLandroidx/compose/animation/core/AnimationState;->setFinishedTimeNanos$animation_core_release(J)V +HSPLandroidx/compose/animation/core/AnimationState;->setLastFrameTimeNanos$animation_core_release(J)V +HSPLandroidx/compose/animation/core/AnimationState;->setRunning$animation_core_release(Z)V +HSPLandroidx/compose/animation/core/AnimationState;->setValue$animation_core_release(Ljava/lang/Object;)V +HSPLandroidx/compose/animation/core/AnimationState;->setVelocityVector$animation_core_release(Landroidx/compose/animation/core/AnimationVector;)V +Landroidx/compose/animation/core/AnimationStateKt; +HSPLandroidx/compose/animation/core/AnimationStateKt;->copy$default(Landroidx/compose/animation/core/AnimationState;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationVector;JJZILjava/lang/Object;)Landroidx/compose/animation/core/AnimationState; +HSPLandroidx/compose/animation/core/AnimationStateKt;->copy(Landroidx/compose/animation/core/AnimationState;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationVector;JJZ)Landroidx/compose/animation/core/AnimationState; +HSPLandroidx/compose/animation/core/AnimationStateKt;->createZeroVectorFrom(Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;)Landroidx/compose/animation/core/AnimationVector; +Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/AnimationVector;->()V +HSPLandroidx/compose/animation/core/AnimationVector;->()V +HSPLandroidx/compose/animation/core/AnimationVector;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/animation/core/AnimationVector1D; +HSPLandroidx/compose/animation/core/AnimationVector1D;->()V +HSPLandroidx/compose/animation/core/AnimationVector1D;->(F)V +HSPLandroidx/compose/animation/core/AnimationVector1D;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/animation/core/AnimationVector1D;->get$animation_core_release(I)F +HSPLandroidx/compose/animation/core/AnimationVector1D;->getSize$animation_core_release()I +HSPLandroidx/compose/animation/core/AnimationVector1D;->getValue()F +HSPLandroidx/compose/animation/core/AnimationVector1D;->newVector$animation_core_release()Landroidx/compose/animation/core/AnimationVector1D; +HSPLandroidx/compose/animation/core/AnimationVector1D;->newVector$animation_core_release()Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/AnimationVector1D;->reset$animation_core_release()V +HSPLandroidx/compose/animation/core/AnimationVector1D;->set$animation_core_release(IF)V +Landroidx/compose/animation/core/AnimationVector2D; +HSPLandroidx/compose/animation/core/AnimationVector2D;->()V +HSPLandroidx/compose/animation/core/AnimationVector2D;->(FF)V +HSPLandroidx/compose/animation/core/AnimationVector2D;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/animation/core/AnimationVector2D;->get$animation_core_release(I)F +HSPLandroidx/compose/animation/core/AnimationVector2D;->getSize$animation_core_release()I +HSPLandroidx/compose/animation/core/AnimationVector2D;->getV1()F +HSPLandroidx/compose/animation/core/AnimationVector2D;->getV2()F +HSPLandroidx/compose/animation/core/AnimationVector2D;->newVector$animation_core_release()Landroidx/compose/animation/core/AnimationVector2D; +HSPLandroidx/compose/animation/core/AnimationVector2D;->newVector$animation_core_release()Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/AnimationVector2D;->reset$animation_core_release()V +HSPLandroidx/compose/animation/core/AnimationVector2D;->set$animation_core_release(IF)V +Landroidx/compose/animation/core/AnimationVector4D; +HSPLandroidx/compose/animation/core/AnimationVector4D;->()V +HSPLandroidx/compose/animation/core/AnimationVector4D;->(FFFF)V +HSPLandroidx/compose/animation/core/AnimationVector4D;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/animation/core/AnimationVector4D;->get$animation_core_release(I)F +HSPLandroidx/compose/animation/core/AnimationVector4D;->getSize$animation_core_release()I +HSPLandroidx/compose/animation/core/AnimationVector4D;->getV1()F +HSPLandroidx/compose/animation/core/AnimationVector4D;->getV2()F +HSPLandroidx/compose/animation/core/AnimationVector4D;->getV3()F +HSPLandroidx/compose/animation/core/AnimationVector4D;->getV4()F +HSPLandroidx/compose/animation/core/AnimationVector4D;->newVector$animation_core_release()Landroidx/compose/animation/core/AnimationVector4D; +HSPLandroidx/compose/animation/core/AnimationVector4D;->newVector$animation_core_release()Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/AnimationVector4D;->reset$animation_core_release()V +HSPLandroidx/compose/animation/core/AnimationVector4D;->set$animation_core_release(IF)V +Landroidx/compose/animation/core/AnimationVectorsKt; +HSPLandroidx/compose/animation/core/AnimationVectorsKt;->copy(Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/AnimationVectorsKt;->copyFrom(Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)V +HSPLandroidx/compose/animation/core/AnimationVectorsKt;->newInstance(Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +Landroidx/compose/animation/core/Animations; +Landroidx/compose/animation/core/ComplexDouble; +HSPLandroidx/compose/animation/core/ComplexDouble;->(DD)V +HSPLandroidx/compose/animation/core/ComplexDouble;->access$get_imaginary$p(Landroidx/compose/animation/core/ComplexDouble;)D +HSPLandroidx/compose/animation/core/ComplexDouble;->access$get_real$p(Landroidx/compose/animation/core/ComplexDouble;)D +HSPLandroidx/compose/animation/core/ComplexDouble;->access$set_imaginary$p(Landroidx/compose/animation/core/ComplexDouble;D)V +HSPLandroidx/compose/animation/core/ComplexDouble;->access$set_real$p(Landroidx/compose/animation/core/ComplexDouble;D)V +HSPLandroidx/compose/animation/core/ComplexDouble;->getReal()D +Landroidx/compose/animation/core/ComplexDoubleKt; +HSPLandroidx/compose/animation/core/ComplexDoubleKt;->complexSqrt(D)Landroidx/compose/animation/core/ComplexDouble; +Landroidx/compose/animation/core/CubicBezierEasing; +HSPLandroidx/compose/animation/core/CubicBezierEasing;->()V +HSPLandroidx/compose/animation/core/CubicBezierEasing;->(FFFF)V +HSPLandroidx/compose/animation/core/CubicBezierEasing;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/animation/core/CubicBezierEasing;->evaluateCubic(FFF)F +HSPLandroidx/compose/animation/core/CubicBezierEasing;->transform(F)F +Landroidx/compose/animation/core/DecayAnimationSpec; +Landroidx/compose/animation/core/DecayAnimationSpecImpl; +HSPLandroidx/compose/animation/core/DecayAnimationSpecImpl;->(Landroidx/compose/animation/core/FloatDecayAnimationSpec;)V +Landroidx/compose/animation/core/DecayAnimationSpecKt; +HSPLandroidx/compose/animation/core/DecayAnimationSpecKt;->generateDecayAnimationSpec(Landroidx/compose/animation/core/FloatDecayAnimationSpec;)Landroidx/compose/animation/core/DecayAnimationSpec; +Landroidx/compose/animation/core/DurationBasedAnimationSpec; +Landroidx/compose/animation/core/Easing; +Landroidx/compose/animation/core/EasingKt; +HSPLandroidx/compose/animation/core/EasingKt;->()V +HSPLandroidx/compose/animation/core/EasingKt;->getFastOutLinearInEasing()Landroidx/compose/animation/core/Easing; +HSPLandroidx/compose/animation/core/EasingKt;->getFastOutSlowInEasing()Landroidx/compose/animation/core/Easing; +HSPLandroidx/compose/animation/core/EasingKt;->getLinearEasing()Landroidx/compose/animation/core/Easing; +Landroidx/compose/animation/core/EasingKt$LinearEasing$1; +HSPLandroidx/compose/animation/core/EasingKt$LinearEasing$1;->()V +HSPLandroidx/compose/animation/core/EasingKt$LinearEasing$1;->()V +HSPLandroidx/compose/animation/core/EasingKt$LinearEasing$1;->transform(F)F +Landroidx/compose/animation/core/FiniteAnimationSpec; +Landroidx/compose/animation/core/FloatAnimationSpec; +Landroidx/compose/animation/core/FloatDecayAnimationSpec; +Landroidx/compose/animation/core/FloatSpringSpec; +HSPLandroidx/compose/animation/core/FloatSpringSpec;->()V +HSPLandroidx/compose/animation/core/FloatSpringSpec;->(FFF)V +HSPLandroidx/compose/animation/core/FloatSpringSpec;->(FFFILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/animation/core/FloatSpringSpec;->getDurationNanos(FFF)J +HSPLandroidx/compose/animation/core/FloatSpringSpec;->getEndVelocity(FFF)F +HSPLandroidx/compose/animation/core/FloatSpringSpec;->getValueFromNanos(JFFF)F +HSPLandroidx/compose/animation/core/FloatSpringSpec;->getVelocityFromNanos(JFFF)F +Landroidx/compose/animation/core/FloatTweenSpec; +HSPLandroidx/compose/animation/core/FloatTweenSpec;->()V +HSPLandroidx/compose/animation/core/FloatTweenSpec;->(IILandroidx/compose/animation/core/Easing;)V +HSPLandroidx/compose/animation/core/FloatTweenSpec;->clampPlayTime(J)J +HSPLandroidx/compose/animation/core/FloatTweenSpec;->getValueFromNanos(JFFF)F +HSPLandroidx/compose/animation/core/FloatTweenSpec;->getVelocityFromNanos(JFFF)F +Landroidx/compose/animation/core/InfiniteAnimationPolicyKt; +HSPLandroidx/compose/animation/core/InfiniteAnimationPolicyKt;->withInfiniteAnimationFrameNanos(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/animation/core/InfiniteRepeatableSpec; +HSPLandroidx/compose/animation/core/InfiniteRepeatableSpec;->()V +HSPLandroidx/compose/animation/core/InfiniteRepeatableSpec;->(Landroidx/compose/animation/core/DurationBasedAnimationSpec;Landroidx/compose/animation/core/RepeatMode;J)V +HSPLandroidx/compose/animation/core/InfiniteRepeatableSpec;->(Landroidx/compose/animation/core/DurationBasedAnimationSpec;Landroidx/compose/animation/core/RepeatMode;JLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/animation/core/InfiniteRepeatableSpec;->vectorize(Landroidx/compose/animation/core/TwoWayConverter;)Landroidx/compose/animation/core/VectorizedAnimationSpec; +Landroidx/compose/animation/core/InfiniteTransition; +HSPLandroidx/compose/animation/core/InfiniteTransition;->()V +HSPLandroidx/compose/animation/core/InfiniteTransition;->(Ljava/lang/String;)V +HSPLandroidx/compose/animation/core/InfiniteTransition;->access$getStartTimeNanos$p(Landroidx/compose/animation/core/InfiniteTransition;)J +HSPLandroidx/compose/animation/core/InfiniteTransition;->access$get_animations$p(Landroidx/compose/animation/core/InfiniteTransition;)Landroidx/compose/runtime/collection/MutableVector; +HSPLandroidx/compose/animation/core/InfiniteTransition;->access$onFrame(Landroidx/compose/animation/core/InfiniteTransition;J)V +HSPLandroidx/compose/animation/core/InfiniteTransition;->access$setRefreshChildNeeded(Landroidx/compose/animation/core/InfiniteTransition;Z)V +HSPLandroidx/compose/animation/core/InfiniteTransition;->access$setStartTimeNanos$p(Landroidx/compose/animation/core/InfiniteTransition;J)V +HSPLandroidx/compose/animation/core/InfiniteTransition;->addAnimation$animation_core_release(Landroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState;)V +HSPLandroidx/compose/animation/core/InfiniteTransition;->isRunning()Z +HSPLandroidx/compose/animation/core/InfiniteTransition;->onFrame(J)V +HSPLandroidx/compose/animation/core/InfiniteTransition;->removeAnimation$animation_core_release(Landroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState;)V +HSPLandroidx/compose/animation/core/InfiniteTransition;->run$animation_core_release(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/animation/core/InfiniteTransition;->setRefreshChildNeeded(Z)V +HSPLandroidx/compose/animation/core/InfiniteTransition;->setRunning(Z)V +Landroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState; +HSPLandroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState;->(Landroidx/compose/animation/core/InfiniteTransition;Ljava/lang/Object;Ljava/lang/Object;Landroidx/compose/animation/core/TwoWayConverter;Landroidx/compose/animation/core/AnimationSpec;Ljava/lang/String;)V +HSPLandroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState;->getInitialValue$animation_core_release()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState;->getTargetValue$animation_core_release()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState;->getValue()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState;->isFinished$animation_core_release()Z +HSPLandroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState;->onPlayTimeChanged$animation_core_release(J)V +HSPLandroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState;->reset$animation_core_release()V +HSPLandroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState;->setValue$animation_core_release(Ljava/lang/Object;)V +Landroidx/compose/animation/core/InfiniteTransition$run$1; +HSPLandroidx/compose/animation/core/InfiniteTransition$run$1;->(Landroidx/compose/runtime/MutableState;Landroidx/compose/animation/core/InfiniteTransition;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/animation/core/InfiniteTransition$run$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/animation/core/InfiniteTransition$run$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/InfiniteTransition$run$1$1; +HSPLandroidx/compose/animation/core/InfiniteTransition$run$1$1;->(Landroidx/compose/runtime/MutableState;Landroidx/compose/animation/core/InfiniteTransition;Lkotlin/jvm/internal/Ref$FloatRef;Lkotlinx/coroutines/CoroutineScope;)V +HSPLandroidx/compose/animation/core/InfiniteTransition$run$1$1;->invoke(J)V +HSPLandroidx/compose/animation/core/InfiniteTransition$run$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/InfiniteTransition$run$2; +HSPLandroidx/compose/animation/core/InfiniteTransition$run$2;->(Landroidx/compose/animation/core/InfiniteTransition;I)V +Landroidx/compose/animation/core/InfiniteTransitionKt; +HSPLandroidx/compose/animation/core/InfiniteTransitionKt;->animateFloat(Landroidx/compose/animation/core/InfiniteTransition;FFLandroidx/compose/animation/core/InfiniteRepeatableSpec;Ljava/lang/String;Landroidx/compose/runtime/Composer;II)Landroidx/compose/runtime/State; +HSPLandroidx/compose/animation/core/InfiniteTransitionKt;->animateValue(Landroidx/compose/animation/core/InfiniteTransition;Ljava/lang/Object;Ljava/lang/Object;Landroidx/compose/animation/core/TwoWayConverter;Landroidx/compose/animation/core/InfiniteRepeatableSpec;Ljava/lang/String;Landroidx/compose/runtime/Composer;II)Landroidx/compose/runtime/State; +HSPLandroidx/compose/animation/core/InfiniteTransitionKt;->rememberInfiniteTransition(Ljava/lang/String;Landroidx/compose/runtime/Composer;II)Landroidx/compose/animation/core/InfiniteTransition; +Landroidx/compose/animation/core/InfiniteTransitionKt$animateValue$1; +HSPLandroidx/compose/animation/core/InfiniteTransitionKt$animateValue$1;->(Ljava/lang/Object;Landroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState;Ljava/lang/Object;Landroidx/compose/animation/core/InfiniteRepeatableSpec;)V +HSPLandroidx/compose/animation/core/InfiniteTransitionKt$animateValue$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/InfiniteTransitionKt$animateValue$1;->invoke()V +Landroidx/compose/animation/core/InfiniteTransitionKt$animateValue$2; +HSPLandroidx/compose/animation/core/InfiniteTransitionKt$animateValue$2;->(Landroidx/compose/animation/core/InfiniteTransition;Landroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState;)V +HSPLandroidx/compose/animation/core/InfiniteTransitionKt$animateValue$2;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/animation/core/InfiniteTransitionKt$animateValue$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/InfiniteTransitionKt$animateValue$2$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/animation/core/InfiniteTransitionKt$animateValue$2$invoke$$inlined$onDispose$1;->(Landroidx/compose/animation/core/InfiniteTransition;Landroidx/compose/animation/core/InfiniteTransition$TransitionAnimationState;)V +HSPLandroidx/compose/animation/core/InfiniteTransitionKt$animateValue$2$invoke$$inlined$onDispose$1;->dispose()V +Landroidx/compose/animation/core/KeyframesSpec; +HSPLandroidx/compose/animation/core/KeyframesSpec;->()V +HSPLandroidx/compose/animation/core/KeyframesSpec;->(Landroidx/compose/animation/core/KeyframesSpec$KeyframesSpecConfig;)V +HSPLandroidx/compose/animation/core/KeyframesSpec;->vectorize(Landroidx/compose/animation/core/TwoWayConverter;)Landroidx/compose/animation/core/VectorizedDurationBasedAnimationSpec; +HSPLandroidx/compose/animation/core/KeyframesSpec;->vectorize(Landroidx/compose/animation/core/TwoWayConverter;)Landroidx/compose/animation/core/VectorizedKeyframesSpec; +Landroidx/compose/animation/core/KeyframesSpec$KeyframeEntity; +HSPLandroidx/compose/animation/core/KeyframesSpec$KeyframeEntity;->()V +HSPLandroidx/compose/animation/core/KeyframesSpec$KeyframeEntity;->(Ljava/lang/Object;Landroidx/compose/animation/core/Easing;)V +HSPLandroidx/compose/animation/core/KeyframesSpec$KeyframeEntity;->(Ljava/lang/Object;Landroidx/compose/animation/core/Easing;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/animation/core/KeyframesSpec$KeyframeEntity;->setEasing$animation_core_release(Landroidx/compose/animation/core/Easing;)V +HSPLandroidx/compose/animation/core/KeyframesSpec$KeyframeEntity;->toPair$animation_core_release(Lkotlin/jvm/functions/Function1;)Lkotlin/Pair; +Landroidx/compose/animation/core/KeyframesSpec$KeyframesSpecConfig; +HSPLandroidx/compose/animation/core/KeyframesSpec$KeyframesSpecConfig;->()V +HSPLandroidx/compose/animation/core/KeyframesSpec$KeyframesSpecConfig;->()V +HSPLandroidx/compose/animation/core/KeyframesSpec$KeyframesSpecConfig;->at(Ljava/lang/Object;I)Landroidx/compose/animation/core/KeyframesSpec$KeyframeEntity; +HSPLandroidx/compose/animation/core/KeyframesSpec$KeyframesSpecConfig;->getDelayMillis()I +HSPLandroidx/compose/animation/core/KeyframesSpec$KeyframesSpecConfig;->getDurationMillis()I +HSPLandroidx/compose/animation/core/KeyframesSpec$KeyframesSpecConfig;->getKeyframes$animation_core_release()Ljava/util/Map; +HSPLandroidx/compose/animation/core/KeyframesSpec$KeyframesSpecConfig;->setDurationMillis(I)V +HSPLandroidx/compose/animation/core/KeyframesSpec$KeyframesSpecConfig;->with(Landroidx/compose/animation/core/KeyframesSpec$KeyframeEntity;Landroidx/compose/animation/core/Easing;)V +Landroidx/compose/animation/core/Motion; +HSPLandroidx/compose/animation/core/Motion;->constructor-impl(J)J +HSPLandroidx/compose/animation/core/Motion;->getValue-impl(J)F +HSPLandroidx/compose/animation/core/Motion;->getVelocity-impl(J)F +Landroidx/compose/animation/core/MutableTransitionState; +HSPLandroidx/compose/animation/core/MutableTransitionState;->()V +HSPLandroidx/compose/animation/core/MutableTransitionState;->(Ljava/lang/Object;)V +HSPLandroidx/compose/animation/core/MutableTransitionState;->getCurrentState()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/MutableTransitionState;->getTargetState()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/MutableTransitionState;->setCurrentState$animation_core_release(Ljava/lang/Object;)V +HSPLandroidx/compose/animation/core/MutableTransitionState;->setRunning$animation_core_release(Z)V +HSPLandroidx/compose/animation/core/MutableTransitionState;->setTargetState(Ljava/lang/Object;)V +Landroidx/compose/animation/core/MutatePriority; +HSPLandroidx/compose/animation/core/MutatePriority;->$values()[Landroidx/compose/animation/core/MutatePriority; +HSPLandroidx/compose/animation/core/MutatePriority;->()V +HSPLandroidx/compose/animation/core/MutatePriority;->(Ljava/lang/String;I)V +Landroidx/compose/animation/core/MutationInterruptedException; +PLandroidx/compose/animation/core/MutationInterruptedException;->()V +PLandroidx/compose/animation/core/MutationInterruptedException;->fillInStackTrace()Ljava/lang/Throwable; +Landroidx/compose/animation/core/MutatorMutex; +HSPLandroidx/compose/animation/core/MutatorMutex;->()V +HSPLandroidx/compose/animation/core/MutatorMutex;->access$getCurrentMutator$p(Landroidx/compose/animation/core/MutatorMutex;)Ljava/util/concurrent/atomic/AtomicReference; +HSPLandroidx/compose/animation/core/MutatorMutex;->access$getMutex$p(Landroidx/compose/animation/core/MutatorMutex;)Lkotlinx/coroutines/sync/Mutex; +HSPLandroidx/compose/animation/core/MutatorMutex;->access$tryMutateOrCancel(Landroidx/compose/animation/core/MutatorMutex;Landroidx/compose/animation/core/MutatorMutex$Mutator;)V +HSPLandroidx/compose/animation/core/MutatorMutex;->mutate$default(Landroidx/compose/animation/core/MutatorMutex;Landroidx/compose/animation/core/MutatePriority;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/MutatorMutex;->mutate(Landroidx/compose/animation/core/MutatePriority;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/MutatorMutex;->tryMutateOrCancel(Landroidx/compose/animation/core/MutatorMutex$Mutator;)V +Landroidx/compose/animation/core/MutatorMutex$Mutator; +HSPLandroidx/compose/animation/core/MutatorMutex$Mutator;->(Landroidx/compose/animation/core/MutatePriority;Lkotlinx/coroutines/Job;)V +PLandroidx/compose/animation/core/MutatorMutex$Mutator;->canInterrupt(Landroidx/compose/animation/core/MutatorMutex$Mutator;)Z +PLandroidx/compose/animation/core/MutatorMutex$Mutator;->cancel()V +Landroidx/compose/animation/core/MutatorMutex$mutate$2; +HSPLandroidx/compose/animation/core/MutatorMutex$mutate$2;->(Landroidx/compose/animation/core/MutatePriority;Landroidx/compose/animation/core/MutatorMutex;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/animation/core/MutatorMutex$mutate$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/animation/core/MutatorMutex$mutate$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/MutatorMutex$mutate$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/MutatorMutex$mutate$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/RepeatMode; +HSPLandroidx/compose/animation/core/RepeatMode;->$values()[Landroidx/compose/animation/core/RepeatMode; +HSPLandroidx/compose/animation/core/RepeatMode;->()V +HSPLandroidx/compose/animation/core/RepeatMode;->(Ljava/lang/String;I)V +Landroidx/compose/animation/core/SnapSpec; +HSPLandroidx/compose/animation/core/SnapSpec;->()V +HSPLandroidx/compose/animation/core/SnapSpec;->(I)V +Landroidx/compose/animation/core/SpringEstimationKt; +HSPLandroidx/compose/animation/core/SpringEstimationKt;->estimateAnimationDurationMillis(DDDDD)J +HSPLandroidx/compose/animation/core/SpringEstimationKt;->estimateAnimationDurationMillis(FFFFF)J +HSPLandroidx/compose/animation/core/SpringEstimationKt;->estimateCriticallyDamped(Landroidx/compose/animation/core/ComplexDouble;DDD)D +HSPLandroidx/compose/animation/core/SpringEstimationKt;->estimateDurationInternal(Landroidx/compose/animation/core/ComplexDouble;Landroidx/compose/animation/core/ComplexDouble;DDDD)J +Landroidx/compose/animation/core/SpringSimulation; +HSPLandroidx/compose/animation/core/SpringSimulation;->(F)V +HSPLandroidx/compose/animation/core/SpringSimulation;->getDampingRatio()F +HSPLandroidx/compose/animation/core/SpringSimulation;->getStiffness()F +HSPLandroidx/compose/animation/core/SpringSimulation;->init()V +HSPLandroidx/compose/animation/core/SpringSimulation;->setDampingRatio(F)V +HSPLandroidx/compose/animation/core/SpringSimulation;->setFinalPosition(F)V +HSPLandroidx/compose/animation/core/SpringSimulation;->setStiffness(F)V +HSPLandroidx/compose/animation/core/SpringSimulation;->updateValues-IJZedt4$animation_core_release(FFJ)J +Landroidx/compose/animation/core/SpringSimulationKt; +HSPLandroidx/compose/animation/core/SpringSimulationKt;->()V +HSPLandroidx/compose/animation/core/SpringSimulationKt;->Motion(FF)J +HSPLandroidx/compose/animation/core/SpringSimulationKt;->getUNSET()F +Landroidx/compose/animation/core/SpringSpec; +HSPLandroidx/compose/animation/core/SpringSpec;->()V +HSPLandroidx/compose/animation/core/SpringSpec;->(FFLjava/lang/Object;)V +HSPLandroidx/compose/animation/core/SpringSpec;->(FFLjava/lang/Object;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/animation/core/SpringSpec;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/animation/core/SpringSpec;->getVisibilityThreshold()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/SpringSpec;->vectorize(Landroidx/compose/animation/core/TwoWayConverter;)Landroidx/compose/animation/core/VectorizedAnimationSpec; +HSPLandroidx/compose/animation/core/SpringSpec;->vectorize(Landroidx/compose/animation/core/TwoWayConverter;)Landroidx/compose/animation/core/VectorizedSpringSpec; +Landroidx/compose/animation/core/StartOffset; +HSPLandroidx/compose/animation/core/StartOffset;->constructor-impl$default(IIILkotlin/jvm/internal/DefaultConstructorMarker;)J +HSPLandroidx/compose/animation/core/StartOffset;->constructor-impl(II)J +HSPLandroidx/compose/animation/core/StartOffset;->constructor-impl(J)J +Landroidx/compose/animation/core/StartOffsetType; +HSPLandroidx/compose/animation/core/StartOffsetType;->()V +HSPLandroidx/compose/animation/core/StartOffsetType;->access$getDelay$cp()I +HSPLandroidx/compose/animation/core/StartOffsetType;->constructor-impl(I)I +Landroidx/compose/animation/core/StartOffsetType$Companion; +HSPLandroidx/compose/animation/core/StartOffsetType$Companion;->()V +HSPLandroidx/compose/animation/core/StartOffsetType$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/animation/core/StartOffsetType$Companion;->getDelay-Eo1U57Q()I +Landroidx/compose/animation/core/SuspendAnimationKt; +HSPLandroidx/compose/animation/core/SuspendAnimationKt;->access$doAnimationFrameWithScale(Landroidx/compose/animation/core/AnimationScope;JFLandroidx/compose/animation/core/Animation;Landroidx/compose/animation/core/AnimationState;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/animation/core/SuspendAnimationKt;->animate(Landroidx/compose/animation/core/AnimationState;Landroidx/compose/animation/core/Animation;JLkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/SuspendAnimationKt;->callWithFrameNanos(Landroidx/compose/animation/core/Animation;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/SuspendAnimationKt;->doAnimationFrame(Landroidx/compose/animation/core/AnimationScope;JJLandroidx/compose/animation/core/Animation;Landroidx/compose/animation/core/AnimationState;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/animation/core/SuspendAnimationKt;->doAnimationFrameWithScale(Landroidx/compose/animation/core/AnimationScope;JFLandroidx/compose/animation/core/Animation;Landroidx/compose/animation/core/AnimationState;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/animation/core/SuspendAnimationKt;->getDurationScale(Lkotlin/coroutines/CoroutineContext;)F +HSPLandroidx/compose/animation/core/SuspendAnimationKt;->updateState(Landroidx/compose/animation/core/AnimationScope;Landroidx/compose/animation/core/AnimationState;)V +Landroidx/compose/animation/core/SuspendAnimationKt$animate$4; +HSPLandroidx/compose/animation/core/SuspendAnimationKt$animate$4;->(Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/animation/core/SuspendAnimationKt$animate$4;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/SuspendAnimationKt$animate$6; +HSPLandroidx/compose/animation/core/SuspendAnimationKt$animate$6;->(Lkotlin/jvm/internal/Ref$ObjectRef;Ljava/lang/Object;Landroidx/compose/animation/core/Animation;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationState;FLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/animation/core/SuspendAnimationKt$animate$6;->invoke(J)V +HSPLandroidx/compose/animation/core/SuspendAnimationKt$animate$6;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/SuspendAnimationKt$animate$6$1; +HSPLandroidx/compose/animation/core/SuspendAnimationKt$animate$6$1;->(Landroidx/compose/animation/core/AnimationState;)V +Landroidx/compose/animation/core/SuspendAnimationKt$animate$7; +PLandroidx/compose/animation/core/SuspendAnimationKt$animate$7;->(Landroidx/compose/animation/core/AnimationState;)V +Landroidx/compose/animation/core/SuspendAnimationKt$animate$9; +HSPLandroidx/compose/animation/core/SuspendAnimationKt$animate$9;->(Lkotlin/jvm/internal/Ref$ObjectRef;FLandroidx/compose/animation/core/Animation;Landroidx/compose/animation/core/AnimationState;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/animation/core/SuspendAnimationKt$animate$9;->invoke(J)V +HSPLandroidx/compose/animation/core/SuspendAnimationKt$animate$9;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/SuspendAnimationKt$callWithFrameNanos$2; +HSPLandroidx/compose/animation/core/SuspendAnimationKt$callWithFrameNanos$2;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/animation/core/SuspendAnimationKt$callWithFrameNanos$2;->invoke(J)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/SuspendAnimationKt$callWithFrameNanos$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/TargetBasedAnimation; +HSPLandroidx/compose/animation/core/TargetBasedAnimation;->()V +HSPLandroidx/compose/animation/core/TargetBasedAnimation;->(Landroidx/compose/animation/core/AnimationSpec;Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationVector;)V +HSPLandroidx/compose/animation/core/TargetBasedAnimation;->(Landroidx/compose/animation/core/AnimationSpec;Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationVector;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/animation/core/TargetBasedAnimation;->(Landroidx/compose/animation/core/VectorizedAnimationSpec;Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationVector;)V +HSPLandroidx/compose/animation/core/TargetBasedAnimation;->getDurationNanos()J +HSPLandroidx/compose/animation/core/TargetBasedAnimation;->getTargetValue()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/TargetBasedAnimation;->getTypeConverter()Landroidx/compose/animation/core/TwoWayConverter; +HSPLandroidx/compose/animation/core/TargetBasedAnimation;->getValueFromNanos(J)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/TargetBasedAnimation;->getVelocityVectorFromNanos(J)Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/TargetBasedAnimation;->isInfinite()Z +Landroidx/compose/animation/core/Transition; +HSPLandroidx/compose/animation/core/Transition;->()V +HSPLandroidx/compose/animation/core/Transition;->(Landroidx/compose/animation/core/MutableTransitionState;Ljava/lang/String;)V +HSPLandroidx/compose/animation/core/Transition;->(Ljava/lang/Object;Ljava/lang/String;)V +HSPLandroidx/compose/animation/core/Transition;->access$onChildAnimationUpdated(Landroidx/compose/animation/core/Transition;)V +HSPLandroidx/compose/animation/core/Transition;->addAnimation$animation_core_release(Landroidx/compose/animation/core/Transition$TransitionAnimationState;)Z +HSPLandroidx/compose/animation/core/Transition;->addTransition$animation_core_release(Landroidx/compose/animation/core/Transition;)Z +HSPLandroidx/compose/animation/core/Transition;->animateTo$animation_core_release(Ljava/lang/Object;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/animation/core/Transition;->getCurrentState()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Transition;->getLabel()Ljava/lang/String; +HSPLandroidx/compose/animation/core/Transition;->getPlayTimeNanos()J +HSPLandroidx/compose/animation/core/Transition;->getSegment()Landroidx/compose/animation/core/Transition$Segment; +HSPLandroidx/compose/animation/core/Transition;->getStartTimeNanos()J +HSPLandroidx/compose/animation/core/Transition;->getTargetState()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Transition;->getUpdateChildrenNeeded$animation_core_release()Z +HSPLandroidx/compose/animation/core/Transition;->isRunning()Z +HSPLandroidx/compose/animation/core/Transition;->isSeeking()Z +HSPLandroidx/compose/animation/core/Transition;->onChildAnimationUpdated()V +HSPLandroidx/compose/animation/core/Transition;->onFrame$animation_core_release(JF)V +HSPLandroidx/compose/animation/core/Transition;->onTransitionEnd$animation_core_release()V +HSPLandroidx/compose/animation/core/Transition;->onTransitionStart$animation_core_release(J)V +HSPLandroidx/compose/animation/core/Transition;->removeAnimation$animation_core_release(Landroidx/compose/animation/core/Transition$DeferredAnimation;)V +HSPLandroidx/compose/animation/core/Transition;->removeAnimation$animation_core_release(Landroidx/compose/animation/core/Transition$TransitionAnimationState;)V +HSPLandroidx/compose/animation/core/Transition;->removeTransition$animation_core_release(Landroidx/compose/animation/core/Transition;)Z +HSPLandroidx/compose/animation/core/Transition;->setCurrentState$animation_core_release(Ljava/lang/Object;)V +HSPLandroidx/compose/animation/core/Transition;->setPlayTimeNanos(J)V +HSPLandroidx/compose/animation/core/Transition;->setSeeking$animation_core_release(Z)V +HSPLandroidx/compose/animation/core/Transition;->setSegment(Landroidx/compose/animation/core/Transition$Segment;)V +HSPLandroidx/compose/animation/core/Transition;->setStartTimeNanos(J)V +HSPLandroidx/compose/animation/core/Transition;->setTargetState$animation_core_release(Ljava/lang/Object;)V +HSPLandroidx/compose/animation/core/Transition;->setUpdateChildrenNeeded$animation_core_release(Z)V +HSPLandroidx/compose/animation/core/Transition;->updateTarget$animation_core_release(Ljava/lang/Object;Landroidx/compose/runtime/Composer;I)V +Landroidx/compose/animation/core/Transition$DeferredAnimation; +HSPLandroidx/compose/animation/core/Transition$DeferredAnimation;->(Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/String;)V +HSPLandroidx/compose/animation/core/Transition$DeferredAnimation;->animate(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/State; +HSPLandroidx/compose/animation/core/Transition$DeferredAnimation;->getData$animation_core_release()Landroidx/compose/animation/core/Transition$DeferredAnimation$DeferredAnimationData; +HSPLandroidx/compose/animation/core/Transition$DeferredAnimation;->setData$animation_core_release(Landroidx/compose/animation/core/Transition$DeferredAnimation$DeferredAnimationData;)V +Landroidx/compose/animation/core/Transition$DeferredAnimation$DeferredAnimationData; +HSPLandroidx/compose/animation/core/Transition$DeferredAnimation$DeferredAnimationData;->(Landroidx/compose/animation/core/Transition$DeferredAnimation;Landroidx/compose/animation/core/Transition$TransitionAnimationState;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/animation/core/Transition$DeferredAnimation$DeferredAnimationData;->getAnimation()Landroidx/compose/animation/core/Transition$TransitionAnimationState; +HSPLandroidx/compose/animation/core/Transition$DeferredAnimation$DeferredAnimationData;->getValue()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Transition$DeferredAnimation$DeferredAnimationData;->setTargetValueByState(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/animation/core/Transition$DeferredAnimation$DeferredAnimationData;->setTransitionSpec(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/animation/core/Transition$DeferredAnimation$DeferredAnimationData;->updateAnimationStates(Landroidx/compose/animation/core/Transition$Segment;)V +Landroidx/compose/animation/core/Transition$Segment; +HSPLandroidx/compose/animation/core/Transition$Segment;->isTransitioningTo(Ljava/lang/Object;Ljava/lang/Object;)Z +Landroidx/compose/animation/core/Transition$SegmentImpl; +HSPLandroidx/compose/animation/core/Transition$SegmentImpl;->(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLandroidx/compose/animation/core/Transition$SegmentImpl;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/animation/core/Transition$SegmentImpl;->getInitialState()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Transition$SegmentImpl;->getTargetState()Ljava/lang/Object; +Landroidx/compose/animation/core/Transition$TransitionAnimationState; +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->(Landroidx/compose/animation/core/Transition;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/String;)V +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->getAnimation()Landroidx/compose/animation/core/TargetBasedAnimation; +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->getAnimationSpec()Landroidx/compose/animation/core/FiniteAnimationSpec; +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->getNeedsReset()Z +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->getOffsetTimeNanos()J +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->getTargetValue()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->getValue()Ljava/lang/Object; +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->isFinished$animation_core_release()Z +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->onPlayTimeChanged$animation_core_release(JF)V +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->resetAnimation$animation_core_release()V +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->setAnimation(Landroidx/compose/animation/core/TargetBasedAnimation;)V +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->setAnimationSpec(Landroidx/compose/animation/core/FiniteAnimationSpec;)V +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->setFinished$animation_core_release(Z)V +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->setNeedsReset(Z)V +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->setOffsetTimeNanos(J)V +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->setTargetValue(Ljava/lang/Object;)V +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->setValue$animation_core_release(Ljava/lang/Object;)V +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->updateAnimation$default(Landroidx/compose/animation/core/Transition$TransitionAnimationState;Ljava/lang/Object;ZILjava/lang/Object;)V +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->updateAnimation(Ljava/lang/Object;Z)V +HSPLandroidx/compose/animation/core/Transition$TransitionAnimationState;->updateTargetValue$animation_core_release(Ljava/lang/Object;Landroidx/compose/animation/core/FiniteAnimationSpec;)V +Landroidx/compose/animation/core/Transition$animateTo$1$1; +HSPLandroidx/compose/animation/core/Transition$animateTo$1$1;->(Landroidx/compose/animation/core/Transition;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/animation/core/Transition$animateTo$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/animation/core/Transition$animateTo$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/Transition$animateTo$1$1$1; +HSPLandroidx/compose/animation/core/Transition$animateTo$1$1$1;->(Landroidx/compose/animation/core/Transition;F)V +HSPLandroidx/compose/animation/core/Transition$animateTo$1$1$1;->invoke(J)V +HSPLandroidx/compose/animation/core/Transition$animateTo$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/Transition$animateTo$2; +HSPLandroidx/compose/animation/core/Transition$animateTo$2;->(Landroidx/compose/animation/core/Transition;Ljava/lang/Object;I)V +HSPLandroidx/compose/animation/core/Transition$animateTo$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/animation/core/Transition$animateTo$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/Transition$totalDurationNanos$2; +HSPLandroidx/compose/animation/core/Transition$totalDurationNanos$2;->(Landroidx/compose/animation/core/Transition;)V +Landroidx/compose/animation/core/Transition$updateTarget$2; +HSPLandroidx/compose/animation/core/Transition$updateTarget$2;->(Landroidx/compose/animation/core/Transition;Ljava/lang/Object;I)V +HSPLandroidx/compose/animation/core/Transition$updateTarget$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/animation/core/Transition$updateTarget$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/TransitionKt; +HSPLandroidx/compose/animation/core/TransitionKt;->createChildTransitionInternal(Landroidx/compose/animation/core/Transition;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;Landroidx/compose/runtime/Composer;I)Landroidx/compose/animation/core/Transition; +HSPLandroidx/compose/animation/core/TransitionKt;->createDeferredAnimation(Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/String;Landroidx/compose/runtime/Composer;II)Landroidx/compose/animation/core/Transition$DeferredAnimation; +HSPLandroidx/compose/animation/core/TransitionKt;->createTransitionAnimation(Landroidx/compose/animation/core/Transition;Ljava/lang/Object;Ljava/lang/Object;Landroidx/compose/animation/core/FiniteAnimationSpec;Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/String;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +HSPLandroidx/compose/animation/core/TransitionKt;->updateTransition(Ljava/lang/Object;Ljava/lang/String;Landroidx/compose/runtime/Composer;II)Landroidx/compose/animation/core/Transition; +Landroidx/compose/animation/core/TransitionKt$createChildTransitionInternal$1$1; +HSPLandroidx/compose/animation/core/TransitionKt$createChildTransitionInternal$1$1;->(Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/core/Transition;)V +HSPLandroidx/compose/animation/core/TransitionKt$createChildTransitionInternal$1$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/animation/core/TransitionKt$createChildTransitionInternal$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/TransitionKt$createChildTransitionInternal$1$1$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/animation/core/TransitionKt$createChildTransitionInternal$1$1$invoke$$inlined$onDispose$1;->(Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/core/Transition;)V +HSPLandroidx/compose/animation/core/TransitionKt$createChildTransitionInternal$1$1$invoke$$inlined$onDispose$1;->dispose()V +Landroidx/compose/animation/core/TransitionKt$createDeferredAnimation$1; +HSPLandroidx/compose/animation/core/TransitionKt$createDeferredAnimation$1;->(Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/core/Transition$DeferredAnimation;)V +HSPLandroidx/compose/animation/core/TransitionKt$createDeferredAnimation$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/animation/core/TransitionKt$createDeferredAnimation$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/TransitionKt$createDeferredAnimation$1$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/animation/core/TransitionKt$createDeferredAnimation$1$invoke$$inlined$onDispose$1;->(Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/core/Transition$DeferredAnimation;)V +HSPLandroidx/compose/animation/core/TransitionKt$createDeferredAnimation$1$invoke$$inlined$onDispose$1;->dispose()V +Landroidx/compose/animation/core/TransitionKt$createTransitionAnimation$1$1; +HSPLandroidx/compose/animation/core/TransitionKt$createTransitionAnimation$1$1;->(Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/core/Transition$TransitionAnimationState;)V +HSPLandroidx/compose/animation/core/TransitionKt$createTransitionAnimation$1$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/animation/core/TransitionKt$createTransitionAnimation$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/TransitionKt$createTransitionAnimation$1$1$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/animation/core/TransitionKt$createTransitionAnimation$1$1$invoke$$inlined$onDispose$1;->(Landroidx/compose/animation/core/Transition;Landroidx/compose/animation/core/Transition$TransitionAnimationState;)V +HSPLandroidx/compose/animation/core/TransitionKt$createTransitionAnimation$1$1$invoke$$inlined$onDispose$1;->dispose()V +Landroidx/compose/animation/core/TransitionKt$updateTransition$1$1; +HSPLandroidx/compose/animation/core/TransitionKt$updateTransition$1$1;->(Landroidx/compose/animation/core/Transition;)V +HSPLandroidx/compose/animation/core/TransitionKt$updateTransition$1$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/animation/core/TransitionKt$updateTransition$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/TransitionKt$updateTransition$1$1$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/animation/core/TransitionKt$updateTransition$1$1$invoke$$inlined$onDispose$1;->(Landroidx/compose/animation/core/Transition;)V +HSPLandroidx/compose/animation/core/TransitionKt$updateTransition$1$1$invoke$$inlined$onDispose$1;->dispose()V +Landroidx/compose/animation/core/TweenSpec; +HSPLandroidx/compose/animation/core/TweenSpec;->()V +HSPLandroidx/compose/animation/core/TweenSpec;->(IILandroidx/compose/animation/core/Easing;)V +HSPLandroidx/compose/animation/core/TweenSpec;->(IILandroidx/compose/animation/core/Easing;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/animation/core/TweenSpec;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/animation/core/TweenSpec;->vectorize(Landroidx/compose/animation/core/TwoWayConverter;)Landroidx/compose/animation/core/VectorizedAnimationSpec; +HSPLandroidx/compose/animation/core/TweenSpec;->vectorize(Landroidx/compose/animation/core/TwoWayConverter;)Landroidx/compose/animation/core/VectorizedDurationBasedAnimationSpec; +HSPLandroidx/compose/animation/core/TweenSpec;->vectorize(Landroidx/compose/animation/core/TwoWayConverter;)Landroidx/compose/animation/core/VectorizedTweenSpec; +Landroidx/compose/animation/core/TwoWayConverter; +Landroidx/compose/animation/core/TwoWayConverterImpl; +HSPLandroidx/compose/animation/core/TwoWayConverterImpl;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/animation/core/TwoWayConverterImpl;->getConvertFromVector()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/animation/core/TwoWayConverterImpl;->getConvertToVector()Lkotlin/jvm/functions/Function1; +Landroidx/compose/animation/core/VectorConvertersKt; +HSPLandroidx/compose/animation/core/VectorConvertersKt;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt;->TwoWayConverter(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Landroidx/compose/animation/core/TwoWayConverter; +HSPLandroidx/compose/animation/core/VectorConvertersKt;->getVectorConverter(Landroidx/compose/ui/geometry/Offset$Companion;)Landroidx/compose/animation/core/TwoWayConverter; +HSPLandroidx/compose/animation/core/VectorConvertersKt;->getVectorConverter(Landroidx/compose/ui/geometry/Rect$Companion;)Landroidx/compose/animation/core/TwoWayConverter; +HSPLandroidx/compose/animation/core/VectorConvertersKt;->getVectorConverter(Landroidx/compose/ui/geometry/Size$Companion;)Landroidx/compose/animation/core/TwoWayConverter; +HSPLandroidx/compose/animation/core/VectorConvertersKt;->getVectorConverter(Landroidx/compose/ui/unit/Dp$Companion;)Landroidx/compose/animation/core/TwoWayConverter; +HSPLandroidx/compose/animation/core/VectorConvertersKt;->getVectorConverter(Landroidx/compose/ui/unit/DpOffset$Companion;)Landroidx/compose/animation/core/TwoWayConverter; +HSPLandroidx/compose/animation/core/VectorConvertersKt;->getVectorConverter(Landroidx/compose/ui/unit/IntOffset$Companion;)Landroidx/compose/animation/core/TwoWayConverter; +HSPLandroidx/compose/animation/core/VectorConvertersKt;->getVectorConverter(Landroidx/compose/ui/unit/IntSize$Companion;)Landroidx/compose/animation/core/TwoWayConverter; +HSPLandroidx/compose/animation/core/VectorConvertersKt;->getVectorConverter(Lkotlin/jvm/internal/FloatCompanionObject;)Landroidx/compose/animation/core/TwoWayConverter; +HSPLandroidx/compose/animation/core/VectorConvertersKt;->getVectorConverter(Lkotlin/jvm/internal/IntCompanionObject;)Landroidx/compose/animation/core/TwoWayConverter; +HSPLandroidx/compose/animation/core/VectorConvertersKt;->lerp(FFF)F +Landroidx/compose/animation/core/VectorConvertersKt$DpOffsetToVector$1; +HSPLandroidx/compose/animation/core/VectorConvertersKt$DpOffsetToVector$1;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$DpOffsetToVector$1;->()V +Landroidx/compose/animation/core/VectorConvertersKt$DpOffsetToVector$2; +HSPLandroidx/compose/animation/core/VectorConvertersKt$DpOffsetToVector$2;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$DpOffsetToVector$2;->()V +Landroidx/compose/animation/core/VectorConvertersKt$DpToVector$1; +HSPLandroidx/compose/animation/core/VectorConvertersKt$DpToVector$1;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$DpToVector$1;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$DpToVector$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/VectorConvertersKt$DpToVector$1;->invoke-0680j_4(F)Landroidx/compose/animation/core/AnimationVector1D; +Landroidx/compose/animation/core/VectorConvertersKt$DpToVector$2; +HSPLandroidx/compose/animation/core/VectorConvertersKt$DpToVector$2;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$DpToVector$2;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$DpToVector$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/VectorConvertersKt$DpToVector$2;->invoke-u2uoSUM(Landroidx/compose/animation/core/AnimationVector1D;)F +Landroidx/compose/animation/core/VectorConvertersKt$FloatToVector$1; +HSPLandroidx/compose/animation/core/VectorConvertersKt$FloatToVector$1;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$FloatToVector$1;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$FloatToVector$1;->invoke(F)Landroidx/compose/animation/core/AnimationVector1D; +HSPLandroidx/compose/animation/core/VectorConvertersKt$FloatToVector$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/VectorConvertersKt$FloatToVector$2; +HSPLandroidx/compose/animation/core/VectorConvertersKt$FloatToVector$2;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$FloatToVector$2;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$FloatToVector$2;->invoke(Landroidx/compose/animation/core/AnimationVector1D;)Ljava/lang/Float; +HSPLandroidx/compose/animation/core/VectorConvertersKt$FloatToVector$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/VectorConvertersKt$IntOffsetToVector$1; +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntOffsetToVector$1;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntOffsetToVector$1;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntOffsetToVector$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntOffsetToVector$1;->invoke--gyyYBs(J)Landroidx/compose/animation/core/AnimationVector2D; +Landroidx/compose/animation/core/VectorConvertersKt$IntOffsetToVector$2; +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntOffsetToVector$2;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntOffsetToVector$2;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntOffsetToVector$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntOffsetToVector$2;->invoke-Bjo55l4(Landroidx/compose/animation/core/AnimationVector2D;)J +Landroidx/compose/animation/core/VectorConvertersKt$IntSizeToVector$1; +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntSizeToVector$1;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntSizeToVector$1;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntSizeToVector$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntSizeToVector$1;->invoke-ozmzZPI(J)Landroidx/compose/animation/core/AnimationVector2D; +Landroidx/compose/animation/core/VectorConvertersKt$IntSizeToVector$2; +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntSizeToVector$2;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntSizeToVector$2;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntSizeToVector$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntSizeToVector$2;->invoke-YEO4UFw(Landroidx/compose/animation/core/AnimationVector2D;)J +Landroidx/compose/animation/core/VectorConvertersKt$IntToVector$1; +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntToVector$1;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntToVector$1;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntToVector$1;->invoke(I)Landroidx/compose/animation/core/AnimationVector1D; +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntToVector$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/VectorConvertersKt$IntToVector$2; +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntToVector$2;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntToVector$2;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntToVector$2;->invoke(Landroidx/compose/animation/core/AnimationVector1D;)Ljava/lang/Integer; +HSPLandroidx/compose/animation/core/VectorConvertersKt$IntToVector$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/animation/core/VectorConvertersKt$OffsetToVector$1; +HSPLandroidx/compose/animation/core/VectorConvertersKt$OffsetToVector$1;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$OffsetToVector$1;->()V +Landroidx/compose/animation/core/VectorConvertersKt$OffsetToVector$2; +HSPLandroidx/compose/animation/core/VectorConvertersKt$OffsetToVector$2;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$OffsetToVector$2;->()V +Landroidx/compose/animation/core/VectorConvertersKt$RectToVector$1; +HSPLandroidx/compose/animation/core/VectorConvertersKt$RectToVector$1;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$RectToVector$1;->()V +Landroidx/compose/animation/core/VectorConvertersKt$RectToVector$2; +HSPLandroidx/compose/animation/core/VectorConvertersKt$RectToVector$2;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$RectToVector$2;->()V +Landroidx/compose/animation/core/VectorConvertersKt$SizeToVector$1; +HSPLandroidx/compose/animation/core/VectorConvertersKt$SizeToVector$1;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$SizeToVector$1;->()V +Landroidx/compose/animation/core/VectorConvertersKt$SizeToVector$2; +HSPLandroidx/compose/animation/core/VectorConvertersKt$SizeToVector$2;->()V +HSPLandroidx/compose/animation/core/VectorConvertersKt$SizeToVector$2;->()V +Landroidx/compose/animation/core/VectorizedAnimationSpec; +HSPLandroidx/compose/animation/core/VectorizedAnimationSpec;->getEndVelocity(Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +Landroidx/compose/animation/core/VectorizedAnimationSpecKt; +HSPLandroidx/compose/animation/core/VectorizedAnimationSpecKt;->access$clampPlayTime(Landroidx/compose/animation/core/VectorizedDurationBasedAnimationSpec;J)J +HSPLandroidx/compose/animation/core/VectorizedAnimationSpecKt;->access$createSpringAnimations(Landroidx/compose/animation/core/AnimationVector;FF)Landroidx/compose/animation/core/Animations; +HSPLandroidx/compose/animation/core/VectorizedAnimationSpecKt;->clampPlayTime(Landroidx/compose/animation/core/VectorizedDurationBasedAnimationSpec;J)J +HSPLandroidx/compose/animation/core/VectorizedAnimationSpecKt;->createSpringAnimations(Landroidx/compose/animation/core/AnimationVector;FF)Landroidx/compose/animation/core/Animations; +HSPLandroidx/compose/animation/core/VectorizedAnimationSpecKt;->getValueFromMillis(Landroidx/compose/animation/core/VectorizedAnimationSpec;JLandroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +Landroidx/compose/animation/core/VectorizedAnimationSpecKt$createSpringAnimations$1; +HSPLandroidx/compose/animation/core/VectorizedAnimationSpecKt$createSpringAnimations$1;->(Landroidx/compose/animation/core/AnimationVector;FF)V +HSPLandroidx/compose/animation/core/VectorizedAnimationSpecKt$createSpringAnimations$1;->get(I)Landroidx/compose/animation/core/FloatAnimationSpec; +HSPLandroidx/compose/animation/core/VectorizedAnimationSpecKt$createSpringAnimations$1;->get(I)Landroidx/compose/animation/core/FloatSpringSpec; +Landroidx/compose/animation/core/VectorizedAnimationSpecKt$createSpringAnimations$2; +HSPLandroidx/compose/animation/core/VectorizedAnimationSpecKt$createSpringAnimations$2;->(FF)V +HSPLandroidx/compose/animation/core/VectorizedAnimationSpecKt$createSpringAnimations$2;->get(I)Landroidx/compose/animation/core/FloatAnimationSpec; +HSPLandroidx/compose/animation/core/VectorizedAnimationSpecKt$createSpringAnimations$2;->get(I)Landroidx/compose/animation/core/FloatSpringSpec; +Landroidx/compose/animation/core/VectorizedDurationBasedAnimationSpec; +HSPLandroidx/compose/animation/core/VectorizedDurationBasedAnimationSpec;->getDurationNanos(Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)J +Landroidx/compose/animation/core/VectorizedFiniteAnimationSpec; +HSPLandroidx/compose/animation/core/VectorizedFiniteAnimationSpec;->isInfinite()Z +Landroidx/compose/animation/core/VectorizedFloatAnimationSpec; +HSPLandroidx/compose/animation/core/VectorizedFloatAnimationSpec;->()V +HSPLandroidx/compose/animation/core/VectorizedFloatAnimationSpec;->(Landroidx/compose/animation/core/Animations;)V +HSPLandroidx/compose/animation/core/VectorizedFloatAnimationSpec;->(Landroidx/compose/animation/core/FloatAnimationSpec;)V +HSPLandroidx/compose/animation/core/VectorizedFloatAnimationSpec;->getDurationNanos(Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)J +HSPLandroidx/compose/animation/core/VectorizedFloatAnimationSpec;->getEndVelocity(Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/VectorizedFloatAnimationSpec;->getValueFromNanos(JLandroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/VectorizedFloatAnimationSpec;->getVelocityFromNanos(JLandroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +Landroidx/compose/animation/core/VectorizedFloatAnimationSpec$1; +HSPLandroidx/compose/animation/core/VectorizedFloatAnimationSpec$1;->(Landroidx/compose/animation/core/FloatAnimationSpec;)V +HSPLandroidx/compose/animation/core/VectorizedFloatAnimationSpec$1;->get(I)Landroidx/compose/animation/core/FloatAnimationSpec; +Landroidx/compose/animation/core/VectorizedInfiniteRepeatableSpec; +HSPLandroidx/compose/animation/core/VectorizedInfiniteRepeatableSpec;->()V +HSPLandroidx/compose/animation/core/VectorizedInfiniteRepeatableSpec;->(Landroidx/compose/animation/core/VectorizedDurationBasedAnimationSpec;Landroidx/compose/animation/core/RepeatMode;J)V +HSPLandroidx/compose/animation/core/VectorizedInfiniteRepeatableSpec;->(Landroidx/compose/animation/core/VectorizedDurationBasedAnimationSpec;Landroidx/compose/animation/core/RepeatMode;JLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/animation/core/VectorizedInfiniteRepeatableSpec;->getDurationNanos(Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)J +HSPLandroidx/compose/animation/core/VectorizedInfiniteRepeatableSpec;->getValueFromNanos(JLandroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/VectorizedInfiniteRepeatableSpec;->getVelocityFromNanos(JLandroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/VectorizedInfiniteRepeatableSpec;->isInfinite()Z +HSPLandroidx/compose/animation/core/VectorizedInfiniteRepeatableSpec;->repetitionPlayTimeNanos(J)J +HSPLandroidx/compose/animation/core/VectorizedInfiniteRepeatableSpec;->repetitionStartVelocity(JLandroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +Landroidx/compose/animation/core/VectorizedKeyframesSpec; +HSPLandroidx/compose/animation/core/VectorizedKeyframesSpec;->()V +HSPLandroidx/compose/animation/core/VectorizedKeyframesSpec;->(Ljava/util/Map;II)V +HSPLandroidx/compose/animation/core/VectorizedKeyframesSpec;->getDelayMillis()I +HSPLandroidx/compose/animation/core/VectorizedKeyframesSpec;->getDurationMillis()I +HSPLandroidx/compose/animation/core/VectorizedKeyframesSpec;->getValueFromNanos(JLandroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/VectorizedKeyframesSpec;->getVelocityFromNanos(JLandroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/VectorizedKeyframesSpec;->init(Landroidx/compose/animation/core/AnimationVector;)V +Landroidx/compose/animation/core/VectorizedSpringSpec; +HSPLandroidx/compose/animation/core/VectorizedSpringSpec;->()V +HSPLandroidx/compose/animation/core/VectorizedSpringSpec;->(FFLandroidx/compose/animation/core/AnimationVector;)V +HSPLandroidx/compose/animation/core/VectorizedSpringSpec;->(FFLandroidx/compose/animation/core/Animations;)V +HSPLandroidx/compose/animation/core/VectorizedSpringSpec;->getDurationNanos(Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)J +HSPLandroidx/compose/animation/core/VectorizedSpringSpec;->getEndVelocity(Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/VectorizedSpringSpec;->getValueFromNanos(JLandroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/VectorizedSpringSpec;->getVelocityFromNanos(JLandroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/VectorizedSpringSpec;->isInfinite()Z +Landroidx/compose/animation/core/VectorizedTweenSpec; +HSPLandroidx/compose/animation/core/VectorizedTweenSpec;->()V +HSPLandroidx/compose/animation/core/VectorizedTweenSpec;->(IILandroidx/compose/animation/core/Easing;)V +HSPLandroidx/compose/animation/core/VectorizedTweenSpec;->getDelayMillis()I +HSPLandroidx/compose/animation/core/VectorizedTweenSpec;->getDurationMillis()I +HSPLandroidx/compose/animation/core/VectorizedTweenSpec;->getValueFromNanos(JLandroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +HSPLandroidx/compose/animation/core/VectorizedTweenSpec;->getVelocityFromNanos(JLandroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector; +Landroidx/compose/animation/core/VisibilityThresholdsKt; +HSPLandroidx/compose/animation/core/VisibilityThresholdsKt;->()V +HSPLandroidx/compose/animation/core/VisibilityThresholdsKt;->getVisibilityThreshold(Landroidx/compose/ui/geometry/Offset$Companion;)J +HSPLandroidx/compose/animation/core/VisibilityThresholdsKt;->getVisibilityThreshold(Landroidx/compose/ui/geometry/Rect$Companion;)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/animation/core/VisibilityThresholdsKt;->getVisibilityThreshold(Landroidx/compose/ui/geometry/Size$Companion;)J +HSPLandroidx/compose/animation/core/VisibilityThresholdsKt;->getVisibilityThreshold(Landroidx/compose/ui/unit/Dp$Companion;)F +HSPLandroidx/compose/animation/core/VisibilityThresholdsKt;->getVisibilityThreshold(Landroidx/compose/ui/unit/IntOffset$Companion;)J +HSPLandroidx/compose/animation/core/VisibilityThresholdsKt;->getVisibilityThreshold(Landroidx/compose/ui/unit/IntSize$Companion;)J +HSPLandroidx/compose/animation/core/VisibilityThresholdsKt;->getVisibilityThreshold(Lkotlin/jvm/internal/IntCompanionObject;)I +HSPLandroidx/compose/animation/core/VisibilityThresholdsKt;->getVisibilityThresholdMap()Ljava/util/Map; +Landroidx/compose/foundation/AbstractClickableNode; +HSPLandroidx/compose/foundation/AbstractClickableNode;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/foundation/AbstractClickableNode;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/AbstractClickableNode;->disposeInteractionSource()V +HSPLandroidx/compose/foundation/AbstractClickableNode;->getInteractionData()Landroidx/compose/foundation/AbstractClickableNode$InteractionData; +HSPLandroidx/compose/foundation/AbstractClickableNode;->onDetach()V +HSPLandroidx/compose/foundation/AbstractClickableNode;->onPointerEvent-H0pRuoY(Landroidx/compose/ui/input/pointer/PointerEvent;Landroidx/compose/ui/input/pointer/PointerEventPass;J)V +HSPLandroidx/compose/foundation/AbstractClickableNode;->updateCommon-XHw0xAI(Landroidx/compose/foundation/interaction/MutableInteractionSource;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;)V +Landroidx/compose/foundation/AbstractClickableNode$InteractionData; +HSPLandroidx/compose/foundation/AbstractClickableNode$InteractionData;->()V +HSPLandroidx/compose/foundation/AbstractClickableNode$InteractionData;->()V +HSPLandroidx/compose/foundation/AbstractClickableNode$InteractionData;->getCurrentKeyPressInteractions()Ljava/util/Map; +HSPLandroidx/compose/foundation/AbstractClickableNode$InteractionData;->getPressInteraction()Landroidx/compose/foundation/interaction/PressInteraction$Press; +HSPLandroidx/compose/foundation/AbstractClickableNode$InteractionData;->setCentreOffset-k-4lQ0M(J)V +HSPLandroidx/compose/foundation/AbstractClickableNode$InteractionData;->setPressInteraction(Landroidx/compose/foundation/interaction/PressInteraction$Press;)V +Landroidx/compose/foundation/AbstractClickablePointerInputNode; +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode;->(ZLandroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function0;Landroidx/compose/foundation/AbstractClickableNode$InteractionData;)V +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode;->(ZLandroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function0;Landroidx/compose/foundation/AbstractClickableNode$InteractionData;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode;->getEnabled()Z +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode;->getInteractionData()Landroidx/compose/foundation/AbstractClickableNode$InteractionData; +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode;->getOnClick()Lkotlin/jvm/functions/Function0; +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode;->handlePressInteraction-d-4ec7I(Landroidx/compose/foundation/gestures/PressGestureScope;JLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode;->onPointerEvent-H0pRuoY(Landroidx/compose/ui/input/pointer/PointerEvent;Landroidx/compose/ui/input/pointer/PointerEventPass;J)V +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode;->setEnabled(Z)V +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode;->setInteractionSource(Landroidx/compose/foundation/interaction/MutableInteractionSource;)V +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode;->setOnClick(Lkotlin/jvm/functions/Function0;)V +Landroidx/compose/foundation/AbstractClickablePointerInputNode$delayPressInteraction$1; +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode$delayPressInteraction$1;->(Landroidx/compose/foundation/AbstractClickablePointerInputNode;)V +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode$delayPressInteraction$1;->invoke()Ljava/lang/Boolean; +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode$delayPressInteraction$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/AbstractClickablePointerInputNode$pointerInputNode$1; +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode$pointerInputNode$1;->(Landroidx/compose/foundation/AbstractClickablePointerInputNode;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode$pointerInputNode$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode$pointerInputNode$1;->invoke(Landroidx/compose/ui/input/pointer/PointerInputScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode$pointerInputNode$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/AbstractClickablePointerInputNode$pointerInputNode$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->(Landroid/content/Context;Landroidx/compose/foundation/OverscrollConfiguration;)V +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$animateToRelease(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)V +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$getBottomEffect$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)Landroid/widget/EdgeEffect; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$getBottomEffectNegation$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)Landroid/widget/EdgeEffect; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$getContainerSize$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)J +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$getLeftEffect$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)Landroid/widget/EdgeEffect; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$getLeftEffectNegation$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)Landroid/widget/EdgeEffect; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$getRightEffect$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)Landroid/widget/EdgeEffect; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$getRightEffectNegation$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)Landroid/widget/EdgeEffect; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$getTopEffect$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)Landroid/widget/EdgeEffect; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$getTopEffectNegation$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)Landroid/widget/EdgeEffect; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$invalidateOverscroll(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)V +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$setContainerSize$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;J)V +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$setPointerId$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;Landroidx/compose/ui/input/pointer/PointerId;)V +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$setPointerPosition$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;Landroidx/compose/ui/geometry/Offset;)V +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->animateToRelease()V +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->drawOverscroll(Landroidx/compose/ui/graphics/drawscope/DrawScope;)V +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->getEffectModifier()Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->invalidateOverscroll()V +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->isInProgress()Z +Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1;->(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1;->invoke(Landroidx/compose/ui/input/pointer/PointerInputScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1$1; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1$1;->(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1$1;->invoke(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$onNewSize$1; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$onNewSize$1;->(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)V +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$onNewSize$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$onNewSize$1;->invoke-ozmzZPI(J)V +Landroidx/compose/foundation/AndroidOverscrollKt; +HSPLandroidx/compose/foundation/AndroidOverscrollKt;->()V +HSPLandroidx/compose/foundation/AndroidOverscrollKt;->access$getStretchOverscrollNonClippingLayer$p()Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/AndroidOverscrollKt;->rememberOverscrollEffect(Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/OverscrollEffect; +Landroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1; +HSPLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1;->()V +HSPLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1;->()V +HSPLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1;->invoke-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1$1; +HSPLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1$1;->(Landroidx/compose/ui/layout/Placeable;I)V +HSPLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2; +HSPLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2;->()V +HSPLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2;->()V +HSPLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2;->invoke-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2$1; +HSPLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2$1;->(Landroidx/compose/ui/layout/Placeable;I)V +HSPLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/Api31Impl; +HSPLandroidx/compose/foundation/Api31Impl;->()V +HSPLandroidx/compose/foundation/Api31Impl;->()V +HSPLandroidx/compose/foundation/Api31Impl;->create(Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/widget/EdgeEffect; +HSPLandroidx/compose/foundation/Api31Impl;->getDistance(Landroid/widget/EdgeEffect;)F +Landroidx/compose/foundation/BackgroundElement; +HSPLandroidx/compose/foundation/BackgroundElement;->(JLandroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/Shape;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/BackgroundElement;->(JLandroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/Shape;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/BackgroundElement;->(JLandroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/Shape;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/BackgroundElement;->create()Landroidx/compose/foundation/BackgroundNode; +HSPLandroidx/compose/foundation/BackgroundElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/BackgroundElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/BackgroundElement;->update(Landroidx/compose/foundation/BackgroundNode;)V +HSPLandroidx/compose/foundation/BackgroundElement;->update(Landroidx/compose/ui/Modifier$Node;)V +Landroidx/compose/foundation/BackgroundKt; +HSPLandroidx/compose/foundation/BackgroundKt;->background-bw27NRU$default(Landroidx/compose/ui/Modifier;JLandroidx/compose/ui/graphics/Shape;ILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/BackgroundKt;->background-bw27NRU(Landroidx/compose/ui/Modifier;JLandroidx/compose/ui/graphics/Shape;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/BackgroundNode; +HSPLandroidx/compose/foundation/BackgroundNode;->(JLandroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/Shape;)V +HSPLandroidx/compose/foundation/BackgroundNode;->(JLandroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/Shape;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/BackgroundNode;->draw(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V +HSPLandroidx/compose/foundation/BackgroundNode;->drawOutline(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V +HSPLandroidx/compose/foundation/BackgroundNode;->drawRect(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V +HSPLandroidx/compose/foundation/BackgroundNode;->setAlpha(F)V +HSPLandroidx/compose/foundation/BackgroundNode;->setBrush(Landroidx/compose/ui/graphics/Brush;)V +HSPLandroidx/compose/foundation/BackgroundNode;->setColor-8_81llA(J)V +HSPLandroidx/compose/foundation/BackgroundNode;->setShape(Landroidx/compose/ui/graphics/Shape;)V +Landroidx/compose/foundation/BorderKt; +HSPLandroidx/compose/foundation/BorderKt;->access$shrink-Kibmq7A(JF)J +HSPLandroidx/compose/foundation/BorderKt;->border(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/BorderStroke;Landroidx/compose/ui/graphics/Shape;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/BorderKt;->border-xT4_qwU(Landroidx/compose/ui/Modifier;FJLandroidx/compose/ui/graphics/Shape;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/BorderKt;->border-ziNgDLE(Landroidx/compose/ui/Modifier;FLandroidx/compose/ui/graphics/Brush;Landroidx/compose/ui/graphics/Shape;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/BorderKt;->shrink-Kibmq7A(JF)J +Landroidx/compose/foundation/BorderModifierNode; +HSPLandroidx/compose/foundation/BorderModifierNode;->(FLandroidx/compose/ui/graphics/Brush;Landroidx/compose/ui/graphics/Shape;)V +HSPLandroidx/compose/foundation/BorderModifierNode;->(FLandroidx/compose/ui/graphics/Brush;Landroidx/compose/ui/graphics/Shape;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/BorderModifierNode;->access$drawRoundRectBorder-JqoCqck(Landroidx/compose/foundation/BorderModifierNode;Landroidx/compose/ui/draw/CacheDrawScope;Landroidx/compose/ui/graphics/Brush;Landroidx/compose/ui/graphics/Outline$Rounded;JJZF)Landroidx/compose/ui/draw/DrawResult; +HSPLandroidx/compose/foundation/BorderModifierNode;->drawRoundRectBorder-JqoCqck(Landroidx/compose/ui/draw/CacheDrawScope;Landroidx/compose/ui/graphics/Brush;Landroidx/compose/ui/graphics/Outline$Rounded;JJZF)Landroidx/compose/ui/draw/DrawResult; +HSPLandroidx/compose/foundation/BorderModifierNode;->getBrush()Landroidx/compose/ui/graphics/Brush; +HSPLandroidx/compose/foundation/BorderModifierNode;->getShape()Landroidx/compose/ui/graphics/Shape; +HSPLandroidx/compose/foundation/BorderModifierNode;->getWidth-D9Ej5fM()F +HSPLandroidx/compose/foundation/BorderModifierNode;->setBrush(Landroidx/compose/ui/graphics/Brush;)V +HSPLandroidx/compose/foundation/BorderModifierNode;->setShape(Landroidx/compose/ui/graphics/Shape;)V +HSPLandroidx/compose/foundation/BorderModifierNode;->setWidth-0680j_4(F)V +Landroidx/compose/foundation/BorderModifierNode$drawRoundRectBorder$1; +HSPLandroidx/compose/foundation/BorderModifierNode$drawRoundRectBorder$1;->(ZLandroidx/compose/ui/graphics/Brush;JFFJJLandroidx/compose/ui/graphics/drawscope/Stroke;)V +HSPLandroidx/compose/foundation/BorderModifierNode$drawRoundRectBorder$1;->invoke(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V +HSPLandroidx/compose/foundation/BorderModifierNode$drawRoundRectBorder$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/BorderModifierNode$drawWithCacheModifierNode$1; +HSPLandroidx/compose/foundation/BorderModifierNode$drawWithCacheModifierNode$1;->(Landroidx/compose/foundation/BorderModifierNode;)V +HSPLandroidx/compose/foundation/BorderModifierNode$drawWithCacheModifierNode$1;->invoke(Landroidx/compose/ui/draw/CacheDrawScope;)Landroidx/compose/ui/draw/DrawResult; +HSPLandroidx/compose/foundation/BorderModifierNode$drawWithCacheModifierNode$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/BorderModifierNodeElement; +HSPLandroidx/compose/foundation/BorderModifierNodeElement;->(FLandroidx/compose/ui/graphics/Brush;Landroidx/compose/ui/graphics/Shape;)V +HSPLandroidx/compose/foundation/BorderModifierNodeElement;->(FLandroidx/compose/ui/graphics/Brush;Landroidx/compose/ui/graphics/Shape;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/BorderModifierNodeElement;->create()Landroidx/compose/foundation/BorderModifierNode; +HSPLandroidx/compose/foundation/BorderModifierNodeElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/BorderModifierNodeElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/BorderModifierNodeElement;->update(Landroidx/compose/foundation/BorderModifierNode;)V +HSPLandroidx/compose/foundation/BorderModifierNodeElement;->update(Landroidx/compose/ui/Modifier$Node;)V +Landroidx/compose/foundation/BorderStroke; +HSPLandroidx/compose/foundation/BorderStroke;->()V +HSPLandroidx/compose/foundation/BorderStroke;->(FLandroidx/compose/ui/graphics/Brush;)V +HSPLandroidx/compose/foundation/BorderStroke;->(FLandroidx/compose/ui/graphics/Brush;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/BorderStroke;->getBrush()Landroidx/compose/ui/graphics/Brush; +HSPLandroidx/compose/foundation/BorderStroke;->getWidth-D9Ej5fM()F +Landroidx/compose/foundation/BorderStrokeKt; +HSPLandroidx/compose/foundation/BorderStrokeKt;->BorderStroke-cXLIe8U(FJ)Landroidx/compose/foundation/BorderStroke; +Landroidx/compose/foundation/CanvasKt; +HSPLandroidx/compose/foundation/CanvasKt;->Canvas(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V +Landroidx/compose/foundation/CheckScrollableContainerConstraintsKt; +HSPLandroidx/compose/foundation/CheckScrollableContainerConstraintsKt;->checkScrollableContainerConstraints-K40F9xA(JLandroidx/compose/foundation/gestures/Orientation;)V +Landroidx/compose/foundation/ClickableElement; +HSPLandroidx/compose/foundation/ClickableElement;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/foundation/ClickableElement;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/ClickableElement;->create()Landroidx/compose/foundation/ClickableNode; +HSPLandroidx/compose/foundation/ClickableElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/ClickableElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/ClickableElement;->update(Landroidx/compose/foundation/ClickableNode;)V +HSPLandroidx/compose/foundation/ClickableElement;->update(Landroidx/compose/ui/Modifier$Node;)V +Landroidx/compose/foundation/ClickableKt; +HSPLandroidx/compose/foundation/ClickableKt;->access$handlePressInteraction-EPk0efs(Landroidx/compose/foundation/gestures/PressGestureScope;JLandroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/AbstractClickableNode$InteractionData;Lkotlin/jvm/functions/Function0;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/ClickableKt;->clickable-O2vRcR0$default(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/Indication;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/ClickableKt;->clickable-O2vRcR0(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/Indication;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/ClickableKt;->clickable-XHw0xAI$default(Landroidx/compose/ui/Modifier;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/ClickableKt;->clickable-XHw0xAI(Landroidx/compose/ui/Modifier;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/ClickableKt;->combinedClickable-XVZzFYc(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/Indication;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/ClickableKt;->combinedClickable-cJG_KMw$default(Landroidx/compose/ui/Modifier;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/ClickableKt;->combinedClickable-cJG_KMw(Landroidx/compose/ui/Modifier;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/ClickableKt;->handlePressInteraction-EPk0efs(Landroidx/compose/foundation/gestures/PressGestureScope;JLandroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/AbstractClickableNode$InteractionData;Lkotlin/jvm/functions/Function0;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/foundation/ClickableKt$clickable$2; +HSPLandroidx/compose/foundation/ClickableKt$clickable$2;->(ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/foundation/ClickableKt$clickable$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/ClickableKt$clickable$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/ClickableKt$combinedClickable$2; +HSPLandroidx/compose/foundation/ClickableKt$combinedClickable$2;->(ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/foundation/ClickableKt$combinedClickable$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/ClickableKt$combinedClickable$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/ClickableKt$handlePressInteraction$2; +HSPLandroidx/compose/foundation/ClickableKt$handlePressInteraction$2;->(Landroidx/compose/foundation/gestures/PressGestureScope;JLandroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/AbstractClickableNode$InteractionData;Lkotlin/jvm/functions/Function0;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/ClickableKt$handlePressInteraction$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/ClickableKt$handlePressInteraction$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/ClickableKt$handlePressInteraction$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/ClickableKt$handlePressInteraction$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/ClickableKt$handlePressInteraction$2$delayJob$1; +HSPLandroidx/compose/foundation/ClickableKt$handlePressInteraction$2$delayJob$1;->(Lkotlin/jvm/functions/Function0;JLandroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/AbstractClickableNode$InteractionData;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/ClickableKt$handlePressInteraction$2$delayJob$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/ClickableKt$handlePressInteraction$2$delayJob$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/ClickableNode; +HSPLandroidx/compose/foundation/ClickableNode;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/foundation/ClickableNode;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/ClickableNode;->getClickablePointerInputNode()Landroidx/compose/foundation/AbstractClickablePointerInputNode; +HSPLandroidx/compose/foundation/ClickableNode;->getClickablePointerInputNode()Landroidx/compose/foundation/ClickablePointerInputNode; +HSPLandroidx/compose/foundation/ClickableNode;->getClickableSemanticsNode()Landroidx/compose/foundation/ClickableSemanticsNode; +HSPLandroidx/compose/foundation/ClickableNode;->update-XHw0xAI(Landroidx/compose/foundation/interaction/MutableInteractionSource;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;)V +Landroidx/compose/foundation/ClickablePointerInputNode; +HSPLandroidx/compose/foundation/ClickablePointerInputNode;->(ZLandroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function0;Landroidx/compose/foundation/AbstractClickableNode$InteractionData;)V +HSPLandroidx/compose/foundation/ClickablePointerInputNode;->pointerInput(Landroidx/compose/ui/input/pointer/PointerInputScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/ClickablePointerInputNode;->update(ZLandroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function0;)V +Landroidx/compose/foundation/ClickablePointerInputNode$pointerInput$2; +HSPLandroidx/compose/foundation/ClickablePointerInputNode$pointerInput$2;->(Landroidx/compose/foundation/ClickablePointerInputNode;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/ClickablePointerInputNode$pointerInput$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/ClickablePointerInputNode$pointerInput$2;->invoke-d-4ec7I(Landroidx/compose/foundation/gestures/PressGestureScope;JLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/ClickablePointerInputNode$pointerInput$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/ClickablePointerInputNode$pointerInput$3; +HSPLandroidx/compose/foundation/ClickablePointerInputNode$pointerInput$3;->(Landroidx/compose/foundation/ClickablePointerInputNode;)V +HSPLandroidx/compose/foundation/ClickablePointerInputNode$pointerInput$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/ClickablePointerInputNode$pointerInput$3;->invoke-k-4lQ0M(J)V +Landroidx/compose/foundation/ClickableSemanticsNode; +HSPLandroidx/compose/foundation/ClickableSemanticsNode;->(ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/foundation/ClickableSemanticsNode;->(ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/ClickableSemanticsNode;->applySemantics(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/foundation/ClickableSemanticsNode;->getShouldMergeDescendantSemantics()Z +HSPLandroidx/compose/foundation/ClickableSemanticsNode;->update-UMe6uN4(ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V +Landroidx/compose/foundation/ClickableSemanticsNode$applySemantics$1; +HSPLandroidx/compose/foundation/ClickableSemanticsNode$applySemantics$1;->(Landroidx/compose/foundation/ClickableSemanticsNode;)V +Landroidx/compose/foundation/Clickable_androidKt; +HSPLandroidx/compose/foundation/Clickable_androidKt;->()V +HSPLandroidx/compose/foundation/Clickable_androidKt;->getTapIndicationDelay()J +Landroidx/compose/foundation/ClipScrollableContainerKt; +HSPLandroidx/compose/foundation/ClipScrollableContainerKt;->()V +HSPLandroidx/compose/foundation/ClipScrollableContainerKt;->clipScrollableContainer(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/gestures/Orientation;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/ClipScrollableContainerKt;->getMaxSupportedElevation()F +Landroidx/compose/foundation/ClipScrollableContainerKt$HorizontalScrollableClipModifier$1; +HSPLandroidx/compose/foundation/ClipScrollableContainerKt$HorizontalScrollableClipModifier$1;->()V +Landroidx/compose/foundation/ClipScrollableContainerKt$VerticalScrollableClipModifier$1; +HSPLandroidx/compose/foundation/ClipScrollableContainerKt$VerticalScrollableClipModifier$1;->()V +HSPLandroidx/compose/foundation/ClipScrollableContainerKt$VerticalScrollableClipModifier$1;->createOutline-Pq9zytI(JLandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/unit/Density;)Landroidx/compose/ui/graphics/Outline; +Landroidx/compose/foundation/CombinedClickableElement; +HSPLandroidx/compose/foundation/CombinedClickableElement;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/foundation/CombinedClickableElement;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/CombinedClickableElement;->create()Landroidx/compose/foundation/CombinedClickableNode; +HSPLandroidx/compose/foundation/CombinedClickableElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/CombinedClickableElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/CombinedClickableNode; +HSPLandroidx/compose/foundation/CombinedClickableNode;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/foundation/CombinedClickableNode;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/foundation/CombinedClickablePointerInputNode; +HSPLandroidx/compose/foundation/CombinedClickablePointerInputNode;->(ZLandroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function0;Landroidx/compose/foundation/AbstractClickableNode$InteractionData;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)V +Landroidx/compose/foundation/DarkThemeKt; +HSPLandroidx/compose/foundation/DarkThemeKt;->isSystemInDarkTheme(Landroidx/compose/runtime/Composer;I)Z +Landroidx/compose/foundation/DarkTheme_androidKt; +HSPLandroidx/compose/foundation/DarkTheme_androidKt;->_isSystemInDarkTheme(Landroidx/compose/runtime/Composer;I)Z +Landroidx/compose/foundation/DrawOverscrollModifier; +HSPLandroidx/compose/foundation/DrawOverscrollModifier;->(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/DrawOverscrollModifier;->draw(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V +HSPLandroidx/compose/foundation/DrawOverscrollModifier;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/EdgeEffectCompat; +HSPLandroidx/compose/foundation/EdgeEffectCompat;->()V +HSPLandroidx/compose/foundation/EdgeEffectCompat;->()V +HSPLandroidx/compose/foundation/EdgeEffectCompat;->create(Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/widget/EdgeEffect; +HSPLandroidx/compose/foundation/EdgeEffectCompat;->getDistanceCompat(Landroid/widget/EdgeEffect;)F +Landroidx/compose/foundation/FocusableElement; +HSPLandroidx/compose/foundation/FocusableElement;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;)V +HSPLandroidx/compose/foundation/FocusableElement;->create()Landroidx/compose/foundation/FocusableNode; +HSPLandroidx/compose/foundation/FocusableElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/FocusableElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/FocusableInNonTouchMode; +HSPLandroidx/compose/foundation/FocusableInNonTouchMode;->()V +HSPLandroidx/compose/foundation/FocusableInNonTouchMode;->applyFocusProperties(Landroidx/compose/ui/focus/FocusProperties;)V +HSPLandroidx/compose/foundation/FocusableInNonTouchMode;->getInputModeManager()Landroidx/compose/ui/input/InputModeManager; +Landroidx/compose/foundation/FocusableInteractionNode; +HSPLandroidx/compose/foundation/FocusableInteractionNode;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;)V +HSPLandroidx/compose/foundation/FocusableInteractionNode;->emitWithFallback(Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/interaction/Interaction;)V +HSPLandroidx/compose/foundation/FocusableInteractionNode;->setFocus(Z)V +Landroidx/compose/foundation/FocusableInteractionNode$emitWithFallback$1; +HSPLandroidx/compose/foundation/FocusableInteractionNode$emitWithFallback$1;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/interaction/Interaction;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/FocusableInteractionNode$emitWithFallback$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/FocusableInteractionNode$emitWithFallback$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/FocusableKt; +HSPLandroidx/compose/foundation/FocusableKt;->()V +HSPLandroidx/compose/foundation/FocusableKt;->focusGroup(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/FocusableKt;->focusable(Landroidx/compose/ui/Modifier;ZLandroidx/compose/foundation/interaction/MutableInteractionSource;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/FocusableKt;->focusableInNonTouchMode(Landroidx/compose/ui/Modifier;ZLandroidx/compose/foundation/interaction/MutableInteractionSource;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/FocusableKt$FocusableInNonTouchModeElement$1; +HSPLandroidx/compose/foundation/FocusableKt$FocusableInNonTouchModeElement$1;->()V +HSPLandroidx/compose/foundation/FocusableKt$FocusableInNonTouchModeElement$1;->create()Landroidx/compose/foundation/FocusableInNonTouchMode; +HSPLandroidx/compose/foundation/FocusableKt$FocusableInNonTouchModeElement$1;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/FocusableKt$FocusableInNonTouchModeElement$1;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/FocusableKt$focusGroup$1; +HSPLandroidx/compose/foundation/FocusableKt$focusGroup$1;->()V +HSPLandroidx/compose/foundation/FocusableKt$focusGroup$1;->()V +HSPLandroidx/compose/foundation/FocusableKt$focusGroup$1;->invoke(Landroidx/compose/ui/focus/FocusProperties;)V +HSPLandroidx/compose/foundation/FocusableKt$focusGroup$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/FocusableKt$focusableInNonTouchMode$1; +HSPLandroidx/compose/foundation/FocusableKt$focusableInNonTouchMode$1;->(ZLandroidx/compose/foundation/interaction/MutableInteractionSource;)V +Landroidx/compose/foundation/FocusableNode; +HSPLandroidx/compose/foundation/FocusableNode;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;)V +HSPLandroidx/compose/foundation/FocusableNode;->access$getBringIntoViewRequester$p(Landroidx/compose/foundation/FocusableNode;)Landroidx/compose/foundation/relocation/BringIntoViewRequester; +HSPLandroidx/compose/foundation/FocusableNode;->applySemantics(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/foundation/FocusableNode;->onFocusEvent(Landroidx/compose/ui/focus/FocusState;)V +HSPLandroidx/compose/foundation/FocusableNode;->onGloballyPositioned(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/foundation/FocusableNode;->onPlaced(Landroidx/compose/ui/layout/LayoutCoordinates;)V +Landroidx/compose/foundation/FocusableNode$onFocusEvent$1; +HSPLandroidx/compose/foundation/FocusableNode$onFocusEvent$1;->(Landroidx/compose/foundation/FocusableNode;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/FocusableNode$onFocusEvent$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/FocusableNode$onFocusEvent$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/FocusablePinnableContainerNode; +HSPLandroidx/compose/foundation/FocusablePinnableContainerNode;->()V +HSPLandroidx/compose/foundation/FocusablePinnableContainerNode;->retrievePinnableContainer()Landroidx/compose/ui/layout/PinnableContainer; +HSPLandroidx/compose/foundation/FocusablePinnableContainerNode;->setFocus(Z)V +Landroidx/compose/foundation/FocusablePinnableContainerNode$retrievePinnableContainer$1; +HSPLandroidx/compose/foundation/FocusablePinnableContainerNode$retrievePinnableContainer$1;->(Lkotlin/jvm/internal/Ref$ObjectRef;Landroidx/compose/foundation/FocusablePinnableContainerNode;)V +HSPLandroidx/compose/foundation/FocusablePinnableContainerNode$retrievePinnableContainer$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/foundation/FocusablePinnableContainerNode$retrievePinnableContainer$1;->invoke()V +Landroidx/compose/foundation/FocusableSemanticsNode; +HSPLandroidx/compose/foundation/FocusableSemanticsNode;->()V +HSPLandroidx/compose/foundation/FocusableSemanticsNode;->applySemantics(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/foundation/FocusableSemanticsNode;->setFocus(Z)V +Landroidx/compose/foundation/FocusableSemanticsNode$applySemantics$1; +HSPLandroidx/compose/foundation/FocusableSemanticsNode$applySemantics$1;->(Landroidx/compose/foundation/FocusableSemanticsNode;)V +Landroidx/compose/foundation/FocusedBoundsKt; +HSPLandroidx/compose/foundation/FocusedBoundsKt;->()V +HSPLandroidx/compose/foundation/FocusedBoundsKt;->getModifierLocalFocusedBoundsObserver()Landroidx/compose/ui/modifier/ProvidableModifierLocal; +HSPLandroidx/compose/foundation/FocusedBoundsKt;->onFocusedBoundsChanged(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/FocusedBoundsKt$ModifierLocalFocusedBoundsObserver$1; +HSPLandroidx/compose/foundation/FocusedBoundsKt$ModifierLocalFocusedBoundsObserver$1;->()V +HSPLandroidx/compose/foundation/FocusedBoundsKt$ModifierLocalFocusedBoundsObserver$1;->()V +HSPLandroidx/compose/foundation/FocusedBoundsKt$ModifierLocalFocusedBoundsObserver$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/foundation/FocusedBoundsKt$ModifierLocalFocusedBoundsObserver$1;->invoke()Lkotlin/jvm/functions/Function1; +Landroidx/compose/foundation/FocusedBoundsNode; +HSPLandroidx/compose/foundation/FocusedBoundsNode;->()V +HSPLandroidx/compose/foundation/FocusedBoundsNode;->getObserver()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/foundation/FocusedBoundsNode;->notifyObserverWhenAttached()V +HSPLandroidx/compose/foundation/FocusedBoundsNode;->onGloballyPositioned(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/foundation/FocusedBoundsNode;->setFocus(Z)V +Landroidx/compose/foundation/FocusedBoundsObserverElement; +HSPLandroidx/compose/foundation/FocusedBoundsObserverElement;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/FocusedBoundsObserverElement;->create()Landroidx/compose/foundation/FocusedBoundsObserverNode; +HSPLandroidx/compose/foundation/FocusedBoundsObserverElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/FocusedBoundsObserverElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/FocusedBoundsObserverNode; +HSPLandroidx/compose/foundation/FocusedBoundsObserverNode;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/FocusedBoundsObserverNode;->getParent()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/foundation/FocusedBoundsObserverNode;->getProvidedValues()Landroidx/compose/ui/modifier/ModifierLocalMap; +HSPLandroidx/compose/foundation/FocusedBoundsObserverNode;->invoke(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/foundation/FocusedBoundsObserverNode;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/HoverableElement; +HSPLandroidx/compose/foundation/HoverableElement;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;)V +HSPLandroidx/compose/foundation/HoverableElement;->create()Landroidx/compose/foundation/HoverableNode; +HSPLandroidx/compose/foundation/HoverableElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/HoverableElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/HoverableKt; +HSPLandroidx/compose/foundation/HoverableKt;->hoverable(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/interaction/MutableInteractionSource;Z)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/HoverableNode; +HSPLandroidx/compose/foundation/HoverableNode;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;)V +HSPLandroidx/compose/foundation/HoverableNode;->onDetach()V +HSPLandroidx/compose/foundation/HoverableNode;->onPointerEvent-H0pRuoY(Landroidx/compose/ui/input/pointer/PointerEvent;Landroidx/compose/ui/input/pointer/PointerEventPass;J)V +HSPLandroidx/compose/foundation/HoverableNode;->tryEmitExit()V +Landroidx/compose/foundation/Indication; +Landroidx/compose/foundation/IndicationInstance; +Landroidx/compose/foundation/IndicationKt; +HSPLandroidx/compose/foundation/IndicationKt;->()V +HSPLandroidx/compose/foundation/IndicationKt;->getLocalIndication()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/foundation/IndicationKt;->indication(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/foundation/Indication;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/IndicationKt$LocalIndication$1; +HSPLandroidx/compose/foundation/IndicationKt$LocalIndication$1;->()V +HSPLandroidx/compose/foundation/IndicationKt$LocalIndication$1;->()V +Landroidx/compose/foundation/IndicationKt$indication$2; +HSPLandroidx/compose/foundation/IndicationKt$indication$2;->(Landroidx/compose/foundation/Indication;Landroidx/compose/foundation/interaction/InteractionSource;)V +HSPLandroidx/compose/foundation/IndicationKt$indication$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/IndicationKt$indication$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/IndicationModifier; +HSPLandroidx/compose/foundation/IndicationModifier;->(Landroidx/compose/foundation/IndicationInstance;)V +HSPLandroidx/compose/foundation/IndicationModifier;->draw(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V +Landroidx/compose/foundation/MagnifierKt; +HSPLandroidx/compose/foundation/MagnifierKt;->()V +HSPLandroidx/compose/foundation/MagnifierKt;->getMagnifierPositionInRoot()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/foundation/MagnifierKt;->isPlatformMagnifierSupported$default(IILjava/lang/Object;)Z +HSPLandroidx/compose/foundation/MagnifierKt;->isPlatformMagnifierSupported(I)Z +HSPLandroidx/compose/foundation/MagnifierKt;->magnifier$default(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;FLandroidx/compose/foundation/MagnifierStyle;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/MagnifierKt;->magnifier(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;FLandroidx/compose/foundation/MagnifierStyle;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/MagnifierKt;->magnifier(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;FLandroidx/compose/foundation/MagnifierStyle;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/PlatformMagnifierFactory;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/MagnifierKt$magnifier$1; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$1;->()V +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$1;->()V +Landroidx/compose/foundation/MagnifierKt$magnifier$4; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;FLkotlin/jvm/functions/Function1;Landroidx/compose/foundation/PlatformMagnifierFactory;Landroidx/compose/foundation/MagnifierStyle;)V +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4;->access$invoke$lambda$1(Landroidx/compose/runtime/MutableState;)J +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4;->access$invoke$lambda$10(Landroidx/compose/runtime/State;)Z +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4;->access$invoke$lambda$2(Landroidx/compose/runtime/MutableState;J)V +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4;->access$invoke$lambda$3(Landroidx/compose/runtime/State;)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4;->access$invoke$lambda$6(Landroidx/compose/runtime/State;)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4;->access$invoke$lambda$8(Landroidx/compose/runtime/State;)J +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4;->invoke$lambda$1(Landroidx/compose/runtime/MutableState;)J +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4;->invoke$lambda$10(Landroidx/compose/runtime/State;)Z +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4;->invoke$lambda$2(Landroidx/compose/runtime/MutableState;J)V +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4;->invoke$lambda$3(Landroidx/compose/runtime/State;)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4;->invoke$lambda$6(Landroidx/compose/runtime/State;)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4;->invoke$lambda$8(Landroidx/compose/runtime/State;)J +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/MagnifierKt$magnifier$4$1; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$1;->(Landroidx/compose/foundation/PlatformMagnifierFactory;Landroidx/compose/foundation/MagnifierStyle;Landroid/view/View;Landroidx/compose/ui/unit/Density;FLkotlinx/coroutines/flow/MutableSharedFlow;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/MutableState;Landroidx/compose/runtime/State;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/MagnifierKt$magnifier$4$1$1; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$1$1;->(Landroidx/compose/foundation/PlatformMagnifier;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$1$1;->invoke(Lkotlin/Unit;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/MagnifierKt$magnifier$4$1$2; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$1$2;->(Landroidx/compose/foundation/PlatformMagnifier;Landroidx/compose/ui/unit/Density;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/MutableState;Landroidx/compose/runtime/State;Lkotlin/jvm/internal/Ref$LongRef;Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$1$2;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$1$2;->invoke()V +Landroidx/compose/foundation/MagnifierKt$magnifier$4$2$1; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$2$1;->(Landroidx/compose/runtime/MutableState;)V +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$2$1;->invoke(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/MagnifierKt$magnifier$4$3; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$3;->(Lkotlinx/coroutines/flow/MutableSharedFlow;)V +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$3;->invoke(Landroidx/compose/ui/graphics/drawscope/DrawScope;)V +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/MagnifierKt$magnifier$4$4$1; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$4$1;->(Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$4$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$4$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/MagnifierKt$magnifier$4$4$1$1; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$4$1$1;->(Landroidx/compose/runtime/State;)V +Landroidx/compose/foundation/MagnifierKt$magnifier$4$isMagnifierShown$2$1; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$isMagnifierShown$2$1;->(Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$isMagnifierShown$2$1;->invoke()Ljava/lang/Boolean; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$isMagnifierShown$2$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/MagnifierKt$magnifier$4$sourceCenterInRoot$2$1; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$sourceCenterInRoot$2$1;->(Landroidx/compose/ui/unit/Density;Landroidx/compose/runtime/State;Landroidx/compose/runtime/MutableState;)V +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$sourceCenterInRoot$2$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/foundation/MagnifierKt$magnifier$4$sourceCenterInRoot$2$1;->invoke-F1C5BW0()J +Landroidx/compose/foundation/MagnifierStyle; +HSPLandroidx/compose/foundation/MagnifierStyle;->()V +HSPLandroidx/compose/foundation/MagnifierStyle;->(JFFZZ)V +HSPLandroidx/compose/foundation/MagnifierStyle;->(JFFZZILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/MagnifierStyle;->(JFFZZLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/MagnifierStyle;->(ZJFFZZ)V +HSPLandroidx/compose/foundation/MagnifierStyle;->(ZJFFZZLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/MagnifierStyle;->access$getTextDefault$cp()Landroidx/compose/foundation/MagnifierStyle; +HSPLandroidx/compose/foundation/MagnifierStyle;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/MagnifierStyle;->getFishEyeEnabled$foundation_release()Z +HSPLandroidx/compose/foundation/MagnifierStyle;->getUseTextDefault$foundation_release()Z +HSPLandroidx/compose/foundation/MagnifierStyle;->isSupported()Z +Landroidx/compose/foundation/MagnifierStyle$Companion; +HSPLandroidx/compose/foundation/MagnifierStyle$Companion;->()V +HSPLandroidx/compose/foundation/MagnifierStyle$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/MagnifierStyle$Companion;->getTextDefault()Landroidx/compose/foundation/MagnifierStyle; +HSPLandroidx/compose/foundation/MagnifierStyle$Companion;->isStyleSupported$foundation_release$default(Landroidx/compose/foundation/MagnifierStyle$Companion;Landroidx/compose/foundation/MagnifierStyle;IILjava/lang/Object;)Z +HSPLandroidx/compose/foundation/MagnifierStyle$Companion;->isStyleSupported$foundation_release(Landroidx/compose/foundation/MagnifierStyle;I)Z +Landroidx/compose/foundation/MutatePriority; +HSPLandroidx/compose/foundation/MutatePriority;->$values()[Landroidx/compose/foundation/MutatePriority; +HSPLandroidx/compose/foundation/MutatePriority;->()V +HSPLandroidx/compose/foundation/MutatePriority;->(Ljava/lang/String;I)V +Landroidx/compose/foundation/MutatorMutex; +HSPLandroidx/compose/foundation/MutatorMutex;->()V +HSPLandroidx/compose/foundation/MutatorMutex;->()V +HSPLandroidx/compose/foundation/MutatorMutex;->access$getCurrentMutator$p(Landroidx/compose/foundation/MutatorMutex;)Ljava/util/concurrent/atomic/AtomicReference; +HSPLandroidx/compose/foundation/MutatorMutex;->access$getMutex$p(Landroidx/compose/foundation/MutatorMutex;)Lkotlinx/coroutines/sync/Mutex; +HSPLandroidx/compose/foundation/MutatorMutex;->access$tryMutateOrCancel(Landroidx/compose/foundation/MutatorMutex;Landroidx/compose/foundation/MutatorMutex$Mutator;)V +HSPLandroidx/compose/foundation/MutatorMutex;->mutateWith(Ljava/lang/Object;Landroidx/compose/foundation/MutatePriority;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/MutatorMutex;->tryMutateOrCancel(Landroidx/compose/foundation/MutatorMutex$Mutator;)V +Landroidx/compose/foundation/MutatorMutex$Mutator; +HSPLandroidx/compose/foundation/MutatorMutex$Mutator;->(Landroidx/compose/foundation/MutatePriority;Lkotlinx/coroutines/Job;)V +Landroidx/compose/foundation/MutatorMutex$mutateWith$2; +HSPLandroidx/compose/foundation/MutatorMutex$mutateWith$2;->(Landroidx/compose/foundation/MutatePriority;Landroidx/compose/foundation/MutatorMutex;Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/MutatorMutex$mutateWith$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/MutatorMutex$mutateWith$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/MutatorMutex$mutateWith$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/MutatorMutex$mutateWith$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/NoIndication; +HSPLandroidx/compose/foundation/NoIndication;->()V +HSPLandroidx/compose/foundation/NoIndication;->()V +HSPLandroidx/compose/foundation/NoIndication;->rememberUpdatedInstance(Landroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/IndicationInstance; +Landroidx/compose/foundation/NoIndication$NoIndicationInstance; +HSPLandroidx/compose/foundation/NoIndication$NoIndicationInstance;->()V +HSPLandroidx/compose/foundation/NoIndication$NoIndicationInstance;->()V +HSPLandroidx/compose/foundation/NoIndication$NoIndicationInstance;->drawIndication(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V +Landroidx/compose/foundation/OverscrollConfiguration; +HSPLandroidx/compose/foundation/OverscrollConfiguration;->()V +HSPLandroidx/compose/foundation/OverscrollConfiguration;->(JLandroidx/compose/foundation/layout/PaddingValues;)V +HSPLandroidx/compose/foundation/OverscrollConfiguration;->(JLandroidx/compose/foundation/layout/PaddingValues;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/OverscrollConfiguration;->(JLandroidx/compose/foundation/layout/PaddingValues;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/OverscrollConfiguration;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/OverscrollConfiguration;->getGlowColor-0d7_KjU()J +Landroidx/compose/foundation/OverscrollConfigurationKt; +HSPLandroidx/compose/foundation/OverscrollConfigurationKt;->()V +HSPLandroidx/compose/foundation/OverscrollConfigurationKt;->getLocalOverscrollConfiguration()Landroidx/compose/runtime/ProvidableCompositionLocal; +Landroidx/compose/foundation/OverscrollConfigurationKt$LocalOverscrollConfiguration$1; +HSPLandroidx/compose/foundation/OverscrollConfigurationKt$LocalOverscrollConfiguration$1;->()V +HSPLandroidx/compose/foundation/OverscrollConfigurationKt$LocalOverscrollConfiguration$1;->()V +HSPLandroidx/compose/foundation/OverscrollConfigurationKt$LocalOverscrollConfiguration$1;->invoke()Landroidx/compose/foundation/OverscrollConfiguration; +HSPLandroidx/compose/foundation/OverscrollConfigurationKt$LocalOverscrollConfiguration$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/OverscrollEffect; +Landroidx/compose/foundation/OverscrollKt; +HSPLandroidx/compose/foundation/OverscrollKt;->overscroll(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/OverscrollEffect;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/PlatformMagnifier; +Landroidx/compose/foundation/PlatformMagnifierFactory; +HSPLandroidx/compose/foundation/PlatformMagnifierFactory;->()V +Landroidx/compose/foundation/PlatformMagnifierFactory$Companion; +HSPLandroidx/compose/foundation/PlatformMagnifierFactory$Companion;->()V +HSPLandroidx/compose/foundation/PlatformMagnifierFactory$Companion;->()V +HSPLandroidx/compose/foundation/PlatformMagnifierFactory$Companion;->getForCurrentPlatform()Landroidx/compose/foundation/PlatformMagnifierFactory; +Landroidx/compose/foundation/PlatformMagnifierFactoryApi28Impl$PlatformMagnifierImpl; +HSPLandroidx/compose/foundation/PlatformMagnifierFactoryApi28Impl$PlatformMagnifierImpl;->()V +HSPLandroidx/compose/foundation/PlatformMagnifierFactoryApi28Impl$PlatformMagnifierImpl;->(Landroid/widget/Magnifier;)V +HSPLandroidx/compose/foundation/PlatformMagnifierFactoryApi28Impl$PlatformMagnifierImpl;->dismiss()V +HSPLandroidx/compose/foundation/PlatformMagnifierFactoryApi28Impl$PlatformMagnifierImpl;->getSize-YbymL2g()J +HSPLandroidx/compose/foundation/PlatformMagnifierFactoryApi28Impl$PlatformMagnifierImpl;->updateContent()V +Landroidx/compose/foundation/PlatformMagnifierFactoryApi29Impl; +HSPLandroidx/compose/foundation/PlatformMagnifierFactoryApi29Impl;->()V +HSPLandroidx/compose/foundation/PlatformMagnifierFactoryApi29Impl;->()V +HSPLandroidx/compose/foundation/PlatformMagnifierFactoryApi29Impl;->create(Landroidx/compose/foundation/MagnifierStyle;Landroid/view/View;Landroidx/compose/ui/unit/Density;F)Landroidx/compose/foundation/PlatformMagnifier; +HSPLandroidx/compose/foundation/PlatformMagnifierFactoryApi29Impl;->create(Landroidx/compose/foundation/MagnifierStyle;Landroid/view/View;Landroidx/compose/ui/unit/Density;F)Landroidx/compose/foundation/PlatformMagnifierFactoryApi29Impl$PlatformMagnifierImpl; +HSPLandroidx/compose/foundation/PlatformMagnifierFactoryApi29Impl;->getCanUpdateZoom()Z +Landroidx/compose/foundation/PlatformMagnifierFactoryApi29Impl$PlatformMagnifierImpl; +HSPLandroidx/compose/foundation/PlatformMagnifierFactoryApi29Impl$PlatformMagnifierImpl;->()V +HSPLandroidx/compose/foundation/PlatformMagnifierFactoryApi29Impl$PlatformMagnifierImpl;->(Landroid/widget/Magnifier;)V +Landroidx/compose/foundation/ProgressSemanticsKt; +HSPLandroidx/compose/foundation/ProgressSemanticsKt;->progressSemantics(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/ProgressSemanticsKt$progressSemantics$2; +HSPLandroidx/compose/foundation/ProgressSemanticsKt$progressSemantics$2;->()V +HSPLandroidx/compose/foundation/ProgressSemanticsKt$progressSemantics$2;->()V +HSPLandroidx/compose/foundation/ProgressSemanticsKt$progressSemantics$2;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/foundation/ProgressSemanticsKt$progressSemantics$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/ScrollKt; +HSPLandroidx/compose/foundation/ScrollKt;->rememberScrollState(ILandroidx/compose/runtime/Composer;II)Landroidx/compose/foundation/ScrollState; +HSPLandroidx/compose/foundation/ScrollKt;->scroll(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/ScrollState;ZLandroidx/compose/foundation/gestures/FlingBehavior;ZZ)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/ScrollKt;->verticalScroll$default(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/ScrollState;ZLandroidx/compose/foundation/gestures/FlingBehavior;ZILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/ScrollKt;->verticalScroll(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/ScrollState;ZLandroidx/compose/foundation/gestures/FlingBehavior;Z)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/ScrollKt$rememberScrollState$1$1; +HSPLandroidx/compose/foundation/ScrollKt$rememberScrollState$1$1;->(I)V +HSPLandroidx/compose/foundation/ScrollKt$rememberScrollState$1$1;->invoke()Landroidx/compose/foundation/ScrollState; +HSPLandroidx/compose/foundation/ScrollKt$rememberScrollState$1$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/ScrollKt$scroll$2; +HSPLandroidx/compose/foundation/ScrollKt$scroll$2;->(ZZLandroidx/compose/foundation/ScrollState;ZLandroidx/compose/foundation/gestures/FlingBehavior;)V +HSPLandroidx/compose/foundation/ScrollKt$scroll$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/ScrollKt$scroll$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/ScrollKt$scroll$2$semantics$1; +HSPLandroidx/compose/foundation/ScrollKt$scroll$2$semantics$1;->(ZZZLandroidx/compose/foundation/ScrollState;Lkotlinx/coroutines/CoroutineScope;)V +HSPLandroidx/compose/foundation/ScrollKt$scroll$2$semantics$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/foundation/ScrollKt$scroll$2$semantics$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/ScrollKt$scroll$2$semantics$1$1; +HSPLandroidx/compose/foundation/ScrollKt$scroll$2$semantics$1$1;->(Lkotlinx/coroutines/CoroutineScope;ZLandroidx/compose/foundation/ScrollState;)V +Landroidx/compose/foundation/ScrollKt$scroll$2$semantics$1$accessibilityScrollState$1; +HSPLandroidx/compose/foundation/ScrollKt$scroll$2$semantics$1$accessibilityScrollState$1;->(Landroidx/compose/foundation/ScrollState;)V +HSPLandroidx/compose/foundation/ScrollKt$scroll$2$semantics$1$accessibilityScrollState$1;->invoke()Ljava/lang/Float; +HSPLandroidx/compose/foundation/ScrollKt$scroll$2$semantics$1$accessibilityScrollState$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/ScrollKt$scroll$2$semantics$1$accessibilityScrollState$2; +HSPLandroidx/compose/foundation/ScrollKt$scroll$2$semantics$1$accessibilityScrollState$2;->(Landroidx/compose/foundation/ScrollState;)V +HSPLandroidx/compose/foundation/ScrollKt$scroll$2$semantics$1$accessibilityScrollState$2;->invoke()Ljava/lang/Float; +HSPLandroidx/compose/foundation/ScrollKt$scroll$2$semantics$1$accessibilityScrollState$2;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/ScrollState; +HSPLandroidx/compose/foundation/ScrollState;->()V +HSPLandroidx/compose/foundation/ScrollState;->(I)V +HSPLandroidx/compose/foundation/ScrollState;->access$getSaver$cp()Landroidx/compose/runtime/saveable/Saver; +HSPLandroidx/compose/foundation/ScrollState;->getInternalInteractionSource$foundation_release()Landroidx/compose/foundation/interaction/MutableInteractionSource; +HSPLandroidx/compose/foundation/ScrollState;->getMaxValue()I +HSPLandroidx/compose/foundation/ScrollState;->getValue()I +HSPLandroidx/compose/foundation/ScrollState;->isScrollInProgress()Z +HSPLandroidx/compose/foundation/ScrollState;->setMaxValue$foundation_release(I)V +HSPLandroidx/compose/foundation/ScrollState;->setViewportSize$foundation_release(I)V +Landroidx/compose/foundation/ScrollState$Companion; +HSPLandroidx/compose/foundation/ScrollState$Companion;->()V +HSPLandroidx/compose/foundation/ScrollState$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/ScrollState$Companion;->getSaver()Landroidx/compose/runtime/saveable/Saver; +Landroidx/compose/foundation/ScrollState$Companion$Saver$1; +HSPLandroidx/compose/foundation/ScrollState$Companion$Saver$1;->()V +HSPLandroidx/compose/foundation/ScrollState$Companion$Saver$1;->()V +HSPLandroidx/compose/foundation/ScrollState$Companion$Saver$1;->invoke(Landroidx/compose/runtime/saveable/SaverScope;Landroidx/compose/foundation/ScrollState;)Ljava/lang/Integer; +HSPLandroidx/compose/foundation/ScrollState$Companion$Saver$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/ScrollState$Companion$Saver$2; +HSPLandroidx/compose/foundation/ScrollState$Companion$Saver$2;->()V +HSPLandroidx/compose/foundation/ScrollState$Companion$Saver$2;->()V +Landroidx/compose/foundation/ScrollState$canScrollBackward$2; +HSPLandroidx/compose/foundation/ScrollState$canScrollBackward$2;->(Landroidx/compose/foundation/ScrollState;)V +Landroidx/compose/foundation/ScrollState$canScrollForward$2; +HSPLandroidx/compose/foundation/ScrollState$canScrollForward$2;->(Landroidx/compose/foundation/ScrollState;)V +Landroidx/compose/foundation/ScrollState$scrollableState$1; +HSPLandroidx/compose/foundation/ScrollState$scrollableState$1;->(Landroidx/compose/foundation/ScrollState;)V +Landroidx/compose/foundation/ScrollingLayoutElement; +HSPLandroidx/compose/foundation/ScrollingLayoutElement;->(Landroidx/compose/foundation/ScrollState;ZZ)V +HSPLandroidx/compose/foundation/ScrollingLayoutElement;->create()Landroidx/compose/foundation/ScrollingLayoutNode; +HSPLandroidx/compose/foundation/ScrollingLayoutElement;->create()Landroidx/compose/ui/Modifier$Node; +Landroidx/compose/foundation/ScrollingLayoutNode; +HSPLandroidx/compose/foundation/ScrollingLayoutNode;->(Landroidx/compose/foundation/ScrollState;ZZ)V +HSPLandroidx/compose/foundation/ScrollingLayoutNode;->getScrollerState()Landroidx/compose/foundation/ScrollState; +HSPLandroidx/compose/foundation/ScrollingLayoutNode;->isReversed()Z +HSPLandroidx/compose/foundation/ScrollingLayoutNode;->isVertical()Z +HSPLandroidx/compose/foundation/ScrollingLayoutNode;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/ScrollingLayoutNode$measure$1; +HSPLandroidx/compose/foundation/ScrollingLayoutNode$measure$1;->(Landroidx/compose/foundation/ScrollingLayoutNode;ILandroidx/compose/ui/layout/Placeable;)V +HSPLandroidx/compose/foundation/ScrollingLayoutNode$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/ScrollingLayoutNode$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/AndroidConfig; +HSPLandroidx/compose/foundation/gestures/AndroidConfig;->()V +HSPLandroidx/compose/foundation/gestures/AndroidConfig;->()V +Landroidx/compose/foundation/gestures/AndroidScrollable_androidKt; +HSPLandroidx/compose/foundation/gestures/AndroidScrollable_androidKt;->platformScrollConfig(Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/gestures/ScrollConfig; +Landroidx/compose/foundation/gestures/BringIntoViewRequestPriorityQueue; +HSPLandroidx/compose/foundation/gestures/BringIntoViewRequestPriorityQueue;->()V +Landroidx/compose/foundation/gestures/ContentInViewModifier; +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier;->(Lkotlinx/coroutines/CoroutineScope;Landroidx/compose/foundation/gestures/Orientation;Landroidx/compose/foundation/gestures/ScrollableState;Z)V +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier;->access$setFocusedChild$p(Landroidx/compose/foundation/gestures/ContentInViewModifier;Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier;->bringChildIntoView(Lkotlin/jvm/functions/Function0;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier;->calculateRectForParent(Landroidx/compose/ui/geometry/Rect;)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier;->compareTo-TemP2vQ(JJ)I +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier;->computeDestination-O0kMr_c(Landroidx/compose/ui/geometry/Rect;J)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier;->getFocusedChildBounds()Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier;->getModifier()Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier;->isMaxVisible-O0kMr_c$default(Landroidx/compose/foundation/gestures/ContentInViewModifier;Landroidx/compose/ui/geometry/Rect;JILjava/lang/Object;)Z +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier;->isMaxVisible-O0kMr_c(Landroidx/compose/ui/geometry/Rect;J)Z +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier;->onPlaced(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier;->onRemeasured-ozmzZPI(J)V +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier;->relocationDistance(FFF)F +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier;->relocationOffset-BMxPBkI(Landroidx/compose/ui/geometry/Rect;J)J +Landroidx/compose/foundation/gestures/ContentInViewModifier$Request; +Landroidx/compose/foundation/gestures/ContentInViewModifier$WhenMappings; +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier$WhenMappings;->()V +Landroidx/compose/foundation/gestures/ContentInViewModifier$modifier$1; +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier$modifier$1;->(Landroidx/compose/foundation/gestures/ContentInViewModifier;)V +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier$modifier$1;->invoke(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/foundation/gestures/ContentInViewModifier$modifier$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/DefaultDraggableState; +HSPLandroidx/compose/foundation/gestures/DefaultDraggableState;->(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/foundation/gestures/DefaultDraggableState$dragScope$1; +HSPLandroidx/compose/foundation/gestures/DefaultDraggableState$dragScope$1;->(Landroidx/compose/foundation/gestures/DefaultDraggableState;)V +Landroidx/compose/foundation/gestures/DefaultFlingBehavior; +HSPLandroidx/compose/foundation/gestures/DefaultFlingBehavior;->(Landroidx/compose/animation/core/DecayAnimationSpec;Landroidx/compose/ui/MotionDurationScale;)V +HSPLandroidx/compose/foundation/gestures/DefaultFlingBehavior;->(Landroidx/compose/animation/core/DecayAnimationSpec;Landroidx/compose/ui/MotionDurationScale;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/foundation/gestures/DefaultScrollableState; +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState;->access$getScrollMutex$p(Landroidx/compose/foundation/gestures/DefaultScrollableState;)Landroidx/compose/foundation/MutatorMutex; +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState;->access$getScrollScope$p(Landroidx/compose/foundation/gestures/DefaultScrollableState;)Landroidx/compose/foundation/gestures/ScrollScope; +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState;->access$isScrollingState$p(Landroidx/compose/foundation/gestures/DefaultScrollableState;)Landroidx/compose/runtime/MutableState; +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState;->isScrollInProgress()Z +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState;->scroll(Landroidx/compose/foundation/MutatePriority;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2; +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2;->(Landroidx/compose/foundation/gestures/DefaultScrollableState;Landroidx/compose/foundation/MutatePriority;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2$1; +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2$1;->(Landroidx/compose/foundation/gestures/DefaultScrollableState;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2$1;->invoke(Landroidx/compose/foundation/gestures/ScrollScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/DefaultScrollableState$scrollScope$1; +HSPLandroidx/compose/foundation/gestures/DefaultScrollableState$scrollScope$1;->(Landroidx/compose/foundation/gestures/DefaultScrollableState;)V +Landroidx/compose/foundation/gestures/DragGestureDetectorKt; +HSPLandroidx/compose/foundation/gestures/DragGestureDetectorKt;->()V +HSPLandroidx/compose/foundation/gestures/DragGestureDetectorKt;->access$isPointerUp-DmW0f2w(Landroidx/compose/ui/input/pointer/PointerEvent;J)Z +HSPLandroidx/compose/foundation/gestures/DragGestureDetectorKt;->isPointerUp-DmW0f2w(Landroidx/compose/ui/input/pointer/PointerEvent;J)Z +HSPLandroidx/compose/foundation/gestures/DragGestureDetectorKt;->pointerSlop-E8SPZFQ(Landroidx/compose/ui/platform/ViewConfiguration;I)F +HSPLandroidx/compose/foundation/gestures/DragGestureDetectorKt;->toPointerDirectionConfig(Landroidx/compose/foundation/gestures/Orientation;)Landroidx/compose/foundation/gestures/PointerDirectionConfig; +Landroidx/compose/foundation/gestures/DragGestureDetectorKt$HorizontalPointerDirectionConfig$1; +HSPLandroidx/compose/foundation/gestures/DragGestureDetectorKt$HorizontalPointerDirectionConfig$1;->()V +Landroidx/compose/foundation/gestures/DragGestureDetectorKt$VerticalPointerDirectionConfig$1; +HSPLandroidx/compose/foundation/gestures/DragGestureDetectorKt$VerticalPointerDirectionConfig$1;->()V +Landroidx/compose/foundation/gestures/DragScope; +Landroidx/compose/foundation/gestures/DraggableElement; +HSPLandroidx/compose/foundation/gestures/DraggableElement;->(Landroidx/compose/foundation/gestures/DraggableState;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/gestures/Orientation;ZLandroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Z)V +HSPLandroidx/compose/foundation/gestures/DraggableElement;->create()Landroidx/compose/foundation/gestures/DraggableNode; +HSPLandroidx/compose/foundation/gestures/DraggableElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/gestures/DraggableElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/gestures/DraggableElement;->update(Landroidx/compose/foundation/gestures/DraggableNode;)V +HSPLandroidx/compose/foundation/gestures/DraggableElement;->update(Landroidx/compose/ui/Modifier$Node;)V +Landroidx/compose/foundation/gestures/DraggableKt; +HSPLandroidx/compose/foundation/gestures/DraggableKt;->DraggableState(Lkotlin/jvm/functions/Function1;)Landroidx/compose/foundation/gestures/DraggableState; +HSPLandroidx/compose/foundation/gestures/DraggableKt;->access$awaitDownAndSlop(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/input/pointer/util/VelocityTracker;Landroidx/compose/foundation/gestures/Orientation;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/DraggableKt;->awaitDownAndSlop(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/input/pointer/util/VelocityTracker;Landroidx/compose/foundation/gestures/Orientation;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/DraggableKt;->draggable$default(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/gestures/DraggableState;Landroidx/compose/foundation/gestures/Orientation;ZLandroidx/compose/foundation/interaction/MutableInteractionSource;ZLkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;ZILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/gestures/DraggableKt;->draggable(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/gestures/DraggableState;Landroidx/compose/foundation/gestures/Orientation;ZLandroidx/compose/foundation/interaction/MutableInteractionSource;ZLkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Z)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/gestures/DraggableKt;->rememberDraggableState(Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/gestures/DraggableState; +Landroidx/compose/foundation/gestures/DraggableKt$awaitDownAndSlop$1; +HSPLandroidx/compose/foundation/gestures/DraggableKt$awaitDownAndSlop$1;->(Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/DraggableKt$awaitDownAndSlop$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/DraggableKt$awaitDownAndSlop$postPointerSlop$1; +HSPLandroidx/compose/foundation/gestures/DraggableKt$awaitDownAndSlop$postPointerSlop$1;->(Landroidx/compose/ui/input/pointer/util/VelocityTracker;Lkotlin/jvm/internal/Ref$LongRef;)V +Landroidx/compose/foundation/gestures/DraggableKt$draggable$3; +HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$3;->()V +HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$3;->()V +Landroidx/compose/foundation/gestures/DraggableKt$draggable$4; +HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$4;->(Z)V +Landroidx/compose/foundation/gestures/DraggableKt$draggable$5; +HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$5;->(Lkotlin/jvm/functions/Function3;Landroidx/compose/foundation/gestures/Orientation;Lkotlin/coroutines/Continuation;)V +Landroidx/compose/foundation/gestures/DraggableKt$rememberDraggableState$1$1; +HSPLandroidx/compose/foundation/gestures/DraggableKt$rememberDraggableState$1$1;->(Landroidx/compose/runtime/State;)V +Landroidx/compose/foundation/gestures/DraggableNode; +HSPLandroidx/compose/foundation/gestures/DraggableNode;->(Landroidx/compose/foundation/gestures/DraggableState;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/gestures/Orientation;ZLandroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Z)V +HSPLandroidx/compose/foundation/gestures/DraggableNode;->access$getCanDrag$p(Landroidx/compose/foundation/gestures/DraggableNode;)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/foundation/gestures/DraggableNode;->access$getChannel$p(Landroidx/compose/foundation/gestures/DraggableNode;)Lkotlinx/coroutines/channels/Channel; +HSPLandroidx/compose/foundation/gestures/DraggableNode;->access$getEnabled$p(Landroidx/compose/foundation/gestures/DraggableNode;)Z +HSPLandroidx/compose/foundation/gestures/DraggableNode;->access$getOrientation$p(Landroidx/compose/foundation/gestures/DraggableNode;)Landroidx/compose/foundation/gestures/Orientation; +HSPLandroidx/compose/foundation/gestures/DraggableNode;->access$getStartDragImmediately$p(Landroidx/compose/foundation/gestures/DraggableNode;)Lkotlin/jvm/functions/Function0; +HSPLandroidx/compose/foundation/gestures/DraggableNode;->access$getVelocityTracker$p(Landroidx/compose/foundation/gestures/DraggableNode;)Landroidx/compose/ui/input/pointer/util/VelocityTracker; +HSPLandroidx/compose/foundation/gestures/DraggableNode;->access$get_canDrag$p(Landroidx/compose/foundation/gestures/DraggableNode;)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/foundation/gestures/DraggableNode;->access$get_startDragImmediately$p(Landroidx/compose/foundation/gestures/DraggableNode;)Lkotlin/jvm/functions/Function0; +HSPLandroidx/compose/foundation/gestures/DraggableNode;->disposeInteractionSource()V +HSPLandroidx/compose/foundation/gestures/DraggableNode;->onDetach()V +HSPLandroidx/compose/foundation/gestures/DraggableNode;->onPointerEvent-H0pRuoY(Landroidx/compose/ui/input/pointer/PointerEvent;Landroidx/compose/ui/input/pointer/PointerEventPass;J)V +HSPLandroidx/compose/foundation/gestures/DraggableNode;->update(Landroidx/compose/foundation/gestures/DraggableState;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/gestures/Orientation;ZLandroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Z)V +Landroidx/compose/foundation/gestures/DraggableNode$_canDrag$1; +HSPLandroidx/compose/foundation/gestures/DraggableNode$_canDrag$1;->(Landroidx/compose/foundation/gestures/DraggableNode;)V +HSPLandroidx/compose/foundation/gestures/DraggableNode$_canDrag$1;->invoke(Landroidx/compose/ui/input/pointer/PointerInputChange;)Ljava/lang/Boolean; +HSPLandroidx/compose/foundation/gestures/DraggableNode$_canDrag$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/DraggableNode$_startDragImmediately$1; +HSPLandroidx/compose/foundation/gestures/DraggableNode$_startDragImmediately$1;->(Landroidx/compose/foundation/gestures/DraggableNode;)V +HSPLandroidx/compose/foundation/gestures/DraggableNode$_startDragImmediately$1;->invoke()Ljava/lang/Boolean; +HSPLandroidx/compose/foundation/gestures/DraggableNode$_startDragImmediately$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1; +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1;->(Landroidx/compose/foundation/gestures/DraggableNode;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1;->invoke(Landroidx/compose/ui/input/pointer/PointerInputScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1$1; +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1$1;->(Landroidx/compose/ui/input/pointer/PointerInputScope;Landroidx/compose/foundation/gestures/DraggableNode;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1$1$1; +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1$1$1;->(Landroidx/compose/foundation/gestures/DraggableNode;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1$1$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1$1$2; +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1$1$2;->(Lkotlinx/coroutines/CoroutineScope;Landroidx/compose/foundation/gestures/DraggableNode;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1$1$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/gestures/DraggableNode$pointerInputNode$1$1$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/DraggableState; +Landroidx/compose/foundation/gestures/FlingBehavior; +Landroidx/compose/foundation/gestures/ForEachGestureKt; +HSPLandroidx/compose/foundation/gestures/ForEachGestureKt;->allPointersUp(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;)Z +HSPLandroidx/compose/foundation/gestures/ForEachGestureKt;->awaitAllPointersUp(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/ForEachGestureKt;->awaitEachGesture(Landroidx/compose/ui/input/pointer/PointerInputScope;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/ForEachGestureKt$awaitAllPointersUp$3; +HSPLandroidx/compose/foundation/gestures/ForEachGestureKt$awaitAllPointersUp$3;->(Lkotlin/coroutines/Continuation;)V +Landroidx/compose/foundation/gestures/ForEachGestureKt$awaitEachGesture$2; +HSPLandroidx/compose/foundation/gestures/ForEachGestureKt$awaitEachGesture$2;->(Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/ForEachGestureKt$awaitEachGesture$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/gestures/ForEachGestureKt$awaitEachGesture$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/ModifierLocalScrollableContainerProvider; +HSPLandroidx/compose/foundation/gestures/ModifierLocalScrollableContainerProvider;->()V +HSPLandroidx/compose/foundation/gestures/ModifierLocalScrollableContainerProvider;->()V +HSPLandroidx/compose/foundation/gestures/ModifierLocalScrollableContainerProvider;->getKey()Landroidx/compose/ui/modifier/ProvidableModifierLocal; +HSPLandroidx/compose/foundation/gestures/ModifierLocalScrollableContainerProvider;->getValue()Ljava/lang/Boolean; +HSPLandroidx/compose/foundation/gestures/ModifierLocalScrollableContainerProvider;->getValue()Ljava/lang/Object; +Landroidx/compose/foundation/gestures/MouseWheelScrollElement; +HSPLandroidx/compose/foundation/gestures/MouseWheelScrollElement;->(Landroidx/compose/runtime/State;Landroidx/compose/foundation/gestures/ScrollConfig;)V +HSPLandroidx/compose/foundation/gestures/MouseWheelScrollElement;->create()Landroidx/compose/foundation/gestures/MouseWheelScrollNode; +HSPLandroidx/compose/foundation/gestures/MouseWheelScrollElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/gestures/MouseWheelScrollElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/gestures/MouseWheelScrollNode; +HSPLandroidx/compose/foundation/gestures/MouseWheelScrollNode;->(Landroidx/compose/runtime/State;Landroidx/compose/foundation/gestures/ScrollConfig;)V +HSPLandroidx/compose/foundation/gestures/MouseWheelScrollNode;->onPointerEvent-H0pRuoY(Landroidx/compose/ui/input/pointer/PointerEvent;Landroidx/compose/ui/input/pointer/PointerEventPass;J)V +Landroidx/compose/foundation/gestures/MouseWheelScrollNode$pointerInputNode$1; +HSPLandroidx/compose/foundation/gestures/MouseWheelScrollNode$pointerInputNode$1;->(Landroidx/compose/foundation/gestures/MouseWheelScrollNode;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/MouseWheelScrollNode$pointerInputNode$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/gestures/MouseWheelScrollNode$pointerInputNode$1;->invoke(Landroidx/compose/ui/input/pointer/PointerInputScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/MouseWheelScrollNode$pointerInputNode$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/MouseWheelScrollNode$pointerInputNode$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/MouseWheelScrollNode$pointerInputNode$1$1; +HSPLandroidx/compose/foundation/gestures/MouseWheelScrollNode$pointerInputNode$1$1;->(Landroidx/compose/foundation/gestures/MouseWheelScrollNode;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/MouseWheelScrollNode$pointerInputNode$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/gestures/MouseWheelScrollNode$pointerInputNode$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/Orientation; +HSPLandroidx/compose/foundation/gestures/Orientation;->$values()[Landroidx/compose/foundation/gestures/Orientation; +HSPLandroidx/compose/foundation/gestures/Orientation;->()V +HSPLandroidx/compose/foundation/gestures/Orientation;->(Ljava/lang/String;I)V +HSPLandroidx/compose/foundation/gestures/Orientation;->values()[Landroidx/compose/foundation/gestures/Orientation; +Landroidx/compose/foundation/gestures/PointerDirectionConfig; +Landroidx/compose/foundation/gestures/PressGestureScope; +Landroidx/compose/foundation/gestures/PressGestureScopeImpl; +HSPLandroidx/compose/foundation/gestures/PressGestureScopeImpl;->(Landroidx/compose/ui/unit/Density;)V +HSPLandroidx/compose/foundation/gestures/PressGestureScopeImpl;->release()V +HSPLandroidx/compose/foundation/gestures/PressGestureScopeImpl;->reset(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/PressGestureScopeImpl;->tryAwaitRelease(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/PressGestureScopeImpl$reset$1; +HSPLandroidx/compose/foundation/gestures/PressGestureScopeImpl$reset$1;->(Landroidx/compose/foundation/gestures/PressGestureScopeImpl;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/PressGestureScopeImpl$reset$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/PressGestureScopeImpl$tryAwaitRelease$1; +HSPLandroidx/compose/foundation/gestures/PressGestureScopeImpl$tryAwaitRelease$1;->(Landroidx/compose/foundation/gestures/PressGestureScopeImpl;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/PressGestureScopeImpl$tryAwaitRelease$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/ScrollConfig; +Landroidx/compose/foundation/gestures/ScrollDraggableState; +HSPLandroidx/compose/foundation/gestures/ScrollDraggableState;->(Landroidx/compose/runtime/State;)V +Landroidx/compose/foundation/gestures/ScrollScope; +Landroidx/compose/foundation/gestures/ScrollableDefaults; +HSPLandroidx/compose/foundation/gestures/ScrollableDefaults;->()V +HSPLandroidx/compose/foundation/gestures/ScrollableDefaults;->()V +HSPLandroidx/compose/foundation/gestures/ScrollableDefaults;->flingBehavior(Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/gestures/FlingBehavior; +HSPLandroidx/compose/foundation/gestures/ScrollableDefaults;->overscrollEffect(Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/OverscrollEffect; +HSPLandroidx/compose/foundation/gestures/ScrollableDefaults;->reverseDirection(Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/foundation/gestures/Orientation;Z)Z +Landroidx/compose/foundation/gestures/ScrollableKt; +HSPLandroidx/compose/foundation/gestures/ScrollableKt;->()V +HSPLandroidx/compose/foundation/gestures/ScrollableKt;->access$awaitScrollEvent(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/ScrollableKt;->access$getNoOpScrollScope$p()Landroidx/compose/foundation/gestures/ScrollScope; +HSPLandroidx/compose/foundation/gestures/ScrollableKt;->access$pointerScrollable(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/gestures/Orientation;ZLandroidx/compose/foundation/gestures/ScrollableState;Landroidx/compose/foundation/gestures/FlingBehavior;Landroidx/compose/foundation/OverscrollEffect;ZLandroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/gestures/ScrollableKt;->access$scrollableNestedScrollConnection(Landroidx/compose/runtime/State;Z)Landroidx/compose/ui/input/nestedscroll/NestedScrollConnection; +HSPLandroidx/compose/foundation/gestures/ScrollableKt;->awaitScrollEvent(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/ScrollableKt;->getDefaultScrollMotionDurationScale()Landroidx/compose/ui/MotionDurationScale; +HSPLandroidx/compose/foundation/gestures/ScrollableKt;->getModifierLocalScrollableContainer()Landroidx/compose/ui/modifier/ProvidableModifierLocal; +HSPLandroidx/compose/foundation/gestures/ScrollableKt;->pointerScrollable(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/gestures/Orientation;ZLandroidx/compose/foundation/gestures/ScrollableState;Landroidx/compose/foundation/gestures/FlingBehavior;Landroidx/compose/foundation/OverscrollEffect;ZLandroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/gestures/ScrollableKt;->scrollable$default(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/gestures/ScrollableState;Landroidx/compose/foundation/gestures/Orientation;ZZLandroidx/compose/foundation/gestures/FlingBehavior;Landroidx/compose/foundation/interaction/MutableInteractionSource;ILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/gestures/ScrollableKt;->scrollable(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/gestures/ScrollableState;Landroidx/compose/foundation/gestures/Orientation;Landroidx/compose/foundation/OverscrollEffect;ZZLandroidx/compose/foundation/gestures/FlingBehavior;Landroidx/compose/foundation/interaction/MutableInteractionSource;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/gestures/ScrollableKt;->scrollable(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/gestures/ScrollableState;Landroidx/compose/foundation/gestures/Orientation;ZZLandroidx/compose/foundation/gestures/FlingBehavior;Landroidx/compose/foundation/interaction/MutableInteractionSource;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/gestures/ScrollableKt;->scrollableNestedScrollConnection(Landroidx/compose/runtime/State;Z)Landroidx/compose/ui/input/nestedscroll/NestedScrollConnection; +Landroidx/compose/foundation/gestures/ScrollableKt$DefaultScrollMotionDurationScale$1; +HSPLandroidx/compose/foundation/gestures/ScrollableKt$DefaultScrollMotionDurationScale$1;->()V +Landroidx/compose/foundation/gestures/ScrollableKt$ModifierLocalScrollableContainer$1; +HSPLandroidx/compose/foundation/gestures/ScrollableKt$ModifierLocalScrollableContainer$1;->()V +HSPLandroidx/compose/foundation/gestures/ScrollableKt$ModifierLocalScrollableContainer$1;->()V +Landroidx/compose/foundation/gestures/ScrollableKt$NoOpOnDragStarted$1; +HSPLandroidx/compose/foundation/gestures/ScrollableKt$NoOpOnDragStarted$1;->(Lkotlin/coroutines/Continuation;)V +Landroidx/compose/foundation/gestures/ScrollableKt$NoOpScrollScope$1; +HSPLandroidx/compose/foundation/gestures/ScrollableKt$NoOpScrollScope$1;->()V +Landroidx/compose/foundation/gestures/ScrollableKt$awaitScrollEvent$1; +HSPLandroidx/compose/foundation/gestures/ScrollableKt$awaitScrollEvent$1;->(Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/ScrollableKt$awaitScrollEvent$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$1; +HSPLandroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$1;->()V +HSPLandroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$1;->()V +HSPLandroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$1;->invoke(Landroidx/compose/ui/input/pointer/PointerInputChange;)Ljava/lang/Boolean; +HSPLandroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$2$1; +HSPLandroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$2$1;->(Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$2$1;->invoke()Ljava/lang/Boolean; +HSPLandroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$2$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$3$1; +HSPLandroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$3$1;->(Landroidx/compose/runtime/MutableState;Landroidx/compose/runtime/State;Lkotlin/coroutines/Continuation;)V +Landroidx/compose/foundation/gestures/ScrollableKt$scrollable$2; +HSPLandroidx/compose/foundation/gestures/ScrollableKt$scrollable$2;->(Landroidx/compose/foundation/gestures/Orientation;Landroidx/compose/foundation/gestures/ScrollableState;ZLandroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/gestures/FlingBehavior;Landroidx/compose/foundation/OverscrollEffect;Z)V +HSPLandroidx/compose/foundation/gestures/ScrollableKt$scrollable$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/gestures/ScrollableKt$scrollable$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/ScrollableKt$scrollableNestedScrollConnection$1; +HSPLandroidx/compose/foundation/gestures/ScrollableKt$scrollableNestedScrollConnection$1;->(Landroidx/compose/runtime/State;Z)V +Landroidx/compose/foundation/gestures/ScrollableState; +HSPLandroidx/compose/foundation/gestures/ScrollableState;->scroll$default(Landroidx/compose/foundation/gestures/ScrollableState;Landroidx/compose/foundation/MutatePriority;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/ScrollableStateKt; +HSPLandroidx/compose/foundation/gestures/ScrollableStateKt;->ScrollableState(Lkotlin/jvm/functions/Function1;)Landroidx/compose/foundation/gestures/ScrollableState; +HSPLandroidx/compose/foundation/gestures/ScrollableStateKt;->rememberScrollableState(Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/gestures/ScrollableState; +Landroidx/compose/foundation/gestures/ScrollableStateKt$rememberScrollableState$1$1; +HSPLandroidx/compose/foundation/gestures/ScrollableStateKt$rememberScrollableState$1$1;->(Landroidx/compose/runtime/State;)V +Landroidx/compose/foundation/gestures/ScrollingLogic; +HSPLandroidx/compose/foundation/gestures/ScrollingLogic;->(Landroidx/compose/foundation/gestures/Orientation;ZLandroidx/compose/runtime/State;Landroidx/compose/foundation/gestures/ScrollableState;Landroidx/compose/foundation/gestures/FlingBehavior;Landroidx/compose/foundation/OverscrollEffect;)V +HSPLandroidx/compose/foundation/gestures/ScrollingLogic;->shouldScrollImmediately()Z +Landroidx/compose/foundation/gestures/TapGestureDetectorKt; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt;->()V +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt;->access$getNoPressGesture$p()Lkotlin/jvm/functions/Function3; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt;->awaitFirstDown$default(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;ZLandroidx/compose/ui/input/pointer/PointerEventPass;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt;->awaitFirstDown(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;ZLandroidx/compose/ui/input/pointer/PointerEventPass;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt;->detectTapAndPress(Landroidx/compose/ui/input/pointer/PointerInputScope;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt;->waitForUpOrCancellation$default(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Landroidx/compose/ui/input/pointer/PointerEventPass;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt;->waitForUpOrCancellation(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Landroidx/compose/ui/input/pointer/PointerEventPass;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/TapGestureDetectorKt$NoPressGesture$1; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$NoPressGesture$1;->(Lkotlin/coroutines/Continuation;)V +Landroidx/compose/foundation/gestures/TapGestureDetectorKt$awaitFirstDown$2; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$awaitFirstDown$2;->(Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$awaitFirstDown$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2;->(Landroidx/compose/ui/input/pointer/PointerInputScope;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/gestures/PressGestureScopeImpl;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1;->(Lkotlinx/coroutines/CoroutineScope;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/gestures/PressGestureScopeImpl;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1;->invoke(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$1; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$1;->(Landroidx/compose/foundation/gestures/PressGestureScopeImpl;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$2; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$2;->(Lkotlin/jvm/functions/Function3;Landroidx/compose/foundation/gestures/PressGestureScopeImpl;Landroidx/compose/ui/input/pointer/PointerInputChange;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$4; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$4;->(Landroidx/compose/foundation/gestures/PressGestureScopeImpl;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$4;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$4;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/TapGestureDetectorKt$waitForUpOrCancellation$2; +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$waitForUpOrCancellation$2;->(Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$waitForUpOrCancellation$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/gestures/UpdatableAnimationState; +HSPLandroidx/compose/foundation/gestures/UpdatableAnimationState;->()V +HSPLandroidx/compose/foundation/gestures/UpdatableAnimationState;->()V +Landroidx/compose/foundation/gestures/UpdatableAnimationState$Companion; +HSPLandroidx/compose/foundation/gestures/UpdatableAnimationState$Companion;->()V +HSPLandroidx/compose/foundation/gestures/UpdatableAnimationState$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/foundation/interaction/FocusInteraction; +Landroidx/compose/foundation/interaction/FocusInteraction$Focus; +HSPLandroidx/compose/foundation/interaction/FocusInteraction$Focus;->()V +HSPLandroidx/compose/foundation/interaction/FocusInteraction$Focus;->()V +Landroidx/compose/foundation/interaction/FocusInteraction$Unfocus; +HSPLandroidx/compose/foundation/interaction/FocusInteraction$Unfocus;->()V +HSPLandroidx/compose/foundation/interaction/FocusInteraction$Unfocus;->(Landroidx/compose/foundation/interaction/FocusInteraction$Focus;)V +Landroidx/compose/foundation/interaction/FocusInteractionKt; +HSPLandroidx/compose/foundation/interaction/FocusInteractionKt;->collectIsFocusedAsState(Landroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +Landroidx/compose/foundation/interaction/FocusInteractionKt$collectIsFocusedAsState$1$1; +HSPLandroidx/compose/foundation/interaction/FocusInteractionKt$collectIsFocusedAsState$1$1;->(Landroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/runtime/MutableState;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/interaction/FocusInteractionKt$collectIsFocusedAsState$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/interaction/FocusInteractionKt$collectIsFocusedAsState$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/interaction/FocusInteractionKt$collectIsFocusedAsState$1$1$1; +HSPLandroidx/compose/foundation/interaction/FocusInteractionKt$collectIsFocusedAsState$1$1$1;->(Ljava/util/List;Landroidx/compose/runtime/MutableState;)V +HSPLandroidx/compose/foundation/interaction/FocusInteractionKt$collectIsFocusedAsState$1$1$1;->emit(Landroidx/compose/foundation/interaction/Interaction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/interaction/FocusInteractionKt$collectIsFocusedAsState$1$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/foundation/interaction/HoverInteraction; +Landroidx/compose/foundation/interaction/HoverInteraction$Enter; +Landroidx/compose/foundation/interaction/HoverInteraction$Exit; +Landroidx/compose/foundation/interaction/Interaction; +Landroidx/compose/foundation/interaction/InteractionSource; +Landroidx/compose/foundation/interaction/InteractionSourceKt; +HSPLandroidx/compose/foundation/interaction/InteractionSourceKt;->MutableInteractionSource()Landroidx/compose/foundation/interaction/MutableInteractionSource; +Landroidx/compose/foundation/interaction/MutableInteractionSource; +Landroidx/compose/foundation/interaction/MutableInteractionSourceImpl; +HSPLandroidx/compose/foundation/interaction/MutableInteractionSourceImpl;->()V +HSPLandroidx/compose/foundation/interaction/MutableInteractionSourceImpl;->emit(Landroidx/compose/foundation/interaction/Interaction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/interaction/MutableInteractionSourceImpl;->getInteractions()Lkotlinx/coroutines/flow/Flow; +HSPLandroidx/compose/foundation/interaction/MutableInteractionSourceImpl;->getInteractions()Lkotlinx/coroutines/flow/MutableSharedFlow; +HSPLandroidx/compose/foundation/interaction/MutableInteractionSourceImpl;->tryEmit(Landroidx/compose/foundation/interaction/Interaction;)Z +Landroidx/compose/foundation/interaction/PressInteraction; +Landroidx/compose/foundation/interaction/PressInteraction$Press; +HSPLandroidx/compose/foundation/interaction/PressInteraction$Press;->()V +HSPLandroidx/compose/foundation/interaction/PressInteraction$Press;->(J)V +HSPLandroidx/compose/foundation/interaction/PressInteraction$Press;->(JLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/interaction/PressInteraction$Press;->getPressPosition-F1C5BW0()J +Landroidx/compose/foundation/interaction/PressInteraction$Release; +HSPLandroidx/compose/foundation/interaction/PressInteraction$Release;->()V +HSPLandroidx/compose/foundation/interaction/PressInteraction$Release;->(Landroidx/compose/foundation/interaction/PressInteraction$Press;)V +HSPLandroidx/compose/foundation/interaction/PressInteraction$Release;->getPress()Landroidx/compose/foundation/interaction/PressInteraction$Press; +Landroidx/compose/foundation/layout/AddedInsets; +HSPLandroidx/compose/foundation/layout/AddedInsets;->(Landroidx/compose/foundation/layout/WindowInsets;Landroidx/compose/foundation/layout/WindowInsets;)V +HSPLandroidx/compose/foundation/layout/AddedInsets;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/layout/AddedInsets;->getBottom(Landroidx/compose/ui/unit/Density;)I +HSPLandroidx/compose/foundation/layout/AddedInsets;->getLeft(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/foundation/layout/AddedInsets;->getRight(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/foundation/layout/AddedInsets;->getTop(Landroidx/compose/ui/unit/Density;)I +Landroidx/compose/foundation/layout/AndroidWindowInsets; +HSPLandroidx/compose/foundation/layout/AndroidWindowInsets;->(ILjava/lang/String;)V +HSPLandroidx/compose/foundation/layout/AndroidWindowInsets;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/layout/AndroidWindowInsets;->getBottom(Landroidx/compose/ui/unit/Density;)I +HSPLandroidx/compose/foundation/layout/AndroidWindowInsets;->getInsets$foundation_layout_release()Landroidx/core/graphics/Insets; +HSPLandroidx/compose/foundation/layout/AndroidWindowInsets;->getLeft(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/foundation/layout/AndroidWindowInsets;->getRight(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/foundation/layout/AndroidWindowInsets;->getTop(Landroidx/compose/ui/unit/Density;)I +HSPLandroidx/compose/foundation/layout/AndroidWindowInsets;->setInsets$foundation_layout_release(Landroidx/core/graphics/Insets;)V +HSPLandroidx/compose/foundation/layout/AndroidWindowInsets;->setVisible(Z)V +HSPLandroidx/compose/foundation/layout/AndroidWindowInsets;->update$foundation_layout_release(Landroidx/core/view/WindowInsetsCompat;I)V +Landroidx/compose/foundation/layout/Arrangement; +HSPLandroidx/compose/foundation/layout/Arrangement;->()V +HSPLandroidx/compose/foundation/layout/Arrangement;->()V +HSPLandroidx/compose/foundation/layout/Arrangement;->getCenter()Landroidx/compose/foundation/layout/Arrangement$HorizontalOrVertical; +HSPLandroidx/compose/foundation/layout/Arrangement;->getEnd()Landroidx/compose/foundation/layout/Arrangement$Horizontal; +HSPLandroidx/compose/foundation/layout/Arrangement;->getSpaceBetween()Landroidx/compose/foundation/layout/Arrangement$HorizontalOrVertical; +HSPLandroidx/compose/foundation/layout/Arrangement;->getStart()Landroidx/compose/foundation/layout/Arrangement$Horizontal; +HSPLandroidx/compose/foundation/layout/Arrangement;->getTop()Landroidx/compose/foundation/layout/Arrangement$Vertical; +HSPLandroidx/compose/foundation/layout/Arrangement;->placeCenter$foundation_layout_release(I[I[IZ)V +HSPLandroidx/compose/foundation/layout/Arrangement;->placeLeftOrTop$foundation_layout_release([I[IZ)V +HSPLandroidx/compose/foundation/layout/Arrangement;->placeRightOrBottom$foundation_layout_release(I[I[IZ)V +HSPLandroidx/compose/foundation/layout/Arrangement;->placeSpaceBetween$foundation_layout_release(I[I[IZ)V +HSPLandroidx/compose/foundation/layout/Arrangement;->spacedBy-0680j_4(F)Landroidx/compose/foundation/layout/Arrangement$HorizontalOrVertical; +Landroidx/compose/foundation/layout/Arrangement$Bottom$1; +HSPLandroidx/compose/foundation/layout/Arrangement$Bottom$1;->()V +Landroidx/compose/foundation/layout/Arrangement$Center$1; +HSPLandroidx/compose/foundation/layout/Arrangement$Center$1;->()V +HSPLandroidx/compose/foundation/layout/Arrangement$Center$1;->arrange(Landroidx/compose/ui/unit/Density;I[ILandroidx/compose/ui/unit/LayoutDirection;[I)V +HSPLandroidx/compose/foundation/layout/Arrangement$Center$1;->arrange(Landroidx/compose/ui/unit/Density;I[I[I)V +HSPLandroidx/compose/foundation/layout/Arrangement$Center$1;->getSpacing-D9Ej5fM()F +Landroidx/compose/foundation/layout/Arrangement$End$1; +HSPLandroidx/compose/foundation/layout/Arrangement$End$1;->()V +HSPLandroidx/compose/foundation/layout/Arrangement$End$1;->arrange(Landroidx/compose/ui/unit/Density;I[ILandroidx/compose/ui/unit/LayoutDirection;[I)V +Landroidx/compose/foundation/layout/Arrangement$Horizontal; +HSPLandroidx/compose/foundation/layout/Arrangement$Horizontal;->getSpacing-D9Ej5fM()F +Landroidx/compose/foundation/layout/Arrangement$HorizontalOrVertical; +Landroidx/compose/foundation/layout/Arrangement$SpaceAround$1; +HSPLandroidx/compose/foundation/layout/Arrangement$SpaceAround$1;->()V +Landroidx/compose/foundation/layout/Arrangement$SpaceBetween$1; +HSPLandroidx/compose/foundation/layout/Arrangement$SpaceBetween$1;->()V +HSPLandroidx/compose/foundation/layout/Arrangement$SpaceBetween$1;->arrange(Landroidx/compose/ui/unit/Density;I[ILandroidx/compose/ui/unit/LayoutDirection;[I)V +HSPLandroidx/compose/foundation/layout/Arrangement$SpaceBetween$1;->getSpacing-D9Ej5fM()F +Landroidx/compose/foundation/layout/Arrangement$SpaceEvenly$1; +HSPLandroidx/compose/foundation/layout/Arrangement$SpaceEvenly$1;->()V +Landroidx/compose/foundation/layout/Arrangement$SpacedAligned; +HSPLandroidx/compose/foundation/layout/Arrangement$SpacedAligned;->(FZLkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/foundation/layout/Arrangement$SpacedAligned;->(FZLkotlin/jvm/functions/Function2;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/Arrangement$SpacedAligned;->arrange(Landroidx/compose/ui/unit/Density;I[ILandroidx/compose/ui/unit/LayoutDirection;[I)V +HSPLandroidx/compose/foundation/layout/Arrangement$SpacedAligned;->arrange(Landroidx/compose/ui/unit/Density;I[I[I)V +HSPLandroidx/compose/foundation/layout/Arrangement$SpacedAligned;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/layout/Arrangement$SpacedAligned;->getSpacing-D9Ej5fM()F +Landroidx/compose/foundation/layout/Arrangement$Start$1; +HSPLandroidx/compose/foundation/layout/Arrangement$Start$1;->()V +HSPLandroidx/compose/foundation/layout/Arrangement$Start$1;->arrange(Landroidx/compose/ui/unit/Density;I[ILandroidx/compose/ui/unit/LayoutDirection;[I)V +Landroidx/compose/foundation/layout/Arrangement$Top$1; +HSPLandroidx/compose/foundation/layout/Arrangement$Top$1;->()V +HSPLandroidx/compose/foundation/layout/Arrangement$Top$1;->arrange(Landroidx/compose/ui/unit/Density;I[I[I)V +Landroidx/compose/foundation/layout/Arrangement$Vertical; +HSPLandroidx/compose/foundation/layout/Arrangement$Vertical;->getSpacing-D9Ej5fM()F +Landroidx/compose/foundation/layout/Arrangement$spacedBy$1; +HSPLandroidx/compose/foundation/layout/Arrangement$spacedBy$1;->()V +HSPLandroidx/compose/foundation/layout/Arrangement$spacedBy$1;->()V +HSPLandroidx/compose/foundation/layout/Arrangement$spacedBy$1;->invoke(ILandroidx/compose/ui/unit/LayoutDirection;)Ljava/lang/Integer; +HSPLandroidx/compose/foundation/layout/Arrangement$spacedBy$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/BoxChildDataElement; +HSPLandroidx/compose/foundation/layout/BoxChildDataElement;->(Landroidx/compose/ui/Alignment;ZLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/layout/BoxChildDataElement;->create()Landroidx/compose/foundation/layout/BoxChildDataNode; +HSPLandroidx/compose/foundation/layout/BoxChildDataElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/layout/BoxChildDataElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/layout/BoxChildDataNode; +HSPLandroidx/compose/foundation/layout/BoxChildDataNode;->(Landroidx/compose/ui/Alignment;Z)V +HSPLandroidx/compose/foundation/layout/BoxChildDataNode;->getAlignment()Landroidx/compose/ui/Alignment; +HSPLandroidx/compose/foundation/layout/BoxChildDataNode;->getMatchParentSize()Z +HSPLandroidx/compose/foundation/layout/BoxChildDataNode;->modifyParentData(Landroidx/compose/ui/unit/Density;Ljava/lang/Object;)Landroidx/compose/foundation/layout/BoxChildDataNode; +HSPLandroidx/compose/foundation/layout/BoxChildDataNode;->modifyParentData(Landroidx/compose/ui/unit/Density;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/BoxKt; +HSPLandroidx/compose/foundation/layout/BoxKt;->()V +HSPLandroidx/compose/foundation/layout/BoxKt;->Box(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/layout/BoxKt;->access$getMatchesParentSize(Landroidx/compose/ui/layout/Measurable;)Z +HSPLandroidx/compose/foundation/layout/BoxKt;->access$placeInBox(Landroidx/compose/ui/layout/Placeable$PlacementScope;Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/layout/Measurable;Landroidx/compose/ui/unit/LayoutDirection;IILandroidx/compose/ui/Alignment;)V +HSPLandroidx/compose/foundation/layout/BoxKt;->boxMeasurePolicy(Landroidx/compose/ui/Alignment;Z)Landroidx/compose/ui/layout/MeasurePolicy; +HSPLandroidx/compose/foundation/layout/BoxKt;->getBoxChildDataNode(Landroidx/compose/ui/layout/Measurable;)Landroidx/compose/foundation/layout/BoxChildDataNode; +HSPLandroidx/compose/foundation/layout/BoxKt;->getMatchesParentSize(Landroidx/compose/ui/layout/Measurable;)Z +HSPLandroidx/compose/foundation/layout/BoxKt;->placeInBox(Landroidx/compose/ui/layout/Placeable$PlacementScope;Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/layout/Measurable;Landroidx/compose/ui/unit/LayoutDirection;IILandroidx/compose/ui/Alignment;)V +HSPLandroidx/compose/foundation/layout/BoxKt;->rememberBoxMeasurePolicy(Landroidx/compose/ui/Alignment;ZLandroidx/compose/runtime/Composer;I)Landroidx/compose/ui/layout/MeasurePolicy; +Landroidx/compose/foundation/layout/BoxKt$EmptyBoxMeasurePolicy$1; +HSPLandroidx/compose/foundation/layout/BoxKt$EmptyBoxMeasurePolicy$1;->()V +HSPLandroidx/compose/foundation/layout/BoxKt$EmptyBoxMeasurePolicy$1;->()V +HSPLandroidx/compose/foundation/layout/BoxKt$EmptyBoxMeasurePolicy$1;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/layout/BoxKt$EmptyBoxMeasurePolicy$1$measure$1; +HSPLandroidx/compose/foundation/layout/BoxKt$EmptyBoxMeasurePolicy$1$measure$1;->()V +HSPLandroidx/compose/foundation/layout/BoxKt$EmptyBoxMeasurePolicy$1$measure$1;->()V +HSPLandroidx/compose/foundation/layout/BoxKt$EmptyBoxMeasurePolicy$1$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/layout/BoxKt$EmptyBoxMeasurePolicy$1$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1; +HSPLandroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1;->(ZLandroidx/compose/ui/Alignment;)V +HSPLandroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$1; +HSPLandroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$1;->()V +HSPLandroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$1;->()V +HSPLandroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$2; +HSPLandroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$2;->(Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/layout/Measurable;Landroidx/compose/ui/layout/MeasureScope;IILandroidx/compose/ui/Alignment;)V +HSPLandroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$2;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$5; +HSPLandroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$5;->([Landroidx/compose/ui/layout/Placeable;Ljava/util/List;Landroidx/compose/ui/layout/MeasureScope;Lkotlin/jvm/internal/Ref$IntRef;Lkotlin/jvm/internal/Ref$IntRef;Landroidx/compose/ui/Alignment;)V +HSPLandroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$5;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$5;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/BoxScope; +Landroidx/compose/foundation/layout/BoxScopeInstance; +HSPLandroidx/compose/foundation/layout/BoxScopeInstance;->()V +HSPLandroidx/compose/foundation/layout/BoxScopeInstance;->()V +HSPLandroidx/compose/foundation/layout/BoxScopeInstance;->align(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Alignment;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/layout/BoxWithConstraintsKt; +HSPLandroidx/compose/foundation/layout/BoxWithConstraintsKt;->BoxWithConstraints(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Alignment;ZLkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +Landroidx/compose/foundation/layout/BoxWithConstraintsKt$BoxWithConstraints$1$1; +HSPLandroidx/compose/foundation/layout/BoxWithConstraintsKt$BoxWithConstraints$1$1;->(Landroidx/compose/ui/layout/MeasurePolicy;Lkotlin/jvm/functions/Function3;I)V +HSPLandroidx/compose/foundation/layout/BoxWithConstraintsKt$BoxWithConstraints$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/layout/BoxWithConstraintsKt$BoxWithConstraints$1$1;->invoke-0kLqBqw(Landroidx/compose/ui/layout/SubcomposeMeasureScope;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/layout/BoxWithConstraintsKt$BoxWithConstraints$1$1$measurables$1; +HSPLandroidx/compose/foundation/layout/BoxWithConstraintsKt$BoxWithConstraints$1$1$measurables$1;->(Lkotlin/jvm/functions/Function3;Landroidx/compose/foundation/layout/BoxWithConstraintsScopeImpl;I)V +HSPLandroidx/compose/foundation/layout/BoxWithConstraintsKt$BoxWithConstraints$1$1$measurables$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/layout/BoxWithConstraintsKt$BoxWithConstraints$1$1$measurables$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/BoxWithConstraintsScope; +Landroidx/compose/foundation/layout/BoxWithConstraintsScopeImpl; +HSPLandroidx/compose/foundation/layout/BoxWithConstraintsScopeImpl;->(Landroidx/compose/ui/unit/Density;J)V +HSPLandroidx/compose/foundation/layout/BoxWithConstraintsScopeImpl;->(Landroidx/compose/ui/unit/Density;JLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/BoxWithConstraintsScopeImpl;->align(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Alignment;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/BoxWithConstraintsScopeImpl;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/layout/BoxWithConstraintsScopeImpl;->getConstraints-msEJaDk()J +HSPLandroidx/compose/foundation/layout/BoxWithConstraintsScopeImpl;->getMaxHeight-D9Ej5fM()F +HSPLandroidx/compose/foundation/layout/BoxWithConstraintsScopeImpl;->getMaxWidth-D9Ej5fM()F +Landroidx/compose/foundation/layout/ColumnKt; +HSPLandroidx/compose/foundation/layout/ColumnKt;->()V +HSPLandroidx/compose/foundation/layout/ColumnKt;->columnMeasurePolicy(Landroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/ui/Alignment$Horizontal;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/layout/MeasurePolicy; +Landroidx/compose/foundation/layout/ColumnKt$DefaultColumnMeasurePolicy$1; +HSPLandroidx/compose/foundation/layout/ColumnKt$DefaultColumnMeasurePolicy$1;->()V +HSPLandroidx/compose/foundation/layout/ColumnKt$DefaultColumnMeasurePolicy$1;->()V +HSPLandroidx/compose/foundation/layout/ColumnKt$DefaultColumnMeasurePolicy$1;->invoke(I[ILandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/unit/Density;[I)V +HSPLandroidx/compose/foundation/layout/ColumnKt$DefaultColumnMeasurePolicy$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/ColumnKt$columnMeasurePolicy$1$1; +HSPLandroidx/compose/foundation/layout/ColumnKt$columnMeasurePolicy$1$1;->(Landroidx/compose/foundation/layout/Arrangement$Vertical;)V +HSPLandroidx/compose/foundation/layout/ColumnKt$columnMeasurePolicy$1$1;->invoke(I[ILandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/unit/Density;[I)V +HSPLandroidx/compose/foundation/layout/ColumnKt$columnMeasurePolicy$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/ColumnScope; +HSPLandroidx/compose/foundation/layout/ColumnScope;->weight$default(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/ui/Modifier;FZILjava/lang/Object;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/layout/ColumnScopeInstance; +HSPLandroidx/compose/foundation/layout/ColumnScopeInstance;->()V +HSPLandroidx/compose/foundation/layout/ColumnScopeInstance;->()V +HSPLandroidx/compose/foundation/layout/ColumnScopeInstance;->weight(Landroidx/compose/ui/Modifier;FZ)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/layout/ConsumedInsetsModifier; +HSPLandroidx/compose/foundation/layout/ConsumedInsetsModifier;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/layout/ConsumedInsetsModifier;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/layout/ConsumedInsetsModifier;->onModifierLocalsUpdated(Landroidx/compose/ui/modifier/ModifierLocalReadScope;)V +Landroidx/compose/foundation/layout/CrossAxisAlignment; +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment;->()V +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment;->()V +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/foundation/layout/CrossAxisAlignment$CenterCrossAxisAlignment; +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$CenterCrossAxisAlignment;->()V +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$CenterCrossAxisAlignment;->()V +Landroidx/compose/foundation/layout/CrossAxisAlignment$Companion; +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$Companion;->()V +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$Companion;->horizontal$foundation_layout_release(Landroidx/compose/ui/Alignment$Horizontal;)Landroidx/compose/foundation/layout/CrossAxisAlignment; +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$Companion;->vertical$foundation_layout_release(Landroidx/compose/ui/Alignment$Vertical;)Landroidx/compose/foundation/layout/CrossAxisAlignment; +Landroidx/compose/foundation/layout/CrossAxisAlignment$EndCrossAxisAlignment; +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$EndCrossAxisAlignment;->()V +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$EndCrossAxisAlignment;->()V +Landroidx/compose/foundation/layout/CrossAxisAlignment$HorizontalCrossAxisAlignment; +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$HorizontalCrossAxisAlignment;->(Landroidx/compose/ui/Alignment$Horizontal;)V +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$HorizontalCrossAxisAlignment;->align$foundation_layout_release(ILandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/layout/Placeable;I)I +Landroidx/compose/foundation/layout/CrossAxisAlignment$StartCrossAxisAlignment; +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$StartCrossAxisAlignment;->()V +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$StartCrossAxisAlignment;->()V +Landroidx/compose/foundation/layout/CrossAxisAlignment$VerticalCrossAxisAlignment; +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$VerticalCrossAxisAlignment;->(Landroidx/compose/ui/Alignment$Vertical;)V +HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$VerticalCrossAxisAlignment;->align$foundation_layout_release(ILandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/layout/Placeable;I)I +Landroidx/compose/foundation/layout/Direction; +HSPLandroidx/compose/foundation/layout/Direction;->$values()[Landroidx/compose/foundation/layout/Direction; +HSPLandroidx/compose/foundation/layout/Direction;->()V +HSPLandroidx/compose/foundation/layout/Direction;->(Ljava/lang/String;I)V +Landroidx/compose/foundation/layout/ExcludeInsets; +HSPLandroidx/compose/foundation/layout/ExcludeInsets;->(Landroidx/compose/foundation/layout/WindowInsets;Landroidx/compose/foundation/layout/WindowInsets;)V +HSPLandroidx/compose/foundation/layout/ExcludeInsets;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/layout/ExcludeInsets;->getBottom(Landroidx/compose/ui/unit/Density;)I +HSPLandroidx/compose/foundation/layout/ExcludeInsets;->getLeft(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/foundation/layout/ExcludeInsets;->getRight(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/foundation/layout/ExcludeInsets;->getTop(Landroidx/compose/ui/unit/Density;)I +Landroidx/compose/foundation/layout/FillElement; +HSPLandroidx/compose/foundation/layout/FillElement;->()V +HSPLandroidx/compose/foundation/layout/FillElement;->(Landroidx/compose/foundation/layout/Direction;FLjava/lang/String;)V +HSPLandroidx/compose/foundation/layout/FillElement;->create()Landroidx/compose/foundation/layout/FillNode; +HSPLandroidx/compose/foundation/layout/FillElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/layout/FillElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/layout/FillElement;->update(Landroidx/compose/foundation/layout/FillNode;)V +HSPLandroidx/compose/foundation/layout/FillElement;->update(Landroidx/compose/ui/Modifier$Node;)V +Landroidx/compose/foundation/layout/FillElement$Companion; +HSPLandroidx/compose/foundation/layout/FillElement$Companion;->()V +HSPLandroidx/compose/foundation/layout/FillElement$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/FillElement$Companion;->height(F)Landroidx/compose/foundation/layout/FillElement; +HSPLandroidx/compose/foundation/layout/FillElement$Companion;->size(F)Landroidx/compose/foundation/layout/FillElement; +HSPLandroidx/compose/foundation/layout/FillElement$Companion;->width(F)Landroidx/compose/foundation/layout/FillElement; +Landroidx/compose/foundation/layout/FillNode; +HSPLandroidx/compose/foundation/layout/FillNode;->(Landroidx/compose/foundation/layout/Direction;F)V +HSPLandroidx/compose/foundation/layout/FillNode;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/foundation/layout/FillNode;->setDirection(Landroidx/compose/foundation/layout/Direction;)V +HSPLandroidx/compose/foundation/layout/FillNode;->setFraction(F)V +Landroidx/compose/foundation/layout/FillNode$measure$1; +HSPLandroidx/compose/foundation/layout/FillNode$measure$1;->(Landroidx/compose/ui/layout/Placeable;)V +HSPLandroidx/compose/foundation/layout/FillNode$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/layout/FillNode$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/FixedDpInsets; +HSPLandroidx/compose/foundation/layout/FixedDpInsets;->(FFFF)V +HSPLandroidx/compose/foundation/layout/FixedDpInsets;->(FFFFLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/FixedDpInsets;->getBottom(Landroidx/compose/ui/unit/Density;)I +HSPLandroidx/compose/foundation/layout/FixedDpInsets;->getLeft(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/foundation/layout/FixedDpInsets;->getRight(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/foundation/layout/FixedDpInsets;->getTop(Landroidx/compose/ui/unit/Density;)I +Landroidx/compose/foundation/layout/FixedIntInsets; +HSPLandroidx/compose/foundation/layout/FixedIntInsets;->(IIII)V +HSPLandroidx/compose/foundation/layout/FixedIntInsets;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/layout/FixedIntInsets;->getBottom(Landroidx/compose/ui/unit/Density;)I +HSPLandroidx/compose/foundation/layout/FixedIntInsets;->getLeft(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/foundation/layout/FixedIntInsets;->getRight(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/foundation/layout/FixedIntInsets;->getTop(Landroidx/compose/ui/unit/Density;)I +Landroidx/compose/foundation/layout/FlowLayoutKt; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt;->()V +HSPLandroidx/compose/foundation/layout/FlowLayoutKt;->access$flowMeasurePolicy-bs7tm-s(Landroidx/compose/foundation/layout/LayoutOrientation;Lkotlin/jvm/functions/Function5;FLandroidx/compose/foundation/layout/SizeMode;Landroidx/compose/foundation/layout/CrossAxisAlignment;Lkotlin/jvm/functions/Function5;FI)Landroidx/compose/ui/layout/MeasurePolicy; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt;->access$getCROSS_AXIS_ALIGNMENT_TOP$p()Landroidx/compose/foundation/layout/CrossAxisAlignment; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt;->access$getHorizontalArrangement(Landroidx/compose/foundation/layout/Arrangement$Horizontal;)Lkotlin/jvm/functions/Function5; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt;->access$getVerticalArrangement(Landroidx/compose/foundation/layout/Arrangement$Vertical;)Lkotlin/jvm/functions/Function5; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt;->breakDownItems-w1Onq5I(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/foundation/layout/RowColumnMeasurementHelper;Landroidx/compose/foundation/layout/LayoutOrientation;JI)Landroidx/compose/foundation/layout/FlowResult; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt;->flowMeasurePolicy-bs7tm-s(Landroidx/compose/foundation/layout/LayoutOrientation;Lkotlin/jvm/functions/Function5;FLandroidx/compose/foundation/layout/SizeMode;Landroidx/compose/foundation/layout/CrossAxisAlignment;Lkotlin/jvm/functions/Function5;FI)Landroidx/compose/ui/layout/MeasurePolicy; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt;->getHorizontalArrangement(Landroidx/compose/foundation/layout/Arrangement$Horizontal;)Lkotlin/jvm/functions/Function5; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt;->getVerticalArrangement(Landroidx/compose/foundation/layout/Arrangement$Vertical;)Lkotlin/jvm/functions/Function5; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt;->mainAxisSize(Landroidx/compose/ui/layout/Placeable;Landroidx/compose/foundation/layout/LayoutOrientation;)I +HSPLandroidx/compose/foundation/layout/FlowLayoutKt;->measureAndCache-6m2dt9o(Landroidx/compose/ui/layout/Measurable;JLandroidx/compose/foundation/layout/LayoutOrientation;Lkotlin/jvm/functions/Function1;)I +HSPLandroidx/compose/foundation/layout/FlowLayoutKt;->rowMeasurementHelper(Landroidx/compose/foundation/layout/Arrangement$Horizontal;Landroidx/compose/foundation/layout/Arrangement$Vertical;ILandroidx/compose/runtime/Composer;I)Landroidx/compose/ui/layout/MeasurePolicy; +Landroidx/compose/foundation/layout/FlowLayoutKt$breakDownItems$1; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$breakDownItems$1;->([Landroidx/compose/ui/layout/Placeable;I)V +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$breakDownItems$1;->invoke(Landroidx/compose/ui/layout/Placeable;)V +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$breakDownItems$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/FlowLayoutKt$breakDownItems$nextSize$1; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$breakDownItems$nextSize$1;->([Landroidx/compose/ui/layout/Placeable;)V +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$breakDownItems$nextSize$1;->invoke(Landroidx/compose/ui/layout/Placeable;)V +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$breakDownItems$nextSize$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1;->(Landroidx/compose/foundation/layout/LayoutOrientation;Lkotlin/jvm/functions/Function5;FLandroidx/compose/foundation/layout/SizeMode;Landroidx/compose/foundation/layout/CrossAxisAlignment;IFLkotlin/jvm/functions/Function5;)V +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1$maxCrossAxisIntrinsicItemSize$1; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1$maxCrossAxisIntrinsicItemSize$1;->()V +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1$maxCrossAxisIntrinsicItemSize$1;->()V +Landroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1$maxMainAxisIntrinsicItemSize$1; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1$maxMainAxisIntrinsicItemSize$1;->()V +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1$maxMainAxisIntrinsicItemSize$1;->()V +Landroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1$measure$2; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1$measure$2;->(Landroidx/compose/foundation/layout/FlowResult;Landroidx/compose/foundation/layout/RowColumnMeasurementHelper;[ILandroidx/compose/ui/layout/MeasureScope;)V +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1$measure$2;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1$measure$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1$minCrossAxisIntrinsicItemSize$1; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1$minCrossAxisIntrinsicItemSize$1;->()V +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1$minCrossAxisIntrinsicItemSize$1;->()V +Landroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1$minMainAxisIntrinsicItemSize$1; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1$minMainAxisIntrinsicItemSize$1;->()V +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$flowMeasurePolicy$1$minMainAxisIntrinsicItemSize$1;->()V +Landroidx/compose/foundation/layout/FlowLayoutKt$getHorizontalArrangement$1; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$getHorizontalArrangement$1;->(Landroidx/compose/foundation/layout/Arrangement$Horizontal;)V +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$getHorizontalArrangement$1;->invoke(I[ILandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/unit/Density;[I)V +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$getHorizontalArrangement$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/FlowLayoutKt$getVerticalArrangement$1; +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$getVerticalArrangement$1;->(Landroidx/compose/foundation/layout/Arrangement$Vertical;)V +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$getVerticalArrangement$1;->invoke(I[ILandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/unit/Density;[I)V +HSPLandroidx/compose/foundation/layout/FlowLayoutKt$getVerticalArrangement$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/FlowResult; +HSPLandroidx/compose/foundation/layout/FlowResult;->(IILandroidx/compose/runtime/collection/MutableVector;)V +HSPLandroidx/compose/foundation/layout/FlowResult;->getCrossAxisTotalSize()I +HSPLandroidx/compose/foundation/layout/FlowResult;->getItems()Landroidx/compose/runtime/collection/MutableVector; +HSPLandroidx/compose/foundation/layout/FlowResult;->getMainAxisTotalSize()I +Landroidx/compose/foundation/layout/FlowRowScope; +Landroidx/compose/foundation/layout/FlowRowScopeInstance; +HSPLandroidx/compose/foundation/layout/FlowRowScopeInstance;->()V +HSPLandroidx/compose/foundation/layout/FlowRowScopeInstance;->()V +Landroidx/compose/foundation/layout/InsetsConsumingModifier; +HSPLandroidx/compose/foundation/layout/InsetsConsumingModifier;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/layout/InsetsConsumingModifier;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/InsetsConsumingModifier;->getConsumedInsets()Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/InsetsConsumingModifier;->getKey()Landroidx/compose/ui/modifier/ProvidableModifierLocal; +HSPLandroidx/compose/foundation/layout/InsetsConsumingModifier;->getValue()Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/InsetsConsumingModifier;->getValue()Ljava/lang/Object; +HSPLandroidx/compose/foundation/layout/InsetsConsumingModifier;->onModifierLocalsUpdated(Landroidx/compose/ui/modifier/ModifierLocalReadScope;)V +HSPLandroidx/compose/foundation/layout/InsetsConsumingModifier;->setConsumedInsets(Landroidx/compose/foundation/layout/WindowInsets;)V +Landroidx/compose/foundation/layout/InsetsListener; +HSPLandroidx/compose/foundation/layout/InsetsListener;->(Landroidx/compose/foundation/layout/WindowInsetsHolder;)V +HSPLandroidx/compose/foundation/layout/InsetsListener;->onApplyWindowInsets(Landroid/view/View;Landroidx/core/view/WindowInsetsCompat;)Landroidx/core/view/WindowInsetsCompat; +HSPLandroidx/compose/foundation/layout/InsetsListener;->onEnd(Landroidx/core/view/WindowInsetsAnimationCompat;)V +HSPLandroidx/compose/foundation/layout/InsetsListener;->onPrepare(Landroidx/core/view/WindowInsetsAnimationCompat;)V +HSPLandroidx/compose/foundation/layout/InsetsListener;->onProgress(Landroidx/core/view/WindowInsetsCompat;Ljava/util/List;)Landroidx/core/view/WindowInsetsCompat; +HSPLandroidx/compose/foundation/layout/InsetsListener;->onStart(Landroidx/core/view/WindowInsetsAnimationCompat;Landroidx/core/view/WindowInsetsAnimationCompat$BoundsCompat;)Landroidx/core/view/WindowInsetsAnimationCompat$BoundsCompat; +HSPLandroidx/compose/foundation/layout/InsetsListener;->onViewAttachedToWindow(Landroid/view/View;)V +Landroidx/compose/foundation/layout/InsetsPaddingModifier; +HSPLandroidx/compose/foundation/layout/InsetsPaddingModifier;->(Landroidx/compose/foundation/layout/WindowInsets;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/layout/InsetsPaddingModifier;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/layout/InsetsPaddingModifier;->getConsumedInsets()Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/InsetsPaddingModifier;->getKey()Landroidx/compose/ui/modifier/ProvidableModifierLocal; +HSPLandroidx/compose/foundation/layout/InsetsPaddingModifier;->getUnconsumedInsets()Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/InsetsPaddingModifier;->getValue()Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/InsetsPaddingModifier;->getValue()Ljava/lang/Object; +HSPLandroidx/compose/foundation/layout/InsetsPaddingModifier;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/foundation/layout/InsetsPaddingModifier;->onModifierLocalsUpdated(Landroidx/compose/ui/modifier/ModifierLocalReadScope;)V +HSPLandroidx/compose/foundation/layout/InsetsPaddingModifier;->setConsumedInsets(Landroidx/compose/foundation/layout/WindowInsets;)V +HSPLandroidx/compose/foundation/layout/InsetsPaddingModifier;->setUnconsumedInsets(Landroidx/compose/foundation/layout/WindowInsets;)V +Landroidx/compose/foundation/layout/InsetsPaddingModifier$measure$1; +HSPLandroidx/compose/foundation/layout/InsetsPaddingModifier$measure$1;->(Landroidx/compose/ui/layout/Placeable;II)V +HSPLandroidx/compose/foundation/layout/InsetsPaddingModifier$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/layout/InsetsPaddingModifier$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/InsetsPaddingValues; +HSPLandroidx/compose/foundation/layout/InsetsPaddingValues;->(Landroidx/compose/foundation/layout/WindowInsets;Landroidx/compose/ui/unit/Density;)V +HSPLandroidx/compose/foundation/layout/InsetsPaddingValues;->calculateBottomPadding-D9Ej5fM()F +HSPLandroidx/compose/foundation/layout/InsetsPaddingValues;->calculateLeftPadding-u2uoSUM(Landroidx/compose/ui/unit/LayoutDirection;)F +HSPLandroidx/compose/foundation/layout/InsetsPaddingValues;->calculateRightPadding-u2uoSUM(Landroidx/compose/ui/unit/LayoutDirection;)F +HSPLandroidx/compose/foundation/layout/InsetsPaddingValues;->calculateTopPadding-D9Ej5fM()F +HSPLandroidx/compose/foundation/layout/InsetsPaddingValues;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/layout/InsetsValues; +HSPLandroidx/compose/foundation/layout/InsetsValues;->(IIII)V +HSPLandroidx/compose/foundation/layout/InsetsValues;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/layout/LayoutOrientation; +HSPLandroidx/compose/foundation/layout/LayoutOrientation;->$values()[Landroidx/compose/foundation/layout/LayoutOrientation; +HSPLandroidx/compose/foundation/layout/LayoutOrientation;->()V +HSPLandroidx/compose/foundation/layout/LayoutOrientation;->(Ljava/lang/String;I)V +Landroidx/compose/foundation/layout/LayoutWeightElement; +HSPLandroidx/compose/foundation/layout/LayoutWeightElement;->(FZ)V +HSPLandroidx/compose/foundation/layout/LayoutWeightElement;->create()Landroidx/compose/foundation/layout/LayoutWeightNode; +HSPLandroidx/compose/foundation/layout/LayoutWeightElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/layout/LayoutWeightElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/layout/LayoutWeightNode; +HSPLandroidx/compose/foundation/layout/LayoutWeightNode;->(FZ)V +HSPLandroidx/compose/foundation/layout/LayoutWeightNode;->modifyParentData(Landroidx/compose/ui/unit/Density;Ljava/lang/Object;)Landroidx/compose/foundation/layout/RowColumnParentData; +HSPLandroidx/compose/foundation/layout/LayoutWeightNode;->modifyParentData(Landroidx/compose/ui/unit/Density;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/LimitInsets; +HSPLandroidx/compose/foundation/layout/LimitInsets;->(Landroidx/compose/foundation/layout/WindowInsets;I)V +HSPLandroidx/compose/foundation/layout/LimitInsets;->(Landroidx/compose/foundation/layout/WindowInsets;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/LimitInsets;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/layout/LimitInsets;->getBottom(Landroidx/compose/ui/unit/Density;)I +HSPLandroidx/compose/foundation/layout/LimitInsets;->getLeft(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/foundation/layout/LimitInsets;->getRight(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/foundation/layout/LimitInsets;->getTop(Landroidx/compose/ui/unit/Density;)I +Landroidx/compose/foundation/layout/MutableWindowInsets; +HSPLandroidx/compose/foundation/layout/MutableWindowInsets;->()V +HSPLandroidx/compose/foundation/layout/MutableWindowInsets;->(Landroidx/compose/foundation/layout/WindowInsets;)V +HSPLandroidx/compose/foundation/layout/MutableWindowInsets;->(Landroidx/compose/foundation/layout/WindowInsets;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/MutableWindowInsets;->getBottom(Landroidx/compose/ui/unit/Density;)I +HSPLandroidx/compose/foundation/layout/MutableWindowInsets;->getInsets()Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/MutableWindowInsets;->getLeft(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/foundation/layout/MutableWindowInsets;->getRight(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/foundation/layout/MutableWindowInsets;->setInsets(Landroidx/compose/foundation/layout/WindowInsets;)V +Landroidx/compose/foundation/layout/OrientationIndependentConstraints; +HSPLandroidx/compose/foundation/layout/OrientationIndependentConstraints;->constructor-impl(IIII)J +HSPLandroidx/compose/foundation/layout/OrientationIndependentConstraints;->constructor-impl(J)J +HSPLandroidx/compose/foundation/layout/OrientationIndependentConstraints;->constructor-impl(JLandroidx/compose/foundation/layout/LayoutOrientation;)J +HSPLandroidx/compose/foundation/layout/OrientationIndependentConstraints;->copy-yUG9Ft0$default(JIIIIILjava/lang/Object;)J +HSPLandroidx/compose/foundation/layout/OrientationIndependentConstraints;->copy-yUG9Ft0(JIIII)J +HSPLandroidx/compose/foundation/layout/OrientationIndependentConstraints;->toBoxConstraints-OenEA2s(JLandroidx/compose/foundation/layout/LayoutOrientation;)J +Landroidx/compose/foundation/layout/PaddingElement; +HSPLandroidx/compose/foundation/layout/PaddingElement;->(FFFFZLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/layout/PaddingElement;->(FFFFZLkotlin/jvm/functions/Function1;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/PaddingElement;->create()Landroidx/compose/foundation/layout/PaddingNode; +HSPLandroidx/compose/foundation/layout/PaddingElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/layout/PaddingElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/layout/PaddingElement;->update(Landroidx/compose/foundation/layout/PaddingNode;)V +HSPLandroidx/compose/foundation/layout/PaddingElement;->update(Landroidx/compose/ui/Modifier$Node;)V +Landroidx/compose/foundation/layout/PaddingKt; +HSPLandroidx/compose/foundation/layout/PaddingKt;->PaddingValues-0680j_4(F)Landroidx/compose/foundation/layout/PaddingValues; +HSPLandroidx/compose/foundation/layout/PaddingKt;->PaddingValues-YgX7TsA$default(FFILjava/lang/Object;)Landroidx/compose/foundation/layout/PaddingValues; +HSPLandroidx/compose/foundation/layout/PaddingKt;->PaddingValues-YgX7TsA(FF)Landroidx/compose/foundation/layout/PaddingValues; +HSPLandroidx/compose/foundation/layout/PaddingKt;->PaddingValues-a9UjIt4$default(FFFFILjava/lang/Object;)Landroidx/compose/foundation/layout/PaddingValues; +HSPLandroidx/compose/foundation/layout/PaddingKt;->PaddingValues-a9UjIt4(FFFF)Landroidx/compose/foundation/layout/PaddingValues; +HSPLandroidx/compose/foundation/layout/PaddingKt;->calculateEndPadding(Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/ui/unit/LayoutDirection;)F +HSPLandroidx/compose/foundation/layout/PaddingKt;->calculateStartPadding(Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/ui/unit/LayoutDirection;)F +HSPLandroidx/compose/foundation/layout/PaddingKt;->padding(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/layout/PaddingValues;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/PaddingKt;->padding-3ABfNKs(Landroidx/compose/ui/Modifier;F)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/PaddingKt;->padding-VpY3zN4$default(Landroidx/compose/ui/Modifier;FFILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/PaddingKt;->padding-VpY3zN4(Landroidx/compose/ui/Modifier;FF)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/PaddingKt;->padding-qDBjuR0$default(Landroidx/compose/ui/Modifier;FFFFILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/PaddingKt;->padding-qDBjuR0(Landroidx/compose/ui/Modifier;FFFF)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/layout/PaddingKt$padding$1; +HSPLandroidx/compose/foundation/layout/PaddingKt$padding$1;->(FFFF)V +Landroidx/compose/foundation/layout/PaddingKt$padding$2; +HSPLandroidx/compose/foundation/layout/PaddingKt$padding$2;->(FF)V +Landroidx/compose/foundation/layout/PaddingKt$padding$3; +HSPLandroidx/compose/foundation/layout/PaddingKt$padding$3;->(F)V +Landroidx/compose/foundation/layout/PaddingKt$padding$4; +HSPLandroidx/compose/foundation/layout/PaddingKt$padding$4;->(Landroidx/compose/foundation/layout/PaddingValues;)V +Landroidx/compose/foundation/layout/PaddingNode; +HSPLandroidx/compose/foundation/layout/PaddingNode;->(FFFFZ)V +HSPLandroidx/compose/foundation/layout/PaddingNode;->(FFFFZLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/PaddingNode;->getRtlAware()Z +HSPLandroidx/compose/foundation/layout/PaddingNode;->getStart-D9Ej5fM()F +HSPLandroidx/compose/foundation/layout/PaddingNode;->getTop-D9Ej5fM()F +HSPLandroidx/compose/foundation/layout/PaddingNode;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/foundation/layout/PaddingNode;->setBottom-0680j_4(F)V +HSPLandroidx/compose/foundation/layout/PaddingNode;->setEnd-0680j_4(F)V +HSPLandroidx/compose/foundation/layout/PaddingNode;->setRtlAware(Z)V +HSPLandroidx/compose/foundation/layout/PaddingNode;->setStart-0680j_4(F)V +HSPLandroidx/compose/foundation/layout/PaddingNode;->setTop-0680j_4(F)V +Landroidx/compose/foundation/layout/PaddingNode$measure$1; +HSPLandroidx/compose/foundation/layout/PaddingNode$measure$1;->(Landroidx/compose/foundation/layout/PaddingNode;Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/layout/MeasureScope;)V +HSPLandroidx/compose/foundation/layout/PaddingNode$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/layout/PaddingNode$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/PaddingValues; +Landroidx/compose/foundation/layout/PaddingValuesElement; +HSPLandroidx/compose/foundation/layout/PaddingValuesElement;->(Landroidx/compose/foundation/layout/PaddingValues;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/layout/PaddingValuesElement;->create()Landroidx/compose/foundation/layout/PaddingValuesModifier; +HSPLandroidx/compose/foundation/layout/PaddingValuesElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/layout/PaddingValuesElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/layout/PaddingValuesElement;->update(Landroidx/compose/foundation/layout/PaddingValuesModifier;)V +HSPLandroidx/compose/foundation/layout/PaddingValuesElement;->update(Landroidx/compose/ui/Modifier$Node;)V +Landroidx/compose/foundation/layout/PaddingValuesImpl; +HSPLandroidx/compose/foundation/layout/PaddingValuesImpl;->(FFFF)V +HSPLandroidx/compose/foundation/layout/PaddingValuesImpl;->(FFFFLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/PaddingValuesImpl;->calculateBottomPadding-D9Ej5fM()F +HSPLandroidx/compose/foundation/layout/PaddingValuesImpl;->calculateLeftPadding-u2uoSUM(Landroidx/compose/ui/unit/LayoutDirection;)F +HSPLandroidx/compose/foundation/layout/PaddingValuesImpl;->calculateRightPadding-u2uoSUM(Landroidx/compose/ui/unit/LayoutDirection;)F +HSPLandroidx/compose/foundation/layout/PaddingValuesImpl;->calculateTopPadding-D9Ej5fM()F +HSPLandroidx/compose/foundation/layout/PaddingValuesImpl;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/layout/PaddingValuesModifier; +HSPLandroidx/compose/foundation/layout/PaddingValuesModifier;->(Landroidx/compose/foundation/layout/PaddingValues;)V +HSPLandroidx/compose/foundation/layout/PaddingValuesModifier;->getPaddingValues()Landroidx/compose/foundation/layout/PaddingValues; +HSPLandroidx/compose/foundation/layout/PaddingValuesModifier;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/foundation/layout/PaddingValuesModifier;->setPaddingValues(Landroidx/compose/foundation/layout/PaddingValues;)V +Landroidx/compose/foundation/layout/PaddingValuesModifier$measure$2; +HSPLandroidx/compose/foundation/layout/PaddingValuesModifier$measure$2;->(Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/foundation/layout/PaddingValuesModifier;)V +HSPLandroidx/compose/foundation/layout/PaddingValuesModifier$measure$2;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/layout/PaddingValuesModifier$measure$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/RowColumnImplKt; +HSPLandroidx/compose/foundation/layout/RowColumnImplKt;->getCrossAxisAlignment(Landroidx/compose/foundation/layout/RowColumnParentData;)Landroidx/compose/foundation/layout/CrossAxisAlignment; +HSPLandroidx/compose/foundation/layout/RowColumnImplKt;->getFill(Landroidx/compose/foundation/layout/RowColumnParentData;)Z +HSPLandroidx/compose/foundation/layout/RowColumnImplKt;->getRowColumnParentData(Landroidx/compose/ui/layout/IntrinsicMeasurable;)Landroidx/compose/foundation/layout/RowColumnParentData; +HSPLandroidx/compose/foundation/layout/RowColumnImplKt;->getWeight(Landroidx/compose/foundation/layout/RowColumnParentData;)F +HSPLandroidx/compose/foundation/layout/RowColumnImplKt;->isRelative(Landroidx/compose/foundation/layout/RowColumnParentData;)Z +HSPLandroidx/compose/foundation/layout/RowColumnImplKt;->rowColumnMeasurePolicy-TDGSqEk(Landroidx/compose/foundation/layout/LayoutOrientation;Lkotlin/jvm/functions/Function5;FLandroidx/compose/foundation/layout/SizeMode;Landroidx/compose/foundation/layout/CrossAxisAlignment;)Landroidx/compose/ui/layout/MeasurePolicy; +Landroidx/compose/foundation/layout/RowColumnImplKt$rowColumnMeasurePolicy$1; +HSPLandroidx/compose/foundation/layout/RowColumnImplKt$rowColumnMeasurePolicy$1;->(Landroidx/compose/foundation/layout/LayoutOrientation;Lkotlin/jvm/functions/Function5;FLandroidx/compose/foundation/layout/SizeMode;Landroidx/compose/foundation/layout/CrossAxisAlignment;)V +HSPLandroidx/compose/foundation/layout/RowColumnImplKt$rowColumnMeasurePolicy$1;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/layout/RowColumnImplKt$rowColumnMeasurePolicy$1$measure$1; +HSPLandroidx/compose/foundation/layout/RowColumnImplKt$rowColumnMeasurePolicy$1$measure$1;->(Landroidx/compose/foundation/layout/RowColumnMeasurementHelper;Landroidx/compose/foundation/layout/RowColumnMeasureHelperResult;Landroidx/compose/ui/layout/MeasureScope;)V +HSPLandroidx/compose/foundation/layout/RowColumnImplKt$rowColumnMeasurePolicy$1$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/layout/RowColumnImplKt$rowColumnMeasurePolicy$1$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/RowColumnMeasureHelperResult; +HSPLandroidx/compose/foundation/layout/RowColumnMeasureHelperResult;->(IIIII[I)V +HSPLandroidx/compose/foundation/layout/RowColumnMeasureHelperResult;->getBeforeCrossAxisAlignmentLine()I +HSPLandroidx/compose/foundation/layout/RowColumnMeasureHelperResult;->getCrossAxisSize()I +HSPLandroidx/compose/foundation/layout/RowColumnMeasureHelperResult;->getEndIndex()I +HSPLandroidx/compose/foundation/layout/RowColumnMeasureHelperResult;->getMainAxisPositions()[I +HSPLandroidx/compose/foundation/layout/RowColumnMeasureHelperResult;->getMainAxisSize()I +HSPLandroidx/compose/foundation/layout/RowColumnMeasureHelperResult;->getStartIndex()I +Landroidx/compose/foundation/layout/RowColumnMeasurementHelper; +HSPLandroidx/compose/foundation/layout/RowColumnMeasurementHelper;->(Landroidx/compose/foundation/layout/LayoutOrientation;Lkotlin/jvm/functions/Function5;FLandroidx/compose/foundation/layout/SizeMode;Landroidx/compose/foundation/layout/CrossAxisAlignment;Ljava/util/List;[Landroidx/compose/ui/layout/Placeable;)V +HSPLandroidx/compose/foundation/layout/RowColumnMeasurementHelper;->(Landroidx/compose/foundation/layout/LayoutOrientation;Lkotlin/jvm/functions/Function5;FLandroidx/compose/foundation/layout/SizeMode;Landroidx/compose/foundation/layout/CrossAxisAlignment;Ljava/util/List;[Landroidx/compose/ui/layout/Placeable;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/RowColumnMeasurementHelper;->crossAxisSize(Landroidx/compose/ui/layout/Placeable;)I +HSPLandroidx/compose/foundation/layout/RowColumnMeasurementHelper;->getArrangementSpacing-D9Ej5fM()F +HSPLandroidx/compose/foundation/layout/RowColumnMeasurementHelper;->getCrossAxisPosition(Landroidx/compose/ui/layout/Placeable;Landroidx/compose/foundation/layout/RowColumnParentData;ILandroidx/compose/ui/unit/LayoutDirection;I)I +HSPLandroidx/compose/foundation/layout/RowColumnMeasurementHelper;->getMeasurables()Ljava/util/List; +HSPLandroidx/compose/foundation/layout/RowColumnMeasurementHelper;->getPlaceables()[Landroidx/compose/ui/layout/Placeable; +HSPLandroidx/compose/foundation/layout/RowColumnMeasurementHelper;->mainAxisPositions(I[I[ILandroidx/compose/ui/layout/MeasureScope;)[I +HSPLandroidx/compose/foundation/layout/RowColumnMeasurementHelper;->mainAxisSize(Landroidx/compose/ui/layout/Placeable;)I +HSPLandroidx/compose/foundation/layout/RowColumnMeasurementHelper;->measureWithoutPlacing-_EkL_-Y(Landroidx/compose/ui/layout/MeasureScope;JII)Landroidx/compose/foundation/layout/RowColumnMeasureHelperResult; +HSPLandroidx/compose/foundation/layout/RowColumnMeasurementHelper;->placeHelper(Landroidx/compose/ui/layout/Placeable$PlacementScope;Landroidx/compose/foundation/layout/RowColumnMeasureHelperResult;ILandroidx/compose/ui/unit/LayoutDirection;)V +Landroidx/compose/foundation/layout/RowColumnParentData; +HSPLandroidx/compose/foundation/layout/RowColumnParentData;->(FZLandroidx/compose/foundation/layout/CrossAxisAlignment;)V +HSPLandroidx/compose/foundation/layout/RowColumnParentData;->(FZLandroidx/compose/foundation/layout/CrossAxisAlignment;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/RowColumnParentData;->getCrossAxisAlignment()Landroidx/compose/foundation/layout/CrossAxisAlignment; +HSPLandroidx/compose/foundation/layout/RowColumnParentData;->getFill()Z +HSPLandroidx/compose/foundation/layout/RowColumnParentData;->getWeight()F +HSPLandroidx/compose/foundation/layout/RowColumnParentData;->setFill(Z)V +HSPLandroidx/compose/foundation/layout/RowColumnParentData;->setWeight(F)V +Landroidx/compose/foundation/layout/RowKt; +HSPLandroidx/compose/foundation/layout/RowKt;->()V +HSPLandroidx/compose/foundation/layout/RowKt;->rowMeasurePolicy(Landroidx/compose/foundation/layout/Arrangement$Horizontal;Landroidx/compose/ui/Alignment$Vertical;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/layout/MeasurePolicy; +Landroidx/compose/foundation/layout/RowKt$DefaultRowMeasurePolicy$1; +HSPLandroidx/compose/foundation/layout/RowKt$DefaultRowMeasurePolicy$1;->()V +HSPLandroidx/compose/foundation/layout/RowKt$DefaultRowMeasurePolicy$1;->()V +HSPLandroidx/compose/foundation/layout/RowKt$DefaultRowMeasurePolicy$1;->invoke(I[ILandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/unit/Density;[I)V +HSPLandroidx/compose/foundation/layout/RowKt$DefaultRowMeasurePolicy$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/RowKt$rowMeasurePolicy$1$1; +HSPLandroidx/compose/foundation/layout/RowKt$rowMeasurePolicy$1$1;->(Landroidx/compose/foundation/layout/Arrangement$Horizontal;)V +HSPLandroidx/compose/foundation/layout/RowKt$rowMeasurePolicy$1$1;->invoke(I[ILandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/unit/Density;[I)V +HSPLandroidx/compose/foundation/layout/RowKt$rowMeasurePolicy$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/RowScope; +HSPLandroidx/compose/foundation/layout/RowScope;->weight$default(Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/ui/Modifier;FZILjava/lang/Object;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/layout/RowScopeInstance; +HSPLandroidx/compose/foundation/layout/RowScopeInstance;->()V +HSPLandroidx/compose/foundation/layout/RowScopeInstance;->()V +HSPLandroidx/compose/foundation/layout/RowScopeInstance;->weight(Landroidx/compose/ui/Modifier;FZ)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/layout/SizeElement; +HSPLandroidx/compose/foundation/layout/SizeElement;->(FFFFZLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/layout/SizeElement;->(FFFFZLkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/SizeElement;->(FFFFZLkotlin/jvm/functions/Function1;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/SizeElement;->create()Landroidx/compose/foundation/layout/SizeNode; +HSPLandroidx/compose/foundation/layout/SizeElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/layout/SizeElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/layout/SizeElement;->update(Landroidx/compose/foundation/layout/SizeNode;)V +HSPLandroidx/compose/foundation/layout/SizeElement;->update(Landroidx/compose/ui/Modifier$Node;)V +Landroidx/compose/foundation/layout/SizeKt; +HSPLandroidx/compose/foundation/layout/SizeKt;->()V +HSPLandroidx/compose/foundation/layout/SizeKt;->defaultMinSize-VpY3zN4$default(Landroidx/compose/ui/Modifier;FFILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->defaultMinSize-VpY3zN4(Landroidx/compose/ui/Modifier;FF)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->fillMaxHeight$default(Landroidx/compose/ui/Modifier;FILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->fillMaxHeight(Landroidx/compose/ui/Modifier;F)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->fillMaxSize$default(Landroidx/compose/ui/Modifier;FILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->fillMaxSize(Landroidx/compose/ui/Modifier;F)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->fillMaxWidth$default(Landroidx/compose/ui/Modifier;FILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->fillMaxWidth(Landroidx/compose/ui/Modifier;F)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->height-3ABfNKs(Landroidx/compose/ui/Modifier;F)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->heightIn-VpY3zN4$default(Landroidx/compose/ui/Modifier;FFILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->heightIn-VpY3zN4(Landroidx/compose/ui/Modifier;FF)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->requiredSize-3ABfNKs(Landroidx/compose/ui/Modifier;F)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->size-3ABfNKs(Landroidx/compose/ui/Modifier;F)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->width-3ABfNKs(Landroidx/compose/ui/Modifier;F)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->widthIn-VpY3zN4$default(Landroidx/compose/ui/Modifier;FFILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->widthIn-VpY3zN4(Landroidx/compose/ui/Modifier;FF)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->wrapContentSize$default(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Alignment;ZILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/SizeKt;->wrapContentSize(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Alignment;Z)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/layout/SizeMode; +HSPLandroidx/compose/foundation/layout/SizeMode;->$values()[Landroidx/compose/foundation/layout/SizeMode; +HSPLandroidx/compose/foundation/layout/SizeMode;->()V +HSPLandroidx/compose/foundation/layout/SizeMode;->(Ljava/lang/String;I)V +Landroidx/compose/foundation/layout/SizeNode; +HSPLandroidx/compose/foundation/layout/SizeNode;->(FFFFZ)V +HSPLandroidx/compose/foundation/layout/SizeNode;->(FFFFZLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/SizeNode;->getTargetConstraints-OenEA2s(Landroidx/compose/ui/unit/Density;)J +HSPLandroidx/compose/foundation/layout/SizeNode;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/foundation/layout/SizeNode;->setEnforceIncoming(Z)V +HSPLandroidx/compose/foundation/layout/SizeNode;->setMaxHeight-0680j_4(F)V +HSPLandroidx/compose/foundation/layout/SizeNode;->setMaxWidth-0680j_4(F)V +HSPLandroidx/compose/foundation/layout/SizeNode;->setMinHeight-0680j_4(F)V +HSPLandroidx/compose/foundation/layout/SizeNode;->setMinWidth-0680j_4(F)V +Landroidx/compose/foundation/layout/SizeNode$measure$1; +HSPLandroidx/compose/foundation/layout/SizeNode$measure$1;->(Landroidx/compose/ui/layout/Placeable;)V +HSPLandroidx/compose/foundation/layout/SizeNode$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/layout/SizeNode$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/SpacerKt; +HSPLandroidx/compose/foundation/layout/SpacerKt;->Spacer(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)V +Landroidx/compose/foundation/layout/SpacerMeasurePolicy; +HSPLandroidx/compose/foundation/layout/SpacerMeasurePolicy;->()V +HSPLandroidx/compose/foundation/layout/SpacerMeasurePolicy;->()V +HSPLandroidx/compose/foundation/layout/SpacerMeasurePolicy;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/layout/SpacerMeasurePolicy$measure$1$1; +HSPLandroidx/compose/foundation/layout/SpacerMeasurePolicy$measure$1$1;->()V +HSPLandroidx/compose/foundation/layout/SpacerMeasurePolicy$measure$1$1;->()V +HSPLandroidx/compose/foundation/layout/SpacerMeasurePolicy$measure$1$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/layout/SpacerMeasurePolicy$measure$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/UnionInsets; +HSPLandroidx/compose/foundation/layout/UnionInsets;->(Landroidx/compose/foundation/layout/WindowInsets;Landroidx/compose/foundation/layout/WindowInsets;)V +HSPLandroidx/compose/foundation/layout/UnionInsets;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/layout/UnionInsets;->getBottom(Landroidx/compose/ui/unit/Density;)I +HSPLandroidx/compose/foundation/layout/UnionInsets;->getLeft(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/foundation/layout/UnionInsets;->getRight(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/foundation/layout/UnionInsets;->getTop(Landroidx/compose/ui/unit/Density;)I +Landroidx/compose/foundation/layout/UnionInsetsConsumingModifier; +HSPLandroidx/compose/foundation/layout/UnionInsetsConsumingModifier;->(Landroidx/compose/foundation/layout/WindowInsets;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/layout/UnionInsetsConsumingModifier;->calculateInsets(Landroidx/compose/foundation/layout/WindowInsets;)Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/UnionInsetsConsumingModifier;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/layout/UnspecifiedConstraintsElement; +HSPLandroidx/compose/foundation/layout/UnspecifiedConstraintsElement;->(FF)V +HSPLandroidx/compose/foundation/layout/UnspecifiedConstraintsElement;->(FFLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/UnspecifiedConstraintsElement;->create()Landroidx/compose/foundation/layout/UnspecifiedConstraintsNode; +HSPLandroidx/compose/foundation/layout/UnspecifiedConstraintsElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/layout/UnspecifiedConstraintsElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/layout/UnspecifiedConstraintsNode; +HSPLandroidx/compose/foundation/layout/UnspecifiedConstraintsNode;->(FF)V +HSPLandroidx/compose/foundation/layout/UnspecifiedConstraintsNode;->(FFLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/UnspecifiedConstraintsNode;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/layout/UnspecifiedConstraintsNode$measure$1; +HSPLandroidx/compose/foundation/layout/UnspecifiedConstraintsNode$measure$1;->(Landroidx/compose/ui/layout/Placeable;)V +HSPLandroidx/compose/foundation/layout/UnspecifiedConstraintsNode$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/layout/UnspecifiedConstraintsNode$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/ValueInsets; +HSPLandroidx/compose/foundation/layout/ValueInsets;->(Landroidx/compose/foundation/layout/InsetsValues;Ljava/lang/String;)V +HSPLandroidx/compose/foundation/layout/ValueInsets;->setValue$foundation_layout_release(Landroidx/compose/foundation/layout/InsetsValues;)V +Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsets;->()V +Landroidx/compose/foundation/layout/WindowInsets$Companion; +HSPLandroidx/compose/foundation/layout/WindowInsets$Companion;->()V +HSPLandroidx/compose/foundation/layout/WindowInsets$Companion;->()V +Landroidx/compose/foundation/layout/WindowInsetsHolder; +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder;->()V +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder;->(Landroidx/core/view/WindowInsetsCompat;Landroid/view/View;)V +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder;->(Landroidx/core/view/WindowInsetsCompat;Landroid/view/View;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder;->access$getViewMap$cp()Ljava/util/WeakHashMap; +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder;->decrementAccessors(Landroid/view/View;)V +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder;->getConsumes()Z +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder;->getDisplayCutout()Landroidx/compose/foundation/layout/AndroidWindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder;->getIme()Landroidx/compose/foundation/layout/AndroidWindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder;->getNavigationBars()Landroidx/compose/foundation/layout/AndroidWindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder;->getStatusBars()Landroidx/compose/foundation/layout/AndroidWindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder;->getSystemBars()Landroidx/compose/foundation/layout/AndroidWindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder;->incrementAccessors(Landroid/view/View;)V +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder;->update$default(Landroidx/compose/foundation/layout/WindowInsetsHolder;Landroidx/core/view/WindowInsetsCompat;IILjava/lang/Object;)V +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder;->update(Landroidx/core/view/WindowInsetsCompat;I)V +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder;->updateImeAnimationSource(Landroidx/core/view/WindowInsetsCompat;)V +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder;->updateImeAnimationTarget(Landroidx/core/view/WindowInsetsCompat;)V +Landroidx/compose/foundation/layout/WindowInsetsHolder$Companion; +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion;->()V +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion;->access$systemInsets(Landroidx/compose/foundation/layout/WindowInsetsHolder$Companion;Landroidx/core/view/WindowInsetsCompat;ILjava/lang/String;)Landroidx/compose/foundation/layout/AndroidWindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion;->access$valueInsetsIgnoringVisibility(Landroidx/compose/foundation/layout/WindowInsetsHolder$Companion;Landroidx/core/view/WindowInsetsCompat;ILjava/lang/String;)Landroidx/compose/foundation/layout/ValueInsets; +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion;->current(Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/WindowInsetsHolder; +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion;->getOrCreateFor(Landroid/view/View;)Landroidx/compose/foundation/layout/WindowInsetsHolder; +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion;->systemInsets(Landroidx/core/view/WindowInsetsCompat;ILjava/lang/String;)Landroidx/compose/foundation/layout/AndroidWindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion;->valueInsetsIgnoringVisibility(Landroidx/core/view/WindowInsetsCompat;ILjava/lang/String;)Landroidx/compose/foundation/layout/ValueInsets; +Landroidx/compose/foundation/layout/WindowInsetsHolder$Companion$current$1; +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion$current$1;->(Landroidx/compose/foundation/layout/WindowInsetsHolder;Landroid/view/View;)V +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion$current$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion$current$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/layout/WindowInsetsHolder$Companion$current$1$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion$current$1$invoke$$inlined$onDispose$1;->(Landroidx/compose/foundation/layout/WindowInsetsHolder;Landroid/view/View;)V +HSPLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion$current$1$invoke$$inlined$onDispose$1;->dispose()V +Landroidx/compose/foundation/layout/WindowInsetsKt; +HSPLandroidx/compose/foundation/layout/WindowInsetsKt;->WindowInsets(IIII)Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsetsKt;->WindowInsets-a9UjIt4$default(FFFFILjava/lang/Object;)Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsetsKt;->WindowInsets-a9UjIt4(FFFF)Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsetsKt;->add(Landroidx/compose/foundation/layout/WindowInsets;Landroidx/compose/foundation/layout/WindowInsets;)Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsetsKt;->asPaddingValues(Landroidx/compose/foundation/layout/WindowInsets;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/PaddingValues; +HSPLandroidx/compose/foundation/layout/WindowInsetsKt;->asPaddingValues(Landroidx/compose/foundation/layout/WindowInsets;Landroidx/compose/ui/unit/Density;)Landroidx/compose/foundation/layout/PaddingValues; +HSPLandroidx/compose/foundation/layout/WindowInsetsKt;->exclude(Landroidx/compose/foundation/layout/WindowInsets;Landroidx/compose/foundation/layout/WindowInsets;)Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsetsKt;->only-bOOhFvg(Landroidx/compose/foundation/layout/WindowInsets;I)Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsetsKt;->union(Landroidx/compose/foundation/layout/WindowInsets;Landroidx/compose/foundation/layout/WindowInsets;)Landroidx/compose/foundation/layout/WindowInsets; +Landroidx/compose/foundation/layout/WindowInsetsPaddingKt; +HSPLandroidx/compose/foundation/layout/WindowInsetsPaddingKt;->()V +HSPLandroidx/compose/foundation/layout/WindowInsetsPaddingKt;->consumeWindowInsets(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/layout/WindowInsets;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/WindowInsetsPaddingKt;->getModifierLocalConsumedWindowInsets()Landroidx/compose/ui/modifier/ProvidableModifierLocal; +HSPLandroidx/compose/foundation/layout/WindowInsetsPaddingKt;->onConsumedWindowInsetsChanged(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/layout/WindowInsetsPaddingKt;->windowInsetsPadding(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/layout/WindowInsets;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/layout/WindowInsetsPaddingKt$ModifierLocalConsumedWindowInsets$1; +HSPLandroidx/compose/foundation/layout/WindowInsetsPaddingKt$ModifierLocalConsumedWindowInsets$1;->()V +HSPLandroidx/compose/foundation/layout/WindowInsetsPaddingKt$ModifierLocalConsumedWindowInsets$1;->()V +HSPLandroidx/compose/foundation/layout/WindowInsetsPaddingKt$ModifierLocalConsumedWindowInsets$1;->invoke()Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsetsPaddingKt$ModifierLocalConsumedWindowInsets$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/layout/WindowInsetsSides; +HSPLandroidx/compose/foundation/layout/WindowInsetsSides;->()V +HSPLandroidx/compose/foundation/layout/WindowInsetsSides;->access$getAllowLeftInLtr$cp()I +HSPLandroidx/compose/foundation/layout/WindowInsetsSides;->access$getAllowRightInLtr$cp()I +HSPLandroidx/compose/foundation/layout/WindowInsetsSides;->access$getBottom$cp()I +HSPLandroidx/compose/foundation/layout/WindowInsetsSides;->access$getHorizontal$cp()I +HSPLandroidx/compose/foundation/layout/WindowInsetsSides;->access$getTop$cp()I +HSPLandroidx/compose/foundation/layout/WindowInsetsSides;->constructor-impl(I)I +HSPLandroidx/compose/foundation/layout/WindowInsetsSides;->equals-impl0(II)Z +HSPLandroidx/compose/foundation/layout/WindowInsetsSides;->hasAny-bkgdKaI$foundation_layout_release(II)Z +HSPLandroidx/compose/foundation/layout/WindowInsetsSides;->plus-gK_yJZ4(II)I +Landroidx/compose/foundation/layout/WindowInsetsSides$Companion; +HSPLandroidx/compose/foundation/layout/WindowInsetsSides$Companion;->()V +HSPLandroidx/compose/foundation/layout/WindowInsetsSides$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/WindowInsetsSides$Companion;->getAllowLeftInLtr-JoeWqyM$foundation_layout_release()I +HSPLandroidx/compose/foundation/layout/WindowInsetsSides$Companion;->getAllowRightInLtr-JoeWqyM$foundation_layout_release()I +HSPLandroidx/compose/foundation/layout/WindowInsetsSides$Companion;->getBottom-JoeWqyM()I +HSPLandroidx/compose/foundation/layout/WindowInsetsSides$Companion;->getHorizontal-JoeWqyM()I +HSPLandroidx/compose/foundation/layout/WindowInsetsSides$Companion;->getTop-JoeWqyM()I +Landroidx/compose/foundation/layout/WindowInsets_androidKt; +HSPLandroidx/compose/foundation/layout/WindowInsets_androidKt;->ValueInsets(Landroidx/core/graphics/Insets;Ljava/lang/String;)Landroidx/compose/foundation/layout/ValueInsets; +HSPLandroidx/compose/foundation/layout/WindowInsets_androidKt;->getDisplayCutout(Landroidx/compose/foundation/layout/WindowInsets$Companion;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsets_androidKt;->getIme(Landroidx/compose/foundation/layout/WindowInsets$Companion;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsets_androidKt;->getNavigationBars(Landroidx/compose/foundation/layout/WindowInsets$Companion;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsets_androidKt;->getStatusBars(Landroidx/compose/foundation/layout/WindowInsets$Companion;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsets_androidKt;->getSystemBars(Landroidx/compose/foundation/layout/WindowInsets$Companion;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/foundation/layout/WindowInsets_androidKt;->toInsetsValues(Landroidx/core/graphics/Insets;)Landroidx/compose/foundation/layout/InsetsValues; +Landroidx/compose/foundation/layout/WrapContentElement; +HSPLandroidx/compose/foundation/layout/WrapContentElement;->()V +HSPLandroidx/compose/foundation/layout/WrapContentElement;->(Landroidx/compose/foundation/layout/Direction;ZLkotlin/jvm/functions/Function2;Ljava/lang/Object;Ljava/lang/String;)V +HSPLandroidx/compose/foundation/layout/WrapContentElement;->create()Landroidx/compose/foundation/layout/WrapContentNode; +HSPLandroidx/compose/foundation/layout/WrapContentElement;->create()Landroidx/compose/ui/Modifier$Node; +Landroidx/compose/foundation/layout/WrapContentElement$Companion; +HSPLandroidx/compose/foundation/layout/WrapContentElement$Companion;->()V +HSPLandroidx/compose/foundation/layout/WrapContentElement$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/layout/WrapContentElement$Companion;->height(Landroidx/compose/ui/Alignment$Vertical;Z)Landroidx/compose/foundation/layout/WrapContentElement; +HSPLandroidx/compose/foundation/layout/WrapContentElement$Companion;->size(Landroidx/compose/ui/Alignment;Z)Landroidx/compose/foundation/layout/WrapContentElement; +HSPLandroidx/compose/foundation/layout/WrapContentElement$Companion;->width(Landroidx/compose/ui/Alignment$Horizontal;Z)Landroidx/compose/foundation/layout/WrapContentElement; +Landroidx/compose/foundation/layout/WrapContentElement$Companion$height$1; +HSPLandroidx/compose/foundation/layout/WrapContentElement$Companion$height$1;->(Landroidx/compose/ui/Alignment$Vertical;)V +Landroidx/compose/foundation/layout/WrapContentElement$Companion$size$1; +HSPLandroidx/compose/foundation/layout/WrapContentElement$Companion$size$1;->(Landroidx/compose/ui/Alignment;)V +HSPLandroidx/compose/foundation/layout/WrapContentElement$Companion$size$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/layout/WrapContentElement$Companion$size$1;->invoke-5SAbXVA(JLandroidx/compose/ui/unit/LayoutDirection;)J +Landroidx/compose/foundation/layout/WrapContentElement$Companion$width$1; +HSPLandroidx/compose/foundation/layout/WrapContentElement$Companion$width$1;->(Landroidx/compose/ui/Alignment$Horizontal;)V +Landroidx/compose/foundation/layout/WrapContentNode; +HSPLandroidx/compose/foundation/layout/WrapContentNode;->(Landroidx/compose/foundation/layout/Direction;ZLkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/foundation/layout/WrapContentNode;->getAlignmentCallback()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/foundation/layout/WrapContentNode;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/layout/WrapContentNode$measure$1; +HSPLandroidx/compose/foundation/layout/WrapContentNode$measure$1;->(Landroidx/compose/foundation/layout/WrapContentNode;ILandroidx/compose/ui/layout/Placeable;ILandroidx/compose/ui/layout/MeasureScope;)V +HSPLandroidx/compose/foundation/layout/WrapContentNode$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/layout/WrapContentNode$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/EmptyLazyListLayoutInfo; +HSPLandroidx/compose/foundation/lazy/EmptyLazyListLayoutInfo;->()V +HSPLandroidx/compose/foundation/lazy/EmptyLazyListLayoutInfo;->()V +Landroidx/compose/foundation/lazy/LazyDslKt; +HSPLandroidx/compose/foundation/lazy/LazyDslKt;->LazyColumn(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/layout/PaddingValues;ZLandroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/ui/Alignment$Horizontal;Landroidx/compose/foundation/gestures/FlingBehavior;ZLkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)V +Landroidx/compose/foundation/lazy/LazyItemScope; +Landroidx/compose/foundation/lazy/LazyItemScopeImpl; +HSPLandroidx/compose/foundation/lazy/LazyItemScopeImpl;->()V +HSPLandroidx/compose/foundation/lazy/LazyItemScopeImpl;->setMaxSize(II)V +Landroidx/compose/foundation/lazy/LazyLayoutSemanticStateKt; +HSPLandroidx/compose/foundation/lazy/LazyLayoutSemanticStateKt;->LazyLayoutSemanticState(Landroidx/compose/foundation/lazy/LazyListState;Z)Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticState; +Landroidx/compose/foundation/lazy/LazyLayoutSemanticStateKt$LazyLayoutSemanticState$1; +HSPLandroidx/compose/foundation/lazy/LazyLayoutSemanticStateKt$LazyLayoutSemanticState$1;->(Landroidx/compose/foundation/lazy/LazyListState;Z)V +HSPLandroidx/compose/foundation/lazy/LazyLayoutSemanticStateKt$LazyLayoutSemanticState$1;->collectionInfo()Landroidx/compose/ui/semantics/CollectionInfo; +HSPLandroidx/compose/foundation/lazy/LazyLayoutSemanticStateKt$LazyLayoutSemanticState$1;->getCanScrollForward()Z +HSPLandroidx/compose/foundation/lazy/LazyLayoutSemanticStateKt$LazyLayoutSemanticState$1;->getCurrentPosition()F +Landroidx/compose/foundation/lazy/LazyListAnimateScrollScope; +HSPLandroidx/compose/foundation/lazy/LazyListAnimateScrollScope;->(Landroidx/compose/foundation/lazy/LazyListState;)V +Landroidx/compose/foundation/lazy/LazyListBeyondBoundsModifierKt; +HSPLandroidx/compose/foundation/lazy/LazyListBeyondBoundsModifierKt;->lazyListBeyondBoundsModifier(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/LazyListState;IZLandroidx/compose/foundation/gestures/Orientation;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/lazy/LazyListBeyondBoundsState; +HSPLandroidx/compose/foundation/lazy/LazyListBeyondBoundsState;->(Landroidx/compose/foundation/lazy/LazyListState;I)V +Landroidx/compose/foundation/lazy/LazyListInterval; +HSPLandroidx/compose/foundation/lazy/LazyListInterval;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function4;)V +HSPLandroidx/compose/foundation/lazy/LazyListInterval;->getItem()Lkotlin/jvm/functions/Function4; +HSPLandroidx/compose/foundation/lazy/LazyListInterval;->getKey()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/foundation/lazy/LazyListInterval;->getType()Lkotlin/jvm/functions/Function1; +Landroidx/compose/foundation/lazy/LazyListIntervalContent; +HSPLandroidx/compose/foundation/lazy/LazyListIntervalContent;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/lazy/LazyListIntervalContent;->getHeaderIndexes()Ljava/util/List; +HSPLandroidx/compose/foundation/lazy/LazyListIntervalContent;->getIntervals()Landroidx/compose/foundation/lazy/layout/IntervalList; +HSPLandroidx/compose/foundation/lazy/LazyListIntervalContent;->getIntervals()Landroidx/compose/foundation/lazy/layout/MutableIntervalList; +HSPLandroidx/compose/foundation/lazy/LazyListIntervalContent;->item(Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function3;)V +HSPLandroidx/compose/foundation/lazy/LazyListIntervalContent;->items(ILkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function4;)V +Landroidx/compose/foundation/lazy/LazyListIntervalContent$item$1; +HSPLandroidx/compose/foundation/lazy/LazyListIntervalContent$item$1;->(Ljava/lang/Object;)V +HSPLandroidx/compose/foundation/lazy/LazyListIntervalContent$item$1;->invoke(I)Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/LazyListIntervalContent$item$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/LazyListIntervalContent$item$2; +HSPLandroidx/compose/foundation/lazy/LazyListIntervalContent$item$2;->(Ljava/lang/Object;)V +HSPLandroidx/compose/foundation/lazy/LazyListIntervalContent$item$2;->invoke(I)Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/LazyListIntervalContent$item$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/LazyListIntervalContent$item$3; +HSPLandroidx/compose/foundation/lazy/LazyListIntervalContent$item$3;->(Lkotlin/jvm/functions/Function3;)V +HSPLandroidx/compose/foundation/lazy/LazyListIntervalContent$item$3;->invoke(Landroidx/compose/foundation/lazy/LazyItemScope;ILandroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/lazy/LazyListIntervalContent$item$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/LazyListItemInfo; +Landroidx/compose/foundation/lazy/LazyListItemPlacementAnimator; +HSPLandroidx/compose/foundation/lazy/LazyListItemPlacementAnimator;->()V +HSPLandroidx/compose/foundation/lazy/LazyListItemPlacementAnimator;->getHasAnimations(Landroidx/compose/foundation/lazy/LazyListMeasuredItem;)Z +HSPLandroidx/compose/foundation/lazy/LazyListItemPlacementAnimator;->getNode(Ljava/lang/Object;)Landroidx/compose/foundation/lazy/layout/LazyLayoutAnimateItemModifierNode; +HSPLandroidx/compose/foundation/lazy/LazyListItemPlacementAnimator;->onMeasured(IIILjava/util/List;Landroidx/compose/foundation/lazy/LazyListMeasuredItemProvider;Z)V +HSPLandroidx/compose/foundation/lazy/LazyListItemPlacementAnimator;->reset()V +Landroidx/compose/foundation/lazy/LazyListItemProvider; +Landroidx/compose/foundation/lazy/LazyListItemProviderImpl; +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderImpl;->(Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/lazy/LazyListIntervalContent;Landroidx/compose/foundation/lazy/LazyItemScopeImpl;Landroidx/compose/foundation/lazy/layout/LazyLayoutKeyIndexMap;)V +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderImpl;->Item(ILjava/lang/Object;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderImpl;->access$getIntervalContent$p(Landroidx/compose/foundation/lazy/LazyListItemProviderImpl;)Landroidx/compose/foundation/lazy/LazyListIntervalContent; +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderImpl;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderImpl;->getContentType(I)Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderImpl;->getHeaderIndexes()Ljava/util/List; +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderImpl;->getIndex(Ljava/lang/Object;)I +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderImpl;->getItemCount()I +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderImpl;->getItemScope()Landroidx/compose/foundation/lazy/LazyItemScopeImpl; +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderImpl;->getKey(I)Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderImpl;->getKeyIndexMap()Landroidx/compose/foundation/lazy/layout/LazyLayoutKeyIndexMap; +Landroidx/compose/foundation/lazy/LazyListItemProviderImpl$Item$1; +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderImpl$Item$1;->(Landroidx/compose/foundation/lazy/LazyListItemProviderImpl;I)V +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderImpl$Item$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderImpl$Item$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/LazyListItemProviderKt; +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderKt;->rememberLazyListItemProviderLambda(Landroidx/compose/foundation/lazy/LazyListState;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)Lkotlin/jvm/functions/Function0; +Landroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProviderLambda$1$1; +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProviderLambda$1$1;->(Ljava/lang/Object;)V +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProviderLambda$1$1;->get()Ljava/lang/Object; +Landroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProviderLambda$1$intervalContentState$1; +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProviderLambda$1$intervalContentState$1;->(Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProviderLambda$1$intervalContentState$1;->invoke()Landroidx/compose/foundation/lazy/LazyListIntervalContent; +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProviderLambda$1$intervalContentState$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProviderLambda$1$itemProviderState$1; +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProviderLambda$1$itemProviderState$1;->(Landroidx/compose/runtime/State;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/lazy/LazyItemScopeImpl;)V +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProviderLambda$1$itemProviderState$1;->invoke()Landroidx/compose/foundation/lazy/LazyListItemProviderImpl; +HSPLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProviderLambda$1$itemProviderState$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/lazy/LazyListKt; +HSPLandroidx/compose/foundation/lazy/LazyListKt;->LazyList(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/layout/PaddingValues;ZZLandroidx/compose/foundation/gestures/FlingBehavior;ZILandroidx/compose/ui/Alignment$Horizontal;Landroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/ui/Alignment$Vertical;Landroidx/compose/foundation/layout/Arrangement$Horizontal;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;III)V +HSPLandroidx/compose/foundation/lazy/LazyListKt;->ScrollPositionUpdater(Lkotlin/jvm/functions/Function0;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/lazy/LazyListKt;->rememberLazyListMeasurePolicy(Lkotlin/jvm/functions/Function0;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/layout/PaddingValues;ZZILandroidx/compose/ui/Alignment$Horizontal;Landroidx/compose/ui/Alignment$Vertical;Landroidx/compose/foundation/layout/Arrangement$Horizontal;Landroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/runtime/Composer;II)Lkotlin/jvm/functions/Function2; +Landroidx/compose/foundation/lazy/LazyListKt$ScrollPositionUpdater$1; +HSPLandroidx/compose/foundation/lazy/LazyListKt$ScrollPositionUpdater$1;->(Lkotlin/jvm/functions/Function0;Landroidx/compose/foundation/lazy/LazyListState;I)V +Landroidx/compose/foundation/lazy/LazyListKt$rememberLazyListMeasurePolicy$1$1; +HSPLandroidx/compose/foundation/lazy/LazyListKt$rememberLazyListMeasurePolicy$1$1;->(ZLandroidx/compose/foundation/layout/PaddingValues;ZLandroidx/compose/foundation/lazy/LazyListState;Lkotlin/jvm/functions/Function0;Landroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/foundation/layout/Arrangement$Horizontal;ILandroidx/compose/ui/Alignment$Horizontal;Landroidx/compose/ui/Alignment$Vertical;)V +HSPLandroidx/compose/foundation/lazy/LazyListKt$rememberLazyListMeasurePolicy$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/LazyListKt$rememberLazyListMeasurePolicy$1$1;->invoke-0kLqBqw(Landroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScope;J)Landroidx/compose/foundation/lazy/LazyListMeasureResult; +Landroidx/compose/foundation/lazy/LazyListKt$rememberLazyListMeasurePolicy$1$1$2; +HSPLandroidx/compose/foundation/lazy/LazyListKt$rememberLazyListMeasurePolicy$1$1$2;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScope;JII)V +HSPLandroidx/compose/foundation/lazy/LazyListKt$rememberLazyListMeasurePolicy$1$1$2;->invoke(IILkotlin/jvm/functions/Function1;)Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/foundation/lazy/LazyListKt$rememberLazyListMeasurePolicy$1$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/LazyListKt$rememberLazyListMeasurePolicy$1$1$measuredItemProvider$1; +HSPLandroidx/compose/foundation/lazy/LazyListKt$rememberLazyListMeasurePolicy$1$1$measuredItemProvider$1;->(JZLandroidx/compose/foundation/lazy/LazyListItemProvider;Landroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScope;IILandroidx/compose/ui/Alignment$Horizontal;Landroidx/compose/ui/Alignment$Vertical;ZIIJ)V +HSPLandroidx/compose/foundation/lazy/LazyListKt$rememberLazyListMeasurePolicy$1$1$measuredItemProvider$1;->createItem(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/List;)Landroidx/compose/foundation/lazy/LazyListMeasuredItem; +Landroidx/compose/foundation/lazy/LazyListLayoutInfo; +Landroidx/compose/foundation/lazy/LazyListMeasureKt; +HSPLandroidx/compose/foundation/lazy/LazyListMeasureKt;->calculateItemsOffsets$reverseAware(IZI)I +HSPLandroidx/compose/foundation/lazy/LazyListMeasureKt;->calculateItemsOffsets(Ljava/util/List;Ljava/util/List;Ljava/util/List;IIIIIZLandroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/foundation/layout/Arrangement$Horizontal;ZLandroidx/compose/ui/unit/Density;)Ljava/util/List; +HSPLandroidx/compose/foundation/lazy/LazyListMeasureKt;->createItemsAfterList(Ljava/util/List;Landroidx/compose/foundation/lazy/LazyListMeasuredItemProvider;IILjava/util/List;)Ljava/util/List; +HSPLandroidx/compose/foundation/lazy/LazyListMeasureKt;->createItemsBeforeList(ILandroidx/compose/foundation/lazy/LazyListMeasuredItemProvider;ILjava/util/List;)Ljava/util/List; +HSPLandroidx/compose/foundation/lazy/LazyListMeasureKt;->measureLazyList-CD5nmq0(ILandroidx/compose/foundation/lazy/LazyListMeasuredItemProvider;IIIIIIFJZLjava/util/List;Landroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/foundation/layout/Arrangement$Horizontal;ZLandroidx/compose/ui/unit/Density;Landroidx/compose/foundation/lazy/LazyListItemPlacementAnimator;ILjava/util/List;Lkotlin/jvm/functions/Function3;)Landroidx/compose/foundation/lazy/LazyListMeasureResult; +Landroidx/compose/foundation/lazy/LazyListMeasureKt$measureLazyList$5; +HSPLandroidx/compose/foundation/lazy/LazyListMeasureKt$measureLazyList$5;->(Ljava/util/List;Landroidx/compose/foundation/lazy/LazyListMeasuredItem;)V +HSPLandroidx/compose/foundation/lazy/LazyListMeasureKt$measureLazyList$5;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/lazy/LazyListMeasureKt$measureLazyList$5;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/LazyListMeasureResult; +HSPLandroidx/compose/foundation/lazy/LazyListMeasureResult;->(Landroidx/compose/foundation/lazy/LazyListMeasuredItem;IZFLandroidx/compose/ui/layout/MeasureResult;Ljava/util/List;IIIZLandroidx/compose/foundation/gestures/Orientation;II)V +HSPLandroidx/compose/foundation/lazy/LazyListMeasureResult;->getAlignmentLines()Ljava/util/Map; +HSPLandroidx/compose/foundation/lazy/LazyListMeasureResult;->getCanScrollForward()Z +HSPLandroidx/compose/foundation/lazy/LazyListMeasureResult;->getConsumedScroll()F +HSPLandroidx/compose/foundation/lazy/LazyListMeasureResult;->getFirstVisibleItem()Landroidx/compose/foundation/lazy/LazyListMeasuredItem; +HSPLandroidx/compose/foundation/lazy/LazyListMeasureResult;->getFirstVisibleItemScrollOffset()I +HSPLandroidx/compose/foundation/lazy/LazyListMeasureResult;->getHeight()I +HSPLandroidx/compose/foundation/lazy/LazyListMeasureResult;->getReverseLayout()Z +HSPLandroidx/compose/foundation/lazy/LazyListMeasureResult;->getTotalItemsCount()I +HSPLandroidx/compose/foundation/lazy/LazyListMeasureResult;->getViewportEndOffset()I +HSPLandroidx/compose/foundation/lazy/LazyListMeasureResult;->getVisibleItemsInfo()Ljava/util/List; +HSPLandroidx/compose/foundation/lazy/LazyListMeasureResult;->getWidth()I +HSPLandroidx/compose/foundation/lazy/LazyListMeasureResult;->placeChildren()V +Landroidx/compose/foundation/lazy/LazyListMeasuredItem; +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItem;->(ILjava/util/List;ZLandroidx/compose/ui/Alignment$Horizontal;Landroidx/compose/ui/Alignment$Vertical;Landroidx/compose/ui/unit/LayoutDirection;ZIIIJLjava/lang/Object;Ljava/lang/Object;)V +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItem;->(ILjava/util/List;ZLandroidx/compose/ui/Alignment$Horizontal;Landroidx/compose/ui/Alignment$Vertical;Landroidx/compose/ui/unit/LayoutDirection;ZIIIJLjava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItem;->getCrossAxisSize()I +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItem;->getIndex()I +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItem;->getKey()Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItem;->getMainAxisSize(Landroidx/compose/ui/layout/Placeable;)I +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItem;->getOffset()I +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItem;->getOffset-Bjo55l4(I)J +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItem;->getParentData(I)Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItem;->getPlaceablesCount()I +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItem;->getSize()I +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItem;->getSizeWithSpacings()I +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItem;->place(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItem;->position(III)V +Landroidx/compose/foundation/lazy/LazyListMeasuredItemProvider; +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItemProvider;->(JZLandroidx/compose/foundation/lazy/LazyListItemProvider;Landroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScope;)V +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItemProvider;->(JZLandroidx/compose/foundation/lazy/LazyListItemProvider;Landroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScope;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItemProvider;->getAndMeasure(I)Landroidx/compose/foundation/lazy/LazyListMeasuredItem; +HSPLandroidx/compose/foundation/lazy/LazyListMeasuredItemProvider;->getChildConstraints-msEJaDk()J +Landroidx/compose/foundation/lazy/LazyListScope; +HSPLandroidx/compose/foundation/lazy/LazyListScope;->item$default(Landroidx/compose/foundation/lazy/LazyListScope;Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function3;ILjava/lang/Object;)V +Landroidx/compose/foundation/lazy/LazyListScrollPosition; +HSPLandroidx/compose/foundation/lazy/LazyListScrollPosition;->(II)V +HSPLandroidx/compose/foundation/lazy/LazyListScrollPosition;->getIndex()I +HSPLandroidx/compose/foundation/lazy/LazyListScrollPosition;->getNearestRangeState()Landroidx/compose/foundation/lazy/layout/LazyLayoutNearestRangeState; +HSPLandroidx/compose/foundation/lazy/LazyListScrollPosition;->getScrollOffset()I +HSPLandroidx/compose/foundation/lazy/LazyListScrollPosition;->requestPosition(II)V +HSPLandroidx/compose/foundation/lazy/LazyListScrollPosition;->setIndex(I)V +HSPLandroidx/compose/foundation/lazy/LazyListScrollPosition;->setScrollOffset(I)V +HSPLandroidx/compose/foundation/lazy/LazyListScrollPosition;->update(II)V +HSPLandroidx/compose/foundation/lazy/LazyListScrollPosition;->updateFromMeasureResult(Landroidx/compose/foundation/lazy/LazyListMeasureResult;)V +HSPLandroidx/compose/foundation/lazy/LazyListScrollPosition;->updateScrollPositionIfTheFirstItemWasMoved(Landroidx/compose/foundation/lazy/LazyListItemProvider;I)I +Landroidx/compose/foundation/lazy/LazyListSemanticsKt; +HSPLandroidx/compose/foundation/lazy/LazyListSemanticsKt;->rememberLazyListSemanticState(Landroidx/compose/foundation/lazy/LazyListState;ZLandroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticState; +Landroidx/compose/foundation/lazy/LazyListState; +HSPLandroidx/compose/foundation/lazy/LazyListState;->()V +HSPLandroidx/compose/foundation/lazy/LazyListState;->(II)V +HSPLandroidx/compose/foundation/lazy/LazyListState;->access$setRemeasurement$p(Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/ui/layout/Remeasurement;)V +HSPLandroidx/compose/foundation/lazy/LazyListState;->applyMeasureResult$foundation_release(Landroidx/compose/foundation/lazy/LazyListMeasureResult;)V +HSPLandroidx/compose/foundation/lazy/LazyListState;->cancelPrefetchIfVisibleItemsChanged(Landroidx/compose/foundation/lazy/LazyListLayoutInfo;)V +HSPLandroidx/compose/foundation/lazy/LazyListState;->getAwaitLayoutModifier$foundation_release()Landroidx/compose/foundation/lazy/layout/AwaitFirstLayoutModifier; +HSPLandroidx/compose/foundation/lazy/LazyListState;->getBeyondBoundsInfo$foundation_release()Landroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsInfo; +HSPLandroidx/compose/foundation/lazy/LazyListState;->getCanScrollForward()Z +HSPLandroidx/compose/foundation/lazy/LazyListState;->getFirstVisibleItemIndex()I +HSPLandroidx/compose/foundation/lazy/LazyListState;->getFirstVisibleItemScrollOffset()I +HSPLandroidx/compose/foundation/lazy/LazyListState;->getInternalInteractionSource$foundation_release()Landroidx/compose/foundation/interaction/MutableInteractionSource; +HSPLandroidx/compose/foundation/lazy/LazyListState;->getLayoutInfo()Landroidx/compose/foundation/lazy/LazyListLayoutInfo; +HSPLandroidx/compose/foundation/lazy/LazyListState;->getNearestRange$foundation_release()Lkotlin/ranges/IntRange; +HSPLandroidx/compose/foundation/lazy/LazyListState;->getPinnedItems$foundation_release()Landroidx/compose/foundation/lazy/layout/LazyLayoutPinnedItemList; +HSPLandroidx/compose/foundation/lazy/LazyListState;->getPlacementAnimator$foundation_release()Landroidx/compose/foundation/lazy/LazyListItemPlacementAnimator; +HSPLandroidx/compose/foundation/lazy/LazyListState;->getPrefetchState$foundation_release()Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState; +HSPLandroidx/compose/foundation/lazy/LazyListState;->getRemeasurementModifier$foundation_release()Landroidx/compose/ui/layout/RemeasurementModifier; +HSPLandroidx/compose/foundation/lazy/LazyListState;->getScrollToBeConsumed$foundation_release()F +HSPLandroidx/compose/foundation/lazy/LazyListState;->isScrollInProgress()Z +HSPLandroidx/compose/foundation/lazy/LazyListState;->scroll(Landroidx/compose/foundation/MutatePriority;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/LazyListState;->scrollToItem(IILkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/LazyListState;->setCanScrollBackward(Z)V +HSPLandroidx/compose/foundation/lazy/LazyListState;->setCanScrollForward(Z)V +HSPLandroidx/compose/foundation/lazy/LazyListState;->setDensity$foundation_release(Landroidx/compose/ui/unit/Density;)V +HSPLandroidx/compose/foundation/lazy/LazyListState;->setPremeasureConstraints-BRTryo0$foundation_release(J)V +HSPLandroidx/compose/foundation/lazy/LazyListState;->snapToItemIndexInternal$foundation_release(II)V +HSPLandroidx/compose/foundation/lazy/LazyListState;->updateScrollPositionIfTheFirstItemWasMoved$foundation_release$default(Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/lazy/LazyListItemProvider;IILjava/lang/Object;)I +HSPLandroidx/compose/foundation/lazy/LazyListState;->updateScrollPositionIfTheFirstItemWasMoved$foundation_release(Landroidx/compose/foundation/lazy/LazyListItemProvider;I)I +Landroidx/compose/foundation/lazy/LazyListState$Companion; +HSPLandroidx/compose/foundation/lazy/LazyListState$Companion;->()V +HSPLandroidx/compose/foundation/lazy/LazyListState$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/foundation/lazy/LazyListState$Companion$Saver$1; +HSPLandroidx/compose/foundation/lazy/LazyListState$Companion$Saver$1;->()V +HSPLandroidx/compose/foundation/lazy/LazyListState$Companion$Saver$1;->()V +Landroidx/compose/foundation/lazy/LazyListState$Companion$Saver$2; +HSPLandroidx/compose/foundation/lazy/LazyListState$Companion$Saver$2;->()V +HSPLandroidx/compose/foundation/lazy/LazyListState$Companion$Saver$2;->()V +Landroidx/compose/foundation/lazy/LazyListState$remeasurementModifier$1; +HSPLandroidx/compose/foundation/lazy/LazyListState$remeasurementModifier$1;->(Landroidx/compose/foundation/lazy/LazyListState;)V +HSPLandroidx/compose/foundation/lazy/LazyListState$remeasurementModifier$1;->onRemeasurementAvailable(Landroidx/compose/ui/layout/Remeasurement;)V +Landroidx/compose/foundation/lazy/LazyListState$scroll$1; +HSPLandroidx/compose/foundation/lazy/LazyListState$scroll$1;->(Landroidx/compose/foundation/lazy/LazyListState;Lkotlin/coroutines/Continuation;)V +Landroidx/compose/foundation/lazy/LazyListState$scrollToItem$2; +HSPLandroidx/compose/foundation/lazy/LazyListState$scrollToItem$2;->(Landroidx/compose/foundation/lazy/LazyListState;IILkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/lazy/LazyListState$scrollToItem$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/lazy/LazyListState$scrollToItem$2;->invoke(Landroidx/compose/foundation/gestures/ScrollScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/LazyListState$scrollToItem$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/LazyListState$scrollToItem$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/LazyListState$scrollableState$1; +HSPLandroidx/compose/foundation/lazy/LazyListState$scrollableState$1;->(Landroidx/compose/foundation/lazy/LazyListState;)V +Landroidx/compose/foundation/lazy/layout/AwaitFirstLayoutModifier; +HSPLandroidx/compose/foundation/lazy/layout/AwaitFirstLayoutModifier;->()V +HSPLandroidx/compose/foundation/lazy/layout/AwaitFirstLayoutModifier;->onGloballyPositioned(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/foundation/lazy/layout/AwaitFirstLayoutModifier;->waitForFirstLayout(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/AwaitFirstLayoutModifier$waitForFirstLayout$1; +HSPLandroidx/compose/foundation/lazy/layout/AwaitFirstLayoutModifier$waitForFirstLayout$1;->(Landroidx/compose/foundation/lazy/layout/AwaitFirstLayoutModifier;Lkotlin/coroutines/Continuation;)V +Landroidx/compose/foundation/lazy/layout/DefaultLazyKey; +HSPLandroidx/compose/foundation/lazy/layout/DefaultLazyKey;->()V +HSPLandroidx/compose/foundation/lazy/layout/DefaultLazyKey;->(I)V +HSPLandroidx/compose/foundation/lazy/layout/DefaultLazyKey;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/lazy/layout/DefaultLazyKey;->hashCode()I +Landroidx/compose/foundation/lazy/layout/DefaultLazyKey$Companion; +HSPLandroidx/compose/foundation/lazy/layout/DefaultLazyKey$Companion;->()V +HSPLandroidx/compose/foundation/lazy/layout/DefaultLazyKey$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/foundation/lazy/layout/DefaultLazyKey$Companion$CREATOR$1; +HSPLandroidx/compose/foundation/lazy/layout/DefaultLazyKey$Companion$CREATOR$1;->()V +Landroidx/compose/foundation/lazy/layout/IntervalList; +Landroidx/compose/foundation/lazy/layout/IntervalList$Interval; +HSPLandroidx/compose/foundation/lazy/layout/IntervalList$Interval;->()V +HSPLandroidx/compose/foundation/lazy/layout/IntervalList$Interval;->(IILjava/lang/Object;)V +HSPLandroidx/compose/foundation/lazy/layout/IntervalList$Interval;->getSize()I +HSPLandroidx/compose/foundation/lazy/layout/IntervalList$Interval;->getStartIndex()I +HSPLandroidx/compose/foundation/lazy/layout/IntervalList$Interval;->getValue()Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/IntervalListKt; +HSPLandroidx/compose/foundation/lazy/layout/IntervalListKt;->access$binarySearch(Landroidx/compose/runtime/collection/MutableVector;I)I +HSPLandroidx/compose/foundation/lazy/layout/IntervalListKt;->binarySearch(Landroidx/compose/runtime/collection/MutableVector;I)I +Landroidx/compose/foundation/lazy/layout/LazyAnimateScrollScope; +Landroidx/compose/foundation/lazy/layout/LazyLayoutAnimateItemModifierNode; +Landroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsInfo; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsInfo;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsInfo;->hasIntervals()Z +Landroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsInfo$Interval; +Landroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsModifierLocal; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsModifierLocal;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsModifierLocal;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsState;Landroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsInfo;ZLandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/foundation/gestures/Orientation;)V +Landroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsModifierLocal$Companion; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsModifierLocal$Companion;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsModifierLocal$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsModifierLocal$Companion$emptyBeyondBoundsScope$1; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsModifierLocal$Companion$emptyBeyondBoundsScope$1;->()V +Landroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsState; +Landroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsStateKt; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsStateKt;->calculateLazyLayoutPinnedIndices(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemProvider;Landroidx/compose/foundation/lazy/layout/LazyLayoutPinnedItemList;Landroidx/compose/foundation/lazy/layout/LazyLayoutBeyondBoundsInfo;)Ljava/util/List; +Landroidx/compose/foundation/lazy/layout/LazyLayoutIntervalContent; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutIntervalContent;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutIntervalContent;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutIntervalContent;->getContentType(I)Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutIntervalContent;->getItemCount()I +Landroidx/compose/foundation/lazy/layout/LazyLayoutIntervalContent$Interval; +Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;->(Landroidx/compose/runtime/saveable/SaveableStateHolder;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;->access$getSaveableStateHolder$p(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;)Landroidx/compose/runtime/saveable/SaveableStateHolder; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;->getContent(ILjava/lang/Object;Ljava/lang/Object;)Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;->getContentType(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;->getItemProvider()Lkotlin/jvm/functions/Function0; +Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;ILjava/lang/Object;Ljava/lang/Object;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;->access$set_content$p(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;->createContentLambda()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;->getContent()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;->getContentType()Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;->getIndex()I +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;->getKey()Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1$2; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1$2;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1$2;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1$2$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1$2$invoke$$inlined$onDispose$1;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1$2$invoke$$inlined$onDispose$1;->dispose()V +Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactoryKt; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactoryKt;->SkippableItem-JVlU9Rs(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemProvider;Ljava/lang/Object;ILjava/lang/Object;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactoryKt;->access$SkippableItem-JVlU9Rs(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemProvider;Ljava/lang/Object;ILjava/lang/Object;Landroidx/compose/runtime/Composer;I)V +Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactoryKt$SkippableItem$1; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactoryKt$SkippableItem$1;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemProvider;ILjava/lang/Object;I)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactoryKt$SkippableItem$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactoryKt$SkippableItem$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/LazyLayoutItemProvider; +Landroidx/compose/foundation/lazy/layout/LazyLayoutItemProviderKt; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemProviderKt;->findIndexByKey(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemProvider;Ljava/lang/Object;I)I +Landroidx/compose/foundation/lazy/layout/LazyLayoutItemReusePolicy; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemReusePolicy;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemReusePolicy;->getSlotsToRetain(Landroidx/compose/ui/layout/SubcomposeSlotReusePolicy$SlotIdsSet;)V +Landroidx/compose/foundation/lazy/layout/LazyLayoutKeyIndexMap; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutKeyIndexMap;->()V +Landroidx/compose/foundation/lazy/layout/LazyLayoutKeyIndexMap$Empty; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutKeyIndexMap$Empty;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutKeyIndexMap$Empty;->()V +Landroidx/compose/foundation/lazy/layout/LazyLayoutKt; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutKt;->LazyLayout(Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +Landroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$3; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$3;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function2;ILandroidx/compose/runtime/State;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$3;->invoke(Landroidx/compose/runtime/saveable/SaveableStateHolder;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$3$2$1; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$3$2$1;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$3$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$3$2$1;->invoke-0kLqBqw(Landroidx/compose/ui/layout/SubcomposeMeasureScope;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$3$itemContentFactory$1$1; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$3$itemContentFactory$1$1;->(Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$3$itemContentFactory$1$1;->invoke()Landroidx/compose/foundation/lazy/layout/LazyLayoutItemProvider; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$3$itemContentFactory$1$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScope; +Landroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScopeImpl; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScopeImpl;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;Landroidx/compose/ui/layout/SubcomposeMeasureScope;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScopeImpl;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScopeImpl;->layout(IILjava/util/Map;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScopeImpl;->measure-0kLqBqw(IJ)Ljava/util/List; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScopeImpl;->roundToPx-0680j_4(F)I +Landroidx/compose/foundation/lazy/layout/LazyLayoutNearestRangeState; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutNearestRangeState;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutNearestRangeState;->(III)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutNearestRangeState;->getValue()Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutNearestRangeState;->getValue()Lkotlin/ranges/IntRange; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutNearestRangeState;->update(I)V +Landroidx/compose/foundation/lazy/layout/LazyLayoutNearestRangeState$Companion; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutNearestRangeState$Companion;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutNearestRangeState$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutNearestRangeState$Companion;->access$calculateNearestItemsRange(Landroidx/compose/foundation/lazy/layout/LazyLayoutNearestRangeState$Companion;III)Lkotlin/ranges/IntRange; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutNearestRangeState$Companion;->calculateNearestItemsRange(III)Lkotlin/ranges/IntRange; +Landroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItem; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItem;->(Ljava/lang/Object;Landroidx/compose/foundation/lazy/layout/LazyLayoutPinnedItemList;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItem;->getPinsCount()I +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItem;->get_parentPinnableContainer()Landroidx/compose/ui/layout/PinnableContainer; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItem;->onDisposed()V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItem;->setIndex(I)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItem;->setParentPinnableContainer(Landroidx/compose/ui/layout/PinnableContainer;)V +Landroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItemKt; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItemKt;->LazyLayoutPinnableItem(Ljava/lang/Object;ILandroidx/compose/foundation/lazy/layout/LazyLayoutPinnedItemList;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +Landroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItemKt$LazyLayoutPinnableItem$1$1; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItemKt$LazyLayoutPinnableItem$1$1;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItem;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItemKt$LazyLayoutPinnableItem$1$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItemKt$LazyLayoutPinnableItem$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItemKt$LazyLayoutPinnableItem$1$1$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItemKt$LazyLayoutPinnableItem$1$1$invoke$$inlined$onDispose$1;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItem;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPinnableItemKt$LazyLayoutPinnableItem$1$1$invoke$$inlined$onDispose$1;->dispose()V +Landroidx/compose/foundation/lazy/layout/LazyLayoutPinnedItemList; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPinnedItemList;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPinnedItemList;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPinnedItemList;->(Ljava/util/List;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPinnedItemList;->isEmpty()Z +Landroidx/compose/foundation/lazy/layout/LazyLayoutPinnedItemList$PinnedItem; +Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState;->setPrefetcher$foundation_release(Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState$Prefetcher;)V +Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState$PrefetchHandle; +Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState$Prefetcher; +Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState;Landroidx/compose/ui/layout/SubcomposeLayoutState;Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;Landroid/view/View;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher;->access$getFrameIntervalNs$cp()J +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher;->access$setFrameIntervalNs$cp(J)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher;->onRemembered()V +Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher$Companion; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher$Companion;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher$Companion;->access$calculateFrameIntervalIfNeeded(Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher$Companion;Landroid/view/View;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher$Companion;->calculateFrameIntervalIfNeeded(Landroid/view/View;)V +Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher$PrefetchRequest; +Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher_androidKt; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher_androidKt;->LazyLayoutPrefetcher(Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState;Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;Landroidx/compose/ui/layout/SubcomposeLayoutState;Landroidx/compose/runtime/Composer;I)V +Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticState; +Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt;->lazyLayoutSemantics(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function0;Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticState;Landroidx/compose/foundation/gestures/Orientation;ZZLandroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$1; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$1;->(Lkotlin/jvm/functions/Function1;ZLandroidx/compose/ui/semantics/ScrollAxisRange;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/semantics/CollectionInfo;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$accessibilityScrollState$1; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$accessibilityScrollState$1;->(Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticState;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$accessibilityScrollState$1;->invoke()Ljava/lang/Float; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$accessibilityScrollState$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$accessibilityScrollState$2; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$accessibilityScrollState$2;->(Lkotlin/jvm/functions/Function0;Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticState;)V +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$accessibilityScrollState$2;->invoke()Ljava/lang/Float; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$accessibilityScrollState$2;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$indexForKeyMapping$1; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$indexForKeyMapping$1;->(Lkotlin/jvm/functions/Function0;)V +Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$scrollByAction$1; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$scrollByAction$1;->(ZLkotlinx/coroutines/CoroutineScope;Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticState;)V +Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$scrollToIndexAction$1; +HSPLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$scrollToIndexAction$1;->(Lkotlin/jvm/functions/Function0;Lkotlinx/coroutines/CoroutineScope;Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticState;)V +Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;->(Landroidx/compose/runtime/saveable/SaveableStateRegistry;)V +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;->(Landroidx/compose/runtime/saveable/SaveableStateRegistry;Ljava/util/Map;)V +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;->SaveableStateProvider(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;->access$getPreviouslyComposedKeys$p(Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;)Ljava/util/Set; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;->canBeSaved(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;->consumeRestored(Ljava/lang/String;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;->getWrappedHolder()Landroidx/compose/runtime/saveable/SaveableStateHolder; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;->performSave()Ljava/util/Map; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;->registerProvider(Ljava/lang/String;Lkotlin/jvm/functions/Function0;)Landroidx/compose/runtime/saveable/SaveableStateRegistry$Entry; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;->setWrappedHolder(Landroidx/compose/runtime/saveable/SaveableStateHolder;)V +Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$1; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$1;->(Landroidx/compose/runtime/saveable/SaveableStateRegistry;)V +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$1;->invoke(Ljava/lang/Object;)Ljava/lang/Boolean; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$Companion; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$Companion;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$Companion;->saver(Landroidx/compose/runtime/saveable/SaveableStateRegistry;)Landroidx/compose/runtime/saveable/Saver; +Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$Companion$saver$1; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$Companion$saver$1;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$Companion$saver$1;->()V +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$Companion$saver$1;->invoke(Landroidx/compose/runtime/saveable/SaverScope;Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;)Ljava/util/Map; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$Companion$saver$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$Companion$saver$2; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$Companion$saver$2;->(Landroidx/compose/runtime/saveable/SaveableStateRegistry;)V +Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$SaveableStateProvider$1; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$SaveableStateProvider$1;->(Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;Ljava/lang/Object;)V +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$SaveableStateProvider$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$SaveableStateProvider$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$SaveableStateProvider$1$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$SaveableStateProvider$1$invoke$$inlined$onDispose$1;->(Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;Ljava/lang/Object;)V +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$SaveableStateProvider$1$invoke$$inlined$onDispose$1;->dispose()V +Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$SaveableStateProvider$2; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$SaveableStateProvider$2;->(Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;I)V +Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolderKt; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolderKt;->LazySaveableStateHolderProvider(Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;I)V +Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolderKt$LazySaveableStateHolderProvider$1; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolderKt$LazySaveableStateHolderProvider$1;->(Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;Lkotlin/jvm/functions/Function3;I)V +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolderKt$LazySaveableStateHolderProvider$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolderKt$LazySaveableStateHolderProvider$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolderKt$LazySaveableStateHolderProvider$holder$1; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolderKt$LazySaveableStateHolderProvider$holder$1;->(Landroidx/compose/runtime/saveable/SaveableStateRegistry;)V +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolderKt$LazySaveableStateHolderProvider$holder$1;->invoke()Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder; +HSPLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolderKt$LazySaveableStateHolderProvider$holder$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/Lazy_androidKt; +HSPLandroidx/compose/foundation/lazy/layout/Lazy_androidKt;->getDefaultLazyLayoutKey(I)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/MutableIntervalList; +HSPLandroidx/compose/foundation/lazy/layout/MutableIntervalList;->()V +HSPLandroidx/compose/foundation/lazy/layout/MutableIntervalList;->()V +HSPLandroidx/compose/foundation/lazy/layout/MutableIntervalList;->addInterval(ILjava/lang/Object;)V +HSPLandroidx/compose/foundation/lazy/layout/MutableIntervalList;->checkIndexBounds(I)V +HSPLandroidx/compose/foundation/lazy/layout/MutableIntervalList;->contains(Landroidx/compose/foundation/lazy/layout/IntervalList$Interval;I)Z +HSPLandroidx/compose/foundation/lazy/layout/MutableIntervalList;->forEach(IILkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/lazy/layout/MutableIntervalList;->get(I)Landroidx/compose/foundation/lazy/layout/IntervalList$Interval; +HSPLandroidx/compose/foundation/lazy/layout/MutableIntervalList;->getIntervalForIndex(I)Landroidx/compose/foundation/lazy/layout/IntervalList$Interval; +HSPLandroidx/compose/foundation/lazy/layout/MutableIntervalList;->getSize()I +Landroidx/compose/foundation/lazy/layout/NearestRangeKeyIndexMap; +HSPLandroidx/compose/foundation/lazy/layout/NearestRangeKeyIndexMap;->(Lkotlin/ranges/IntRange;Landroidx/compose/foundation/lazy/layout/LazyLayoutIntervalContent;)V +HSPLandroidx/compose/foundation/lazy/layout/NearestRangeKeyIndexMap;->access$getKeys$p(Landroidx/compose/foundation/lazy/layout/NearestRangeKeyIndexMap;)[Ljava/lang/Object; +HSPLandroidx/compose/foundation/lazy/layout/NearestRangeKeyIndexMap;->access$getKeysStartIndex$p(Landroidx/compose/foundation/lazy/layout/NearestRangeKeyIndexMap;)I +HSPLandroidx/compose/foundation/lazy/layout/NearestRangeKeyIndexMap;->getIndex(Ljava/lang/Object;)I +HSPLandroidx/compose/foundation/lazy/layout/NearestRangeKeyIndexMap;->getKey(I)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/NearestRangeKeyIndexMap$1$1; +HSPLandroidx/compose/foundation/lazy/layout/NearestRangeKeyIndexMap$1$1;->(IILjava/util/HashMap;Landroidx/compose/foundation/lazy/layout/NearestRangeKeyIndexMap;)V +HSPLandroidx/compose/foundation/lazy/layout/NearestRangeKeyIndexMap$1$1;->invoke(Landroidx/compose/foundation/lazy/layout/IntervalList$Interval;)V +HSPLandroidx/compose/foundation/lazy/layout/NearestRangeKeyIndexMap$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/lazy/layout/StableValue; +HSPLandroidx/compose/foundation/lazy/layout/StableValue;->constructor-impl(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/relocation/BringIntoViewChildNode; +HSPLandroidx/compose/foundation/relocation/BringIntoViewChildNode;->()V +HSPLandroidx/compose/foundation/relocation/BringIntoViewChildNode;->getLayoutCoordinates()Landroidx/compose/ui/layout/LayoutCoordinates; +HSPLandroidx/compose/foundation/relocation/BringIntoViewChildNode;->getLocalParent()Landroidx/compose/foundation/relocation/BringIntoViewParent; +HSPLandroidx/compose/foundation/relocation/BringIntoViewChildNode;->getParent()Landroidx/compose/foundation/relocation/BringIntoViewParent; +HSPLandroidx/compose/foundation/relocation/BringIntoViewChildNode;->onPlaced(Landroidx/compose/ui/layout/LayoutCoordinates;)V +Landroidx/compose/foundation/relocation/BringIntoViewKt; +HSPLandroidx/compose/foundation/relocation/BringIntoViewKt;->()V +HSPLandroidx/compose/foundation/relocation/BringIntoViewKt;->getModifierLocalBringIntoViewParent()Landroidx/compose/ui/modifier/ProvidableModifierLocal; +Landroidx/compose/foundation/relocation/BringIntoViewKt$ModifierLocalBringIntoViewParent$1; +HSPLandroidx/compose/foundation/relocation/BringIntoViewKt$ModifierLocalBringIntoViewParent$1;->()V +HSPLandroidx/compose/foundation/relocation/BringIntoViewKt$ModifierLocalBringIntoViewParent$1;->()V +HSPLandroidx/compose/foundation/relocation/BringIntoViewKt$ModifierLocalBringIntoViewParent$1;->invoke()Landroidx/compose/foundation/relocation/BringIntoViewParent; +HSPLandroidx/compose/foundation/relocation/BringIntoViewKt$ModifierLocalBringIntoViewParent$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/relocation/BringIntoViewParent; +Landroidx/compose/foundation/relocation/BringIntoViewRequester; +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequester;->bringIntoView$default(Landroidx/compose/foundation/relocation/BringIntoViewRequester;Landroidx/compose/ui/geometry/Rect;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/relocation/BringIntoViewRequesterElement; +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterElement;->(Landroidx/compose/foundation/relocation/BringIntoViewRequester;)V +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterElement;->create()Landroidx/compose/foundation/relocation/BringIntoViewRequesterNode; +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/relocation/BringIntoViewRequesterImpl; +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterImpl;->()V +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterImpl;->bringIntoView(Landroidx/compose/ui/geometry/Rect;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterImpl;->getModifiers()Landroidx/compose/runtime/collection/MutableVector; +Landroidx/compose/foundation/relocation/BringIntoViewRequesterImpl$bringIntoView$1; +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterImpl$bringIntoView$1;->(Landroidx/compose/foundation/relocation/BringIntoViewRequesterImpl;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterImpl$bringIntoView$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/relocation/BringIntoViewRequesterKt; +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterKt;->BringIntoViewRequester()Landroidx/compose/foundation/relocation/BringIntoViewRequester; +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterKt;->bringIntoViewRequester(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/relocation/BringIntoViewRequester;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/relocation/BringIntoViewRequesterNode; +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterNode;->(Landroidx/compose/foundation/relocation/BringIntoViewRequester;)V +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterNode;->bringIntoView(Landroidx/compose/ui/geometry/Rect;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterNode;->disposeRequester()V +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterNode;->onAttach()V +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterNode;->onDetach()V +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterNode;->updateRequester(Landroidx/compose/foundation/relocation/BringIntoViewRequester;)V +Landroidx/compose/foundation/relocation/BringIntoViewRequesterNode$bringIntoView$2; +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterNode$bringIntoView$2;->(Landroidx/compose/ui/geometry/Rect;Landroidx/compose/foundation/relocation/BringIntoViewRequesterNode;)V +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterNode$bringIntoView$2;->invoke()Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterNode$bringIntoView$2;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/relocation/BringIntoViewResponder; +Landroidx/compose/foundation/relocation/BringIntoViewResponderElement; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderElement;->(Landroidx/compose/foundation/relocation/BringIntoViewResponder;)V +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderElement;->create()Landroidx/compose/foundation/relocation/BringIntoViewResponderNode; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/relocation/BringIntoViewResponderKt; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderKt;->access$localRectOf(Landroidx/compose/ui/layout/LayoutCoordinates;Landroidx/compose/ui/layout/LayoutCoordinates;Landroidx/compose/ui/geometry/Rect;)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderKt;->bringIntoViewResponder(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/relocation/BringIntoViewResponder;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderKt;->localRectOf(Landroidx/compose/ui/layout/LayoutCoordinates;Landroidx/compose/ui/layout/LayoutCoordinates;Landroidx/compose/ui/geometry/Rect;)Landroidx/compose/ui/geometry/Rect; +Landroidx/compose/foundation/relocation/BringIntoViewResponderNode; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode;->(Landroidx/compose/foundation/relocation/BringIntoViewResponder;)V +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode;->access$bringChildIntoView$localRect(Landroidx/compose/foundation/relocation/BringIntoViewResponderNode;Landroidx/compose/ui/layout/LayoutCoordinates;Lkotlin/jvm/functions/Function0;)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode;->bringChildIntoView$localRect(Landroidx/compose/foundation/relocation/BringIntoViewResponderNode;Landroidx/compose/ui/layout/LayoutCoordinates;Lkotlin/jvm/functions/Function0;)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode;->bringChildIntoView(Landroidx/compose/ui/layout/LayoutCoordinates;Lkotlin/jvm/functions/Function0;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode;->getProvidedValues()Landroidx/compose/ui/modifier/ModifierLocalMap; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode;->getResponder()Landroidx/compose/foundation/relocation/BringIntoViewResponder; +Landroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2;->(Landroidx/compose/foundation/relocation/BringIntoViewResponderNode;Landroidx/compose/ui/layout/LayoutCoordinates;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2$1; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2$1;->(Landroidx/compose/foundation/relocation/BringIntoViewResponderNode;Landroidx/compose/ui/layout/LayoutCoordinates;Lkotlin/jvm/functions/Function0;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2$1$1; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2$1$1;->(Landroidx/compose/foundation/relocation/BringIntoViewResponderNode;Landroidx/compose/ui/layout/LayoutCoordinates;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2$1$1;->invoke()Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2$1$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2$2; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2$2;->(Landroidx/compose/foundation/relocation/BringIntoViewResponderNode;Lkotlin/jvm/functions/Function0;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$2$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$parentRect$1; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$parentRect$1;->(Landroidx/compose/foundation/relocation/BringIntoViewResponderNode;Landroidx/compose/ui/layout/LayoutCoordinates;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$parentRect$1;->invoke()Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponderNode$bringChildIntoView$parentRect$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/relocation/BringIntoViewResponder_androidKt; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponder_androidKt;->access$toRect(Landroidx/compose/ui/geometry/Rect;)Landroid/graphics/Rect; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponder_androidKt;->defaultBringIntoViewParent(Landroidx/compose/ui/node/CompositionLocalConsumerModifierNode;)Landroidx/compose/foundation/relocation/BringIntoViewParent; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponder_androidKt;->toRect(Landroidx/compose/ui/geometry/Rect;)Landroid/graphics/Rect; +Landroidx/compose/foundation/relocation/BringIntoViewResponder_androidKt$defaultBringIntoViewParent$1; +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponder_androidKt$defaultBringIntoViewParent$1;->(Landroidx/compose/ui/node/CompositionLocalConsumerModifierNode;)V +HSPLandroidx/compose/foundation/relocation/BringIntoViewResponder_androidKt$defaultBringIntoViewParent$1;->bringChildIntoView(Landroidx/compose/ui/layout/LayoutCoordinates;Lkotlin/jvm/functions/Function0;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/foundation/selection/SelectableGroupKt; +HSPLandroidx/compose/foundation/selection/SelectableGroupKt;->selectableGroup(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/selection/SelectableGroupKt$selectableGroup$1; +HSPLandroidx/compose/foundation/selection/SelectableGroupKt$selectableGroup$1;->()V +HSPLandroidx/compose/foundation/selection/SelectableGroupKt$selectableGroup$1;->()V +HSPLandroidx/compose/foundation/selection/SelectableGroupKt$selectableGroup$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/foundation/selection/SelectableGroupKt$selectableGroup$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/selection/SelectableKt; +HSPLandroidx/compose/foundation/selection/SelectableKt;->selectable-O2vRcR0(Landroidx/compose/ui/Modifier;ZLandroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/Indication;ZLandroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/selection/SelectableKt$selectable$4$1; +HSPLandroidx/compose/foundation/selection/SelectableKt$selectable$4$1;->(Z)V +HSPLandroidx/compose/foundation/selection/SelectableKt$selectable$4$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/foundation/selection/SelectableKt$selectable$4$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/shape/CornerBasedShape; +HSPLandroidx/compose/foundation/shape/CornerBasedShape;->()V +HSPLandroidx/compose/foundation/shape/CornerBasedShape;->(Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;)V +HSPLandroidx/compose/foundation/shape/CornerBasedShape;->copy$default(Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;ILjava/lang/Object;)Landroidx/compose/foundation/shape/CornerBasedShape; +HSPLandroidx/compose/foundation/shape/CornerBasedShape;->createOutline-Pq9zytI(JLandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/unit/Density;)Landroidx/compose/ui/graphics/Outline; +PLandroidx/compose/foundation/shape/CornerBasedShape;->getBottomEnd()Landroidx/compose/foundation/shape/CornerSize; +PLandroidx/compose/foundation/shape/CornerBasedShape;->getBottomStart()Landroidx/compose/foundation/shape/CornerSize; +PLandroidx/compose/foundation/shape/CornerBasedShape;->getTopEnd()Landroidx/compose/foundation/shape/CornerSize; +HSPLandroidx/compose/foundation/shape/CornerBasedShape;->getTopStart()Landroidx/compose/foundation/shape/CornerSize; +Landroidx/compose/foundation/shape/CornerSize; +Landroidx/compose/foundation/shape/CornerSizeKt; +HSPLandroidx/compose/foundation/shape/CornerSizeKt;->()V +HSPLandroidx/compose/foundation/shape/CornerSizeKt;->CornerSize(I)Landroidx/compose/foundation/shape/CornerSize; +HSPLandroidx/compose/foundation/shape/CornerSizeKt;->CornerSize-0680j_4(F)Landroidx/compose/foundation/shape/CornerSize; +Landroidx/compose/foundation/shape/CornerSizeKt$ZeroCornerSize$1; +HSPLandroidx/compose/foundation/shape/CornerSizeKt$ZeroCornerSize$1;->()V +Landroidx/compose/foundation/shape/DpCornerSize; +HSPLandroidx/compose/foundation/shape/DpCornerSize;->(F)V +HSPLandroidx/compose/foundation/shape/DpCornerSize;->(FLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/shape/DpCornerSize;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/shape/DpCornerSize;->toPx-TmRCtEA(JLandroidx/compose/ui/unit/Density;)F +Landroidx/compose/foundation/shape/PercentCornerSize; +HSPLandroidx/compose/foundation/shape/PercentCornerSize;->(F)V +HSPLandroidx/compose/foundation/shape/PercentCornerSize;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/shape/PercentCornerSize;->toPx-TmRCtEA(JLandroidx/compose/ui/unit/Density;)F +Landroidx/compose/foundation/shape/RoundedCornerShape; +HSPLandroidx/compose/foundation/shape/RoundedCornerShape;->()V +HSPLandroidx/compose/foundation/shape/RoundedCornerShape;->(Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;)V +HSPLandroidx/compose/foundation/shape/RoundedCornerShape;->copy(Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;)Landroidx/compose/foundation/shape/CornerBasedShape; +HSPLandroidx/compose/foundation/shape/RoundedCornerShape;->copy(Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;)Landroidx/compose/foundation/shape/RoundedCornerShape; +HSPLandroidx/compose/foundation/shape/RoundedCornerShape;->createOutline-LjSzlW0(JFFFFLandroidx/compose/ui/unit/LayoutDirection;)Landroidx/compose/ui/graphics/Outline; +HSPLandroidx/compose/foundation/shape/RoundedCornerShape;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/shape/RoundedCornerShapeKt; +HSPLandroidx/compose/foundation/shape/RoundedCornerShapeKt;->()V +HSPLandroidx/compose/foundation/shape/RoundedCornerShapeKt;->RoundedCornerShape(I)Landroidx/compose/foundation/shape/RoundedCornerShape; +HSPLandroidx/compose/foundation/shape/RoundedCornerShapeKt;->RoundedCornerShape(Landroidx/compose/foundation/shape/CornerSize;)Landroidx/compose/foundation/shape/RoundedCornerShape; +HSPLandroidx/compose/foundation/shape/RoundedCornerShapeKt;->RoundedCornerShape-0680j_4(F)Landroidx/compose/foundation/shape/RoundedCornerShape; +HSPLandroidx/compose/foundation/shape/RoundedCornerShapeKt;->RoundedCornerShape-a9UjIt4(FFFF)Landroidx/compose/foundation/shape/RoundedCornerShape; +HSPLandroidx/compose/foundation/shape/RoundedCornerShapeKt;->getCircleShape()Landroidx/compose/foundation/shape/RoundedCornerShape; +Landroidx/compose/foundation/text/AnnotatedStringResolveInlineContentKt; +HSPLandroidx/compose/foundation/text/AnnotatedStringResolveInlineContentKt;->()V +HSPLandroidx/compose/foundation/text/AnnotatedStringResolveInlineContentKt;->hasInlineContent(Landroidx/compose/ui/text/AnnotatedString;)Z +Landroidx/compose/foundation/text/BasicTextFieldKt; +HSPLandroidx/compose/foundation/text/BasicTextFieldKt;->BasicTextField$lambda$2(Landroidx/compose/runtime/MutableState;)Landroidx/compose/ui/text/input/TextFieldValue; +HSPLandroidx/compose/foundation/text/BasicTextFieldKt;->BasicTextField$lambda$3(Landroidx/compose/runtime/MutableState;Landroidx/compose/ui/text/input/TextFieldValue;)V +HSPLandroidx/compose/foundation/text/BasicTextFieldKt;->BasicTextField$lambda$6(Landroidx/compose/runtime/MutableState;)Ljava/lang/String; +HSPLandroidx/compose/foundation/text/BasicTextFieldKt;->BasicTextField$lambda$7(Landroidx/compose/runtime/MutableState;Ljava/lang/String;)V +HSPLandroidx/compose/foundation/text/BasicTextFieldKt;->BasicTextField(Ljava/lang/String;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;ZZLandroidx/compose/ui/text/TextStyle;Landroidx/compose/foundation/text/KeyboardOptions;Landroidx/compose/foundation/text/KeyboardActions;ZIILandroidx/compose/ui/text/input/VisualTransformation;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/ui/graphics/Brush;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;III)V +HSPLandroidx/compose/foundation/text/BasicTextFieldKt;->access$BasicTextField$lambda$2(Landroidx/compose/runtime/MutableState;)Landroidx/compose/ui/text/input/TextFieldValue; +HSPLandroidx/compose/foundation/text/BasicTextFieldKt;->access$BasicTextField$lambda$3(Landroidx/compose/runtime/MutableState;Landroidx/compose/ui/text/input/TextFieldValue;)V +HSPLandroidx/compose/foundation/text/BasicTextFieldKt;->access$BasicTextField$lambda$6(Landroidx/compose/runtime/MutableState;)Ljava/lang/String; +HSPLandroidx/compose/foundation/text/BasicTextFieldKt;->access$BasicTextField$lambda$7(Landroidx/compose/runtime/MutableState;Ljava/lang/String;)V +Landroidx/compose/foundation/text/BasicTextFieldKt$BasicTextField$1; +HSPLandroidx/compose/foundation/text/BasicTextFieldKt$BasicTextField$1;->()V +HSPLandroidx/compose/foundation/text/BasicTextFieldKt$BasicTextField$1;->()V +HSPLandroidx/compose/foundation/text/BasicTextFieldKt$BasicTextField$1;->invoke(Landroidx/compose/ui/text/TextLayoutResult;)V +HSPLandroidx/compose/foundation/text/BasicTextFieldKt$BasicTextField$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/BasicTextFieldKt$BasicTextField$3$1; +HSPLandroidx/compose/foundation/text/BasicTextFieldKt$BasicTextField$3$1;->(Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/runtime/MutableState;)V +HSPLandroidx/compose/foundation/text/BasicTextFieldKt$BasicTextField$3$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/BasicTextFieldKt$BasicTextField$3$1;->invoke()V +Landroidx/compose/foundation/text/BasicTextFieldKt$BasicTextField$4$1; +HSPLandroidx/compose/foundation/text/BasicTextFieldKt$BasicTextField$4$1;->(Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/MutableState;Landroidx/compose/runtime/MutableState;)V +HSPLandroidx/compose/foundation/text/BasicTextFieldKt$BasicTextField$4$1;->invoke(Landroidx/compose/ui/text/input/TextFieldValue;)V +HSPLandroidx/compose/foundation/text/BasicTextFieldKt$BasicTextField$4$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/BasicTextFieldKt$BasicTextField$5; +HSPLandroidx/compose/foundation/text/BasicTextFieldKt$BasicTextField$5;->(Ljava/lang/String;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;ZZLandroidx/compose/ui/text/TextStyle;Landroidx/compose/foundation/text/KeyboardOptions;Landroidx/compose/foundation/text/KeyboardActions;ZIILandroidx/compose/ui/text/input/VisualTransformation;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/ui/graphics/Brush;Lkotlin/jvm/functions/Function3;III)V +Landroidx/compose/foundation/text/BasicTextKt; +HSPLandroidx/compose/foundation/text/BasicTextKt;->BasicText-4YKlhWE(Ljava/lang/String;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/text/TextStyle;Lkotlin/jvm/functions/Function1;IZIILandroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/foundation/text/BasicTextKt;->BasicText-RWo7tUw(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/text/TextStyle;Lkotlin/jvm/functions/Function1;IZIILjava/util/Map;Landroidx/compose/ui/graphics/ColorProducer;Landroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/foundation/text/BasicTextKt;->BasicText-VhcvRP8(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/text/TextStyle;Lkotlin/jvm/functions/Function1;IZIILjava/util/Map;Landroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/foundation/text/BasicTextKt;->BasicText-VhcvRP8(Ljava/lang/String;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/text/TextStyle;Lkotlin/jvm/functions/Function1;IZIILandroidx/compose/ui/graphics/ColorProducer;Landroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/foundation/text/BasicTextKt;->textModifier-RWo7tUw(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Lkotlin/jvm/functions/Function1;IZIILandroidx/compose/ui/text/font/FontFamily$Resolver;Ljava/util/List;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/text/modifiers/SelectionController;Landroidx/compose/ui/graphics/ColorProducer;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/text/BasicTextKt$BasicText-RWo7tUw$$inlined$Layout$1; +HSPLandroidx/compose/foundation/text/BasicTextKt$BasicText-RWo7tUw$$inlined$Layout$1;->(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/foundation/text/BasicTextKt$BasicText-RWo7tUw$$inlined$Layout$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/text/BasicTextKt$BasicText-VhcvRP8$$inlined$Layout$1; +HSPLandroidx/compose/foundation/text/BasicTextKt$BasicText-VhcvRP8$$inlined$Layout$1;->(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/foundation/text/BasicTextKt$BasicText-VhcvRP8$$inlined$Layout$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt;->CoreTextField$lambda$8(Landroidx/compose/runtime/State;)Z +HSPLandroidx/compose/foundation/text/CoreTextFieldKt;->CoreTextField(Landroidx/compose/ui/text/input/TextFieldValue;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/input/VisualTransformation;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/ui/graphics/Brush;ZIILandroidx/compose/ui/text/input/ImeOptions;Landroidx/compose/foundation/text/KeyboardActions;ZZLkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;III)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt;->CoreTextFieldRootBox(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt;->SelectionToolbarAndHandles(Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;ZLandroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt;->access$CoreTextField$lambda$8(Landroidx/compose/runtime/State;)Z +HSPLandroidx/compose/foundation/text/CoreTextFieldKt;->access$SelectionToolbarAndHandles(Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;ZLandroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt;->access$endInputSession(Landroidx/compose/foundation/text/TextFieldState;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt;->access$notifyFocusedRect(Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/OffsetMapping;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt;->access$startInputSession(Landroidx/compose/ui/text/input/TextInputService;Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/ImeOptions;Landroidx/compose/ui/text/input/OffsetMapping;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt;->bringSelectionEndIntoView(Landroidx/compose/foundation/relocation/BringIntoViewRequester;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/foundation/text/TextDelegate;Landroidx/compose/ui/text/TextLayoutResult;Landroidx/compose/ui/text/input/OffsetMapping;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt;->endInputSession(Landroidx/compose/foundation/text/TextFieldState;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt;->notifyFocusedRect(Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/OffsetMapping;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt;->previewKeyEventToDeselectOnBack(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt;->startInputSession(Landroidx/compose/ui/text/input/TextInputService;Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/ImeOptions;Landroidx/compose/ui/text/input/OffsetMapping;)V +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$2; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$2;->(Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/runtime/State;Landroidx/compose/ui/text/input/TextInputService;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/ImeOptions;Landroidx/compose/ui/text/input/OffsetMapping;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$2$1; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$2$1;->(Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$2$1;->invoke()Ljava/lang/Boolean; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$2$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$2$2; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$2$2;->(Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/text/input/TextInputService;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/ImeOptions;Landroidx/compose/ui/text/input/OffsetMapping;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$2$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$2$2;->emit(ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$3; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$3;->(Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$3;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$3$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$3$invoke$$inlined$onDispose$1;->(Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$3$invoke$$inlined$onDispose$1;->dispose()V +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$4; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$4;->(Landroidx/compose/ui/text/input/TextInputService;Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/ImeOptions;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$4;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$4;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$4$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$4$invoke$$inlined$onDispose$1;->()V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$4$invoke$$inlined$onDispose$1;->dispose()V +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5;->(Lkotlin/jvm/functions/Function3;ILandroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/text/TextStyle;IILandroidx/compose/foundation/text/TextFieldScrollerPosition;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/VisualTransformation;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/relocation/BringIntoViewRequester;Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;ZZLkotlin/jvm/functions/Function1;Landroidx/compose/ui/text/input/OffsetMapping;Landroidx/compose/ui/unit/Density;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1;->(Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/text/TextStyle;IILandroidx/compose/foundation/text/TextFieldScrollerPosition;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/VisualTransformation;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/relocation/BringIntoViewRequester;Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;ZZLkotlin/jvm/functions/Function1;Landroidx/compose/ui/text/input/OffsetMapping;Landroidx/compose/ui/unit/Density;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$1; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$1;->(Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;Landroidx/compose/foundation/text/TextFieldState;ZZLkotlin/jvm/functions/Function1;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/OffsetMapping;Landroidx/compose/ui/unit/Density;I)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$1$2; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$1$2;->(Landroidx/compose/foundation/text/TextFieldState;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/OffsetMapping;Landroidx/compose/ui/unit/Density;I)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$1$2;->maxIntrinsicWidth(Landroidx/compose/ui/layout/IntrinsicMeasureScope;Ljava/util/List;I)I +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$1$2;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$1$2$measure$2; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$1$2$measure$2;->()V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$1$2$measure$2;->()V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$1$2$measure$2;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$1$2$measure$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$coreTextFieldModifier$1; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$coreTextFieldModifier$1;->(Landroidx/compose/foundation/text/TextFieldState;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$coreTextFieldModifier$1;->invoke()Landroidx/compose/foundation/text/TextLayoutResultProxy; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$5$1$coreTextFieldModifier$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$6; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$6;->(Landroidx/compose/ui/text/input/TextFieldValue;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/input/VisualTransformation;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/ui/graphics/Brush;ZIILandroidx/compose/ui/text/input/ImeOptions;Landroidx/compose/foundation/text/KeyboardActions;ZZLkotlin/jvm/functions/Function3;III)V +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$decorationBoxModifier$1; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$decorationBoxModifier$1;->(Landroidx/compose/foundation/text/TextFieldState;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$decorationBoxModifier$1;->invoke(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$decorationBoxModifier$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$drawModifier$1; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$drawModifier$1;->(Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/OffsetMapping;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$drawModifier$1;->invoke(Landroidx/compose/ui/graphics/drawscope/DrawScope;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$drawModifier$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$focusModifier$1; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$focusModifier$1;->(Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/text/input/TextInputService;ZZLandroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/ImeOptions;Landroidx/compose/ui/text/input/OffsetMapping;Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;Lkotlinx/coroutines/CoroutineScope;Landroidx/compose/foundation/relocation/BringIntoViewRequester;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$focusModifier$1;->invoke(Landroidx/compose/ui/focus/FocusState;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$focusModifier$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$focusModifier$1$1$1; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$focusModifier$1$1$1;->(Landroidx/compose/foundation/relocation/BringIntoViewRequester;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/foundation/text/TextLayoutResultProxy;Landroidx/compose/ui/text/input/OffsetMapping;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$focusModifier$1$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$focusModifier$1$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$onPositionedModifier$1; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$onPositionedModifier$1;->(Landroidx/compose/foundation/text/TextFieldState;ZLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/OffsetMapping;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$onPositionedModifier$1;->invoke(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$onPositionedModifier$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$pointerModifier$1; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$pointerModifier$1;->(Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/focus/FocusRequester;ZLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;Landroidx/compose/ui/text/input/OffsetMapping;)V +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$scrollerPosition$1$1; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$scrollerPosition$1$1;->(Landroidx/compose/foundation/gestures/Orientation;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$scrollerPosition$1$1;->invoke()Landroidx/compose/foundation/text/TextFieldScrollerPosition; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$scrollerPosition$1$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1;->(Landroidx/compose/ui/text/input/ImeOptions;Landroidx/compose/ui/text/input/TransformedText;Landroidx/compose/ui/text/input/TextFieldValue;ZZZLandroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/text/input/OffsetMapping;Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;Landroidx/compose/ui/focus/FocusRequester;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$1; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$1;->(Landroidx/compose/foundation/text/TextFieldState;)V +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$10; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$10;->(Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;)V +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$2; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$2;->(ZZLandroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$2;->invoke(Landroidx/compose/ui/text/AnnotatedString;)Ljava/lang/Boolean; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$3; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$3;->(ZZLandroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Landroidx/compose/ui/text/input/TextFieldValue;)V +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$4; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$4;->(Landroidx/compose/ui/text/input/OffsetMapping;ZLandroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;Landroidx/compose/foundation/text/TextFieldState;)V +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$5; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$5;->(Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/text/input/ImeOptions;)V +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$6; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$6;->(Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/focus/FocusRequester;Z)V +Landroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$7; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$CoreTextField$semanticsModifier$1$7;->(Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;)V +Landroidx/compose/foundation/text/CoreTextFieldKt$previewKeyEventToDeselectOnBack$1; +HSPLandroidx/compose/foundation/text/CoreTextFieldKt$previewKeyEventToDeselectOnBack$1;->(Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;)V +Landroidx/compose/foundation/text/DeadKeyCombiner; +HSPLandroidx/compose/foundation/text/DeadKeyCombiner;->()V +Landroidx/compose/foundation/text/EmptyMeasurePolicy; +HSPLandroidx/compose/foundation/text/EmptyMeasurePolicy;->()V +HSPLandroidx/compose/foundation/text/EmptyMeasurePolicy;->()V +HSPLandroidx/compose/foundation/text/EmptyMeasurePolicy;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/text/EmptyMeasurePolicy$placementBlock$1; +HSPLandroidx/compose/foundation/text/EmptyMeasurePolicy$placementBlock$1;->()V +HSPLandroidx/compose/foundation/text/EmptyMeasurePolicy$placementBlock$1;->()V +HSPLandroidx/compose/foundation/text/EmptyMeasurePolicy$placementBlock$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/text/EmptyMeasurePolicy$placementBlock$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/FixedMotionDurationScale; +HSPLandroidx/compose/foundation/text/FixedMotionDurationScale;->()V +HSPLandroidx/compose/foundation/text/FixedMotionDurationScale;->()V +HSPLandroidx/compose/foundation/text/FixedMotionDurationScale;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/FixedMotionDurationScale;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLandroidx/compose/foundation/text/FixedMotionDurationScale;->getScaleFactor()F +Landroidx/compose/foundation/text/Handle; +Landroidx/compose/foundation/text/HandleState; +HSPLandroidx/compose/foundation/text/HandleState;->$values()[Landroidx/compose/foundation/text/HandleState; +HSPLandroidx/compose/foundation/text/HandleState;->()V +HSPLandroidx/compose/foundation/text/HandleState;->(Ljava/lang/String;I)V +Landroidx/compose/foundation/text/HeightInLinesModifierKt; +HSPLandroidx/compose/foundation/text/HeightInLinesModifierKt;->heightInLines(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/text/TextStyle;II)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/text/HeightInLinesModifierKt;->validateMinMaxLines(II)V +Landroidx/compose/foundation/text/HeightInLinesModifierKt$heightInLines$2; +HSPLandroidx/compose/foundation/text/HeightInLinesModifierKt$heightInLines$2;->(IILandroidx/compose/ui/text/TextStyle;)V +HSPLandroidx/compose/foundation/text/HeightInLinesModifierKt$heightInLines$2;->invoke$lambda$2(Landroidx/compose/runtime/State;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/HeightInLinesModifierKt$heightInLines$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/text/HeightInLinesModifierKt$heightInLines$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/HorizontalScrollLayoutModifier; +HSPLandroidx/compose/foundation/text/HorizontalScrollLayoutModifier;->(Landroidx/compose/foundation/text/TextFieldScrollerPosition;ILandroidx/compose/ui/text/input/TransformedText;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/foundation/text/HorizontalScrollLayoutModifier;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/text/HorizontalScrollLayoutModifier;->getCursorOffset()I +HSPLandroidx/compose/foundation/text/HorizontalScrollLayoutModifier;->getScrollerPosition()Landroidx/compose/foundation/text/TextFieldScrollerPosition; +HSPLandroidx/compose/foundation/text/HorizontalScrollLayoutModifier;->getTextLayoutResultProvider()Lkotlin/jvm/functions/Function0; +HSPLandroidx/compose/foundation/text/HorizontalScrollLayoutModifier;->getTransformedText()Landroidx/compose/ui/text/input/TransformedText; +HSPLandroidx/compose/foundation/text/HorizontalScrollLayoutModifier;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/text/HorizontalScrollLayoutModifier$measure$1; +HSPLandroidx/compose/foundation/text/HorizontalScrollLayoutModifier$measure$1;->(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/foundation/text/HorizontalScrollLayoutModifier;Landroidx/compose/ui/layout/Placeable;I)V +HSPLandroidx/compose/foundation/text/HorizontalScrollLayoutModifier$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/text/HorizontalScrollLayoutModifier$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/KeyMapping; +Landroidx/compose/foundation/text/KeyMapping_androidKt; +HSPLandroidx/compose/foundation/text/KeyMapping_androidKt;->()V +HSPLandroidx/compose/foundation/text/KeyMapping_androidKt;->getPlatformDefaultKeyMapping()Landroidx/compose/foundation/text/KeyMapping; +Landroidx/compose/foundation/text/KeyMapping_androidKt$platformDefaultKeyMapping$1; +HSPLandroidx/compose/foundation/text/KeyMapping_androidKt$platformDefaultKeyMapping$1;->()V +Landroidx/compose/foundation/text/KeyboardActionRunner; +HSPLandroidx/compose/foundation/text/KeyboardActionRunner;->()V +HSPLandroidx/compose/foundation/text/KeyboardActionRunner;->setFocusManager(Landroidx/compose/ui/focus/FocusManager;)V +HSPLandroidx/compose/foundation/text/KeyboardActionRunner;->setInputSession(Landroidx/compose/ui/text/input/TextInputSession;)V +HSPLandroidx/compose/foundation/text/KeyboardActionRunner;->setKeyboardActions(Landroidx/compose/foundation/text/KeyboardActions;)V +Landroidx/compose/foundation/text/KeyboardActionScope; +Landroidx/compose/foundation/text/KeyboardActions; +HSPLandroidx/compose/foundation/text/KeyboardActions;->()V +HSPLandroidx/compose/foundation/text/KeyboardActions;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/text/KeyboardActions;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/text/KeyboardActions;->equals(Ljava/lang/Object;)Z +Landroidx/compose/foundation/text/KeyboardActions$Companion; +HSPLandroidx/compose/foundation/text/KeyboardActions$Companion;->()V +HSPLandroidx/compose/foundation/text/KeyboardActions$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/foundation/text/KeyboardOptions; +HSPLandroidx/compose/foundation/text/KeyboardOptions;->()V +HSPLandroidx/compose/foundation/text/KeyboardOptions;->(IZII)V +HSPLandroidx/compose/foundation/text/KeyboardOptions;->(IZIIILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/text/KeyboardOptions;->(IZIILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/text/KeyboardOptions;->copy-3m2b7yw$default(Landroidx/compose/foundation/text/KeyboardOptions;IZIIILjava/lang/Object;)Landroidx/compose/foundation/text/KeyboardOptions; +HSPLandroidx/compose/foundation/text/KeyboardOptions;->copy-3m2b7yw(IZII)Landroidx/compose/foundation/text/KeyboardOptions; +HSPLandroidx/compose/foundation/text/KeyboardOptions;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/text/KeyboardOptions;->toImeOptions$foundation_release(Z)Landroidx/compose/ui/text/input/ImeOptions; +Landroidx/compose/foundation/text/KeyboardOptions$Companion; +HSPLandroidx/compose/foundation/text/KeyboardOptions$Companion;->()V +HSPLandroidx/compose/foundation/text/KeyboardOptions$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/foundation/text/TextDelegate; +HSPLandroidx/compose/foundation/text/TextDelegate;->()V +HSPLandroidx/compose/foundation/text/TextDelegate;->(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;IIZILandroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;Ljava/util/List;)V +HSPLandroidx/compose/foundation/text/TextDelegate;->(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;IIZILandroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/text/TextDelegate;->(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;IIZILandroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;Ljava/util/List;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/text/TextDelegate;->getDensity()Landroidx/compose/ui/unit/Density; +HSPLandroidx/compose/foundation/text/TextDelegate;->getFontFamilyResolver()Landroidx/compose/ui/text/font/FontFamily$Resolver; +HSPLandroidx/compose/foundation/text/TextDelegate;->getMaxIntrinsicWidth()I +HSPLandroidx/compose/foundation/text/TextDelegate;->getMaxLines()I +HSPLandroidx/compose/foundation/text/TextDelegate;->getMinLines()I +HSPLandroidx/compose/foundation/text/TextDelegate;->getNonNullIntrinsics()Landroidx/compose/ui/text/MultiParagraphIntrinsics; +HSPLandroidx/compose/foundation/text/TextDelegate;->getOverflow-gIe3tQ8()I +HSPLandroidx/compose/foundation/text/TextDelegate;->getPlaceholders()Ljava/util/List; +HSPLandroidx/compose/foundation/text/TextDelegate;->getSoftWrap()Z +HSPLandroidx/compose/foundation/text/TextDelegate;->getStyle()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/foundation/text/TextDelegate;->getText()Landroidx/compose/ui/text/AnnotatedString; +HSPLandroidx/compose/foundation/text/TextDelegate;->layout-NN6Ew-U(JLandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/text/TextLayoutResult;)Landroidx/compose/ui/text/TextLayoutResult; +HSPLandroidx/compose/foundation/text/TextDelegate;->layoutIntrinsics(Landroidx/compose/ui/unit/LayoutDirection;)V +HSPLandroidx/compose/foundation/text/TextDelegate;->layoutText-K40F9xA(JLandroidx/compose/ui/unit/LayoutDirection;)Landroidx/compose/ui/text/MultiParagraph; +Landroidx/compose/foundation/text/TextDelegate$Companion; +HSPLandroidx/compose/foundation/text/TextDelegate$Companion;->()V +HSPLandroidx/compose/foundation/text/TextDelegate$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/foundation/text/TextDelegateKt; +HSPLandroidx/compose/foundation/text/TextDelegateKt;->ceilToIntPx(F)I +HSPLandroidx/compose/foundation/text/TextDelegateKt;->updateTextDelegate-rm0N8CA$default(Landroidx/compose/foundation/text/TextDelegate;Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;ZIIILjava/util/List;ILjava/lang/Object;)Landroidx/compose/foundation/text/TextDelegate; +HSPLandroidx/compose/foundation/text/TextDelegateKt;->updateTextDelegate-rm0N8CA(Landroidx/compose/foundation/text/TextDelegate;Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;ZIIILjava/util/List;)Landroidx/compose/foundation/text/TextDelegate; +Landroidx/compose/foundation/text/TextDragObserver; +Landroidx/compose/foundation/text/TextFieldCursorKt; +HSPLandroidx/compose/foundation/text/TextFieldCursorKt;->()V +HSPLandroidx/compose/foundation/text/TextFieldCursorKt;->access$getCursorAnimationSpec$p()Landroidx/compose/animation/core/AnimationSpec; +HSPLandroidx/compose/foundation/text/TextFieldCursorKt;->cursor(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/OffsetMapping;Landroidx/compose/ui/graphics/Brush;Z)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/text/TextFieldCursorKt;->getDefaultCursorThickness()F +Landroidx/compose/foundation/text/TextFieldCursorKt$cursor$1; +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursor$1;->(Landroidx/compose/ui/graphics/Brush;Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/OffsetMapping;)V +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursor$1;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursor$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/TextFieldCursorKt$cursor$1$1; +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursor$1$1;->(Landroidx/compose/animation/core/Animatable;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursor$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursor$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/TextFieldCursorKt$cursor$1$1$1; +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursor$1$1$1;->(Landroidx/compose/animation/core/Animatable;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursor$1$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursor$1$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursor$1$1$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursor$1$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/TextFieldCursorKt$cursor$1$2; +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursor$1$2;->(Landroidx/compose/animation/core/Animatable;Landroidx/compose/ui/text/input/OffsetMapping;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/graphics/Brush;)V +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursor$1$2;->invoke(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursor$1$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/TextFieldCursorKt$cursorAnimationSpec$1; +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursorAnimationSpec$1;->()V +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursorAnimationSpec$1;->()V +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursorAnimationSpec$1;->invoke(Landroidx/compose/animation/core/KeyframesSpec$KeyframesSpecConfig;)V +HSPLandroidx/compose/foundation/text/TextFieldCursorKt$cursorAnimationSpec$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/TextFieldDelegate; +HSPLandroidx/compose/foundation/text/TextFieldDelegate;->()V +Landroidx/compose/foundation/text/TextFieldDelegate$Companion; +HSPLandroidx/compose/foundation/text/TextFieldDelegate$Companion;->()V +HSPLandroidx/compose/foundation/text/TextFieldDelegate$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/text/TextFieldDelegate$Companion;->draw$foundation_release(Landroidx/compose/ui/graphics/Canvas;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/OffsetMapping;Landroidx/compose/ui/text/TextLayoutResult;Landroidx/compose/ui/graphics/Paint;)V +HSPLandroidx/compose/foundation/text/TextFieldDelegate$Companion;->layout-_EkL_-Y$foundation_release(Landroidx/compose/foundation/text/TextDelegate;JLandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/text/TextLayoutResult;)Lkotlin/Triple; +HSPLandroidx/compose/foundation/text/TextFieldDelegate$Companion;->notifyFocusedRect$foundation_release(Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/foundation/text/TextDelegate;Landroidx/compose/ui/text/TextLayoutResult;Landroidx/compose/ui/layout/LayoutCoordinates;Landroidx/compose/ui/text/input/TextInputSession;ZLandroidx/compose/ui/text/input/OffsetMapping;)V +HSPLandroidx/compose/foundation/text/TextFieldDelegate$Companion;->onBlur$foundation_release(Landroidx/compose/ui/text/input/TextInputSession;Landroidx/compose/ui/text/input/EditProcessor;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/text/TextFieldDelegate$Companion;->onEditCommand$foundation_release(Ljava/util/List;Landroidx/compose/ui/text/input/EditProcessor;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/text/input/TextInputSession;)V +HSPLandroidx/compose/foundation/text/TextFieldDelegate$Companion;->onFocus$foundation_release(Landroidx/compose/ui/text/input/TextInputService;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/EditProcessor;Landroidx/compose/ui/text/input/ImeOptions;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/text/input/TextInputSession; +HSPLandroidx/compose/foundation/text/TextFieldDelegate$Companion;->restartInput$foundation_release(Landroidx/compose/ui/text/input/TextInputService;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/EditProcessor;Landroidx/compose/ui/text/input/ImeOptions;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/text/input/TextInputSession; +Landroidx/compose/foundation/text/TextFieldDelegate$Companion$restartInput$1; +HSPLandroidx/compose/foundation/text/TextFieldDelegate$Companion$restartInput$1;->(Landroidx/compose/ui/text/input/EditProcessor;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/internal/Ref$ObjectRef;)V +Landroidx/compose/foundation/text/TextFieldDelegateKt; +HSPLandroidx/compose/foundation/text/TextFieldDelegateKt;->()V +HSPLandroidx/compose/foundation/text/TextFieldDelegateKt;->computeSizeForDefaultText$default(Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;Ljava/lang/String;IILjava/lang/Object;)J +HSPLandroidx/compose/foundation/text/TextFieldDelegateKt;->computeSizeForDefaultText(Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;Ljava/lang/String;I)J +HSPLandroidx/compose/foundation/text/TextFieldDelegateKt;->getEmptyTextReplacement()Ljava/lang/String; +Landroidx/compose/foundation/text/TextFieldFocusModifier_androidKt; +HSPLandroidx/compose/foundation/text/TextFieldFocusModifier_androidKt;->interceptDPadAndMoveFocus(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/ui/focus/FocusManager;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/text/TextFieldFocusModifier_androidKt$interceptDPadAndMoveFocus$1; +HSPLandroidx/compose/foundation/text/TextFieldFocusModifier_androidKt$interceptDPadAndMoveFocus$1;->(Landroidx/compose/ui/focus/FocusManager;Landroidx/compose/foundation/text/TextFieldState;)V +Landroidx/compose/foundation/text/TextFieldGestureModifiersKt; +HSPLandroidx/compose/foundation/text/TextFieldGestureModifiersKt;->longPressDragGestureFilter(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/text/TextDragObserver;Z)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/text/TextFieldGestureModifiersKt;->textFieldFocusModifier(Landroidx/compose/ui/Modifier;ZLandroidx/compose/ui/focus/FocusRequester;Landroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/text/TextFieldGestureModifiersKt$longPressDragGestureFilter$1; +HSPLandroidx/compose/foundation/text/TextFieldGestureModifiersKt$longPressDragGestureFilter$1;->(Landroidx/compose/foundation/text/TextDragObserver;Lkotlin/coroutines/Continuation;)V +Landroidx/compose/foundation/text/TextFieldKeyInput; +HSPLandroidx/compose/foundation/text/TextFieldKeyInput;->(Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;Landroidx/compose/ui/text/input/TextFieldValue;ZZLandroidx/compose/foundation/text/selection/TextPreparedSelectionState;Landroidx/compose/ui/text/input/OffsetMapping;Landroidx/compose/foundation/text/UndoManager;Landroidx/compose/foundation/text/DeadKeyCombiner;Landroidx/compose/foundation/text/KeyMapping;Lkotlin/jvm/functions/Function1;I)V +HSPLandroidx/compose/foundation/text/TextFieldKeyInput;->(Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;Landroidx/compose/ui/text/input/TextFieldValue;ZZLandroidx/compose/foundation/text/selection/TextPreparedSelectionState;Landroidx/compose/ui/text/input/OffsetMapping;Landroidx/compose/foundation/text/UndoManager;Landroidx/compose/foundation/text/DeadKeyCombiner;Landroidx/compose/foundation/text/KeyMapping;Lkotlin/jvm/functions/Function1;IILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/text/TextFieldKeyInput;->(Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;Landroidx/compose/ui/text/input/TextFieldValue;ZZLandroidx/compose/foundation/text/selection/TextPreparedSelectionState;Landroidx/compose/ui/text/input/OffsetMapping;Landroidx/compose/foundation/text/UndoManager;Landroidx/compose/foundation/text/DeadKeyCombiner;Landroidx/compose/foundation/text/KeyMapping;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/foundation/text/TextFieldKeyInputKt; +HSPLandroidx/compose/foundation/text/TextFieldKeyInputKt;->textFieldKeyInput-2WJ9YEU(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;Landroidx/compose/ui/text/input/TextFieldValue;Lkotlin/jvm/functions/Function1;ZZLandroidx/compose/ui/text/input/OffsetMapping;Landroidx/compose/foundation/text/UndoManager;I)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/text/TextFieldKeyInputKt$textFieldKeyInput$2; +HSPLandroidx/compose/foundation/text/TextFieldKeyInputKt$textFieldKeyInput$2;->(Landroidx/compose/foundation/text/TextFieldState;Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;Landroidx/compose/ui/text/input/TextFieldValue;ZZLandroidx/compose/ui/text/input/OffsetMapping;Landroidx/compose/foundation/text/UndoManager;Lkotlin/jvm/functions/Function1;I)V +HSPLandroidx/compose/foundation/text/TextFieldKeyInputKt$textFieldKeyInput$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/text/TextFieldKeyInputKt$textFieldKeyInput$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/TextFieldKeyInputKt$textFieldKeyInput$2$1; +HSPLandroidx/compose/foundation/text/TextFieldKeyInputKt$textFieldKeyInput$2$1;->(Ljava/lang/Object;)V +Landroidx/compose/foundation/text/TextFieldPressGestureFilterKt; +HSPLandroidx/compose/foundation/text/TextFieldPressGestureFilterKt;->tapPressTextFieldModifier(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/interaction/MutableInteractionSource;ZLkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/text/TextFieldPressGestureFilterKt$tapPressTextFieldModifier$1; +HSPLandroidx/compose/foundation/text/TextFieldPressGestureFilterKt$tapPressTextFieldModifier$1;->(Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/interaction/MutableInteractionSource;)V +HSPLandroidx/compose/foundation/text/TextFieldPressGestureFilterKt$tapPressTextFieldModifier$1;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/text/TextFieldPressGestureFilterKt$tapPressTextFieldModifier$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/TextFieldPressGestureFilterKt$tapPressTextFieldModifier$1$1$1; +HSPLandroidx/compose/foundation/text/TextFieldPressGestureFilterKt$tapPressTextFieldModifier$1$1$1;->(Landroidx/compose/runtime/MutableState;Landroidx/compose/foundation/interaction/MutableInteractionSource;)V +HSPLandroidx/compose/foundation/text/TextFieldPressGestureFilterKt$tapPressTextFieldModifier$1$1$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/foundation/text/TextFieldPressGestureFilterKt$tapPressTextFieldModifier$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/TextFieldPressGestureFilterKt$tapPressTextFieldModifier$1$1$1$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/foundation/text/TextFieldPressGestureFilterKt$tapPressTextFieldModifier$1$1$1$invoke$$inlined$onDispose$1;->(Landroidx/compose/runtime/MutableState;Landroidx/compose/foundation/interaction/MutableInteractionSource;)V +HSPLandroidx/compose/foundation/text/TextFieldPressGestureFilterKt$tapPressTextFieldModifier$1$1$1$invoke$$inlined$onDispose$1;->dispose()V +Landroidx/compose/foundation/text/TextFieldPressGestureFilterKt$tapPressTextFieldModifier$1$2; +HSPLandroidx/compose/foundation/text/TextFieldPressGestureFilterKt$tapPressTextFieldModifier$1$2;->(Lkotlinx/coroutines/CoroutineScope;Landroidx/compose/runtime/MutableState;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/runtime/State;Lkotlin/coroutines/Continuation;)V +Landroidx/compose/foundation/text/TextFieldScrollKt; +HSPLandroidx/compose/foundation/text/TextFieldScrollKt;->access$getCursorRectInScroller(Landroidx/compose/ui/unit/Density;ILandroidx/compose/ui/text/input/TransformedText;Landroidx/compose/ui/text/TextLayoutResult;ZI)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/foundation/text/TextFieldScrollKt;->getCursorRectInScroller(Landroidx/compose/ui/unit/Density;ILandroidx/compose/ui/text/input/TransformedText;Landroidx/compose/ui/text/TextLayoutResult;ZI)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/foundation/text/TextFieldScrollKt;->textFieldScroll(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/text/TextFieldScrollerPosition;Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/VisualTransformation;Lkotlin/jvm/functions/Function0;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/text/TextFieldScrollKt;->textFieldScrollable(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/text/TextFieldScrollerPosition;Landroidx/compose/foundation/interaction/MutableInteractionSource;Z)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/text/TextFieldScrollKt$WhenMappings; +HSPLandroidx/compose/foundation/text/TextFieldScrollKt$WhenMappings;->()V +Landroidx/compose/foundation/text/TextFieldScrollKt$textFieldScrollable$2; +HSPLandroidx/compose/foundation/text/TextFieldScrollKt$textFieldScrollable$2;->(Landroidx/compose/foundation/text/TextFieldScrollerPosition;ZLandroidx/compose/foundation/interaction/MutableInteractionSource;)V +HSPLandroidx/compose/foundation/text/TextFieldScrollKt$textFieldScrollable$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/text/TextFieldScrollKt$textFieldScrollable$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/TextFieldScrollKt$textFieldScrollable$2$scrollableState$1$1; +HSPLandroidx/compose/foundation/text/TextFieldScrollKt$textFieldScrollable$2$scrollableState$1$1;->(Landroidx/compose/foundation/text/TextFieldScrollerPosition;)V +Landroidx/compose/foundation/text/TextFieldScrollKt$textFieldScrollable$2$wrappedScrollableState$1$1; +HSPLandroidx/compose/foundation/text/TextFieldScrollKt$textFieldScrollable$2$wrappedScrollableState$1$1;->(Landroidx/compose/foundation/gestures/ScrollableState;Landroidx/compose/foundation/text/TextFieldScrollerPosition;)V +Landroidx/compose/foundation/text/TextFieldScrollKt$textFieldScrollable$2$wrappedScrollableState$1$1$canScrollBackward$2; +HSPLandroidx/compose/foundation/text/TextFieldScrollKt$textFieldScrollable$2$wrappedScrollableState$1$1$canScrollBackward$2;->(Landroidx/compose/foundation/text/TextFieldScrollerPosition;)V +Landroidx/compose/foundation/text/TextFieldScrollKt$textFieldScrollable$2$wrappedScrollableState$1$1$canScrollForward$2; +HSPLandroidx/compose/foundation/text/TextFieldScrollKt$textFieldScrollable$2$wrappedScrollableState$1$1$canScrollForward$2;->(Landroidx/compose/foundation/text/TextFieldScrollerPosition;)V +Landroidx/compose/foundation/text/TextFieldScrollerPosition; +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition;->()V +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition;->(Landroidx/compose/foundation/gestures/Orientation;F)V +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition;->(Landroidx/compose/foundation/gestures/Orientation;FILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition;->access$getSaver$cp()Landroidx/compose/runtime/saveable/Saver; +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition;->coerceOffset$foundation_release(FFI)V +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition;->getMaximum()F +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition;->getOffset()F +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition;->getOffsetToFollow-5zc-tL8(J)I +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition;->getOrientation()Landroidx/compose/foundation/gestures/Orientation; +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition;->setMaximum(F)V +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition;->setOffset(F)V +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition;->setPreviousSelection-5zc-tL8(J)V +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition;->update(Landroidx/compose/foundation/gestures/Orientation;Landroidx/compose/ui/geometry/Rect;II)V +Landroidx/compose/foundation/text/TextFieldScrollerPosition$Companion; +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition$Companion;->()V +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition$Companion;->getSaver()Landroidx/compose/runtime/saveable/Saver; +Landroidx/compose/foundation/text/TextFieldScrollerPosition$Companion$Saver$1; +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition$Companion$Saver$1;->()V +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition$Companion$Saver$1;->()V +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition$Companion$Saver$1;->invoke(Landroidx/compose/runtime/saveable/SaverScope;Landroidx/compose/foundation/text/TextFieldScrollerPosition;)Ljava/util/List; +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition$Companion$Saver$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/TextFieldScrollerPosition$Companion$Saver$2; +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition$Companion$Saver$2;->()V +HSPLandroidx/compose/foundation/text/TextFieldScrollerPosition$Companion$Saver$2;->()V +Landroidx/compose/foundation/text/TextFieldSize; +HSPLandroidx/compose/foundation/text/TextFieldSize;->(Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;Landroidx/compose/ui/text/TextStyle;Ljava/lang/Object;)V +HSPLandroidx/compose/foundation/text/TextFieldSize;->computeMinSize-YbymL2g()J +HSPLandroidx/compose/foundation/text/TextFieldSize;->getMinSize-YbymL2g()J +HSPLandroidx/compose/foundation/text/TextFieldSize;->update(Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;Landroidx/compose/ui/text/TextStyle;Ljava/lang/Object;)V +Landroidx/compose/foundation/text/TextFieldSizeKt; +HSPLandroidx/compose/foundation/text/TextFieldSizeKt;->textFieldMinSize(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/text/TextStyle;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/text/TextFieldSizeKt$textFieldMinSize$1; +HSPLandroidx/compose/foundation/text/TextFieldSizeKt$textFieldMinSize$1;->(Landroidx/compose/ui/text/TextStyle;)V +HSPLandroidx/compose/foundation/text/TextFieldSizeKt$textFieldMinSize$1;->access$invoke$lambda$2(Landroidx/compose/runtime/State;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/TextFieldSizeKt$textFieldMinSize$1;->invoke$lambda$2(Landroidx/compose/runtime/State;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/TextFieldSizeKt$textFieldMinSize$1;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/text/TextFieldSizeKt$textFieldMinSize$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/TextFieldSizeKt$textFieldMinSize$1$1; +HSPLandroidx/compose/foundation/text/TextFieldSizeKt$textFieldMinSize$1$1;->(Landroidx/compose/foundation/text/TextFieldSize;)V +HSPLandroidx/compose/foundation/text/TextFieldSizeKt$textFieldMinSize$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/TextFieldSizeKt$textFieldMinSize$1$1;->invoke-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/text/TextFieldSizeKt$textFieldMinSize$1$1$1; +HSPLandroidx/compose/foundation/text/TextFieldSizeKt$textFieldMinSize$1$1$1;->(Landroidx/compose/ui/layout/Placeable;)V +HSPLandroidx/compose/foundation/text/TextFieldSizeKt$textFieldMinSize$1$1$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/text/TextFieldSizeKt$textFieldMinSize$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/TextFieldState; +HSPLandroidx/compose/foundation/text/TextFieldState;->(Landroidx/compose/foundation/text/TextDelegate;Landroidx/compose/runtime/RecomposeScope;)V +HSPLandroidx/compose/foundation/text/TextFieldState;->access$getOnValueChangeOriginal$p(Landroidx/compose/foundation/text/TextFieldState;)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/foundation/text/TextFieldState;->getHandleState()Landroidx/compose/foundation/text/HandleState; +HSPLandroidx/compose/foundation/text/TextFieldState;->getHasFocus()Z +HSPLandroidx/compose/foundation/text/TextFieldState;->getInputSession()Landroidx/compose/ui/text/input/TextInputSession; +HSPLandroidx/compose/foundation/text/TextFieldState;->getLayoutCoordinates()Landroidx/compose/ui/layout/LayoutCoordinates; +HSPLandroidx/compose/foundation/text/TextFieldState;->getLayoutResult()Landroidx/compose/foundation/text/TextLayoutResultProxy; +HSPLandroidx/compose/foundation/text/TextFieldState;->getMinHeightForSingleLineField-D9Ej5fM()F +HSPLandroidx/compose/foundation/text/TextFieldState;->getOnImeActionPerformed()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/foundation/text/TextFieldState;->getOnValueChange()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/foundation/text/TextFieldState;->getProcessor()Landroidx/compose/ui/text/input/EditProcessor; +HSPLandroidx/compose/foundation/text/TextFieldState;->getRecomposeScope()Landroidx/compose/runtime/RecomposeScope; +HSPLandroidx/compose/foundation/text/TextFieldState;->getSelectionPaint()Landroidx/compose/ui/graphics/Paint; +HSPLandroidx/compose/foundation/text/TextFieldState;->getTextDelegate()Landroidx/compose/foundation/text/TextDelegate; +HSPLandroidx/compose/foundation/text/TextFieldState;->getUntransformedText()Landroidx/compose/ui/text/AnnotatedString; +HSPLandroidx/compose/foundation/text/TextFieldState;->setHandleState(Landroidx/compose/foundation/text/HandleState;)V +HSPLandroidx/compose/foundation/text/TextFieldState;->setHasFocus(Z)V +HSPLandroidx/compose/foundation/text/TextFieldState;->setInputSession(Landroidx/compose/ui/text/input/TextInputSession;)V +HSPLandroidx/compose/foundation/text/TextFieldState;->setLayoutCoordinates(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/foundation/text/TextFieldState;->setLayoutResult(Landroidx/compose/foundation/text/TextLayoutResultProxy;)V +HSPLandroidx/compose/foundation/text/TextFieldState;->setMinHeightForSingleLineField-0680j_4(F)V +HSPLandroidx/compose/foundation/text/TextFieldState;->update-fnh65Uc(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;ZLandroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/text/KeyboardActions;Landroidx/compose/ui/focus/FocusManager;J)V +Landroidx/compose/foundation/text/TextFieldState$onImeActionPerformed$1; +HSPLandroidx/compose/foundation/text/TextFieldState$onImeActionPerformed$1;->(Landroidx/compose/foundation/text/TextFieldState;)V +Landroidx/compose/foundation/text/TextFieldState$onValueChange$1; +HSPLandroidx/compose/foundation/text/TextFieldState$onValueChange$1;->(Landroidx/compose/foundation/text/TextFieldState;)V +HSPLandroidx/compose/foundation/text/TextFieldState$onValueChange$1;->invoke(Landroidx/compose/ui/text/input/TextFieldValue;)V +HSPLandroidx/compose/foundation/text/TextFieldState$onValueChange$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/TextFieldState$onValueChangeOriginal$1; +HSPLandroidx/compose/foundation/text/TextFieldState$onValueChangeOriginal$1;->()V +HSPLandroidx/compose/foundation/text/TextFieldState$onValueChangeOriginal$1;->()V +Landroidx/compose/foundation/text/TextLayoutHelperKt; +HSPLandroidx/compose/foundation/text/TextLayoutHelperKt;->canReuse-7_7YC6M(Landroidx/compose/ui/text/TextLayoutResult;Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Ljava/util/List;IZILandroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/text/font/FontFamily$Resolver;J)Z +Landroidx/compose/foundation/text/TextLayoutResultProxy; +HSPLandroidx/compose/foundation/text/TextLayoutResultProxy;->(Landroidx/compose/ui/text/TextLayoutResult;)V +HSPLandroidx/compose/foundation/text/TextLayoutResultProxy;->getValue()Landroidx/compose/ui/text/TextLayoutResult; +HSPLandroidx/compose/foundation/text/TextLayoutResultProxy;->setDecorationBoxCoordinates(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/foundation/text/TextLayoutResultProxy;->setInnerTextFieldCoordinates(Landroidx/compose/ui/layout/LayoutCoordinates;)V +Landroidx/compose/foundation/text/TextPointerIcon_androidKt; +HSPLandroidx/compose/foundation/text/TextPointerIcon_androidKt;->()V +HSPLandroidx/compose/foundation/text/TextPointerIcon_androidKt;->getTextPointerIcon()Landroidx/compose/ui/input/pointer/PointerIcon; +Landroidx/compose/foundation/text/TouchMode_androidKt; +HSPLandroidx/compose/foundation/text/TouchMode_androidKt;->()V +HSPLandroidx/compose/foundation/text/TouchMode_androidKt;->isInTouchMode()Z +Landroidx/compose/foundation/text/UndoManager; +HSPLandroidx/compose/foundation/text/UndoManager;->(I)V +HSPLandroidx/compose/foundation/text/UndoManager;->(IILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/text/UndoManager;->makeSnapshot(Landroidx/compose/ui/text/input/TextFieldValue;)V +HSPLandroidx/compose/foundation/text/UndoManager;->snapshotIfNeeded$default(Landroidx/compose/foundation/text/UndoManager;Landroidx/compose/ui/text/input/TextFieldValue;JILjava/lang/Object;)V +HSPLandroidx/compose/foundation/text/UndoManager;->snapshotIfNeeded(Landroidx/compose/ui/text/input/TextFieldValue;J)V +Landroidx/compose/foundation/text/UndoManager$Entry; +HSPLandroidx/compose/foundation/text/UndoManager$Entry;->(Landroidx/compose/foundation/text/UndoManager$Entry;Landroidx/compose/ui/text/input/TextFieldValue;)V +Landroidx/compose/foundation/text/UndoManagerKt; +HSPLandroidx/compose/foundation/text/UndoManagerKt;->()V +HSPLandroidx/compose/foundation/text/UndoManagerKt;->getSNAPSHOTS_INTERVAL_MILLIS()I +Landroidx/compose/foundation/text/UndoManager_jvmKt; +HSPLandroidx/compose/foundation/text/UndoManager_jvmKt;->timeNowMillis()J +Landroidx/compose/foundation/text/ValidatingOffsetMapping; +HSPLandroidx/compose/foundation/text/ValidatingOffsetMapping;->(Landroidx/compose/ui/text/input/OffsetMapping;II)V +HSPLandroidx/compose/foundation/text/ValidatingOffsetMapping;->originalToTransformed(I)I +Landroidx/compose/foundation/text/ValidatingOffsetMappingKt; +HSPLandroidx/compose/foundation/text/ValidatingOffsetMappingKt;->()V +HSPLandroidx/compose/foundation/text/ValidatingOffsetMappingKt;->filterWithValidation(Landroidx/compose/ui/text/input/VisualTransformation;Landroidx/compose/ui/text/AnnotatedString;)Landroidx/compose/ui/text/input/TransformedText; +HSPLandroidx/compose/foundation/text/ValidatingOffsetMappingKt;->getValidatingEmptyOffsetMappingIdentity()Landroidx/compose/ui/text/input/OffsetMapping; +Landroidx/compose/foundation/text/modifiers/InlineDensity; +HSPLandroidx/compose/foundation/text/modifiers/InlineDensity;->()V +HSPLandroidx/compose/foundation/text/modifiers/InlineDensity;->access$getUnspecified$cp()J +HSPLandroidx/compose/foundation/text/modifiers/InlineDensity;->constructor-impl(FF)J +HSPLandroidx/compose/foundation/text/modifiers/InlineDensity;->constructor-impl(J)J +HSPLandroidx/compose/foundation/text/modifiers/InlineDensity;->constructor-impl(Landroidx/compose/ui/unit/Density;)J +HSPLandroidx/compose/foundation/text/modifiers/InlineDensity;->equals-impl0(JJ)Z +Landroidx/compose/foundation/text/modifiers/InlineDensity$Companion; +HSPLandroidx/compose/foundation/text/modifiers/InlineDensity$Companion;->()V +HSPLandroidx/compose/foundation/text/modifiers/InlineDensity$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/text/modifiers/InlineDensity$Companion;->getUnspecified-L26CHvs()J +Landroidx/compose/foundation/text/modifiers/LayoutUtilsKt; +HSPLandroidx/compose/foundation/text/modifiers/LayoutUtilsKt;->finalConstraints-tfFHcEY(JZIF)J +HSPLandroidx/compose/foundation/text/modifiers/LayoutUtilsKt;->finalMaxLines-xdlQI24(ZII)I +HSPLandroidx/compose/foundation/text/modifiers/LayoutUtilsKt;->finalMaxWidth-tfFHcEY(JZIF)I +Landroidx/compose/foundation/text/modifiers/MultiParagraphLayoutCache; +HSPLandroidx/compose/foundation/text/modifiers/MultiParagraphLayoutCache;->(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/font/FontFamily$Resolver;IZIILjava/util/List;)V +HSPLandroidx/compose/foundation/text/modifiers/MultiParagraphLayoutCache;->(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/font/FontFamily$Resolver;IZIILjava/util/List;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/text/modifiers/MultiParagraphLayoutCache;->getTextLayoutResult()Landroidx/compose/ui/text/TextLayoutResult; +HSPLandroidx/compose/foundation/text/modifiers/MultiParagraphLayoutCache;->layoutText-K40F9xA(JLandroidx/compose/ui/unit/LayoutDirection;)Landroidx/compose/ui/text/MultiParagraph; +HSPLandroidx/compose/foundation/text/modifiers/MultiParagraphLayoutCache;->layoutWithConstraints-K40F9xA(JLandroidx/compose/ui/unit/LayoutDirection;)Z +HSPLandroidx/compose/foundation/text/modifiers/MultiParagraphLayoutCache;->markDirty()V +HSPLandroidx/compose/foundation/text/modifiers/MultiParagraphLayoutCache;->newLayoutWillBeDifferent-VKLhPVY(Landroidx/compose/ui/text/TextLayoutResult;JLandroidx/compose/ui/unit/LayoutDirection;)Z +HSPLandroidx/compose/foundation/text/modifiers/MultiParagraphLayoutCache;->setDensity$foundation_release(Landroidx/compose/ui/unit/Density;)V +HSPLandroidx/compose/foundation/text/modifiers/MultiParagraphLayoutCache;->setLayoutDirection(Landroidx/compose/ui/unit/LayoutDirection;)Landroidx/compose/ui/text/MultiParagraphIntrinsics; +HSPLandroidx/compose/foundation/text/modifiers/MultiParagraphLayoutCache;->textLayoutResult-VKLhPVY(Landroidx/compose/ui/unit/LayoutDirection;JLandroidx/compose/ui/text/MultiParagraph;)Landroidx/compose/ui/text/TextLayoutResult; +HSPLandroidx/compose/foundation/text/modifiers/MultiParagraphLayoutCache;->update-ZNqEYIc(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/font/FontFamily$Resolver;IZIILjava/util/List;)V +Landroidx/compose/foundation/text/modifiers/SelectionController; +Landroidx/compose/foundation/text/modifiers/TextAnnotatedStringElement; +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringElement;->(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/font/FontFamily$Resolver;Lkotlin/jvm/functions/Function1;IZIILjava/util/List;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/text/modifiers/SelectionController;Landroidx/compose/ui/graphics/ColorProducer;)V +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringElement;->(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/font/FontFamily$Resolver;Lkotlin/jvm/functions/Function1;IZIILjava/util/List;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/text/modifiers/SelectionController;Landroidx/compose/ui/graphics/ColorProducer;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringElement;->create()Landroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode; +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringElement;->update(Landroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode;)V +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringElement;->update(Landroidx/compose/ui/Modifier$Node;)V +Landroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode; +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode;->(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/font/FontFamily$Resolver;Lkotlin/jvm/functions/Function1;IZIILjava/util/List;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/text/modifiers/SelectionController;Landroidx/compose/ui/graphics/ColorProducer;)V +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode;->(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/font/FontFamily$Resolver;Lkotlin/jvm/functions/Function1;IZIILjava/util/List;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/text/modifiers/SelectionController;Landroidx/compose/ui/graphics/ColorProducer;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode;->applySemantics(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode;->doInvalidations(ZZZZ)V +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode;->draw(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode;->getLayoutCache()Landroidx/compose/foundation/text/modifiers/MultiParagraphLayoutCache; +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode;->getLayoutCache(Landroidx/compose/ui/unit/Density;)Landroidx/compose/foundation/text/modifiers/MultiParagraphLayoutCache; +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode;->updateCallbacks(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/text/modifiers/SelectionController;)Z +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode;->updateDraw(Landroidx/compose/ui/graphics/ColorProducer;Landroidx/compose/ui/text/TextStyle;)Z +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode;->updateLayoutRelatedArgs-MPT68mk(Landroidx/compose/ui/text/TextStyle;Ljava/util/List;IIZLandroidx/compose/ui/text/font/FontFamily$Resolver;I)Z +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode;->updateText(Landroidx/compose/ui/text/AnnotatedString;)Z +Landroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode$applySemantics$1; +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode$applySemantics$1;->(Landroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode;)V +Landroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode$measure$1; +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode$measure$1;->(Landroidx/compose/ui/layout/Placeable;)V +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/text/modifiers/TextAnnotatedStringNode$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/selection/MouseSelectionObserver; +Landroidx/compose/foundation/text/selection/SelectionMagnifierKt; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt;->()V +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt;->access$getOffsetDisplacementThreshold$p()J +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt;->access$getUnspecifiedAnimationVector2D$p()Landroidx/compose/animation/core/AnimationVector2D; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt;->access$getUnspecifiedSafeOffsetVectorConverter$p()Landroidx/compose/animation/core/TwoWayConverter; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt;->access$rememberAnimatedMagnifierPosition$lambda$1(Landroidx/compose/runtime/State;)J +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt;->access$rememberAnimatedMagnifierPosition(Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt;->animatedSelectionMagnifier(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt;->rememberAnimatedMagnifierPosition$lambda$1(Landroidx/compose/runtime/State;)J +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt;->rememberAnimatedMagnifierPosition(Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +Landroidx/compose/foundation/text/selection/SelectionMagnifierKt$UnspecifiedSafeOffsetVectorConverter$1; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$UnspecifiedSafeOffsetVectorConverter$1;->()V +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$UnspecifiedSafeOffsetVectorConverter$1;->()V +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$UnspecifiedSafeOffsetVectorConverter$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$UnspecifiedSafeOffsetVectorConverter$1;->invoke-k-4lQ0M(J)Landroidx/compose/animation/core/AnimationVector2D; +Landroidx/compose/foundation/text/selection/SelectionMagnifierKt$UnspecifiedSafeOffsetVectorConverter$2; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$UnspecifiedSafeOffsetVectorConverter$2;->()V +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$UnspecifiedSafeOffsetVectorConverter$2;->()V +Landroidx/compose/foundation/text/selection/SelectionMagnifierKt$animatedSelectionMagnifier$1; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$animatedSelectionMagnifier$1;->(Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$animatedSelectionMagnifier$1;->access$invoke$lambda$0(Landroidx/compose/runtime/State;)J +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$animatedSelectionMagnifier$1;->invoke$lambda$0(Landroidx/compose/runtime/State;)J +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$animatedSelectionMagnifier$1;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$animatedSelectionMagnifier$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/selection/SelectionMagnifierKt$animatedSelectionMagnifier$1$1$1; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$animatedSelectionMagnifier$1$1$1;->(Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$animatedSelectionMagnifier$1$1$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$animatedSelectionMagnifier$1$1$1;->invoke-F1C5BW0()J +Landroidx/compose/foundation/text/selection/SelectionMagnifierKt$rememberAnimatedMagnifierPosition$1; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$rememberAnimatedMagnifierPosition$1;->(Landroidx/compose/runtime/State;Landroidx/compose/animation/core/Animatable;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$rememberAnimatedMagnifierPosition$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$rememberAnimatedMagnifierPosition$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/selection/SelectionMagnifierKt$rememberAnimatedMagnifierPosition$1$1; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$rememberAnimatedMagnifierPosition$1$1;->(Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$rememberAnimatedMagnifierPosition$1$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$rememberAnimatedMagnifierPosition$1$1;->invoke-F1C5BW0()J +Landroidx/compose/foundation/text/selection/SelectionMagnifierKt$rememberAnimatedMagnifierPosition$1$2; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$rememberAnimatedMagnifierPosition$1$2;->(Landroidx/compose/animation/core/Animatable;Lkotlinx/coroutines/CoroutineScope;)V +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$rememberAnimatedMagnifierPosition$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/selection/SelectionMagnifierKt$rememberAnimatedMagnifierPosition$1$2;->emit-3MmeM6k(JLkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/foundation/text/selection/SelectionRegistrar; +Landroidx/compose/foundation/text/selection/SelectionRegistrarKt; +HSPLandroidx/compose/foundation/text/selection/SelectionRegistrarKt;->()V +HSPLandroidx/compose/foundation/text/selection/SelectionRegistrarKt;->getLocalSelectionRegistrar()Landroidx/compose/runtime/ProvidableCompositionLocal; +Landroidx/compose/foundation/text/selection/SelectionRegistrarKt$LocalSelectionRegistrar$1; +HSPLandroidx/compose/foundation/text/selection/SelectionRegistrarKt$LocalSelectionRegistrar$1;->()V +HSPLandroidx/compose/foundation/text/selection/SelectionRegistrarKt$LocalSelectionRegistrar$1;->()V +HSPLandroidx/compose/foundation/text/selection/SelectionRegistrarKt$LocalSelectionRegistrar$1;->invoke()Landroidx/compose/foundation/text/selection/SelectionRegistrar; +HSPLandroidx/compose/foundation/text/selection/SelectionRegistrarKt$LocalSelectionRegistrar$1;->invoke()Ljava/lang/Object; +Landroidx/compose/foundation/text/selection/SimpleLayoutKt; +HSPLandroidx/compose/foundation/text/selection/SimpleLayoutKt;->SimpleLayout(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +Landroidx/compose/foundation/text/selection/SimpleLayoutKt$SimpleLayout$1; +HSPLandroidx/compose/foundation/text/selection/SimpleLayoutKt$SimpleLayout$1;->()V +HSPLandroidx/compose/foundation/text/selection/SimpleLayoutKt$SimpleLayout$1;->()V +HSPLandroidx/compose/foundation/text/selection/SimpleLayoutKt$SimpleLayout$1;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/foundation/text/selection/SimpleLayoutKt$SimpleLayout$1$measure$1; +HSPLandroidx/compose/foundation/text/selection/SimpleLayoutKt$SimpleLayout$1$measure$1;->(Ljava/util/List;)V +HSPLandroidx/compose/foundation/text/selection/SimpleLayoutKt$SimpleLayout$1$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/foundation/text/selection/SimpleLayoutKt$SimpleLayout$1$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/selection/TextFieldSelectionManager; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->(Landroidx/compose/foundation/text/UndoManager;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->deselect-_kEHs6E$foundation_release$default(Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;Landroidx/compose/ui/geometry/Offset;ILjava/lang/Object;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->deselect-_kEHs6E$foundation_release(Landroidx/compose/ui/geometry/Offset;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->getDraggingHandle()Landroidx/compose/foundation/text/Handle; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->getTouchSelectionObserver$foundation_release()Landroidx/compose/foundation/text/TextDragObserver; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->getValue$foundation_release()Landroidx/compose/ui/text/input/TextFieldValue; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->hideSelectionToolbar$foundation_release()V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->setClipboardManager$foundation_release(Landroidx/compose/ui/platform/ClipboardManager;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->setEditable(Z)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->setFocusRequester(Landroidx/compose/ui/focus/FocusRequester;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->setHandleState(Landroidx/compose/foundation/text/HandleState;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->setHapticFeedBack(Landroidx/compose/ui/hapticfeedback/HapticFeedback;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->setOffsetMapping$foundation_release(Landroidx/compose/ui/text/input/OffsetMapping;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->setOnValueChange$foundation_release(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->setState$foundation_release(Landroidx/compose/foundation/text/TextFieldState;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->setTextToolbar(Landroidx/compose/ui/platform/TextToolbar;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->setValue$foundation_release(Landroidx/compose/ui/text/input/TextFieldValue;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->setVisualTransformation$foundation_release(Landroidx/compose/ui/text/input/VisualTransformation;)V +Landroidx/compose/foundation/text/selection/TextFieldSelectionManager$mouseSelectionObserver$1; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager$mouseSelectionObserver$1;->(Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;)V +Landroidx/compose/foundation/text/selection/TextFieldSelectionManager$onValueChange$1; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager$onValueChange$1;->()V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager$onValueChange$1;->()V +Landroidx/compose/foundation/text/selection/TextFieldSelectionManager$touchSelectionObserver$1; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager$touchSelectionObserver$1;->(Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;)V +Landroidx/compose/foundation/text/selection/TextFieldSelectionManagerKt; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManagerKt;->calculateSelectionMagnifierCenterAndroid-O0kMr_c(Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;J)J +Landroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt;->textFieldMagnifier(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1;->(Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1;->access$invoke$lambda$1(Landroidx/compose/runtime/MutableState;)J +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1;->access$invoke$lambda$2(Landroidx/compose/runtime/MutableState;J)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1;->invoke$lambda$1(Landroidx/compose/runtime/MutableState;)J +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1;->invoke$lambda$2(Landroidx/compose/runtime/MutableState;J)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1$1; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1$1;->(Landroidx/compose/foundation/text/selection/TextFieldSelectionManager;Landroidx/compose/runtime/MutableState;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1$1;->invoke-F1C5BW0()J +Landroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1$2$1; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1$2$1;->(Landroidx/compose/ui/unit/Density;Landroidx/compose/runtime/MutableState;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1$2$1;->invoke(Lkotlin/jvm/functions/Function0;)Landroidx/compose/ui/Modifier; +Landroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1$2$1$1; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1$2$1$1;->(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1$2$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1$2$1$1;->invoke-tuRUvjQ(Landroidx/compose/ui/unit/Density;)J +Landroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1$2$1$2; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1$2$1$2;->(Landroidx/compose/ui/unit/Density;Landroidx/compose/runtime/MutableState;)V +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1$2$1$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager_androidKt$textFieldMagnifier$1$2$1$2;->invoke-EaSLcWc(J)V +Landroidx/compose/foundation/text/selection/TextPreparedSelectionState; +HSPLandroidx/compose/foundation/text/selection/TextPreparedSelectionState;->()V +Landroidx/compose/foundation/text/selection/TextSelectionColors; +HSPLandroidx/compose/foundation/text/selection/TextSelectionColors;->()V +HSPLandroidx/compose/foundation/text/selection/TextSelectionColors;->(JJ)V +HSPLandroidx/compose/foundation/text/selection/TextSelectionColors;->(JJLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/text/selection/TextSelectionColors;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/foundation/text/selection/TextSelectionColors;->getBackgroundColor-0d7_KjU()J +Landroidx/compose/foundation/text/selection/TextSelectionColorsKt; +HSPLandroidx/compose/foundation/text/selection/TextSelectionColorsKt;->()V +HSPLandroidx/compose/foundation/text/selection/TextSelectionColorsKt;->getLocalTextSelectionColors()Landroidx/compose/runtime/ProvidableCompositionLocal; +Landroidx/compose/foundation/text/selection/TextSelectionColorsKt$LocalTextSelectionColors$1; +HSPLandroidx/compose/foundation/text/selection/TextSelectionColorsKt$LocalTextSelectionColors$1;->()V +HSPLandroidx/compose/foundation/text/selection/TextSelectionColorsKt$LocalTextSelectionColors$1;->()V +Landroidx/compose/material/Colors; +HSPLandroidx/compose/material/Colors;->()V +HSPLandroidx/compose/material/Colors;->(JJJJJJJJJJJJZ)V +HSPLandroidx/compose/material/Colors;->(JJJJJJJJJJJJZLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material/Colors;->copy-pvPzIIM$default(Landroidx/compose/material/Colors;JJJJJJJJJJJJZILjava/lang/Object;)Landroidx/compose/material/Colors; +HSPLandroidx/compose/material/Colors;->copy-pvPzIIM(JJJJJJJJJJJJZ)Landroidx/compose/material/Colors; +HSPLandroidx/compose/material/Colors;->getBackground-0d7_KjU()J +HSPLandroidx/compose/material/Colors;->getError-0d7_KjU()J +HSPLandroidx/compose/material/Colors;->getOnBackground-0d7_KjU()J +HSPLandroidx/compose/material/Colors;->getOnError-0d7_KjU()J +HSPLandroidx/compose/material/Colors;->getOnPrimary-0d7_KjU()J +HSPLandroidx/compose/material/Colors;->getOnSecondary-0d7_KjU()J +HSPLandroidx/compose/material/Colors;->getOnSurface-0d7_KjU()J +HSPLandroidx/compose/material/Colors;->getPrimary-0d7_KjU()J +HSPLandroidx/compose/material/Colors;->getPrimaryVariant-0d7_KjU()J +HSPLandroidx/compose/material/Colors;->getSecondary-0d7_KjU()J +HSPLandroidx/compose/material/Colors;->getSecondaryVariant-0d7_KjU()J +HSPLandroidx/compose/material/Colors;->getSurface-0d7_KjU()J +HSPLandroidx/compose/material/Colors;->isLight()Z +HSPLandroidx/compose/material/Colors;->setBackground-8_81llA$material_release(J)V +HSPLandroidx/compose/material/Colors;->setError-8_81llA$material_release(J)V +HSPLandroidx/compose/material/Colors;->setLight$material_release(Z)V +HSPLandroidx/compose/material/Colors;->setOnBackground-8_81llA$material_release(J)V +HSPLandroidx/compose/material/Colors;->setOnError-8_81llA$material_release(J)V +HSPLandroidx/compose/material/Colors;->setOnPrimary-8_81llA$material_release(J)V +HSPLandroidx/compose/material/Colors;->setOnSecondary-8_81llA$material_release(J)V +HSPLandroidx/compose/material/Colors;->setOnSurface-8_81llA$material_release(J)V +HSPLandroidx/compose/material/Colors;->setPrimary-8_81llA$material_release(J)V +HSPLandroidx/compose/material/Colors;->setPrimaryVariant-8_81llA$material_release(J)V +HSPLandroidx/compose/material/Colors;->setSecondary-8_81llA$material_release(J)V +HSPLandroidx/compose/material/Colors;->setSecondaryVariant-8_81llA$material_release(J)V +HSPLandroidx/compose/material/Colors;->setSurface-8_81llA$material_release(J)V +Landroidx/compose/material/ColorsKt; +HSPLandroidx/compose/material/ColorsKt;->()V +HSPLandroidx/compose/material/ColorsKt;->contentColorFor-4WTKRHQ(Landroidx/compose/material/Colors;J)J +HSPLandroidx/compose/material/ColorsKt;->getLocalColors()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/material/ColorsKt;->lightColors-2qZNXz8$default(JJJJJJJJJJJJILjava/lang/Object;)Landroidx/compose/material/Colors; +HSPLandroidx/compose/material/ColorsKt;->lightColors-2qZNXz8(JJJJJJJJJJJJ)Landroidx/compose/material/Colors; +HSPLandroidx/compose/material/ColorsKt;->updateColorsFrom(Landroidx/compose/material/Colors;Landroidx/compose/material/Colors;)V +Landroidx/compose/material/ColorsKt$LocalColors$1; +HSPLandroidx/compose/material/ColorsKt$LocalColors$1;->()V +HSPLandroidx/compose/material/ColorsKt$LocalColors$1;->()V +HSPLandroidx/compose/material/ColorsKt$LocalColors$1;->invoke()Landroidx/compose/material/Colors; +HSPLandroidx/compose/material/ColorsKt$LocalColors$1;->invoke()Ljava/lang/Object; +Landroidx/compose/material/ContentAlpha; +HSPLandroidx/compose/material/ContentAlpha;->()V +HSPLandroidx/compose/material/ContentAlpha;->()V +HSPLandroidx/compose/material/ContentAlpha;->contentAlpha(FFLandroidx/compose/runtime/Composer;I)F +HSPLandroidx/compose/material/ContentAlpha;->getHigh(Landroidx/compose/runtime/Composer;I)F +HSPLandroidx/compose/material/ContentAlpha;->getMedium(Landroidx/compose/runtime/Composer;I)F +Landroidx/compose/material/ContentAlphaKt; +HSPLandroidx/compose/material/ContentAlphaKt;->()V +HSPLandroidx/compose/material/ContentAlphaKt;->getLocalContentAlpha()Landroidx/compose/runtime/ProvidableCompositionLocal; +Landroidx/compose/material/ContentAlphaKt$LocalContentAlpha$1; +HSPLandroidx/compose/material/ContentAlphaKt$LocalContentAlpha$1;->()V +HSPLandroidx/compose/material/ContentAlphaKt$LocalContentAlpha$1;->()V +Landroidx/compose/material/ContentColorKt; +HSPLandroidx/compose/material/ContentColorKt;->()V +HSPLandroidx/compose/material/ContentColorKt;->getLocalContentColor()Landroidx/compose/runtime/ProvidableCompositionLocal; +Landroidx/compose/material/ContentColorKt$LocalContentColor$1; +HSPLandroidx/compose/material/ContentColorKt$LocalContentColor$1;->()V +HSPLandroidx/compose/material/ContentColorKt$LocalContentColor$1;->()V +HSPLandroidx/compose/material/ContentColorKt$LocalContentColor$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/material/ContentColorKt$LocalContentColor$1;->invoke-0d7_KjU()J +Landroidx/compose/material/DefaultPlatformTextStyle_androidKt; +HSPLandroidx/compose/material/DefaultPlatformTextStyle_androidKt;->()V +HSPLandroidx/compose/material/DefaultPlatformTextStyle_androidKt;->defaultPlatformTextStyle()Landroidx/compose/ui/text/PlatformTextStyle; +Landroidx/compose/material/MaterialRippleTheme; +HSPLandroidx/compose/material/MaterialRippleTheme;->()V +HSPLandroidx/compose/material/MaterialRippleTheme;->()V +HSPLandroidx/compose/material/MaterialRippleTheme;->defaultColor-WaAFU9c(Landroidx/compose/runtime/Composer;I)J +HSPLandroidx/compose/material/MaterialRippleTheme;->rippleAlpha(Landroidx/compose/runtime/Composer;I)Landroidx/compose/material/ripple/RippleAlpha; +Landroidx/compose/material/MaterialTextSelectionColorsKt; +HSPLandroidx/compose/material/MaterialTextSelectionColorsKt;->calculateContrastRatio--OWjLjI(JJ)F +HSPLandroidx/compose/material/MaterialTextSelectionColorsKt;->calculateContrastRatio-nb2GgbA(JFJJ)F +HSPLandroidx/compose/material/MaterialTextSelectionColorsKt;->calculateSelectionBackgroundColor-ysEtTa8(JJJ)J +HSPLandroidx/compose/material/MaterialTextSelectionColorsKt;->rememberTextSelectionColors(Landroidx/compose/material/Colors;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/text/selection/TextSelectionColors; +Landroidx/compose/material/MaterialTheme; +HSPLandroidx/compose/material/MaterialTheme;->()V +HSPLandroidx/compose/material/MaterialTheme;->()V +HSPLandroidx/compose/material/MaterialTheme;->getColors(Landroidx/compose/runtime/Composer;I)Landroidx/compose/material/Colors; +HSPLandroidx/compose/material/MaterialTheme;->getShapes(Landroidx/compose/runtime/Composer;I)Landroidx/compose/material/Shapes; +HSPLandroidx/compose/material/MaterialTheme;->getTypography(Landroidx/compose/runtime/Composer;I)Landroidx/compose/material/Typography; +Landroidx/compose/material/MaterialThemeKt; +HSPLandroidx/compose/material/MaterialThemeKt;->MaterialTheme(Landroidx/compose/material/Colors;Landroidx/compose/material/Typography;Landroidx/compose/material/Shapes;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +Landroidx/compose/material/MaterialThemeKt$MaterialTheme$1; +HSPLandroidx/compose/material/MaterialThemeKt$MaterialTheme$1;->(Landroidx/compose/material/Typography;Lkotlin/jvm/functions/Function2;I)V +HSPLandroidx/compose/material/MaterialThemeKt$MaterialTheme$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material/MaterialThemeKt$MaterialTheme$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material/MaterialThemeKt$MaterialTheme$1$1; +HSPLandroidx/compose/material/MaterialThemeKt$MaterialTheme$1$1;->(Lkotlin/jvm/functions/Function2;I)V +HSPLandroidx/compose/material/MaterialThemeKt$MaterialTheme$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material/MaterialThemeKt$MaterialTheme$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material/MaterialThemeKt$MaterialTheme$2; +HSPLandroidx/compose/material/MaterialThemeKt$MaterialTheme$2;->(Landroidx/compose/material/Colors;Landroidx/compose/material/Typography;Landroidx/compose/material/Shapes;Lkotlin/jvm/functions/Function2;II)V +Landroidx/compose/material/MaterialTheme_androidKt; +HSPLandroidx/compose/material/MaterialTheme_androidKt;->PlatformMaterialTheme(Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +Landroidx/compose/material/Shapes; +HSPLandroidx/compose/material/Shapes;->()V +HSPLandroidx/compose/material/Shapes;->(Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerBasedShape;)V +HSPLandroidx/compose/material/Shapes;->(Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerBasedShape;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/material/ShapesKt; +HSPLandroidx/compose/material/ShapesKt;->()V +HSPLandroidx/compose/material/ShapesKt;->getLocalShapes()Landroidx/compose/runtime/ProvidableCompositionLocal; +Landroidx/compose/material/ShapesKt$LocalShapes$1; +HSPLandroidx/compose/material/ShapesKt$LocalShapes$1;->()V +HSPLandroidx/compose/material/ShapesKt$LocalShapes$1;->()V +HSPLandroidx/compose/material/ShapesKt$LocalShapes$1;->invoke()Landroidx/compose/material/Shapes; +HSPLandroidx/compose/material/ShapesKt$LocalShapes$1;->invoke()Ljava/lang/Object; +Landroidx/compose/material/TextKt; +HSPLandroidx/compose/material/TextKt;->()V +HSPLandroidx/compose/material/TextKt;->ProvideTextStyle(Landroidx/compose/ui/text/TextStyle;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +Landroidx/compose/material/TextKt$LocalTextStyle$1; +HSPLandroidx/compose/material/TextKt$LocalTextStyle$1;->()V +HSPLandroidx/compose/material/TextKt$LocalTextStyle$1;->()V +HSPLandroidx/compose/material/TextKt$LocalTextStyle$1;->invoke()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material/TextKt$LocalTextStyle$1;->invoke()Ljava/lang/Object; +Landroidx/compose/material/Typography; +HSPLandroidx/compose/material/Typography;->()V +HSPLandroidx/compose/material/Typography;->(Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;)V +HSPLandroidx/compose/material/Typography;->(Landroidx/compose/ui/text/font/FontFamily;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;)V +HSPLandroidx/compose/material/Typography;->(Landroidx/compose/ui/text/font/FontFamily;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material/Typography;->getBody1()Landroidx/compose/ui/text/TextStyle; +Landroidx/compose/material/TypographyKt; +HSPLandroidx/compose/material/TypographyKt;->()V +HSPLandroidx/compose/material/TypographyKt;->access$withDefaultFontFamily(Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/font/FontFamily;)Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material/TypographyKt;->getDefaultTextStyle()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material/TypographyKt;->getLocalTypography()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/material/TypographyKt;->withDefaultFontFamily(Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/font/FontFamily;)Landroidx/compose/ui/text/TextStyle; +Landroidx/compose/material/TypographyKt$LocalTypography$1; +HSPLandroidx/compose/material/TypographyKt$LocalTypography$1;->()V +HSPLandroidx/compose/material/TypographyKt$LocalTypography$1;->()V +HSPLandroidx/compose/material/TypographyKt$LocalTypography$1;->invoke()Landroidx/compose/material/Typography; +HSPLandroidx/compose/material/TypographyKt$LocalTypography$1;->invoke()Ljava/lang/Object; +Landroidx/compose/material/icons/Icons$Filled; +HSPLandroidx/compose/material/icons/Icons$Filled;->()V +HSPLandroidx/compose/material/icons/Icons$Filled;->()V +Landroidx/compose/material/icons/Icons$Outlined; +HSPLandroidx/compose/material/icons/Icons$Outlined;->()V +HSPLandroidx/compose/material/icons/Icons$Outlined;->()V +Landroidx/compose/material/icons/filled/HomeKt; +HSPLandroidx/compose/material/icons/filled/HomeKt;->()V +HSPLandroidx/compose/material/icons/filled/HomeKt;->getHome(Landroidx/compose/material/icons/Icons$Filled;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/filled/PasswordKt; +HSPLandroidx/compose/material/icons/filled/PasswordKt;->()V +HSPLandroidx/compose/material/icons/filled/PasswordKt;->getPassword(Landroidx/compose/material/icons/Icons$Filled;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/filled/SecurityKt; +HSPLandroidx/compose/material/icons/filled/SecurityKt;->()V +HSPLandroidx/compose/material/icons/filled/SecurityKt;->getSecurity(Landroidx/compose/material/icons/Icons$Filled;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/filled/SendKt; +HSPLandroidx/compose/material/icons/filled/SendKt;->()V +HSPLandroidx/compose/material/icons/filled/SendKt;->getSend(Landroidx/compose/material/icons/Icons$Filled;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/filled/SettingsKt; +HSPLandroidx/compose/material/icons/filled/SettingsKt;->()V +HSPLandroidx/compose/material/icons/filled/SettingsKt;->getSettings(Landroidx/compose/material/icons/Icons$Filled;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/AddKt; +HSPLandroidx/compose/material/icons/outlined/AddKt;->()V +HSPLandroidx/compose/material/icons/outlined/AddKt;->getAdd(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/AttachmentKt; +HSPLandroidx/compose/material/icons/outlined/AttachmentKt;->()V +HSPLandroidx/compose/material/icons/outlined/AttachmentKt;->getAttachment(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/AutoAwesomeKt; +HSPLandroidx/compose/material/icons/outlined/AutoAwesomeKt;->()V +HSPLandroidx/compose/material/icons/outlined/AutoAwesomeKt;->getAutoAwesome(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/CalendarMonthKt; +HSPLandroidx/compose/material/icons/outlined/CalendarMonthKt;->()V +HSPLandroidx/compose/material/icons/outlined/CalendarMonthKt;->getCalendarMonth(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/ChevronRightKt; +HSPLandroidx/compose/material/icons/outlined/ChevronRightKt;->()V +HSPLandroidx/compose/material/icons/outlined/ChevronRightKt;->getChevronRight(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/ClearKt; +HSPLandroidx/compose/material/icons/outlined/ClearKt;->()V +HSPLandroidx/compose/material/icons/outlined/ClearKt;->getClear(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/CloudOffKt; +HSPLandroidx/compose/material/icons/outlined/CloudOffKt;->()V +HSPLandroidx/compose/material/icons/outlined/CloudOffKt;->getCloudOff(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/CreditCardKt; +HSPLandroidx/compose/material/icons/outlined/CreditCardKt;->()V +HSPLandroidx/compose/material/icons/outlined/CreditCardKt;->getCreditCard(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/DeleteKt; +HSPLandroidx/compose/material/icons/outlined/DeleteKt;->()V +HSPLandroidx/compose/material/icons/outlined/DeleteKt;->getDelete(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/ErrorOutlineKt; +HSPLandroidx/compose/material/icons/outlined/ErrorOutlineKt;->()V +HSPLandroidx/compose/material/icons/outlined/ErrorOutlineKt;->getErrorOutline(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/FilterAltKt; +HSPLandroidx/compose/material/icons/outlined/FilterAltKt;->()V +HSPLandroidx/compose/material/icons/outlined/FilterAltKt;->getFilterAlt(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/FolderOffKt; +HSPLandroidx/compose/material/icons/outlined/FolderOffKt;->()V +HSPLandroidx/compose/material/icons/outlined/FolderOffKt;->getFolderOff(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/HomeKt; +HSPLandroidx/compose/material/icons/outlined/HomeKt;->()V +HSPLandroidx/compose/material/icons/outlined/HomeKt;->getHome(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/InfoKt; +HSPLandroidx/compose/material/icons/outlined/InfoKt;->()V +HSPLandroidx/compose/material/icons/outlined/InfoKt;->getInfo(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/KeyKt; +HSPLandroidx/compose/material/icons/outlined/KeyKt;->()V +HSPLandroidx/compose/material/icons/outlined/KeyKt;->getKey(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/LockKt; +HSPLandroidx/compose/material/icons/outlined/LockKt;->()V +HSPLandroidx/compose/material/icons/outlined/LockKt;->getLock(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/LockOpenKt; +HSPLandroidx/compose/material/icons/outlined/LockOpenKt;->()V +HSPLandroidx/compose/material/icons/outlined/LockOpenKt;->getLockOpen(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/MoreVertKt; +HSPLandroidx/compose/material/icons/outlined/MoreVertKt;->()V +HSPLandroidx/compose/material/icons/outlined/MoreVertKt;->getMoreVert(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/NumbersKt; +HSPLandroidx/compose/material/icons/outlined/NumbersKt;->()V +HSPLandroidx/compose/material/icons/outlined/NumbersKt;->getNumbers(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/PasswordKt; +HSPLandroidx/compose/material/icons/outlined/PasswordKt;->()V +HSPLandroidx/compose/material/icons/outlined/PasswordKt;->getPassword(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/PermIdentityKt; +HSPLandroidx/compose/material/icons/outlined/PermIdentityKt;->()V +HSPLandroidx/compose/material/icons/outlined/PermIdentityKt;->getPermIdentity(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/PersonAddKt; +HSPLandroidx/compose/material/icons/outlined/PersonAddKt;->()V +HSPLandroidx/compose/material/icons/outlined/PersonAddKt;->getPersonAdd(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/SearchKt; +HSPLandroidx/compose/material/icons/outlined/SearchKt;->()V +HSPLandroidx/compose/material/icons/outlined/SearchKt;->getSearch(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/SecurityKt; +HSPLandroidx/compose/material/icons/outlined/SecurityKt;->()V +HSPLandroidx/compose/material/icons/outlined/SecurityKt;->getSecurity(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/SendKt; +HSPLandroidx/compose/material/icons/outlined/SendKt;->()V +HSPLandroidx/compose/material/icons/outlined/SendKt;->getSend(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/SettingsKt; +HSPLandroidx/compose/material/icons/outlined/SettingsKt;->()V +HSPLandroidx/compose/material/icons/outlined/SettingsKt;->getSettings(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/SortByAlphaKt; +HSPLandroidx/compose/material/icons/outlined/SortByAlphaKt;->()V +HSPLandroidx/compose/material/icons/outlined/SortByAlphaKt;->getSortByAlpha(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/StickyNote2Kt; +HSPLandroidx/compose/material/icons/outlined/StickyNote2Kt;->()V +HSPLandroidx/compose/material/icons/outlined/StickyNote2Kt;->getStickyNote2(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/icons/outlined/VisibilityOffKt; +HSPLandroidx/compose/material/icons/outlined/VisibilityOffKt;->()V +HSPLandroidx/compose/material/icons/outlined/VisibilityOffKt;->getVisibilityOff(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Landroidx/compose/material/pullrefresh/PullRefreshDefaults; +HSPLandroidx/compose/material/pullrefresh/PullRefreshDefaults;->()V +HSPLandroidx/compose/material/pullrefresh/PullRefreshDefaults;->()V +HSPLandroidx/compose/material/pullrefresh/PullRefreshDefaults;->getRefreshThreshold-D9Ej5fM()F +HSPLandroidx/compose/material/pullrefresh/PullRefreshDefaults;->getRefreshingOffset-D9Ej5fM()F +Landroidx/compose/material/pullrefresh/PullRefreshKt; +HSPLandroidx/compose/material/pullrefresh/PullRefreshKt;->pullRefresh$default(Landroidx/compose/ui/Modifier;Landroidx/compose/material/pullrefresh/PullRefreshState;ZILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/material/pullrefresh/PullRefreshKt;->pullRefresh(Landroidx/compose/ui/Modifier;Landroidx/compose/material/pullrefresh/PullRefreshState;Z)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/material/pullrefresh/PullRefreshKt;->pullRefresh(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;Z)Landroidx/compose/ui/Modifier; +Landroidx/compose/material/pullrefresh/PullRefreshKt$pullRefresh$2$1; +HSPLandroidx/compose/material/pullrefresh/PullRefreshKt$pullRefresh$2$1;->(Ljava/lang/Object;)V +Landroidx/compose/material/pullrefresh/PullRefreshKt$pullRefresh$2$2; +HSPLandroidx/compose/material/pullrefresh/PullRefreshKt$pullRefresh$2$2;->(Ljava/lang/Object;)V +Landroidx/compose/material/pullrefresh/PullRefreshNestedScrollConnection; +HSPLandroidx/compose/material/pullrefresh/PullRefreshNestedScrollConnection;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;Z)V +Landroidx/compose/material/pullrefresh/PullRefreshState; +HSPLandroidx/compose/material/pullrefresh/PullRefreshState;->()V +HSPLandroidx/compose/material/pullrefresh/PullRefreshState;->(Lkotlinx/coroutines/CoroutineScope;Landroidx/compose/runtime/State;FF)V +HSPLandroidx/compose/material/pullrefresh/PullRefreshState;->access$getDistancePulled(Landroidx/compose/material/pullrefresh/PullRefreshState;)F +HSPLandroidx/compose/material/pullrefresh/PullRefreshState;->getAdjustedDistancePulled()F +HSPLandroidx/compose/material/pullrefresh/PullRefreshState;->getDistancePulled()F +HSPLandroidx/compose/material/pullrefresh/PullRefreshState;->getProgress()F +HSPLandroidx/compose/material/pullrefresh/PullRefreshState;->getThreshold$material_release()F +HSPLandroidx/compose/material/pullrefresh/PullRefreshState;->get_refreshing()Z +HSPLandroidx/compose/material/pullrefresh/PullRefreshState;->get_refreshingOffset()F +HSPLandroidx/compose/material/pullrefresh/PullRefreshState;->get_threshold()F +HSPLandroidx/compose/material/pullrefresh/PullRefreshState;->setRefreshing$material_release(Z)V +HSPLandroidx/compose/material/pullrefresh/PullRefreshState;->setRefreshingOffset$material_release(F)V +HSPLandroidx/compose/material/pullrefresh/PullRefreshState;->setThreshold$material_release(F)V +HSPLandroidx/compose/material/pullrefresh/PullRefreshState;->set_threshold(F)V +Landroidx/compose/material/pullrefresh/PullRefreshState$adjustedDistancePulled$2; +HSPLandroidx/compose/material/pullrefresh/PullRefreshState$adjustedDistancePulled$2;->(Landroidx/compose/material/pullrefresh/PullRefreshState;)V +HSPLandroidx/compose/material/pullrefresh/PullRefreshState$adjustedDistancePulled$2;->invoke()Ljava/lang/Float; +HSPLandroidx/compose/material/pullrefresh/PullRefreshState$adjustedDistancePulled$2;->invoke()Ljava/lang/Object; +Landroidx/compose/material/pullrefresh/PullRefreshStateKt; +HSPLandroidx/compose/material/pullrefresh/PullRefreshStateKt;->rememberPullRefreshState-UuyPYSY(ZLkotlin/jvm/functions/Function0;FFLandroidx/compose/runtime/Composer;II)Landroidx/compose/material/pullrefresh/PullRefreshState; +Landroidx/compose/material/pullrefresh/PullRefreshStateKt$rememberPullRefreshState$3; +HSPLandroidx/compose/material/pullrefresh/PullRefreshStateKt$rememberPullRefreshState$3;->(Landroidx/compose/material/pullrefresh/PullRefreshState;ZLkotlin/jvm/internal/Ref$FloatRef;Lkotlin/jvm/internal/Ref$FloatRef;)V +HSPLandroidx/compose/material/pullrefresh/PullRefreshStateKt$rememberPullRefreshState$3;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/material/pullrefresh/PullRefreshStateKt$rememberPullRefreshState$3;->invoke()V +Landroidx/compose/material/ripple/AndroidRippleIndicationInstance; +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->(ZFLandroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/material/ripple/RippleContainer;)V +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->(ZFLandroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/material/ripple/RippleContainer;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->access$getInvalidateTick(Landroidx/compose/material/ripple/AndroidRippleIndicationInstance;)Z +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->access$setInvalidateTick(Landroidx/compose/material/ripple/AndroidRippleIndicationInstance;Z)V +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->addRipple(Landroidx/compose/foundation/interaction/PressInteraction$Press;Lkotlinx/coroutines/CoroutineScope;)V +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->dispose()V +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->drawIndication(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->getInvalidateTick()Z +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->getRippleHostView()Landroidx/compose/material/ripple/RippleHostView; +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->onForgotten()V +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->onRemembered()V +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->removeRipple(Landroidx/compose/foundation/interaction/PressInteraction$Press;)V +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->resetHostView()V +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->setInvalidateTick(Z)V +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->setRippleHostView(Landroidx/compose/material/ripple/RippleHostView;)V +Landroidx/compose/material/ripple/AndroidRippleIndicationInstance$onInvalidateRipple$1; +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance$onInvalidateRipple$1;->(Landroidx/compose/material/ripple/AndroidRippleIndicationInstance;)V +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance$onInvalidateRipple$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance$onInvalidateRipple$1;->invoke()V +Landroidx/compose/material/ripple/PlatformRipple; +HSPLandroidx/compose/material/ripple/PlatformRipple;->(ZFLandroidx/compose/runtime/State;)V +HSPLandroidx/compose/material/ripple/PlatformRipple;->(ZFLandroidx/compose/runtime/State;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material/ripple/PlatformRipple;->findNearestViewGroup(Landroidx/compose/runtime/Composer;I)Landroid/view/ViewGroup; +HSPLandroidx/compose/material/ripple/PlatformRipple;->rememberUpdatedRippleInstance-942rkJo(Landroidx/compose/foundation/interaction/InteractionSource;ZFLandroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/Composer;I)Landroidx/compose/material/ripple/RippleIndicationInstance; +Landroidx/compose/material/ripple/Ripple; +HSPLandroidx/compose/material/ripple/Ripple;->(ZFLandroidx/compose/runtime/State;)V +HSPLandroidx/compose/material/ripple/Ripple;->(ZFLandroidx/compose/runtime/State;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material/ripple/Ripple;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/material/ripple/Ripple;->rememberUpdatedInstance(Landroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/IndicationInstance; +Landroidx/compose/material/ripple/Ripple$rememberUpdatedInstance$1; +HSPLandroidx/compose/material/ripple/Ripple$rememberUpdatedInstance$1;->(Landroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/material/ripple/RippleIndicationInstance;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/material/ripple/Ripple$rememberUpdatedInstance$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/material/ripple/Ripple$rememberUpdatedInstance$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material/ripple/Ripple$rememberUpdatedInstance$1$1; +HSPLandroidx/compose/material/ripple/Ripple$rememberUpdatedInstance$1$1;->(Landroidx/compose/material/ripple/RippleIndicationInstance;Lkotlinx/coroutines/CoroutineScope;)V +HSPLandroidx/compose/material/ripple/Ripple$rememberUpdatedInstance$1$1;->emit(Landroidx/compose/foundation/interaction/Interaction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/material/ripple/Ripple$rememberUpdatedInstance$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/material/ripple/RippleAlpha; +HSPLandroidx/compose/material/ripple/RippleAlpha;->()V +HSPLandroidx/compose/material/ripple/RippleAlpha;->(FFFF)V +HSPLandroidx/compose/material/ripple/RippleAlpha;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/material/ripple/RippleAlpha;->getPressedAlpha()F +Landroidx/compose/material/ripple/RippleAnimationKt; +HSPLandroidx/compose/material/ripple/RippleAnimationKt;->()V +HSPLandroidx/compose/material/ripple/RippleAnimationKt;->getRippleEndRadius-cSwnlzA(Landroidx/compose/ui/unit/Density;ZJ)F +Landroidx/compose/material/ripple/RippleContainer; +HSPLandroidx/compose/material/ripple/RippleContainer;->(Landroid/content/Context;)V +HSPLandroidx/compose/material/ripple/RippleContainer;->disposeRippleIfNeeded(Landroidx/compose/material/ripple/AndroidRippleIndicationInstance;)V +HSPLandroidx/compose/material/ripple/RippleContainer;->getRippleHostView(Landroidx/compose/material/ripple/AndroidRippleIndicationInstance;)Landroidx/compose/material/ripple/RippleHostView; +Landroidx/compose/material/ripple/RippleHostMap; +HSPLandroidx/compose/material/ripple/RippleHostMap;->()V +HSPLandroidx/compose/material/ripple/RippleHostMap;->get(Landroidx/compose/material/ripple/AndroidRippleIndicationInstance;)Landroidx/compose/material/ripple/RippleHostView; +HSPLandroidx/compose/material/ripple/RippleHostMap;->remove(Landroidx/compose/material/ripple/AndroidRippleIndicationInstance;)V +HSPLandroidx/compose/material/ripple/RippleHostMap;->set(Landroidx/compose/material/ripple/AndroidRippleIndicationInstance;Landroidx/compose/material/ripple/RippleHostView;)V +Landroidx/compose/material/ripple/RippleHostView; +HSPLandroidx/compose/material/ripple/RippleHostView;->$r8$lambda$4nztiuYeQHklB-09QfMAnp7Ay8E(Landroidx/compose/material/ripple/RippleHostView;)V +HSPLandroidx/compose/material/ripple/RippleHostView;->()V +HSPLandroidx/compose/material/ripple/RippleHostView;->(Landroid/content/Context;)V +HSPLandroidx/compose/material/ripple/RippleHostView;->addRipple-KOepWvA(Landroidx/compose/foundation/interaction/PressInteraction$Press;ZJIJFLkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/material/ripple/RippleHostView;->createRipple(Z)V +HSPLandroidx/compose/material/ripple/RippleHostView;->disposeRipple()V +HSPLandroidx/compose/material/ripple/RippleHostView;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroidx/compose/material/ripple/RippleHostView;->refreshDrawableState()V +HSPLandroidx/compose/material/ripple/RippleHostView;->removeRipple()V +HSPLandroidx/compose/material/ripple/RippleHostView;->setRippleState$lambda$2(Landroidx/compose/material/ripple/RippleHostView;)V +HSPLandroidx/compose/material/ripple/RippleHostView;->setRippleState(Z)V +HSPLandroidx/compose/material/ripple/RippleHostView;->updateRippleProperties-biQXAtU(JIJF)V +Landroidx/compose/material/ripple/RippleHostView$$ExternalSyntheticLambda0; +HSPLandroidx/compose/material/ripple/RippleHostView$$ExternalSyntheticLambda0;->(Landroidx/compose/material/ripple/RippleHostView;)V +HSPLandroidx/compose/material/ripple/RippleHostView$$ExternalSyntheticLambda0;->run()V +Landroidx/compose/material/ripple/RippleHostView$Companion; +HSPLandroidx/compose/material/ripple/RippleHostView$Companion;->()V +HSPLandroidx/compose/material/ripple/RippleHostView$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/material/ripple/RippleIndicationInstance; +HSPLandroidx/compose/material/ripple/RippleIndicationInstance;->(ZLandroidx/compose/runtime/State;)V +HSPLandroidx/compose/material/ripple/RippleIndicationInstance;->drawStateLayer-H2RKhps(Landroidx/compose/ui/graphics/drawscope/DrawScope;FJ)V +Landroidx/compose/material/ripple/RippleKt; +HSPLandroidx/compose/material/ripple/RippleKt;->()V +HSPLandroidx/compose/material/ripple/RippleKt;->rememberRipple-9IZ8Weo(ZFJLandroidx/compose/runtime/Composer;II)Landroidx/compose/foundation/Indication; +Landroidx/compose/material/ripple/RippleTheme; +HSPLandroidx/compose/material/ripple/RippleTheme;->()V +Landroidx/compose/material/ripple/RippleTheme$Companion; +HSPLandroidx/compose/material/ripple/RippleTheme$Companion;->()V +HSPLandroidx/compose/material/ripple/RippleTheme$Companion;->()V +HSPLandroidx/compose/material/ripple/RippleTheme$Companion;->defaultRippleAlpha-DxMtmZc(JZ)Landroidx/compose/material/ripple/RippleAlpha; +HSPLandroidx/compose/material/ripple/RippleTheme$Companion;->defaultRippleColor-5vOe2sY(JZ)J +Landroidx/compose/material/ripple/RippleThemeKt; +HSPLandroidx/compose/material/ripple/RippleThemeKt;->()V +HSPLandroidx/compose/material/ripple/RippleThemeKt;->access$getLightThemeLowContrastRippleAlpha$p()Landroidx/compose/material/ripple/RippleAlpha; +HSPLandroidx/compose/material/ripple/RippleThemeKt;->getLocalRippleTheme()Landroidx/compose/runtime/ProvidableCompositionLocal; +Landroidx/compose/material/ripple/RippleThemeKt$LocalRippleTheme$1; +HSPLandroidx/compose/material/ripple/RippleThemeKt$LocalRippleTheme$1;->()V +HSPLandroidx/compose/material/ripple/RippleThemeKt$LocalRippleTheme$1;->()V +Landroidx/compose/material/ripple/StateLayer; +HSPLandroidx/compose/material/ripple/StateLayer;->(ZLandroidx/compose/runtime/State;)V +HSPLandroidx/compose/material/ripple/StateLayer;->drawStateLayer-H2RKhps(Landroidx/compose/ui/graphics/drawscope/DrawScope;FJ)V +Landroidx/compose/material/ripple/UnprojectedRipple; +HSPLandroidx/compose/material/ripple/UnprojectedRipple;->()V +HSPLandroidx/compose/material/ripple/UnprojectedRipple;->(Z)V +HSPLandroidx/compose/material/ripple/UnprojectedRipple;->calculateRippleColor-5vOe2sY(JF)J +HSPLandroidx/compose/material/ripple/UnprojectedRipple;->getDirtyBounds()Landroid/graphics/Rect; +HSPLandroidx/compose/material/ripple/UnprojectedRipple;->isProjected()Z +HSPLandroidx/compose/material/ripple/UnprojectedRipple;->setColor-DxMtmZc(JF)V +HSPLandroidx/compose/material/ripple/UnprojectedRipple;->trySetRadius(I)V +Landroidx/compose/material/ripple/UnprojectedRipple$Companion; +HSPLandroidx/compose/material/ripple/UnprojectedRipple$Companion;->()V +HSPLandroidx/compose/material/ripple/UnprojectedRipple$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/material/ripple/UnprojectedRipple$MRadiusHelper; +HSPLandroidx/compose/material/ripple/UnprojectedRipple$MRadiusHelper;->()V +HSPLandroidx/compose/material/ripple/UnprojectedRipple$MRadiusHelper;->()V +HSPLandroidx/compose/material/ripple/UnprojectedRipple$MRadiusHelper;->setRadius(Landroid/graphics/drawable/RippleDrawable;I)V +Landroidx/compose/material3/AndroidMenu_androidKt; +HSPLandroidx/compose/material3/AndroidMenu_androidKt;->DropdownMenu-ILWXrKs(ZLkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;JLandroidx/compose/ui/window/PopupProperties;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +Landroidx/compose/material3/AndroidMenu_androidKt$DropdownMenu$2; +HSPLandroidx/compose/material3/AndroidMenu_androidKt$DropdownMenu$2;->(ZLkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;JLandroidx/compose/ui/window/PopupProperties;Lkotlin/jvm/functions/Function3;II)V +Landroidx/compose/material3/AppBarKt; +HSPLandroidx/compose/material3/AppBarKt;->()V +HSPLandroidx/compose/material3/AppBarKt;->rememberTopAppBarState(FFFLandroidx/compose/runtime/Composer;II)Landroidx/compose/material3/TopAppBarState; +Landroidx/compose/material3/AppBarKt$rememberTopAppBarState$1$1; +HSPLandroidx/compose/material3/AppBarKt$rememberTopAppBarState$1$1;->(FFF)V +HSPLandroidx/compose/material3/AppBarKt$rememberTopAppBarState$1$1;->invoke()Landroidx/compose/material3/TopAppBarState; +HSPLandroidx/compose/material3/AppBarKt$rememberTopAppBarState$1$1;->invoke()Ljava/lang/Object; +Landroidx/compose/material3/ButtonColors; +HSPLandroidx/compose/material3/ButtonColors;->()V +HSPLandroidx/compose/material3/ButtonColors;->(JJJJ)V +HSPLandroidx/compose/material3/ButtonColors;->(JJJJLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/ButtonColors;->containerColor$material3_release(ZLandroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +HSPLandroidx/compose/material3/ButtonColors;->contentColor$material3_release(ZLandroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +Landroidx/compose/material3/ButtonDefaults; +HSPLandroidx/compose/material3/ButtonDefaults;->()V +HSPLandroidx/compose/material3/ButtonDefaults;->()V +HSPLandroidx/compose/material3/ButtonDefaults;->buttonColors-ro_MJ88(JJJJLandroidx/compose/runtime/Composer;II)Landroidx/compose/material3/ButtonColors; +HSPLandroidx/compose/material3/ButtonDefaults;->buttonElevation-R_JCAzs(FFFFFLandroidx/compose/runtime/Composer;II)Landroidx/compose/material3/ButtonElevation; +HSPLandroidx/compose/material3/ButtonDefaults;->getContentPadding()Landroidx/compose/foundation/layout/PaddingValues; +HSPLandroidx/compose/material3/ButtonDefaults;->getMinHeight-D9Ej5fM()F +HSPLandroidx/compose/material3/ButtonDefaults;->getMinWidth-D9Ej5fM()F +HSPLandroidx/compose/material3/ButtonDefaults;->getShape(Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/graphics/Shape; +Landroidx/compose/material3/ButtonElevation; +HSPLandroidx/compose/material3/ButtonElevation;->()V +HSPLandroidx/compose/material3/ButtonElevation;->(FFFFF)V +HSPLandroidx/compose/material3/ButtonElevation;->(FFFFFLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/ButtonElevation;->access$getPressedElevation$p(Landroidx/compose/material3/ButtonElevation;)F +HSPLandroidx/compose/material3/ButtonElevation;->animateElevation(ZLandroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +HSPLandroidx/compose/material3/ButtonElevation;->shadowElevation$material3_release(ZLandroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +HSPLandroidx/compose/material3/ButtonElevation;->tonalElevation$material3_release(ZLandroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +Landroidx/compose/material3/ButtonElevation$animateElevation$1$1; +HSPLandroidx/compose/material3/ButtonElevation$animateElevation$1$1;->(Landroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/runtime/snapshots/SnapshotStateList;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/material3/ButtonElevation$animateElevation$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/material3/ButtonElevation$animateElevation$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/ButtonElevation$animateElevation$1$1$1; +HSPLandroidx/compose/material3/ButtonElevation$animateElevation$1$1$1;->(Landroidx/compose/runtime/snapshots/SnapshotStateList;)V +HSPLandroidx/compose/material3/ButtonElevation$animateElevation$1$1$1;->emit(Landroidx/compose/foundation/interaction/Interaction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/material3/ButtonElevation$animateElevation$1$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/material3/ButtonElevation$animateElevation$2; +HSPLandroidx/compose/material3/ButtonElevation$animateElevation$2;->(Landroidx/compose/animation/core/Animatable;FLkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/material3/ButtonElevation$animateElevation$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/material3/ButtonElevation$animateElevation$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/ButtonElevation$animateElevation$3; +HSPLandroidx/compose/material3/ButtonElevation$animateElevation$3;->(Landroidx/compose/animation/core/Animatable;Landroidx/compose/material3/ButtonElevation;FLandroidx/compose/foundation/interaction/Interaction;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/material3/ButtonElevation$animateElevation$3;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/material3/ButtonElevation$animateElevation$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/ButtonKt; +HSPLandroidx/compose/material3/ButtonKt;->Button(Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;ZLandroidx/compose/ui/graphics/Shape;Landroidx/compose/material3/ButtonColors;Landroidx/compose/material3/ButtonElevation;Landroidx/compose/foundation/BorderStroke;Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +Landroidx/compose/material3/ButtonKt$Button$2; +HSPLandroidx/compose/material3/ButtonKt$Button$2;->()V +HSPLandroidx/compose/material3/ButtonKt$Button$2;->()V +HSPLandroidx/compose/material3/ButtonKt$Button$2;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/material3/ButtonKt$Button$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/ButtonKt$Button$3; +HSPLandroidx/compose/material3/ButtonKt$Button$3;->(JLandroidx/compose/foundation/layout/PaddingValues;Lkotlin/jvm/functions/Function3;I)V +HSPLandroidx/compose/material3/ButtonKt$Button$3;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/ButtonKt$Button$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/ButtonKt$Button$3$1; +HSPLandroidx/compose/material3/ButtonKt$Button$3$1;->(Landroidx/compose/foundation/layout/PaddingValues;Lkotlin/jvm/functions/Function3;I)V +HSPLandroidx/compose/material3/ButtonKt$Button$3$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/ButtonKt$Button$3$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/ButtonKt$Button$3$1$1; +HSPLandroidx/compose/material3/ButtonKt$Button$3$1$1;->(Landroidx/compose/foundation/layout/PaddingValues;Lkotlin/jvm/functions/Function3;I)V +HSPLandroidx/compose/material3/ButtonKt$Button$3$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/ButtonKt$Button$3$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/ButtonKt$Button$4; +HSPLandroidx/compose/material3/ButtonKt$Button$4;->(Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;ZLandroidx/compose/ui/graphics/Shape;Landroidx/compose/material3/ButtonColors;Landroidx/compose/material3/ButtonElevation;Landroidx/compose/foundation/BorderStroke;Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function3;II)V +HSPLandroidx/compose/material3/ButtonKt$Button$4;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/ButtonKt$Button$4;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/CheckDrawingCache; +HSPLandroidx/compose/material3/CheckDrawingCache;->(Landroidx/compose/ui/graphics/Path;Landroidx/compose/ui/graphics/PathMeasure;Landroidx/compose/ui/graphics/Path;)V +HSPLandroidx/compose/material3/CheckDrawingCache;->(Landroidx/compose/ui/graphics/Path;Landroidx/compose/ui/graphics/PathMeasure;Landroidx/compose/ui/graphics/Path;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/CheckDrawingCache;->getCheckPath()Landroidx/compose/ui/graphics/Path; +HSPLandroidx/compose/material3/CheckDrawingCache;->getPathMeasure()Landroidx/compose/ui/graphics/PathMeasure; +HSPLandroidx/compose/material3/CheckDrawingCache;->getPathToDraw()Landroidx/compose/ui/graphics/Path; +Landroidx/compose/material3/CheckboxColors; +HSPLandroidx/compose/material3/CheckboxColors;->()V +HSPLandroidx/compose/material3/CheckboxColors;->(JJJJJJJJJJJ)V +HSPLandroidx/compose/material3/CheckboxColors;->(JJJJJJJJJJJLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/CheckboxColors;->borderColor$material3_release(ZLandroidx/compose/ui/state/ToggleableState;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +HSPLandroidx/compose/material3/CheckboxColors;->boxColor$material3_release(ZLandroidx/compose/ui/state/ToggleableState;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +HSPLandroidx/compose/material3/CheckboxColors;->checkmarkColor$material3_release(Landroidx/compose/ui/state/ToggleableState;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +Landroidx/compose/material3/CheckboxColors$WhenMappings; +HSPLandroidx/compose/material3/CheckboxColors$WhenMappings;->()V +Landroidx/compose/material3/CheckboxDefaults; +HSPLandroidx/compose/material3/CheckboxDefaults;->()V +HSPLandroidx/compose/material3/CheckboxDefaults;->()V +HSPLandroidx/compose/material3/CheckboxDefaults;->colors-5tl4gsc(JJJJJJLandroidx/compose/runtime/Composer;II)Landroidx/compose/material3/CheckboxColors; +Landroidx/compose/material3/CheckboxKt; +HSPLandroidx/compose/material3/CheckboxKt;->()V +HSPLandroidx/compose/material3/CheckboxKt;->Checkbox(ZLkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;ZLandroidx/compose/material3/CheckboxColors;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/material3/CheckboxKt;->CheckboxImpl(ZLandroidx/compose/ui/state/ToggleableState;Landroidx/compose/ui/Modifier;Landroidx/compose/material3/CheckboxColors;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/CheckboxKt;->TriStateCheckbox(Landroidx/compose/ui/state/ToggleableState;Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;ZLandroidx/compose/material3/CheckboxColors;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/material3/CheckboxKt;->access$drawBox-1wkBAMs(Landroidx/compose/ui/graphics/drawscope/DrawScope;JJFF)V +HSPLandroidx/compose/material3/CheckboxKt;->access$drawCheck-3IgeMak(Landroidx/compose/ui/graphics/drawscope/DrawScope;JFFFLandroidx/compose/material3/CheckDrawingCache;)V +HSPLandroidx/compose/material3/CheckboxKt;->access$getRadiusSize$p()F +HSPLandroidx/compose/material3/CheckboxKt;->access$getStrokeWidth$p()F +HSPLandroidx/compose/material3/CheckboxKt;->drawBox-1wkBAMs(Landroidx/compose/ui/graphics/drawscope/DrawScope;JJFF)V +HSPLandroidx/compose/material3/CheckboxKt;->drawCheck-3IgeMak(Landroidx/compose/ui/graphics/drawscope/DrawScope;JFFFLandroidx/compose/material3/CheckDrawingCache;)V +Landroidx/compose/material3/CheckboxKt$Checkbox$3; +HSPLandroidx/compose/material3/CheckboxKt$Checkbox$3;->(ZLkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;ZLandroidx/compose/material3/CheckboxColors;Landroidx/compose/foundation/interaction/MutableInteractionSource;II)V +Landroidx/compose/material3/CheckboxKt$CheckboxImpl$1$1; +HSPLandroidx/compose/material3/CheckboxKt$CheckboxImpl$1$1;->(Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/material3/CheckDrawingCache;)V +HSPLandroidx/compose/material3/CheckboxKt$CheckboxImpl$1$1;->invoke(Landroidx/compose/ui/graphics/drawscope/DrawScope;)V +HSPLandroidx/compose/material3/CheckboxKt$CheckboxImpl$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/CheckboxKt$CheckboxImpl$2; +HSPLandroidx/compose/material3/CheckboxKt$CheckboxImpl$2;->(ZLandroidx/compose/ui/state/ToggleableState;Landroidx/compose/ui/Modifier;Landroidx/compose/material3/CheckboxColors;I)V +Landroidx/compose/material3/CheckboxKt$CheckboxImpl$checkCenterGravitationShiftFraction$1; +HSPLandroidx/compose/material3/CheckboxKt$CheckboxImpl$checkCenterGravitationShiftFraction$1;->()V +HSPLandroidx/compose/material3/CheckboxKt$CheckboxImpl$checkCenterGravitationShiftFraction$1;->()V +HSPLandroidx/compose/material3/CheckboxKt$CheckboxImpl$checkCenterGravitationShiftFraction$1;->invoke(Landroidx/compose/animation/core/Transition$Segment;Landroidx/compose/runtime/Composer;I)Landroidx/compose/animation/core/FiniteAnimationSpec; +HSPLandroidx/compose/material3/CheckboxKt$CheckboxImpl$checkCenterGravitationShiftFraction$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/CheckboxKt$CheckboxImpl$checkDrawFraction$1; +HSPLandroidx/compose/material3/CheckboxKt$CheckboxImpl$checkDrawFraction$1;->()V +HSPLandroidx/compose/material3/CheckboxKt$CheckboxImpl$checkDrawFraction$1;->()V +HSPLandroidx/compose/material3/CheckboxKt$CheckboxImpl$checkDrawFraction$1;->invoke(Landroidx/compose/animation/core/Transition$Segment;Landroidx/compose/runtime/Composer;I)Landroidx/compose/animation/core/FiniteAnimationSpec; +HSPLandroidx/compose/material3/CheckboxKt$CheckboxImpl$checkDrawFraction$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/CheckboxKt$WhenMappings; +HSPLandroidx/compose/material3/CheckboxKt$WhenMappings;->()V +Landroidx/compose/material3/ColorResourceHelper; +HSPLandroidx/compose/material3/ColorResourceHelper;->()V +HSPLandroidx/compose/material3/ColorResourceHelper;->()V +HSPLandroidx/compose/material3/ColorResourceHelper;->getColor-WaAFU9c(Landroid/content/Context;I)J +Landroidx/compose/material3/ColorScheme; +HSPLandroidx/compose/material3/ColorScheme;->()V +HSPLandroidx/compose/material3/ColorScheme;->(JJJJJJJJJJJJJJJJJJJJJJJJJJJJJ)V +HSPLandroidx/compose/material3/ColorScheme;->(JJJJJJJJJJJJJJJJJJJJJJJJJJJJJLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/ColorScheme;->copy-G1PFc-w$default(Landroidx/compose/material3/ColorScheme;JJJJJJJJJJJJJJJJJJJJJJJJJJJJJILjava/lang/Object;)Landroidx/compose/material3/ColorScheme; +HSPLandroidx/compose/material3/ColorScheme;->copy-G1PFc-w(JJJJJJJJJJJJJJJJJJJJJJJJJJJJJ)Landroidx/compose/material3/ColorScheme; +HSPLandroidx/compose/material3/ColorScheme;->getBackground-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getError-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getErrorContainer-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getInverseOnSurface-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getInversePrimary-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getInverseSurface-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getOnBackground-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getOnError-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getOnErrorContainer-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getOnPrimary-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getOnPrimaryContainer-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getOnSecondary-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getOnSecondaryContainer-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getOnSurface-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getOnSurfaceVariant-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getOnTertiary-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getOnTertiaryContainer-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getOutline-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getOutlineVariant-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getPrimary-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getPrimaryContainer-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getScrim-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getSecondary-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getSecondaryContainer-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getSurface-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getSurfaceTint-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getSurfaceVariant-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getTertiary-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->getTertiaryContainer-0d7_KjU()J +HSPLandroidx/compose/material3/ColorScheme;->setBackground-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setError-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setErrorContainer-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setInverseOnSurface-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setInversePrimary-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setInverseSurface-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setOnBackground-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setOnError-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setOnErrorContainer-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setOnPrimary-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setOnPrimaryContainer-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setOnSecondary-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setOnSecondaryContainer-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setOnSurface-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setOnSurfaceVariant-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setOnTertiary-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setOnTertiaryContainer-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setOutline-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setOutlineVariant-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setPrimary-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setPrimaryContainer-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setScrim-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setSecondary-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setSecondaryContainer-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setSurface-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setSurfaceTint-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setSurfaceVariant-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setTertiary-8_81llA$material3_release(J)V +HSPLandroidx/compose/material3/ColorScheme;->setTertiaryContainer-8_81llA$material3_release(J)V +Landroidx/compose/material3/ColorSchemeKt; +HSPLandroidx/compose/material3/ColorSchemeKt;->()V +HSPLandroidx/compose/material3/ColorSchemeKt;->contentColorFor-4WTKRHQ(Landroidx/compose/material3/ColorScheme;J)J +HSPLandroidx/compose/material3/ColorSchemeKt;->contentColorFor-ek8zF_U(JLandroidx/compose/runtime/Composer;I)J +HSPLandroidx/compose/material3/ColorSchemeKt;->fromToken(Landroidx/compose/material3/ColorScheme;Landroidx/compose/material3/tokens/ColorSchemeKeyTokens;)J +HSPLandroidx/compose/material3/ColorSchemeKt;->getLocalColorScheme()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/material3/ColorSchemeKt;->lightColorScheme-G1PFc-w$default(JJJJJJJJJJJJJJJJJJJJJJJJJJJJJILjava/lang/Object;)Landroidx/compose/material3/ColorScheme; +HSPLandroidx/compose/material3/ColorSchemeKt;->lightColorScheme-G1PFc-w(JJJJJJJJJJJJJJJJJJJJJJJJJJJJJ)Landroidx/compose/material3/ColorScheme; +HSPLandroidx/compose/material3/ColorSchemeKt;->surfaceColorAtElevation-3ABfNKs(Landroidx/compose/material3/ColorScheme;F)J +HSPLandroidx/compose/material3/ColorSchemeKt;->toColor(Landroidx/compose/material3/tokens/ColorSchemeKeyTokens;Landroidx/compose/runtime/Composer;I)J +HSPLandroidx/compose/material3/ColorSchemeKt;->updateColorSchemeFrom(Landroidx/compose/material3/ColorScheme;Landroidx/compose/material3/ColorScheme;)V +Landroidx/compose/material3/ColorSchemeKt$LocalColorScheme$1; +HSPLandroidx/compose/material3/ColorSchemeKt$LocalColorScheme$1;->()V +HSPLandroidx/compose/material3/ColorSchemeKt$LocalColorScheme$1;->()V +Landroidx/compose/material3/ColorSchemeKt$WhenMappings; +HSPLandroidx/compose/material3/ColorSchemeKt$WhenMappings;->()V +Landroidx/compose/material3/ContentColorKt; +HSPLandroidx/compose/material3/ContentColorKt;->()V +HSPLandroidx/compose/material3/ContentColorKt;->getLocalContentColor()Landroidx/compose/runtime/ProvidableCompositionLocal; +Landroidx/compose/material3/ContentColorKt$LocalContentColor$1; +HSPLandroidx/compose/material3/ContentColorKt$LocalContentColor$1;->()V +HSPLandroidx/compose/material3/ContentColorKt$LocalContentColor$1;->()V +Landroidx/compose/material3/DefaultPlatformTextStyle_androidKt; +HSPLandroidx/compose/material3/DefaultPlatformTextStyle_androidKt;->()V +HSPLandroidx/compose/material3/DefaultPlatformTextStyle_androidKt;->defaultPlatformTextStyle()Landroidx/compose/ui/text/PlatformTextStyle; +Landroidx/compose/material3/DynamicTonalPaletteKt; +HSPLandroidx/compose/material3/DynamicTonalPaletteKt;->dynamicLightColorScheme(Landroid/content/Context;)Landroidx/compose/material3/ColorScheme; +HSPLandroidx/compose/material3/DynamicTonalPaletteKt;->dynamicTonalPalette(Landroid/content/Context;)Landroidx/compose/material3/TonalPalette; +Landroidx/compose/material3/ElevationDefaults; +HSPLandroidx/compose/material3/ElevationDefaults;->()V +HSPLandroidx/compose/material3/ElevationDefaults;->()V +HSPLandroidx/compose/material3/ElevationDefaults;->outgoingAnimationSpecForInteraction(Landroidx/compose/foundation/interaction/Interaction;)Landroidx/compose/animation/core/AnimationSpec; +Landroidx/compose/material3/ElevationKt; +HSPLandroidx/compose/material3/ElevationKt;->()V +HSPLandroidx/compose/material3/ElevationKt;->access$getDefaultOutgoingSpec$p()Landroidx/compose/animation/core/TweenSpec; +HSPLandroidx/compose/material3/ElevationKt;->animateElevation-rAjV9yQ(Landroidx/compose/animation/core/Animatable;FLandroidx/compose/foundation/interaction/Interaction;Landroidx/compose/foundation/interaction/Interaction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/material3/FabPlacement; +Landroidx/compose/material3/FabPosition; +HSPLandroidx/compose/material3/FabPosition;->()V +HSPLandroidx/compose/material3/FabPosition;->(I)V +HSPLandroidx/compose/material3/FabPosition;->access$getEnd$cp()I +HSPLandroidx/compose/material3/FabPosition;->box-impl(I)Landroidx/compose/material3/FabPosition; +HSPLandroidx/compose/material3/FabPosition;->constructor-impl(I)I +Landroidx/compose/material3/FabPosition$Companion; +HSPLandroidx/compose/material3/FabPosition$Companion;->()V +HSPLandroidx/compose/material3/FabPosition$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/FabPosition$Companion;->getEnd-ERTFSPs()I +Landroidx/compose/material3/IconButtonColors; +HSPLandroidx/compose/material3/IconButtonColors;->()V +HSPLandroidx/compose/material3/IconButtonColors;->(JJJJ)V +HSPLandroidx/compose/material3/IconButtonColors;->(JJJJLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/IconButtonColors;->containerColor$material3_release(ZLandroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +HSPLandroidx/compose/material3/IconButtonColors;->contentColor$material3_release(ZLandroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +Landroidx/compose/material3/IconButtonDefaults; +HSPLandroidx/compose/material3/IconButtonDefaults;->()V +HSPLandroidx/compose/material3/IconButtonDefaults;->()V +HSPLandroidx/compose/material3/IconButtonDefaults;->iconButtonColors-ro_MJ88(JJJJLandroidx/compose/runtime/Composer;II)Landroidx/compose/material3/IconButtonColors; +Landroidx/compose/material3/IconButtonKt; +HSPLandroidx/compose/material3/IconButtonKt;->IconButton(Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;ZLandroidx/compose/material3/IconButtonColors;Landroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +Landroidx/compose/material3/IconButtonKt$IconButton$3; +HSPLandroidx/compose/material3/IconButtonKt$IconButton$3;->(Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;ZLandroidx/compose/material3/IconButtonColors;Landroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function2;II)V +Landroidx/compose/material3/IconKt; +HSPLandroidx/compose/material3/IconKt;->()V +HSPLandroidx/compose/material3/IconKt;->Icon-ww6aTOc(Landroidx/compose/ui/graphics/painter/Painter;Ljava/lang/String;Landroidx/compose/ui/Modifier;JLandroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/material3/IconKt;->Icon-ww6aTOc(Landroidx/compose/ui/graphics/vector/ImageVector;Ljava/lang/String;Landroidx/compose/ui/Modifier;JLandroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/material3/IconKt;->defaultSizeFor(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/painter/Painter;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/material3/IconKt;->isInfinite-uvyYCjk(J)Z +Landroidx/compose/material3/IconKt$Icon$1; +HSPLandroidx/compose/material3/IconKt$Icon$1;->(Landroidx/compose/ui/graphics/vector/ImageVector;Ljava/lang/String;Landroidx/compose/ui/Modifier;JII)V +HSPLandroidx/compose/material3/IconKt$Icon$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/IconKt$Icon$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/IconKt$Icon$3; +HSPLandroidx/compose/material3/IconKt$Icon$3;->(Landroidx/compose/ui/graphics/painter/Painter;Ljava/lang/String;Landroidx/compose/ui/Modifier;JII)V +Landroidx/compose/material3/InteractiveComponentSizeKt; +HSPLandroidx/compose/material3/InteractiveComponentSizeKt;->()V +HSPLandroidx/compose/material3/InteractiveComponentSizeKt;->access$getMinimumInteractiveComponentSize$p()J +HSPLandroidx/compose/material3/InteractiveComponentSizeKt;->getLocalMinimumInteractiveComponentEnforcement()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/material3/InteractiveComponentSizeKt;->minimumInteractiveComponentSize(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier; +Landroidx/compose/material3/InteractiveComponentSizeKt$LocalMinimumInteractiveComponentEnforcement$1; +HSPLandroidx/compose/material3/InteractiveComponentSizeKt$LocalMinimumInteractiveComponentEnforcement$1;->()V +HSPLandroidx/compose/material3/InteractiveComponentSizeKt$LocalMinimumInteractiveComponentEnforcement$1;->()V +HSPLandroidx/compose/material3/InteractiveComponentSizeKt$LocalMinimumInteractiveComponentEnforcement$1;->invoke()Ljava/lang/Boolean; +HSPLandroidx/compose/material3/InteractiveComponentSizeKt$LocalMinimumInteractiveComponentEnforcement$1;->invoke()Ljava/lang/Object; +Landroidx/compose/material3/InteractiveComponentSizeKt$minimumInteractiveComponentSize$2; +HSPLandroidx/compose/material3/InteractiveComponentSizeKt$minimumInteractiveComponentSize$2;->()V +HSPLandroidx/compose/material3/InteractiveComponentSizeKt$minimumInteractiveComponentSize$2;->()V +HSPLandroidx/compose/material3/InteractiveComponentSizeKt$minimumInteractiveComponentSize$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/material3/InteractiveComponentSizeKt$minimumInteractiveComponentSize$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/InternalMutatorMutex; +HSPLandroidx/compose/material3/InternalMutatorMutex;->()V +Landroidx/compose/material3/MappedInteractionSource; +HSPLandroidx/compose/material3/MappedInteractionSource;->(Landroidx/compose/foundation/interaction/InteractionSource;J)V +HSPLandroidx/compose/material3/MappedInteractionSource;->(Landroidx/compose/foundation/interaction/InteractionSource;JLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/MappedInteractionSource;->getInteractions()Lkotlinx/coroutines/flow/Flow; +Landroidx/compose/material3/MappedInteractionSource$special$$inlined$map$1; +HSPLandroidx/compose/material3/MappedInteractionSource$special$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Landroidx/compose/material3/MappedInteractionSource;)V +HSPLandroidx/compose/material3/MappedInteractionSource$special$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/material3/MappedInteractionSource$special$$inlined$map$1$2; +HSPLandroidx/compose/material3/MappedInteractionSource$special$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Landroidx/compose/material3/MappedInteractionSource;)V +Landroidx/compose/material3/MaterialRippleTheme; +HSPLandroidx/compose/material3/MaterialRippleTheme;->()V +HSPLandroidx/compose/material3/MaterialRippleTheme;->()V +Landroidx/compose/material3/MaterialTheme; +HSPLandroidx/compose/material3/MaterialTheme;->()V +HSPLandroidx/compose/material3/MaterialTheme;->()V +HSPLandroidx/compose/material3/MaterialTheme;->getColorScheme(Landroidx/compose/runtime/Composer;I)Landroidx/compose/material3/ColorScheme; +HSPLandroidx/compose/material3/MaterialTheme;->getShapes(Landroidx/compose/runtime/Composer;I)Landroidx/compose/material3/Shapes; +HSPLandroidx/compose/material3/MaterialTheme;->getTypography(Landroidx/compose/runtime/Composer;I)Landroidx/compose/material3/Typography; +Landroidx/compose/material3/MaterialThemeKt; +HSPLandroidx/compose/material3/MaterialThemeKt;->()V +HSPLandroidx/compose/material3/MaterialThemeKt;->MaterialTheme(Landroidx/compose/material3/ColorScheme;Landroidx/compose/material3/Shapes;Landroidx/compose/material3/Typography;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/material3/MaterialThemeKt;->rememberTextSelectionColors(Landroidx/compose/material3/ColorScheme;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/text/selection/TextSelectionColors; +Landroidx/compose/material3/MaterialThemeKt$MaterialTheme$1; +HSPLandroidx/compose/material3/MaterialThemeKt$MaterialTheme$1;->(Landroidx/compose/material3/Typography;Lkotlin/jvm/functions/Function2;I)V +HSPLandroidx/compose/material3/MaterialThemeKt$MaterialTheme$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/MaterialThemeKt$MaterialTheme$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/MaterialThemeKt$MaterialTheme$2; +HSPLandroidx/compose/material3/MaterialThemeKt$MaterialTheme$2;->(Landroidx/compose/material3/ColorScheme;Landroidx/compose/material3/Shapes;Landroidx/compose/material3/Typography;Lkotlin/jvm/functions/Function2;II)V +Landroidx/compose/material3/MinimumInteractiveComponentSizeModifier; +HSPLandroidx/compose/material3/MinimumInteractiveComponentSizeModifier;->(J)V +HSPLandroidx/compose/material3/MinimumInteractiveComponentSizeModifier;->(JLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/MinimumInteractiveComponentSizeModifier;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/material3/MinimumInteractiveComponentSizeModifier;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/material3/MinimumInteractiveComponentSizeModifier$measure$1; +HSPLandroidx/compose/material3/MinimumInteractiveComponentSizeModifier$measure$1;->(ILandroidx/compose/ui/layout/Placeable;I)V +HSPLandroidx/compose/material3/MinimumInteractiveComponentSizeModifier$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/material3/MinimumInteractiveComponentSizeModifier$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/ModalBottomSheet_androidKt; +HSPLandroidx/compose/material3/ModalBottomSheet_androidKt;->rememberModalBottomSheetState(ZLkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)Landroidx/compose/material3/SheetState; +Landroidx/compose/material3/ModalBottomSheet_androidKt$rememberModalBottomSheetState$1; +HSPLandroidx/compose/material3/ModalBottomSheet_androidKt$rememberModalBottomSheetState$1;->()V +HSPLandroidx/compose/material3/ModalBottomSheet_androidKt$rememberModalBottomSheetState$1;->()V +Landroidx/compose/material3/NavigationBarItemColors; +HSPLandroidx/compose/material3/NavigationBarItemColors;->()V +HSPLandroidx/compose/material3/NavigationBarItemColors;->(JJJJJJJ)V +HSPLandroidx/compose/material3/NavigationBarItemColors;->(JJJJJJJLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/NavigationBarItemColors;->getIndicatorColor-0d7_KjU$material3_release()J +HSPLandroidx/compose/material3/NavigationBarItemColors;->iconColor$material3_release(ZZLandroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +HSPLandroidx/compose/material3/NavigationBarItemColors;->textColor$material3_release(ZZLandroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +Landroidx/compose/material3/NavigationBarItemDefaults; +HSPLandroidx/compose/material3/NavigationBarItemDefaults;->()V +HSPLandroidx/compose/material3/NavigationBarItemDefaults;->()V +HSPLandroidx/compose/material3/NavigationBarItemDefaults;->colors-69fazGs(JJJJJJJLandroidx/compose/runtime/Composer;II)Landroidx/compose/material3/NavigationBarItemColors; +Landroidx/compose/material3/NavigationBarKt; +HSPLandroidx/compose/material3/NavigationBarKt;->()V +HSPLandroidx/compose/material3/NavigationBarKt;->NavigationBarItem$lambda$3(Landroidx/compose/runtime/MutableState;)I +HSPLandroidx/compose/material3/NavigationBarKt;->NavigationBarItem$lambda$4(Landroidx/compose/runtime/MutableState;I)V +HSPLandroidx/compose/material3/NavigationBarKt;->NavigationBarItem$lambda$9$lambda$6(Landroidx/compose/runtime/State;)F +HSPLandroidx/compose/material3/NavigationBarKt;->NavigationBarItem(Landroidx/compose/foundation/layout/RowScope;ZLkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function2;Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function2;ZLandroidx/compose/material3/NavigationBarItemColors;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/material3/NavigationBarKt;->NavigationBarItemBaselineLayout(Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;ZFLandroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/NavigationBarKt;->access$NavigationBarItem$lambda$4(Landroidx/compose/runtime/MutableState;I)V +HSPLandroidx/compose/material3/NavigationBarKt;->access$NavigationBarItem$lambda$9$lambda$6(Landroidx/compose/runtime/State;)F +HSPLandroidx/compose/material3/NavigationBarKt;->access$getIndicatorHorizontalPadding$p()F +HSPLandroidx/compose/material3/NavigationBarKt;->access$getIndicatorVerticalPadding$p()F +HSPLandroidx/compose/material3/NavigationBarKt;->access$placeLabelAndIcon-zUg2_y0(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/layout/Placeable;JZF)Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/material3/NavigationBarKt;->placeLabelAndIcon-zUg2_y0(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/layout/Placeable;JZF)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/material3/NavigationBarKt$NavigationBarItem$2$1; +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$2$1;->(Landroidx/compose/runtime/MutableState;)V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$2$1;->invoke-ozmzZPI(J)V +Landroidx/compose/material3/NavigationBarKt$NavigationBarItem$3$indicator$1; +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$3$indicator$1;->(Landroidx/compose/material3/NavigationBarItemColors;Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$3$indicator$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$3$indicator$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/NavigationBarKt$NavigationBarItem$3$indicatorRipple$1; +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$3$indicatorRipple$1;->(Landroidx/compose/material3/MappedInteractionSource;)V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$3$indicatorRipple$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$3$indicatorRipple$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/NavigationBarKt$NavigationBarItem$4; +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$4;->(Landroidx/compose/foundation/layout/RowScope;ZLkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function2;Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function2;ZLandroidx/compose/material3/NavigationBarItemColors;Landroidx/compose/foundation/interaction/MutableInteractionSource;II)V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$4;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$4;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledIcon$1; +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledIcon$1;->(Landroidx/compose/material3/NavigationBarItemColors;ZZILkotlin/jvm/functions/Function2;ZLkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledIcon$1;->invoke$lambda$0(Landroidx/compose/runtime/State;)J +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledIcon$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledIcon$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledIcon$1$1; +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledIcon$1$1;->()V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledIcon$1$1;->()V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledIcon$1$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledIcon$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledLabel$1$1; +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledLabel$1$1;->(Landroidx/compose/material3/NavigationBarItemColors;ZZILkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledLabel$1$1;->invoke$lambda$0(Landroidx/compose/runtime/State;)J +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledLabel$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledLabel$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledLabel$1$1$1; +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledLabel$1$1$1;->(Landroidx/compose/ui/text/TextStyle;Lkotlin/jvm/functions/Function2;I)V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledLabel$1$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItem$styledLabel$1$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/NavigationBarKt$NavigationBarItemBaselineLayout$2; +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItemBaselineLayout$2;->(FLkotlin/jvm/functions/Function2;Z)V +HSPLandroidx/compose/material3/NavigationBarKt$NavigationBarItemBaselineLayout$2;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/material3/NavigationBarKt$placeLabelAndIcon$1; +HSPLandroidx/compose/material3/NavigationBarKt$placeLabelAndIcon$1;->(Landroidx/compose/ui/layout/Placeable;ZFLandroidx/compose/ui/layout/Placeable;IIILandroidx/compose/ui/layout/Placeable;IILandroidx/compose/ui/layout/Placeable;IIILandroidx/compose/ui/layout/MeasureScope;)V +HSPLandroidx/compose/material3/NavigationBarKt$placeLabelAndIcon$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/material3/NavigationBarKt$placeLabelAndIcon$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/PinnedScrollBehavior; +HSPLandroidx/compose/material3/PinnedScrollBehavior;->(Landroidx/compose/material3/TopAppBarState;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/material3/PinnedScrollBehavior;->getNestedScrollConnection()Landroidx/compose/ui/input/nestedscroll/NestedScrollConnection; +HSPLandroidx/compose/material3/PinnedScrollBehavior;->getState()Landroidx/compose/material3/TopAppBarState; +HSPLandroidx/compose/material3/PinnedScrollBehavior;->isPinned()Z +Landroidx/compose/material3/PinnedScrollBehavior$nestedScrollConnection$1; +HSPLandroidx/compose/material3/PinnedScrollBehavior$nestedScrollConnection$1;->(Landroidx/compose/material3/PinnedScrollBehavior;)V +Landroidx/compose/material3/ProgressIndicatorDefaults; +HSPLandroidx/compose/material3/ProgressIndicatorDefaults;->()V +HSPLandroidx/compose/material3/ProgressIndicatorDefaults;->()V +HSPLandroidx/compose/material3/ProgressIndicatorDefaults;->getCircularColor(Landroidx/compose/runtime/Composer;I)J +HSPLandroidx/compose/material3/ProgressIndicatorDefaults;->getCircularIndeterminateStrokeCap-KaPHkGw()I +HSPLandroidx/compose/material3/ProgressIndicatorDefaults;->getCircularStrokeWidth-D9Ej5fM()F +HSPLandroidx/compose/material3/ProgressIndicatorDefaults;->getCircularTrackColor(Landroidx/compose/runtime/Composer;I)J +Landroidx/compose/material3/ProgressIndicatorKt; +HSPLandroidx/compose/material3/ProgressIndicatorKt;->()V +HSPLandroidx/compose/material3/ProgressIndicatorKt;->CircularProgressIndicator-LxG7B9w(Landroidx/compose/ui/Modifier;JFJILandroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/material3/ProgressIndicatorKt;->access$drawCircularIndicatorTrack-bw27NRU(Landroidx/compose/ui/graphics/drawscope/DrawScope;JLandroidx/compose/ui/graphics/drawscope/Stroke;)V +HSPLandroidx/compose/material3/ProgressIndicatorKt;->access$drawIndeterminateCircularIndicator-hrjfTZI(Landroidx/compose/ui/graphics/drawscope/DrawScope;FFFJLandroidx/compose/ui/graphics/drawscope/Stroke;)V +HSPLandroidx/compose/material3/ProgressIndicatorKt;->access$getCircularEasing$p()Landroidx/compose/animation/core/CubicBezierEasing; +HSPLandroidx/compose/material3/ProgressIndicatorKt;->drawCircularIndicator-42QJj7c(Landroidx/compose/ui/graphics/drawscope/DrawScope;FFJLandroidx/compose/ui/graphics/drawscope/Stroke;)V +HSPLandroidx/compose/material3/ProgressIndicatorKt;->drawCircularIndicatorTrack-bw27NRU(Landroidx/compose/ui/graphics/drawscope/DrawScope;JLandroidx/compose/ui/graphics/drawscope/Stroke;)V +HSPLandroidx/compose/material3/ProgressIndicatorKt;->drawIndeterminateCircularIndicator-hrjfTZI(Landroidx/compose/ui/graphics/drawscope/DrawScope;FFFJLandroidx/compose/ui/graphics/drawscope/Stroke;)V +Landroidx/compose/material3/ProgressIndicatorKt$CircularProgressIndicator$3; +HSPLandroidx/compose/material3/ProgressIndicatorKt$CircularProgressIndicator$3;->(JLandroidx/compose/ui/graphics/drawscope/Stroke;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;FJ)V +HSPLandroidx/compose/material3/ProgressIndicatorKt$CircularProgressIndicator$3;->invoke(Landroidx/compose/ui/graphics/drawscope/DrawScope;)V +HSPLandroidx/compose/material3/ProgressIndicatorKt$CircularProgressIndicator$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/ProgressIndicatorKt$CircularProgressIndicator$4; +HSPLandroidx/compose/material3/ProgressIndicatorKt$CircularProgressIndicator$4;->(Landroidx/compose/ui/Modifier;JFJIII)V +Landroidx/compose/material3/ProgressIndicatorKt$CircularProgressIndicator$endAngle$1; +HSPLandroidx/compose/material3/ProgressIndicatorKt$CircularProgressIndicator$endAngle$1;->()V +HSPLandroidx/compose/material3/ProgressIndicatorKt$CircularProgressIndicator$endAngle$1;->()V +HSPLandroidx/compose/material3/ProgressIndicatorKt$CircularProgressIndicator$endAngle$1;->invoke(Landroidx/compose/animation/core/KeyframesSpec$KeyframesSpecConfig;)V +HSPLandroidx/compose/material3/ProgressIndicatorKt$CircularProgressIndicator$endAngle$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/ProgressIndicatorKt$CircularProgressIndicator$startAngle$1; +HSPLandroidx/compose/material3/ProgressIndicatorKt$CircularProgressIndicator$startAngle$1;->()V +HSPLandroidx/compose/material3/ProgressIndicatorKt$CircularProgressIndicator$startAngle$1;->()V +HSPLandroidx/compose/material3/ProgressIndicatorKt$CircularProgressIndicator$startAngle$1;->invoke(Landroidx/compose/animation/core/KeyframesSpec$KeyframesSpecConfig;)V +HSPLandroidx/compose/material3/ProgressIndicatorKt$CircularProgressIndicator$startAngle$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/ScaffoldKt; +HSPLandroidx/compose/material3/ScaffoldKt;->()V +HSPLandroidx/compose/material3/ScaffoldKt;->Scaffold-TvnljyQ(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;IJJLandroidx/compose/foundation/layout/WindowInsets;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/material3/ScaffoldKt;->ScaffoldLayout-FMILGgc(ILkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Landroidx/compose/foundation/layout/WindowInsets;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/ScaffoldKt;->access$ScaffoldLayout-FMILGgc(ILkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Landroidx/compose/foundation/layout/WindowInsets;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/ScaffoldKt;->getLocalFabPlacement()Landroidx/compose/runtime/ProvidableCompositionLocal; +Landroidx/compose/material3/ScaffoldKt$LocalFabPlacement$1; +HSPLandroidx/compose/material3/ScaffoldKt$LocalFabPlacement$1;->()V +HSPLandroidx/compose/material3/ScaffoldKt$LocalFabPlacement$1;->()V +Landroidx/compose/material3/ScaffoldKt$Scaffold$1; +HSPLandroidx/compose/material3/ScaffoldKt$Scaffold$1;->(ILkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Landroidx/compose/foundation/layout/WindowInsets;Lkotlin/jvm/functions/Function2;I)V +HSPLandroidx/compose/material3/ScaffoldKt$Scaffold$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/ScaffoldKt$Scaffold$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/ScaffoldKt$Scaffold$2; +HSPLandroidx/compose/material3/ScaffoldKt$Scaffold$2;->(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;IJJLandroidx/compose/foundation/layout/WindowInsets;Lkotlin/jvm/functions/Function3;II)V +Landroidx/compose/material3/ScaffoldKt$ScaffoldLayout$1$1; +HSPLandroidx/compose/material3/ScaffoldKt$ScaffoldLayout$1$1;->(Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;ILandroidx/compose/foundation/layout/WindowInsets;Lkotlin/jvm/functions/Function2;ILkotlin/jvm/functions/Function3;)V +HSPLandroidx/compose/material3/ScaffoldKt$ScaffoldLayout$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/material3/ScaffoldKt$ScaffoldLayout$1$1;->invoke-0kLqBqw(Landroidx/compose/ui/layout/SubcomposeMeasureScope;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/material3/ScaffoldKt$ScaffoldLayout$1$1$1; +HSPLandroidx/compose/material3/ScaffoldKt$ScaffoldLayout$1$1$1;->(Landroidx/compose/ui/layout/SubcomposeMeasureScope;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;IILandroidx/compose/foundation/layout/WindowInsets;JLkotlin/jvm/functions/Function2;ILkotlin/jvm/functions/Function3;I)V +HSPLandroidx/compose/material3/ScaffoldKt$ScaffoldLayout$1$1$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/material3/ScaffoldKt$ScaffoldLayout$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/ScaffoldKt$ScaffoldLayout$1$1$1$bodyContentPlaceables$1; +HSPLandroidx/compose/material3/ScaffoldKt$ScaffoldLayout$1$1$1$bodyContentPlaceables$1;->(Landroidx/compose/foundation/layout/WindowInsets;Landroidx/compose/ui/layout/SubcomposeMeasureScope;Ljava/util/List;ILjava/util/List;Ljava/lang/Integer;Lkotlin/jvm/functions/Function3;I)V +HSPLandroidx/compose/material3/ScaffoldKt$ScaffoldLayout$1$1$1$bodyContentPlaceables$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/ScaffoldKt$ScaffoldLayout$1$1$1$bodyContentPlaceables$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/ScaffoldKt$ScaffoldLayout$1$1$1$bottomBarPlaceables$1; +HSPLandroidx/compose/material3/ScaffoldKt$ScaffoldLayout$1$1$1$bottomBarPlaceables$1;->(Landroidx/compose/material3/FabPlacement;Lkotlin/jvm/functions/Function2;I)V +HSPLandroidx/compose/material3/ScaffoldKt$ScaffoldLayout$1$1$1$bottomBarPlaceables$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/ScaffoldKt$ScaffoldLayout$1$1$1$bottomBarPlaceables$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/ScaffoldLayoutContent; +HSPLandroidx/compose/material3/ScaffoldLayoutContent;->$values()[Landroidx/compose/material3/ScaffoldLayoutContent; +HSPLandroidx/compose/material3/ScaffoldLayoutContent;->()V +HSPLandroidx/compose/material3/ScaffoldLayoutContent;->(Ljava/lang/String;I)V +Landroidx/compose/material3/ShapeDefaults; +HSPLandroidx/compose/material3/ShapeDefaults;->()V +HSPLandroidx/compose/material3/ShapeDefaults;->()V +HSPLandroidx/compose/material3/ShapeDefaults;->getExtraLarge()Landroidx/compose/foundation/shape/CornerBasedShape; +HSPLandroidx/compose/material3/ShapeDefaults;->getExtraSmall()Landroidx/compose/foundation/shape/CornerBasedShape; +HSPLandroidx/compose/material3/ShapeDefaults;->getLarge()Landroidx/compose/foundation/shape/CornerBasedShape; +HSPLandroidx/compose/material3/ShapeDefaults;->getMedium()Landroidx/compose/foundation/shape/CornerBasedShape; +HSPLandroidx/compose/material3/ShapeDefaults;->getSmall()Landroidx/compose/foundation/shape/CornerBasedShape; +Landroidx/compose/material3/Shapes; +HSPLandroidx/compose/material3/Shapes;->()V +HSPLandroidx/compose/material3/Shapes;->(Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerBasedShape;)V +HSPLandroidx/compose/material3/Shapes;->(Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerBasedShape;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/Shapes;->getLarge()Landroidx/compose/foundation/shape/CornerBasedShape; +HSPLandroidx/compose/material3/Shapes;->getMedium()Landroidx/compose/foundation/shape/CornerBasedShape; +HSPLandroidx/compose/material3/Shapes;->getSmall()Landroidx/compose/foundation/shape/CornerBasedShape; +Landroidx/compose/material3/ShapesKt; +HSPLandroidx/compose/material3/ShapesKt;->()V +HSPLandroidx/compose/material3/ShapesKt;->fromToken(Landroidx/compose/material3/Shapes;Landroidx/compose/material3/tokens/ShapeKeyTokens;)Landroidx/compose/ui/graphics/Shape; +HSPLandroidx/compose/material3/ShapesKt;->getLocalShapes()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/material3/ShapesKt;->toShape(Landroidx/compose/material3/tokens/ShapeKeyTokens;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/graphics/Shape; +Landroidx/compose/material3/ShapesKt$LocalShapes$1; +HSPLandroidx/compose/material3/ShapesKt$LocalShapes$1;->()V +HSPLandroidx/compose/material3/ShapesKt$LocalShapes$1;->()V +HSPLandroidx/compose/material3/ShapesKt$LocalShapes$1;->invoke()Landroidx/compose/material3/Shapes; +HSPLandroidx/compose/material3/ShapesKt$LocalShapes$1;->invoke()Ljava/lang/Object; +Landroidx/compose/material3/ShapesKt$WhenMappings; +HSPLandroidx/compose/material3/ShapesKt$WhenMappings;->()V +Landroidx/compose/material3/SheetDefaultsKt; +HSPLandroidx/compose/material3/SheetDefaultsKt;->()V +HSPLandroidx/compose/material3/SheetDefaultsKt;->rememberSheetState(ZLkotlin/jvm/functions/Function1;Landroidx/compose/material3/SheetValue;ZLandroidx/compose/runtime/Composer;II)Landroidx/compose/material3/SheetState; +Landroidx/compose/material3/SheetDefaultsKt$rememberSheetState$2$1; +HSPLandroidx/compose/material3/SheetDefaultsKt$rememberSheetState$2$1;->(ZLandroidx/compose/material3/SheetValue;Lkotlin/jvm/functions/Function1;Z)V +HSPLandroidx/compose/material3/SheetDefaultsKt$rememberSheetState$2$1;->invoke()Landroidx/compose/material3/SheetState; +HSPLandroidx/compose/material3/SheetDefaultsKt$rememberSheetState$2$1;->invoke()Ljava/lang/Object; +Landroidx/compose/material3/SheetState; +HSPLandroidx/compose/material3/SheetState;->()V +HSPLandroidx/compose/material3/SheetState;->(ZLandroidx/compose/material3/SheetValue;Lkotlin/jvm/functions/Function1;Z)V +HSPLandroidx/compose/material3/SheetState;->getCurrentValue()Landroidx/compose/material3/SheetValue; +Landroidx/compose/material3/SheetState$Companion; +HSPLandroidx/compose/material3/SheetState$Companion;->()V +HSPLandroidx/compose/material3/SheetState$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/SheetState$Companion;->Saver(ZLkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/saveable/Saver; +Landroidx/compose/material3/SheetState$Companion$Saver$1; +HSPLandroidx/compose/material3/SheetState$Companion$Saver$1;->()V +HSPLandroidx/compose/material3/SheetState$Companion$Saver$1;->()V +HSPLandroidx/compose/material3/SheetState$Companion$Saver$1;->invoke(Landroidx/compose/runtime/saveable/SaverScope;Landroidx/compose/material3/SheetState;)Landroidx/compose/material3/SheetValue; +HSPLandroidx/compose/material3/SheetState$Companion$Saver$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/SheetState$Companion$Saver$2; +HSPLandroidx/compose/material3/SheetState$Companion$Saver$2;->(ZLkotlin/jvm/functions/Function1;)V +Landroidx/compose/material3/SheetValue; +HSPLandroidx/compose/material3/SheetValue;->$values()[Landroidx/compose/material3/SheetValue; +HSPLandroidx/compose/material3/SheetValue;->()V +HSPLandroidx/compose/material3/SheetValue;->(Ljava/lang/String;I)V +Landroidx/compose/material3/SurfaceKt; +HSPLandroidx/compose/material3/SurfaceKt;->()V +HSPLandroidx/compose/material3/SurfaceKt;->Surface-T9BRK9s(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/Shape;JJFFLandroidx/compose/foundation/BorderStroke;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/material3/SurfaceKt;->Surface-o_FOJdg(Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;ZLandroidx/compose/ui/graphics/Shape;JJFFLandroidx/compose/foundation/BorderStroke;Landroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;III)V +HSPLandroidx/compose/material3/SurfaceKt;->access$surface-8ww4TTg(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/Shape;JLandroidx/compose/foundation/BorderStroke;F)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/material3/SurfaceKt;->access$surfaceColorAtElevation-CLU3JFs(JFLandroidx/compose/runtime/Composer;I)J +HSPLandroidx/compose/material3/SurfaceKt;->surface-8ww4TTg(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/Shape;JLandroidx/compose/foundation/BorderStroke;F)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/material3/SurfaceKt;->surfaceColorAtElevation-CLU3JFs(JFLandroidx/compose/runtime/Composer;I)J +Landroidx/compose/material3/SurfaceKt$LocalAbsoluteTonalElevation$1; +HSPLandroidx/compose/material3/SurfaceKt$LocalAbsoluteTonalElevation$1;->()V +HSPLandroidx/compose/material3/SurfaceKt$LocalAbsoluteTonalElevation$1;->()V +HSPLandroidx/compose/material3/SurfaceKt$LocalAbsoluteTonalElevation$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/material3/SurfaceKt$LocalAbsoluteTonalElevation$1;->invoke-D9Ej5fM()F +Landroidx/compose/material3/SurfaceKt$Surface$1; +HSPLandroidx/compose/material3/SurfaceKt$Surface$1;->(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/Shape;JFILandroidx/compose/foundation/BorderStroke;FLkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/material3/SurfaceKt$Surface$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/SurfaceKt$Surface$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/SurfaceKt$Surface$1$1; +HSPLandroidx/compose/material3/SurfaceKt$Surface$1$1;->()V +HSPLandroidx/compose/material3/SurfaceKt$Surface$1$1;->()V +HSPLandroidx/compose/material3/SurfaceKt$Surface$1$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/material3/SurfaceKt$Surface$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/SurfaceKt$Surface$1$2; +HSPLandroidx/compose/material3/SurfaceKt$Surface$1$2;->(Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/material3/SurfaceKt$Surface$1$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/material3/SurfaceKt$Surface$1$2;->invoke(Landroidx/compose/ui/input/pointer/PointerInputScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/material3/SurfaceKt$Surface$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/material3/SurfaceKt$Surface$1$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/SurfaceKt$Surface$3; +HSPLandroidx/compose/material3/SurfaceKt$Surface$3;->(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/Shape;JFILandroidx/compose/foundation/BorderStroke;FLandroidx/compose/foundation/interaction/MutableInteractionSource;ZLkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function2;I)V +HSPLandroidx/compose/material3/SurfaceKt$Surface$3;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/SurfaceKt$Surface$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/SwipeableV2Defaults; +HSPLandroidx/compose/material3/SwipeableV2Defaults;->()V +HSPLandroidx/compose/material3/SwipeableV2Defaults;->()V +HSPLandroidx/compose/material3/SwipeableV2Defaults;->getAnimationSpec()Landroidx/compose/animation/core/SpringSpec; +HSPLandroidx/compose/material3/SwipeableV2Defaults;->getPositionalThreshold()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/material3/SwipeableV2Defaults;->getVelocityThreshold-D9Ej5fM()F +Landroidx/compose/material3/SwipeableV2Kt; +HSPLandroidx/compose/material3/SwipeableV2Kt;->fixedPositionalThreshold-0680j_4(F)Lkotlin/jvm/functions/Function2; +Landroidx/compose/material3/SwipeableV2Kt$fixedPositionalThreshold$1; +HSPLandroidx/compose/material3/SwipeableV2Kt$fixedPositionalThreshold$1;->(F)V +Landroidx/compose/material3/SwipeableV2State; +HSPLandroidx/compose/material3/SwipeableV2State;->()V +HSPLandroidx/compose/material3/SwipeableV2State;->(Ljava/lang/Object;Landroidx/compose/animation/core/AnimationSpec;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;F)V +HSPLandroidx/compose/material3/SwipeableV2State;->(Ljava/lang/Object;Landroidx/compose/animation/core/AnimationSpec;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;FILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/SwipeableV2State;->(Ljava/lang/Object;Landroidx/compose/animation/core/AnimationSpec;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;FLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/SwipeableV2State;->getCurrentValue()Ljava/lang/Object; +Landroidx/compose/material3/SwipeableV2State$Companion; +HSPLandroidx/compose/material3/SwipeableV2State$Companion;->()V +HSPLandroidx/compose/material3/SwipeableV2State$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/material3/SwipeableV2State$maxOffset$2; +HSPLandroidx/compose/material3/SwipeableV2State$maxOffset$2;->(Landroidx/compose/material3/SwipeableV2State;)V +Landroidx/compose/material3/SwipeableV2State$minOffset$2; +HSPLandroidx/compose/material3/SwipeableV2State$minOffset$2;->(Landroidx/compose/material3/SwipeableV2State;)V +Landroidx/compose/material3/SwipeableV2State$progress$2; +HSPLandroidx/compose/material3/SwipeableV2State$progress$2;->(Landroidx/compose/material3/SwipeableV2State;)V +Landroidx/compose/material3/SwipeableV2State$swipeDraggableState$1; +HSPLandroidx/compose/material3/SwipeableV2State$swipeDraggableState$1;->(Landroidx/compose/material3/SwipeableV2State;)V +Landroidx/compose/material3/SwipeableV2State$swipeDraggableState$1$dragScope$1; +HSPLandroidx/compose/material3/SwipeableV2State$swipeDraggableState$1$dragScope$1;->(Landroidx/compose/material3/SwipeableV2State;)V +Landroidx/compose/material3/SwipeableV2State$targetValue$2; +HSPLandroidx/compose/material3/SwipeableV2State$targetValue$2;->(Landroidx/compose/material3/SwipeableV2State;)V +Landroidx/compose/material3/SystemBarsDefaultInsets_androidKt; +HSPLandroidx/compose/material3/SystemBarsDefaultInsets_androidKt;->getSystemBarsForVisualComponents(Landroidx/compose/foundation/layout/WindowInsets$Companion;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/WindowInsets; +Landroidx/compose/material3/TextFieldDefaults; +HSPLandroidx/compose/material3/TextFieldDefaults;->()V +HSPLandroidx/compose/material3/TextFieldDefaults;->()V +HSPLandroidx/compose/material3/TextFieldDefaults;->getMinWidth-D9Ej5fM()F +Landroidx/compose/material3/TextKt; +HSPLandroidx/compose/material3/TextKt;->()V +HSPLandroidx/compose/material3/TextKt;->ProvideTextStyle(Landroidx/compose/ui/text/TextStyle;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/material3/TextKt;->Text--4IGK_g(Ljava/lang/String;Landroidx/compose/ui/Modifier;JJLandroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontFamily;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/text/style/TextAlign;JIZIILkotlin/jvm/functions/Function1;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/runtime/Composer;III)V +HSPLandroidx/compose/material3/TextKt;->Text-IbK3jfQ(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/Modifier;JJLandroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontFamily;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/text/style/TextAlign;JIZIILjava/util/Map;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/runtime/Composer;III)V +HSPLandroidx/compose/material3/TextKt;->getLocalTextStyle()Landroidx/compose/runtime/ProvidableCompositionLocal; +Landroidx/compose/material3/TextKt$LocalTextStyle$1; +HSPLandroidx/compose/material3/TextKt$LocalTextStyle$1;->()V +HSPLandroidx/compose/material3/TextKt$LocalTextStyle$1;->()V +HSPLandroidx/compose/material3/TextKt$LocalTextStyle$1;->invoke()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/TextKt$LocalTextStyle$1;->invoke()Ljava/lang/Object; +Landroidx/compose/material3/TextKt$ProvideTextStyle$1; +HSPLandroidx/compose/material3/TextKt$ProvideTextStyle$1;->(Landroidx/compose/ui/text/TextStyle;Lkotlin/jvm/functions/Function2;I)V +Landroidx/compose/material3/TextKt$Text$1; +HSPLandroidx/compose/material3/TextKt$Text$1;->()V +HSPLandroidx/compose/material3/TextKt$Text$1;->()V +HSPLandroidx/compose/material3/TextKt$Text$1;->invoke(Landroidx/compose/ui/text/TextLayoutResult;)V +HSPLandroidx/compose/material3/TextKt$Text$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/TextKt$Text$2; +HSPLandroidx/compose/material3/TextKt$Text$2;->(Ljava/lang/String;Landroidx/compose/ui/Modifier;JJLandroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontFamily;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/text/style/TextAlign;JIZIILkotlin/jvm/functions/Function1;Landroidx/compose/ui/text/TextStyle;III)V +Landroidx/compose/material3/TextKt$Text$5; +HSPLandroidx/compose/material3/TextKt$Text$5;->()V +HSPLandroidx/compose/material3/TextKt$Text$5;->()V +HSPLandroidx/compose/material3/TextKt$Text$5;->invoke(Landroidx/compose/ui/text/TextLayoutResult;)V +HSPLandroidx/compose/material3/TextKt$Text$5;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/TextKt$Text$6; +HSPLandroidx/compose/material3/TextKt$Text$6;->(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/Modifier;JJLandroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontFamily;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/text/style/TextAlign;JIZIILjava/util/Map;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/text/TextStyle;III)V +Landroidx/compose/material3/TonalPalette; +HSPLandroidx/compose/material3/TonalPalette;->(JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ)V +HSPLandroidx/compose/material3/TonalPalette;->(JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/TonalPalette;->getNeutral10-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getNeutral20-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getNeutral95-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getNeutral99-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getNeutralVariant30-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getNeutralVariant50-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getNeutralVariant90-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getPrimary10-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getPrimary100-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getPrimary40-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getPrimary80-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getPrimary90-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getSecondary10-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getSecondary100-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getSecondary40-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getSecondary90-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getTertiary10-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getTertiary100-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getTertiary40-0d7_KjU()J +HSPLandroidx/compose/material3/TonalPalette;->getTertiary90-0d7_KjU()J +Landroidx/compose/material3/TopAppBarDefaults; +HSPLandroidx/compose/material3/TopAppBarDefaults;->()V +HSPLandroidx/compose/material3/TopAppBarDefaults;->()V +HSPLandroidx/compose/material3/TopAppBarDefaults;->getWindowInsets(Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/WindowInsets; +HSPLandroidx/compose/material3/TopAppBarDefaults;->pinnedScrollBehavior(Landroidx/compose/material3/TopAppBarState;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;II)Landroidx/compose/material3/TopAppBarScrollBehavior; +Landroidx/compose/material3/TopAppBarDefaults$pinnedScrollBehavior$1; +HSPLandroidx/compose/material3/TopAppBarDefaults$pinnedScrollBehavior$1;->()V +HSPLandroidx/compose/material3/TopAppBarDefaults$pinnedScrollBehavior$1;->()V +Landroidx/compose/material3/TopAppBarScrollBehavior; +Landroidx/compose/material3/TopAppBarState; +HSPLandroidx/compose/material3/TopAppBarState;->()V +HSPLandroidx/compose/material3/TopAppBarState;->(FFF)V +HSPLandroidx/compose/material3/TopAppBarState;->access$getSaver$cp()Landroidx/compose/runtime/saveable/Saver; +HSPLandroidx/compose/material3/TopAppBarState;->getContentOffset()F +HSPLandroidx/compose/material3/TopAppBarState;->getHeightOffset()F +HSPLandroidx/compose/material3/TopAppBarState;->getHeightOffsetLimit()F +HSPLandroidx/compose/material3/TopAppBarState;->getOverlappedFraction()F +HSPLandroidx/compose/material3/TopAppBarState;->setHeightOffsetLimit(F)V +Landroidx/compose/material3/TopAppBarState$Companion; +HSPLandroidx/compose/material3/TopAppBarState$Companion;->()V +HSPLandroidx/compose/material3/TopAppBarState$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/TopAppBarState$Companion;->getSaver()Landroidx/compose/runtime/saveable/Saver; +Landroidx/compose/material3/TopAppBarState$Companion$Saver$1; +HSPLandroidx/compose/material3/TopAppBarState$Companion$Saver$1;->()V +HSPLandroidx/compose/material3/TopAppBarState$Companion$Saver$1;->()V +HSPLandroidx/compose/material3/TopAppBarState$Companion$Saver$1;->invoke(Landroidx/compose/runtime/saveable/SaverScope;Landroidx/compose/material3/TopAppBarState;)Ljava/util/List; +HSPLandroidx/compose/material3/TopAppBarState$Companion$Saver$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/material3/TopAppBarState$Companion$Saver$2; +HSPLandroidx/compose/material3/TopAppBarState$Companion$Saver$2;->()V +HSPLandroidx/compose/material3/TopAppBarState$Companion$Saver$2;->()V +Landroidx/compose/material3/Typography; +HSPLandroidx/compose/material3/Typography;->()V +HSPLandroidx/compose/material3/Typography;->(Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;)V +HSPLandroidx/compose/material3/Typography;->(Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/material3/Typography;->getBodyLarge()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/Typography;->getBodyMedium()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/Typography;->getBodySmall()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/Typography;->getLabelLarge()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/Typography;->getLabelMedium()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/Typography;->getLabelSmall()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/Typography;->getTitleLarge()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/Typography;->getTitleMedium()Landroidx/compose/ui/text/TextStyle; +Landroidx/compose/material3/TypographyKt; +HSPLandroidx/compose/material3/TypographyKt;->()V +HSPLandroidx/compose/material3/TypographyKt;->fromToken(Landroidx/compose/material3/Typography;Landroidx/compose/material3/tokens/TypographyKeyTokens;)Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/TypographyKt;->getLocalTypography()Landroidx/compose/runtime/ProvidableCompositionLocal; +Landroidx/compose/material3/TypographyKt$LocalTypography$1; +HSPLandroidx/compose/material3/TypographyKt$LocalTypography$1;->()V +HSPLandroidx/compose/material3/TypographyKt$LocalTypography$1;->()V +Landroidx/compose/material3/TypographyKt$WhenMappings; +HSPLandroidx/compose/material3/TypographyKt$WhenMappings;->()V +Landroidx/compose/material3/tokens/CheckboxTokens; +HSPLandroidx/compose/material3/tokens/CheckboxTokens;->()V +HSPLandroidx/compose/material3/tokens/CheckboxTokens;->()V +HSPLandroidx/compose/material3/tokens/CheckboxTokens;->getSelectedContainerColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +HSPLandroidx/compose/material3/tokens/CheckboxTokens;->getSelectedDisabledContainerColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +HSPLandroidx/compose/material3/tokens/CheckboxTokens;->getSelectedIconColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +HSPLandroidx/compose/material3/tokens/CheckboxTokens;->getUnselectedDisabledOutlineColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +HSPLandroidx/compose/material3/tokens/CheckboxTokens;->getUnselectedOutlineColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +Landroidx/compose/material3/tokens/CircularProgressIndicatorTokens; +HSPLandroidx/compose/material3/tokens/CircularProgressIndicatorTokens;->()V +HSPLandroidx/compose/material3/tokens/CircularProgressIndicatorTokens;->()V +HSPLandroidx/compose/material3/tokens/CircularProgressIndicatorTokens;->getActiveIndicatorColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +HSPLandroidx/compose/material3/tokens/CircularProgressIndicatorTokens;->getActiveIndicatorWidth-D9Ej5fM()F +HSPLandroidx/compose/material3/tokens/CircularProgressIndicatorTokens;->getSize-D9Ej5fM()F +Landroidx/compose/material3/tokens/ColorLightTokens; +HSPLandroidx/compose/material3/tokens/ColorLightTokens;->()V +HSPLandroidx/compose/material3/tokens/ColorLightTokens;->()V +HSPLandroidx/compose/material3/tokens/ColorLightTokens;->getError-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/ColorLightTokens;->getErrorContainer-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/ColorLightTokens;->getOnError-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/ColorLightTokens;->getOnErrorContainer-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/ColorLightTokens;->getOutlineVariant-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/ColorLightTokens;->getScrim-0d7_KjU()J +Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +HSPLandroidx/compose/material3/tokens/ColorSchemeKeyTokens;->$values()[Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +HSPLandroidx/compose/material3/tokens/ColorSchemeKeyTokens;->()V +HSPLandroidx/compose/material3/tokens/ColorSchemeKeyTokens;->(Ljava/lang/String;I)V +HSPLandroidx/compose/material3/tokens/ColorSchemeKeyTokens;->values()[Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +Landroidx/compose/material3/tokens/ElevationTokens; +HSPLandroidx/compose/material3/tokens/ElevationTokens;->()V +HSPLandroidx/compose/material3/tokens/ElevationTokens;->()V +HSPLandroidx/compose/material3/tokens/ElevationTokens;->getLevel0-D9Ej5fM()F +HSPLandroidx/compose/material3/tokens/ElevationTokens;->getLevel1-D9Ej5fM()F +HSPLandroidx/compose/material3/tokens/ElevationTokens;->getLevel2-D9Ej5fM()F +Landroidx/compose/material3/tokens/FilledButtonTokens; +HSPLandroidx/compose/material3/tokens/FilledButtonTokens;->()V +HSPLandroidx/compose/material3/tokens/FilledButtonTokens;->()V +HSPLandroidx/compose/material3/tokens/FilledButtonTokens;->getContainerColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +HSPLandroidx/compose/material3/tokens/FilledButtonTokens;->getContainerElevation-D9Ej5fM()F +HSPLandroidx/compose/material3/tokens/FilledButtonTokens;->getContainerShape()Landroidx/compose/material3/tokens/ShapeKeyTokens; +HSPLandroidx/compose/material3/tokens/FilledButtonTokens;->getDisabledContainerColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +HSPLandroidx/compose/material3/tokens/FilledButtonTokens;->getDisabledContainerElevation-D9Ej5fM()F +HSPLandroidx/compose/material3/tokens/FilledButtonTokens;->getDisabledLabelTextColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +HSPLandroidx/compose/material3/tokens/FilledButtonTokens;->getFocusContainerElevation-D9Ej5fM()F +HSPLandroidx/compose/material3/tokens/FilledButtonTokens;->getHoverContainerElevation-D9Ej5fM()F +HSPLandroidx/compose/material3/tokens/FilledButtonTokens;->getIconSize-D9Ej5fM()F +HSPLandroidx/compose/material3/tokens/FilledButtonTokens;->getLabelTextColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +HSPLandroidx/compose/material3/tokens/FilledButtonTokens;->getPressedContainerElevation-D9Ej5fM()F +Landroidx/compose/material3/tokens/IconButtonTokens; +HSPLandroidx/compose/material3/tokens/IconButtonTokens;->()V +HSPLandroidx/compose/material3/tokens/IconButtonTokens;->()V +HSPLandroidx/compose/material3/tokens/IconButtonTokens;->getIconSize-D9Ej5fM()F +HSPLandroidx/compose/material3/tokens/IconButtonTokens;->getStateLayerShape()Landroidx/compose/material3/tokens/ShapeKeyTokens; +HSPLandroidx/compose/material3/tokens/IconButtonTokens;->getStateLayerSize-D9Ej5fM()F +Landroidx/compose/material3/tokens/LinearProgressIndicatorTokens; +HSPLandroidx/compose/material3/tokens/LinearProgressIndicatorTokens;->()V +HSPLandroidx/compose/material3/tokens/LinearProgressIndicatorTokens;->()V +HSPLandroidx/compose/material3/tokens/LinearProgressIndicatorTokens;->getTrackHeight-D9Ej5fM()F +Landroidx/compose/material3/tokens/NavigationBarTokens; +HSPLandroidx/compose/material3/tokens/NavigationBarTokens;->()V +HSPLandroidx/compose/material3/tokens/NavigationBarTokens;->()V +HSPLandroidx/compose/material3/tokens/NavigationBarTokens;->getActiveIconColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +HSPLandroidx/compose/material3/tokens/NavigationBarTokens;->getActiveIndicatorColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +HSPLandroidx/compose/material3/tokens/NavigationBarTokens;->getActiveIndicatorHeight-D9Ej5fM()F +HSPLandroidx/compose/material3/tokens/NavigationBarTokens;->getActiveIndicatorShape()Landroidx/compose/material3/tokens/ShapeKeyTokens; +HSPLandroidx/compose/material3/tokens/NavigationBarTokens;->getActiveIndicatorWidth-D9Ej5fM()F +HSPLandroidx/compose/material3/tokens/NavigationBarTokens;->getActiveLabelTextColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +HSPLandroidx/compose/material3/tokens/NavigationBarTokens;->getContainerHeight-D9Ej5fM()F +HSPLandroidx/compose/material3/tokens/NavigationBarTokens;->getIconSize-D9Ej5fM()F +HSPLandroidx/compose/material3/tokens/NavigationBarTokens;->getInactiveIconColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +HSPLandroidx/compose/material3/tokens/NavigationBarTokens;->getInactiveLabelTextColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens; +HSPLandroidx/compose/material3/tokens/NavigationBarTokens;->getLabelTextFont()Landroidx/compose/material3/tokens/TypographyKeyTokens; +Landroidx/compose/material3/tokens/PaletteTokens; +HSPLandroidx/compose/material3/tokens/PaletteTokens;->()V +HSPLandroidx/compose/material3/tokens/PaletteTokens;->()V +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getError10-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getError100-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getError40-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getError90-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getNeutral0-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getNeutral10-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getNeutral20-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getNeutral95-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getNeutral99-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getNeutralVariant30-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getNeutralVariant50-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getNeutralVariant80-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getNeutralVariant90-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getPrimary10-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getPrimary100-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getPrimary40-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getPrimary80-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getPrimary90-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getSecondary10-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getSecondary100-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getSecondary40-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getSecondary90-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getTertiary10-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getTertiary100-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getTertiary40-0d7_KjU()J +HSPLandroidx/compose/material3/tokens/PaletteTokens;->getTertiary90-0d7_KjU()J +Landroidx/compose/material3/tokens/ShapeKeyTokens; +HSPLandroidx/compose/material3/tokens/ShapeKeyTokens;->$values()[Landroidx/compose/material3/tokens/ShapeKeyTokens; +HSPLandroidx/compose/material3/tokens/ShapeKeyTokens;->()V +HSPLandroidx/compose/material3/tokens/ShapeKeyTokens;->(Ljava/lang/String;I)V +HSPLandroidx/compose/material3/tokens/ShapeKeyTokens;->values()[Landroidx/compose/material3/tokens/ShapeKeyTokens; +Landroidx/compose/material3/tokens/ShapeTokens; +HSPLandroidx/compose/material3/tokens/ShapeTokens;->()V +HSPLandroidx/compose/material3/tokens/ShapeTokens;->()V +HSPLandroidx/compose/material3/tokens/ShapeTokens;->getCornerExtraLarge()Landroidx/compose/foundation/shape/RoundedCornerShape; +HSPLandroidx/compose/material3/tokens/ShapeTokens;->getCornerExtraSmall()Landroidx/compose/foundation/shape/RoundedCornerShape; +HSPLandroidx/compose/material3/tokens/ShapeTokens;->getCornerLarge()Landroidx/compose/foundation/shape/RoundedCornerShape; +HSPLandroidx/compose/material3/tokens/ShapeTokens;->getCornerMedium()Landroidx/compose/foundation/shape/RoundedCornerShape; +HSPLandroidx/compose/material3/tokens/ShapeTokens;->getCornerSmall()Landroidx/compose/foundation/shape/RoundedCornerShape; +Landroidx/compose/material3/tokens/TypeScaleTokens; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->()V +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->()V +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodyLargeFont()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodyLargeLineHeight-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodyLargeSize-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodyLargeTracking-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodyLargeWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodyMediumFont()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodyMediumLineHeight-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodyMediumSize-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodyMediumTracking-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodyMediumWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodySmallFont()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodySmallLineHeight-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodySmallSize-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodySmallTracking-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodySmallWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplayLargeFont()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplayLargeLineHeight-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplayLargeSize-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplayLargeTracking-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplayLargeWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplayMediumFont()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplayMediumLineHeight-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplayMediumSize-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplayMediumTracking-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplayMediumWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplaySmallFont()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplaySmallLineHeight-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplaySmallSize-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplaySmallTracking-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplaySmallWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineLargeFont()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineLargeLineHeight-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineLargeSize-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineLargeTracking-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineLargeWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineMediumFont()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineMediumLineHeight-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineMediumSize-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineMediumTracking-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineMediumWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineSmallFont()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineSmallLineHeight-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineSmallSize-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineSmallTracking-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineSmallWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelLargeFont()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelLargeLineHeight-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelLargeSize-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelLargeTracking-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelLargeWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelMediumFont()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelMediumLineHeight-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelMediumSize-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelMediumTracking-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelMediumWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelSmallFont()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelSmallLineHeight-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelSmallSize-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelSmallTracking-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelSmallWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleLargeFont()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleLargeLineHeight-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleLargeSize-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleLargeTracking-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleLargeWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleMediumFont()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleMediumLineHeight-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleMediumSize-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleMediumTracking-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleMediumWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleSmallFont()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleSmallLineHeight-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleSmallSize-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleSmallTracking-XSAIIZE()J +HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleSmallWeight()Landroidx/compose/ui/text/font/FontWeight; +Landroidx/compose/material3/tokens/TypefaceTokens; +HSPLandroidx/compose/material3/tokens/TypefaceTokens;->()V +HSPLandroidx/compose/material3/tokens/TypefaceTokens;->()V +HSPLandroidx/compose/material3/tokens/TypefaceTokens;->getBrand()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypefaceTokens;->getPlain()Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/material3/tokens/TypefaceTokens;->getWeightMedium()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/material3/tokens/TypefaceTokens;->getWeightRegular()Landroidx/compose/ui/text/font/FontWeight; +Landroidx/compose/material3/tokens/TypographyKeyTokens; +HSPLandroidx/compose/material3/tokens/TypographyKeyTokens;->$values()[Landroidx/compose/material3/tokens/TypographyKeyTokens; +HSPLandroidx/compose/material3/tokens/TypographyKeyTokens;->()V +HSPLandroidx/compose/material3/tokens/TypographyKeyTokens;->(Ljava/lang/String;I)V +HSPLandroidx/compose/material3/tokens/TypographyKeyTokens;->values()[Landroidx/compose/material3/tokens/TypographyKeyTokens; +Landroidx/compose/material3/tokens/TypographyTokens; +HSPLandroidx/compose/material3/tokens/TypographyTokens;->()V +HSPLandroidx/compose/material3/tokens/TypographyTokens;->()V +HSPLandroidx/compose/material3/tokens/TypographyTokens;->getBodyLarge()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/tokens/TypographyTokens;->getBodyMedium()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/tokens/TypographyTokens;->getBodySmall()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/tokens/TypographyTokens;->getDisplayLarge()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/tokens/TypographyTokens;->getDisplayMedium()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/tokens/TypographyTokens;->getDisplaySmall()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/tokens/TypographyTokens;->getHeadlineLarge()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/tokens/TypographyTokens;->getHeadlineMedium()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/tokens/TypographyTokens;->getHeadlineSmall()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/tokens/TypographyTokens;->getLabelLarge()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/tokens/TypographyTokens;->getLabelMedium()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/tokens/TypographyTokens;->getLabelSmall()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/tokens/TypographyTokens;->getTitleLarge()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/tokens/TypographyTokens;->getTitleMedium()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/material3/tokens/TypographyTokens;->getTitleSmall()Landroidx/compose/ui/text/TextStyle; +Landroidx/compose/material3/tokens/TypographyTokensKt; +HSPLandroidx/compose/material3/tokens/TypographyTokensKt;->()V +HSPLandroidx/compose/material3/tokens/TypographyTokensKt;->getDefaultTextStyle()Landroidx/compose/ui/text/TextStyle; +Landroidx/compose/runtime/AbstractApplier; +HSPLandroidx/compose/runtime/AbstractApplier;->()V +HSPLandroidx/compose/runtime/AbstractApplier;->(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/AbstractApplier;->clear()V +HSPLandroidx/compose/runtime/AbstractApplier;->down(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/AbstractApplier;->getCurrent()Ljava/lang/Object; +HSPLandroidx/compose/runtime/AbstractApplier;->getRoot()Ljava/lang/Object; +HSPLandroidx/compose/runtime/AbstractApplier;->setCurrent(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/AbstractApplier;->up()V +Landroidx/compose/runtime/ActualAndroid_androidKt; +HSPLandroidx/compose/runtime/ActualAndroid_androidKt;->()V +HSPLandroidx/compose/runtime/ActualAndroid_androidKt;->createSnapshotMutableFloatState(F)Landroidx/compose/runtime/MutableFloatState; +HSPLandroidx/compose/runtime/ActualAndroid_androidKt;->createSnapshotMutableIntState(I)Landroidx/compose/runtime/MutableIntState; +HSPLandroidx/compose/runtime/ActualAndroid_androidKt;->createSnapshotMutableLongState(J)Landroidx/compose/runtime/MutableLongState; +HSPLandroidx/compose/runtime/ActualAndroid_androidKt;->createSnapshotMutableState(Ljava/lang/Object;Landroidx/compose/runtime/SnapshotMutationPolicy;)Landroidx/compose/runtime/snapshots/SnapshotMutableState; +Landroidx/compose/runtime/ActualAndroid_androidKt$DefaultMonotonicFrameClock$2; +HSPLandroidx/compose/runtime/ActualAndroid_androidKt$DefaultMonotonicFrameClock$2;->()V +HSPLandroidx/compose/runtime/ActualAndroid_androidKt$DefaultMonotonicFrameClock$2;->()V +Landroidx/compose/runtime/ActualJvm_jvmKt; +HSPLandroidx/compose/runtime/ActualJvm_jvmKt;->identityHashCode(Ljava/lang/Object;)I +HSPLandroidx/compose/runtime/ActualJvm_jvmKt;->invokeComposable(Landroidx/compose/runtime/Composer;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/runtime/ActualJvm_jvmKt;->invokeComposableForResult(Landroidx/compose/runtime/Composer;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +Landroidx/compose/runtime/Anchor; +HSPLandroidx/compose/runtime/Anchor;->(I)V +HSPLandroidx/compose/runtime/Anchor;->getLocation$runtime_release()I +HSPLandroidx/compose/runtime/Anchor;->getValid()Z +HSPLandroidx/compose/runtime/Anchor;->setLocation$runtime_release(I)V +HSPLandroidx/compose/runtime/Anchor;->toIndexFor(Landroidx/compose/runtime/SlotTable;)I +HSPLandroidx/compose/runtime/Anchor;->toIndexFor(Landroidx/compose/runtime/SlotWriter;)I +Landroidx/compose/runtime/Applier; +HSPLandroidx/compose/runtime/Applier;->onBeginChanges()V +HSPLandroidx/compose/runtime/Applier;->onEndChanges()V +Landroidx/compose/runtime/AtomicInt; +HSPLandroidx/compose/runtime/AtomicInt;->(I)V +HSPLandroidx/compose/runtime/AtomicInt;->add(I)I +Landroidx/compose/runtime/BroadcastFrameClock; +HSPLandroidx/compose/runtime/BroadcastFrameClock;->()V +HSPLandroidx/compose/runtime/BroadcastFrameClock;->(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/runtime/BroadcastFrameClock;->access$getAwaiters$p(Landroidx/compose/runtime/BroadcastFrameClock;)Ljava/util/List; +HSPLandroidx/compose/runtime/BroadcastFrameClock;->access$getFailureCause$p(Landroidx/compose/runtime/BroadcastFrameClock;)Ljava/lang/Throwable; +HSPLandroidx/compose/runtime/BroadcastFrameClock;->access$getLock$p(Landroidx/compose/runtime/BroadcastFrameClock;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/BroadcastFrameClock;->access$getOnNewAwaiters$p(Landroidx/compose/runtime/BroadcastFrameClock;)Lkotlin/jvm/functions/Function0; +HSPLandroidx/compose/runtime/BroadcastFrameClock;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/BroadcastFrameClock;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLandroidx/compose/runtime/BroadcastFrameClock;->getHasAwaiters()Z +HSPLandroidx/compose/runtime/BroadcastFrameClock;->minusKey(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext; +HSPLandroidx/compose/runtime/BroadcastFrameClock;->sendFrame(J)V +HSPLandroidx/compose/runtime/BroadcastFrameClock;->withFrameNanos(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/runtime/BroadcastFrameClock$FrameAwaiter; +HSPLandroidx/compose/runtime/BroadcastFrameClock$FrameAwaiter;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/runtime/BroadcastFrameClock$FrameAwaiter;->resume(J)V +Landroidx/compose/runtime/BroadcastFrameClock$withFrameNanos$2$1; +HSPLandroidx/compose/runtime/BroadcastFrameClock$withFrameNanos$2$1;->(Landroidx/compose/runtime/BroadcastFrameClock;Lkotlin/jvm/internal/Ref$ObjectRef;)V +HSPLandroidx/compose/runtime/BroadcastFrameClock$withFrameNanos$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/BroadcastFrameClock$withFrameNanos$2$1;->invoke(Ljava/lang/Throwable;)V +Landroidx/compose/runtime/ComposableSingletons$CompositionKt; +HSPLandroidx/compose/runtime/ComposableSingletons$CompositionKt;->()V +HSPLandroidx/compose/runtime/ComposableSingletons$CompositionKt;->()V +HSPLandroidx/compose/runtime/ComposableSingletons$CompositionKt;->getLambda-1$runtime_release()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/runtime/ComposableSingletons$CompositionKt;->getLambda-2$runtime_release()Lkotlin/jvm/functions/Function2; +Landroidx/compose/runtime/ComposableSingletons$CompositionKt$lambda-1$1; +HSPLandroidx/compose/runtime/ComposableSingletons$CompositionKt$lambda-1$1;->()V +HSPLandroidx/compose/runtime/ComposableSingletons$CompositionKt$lambda-1$1;->()V +Landroidx/compose/runtime/ComposableSingletons$CompositionKt$lambda-2$1; +HSPLandroidx/compose/runtime/ComposableSingletons$CompositionKt$lambda-2$1;->()V +HSPLandroidx/compose/runtime/ComposableSingletons$CompositionKt$lambda-2$1;->()V +Landroidx/compose/runtime/ComposablesKt; +HSPLandroidx/compose/runtime/ComposablesKt;->getCurrentCompositeKeyHash(Landroidx/compose/runtime/Composer;I)I +HSPLandroidx/compose/runtime/ComposablesKt;->getCurrentRecomposeScope(Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/RecomposeScope; +HSPLandroidx/compose/runtime/ComposablesKt;->rememberCompositionContext(Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/CompositionContext; +Landroidx/compose/runtime/ComposeNodeLifecycleCallback; +Landroidx/compose/runtime/Composer; +HSPLandroidx/compose/runtime/Composer;->()V +Landroidx/compose/runtime/Composer$Companion; +HSPLandroidx/compose/runtime/Composer$Companion;->()V +HSPLandroidx/compose/runtime/Composer$Companion;->()V +HSPLandroidx/compose/runtime/Composer$Companion;->getEmpty()Ljava/lang/Object; +Landroidx/compose/runtime/Composer$Companion$Empty$1; +HSPLandroidx/compose/runtime/Composer$Companion$Empty$1;->()V +Landroidx/compose/runtime/ComposerImpl; +HSPLandroidx/compose/runtime/ComposerImpl;->(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/CompositionContext;Landroidx/compose/runtime/SlotTable;Ljava/util/Set;Ljava/util/List;Ljava/util/List;Landroidx/compose/runtime/ControlledComposition;)V +HSPLandroidx/compose/runtime/ComposerImpl;->access$getChildrenComposing$p(Landroidx/compose/runtime/ComposerImpl;)I +HSPLandroidx/compose/runtime/ComposerImpl;->access$getParentContext$p(Landroidx/compose/runtime/ComposerImpl;)Landroidx/compose/runtime/CompositionContext; +HSPLandroidx/compose/runtime/ComposerImpl;->access$getReader$p(Landroidx/compose/runtime/ComposerImpl;)Landroidx/compose/runtime/SlotReader; +HSPLandroidx/compose/runtime/ComposerImpl;->access$setChildrenComposing$p(Landroidx/compose/runtime/ComposerImpl;I)V +HSPLandroidx/compose/runtime/ComposerImpl;->addRecomposeScope()V +HSPLandroidx/compose/runtime/ComposerImpl;->apply(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/runtime/ComposerImpl;->buildContext()Landroidx/compose/runtime/CompositionContext; +HSPLandroidx/compose/runtime/ComposerImpl;->changed(F)Z +HSPLandroidx/compose/runtime/ComposerImpl;->changed(I)Z +HSPLandroidx/compose/runtime/ComposerImpl;->changed(J)Z +HSPLandroidx/compose/runtime/ComposerImpl;->changed(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/ComposerImpl;->changed(Z)Z +HSPLandroidx/compose/runtime/ComposerImpl;->changedInstance(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/ComposerImpl;->changesApplied$runtime_release()V +HSPLandroidx/compose/runtime/ComposerImpl;->cleanUpCompose()V +HSPLandroidx/compose/runtime/ComposerImpl;->clearUpdatedNodeCounts()V +HSPLandroidx/compose/runtime/ComposerImpl;->composeContent$runtime_release(Landroidx/compose/runtime/collection/IdentityArrayMap;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/runtime/ComposerImpl;->compoundKeyOf(III)I +HSPLandroidx/compose/runtime/ComposerImpl;->consume(Landroidx/compose/runtime/CompositionLocal;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/ComposerImpl;->createFreshInsertTable()V +HSPLandroidx/compose/runtime/ComposerImpl;->createNode(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/runtime/ComposerImpl;->currentCompositionLocalScope()Landroidx/compose/runtime/PersistentCompositionLocalMap; +HSPLandroidx/compose/runtime/ComposerImpl;->currentCompositionLocalScope(I)Landroidx/compose/runtime/PersistentCompositionLocalMap; +HSPLandroidx/compose/runtime/ComposerImpl;->deactivateToEndGroup(Z)V +HSPLandroidx/compose/runtime/ComposerImpl;->disableReusing()V +HSPLandroidx/compose/runtime/ComposerImpl;->dispose$runtime_release()V +HSPLandroidx/compose/runtime/ComposerImpl;->doCompose(Landroidx/compose/runtime/collection/IdentityArrayMap;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/runtime/ComposerImpl;->doRecordDownsFor(II)V +HSPLandroidx/compose/runtime/ComposerImpl;->enableReusing()V +HSPLandroidx/compose/runtime/ComposerImpl;->end(Z)V +HSPLandroidx/compose/runtime/ComposerImpl;->endDefaults()V +HSPLandroidx/compose/runtime/ComposerImpl;->endGroup()V +HSPLandroidx/compose/runtime/ComposerImpl;->endMovableGroup()V +HSPLandroidx/compose/runtime/ComposerImpl;->endNode()V +HSPLandroidx/compose/runtime/ComposerImpl;->endProviders()V +HSPLandroidx/compose/runtime/ComposerImpl;->endReplaceableGroup()V +HSPLandroidx/compose/runtime/ComposerImpl;->endRestartGroup()Landroidx/compose/runtime/ScopeUpdateScope; +HSPLandroidx/compose/runtime/ComposerImpl;->endReusableGroup()V +HSPLandroidx/compose/runtime/ComposerImpl;->endRoot()V +HSPLandroidx/compose/runtime/ComposerImpl;->ensureWriter()V +HSPLandroidx/compose/runtime/ComposerImpl;->enterGroup(ZLandroidx/compose/runtime/Pending;)V +HSPLandroidx/compose/runtime/ComposerImpl;->exitGroup(IZ)V +HSPLandroidx/compose/runtime/ComposerImpl;->finalizeCompose()V +HSPLandroidx/compose/runtime/ComposerImpl;->getApplier()Landroidx/compose/runtime/Applier; +HSPLandroidx/compose/runtime/ComposerImpl;->getApplyCoroutineContext()Lkotlin/coroutines/CoroutineContext; +HSPLandroidx/compose/runtime/ComposerImpl;->getAreChildrenComposing$runtime_release()Z +HSPLandroidx/compose/runtime/ComposerImpl;->getComposition()Landroidx/compose/runtime/ControlledComposition; +HSPLandroidx/compose/runtime/ComposerImpl;->getCompoundKeyHash()I +HSPLandroidx/compose/runtime/ComposerImpl;->getCurrentCompositionLocalMap()Landroidx/compose/runtime/CompositionLocalMap; +HSPLandroidx/compose/runtime/ComposerImpl;->getCurrentRecomposeScope$runtime_release()Landroidx/compose/runtime/RecomposeScopeImpl; +HSPLandroidx/compose/runtime/ComposerImpl;->getDefaultsInvalid()Z +HSPLandroidx/compose/runtime/ComposerImpl;->getDeferredChanges$runtime_release()Ljava/util/List; +HSPLandroidx/compose/runtime/ComposerImpl;->getInserting()Z +HSPLandroidx/compose/runtime/ComposerImpl;->getNode(Landroidx/compose/runtime/SlotReader;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/ComposerImpl;->getRecomposeScope()Landroidx/compose/runtime/RecomposeScope; +HSPLandroidx/compose/runtime/ComposerImpl;->getSkipping()Z +HSPLandroidx/compose/runtime/ComposerImpl;->groupCompoundKeyPart(Landroidx/compose/runtime/SlotReader;I)I +HSPLandroidx/compose/runtime/ComposerImpl;->insertedGroupVirtualIndex(I)I +HSPLandroidx/compose/runtime/ComposerImpl;->isComposing$runtime_release()Z +HSPLandroidx/compose/runtime/ComposerImpl;->nextSlot()Ljava/lang/Object; +HSPLandroidx/compose/runtime/ComposerImpl;->nodeAt(Landroidx/compose/runtime/SlotReader;I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/ComposerImpl;->nodeIndexOf(IIII)I +HSPLandroidx/compose/runtime/ComposerImpl;->prepareCompose$runtime_release(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/runtime/ComposerImpl;->realizeDowns()V +HSPLandroidx/compose/runtime/ComposerImpl;->realizeDowns([Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl;->realizeMovement()V +HSPLandroidx/compose/runtime/ComposerImpl;->realizeOperationLocation$default(Landroidx/compose/runtime/ComposerImpl;ZILjava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl;->realizeOperationLocation(Z)V +HSPLandroidx/compose/runtime/ComposerImpl;->realizeUps()V +HSPLandroidx/compose/runtime/ComposerImpl;->recompose$runtime_release(Landroidx/compose/runtime/collection/IdentityArrayMap;)Z +HSPLandroidx/compose/runtime/ComposerImpl;->recomposeToGroupEnd()V +HSPLandroidx/compose/runtime/ComposerImpl;->record(Lkotlin/jvm/functions/Function3;)V +HSPLandroidx/compose/runtime/ComposerImpl;->recordApplierOperation(Lkotlin/jvm/functions/Function3;)V +HSPLandroidx/compose/runtime/ComposerImpl;->recordDelete()V +HSPLandroidx/compose/runtime/ComposerImpl;->recordDown(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl;->recordEndGroup()V +HSPLandroidx/compose/runtime/ComposerImpl;->recordEndRoot()V +HSPLandroidx/compose/runtime/ComposerImpl;->recordFixup(Lkotlin/jvm/functions/Function3;)V +HSPLandroidx/compose/runtime/ComposerImpl;->recordInsert(Landroidx/compose/runtime/Anchor;)V +HSPLandroidx/compose/runtime/ComposerImpl;->recordInsertUpFixup(Lkotlin/jvm/functions/Function3;)V +HSPLandroidx/compose/runtime/ComposerImpl;->recordReaderMoving(I)V +HSPLandroidx/compose/runtime/ComposerImpl;->recordRemoveNode(II)V +HSPLandroidx/compose/runtime/ComposerImpl;->recordSideEffect(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/runtime/ComposerImpl;->recordSlotEditing()V +HSPLandroidx/compose/runtime/ComposerImpl;->recordSlotEditingOperation(Lkotlin/jvm/functions/Function3;)V +HSPLandroidx/compose/runtime/ComposerImpl;->recordSlotTableOperation$default(Landroidx/compose/runtime/ComposerImpl;ZLkotlin/jvm/functions/Function3;ILjava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl;->recordSlotTableOperation(ZLkotlin/jvm/functions/Function3;)V +HSPLandroidx/compose/runtime/ComposerImpl;->recordUp()V +HSPLandroidx/compose/runtime/ComposerImpl;->recordUpsAndDowns(III)V +HSPLandroidx/compose/runtime/ComposerImpl;->recordUsed(Landroidx/compose/runtime/RecomposeScope;)V +HSPLandroidx/compose/runtime/ComposerImpl;->registerInsertUpFixup()V +HSPLandroidx/compose/runtime/ComposerImpl;->rememberedValue()Ljava/lang/Object; +HSPLandroidx/compose/runtime/ComposerImpl;->reportAllMovableContent()V +HSPLandroidx/compose/runtime/ComposerImpl;->reportFreeMovableContent$reportGroup(Landroidx/compose/runtime/ComposerImpl;IZI)I +HSPLandroidx/compose/runtime/ComposerImpl;->reportFreeMovableContent(I)V +HSPLandroidx/compose/runtime/ComposerImpl;->skipCurrentGroup()V +HSPLandroidx/compose/runtime/ComposerImpl;->skipGroup()V +HSPLandroidx/compose/runtime/ComposerImpl;->skipReaderToGroupEnd()V +HSPLandroidx/compose/runtime/ComposerImpl;->skipToGroupEnd()V +HSPLandroidx/compose/runtime/ComposerImpl;->sourceInformation(Ljava/lang/String;)V +HSPLandroidx/compose/runtime/ComposerImpl;->sourceInformationMarkerEnd()V +HSPLandroidx/compose/runtime/ComposerImpl;->sourceInformationMarkerStart(ILjava/lang/String;)V +HSPLandroidx/compose/runtime/ComposerImpl;->start-BaiHCIY(ILjava/lang/Object;ILjava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl;->startDefaults()V +HSPLandroidx/compose/runtime/ComposerImpl;->startGroup(I)V +HSPLandroidx/compose/runtime/ComposerImpl;->startGroup(ILjava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl;->startMovableGroup(ILjava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl;->startNode()V +HSPLandroidx/compose/runtime/ComposerImpl;->startProviders([Landroidx/compose/runtime/ProvidedValue;)V +HSPLandroidx/compose/runtime/ComposerImpl;->startReaderGroup(ZLjava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl;->startReplaceableGroup(I)V +HSPLandroidx/compose/runtime/ComposerImpl;->startRestartGroup(I)Landroidx/compose/runtime/Composer; +HSPLandroidx/compose/runtime/ComposerImpl;->startReusableGroup(ILjava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl;->startReusableNode()V +HSPLandroidx/compose/runtime/ComposerImpl;->startRoot()V +HSPLandroidx/compose/runtime/ComposerImpl;->tryImminentInvalidation$runtime_release(Landroidx/compose/runtime/RecomposeScopeImpl;Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/ComposerImpl;->updateCompoundKeyWhenWeEnterGroup(ILjava/lang/Object;Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl;->updateCompoundKeyWhenWeEnterGroupKeyHash(I)V +HSPLandroidx/compose/runtime/ComposerImpl;->updateCompoundKeyWhenWeExitGroup(ILjava/lang/Object;Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl;->updateCompoundKeyWhenWeExitGroupKeyHash(I)V +HSPLandroidx/compose/runtime/ComposerImpl;->updateNodeCount(II)V +HSPLandroidx/compose/runtime/ComposerImpl;->updateNodeCountOverrides(II)V +HSPLandroidx/compose/runtime/ComposerImpl;->updateProviderMapGroup(Landroidx/compose/runtime/PersistentCompositionLocalMap;Landroidx/compose/runtime/PersistentCompositionLocalMap;)Landroidx/compose/runtime/PersistentCompositionLocalMap; +HSPLandroidx/compose/runtime/ComposerImpl;->updateRememberedValue(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl;->updateValue(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl;->updatedNodeCount(I)I +HSPLandroidx/compose/runtime/ComposerImpl;->useNode()V +HSPLandroidx/compose/runtime/ComposerImpl;->validateNodeExpected()V +HSPLandroidx/compose/runtime/ComposerImpl;->validateNodeNotExpected()V +Landroidx/compose/runtime/ComposerImpl$CompositionContextHolder; +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextHolder;->(Landroidx/compose/runtime/ComposerImpl$CompositionContextImpl;)V +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextHolder;->getRef()Landroidx/compose/runtime/ComposerImpl$CompositionContextImpl; +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextHolder;->onForgotten()V +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextHolder;->onRemembered()V +Landroidx/compose/runtime/ComposerImpl$CompositionContextImpl; +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->(Landroidx/compose/runtime/ComposerImpl;IZ)V +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->composeInitial$runtime_release(Landroidx/compose/runtime/ControlledComposition;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->dispose()V +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->doneComposing$runtime_release()V +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->getCollectingParameterInformation$runtime_release()Z +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->getComposers()Ljava/util/Set; +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->getCompositionLocalScope$runtime_release()Landroidx/compose/runtime/PersistentCompositionLocalMap; +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->getCompositionLocalScope()Landroidx/compose/runtime/PersistentCompositionLocalMap; +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->getCompoundHashKey$runtime_release()I +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->getEffectCoroutineContext()Lkotlin/coroutines/CoroutineContext; +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->invalidate$runtime_release(Landroidx/compose/runtime/ControlledComposition;)V +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->registerComposer$runtime_release(Landroidx/compose/runtime/Composer;)V +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->setCompositionLocalScope(Landroidx/compose/runtime/PersistentCompositionLocalMap;)V +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->startComposing$runtime_release()V +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->unregisterComposer$runtime_release(Landroidx/compose/runtime/Composer;)V +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->unregisterComposition$runtime_release(Landroidx/compose/runtime/ControlledComposition;)V +HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->updateCompositionLocalScope(Landroidx/compose/runtime/PersistentCompositionLocalMap;)V +Landroidx/compose/runtime/ComposerImpl$apply$operation$1; +HSPLandroidx/compose/runtime/ComposerImpl$apply$operation$1;->(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl$apply$operation$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$apply$operation$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$createNode$2; +HSPLandroidx/compose/runtime/ComposerImpl$createNode$2;->(Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Anchor;I)V +HSPLandroidx/compose/runtime/ComposerImpl$createNode$2;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$createNode$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$createNode$3; +HSPLandroidx/compose/runtime/ComposerImpl$createNode$3;->(Landroidx/compose/runtime/Anchor;I)V +HSPLandroidx/compose/runtime/ComposerImpl$createNode$3;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$createNode$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$2; +HSPLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$2;->(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$2;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$3; +HSPLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$3;->(Landroidx/compose/runtime/ComposerImpl;I)V +HSPLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$3;->invoke(ILjava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$3$1; +HSPLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$3$1;->(Ljava/lang/Object;I)V +HSPLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$3$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$3$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$3$2; +HSPLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$3$2;->(Ljava/lang/Object;I)V +HSPLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$3$2;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$3$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$derivedStateObserver$1; +HSPLandroidx/compose/runtime/ComposerImpl$derivedStateObserver$1;->(Landroidx/compose/runtime/ComposerImpl;)V +HSPLandroidx/compose/runtime/ComposerImpl$derivedStateObserver$1;->done(Landroidx/compose/runtime/DerivedState;)V +HSPLandroidx/compose/runtime/ComposerImpl$derivedStateObserver$1;->start(Landroidx/compose/runtime/DerivedState;)V +Landroidx/compose/runtime/ComposerImpl$doCompose$lambda$38$$inlined$sortBy$1; +HSPLandroidx/compose/runtime/ComposerImpl$doCompose$lambda$38$$inlined$sortBy$1;->()V +HSPLandroidx/compose/runtime/ComposerImpl$doCompose$lambda$38$$inlined$sortBy$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +Landroidx/compose/runtime/ComposerImpl$endRestartGroup$1$1; +HSPLandroidx/compose/runtime/ComposerImpl$endRestartGroup$1$1;->(Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/ComposerImpl;)V +HSPLandroidx/compose/runtime/ComposerImpl$endRestartGroup$1$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$endRestartGroup$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$realizeDowns$1; +HSPLandroidx/compose/runtime/ComposerImpl$realizeDowns$1;->([Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl$realizeDowns$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$realizeDowns$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$realizeMovement$1; +HSPLandroidx/compose/runtime/ComposerImpl$realizeMovement$1;->(II)V +HSPLandroidx/compose/runtime/ComposerImpl$realizeMovement$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$realizeMovement$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$realizeMovement$2; +Landroidx/compose/runtime/ComposerImpl$realizeOperationLocation$2; +HSPLandroidx/compose/runtime/ComposerImpl$realizeOperationLocation$2;->(I)V +HSPLandroidx/compose/runtime/ComposerImpl$realizeOperationLocation$2;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$realizeOperationLocation$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$realizeUps$1; +HSPLandroidx/compose/runtime/ComposerImpl$realizeUps$1;->(I)V +HSPLandroidx/compose/runtime/ComposerImpl$realizeUps$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$realizeUps$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$recordInsert$1; +HSPLandroidx/compose/runtime/ComposerImpl$recordInsert$1;->(Landroidx/compose/runtime/SlotTable;Landroidx/compose/runtime/Anchor;)V +HSPLandroidx/compose/runtime/ComposerImpl$recordInsert$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$recordInsert$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$recordInsert$2; +HSPLandroidx/compose/runtime/ComposerImpl$recordInsert$2;->(Landroidx/compose/runtime/SlotTable;Landroidx/compose/runtime/Anchor;Ljava/util/List;)V +HSPLandroidx/compose/runtime/ComposerImpl$recordInsert$2;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$recordInsert$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$recordSideEffect$1; +HSPLandroidx/compose/runtime/ComposerImpl$recordSideEffect$1;->(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/runtime/ComposerImpl$recordSideEffect$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$recordSideEffect$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$recordSlotEditing$1; +HSPLandroidx/compose/runtime/ComposerImpl$recordSlotEditing$1;->(Landroidx/compose/runtime/Anchor;)V +HSPLandroidx/compose/runtime/ComposerImpl$recordSlotEditing$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$recordSlotEditing$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$start$2; +HSPLandroidx/compose/runtime/ComposerImpl$start$2;->(I)V +HSPLandroidx/compose/runtime/ComposerImpl$start$2;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$start$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$startProviders$currentProviders$1; +HSPLandroidx/compose/runtime/ComposerImpl$startProviders$currentProviders$1;->([Landroidx/compose/runtime/ProvidedValue;Landroidx/compose/runtime/PersistentCompositionLocalMap;)V +HSPLandroidx/compose/runtime/ComposerImpl$startProviders$currentProviders$1;->invoke(Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/PersistentCompositionLocalMap; +HSPLandroidx/compose/runtime/ComposerImpl$startProviders$currentProviders$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$startReaderGroup$1; +PLandroidx/compose/runtime/ComposerImpl$startReaderGroup$1;->(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl$startReaderGroup$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$startReaderGroup$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$updateValue$1; +HSPLandroidx/compose/runtime/ComposerImpl$updateValue$1;->(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerImpl$updateValue$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$updateValue$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerImpl$updateValue$2; +HSPLandroidx/compose/runtime/ComposerImpl$updateValue$2;->(Ljava/lang/Object;I)V +HSPLandroidx/compose/runtime/ComposerImpl$updateValue$2;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerImpl$updateValue$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerKt; +HSPLandroidx/compose/runtime/ComposerKt;->()V +HSPLandroidx/compose/runtime/ComposerKt;->access$asBool(I)Z +HSPLandroidx/compose/runtime/ComposerKt;->access$asInt(Z)I +HSPLandroidx/compose/runtime/ComposerKt;->access$firstInRange(Ljava/util/List;II)Landroidx/compose/runtime/Invalidation; +HSPLandroidx/compose/runtime/ComposerKt;->access$getEndGroupInstance$p()Lkotlin/jvm/functions/Function3; +HSPLandroidx/compose/runtime/ComposerKt;->access$getJoinedKey(Landroidx/compose/runtime/KeyInfo;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/ComposerKt;->access$getRemoveCurrentGroupInstance$p()Lkotlin/jvm/functions/Function3; +HSPLandroidx/compose/runtime/ComposerKt;->access$getStartRootGroup$p()Lkotlin/jvm/functions/Function3; +HSPLandroidx/compose/runtime/ComposerKt;->access$insertIfMissing(Ljava/util/List;ILandroidx/compose/runtime/RecomposeScopeImpl;Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerKt;->access$multiMap()Ljava/util/HashMap; +HSPLandroidx/compose/runtime/ComposerKt;->access$nearestCommonRootOf(Landroidx/compose/runtime/SlotReader;III)I +HSPLandroidx/compose/runtime/ComposerKt;->access$pop(Ljava/util/HashMap;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/ComposerKt;->access$put(Ljava/util/HashMap;Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/ComposerKt;->access$removeLocation(Ljava/util/List;I)Landroidx/compose/runtime/Invalidation; +HSPLandroidx/compose/runtime/ComposerKt;->access$removeRange(Ljava/util/List;II)V +HSPLandroidx/compose/runtime/ComposerKt;->asBool(I)Z +HSPLandroidx/compose/runtime/ComposerKt;->asInt(Z)I +HSPLandroidx/compose/runtime/ComposerKt;->distanceFrom(Landroidx/compose/runtime/SlotReader;II)I +HSPLandroidx/compose/runtime/ComposerKt;->findInsertLocation(Ljava/util/List;I)I +HSPLandroidx/compose/runtime/ComposerKt;->findLocation(Ljava/util/List;I)I +HSPLandroidx/compose/runtime/ComposerKt;->firstInRange(Ljava/util/List;II)Landroidx/compose/runtime/Invalidation; +HSPLandroidx/compose/runtime/ComposerKt;->getCompositionLocalMap()Ljava/lang/Object; +HSPLandroidx/compose/runtime/ComposerKt;->getInvocation()Ljava/lang/Object; +HSPLandroidx/compose/runtime/ComposerKt;->getJoinedKey(Landroidx/compose/runtime/KeyInfo;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/ComposerKt;->getProvider()Ljava/lang/Object; +HSPLandroidx/compose/runtime/ComposerKt;->getProviderMaps()Ljava/lang/Object; +HSPLandroidx/compose/runtime/ComposerKt;->getProviderValues()Ljava/lang/Object; +HSPLandroidx/compose/runtime/ComposerKt;->getReference()Ljava/lang/Object; +HSPLandroidx/compose/runtime/ComposerKt;->insertIfMissing(Ljava/util/List;ILandroidx/compose/runtime/RecomposeScopeImpl;Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/ComposerKt;->isTraceInProgress()Z +HSPLandroidx/compose/runtime/ComposerKt;->multiMap()Ljava/util/HashMap; +HSPLandroidx/compose/runtime/ComposerKt;->nearestCommonRootOf(Landroidx/compose/runtime/SlotReader;III)I +HSPLandroidx/compose/runtime/ComposerKt;->pop(Ljava/util/HashMap;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/ComposerKt;->put(Ljava/util/HashMap;Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/ComposerKt;->remove(Ljava/util/HashMap;Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Unit; +HSPLandroidx/compose/runtime/ComposerKt;->removeCurrentGroup(Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerKt;->removeLocation(Ljava/util/List;I)Landroidx/compose/runtime/Invalidation; +HSPLandroidx/compose/runtime/ComposerKt;->removeRange(Ljava/util/List;II)V +HSPLandroidx/compose/runtime/ComposerKt;->runtimeCheck(Z)V +HSPLandroidx/compose/runtime/ComposerKt;->sourceInformation(Landroidx/compose/runtime/Composer;Ljava/lang/String;)V +HSPLandroidx/compose/runtime/ComposerKt;->sourceInformationMarkerEnd(Landroidx/compose/runtime/Composer;)V +HSPLandroidx/compose/runtime/ComposerKt;->sourceInformationMarkerStart(Landroidx/compose/runtime/Composer;ILjava/lang/String;)V +Landroidx/compose/runtime/ComposerKt$endGroupInstance$1; +HSPLandroidx/compose/runtime/ComposerKt$endGroupInstance$1;->()V +HSPLandroidx/compose/runtime/ComposerKt$endGroupInstance$1;->()V +HSPLandroidx/compose/runtime/ComposerKt$endGroupInstance$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerKt$endGroupInstance$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerKt$removeCurrentGroupInstance$1; +HSPLandroidx/compose/runtime/ComposerKt$removeCurrentGroupInstance$1;->()V +HSPLandroidx/compose/runtime/ComposerKt$removeCurrentGroupInstance$1;->()V +HSPLandroidx/compose/runtime/ComposerKt$removeCurrentGroupInstance$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerKt$removeCurrentGroupInstance$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/ComposerKt$resetSlotsInstance$1; +HSPLandroidx/compose/runtime/ComposerKt$resetSlotsInstance$1;->()V +HSPLandroidx/compose/runtime/ComposerKt$resetSlotsInstance$1;->()V +Landroidx/compose/runtime/ComposerKt$skipToGroupEndInstance$1; +HSPLandroidx/compose/runtime/ComposerKt$skipToGroupEndInstance$1;->()V +HSPLandroidx/compose/runtime/ComposerKt$skipToGroupEndInstance$1;->()V +Landroidx/compose/runtime/ComposerKt$startRootGroup$1; +HSPLandroidx/compose/runtime/ComposerKt$startRootGroup$1;->()V +HSPLandroidx/compose/runtime/ComposerKt$startRootGroup$1;->()V +HSPLandroidx/compose/runtime/ComposerKt$startRootGroup$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V +HSPLandroidx/compose/runtime/ComposerKt$startRootGroup$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/Composition; +Landroidx/compose/runtime/CompositionContext; +HSPLandroidx/compose/runtime/CompositionContext;->()V +HSPLandroidx/compose/runtime/CompositionContext;->()V +HSPLandroidx/compose/runtime/CompositionContext;->doneComposing$runtime_release()V +HSPLandroidx/compose/runtime/CompositionContext;->getCompositionLocalScope$runtime_release()Landroidx/compose/runtime/PersistentCompositionLocalMap; +HSPLandroidx/compose/runtime/CompositionContext;->registerComposer$runtime_release(Landroidx/compose/runtime/Composer;)V +HSPLandroidx/compose/runtime/CompositionContext;->startComposing$runtime_release()V +Landroidx/compose/runtime/CompositionContextKt; +HSPLandroidx/compose/runtime/CompositionContextKt;->()V +HSPLandroidx/compose/runtime/CompositionContextKt;->access$getEmptyPersistentCompositionLocalMap$p()Landroidx/compose/runtime/PersistentCompositionLocalMap; +Landroidx/compose/runtime/CompositionImpl; +HSPLandroidx/compose/runtime/CompositionImpl;->(Landroidx/compose/runtime/CompositionContext;Landroidx/compose/runtime/Applier;Lkotlin/coroutines/CoroutineContext;)V +HSPLandroidx/compose/runtime/CompositionImpl;->(Landroidx/compose/runtime/CompositionContext;Landroidx/compose/runtime/Applier;Lkotlin/coroutines/CoroutineContext;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/CompositionImpl;->addPendingInvalidationsLocked(Ljava/util/HashSet;Ljava/lang/Object;Z)Ljava/util/HashSet; +HSPLandroidx/compose/runtime/CompositionImpl;->addPendingInvalidationsLocked(Ljava/util/Set;Z)V +HSPLandroidx/compose/runtime/CompositionImpl;->applyChanges()V +HSPLandroidx/compose/runtime/CompositionImpl;->applyChangesInLocked(Ljava/util/List;)V +HSPLandroidx/compose/runtime/CompositionImpl;->applyLateChanges()V +HSPLandroidx/compose/runtime/CompositionImpl;->changesApplied()V +HSPLandroidx/compose/runtime/CompositionImpl;->cleanUpDerivedStateObservations()V +HSPLandroidx/compose/runtime/CompositionImpl;->composeContent(Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/runtime/CompositionImpl;->dispose()V +HSPLandroidx/compose/runtime/CompositionImpl;->drainPendingModificationsForCompositionLocked()V +HSPLandroidx/compose/runtime/CompositionImpl;->drainPendingModificationsLocked()V +HSPLandroidx/compose/runtime/CompositionImpl;->getAreChildrenComposing()Z +HSPLandroidx/compose/runtime/CompositionImpl;->getHasInvalidations()Z +HSPLandroidx/compose/runtime/CompositionImpl;->invalidate(Landroidx/compose/runtime/RecomposeScopeImpl;Ljava/lang/Object;)Landroidx/compose/runtime/InvalidationResult; +HSPLandroidx/compose/runtime/CompositionImpl;->invalidateChecked(Landroidx/compose/runtime/RecomposeScopeImpl;Landroidx/compose/runtime/Anchor;Ljava/lang/Object;)Landroidx/compose/runtime/InvalidationResult; +HSPLandroidx/compose/runtime/CompositionImpl;->invalidateScopeOfLocked(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/CompositionImpl;->isComposing()Z +HSPLandroidx/compose/runtime/CompositionImpl;->isDisposed()Z +HSPLandroidx/compose/runtime/CompositionImpl;->observesAnyOf(Ljava/util/Set;)Z +HSPLandroidx/compose/runtime/CompositionImpl;->prepareCompose(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/runtime/CompositionImpl;->recompose()Z +HSPLandroidx/compose/runtime/CompositionImpl;->recomposeScopeReleased(Landroidx/compose/runtime/RecomposeScopeImpl;)V +HSPLandroidx/compose/runtime/CompositionImpl;->recordModificationsOf(Ljava/util/Set;)V +HSPLandroidx/compose/runtime/CompositionImpl;->recordReadOf(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/CompositionImpl;->recordWriteOf(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/CompositionImpl;->removeDerivedStateObservation$runtime_release(Landroidx/compose/runtime/DerivedState;)V +HSPLandroidx/compose/runtime/CompositionImpl;->removeObservation$runtime_release(Ljava/lang/Object;Landroidx/compose/runtime/RecomposeScopeImpl;)V +HSPLandroidx/compose/runtime/CompositionImpl;->setContent(Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/runtime/CompositionImpl;->takeInvalidations()Landroidx/compose/runtime/collection/IdentityArrayMap; +HSPLandroidx/compose/runtime/CompositionImpl;->tryImminentInvalidation(Landroidx/compose/runtime/RecomposeScopeImpl;Ljava/lang/Object;)Z +Landroidx/compose/runtime/CompositionImpl$RememberEventDispatcher; +HSPLandroidx/compose/runtime/CompositionImpl$RememberEventDispatcher;->(Ljava/util/Set;)V +HSPLandroidx/compose/runtime/CompositionImpl$RememberEventDispatcher;->deactivating(Landroidx/compose/runtime/ComposeNodeLifecycleCallback;)V +HSPLandroidx/compose/runtime/CompositionImpl$RememberEventDispatcher;->dispatchAbandons()V +HSPLandroidx/compose/runtime/CompositionImpl$RememberEventDispatcher;->dispatchRememberObservers()V +HSPLandroidx/compose/runtime/CompositionImpl$RememberEventDispatcher;->dispatchSideEffects()V +HSPLandroidx/compose/runtime/CompositionImpl$RememberEventDispatcher;->forgetting(Landroidx/compose/runtime/RememberObserver;)V +HSPLandroidx/compose/runtime/CompositionImpl$RememberEventDispatcher;->releasing(Landroidx/compose/runtime/ComposeNodeLifecycleCallback;)V +HSPLandroidx/compose/runtime/CompositionImpl$RememberEventDispatcher;->remembering(Landroidx/compose/runtime/RememberObserver;)V +HSPLandroidx/compose/runtime/CompositionImpl$RememberEventDispatcher;->sideEffect(Lkotlin/jvm/functions/Function0;)V +Landroidx/compose/runtime/CompositionKt; +HSPLandroidx/compose/runtime/CompositionKt;->()V +HSPLandroidx/compose/runtime/CompositionKt;->Composition(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/CompositionContext;)Landroidx/compose/runtime/Composition; +HSPLandroidx/compose/runtime/CompositionKt;->access$addValue(Landroidx/compose/runtime/collection/IdentityArrayMap;Ljava/lang/Object;Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/CompositionKt;->access$getPendingApplyNoModifications$p()Ljava/lang/Object; +HSPLandroidx/compose/runtime/CompositionKt;->addValue(Landroidx/compose/runtime/collection/IdentityArrayMap;Ljava/lang/Object;Ljava/lang/Object;)V +Landroidx/compose/runtime/CompositionLocal; +HSPLandroidx/compose/runtime/CompositionLocal;->()V +HSPLandroidx/compose/runtime/CompositionLocal;->(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/runtime/CompositionLocal;->(Lkotlin/jvm/functions/Function0;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/CompositionLocal;->getDefaultValueHolder$runtime_release()Landroidx/compose/runtime/LazyValueHolder; +Landroidx/compose/runtime/CompositionLocalKt; +HSPLandroidx/compose/runtime/CompositionLocalKt;->CompositionLocalProvider([Landroidx/compose/runtime/ProvidedValue;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/runtime/CompositionLocalKt;->compositionLocalOf$default(Landroidx/compose/runtime/SnapshotMutationPolicy;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/runtime/CompositionLocalKt;->compositionLocalOf(Landroidx/compose/runtime/SnapshotMutationPolicy;Lkotlin/jvm/functions/Function0;)Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/runtime/CompositionLocalKt;->staticCompositionLocalOf(Lkotlin/jvm/functions/Function0;)Landroidx/compose/runtime/ProvidableCompositionLocal; +Landroidx/compose/runtime/CompositionLocalMap; +HSPLandroidx/compose/runtime/CompositionLocalMap;->()V +Landroidx/compose/runtime/CompositionLocalMap$Companion; +HSPLandroidx/compose/runtime/CompositionLocalMap$Companion;->()V +HSPLandroidx/compose/runtime/CompositionLocalMap$Companion;->()V +HSPLandroidx/compose/runtime/CompositionLocalMap$Companion;->getEmpty()Landroidx/compose/runtime/CompositionLocalMap; +Landroidx/compose/runtime/CompositionLocalMapKt; +HSPLandroidx/compose/runtime/CompositionLocalMapKt;->compositionLocalMapOf([Landroidx/compose/runtime/ProvidedValue;Landroidx/compose/runtime/PersistentCompositionLocalMap;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/PersistentCompositionLocalMap; +HSPLandroidx/compose/runtime/CompositionLocalMapKt;->contains(Landroidx/compose/runtime/PersistentCompositionLocalMap;Landroidx/compose/runtime/CompositionLocal;)Z +HSPLandroidx/compose/runtime/CompositionLocalMapKt;->getValueOf(Landroidx/compose/runtime/PersistentCompositionLocalMap;Landroidx/compose/runtime/CompositionLocal;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/CompositionLocalMapKt;->read(Landroidx/compose/runtime/PersistentCompositionLocalMap;Landroidx/compose/runtime/CompositionLocal;)Ljava/lang/Object; +Landroidx/compose/runtime/CompositionScopedCoroutineScopeCanceller; +HSPLandroidx/compose/runtime/CompositionScopedCoroutineScopeCanceller;->(Lkotlinx/coroutines/CoroutineScope;)V +HSPLandroidx/compose/runtime/CompositionScopedCoroutineScopeCanceller;->getCoroutineScope()Lkotlinx/coroutines/CoroutineScope; +HSPLandroidx/compose/runtime/CompositionScopedCoroutineScopeCanceller;->onForgotten()V +HSPLandroidx/compose/runtime/CompositionScopedCoroutineScopeCanceller;->onRemembered()V +Landroidx/compose/runtime/CompositionTracer; +Landroidx/compose/runtime/ControlledComposition; +Landroidx/compose/runtime/DerivedSnapshotState; +HSPLandroidx/compose/runtime/DerivedSnapshotState;->(Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/SnapshotMutationPolicy;)V +HSPLandroidx/compose/runtime/DerivedSnapshotState;->current(Landroidx/compose/runtime/snapshots/Snapshot;)Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/DerivedSnapshotState;->currentRecord(Landroidx/compose/runtime/DerivedSnapshotState$ResultRecord;Landroidx/compose/runtime/snapshots/Snapshot;ZLkotlin/jvm/functions/Function0;)Landroidx/compose/runtime/DerivedSnapshotState$ResultRecord; +HSPLandroidx/compose/runtime/DerivedSnapshotState;->getCurrentRecord()Landroidx/compose/runtime/DerivedState$Record; +HSPLandroidx/compose/runtime/DerivedSnapshotState;->getFirstStateRecord()Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/DerivedSnapshotState;->getPolicy()Landroidx/compose/runtime/SnapshotMutationPolicy; +HSPLandroidx/compose/runtime/DerivedSnapshotState;->getValue()Ljava/lang/Object; +HSPLandroidx/compose/runtime/DerivedSnapshotState;->prependStateRecord(Landroidx/compose/runtime/snapshots/StateRecord;)V +Landroidx/compose/runtime/DerivedSnapshotState$ResultRecord; +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->()V +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->()V +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->access$getUnset$cp()Ljava/lang/Object; +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->assign(Landroidx/compose/runtime/snapshots/StateRecord;)V +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->create()Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->getCurrentValue()Ljava/lang/Object; +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->getDependencies()[Ljava/lang/Object; +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->getResult()Ljava/lang/Object; +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->get_dependencies()Landroidx/compose/runtime/collection/IdentityArrayMap; +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->isValid(Landroidx/compose/runtime/DerivedState;Landroidx/compose/runtime/snapshots/Snapshot;)Z +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->readableHash(Landroidx/compose/runtime/DerivedState;Landroidx/compose/runtime/snapshots/Snapshot;)I +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->setResult(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->setResultHash(I)V +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->setValidSnapshotId(I)V +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->setValidSnapshotWriteCount(I)V +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->set_dependencies(Landroidx/compose/runtime/collection/IdentityArrayMap;)V +Landroidx/compose/runtime/DerivedSnapshotState$ResultRecord$Companion; +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord$Companion;->()V +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord$Companion;->getUnset()Ljava/lang/Object; +Landroidx/compose/runtime/DerivedSnapshotState$currentRecord$result$1$result$1; +HSPLandroidx/compose/runtime/DerivedSnapshotState$currentRecord$result$1$result$1;->(Landroidx/compose/runtime/DerivedSnapshotState;Landroidx/compose/runtime/collection/IdentityArrayMap;I)V +HSPLandroidx/compose/runtime/DerivedSnapshotState$currentRecord$result$1$result$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/DerivedSnapshotState$currentRecord$result$1$result$1;->invoke(Ljava/lang/Object;)V +Landroidx/compose/runtime/DerivedState; +Landroidx/compose/runtime/DerivedState$Record; +Landroidx/compose/runtime/DerivedStateObserver; +Landroidx/compose/runtime/DisposableEffectImpl; +HSPLandroidx/compose/runtime/DisposableEffectImpl;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/runtime/DisposableEffectImpl;->onForgotten()V +HSPLandroidx/compose/runtime/DisposableEffectImpl;->onRemembered()V +Landroidx/compose/runtime/DisposableEffectResult; +Landroidx/compose/runtime/DisposableEffectScope; +HSPLandroidx/compose/runtime/DisposableEffectScope;->()V +HSPLandroidx/compose/runtime/DisposableEffectScope;->()V +Landroidx/compose/runtime/DynamicProvidableCompositionLocal; +HSPLandroidx/compose/runtime/DynamicProvidableCompositionLocal;->(Landroidx/compose/runtime/SnapshotMutationPolicy;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/runtime/DynamicProvidableCompositionLocal;->access$getPolicy$p(Landroidx/compose/runtime/DynamicProvidableCompositionLocal;)Landroidx/compose/runtime/SnapshotMutationPolicy; +HSPLandroidx/compose/runtime/DynamicProvidableCompositionLocal;->provided$runtime_release(Ljava/lang/Object;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +Landroidx/compose/runtime/EffectsKt; +HSPLandroidx/compose/runtime/EffectsKt;->()V +HSPLandroidx/compose/runtime/EffectsKt;->DisposableEffect(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/runtime/EffectsKt;->DisposableEffect(Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/runtime/EffectsKt;->DisposableEffect(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/runtime/EffectsKt;->LaunchedEffect(Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/runtime/EffectsKt;->LaunchedEffect(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/runtime/EffectsKt;->LaunchedEffect([Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/runtime/EffectsKt;->SideEffect(Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/runtime/EffectsKt;->access$getInternalDisposableEffectScope$p()Landroidx/compose/runtime/DisposableEffectScope; +HSPLandroidx/compose/runtime/EffectsKt;->createCompositionCoroutineScope(Lkotlin/coroutines/CoroutineContext;Landroidx/compose/runtime/Composer;)Lkotlinx/coroutines/CoroutineScope; +Landroidx/compose/runtime/FloatState; +Landroidx/compose/runtime/GroupInfo; +HSPLandroidx/compose/runtime/GroupInfo;->(III)V +HSPLandroidx/compose/runtime/GroupInfo;->getNodeCount()I +HSPLandroidx/compose/runtime/GroupInfo;->getNodeIndex()I +HSPLandroidx/compose/runtime/GroupInfo;->getSlotIndex()I +HSPLandroidx/compose/runtime/GroupInfo;->setNodeCount(I)V +HSPLandroidx/compose/runtime/GroupInfo;->setNodeIndex(I)V +HSPLandroidx/compose/runtime/GroupInfo;->setSlotIndex(I)V +Landroidx/compose/runtime/GroupKind; +HSPLandroidx/compose/runtime/GroupKind;->()V +HSPLandroidx/compose/runtime/GroupKind;->access$getGroup$cp()I +HSPLandroidx/compose/runtime/GroupKind;->access$getNode$cp()I +HSPLandroidx/compose/runtime/GroupKind;->access$getReusableNode$cp()I +HSPLandroidx/compose/runtime/GroupKind;->constructor-impl(I)I +Landroidx/compose/runtime/GroupKind$Companion; +HSPLandroidx/compose/runtime/GroupKind$Companion;->()V +HSPLandroidx/compose/runtime/GroupKind$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/GroupKind$Companion;->getGroup-ULZAiWs()I +HSPLandroidx/compose/runtime/GroupKind$Companion;->getNode-ULZAiWs()I +HSPLandroidx/compose/runtime/GroupKind$Companion;->getReusableNode-ULZAiWs()I +Landroidx/compose/runtime/IntStack; +HSPLandroidx/compose/runtime/IntStack;->()V +HSPLandroidx/compose/runtime/IntStack;->clear()V +HSPLandroidx/compose/runtime/IntStack;->getSize()I +HSPLandroidx/compose/runtime/IntStack;->isEmpty()Z +HSPLandroidx/compose/runtime/IntStack;->peek()I +HSPLandroidx/compose/runtime/IntStack;->peekOr(I)I +HSPLandroidx/compose/runtime/IntStack;->pop()I +HSPLandroidx/compose/runtime/IntStack;->push(I)V +Landroidx/compose/runtime/IntState; +Landroidx/compose/runtime/Invalidation; +HSPLandroidx/compose/runtime/Invalidation;->(Landroidx/compose/runtime/RecomposeScopeImpl;ILandroidx/compose/runtime/collection/IdentityArraySet;)V +HSPLandroidx/compose/runtime/Invalidation;->getInstances()Landroidx/compose/runtime/collection/IdentityArraySet; +HSPLandroidx/compose/runtime/Invalidation;->getLocation()I +HSPLandroidx/compose/runtime/Invalidation;->getScope()Landroidx/compose/runtime/RecomposeScopeImpl; +HSPLandroidx/compose/runtime/Invalidation;->isInvalid()Z +HSPLandroidx/compose/runtime/Invalidation;->setInstances(Landroidx/compose/runtime/collection/IdentityArraySet;)V +Landroidx/compose/runtime/InvalidationResult; +HSPLandroidx/compose/runtime/InvalidationResult;->$values()[Landroidx/compose/runtime/InvalidationResult; +HSPLandroidx/compose/runtime/InvalidationResult;->()V +HSPLandroidx/compose/runtime/InvalidationResult;->(Ljava/lang/String;I)V +Landroidx/compose/runtime/JoinedKey; +HSPLandroidx/compose/runtime/JoinedKey;->(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/JoinedKey;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/JoinedKey;->hashCode()I +HSPLandroidx/compose/runtime/JoinedKey;->hashCodeOf(Ljava/lang/Object;)I +Landroidx/compose/runtime/KeyInfo; +HSPLandroidx/compose/runtime/KeyInfo;->(ILjava/lang/Object;III)V +HSPLandroidx/compose/runtime/KeyInfo;->getKey()I +HSPLandroidx/compose/runtime/KeyInfo;->getLocation()I +HSPLandroidx/compose/runtime/KeyInfo;->getNodes()I +HSPLandroidx/compose/runtime/KeyInfo;->getObjectKey()Ljava/lang/Object; +Landroidx/compose/runtime/Latch; +HSPLandroidx/compose/runtime/Latch;->()V +HSPLandroidx/compose/runtime/Latch;->await(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Latch;->closeLatch()V +HSPLandroidx/compose/runtime/Latch;->isOpen()Z +HSPLandroidx/compose/runtime/Latch;->openLatch()V +Landroidx/compose/runtime/LaunchedEffectImpl; +HSPLandroidx/compose/runtime/LaunchedEffectImpl;->(Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/runtime/LaunchedEffectImpl;->onForgotten()V +HSPLandroidx/compose/runtime/LaunchedEffectImpl;->onRemembered()V +Landroidx/compose/runtime/LazyValueHolder; +HSPLandroidx/compose/runtime/LazyValueHolder;->(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/runtime/LazyValueHolder;->getCurrent()Ljava/lang/Object; +HSPLandroidx/compose/runtime/LazyValueHolder;->getValue()Ljava/lang/Object; +Landroidx/compose/runtime/LeftCompositionCancellationException; +HSPLandroidx/compose/runtime/LeftCompositionCancellationException;->()V +HSPLandroidx/compose/runtime/LeftCompositionCancellationException;->fillInStackTrace()Ljava/lang/Throwable; +Landroidx/compose/runtime/LongState; +Landroidx/compose/runtime/MonotonicFrameClock; +HSPLandroidx/compose/runtime/MonotonicFrameClock;->()V +HSPLandroidx/compose/runtime/MonotonicFrameClock;->getKey()Lkotlin/coroutines/CoroutineContext$Key; +Landroidx/compose/runtime/MonotonicFrameClock$DefaultImpls; +HSPLandroidx/compose/runtime/MonotonicFrameClock$DefaultImpls;->fold(Landroidx/compose/runtime/MonotonicFrameClock;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/MonotonicFrameClock$DefaultImpls;->get(Landroidx/compose/runtime/MonotonicFrameClock;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLandroidx/compose/runtime/MonotonicFrameClock$DefaultImpls;->minusKey(Landroidx/compose/runtime/MonotonicFrameClock;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext; +Landroidx/compose/runtime/MonotonicFrameClock$Key; +HSPLandroidx/compose/runtime/MonotonicFrameClock$Key;->()V +HSPLandroidx/compose/runtime/MonotonicFrameClock$Key;->()V +Landroidx/compose/runtime/MonotonicFrameClockKt; +HSPLandroidx/compose/runtime/MonotonicFrameClockKt;->getMonotonicFrameClock(Lkotlin/coroutines/CoroutineContext;)Landroidx/compose/runtime/MonotonicFrameClock; +HSPLandroidx/compose/runtime/MonotonicFrameClockKt;->withFrameNanos(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/runtime/MovableContent; +Landroidx/compose/runtime/MutableFloatState; +Landroidx/compose/runtime/MutableIntState; +Landroidx/compose/runtime/MutableLongState; +Landroidx/compose/runtime/MutableState; +Landroidx/compose/runtime/NeverEqualPolicy; +HSPLandroidx/compose/runtime/NeverEqualPolicy;->()V +HSPLandroidx/compose/runtime/NeverEqualPolicy;->()V +HSPLandroidx/compose/runtime/NeverEqualPolicy;->equivalent(Ljava/lang/Object;Ljava/lang/Object;)Z +Landroidx/compose/runtime/OpaqueKey; +HSPLandroidx/compose/runtime/OpaqueKey;->(Ljava/lang/String;)V +HSPLandroidx/compose/runtime/OpaqueKey;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/OpaqueKey;->hashCode()I +Landroidx/compose/runtime/ParcelableSnapshotMutableFloatState; +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableFloatState;->()V +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableFloatState;->(F)V +Landroidx/compose/runtime/ParcelableSnapshotMutableFloatState$Companion; +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableFloatState$Companion;->()V +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableFloatState$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/runtime/ParcelableSnapshotMutableFloatState$Companion$CREATOR$1; +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableFloatState$Companion$CREATOR$1;->()V +Landroidx/compose/runtime/ParcelableSnapshotMutableIntState; +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableIntState;->()V +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableIntState;->(I)V +Landroidx/compose/runtime/ParcelableSnapshotMutableIntState$Companion; +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableIntState$Companion;->()V +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableIntState$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/runtime/ParcelableSnapshotMutableIntState$Companion$CREATOR$1; +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableIntState$Companion$CREATOR$1;->()V +Landroidx/compose/runtime/ParcelableSnapshotMutableLongState; +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableLongState;->()V +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableLongState;->(J)V +Landroidx/compose/runtime/ParcelableSnapshotMutableLongState$Companion; +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableLongState$Companion;->()V +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableLongState$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/runtime/ParcelableSnapshotMutableLongState$Companion$CREATOR$1; +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableLongState$Companion$CREATOR$1;->()V +Landroidx/compose/runtime/ParcelableSnapshotMutableState; +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableState;->()V +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableState;->(Ljava/lang/Object;Landroidx/compose/runtime/SnapshotMutationPolicy;)V +Landroidx/compose/runtime/ParcelableSnapshotMutableState$Companion; +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableState$Companion;->()V +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableState$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/runtime/ParcelableSnapshotMutableState$Companion$CREATOR$1; +HSPLandroidx/compose/runtime/ParcelableSnapshotMutableState$Companion$CREATOR$1;->()V +Landroidx/compose/runtime/PausableMonotonicFrameClock; +HSPLandroidx/compose/runtime/PausableMonotonicFrameClock;->()V +HSPLandroidx/compose/runtime/PausableMonotonicFrameClock;->(Landroidx/compose/runtime/MonotonicFrameClock;)V +HSPLandroidx/compose/runtime/PausableMonotonicFrameClock;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/PausableMonotonicFrameClock;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLandroidx/compose/runtime/PausableMonotonicFrameClock;->minusKey(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext; +HSPLandroidx/compose/runtime/PausableMonotonicFrameClock;->pause()V +HSPLandroidx/compose/runtime/PausableMonotonicFrameClock;->resume()V +HSPLandroidx/compose/runtime/PausableMonotonicFrameClock;->withFrameNanos(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/runtime/PausableMonotonicFrameClock$withFrameNanos$1; +HSPLandroidx/compose/runtime/PausableMonotonicFrameClock$withFrameNanos$1;->(Landroidx/compose/runtime/PausableMonotonicFrameClock;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/runtime/PausableMonotonicFrameClock$withFrameNanos$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/Pending; +HSPLandroidx/compose/runtime/Pending;->(Ljava/util/List;I)V +HSPLandroidx/compose/runtime/Pending;->getGroupIndex()I +HSPLandroidx/compose/runtime/Pending;->getKeyInfos()Ljava/util/List; +HSPLandroidx/compose/runtime/Pending;->getKeyMap()Ljava/util/HashMap; +HSPLandroidx/compose/runtime/Pending;->getNext(ILjava/lang/Object;)Landroidx/compose/runtime/KeyInfo; +HSPLandroidx/compose/runtime/Pending;->getStartIndex()I +HSPLandroidx/compose/runtime/Pending;->getUsed()Ljava/util/List; +HSPLandroidx/compose/runtime/Pending;->nodePositionOf(Landroidx/compose/runtime/KeyInfo;)I +HSPLandroidx/compose/runtime/Pending;->recordUsed(Landroidx/compose/runtime/KeyInfo;)Z +HSPLandroidx/compose/runtime/Pending;->registerInsert(Landroidx/compose/runtime/KeyInfo;I)V +HSPLandroidx/compose/runtime/Pending;->registerMoveSlot(II)V +HSPLandroidx/compose/runtime/Pending;->setGroupIndex(I)V +HSPLandroidx/compose/runtime/Pending;->slotPositionOf(Landroidx/compose/runtime/KeyInfo;)I +HSPLandroidx/compose/runtime/Pending;->updateNodeCount(II)Z +HSPLandroidx/compose/runtime/Pending;->updatedNodeCountOf(Landroidx/compose/runtime/KeyInfo;)I +Landroidx/compose/runtime/Pending$keyMap$2; +HSPLandroidx/compose/runtime/Pending$keyMap$2;->(Landroidx/compose/runtime/Pending;)V +HSPLandroidx/compose/runtime/Pending$keyMap$2;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/runtime/Pending$keyMap$2;->invoke()Ljava/util/HashMap; +Landroidx/compose/runtime/PersistentCompositionLocalMap; +Landroidx/compose/runtime/PersistentCompositionLocalMap$Builder; +Landroidx/compose/runtime/PrimitiveSnapshotStateKt; +HSPLandroidx/compose/runtime/PrimitiveSnapshotStateKt;->mutableFloatStateOf(F)Landroidx/compose/runtime/MutableFloatState; +Landroidx/compose/runtime/PrimitiveSnapshotStateKt__SnapshotFloatStateKt; +HSPLandroidx/compose/runtime/PrimitiveSnapshotStateKt__SnapshotFloatStateKt;->mutableFloatStateOf(F)Landroidx/compose/runtime/MutableFloatState; +Landroidx/compose/runtime/PrioritySet; +HSPLandroidx/compose/runtime/PrioritySet;->(Ljava/util/List;)V +HSPLandroidx/compose/runtime/PrioritySet;->(Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/PrioritySet;->add(I)V +HSPLandroidx/compose/runtime/PrioritySet;->isNotEmpty()Z +HSPLandroidx/compose/runtime/PrioritySet;->peek()I +HSPLandroidx/compose/runtime/PrioritySet;->takeMax()I +Landroidx/compose/runtime/ProduceStateScope; +Landroidx/compose/runtime/ProduceStateScopeImpl; +HSPLandroidx/compose/runtime/ProduceStateScopeImpl;->(Landroidx/compose/runtime/MutableState;Lkotlin/coroutines/CoroutineContext;)V +HSPLandroidx/compose/runtime/ProduceStateScopeImpl;->setValue(Ljava/lang/Object;)V +Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/runtime/ProvidableCompositionLocal;->()V +HSPLandroidx/compose/runtime/ProvidableCompositionLocal;->(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/runtime/ProvidableCompositionLocal;->provides(Ljava/lang/Object;)Landroidx/compose/runtime/ProvidedValue; +HSPLandroidx/compose/runtime/ProvidableCompositionLocal;->providesDefault(Ljava/lang/Object;)Landroidx/compose/runtime/ProvidedValue; +Landroidx/compose/runtime/ProvidedValue; +HSPLandroidx/compose/runtime/ProvidedValue;->()V +HSPLandroidx/compose/runtime/ProvidedValue;->(Landroidx/compose/runtime/CompositionLocal;Ljava/lang/Object;Z)V +HSPLandroidx/compose/runtime/ProvidedValue;->getCanOverride()Z +HSPLandroidx/compose/runtime/ProvidedValue;->getCompositionLocal()Landroidx/compose/runtime/CompositionLocal; +HSPLandroidx/compose/runtime/ProvidedValue;->getValue()Ljava/lang/Object; +Landroidx/compose/runtime/RecomposeScope; +Landroidx/compose/runtime/RecomposeScopeImpl; +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->()V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->(Landroidx/compose/runtime/RecomposeScopeOwner;)V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->access$getCurrentToken$p(Landroidx/compose/runtime/RecomposeScopeImpl;)I +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->access$getTrackedDependencies$p(Landroidx/compose/runtime/RecomposeScopeImpl;)Landroidx/compose/runtime/collection/IdentityArrayMap; +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->access$getTrackedInstances$p(Landroidx/compose/runtime/RecomposeScopeImpl;)Landroidx/compose/runtime/collection/IdentityArrayIntMap; +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->access$setTrackedDependencies$p(Landroidx/compose/runtime/RecomposeScopeImpl;Landroidx/compose/runtime/collection/IdentityArrayMap;)V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->access$setTrackedInstances$p(Landroidx/compose/runtime/RecomposeScopeImpl;Landroidx/compose/runtime/collection/IdentityArrayIntMap;)V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->compose(Landroidx/compose/runtime/Composer;)V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->end(I)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->getAnchor()Landroidx/compose/runtime/Anchor; +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->getCanRecompose()Z +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->getDefaultsInScope()Z +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->getDefaultsInvalid()Z +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->getRequiresRecompose()Z +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->getRereading()Z +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->getSkipped$runtime_release()Z +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->getUsed()Z +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->getValid()Z +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->invalidate()V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->invalidateForResult(Ljava/lang/Object;)Landroidx/compose/runtime/InvalidationResult; +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->isConditional()Z +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->isInvalidFor(Landroidx/compose/runtime/collection/IdentityArraySet;)Z +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->recordRead(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->release()V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->rereadTrackedInstances()V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->scopeSkipped()V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->setAnchor(Landroidx/compose/runtime/Anchor;)V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->setDefaultsInScope(Z)V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->setDefaultsInvalid(Z)V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->setRequiresRecompose(Z)V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->setRereading(Z)V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->setSkipped(Z)V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->setUsed(Z)V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->start(I)V +HSPLandroidx/compose/runtime/RecomposeScopeImpl;->updateScope(Lkotlin/jvm/functions/Function2;)V +Landroidx/compose/runtime/RecomposeScopeImpl$Companion; +HSPLandroidx/compose/runtime/RecomposeScopeImpl$Companion;->()V +HSPLandroidx/compose/runtime/RecomposeScopeImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/runtime/RecomposeScopeImpl$end$1$2; +HSPLandroidx/compose/runtime/RecomposeScopeImpl$end$1$2;->(Landroidx/compose/runtime/RecomposeScopeImpl;ILandroidx/compose/runtime/collection/IdentityArrayIntMap;)V +HSPLandroidx/compose/runtime/RecomposeScopeImpl$end$1$2;->invoke(Landroidx/compose/runtime/Composition;)V +HSPLandroidx/compose/runtime/RecomposeScopeImpl$end$1$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/RecomposeScopeImplKt; +HSPLandroidx/compose/runtime/RecomposeScopeImplKt;->updateChangedFlags(I)I +Landroidx/compose/runtime/RecomposeScopeOwner; +Landroidx/compose/runtime/Recomposer; +HSPLandroidx/compose/runtime/Recomposer;->()V +HSPLandroidx/compose/runtime/Recomposer;->(Lkotlin/coroutines/CoroutineContext;)V +HSPLandroidx/compose/runtime/Recomposer;->access$awaitWorkAvailable(Landroidx/compose/runtime/Recomposer;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer;->access$deriveStateLocked(Landroidx/compose/runtime/Recomposer;)Lkotlinx/coroutines/CancellableContinuation; +HSPLandroidx/compose/runtime/Recomposer;->access$discardUnusedValues(Landroidx/compose/runtime/Recomposer;)V +HSPLandroidx/compose/runtime/Recomposer;->access$getBroadcastFrameClock$p(Landroidx/compose/runtime/Recomposer;)Landroidx/compose/runtime/BroadcastFrameClock; +HSPLandroidx/compose/runtime/Recomposer;->access$getCompositionInvalidations$p(Landroidx/compose/runtime/Recomposer;)Ljava/util/List; +HSPLandroidx/compose/runtime/Recomposer;->access$getCompositionValuesAwaitingInsert$p(Landroidx/compose/runtime/Recomposer;)Ljava/util/List; +HSPLandroidx/compose/runtime/Recomposer;->access$getHasBroadcastFrameClockAwaiters(Landroidx/compose/runtime/Recomposer;)Z +HSPLandroidx/compose/runtime/Recomposer;->access$getHasSchedulingWork(Landroidx/compose/runtime/Recomposer;)Z +HSPLandroidx/compose/runtime/Recomposer;->access$getKnownCompositions$p(Landroidx/compose/runtime/Recomposer;)Ljava/util/List; +HSPLandroidx/compose/runtime/Recomposer;->access$getRecomposerInfo$p(Landroidx/compose/runtime/Recomposer;)Landroidx/compose/runtime/Recomposer$RecomposerInfoImpl; +HSPLandroidx/compose/runtime/Recomposer;->access$getShouldKeepRecomposing(Landroidx/compose/runtime/Recomposer;)Z +HSPLandroidx/compose/runtime/Recomposer;->access$getSnapshotInvalidations$p(Landroidx/compose/runtime/Recomposer;)Landroidx/compose/runtime/collection/IdentityArraySet; +HSPLandroidx/compose/runtime/Recomposer;->access$getStateLock$p(Landroidx/compose/runtime/Recomposer;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer;->access$get_runningRecomposers$cp()Lkotlinx/coroutines/flow/MutableStateFlow; +HSPLandroidx/compose/runtime/Recomposer;->access$get_state$p(Landroidx/compose/runtime/Recomposer;)Lkotlinx/coroutines/flow/MutableStateFlow; +HSPLandroidx/compose/runtime/Recomposer;->access$performRecompose(Landroidx/compose/runtime/Recomposer;Landroidx/compose/runtime/ControlledComposition;Landroidx/compose/runtime/collection/IdentityArraySet;)Landroidx/compose/runtime/ControlledComposition; +HSPLandroidx/compose/runtime/Recomposer;->access$recordComposerModifications(Landroidx/compose/runtime/Recomposer;)Z +HSPLandroidx/compose/runtime/Recomposer;->access$registerRunnerJob(Landroidx/compose/runtime/Recomposer;Lkotlinx/coroutines/Job;)V +HSPLandroidx/compose/runtime/Recomposer;->access$setChangeCount$p(Landroidx/compose/runtime/Recomposer;J)V +HSPLandroidx/compose/runtime/Recomposer;->access$setCompositionsRemoved$p(Landroidx/compose/runtime/Recomposer;Ljava/util/Set;)V +HSPLandroidx/compose/runtime/Recomposer;->access$setWorkContinuation$p(Landroidx/compose/runtime/Recomposer;Lkotlinx/coroutines/CancellableContinuation;)V +HSPLandroidx/compose/runtime/Recomposer;->applyAndCheck(Landroidx/compose/runtime/snapshots/MutableSnapshot;)V +HSPLandroidx/compose/runtime/Recomposer;->awaitWorkAvailable(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer;->composeInitial$runtime_release(Landroidx/compose/runtime/ControlledComposition;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/runtime/Recomposer;->deriveStateLocked()Lkotlinx/coroutines/CancellableContinuation; +HSPLandroidx/compose/runtime/Recomposer;->discardUnusedValues()V +HSPLandroidx/compose/runtime/Recomposer;->getChangeCount()J +HSPLandroidx/compose/runtime/Recomposer;->getCollectingParameterInformation$runtime_release()Z +HSPLandroidx/compose/runtime/Recomposer;->getCompoundHashKey$runtime_release()I +HSPLandroidx/compose/runtime/Recomposer;->getCurrentState()Lkotlinx/coroutines/flow/StateFlow; +HSPLandroidx/compose/runtime/Recomposer;->getEffectCoroutineContext()Lkotlin/coroutines/CoroutineContext; +HSPLandroidx/compose/runtime/Recomposer;->getHasBroadcastFrameClockAwaiters()Z +HSPLandroidx/compose/runtime/Recomposer;->getHasBroadcastFrameClockAwaitersLocked()Z +HSPLandroidx/compose/runtime/Recomposer;->getHasFrameWorkLocked()Z +HSPLandroidx/compose/runtime/Recomposer;->getHasSchedulingWork()Z +HSPLandroidx/compose/runtime/Recomposer;->getShouldKeepRecomposing()Z +HSPLandroidx/compose/runtime/Recomposer;->invalidate$runtime_release(Landroidx/compose/runtime/ControlledComposition;)V +HSPLandroidx/compose/runtime/Recomposer;->join(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer;->pauseCompositionFrameClock()V +HSPLandroidx/compose/runtime/Recomposer;->performInitialMovableContentInserts(Landroidx/compose/runtime/ControlledComposition;)V +HSPLandroidx/compose/runtime/Recomposer;->performRecompose(Landroidx/compose/runtime/ControlledComposition;Landroidx/compose/runtime/collection/IdentityArraySet;)Landroidx/compose/runtime/ControlledComposition; +HSPLandroidx/compose/runtime/Recomposer;->readObserverOf(Landroidx/compose/runtime/ControlledComposition;)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/runtime/Recomposer;->recompositionRunner(Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer;->recordComposerModifications()Z +HSPLandroidx/compose/runtime/Recomposer;->registerRunnerJob(Lkotlinx/coroutines/Job;)V +HSPLandroidx/compose/runtime/Recomposer;->reportRemovedComposition$runtime_release(Landroidx/compose/runtime/ControlledComposition;)V +HSPLandroidx/compose/runtime/Recomposer;->resumeCompositionFrameClock()V +HSPLandroidx/compose/runtime/Recomposer;->runRecomposeAndApplyChanges(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer;->unregisterComposition$runtime_release(Landroidx/compose/runtime/ControlledComposition;)V +HSPLandroidx/compose/runtime/Recomposer;->writeObserverOf(Landroidx/compose/runtime/ControlledComposition;Landroidx/compose/runtime/collection/IdentityArraySet;)Lkotlin/jvm/functions/Function1; +Landroidx/compose/runtime/Recomposer$Companion; +HSPLandroidx/compose/runtime/Recomposer$Companion;->()V +HSPLandroidx/compose/runtime/Recomposer$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/Recomposer$Companion;->access$addRunning(Landroidx/compose/runtime/Recomposer$Companion;Landroidx/compose/runtime/Recomposer$RecomposerInfoImpl;)V +HSPLandroidx/compose/runtime/Recomposer$Companion;->addRunning(Landroidx/compose/runtime/Recomposer$RecomposerInfoImpl;)V +Landroidx/compose/runtime/Recomposer$RecomposerErrorState; +Landroidx/compose/runtime/Recomposer$RecomposerInfoImpl; +HSPLandroidx/compose/runtime/Recomposer$RecomposerInfoImpl;->(Landroidx/compose/runtime/Recomposer;)V +Landroidx/compose/runtime/Recomposer$State; +HSPLandroidx/compose/runtime/Recomposer$State;->$values()[Landroidx/compose/runtime/Recomposer$State; +HSPLandroidx/compose/runtime/Recomposer$State;->()V +HSPLandroidx/compose/runtime/Recomposer$State;->(Ljava/lang/String;I)V +Landroidx/compose/runtime/Recomposer$broadcastFrameClock$1; +HSPLandroidx/compose/runtime/Recomposer$broadcastFrameClock$1;->(Landroidx/compose/runtime/Recomposer;)V +HSPLandroidx/compose/runtime/Recomposer$broadcastFrameClock$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer$broadcastFrameClock$1;->invoke()V +Landroidx/compose/runtime/Recomposer$effectJob$1$1; +HSPLandroidx/compose/runtime/Recomposer$effectJob$1$1;->(Landroidx/compose/runtime/Recomposer;)V +Landroidx/compose/runtime/Recomposer$join$2; +HSPLandroidx/compose/runtime/Recomposer$join$2;->(Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/runtime/Recomposer$join$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/runtime/Recomposer$join$2;->invoke(Landroidx/compose/runtime/Recomposer$State;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer$join$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer$join$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/Recomposer$performRecompose$1$1; +HSPLandroidx/compose/runtime/Recomposer$performRecompose$1$1;->(Landroidx/compose/runtime/collection/IdentityArraySet;Landroidx/compose/runtime/ControlledComposition;)V +HSPLandroidx/compose/runtime/Recomposer$performRecompose$1$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer$performRecompose$1$1;->invoke()V +Landroidx/compose/runtime/Recomposer$readObserverOf$1; +HSPLandroidx/compose/runtime/Recomposer$readObserverOf$1;->(Landroidx/compose/runtime/ControlledComposition;)V +HSPLandroidx/compose/runtime/Recomposer$readObserverOf$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer$readObserverOf$1;->invoke(Ljava/lang/Object;)V +Landroidx/compose/runtime/Recomposer$recompositionRunner$2; +HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2;->(Landroidx/compose/runtime/Recomposer;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/MonotonicFrameClock;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/Recomposer$recompositionRunner$2$3; +HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2$3;->(Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/MonotonicFrameClock;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2$3;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2$3;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/Recomposer$recompositionRunner$2$unregisterApplyObserver$1; +HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2$unregisterApplyObserver$1;->(Landroidx/compose/runtime/Recomposer;)V +HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2$unregisterApplyObserver$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2$unregisterApplyObserver$1;->invoke(Ljava/util/Set;Landroidx/compose/runtime/snapshots/Snapshot;)V +Landroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2; +HSPLandroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2;->(Landroidx/compose/runtime/Recomposer;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2;->access$invokeSuspend$fillToInsert(Ljava/util/List;Landroidx/compose/runtime/Recomposer;)V +HSPLandroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Landroidx/compose/runtime/MonotonicFrameClock;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2;->invokeSuspend$fillToInsert(Ljava/util/List;Landroidx/compose/runtime/Recomposer;)V +HSPLandroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2$1; +HSPLandroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2$1;->(Landroidx/compose/runtime/Recomposer;Ljava/util/List;Ljava/util/List;Ljava/util/Set;Ljava/util/List;Ljava/util/Set;)V +HSPLandroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2$1;->invoke(J)V +HSPLandroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/Recomposer$writeObserverOf$1; +HSPLandroidx/compose/runtime/Recomposer$writeObserverOf$1;->(Landroidx/compose/runtime/ControlledComposition;Landroidx/compose/runtime/collection/IdentityArraySet;)V +HSPLandroidx/compose/runtime/Recomposer$writeObserverOf$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Recomposer$writeObserverOf$1;->invoke(Ljava/lang/Object;)V +Landroidx/compose/runtime/RecomposerErrorInfo; +Landroidx/compose/runtime/RecomposerInfo; +Landroidx/compose/runtime/ReferentialEqualityPolicy; +HSPLandroidx/compose/runtime/ReferentialEqualityPolicy;->()V +HSPLandroidx/compose/runtime/ReferentialEqualityPolicy;->()V +HSPLandroidx/compose/runtime/ReferentialEqualityPolicy;->equivalent(Ljava/lang/Object;Ljava/lang/Object;)Z +Landroidx/compose/runtime/RememberManager; +Landroidx/compose/runtime/RememberObserver; +Landroidx/compose/runtime/ScopeUpdateScope; +Landroidx/compose/runtime/SkippableUpdater; +HSPLandroidx/compose/runtime/SkippableUpdater;->(Landroidx/compose/runtime/Composer;)V +HSPLandroidx/compose/runtime/SkippableUpdater;->box-impl(Landroidx/compose/runtime/Composer;)Landroidx/compose/runtime/SkippableUpdater; +HSPLandroidx/compose/runtime/SkippableUpdater;->constructor-impl(Landroidx/compose/runtime/Composer;)Landroidx/compose/runtime/Composer; +HSPLandroidx/compose/runtime/SkippableUpdater;->unbox-impl()Landroidx/compose/runtime/Composer; +Landroidx/compose/runtime/SlotReader; +HSPLandroidx/compose/runtime/SlotReader;->(Landroidx/compose/runtime/SlotTable;)V +HSPLandroidx/compose/runtime/SlotReader;->anchor(I)Landroidx/compose/runtime/Anchor; +HSPLandroidx/compose/runtime/SlotReader;->aux([II)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotReader;->beginEmpty()V +HSPLandroidx/compose/runtime/SlotReader;->close()V +HSPLandroidx/compose/runtime/SlotReader;->containsMark(I)Z +HSPLandroidx/compose/runtime/SlotReader;->endEmpty()V +HSPLandroidx/compose/runtime/SlotReader;->endGroup()V +HSPLandroidx/compose/runtime/SlotReader;->extractKeys()Ljava/util/List; +HSPLandroidx/compose/runtime/SlotReader;->forEachData$runtime_release(ILkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/runtime/SlotReader;->getCurrentEnd()I +HSPLandroidx/compose/runtime/SlotReader;->getCurrentGroup()I +HSPLandroidx/compose/runtime/SlotReader;->getGroupAux()Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotReader;->getGroupEnd()I +HSPLandroidx/compose/runtime/SlotReader;->getGroupKey()I +HSPLandroidx/compose/runtime/SlotReader;->getGroupObjectKey()Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotReader;->getGroupSize()I +HSPLandroidx/compose/runtime/SlotReader;->getGroupSlotIndex()I +HSPLandroidx/compose/runtime/SlotReader;->getInEmpty()Z +HSPLandroidx/compose/runtime/SlotReader;->getParent()I +HSPLandroidx/compose/runtime/SlotReader;->getParentNodes()I +HSPLandroidx/compose/runtime/SlotReader;->getSize()I +HSPLandroidx/compose/runtime/SlotReader;->getTable$runtime_release()Landroidx/compose/runtime/SlotTable; +HSPLandroidx/compose/runtime/SlotReader;->groupAux(I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotReader;->groupGet(I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotReader;->groupGet(II)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotReader;->groupKey(I)I +HSPLandroidx/compose/runtime/SlotReader;->groupObjectKey(I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotReader;->groupSize(I)I +HSPLandroidx/compose/runtime/SlotReader;->hasMark(I)Z +HSPLandroidx/compose/runtime/SlotReader;->hasObjectKey(I)Z +HSPLandroidx/compose/runtime/SlotReader;->isGroupEnd()Z +HSPLandroidx/compose/runtime/SlotReader;->isNode()Z +HSPLandroidx/compose/runtime/SlotReader;->isNode(I)Z +HSPLandroidx/compose/runtime/SlotReader;->next()Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotReader;->node(I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotReader;->node([II)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotReader;->nodeCount(I)I +HSPLandroidx/compose/runtime/SlotReader;->objectKey([II)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotReader;->parent(I)I +HSPLandroidx/compose/runtime/SlotReader;->reposition(I)V +HSPLandroidx/compose/runtime/SlotReader;->restoreParent(I)V +HSPLandroidx/compose/runtime/SlotReader;->skipGroup()I +HSPLandroidx/compose/runtime/SlotReader;->skipToGroupEnd()V +HSPLandroidx/compose/runtime/SlotReader;->startGroup()V +HSPLandroidx/compose/runtime/SlotReader;->startNode()V +Landroidx/compose/runtime/SlotTable; +HSPLandroidx/compose/runtime/SlotTable;->()V +HSPLandroidx/compose/runtime/SlotTable;->anchorIndex(Landroidx/compose/runtime/Anchor;)I +HSPLandroidx/compose/runtime/SlotTable;->close$runtime_release(Landroidx/compose/runtime/SlotReader;)V +HSPLandroidx/compose/runtime/SlotTable;->close$runtime_release(Landroidx/compose/runtime/SlotWriter;[II[Ljava/lang/Object;ILjava/util/ArrayList;)V +HSPLandroidx/compose/runtime/SlotTable;->containsMark()Z +HSPLandroidx/compose/runtime/SlotTable;->getAnchors$runtime_release()Ljava/util/ArrayList; +HSPLandroidx/compose/runtime/SlotTable;->getGroups()[I +HSPLandroidx/compose/runtime/SlotTable;->getGroupsSize()I +HSPLandroidx/compose/runtime/SlotTable;->getSlots()[Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotTable;->getSlotsSize()I +HSPLandroidx/compose/runtime/SlotTable;->isEmpty()Z +HSPLandroidx/compose/runtime/SlotTable;->openReader()Landroidx/compose/runtime/SlotReader; +HSPLandroidx/compose/runtime/SlotTable;->openWriter()Landroidx/compose/runtime/SlotWriter; +HSPLandroidx/compose/runtime/SlotTable;->ownsAnchor(Landroidx/compose/runtime/Anchor;)Z +HSPLandroidx/compose/runtime/SlotTable;->setTo$runtime_release([II[Ljava/lang/Object;ILjava/util/ArrayList;)V +Landroidx/compose/runtime/SlotTableKt; +HSPLandroidx/compose/runtime/SlotTableKt;->access$addAux([II)V +HSPLandroidx/compose/runtime/SlotTableKt;->access$auxIndex([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->access$containsAnyMark([II)Z +HSPLandroidx/compose/runtime/SlotTableKt;->access$containsMark([II)Z +HSPLandroidx/compose/runtime/SlotTableKt;->access$countOneBits(I)I +HSPLandroidx/compose/runtime/SlotTableKt;->access$dataAnchor([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->access$groupInfo([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->access$groupSize([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->access$hasAux([II)Z +HSPLandroidx/compose/runtime/SlotTableKt;->access$hasMark([II)Z +HSPLandroidx/compose/runtime/SlotTableKt;->access$hasObjectKey([II)Z +HSPLandroidx/compose/runtime/SlotTableKt;->access$initGroup([IIIZZZII)V +HSPLandroidx/compose/runtime/SlotTableKt;->access$isNode([II)Z +HSPLandroidx/compose/runtime/SlotTableKt;->access$key([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->access$locationOf(Ljava/util/ArrayList;II)I +HSPLandroidx/compose/runtime/SlotTableKt;->access$nodeCount([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->access$nodeIndex([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->access$objectKeyIndex([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->access$parentAnchor([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->access$search(Ljava/util/ArrayList;II)I +HSPLandroidx/compose/runtime/SlotTableKt;->access$slotAnchor([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->access$updateContainsMark([IIZ)V +HSPLandroidx/compose/runtime/SlotTableKt;->access$updateDataAnchor([III)V +HSPLandroidx/compose/runtime/SlotTableKt;->access$updateGroupSize([III)V +HSPLandroidx/compose/runtime/SlotTableKt;->access$updateMark([IIZ)V +HSPLandroidx/compose/runtime/SlotTableKt;->access$updateNodeCount([III)V +HSPLandroidx/compose/runtime/SlotTableKt;->access$updateParentAnchor([III)V +HSPLandroidx/compose/runtime/SlotTableKt;->addAux([II)V +HSPLandroidx/compose/runtime/SlotTableKt;->auxIndex([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->containsAnyMark([II)Z +HSPLandroidx/compose/runtime/SlotTableKt;->containsMark([II)Z +HSPLandroidx/compose/runtime/SlotTableKt;->countOneBits(I)I +HSPLandroidx/compose/runtime/SlotTableKt;->dataAnchor([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->groupInfo([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->groupSize([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->hasAux([II)Z +HSPLandroidx/compose/runtime/SlotTableKt;->hasMark([II)Z +HSPLandroidx/compose/runtime/SlotTableKt;->hasObjectKey([II)Z +HSPLandroidx/compose/runtime/SlotTableKt;->initGroup([IIIZZZII)V +HSPLandroidx/compose/runtime/SlotTableKt;->isNode([II)Z +HSPLandroidx/compose/runtime/SlotTableKt;->key([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->locationOf(Ljava/util/ArrayList;II)I +HSPLandroidx/compose/runtime/SlotTableKt;->nodeCount([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->nodeIndex([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->objectKeyIndex([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->parentAnchor([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->search(Ljava/util/ArrayList;II)I +HSPLandroidx/compose/runtime/SlotTableKt;->slotAnchor([II)I +HSPLandroidx/compose/runtime/SlotTableKt;->updateContainsMark([IIZ)V +HSPLandroidx/compose/runtime/SlotTableKt;->updateDataAnchor([III)V +HSPLandroidx/compose/runtime/SlotTableKt;->updateGroupSize([III)V +HSPLandroidx/compose/runtime/SlotTableKt;->updateMark([IIZ)V +HSPLandroidx/compose/runtime/SlotTableKt;->updateNodeCount([III)V +HSPLandroidx/compose/runtime/SlotTableKt;->updateParentAnchor([III)V +Landroidx/compose/runtime/SlotWriter; +HSPLandroidx/compose/runtime/SlotWriter;->()V +HSPLandroidx/compose/runtime/SlotWriter;->(Landroidx/compose/runtime/SlotTable;)V +HSPLandroidx/compose/runtime/SlotWriter;->access$containsAnyGroupMarks(Landroidx/compose/runtime/SlotWriter;I)Z +HSPLandroidx/compose/runtime/SlotWriter;->access$dataIndex(Landroidx/compose/runtime/SlotWriter;I)I +HSPLandroidx/compose/runtime/SlotWriter;->access$dataIndex(Landroidx/compose/runtime/SlotWriter;[II)I +HSPLandroidx/compose/runtime/SlotWriter;->access$dataIndexToDataAddress(Landroidx/compose/runtime/SlotWriter;I)I +HSPLandroidx/compose/runtime/SlotWriter;->access$dataIndexToDataAnchor(Landroidx/compose/runtime/SlotWriter;IIII)I +HSPLandroidx/compose/runtime/SlotWriter;->access$getAnchors$p(Landroidx/compose/runtime/SlotWriter;)Ljava/util/ArrayList; +HSPLandroidx/compose/runtime/SlotWriter;->access$getCurrentSlot$p(Landroidx/compose/runtime/SlotWriter;)I +HSPLandroidx/compose/runtime/SlotWriter;->access$getGroupGapStart$p(Landroidx/compose/runtime/SlotWriter;)I +HSPLandroidx/compose/runtime/SlotWriter;->access$getGroups$p(Landroidx/compose/runtime/SlotWriter;)[I +HSPLandroidx/compose/runtime/SlotWriter;->access$getNodeCount$p(Landroidx/compose/runtime/SlotWriter;)I +HSPLandroidx/compose/runtime/SlotWriter;->access$getSlots$p(Landroidx/compose/runtime/SlotWriter;)[Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotWriter;->access$getSlotsGapLen$p(Landroidx/compose/runtime/SlotWriter;)I +HSPLandroidx/compose/runtime/SlotWriter;->access$getSlotsGapOwner$p(Landroidx/compose/runtime/SlotWriter;)I +HSPLandroidx/compose/runtime/SlotWriter;->access$getSlotsGapStart$p(Landroidx/compose/runtime/SlotWriter;)I +HSPLandroidx/compose/runtime/SlotWriter;->access$insertGroups(Landroidx/compose/runtime/SlotWriter;I)V +HSPLandroidx/compose/runtime/SlotWriter;->access$insertSlots(Landroidx/compose/runtime/SlotWriter;II)V +HSPLandroidx/compose/runtime/SlotWriter;->access$setCurrentGroup$p(Landroidx/compose/runtime/SlotWriter;I)V +HSPLandroidx/compose/runtime/SlotWriter;->access$setCurrentSlot$p(Landroidx/compose/runtime/SlotWriter;I)V +HSPLandroidx/compose/runtime/SlotWriter;->access$setNodeCount$p(Landroidx/compose/runtime/SlotWriter;I)V +HSPLandroidx/compose/runtime/SlotWriter;->access$setSlotsGapOwner$p(Landroidx/compose/runtime/SlotWriter;I)V +HSPLandroidx/compose/runtime/SlotWriter;->access$updateContainsMark(Landroidx/compose/runtime/SlotWriter;I)V +HSPLandroidx/compose/runtime/SlotWriter;->advanceBy(I)V +HSPLandroidx/compose/runtime/SlotWriter;->anchor(I)Landroidx/compose/runtime/Anchor; +HSPLandroidx/compose/runtime/SlotWriter;->anchorIndex(Landroidx/compose/runtime/Anchor;)I +HSPLandroidx/compose/runtime/SlotWriter;->auxIndex([II)I +HSPLandroidx/compose/runtime/SlotWriter;->beginInsert()V +HSPLandroidx/compose/runtime/SlotWriter;->childContainsAnyMarks(I)Z +HSPLandroidx/compose/runtime/SlotWriter;->clearSlotGap()V +HSPLandroidx/compose/runtime/SlotWriter;->close()V +HSPLandroidx/compose/runtime/SlotWriter;->containsAnyGroupMarks(I)Z +HSPLandroidx/compose/runtime/SlotWriter;->containsGroupMark(I)Z +HSPLandroidx/compose/runtime/SlotWriter;->dataAnchorToDataIndex(III)I +HSPLandroidx/compose/runtime/SlotWriter;->dataIndex(I)I +HSPLandroidx/compose/runtime/SlotWriter;->dataIndex([II)I +HSPLandroidx/compose/runtime/SlotWriter;->dataIndexToDataAddress(I)I +HSPLandroidx/compose/runtime/SlotWriter;->dataIndexToDataAnchor(IIII)I +HSPLandroidx/compose/runtime/SlotWriter;->endGroup()I +HSPLandroidx/compose/runtime/SlotWriter;->endInsert()V +HSPLandroidx/compose/runtime/SlotWriter;->ensureStarted(I)V +HSPLandroidx/compose/runtime/SlotWriter;->ensureStarted(Landroidx/compose/runtime/Anchor;)V +HSPLandroidx/compose/runtime/SlotWriter;->fixParentAnchorsFor(III)V +HSPLandroidx/compose/runtime/SlotWriter;->getCapacity()I +HSPLandroidx/compose/runtime/SlotWriter;->getClosed()Z +HSPLandroidx/compose/runtime/SlotWriter;->getCurrentGroup()I +HSPLandroidx/compose/runtime/SlotWriter;->getParent()I +HSPLandroidx/compose/runtime/SlotWriter;->getSize$runtime_release()I +HSPLandroidx/compose/runtime/SlotWriter;->getTable$runtime_release()Landroidx/compose/runtime/SlotTable; +HSPLandroidx/compose/runtime/SlotWriter;->groupAux(I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotWriter;->groupIndexToAddress(I)I +HSPLandroidx/compose/runtime/SlotWriter;->groupKey(I)I +HSPLandroidx/compose/runtime/SlotWriter;->groupObjectKey(I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotWriter;->groupSize(I)I +HSPLandroidx/compose/runtime/SlotWriter;->groupSlots()Ljava/util/Iterator; +HSPLandroidx/compose/runtime/SlotWriter;->insertAux(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/SlotWriter;->insertGroups(I)V +HSPLandroidx/compose/runtime/SlotWriter;->insertSlots(II)V +HSPLandroidx/compose/runtime/SlotWriter;->markGroup$default(Landroidx/compose/runtime/SlotWriter;IILjava/lang/Object;)V +HSPLandroidx/compose/runtime/SlotWriter;->markGroup(I)V +HSPLandroidx/compose/runtime/SlotWriter;->moveAnchors(III)V +HSPLandroidx/compose/runtime/SlotWriter;->moveFrom(Landroidx/compose/runtime/SlotTable;IZ)Ljava/util/List; +HSPLandroidx/compose/runtime/SlotWriter;->moveGroup(I)V +HSPLandroidx/compose/runtime/SlotWriter;->moveGroupGapTo(I)V +HSPLandroidx/compose/runtime/SlotWriter;->moveSlotGapTo(II)V +HSPLandroidx/compose/runtime/SlotWriter;->node(I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotWriter;->node(Landroidx/compose/runtime/Anchor;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotWriter;->nodeIndex([II)I +HSPLandroidx/compose/runtime/SlotWriter;->parent(I)I +HSPLandroidx/compose/runtime/SlotWriter;->parent([II)I +HSPLandroidx/compose/runtime/SlotWriter;->parentIndexToAnchor(II)I +HSPLandroidx/compose/runtime/SlotWriter;->recalculateMarks()V +HSPLandroidx/compose/runtime/SlotWriter;->removeAnchors(II)Z +HSPLandroidx/compose/runtime/SlotWriter;->removeGroup()Z +HSPLandroidx/compose/runtime/SlotWriter;->removeGroups(II)Z +HSPLandroidx/compose/runtime/SlotWriter;->removeSlots(III)V +HSPLandroidx/compose/runtime/SlotWriter;->restoreCurrentGroupEnd()I +HSPLandroidx/compose/runtime/SlotWriter;->saveCurrentGroupEnd()V +HSPLandroidx/compose/runtime/SlotWriter;->set(ILjava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotWriter;->set(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/SlotWriter;->skip()Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotWriter;->skipGroup()I +HSPLandroidx/compose/runtime/SlotWriter;->skipToGroupEnd()V +HSPLandroidx/compose/runtime/SlotWriter;->slot(II)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotWriter;->slotIndex([II)I +HSPLandroidx/compose/runtime/SlotWriter;->startData(ILjava/lang/Object;Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/SlotWriter;->startGroup()V +HSPLandroidx/compose/runtime/SlotWriter;->startGroup(ILjava/lang/Object;)V +HSPLandroidx/compose/runtime/SlotWriter;->startGroup(ILjava/lang/Object;ZLjava/lang/Object;)V +HSPLandroidx/compose/runtime/SlotWriter;->startNode(ILjava/lang/Object;)V +HSPLandroidx/compose/runtime/SlotWriter;->update(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SlotWriter;->updateAnchors(II)V +HSPLandroidx/compose/runtime/SlotWriter;->updateAux(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/SlotWriter;->updateContainsMark(I)V +HSPLandroidx/compose/runtime/SlotWriter;->updateContainsMarkNow(ILandroidx/compose/runtime/PrioritySet;)V +HSPLandroidx/compose/runtime/SlotWriter;->updateDataIndex([III)V +HSPLandroidx/compose/runtime/SlotWriter;->updateNode(Landroidx/compose/runtime/Anchor;Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/SlotWriter;->updateNodeOfGroup(ILjava/lang/Object;)V +Landroidx/compose/runtime/SlotWriter$Companion; +HSPLandroidx/compose/runtime/SlotWriter$Companion;->()V +HSPLandroidx/compose/runtime/SlotWriter$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/SlotWriter$Companion;->access$moveGroup(Landroidx/compose/runtime/SlotWriter$Companion;Landroidx/compose/runtime/SlotWriter;ILandroidx/compose/runtime/SlotWriter;ZZZ)Ljava/util/List; +HSPLandroidx/compose/runtime/SlotWriter$Companion;->moveGroup(Landroidx/compose/runtime/SlotWriter;ILandroidx/compose/runtime/SlotWriter;ZZZ)Ljava/util/List; +Landroidx/compose/runtime/SlotWriter$groupSlots$1; +HSPLandroidx/compose/runtime/SlotWriter$groupSlots$1;->(IILandroidx/compose/runtime/SlotWriter;)V +HSPLandroidx/compose/runtime/SlotWriter$groupSlots$1;->hasNext()Z +HSPLandroidx/compose/runtime/SlotWriter$groupSlots$1;->next()Ljava/lang/Object; +Landroidx/compose/runtime/SnapshotIntStateKt; +HSPLandroidx/compose/runtime/SnapshotIntStateKt;->mutableIntStateOf(I)Landroidx/compose/runtime/MutableIntState; +Landroidx/compose/runtime/SnapshotIntStateKt__SnapshotIntStateKt; +HSPLandroidx/compose/runtime/SnapshotIntStateKt__SnapshotIntStateKt;->mutableIntStateOf(I)Landroidx/compose/runtime/MutableIntState; +Landroidx/compose/runtime/SnapshotLongStateKt; +HSPLandroidx/compose/runtime/SnapshotLongStateKt;->mutableLongStateOf(J)Landroidx/compose/runtime/MutableLongState; +Landroidx/compose/runtime/SnapshotLongStateKt__SnapshotLongStateKt; +HSPLandroidx/compose/runtime/SnapshotLongStateKt__SnapshotLongStateKt;->mutableLongStateOf(J)Landroidx/compose/runtime/MutableLongState; +Landroidx/compose/runtime/SnapshotMutableFloatStateImpl; +HSPLandroidx/compose/runtime/SnapshotMutableFloatStateImpl;->(F)V +HSPLandroidx/compose/runtime/SnapshotMutableFloatStateImpl;->getFirstStateRecord()Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/SnapshotMutableFloatStateImpl;->getFloatValue()F +HSPLandroidx/compose/runtime/SnapshotMutableFloatStateImpl;->setFloatValue(F)V +Landroidx/compose/runtime/SnapshotMutableFloatStateImpl$FloatStateStateRecord; +HSPLandroidx/compose/runtime/SnapshotMutableFloatStateImpl$FloatStateStateRecord;->(F)V +HSPLandroidx/compose/runtime/SnapshotMutableFloatStateImpl$FloatStateStateRecord;->getValue()F +Landroidx/compose/runtime/SnapshotMutableIntStateImpl; +HSPLandroidx/compose/runtime/SnapshotMutableIntStateImpl;->(I)V +HSPLandroidx/compose/runtime/SnapshotMutableIntStateImpl;->getFirstStateRecord()Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/SnapshotMutableIntStateImpl;->getIntValue()I +HSPLandroidx/compose/runtime/SnapshotMutableIntStateImpl;->prependStateRecord(Landroidx/compose/runtime/snapshots/StateRecord;)V +HSPLandroidx/compose/runtime/SnapshotMutableIntStateImpl;->setIntValue(I)V +Landroidx/compose/runtime/SnapshotMutableIntStateImpl$IntStateStateRecord; +HSPLandroidx/compose/runtime/SnapshotMutableIntStateImpl$IntStateStateRecord;->(I)V +HSPLandroidx/compose/runtime/SnapshotMutableIntStateImpl$IntStateStateRecord;->assign(Landroidx/compose/runtime/snapshots/StateRecord;)V +HSPLandroidx/compose/runtime/SnapshotMutableIntStateImpl$IntStateStateRecord;->create()Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/SnapshotMutableIntStateImpl$IntStateStateRecord;->getValue()I +HSPLandroidx/compose/runtime/SnapshotMutableIntStateImpl$IntStateStateRecord;->setValue(I)V +Landroidx/compose/runtime/SnapshotMutableLongStateImpl; +HSPLandroidx/compose/runtime/SnapshotMutableLongStateImpl;->(J)V +HSPLandroidx/compose/runtime/SnapshotMutableLongStateImpl;->getFirstStateRecord()Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/SnapshotMutableLongStateImpl;->getLongValue()J +HSPLandroidx/compose/runtime/SnapshotMutableLongStateImpl;->prependStateRecord(Landroidx/compose/runtime/snapshots/StateRecord;)V +HSPLandroidx/compose/runtime/SnapshotMutableLongStateImpl;->setLongValue(J)V +Landroidx/compose/runtime/SnapshotMutableLongStateImpl$LongStateStateRecord; +HSPLandroidx/compose/runtime/SnapshotMutableLongStateImpl$LongStateStateRecord;->(J)V +HSPLandroidx/compose/runtime/SnapshotMutableLongStateImpl$LongStateStateRecord;->assign(Landroidx/compose/runtime/snapshots/StateRecord;)V +HSPLandroidx/compose/runtime/SnapshotMutableLongStateImpl$LongStateStateRecord;->create()Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/SnapshotMutableLongStateImpl$LongStateStateRecord;->getValue()J +HSPLandroidx/compose/runtime/SnapshotMutableLongStateImpl$LongStateStateRecord;->setValue(J)V +Landroidx/compose/runtime/SnapshotMutableStateImpl; +HSPLandroidx/compose/runtime/SnapshotMutableStateImpl;->(Ljava/lang/Object;Landroidx/compose/runtime/SnapshotMutationPolicy;)V +HSPLandroidx/compose/runtime/SnapshotMutableStateImpl;->getFirstStateRecord()Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/SnapshotMutableStateImpl;->getPolicy()Landroidx/compose/runtime/SnapshotMutationPolicy; +HSPLandroidx/compose/runtime/SnapshotMutableStateImpl;->getValue()Ljava/lang/Object; +HSPLandroidx/compose/runtime/SnapshotMutableStateImpl;->prependStateRecord(Landroidx/compose/runtime/snapshots/StateRecord;)V +HSPLandroidx/compose/runtime/SnapshotMutableStateImpl;->setValue(Ljava/lang/Object;)V +Landroidx/compose/runtime/SnapshotMutableStateImpl$StateStateRecord; +HSPLandroidx/compose/runtime/SnapshotMutableStateImpl$StateStateRecord;->(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/SnapshotMutableStateImpl$StateStateRecord;->assign(Landroidx/compose/runtime/snapshots/StateRecord;)V +HSPLandroidx/compose/runtime/SnapshotMutableStateImpl$StateStateRecord;->create()Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/SnapshotMutableStateImpl$StateStateRecord;->getValue()Ljava/lang/Object; +HSPLandroidx/compose/runtime/SnapshotMutableStateImpl$StateStateRecord;->setValue(Ljava/lang/Object;)V +Landroidx/compose/runtime/SnapshotMutationPolicy; +Landroidx/compose/runtime/SnapshotStateKt; +HSPLandroidx/compose/runtime/SnapshotStateKt;->collectAsState(Lkotlinx/coroutines/flow/Flow;Ljava/lang/Object;Lkotlin/coroutines/CoroutineContext;Landroidx/compose/runtime/Composer;II)Landroidx/compose/runtime/State; +HSPLandroidx/compose/runtime/SnapshotStateKt;->collectAsState(Lkotlinx/coroutines/flow/StateFlow;Lkotlin/coroutines/CoroutineContext;Landroidx/compose/runtime/Composer;II)Landroidx/compose/runtime/State; +HSPLandroidx/compose/runtime/SnapshotStateKt;->derivedStateObservers()Landroidx/compose/runtime/collection/MutableVector; +HSPLandroidx/compose/runtime/SnapshotStateKt;->derivedStateOf(Landroidx/compose/runtime/SnapshotMutationPolicy;Lkotlin/jvm/functions/Function0;)Landroidx/compose/runtime/State; +HSPLandroidx/compose/runtime/SnapshotStateKt;->derivedStateOf(Lkotlin/jvm/functions/Function0;)Landroidx/compose/runtime/State; +HSPLandroidx/compose/runtime/SnapshotStateKt;->mutableStateListOf()Landroidx/compose/runtime/snapshots/SnapshotStateList; +HSPLandroidx/compose/runtime/SnapshotStateKt;->mutableStateListOf([Ljava/lang/Object;)Landroidx/compose/runtime/snapshots/SnapshotStateList; +HSPLandroidx/compose/runtime/SnapshotStateKt;->mutableStateMapOf()Landroidx/compose/runtime/snapshots/SnapshotStateMap; +HSPLandroidx/compose/runtime/SnapshotStateKt;->mutableStateOf$default(Ljava/lang/Object;Landroidx/compose/runtime/SnapshotMutationPolicy;ILjava/lang/Object;)Landroidx/compose/runtime/MutableState; +HSPLandroidx/compose/runtime/SnapshotStateKt;->mutableStateOf(Ljava/lang/Object;Landroidx/compose/runtime/SnapshotMutationPolicy;)Landroidx/compose/runtime/MutableState; +HSPLandroidx/compose/runtime/SnapshotStateKt;->neverEqualPolicy()Landroidx/compose/runtime/SnapshotMutationPolicy; +HSPLandroidx/compose/runtime/SnapshotStateKt;->produceState(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +HSPLandroidx/compose/runtime/SnapshotStateKt;->referentialEqualityPolicy()Landroidx/compose/runtime/SnapshotMutationPolicy; +HSPLandroidx/compose/runtime/SnapshotStateKt;->rememberUpdatedState(Ljava/lang/Object;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +HSPLandroidx/compose/runtime/SnapshotStateKt;->snapshotFlow(Lkotlin/jvm/functions/Function0;)Lkotlinx/coroutines/flow/Flow; +HSPLandroidx/compose/runtime/SnapshotStateKt;->structuralEqualityPolicy()Landroidx/compose/runtime/SnapshotMutationPolicy; +Landroidx/compose/runtime/SnapshotStateKt__DerivedStateKt; +HSPLandroidx/compose/runtime/SnapshotStateKt__DerivedStateKt;->()V +HSPLandroidx/compose/runtime/SnapshotStateKt__DerivedStateKt;->access$getCalculationBlockNestedLevel$p()Landroidx/compose/runtime/SnapshotThreadLocal; +HSPLandroidx/compose/runtime/SnapshotStateKt__DerivedStateKt;->derivedStateObservers()Landroidx/compose/runtime/collection/MutableVector; +HSPLandroidx/compose/runtime/SnapshotStateKt__DerivedStateKt;->derivedStateOf(Landroidx/compose/runtime/SnapshotMutationPolicy;Lkotlin/jvm/functions/Function0;)Landroidx/compose/runtime/State; +HSPLandroidx/compose/runtime/SnapshotStateKt__DerivedStateKt;->derivedStateOf(Lkotlin/jvm/functions/Function0;)Landroidx/compose/runtime/State; +Landroidx/compose/runtime/SnapshotStateKt__ProduceStateKt; +HSPLandroidx/compose/runtime/SnapshotStateKt__ProduceStateKt;->produceState(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +Landroidx/compose/runtime/SnapshotStateKt__ProduceStateKt$produceState$3; +HSPLandroidx/compose/runtime/SnapshotStateKt__ProduceStateKt$produceState$3;->(Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/MutableState;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/runtime/SnapshotStateKt__ProduceStateKt$produceState$3;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/runtime/SnapshotStateKt__ProduceStateKt$produceState$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt;->access$intersects(Ljava/util/Set;Ljava/util/Set;)Z +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt;->collectAsState(Lkotlinx/coroutines/flow/Flow;Ljava/lang/Object;Lkotlin/coroutines/CoroutineContext;Landroidx/compose/runtime/Composer;II)Landroidx/compose/runtime/State; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt;->collectAsState(Lkotlinx/coroutines/flow/StateFlow;Lkotlin/coroutines/CoroutineContext;Landroidx/compose/runtime/Composer;II)Landroidx/compose/runtime/State; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt;->intersects$SnapshotStateKt__SnapshotFlowKt(Ljava/util/Set;Ljava/util/Set;)Z +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt;->snapshotFlow(Lkotlin/jvm/functions/Function0;)Lkotlinx/coroutines/flow/Flow; +Landroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$collectAsState$1; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$collectAsState$1;->(Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$collectAsState$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$collectAsState$1;->invoke(Landroidx/compose/runtime/ProduceStateScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$collectAsState$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$collectAsState$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$collectAsState$1$1; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$collectAsState$1$1;->(Landroidx/compose/runtime/ProduceStateScope;)V +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$collectAsState$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1;->(Lkotlin/jvm/functions/Function0;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1$readObserver$1; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1$readObserver$1;->(Ljava/util/Set;)V +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1$readObserver$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1$readObserver$1;->invoke(Ljava/lang/Object;)V +Landroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1$unregisterApplyObserver$1; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1$unregisterApplyObserver$1;->(Lkotlinx/coroutines/channels/Channel;)V +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1$unregisterApplyObserver$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1$unregisterApplyObserver$1;->invoke(Ljava/util/Set;Landroidx/compose/runtime/snapshots/Snapshot;)V +Landroidx/compose/runtime/SnapshotStateKt__SnapshotMutationPolicyKt; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotMutationPolicyKt;->neverEqualPolicy()Landroidx/compose/runtime/SnapshotMutationPolicy; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotMutationPolicyKt;->referentialEqualityPolicy()Landroidx/compose/runtime/SnapshotMutationPolicy; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotMutationPolicyKt;->structuralEqualityPolicy()Landroidx/compose/runtime/SnapshotMutationPolicy; +Landroidx/compose/runtime/SnapshotStateKt__SnapshotStateKt; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotStateKt;->mutableStateListOf()Landroidx/compose/runtime/snapshots/SnapshotStateList; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotStateKt;->mutableStateListOf([Ljava/lang/Object;)Landroidx/compose/runtime/snapshots/SnapshotStateList; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotStateKt;->mutableStateMapOf()Landroidx/compose/runtime/snapshots/SnapshotStateMap; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotStateKt;->mutableStateOf$default(Ljava/lang/Object;Landroidx/compose/runtime/SnapshotMutationPolicy;ILjava/lang/Object;)Landroidx/compose/runtime/MutableState; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotStateKt;->mutableStateOf(Ljava/lang/Object;Landroidx/compose/runtime/SnapshotMutationPolicy;)Landroidx/compose/runtime/MutableState; +HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotStateKt;->rememberUpdatedState(Ljava/lang/Object;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +Landroidx/compose/runtime/SnapshotThreadLocal; +HSPLandroidx/compose/runtime/SnapshotThreadLocal;->()V +HSPLandroidx/compose/runtime/SnapshotThreadLocal;->get()Ljava/lang/Object; +HSPLandroidx/compose/runtime/SnapshotThreadLocal;->set(Ljava/lang/Object;)V +Landroidx/compose/runtime/Stack; +HSPLandroidx/compose/runtime/Stack;->()V +HSPLandroidx/compose/runtime/Stack;->clear()V +HSPLandroidx/compose/runtime/Stack;->getSize()I +HSPLandroidx/compose/runtime/Stack;->isEmpty()Z +HSPLandroidx/compose/runtime/Stack;->isNotEmpty()Z +HSPLandroidx/compose/runtime/Stack;->peek()Ljava/lang/Object; +HSPLandroidx/compose/runtime/Stack;->peek(I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Stack;->pop()Ljava/lang/Object; +HSPLandroidx/compose/runtime/Stack;->push(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/Stack;->toArray()[Ljava/lang/Object; +Landroidx/compose/runtime/State; +Landroidx/compose/runtime/StaticProvidableCompositionLocal; +HSPLandroidx/compose/runtime/StaticProvidableCompositionLocal;->(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/runtime/StaticProvidableCompositionLocal;->provided$runtime_release(Ljava/lang/Object;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +Landroidx/compose/runtime/StaticValueHolder; +HSPLandroidx/compose/runtime/StaticValueHolder;->(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/StaticValueHolder;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/StaticValueHolder;->getValue()Ljava/lang/Object; +Landroidx/compose/runtime/StructuralEqualityPolicy; +HSPLandroidx/compose/runtime/StructuralEqualityPolicy;->()V +HSPLandroidx/compose/runtime/StructuralEqualityPolicy;->()V +HSPLandroidx/compose/runtime/StructuralEqualityPolicy;->equivalent(Ljava/lang/Object;Ljava/lang/Object;)Z +Landroidx/compose/runtime/Trace; +HSPLandroidx/compose/runtime/Trace;->()V +HSPLandroidx/compose/runtime/Trace;->()V +HSPLandroidx/compose/runtime/Trace;->beginSection(Ljava/lang/String;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/Trace;->endSection(Ljava/lang/Object;)V +Landroidx/compose/runtime/Updater; +HSPLandroidx/compose/runtime/Updater;->constructor-impl(Landroidx/compose/runtime/Composer;)Landroidx/compose/runtime/Composer; +HSPLandroidx/compose/runtime/Updater;->set-impl(Landroidx/compose/runtime/Composer;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)V +Landroidx/compose/runtime/WeakReference; +HSPLandroidx/compose/runtime/WeakReference;->(Ljava/lang/Object;)V +Landroidx/compose/runtime/collection/IdentityArrayIntMap; +HSPLandroidx/compose/runtime/collection/IdentityArrayIntMap;->()V +HSPLandroidx/compose/runtime/collection/IdentityArrayIntMap;->access$setSize$p(Landroidx/compose/runtime/collection/IdentityArrayIntMap;I)V +HSPLandroidx/compose/runtime/collection/IdentityArrayIntMap;->add(Ljava/lang/Object;I)I +HSPLandroidx/compose/runtime/collection/IdentityArrayIntMap;->find(Ljava/lang/Object;)I +HSPLandroidx/compose/runtime/collection/IdentityArrayIntMap;->getKeys()[Ljava/lang/Object; +HSPLandroidx/compose/runtime/collection/IdentityArrayIntMap;->getSize()I +HSPLandroidx/compose/runtime/collection/IdentityArrayIntMap;->getValues()[I +Landroidx/compose/runtime/collection/IdentityArrayMap; +HSPLandroidx/compose/runtime/collection/IdentityArrayMap;->(I)V +HSPLandroidx/compose/runtime/collection/IdentityArrayMap;->(IILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/collection/IdentityArrayMap;->access$setSize$p(Landroidx/compose/runtime/collection/IdentityArrayMap;I)V +HSPLandroidx/compose/runtime/collection/IdentityArrayMap;->contains(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/collection/IdentityArrayMap;->find(Ljava/lang/Object;)I +HSPLandroidx/compose/runtime/collection/IdentityArrayMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/collection/IdentityArrayMap;->getKeys()[Ljava/lang/Object; +HSPLandroidx/compose/runtime/collection/IdentityArrayMap;->getSize()I +HSPLandroidx/compose/runtime/collection/IdentityArrayMap;->getValues()[Ljava/lang/Object; +HSPLandroidx/compose/runtime/collection/IdentityArrayMap;->isNotEmpty()Z +HSPLandroidx/compose/runtime/collection/IdentityArrayMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/collection/IdentityArrayMap;->set(Ljava/lang/Object;Ljava/lang/Object;)V +Landroidx/compose/runtime/collection/IdentityArraySet; +HSPLandroidx/compose/runtime/collection/IdentityArraySet;->()V +HSPLandroidx/compose/runtime/collection/IdentityArraySet;->access$setSize$p(Landroidx/compose/runtime/collection/IdentityArraySet;I)V +HSPLandroidx/compose/runtime/collection/IdentityArraySet;->add(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/collection/IdentityArraySet;->addAll(Ljava/util/Collection;)V +HSPLandroidx/compose/runtime/collection/IdentityArraySet;->clear()V +HSPLandroidx/compose/runtime/collection/IdentityArraySet;->contains(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/collection/IdentityArraySet;->find(Ljava/lang/Object;)I +HSPLandroidx/compose/runtime/collection/IdentityArraySet;->getSize()I +HSPLandroidx/compose/runtime/collection/IdentityArraySet;->getValues()[Ljava/lang/Object; +HSPLandroidx/compose/runtime/collection/IdentityArraySet;->isEmpty()Z +HSPLandroidx/compose/runtime/collection/IdentityArraySet;->isNotEmpty()Z +HSPLandroidx/compose/runtime/collection/IdentityArraySet;->iterator()Ljava/util/Iterator; +HSPLandroidx/compose/runtime/collection/IdentityArraySet;->remove(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/collection/IdentityArraySet;->size()I +Landroidx/compose/runtime/collection/IdentityArraySet$iterator$1; +HSPLandroidx/compose/runtime/collection/IdentityArraySet$iterator$1;->(Landroidx/compose/runtime/collection/IdentityArraySet;)V +HSPLandroidx/compose/runtime/collection/IdentityArraySet$iterator$1;->hasNext()Z +HSPLandroidx/compose/runtime/collection/IdentityArraySet$iterator$1;->next()Ljava/lang/Object; +Landroidx/compose/runtime/collection/IdentityScopeMap; +HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->()V +HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->access$find(Landroidx/compose/runtime/collection/IdentityScopeMap;Ljava/lang/Object;)I +HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->access$scopeSetAt(Landroidx/compose/runtime/collection/IdentityScopeMap;I)Landroidx/compose/runtime/collection/IdentityArraySet; +HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->add(Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->contains(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->find(Ljava/lang/Object;)I +HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->getOrCreateIdentitySet(Ljava/lang/Object;)Landroidx/compose/runtime/collection/IdentityArraySet; +HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->getScopeSets()[Landroidx/compose/runtime/collection/IdentityArraySet; +HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->getSize()I +HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->getValueOrder()[I +HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->getValues()[Ljava/lang/Object; +HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->remove(Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->removeScope(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->scopeSetAt(I)Landroidx/compose/runtime/collection/IdentityArraySet; +HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->setSize(I)V +Landroidx/compose/runtime/collection/IntMap; +HSPLandroidx/compose/runtime/collection/IntMap;->(I)V +HSPLandroidx/compose/runtime/collection/IntMap;->(IILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/collection/IntMap;->(Landroid/util/SparseArray;)V +HSPLandroidx/compose/runtime/collection/IntMap;->clear()V +HSPLandroidx/compose/runtime/collection/IntMap;->get(I)Ljava/lang/Object; +Landroidx/compose/runtime/collection/MutableVector; +HSPLandroidx/compose/runtime/collection/MutableVector;->()V +HSPLandroidx/compose/runtime/collection/MutableVector;->([Ljava/lang/Object;I)V +HSPLandroidx/compose/runtime/collection/MutableVector;->add(ILjava/lang/Object;)V +HSPLandroidx/compose/runtime/collection/MutableVector;->add(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/collection/MutableVector;->addAll(ILandroidx/compose/runtime/collection/MutableVector;)Z +HSPLandroidx/compose/runtime/collection/MutableVector;->asMutableList()Ljava/util/List; +HSPLandroidx/compose/runtime/collection/MutableVector;->clear()V +HSPLandroidx/compose/runtime/collection/MutableVector;->contains(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/collection/MutableVector;->ensureCapacity(I)V +HSPLandroidx/compose/runtime/collection/MutableVector;->getContent()[Ljava/lang/Object; +HSPLandroidx/compose/runtime/collection/MutableVector;->getSize()I +HSPLandroidx/compose/runtime/collection/MutableVector;->indexOf(Ljava/lang/Object;)I +HSPLandroidx/compose/runtime/collection/MutableVector;->isEmpty()Z +HSPLandroidx/compose/runtime/collection/MutableVector;->isNotEmpty()Z +HSPLandroidx/compose/runtime/collection/MutableVector;->remove(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/collection/MutableVector;->removeAt(I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/collection/MutableVector;->removeRange(II)V +HSPLandroidx/compose/runtime/collection/MutableVector;->set(ILjava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/collection/MutableVector;->sortWith(Ljava/util/Comparator;)V +Landroidx/compose/runtime/collection/MutableVector$MutableVectorList; +HSPLandroidx/compose/runtime/collection/MutableVector$MutableVectorList;->(Landroidx/compose/runtime/collection/MutableVector;)V +HSPLandroidx/compose/runtime/collection/MutableVector$MutableVectorList;->get(I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/collection/MutableVector$MutableVectorList;->getSize()I +HSPLandroidx/compose/runtime/collection/MutableVector$MutableVectorList;->indexOf(Ljava/lang/Object;)I +HSPLandroidx/compose/runtime/collection/MutableVector$MutableVectorList;->isEmpty()Z +HSPLandroidx/compose/runtime/collection/MutableVector$MutableVectorList;->iterator()Ljava/util/Iterator; +HSPLandroidx/compose/runtime/collection/MutableVector$MutableVectorList;->size()I +Landroidx/compose/runtime/collection/MutableVector$VectorListIterator; +HSPLandroidx/compose/runtime/collection/MutableVector$VectorListIterator;->(Ljava/util/List;I)V +HSPLandroidx/compose/runtime/collection/MutableVector$VectorListIterator;->hasNext()Z +HSPLandroidx/compose/runtime/collection/MutableVector$VectorListIterator;->next()Ljava/lang/Object; +Landroidx/compose/runtime/collection/MutableVectorKt; +HSPLandroidx/compose/runtime/collection/MutableVectorKt;->access$checkIndex(Ljava/util/List;I)V +HSPLandroidx/compose/runtime/collection/MutableVectorKt;->checkIndex(Ljava/util/List;I)V +Landroidx/compose/runtime/external/kotlinx/collections/immutable/ExtensionsKt; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/ExtensionsKt;->persistentHashMapOf()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/ExtensionsKt;->persistentListOf()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/ExtensionsKt;->persistentSetOf()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentSet; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/ImmutableCollection; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/ImmutableList; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/ImmutableMap; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/ImmutableSet; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentCollection; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentCollection$Builder; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList$Builder; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap$Builder; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentSet; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/AbstractListIterator; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/AbstractListIterator;->(II)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/AbstractListIterator;->getIndex()I +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/AbstractListIterator;->hasNext()Z +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/AbstractListIterator;->setIndex(I)V +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/AbstractPersistentList; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/AbstractPersistentList;->()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/AbstractPersistentList;->contains(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/AbstractPersistentList;->iterator()Ljava/util/Iterator; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/AbstractPersistentList;->listIterator()Ljava/util/ListIterator; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/AbstractPersistentList;->remove(Ljava/lang/Object;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/BufferIterator; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/BufferIterator;->([Ljava/lang/Object;II)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/BufferIterator;->next()Ljava/lang/Object; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->([Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->access$getEMPTY$cp()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->add(Ljava/lang/Object;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->addAll(Ljava/util/Collection;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->get(I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->getSize()I +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->indexOf(Ljava/lang/Object;)I +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->listIterator(I)Ljava/util/ListIterator; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->removeAt(I)Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->set(ILjava/lang/Object;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector$Companion; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector$Companion;->()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector$Companion;->getEMPTY()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/UtilsKt; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/UtilsKt;->persistentVectorOf()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/MapEntry; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/MapEntry;->(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/MapEntry;->getKey()Ljava/lang/Object; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/MapEntry;->getValue()Ljava/lang/Object; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;I)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->access$getEMPTY$cp()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->builder()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap$Builder; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->builder()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->containsKey(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->createEntries()Landroidx/compose/runtime/external/kotlinx/collections/immutable/ImmutableSet; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->getEntries()Ljava/util/Set; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->getNode$runtime_release()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->getSize()I +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap$Companion; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap$Companion;->()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap$Companion;->emptyOf$runtime_release()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBaseIterator; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBaseIterator;->(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;[Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBaseIterator;->checkHasNext()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBaseIterator;->ensureNextEntryIsReady()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBaseIterator;->hasNext()Z +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBaseIterator;->moveToNextNodeWithData(I)I +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBaseIterator;->next()Ljava/lang/Object; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->build()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->build()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->getModCount$runtime_release()I +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->getNode$runtime_release()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->getOwnership()Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->getSize()I +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->putAll(Ljava/util/Map;)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->setModCount$runtime_release(I)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->setOperationResult$runtime_release(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->setOwnership(Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership;)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->setSize(I)V +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapEntries; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapEntries;->(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapEntries;->getSize()I +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapEntries;->iterator()Ljava/util/Iterator; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapEntriesIterator; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapEntriesIterator;->(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;)V +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->(II[Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->(II[Ljava/lang/Object;Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership;)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->access$getEMPTY$cp()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->asInsertResult()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->bufferMoveEntryToNode(IIILjava/lang/Object;Ljava/lang/Object;ILandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership;)[Ljava/lang/Object; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->containsKey(ILjava/lang/Object;I)Z +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->elementsIdentityEquals(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;)Z +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->entryCount$runtime_release()I +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->entryKeyIndex$runtime_release(I)I +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->get(ILjava/lang/Object;I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->getBuffer$runtime_release()[Ljava/lang/Object; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->hasEntryAt$runtime_release(I)Z +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->hasNodeAt(I)Z +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->insertEntryAt(ILjava/lang/Object;Ljava/lang/Object;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->keyAtIndex(I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->makeNode(ILjava/lang/Object;Ljava/lang/Object;ILjava/lang/Object;Ljava/lang/Object;ILandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->mutableInsertEntryAt(ILjava/lang/Object;Ljava/lang/Object;Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->mutableMoveEntryToNode(IIILjava/lang/Object;Ljava/lang/Object;ILandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->mutablePut(ILjava/lang/Object;Ljava/lang/Object;ILandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->mutablePutAll(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;ILandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/DeltaCounter;Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->mutablePutAllFromOtherNodeCell(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;IILandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/DeltaCounter;Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->mutableUpdateValueAtIndex(ILjava/lang/Object;Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->nodeAtIndex$runtime_release(I)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->nodeIndex$runtime_release(I)I +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->put(ILjava/lang/Object;Ljava/lang/Object;I)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->valueAtKeyIndex(I)Ljava/lang/Object; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$Companion; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$Companion;->()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$Companion;->getEMPTY$runtime_release()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult;->(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;I)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult;->getNode()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult;->getSizeDelta()I +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;->()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;->getBuffer()[Ljava/lang/Object; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;->getIndex()I +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;->hasNextKey()Z +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;->hasNextNode()Z +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;->reset([Ljava/lang/Object;I)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;->reset([Ljava/lang/Object;II)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;->setIndex(I)V +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeEntriesIterator; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeEntriesIterator;->()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeEntriesIterator;->next()Ljava/lang/Object; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeEntriesIterator;->next()Ljava/util/Map$Entry; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeKt; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeKt;->access$insertEntryAtIndex([Ljava/lang/Object;ILjava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeKt;->access$replaceEntryWithNode([Ljava/lang/Object;IILandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;)[Ljava/lang/Object; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeKt;->indexSegment(II)I +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeKt;->insertEntryAtIndex([Ljava/lang/Object;ILjava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeKt;->replaceEntryWithNode([Ljava/lang/Object;IILandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;)[Ljava/lang/Object; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/Links; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/Links;->()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/Links;->(Ljava/lang/Object;Ljava/lang/Object;)V +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet;->()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet;->(Ljava/lang/Object;Ljava/lang/Object;Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet;->access$getEMPTY$cp()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet;->add(Ljava/lang/Object;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentSet; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet;->getSize()I +Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet$Companion; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet$Companion;->()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet$Companion;->emptyOf$runtime_release()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentSet; +Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/CommonFunctionsKt; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/CommonFunctionsKt;->assert(Z)V +Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/DeltaCounter; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/DeltaCounter;->(I)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/DeltaCounter;->(IILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/DeltaCounter;->getCount()I +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/DeltaCounter;->setCount(I)V +Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/EndOfChain; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/EndOfChain;->()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/EndOfChain;->()V +Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/ListImplementation; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/ListImplementation;->()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/ListImplementation;->()V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/ListImplementation;->checkElementIndex$runtime_release(II)V +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/ListImplementation;->checkPositionIndex$runtime_release(II)V +Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership; +HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership;->()V +Landroidx/compose/runtime/internal/ComposableLambda; +Landroidx/compose/runtime/internal/ComposableLambdaImpl; +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl;->(IZ)V +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl;->invoke(Landroidx/compose/runtime/Composer;I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl;->invoke(Ljava/lang/Object;Landroidx/compose/runtime/Composer;I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl;->invoke(Ljava/lang/Object;Ljava/lang/Object;Landroidx/compose/runtime/Composer;I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Landroidx/compose/runtime/Composer;I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl;->trackRead(Landroidx/compose/runtime/Composer;)V +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl;->trackWrite()V +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl;->update(Ljava/lang/Object;)V +Landroidx/compose/runtime/internal/ComposableLambdaImpl$invoke$1; +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl$invoke$1;->(Landroidx/compose/runtime/internal/ComposableLambdaImpl;Ljava/lang/Object;I)V +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl$invoke$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl$invoke$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/internal/ComposableLambdaImpl$invoke$2; +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl$invoke$2;->(Landroidx/compose/runtime/internal/ComposableLambdaImpl;Ljava/lang/Object;Ljava/lang/Object;I)V +Landroidx/compose/runtime/internal/ComposableLambdaImpl$invoke$3; +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl$invoke$3;->(Landroidx/compose/runtime/internal/ComposableLambdaImpl;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;I)V +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl$invoke$3;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl$invoke$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/internal/ComposableLambdaKt; +HSPLandroidx/compose/runtime/internal/ComposableLambdaKt;->bitsForSlot(II)I +HSPLandroidx/compose/runtime/internal/ComposableLambdaKt;->composableLambda(Landroidx/compose/runtime/Composer;IZLjava/lang/Object;)Landroidx/compose/runtime/internal/ComposableLambda; +HSPLandroidx/compose/runtime/internal/ComposableLambdaKt;->composableLambdaInstance(IZLjava/lang/Object;)Landroidx/compose/runtime/internal/ComposableLambda; +HSPLandroidx/compose/runtime/internal/ComposableLambdaKt;->differentBits(I)I +HSPLandroidx/compose/runtime/internal/ComposableLambdaKt;->replacableWith(Landroidx/compose/runtime/RecomposeScope;Landroidx/compose/runtime/RecomposeScope;)Z +HSPLandroidx/compose/runtime/internal/ComposableLambdaKt;->sameBits(I)I +Landroidx/compose/runtime/internal/PersistentCompositionLocalHashMap; +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap;->()V +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap;->(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;I)V +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap;->access$getEmpty$cp()Landroidx/compose/runtime/internal/PersistentCompositionLocalHashMap; +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap;->builder()Landroidx/compose/runtime/PersistentCompositionLocalMap$Builder; +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap;->builder()Landroidx/compose/runtime/internal/PersistentCompositionLocalHashMap$Builder; +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap;->containsKey(Landroidx/compose/runtime/CompositionLocal;)Z +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap;->containsKey(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap;->get(Landroidx/compose/runtime/CompositionLocal;)Landroidx/compose/runtime/State; +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap;->get(Landroidx/compose/runtime/CompositionLocal;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/internal/PersistentCompositionLocalHashMap$Builder; +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap$Builder;->()V +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap$Builder;->(Landroidx/compose/runtime/internal/PersistentCompositionLocalHashMap;)V +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap$Builder;->build()Landroidx/compose/runtime/PersistentCompositionLocalMap; +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap$Builder;->build()Landroidx/compose/runtime/internal/PersistentCompositionLocalHashMap; +Landroidx/compose/runtime/internal/PersistentCompositionLocalHashMap$Companion; +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap$Companion;->()V +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalHashMap$Companion;->getEmpty()Landroidx/compose/runtime/internal/PersistentCompositionLocalHashMap; +Landroidx/compose/runtime/internal/PersistentCompositionLocalMapKt; +HSPLandroidx/compose/runtime/internal/PersistentCompositionLocalMapKt;->persistentCompositionLocalHashMapOf()Landroidx/compose/runtime/internal/PersistentCompositionLocalHashMap; +Landroidx/compose/runtime/internal/ThreadMap; +HSPLandroidx/compose/runtime/internal/ThreadMap;->(I[J[Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/internal/ThreadMap;->find(J)I +HSPLandroidx/compose/runtime/internal/ThreadMap;->get(J)Ljava/lang/Object; +HSPLandroidx/compose/runtime/internal/ThreadMap;->newWith(JLjava/lang/Object;)Landroidx/compose/runtime/internal/ThreadMap; +HSPLandroidx/compose/runtime/internal/ThreadMap;->trySet(JLjava/lang/Object;)Z +Landroidx/compose/runtime/internal/ThreadMapKt; +HSPLandroidx/compose/runtime/internal/ThreadMapKt;->()V +HSPLandroidx/compose/runtime/internal/ThreadMapKt;->getEmptyThreadMap()Landroidx/compose/runtime/internal/ThreadMap; +Landroidx/compose/runtime/saveable/ListSaverKt; +HSPLandroidx/compose/runtime/saveable/ListSaverKt;->listSaver(Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/saveable/Saver; +Landroidx/compose/runtime/saveable/ListSaverKt$listSaver$1; +HSPLandroidx/compose/runtime/saveable/ListSaverKt$listSaver$1;->(Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/runtime/saveable/ListSaverKt$listSaver$1;->invoke(Landroidx/compose/runtime/saveable/SaverScope;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/saveable/ListSaverKt$listSaver$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/saveable/RememberSaveableKt; +HSPLandroidx/compose/runtime/saveable/RememberSaveableKt;->()V +HSPLandroidx/compose/runtime/saveable/RememberSaveableKt;->access$requireCanBeSaved(Landroidx/compose/runtime/saveable/SaveableStateRegistry;Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/saveable/RememberSaveableKt;->rememberSaveable([Ljava/lang/Object;Landroidx/compose/runtime/saveable/Saver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;II)Ljava/lang/Object; +HSPLandroidx/compose/runtime/saveable/RememberSaveableKt;->requireCanBeSaved(Landroidx/compose/runtime/saveable/SaveableStateRegistry;Ljava/lang/Object;)V +Landroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1; +HSPLandroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1;->(Landroidx/compose/runtime/saveable/SaveableStateRegistry;Ljava/lang/String;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1$invoke$$inlined$onDispose$1;->(Landroidx/compose/runtime/saveable/SaveableStateRegistry$Entry;)V +HSPLandroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1$invoke$$inlined$onDispose$1;->dispose()V +Landroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1$valueProvider$1; +HSPLandroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1$valueProvider$1;->(Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/saveable/SaveableStateRegistry;)V +HSPLandroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1$valueProvider$1;->invoke()Ljava/lang/Object; +Landroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1$valueProvider$1$1$1; +HSPLandroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1$valueProvider$1$1$1;->(Landroidx/compose/runtime/saveable/SaveableStateRegistry;)V +HSPLandroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1$valueProvider$1$1$1;->canBeSaved(Ljava/lang/Object;)Z +Landroidx/compose/runtime/saveable/SaveableStateHolder; +Landroidx/compose/runtime/saveable/SaveableStateHolderImpl; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;->()V +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;->(Ljava/util/Map;)V +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;->(Ljava/util/Map;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;->SaveableStateProvider(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;->access$getRegistryHolders$p(Landroidx/compose/runtime/saveable/SaveableStateHolderImpl;)Ljava/util/Map; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;->access$getSavedStates$p(Landroidx/compose/runtime/saveable/SaveableStateHolderImpl;)Ljava/util/Map; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;->access$getSaver$cp()Landroidx/compose/runtime/saveable/Saver; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;->access$saveAll(Landroidx/compose/runtime/saveable/SaveableStateHolderImpl;)Ljava/util/Map; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;->getParentSaveableStateRegistry()Landroidx/compose/runtime/saveable/SaveableStateRegistry; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;->saveAll()Ljava/util/Map; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;->setParentSaveableStateRegistry(Landroidx/compose/runtime/saveable/SaveableStateRegistry;)V +Landroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion;->()V +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion;->getSaver()Landroidx/compose/runtime/saveable/Saver; +Landroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion$Saver$1; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion$Saver$1;->()V +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion$Saver$1;->()V +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion$Saver$1;->invoke(Landroidx/compose/runtime/saveable/SaverScope;Landroidx/compose/runtime/saveable/SaveableStateHolderImpl;)Ljava/util/Map; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion$Saver$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion$Saver$2; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion$Saver$2;->()V +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion$Saver$2;->()V +Landroidx/compose/runtime/saveable/SaveableStateHolderImpl$RegistryHolder; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$RegistryHolder;->(Landroidx/compose/runtime/saveable/SaveableStateHolderImpl;Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$RegistryHolder;->getRegistry()Landroidx/compose/runtime/saveable/SaveableStateRegistry; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$RegistryHolder;->saveTo(Ljava/util/Map;)V +Landroidx/compose/runtime/saveable/SaveableStateHolderImpl$RegistryHolder$registry$1; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$RegistryHolder$registry$1;->(Landroidx/compose/runtime/saveable/SaveableStateHolderImpl;)V +Landroidx/compose/runtime/saveable/SaveableStateHolderImpl$SaveableStateProvider$1$1; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$SaveableStateProvider$1$1;->(Landroidx/compose/runtime/saveable/SaveableStateHolderImpl;Ljava/lang/Object;Landroidx/compose/runtime/saveable/SaveableStateHolderImpl$RegistryHolder;)V +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$SaveableStateProvider$1$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$SaveableStateProvider$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/saveable/SaveableStateHolderImpl$SaveableStateProvider$1$1$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$SaveableStateProvider$1$1$invoke$$inlined$onDispose$1;->(Landroidx/compose/runtime/saveable/SaveableStateHolderImpl$RegistryHolder;Landroidx/compose/runtime/saveable/SaveableStateHolderImpl;Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$SaveableStateProvider$1$1$invoke$$inlined$onDispose$1;->dispose()V +Landroidx/compose/runtime/saveable/SaveableStateHolderKt; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderKt;->rememberSaveableStateHolder(Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/saveable/SaveableStateHolder; +Landroidx/compose/runtime/saveable/SaveableStateHolderKt$rememberSaveableStateHolder$1; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderKt$rememberSaveableStateHolder$1;->()V +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderKt$rememberSaveableStateHolder$1;->()V +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderKt$rememberSaveableStateHolder$1;->invoke()Landroidx/compose/runtime/saveable/SaveableStateHolderImpl; +HSPLandroidx/compose/runtime/saveable/SaveableStateHolderKt$rememberSaveableStateHolder$1;->invoke()Ljava/lang/Object; +Landroidx/compose/runtime/saveable/SaveableStateRegistry; +Landroidx/compose/runtime/saveable/SaveableStateRegistry$Entry; +Landroidx/compose/runtime/saveable/SaveableStateRegistryImpl; +HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryImpl;->(Ljava/util/Map;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryImpl;->access$getValueProviders$p(Landroidx/compose/runtime/saveable/SaveableStateRegistryImpl;)Ljava/util/Map; +HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryImpl;->canBeSaved(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryImpl;->consumeRestored(Ljava/lang/String;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryImpl;->performSave()Ljava/util/Map; +HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryImpl;->registerProvider(Ljava/lang/String;Lkotlin/jvm/functions/Function0;)Landroidx/compose/runtime/saveable/SaveableStateRegistry$Entry; +Landroidx/compose/runtime/saveable/SaveableStateRegistryImpl$registerProvider$3; +HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryImpl$registerProvider$3;->(Landroidx/compose/runtime/saveable/SaveableStateRegistryImpl;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryImpl$registerProvider$3;->unregister()V +Landroidx/compose/runtime/saveable/SaveableStateRegistryKt; +HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryKt;->()V +HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryKt;->SaveableStateRegistry(Ljava/util/Map;Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/saveable/SaveableStateRegistry; +HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryKt;->getLocalSaveableStateRegistry()Landroidx/compose/runtime/ProvidableCompositionLocal; +Landroidx/compose/runtime/saveable/SaveableStateRegistryKt$LocalSaveableStateRegistry$1; +HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryKt$LocalSaveableStateRegistry$1;->()V +HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryKt$LocalSaveableStateRegistry$1;->()V +Landroidx/compose/runtime/saveable/Saver; +Landroidx/compose/runtime/saveable/SaverKt; +HSPLandroidx/compose/runtime/saveable/SaverKt;->()V +HSPLandroidx/compose/runtime/saveable/SaverKt;->Saver(Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/saveable/Saver; +Landroidx/compose/runtime/saveable/SaverKt$AutoSaver$1; +HSPLandroidx/compose/runtime/saveable/SaverKt$AutoSaver$1;->()V +HSPLandroidx/compose/runtime/saveable/SaverKt$AutoSaver$1;->()V +Landroidx/compose/runtime/saveable/SaverKt$AutoSaver$2; +HSPLandroidx/compose/runtime/saveable/SaverKt$AutoSaver$2;->()V +HSPLandroidx/compose/runtime/saveable/SaverKt$AutoSaver$2;->()V +Landroidx/compose/runtime/saveable/SaverKt$Saver$1; +HSPLandroidx/compose/runtime/saveable/SaverKt$Saver$1;->(Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/runtime/saveable/SaverKt$Saver$1;->save(Landroidx/compose/runtime/saveable/SaverScope;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/saveable/SaverScope; +Landroidx/compose/runtime/snapshots/GlobalSnapshot; +HSPLandroidx/compose/runtime/snapshots/GlobalSnapshot;->(ILandroidx/compose/runtime/snapshots/SnapshotIdSet;)V +HSPLandroidx/compose/runtime/snapshots/GlobalSnapshot;->dispose()V +HSPLandroidx/compose/runtime/snapshots/GlobalSnapshot;->notifyObjectsInitialized$runtime_release()V +HSPLandroidx/compose/runtime/snapshots/GlobalSnapshot;->takeNestedMutableSnapshot(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/MutableSnapshot; +HSPLandroidx/compose/runtime/snapshots/GlobalSnapshot;->takeNestedSnapshot(Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/Snapshot; +Landroidx/compose/runtime/snapshots/GlobalSnapshot$1$1$1; +Landroidx/compose/runtime/snapshots/GlobalSnapshot$takeNestedMutableSnapshot$1; +HSPLandroidx/compose/runtime/snapshots/GlobalSnapshot$takeNestedMutableSnapshot$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/runtime/snapshots/GlobalSnapshot$takeNestedMutableSnapshot$1;->invoke(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)Landroidx/compose/runtime/snapshots/MutableSnapshot; +HSPLandroidx/compose/runtime/snapshots/GlobalSnapshot$takeNestedMutableSnapshot$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/snapshots/GlobalSnapshot$takeNestedSnapshot$1; +HSPLandroidx/compose/runtime/snapshots/GlobalSnapshot$takeNestedSnapshot$1;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/runtime/snapshots/GlobalSnapshot$takeNestedSnapshot$1;->invoke(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)Landroidx/compose/runtime/snapshots/ReadonlySnapshot; +HSPLandroidx/compose/runtime/snapshots/GlobalSnapshot$takeNestedSnapshot$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/snapshots/ListUtilsKt; +HSPLandroidx/compose/runtime/snapshots/ListUtilsKt;->fastToSet(Ljava/util/List;)Ljava/util/Set; +Landroidx/compose/runtime/snapshots/MutableSnapshot; +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->()V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->(ILandroidx/compose/runtime/snapshots/SnapshotIdSet;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->advance$runtime_release()V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->apply()Landroidx/compose/runtime/snapshots/SnapshotApplyResult; +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->closeLocked$runtime_release()V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->dispose()V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->getApplied$runtime_release()Z +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->getModified$runtime_release()Landroidx/compose/runtime/collection/IdentityArraySet; +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->getPreviousIds$runtime_release()Landroidx/compose/runtime/snapshots/SnapshotIdSet; +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->getPreviousPinnedSnapshots$runtime_release()[I +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->getReadObserver$runtime_release()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->getReadOnly()Z +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->getWriteCount$runtime_release()I +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->getWriteObserver$runtime_release()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->innerApplyLocked$runtime_release(ILjava/util/Map;Landroidx/compose/runtime/snapshots/SnapshotIdSet;)Landroidx/compose/runtime/snapshots/SnapshotApplyResult; +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->nestedActivated$runtime_release(Landroidx/compose/runtime/snapshots/Snapshot;)V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->nestedDeactivated$runtime_release(Landroidx/compose/runtime/snapshots/Snapshot;)V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->notifyObjectsInitialized$runtime_release()V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->recordModified$runtime_release(Landroidx/compose/runtime/snapshots/StateObject;)V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->recordPrevious$runtime_release(I)V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->recordPreviousList$runtime_release(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->recordPreviousPinnedSnapshot$runtime_release(I)V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->recordPreviousPinnedSnapshots$runtime_release([I)V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->releasePinnedSnapshotsForCloseLocked$runtime_release()V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->releasePreviouslyPinnedSnapshotsLocked()V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->setApplied$runtime_release(Z)V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->setModified(Landroidx/compose/runtime/collection/IdentityArraySet;)V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->setWriteCount$runtime_release(I)V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->takeNestedMutableSnapshot(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/MutableSnapshot; +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->validateNotAppliedOrPinned()V +Landroidx/compose/runtime/snapshots/MutableSnapshot$Companion; +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot$Companion;->()V +HSPLandroidx/compose/runtime/snapshots/MutableSnapshot$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/runtime/snapshots/NestedMutableSnapshot; +HSPLandroidx/compose/runtime/snapshots/NestedMutableSnapshot;->(ILandroidx/compose/runtime/snapshots/SnapshotIdSet;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/snapshots/MutableSnapshot;)V +HSPLandroidx/compose/runtime/snapshots/NestedMutableSnapshot;->apply()Landroidx/compose/runtime/snapshots/SnapshotApplyResult; +HSPLandroidx/compose/runtime/snapshots/NestedMutableSnapshot;->deactivate()V +HSPLandroidx/compose/runtime/snapshots/NestedMutableSnapshot;->dispose()V +Landroidx/compose/runtime/snapshots/NestedReadonlySnapshot; +HSPLandroidx/compose/runtime/snapshots/NestedReadonlySnapshot;->(ILandroidx/compose/runtime/snapshots/SnapshotIdSet;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/snapshots/Snapshot;)V +HSPLandroidx/compose/runtime/snapshots/NestedReadonlySnapshot;->dispose()V +HSPLandroidx/compose/runtime/snapshots/NestedReadonlySnapshot;->getReadObserver$runtime_release()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/runtime/snapshots/NestedReadonlySnapshot;->takeNestedSnapshot(Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/NestedReadonlySnapshot; +HSPLandroidx/compose/runtime/snapshots/NestedReadonlySnapshot;->takeNestedSnapshot(Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/Snapshot; +Landroidx/compose/runtime/snapshots/NestedReadonlySnapshot$readObserver$1$1$1; +HSPLandroidx/compose/runtime/snapshots/NestedReadonlySnapshot$readObserver$1$1$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/runtime/snapshots/NestedReadonlySnapshot$readObserver$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/NestedReadonlySnapshot$readObserver$1$1$1;->invoke(Ljava/lang/Object;)V +Landroidx/compose/runtime/snapshots/ObserverHandle; +Landroidx/compose/runtime/snapshots/ReadonlySnapshot; +HSPLandroidx/compose/runtime/snapshots/ReadonlySnapshot;->(ILandroidx/compose/runtime/snapshots/SnapshotIdSet;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/runtime/snapshots/ReadonlySnapshot;->dispose()V +HSPLandroidx/compose/runtime/snapshots/ReadonlySnapshot;->getReadObserver$runtime_release()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/runtime/snapshots/ReadonlySnapshot;->nestedActivated$runtime_release(Landroidx/compose/runtime/snapshots/Snapshot;)V +HSPLandroidx/compose/runtime/snapshots/ReadonlySnapshot;->nestedDeactivated$runtime_release(Landroidx/compose/runtime/snapshots/Snapshot;)V +HSPLandroidx/compose/runtime/snapshots/ReadonlySnapshot;->notifyObjectsInitialized$runtime_release()V +HSPLandroidx/compose/runtime/snapshots/ReadonlySnapshot;->takeNestedSnapshot(Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/Snapshot; +Landroidx/compose/runtime/snapshots/Snapshot; +HSPLandroidx/compose/runtime/snapshots/Snapshot;->()V +HSPLandroidx/compose/runtime/snapshots/Snapshot;->(ILandroidx/compose/runtime/snapshots/SnapshotIdSet;)V +HSPLandroidx/compose/runtime/snapshots/Snapshot;->(ILandroidx/compose/runtime/snapshots/SnapshotIdSet;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/snapshots/Snapshot;->closeAndReleasePinning$runtime_release()V +HSPLandroidx/compose/runtime/snapshots/Snapshot;->closeLocked$runtime_release()V +HSPLandroidx/compose/runtime/snapshots/Snapshot;->dispose()V +HSPLandroidx/compose/runtime/snapshots/Snapshot;->getDisposed$runtime_release()Z +HSPLandroidx/compose/runtime/snapshots/Snapshot;->getId()I +HSPLandroidx/compose/runtime/snapshots/Snapshot;->getInvalid$runtime_release()Landroidx/compose/runtime/snapshots/SnapshotIdSet; +HSPLandroidx/compose/runtime/snapshots/Snapshot;->getWriteCount$runtime_release()I +HSPLandroidx/compose/runtime/snapshots/Snapshot;->makeCurrent()Landroidx/compose/runtime/snapshots/Snapshot; +HSPLandroidx/compose/runtime/snapshots/Snapshot;->releasePinnedSnapshotLocked$runtime_release()V +HSPLandroidx/compose/runtime/snapshots/Snapshot;->releasePinnedSnapshotsForCloseLocked$runtime_release()V +HSPLandroidx/compose/runtime/snapshots/Snapshot;->restoreCurrent(Landroidx/compose/runtime/snapshots/Snapshot;)V +HSPLandroidx/compose/runtime/snapshots/Snapshot;->setDisposed$runtime_release(Z)V +HSPLandroidx/compose/runtime/snapshots/Snapshot;->setId$runtime_release(I)V +HSPLandroidx/compose/runtime/snapshots/Snapshot;->setInvalid$runtime_release(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)V +HSPLandroidx/compose/runtime/snapshots/Snapshot;->takeoverPinnedSnapshot$runtime_release()I +HSPLandroidx/compose/runtime/snapshots/Snapshot;->validateNotDisposed$runtime_release()V +Landroidx/compose/runtime/snapshots/Snapshot$Companion; +HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion;->()V +HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion;->createNonObservableSnapshot()Landroidx/compose/runtime/snapshots/Snapshot; +HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion;->getCurrent()Landroidx/compose/runtime/snapshots/Snapshot; +HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion;->notifyObjectsInitialized()V +HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion;->observe(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion;->registerApplyObserver(Lkotlin/jvm/functions/Function2;)Landroidx/compose/runtime/snapshots/ObserverHandle; +HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion;->registerGlobalWriteObserver(Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/ObserverHandle; +HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion;->sendApplyNotifications()V +HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion;->takeMutableSnapshot(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/MutableSnapshot; +HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion;->takeSnapshot(Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/Snapshot; +Landroidx/compose/runtime/snapshots/Snapshot$Companion$registerApplyObserver$2; +HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion$registerApplyObserver$2;->(Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion$registerApplyObserver$2;->dispose()V +Landroidx/compose/runtime/snapshots/Snapshot$Companion$registerGlobalWriteObserver$2; +HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion$registerGlobalWriteObserver$2;->(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/runtime/snapshots/SnapshotApplyResult; +HSPLandroidx/compose/runtime/snapshots/SnapshotApplyResult;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotApplyResult;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotApplyResult;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/runtime/snapshots/SnapshotApplyResult$Failure; +Landroidx/compose/runtime/snapshots/SnapshotApplyResult$Success; +HSPLandroidx/compose/runtime/snapshots/SnapshotApplyResult$Success;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotApplyResult$Success;->()V +Landroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap; +HSPLandroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;->add(I)I +HSPLandroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;->allocateHandle()I +HSPLandroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;->ensure(I)V +HSPLandroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;->freeHandle(I)V +HSPLandroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;->lowestOrDefault(I)I +HSPLandroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;->remove(I)V +HSPLandroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;->shiftDown(I)V +HSPLandroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;->shiftUp(I)V +HSPLandroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;->swap(II)V +Landroidx/compose/runtime/snapshots/SnapshotIdSet; +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->(JJI[I)V +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->access$getBelowBound$p(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)[I +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->access$getEMPTY$cp()Landroidx/compose/runtime/snapshots/SnapshotIdSet; +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->access$getLowerBound$p(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)I +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->access$getLowerSet$p(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)J +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->access$getUpperSet$p(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)J +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->andNot(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)Landroidx/compose/runtime/snapshots/SnapshotIdSet; +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->clear(I)Landroidx/compose/runtime/snapshots/SnapshotIdSet; +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->get(I)Z +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->iterator()Ljava/util/Iterator; +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->lowest(I)I +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->or(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)Landroidx/compose/runtime/snapshots/SnapshotIdSet; +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->set(I)Landroidx/compose/runtime/snapshots/SnapshotIdSet; +Landroidx/compose/runtime/snapshots/SnapshotIdSet$Companion; +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet$Companion;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet$Companion;->getEMPTY()Landroidx/compose/runtime/snapshots/SnapshotIdSet; +Landroidx/compose/runtime/snapshots/SnapshotIdSet$iterator$1; +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet$iterator$1;->(Landroidx/compose/runtime/snapshots/SnapshotIdSet;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet$iterator$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet$iterator$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/snapshots/SnapshotIdSetKt; +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSetKt;->access$lowestBitOf(J)I +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSetKt;->binarySearch([II)I +HSPLandroidx/compose/runtime/snapshots/SnapshotIdSetKt;->lowestBitOf(J)I +Landroidx/compose/runtime/snapshots/SnapshotKt; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$advanceGlobalSnapshot()V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$advanceGlobalSnapshot(Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$checkAndOverwriteUnusedRecordsLocked()V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$getApplyObservers$p()Ljava/util/List; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$getCurrentGlobalSnapshot$p()Ljava/util/concurrent/atomic/AtomicReference; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$getEmptyLambda$p()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$getGlobalWriteObservers$p()Ljava/util/List; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$getNextSnapshotId$p()I +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$getOpenSnapshots$p()Landroidx/compose/runtime/snapshots/SnapshotIdSet; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$getThreadSnapshot$p()Landroidx/compose/runtime/SnapshotThreadLocal; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$mergedReadObserver(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Z)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$mergedWriteObserver(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$optimisticMerges(Landroidx/compose/runtime/snapshots/MutableSnapshot;Landroidx/compose/runtime/snapshots/MutableSnapshot;Landroidx/compose/runtime/snapshots/SnapshotIdSet;)Ljava/util/Map; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$processForUnusedRecordsLocked(Landroidx/compose/runtime/snapshots/StateObject;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$readable(Landroidx/compose/runtime/snapshots/StateRecord;ILandroidx/compose/runtime/snapshots/SnapshotIdSet;)Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$setNextSnapshotId$p(I)V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$setOpenSnapshots$p(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$takeNewGlobalSnapshot(Landroidx/compose/runtime/snapshots/Snapshot;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$takeNewSnapshot(Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/Snapshot; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$validateOpen(Landroidx/compose/runtime/snapshots/Snapshot;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->addRange(Landroidx/compose/runtime/snapshots/SnapshotIdSet;II)Landroidx/compose/runtime/snapshots/SnapshotIdSet; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->advanceGlobalSnapshot()V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->advanceGlobalSnapshot(Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->checkAndOverwriteUnusedRecordsLocked()V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->createTransparentSnapshotWithNoParentReadObserver$default(Landroidx/compose/runtime/snapshots/Snapshot;Lkotlin/jvm/functions/Function1;ZILjava/lang/Object;)Landroidx/compose/runtime/snapshots/Snapshot; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->createTransparentSnapshotWithNoParentReadObserver(Landroidx/compose/runtime/snapshots/Snapshot;Lkotlin/jvm/functions/Function1;Z)Landroidx/compose/runtime/snapshots/Snapshot; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->current(Landroidx/compose/runtime/snapshots/StateRecord;)Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->current(Landroidx/compose/runtime/snapshots/StateRecord;Landroidx/compose/runtime/snapshots/Snapshot;)Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->currentSnapshot()Landroidx/compose/runtime/snapshots/Snapshot; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->getLock()Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->getSnapshotInitializer()Landroidx/compose/runtime/snapshots/Snapshot; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->mergedReadObserver$default(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ZILjava/lang/Object;)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->mergedReadObserver(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Z)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->mergedWriteObserver(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->newOverwritableRecordLocked(Landroidx/compose/runtime/snapshots/StateRecord;Landroidx/compose/runtime/snapshots/StateObject;)Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->newWritableRecord(Landroidx/compose/runtime/snapshots/StateRecord;Landroidx/compose/runtime/snapshots/StateObject;Landroidx/compose/runtime/snapshots/Snapshot;)Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->newWritableRecordLocked(Landroidx/compose/runtime/snapshots/StateRecord;Landroidx/compose/runtime/snapshots/StateObject;Landroidx/compose/runtime/snapshots/Snapshot;)Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->notifyWrite(Landroidx/compose/runtime/snapshots/Snapshot;Landroidx/compose/runtime/snapshots/StateObject;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->optimisticMerges(Landroidx/compose/runtime/snapshots/MutableSnapshot;Landroidx/compose/runtime/snapshots/MutableSnapshot;Landroidx/compose/runtime/snapshots/SnapshotIdSet;)Ljava/util/Map; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->overwritableRecord(Landroidx/compose/runtime/snapshots/StateRecord;Landroidx/compose/runtime/snapshots/StateObject;Landroidx/compose/runtime/snapshots/Snapshot;Landroidx/compose/runtime/snapshots/StateRecord;)Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->overwriteUnusedRecordsLocked(Landroidx/compose/runtime/snapshots/StateObject;)Z +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->processForUnusedRecordsLocked(Landroidx/compose/runtime/snapshots/StateObject;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->readable(Landroidx/compose/runtime/snapshots/StateRecord;ILandroidx/compose/runtime/snapshots/SnapshotIdSet;)Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->readable(Landroidx/compose/runtime/snapshots/StateRecord;Landroidx/compose/runtime/snapshots/StateObject;)Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->releasePinningLocked(I)V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->takeNewGlobalSnapshot(Landroidx/compose/runtime/snapshots/Snapshot;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->takeNewSnapshot(Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/Snapshot; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->trackPinning(ILandroidx/compose/runtime/snapshots/SnapshotIdSet;)I +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->usedLocked(Landroidx/compose/runtime/snapshots/StateObject;)Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->valid(IILandroidx/compose/runtime/snapshots/SnapshotIdSet;)Z +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->valid(Landroidx/compose/runtime/snapshots/StateRecord;ILandroidx/compose/runtime/snapshots/SnapshotIdSet;)Z +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->validateOpen(Landroidx/compose/runtime/snapshots/Snapshot;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->writableRecord(Landroidx/compose/runtime/snapshots/StateRecord;Landroidx/compose/runtime/snapshots/StateObject;Landroidx/compose/runtime/snapshots/Snapshot;)Landroidx/compose/runtime/snapshots/StateRecord; +Landroidx/compose/runtime/snapshots/SnapshotKt$advanceGlobalSnapshot$3; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$advanceGlobalSnapshot$3;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$advanceGlobalSnapshot$3;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$advanceGlobalSnapshot$3;->invoke(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$advanceGlobalSnapshot$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/snapshots/SnapshotKt$emptyLambda$1; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$emptyLambda$1;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$emptyLambda$1;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$emptyLambda$1;->invoke(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$emptyLambda$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/snapshots/SnapshotKt$mergedReadObserver$1; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$mergedReadObserver$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$mergedReadObserver$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$mergedReadObserver$1;->invoke(Ljava/lang/Object;)V +Landroidx/compose/runtime/snapshots/SnapshotKt$mergedWriteObserver$1; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$mergedWriteObserver$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$mergedWriteObserver$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$mergedWriteObserver$1;->invoke(Ljava/lang/Object;)V +Landroidx/compose/runtime/snapshots/SnapshotKt$takeNewSnapshot$1; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$takeNewSnapshot$1;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$takeNewSnapshot$1;->invoke(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)Landroidx/compose/runtime/snapshots/Snapshot; +HSPLandroidx/compose/runtime/snapshots/SnapshotKt$takeNewSnapshot$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/snapshots/SnapshotMapEntrySet; +HSPLandroidx/compose/runtime/snapshots/SnapshotMapEntrySet;->(Landroidx/compose/runtime/snapshots/SnapshotStateMap;)V +Landroidx/compose/runtime/snapshots/SnapshotMapKeySet; +HSPLandroidx/compose/runtime/snapshots/SnapshotMapKeySet;->(Landroidx/compose/runtime/snapshots/SnapshotStateMap;)V +Landroidx/compose/runtime/snapshots/SnapshotMapSet; +HSPLandroidx/compose/runtime/snapshots/SnapshotMapSet;->(Landroidx/compose/runtime/snapshots/SnapshotStateMap;)V +Landroidx/compose/runtime/snapshots/SnapshotMapValueSet; +HSPLandroidx/compose/runtime/snapshots/SnapshotMapValueSet;->(Landroidx/compose/runtime/snapshots/SnapshotStateMap;)V +Landroidx/compose/runtime/snapshots/SnapshotMutableState; +Landroidx/compose/runtime/snapshots/SnapshotStateList; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->add(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->addAll(Ljava/util/Collection;)Z +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->contains(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->get(I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->getFirstStateRecord()Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->getModification$runtime_release()I +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->getReadable$runtime_release()Landroidx/compose/runtime/snapshots/SnapshotStateList$StateListStateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->getSize()I +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->isEmpty()Z +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->iterator()Ljava/util/Iterator; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->listIterator()Ljava/util/ListIterator; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->prependStateRecord(Landroidx/compose/runtime/snapshots/StateRecord;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->remove(I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->remove(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->removeAt(I)Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->set(ILjava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->size()I +Landroidx/compose/runtime/snapshots/SnapshotStateList$StateListStateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList$StateListStateRecord;->(Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList$StateListStateRecord;->assign(Landroidx/compose/runtime/snapshots/StateRecord;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList$StateListStateRecord;->create()Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList$StateListStateRecord;->getList$runtime_release()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList$StateListStateRecord;->getModification$runtime_release()I +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList$StateListStateRecord;->setList$runtime_release(Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateList$StateListStateRecord;->setModification$runtime_release(I)V +Landroidx/compose/runtime/snapshots/SnapshotStateList$addAll$1; +Landroidx/compose/runtime/snapshots/SnapshotStateList$retainAll$1; +Landroidx/compose/runtime/snapshots/SnapshotStateListKt; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateListKt;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateListKt;->access$getSync$p()Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateListKt;->access$validateRange(II)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateListKt;->validateRange(II)V +Landroidx/compose/runtime/snapshots/SnapshotStateMap; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateMap;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateMap;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateMap;->getFirstStateRecord()Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateMap;->getReadable$runtime_release()Landroidx/compose/runtime/snapshots/SnapshotStateMap$StateMapStateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/runtime/snapshots/SnapshotStateMap$StateMapStateRecord; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateMap$StateMapStateRecord;->(Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateMap$StateMapStateRecord;->getMap$runtime_release()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateMap$StateMapStateRecord;->getModification$runtime_release()I +HSPLandroidx/compose/runtime/snapshots/SnapshotStateMap$StateMapStateRecord;->setMap$runtime_release(Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateMap$StateMapStateRecord;->setModification$runtime_release(I)V +Landroidx/compose/runtime/snapshots/SnapshotStateMapKt; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateMapKt;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateMapKt;->access$getSync$p()Ljava/lang/Object; +Landroidx/compose/runtime/snapshots/SnapshotStateObserver; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->access$addChanges(Landroidx/compose/runtime/snapshots/SnapshotStateObserver;Ljava/util/Set;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->access$drainChanges(Landroidx/compose/runtime/snapshots/SnapshotStateObserver;)Z +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->access$getCurrentMap$p(Landroidx/compose/runtime/snapshots/SnapshotStateObserver;)Landroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->access$getObservedScopeMaps$p(Landroidx/compose/runtime/snapshots/SnapshotStateObserver;)Landroidx/compose/runtime/collection/MutableVector; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->access$getSendingNotifications$p(Landroidx/compose/runtime/snapshots/SnapshotStateObserver;)Z +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->access$isPaused$p(Landroidx/compose/runtime/snapshots/SnapshotStateObserver;)Z +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->access$sendNotifications(Landroidx/compose/runtime/snapshots/SnapshotStateObserver;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->access$setSendingNotifications$p(Landroidx/compose/runtime/snapshots/SnapshotStateObserver;Z)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->addChanges(Ljava/util/Set;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->clearIf(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->drainChanges()Z +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->ensureMap(Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->observeReads(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->removeChanges()Ljava/util/Set; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->sendNotifications()V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->start()V +Landroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->access$getDeriveStateScopeCount$p(Landroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;)I +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->access$setDeriveStateScopeCount$p(Landroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;I)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->clearObsoleteStateReads(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->getOnChanged()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->notifyInvalidatedScopes()V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->observe(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->recordInvalidation(Ljava/util/Set;)Z +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->recordRead(Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->recordRead(Ljava/lang/Object;ILjava/lang/Object;Landroidx/compose/runtime/collection/IdentityArrayIntMap;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->removeObservation(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->removeScopeIf(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap$derivedStateObserver$1; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap$derivedStateObserver$1;->(Landroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap$derivedStateObserver$1;->done(Landroidx/compose/runtime/DerivedState;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap$derivedStateObserver$1;->start(Landroidx/compose/runtime/DerivedState;)V +Landroidx/compose/runtime/snapshots/SnapshotStateObserver$applyObserver$1; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$applyObserver$1;->(Landroidx/compose/runtime/snapshots/SnapshotStateObserver;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$applyObserver$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$applyObserver$1;->invoke(Ljava/util/Set;Landroidx/compose/runtime/snapshots/Snapshot;)V +Landroidx/compose/runtime/snapshots/SnapshotStateObserver$readObserver$1; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$readObserver$1;->(Landroidx/compose/runtime/snapshots/SnapshotStateObserver;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$readObserver$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$readObserver$1;->invoke(Ljava/lang/Object;)V +Landroidx/compose/runtime/snapshots/SnapshotStateObserver$sendNotifications$1; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$sendNotifications$1;->(Landroidx/compose/runtime/snapshots/SnapshotStateObserver;)V +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$sendNotifications$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$sendNotifications$1;->invoke()V +Landroidx/compose/runtime/snapshots/SnapshotWeakSet; +HSPLandroidx/compose/runtime/snapshots/SnapshotWeakSet;->()V +HSPLandroidx/compose/runtime/snapshots/SnapshotWeakSet;->add(Ljava/lang/Object;)Z +HSPLandroidx/compose/runtime/snapshots/SnapshotWeakSet;->getHashes$runtime_release()[I +HSPLandroidx/compose/runtime/snapshots/SnapshotWeakSet;->getSize$runtime_release()I +HSPLandroidx/compose/runtime/snapshots/SnapshotWeakSet;->getValues$runtime_release()[Landroidx/compose/runtime/WeakReference; +HSPLandroidx/compose/runtime/snapshots/SnapshotWeakSet;->setSize$runtime_release(I)V +Landroidx/compose/runtime/snapshots/StateListIterator; +HSPLandroidx/compose/runtime/snapshots/StateListIterator;->(Landroidx/compose/runtime/snapshots/SnapshotStateList;I)V +HSPLandroidx/compose/runtime/snapshots/StateListIterator;->hasNext()Z +HSPLandroidx/compose/runtime/snapshots/StateListIterator;->next()Ljava/lang/Object; +HSPLandroidx/compose/runtime/snapshots/StateListIterator;->remove()V +HSPLandroidx/compose/runtime/snapshots/StateListIterator;->validateModification()V +Landroidx/compose/runtime/snapshots/StateObject; +Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/snapshots/StateRecord;->()V +HSPLandroidx/compose/runtime/snapshots/StateRecord;->()V +HSPLandroidx/compose/runtime/snapshots/StateRecord;->getNext$runtime_release()Landroidx/compose/runtime/snapshots/StateRecord; +HSPLandroidx/compose/runtime/snapshots/StateRecord;->getSnapshotId$runtime_release()I +HSPLandroidx/compose/runtime/snapshots/StateRecord;->setNext$runtime_release(Landroidx/compose/runtime/snapshots/StateRecord;)V +HSPLandroidx/compose/runtime/snapshots/StateRecord;->setSnapshotId$runtime_release(I)V +Landroidx/compose/runtime/snapshots/SubList; +Landroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot; +HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;->(Landroidx/compose/runtime/snapshots/MutableSnapshot;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ZZ)V +HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;->apply()Landroidx/compose/runtime/snapshots/SnapshotApplyResult; +HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;->dispose()V +HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;->getCurrentSnapshot()Landroidx/compose/runtime/snapshots/MutableSnapshot; +HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;->getId()I +HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;->getInvalid$runtime_release()Landroidx/compose/runtime/snapshots/SnapshotIdSet; +HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;->getReadOnly()Z +HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;->getWriteCount$runtime_release()I +HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;->notifyObjectsInitialized$runtime_release()V +HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;->recordModified$runtime_release(Landroidx/compose/runtime/snapshots/StateObject;)V +HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;->setWriteCount$runtime_release(I)V +HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;->takeNestedMutableSnapshot(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/MutableSnapshot; +Landroidx/compose/runtime/tooling/CompositionData; +Landroidx/compose/runtime/tooling/InspectionTablesKt; +HSPLandroidx/compose/runtime/tooling/InspectionTablesKt;->()V +HSPLandroidx/compose/runtime/tooling/InspectionTablesKt;->getLocalInspectionTables()Landroidx/compose/runtime/ProvidableCompositionLocal; +Landroidx/compose/runtime/tooling/InspectionTablesKt$LocalInspectionTables$1; +HSPLandroidx/compose/runtime/tooling/InspectionTablesKt$LocalInspectionTables$1;->()V +HSPLandroidx/compose/runtime/tooling/InspectionTablesKt$LocalInspectionTables$1;->()V +HSPLandroidx/compose/runtime/tooling/InspectionTablesKt$LocalInspectionTables$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/runtime/tooling/InspectionTablesKt$LocalInspectionTables$1;->invoke()Ljava/util/Set; +Landroidx/compose/ui/ActualKt; +HSPLandroidx/compose/ui/ActualKt;->areObjectsOfSameType(Ljava/lang/Object;Ljava/lang/Object;)Z +Landroidx/compose/ui/Alignment; +HSPLandroidx/compose/ui/Alignment;->()V +Landroidx/compose/ui/Alignment$Companion; +HSPLandroidx/compose/ui/Alignment$Companion;->()V +HSPLandroidx/compose/ui/Alignment$Companion;->()V +HSPLandroidx/compose/ui/Alignment$Companion;->getBottom()Landroidx/compose/ui/Alignment$Vertical; +HSPLandroidx/compose/ui/Alignment$Companion;->getBottomCenter()Landroidx/compose/ui/Alignment; +HSPLandroidx/compose/ui/Alignment$Companion;->getBottomEnd()Landroidx/compose/ui/Alignment; +HSPLandroidx/compose/ui/Alignment$Companion;->getCenter()Landroidx/compose/ui/Alignment; +HSPLandroidx/compose/ui/Alignment$Companion;->getCenterEnd()Landroidx/compose/ui/Alignment; +HSPLandroidx/compose/ui/Alignment$Companion;->getCenterHorizontally()Landroidx/compose/ui/Alignment$Horizontal; +HSPLandroidx/compose/ui/Alignment$Companion;->getCenterStart()Landroidx/compose/ui/Alignment; +HSPLandroidx/compose/ui/Alignment$Companion;->getCenterVertically()Landroidx/compose/ui/Alignment$Vertical; +HSPLandroidx/compose/ui/Alignment$Companion;->getEnd()Landroidx/compose/ui/Alignment$Horizontal; +HSPLandroidx/compose/ui/Alignment$Companion;->getStart()Landroidx/compose/ui/Alignment$Horizontal; +HSPLandroidx/compose/ui/Alignment$Companion;->getTop()Landroidx/compose/ui/Alignment$Vertical; +HSPLandroidx/compose/ui/Alignment$Companion;->getTopEnd()Landroidx/compose/ui/Alignment; +HSPLandroidx/compose/ui/Alignment$Companion;->getTopStart()Landroidx/compose/ui/Alignment; +Landroidx/compose/ui/Alignment$Horizontal; +Landroidx/compose/ui/Alignment$Vertical; +Landroidx/compose/ui/BiasAlignment; +HSPLandroidx/compose/ui/BiasAlignment;->()V +HSPLandroidx/compose/ui/BiasAlignment;->(FF)V +HSPLandroidx/compose/ui/BiasAlignment;->align-KFBX0sM(JJLandroidx/compose/ui/unit/LayoutDirection;)J +HSPLandroidx/compose/ui/BiasAlignment;->equals(Ljava/lang/Object;)Z +Landroidx/compose/ui/BiasAlignment$Horizontal; +HSPLandroidx/compose/ui/BiasAlignment$Horizontal;->()V +HSPLandroidx/compose/ui/BiasAlignment$Horizontal;->(F)V +HSPLandroidx/compose/ui/BiasAlignment$Horizontal;->align(IILandroidx/compose/ui/unit/LayoutDirection;)I +HSPLandroidx/compose/ui/BiasAlignment$Horizontal;->equals(Ljava/lang/Object;)Z +Landroidx/compose/ui/BiasAlignment$Vertical; +HSPLandroidx/compose/ui/BiasAlignment$Vertical;->()V +HSPLandroidx/compose/ui/BiasAlignment$Vertical;->(F)V +HSPLandroidx/compose/ui/BiasAlignment$Vertical;->align(II)I +HSPLandroidx/compose/ui/BiasAlignment$Vertical;->equals(Ljava/lang/Object;)Z +Landroidx/compose/ui/CombinedModifier; +HSPLandroidx/compose/ui/CombinedModifier;->()V +HSPLandroidx/compose/ui/CombinedModifier;->(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;)V +HSPLandroidx/compose/ui/CombinedModifier;->all(Lkotlin/jvm/functions/Function1;)Z +HSPLandroidx/compose/ui/CombinedModifier;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/CombinedModifier;->foldIn(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLandroidx/compose/ui/CombinedModifier;->getInner$ui_release()Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/CombinedModifier;->getOuter$ui_release()Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/ComposedModifier; +HSPLandroidx/compose/ui/ComposedModifier;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;)V +HSPLandroidx/compose/ui/ComposedModifier;->getFactory()Lkotlin/jvm/functions/Function3; +Landroidx/compose/ui/ComposedModifierKt; +HSPLandroidx/compose/ui/ComposedModifierKt;->composed$default(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;ILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/ComposedModifierKt;->composed(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/ComposedModifierKt;->materializeModifier(Landroidx/compose/runtime/Composer;Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/ComposedModifierKt;->materializeWithCompositionLocalInjectionInternal(Landroidx/compose/runtime/Composer;Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/ComposedModifierKt$materialize$1; +HSPLandroidx/compose/ui/ComposedModifierKt$materialize$1;->()V +HSPLandroidx/compose/ui/ComposedModifierKt$materialize$1;->()V +HSPLandroidx/compose/ui/ComposedModifierKt$materialize$1;->invoke(Landroidx/compose/ui/Modifier$Element;)Ljava/lang/Boolean; +HSPLandroidx/compose/ui/ComposedModifierKt$materialize$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/ComposedModifierKt$materialize$result$1; +HSPLandroidx/compose/ui/ComposedModifierKt$materialize$result$1;->(Landroidx/compose/runtime/Composer;)V +HSPLandroidx/compose/ui/ComposedModifierKt$materialize$result$1;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier$Element;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/ComposedModifierKt$materialize$result$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/CompositionLocalMapInjectionElement; +HSPLandroidx/compose/ui/CompositionLocalMapInjectionElement;->(Landroidx/compose/runtime/CompositionLocalMap;)V +HSPLandroidx/compose/ui/CompositionLocalMapInjectionElement;->create()Landroidx/compose/ui/CompositionLocalMapInjectionNode; +HSPLandroidx/compose/ui/CompositionLocalMapInjectionElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/CompositionLocalMapInjectionElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/ui/CompositionLocalMapInjectionNode; +HSPLandroidx/compose/ui/CompositionLocalMapInjectionNode;->(Landroidx/compose/runtime/CompositionLocalMap;)V +HSPLandroidx/compose/ui/CompositionLocalMapInjectionNode;->onAttach()V +Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/Modifier;->()V +HSPLandroidx/compose/ui/Modifier;->then(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/Modifier$Companion; +HSPLandroidx/compose/ui/Modifier$Companion;->()V +HSPLandroidx/compose/ui/Modifier$Companion;->()V +HSPLandroidx/compose/ui/Modifier$Companion;->all(Lkotlin/jvm/functions/Function1;)Z +HSPLandroidx/compose/ui/Modifier$Companion;->then(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/Modifier$Element; +HSPLandroidx/compose/ui/Modifier$Element;->all(Lkotlin/jvm/functions/Function1;)Z +HSPLandroidx/compose/ui/Modifier$Element;->foldIn(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/Modifier$Node;->()V +HSPLandroidx/compose/ui/Modifier$Node;->()V +HSPLandroidx/compose/ui/Modifier$Node;->getAggregateChildKindSet$ui_release()I +HSPLandroidx/compose/ui/Modifier$Node;->getChild$ui_release()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/Modifier$Node;->getCoordinator$ui_release()Landroidx/compose/ui/node/NodeCoordinator; +HSPLandroidx/compose/ui/Modifier$Node;->getCoroutineScope()Lkotlinx/coroutines/CoroutineScope; +HSPLandroidx/compose/ui/Modifier$Node;->getInsertedNodeAwaitingAttachForInvalidation$ui_release()Z +HSPLandroidx/compose/ui/Modifier$Node;->getKindSet$ui_release()I +HSPLandroidx/compose/ui/Modifier$Node;->getNode()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/Modifier$Node;->getOwnerScope$ui_release()Landroidx/compose/ui/node/ObserverNodeOwnerScope; +HSPLandroidx/compose/ui/Modifier$Node;->getParent$ui_release()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/Modifier$Node;->getShouldAutoInvalidate()Z +HSPLandroidx/compose/ui/Modifier$Node;->getUpdatedNodeAwaitingAttachForInvalidation$ui_release()Z +HSPLandroidx/compose/ui/Modifier$Node;->isAttached()Z +HSPLandroidx/compose/ui/Modifier$Node;->markAsAttached$ui_release()V +HSPLandroidx/compose/ui/Modifier$Node;->markAsDetached$ui_release()V +HSPLandroidx/compose/ui/Modifier$Node;->onAttach()V +HSPLandroidx/compose/ui/Modifier$Node;->onDetach()V +HSPLandroidx/compose/ui/Modifier$Node;->onReset()V +HSPLandroidx/compose/ui/Modifier$Node;->reset$ui_release()V +HSPLandroidx/compose/ui/Modifier$Node;->runAttachLifecycle$ui_release()V +HSPLandroidx/compose/ui/Modifier$Node;->runDetachLifecycle$ui_release()V +HSPLandroidx/compose/ui/Modifier$Node;->setAggregateChildKindSet$ui_release(I)V +HSPLandroidx/compose/ui/Modifier$Node;->setAsDelegateTo$ui_release(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/Modifier$Node;->setChild$ui_release(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/Modifier$Node;->setInsertedNodeAwaitingAttachForInvalidation$ui_release(Z)V +HSPLandroidx/compose/ui/Modifier$Node;->setKindSet$ui_release(I)V +HSPLandroidx/compose/ui/Modifier$Node;->setOwnerScope$ui_release(Landroidx/compose/ui/node/ObserverNodeOwnerScope;)V +HSPLandroidx/compose/ui/Modifier$Node;->setParent$ui_release(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/Modifier$Node;->setUpdatedNodeAwaitingAttachForInvalidation$ui_release(Z)V +HSPLandroidx/compose/ui/Modifier$Node;->sideEffect(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/Modifier$Node;->updateCoordinator$ui_release(Landroidx/compose/ui/node/NodeCoordinator;)V +Landroidx/compose/ui/ModifierNodeDetachedCancellationException; +HSPLandroidx/compose/ui/ModifierNodeDetachedCancellationException;->()V +HSPLandroidx/compose/ui/ModifierNodeDetachedCancellationException;->fillInStackTrace()Ljava/lang/Throwable; +Landroidx/compose/ui/MotionDurationScale; +HSPLandroidx/compose/ui/MotionDurationScale;->()V +HSPLandroidx/compose/ui/MotionDurationScale;->getKey()Lkotlin/coroutines/CoroutineContext$Key; +Landroidx/compose/ui/MotionDurationScale$DefaultImpls; +HSPLandroidx/compose/ui/MotionDurationScale$DefaultImpls;->fold(Landroidx/compose/ui/MotionDurationScale;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLandroidx/compose/ui/MotionDurationScale$DefaultImpls;->get(Landroidx/compose/ui/MotionDurationScale;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLandroidx/compose/ui/MotionDurationScale$DefaultImpls;->minusKey(Landroidx/compose/ui/MotionDurationScale;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext; +Landroidx/compose/ui/MotionDurationScale$Key; +HSPLandroidx/compose/ui/MotionDurationScale$Key;->()V +HSPLandroidx/compose/ui/MotionDurationScale$Key;->()V +Landroidx/compose/ui/R$id; +Landroidx/compose/ui/R$string; +Landroidx/compose/ui/ZIndexElement; +HSPLandroidx/compose/ui/ZIndexElement;->(F)V +Landroidx/compose/ui/ZIndexModifierKt; +HSPLandroidx/compose/ui/ZIndexModifierKt;->zIndex(Landroidx/compose/ui/Modifier;F)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/autofill/AndroidAutofill; +HSPLandroidx/compose/ui/autofill/AndroidAutofill;->(Landroid/view/View;Landroidx/compose/ui/autofill/AutofillTree;)V +HSPLandroidx/compose/ui/autofill/AndroidAutofill;->cancelAutofillForNode(Landroidx/compose/ui/autofill/AutofillNode;)V +HSPLandroidx/compose/ui/autofill/AndroidAutofill;->getAutofillManager()Landroid/view/autofill/AutofillManager; +HSPLandroidx/compose/ui/autofill/AndroidAutofill;->getAutofillTree()Landroidx/compose/ui/autofill/AutofillTree; +HSPLandroidx/compose/ui/autofill/AndroidAutofill;->getView()Landroid/view/View; +HSPLandroidx/compose/ui/autofill/AndroidAutofill;->requestAutofillForNode(Landroidx/compose/ui/autofill/AutofillNode;)V +Landroidx/compose/ui/autofill/AndroidAutofillType_androidKt; +HSPLandroidx/compose/ui/autofill/AndroidAutofillType_androidKt;->()V +HSPLandroidx/compose/ui/autofill/AndroidAutofillType_androidKt;->getAndroidType(Landroidx/compose/ui/autofill/AutofillType;)Ljava/lang/String; +Landroidx/compose/ui/autofill/AndroidAutofill_androidKt; +HSPLandroidx/compose/ui/autofill/AndroidAutofill_androidKt;->populateViewStructure(Landroidx/compose/ui/autofill/AndroidAutofill;Landroid/view/ViewStructure;)V +Landroidx/compose/ui/autofill/Autofill; +Landroidx/compose/ui/autofill/AutofillApi23Helper; +HSPLandroidx/compose/ui/autofill/AutofillApi23Helper;->()V +HSPLandroidx/compose/ui/autofill/AutofillApi23Helper;->()V +HSPLandroidx/compose/ui/autofill/AutofillApi23Helper;->addChildCount(Landroid/view/ViewStructure;I)I +HSPLandroidx/compose/ui/autofill/AutofillApi23Helper;->newChild(Landroid/view/ViewStructure;I)Landroid/view/ViewStructure; +HSPLandroidx/compose/ui/autofill/AutofillApi23Helper;->setDimens(Landroid/view/ViewStructure;IIIIII)V +HSPLandroidx/compose/ui/autofill/AutofillApi23Helper;->setId(Landroid/view/ViewStructure;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +Landroidx/compose/ui/autofill/AutofillApi26Helper; +HSPLandroidx/compose/ui/autofill/AutofillApi26Helper;->()V +HSPLandroidx/compose/ui/autofill/AutofillApi26Helper;->()V +HSPLandroidx/compose/ui/autofill/AutofillApi26Helper;->getAutofillId(Landroid/view/ViewStructure;)Landroid/view/autofill/AutofillId; +HSPLandroidx/compose/ui/autofill/AutofillApi26Helper;->setAutofillHints(Landroid/view/ViewStructure;[Ljava/lang/String;)V +HSPLandroidx/compose/ui/autofill/AutofillApi26Helper;->setAutofillId(Landroid/view/ViewStructure;Landroid/view/autofill/AutofillId;I)V +HSPLandroidx/compose/ui/autofill/AutofillApi26Helper;->setAutofillType(Landroid/view/ViewStructure;I)V +Landroidx/compose/ui/autofill/AutofillCallback; +HSPLandroidx/compose/ui/autofill/AutofillCallback;->()V +HSPLandroidx/compose/ui/autofill/AutofillCallback;->()V +HSPLandroidx/compose/ui/autofill/AutofillCallback;->onAutofillEvent(Landroid/view/View;II)V +HSPLandroidx/compose/ui/autofill/AutofillCallback;->register(Landroidx/compose/ui/autofill/AndroidAutofill;)V +Landroidx/compose/ui/autofill/AutofillNode; +HSPLandroidx/compose/ui/autofill/AutofillNode;->()V +HSPLandroidx/compose/ui/autofill/AutofillNode;->(Ljava/util/List;Landroidx/compose/ui/geometry/Rect;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/autofill/AutofillNode;->(Ljava/util/List;Landroidx/compose/ui/geometry/Rect;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/autofill/AutofillNode;->access$getPreviousId$cp()I +HSPLandroidx/compose/ui/autofill/AutofillNode;->access$setPreviousId$cp(I)V +HSPLandroidx/compose/ui/autofill/AutofillNode;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/autofill/AutofillNode;->getAutofillTypes()Ljava/util/List; +HSPLandroidx/compose/ui/autofill/AutofillNode;->getBoundingBox()Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/autofill/AutofillNode;->getId()I +HSPLandroidx/compose/ui/autofill/AutofillNode;->setBoundingBox(Landroidx/compose/ui/geometry/Rect;)V +Landroidx/compose/ui/autofill/AutofillNode$Companion; +HSPLandroidx/compose/ui/autofill/AutofillNode$Companion;->()V +HSPLandroidx/compose/ui/autofill/AutofillNode$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/autofill/AutofillNode$Companion;->access$generateId(Landroidx/compose/ui/autofill/AutofillNode$Companion;)I +HSPLandroidx/compose/ui/autofill/AutofillNode$Companion;->generateId()I +Landroidx/compose/ui/autofill/AutofillTree; +HSPLandroidx/compose/ui/autofill/AutofillTree;->()V +HSPLandroidx/compose/ui/autofill/AutofillTree;->()V +HSPLandroidx/compose/ui/autofill/AutofillTree;->getChildren()Ljava/util/Map; +HSPLandroidx/compose/ui/autofill/AutofillTree;->plusAssign(Landroidx/compose/ui/autofill/AutofillNode;)V +Landroidx/compose/ui/autofill/AutofillType; +HSPLandroidx/compose/ui/autofill/AutofillType;->$values()[Landroidx/compose/ui/autofill/AutofillType; +HSPLandroidx/compose/ui/autofill/AutofillType;->()V +HSPLandroidx/compose/ui/autofill/AutofillType;->(Ljava/lang/String;I)V +Landroidx/compose/ui/draw/AlphaKt; +HSPLandroidx/compose/ui/draw/AlphaKt;->alpha(Landroidx/compose/ui/Modifier;F)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/draw/BuildDrawCacheParams; +Landroidx/compose/ui/draw/CacheDrawModifierNode; +Landroidx/compose/ui/draw/CacheDrawModifierNodeImpl; +HSPLandroidx/compose/ui/draw/CacheDrawModifierNodeImpl;->(Landroidx/compose/ui/draw/CacheDrawScope;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/draw/CacheDrawModifierNodeImpl;->draw(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V +HSPLandroidx/compose/ui/draw/CacheDrawModifierNodeImpl;->getBlock()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/ui/draw/CacheDrawModifierNodeImpl;->getDensity()Landroidx/compose/ui/unit/Density; +HSPLandroidx/compose/ui/draw/CacheDrawModifierNodeImpl;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/draw/CacheDrawModifierNodeImpl;->getOrBuildCachedDrawBlock()Landroidx/compose/ui/draw/DrawResult; +HSPLandroidx/compose/ui/draw/CacheDrawModifierNodeImpl;->getSize-NH-jbRc()J +HSPLandroidx/compose/ui/draw/CacheDrawModifierNodeImpl;->invalidateDrawCache()V +HSPLandroidx/compose/ui/draw/CacheDrawModifierNodeImpl;->onMeasureResultChanged()V +Landroidx/compose/ui/draw/CacheDrawModifierNodeImpl$getOrBuildCachedDrawBlock$1$1; +HSPLandroidx/compose/ui/draw/CacheDrawModifierNodeImpl$getOrBuildCachedDrawBlock$1$1;->(Landroidx/compose/ui/draw/CacheDrawModifierNodeImpl;Landroidx/compose/ui/draw/CacheDrawScope;)V +HSPLandroidx/compose/ui/draw/CacheDrawModifierNodeImpl$getOrBuildCachedDrawBlock$1$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/draw/CacheDrawModifierNodeImpl$getOrBuildCachedDrawBlock$1$1;->invoke()V +Landroidx/compose/ui/draw/CacheDrawScope; +HSPLandroidx/compose/ui/draw/CacheDrawScope;->()V +HSPLandroidx/compose/ui/draw/CacheDrawScope;->()V +HSPLandroidx/compose/ui/draw/CacheDrawScope;->getDensity()F +HSPLandroidx/compose/ui/draw/CacheDrawScope;->getDrawResult$ui_release()Landroidx/compose/ui/draw/DrawResult; +HSPLandroidx/compose/ui/draw/CacheDrawScope;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/draw/CacheDrawScope;->getSize-NH-jbRc()J +HSPLandroidx/compose/ui/draw/CacheDrawScope;->onDrawWithContent(Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/draw/DrawResult; +HSPLandroidx/compose/ui/draw/CacheDrawScope;->setCacheParams$ui_release(Landroidx/compose/ui/draw/BuildDrawCacheParams;)V +HSPLandroidx/compose/ui/draw/CacheDrawScope;->setDrawResult$ui_release(Landroidx/compose/ui/draw/DrawResult;)V +Landroidx/compose/ui/draw/ClipKt; +HSPLandroidx/compose/ui/draw/ClipKt;->clip(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/Shape;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/draw/ClipKt;->clipToBounds(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/draw/DrawBackgroundModifier; +HSPLandroidx/compose/ui/draw/DrawBackgroundModifier;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/draw/DrawBackgroundModifier;->draw(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V +HSPLandroidx/compose/ui/draw/DrawBackgroundModifier;->setOnDraw(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/ui/draw/DrawBehindElement; +HSPLandroidx/compose/ui/draw/DrawBehindElement;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/draw/DrawBehindElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/draw/DrawBehindElement;->create()Landroidx/compose/ui/draw/DrawBackgroundModifier; +HSPLandroidx/compose/ui/draw/DrawBehindElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/draw/DrawBehindElement;->update(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/draw/DrawBehindElement;->update(Landroidx/compose/ui/draw/DrawBackgroundModifier;)V +Landroidx/compose/ui/draw/DrawCacheModifier; +Landroidx/compose/ui/draw/DrawModifier; +Landroidx/compose/ui/draw/DrawModifierKt; +HSPLandroidx/compose/ui/draw/DrawModifierKt;->CacheDrawModifierNode(Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/draw/CacheDrawModifierNode; +HSPLandroidx/compose/ui/draw/DrawModifierKt;->drawBehind(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/draw/DrawModifierKt;->drawWithContent(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/draw/DrawResult; +HSPLandroidx/compose/ui/draw/DrawResult;->()V +HSPLandroidx/compose/ui/draw/DrawResult;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/draw/DrawResult;->getBlock$ui_release()Lkotlin/jvm/functions/Function1; +Landroidx/compose/ui/draw/DrawWithContentElement; +HSPLandroidx/compose/ui/draw/DrawWithContentElement;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/draw/DrawWithContentElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/draw/DrawWithContentElement;->create()Landroidx/compose/ui/draw/DrawWithContentModifier; +HSPLandroidx/compose/ui/draw/DrawWithContentElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/draw/DrawWithContentElement;->update(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/draw/DrawWithContentElement;->update(Landroidx/compose/ui/draw/DrawWithContentModifier;)V +Landroidx/compose/ui/draw/DrawWithContentModifier; +HSPLandroidx/compose/ui/draw/DrawWithContentModifier;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/draw/DrawWithContentModifier;->draw(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V +HSPLandroidx/compose/ui/draw/DrawWithContentModifier;->setOnDraw(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/ui/draw/EmptyBuildDrawCacheParams; +HSPLandroidx/compose/ui/draw/EmptyBuildDrawCacheParams;->()V +HSPLandroidx/compose/ui/draw/EmptyBuildDrawCacheParams;->()V +Landroidx/compose/ui/draw/PainterElement; +HSPLandroidx/compose/ui/draw/PainterElement;->(Landroidx/compose/ui/graphics/painter/Painter;ZLandroidx/compose/ui/Alignment;Landroidx/compose/ui/layout/ContentScale;FLandroidx/compose/ui/graphics/ColorFilter;)V +HSPLandroidx/compose/ui/draw/PainterElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/draw/PainterElement;->create()Landroidx/compose/ui/draw/PainterNode; +HSPLandroidx/compose/ui/draw/PainterElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/draw/PainterElement;->update(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/draw/PainterElement;->update(Landroidx/compose/ui/draw/PainterNode;)V +Landroidx/compose/ui/draw/PainterModifierKt; +HSPLandroidx/compose/ui/draw/PainterModifierKt;->paint$default(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/painter/Painter;ZLandroidx/compose/ui/Alignment;Landroidx/compose/ui/layout/ContentScale;FLandroidx/compose/ui/graphics/ColorFilter;ILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/draw/PainterModifierKt;->paint(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/painter/Painter;ZLandroidx/compose/ui/Alignment;Landroidx/compose/ui/layout/ContentScale;FLandroidx/compose/ui/graphics/ColorFilter;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/draw/PainterNode; +HSPLandroidx/compose/ui/draw/PainterNode;->(Landroidx/compose/ui/graphics/painter/Painter;ZLandroidx/compose/ui/Alignment;Landroidx/compose/ui/layout/ContentScale;FLandroidx/compose/ui/graphics/ColorFilter;)V +HSPLandroidx/compose/ui/draw/PainterNode;->calculateScaledSize-E7KxVPU(J)J +HSPLandroidx/compose/ui/draw/PainterNode;->draw(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V +HSPLandroidx/compose/ui/draw/PainterNode;->getPainter()Landroidx/compose/ui/graphics/painter/Painter; +HSPLandroidx/compose/ui/draw/PainterNode;->getShouldAutoInvalidate()Z +HSPLandroidx/compose/ui/draw/PainterNode;->getSizeToIntrinsics()Z +HSPLandroidx/compose/ui/draw/PainterNode;->getUseIntrinsicSize()Z +HSPLandroidx/compose/ui/draw/PainterNode;->hasSpecifiedAndFiniteHeight-uvyYCjk(J)Z +HSPLandroidx/compose/ui/draw/PainterNode;->hasSpecifiedAndFiniteWidth-uvyYCjk(J)Z +HSPLandroidx/compose/ui/draw/PainterNode;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/ui/draw/PainterNode;->modifyConstraints-ZezNO4M(J)J +HSPLandroidx/compose/ui/draw/PainterNode;->setAlignment(Landroidx/compose/ui/Alignment;)V +HSPLandroidx/compose/ui/draw/PainterNode;->setAlpha(F)V +HSPLandroidx/compose/ui/draw/PainterNode;->setColorFilter(Landroidx/compose/ui/graphics/ColorFilter;)V +HSPLandroidx/compose/ui/draw/PainterNode;->setContentScale(Landroidx/compose/ui/layout/ContentScale;)V +HSPLandroidx/compose/ui/draw/PainterNode;->setPainter(Landroidx/compose/ui/graphics/painter/Painter;)V +HSPLandroidx/compose/ui/draw/PainterNode;->setSizeToIntrinsics(Z)V +Landroidx/compose/ui/draw/PainterNode$measure$1; +HSPLandroidx/compose/ui/draw/PainterNode$measure$1;->(Landroidx/compose/ui/layout/Placeable;)V +HSPLandroidx/compose/ui/draw/PainterNode$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/ui/draw/PainterNode$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/draw/ShadowKt; +HSPLandroidx/compose/ui/draw/ShadowKt;->shadow-s4CzXII$default(Landroidx/compose/ui/Modifier;FLandroidx/compose/ui/graphics/Shape;ZJJILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/draw/ShadowKt;->shadow-s4CzXII(Landroidx/compose/ui/Modifier;FLandroidx/compose/ui/graphics/Shape;ZJJ)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/focus/CustomDestinationResult; +HSPLandroidx/compose/ui/focus/CustomDestinationResult;->$values()[Landroidx/compose/ui/focus/CustomDestinationResult; +HSPLandroidx/compose/ui/focus/CustomDestinationResult;->()V +HSPLandroidx/compose/ui/focus/CustomDestinationResult;->(Ljava/lang/String;I)V +HSPLandroidx/compose/ui/focus/CustomDestinationResult;->values()[Landroidx/compose/ui/focus/CustomDestinationResult; +Landroidx/compose/ui/focus/FocusChangedElement; +HSPLandroidx/compose/ui/focus/FocusChangedElement;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/focus/FocusChangedElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/focus/FocusChangedElement;->create()Landroidx/compose/ui/focus/FocusChangedNode; +HSPLandroidx/compose/ui/focus/FocusChangedElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/focus/FocusChangedElement;->update(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/focus/FocusChangedElement;->update(Landroidx/compose/ui/focus/FocusChangedNode;)V +Landroidx/compose/ui/focus/FocusChangedModifierKt; +HSPLandroidx/compose/ui/focus/FocusChangedModifierKt;->onFocusChanged(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/focus/FocusChangedNode; +HSPLandroidx/compose/ui/focus/FocusChangedNode;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/focus/FocusChangedNode;->onFocusEvent(Landroidx/compose/ui/focus/FocusState;)V +HSPLandroidx/compose/ui/focus/FocusChangedNode;->setOnFocusChanged(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/ui/focus/FocusDirection; +HSPLandroidx/compose/ui/focus/FocusDirection;->()V +HSPLandroidx/compose/ui/focus/FocusDirection;->(I)V +HSPLandroidx/compose/ui/focus/FocusDirection;->access$getEnter$cp()I +HSPLandroidx/compose/ui/focus/FocusDirection;->box-impl(I)Landroidx/compose/ui/focus/FocusDirection; +HSPLandroidx/compose/ui/focus/FocusDirection;->constructor-impl(I)I +HSPLandroidx/compose/ui/focus/FocusDirection;->unbox-impl()I +Landroidx/compose/ui/focus/FocusDirection$Companion; +HSPLandroidx/compose/ui/focus/FocusDirection$Companion;->()V +HSPLandroidx/compose/ui/focus/FocusDirection$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/focus/FocusDirection$Companion;->getEnter-dhqQ-8s()I +Landroidx/compose/ui/focus/FocusEventElement; +HSPLandroidx/compose/ui/focus/FocusEventElement;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/focus/FocusEventElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/focus/FocusEventElement;->create()Landroidx/compose/ui/focus/FocusEventNode; +HSPLandroidx/compose/ui/focus/FocusEventElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/focus/FocusEventElement;->update(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/focus/FocusEventElement;->update(Landroidx/compose/ui/focus/FocusEventNode;)V +Landroidx/compose/ui/focus/FocusEventModifier; +Landroidx/compose/ui/focus/FocusEventModifierKt; +HSPLandroidx/compose/ui/focus/FocusEventModifierKt;->onFocusEvent(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/focus/FocusEventModifierNode; +Landroidx/compose/ui/focus/FocusEventModifierNodeKt; +HSPLandroidx/compose/ui/focus/FocusEventModifierNodeKt;->getFocusState(Landroidx/compose/ui/focus/FocusEventModifierNode;)Landroidx/compose/ui/focus/FocusState; +HSPLandroidx/compose/ui/focus/FocusEventModifierNodeKt;->invalidateFocusEvent(Landroidx/compose/ui/focus/FocusEventModifierNode;)V +HSPLandroidx/compose/ui/focus/FocusEventModifierNodeKt;->refreshFocusEventNodes(Landroidx/compose/ui/focus/FocusTargetNode;)V +Landroidx/compose/ui/focus/FocusEventModifierNodeKt$WhenMappings; +HSPLandroidx/compose/ui/focus/FocusEventModifierNodeKt$WhenMappings;->()V +Landroidx/compose/ui/focus/FocusEventNode; +HSPLandroidx/compose/ui/focus/FocusEventNode;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/focus/FocusEventNode;->onFocusEvent(Landroidx/compose/ui/focus/FocusState;)V +HSPLandroidx/compose/ui/focus/FocusEventNode;->setOnFocusEvent(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/ui/focus/FocusInvalidationManager; +HSPLandroidx/compose/ui/focus/FocusInvalidationManager;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/focus/FocusInvalidationManager;->access$getFocusEventNodes$p(Landroidx/compose/ui/focus/FocusInvalidationManager;)Ljava/util/Set; +HSPLandroidx/compose/ui/focus/FocusInvalidationManager;->access$getFocusPropertiesNodes$p(Landroidx/compose/ui/focus/FocusInvalidationManager;)Ljava/util/Set; +HSPLandroidx/compose/ui/focus/FocusInvalidationManager;->access$getFocusTargetNodes$p(Landroidx/compose/ui/focus/FocusInvalidationManager;)Ljava/util/Set; +HSPLandroidx/compose/ui/focus/FocusInvalidationManager;->scheduleInvalidation(Landroidx/compose/ui/focus/FocusEventModifierNode;)V +HSPLandroidx/compose/ui/focus/FocusInvalidationManager;->scheduleInvalidation(Landroidx/compose/ui/focus/FocusPropertiesModifierNode;)V +HSPLandroidx/compose/ui/focus/FocusInvalidationManager;->scheduleInvalidation(Landroidx/compose/ui/focus/FocusTargetNode;)V +HSPLandroidx/compose/ui/focus/FocusInvalidationManager;->scheduleInvalidation(Ljava/util/Set;Ljava/lang/Object;)V +Landroidx/compose/ui/focus/FocusInvalidationManager$invalidateNodes$1; +HSPLandroidx/compose/ui/focus/FocusInvalidationManager$invalidateNodes$1;->(Landroidx/compose/ui/focus/FocusInvalidationManager;)V +HSPLandroidx/compose/ui/focus/FocusInvalidationManager$invalidateNodes$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/focus/FocusInvalidationManager$invalidateNodes$1;->invoke()V +Landroidx/compose/ui/focus/FocusManager; +Landroidx/compose/ui/focus/FocusModifierKt; +HSPLandroidx/compose/ui/focus/FocusModifierKt;->focusTarget(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/focus/FocusOrderModifier; +Landroidx/compose/ui/focus/FocusOwner; +Landroidx/compose/ui/focus/FocusOwnerImpl; +HSPLandroidx/compose/ui/focus/FocusOwnerImpl;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/focus/FocusOwnerImpl;->clearFocus(ZZ)V +HSPLandroidx/compose/ui/focus/FocusOwnerImpl;->getModifier()Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/focus/FocusOwnerImpl;->getRootFocusNode$ui_release()Landroidx/compose/ui/focus/FocusTargetNode; +HSPLandroidx/compose/ui/focus/FocusOwnerImpl;->scheduleInvalidation(Landroidx/compose/ui/focus/FocusEventModifierNode;)V +HSPLandroidx/compose/ui/focus/FocusOwnerImpl;->scheduleInvalidation(Landroidx/compose/ui/focus/FocusPropertiesModifierNode;)V +HSPLandroidx/compose/ui/focus/FocusOwnerImpl;->scheduleInvalidation(Landroidx/compose/ui/focus/FocusTargetNode;)V +HSPLandroidx/compose/ui/focus/FocusOwnerImpl;->setLayoutDirection(Landroidx/compose/ui/unit/LayoutDirection;)V +HSPLandroidx/compose/ui/focus/FocusOwnerImpl;->takeFocus()V +Landroidx/compose/ui/focus/FocusOwnerImpl$WhenMappings; +HSPLandroidx/compose/ui/focus/FocusOwnerImpl$WhenMappings;->()V +Landroidx/compose/ui/focus/FocusOwnerImpl$modifier$1; +HSPLandroidx/compose/ui/focus/FocusOwnerImpl$modifier$1;->(Landroidx/compose/ui/focus/FocusOwnerImpl;)V +HSPLandroidx/compose/ui/focus/FocusOwnerImpl$modifier$1;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/focus/FocusOwnerImpl$modifier$1;->create()Landroidx/compose/ui/focus/FocusTargetNode; +Landroidx/compose/ui/focus/FocusProperties; +Landroidx/compose/ui/focus/FocusPropertiesElement; +HSPLandroidx/compose/ui/focus/FocusPropertiesElement;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/focus/FocusPropertiesElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/focus/FocusPropertiesElement;->create()Landroidx/compose/ui/focus/FocusPropertiesNode; +HSPLandroidx/compose/ui/focus/FocusPropertiesElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/ui/focus/FocusPropertiesImpl; +HSPLandroidx/compose/ui/focus/FocusPropertiesImpl;->()V +HSPLandroidx/compose/ui/focus/FocusPropertiesImpl;->getCanFocus()Z +HSPLandroidx/compose/ui/focus/FocusPropertiesImpl;->getEnter()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/ui/focus/FocusPropertiesImpl;->setCanFocus(Z)V +Landroidx/compose/ui/focus/FocusPropertiesImpl$enter$1; +HSPLandroidx/compose/ui/focus/FocusPropertiesImpl$enter$1;->()V +HSPLandroidx/compose/ui/focus/FocusPropertiesImpl$enter$1;->()V +HSPLandroidx/compose/ui/focus/FocusPropertiesImpl$enter$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/focus/FocusPropertiesImpl$enter$1;->invoke-3ESFkO8(I)Landroidx/compose/ui/focus/FocusRequester; +Landroidx/compose/ui/focus/FocusPropertiesImpl$exit$1; +HSPLandroidx/compose/ui/focus/FocusPropertiesImpl$exit$1;->()V +HSPLandroidx/compose/ui/focus/FocusPropertiesImpl$exit$1;->()V +Landroidx/compose/ui/focus/FocusPropertiesKt; +HSPLandroidx/compose/ui/focus/FocusPropertiesKt;->focusProperties(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/focus/FocusPropertiesModifierNode; +Landroidx/compose/ui/focus/FocusPropertiesModifierNodeKt; +HSPLandroidx/compose/ui/focus/FocusPropertiesModifierNodeKt;->invalidateFocusProperties(Landroidx/compose/ui/focus/FocusPropertiesModifierNode;)V +Landroidx/compose/ui/focus/FocusPropertiesNode; +HSPLandroidx/compose/ui/focus/FocusPropertiesNode;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/focus/FocusPropertiesNode;->applyFocusProperties(Landroidx/compose/ui/focus/FocusProperties;)V +Landroidx/compose/ui/focus/FocusRequester; +HSPLandroidx/compose/ui/focus/FocusRequester;->()V +HSPLandroidx/compose/ui/focus/FocusRequester;->()V +HSPLandroidx/compose/ui/focus/FocusRequester;->access$getCancel$cp()Landroidx/compose/ui/focus/FocusRequester; +HSPLandroidx/compose/ui/focus/FocusRequester;->access$getDefault$cp()Landroidx/compose/ui/focus/FocusRequester; +HSPLandroidx/compose/ui/focus/FocusRequester;->focus$ui_release()Z +HSPLandroidx/compose/ui/focus/FocusRequester;->getFocusRequesterNodes$ui_release()Landroidx/compose/runtime/collection/MutableVector; +HSPLandroidx/compose/ui/focus/FocusRequester;->requestFocus()V +Landroidx/compose/ui/focus/FocusRequester$Companion; +HSPLandroidx/compose/ui/focus/FocusRequester$Companion;->()V +HSPLandroidx/compose/ui/focus/FocusRequester$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/focus/FocusRequester$Companion;->getCancel()Landroidx/compose/ui/focus/FocusRequester; +HSPLandroidx/compose/ui/focus/FocusRequester$Companion;->getDefault()Landroidx/compose/ui/focus/FocusRequester; +Landroidx/compose/ui/focus/FocusRequesterElement; +HSPLandroidx/compose/ui/focus/FocusRequesterElement;->(Landroidx/compose/ui/focus/FocusRequester;)V +HSPLandroidx/compose/ui/focus/FocusRequesterElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/focus/FocusRequesterElement;->create()Landroidx/compose/ui/focus/FocusRequesterNode; +HSPLandroidx/compose/ui/focus/FocusRequesterElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/ui/focus/FocusRequesterModifier; +Landroidx/compose/ui/focus/FocusRequesterModifierKt; +HSPLandroidx/compose/ui/focus/FocusRequesterModifierKt;->focusRequester(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/focus/FocusRequester;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/focus/FocusRequesterModifierNode; +Landroidx/compose/ui/focus/FocusRequesterNode; +HSPLandroidx/compose/ui/focus/FocusRequesterNode;->(Landroidx/compose/ui/focus/FocusRequester;)V +HSPLandroidx/compose/ui/focus/FocusRequesterNode;->onAttach()V +HSPLandroidx/compose/ui/focus/FocusRequesterNode;->onDetach()V +Landroidx/compose/ui/focus/FocusState; +Landroidx/compose/ui/focus/FocusStateImpl; +HSPLandroidx/compose/ui/focus/FocusStateImpl;->$values()[Landroidx/compose/ui/focus/FocusStateImpl; +HSPLandroidx/compose/ui/focus/FocusStateImpl;->()V +HSPLandroidx/compose/ui/focus/FocusStateImpl;->(Ljava/lang/String;I)V +HSPLandroidx/compose/ui/focus/FocusStateImpl;->getHasFocus()Z +HSPLandroidx/compose/ui/focus/FocusStateImpl;->isFocused()Z +HSPLandroidx/compose/ui/focus/FocusStateImpl;->values()[Landroidx/compose/ui/focus/FocusStateImpl; +Landroidx/compose/ui/focus/FocusStateImpl$WhenMappings; +HSPLandroidx/compose/ui/focus/FocusStateImpl$WhenMappings;->()V +Landroidx/compose/ui/focus/FocusTargetModifierNode; +Landroidx/compose/ui/focus/FocusTargetNode; +HSPLandroidx/compose/ui/focus/FocusTargetNode;->()V +HSPLandroidx/compose/ui/focus/FocusTargetNode;->access$isProcessingCustomEnter$p(Landroidx/compose/ui/focus/FocusTargetNode;)Z +HSPLandroidx/compose/ui/focus/FocusTargetNode;->access$setProcessingCustomEnter$p(Landroidx/compose/ui/focus/FocusTargetNode;Z)V +HSPLandroidx/compose/ui/focus/FocusTargetNode;->fetchFocusProperties$ui_release()Landroidx/compose/ui/focus/FocusProperties; +HSPLandroidx/compose/ui/focus/FocusTargetNode;->getFocusState()Landroidx/compose/ui/focus/FocusStateImpl; +HSPLandroidx/compose/ui/focus/FocusTargetNode;->invalidateFocus$ui_release()V +HSPLandroidx/compose/ui/focus/FocusTargetNode;->onReset()V +HSPLandroidx/compose/ui/focus/FocusTargetNode;->scheduleInvalidationForFocusEvents$ui_release()V +HSPLandroidx/compose/ui/focus/FocusTargetNode;->setFocusState(Landroidx/compose/ui/focus/FocusStateImpl;)V +Landroidx/compose/ui/focus/FocusTargetNode$FocusTargetElement; +HSPLandroidx/compose/ui/focus/FocusTargetNode$FocusTargetElement;->()V +HSPLandroidx/compose/ui/focus/FocusTargetNode$FocusTargetElement;->()V +HSPLandroidx/compose/ui/focus/FocusTargetNode$FocusTargetElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/focus/FocusTargetNode$FocusTargetElement;->create()Landroidx/compose/ui/focus/FocusTargetNode; +HSPLandroidx/compose/ui/focus/FocusTargetNode$FocusTargetElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/ui/focus/FocusTargetNode$WhenMappings; +HSPLandroidx/compose/ui/focus/FocusTargetNode$WhenMappings;->()V +Landroidx/compose/ui/focus/FocusTransactionsKt; +HSPLandroidx/compose/ui/focus/FocusTransactionsKt;->clearChildFocus(Landroidx/compose/ui/focus/FocusTargetNode;ZZ)Z +HSPLandroidx/compose/ui/focus/FocusTransactionsKt;->clearFocus(Landroidx/compose/ui/focus/FocusTargetNode;ZZ)Z +HSPLandroidx/compose/ui/focus/FocusTransactionsKt;->grantFocus(Landroidx/compose/ui/focus/FocusTargetNode;)Z +HSPLandroidx/compose/ui/focus/FocusTransactionsKt;->performCustomEnter-Mxy_nc0(Landroidx/compose/ui/focus/FocusTargetNode;I)Landroidx/compose/ui/focus/CustomDestinationResult; +HSPLandroidx/compose/ui/focus/FocusTransactionsKt;->performCustomRequestFocus-Mxy_nc0(Landroidx/compose/ui/focus/FocusTargetNode;I)Landroidx/compose/ui/focus/CustomDestinationResult; +HSPLandroidx/compose/ui/focus/FocusTransactionsKt;->performRequestFocus(Landroidx/compose/ui/focus/FocusTargetNode;)Z +HSPLandroidx/compose/ui/focus/FocusTransactionsKt;->requestFocus(Landroidx/compose/ui/focus/FocusTargetNode;)Z +HSPLandroidx/compose/ui/focus/FocusTransactionsKt;->requestFocusForChild(Landroidx/compose/ui/focus/FocusTargetNode;Landroidx/compose/ui/focus/FocusTargetNode;)Z +HSPLandroidx/compose/ui/focus/FocusTransactionsKt;->requestFocusForOwner(Landroidx/compose/ui/focus/FocusTargetNode;)Z +Landroidx/compose/ui/focus/FocusTransactionsKt$WhenMappings; +HSPLandroidx/compose/ui/focus/FocusTransactionsKt$WhenMappings;->()V +Landroidx/compose/ui/focus/FocusTransactionsKt$grantFocus$1; +HSPLandroidx/compose/ui/focus/FocusTransactionsKt$grantFocus$1;->(Landroidx/compose/ui/focus/FocusTargetNode;)V +HSPLandroidx/compose/ui/focus/FocusTransactionsKt$grantFocus$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/focus/FocusTransactionsKt$grantFocus$1;->invoke()V +Landroidx/compose/ui/focus/FocusTraversalKt; +HSPLandroidx/compose/ui/focus/FocusTraversalKt;->getActiveChild(Landroidx/compose/ui/focus/FocusTargetNode;)Landroidx/compose/ui/focus/FocusTargetNode; +Landroidx/compose/ui/focus/FocusTraversalKt$WhenMappings; +HSPLandroidx/compose/ui/focus/FocusTraversalKt$WhenMappings;->()V +Landroidx/compose/ui/geometry/CornerRadius; +HSPLandroidx/compose/ui/geometry/CornerRadius;->()V +HSPLandroidx/compose/ui/geometry/CornerRadius;->access$getZero$cp()J +HSPLandroidx/compose/ui/geometry/CornerRadius;->constructor-impl(J)J +HSPLandroidx/compose/ui/geometry/CornerRadius;->getX-impl(J)F +HSPLandroidx/compose/ui/geometry/CornerRadius;->getY-impl(J)F +Landroidx/compose/ui/geometry/CornerRadius$Companion; +HSPLandroidx/compose/ui/geometry/CornerRadius$Companion;->()V +HSPLandroidx/compose/ui/geometry/CornerRadius$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/geometry/CornerRadius$Companion;->getZero-kKHJgLs()J +Landroidx/compose/ui/geometry/CornerRadiusKt; +HSPLandroidx/compose/ui/geometry/CornerRadiusKt;->CornerRadius$default(FFILjava/lang/Object;)J +HSPLandroidx/compose/ui/geometry/CornerRadiusKt;->CornerRadius(FF)J +Landroidx/compose/ui/geometry/MutableRect; +HSPLandroidx/compose/ui/geometry/MutableRect;->()V +HSPLandroidx/compose/ui/geometry/MutableRect;->(FFFF)V +HSPLandroidx/compose/ui/geometry/MutableRect;->getBottom()F +HSPLandroidx/compose/ui/geometry/MutableRect;->getLeft()F +HSPLandroidx/compose/ui/geometry/MutableRect;->getRight()F +HSPLandroidx/compose/ui/geometry/MutableRect;->getTop()F +HSPLandroidx/compose/ui/geometry/MutableRect;->intersect(FFFF)V +HSPLandroidx/compose/ui/geometry/MutableRect;->isEmpty()Z +HSPLandroidx/compose/ui/geometry/MutableRect;->setBottom(F)V +HSPLandroidx/compose/ui/geometry/MutableRect;->setLeft(F)V +HSPLandroidx/compose/ui/geometry/MutableRect;->setRight(F)V +HSPLandroidx/compose/ui/geometry/MutableRect;->setTop(F)V +Landroidx/compose/ui/geometry/MutableRectKt; +HSPLandroidx/compose/ui/geometry/MutableRectKt;->toRect(Landroidx/compose/ui/geometry/MutableRect;)Landroidx/compose/ui/geometry/Rect; +Landroidx/compose/ui/geometry/Offset; +HSPLandroidx/compose/ui/geometry/Offset;->()V +HSPLandroidx/compose/ui/geometry/Offset;->(J)V +HSPLandroidx/compose/ui/geometry/Offset;->access$getInfinite$cp()J +HSPLandroidx/compose/ui/geometry/Offset;->access$getUnspecified$cp()J +HSPLandroidx/compose/ui/geometry/Offset;->access$getZero$cp()J +HSPLandroidx/compose/ui/geometry/Offset;->box-impl(J)Landroidx/compose/ui/geometry/Offset; +HSPLandroidx/compose/ui/geometry/Offset;->component1-impl(J)F +HSPLandroidx/compose/ui/geometry/Offset;->component2-impl(J)F +HSPLandroidx/compose/ui/geometry/Offset;->constructor-impl(J)J +HSPLandroidx/compose/ui/geometry/Offset;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/geometry/Offset;->equals-impl(JLjava/lang/Object;)Z +HSPLandroidx/compose/ui/geometry/Offset;->equals-impl0(JJ)Z +HSPLandroidx/compose/ui/geometry/Offset;->getDistance-impl(J)F +HSPLandroidx/compose/ui/geometry/Offset;->getX-impl(J)F +HSPLandroidx/compose/ui/geometry/Offset;->getY-impl(J)F +HSPLandroidx/compose/ui/geometry/Offset;->minus-MK-Hz9U(JJ)J +HSPLandroidx/compose/ui/geometry/Offset;->plus-MK-Hz9U(JJ)J +HSPLandroidx/compose/ui/geometry/Offset;->unaryMinus-F1C5BW0(J)J +HSPLandroidx/compose/ui/geometry/Offset;->unbox-impl()J +Landroidx/compose/ui/geometry/Offset$Companion; +HSPLandroidx/compose/ui/geometry/Offset$Companion;->()V +HSPLandroidx/compose/ui/geometry/Offset$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/geometry/Offset$Companion;->getInfinite-F1C5BW0()J +HSPLandroidx/compose/ui/geometry/Offset$Companion;->getUnspecified-F1C5BW0()J +HSPLandroidx/compose/ui/geometry/Offset$Companion;->getZero-F1C5BW0()J +Landroidx/compose/ui/geometry/OffsetKt; +HSPLandroidx/compose/ui/geometry/OffsetKt;->Offset(FF)J +HSPLandroidx/compose/ui/geometry/OffsetKt;->isFinite-k-4lQ0M(J)Z +HSPLandroidx/compose/ui/geometry/OffsetKt;->isSpecified-k-4lQ0M(J)Z +Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/geometry/Rect;->()V +HSPLandroidx/compose/ui/geometry/Rect;->(FFFF)V +HSPLandroidx/compose/ui/geometry/Rect;->access$getZero$cp()Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/geometry/Rect;->copy$default(Landroidx/compose/ui/geometry/Rect;FFFFILjava/lang/Object;)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/geometry/Rect;->copy(FFFF)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/geometry/Rect;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/geometry/Rect;->getBottom()F +HSPLandroidx/compose/ui/geometry/Rect;->getCenter-F1C5BW0()J +HSPLandroidx/compose/ui/geometry/Rect;->getHeight()F +HSPLandroidx/compose/ui/geometry/Rect;->getLeft()F +HSPLandroidx/compose/ui/geometry/Rect;->getRight()F +HSPLandroidx/compose/ui/geometry/Rect;->getSize-NH-jbRc()J +HSPLandroidx/compose/ui/geometry/Rect;->getTop()F +HSPLandroidx/compose/ui/geometry/Rect;->getTopLeft-F1C5BW0()J +HSPLandroidx/compose/ui/geometry/Rect;->getWidth()F +HSPLandroidx/compose/ui/geometry/Rect;->intersect(Landroidx/compose/ui/geometry/Rect;)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/geometry/Rect;->isEmpty()Z +HSPLandroidx/compose/ui/geometry/Rect;->translate-k-4lQ0M(J)Landroidx/compose/ui/geometry/Rect; +Landroidx/compose/ui/geometry/Rect$Companion; +HSPLandroidx/compose/ui/geometry/Rect$Companion;->()V +HSPLandroidx/compose/ui/geometry/Rect$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/geometry/Rect$Companion;->getZero()Landroidx/compose/ui/geometry/Rect; +Landroidx/compose/ui/geometry/RectKt; +HSPLandroidx/compose/ui/geometry/RectKt;->Rect-tz77jQw(JJ)Landroidx/compose/ui/geometry/Rect; +Landroidx/compose/ui/geometry/RoundRect; +HSPLandroidx/compose/ui/geometry/RoundRect;->()V +HSPLandroidx/compose/ui/geometry/RoundRect;->(FFFFJJJJ)V +HSPLandroidx/compose/ui/geometry/RoundRect;->(FFFFJJJJLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/geometry/RoundRect;->getBottom()F +HSPLandroidx/compose/ui/geometry/RoundRect;->getBottomLeftCornerRadius-kKHJgLs()J +HSPLandroidx/compose/ui/geometry/RoundRect;->getBottomRightCornerRadius-kKHJgLs()J +HSPLandroidx/compose/ui/geometry/RoundRect;->getHeight()F +HSPLandroidx/compose/ui/geometry/RoundRect;->getLeft()F +HSPLandroidx/compose/ui/geometry/RoundRect;->getRight()F +HSPLandroidx/compose/ui/geometry/RoundRect;->getTop()F +HSPLandroidx/compose/ui/geometry/RoundRect;->getTopLeftCornerRadius-kKHJgLs()J +HSPLandroidx/compose/ui/geometry/RoundRect;->getTopRightCornerRadius-kKHJgLs()J +HSPLandroidx/compose/ui/geometry/RoundRect;->getWidth()F +Landroidx/compose/ui/geometry/RoundRect$Companion; +HSPLandroidx/compose/ui/geometry/RoundRect$Companion;->()V +HSPLandroidx/compose/ui/geometry/RoundRect$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/geometry/RoundRectKt; +HSPLandroidx/compose/ui/geometry/RoundRectKt;->RoundRect(FFFFFF)Landroidx/compose/ui/geometry/RoundRect; +HSPLandroidx/compose/ui/geometry/RoundRectKt;->RoundRect-ZAM2FJo(Landroidx/compose/ui/geometry/Rect;JJJJ)Landroidx/compose/ui/geometry/RoundRect; +HSPLandroidx/compose/ui/geometry/RoundRectKt;->RoundRect-gG7oq9Y(FFFFJ)Landroidx/compose/ui/geometry/RoundRect; +HSPLandroidx/compose/ui/geometry/RoundRectKt;->isSimple(Landroidx/compose/ui/geometry/RoundRect;)Z +Landroidx/compose/ui/geometry/Size; +HSPLandroidx/compose/ui/geometry/Size;->()V +HSPLandroidx/compose/ui/geometry/Size;->(J)V +HSPLandroidx/compose/ui/geometry/Size;->access$getUnspecified$cp()J +HSPLandroidx/compose/ui/geometry/Size;->access$getZero$cp()J +HSPLandroidx/compose/ui/geometry/Size;->box-impl(J)Landroidx/compose/ui/geometry/Size; +HSPLandroidx/compose/ui/geometry/Size;->constructor-impl(J)J +HSPLandroidx/compose/ui/geometry/Size;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/geometry/Size;->equals-impl(JLjava/lang/Object;)Z +HSPLandroidx/compose/ui/geometry/Size;->equals-impl0(JJ)Z +HSPLandroidx/compose/ui/geometry/Size;->getHeight-impl(J)F +HSPLandroidx/compose/ui/geometry/Size;->getMinDimension-impl(J)F +HSPLandroidx/compose/ui/geometry/Size;->getWidth-impl(J)F +HSPLandroidx/compose/ui/geometry/Size;->isEmpty-impl(J)Z +HSPLandroidx/compose/ui/geometry/Size;->unbox-impl()J +Landroidx/compose/ui/geometry/Size$Companion; +HSPLandroidx/compose/ui/geometry/Size$Companion;->()V +HSPLandroidx/compose/ui/geometry/Size$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/geometry/Size$Companion;->getUnspecified-NH-jbRc()J +HSPLandroidx/compose/ui/geometry/Size$Companion;->getZero-NH-jbRc()J +Landroidx/compose/ui/geometry/SizeKt; +HSPLandroidx/compose/ui/geometry/SizeKt;->Size(FF)J +HSPLandroidx/compose/ui/geometry/SizeKt;->toRect-uvyYCjk(J)Landroidx/compose/ui/geometry/Rect; +Landroidx/compose/ui/graphics/AndroidBlendMode_androidKt; +HSPLandroidx/compose/ui/graphics/AndroidBlendMode_androidKt;->toAndroidBlendMode-s9anfk8(I)Landroid/graphics/BlendMode; +Landroidx/compose/ui/graphics/AndroidCanvas; +HSPLandroidx/compose/ui/graphics/AndroidCanvas;->()V +HSPLandroidx/compose/ui/graphics/AndroidCanvas;->concat-58bKbWc([F)V +HSPLandroidx/compose/ui/graphics/AndroidCanvas;->drawArc(FFFFFFZLandroidx/compose/ui/graphics/Paint;)V +HSPLandroidx/compose/ui/graphics/AndroidCanvas;->drawImageRect-HPBpro0(Landroidx/compose/ui/graphics/ImageBitmap;JJJJLandroidx/compose/ui/graphics/Paint;)V +HSPLandroidx/compose/ui/graphics/AndroidCanvas;->drawLine-Wko1d7g(JJLandroidx/compose/ui/graphics/Paint;)V +HSPLandroidx/compose/ui/graphics/AndroidCanvas;->drawPath(Landroidx/compose/ui/graphics/Path;Landroidx/compose/ui/graphics/Paint;)V +HSPLandroidx/compose/ui/graphics/AndroidCanvas;->drawRect(FFFFLandroidx/compose/ui/graphics/Paint;)V +HSPLandroidx/compose/ui/graphics/AndroidCanvas;->drawRoundRect(FFFFFFLandroidx/compose/ui/graphics/Paint;)V +HSPLandroidx/compose/ui/graphics/AndroidCanvas;->getInternalCanvas()Landroid/graphics/Canvas; +HSPLandroidx/compose/ui/graphics/AndroidCanvas;->restore()V +HSPLandroidx/compose/ui/graphics/AndroidCanvas;->save()V +HSPLandroidx/compose/ui/graphics/AndroidCanvas;->saveLayer(Landroidx/compose/ui/geometry/Rect;Landroidx/compose/ui/graphics/Paint;)V +HSPLandroidx/compose/ui/graphics/AndroidCanvas;->setInternalCanvas(Landroid/graphics/Canvas;)V +HSPLandroidx/compose/ui/graphics/AndroidCanvas;->translate(FF)V +Landroidx/compose/ui/graphics/AndroidCanvas_androidKt; +HSPLandroidx/compose/ui/graphics/AndroidCanvas_androidKt;->()V +HSPLandroidx/compose/ui/graphics/AndroidCanvas_androidKt;->ActualCanvas(Landroidx/compose/ui/graphics/ImageBitmap;)Landroidx/compose/ui/graphics/Canvas; +HSPLandroidx/compose/ui/graphics/AndroidCanvas_androidKt;->access$getEmptyCanvas$p()Landroid/graphics/Canvas; +HSPLandroidx/compose/ui/graphics/AndroidCanvas_androidKt;->getNativeCanvas(Landroidx/compose/ui/graphics/Canvas;)Landroid/graphics/Canvas; +Landroidx/compose/ui/graphics/AndroidColorFilter_androidKt; +HSPLandroidx/compose/ui/graphics/AndroidColorFilter_androidKt;->actualTintColorFilter-xETnrds(JI)Landroidx/compose/ui/graphics/ColorFilter; +HSPLandroidx/compose/ui/graphics/AndroidColorFilter_androidKt;->asAndroidColorFilter(Landroidx/compose/ui/graphics/ColorFilter;)Landroid/graphics/ColorFilter; +Landroidx/compose/ui/graphics/AndroidColorSpace_androidKt; +HSPLandroidx/compose/ui/graphics/AndroidColorSpace_androidKt;->toAndroidColorSpace(Landroidx/compose/ui/graphics/colorspace/ColorSpace;)Landroid/graphics/ColorSpace; +Landroidx/compose/ui/graphics/AndroidImageBitmap; +HSPLandroidx/compose/ui/graphics/AndroidImageBitmap;->(Landroid/graphics/Bitmap;)V +HSPLandroidx/compose/ui/graphics/AndroidImageBitmap;->getBitmap$ui_graphics_release()Landroid/graphics/Bitmap; +HSPLandroidx/compose/ui/graphics/AndroidImageBitmap;->getHeight()I +HSPLandroidx/compose/ui/graphics/AndroidImageBitmap;->getWidth()I +HSPLandroidx/compose/ui/graphics/AndroidImageBitmap;->prepareToDraw()V +Landroidx/compose/ui/graphics/AndroidImageBitmap_androidKt; +HSPLandroidx/compose/ui/graphics/AndroidImageBitmap_androidKt;->ActualImageBitmap-x__-hDU(IIIZLandroidx/compose/ui/graphics/colorspace/ColorSpace;)Landroidx/compose/ui/graphics/ImageBitmap; +HSPLandroidx/compose/ui/graphics/AndroidImageBitmap_androidKt;->asAndroidBitmap(Landroidx/compose/ui/graphics/ImageBitmap;)Landroid/graphics/Bitmap; +HSPLandroidx/compose/ui/graphics/AndroidImageBitmap_androidKt;->toBitmapConfig-1JJdX4A(I)Landroid/graphics/Bitmap$Config; +Landroidx/compose/ui/graphics/AndroidMatrixConversions_androidKt; +HSPLandroidx/compose/ui/graphics/AndroidMatrixConversions_androidKt;->setFrom-EL8BTi8(Landroid/graphics/Matrix;[F)V +HSPLandroidx/compose/ui/graphics/AndroidMatrixConversions_androidKt;->setFrom-tU-YjHk([FLandroid/graphics/Matrix;)V +Landroidx/compose/ui/graphics/AndroidPaint; +HSPLandroidx/compose/ui/graphics/AndroidPaint;->()V +HSPLandroidx/compose/ui/graphics/AndroidPaint;->(Landroid/graphics/Paint;)V +HSPLandroidx/compose/ui/graphics/AndroidPaint;->asFrameworkPaint()Landroid/graphics/Paint; +HSPLandroidx/compose/ui/graphics/AndroidPaint;->getAlpha()F +HSPLandroidx/compose/ui/graphics/AndroidPaint;->getBlendMode-0nO6VwU()I +HSPLandroidx/compose/ui/graphics/AndroidPaint;->getColor-0d7_KjU()J +HSPLandroidx/compose/ui/graphics/AndroidPaint;->getColorFilter()Landroidx/compose/ui/graphics/ColorFilter; +HSPLandroidx/compose/ui/graphics/AndroidPaint;->getFilterQuality-f-v9h1I()I +HSPLandroidx/compose/ui/graphics/AndroidPaint;->getPathEffect()Landroidx/compose/ui/graphics/PathEffect; +HSPLandroidx/compose/ui/graphics/AndroidPaint;->getShader()Landroid/graphics/Shader; +HSPLandroidx/compose/ui/graphics/AndroidPaint;->getStrokeCap-KaPHkGw()I +HSPLandroidx/compose/ui/graphics/AndroidPaint;->getStrokeJoin-LxFBmk8()I +HSPLandroidx/compose/ui/graphics/AndroidPaint;->getStrokeMiterLimit()F +HSPLandroidx/compose/ui/graphics/AndroidPaint;->getStrokeWidth()F +HSPLandroidx/compose/ui/graphics/AndroidPaint;->setAlpha(F)V +HSPLandroidx/compose/ui/graphics/AndroidPaint;->setAntiAlias(Z)V +HSPLandroidx/compose/ui/graphics/AndroidPaint;->setBlendMode-s9anfk8(I)V +HSPLandroidx/compose/ui/graphics/AndroidPaint;->setColor-8_81llA(J)V +HSPLandroidx/compose/ui/graphics/AndroidPaint;->setColorFilter(Landroidx/compose/ui/graphics/ColorFilter;)V +HSPLandroidx/compose/ui/graphics/AndroidPaint;->setShader(Landroid/graphics/Shader;)V +HSPLandroidx/compose/ui/graphics/AndroidPaint;->setStrokeCap-BeK7IIE(I)V +HSPLandroidx/compose/ui/graphics/AndroidPaint;->setStrokeWidth(F)V +HSPLandroidx/compose/ui/graphics/AndroidPaint;->setStyle-k9PVt8s(I)V +Landroidx/compose/ui/graphics/AndroidPaint_androidKt; +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->Paint()Landroidx/compose/ui/graphics/Paint; +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->asComposePaint(Landroid/graphics/Paint;)Landroidx/compose/ui/graphics/Paint; +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->getNativeAlpha(Landroid/graphics/Paint;)F +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->getNativeColor(Landroid/graphics/Paint;)J +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->getNativeFilterQuality(Landroid/graphics/Paint;)I +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->getNativeStrokeCap(Landroid/graphics/Paint;)I +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->getNativeStrokeJoin(Landroid/graphics/Paint;)I +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->getNativeStrokeMiterLimit(Landroid/graphics/Paint;)F +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->getNativeStrokeWidth(Landroid/graphics/Paint;)F +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->makeNativePaint()Landroid/graphics/Paint; +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->setNativeAlpha(Landroid/graphics/Paint;F)V +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->setNativeAntiAlias(Landroid/graphics/Paint;Z)V +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->setNativeBlendMode-GB0RdKg(Landroid/graphics/Paint;I)V +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->setNativeColor-4WTKRHQ(Landroid/graphics/Paint;J)V +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->setNativeColorFilter(Landroid/graphics/Paint;Landroidx/compose/ui/graphics/ColorFilter;)V +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->setNativeShader(Landroid/graphics/Paint;Landroid/graphics/Shader;)V +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->setNativeStrokeCap-CSYIeUk(Landroid/graphics/Paint;I)V +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->setNativeStrokeWidth(Landroid/graphics/Paint;F)V +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->setNativeStyle--5YerkU(Landroid/graphics/Paint;I)V +Landroidx/compose/ui/graphics/AndroidPaint_androidKt$WhenMappings; +HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt$WhenMappings;->()V +Landroidx/compose/ui/graphics/AndroidPath; +HSPLandroidx/compose/ui/graphics/AndroidPath;->(Landroid/graphics/Path;)V +HSPLandroidx/compose/ui/graphics/AndroidPath;->(Landroid/graphics/Path;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/AndroidPath;->addRoundRect(Landroidx/compose/ui/geometry/RoundRect;)V +HSPLandroidx/compose/ui/graphics/AndroidPath;->close()V +HSPLandroidx/compose/ui/graphics/AndroidPath;->cubicTo(FFFFFF)V +HSPLandroidx/compose/ui/graphics/AndroidPath;->getFillType-Rg-k1Os()I +HSPLandroidx/compose/ui/graphics/AndroidPath;->getInternalPath()Landroid/graphics/Path; +HSPLandroidx/compose/ui/graphics/AndroidPath;->lineTo(FF)V +HSPLandroidx/compose/ui/graphics/AndroidPath;->moveTo(FF)V +HSPLandroidx/compose/ui/graphics/AndroidPath;->relativeCubicTo(FFFFFF)V +HSPLandroidx/compose/ui/graphics/AndroidPath;->relativeLineTo(FF)V +HSPLandroidx/compose/ui/graphics/AndroidPath;->relativeMoveTo(FF)V +HSPLandroidx/compose/ui/graphics/AndroidPath;->reset()V +HSPLandroidx/compose/ui/graphics/AndroidPath;->rewind()V +HSPLandroidx/compose/ui/graphics/AndroidPath;->setFillType-oQ8Xj4U(I)V +Landroidx/compose/ui/graphics/AndroidPathMeasure; +HSPLandroidx/compose/ui/graphics/AndroidPathMeasure;->(Landroid/graphics/PathMeasure;)V +HSPLandroidx/compose/ui/graphics/AndroidPathMeasure;->getLength()F +HSPLandroidx/compose/ui/graphics/AndroidPathMeasure;->getSegment(FFLandroidx/compose/ui/graphics/Path;Z)Z +HSPLandroidx/compose/ui/graphics/AndroidPathMeasure;->setPath(Landroidx/compose/ui/graphics/Path;Z)V +Landroidx/compose/ui/graphics/AndroidPathMeasure_androidKt; +HSPLandroidx/compose/ui/graphics/AndroidPathMeasure_androidKt;->PathMeasure()Landroidx/compose/ui/graphics/PathMeasure; +Landroidx/compose/ui/graphics/AndroidPath_androidKt; +HSPLandroidx/compose/ui/graphics/AndroidPath_androidKt;->Path()Landroidx/compose/ui/graphics/Path; +Landroidx/compose/ui/graphics/AndroidShader_androidKt; +HSPLandroidx/compose/ui/graphics/AndroidShader_androidKt;->ActualLinearGradientShader-VjE6UOU(JJLjava/util/List;Ljava/util/List;I)Landroid/graphics/Shader; +HSPLandroidx/compose/ui/graphics/AndroidShader_androidKt;->countTransparentColors(Ljava/util/List;)I +HSPLandroidx/compose/ui/graphics/AndroidShader_androidKt;->makeTransparentColors(Ljava/util/List;I)[I +HSPLandroidx/compose/ui/graphics/AndroidShader_androidKt;->makeTransparentStops(Ljava/util/List;Ljava/util/List;I)[F +HSPLandroidx/compose/ui/graphics/AndroidShader_androidKt;->validateColorStops(Ljava/util/List;Ljava/util/List;)V +Landroidx/compose/ui/graphics/AndroidTileMode_androidKt; +HSPLandroidx/compose/ui/graphics/AndroidTileMode_androidKt;->toAndroidTileMode-0vamqd0(I)Landroid/graphics/Shader$TileMode; +Landroidx/compose/ui/graphics/Api26Bitmap; +HSPLandroidx/compose/ui/graphics/Api26Bitmap;->()V +HSPLandroidx/compose/ui/graphics/Api26Bitmap;->()V +HSPLandroidx/compose/ui/graphics/Api26Bitmap;->createBitmap-x__-hDU$ui_graphics_release(IIIZLandroidx/compose/ui/graphics/colorspace/ColorSpace;)Landroid/graphics/Bitmap; +Landroidx/compose/ui/graphics/BlendMode; +HSPLandroidx/compose/ui/graphics/BlendMode;->()V +HSPLandroidx/compose/ui/graphics/BlendMode;->(I)V +HSPLandroidx/compose/ui/graphics/BlendMode;->access$getClear$cp()I +HSPLandroidx/compose/ui/graphics/BlendMode;->access$getDst$cp()I +HSPLandroidx/compose/ui/graphics/BlendMode;->access$getDstIn$cp()I +HSPLandroidx/compose/ui/graphics/BlendMode;->access$getDstOver$cp()I +HSPLandroidx/compose/ui/graphics/BlendMode;->access$getSrc$cp()I +HSPLandroidx/compose/ui/graphics/BlendMode;->access$getSrcIn$cp()I +HSPLandroidx/compose/ui/graphics/BlendMode;->access$getSrcOver$cp()I +HSPLandroidx/compose/ui/graphics/BlendMode;->box-impl(I)Landroidx/compose/ui/graphics/BlendMode; +HSPLandroidx/compose/ui/graphics/BlendMode;->constructor-impl(I)I +HSPLandroidx/compose/ui/graphics/BlendMode;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/graphics/BlendMode;->equals-impl(ILjava/lang/Object;)Z +HSPLandroidx/compose/ui/graphics/BlendMode;->equals-impl0(II)Z +HSPLandroidx/compose/ui/graphics/BlendMode;->hashCode-impl(I)I +HSPLandroidx/compose/ui/graphics/BlendMode;->unbox-impl()I +Landroidx/compose/ui/graphics/BlendMode$Companion; +HSPLandroidx/compose/ui/graphics/BlendMode$Companion;->()V +HSPLandroidx/compose/ui/graphics/BlendMode$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/BlendMode$Companion;->getClear-0nO6VwU()I +HSPLandroidx/compose/ui/graphics/BlendMode$Companion;->getDst-0nO6VwU()I +HSPLandroidx/compose/ui/graphics/BlendMode$Companion;->getDstIn-0nO6VwU()I +HSPLandroidx/compose/ui/graphics/BlendMode$Companion;->getDstOver-0nO6VwU()I +HSPLandroidx/compose/ui/graphics/BlendMode$Companion;->getSrc-0nO6VwU()I +HSPLandroidx/compose/ui/graphics/BlendMode$Companion;->getSrcIn-0nO6VwU()I +HSPLandroidx/compose/ui/graphics/BlendMode$Companion;->getSrcOver-0nO6VwU()I +Landroidx/compose/ui/graphics/BlendModeColorFilterHelper; +HSPLandroidx/compose/ui/graphics/BlendModeColorFilterHelper;->()V +HSPLandroidx/compose/ui/graphics/BlendModeColorFilterHelper;->()V +HSPLandroidx/compose/ui/graphics/BlendModeColorFilterHelper;->BlendModeColorFilter-xETnrds(JI)Landroid/graphics/BlendModeColorFilter; +Landroidx/compose/ui/graphics/BlockGraphicsLayerElement; +HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerElement;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerElement;->create()Landroidx/compose/ui/graphics/BlockGraphicsLayerModifier; +HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerElement;->update(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerElement;->update(Landroidx/compose/ui/graphics/BlockGraphicsLayerModifier;)V +Landroidx/compose/ui/graphics/BlockGraphicsLayerModifier; +HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerModifier;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerModifier;->getLayerBlock()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerModifier;->getShouldAutoInvalidate()Z +HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerModifier;->invalidateLayerBlock()V +HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerModifier;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerModifier;->setLayerBlock(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/ui/graphics/BlockGraphicsLayerModifier$measure$1; +HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerModifier$measure$1;->(Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/graphics/BlockGraphicsLayerModifier;)V +HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerModifier$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerModifier$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/Brush; +HSPLandroidx/compose/ui/graphics/Brush;->()V +HSPLandroidx/compose/ui/graphics/Brush;->()V +HSPLandroidx/compose/ui/graphics/Brush;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/graphics/Brush$Companion; +HSPLandroidx/compose/ui/graphics/Brush$Companion;->()V +HSPLandroidx/compose/ui/graphics/Brush$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/graphics/Canvas; +Landroidx/compose/ui/graphics/CanvasHolder; +HSPLandroidx/compose/ui/graphics/CanvasHolder;->()V +HSPLandroidx/compose/ui/graphics/CanvasHolder;->getAndroidCanvas()Landroidx/compose/ui/graphics/AndroidCanvas; +Landroidx/compose/ui/graphics/CanvasKt; +HSPLandroidx/compose/ui/graphics/CanvasKt;->Canvas(Landroidx/compose/ui/graphics/ImageBitmap;)Landroidx/compose/ui/graphics/Canvas; +Landroidx/compose/ui/graphics/Color; +HSPLandroidx/compose/ui/graphics/Color;->()V +HSPLandroidx/compose/ui/graphics/Color;->(J)V +HSPLandroidx/compose/ui/graphics/Color;->access$getBlack$cp()J +HSPLandroidx/compose/ui/graphics/Color;->access$getBlue$cp()J +HSPLandroidx/compose/ui/graphics/Color;->access$getGray$cp()J +HSPLandroidx/compose/ui/graphics/Color;->access$getRed$cp()J +HSPLandroidx/compose/ui/graphics/Color;->access$getTransparent$cp()J +HSPLandroidx/compose/ui/graphics/Color;->access$getUnspecified$cp()J +HSPLandroidx/compose/ui/graphics/Color;->access$getWhite$cp()J +HSPLandroidx/compose/ui/graphics/Color;->box-impl(J)Landroidx/compose/ui/graphics/Color; +HSPLandroidx/compose/ui/graphics/Color;->component1-impl(J)F +HSPLandroidx/compose/ui/graphics/Color;->component2-impl(J)F +HSPLandroidx/compose/ui/graphics/Color;->component3-impl(J)F +HSPLandroidx/compose/ui/graphics/Color;->component4-impl(J)F +HSPLandroidx/compose/ui/graphics/Color;->constructor-impl(J)J +HSPLandroidx/compose/ui/graphics/Color;->convert-vNxB06k(JLandroidx/compose/ui/graphics/colorspace/ColorSpace;)J +HSPLandroidx/compose/ui/graphics/Color;->copy-wmQWz5c$default(JFFFFILjava/lang/Object;)J +HSPLandroidx/compose/ui/graphics/Color;->copy-wmQWz5c(JFFFF)J +HSPLandroidx/compose/ui/graphics/Color;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/graphics/Color;->equals-impl(JLjava/lang/Object;)Z +HSPLandroidx/compose/ui/graphics/Color;->equals-impl0(JJ)Z +HSPLandroidx/compose/ui/graphics/Color;->getAlpha-impl(J)F +HSPLandroidx/compose/ui/graphics/Color;->getBlue-impl(J)F +HSPLandroidx/compose/ui/graphics/Color;->getColorSpace-impl(J)Landroidx/compose/ui/graphics/colorspace/ColorSpace; +HSPLandroidx/compose/ui/graphics/Color;->getGreen-impl(J)F +HSPLandroidx/compose/ui/graphics/Color;->getRed-impl(J)F +HSPLandroidx/compose/ui/graphics/Color;->hashCode-impl(J)I +HSPLandroidx/compose/ui/graphics/Color;->unbox-impl()J +Landroidx/compose/ui/graphics/Color$Companion; +HSPLandroidx/compose/ui/graphics/Color$Companion;->()V +HSPLandroidx/compose/ui/graphics/Color$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/Color$Companion;->getBlack-0d7_KjU()J +HSPLandroidx/compose/ui/graphics/Color$Companion;->getBlue-0d7_KjU()J +HSPLandroidx/compose/ui/graphics/Color$Companion;->getGray-0d7_KjU()J +HSPLandroidx/compose/ui/graphics/Color$Companion;->getRed-0d7_KjU()J +HSPLandroidx/compose/ui/graphics/Color$Companion;->getTransparent-0d7_KjU()J +HSPLandroidx/compose/ui/graphics/Color$Companion;->getUnspecified-0d7_KjU()J +HSPLandroidx/compose/ui/graphics/Color$Companion;->getWhite-0d7_KjU()J +HSPLandroidx/compose/ui/graphics/Color$Companion;->hsv-JlNiLsg$default(Landroidx/compose/ui/graphics/Color$Companion;FFFFLandroidx/compose/ui/graphics/colorspace/Rgb;ILjava/lang/Object;)J +HSPLandroidx/compose/ui/graphics/Color$Companion;->hsv-JlNiLsg(FFFFLandroidx/compose/ui/graphics/colorspace/Rgb;)J +HSPLandroidx/compose/ui/graphics/Color$Companion;->hsvToRgbComponent(IFFF)F +Landroidx/compose/ui/graphics/ColorFilter; +HSPLandroidx/compose/ui/graphics/ColorFilter;->()V +HSPLandroidx/compose/ui/graphics/ColorFilter;->(Landroid/graphics/ColorFilter;)V +HSPLandroidx/compose/ui/graphics/ColorFilter;->getNativeColorFilter$ui_graphics_release()Landroid/graphics/ColorFilter; +Landroidx/compose/ui/graphics/ColorFilter$Companion; +HSPLandroidx/compose/ui/graphics/ColorFilter$Companion;->()V +HSPLandroidx/compose/ui/graphics/ColorFilter$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/ColorFilter$Companion;->tint-xETnrds$default(Landroidx/compose/ui/graphics/ColorFilter$Companion;JIILjava/lang/Object;)Landroidx/compose/ui/graphics/ColorFilter; +HSPLandroidx/compose/ui/graphics/ColorFilter$Companion;->tint-xETnrds(JI)Landroidx/compose/ui/graphics/ColorFilter; +Landroidx/compose/ui/graphics/ColorKt; +HSPLandroidx/compose/ui/graphics/ColorKt;->Color$default(FFFFLandroidx/compose/ui/graphics/colorspace/ColorSpace;ILjava/lang/Object;)J +HSPLandroidx/compose/ui/graphics/ColorKt;->Color$default(IIIIILjava/lang/Object;)J +HSPLandroidx/compose/ui/graphics/ColorKt;->Color(FFFFLandroidx/compose/ui/graphics/colorspace/ColorSpace;)J +HSPLandroidx/compose/ui/graphics/ColorKt;->Color(I)J +HSPLandroidx/compose/ui/graphics/ColorKt;->Color(IIII)J +HSPLandroidx/compose/ui/graphics/ColorKt;->Color(J)J +HSPLandroidx/compose/ui/graphics/ColorKt;->compositeOver--OWjLjI(JJ)J +HSPLandroidx/compose/ui/graphics/ColorKt;->lerp-jxsXWHM(JJF)J +HSPLandroidx/compose/ui/graphics/ColorKt;->luminance-8_81llA(J)F +HSPLandroidx/compose/ui/graphics/ColorKt;->saturate(F)F +HSPLandroidx/compose/ui/graphics/ColorKt;->toArgb-8_81llA(J)I +Landroidx/compose/ui/graphics/ColorProducer; +Landroidx/compose/ui/graphics/ColorSpaceVerificationHelper; +HSPLandroidx/compose/ui/graphics/ColorSpaceVerificationHelper;->()V +HSPLandroidx/compose/ui/graphics/ColorSpaceVerificationHelper;->()V +HSPLandroidx/compose/ui/graphics/ColorSpaceVerificationHelper;->androidColorSpace(Landroidx/compose/ui/graphics/colorspace/ColorSpace;)Landroid/graphics/ColorSpace; +Landroidx/compose/ui/graphics/CompositingStrategy; +HSPLandroidx/compose/ui/graphics/CompositingStrategy;->()V +HSPLandroidx/compose/ui/graphics/CompositingStrategy;->access$getAuto$cp()I +HSPLandroidx/compose/ui/graphics/CompositingStrategy;->access$getModulateAlpha$cp()I +HSPLandroidx/compose/ui/graphics/CompositingStrategy;->access$getOffscreen$cp()I +HSPLandroidx/compose/ui/graphics/CompositingStrategy;->constructor-impl(I)I +HSPLandroidx/compose/ui/graphics/CompositingStrategy;->equals-impl0(II)Z +Landroidx/compose/ui/graphics/CompositingStrategy$Companion; +HSPLandroidx/compose/ui/graphics/CompositingStrategy$Companion;->()V +HSPLandroidx/compose/ui/graphics/CompositingStrategy$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/CompositingStrategy$Companion;->getAuto--NrFUSI()I +HSPLandroidx/compose/ui/graphics/CompositingStrategy$Companion;->getModulateAlpha--NrFUSI()I +HSPLandroidx/compose/ui/graphics/CompositingStrategy$Companion;->getOffscreen--NrFUSI()I +Landroidx/compose/ui/graphics/FilterQuality; +HSPLandroidx/compose/ui/graphics/FilterQuality;->()V +HSPLandroidx/compose/ui/graphics/FilterQuality;->access$getLow$cp()I +HSPLandroidx/compose/ui/graphics/FilterQuality;->constructor-impl(I)I +HSPLandroidx/compose/ui/graphics/FilterQuality;->equals-impl0(II)Z +Landroidx/compose/ui/graphics/FilterQuality$Companion; +HSPLandroidx/compose/ui/graphics/FilterQuality$Companion;->()V +HSPLandroidx/compose/ui/graphics/FilterQuality$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/FilterQuality$Companion;->getLow-f-v9h1I()I +Landroidx/compose/ui/graphics/Float16; +HSPLandroidx/compose/ui/graphics/Float16;->()V +HSPLandroidx/compose/ui/graphics/Float16;->constructor-impl(F)S +HSPLandroidx/compose/ui/graphics/Float16;->constructor-impl(S)S +HSPLandroidx/compose/ui/graphics/Float16;->toFloat-impl(S)F +Landroidx/compose/ui/graphics/Float16$Companion; +HSPLandroidx/compose/ui/graphics/Float16$Companion;->()V +HSPLandroidx/compose/ui/graphics/Float16$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/Float16$Companion;->access$floatToHalf(Landroidx/compose/ui/graphics/Float16$Companion;F)S +HSPLandroidx/compose/ui/graphics/Float16$Companion;->floatToHalf(F)S +Landroidx/compose/ui/graphics/GraphicsLayerElement; +HSPLandroidx/compose/ui/graphics/GraphicsLayerElement;->(FFFFFFFFFFJLandroidx/compose/ui/graphics/Shape;ZLandroidx/compose/ui/graphics/RenderEffect;JJI)V +HSPLandroidx/compose/ui/graphics/GraphicsLayerElement;->(FFFFFFFFFFJLandroidx/compose/ui/graphics/Shape;ZLandroidx/compose/ui/graphics/RenderEffect;JJILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/GraphicsLayerElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/graphics/GraphicsLayerElement;->create()Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier; +HSPLandroidx/compose/ui/graphics/GraphicsLayerElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/ui/graphics/GraphicsLayerModifierKt; +HSPLandroidx/compose/ui/graphics/GraphicsLayerModifierKt;->graphicsLayer(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/graphics/GraphicsLayerModifierKt;->graphicsLayer-Ap8cVGQ$default(Landroidx/compose/ui/Modifier;FFFFFFFFFFJLandroidx/compose/ui/graphics/Shape;ZLandroidx/compose/ui/graphics/RenderEffect;JJIILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/graphics/GraphicsLayerModifierKt;->graphicsLayer-Ap8cVGQ(Landroidx/compose/ui/Modifier;FFFFFFFFFFJLandroidx/compose/ui/graphics/Shape;ZLandroidx/compose/ui/graphics/RenderEffect;JJI)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/graphics/GraphicsLayerModifierKt;->toolingGraphicsLayer(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/graphics/GraphicsLayerScope; +Landroidx/compose/ui/graphics/GraphicsLayerScopeKt; +HSPLandroidx/compose/ui/graphics/GraphicsLayerScopeKt;->()V +HSPLandroidx/compose/ui/graphics/GraphicsLayerScopeKt;->getDefaultShadowColor()J +Landroidx/compose/ui/graphics/ImageBitmap; +Landroidx/compose/ui/graphics/ImageBitmapConfig; +HSPLandroidx/compose/ui/graphics/ImageBitmapConfig;->()V +HSPLandroidx/compose/ui/graphics/ImageBitmapConfig;->access$getArgb8888$cp()I +HSPLandroidx/compose/ui/graphics/ImageBitmapConfig;->constructor-impl(I)I +HSPLandroidx/compose/ui/graphics/ImageBitmapConfig;->equals-impl0(II)Z +Landroidx/compose/ui/graphics/ImageBitmapConfig$Companion; +HSPLandroidx/compose/ui/graphics/ImageBitmapConfig$Companion;->()V +HSPLandroidx/compose/ui/graphics/ImageBitmapConfig$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/ImageBitmapConfig$Companion;->getArgb8888-_sVssgQ()I +Landroidx/compose/ui/graphics/ImageBitmapKt; +HSPLandroidx/compose/ui/graphics/ImageBitmapKt;->ImageBitmap-x__-hDU$default(IIIZLandroidx/compose/ui/graphics/colorspace/ColorSpace;ILjava/lang/Object;)Landroidx/compose/ui/graphics/ImageBitmap; +HSPLandroidx/compose/ui/graphics/ImageBitmapKt;->ImageBitmap-x__-hDU(IIIZLandroidx/compose/ui/graphics/colorspace/ColorSpace;)Landroidx/compose/ui/graphics/ImageBitmap; +Landroidx/compose/ui/graphics/Matrix; +HSPLandroidx/compose/ui/graphics/Matrix;->()V +HSPLandroidx/compose/ui/graphics/Matrix;->([F)V +HSPLandroidx/compose/ui/graphics/Matrix;->box-impl([F)Landroidx/compose/ui/graphics/Matrix; +HSPLandroidx/compose/ui/graphics/Matrix;->constructor-impl$default([FILkotlin/jvm/internal/DefaultConstructorMarker;)[F +HSPLandroidx/compose/ui/graphics/Matrix;->constructor-impl([F)[F +HSPLandroidx/compose/ui/graphics/Matrix;->map-MK-Hz9U([FJ)J +HSPLandroidx/compose/ui/graphics/Matrix;->map-impl([FLandroidx/compose/ui/geometry/MutableRect;)V +HSPLandroidx/compose/ui/graphics/Matrix;->reset-impl([F)V +HSPLandroidx/compose/ui/graphics/Matrix;->rotateZ-impl([FF)V +HSPLandroidx/compose/ui/graphics/Matrix;->scale-impl([FFFF)V +HSPLandroidx/compose/ui/graphics/Matrix;->translate-impl$default([FFFFILjava/lang/Object;)V +HSPLandroidx/compose/ui/graphics/Matrix;->translate-impl([FFFF)V +HSPLandroidx/compose/ui/graphics/Matrix;->unbox-impl()[F +Landroidx/compose/ui/graphics/Matrix$Companion; +HSPLandroidx/compose/ui/graphics/Matrix$Companion;->()V +HSPLandroidx/compose/ui/graphics/Matrix$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/graphics/MatrixKt; +HSPLandroidx/compose/ui/graphics/MatrixKt;->isIdentity-58bKbWc([F)Z +Landroidx/compose/ui/graphics/Outline; +HSPLandroidx/compose/ui/graphics/Outline;->()V +HSPLandroidx/compose/ui/graphics/Outline;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/graphics/Outline$Generic; +Landroidx/compose/ui/graphics/Outline$Rectangle; +HSPLandroidx/compose/ui/graphics/Outline$Rectangle;->(Landroidx/compose/ui/geometry/Rect;)V +HSPLandroidx/compose/ui/graphics/Outline$Rectangle;->getRect()Landroidx/compose/ui/geometry/Rect; +Landroidx/compose/ui/graphics/Outline$Rounded; +HSPLandroidx/compose/ui/graphics/Outline$Rounded;->(Landroidx/compose/ui/geometry/RoundRect;)V +HSPLandroidx/compose/ui/graphics/Outline$Rounded;->getRoundRect()Landroidx/compose/ui/geometry/RoundRect; +HSPLandroidx/compose/ui/graphics/Outline$Rounded;->getRoundRectPath$ui_graphics_release()Landroidx/compose/ui/graphics/Path; +Landroidx/compose/ui/graphics/OutlineKt; +HSPLandroidx/compose/ui/graphics/OutlineKt;->access$hasSameCornerRadius(Landroidx/compose/ui/geometry/RoundRect;)Z +HSPLandroidx/compose/ui/graphics/OutlineKt;->drawOutline-wDX37Ww$default(Landroidx/compose/ui/graphics/drawscope/DrawScope;Landroidx/compose/ui/graphics/Outline;JFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;IILjava/lang/Object;)V +HSPLandroidx/compose/ui/graphics/OutlineKt;->drawOutline-wDX37Ww(Landroidx/compose/ui/graphics/drawscope/DrawScope;Landroidx/compose/ui/graphics/Outline;JFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;I)V +HSPLandroidx/compose/ui/graphics/OutlineKt;->hasSameCornerRadius(Landroidx/compose/ui/geometry/RoundRect;)Z +HSPLandroidx/compose/ui/graphics/OutlineKt;->size(Landroidx/compose/ui/geometry/RoundRect;)J +HSPLandroidx/compose/ui/graphics/OutlineKt;->topLeft(Landroidx/compose/ui/geometry/RoundRect;)J +Landroidx/compose/ui/graphics/Paint; +Landroidx/compose/ui/graphics/PaintingStyle; +HSPLandroidx/compose/ui/graphics/PaintingStyle;->()V +HSPLandroidx/compose/ui/graphics/PaintingStyle;->access$getFill$cp()I +HSPLandroidx/compose/ui/graphics/PaintingStyle;->access$getStroke$cp()I +HSPLandroidx/compose/ui/graphics/PaintingStyle;->constructor-impl(I)I +HSPLandroidx/compose/ui/graphics/PaintingStyle;->equals-impl0(II)Z +Landroidx/compose/ui/graphics/PaintingStyle$Companion; +HSPLandroidx/compose/ui/graphics/PaintingStyle$Companion;->()V +HSPLandroidx/compose/ui/graphics/PaintingStyle$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/PaintingStyle$Companion;->getFill-TiuSbCo()I +HSPLandroidx/compose/ui/graphics/PaintingStyle$Companion;->getStroke-TiuSbCo()I +Landroidx/compose/ui/graphics/Path; +HSPLandroidx/compose/ui/graphics/Path;->()V +Landroidx/compose/ui/graphics/Path$Companion; +HSPLandroidx/compose/ui/graphics/Path$Companion;->()V +HSPLandroidx/compose/ui/graphics/Path$Companion;->()V +Landroidx/compose/ui/graphics/PathEffect; +Landroidx/compose/ui/graphics/PathFillType; +HSPLandroidx/compose/ui/graphics/PathFillType;->()V +HSPLandroidx/compose/ui/graphics/PathFillType;->(I)V +HSPLandroidx/compose/ui/graphics/PathFillType;->access$getEvenOdd$cp()I +HSPLandroidx/compose/ui/graphics/PathFillType;->access$getNonZero$cp()I +HSPLandroidx/compose/ui/graphics/PathFillType;->box-impl(I)Landroidx/compose/ui/graphics/PathFillType; +HSPLandroidx/compose/ui/graphics/PathFillType;->constructor-impl(I)I +HSPLandroidx/compose/ui/graphics/PathFillType;->equals-impl0(II)Z +HSPLandroidx/compose/ui/graphics/PathFillType;->hashCode-impl(I)I +HSPLandroidx/compose/ui/graphics/PathFillType;->unbox-impl()I +Landroidx/compose/ui/graphics/PathFillType$Companion; +HSPLandroidx/compose/ui/graphics/PathFillType$Companion;->()V +HSPLandroidx/compose/ui/graphics/PathFillType$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/PathFillType$Companion;->getEvenOdd-Rg-k1Os()I +HSPLandroidx/compose/ui/graphics/PathFillType$Companion;->getNonZero-Rg-k1Os()I +Landroidx/compose/ui/graphics/PathMeasure; +Landroidx/compose/ui/graphics/RectangleShapeKt; +HSPLandroidx/compose/ui/graphics/RectangleShapeKt;->()V +HSPLandroidx/compose/ui/graphics/RectangleShapeKt;->getRectangleShape()Landroidx/compose/ui/graphics/Shape; +Landroidx/compose/ui/graphics/RectangleShapeKt$RectangleShape$1; +HSPLandroidx/compose/ui/graphics/RectangleShapeKt$RectangleShape$1;->()V +Landroidx/compose/ui/graphics/RenderEffect; +Landroidx/compose/ui/graphics/ReusableGraphicsLayerScope; +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->()V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getAlpha()F +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getAmbientShadowColor-0d7_KjU()J +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getCameraDistance()F +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getClip()Z +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getCompositingStrategy--NrFUSI()I +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getDensity()F +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getRenderEffect()Landroidx/compose/ui/graphics/RenderEffect; +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getRotationX()F +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getRotationY()F +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getRotationZ()F +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getScaleX()F +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getScaleY()F +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getShadowElevation()F +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getShape()Landroidx/compose/ui/graphics/Shape; +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getSpotShadowColor-0d7_KjU()J +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getTransformOrigin-SzJe1aQ()J +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getTranslationX()F +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getTranslationY()F +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->reset()V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setAlpha(F)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setAmbientShadowColor-8_81llA(J)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setCameraDistance(F)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setClip(Z)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setCompositingStrategy-aDBOjCE(I)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setGraphicsDensity$ui_release(Landroidx/compose/ui/unit/Density;)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setRenderEffect(Landroidx/compose/ui/graphics/RenderEffect;)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setRotationX(F)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setRotationY(F)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setRotationZ(F)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setScaleX(F)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setScaleY(F)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setShadowElevation(F)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setShape(Landroidx/compose/ui/graphics/Shape;)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setSize-uvyYCjk(J)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setSpotShadowColor-8_81llA(J)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setTransformOrigin-__ExYCQ(J)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setTranslationX(F)V +HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setTranslationY(F)V +Landroidx/compose/ui/graphics/ShaderBrush; +Landroidx/compose/ui/graphics/ShaderKt; +HSPLandroidx/compose/ui/graphics/ShaderKt;->LinearGradientShader-VjE6UOU$default(JJLjava/util/List;Ljava/util/List;IILjava/lang/Object;)Landroid/graphics/Shader; +HSPLandroidx/compose/ui/graphics/ShaderKt;->LinearGradientShader-VjE6UOU(JJLjava/util/List;Ljava/util/List;I)Landroid/graphics/Shader; +Landroidx/compose/ui/graphics/Shadow; +HSPLandroidx/compose/ui/graphics/Shadow;->()V +HSPLandroidx/compose/ui/graphics/Shadow;->(JJF)V +HSPLandroidx/compose/ui/graphics/Shadow;->(JJFILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/Shadow;->(JJFLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/Shadow;->access$getNone$cp()Landroidx/compose/ui/graphics/Shadow; +HSPLandroidx/compose/ui/graphics/Shadow;->equals(Ljava/lang/Object;)Z +Landroidx/compose/ui/graphics/Shadow$Companion; +HSPLandroidx/compose/ui/graphics/Shadow$Companion;->()V +HSPLandroidx/compose/ui/graphics/Shadow$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/Shadow$Companion;->getNone()Landroidx/compose/ui/graphics/Shadow; +Landroidx/compose/ui/graphics/Shape; +Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier; +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->(FFFFFFFFFFJLandroidx/compose/ui/graphics/Shape;ZLandroidx/compose/ui/graphics/RenderEffect;JJI)V +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->(FFFFFFFFFFJLandroidx/compose/ui/graphics/Shape;ZLandroidx/compose/ui/graphics/RenderEffect;JJILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->access$getLayerBlock$p(Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getAlpha()F +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getAmbientShadowColor-0d7_KjU()J +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getCameraDistance()F +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getClip()Z +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getCompositingStrategy--NrFUSI()I +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getRenderEffect()Landroidx/compose/ui/graphics/RenderEffect; +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getRotationX()F +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getRotationY()F +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getRotationZ()F +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getScaleX()F +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getScaleY()F +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getShadowElevation()F +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getShape()Landroidx/compose/ui/graphics/Shape; +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getSpotShadowColor-0d7_KjU()J +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getTransformOrigin-SzJe1aQ()J +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getTranslationX()F +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->getTranslationY()F +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier$layerBlock$1; +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier$layerBlock$1;->(Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;)V +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier$layerBlock$1;->invoke(Landroidx/compose/ui/graphics/GraphicsLayerScope;)V +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier$layerBlock$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier$measure$1; +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier$measure$1;->(Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;)V +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/SolidColor; +HSPLandroidx/compose/ui/graphics/SolidColor;->(J)V +HSPLandroidx/compose/ui/graphics/SolidColor;->(JLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/SolidColor;->applyTo-Pq9zytI(JLandroidx/compose/ui/graphics/Paint;F)V +HSPLandroidx/compose/ui/graphics/SolidColor;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/graphics/SolidColor;->getValue-0d7_KjU()J +HSPLandroidx/compose/ui/graphics/SolidColor;->hashCode()I +Landroidx/compose/ui/graphics/StrokeCap; +HSPLandroidx/compose/ui/graphics/StrokeCap;->()V +HSPLandroidx/compose/ui/graphics/StrokeCap;->(I)V +HSPLandroidx/compose/ui/graphics/StrokeCap;->access$getButt$cp()I +HSPLandroidx/compose/ui/graphics/StrokeCap;->access$getRound$cp()I +HSPLandroidx/compose/ui/graphics/StrokeCap;->access$getSquare$cp()I +HSPLandroidx/compose/ui/graphics/StrokeCap;->box-impl(I)Landroidx/compose/ui/graphics/StrokeCap; +HSPLandroidx/compose/ui/graphics/StrokeCap;->constructor-impl(I)I +HSPLandroidx/compose/ui/graphics/StrokeCap;->equals-impl0(II)Z +HSPLandroidx/compose/ui/graphics/StrokeCap;->hashCode-impl(I)I +HSPLandroidx/compose/ui/graphics/StrokeCap;->unbox-impl()I +Landroidx/compose/ui/graphics/StrokeCap$Companion; +HSPLandroidx/compose/ui/graphics/StrokeCap$Companion;->()V +HSPLandroidx/compose/ui/graphics/StrokeCap$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/StrokeCap$Companion;->getButt-KaPHkGw()I +HSPLandroidx/compose/ui/graphics/StrokeCap$Companion;->getRound-KaPHkGw()I +HSPLandroidx/compose/ui/graphics/StrokeCap$Companion;->getSquare-KaPHkGw()I +Landroidx/compose/ui/graphics/StrokeJoin; +HSPLandroidx/compose/ui/graphics/StrokeJoin;->()V +HSPLandroidx/compose/ui/graphics/StrokeJoin;->(I)V +HSPLandroidx/compose/ui/graphics/StrokeJoin;->access$getBevel$cp()I +HSPLandroidx/compose/ui/graphics/StrokeJoin;->access$getMiter$cp()I +HSPLandroidx/compose/ui/graphics/StrokeJoin;->box-impl(I)Landroidx/compose/ui/graphics/StrokeJoin; +HSPLandroidx/compose/ui/graphics/StrokeJoin;->constructor-impl(I)I +HSPLandroidx/compose/ui/graphics/StrokeJoin;->equals-impl0(II)Z +HSPLandroidx/compose/ui/graphics/StrokeJoin;->hashCode-impl(I)I +HSPLandroidx/compose/ui/graphics/StrokeJoin;->unbox-impl()I +Landroidx/compose/ui/graphics/StrokeJoin$Companion; +HSPLandroidx/compose/ui/graphics/StrokeJoin$Companion;->()V +HSPLandroidx/compose/ui/graphics/StrokeJoin$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/StrokeJoin$Companion;->getBevel-LxFBmk8()I +HSPLandroidx/compose/ui/graphics/StrokeJoin$Companion;->getMiter-LxFBmk8()I +Landroidx/compose/ui/graphics/TileMode; +HSPLandroidx/compose/ui/graphics/TileMode;->()V +HSPLandroidx/compose/ui/graphics/TileMode;->access$getClamp$cp()I +HSPLandroidx/compose/ui/graphics/TileMode;->constructor-impl(I)I +HSPLandroidx/compose/ui/graphics/TileMode;->equals-impl0(II)Z +Landroidx/compose/ui/graphics/TileMode$Companion; +HSPLandroidx/compose/ui/graphics/TileMode$Companion;->()V +HSPLandroidx/compose/ui/graphics/TileMode$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/TileMode$Companion;->getClamp-3opZhB0()I +Landroidx/compose/ui/graphics/TransformOrigin; +HSPLandroidx/compose/ui/graphics/TransformOrigin;->()V +HSPLandroidx/compose/ui/graphics/TransformOrigin;->(J)V +HSPLandroidx/compose/ui/graphics/TransformOrigin;->access$getCenter$cp()J +HSPLandroidx/compose/ui/graphics/TransformOrigin;->box-impl(J)Landroidx/compose/ui/graphics/TransformOrigin; +HSPLandroidx/compose/ui/graphics/TransformOrigin;->constructor-impl(J)J +HSPLandroidx/compose/ui/graphics/TransformOrigin;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/graphics/TransformOrigin;->equals-impl(JLjava/lang/Object;)Z +HSPLandroidx/compose/ui/graphics/TransformOrigin;->equals-impl0(JJ)Z +HSPLandroidx/compose/ui/graphics/TransformOrigin;->getPivotFractionX-impl(J)F +HSPLandroidx/compose/ui/graphics/TransformOrigin;->getPivotFractionY-impl(J)F +HSPLandroidx/compose/ui/graphics/TransformOrigin;->unbox-impl()J +Landroidx/compose/ui/graphics/TransformOrigin$Companion; +HSPLandroidx/compose/ui/graphics/TransformOrigin$Companion;->()V +HSPLandroidx/compose/ui/graphics/TransformOrigin$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/TransformOrigin$Companion;->getCenter-SzJe1aQ()J +Landroidx/compose/ui/graphics/TransformOriginKt; +HSPLandroidx/compose/ui/graphics/TransformOriginKt;->TransformOrigin(FF)J +Landroidx/compose/ui/graphics/WrapperVerificationHelperMethods; +HSPLandroidx/compose/ui/graphics/WrapperVerificationHelperMethods;->()V +HSPLandroidx/compose/ui/graphics/WrapperVerificationHelperMethods;->()V +HSPLandroidx/compose/ui/graphics/WrapperVerificationHelperMethods;->setBlendMode-GB0RdKg(Landroid/graphics/Paint;I)V +Landroidx/compose/ui/graphics/colorspace/Adaptation; +HSPLandroidx/compose/ui/graphics/colorspace/Adaptation;->()V +HSPLandroidx/compose/ui/graphics/colorspace/Adaptation;->([F)V +HSPLandroidx/compose/ui/graphics/colorspace/Adaptation;->([FLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/colorspace/Adaptation;->access$getBradford$cp()Landroidx/compose/ui/graphics/colorspace/Adaptation; +HSPLandroidx/compose/ui/graphics/colorspace/Adaptation;->getTransform$ui_graphics_release()[F +Landroidx/compose/ui/graphics/colorspace/Adaptation$Companion; +HSPLandroidx/compose/ui/graphics/colorspace/Adaptation$Companion;->()V +HSPLandroidx/compose/ui/graphics/colorspace/Adaptation$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/colorspace/Adaptation$Companion;->getBradford()Landroidx/compose/ui/graphics/colorspace/Adaptation; +Landroidx/compose/ui/graphics/colorspace/Adaptation$Companion$Bradford$1; +HSPLandroidx/compose/ui/graphics/colorspace/Adaptation$Companion$Bradford$1;->([F)V +Landroidx/compose/ui/graphics/colorspace/Adaptation$Companion$Ciecat02$1; +HSPLandroidx/compose/ui/graphics/colorspace/Adaptation$Companion$Ciecat02$1;->([F)V +Landroidx/compose/ui/graphics/colorspace/Adaptation$Companion$VonKries$1; +HSPLandroidx/compose/ui/graphics/colorspace/Adaptation$Companion$VonKries$1;->([F)V +Landroidx/compose/ui/graphics/colorspace/ColorModel; +HSPLandroidx/compose/ui/graphics/colorspace/ColorModel;->()V +HSPLandroidx/compose/ui/graphics/colorspace/ColorModel;->access$getLab$cp()J +HSPLandroidx/compose/ui/graphics/colorspace/ColorModel;->access$getRgb$cp()J +HSPLandroidx/compose/ui/graphics/colorspace/ColorModel;->access$getXyz$cp()J +HSPLandroidx/compose/ui/graphics/colorspace/ColorModel;->constructor-impl(J)J +HSPLandroidx/compose/ui/graphics/colorspace/ColorModel;->equals-impl0(JJ)Z +HSPLandroidx/compose/ui/graphics/colorspace/ColorModel;->getComponentCount-impl(J)I +Landroidx/compose/ui/graphics/colorspace/ColorModel$Companion; +HSPLandroidx/compose/ui/graphics/colorspace/ColorModel$Companion;->()V +HSPLandroidx/compose/ui/graphics/colorspace/ColorModel$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/colorspace/ColorModel$Companion;->getLab-xdoWZVw()J +HSPLandroidx/compose/ui/graphics/colorspace/ColorModel$Companion;->getRgb-xdoWZVw()J +HSPLandroidx/compose/ui/graphics/colorspace/ColorModel$Companion;->getXyz-xdoWZVw()J +Landroidx/compose/ui/graphics/colorspace/ColorSpace; +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace;->()V +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace;->(Ljava/lang/String;JI)V +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace;->(Ljava/lang/String;JILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace;->getComponentCount()I +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace;->getId$ui_graphics_release()I +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace;->getModel-xdoWZVw()J +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace;->getName()Ljava/lang/String; +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace;->isSrgb()Z +Landroidx/compose/ui/graphics/colorspace/ColorSpace$Companion; +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace$Companion;->()V +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/graphics/colorspace/ColorSpaceKt; +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->adapt$default(Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/WhitePoint;Landroidx/compose/ui/graphics/colorspace/Adaptation;ILjava/lang/Object;)Landroidx/compose/ui/graphics/colorspace/ColorSpace; +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->adapt(Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/WhitePoint;Landroidx/compose/ui/graphics/colorspace/Adaptation;)Landroidx/compose/ui/graphics/colorspace/ColorSpace; +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->chromaticAdaptation([F[F[F)[F +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->compare(Landroidx/compose/ui/graphics/colorspace/WhitePoint;Landroidx/compose/ui/graphics/colorspace/WhitePoint;)Z +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->compare([F[F)Z +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->connect-YBCOT_4$default(Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;IILjava/lang/Object;)Landroidx/compose/ui/graphics/colorspace/Connector; +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->connect-YBCOT_4(Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;I)Landroidx/compose/ui/graphics/colorspace/Connector; +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->inverse3x3([F)[F +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->mul3x3([F[F)[F +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->mul3x3Diag([F[F)[F +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->mul3x3Float3([F[F)[F +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->mul3x3Float3_0([FFFF)F +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->mul3x3Float3_1([FFFF)F +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->mul3x3Float3_2([FFFF)F +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->rcpResponse(DDDDDD)D +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->response(DDDDDD)D +Landroidx/compose/ui/graphics/colorspace/ColorSpaces; +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces;->()V +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces;->()V +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces;->getColorSpacesArray$ui_graphics_release()[Landroidx/compose/ui/graphics/colorspace/ColorSpace; +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces;->getNtsc1953Primaries$ui_graphics_release()[F +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces;->getOklab()Landroidx/compose/ui/graphics/colorspace/ColorSpace; +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces;->getSrgb()Landroidx/compose/ui/graphics/colorspace/Rgb; +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces;->getSrgbPrimaries$ui_graphics_release()[F +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces;->getUnspecified$ui_graphics_release()Landroidx/compose/ui/graphics/colorspace/Rgb; +Landroidx/compose/ui/graphics/colorspace/ColorSpaces$$ExternalSyntheticLambda0; +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces$$ExternalSyntheticLambda0;->()V +Landroidx/compose/ui/graphics/colorspace/ColorSpaces$$ExternalSyntheticLambda1; +HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces$$ExternalSyntheticLambda1;->()V +Landroidx/compose/ui/graphics/colorspace/Connector; +HSPLandroidx/compose/ui/graphics/colorspace/Connector;->()V +HSPLandroidx/compose/ui/graphics/colorspace/Connector;->(Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;I)V +HSPLandroidx/compose/ui/graphics/colorspace/Connector;->(Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/colorspace/Connector;->(Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;I[F)V +HSPLandroidx/compose/ui/graphics/colorspace/Connector;->(Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;I[FLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/colorspace/Connector;->access$getOklabToSrgbPerceptual$cp()Landroidx/compose/ui/graphics/colorspace/Connector; +HSPLandroidx/compose/ui/graphics/colorspace/Connector;->access$getSrgbToOklabPerceptual$cp()Landroidx/compose/ui/graphics/colorspace/Connector; +HSPLandroidx/compose/ui/graphics/colorspace/Connector;->transformToColor-wmQWz5c$ui_graphics_release(FFFF)J +Landroidx/compose/ui/graphics/colorspace/Connector$Companion; +HSPLandroidx/compose/ui/graphics/colorspace/Connector$Companion;->()V +HSPLandroidx/compose/ui/graphics/colorspace/Connector$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/colorspace/Connector$Companion;->access$computeTransform-YBCOT_4(Landroidx/compose/ui/graphics/colorspace/Connector$Companion;Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;I)[F +HSPLandroidx/compose/ui/graphics/colorspace/Connector$Companion;->computeTransform-YBCOT_4(Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;I)[F +HSPLandroidx/compose/ui/graphics/colorspace/Connector$Companion;->getOklabToSrgbPerceptual$ui_graphics_release()Landroidx/compose/ui/graphics/colorspace/Connector; +HSPLandroidx/compose/ui/graphics/colorspace/Connector$Companion;->getSrgbToOklabPerceptual$ui_graphics_release()Landroidx/compose/ui/graphics/colorspace/Connector; +HSPLandroidx/compose/ui/graphics/colorspace/Connector$Companion;->identity$ui_graphics_release(Landroidx/compose/ui/graphics/colorspace/ColorSpace;)Landroidx/compose/ui/graphics/colorspace/Connector; +Landroidx/compose/ui/graphics/colorspace/Connector$Companion$identity$1; +HSPLandroidx/compose/ui/graphics/colorspace/Connector$Companion$identity$1;->(Landroidx/compose/ui/graphics/colorspace/ColorSpace;I)V +Landroidx/compose/ui/graphics/colorspace/Connector$RgbConnector; +HSPLandroidx/compose/ui/graphics/colorspace/Connector$RgbConnector;->(Landroidx/compose/ui/graphics/colorspace/Rgb;Landroidx/compose/ui/graphics/colorspace/Rgb;I)V +HSPLandroidx/compose/ui/graphics/colorspace/Connector$RgbConnector;->(Landroidx/compose/ui/graphics/colorspace/Rgb;Landroidx/compose/ui/graphics/colorspace/Rgb;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/colorspace/Connector$RgbConnector;->computeTransform-YBCOT_4(Landroidx/compose/ui/graphics/colorspace/Rgb;Landroidx/compose/ui/graphics/colorspace/Rgb;I)[F +HSPLandroidx/compose/ui/graphics/colorspace/Connector$RgbConnector;->transformToColor-wmQWz5c$ui_graphics_release(FFFF)J +Landroidx/compose/ui/graphics/colorspace/DoubleFunction; +Landroidx/compose/ui/graphics/colorspace/Illuminant; +HSPLandroidx/compose/ui/graphics/colorspace/Illuminant;->()V +HSPLandroidx/compose/ui/graphics/colorspace/Illuminant;->()V +HSPLandroidx/compose/ui/graphics/colorspace/Illuminant;->getC()Landroidx/compose/ui/graphics/colorspace/WhitePoint; +HSPLandroidx/compose/ui/graphics/colorspace/Illuminant;->getD50()Landroidx/compose/ui/graphics/colorspace/WhitePoint; +HSPLandroidx/compose/ui/graphics/colorspace/Illuminant;->getD60()Landroidx/compose/ui/graphics/colorspace/WhitePoint; +HSPLandroidx/compose/ui/graphics/colorspace/Illuminant;->getD65()Landroidx/compose/ui/graphics/colorspace/WhitePoint; +Landroidx/compose/ui/graphics/colorspace/Lab; +HSPLandroidx/compose/ui/graphics/colorspace/Lab;->()V +HSPLandroidx/compose/ui/graphics/colorspace/Lab;->(Ljava/lang/String;I)V +Landroidx/compose/ui/graphics/colorspace/Lab$Companion; +HSPLandroidx/compose/ui/graphics/colorspace/Lab$Companion;->()V +HSPLandroidx/compose/ui/graphics/colorspace/Lab$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/graphics/colorspace/Oklab; +HSPLandroidx/compose/ui/graphics/colorspace/Oklab;->()V +HSPLandroidx/compose/ui/graphics/colorspace/Oklab;->(Ljava/lang/String;I)V +HSPLandroidx/compose/ui/graphics/colorspace/Oklab;->getMaxValue(I)F +HSPLandroidx/compose/ui/graphics/colorspace/Oklab;->getMinValue(I)F +HSPLandroidx/compose/ui/graphics/colorspace/Oklab;->toXy$ui_graphics_release(FFF)J +HSPLandroidx/compose/ui/graphics/colorspace/Oklab;->toZ$ui_graphics_release(FFF)F +HSPLandroidx/compose/ui/graphics/colorspace/Oklab;->xyzaToColor-JlNiLsg$ui_graphics_release(FFFFLandroidx/compose/ui/graphics/colorspace/ColorSpace;)J +Landroidx/compose/ui/graphics/colorspace/Oklab$Companion; +HSPLandroidx/compose/ui/graphics/colorspace/Oklab$Companion;->()V +HSPLandroidx/compose/ui/graphics/colorspace/Oklab$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/graphics/colorspace/RenderIntent; +HSPLandroidx/compose/ui/graphics/colorspace/RenderIntent;->()V +HSPLandroidx/compose/ui/graphics/colorspace/RenderIntent;->access$getAbsolute$cp()I +HSPLandroidx/compose/ui/graphics/colorspace/RenderIntent;->access$getPerceptual$cp()I +HSPLandroidx/compose/ui/graphics/colorspace/RenderIntent;->access$getRelative$cp()I +HSPLandroidx/compose/ui/graphics/colorspace/RenderIntent;->constructor-impl(I)I +HSPLandroidx/compose/ui/graphics/colorspace/RenderIntent;->equals-impl0(II)Z +Landroidx/compose/ui/graphics/colorspace/RenderIntent$Companion; +HSPLandroidx/compose/ui/graphics/colorspace/RenderIntent$Companion;->()V +HSPLandroidx/compose/ui/graphics/colorspace/RenderIntent$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/colorspace/RenderIntent$Companion;->getAbsolute-uksYyKA()I +HSPLandroidx/compose/ui/graphics/colorspace/RenderIntent$Companion;->getPerceptual-uksYyKA()I +HSPLandroidx/compose/ui/graphics/colorspace/RenderIntent$Companion;->getRelative-uksYyKA()I +Landroidx/compose/ui/graphics/colorspace/Rgb; +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->$r8$lambda$FANKyyW7TMwi4gnihl1LqxbkU6k(Landroidx/compose/ui/graphics/colorspace/Rgb;D)D +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->$r8$lambda$G8Pyx7Z9bMrnDjgEiQ7pXGTZEzg(Landroidx/compose/ui/graphics/colorspace/TransferParameters;D)D +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->$r8$lambda$OfmTeMXzL_nayJmS5mO6N4G4DlI(Landroidx/compose/ui/graphics/colorspace/Rgb;D)D +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->$r8$lambda$ahWovdYS5NpJ-IThda37cTda4qg(D)D +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->$r8$lambda$q_AtDSzDu9yw5JwgrVWJo3kmlB0(Landroidx/compose/ui/graphics/colorspace/TransferParameters;D)D +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->()V +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->(Landroidx/compose/ui/graphics/colorspace/Rgb;[FLandroidx/compose/ui/graphics/colorspace/WhitePoint;)V +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->(Ljava/lang/String;[FLandroidx/compose/ui/graphics/colorspace/WhitePoint;DFFI)V +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->(Ljava/lang/String;[FLandroidx/compose/ui/graphics/colorspace/WhitePoint;Landroidx/compose/ui/graphics/colorspace/TransferParameters;I)V +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->(Ljava/lang/String;[FLandroidx/compose/ui/graphics/colorspace/WhitePoint;[FLandroidx/compose/ui/graphics/colorspace/DoubleFunction;Landroidx/compose/ui/graphics/colorspace/DoubleFunction;FFLandroidx/compose/ui/graphics/colorspace/TransferParameters;I)V +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->DoubleIdentity$lambda$12(D)D +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->_init_$lambda$6(Landroidx/compose/ui/graphics/colorspace/TransferParameters;D)D +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->_init_$lambda$8(Landroidx/compose/ui/graphics/colorspace/TransferParameters;D)D +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->eotfFunc$lambda$1(Landroidx/compose/ui/graphics/colorspace/Rgb;D)D +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->getEotfFunc$ui_graphics_release()Landroidx/compose/ui/graphics/colorspace/DoubleFunction; +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->getEotfOrig$ui_graphics_release()Landroidx/compose/ui/graphics/colorspace/DoubleFunction; +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->getInverseTransform$ui_graphics_release()[F +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->getMaxValue(I)F +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->getMinValue(I)F +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->getOetfFunc$ui_graphics_release()Landroidx/compose/ui/graphics/colorspace/DoubleFunction; +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->getOetfOrig$ui_graphics_release()Landroidx/compose/ui/graphics/colorspace/DoubleFunction; +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->getTransform$ui_graphics_release()[F +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->getWhitePoint()Landroidx/compose/ui/graphics/colorspace/WhitePoint; +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->isSrgb()Z +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->oetfFunc$lambda$0(Landroidx/compose/ui/graphics/colorspace/Rgb;D)D +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->toXy$ui_graphics_release(FFF)J +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->toZ$ui_graphics_release(FFF)F +HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->xyzaToColor-JlNiLsg$ui_graphics_release(FFFFLandroidx/compose/ui/graphics/colorspace/ColorSpace;)J +Landroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda1; +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda1;->()V +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda1;->invoke(D)D +Landroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda11; +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda11;->(Landroidx/compose/ui/graphics/colorspace/TransferParameters;)V +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda11;->invoke(D)D +Landroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda2; +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda2;->(D)V +Landroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda3; +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda3;->(D)V +Landroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda7; +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda7;->(Landroidx/compose/ui/graphics/colorspace/Rgb;)V +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda7;->invoke(D)D +Landroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda8; +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda8;->(Landroidx/compose/ui/graphics/colorspace/Rgb;)V +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda8;->invoke(D)D +Landroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda9; +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda9;->(Landroidx/compose/ui/graphics/colorspace/TransferParameters;)V +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$$ExternalSyntheticLambda9;->invoke(D)D +Landroidx/compose/ui/graphics/colorspace/Rgb$Companion; +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->()V +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->access$computeXYZMatrix(Landroidx/compose/ui/graphics/colorspace/Rgb$Companion;[FLandroidx/compose/ui/graphics/colorspace/WhitePoint;)[F +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->access$isSrgb(Landroidx/compose/ui/graphics/colorspace/Rgb$Companion;[FLandroidx/compose/ui/graphics/colorspace/WhitePoint;Landroidx/compose/ui/graphics/colorspace/DoubleFunction;Landroidx/compose/ui/graphics/colorspace/DoubleFunction;FFI)Z +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->access$isWideGamut(Landroidx/compose/ui/graphics/colorspace/Rgb$Companion;[FFF)Z +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->access$xyPrimaries(Landroidx/compose/ui/graphics/colorspace/Rgb$Companion;[F)[F +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->area([F)F +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->compare(DLandroidx/compose/ui/graphics/colorspace/DoubleFunction;Landroidx/compose/ui/graphics/colorspace/DoubleFunction;)Z +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->computeXYZMatrix([FLandroidx/compose/ui/graphics/colorspace/WhitePoint;)[F +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->contains([F[F)Z +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->cross(FFFF)F +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->isSrgb([FLandroidx/compose/ui/graphics/colorspace/WhitePoint;Landroidx/compose/ui/graphics/colorspace/DoubleFunction;Landroidx/compose/ui/graphics/colorspace/DoubleFunction;FFI)Z +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->isWideGamut([FFF)Z +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->xyPrimaries([F)[F +Landroidx/compose/ui/graphics/colorspace/Rgb$eotf$1; +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$eotf$1;->(Landroidx/compose/ui/graphics/colorspace/Rgb;)V +Landroidx/compose/ui/graphics/colorspace/Rgb$oetf$1; +HSPLandroidx/compose/ui/graphics/colorspace/Rgb$oetf$1;->(Landroidx/compose/ui/graphics/colorspace/Rgb;)V +Landroidx/compose/ui/graphics/colorspace/TransferParameters; +HSPLandroidx/compose/ui/graphics/colorspace/TransferParameters;->(DDDDDDD)V +HSPLandroidx/compose/ui/graphics/colorspace/TransferParameters;->(DDDDDDDILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/colorspace/TransferParameters;->getA()D +HSPLandroidx/compose/ui/graphics/colorspace/TransferParameters;->getB()D +HSPLandroidx/compose/ui/graphics/colorspace/TransferParameters;->getC()D +HSPLandroidx/compose/ui/graphics/colorspace/TransferParameters;->getD()D +HSPLandroidx/compose/ui/graphics/colorspace/TransferParameters;->getE()D +HSPLandroidx/compose/ui/graphics/colorspace/TransferParameters;->getF()D +HSPLandroidx/compose/ui/graphics/colorspace/TransferParameters;->getGamma()D +Landroidx/compose/ui/graphics/colorspace/WhitePoint; +HSPLandroidx/compose/ui/graphics/colorspace/WhitePoint;->(FF)V +HSPLandroidx/compose/ui/graphics/colorspace/WhitePoint;->getX()F +HSPLandroidx/compose/ui/graphics/colorspace/WhitePoint;->getY()F +HSPLandroidx/compose/ui/graphics/colorspace/WhitePoint;->toXyz$ui_graphics_release()[F +Landroidx/compose/ui/graphics/colorspace/Xyz; +HSPLandroidx/compose/ui/graphics/colorspace/Xyz;->(Ljava/lang/String;I)V +Landroidx/compose/ui/graphics/drawscope/CanvasDrawScope; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->()V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->configurePaint-2qPWKa0$default(Landroidx/compose/ui/graphics/drawscope/CanvasDrawScope;JLandroidx/compose/ui/graphics/drawscope/DrawStyle;FLandroidx/compose/ui/graphics/ColorFilter;IIILjava/lang/Object;)Landroidx/compose/ui/graphics/Paint; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->configurePaint-2qPWKa0(JLandroidx/compose/ui/graphics/drawscope/DrawStyle;FLandroidx/compose/ui/graphics/ColorFilter;II)Landroidx/compose/ui/graphics/Paint; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->configurePaint-swdJneE$default(Landroidx/compose/ui/graphics/drawscope/CanvasDrawScope;Landroidx/compose/ui/graphics/Brush;Landroidx/compose/ui/graphics/drawscope/DrawStyle;FLandroidx/compose/ui/graphics/ColorFilter;IIILjava/lang/Object;)Landroidx/compose/ui/graphics/Paint; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->configurePaint-swdJneE(Landroidx/compose/ui/graphics/Brush;Landroidx/compose/ui/graphics/drawscope/DrawStyle;FLandroidx/compose/ui/graphics/ColorFilter;II)Landroidx/compose/ui/graphics/Paint; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->configureStrokePaint-ho4zsrM$default(Landroidx/compose/ui/graphics/drawscope/CanvasDrawScope;Landroidx/compose/ui/graphics/Brush;FFIILandroidx/compose/ui/graphics/PathEffect;FLandroidx/compose/ui/graphics/ColorFilter;IIILjava/lang/Object;)Landroidx/compose/ui/graphics/Paint; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->configureStrokePaint-ho4zsrM(Landroidx/compose/ui/graphics/Brush;FFIILandroidx/compose/ui/graphics/PathEffect;FLandroidx/compose/ui/graphics/ColorFilter;II)Landroidx/compose/ui/graphics/Paint; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->drawArc-yD3GUKo(JFFZJJFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;I)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->drawImage-AZ2fEMs(Landroidx/compose/ui/graphics/ImageBitmap;JJJJFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;II)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->drawLine-1RTmtNc(Landroidx/compose/ui/graphics/Brush;JJFILandroidx/compose/ui/graphics/PathEffect;FLandroidx/compose/ui/graphics/ColorFilter;I)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->drawPath-GBMwjPU(Landroidx/compose/ui/graphics/Path;Landroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;I)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->drawPath-LG529CI(Landroidx/compose/ui/graphics/Path;JFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;I)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->drawRect-n-J9OG0(JJJFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;I)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->drawRoundRect-ZuiqVtQ(Landroidx/compose/ui/graphics/Brush;JJJFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;I)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->drawRoundRect-u-Aw5IA(JJJJLandroidx/compose/ui/graphics/drawscope/DrawStyle;FLandroidx/compose/ui/graphics/ColorFilter;I)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->getDensity()F +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->getDrawContext()Landroidx/compose/ui/graphics/drawscope/DrawContext; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->getDrawParams()Landroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->modulate-5vOe2sY(JF)J +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->obtainFillPaint()Landroidx/compose/ui/graphics/Paint; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->obtainStrokePaint()Landroidx/compose/ui/graphics/Paint; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->selectPaint(Landroidx/compose/ui/graphics/drawscope/DrawStyle;)Landroidx/compose/ui/graphics/Paint; +Landroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/graphics/Canvas;J)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/graphics/Canvas;JILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/graphics/Canvas;JLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->component1()Landroidx/compose/ui/unit/Density; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->component2()Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->component3()Landroidx/compose/ui/graphics/Canvas; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->component4-NH-jbRc()J +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->getCanvas()Landroidx/compose/ui/graphics/Canvas; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->getDensity()Landroidx/compose/ui/unit/Density; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->getSize-NH-jbRc()J +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->setCanvas(Landroidx/compose/ui/graphics/Canvas;)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->setDensity(Landroidx/compose/ui/unit/Density;)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->setLayoutDirection(Landroidx/compose/ui/unit/LayoutDirection;)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->setSize-uvyYCjk(J)V +Landroidx/compose/ui/graphics/drawscope/CanvasDrawScope$drawContext$1; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$drawContext$1;->(Landroidx/compose/ui/graphics/drawscope/CanvasDrawScope;)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$drawContext$1;->getCanvas()Landroidx/compose/ui/graphics/Canvas; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$drawContext$1;->getSize-NH-jbRc()J +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$drawContext$1;->getTransform()Landroidx/compose/ui/graphics/drawscope/DrawTransform; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$drawContext$1;->setSize-uvyYCjk(J)V +Landroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt;->()V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt;->access$asDrawTransform(Landroidx/compose/ui/graphics/drawscope/DrawContext;)Landroidx/compose/ui/graphics/drawscope/DrawTransform; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt;->access$getDefaultDensity$p()Landroidx/compose/ui/unit/Density; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt;->asDrawTransform(Landroidx/compose/ui/graphics/drawscope/DrawContext;)Landroidx/compose/ui/graphics/drawscope/DrawTransform; +Landroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt$asDrawTransform$1; +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt$asDrawTransform$1;->(Landroidx/compose/ui/graphics/drawscope/DrawContext;)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt$asDrawTransform$1;->getSize-NH-jbRc()J +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt$asDrawTransform$1;->inset(FFFF)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt$asDrawTransform$1;->transform-58bKbWc([F)V +HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt$asDrawTransform$1;->translate(FF)V +Landroidx/compose/ui/graphics/drawscope/ContentDrawScope; +Landroidx/compose/ui/graphics/drawscope/DrawContext; +Landroidx/compose/ui/graphics/drawscope/DrawScope; +HSPLandroidx/compose/ui/graphics/drawscope/DrawScope;->()V +HSPLandroidx/compose/ui/graphics/drawscope/DrawScope;->drawArc-yD3GUKo$default(Landroidx/compose/ui/graphics/drawscope/DrawScope;JFFZJJFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;IILjava/lang/Object;)V +HSPLandroidx/compose/ui/graphics/drawscope/DrawScope;->drawImage-AZ2fEMs$default(Landroidx/compose/ui/graphics/drawscope/DrawScope;Landroidx/compose/ui/graphics/ImageBitmap;JJJJFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;IIILjava/lang/Object;)V +HSPLandroidx/compose/ui/graphics/drawscope/DrawScope;->drawLine-1RTmtNc$default(Landroidx/compose/ui/graphics/drawscope/DrawScope;Landroidx/compose/ui/graphics/Brush;JJFILandroidx/compose/ui/graphics/PathEffect;FLandroidx/compose/ui/graphics/ColorFilter;IILjava/lang/Object;)V +HSPLandroidx/compose/ui/graphics/drawscope/DrawScope;->drawPath-GBMwjPU$default(Landroidx/compose/ui/graphics/drawscope/DrawScope;Landroidx/compose/ui/graphics/Path;Landroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;IILjava/lang/Object;)V +HSPLandroidx/compose/ui/graphics/drawscope/DrawScope;->drawPath-LG529CI$default(Landroidx/compose/ui/graphics/drawscope/DrawScope;Landroidx/compose/ui/graphics/Path;JFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;IILjava/lang/Object;)V +HSPLandroidx/compose/ui/graphics/drawscope/DrawScope;->drawRect-n-J9OG0$default(Landroidx/compose/ui/graphics/drawscope/DrawScope;JJJFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;IILjava/lang/Object;)V +HSPLandroidx/compose/ui/graphics/drawscope/DrawScope;->drawRoundRect-ZuiqVtQ$default(Landroidx/compose/ui/graphics/drawscope/DrawScope;Landroidx/compose/ui/graphics/Brush;JJJFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;IILjava/lang/Object;)V +HSPLandroidx/compose/ui/graphics/drawscope/DrawScope;->drawRoundRect-u-Aw5IA$default(Landroidx/compose/ui/graphics/drawscope/DrawScope;JJJJLandroidx/compose/ui/graphics/drawscope/DrawStyle;FLandroidx/compose/ui/graphics/ColorFilter;IILjava/lang/Object;)V +HSPLandroidx/compose/ui/graphics/drawscope/DrawScope;->getSize-NH-jbRc()J +HSPLandroidx/compose/ui/graphics/drawscope/DrawScope;->offsetSize-PENXr5M(JJ)J +Landroidx/compose/ui/graphics/drawscope/DrawScope$Companion; +HSPLandroidx/compose/ui/graphics/drawscope/DrawScope$Companion;->()V +HSPLandroidx/compose/ui/graphics/drawscope/DrawScope$Companion;->()V +HSPLandroidx/compose/ui/graphics/drawscope/DrawScope$Companion;->getDefaultBlendMode-0nO6VwU()I +HSPLandroidx/compose/ui/graphics/drawscope/DrawScope$Companion;->getDefaultFilterQuality-f-v9h1I()I +Landroidx/compose/ui/graphics/drawscope/DrawStyle; +HSPLandroidx/compose/ui/graphics/drawscope/DrawStyle;->()V +HSPLandroidx/compose/ui/graphics/drawscope/DrawStyle;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/graphics/drawscope/DrawTransform; +Landroidx/compose/ui/graphics/drawscope/EmptyCanvas; +HSPLandroidx/compose/ui/graphics/drawscope/EmptyCanvas;->()V +Landroidx/compose/ui/graphics/drawscope/Fill; +HSPLandroidx/compose/ui/graphics/drawscope/Fill;->()V +HSPLandroidx/compose/ui/graphics/drawscope/Fill;->()V +Landroidx/compose/ui/graphics/drawscope/Stroke; +HSPLandroidx/compose/ui/graphics/drawscope/Stroke;->()V +HSPLandroidx/compose/ui/graphics/drawscope/Stroke;->(FFIILandroidx/compose/ui/graphics/PathEffect;)V +HSPLandroidx/compose/ui/graphics/drawscope/Stroke;->(FFIILandroidx/compose/ui/graphics/PathEffect;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/drawscope/Stroke;->(FFIILandroidx/compose/ui/graphics/PathEffect;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/drawscope/Stroke;->access$getDefaultCap$cp()I +HSPLandroidx/compose/ui/graphics/drawscope/Stroke;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/graphics/drawscope/Stroke;->getCap-KaPHkGw()I +HSPLandroidx/compose/ui/graphics/drawscope/Stroke;->getJoin-LxFBmk8()I +HSPLandroidx/compose/ui/graphics/drawscope/Stroke;->getMiter()F +HSPLandroidx/compose/ui/graphics/drawscope/Stroke;->getPathEffect()Landroidx/compose/ui/graphics/PathEffect; +HSPLandroidx/compose/ui/graphics/drawscope/Stroke;->getWidth()F +Landroidx/compose/ui/graphics/drawscope/Stroke$Companion; +HSPLandroidx/compose/ui/graphics/drawscope/Stroke$Companion;->()V +HSPLandroidx/compose/ui/graphics/drawscope/Stroke$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/drawscope/Stroke$Companion;->getDefaultCap-KaPHkGw()I +Landroidx/compose/ui/graphics/painter/Painter; +HSPLandroidx/compose/ui/graphics/painter/Painter;->()V +HSPLandroidx/compose/ui/graphics/painter/Painter;->configureAlpha(F)V +HSPLandroidx/compose/ui/graphics/painter/Painter;->configureColorFilter(Landroidx/compose/ui/graphics/ColorFilter;)V +HSPLandroidx/compose/ui/graphics/painter/Painter;->configureLayoutDirection(Landroidx/compose/ui/unit/LayoutDirection;)V +HSPLandroidx/compose/ui/graphics/painter/Painter;->draw-x_KDEd0(Landroidx/compose/ui/graphics/drawscope/DrawScope;JFLandroidx/compose/ui/graphics/ColorFilter;)V +Landroidx/compose/ui/graphics/painter/Painter$drawLambda$1; +HSPLandroidx/compose/ui/graphics/painter/Painter$drawLambda$1;->(Landroidx/compose/ui/graphics/painter/Painter;)V +Landroidx/compose/ui/graphics/vector/DrawCache; +HSPLandroidx/compose/ui/graphics/vector/DrawCache;->()V +HSPLandroidx/compose/ui/graphics/vector/DrawCache;->clear(Landroidx/compose/ui/graphics/drawscope/DrawScope;)V +HSPLandroidx/compose/ui/graphics/vector/DrawCache;->drawCachedImage-CJJAR-o(JLandroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/graphics/vector/DrawCache;->drawInto(Landroidx/compose/ui/graphics/drawscope/DrawScope;FLandroidx/compose/ui/graphics/ColorFilter;)V +Landroidx/compose/ui/graphics/vector/GroupComponent; +HSPLandroidx/compose/ui/graphics/vector/GroupComponent;->()V +HSPLandroidx/compose/ui/graphics/vector/GroupComponent;->draw(Landroidx/compose/ui/graphics/drawscope/DrawScope;)V +HSPLandroidx/compose/ui/graphics/vector/GroupComponent;->getInvalidateListener$ui_release()Lkotlin/jvm/functions/Function0; +HSPLandroidx/compose/ui/graphics/vector/GroupComponent;->getNumChildren()I +HSPLandroidx/compose/ui/graphics/vector/GroupComponent;->getWillClipPath()Z +HSPLandroidx/compose/ui/graphics/vector/GroupComponent;->insertAt(ILandroidx/compose/ui/graphics/vector/VNode;)V +HSPLandroidx/compose/ui/graphics/vector/GroupComponent;->remove(II)V +HSPLandroidx/compose/ui/graphics/vector/GroupComponent;->setInvalidateListener$ui_release(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/graphics/vector/GroupComponent;->setName(Ljava/lang/String;)V +HSPLandroidx/compose/ui/graphics/vector/GroupComponent;->setPivotX(F)V +HSPLandroidx/compose/ui/graphics/vector/GroupComponent;->setPivotY(F)V +HSPLandroidx/compose/ui/graphics/vector/GroupComponent;->setScaleX(F)V +HSPLandroidx/compose/ui/graphics/vector/GroupComponent;->setScaleY(F)V +HSPLandroidx/compose/ui/graphics/vector/GroupComponent;->updateClipPath()V +HSPLandroidx/compose/ui/graphics/vector/GroupComponent;->updateMatrix()V +Landroidx/compose/ui/graphics/vector/ImageVector; +HSPLandroidx/compose/ui/graphics/vector/ImageVector;->()V +HSPLandroidx/compose/ui/graphics/vector/ImageVector;->(Ljava/lang/String;FFFFLandroidx/compose/ui/graphics/vector/VectorGroup;JIZ)V +HSPLandroidx/compose/ui/graphics/vector/ImageVector;->(Ljava/lang/String;FFFFLandroidx/compose/ui/graphics/vector/VectorGroup;JIZLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/vector/ImageVector;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/graphics/vector/ImageVector;->getAutoMirror()Z +HSPLandroidx/compose/ui/graphics/vector/ImageVector;->getDefaultHeight-D9Ej5fM()F +HSPLandroidx/compose/ui/graphics/vector/ImageVector;->getDefaultWidth-D9Ej5fM()F +HSPLandroidx/compose/ui/graphics/vector/ImageVector;->getName()Ljava/lang/String; +HSPLandroidx/compose/ui/graphics/vector/ImageVector;->getRoot()Landroidx/compose/ui/graphics/vector/VectorGroup; +HSPLandroidx/compose/ui/graphics/vector/ImageVector;->getTintBlendMode-0nO6VwU()I +HSPLandroidx/compose/ui/graphics/vector/ImageVector;->getTintColor-0d7_KjU()J +HSPLandroidx/compose/ui/graphics/vector/ImageVector;->getViewportHeight()F +HSPLandroidx/compose/ui/graphics/vector/ImageVector;->getViewportWidth()F +HSPLandroidx/compose/ui/graphics/vector/ImageVector;->hashCode()I +Landroidx/compose/ui/graphics/vector/ImageVector$Builder; +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder;->()V +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder;->(Ljava/lang/String;FFFFJIZ)V +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder;->(Ljava/lang/String;FFFFJIZILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder;->(Ljava/lang/String;FFFFJIZLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder;->addPath-oIyEayM$default(Landroidx/compose/ui/graphics/vector/ImageVector$Builder;Ljava/util/List;ILjava/lang/String;Landroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/Brush;FFIIFFFFILjava/lang/Object;)Landroidx/compose/ui/graphics/vector/ImageVector$Builder; +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder;->addPath-oIyEayM(Ljava/util/List;ILjava/lang/String;Landroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/Brush;FFIIFFFF)Landroidx/compose/ui/graphics/vector/ImageVector$Builder; +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder;->asVectorGroup(Landroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;)Landroidx/compose/ui/graphics/vector/VectorGroup; +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder;->build()Landroidx/compose/ui/graphics/vector/ImageVector; +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder;->ensureNotConsumed()V +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder;->getCurrentGroup()Landroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams; +Landroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams; +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->(Ljava/lang/String;FFFFFFFLjava/util/List;Ljava/util/List;)V +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->(Ljava/lang/String;FFFFFFFLjava/util/List;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->getChildren()Ljava/util/List; +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->getClipPathData()Ljava/util/List; +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->getName()Ljava/lang/String; +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->getPivotX()F +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->getPivotY()F +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->getRotate()F +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->getScaleX()F +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->getScaleY()F +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->getTranslationX()F +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->getTranslationY()F +Landroidx/compose/ui/graphics/vector/ImageVector$Companion; +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Companion;->()V +HSPLandroidx/compose/ui/graphics/vector/ImageVector$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/graphics/vector/ImageVectorKt; +HSPLandroidx/compose/ui/graphics/vector/ImageVectorKt;->access$peek(Ljava/util/ArrayList;)Ljava/lang/Object; +HSPLandroidx/compose/ui/graphics/vector/ImageVectorKt;->access$push(Ljava/util/ArrayList;Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/graphics/vector/ImageVectorKt;->peek(Ljava/util/ArrayList;)Ljava/lang/Object; +HSPLandroidx/compose/ui/graphics/vector/ImageVectorKt;->push(Ljava/util/ArrayList;Ljava/lang/Object;)Z +Landroidx/compose/ui/graphics/vector/PathBuilder; +HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->()V +HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->addNode(Landroidx/compose/ui/graphics/vector/PathNode;)Landroidx/compose/ui/graphics/vector/PathBuilder; +HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->close()Landroidx/compose/ui/graphics/vector/PathBuilder; +HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->curveTo(FFFFFF)Landroidx/compose/ui/graphics/vector/PathBuilder; +HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->curveToRelative(FFFFFF)Landroidx/compose/ui/graphics/vector/PathBuilder; +HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->getNodes()Ljava/util/List; +HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->horizontalLineTo(F)Landroidx/compose/ui/graphics/vector/PathBuilder; +HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->horizontalLineToRelative(F)Landroidx/compose/ui/graphics/vector/PathBuilder; +HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->lineTo(FF)Landroidx/compose/ui/graphics/vector/PathBuilder; +HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->lineToRelative(FF)Landroidx/compose/ui/graphics/vector/PathBuilder; +HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->moveTo(FF)Landroidx/compose/ui/graphics/vector/PathBuilder; +HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->moveToRelative(FF)Landroidx/compose/ui/graphics/vector/PathBuilder; +HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->reflectiveCurveTo(FFFF)Landroidx/compose/ui/graphics/vector/PathBuilder; +HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->reflectiveCurveToRelative(FFFF)Landroidx/compose/ui/graphics/vector/PathBuilder; +HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->verticalLineTo(F)Landroidx/compose/ui/graphics/vector/PathBuilder; +HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->verticalLineToRelative(F)Landroidx/compose/ui/graphics/vector/PathBuilder; +Landroidx/compose/ui/graphics/vector/PathComponent; +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->()V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->draw(Landroidx/compose/ui/graphics/drawscope/DrawScope;)V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->setFill(Landroidx/compose/ui/graphics/Brush;)V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->setFillAlpha(F)V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->setName(Ljava/lang/String;)V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->setPathData(Ljava/util/List;)V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->setPathFillType-oQ8Xj4U(I)V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->setStroke(Landroidx/compose/ui/graphics/Brush;)V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->setStrokeAlpha(F)V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->setStrokeLineCap-BeK7IIE(I)V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->setStrokeLineJoin-Ww9F2mQ(I)V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->setStrokeLineMiter(F)V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->setStrokeLineWidth(F)V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->setTrimPathEnd(F)V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->setTrimPathOffset(F)V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->setTrimPathStart(F)V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->updatePath()V +HSPLandroidx/compose/ui/graphics/vector/PathComponent;->updateRenderPath()V +Landroidx/compose/ui/graphics/vector/PathComponent$pathMeasure$2; +HSPLandroidx/compose/ui/graphics/vector/PathComponent$pathMeasure$2;->()V +HSPLandroidx/compose/ui/graphics/vector/PathComponent$pathMeasure$2;->()V +Landroidx/compose/ui/graphics/vector/PathNode; +HSPLandroidx/compose/ui/graphics/vector/PathNode;->(ZZ)V +HSPLandroidx/compose/ui/graphics/vector/PathNode;->(ZZILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/vector/PathNode;->(ZZLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/vector/PathNode;->isCurve()Z +Landroidx/compose/ui/graphics/vector/PathNode$Close; +HSPLandroidx/compose/ui/graphics/vector/PathNode$Close;->()V +HSPLandroidx/compose/ui/graphics/vector/PathNode$Close;->()V +Landroidx/compose/ui/graphics/vector/PathNode$CurveTo; +HSPLandroidx/compose/ui/graphics/vector/PathNode$CurveTo;->(FFFFFF)V +HSPLandroidx/compose/ui/graphics/vector/PathNode$CurveTo;->getX1()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$CurveTo;->getX2()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$CurveTo;->getX3()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$CurveTo;->getY1()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$CurveTo;->getY2()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$CurveTo;->getY3()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$CurveTo;->hashCode()I +Landroidx/compose/ui/graphics/vector/PathNode$HorizontalTo; +HSPLandroidx/compose/ui/graphics/vector/PathNode$HorizontalTo;->(F)V +HSPLandroidx/compose/ui/graphics/vector/PathNode$HorizontalTo;->getX()F +Landroidx/compose/ui/graphics/vector/PathNode$LineTo; +HSPLandroidx/compose/ui/graphics/vector/PathNode$LineTo;->(FF)V +HSPLandroidx/compose/ui/graphics/vector/PathNode$LineTo;->getX()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$LineTo;->getY()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$LineTo;->hashCode()I +Landroidx/compose/ui/graphics/vector/PathNode$MoveTo; +HSPLandroidx/compose/ui/graphics/vector/PathNode$MoveTo;->(FF)V +HSPLandroidx/compose/ui/graphics/vector/PathNode$MoveTo;->getX()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$MoveTo;->getY()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$MoveTo;->hashCode()I +Landroidx/compose/ui/graphics/vector/PathNode$ReflectiveCurveTo; +HSPLandroidx/compose/ui/graphics/vector/PathNode$ReflectiveCurveTo;->(FFFF)V +HSPLandroidx/compose/ui/graphics/vector/PathNode$ReflectiveCurveTo;->getX1()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$ReflectiveCurveTo;->getX2()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$ReflectiveCurveTo;->getY1()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$ReflectiveCurveTo;->getY2()F +Landroidx/compose/ui/graphics/vector/PathNode$RelativeCurveTo; +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeCurveTo;->(FFFFFF)V +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeCurveTo;->getDx1()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeCurveTo;->getDx2()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeCurveTo;->getDx3()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeCurveTo;->getDy1()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeCurveTo;->getDy2()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeCurveTo;->getDy3()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeCurveTo;->hashCode()I +Landroidx/compose/ui/graphics/vector/PathNode$RelativeHorizontalTo; +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeHorizontalTo;->(F)V +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeHorizontalTo;->getDx()F +Landroidx/compose/ui/graphics/vector/PathNode$RelativeLineTo; +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeLineTo;->(FF)V +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeLineTo;->getDx()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeLineTo;->getDy()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeLineTo;->hashCode()I +Landroidx/compose/ui/graphics/vector/PathNode$RelativeMoveTo; +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeMoveTo;->(FF)V +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeMoveTo;->getDx()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeMoveTo;->getDy()F +Landroidx/compose/ui/graphics/vector/PathNode$RelativeReflectiveCurveTo; +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeReflectiveCurveTo;->(FFFF)V +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeReflectiveCurveTo;->getDx1()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeReflectiveCurveTo;->getDx2()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeReflectiveCurveTo;->getDy1()F +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeReflectiveCurveTo;->getDy2()F +Landroidx/compose/ui/graphics/vector/PathNode$RelativeVerticalTo; +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeVerticalTo;->(F)V +HSPLandroidx/compose/ui/graphics/vector/PathNode$RelativeVerticalTo;->getDy()F +Landroidx/compose/ui/graphics/vector/PathNode$VerticalTo; +HSPLandroidx/compose/ui/graphics/vector/PathNode$VerticalTo;->(F)V +HSPLandroidx/compose/ui/graphics/vector/PathNode$VerticalTo;->getY()F +Landroidx/compose/ui/graphics/vector/PathParserKt; +HSPLandroidx/compose/ui/graphics/vector/PathParserKt;->()V +HSPLandroidx/compose/ui/graphics/vector/PathParserKt;->toPath(Ljava/util/List;Landroidx/compose/ui/graphics/Path;)Landroidx/compose/ui/graphics/Path; +Landroidx/compose/ui/graphics/vector/VNode; +HSPLandroidx/compose/ui/graphics/vector/VNode;->()V +HSPLandroidx/compose/ui/graphics/vector/VNode;->()V +HSPLandroidx/compose/ui/graphics/vector/VNode;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/vector/VNode;->getInvalidateListener$ui_release()Lkotlin/jvm/functions/Function0; +HSPLandroidx/compose/ui/graphics/vector/VNode;->invalidate()V +HSPLandroidx/compose/ui/graphics/vector/VNode;->setInvalidateListener$ui_release(Lkotlin/jvm/functions/Function0;)V +Landroidx/compose/ui/graphics/vector/VectorApplier; +HSPLandroidx/compose/ui/graphics/vector/VectorApplier;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorApplier;->(Landroidx/compose/ui/graphics/vector/VNode;)V +HSPLandroidx/compose/ui/graphics/vector/VectorApplier;->asGroup(Landroidx/compose/ui/graphics/vector/VNode;)Landroidx/compose/ui/graphics/vector/GroupComponent; +HSPLandroidx/compose/ui/graphics/vector/VectorApplier;->insertBottomUp(ILandroidx/compose/ui/graphics/vector/VNode;)V +HSPLandroidx/compose/ui/graphics/vector/VectorApplier;->insertBottomUp(ILjava/lang/Object;)V +HSPLandroidx/compose/ui/graphics/vector/VectorApplier;->insertTopDown(ILandroidx/compose/ui/graphics/vector/VNode;)V +HSPLandroidx/compose/ui/graphics/vector/VectorApplier;->insertTopDown(ILjava/lang/Object;)V +HSPLandroidx/compose/ui/graphics/vector/VectorApplier;->onClear()V +Landroidx/compose/ui/graphics/vector/VectorComponent; +HSPLandroidx/compose/ui/graphics/vector/VectorComponent;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComponent;->access$doInvalidate(Landroidx/compose/ui/graphics/vector/VectorComponent;)V +HSPLandroidx/compose/ui/graphics/vector/VectorComponent;->doInvalidate()V +HSPLandroidx/compose/ui/graphics/vector/VectorComponent;->draw(Landroidx/compose/ui/graphics/drawscope/DrawScope;FLandroidx/compose/ui/graphics/ColorFilter;)V +HSPLandroidx/compose/ui/graphics/vector/VectorComponent;->getRoot()Landroidx/compose/ui/graphics/vector/GroupComponent; +HSPLandroidx/compose/ui/graphics/vector/VectorComponent;->getViewportHeight()F +HSPLandroidx/compose/ui/graphics/vector/VectorComponent;->getViewportWidth()F +HSPLandroidx/compose/ui/graphics/vector/VectorComponent;->setIntrinsicColorFilter$ui_release(Landroidx/compose/ui/graphics/ColorFilter;)V +HSPLandroidx/compose/ui/graphics/vector/VectorComponent;->setInvalidateCallback$ui_release(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/graphics/vector/VectorComponent;->setName(Ljava/lang/String;)V +HSPLandroidx/compose/ui/graphics/vector/VectorComponent;->setViewportHeight(F)V +HSPLandroidx/compose/ui/graphics/vector/VectorComponent;->setViewportWidth(F)V +Landroidx/compose/ui/graphics/vector/VectorComponent$drawVectorBlock$1; +HSPLandroidx/compose/ui/graphics/vector/VectorComponent$drawVectorBlock$1;->(Landroidx/compose/ui/graphics/vector/VectorComponent;)V +HSPLandroidx/compose/ui/graphics/vector/VectorComponent$drawVectorBlock$1;->invoke(Landroidx/compose/ui/graphics/drawscope/DrawScope;)V +HSPLandroidx/compose/ui/graphics/vector/VectorComponent$drawVectorBlock$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorComponent$invalidateCallback$1; +HSPLandroidx/compose/ui/graphics/vector/VectorComponent$invalidateCallback$1;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComponent$invalidateCallback$1;->()V +Landroidx/compose/ui/graphics/vector/VectorComponent$root$1$1; +HSPLandroidx/compose/ui/graphics/vector/VectorComponent$root$1$1;->(Landroidx/compose/ui/graphics/vector/VectorComponent;)V +HSPLandroidx/compose/ui/graphics/vector/VectorComponent$root$1$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/graphics/vector/VectorComponent$root$1$1;->invoke()V +Landroidx/compose/ui/graphics/vector/VectorComposeKt; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt;->Path-9cdaXJ4(Ljava/util/List;ILjava/lang/String;Landroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/Brush;FFIIFFFFLandroidx/compose/runtime/Composer;III)V +Landroidx/compose/ui/graphics/vector/VectorComposeKt$Path$1; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$1;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$1;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$1;->invoke()Landroidx/compose/ui/graphics/vector/PathComponent; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$1;->invoke()Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$1; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$1;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$1;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$1;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;Ljava/lang/String;)V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$10; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$10;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$10;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$10;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$10;->invoke-CSYIeUk(Landroidx/compose/ui/graphics/vector/PathComponent;I)V +Landroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$11; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$11;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$11;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$11;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;F)V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$11;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$12; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$12;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$12;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$12;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;F)V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$12;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$13; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$13;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$13;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$13;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;F)V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$13;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$14; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$14;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$14;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$14;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;F)V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$14;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$2; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$2;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$2;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$2;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;Ljava/util/List;)V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$3; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$3;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$3;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$3;->invoke-pweu1eQ(Landroidx/compose/ui/graphics/vector/PathComponent;I)V +Landroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$4; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$4;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$4;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$4;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;Landroidx/compose/ui/graphics/Brush;)V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$4;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$5; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$5;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$5;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$5;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;F)V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$5;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$6; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$6;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$6;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$6;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;Landroidx/compose/ui/graphics/Brush;)V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$6;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$7; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$7;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$7;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$7;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;F)V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$7;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$8; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$8;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$8;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$8;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;F)V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$8;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$9; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$9;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$9;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$9;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$9;->invoke-kLtJ_vA(Landroidx/compose/ui/graphics/vector/PathComponent;I)V +Landroidx/compose/ui/graphics/vector/VectorComposeKt$Path-9cdaXJ4$$inlined$ComposeNode$1; +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path-9cdaXJ4$$inlined$ComposeNode$1;->(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path-9cdaXJ4$$inlined$ComposeNode$1;->invoke()Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorConfig; +HSPLandroidx/compose/ui/graphics/vector/VectorConfig;->getOrDefault(Landroidx/compose/ui/graphics/vector/VectorProperty;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorGroup; +HSPLandroidx/compose/ui/graphics/vector/VectorGroup;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorGroup;->(Ljava/lang/String;FFFFFFFLjava/util/List;Ljava/util/List;)V +HSPLandroidx/compose/ui/graphics/vector/VectorGroup;->access$getChildren$p(Landroidx/compose/ui/graphics/vector/VectorGroup;)Ljava/util/List; +HSPLandroidx/compose/ui/graphics/vector/VectorGroup;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/graphics/vector/VectorGroup;->hashCode()I +HSPLandroidx/compose/ui/graphics/vector/VectorGroup;->iterator()Ljava/util/Iterator; +Landroidx/compose/ui/graphics/vector/VectorGroup$iterator$1; +HSPLandroidx/compose/ui/graphics/vector/VectorGroup$iterator$1;->(Landroidx/compose/ui/graphics/vector/VectorGroup;)V +HSPLandroidx/compose/ui/graphics/vector/VectorGroup$iterator$1;->hasNext()Z +HSPLandroidx/compose/ui/graphics/vector/VectorGroup$iterator$1;->next()Landroidx/compose/ui/graphics/vector/VectorNode; +HSPLandroidx/compose/ui/graphics/vector/VectorGroup$iterator$1;->next()Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorKt; +HSPLandroidx/compose/ui/graphics/vector/VectorKt;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorKt;->getDefaultFillType()I +HSPLandroidx/compose/ui/graphics/vector/VectorKt;->getDefaultStrokeLineCap()I +HSPLandroidx/compose/ui/graphics/vector/VectorKt;->getDefaultStrokeLineJoin()I +HSPLandroidx/compose/ui/graphics/vector/VectorKt;->getEmptyPath()Ljava/util/List; +Landroidx/compose/ui/graphics/vector/VectorNode; +HSPLandroidx/compose/ui/graphics/vector/VectorNode;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorNode;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorNode;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/graphics/vector/VectorPainter; +HSPLandroidx/compose/ui/graphics/vector/VectorPainter;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorPainter;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorPainter;->RenderVector$ui_release(Ljava/lang/String;FFLkotlin/jvm/functions/Function4;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/ui/graphics/vector/VectorPainter;->access$getVector$p(Landroidx/compose/ui/graphics/vector/VectorPainter;)Landroidx/compose/ui/graphics/vector/VectorComponent; +HSPLandroidx/compose/ui/graphics/vector/VectorPainter;->access$setDirty(Landroidx/compose/ui/graphics/vector/VectorPainter;Z)V +HSPLandroidx/compose/ui/graphics/vector/VectorPainter;->applyColorFilter(Landroidx/compose/ui/graphics/ColorFilter;)Z +HSPLandroidx/compose/ui/graphics/vector/VectorPainter;->composeVector(Landroidx/compose/runtime/CompositionContext;Lkotlin/jvm/functions/Function4;)Landroidx/compose/runtime/Composition; +HSPLandroidx/compose/ui/graphics/vector/VectorPainter;->getAutoMirror$ui_release()Z +HSPLandroidx/compose/ui/graphics/vector/VectorPainter;->getIntrinsicSize-NH-jbRc()J +HSPLandroidx/compose/ui/graphics/vector/VectorPainter;->getSize-NH-jbRc$ui_release()J +HSPLandroidx/compose/ui/graphics/vector/VectorPainter;->isDirty()Z +HSPLandroidx/compose/ui/graphics/vector/VectorPainter;->onDraw(Landroidx/compose/ui/graphics/drawscope/DrawScope;)V +HSPLandroidx/compose/ui/graphics/vector/VectorPainter;->setAutoMirror$ui_release(Z)V +HSPLandroidx/compose/ui/graphics/vector/VectorPainter;->setDirty(Z)V +HSPLandroidx/compose/ui/graphics/vector/VectorPainter;->setIntrinsicColorFilter$ui_release(Landroidx/compose/ui/graphics/ColorFilter;)V +HSPLandroidx/compose/ui/graphics/vector/VectorPainter;->setSize-uvyYCjk$ui_release(J)V +Landroidx/compose/ui/graphics/vector/VectorPainter$RenderVector$2; +HSPLandroidx/compose/ui/graphics/vector/VectorPainter$RenderVector$2;->(Landroidx/compose/runtime/Composition;)V +HSPLandroidx/compose/ui/graphics/vector/VectorPainter$RenderVector$2;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/ui/graphics/vector/VectorPainter$RenderVector$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorPainter$RenderVector$2$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/ui/graphics/vector/VectorPainter$RenderVector$2$invoke$$inlined$onDispose$1;->(Landroidx/compose/runtime/Composition;)V +HSPLandroidx/compose/ui/graphics/vector/VectorPainter$RenderVector$2$invoke$$inlined$onDispose$1;->dispose()V +Landroidx/compose/ui/graphics/vector/VectorPainter$composeVector$1; +HSPLandroidx/compose/ui/graphics/vector/VectorPainter$composeVector$1;->(Lkotlin/jvm/functions/Function4;Landroidx/compose/ui/graphics/vector/VectorPainter;)V +HSPLandroidx/compose/ui/graphics/vector/VectorPainter$composeVector$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/ui/graphics/vector/VectorPainter$composeVector$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorPainter$vector$1$1; +HSPLandroidx/compose/ui/graphics/vector/VectorPainter$vector$1$1;->(Landroidx/compose/ui/graphics/vector/VectorPainter;)V +HSPLandroidx/compose/ui/graphics/vector/VectorPainter$vector$1$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/graphics/vector/VectorPainter$vector$1$1;->invoke()V +Landroidx/compose/ui/graphics/vector/VectorPainterKt; +HSPLandroidx/compose/ui/graphics/vector/VectorPainterKt;->RenderVectorGroup(Landroidx/compose/ui/graphics/vector/VectorGroup;Ljava/util/Map;Landroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/ui/graphics/vector/VectorPainterKt;->rememberVectorPainter(Landroidx/compose/ui/graphics/vector/ImageVector;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/graphics/vector/VectorPainter; +HSPLandroidx/compose/ui/graphics/vector/VectorPainterKt;->rememberVectorPainter-vIP8VLU(FFFFLjava/lang/String;JIZLkotlin/jvm/functions/Function4;Landroidx/compose/runtime/Composer;II)Landroidx/compose/ui/graphics/vector/VectorPainter; +Landroidx/compose/ui/graphics/vector/VectorPainterKt$RenderVectorGroup$config$1; +HSPLandroidx/compose/ui/graphics/vector/VectorPainterKt$RenderVectorGroup$config$1;->()V +Landroidx/compose/ui/graphics/vector/VectorPainterKt$rememberVectorPainter$3; +HSPLandroidx/compose/ui/graphics/vector/VectorPainterKt$rememberVectorPainter$3;->(Landroidx/compose/ui/graphics/vector/ImageVector;)V +HSPLandroidx/compose/ui/graphics/vector/VectorPainterKt$rememberVectorPainter$3;->invoke(FFLandroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/ui/graphics/vector/VectorPainterKt$rememberVectorPainter$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/graphics/vector/VectorPath; +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->(Ljava/lang/String;Ljava/util/List;ILandroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/Brush;FFIIFFFF)V +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->(Ljava/lang/String;Ljava/util/List;ILandroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/Brush;FFIIFFFFLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->getFill()Landroidx/compose/ui/graphics/Brush; +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->getFillAlpha()F +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->getName()Ljava/lang/String; +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->getPathData()Ljava/util/List; +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->getPathFillType-Rg-k1Os()I +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->getStroke()Landroidx/compose/ui/graphics/Brush; +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->getStrokeAlpha()F +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->getStrokeLineCap-KaPHkGw()I +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->getStrokeLineJoin-LxFBmk8()I +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->getStrokeLineMiter()F +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->getStrokeLineWidth()F +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->getTrimPathEnd()F +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->getTrimPathOffset()F +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->getTrimPathStart()F +HSPLandroidx/compose/ui/graphics/vector/VectorPath;->hashCode()I +Landroidx/compose/ui/graphics/vector/VectorProperty; +HSPLandroidx/compose/ui/graphics/vector/VectorProperty;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorProperty;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorProperty;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/graphics/vector/VectorProperty$Fill; +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$Fill;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$Fill;->()V +Landroidx/compose/ui/graphics/vector/VectorProperty$FillAlpha; +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$FillAlpha;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$FillAlpha;->()V +Landroidx/compose/ui/graphics/vector/VectorProperty$PathData; +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$PathData;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$PathData;->()V +Landroidx/compose/ui/graphics/vector/VectorProperty$Stroke; +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$Stroke;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$Stroke;->()V +Landroidx/compose/ui/graphics/vector/VectorProperty$StrokeAlpha; +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$StrokeAlpha;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$StrokeAlpha;->()V +Landroidx/compose/ui/graphics/vector/VectorProperty$StrokeLineWidth; +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$StrokeLineWidth;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$StrokeLineWidth;->()V +Landroidx/compose/ui/graphics/vector/VectorProperty$TrimPathEnd; +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$TrimPathEnd;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$TrimPathEnd;->()V +Landroidx/compose/ui/graphics/vector/VectorProperty$TrimPathOffset; +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$TrimPathOffset;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$TrimPathOffset;->()V +Landroidx/compose/ui/graphics/vector/VectorProperty$TrimPathStart; +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$TrimPathStart;->()V +HSPLandroidx/compose/ui/graphics/vector/VectorProperty$TrimPathStart;->()V +Landroidx/compose/ui/hapticfeedback/HapticFeedback; +Landroidx/compose/ui/hapticfeedback/PlatformHapticFeedback; +HSPLandroidx/compose/ui/hapticfeedback/PlatformHapticFeedback;->(Landroid/view/View;)V +Landroidx/compose/ui/input/InputMode; +HSPLandroidx/compose/ui/input/InputMode;->()V +HSPLandroidx/compose/ui/input/InputMode;->(I)V +HSPLandroidx/compose/ui/input/InputMode;->access$getKeyboard$cp()I +HSPLandroidx/compose/ui/input/InputMode;->access$getTouch$cp()I +HSPLandroidx/compose/ui/input/InputMode;->box-impl(I)Landroidx/compose/ui/input/InputMode; +HSPLandroidx/compose/ui/input/InputMode;->constructor-impl(I)I +HSPLandroidx/compose/ui/input/InputMode;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/input/InputMode;->equals-impl(ILjava/lang/Object;)Z +HSPLandroidx/compose/ui/input/InputMode;->equals-impl0(II)Z +HSPLandroidx/compose/ui/input/InputMode;->unbox-impl()I +Landroidx/compose/ui/input/InputMode$Companion; +HSPLandroidx/compose/ui/input/InputMode$Companion;->()V +HSPLandroidx/compose/ui/input/InputMode$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/input/InputMode$Companion;->getKeyboard-aOaMEAU()I +HSPLandroidx/compose/ui/input/InputMode$Companion;->getTouch-aOaMEAU()I +Landroidx/compose/ui/input/InputModeManager; +Landroidx/compose/ui/input/InputModeManagerImpl; +HSPLandroidx/compose/ui/input/InputModeManagerImpl;->(ILkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/input/InputModeManagerImpl;->(ILkotlin/jvm/functions/Function1;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/input/InputModeManagerImpl;->getInputMode-aOaMEAU()I +HSPLandroidx/compose/ui/input/InputModeManagerImpl;->setInputMode-iuPiT84(I)V +Landroidx/compose/ui/input/key/KeyInputElement; +HSPLandroidx/compose/ui/input/key/KeyInputElement;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/input/key/KeyInputElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/input/key/KeyInputElement;->create()Landroidx/compose/ui/input/key/KeyInputNode; +HSPLandroidx/compose/ui/input/key/KeyInputElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/input/key/KeyInputElement;->update(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/input/key/KeyInputElement;->update(Landroidx/compose/ui/input/key/KeyInputNode;)V +Landroidx/compose/ui/input/key/KeyInputModifierKt; +HSPLandroidx/compose/ui/input/key/KeyInputModifierKt;->onKeyEvent(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/input/key/KeyInputModifierKt;->onPreviewKeyEvent(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/input/key/KeyInputModifierNode; +Landroidx/compose/ui/input/key/KeyInputNode; +HSPLandroidx/compose/ui/input/key/KeyInputNode;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/input/key/KeyInputNode;->setOnEvent(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/input/key/KeyInputNode;->setOnPreEvent(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/ui/input/key/SoftKeyboardInterceptionModifierNode; +Landroidx/compose/ui/input/nestedscroll/NestedScrollConnection; +Landroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher; +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;->()V +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;->()V +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;->getModifierLocalNode$ui_release()Landroidx/compose/ui/modifier/ModifierLocalModifierNode; +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;->setCalculateNestedScrollScope$ui_release(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;->setModifierLocalNode$ui_release(Landroidx/compose/ui/modifier/ModifierLocalModifierNode;)V +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;->setScope$ui_release(Lkotlinx/coroutines/CoroutineScope;)V +Landroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher$calculateNestedScrollScope$1; +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher$calculateNestedScrollScope$1;->(Landroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;)V +Landroidx/compose/ui/input/nestedscroll/NestedScrollElement; +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollElement;->(Landroidx/compose/ui/input/nestedscroll/NestedScrollConnection;Landroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;)V +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollElement;->create()Landroidx/compose/ui/input/nestedscroll/NestedScrollNode; +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollElement;->update(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollElement;->update(Landroidx/compose/ui/input/nestedscroll/NestedScrollNode;)V +Landroidx/compose/ui/input/nestedscroll/NestedScrollModifierKt; +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierKt;->nestedScroll$default(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/input/nestedscroll/NestedScrollConnection;Landroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;ILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierKt;->nestedScroll(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/input/nestedscroll/NestedScrollConnection;Landroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/input/nestedscroll/NestedScrollNode; +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollNode;->(Landroidx/compose/ui/input/nestedscroll/NestedScrollConnection;Landroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;)V +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollNode;->getProvidedValues()Landroidx/compose/ui/modifier/ModifierLocalMap; +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollNode;->onAttach()V +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollNode;->onDetach()V +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollNode;->resetDispatcherFields()V +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollNode;->updateDispatcher(Landroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;)V +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollNode;->updateDispatcherFields()V +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollNode;->updateNode$ui_release(Landroidx/compose/ui/input/nestedscroll/NestedScrollConnection;Landroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;)V +Landroidx/compose/ui/input/nestedscroll/NestedScrollNode$updateDispatcherFields$1; +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollNode$updateDispatcherFields$1;->(Landroidx/compose/ui/input/nestedscroll/NestedScrollNode;)V +Landroidx/compose/ui/input/nestedscroll/NestedScrollNodeKt; +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollNodeKt;->()V +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollNodeKt;->getModifierLocalNestedScroll()Landroidx/compose/ui/modifier/ProvidableModifierLocal; +Landroidx/compose/ui/input/nestedscroll/NestedScrollNodeKt$ModifierLocalNestedScroll$1; +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollNodeKt$ModifierLocalNestedScroll$1;->()V +HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollNodeKt$ModifierLocalNestedScroll$1;->()V +Landroidx/compose/ui/input/pointer/AndroidPointerIconType; +HSPLandroidx/compose/ui/input/pointer/AndroidPointerIconType;->(I)V +HSPLandroidx/compose/ui/input/pointer/AndroidPointerIconType;->equals(Ljava/lang/Object;)Z +Landroidx/compose/ui/input/pointer/AwaitPointerEventScope; +HSPLandroidx/compose/ui/input/pointer/AwaitPointerEventScope;->awaitPointerEvent$default(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Landroidx/compose/ui/input/pointer/PointerEventPass;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/input/pointer/ConsumedData; +HSPLandroidx/compose/ui/input/pointer/ConsumedData;->()V +HSPLandroidx/compose/ui/input/pointer/ConsumedData;->(ZZ)V +HSPLandroidx/compose/ui/input/pointer/ConsumedData;->getDownChange()Z +HSPLandroidx/compose/ui/input/pointer/ConsumedData;->getPositionChange()Z +HSPLandroidx/compose/ui/input/pointer/ConsumedData;->setDownChange(Z)V +HSPLandroidx/compose/ui/input/pointer/ConsumedData;->setPositionChange(Z)V +Landroidx/compose/ui/input/pointer/HitPathTracker; +HSPLandroidx/compose/ui/input/pointer/HitPathTracker;->(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/ui/input/pointer/HitPathTracker;->addHitPath-KNwqfcY(JLjava/util/List;)V +HSPLandroidx/compose/ui/input/pointer/HitPathTracker;->dispatchChanges(Landroidx/compose/ui/input/pointer/InternalPointerEvent;Z)Z +HSPLandroidx/compose/ui/input/pointer/HitPathTracker;->removeDetachedPointerInputFilters()V +Landroidx/compose/ui/input/pointer/InternalPointerEvent; +HSPLandroidx/compose/ui/input/pointer/InternalPointerEvent;->(Ljava/util/Map;Landroidx/compose/ui/input/pointer/PointerInputEvent;)V +HSPLandroidx/compose/ui/input/pointer/InternalPointerEvent;->getChanges()Ljava/util/Map; +HSPLandroidx/compose/ui/input/pointer/InternalPointerEvent;->getMotionEvent()Landroid/view/MotionEvent; +HSPLandroidx/compose/ui/input/pointer/InternalPointerEvent;->getSuppressMovementConsumption()Z +HSPLandroidx/compose/ui/input/pointer/InternalPointerEvent;->issuesEnterExitEvent-0FcD4WY(J)Z +Landroidx/compose/ui/input/pointer/MotionEventAdapter; +HSPLandroidx/compose/ui/input/pointer/MotionEventAdapter;->()V +HSPLandroidx/compose/ui/input/pointer/MotionEventAdapter;->addFreshIds(Landroid/view/MotionEvent;)V +HSPLandroidx/compose/ui/input/pointer/MotionEventAdapter;->clearOnDeviceChange(Landroid/view/MotionEvent;)V +HSPLandroidx/compose/ui/input/pointer/MotionEventAdapter;->convertToPointerInputEvent$ui_release(Landroid/view/MotionEvent;Landroidx/compose/ui/input/pointer/PositionCalculator;)Landroidx/compose/ui/input/pointer/PointerInputEvent; +HSPLandroidx/compose/ui/input/pointer/MotionEventAdapter;->createPointerInputEventData(Landroidx/compose/ui/input/pointer/PositionCalculator;Landroid/view/MotionEvent;IZ)Landroidx/compose/ui/input/pointer/PointerInputEventData; +HSPLandroidx/compose/ui/input/pointer/MotionEventAdapter;->getComposePointerId-_I2yYro(I)J +HSPLandroidx/compose/ui/input/pointer/MotionEventAdapter;->removeStaleIds(Landroid/view/MotionEvent;)V +Landroidx/compose/ui/input/pointer/Node; +HSPLandroidx/compose/ui/input/pointer/Node;->(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/input/pointer/Node;->buildCache(Ljava/util/Map;Landroidx/compose/ui/layout/LayoutCoordinates;Landroidx/compose/ui/input/pointer/InternalPointerEvent;Z)Z +HSPLandroidx/compose/ui/input/pointer/Node;->cleanUpHits(Landroidx/compose/ui/input/pointer/InternalPointerEvent;)V +HSPLandroidx/compose/ui/input/pointer/Node;->clearCache()V +HSPLandroidx/compose/ui/input/pointer/Node;->dispatchFinalEventPass(Landroidx/compose/ui/input/pointer/InternalPointerEvent;)Z +HSPLandroidx/compose/ui/input/pointer/Node;->dispatchMainEventPass(Ljava/util/Map;Landroidx/compose/ui/layout/LayoutCoordinates;Landroidx/compose/ui/input/pointer/InternalPointerEvent;Z)Z +HSPLandroidx/compose/ui/input/pointer/Node;->getModifierNode()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/input/pointer/Node;->getPointerIds()Landroidx/compose/runtime/collection/MutableVector; +Landroidx/compose/ui/input/pointer/NodeParent; +HSPLandroidx/compose/ui/input/pointer/NodeParent;->()V +HSPLandroidx/compose/ui/input/pointer/NodeParent;->buildCache(Ljava/util/Map;Landroidx/compose/ui/layout/LayoutCoordinates;Landroidx/compose/ui/input/pointer/InternalPointerEvent;Z)Z +HSPLandroidx/compose/ui/input/pointer/NodeParent;->cleanUpHits(Landroidx/compose/ui/input/pointer/InternalPointerEvent;)V +HSPLandroidx/compose/ui/input/pointer/NodeParent;->dispatchFinalEventPass(Landroidx/compose/ui/input/pointer/InternalPointerEvent;)Z +HSPLandroidx/compose/ui/input/pointer/NodeParent;->dispatchMainEventPass(Ljava/util/Map;Landroidx/compose/ui/layout/LayoutCoordinates;Landroidx/compose/ui/input/pointer/InternalPointerEvent;Z)Z +HSPLandroidx/compose/ui/input/pointer/NodeParent;->getChildren()Landroidx/compose/runtime/collection/MutableVector; +HSPLandroidx/compose/ui/input/pointer/NodeParent;->removeDetachedPointerInputFilters()V +Landroidx/compose/ui/input/pointer/PointerButtons; +HSPLandroidx/compose/ui/input/pointer/PointerButtons;->constructor-impl(I)I +Landroidx/compose/ui/input/pointer/PointerEvent; +HSPLandroidx/compose/ui/input/pointer/PointerEvent;->()V +HSPLandroidx/compose/ui/input/pointer/PointerEvent;->(Ljava/util/List;)V +HSPLandroidx/compose/ui/input/pointer/PointerEvent;->(Ljava/util/List;Landroidx/compose/ui/input/pointer/InternalPointerEvent;)V +HSPLandroidx/compose/ui/input/pointer/PointerEvent;->calculatePointerEventType-7fucELk()I +HSPLandroidx/compose/ui/input/pointer/PointerEvent;->getChanges()Ljava/util/List; +HSPLandroidx/compose/ui/input/pointer/PointerEvent;->getMotionEvent$ui_release()Landroid/view/MotionEvent; +HSPLandroidx/compose/ui/input/pointer/PointerEvent;->getType-7fucELk()I +Landroidx/compose/ui/input/pointer/PointerEventKt; +HSPLandroidx/compose/ui/input/pointer/PointerEventKt;->changedToDown(Landroidx/compose/ui/input/pointer/PointerInputChange;)Z +HSPLandroidx/compose/ui/input/pointer/PointerEventKt;->changedToDownIgnoreConsumed(Landroidx/compose/ui/input/pointer/PointerInputChange;)Z +HSPLandroidx/compose/ui/input/pointer/PointerEventKt;->changedToUp(Landroidx/compose/ui/input/pointer/PointerInputChange;)Z +HSPLandroidx/compose/ui/input/pointer/PointerEventKt;->changedToUpIgnoreConsumed(Landroidx/compose/ui/input/pointer/PointerInputChange;)Z +HSPLandroidx/compose/ui/input/pointer/PointerEventKt;->positionChangeInternal(Landroidx/compose/ui/input/pointer/PointerInputChange;Z)J +HSPLandroidx/compose/ui/input/pointer/PointerEventKt;->positionChangedIgnoreConsumed(Landroidx/compose/ui/input/pointer/PointerInputChange;)Z +Landroidx/compose/ui/input/pointer/PointerEventPass; +HSPLandroidx/compose/ui/input/pointer/PointerEventPass;->$values()[Landroidx/compose/ui/input/pointer/PointerEventPass; +HSPLandroidx/compose/ui/input/pointer/PointerEventPass;->()V +HSPLandroidx/compose/ui/input/pointer/PointerEventPass;->(Ljava/lang/String;I)V +HSPLandroidx/compose/ui/input/pointer/PointerEventPass;->values()[Landroidx/compose/ui/input/pointer/PointerEventPass; +Landroidx/compose/ui/input/pointer/PointerEventTimeoutCancellationException; +Landroidx/compose/ui/input/pointer/PointerEventType; +HSPLandroidx/compose/ui/input/pointer/PointerEventType;->()V +HSPLandroidx/compose/ui/input/pointer/PointerEventType;->access$getEnter$cp()I +HSPLandroidx/compose/ui/input/pointer/PointerEventType;->access$getExit$cp()I +HSPLandroidx/compose/ui/input/pointer/PointerEventType;->access$getMove$cp()I +HSPLandroidx/compose/ui/input/pointer/PointerEventType;->access$getPress$cp()I +HSPLandroidx/compose/ui/input/pointer/PointerEventType;->access$getRelease$cp()I +HSPLandroidx/compose/ui/input/pointer/PointerEventType;->access$getScroll$cp()I +HSPLandroidx/compose/ui/input/pointer/PointerEventType;->constructor-impl(I)I +HSPLandroidx/compose/ui/input/pointer/PointerEventType;->equals-impl0(II)Z +Landroidx/compose/ui/input/pointer/PointerEventType$Companion; +HSPLandroidx/compose/ui/input/pointer/PointerEventType$Companion;->()V +HSPLandroidx/compose/ui/input/pointer/PointerEventType$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/input/pointer/PointerEventType$Companion;->getEnter-7fucELk()I +HSPLandroidx/compose/ui/input/pointer/PointerEventType$Companion;->getExit-7fucELk()I +HSPLandroidx/compose/ui/input/pointer/PointerEventType$Companion;->getMove-7fucELk()I +HSPLandroidx/compose/ui/input/pointer/PointerEventType$Companion;->getPress-7fucELk()I +HSPLandroidx/compose/ui/input/pointer/PointerEventType$Companion;->getRelease-7fucELk()I +HSPLandroidx/compose/ui/input/pointer/PointerEventType$Companion;->getScroll-7fucELk()I +Landroidx/compose/ui/input/pointer/PointerEvent_androidKt; +HSPLandroidx/compose/ui/input/pointer/PointerEvent_androidKt;->EmptyPointerKeyboardModifiers()I +Landroidx/compose/ui/input/pointer/PointerIcon; +HSPLandroidx/compose/ui/input/pointer/PointerIcon;->()V +Landroidx/compose/ui/input/pointer/PointerIcon$Companion; +HSPLandroidx/compose/ui/input/pointer/PointerIcon$Companion;->()V +HSPLandroidx/compose/ui/input/pointer/PointerIcon$Companion;->()V +HSPLandroidx/compose/ui/input/pointer/PointerIcon$Companion;->getDefault()Landroidx/compose/ui/input/pointer/PointerIcon; +Landroidx/compose/ui/input/pointer/PointerIconKt; +HSPLandroidx/compose/ui/input/pointer/PointerIconKt;->()V +HSPLandroidx/compose/ui/input/pointer/PointerIconKt;->access$getModifierLocalPointerIcon$p()Landroidx/compose/ui/modifier/ProvidableModifierLocal; +HSPLandroidx/compose/ui/input/pointer/PointerIconKt;->pointerHoverIcon$default(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/input/pointer/PointerIcon;ZILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/input/pointer/PointerIconKt;->pointerHoverIcon(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/input/pointer/PointerIcon;Z)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/input/pointer/PointerIconKt$ModifierLocalPointerIcon$1; +HSPLandroidx/compose/ui/input/pointer/PointerIconKt$ModifierLocalPointerIcon$1;->()V +HSPLandroidx/compose/ui/input/pointer/PointerIconKt$ModifierLocalPointerIcon$1;->()V +HSPLandroidx/compose/ui/input/pointer/PointerIconKt$ModifierLocalPointerIcon$1;->invoke()Landroidx/compose/ui/input/pointer/PointerIconModifierLocal; +HSPLandroidx/compose/ui/input/pointer/PointerIconKt$ModifierLocalPointerIcon$1;->invoke()Ljava/lang/Object; +Landroidx/compose/ui/input/pointer/PointerIconKt$pointerHoverIcon$2; +HSPLandroidx/compose/ui/input/pointer/PointerIconKt$pointerHoverIcon$2;->(Landroidx/compose/ui/input/pointer/PointerIcon;Z)V +HSPLandroidx/compose/ui/input/pointer/PointerIconKt$pointerHoverIcon$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/input/pointer/PointerIconKt$pointerHoverIcon$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/input/pointer/PointerIconKt$pointerHoverIcon$2$1$1; +HSPLandroidx/compose/ui/input/pointer/PointerIconKt$pointerHoverIcon$2$1$1;->(Landroidx/compose/ui/input/pointer/PointerIconModifierLocal;Landroidx/compose/ui/input/pointer/PointerIcon;ZLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/input/pointer/PointerIconKt$pointerHoverIcon$2$1$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/input/pointer/PointerIconKt$pointerHoverIcon$2$1$1;->invoke()V +Landroidx/compose/ui/input/pointer/PointerIconKt$pointerHoverIcon$2$onSetIcon$1; +HSPLandroidx/compose/ui/input/pointer/PointerIconKt$pointerHoverIcon$2$onSetIcon$1;->(Landroidx/compose/ui/input/pointer/PointerIconService;)V +Landroidx/compose/ui/input/pointer/PointerIconKt$pointerHoverIcon$2$pointerInputModifier$1$1; +HSPLandroidx/compose/ui/input/pointer/PointerIconKt$pointerHoverIcon$2$pointerInputModifier$1$1;->(Landroidx/compose/ui/input/pointer/PointerIconModifierLocal;Lkotlin/coroutines/Continuation;)V +Landroidx/compose/ui/input/pointer/PointerIconModifierLocal; +HSPLandroidx/compose/ui/input/pointer/PointerIconModifierLocal;->(Landroidx/compose/ui/input/pointer/PointerIcon;ZLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/input/pointer/PointerIconModifierLocal;->getKey()Landroidx/compose/ui/modifier/ProvidableModifierLocal; +HSPLandroidx/compose/ui/input/pointer/PointerIconModifierLocal;->getParentInfo()Landroidx/compose/ui/input/pointer/PointerIconModifierLocal; +HSPLandroidx/compose/ui/input/pointer/PointerIconModifierLocal;->onModifierLocalsUpdated(Landroidx/compose/ui/modifier/ModifierLocalReadScope;)V +HSPLandroidx/compose/ui/input/pointer/PointerIconModifierLocal;->setParentInfo(Landroidx/compose/ui/input/pointer/PointerIconModifierLocal;)V +HSPLandroidx/compose/ui/input/pointer/PointerIconModifierLocal;->shouldUpdatePointerIcon()Z +HSPLandroidx/compose/ui/input/pointer/PointerIconModifierLocal;->updateValues(Landroidx/compose/ui/input/pointer/PointerIcon;ZLkotlin/jvm/functions/Function1;)V +Landroidx/compose/ui/input/pointer/PointerIconService; +Landroidx/compose/ui/input/pointer/PointerIcon_androidKt; +HSPLandroidx/compose/ui/input/pointer/PointerIcon_androidKt;->()V +HSPLandroidx/compose/ui/input/pointer/PointerIcon_androidKt;->PointerIcon(I)Landroidx/compose/ui/input/pointer/PointerIcon; +HSPLandroidx/compose/ui/input/pointer/PointerIcon_androidKt;->getPointerIconCrosshair()Landroidx/compose/ui/input/pointer/PointerIcon; +HSPLandroidx/compose/ui/input/pointer/PointerIcon_androidKt;->getPointerIconDefault()Landroidx/compose/ui/input/pointer/PointerIcon; +HSPLandroidx/compose/ui/input/pointer/PointerIcon_androidKt;->getPointerIconHand()Landroidx/compose/ui/input/pointer/PointerIcon; +HSPLandroidx/compose/ui/input/pointer/PointerIcon_androidKt;->getPointerIconText()Landroidx/compose/ui/input/pointer/PointerIcon; +Landroidx/compose/ui/input/pointer/PointerId; +HSPLandroidx/compose/ui/input/pointer/PointerId;->(J)V +HSPLandroidx/compose/ui/input/pointer/PointerId;->box-impl(J)Landroidx/compose/ui/input/pointer/PointerId; +HSPLandroidx/compose/ui/input/pointer/PointerId;->constructor-impl(J)J +HSPLandroidx/compose/ui/input/pointer/PointerId;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/input/pointer/PointerId;->equals-impl(JLjava/lang/Object;)Z +HSPLandroidx/compose/ui/input/pointer/PointerId;->equals-impl0(JJ)Z +HSPLandroidx/compose/ui/input/pointer/PointerId;->hashCode()I +HSPLandroidx/compose/ui/input/pointer/PointerId;->hashCode-impl(J)I +HSPLandroidx/compose/ui/input/pointer/PointerId;->unbox-impl()J +Landroidx/compose/ui/input/pointer/PointerInputChange; +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->()V +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->(JJJZFJJZZIJ)V +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->(JJJZFJJZZIJLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->(JJJZFJJZZILjava/util/List;J)V +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->(JJJZFJJZZILjava/util/List;JLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->consume()V +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->copy-OHpmEuE$default(Landroidx/compose/ui/input/pointer/PointerInputChange;JJJZJJZILjava/util/List;JILjava/lang/Object;)Landroidx/compose/ui/input/pointer/PointerInputChange; +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->copy-OHpmEuE(JJJZJJZILjava/util/List;J)Landroidx/compose/ui/input/pointer/PointerInputChange; +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->copy-wbzehF4(JJJZFJJZILjava/util/List;J)Landroidx/compose/ui/input/pointer/PointerInputChange; +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->getHistorical()Ljava/util/List; +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->getId-J3iCeTQ()J +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->getPosition-F1C5BW0()J +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->getPressed()Z +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->getPreviousPosition-F1C5BW0()J +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->getPreviousPressed()Z +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->getType-T8wyACA()I +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->getUptimeMillis()J +HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->isConsumed()Z +Landroidx/compose/ui/input/pointer/PointerInputChangeEventProducer; +HSPLandroidx/compose/ui/input/pointer/PointerInputChangeEventProducer;->()V +HSPLandroidx/compose/ui/input/pointer/PointerInputChangeEventProducer;->produce(Landroidx/compose/ui/input/pointer/PointerInputEvent;Landroidx/compose/ui/input/pointer/PositionCalculator;)Landroidx/compose/ui/input/pointer/InternalPointerEvent; +Landroidx/compose/ui/input/pointer/PointerInputChangeEventProducer$PointerInputData; +HSPLandroidx/compose/ui/input/pointer/PointerInputChangeEventProducer$PointerInputData;->(JJZI)V +HSPLandroidx/compose/ui/input/pointer/PointerInputChangeEventProducer$PointerInputData;->(JJZILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/input/pointer/PointerInputChangeEventProducer$PointerInputData;->getDown()Z +HSPLandroidx/compose/ui/input/pointer/PointerInputChangeEventProducer$PointerInputData;->getPositionOnScreen-F1C5BW0()J +HSPLandroidx/compose/ui/input/pointer/PointerInputChangeEventProducer$PointerInputData;->getUptime()J +Landroidx/compose/ui/input/pointer/PointerInputEvent; +HSPLandroidx/compose/ui/input/pointer/PointerInputEvent;->(JLjava/util/List;Landroid/view/MotionEvent;)V +HSPLandroidx/compose/ui/input/pointer/PointerInputEvent;->getMotionEvent()Landroid/view/MotionEvent; +HSPLandroidx/compose/ui/input/pointer/PointerInputEvent;->getPointers()Ljava/util/List; +Landroidx/compose/ui/input/pointer/PointerInputEventData; +HSPLandroidx/compose/ui/input/pointer/PointerInputEventData;->(JJJJZFIZLjava/util/List;J)V +HSPLandroidx/compose/ui/input/pointer/PointerInputEventData;->(JJJJZFIZLjava/util/List;JLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/input/pointer/PointerInputEventData;->getDown()Z +HSPLandroidx/compose/ui/input/pointer/PointerInputEventData;->getHistorical()Ljava/util/List; +HSPLandroidx/compose/ui/input/pointer/PointerInputEventData;->getId-J3iCeTQ()J +HSPLandroidx/compose/ui/input/pointer/PointerInputEventData;->getIssuesEnterExit()Z +HSPLandroidx/compose/ui/input/pointer/PointerInputEventData;->getPosition-F1C5BW0()J +HSPLandroidx/compose/ui/input/pointer/PointerInputEventData;->getPositionOnScreen-F1C5BW0()J +HSPLandroidx/compose/ui/input/pointer/PointerInputEventData;->getPressure()F +HSPLandroidx/compose/ui/input/pointer/PointerInputEventData;->getScrollDelta-F1C5BW0()J +HSPLandroidx/compose/ui/input/pointer/PointerInputEventData;->getType-T8wyACA()I +HSPLandroidx/compose/ui/input/pointer/PointerInputEventData;->getUptime()J +Landroidx/compose/ui/input/pointer/PointerInputEventProcessor; +HSPLandroidx/compose/ui/input/pointer/PointerInputEventProcessor;->(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/input/pointer/PointerInputEventProcessor;->process-BIzXfog(Landroidx/compose/ui/input/pointer/PointerInputEvent;Landroidx/compose/ui/input/pointer/PositionCalculator;Z)I +Landroidx/compose/ui/input/pointer/PointerInputEventProcessorKt; +HSPLandroidx/compose/ui/input/pointer/PointerInputEventProcessorKt;->ProcessResult(ZZ)I +Landroidx/compose/ui/input/pointer/PointerInputModifier; +Landroidx/compose/ui/input/pointer/PointerInputResetException; +PLandroidx/compose/ui/input/pointer/PointerInputResetException;->()V +PLandroidx/compose/ui/input/pointer/PointerInputResetException;->fillInStackTrace()Ljava/lang/Throwable; +Landroidx/compose/ui/input/pointer/PointerInputScope; +Landroidx/compose/ui/input/pointer/PointerKeyboardModifiers; +HSPLandroidx/compose/ui/input/pointer/PointerKeyboardModifiers;->(I)V +HSPLandroidx/compose/ui/input/pointer/PointerKeyboardModifiers;->box-impl(I)Landroidx/compose/ui/input/pointer/PointerKeyboardModifiers; +HSPLandroidx/compose/ui/input/pointer/PointerKeyboardModifiers;->constructor-impl(I)I +HSPLandroidx/compose/ui/input/pointer/PointerKeyboardModifiers;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/input/pointer/PointerKeyboardModifiers;->equals-impl(ILjava/lang/Object;)Z +HSPLandroidx/compose/ui/input/pointer/PointerKeyboardModifiers;->unbox-impl()I +Landroidx/compose/ui/input/pointer/PointerType; +HSPLandroidx/compose/ui/input/pointer/PointerType;->()V +HSPLandroidx/compose/ui/input/pointer/PointerType;->access$getMouse$cp()I +HSPLandroidx/compose/ui/input/pointer/PointerType;->access$getTouch$cp()I +HSPLandroidx/compose/ui/input/pointer/PointerType;->constructor-impl(I)I +HSPLandroidx/compose/ui/input/pointer/PointerType;->equals-impl0(II)Z +Landroidx/compose/ui/input/pointer/PointerType$Companion; +HSPLandroidx/compose/ui/input/pointer/PointerType$Companion;->()V +HSPLandroidx/compose/ui/input/pointer/PointerType$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/input/pointer/PointerType$Companion;->getMouse-T8wyACA()I +HSPLandroidx/compose/ui/input/pointer/PointerType$Companion;->getTouch-T8wyACA()I +Landroidx/compose/ui/input/pointer/PositionCalculator; +Landroidx/compose/ui/input/pointer/ProcessResult; +HSPLandroidx/compose/ui/input/pointer/ProcessResult;->constructor-impl(I)I +HSPLandroidx/compose/ui/input/pointer/ProcessResult;->getAnyMovementConsumed-impl(I)Z +HSPLandroidx/compose/ui/input/pointer/ProcessResult;->getDispatchedToAPointerInputModifier-impl(I)Z +Landroidx/compose/ui/input/pointer/SuspendPointerInputElement; +HSPLandroidx/compose/ui/input/pointer/SuspendPointerInputElement;->(Ljava/lang/Object;Ljava/lang/Object;[Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/input/pointer/SuspendPointerInputElement;->(Ljava/lang/Object;Ljava/lang/Object;[Ljava/lang/Object;Lkotlin/jvm/functions/Function2;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/input/pointer/SuspendPointerInputElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/input/pointer/SuspendPointerInputElement;->create()Landroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl; +HSPLandroidx/compose/ui/input/pointer/SuspendPointerInputElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt;->()V +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt;->SuspendingPointerInputModifierNode(Lkotlin/jvm/functions/Function2;)Landroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNode; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt;->access$getEmptyPointerEvent$p()Landroidx/compose/ui/input/pointer/PointerEvent; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt;->pointerInput(Landroidx/compose/ui/Modifier;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNode; +Landroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl;->(Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl;->access$getCurrentEvent$p(Landroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl;)Landroidx/compose/ui/input/pointer/PointerEvent; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl;->access$getPointerHandlers$p(Landroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl;)Landroidx/compose/runtime/collection/MutableVector; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl;->awaitPointerEventScope(Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl;->dispatchPointerEvent(Landroidx/compose/ui/input/pointer/PointerEvent;Landroidx/compose/ui/input/pointer/PointerEventPass;)V +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl;->getPointerInputHandler()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl;->getSize-YbymL2g()J +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl;->getViewConfiguration()Landroidx/compose/ui/platform/ViewConfiguration; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl;->onDetach()V +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl;->onPointerEvent-H0pRuoY(Landroidx/compose/ui/input/pointer/PointerEvent;Landroidx/compose/ui/input/pointer/PointerEventPass;J)V +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl;->resetPointerInputHandler()V +Landroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine;->(Landroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine;->access$setAwaitPass$p(Landroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine;Landroidx/compose/ui/input/pointer/PointerEventPass;)V +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine;->access$setPointerAwaiter$p(Landroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine;Lkotlinx/coroutines/CancellableContinuation;)V +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine;->awaitPointerEvent(Landroidx/compose/ui/input/pointer/PointerEventPass;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine;->cancel(Ljava/lang/Throwable;)V +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine;->getContext()Lkotlin/coroutines/CoroutineContext; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine;->getCurrentEvent()Landroidx/compose/ui/input/pointer/PointerEvent; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine;->getViewConfiguration()Landroidx/compose/ui/platform/ViewConfiguration; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine;->offerPointerEvent(Landroidx/compose/ui/input/pointer/PointerEvent;Landroidx/compose/ui/input/pointer/PointerEventPass;)V +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine;->resumeWith(Ljava/lang/Object;)V +Landroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$WhenMappings; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$WhenMappings;->()V +Landroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$awaitPointerEventScope$2$2; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$awaitPointerEventScope$2$2;->(Landroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine;)V +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$awaitPointerEventScope$2$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$awaitPointerEventScope$2$2;->invoke(Ljava/lang/Throwable;)V +Landroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$onPointerEvent$1; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$onPointerEvent$1;->(Landroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$onPointerEvent$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$onPointerEvent$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$onPointerEvent$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputModifierNodeImpl$onPointerEvent$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/input/pointer/util/DataPointAtTime; +HSPLandroidx/compose/ui/input/pointer/util/DataPointAtTime;->(JF)V +Landroidx/compose/ui/input/pointer/util/VelocityTracker; +HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker;->()V +HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker;->()V +HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker;->addPosition-Uv8p0NA(JJ)V +HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker;->getCurrentPointerPositionAccumulator-F1C5BW0$ui_release()J +HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker;->resetTracking()V +HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker;->setCurrentPointerPositionAccumulator-k-4lQ0M$ui_release(J)V +Landroidx/compose/ui/input/pointer/util/VelocityTracker1D; +HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker1D;->()V +HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker1D;->(ZLandroidx/compose/ui/input/pointer/util/VelocityTracker1D$Strategy;)V +HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker1D;->(ZLandroidx/compose/ui/input/pointer/util/VelocityTracker1D$Strategy;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker1D;->addDataPoint(JF)V +HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker1D;->resetTracking()V +Landroidx/compose/ui/input/pointer/util/VelocityTracker1D$Strategy; +HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker1D$Strategy;->$values()[Landroidx/compose/ui/input/pointer/util/VelocityTracker1D$Strategy; +HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker1D$Strategy;->()V +HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker1D$Strategy;->(Ljava/lang/String;I)V +HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker1D$Strategy;->values()[Landroidx/compose/ui/input/pointer/util/VelocityTracker1D$Strategy; +Landroidx/compose/ui/input/pointer/util/VelocityTracker1D$WhenMappings; +HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker1D$WhenMappings;->()V +Landroidx/compose/ui/input/pointer/util/VelocityTrackerKt; +HSPLandroidx/compose/ui/input/pointer/util/VelocityTrackerKt;->access$set([Landroidx/compose/ui/input/pointer/util/DataPointAtTime;IJF)V +HSPLandroidx/compose/ui/input/pointer/util/VelocityTrackerKt;->addPointerInputChange(Landroidx/compose/ui/input/pointer/util/VelocityTracker;Landroidx/compose/ui/input/pointer/PointerInputChange;)V +HSPLandroidx/compose/ui/input/pointer/util/VelocityTrackerKt;->set([Landroidx/compose/ui/input/pointer/util/DataPointAtTime;IJF)V +Landroidx/compose/ui/input/rotary/RotaryInputElement; +HSPLandroidx/compose/ui/input/rotary/RotaryInputElement;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/input/rotary/RotaryInputElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/input/rotary/RotaryInputElement;->create()Landroidx/compose/ui/input/rotary/RotaryInputNode; +Landroidx/compose/ui/input/rotary/RotaryInputModifierKt; +HSPLandroidx/compose/ui/input/rotary/RotaryInputModifierKt;->onRotaryScrollEvent(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/input/rotary/RotaryInputModifierNode; +Landroidx/compose/ui/input/rotary/RotaryInputNode; +HSPLandroidx/compose/ui/input/rotary/RotaryInputNode;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/ui/layout/AlignmentLine; +HSPLandroidx/compose/ui/layout/AlignmentLine;->()V +HSPLandroidx/compose/ui/layout/AlignmentLine;->(Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/layout/AlignmentLine;->(Lkotlin/jvm/functions/Function2;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/layout/AlignmentLine$Companion; +HSPLandroidx/compose/ui/layout/AlignmentLine$Companion;->()V +HSPLandroidx/compose/ui/layout/AlignmentLine$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/layout/AlignmentLineKt; +HSPLandroidx/compose/ui/layout/AlignmentLineKt;->()V +HSPLandroidx/compose/ui/layout/AlignmentLineKt;->getFirstBaseline()Landroidx/compose/ui/layout/HorizontalAlignmentLine; +HSPLandroidx/compose/ui/layout/AlignmentLineKt;->getLastBaseline()Landroidx/compose/ui/layout/HorizontalAlignmentLine; +Landroidx/compose/ui/layout/AlignmentLineKt$FirstBaseline$1; +HSPLandroidx/compose/ui/layout/AlignmentLineKt$FirstBaseline$1;->()V +HSPLandroidx/compose/ui/layout/AlignmentLineKt$FirstBaseline$1;->()V +Landroidx/compose/ui/layout/AlignmentLineKt$LastBaseline$1; +HSPLandroidx/compose/ui/layout/AlignmentLineKt$LastBaseline$1;->()V +HSPLandroidx/compose/ui/layout/AlignmentLineKt$LastBaseline$1;->()V +Landroidx/compose/ui/layout/BeyondBoundsLayout; +Landroidx/compose/ui/layout/BeyondBoundsLayout$BeyondBoundsScope; +Landroidx/compose/ui/layout/ComposableSingletons$SubcomposeLayoutKt; +HSPLandroidx/compose/ui/layout/ComposableSingletons$SubcomposeLayoutKt;->()V +HSPLandroidx/compose/ui/layout/ComposableSingletons$SubcomposeLayoutKt;->()V +HSPLandroidx/compose/ui/layout/ComposableSingletons$SubcomposeLayoutKt;->getLambda-1$ui_release()Lkotlin/jvm/functions/Function2; +Landroidx/compose/ui/layout/ComposableSingletons$SubcomposeLayoutKt$lambda-1$1; +HSPLandroidx/compose/ui/layout/ComposableSingletons$SubcomposeLayoutKt$lambda-1$1;->()V +HSPLandroidx/compose/ui/layout/ComposableSingletons$SubcomposeLayoutKt$lambda-1$1;->()V +Landroidx/compose/ui/layout/ContentScale; +HSPLandroidx/compose/ui/layout/ContentScale;->()V +Landroidx/compose/ui/layout/ContentScale$Companion; +HSPLandroidx/compose/ui/layout/ContentScale$Companion;->()V +HSPLandroidx/compose/ui/layout/ContentScale$Companion;->()V +HSPLandroidx/compose/ui/layout/ContentScale$Companion;->getFit()Landroidx/compose/ui/layout/ContentScale; +Landroidx/compose/ui/layout/ContentScale$Companion$Crop$1; +HSPLandroidx/compose/ui/layout/ContentScale$Companion$Crop$1;->()V +Landroidx/compose/ui/layout/ContentScale$Companion$FillBounds$1; +HSPLandroidx/compose/ui/layout/ContentScale$Companion$FillBounds$1;->()V +Landroidx/compose/ui/layout/ContentScale$Companion$FillHeight$1; +HSPLandroidx/compose/ui/layout/ContentScale$Companion$FillHeight$1;->()V +Landroidx/compose/ui/layout/ContentScale$Companion$FillWidth$1; +HSPLandroidx/compose/ui/layout/ContentScale$Companion$FillWidth$1;->()V +Landroidx/compose/ui/layout/ContentScale$Companion$Fit$1; +HSPLandroidx/compose/ui/layout/ContentScale$Companion$Fit$1;->()V +HSPLandroidx/compose/ui/layout/ContentScale$Companion$Fit$1;->computeScaleFactor-H7hwNQA(JJ)J +Landroidx/compose/ui/layout/ContentScale$Companion$Inside$1; +HSPLandroidx/compose/ui/layout/ContentScale$Companion$Inside$1;->()V +Landroidx/compose/ui/layout/ContentScaleKt; +HSPLandroidx/compose/ui/layout/ContentScaleKt;->access$computeFillMinDimension-iLBOSCw(JJ)F +HSPLandroidx/compose/ui/layout/ContentScaleKt;->computeFillHeight-iLBOSCw(JJ)F +HSPLandroidx/compose/ui/layout/ContentScaleKt;->computeFillMinDimension-iLBOSCw(JJ)F +HSPLandroidx/compose/ui/layout/ContentScaleKt;->computeFillWidth-iLBOSCw(JJ)F +Landroidx/compose/ui/layout/DefaultIntrinsicMeasurable; +HSPLandroidx/compose/ui/layout/DefaultIntrinsicMeasurable;->(Landroidx/compose/ui/layout/IntrinsicMeasurable;Landroidx/compose/ui/layout/IntrinsicMinMax;Landroidx/compose/ui/layout/IntrinsicWidthHeight;)V +HSPLandroidx/compose/ui/layout/DefaultIntrinsicMeasurable;->measure-BRTryo0(J)Landroidx/compose/ui/layout/Placeable; +Landroidx/compose/ui/layout/FixedScale; +HSPLandroidx/compose/ui/layout/FixedScale;->()V +HSPLandroidx/compose/ui/layout/FixedScale;->(F)V +Landroidx/compose/ui/layout/FixedSizeIntrinsicsPlaceable; +HSPLandroidx/compose/ui/layout/FixedSizeIntrinsicsPlaceable;->(II)V +Landroidx/compose/ui/layout/GraphicLayerInfo; +Landroidx/compose/ui/layout/HorizontalAlignmentLine; +HSPLandroidx/compose/ui/layout/HorizontalAlignmentLine;->()V +HSPLandroidx/compose/ui/layout/HorizontalAlignmentLine;->(Lkotlin/jvm/functions/Function2;)V +Landroidx/compose/ui/layout/IntermediateLayoutModifierNode; +Landroidx/compose/ui/layout/IntrinsicMeasurable; +Landroidx/compose/ui/layout/IntrinsicMeasureScope; +Landroidx/compose/ui/layout/IntrinsicMinMax; +HSPLandroidx/compose/ui/layout/IntrinsicMinMax;->$values()[Landroidx/compose/ui/layout/IntrinsicMinMax; +HSPLandroidx/compose/ui/layout/IntrinsicMinMax;->()V +HSPLandroidx/compose/ui/layout/IntrinsicMinMax;->(Ljava/lang/String;I)V +Landroidx/compose/ui/layout/IntrinsicWidthHeight; +HSPLandroidx/compose/ui/layout/IntrinsicWidthHeight;->$values()[Landroidx/compose/ui/layout/IntrinsicWidthHeight; +HSPLandroidx/compose/ui/layout/IntrinsicWidthHeight;->()V +HSPLandroidx/compose/ui/layout/IntrinsicWidthHeight;->(Ljava/lang/String;I)V +Landroidx/compose/ui/layout/IntrinsicsMeasureScope; +HSPLandroidx/compose/ui/layout/IntrinsicsMeasureScope;->(Landroidx/compose/ui/layout/IntrinsicMeasureScope;Landroidx/compose/ui/unit/LayoutDirection;)V +Landroidx/compose/ui/layout/LayoutCoordinates; +HSPLandroidx/compose/ui/layout/LayoutCoordinates;->localBoundingBoxOf$default(Landroidx/compose/ui/layout/LayoutCoordinates;Landroidx/compose/ui/layout/LayoutCoordinates;ZILjava/lang/Object;)Landroidx/compose/ui/geometry/Rect; +Landroidx/compose/ui/layout/LayoutCoordinatesKt; +HSPLandroidx/compose/ui/layout/LayoutCoordinatesKt;->boundsInRoot(Landroidx/compose/ui/layout/LayoutCoordinates;)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/layout/LayoutCoordinatesKt;->boundsInWindow(Landroidx/compose/ui/layout/LayoutCoordinates;)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/layout/LayoutCoordinatesKt;->findRootCoordinates(Landroidx/compose/ui/layout/LayoutCoordinates;)Landroidx/compose/ui/layout/LayoutCoordinates; +HSPLandroidx/compose/ui/layout/LayoutCoordinatesKt;->positionInRoot(Landroidx/compose/ui/layout/LayoutCoordinates;)J +HSPLandroidx/compose/ui/layout/LayoutCoordinatesKt;->positionInWindow(Landroidx/compose/ui/layout/LayoutCoordinates;)J +Landroidx/compose/ui/layout/LayoutElement; +HSPLandroidx/compose/ui/layout/LayoutElement;->(Lkotlin/jvm/functions/Function3;)V +HSPLandroidx/compose/ui/layout/LayoutElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/layout/LayoutElement;->create()Landroidx/compose/ui/layout/LayoutModifierImpl; +HSPLandroidx/compose/ui/layout/LayoutElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/layout/LayoutElement;->update(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/layout/LayoutElement;->update(Landroidx/compose/ui/layout/LayoutModifierImpl;)V +Landroidx/compose/ui/layout/LayoutIdElement; +HSPLandroidx/compose/ui/layout/LayoutIdElement;->(Ljava/lang/Object;)V +HSPLandroidx/compose/ui/layout/LayoutIdElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/layout/LayoutIdElement;->create()Landroidx/compose/ui/layout/LayoutIdModifier; +HSPLandroidx/compose/ui/layout/LayoutIdElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/ui/layout/LayoutIdKt; +HSPLandroidx/compose/ui/layout/LayoutIdKt;->getLayoutId(Landroidx/compose/ui/layout/Measurable;)Ljava/lang/Object; +HSPLandroidx/compose/ui/layout/LayoutIdKt;->layoutId(Landroidx/compose/ui/Modifier;Ljava/lang/Object;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/layout/LayoutIdModifier; +HSPLandroidx/compose/ui/layout/LayoutIdModifier;->(Ljava/lang/Object;)V +HSPLandroidx/compose/ui/layout/LayoutIdModifier;->getLayoutId()Ljava/lang/Object; +HSPLandroidx/compose/ui/layout/LayoutIdModifier;->modifyParentData(Landroidx/compose/ui/unit/Density;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/layout/LayoutIdParentData; +Landroidx/compose/ui/layout/LayoutInfo; +Landroidx/compose/ui/layout/LayoutKt; +HSPLandroidx/compose/ui/layout/LayoutKt;->materializerOf(Landroidx/compose/ui/Modifier;)Lkotlin/jvm/functions/Function3; +HSPLandroidx/compose/ui/layout/LayoutKt;->modifierMaterializerOf(Landroidx/compose/ui/Modifier;)Lkotlin/jvm/functions/Function3; +Landroidx/compose/ui/layout/LayoutKt$materializerOf$1; +HSPLandroidx/compose/ui/layout/LayoutKt$materializerOf$1;->(Landroidx/compose/ui/Modifier;)V +HSPLandroidx/compose/ui/layout/LayoutKt$materializerOf$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/layout/LayoutKt$materializerOf$1;->invoke-Deg8D_g(Landroidx/compose/runtime/Composer;Landroidx/compose/runtime/Composer;I)V +Landroidx/compose/ui/layout/LayoutKt$materializerOfWithCompositionLocalInjection$1; +HSPLandroidx/compose/ui/layout/LayoutKt$materializerOfWithCompositionLocalInjection$1;->(Landroidx/compose/ui/Modifier;)V +HSPLandroidx/compose/ui/layout/LayoutKt$materializerOfWithCompositionLocalInjection$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/layout/LayoutKt$materializerOfWithCompositionLocalInjection$1;->invoke-Deg8D_g(Landroidx/compose/runtime/Composer;Landroidx/compose/runtime/Composer;I)V +Landroidx/compose/ui/layout/LayoutModifier; +Landroidx/compose/ui/layout/LayoutModifierImpl; +HSPLandroidx/compose/ui/layout/LayoutModifierImpl;->(Lkotlin/jvm/functions/Function3;)V +HSPLandroidx/compose/ui/layout/LayoutModifierImpl;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/ui/layout/LayoutModifierImpl;->setMeasureBlock(Lkotlin/jvm/functions/Function3;)V +Landroidx/compose/ui/layout/LayoutModifierKt; +HSPLandroidx/compose/ui/layout/LayoutModifierKt;->layout(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function3;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/layout/SubcomposeSlotReusePolicy;)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->access$getCurrentIndex$p(Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;)I +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->access$getIntermediateMeasureScope$p(Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;)Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState$IntermediateMeasureScopeImpl; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->access$getRoot$p(Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;)Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->access$getScope$p(Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;)Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState$Scope; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->access$setCurrentIndex$p(Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;I)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->createMeasurePolicy(Lkotlin/jvm/functions/Function2;)Landroidx/compose/ui/layout/MeasurePolicy; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->createNodeAt(I)Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->disposeOrReuseStartingFromIndex(I)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->forceRecomposeChildren()V +PLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->getSlotIdAtIndex(I)Ljava/lang/Object; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->makeSureStateIsConsistent()V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->setCompositionContext(Landroidx/compose/runtime/CompositionContext;)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->setIntermediateMeasurePolicy$ui_release(Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->setSlotReusePolicy(Landroidx/compose/ui/layout/SubcomposeSlotReusePolicy;)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->subcompose(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->subcompose(Landroidx/compose/ui/node/LayoutNode;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->subcompose(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/util/List; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->subcomposeInto(Landroidx/compose/runtime/Composition;Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/runtime/CompositionContext;Lkotlin/jvm/functions/Function2;)Landroidx/compose/runtime/Composition; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->takeNodeFromReusables(Ljava/lang/Object;)Landroidx/compose/ui/node/LayoutNode; +Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState$IntermediateMeasureScopeImpl; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$IntermediateMeasureScopeImpl;->(Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$IntermediateMeasureScopeImpl;->setLookaheadConstraints-BRTryo0(J)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$IntermediateMeasureScopeImpl;->setLookaheadMeasurePolicy(Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$IntermediateMeasureScopeImpl;->setLookaheadSize-ozmzZPI(J)V +Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;->(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composition;)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;->(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composition;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;->getActive()Z +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;->getComposition()Landroidx/compose/runtime/Composition; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;->getContent()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;->getForceRecompose()Z +PLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;->getSlotId()Ljava/lang/Object; +PLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;->setActive(Z)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;->setComposition(Landroidx/compose/runtime/Composition;)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;->setContent(Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;->setForceRecompose(Z)V +Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState$Scope; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$Scope;->(Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$Scope;->getDensity()F +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$Scope;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$Scope;->setDensity(F)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$Scope;->setFontScale(F)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$Scope;->setLayoutDirection(Landroidx/compose/ui/unit/LayoutDirection;)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$Scope;->subcompose(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/util/List; +Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState$createMeasurePolicy$1; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$createMeasurePolicy$1;->(Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;Lkotlin/jvm/functions/Function2;Ljava/lang/String;)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$createMeasurePolicy$1;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState$createMeasurePolicy$1$measure$1; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$createMeasurePolicy$1$measure$1;->(Landroidx/compose/ui/layout/MeasureResult;Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;I)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$createMeasurePolicy$1$measure$1;->getAlignmentLines()Ljava/util/Map; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$createMeasurePolicy$1$measure$1;->getHeight()I +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$createMeasurePolicy$1$measure$1;->getWidth()I +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$createMeasurePolicy$1$measure$1;->placeChildren()V +Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState$intermediateMeasurePolicy$1; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$intermediateMeasurePolicy$1;->()V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$intermediateMeasurePolicy$1;->()V +Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState$subcompose$3$1$1; +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$subcompose$3$1$1;->(Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$subcompose$3$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$subcompose$3$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/layout/LookaheadLayoutCoordinates; +Landroidx/compose/ui/layout/LookaheadLayoutCoordinatesImpl; +Landroidx/compose/ui/layout/Measurable; +Landroidx/compose/ui/layout/MeasurePolicy; +HSPLandroidx/compose/ui/layout/MeasurePolicy;->maxIntrinsicWidth(Landroidx/compose/ui/layout/IntrinsicMeasureScope;Ljava/util/List;I)I +Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/ui/layout/MeasureScope; +HSPLandroidx/compose/ui/layout/MeasureScope;->layout$default(Landroidx/compose/ui/layout/MeasureScope;IILjava/util/Map;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/ui/layout/MeasureScope;->layout(IILjava/util/Map;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/ui/layout/MeasureScope$layout$1; +HSPLandroidx/compose/ui/layout/MeasureScope$layout$1;->(IILjava/util/Map;Landroidx/compose/ui/layout/MeasureScope;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/layout/MeasureScope$layout$1;->getAlignmentLines()Ljava/util/Map; +HSPLandroidx/compose/ui/layout/MeasureScope$layout$1;->getHeight()I +HSPLandroidx/compose/ui/layout/MeasureScope$layout$1;->getWidth()I +HSPLandroidx/compose/ui/layout/MeasureScope$layout$1;->placeChildren()V +Landroidx/compose/ui/layout/Measured; +Landroidx/compose/ui/layout/NoOpSubcomposeSlotReusePolicy; +HSPLandroidx/compose/ui/layout/NoOpSubcomposeSlotReusePolicy;->()V +HSPLandroidx/compose/ui/layout/NoOpSubcomposeSlotReusePolicy;->()V +Landroidx/compose/ui/layout/OnGloballyPositionedElement; +HSPLandroidx/compose/ui/layout/OnGloballyPositionedElement;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/layout/OnGloballyPositionedElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/layout/OnGloballyPositionedElement;->create()Landroidx/compose/ui/layout/OnGloballyPositionedNode; +HSPLandroidx/compose/ui/layout/OnGloballyPositionedElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/layout/OnGloballyPositionedElement;->update(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/layout/OnGloballyPositionedElement;->update(Landroidx/compose/ui/layout/OnGloballyPositionedNode;)V +Landroidx/compose/ui/layout/OnGloballyPositionedModifier; +Landroidx/compose/ui/layout/OnGloballyPositionedModifierKt; +HSPLandroidx/compose/ui/layout/OnGloballyPositionedModifierKt;->onGloballyPositioned(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/layout/OnGloballyPositionedNode; +HSPLandroidx/compose/ui/layout/OnGloballyPositionedNode;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/layout/OnGloballyPositionedNode;->onGloballyPositioned(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/ui/layout/OnGloballyPositionedNode;->setCallback(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/ui/layout/OnPlacedModifier; +Landroidx/compose/ui/layout/OnRemeasuredModifier; +Landroidx/compose/ui/layout/OnRemeasuredModifierKt; +HSPLandroidx/compose/ui/layout/OnRemeasuredModifierKt;->onSizeChanged(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/layout/OnSizeChangedModifier; +HSPLandroidx/compose/ui/layout/OnSizeChangedModifier;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/layout/OnSizeChangedModifier;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/layout/OnSizeChangedModifier;->onRemeasured-ozmzZPI(J)V +Landroidx/compose/ui/layout/ParentDataModifier; +Landroidx/compose/ui/layout/PinnableContainer; +Landroidx/compose/ui/layout/PinnableContainer$PinnedHandle; +Landroidx/compose/ui/layout/PinnableContainerKt; +HSPLandroidx/compose/ui/layout/PinnableContainerKt;->()V +HSPLandroidx/compose/ui/layout/PinnableContainerKt;->getLocalPinnableContainer()Landroidx/compose/runtime/ProvidableCompositionLocal; +Landroidx/compose/ui/layout/PinnableContainerKt$LocalPinnableContainer$1; +HSPLandroidx/compose/ui/layout/PinnableContainerKt$LocalPinnableContainer$1;->()V +HSPLandroidx/compose/ui/layout/PinnableContainerKt$LocalPinnableContainer$1;->()V +HSPLandroidx/compose/ui/layout/PinnableContainerKt$LocalPinnableContainer$1;->invoke()Landroidx/compose/ui/layout/PinnableContainer; +HSPLandroidx/compose/ui/layout/PinnableContainerKt$LocalPinnableContainer$1;->invoke()Ljava/lang/Object; +Landroidx/compose/ui/layout/Placeable; +HSPLandroidx/compose/ui/layout/Placeable;->()V +HSPLandroidx/compose/ui/layout/Placeable;->()V +HSPLandroidx/compose/ui/layout/Placeable;->access$getApparentToRealOffset-nOcc-ac(Landroidx/compose/ui/layout/Placeable;)J +HSPLandroidx/compose/ui/layout/Placeable;->access$placeAt-f8xVGno(Landroidx/compose/ui/layout/Placeable;JFLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/layout/Placeable;->getApparentToRealOffset-nOcc-ac()J +HSPLandroidx/compose/ui/layout/Placeable;->getHeight()I +HSPLandroidx/compose/ui/layout/Placeable;->getMeasuredHeight()I +HSPLandroidx/compose/ui/layout/Placeable;->getMeasuredSize-YbymL2g()J +HSPLandroidx/compose/ui/layout/Placeable;->getMeasuredWidth()I +HSPLandroidx/compose/ui/layout/Placeable;->getMeasurementConstraints-msEJaDk()J +HSPLandroidx/compose/ui/layout/Placeable;->getWidth()I +HSPLandroidx/compose/ui/layout/Placeable;->onMeasuredSizeChanged()V +HSPLandroidx/compose/ui/layout/Placeable;->setMeasuredSize-ozmzZPI(J)V +HSPLandroidx/compose/ui/layout/Placeable;->setMeasurementConstraints-BRTryo0(J)V +Landroidx/compose/ui/layout/Placeable$PlacementScope; +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->()V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->()V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->access$getLayoutDelegate$cp()Landroidx/compose/ui/node/LayoutNodeLayoutDelegate; +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->access$getParentLayoutDirection$cp()Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->access$getParentLayoutDirection(Landroidx/compose/ui/layout/Placeable$PlacementScope;)Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->access$getParentWidth$cp()I +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->access$get_coordinates$cp()Landroidx/compose/ui/layout/LayoutCoordinates; +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->access$setLayoutDelegate$cp(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;)V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->access$setParentLayoutDirection$cp(Landroidx/compose/ui/unit/LayoutDirection;)V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->access$setParentWidth$cp(I)V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->access$set_coordinates$cp(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->place$default(Landroidx/compose/ui/layout/Placeable$PlacementScope;Landroidx/compose/ui/layout/Placeable;IIFILjava/lang/Object;)V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->place(Landroidx/compose/ui/layout/Placeable;IIF)V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->place-70tqf50$default(Landroidx/compose/ui/layout/Placeable$PlacementScope;Landroidx/compose/ui/layout/Placeable;JFILjava/lang/Object;)V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->place-70tqf50(Landroidx/compose/ui/layout/Placeable;JF)V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->placeRelative$default(Landroidx/compose/ui/layout/Placeable$PlacementScope;Landroidx/compose/ui/layout/Placeable;IIFILjava/lang/Object;)V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->placeRelative(Landroidx/compose/ui/layout/Placeable;IIF)V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->placeRelativeWithLayer$default(Landroidx/compose/ui/layout/Placeable$PlacementScope;Landroidx/compose/ui/layout/Placeable;IIFLkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->placeRelativeWithLayer(Landroidx/compose/ui/layout/Placeable;IIFLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->placeWithLayer$default(Landroidx/compose/ui/layout/Placeable$PlacementScope;Landroidx/compose/ui/layout/Placeable;IIFLkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->placeWithLayer(Landroidx/compose/ui/layout/Placeable;IIFLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->placeWithLayer-aW-9-wM$default(Landroidx/compose/ui/layout/Placeable$PlacementScope;Landroidx/compose/ui/layout/Placeable;JFLkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->placeWithLayer-aW-9-wM(Landroidx/compose/ui/layout/Placeable;JFLkotlin/jvm/functions/Function1;)V +Landroidx/compose/ui/layout/Placeable$PlacementScope$Companion; +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope$Companion;->()V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope$Companion;->access$configureForPlacingForAlignment(Landroidx/compose/ui/layout/Placeable$PlacementScope$Companion;Landroidx/compose/ui/node/LookaheadCapablePlaceable;)Z +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope$Companion;->access$getParentLayoutDirection(Landroidx/compose/ui/layout/Placeable$PlacementScope$Companion;)Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope$Companion;->access$getParentWidth(Landroidx/compose/ui/layout/Placeable$PlacementScope$Companion;)I +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope$Companion;->configureForPlacingForAlignment(Landroidx/compose/ui/node/LookaheadCapablePlaceable;)Z +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope$Companion;->getParentLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/layout/Placeable$PlacementScope$Companion;->getParentWidth()I +Landroidx/compose/ui/layout/PlaceableKt; +HSPLandroidx/compose/ui/layout/PlaceableKt;->()V +HSPLandroidx/compose/ui/layout/PlaceableKt;->access$getDefaultConstraints$p()J +HSPLandroidx/compose/ui/layout/PlaceableKt;->access$getDefaultLayerBlock$p()Lkotlin/jvm/functions/Function1; +Landroidx/compose/ui/layout/PlaceableKt$DefaultLayerBlock$1; +HSPLandroidx/compose/ui/layout/PlaceableKt$DefaultLayerBlock$1;->()V +HSPLandroidx/compose/ui/layout/PlaceableKt$DefaultLayerBlock$1;->()V +HSPLandroidx/compose/ui/layout/PlaceableKt$DefaultLayerBlock$1;->invoke(Landroidx/compose/ui/graphics/GraphicsLayerScope;)V +HSPLandroidx/compose/ui/layout/PlaceableKt$DefaultLayerBlock$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/layout/Remeasurement; +Landroidx/compose/ui/layout/RemeasurementModifier; +Landroidx/compose/ui/layout/RootMeasurePolicy; +HSPLandroidx/compose/ui/layout/RootMeasurePolicy;->()V +HSPLandroidx/compose/ui/layout/RootMeasurePolicy;->()V +HSPLandroidx/compose/ui/layout/RootMeasurePolicy;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/ui/layout/RootMeasurePolicy$measure$2; +HSPLandroidx/compose/ui/layout/RootMeasurePolicy$measure$2;->(Landroidx/compose/ui/layout/Placeable;)V +HSPLandroidx/compose/ui/layout/RootMeasurePolicy$measure$2;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V +HSPLandroidx/compose/ui/layout/RootMeasurePolicy$measure$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/layout/ScaleFactor; +HSPLandroidx/compose/ui/layout/ScaleFactor;->()V +HSPLandroidx/compose/ui/layout/ScaleFactor;->constructor-impl(J)J +HSPLandroidx/compose/ui/layout/ScaleFactor;->getScaleX-impl(J)F +HSPLandroidx/compose/ui/layout/ScaleFactor;->getScaleY-impl(J)F +Landroidx/compose/ui/layout/ScaleFactor$Companion; +HSPLandroidx/compose/ui/layout/ScaleFactor$Companion;->()V +HSPLandroidx/compose/ui/layout/ScaleFactor$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/layout/ScaleFactorKt; +HSPLandroidx/compose/ui/layout/ScaleFactorKt;->ScaleFactor(FF)J +HSPLandroidx/compose/ui/layout/ScaleFactorKt;->times-UQTWf7w(JJ)J +Landroidx/compose/ui/layout/SubcomposeIntermediateMeasureScope; +Landroidx/compose/ui/layout/SubcomposeLayoutKt; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt;->SubcomposeLayout(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt;->SubcomposeLayout(Landroidx/compose/ui/layout/SubcomposeLayoutState;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt;->SubcomposeLayout(Landroidx/compose/ui/layout/SubcomposeLayoutState;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +Landroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$$inlined$ComposeNode$1; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$$inlined$ComposeNode$1;->(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$$inlined$ComposeNode$1;->invoke()Ljava/lang/Object; +Landroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$10; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$10;->(Landroidx/compose/ui/layout/SubcomposeLayoutState;)V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$10;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$10;->invoke()V +Landroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$11$1; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$11$1;->(Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$11$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$11$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$11$1$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$11$1$invoke$$inlined$onDispose$1;->(Landroidx/compose/runtime/State;)V +Landroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$12; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$12;->(Landroidx/compose/ui/layout/SubcomposeLayoutState;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;II)V +Landroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$6; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$6;->()V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$6;->()V +Landroidx/compose/ui/layout/SubcomposeLayoutState; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;->()V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;->()V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;->(Landroidx/compose/ui/layout/SubcomposeSlotReusePolicy;)V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;->access$getSlotReusePolicy$p(Landroidx/compose/ui/layout/SubcomposeLayoutState;)Landroidx/compose/ui/layout/SubcomposeSlotReusePolicy; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;->access$getState(Landroidx/compose/ui/layout/SubcomposeLayoutState;)Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;->access$set_state$p(Landroidx/compose/ui/layout/SubcomposeLayoutState;Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;)V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;->forceRecomposeChildren$ui_release()V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;->getSetCompositionContext$ui_release()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;->getSetIntermediateMeasurePolicy$ui_release()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;->getSetMeasurePolicy$ui_release()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;->getSetRoot$ui_release()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;->getState()Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState; +Landroidx/compose/ui/layout/SubcomposeLayoutState$setCompositionContext$1; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setCompositionContext$1;->(Landroidx/compose/ui/layout/SubcomposeLayoutState;)V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setCompositionContext$1;->invoke(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/runtime/CompositionContext;)V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setCompositionContext$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/layout/SubcomposeLayoutState$setIntermediateMeasurePolicy$1; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setIntermediateMeasurePolicy$1;->(Landroidx/compose/ui/layout/SubcomposeLayoutState;)V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setIntermediateMeasurePolicy$1;->invoke(Landroidx/compose/ui/node/LayoutNode;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setIntermediateMeasurePolicy$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/layout/SubcomposeLayoutState$setMeasurePolicy$1; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setMeasurePolicy$1;->(Landroidx/compose/ui/layout/SubcomposeLayoutState;)V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setMeasurePolicy$1;->invoke(Landroidx/compose/ui/node/LayoutNode;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setMeasurePolicy$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/layout/SubcomposeLayoutState$setRoot$1; +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setRoot$1;->(Landroidx/compose/ui/layout/SubcomposeLayoutState;)V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setRoot$1;->invoke(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/layout/SubcomposeLayoutState;)V +HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setRoot$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/layout/SubcomposeMeasureScope; +Landroidx/compose/ui/layout/SubcomposeSlotReusePolicy; +Landroidx/compose/ui/layout/SubcomposeSlotReusePolicy$SlotIdsSet; +HSPLandroidx/compose/ui/layout/SubcomposeSlotReusePolicy$SlotIdsSet;->()V +HSPLandroidx/compose/ui/layout/SubcomposeSlotReusePolicy$SlotIdsSet;->(Ljava/util/Set;)V +HSPLandroidx/compose/ui/layout/SubcomposeSlotReusePolicy$SlotIdsSet;->(Ljava/util/Set;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +PLandroidx/compose/ui/layout/SubcomposeSlotReusePolicy$SlotIdsSet;->add$ui_release(Ljava/lang/Object;)Z +PLandroidx/compose/ui/layout/SubcomposeSlotReusePolicy$SlotIdsSet;->clear()V +PLandroidx/compose/ui/layout/SubcomposeSlotReusePolicy$SlotIdsSet;->contains(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/layout/SubcomposeSlotReusePolicy$SlotIdsSet;->iterator()Ljava/util/Iterator; +Landroidx/compose/ui/modifier/BackwardsCompatLocalMap; +HSPLandroidx/compose/ui/modifier/BackwardsCompatLocalMap;->(Landroidx/compose/ui/modifier/ModifierLocalProvider;)V +HSPLandroidx/compose/ui/modifier/BackwardsCompatLocalMap;->contains$ui_release(Landroidx/compose/ui/modifier/ModifierLocal;)Z +HSPLandroidx/compose/ui/modifier/BackwardsCompatLocalMap;->get$ui_release(Landroidx/compose/ui/modifier/ModifierLocal;)Ljava/lang/Object; +Landroidx/compose/ui/modifier/EmptyMap; +HSPLandroidx/compose/ui/modifier/EmptyMap;->()V +HSPLandroidx/compose/ui/modifier/EmptyMap;->()V +HSPLandroidx/compose/ui/modifier/EmptyMap;->contains$ui_release(Landroidx/compose/ui/modifier/ModifierLocal;)Z +Landroidx/compose/ui/modifier/ModifierLocal; +HSPLandroidx/compose/ui/modifier/ModifierLocal;->()V +HSPLandroidx/compose/ui/modifier/ModifierLocal;->(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/modifier/ModifierLocal;->(Lkotlin/jvm/functions/Function0;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/modifier/ModifierLocal;->getDefaultFactory$ui_release()Lkotlin/jvm/functions/Function0; +Landroidx/compose/ui/modifier/ModifierLocalConsumer; +Landroidx/compose/ui/modifier/ModifierLocalKt; +HSPLandroidx/compose/ui/modifier/ModifierLocalKt;->modifierLocalOf(Lkotlin/jvm/functions/Function0;)Landroidx/compose/ui/modifier/ProvidableModifierLocal; +Landroidx/compose/ui/modifier/ModifierLocalManager; +HSPLandroidx/compose/ui/modifier/ModifierLocalManager;->(Landroidx/compose/ui/node/Owner;)V +HSPLandroidx/compose/ui/modifier/ModifierLocalManager;->invalidate()V +HSPLandroidx/compose/ui/modifier/ModifierLocalManager;->removedProvider(Landroidx/compose/ui/node/BackwardsCompatNode;Landroidx/compose/ui/modifier/ModifierLocal;)V +HSPLandroidx/compose/ui/modifier/ModifierLocalManager;->triggerUpdates()V +Landroidx/compose/ui/modifier/ModifierLocalManager$invalidate$1; +HSPLandroidx/compose/ui/modifier/ModifierLocalManager$invalidate$1;->(Landroidx/compose/ui/modifier/ModifierLocalManager;)V +HSPLandroidx/compose/ui/modifier/ModifierLocalManager$invalidate$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/modifier/ModifierLocalManager$invalidate$1;->invoke()V +Landroidx/compose/ui/modifier/ModifierLocalMap; +HSPLandroidx/compose/ui/modifier/ModifierLocalMap;->()V +HSPLandroidx/compose/ui/modifier/ModifierLocalMap;->()V +HSPLandroidx/compose/ui/modifier/ModifierLocalMap;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/modifier/ModifierLocalModifierNode; +HSPLandroidx/compose/ui/modifier/ModifierLocalModifierNode;->getCurrent(Landroidx/compose/ui/modifier/ModifierLocal;)Ljava/lang/Object; +HSPLandroidx/compose/ui/modifier/ModifierLocalModifierNode;->getProvidedValues()Landroidx/compose/ui/modifier/ModifierLocalMap; +Landroidx/compose/ui/modifier/ModifierLocalModifierNodeKt; +HSPLandroidx/compose/ui/modifier/ModifierLocalModifierNodeKt;->modifierLocalMapOf()Landroidx/compose/ui/modifier/ModifierLocalMap; +HSPLandroidx/compose/ui/modifier/ModifierLocalModifierNodeKt;->modifierLocalMapOf(Lkotlin/Pair;)Landroidx/compose/ui/modifier/ModifierLocalMap; +Landroidx/compose/ui/modifier/ModifierLocalProvider; +Landroidx/compose/ui/modifier/ModifierLocalReadScope; +Landroidx/compose/ui/modifier/ProvidableModifierLocal; +HSPLandroidx/compose/ui/modifier/ProvidableModifierLocal;->()V +HSPLandroidx/compose/ui/modifier/ProvidableModifierLocal;->(Lkotlin/jvm/functions/Function0;)V +Landroidx/compose/ui/modifier/SingleLocalMap; +HSPLandroidx/compose/ui/modifier/SingleLocalMap;->(Landroidx/compose/ui/modifier/ModifierLocal;)V +HSPLandroidx/compose/ui/modifier/SingleLocalMap;->contains$ui_release(Landroidx/compose/ui/modifier/ModifierLocal;)Z +HSPLandroidx/compose/ui/modifier/SingleLocalMap;->get$ui_release(Landroidx/compose/ui/modifier/ModifierLocal;)Ljava/lang/Object; +HSPLandroidx/compose/ui/modifier/SingleLocalMap;->getValue()Ljava/lang/Object; +HSPLandroidx/compose/ui/modifier/SingleLocalMap;->set$ui_release(Landroidx/compose/ui/modifier/ModifierLocal;Ljava/lang/Object;)V +HSPLandroidx/compose/ui/modifier/SingleLocalMap;->setValue(Ljava/lang/Object;)V +Landroidx/compose/ui/node/AlignmentLines; +HSPLandroidx/compose/ui/node/AlignmentLines;->(Landroidx/compose/ui/node/AlignmentLinesOwner;)V +HSPLandroidx/compose/ui/node/AlignmentLines;->(Landroidx/compose/ui/node/AlignmentLinesOwner;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/node/AlignmentLines;->getDirty$ui_release()Z +HSPLandroidx/compose/ui/node/AlignmentLines;->getQueried$ui_release()Z +HSPLandroidx/compose/ui/node/AlignmentLines;->getRequired$ui_release()Z +HSPLandroidx/compose/ui/node/AlignmentLines;->getUsedDuringParentLayout$ui_release()Z +HSPLandroidx/compose/ui/node/AlignmentLines;->onAlignmentsChanged()V +HSPLandroidx/compose/ui/node/AlignmentLines;->recalculateQueryOwner()V +HSPLandroidx/compose/ui/node/AlignmentLines;->reset$ui_release()V +HSPLandroidx/compose/ui/node/AlignmentLines;->setPreviousUsedDuringParentLayout$ui_release(Z)V +HSPLandroidx/compose/ui/node/AlignmentLines;->setUsedByModifierLayout$ui_release(Z)V +HSPLandroidx/compose/ui/node/AlignmentLines;->setUsedByModifierMeasurement$ui_release(Z)V +HSPLandroidx/compose/ui/node/AlignmentLines;->setUsedDuringParentLayout$ui_release(Z)V +HSPLandroidx/compose/ui/node/AlignmentLines;->setUsedDuringParentMeasurement$ui_release(Z)V +Landroidx/compose/ui/node/AlignmentLinesOwner; +Landroidx/compose/ui/node/BackwardsCompatNode; +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->(Landroidx/compose/ui/Modifier$Element;)V +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->draw(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->getCurrent(Landroidx/compose/ui/modifier/ModifierLocal;)Ljava/lang/Object; +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->getElement()Landroidx/compose/ui/Modifier$Element; +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->getProvidedValues()Landroidx/compose/ui/modifier/ModifierLocalMap; +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->initializeModifier(Z)V +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->isValidOwnerScope()Z +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->modifyParentData(Landroidx/compose/ui/unit/Density;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->onAttach()V +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->onDetach()V +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->onGloballyPositioned(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->onMeasureResultChanged()V +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->onPlaced(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->onRemeasured-ozmzZPI(J)V +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->setElement(Landroidx/compose/ui/Modifier$Element;)V +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->unInitializeModifier()V +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->updateModifierLocalConsumer()V +HSPLandroidx/compose/ui/node/BackwardsCompatNode;->updateModifierLocalProvider(Landroidx/compose/ui/modifier/ModifierLocalProvider;)V +Landroidx/compose/ui/node/BackwardsCompatNode$initializeModifier$1; +HSPLandroidx/compose/ui/node/BackwardsCompatNode$initializeModifier$1;->(Landroidx/compose/ui/node/BackwardsCompatNode;)V +HSPLandroidx/compose/ui/node/BackwardsCompatNode$initializeModifier$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/node/BackwardsCompatNode$initializeModifier$1;->invoke()V +Landroidx/compose/ui/node/BackwardsCompatNode$updateModifierLocalConsumer$1; +HSPLandroidx/compose/ui/node/BackwardsCompatNode$updateModifierLocalConsumer$1;->(Landroidx/compose/ui/node/BackwardsCompatNode;)V +HSPLandroidx/compose/ui/node/BackwardsCompatNode$updateModifierLocalConsumer$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/node/BackwardsCompatNode$updateModifierLocalConsumer$1;->invoke()V +Landroidx/compose/ui/node/BackwardsCompatNodeKt; +HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt;->()V +HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt;->access$getDetachedModifierLocalReadScope$p()Landroidx/compose/ui/node/BackwardsCompatNodeKt$DetachedModifierLocalReadScope$1; +HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt;->access$getUpdateModifierLocalConsumer$p()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt;->access$isChainUpdate(Landroidx/compose/ui/node/BackwardsCompatNode;)Z +HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt;->isChainUpdate(Landroidx/compose/ui/node/BackwardsCompatNode;)Z +Landroidx/compose/ui/node/BackwardsCompatNodeKt$DetachedModifierLocalReadScope$1; +HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt$DetachedModifierLocalReadScope$1;->()V +HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt$DetachedModifierLocalReadScope$1;->getCurrent(Landroidx/compose/ui/modifier/ModifierLocal;)Ljava/lang/Object; +Landroidx/compose/ui/node/BackwardsCompatNodeKt$onDrawCacheReadsChanged$1; +HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt$onDrawCacheReadsChanged$1;->()V +HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt$onDrawCacheReadsChanged$1;->()V +Landroidx/compose/ui/node/BackwardsCompatNodeKt$updateModifierLocalConsumer$1; +HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt$updateModifierLocalConsumer$1;->()V +HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt$updateModifierLocalConsumer$1;->()V +HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt$updateModifierLocalConsumer$1;->invoke(Landroidx/compose/ui/node/BackwardsCompatNode;)V +HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt$updateModifierLocalConsumer$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/CanFocusChecker; +HSPLandroidx/compose/ui/node/CanFocusChecker;->()V +HSPLandroidx/compose/ui/node/CanFocusChecker;->()V +HSPLandroidx/compose/ui/node/CanFocusChecker;->isCanFocusSet()Z +HSPLandroidx/compose/ui/node/CanFocusChecker;->reset()V +HSPLandroidx/compose/ui/node/CanFocusChecker;->setCanFocus(Z)V +Landroidx/compose/ui/node/CenteredArray; +HSPLandroidx/compose/ui/node/CenteredArray;->constructor-impl([I)[I +HSPLandroidx/compose/ui/node/CenteredArray;->get-impl([II)I +HSPLandroidx/compose/ui/node/CenteredArray;->getMid-impl([I)I +HSPLandroidx/compose/ui/node/CenteredArray;->set-impl([III)V +Landroidx/compose/ui/node/ComposeUiNode; +HSPLandroidx/compose/ui/node/ComposeUiNode;->()V +Landroidx/compose/ui/node/ComposeUiNode$Companion; +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion;->getConstructor()Lkotlin/jvm/functions/Function0; +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion;->getSetCompositeKeyHash()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion;->getSetDensity()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion;->getSetLayoutDirection()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion;->getSetMeasurePolicy()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion;->getSetModifier()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion;->getSetResolvedCompositionLocals()Lkotlin/jvm/functions/Function2; +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion;->getSetViewConfiguration()Lkotlin/jvm/functions/Function2; +Landroidx/compose/ui/node/ComposeUiNode$Companion$SetCompositeKeyHash$1; +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetCompositeKeyHash$1;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetCompositeKeyHash$1;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetCompositeKeyHash$1;->invoke(Landroidx/compose/ui/node/ComposeUiNode;I)V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetCompositeKeyHash$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/ComposeUiNode$Companion$SetDensity$1; +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetDensity$1;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetDensity$1;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetDensity$1;->invoke(Landroidx/compose/ui/node/ComposeUiNode;Landroidx/compose/ui/unit/Density;)V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetDensity$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/ComposeUiNode$Companion$SetLayoutDirection$1; +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetLayoutDirection$1;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetLayoutDirection$1;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetLayoutDirection$1;->invoke(Landroidx/compose/ui/node/ComposeUiNode;Landroidx/compose/ui/unit/LayoutDirection;)V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetLayoutDirection$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/ComposeUiNode$Companion$SetMeasurePolicy$1; +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetMeasurePolicy$1;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetMeasurePolicy$1;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetMeasurePolicy$1;->invoke(Landroidx/compose/ui/node/ComposeUiNode;Landroidx/compose/ui/layout/MeasurePolicy;)V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetMeasurePolicy$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/ComposeUiNode$Companion$SetModifier$1; +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetModifier$1;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetModifier$1;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetModifier$1;->invoke(Landroidx/compose/ui/node/ComposeUiNode;Landroidx/compose/ui/Modifier;)V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetModifier$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/ComposeUiNode$Companion$SetResolvedCompositionLocals$1; +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetResolvedCompositionLocals$1;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetResolvedCompositionLocals$1;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetResolvedCompositionLocals$1;->invoke(Landroidx/compose/ui/node/ComposeUiNode;Landroidx/compose/runtime/CompositionLocalMap;)V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetResolvedCompositionLocals$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/ComposeUiNode$Companion$SetViewConfiguration$1; +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetViewConfiguration$1;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetViewConfiguration$1;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetViewConfiguration$1;->invoke(Landroidx/compose/ui/node/ComposeUiNode;Landroidx/compose/ui/platform/ViewConfiguration;)V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetViewConfiguration$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/ComposeUiNode$Companion$VirtualConstructor$1; +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$VirtualConstructor$1;->()V +HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$VirtualConstructor$1;->()V +Landroidx/compose/ui/node/CompositionLocalConsumerModifierNode; +Landroidx/compose/ui/node/CompositionLocalConsumerModifierNodeKt; +HSPLandroidx/compose/ui/node/CompositionLocalConsumerModifierNodeKt;->currentValueOf(Landroidx/compose/ui/node/CompositionLocalConsumerModifierNode;Landroidx/compose/runtime/CompositionLocal;)Ljava/lang/Object; +Landroidx/compose/ui/node/DelegatableNode; +Landroidx/compose/ui/node/DelegatableNodeKt; +HSPLandroidx/compose/ui/node/DelegatableNodeKt;->access$addLayoutNodeChildren(Landroidx/compose/runtime/collection/MutableVector;Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/node/DelegatableNodeKt;->access$pop(Landroidx/compose/runtime/collection/MutableVector;)Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/DelegatableNodeKt;->addLayoutNodeChildren(Landroidx/compose/runtime/collection/MutableVector;Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/node/DelegatableNodeKt;->asLayoutModifierNode(Landroidx/compose/ui/Modifier$Node;)Landroidx/compose/ui/node/LayoutModifierNode; +HSPLandroidx/compose/ui/node/DelegatableNodeKt;->has-64DMado(Landroidx/compose/ui/node/DelegatableNode;I)Z +HSPLandroidx/compose/ui/node/DelegatableNodeKt;->isDelegationRoot(Landroidx/compose/ui/node/DelegatableNode;)Z +HSPLandroidx/compose/ui/node/DelegatableNodeKt;->pop(Landroidx/compose/runtime/collection/MutableVector;)Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/DelegatableNodeKt;->requireCoordinator-64DMado(Landroidx/compose/ui/node/DelegatableNode;I)Landroidx/compose/ui/node/NodeCoordinator; +HSPLandroidx/compose/ui/node/DelegatableNodeKt;->requireDensity(Landroidx/compose/ui/node/DelegatableNode;)Landroidx/compose/ui/unit/Density; +HSPLandroidx/compose/ui/node/DelegatableNodeKt;->requireLayoutDirection(Landroidx/compose/ui/node/DelegatableNode;)Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/node/DelegatableNodeKt;->requireLayoutNode(Landroidx/compose/ui/node/DelegatableNode;)Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/node/DelegatableNodeKt;->requireOwner(Landroidx/compose/ui/node/DelegatableNode;)Landroidx/compose/ui/node/Owner; +Landroidx/compose/ui/node/DelegatingNode; +HSPLandroidx/compose/ui/node/DelegatingNode;->()V +HSPLandroidx/compose/ui/node/DelegatingNode;->()V +HSPLandroidx/compose/ui/node/DelegatingNode;->delegate(Landroidx/compose/ui/node/DelegatableNode;)Landroidx/compose/ui/node/DelegatableNode; +HSPLandroidx/compose/ui/node/DelegatingNode;->getDelegate$ui_release()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/DelegatingNode;->getSelfKindSet$ui_release()I +HSPLandroidx/compose/ui/node/DelegatingNode;->markAsAttached$ui_release()V +HSPLandroidx/compose/ui/node/DelegatingNode;->markAsDetached$ui_release()V +HSPLandroidx/compose/ui/node/DelegatingNode;->reset$ui_release()V +HSPLandroidx/compose/ui/node/DelegatingNode;->runAttachLifecycle$ui_release()V +HSPLandroidx/compose/ui/node/DelegatingNode;->runDetachLifecycle$ui_release()V +HSPLandroidx/compose/ui/node/DelegatingNode;->updateCoordinator$ui_release(Landroidx/compose/ui/node/NodeCoordinator;)V +HSPLandroidx/compose/ui/node/DelegatingNode;->updateNodeKindSet(IZ)V +HSPLandroidx/compose/ui/node/DelegatingNode;->validateDelegateKindSet(ILandroidx/compose/ui/Modifier$Node;)V +Landroidx/compose/ui/node/DepthSortedSet; +HSPLandroidx/compose/ui/node/DepthSortedSet;->(Z)V +HSPLandroidx/compose/ui/node/DepthSortedSet;->add(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/DepthSortedSet;->contains(Landroidx/compose/ui/node/LayoutNode;)Z +HSPLandroidx/compose/ui/node/DepthSortedSet;->isEmpty()Z +HSPLandroidx/compose/ui/node/DepthSortedSet;->pop()Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/node/DepthSortedSet;->remove(Landroidx/compose/ui/node/LayoutNode;)Z +Landroidx/compose/ui/node/DepthSortedSet$DepthComparator$1; +HSPLandroidx/compose/ui/node/DepthSortedSet$DepthComparator$1;->()V +HSPLandroidx/compose/ui/node/DepthSortedSet$DepthComparator$1;->compare(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/node/LayoutNode;)I +HSPLandroidx/compose/ui/node/DepthSortedSet$DepthComparator$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +Landroidx/compose/ui/node/DepthSortedSet$mapOfOriginalDepth$2; +HSPLandroidx/compose/ui/node/DepthSortedSet$mapOfOriginalDepth$2;->()V +HSPLandroidx/compose/ui/node/DepthSortedSet$mapOfOriginalDepth$2;->()V +Landroidx/compose/ui/node/DepthSortedSetsForDifferentPasses; +HSPLandroidx/compose/ui/node/DepthSortedSetsForDifferentPasses;->(Z)V +HSPLandroidx/compose/ui/node/DepthSortedSetsForDifferentPasses;->access$getLookaheadSet$p(Landroidx/compose/ui/node/DepthSortedSetsForDifferentPasses;)Landroidx/compose/ui/node/DepthSortedSet; +HSPLandroidx/compose/ui/node/DepthSortedSetsForDifferentPasses;->access$getSet$p(Landroidx/compose/ui/node/DepthSortedSetsForDifferentPasses;)Landroidx/compose/ui/node/DepthSortedSet; +HSPLandroidx/compose/ui/node/DepthSortedSetsForDifferentPasses;->add(Landroidx/compose/ui/node/LayoutNode;Z)V +HSPLandroidx/compose/ui/node/DepthSortedSetsForDifferentPasses;->isEmpty()Z +HSPLandroidx/compose/ui/node/DepthSortedSetsForDifferentPasses;->isNotEmpty()Z +HSPLandroidx/compose/ui/node/DepthSortedSetsForDifferentPasses;->remove(Landroidx/compose/ui/node/LayoutNode;)Z +HSPLandroidx/compose/ui/node/DepthSortedSetsForDifferentPasses;->remove(Landroidx/compose/ui/node/LayoutNode;Z)Z +Landroidx/compose/ui/node/DiffCallback; +Landroidx/compose/ui/node/DistanceAndInLayer; +HSPLandroidx/compose/ui/node/DistanceAndInLayer;->compareTo-S_HNhKs(JJ)I +HSPLandroidx/compose/ui/node/DistanceAndInLayer;->constructor-impl(J)J +HSPLandroidx/compose/ui/node/DistanceAndInLayer;->getDistance-impl(J)F +HSPLandroidx/compose/ui/node/DistanceAndInLayer;->isInLayer-impl(J)Z +Landroidx/compose/ui/node/DrawModifierNode; +HSPLandroidx/compose/ui/node/DrawModifierNode;->onMeasureResultChanged()V +Landroidx/compose/ui/node/DrawModifierNodeKt; +HSPLandroidx/compose/ui/node/DrawModifierNodeKt;->invalidateDraw(Landroidx/compose/ui/node/DrawModifierNode;)V +Landroidx/compose/ui/node/ForceUpdateElement; +HSPLandroidx/compose/ui/node/ForceUpdateElement;->(Landroidx/compose/ui/node/ModifierNodeElement;)V +Landroidx/compose/ui/node/GlobalPositionAwareModifierNode; +Landroidx/compose/ui/node/HitTestResult; +HSPLandroidx/compose/ui/node/HitTestResult;->()V +HSPLandroidx/compose/ui/node/HitTestResult;->access$getHitDepth$p(Landroidx/compose/ui/node/HitTestResult;)I +HSPLandroidx/compose/ui/node/HitTestResult;->access$setHitDepth$p(Landroidx/compose/ui/node/HitTestResult;I)V +HSPLandroidx/compose/ui/node/HitTestResult;->clear()V +HSPLandroidx/compose/ui/node/HitTestResult;->ensureContainerSize()V +HSPLandroidx/compose/ui/node/HitTestResult;->findBestHitDistance-ptXAw2c()J +HSPLandroidx/compose/ui/node/HitTestResult;->get(I)Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/HitTestResult;->get(I)Ljava/lang/Object; +HSPLandroidx/compose/ui/node/HitTestResult;->getSize()I +HSPLandroidx/compose/ui/node/HitTestResult;->hasHit()Z +HSPLandroidx/compose/ui/node/HitTestResult;->hit(Landroidx/compose/ui/Modifier$Node;ZLkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/node/HitTestResult;->hitInMinimumTouchTarget(Landroidx/compose/ui/Modifier$Node;FZLkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/node/HitTestResult;->isEmpty()Z +HSPLandroidx/compose/ui/node/HitTestResult;->resizeToHitDepth()V +HSPLandroidx/compose/ui/node/HitTestResult;->size()I +Landroidx/compose/ui/node/HitTestResultKt; +HSPLandroidx/compose/ui/node/HitTestResultKt;->DistanceAndInLayer(FZ)J +HSPLandroidx/compose/ui/node/HitTestResultKt;->access$DistanceAndInLayer(FZ)J +Landroidx/compose/ui/node/InnerNodeCoordinator; +HSPLandroidx/compose/ui/node/InnerNodeCoordinator;->()V +HSPLandroidx/compose/ui/node/InnerNodeCoordinator;->(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/InnerNodeCoordinator;->getTail()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/InnerNodeCoordinator;->getTail()Landroidx/compose/ui/node/TailModifierNode; +HSPLandroidx/compose/ui/node/InnerNodeCoordinator;->hitTestChild-YqVAtuI(Landroidx/compose/ui/node/NodeCoordinator$HitTestSource;JLandroidx/compose/ui/node/HitTestResult;ZZ)V +HSPLandroidx/compose/ui/node/InnerNodeCoordinator;->maxIntrinsicWidth(I)I +HSPLandroidx/compose/ui/node/InnerNodeCoordinator;->measure-BRTryo0(J)Landroidx/compose/ui/layout/Placeable; +HSPLandroidx/compose/ui/node/InnerNodeCoordinator;->performDraw(Landroidx/compose/ui/graphics/Canvas;)V +HSPLandroidx/compose/ui/node/InnerNodeCoordinator;->placeAt-f8xVGno(JFLkotlin/jvm/functions/Function1;)V +Landroidx/compose/ui/node/InnerNodeCoordinator$Companion; +HSPLandroidx/compose/ui/node/InnerNodeCoordinator$Companion;->()V +HSPLandroidx/compose/ui/node/InnerNodeCoordinator$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/node/IntStack; +HSPLandroidx/compose/ui/node/IntStack;->(I)V +HSPLandroidx/compose/ui/node/IntStack;->compareDiagonal(II)Z +HSPLandroidx/compose/ui/node/IntStack;->get(I)I +HSPLandroidx/compose/ui/node/IntStack;->getSize()I +HSPLandroidx/compose/ui/node/IntStack;->isNotEmpty()Z +HSPLandroidx/compose/ui/node/IntStack;->partition(III)I +HSPLandroidx/compose/ui/node/IntStack;->pop()I +HSPLandroidx/compose/ui/node/IntStack;->pushDiagonal(III)V +HSPLandroidx/compose/ui/node/IntStack;->pushRange(IIII)V +HSPLandroidx/compose/ui/node/IntStack;->quickSort(III)V +HSPLandroidx/compose/ui/node/IntStack;->sortDiagonals()V +HSPLandroidx/compose/ui/node/IntStack;->swapDiagonal(II)V +Landroidx/compose/ui/node/InteroperableComposeUiNode; +Landroidx/compose/ui/node/IntrinsicsPolicy; +HSPLandroidx/compose/ui/node/IntrinsicsPolicy;->()V +HSPLandroidx/compose/ui/node/IntrinsicsPolicy;->(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/IntrinsicsPolicy;->getMeasurePolicyState()Landroidx/compose/ui/layout/MeasurePolicy; +HSPLandroidx/compose/ui/node/IntrinsicsPolicy;->maxIntrinsicWidth(I)I +HSPLandroidx/compose/ui/node/IntrinsicsPolicy;->measurePolicyFromState()Landroidx/compose/ui/layout/MeasurePolicy; +HSPLandroidx/compose/ui/node/IntrinsicsPolicy;->setMeasurePolicyState(Landroidx/compose/ui/layout/MeasurePolicy;)V +HSPLandroidx/compose/ui/node/IntrinsicsPolicy;->updateFrom(Landroidx/compose/ui/layout/MeasurePolicy;)V +Landroidx/compose/ui/node/IntrinsicsPolicy$Companion; +HSPLandroidx/compose/ui/node/IntrinsicsPolicy$Companion;->()V +HSPLandroidx/compose/ui/node/IntrinsicsPolicy$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/node/LayerPositionalProperties; +HSPLandroidx/compose/ui/node/LayerPositionalProperties;->()V +HSPLandroidx/compose/ui/node/LayerPositionalProperties;->copyFrom(Landroidx/compose/ui/graphics/GraphicsLayerScope;)V +HSPLandroidx/compose/ui/node/LayerPositionalProperties;->copyFrom(Landroidx/compose/ui/node/LayerPositionalProperties;)V +HSPLandroidx/compose/ui/node/LayerPositionalProperties;->hasSameValuesAs(Landroidx/compose/ui/node/LayerPositionalProperties;)Z +Landroidx/compose/ui/node/LayoutAwareModifierNode; +HSPLandroidx/compose/ui/node/LayoutAwareModifierNode;->onRemeasured-ozmzZPI(J)V +Landroidx/compose/ui/node/LayoutModifierNode; +HSPLandroidx/compose/ui/node/LayoutModifierNode;->maxIntrinsicWidth(Landroidx/compose/ui/layout/IntrinsicMeasureScope;Landroidx/compose/ui/layout/IntrinsicMeasurable;I)I +Landroidx/compose/ui/node/LayoutModifierNode$maxIntrinsicWidth$1; +HSPLandroidx/compose/ui/node/LayoutModifierNode$maxIntrinsicWidth$1;->(Landroidx/compose/ui/node/LayoutModifierNode;)V +HSPLandroidx/compose/ui/node/LayoutModifierNode$maxIntrinsicWidth$1;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; +Landroidx/compose/ui/node/LayoutModifierNodeCoordinator; +HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator;->()V +HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator;->(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/node/LayoutModifierNode;)V +HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator;->getLayoutModifierNode()Landroidx/compose/ui/node/LayoutModifierNode; +HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator;->getTail()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator;->getWrappedNonNull()Landroidx/compose/ui/node/NodeCoordinator; +HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator;->maxIntrinsicWidth(I)I +HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator;->measure-BRTryo0(J)Landroidx/compose/ui/layout/Placeable; +HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator;->performDraw(Landroidx/compose/ui/graphics/Canvas;)V +HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator;->placeAt-f8xVGno(JFLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator;->setLayoutModifierNode$ui_release(Landroidx/compose/ui/node/LayoutModifierNode;)V +Landroidx/compose/ui/node/LayoutModifierNodeCoordinator$Companion; +HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator$Companion;->()V +HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/node/LayoutModifierNodeKt; +HSPLandroidx/compose/ui/node/LayoutModifierNodeKt;->invalidateLayer(Landroidx/compose/ui/node/LayoutModifierNode;)V +HSPLandroidx/compose/ui/node/LayoutModifierNodeKt;->invalidateMeasurement(Landroidx/compose/ui/node/LayoutModifierNode;)V +Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/node/LayoutNode;->$r8$lambda$DzqjNqe9pzqBZZ9IiiTtp-hu0n4(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/node/LayoutNode;)I +HSPLandroidx/compose/ui/node/LayoutNode;->()V +HSPLandroidx/compose/ui/node/LayoutNode;->(ZI)V +HSPLandroidx/compose/ui/node/LayoutNode;->(ZIILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/node/LayoutNode;->ZComparator$lambda$38(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/node/LayoutNode;)I +HSPLandroidx/compose/ui/node/LayoutNode;->access$getConstructor$cp()Lkotlin/jvm/functions/Function0; +HSPLandroidx/compose/ui/node/LayoutNode;->access$getZComparator$cp()Ljava/util/Comparator; +HSPLandroidx/compose/ui/node/LayoutNode;->access$setIgnoreRemeasureRequests$p(Landroidx/compose/ui/node/LayoutNode;Z)V +HSPLandroidx/compose/ui/node/LayoutNode;->attach$ui_release(Landroidx/compose/ui/node/Owner;)V +HSPLandroidx/compose/ui/node/LayoutNode;->clearSubtreeIntrinsicsUsage$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNode;->clearSubtreePlacementIntrinsicsUsage()V +HSPLandroidx/compose/ui/node/LayoutNode;->detach$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNode;->dispatchOnPositionedCallbacks$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNode;->draw$ui_release(Landroidx/compose/ui/graphics/Canvas;)V +HSPLandroidx/compose/ui/node/LayoutNode;->forceRemeasure()V +HSPLandroidx/compose/ui/node/LayoutNode;->getCanMultiMeasure$ui_release()Z +HSPLandroidx/compose/ui/node/LayoutNode;->getChildMeasurables$ui_release()Ljava/util/List; +HSPLandroidx/compose/ui/node/LayoutNode;->getChildren$ui_release()Ljava/util/List; +HSPLandroidx/compose/ui/node/LayoutNode;->getCollapsedSemantics$ui_release()Landroidx/compose/ui/semantics/SemanticsConfiguration; +HSPLandroidx/compose/ui/node/LayoutNode;->getCompositionLocalMap()Landroidx/compose/runtime/CompositionLocalMap; +HSPLandroidx/compose/ui/node/LayoutNode;->getCoordinates()Landroidx/compose/ui/layout/LayoutCoordinates; +HSPLandroidx/compose/ui/node/LayoutNode;->getDensity()Landroidx/compose/ui/unit/Density; +HSPLandroidx/compose/ui/node/LayoutNode;->getDepth$ui_release()I +HSPLandroidx/compose/ui/node/LayoutNode;->getFoldedChildren$ui_release()Ljava/util/List; +HSPLandroidx/compose/ui/node/LayoutNode;->getHasFixedInnerContentConstraints$ui_release()Z +HSPLandroidx/compose/ui/node/LayoutNode;->getHeight()I +HSPLandroidx/compose/ui/node/LayoutNode;->getInnerCoordinator$ui_release()Landroidx/compose/ui/node/NodeCoordinator; +HSPLandroidx/compose/ui/node/LayoutNode;->getInnerLayerCoordinator()Landroidx/compose/ui/node/NodeCoordinator; +HSPLandroidx/compose/ui/node/LayoutNode;->getIntrinsicsPolicy$ui_release()Landroidx/compose/ui/node/IntrinsicsPolicy; +HSPLandroidx/compose/ui/node/LayoutNode;->getIntrinsicsUsageByParent$ui_release()Landroidx/compose/ui/node/LayoutNode$UsageByParent; +HSPLandroidx/compose/ui/node/LayoutNode;->getLayoutDelegate$ui_release()Landroidx/compose/ui/node/LayoutNodeLayoutDelegate; +HSPLandroidx/compose/ui/node/LayoutNode;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/node/LayoutNode;->getLayoutPending$ui_release()Z +HSPLandroidx/compose/ui/node/LayoutNode;->getLayoutState$ui_release()Landroidx/compose/ui/node/LayoutNode$LayoutState; +HSPLandroidx/compose/ui/node/LayoutNode;->getLookaheadLayoutPending$ui_release()Z +HSPLandroidx/compose/ui/node/LayoutNode;->getLookaheadMeasurePending$ui_release()Z +HSPLandroidx/compose/ui/node/LayoutNode;->getLookaheadPassDelegate$ui_release()Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$LookaheadPassDelegate; +HSPLandroidx/compose/ui/node/LayoutNode;->getLookaheadRoot$ui_release()Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/node/LayoutNode;->getMDrawScope$ui_release()Landroidx/compose/ui/node/LayoutNodeDrawScope; +HSPLandroidx/compose/ui/node/LayoutNode;->getMeasurePassDelegate$ui_release()Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate; +HSPLandroidx/compose/ui/node/LayoutNode;->getMeasurePending$ui_release()Z +HSPLandroidx/compose/ui/node/LayoutNode;->getMeasurePolicy()Landroidx/compose/ui/layout/MeasurePolicy; +HSPLandroidx/compose/ui/node/LayoutNode;->getMeasuredByParent$ui_release()Landroidx/compose/ui/node/LayoutNode$UsageByParent; +HSPLandroidx/compose/ui/node/LayoutNode;->getNeedsOnPositionedDispatch$ui_release()Z +HSPLandroidx/compose/ui/node/LayoutNode;->getNodes$ui_release()Landroidx/compose/ui/node/NodeChain; +HSPLandroidx/compose/ui/node/LayoutNode;->getOuterCoordinator$ui_release()Landroidx/compose/ui/node/NodeCoordinator; +HSPLandroidx/compose/ui/node/LayoutNode;->getOwner$ui_release()Landroidx/compose/ui/node/Owner; +HSPLandroidx/compose/ui/node/LayoutNode;->getParent$ui_release()Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/node/LayoutNode;->getPlaceOrder$ui_release()I +HSPLandroidx/compose/ui/node/LayoutNode;->getSemanticsId()I +HSPLandroidx/compose/ui/node/LayoutNode;->getSubcompositionsState$ui_release()Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState; +HSPLandroidx/compose/ui/node/LayoutNode;->getViewConfiguration()Landroidx/compose/ui/platform/ViewConfiguration; +HSPLandroidx/compose/ui/node/LayoutNode;->getWidth()I +HSPLandroidx/compose/ui/node/LayoutNode;->getZIndex()F +HSPLandroidx/compose/ui/node/LayoutNode;->getZSortedChildren()Landroidx/compose/runtime/collection/MutableVector; +HSPLandroidx/compose/ui/node/LayoutNode;->get_children$ui_release()Landroidx/compose/runtime/collection/MutableVector; +HSPLandroidx/compose/ui/node/LayoutNode;->hitTest-M_7yMNQ$ui_release$default(Landroidx/compose/ui/node/LayoutNode;JLandroidx/compose/ui/node/HitTestResult;ZZILjava/lang/Object;)V +HSPLandroidx/compose/ui/node/LayoutNode;->hitTest-M_7yMNQ$ui_release(JLandroidx/compose/ui/node/HitTestResult;ZZ)V +HSPLandroidx/compose/ui/node/LayoutNode;->insertAt$ui_release(ILandroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/LayoutNode;->invalidateFocusOnAttach()V +HSPLandroidx/compose/ui/node/LayoutNode;->invalidateFocusOnDetach()V +HSPLandroidx/compose/ui/node/LayoutNode;->invalidateLayer$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNode;->invalidateLayers$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNode;->invalidateMeasurements$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNode;->invalidateParentData$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNode;->invalidateSemantics$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNode;->invalidateUnfoldedVirtualChildren()V +HSPLandroidx/compose/ui/node/LayoutNode;->isAttached()Z +HSPLandroidx/compose/ui/node/LayoutNode;->isPlaced()Z +HSPLandroidx/compose/ui/node/LayoutNode;->isValidOwnerScope()Z +HSPLandroidx/compose/ui/node/LayoutNode;->markLayoutPending$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNode;->markMeasurePending$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNode;->onChildRemoved(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/LayoutNode;->onDeactivate()V +HSPLandroidx/compose/ui/node/LayoutNode;->onDensityOrLayoutDirectionChanged()V +HSPLandroidx/compose/ui/node/LayoutNode;->onRelease()V +HSPLandroidx/compose/ui/node/LayoutNode;->onZSortedChildrenInvalidated$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNode;->place$ui_release(II)V +HSPLandroidx/compose/ui/node/LayoutNode;->recreateUnfoldedChildrenIfDirty()V +HSPLandroidx/compose/ui/node/LayoutNode;->remeasure-_Sx5XlM$ui_release$default(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/unit/Constraints;ILjava/lang/Object;)Z +HSPLandroidx/compose/ui/node/LayoutNode;->remeasure-_Sx5XlM$ui_release(Landroidx/compose/ui/unit/Constraints;)Z +HSPLandroidx/compose/ui/node/LayoutNode;->removeAt$ui_release(II)V +HSPLandroidx/compose/ui/node/LayoutNode;->replace$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNode;->requestRelayout$ui_release$default(Landroidx/compose/ui/node/LayoutNode;ZILjava/lang/Object;)V +HSPLandroidx/compose/ui/node/LayoutNode;->requestRelayout$ui_release(Z)V +HSPLandroidx/compose/ui/node/LayoutNode;->requestRemeasure$ui_release$default(Landroidx/compose/ui/node/LayoutNode;ZZILjava/lang/Object;)V +HSPLandroidx/compose/ui/node/LayoutNode;->requestRemeasure$ui_release(ZZ)V +HSPLandroidx/compose/ui/node/LayoutNode;->resetModifierState()V +HSPLandroidx/compose/ui/node/LayoutNode;->resetSubtreeIntrinsicsUsage$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNode;->setCanMultiMeasure$ui_release(Z)V +HSPLandroidx/compose/ui/node/LayoutNode;->setCompositeKeyHash(I)V +HSPLandroidx/compose/ui/node/LayoutNode;->setCompositionLocalMap(Landroidx/compose/runtime/CompositionLocalMap;)V +HSPLandroidx/compose/ui/node/LayoutNode;->setDensity(Landroidx/compose/ui/unit/Density;)V +HSPLandroidx/compose/ui/node/LayoutNode;->setInnerLayerCoordinatorIsDirty$ui_release(Z)V +HSPLandroidx/compose/ui/node/LayoutNode;->setIntrinsicsUsageByParent$ui_release(Landroidx/compose/ui/node/LayoutNode$UsageByParent;)V +HSPLandroidx/compose/ui/node/LayoutNode;->setLayoutDirection(Landroidx/compose/ui/unit/LayoutDirection;)V +HSPLandroidx/compose/ui/node/LayoutNode;->setLookaheadRoot(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/LayoutNode;->setMeasurePolicy(Landroidx/compose/ui/layout/MeasurePolicy;)V +HSPLandroidx/compose/ui/node/LayoutNode;->setModifier(Landroidx/compose/ui/Modifier;)V +HSPLandroidx/compose/ui/node/LayoutNode;->setNeedsOnPositionedDispatch$ui_release(Z)V +HSPLandroidx/compose/ui/node/LayoutNode;->setSubcompositionsState$ui_release(Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;)V +HSPLandroidx/compose/ui/node/LayoutNode;->setViewConfiguration(Landroidx/compose/ui/platform/ViewConfiguration;)V +HSPLandroidx/compose/ui/node/LayoutNode;->updateChildrenIfDirty$ui_release()V +Landroidx/compose/ui/node/LayoutNode$$ExternalSyntheticLambda0; +HSPLandroidx/compose/ui/node/LayoutNode$$ExternalSyntheticLambda0;->()V +HSPLandroidx/compose/ui/node/LayoutNode$$ExternalSyntheticLambda0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +Landroidx/compose/ui/node/LayoutNode$Companion; +HSPLandroidx/compose/ui/node/LayoutNode$Companion;->()V +HSPLandroidx/compose/ui/node/LayoutNode$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/node/LayoutNode$Companion;->getConstructor$ui_release()Lkotlin/jvm/functions/Function0; +HSPLandroidx/compose/ui/node/LayoutNode$Companion;->getZComparator$ui_release()Ljava/util/Comparator; +Landroidx/compose/ui/node/LayoutNode$Companion$Constructor$1; +HSPLandroidx/compose/ui/node/LayoutNode$Companion$Constructor$1;->()V +HSPLandroidx/compose/ui/node/LayoutNode$Companion$Constructor$1;->()V +HSPLandroidx/compose/ui/node/LayoutNode$Companion$Constructor$1;->invoke()Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/node/LayoutNode$Companion$Constructor$1;->invoke()Ljava/lang/Object; +Landroidx/compose/ui/node/LayoutNode$Companion$DummyViewConfiguration$1; +HSPLandroidx/compose/ui/node/LayoutNode$Companion$DummyViewConfiguration$1;->()V +Landroidx/compose/ui/node/LayoutNode$Companion$ErrorMeasurePolicy$1; +HSPLandroidx/compose/ui/node/LayoutNode$Companion$ErrorMeasurePolicy$1;->()V +Landroidx/compose/ui/node/LayoutNode$LayoutState; +HSPLandroidx/compose/ui/node/LayoutNode$LayoutState;->$values()[Landroidx/compose/ui/node/LayoutNode$LayoutState; +HSPLandroidx/compose/ui/node/LayoutNode$LayoutState;->()V +HSPLandroidx/compose/ui/node/LayoutNode$LayoutState;->(Ljava/lang/String;I)V +HSPLandroidx/compose/ui/node/LayoutNode$LayoutState;->values()[Landroidx/compose/ui/node/LayoutNode$LayoutState; +Landroidx/compose/ui/node/LayoutNode$NoIntrinsicsMeasurePolicy; +HSPLandroidx/compose/ui/node/LayoutNode$NoIntrinsicsMeasurePolicy;->(Ljava/lang/String;)V +Landroidx/compose/ui/node/LayoutNode$UsageByParent; +HSPLandroidx/compose/ui/node/LayoutNode$UsageByParent;->$values()[Landroidx/compose/ui/node/LayoutNode$UsageByParent; +HSPLandroidx/compose/ui/node/LayoutNode$UsageByParent;->()V +HSPLandroidx/compose/ui/node/LayoutNode$UsageByParent;->(Ljava/lang/String;I)V +HSPLandroidx/compose/ui/node/LayoutNode$UsageByParent;->values()[Landroidx/compose/ui/node/LayoutNode$UsageByParent; +Landroidx/compose/ui/node/LayoutNode$_foldedChildren$1; +HSPLandroidx/compose/ui/node/LayoutNode$_foldedChildren$1;->(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/LayoutNode$_foldedChildren$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/node/LayoutNode$_foldedChildren$1;->invoke()V +Landroidx/compose/ui/node/LayoutNode$collapsedSemantics$1; +HSPLandroidx/compose/ui/node/LayoutNode$collapsedSemantics$1;->(Landroidx/compose/ui/node/LayoutNode;Lkotlin/jvm/internal/Ref$ObjectRef;)V +HSPLandroidx/compose/ui/node/LayoutNode$collapsedSemantics$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/node/LayoutNode$collapsedSemantics$1;->invoke()V +Landroidx/compose/ui/node/LayoutNodeAlignmentLines; +HSPLandroidx/compose/ui/node/LayoutNodeAlignmentLines;->(Landroidx/compose/ui/node/AlignmentLinesOwner;)V +Landroidx/compose/ui/node/LayoutNodeDrawScope; +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->(Landroidx/compose/ui/graphics/drawscope/CanvasDrawScope;)V +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->(Landroidx/compose/ui/graphics/drawscope/CanvasDrawScope;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->draw-x_KDEd0$ui_release(Landroidx/compose/ui/graphics/Canvas;JLandroidx/compose/ui/node/NodeCoordinator;Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->drawArc-yD3GUKo(JFFZJJFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;I)V +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->drawContent()V +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->drawDirect-x_KDEd0$ui_release(Landroidx/compose/ui/graphics/Canvas;JLandroidx/compose/ui/node/NodeCoordinator;Landroidx/compose/ui/node/DrawModifierNode;)V +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->drawImage-AZ2fEMs(Landroidx/compose/ui/graphics/ImageBitmap;JJJJFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;II)V +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->drawLine-1RTmtNc(Landroidx/compose/ui/graphics/Brush;JJFILandroidx/compose/ui/graphics/PathEffect;FLandroidx/compose/ui/graphics/ColorFilter;I)V +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->drawPath-LG529CI(Landroidx/compose/ui/graphics/Path;JFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;I)V +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->drawRect-n-J9OG0(JJJFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;I)V +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->drawRoundRect-ZuiqVtQ(Landroidx/compose/ui/graphics/Brush;JJJFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;I)V +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->drawRoundRect-u-Aw5IA(JJJJLandroidx/compose/ui/graphics/drawscope/DrawStyle;FLandroidx/compose/ui/graphics/ColorFilter;I)V +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->getDrawContext()Landroidx/compose/ui/graphics/drawscope/DrawContext; +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->getSize-NH-jbRc()J +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->performDraw(Landroidx/compose/ui/node/DrawModifierNode;Landroidx/compose/ui/graphics/Canvas;)V +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->roundToPx-0680j_4(F)I +HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->toPx-0680j_4(F)F +Landroidx/compose/ui/node/LayoutNodeDrawScopeKt; +HSPLandroidx/compose/ui/node/LayoutNodeDrawScopeKt;->access$nextDrawNode(Landroidx/compose/ui/node/DelegatableNode;)Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/LayoutNodeDrawScopeKt;->nextDrawNode(Landroidx/compose/ui/node/DelegatableNode;)Landroidx/compose/ui/Modifier$Node; +Landroidx/compose/ui/node/LayoutNodeKt; +HSPLandroidx/compose/ui/node/LayoutNodeKt;->()V +HSPLandroidx/compose/ui/node/LayoutNodeKt;->access$getDefaultDensity$p()Landroidx/compose/ui/unit/Density; +HSPLandroidx/compose/ui/node/LayoutNodeKt;->requireOwner(Landroidx/compose/ui/node/LayoutNode;)Landroidx/compose/ui/node/Owner; +Landroidx/compose/ui/node/LayoutNodeLayoutDelegate; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->access$getLayoutNode$p(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;)Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->access$getLayoutPendingForAlignment$p(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;)Z +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->access$getNextChildPlaceOrder$p(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;)I +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->access$isOutMostLookaheadRoot(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;Landroidx/compose/ui/node/LayoutNode;)Z +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->access$performMeasure-BRTryo0(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;J)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->access$setLayoutPending$p(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;Z)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->access$setLayoutPendingForAlignment$p(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;Z)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->access$setLayoutState$p(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;Landroidx/compose/ui/node/LayoutNode$LayoutState;)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->access$setNextChildPlaceOrder$p(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;I)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getAlignmentLinesOwner$ui_release()Landroidx/compose/ui/node/AlignmentLinesOwner; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getChildrenAccessingCoordinatesDuringPlacement()I +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getCoordinatesAccessedDuringModifierPlacement()Z +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getCoordinatesAccessedDuringPlacement()Z +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getHeight$ui_release()I +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getLastConstraints-DWUhwKw()Landroidx/compose/ui/unit/Constraints; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getLayoutPending$ui_release()Z +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getLayoutState$ui_release()Landroidx/compose/ui/node/LayoutNode$LayoutState; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getLookaheadLayoutPending$ui_release()Z +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getLookaheadMeasurePending$ui_release()Z +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getLookaheadPassDelegate$ui_release()Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$LookaheadPassDelegate; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getMeasurePassDelegate$ui_release()Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getMeasurePending$ui_release()Z +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getOuterCoordinator()Landroidx/compose/ui/node/NodeCoordinator; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getWidth$ui_release()I +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->invalidateParentData()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->isOutMostLookaheadRoot(Landroidx/compose/ui/node/LayoutNode;)Z +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->markChildrenDirty()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->markLayoutPending$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->markMeasurePending$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->onCoordinatesUsed()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->performMeasure-BRTryo0(J)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->resetAlignmentLines()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->setCoordinatesAccessedDuringModifierPlacement(Z)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->setCoordinatesAccessedDuringPlacement(Z)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->updateParentData()V +Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$LookaheadPassDelegate; +Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->access$checkChildrenPlaceOrderForUpdates(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->access$clearPlaceOrder(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->checkChildrenPlaceOrderForUpdates()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->clearPlaceOrder()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->forEachChildAlignmentLinesOwner(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->getAlignmentLines()Landroidx/compose/ui/node/AlignmentLines; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->getChildDelegates$ui_release()Ljava/util/List; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->getInnerCoordinator()Landroidx/compose/ui/node/NodeCoordinator; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->getLastConstraints-DWUhwKw()Landroidx/compose/ui/unit/Constraints; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->getMeasuredByParent$ui_release()Landroidx/compose/ui/node/LayoutNode$UsageByParent; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->getMeasuredWidth()I +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->getParentAlignmentLinesOwner()Landroidx/compose/ui/node/AlignmentLinesOwner; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->getParentData()Ljava/lang/Object; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->getPlaceOrder$ui_release()I +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->getZIndex$ui_release()F +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->invalidateIntrinsicsParent(Z)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->invalidateParentData()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->isPlaced()Z +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->layoutChildren()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->markNodeAndSubtreeAsPlaced()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->markSubtreeAsNotPlaced()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->maxIntrinsicWidth(I)I +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->measure-BRTryo0(J)Landroidx/compose/ui/layout/Placeable; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->notifyChildrenUsingCoordinatesWhilePlacing()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->onBeforeLayoutChildren()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->onIntrinsicsQueried()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->onNodeDetached()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->onNodePlaced$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->placeAt-f8xVGno(JFLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->placeOuterCoordinator-f8xVGno(JFLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->remeasure-BRTryo0(J)Z +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->replace()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->setChildDelegatesDirty$ui_release(Z)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->setMeasuredByParent$ui_release(Landroidx/compose/ui/node/LayoutNode$UsageByParent;)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->setPlaced$ui_release(Z)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->trackMeasurementByParent(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->updateParentData()Z +Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$WhenMappings; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$WhenMappings;->()V +Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1;->(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1;->invoke()V +Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1$1; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1$1;->()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1$1;->()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1$1;->invoke(Landroidx/compose/ui/node/AlignmentLinesOwner;)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1$2; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1$2;->()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1$2;->()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1$2;->invoke(Landroidx/compose/ui/node/AlignmentLinesOwner;)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$placeOuterCoordinator$1; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$placeOuterCoordinator$1;->(Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;JF)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$placeOuterCoordinator$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$placeOuterCoordinator$1;->invoke()V +Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$remeasure$1; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$remeasure$1;->()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$remeasure$1;->()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$remeasure$1;->invoke(Landroidx/compose/ui/node/AlignmentLinesOwner;)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$remeasure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$performMeasure$2; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$performMeasure$2;->(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;J)V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$performMeasure$2;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$performMeasure$2;->invoke()V +Landroidx/compose/ui/node/LayoutTreeConsistencyChecker; +Landroidx/compose/ui/node/LookaheadCapablePlaceable; +HSPLandroidx/compose/ui/node/LookaheadCapablePlaceable;->()V +HSPLandroidx/compose/ui/node/LookaheadCapablePlaceable;->invalidateAlignmentLinesFromPositionChange(Landroidx/compose/ui/node/NodeCoordinator;)V +HSPLandroidx/compose/ui/node/LookaheadCapablePlaceable;->isPlacingForAlignment$ui_release()Z +HSPLandroidx/compose/ui/node/LookaheadCapablePlaceable;->isShallowPlacing$ui_release()Z +HSPLandroidx/compose/ui/node/LookaheadCapablePlaceable;->setPlacingForAlignment$ui_release(Z)V +Landroidx/compose/ui/node/LookaheadDelegate; +Landroidx/compose/ui/node/MeasureAndLayoutDelegate; +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->access$getRoot$p(Landroidx/compose/ui/node/MeasureAndLayoutDelegate;)Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->access$remeasureAndRelayoutIfNeeded(Landroidx/compose/ui/node/MeasureAndLayoutDelegate;Landroidx/compose/ui/node/LayoutNode;Z)Z +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->callOnLayoutCompletedListeners()V +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->dispatchOnPositionedCallbacks$default(Landroidx/compose/ui/node/MeasureAndLayoutDelegate;ZILjava/lang/Object;)V +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->dispatchOnPositionedCallbacks(Z)V +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->doLookaheadRemeasure-sdFAvZA(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/unit/Constraints;)Z +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->doRemeasure-sdFAvZA(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/unit/Constraints;)Z +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->forceMeasureTheSubtree(Landroidx/compose/ui/node/LayoutNode;Z)V +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->getCanAffectParent(Landroidx/compose/ui/node/LayoutNode;)Z +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->getHasPendingMeasureOrLayout()Z +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->getHasPendingOnPositionedCallbacks()Z +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->getMeasureAffectsParent(Landroidx/compose/ui/node/LayoutNode;)Z +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->measureAndLayout(Lkotlin/jvm/functions/Function0;)Z +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->measureAndLayout-0kLqBqw(Landroidx/compose/ui/node/LayoutNode;J)V +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->measureOnly()V +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->onNodeDetached(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->recurseRemeasure(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->remeasureAndRelayoutIfNeeded$default(Landroidx/compose/ui/node/MeasureAndLayoutDelegate;Landroidx/compose/ui/node/LayoutNode;ZILjava/lang/Object;)Z +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->remeasureAndRelayoutIfNeeded(Landroidx/compose/ui/node/LayoutNode;Z)Z +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->remeasureOnly(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->requestOnPositionedCallback(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->requestRelayout$default(Landroidx/compose/ui/node/MeasureAndLayoutDelegate;Landroidx/compose/ui/node/LayoutNode;ZILjava/lang/Object;)Z +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->requestRelayout(Landroidx/compose/ui/node/LayoutNode;Z)Z +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->requestRemeasure$default(Landroidx/compose/ui/node/MeasureAndLayoutDelegate;Landroidx/compose/ui/node/LayoutNode;ZILjava/lang/Object;)Z +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->requestRemeasure(Landroidx/compose/ui/node/LayoutNode;Z)Z +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->updateRootConstraints-BRTryo0(J)V +Landroidx/compose/ui/node/MeasureAndLayoutDelegate$PostponedRequest; +Landroidx/compose/ui/node/MeasureAndLayoutDelegate$WhenMappings; +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate$WhenMappings;->()V +Landroidx/compose/ui/node/MeasureAndLayoutDelegate$forceMeasureTheSubtree$pending$1; +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate$forceMeasureTheSubtree$pending$1;->(Z)V +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate$forceMeasureTheSubtree$pending$1;->invoke(Landroidx/compose/ui/node/LayoutNode;)Ljava/lang/Boolean; +HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate$forceMeasureTheSubtree$pending$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/MeasureScopeWithLayoutNode; +Landroidx/compose/ui/node/ModifierNodeElement; +HSPLandroidx/compose/ui/node/ModifierNodeElement;->()V +HSPLandroidx/compose/ui/node/ModifierNodeElement;->()V +Landroidx/compose/ui/node/MutableVectorWithMutationTracking; +HSPLandroidx/compose/ui/node/MutableVectorWithMutationTracking;->(Landroidx/compose/runtime/collection/MutableVector;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/node/MutableVectorWithMutationTracking;->add(ILjava/lang/Object;)V +HSPLandroidx/compose/ui/node/MutableVectorWithMutationTracking;->asList()Ljava/util/List; +HSPLandroidx/compose/ui/node/MutableVectorWithMutationTracking;->getVector()Landroidx/compose/runtime/collection/MutableVector; +HSPLandroidx/compose/ui/node/MutableVectorWithMutationTracking;->removeAt(I)Ljava/lang/Object; +Landroidx/compose/ui/node/MyersDiffKt; +HSPLandroidx/compose/ui/node/MyersDiffKt;->access$swap([III)V +HSPLandroidx/compose/ui/node/MyersDiffKt;->applyDiff(Landroidx/compose/ui/node/IntStack;Landroidx/compose/ui/node/DiffCallback;)V +HSPLandroidx/compose/ui/node/MyersDiffKt;->backward-4l5_RBY(IIIILandroidx/compose/ui/node/DiffCallback;[I[II[I)Z +HSPLandroidx/compose/ui/node/MyersDiffKt;->calculateDiff(IILandroidx/compose/ui/node/DiffCallback;)Landroidx/compose/ui/node/IntStack; +HSPLandroidx/compose/ui/node/MyersDiffKt;->executeDiff(IILandroidx/compose/ui/node/DiffCallback;)V +HSPLandroidx/compose/ui/node/MyersDiffKt;->fillSnake(IIIIZ[I)V +HSPLandroidx/compose/ui/node/MyersDiffKt;->forward-4l5_RBY(IIIILandroidx/compose/ui/node/DiffCallback;[I[II[I)Z +HSPLandroidx/compose/ui/node/MyersDiffKt;->midPoint-q5eDKzI(IIIILandroidx/compose/ui/node/DiffCallback;[I[I[I)Z +HSPLandroidx/compose/ui/node/MyersDiffKt;->swap([III)V +Landroidx/compose/ui/node/NodeChain; +HSPLandroidx/compose/ui/node/NodeChain;->(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/NodeChain;->access$createAndInsertNodeAsChild(Landroidx/compose/ui/node/NodeChain;Landroidx/compose/ui/Modifier$Element;Landroidx/compose/ui/Modifier$Node;)Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/NodeChain;->access$detachAndRemoveNode(Landroidx/compose/ui/node/NodeChain;Landroidx/compose/ui/Modifier$Node;)Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/NodeChain;->access$getAggregateChildKindSet(Landroidx/compose/ui/node/NodeChain;)I +HSPLandroidx/compose/ui/node/NodeChain;->access$getLogger$p(Landroidx/compose/ui/node/NodeChain;)Landroidx/compose/ui/node/NodeChain$Logger; +PLandroidx/compose/ui/node/NodeChain;->access$propagateCoordinator(Landroidx/compose/ui/node/NodeChain;Landroidx/compose/ui/Modifier$Node;Landroidx/compose/ui/node/NodeCoordinator;)V +HSPLandroidx/compose/ui/node/NodeChain;->access$updateNode(Landroidx/compose/ui/node/NodeChain;Landroidx/compose/ui/Modifier$Element;Landroidx/compose/ui/Modifier$Element;Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/node/NodeChain;->createAndInsertNodeAsChild(Landroidx/compose/ui/Modifier$Element;Landroidx/compose/ui/Modifier$Node;)Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/NodeChain;->detachAndRemoveNode(Landroidx/compose/ui/Modifier$Node;)Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/NodeChain;->getAggregateChildKindSet()I +HSPLandroidx/compose/ui/node/NodeChain;->getDiffer(Landroidx/compose/ui/Modifier$Node;ILandroidx/compose/runtime/collection/MutableVector;Landroidx/compose/runtime/collection/MutableVector;Z)Landroidx/compose/ui/node/NodeChain$Differ; +HSPLandroidx/compose/ui/node/NodeChain;->getHead$ui_release()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/NodeChain;->getInnerCoordinator$ui_release()Landroidx/compose/ui/node/InnerNodeCoordinator; +HSPLandroidx/compose/ui/node/NodeChain;->getOuterCoordinator$ui_release()Landroidx/compose/ui/node/NodeCoordinator; +HSPLandroidx/compose/ui/node/NodeChain;->getTail$ui_release()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/NodeChain;->has$ui_release(I)Z +HSPLandroidx/compose/ui/node/NodeChain;->has-H91voCI$ui_release(I)Z +HSPLandroidx/compose/ui/node/NodeChain;->insertChild(Landroidx/compose/ui/Modifier$Node;Landroidx/compose/ui/Modifier$Node;)Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/NodeChain;->markAsAttached()V +HSPLandroidx/compose/ui/node/NodeChain;->markAsDetached$ui_release()V +HSPLandroidx/compose/ui/node/NodeChain;->padChain()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/NodeChain;->propagateCoordinator(Landroidx/compose/ui/Modifier$Node;Landroidx/compose/ui/node/NodeCoordinator;)V +HSPLandroidx/compose/ui/node/NodeChain;->removeNode(Landroidx/compose/ui/Modifier$Node;)Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/NodeChain;->resetState$ui_release()V +HSPLandroidx/compose/ui/node/NodeChain;->runAttachLifecycle()V +HSPLandroidx/compose/ui/node/NodeChain;->runDetachLifecycle$ui_release()V +HSPLandroidx/compose/ui/node/NodeChain;->structuralUpdate(ILandroidx/compose/runtime/collection/MutableVector;Landroidx/compose/runtime/collection/MutableVector;Landroidx/compose/ui/Modifier$Node;Z)V +HSPLandroidx/compose/ui/node/NodeChain;->syncAggregateChildKindSet()V +HSPLandroidx/compose/ui/node/NodeChain;->syncCoordinators()V +HSPLandroidx/compose/ui/node/NodeChain;->trimChain(Landroidx/compose/ui/Modifier$Node;)Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/NodeChain;->updateFrom$ui_release(Landroidx/compose/ui/Modifier;)V +HSPLandroidx/compose/ui/node/NodeChain;->updateNode(Landroidx/compose/ui/Modifier$Element;Landroidx/compose/ui/Modifier$Element;Landroidx/compose/ui/Modifier$Node;)V +Landroidx/compose/ui/node/NodeChain$Differ; +HSPLandroidx/compose/ui/node/NodeChain$Differ;->(Landroidx/compose/ui/node/NodeChain;Landroidx/compose/ui/Modifier$Node;ILandroidx/compose/runtime/collection/MutableVector;Landroidx/compose/runtime/collection/MutableVector;Z)V +HSPLandroidx/compose/ui/node/NodeChain$Differ;->areItemsTheSame(II)Z +HSPLandroidx/compose/ui/node/NodeChain$Differ;->insert(I)V +HSPLandroidx/compose/ui/node/NodeChain$Differ;->remove(II)V +HSPLandroidx/compose/ui/node/NodeChain$Differ;->same(II)V +HSPLandroidx/compose/ui/node/NodeChain$Differ;->setAfter(Landroidx/compose/runtime/collection/MutableVector;)V +HSPLandroidx/compose/ui/node/NodeChain$Differ;->setBefore(Landroidx/compose/runtime/collection/MutableVector;)V +HSPLandroidx/compose/ui/node/NodeChain$Differ;->setNode(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/node/NodeChain$Differ;->setOffset(I)V +HSPLandroidx/compose/ui/node/NodeChain$Differ;->setShouldAttachOnInsert(Z)V +Landroidx/compose/ui/node/NodeChain$Logger; +Landroidx/compose/ui/node/NodeChainKt; +HSPLandroidx/compose/ui/node/NodeChainKt;->()V +HSPLandroidx/compose/ui/node/NodeChainKt;->access$fillVector(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/collection/MutableVector;)Landroidx/compose/runtime/collection/MutableVector; +HSPLandroidx/compose/ui/node/NodeChainKt;->access$getSentinelHead$p()Landroidx/compose/ui/node/NodeChainKt$SentinelHead$1; +HSPLandroidx/compose/ui/node/NodeChainKt;->access$updateUnsafe(Landroidx/compose/ui/node/ModifierNodeElement;Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/node/NodeChainKt;->actionForModifiers(Landroidx/compose/ui/Modifier$Element;Landroidx/compose/ui/Modifier$Element;)I +HSPLandroidx/compose/ui/node/NodeChainKt;->fillVector(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/collection/MutableVector;)Landroidx/compose/runtime/collection/MutableVector; +HSPLandroidx/compose/ui/node/NodeChainKt;->updateUnsafe(Landroidx/compose/ui/node/ModifierNodeElement;Landroidx/compose/ui/Modifier$Node;)V +Landroidx/compose/ui/node/NodeChainKt$SentinelHead$1; +HSPLandroidx/compose/ui/node/NodeChainKt$SentinelHead$1;->()V +Landroidx/compose/ui/node/NodeChainKt$fillVector$1; +HSPLandroidx/compose/ui/node/NodeChainKt$fillVector$1;->(Landroidx/compose/runtime/collection/MutableVector;)V +Landroidx/compose/ui/node/NodeCoordinator; +HSPLandroidx/compose/ui/node/NodeCoordinator;->()V +HSPLandroidx/compose/ui/node/NodeCoordinator;->(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->access$drawContainedDrawModifiers(Landroidx/compose/ui/node/NodeCoordinator;Landroidx/compose/ui/graphics/Canvas;)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->access$getGraphicsLayerScope$cp()Landroidx/compose/ui/graphics/ReusableGraphicsLayerScope; +HSPLandroidx/compose/ui/node/NodeCoordinator;->access$getLayerPositionalProperties$p(Landroidx/compose/ui/node/NodeCoordinator;)Landroidx/compose/ui/node/LayerPositionalProperties; +HSPLandroidx/compose/ui/node/NodeCoordinator;->access$getPointerInputSource$cp()Landroidx/compose/ui/node/NodeCoordinator$HitTestSource; +HSPLandroidx/compose/ui/node/NodeCoordinator;->access$getTmpLayerPositionalProperties$cp()Landroidx/compose/ui/node/LayerPositionalProperties; +HSPLandroidx/compose/ui/node/NodeCoordinator;->access$headNode(Landroidx/compose/ui/node/NodeCoordinator;Z)Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/NodeCoordinator;->access$hit-1hIXUjU(Landroidx/compose/ui/node/NodeCoordinator;Landroidx/compose/ui/Modifier$Node;Landroidx/compose/ui/node/NodeCoordinator$HitTestSource;JLandroidx/compose/ui/node/HitTestResult;ZZ)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->access$setMeasurementConstraints-BRTryo0(Landroidx/compose/ui/node/NodeCoordinator;J)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->ancestorToLocal(Landroidx/compose/ui/node/NodeCoordinator;Landroidx/compose/ui/geometry/MutableRect;Z)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->ancestorToLocal-R5De75A(Landroidx/compose/ui/node/NodeCoordinator;J)J +HSPLandroidx/compose/ui/node/NodeCoordinator;->calculateMinimumTouchTargetPadding-E7KxVPU(J)J +HSPLandroidx/compose/ui/node/NodeCoordinator;->distanceInMinimumTouchTarget-tz77jQw(JJ)F +HSPLandroidx/compose/ui/node/NodeCoordinator;->draw(Landroidx/compose/ui/graphics/Canvas;)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->drawContainedDrawModifiers(Landroidx/compose/ui/graphics/Canvas;)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->findCommonAncestor$ui_release(Landroidx/compose/ui/node/NodeCoordinator;)Landroidx/compose/ui/node/NodeCoordinator; +HSPLandroidx/compose/ui/node/NodeCoordinator;->fromParentPosition-MK-Hz9U(J)J +HSPLandroidx/compose/ui/node/NodeCoordinator;->getAlignmentLinesOwner()Landroidx/compose/ui/node/AlignmentLinesOwner; +HSPLandroidx/compose/ui/node/NodeCoordinator;->getCoordinates()Landroidx/compose/ui/layout/LayoutCoordinates; +HSPLandroidx/compose/ui/node/NodeCoordinator;->getDensity()F +HSPLandroidx/compose/ui/node/NodeCoordinator;->getFontScale()F +HSPLandroidx/compose/ui/node/NodeCoordinator;->getLastLayerDrawingWasSkipped$ui_release()Z +HSPLandroidx/compose/ui/node/NodeCoordinator;->getLastMeasurementConstraints-msEJaDk$ui_release()J +HSPLandroidx/compose/ui/node/NodeCoordinator;->getLayer()Landroidx/compose/ui/node/OwnedLayer; +HSPLandroidx/compose/ui/node/NodeCoordinator;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/node/NodeCoordinator;->getLayoutNode()Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/node/NodeCoordinator;->getMeasureResult$ui_release()Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/ui/node/NodeCoordinator;->getMinimumTouchTargetSize-NH-jbRc()J +HSPLandroidx/compose/ui/node/NodeCoordinator;->getParent()Landroidx/compose/ui/node/LookaheadCapablePlaceable; +HSPLandroidx/compose/ui/node/NodeCoordinator;->getParentData()Ljava/lang/Object; +HSPLandroidx/compose/ui/node/NodeCoordinator;->getParentLayoutCoordinates()Landroidx/compose/ui/layout/LayoutCoordinates; +HSPLandroidx/compose/ui/node/NodeCoordinator;->getPosition-nOcc-ac()J +HSPLandroidx/compose/ui/node/NodeCoordinator;->getRectCache()Landroidx/compose/ui/geometry/MutableRect; +HSPLandroidx/compose/ui/node/NodeCoordinator;->getSize-YbymL2g()J +HSPLandroidx/compose/ui/node/NodeCoordinator;->getSnapshotObserver()Landroidx/compose/ui/node/OwnerSnapshotObserver; +HSPLandroidx/compose/ui/node/NodeCoordinator;->getWrapped$ui_release()Landroidx/compose/ui/node/NodeCoordinator; +HSPLandroidx/compose/ui/node/NodeCoordinator;->getWrappedBy$ui_release()Landroidx/compose/ui/node/NodeCoordinator; +HSPLandroidx/compose/ui/node/NodeCoordinator;->getZIndex()F +HSPLandroidx/compose/ui/node/NodeCoordinator;->hasNode-H91voCI(I)Z +HSPLandroidx/compose/ui/node/NodeCoordinator;->head-H91voCI(I)Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/NodeCoordinator;->headNode(Z)Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/NodeCoordinator;->hit-1hIXUjU(Landroidx/compose/ui/Modifier$Node;Landroidx/compose/ui/node/NodeCoordinator$HitTestSource;JLandroidx/compose/ui/node/HitTestResult;ZZ)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->hitTest-YqVAtuI(Landroidx/compose/ui/node/NodeCoordinator$HitTestSource;JLandroidx/compose/ui/node/HitTestResult;ZZ)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->hitTestChild-YqVAtuI(Landroidx/compose/ui/node/NodeCoordinator$HitTestSource;JLandroidx/compose/ui/node/HitTestResult;ZZ)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->invalidateLayer()V +HSPLandroidx/compose/ui/node/NodeCoordinator;->invoke(Landroidx/compose/ui/graphics/Canvas;)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/node/NodeCoordinator;->isAttached()Z +HSPLandroidx/compose/ui/node/NodeCoordinator;->isPointerInBounds-k-4lQ0M(J)Z +HSPLandroidx/compose/ui/node/NodeCoordinator;->isTransparent()Z +HSPLandroidx/compose/ui/node/NodeCoordinator;->isValidOwnerScope()Z +HSPLandroidx/compose/ui/node/NodeCoordinator;->localBoundingBoxOf(Landroidx/compose/ui/layout/LayoutCoordinates;Z)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/node/NodeCoordinator;->localPositionOf-R5De75A(Landroidx/compose/ui/layout/LayoutCoordinates;J)J +HSPLandroidx/compose/ui/node/NodeCoordinator;->localToRoot-MK-Hz9U(J)J +HSPLandroidx/compose/ui/node/NodeCoordinator;->localToWindow-MK-Hz9U(J)J +HSPLandroidx/compose/ui/node/NodeCoordinator;->offsetFromEdge-MK-Hz9U(J)J +HSPLandroidx/compose/ui/node/NodeCoordinator;->onCoordinatesUsed$ui_release()V +HSPLandroidx/compose/ui/node/NodeCoordinator;->onLayoutModifierNodeChanged()V +HSPLandroidx/compose/ui/node/NodeCoordinator;->onLayoutNodeAttach()V +HSPLandroidx/compose/ui/node/NodeCoordinator;->onMeasureResultChanged(II)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->onMeasured()V +HSPLandroidx/compose/ui/node/NodeCoordinator;->onPlaced()V +HSPLandroidx/compose/ui/node/NodeCoordinator;->onRelease()V +HSPLandroidx/compose/ui/node/NodeCoordinator;->placeAt-f8xVGno(JFLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->placeSelf-f8xVGno(JFLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->placeSelfApparentToRealOffset-f8xVGno(JFLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->rectInParent$ui_release$default(Landroidx/compose/ui/node/NodeCoordinator;Landroidx/compose/ui/geometry/MutableRect;ZZILjava/lang/Object;)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->rectInParent$ui_release(Landroidx/compose/ui/geometry/MutableRect;ZZ)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->setMeasureResult$ui_release(Landroidx/compose/ui/layout/MeasureResult;)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->setPosition--gyyYBs(J)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->setWrapped$ui_release(Landroidx/compose/ui/node/NodeCoordinator;)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->setWrappedBy$ui_release(Landroidx/compose/ui/node/NodeCoordinator;)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->shouldSharePointerInputWithSiblings()Z +HSPLandroidx/compose/ui/node/NodeCoordinator;->toCoordinator(Landroidx/compose/ui/layout/LayoutCoordinates;)Landroidx/compose/ui/node/NodeCoordinator; +HSPLandroidx/compose/ui/node/NodeCoordinator;->toParentPosition-MK-Hz9U(J)J +HSPLandroidx/compose/ui/node/NodeCoordinator;->touchBoundsInRoot()Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/node/NodeCoordinator;->updateLayerBlock$default(Landroidx/compose/ui/node/NodeCoordinator;Lkotlin/jvm/functions/Function1;ZILjava/lang/Object;)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->updateLayerBlock(Lkotlin/jvm/functions/Function1;Z)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->updateLayerParameters$default(Landroidx/compose/ui/node/NodeCoordinator;ZILjava/lang/Object;)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->updateLayerParameters(Z)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->withinLayerBounds-k-4lQ0M(J)Z +Landroidx/compose/ui/node/NodeCoordinator$Companion; +HSPLandroidx/compose/ui/node/NodeCoordinator$Companion;->()V +HSPLandroidx/compose/ui/node/NodeCoordinator$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/node/NodeCoordinator$Companion;->getPointerInputSource()Landroidx/compose/ui/node/NodeCoordinator$HitTestSource; +Landroidx/compose/ui/node/NodeCoordinator$Companion$PointerInputSource$1; +HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$PointerInputSource$1;->()V +HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$PointerInputSource$1;->childHitTest-YqVAtuI(Landroidx/compose/ui/node/LayoutNode;JLandroidx/compose/ui/node/HitTestResult;ZZ)V +HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$PointerInputSource$1;->entityType-OLwlOKw()I +HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$PointerInputSource$1;->shouldHitTestChildren(Landroidx/compose/ui/node/LayoutNode;)Z +Landroidx/compose/ui/node/NodeCoordinator$Companion$SemanticsSource$1; +HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$SemanticsSource$1;->()V +Landroidx/compose/ui/node/NodeCoordinator$Companion$onCommitAffectingLayer$1; +HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$onCommitAffectingLayer$1;->()V +HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$onCommitAffectingLayer$1;->()V +HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$onCommitAffectingLayer$1;->invoke(Landroidx/compose/ui/node/NodeCoordinator;)V +HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$onCommitAffectingLayer$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/NodeCoordinator$Companion$onCommitAffectingLayerParams$1; +HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$onCommitAffectingLayerParams$1;->()V +HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$onCommitAffectingLayerParams$1;->()V +HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$onCommitAffectingLayerParams$1;->invoke(Landroidx/compose/ui/node/NodeCoordinator;)V +HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$onCommitAffectingLayerParams$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/NodeCoordinator$HitTestSource; +Landroidx/compose/ui/node/NodeCoordinator$hit$1; +HSPLandroidx/compose/ui/node/NodeCoordinator$hit$1;->(Landroidx/compose/ui/node/NodeCoordinator;Landroidx/compose/ui/Modifier$Node;Landroidx/compose/ui/node/NodeCoordinator$HitTestSource;JLandroidx/compose/ui/node/HitTestResult;ZZ)V +HSPLandroidx/compose/ui/node/NodeCoordinator$hit$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/node/NodeCoordinator$hit$1;->invoke()V +Landroidx/compose/ui/node/NodeCoordinator$invalidateParentLayer$1; +HSPLandroidx/compose/ui/node/NodeCoordinator$invalidateParentLayer$1;->(Landroidx/compose/ui/node/NodeCoordinator;)V +HSPLandroidx/compose/ui/node/NodeCoordinator$invalidateParentLayer$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/node/NodeCoordinator$invalidateParentLayer$1;->invoke()V +Landroidx/compose/ui/node/NodeCoordinator$invoke$1; +HSPLandroidx/compose/ui/node/NodeCoordinator$invoke$1;->(Landroidx/compose/ui/node/NodeCoordinator;Landroidx/compose/ui/graphics/Canvas;)V +HSPLandroidx/compose/ui/node/NodeCoordinator$invoke$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/node/NodeCoordinator$invoke$1;->invoke()V +Landroidx/compose/ui/node/NodeCoordinator$updateLayerParameters$1; +HSPLandroidx/compose/ui/node/NodeCoordinator$updateLayerParameters$1;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/node/NodeCoordinator$updateLayerParameters$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/node/NodeCoordinator$updateLayerParameters$1;->invoke()V +Landroidx/compose/ui/node/NodeCoordinatorKt; +HSPLandroidx/compose/ui/node/NodeCoordinatorKt;->access$nextUntil-hw7D004(Landroidx/compose/ui/node/DelegatableNode;II)Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/node/NodeCoordinatorKt;->nextUntil-hw7D004(Landroidx/compose/ui/node/DelegatableNode;II)Landroidx/compose/ui/Modifier$Node; +Landroidx/compose/ui/node/NodeKind; +HSPLandroidx/compose/ui/node/NodeKind;->constructor-impl(I)I +Landroidx/compose/ui/node/NodeKindKt; +HSPLandroidx/compose/ui/node/NodeKindKt;->autoInvalidateInsertedNode(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/node/NodeKindKt;->autoInvalidateNodeIncludingDelegates(Landroidx/compose/ui/Modifier$Node;II)V +HSPLandroidx/compose/ui/node/NodeKindKt;->autoInvalidateNodeSelf(Landroidx/compose/ui/Modifier$Node;II)V +HSPLandroidx/compose/ui/node/NodeKindKt;->autoInvalidateRemovedNode(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/node/NodeKindKt;->autoInvalidateUpdatedNode(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/node/NodeKindKt;->calculateNodeKindSetFrom(Landroidx/compose/ui/Modifier$Element;)I +HSPLandroidx/compose/ui/node/NodeKindKt;->calculateNodeKindSetFrom(Landroidx/compose/ui/Modifier$Node;)I +HSPLandroidx/compose/ui/node/NodeKindKt;->calculateNodeKindSetFromIncludingDelegates(Landroidx/compose/ui/Modifier$Node;)I +HSPLandroidx/compose/ui/node/NodeKindKt;->getIncludeSelfInTraversal-H91voCI(I)Z +HSPLandroidx/compose/ui/node/NodeKindKt;->specifiesCanFocusProperty(Landroidx/compose/ui/focus/FocusPropertiesModifierNode;)Z +Landroidx/compose/ui/node/NodeMeasuringIntrinsics; +HSPLandroidx/compose/ui/node/NodeMeasuringIntrinsics;->()V +HSPLandroidx/compose/ui/node/NodeMeasuringIntrinsics;->()V +HSPLandroidx/compose/ui/node/NodeMeasuringIntrinsics;->maxWidth$ui_release(Landroidx/compose/ui/node/NodeMeasuringIntrinsics$MeasureBlock;Landroidx/compose/ui/layout/IntrinsicMeasureScope;Landroidx/compose/ui/layout/IntrinsicMeasurable;I)I +Landroidx/compose/ui/node/NodeMeasuringIntrinsics$DefaultIntrinsicMeasurable; +HSPLandroidx/compose/ui/node/NodeMeasuringIntrinsics$DefaultIntrinsicMeasurable;->(Landroidx/compose/ui/layout/IntrinsicMeasurable;Landroidx/compose/ui/node/NodeMeasuringIntrinsics$IntrinsicMinMax;Landroidx/compose/ui/node/NodeMeasuringIntrinsics$IntrinsicWidthHeight;)V +HSPLandroidx/compose/ui/node/NodeMeasuringIntrinsics$DefaultIntrinsicMeasurable;->measure-BRTryo0(J)Landroidx/compose/ui/layout/Placeable; +Landroidx/compose/ui/node/NodeMeasuringIntrinsics$EmptyPlaceable; +HSPLandroidx/compose/ui/node/NodeMeasuringIntrinsics$EmptyPlaceable;->(II)V +Landroidx/compose/ui/node/NodeMeasuringIntrinsics$IntrinsicMinMax; +HSPLandroidx/compose/ui/node/NodeMeasuringIntrinsics$IntrinsicMinMax;->$values()[Landroidx/compose/ui/node/NodeMeasuringIntrinsics$IntrinsicMinMax; +HSPLandroidx/compose/ui/node/NodeMeasuringIntrinsics$IntrinsicMinMax;->()V +HSPLandroidx/compose/ui/node/NodeMeasuringIntrinsics$IntrinsicMinMax;->(Ljava/lang/String;I)V +Landroidx/compose/ui/node/NodeMeasuringIntrinsics$IntrinsicWidthHeight; +HSPLandroidx/compose/ui/node/NodeMeasuringIntrinsics$IntrinsicWidthHeight;->$values()[Landroidx/compose/ui/node/NodeMeasuringIntrinsics$IntrinsicWidthHeight; +HSPLandroidx/compose/ui/node/NodeMeasuringIntrinsics$IntrinsicWidthHeight;->()V +HSPLandroidx/compose/ui/node/NodeMeasuringIntrinsics$IntrinsicWidthHeight;->(Ljava/lang/String;I)V +Landroidx/compose/ui/node/NodeMeasuringIntrinsics$MeasureBlock; +Landroidx/compose/ui/node/ObserverModifierNode; +Landroidx/compose/ui/node/ObserverModifierNodeKt; +HSPLandroidx/compose/ui/node/ObserverModifierNodeKt;->observeReads(Landroidx/compose/ui/Modifier$Node;Lkotlin/jvm/functions/Function0;)V +Landroidx/compose/ui/node/ObserverNodeOwnerScope; +HSPLandroidx/compose/ui/node/ObserverNodeOwnerScope;->()V +HSPLandroidx/compose/ui/node/ObserverNodeOwnerScope;->(Landroidx/compose/ui/node/ObserverModifierNode;)V +HSPLandroidx/compose/ui/node/ObserverNodeOwnerScope;->access$getOnObserveReadsChanged$cp()Lkotlin/jvm/functions/Function1; +Landroidx/compose/ui/node/ObserverNodeOwnerScope$Companion; +HSPLandroidx/compose/ui/node/ObserverNodeOwnerScope$Companion;->()V +HSPLandroidx/compose/ui/node/ObserverNodeOwnerScope$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/node/ObserverNodeOwnerScope$Companion;->getOnObserveReadsChanged$ui_release()Lkotlin/jvm/functions/Function1; +Landroidx/compose/ui/node/ObserverNodeOwnerScope$Companion$OnObserveReadsChanged$1; +HSPLandroidx/compose/ui/node/ObserverNodeOwnerScope$Companion$OnObserveReadsChanged$1;->()V +HSPLandroidx/compose/ui/node/ObserverNodeOwnerScope$Companion$OnObserveReadsChanged$1;->()V +Landroidx/compose/ui/node/OnPositionedDispatcher; +HSPLandroidx/compose/ui/node/OnPositionedDispatcher;->()V +HSPLandroidx/compose/ui/node/OnPositionedDispatcher;->()V +HSPLandroidx/compose/ui/node/OnPositionedDispatcher;->dispatch()V +HSPLandroidx/compose/ui/node/OnPositionedDispatcher;->dispatchHierarchy(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/OnPositionedDispatcher;->isNotEmpty()Z +HSPLandroidx/compose/ui/node/OnPositionedDispatcher;->onNodePositioned(Landroidx/compose/ui/node/LayoutNode;)V +Landroidx/compose/ui/node/OnPositionedDispatcher$Companion; +HSPLandroidx/compose/ui/node/OnPositionedDispatcher$Companion;->()V +HSPLandroidx/compose/ui/node/OnPositionedDispatcher$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/node/OnPositionedDispatcher$Companion$DepthComparator; +HSPLandroidx/compose/ui/node/OnPositionedDispatcher$Companion$DepthComparator;->()V +HSPLandroidx/compose/ui/node/OnPositionedDispatcher$Companion$DepthComparator;->()V +HSPLandroidx/compose/ui/node/OnPositionedDispatcher$Companion$DepthComparator;->compare(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/node/LayoutNode;)I +HSPLandroidx/compose/ui/node/OnPositionedDispatcher$Companion$DepthComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +Landroidx/compose/ui/node/OwnedLayer; +Landroidx/compose/ui/node/Owner; +HSPLandroidx/compose/ui/node/Owner;->()V +HSPLandroidx/compose/ui/node/Owner;->forceMeasureTheSubtree$default(Landroidx/compose/ui/node/Owner;Landroidx/compose/ui/node/LayoutNode;ZILjava/lang/Object;)V +HSPLandroidx/compose/ui/node/Owner;->measureAndLayout$default(Landroidx/compose/ui/node/Owner;ZILjava/lang/Object;)V +HSPLandroidx/compose/ui/node/Owner;->onRequestMeasure$default(Landroidx/compose/ui/node/Owner;Landroidx/compose/ui/node/LayoutNode;ZZZILjava/lang/Object;)V +HSPLandroidx/compose/ui/node/Owner;->onRequestRelayout$default(Landroidx/compose/ui/node/Owner;Landroidx/compose/ui/node/LayoutNode;ZZILjava/lang/Object;)V +Landroidx/compose/ui/node/Owner$Companion; +HSPLandroidx/compose/ui/node/Owner$Companion;->()V +HSPLandroidx/compose/ui/node/Owner$Companion;->()V +HSPLandroidx/compose/ui/node/Owner$Companion;->getEnableExtraAssertions()Z +Landroidx/compose/ui/node/Owner$OnLayoutCompletedListener; +Landroidx/compose/ui/node/OwnerScope; +Landroidx/compose/ui/node/OwnerSnapshotObserver; +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver;->clearInvalidObservations$ui_release()V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver;->observeLayoutModifierSnapshotReads$ui_release(Landroidx/compose/ui/node/LayoutNode;ZLkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver;->observeLayoutSnapshotReads$ui_release(Landroidx/compose/ui/node/LayoutNode;ZLkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver;->observeMeasureSnapshotReads$ui_release(Landroidx/compose/ui/node/LayoutNode;ZLkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver;->observeReads$ui_release(Landroidx/compose/ui/node/OwnerScope;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver;->observeSemanticsReads$ui_release(Landroidx/compose/ui/node/LayoutNode;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver;->startObserving$ui_release()V +Landroidx/compose/ui/node/OwnerSnapshotObserver$clearInvalidObservations$1; +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$clearInvalidObservations$1;->()V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$clearInvalidObservations$1;->()V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$clearInvalidObservations$1;->invoke(Ljava/lang/Object;)Ljava/lang/Boolean; +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$clearInvalidObservations$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayout$1; +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayout$1;->()V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayout$1;->()V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayout$1;->invoke(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayout$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayoutModifier$1; +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayoutModifier$1;->()V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayoutModifier$1;->()V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayoutModifier$1;->invoke(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayoutModifier$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayoutModifierInLookahead$1; +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayoutModifierInLookahead$1;->()V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayoutModifierInLookahead$1;->()V +Landroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLookaheadLayout$1; +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLookaheadLayout$1;->()V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLookaheadLayout$1;->()V +Landroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLookaheadMeasure$1; +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLookaheadMeasure$1;->()V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLookaheadMeasure$1;->()V +Landroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingMeasure$1; +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingMeasure$1;->()V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingMeasure$1;->()V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingMeasure$1;->invoke(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingMeasure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingSemantics$1; +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingSemantics$1;->()V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingSemantics$1;->()V +Landroidx/compose/ui/node/ParentDataModifierNode; +Landroidx/compose/ui/node/ParentDataModifierNodeKt; +HSPLandroidx/compose/ui/node/ParentDataModifierNodeKt;->invalidateParentData(Landroidx/compose/ui/node/ParentDataModifierNode;)V +Landroidx/compose/ui/node/PointerInputModifierNode; +HSPLandroidx/compose/ui/node/PointerInputModifierNode;->sharePointerInputWithSiblings()Z +Landroidx/compose/ui/node/PointerInputModifierNodeKt; +HSPLandroidx/compose/ui/node/PointerInputModifierNodeKt;->getLayoutCoordinates(Landroidx/compose/ui/node/PointerInputModifierNode;)Landroidx/compose/ui/layout/LayoutCoordinates; +Landroidx/compose/ui/node/RootForTest; +Landroidx/compose/ui/node/SemanticsModifierNode; +HSPLandroidx/compose/ui/node/SemanticsModifierNode;->getShouldClearDescendantSemantics()Z +HSPLandroidx/compose/ui/node/SemanticsModifierNode;->getShouldMergeDescendantSemantics()Z +Landroidx/compose/ui/node/SemanticsModifierNodeKt; +HSPLandroidx/compose/ui/node/SemanticsModifierNodeKt;->getUseMinimumTouchTarget(Landroidx/compose/ui/semantics/SemanticsConfiguration;)Z +HSPLandroidx/compose/ui/node/SemanticsModifierNodeKt;->invalidateSemantics(Landroidx/compose/ui/node/SemanticsModifierNode;)V +HSPLandroidx/compose/ui/node/SemanticsModifierNodeKt;->touchBoundsInRoot(Landroidx/compose/ui/Modifier$Node;Z)Landroidx/compose/ui/geometry/Rect; +Landroidx/compose/ui/node/Snake; +HSPLandroidx/compose/ui/node/Snake;->addDiagonalToStack-impl([ILandroidx/compose/ui/node/IntStack;)V +HSPLandroidx/compose/ui/node/Snake;->constructor-impl([I)[I +HSPLandroidx/compose/ui/node/Snake;->getDiagonalSize-impl([I)I +HSPLandroidx/compose/ui/node/Snake;->getEndX-impl([I)I +HSPLandroidx/compose/ui/node/Snake;->getEndY-impl([I)I +HSPLandroidx/compose/ui/node/Snake;->getHasAdditionOrRemoval-impl([I)Z +HSPLandroidx/compose/ui/node/Snake;->getReverse-impl([I)Z +HSPLandroidx/compose/ui/node/Snake;->getStartX-impl([I)I +HSPLandroidx/compose/ui/node/Snake;->getStartY-impl([I)I +HSPLandroidx/compose/ui/node/Snake;->isAddition-impl([I)Z +Landroidx/compose/ui/node/TailModifierNode; +HSPLandroidx/compose/ui/node/TailModifierNode;->()V +HSPLandroidx/compose/ui/node/TailModifierNode;->getAttachHasBeenRun()Z +HSPLandroidx/compose/ui/node/TailModifierNode;->onAttach()V +HSPLandroidx/compose/ui/node/TailModifierNode;->onDetach()V +Landroidx/compose/ui/node/TreeSet; +HSPLandroidx/compose/ui/node/TreeSet;->(Ljava/util/Comparator;)V +Landroidx/compose/ui/node/UiApplier; +HSPLandroidx/compose/ui/node/UiApplier;->(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/UiApplier;->insertBottomUp(ILandroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/UiApplier;->insertBottomUp(ILjava/lang/Object;)V +HSPLandroidx/compose/ui/node/UiApplier;->insertTopDown(ILandroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/node/UiApplier;->insertTopDown(ILjava/lang/Object;)V +HSPLandroidx/compose/ui/node/UiApplier;->onEndChanges()V +HSPLandroidx/compose/ui/node/UiApplier;->remove(II)V +Landroidx/compose/ui/platform/AbstractComposeView; +HSPLandroidx/compose/ui/platform/AbstractComposeView;->()V +HSPLandroidx/compose/ui/platform/AbstractComposeView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroidx/compose/ui/platform/AbstractComposeView;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V +HSPLandroidx/compose/ui/platform/AbstractComposeView;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V +HSPLandroidx/compose/ui/platform/AbstractComposeView;->cacheIfAlive(Landroidx/compose/runtime/CompositionContext;)Landroidx/compose/runtime/CompositionContext; +HSPLandroidx/compose/ui/platform/AbstractComposeView;->checkAddView()V +HSPLandroidx/compose/ui/platform/AbstractComposeView;->ensureCompositionCreated()V +HSPLandroidx/compose/ui/platform/AbstractComposeView;->internalOnLayout$ui_release(ZIIII)V +HSPLandroidx/compose/ui/platform/AbstractComposeView;->internalOnMeasure$ui_release(II)V +HSPLandroidx/compose/ui/platform/AbstractComposeView;->isAlive(Landroidx/compose/runtime/CompositionContext;)Z +HSPLandroidx/compose/ui/platform/AbstractComposeView;->onAttachedToWindow()V +HSPLandroidx/compose/ui/platform/AbstractComposeView;->onLayout(ZIIII)V +HSPLandroidx/compose/ui/platform/AbstractComposeView;->onMeasure(II)V +HSPLandroidx/compose/ui/platform/AbstractComposeView;->onRtlPropertiesChanged(I)V +HSPLandroidx/compose/ui/platform/AbstractComposeView;->resolveParentCompositionContext()Landroidx/compose/runtime/CompositionContext; +HSPLandroidx/compose/ui/platform/AbstractComposeView;->setParentCompositionContext(Landroidx/compose/runtime/CompositionContext;)V +HSPLandroidx/compose/ui/platform/AbstractComposeView;->setParentContext(Landroidx/compose/runtime/CompositionContext;)V +HSPLandroidx/compose/ui/platform/AbstractComposeView;->setPreviousAttachedWindowToken(Landroid/os/IBinder;)V +Landroidx/compose/ui/platform/AbstractComposeView$ensureCompositionCreated$1; +HSPLandroidx/compose/ui/platform/AbstractComposeView$ensureCompositionCreated$1;->(Landroidx/compose/ui/platform/AbstractComposeView;)V +HSPLandroidx/compose/ui/platform/AbstractComposeView$ensureCompositionCreated$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/ui/platform/AbstractComposeView$ensureCompositionCreated$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/AccessibilityManager; +Landroidx/compose/ui/platform/AccessibilityNodeInfoVerificationHelperMethods; +HSPLandroidx/compose/ui/platform/AccessibilityNodeInfoVerificationHelperMethods;->()V +HSPLandroidx/compose/ui/platform/AccessibilityNodeInfoVerificationHelperMethods;->()V +HSPLandroidx/compose/ui/platform/AccessibilityNodeInfoVerificationHelperMethods;->setAvailableExtraData(Landroid/view/accessibility/AccessibilityNodeInfo;Ljava/util/List;)V +Landroidx/compose/ui/platform/AndroidAccessibilityManager; +HSPLandroidx/compose/ui/platform/AndroidAccessibilityManager;->()V +HSPLandroidx/compose/ui/platform/AndroidAccessibilityManager;->(Landroid/content/Context;)V +Landroidx/compose/ui/platform/AndroidAccessibilityManager$Companion; +HSPLandroidx/compose/ui/platform/AndroidAccessibilityManager$Companion;->()V +HSPLandroidx/compose/ui/platform/AndroidAccessibilityManager$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/platform/AndroidClipboardManager; +HSPLandroidx/compose/ui/platform/AndroidClipboardManager;->(Landroid/content/ClipboardManager;)V +HSPLandroidx/compose/ui/platform/AndroidClipboardManager;->(Landroid/content/Context;)V +HSPLandroidx/compose/ui/platform/AndroidClipboardManager;->hasText()Z +Landroidx/compose/ui/platform/AndroidComposeView; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->$r8$lambda$6rnsioIDxAVR319ScBkOteeoeiE(Landroidx/compose/ui/platform/AndroidComposeView;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->$r8$lambda$TvhWqMihl4JwF42Odovn0ewO6fk(Landroidx/compose/ui/platform/AndroidComposeView;Z)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->(Landroid/content/Context;Lkotlin/coroutines/CoroutineContext;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->access$getGetBooleanMethod$cp()Ljava/lang/reflect/Method; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->access$getPreviousMotionEvent$p(Landroidx/compose/ui/platform/AndroidComposeView;)Landroid/view/MotionEvent; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->access$getSystemPropertiesClass$cp()Ljava/lang/Class; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->access$get_viewTreeOwners(Landroidx/compose/ui/platform/AndroidComposeView;)Landroidx/compose/ui/platform/AndroidComposeView$ViewTreeOwners; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->access$setGetBooleanMethod$cp(Ljava/lang/reflect/Method;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->access$setSystemPropertiesClass$cp(Ljava/lang/Class;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->autofillSupported()Z +HSPLandroidx/compose/ui/platform/AndroidComposeView;->boundsUpdatesEventLoop(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->calculatePositionInWindow-MK-Hz9U(J)J +HSPLandroidx/compose/ui/platform/AndroidComposeView;->childSizeCanAffectParentSize(Landroidx/compose/ui/node/LayoutNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeView;->clearChildInvalidObservations(Landroid/view/ViewGroup;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->convertMeasureSpec-I7RO_PI(I)J +HSPLandroidx/compose/ui/platform/AndroidComposeView;->createLayer(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)Landroidx/compose/ui/node/OwnedLayer; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->dispatchDraw(Landroid/graphics/Canvas;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeView;->forceMeasureTheSubtree(Landroidx/compose/ui/node/LayoutNode;Z)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getAccessibilityManager()Landroidx/compose/ui/platform/AccessibilityManager; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getAccessibilityManager()Landroidx/compose/ui/platform/AndroidAccessibilityManager; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getAndroidViewsHandler$ui_release()Landroidx/compose/ui/platform/AndroidViewsHandler; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getAutofill()Landroidx/compose/ui/autofill/Autofill; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getAutofillTree()Landroidx/compose/ui/autofill/AutofillTree; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getClipboardManager()Landroidx/compose/ui/platform/AndroidClipboardManager; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getClipboardManager()Landroidx/compose/ui/platform/ClipboardManager; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getCoroutineContext()Lkotlin/coroutines/CoroutineContext; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getDensity()Landroidx/compose/ui/unit/Density; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getFocusOwner()Landroidx/compose/ui/focus/FocusOwner; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getFontFamilyResolver()Landroidx/compose/ui/text/font/FontFamily$Resolver; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getFontLoader()Landroidx/compose/ui/text/font/Font$ResourceLoader; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getFontWeightAdjustmentCompat(Landroid/content/res/Configuration;)I +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getHapticFeedBack()Landroidx/compose/ui/hapticfeedback/HapticFeedback; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getInputModeManager()Landroidx/compose/ui/input/InputModeManager; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getModifierLocalManager()Landroidx/compose/ui/modifier/ModifierLocalManager; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getPlatformTextInputPluginRegistry()Landroidx/compose/ui/text/input/PlatformTextInputPluginRegistry; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getPlatformTextInputPluginRegistry()Landroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getPointerIconService()Landroidx/compose/ui/input/pointer/PointerIconService; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getRoot()Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getSemanticsOwner()Landroidx/compose/ui/semantics/SemanticsOwner; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getSharedDrawScope()Landroidx/compose/ui/node/LayoutNodeDrawScope; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getShowLayoutBounds()Z +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getSnapshotObserver()Landroidx/compose/ui/node/OwnerSnapshotObserver; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getTextInputService()Landroidx/compose/ui/text/input/TextInputService; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getTextToolbar()Landroidx/compose/ui/platform/TextToolbar; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getView()Landroid/view/View; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getViewConfiguration()Landroidx/compose/ui/platform/ViewConfiguration; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getViewTreeOwners()Landroidx/compose/ui/platform/AndroidComposeView$ViewTreeOwners; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getWindowInfo()Landroidx/compose/ui/platform/WindowInfo; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->get_viewTreeOwners()Landroidx/compose/ui/platform/AndroidComposeView$ViewTreeOwners; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->globalLayoutListener$lambda$1(Landroidx/compose/ui/platform/AndroidComposeView;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->handleMotionEvent-8iAsVTc(Landroid/view/MotionEvent;)I +HSPLandroidx/compose/ui/platform/AndroidComposeView;->hasChangedDevices(Landroid/view/MotionEvent;Landroid/view/MotionEvent;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeView;->invalidateLayers(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->invalidateLayoutNodeMeasurement(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->isBadMotionEvent(Landroid/view/MotionEvent;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeView;->isInBounds(Landroid/view/MotionEvent;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeView;->localToScreen-MK-Hz9U(J)J +HSPLandroidx/compose/ui/platform/AndroidComposeView;->measureAndLayout(Z)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->measureAndLayout-0kLqBqw(Landroidx/compose/ui/node/LayoutNode;J)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->notifyLayerIsDirty$ui_release(Landroidx/compose/ui/node/OwnedLayer;Z)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onAttach(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onAttachedToWindow()V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onCheckIsTextEditor()Z +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onCreateInputConnection(Landroid/view/inputmethod/EditorInfo;)Landroid/view/inputmethod/InputConnection; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onDetach(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onDraw(Landroid/graphics/Canvas;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onEndApplyChanges()V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onFocusChanged(ZILandroid/graphics/Rect;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onLayout(ZIIII)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onLayoutChange(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onMeasure(II)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onProvideAutofillVirtualStructure(Landroid/view/ViewStructure;I)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onRequestMeasure(Landroidx/compose/ui/node/LayoutNode;ZZZ)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onRequestRelayout(Landroidx/compose/ui/node/LayoutNode;ZZ)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onResume(Landroidx/lifecycle/LifecycleOwner;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onRtlPropertiesChanged(I)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onSemanticsChange()V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->onWindowFocusChanged(Z)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->pack-ZIaKswc(II)J +HSPLandroidx/compose/ui/platform/AndroidComposeView;->recalculateWindowPosition()V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->recalculateWindowPosition(Landroid/view/MotionEvent;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->recalculateWindowViewTransforms()V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->recycle$ui_release(Landroidx/compose/ui/node/OwnedLayer;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeView;->registerOnEndApplyChangesListener(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->requestClearInvalidObservations()V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->requestOnPositionedCallback(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->scheduleMeasureAndLayout$default(Landroidx/compose/ui/platform/AndroidComposeView;Landroidx/compose/ui/node/LayoutNode;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->scheduleMeasureAndLayout(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->screenToLocal-MK-Hz9U(J)J +HSPLandroidx/compose/ui/platform/AndroidComposeView;->sendMotionEvent-8iAsVTc(Landroid/view/MotionEvent;)I +HSPLandroidx/compose/ui/platform/AndroidComposeView;->setConfigurationChangeObserver(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->setLayoutDirection(Landroidx/compose/ui/unit/LayoutDirection;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->setOnViewTreeOwnersAvailable(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->setShowLayoutBounds(Z)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->set_viewTreeOwners(Landroidx/compose/ui/platform/AndroidComposeView$ViewTreeOwners;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->touchModeChangeListener$lambda$3(Landroidx/compose/ui/platform/AndroidComposeView;Z)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->updatePositionCacheAndDispatch()V +Landroidx/compose/ui/platform/AndroidComposeView$$ExternalSyntheticLambda1; +HSPLandroidx/compose/ui/platform/AndroidComposeView$$ExternalSyntheticLambda1;->(Landroidx/compose/ui/platform/AndroidComposeView;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView$$ExternalSyntheticLambda1;->onGlobalLayout()V +Landroidx/compose/ui/platform/AndroidComposeView$$ExternalSyntheticLambda2; +HSPLandroidx/compose/ui/platform/AndroidComposeView$$ExternalSyntheticLambda2;->(Landroidx/compose/ui/platform/AndroidComposeView;)V +Landroidx/compose/ui/platform/AndroidComposeView$$ExternalSyntheticLambda3; +HSPLandroidx/compose/ui/platform/AndroidComposeView$$ExternalSyntheticLambda3;->(Landroidx/compose/ui/platform/AndroidComposeView;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView$$ExternalSyntheticLambda3;->onTouchModeChanged(Z)V +Landroidx/compose/ui/platform/AndroidComposeView$$ExternalSyntheticLambda4; +HSPLandroidx/compose/ui/platform/AndroidComposeView$$ExternalSyntheticLambda4;->(Landroidx/compose/ui/platform/AndroidComposeView;)V +Landroidx/compose/ui/platform/AndroidComposeView$Companion; +HSPLandroidx/compose/ui/platform/AndroidComposeView$Companion;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeView$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView$Companion;->access$getIsShowingLayoutBounds(Landroidx/compose/ui/platform/AndroidComposeView$Companion;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeView$Companion;->getIsShowingLayoutBounds()Z +Landroidx/compose/ui/platform/AndroidComposeView$ViewTreeOwners; +HSPLandroidx/compose/ui/platform/AndroidComposeView$ViewTreeOwners;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeView$ViewTreeOwners;->(Landroidx/lifecycle/LifecycleOwner;Landroidx/savedstate/SavedStateRegistryOwner;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView$ViewTreeOwners;->getLifecycleOwner()Landroidx/lifecycle/LifecycleOwner; +HSPLandroidx/compose/ui/platform/AndroidComposeView$ViewTreeOwners;->getSavedStateRegistryOwner()Landroidx/savedstate/SavedStateRegistryOwner; +Landroidx/compose/ui/platform/AndroidComposeView$_inputModeManager$1; +HSPLandroidx/compose/ui/platform/AndroidComposeView$_inputModeManager$1;->(Landroidx/compose/ui/platform/AndroidComposeView;)V +Landroidx/compose/ui/platform/AndroidComposeView$configurationChangeObserver$1; +HSPLandroidx/compose/ui/platform/AndroidComposeView$configurationChangeObserver$1;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeView$configurationChangeObserver$1;->()V +Landroidx/compose/ui/platform/AndroidComposeView$focusOwner$1; +HSPLandroidx/compose/ui/platform/AndroidComposeView$focusOwner$1;->(Landroidx/compose/ui/platform/AndroidComposeView;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView$focusOwner$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/AndroidComposeView$focusOwner$1;->invoke(Lkotlin/jvm/functions/Function0;)V +Landroidx/compose/ui/platform/AndroidComposeView$keyInputModifier$1; +HSPLandroidx/compose/ui/platform/AndroidComposeView$keyInputModifier$1;->(Landroidx/compose/ui/platform/AndroidComposeView;)V +Landroidx/compose/ui/platform/AndroidComposeView$platformTextInputPluginRegistry$1; +HSPLandroidx/compose/ui/platform/AndroidComposeView$platformTextInputPluginRegistry$1;->(Landroidx/compose/ui/platform/AndroidComposeView;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView$platformTextInputPluginRegistry$1;->invoke(Landroidx/compose/ui/text/input/PlatformTextInputPlugin;Landroidx/compose/ui/text/input/PlatformTextInput;)Landroidx/compose/ui/text/input/PlatformTextInputAdapter; +HSPLandroidx/compose/ui/platform/AndroidComposeView$platformTextInputPluginRegistry$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/AndroidComposeView$pointerIconService$1; +HSPLandroidx/compose/ui/platform/AndroidComposeView$pointerIconService$1;->(Landroidx/compose/ui/platform/AndroidComposeView;)V +Landroidx/compose/ui/platform/AndroidComposeView$resendMotionEventOnLayout$1; +HSPLandroidx/compose/ui/platform/AndroidComposeView$resendMotionEventOnLayout$1;->(Landroidx/compose/ui/platform/AndroidComposeView;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView$resendMotionEventOnLayout$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/AndroidComposeView$resendMotionEventOnLayout$1;->invoke()V +Landroidx/compose/ui/platform/AndroidComposeView$resendMotionEventRunnable$1; +HSPLandroidx/compose/ui/platform/AndroidComposeView$resendMotionEventRunnable$1;->(Landroidx/compose/ui/platform/AndroidComposeView;)V +Landroidx/compose/ui/platform/AndroidComposeView$rotaryInputModifier$1; +HSPLandroidx/compose/ui/platform/AndroidComposeView$rotaryInputModifier$1;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeView$rotaryInputModifier$1;->()V +Landroidx/compose/ui/platform/AndroidComposeView$snapshotObserver$1; +HSPLandroidx/compose/ui/platform/AndroidComposeView$snapshotObserver$1;->$r8$lambda$fxmMOjfIK0OrAcx22ga9_XhotFQ(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView$snapshotObserver$1;->(Landroidx/compose/ui/platform/AndroidComposeView;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView$snapshotObserver$1;->invoke$lambda$0(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView$snapshotObserver$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/AndroidComposeView$snapshotObserver$1;->invoke(Lkotlin/jvm/functions/Function0;)V +Landroidx/compose/ui/platform/AndroidComposeView$snapshotObserver$1$$ExternalSyntheticLambda0; +HSPLandroidx/compose/ui/platform/AndroidComposeView$snapshotObserver$1$$ExternalSyntheticLambda0;->run()V +Landroidx/compose/ui/platform/AndroidComposeView$viewTreeOwners$2; +HSPLandroidx/compose/ui/platform/AndroidComposeView$viewTreeOwners$2;->(Landroidx/compose/ui/platform/AndroidComposeView;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView$viewTreeOwners$2;->invoke()Landroidx/compose/ui/platform/AndroidComposeView$ViewTreeOwners; +HSPLandroidx/compose/ui/platform/AndroidComposeView$viewTreeOwners$2;->invoke()Ljava/lang/Object; +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->(Landroidx/compose/ui/platform/AndroidComposeView;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->access$createNodeInfo(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;I)Landroid/view/accessibility/AccessibilityNodeInfo; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->access$getContentCaptureSessionCompat(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;Landroid/view/View;)Landroidx/compose/ui/platform/coreshims/ContentCaptureSessionCompat; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->access$performActionHelper(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;IILandroid/os/Bundle;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->addExtraDataToAccessibilityNodeInfoHelper(ILandroid/view/accessibility/AccessibilityNodeInfo;Ljava/lang/String;Landroid/os/Bundle;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->boundsUpdatesEventLoop(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->createNodeInfo(I)Landroid/view/accessibility/AccessibilityNodeInfo; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getAccessibilityManager$ui_release()Landroid/view/accessibility/AccessibilityManager; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getAccessibilityNodeProvider(Landroid/view/View;)Landroidx/core/view/accessibility/AccessibilityNodeProviderCompat; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getAccessibilitySelectionEnd(Landroidx/compose/ui/semantics/SemanticsNode;)I +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getAccessibilitySelectionStart(Landroidx/compose/ui/semantics/SemanticsNode;)I +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getContentCaptureSessionCompat(Landroid/view/View;)Landroidx/compose/ui/platform/coreshims/ContentCaptureSessionCompat; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getCurrentSemanticsNodes$ui_release()Ljava/util/Map; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getEnabledStateListener$ui_release()Landroid/view/accessibility/AccessibilityManager$AccessibilityStateChangeListener; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getInfoIsCheckable(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getInfoStateDescriptionOrNull(Landroidx/compose/ui/semantics/SemanticsNode;)Ljava/lang/String; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getInfoText(Landroidx/compose/ui/semantics/SemanticsNode;)Landroid/text/SpannableString; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getIterableTextForAccessibility(Landroidx/compose/ui/semantics/SemanticsNode;)Ljava/lang/String; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getTextForTextField(Landroidx/compose/ui/semantics/SemanticsConfiguration;)Landroidx/compose/ui/text/AnnotatedString; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getTouchExplorationStateListener$ui_release()Landroid/view/accessibility/AccessibilityManager$TouchExplorationStateChangeListener; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->isEnabled$ui_release()Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->isEnabledForAccessibility()Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->isEnabledForContentCapture()Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->isScreenReaderFocusable(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->onLayoutChange$ui_release(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->onSemanticsChange$ui_release()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->performActionHelper(IILandroid/os/Bundle;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->populateAccessibilityNodeInfoProperties$canScrollBackward(Landroidx/compose/ui/semantics/ScrollAxisRange;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->populateAccessibilityNodeInfoProperties$canScrollForward(Landroidx/compose/ui/semantics/ScrollAxisRange;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->populateAccessibilityNodeInfoProperties(ILandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;Landroidx/compose/ui/semantics/SemanticsNode;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->semanticComparator(Z)Ljava/util/Comparator; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->setContentCaptureSession$ui_release(Landroidx/compose/ui/platform/coreshims/ContentCaptureSessionCompat;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->setContentInvalid(Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->setIsCheckable(Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->setStateDescription(Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->setText(Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->setTraversalValues()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->sortByGeometryGroupings$placedEntryRowOverlaps(Ljava/util/List;Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->sortByGeometryGroupings(ZLjava/util/List;Ljava/util/Map;)Ljava/util/List; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->subtreeSortedByGeometryGrouping$depthFirstSearch(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;Ljava/util/List;Ljava/util/Map;ZLandroidx/compose/ui/semantics/SemanticsNode;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->subtreeSortedByGeometryGrouping(ZLjava/util/List;)Ljava/util/List; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->trimToSize(Ljava/lang/CharSequence;I)Ljava/lang/CharSequence; +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$$ExternalSyntheticLambda0; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$$ExternalSyntheticLambda0;->(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;)V +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$$ExternalSyntheticLambda1; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$$ExternalSyntheticLambda1;->(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;)V +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$$ExternalSyntheticLambda2; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$$ExternalSyntheticLambda2;->(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;)V +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$1; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$1;->(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$1;->onViewAttachedToWindow(Landroid/view/View;)V +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Api24Impl; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Api24Impl;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Api24Impl;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Api24Impl;->addSetProgressAction(Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;Landroidx/compose/ui/semantics/SemanticsNode;)V +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Api29Impl; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Api29Impl;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Api29Impl;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Api29Impl;->addPageActions(Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;Landroidx/compose/ui/semantics/SemanticsNode;)V +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Companion; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Companion;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$MyNodeProvider; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$MyNodeProvider;->(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$MyNodeProvider;->createAccessibilityNodeInfo(I)Landroid/view/accessibility/AccessibilityNodeInfo; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$MyNodeProvider;->performAction(IILandroid/os/Bundle;)Z +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$SemanticsNodeCopy; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$SemanticsNodeCopy;->(Landroidx/compose/ui/semantics/SemanticsNode;Ljava/util/Map;)V +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$boundsUpdatesEventLoop$1; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$boundsUpdatesEventLoop$1;->(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;Lkotlin/coroutines/Continuation;)V +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$$inlined$thenBy$1; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$$inlined$thenBy$1;->(Ljava/util/Comparator;Ljava/util/Comparator;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$$inlined$thenBy$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$$inlined$thenBy$2; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$$inlined$thenBy$2;->(Ljava/util/Comparator;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$$inlined$thenBy$2;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$comparator$1; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$comparator$1;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$comparator$1;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$comparator$1;->invoke(Landroidx/compose/ui/semantics/SemanticsNode;)Ljava/lang/Comparable; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$comparator$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$comparator$2; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$comparator$2;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$comparator$2;->()V +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$comparator$3; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$comparator$3;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$comparator$3;->()V +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$comparator$4; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$comparator$4;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$semanticComparator$comparator$4;->()V +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sendScrollEventIfNeededLambda$1; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sendScrollEventIfNeededLambda$1;->(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;)V +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sortByGeometryGroupings$$inlined$compareBy$1; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sortByGeometryGroupings$$inlined$compareBy$1;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sortByGeometryGroupings$$inlined$compareBy$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sortByGeometryGroupings$1; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sortByGeometryGroupings$1;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sortByGeometryGroupings$1;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sortByGeometryGroupings$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sortByGeometryGroupings$1;->invoke(Lkotlin/Pair;)Ljava/lang/Comparable; +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sortByGeometryGroupings$2; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sortByGeometryGroupings$2;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sortByGeometryGroupings$2;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sortByGeometryGroupings$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sortByGeometryGroupings$2;->invoke(Lkotlin/Pair;)Ljava/lang/Comparable; +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->access$enabled(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->access$excludeLineAndPageGranularities(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->access$getGetTraversalIndex(Landroidx/compose/ui/semantics/SemanticsNode;)F +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->access$getInfoContentDescriptionOrNull(Landroidx/compose/ui/semantics/SemanticsNode;)Ljava/lang/String; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->access$isPassword(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->access$isRtl(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->access$isTextField(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->access$isTraversalGroup(Landroidx/compose/ui/semantics/SemanticsNode;)Ljava/lang/Boolean; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->access$isVisible(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->access$overlaps(Landroidx/compose/ui/platform/OpenEndRange;Landroidx/compose/ui/platform/OpenEndRange;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->access$toLegacyClassName-V4PA4sw(I)Ljava/lang/String; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->enabled(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->excludeLineAndPageGranularities(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->findClosestParentNode(Landroidx/compose/ui/node/LayoutNode;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->getAllUncoveredSemanticsNodesToMap$findAllSemanticNodesRecursive(Landroid/graphics/Region;Landroidx/compose/ui/semantics/SemanticsNode;Ljava/util/Map;Landroidx/compose/ui/semantics/SemanticsNode;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->getAllUncoveredSemanticsNodesToMap(Landroidx/compose/ui/semantics/SemanticsOwner;)Ljava/util/Map; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->getGetTraversalIndex(Landroidx/compose/ui/semantics/SemanticsNode;)F +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->getInfoContentDescriptionOrNull(Landroidx/compose/ui/semantics/SemanticsNode;)Ljava/lang/String; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->isPassword(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->isRtl(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->isTextField(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->isTraversalGroup(Landroidx/compose/ui/semantics/SemanticsNode;)Ljava/lang/Boolean; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->isVisible(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->overlaps(Landroidx/compose/ui/platform/OpenEndRange;Landroidx/compose/ui/platform/OpenEndRange;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->rangeUntil(FF)Landroidx/compose/ui/platform/OpenEndRange; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->semanticsIdToView(Landroidx/compose/ui/platform/AndroidViewsHandler;I)Landroid/view/View; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->toLegacyClassName-V4PA4sw(I)Ljava/lang/String; +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt$excludeLineAndPageGranularities$ancestor$1; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt$excludeLineAndPageGranularities$ancestor$1;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt$excludeLineAndPageGranularities$ancestor$1;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt$excludeLineAndPageGranularities$ancestor$1;->invoke(Landroidx/compose/ui/node/LayoutNode;)Ljava/lang/Boolean; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt$excludeLineAndPageGranularities$ancestor$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/AndroidComposeViewForceDarkModeQ; +HSPLandroidx/compose/ui/platform/AndroidComposeViewForceDarkModeQ;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewForceDarkModeQ;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewForceDarkModeQ;->disallowForceDark(Landroid/view/View;)V +Landroidx/compose/ui/platform/AndroidComposeViewVerificationHelperMethodsO; +HSPLandroidx/compose/ui/platform/AndroidComposeViewVerificationHelperMethodsO;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewVerificationHelperMethodsO;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewVerificationHelperMethodsO;->focusable(Landroid/view/View;IZ)V +Landroidx/compose/ui/platform/AndroidComposeView_androidKt; +HSPLandroidx/compose/ui/platform/AndroidComposeView_androidKt;->access$layoutDirectionFromInt(I)Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/platform/AndroidComposeView_androidKt;->getLocaleLayoutDirection(Landroid/content/res/Configuration;)Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/platform/AndroidComposeView_androidKt;->layoutDirectionFromInt(I)Landroidx/compose/ui/unit/LayoutDirection; +Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt;->()V +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt;->ProvideAndroidCompositionLocals$lambda$1(Landroidx/compose/runtime/MutableState;)Landroid/content/res/Configuration; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt;->ProvideAndroidCompositionLocals(Landroidx/compose/ui/platform/AndroidComposeView;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt;->getLocalConfiguration()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt;->getLocalContext()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt;->getLocalLifecycleOwner()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt;->getLocalView()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt;->obtainImageVectorCache(Landroid/content/Context;Landroid/content/res/Configuration;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/res/ImageVectorCache; +Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalConfiguration$1; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalConfiguration$1;->()V +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalConfiguration$1;->()V +Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalContext$1; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalContext$1;->()V +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalContext$1;->()V +Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalImageVectorCache$1; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalImageVectorCache$1;->()V +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalImageVectorCache$1;->()V +Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalLifecycleOwner$1; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalLifecycleOwner$1;->()V +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalLifecycleOwner$1;->()V +Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalSavedStateRegistryOwner$1; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalSavedStateRegistryOwner$1;->()V +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalSavedStateRegistryOwner$1;->()V +Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalView$1; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalView$1;->()V +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalView$1;->()V +Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$1$1; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$1$1;->(Landroidx/compose/runtime/MutableState;)V +Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$2; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$2;->(Landroidx/compose/ui/platform/DisposableSaveableStateRegistry;)V +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$2;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$2$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$2$invoke$$inlined$onDispose$1;->(Landroidx/compose/ui/platform/DisposableSaveableStateRegistry;)V +Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3;->(Landroidx/compose/ui/platform/AndroidComposeView;Landroidx/compose/ui/platform/AndroidUriHandler;Lkotlin/jvm/functions/Function2;I)V +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$4; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$4;->(Landroidx/compose/ui/platform/AndroidComposeView;Lkotlin/jvm/functions/Function2;I)V +Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$1; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$1;->(Landroid/content/Context;Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$callbacks$1$1;)V +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$1$invoke$$inlined$onDispose$1; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$1$invoke$$inlined$onDispose$1;->(Landroid/content/Context;Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$callbacks$1$1;)V +Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$callbacks$1$1; +HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$callbacks$1$1;->(Landroid/content/res/Configuration;Landroidx/compose/ui/res/ImageVectorCache;)V +Landroidx/compose/ui/platform/AndroidFontResourceLoader; +HSPLandroidx/compose/ui/platform/AndroidFontResourceLoader;->(Landroid/content/Context;)V +Landroidx/compose/ui/platform/AndroidTextToolbar; +HSPLandroidx/compose/ui/platform/AndroidTextToolbar;->(Landroid/view/View;)V +HSPLandroidx/compose/ui/platform/AndroidTextToolbar;->getStatus()Landroidx/compose/ui/platform/TextToolbarStatus; +Landroidx/compose/ui/platform/AndroidTextToolbar$textActionModeCallback$1; +HSPLandroidx/compose/ui/platform/AndroidTextToolbar$textActionModeCallback$1;->(Landroidx/compose/ui/platform/AndroidTextToolbar;)V +Landroidx/compose/ui/platform/AndroidUiDispatcher; +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->()V +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->(Landroid/view/Choreographer;Landroid/os/Handler;)V +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->(Landroid/view/Choreographer;Landroid/os/Handler;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$getHandler$p(Landroidx/compose/ui/platform/AndroidUiDispatcher;)Landroid/os/Handler; +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$getLock$p(Landroidx/compose/ui/platform/AndroidUiDispatcher;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$getMain$delegate$cp()Lkotlin/Lazy; +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$getToRunOnFrame$p(Landroidx/compose/ui/platform/AndroidUiDispatcher;)Ljava/util/List; +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$performFrameDispatch(Landroidx/compose/ui/platform/AndroidUiDispatcher;J)V +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$performTrampolineDispatch(Landroidx/compose/ui/platform/AndroidUiDispatcher;)V +PLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$setScheduledFrameDispatch$p(Landroidx/compose/ui/platform/AndroidUiDispatcher;Z)V +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->dispatch(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Runnable;)V +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->getChoreographer()Landroid/view/Choreographer; +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->getFrameClock()Landroidx/compose/runtime/MonotonicFrameClock; +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->nextTask()Ljava/lang/Runnable; +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->performFrameDispatch(J)V +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->performTrampolineDispatch()V +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->postFrameCallback$ui_release(Landroid/view/Choreographer$FrameCallback;)V +Landroidx/compose/ui/platform/AndroidUiDispatcher$Companion; +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$Companion;->()V +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$Companion;->getCurrentThread()Lkotlin/coroutines/CoroutineContext; +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$Companion;->getMain()Lkotlin/coroutines/CoroutineContext; +Landroidx/compose/ui/platform/AndroidUiDispatcher$Companion$Main$2; +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$Companion$Main$2;->()V +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$Companion$Main$2;->()V +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$Companion$Main$2;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$Companion$Main$2;->invoke()Lkotlin/coroutines/CoroutineContext; +Landroidx/compose/ui/platform/AndroidUiDispatcher$Companion$currentThread$1; +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$Companion$currentThread$1;->()V +Landroidx/compose/ui/platform/AndroidUiDispatcher$dispatchCallback$1; +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$dispatchCallback$1;->(Landroidx/compose/ui/platform/AndroidUiDispatcher;)V +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$dispatchCallback$1;->doFrame(J)V +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$dispatchCallback$1;->run()V +Landroidx/compose/ui/platform/AndroidUiDispatcher_androidKt; +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher_androidKt;->access$isMainThread()Z +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher_androidKt;->isMainThread()Z +Landroidx/compose/ui/platform/AndroidUiFrameClock; +HSPLandroidx/compose/ui/platform/AndroidUiFrameClock;->()V +HSPLandroidx/compose/ui/platform/AndroidUiFrameClock;->(Landroid/view/Choreographer;Landroidx/compose/ui/platform/AndroidUiDispatcher;)V +HSPLandroidx/compose/ui/platform/AndroidUiFrameClock;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/AndroidUiFrameClock;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLandroidx/compose/ui/platform/AndroidUiFrameClock;->getChoreographer()Landroid/view/Choreographer; +HSPLandroidx/compose/ui/platform/AndroidUiFrameClock;->minusKey(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext; +HSPLandroidx/compose/ui/platform/AndroidUiFrameClock;->withFrameNanos(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/ui/platform/AndroidUiFrameClock$withFrameNanos$2$1; +HSPLandroidx/compose/ui/platform/AndroidUiFrameClock$withFrameNanos$2$1;->(Landroidx/compose/ui/platform/AndroidUiDispatcher;Landroid/view/Choreographer$FrameCallback;)V +Landroidx/compose/ui/platform/AndroidUiFrameClock$withFrameNanos$2$callback$1; +HSPLandroidx/compose/ui/platform/AndroidUiFrameClock$withFrameNanos$2$callback$1;->(Lkotlinx/coroutines/CancellableContinuation;Landroidx/compose/ui/platform/AndroidUiFrameClock;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/platform/AndroidUiFrameClock$withFrameNanos$2$callback$1;->doFrame(J)V +Landroidx/compose/ui/platform/AndroidUriHandler; +HSPLandroidx/compose/ui/platform/AndroidUriHandler;->()V +HSPLandroidx/compose/ui/platform/AndroidUriHandler;->(Landroid/content/Context;)V +Landroidx/compose/ui/platform/AndroidViewConfiguration; +HSPLandroidx/compose/ui/platform/AndroidViewConfiguration;->()V +HSPLandroidx/compose/ui/platform/AndroidViewConfiguration;->(Landroid/view/ViewConfiguration;)V +HSPLandroidx/compose/ui/platform/AndroidViewConfiguration;->getTouchSlop()F +Landroidx/compose/ui/platform/AndroidViewsHandler; +HSPLandroidx/compose/ui/platform/AndroidViewsHandler;->(Landroid/content/Context;)V +HSPLandroidx/compose/ui/platform/AndroidViewsHandler;->getLayoutNodeToHolder()Ljava/util/HashMap; +HSPLandroidx/compose/ui/platform/AndroidViewsHandler;->onLayout(ZIIII)V +HSPLandroidx/compose/ui/platform/AndroidViewsHandler;->onMeasure(II)V +HSPLandroidx/compose/ui/platform/AndroidViewsHandler;->requestLayout()V +Landroidx/compose/ui/platform/CalculateMatrixToWindow; +Landroidx/compose/ui/platform/CalculateMatrixToWindowApi29; +HSPLandroidx/compose/ui/platform/CalculateMatrixToWindowApi29;->()V +HSPLandroidx/compose/ui/platform/CalculateMatrixToWindowApi29;->calculateMatrixToWindow-EL8BTi8(Landroid/view/View;[F)V +Landroidx/compose/ui/platform/ClipboardManager; +Landroidx/compose/ui/platform/ComposableSingletons$Wrapper_androidKt; +HSPLandroidx/compose/ui/platform/ComposableSingletons$Wrapper_androidKt;->()V +HSPLandroidx/compose/ui/platform/ComposableSingletons$Wrapper_androidKt;->()V +HSPLandroidx/compose/ui/platform/ComposableSingletons$Wrapper_androidKt;->getLambda-1$ui_release()Lkotlin/jvm/functions/Function2; +Landroidx/compose/ui/platform/ComposableSingletons$Wrapper_androidKt$lambda-1$1; +HSPLandroidx/compose/ui/platform/ComposableSingletons$Wrapper_androidKt$lambda-1$1;->()V +HSPLandroidx/compose/ui/platform/ComposableSingletons$Wrapper_androidKt$lambda-1$1;->()V +Landroidx/compose/ui/platform/ComposeView; +HSPLandroidx/compose/ui/platform/ComposeView;->()V +HSPLandroidx/compose/ui/platform/ComposeView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroidx/compose/ui/platform/ComposeView;->(Landroid/content/Context;Landroid/util/AttributeSet;IILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/platform/ComposeView;->Content(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/ui/platform/ComposeView;->getAccessibilityClassName()Ljava/lang/CharSequence; +HSPLandroidx/compose/ui/platform/ComposeView;->getShouldCreateCompositionOnAttachedToWindow()Z +HSPLandroidx/compose/ui/platform/ComposeView;->setContent(Lkotlin/jvm/functions/Function2;)V +Landroidx/compose/ui/platform/ComposeView$Content$1; +HSPLandroidx/compose/ui/platform/ComposeView$Content$1;->(Landroidx/compose/ui/platform/ComposeView;I)V +Landroidx/compose/ui/platform/CompositionLocalsKt; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->ProvideCommonCompositionLocals(Landroidx/compose/ui/node/Owner;Landroidx/compose/ui/platform/UriHandler;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->getLocalAutofill()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->getLocalAutofillTree()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->getLocalClipboardManager()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->getLocalDensity()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->getLocalFocusManager()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->getLocalFontFamilyResolver()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->getLocalHapticFeedback()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->getLocalInputModeManager()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->getLocalLayoutDirection()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->getLocalPointerIconService()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->getLocalTextInputService()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->getLocalTextToolbar()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->getLocalViewConfiguration()Landroidx/compose/runtime/ProvidableCompositionLocal; +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalAccessibilityManager$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalAccessibilityManager$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalAccessibilityManager$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalAutofill$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalAutofill$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalAutofill$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalAutofillTree$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalAutofillTree$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalAutofillTree$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalClipboardManager$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalClipboardManager$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalClipboardManager$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalDensity$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalDensity$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalDensity$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalFocusManager$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalFocusManager$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalFocusManager$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalFontFamilyResolver$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalFontFamilyResolver$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalFontFamilyResolver$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalFontLoader$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalFontLoader$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalFontLoader$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalHapticFeedback$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalHapticFeedback$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalHapticFeedback$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalInputModeManager$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalInputModeManager$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalInputModeManager$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalLayoutDirection$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalLayoutDirection$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalLayoutDirection$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalPlatformTextInputPluginRegistry$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalPlatformTextInputPluginRegistry$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalPlatformTextInputPluginRegistry$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalPointerIconService$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalPointerIconService$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalPointerIconService$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalTextInputService$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalTextInputService$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalTextInputService$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalTextToolbar$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalTextToolbar$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalTextToolbar$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalUriHandler$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalUriHandler$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalUriHandler$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalViewConfiguration$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalViewConfiguration$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalViewConfiguration$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$LocalWindowInfo$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalWindowInfo$1;->()V +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalWindowInfo$1;->()V +Landroidx/compose/ui/platform/CompositionLocalsKt$ProvideCommonCompositionLocals$1; +HSPLandroidx/compose/ui/platform/CompositionLocalsKt$ProvideCommonCompositionLocals$1;->(Landroidx/compose/ui/node/Owner;Landroidx/compose/ui/platform/UriHandler;Lkotlin/jvm/functions/Function2;I)V +Landroidx/compose/ui/platform/DelegatingSoftwareKeyboardController; +HSPLandroidx/compose/ui/platform/DelegatingSoftwareKeyboardController;->(Landroidx/compose/ui/text/input/TextInputService;)V +Landroidx/compose/ui/platform/DeviceRenderNode; +Landroidx/compose/ui/platform/DisposableSaveableStateRegistry; +HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry;->(Landroidx/compose/runtime/saveable/SaveableStateRegistry;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry;->canBeSaved(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry;->consumeRestored(Ljava/lang/String;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry;->registerProvider(Ljava/lang/String;Lkotlin/jvm/functions/Function0;)Landroidx/compose/runtime/saveable/SaveableStateRegistry$Entry; +Landroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt; +HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt;->()V +HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt;->DisposableSaveableStateRegistry(Landroid/view/View;Landroidx/savedstate/SavedStateRegistryOwner;)Landroidx/compose/ui/platform/DisposableSaveableStateRegistry; +HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt;->DisposableSaveableStateRegistry(Ljava/lang/String;Landroidx/savedstate/SavedStateRegistryOwner;)Landroidx/compose/ui/platform/DisposableSaveableStateRegistry; +HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt;->access$canBeSavedToBundle(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt;->canBeSavedToBundle(Ljava/lang/Object;)Z +Landroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$1; +HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$1;->(ZLandroidx/savedstate/SavedStateRegistry;Ljava/lang/String;)V +Landroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$registered$1; +HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$registered$1;->(Landroidx/compose/runtime/saveable/SaveableStateRegistry;)V +Landroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$saveableStateRegistry$1; +HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$saveableStateRegistry$1;->()V +HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$saveableStateRegistry$1;->()V +HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$saveableStateRegistry$1;->invoke(Ljava/lang/Object;)Ljava/lang/Boolean; +HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$saveableStateRegistry$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/GlobalSnapshotManager; +HSPLandroidx/compose/ui/platform/GlobalSnapshotManager;->()V +HSPLandroidx/compose/ui/platform/GlobalSnapshotManager;->()V +HSPLandroidx/compose/ui/platform/GlobalSnapshotManager;->ensureStarted()V +Landroidx/compose/ui/platform/GlobalSnapshotManager$ensureStarted$1; +HSPLandroidx/compose/ui/platform/GlobalSnapshotManager$ensureStarted$1;->(Lkotlinx/coroutines/channels/Channel;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/ui/platform/GlobalSnapshotManager$ensureStarted$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/ui/platform/GlobalSnapshotManager$ensureStarted$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/GlobalSnapshotManager$ensureStarted$2; +HSPLandroidx/compose/ui/platform/GlobalSnapshotManager$ensureStarted$2;->(Lkotlinx/coroutines/channels/Channel;)V +HSPLandroidx/compose/ui/platform/GlobalSnapshotManager$ensureStarted$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/GlobalSnapshotManager$ensureStarted$2;->invoke(Ljava/lang/Object;)V +Landroidx/compose/ui/platform/InfiniteAnimationPolicy; +HSPLandroidx/compose/ui/platform/InfiniteAnimationPolicy;->()V +Landroidx/compose/ui/platform/InfiniteAnimationPolicy$Key; +HSPLandroidx/compose/ui/platform/InfiniteAnimationPolicy$Key;->()V +HSPLandroidx/compose/ui/platform/InfiniteAnimationPolicy$Key;->()V +Landroidx/compose/ui/platform/InspectableModifier; +HSPLandroidx/compose/ui/platform/InspectableModifier;->()V +HSPLandroidx/compose/ui/platform/InspectableModifier;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/platform/InspectableModifier;->getEnd()Landroidx/compose/ui/platform/InspectableModifier$End; +Landroidx/compose/ui/platform/InspectableModifier$End; +HSPLandroidx/compose/ui/platform/InspectableModifier$End;->(Landroidx/compose/ui/platform/InspectableModifier;)V +Landroidx/compose/ui/platform/InspectableValue; +Landroidx/compose/ui/platform/InspectableValueKt; +HSPLandroidx/compose/ui/platform/InspectableValueKt;->()V +HSPLandroidx/compose/ui/platform/InspectableValueKt;->getNoInspectorInfo()Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/ui/platform/InspectableValueKt;->inspectableWrapper(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/platform/InspectableValueKt;->isDebugInspectorInfoEnabled()Z +Landroidx/compose/ui/platform/InspectableValueKt$NoInspectorInfo$1; +HSPLandroidx/compose/ui/platform/InspectableValueKt$NoInspectorInfo$1;->()V +HSPLandroidx/compose/ui/platform/InspectableValueKt$NoInspectorInfo$1;->()V +Landroidx/compose/ui/platform/InspectorValueInfo; +HSPLandroidx/compose/ui/platform/InspectorValueInfo;->()V +HSPLandroidx/compose/ui/platform/InspectorValueInfo;->(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/ui/platform/InvertMatrixKt; +HSPLandroidx/compose/ui/platform/InvertMatrixKt;->invertTo-JiSxe2E([F[F)Z +Landroidx/compose/ui/platform/LayerMatrixCache; +HSPLandroidx/compose/ui/platform/LayerMatrixCache;->(Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/platform/LayerMatrixCache;->calculateInverseMatrix-bWbORWo(Ljava/lang/Object;)[F +HSPLandroidx/compose/ui/platform/LayerMatrixCache;->calculateMatrix-GrdbGEg(Ljava/lang/Object;)[F +HSPLandroidx/compose/ui/platform/LayerMatrixCache;->invalidate()V +Landroidx/compose/ui/platform/LocalSoftwareKeyboardController; +HSPLandroidx/compose/ui/platform/LocalSoftwareKeyboardController;->()V +HSPLandroidx/compose/ui/platform/LocalSoftwareKeyboardController;->()V +HSPLandroidx/compose/ui/platform/LocalSoftwareKeyboardController;->delegatingController(Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/platform/SoftwareKeyboardController; +HSPLandroidx/compose/ui/platform/LocalSoftwareKeyboardController;->getCurrent(Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/platform/SoftwareKeyboardController; +Landroidx/compose/ui/platform/LocalSoftwareKeyboardController$LocalSoftwareKeyboardController$1; +HSPLandroidx/compose/ui/platform/LocalSoftwareKeyboardController$LocalSoftwareKeyboardController$1;->()V +HSPLandroidx/compose/ui/platform/LocalSoftwareKeyboardController$LocalSoftwareKeyboardController$1;->()V +HSPLandroidx/compose/ui/platform/LocalSoftwareKeyboardController$LocalSoftwareKeyboardController$1;->invoke()Landroidx/compose/ui/platform/SoftwareKeyboardController; +HSPLandroidx/compose/ui/platform/LocalSoftwareKeyboardController$LocalSoftwareKeyboardController$1;->invoke()Ljava/lang/Object; +Landroidx/compose/ui/platform/MotionDurationScaleImpl; +HSPLandroidx/compose/ui/platform/MotionDurationScaleImpl;->()V +HSPLandroidx/compose/ui/platform/MotionDurationScaleImpl;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/MotionDurationScaleImpl;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLandroidx/compose/ui/platform/MotionDurationScaleImpl;->getScaleFactor()F +HSPLandroidx/compose/ui/platform/MotionDurationScaleImpl;->minusKey(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext; +HSPLandroidx/compose/ui/platform/MotionDurationScaleImpl;->setScaleFactor(F)V +Landroidx/compose/ui/platform/OpenEndFloatRange; +HSPLandroidx/compose/ui/platform/OpenEndFloatRange;->(FF)V +HSPLandroidx/compose/ui/platform/OpenEndFloatRange;->getEndExclusive()Ljava/lang/Comparable; +HSPLandroidx/compose/ui/platform/OpenEndFloatRange;->getEndExclusive()Ljava/lang/Float; +HSPLandroidx/compose/ui/platform/OpenEndFloatRange;->getStart()Ljava/lang/Comparable; +HSPLandroidx/compose/ui/platform/OpenEndFloatRange;->getStart()Ljava/lang/Float; +HSPLandroidx/compose/ui/platform/OpenEndFloatRange;->isEmpty()Z +Landroidx/compose/ui/platform/OpenEndRange; +Landroidx/compose/ui/platform/OutlineResolver; +HSPLandroidx/compose/ui/platform/OutlineResolver;->(Landroidx/compose/ui/unit/Density;)V +HSPLandroidx/compose/ui/platform/OutlineResolver;->getOutline()Landroid/graphics/Outline; +HSPLandroidx/compose/ui/platform/OutlineResolver;->getOutlineClipSupported()Z +HSPLandroidx/compose/ui/platform/OutlineResolver;->isInOutline-k-4lQ0M(J)Z +HSPLandroidx/compose/ui/platform/OutlineResolver;->update(Landroidx/compose/ui/graphics/Shape;FZFLandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/unit/Density;)Z +HSPLandroidx/compose/ui/platform/OutlineResolver;->update-uvyYCjk(J)V +HSPLandroidx/compose/ui/platform/OutlineResolver;->updateCache()V +HSPLandroidx/compose/ui/platform/OutlineResolver;->updateCacheWithPath(Landroidx/compose/ui/graphics/Path;)V +HSPLandroidx/compose/ui/platform/OutlineResolver;->updateCacheWithRect(Landroidx/compose/ui/geometry/Rect;)V +HSPLandroidx/compose/ui/platform/OutlineResolver;->updateCacheWithRoundRect(Landroidx/compose/ui/geometry/RoundRect;)V +Landroidx/compose/ui/platform/RenderNodeApi29; +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->(Landroidx/compose/ui/platform/AndroidComposeView;)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->discardDisplayList()V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->drawInto(Landroid/graphics/Canvas;)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->getAlpha()F +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->getClipToBounds()Z +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->getClipToOutline()Z +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->getElevation()F +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->getHasDisplayList()Z +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->getHeight()I +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->getLeft()I +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->getMatrix(Landroid/graphics/Matrix;)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->getTop()I +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->getWidth()I +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->offsetLeftAndRight(I)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->offsetTopAndBottom(I)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->record(Landroidx/compose/ui/graphics/CanvasHolder;Landroidx/compose/ui/graphics/Path;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setAlpha(F)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setAmbientShadowColor(I)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setCameraDistance(F)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setClipToBounds(Z)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setClipToOutline(Z)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setCompositingStrategy-aDBOjCE(I)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setElevation(F)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setHasOverlappingRendering(Z)Z +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setOutline(Landroid/graphics/Outline;)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setPivotX(F)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setPivotY(F)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setPosition(IIII)Z +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setRenderEffect(Landroidx/compose/ui/graphics/RenderEffect;)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setRotationX(F)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setRotationY(F)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setRotationZ(F)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setScaleX(F)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setScaleY(F)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setSpotShadowColor(I)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setTranslationX(F)V +HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setTranslationY(F)V +Landroidx/compose/ui/platform/RenderNodeApi29VerificationHelper; +HSPLandroidx/compose/ui/platform/RenderNodeApi29VerificationHelper;->()V +HSPLandroidx/compose/ui/platform/RenderNodeApi29VerificationHelper;->()V +HSPLandroidx/compose/ui/platform/RenderNodeApi29VerificationHelper;->setRenderEffect(Landroid/graphics/RenderNode;Landroidx/compose/ui/graphics/RenderEffect;)V +Landroidx/compose/ui/platform/RenderNodeLayer; +HSPLandroidx/compose/ui/platform/RenderNodeLayer;->()V +HSPLandroidx/compose/ui/platform/RenderNodeLayer;->(Landroidx/compose/ui/platform/AndroidComposeView;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/platform/RenderNodeLayer;->destroy()V +HSPLandroidx/compose/ui/platform/RenderNodeLayer;->drawLayer(Landroidx/compose/ui/graphics/Canvas;)V +HSPLandroidx/compose/ui/platform/RenderNodeLayer;->invalidate()V +HSPLandroidx/compose/ui/platform/RenderNodeLayer;->isInLayer-k-4lQ0M(J)Z +HSPLandroidx/compose/ui/platform/RenderNodeLayer;->mapBounds(Landroidx/compose/ui/geometry/MutableRect;Z)V +HSPLandroidx/compose/ui/platform/RenderNodeLayer;->mapOffset-8S9VItk(JZ)J +HSPLandroidx/compose/ui/platform/RenderNodeLayer;->move--gyyYBs(J)V +HSPLandroidx/compose/ui/platform/RenderNodeLayer;->resize-ozmzZPI(J)V +HSPLandroidx/compose/ui/platform/RenderNodeLayer;->reuseLayer(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/platform/RenderNodeLayer;->setDirty(Z)V +HSPLandroidx/compose/ui/platform/RenderNodeLayer;->triggerRepaint()V +HSPLandroidx/compose/ui/platform/RenderNodeLayer;->updateDisplayList()V +HSPLandroidx/compose/ui/platform/RenderNodeLayer;->updateLayerProperties-dDxr-wY(FFFFFFFFFFJLandroidx/compose/ui/graphics/Shape;ZLandroidx/compose/ui/graphics/RenderEffect;JJILandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/unit/Density;)V +Landroidx/compose/ui/platform/RenderNodeLayer$Companion; +HSPLandroidx/compose/ui/platform/RenderNodeLayer$Companion;->()V +HSPLandroidx/compose/ui/platform/RenderNodeLayer$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/platform/RenderNodeLayer$Companion$getMatrix$1; +HSPLandroidx/compose/ui/platform/RenderNodeLayer$Companion$getMatrix$1;->()V +HSPLandroidx/compose/ui/platform/RenderNodeLayer$Companion$getMatrix$1;->()V +HSPLandroidx/compose/ui/platform/RenderNodeLayer$Companion$getMatrix$1;->invoke(Landroidx/compose/ui/platform/DeviceRenderNode;Landroid/graphics/Matrix;)V +HSPLandroidx/compose/ui/platform/RenderNodeLayer$Companion$getMatrix$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/SemanticsNodeWithAdjustedBounds; +HSPLandroidx/compose/ui/platform/SemanticsNodeWithAdjustedBounds;->(Landroidx/compose/ui/semantics/SemanticsNode;Landroid/graphics/Rect;)V +HSPLandroidx/compose/ui/platform/SemanticsNodeWithAdjustedBounds;->getAdjustedBounds()Landroid/graphics/Rect; +HSPLandroidx/compose/ui/platform/SemanticsNodeWithAdjustedBounds;->getSemanticsNode()Landroidx/compose/ui/semantics/SemanticsNode; +Landroidx/compose/ui/platform/ShapeContainingUtilKt; +HSPLandroidx/compose/ui/platform/ShapeContainingUtilKt;->cornersFit(Landroidx/compose/ui/geometry/RoundRect;)Z +HSPLandroidx/compose/ui/platform/ShapeContainingUtilKt;->isInOutline(Landroidx/compose/ui/graphics/Outline;FFLandroidx/compose/ui/graphics/Path;Landroidx/compose/ui/graphics/Path;)Z +HSPLandroidx/compose/ui/platform/ShapeContainingUtilKt;->isInRectangle(Landroidx/compose/ui/geometry/Rect;FF)Z +HSPLandroidx/compose/ui/platform/ShapeContainingUtilKt;->isInRoundedRect(Landroidx/compose/ui/graphics/Outline$Rounded;FFLandroidx/compose/ui/graphics/Path;Landroidx/compose/ui/graphics/Path;)Z +Landroidx/compose/ui/platform/SoftwareKeyboardController; +Landroidx/compose/ui/platform/TestTagKt; +HSPLandroidx/compose/ui/platform/TestTagKt;->testTag(Landroidx/compose/ui/Modifier;Ljava/lang/String;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/platform/TestTagKt$testTag$1; +HSPLandroidx/compose/ui/platform/TestTagKt$testTag$1;->(Ljava/lang/String;)V +HSPLandroidx/compose/ui/platform/TestTagKt$testTag$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/ui/platform/TestTagKt$testTag$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/TextToolbar; +Landroidx/compose/ui/platform/TextToolbarStatus; +HSPLandroidx/compose/ui/platform/TextToolbarStatus;->$values()[Landroidx/compose/ui/platform/TextToolbarStatus; +HSPLandroidx/compose/ui/platform/TextToolbarStatus;->()V +HSPLandroidx/compose/ui/platform/TextToolbarStatus;->(Ljava/lang/String;I)V +Landroidx/compose/ui/platform/UriHandler; +Landroidx/compose/ui/platform/ViewCompositionStrategy; +HSPLandroidx/compose/ui/platform/ViewCompositionStrategy;->()V +Landroidx/compose/ui/platform/ViewCompositionStrategy$Companion; +HSPLandroidx/compose/ui/platform/ViewCompositionStrategy$Companion;->()V +HSPLandroidx/compose/ui/platform/ViewCompositionStrategy$Companion;->()V +HSPLandroidx/compose/ui/platform/ViewCompositionStrategy$Companion;->getDefault()Landroidx/compose/ui/platform/ViewCompositionStrategy; +Landroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool; +HSPLandroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool;->()V +HSPLandroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool;->()V +HSPLandroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool;->installFor(Landroidx/compose/ui/platform/AbstractComposeView;)Lkotlin/jvm/functions/Function0; +Landroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool$installFor$1; +HSPLandroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool$installFor$1;->(Landroidx/compose/ui/platform/AbstractComposeView;Landroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool$installFor$listener$1;Landroidx/customview/poolingcontainer/PoolingContainerListener;)V +Landroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool$installFor$listener$1; +HSPLandroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool$installFor$listener$1;->(Landroidx/compose/ui/platform/AbstractComposeView;)V +HSPLandroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool$installFor$listener$1;->onViewAttachedToWindow(Landroid/view/View;)V +Landroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool$installFor$poolingContainerListener$1; +HSPLandroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool$installFor$poolingContainerListener$1;->(Landroidx/compose/ui/platform/AbstractComposeView;)V +Landroidx/compose/ui/platform/ViewConfiguration; +HSPLandroidx/compose/ui/platform/ViewConfiguration;->getMinimumTouchTargetSize-MYxV2XQ()J +Landroidx/compose/ui/platform/ViewLayer; +HSPLandroidx/compose/ui/platform/ViewLayer;->()V +HSPLandroidx/compose/ui/platform/ViewLayer;->access$getShouldUseDispatchDraw$cp()Z +Landroidx/compose/ui/platform/ViewLayer$Companion; +HSPLandroidx/compose/ui/platform/ViewLayer$Companion;->()V +HSPLandroidx/compose/ui/platform/ViewLayer$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/platform/ViewLayer$Companion;->getShouldUseDispatchDraw()Z +Landroidx/compose/ui/platform/ViewLayer$Companion$OutlineProvider$1; +HSPLandroidx/compose/ui/platform/ViewLayer$Companion$OutlineProvider$1;->()V +Landroidx/compose/ui/platform/ViewLayer$Companion$getMatrix$1; +HSPLandroidx/compose/ui/platform/ViewLayer$Companion$getMatrix$1;->()V +HSPLandroidx/compose/ui/platform/ViewLayer$Companion$getMatrix$1;->()V +Landroidx/compose/ui/platform/ViewRootForTest; +HSPLandroidx/compose/ui/platform/ViewRootForTest;->()V +Landroidx/compose/ui/platform/ViewRootForTest$Companion; +HSPLandroidx/compose/ui/platform/ViewRootForTest$Companion;->()V +HSPLandroidx/compose/ui/platform/ViewRootForTest$Companion;->()V +HSPLandroidx/compose/ui/platform/ViewRootForTest$Companion;->getOnViewCreatedCallback()Lkotlin/jvm/functions/Function1; +Landroidx/compose/ui/platform/WeakCache; +HSPLandroidx/compose/ui/platform/WeakCache;->()V +HSPLandroidx/compose/ui/platform/WeakCache;->clearWeakReferences()V +HSPLandroidx/compose/ui/platform/WeakCache;->pop()Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/WeakCache;->push(Ljava/lang/Object;)V +Landroidx/compose/ui/platform/WindowInfo; +Landroidx/compose/ui/platform/WindowInfoImpl; +HSPLandroidx/compose/ui/platform/WindowInfoImpl;->()V +HSPLandroidx/compose/ui/platform/WindowInfoImpl;->()V +HSPLandroidx/compose/ui/platform/WindowInfoImpl;->setKeyboardModifiers-5xRPYO0(I)V +HSPLandroidx/compose/ui/platform/WindowInfoImpl;->setWindowFocused(Z)V +Landroidx/compose/ui/platform/WindowInfoImpl$Companion; +HSPLandroidx/compose/ui/platform/WindowInfoImpl$Companion;->()V +HSPLandroidx/compose/ui/platform/WindowInfoImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/platform/WindowRecomposerFactory; +HSPLandroidx/compose/ui/platform/WindowRecomposerFactory;->()V +Landroidx/compose/ui/platform/WindowRecomposerFactory$Companion; +HSPLandroidx/compose/ui/platform/WindowRecomposerFactory$Companion;->()V +HSPLandroidx/compose/ui/platform/WindowRecomposerFactory$Companion;->()V +HSPLandroidx/compose/ui/platform/WindowRecomposerFactory$Companion;->getLifecycleAware()Landroidx/compose/ui/platform/WindowRecomposerFactory; +Landroidx/compose/ui/platform/WindowRecomposerFactory$Companion$LifecycleAware$1; +HSPLandroidx/compose/ui/platform/WindowRecomposerFactory$Companion$LifecycleAware$1;->()V +HSPLandroidx/compose/ui/platform/WindowRecomposerFactory$Companion$LifecycleAware$1;->()V +HSPLandroidx/compose/ui/platform/WindowRecomposerFactory$Companion$LifecycleAware$1;->createRecomposer(Landroid/view/View;)Landroidx/compose/runtime/Recomposer; +Landroidx/compose/ui/platform/WindowRecomposerPolicy; +HSPLandroidx/compose/ui/platform/WindowRecomposerPolicy;->()V +HSPLandroidx/compose/ui/platform/WindowRecomposerPolicy;->()V +HSPLandroidx/compose/ui/platform/WindowRecomposerPolicy;->createAndInstallWindowRecomposer$ui_release(Landroid/view/View;)Landroidx/compose/runtime/Recomposer; +Landroidx/compose/ui/platform/WindowRecomposerPolicy$createAndInstallWindowRecomposer$1; +HSPLandroidx/compose/ui/platform/WindowRecomposerPolicy$createAndInstallWindowRecomposer$1;->(Lkotlinx/coroutines/Job;)V +HSPLandroidx/compose/ui/platform/WindowRecomposerPolicy$createAndInstallWindowRecomposer$1;->onViewAttachedToWindow(Landroid/view/View;)V +Landroidx/compose/ui/platform/WindowRecomposerPolicy$createAndInstallWindowRecomposer$unsetJob$1; +HSPLandroidx/compose/ui/platform/WindowRecomposerPolicy$createAndInstallWindowRecomposer$unsetJob$1;->(Landroidx/compose/runtime/Recomposer;Landroid/view/View;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/ui/platform/WindowRecomposerPolicy$createAndInstallWindowRecomposer$unsetJob$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/ui/platform/WindowRecomposerPolicy$createAndInstallWindowRecomposer$unsetJob$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/WindowRecomposer_androidKt; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt;->()V +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt;->access$getAnimationScaleFlowFor(Landroid/content/Context;)Lkotlinx/coroutines/flow/StateFlow; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt;->createLifecycleAwareWindowRecomposer$default(Landroid/view/View;Lkotlin/coroutines/CoroutineContext;Landroidx/lifecycle/Lifecycle;ILjava/lang/Object;)Landroidx/compose/runtime/Recomposer; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt;->createLifecycleAwareWindowRecomposer(Landroid/view/View;Lkotlin/coroutines/CoroutineContext;Landroidx/lifecycle/Lifecycle;)Landroidx/compose/runtime/Recomposer; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt;->findViewTreeCompositionContext(Landroid/view/View;)Landroidx/compose/runtime/CompositionContext; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt;->getAnimationScaleFlowFor(Landroid/content/Context;)Lkotlinx/coroutines/flow/StateFlow; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt;->getCompositionContext(Landroid/view/View;)Landroidx/compose/runtime/CompositionContext; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt;->getContentChild(Landroid/view/View;)Landroid/view/View; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt;->getWindowRecomposer(Landroid/view/View;)Landroidx/compose/runtime/Recomposer; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt;->setCompositionContext(Landroid/view/View;Landroidx/compose/runtime/CompositionContext;)V +Landroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$1; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$1;->(Landroid/view/View;Landroidx/compose/runtime/Recomposer;)V +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$1;->onViewAttachedToWindow(Landroid/view/View;)V +Landroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2;->(Lkotlinx/coroutines/CoroutineScope;Landroidx/compose/runtime/PausableMonotonicFrameClock;Landroidx/compose/runtime/Recomposer;Lkotlin/jvm/internal/Ref$ObjectRef;Landroid/view/View;)V +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +Landroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$WhenMappings; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$WhenMappings;->()V +Landroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1;->(Lkotlin/jvm/internal/Ref$ObjectRef;Landroidx/compose/runtime/Recomposer;Landroidx/lifecycle/LifecycleOwner;Landroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2;Landroid/view/View;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1$1$1; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1$1$1;->(Lkotlinx/coroutines/flow/StateFlow;Landroidx/compose/ui/platform/MotionDurationScaleImpl;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1$1$1$1; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1$1$1$1;->(Landroidx/compose/ui/platform/MotionDurationScaleImpl;)V +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1$1$1$1;->emit(FLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1$1$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/compose/ui/platform/WindowRecomposer_androidKt$getAnimationScaleFlowFor$1$1$1; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$getAnimationScaleFlowFor$1$1$1;->(Landroid/content/ContentResolver;Landroid/net/Uri;Landroidx/compose/ui/platform/WindowRecomposer_androidKt$getAnimationScaleFlowFor$1$1$contentObserver$1;Lkotlinx/coroutines/channels/Channel;Landroid/content/Context;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$getAnimationScaleFlowFor$1$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$getAnimationScaleFlowFor$1$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$getAnimationScaleFlowFor$1$1$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$getAnimationScaleFlowFor$1$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/WindowRecomposer_androidKt$getAnimationScaleFlowFor$1$1$contentObserver$1; +HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$getAnimationScaleFlowFor$1$1$contentObserver$1;->(Lkotlinx/coroutines/channels/Channel;Landroid/os/Handler;)V +Landroidx/compose/ui/platform/WrappedComposition; +HSPLandroidx/compose/ui/platform/WrappedComposition;->(Landroidx/compose/ui/platform/AndroidComposeView;Landroidx/compose/runtime/Composition;)V +HSPLandroidx/compose/ui/platform/WrappedComposition;->access$getAddedToLifecycle$p(Landroidx/compose/ui/platform/WrappedComposition;)Landroidx/lifecycle/Lifecycle; +HSPLandroidx/compose/ui/platform/WrappedComposition;->access$getDisposed$p(Landroidx/compose/ui/platform/WrappedComposition;)Z +HSPLandroidx/compose/ui/platform/WrappedComposition;->access$setAddedToLifecycle$p(Landroidx/compose/ui/platform/WrappedComposition;Landroidx/lifecycle/Lifecycle;)V +HSPLandroidx/compose/ui/platform/WrappedComposition;->access$setLastContent$p(Landroidx/compose/ui/platform/WrappedComposition;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/platform/WrappedComposition;->getOriginal()Landroidx/compose/runtime/Composition; +HSPLandroidx/compose/ui/platform/WrappedComposition;->getOwner()Landroidx/compose/ui/platform/AndroidComposeView; +HSPLandroidx/compose/ui/platform/WrappedComposition;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +HSPLandroidx/compose/ui/platform/WrappedComposition;->setContent(Lkotlin/jvm/functions/Function2;)V +Landroidx/compose/ui/platform/WrappedComposition$setContent$1; +HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1;->(Landroidx/compose/ui/platform/WrappedComposition;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1;->invoke(Landroidx/compose/ui/platform/AndroidComposeView$ViewTreeOwners;)V +HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/WrappedComposition$setContent$1$1; +HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1$1;->(Landroidx/compose/ui/platform/WrappedComposition;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/WrappedComposition$setContent$1$1$1; +HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1$1$1;->(Landroidx/compose/ui/platform/WrappedComposition;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/WrappedComposition$setContent$1$1$2; +HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1$1$2;->(Landroidx/compose/ui/platform/WrappedComposition;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1$1$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/platform/WrapperRenderNodeLayerHelperMethods; +HSPLandroidx/compose/ui/platform/WrapperRenderNodeLayerHelperMethods;->()V +HSPLandroidx/compose/ui/platform/WrapperRenderNodeLayerHelperMethods;->()V +HSPLandroidx/compose/ui/platform/WrapperRenderNodeLayerHelperMethods;->onDescendantInvalidated(Landroidx/compose/ui/platform/AndroidComposeView;)V +Landroidx/compose/ui/platform/WrapperVerificationHelperMethods; +HSPLandroidx/compose/ui/platform/WrapperVerificationHelperMethods;->()V +HSPLandroidx/compose/ui/platform/WrapperVerificationHelperMethods;->()V +HSPLandroidx/compose/ui/platform/WrapperVerificationHelperMethods;->attributeSourceResourceMap(Landroid/view/View;)Ljava/util/Map; +Landroidx/compose/ui/platform/Wrapper_androidKt; +HSPLandroidx/compose/ui/platform/Wrapper_androidKt;->()V +HSPLandroidx/compose/ui/platform/Wrapper_androidKt;->createSubcomposition(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/runtime/CompositionContext;)Landroidx/compose/runtime/Composition; +HSPLandroidx/compose/ui/platform/Wrapper_androidKt;->doSetContent(Landroidx/compose/ui/platform/AndroidComposeView;Landroidx/compose/runtime/CompositionContext;Lkotlin/jvm/functions/Function2;)Landroidx/compose/runtime/Composition; +HSPLandroidx/compose/ui/platform/Wrapper_androidKt;->inspectionWanted(Landroidx/compose/ui/platform/AndroidComposeView;)Z +HSPLandroidx/compose/ui/platform/Wrapper_androidKt;->setContent(Landroidx/compose/ui/platform/AbstractComposeView;Landroidx/compose/runtime/CompositionContext;Lkotlin/jvm/functions/Function2;)Landroidx/compose/runtime/Composition; +Landroidx/compose/ui/platform/accessibility/CollectionInfoKt; +HSPLandroidx/compose/ui/platform/accessibility/CollectionInfoKt;->calculateIfHorizontallyStacked(Ljava/util/List;)Z +HSPLandroidx/compose/ui/platform/accessibility/CollectionInfoKt;->hasCollectionInfo(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/accessibility/CollectionInfoKt;->setCollectionInfo(Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V +HSPLandroidx/compose/ui/platform/accessibility/CollectionInfoKt;->setCollectionItemInfo(Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V +PLandroidx/compose/ui/platform/accessibility/CollectionInfoKt;->toAccessibilityCollectionInfo(Landroidx/compose/ui/semantics/CollectionInfo;)Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$CollectionInfoCompat; +Landroidx/compose/ui/platform/accessibility/CollectionInfoKt$setCollectionItemInfo$itemInfo$1; +HSPLandroidx/compose/ui/platform/accessibility/CollectionInfoKt$setCollectionItemInfo$itemInfo$1;->()V +HSPLandroidx/compose/ui/platform/accessibility/CollectionInfoKt$setCollectionItemInfo$itemInfo$1;->()V +Landroidx/compose/ui/platform/actionmodecallback/TextActionModeCallback; +HSPLandroidx/compose/ui/platform/actionmodecallback/TextActionModeCallback;->(Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/geometry/Rect;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/platform/actionmodecallback/TextActionModeCallback;->(Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/geometry/Rect;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/platform/coreshims/ContentCaptureSessionCompat; +Landroidx/compose/ui/platform/coreshims/SoftwareKeyboardControllerCompat; +HSPLandroidx/compose/ui/platform/coreshims/SoftwareKeyboardControllerCompat;->(Landroid/view/View;)V +HSPLandroidx/compose/ui/platform/coreshims/SoftwareKeyboardControllerCompat;->hide()V +HSPLandroidx/compose/ui/platform/coreshims/SoftwareKeyboardControllerCompat;->show()V +Landroidx/compose/ui/platform/coreshims/SoftwareKeyboardControllerCompat$Impl; +HSPLandroidx/compose/ui/platform/coreshims/SoftwareKeyboardControllerCompat$Impl;->()V +Landroidx/compose/ui/platform/coreshims/SoftwareKeyboardControllerCompat$Impl20; +HSPLandroidx/compose/ui/platform/coreshims/SoftwareKeyboardControllerCompat$Impl20;->(Landroid/view/View;)V +Landroidx/compose/ui/platform/coreshims/SoftwareKeyboardControllerCompat$Impl30; +HSPLandroidx/compose/ui/platform/coreshims/SoftwareKeyboardControllerCompat$Impl30;->(Landroid/view/View;)V +HSPLandroidx/compose/ui/platform/coreshims/SoftwareKeyboardControllerCompat$Impl30;->hide()V +HSPLandroidx/compose/ui/platform/coreshims/SoftwareKeyboardControllerCompat$Impl30;->lambda$hide$0(Ljava/util/concurrent/atomic/AtomicBoolean;Landroid/view/WindowInsetsController;I)V +HSPLandroidx/compose/ui/platform/coreshims/SoftwareKeyboardControllerCompat$Impl30;->show()V +Landroidx/compose/ui/platform/coreshims/SoftwareKeyboardControllerCompat$Impl30$$ExternalSyntheticLambda5; +PLandroidx/compose/ui/platform/coreshims/SoftwareKeyboardControllerCompat$Impl30$$ExternalSyntheticLambda5;->(Ljava/util/concurrent/atomic/AtomicBoolean;)V +HSPLandroidx/compose/ui/platform/coreshims/SoftwareKeyboardControllerCompat$Impl30$$ExternalSyntheticLambda5;->onControllableInsetsChanged(Landroid/view/WindowInsetsController;I)V +Landroidx/compose/ui/platform/coreshims/ViewCompatShims; +HSPLandroidx/compose/ui/platform/coreshims/ViewCompatShims;->getContentCaptureSession(Landroid/view/View;)Landroidx/compose/ui/platform/coreshims/ContentCaptureSessionCompat; +HSPLandroidx/compose/ui/platform/coreshims/ViewCompatShims;->setImportantForContentCapture(Landroid/view/View;I)V +Landroidx/compose/ui/platform/coreshims/ViewCompatShims$Api29Impl; +HSPLandroidx/compose/ui/platform/coreshims/ViewCompatShims$Api29Impl;->getContentCaptureSession(Landroid/view/View;)Landroid/view/contentcapture/ContentCaptureSession; +Landroidx/compose/ui/platform/coreshims/ViewCompatShims$Api30Impl; +HSPLandroidx/compose/ui/platform/coreshims/ViewCompatShims$Api30Impl;->setImportantForContentCapture(Landroid/view/View;I)V +Landroidx/compose/ui/res/ImageVectorCache; +HSPLandroidx/compose/ui/res/ImageVectorCache;->()V +Landroidx/compose/ui/semantics/AccessibilityAction; +HSPLandroidx/compose/ui/semantics/AccessibilityAction;->()V +HSPLandroidx/compose/ui/semantics/AccessibilityAction;->(Ljava/lang/String;Lkotlin/Function;)V +HSPLandroidx/compose/ui/semantics/AccessibilityAction;->getAction()Lkotlin/Function; +HSPLandroidx/compose/ui/semantics/AccessibilityAction;->getLabel()Ljava/lang/String; +Landroidx/compose/ui/semantics/AppendedSemanticsElement; +HSPLandroidx/compose/ui/semantics/AppendedSemanticsElement;->(ZLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/semantics/AppendedSemanticsElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/semantics/AppendedSemanticsElement;->create()Landroidx/compose/ui/semantics/CoreSemanticsModifierNode; +HSPLandroidx/compose/ui/semantics/AppendedSemanticsElement;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/semantics/AppendedSemanticsElement;->update(Landroidx/compose/ui/Modifier$Node;)V +HSPLandroidx/compose/ui/semantics/AppendedSemanticsElement;->update(Landroidx/compose/ui/semantics/CoreSemanticsModifierNode;)V +Landroidx/compose/ui/semantics/ClearAndSetSemanticsElement; +HSPLandroidx/compose/ui/semantics/ClearAndSetSemanticsElement;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/semantics/ClearAndSetSemanticsElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/semantics/ClearAndSetSemanticsElement;->create()Landroidx/compose/ui/semantics/CoreSemanticsModifierNode; +HSPLandroidx/compose/ui/semantics/ClearAndSetSemanticsElement;->equals(Ljava/lang/Object;)Z +Landroidx/compose/ui/semantics/CollectionInfo; +HSPLandroidx/compose/ui/semantics/CollectionInfo;->()V +HSPLandroidx/compose/ui/semantics/CollectionInfo;->(II)V +PLandroidx/compose/ui/semantics/CollectionInfo;->getColumnCount()I +PLandroidx/compose/ui/semantics/CollectionInfo;->getRowCount()I +Landroidx/compose/ui/semantics/CollectionItemInfo; +Landroidx/compose/ui/semantics/CoreSemanticsModifierNode; +HSPLandroidx/compose/ui/semantics/CoreSemanticsModifierNode;->(ZZLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/semantics/CoreSemanticsModifierNode;->applySemantics(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/ui/semantics/CoreSemanticsModifierNode;->getShouldClearDescendantSemantics()Z +HSPLandroidx/compose/ui/semantics/CoreSemanticsModifierNode;->getShouldMergeDescendantSemantics()Z +HSPLandroidx/compose/ui/semantics/CoreSemanticsModifierNode;->setMergeDescendants(Z)V +HSPLandroidx/compose/ui/semantics/CoreSemanticsModifierNode;->setProperties(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/ui/semantics/CustomAccessibilityAction; +Landroidx/compose/ui/semantics/EmptySemanticsElement; +HSPLandroidx/compose/ui/semantics/EmptySemanticsElement;->()V +HSPLandroidx/compose/ui/semantics/EmptySemanticsElement;->()V +HSPLandroidx/compose/ui/semantics/EmptySemanticsElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/ui/semantics/EmptySemanticsElement;->create()Landroidx/compose/ui/semantics/EmptySemanticsModifier; +Landroidx/compose/ui/semantics/EmptySemanticsModifier; +HSPLandroidx/compose/ui/semantics/EmptySemanticsModifier;->()V +HSPLandroidx/compose/ui/semantics/EmptySemanticsModifier;->applySemantics(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +Landroidx/compose/ui/semantics/LiveRegionMode; +Landroidx/compose/ui/semantics/LiveRegionMode$Companion; +Landroidx/compose/ui/semantics/ProgressBarRangeInfo; +HSPLandroidx/compose/ui/semantics/ProgressBarRangeInfo;->()V +HSPLandroidx/compose/ui/semantics/ProgressBarRangeInfo;->(FLkotlin/ranges/ClosedFloatingPointRange;I)V +HSPLandroidx/compose/ui/semantics/ProgressBarRangeInfo;->(FLkotlin/ranges/ClosedFloatingPointRange;IILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/semantics/ProgressBarRangeInfo;->access$getIndeterminate$cp()Landroidx/compose/ui/semantics/ProgressBarRangeInfo; +Landroidx/compose/ui/semantics/ProgressBarRangeInfo$Companion; +HSPLandroidx/compose/ui/semantics/ProgressBarRangeInfo$Companion;->()V +HSPLandroidx/compose/ui/semantics/ProgressBarRangeInfo$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/semantics/ProgressBarRangeInfo$Companion;->getIndeterminate()Landroidx/compose/ui/semantics/ProgressBarRangeInfo; +Landroidx/compose/ui/semantics/Role; +HSPLandroidx/compose/ui/semantics/Role;->()V +HSPLandroidx/compose/ui/semantics/Role;->(I)V +HSPLandroidx/compose/ui/semantics/Role;->access$getButton$cp()I +HSPLandroidx/compose/ui/semantics/Role;->access$getCheckbox$cp()I +HSPLandroidx/compose/ui/semantics/Role;->access$getImage$cp()I +HSPLandroidx/compose/ui/semantics/Role;->access$getSwitch$cp()I +HSPLandroidx/compose/ui/semantics/Role;->access$getTab$cp()I +HSPLandroidx/compose/ui/semantics/Role;->box-impl(I)Landroidx/compose/ui/semantics/Role; +HSPLandroidx/compose/ui/semantics/Role;->constructor-impl(I)I +HSPLandroidx/compose/ui/semantics/Role;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/semantics/Role;->equals-impl(ILjava/lang/Object;)Z +HSPLandroidx/compose/ui/semantics/Role;->equals-impl0(II)Z +HSPLandroidx/compose/ui/semantics/Role;->unbox-impl()I +Landroidx/compose/ui/semantics/Role$Companion; +HSPLandroidx/compose/ui/semantics/Role$Companion;->()V +HSPLandroidx/compose/ui/semantics/Role$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/semantics/Role$Companion;->getButton-o7Vup1c()I +HSPLandroidx/compose/ui/semantics/Role$Companion;->getCheckbox-o7Vup1c()I +HSPLandroidx/compose/ui/semantics/Role$Companion;->getImage-o7Vup1c()I +HSPLandroidx/compose/ui/semantics/Role$Companion;->getSwitch-o7Vup1c()I +HSPLandroidx/compose/ui/semantics/Role$Companion;->getTab-o7Vup1c()I +Landroidx/compose/ui/semantics/ScrollAxisRange; +HSPLandroidx/compose/ui/semantics/ScrollAxisRange;->()V +HSPLandroidx/compose/ui/semantics/ScrollAxisRange;->(Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Z)V +HSPLandroidx/compose/ui/semantics/ScrollAxisRange;->getMaxValue()Lkotlin/jvm/functions/Function0; +HSPLandroidx/compose/ui/semantics/ScrollAxisRange;->getValue()Lkotlin/jvm/functions/Function0; +Landroidx/compose/ui/semantics/SemanticsActions; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->()V +HSPLandroidx/compose/ui/semantics/SemanticsActions;->()V +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getCollapse()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getCopyText()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getCustomActions()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getCutText()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getDismiss()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getExpand()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getGetTextLayoutResult()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getInsertTextAtCursor()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getOnClick()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getOnLongClick()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getPageDown()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getPageLeft()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getPageRight()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getPageUp()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getPasteText()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getPerformImeAction()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getRequestFocus()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getScrollBy()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getScrollToIndex()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getSetProgress()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getSetSelection()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getSetText()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +Landroidx/compose/ui/semantics/SemanticsConfiguration; +HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->()V +HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->()V +HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->contains(Landroidx/compose/ui/semantics/SemanticsPropertyKey;)Z +HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->get(Landroidx/compose/ui/semantics/SemanticsPropertyKey;)Ljava/lang/Object; +PLandroidx/compose/ui/semantics/SemanticsConfiguration;->getOrElse(Landroidx/compose/ui/semantics/SemanticsPropertyKey;Lkotlin/jvm/functions/Function0;)Ljava/lang/Object; +HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->getOrElseNullable(Landroidx/compose/ui/semantics/SemanticsPropertyKey;Lkotlin/jvm/functions/Function0;)Ljava/lang/Object; +HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->isClearingSemantics()Z +HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->isMergingSemanticsOfDescendants()Z +HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->set(Landroidx/compose/ui/semantics/SemanticsPropertyKey;Ljava/lang/Object;)V +HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->setClearingSemantics(Z)V +HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->setMergingSemanticsOfDescendants(Z)V +Landroidx/compose/ui/semantics/SemanticsConfigurationKt; +HSPLandroidx/compose/ui/semantics/SemanticsConfigurationKt;->getOrNull(Landroidx/compose/ui/semantics/SemanticsConfiguration;Landroidx/compose/ui/semantics/SemanticsPropertyKey;)Ljava/lang/Object; +Landroidx/compose/ui/semantics/SemanticsConfigurationKt$getOrNull$1; +HSPLandroidx/compose/ui/semantics/SemanticsConfigurationKt$getOrNull$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsConfigurationKt$getOrNull$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsConfigurationKt$getOrNull$1;->invoke()Ljava/lang/Object; +Landroidx/compose/ui/semantics/SemanticsModifier; +Landroidx/compose/ui/semantics/SemanticsModifierKt; +HSPLandroidx/compose/ui/semantics/SemanticsModifierKt;->()V +HSPLandroidx/compose/ui/semantics/SemanticsModifierKt;->clearAndSetSemantics(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/semantics/SemanticsModifierKt;->generateSemanticsId()I +HSPLandroidx/compose/ui/semantics/SemanticsModifierKt;->semantics$default(Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/semantics/SemanticsModifierKt;->semantics(Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +Landroidx/compose/ui/semantics/SemanticsNode; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->()V +HSPLandroidx/compose/ui/semantics/SemanticsNode;->(Landroidx/compose/ui/Modifier$Node;ZLandroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/semantics/SemanticsConfiguration;)V +HSPLandroidx/compose/ui/semantics/SemanticsNode;->emitFakeNodes(Ljava/util/List;)V +HSPLandroidx/compose/ui/semantics/SemanticsNode;->fakeSemanticsNode-ypyhhiA(Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/semantics/SemanticsNode; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->fillOneLayerOfSemanticsWrappers(Landroidx/compose/ui/node/LayoutNode;Ljava/util/List;)V +HSPLandroidx/compose/ui/semantics/SemanticsNode;->findCoordinatorToGetBounds$ui_release()Landroidx/compose/ui/node/NodeCoordinator; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->getBoundsInRoot()Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->getBoundsInWindow()Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->getChildren()Ljava/util/List; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->getChildren(ZZ)Ljava/util/List; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->getConfig()Landroidx/compose/ui/semantics/SemanticsConfiguration; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->getId()I +HSPLandroidx/compose/ui/semantics/SemanticsNode;->getLayoutInfo()Landroidx/compose/ui/layout/LayoutInfo; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->getLayoutNode$ui_release()Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->getParent()Landroidx/compose/ui/semantics/SemanticsNode; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->getReplacedChildren$ui_release()Ljava/util/List; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->getTouchBoundsInRoot()Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->getUnmergedConfig$ui_release()Landroidx/compose/ui/semantics/SemanticsConfiguration; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->isFake$ui_release()Z +HSPLandroidx/compose/ui/semantics/SemanticsNode;->isMergingSemanticsOfDescendants()Z +HSPLandroidx/compose/ui/semantics/SemanticsNode;->isTransparent$ui_release()Z +HSPLandroidx/compose/ui/semantics/SemanticsNode;->isUnmergedLeafNode$ui_release()Z +HSPLandroidx/compose/ui/semantics/SemanticsNode;->unmergedChildren$ui_release(Z)Ljava/util/List; +Landroidx/compose/ui/semantics/SemanticsNode$emitFakeNodes$fakeNode$1; +HSPLandroidx/compose/ui/semantics/SemanticsNode$emitFakeNodes$fakeNode$1;->(Landroidx/compose/ui/semantics/Role;)V +HSPLandroidx/compose/ui/semantics/SemanticsNode$emitFakeNodes$fakeNode$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/ui/semantics/SemanticsNode$emitFakeNodes$fakeNode$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/semantics/SemanticsNode$fakeSemanticsNode$fakeNode$1; +HSPLandroidx/compose/ui/semantics/SemanticsNode$fakeSemanticsNode$fakeNode$1;->(Lkotlin/jvm/functions/Function1;)V +Landroidx/compose/ui/semantics/SemanticsNode$isUnmergedLeafNode$1; +HSPLandroidx/compose/ui/semantics/SemanticsNode$isUnmergedLeafNode$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsNode$isUnmergedLeafNode$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsNode$isUnmergedLeafNode$1;->invoke(Landroidx/compose/ui/node/LayoutNode;)Ljava/lang/Boolean; +HSPLandroidx/compose/ui/semantics/SemanticsNode$isUnmergedLeafNode$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/semantics/SemanticsNode$parent$2; +HSPLandroidx/compose/ui/semantics/SemanticsNode$parent$2;->()V +HSPLandroidx/compose/ui/semantics/SemanticsNode$parent$2;->()V +HSPLandroidx/compose/ui/semantics/SemanticsNode$parent$2;->invoke(Landroidx/compose/ui/node/LayoutNode;)Ljava/lang/Boolean; +HSPLandroidx/compose/ui/semantics/SemanticsNode$parent$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/semantics/SemanticsNodeKt; +HSPLandroidx/compose/ui/semantics/SemanticsNodeKt;->SemanticsNode(Landroidx/compose/ui/node/LayoutNode;Z)Landroidx/compose/ui/semantics/SemanticsNode; +HSPLandroidx/compose/ui/semantics/SemanticsNodeKt;->access$getRole(Landroidx/compose/ui/semantics/SemanticsNode;)Landroidx/compose/ui/semantics/Role; +HSPLandroidx/compose/ui/semantics/SemanticsNodeKt;->access$roleFakeNodeId(Landroidx/compose/ui/semantics/SemanticsNode;)I +HSPLandroidx/compose/ui/semantics/SemanticsNodeKt;->findClosestParentNode(Landroidx/compose/ui/node/LayoutNode;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/semantics/SemanticsNodeKt;->getOuterMergingSemantics(Landroidx/compose/ui/node/LayoutNode;)Landroidx/compose/ui/node/SemanticsModifierNode; +HSPLandroidx/compose/ui/semantics/SemanticsNodeKt;->getRole(Landroidx/compose/ui/semantics/SemanticsNode;)Landroidx/compose/ui/semantics/Role; +HSPLandroidx/compose/ui/semantics/SemanticsNodeKt;->roleFakeNodeId(Landroidx/compose/ui/semantics/SemanticsNode;)I +Landroidx/compose/ui/semantics/SemanticsOwner; +HSPLandroidx/compose/ui/semantics/SemanticsOwner;->()V +HSPLandroidx/compose/ui/semantics/SemanticsOwner;->(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/semantics/SemanticsOwner;->getUnmergedRootSemanticsNode()Landroidx/compose/ui/semantics/SemanticsNode; +Landroidx/compose/ui/semantics/SemanticsProperties; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->()V +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->()V +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getCollectionInfo()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getCollectionItemInfo()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getContentDescription()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getDisabled()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getEditableText()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getError()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getFocused()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getHeading()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getHorizontalScrollAxisRange()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getImeAction()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getIndexForKey()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getInvisibleToUser()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getIsTraversalGroup()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getLiveRegion()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getPaneTitle()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getPassword()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getProgressBarRangeInfo()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getRole()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getSelectableGroup()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getSelected()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getStateDescription()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getTestTag()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getText()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getTextSelectionRange()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getToggleableState()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getTraversalIndex()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getVerticalScrollAxisRange()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +Landroidx/compose/ui/semantics/SemanticsProperties$ContentDescription$1; +HSPLandroidx/compose/ui/semantics/SemanticsProperties$ContentDescription$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsProperties$ContentDescription$1;->()V +Landroidx/compose/ui/semantics/SemanticsProperties$InvisibleToUser$1; +HSPLandroidx/compose/ui/semantics/SemanticsProperties$InvisibleToUser$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsProperties$InvisibleToUser$1;->()V +Landroidx/compose/ui/semantics/SemanticsProperties$IsDialog$1; +HSPLandroidx/compose/ui/semantics/SemanticsProperties$IsDialog$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsProperties$IsDialog$1;->()V +Landroidx/compose/ui/semantics/SemanticsProperties$IsPopup$1; +HSPLandroidx/compose/ui/semantics/SemanticsProperties$IsPopup$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsProperties$IsPopup$1;->()V +Landroidx/compose/ui/semantics/SemanticsProperties$PaneTitle$1; +HSPLandroidx/compose/ui/semantics/SemanticsProperties$PaneTitle$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsProperties$PaneTitle$1;->()V +Landroidx/compose/ui/semantics/SemanticsProperties$Role$1; +HSPLandroidx/compose/ui/semantics/SemanticsProperties$Role$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsProperties$Role$1;->()V +Landroidx/compose/ui/semantics/SemanticsProperties$TestTag$1; +HSPLandroidx/compose/ui/semantics/SemanticsProperties$TestTag$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsProperties$TestTag$1;->()V +Landroidx/compose/ui/semantics/SemanticsProperties$Text$1; +HSPLandroidx/compose/ui/semantics/SemanticsProperties$Text$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsProperties$Text$1;->()V +Landroidx/compose/ui/semantics/SemanticsProperties$TraversalIndex$1; +HSPLandroidx/compose/ui/semantics/SemanticsProperties$TraversalIndex$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsProperties$TraversalIndex$1;->()V +Landroidx/compose/ui/semantics/SemanticsPropertiesAndroid; +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesAndroid;->()V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesAndroid;->()V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesAndroid;->getTestTagsAsResourceId()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +Landroidx/compose/ui/semantics/SemanticsPropertiesAndroid$TestTagsAsResourceId$1; +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesAndroid$TestTagsAsResourceId$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesAndroid$TestTagsAsResourceId$1;->()V +Landroidx/compose/ui/semantics/SemanticsPropertiesKt; +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->()V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->disabled(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->getTextLayoutResult$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->getTextLayoutResult(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->indexForKey(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->insertTextAtCursor$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->insertTextAtCursor(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->onClick$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->onClick(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->onLongClick$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->onLongClick(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->password(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->pasteText$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->pasteText(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->performImeAction$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->performImeAction(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->requestFocus$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->requestFocus(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->scrollBy$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->scrollBy(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->scrollToIndex$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->scrollToIndex(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->selectableGroup(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setCollectionInfo(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Landroidx/compose/ui/semantics/CollectionInfo;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setContainer(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Z)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setEditableText(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Landroidx/compose/ui/text/AnnotatedString;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setFocused(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Z)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setImeAction-4L7nppU(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;I)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setProgressBarRangeInfo(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Landroidx/compose/ui/semantics/ProgressBarRangeInfo;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setRole-kuIjeqM(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;I)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setSelected(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Z)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setSelection$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function3;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setSelection(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function3;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setTestTag(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setText$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setText(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Landroidx/compose/ui/text/AnnotatedString;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setText(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setTextSelectionRange-FDrldGo(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;J)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setTraversalGroup(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Z)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setVerticalScrollAxisRange(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Landroidx/compose/ui/semantics/ScrollAxisRange;)V +Landroidx/compose/ui/semantics/SemanticsPropertiesKt$ActionPropertyKey$1; +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt$ActionPropertyKey$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt$ActionPropertyKey$1;->()V +Landroidx/compose/ui/semantics/SemanticsProperties_androidKt; +HSPLandroidx/compose/ui/semantics/SemanticsProperties_androidKt;->()V +HSPLandroidx/compose/ui/semantics/SemanticsProperties_androidKt;->setTestTagsAsResourceId(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Z)V +Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsPropertyKey;->()V +HSPLandroidx/compose/ui/semantics/SemanticsPropertyKey;->(Ljava/lang/String;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertyKey;->(Ljava/lang/String;Lkotlin/jvm/functions/Function2;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertyKey;->setValue(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Lkotlin/reflect/KProperty;Ljava/lang/Object;)V +Landroidx/compose/ui/semantics/SemanticsPropertyKey$1; +HSPLandroidx/compose/ui/semantics/SemanticsPropertyKey$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsPropertyKey$1;->()V +Landroidx/compose/ui/semantics/SemanticsPropertyReceiver; +Landroidx/compose/ui/state/ToggleableState; +HSPLandroidx/compose/ui/state/ToggleableState;->$values()[Landroidx/compose/ui/state/ToggleableState; +HSPLandroidx/compose/ui/state/ToggleableState;->()V +HSPLandroidx/compose/ui/state/ToggleableState;->(Ljava/lang/String;I)V +HSPLandroidx/compose/ui/state/ToggleableState;->values()[Landroidx/compose/ui/state/ToggleableState; +Landroidx/compose/ui/state/ToggleableStateKt; +HSPLandroidx/compose/ui/state/ToggleableStateKt;->ToggleableState(Z)Landroidx/compose/ui/state/ToggleableState; +Landroidx/compose/ui/text/AndroidParagraph; +HSPLandroidx/compose/ui/text/AndroidParagraph;->(Landroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;IZJ)V +HSPLandroidx/compose/ui/text/AndroidParagraph;->(Landroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;IZJLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/AndroidParagraph;->constructTextLayout(IILandroid/text/TextUtils$TruncateAt;IIIII)Landroidx/compose/ui/text/android/TextLayout; +HSPLandroidx/compose/ui/text/AndroidParagraph;->getBoundingBox(I)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/text/AndroidParagraph;->getCursorRect(I)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/text/AndroidParagraph;->getDidExceedMaxLines()Z +HSPLandroidx/compose/ui/text/AndroidParagraph;->getFirstBaseline()F +HSPLandroidx/compose/ui/text/AndroidParagraph;->getHeight()F +HSPLandroidx/compose/ui/text/AndroidParagraph;->getLastBaseline()F +HSPLandroidx/compose/ui/text/AndroidParagraph;->getLineBaseline$ui_text_release(I)F +HSPLandroidx/compose/ui/text/AndroidParagraph;->getLineBottom(I)F +HSPLandroidx/compose/ui/text/AndroidParagraph;->getLineCount()I +HSPLandroidx/compose/ui/text/AndroidParagraph;->getMinIntrinsicWidth()F +HSPLandroidx/compose/ui/text/AndroidParagraph;->getPlaceholderRects()Ljava/util/List; +HSPLandroidx/compose/ui/text/AndroidParagraph;->getShaderBrushSpans(Landroidx/compose/ui/text/android/TextLayout;)[Landroidx/compose/ui/text/platform/style/ShaderBrushSpan; +HSPLandroidx/compose/ui/text/AndroidParagraph;->getTextPaint$ui_text_release()Landroidx/compose/ui/text/platform/AndroidTextPaint; +HSPLandroidx/compose/ui/text/AndroidParagraph;->getWidth()F +HSPLandroidx/compose/ui/text/AndroidParagraph;->paint(Landroidx/compose/ui/graphics/Canvas;)V +HSPLandroidx/compose/ui/text/AndroidParagraph;->paint-LG529CI(Landroidx/compose/ui/graphics/Canvas;JLandroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/drawscope/DrawStyle;I)V +Landroidx/compose/ui/text/AndroidParagraph$wordBoundary$2; +HSPLandroidx/compose/ui/text/AndroidParagraph$wordBoundary$2;->(Landroidx/compose/ui/text/AndroidParagraph;)V +Landroidx/compose/ui/text/AndroidParagraph_androidKt; +HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->access$shouldAttachIndentationFixSpan(Landroidx/compose/ui/text/TextStyle;Z)Z +HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->access$toLayoutAlign-AMY3VfE(Landroidx/compose/ui/text/style/TextAlign;)I +HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->access$toLayoutBreakStrategy-u6PBz3U(Landroidx/compose/ui/text/style/LineBreak$Strategy;)I +HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->access$toLayoutHyphenationFrequency-0_XeFpE(Landroidx/compose/ui/text/style/Hyphens;)I +HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->access$toLayoutLineBreakStyle-4a2g8L8(Landroidx/compose/ui/text/style/LineBreak$Strictness;)I +HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->access$toLayoutLineBreakWordStyle-gvcdTPQ(Landroidx/compose/ui/text/style/LineBreak$WordBreak;)I +HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->shouldAttachIndentationFixSpan(Landroidx/compose/ui/text/TextStyle;Z)Z +HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->toLayoutAlign-AMY3VfE(Landroidx/compose/ui/text/style/TextAlign;)I +HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->toLayoutBreakStrategy-u6PBz3U(Landroidx/compose/ui/text/style/LineBreak$Strategy;)I +HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->toLayoutHyphenationFrequency-0_XeFpE(Landroidx/compose/ui/text/style/Hyphens;)I +HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->toLayoutLineBreakStyle-4a2g8L8(Landroidx/compose/ui/text/style/LineBreak$Strictness;)I +HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->toLayoutLineBreakWordStyle-gvcdTPQ(Landroidx/compose/ui/text/style/LineBreak$WordBreak;)I +Landroidx/compose/ui/text/AndroidTextStyle_androidKt; +HSPLandroidx/compose/ui/text/AndroidTextStyle_androidKt;->createPlatformTextStyle(Landroidx/compose/ui/text/PlatformSpanStyle;Landroidx/compose/ui/text/PlatformParagraphStyle;)Landroidx/compose/ui/text/PlatformTextStyle; +Landroidx/compose/ui/text/AnnotatedString; +HSPLandroidx/compose/ui/text/AnnotatedString;->()V +HSPLandroidx/compose/ui/text/AnnotatedString;->(Ljava/lang/String;Ljava/util/List;Ljava/util/List;)V +HSPLandroidx/compose/ui/text/AnnotatedString;->(Ljava/lang/String;Ljava/util/List;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/AnnotatedString;->(Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/util/List;)V +HSPLandroidx/compose/ui/text/AnnotatedString;->(Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/AnnotatedString;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/AnnotatedString;->getLength()I +HSPLandroidx/compose/ui/text/AnnotatedString;->getParagraphStylesOrNull$ui_text_release()Ljava/util/List; +HSPLandroidx/compose/ui/text/AnnotatedString;->getSpanStyles()Ljava/util/List; +HSPLandroidx/compose/ui/text/AnnotatedString;->getSpanStylesOrNull$ui_text_release()Ljava/util/List; +HSPLandroidx/compose/ui/text/AnnotatedString;->getText()Ljava/lang/String; +HSPLandroidx/compose/ui/text/AnnotatedString;->getTtsAnnotations(II)Ljava/util/List; +HSPLandroidx/compose/ui/text/AnnotatedString;->getUrlAnnotations(II)Ljava/util/List; +HSPLandroidx/compose/ui/text/AnnotatedString;->hasStringAnnotations(Ljava/lang/String;II)Z +HSPLandroidx/compose/ui/text/AnnotatedString;->length()I +HSPLandroidx/compose/ui/text/AnnotatedString;->subSequence(II)Landroidx/compose/ui/text/AnnotatedString; +HSPLandroidx/compose/ui/text/AnnotatedString;->toString()Ljava/lang/String; +Landroidx/compose/ui/text/AnnotatedString$Builder; +HSPLandroidx/compose/ui/text/AnnotatedString$Builder;->()V +HSPLandroidx/compose/ui/text/AnnotatedString$Builder;->(I)V +HSPLandroidx/compose/ui/text/AnnotatedString$Builder;->(IILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/AnnotatedString$Builder;->append(Ljava/lang/String;)V +HSPLandroidx/compose/ui/text/AnnotatedString$Builder;->pop()V +HSPLandroidx/compose/ui/text/AnnotatedString$Builder;->pop(I)V +HSPLandroidx/compose/ui/text/AnnotatedString$Builder;->pushStyle(Landroidx/compose/ui/text/SpanStyle;)I +HSPLandroidx/compose/ui/text/AnnotatedString$Builder;->toAnnotatedString()Landroidx/compose/ui/text/AnnotatedString; +Landroidx/compose/ui/text/AnnotatedString$Builder$MutableRange; +HSPLandroidx/compose/ui/text/AnnotatedString$Builder$MutableRange;->(Ljava/lang/Object;IILjava/lang/String;)V +HSPLandroidx/compose/ui/text/AnnotatedString$Builder$MutableRange;->(Ljava/lang/Object;IILjava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/AnnotatedString$Builder$MutableRange;->setEnd(I)V +HSPLandroidx/compose/ui/text/AnnotatedString$Builder$MutableRange;->toRange(I)Landroidx/compose/ui/text/AnnotatedString$Range; +Landroidx/compose/ui/text/AnnotatedString$Range; +HSPLandroidx/compose/ui/text/AnnotatedString$Range;->()V +HSPLandroidx/compose/ui/text/AnnotatedString$Range;->(Ljava/lang/Object;II)V +HSPLandroidx/compose/ui/text/AnnotatedString$Range;->(Ljava/lang/Object;IILjava/lang/String;)V +HSPLandroidx/compose/ui/text/AnnotatedString$Range;->component1()Ljava/lang/Object; +HSPLandroidx/compose/ui/text/AnnotatedString$Range;->component2()I +HSPLandroidx/compose/ui/text/AnnotatedString$Range;->component3()I +HSPLandroidx/compose/ui/text/AnnotatedString$Range;->getEnd()I +HSPLandroidx/compose/ui/text/AnnotatedString$Range;->getItem()Ljava/lang/Object; +HSPLandroidx/compose/ui/text/AnnotatedString$Range;->getStart()I +Landroidx/compose/ui/text/AnnotatedStringKt; +HSPLandroidx/compose/ui/text/AnnotatedStringKt;->()V +HSPLandroidx/compose/ui/text/AnnotatedStringKt;->access$filterRanges(Ljava/util/List;II)Ljava/util/List; +HSPLandroidx/compose/ui/text/AnnotatedStringKt;->access$substringWithoutParagraphStyles(Landroidx/compose/ui/text/AnnotatedString;II)Landroidx/compose/ui/text/AnnotatedString; +HSPLandroidx/compose/ui/text/AnnotatedStringKt;->emptyAnnotatedString()Landroidx/compose/ui/text/AnnotatedString; +HSPLandroidx/compose/ui/text/AnnotatedStringKt;->filterRanges(Ljava/util/List;II)Ljava/util/List; +HSPLandroidx/compose/ui/text/AnnotatedStringKt;->getLocalSpanStyles(Landroidx/compose/ui/text/AnnotatedString;II)Ljava/util/List; +HSPLandroidx/compose/ui/text/AnnotatedStringKt;->normalizedParagraphStyles(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/ParagraphStyle;)Ljava/util/List; +HSPLandroidx/compose/ui/text/AnnotatedStringKt;->substringWithoutParagraphStyles(Landroidx/compose/ui/text/AnnotatedString;II)Landroidx/compose/ui/text/AnnotatedString; +Landroidx/compose/ui/text/EmojiSupportMatch; +HSPLandroidx/compose/ui/text/EmojiSupportMatch;->()V +HSPLandroidx/compose/ui/text/EmojiSupportMatch;->(I)V +HSPLandroidx/compose/ui/text/EmojiSupportMatch;->access$getDefault$cp()I +HSPLandroidx/compose/ui/text/EmojiSupportMatch;->access$getNone$cp()I +HSPLandroidx/compose/ui/text/EmojiSupportMatch;->box-impl(I)Landroidx/compose/ui/text/EmojiSupportMatch; +HSPLandroidx/compose/ui/text/EmojiSupportMatch;->constructor-impl(I)I +HSPLandroidx/compose/ui/text/EmojiSupportMatch;->equals-impl0(II)Z +HSPLandroidx/compose/ui/text/EmojiSupportMatch;->unbox-impl()I +Landroidx/compose/ui/text/EmojiSupportMatch$Companion; +HSPLandroidx/compose/ui/text/EmojiSupportMatch$Companion;->()V +HSPLandroidx/compose/ui/text/EmojiSupportMatch$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/EmojiSupportMatch$Companion;->getDefault-_3YsG6Y()I +HSPLandroidx/compose/ui/text/EmojiSupportMatch$Companion;->getNone-_3YsG6Y()I +Landroidx/compose/ui/text/MultiParagraph; +HSPLandroidx/compose/ui/text/MultiParagraph;->()V +HSPLandroidx/compose/ui/text/MultiParagraph;->(Landroidx/compose/ui/text/MultiParagraphIntrinsics;JIZ)V +HSPLandroidx/compose/ui/text/MultiParagraph;->(Landroidx/compose/ui/text/MultiParagraphIntrinsics;JIZLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/MultiParagraph;->getAnnotatedString()Landroidx/compose/ui/text/AnnotatedString; +HSPLandroidx/compose/ui/text/MultiParagraph;->getBoundingBox(I)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/text/MultiParagraph;->getCursorRect(I)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/text/MultiParagraph;->getDidExceedMaxLines()Z +HSPLandroidx/compose/ui/text/MultiParagraph;->getFirstBaseline()F +HSPLandroidx/compose/ui/text/MultiParagraph;->getHeight()F +HSPLandroidx/compose/ui/text/MultiParagraph;->getIntrinsics()Landroidx/compose/ui/text/MultiParagraphIntrinsics; +HSPLandroidx/compose/ui/text/MultiParagraph;->getLastBaseline()F +HSPLandroidx/compose/ui/text/MultiParagraph;->getLineBottom(I)F +HSPLandroidx/compose/ui/text/MultiParagraph;->getPlaceholderRects()Ljava/util/List; +HSPLandroidx/compose/ui/text/MultiParagraph;->getWidth()F +HSPLandroidx/compose/ui/text/MultiParagraph;->paint-LG529CI$default(Landroidx/compose/ui/text/MultiParagraph;Landroidx/compose/ui/graphics/Canvas;JLandroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/drawscope/DrawStyle;IILjava/lang/Object;)V +HSPLandroidx/compose/ui/text/MultiParagraph;->paint-LG529CI(Landroidx/compose/ui/graphics/Canvas;JLandroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/drawscope/DrawStyle;I)V +HSPLandroidx/compose/ui/text/MultiParagraph;->requireIndexInRange(I)V +HSPLandroidx/compose/ui/text/MultiParagraph;->requireIndexInRangeInclusiveEnd(I)V +HSPLandroidx/compose/ui/text/MultiParagraph;->requireLineIndexInRange(I)V +Landroidx/compose/ui/text/MultiParagraphIntrinsics; +HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics;->()V +HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics;->(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Ljava/util/List;Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;)V +HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics;->access$resolveTextDirection(Landroidx/compose/ui/text/MultiParagraphIntrinsics;Landroidx/compose/ui/text/ParagraphStyle;Landroidx/compose/ui/text/ParagraphStyle;)Landroidx/compose/ui/text/ParagraphStyle; +HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics;->getAnnotatedString()Landroidx/compose/ui/text/AnnotatedString; +HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics;->getHasStaleResolvedFonts()Z +HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics;->getInfoList$ui_text_release()Ljava/util/List; +HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics;->getMaxIntrinsicWidth()F +HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics;->getPlaceholders()Ljava/util/List; +HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics;->resolveTextDirection(Landroidx/compose/ui/text/ParagraphStyle;Landroidx/compose/ui/text/ParagraphStyle;)Landroidx/compose/ui/text/ParagraphStyle; +Landroidx/compose/ui/text/MultiParagraphIntrinsics$maxIntrinsicWidth$2; +HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics$maxIntrinsicWidth$2;->(Landroidx/compose/ui/text/MultiParagraphIntrinsics;)V +HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics$maxIntrinsicWidth$2;->invoke()Ljava/lang/Float; +HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics$maxIntrinsicWidth$2;->invoke()Ljava/lang/Object; +Landroidx/compose/ui/text/MultiParagraphIntrinsics$minIntrinsicWidth$2; +HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics$minIntrinsicWidth$2;->(Landroidx/compose/ui/text/MultiParagraphIntrinsics;)V +Landroidx/compose/ui/text/MultiParagraphIntrinsicsKt; +HSPLandroidx/compose/ui/text/MultiParagraphIntrinsicsKt;->access$getLocalPlaceholders(Ljava/util/List;II)Ljava/util/List; +HSPLandroidx/compose/ui/text/MultiParagraphIntrinsicsKt;->getLocalPlaceholders(Ljava/util/List;II)Ljava/util/List; +Landroidx/compose/ui/text/MultiParagraphKt; +HSPLandroidx/compose/ui/text/MultiParagraphKt;->findParagraphByIndex(Ljava/util/List;I)I +HSPLandroidx/compose/ui/text/MultiParagraphKt;->findParagraphByLineIndex(Ljava/util/List;I)I +Landroidx/compose/ui/text/Paragraph; +Landroidx/compose/ui/text/ParagraphInfo; +HSPLandroidx/compose/ui/text/ParagraphInfo;->(Landroidx/compose/ui/text/Paragraph;IIIIFF)V +HSPLandroidx/compose/ui/text/ParagraphInfo;->getEndIndex()I +HSPLandroidx/compose/ui/text/ParagraphInfo;->getEndLineIndex()I +HSPLandroidx/compose/ui/text/ParagraphInfo;->getParagraph()Landroidx/compose/ui/text/Paragraph; +HSPLandroidx/compose/ui/text/ParagraphInfo;->getStartIndex()I +HSPLandroidx/compose/ui/text/ParagraphInfo;->getStartLineIndex()I +HSPLandroidx/compose/ui/text/ParagraphInfo;->toGlobal(Landroidx/compose/ui/geometry/Rect;)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/text/ParagraphInfo;->toGlobalYPosition(F)F +HSPLandroidx/compose/ui/text/ParagraphInfo;->toLocalIndex(I)I +HSPLandroidx/compose/ui/text/ParagraphInfo;->toLocalLineIndex(I)I +Landroidx/compose/ui/text/ParagraphIntrinsicInfo; +HSPLandroidx/compose/ui/text/ParagraphIntrinsicInfo;->(Landroidx/compose/ui/text/ParagraphIntrinsics;II)V +HSPLandroidx/compose/ui/text/ParagraphIntrinsicInfo;->getEndIndex()I +HSPLandroidx/compose/ui/text/ParagraphIntrinsicInfo;->getIntrinsics()Landroidx/compose/ui/text/ParagraphIntrinsics; +HSPLandroidx/compose/ui/text/ParagraphIntrinsicInfo;->getStartIndex()I +Landroidx/compose/ui/text/ParagraphIntrinsics; +Landroidx/compose/ui/text/ParagraphIntrinsicsKt; +HSPLandroidx/compose/ui/text/ParagraphIntrinsicsKt;->ParagraphIntrinsics(Ljava/lang/String;Landroidx/compose/ui/text/TextStyle;Ljava/util/List;Ljava/util/List;Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;)Landroidx/compose/ui/text/ParagraphIntrinsics; +Landroidx/compose/ui/text/ParagraphKt; +HSPLandroidx/compose/ui/text/ParagraphKt;->Paragraph-UdtVg6A$default(Ljava/lang/String;Landroidx/compose/ui/text/TextStyle;JLandroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;Ljava/util/List;Ljava/util/List;IZILjava/lang/Object;)Landroidx/compose/ui/text/Paragraph; +HSPLandroidx/compose/ui/text/ParagraphKt;->Paragraph-UdtVg6A(Ljava/lang/String;Landroidx/compose/ui/text/TextStyle;JLandroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;Ljava/util/List;Ljava/util/List;IZ)Landroidx/compose/ui/text/Paragraph; +HSPLandroidx/compose/ui/text/ParagraphKt;->Paragraph-_EkL_-Y(Landroidx/compose/ui/text/ParagraphIntrinsics;JIZ)Landroidx/compose/ui/text/Paragraph; +HSPLandroidx/compose/ui/text/ParagraphKt;->ceilToInt(F)I +Landroidx/compose/ui/text/ParagraphStyle; +HSPLandroidx/compose/ui/text/ParagraphStyle;->()V +HSPLandroidx/compose/ui/text/ParagraphStyle;->(Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Landroidx/compose/ui/text/PlatformParagraphStyle;Landroidx/compose/ui/text/style/LineHeightStyle;Landroidx/compose/ui/text/style/LineBreak;Landroidx/compose/ui/text/style/Hyphens;Landroidx/compose/ui/text/style/TextMotion;)V +HSPLandroidx/compose/ui/text/ParagraphStyle;->(Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Landroidx/compose/ui/text/PlatformParagraphStyle;Landroidx/compose/ui/text/style/LineHeightStyle;Landroidx/compose/ui/text/style/LineBreak;Landroidx/compose/ui/text/style/Hyphens;Landroidx/compose/ui/text/style/TextMotion;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/ParagraphStyle;->(Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Landroidx/compose/ui/text/PlatformParagraphStyle;Landroidx/compose/ui/text/style/LineHeightStyle;Landroidx/compose/ui/text/style/LineBreak;Landroidx/compose/ui/text/style/Hyphens;Landroidx/compose/ui/text/style/TextMotion;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/ParagraphStyle;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/ParagraphStyle;->getHyphens-EaSxIns()Landroidx/compose/ui/text/style/Hyphens; +HSPLandroidx/compose/ui/text/ParagraphStyle;->getHyphensOrDefault-vmbZdU8$ui_text_release()I +HSPLandroidx/compose/ui/text/ParagraphStyle;->getLineBreak-LgCVezo()Landroidx/compose/ui/text/style/LineBreak; +HSPLandroidx/compose/ui/text/ParagraphStyle;->getLineBreakOrDefault-rAG3T2k$ui_text_release()I +HSPLandroidx/compose/ui/text/ParagraphStyle;->getLineHeight-XSAIIZE()J +HSPLandroidx/compose/ui/text/ParagraphStyle;->getLineHeightStyle()Landroidx/compose/ui/text/style/LineHeightStyle; +HSPLandroidx/compose/ui/text/ParagraphStyle;->getPlatformStyle()Landroidx/compose/ui/text/PlatformParagraphStyle; +HSPLandroidx/compose/ui/text/ParagraphStyle;->getTextAlign-buA522U()Landroidx/compose/ui/text/style/TextAlign; +HSPLandroidx/compose/ui/text/ParagraphStyle;->getTextAlignOrDefault-e0LSkKk$ui_text_release()I +HSPLandroidx/compose/ui/text/ParagraphStyle;->getTextDirection-mmuk1to()Landroidx/compose/ui/text/style/TextDirection; +HSPLandroidx/compose/ui/text/ParagraphStyle;->getTextIndent()Landroidx/compose/ui/text/style/TextIndent; +HSPLandroidx/compose/ui/text/ParagraphStyle;->getTextMotion()Landroidx/compose/ui/text/style/TextMotion; +HSPLandroidx/compose/ui/text/ParagraphStyle;->merge(Landroidx/compose/ui/text/ParagraphStyle;)Landroidx/compose/ui/text/ParagraphStyle; +Landroidx/compose/ui/text/ParagraphStyleKt; +HSPLandroidx/compose/ui/text/ParagraphStyleKt;->()V +HSPLandroidx/compose/ui/text/ParagraphStyleKt;->fastMerge-HtYhynw(Landroidx/compose/ui/text/ParagraphStyle;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Landroidx/compose/ui/text/PlatformParagraphStyle;Landroidx/compose/ui/text/style/LineHeightStyle;Landroidx/compose/ui/text/style/LineBreak;Landroidx/compose/ui/text/style/Hyphens;Landroidx/compose/ui/text/style/TextMotion;)Landroidx/compose/ui/text/ParagraphStyle; +HSPLandroidx/compose/ui/text/ParagraphStyleKt;->mergePlatformStyle(Landroidx/compose/ui/text/ParagraphStyle;Landroidx/compose/ui/text/PlatformParagraphStyle;)Landroidx/compose/ui/text/PlatformParagraphStyle; +HSPLandroidx/compose/ui/text/ParagraphStyleKt;->resolveParagraphStyleDefaults(Landroidx/compose/ui/text/ParagraphStyle;Landroidx/compose/ui/unit/LayoutDirection;)Landroidx/compose/ui/text/ParagraphStyle; +Landroidx/compose/ui/text/PlatformParagraphStyle; +HSPLandroidx/compose/ui/text/PlatformParagraphStyle;->()V +HSPLandroidx/compose/ui/text/PlatformParagraphStyle;->()V +HSPLandroidx/compose/ui/text/PlatformParagraphStyle;->(IZ)V +HSPLandroidx/compose/ui/text/PlatformParagraphStyle;->(IZLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/PlatformParagraphStyle;->(Z)V +HSPLandroidx/compose/ui/text/PlatformParagraphStyle;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/PlatformParagraphStyle;->getEmojiSupportMatch-_3YsG6Y()I +HSPLandroidx/compose/ui/text/PlatformParagraphStyle;->getIncludeFontPadding()Z +HSPLandroidx/compose/ui/text/PlatformParagraphStyle;->merge(Landroidx/compose/ui/text/PlatformParagraphStyle;)Landroidx/compose/ui/text/PlatformParagraphStyle; +Landroidx/compose/ui/text/PlatformParagraphStyle$Companion; +HSPLandroidx/compose/ui/text/PlatformParagraphStyle$Companion;->()V +HSPLandroidx/compose/ui/text/PlatformParagraphStyle$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/text/PlatformSpanStyle; +Landroidx/compose/ui/text/PlatformTextStyle; +HSPLandroidx/compose/ui/text/PlatformTextStyle;->()V +HSPLandroidx/compose/ui/text/PlatformTextStyle;->(Landroidx/compose/ui/text/PlatformSpanStyle;Landroidx/compose/ui/text/PlatformParagraphStyle;)V +HSPLandroidx/compose/ui/text/PlatformTextStyle;->(Z)V +HSPLandroidx/compose/ui/text/PlatformTextStyle;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/PlatformTextStyle;->getParagraphStyle()Landroidx/compose/ui/text/PlatformParagraphStyle; +HSPLandroidx/compose/ui/text/PlatformTextStyle;->getSpanStyle()Landroidx/compose/ui/text/PlatformSpanStyle; +Landroidx/compose/ui/text/SpanStyle; +HSPLandroidx/compose/ui/text/SpanStyle;->()V +HSPLandroidx/compose/ui/text/SpanStyle;->(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/PlatformSpanStyle;Landroidx/compose/ui/graphics/drawscope/DrawStyle;)V +HSPLandroidx/compose/ui/text/SpanStyle;->(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/PlatformSpanStyle;Landroidx/compose/ui/graphics/drawscope/DrawStyle;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/SpanStyle;->(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/PlatformSpanStyle;Landroidx/compose/ui/graphics/drawscope/DrawStyle;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/SpanStyle;->(Landroidx/compose/ui/text/style/TextForegroundStyle;JLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/PlatformSpanStyle;Landroidx/compose/ui/graphics/drawscope/DrawStyle;)V +HSPLandroidx/compose/ui/text/SpanStyle;->(Landroidx/compose/ui/text/style/TextForegroundStyle;JLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/PlatformSpanStyle;Landroidx/compose/ui/graphics/drawscope/DrawStyle;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/SpanStyle;->copy-GSF8kmg$default(Landroidx/compose/ui/text/SpanStyle;JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/PlatformSpanStyle;Landroidx/compose/ui/graphics/drawscope/DrawStyle;ILjava/lang/Object;)Landroidx/compose/ui/text/SpanStyle; +HSPLandroidx/compose/ui/text/SpanStyle;->copy-GSF8kmg(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/PlatformSpanStyle;Landroidx/compose/ui/graphics/drawscope/DrawStyle;)Landroidx/compose/ui/text/SpanStyle; +HSPLandroidx/compose/ui/text/SpanStyle;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/SpanStyle;->getAlpha()F +HSPLandroidx/compose/ui/text/SpanStyle;->getBackground-0d7_KjU()J +HSPLandroidx/compose/ui/text/SpanStyle;->getBaselineShift-5SSeXJ0()Landroidx/compose/ui/text/style/BaselineShift; +HSPLandroidx/compose/ui/text/SpanStyle;->getBrush()Landroidx/compose/ui/graphics/Brush; +HSPLandroidx/compose/ui/text/SpanStyle;->getColor-0d7_KjU()J +HSPLandroidx/compose/ui/text/SpanStyle;->getDrawStyle()Landroidx/compose/ui/graphics/drawscope/DrawStyle; +HSPLandroidx/compose/ui/text/SpanStyle;->getFontFamily()Landroidx/compose/ui/text/font/FontFamily; +HSPLandroidx/compose/ui/text/SpanStyle;->getFontFeatureSettings()Ljava/lang/String; +HSPLandroidx/compose/ui/text/SpanStyle;->getFontSize-XSAIIZE()J +HSPLandroidx/compose/ui/text/SpanStyle;->getFontStyle-4Lr2A7w()Landroidx/compose/ui/text/font/FontStyle; +HSPLandroidx/compose/ui/text/SpanStyle;->getFontSynthesis-ZQGJjVo()Landroidx/compose/ui/text/font/FontSynthesis; +HSPLandroidx/compose/ui/text/SpanStyle;->getFontWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/ui/text/SpanStyle;->getLetterSpacing-XSAIIZE()J +HSPLandroidx/compose/ui/text/SpanStyle;->getLocaleList()Landroidx/compose/ui/text/intl/LocaleList; +HSPLandroidx/compose/ui/text/SpanStyle;->getPlatformStyle()Landroidx/compose/ui/text/PlatformSpanStyle; +HSPLandroidx/compose/ui/text/SpanStyle;->getShadow()Landroidx/compose/ui/graphics/Shadow; +HSPLandroidx/compose/ui/text/SpanStyle;->getTextDecoration()Landroidx/compose/ui/text/style/TextDecoration; +HSPLandroidx/compose/ui/text/SpanStyle;->getTextForegroundStyle$ui_text_release()Landroidx/compose/ui/text/style/TextForegroundStyle; +HSPLandroidx/compose/ui/text/SpanStyle;->getTextGeometricTransform()Landroidx/compose/ui/text/style/TextGeometricTransform; +HSPLandroidx/compose/ui/text/SpanStyle;->hasSameLayoutAffectingAttributes$ui_text_release(Landroidx/compose/ui/text/SpanStyle;)Z +HSPLandroidx/compose/ui/text/SpanStyle;->hasSameNonLayoutAttributes$ui_text_release(Landroidx/compose/ui/text/SpanStyle;)Z +HSPLandroidx/compose/ui/text/SpanStyle;->merge(Landroidx/compose/ui/text/SpanStyle;)Landroidx/compose/ui/text/SpanStyle; +Landroidx/compose/ui/text/SpanStyleKt; +HSPLandroidx/compose/ui/text/SpanStyleKt;->()V +HSPLandroidx/compose/ui/text/SpanStyleKt;->fastMerge-dSHsh3o(Landroidx/compose/ui/text/SpanStyle;JLandroidx/compose/ui/graphics/Brush;FJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/PlatformSpanStyle;Landroidx/compose/ui/graphics/drawscope/DrawStyle;)Landroidx/compose/ui/text/SpanStyle; +HSPLandroidx/compose/ui/text/SpanStyleKt;->mergePlatformStyle(Landroidx/compose/ui/text/SpanStyle;Landroidx/compose/ui/text/PlatformSpanStyle;)Landroidx/compose/ui/text/PlatformSpanStyle; +HSPLandroidx/compose/ui/text/SpanStyleKt;->resolveSpanStyleDefaults(Landroidx/compose/ui/text/SpanStyle;)Landroidx/compose/ui/text/SpanStyle; +Landroidx/compose/ui/text/SpanStyleKt$resolveSpanStyleDefaults$1; +HSPLandroidx/compose/ui/text/SpanStyleKt$resolveSpanStyleDefaults$1;->()V +HSPLandroidx/compose/ui/text/SpanStyleKt$resolveSpanStyleDefaults$1;->()V +Landroidx/compose/ui/text/TextLayoutInput; +HSPLandroidx/compose/ui/text/TextLayoutInput;->()V +HSPLandroidx/compose/ui/text/TextLayoutInput;->(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Ljava/util/List;IZILandroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/text/font/Font$ResourceLoader;Landroidx/compose/ui/text/font/FontFamily$Resolver;J)V +HSPLandroidx/compose/ui/text/TextLayoutInput;->(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Ljava/util/List;IZILandroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/text/font/FontFamily$Resolver;J)V +HSPLandroidx/compose/ui/text/TextLayoutInput;->(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Ljava/util/List;IZILandroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/text/font/FontFamily$Resolver;JLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/TextLayoutInput;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/TextLayoutInput;->getConstraints-msEJaDk()J +HSPLandroidx/compose/ui/text/TextLayoutInput;->getDensity()Landroidx/compose/ui/unit/Density; +HSPLandroidx/compose/ui/text/TextLayoutInput;->getFontFamilyResolver()Landroidx/compose/ui/text/font/FontFamily$Resolver; +HSPLandroidx/compose/ui/text/TextLayoutInput;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/text/TextLayoutInput;->getMaxLines()I +HSPLandroidx/compose/ui/text/TextLayoutInput;->getOverflow-gIe3tQ8()I +HSPLandroidx/compose/ui/text/TextLayoutInput;->getPlaceholders()Ljava/util/List; +HSPLandroidx/compose/ui/text/TextLayoutInput;->getSoftWrap()Z +HSPLandroidx/compose/ui/text/TextLayoutInput;->getStyle()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/ui/text/TextLayoutInput;->getText()Landroidx/compose/ui/text/AnnotatedString; +Landroidx/compose/ui/text/TextLayoutResult; +HSPLandroidx/compose/ui/text/TextLayoutResult;->()V +HSPLandroidx/compose/ui/text/TextLayoutResult;->(Landroidx/compose/ui/text/TextLayoutInput;Landroidx/compose/ui/text/MultiParagraph;J)V +HSPLandroidx/compose/ui/text/TextLayoutResult;->(Landroidx/compose/ui/text/TextLayoutInput;Landroidx/compose/ui/text/MultiParagraph;JLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/TextLayoutResult;->copy-O0kMr_c(Landroidx/compose/ui/text/TextLayoutInput;J)Landroidx/compose/ui/text/TextLayoutResult; +HSPLandroidx/compose/ui/text/TextLayoutResult;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/TextLayoutResult;->getBoundingBox(I)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/text/TextLayoutResult;->getCursorRect(I)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/text/TextLayoutResult;->getDidOverflowHeight()Z +HSPLandroidx/compose/ui/text/TextLayoutResult;->getDidOverflowWidth()Z +HSPLandroidx/compose/ui/text/TextLayoutResult;->getFirstBaseline()F +HSPLandroidx/compose/ui/text/TextLayoutResult;->getHasVisualOverflow()Z +HSPLandroidx/compose/ui/text/TextLayoutResult;->getLastBaseline()F +HSPLandroidx/compose/ui/text/TextLayoutResult;->getLayoutInput()Landroidx/compose/ui/text/TextLayoutInput; +HSPLandroidx/compose/ui/text/TextLayoutResult;->getLineBottom(I)F +HSPLandroidx/compose/ui/text/TextLayoutResult;->getMultiParagraph()Landroidx/compose/ui/text/MultiParagraph; +HSPLandroidx/compose/ui/text/TextLayoutResult;->getSize-YbymL2g()J +Landroidx/compose/ui/text/TextPainter; +HSPLandroidx/compose/ui/text/TextPainter;->()V +HSPLandroidx/compose/ui/text/TextPainter;->()V +HSPLandroidx/compose/ui/text/TextPainter;->paint(Landroidx/compose/ui/graphics/Canvas;Landroidx/compose/ui/text/TextLayoutResult;)V +Landroidx/compose/ui/text/TextRange; +HSPLandroidx/compose/ui/text/TextRange;->()V +HSPLandroidx/compose/ui/text/TextRange;->(J)V +HSPLandroidx/compose/ui/text/TextRange;->access$getZero$cp()J +HSPLandroidx/compose/ui/text/TextRange;->box-impl(J)Landroidx/compose/ui/text/TextRange; +HSPLandroidx/compose/ui/text/TextRange;->constructor-impl(J)J +HSPLandroidx/compose/ui/text/TextRange;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/TextRange;->equals-impl(JLjava/lang/Object;)Z +HSPLandroidx/compose/ui/text/TextRange;->equals-impl0(JJ)Z +HSPLandroidx/compose/ui/text/TextRange;->getCollapsed-impl(J)Z +HSPLandroidx/compose/ui/text/TextRange;->getEnd-impl(J)I +HSPLandroidx/compose/ui/text/TextRange;->getMax-impl(J)I +HSPLandroidx/compose/ui/text/TextRange;->getMin-impl(J)I +HSPLandroidx/compose/ui/text/TextRange;->getStart-impl(J)I +HSPLandroidx/compose/ui/text/TextRange;->unbox-impl()J +Landroidx/compose/ui/text/TextRange$Companion; +HSPLandroidx/compose/ui/text/TextRange$Companion;->()V +HSPLandroidx/compose/ui/text/TextRange$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/TextRange$Companion;->getZero-d9O1mEE()J +Landroidx/compose/ui/text/TextRangeKt; +HSPLandroidx/compose/ui/text/TextRangeKt;->TextRange(I)J +HSPLandroidx/compose/ui/text/TextRangeKt;->TextRange(II)J +HSPLandroidx/compose/ui/text/TextRangeKt;->coerceIn-8ffj60Q(JII)J +HSPLandroidx/compose/ui/text/TextRangeKt;->packWithCheck(II)J +Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/ui/text/TextStyle;->()V +HSPLandroidx/compose/ui/text/TextStyle;->(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Landroidx/compose/ui/text/PlatformTextStyle;Landroidx/compose/ui/text/style/LineHeightStyle;Landroidx/compose/ui/text/style/LineBreak;Landroidx/compose/ui/text/style/Hyphens;Landroidx/compose/ui/text/style/TextMotion;)V +HSPLandroidx/compose/ui/text/TextStyle;->(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Landroidx/compose/ui/text/PlatformTextStyle;Landroidx/compose/ui/text/style/LineHeightStyle;Landroidx/compose/ui/text/style/LineBreak;Landroidx/compose/ui/text/style/Hyphens;Landroidx/compose/ui/text/style/TextMotion;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/TextStyle;->(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Landroidx/compose/ui/text/PlatformTextStyle;Landroidx/compose/ui/text/style/LineHeightStyle;Landroidx/compose/ui/text/style/LineBreak;Landroidx/compose/ui/text/style/Hyphens;Landroidx/compose/ui/text/style/TextMotion;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/TextStyle;->(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Landroidx/compose/ui/text/PlatformTextStyle;Landroidx/compose/ui/text/style/LineHeightStyle;Landroidx/compose/ui/text/style/LineBreak;Landroidx/compose/ui/text/style/Hyphens;)V +HSPLandroidx/compose/ui/text/TextStyle;->(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Landroidx/compose/ui/text/PlatformTextStyle;Landroidx/compose/ui/text/style/LineHeightStyle;Landroidx/compose/ui/text/style/LineBreak;Landroidx/compose/ui/text/style/Hyphens;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/TextStyle;->(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Landroidx/compose/ui/text/PlatformTextStyle;Landroidx/compose/ui/text/style/LineHeightStyle;Landroidx/compose/ui/text/style/LineBreak;Landroidx/compose/ui/text/style/Hyphens;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/TextStyle;->(Landroidx/compose/ui/text/SpanStyle;Landroidx/compose/ui/text/ParagraphStyle;)V +HSPLandroidx/compose/ui/text/TextStyle;->(Landroidx/compose/ui/text/SpanStyle;Landroidx/compose/ui/text/ParagraphStyle;Landroidx/compose/ui/text/PlatformTextStyle;)V +HSPLandroidx/compose/ui/text/TextStyle;->access$getDefault$cp()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/ui/text/TextStyle;->copy-CXVQc50$default(Landroidx/compose/ui/text/TextStyle;JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Landroidx/compose/ui/text/PlatformTextStyle;Landroidx/compose/ui/text/style/LineHeightStyle;Landroidx/compose/ui/text/style/LineBreak;Landroidx/compose/ui/text/style/Hyphens;ILjava/lang/Object;)Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/ui/text/TextStyle;->copy-CXVQc50(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Landroidx/compose/ui/text/PlatformTextStyle;Landroidx/compose/ui/text/style/LineHeightStyle;Landroidx/compose/ui/text/style/LineBreak;Landroidx/compose/ui/text/style/Hyphens;)Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/ui/text/TextStyle;->copy-v2rsoow$default(Landroidx/compose/ui/text/TextStyle;JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Landroidx/compose/ui/text/PlatformTextStyle;Landroidx/compose/ui/text/style/LineHeightStyle;Landroidx/compose/ui/text/style/LineBreak;Landroidx/compose/ui/text/style/Hyphens;Landroidx/compose/ui/text/style/TextMotion;ILjava/lang/Object;)Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/ui/text/TextStyle;->copy-v2rsoow(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Landroidx/compose/ui/text/PlatformTextStyle;Landroidx/compose/ui/text/style/LineHeightStyle;Landroidx/compose/ui/text/style/LineBreak;Landroidx/compose/ui/text/style/Hyphens;Landroidx/compose/ui/text/style/TextMotion;)Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/ui/text/TextStyle;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/TextStyle;->getAlpha()F +HSPLandroidx/compose/ui/text/TextStyle;->getBrush()Landroidx/compose/ui/graphics/Brush; +HSPLandroidx/compose/ui/text/TextStyle;->getColor-0d7_KjU()J +HSPLandroidx/compose/ui/text/TextStyle;->getDrawStyle()Landroidx/compose/ui/graphics/drawscope/DrawStyle; +HSPLandroidx/compose/ui/text/TextStyle;->getFontFamily()Landroidx/compose/ui/text/font/FontFamily; +HSPLandroidx/compose/ui/text/TextStyle;->getFontSize-XSAIIZE()J +HSPLandroidx/compose/ui/text/TextStyle;->getFontStyle-4Lr2A7w()Landroidx/compose/ui/text/font/FontStyle; +HSPLandroidx/compose/ui/text/TextStyle;->getFontSynthesis-ZQGJjVo()Landroidx/compose/ui/text/font/FontSynthesis; +HSPLandroidx/compose/ui/text/TextStyle;->getFontWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/ui/text/TextStyle;->getLetterSpacing-XSAIIZE()J +HSPLandroidx/compose/ui/text/TextStyle;->getLineBreak-LgCVezo()Landroidx/compose/ui/text/style/LineBreak; +HSPLandroidx/compose/ui/text/TextStyle;->getLineHeight-XSAIIZE()J +HSPLandroidx/compose/ui/text/TextStyle;->getLineHeightStyle()Landroidx/compose/ui/text/style/LineHeightStyle; +HSPLandroidx/compose/ui/text/TextStyle;->getLocaleList()Landroidx/compose/ui/text/intl/LocaleList; +HSPLandroidx/compose/ui/text/TextStyle;->getParagraphStyle$ui_text_release()Landroidx/compose/ui/text/ParagraphStyle; +HSPLandroidx/compose/ui/text/TextStyle;->getPlatformStyle()Landroidx/compose/ui/text/PlatformTextStyle; +HSPLandroidx/compose/ui/text/TextStyle;->getShadow()Landroidx/compose/ui/graphics/Shadow; +HSPLandroidx/compose/ui/text/TextStyle;->getSpanStyle$ui_text_release()Landroidx/compose/ui/text/SpanStyle; +HSPLandroidx/compose/ui/text/TextStyle;->getTextAlign-buA522U()Landroidx/compose/ui/text/style/TextAlign; +HSPLandroidx/compose/ui/text/TextStyle;->getTextDecoration()Landroidx/compose/ui/text/style/TextDecoration; +HSPLandroidx/compose/ui/text/TextStyle;->getTextDirection-mmuk1to()Landroidx/compose/ui/text/style/TextDirection; +HSPLandroidx/compose/ui/text/TextStyle;->getTextIndent()Landroidx/compose/ui/text/style/TextIndent; +HSPLandroidx/compose/ui/text/TextStyle;->getTextMotion()Landroidx/compose/ui/text/style/TextMotion; +HSPLandroidx/compose/ui/text/TextStyle;->hasSameDrawAffectingAttributes(Landroidx/compose/ui/text/TextStyle;)Z +HSPLandroidx/compose/ui/text/TextStyle;->hasSameLayoutAffectingAttributes(Landroidx/compose/ui/text/TextStyle;)Z +HSPLandroidx/compose/ui/text/TextStyle;->merge(Landroidx/compose/ui/text/ParagraphStyle;)Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/ui/text/TextStyle;->merge(Landroidx/compose/ui/text/TextStyle;)Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/ui/text/TextStyle;->toParagraphStyle()Landroidx/compose/ui/text/ParagraphStyle; +HSPLandroidx/compose/ui/text/TextStyle;->toSpanStyle()Landroidx/compose/ui/text/SpanStyle; +Landroidx/compose/ui/text/TextStyle$Companion; +HSPLandroidx/compose/ui/text/TextStyle$Companion;->()V +HSPLandroidx/compose/ui/text/TextStyle$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/TextStyle$Companion;->getDefault()Landroidx/compose/ui/text/TextStyle; +Landroidx/compose/ui/text/TextStyleKt; +HSPLandroidx/compose/ui/text/TextStyleKt;->access$createPlatformTextStyleInternal(Landroidx/compose/ui/text/PlatformSpanStyle;Landroidx/compose/ui/text/PlatformParagraphStyle;)Landroidx/compose/ui/text/PlatformTextStyle; +HSPLandroidx/compose/ui/text/TextStyleKt;->createPlatformTextStyleInternal(Landroidx/compose/ui/text/PlatformSpanStyle;Landroidx/compose/ui/text/PlatformParagraphStyle;)Landroidx/compose/ui/text/PlatformTextStyle; +HSPLandroidx/compose/ui/text/TextStyleKt;->resolveDefaults(Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/unit/LayoutDirection;)Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/ui/text/TextStyleKt;->resolveTextDirection-Yj3eThk(Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/text/style/TextDirection;)I +Landroidx/compose/ui/text/TextStyleKt$WhenMappings; +HSPLandroidx/compose/ui/text/TextStyleKt$WhenMappings;->()V +Landroidx/compose/ui/text/android/BoringLayoutFactory; +HSPLandroidx/compose/ui/text/android/BoringLayoutFactory;->()V +HSPLandroidx/compose/ui/text/android/BoringLayoutFactory;->()V +HSPLandroidx/compose/ui/text/android/BoringLayoutFactory;->create(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/BoringLayout$Metrics;Landroid/text/Layout$Alignment;ZZLandroid/text/TextUtils$TruncateAt;I)Landroid/text/BoringLayout; +HSPLandroidx/compose/ui/text/android/BoringLayoutFactory;->measure(Ljava/lang/CharSequence;Landroid/text/TextPaint;Landroid/text/TextDirectionHeuristic;)Landroid/text/BoringLayout$Metrics; +Landroidx/compose/ui/text/android/BoringLayoutFactory33; +HSPLandroidx/compose/ui/text/android/BoringLayoutFactory33;->()V +HSPLandroidx/compose/ui/text/android/BoringLayoutFactory33;->()V +HSPLandroidx/compose/ui/text/android/BoringLayoutFactory33;->create(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZZLandroid/text/TextUtils$TruncateAt;I)Landroid/text/BoringLayout; +HSPLandroidx/compose/ui/text/android/BoringLayoutFactory33;->isBoring(Ljava/lang/CharSequence;Landroid/text/TextPaint;Landroid/text/TextDirectionHeuristic;)Landroid/text/BoringLayout$Metrics; +Landroidx/compose/ui/text/android/CharSequenceCharacterIterator; +HSPLandroidx/compose/ui/text/android/CharSequenceCharacterIterator;->(Ljava/lang/CharSequence;II)V +HSPLandroidx/compose/ui/text/android/CharSequenceCharacterIterator;->current()C +HSPLandroidx/compose/ui/text/android/CharSequenceCharacterIterator;->first()C +HSPLandroidx/compose/ui/text/android/CharSequenceCharacterIterator;->getBeginIndex()I +HSPLandroidx/compose/ui/text/android/CharSequenceCharacterIterator;->getEndIndex()I +HSPLandroidx/compose/ui/text/android/CharSequenceCharacterIterator;->getIndex()I +HSPLandroidx/compose/ui/text/android/CharSequenceCharacterIterator;->next()C +HSPLandroidx/compose/ui/text/android/CharSequenceCharacterIterator;->setIndex(I)C +Landroidx/compose/ui/text/android/LayoutCompatKt; +HSPLandroidx/compose/ui/text/android/LayoutCompatKt;->getLineForOffset(Landroid/text/Layout;IZ)I +Landroidx/compose/ui/text/android/LayoutHelper; +HSPLandroidx/compose/ui/text/android/LayoutHelper;->(Landroid/text/Layout;)V +HSPLandroidx/compose/ui/text/android/LayoutHelper;->getDownstreamHorizontal(IZ)F +HSPLandroidx/compose/ui/text/android/LayoutHelper;->getHorizontalPosition(IZZ)F +Landroidx/compose/ui/text/android/LayoutIntrinsics; +HSPLandroidx/compose/ui/text/android/LayoutIntrinsics;->(Ljava/lang/CharSequence;Landroid/text/TextPaint;I)V +HSPLandroidx/compose/ui/text/android/LayoutIntrinsics;->getBoringMetrics()Landroid/text/BoringLayout$Metrics; +HSPLandroidx/compose/ui/text/android/LayoutIntrinsics;->getMaxIntrinsicWidth()F +HSPLandroidx/compose/ui/text/android/LayoutIntrinsics;->getMinIntrinsicWidth()F +Landroidx/compose/ui/text/android/LayoutIntrinsicsKt; +HSPLandroidx/compose/ui/text/android/LayoutIntrinsicsKt;->$r8$lambda$DtXonrOPJPXM49GdHH_fq-Et3g0(Lkotlin/Pair;Lkotlin/Pair;)I +HSPLandroidx/compose/ui/text/android/LayoutIntrinsicsKt;->access$shouldIncreaseMaxIntrinsic(FLjava/lang/CharSequence;Landroid/text/TextPaint;)Z +HSPLandroidx/compose/ui/text/android/LayoutIntrinsicsKt;->minIntrinsicWidth$lambda$0(Lkotlin/Pair;Lkotlin/Pair;)I +HSPLandroidx/compose/ui/text/android/LayoutIntrinsicsKt;->minIntrinsicWidth(Ljava/lang/CharSequence;Landroid/text/TextPaint;)F +HSPLandroidx/compose/ui/text/android/LayoutIntrinsicsKt;->shouldIncreaseMaxIntrinsic(FLjava/lang/CharSequence;Landroid/text/TextPaint;)Z +Landroidx/compose/ui/text/android/LayoutIntrinsicsKt$$ExternalSyntheticLambda0; +HSPLandroidx/compose/ui/text/android/LayoutIntrinsicsKt$$ExternalSyntheticLambda0;->()V +HSPLandroidx/compose/ui/text/android/LayoutIntrinsicsKt$$ExternalSyntheticLambda0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +Landroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0; +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/graphics/RenderNode;)V +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/graphics/RenderNode;)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/graphics/RenderNode;F)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/graphics/RenderNode;I)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/graphics/RenderNode;Landroid/graphics/Matrix;)V +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/graphics/RenderNode;Z)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/graphics/text/LineBreakConfig$Builder;I)Landroid/graphics/text/LineBreakConfig$Builder; +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/view/WindowInsetsController;I)V +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/view/WindowInsetsController;Landroid/view/WindowInsetsController$OnControllableInsetsChangedListener;)V +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$10(Landroid/graphics/RenderNode;F)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$11(Landroid/graphics/RenderNode;F)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$2(Landroid/graphics/RenderNode;)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$2(Landroid/graphics/RenderNode;F)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$2(Landroid/graphics/RenderNode;I)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$2(Landroid/graphics/RenderNode;Z)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$3(Landroid/graphics/RenderNode;)I +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$3(Landroid/graphics/RenderNode;F)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$3(Landroid/graphics/RenderNode;I)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$4(Landroid/graphics/RenderNode;)I +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$4(Landroid/graphics/RenderNode;F)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$5(Landroid/graphics/RenderNode;)F +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$5(Landroid/graphics/RenderNode;)I +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$5(Landroid/graphics/RenderNode;F)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$6(Landroid/graphics/RenderNode;F)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$7(Landroid/graphics/RenderNode;F)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$8(Landroid/graphics/RenderNode;F)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$9(Landroid/graphics/RenderNode;)F +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m$9(Landroid/graphics/RenderNode;F)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m()I +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m()Landroid/graphics/text/LineBreakConfig$Builder; +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m()V +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(ILandroid/graphics/BlendMode;)Landroid/graphics/BlendModeColorFilter; +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/content/res/Configuration;)I +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/Canvas;Landroid/graphics/RenderNode;)V +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/Paint;Landroid/graphics/BlendMode;)V +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/RenderNode;)I +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/RenderNode;)Landroid/graphics/RecordingCanvas; +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/RenderNode;)V +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/RenderNode;)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/RenderNode;F)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/RenderNode;I)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/RenderNode;IIII)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/RenderNode;Landroid/graphics/Outline;)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/RenderNode;Landroid/graphics/RenderEffect;)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/RenderNode;Z)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/RenderNode;ZLandroid/graphics/Paint;)Z +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/text/LineBreakConfig$Builder;)Landroid/graphics/text/LineBreakConfig; +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/text/LineBreakConfig$Builder;I)Landroid/graphics/text/LineBreakConfig$Builder; +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/text/StaticLayout$Builder;Landroid/graphics/text/LineBreakConfig;)Landroid/text/StaticLayout$Builder; +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/text/StaticLayout$Builder;Z)Landroid/text/StaticLayout$Builder; +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/View;)Ljava/util/Map; +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/View;Landroid/graphics/Matrix;)V +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/View;Z)V +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/WindowInsetsController;I)V +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/WindowInsetsController;Landroid/view/WindowInsetsController$OnControllableInsetsChangedListener;)V +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;IZ)Landroid/text/BoringLayout; +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Ljava/lang/CharSequence;Landroid/text/TextPaint;Landroid/text/TextDirectionHeuristic;ZLandroid/text/BoringLayout$Metrics;)Landroid/text/BoringLayout$Metrics; +HSPLandroidx/compose/ui/text/android/Paint29$$ExternalSyntheticApiModelOutline0;->m(Ljava/lang/String;)Landroid/graphics/RenderNode; +Landroidx/compose/ui/text/android/SpannedExtensionsKt; +HSPLandroidx/compose/ui/text/android/SpannedExtensionsKt;->hasSpan(Landroid/text/Spanned;Ljava/lang/Class;)Z +Landroidx/compose/ui/text/android/StaticLayoutFactory; +HSPLandroidx/compose/ui/text/android/StaticLayoutFactory;->()V +HSPLandroidx/compose/ui/text/android/StaticLayoutFactory;->()V +HSPLandroidx/compose/ui/text/android/StaticLayoutFactory;->create(Ljava/lang/CharSequence;IILandroid/text/TextPaint;ILandroid/text/TextDirectionHeuristic;Landroid/text/Layout$Alignment;ILandroid/text/TextUtils$TruncateAt;IFFIZZIIII[I[I)Landroid/text/StaticLayout; +Landroidx/compose/ui/text/android/StaticLayoutFactory23; +HSPLandroidx/compose/ui/text/android/StaticLayoutFactory23;->()V +HSPLandroidx/compose/ui/text/android/StaticLayoutFactory23;->create(Landroidx/compose/ui/text/android/StaticLayoutParams;)Landroid/text/StaticLayout; +Landroidx/compose/ui/text/android/StaticLayoutFactory26; +HSPLandroidx/compose/ui/text/android/StaticLayoutFactory26;->()V +HSPLandroidx/compose/ui/text/android/StaticLayoutFactory26;->()V +HSPLandroidx/compose/ui/text/android/StaticLayoutFactory26;->setJustificationMode(Landroid/text/StaticLayout$Builder;I)V +Landroidx/compose/ui/text/android/StaticLayoutFactory28; +HSPLandroidx/compose/ui/text/android/StaticLayoutFactory28;->()V +HSPLandroidx/compose/ui/text/android/StaticLayoutFactory28;->()V +HSPLandroidx/compose/ui/text/android/StaticLayoutFactory28;->setUseLineSpacingFromFallbacks(Landroid/text/StaticLayout$Builder;Z)V +Landroidx/compose/ui/text/android/StaticLayoutFactory33; +HSPLandroidx/compose/ui/text/android/StaticLayoutFactory33;->()V +HSPLandroidx/compose/ui/text/android/StaticLayoutFactory33;->()V +HSPLandroidx/compose/ui/text/android/StaticLayoutFactory33;->setLineBreakConfig(Landroid/text/StaticLayout$Builder;II)V +Landroidx/compose/ui/text/android/StaticLayoutFactoryImpl; +Landroidx/compose/ui/text/android/StaticLayoutParams; +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->(Ljava/lang/CharSequence;IILandroid/text/TextPaint;ILandroid/text/TextDirectionHeuristic;Landroid/text/Layout$Alignment;ILandroid/text/TextUtils$TruncateAt;IFFIZZIIII[I[I)V +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getAlignment()Landroid/text/Layout$Alignment; +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getBreakStrategy()I +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getEllipsize()Landroid/text/TextUtils$TruncateAt; +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getEllipsizedWidth()I +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getEnd()I +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getHyphenationFrequency()I +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getIncludePadding()Z +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getJustificationMode()I +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getLeftIndents()[I +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getLineBreakStyle()I +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getLineBreakWordStyle()I +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getLineSpacingExtra()F +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getLineSpacingMultiplier()F +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getMaxLines()I +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getPaint()Landroid/text/TextPaint; +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getRightIndents()[I +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getStart()I +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getText()Ljava/lang/CharSequence; +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getTextDir()Landroid/text/TextDirectionHeuristic; +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getUseFallbackLineSpacing()Z +HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getWidth()I +Landroidx/compose/ui/text/android/TextAlignmentAdapter; +HSPLandroidx/compose/ui/text/android/TextAlignmentAdapter;->()V +HSPLandroidx/compose/ui/text/android/TextAlignmentAdapter;->()V +HSPLandroidx/compose/ui/text/android/TextAlignmentAdapter;->get(I)Landroid/text/Layout$Alignment; +Landroidx/compose/ui/text/android/TextAndroidCanvas; +HSPLandroidx/compose/ui/text/android/TextAndroidCanvas;->()V +HSPLandroidx/compose/ui/text/android/TextAndroidCanvas;->drawText(Ljava/lang/String;FFLandroid/graphics/Paint;)V +HSPLandroidx/compose/ui/text/android/TextAndroidCanvas;->drawTextRun(Ljava/lang/CharSequence;IIIIFFZLandroid/graphics/Paint;)V +HSPLandroidx/compose/ui/text/android/TextAndroidCanvas;->getClipBounds(Landroid/graphics/Rect;)Z +HSPLandroidx/compose/ui/text/android/TextAndroidCanvas;->setCanvas(Landroid/graphics/Canvas;)V +Landroidx/compose/ui/text/android/TextLayout; +HSPLandroidx/compose/ui/text/android/TextLayout;->(Ljava/lang/CharSequence;FLandroid/text/TextPaint;ILandroid/text/TextUtils$TruncateAt;IFFZZIIIIII[I[ILandroidx/compose/ui/text/android/LayoutIntrinsics;)V +HSPLandroidx/compose/ui/text/android/TextLayout;->(Ljava/lang/CharSequence;FLandroid/text/TextPaint;ILandroid/text/TextUtils$TruncateAt;IFFZZIIIIII[I[ILandroidx/compose/ui/text/android/LayoutIntrinsics;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/android/TextLayout;->getBoundingBox(I)Landroid/graphics/RectF; +HSPLandroidx/compose/ui/text/android/TextLayout;->getDidExceedMaxLines()Z +HSPLandroidx/compose/ui/text/android/TextLayout;->getHeight()I +HSPLandroidx/compose/ui/text/android/TextLayout;->getHorizontalPadding(I)F +HSPLandroidx/compose/ui/text/android/TextLayout;->getIncludePadding()Z +HSPLandroidx/compose/ui/text/android/TextLayout;->getLayout()Landroid/text/Layout; +HSPLandroidx/compose/ui/text/android/TextLayout;->getLayoutHelper()Landroidx/compose/ui/text/android/LayoutHelper; +HSPLandroidx/compose/ui/text/android/TextLayout;->getLineBaseline(I)F +HSPLandroidx/compose/ui/text/android/TextLayout;->getLineBottom(I)F +HSPLandroidx/compose/ui/text/android/TextLayout;->getLineCount()I +HSPLandroidx/compose/ui/text/android/TextLayout;->getLineForOffset(I)I +HSPLandroidx/compose/ui/text/android/TextLayout;->getLineTop(I)F +HSPLandroidx/compose/ui/text/android/TextLayout;->getParagraphDirection(I)I +HSPLandroidx/compose/ui/text/android/TextLayout;->getPrimaryHorizontal$default(Landroidx/compose/ui/text/android/TextLayout;IZILjava/lang/Object;)F +HSPLandroidx/compose/ui/text/android/TextLayout;->getPrimaryHorizontal(IZ)F +HSPLandroidx/compose/ui/text/android/TextLayout;->getText()Ljava/lang/CharSequence; +HSPLandroidx/compose/ui/text/android/TextLayout;->paint(Landroid/graphics/Canvas;)V +Landroidx/compose/ui/text/android/TextLayout$layoutHelper$2; +HSPLandroidx/compose/ui/text/android/TextLayout$layoutHelper$2;->(Landroidx/compose/ui/text/android/TextLayout;)V +HSPLandroidx/compose/ui/text/android/TextLayout$layoutHelper$2;->invoke()Landroidx/compose/ui/text/android/LayoutHelper; +HSPLandroidx/compose/ui/text/android/TextLayout$layoutHelper$2;->invoke()Ljava/lang/Object; +Landroidx/compose/ui/text/android/TextLayoutKt; +HSPLandroidx/compose/ui/text/android/TextLayoutKt;->()V +HSPLandroidx/compose/ui/text/android/TextLayoutKt;->VerticalPaddings(II)J +HSPLandroidx/compose/ui/text/android/TextLayoutKt;->access$getLastLineMetrics(Landroidx/compose/ui/text/android/TextLayout;Landroid/text/TextPaint;Landroid/text/TextDirectionHeuristic;[Landroidx/compose/ui/text/android/style/LineHeightStyleSpan;)Landroid/graphics/Paint$FontMetricsInt; +HSPLandroidx/compose/ui/text/android/TextLayoutKt;->access$getLineHeightPaddings(Landroidx/compose/ui/text/android/TextLayout;[Landroidx/compose/ui/text/android/style/LineHeightStyleSpan;)J +HSPLandroidx/compose/ui/text/android/TextLayoutKt;->access$getLineHeightSpans(Landroidx/compose/ui/text/android/TextLayout;)[Landroidx/compose/ui/text/android/style/LineHeightStyleSpan; +HSPLandroidx/compose/ui/text/android/TextLayoutKt;->access$getSharedTextAndroidCanvas$p()Landroidx/compose/ui/text/android/TextAndroidCanvas; +HSPLandroidx/compose/ui/text/android/TextLayoutKt;->access$getVerticalPaddings(Landroidx/compose/ui/text/android/TextLayout;)J +HSPLandroidx/compose/ui/text/android/TextLayoutKt;->getLastLineMetrics(Landroidx/compose/ui/text/android/TextLayout;Landroid/text/TextPaint;Landroid/text/TextDirectionHeuristic;[Landroidx/compose/ui/text/android/style/LineHeightStyleSpan;)Landroid/graphics/Paint$FontMetricsInt; +HSPLandroidx/compose/ui/text/android/TextLayoutKt;->getLineHeightPaddings(Landroidx/compose/ui/text/android/TextLayout;[Landroidx/compose/ui/text/android/style/LineHeightStyleSpan;)J +HSPLandroidx/compose/ui/text/android/TextLayoutKt;->getLineHeightSpans(Landroidx/compose/ui/text/android/TextLayout;)[Landroidx/compose/ui/text/android/style/LineHeightStyleSpan; +HSPLandroidx/compose/ui/text/android/TextLayoutKt;->getTextDirectionHeuristic(I)Landroid/text/TextDirectionHeuristic; +HSPLandroidx/compose/ui/text/android/TextLayoutKt;->getVerticalPaddings(Landroidx/compose/ui/text/android/TextLayout;)J +HSPLandroidx/compose/ui/text/android/TextLayoutKt;->isLineEllipsized(Landroid/text/Layout;I)Z +Landroidx/compose/ui/text/android/VerticalPaddings; +HSPLandroidx/compose/ui/text/android/VerticalPaddings;->constructor-impl(J)J +HSPLandroidx/compose/ui/text/android/VerticalPaddings;->getBottomPadding-impl(J)I +HSPLandroidx/compose/ui/text/android/VerticalPaddings;->getTopPadding-impl(J)I +Landroidx/compose/ui/text/android/style/BaselineShiftSpan; +Landroidx/compose/ui/text/android/style/IndentationFixSpanKt; +HSPLandroidx/compose/ui/text/android/style/IndentationFixSpanKt;->getEllipsizedLeftPadding$default(Landroid/text/Layout;ILandroid/graphics/Paint;ILjava/lang/Object;)F +HSPLandroidx/compose/ui/text/android/style/IndentationFixSpanKt;->getEllipsizedLeftPadding(Landroid/text/Layout;ILandroid/graphics/Paint;)F +HSPLandroidx/compose/ui/text/android/style/IndentationFixSpanKt;->getEllipsizedRightPadding$default(Landroid/text/Layout;ILandroid/graphics/Paint;ILjava/lang/Object;)F +HSPLandroidx/compose/ui/text/android/style/IndentationFixSpanKt;->getEllipsizedRightPadding(Landroid/text/Layout;ILandroid/graphics/Paint;)F +Landroidx/compose/ui/text/android/style/LetterSpacingSpanEm; +Landroidx/compose/ui/text/android/style/LetterSpacingSpanPx; +Landroidx/compose/ui/text/android/style/LineHeightSpan; +HSPLandroidx/compose/ui/text/android/style/LineHeightSpan;->(F)V +HSPLandroidx/compose/ui/text/android/style/LineHeightSpan;->chooseHeight(Ljava/lang/CharSequence;IIIILandroid/graphics/Paint$FontMetricsInt;)V +Landroidx/compose/ui/text/android/style/LineHeightStyleSpan; +Landroidx/compose/ui/text/android/style/LineHeightStyleSpanKt; +HSPLandroidx/compose/ui/text/android/style/LineHeightStyleSpanKt;->lineHeight(Landroid/graphics/Paint$FontMetricsInt;)I +Landroidx/compose/ui/text/android/style/PlaceholderSpan; +Landroidx/compose/ui/text/android/style/TypefaceSpan; +HSPLandroidx/compose/ui/text/android/style/TypefaceSpan;->(Landroid/graphics/Typeface;)V +HSPLandroidx/compose/ui/text/android/style/TypefaceSpan;->updateDrawState(Landroid/text/TextPaint;)V +HSPLandroidx/compose/ui/text/android/style/TypefaceSpan;->updateMeasureState(Landroid/text/TextPaint;)V +HSPLandroidx/compose/ui/text/android/style/TypefaceSpan;->updateTypeface(Landroid/graphics/Paint;)V +Landroidx/compose/ui/text/caches/ContainerHelpersKt; +HSPLandroidx/compose/ui/text/caches/ContainerHelpersKt;->()V +Landroidx/compose/ui/text/caches/LruCache; +HSPLandroidx/compose/ui/text/caches/LruCache;->(I)V +HSPLandroidx/compose/ui/text/caches/LruCache;->access$getMonitor$p(Landroidx/compose/ui/text/caches/LruCache;)Landroidx/compose/ui/text/platform/SynchronizedObject; +HSPLandroidx/compose/ui/text/caches/LruCache;->create(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/text/caches/LruCache;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/text/caches/LruCache;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/text/caches/LruCache;->safeSizeOf(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLandroidx/compose/ui/text/caches/LruCache;->size()I +HSPLandroidx/compose/ui/text/caches/LruCache;->sizeOf(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLandroidx/compose/ui/text/caches/LruCache;->trimToSize(I)V +Landroidx/compose/ui/text/caches/SimpleArrayMap; +HSPLandroidx/compose/ui/text/caches/SimpleArrayMap;->(I)V +HSPLandroidx/compose/ui/text/caches/SimpleArrayMap;->(IILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/caches/SimpleArrayMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/text/caches/SimpleArrayMap;->indexOf(Ljava/lang/Object;I)I +HSPLandroidx/compose/ui/text/caches/SimpleArrayMap;->indexOfKey(Ljava/lang/Object;)I +Landroidx/compose/ui/text/font/AndroidFont; +Landroidx/compose/ui/text/font/AndroidFontLoader; +HSPLandroidx/compose/ui/text/font/AndroidFontLoader;->(Landroid/content/Context;)V +HSPLandroidx/compose/ui/text/font/AndroidFontLoader;->getCacheKey()Ljava/lang/Object; +HSPLandroidx/compose/ui/text/font/AndroidFontLoader;->loadBlocking(Landroidx/compose/ui/text/font/Font;)Landroid/graphics/Typeface; +HSPLandroidx/compose/ui/text/font/AndroidFontLoader;->loadBlocking(Landroidx/compose/ui/text/font/Font;)Ljava/lang/Object; +Landroidx/compose/ui/text/font/AndroidFontLoader_androidKt; +HSPLandroidx/compose/ui/text/font/AndroidFontLoader_androidKt;->access$load(Landroidx/compose/ui/text/font/ResourceFont;Landroid/content/Context;)Landroid/graphics/Typeface; +HSPLandroidx/compose/ui/text/font/AndroidFontLoader_androidKt;->load(Landroidx/compose/ui/text/font/ResourceFont;Landroid/content/Context;)Landroid/graphics/Typeface; +Landroidx/compose/ui/text/font/AndroidFontResolveInterceptor; +HSPLandroidx/compose/ui/text/font/AndroidFontResolveInterceptor;->(I)V +HSPLandroidx/compose/ui/text/font/AndroidFontResolveInterceptor;->interceptFontWeight(Landroidx/compose/ui/text/font/FontWeight;)Landroidx/compose/ui/text/font/FontWeight; +Landroidx/compose/ui/text/font/AndroidFontResolveInterceptor_androidKt; +HSPLandroidx/compose/ui/text/font/AndroidFontResolveInterceptor_androidKt;->AndroidFontResolveInterceptor(Landroid/content/Context;)Landroidx/compose/ui/text/font/AndroidFontResolveInterceptor; +Landroidx/compose/ui/text/font/AndroidFontUtils_androidKt; +HSPLandroidx/compose/ui/text/font/AndroidFontUtils_androidKt;->getAndroidBold(Landroidx/compose/ui/text/font/FontWeight$Companion;)Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/ui/text/font/AndroidFontUtils_androidKt;->getAndroidTypefaceStyle(ZZ)I +HSPLandroidx/compose/ui/text/font/AndroidFontUtils_androidKt;->getAndroidTypefaceStyle-FO1MlWM(Landroidx/compose/ui/text/font/FontWeight;I)I +Landroidx/compose/ui/text/font/AsyncTypefaceCache; +HSPLandroidx/compose/ui/text/font/AsyncTypefaceCache;->()V +HSPLandroidx/compose/ui/text/font/AsyncTypefaceCache;->access$getCacheLock$p(Landroidx/compose/ui/text/font/AsyncTypefaceCache;)Landroidx/compose/ui/text/platform/SynchronizedObject; +HSPLandroidx/compose/ui/text/font/AsyncTypefaceCache;->access$getPermanentCache$p(Landroidx/compose/ui/text/font/AsyncTypefaceCache;)Landroidx/compose/ui/text/caches/SimpleArrayMap; +HSPLandroidx/compose/ui/text/font/AsyncTypefaceCache;->access$getResultCache$p(Landroidx/compose/ui/text/font/AsyncTypefaceCache;)Landroidx/compose/ui/text/caches/LruCache; +HSPLandroidx/compose/ui/text/font/AsyncTypefaceCache;->put$default(Landroidx/compose/ui/text/font/AsyncTypefaceCache;Landroidx/compose/ui/text/font/Font;Landroidx/compose/ui/text/font/PlatformFontLoader;Ljava/lang/Object;ZILjava/lang/Object;)V +HSPLandroidx/compose/ui/text/font/AsyncTypefaceCache;->put(Landroidx/compose/ui/text/font/Font;Landroidx/compose/ui/text/font/PlatformFontLoader;Ljava/lang/Object;Z)V +Landroidx/compose/ui/text/font/AsyncTypefaceCache$AsyncTypefaceResult; +HSPLandroidx/compose/ui/text/font/AsyncTypefaceCache$AsyncTypefaceResult;->(Ljava/lang/Object;)V +HSPLandroidx/compose/ui/text/font/AsyncTypefaceCache$AsyncTypefaceResult;->box-impl(Ljava/lang/Object;)Landroidx/compose/ui/text/font/AsyncTypefaceCache$AsyncTypefaceResult; +HSPLandroidx/compose/ui/text/font/AsyncTypefaceCache$AsyncTypefaceResult;->constructor-impl(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/text/font/AsyncTypefaceCache$Key; +HSPLandroidx/compose/ui/text/font/AsyncTypefaceCache$Key;->(Landroidx/compose/ui/text/font/Font;Ljava/lang/Object;)V +HSPLandroidx/compose/ui/text/font/AsyncTypefaceCache$Key;->hashCode()I +Landroidx/compose/ui/text/font/DefaultFontFamily; +HSPLandroidx/compose/ui/text/font/DefaultFontFamily;->()V +Landroidx/compose/ui/text/font/FileBasedFontFamily; +HSPLandroidx/compose/ui/text/font/FileBasedFontFamily;->()V +HSPLandroidx/compose/ui/text/font/FileBasedFontFamily;->()V +HSPLandroidx/compose/ui/text/font/FileBasedFontFamily;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/text/font/Font; +HSPLandroidx/compose/ui/text/font/Font;->()V +Landroidx/compose/ui/text/font/Font$Companion; +HSPLandroidx/compose/ui/text/font/Font$Companion;->()V +HSPLandroidx/compose/ui/text/font/Font$Companion;->()V +Landroidx/compose/ui/text/font/Font$ResourceLoader; +Landroidx/compose/ui/text/font/FontFamily; +HSPLandroidx/compose/ui/text/font/FontFamily;->()V +HSPLandroidx/compose/ui/text/font/FontFamily;->(Z)V +HSPLandroidx/compose/ui/text/font/FontFamily;->(ZLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/font/FontFamily;->access$getDefault$cp()Landroidx/compose/ui/text/font/SystemFontFamily; +HSPLandroidx/compose/ui/text/font/FontFamily;->access$getSansSerif$cp()Landroidx/compose/ui/text/font/GenericFontFamily; +Landroidx/compose/ui/text/font/FontFamily$Companion; +HSPLandroidx/compose/ui/text/font/FontFamily$Companion;->()V +HSPLandroidx/compose/ui/text/font/FontFamily$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/font/FontFamily$Companion;->getDefault()Landroidx/compose/ui/text/font/SystemFontFamily; +HSPLandroidx/compose/ui/text/font/FontFamily$Companion;->getSansSerif()Landroidx/compose/ui/text/font/GenericFontFamily; +Landroidx/compose/ui/text/font/FontFamily$Resolver; +Landroidx/compose/ui/text/font/FontFamilyKt; +HSPLandroidx/compose/ui/text/font/FontFamilyKt;->FontFamily([Landroidx/compose/ui/text/font/Font;)Landroidx/compose/ui/text/font/FontFamily; +Landroidx/compose/ui/text/font/FontFamilyResolverImpl; +HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl;->(Landroidx/compose/ui/text/font/PlatformFontLoader;Landroidx/compose/ui/text/font/PlatformResolveInterceptor;Landroidx/compose/ui/text/font/TypefaceRequestCache;Landroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter;Landroidx/compose/ui/text/font/PlatformFontFamilyTypefaceAdapter;)V +HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl;->(Landroidx/compose/ui/text/font/PlatformFontLoader;Landroidx/compose/ui/text/font/PlatformResolveInterceptor;Landroidx/compose/ui/text/font/TypefaceRequestCache;Landroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter;Landroidx/compose/ui/text/font/PlatformFontFamilyTypefaceAdapter;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl;->access$getCreateDefaultTypeface$p(Landroidx/compose/ui/text/font/FontFamilyResolverImpl;)Lkotlin/jvm/functions/Function1; +HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl;->access$getFontListFontFamilyTypefaceAdapter$p(Landroidx/compose/ui/text/font/FontFamilyResolverImpl;)Landroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter; +HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl;->access$getPlatformFamilyTypefaceAdapter$p(Landroidx/compose/ui/text/font/FontFamilyResolverImpl;)Landroidx/compose/ui/text/font/PlatformFontFamilyTypefaceAdapter; +HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl;->getPlatformFontLoader$ui_text_release()Landroidx/compose/ui/text/font/PlatformFontLoader; +HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl;->resolve(Landroidx/compose/ui/text/font/TypefaceRequest;)Landroidx/compose/runtime/State; +HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl;->resolve-DPcqOEQ(Landroidx/compose/ui/text/font/FontFamily;Landroidx/compose/ui/text/font/FontWeight;II)Landroidx/compose/runtime/State; +Landroidx/compose/ui/text/font/FontFamilyResolverImpl$createDefaultTypeface$1; +HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl$createDefaultTypeface$1;->(Landroidx/compose/ui/text/font/FontFamilyResolverImpl;)V +Landroidx/compose/ui/text/font/FontFamilyResolverImpl$resolve$result$1; +HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl$resolve$result$1;->(Landroidx/compose/ui/text/font/FontFamilyResolverImpl;Landroidx/compose/ui/text/font/TypefaceRequest;)V +HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl$resolve$result$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl$resolve$result$1;->invoke(Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/text/font/TypefaceResult; +Landroidx/compose/ui/text/font/FontFamilyResolverKt; +HSPLandroidx/compose/ui/text/font/FontFamilyResolverKt;->()V +HSPLandroidx/compose/ui/text/font/FontFamilyResolverKt;->getGlobalAsyncTypefaceCache()Landroidx/compose/ui/text/font/AsyncTypefaceCache; +HSPLandroidx/compose/ui/text/font/FontFamilyResolverKt;->getGlobalTypefaceRequestCache()Landroidx/compose/ui/text/font/TypefaceRequestCache; +Landroidx/compose/ui/text/font/FontFamilyResolver_androidKt; +HSPLandroidx/compose/ui/text/font/FontFamilyResolver_androidKt;->createFontFamilyResolver(Landroid/content/Context;)Landroidx/compose/ui/text/font/FontFamily$Resolver; +Landroidx/compose/ui/text/font/FontFamilyTypefaceAdapter; +Landroidx/compose/ui/text/font/FontKt; +HSPLandroidx/compose/ui/text/font/FontKt;->Font-YpTlLL0$default(ILandroidx/compose/ui/text/font/FontWeight;IIILjava/lang/Object;)Landroidx/compose/ui/text/font/Font; +HSPLandroidx/compose/ui/text/font/FontKt;->Font-YpTlLL0(ILandroidx/compose/ui/text/font/FontWeight;II)Landroidx/compose/ui/text/font/Font; +Landroidx/compose/ui/text/font/FontListFontFamily; +HSPLandroidx/compose/ui/text/font/FontListFontFamily;->()V +HSPLandroidx/compose/ui/text/font/FontListFontFamily;->(Ljava/util/List;)V +HSPLandroidx/compose/ui/text/font/FontListFontFamily;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/font/FontListFontFamily;->getFonts()Ljava/util/List; +HSPLandroidx/compose/ui/text/font/FontListFontFamily;->hashCode()I +Landroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter; +HSPLandroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter;->()V +HSPLandroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter;->(Landroidx/compose/ui/text/font/AsyncTypefaceCache;Lkotlin/coroutines/CoroutineContext;)V +HSPLandroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter;->(Landroidx/compose/ui/text/font/AsyncTypefaceCache;Lkotlin/coroutines/CoroutineContext;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter;->resolve(Landroidx/compose/ui/text/font/TypefaceRequest;Landroidx/compose/ui/text/font/PlatformFontLoader;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/text/font/TypefaceResult; +Landroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter$Companion; +HSPLandroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter$Companion;->()V +HSPLandroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter$special$$inlined$CoroutineExceptionHandler$1; +HSPLandroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter$special$$inlined$CoroutineExceptionHandler$1;->(Lkotlinx/coroutines/CoroutineExceptionHandler$Key;)V +Landroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapterKt; +HSPLandroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapterKt;->access$firstImmediatelyAvailable(Ljava/util/List;Landroidx/compose/ui/text/font/TypefaceRequest;Landroidx/compose/ui/text/font/AsyncTypefaceCache;Landroidx/compose/ui/text/font/PlatformFontLoader;Lkotlin/jvm/functions/Function1;)Lkotlin/Pair; +HSPLandroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapterKt;->firstImmediatelyAvailable(Ljava/util/List;Landroidx/compose/ui/text/font/TypefaceRequest;Landroidx/compose/ui/text/font/AsyncTypefaceCache;Landroidx/compose/ui/text/font/PlatformFontLoader;Lkotlin/jvm/functions/Function1;)Lkotlin/Pair; +Landroidx/compose/ui/text/font/FontLoadingStrategy; +HSPLandroidx/compose/ui/text/font/FontLoadingStrategy;->()V +HSPLandroidx/compose/ui/text/font/FontLoadingStrategy;->access$getBlocking$cp()I +HSPLandroidx/compose/ui/text/font/FontLoadingStrategy;->constructor-impl(I)I +HSPLandroidx/compose/ui/text/font/FontLoadingStrategy;->equals-impl0(II)Z +HSPLandroidx/compose/ui/text/font/FontLoadingStrategy;->hashCode-impl(I)I +Landroidx/compose/ui/text/font/FontLoadingStrategy$Companion; +HSPLandroidx/compose/ui/text/font/FontLoadingStrategy$Companion;->()V +HSPLandroidx/compose/ui/text/font/FontLoadingStrategy$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/font/FontLoadingStrategy$Companion;->getBlocking-PKNRLFQ()I +Landroidx/compose/ui/text/font/FontMatcher; +HSPLandroidx/compose/ui/text/font/FontMatcher;->()V +HSPLandroidx/compose/ui/text/font/FontMatcher;->matchFont-RetOiIg(Ljava/util/List;Landroidx/compose/ui/text/font/FontWeight;I)Ljava/util/List; +Landroidx/compose/ui/text/font/FontStyle; +HSPLandroidx/compose/ui/text/font/FontStyle;->()V +HSPLandroidx/compose/ui/text/font/FontStyle;->(I)V +HSPLandroidx/compose/ui/text/font/FontStyle;->access$getItalic$cp()I +HSPLandroidx/compose/ui/text/font/FontStyle;->access$getNormal$cp()I +HSPLandroidx/compose/ui/text/font/FontStyle;->box-impl(I)Landroidx/compose/ui/text/font/FontStyle; +HSPLandroidx/compose/ui/text/font/FontStyle;->constructor-impl(I)I +HSPLandroidx/compose/ui/text/font/FontStyle;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/font/FontStyle;->equals-impl(ILjava/lang/Object;)Z +HSPLandroidx/compose/ui/text/font/FontStyle;->equals-impl0(II)Z +HSPLandroidx/compose/ui/text/font/FontStyle;->hashCode-impl(I)I +HSPLandroidx/compose/ui/text/font/FontStyle;->unbox-impl()I +Landroidx/compose/ui/text/font/FontStyle$Companion; +HSPLandroidx/compose/ui/text/font/FontStyle$Companion;->()V +HSPLandroidx/compose/ui/text/font/FontStyle$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/font/FontStyle$Companion;->getItalic-_-LCdwA()I +HSPLandroidx/compose/ui/text/font/FontStyle$Companion;->getNormal-_-LCdwA()I +Landroidx/compose/ui/text/font/FontSynthesis; +HSPLandroidx/compose/ui/text/font/FontSynthesis;->()V +HSPLandroidx/compose/ui/text/font/FontSynthesis;->(I)V +HSPLandroidx/compose/ui/text/font/FontSynthesis;->access$getAll$cp()I +HSPLandroidx/compose/ui/text/font/FontSynthesis;->box-impl(I)Landroidx/compose/ui/text/font/FontSynthesis; +HSPLandroidx/compose/ui/text/font/FontSynthesis;->constructor-impl(I)I +HSPLandroidx/compose/ui/text/font/FontSynthesis;->equals-impl0(II)Z +HSPLandroidx/compose/ui/text/font/FontSynthesis;->hashCode-impl(I)I +HSPLandroidx/compose/ui/text/font/FontSynthesis;->isStyleOn-impl$ui_text_release(I)Z +HSPLandroidx/compose/ui/text/font/FontSynthesis;->isWeightOn-impl$ui_text_release(I)Z +HSPLandroidx/compose/ui/text/font/FontSynthesis;->unbox-impl()I +Landroidx/compose/ui/text/font/FontSynthesis$Companion; +HSPLandroidx/compose/ui/text/font/FontSynthesis$Companion;->()V +HSPLandroidx/compose/ui/text/font/FontSynthesis$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/font/FontSynthesis$Companion;->getAll-GVVA2EU()I +Landroidx/compose/ui/text/font/FontSynthesis_androidKt; +HSPLandroidx/compose/ui/text/font/FontSynthesis_androidKt;->synthesizeTypeface-FxwP2eA(ILjava/lang/Object;Landroidx/compose/ui/text/font/Font;Landroidx/compose/ui/text/font/FontWeight;I)Ljava/lang/Object; +Landroidx/compose/ui/text/font/FontVariation$Setting; +Landroidx/compose/ui/text/font/FontVariation$Settings; +HSPLandroidx/compose/ui/text/font/FontVariation$Settings;->()V +HSPLandroidx/compose/ui/text/font/FontVariation$Settings;->([Landroidx/compose/ui/text/font/FontVariation$Setting;)V +HSPLandroidx/compose/ui/text/font/FontVariation$Settings;->getSettings()Ljava/util/List; +HSPLandroidx/compose/ui/text/font/FontVariation$Settings;->hashCode()I +Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/ui/text/font/FontWeight;->()V +HSPLandroidx/compose/ui/text/font/FontWeight;->(I)V +HSPLandroidx/compose/ui/text/font/FontWeight;->access$getBold$cp()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/ui/text/font/FontWeight;->access$getLight$cp()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/ui/text/font/FontWeight;->access$getMedium$cp()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/ui/text/font/FontWeight;->access$getNormal$cp()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/ui/text/font/FontWeight;->access$getW600$cp()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/ui/text/font/FontWeight;->compareTo(Landroidx/compose/ui/text/font/FontWeight;)I +HSPLandroidx/compose/ui/text/font/FontWeight;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/font/FontWeight;->getWeight()I +HSPLandroidx/compose/ui/text/font/FontWeight;->hashCode()I +Landroidx/compose/ui/text/font/FontWeight$Companion; +HSPLandroidx/compose/ui/text/font/FontWeight$Companion;->()V +HSPLandroidx/compose/ui/text/font/FontWeight$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/font/FontWeight$Companion;->getBold()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/ui/text/font/FontWeight$Companion;->getLight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/ui/text/font/FontWeight$Companion;->getMedium()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/ui/text/font/FontWeight$Companion;->getNormal()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/ui/text/font/FontWeight$Companion;->getW600()Landroidx/compose/ui/text/font/FontWeight; +Landroidx/compose/ui/text/font/GenericFontFamily; +HSPLandroidx/compose/ui/text/font/GenericFontFamily;->()V +HSPLandroidx/compose/ui/text/font/GenericFontFamily;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroidx/compose/ui/text/font/GenericFontFamily;->getName()Ljava/lang/String; +Landroidx/compose/ui/text/font/PlatformFontFamilyTypefaceAdapter; +HSPLandroidx/compose/ui/text/font/PlatformFontFamilyTypefaceAdapter;->()V +HSPLandroidx/compose/ui/text/font/PlatformFontFamilyTypefaceAdapter;->resolve(Landroidx/compose/ui/text/font/TypefaceRequest;Landroidx/compose/ui/text/font/PlatformFontLoader;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/text/font/TypefaceResult; +Landroidx/compose/ui/text/font/PlatformFontLoader; +Landroidx/compose/ui/text/font/PlatformResolveInterceptor; +HSPLandroidx/compose/ui/text/font/PlatformResolveInterceptor;->()V +HSPLandroidx/compose/ui/text/font/PlatformResolveInterceptor;->interceptFontFamily(Landroidx/compose/ui/text/font/FontFamily;)Landroidx/compose/ui/text/font/FontFamily; +HSPLandroidx/compose/ui/text/font/PlatformResolveInterceptor;->interceptFontStyle-T2F_aPo(I)I +HSPLandroidx/compose/ui/text/font/PlatformResolveInterceptor;->interceptFontSynthesis-Mscr08Y(I)I +Landroidx/compose/ui/text/font/PlatformResolveInterceptor$Companion; +HSPLandroidx/compose/ui/text/font/PlatformResolveInterceptor$Companion;->()V +HSPLandroidx/compose/ui/text/font/PlatformResolveInterceptor$Companion;->()V +Landroidx/compose/ui/text/font/PlatformResolveInterceptor$Companion$Default$1; +HSPLandroidx/compose/ui/text/font/PlatformResolveInterceptor$Companion$Default$1;->()V +Landroidx/compose/ui/text/font/PlatformTypefaces; +Landroidx/compose/ui/text/font/PlatformTypefacesApi28; +HSPLandroidx/compose/ui/text/font/PlatformTypefacesApi28;->()V +HSPLandroidx/compose/ui/text/font/PlatformTypefacesApi28;->createAndroidTypefaceApi28-RetOiIg(Ljava/lang/String;Landroidx/compose/ui/text/font/FontWeight;I)Landroid/graphics/Typeface; +HSPLandroidx/compose/ui/text/font/PlatformTypefacesApi28;->createDefault-FO1MlWM(Landroidx/compose/ui/text/font/FontWeight;I)Landroid/graphics/Typeface; +HSPLandroidx/compose/ui/text/font/PlatformTypefacesApi28;->createNamed-RetOiIg(Landroidx/compose/ui/text/font/GenericFontFamily;Landroidx/compose/ui/text/font/FontWeight;I)Landroid/graphics/Typeface; +Landroidx/compose/ui/text/font/PlatformTypefacesKt; +HSPLandroidx/compose/ui/text/font/PlatformTypefacesKt;->PlatformTypefaces()Landroidx/compose/ui/text/font/PlatformTypefaces; +HSPLandroidx/compose/ui/text/font/PlatformTypefacesKt;->setFontVariationSettings(Landroid/graphics/Typeface;Landroidx/compose/ui/text/font/FontVariation$Settings;Landroid/content/Context;)Landroid/graphics/Typeface; +Landroidx/compose/ui/text/font/ResourceFont; +HSPLandroidx/compose/ui/text/font/ResourceFont;->()V +HSPLandroidx/compose/ui/text/font/ResourceFont;->(ILandroidx/compose/ui/text/font/FontWeight;ILandroidx/compose/ui/text/font/FontVariation$Settings;I)V +HSPLandroidx/compose/ui/text/font/ResourceFont;->(ILandroidx/compose/ui/text/font/FontWeight;ILandroidx/compose/ui/text/font/FontVariation$Settings;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/font/ResourceFont;->getLoadingStrategy-PKNRLFQ()I +HSPLandroidx/compose/ui/text/font/ResourceFont;->getResId()I +HSPLandroidx/compose/ui/text/font/ResourceFont;->getStyle-_-LCdwA()I +HSPLandroidx/compose/ui/text/font/ResourceFont;->getVariationSettings()Landroidx/compose/ui/text/font/FontVariation$Settings; +HSPLandroidx/compose/ui/text/font/ResourceFont;->getWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/ui/text/font/ResourceFont;->hashCode()I +Landroidx/compose/ui/text/font/ResourceFontHelper; +HSPLandroidx/compose/ui/text/font/ResourceFontHelper;->()V +HSPLandroidx/compose/ui/text/font/ResourceFontHelper;->()V +HSPLandroidx/compose/ui/text/font/ResourceFontHelper;->load(Landroid/content/Context;Landroidx/compose/ui/text/font/ResourceFont;)Landroid/graphics/Typeface; +Landroidx/compose/ui/text/font/SystemFontFamily; +HSPLandroidx/compose/ui/text/font/SystemFontFamily;->()V +HSPLandroidx/compose/ui/text/font/SystemFontFamily;->()V +HSPLandroidx/compose/ui/text/font/SystemFontFamily;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/text/font/TypefaceCompatApi26; +HSPLandroidx/compose/ui/text/font/TypefaceCompatApi26;->()V +HSPLandroidx/compose/ui/text/font/TypefaceCompatApi26;->()V +HSPLandroidx/compose/ui/text/font/TypefaceCompatApi26;->setFontVariationSettings(Landroid/graphics/Typeface;Landroidx/compose/ui/text/font/FontVariation$Settings;Landroid/content/Context;)Landroid/graphics/Typeface; +Landroidx/compose/ui/text/font/TypefaceRequest; +HSPLandroidx/compose/ui/text/font/TypefaceRequest;->(Landroidx/compose/ui/text/font/FontFamily;Landroidx/compose/ui/text/font/FontWeight;IILjava/lang/Object;)V +HSPLandroidx/compose/ui/text/font/TypefaceRequest;->(Landroidx/compose/ui/text/font/FontFamily;Landroidx/compose/ui/text/font/FontWeight;IILjava/lang/Object;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/font/TypefaceRequest;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/font/TypefaceRequest;->getFontFamily()Landroidx/compose/ui/text/font/FontFamily; +HSPLandroidx/compose/ui/text/font/TypefaceRequest;->getFontStyle-_-LCdwA()I +HSPLandroidx/compose/ui/text/font/TypefaceRequest;->getFontSynthesis-GVVA2EU()I +HSPLandroidx/compose/ui/text/font/TypefaceRequest;->getFontWeight()Landroidx/compose/ui/text/font/FontWeight; +HSPLandroidx/compose/ui/text/font/TypefaceRequest;->hashCode()I +Landroidx/compose/ui/text/font/TypefaceRequestCache; +HSPLandroidx/compose/ui/text/font/TypefaceRequestCache;->()V +HSPLandroidx/compose/ui/text/font/TypefaceRequestCache;->runCached(Landroidx/compose/ui/text/font/TypefaceRequest;Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/State; +Landroidx/compose/ui/text/font/TypefaceRequestCache$runCached$currentTypefaceResult$1; +HSPLandroidx/compose/ui/text/font/TypefaceRequestCache$runCached$currentTypefaceResult$1;->(Landroidx/compose/ui/text/font/TypefaceRequestCache;Landroidx/compose/ui/text/font/TypefaceRequest;)V +Landroidx/compose/ui/text/font/TypefaceResult; +Landroidx/compose/ui/text/font/TypefaceResult$Immutable; +HSPLandroidx/compose/ui/text/font/TypefaceResult$Immutable;->()V +HSPLandroidx/compose/ui/text/font/TypefaceResult$Immutable;->(Ljava/lang/Object;Z)V +HSPLandroidx/compose/ui/text/font/TypefaceResult$Immutable;->(Ljava/lang/Object;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/font/TypefaceResult$Immutable;->getCacheable()Z +HSPLandroidx/compose/ui/text/font/TypefaceResult$Immutable;->getValue()Ljava/lang/Object; +Landroidx/compose/ui/text/input/AndroidTextInputServicePlugin; +HSPLandroidx/compose/ui/text/input/AndroidTextInputServicePlugin;->()V +HSPLandroidx/compose/ui/text/input/AndroidTextInputServicePlugin;->()V +HSPLandroidx/compose/ui/text/input/AndroidTextInputServicePlugin;->createAdapter(Landroidx/compose/ui/text/input/PlatformTextInput;Landroid/view/View;)Landroidx/compose/ui/text/input/AndroidTextInputServicePlugin$Adapter; +HSPLandroidx/compose/ui/text/input/AndroidTextInputServicePlugin;->createAdapter(Landroidx/compose/ui/text/input/PlatformTextInput;Landroid/view/View;)Landroidx/compose/ui/text/input/PlatformTextInputAdapter; +Landroidx/compose/ui/text/input/AndroidTextInputServicePlugin$Adapter; +HSPLandroidx/compose/ui/text/input/AndroidTextInputServicePlugin$Adapter;->()V +HSPLandroidx/compose/ui/text/input/AndroidTextInputServicePlugin$Adapter;->(Landroidx/compose/ui/text/input/TextInputService;Landroidx/compose/ui/text/input/TextInputServiceAndroid;)V +HSPLandroidx/compose/ui/text/input/AndroidTextInputServicePlugin$Adapter;->createInputConnection(Landroid/view/inputmethod/EditorInfo;)Landroid/view/inputmethod/InputConnection; +HSPLandroidx/compose/ui/text/input/AndroidTextInputServicePlugin$Adapter;->getService()Landroidx/compose/ui/text/input/TextInputService; +Landroidx/compose/ui/text/input/CommitTextCommand; +HSPLandroidx/compose/ui/text/input/CommitTextCommand;->()V +HSPLandroidx/compose/ui/text/input/CommitTextCommand;->(Landroidx/compose/ui/text/AnnotatedString;I)V +HSPLandroidx/compose/ui/text/input/CommitTextCommand;->applyTo(Landroidx/compose/ui/text/input/EditingBuffer;)V +HSPLandroidx/compose/ui/text/input/CommitTextCommand;->getText()Ljava/lang/String; +Landroidx/compose/ui/text/input/DeleteAllCommand; +HSPLandroidx/compose/ui/text/input/DeleteAllCommand;->()V +HSPLandroidx/compose/ui/text/input/DeleteAllCommand;->()V +HSPLandroidx/compose/ui/text/input/DeleteAllCommand;->applyTo(Landroidx/compose/ui/text/input/EditingBuffer;)V +Landroidx/compose/ui/text/input/EditCommand; +Landroidx/compose/ui/text/input/EditProcessor; +HSPLandroidx/compose/ui/text/input/EditProcessor;->()V +HSPLandroidx/compose/ui/text/input/EditProcessor;->()V +HSPLandroidx/compose/ui/text/input/EditProcessor;->apply(Ljava/util/List;)Landroidx/compose/ui/text/input/TextFieldValue; +HSPLandroidx/compose/ui/text/input/EditProcessor;->reset(Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/TextInputSession;)V +HSPLandroidx/compose/ui/text/input/EditProcessor;->toTextFieldValue()Landroidx/compose/ui/text/input/TextFieldValue; +Landroidx/compose/ui/text/input/EditingBuffer; +HSPLandroidx/compose/ui/text/input/EditingBuffer;->()V +HSPLandroidx/compose/ui/text/input/EditingBuffer;->(Landroidx/compose/ui/text/AnnotatedString;J)V +HSPLandroidx/compose/ui/text/input/EditingBuffer;->(Landroidx/compose/ui/text/AnnotatedString;JLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/input/EditingBuffer;->commitComposition$ui_text_release()V +HSPLandroidx/compose/ui/text/input/EditingBuffer;->getComposition-MzsxiRA$ui_text_release()Landroidx/compose/ui/text/TextRange; +HSPLandroidx/compose/ui/text/input/EditingBuffer;->getCursor$ui_text_release()I +HSPLandroidx/compose/ui/text/input/EditingBuffer;->getLength$ui_text_release()I +HSPLandroidx/compose/ui/text/input/EditingBuffer;->getSelection-d9O1mEE$ui_text_release()J +HSPLandroidx/compose/ui/text/input/EditingBuffer;->getSelectionEnd$ui_text_release()I +HSPLandroidx/compose/ui/text/input/EditingBuffer;->getSelectionStart$ui_text_release()I +HSPLandroidx/compose/ui/text/input/EditingBuffer;->hasComposition$ui_text_release()Z +HSPLandroidx/compose/ui/text/input/EditingBuffer;->replace$ui_text_release(IILjava/lang/String;)V +HSPLandroidx/compose/ui/text/input/EditingBuffer;->setCursor$ui_text_release(I)V +HSPLandroidx/compose/ui/text/input/EditingBuffer;->setSelection$ui_text_release(II)V +HSPLandroidx/compose/ui/text/input/EditingBuffer;->setSelectionEnd(I)V +HSPLandroidx/compose/ui/text/input/EditingBuffer;->setSelectionStart(I)V +HSPLandroidx/compose/ui/text/input/EditingBuffer;->toAnnotatedString$ui_text_release()Landroidx/compose/ui/text/AnnotatedString; +HSPLandroidx/compose/ui/text/input/EditingBuffer;->toString()Ljava/lang/String; +Landroidx/compose/ui/text/input/EditingBuffer$Companion; +HSPLandroidx/compose/ui/text/input/EditingBuffer$Companion;->()V +HSPLandroidx/compose/ui/text/input/EditingBuffer$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/text/input/GapBuffer; +HSPLandroidx/compose/ui/text/input/GapBuffer;->([CII)V +HSPLandroidx/compose/ui/text/input/GapBuffer;->append(Ljava/lang/StringBuilder;)V +HSPLandroidx/compose/ui/text/input/GapBuffer;->delete(II)V +HSPLandroidx/compose/ui/text/input/GapBuffer;->gapLength()I +HSPLandroidx/compose/ui/text/input/GapBuffer;->length()I +HSPLandroidx/compose/ui/text/input/GapBuffer;->makeSureAvailableSpace(I)V +HSPLandroidx/compose/ui/text/input/GapBuffer;->replace(IILjava/lang/String;)V +Landroidx/compose/ui/text/input/GapBufferKt; +HSPLandroidx/compose/ui/text/input/GapBufferKt;->access$toCharArray(Ljava/lang/String;[CI)V +HSPLandroidx/compose/ui/text/input/GapBufferKt;->toCharArray(Ljava/lang/String;[CI)V +Landroidx/compose/ui/text/input/GapBuffer_jvmKt; +HSPLandroidx/compose/ui/text/input/GapBuffer_jvmKt;->toCharArray(Ljava/lang/String;[CIII)V +Landroidx/compose/ui/text/input/ImeAction; +HSPLandroidx/compose/ui/text/input/ImeAction;->()V +HSPLandroidx/compose/ui/text/input/ImeAction;->(I)V +HSPLandroidx/compose/ui/text/input/ImeAction;->access$getDefault$cp()I +HSPLandroidx/compose/ui/text/input/ImeAction;->access$getDone$cp()I +HSPLandroidx/compose/ui/text/input/ImeAction;->access$getGo$cp()I +HSPLandroidx/compose/ui/text/input/ImeAction;->access$getNone$cp()I +HSPLandroidx/compose/ui/text/input/ImeAction;->box-impl(I)Landroidx/compose/ui/text/input/ImeAction; +HSPLandroidx/compose/ui/text/input/ImeAction;->constructor-impl(I)I +HSPLandroidx/compose/ui/text/input/ImeAction;->equals-impl0(II)Z +Landroidx/compose/ui/text/input/ImeAction$Companion; +HSPLandroidx/compose/ui/text/input/ImeAction$Companion;->()V +HSPLandroidx/compose/ui/text/input/ImeAction$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/input/ImeAction$Companion;->getDefault-eUduSuo()I +HSPLandroidx/compose/ui/text/input/ImeAction$Companion;->getDone-eUduSuo()I +HSPLandroidx/compose/ui/text/input/ImeAction$Companion;->getGo-eUduSuo()I +HSPLandroidx/compose/ui/text/input/ImeAction$Companion;->getNone-eUduSuo()I +Landroidx/compose/ui/text/input/ImeOptions; +HSPLandroidx/compose/ui/text/input/ImeOptions;->()V +HSPLandroidx/compose/ui/text/input/ImeOptions;->(ZIZII)V +HSPLandroidx/compose/ui/text/input/ImeOptions;->(ZIZIIILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/input/ImeOptions;->(ZIZIILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/input/ImeOptions;->access$getDefault$cp()Landroidx/compose/ui/text/input/ImeOptions; +HSPLandroidx/compose/ui/text/input/ImeOptions;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/input/ImeOptions;->getAutoCorrect()Z +HSPLandroidx/compose/ui/text/input/ImeOptions;->getCapitalization-IUNYP9k()I +HSPLandroidx/compose/ui/text/input/ImeOptions;->getImeAction-eUduSuo()I +HSPLandroidx/compose/ui/text/input/ImeOptions;->getKeyboardType-PjHm6EE()I +HSPLandroidx/compose/ui/text/input/ImeOptions;->getSingleLine()Z +Landroidx/compose/ui/text/input/ImeOptions$Companion; +HSPLandroidx/compose/ui/text/input/ImeOptions$Companion;->()V +HSPLandroidx/compose/ui/text/input/ImeOptions$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/input/ImeOptions$Companion;->getDefault()Landroidx/compose/ui/text/input/ImeOptions; +Landroidx/compose/ui/text/input/InputEventCallback2; +Landroidx/compose/ui/text/input/InputMethodManager; +Landroidx/compose/ui/text/input/InputMethodManagerImpl; +HSPLandroidx/compose/ui/text/input/InputMethodManagerImpl;->(Landroid/view/View;)V +HSPLandroidx/compose/ui/text/input/InputMethodManagerImpl;->access$getView$p(Landroidx/compose/ui/text/input/InputMethodManagerImpl;)Landroid/view/View; +HSPLandroidx/compose/ui/text/input/InputMethodManagerImpl;->getImm()Landroid/view/inputmethod/InputMethodManager; +HSPLandroidx/compose/ui/text/input/InputMethodManagerImpl;->hideSoftInput()V +HSPLandroidx/compose/ui/text/input/InputMethodManagerImpl;->restartInput()V +HSPLandroidx/compose/ui/text/input/InputMethodManagerImpl;->showSoftInput()V +HSPLandroidx/compose/ui/text/input/InputMethodManagerImpl;->updateSelection(IIII)V +Landroidx/compose/ui/text/input/InputMethodManagerImpl$imm$2; +HSPLandroidx/compose/ui/text/input/InputMethodManagerImpl$imm$2;->(Landroidx/compose/ui/text/input/InputMethodManagerImpl;)V +HSPLandroidx/compose/ui/text/input/InputMethodManagerImpl$imm$2;->invoke()Landroid/view/inputmethod/InputMethodManager; +HSPLandroidx/compose/ui/text/input/InputMethodManagerImpl$imm$2;->invoke()Ljava/lang/Object; +Landroidx/compose/ui/text/input/KeyboardCapitalization; +HSPLandroidx/compose/ui/text/input/KeyboardCapitalization;->()V +HSPLandroidx/compose/ui/text/input/KeyboardCapitalization;->access$getCharacters$cp()I +HSPLandroidx/compose/ui/text/input/KeyboardCapitalization;->access$getNone$cp()I +HSPLandroidx/compose/ui/text/input/KeyboardCapitalization;->access$getSentences$cp()I +HSPLandroidx/compose/ui/text/input/KeyboardCapitalization;->access$getWords$cp()I +HSPLandroidx/compose/ui/text/input/KeyboardCapitalization;->constructor-impl(I)I +HSPLandroidx/compose/ui/text/input/KeyboardCapitalization;->equals-impl0(II)Z +Landroidx/compose/ui/text/input/KeyboardCapitalization$Companion; +HSPLandroidx/compose/ui/text/input/KeyboardCapitalization$Companion;->()V +HSPLandroidx/compose/ui/text/input/KeyboardCapitalization$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/input/KeyboardCapitalization$Companion;->getCharacters-IUNYP9k()I +HSPLandroidx/compose/ui/text/input/KeyboardCapitalization$Companion;->getNone-IUNYP9k()I +HSPLandroidx/compose/ui/text/input/KeyboardCapitalization$Companion;->getSentences-IUNYP9k()I +HSPLandroidx/compose/ui/text/input/KeyboardCapitalization$Companion;->getWords-IUNYP9k()I +Landroidx/compose/ui/text/input/KeyboardType; +HSPLandroidx/compose/ui/text/input/KeyboardType;->()V +HSPLandroidx/compose/ui/text/input/KeyboardType;->access$getAscii$cp()I +HSPLandroidx/compose/ui/text/input/KeyboardType;->access$getEmail$cp()I +HSPLandroidx/compose/ui/text/input/KeyboardType;->access$getNumber$cp()I +HSPLandroidx/compose/ui/text/input/KeyboardType;->access$getPassword$cp()I +HSPLandroidx/compose/ui/text/input/KeyboardType;->access$getPhone$cp()I +HSPLandroidx/compose/ui/text/input/KeyboardType;->access$getText$cp()I +HSPLandroidx/compose/ui/text/input/KeyboardType;->access$getUri$cp()I +HSPLandroidx/compose/ui/text/input/KeyboardType;->constructor-impl(I)I +HSPLandroidx/compose/ui/text/input/KeyboardType;->equals-impl0(II)Z +Landroidx/compose/ui/text/input/KeyboardType$Companion; +HSPLandroidx/compose/ui/text/input/KeyboardType$Companion;->()V +HSPLandroidx/compose/ui/text/input/KeyboardType$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/input/KeyboardType$Companion;->getAscii-PjHm6EE()I +HSPLandroidx/compose/ui/text/input/KeyboardType$Companion;->getEmail-PjHm6EE()I +HSPLandroidx/compose/ui/text/input/KeyboardType$Companion;->getNumber-PjHm6EE()I +HSPLandroidx/compose/ui/text/input/KeyboardType$Companion;->getPassword-PjHm6EE()I +HSPLandroidx/compose/ui/text/input/KeyboardType$Companion;->getPhone-PjHm6EE()I +HSPLandroidx/compose/ui/text/input/KeyboardType$Companion;->getText-PjHm6EE()I +HSPLandroidx/compose/ui/text/input/KeyboardType$Companion;->getUri-PjHm6EE()I +Landroidx/compose/ui/text/input/OffsetMapping; +HSPLandroidx/compose/ui/text/input/OffsetMapping;->()V +Landroidx/compose/ui/text/input/OffsetMapping$Companion; +HSPLandroidx/compose/ui/text/input/OffsetMapping$Companion;->()V +HSPLandroidx/compose/ui/text/input/OffsetMapping$Companion;->()V +HSPLandroidx/compose/ui/text/input/OffsetMapping$Companion;->getIdentity()Landroidx/compose/ui/text/input/OffsetMapping; +Landroidx/compose/ui/text/input/OffsetMapping$Companion$Identity$1; +HSPLandroidx/compose/ui/text/input/OffsetMapping$Companion$Identity$1;->()V +HSPLandroidx/compose/ui/text/input/OffsetMapping$Companion$Identity$1;->originalToTransformed(I)I +Landroidx/compose/ui/text/input/PartialGapBuffer; +HSPLandroidx/compose/ui/text/input/PartialGapBuffer;->()V +HSPLandroidx/compose/ui/text/input/PartialGapBuffer;->(Ljava/lang/String;)V +HSPLandroidx/compose/ui/text/input/PartialGapBuffer;->getLength()I +HSPLandroidx/compose/ui/text/input/PartialGapBuffer;->replace(IILjava/lang/String;)V +HSPLandroidx/compose/ui/text/input/PartialGapBuffer;->toString()Ljava/lang/String; +Landroidx/compose/ui/text/input/PartialGapBuffer$Companion; +HSPLandroidx/compose/ui/text/input/PartialGapBuffer$Companion;->()V +HSPLandroidx/compose/ui/text/input/PartialGapBuffer$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/text/input/PasswordVisualTransformation; +HSPLandroidx/compose/ui/text/input/PasswordVisualTransformation;->()V +HSPLandroidx/compose/ui/text/input/PasswordVisualTransformation;->(C)V +HSPLandroidx/compose/ui/text/input/PasswordVisualTransformation;->(CILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/input/PasswordVisualTransformation;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/input/PasswordVisualTransformation;->filter(Landroidx/compose/ui/text/AnnotatedString;)Landroidx/compose/ui/text/input/TransformedText; +Landroidx/compose/ui/text/input/PlatformTextInput; +Landroidx/compose/ui/text/input/PlatformTextInputAdapter; +Landroidx/compose/ui/text/input/PlatformTextInputPlugin; +Landroidx/compose/ui/text/input/PlatformTextInputPluginRegistry; +Landroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl; +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl;->()V +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl;->(Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl;->access$getFocusedPlugin$p(Landroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl;)Landroidx/compose/ui/text/input/PlatformTextInputPlugin; +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl;->access$setFocusedPlugin$p(Landroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl;Landroidx/compose/ui/text/input/PlatformTextInputPlugin;)V +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl;->getFocusedAdapter()Landroidx/compose/ui/text/input/PlatformTextInputAdapter; +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl;->getOrCreateAdapter(Landroidx/compose/ui/text/input/PlatformTextInputPlugin;)Landroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterHandle; +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl;->instantiateAdapter(Landroidx/compose/ui/text/input/PlatformTextInputPlugin;)Landroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterWithRefCount; +Landroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterHandle; +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterHandle;->()V +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterHandle;->(Landroidx/compose/ui/text/input/PlatformTextInputAdapter;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterHandle;->getAdapter()Landroidx/compose/ui/text/input/PlatformTextInputAdapter; +Landroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterInput; +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterInput;->(Landroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl;Landroidx/compose/ui/text/input/PlatformTextInputPlugin;)V +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterInput;->releaseInputFocus()V +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterInput;->requestInputFocus()V +Landroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterWithRefCount; +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterWithRefCount;->(Landroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl;Landroidx/compose/ui/text/input/PlatformTextInputAdapter;)V +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterWithRefCount;->getAdapter()Landroidx/compose/ui/text/input/PlatformTextInputAdapter; +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterWithRefCount;->getRefCount()I +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterWithRefCount;->incrementRefCount()V +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterWithRefCount;->setRefCount(I)V +Landroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$getOrCreateAdapter$1; +HSPLandroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$getOrCreateAdapter$1;->(Landroidx/compose/ui/text/input/PlatformTextInputPluginRegistryImpl$AdapterWithRefCount;)V +Landroidx/compose/ui/text/input/PlatformTextInputService; +Landroidx/compose/ui/text/input/RecordingInputConnection; +HSPLandroidx/compose/ui/text/input/RecordingInputConnection;->(Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/InputEventCallback2;Z)V +HSPLandroidx/compose/ui/text/input/RecordingInputConnection;->closeConnection()V +HSPLandroidx/compose/ui/text/input/RecordingInputConnection;->getHandler()Landroid/os/Handler; +HSPLandroidx/compose/ui/text/input/RecordingInputConnection;->getSelectedText(I)Ljava/lang/CharSequence; +HSPLandroidx/compose/ui/text/input/RecordingInputConnection;->getTextAfterCursor(II)Ljava/lang/CharSequence; +HSPLandroidx/compose/ui/text/input/RecordingInputConnection;->getTextBeforeCursor(II)Ljava/lang/CharSequence; +HSPLandroidx/compose/ui/text/input/RecordingInputConnection;->setMTextFieldValue$ui_release(Landroidx/compose/ui/text/input/TextFieldValue;)V +HSPLandroidx/compose/ui/text/input/RecordingInputConnection;->updateInputState(Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/InputMethodManager;)V +Landroidx/compose/ui/text/input/TextFieldValue; +HSPLandroidx/compose/ui/text/input/TextFieldValue;->()V +HSPLandroidx/compose/ui/text/input/TextFieldValue;->(Landroidx/compose/ui/text/AnnotatedString;JLandroidx/compose/ui/text/TextRange;)V +HSPLandroidx/compose/ui/text/input/TextFieldValue;->(Landroidx/compose/ui/text/AnnotatedString;JLandroidx/compose/ui/text/TextRange;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/input/TextFieldValue;->(Ljava/lang/String;JLandroidx/compose/ui/text/TextRange;)V +HSPLandroidx/compose/ui/text/input/TextFieldValue;->(Ljava/lang/String;JLandroidx/compose/ui/text/TextRange;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/input/TextFieldValue;->(Ljava/lang/String;JLandroidx/compose/ui/text/TextRange;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/input/TextFieldValue;->copy-3r_uNRQ$default(Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/AnnotatedString;JLandroidx/compose/ui/text/TextRange;ILjava/lang/Object;)Landroidx/compose/ui/text/input/TextFieldValue; +HSPLandroidx/compose/ui/text/input/TextFieldValue;->copy-3r_uNRQ$default(Landroidx/compose/ui/text/input/TextFieldValue;Ljava/lang/String;JLandroidx/compose/ui/text/TextRange;ILjava/lang/Object;)Landroidx/compose/ui/text/input/TextFieldValue; +HSPLandroidx/compose/ui/text/input/TextFieldValue;->copy-3r_uNRQ(Landroidx/compose/ui/text/AnnotatedString;JLandroidx/compose/ui/text/TextRange;)Landroidx/compose/ui/text/input/TextFieldValue; +HSPLandroidx/compose/ui/text/input/TextFieldValue;->copy-3r_uNRQ(Ljava/lang/String;JLandroidx/compose/ui/text/TextRange;)Landroidx/compose/ui/text/input/TextFieldValue; +HSPLandroidx/compose/ui/text/input/TextFieldValue;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/input/TextFieldValue;->getAnnotatedString()Landroidx/compose/ui/text/AnnotatedString; +HSPLandroidx/compose/ui/text/input/TextFieldValue;->getComposition-MzsxiRA()Landroidx/compose/ui/text/TextRange; +HSPLandroidx/compose/ui/text/input/TextFieldValue;->getSelection-d9O1mEE()J +HSPLandroidx/compose/ui/text/input/TextFieldValue;->getText()Ljava/lang/String; +Landroidx/compose/ui/text/input/TextFieldValue$Companion; +HSPLandroidx/compose/ui/text/input/TextFieldValue$Companion;->()V +HSPLandroidx/compose/ui/text/input/TextFieldValue$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/text/input/TextFieldValue$Companion$Saver$1; +HSPLandroidx/compose/ui/text/input/TextFieldValue$Companion$Saver$1;->()V +HSPLandroidx/compose/ui/text/input/TextFieldValue$Companion$Saver$1;->()V +Landroidx/compose/ui/text/input/TextFieldValue$Companion$Saver$2; +HSPLandroidx/compose/ui/text/input/TextFieldValue$Companion$Saver$2;->()V +HSPLandroidx/compose/ui/text/input/TextFieldValue$Companion$Saver$2;->()V +Landroidx/compose/ui/text/input/TextFieldValueKt; +HSPLandroidx/compose/ui/text/input/TextFieldValueKt;->getTextAfterSelection(Landroidx/compose/ui/text/input/TextFieldValue;I)Landroidx/compose/ui/text/AnnotatedString; +HSPLandroidx/compose/ui/text/input/TextFieldValueKt;->getTextBeforeSelection(Landroidx/compose/ui/text/input/TextFieldValue;I)Landroidx/compose/ui/text/AnnotatedString; +Landroidx/compose/ui/text/input/TextInputService; +HSPLandroidx/compose/ui/text/input/TextInputService;->()V +HSPLandroidx/compose/ui/text/input/TextInputService;->(Landroidx/compose/ui/text/input/PlatformTextInputService;)V +HSPLandroidx/compose/ui/text/input/TextInputService;->getCurrentInputSession$ui_text_release()Landroidx/compose/ui/text/input/TextInputSession; +HSPLandroidx/compose/ui/text/input/TextInputService;->startInput(Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/ImeOptions;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/text/input/TextInputSession; +HSPLandroidx/compose/ui/text/input/TextInputService;->stopInput(Landroidx/compose/ui/text/input/TextInputSession;)V +Landroidx/compose/ui/text/input/TextInputServiceAndroid; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->$r8$lambda$tFIm8sXGny3G873nGUe23EJe7OY(Landroidx/compose/ui/text/input/TextInputServiceAndroid;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->(Landroid/view/View;Landroidx/compose/ui/text/input/InputMethodManager;Landroidx/compose/ui/text/input/PlatformTextInput;Ljava/util/concurrent/Executor;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->(Landroid/view/View;Landroidx/compose/ui/text/input/InputMethodManager;Landroidx/compose/ui/text/input/PlatformTextInput;Ljava/util/concurrent/Executor;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->(Landroid/view/View;Landroidx/compose/ui/text/input/PlatformTextInput;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->access$getIcs$p(Landroidx/compose/ui/text/input/TextInputServiceAndroid;)Ljava/util/List; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->createInputConnection(Landroid/view/inputmethod/EditorInfo;)Landroid/view/inputmethod/InputConnection; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->notifyFocusedRect(Landroidx/compose/ui/geometry/Rect;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->processInputCommands$applyToState(Landroidx/compose/ui/text/input/TextInputServiceAndroid$TextInputCommand;Lkotlin/jvm/internal/Ref$ObjectRef;Lkotlin/jvm/internal/Ref$ObjectRef;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->processInputCommands()V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->restartInputImmediately()V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->sendInputCommand$lambda$1(Landroidx/compose/ui/text/input/TextInputServiceAndroid;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->sendInputCommand(Landroidx/compose/ui/text/input/TextInputServiceAndroid$TextInputCommand;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->setKeyboardVisibleImmediately(Z)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->startInput(Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/ImeOptions;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->stopInput()V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->updateState(Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/TextFieldValue;)V +Landroidx/compose/ui/text/input/TextInputServiceAndroid$$ExternalSyntheticLambda0; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$$ExternalSyntheticLambda0;->(Landroidx/compose/ui/text/input/TextInputServiceAndroid;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$$ExternalSyntheticLambda0;->run()V +Landroidx/compose/ui/text/input/TextInputServiceAndroid$TextInputCommand; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$TextInputCommand;->$values()[Landroidx/compose/ui/text/input/TextInputServiceAndroid$TextInputCommand; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$TextInputCommand;->()V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$TextInputCommand;->(Ljava/lang/String;I)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$TextInputCommand;->values()[Landroidx/compose/ui/text/input/TextInputServiceAndroid$TextInputCommand; +Landroidx/compose/ui/text/input/TextInputServiceAndroid$WhenMappings; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$WhenMappings;->()V +Landroidx/compose/ui/text/input/TextInputServiceAndroid$baseInputConnection$2; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$baseInputConnection$2;->(Landroidx/compose/ui/text/input/TextInputServiceAndroid;)V +Landroidx/compose/ui/text/input/TextInputServiceAndroid$createInputConnection$1; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$createInputConnection$1;->(Landroidx/compose/ui/text/input/TextInputServiceAndroid;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$createInputConnection$1;->onConnectionClosed(Landroidx/compose/ui/text/input/RecordingInputConnection;)V +Landroidx/compose/ui/text/input/TextInputServiceAndroid$onEditCommand$1; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$onEditCommand$1;->()V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$onEditCommand$1;->()V +Landroidx/compose/ui/text/input/TextInputServiceAndroid$onImeActionPerformed$1; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$onImeActionPerformed$1;->()V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$onImeActionPerformed$1;->()V +Landroidx/compose/ui/text/input/TextInputServiceAndroid$stopInput$1; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$stopInput$1;->()V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$stopInput$1;->()V +Landroidx/compose/ui/text/input/TextInputServiceAndroid$stopInput$2; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$stopInput$2;->()V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$stopInput$2;->()V +Landroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt;->$r8$lambda$RYljF3nl5HRu6JKEM8xFRHwbGFg(Ljava/lang/Runnable;J)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt;->$r8$lambda$zzP0QYZAK9fPNHI8CrYdtRFmmqA(Landroid/view/Choreographer;Ljava/lang/Runnable;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt;->access$updateWithEmojiCompat(Landroid/view/inputmethod/EditorInfo;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt;->asExecutor$lambda$1$lambda$0(Ljava/lang/Runnable;J)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt;->asExecutor$lambda$1(Landroid/view/Choreographer;Ljava/lang/Runnable;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt;->asExecutor(Landroid/view/Choreographer;)Ljava/util/concurrent/Executor; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt;->hasFlag(II)Z +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt;->update(Landroid/view/inputmethod/EditorInfo;Landroidx/compose/ui/text/input/ImeOptions;Landroidx/compose/ui/text/input/TextFieldValue;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt;->updateWithEmojiCompat(Landroid/view/inputmethod/EditorInfo;)V +Landroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt$$ExternalSyntheticLambda0; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt$$ExternalSyntheticLambda0;->(Ljava/lang/Runnable;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt$$ExternalSyntheticLambda0;->doFrame(J)V +Landroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt$$ExternalSyntheticLambda1; +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt$$ExternalSyntheticLambda1;->(Landroid/view/Choreographer;)V +HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt$$ExternalSyntheticLambda1;->execute(Ljava/lang/Runnable;)V +Landroidx/compose/ui/text/input/TextInputSession; +HSPLandroidx/compose/ui/text/input/TextInputSession;->()V +HSPLandroidx/compose/ui/text/input/TextInputSession;->(Landroidx/compose/ui/text/input/TextInputService;Landroidx/compose/ui/text/input/PlatformTextInputService;)V +HSPLandroidx/compose/ui/text/input/TextInputSession;->dispose()V +HSPLandroidx/compose/ui/text/input/TextInputSession;->isOpen()Z +HSPLandroidx/compose/ui/text/input/TextInputSession;->notifyFocusedRect(Landroidx/compose/ui/geometry/Rect;)Z +HSPLandroidx/compose/ui/text/input/TextInputSession;->updateState(Landroidx/compose/ui/text/input/TextFieldValue;Landroidx/compose/ui/text/input/TextFieldValue;)Z +Landroidx/compose/ui/text/input/TransformedText; +HSPLandroidx/compose/ui/text/input/TransformedText;->()V +HSPLandroidx/compose/ui/text/input/TransformedText;->(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/input/OffsetMapping;)V +HSPLandroidx/compose/ui/text/input/TransformedText;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/input/TransformedText;->getOffsetMapping()Landroidx/compose/ui/text/input/OffsetMapping; +HSPLandroidx/compose/ui/text/input/TransformedText;->getText()Landroidx/compose/ui/text/AnnotatedString; +Landroidx/compose/ui/text/input/VisualTransformation; +HSPLandroidx/compose/ui/text/input/VisualTransformation;->()V +Landroidx/compose/ui/text/input/VisualTransformation$Companion; +HSPLandroidx/compose/ui/text/input/VisualTransformation$Companion;->()V +HSPLandroidx/compose/ui/text/input/VisualTransformation$Companion;->()V +HSPLandroidx/compose/ui/text/input/VisualTransformation$Companion;->getNone()Landroidx/compose/ui/text/input/VisualTransformation; +Landroidx/compose/ui/text/input/VisualTransformation$Companion$None$1; +HSPLandroidx/compose/ui/text/input/VisualTransformation$Companion$None$1;->()V +HSPLandroidx/compose/ui/text/input/VisualTransformation$Companion$None$1;->()V +HSPLandroidx/compose/ui/text/input/VisualTransformation$Companion$None$1;->filter(Landroidx/compose/ui/text/AnnotatedString;)Landroidx/compose/ui/text/input/TransformedText; +Landroidx/compose/ui/text/intl/AndroidLocale; +HSPLandroidx/compose/ui/text/intl/AndroidLocale;->(Ljava/util/Locale;)V +Landroidx/compose/ui/text/intl/AndroidLocaleDelegateAPI24; +HSPLandroidx/compose/ui/text/intl/AndroidLocaleDelegateAPI24;->()V +HSPLandroidx/compose/ui/text/intl/AndroidLocaleDelegateAPI24;->getCurrent()Landroidx/compose/ui/text/intl/LocaleList; +Landroidx/compose/ui/text/intl/AndroidPlatformLocale_androidKt; +HSPLandroidx/compose/ui/text/intl/AndroidPlatformLocale_androidKt;->createPlatformLocaleDelegate()Landroidx/compose/ui/text/intl/PlatformLocaleDelegate; +Landroidx/compose/ui/text/intl/Locale; +HSPLandroidx/compose/ui/text/intl/Locale;->()V +HSPLandroidx/compose/ui/text/intl/Locale;->(Landroidx/compose/ui/text/intl/PlatformLocale;)V +Landroidx/compose/ui/text/intl/Locale$Companion; +HSPLandroidx/compose/ui/text/intl/Locale$Companion;->()V +HSPLandroidx/compose/ui/text/intl/Locale$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/text/intl/LocaleList; +HSPLandroidx/compose/ui/text/intl/LocaleList;->()V +HSPLandroidx/compose/ui/text/intl/LocaleList;->(Ljava/util/List;)V +HSPLandroidx/compose/ui/text/intl/LocaleList;->equals(Ljava/lang/Object;)Z +Landroidx/compose/ui/text/intl/LocaleList$Companion; +HSPLandroidx/compose/ui/text/intl/LocaleList$Companion;->()V +HSPLandroidx/compose/ui/text/intl/LocaleList$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/intl/LocaleList$Companion;->getCurrent()Landroidx/compose/ui/text/intl/LocaleList; +Landroidx/compose/ui/text/intl/PlatformLocale; +Landroidx/compose/ui/text/intl/PlatformLocaleDelegate; +Landroidx/compose/ui/text/intl/PlatformLocaleKt; +HSPLandroidx/compose/ui/text/intl/PlatformLocaleKt;->()V +HSPLandroidx/compose/ui/text/intl/PlatformLocaleKt;->getPlatformLocaleDelegate()Landroidx/compose/ui/text/intl/PlatformLocaleDelegate; +Landroidx/compose/ui/text/platform/AndroidAccessibilitySpannableString_androidKt; +HSPLandroidx/compose/ui/text/platform/AndroidAccessibilitySpannableString_androidKt;->setSpanStyle(Landroid/text/SpannableString;Landroidx/compose/ui/text/SpanStyle;IILandroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;)V +HSPLandroidx/compose/ui/text/platform/AndroidAccessibilitySpannableString_androidKt;->toAccessibilitySpannableString(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;Landroidx/compose/ui/text/platform/URLSpanCache;)Landroid/text/SpannableString; +Landroidx/compose/ui/text/platform/AndroidParagraphHelper_androidKt; +HSPLandroidx/compose/ui/text/platform/AndroidParagraphHelper_androidKt;->()V +HSPLandroidx/compose/ui/text/platform/AndroidParagraphHelper_androidKt;->createCharSequence(Ljava/lang/String;FLandroidx/compose/ui/text/TextStyle;Ljava/util/List;Ljava/util/List;Landroidx/compose/ui/unit/Density;Lkotlin/jvm/functions/Function4;Z)Ljava/lang/CharSequence; +HSPLandroidx/compose/ui/text/platform/AndroidParagraphHelper_androidKt;->isIncludeFontPaddingEnabled(Landroidx/compose/ui/text/TextStyle;)Z +Landroidx/compose/ui/text/platform/AndroidParagraphHelper_androidKt$NoopSpan$1; +HSPLandroidx/compose/ui/text/platform/AndroidParagraphHelper_androidKt$NoopSpan$1;->()V +Landroidx/compose/ui/text/platform/AndroidParagraphIntrinsics; +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;->(Ljava/lang/String;Landroidx/compose/ui/text/TextStyle;Ljava/util/List;Ljava/util/List;Landroidx/compose/ui/text/font/FontFamily$Resolver;Landroidx/compose/ui/unit/Density;)V +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;->getCharSequence$ui_text_release()Ljava/lang/CharSequence; +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;->getFontFamilyResolver()Landroidx/compose/ui/text/font/FontFamily$Resolver; +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;->getHasStaleResolvedFonts()Z +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;->getLayoutIntrinsics$ui_text_release()Landroidx/compose/ui/text/android/LayoutIntrinsics; +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;->getMaxIntrinsicWidth()F +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;->getMinIntrinsicWidth()F +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;->getStyle()Landroidx/compose/ui/text/TextStyle; +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;->getTextDirectionHeuristic$ui_text_release()I +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;->getTextPaint$ui_text_release()Landroidx/compose/ui/text/platform/AndroidTextPaint; +Landroidx/compose/ui/text/platform/AndroidParagraphIntrinsics$resolveTypeface$1; +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics$resolveTypeface$1;->(Landroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;)V +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics$resolveTypeface$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics$resolveTypeface$1;->invoke-DPcqOEQ(Landroidx/compose/ui/text/font/FontFamily;Landroidx/compose/ui/text/font/FontWeight;II)Landroid/graphics/Typeface; +Landroidx/compose/ui/text/platform/AndroidParagraphIntrinsics_androidKt; +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics_androidKt;->ActualParagraphIntrinsics(Ljava/lang/String;Landroidx/compose/ui/text/TextStyle;Ljava/util/List;Ljava/util/List;Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;)Landroidx/compose/ui/text/ParagraphIntrinsics; +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics_androidKt;->access$getHasEmojiCompat(Landroidx/compose/ui/text/TextStyle;)Z +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics_androidKt;->getHasEmojiCompat(Landroidx/compose/ui/text/TextStyle;)Z +HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics_androidKt;->resolveTextDirectionHeuristics-9GRLPo0(Landroidx/compose/ui/text/style/TextDirection;Landroidx/compose/ui/text/intl/LocaleList;)I +Landroidx/compose/ui/text/platform/AndroidParagraph_androidKt; +HSPLandroidx/compose/ui/text/platform/AndroidParagraph_androidKt;->ActualParagraph--hBUhpc(Landroidx/compose/ui/text/ParagraphIntrinsics;IZJ)Landroidx/compose/ui/text/Paragraph; +HSPLandroidx/compose/ui/text/platform/AndroidParagraph_androidKt;->ActualParagraph-O3s9Psw(Ljava/lang/String;Landroidx/compose/ui/text/TextStyle;Ljava/util/List;Ljava/util/List;IZJLandroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;)Landroidx/compose/ui/text/Paragraph; +Landroidx/compose/ui/text/platform/AndroidTextPaint; +HSPLandroidx/compose/ui/text/platform/AndroidTextPaint;->(IF)V +HSPLandroidx/compose/ui/text/platform/AndroidTextPaint;->getBlendMode-0nO6VwU()I +HSPLandroidx/compose/ui/text/platform/AndroidTextPaint;->setBlendMode-s9anfk8(I)V +HSPLandroidx/compose/ui/text/platform/AndroidTextPaint;->setBrush-12SF9DM(Landroidx/compose/ui/graphics/Brush;JF)V +HSPLandroidx/compose/ui/text/platform/AndroidTextPaint;->setColor-8_81llA(J)V +HSPLandroidx/compose/ui/text/platform/AndroidTextPaint;->setDrawStyle(Landroidx/compose/ui/graphics/drawscope/DrawStyle;)V +HSPLandroidx/compose/ui/text/platform/AndroidTextPaint;->setShadow(Landroidx/compose/ui/graphics/Shadow;)V +HSPLandroidx/compose/ui/text/platform/AndroidTextPaint;->setTextDecoration(Landroidx/compose/ui/text/style/TextDecoration;)V +Landroidx/compose/ui/text/platform/DefaultImpl; +HSPLandroidx/compose/ui/text/platform/DefaultImpl;->()V +HSPLandroidx/compose/ui/text/platform/DefaultImpl;->access$setLoadState$p(Landroidx/compose/ui/text/platform/DefaultImpl;Landroidx/compose/runtime/State;)V +HSPLandroidx/compose/ui/text/platform/DefaultImpl;->getFontLoadState()Landroidx/compose/runtime/State; +HSPLandroidx/compose/ui/text/platform/DefaultImpl;->getFontLoaded()Landroidx/compose/runtime/State; +Landroidx/compose/ui/text/platform/DefaultImpl$getFontLoadState$initCallback$1; +HSPLandroidx/compose/ui/text/platform/DefaultImpl$getFontLoadState$initCallback$1;->(Landroidx/compose/runtime/MutableState;Landroidx/compose/ui/text/platform/DefaultImpl;)V +HSPLandroidx/compose/ui/text/platform/DefaultImpl$getFontLoadState$initCallback$1;->onInitialized()V +Landroidx/compose/ui/text/platform/EmojiCompatStatus; +HSPLandroidx/compose/ui/text/platform/EmojiCompatStatus;->()V +HSPLandroidx/compose/ui/text/platform/EmojiCompatStatus;->()V +HSPLandroidx/compose/ui/text/platform/EmojiCompatStatus;->getFontLoaded()Landroidx/compose/runtime/State; +Landroidx/compose/ui/text/platform/EmojiCompatStatusDelegate; +Landroidx/compose/ui/text/platform/ImmutableBool; +HSPLandroidx/compose/ui/text/platform/ImmutableBool;->(Z)V +HSPLandroidx/compose/ui/text/platform/ImmutableBool;->getValue()Ljava/lang/Boolean; +HSPLandroidx/compose/ui/text/platform/ImmutableBool;->getValue()Ljava/lang/Object; +Landroidx/compose/ui/text/platform/Synchronization_jvmKt; +HSPLandroidx/compose/ui/text/platform/Synchronization_jvmKt;->createSynchronizedObject()Landroidx/compose/ui/text/platform/SynchronizedObject; +Landroidx/compose/ui/text/platform/SynchronizedObject; +HSPLandroidx/compose/ui/text/platform/SynchronizedObject;->()V +Landroidx/compose/ui/text/platform/URLSpanCache; +HSPLandroidx/compose/ui/text/platform/URLSpanCache;->()V +HSPLandroidx/compose/ui/text/platform/URLSpanCache;->()V +Landroidx/compose/ui/text/platform/extensions/LocaleListHelperMethods; +Landroidx/compose/ui/text/platform/extensions/PlaceholderExtensions_androidKt; +HSPLandroidx/compose/ui/text/platform/extensions/PlaceholderExtensions_androidKt;->setPlaceholders(Landroid/text/Spannable;Ljava/util/List;Landroidx/compose/ui/unit/Density;)V +Landroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt; +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->flattenFontStylesAndApply(Landroidx/compose/ui/text/SpanStyle;Ljava/util/List;Lkotlin/jvm/functions/Function3;)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->getNeedsLetterSpacingSpan(Landroidx/compose/ui/text/SpanStyle;)Z +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->hasFontAttributes(Landroidx/compose/ui/text/TextStyle;)Z +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->merge(Landroidx/compose/ui/text/SpanStyle;Landroidx/compose/ui/text/SpanStyle;)Landroidx/compose/ui/text/SpanStyle; +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->resolveLineHeightInPx-o2QH7mI(JFLandroidx/compose/ui/unit/Density;)F +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setBackground-RPmYEkk(Landroid/text/Spannable;JII)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setBaselineShift-0ocSgnM(Landroid/text/Spannable;Landroidx/compose/ui/text/style/BaselineShift;II)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setBrush(Landroid/text/Spannable;Landroidx/compose/ui/graphics/Brush;FII)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setColor-RPmYEkk(Landroid/text/Spannable;JII)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setDrawStyle(Landroid/text/Spannable;Landroidx/compose/ui/graphics/drawscope/DrawStyle;II)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setFontAttributes(Landroid/text/Spannable;Landroidx/compose/ui/text/TextStyle;Ljava/util/List;Lkotlin/jvm/functions/Function4;)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setFontFeatureSettings(Landroid/text/Spannable;Ljava/lang/String;II)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setFontSize-KmRG4DE(Landroid/text/Spannable;JLandroidx/compose/ui/unit/Density;II)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setGeometricTransform(Landroid/text/Spannable;Landroidx/compose/ui/text/style/TextGeometricTransform;II)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setLineHeight-r9BaKPg(Landroid/text/Spannable;JFLandroidx/compose/ui/unit/Density;)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setLocaleList(Landroid/text/Spannable;Landroidx/compose/ui/text/intl/LocaleList;II)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setShadow(Landroid/text/Spannable;Landroidx/compose/ui/graphics/Shadow;II)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setSpan(Landroid/text/Spannable;Ljava/lang/Object;II)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setSpanStyle(Landroid/text/Spannable;Landroidx/compose/ui/text/AnnotatedString$Range;Landroidx/compose/ui/unit/Density;)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setSpanStyles(Landroid/text/Spannable;Landroidx/compose/ui/text/TextStyle;Ljava/util/List;Landroidx/compose/ui/unit/Density;Lkotlin/jvm/functions/Function4;)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setTextDecoration(Landroid/text/Spannable;Landroidx/compose/ui/text/style/TextDecoration;II)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setTextIndent(Landroid/text/Spannable;Landroidx/compose/ui/text/style/TextIndent;FLandroidx/compose/ui/unit/Density;)V +Landroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt$setFontAttributes$1; +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt$setFontAttributes$1;->(Landroid/text/Spannable;Lkotlin/jvm/functions/Function4;)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt$setFontAttributes$1;->invoke(Landroidx/compose/ui/text/SpanStyle;II)V +HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt$setFontAttributes$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/compose/ui/text/platform/extensions/TextPaintExtensions_androidKt; +HSPLandroidx/compose/ui/text/platform/extensions/TextPaintExtensions_androidKt;->applySpanStyle(Landroidx/compose/ui/text/platform/AndroidTextPaint;Landroidx/compose/ui/text/SpanStyle;Lkotlin/jvm/functions/Function4;Landroidx/compose/ui/unit/Density;Z)Landroidx/compose/ui/text/SpanStyle; +HSPLandroidx/compose/ui/text/platform/extensions/TextPaintExtensions_androidKt;->generateFallbackSpanStyle-62GTOB8(JZJLandroidx/compose/ui/text/style/BaselineShift;)Landroidx/compose/ui/text/SpanStyle; +HSPLandroidx/compose/ui/text/platform/extensions/TextPaintExtensions_androidKt;->hasFontAttributes(Landroidx/compose/ui/text/SpanStyle;)Z +HSPLandroidx/compose/ui/text/platform/extensions/TextPaintExtensions_androidKt;->setTextMotion(Landroidx/compose/ui/text/platform/AndroidTextPaint;Landroidx/compose/ui/text/style/TextMotion;)V +Landroidx/compose/ui/text/platform/style/ShaderBrushSpan; +Landroidx/compose/ui/text/style/BaselineShift; +HSPLandroidx/compose/ui/text/style/BaselineShift;->()V +HSPLandroidx/compose/ui/text/style/BaselineShift;->(F)V +HSPLandroidx/compose/ui/text/style/BaselineShift;->access$getNone$cp()F +HSPLandroidx/compose/ui/text/style/BaselineShift;->box-impl(F)Landroidx/compose/ui/text/style/BaselineShift; +HSPLandroidx/compose/ui/text/style/BaselineShift;->constructor-impl(F)F +HSPLandroidx/compose/ui/text/style/BaselineShift;->equals-impl0(FF)Z +HSPLandroidx/compose/ui/text/style/BaselineShift;->unbox-impl()F +Landroidx/compose/ui/text/style/BaselineShift$Companion; +HSPLandroidx/compose/ui/text/style/BaselineShift$Companion;->()V +HSPLandroidx/compose/ui/text/style/BaselineShift$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/BaselineShift$Companion;->getNone-y9eOQZs()F +Landroidx/compose/ui/text/style/BrushStyle; +Landroidx/compose/ui/text/style/ColorStyle; +HSPLandroidx/compose/ui/text/style/ColorStyle;->(J)V +HSPLandroidx/compose/ui/text/style/ColorStyle;->(JLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/ColorStyle;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/style/ColorStyle;->getAlpha()F +HSPLandroidx/compose/ui/text/style/ColorStyle;->getBrush()Landroidx/compose/ui/graphics/Brush; +HSPLandroidx/compose/ui/text/style/ColorStyle;->getColor-0d7_KjU()J +Landroidx/compose/ui/text/style/Hyphens; +HSPLandroidx/compose/ui/text/style/Hyphens;->()V +HSPLandroidx/compose/ui/text/style/Hyphens;->(I)V +HSPLandroidx/compose/ui/text/style/Hyphens;->access$getAuto$cp()I +HSPLandroidx/compose/ui/text/style/Hyphens;->access$getNone$cp()I +HSPLandroidx/compose/ui/text/style/Hyphens;->box-impl(I)Landroidx/compose/ui/text/style/Hyphens; +HSPLandroidx/compose/ui/text/style/Hyphens;->constructor-impl(I)I +HSPLandroidx/compose/ui/text/style/Hyphens;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/style/Hyphens;->equals-impl(ILjava/lang/Object;)Z +HSPLandroidx/compose/ui/text/style/Hyphens;->equals-impl0(II)Z +HSPLandroidx/compose/ui/text/style/Hyphens;->unbox-impl()I +Landroidx/compose/ui/text/style/Hyphens$Companion; +HSPLandroidx/compose/ui/text/style/Hyphens$Companion;->()V +HSPLandroidx/compose/ui/text/style/Hyphens$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/Hyphens$Companion;->getAuto-vmbZdU8()I +HSPLandroidx/compose/ui/text/style/Hyphens$Companion;->getNone-vmbZdU8()I +Landroidx/compose/ui/text/style/LineBreak; +HSPLandroidx/compose/ui/text/style/LineBreak;->()V +HSPLandroidx/compose/ui/text/style/LineBreak;->(I)V +HSPLandroidx/compose/ui/text/style/LineBreak;->access$getSimple$cp()I +HSPLandroidx/compose/ui/text/style/LineBreak;->box-impl(I)Landroidx/compose/ui/text/style/LineBreak; +HSPLandroidx/compose/ui/text/style/LineBreak;->constructor-impl(I)I +HSPLandroidx/compose/ui/text/style/LineBreak;->constructor-impl(III)I +HSPLandroidx/compose/ui/text/style/LineBreak;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/style/LineBreak;->equals-impl(ILjava/lang/Object;)Z +HSPLandroidx/compose/ui/text/style/LineBreak;->getStrategy-fcGXIks(I)I +HSPLandroidx/compose/ui/text/style/LineBreak;->getStrictness-usljTpc(I)I +HSPLandroidx/compose/ui/text/style/LineBreak;->getWordBreak-jp8hJ3c(I)I +HSPLandroidx/compose/ui/text/style/LineBreak;->unbox-impl()I +Landroidx/compose/ui/text/style/LineBreak$Companion; +HSPLandroidx/compose/ui/text/style/LineBreak$Companion;->()V +HSPLandroidx/compose/ui/text/style/LineBreak$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/LineBreak$Companion;->getSimple-rAG3T2k()I +Landroidx/compose/ui/text/style/LineBreak$Strategy; +HSPLandroidx/compose/ui/text/style/LineBreak$Strategy;->()V +HSPLandroidx/compose/ui/text/style/LineBreak$Strategy;->(I)V +HSPLandroidx/compose/ui/text/style/LineBreak$Strategy;->access$getBalanced$cp()I +HSPLandroidx/compose/ui/text/style/LineBreak$Strategy;->access$getHighQuality$cp()I +HSPLandroidx/compose/ui/text/style/LineBreak$Strategy;->access$getSimple$cp()I +HSPLandroidx/compose/ui/text/style/LineBreak$Strategy;->box-impl(I)Landroidx/compose/ui/text/style/LineBreak$Strategy; +HSPLandroidx/compose/ui/text/style/LineBreak$Strategy;->constructor-impl(I)I +HSPLandroidx/compose/ui/text/style/LineBreak$Strategy;->equals-impl0(II)Z +HSPLandroidx/compose/ui/text/style/LineBreak$Strategy;->unbox-impl()I +Landroidx/compose/ui/text/style/LineBreak$Strategy$Companion; +HSPLandroidx/compose/ui/text/style/LineBreak$Strategy$Companion;->()V +HSPLandroidx/compose/ui/text/style/LineBreak$Strategy$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/LineBreak$Strategy$Companion;->getBalanced-fcGXIks()I +HSPLandroidx/compose/ui/text/style/LineBreak$Strategy$Companion;->getHighQuality-fcGXIks()I +HSPLandroidx/compose/ui/text/style/LineBreak$Strategy$Companion;->getSimple-fcGXIks()I +Landroidx/compose/ui/text/style/LineBreak$Strictness; +HSPLandroidx/compose/ui/text/style/LineBreak$Strictness;->()V +HSPLandroidx/compose/ui/text/style/LineBreak$Strictness;->(I)V +HSPLandroidx/compose/ui/text/style/LineBreak$Strictness;->access$getDefault$cp()I +HSPLandroidx/compose/ui/text/style/LineBreak$Strictness;->access$getLoose$cp()I +HSPLandroidx/compose/ui/text/style/LineBreak$Strictness;->access$getNormal$cp()I +HSPLandroidx/compose/ui/text/style/LineBreak$Strictness;->access$getStrict$cp()I +HSPLandroidx/compose/ui/text/style/LineBreak$Strictness;->box-impl(I)Landroidx/compose/ui/text/style/LineBreak$Strictness; +HSPLandroidx/compose/ui/text/style/LineBreak$Strictness;->constructor-impl(I)I +HSPLandroidx/compose/ui/text/style/LineBreak$Strictness;->equals-impl0(II)Z +HSPLandroidx/compose/ui/text/style/LineBreak$Strictness;->unbox-impl()I +Landroidx/compose/ui/text/style/LineBreak$Strictness$Companion; +HSPLandroidx/compose/ui/text/style/LineBreak$Strictness$Companion;->()V +HSPLandroidx/compose/ui/text/style/LineBreak$Strictness$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/LineBreak$Strictness$Companion;->getDefault-usljTpc()I +HSPLandroidx/compose/ui/text/style/LineBreak$Strictness$Companion;->getLoose-usljTpc()I +HSPLandroidx/compose/ui/text/style/LineBreak$Strictness$Companion;->getNormal-usljTpc()I +HSPLandroidx/compose/ui/text/style/LineBreak$Strictness$Companion;->getStrict-usljTpc()I +Landroidx/compose/ui/text/style/LineBreak$WordBreak; +HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak;->()V +HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak;->(I)V +HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak;->access$getDefault$cp()I +HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak;->access$getPhrase$cp()I +HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak;->box-impl(I)Landroidx/compose/ui/text/style/LineBreak$WordBreak; +HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak;->constructor-impl(I)I +HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak;->equals-impl0(II)Z +HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak;->unbox-impl()I +Landroidx/compose/ui/text/style/LineBreak$WordBreak$Companion; +HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak$Companion;->()V +HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak$Companion;->getDefault-jp8hJ3c()I +HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak$Companion;->getPhrase-jp8hJ3c()I +Landroidx/compose/ui/text/style/LineBreak_androidKt; +HSPLandroidx/compose/ui/text/style/LineBreak_androidKt;->access$packBytes(III)I +HSPLandroidx/compose/ui/text/style/LineBreak_androidKt;->access$unpackByte1(I)I +HSPLandroidx/compose/ui/text/style/LineBreak_androidKt;->access$unpackByte2(I)I +HSPLandroidx/compose/ui/text/style/LineBreak_androidKt;->access$unpackByte3(I)I +HSPLandroidx/compose/ui/text/style/LineBreak_androidKt;->packBytes(III)I +HSPLandroidx/compose/ui/text/style/LineBreak_androidKt;->unpackByte1(I)I +HSPLandroidx/compose/ui/text/style/LineBreak_androidKt;->unpackByte2(I)I +HSPLandroidx/compose/ui/text/style/LineBreak_androidKt;->unpackByte3(I)I +Landroidx/compose/ui/text/style/LineHeightStyle; +Landroidx/compose/ui/text/style/TextAlign; +HSPLandroidx/compose/ui/text/style/TextAlign;->()V +HSPLandroidx/compose/ui/text/style/TextAlign;->(I)V +HSPLandroidx/compose/ui/text/style/TextAlign;->access$getCenter$cp()I +HSPLandroidx/compose/ui/text/style/TextAlign;->access$getEnd$cp()I +HSPLandroidx/compose/ui/text/style/TextAlign;->access$getJustify$cp()I +HSPLandroidx/compose/ui/text/style/TextAlign;->access$getLeft$cp()I +HSPLandroidx/compose/ui/text/style/TextAlign;->access$getRight$cp()I +HSPLandroidx/compose/ui/text/style/TextAlign;->access$getStart$cp()I +HSPLandroidx/compose/ui/text/style/TextAlign;->box-impl(I)Landroidx/compose/ui/text/style/TextAlign; +HSPLandroidx/compose/ui/text/style/TextAlign;->constructor-impl(I)I +HSPLandroidx/compose/ui/text/style/TextAlign;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/style/TextAlign;->equals-impl(ILjava/lang/Object;)Z +HSPLandroidx/compose/ui/text/style/TextAlign;->equals-impl0(II)Z +HSPLandroidx/compose/ui/text/style/TextAlign;->unbox-impl()I +Landroidx/compose/ui/text/style/TextAlign$Companion; +HSPLandroidx/compose/ui/text/style/TextAlign$Companion;->()V +HSPLandroidx/compose/ui/text/style/TextAlign$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/TextAlign$Companion;->getCenter-e0LSkKk()I +HSPLandroidx/compose/ui/text/style/TextAlign$Companion;->getEnd-e0LSkKk()I +HSPLandroidx/compose/ui/text/style/TextAlign$Companion;->getJustify-e0LSkKk()I +HSPLandroidx/compose/ui/text/style/TextAlign$Companion;->getLeft-e0LSkKk()I +HSPLandroidx/compose/ui/text/style/TextAlign$Companion;->getRight-e0LSkKk()I +HSPLandroidx/compose/ui/text/style/TextAlign$Companion;->getStart-e0LSkKk()I +Landroidx/compose/ui/text/style/TextDecoration; +HSPLandroidx/compose/ui/text/style/TextDecoration;->()V +HSPLandroidx/compose/ui/text/style/TextDecoration;->(I)V +HSPLandroidx/compose/ui/text/style/TextDecoration;->access$getNone$cp()Landroidx/compose/ui/text/style/TextDecoration; +HSPLandroidx/compose/ui/text/style/TextDecoration;->access$getUnderline$cp()Landroidx/compose/ui/text/style/TextDecoration; +HSPLandroidx/compose/ui/text/style/TextDecoration;->equals(Ljava/lang/Object;)Z +Landroidx/compose/ui/text/style/TextDecoration$Companion; +HSPLandroidx/compose/ui/text/style/TextDecoration$Companion;->()V +HSPLandroidx/compose/ui/text/style/TextDecoration$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/TextDecoration$Companion;->getNone()Landroidx/compose/ui/text/style/TextDecoration; +HSPLandroidx/compose/ui/text/style/TextDecoration$Companion;->getUnderline()Landroidx/compose/ui/text/style/TextDecoration; +Landroidx/compose/ui/text/style/TextDirection; +HSPLandroidx/compose/ui/text/style/TextDirection;->()V +HSPLandroidx/compose/ui/text/style/TextDirection;->(I)V +HSPLandroidx/compose/ui/text/style/TextDirection;->access$getContent$cp()I +HSPLandroidx/compose/ui/text/style/TextDirection;->access$getContentOrLtr$cp()I +HSPLandroidx/compose/ui/text/style/TextDirection;->access$getContentOrRtl$cp()I +HSPLandroidx/compose/ui/text/style/TextDirection;->access$getLtr$cp()I +HSPLandroidx/compose/ui/text/style/TextDirection;->access$getRtl$cp()I +HSPLandroidx/compose/ui/text/style/TextDirection;->box-impl(I)Landroidx/compose/ui/text/style/TextDirection; +HSPLandroidx/compose/ui/text/style/TextDirection;->constructor-impl(I)I +HSPLandroidx/compose/ui/text/style/TextDirection;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/style/TextDirection;->equals-impl(ILjava/lang/Object;)Z +HSPLandroidx/compose/ui/text/style/TextDirection;->equals-impl0(II)Z +HSPLandroidx/compose/ui/text/style/TextDirection;->unbox-impl()I +Landroidx/compose/ui/text/style/TextDirection$Companion; +HSPLandroidx/compose/ui/text/style/TextDirection$Companion;->()V +HSPLandroidx/compose/ui/text/style/TextDirection$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/TextDirection$Companion;->getContent-s_7X-co()I +HSPLandroidx/compose/ui/text/style/TextDirection$Companion;->getContentOrLtr-s_7X-co()I +HSPLandroidx/compose/ui/text/style/TextDirection$Companion;->getContentOrRtl-s_7X-co()I +HSPLandroidx/compose/ui/text/style/TextDirection$Companion;->getLtr-s_7X-co()I +HSPLandroidx/compose/ui/text/style/TextDirection$Companion;->getRtl-s_7X-co()I +Landroidx/compose/ui/text/style/TextForegroundStyle; +HSPLandroidx/compose/ui/text/style/TextForegroundStyle;->()V +HSPLandroidx/compose/ui/text/style/TextForegroundStyle;->merge(Landroidx/compose/ui/text/style/TextForegroundStyle;)Landroidx/compose/ui/text/style/TextForegroundStyle; +HSPLandroidx/compose/ui/text/style/TextForegroundStyle;->takeOrElse(Lkotlin/jvm/functions/Function0;)Landroidx/compose/ui/text/style/TextForegroundStyle; +Landroidx/compose/ui/text/style/TextForegroundStyle$Companion; +HSPLandroidx/compose/ui/text/style/TextForegroundStyle$Companion;->()V +HSPLandroidx/compose/ui/text/style/TextForegroundStyle$Companion;->()V +HSPLandroidx/compose/ui/text/style/TextForegroundStyle$Companion;->from-8_81llA(J)Landroidx/compose/ui/text/style/TextForegroundStyle; +Landroidx/compose/ui/text/style/TextForegroundStyle$Unspecified; +HSPLandroidx/compose/ui/text/style/TextForegroundStyle$Unspecified;->()V +HSPLandroidx/compose/ui/text/style/TextForegroundStyle$Unspecified;->()V +HSPLandroidx/compose/ui/text/style/TextForegroundStyle$Unspecified;->getAlpha()F +HSPLandroidx/compose/ui/text/style/TextForegroundStyle$Unspecified;->getBrush()Landroidx/compose/ui/graphics/Brush; +HSPLandroidx/compose/ui/text/style/TextForegroundStyle$Unspecified;->getColor-0d7_KjU()J +Landroidx/compose/ui/text/style/TextForegroundStyle$merge$2; +HSPLandroidx/compose/ui/text/style/TextForegroundStyle$merge$2;->(Landroidx/compose/ui/text/style/TextForegroundStyle;)V +HSPLandroidx/compose/ui/text/style/TextForegroundStyle$merge$2;->invoke()Landroidx/compose/ui/text/style/TextForegroundStyle; +HSPLandroidx/compose/ui/text/style/TextForegroundStyle$merge$2;->invoke()Ljava/lang/Object; +Landroidx/compose/ui/text/style/TextGeometricTransform; +HSPLandroidx/compose/ui/text/style/TextGeometricTransform;->()V +HSPLandroidx/compose/ui/text/style/TextGeometricTransform;->(FF)V +HSPLandroidx/compose/ui/text/style/TextGeometricTransform;->access$getNone$cp()Landroidx/compose/ui/text/style/TextGeometricTransform; +HSPLandroidx/compose/ui/text/style/TextGeometricTransform;->equals(Ljava/lang/Object;)Z +Landroidx/compose/ui/text/style/TextGeometricTransform$Companion; +HSPLandroidx/compose/ui/text/style/TextGeometricTransform$Companion;->()V +HSPLandroidx/compose/ui/text/style/TextGeometricTransform$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/TextGeometricTransform$Companion;->getNone$ui_text_release()Landroidx/compose/ui/text/style/TextGeometricTransform; +Landroidx/compose/ui/text/style/TextIndent; +HSPLandroidx/compose/ui/text/style/TextIndent;->()V +HSPLandroidx/compose/ui/text/style/TextIndent;->(JJ)V +HSPLandroidx/compose/ui/text/style/TextIndent;->(JJILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/TextIndent;->(JJLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/TextIndent;->access$getNone$cp()Landroidx/compose/ui/text/style/TextIndent; +HSPLandroidx/compose/ui/text/style/TextIndent;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/style/TextIndent;->getFirstLine-XSAIIZE()J +HSPLandroidx/compose/ui/text/style/TextIndent;->getRestLine-XSAIIZE()J +Landroidx/compose/ui/text/style/TextIndent$Companion; +HSPLandroidx/compose/ui/text/style/TextIndent$Companion;->()V +HSPLandroidx/compose/ui/text/style/TextIndent$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/TextIndent$Companion;->getNone()Landroidx/compose/ui/text/style/TextIndent; +Landroidx/compose/ui/text/style/TextMotion; +HSPLandroidx/compose/ui/text/style/TextMotion;->()V +HSPLandroidx/compose/ui/text/style/TextMotion;->(IZ)V +HSPLandroidx/compose/ui/text/style/TextMotion;->(IZLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/TextMotion;->access$getStatic$cp()Landroidx/compose/ui/text/style/TextMotion; +HSPLandroidx/compose/ui/text/style/TextMotion;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/text/style/TextMotion;->getLinearity-4e0Vf04$ui_text_release()I +HSPLandroidx/compose/ui/text/style/TextMotion;->getSubpixelTextPositioning$ui_text_release()Z +Landroidx/compose/ui/text/style/TextMotion$Companion; +HSPLandroidx/compose/ui/text/style/TextMotion$Companion;->()V +HSPLandroidx/compose/ui/text/style/TextMotion$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/TextMotion$Companion;->getStatic()Landroidx/compose/ui/text/style/TextMotion; +Landroidx/compose/ui/text/style/TextMotion$Linearity; +HSPLandroidx/compose/ui/text/style/TextMotion$Linearity;->()V +HSPLandroidx/compose/ui/text/style/TextMotion$Linearity;->access$getFontHinting$cp()I +HSPLandroidx/compose/ui/text/style/TextMotion$Linearity;->access$getLinear$cp()I +HSPLandroidx/compose/ui/text/style/TextMotion$Linearity;->constructor-impl(I)I +HSPLandroidx/compose/ui/text/style/TextMotion$Linearity;->equals-impl0(II)Z +Landroidx/compose/ui/text/style/TextMotion$Linearity$Companion; +HSPLandroidx/compose/ui/text/style/TextMotion$Linearity$Companion;->()V +HSPLandroidx/compose/ui/text/style/TextMotion$Linearity$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/TextMotion$Linearity$Companion;->getFontHinting-4e0Vf04()I +HSPLandroidx/compose/ui/text/style/TextMotion$Linearity$Companion;->getLinear-4e0Vf04()I +Landroidx/compose/ui/text/style/TextOverflow; +HSPLandroidx/compose/ui/text/style/TextOverflow;->()V +HSPLandroidx/compose/ui/text/style/TextOverflow;->access$getClip$cp()I +HSPLandroidx/compose/ui/text/style/TextOverflow;->access$getEllipsis$cp()I +HSPLandroidx/compose/ui/text/style/TextOverflow;->constructor-impl(I)I +HSPLandroidx/compose/ui/text/style/TextOverflow;->equals-impl0(II)Z +Landroidx/compose/ui/text/style/TextOverflow$Companion; +HSPLandroidx/compose/ui/text/style/TextOverflow$Companion;->()V +HSPLandroidx/compose/ui/text/style/TextOverflow$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/text/style/TextOverflow$Companion;->getClip-gIe3tQ8()I +HSPLandroidx/compose/ui/text/style/TextOverflow$Companion;->getEllipsis-gIe3tQ8()I +Landroidx/compose/ui/unit/AndroidDensity_androidKt; +HSPLandroidx/compose/ui/unit/AndroidDensity_androidKt;->Density(Landroid/content/Context;)Landroidx/compose/ui/unit/Density; +Landroidx/compose/ui/unit/Constraints; +HSPLandroidx/compose/ui/unit/Constraints;->()V +HSPLandroidx/compose/ui/unit/Constraints;->(J)V +HSPLandroidx/compose/ui/unit/Constraints;->access$getMinHeightOffsets$cp()[I +HSPLandroidx/compose/ui/unit/Constraints;->box-impl(J)Landroidx/compose/ui/unit/Constraints; +HSPLandroidx/compose/ui/unit/Constraints;->constructor-impl(J)J +HSPLandroidx/compose/ui/unit/Constraints;->copy-Zbe2FdA$default(JIIIIILjava/lang/Object;)J +HSPLandroidx/compose/ui/unit/Constraints;->copy-Zbe2FdA(JIIII)J +HSPLandroidx/compose/ui/unit/Constraints;->equals-impl0(JJ)Z +HSPLandroidx/compose/ui/unit/Constraints;->getFocusIndex-impl(J)I +HSPLandroidx/compose/ui/unit/Constraints;->getHasBoundedHeight-impl(J)Z +HSPLandroidx/compose/ui/unit/Constraints;->getHasBoundedWidth-impl(J)Z +HSPLandroidx/compose/ui/unit/Constraints;->getHasFixedHeight-impl(J)Z +HSPLandroidx/compose/ui/unit/Constraints;->getHasFixedWidth-impl(J)Z +HSPLandroidx/compose/ui/unit/Constraints;->getMaxHeight-impl(J)I +HSPLandroidx/compose/ui/unit/Constraints;->getMaxWidth-impl(J)I +HSPLandroidx/compose/ui/unit/Constraints;->getMinHeight-impl(J)I +HSPLandroidx/compose/ui/unit/Constraints;->getMinWidth-impl(J)I +HSPLandroidx/compose/ui/unit/Constraints;->unbox-impl()J +Landroidx/compose/ui/unit/Constraints$Companion; +HSPLandroidx/compose/ui/unit/Constraints$Companion;->()V +HSPLandroidx/compose/ui/unit/Constraints$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/unit/Constraints$Companion;->bitsNeedForSize(I)I +HSPLandroidx/compose/ui/unit/Constraints$Companion;->createConstraints-Zbe2FdA$ui_unit_release(IIII)J +HSPLandroidx/compose/ui/unit/Constraints$Companion;->fixed-JhjzzOo(II)J +Landroidx/compose/ui/unit/ConstraintsKt; +HSPLandroidx/compose/ui/unit/ConstraintsKt;->Constraints$default(IIIIILjava/lang/Object;)J +HSPLandroidx/compose/ui/unit/ConstraintsKt;->Constraints(IIII)J +HSPLandroidx/compose/ui/unit/ConstraintsKt;->addMaxWithMinimum(II)I +HSPLandroidx/compose/ui/unit/ConstraintsKt;->constrain-4WqzIAM(JJ)J +HSPLandroidx/compose/ui/unit/ConstraintsKt;->constrain-N9IONVI(JJ)J +HSPLandroidx/compose/ui/unit/ConstraintsKt;->constrainHeight-K40F9xA(JI)I +HSPLandroidx/compose/ui/unit/ConstraintsKt;->constrainWidth-K40F9xA(JI)I +HSPLandroidx/compose/ui/unit/ConstraintsKt;->offset-NN6Ew-U(JII)J +Landroidx/compose/ui/unit/Density; +HSPLandroidx/compose/ui/unit/Density;->roundToPx-0680j_4(F)I +HSPLandroidx/compose/ui/unit/Density;->toDp-GaN1DYA(J)F +HSPLandroidx/compose/ui/unit/Density;->toDp-u2uoSUM(F)F +HSPLandroidx/compose/ui/unit/Density;->toDp-u2uoSUM(I)F +HSPLandroidx/compose/ui/unit/Density;->toDpSize-k-rfVVM(J)J +HSPLandroidx/compose/ui/unit/Density;->toPx--R2X_6o(J)F +HSPLandroidx/compose/ui/unit/Density;->toPx-0680j_4(F)F +HSPLandroidx/compose/ui/unit/Density;->toSize-XkaWNTQ(J)J +Landroidx/compose/ui/unit/DensityImpl; +HSPLandroidx/compose/ui/unit/DensityImpl;->(FF)V +HSPLandroidx/compose/ui/unit/DensityImpl;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/unit/DensityImpl;->getDensity()F +HSPLandroidx/compose/ui/unit/DensityImpl;->getFontScale()F +Landroidx/compose/ui/unit/DensityKt; +HSPLandroidx/compose/ui/unit/DensityKt;->Density$default(FFILjava/lang/Object;)Landroidx/compose/ui/unit/Density; +HSPLandroidx/compose/ui/unit/DensityKt;->Density(FF)Landroidx/compose/ui/unit/Density; +Landroidx/compose/ui/unit/Dp; +HSPLandroidx/compose/ui/unit/Dp;->()V +HSPLandroidx/compose/ui/unit/Dp;->(F)V +HSPLandroidx/compose/ui/unit/Dp;->access$getHairline$cp()F +HSPLandroidx/compose/ui/unit/Dp;->access$getUnspecified$cp()F +HSPLandroidx/compose/ui/unit/Dp;->box-impl(F)Landroidx/compose/ui/unit/Dp; +HSPLandroidx/compose/ui/unit/Dp;->compareTo(Ljava/lang/Object;)I +HSPLandroidx/compose/ui/unit/Dp;->compareTo-0680j_4(F)I +HSPLandroidx/compose/ui/unit/Dp;->compareTo-0680j_4(FF)I +HSPLandroidx/compose/ui/unit/Dp;->constructor-impl(F)F +HSPLandroidx/compose/ui/unit/Dp;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/unit/Dp;->equals-impl(FLjava/lang/Object;)Z +HSPLandroidx/compose/ui/unit/Dp;->equals-impl0(FF)Z +HSPLandroidx/compose/ui/unit/Dp;->hashCode-impl(F)I +HSPLandroidx/compose/ui/unit/Dp;->unbox-impl()F +Landroidx/compose/ui/unit/Dp$Companion; +HSPLandroidx/compose/ui/unit/Dp$Companion;->()V +HSPLandroidx/compose/ui/unit/Dp$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/unit/Dp$Companion;->getHairline-D9Ej5fM()F +HSPLandroidx/compose/ui/unit/Dp$Companion;->getUnspecified-D9Ej5fM()F +Landroidx/compose/ui/unit/DpKt; +HSPLandroidx/compose/ui/unit/DpKt;->DpOffset-YgX7TsA(FF)J +HSPLandroidx/compose/ui/unit/DpKt;->DpSize-YgX7TsA(FF)J +Landroidx/compose/ui/unit/DpOffset; +HSPLandroidx/compose/ui/unit/DpOffset;->()V +HSPLandroidx/compose/ui/unit/DpOffset;->constructor-impl(J)J +Landroidx/compose/ui/unit/DpOffset$Companion; +HSPLandroidx/compose/ui/unit/DpOffset$Companion;->()V +HSPLandroidx/compose/ui/unit/DpOffset$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/compose/ui/unit/DpSize; +HSPLandroidx/compose/ui/unit/DpSize;->()V +HSPLandroidx/compose/ui/unit/DpSize;->(J)V +HSPLandroidx/compose/ui/unit/DpSize;->access$getUnspecified$cp()J +HSPLandroidx/compose/ui/unit/DpSize;->box-impl(J)Landroidx/compose/ui/unit/DpSize; +HSPLandroidx/compose/ui/unit/DpSize;->constructor-impl(J)J +HSPLandroidx/compose/ui/unit/DpSize;->equals-impl0(JJ)Z +HSPLandroidx/compose/ui/unit/DpSize;->getHeight-D9Ej5fM(J)F +HSPLandroidx/compose/ui/unit/DpSize;->getWidth-D9Ej5fM(J)F +HSPLandroidx/compose/ui/unit/DpSize;->unbox-impl()J +Landroidx/compose/ui/unit/DpSize$Companion; +HSPLandroidx/compose/ui/unit/DpSize$Companion;->()V +HSPLandroidx/compose/ui/unit/DpSize$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/unit/DpSize$Companion;->getUnspecified-MYxV2XQ()J +Landroidx/compose/ui/unit/IntOffset; +HSPLandroidx/compose/ui/unit/IntOffset;->()V +HSPLandroidx/compose/ui/unit/IntOffset;->(J)V +HSPLandroidx/compose/ui/unit/IntOffset;->access$getZero$cp()J +HSPLandroidx/compose/ui/unit/IntOffset;->box-impl(J)Landroidx/compose/ui/unit/IntOffset; +HSPLandroidx/compose/ui/unit/IntOffset;->component1-impl(J)I +HSPLandroidx/compose/ui/unit/IntOffset;->component2-impl(J)I +HSPLandroidx/compose/ui/unit/IntOffset;->constructor-impl(J)J +HSPLandroidx/compose/ui/unit/IntOffset;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/unit/IntOffset;->equals-impl(JLjava/lang/Object;)Z +HSPLandroidx/compose/ui/unit/IntOffset;->equals-impl0(JJ)Z +HSPLandroidx/compose/ui/unit/IntOffset;->getX-impl(J)I +HSPLandroidx/compose/ui/unit/IntOffset;->getY-impl(J)I +HSPLandroidx/compose/ui/unit/IntOffset;->unbox-impl()J +Landroidx/compose/ui/unit/IntOffset$Companion; +HSPLandroidx/compose/ui/unit/IntOffset$Companion;->()V +HSPLandroidx/compose/ui/unit/IntOffset$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/unit/IntOffset$Companion;->getZero-nOcc-ac()J +Landroidx/compose/ui/unit/IntOffsetKt; +HSPLandroidx/compose/ui/unit/IntOffsetKt;->IntOffset(II)J +HSPLandroidx/compose/ui/unit/IntOffsetKt;->minus-Nv-tHpc(JJ)J +HSPLandroidx/compose/ui/unit/IntOffsetKt;->plus-Nv-tHpc(JJ)J +Landroidx/compose/ui/unit/IntSize; +HSPLandroidx/compose/ui/unit/IntSize;->()V +HSPLandroidx/compose/ui/unit/IntSize;->(J)V +HSPLandroidx/compose/ui/unit/IntSize;->access$getZero$cp()J +HSPLandroidx/compose/ui/unit/IntSize;->box-impl(J)Landroidx/compose/ui/unit/IntSize; +HSPLandroidx/compose/ui/unit/IntSize;->constructor-impl(J)J +HSPLandroidx/compose/ui/unit/IntSize;->equals(Ljava/lang/Object;)Z +HSPLandroidx/compose/ui/unit/IntSize;->equals-impl(JLjava/lang/Object;)Z +HSPLandroidx/compose/ui/unit/IntSize;->equals-impl0(JJ)Z +HSPLandroidx/compose/ui/unit/IntSize;->getHeight-impl(J)I +HSPLandroidx/compose/ui/unit/IntSize;->getWidth-impl(J)I +HSPLandroidx/compose/ui/unit/IntSize;->unbox-impl()J +Landroidx/compose/ui/unit/IntSize$Companion; +HSPLandroidx/compose/ui/unit/IntSize$Companion;->()V +HSPLandroidx/compose/ui/unit/IntSize$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/unit/IntSize$Companion;->getZero-YbymL2g()J +Landroidx/compose/ui/unit/IntSizeKt; +HSPLandroidx/compose/ui/unit/IntSizeKt;->IntSize(II)J +HSPLandroidx/compose/ui/unit/IntSizeKt;->getCenter-ozmzZPI(J)J +HSPLandroidx/compose/ui/unit/IntSizeKt;->toSize-ozmzZPI(J)J +Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/unit/LayoutDirection;->$values()[Landroidx/compose/ui/unit/LayoutDirection; +HSPLandroidx/compose/ui/unit/LayoutDirection;->()V +HSPLandroidx/compose/ui/unit/LayoutDirection;->(Ljava/lang/String;I)V +HSPLandroidx/compose/ui/unit/LayoutDirection;->values()[Landroidx/compose/ui/unit/LayoutDirection; +Landroidx/compose/ui/unit/TextUnit; +HSPLandroidx/compose/ui/unit/TextUnit;->()V +HSPLandroidx/compose/ui/unit/TextUnit;->access$getUnspecified$cp()J +HSPLandroidx/compose/ui/unit/TextUnit;->constructor-impl(J)J +HSPLandroidx/compose/ui/unit/TextUnit;->equals-impl0(JJ)Z +HSPLandroidx/compose/ui/unit/TextUnit;->getRawType-impl(J)J +HSPLandroidx/compose/ui/unit/TextUnit;->getType-UIouoOA(J)J +HSPLandroidx/compose/ui/unit/TextUnit;->getValue-impl(J)F +Landroidx/compose/ui/unit/TextUnit$Companion; +HSPLandroidx/compose/ui/unit/TextUnit$Companion;->()V +HSPLandroidx/compose/ui/unit/TextUnit$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/unit/TextUnit$Companion;->getUnspecified-XSAIIZE()J +Landroidx/compose/ui/unit/TextUnitKt; +HSPLandroidx/compose/ui/unit/TextUnitKt;->checkArithmetic--R2X_6o(J)V +HSPLandroidx/compose/ui/unit/TextUnitKt;->getSp(D)J +HSPLandroidx/compose/ui/unit/TextUnitKt;->getSp(F)J +HSPLandroidx/compose/ui/unit/TextUnitKt;->getSp(I)J +HSPLandroidx/compose/ui/unit/TextUnitKt;->isUnspecified--R2X_6o(J)Z +HSPLandroidx/compose/ui/unit/TextUnitKt;->pack(JF)J +Landroidx/compose/ui/unit/TextUnitType; +HSPLandroidx/compose/ui/unit/TextUnitType;->()V +HSPLandroidx/compose/ui/unit/TextUnitType;->(J)V +HSPLandroidx/compose/ui/unit/TextUnitType;->access$getEm$cp()J +HSPLandroidx/compose/ui/unit/TextUnitType;->access$getSp$cp()J +HSPLandroidx/compose/ui/unit/TextUnitType;->access$getUnspecified$cp()J +HSPLandroidx/compose/ui/unit/TextUnitType;->box-impl(J)Landroidx/compose/ui/unit/TextUnitType; +HSPLandroidx/compose/ui/unit/TextUnitType;->constructor-impl(J)J +HSPLandroidx/compose/ui/unit/TextUnitType;->equals-impl0(JJ)Z +HSPLandroidx/compose/ui/unit/TextUnitType;->unbox-impl()J +Landroidx/compose/ui/unit/TextUnitType$Companion; +HSPLandroidx/compose/ui/unit/TextUnitType$Companion;->()V +HSPLandroidx/compose/ui/unit/TextUnitType$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/unit/TextUnitType$Companion;->getEm-UIouoOA()J +HSPLandroidx/compose/ui/unit/TextUnitType$Companion;->getSp-UIouoOA()J +HSPLandroidx/compose/ui/unit/TextUnitType$Companion;->getUnspecified-UIouoOA()J +Landroidx/compose/ui/util/MathHelpersKt; +HSPLandroidx/compose/ui/util/MathHelpersKt;->lerp(FFF)F +Landroidx/compose/ui/viewinterop/AndroidViewHolder; +Landroidx/compose/ui/window/DialogWindowProvider; +Landroidx/compose/ui/window/PopupProperties; +HSPLandroidx/compose/ui/window/PopupProperties;->()V +HSPLandroidx/compose/ui/window/PopupProperties;->(ZZZLandroidx/compose/ui/window/SecureFlagPolicy;ZZ)V +HSPLandroidx/compose/ui/window/PopupProperties;->(ZZZLandroidx/compose/ui/window/SecureFlagPolicy;ZZILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/window/PopupProperties;->(ZZZLandroidx/compose/ui/window/SecureFlagPolicy;ZZZ)V +Landroidx/compose/ui/window/SecureFlagPolicy; +HSPLandroidx/compose/ui/window/SecureFlagPolicy;->$values()[Landroidx/compose/ui/window/SecureFlagPolicy; +HSPLandroidx/compose/ui/window/SecureFlagPolicy;->()V +HSPLandroidx/compose/ui/window/SecureFlagPolicy;->(Ljava/lang/String;I)V +PLandroidx/concurrent/futures/AbstractResolvableFuture;->()V +PLandroidx/concurrent/futures/AbstractResolvableFuture;->()V +PLandroidx/concurrent/futures/AbstractResolvableFuture;->afterDone()V +PLandroidx/concurrent/futures/AbstractResolvableFuture;->clearListeners(Landroidx/concurrent/futures/AbstractResolvableFuture$Listener;)Landroidx/concurrent/futures/AbstractResolvableFuture$Listener; +PLandroidx/concurrent/futures/AbstractResolvableFuture;->complete(Landroidx/concurrent/futures/AbstractResolvableFuture;)V +PLandroidx/concurrent/futures/AbstractResolvableFuture;->releaseWaiters()V +PLandroidx/concurrent/futures/AbstractResolvableFuture;->set(Ljava/lang/Object;)Z +PLandroidx/concurrent/futures/AbstractResolvableFuture$AtomicHelper;->()V +PLandroidx/concurrent/futures/AbstractResolvableFuture$AtomicHelper;->(Landroidx/concurrent/futures/AbstractResolvableFuture$1;)V +PLandroidx/concurrent/futures/AbstractResolvableFuture$Listener;->()V +PLandroidx/concurrent/futures/AbstractResolvableFuture$Listener;->(Ljava/lang/Runnable;Ljava/util/concurrent/Executor;)V +PLandroidx/concurrent/futures/AbstractResolvableFuture$SafeAtomicHelper;->(Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;)V +PLandroidx/concurrent/futures/AbstractResolvableFuture$SafeAtomicHelper;->casListeners(Landroidx/concurrent/futures/AbstractResolvableFuture;Landroidx/concurrent/futures/AbstractResolvableFuture$Listener;Landroidx/concurrent/futures/AbstractResolvableFuture$Listener;)Z +PLandroidx/concurrent/futures/AbstractResolvableFuture$SafeAtomicHelper;->casValue(Landroidx/concurrent/futures/AbstractResolvableFuture;Ljava/lang/Object;Ljava/lang/Object;)Z +PLandroidx/concurrent/futures/AbstractResolvableFuture$SafeAtomicHelper;->casWaiters(Landroidx/concurrent/futures/AbstractResolvableFuture;Landroidx/concurrent/futures/AbstractResolvableFuture$Waiter;Landroidx/concurrent/futures/AbstractResolvableFuture$Waiter;)Z +Landroidx/concurrent/futures/AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0; +HSPLandroidx/concurrent/futures/AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0;->m(Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z +PLandroidx/concurrent/futures/AbstractResolvableFuture$Waiter;->()V +PLandroidx/concurrent/futures/AbstractResolvableFuture$Waiter;->(Z)V +PLandroidx/concurrent/futures/ResolvableFuture;->()V +PLandroidx/concurrent/futures/ResolvableFuture;->create()Landroidx/concurrent/futures/ResolvableFuture; +PLandroidx/concurrent/futures/ResolvableFuture;->set(Ljava/lang/Object;)Z +Landroidx/core/R$id; +Landroidx/core/app/ActivityCompat$OnRequestPermissionsResultCallback; +Landroidx/core/app/ActivityCompat$RequestPermissionsRequestCodeValidator; +Landroidx/core/app/AppLocalesStorageHelper; +HSPLandroidx/core/app/AppLocalesStorageHelper;->()V +HSPLandroidx/core/app/AppLocalesStorageHelper;->readLocales(Landroid/content/Context;)Ljava/lang/String; +Landroidx/core/app/ComponentActivity; +HSPLandroidx/core/app/ComponentActivity;->()V +HSPLandroidx/core/app/ComponentActivity;->onCreate(Landroid/os/Bundle;)V +Landroidx/core/app/CoreComponentFactory; +HSPLandroidx/core/app/CoreComponentFactory;->()V +HSPLandroidx/core/app/CoreComponentFactory;->checkCompatWrapper(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/core/app/CoreComponentFactory;->instantiateActivity(Ljava/lang/ClassLoader;Ljava/lang/String;Landroid/content/Intent;)Landroid/app/Activity; +HSPLandroidx/core/app/CoreComponentFactory;->instantiateApplication(Ljava/lang/ClassLoader;Ljava/lang/String;)Landroid/app/Application; +HSPLandroidx/core/app/CoreComponentFactory;->instantiateProvider(Ljava/lang/ClassLoader;Ljava/lang/String;)Landroid/content/ContentProvider; +PLandroidx/core/app/CoreComponentFactory;->instantiateReceiver(Ljava/lang/ClassLoader;Ljava/lang/String;Landroid/content/Intent;)Landroid/content/BroadcastReceiver; +HSPLandroidx/core/app/CoreComponentFactory;->instantiateService(Ljava/lang/ClassLoader;Ljava/lang/String;Landroid/content/Intent;)Landroid/app/Service; +Landroidx/core/app/CoreComponentFactory$CompatWrapped; +Landroidx/core/app/LocaleManagerCompat; +HSPLandroidx/core/app/LocaleManagerCompat;->getApplicationLocales(Landroid/content/Context;)Landroidx/core/os/LocaleListCompat; +HSPLandroidx/core/app/LocaleManagerCompat;->getLocaleManagerForApplication(Landroid/content/Context;)Ljava/lang/Object; +Landroidx/core/app/LocaleManagerCompat$Api33Impl; +HSPLandroidx/core/app/LocaleManagerCompat$Api33Impl;->localeManagerGetApplicationLocales(Ljava/lang/Object;)Landroid/os/LocaleList; +Landroidx/core/app/NavUtils; +HSPLandroidx/core/app/NavUtils;->getParentActivityName(Landroid/app/Activity;)Ljava/lang/String; +HSPLandroidx/core/app/NavUtils;->getParentActivityName(Landroid/content/Context;Landroid/content/ComponentName;)Ljava/lang/String; +Landroidx/core/app/OnMultiWindowModeChangedProvider; +Landroidx/core/app/OnNewIntentProvider; +Landroidx/core/app/OnPictureInPictureModeChangedProvider; +Landroidx/core/app/TaskStackBuilder$SupportParentable; +Landroidx/core/content/ContextCompat; +HSPLandroidx/core/content/ContextCompat;->()V +HSPLandroidx/core/content/ContextCompat;->createDeviceProtectedStorageContext(Landroid/content/Context;)Landroid/content/Context; +HSPLandroidx/core/content/ContextCompat;->getContextForLanguage(Landroid/content/Context;)Landroid/content/Context; +HSPLandroidx/core/content/ContextCompat;->getDrawable(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable; +HSPLandroidx/core/content/ContextCompat;->getSystemService(Landroid/content/Context;Ljava/lang/Class;)Ljava/lang/Object; +Landroidx/core/content/ContextCompat$Api21Impl; +HSPLandroidx/core/content/ContextCompat$Api21Impl;->getDrawable(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable; +Landroidx/core/content/ContextCompat$Api23Impl; +HSPLandroidx/core/content/ContextCompat$Api23Impl;->getSystemService(Landroid/content/Context;Ljava/lang/Class;)Ljava/lang/Object; +Landroidx/core/content/ContextCompat$Api24Impl; +HSPLandroidx/core/content/ContextCompat$Api24Impl;->createDeviceProtectedStorageContext(Landroid/content/Context;)Landroid/content/Context; +Landroidx/core/content/FileProvider; +HSPLandroidx/core/content/FileProvider;->()V +HSPLandroidx/core/content/FileProvider;->()V +HSPLandroidx/core/content/FileProvider;->attachInfo(Landroid/content/Context;Landroid/content/pm/ProviderInfo;)V +HSPLandroidx/core/content/FileProvider;->onCreate()Z +Landroidx/core/content/OnConfigurationChangedProvider; +Landroidx/core/content/OnTrimMemoryProvider; +Landroidx/core/graphics/Insets; +HSPLandroidx/core/graphics/Insets;->()V +HSPLandroidx/core/graphics/Insets;->(IIII)V +HSPLandroidx/core/graphics/Insets;->equals(Ljava/lang/Object;)Z +HSPLandroidx/core/graphics/Insets;->of(IIII)Landroidx/core/graphics/Insets; +HSPLandroidx/core/graphics/Insets;->toCompatInsets(Landroid/graphics/Insets;)Landroidx/core/graphics/Insets; +HSPLandroidx/core/graphics/Insets;->toPlatformInsets()Landroid/graphics/Insets; +Landroidx/core/graphics/Insets$Api29Impl; +HSPLandroidx/core/graphics/Insets$Api29Impl;->of(IIII)Landroid/graphics/Insets; +Landroidx/core/graphics/TypefaceCompat; +HSPLandroidx/core/graphics/TypefaceCompat;->()V +HSPLandroidx/core/graphics/TypefaceCompat;->createFromFontInfo(Landroid/content/Context;Landroid/os/CancellationSignal;[Landroidx/core/provider/FontsContractCompat$FontInfo;I)Landroid/graphics/Typeface; +Landroidx/core/graphics/TypefaceCompatApi29Impl; +HSPLandroidx/core/graphics/TypefaceCompatApi29Impl;->()V +HSPLandroidx/core/graphics/TypefaceCompatApi29Impl;->createFromFontInfo(Landroid/content/Context;Landroid/os/CancellationSignal;[Landroidx/core/provider/FontsContractCompat$FontInfo;I)Landroid/graphics/Typeface; +HSPLandroidx/core/graphics/TypefaceCompatApi29Impl;->findBaseFont(Landroid/graphics/fonts/FontFamily;I)Landroid/graphics/fonts/Font; +HSPLandroidx/core/graphics/TypefaceCompatApi29Impl;->getMatchScore(Landroid/graphics/fonts/FontStyle;Landroid/graphics/fonts/FontStyle;)I +Landroidx/core/graphics/TypefaceCompatBaseImpl; +HSPLandroidx/core/graphics/TypefaceCompatBaseImpl;->()V +Landroidx/core/graphics/TypefaceCompatUtil; +HSPLandroidx/core/graphics/TypefaceCompatUtil;->mmap(Landroid/content/Context;Landroid/os/CancellationSignal;Landroid/net/Uri;)Ljava/nio/ByteBuffer; +Landroidx/core/graphics/TypefaceCompatUtil$Api19Impl; +HSPLandroidx/core/graphics/TypefaceCompatUtil$Api19Impl;->openFileDescriptor(Landroid/content/ContentResolver;Landroid/net/Uri;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/os/ParcelFileDescriptor; +Landroidx/core/graphics/drawable/TintAwareDrawable; +Landroidx/core/hardware/fingerprint/FingerprintManagerCompat; +Landroidx/core/net/ConnectivityManagerCompat; +HSPLandroidx/core/net/ConnectivityManagerCompat;->isActiveNetworkMetered(Landroid/net/ConnectivityManager;)Z +Landroidx/core/net/ConnectivityManagerCompat$Api16Impl; +HSPLandroidx/core/net/ConnectivityManagerCompat$Api16Impl;->isActiveNetworkMetered(Landroid/net/ConnectivityManager;)Z +Landroidx/core/os/BundleKt; +HSPLandroidx/core/os/BundleKt;->bundleOf([Lkotlin/Pair;)Landroid/os/Bundle; +Landroidx/core/os/HandlerCompat; +HSPLandroidx/core/os/HandlerCompat;->createAsync(Landroid/os/Looper;)Landroid/os/Handler; +Landroidx/core/os/HandlerCompat$Api28Impl; +HSPLandroidx/core/os/HandlerCompat$Api28Impl;->createAsync(Landroid/os/Looper;)Landroid/os/Handler; +Landroidx/core/os/LocaleListCompat; +HSPLandroidx/core/os/LocaleListCompat;->()V +HSPLandroidx/core/os/LocaleListCompat;->(Landroidx/core/os/LocaleListInterface;)V +HSPLandroidx/core/os/LocaleListCompat;->create([Ljava/util/Locale;)Landroidx/core/os/LocaleListCompat; +HSPLandroidx/core/os/LocaleListCompat;->forLanguageTags(Ljava/lang/String;)Landroidx/core/os/LocaleListCompat; +HSPLandroidx/core/os/LocaleListCompat;->getEmptyLocaleList()Landroidx/core/os/LocaleListCompat; +HSPLandroidx/core/os/LocaleListCompat;->isEmpty()Z +HSPLandroidx/core/os/LocaleListCompat;->wrap(Landroid/os/LocaleList;)Landroidx/core/os/LocaleListCompat; +Landroidx/core/os/LocaleListCompat$$ExternalSyntheticApiModelOutline0; +HSPLandroidx/core/os/LocaleListCompat$$ExternalSyntheticApiModelOutline0;->m$1()V +HSPLandroidx/core/os/LocaleListCompat$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/view/WindowInsetsAnimation$Bounds;)Landroid/graphics/Insets; +HSPLandroidx/core/os/LocaleListCompat$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/view/WindowInsetsAnimation;)F +HSPLandroidx/core/os/LocaleListCompat$$ExternalSyntheticApiModelOutline0;->m()Landroid/view/WindowInsets$Builder; +HSPLandroidx/core/os/LocaleListCompat$$ExternalSyntheticApiModelOutline0;->m(ILandroid/view/animation/Interpolator;J)Landroid/view/WindowInsetsAnimation; +HSPLandroidx/core/os/LocaleListCompat$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/Insets;Landroid/graphics/Insets;)Landroid/view/WindowInsetsAnimation$Bounds; +HSPLandroidx/core/os/LocaleListCompat$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/Typeface;IZ)Landroid/graphics/Typeface; +HSPLandroidx/core/os/LocaleListCompat$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/View;Landroid/view/WindowInsetsAnimation$Callback;)V +HSPLandroidx/core/os/LocaleListCompat$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/WindowInsets$Builder;)Landroid/view/WindowInsets; +HSPLandroidx/core/os/LocaleListCompat$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/WindowInsetsAnimation$Bounds;)Landroid/graphics/Insets; +HSPLandroidx/core/os/LocaleListCompat$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/WindowInsetsAnimation;)J +HSPLandroidx/core/os/LocaleListCompat$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/WindowInsetsAnimation;F)V +HSPLandroidx/core/os/LocaleListCompat$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/WindowInsetsController;II)V +HSPLandroidx/core/os/LocaleListCompat$$ExternalSyntheticApiModelOutline0;->m(Ljava/lang/Object;)Landroid/view/WindowInsetsAnimation; +Landroidx/core/os/LocaleListCompat$Api21Impl; +HSPLandroidx/core/os/LocaleListCompat$Api21Impl;->()V +HSPLandroidx/core/os/LocaleListCompat$Api21Impl;->forLanguageTag(Ljava/lang/String;)Ljava/util/Locale; +Landroidx/core/os/LocaleListCompat$Api24Impl; +HSPLandroidx/core/os/LocaleListCompat$Api24Impl;->createLocaleList([Ljava/util/Locale;)Landroid/os/LocaleList; +Landroidx/core/os/LocaleListInterface; +Landroidx/core/os/LocaleListPlatformWrapper; +HSPLandroidx/core/os/LocaleListPlatformWrapper;->(Ljava/lang/Object;)V +HSPLandroidx/core/os/LocaleListPlatformWrapper;->isEmpty()Z +Landroidx/core/os/TraceCompat; +HSPLandroidx/core/os/TraceCompat;->()V +HSPLandroidx/core/os/TraceCompat;->beginSection(Ljava/lang/String;)V +HSPLandroidx/core/os/TraceCompat;->endSection()V +Landroidx/core/os/TraceCompat$Api18Impl; +HSPLandroidx/core/os/TraceCompat$Api18Impl;->beginSection(Ljava/lang/String;)V +HSPLandroidx/core/os/TraceCompat$Api18Impl;->endSection()V +Landroidx/core/os/UserManagerCompat; +HSPLandroidx/core/os/UserManagerCompat;->isUserUnlocked(Landroid/content/Context;)Z +Landroidx/core/os/UserManagerCompat$Api24Impl; +HSPLandroidx/core/os/UserManagerCompat$Api24Impl;->isUserUnlocked(Landroid/content/Context;)Z +Landroidx/core/provider/FontProvider; +HSPLandroidx/core/provider/FontProvider;->()V +HSPLandroidx/core/provider/FontProvider;->convertToByteArrayList([Landroid/content/pm/Signature;)Ljava/util/List; +HSPLandroidx/core/provider/FontProvider;->equalsByteArrayList(Ljava/util/List;Ljava/util/List;)Z +HSPLandroidx/core/provider/FontProvider;->getCertificates(Landroidx/core/provider/FontRequest;Landroid/content/res/Resources;)Ljava/util/List; +HSPLandroidx/core/provider/FontProvider;->getFontFamilyResult(Landroid/content/Context;Landroidx/core/provider/FontRequest;Landroid/os/CancellationSignal;)Landroidx/core/provider/FontsContractCompat$FontFamilyResult; +HSPLandroidx/core/provider/FontProvider;->getProvider(Landroid/content/pm/PackageManager;Landroidx/core/provider/FontRequest;Landroid/content/res/Resources;)Landroid/content/pm/ProviderInfo; +HSPLandroidx/core/provider/FontProvider;->query(Landroid/content/Context;Landroidx/core/provider/FontRequest;Ljava/lang/String;Landroid/os/CancellationSignal;)[Landroidx/core/provider/FontsContractCompat$FontInfo; +Landroidx/core/provider/FontProvider$$ExternalSyntheticLambda0; +HSPLandroidx/core/provider/FontProvider$$ExternalSyntheticLambda0;->()V +Landroidx/core/provider/FontProvider$Api16Impl; +HSPLandroidx/core/provider/FontProvider$Api16Impl;->query(Landroid/content/ContentResolver;Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)Landroid/database/Cursor; +Landroidx/core/provider/FontRequest; +HSPLandroidx/core/provider/FontRequest;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)V +HSPLandroidx/core/provider/FontRequest;->createIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroidx/core/provider/FontRequest;->getCertificates()Ljava/util/List; +HSPLandroidx/core/provider/FontRequest;->getProviderAuthority()Ljava/lang/String; +HSPLandroidx/core/provider/FontRequest;->getProviderPackage()Ljava/lang/String; +HSPLandroidx/core/provider/FontRequest;->getQuery()Ljava/lang/String; +Landroidx/core/provider/FontsContractCompat; +HSPLandroidx/core/provider/FontsContractCompat;->buildTypeface(Landroid/content/Context;Landroid/os/CancellationSignal;[Landroidx/core/provider/FontsContractCompat$FontInfo;)Landroid/graphics/Typeface; +HSPLandroidx/core/provider/FontsContractCompat;->fetchFonts(Landroid/content/Context;Landroid/os/CancellationSignal;Landroidx/core/provider/FontRequest;)Landroidx/core/provider/FontsContractCompat$FontFamilyResult; +Landroidx/core/provider/FontsContractCompat$FontFamilyResult; +HSPLandroidx/core/provider/FontsContractCompat$FontFamilyResult;->(I[Landroidx/core/provider/FontsContractCompat$FontInfo;)V +HSPLandroidx/core/provider/FontsContractCompat$FontFamilyResult;->create(I[Landroidx/core/provider/FontsContractCompat$FontInfo;)Landroidx/core/provider/FontsContractCompat$FontFamilyResult; +HSPLandroidx/core/provider/FontsContractCompat$FontFamilyResult;->getFonts()[Landroidx/core/provider/FontsContractCompat$FontInfo; +HSPLandroidx/core/provider/FontsContractCompat$FontFamilyResult;->getStatusCode()I +Landroidx/core/provider/FontsContractCompat$FontInfo; +HSPLandroidx/core/provider/FontsContractCompat$FontInfo;->(Landroid/net/Uri;IIZI)V +HSPLandroidx/core/provider/FontsContractCompat$FontInfo;->create(Landroid/net/Uri;IIZI)Landroidx/core/provider/FontsContractCompat$FontInfo; +HSPLandroidx/core/provider/FontsContractCompat$FontInfo;->getResultCode()I +HSPLandroidx/core/provider/FontsContractCompat$FontInfo;->getTtcIndex()I +HSPLandroidx/core/provider/FontsContractCompat$FontInfo;->getUri()Landroid/net/Uri; +HSPLandroidx/core/provider/FontsContractCompat$FontInfo;->getWeight()I +HSPLandroidx/core/provider/FontsContractCompat$FontInfo;->isItalic()Z +Landroidx/core/splashscreen/R$attr; +Landroidx/core/splashscreen/SplashScreen; +HSPLandroidx/core/splashscreen/SplashScreen;->()V +HSPLandroidx/core/splashscreen/SplashScreen;->(Landroid/app/Activity;)V +HSPLandroidx/core/splashscreen/SplashScreen;->(Landroid/app/Activity;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/core/splashscreen/SplashScreen;->access$install(Landroidx/core/splashscreen/SplashScreen;)V +HSPLandroidx/core/splashscreen/SplashScreen;->install()V +Landroidx/core/splashscreen/SplashScreen$Companion; +HSPLandroidx/core/splashscreen/SplashScreen$Companion;->()V +HSPLandroidx/core/splashscreen/SplashScreen$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/core/splashscreen/SplashScreen$Companion;->installSplashScreen(Landroid/app/Activity;)Landroidx/core/splashscreen/SplashScreen; +Landroidx/core/splashscreen/SplashScreen$Impl; +HSPLandroidx/core/splashscreen/SplashScreen$Impl;->(Landroid/app/Activity;)V +HSPLandroidx/core/splashscreen/SplashScreen$Impl;->getActivity()Landroid/app/Activity; +HSPLandroidx/core/splashscreen/SplashScreen$Impl;->setPostSplashScreenTheme(Landroid/content/res/Resources$Theme;Landroid/util/TypedValue;)V +Landroidx/core/splashscreen/SplashScreen$Impl$$ExternalSyntheticLambda1; +HSPLandroidx/core/splashscreen/SplashScreen$Impl$$ExternalSyntheticLambda1;->()V +Landroidx/core/splashscreen/SplashScreen$Impl31; +HSPLandroidx/core/splashscreen/SplashScreen$Impl31;->(Landroid/app/Activity;)V +HSPLandroidx/core/splashscreen/SplashScreen$Impl31;->install()V +Landroidx/core/splashscreen/SplashScreen$Impl31$hierarchyListener$1; +HSPLandroidx/core/splashscreen/SplashScreen$Impl31$hierarchyListener$1;->(Landroidx/core/splashscreen/SplashScreen$Impl31;Landroid/app/Activity;)V +Landroidx/core/splashscreen/SplashScreen$KeepOnScreenCondition; +Landroidx/core/text/TextUtilsCompat; +HSPLandroidx/core/text/TextUtilsCompat;->()V +HSPLandroidx/core/text/TextUtilsCompat;->getLayoutDirectionFromLocale(Ljava/util/Locale;)I +Landroidx/core/text/TextUtilsCompat$Api17Impl; +HSPLandroidx/core/text/TextUtilsCompat$Api17Impl;->getLayoutDirectionFromLocale(Ljava/util/Locale;)I +Landroidx/core/util/Consumer; +Landroidx/core/util/Preconditions; +HSPLandroidx/core/util/Preconditions;->checkArgument(ZLjava/lang/Object;)V +HSPLandroidx/core/util/Preconditions;->checkArgumentNonnegative(ILjava/lang/String;)I +HSPLandroidx/core/util/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/core/util/Preconditions;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/core/util/Preconditions;->checkState(ZLjava/lang/String;)V +Landroidx/core/view/AccessibilityDelegateCompat; +HSPLandroidx/core/view/AccessibilityDelegateCompat;->()V +HSPLandroidx/core/view/AccessibilityDelegateCompat;->()V +HSPLandroidx/core/view/AccessibilityDelegateCompat;->(Landroid/view/View$AccessibilityDelegate;)V +HSPLandroidx/core/view/AccessibilityDelegateCompat;->dispatchPopulateAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z +HSPLandroidx/core/view/AccessibilityDelegateCompat;->getBridge()Landroid/view/View$AccessibilityDelegate; +HSPLandroidx/core/view/AccessibilityDelegateCompat;->onInitializeAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V +HSPLandroidx/core/view/AccessibilityDelegateCompat;->onPopulateAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V +HSPLandroidx/core/view/AccessibilityDelegateCompat;->onRequestSendAccessibilityEvent(Landroid/view/ViewGroup;Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z +HSPLandroidx/core/view/AccessibilityDelegateCompat;->sendAccessibilityEvent(Landroid/view/View;I)V +HSPLandroidx/core/view/AccessibilityDelegateCompat;->sendAccessibilityEventUnchecked(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V +Landroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter; +HSPLandroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter;->(Landroidx/core/view/AccessibilityDelegateCompat;)V +HSPLandroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter;->dispatchPopulateAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z +HSPLandroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter;->getAccessibilityNodeProvider(Landroid/view/View;)Landroid/view/accessibility/AccessibilityNodeProvider; +HSPLandroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter;->onInitializeAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V +HSPLandroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter;->onPopulateAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V +HSPLandroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter;->onRequestSendAccessibilityEvent(Landroid/view/ViewGroup;Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z +HSPLandroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter;->sendAccessibilityEvent(Landroid/view/View;I)V +HSPLandroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter;->sendAccessibilityEventUnchecked(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V +Landroidx/core/view/DisplayCutoutCompat; +HSPLandroidx/core/view/DisplayCutoutCompat;->(Landroid/view/DisplayCutout;)V +HSPLandroidx/core/view/DisplayCutoutCompat;->getWaterfallInsets()Landroidx/core/graphics/Insets; +HSPLandroidx/core/view/DisplayCutoutCompat;->wrap(Landroid/view/DisplayCutout;)Landroidx/core/view/DisplayCutoutCompat; +Landroidx/core/view/DisplayCutoutCompat$Api30Impl; +HSPLandroidx/core/view/DisplayCutoutCompat$Api30Impl;->getWaterfallInsets(Landroid/view/DisplayCutout;)Landroid/graphics/Insets; +Landroidx/core/view/KeyEventDispatcher$Component; +Landroidx/core/view/LayoutInflaterCompat; +HSPLandroidx/core/view/LayoutInflaterCompat;->setFactory2(Landroid/view/LayoutInflater;Landroid/view/LayoutInflater$Factory2;)V +Landroidx/core/view/MenuHost; +Landroidx/core/view/MenuHostHelper; +HSPLandroidx/core/view/MenuHostHelper;->(Ljava/lang/Runnable;)V +HSPLandroidx/core/view/MenuHostHelper;->addMenuProvider(Landroidx/core/view/MenuProvider;)V +Landroidx/core/view/MenuProvider; +Landroidx/core/view/NestedScrollingParent; +Landroidx/core/view/NestedScrollingParent2; +Landroidx/core/view/NestedScrollingParent3; +Landroidx/core/view/OnApplyWindowInsetsListener; +Landroidx/core/view/OnReceiveContentViewBehavior; +Landroidx/core/view/SoftwareKeyboardControllerCompat; +HSPLandroidx/core/view/SoftwareKeyboardControllerCompat;->(Landroid/view/View;)V +Landroidx/core/view/SoftwareKeyboardControllerCompat$Impl; +HSPLandroidx/core/view/SoftwareKeyboardControllerCompat$Impl;->()V +Landroidx/core/view/SoftwareKeyboardControllerCompat$Impl20; +HSPLandroidx/core/view/SoftwareKeyboardControllerCompat$Impl20;->(Landroid/view/View;)V +Landroidx/core/view/SoftwareKeyboardControllerCompat$Impl30; +HSPLandroidx/core/view/SoftwareKeyboardControllerCompat$Impl30;->(Landroid/view/View;)V +Landroidx/core/view/ViewCompat; +HSPLandroidx/core/view/ViewCompat;->()V +HSPLandroidx/core/view/ViewCompat;->getImportantForAccessibility(Landroid/view/View;)I +HSPLandroidx/core/view/ViewCompat;->getParentForAccessibility(Landroid/view/View;)Landroid/view/ViewParent; +HSPLandroidx/core/view/ViewCompat;->getRootWindowInsets(Landroid/view/View;)Landroidx/core/view/WindowInsetsCompat; +HSPLandroidx/core/view/ViewCompat;->isAttachedToWindow(Landroid/view/View;)Z +HSPLandroidx/core/view/ViewCompat;->isLaidOut(Landroid/view/View;)Z +HSPLandroidx/core/view/ViewCompat;->onApplyWindowInsets(Landroid/view/View;Landroidx/core/view/WindowInsetsCompat;)Landroidx/core/view/WindowInsetsCompat; +HSPLandroidx/core/view/ViewCompat;->postOnAnimation(Landroid/view/View;Ljava/lang/Runnable;)V +HSPLandroidx/core/view/ViewCompat;->setAccessibilityDelegate(Landroid/view/View;Landroidx/core/view/AccessibilityDelegateCompat;)V +HSPLandroidx/core/view/ViewCompat;->setImportantForAccessibility(Landroid/view/View;I)V +HSPLandroidx/core/view/ViewCompat;->setImportantForAccessibilityIfNeeded(Landroid/view/View;)V +HSPLandroidx/core/view/ViewCompat;->setOnApplyWindowInsetsListener(Landroid/view/View;Landroidx/core/view/OnApplyWindowInsetsListener;)V +HSPLandroidx/core/view/ViewCompat;->setWindowInsetsAnimationCallback(Landroid/view/View;Landroidx/core/view/WindowInsetsAnimationCompat$Callback;)V +Landroidx/core/view/ViewCompat$$ExternalSyntheticLambda0; +HSPLandroidx/core/view/ViewCompat$$ExternalSyntheticLambda0;->()V +Landroidx/core/view/ViewCompat$AccessibilityPaneVisibilityManager; +HSPLandroidx/core/view/ViewCompat$AccessibilityPaneVisibilityManager;->()V +Landroidx/core/view/ViewCompat$Api16Impl; +HSPLandroidx/core/view/ViewCompat$Api16Impl;->getImportantForAccessibility(Landroid/view/View;)I +HSPLandroidx/core/view/ViewCompat$Api16Impl;->getParentForAccessibility(Landroid/view/View;)Landroid/view/ViewParent; +HSPLandroidx/core/view/ViewCompat$Api16Impl;->postOnAnimation(Landroid/view/View;Ljava/lang/Runnable;)V +HSPLandroidx/core/view/ViewCompat$Api16Impl;->setImportantForAccessibility(Landroid/view/View;I)V +Landroidx/core/view/ViewCompat$Api19Impl; +HSPLandroidx/core/view/ViewCompat$Api19Impl;->isAttachedToWindow(Landroid/view/View;)Z +HSPLandroidx/core/view/ViewCompat$Api19Impl;->isLaidOut(Landroid/view/View;)Z +Landroidx/core/view/ViewCompat$Api20Impl; +HSPLandroidx/core/view/ViewCompat$Api20Impl;->onApplyWindowInsets(Landroid/view/View;Landroid/view/WindowInsets;)Landroid/view/WindowInsets; +Landroidx/core/view/ViewCompat$Api21Impl; +HSPLandroidx/core/view/ViewCompat$Api21Impl;->setOnApplyWindowInsetsListener(Landroid/view/View;Landroidx/core/view/OnApplyWindowInsetsListener;)V +Landroidx/core/view/ViewCompat$Api21Impl$1; +HSPLandroidx/core/view/ViewCompat$Api21Impl$1;->(Landroid/view/View;Landroidx/core/view/OnApplyWindowInsetsListener;)V +HSPLandroidx/core/view/ViewCompat$Api21Impl$1;->onApplyWindowInsets(Landroid/view/View;Landroid/view/WindowInsets;)Landroid/view/WindowInsets; +Landroidx/core/view/ViewCompat$Api23Impl; +HSPLandroidx/core/view/ViewCompat$Api23Impl;->getRootWindowInsets(Landroid/view/View;)Landroidx/core/view/WindowInsetsCompat; +Landroidx/core/view/ViewPropertyAnimatorCompat; +Landroidx/core/view/WindowCompat; +HSPLandroidx/core/view/WindowCompat;->getInsetsController(Landroid/view/Window;Landroid/view/View;)Landroidx/core/view/WindowInsetsControllerCompat; +HSPLandroidx/core/view/WindowCompat;->setDecorFitsSystemWindows(Landroid/view/Window;Z)V +Landroidx/core/view/WindowCompat$Api30Impl; +HSPLandroidx/core/view/WindowCompat$Api30Impl;->setDecorFitsSystemWindows(Landroid/view/Window;Z)V +Landroidx/core/view/WindowInsetsAnimationCompat; +HSPLandroidx/core/view/WindowInsetsAnimationCompat;->(ILandroid/view/animation/Interpolator;J)V +HSPLandroidx/core/view/WindowInsetsAnimationCompat;->(Landroid/view/WindowInsetsAnimation;)V +HSPLandroidx/core/view/WindowInsetsAnimationCompat;->getDurationMillis()J +HSPLandroidx/core/view/WindowInsetsAnimationCompat;->setCallback(Landroid/view/View;Landroidx/core/view/WindowInsetsAnimationCompat$Callback;)V +HSPLandroidx/core/view/WindowInsetsAnimationCompat;->setFraction(F)V +HSPLandroidx/core/view/WindowInsetsAnimationCompat;->toWindowInsetsAnimationCompat(Landroid/view/WindowInsetsAnimation;)Landroidx/core/view/WindowInsetsAnimationCompat; +Landroidx/core/view/WindowInsetsAnimationCompat$BoundsCompat; +HSPLandroidx/core/view/WindowInsetsAnimationCompat$BoundsCompat;->(Landroid/view/WindowInsetsAnimation$Bounds;)V +HSPLandroidx/core/view/WindowInsetsAnimationCompat$BoundsCompat;->getLowerBound()Landroidx/core/graphics/Insets; +HSPLandroidx/core/view/WindowInsetsAnimationCompat$BoundsCompat;->getUpperBound()Landroidx/core/graphics/Insets; +HSPLandroidx/core/view/WindowInsetsAnimationCompat$BoundsCompat;->toBounds()Landroid/view/WindowInsetsAnimation$Bounds; +HSPLandroidx/core/view/WindowInsetsAnimationCompat$BoundsCompat;->toBoundsCompat(Landroid/view/WindowInsetsAnimation$Bounds;)Landroidx/core/view/WindowInsetsAnimationCompat$BoundsCompat; +Landroidx/core/view/WindowInsetsAnimationCompat$Callback; +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Callback;->(I)V +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Callback;->getDispatchMode()I +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Callback;->onEnd(Landroidx/core/view/WindowInsetsAnimationCompat;)V +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Callback;->onPrepare(Landroidx/core/view/WindowInsetsAnimationCompat;)V +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Callback;->onStart(Landroidx/core/view/WindowInsetsAnimationCompat;Landroidx/core/view/WindowInsetsAnimationCompat$BoundsCompat;)Landroidx/core/view/WindowInsetsAnimationCompat$BoundsCompat; +Landroidx/core/view/WindowInsetsAnimationCompat$Impl; +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Impl;->(ILandroid/view/animation/Interpolator;J)V +Landroidx/core/view/WindowInsetsAnimationCompat$Impl30; +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Impl30;->(ILandroid/view/animation/Interpolator;J)V +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Impl30;->(Landroid/view/WindowInsetsAnimation;)V +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Impl30;->createPlatformBounds(Landroidx/core/view/WindowInsetsAnimationCompat$BoundsCompat;)Landroid/view/WindowInsetsAnimation$Bounds; +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Impl30;->getDurationMillis()J +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Impl30;->getHigherBounds(Landroid/view/WindowInsetsAnimation$Bounds;)Landroidx/core/graphics/Insets; +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Impl30;->getLowerBounds(Landroid/view/WindowInsetsAnimation$Bounds;)Landroidx/core/graphics/Insets; +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Impl30;->setCallback(Landroid/view/View;Landroidx/core/view/WindowInsetsAnimationCompat$Callback;)V +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Impl30;->setFraction(F)V +Landroidx/core/view/WindowInsetsAnimationCompat$Impl30$ProxyCallback; +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Impl30$ProxyCallback;->(Landroidx/core/view/WindowInsetsAnimationCompat$Callback;)V +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Impl30$ProxyCallback;->getWindowInsetsAnimationCompat(Landroid/view/WindowInsetsAnimation;)Landroidx/core/view/WindowInsetsAnimationCompat; +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Impl30$ProxyCallback;->onEnd(Landroid/view/WindowInsetsAnimation;)V +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Impl30$ProxyCallback;->onPrepare(Landroid/view/WindowInsetsAnimation;)V +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Impl30$ProxyCallback;->onProgress(Landroid/view/WindowInsets;Ljava/util/List;)Landroid/view/WindowInsets; +HSPLandroidx/core/view/WindowInsetsAnimationCompat$Impl30$ProxyCallback;->onStart(Landroid/view/WindowInsetsAnimation;Landroid/view/WindowInsetsAnimation$Bounds;)Landroid/view/WindowInsetsAnimation$Bounds; +Landroidx/core/view/WindowInsetsCompat; +HSPLandroidx/core/view/WindowInsetsCompat;->()V +HSPLandroidx/core/view/WindowInsetsCompat;->(Landroid/view/WindowInsets;)V +HSPLandroidx/core/view/WindowInsetsCompat;->(Landroidx/core/view/WindowInsetsCompat;)V +HSPLandroidx/core/view/WindowInsetsCompat;->consumeDisplayCutout()Landroidx/core/view/WindowInsetsCompat; +HSPLandroidx/core/view/WindowInsetsCompat;->consumeStableInsets()Landroidx/core/view/WindowInsetsCompat; +HSPLandroidx/core/view/WindowInsetsCompat;->consumeSystemWindowInsets()Landroidx/core/view/WindowInsetsCompat; +HSPLandroidx/core/view/WindowInsetsCompat;->copyRootViewBounds(Landroid/view/View;)V +HSPLandroidx/core/view/WindowInsetsCompat;->getDisplayCutout()Landroidx/core/view/DisplayCutoutCompat; +HSPLandroidx/core/view/WindowInsetsCompat;->getInsets(I)Landroidx/core/graphics/Insets; +HSPLandroidx/core/view/WindowInsetsCompat;->getInsetsIgnoringVisibility(I)Landroidx/core/graphics/Insets; +HSPLandroidx/core/view/WindowInsetsCompat;->getSystemWindowInsetTop()I +HSPLandroidx/core/view/WindowInsetsCompat;->isVisible(I)Z +HSPLandroidx/core/view/WindowInsetsCompat;->setOverriddenInsets([Landroidx/core/graphics/Insets;)V +HSPLandroidx/core/view/WindowInsetsCompat;->setRootWindowInsets(Landroidx/core/view/WindowInsetsCompat;)V +HSPLandroidx/core/view/WindowInsetsCompat;->toWindowInsets()Landroid/view/WindowInsets; +HSPLandroidx/core/view/WindowInsetsCompat;->toWindowInsetsCompat(Landroid/view/WindowInsets;)Landroidx/core/view/WindowInsetsCompat; +HSPLandroidx/core/view/WindowInsetsCompat;->toWindowInsetsCompat(Landroid/view/WindowInsets;Landroid/view/View;)Landroidx/core/view/WindowInsetsCompat; +Landroidx/core/view/WindowInsetsCompat$Builder; +HSPLandroidx/core/view/WindowInsetsCompat$Builder;->()V +HSPLandroidx/core/view/WindowInsetsCompat$Builder;->build()Landroidx/core/view/WindowInsetsCompat; +Landroidx/core/view/WindowInsetsCompat$BuilderImpl; +HSPLandroidx/core/view/WindowInsetsCompat$BuilderImpl;->()V +HSPLandroidx/core/view/WindowInsetsCompat$BuilderImpl;->(Landroidx/core/view/WindowInsetsCompat;)V +HSPLandroidx/core/view/WindowInsetsCompat$BuilderImpl;->applyInsetTypes()V +Landroidx/core/view/WindowInsetsCompat$BuilderImpl29; +HSPLandroidx/core/view/WindowInsetsCompat$BuilderImpl29;->()V +HSPLandroidx/core/view/WindowInsetsCompat$BuilderImpl29;->build()Landroidx/core/view/WindowInsetsCompat; +Landroidx/core/view/WindowInsetsCompat$BuilderImpl30; +HSPLandroidx/core/view/WindowInsetsCompat$BuilderImpl30;->()V +Landroidx/core/view/WindowInsetsCompat$Impl; +HSPLandroidx/core/view/WindowInsetsCompat$Impl;->()V +HSPLandroidx/core/view/WindowInsetsCompat$Impl;->(Landroidx/core/view/WindowInsetsCompat;)V +Landroidx/core/view/WindowInsetsCompat$Impl20; +HSPLandroidx/core/view/WindowInsetsCompat$Impl20;->()V +HSPLandroidx/core/view/WindowInsetsCompat$Impl20;->(Landroidx/core/view/WindowInsetsCompat;Landroid/view/WindowInsets;)V +HSPLandroidx/core/view/WindowInsetsCompat$Impl20;->getSystemWindowInsets()Landroidx/core/graphics/Insets; +HSPLandroidx/core/view/WindowInsetsCompat$Impl20;->setOverriddenInsets([Landroidx/core/graphics/Insets;)V +HSPLandroidx/core/view/WindowInsetsCompat$Impl20;->setRootWindowInsets(Landroidx/core/view/WindowInsetsCompat;)V +Landroidx/core/view/WindowInsetsCompat$Impl21; +HSPLandroidx/core/view/WindowInsetsCompat$Impl21;->(Landroidx/core/view/WindowInsetsCompat;Landroid/view/WindowInsets;)V +HSPLandroidx/core/view/WindowInsetsCompat$Impl21;->consumeStableInsets()Landroidx/core/view/WindowInsetsCompat; +HSPLandroidx/core/view/WindowInsetsCompat$Impl21;->consumeSystemWindowInsets()Landroidx/core/view/WindowInsetsCompat; +Landroidx/core/view/WindowInsetsCompat$Impl28; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28;->(Landroidx/core/view/WindowInsetsCompat;Landroid/view/WindowInsets;)V +HSPLandroidx/core/view/WindowInsetsCompat$Impl28;->consumeDisplayCutout()Landroidx/core/view/WindowInsetsCompat; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28;->getDisplayCutout()Landroidx/core/view/DisplayCutoutCompat; +Landroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$1()I +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$1()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/view/WindowInsets;I)Landroid/graphics/Insets; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/view/accessibility/AccessibilityNodeInfo;Ljava/lang/CharSequence;)V +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$10()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$11()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$12()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$2()I +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$2()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$2(Landroid/view/accessibility/AccessibilityNodeInfo;Z)V +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$3()I +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$3()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$4()I +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$4()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$5()I +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$5()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$6()I +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$6()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$7()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$8()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m$9()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m()I +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m()Landroid/view/WindowInsets; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/Window;)Landroid/view/WindowInsetsController; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/WindowInsets;)Landroid/view/DisplayCutout; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/WindowInsets;)Landroid/view/WindowInsets; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/WindowInsets;I)Landroid/graphics/Insets; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/WindowInsets;I)Z +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/WindowInsetsController;)I +Landroidx/core/view/WindowInsetsCompat$Impl29; +HSPLandroidx/core/view/WindowInsetsCompat$Impl29;->(Landroidx/core/view/WindowInsetsCompat;Landroid/view/WindowInsets;)V +Landroidx/core/view/WindowInsetsCompat$Impl30; +HSPLandroidx/core/view/WindowInsetsCompat$Impl30;->()V +HSPLandroidx/core/view/WindowInsetsCompat$Impl30;->(Landroidx/core/view/WindowInsetsCompat;Landroid/view/WindowInsets;)V +HSPLandroidx/core/view/WindowInsetsCompat$Impl30;->copyRootViewBounds(Landroid/view/View;)V +HSPLandroidx/core/view/WindowInsetsCompat$Impl30;->getInsets(I)Landroidx/core/graphics/Insets; +HSPLandroidx/core/view/WindowInsetsCompat$Impl30;->getInsetsIgnoringVisibility(I)Landroidx/core/graphics/Insets; +HSPLandroidx/core/view/WindowInsetsCompat$Impl30;->isVisible(I)Z +Landroidx/core/view/WindowInsetsCompat$Type; +HSPLandroidx/core/view/WindowInsetsCompat$Type;->captionBar()I +HSPLandroidx/core/view/WindowInsetsCompat$Type;->displayCutout()I +HSPLandroidx/core/view/WindowInsetsCompat$Type;->ime()I +HSPLandroidx/core/view/WindowInsetsCompat$Type;->mandatorySystemGestures()I +HSPLandroidx/core/view/WindowInsetsCompat$Type;->navigationBars()I +HSPLandroidx/core/view/WindowInsetsCompat$Type;->statusBars()I +HSPLandroidx/core/view/WindowInsetsCompat$Type;->systemBars()I +HSPLandroidx/core/view/WindowInsetsCompat$Type;->systemGestures()I +HSPLandroidx/core/view/WindowInsetsCompat$Type;->tappableElement()I +Landroidx/core/view/WindowInsetsCompat$TypeImpl30; +HSPLandroidx/core/view/WindowInsetsCompat$TypeImpl30;->toPlatformType(I)I +Landroidx/core/view/WindowInsetsControllerCompat; +HSPLandroidx/core/view/WindowInsetsControllerCompat;->(Landroid/view/Window;Landroid/view/View;)V +HSPLandroidx/core/view/WindowInsetsControllerCompat;->isAppearanceLightNavigationBars()Z +HSPLandroidx/core/view/WindowInsetsControllerCompat;->isAppearanceLightStatusBars()Z +HSPLandroidx/core/view/WindowInsetsControllerCompat;->setAppearanceLightNavigationBars(Z)V +HSPLandroidx/core/view/WindowInsetsControllerCompat;->setAppearanceLightStatusBars(Z)V +Landroidx/core/view/WindowInsetsControllerCompat$Impl; +HSPLandroidx/core/view/WindowInsetsControllerCompat$Impl;->()V +Landroidx/core/view/WindowInsetsControllerCompat$Impl30; +HSPLandroidx/core/view/WindowInsetsControllerCompat$Impl30;->(Landroid/view/Window;Landroidx/core/view/WindowInsetsControllerCompat;Landroidx/core/view/SoftwareKeyboardControllerCompat;)V +HSPLandroidx/core/view/WindowInsetsControllerCompat$Impl30;->(Landroid/view/WindowInsetsController;Landroidx/core/view/WindowInsetsControllerCompat;Landroidx/core/view/SoftwareKeyboardControllerCompat;)V +HSPLandroidx/core/view/WindowInsetsControllerCompat$Impl30;->isAppearanceLightNavigationBars()Z +HSPLandroidx/core/view/WindowInsetsControllerCompat$Impl30;->isAppearanceLightStatusBars()Z +HSPLandroidx/core/view/WindowInsetsControllerCompat$Impl30;->setAppearanceLightNavigationBars(Z)V +HSPLandroidx/core/view/WindowInsetsControllerCompat$Impl30;->setAppearanceLightStatusBars(Z)V +HSPLandroidx/core/view/WindowInsetsControllerCompat$Impl30;->setSystemUiFlag(I)V +Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat; +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->()V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->(Landroid/view/accessibility/AccessibilityNodeInfo;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->addAction(I)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->addAction(Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->addChild(Landroid/view/View;I)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->extrasIntList(Ljava/lang/String;)Ljava/util/List; +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->getMovementGranularities()I +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->getText()Ljava/lang/CharSequence; +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->hasSpans()Z +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->isFocusable()Z +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->isFocused()Z +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->obtain()Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat; +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setAccessibilityFocused(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setBoundsInScreen(Landroid/graphics/Rect;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setCheckable(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setClassName(Ljava/lang/CharSequence;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setClickable(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setCollectionInfo(Ljava/lang/Object;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setCollectionItemInfo(Ljava/lang/Object;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setContentDescription(Ljava/lang/CharSequence;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setEditable(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setEnabled(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setFocusable(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setFocused(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setImportantForAccessibility(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setLongClickable(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setMovementGranularities(I)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setPackageName(Ljava/lang/CharSequence;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setPaneTitle(Ljava/lang/CharSequence;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setParent(Landroid/view/View;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setParent(Landroid/view/View;I)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setPassword(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setRoleDescription(Ljava/lang/CharSequence;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setScreenReaderFocusable(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setSelected(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setSource(Landroid/view/View;I)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setStateDescription(Ljava/lang/CharSequence;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setText(Ljava/lang/CharSequence;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setTextSelection(II)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setTraversalBefore(Landroid/view/View;I)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setViewIdResourceName(Ljava/lang/String;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setVisibleToUser(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->unwrap()Landroid/view/accessibility/AccessibilityNodeInfo; +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->wrap(Landroid/view/accessibility/AccessibilityNodeInfo;)Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat; +Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat; +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat;->()V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat;->(ILjava/lang/CharSequence;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat;->(ILjava/lang/CharSequence;Ljava/lang/Class;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat;->(Ljava/lang/Object;ILjava/lang/CharSequence;Landroidx/core/view/accessibility/AccessibilityViewCommand;Ljava/lang/Class;)V +Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$Api19Impl; +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$Api19Impl;->getExtras(Landroid/view/accessibility/AccessibilityNodeInfo;)Landroid/os/Bundle; +Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$Api30Impl; +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$Api30Impl;->setStateDescription(Landroid/view/accessibility/AccessibilityNodeInfo;Ljava/lang/CharSequence;)V +Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$CollectionInfoCompat; +PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$CollectionInfoCompat;->(Ljava/lang/Object;)V +PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$CollectionInfoCompat;->obtain(IIZI)Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$CollectionInfoCompat; +Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$CollectionItemInfoCompat; +PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$CollectionItemInfoCompat;->(Ljava/lang/Object;)V +PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$CollectionItemInfoCompat;->obtain(IIIIZZ)Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$CollectionItemInfoCompat; +Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$RangeInfoCompat; +Landroidx/core/view/accessibility/AccessibilityNodeProviderCompat; +HSPLandroidx/core/view/accessibility/AccessibilityNodeProviderCompat;->(Ljava/lang/Object;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeProviderCompat;->getProvider()Ljava/lang/Object; +Landroidx/core/view/accessibility/AccessibilityViewCommand; +Landroidx/core/view/accessibility/AccessibilityViewCommand$CommandArguments; +Landroidx/core/view/accessibility/AccessibilityViewCommand$MoveAtGranularityArguments; +Landroidx/core/view/accessibility/AccessibilityViewCommand$MoveHtmlArguments; +Landroidx/core/view/accessibility/AccessibilityViewCommand$MoveWindowArguments; +Landroidx/core/view/accessibility/AccessibilityViewCommand$ScrollToPositionArguments; +Landroidx/core/view/accessibility/AccessibilityViewCommand$SetProgressArguments; +Landroidx/core/view/accessibility/AccessibilityViewCommand$SetSelectionArguments; +Landroidx/core/view/accessibility/AccessibilityViewCommand$SetTextArguments; +Landroidx/core/view/inputmethod/EditorInfoCompat; +HSPLandroidx/core/view/inputmethod/EditorInfoCompat;->()V +HSPLandroidx/core/view/inputmethod/EditorInfoCompat;->setInitialSurroundingText(Landroid/view/inputmethod/EditorInfo;Ljava/lang/CharSequence;)V +Landroidx/core/view/inputmethod/EditorInfoCompat$Api30Impl; +HSPLandroidx/core/view/inputmethod/EditorInfoCompat$Api30Impl;->setInitialSurroundingSubText(Landroid/view/inputmethod/EditorInfo;Ljava/lang/CharSequence;I)V +Landroidx/credentials/provider/Action$Companion$$ExternalSyntheticApiModelOutline0; +HSPLandroidx/credentials/provider/Action$Companion$$ExternalSyntheticApiModelOutline0;->m(Landroid/app/Activity;Landroid/app/Application$ActivityLifecycleCallbacks;)V +HSPLandroidx/credentials/provider/Action$Companion$$ExternalSyntheticApiModelOutline0;->m(Landroid/os/Looper;)Landroid/os/Handler; +Landroidx/customview/poolingcontainer/PoolingContainer; +HSPLandroidx/customview/poolingcontainer/PoolingContainer;->()V +HSPLandroidx/customview/poolingcontainer/PoolingContainer;->addPoolingContainerListener(Landroid/view/View;Landroidx/customview/poolingcontainer/PoolingContainerListener;)V +HSPLandroidx/customview/poolingcontainer/PoolingContainer;->getPoolingContainerListenerHolder(Landroid/view/View;)Landroidx/customview/poolingcontainer/PoolingContainerListenerHolder; +Landroidx/customview/poolingcontainer/PoolingContainerListener; +Landroidx/customview/poolingcontainer/PoolingContainerListenerHolder; +HSPLandroidx/customview/poolingcontainer/PoolingContainerListenerHolder;->()V +HSPLandroidx/customview/poolingcontainer/PoolingContainerListenerHolder;->addListener(Landroidx/customview/poolingcontainer/PoolingContainerListener;)V +Landroidx/customview/poolingcontainer/R$id; +Landroidx/datastore/DataStoreFile; +HSPLandroidx/datastore/DataStoreFile;->dataStoreFile(Landroid/content/Context;Ljava/lang/String;)Ljava/io/File; +Landroidx/datastore/core/CorruptionException; +Landroidx/datastore/core/CorruptionHandler; +Landroidx/datastore/core/Data; +HSPLandroidx/datastore/core/Data;->(Ljava/lang/Object;I)V +HSPLandroidx/datastore/core/Data;->getValue()Ljava/lang/Object; +Landroidx/datastore/core/DataMigrationInitializer; +HSPLandroidx/datastore/core/DataMigrationInitializer;->()V +Landroidx/datastore/core/DataMigrationInitializer$Companion; +HSPLandroidx/datastore/core/DataMigrationInitializer$Companion;->()V +HSPLandroidx/datastore/core/DataMigrationInitializer$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/datastore/core/DataMigrationInitializer$Companion;->access$runMigrations(Landroidx/datastore/core/DataMigrationInitializer$Companion;Ljava/util/List;Landroidx/datastore/core/InitializerApi;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/datastore/core/DataMigrationInitializer$Companion;->getInitializer(Ljava/util/List;)Lkotlin/jvm/functions/Function2; +HSPLandroidx/datastore/core/DataMigrationInitializer$Companion;->runMigrations(Ljava/util/List;Landroidx/datastore/core/InitializerApi;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/datastore/core/DataMigrationInitializer$Companion$getInitializer$1; +HSPLandroidx/datastore/core/DataMigrationInitializer$Companion$getInitializer$1;->(Ljava/util/List;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/datastore/core/DataMigrationInitializer$Companion$getInitializer$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/datastore/core/DataMigrationInitializer$Companion$getInitializer$1;->invoke(Landroidx/datastore/core/InitializerApi;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/datastore/core/DataMigrationInitializer$Companion$getInitializer$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/datastore/core/DataMigrationInitializer$Companion$getInitializer$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/datastore/core/DataMigrationInitializer$Companion$runMigrations$1; +HSPLandroidx/datastore/core/DataMigrationInitializer$Companion$runMigrations$1;->(Landroidx/datastore/core/DataMigrationInitializer$Companion;Lkotlin/coroutines/Continuation;)V +Landroidx/datastore/core/DataMigrationInitializer$Companion$runMigrations$2; +HSPLandroidx/datastore/core/DataMigrationInitializer$Companion$runMigrations$2;->(Ljava/util/List;Ljava/util/List;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/datastore/core/DataMigrationInitializer$Companion$runMigrations$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/datastore/core/DataMigrationInitializer$Companion$runMigrations$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/datastore/core/DataMigrationInitializer$Companion$runMigrations$2;->invoke(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/datastore/core/DataMigrationInitializer$Companion$runMigrations$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/datastore/core/DataStore; +Landroidx/datastore/core/DataStoreFactory; +HSPLandroidx/datastore/core/DataStoreFactory;->()V +HSPLandroidx/datastore/core/DataStoreFactory;->()V +HSPLandroidx/datastore/core/DataStoreFactory;->create(Landroidx/datastore/core/Serializer;Landroidx/datastore/core/handlers/ReplaceFileCorruptionHandler;Ljava/util/List;Lkotlinx/coroutines/CoroutineScope;Lkotlin/jvm/functions/Function0;)Landroidx/datastore/core/DataStore; +Landroidx/datastore/core/Final; +Landroidx/datastore/core/InitializerApi; +Landroidx/datastore/core/ReadException; +Landroidx/datastore/core/Serializer; +Landroidx/datastore/core/SimpleActor; +HSPLandroidx/datastore/core/SimpleActor;->(Lkotlinx/coroutines/CoroutineScope;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/datastore/core/SimpleActor;->access$getConsumeMessage$p(Landroidx/datastore/core/SimpleActor;)Lkotlin/jvm/functions/Function2; +HSPLandroidx/datastore/core/SimpleActor;->access$getMessageQueue$p(Landroidx/datastore/core/SimpleActor;)Lkotlinx/coroutines/channels/Channel; +HSPLandroidx/datastore/core/SimpleActor;->access$getRemainingMessages$p(Landroidx/datastore/core/SimpleActor;)Ljava/util/concurrent/atomic/AtomicInteger; +HSPLandroidx/datastore/core/SimpleActor;->access$getScope$p(Landroidx/datastore/core/SimpleActor;)Lkotlinx/coroutines/CoroutineScope; +HSPLandroidx/datastore/core/SimpleActor;->offer(Ljava/lang/Object;)V +Landroidx/datastore/core/SimpleActor$1; +HSPLandroidx/datastore/core/SimpleActor$1;->(Lkotlin/jvm/functions/Function1;Landroidx/datastore/core/SimpleActor;Lkotlin/jvm/functions/Function2;)V +Landroidx/datastore/core/SimpleActor$offer$2; +HSPLandroidx/datastore/core/SimpleActor$offer$2;->(Landroidx/datastore/core/SimpleActor;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/datastore/core/SimpleActor$offer$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/datastore/core/SimpleActor$offer$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/datastore/core/SingleProcessDataStore; +HSPLandroidx/datastore/core/SingleProcessDataStore;->()V +HSPLandroidx/datastore/core/SingleProcessDataStore;->(Lkotlin/jvm/functions/Function0;Landroidx/datastore/core/Serializer;Ljava/util/List;Landroidx/datastore/core/CorruptionHandler;Lkotlinx/coroutines/CoroutineScope;)V +HSPLandroidx/datastore/core/SingleProcessDataStore;->access$getActiveFiles$cp()Ljava/util/Set; +HSPLandroidx/datastore/core/SingleProcessDataStore;->access$getActiveFilesLock$cp()Ljava/lang/Object; +HSPLandroidx/datastore/core/SingleProcessDataStore;->access$getActor$p(Landroidx/datastore/core/SingleProcessDataStore;)Landroidx/datastore/core/SimpleActor; +HSPLandroidx/datastore/core/SingleProcessDataStore;->access$getDownstreamFlow$p(Landroidx/datastore/core/SingleProcessDataStore;)Lkotlinx/coroutines/flow/MutableStateFlow; +HSPLandroidx/datastore/core/SingleProcessDataStore;->access$getProduceFile$p(Landroidx/datastore/core/SingleProcessDataStore;)Lkotlin/jvm/functions/Function0; +HSPLandroidx/datastore/core/SingleProcessDataStore;->access$handleRead(Landroidx/datastore/core/SingleProcessDataStore;Landroidx/datastore/core/SingleProcessDataStore$Message$Read;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/datastore/core/SingleProcessDataStore;->getData()Lkotlinx/coroutines/flow/Flow; +HSPLandroidx/datastore/core/SingleProcessDataStore;->getFile()Ljava/io/File; +HSPLandroidx/datastore/core/SingleProcessDataStore;->handleRead(Landroidx/datastore/core/SingleProcessDataStore$Message$Read;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/datastore/core/SingleProcessDataStore;->readAndInit(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/datastore/core/SingleProcessDataStore;->readAndInitOrPropagateFailure(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/datastore/core/SingleProcessDataStore;->readData(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/datastore/core/SingleProcessDataStore;->readDataOrHandleCorruption(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/datastore/core/SingleProcessDataStore$Companion; +HSPLandroidx/datastore/core/SingleProcessDataStore$Companion;->()V +HSPLandroidx/datastore/core/SingleProcessDataStore$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/datastore/core/SingleProcessDataStore$Companion;->getActiveFiles$datastore_core()Ljava/util/Set; +HSPLandroidx/datastore/core/SingleProcessDataStore$Companion;->getActiveFilesLock$datastore_core()Ljava/lang/Object; +Landroidx/datastore/core/SingleProcessDataStore$Message; +HSPLandroidx/datastore/core/SingleProcessDataStore$Message;->()V +HSPLandroidx/datastore/core/SingleProcessDataStore$Message;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/datastore/core/SingleProcessDataStore$Message$Read; +HSPLandroidx/datastore/core/SingleProcessDataStore$Message$Read;->(Landroidx/datastore/core/State;)V +Landroidx/datastore/core/SingleProcessDataStore$actor$1; +HSPLandroidx/datastore/core/SingleProcessDataStore$actor$1;->(Landroidx/datastore/core/SingleProcessDataStore;)V +Landroidx/datastore/core/SingleProcessDataStore$actor$2; +HSPLandroidx/datastore/core/SingleProcessDataStore$actor$2;->()V +HSPLandroidx/datastore/core/SingleProcessDataStore$actor$2;->()V +Landroidx/datastore/core/SingleProcessDataStore$actor$3; +HSPLandroidx/datastore/core/SingleProcessDataStore$actor$3;->(Landroidx/datastore/core/SingleProcessDataStore;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/datastore/core/SingleProcessDataStore$actor$3;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/datastore/core/SingleProcessDataStore$actor$3;->invoke(Landroidx/datastore/core/SingleProcessDataStore$Message;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/datastore/core/SingleProcessDataStore$actor$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/datastore/core/SingleProcessDataStore$actor$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/datastore/core/SingleProcessDataStore$data$1; +HSPLandroidx/datastore/core/SingleProcessDataStore$data$1;->(Landroidx/datastore/core/SingleProcessDataStore;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/datastore/core/SingleProcessDataStore$data$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/datastore/core/SingleProcessDataStore$data$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/datastore/core/SingleProcessDataStore$data$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/datastore/core/SingleProcessDataStore$data$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/datastore/core/SingleProcessDataStore$data$1$1; +HSPLandroidx/datastore/core/SingleProcessDataStore$data$1$1;->(Landroidx/datastore/core/State;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/datastore/core/SingleProcessDataStore$data$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/datastore/core/SingleProcessDataStore$data$1$1;->invoke(Landroidx/datastore/core/State;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/datastore/core/SingleProcessDataStore$data$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/datastore/core/SingleProcessDataStore$data$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/datastore/core/SingleProcessDataStore$data$1$invokeSuspend$$inlined$map$1; +HSPLandroidx/datastore/core/SingleProcessDataStore$data$1$invokeSuspend$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLandroidx/datastore/core/SingleProcessDataStore$data$1$invokeSuspend$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/datastore/core/SingleProcessDataStore$data$1$invokeSuspend$$inlined$map$1$2; +HSPLandroidx/datastore/core/SingleProcessDataStore$data$1$invokeSuspend$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLandroidx/datastore/core/SingleProcessDataStore$data$1$invokeSuspend$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/datastore/core/SingleProcessDataStore$data$1$invokeSuspend$$inlined$map$1$2$1; +HSPLandroidx/datastore/core/SingleProcessDataStore$data$1$invokeSuspend$$inlined$map$1$2$1;->(Landroidx/datastore/core/SingleProcessDataStore$data$1$invokeSuspend$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Landroidx/datastore/core/SingleProcessDataStore$file$2; +HSPLandroidx/datastore/core/SingleProcessDataStore$file$2;->(Landroidx/datastore/core/SingleProcessDataStore;)V +HSPLandroidx/datastore/core/SingleProcessDataStore$file$2;->invoke()Ljava/io/File; +HSPLandroidx/datastore/core/SingleProcessDataStore$file$2;->invoke()Ljava/lang/Object; +Landroidx/datastore/core/SingleProcessDataStore$readAndInit$1; +HSPLandroidx/datastore/core/SingleProcessDataStore$readAndInit$1;->(Landroidx/datastore/core/SingleProcessDataStore;Lkotlin/coroutines/Continuation;)V +Landroidx/datastore/core/SingleProcessDataStore$readAndInit$api$1; +HSPLandroidx/datastore/core/SingleProcessDataStore$readAndInit$api$1;->(Lkotlinx/coroutines/sync/Mutex;Lkotlin/jvm/internal/Ref$BooleanRef;Lkotlin/jvm/internal/Ref$ObjectRef;Landroidx/datastore/core/SingleProcessDataStore;)V +HSPLandroidx/datastore/core/SingleProcessDataStore$readAndInit$api$1;->updateData(Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/datastore/core/SingleProcessDataStore$readAndInit$api$1$updateData$1; +HSPLandroidx/datastore/core/SingleProcessDataStore$readAndInit$api$1$updateData$1;->(Landroidx/datastore/core/SingleProcessDataStore$readAndInit$api$1;Lkotlin/coroutines/Continuation;)V +Landroidx/datastore/core/SingleProcessDataStore$readAndInitOrPropagateFailure$1; +HSPLandroidx/datastore/core/SingleProcessDataStore$readAndInitOrPropagateFailure$1;->(Landroidx/datastore/core/SingleProcessDataStore;Lkotlin/coroutines/Continuation;)V +Landroidx/datastore/core/SingleProcessDataStore$readData$1; +HSPLandroidx/datastore/core/SingleProcessDataStore$readData$1;->(Landroidx/datastore/core/SingleProcessDataStore;Lkotlin/coroutines/Continuation;)V +Landroidx/datastore/core/SingleProcessDataStore$readDataOrHandleCorruption$1; +HSPLandroidx/datastore/core/SingleProcessDataStore$readDataOrHandleCorruption$1;->(Landroidx/datastore/core/SingleProcessDataStore;Lkotlin/coroutines/Continuation;)V +Landroidx/datastore/core/State; +HSPLandroidx/datastore/core/State;->()V +HSPLandroidx/datastore/core/State;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/datastore/core/UnInitialized; +HSPLandroidx/datastore/core/UnInitialized;->()V +HSPLandroidx/datastore/core/UnInitialized;->()V +Landroidx/datastore/core/handlers/NoOpCorruptionHandler; +HSPLandroidx/datastore/core/handlers/NoOpCorruptionHandler;->()V +Landroidx/datastore/core/handlers/ReplaceFileCorruptionHandler; +Landroidx/datastore/preferences/PreferenceDataStoreDelegateKt; +HSPLandroidx/datastore/preferences/PreferenceDataStoreDelegateKt;->preferencesDataStore$default(Ljava/lang/String;Landroidx/datastore/core/handlers/ReplaceFileCorruptionHandler;Lkotlin/jvm/functions/Function1;Lkotlinx/coroutines/CoroutineScope;ILjava/lang/Object;)Lkotlin/properties/ReadOnlyProperty; +HSPLandroidx/datastore/preferences/PreferenceDataStoreDelegateKt;->preferencesDataStore(Ljava/lang/String;Landroidx/datastore/core/handlers/ReplaceFileCorruptionHandler;Lkotlin/jvm/functions/Function1;Lkotlinx/coroutines/CoroutineScope;)Lkotlin/properties/ReadOnlyProperty; +Landroidx/datastore/preferences/PreferenceDataStoreDelegateKt$preferencesDataStore$1; +HSPLandroidx/datastore/preferences/PreferenceDataStoreDelegateKt$preferencesDataStore$1;->()V +HSPLandroidx/datastore/preferences/PreferenceDataStoreDelegateKt$preferencesDataStore$1;->()V +HSPLandroidx/datastore/preferences/PreferenceDataStoreDelegateKt$preferencesDataStore$1;->invoke(Landroid/content/Context;)Ljava/util/List; +HSPLandroidx/datastore/preferences/PreferenceDataStoreDelegateKt$preferencesDataStore$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/datastore/preferences/PreferenceDataStoreFile; +HSPLandroidx/datastore/preferences/PreferenceDataStoreFile;->preferencesDataStoreFile(Landroid/content/Context;Ljava/lang/String;)Ljava/io/File; +Landroidx/datastore/preferences/PreferenceDataStoreSingletonDelegate; +HSPLandroidx/datastore/preferences/PreferenceDataStoreSingletonDelegate;->(Ljava/lang/String;Landroidx/datastore/core/handlers/ReplaceFileCorruptionHandler;Lkotlin/jvm/functions/Function1;Lkotlinx/coroutines/CoroutineScope;)V +HSPLandroidx/datastore/preferences/PreferenceDataStoreSingletonDelegate;->access$getName$p(Landroidx/datastore/preferences/PreferenceDataStoreSingletonDelegate;)Ljava/lang/String; +HSPLandroidx/datastore/preferences/PreferenceDataStoreSingletonDelegate;->getValue(Landroid/content/Context;Lkotlin/reflect/KProperty;)Landroidx/datastore/core/DataStore; +HSPLandroidx/datastore/preferences/PreferenceDataStoreSingletonDelegate;->getValue(Ljava/lang/Object;Lkotlin/reflect/KProperty;)Ljava/lang/Object; +Landroidx/datastore/preferences/PreferenceDataStoreSingletonDelegate$getValue$1$1; +HSPLandroidx/datastore/preferences/PreferenceDataStoreSingletonDelegate$getValue$1$1;->(Landroid/content/Context;Landroidx/datastore/preferences/PreferenceDataStoreSingletonDelegate;)V +HSPLandroidx/datastore/preferences/PreferenceDataStoreSingletonDelegate$getValue$1$1;->invoke()Ljava/io/File; +HSPLandroidx/datastore/preferences/PreferenceDataStoreSingletonDelegate$getValue$1$1;->invoke()Ljava/lang/Object; +Landroidx/datastore/preferences/core/MutablePreferences; +HSPLandroidx/datastore/preferences/core/MutablePreferences;->(Ljava/util/Map;Z)V +HSPLandroidx/datastore/preferences/core/MutablePreferences;->(Ljava/util/Map;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/datastore/preferences/core/MutablePreferences;->asMap()Ljava/util/Map; +HSPLandroidx/datastore/preferences/core/MutablePreferences;->equals(Ljava/lang/Object;)Z +HSPLandroidx/datastore/preferences/core/MutablePreferences;->get(Landroidx/datastore/preferences/core/Preferences$Key;)Ljava/lang/Object; +HSPLandroidx/datastore/preferences/core/MutablePreferences;->hashCode()I +Landroidx/datastore/preferences/core/PreferenceDataStore; +HSPLandroidx/datastore/preferences/core/PreferenceDataStore;->(Landroidx/datastore/core/DataStore;)V +HSPLandroidx/datastore/preferences/core/PreferenceDataStore;->getData()Lkotlinx/coroutines/flow/Flow; +Landroidx/datastore/preferences/core/PreferenceDataStoreFactory; +HSPLandroidx/datastore/preferences/core/PreferenceDataStoreFactory;->()V +HSPLandroidx/datastore/preferences/core/PreferenceDataStoreFactory;->()V +HSPLandroidx/datastore/preferences/core/PreferenceDataStoreFactory;->create(Landroidx/datastore/core/handlers/ReplaceFileCorruptionHandler;Ljava/util/List;Lkotlinx/coroutines/CoroutineScope;Lkotlin/jvm/functions/Function0;)Landroidx/datastore/core/DataStore; +Landroidx/datastore/preferences/core/PreferenceDataStoreFactory$create$delegate$1; +HSPLandroidx/datastore/preferences/core/PreferenceDataStoreFactory$create$delegate$1;->(Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/datastore/preferences/core/PreferenceDataStoreFactory$create$delegate$1;->invoke()Ljava/io/File; +HSPLandroidx/datastore/preferences/core/PreferenceDataStoreFactory$create$delegate$1;->invoke()Ljava/lang/Object; +Landroidx/datastore/preferences/core/Preferences; +HSPLandroidx/datastore/preferences/core/Preferences;->()V +HSPLandroidx/datastore/preferences/core/Preferences;->toPreferences()Landroidx/datastore/preferences/core/Preferences; +Landroidx/datastore/preferences/core/Preferences$Key; +HSPLandroidx/datastore/preferences/core/Preferences$Key;->(Ljava/lang/String;)V +Landroidx/datastore/preferences/core/PreferencesFactory; +HSPLandroidx/datastore/preferences/core/PreferencesFactory;->createEmpty()Landroidx/datastore/preferences/core/Preferences; +Landroidx/datastore/preferences/core/PreferencesKeys; +HSPLandroidx/datastore/preferences/core/PreferencesKeys;->booleanKey(Ljava/lang/String;)Landroidx/datastore/preferences/core/Preferences$Key; +HSPLandroidx/datastore/preferences/core/PreferencesKeys;->doubleKey(Ljava/lang/String;)Landroidx/datastore/preferences/core/Preferences$Key; +HSPLandroidx/datastore/preferences/core/PreferencesKeys;->intKey(Ljava/lang/String;)Landroidx/datastore/preferences/core/Preferences$Key; +HSPLandroidx/datastore/preferences/core/PreferencesKeys;->longKey(Ljava/lang/String;)Landroidx/datastore/preferences/core/Preferences$Key; +Landroidx/datastore/preferences/core/PreferencesSerializer; +HSPLandroidx/datastore/preferences/core/PreferencesSerializer;->()V +HSPLandroidx/datastore/preferences/core/PreferencesSerializer;->()V +HSPLandroidx/datastore/preferences/core/PreferencesSerializer;->getDefaultValue()Landroidx/datastore/preferences/core/Preferences; +HSPLandroidx/datastore/preferences/core/PreferencesSerializer;->getDefaultValue()Ljava/lang/Object; +HSPLandroidx/datastore/preferences/core/PreferencesSerializer;->getFileExtension()Ljava/lang/String; +Landroidx/emoji2/text/ConcurrencyHelpers; +HSPLandroidx/emoji2/text/ConcurrencyHelpers;->createBackgroundPriorityExecutor(Ljava/lang/String;)Ljava/util/concurrent/ThreadPoolExecutor; +HSPLandroidx/emoji2/text/ConcurrencyHelpers;->lambda$createBackgroundPriorityExecutor$0(Ljava/lang/String;Ljava/lang/Runnable;)Ljava/lang/Thread; +HSPLandroidx/emoji2/text/ConcurrencyHelpers;->mainHandlerAsync()Landroid/os/Handler; +Landroidx/emoji2/text/ConcurrencyHelpers$$ExternalSyntheticLambda0; +HSPLandroidx/emoji2/text/ConcurrencyHelpers$$ExternalSyntheticLambda0;->(Ljava/lang/String;)V +HSPLandroidx/emoji2/text/ConcurrencyHelpers$$ExternalSyntheticLambda0;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread; +Landroidx/emoji2/text/ConcurrencyHelpers$Handler28Impl; +HSPLandroidx/emoji2/text/ConcurrencyHelpers$Handler28Impl;->createAsync(Landroid/os/Looper;)Landroid/os/Handler; +Landroidx/emoji2/text/DefaultEmojiCompatConfig; +HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig;->create(Landroid/content/Context;)Landroidx/emoji2/text/FontRequestEmojiCompatConfig; +Landroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory; +HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;->(Landroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper;)V +HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;->configOrNull(Landroid/content/Context;Landroidx/core/provider/FontRequest;)Landroidx/emoji2/text/EmojiCompat$Config; +HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;->convertToByteArray([Landroid/content/pm/Signature;)Ljava/util/List; +HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;->create(Landroid/content/Context;)Landroidx/emoji2/text/EmojiCompat$Config; +HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;->generateFontRequestFrom(Landroid/content/pm/ProviderInfo;Landroid/content/pm/PackageManager;)Landroidx/core/provider/FontRequest; +HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;->getHelperForApi()Landroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper; +HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;->hasFlagSystem(Landroid/content/pm/ProviderInfo;)Z +HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;->queryDefaultInstalledContentProvider(Landroid/content/pm/PackageManager;)Landroid/content/pm/ProviderInfo; +HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;->queryForDefaultFontRequest(Landroid/content/Context;)Landroidx/core/provider/FontRequest; +Landroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper; +HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper;->()V +Landroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper_API19; +HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper_API19;->()V +HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper_API19;->getProviderInfo(Landroid/content/pm/ResolveInfo;)Landroid/content/pm/ProviderInfo; +HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper_API19;->queryIntentContentProviders(Landroid/content/pm/PackageManager;Landroid/content/Intent;I)Ljava/util/List; +Landroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper_API28; +HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper_API28;->()V +HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper_API28;->getSigningSignatures(Landroid/content/pm/PackageManager;Ljava/lang/String;)[Landroid/content/pm/Signature; +Landroidx/emoji2/text/DefaultGlyphChecker; +HSPLandroidx/emoji2/text/DefaultGlyphChecker;->()V +HSPLandroidx/emoji2/text/DefaultGlyphChecker;->()V +Landroidx/emoji2/text/EmojiCompat; +HSPLandroidx/emoji2/text/EmojiCompat;->()V +HSPLandroidx/emoji2/text/EmojiCompat;->(Landroidx/emoji2/text/EmojiCompat$Config;)V +HSPLandroidx/emoji2/text/EmojiCompat;->access$000(Landroidx/emoji2/text/EmojiCompat;)Landroidx/emoji2/text/EmojiCompat$SpanFactory; +HSPLandroidx/emoji2/text/EmojiCompat;->access$100(Landroidx/emoji2/text/EmojiCompat;)Landroidx/emoji2/text/EmojiCompat$GlyphChecker; +HSPLandroidx/emoji2/text/EmojiCompat;->get()Landroidx/emoji2/text/EmojiCompat; +HSPLandroidx/emoji2/text/EmojiCompat;->getLoadState()I +HSPLandroidx/emoji2/text/EmojiCompat;->init(Landroidx/emoji2/text/EmojiCompat$Config;)Landroidx/emoji2/text/EmojiCompat; +HSPLandroidx/emoji2/text/EmojiCompat;->isConfigured()Z +HSPLandroidx/emoji2/text/EmojiCompat;->isInitialized()Z +HSPLandroidx/emoji2/text/EmojiCompat;->load()V +HSPLandroidx/emoji2/text/EmojiCompat;->loadMetadata()V +HSPLandroidx/emoji2/text/EmojiCompat;->onMetadataLoadSuccess()V +HSPLandroidx/emoji2/text/EmojiCompat;->process(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; +HSPLandroidx/emoji2/text/EmojiCompat;->process(Ljava/lang/CharSequence;II)Ljava/lang/CharSequence; +HSPLandroidx/emoji2/text/EmojiCompat;->process(Ljava/lang/CharSequence;III)Ljava/lang/CharSequence; +HSPLandroidx/emoji2/text/EmojiCompat;->process(Ljava/lang/CharSequence;IIII)Ljava/lang/CharSequence; +HSPLandroidx/emoji2/text/EmojiCompat;->registerInitCallback(Landroidx/emoji2/text/EmojiCompat$InitCallback;)V +HSPLandroidx/emoji2/text/EmojiCompat;->updateEditorInfo(Landroid/view/inputmethod/EditorInfo;)V +Landroidx/emoji2/text/EmojiCompat$CompatInternal; +HSPLandroidx/emoji2/text/EmojiCompat$CompatInternal;->(Landroidx/emoji2/text/EmojiCompat;)V +Landroidx/emoji2/text/EmojiCompat$CompatInternal19; +HSPLandroidx/emoji2/text/EmojiCompat$CompatInternal19;->(Landroidx/emoji2/text/EmojiCompat;)V +HSPLandroidx/emoji2/text/EmojiCompat$CompatInternal19;->loadMetadata()V +HSPLandroidx/emoji2/text/EmojiCompat$CompatInternal19;->onMetadataLoadSuccess(Landroidx/emoji2/text/MetadataRepo;)V +HSPLandroidx/emoji2/text/EmojiCompat$CompatInternal19;->process(Ljava/lang/CharSequence;IIIZ)Ljava/lang/CharSequence; +HSPLandroidx/emoji2/text/EmojiCompat$CompatInternal19;->updateEditorInfoAttrs(Landroid/view/inputmethod/EditorInfo;)V +Landroidx/emoji2/text/EmojiCompat$CompatInternal19$1; +HSPLandroidx/emoji2/text/EmojiCompat$CompatInternal19$1;->(Landroidx/emoji2/text/EmojiCompat$CompatInternal19;)V +HSPLandroidx/emoji2/text/EmojiCompat$CompatInternal19$1;->onLoaded(Landroidx/emoji2/text/MetadataRepo;)V +Landroidx/emoji2/text/EmojiCompat$Config; +HSPLandroidx/emoji2/text/EmojiCompat$Config;->(Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoader;)V +HSPLandroidx/emoji2/text/EmojiCompat$Config;->getMetadataRepoLoader()Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoader; +HSPLandroidx/emoji2/text/EmojiCompat$Config;->setMetadataLoadStrategy(I)Landroidx/emoji2/text/EmojiCompat$Config; +Landroidx/emoji2/text/EmojiCompat$DefaultSpanFactory; +HSPLandroidx/emoji2/text/EmojiCompat$DefaultSpanFactory;->()V +Landroidx/emoji2/text/EmojiCompat$GlyphChecker; +Landroidx/emoji2/text/EmojiCompat$InitCallback; +HSPLandroidx/emoji2/text/EmojiCompat$InitCallback;->()V +Landroidx/emoji2/text/EmojiCompat$ListenerDispatcher; +HSPLandroidx/emoji2/text/EmojiCompat$ListenerDispatcher;->(Ljava/util/Collection;I)V +HSPLandroidx/emoji2/text/EmojiCompat$ListenerDispatcher;->(Ljava/util/Collection;ILjava/lang/Throwable;)V +HSPLandroidx/emoji2/text/EmojiCompat$ListenerDispatcher;->run()V +Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoader; +Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback; +HSPLandroidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback;->()V +Landroidx/emoji2/text/EmojiCompat$SpanFactory; +Landroidx/emoji2/text/EmojiCompatInitializer; +HSPLandroidx/emoji2/text/EmojiCompatInitializer;->()V +HSPLandroidx/emoji2/text/EmojiCompatInitializer;->create(Landroid/content/Context;)Ljava/lang/Boolean; +HSPLandroidx/emoji2/text/EmojiCompatInitializer;->create(Landroid/content/Context;)Ljava/lang/Object; +HSPLandroidx/emoji2/text/EmojiCompatInitializer;->delayUntilFirstResume(Landroid/content/Context;)V +HSPLandroidx/emoji2/text/EmojiCompatInitializer;->dependencies()Ljava/util/List; +HSPLandroidx/emoji2/text/EmojiCompatInitializer;->loadEmojiCompatAfterDelay()V +Landroidx/emoji2/text/EmojiCompatInitializer$1; +HSPLandroidx/emoji2/text/EmojiCompatInitializer$1;->(Landroidx/emoji2/text/EmojiCompatInitializer;Landroidx/lifecycle/Lifecycle;)V +HSPLandroidx/emoji2/text/EmojiCompatInitializer$1;->onResume(Landroidx/lifecycle/LifecycleOwner;)V +Landroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultConfig; +HSPLandroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultConfig;->(Landroid/content/Context;)V +Landroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader; +HSPLandroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader;->(Landroid/content/Context;)V +HSPLandroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader;->doLoad(Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback;Ljava/util/concurrent/ThreadPoolExecutor;)V +HSPLandroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader;->lambda$load$0$androidx-emoji2-text-EmojiCompatInitializer$BackgroundDefaultLoader(Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback;Ljava/util/concurrent/ThreadPoolExecutor;)V +HSPLandroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader;->load(Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback;)V +Landroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader$$ExternalSyntheticLambda0; +HSPLandroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader$$ExternalSyntheticLambda0;->(Landroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader;Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback;Ljava/util/concurrent/ThreadPoolExecutor;)V +HSPLandroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader$$ExternalSyntheticLambda0;->run()V +Landroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader$1; +HSPLandroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader$1;->(Landroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader;Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback;Ljava/util/concurrent/ThreadPoolExecutor;)V +HSPLandroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader$1;->onLoaded(Landroidx/emoji2/text/MetadataRepo;)V +Landroidx/emoji2/text/EmojiCompatInitializer$LoadEmojiCompatRunnable; +HSPLandroidx/emoji2/text/EmojiCompatInitializer$LoadEmojiCompatRunnable;->()V +HSPLandroidx/emoji2/text/EmojiCompatInitializer$LoadEmojiCompatRunnable;->run()V +Landroidx/emoji2/text/EmojiExclusions; +HSPLandroidx/emoji2/text/EmojiExclusions;->getEmojiExclusions()Ljava/util/Set; +Landroidx/emoji2/text/EmojiExclusions$EmojiExclusions_Api34; +HSPLandroidx/emoji2/text/EmojiExclusions$EmojiExclusions_Api34;->getExclusions()Ljava/util/Set; +Landroidx/emoji2/text/EmojiExclusions$EmojiExclusions_Reflections; +HSPLandroidx/emoji2/text/EmojiExclusions$EmojiExclusions_Reflections;->getExclusions()Ljava/util/Set; +Landroidx/emoji2/text/EmojiProcessor; +HSPLandroidx/emoji2/text/EmojiProcessor;->(Landroidx/emoji2/text/MetadataRepo;Landroidx/emoji2/text/EmojiCompat$SpanFactory;Landroidx/emoji2/text/EmojiCompat$GlyphChecker;Z[ILjava/util/Set;)V +HSPLandroidx/emoji2/text/EmojiProcessor;->initExclusions(Ljava/util/Set;)V +HSPLandroidx/emoji2/text/EmojiProcessor;->process(Ljava/lang/CharSequence;IIIZ)Ljava/lang/CharSequence; +HSPLandroidx/emoji2/text/EmojiProcessor;->process(Ljava/lang/CharSequence;IIIZLandroidx/emoji2/text/EmojiProcessor$EmojiProcessCallback;)Ljava/lang/Object; +Landroidx/emoji2/text/EmojiProcessor$EmojiProcessAddSpanCallback; +HSPLandroidx/emoji2/text/EmojiProcessor$EmojiProcessAddSpanCallback;->(Landroidx/emoji2/text/UnprecomputeTextOnModificationSpannable;Landroidx/emoji2/text/EmojiCompat$SpanFactory;)V +HSPLandroidx/emoji2/text/EmojiProcessor$EmojiProcessAddSpanCallback;->getResult()Landroidx/emoji2/text/UnprecomputeTextOnModificationSpannable; +HSPLandroidx/emoji2/text/EmojiProcessor$EmojiProcessAddSpanCallback;->getResult()Ljava/lang/Object; +Landroidx/emoji2/text/EmojiProcessor$EmojiProcessCallback; +Landroidx/emoji2/text/EmojiProcessor$ProcessorSm; +HSPLandroidx/emoji2/text/EmojiProcessor$ProcessorSm;->(Landroidx/emoji2/text/MetadataRepo$Node;Z[I)V +HSPLandroidx/emoji2/text/EmojiProcessor$ProcessorSm;->check(I)I +HSPLandroidx/emoji2/text/EmojiProcessor$ProcessorSm;->isInFlushableState()Z +HSPLandroidx/emoji2/text/EmojiProcessor$ProcessorSm;->reset()I +Landroidx/emoji2/text/FontRequestEmojiCompatConfig; +HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig;->()V +HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig;->(Landroid/content/Context;Landroidx/core/provider/FontRequest;)V +HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig;->setLoadingExecutor(Ljava/util/concurrent/Executor;)Landroidx/emoji2/text/FontRequestEmojiCompatConfig; +Landroidx/emoji2/text/FontRequestEmojiCompatConfig$FontProviderHelper; +HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontProviderHelper;->()V +HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontProviderHelper;->buildTypeface(Landroid/content/Context;Landroidx/core/provider/FontsContractCompat$FontInfo;)Landroid/graphics/Typeface; +HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontProviderHelper;->fetchFonts(Landroid/content/Context;Landroidx/core/provider/FontRequest;)Landroidx/core/provider/FontsContractCompat$FontFamilyResult; +Landroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader; +HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader;->(Landroid/content/Context;Landroidx/core/provider/FontRequest;Landroidx/emoji2/text/FontRequestEmojiCompatConfig$FontProviderHelper;)V +HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader;->cleanUp()V +HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader;->createMetadata()V +HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader;->load(Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback;)V +HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader;->loadInternal()V +HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader;->retrieveFontInfo()Landroidx/core/provider/FontsContractCompat$FontInfo; +HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader;->setExecutor(Ljava/util/concurrent/Executor;)V +Landroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader$$ExternalSyntheticLambda0; +HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader$$ExternalSyntheticLambda0;->(Landroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader;)V +HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader$$ExternalSyntheticLambda0;->run()V +Landroidx/emoji2/text/MetadataListReader; +HSPLandroidx/emoji2/text/MetadataListReader;->findOffsetInfo(Landroidx/emoji2/text/MetadataListReader$OpenTypeReader;)Landroidx/emoji2/text/MetadataListReader$OffsetInfo; +HSPLandroidx/emoji2/text/MetadataListReader;->read(Ljava/nio/ByteBuffer;)Landroidx/emoji2/text/flatbuffer/MetadataList; +HSPLandroidx/emoji2/text/MetadataListReader;->toUnsignedInt(I)J +HSPLandroidx/emoji2/text/MetadataListReader;->toUnsignedShort(S)I +Landroidx/emoji2/text/MetadataListReader$ByteBufferReader; +HSPLandroidx/emoji2/text/MetadataListReader$ByteBufferReader;->(Ljava/nio/ByteBuffer;)V +HSPLandroidx/emoji2/text/MetadataListReader$ByteBufferReader;->getPosition()J +HSPLandroidx/emoji2/text/MetadataListReader$ByteBufferReader;->readTag()I +HSPLandroidx/emoji2/text/MetadataListReader$ByteBufferReader;->readUnsignedInt()J +HSPLandroidx/emoji2/text/MetadataListReader$ByteBufferReader;->readUnsignedShort()I +HSPLandroidx/emoji2/text/MetadataListReader$ByteBufferReader;->skip(I)V +Landroidx/emoji2/text/MetadataListReader$OffsetInfo; +HSPLandroidx/emoji2/text/MetadataListReader$OffsetInfo;->(JJ)V +HSPLandroidx/emoji2/text/MetadataListReader$OffsetInfo;->getStartOffset()J +Landroidx/emoji2/text/MetadataListReader$OpenTypeReader; +Landroidx/emoji2/text/MetadataRepo; +HSPLandroidx/emoji2/text/MetadataRepo;->(Landroid/graphics/Typeface;Landroidx/emoji2/text/flatbuffer/MetadataList;)V +HSPLandroidx/emoji2/text/MetadataRepo;->constructIndex(Landroidx/emoji2/text/flatbuffer/MetadataList;)V +HSPLandroidx/emoji2/text/MetadataRepo;->create(Landroid/graphics/Typeface;Ljava/nio/ByteBuffer;)Landroidx/emoji2/text/MetadataRepo; +HPLandroidx/emoji2/text/MetadataRepo;->getMetadataList()Landroidx/emoji2/text/flatbuffer/MetadataList; +HSPLandroidx/emoji2/text/MetadataRepo;->getMetadataVersion()I +HSPLandroidx/emoji2/text/MetadataRepo;->getRootNode()Landroidx/emoji2/text/MetadataRepo$Node; +HSPLandroidx/emoji2/text/MetadataRepo;->put(Landroidx/emoji2/text/TypefaceEmojiRasterizer;)V +Landroidx/emoji2/text/MetadataRepo$Node; +HSPLandroidx/emoji2/text/MetadataRepo$Node;->()V +HSPLandroidx/emoji2/text/MetadataRepo$Node;->(I)V +HSPLandroidx/emoji2/text/MetadataRepo$Node;->get(I)Landroidx/emoji2/text/MetadataRepo$Node; +HSPLandroidx/emoji2/text/MetadataRepo$Node;->put(Landroidx/emoji2/text/TypefaceEmojiRasterizer;II)V +Landroidx/emoji2/text/SpannableBuilder; +Landroidx/emoji2/text/TypefaceEmojiRasterizer; +HSPLandroidx/emoji2/text/TypefaceEmojiRasterizer;->()V +HSPLandroidx/emoji2/text/TypefaceEmojiRasterizer;->(Landroidx/emoji2/text/MetadataRepo;I)V +HSPLandroidx/emoji2/text/TypefaceEmojiRasterizer;->getCodepointAt(I)I +HSPLandroidx/emoji2/text/TypefaceEmojiRasterizer;->getCodepointsLength()I +HSPLandroidx/emoji2/text/TypefaceEmojiRasterizer;->getId()I +Landroidx/emoji2/text/UnprecomputeTextOnModificationSpannable; +Landroidx/emoji2/text/flatbuffer/MetadataItem; +HSPLandroidx/emoji2/text/flatbuffer/MetadataItem;->()V +HSPLandroidx/emoji2/text/flatbuffer/MetadataItem;->__assign(ILjava/nio/ByteBuffer;)Landroidx/emoji2/text/flatbuffer/MetadataItem; +HSPLandroidx/emoji2/text/flatbuffer/MetadataItem;->codepoints(I)I +HSPLandroidx/emoji2/text/flatbuffer/MetadataItem;->codepointsLength()I +HSPLandroidx/emoji2/text/flatbuffer/MetadataItem;->id()I +Landroidx/emoji2/text/flatbuffer/MetadataList; +HSPLandroidx/emoji2/text/flatbuffer/MetadataList;->()V +HSPLandroidx/emoji2/text/flatbuffer/MetadataList;->__assign(ILjava/nio/ByteBuffer;)Landroidx/emoji2/text/flatbuffer/MetadataList; +HSPLandroidx/emoji2/text/flatbuffer/MetadataList;->__init(ILjava/nio/ByteBuffer;)V +HSPLandroidx/emoji2/text/flatbuffer/MetadataList;->getRootAsMetadataList(Ljava/nio/ByteBuffer;)Landroidx/emoji2/text/flatbuffer/MetadataList; +HSPLandroidx/emoji2/text/flatbuffer/MetadataList;->getRootAsMetadataList(Ljava/nio/ByteBuffer;Landroidx/emoji2/text/flatbuffer/MetadataList;)Landroidx/emoji2/text/flatbuffer/MetadataList; +HSPLandroidx/emoji2/text/flatbuffer/MetadataList;->list(Landroidx/emoji2/text/flatbuffer/MetadataItem;I)Landroidx/emoji2/text/flatbuffer/MetadataItem; +HSPLandroidx/emoji2/text/flatbuffer/MetadataList;->listLength()I +HSPLandroidx/emoji2/text/flatbuffer/MetadataList;->version()I +Landroidx/emoji2/text/flatbuffer/Table; +HSPLandroidx/emoji2/text/flatbuffer/Table;->()V +HSPLandroidx/emoji2/text/flatbuffer/Table;->__indirect(I)I +HSPLandroidx/emoji2/text/flatbuffer/Table;->__offset(I)I +HSPLandroidx/emoji2/text/flatbuffer/Table;->__reset(ILjava/nio/ByteBuffer;)V +HSPLandroidx/emoji2/text/flatbuffer/Table;->__vector(I)I +HPLandroidx/emoji2/text/flatbuffer/Table;->__vector_len(I)I +Landroidx/emoji2/text/flatbuffer/Utf8; +HSPLandroidx/emoji2/text/flatbuffer/Utf8;->()V +HSPLandroidx/emoji2/text/flatbuffer/Utf8;->getDefault()Landroidx/emoji2/text/flatbuffer/Utf8; +Landroidx/emoji2/text/flatbuffer/Utf8Safe; +HSPLandroidx/emoji2/text/flatbuffer/Utf8Safe;->()V +Landroidx/fragment/app/Fragment; +Landroidx/fragment/app/FragmentActivity; +HSPLandroidx/fragment/app/FragmentActivity;->()V +HSPLandroidx/fragment/app/FragmentActivity;->dispatchFragmentsOnCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLandroidx/fragment/app/FragmentActivity;->init()V +HSPLandroidx/fragment/app/FragmentActivity;->lambda$init$3$androidx-fragment-app-FragmentActivity(Landroid/content/Context;)V +HSPLandroidx/fragment/app/FragmentActivity;->onCreate(Landroid/os/Bundle;)V +HSPLandroidx/fragment/app/FragmentActivity;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLandroidx/fragment/app/FragmentActivity;->onCreateView(Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLandroidx/fragment/app/FragmentActivity;->onPostResume()V +HSPLandroidx/fragment/app/FragmentActivity;->onResume()V +HSPLandroidx/fragment/app/FragmentActivity;->onResumeFragments()V +HSPLandroidx/fragment/app/FragmentActivity;->onStart()V +HSPLandroidx/fragment/app/FragmentActivity;->onStateNotSaved()V +Landroidx/fragment/app/FragmentActivity$$ExternalSyntheticLambda0; +HSPLandroidx/fragment/app/FragmentActivity$$ExternalSyntheticLambda0;->(Landroidx/fragment/app/FragmentActivity;)V +Landroidx/fragment/app/FragmentActivity$$ExternalSyntheticLambda1; +HSPLandroidx/fragment/app/FragmentActivity$$ExternalSyntheticLambda1;->(Landroidx/fragment/app/FragmentActivity;)V +Landroidx/fragment/app/FragmentActivity$$ExternalSyntheticLambda2; +HSPLandroidx/fragment/app/FragmentActivity$$ExternalSyntheticLambda2;->(Landroidx/fragment/app/FragmentActivity;)V +Landroidx/fragment/app/FragmentActivity$$ExternalSyntheticLambda3; +HSPLandroidx/fragment/app/FragmentActivity$$ExternalSyntheticLambda3;->(Landroidx/fragment/app/FragmentActivity;)V +HSPLandroidx/fragment/app/FragmentActivity$$ExternalSyntheticLambda3;->onContextAvailable(Landroid/content/Context;)V +Landroidx/fragment/app/FragmentActivity$HostCallbacks; +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->(Landroidx/fragment/app/FragmentActivity;)V +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->addMenuProvider(Landroidx/core/view/MenuProvider;)V +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->addOnConfigurationChangedListener(Landroidx/core/util/Consumer;)V +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->addOnMultiWindowModeChangedListener(Landroidx/core/util/Consumer;)V +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->addOnPictureInPictureModeChangedListener(Landroidx/core/util/Consumer;)V +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->addOnTrimMemoryListener(Landroidx/core/util/Consumer;)V +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->getActivityResultRegistry()Landroidx/activity/result/ActivityResultRegistry; +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->getLifecycle()Landroidx/lifecycle/Lifecycle; +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->getOnBackPressedDispatcher()Landroidx/activity/OnBackPressedDispatcher; +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->getSavedStateRegistry()Landroidx/savedstate/SavedStateRegistry; +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->getViewModelStore()Landroidx/lifecycle/ViewModelStore; +Landroidx/fragment/app/FragmentContainer; +HSPLandroidx/fragment/app/FragmentContainer;->()V +Landroidx/fragment/app/FragmentContainerView; +Landroidx/fragment/app/FragmentController; +HSPLandroidx/fragment/app/FragmentController;->(Landroidx/fragment/app/FragmentHostCallback;)V +HSPLandroidx/fragment/app/FragmentController;->attachHost(Landroidx/fragment/app/Fragment;)V +HSPLandroidx/fragment/app/FragmentController;->createController(Landroidx/fragment/app/FragmentHostCallback;)Landroidx/fragment/app/FragmentController; +HSPLandroidx/fragment/app/FragmentController;->dispatchActivityCreated()V +HSPLandroidx/fragment/app/FragmentController;->dispatchCreate()V +HSPLandroidx/fragment/app/FragmentController;->dispatchResume()V +HSPLandroidx/fragment/app/FragmentController;->dispatchStart()V +HSPLandroidx/fragment/app/FragmentController;->execPendingActions()Z +HSPLandroidx/fragment/app/FragmentController;->noteStateNotSaved()V +HSPLandroidx/fragment/app/FragmentController;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; +Landroidx/fragment/app/FragmentFactory; +HSPLandroidx/fragment/app/FragmentFactory;->()V +HSPLandroidx/fragment/app/FragmentFactory;->()V +Landroidx/fragment/app/FragmentHostCallback; +HSPLandroidx/fragment/app/FragmentHostCallback;->(Landroid/app/Activity;Landroid/content/Context;Landroid/os/Handler;I)V +HSPLandroidx/fragment/app/FragmentHostCallback;->(Landroidx/fragment/app/FragmentActivity;)V +HSPLandroidx/fragment/app/FragmentHostCallback;->getHandler()Landroid/os/Handler; +Landroidx/fragment/app/FragmentLayoutInflaterFactory; +HSPLandroidx/fragment/app/FragmentLayoutInflaterFactory;->(Landroidx/fragment/app/FragmentManager;)V +HSPLandroidx/fragment/app/FragmentLayoutInflaterFactory;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; +Landroidx/fragment/app/FragmentLifecycleCallbacksDispatcher; +HSPLandroidx/fragment/app/FragmentLifecycleCallbacksDispatcher;->(Landroidx/fragment/app/FragmentManager;)V +Landroidx/fragment/app/FragmentManager; +HSPLandroidx/fragment/app/FragmentManager;->()V +HSPLandroidx/fragment/app/FragmentManager;->()V +HSPLandroidx/fragment/app/FragmentManager;->addFragmentOnAttachListener(Landroidx/fragment/app/FragmentOnAttachListener;)V +HSPLandroidx/fragment/app/FragmentManager;->attachController(Landroidx/fragment/app/FragmentHostCallback;Landroidx/fragment/app/FragmentContainer;Landroidx/fragment/app/Fragment;)V +HSPLandroidx/fragment/app/FragmentManager;->collectAllSpecialEffectsController()Ljava/util/Set; +HSPLandroidx/fragment/app/FragmentManager;->dispatchActivityCreated()V +HSPLandroidx/fragment/app/FragmentManager;->dispatchCreate()V +HSPLandroidx/fragment/app/FragmentManager;->dispatchResume()V +HSPLandroidx/fragment/app/FragmentManager;->dispatchStart()V +HSPLandroidx/fragment/app/FragmentManager;->dispatchStateChange(I)V +HSPLandroidx/fragment/app/FragmentManager;->doPendingDeferredStart()V +HSPLandroidx/fragment/app/FragmentManager;->ensureExecReady(Z)V +HSPLandroidx/fragment/app/FragmentManager;->execPendingActions(Z)Z +HSPLandroidx/fragment/app/FragmentManager;->generateOpsForPendingActions(Ljava/util/ArrayList;Ljava/util/ArrayList;)Z +HSPLandroidx/fragment/app/FragmentManager;->getBackStackEntryCount()I +HSPLandroidx/fragment/app/FragmentManager;->getLayoutInflaterFactory()Landroid/view/LayoutInflater$Factory2; +HSPLandroidx/fragment/app/FragmentManager;->isStateSaved()Z +HSPLandroidx/fragment/app/FragmentManager;->moveToState(IZ)V +HSPLandroidx/fragment/app/FragmentManager;->noteStateNotSaved()V +HSPLandroidx/fragment/app/FragmentManager;->startPendingDeferredFragments()V +HSPLandroidx/fragment/app/FragmentManager;->updateOnBackPressedCallbackEnabled()V +Landroidx/fragment/app/FragmentManager$$ExternalSyntheticLambda0; +HSPLandroidx/fragment/app/FragmentManager$$ExternalSyntheticLambda0;->(Landroidx/fragment/app/FragmentManager;)V +Landroidx/fragment/app/FragmentManager$$ExternalSyntheticLambda1; +HSPLandroidx/fragment/app/FragmentManager$$ExternalSyntheticLambda1;->(Landroidx/fragment/app/FragmentManager;)V +Landroidx/fragment/app/FragmentManager$$ExternalSyntheticLambda2; +HSPLandroidx/fragment/app/FragmentManager$$ExternalSyntheticLambda2;->(Landroidx/fragment/app/FragmentManager;)V +Landroidx/fragment/app/FragmentManager$$ExternalSyntheticLambda3; +HSPLandroidx/fragment/app/FragmentManager$$ExternalSyntheticLambda3;->(Landroidx/fragment/app/FragmentManager;)V +Landroidx/fragment/app/FragmentManager$$ExternalSyntheticLambda4; +HSPLandroidx/fragment/app/FragmentManager$$ExternalSyntheticLambda4;->(Landroidx/fragment/app/FragmentManager;)V +Landroidx/fragment/app/FragmentManager$1; +HSPLandroidx/fragment/app/FragmentManager$1;->(Landroidx/fragment/app/FragmentManager;Z)V +Landroidx/fragment/app/FragmentManager$10; +HSPLandroidx/fragment/app/FragmentManager$10;->(Landroidx/fragment/app/FragmentManager;)V +Landroidx/fragment/app/FragmentManager$2; +HSPLandroidx/fragment/app/FragmentManager$2;->(Landroidx/fragment/app/FragmentManager;)V +Landroidx/fragment/app/FragmentManager$3; +HSPLandroidx/fragment/app/FragmentManager$3;->(Landroidx/fragment/app/FragmentManager;)V +Landroidx/fragment/app/FragmentManager$4; +HSPLandroidx/fragment/app/FragmentManager$4;->(Landroidx/fragment/app/FragmentManager;)V +Landroidx/fragment/app/FragmentManager$5; +HSPLandroidx/fragment/app/FragmentManager$5;->(Landroidx/fragment/app/FragmentManager;)V +Landroidx/fragment/app/FragmentManager$8; +HSPLandroidx/fragment/app/FragmentManager$8;->(Landroidx/fragment/app/FragmentManager;)V +Landroidx/fragment/app/FragmentManager$9; +HSPLandroidx/fragment/app/FragmentManager$9;->(Landroidx/fragment/app/FragmentManager;)V +Landroidx/fragment/app/FragmentManager$FragmentIntentSenderContract; +HSPLandroidx/fragment/app/FragmentManager$FragmentIntentSenderContract;->()V +Landroidx/fragment/app/FragmentManagerImpl; +HSPLandroidx/fragment/app/FragmentManagerImpl;->()V +Landroidx/fragment/app/FragmentManagerViewModel; +HSPLandroidx/fragment/app/FragmentManagerViewModel;->()V +HSPLandroidx/fragment/app/FragmentManagerViewModel;->(Z)V +HSPLandroidx/fragment/app/FragmentManagerViewModel;->getInstance(Landroidx/lifecycle/ViewModelStore;)Landroidx/fragment/app/FragmentManagerViewModel; +HSPLandroidx/fragment/app/FragmentManagerViewModel;->setIsStateSaved(Z)V +Landroidx/fragment/app/FragmentManagerViewModel$1; +HSPLandroidx/fragment/app/FragmentManagerViewModel$1;->()V +HSPLandroidx/fragment/app/FragmentManagerViewModel$1;->create(Ljava/lang/Class;)Landroidx/lifecycle/ViewModel; +Landroidx/fragment/app/FragmentOnAttachListener; +Landroidx/fragment/app/FragmentResultOwner; +Landroidx/fragment/app/FragmentStore; +HSPLandroidx/fragment/app/FragmentStore;->()V +HSPLandroidx/fragment/app/FragmentStore;->burpActive()V +HSPLandroidx/fragment/app/FragmentStore;->dispatchStateChange(I)V +HSPLandroidx/fragment/app/FragmentStore;->getActiveFragmentStateManagers()Ljava/util/List; +HSPLandroidx/fragment/app/FragmentStore;->getFragments()Ljava/util/List; +HSPLandroidx/fragment/app/FragmentStore;->moveToExpectedState()V +HSPLandroidx/fragment/app/FragmentStore;->setNonConfig(Landroidx/fragment/app/FragmentManagerViewModel;)V +Landroidx/fragment/app/SpecialEffectsControllerFactory; +Landroidx/lifecycle/AndroidViewModel; +Landroidx/lifecycle/DefaultLifecycleObserver; +HSPLandroidx/lifecycle/DefaultLifecycleObserver;->onCreate(Landroidx/lifecycle/LifecycleOwner;)V +HSPLandroidx/lifecycle/DefaultLifecycleObserver;->onStart(Landroidx/lifecycle/LifecycleOwner;)V +Landroidx/lifecycle/DefaultLifecycleObserverAdapter; +HSPLandroidx/lifecycle/DefaultLifecycleObserverAdapter;->(Landroidx/lifecycle/DefaultLifecycleObserver;Landroidx/lifecycle/LifecycleEventObserver;)V +HSPLandroidx/lifecycle/DefaultLifecycleObserverAdapter;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +Landroidx/lifecycle/DefaultLifecycleObserverAdapter$WhenMappings; +HSPLandroidx/lifecycle/DefaultLifecycleObserverAdapter$WhenMappings;->()V +Landroidx/lifecycle/EmptyActivityLifecycleCallbacks; +HSPLandroidx/lifecycle/EmptyActivityLifecycleCallbacks;->()V +HSPLandroidx/lifecycle/EmptyActivityLifecycleCallbacks;->onActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V +HSPLandroidx/lifecycle/EmptyActivityLifecycleCallbacks;->onActivityResumed(Landroid/app/Activity;)V +HSPLandroidx/lifecycle/EmptyActivityLifecycleCallbacks;->onActivityStarted(Landroid/app/Activity;)V +Landroidx/lifecycle/HasDefaultViewModelProviderFactory; +Landroidx/lifecycle/Lifecycle; +HSPLandroidx/lifecycle/Lifecycle;->()V +HSPLandroidx/lifecycle/Lifecycle;->getInternalScopeRef()Ljava/util/concurrent/atomic/AtomicReference; +Landroidx/lifecycle/Lifecycle$Event; +HSPLandroidx/lifecycle/Lifecycle$Event;->$values()[Landroidx/lifecycle/Lifecycle$Event; +HSPLandroidx/lifecycle/Lifecycle$Event;->()V +HSPLandroidx/lifecycle/Lifecycle$Event;->(Ljava/lang/String;I)V +HSPLandroidx/lifecycle/Lifecycle$Event;->getTargetState()Landroidx/lifecycle/Lifecycle$State; +HSPLandroidx/lifecycle/Lifecycle$Event;->values()[Landroidx/lifecycle/Lifecycle$Event; +Landroidx/lifecycle/Lifecycle$Event$Companion; +HSPLandroidx/lifecycle/Lifecycle$Event$Companion;->()V +HSPLandroidx/lifecycle/Lifecycle$Event$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/lifecycle/Lifecycle$Event$Companion;->upFrom(Landroidx/lifecycle/Lifecycle$State;)Landroidx/lifecycle/Lifecycle$Event; +Landroidx/lifecycle/Lifecycle$Event$Companion$WhenMappings; +HSPLandroidx/lifecycle/Lifecycle$Event$Companion$WhenMappings;->()V +Landroidx/lifecycle/Lifecycle$Event$WhenMappings; +HSPLandroidx/lifecycle/Lifecycle$Event$WhenMappings;->()V +Landroidx/lifecycle/Lifecycle$State; +HSPLandroidx/lifecycle/Lifecycle$State;->$values()[Landroidx/lifecycle/Lifecycle$State; +HSPLandroidx/lifecycle/Lifecycle$State;->()V +HSPLandroidx/lifecycle/Lifecycle$State;->(Ljava/lang/String;I)V +HSPLandroidx/lifecycle/Lifecycle$State;->isAtLeast(Landroidx/lifecycle/Lifecycle$State;)Z +HSPLandroidx/lifecycle/Lifecycle$State;->values()[Landroidx/lifecycle/Lifecycle$State; +Landroidx/lifecycle/LifecycleCoroutineScope; +HSPLandroidx/lifecycle/LifecycleCoroutineScope;->()V +Landroidx/lifecycle/LifecycleCoroutineScopeImpl; +HSPLandroidx/lifecycle/LifecycleCoroutineScopeImpl;->(Landroidx/lifecycle/Lifecycle;Lkotlin/coroutines/CoroutineContext;)V +HSPLandroidx/lifecycle/LifecycleCoroutineScopeImpl;->getCoroutineContext()Lkotlin/coroutines/CoroutineContext; +HSPLandroidx/lifecycle/LifecycleCoroutineScopeImpl;->getLifecycle$lifecycle_common()Landroidx/lifecycle/Lifecycle; +HSPLandroidx/lifecycle/LifecycleCoroutineScopeImpl;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +HSPLandroidx/lifecycle/LifecycleCoroutineScopeImpl;->register()V +Landroidx/lifecycle/LifecycleCoroutineScopeImpl$register$1; +HSPLandroidx/lifecycle/LifecycleCoroutineScopeImpl$register$1;->(Landroidx/lifecycle/LifecycleCoroutineScopeImpl;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/lifecycle/LifecycleCoroutineScopeImpl$register$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/lifecycle/LifecycleCoroutineScopeImpl$register$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/lifecycle/LifecycleDispatcher; +HSPLandroidx/lifecycle/LifecycleDispatcher;->()V +HSPLandroidx/lifecycle/LifecycleDispatcher;->()V +HSPLandroidx/lifecycle/LifecycleDispatcher;->init(Landroid/content/Context;)V +Landroidx/lifecycle/LifecycleDispatcher$DispatcherActivityCallback; +HSPLandroidx/lifecycle/LifecycleDispatcher$DispatcherActivityCallback;->()V +HSPLandroidx/lifecycle/LifecycleDispatcher$DispatcherActivityCallback;->onActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V +Landroidx/lifecycle/LifecycleEventObserver; +Landroidx/lifecycle/LifecycleKt; +HSPLandroidx/lifecycle/LifecycleKt;->getCoroutineScope(Landroidx/lifecycle/Lifecycle;)Landroidx/lifecycle/LifecycleCoroutineScope; +Landroidx/lifecycle/LifecycleObserver; +Landroidx/lifecycle/LifecycleOwner; +Landroidx/lifecycle/LifecycleOwnerKt; +HSPLandroidx/lifecycle/LifecycleOwnerKt;->getLifecycleScope(Landroidx/lifecycle/LifecycleOwner;)Landroidx/lifecycle/LifecycleCoroutineScope; +Landroidx/lifecycle/LifecycleRegistry; +HSPLandroidx/lifecycle/LifecycleRegistry;->()V +HSPLandroidx/lifecycle/LifecycleRegistry;->(Landroidx/lifecycle/LifecycleOwner;)V +HSPLandroidx/lifecycle/LifecycleRegistry;->(Landroidx/lifecycle/LifecycleOwner;Z)V +HSPLandroidx/lifecycle/LifecycleRegistry;->addObserver(Landroidx/lifecycle/LifecycleObserver;)V +HSPLandroidx/lifecycle/LifecycleRegistry;->calculateTargetState(Landroidx/lifecycle/LifecycleObserver;)Landroidx/lifecycle/Lifecycle$State; +HSPLandroidx/lifecycle/LifecycleRegistry;->enforceMainThreadIfNeeded(Ljava/lang/String;)V +HSPLandroidx/lifecycle/LifecycleRegistry;->forwardPass(Landroidx/lifecycle/LifecycleOwner;)V +HSPLandroidx/lifecycle/LifecycleRegistry;->getCurrentState()Landroidx/lifecycle/Lifecycle$State; +HSPLandroidx/lifecycle/LifecycleRegistry;->getCurrentStateFlow()Lkotlinx/coroutines/flow/StateFlow; +HSPLandroidx/lifecycle/LifecycleRegistry;->handleLifecycleEvent(Landroidx/lifecycle/Lifecycle$Event;)V +HSPLandroidx/lifecycle/LifecycleRegistry;->isSynced()Z +HSPLandroidx/lifecycle/LifecycleRegistry;->moveToState(Landroidx/lifecycle/Lifecycle$State;)V +HSPLandroidx/lifecycle/LifecycleRegistry;->popParentState()V +HSPLandroidx/lifecycle/LifecycleRegistry;->pushParentState(Landroidx/lifecycle/Lifecycle$State;)V +HSPLandroidx/lifecycle/LifecycleRegistry;->removeObserver(Landroidx/lifecycle/LifecycleObserver;)V +HSPLandroidx/lifecycle/LifecycleRegistry;->sync()V +Landroidx/lifecycle/LifecycleRegistry$Companion; +HSPLandroidx/lifecycle/LifecycleRegistry$Companion;->()V +HSPLandroidx/lifecycle/LifecycleRegistry$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/lifecycle/LifecycleRegistry$Companion;->min$lifecycle_runtime_release(Landroidx/lifecycle/Lifecycle$State;Landroidx/lifecycle/Lifecycle$State;)Landroidx/lifecycle/Lifecycle$State; +Landroidx/lifecycle/LifecycleRegistry$ObserverWithState; +HSPLandroidx/lifecycle/LifecycleRegistry$ObserverWithState;->(Landroidx/lifecycle/LifecycleObserver;Landroidx/lifecycle/Lifecycle$State;)V +HSPLandroidx/lifecycle/LifecycleRegistry$ObserverWithState;->dispatchEvent(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +HSPLandroidx/lifecycle/LifecycleRegistry$ObserverWithState;->getState()Landroidx/lifecycle/Lifecycle$State; +Landroidx/lifecycle/LifecycleRegistryOwner; +Landroidx/lifecycle/Lifecycling; +HSPLandroidx/lifecycle/Lifecycling;->()V +HSPLandroidx/lifecycle/Lifecycling;->()V +HSPLandroidx/lifecycle/Lifecycling;->lifecycleEventObserver(Ljava/lang/Object;)Landroidx/lifecycle/LifecycleEventObserver; +Landroidx/lifecycle/LiveData; +HSPLandroidx/lifecycle/LiveData;->()V +HSPLandroidx/lifecycle/LiveData;->()V +HSPLandroidx/lifecycle/LiveData;->assertMainThread(Ljava/lang/String;)V +HSPLandroidx/lifecycle/LiveData;->dispatchingValue(Landroidx/lifecycle/LiveData$ObserverWrapper;)V +HSPLandroidx/lifecycle/LiveData;->postValue(Ljava/lang/Object;)V +HSPLandroidx/lifecycle/LiveData;->setValue(Ljava/lang/Object;)V +Landroidx/lifecycle/LiveData$1; +HSPLandroidx/lifecycle/LiveData$1;->(Landroidx/lifecycle/LiveData;)V +HSPLandroidx/lifecycle/LiveData$1;->run()V +Landroidx/lifecycle/MutableLiveData; +HSPLandroidx/lifecycle/MutableLiveData;->()V +HSPLandroidx/lifecycle/MutableLiveData;->postValue(Ljava/lang/Object;)V +HSPLandroidx/lifecycle/MutableLiveData;->setValue(Ljava/lang/Object;)V +Landroidx/lifecycle/ProcessLifecycleInitializer; +HSPLandroidx/lifecycle/ProcessLifecycleInitializer;->()V +HSPLandroidx/lifecycle/ProcessLifecycleInitializer;->create(Landroid/content/Context;)Landroidx/lifecycle/LifecycleOwner; +HSPLandroidx/lifecycle/ProcessLifecycleInitializer;->create(Landroid/content/Context;)Ljava/lang/Object; +HSPLandroidx/lifecycle/ProcessLifecycleInitializer;->dependencies()Ljava/util/List; +Landroidx/lifecycle/ProcessLifecycleOwner; +HSPLandroidx/lifecycle/ProcessLifecycleOwner;->()V +HSPLandroidx/lifecycle/ProcessLifecycleOwner;->()V +HSPLandroidx/lifecycle/ProcessLifecycleOwner;->access$getNewInstance$cp()Landroidx/lifecycle/ProcessLifecycleOwner; +HSPLandroidx/lifecycle/ProcessLifecycleOwner;->activityResumed$lifecycle_process_release()V +HSPLandroidx/lifecycle/ProcessLifecycleOwner;->activityStarted$lifecycle_process_release()V +HSPLandroidx/lifecycle/ProcessLifecycleOwner;->attach$lifecycle_process_release(Landroid/content/Context;)V +HSPLandroidx/lifecycle/ProcessLifecycleOwner;->getLifecycle()Landroidx/lifecycle/Lifecycle; +Landroidx/lifecycle/ProcessLifecycleOwner$$ExternalSyntheticLambda0; +HSPLandroidx/lifecycle/ProcessLifecycleOwner$$ExternalSyntheticLambda0;->(Landroidx/lifecycle/ProcessLifecycleOwner;)V +Landroidx/lifecycle/ProcessLifecycleOwner$Api29Impl; +HSPLandroidx/lifecycle/ProcessLifecycleOwner$Api29Impl;->()V +HSPLandroidx/lifecycle/ProcessLifecycleOwner$Api29Impl;->()V +HSPLandroidx/lifecycle/ProcessLifecycleOwner$Api29Impl;->registerActivityLifecycleCallbacks(Landroid/app/Activity;Landroid/app/Application$ActivityLifecycleCallbacks;)V +Landroidx/lifecycle/ProcessLifecycleOwner$Companion; +HSPLandroidx/lifecycle/ProcessLifecycleOwner$Companion;->()V +HSPLandroidx/lifecycle/ProcessLifecycleOwner$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/lifecycle/ProcessLifecycleOwner$Companion;->get()Landroidx/lifecycle/LifecycleOwner; +HSPLandroidx/lifecycle/ProcessLifecycleOwner$Companion;->init$lifecycle_process_release(Landroid/content/Context;)V +Landroidx/lifecycle/ProcessLifecycleOwner$attach$1; +HSPLandroidx/lifecycle/ProcessLifecycleOwner$attach$1;->(Landroidx/lifecycle/ProcessLifecycleOwner;)V +HSPLandroidx/lifecycle/ProcessLifecycleOwner$attach$1;->onActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V +HSPLandroidx/lifecycle/ProcessLifecycleOwner$attach$1;->onActivityPreCreated(Landroid/app/Activity;Landroid/os/Bundle;)V +Landroidx/lifecycle/ProcessLifecycleOwner$attach$1$onActivityPreCreated$1; +HSPLandroidx/lifecycle/ProcessLifecycleOwner$attach$1$onActivityPreCreated$1;->(Landroidx/lifecycle/ProcessLifecycleOwner;)V +HSPLandroidx/lifecycle/ProcessLifecycleOwner$attach$1$onActivityPreCreated$1;->onActivityPostResumed(Landroid/app/Activity;)V +HSPLandroidx/lifecycle/ProcessLifecycleOwner$attach$1$onActivityPreCreated$1;->onActivityPostStarted(Landroid/app/Activity;)V +Landroidx/lifecycle/ProcessLifecycleOwner$initializationListener$1; +HSPLandroidx/lifecycle/ProcessLifecycleOwner$initializationListener$1;->(Landroidx/lifecycle/ProcessLifecycleOwner;)V +Landroidx/lifecycle/ReportFragment; +HSPLandroidx/lifecycle/ReportFragment;->()V +HSPLandroidx/lifecycle/ReportFragment;->()V +HSPLandroidx/lifecycle/ReportFragment;->dispatch(Landroidx/lifecycle/Lifecycle$Event;)V +HSPLandroidx/lifecycle/ReportFragment;->dispatchCreate(Landroidx/lifecycle/ReportFragment$ActivityInitializationListener;)V +HSPLandroidx/lifecycle/ReportFragment;->dispatchResume(Landroidx/lifecycle/ReportFragment$ActivityInitializationListener;)V +HSPLandroidx/lifecycle/ReportFragment;->dispatchStart(Landroidx/lifecycle/ReportFragment$ActivityInitializationListener;)V +HSPLandroidx/lifecycle/ReportFragment;->injectIfNeededIn(Landroid/app/Activity;)V +HSPLandroidx/lifecycle/ReportFragment;->onActivityCreated(Landroid/os/Bundle;)V +HSPLandroidx/lifecycle/ReportFragment;->onResume()V +HSPLandroidx/lifecycle/ReportFragment;->onStart()V +Landroidx/lifecycle/ReportFragment$ActivityInitializationListener; +Landroidx/lifecycle/ReportFragment$Companion; +HSPLandroidx/lifecycle/ReportFragment$Companion;->()V +HSPLandroidx/lifecycle/ReportFragment$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/lifecycle/ReportFragment$Companion;->dispatch$lifecycle_runtime_release(Landroid/app/Activity;Landroidx/lifecycle/Lifecycle$Event;)V +HSPLandroidx/lifecycle/ReportFragment$Companion;->injectIfNeededIn(Landroid/app/Activity;)V +Landroidx/lifecycle/ReportFragment$LifecycleCallbacks; +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->()V +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->()V +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityPostCreated(Landroid/app/Activity;Landroid/os/Bundle;)V +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityPostResumed(Landroid/app/Activity;)V +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityPostStarted(Landroid/app/Activity;)V +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityResumed(Landroid/app/Activity;)V +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityStarted(Landroid/app/Activity;)V +Landroidx/lifecycle/ReportFragment$LifecycleCallbacks$Companion; +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks$Companion;->()V +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks$Companion;->registerIn(Landroid/app/Activity;)V +Landroidx/lifecycle/SavedStateHandleAttacher; +HSPLandroidx/lifecycle/SavedStateHandleAttacher;->(Landroidx/lifecycle/SavedStateHandlesProvider;)V +HSPLandroidx/lifecycle/SavedStateHandleAttacher;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +Landroidx/lifecycle/SavedStateHandleSupport; +HSPLandroidx/lifecycle/SavedStateHandleSupport;->()V +HSPLandroidx/lifecycle/SavedStateHandleSupport;->enableSavedStateHandles(Landroidx/savedstate/SavedStateRegistryOwner;)V +HSPLandroidx/lifecycle/SavedStateHandleSupport;->getSavedStateHandlesVM(Landroidx/lifecycle/ViewModelStoreOwner;)Landroidx/lifecycle/SavedStateHandlesVM; +Landroidx/lifecycle/SavedStateHandleSupport$DEFAULT_ARGS_KEY$1; +HSPLandroidx/lifecycle/SavedStateHandleSupport$DEFAULT_ARGS_KEY$1;->()V +Landroidx/lifecycle/SavedStateHandleSupport$SAVED_STATE_REGISTRY_OWNER_KEY$1; +HSPLandroidx/lifecycle/SavedStateHandleSupport$SAVED_STATE_REGISTRY_OWNER_KEY$1;->()V +Landroidx/lifecycle/SavedStateHandleSupport$VIEW_MODEL_STORE_OWNER_KEY$1; +HSPLandroidx/lifecycle/SavedStateHandleSupport$VIEW_MODEL_STORE_OWNER_KEY$1;->()V +Landroidx/lifecycle/SavedStateHandleSupport$savedStateHandlesVM$1; +HSPLandroidx/lifecycle/SavedStateHandleSupport$savedStateHandlesVM$1;->()V +HSPLandroidx/lifecycle/SavedStateHandleSupport$savedStateHandlesVM$1;->create(Ljava/lang/Class;Landroidx/lifecycle/viewmodel/CreationExtras;)Landroidx/lifecycle/ViewModel; +Landroidx/lifecycle/SavedStateHandlesProvider; +HSPLandroidx/lifecycle/SavedStateHandlesProvider;->(Landroidx/savedstate/SavedStateRegistry;Landroidx/lifecycle/ViewModelStoreOwner;)V +HSPLandroidx/lifecycle/SavedStateHandlesProvider;->getViewModel()Landroidx/lifecycle/SavedStateHandlesVM; +HSPLandroidx/lifecycle/SavedStateHandlesProvider;->performRestore()V +Landroidx/lifecycle/SavedStateHandlesProvider$viewModel$2; +HSPLandroidx/lifecycle/SavedStateHandlesProvider$viewModel$2;->(Landroidx/lifecycle/ViewModelStoreOwner;)V +HSPLandroidx/lifecycle/SavedStateHandlesProvider$viewModel$2;->invoke()Landroidx/lifecycle/SavedStateHandlesVM; +HSPLandroidx/lifecycle/SavedStateHandlesProvider$viewModel$2;->invoke()Ljava/lang/Object; +Landroidx/lifecycle/SavedStateHandlesVM; +HSPLandroidx/lifecycle/SavedStateHandlesVM;->()V +Landroidx/lifecycle/ViewModel; +HSPLandroidx/lifecycle/ViewModel;->()V +Landroidx/lifecycle/ViewModelProvider; +HSPLandroidx/lifecycle/ViewModelProvider;->(Landroidx/lifecycle/ViewModelStore;Landroidx/lifecycle/ViewModelProvider$Factory;)V +HSPLandroidx/lifecycle/ViewModelProvider;->(Landroidx/lifecycle/ViewModelStore;Landroidx/lifecycle/ViewModelProvider$Factory;Landroidx/lifecycle/viewmodel/CreationExtras;)V +HSPLandroidx/lifecycle/ViewModelProvider;->(Landroidx/lifecycle/ViewModelStore;Landroidx/lifecycle/ViewModelProvider$Factory;Landroidx/lifecycle/viewmodel/CreationExtras;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/lifecycle/ViewModelProvider;->(Landroidx/lifecycle/ViewModelStoreOwner;Landroidx/lifecycle/ViewModelProvider$Factory;)V +HSPLandroidx/lifecycle/ViewModelProvider;->get(Ljava/lang/Class;)Landroidx/lifecycle/ViewModel; +HSPLandroidx/lifecycle/ViewModelProvider;->get(Ljava/lang/String;Ljava/lang/Class;)Landroidx/lifecycle/ViewModel; +Landroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory; +HSPLandroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory;->()V +Landroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory$Companion; +HSPLandroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory$Companion;->()V +HSPLandroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory$Companion$ApplicationKeyImpl; +HSPLandroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory$Companion$ApplicationKeyImpl;->()V +HSPLandroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory$Companion$ApplicationKeyImpl;->()V +Landroidx/lifecycle/ViewModelProvider$Factory; +HSPLandroidx/lifecycle/ViewModelProvider$Factory;->()V +HSPLandroidx/lifecycle/ViewModelProvider$Factory;->create(Ljava/lang/Class;Landroidx/lifecycle/viewmodel/CreationExtras;)Landroidx/lifecycle/ViewModel; +Landroidx/lifecycle/ViewModelProvider$Factory$Companion; +HSPLandroidx/lifecycle/ViewModelProvider$Factory$Companion;->()V +HSPLandroidx/lifecycle/ViewModelProvider$Factory$Companion;->()V +Landroidx/lifecycle/ViewModelProvider$NewInstanceFactory; +HSPLandroidx/lifecycle/ViewModelProvider$NewInstanceFactory;->()V +Landroidx/lifecycle/ViewModelProvider$NewInstanceFactory$Companion; +HSPLandroidx/lifecycle/ViewModelProvider$NewInstanceFactory$Companion;->()V +HSPLandroidx/lifecycle/ViewModelProvider$NewInstanceFactory$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/lifecycle/ViewModelProvider$NewInstanceFactory$Companion$ViewModelKeyImpl; +HSPLandroidx/lifecycle/ViewModelProvider$NewInstanceFactory$Companion$ViewModelKeyImpl;->()V +HSPLandroidx/lifecycle/ViewModelProvider$NewInstanceFactory$Companion$ViewModelKeyImpl;->()V +Landroidx/lifecycle/ViewModelProviderGetKt; +HSPLandroidx/lifecycle/ViewModelProviderGetKt;->defaultCreationExtras(Landroidx/lifecycle/ViewModelStoreOwner;)Landroidx/lifecycle/viewmodel/CreationExtras; +Landroidx/lifecycle/ViewModelStore; +HSPLandroidx/lifecycle/ViewModelStore;->()V +HSPLandroidx/lifecycle/ViewModelStore;->get(Ljava/lang/String;)Landroidx/lifecycle/ViewModel; +HSPLandroidx/lifecycle/ViewModelStore;->put(Ljava/lang/String;Landroidx/lifecycle/ViewModel;)V +Landroidx/lifecycle/ViewModelStoreOwner; +Landroidx/lifecycle/ViewTreeLifecycleOwner; +HSPLandroidx/lifecycle/ViewTreeLifecycleOwner;->get(Landroid/view/View;)Landroidx/lifecycle/LifecycleOwner; +HSPLandroidx/lifecycle/ViewTreeLifecycleOwner;->set(Landroid/view/View;Landroidx/lifecycle/LifecycleOwner;)V +Landroidx/lifecycle/ViewTreeLifecycleOwner$findViewTreeLifecycleOwner$1; +HSPLandroidx/lifecycle/ViewTreeLifecycleOwner$findViewTreeLifecycleOwner$1;->()V +HSPLandroidx/lifecycle/ViewTreeLifecycleOwner$findViewTreeLifecycleOwner$1;->()V +HSPLandroidx/lifecycle/ViewTreeLifecycleOwner$findViewTreeLifecycleOwner$1;->invoke(Landroid/view/View;)Landroid/view/View; +HSPLandroidx/lifecycle/ViewTreeLifecycleOwner$findViewTreeLifecycleOwner$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/lifecycle/ViewTreeLifecycleOwner$findViewTreeLifecycleOwner$2; +HSPLandroidx/lifecycle/ViewTreeLifecycleOwner$findViewTreeLifecycleOwner$2;->()V +HSPLandroidx/lifecycle/ViewTreeLifecycleOwner$findViewTreeLifecycleOwner$2;->()V +HSPLandroidx/lifecycle/ViewTreeLifecycleOwner$findViewTreeLifecycleOwner$2;->invoke(Landroid/view/View;)Landroidx/lifecycle/LifecycleOwner; +HSPLandroidx/lifecycle/ViewTreeLifecycleOwner$findViewTreeLifecycleOwner$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/lifecycle/ViewTreeViewModelStoreOwner; +HSPLandroidx/lifecycle/ViewTreeViewModelStoreOwner;->get(Landroid/view/View;)Landroidx/lifecycle/ViewModelStoreOwner; +HSPLandroidx/lifecycle/ViewTreeViewModelStoreOwner;->set(Landroid/view/View;Landroidx/lifecycle/ViewModelStoreOwner;)V +Landroidx/lifecycle/ViewTreeViewModelStoreOwner$findViewTreeViewModelStoreOwner$1; +HSPLandroidx/lifecycle/ViewTreeViewModelStoreOwner$findViewTreeViewModelStoreOwner$1;->()V +HSPLandroidx/lifecycle/ViewTreeViewModelStoreOwner$findViewTreeViewModelStoreOwner$1;->()V +HSPLandroidx/lifecycle/ViewTreeViewModelStoreOwner$findViewTreeViewModelStoreOwner$1;->invoke(Landroid/view/View;)Landroid/view/View; +HSPLandroidx/lifecycle/ViewTreeViewModelStoreOwner$findViewTreeViewModelStoreOwner$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/lifecycle/ViewTreeViewModelStoreOwner$findViewTreeViewModelStoreOwner$2; +HSPLandroidx/lifecycle/ViewTreeViewModelStoreOwner$findViewTreeViewModelStoreOwner$2;->()V +HSPLandroidx/lifecycle/ViewTreeViewModelStoreOwner$findViewTreeViewModelStoreOwner$2;->()V +HSPLandroidx/lifecycle/ViewTreeViewModelStoreOwner$findViewTreeViewModelStoreOwner$2;->invoke(Landroid/view/View;)Landroidx/lifecycle/ViewModelStoreOwner; +HSPLandroidx/lifecycle/ViewTreeViewModelStoreOwner$findViewTreeViewModelStoreOwner$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/lifecycle/runtime/R$id; +Landroidx/lifecycle/viewmodel/CreationExtras; +HSPLandroidx/lifecycle/viewmodel/CreationExtras;->()V +HSPLandroidx/lifecycle/viewmodel/CreationExtras;->getMap$lifecycle_viewmodel_release()Ljava/util/Map; +Landroidx/lifecycle/viewmodel/CreationExtras$Empty; +HSPLandroidx/lifecycle/viewmodel/CreationExtras$Empty;->()V +HSPLandroidx/lifecycle/viewmodel/CreationExtras$Empty;->()V +Landroidx/lifecycle/viewmodel/CreationExtras$Key; +Landroidx/lifecycle/viewmodel/MutableCreationExtras; +HSPLandroidx/lifecycle/viewmodel/MutableCreationExtras;->()V +HSPLandroidx/lifecycle/viewmodel/MutableCreationExtras;->(Landroidx/lifecycle/viewmodel/CreationExtras;)V +HSPLandroidx/lifecycle/viewmodel/MutableCreationExtras;->(Landroidx/lifecycle/viewmodel/CreationExtras;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/lifecycle/viewmodel/MutableCreationExtras;->set(Landroidx/lifecycle/viewmodel/CreationExtras$Key;Ljava/lang/Object;)V +Landroidx/lifecycle/viewmodel/R$id; +Landroidx/loader/content/Loader; +PLandroidx/profileinstaller/ProfileInstallReceiver;->()V +PLandroidx/profileinstaller/ProfileInstallReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLandroidx/profileinstaller/ProfileInstallReceiver;->saveProfile(Landroidx/profileinstaller/ProfileInstaller$DiagnosticsCallback;)V +PLandroidx/profileinstaller/ProfileInstallReceiver$ResultDiagnostics;->(Landroidx/profileinstaller/ProfileInstallReceiver;)V +PLandroidx/profileinstaller/ProfileInstallReceiver$ResultDiagnostics;->onResultReceived(ILjava/lang/Object;)V +PLandroidx/profileinstaller/ProfileInstaller;->()V +PLandroidx/profileinstaller/ProfileInstaller;->hasAlreadyWrittenProfileForThisInstall(Landroid/content/pm/PackageInfo;Ljava/io/File;Landroidx/profileinstaller/ProfileInstaller$DiagnosticsCallback;)Z +PLandroidx/profileinstaller/ProfileInstaller;->writeProfile(Landroid/content/Context;)V +PLandroidx/profileinstaller/ProfileInstaller;->writeProfile(Landroid/content/Context;Ljava/util/concurrent/Executor;Landroidx/profileinstaller/ProfileInstaller$DiagnosticsCallback;)V +PLandroidx/profileinstaller/ProfileInstaller;->writeProfile(Landroid/content/Context;Ljava/util/concurrent/Executor;Landroidx/profileinstaller/ProfileInstaller$DiagnosticsCallback;Z)V +PLandroidx/profileinstaller/ProfileInstaller$1;->()V +PLandroidx/profileinstaller/ProfileInstaller$1;->onResultReceived(ILjava/lang/Object;)V +PLandroidx/profileinstaller/ProfileInstaller$2;->()V +PLandroidx/profileinstaller/ProfileInstaller$2;->onResultReceived(ILjava/lang/Object;)V +Landroidx/profileinstaller/ProfileInstallerInitializer; +HSPLandroidx/profileinstaller/ProfileInstallerInitializer;->()V +HSPLandroidx/profileinstaller/ProfileInstallerInitializer;->create(Landroid/content/Context;)Landroidx/profileinstaller/ProfileInstallerInitializer$Result; +HSPLandroidx/profileinstaller/ProfileInstallerInitializer;->create(Landroid/content/Context;)Ljava/lang/Object; +HSPLandroidx/profileinstaller/ProfileInstallerInitializer;->delayAfterFirstFrame(Landroid/content/Context;)V +HSPLandroidx/profileinstaller/ProfileInstallerInitializer;->dependencies()Ljava/util/List; +HSPLandroidx/profileinstaller/ProfileInstallerInitializer;->installAfterDelay(Landroid/content/Context;)V +HSPLandroidx/profileinstaller/ProfileInstallerInitializer;->lambda$delayAfterFirstFrame$0$androidx-profileinstaller-ProfileInstallerInitializer(Landroid/content/Context;)V +PLandroidx/profileinstaller/ProfileInstallerInitializer;->lambda$installAfterDelay$1(Landroid/content/Context;)V +PLandroidx/profileinstaller/ProfileInstallerInitializer;->lambda$writeInBackground$2(Landroid/content/Context;)V +PLandroidx/profileinstaller/ProfileInstallerInitializer;->writeInBackground(Landroid/content/Context;)V +Landroidx/profileinstaller/ProfileInstallerInitializer$$ExternalSyntheticLambda0; +HSPLandroidx/profileinstaller/ProfileInstallerInitializer$$ExternalSyntheticLambda0;->(Landroid/content/Context;)V +PLandroidx/profileinstaller/ProfileInstallerInitializer$$ExternalSyntheticLambda0;->run()V +Landroidx/profileinstaller/ProfileInstallerInitializer$$ExternalSyntheticLambda1; +HSPLandroidx/profileinstaller/ProfileInstallerInitializer$$ExternalSyntheticLambda1;->(Landroidx/profileinstaller/ProfileInstallerInitializer;Landroid/content/Context;)V +HSPLandroidx/profileinstaller/ProfileInstallerInitializer$$ExternalSyntheticLambda1;->run()V +PLandroidx/profileinstaller/ProfileInstallerInitializer$$ExternalSyntheticLambda2;->(Landroid/content/Context;)V +PLandroidx/profileinstaller/ProfileInstallerInitializer$$ExternalSyntheticLambda2;->run()V +Landroidx/profileinstaller/ProfileInstallerInitializer$Choreographer16Impl; +HSPLandroidx/profileinstaller/ProfileInstallerInitializer$Choreographer16Impl;->lambda$postFrameCallback$0(Ljava/lang/Runnable;J)V +HSPLandroidx/profileinstaller/ProfileInstallerInitializer$Choreographer16Impl;->postFrameCallback(Ljava/lang/Runnable;)V +Landroidx/profileinstaller/ProfileInstallerInitializer$Choreographer16Impl$$ExternalSyntheticLambda0; +HSPLandroidx/profileinstaller/ProfileInstallerInitializer$Choreographer16Impl$$ExternalSyntheticLambda0;->(Ljava/lang/Runnable;)V +HSPLandroidx/profileinstaller/ProfileInstallerInitializer$Choreographer16Impl$$ExternalSyntheticLambda0;->doFrame(J)V +Landroidx/profileinstaller/ProfileInstallerInitializer$Handler28Impl; +HSPLandroidx/profileinstaller/ProfileInstallerInitializer$Handler28Impl;->createAsync(Landroid/os/Looper;)Landroid/os/Handler; +Landroidx/profileinstaller/ProfileInstallerInitializer$Result; +HSPLandroidx/profileinstaller/ProfileInstallerInitializer$Result;->()V +PLandroidx/profileinstaller/ProfileVerifier;->()V +PLandroidx/profileinstaller/ProfileVerifier;->getPackageLastUpdateTime(Landroid/content/Context;)J +PLandroidx/profileinstaller/ProfileVerifier;->setCompilationStatus(IZZ)Landroidx/profileinstaller/ProfileVerifier$CompilationStatus; +PLandroidx/profileinstaller/ProfileVerifier;->writeProfileVerification(Landroid/content/Context;Z)Landroidx/profileinstaller/ProfileVerifier$CompilationStatus; +PLandroidx/profileinstaller/ProfileVerifier$Api33Impl;->getPackageInfo(Landroid/content/pm/PackageManager;Landroid/content/Context;)Landroid/content/pm/PackageInfo; +PLandroidx/profileinstaller/ProfileVerifier$Cache;->(IIJJ)V +PLandroidx/profileinstaller/ProfileVerifier$Cache;->equals(Ljava/lang/Object;)Z +PLandroidx/profileinstaller/ProfileVerifier$Cache;->readFromFile(Ljava/io/File;)Landroidx/profileinstaller/ProfileVerifier$Cache; +PLandroidx/profileinstaller/ProfileVerifier$Cache;->writeOnFile(Ljava/io/File;)V +PLandroidx/profileinstaller/ProfileVerifier$CompilationStatus;->(IZZ)V +Landroidx/room/AutoClosingRoomOpenHelper; +Landroidx/room/CoroutinesRoom; +HSPLandroidx/room/CoroutinesRoom;->()V +HSPLandroidx/room/CoroutinesRoom;->createFlow(Landroidx/room/RoomDatabase;Z[Ljava/lang/String;Ljava/util/concurrent/Callable;)Lkotlinx/coroutines/flow/Flow; +HSPLandroidx/room/CoroutinesRoom;->execute(Landroidx/room/RoomDatabase;ZLjava/util/concurrent/Callable;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/room/CoroutinesRoom$Companion; +HSPLandroidx/room/CoroutinesRoom$Companion;->()V +HSPLandroidx/room/CoroutinesRoom$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/room/CoroutinesRoom$Companion;->createFlow(Landroidx/room/RoomDatabase;Z[Ljava/lang/String;Ljava/util/concurrent/Callable;)Lkotlinx/coroutines/flow/Flow; +HSPLandroidx/room/CoroutinesRoom$Companion;->execute(Landroidx/room/RoomDatabase;ZLjava/util/concurrent/Callable;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/room/CoroutinesRoom$Companion$createFlow$1; +HSPLandroidx/room/CoroutinesRoom$Companion$createFlow$1;->(ZLandroidx/room/RoomDatabase;[Ljava/lang/String;Ljava/util/concurrent/Callable;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/room/CoroutinesRoom$Companion$createFlow$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/room/CoroutinesRoom$Companion$createFlow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/room/CoroutinesRoom$Companion$createFlow$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/room/CoroutinesRoom$Companion$createFlow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/room/CoroutinesRoom$Companion$createFlow$1$1; +HSPLandroidx/room/CoroutinesRoom$Companion$createFlow$1$1;->(ZLandroidx/room/RoomDatabase;Lkotlinx/coroutines/flow/FlowCollector;[Ljava/lang/String;Ljava/util/concurrent/Callable;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/room/CoroutinesRoom$Companion$createFlow$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/room/CoroutinesRoom$Companion$createFlow$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/room/CoroutinesRoom$Companion$createFlow$1$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/room/CoroutinesRoom$Companion$createFlow$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/room/CoroutinesRoom$Companion$createFlow$1$1$1; +HSPLandroidx/room/CoroutinesRoom$Companion$createFlow$1$1$1;->(Landroidx/room/RoomDatabase;Landroidx/room/CoroutinesRoom$Companion$createFlow$1$1$observer$1;Lkotlinx/coroutines/channels/Channel;Ljava/util/concurrent/Callable;Lkotlinx/coroutines/channels/Channel;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/room/CoroutinesRoom$Companion$createFlow$1$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/room/CoroutinesRoom$Companion$createFlow$1$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/room/CoroutinesRoom$Companion$createFlow$1$1$observer$1; +HSPLandroidx/room/CoroutinesRoom$Companion$createFlow$1$1$observer$1;->([Ljava/lang/String;Lkotlinx/coroutines/channels/Channel;)V +Landroidx/room/DatabaseConfiguration; +HSPLandroidx/room/DatabaseConfiguration;->(Landroid/content/Context;Ljava/lang/String;Landroidx/sqlite/db/SupportSQLiteOpenHelper$Factory;Landroidx/room/RoomDatabase$MigrationContainer;Ljava/util/List;ZLandroidx/room/RoomDatabase$JournalMode;Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executor;Landroid/content/Intent;ZZLjava/util/Set;Ljava/lang/String;Ljava/io/File;Ljava/util/concurrent/Callable;Landroidx/room/RoomDatabase$PrepackagedDatabaseCallback;Ljava/util/List;Ljava/util/List;)V +Landroidx/room/DelegatingOpenHelper; +Landroidx/room/EntityDeletionOrUpdateAdapter; +HSPLandroidx/room/EntityDeletionOrUpdateAdapter;->(Landroidx/room/RoomDatabase;)V +Landroidx/room/EntityInsertionAdapter; +HSPLandroidx/room/EntityInsertionAdapter;->(Landroidx/room/RoomDatabase;)V +HSPLandroidx/room/EntityInsertionAdapter;->insert(Ljava/lang/Object;)V +Landroidx/room/InvalidationLiveDataContainer; +HSPLandroidx/room/InvalidationLiveDataContainer;->(Landroidx/room/RoomDatabase;)V +Landroidx/room/InvalidationTracker; +HSPLandroidx/room/InvalidationTracker;->()V +HSPLandroidx/room/InvalidationTracker;->(Landroidx/room/RoomDatabase;Ljava/util/Map;Ljava/util/Map;[Ljava/lang/String;)V +HSPLandroidx/room/InvalidationTracker;->access$getAutoCloser$p(Landroidx/room/InvalidationTracker;)Landroidx/room/AutoCloser; +HSPLandroidx/room/InvalidationTracker;->addObserver(Landroidx/room/InvalidationTracker$Observer;)V +HSPLandroidx/room/InvalidationTracker;->ensureInitialization$room_runtime_release()Z +HSPLandroidx/room/InvalidationTracker;->getDatabase$room_runtime_release()Landroidx/room/RoomDatabase; +HSPLandroidx/room/InvalidationTracker;->getPendingRefresh()Ljava/util/concurrent/atomic/AtomicBoolean; +HSPLandroidx/room/InvalidationTracker;->internalInit$room_runtime_release(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +HSPLandroidx/room/InvalidationTracker;->refreshVersionsAsync()V +HSPLandroidx/room/InvalidationTracker;->removeObserver(Landroidx/room/InvalidationTracker$Observer;)V +HSPLandroidx/room/InvalidationTracker;->resolveViews([Ljava/lang/String;)[Ljava/lang/String; +HSPLandroidx/room/InvalidationTracker;->syncTriggers$room_runtime_release()V +HSPLandroidx/room/InvalidationTracker;->syncTriggers$room_runtime_release(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +Landroidx/room/InvalidationTracker$Companion; +HSPLandroidx/room/InvalidationTracker$Companion;->()V +HSPLandroidx/room/InvalidationTracker$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/room/InvalidationTracker$ObservedTableTracker; +HSPLandroidx/room/InvalidationTracker$ObservedTableTracker;->()V +HSPLandroidx/room/InvalidationTracker$ObservedTableTracker;->(I)V +HSPLandroidx/room/InvalidationTracker$ObservedTableTracker;->getTablesToSync()[I +HSPLandroidx/room/InvalidationTracker$ObservedTableTracker;->onAdded([I)Z +HSPLandroidx/room/InvalidationTracker$ObservedTableTracker;->onRemoved([I)Z +Landroidx/room/InvalidationTracker$ObservedTableTracker$Companion; +HSPLandroidx/room/InvalidationTracker$ObservedTableTracker$Companion;->()V +HSPLandroidx/room/InvalidationTracker$ObservedTableTracker$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/room/InvalidationTracker$Observer; +HSPLandroidx/room/InvalidationTracker$Observer;->([Ljava/lang/String;)V +HSPLandroidx/room/InvalidationTracker$Observer;->getTables$room_runtime_release()[Ljava/lang/String; +Landroidx/room/InvalidationTracker$ObserverWrapper; +HSPLandroidx/room/InvalidationTracker$ObserverWrapper;->(Landroidx/room/InvalidationTracker$Observer;[I[Ljava/lang/String;)V +HSPLandroidx/room/InvalidationTracker$ObserverWrapper;->getTableIds$room_runtime_release()[I +Landroidx/room/InvalidationTracker$refreshRunnable$1; +HSPLandroidx/room/InvalidationTracker$refreshRunnable$1;->(Landroidx/room/InvalidationTracker;)V +HSPLandroidx/room/InvalidationTracker$refreshRunnable$1;->checkUpdatedTable()Ljava/util/Set; +HSPLandroidx/room/InvalidationTracker$refreshRunnable$1;->run()V +Landroidx/room/Room; +HSPLandroidx/room/Room;->()V +HSPLandroidx/room/Room;->()V +HSPLandroidx/room/Room;->databaseBuilder(Landroid/content/Context;Ljava/lang/Class;Ljava/lang/String;)Landroidx/room/RoomDatabase$Builder; +HSPLandroidx/room/Room;->getGeneratedImplementation(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object; +Landroidx/room/RoomDatabase; +HSPLandroidx/room/RoomDatabase;->()V +HSPLandroidx/room/RoomDatabase;->()V +HSPLandroidx/room/RoomDatabase;->assertNotMainThread()V +HSPLandroidx/room/RoomDatabase;->assertNotSuspendingTransaction()V +HSPLandroidx/room/RoomDatabase;->beginTransaction()V +HSPLandroidx/room/RoomDatabase;->compileStatement(Ljava/lang/String;)Landroidx/sqlite/db/SupportSQLiteStatement; +HSPLandroidx/room/RoomDatabase;->endTransaction()V +HSPLandroidx/room/RoomDatabase;->getCloseLock$room_runtime_release()Ljava/util/concurrent/locks/Lock; +HSPLandroidx/room/RoomDatabase;->getInvalidationTracker()Landroidx/room/InvalidationTracker; +HSPLandroidx/room/RoomDatabase;->getOpenHelper()Landroidx/sqlite/db/SupportSQLiteOpenHelper; +HSPLandroidx/room/RoomDatabase;->getQueryExecutor()Ljava/util/concurrent/Executor; +HSPLandroidx/room/RoomDatabase;->getSuspendingTransactionId()Ljava/lang/ThreadLocal; +HSPLandroidx/room/RoomDatabase;->getTransactionExecutor()Ljava/util/concurrent/Executor; +HSPLandroidx/room/RoomDatabase;->inTransaction()Z +HSPLandroidx/room/RoomDatabase;->init(Landroidx/room/DatabaseConfiguration;)V +HSPLandroidx/room/RoomDatabase;->internalBeginTransaction()V +HSPLandroidx/room/RoomDatabase;->internalEndTransaction()V +HSPLandroidx/room/RoomDatabase;->internalInitInvalidationTracker(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +HSPLandroidx/room/RoomDatabase;->isMainThread$room_runtime_release()Z +HSPLandroidx/room/RoomDatabase;->isOpenInternal()Z +HSPLandroidx/room/RoomDatabase;->query$default(Landroidx/room/RoomDatabase;Landroidx/sqlite/db/SupportSQLiteQuery;Landroid/os/CancellationSignal;ILjava/lang/Object;)Landroid/database/Cursor; +HSPLandroidx/room/RoomDatabase;->query(Landroidx/sqlite/db/SupportSQLiteQuery;Landroid/os/CancellationSignal;)Landroid/database/Cursor; +HSPLandroidx/room/RoomDatabase;->runInTransaction(Ljava/util/concurrent/Callable;)Ljava/lang/Object; +HSPLandroidx/room/RoomDatabase;->setTransactionSuccessful()V +HSPLandroidx/room/RoomDatabase;->unwrapOpenHelper(Ljava/lang/Class;Landroidx/sqlite/db/SupportSQLiteOpenHelper;)Ljava/lang/Object; +Landroidx/room/RoomDatabase$Builder; +HSPLandroidx/room/RoomDatabase$Builder;->(Landroid/content/Context;Ljava/lang/Class;Ljava/lang/String;)V +HSPLandroidx/room/RoomDatabase$Builder;->addCallback(Landroidx/room/RoomDatabase$Callback;)Landroidx/room/RoomDatabase$Builder; +HSPLandroidx/room/RoomDatabase$Builder;->addMigrations([Landroidx/room/migration/Migration;)Landroidx/room/RoomDatabase$Builder; +HSPLandroidx/room/RoomDatabase$Builder;->addTypeConverter(Ljava/lang/Object;)Landroidx/room/RoomDatabase$Builder; +HSPLandroidx/room/RoomDatabase$Builder;->build()Landroidx/room/RoomDatabase; +HSPLandroidx/room/RoomDatabase$Builder;->fallbackToDestructiveMigration()Landroidx/room/RoomDatabase$Builder; +HSPLandroidx/room/RoomDatabase$Builder;->openHelperFactory(Landroidx/sqlite/db/SupportSQLiteOpenHelper$Factory;)Landroidx/room/RoomDatabase$Builder; +HSPLandroidx/room/RoomDatabase$Builder;->setQueryExecutor(Ljava/util/concurrent/Executor;)Landroidx/room/RoomDatabase$Builder; +Landroidx/room/RoomDatabase$Callback; +HSPLandroidx/room/RoomDatabase$Callback;->()V +HSPLandroidx/room/RoomDatabase$Callback;->onOpen(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +Landroidx/room/RoomDatabase$Companion; +HSPLandroidx/room/RoomDatabase$Companion;->()V +HSPLandroidx/room/RoomDatabase$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/room/RoomDatabase$JournalMode; +HSPLandroidx/room/RoomDatabase$JournalMode;->$values()[Landroidx/room/RoomDatabase$JournalMode; +HSPLandroidx/room/RoomDatabase$JournalMode;->()V +HSPLandroidx/room/RoomDatabase$JournalMode;->(Ljava/lang/String;I)V +HSPLandroidx/room/RoomDatabase$JournalMode;->isLowRamDevice(Landroid/app/ActivityManager;)Z +HSPLandroidx/room/RoomDatabase$JournalMode;->resolve$room_runtime_release(Landroid/content/Context;)Landroidx/room/RoomDatabase$JournalMode; +Landroidx/room/RoomDatabase$MigrationContainer; +HSPLandroidx/room/RoomDatabase$MigrationContainer;->()V +HSPLandroidx/room/RoomDatabase$MigrationContainer;->addMigration(Landroidx/room/migration/Migration;)V +HSPLandroidx/room/RoomDatabase$MigrationContainer;->addMigrations([Landroidx/room/migration/Migration;)V +HSPLandroidx/room/RoomDatabase$MigrationContainer;->contains(II)Z +HSPLandroidx/room/RoomDatabase$MigrationContainer;->getMigrations()Ljava/util/Map; +Landroidx/room/RoomDatabase$PrepackagedDatabaseCallback; +Landroidx/room/RoomDatabaseKt; +HSPLandroidx/room/RoomDatabaseKt;->access$createTransactionContext(Landroidx/room/RoomDatabase;Lkotlin/coroutines/ContinuationInterceptor;)Lkotlin/coroutines/CoroutineContext; +HSPLandroidx/room/RoomDatabaseKt;->createTransactionContext(Landroidx/room/RoomDatabase;Lkotlin/coroutines/ContinuationInterceptor;)Lkotlin/coroutines/CoroutineContext; +HSPLandroidx/room/RoomDatabaseKt;->startTransactionCoroutine(Landroidx/room/RoomDatabase;Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/room/RoomDatabaseKt;->withTransaction(Landroidx/room/RoomDatabase;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/room/RoomDatabaseKt$startTransactionCoroutine$2$1; +HSPLandroidx/room/RoomDatabaseKt$startTransactionCoroutine$2$1;->(Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/CancellableContinuation;Landroidx/room/RoomDatabase;Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/room/RoomDatabaseKt$startTransactionCoroutine$2$1;->run()V +Landroidx/room/RoomDatabaseKt$startTransactionCoroutine$2$1$1; +HSPLandroidx/room/RoomDatabaseKt$startTransactionCoroutine$2$1$1;->(Landroidx/room/RoomDatabase;Lkotlinx/coroutines/CancellableContinuation;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/room/RoomDatabaseKt$startTransactionCoroutine$2$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/room/RoomDatabaseKt$startTransactionCoroutine$2$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/room/RoomDatabaseKt$withTransaction$transactionBlock$1; +HSPLandroidx/room/RoomDatabaseKt$withTransaction$transactionBlock$1;->(Landroidx/room/RoomDatabase;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/room/RoomDatabaseKt$withTransaction$transactionBlock$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/room/RoomDatabaseKt$withTransaction$transactionBlock$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/room/RoomDatabaseKt$withTransaction$transactionBlock$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/room/RoomDatabaseKt$withTransaction$transactionBlock$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/room/RoomMasterTable; +HSPLandroidx/room/RoomMasterTable;->()V +HSPLandroidx/room/RoomMasterTable;->()V +HSPLandroidx/room/RoomMasterTable;->createInsertQuery(Ljava/lang/String;)Ljava/lang/String; +Landroidx/room/RoomOpenHelper; +HSPLandroidx/room/RoomOpenHelper;->()V +HSPLandroidx/room/RoomOpenHelper;->(Landroidx/room/DatabaseConfiguration;Landroidx/room/RoomOpenHelper$Delegate;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroidx/room/RoomOpenHelper;->checkIdentity(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +HSPLandroidx/room/RoomOpenHelper;->createMasterTableIfNotExists(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +HSPLandroidx/room/RoomOpenHelper;->onConfigure(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +HSPLandroidx/room/RoomOpenHelper;->onCreate(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +HSPLandroidx/room/RoomOpenHelper;->onOpen(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +HSPLandroidx/room/RoomOpenHelper;->updateIdentity(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +Landroidx/room/RoomOpenHelper$Companion; +HSPLandroidx/room/RoomOpenHelper$Companion;->()V +HSPLandroidx/room/RoomOpenHelper$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/room/RoomOpenHelper$Companion;->hasEmptySchema$room_runtime_release(Landroidx/sqlite/db/SupportSQLiteDatabase;)Z +HSPLandroidx/room/RoomOpenHelper$Companion;->hasRoomMasterTable$room_runtime_release(Landroidx/sqlite/db/SupportSQLiteDatabase;)Z +Landroidx/room/RoomOpenHelper$Delegate; +HSPLandroidx/room/RoomOpenHelper$Delegate;->(I)V +Landroidx/room/RoomSQLiteQuery; +HSPLandroidx/room/RoomSQLiteQuery;->()V +HSPLandroidx/room/RoomSQLiteQuery;->(I)V +HSPLandroidx/room/RoomSQLiteQuery;->(ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/room/RoomSQLiteQuery;->acquire(Ljava/lang/String;I)Landroidx/room/RoomSQLiteQuery; +HSPLandroidx/room/RoomSQLiteQuery;->bindLong(IJ)V +HSPLandroidx/room/RoomSQLiteQuery;->bindString(ILjava/lang/String;)V +HSPLandroidx/room/RoomSQLiteQuery;->bindTo(Landroidx/sqlite/db/SupportSQLiteProgram;)V +HSPLandroidx/room/RoomSQLiteQuery;->getArgCount()I +HSPLandroidx/room/RoomSQLiteQuery;->getSql()Ljava/lang/String; +HSPLandroidx/room/RoomSQLiteQuery;->init(Ljava/lang/String;I)V +HSPLandroidx/room/RoomSQLiteQuery;->release()V +Landroidx/room/RoomSQLiteQuery$Companion; +HSPLandroidx/room/RoomSQLiteQuery$Companion;->()V +HSPLandroidx/room/RoomSQLiteQuery$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/room/RoomSQLiteQuery$Companion;->acquire(Ljava/lang/String;I)Landroidx/room/RoomSQLiteQuery; +HSPLandroidx/room/RoomSQLiteQuery$Companion;->prunePoolLocked$room_runtime_release()V +Landroidx/room/SQLiteCopyOpenHelper; +Landroidx/room/SharedSQLiteStatement; +HSPLandroidx/room/SharedSQLiteStatement;->(Landroidx/room/RoomDatabase;)V +HSPLandroidx/room/SharedSQLiteStatement;->access$createNewStatement(Landroidx/room/SharedSQLiteStatement;)Landroidx/sqlite/db/SupportSQLiteStatement; +HSPLandroidx/room/SharedSQLiteStatement;->acquire()Landroidx/sqlite/db/SupportSQLiteStatement; +HSPLandroidx/room/SharedSQLiteStatement;->assertNotMainThread()V +HSPLandroidx/room/SharedSQLiteStatement;->createNewStatement()Landroidx/sqlite/db/SupportSQLiteStatement; +HSPLandroidx/room/SharedSQLiteStatement;->getStmt()Landroidx/sqlite/db/SupportSQLiteStatement; +HSPLandroidx/room/SharedSQLiteStatement;->getStmt(Z)Landroidx/sqlite/db/SupportSQLiteStatement; +HSPLandroidx/room/SharedSQLiteStatement;->release(Landroidx/sqlite/db/SupportSQLiteStatement;)V +Landroidx/room/SharedSQLiteStatement$stmt$2; +HSPLandroidx/room/SharedSQLiteStatement$stmt$2;->(Landroidx/room/SharedSQLiteStatement;)V +HSPLandroidx/room/SharedSQLiteStatement$stmt$2;->invoke()Landroidx/sqlite/db/SupportSQLiteStatement; +HSPLandroidx/room/SharedSQLiteStatement$stmt$2;->invoke()Ljava/lang/Object; +Landroidx/room/TransactionElement; +HSPLandroidx/room/TransactionElement;->()V +HSPLandroidx/room/TransactionElement;->(Lkotlin/coroutines/ContinuationInterceptor;)V +HSPLandroidx/room/TransactionElement;->acquire()V +HSPLandroidx/room/TransactionElement;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLandroidx/room/TransactionElement;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLandroidx/room/TransactionElement;->getKey()Lkotlin/coroutines/CoroutineContext$Key; +HSPLandroidx/room/TransactionElement;->getTransactionDispatcher$room_ktx_release()Lkotlin/coroutines/ContinuationInterceptor; +HSPLandroidx/room/TransactionElement;->minusKey(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext; +PLandroidx/room/TransactionElement;->release()V +Landroidx/room/TransactionElement$Key; +HSPLandroidx/room/TransactionElement$Key;->()V +HSPLandroidx/room/TransactionElement$Key;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/room/TransactionExecutor; +HSPLandroidx/room/TransactionExecutor;->$r8$lambda$AympDHYBb78s7_N_9gRsXF0sHiw(Ljava/lang/Runnable;Landroidx/room/TransactionExecutor;)V +HSPLandroidx/room/TransactionExecutor;->(Ljava/util/concurrent/Executor;)V +HSPLandroidx/room/TransactionExecutor;->execute$lambda$1$lambda$0(Ljava/lang/Runnable;Landroidx/room/TransactionExecutor;)V +HSPLandroidx/room/TransactionExecutor;->execute(Ljava/lang/Runnable;)V +HSPLandroidx/room/TransactionExecutor;->scheduleNext()V +Landroidx/room/TransactionExecutor$$ExternalSyntheticLambda0; +HSPLandroidx/room/TransactionExecutor$$ExternalSyntheticLambda0;->(Ljava/lang/Runnable;Landroidx/room/TransactionExecutor;)V +HSPLandroidx/room/TransactionExecutor$$ExternalSyntheticLambda0;->run()V +Landroidx/room/migration/AutoMigrationSpec; +Landroidx/room/migration/Migration; +HSPLandroidx/room/migration/Migration;->(II)V +Landroidx/room/util/CursorUtil; +HSPLandroidx/room/util/CursorUtil;->getColumnIndex(Landroid/database/Cursor;Ljava/lang/String;)I +HSPLandroidx/room/util/CursorUtil;->getColumnIndexOrThrow(Landroid/database/Cursor;Ljava/lang/String;)I +Landroidx/room/util/DBUtil; +HSPLandroidx/room/util/DBUtil;->query(Landroidx/room/RoomDatabase;Landroidx/sqlite/db/SupportSQLiteQuery;ZLandroid/os/CancellationSignal;)Landroid/database/Cursor; +Landroidx/savedstate/R$id; +Landroidx/savedstate/Recreator; +HSPLandroidx/savedstate/Recreator;->()V +HSPLandroidx/savedstate/Recreator;->(Landroidx/savedstate/SavedStateRegistryOwner;)V +HSPLandroidx/savedstate/Recreator;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +Landroidx/savedstate/Recreator$Companion; +HSPLandroidx/savedstate/Recreator$Companion;->()V +HSPLandroidx/savedstate/Recreator$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/savedstate/SavedStateRegistry; +HSPLandroidx/savedstate/SavedStateRegistry;->$r8$lambda$AUDDdpkzZrJMhBj0r-_9pI-j6hA(Landroidx/savedstate/SavedStateRegistry;Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +HSPLandroidx/savedstate/SavedStateRegistry;->()V +HSPLandroidx/savedstate/SavedStateRegistry;->()V +HSPLandroidx/savedstate/SavedStateRegistry;->consumeRestoredStateForKey(Ljava/lang/String;)Landroid/os/Bundle; +HSPLandroidx/savedstate/SavedStateRegistry;->getSavedStateProvider(Ljava/lang/String;)Landroidx/savedstate/SavedStateRegistry$SavedStateProvider; +HSPLandroidx/savedstate/SavedStateRegistry;->performAttach$lambda$4(Landroidx/savedstate/SavedStateRegistry;Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +HSPLandroidx/savedstate/SavedStateRegistry;->performAttach$savedstate_release(Landroidx/lifecycle/Lifecycle;)V +HSPLandroidx/savedstate/SavedStateRegistry;->performRestore$savedstate_release(Landroid/os/Bundle;)V +HSPLandroidx/savedstate/SavedStateRegistry;->registerSavedStateProvider(Ljava/lang/String;Landroidx/savedstate/SavedStateRegistry$SavedStateProvider;)V +Landroidx/savedstate/SavedStateRegistry$$ExternalSyntheticLambda0; +HSPLandroidx/savedstate/SavedStateRegistry$$ExternalSyntheticLambda0;->(Landroidx/savedstate/SavedStateRegistry;)V +HSPLandroidx/savedstate/SavedStateRegistry$$ExternalSyntheticLambda0;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +Landroidx/savedstate/SavedStateRegistry$Companion; +HSPLandroidx/savedstate/SavedStateRegistry$Companion;->()V +HSPLandroidx/savedstate/SavedStateRegistry$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/savedstate/SavedStateRegistry$SavedStateProvider; +Landroidx/savedstate/SavedStateRegistryController; +HSPLandroidx/savedstate/SavedStateRegistryController;->()V +HSPLandroidx/savedstate/SavedStateRegistryController;->(Landroidx/savedstate/SavedStateRegistryOwner;)V +HSPLandroidx/savedstate/SavedStateRegistryController;->(Landroidx/savedstate/SavedStateRegistryOwner;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/savedstate/SavedStateRegistryController;->create(Landroidx/savedstate/SavedStateRegistryOwner;)Landroidx/savedstate/SavedStateRegistryController; +HSPLandroidx/savedstate/SavedStateRegistryController;->getSavedStateRegistry()Landroidx/savedstate/SavedStateRegistry; +HSPLandroidx/savedstate/SavedStateRegistryController;->performAttach()V +HSPLandroidx/savedstate/SavedStateRegistryController;->performRestore(Landroid/os/Bundle;)V +Landroidx/savedstate/SavedStateRegistryController$Companion; +HSPLandroidx/savedstate/SavedStateRegistryController$Companion;->()V +HSPLandroidx/savedstate/SavedStateRegistryController$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/savedstate/SavedStateRegistryController$Companion;->create(Landroidx/savedstate/SavedStateRegistryOwner;)Landroidx/savedstate/SavedStateRegistryController; +Landroidx/savedstate/SavedStateRegistryOwner; +Landroidx/savedstate/ViewTreeSavedStateRegistryOwner; +HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner;->get(Landroid/view/View;)Landroidx/savedstate/SavedStateRegistryOwner; +HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner;->set(Landroid/view/View;Landroidx/savedstate/SavedStateRegistryOwner;)V +Landroidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$1; +HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$1;->()V +HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$1;->()V +HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$1;->invoke(Landroid/view/View;)Landroid/view/View; +HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$2; +HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$2;->()V +HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$2;->()V +HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$2;->invoke(Landroid/view/View;)Landroidx/savedstate/SavedStateRegistryOwner; +HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/security/crypto/EncryptedSharedPreferences; +HSPLandroidx/security/crypto/EncryptedSharedPreferences;->(Ljava/lang/String;Ljava/lang/String;Landroid/content/SharedPreferences;Lcom/google/crypto/tink/Aead;Lcom/google/crypto/tink/DeterministicAead;)V +HSPLandroidx/security/crypto/EncryptedSharedPreferences;->create(Landroid/content/Context;Ljava/lang/String;Landroidx/security/crypto/MasterKey;Landroidx/security/crypto/EncryptedSharedPreferences$PrefKeyEncryptionScheme;Landroidx/security/crypto/EncryptedSharedPreferences$PrefValueEncryptionScheme;)Landroid/content/SharedPreferences; +HSPLandroidx/security/crypto/EncryptedSharedPreferences;->create(Ljava/lang/String;Ljava/lang/String;Landroid/content/Context;Landroidx/security/crypto/EncryptedSharedPreferences$PrefKeyEncryptionScheme;Landroidx/security/crypto/EncryptedSharedPreferences$PrefValueEncryptionScheme;)Landroid/content/SharedPreferences; +HSPLandroidx/security/crypto/EncryptedSharedPreferences;->edit()Landroid/content/SharedPreferences$Editor; +HSPLandroidx/security/crypto/EncryptedSharedPreferences;->encryptKey(Ljava/lang/String;)Ljava/lang/String; +HSPLandroidx/security/crypto/EncryptedSharedPreferences;->encryptKeyValuePair(Ljava/lang/String;[B)Landroid/util/Pair; +HSPLandroidx/security/crypto/EncryptedSharedPreferences;->getBoolean(Ljava/lang/String;Z)Z +HSPLandroidx/security/crypto/EncryptedSharedPreferences;->getDecryptedObject(Ljava/lang/String;)Ljava/lang/Object; +HSPLandroidx/security/crypto/EncryptedSharedPreferences;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroidx/security/crypto/EncryptedSharedPreferences;->isReservedKey(Ljava/lang/String;)Z +HSPLandroidx/security/crypto/EncryptedSharedPreferences;->registerOnSharedPreferenceChangeListener(Landroid/content/SharedPreferences$OnSharedPreferenceChangeListener;)V +HSPLandroidx/security/crypto/EncryptedSharedPreferences;->unregisterOnSharedPreferenceChangeListener(Landroid/content/SharedPreferences$OnSharedPreferenceChangeListener;)V +Landroidx/security/crypto/EncryptedSharedPreferences$1; +HSPLandroidx/security/crypto/EncryptedSharedPreferences$1;->()V +Landroidx/security/crypto/EncryptedSharedPreferences$Editor; +HSPLandroidx/security/crypto/EncryptedSharedPreferences$Editor;->(Landroidx/security/crypto/EncryptedSharedPreferences;Landroid/content/SharedPreferences$Editor;)V +HSPLandroidx/security/crypto/EncryptedSharedPreferences$Editor;->clearKeysIfNeeded()V +HSPLandroidx/security/crypto/EncryptedSharedPreferences$Editor;->commit()Z +HSPLandroidx/security/crypto/EncryptedSharedPreferences$Editor;->notifyListeners()V +HSPLandroidx/security/crypto/EncryptedSharedPreferences$Editor;->putBoolean(Ljava/lang/String;Z)Landroid/content/SharedPreferences$Editor; +HSPLandroidx/security/crypto/EncryptedSharedPreferences$Editor;->putEncryptedObject(Ljava/lang/String;[B)V +HSPLandroidx/security/crypto/EncryptedSharedPreferences$Editor;->putLong(Ljava/lang/String;J)Landroid/content/SharedPreferences$Editor; +HSPLandroidx/security/crypto/EncryptedSharedPreferences$Editor;->putString(Ljava/lang/String;Ljava/lang/String;)Landroid/content/SharedPreferences$Editor; +Landroidx/security/crypto/EncryptedSharedPreferences$EncryptedType; +HSPLandroidx/security/crypto/EncryptedSharedPreferences$EncryptedType;->$values()[Landroidx/security/crypto/EncryptedSharedPreferences$EncryptedType; +HSPLandroidx/security/crypto/EncryptedSharedPreferences$EncryptedType;->()V +HSPLandroidx/security/crypto/EncryptedSharedPreferences$EncryptedType;->(Ljava/lang/String;II)V +HSPLandroidx/security/crypto/EncryptedSharedPreferences$EncryptedType;->fromId(I)Landroidx/security/crypto/EncryptedSharedPreferences$EncryptedType; +HSPLandroidx/security/crypto/EncryptedSharedPreferences$EncryptedType;->getId()I +HSPLandroidx/security/crypto/EncryptedSharedPreferences$EncryptedType;->values()[Landroidx/security/crypto/EncryptedSharedPreferences$EncryptedType; +Landroidx/security/crypto/EncryptedSharedPreferences$PrefKeyEncryptionScheme; +HSPLandroidx/security/crypto/EncryptedSharedPreferences$PrefKeyEncryptionScheme;->$values()[Landroidx/security/crypto/EncryptedSharedPreferences$PrefKeyEncryptionScheme; +HSPLandroidx/security/crypto/EncryptedSharedPreferences$PrefKeyEncryptionScheme;->()V +HSPLandroidx/security/crypto/EncryptedSharedPreferences$PrefKeyEncryptionScheme;->(Ljava/lang/String;ILjava/lang/String;)V +HSPLandroidx/security/crypto/EncryptedSharedPreferences$PrefKeyEncryptionScheme;->getKeyTemplate()Lcom/google/crypto/tink/KeyTemplate; +Landroidx/security/crypto/EncryptedSharedPreferences$PrefValueEncryptionScheme; +HSPLandroidx/security/crypto/EncryptedSharedPreferences$PrefValueEncryptionScheme;->$values()[Landroidx/security/crypto/EncryptedSharedPreferences$PrefValueEncryptionScheme; +HSPLandroidx/security/crypto/EncryptedSharedPreferences$PrefValueEncryptionScheme;->()V +HSPLandroidx/security/crypto/EncryptedSharedPreferences$PrefValueEncryptionScheme;->(Ljava/lang/String;ILjava/lang/String;)V +HSPLandroidx/security/crypto/EncryptedSharedPreferences$PrefValueEncryptionScheme;->getKeyTemplate()Lcom/google/crypto/tink/KeyTemplate; +Landroidx/security/crypto/MasterKey; +HSPLandroidx/security/crypto/MasterKey;->(Ljava/lang/String;Ljava/lang/Object;)V +HSPLandroidx/security/crypto/MasterKey;->getDefaultAuthenticationValidityDurationSeconds()I +HSPLandroidx/security/crypto/MasterKey;->getKeyAlias()Ljava/lang/String; +Landroidx/security/crypto/MasterKey$1; +HSPLandroidx/security/crypto/MasterKey$1;->()V +Landroidx/security/crypto/MasterKey$Builder; +HSPLandroidx/security/crypto/MasterKey$Builder;->(Landroid/content/Context;Ljava/lang/String;)V +HSPLandroidx/security/crypto/MasterKey$Builder;->build()Landroidx/security/crypto/MasterKey; +HSPLandroidx/security/crypto/MasterKey$Builder;->setKeyScheme(Landroidx/security/crypto/MasterKey$KeyScheme;)Landroidx/security/crypto/MasterKey$Builder; +HSPLandroidx/security/crypto/MasterKey$Builder;->setRequestStrongBoxBacked(Z)Landroidx/security/crypto/MasterKey$Builder; +HSPLandroidx/security/crypto/MasterKey$Builder;->setUserAuthenticationRequired(Z)Landroidx/security/crypto/MasterKey$Builder; +HSPLandroidx/security/crypto/MasterKey$Builder;->setUserAuthenticationRequired(ZI)Landroidx/security/crypto/MasterKey$Builder; +Landroidx/security/crypto/MasterKey$Builder$Api23Impl; +HSPLandroidx/security/crypto/MasterKey$Builder$Api23Impl;->build(Landroidx/security/crypto/MasterKey$Builder;)Landroidx/security/crypto/MasterKey; +Landroidx/security/crypto/MasterKey$KeyScheme; +HSPLandroidx/security/crypto/MasterKey$KeyScheme;->$values()[Landroidx/security/crypto/MasterKey$KeyScheme; +HSPLandroidx/security/crypto/MasterKey$KeyScheme;->()V +HSPLandroidx/security/crypto/MasterKey$KeyScheme;->(Ljava/lang/String;I)V +HSPLandroidx/security/crypto/MasterKey$KeyScheme;->values()[Landroidx/security/crypto/MasterKey$KeyScheme; +Landroidx/security/crypto/MasterKeys; +HSPLandroidx/security/crypto/MasterKeys;->()V +HSPLandroidx/security/crypto/MasterKeys;->createAES256GCMKeyGenParameterSpec(Ljava/lang/String;)Landroid/security/keystore/KeyGenParameterSpec; +HSPLandroidx/security/crypto/MasterKeys;->generateKey(Landroid/security/keystore/KeyGenParameterSpec;)V +HSPLandroidx/security/crypto/MasterKeys;->getOrCreate(Landroid/security/keystore/KeyGenParameterSpec;)Ljava/lang/String; +HSPLandroidx/security/crypto/MasterKeys;->keyExists(Ljava/lang/String;)Z +HSPLandroidx/security/crypto/MasterKeys;->validate(Landroid/security/keystore/KeyGenParameterSpec;)V +Landroidx/sqlite/db/SimpleSQLiteQuery; +HSPLandroidx/sqlite/db/SimpleSQLiteQuery;->()V +HSPLandroidx/sqlite/db/SimpleSQLiteQuery;->(Ljava/lang/String;)V +HSPLandroidx/sqlite/db/SimpleSQLiteQuery;->(Ljava/lang/String;[Ljava/lang/Object;)V +HSPLandroidx/sqlite/db/SimpleSQLiteQuery;->bindTo(Landroidx/sqlite/db/SupportSQLiteProgram;)V +HSPLandroidx/sqlite/db/SimpleSQLiteQuery;->getSql()Ljava/lang/String; +Landroidx/sqlite/db/SimpleSQLiteQuery$Companion; +HSPLandroidx/sqlite/db/SimpleSQLiteQuery$Companion;->()V +HSPLandroidx/sqlite/db/SimpleSQLiteQuery$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/sqlite/db/SimpleSQLiteQuery$Companion;->bind(Landroidx/sqlite/db/SupportSQLiteProgram;[Ljava/lang/Object;)V +Landroidx/sqlite/db/SupportSQLiteCompat$Api16Impl; +HSPLandroidx/sqlite/db/SupportSQLiteCompat$Api16Impl;->()V +HSPLandroidx/sqlite/db/SupportSQLiteCompat$Api16Impl;->()V +HSPLandroidx/sqlite/db/SupportSQLiteCompat$Api16Impl;->isWriteAheadLoggingEnabled(Landroid/database/sqlite/SQLiteDatabase;)Z +HSPLandroidx/sqlite/db/SupportSQLiteCompat$Api16Impl;->setWriteAheadLoggingEnabled(Landroid/database/sqlite/SQLiteOpenHelper;Z)V +Landroidx/sqlite/db/SupportSQLiteCompat$Api19Impl; +HSPLandroidx/sqlite/db/SupportSQLiteCompat$Api19Impl;->()V +HSPLandroidx/sqlite/db/SupportSQLiteCompat$Api19Impl;->()V +HSPLandroidx/sqlite/db/SupportSQLiteCompat$Api19Impl;->isLowRamDevice(Landroid/app/ActivityManager;)Z +Landroidx/sqlite/db/SupportSQLiteCompat$Api21Impl; +HSPLandroidx/sqlite/db/SupportSQLiteCompat$Api21Impl;->()V +HSPLandroidx/sqlite/db/SupportSQLiteCompat$Api21Impl;->()V +HSPLandroidx/sqlite/db/SupportSQLiteCompat$Api21Impl;->getNoBackupFilesDir(Landroid/content/Context;)Ljava/io/File; +Landroidx/sqlite/db/SupportSQLiteDatabase; +Landroidx/sqlite/db/SupportSQLiteOpenHelper; +Landroidx/sqlite/db/SupportSQLiteOpenHelper$Callback; +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Callback;->()V +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Callback;->(I)V +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Callback;->onConfigure(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Callback;->onOpen(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +Landroidx/sqlite/db/SupportSQLiteOpenHelper$Callback$Companion; +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Callback$Companion;->()V +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Callback$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration; +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration;->()V +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration;->(Landroid/content/Context;Ljava/lang/String;Landroidx/sqlite/db/SupportSQLiteOpenHelper$Callback;ZZ)V +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration;->builder(Landroid/content/Context;)Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Builder; +Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Builder; +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Builder;->(Landroid/content/Context;)V +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Builder;->allowDataLossOnRecovery(Z)Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Builder; +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Builder;->build()Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration; +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Builder;->callback(Landroidx/sqlite/db/SupportSQLiteOpenHelper$Callback;)Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Builder; +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Builder;->name(Ljava/lang/String;)Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Builder; +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Builder;->noBackupDirectory(Z)Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Builder; +Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Companion; +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Companion;->()V +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Companion;->builder(Landroid/content/Context;)Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration$Builder; +Landroidx/sqlite/db/SupportSQLiteOpenHelper$Factory; +Landroidx/sqlite/db/SupportSQLiteProgram; +Landroidx/sqlite/db/SupportSQLiteQuery; +Landroidx/sqlite/db/SupportSQLiteStatement; +Landroidx/sqlite/db/framework/FrameworkSQLiteDatabase; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase;->$r8$lambda$xWs7VTYEzeAWyi_2-SJixQ1HyKQ(Lkotlin/jvm/functions/Function4;Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteCursorDriver;Ljava/lang/String;Landroid/database/sqlite/SQLiteQuery;)Landroid/database/Cursor; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase;->()V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase;->(Landroid/database/sqlite/SQLiteDatabase;)V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase;->beginTransaction()V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase;->beginTransactionNonExclusive()V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase;->compileStatement(Ljava/lang/String;)Landroidx/sqlite/db/SupportSQLiteStatement; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase;->endTransaction()V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase;->execSQL(Ljava/lang/String;)V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase;->inTransaction()Z +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase;->isDelegate(Landroid/database/sqlite/SQLiteDatabase;)Z +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase;->isOpen()Z +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase;->isWriteAheadLoggingEnabled()Z +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase;->query$lambda$0(Lkotlin/jvm/functions/Function4;Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteCursorDriver;Ljava/lang/String;Landroid/database/sqlite/SQLiteQuery;)Landroid/database/Cursor; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase;->query(Landroidx/sqlite/db/SupportSQLiteQuery;)Landroid/database/Cursor; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase;->query(Ljava/lang/String;)Landroid/database/Cursor; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase;->setTransactionSuccessful()V +Landroidx/sqlite/db/framework/FrameworkSQLiteDatabase$$ExternalSyntheticLambda1; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase$$ExternalSyntheticLambda1;->(Lkotlin/jvm/functions/Function4;)V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase$$ExternalSyntheticLambda1;->newCursor(Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteCursorDriver;Ljava/lang/String;Landroid/database/sqlite/SQLiteQuery;)Landroid/database/Cursor; +Landroidx/sqlite/db/framework/FrameworkSQLiteDatabase$Companion; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase$Companion;->()V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/sqlite/db/framework/FrameworkSQLiteDatabase$query$cursorFactory$1; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase$query$cursorFactory$1;->(Landroidx/sqlite/db/SupportSQLiteQuery;)V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase$query$cursorFactory$1;->invoke(Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteCursorDriver;Ljava/lang/String;Landroid/database/sqlite/SQLiteQuery;)Landroid/database/sqlite/SQLiteCursor; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteDatabase$query$cursorFactory$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;->()V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;->(Landroid/content/Context;Ljava/lang/String;Landroidx/sqlite/db/SupportSQLiteOpenHelper$Callback;ZZ)V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;->access$getAllowDataLossOnRecovery$p(Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;)Z +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;->access$getCallback$p(Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;)Landroidx/sqlite/db/SupportSQLiteOpenHelper$Callback; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;->access$getContext$p(Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;)Landroid/content/Context; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;->access$getName$p(Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;)Ljava/lang/String; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;->access$getUseNoBackupDirectory$p(Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;)Z +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;->access$getWriteAheadLoggingEnabled$p(Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;)Z +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;->getDelegate()Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;->getWritableDatabase()Landroidx/sqlite/db/SupportSQLiteDatabase; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;->setWriteAheadLoggingEnabled(Z)V +Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$Companion; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$Companion;->()V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$DBRefHolder; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$DBRefHolder;->(Landroidx/sqlite/db/framework/FrameworkSQLiteDatabase;)V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$DBRefHolder;->getDb()Landroidx/sqlite/db/framework/FrameworkSQLiteDatabase; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$DBRefHolder;->setDb(Landroidx/sqlite/db/framework/FrameworkSQLiteDatabase;)V +Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper;->()V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper;->(Landroid/content/Context;Ljava/lang/String;Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$DBRefHolder;Landroidx/sqlite/db/SupportSQLiteOpenHelper$Callback;Z)V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper;->getSupportDatabase(Z)Landroidx/sqlite/db/SupportSQLiteDatabase; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper;->getWrappedDb(Landroid/database/sqlite/SQLiteDatabase;)Landroidx/sqlite/db/framework/FrameworkSQLiteDatabase; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper;->getWritableOrReadableDatabase(Z)Landroid/database/sqlite/SQLiteDatabase; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper;->innerGetDatabase(Z)Landroid/database/sqlite/SQLiteDatabase; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper;->onConfigure(Landroid/database/sqlite/SQLiteDatabase;)V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper;->onOpen(Landroid/database/sqlite/SQLiteDatabase;)V +Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper$$ExternalSyntheticLambda0; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper$$ExternalSyntheticLambda0;->(Landroidx/sqlite/db/SupportSQLiteOpenHelper$Callback;Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$DBRefHolder;)V +Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper$CallbackException; +Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper$Companion; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper$Companion;->()V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper$Companion;->getWrappedDb(Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$DBRefHolder;Landroid/database/sqlite/SQLiteDatabase;)Landroidx/sqlite/db/framework/FrameworkSQLiteDatabase; +Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$lazyDelegate$1; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$lazyDelegate$1;->(Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper;)V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$lazyDelegate$1;->invoke()Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$OpenHelper; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelper$lazyDelegate$1;->invoke()Ljava/lang/Object; +Landroidx/sqlite/db/framework/FrameworkSQLiteOpenHelperFactory; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelperFactory;->()V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteOpenHelperFactory;->create(Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration;)Landroidx/sqlite/db/SupportSQLiteOpenHelper; +Landroidx/sqlite/db/framework/FrameworkSQLiteProgram; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteProgram;->(Landroid/database/sqlite/SQLiteProgram;)V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteProgram;->bindBlob(I[B)V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteProgram;->bindLong(IJ)V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteProgram;->bindString(ILjava/lang/String;)V +Landroidx/sqlite/db/framework/FrameworkSQLiteStatement; +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteStatement;->(Landroid/database/sqlite/SQLiteStatement;)V +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteStatement;->executeInsert()J +HSPLandroidx/sqlite/db/framework/FrameworkSQLiteStatement;->executeUpdateDelete()I +Landroidx/sqlite/util/ProcessLock; +HSPLandroidx/sqlite/util/ProcessLock;->()V +HSPLandroidx/sqlite/util/ProcessLock;->(Ljava/lang/String;Ljava/io/File;Z)V +HSPLandroidx/sqlite/util/ProcessLock;->access$getThreadLocksMap$cp()Ljava/util/Map; +HSPLandroidx/sqlite/util/ProcessLock;->lock(Z)V +HSPLandroidx/sqlite/util/ProcessLock;->unlock()V +Landroidx/sqlite/util/ProcessLock$Companion; +HSPLandroidx/sqlite/util/ProcessLock$Companion;->()V +HSPLandroidx/sqlite/util/ProcessLock$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/sqlite/util/ProcessLock$Companion;->access$getThreadLock(Landroidx/sqlite/util/ProcessLock$Companion;Ljava/lang/String;)Ljava/util/concurrent/locks/Lock; +HSPLandroidx/sqlite/util/ProcessLock$Companion;->getThreadLock(Ljava/lang/String;)Ljava/util/concurrent/locks/Lock; +Landroidx/startup/AppInitializer; +HSPLandroidx/startup/AppInitializer;->()V +HSPLandroidx/startup/AppInitializer;->(Landroid/content/Context;)V +HSPLandroidx/startup/AppInitializer;->discoverAndInitialize()V +HSPLandroidx/startup/AppInitializer;->discoverAndInitialize(Landroid/os/Bundle;)V +HSPLandroidx/startup/AppInitializer;->doInitialize(Ljava/lang/Class;)Ljava/lang/Object; +HSPLandroidx/startup/AppInitializer;->doInitialize(Ljava/lang/Class;Ljava/util/Set;)Ljava/lang/Object; +HSPLandroidx/startup/AppInitializer;->getInstance(Landroid/content/Context;)Landroidx/startup/AppInitializer; +HSPLandroidx/startup/AppInitializer;->initializeComponent(Ljava/lang/Class;)Ljava/lang/Object; +HSPLandroidx/startup/AppInitializer;->isEagerlyInitialized(Ljava/lang/Class;)Z +Landroidx/startup/InitializationProvider; +HSPLandroidx/startup/InitializationProvider;->()V +HSPLandroidx/startup/InitializationProvider;->onCreate()Z +Landroidx/startup/Initializer; +Landroidx/startup/R$string; +Landroidx/tracing/Trace; +HSPLandroidx/tracing/Trace;->beginSection(Ljava/lang/String;)V +HSPLandroidx/tracing/Trace;->endSection()V +HSPLandroidx/tracing/Trace;->isEnabled()Z +Landroidx/tracing/Trace$$ExternalSyntheticApiModelOutline0; +HSPLandroidx/tracing/Trace$$ExternalSyntheticApiModelOutline0;->m$1()Ljava/lang/String; +HSPLandroidx/tracing/Trace$$ExternalSyntheticApiModelOutline0;->m$1()V +HSPLandroidx/tracing/Trace$$ExternalSyntheticApiModelOutline0;->m()Ljava/lang/String; +HSPLandroidx/tracing/Trace$$ExternalSyntheticApiModelOutline0;->m()V +HSPLandroidx/tracing/Trace$$ExternalSyntheticApiModelOutline0;->m()Z +HSPLandroidx/tracing/Trace$$ExternalSyntheticApiModelOutline0;->m(Landroid/app/ActivityManager;Ljava/lang/String;II)Ljava/util/List; +HSPLandroidx/tracing/Trace$$ExternalSyntheticApiModelOutline0;->m(Landroid/app/ApplicationExitInfo;)I +HSPLandroidx/tracing/Trace$$ExternalSyntheticApiModelOutline0;->m(Landroid/app/ApplicationExitInfo;)J +HSPLandroidx/tracing/Trace$$ExternalSyntheticApiModelOutline0;->m(Landroid/app/job/JobInfo$Builder;Z)Landroid/app/job/JobInfo$Builder; +HSPLandroidx/tracing/Trace$$ExternalSyntheticApiModelOutline0;->m(Landroid/content/pm/PackageInfo;)J +HSPLandroidx/tracing/Trace$$ExternalSyntheticApiModelOutline0;->m(Landroid/os/StrictMode$VmPolicy$Builder;)Landroid/os/StrictMode$VmPolicy$Builder; +HSPLandroidx/tracing/Trace$$ExternalSyntheticApiModelOutline0;->m(Ljava/lang/Object;)Landroid/app/ApplicationExitInfo; +HSPLandroidx/tracing/Trace$$ExternalSyntheticApiModelOutline0;->m(Ljava/lang/String;J)Landroid/database/CursorWindow; +HSPLandroidx/tracing/Trace$$ExternalSyntheticApiModelOutline0;->m(Ljava/lang/String;Ljava/lang/ClassLoader;)Ldalvik/system/DelegateLastClassLoader; +Landroidx/tracing/TraceApi18Impl; +HSPLandroidx/tracing/TraceApi18Impl;->beginSection(Ljava/lang/String;)V +HSPLandroidx/tracing/TraceApi18Impl;->endSection()V +Landroidx/vectordrawable/graphics/drawable/VectorDrawableCommon; +Landroidx/vectordrawable/graphics/drawable/VectorDrawableCompat; +Landroidx/work/BackoffPolicy; +HSPLandroidx/work/BackoffPolicy;->$values()[Landroidx/work/BackoffPolicy; +HSPLandroidx/work/BackoffPolicy;->()V +HSPLandroidx/work/BackoffPolicy;->(Ljava/lang/String;I)V +HSPLandroidx/work/BackoffPolicy;->values()[Landroidx/work/BackoffPolicy; +Landroidx/work/Clock; +Landroidx/work/Configuration; +HSPLandroidx/work/Configuration;->()V +HSPLandroidx/work/Configuration;->(Landroidx/work/Configuration$Builder;)V +HSPLandroidx/work/Configuration;->getClock()Landroidx/work/Clock; +HSPLandroidx/work/Configuration;->getDefaultProcessName()Ljava/lang/String; +HSPLandroidx/work/Configuration;->getExecutor()Ljava/util/concurrent/Executor; +HSPLandroidx/work/Configuration;->getInputMergerFactory()Landroidx/work/InputMergerFactory; +HSPLandroidx/work/Configuration;->getMaxJobSchedulerId()I +HSPLandroidx/work/Configuration;->getMaxSchedulerLimit()I +HSPLandroidx/work/Configuration;->getMinJobSchedulerId()I +HSPLandroidx/work/Configuration;->getMinimumLoggingLevel()I +HSPLandroidx/work/Configuration;->getRunnableScheduler()Landroidx/work/RunnableScheduler; +HSPLandroidx/work/Configuration;->getTaskExecutor()Ljava/util/concurrent/Executor; +HSPLandroidx/work/Configuration;->getWorkerFactory()Landroidx/work/WorkerFactory; +Landroidx/work/Configuration$Builder; +HSPLandroidx/work/Configuration$Builder;->()V +HSPLandroidx/work/Configuration$Builder;->build()Landroidx/work/Configuration; +HSPLandroidx/work/Configuration$Builder;->getClock$work_runtime_release()Landroidx/work/Clock; +HSPLandroidx/work/Configuration$Builder;->getContentUriTriggerWorkersLimit$work_runtime_release()I +HSPLandroidx/work/Configuration$Builder;->getDefaultProcessName$work_runtime_release()Ljava/lang/String; +HSPLandroidx/work/Configuration$Builder;->getExecutor$work_runtime_release()Ljava/util/concurrent/Executor; +HSPLandroidx/work/Configuration$Builder;->getInitializationExceptionHandler$work_runtime_release()Landroidx/core/util/Consumer; +HSPLandroidx/work/Configuration$Builder;->getInputMergerFactory$work_runtime_release()Landroidx/work/InputMergerFactory; +HSPLandroidx/work/Configuration$Builder;->getLoggingLevel$work_runtime_release()I +HSPLandroidx/work/Configuration$Builder;->getMaxJobSchedulerId$work_runtime_release()I +HSPLandroidx/work/Configuration$Builder;->getMaxSchedulerLimit$work_runtime_release()I +HSPLandroidx/work/Configuration$Builder;->getMinJobSchedulerId$work_runtime_release()I +HSPLandroidx/work/Configuration$Builder;->getRunnableScheduler$work_runtime_release()Landroidx/work/RunnableScheduler; +HSPLandroidx/work/Configuration$Builder;->getSchedulingExceptionHandler$work_runtime_release()Landroidx/core/util/Consumer; +HSPLandroidx/work/Configuration$Builder;->getTaskExecutor$work_runtime_release()Ljava/util/concurrent/Executor; +HSPLandroidx/work/Configuration$Builder;->getWorkerFactory$work_runtime_release()Landroidx/work/WorkerFactory; +Landroidx/work/Configuration$Companion; +HSPLandroidx/work/Configuration$Companion;->()V +HSPLandroidx/work/Configuration$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/work/ConfigurationKt; +HSPLandroidx/work/ConfigurationKt;->()V +HSPLandroidx/work/ConfigurationKt;->access$createDefaultExecutor(Z)Ljava/util/concurrent/Executor; +HSPLandroidx/work/ConfigurationKt;->createDefaultExecutor(Z)Ljava/util/concurrent/Executor; +HSPLandroidx/work/ConfigurationKt;->getDEFAULT_CONTENT_URI_TRIGGERS_WORKERS_LIMIT()I +Landroidx/work/ConfigurationKt$createDefaultExecutor$factory$1; +HSPLandroidx/work/ConfigurationKt$createDefaultExecutor$factory$1;->(Z)V +HSPLandroidx/work/ConfigurationKt$createDefaultExecutor$factory$1;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread; +Landroidx/work/Constraints; +HSPLandroidx/work/Constraints;->()V +HSPLandroidx/work/Constraints;->(Landroidx/work/Constraints;)V +HSPLandroidx/work/Constraints;->(Landroidx/work/NetworkType;ZZZ)V +HSPLandroidx/work/Constraints;->(Landroidx/work/NetworkType;ZZZILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/work/Constraints;->(Landroidx/work/NetworkType;ZZZZ)V +HSPLandroidx/work/Constraints;->(Landroidx/work/NetworkType;ZZZZJJLjava/util/Set;)V +HSPLandroidx/work/Constraints;->(Landroidx/work/NetworkType;ZZZZJJLjava/util/Set;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/work/Constraints;->equals(Ljava/lang/Object;)Z +HSPLandroidx/work/Constraints;->getContentTriggerMaxDelayMillis()J +HSPLandroidx/work/Constraints;->getContentTriggerUpdateDelayMillis()J +HSPLandroidx/work/Constraints;->getContentUriTriggers()Ljava/util/Set; +HSPLandroidx/work/Constraints;->getRequiredNetworkType()Landroidx/work/NetworkType; +HSPLandroidx/work/Constraints;->hasContentUriTriggers()Z +HSPLandroidx/work/Constraints;->hashCode()I +HSPLandroidx/work/Constraints;->requiresBatteryNotLow()Z +HSPLandroidx/work/Constraints;->requiresCharging()Z +HSPLandroidx/work/Constraints;->requiresDeviceIdle()Z +HSPLandroidx/work/Constraints;->requiresStorageNotLow()Z +Landroidx/work/Constraints$Builder; +HSPLandroidx/work/Constraints$Builder;->()V +HSPLandroidx/work/Constraints$Builder;->build()Landroidx/work/Constraints; +HSPLandroidx/work/Constraints$Builder;->setRequiredNetworkType(Landroidx/work/NetworkType;)Landroidx/work/Constraints$Builder; +Landroidx/work/Constraints$Companion; +HSPLandroidx/work/Constraints$Companion;->()V +HSPLandroidx/work/Constraints$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/work/CoroutineWorker; +HSPLandroidx/work/CoroutineWorker;->$r8$lambda$vS4ut6uACXh9vB8D1LtSlAShhGE(Landroidx/work/CoroutineWorker;)V +HSPLandroidx/work/CoroutineWorker;->(Landroid/content/Context;Landroidx/work/WorkerParameters;)V +HSPLandroidx/work/CoroutineWorker;->_init_$lambda$0(Landroidx/work/CoroutineWorker;)V +HSPLandroidx/work/CoroutineWorker;->getCoroutineContext()Lkotlinx/coroutines/CoroutineDispatcher; +PLandroidx/work/CoroutineWorker;->getFuture$work_runtime_release()Landroidx/work/impl/utils/futures/SettableFuture; +HSPLandroidx/work/CoroutineWorker;->startWork()Lcom/google/common/util/concurrent/ListenableFuture; +Landroidx/work/CoroutineWorker$$ExternalSyntheticLambda0; +HSPLandroidx/work/CoroutineWorker$$ExternalSyntheticLambda0;->(Landroidx/work/CoroutineWorker;)V +HSPLandroidx/work/CoroutineWorker$$ExternalSyntheticLambda0;->run()V +Landroidx/work/CoroutineWorker$startWork$1; +HSPLandroidx/work/CoroutineWorker$startWork$1;->(Landroidx/work/CoroutineWorker;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/work/CoroutineWorker$startWork$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/work/CoroutineWorker$startWork$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/work/Data; +HSPLandroidx/work/Data;->()V +HSPLandroidx/work/Data;->(Landroidx/work/Data;)V +HSPLandroidx/work/Data;->(Ljava/util/Map;)V +HSPLandroidx/work/Data;->fromByteArray([B)Landroidx/work/Data; +HSPLandroidx/work/Data;->getKeyValueMap()Ljava/util/Map; +HSPLandroidx/work/Data;->getStringArray(Ljava/lang/String;)[Ljava/lang/String; +HSPLandroidx/work/Data;->hashCode()I +HSPLandroidx/work/Data;->size()I +HSPLandroidx/work/Data;->toByteArrayInternal(Landroidx/work/Data;)[B +HSPLandroidx/work/Data;->toString()Ljava/lang/String; +Landroidx/work/Data$Builder; +HSPLandroidx/work/Data$Builder;->()V +HSPLandroidx/work/Data$Builder;->build()Landroidx/work/Data; +HSPLandroidx/work/Data$Builder;->put(Ljava/lang/String;Ljava/lang/Object;)Landroidx/work/Data$Builder; +HSPLandroidx/work/Data$Builder;->putAll(Ljava/util/Map;)Landroidx/work/Data$Builder; +HSPLandroidx/work/Data$Builder;->putStringArray(Ljava/lang/String;[Ljava/lang/String;)Landroidx/work/Data$Builder; +Landroidx/work/ExistingPeriodicWorkPolicy; +HSPLandroidx/work/ExistingPeriodicWorkPolicy;->$values()[Landroidx/work/ExistingPeriodicWorkPolicy; +HSPLandroidx/work/ExistingPeriodicWorkPolicy;->()V +HSPLandroidx/work/ExistingPeriodicWorkPolicy;->(Ljava/lang/String;I)V +Landroidx/work/ExistingWorkPolicy; +HSPLandroidx/work/ExistingWorkPolicy;->$values()[Landroidx/work/ExistingWorkPolicy; +HSPLandroidx/work/ExistingWorkPolicy;->()V +HSPLandroidx/work/ExistingWorkPolicy;->(Ljava/lang/String;I)V +Landroidx/work/ForegroundUpdater; +Landroidx/work/InputMerger; +HSPLandroidx/work/InputMerger;->()V +Landroidx/work/InputMergerFactory; +HSPLandroidx/work/InputMergerFactory;->()V +HSPLandroidx/work/InputMergerFactory;->createInputMergerWithDefaultFallback(Ljava/lang/String;)Landroidx/work/InputMerger; +Landroidx/work/InputMergerKt; +HSPLandroidx/work/InputMergerKt;->()V +HSPLandroidx/work/InputMergerKt;->fromClassName(Ljava/lang/String;)Landroidx/work/InputMerger; +Landroidx/work/ListenableWorker; +HSPLandroidx/work/ListenableWorker;->(Landroid/content/Context;Landroidx/work/WorkerParameters;)V +HSPLandroidx/work/ListenableWorker;->getApplicationContext()Landroid/content/Context; +HSPLandroidx/work/ListenableWorker;->getInputData()Landroidx/work/Data; +HSPLandroidx/work/ListenableWorker;->getTaskExecutor()Landroidx/work/impl/utils/taskexecutor/TaskExecutor; +HSPLandroidx/work/ListenableWorker;->isUsed()Z +HSPLandroidx/work/ListenableWorker;->setUsed()V +Landroidx/work/ListenableWorker$Result; +HSPLandroidx/work/ListenableWorker$Result;->()V +HSPLandroidx/work/ListenableWorker$Result;->failure()Landroidx/work/ListenableWorker$Result; +PLandroidx/work/ListenableWorker$Result;->success()Landroidx/work/ListenableWorker$Result; +Landroidx/work/ListenableWorker$Result$Failure; +HSPLandroidx/work/ListenableWorker$Result$Failure;->()V +HSPLandroidx/work/ListenableWorker$Result$Failure;->(Landroidx/work/Data;)V +Landroidx/work/ListenableWorker$Result$Success; +PLandroidx/work/ListenableWorker$Result$Success;->()V +PLandroidx/work/ListenableWorker$Result$Success;->(Landroidx/work/Data;)V +HSPLandroidx/work/ListenableWorker$Result$Success;->getOutputData()Landroidx/work/Data; +HSPLandroidx/work/ListenableWorker$Result$Success;->toString()Ljava/lang/String; +Landroidx/work/Logger; +HSPLandroidx/work/Logger;->()V +HSPLandroidx/work/Logger;->(I)V +HSPLandroidx/work/Logger;->get()Landroidx/work/Logger; +HSPLandroidx/work/Logger;->setLogger(Landroidx/work/Logger;)V +HSPLandroidx/work/Logger;->tagWithPrefix(Ljava/lang/String;)Ljava/lang/String; +Landroidx/work/Logger$LogcatLogger; +HSPLandroidx/work/Logger$LogcatLogger;->(I)V +HSPLandroidx/work/Logger$LogcatLogger;->debug(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroidx/work/Logger$LogcatLogger;->info(Ljava/lang/String;Ljava/lang/String;)V +Landroidx/work/NetworkType; +HSPLandroidx/work/NetworkType;->$values()[Landroidx/work/NetworkType; +HSPLandroidx/work/NetworkType;->()V +HSPLandroidx/work/NetworkType;->(Ljava/lang/String;I)V +HSPLandroidx/work/NetworkType;->values()[Landroidx/work/NetworkType; +Landroidx/work/NoOpInputMergerFactory; +HSPLandroidx/work/NoOpInputMergerFactory;->()V +HSPLandroidx/work/NoOpInputMergerFactory;->()V +HSPLandroidx/work/NoOpInputMergerFactory;->createInputMerger(Ljava/lang/String;)Landroidx/work/InputMerger; +HSPLandroidx/work/NoOpInputMergerFactory;->createInputMerger(Ljava/lang/String;)Ljava/lang/Void; +Landroidx/work/OneTimeWorkRequest; +HSPLandroidx/work/OneTimeWorkRequest;->()V +HSPLandroidx/work/OneTimeWorkRequest;->(Landroidx/work/OneTimeWorkRequest$Builder;)V +Landroidx/work/OneTimeWorkRequest$Builder; +HSPLandroidx/work/OneTimeWorkRequest$Builder;->(Ljava/lang/Class;)V +HSPLandroidx/work/OneTimeWorkRequest$Builder;->buildInternal$work_runtime_release()Landroidx/work/OneTimeWorkRequest; +HSPLandroidx/work/OneTimeWorkRequest$Builder;->buildInternal$work_runtime_release()Landroidx/work/WorkRequest; +HSPLandroidx/work/OneTimeWorkRequest$Builder;->getThisObject$work_runtime_release()Landroidx/work/OneTimeWorkRequest$Builder; +HSPLandroidx/work/OneTimeWorkRequest$Builder;->getThisObject$work_runtime_release()Landroidx/work/WorkRequest$Builder; +Landroidx/work/OneTimeWorkRequest$Companion; +HSPLandroidx/work/OneTimeWorkRequest$Companion;->()V +HSPLandroidx/work/OneTimeWorkRequest$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/work/Operation; +HSPLandroidx/work/Operation;->()V +Landroidx/work/Operation$State; +HSPLandroidx/work/Operation$State;->()V +Landroidx/work/Operation$State$FAILURE; +Landroidx/work/Operation$State$IN_PROGRESS; +HSPLandroidx/work/Operation$State$IN_PROGRESS;->()V +HSPLandroidx/work/Operation$State$IN_PROGRESS;->(Landroidx/work/Operation$1;)V +Landroidx/work/Operation$State$SUCCESS; +HSPLandroidx/work/Operation$State$SUCCESS;->()V +HSPLandroidx/work/Operation$State$SUCCESS;->(Landroidx/work/Operation$1;)V +Landroidx/work/OutOfQuotaPolicy; +HSPLandroidx/work/OutOfQuotaPolicy;->$values()[Landroidx/work/OutOfQuotaPolicy; +HSPLandroidx/work/OutOfQuotaPolicy;->()V +HSPLandroidx/work/OutOfQuotaPolicy;->(Ljava/lang/String;I)V +HSPLandroidx/work/OutOfQuotaPolicy;->values()[Landroidx/work/OutOfQuotaPolicy; +Landroidx/work/OverwritingInputMerger; +HSPLandroidx/work/OverwritingInputMerger;->()V +HSPLandroidx/work/OverwritingInputMerger;->merge(Ljava/util/List;)Landroidx/work/Data; +Landroidx/work/PeriodicWorkRequest; +HSPLandroidx/work/PeriodicWorkRequest;->()V +HSPLandroidx/work/PeriodicWorkRequest;->(Landroidx/work/PeriodicWorkRequest$Builder;)V +Landroidx/work/PeriodicWorkRequest$Builder; +HSPLandroidx/work/PeriodicWorkRequest$Builder;->(Ljava/lang/Class;JLjava/util/concurrent/TimeUnit;JLjava/util/concurrent/TimeUnit;)V +HSPLandroidx/work/PeriodicWorkRequest$Builder;->buildInternal$work_runtime_release()Landroidx/work/PeriodicWorkRequest; +HSPLandroidx/work/PeriodicWorkRequest$Builder;->buildInternal$work_runtime_release()Landroidx/work/WorkRequest; +HSPLandroidx/work/PeriodicWorkRequest$Builder;->getThisObject$work_runtime_release()Landroidx/work/PeriodicWorkRequest$Builder; +HSPLandroidx/work/PeriodicWorkRequest$Builder;->getThisObject$work_runtime_release()Landroidx/work/WorkRequest$Builder; +Landroidx/work/PeriodicWorkRequest$Companion; +HSPLandroidx/work/PeriodicWorkRequest$Companion;->()V +HSPLandroidx/work/PeriodicWorkRequest$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/work/ProgressUpdater; +Landroidx/work/R$bool; +Landroidx/work/RunnableScheduler; +Landroidx/work/SystemClock; +HSPLandroidx/work/SystemClock;->()V +HSPLandroidx/work/SystemClock;->currentTimeMillis()J +Landroidx/work/WorkContinuation; +HSPLandroidx/work/WorkContinuation;->()V +Landroidx/work/WorkInfo$State; +HSPLandroidx/work/WorkInfo$State;->$values()[Landroidx/work/WorkInfo$State; +HSPLandroidx/work/WorkInfo$State;->()V +HSPLandroidx/work/WorkInfo$State;->(Ljava/lang/String;I)V +HSPLandroidx/work/WorkInfo$State;->values()[Landroidx/work/WorkInfo$State; +Landroidx/work/WorkManager; +HSPLandroidx/work/WorkManager;->()V +HSPLandroidx/work/WorkManager;->enqueueUniqueWork(Ljava/lang/String;Landroidx/work/ExistingWorkPolicy;Landroidx/work/OneTimeWorkRequest;)Landroidx/work/Operation; +HSPLandroidx/work/WorkManager;->getInstance(Landroid/content/Context;)Landroidx/work/WorkManager; +HSPLandroidx/work/WorkManager;->initialize(Landroid/content/Context;Landroidx/work/Configuration;)V +Landroidx/work/WorkManagerInitializer; +HSPLandroidx/work/WorkManagerInitializer;->()V +HSPLandroidx/work/WorkManagerInitializer;->()V +HSPLandroidx/work/WorkManagerInitializer;->create(Landroid/content/Context;)Landroidx/work/WorkManager; +HSPLandroidx/work/WorkManagerInitializer;->create(Landroid/content/Context;)Ljava/lang/Object; +HSPLandroidx/work/WorkManagerInitializer;->dependencies()Ljava/util/List; +Landroidx/work/WorkRequest; +HSPLandroidx/work/WorkRequest;->()V +HSPLandroidx/work/WorkRequest;->(Ljava/util/UUID;Landroidx/work/impl/model/WorkSpec;Ljava/util/Set;)V +HSPLandroidx/work/WorkRequest;->getId()Ljava/util/UUID; +HSPLandroidx/work/WorkRequest;->getStringId()Ljava/lang/String; +HSPLandroidx/work/WorkRequest;->getTags()Ljava/util/Set; +HSPLandroidx/work/WorkRequest;->getWorkSpec()Landroidx/work/impl/model/WorkSpec; +Landroidx/work/WorkRequest$Builder; +HSPLandroidx/work/WorkRequest$Builder;->(Ljava/lang/Class;)V +HSPLandroidx/work/WorkRequest$Builder;->build()Landroidx/work/WorkRequest; +HSPLandroidx/work/WorkRequest$Builder;->getBackoffCriteriaSet$work_runtime_release()Z +HSPLandroidx/work/WorkRequest$Builder;->getId$work_runtime_release()Ljava/util/UUID; +HSPLandroidx/work/WorkRequest$Builder;->getTags$work_runtime_release()Ljava/util/Set; +HSPLandroidx/work/WorkRequest$Builder;->getWorkSpec$work_runtime_release()Landroidx/work/impl/model/WorkSpec; +HSPLandroidx/work/WorkRequest$Builder;->setConstraints(Landroidx/work/Constraints;)Landroidx/work/WorkRequest$Builder; +HSPLandroidx/work/WorkRequest$Builder;->setId(Ljava/util/UUID;)Landroidx/work/WorkRequest$Builder; +HSPLandroidx/work/WorkRequest$Builder;->setInputData(Landroidx/work/Data;)Landroidx/work/WorkRequest$Builder; +Landroidx/work/WorkRequest$Companion; +HSPLandroidx/work/WorkRequest$Companion;->()V +HSPLandroidx/work/WorkRequest$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/work/WorkerFactory; +HSPLandroidx/work/WorkerFactory;->()V +HSPLandroidx/work/WorkerFactory;->()V +HSPLandroidx/work/WorkerFactory;->createWorkerWithDefaultFallback(Landroid/content/Context;Ljava/lang/String;Landroidx/work/WorkerParameters;)Landroidx/work/ListenableWorker; +HSPLandroidx/work/WorkerFactory;->getDefaultWorkerFactory()Landroidx/work/WorkerFactory; +Landroidx/work/WorkerFactory$1; +HSPLandroidx/work/WorkerFactory$1;->()V +HSPLandroidx/work/WorkerFactory$1;->createWorker(Landroid/content/Context;Ljava/lang/String;Landroidx/work/WorkerParameters;)Landroidx/work/ListenableWorker; +Landroidx/work/WorkerParameters; +HSPLandroidx/work/WorkerParameters;->(Ljava/util/UUID;Landroidx/work/Data;Ljava/util/Collection;Landroidx/work/WorkerParameters$RuntimeExtras;IILjava/util/concurrent/Executor;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;Landroidx/work/WorkerFactory;Landroidx/work/ProgressUpdater;Landroidx/work/ForegroundUpdater;)V +HSPLandroidx/work/WorkerParameters;->getForegroundUpdater()Landroidx/work/ForegroundUpdater; +HSPLandroidx/work/WorkerParameters;->getInputData()Landroidx/work/Data; +HSPLandroidx/work/WorkerParameters;->getTaskExecutor()Landroidx/work/impl/utils/taskexecutor/TaskExecutor; +Landroidx/work/WorkerParameters$RuntimeExtras; +HSPLandroidx/work/WorkerParameters$RuntimeExtras;->()V +Landroidx/work/impl/AutoMigration_14_15; +HSPLandroidx/work/impl/AutoMigration_14_15;->()V +Landroidx/work/impl/AutoMigration_19_20; +HSPLandroidx/work/impl/AutoMigration_19_20;->()V +Landroidx/work/impl/CleanupCallback; +HSPLandroidx/work/impl/CleanupCallback;->(Landroidx/work/Clock;)V +HSPLandroidx/work/impl/CleanupCallback;->getPruneDate()J +HSPLandroidx/work/impl/CleanupCallback;->getPruneSQL()Ljava/lang/String; +HSPLandroidx/work/impl/CleanupCallback;->onOpen(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +Landroidx/work/impl/DefaultRunnableScheduler; +HSPLandroidx/work/impl/DefaultRunnableScheduler;->()V +HSPLandroidx/work/impl/DefaultRunnableScheduler;->cancel(Ljava/lang/Runnable;)V +HSPLandroidx/work/impl/DefaultRunnableScheduler;->scheduleWithDelay(JLjava/lang/Runnable;)V +Landroidx/work/impl/ExecutionListener; +Landroidx/work/impl/Migration_11_12; +HSPLandroidx/work/impl/Migration_11_12;->()V +HSPLandroidx/work/impl/Migration_11_12;->()V +Landroidx/work/impl/Migration_12_13; +HSPLandroidx/work/impl/Migration_12_13;->()V +HSPLandroidx/work/impl/Migration_12_13;->()V +Landroidx/work/impl/Migration_15_16; +HSPLandroidx/work/impl/Migration_15_16;->()V +HSPLandroidx/work/impl/Migration_15_16;->()V +Landroidx/work/impl/Migration_16_17; +HSPLandroidx/work/impl/Migration_16_17;->()V +HSPLandroidx/work/impl/Migration_16_17;->()V +Landroidx/work/impl/Migration_1_2; +HSPLandroidx/work/impl/Migration_1_2;->()V +HSPLandroidx/work/impl/Migration_1_2;->()V +Landroidx/work/impl/Migration_3_4; +HSPLandroidx/work/impl/Migration_3_4;->()V +HSPLandroidx/work/impl/Migration_3_4;->()V +Landroidx/work/impl/Migration_4_5; +HSPLandroidx/work/impl/Migration_4_5;->()V +HSPLandroidx/work/impl/Migration_4_5;->()V +Landroidx/work/impl/Migration_6_7; +HSPLandroidx/work/impl/Migration_6_7;->()V +HSPLandroidx/work/impl/Migration_6_7;->()V +Landroidx/work/impl/Migration_7_8; +HSPLandroidx/work/impl/Migration_7_8;->()V +HSPLandroidx/work/impl/Migration_7_8;->()V +Landroidx/work/impl/Migration_8_9; +HSPLandroidx/work/impl/Migration_8_9;->()V +HSPLandroidx/work/impl/Migration_8_9;->()V +Landroidx/work/impl/OperationImpl; +HSPLandroidx/work/impl/OperationImpl;->()V +HSPLandroidx/work/impl/OperationImpl;->markState(Landroidx/work/Operation$State;)V +Landroidx/work/impl/Processor; +HSPLandroidx/work/impl/Processor;->()V +HSPLandroidx/work/impl/Processor;->(Landroid/content/Context;Landroidx/work/Configuration;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;Landroidx/work/impl/WorkDatabase;)V +HSPLandroidx/work/impl/Processor;->addExecutionListener(Landroidx/work/impl/ExecutionListener;)V +HSPLandroidx/work/impl/Processor;->cleanUpWorkerUnsafe(Ljava/lang/String;)Landroidx/work/impl/WorkerWrapper; +HSPLandroidx/work/impl/Processor;->getWorkerWrapperUnsafe(Ljava/lang/String;)Landroidx/work/impl/WorkerWrapper; +HSPLandroidx/work/impl/Processor;->isCancelled(Ljava/lang/String;)Z +HSPLandroidx/work/impl/Processor;->isEnqueued(Ljava/lang/String;)Z +HSPLandroidx/work/impl/Processor;->lambda$startWork$0$androidx-work-impl-Processor(Ljava/util/ArrayList;Ljava/lang/String;)Landroidx/work/impl/model/WorkSpec; +HSPLandroidx/work/impl/Processor;->lambda$startWork$1$androidx-work-impl-Processor(Lcom/google/common/util/concurrent/ListenableFuture;Landroidx/work/impl/WorkerWrapper;)V +HSPLandroidx/work/impl/Processor;->onExecuted(Landroidx/work/impl/WorkerWrapper;Z)V +HSPLandroidx/work/impl/Processor;->removeExecutionListener(Landroidx/work/impl/ExecutionListener;)V +HSPLandroidx/work/impl/Processor;->startWork(Landroidx/work/impl/StartStopToken;Landroidx/work/WorkerParameters$RuntimeExtras;)Z +Landroidx/work/impl/Processor$$ExternalSyntheticLambda0; +HSPLandroidx/work/impl/Processor$$ExternalSyntheticLambda0;->(Landroidx/work/impl/Processor;Ljava/util/ArrayList;Ljava/lang/String;)V +HSPLandroidx/work/impl/Processor$$ExternalSyntheticLambda0;->call()Ljava/lang/Object; +Landroidx/work/impl/Processor$$ExternalSyntheticLambda1; +HSPLandroidx/work/impl/Processor$$ExternalSyntheticLambda1;->(Landroidx/work/impl/Processor;Lcom/google/common/util/concurrent/ListenableFuture;Landroidx/work/impl/WorkerWrapper;)V +HSPLandroidx/work/impl/Processor$$ExternalSyntheticLambda1;->run()V +Landroidx/work/impl/RescheduleMigration; +HSPLandroidx/work/impl/RescheduleMigration;->(Landroid/content/Context;II)V +Landroidx/work/impl/Scheduler; +Landroidx/work/impl/Schedulers; +HSPLandroidx/work/impl/Schedulers;->()V +HSPLandroidx/work/impl/Schedulers;->createBestAvailableBackgroundScheduler(Landroid/content/Context;Landroidx/work/impl/WorkDatabase;Landroidx/work/Configuration;)Landroidx/work/impl/Scheduler; +HSPLandroidx/work/impl/Schedulers;->lambda$registerRescheduling$0(Ljava/util/List;Landroidx/work/impl/model/WorkGenerationalId;Landroidx/work/Configuration;Landroidx/work/impl/WorkDatabase;)V +HSPLandroidx/work/impl/Schedulers;->lambda$registerRescheduling$1(Ljava/util/concurrent/Executor;Ljava/util/List;Landroidx/work/Configuration;Landroidx/work/impl/WorkDatabase;Landroidx/work/impl/model/WorkGenerationalId;Z)V +HSPLandroidx/work/impl/Schedulers;->markScheduled(Landroidx/work/impl/model/WorkSpecDao;Landroidx/work/Clock;Ljava/util/List;)V +HSPLandroidx/work/impl/Schedulers;->registerRescheduling(Ljava/util/List;Landroidx/work/impl/Processor;Ljava/util/concurrent/Executor;Landroidx/work/impl/WorkDatabase;Landroidx/work/Configuration;)V +HSPLandroidx/work/impl/Schedulers;->schedule(Landroidx/work/Configuration;Landroidx/work/impl/WorkDatabase;Ljava/util/List;)V +Landroidx/work/impl/Schedulers$$ExternalSyntheticLambda0; +HSPLandroidx/work/impl/Schedulers$$ExternalSyntheticLambda0;->(Ljava/util/List;Landroidx/work/impl/model/WorkGenerationalId;Landroidx/work/Configuration;Landroidx/work/impl/WorkDatabase;)V +HSPLandroidx/work/impl/Schedulers$$ExternalSyntheticLambda0;->run()V +Landroidx/work/impl/Schedulers$$ExternalSyntheticLambda1; +HSPLandroidx/work/impl/Schedulers$$ExternalSyntheticLambda1;->(Ljava/util/concurrent/Executor;Ljava/util/List;Landroidx/work/Configuration;Landroidx/work/impl/WorkDatabase;)V +HSPLandroidx/work/impl/Schedulers$$ExternalSyntheticLambda1;->onExecuted(Landroidx/work/impl/model/WorkGenerationalId;Z)V +Landroidx/work/impl/StartStopToken; +HSPLandroidx/work/impl/StartStopToken;->(Landroidx/work/impl/model/WorkGenerationalId;)V +HSPLandroidx/work/impl/StartStopToken;->getId()Landroidx/work/impl/model/WorkGenerationalId; +Landroidx/work/impl/StartStopTokens; +HSPLandroidx/work/impl/StartStopTokens;->()V +HSPLandroidx/work/impl/StartStopTokens;->contains(Landroidx/work/impl/model/WorkGenerationalId;)Z +HSPLandroidx/work/impl/StartStopTokens;->remove(Landroidx/work/impl/model/WorkGenerationalId;)Landroidx/work/impl/StartStopToken; +HSPLandroidx/work/impl/StartStopTokens;->remove(Ljava/lang/String;)Ljava/util/List; +HSPLandroidx/work/impl/StartStopTokens;->tokenFor(Landroidx/work/impl/model/WorkGenerationalId;)Landroidx/work/impl/StartStopToken; +Landroidx/work/impl/WorkContinuationImpl; +HSPLandroidx/work/impl/WorkContinuationImpl;->()V +HSPLandroidx/work/impl/WorkContinuationImpl;->(Landroidx/work/impl/WorkManagerImpl;Ljava/lang/String;Landroidx/work/ExistingWorkPolicy;Ljava/util/List;)V +HSPLandroidx/work/impl/WorkContinuationImpl;->(Landroidx/work/impl/WorkManagerImpl;Ljava/lang/String;Landroidx/work/ExistingWorkPolicy;Ljava/util/List;Ljava/util/List;)V +HSPLandroidx/work/impl/WorkContinuationImpl;->enqueue()Landroidx/work/Operation; +HSPLandroidx/work/impl/WorkContinuationImpl;->getExistingWorkPolicy()Landroidx/work/ExistingWorkPolicy; +HSPLandroidx/work/impl/WorkContinuationImpl;->getIds()Ljava/util/List; +HSPLandroidx/work/impl/WorkContinuationImpl;->getName()Ljava/lang/String; +HSPLandroidx/work/impl/WorkContinuationImpl;->getParents()Ljava/util/List; +HSPLandroidx/work/impl/WorkContinuationImpl;->getWork()Ljava/util/List; +HSPLandroidx/work/impl/WorkContinuationImpl;->getWorkManagerImpl()Landroidx/work/impl/WorkManagerImpl; +HSPLandroidx/work/impl/WorkContinuationImpl;->hasCycles()Z +HSPLandroidx/work/impl/WorkContinuationImpl;->hasCycles(Landroidx/work/impl/WorkContinuationImpl;Ljava/util/Set;)Z +HSPLandroidx/work/impl/WorkContinuationImpl;->markEnqueued()V +HSPLandroidx/work/impl/WorkContinuationImpl;->prerequisitesFor(Landroidx/work/impl/WorkContinuationImpl;)Ljava/util/Set; +Landroidx/work/impl/WorkDatabase; +HSPLandroidx/work/impl/WorkDatabase;->()V +HSPLandroidx/work/impl/WorkDatabase;->()V +Landroidx/work/impl/WorkDatabase$Companion; +HSPLandroidx/work/impl/WorkDatabase$Companion;->$r8$lambda$ZkS5S0p_73DOI66Tm39UHOpqbt0(Landroid/content/Context;Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration;)Landroidx/sqlite/db/SupportSQLiteOpenHelper; +HSPLandroidx/work/impl/WorkDatabase$Companion;->()V +HSPLandroidx/work/impl/WorkDatabase$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/work/impl/WorkDatabase$Companion;->create$lambda$0(Landroid/content/Context;Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration;)Landroidx/sqlite/db/SupportSQLiteOpenHelper; +HSPLandroidx/work/impl/WorkDatabase$Companion;->create(Landroid/content/Context;Ljava/util/concurrent/Executor;Landroidx/work/Clock;Z)Landroidx/work/impl/WorkDatabase; +Landroidx/work/impl/WorkDatabase$Companion$$ExternalSyntheticLambda0; +HSPLandroidx/work/impl/WorkDatabase$Companion$$ExternalSyntheticLambda0;->(Landroid/content/Context;)V +HSPLandroidx/work/impl/WorkDatabase$Companion$$ExternalSyntheticLambda0;->create(Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration;)Landroidx/sqlite/db/SupportSQLiteOpenHelper; +Landroidx/work/impl/WorkDatabaseKt; +HSPLandroidx/work/impl/WorkDatabaseKt;->()V +Landroidx/work/impl/WorkDatabasePathHelper; +HSPLandroidx/work/impl/WorkDatabasePathHelper;->()V +HSPLandroidx/work/impl/WorkDatabasePathHelper;->()V +HSPLandroidx/work/impl/WorkDatabasePathHelper;->getDefaultDatabasePath(Landroid/content/Context;)Ljava/io/File; +HSPLandroidx/work/impl/WorkDatabasePathHelper;->migrateDatabase(Landroid/content/Context;)V +Landroidx/work/impl/WorkDatabase_AutoMigration_13_14_Impl; +HSPLandroidx/work/impl/WorkDatabase_AutoMigration_13_14_Impl;->()V +Landroidx/work/impl/WorkDatabase_AutoMigration_14_15_Impl; +HSPLandroidx/work/impl/WorkDatabase_AutoMigration_14_15_Impl;->()V +Landroidx/work/impl/WorkDatabase_AutoMigration_16_17_Impl; +HSPLandroidx/work/impl/WorkDatabase_AutoMigration_16_17_Impl;->()V +Landroidx/work/impl/WorkDatabase_AutoMigration_17_18_Impl; +HSPLandroidx/work/impl/WorkDatabase_AutoMigration_17_18_Impl;->()V +Landroidx/work/impl/WorkDatabase_AutoMigration_18_19_Impl; +HSPLandroidx/work/impl/WorkDatabase_AutoMigration_18_19_Impl;->()V +Landroidx/work/impl/WorkDatabase_AutoMigration_19_20_Impl; +HSPLandroidx/work/impl/WorkDatabase_AutoMigration_19_20_Impl;->()V +Landroidx/work/impl/WorkDatabase_Impl; +HSPLandroidx/work/impl/WorkDatabase_Impl;->()V +HSPLandroidx/work/impl/WorkDatabase_Impl;->access$1000(Landroidx/work/impl/WorkDatabase_Impl;)Ljava/util/List; +HSPLandroidx/work/impl/WorkDatabase_Impl;->access$602(Landroidx/work/impl/WorkDatabase_Impl;Landroidx/sqlite/db/SupportSQLiteDatabase;)Landroidx/sqlite/db/SupportSQLiteDatabase; +HSPLandroidx/work/impl/WorkDatabase_Impl;->access$700(Landroidx/work/impl/WorkDatabase_Impl;Landroidx/sqlite/db/SupportSQLiteDatabase;)V +HSPLandroidx/work/impl/WorkDatabase_Impl;->access$800(Landroidx/work/impl/WorkDatabase_Impl;)Ljava/util/List; +HSPLandroidx/work/impl/WorkDatabase_Impl;->access$900(Landroidx/work/impl/WorkDatabase_Impl;)Ljava/util/List; +HSPLandroidx/work/impl/WorkDatabase_Impl;->createInvalidationTracker()Landroidx/room/InvalidationTracker; +HSPLandroidx/work/impl/WorkDatabase_Impl;->createOpenHelper(Landroidx/room/DatabaseConfiguration;)Landroidx/sqlite/db/SupportSQLiteOpenHelper; +HSPLandroidx/work/impl/WorkDatabase_Impl;->dependencyDao()Landroidx/work/impl/model/DependencyDao; +HSPLandroidx/work/impl/WorkDatabase_Impl;->getAutoMigrations(Ljava/util/Map;)Ljava/util/List; +HSPLandroidx/work/impl/WorkDatabase_Impl;->getRequiredAutoMigrationSpecs()Ljava/util/Set; +HSPLandroidx/work/impl/WorkDatabase_Impl;->getRequiredTypeConverters()Ljava/util/Map; +HSPLandroidx/work/impl/WorkDatabase_Impl;->preferenceDao()Landroidx/work/impl/model/PreferenceDao; +HSPLandroidx/work/impl/WorkDatabase_Impl;->systemIdInfoDao()Landroidx/work/impl/model/SystemIdInfoDao; +HSPLandroidx/work/impl/WorkDatabase_Impl;->workNameDao()Landroidx/work/impl/model/WorkNameDao; +HSPLandroidx/work/impl/WorkDatabase_Impl;->workProgressDao()Landroidx/work/impl/model/WorkProgressDao; +HSPLandroidx/work/impl/WorkDatabase_Impl;->workSpecDao()Landroidx/work/impl/model/WorkSpecDao; +HSPLandroidx/work/impl/WorkDatabase_Impl;->workTagDao()Landroidx/work/impl/model/WorkTagDao; +Landroidx/work/impl/WorkDatabase_Impl$1; +HSPLandroidx/work/impl/WorkDatabase_Impl$1;->(Landroidx/work/impl/WorkDatabase_Impl;I)V +HSPLandroidx/work/impl/WorkDatabase_Impl$1;->onOpen(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +Landroidx/work/impl/WorkLauncher; +HSPLandroidx/work/impl/WorkLauncher;->startWork(Landroidx/work/impl/StartStopToken;)V +Landroidx/work/impl/WorkLauncherImpl; +HSPLandroidx/work/impl/WorkLauncherImpl;->(Landroidx/work/impl/Processor;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;)V +HSPLandroidx/work/impl/WorkLauncherImpl;->startWork(Landroidx/work/impl/StartStopToken;Landroidx/work/WorkerParameters$RuntimeExtras;)V +Landroidx/work/impl/WorkManagerImpl; +HSPLandroidx/work/impl/WorkManagerImpl;->()V +HSPLandroidx/work/impl/WorkManagerImpl;->(Landroid/content/Context;Landroidx/work/Configuration;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;Landroidx/work/impl/WorkDatabase;Ljava/util/List;Landroidx/work/impl/Processor;Landroidx/work/impl/constraints/trackers/Trackers;)V +HSPLandroidx/work/impl/WorkManagerImpl;->createWorkContinuationForUniquePeriodicWork(Ljava/lang/String;Landroidx/work/ExistingPeriodicWorkPolicy;Landroidx/work/PeriodicWorkRequest;)Landroidx/work/impl/WorkContinuationImpl; +HSPLandroidx/work/impl/WorkManagerImpl;->enqueueUniquePeriodicWork(Ljava/lang/String;Landroidx/work/ExistingPeriodicWorkPolicy;Landroidx/work/PeriodicWorkRequest;)Landroidx/work/Operation; +HSPLandroidx/work/impl/WorkManagerImpl;->enqueueUniqueWork(Ljava/lang/String;Landroidx/work/ExistingWorkPolicy;Ljava/util/List;)Landroidx/work/Operation; +HSPLandroidx/work/impl/WorkManagerImpl;->getApplicationContext()Landroid/content/Context; +HSPLandroidx/work/impl/WorkManagerImpl;->getConfiguration()Landroidx/work/Configuration; +HSPLandroidx/work/impl/WorkManagerImpl;->getInstance()Landroidx/work/impl/WorkManagerImpl; +HSPLandroidx/work/impl/WorkManagerImpl;->getInstance(Landroid/content/Context;)Landroidx/work/impl/WorkManagerImpl; +HSPLandroidx/work/impl/WorkManagerImpl;->getPreferenceUtils()Landroidx/work/impl/utils/PreferenceUtils; +HSPLandroidx/work/impl/WorkManagerImpl;->getProcessor()Landroidx/work/impl/Processor; +HSPLandroidx/work/impl/WorkManagerImpl;->getSchedulers()Ljava/util/List; +HSPLandroidx/work/impl/WorkManagerImpl;->getWorkDatabase()Landroidx/work/impl/WorkDatabase; +HSPLandroidx/work/impl/WorkManagerImpl;->getWorkTaskExecutor()Landroidx/work/impl/utils/taskexecutor/TaskExecutor; +HSPLandroidx/work/impl/WorkManagerImpl;->initialize(Landroid/content/Context;Landroidx/work/Configuration;)V +HSPLandroidx/work/impl/WorkManagerImpl;->onForceStopRunnableCompleted()V +HSPLandroidx/work/impl/WorkManagerImpl;->rescheduleEligibleWork()V +Landroidx/work/impl/WorkManagerImpl$Api24Impl; +HSPLandroidx/work/impl/WorkManagerImpl$Api24Impl;->isDeviceProtectedStorage(Landroid/content/Context;)Z +Landroidx/work/impl/WorkManagerImplExtKt; +HSPLandroidx/work/impl/WorkManagerImplExtKt;->access$createSchedulers(Landroid/content/Context;Landroidx/work/Configuration;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;Landroidx/work/impl/WorkDatabase;Landroidx/work/impl/constraints/trackers/Trackers;Landroidx/work/impl/Processor;)Ljava/util/List; +HSPLandroidx/work/impl/WorkManagerImplExtKt;->createSchedulers(Landroid/content/Context;Landroidx/work/Configuration;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;Landroidx/work/impl/WorkDatabase;Landroidx/work/impl/constraints/trackers/Trackers;Landroidx/work/impl/Processor;)Ljava/util/List; +HSPLandroidx/work/impl/WorkManagerImplExtKt;->createWorkManager$default(Landroid/content/Context;Landroidx/work/Configuration;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;Landroidx/work/impl/WorkDatabase;Landroidx/work/impl/constraints/trackers/Trackers;Landroidx/work/impl/Processor;Lkotlin/jvm/functions/Function6;ILjava/lang/Object;)Landroidx/work/impl/WorkManagerImpl; +HSPLandroidx/work/impl/WorkManagerImplExtKt;->createWorkManager(Landroid/content/Context;Landroidx/work/Configuration;)Landroidx/work/impl/WorkManagerImpl; +HSPLandroidx/work/impl/WorkManagerImplExtKt;->createWorkManager(Landroid/content/Context;Landroidx/work/Configuration;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;Landroidx/work/impl/WorkDatabase;Landroidx/work/impl/constraints/trackers/Trackers;Landroidx/work/impl/Processor;Lkotlin/jvm/functions/Function6;)Landroidx/work/impl/WorkManagerImpl; +Landroidx/work/impl/WorkManagerImplExtKt$WorkManagerImpl$1; +HSPLandroidx/work/impl/WorkManagerImplExtKt$WorkManagerImpl$1;->()V +HSPLandroidx/work/impl/WorkManagerImplExtKt$WorkManagerImpl$1;->()V +HSPLandroidx/work/impl/WorkManagerImplExtKt$WorkManagerImpl$1;->invoke(Landroid/content/Context;Landroidx/work/Configuration;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;Landroidx/work/impl/WorkDatabase;Landroidx/work/impl/constraints/trackers/Trackers;Landroidx/work/impl/Processor;)Ljava/util/List; +HSPLandroidx/work/impl/WorkManagerImplExtKt$WorkManagerImpl$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/work/impl/WorkMigration9To10; +HSPLandroidx/work/impl/WorkMigration9To10;->(Landroid/content/Context;)V +Landroidx/work/impl/WorkerWrapper; +HSPLandroidx/work/impl/WorkerWrapper;->()V +HSPLandroidx/work/impl/WorkerWrapper;->(Landroidx/work/impl/WorkerWrapper$Builder;)V +HSPLandroidx/work/impl/WorkerWrapper;->createWorkDescription(Ljava/util/List;)Ljava/lang/String; +HSPLandroidx/work/impl/WorkerWrapper;->getFuture()Lcom/google/common/util/concurrent/ListenableFuture; +HSPLandroidx/work/impl/WorkerWrapper;->getWorkGenerationalId()Landroidx/work/impl/model/WorkGenerationalId; +HSPLandroidx/work/impl/WorkerWrapper;->handleResult(Landroidx/work/ListenableWorker$Result;)V +HSPLandroidx/work/impl/WorkerWrapper;->lambda$runWorker$0$androidx-work-impl-WorkerWrapper(Lcom/google/common/util/concurrent/ListenableFuture;)V +HSPLandroidx/work/impl/WorkerWrapper;->onWorkFinished()V +HSPLandroidx/work/impl/WorkerWrapper;->resolve(Z)V +HSPLandroidx/work/impl/WorkerWrapper;->run()V +HSPLandroidx/work/impl/WorkerWrapper;->runWorker()V +HSPLandroidx/work/impl/WorkerWrapper;->setSucceededAndResolve()V +HSPLandroidx/work/impl/WorkerWrapper;->tryCheckForInterruptionAndResolve()Z +HSPLandroidx/work/impl/WorkerWrapper;->trySetRunning()Z +Landroidx/work/impl/WorkerWrapper$$ExternalSyntheticLambda0; +HSPLandroidx/work/impl/WorkerWrapper$$ExternalSyntheticLambda0;->(Landroidx/work/impl/WorkerWrapper;Lcom/google/common/util/concurrent/ListenableFuture;)V +HSPLandroidx/work/impl/WorkerWrapper$$ExternalSyntheticLambda0;->run()V +Landroidx/work/impl/WorkerWrapper$1; +HSPLandroidx/work/impl/WorkerWrapper$1;->(Landroidx/work/impl/WorkerWrapper;Lcom/google/common/util/concurrent/ListenableFuture;)V +HSPLandroidx/work/impl/WorkerWrapper$1;->run()V +Landroidx/work/impl/WorkerWrapper$2; +HSPLandroidx/work/impl/WorkerWrapper$2;->(Landroidx/work/impl/WorkerWrapper;Ljava/lang/String;)V +HSPLandroidx/work/impl/WorkerWrapper$2;->run()V +Landroidx/work/impl/WorkerWrapper$Builder; +HSPLandroidx/work/impl/WorkerWrapper$Builder;->(Landroid/content/Context;Landroidx/work/Configuration;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;Landroidx/work/impl/foreground/ForegroundProcessor;Landroidx/work/impl/WorkDatabase;Landroidx/work/impl/model/WorkSpec;Ljava/util/List;)V +HSPLandroidx/work/impl/WorkerWrapper$Builder;->access$000(Landroidx/work/impl/WorkerWrapper$Builder;)Ljava/util/List; +HSPLandroidx/work/impl/WorkerWrapper$Builder;->build()Landroidx/work/impl/WorkerWrapper; +HSPLandroidx/work/impl/WorkerWrapper$Builder;->withRuntimeExtras(Landroidx/work/WorkerParameters$RuntimeExtras;)Landroidx/work/impl/WorkerWrapper$Builder; +Landroidx/work/impl/background/greedy/DelayedWorkTracker; +HSPLandroidx/work/impl/background/greedy/DelayedWorkTracker;->()V +HSPLandroidx/work/impl/background/greedy/DelayedWorkTracker;->(Landroidx/work/impl/Scheduler;Landroidx/work/RunnableScheduler;Landroidx/work/Clock;)V +HSPLandroidx/work/impl/background/greedy/DelayedWorkTracker;->schedule(Landroidx/work/impl/model/WorkSpec;J)V +HSPLandroidx/work/impl/background/greedy/DelayedWorkTracker;->unschedule(Ljava/lang/String;)V +Landroidx/work/impl/background/greedy/DelayedWorkTracker$1; +HSPLandroidx/work/impl/background/greedy/DelayedWorkTracker$1;->(Landroidx/work/impl/background/greedy/DelayedWorkTracker;Landroidx/work/impl/model/WorkSpec;)V +Landroidx/work/impl/background/greedy/GreedyScheduler; +HSPLandroidx/work/impl/background/greedy/GreedyScheduler;->()V +HSPLandroidx/work/impl/background/greedy/GreedyScheduler;->(Landroid/content/Context;Landroidx/work/Configuration;Landroidx/work/impl/constraints/trackers/Trackers;Landroidx/work/impl/Processor;Landroidx/work/impl/WorkLauncher;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;)V +HSPLandroidx/work/impl/background/greedy/GreedyScheduler;->cancel(Ljava/lang/String;)V +HSPLandroidx/work/impl/background/greedy/GreedyScheduler;->checkDefaultProcess()V +HSPLandroidx/work/impl/background/greedy/GreedyScheduler;->hasLimitedSchedulingSlots()Z +HSPLandroidx/work/impl/background/greedy/GreedyScheduler;->onConstraintsStateChanged(Landroidx/work/impl/model/WorkSpec;Landroidx/work/impl/constraints/ConstraintsState;)V +HSPLandroidx/work/impl/background/greedy/GreedyScheduler;->onExecuted(Landroidx/work/impl/model/WorkGenerationalId;Z)V +HSPLandroidx/work/impl/background/greedy/GreedyScheduler;->registerExecutionListenerIfNeeded()V +HSPLandroidx/work/impl/background/greedy/GreedyScheduler;->removeConstraintTrackingFor(Landroidx/work/impl/model/WorkGenerationalId;)V +HSPLandroidx/work/impl/background/greedy/GreedyScheduler;->schedule([Landroidx/work/impl/model/WorkSpec;)V +HSPLandroidx/work/impl/background/greedy/GreedyScheduler;->throttleIfNeeded(Landroidx/work/impl/model/WorkSpec;)J +Landroidx/work/impl/background/greedy/GreedyScheduler$AttemptData; +HSPLandroidx/work/impl/background/greedy/GreedyScheduler$AttemptData;->(IJ)V +HSPLandroidx/work/impl/background/greedy/GreedyScheduler$AttemptData;->(IJLandroidx/work/impl/background/greedy/GreedyScheduler$1;)V +Landroidx/work/impl/background/greedy/TimeLimiter; +HSPLandroidx/work/impl/background/greedy/TimeLimiter;->(Landroidx/work/RunnableScheduler;Landroidx/work/impl/WorkLauncher;)V +HSPLandroidx/work/impl/background/greedy/TimeLimiter;->(Landroidx/work/RunnableScheduler;Landroidx/work/impl/WorkLauncher;J)V +HSPLandroidx/work/impl/background/greedy/TimeLimiter;->(Landroidx/work/RunnableScheduler;Landroidx/work/impl/WorkLauncher;JILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/work/impl/background/greedy/TimeLimiter;->cancel(Landroidx/work/impl/StartStopToken;)V +HSPLandroidx/work/impl/background/greedy/TimeLimiter;->track(Landroidx/work/impl/StartStopToken;)V +Landroidx/work/impl/background/greedy/TimeLimiter$$ExternalSyntheticLambda0; +HSPLandroidx/work/impl/background/greedy/TimeLimiter$$ExternalSyntheticLambda0;->(Landroidx/work/impl/background/greedy/TimeLimiter;Landroidx/work/impl/StartStopToken;)V +Landroidx/work/impl/background/systemalarm/RescheduleReceiver; +Landroidx/work/impl/background/systemjob/SystemJobInfoConverter; +HSPLandroidx/work/impl/background/systemjob/SystemJobInfoConverter;->()V +HSPLandroidx/work/impl/background/systemjob/SystemJobInfoConverter;->(Landroid/content/Context;Landroidx/work/Clock;)V +HSPLandroidx/work/impl/background/systemjob/SystemJobInfoConverter;->convert(Landroidx/work/impl/model/WorkSpec;I)Landroid/app/job/JobInfo; +HSPLandroidx/work/impl/background/systemjob/SystemJobInfoConverter;->convertNetworkType(Landroidx/work/NetworkType;)I +HSPLandroidx/work/impl/background/systemjob/SystemJobInfoConverter;->setRequiredNetwork(Landroid/app/job/JobInfo$Builder;Landroidx/work/NetworkType;)V +Landroidx/work/impl/background/systemjob/SystemJobInfoConverter$1; +HSPLandroidx/work/impl/background/systemjob/SystemJobInfoConverter$1;->()V +Landroidx/work/impl/background/systemjob/SystemJobScheduler; +HSPLandroidx/work/impl/background/systemjob/SystemJobScheduler;->()V +HSPLandroidx/work/impl/background/systemjob/SystemJobScheduler;->(Landroid/content/Context;Landroidx/work/impl/WorkDatabase;Landroidx/work/Configuration;)V +HSPLandroidx/work/impl/background/systemjob/SystemJobScheduler;->(Landroid/content/Context;Landroidx/work/impl/WorkDatabase;Landroidx/work/Configuration;Landroid/app/job/JobScheduler;Landroidx/work/impl/background/systemjob/SystemJobInfoConverter;)V +HSPLandroidx/work/impl/background/systemjob/SystemJobScheduler;->cancel(Ljava/lang/String;)V +HSPLandroidx/work/impl/background/systemjob/SystemJobScheduler;->cancelAll(Landroid/content/Context;)V +HSPLandroidx/work/impl/background/systemjob/SystemJobScheduler;->cancelJobById(Landroid/app/job/JobScheduler;I)V +HSPLandroidx/work/impl/background/systemjob/SystemJobScheduler;->getPendingJobIds(Landroid/content/Context;Landroid/app/job/JobScheduler;Ljava/lang/String;)Ljava/util/List; +HSPLandroidx/work/impl/background/systemjob/SystemJobScheduler;->getPendingJobs(Landroid/content/Context;Landroid/app/job/JobScheduler;)Ljava/util/List; +HSPLandroidx/work/impl/background/systemjob/SystemJobScheduler;->getWorkGenerationalIdFromJobInfo(Landroid/app/job/JobInfo;)Landroidx/work/impl/model/WorkGenerationalId; +HSPLandroidx/work/impl/background/systemjob/SystemJobScheduler;->hasLimitedSchedulingSlots()Z +HSPLandroidx/work/impl/background/systemjob/SystemJobScheduler;->reconcileJobs(Landroid/content/Context;Landroidx/work/impl/WorkDatabase;)Z +HSPLandroidx/work/impl/background/systemjob/SystemJobScheduler;->schedule([Landroidx/work/impl/model/WorkSpec;)V +HSPLandroidx/work/impl/background/systemjob/SystemJobScheduler;->scheduleInternal(Landroidx/work/impl/model/WorkSpec;I)V +Landroidx/work/impl/background/systemjob/SystemJobService; +HSPLandroidx/work/impl/background/systemjob/SystemJobService;->()V +HSPLandroidx/work/impl/background/systemjob/SystemJobService;->()V +HSPLandroidx/work/impl/background/systemjob/SystemJobService;->onCreate()V +HSPLandroidx/work/impl/background/systemjob/SystemJobService;->onDestroy()V +HSPLandroidx/work/impl/background/systemjob/SystemJobService;->onExecuted(Landroidx/work/impl/model/WorkGenerationalId;Z)V +HSPLandroidx/work/impl/background/systemjob/SystemJobService;->onStartJob(Landroid/app/job/JobParameters;)Z +HSPLandroidx/work/impl/background/systemjob/SystemJobService;->onStopJob(Landroid/app/job/JobParameters;)Z +HSPLandroidx/work/impl/background/systemjob/SystemJobService;->workGenerationalIdFromJobParameters(Landroid/app/job/JobParameters;)Landroidx/work/impl/model/WorkGenerationalId; +Landroidx/work/impl/background/systemjob/SystemJobService$Api24Impl; +HSPLandroidx/work/impl/background/systemjob/SystemJobService$Api24Impl;->getTriggeredContentAuthorities(Landroid/app/job/JobParameters;)[Ljava/lang/String; +HSPLandroidx/work/impl/background/systemjob/SystemJobService$Api24Impl;->getTriggeredContentUris(Landroid/app/job/JobParameters;)[Landroid/net/Uri; +Landroidx/work/impl/background/systemjob/SystemJobService$Api28Impl; +HSPLandroidx/work/impl/background/systemjob/SystemJobService$Api28Impl;->getNetwork(Landroid/app/job/JobParameters;)Landroid/net/Network; +Landroidx/work/impl/constraints/ConstraintListener; +Landroidx/work/impl/constraints/ConstraintsState; +HSPLandroidx/work/impl/constraints/ConstraintsState;->()V +HSPLandroidx/work/impl/constraints/ConstraintsState;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/work/impl/constraints/ConstraintsState$ConstraintsMet; +HSPLandroidx/work/impl/constraints/ConstraintsState$ConstraintsMet;->()V +HSPLandroidx/work/impl/constraints/ConstraintsState$ConstraintsMet;->()V +Landroidx/work/impl/constraints/NetworkState; +HSPLandroidx/work/impl/constraints/NetworkState;->(ZZZZ)V +HSPLandroidx/work/impl/constraints/NetworkState;->equals(Ljava/lang/Object;)Z +HSPLandroidx/work/impl/constraints/NetworkState;->isConnected()Z +HSPLandroidx/work/impl/constraints/NetworkState;->isValidated()Z +HSPLandroidx/work/impl/constraints/NetworkState;->toString()Ljava/lang/String; +Landroidx/work/impl/constraints/OnConstraintsStateChangedListener; +Landroidx/work/impl/constraints/WorkConstraintsTracker; +HSPLandroidx/work/impl/constraints/WorkConstraintsTracker;->(Landroidx/work/impl/constraints/trackers/Trackers;)V +HSPLandroidx/work/impl/constraints/WorkConstraintsTracker;->(Ljava/util/List;)V +HSPLandroidx/work/impl/constraints/WorkConstraintsTracker;->track(Landroidx/work/impl/model/WorkSpec;)Lkotlinx/coroutines/flow/Flow; +Landroidx/work/impl/constraints/WorkConstraintsTracker$track$$inlined$combine$1; +HSPLandroidx/work/impl/constraints/WorkConstraintsTracker$track$$inlined$combine$1;->([Lkotlinx/coroutines/flow/Flow;)V +HSPLandroidx/work/impl/constraints/WorkConstraintsTracker$track$$inlined$combine$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/work/impl/constraints/WorkConstraintsTracker$track$$inlined$combine$1$2; +HSPLandroidx/work/impl/constraints/WorkConstraintsTracker$track$$inlined$combine$1$2;->([Lkotlinx/coroutines/flow/Flow;)V +HSPLandroidx/work/impl/constraints/WorkConstraintsTracker$track$$inlined$combine$1$2;->invoke()Ljava/lang/Object; +HSPLandroidx/work/impl/constraints/WorkConstraintsTracker$track$$inlined$combine$1$2;->invoke()[Ljava/lang/Object; +Landroidx/work/impl/constraints/WorkConstraintsTracker$track$$inlined$combine$1$3; +HSPLandroidx/work/impl/constraints/WorkConstraintsTracker$track$$inlined$combine$1$3;->(Lkotlin/coroutines/Continuation;)V +HSPLandroidx/work/impl/constraints/WorkConstraintsTracker$track$$inlined$combine$1$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/work/impl/constraints/WorkConstraintsTracker$track$$inlined$combine$1$3;->invoke(Lkotlinx/coroutines/flow/FlowCollector;[Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/work/impl/constraints/WorkConstraintsTracker$track$$inlined$combine$1$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/work/impl/constraints/WorkConstraintsTrackerKt; +HSPLandroidx/work/impl/constraints/WorkConstraintsTrackerKt;->()V +HSPLandroidx/work/impl/constraints/WorkConstraintsTrackerKt;->listen(Landroidx/work/impl/constraints/WorkConstraintsTracker;Landroidx/work/impl/model/WorkSpec;Lkotlinx/coroutines/CoroutineDispatcher;Landroidx/work/impl/constraints/OnConstraintsStateChangedListener;)Lkotlinx/coroutines/Job; +Landroidx/work/impl/constraints/WorkConstraintsTrackerKt$listen$1; +HSPLandroidx/work/impl/constraints/WorkConstraintsTrackerKt$listen$1;->(Landroidx/work/impl/constraints/WorkConstraintsTracker;Landroidx/work/impl/model/WorkSpec;Landroidx/work/impl/constraints/OnConstraintsStateChangedListener;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/work/impl/constraints/WorkConstraintsTrackerKt$listen$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/work/impl/constraints/WorkConstraintsTrackerKt$listen$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/work/impl/constraints/WorkConstraintsTrackerKt$listen$1$1; +HSPLandroidx/work/impl/constraints/WorkConstraintsTrackerKt$listen$1$1;->(Landroidx/work/impl/constraints/OnConstraintsStateChangedListener;Landroidx/work/impl/model/WorkSpec;)V +HSPLandroidx/work/impl/constraints/WorkConstraintsTrackerKt$listen$1$1;->emit(Landroidx/work/impl/constraints/ConstraintsState;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/work/impl/constraints/WorkConstraintsTrackerKt$listen$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Landroidx/work/impl/constraints/controllers/BatteryChargingController; +HSPLandroidx/work/impl/constraints/controllers/BatteryChargingController;->(Landroidx/work/impl/constraints/trackers/ConstraintTracker;)V +HSPLandroidx/work/impl/constraints/controllers/BatteryChargingController;->hasConstraint(Landroidx/work/impl/model/WorkSpec;)Z +Landroidx/work/impl/constraints/controllers/BatteryNotLowController; +HSPLandroidx/work/impl/constraints/controllers/BatteryNotLowController;->(Landroidx/work/impl/constraints/trackers/BatteryNotLowTracker;)V +HSPLandroidx/work/impl/constraints/controllers/BatteryNotLowController;->hasConstraint(Landroidx/work/impl/model/WorkSpec;)Z +Landroidx/work/impl/constraints/controllers/ConstraintController; +HSPLandroidx/work/impl/constraints/controllers/ConstraintController;->(Landroidx/work/impl/constraints/trackers/ConstraintTracker;)V +HSPLandroidx/work/impl/constraints/controllers/ConstraintController;->access$getTracker$p(Landroidx/work/impl/constraints/controllers/ConstraintController;)Landroidx/work/impl/constraints/trackers/ConstraintTracker; +HSPLandroidx/work/impl/constraints/controllers/ConstraintController;->track()Lkotlinx/coroutines/flow/Flow; +Landroidx/work/impl/constraints/controllers/ConstraintController$track$1; +HSPLandroidx/work/impl/constraints/controllers/ConstraintController$track$1;->(Landroidx/work/impl/constraints/controllers/ConstraintController;Lkotlin/coroutines/Continuation;)V +HSPLandroidx/work/impl/constraints/controllers/ConstraintController$track$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLandroidx/work/impl/constraints/controllers/ConstraintController$track$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/work/impl/constraints/controllers/ConstraintController$track$1;->invoke(Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/work/impl/constraints/controllers/ConstraintController$track$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/work/impl/constraints/controllers/ConstraintController$track$1$1; +HSPLandroidx/work/impl/constraints/controllers/ConstraintController$track$1$1;->(Landroidx/work/impl/constraints/controllers/ConstraintController;Landroidx/work/impl/constraints/controllers/ConstraintController$track$1$listener$1;)V +HSPLandroidx/work/impl/constraints/controllers/ConstraintController$track$1$1;->invoke()Ljava/lang/Object; +HSPLandroidx/work/impl/constraints/controllers/ConstraintController$track$1$1;->invoke()V +Landroidx/work/impl/constraints/controllers/ConstraintController$track$1$listener$1; +HSPLandroidx/work/impl/constraints/controllers/ConstraintController$track$1$listener$1;->(Landroidx/work/impl/constraints/controllers/ConstraintController;Lkotlinx/coroutines/channels/ProducerScope;)V +HSPLandroidx/work/impl/constraints/controllers/ConstraintController$track$1$listener$1;->onConstraintChanged(Ljava/lang/Object;)V +Landroidx/work/impl/constraints/controllers/NetworkConnectedController; +HSPLandroidx/work/impl/constraints/controllers/NetworkConnectedController;->(Landroidx/work/impl/constraints/trackers/ConstraintTracker;)V +HSPLandroidx/work/impl/constraints/controllers/NetworkConnectedController;->hasConstraint(Landroidx/work/impl/model/WorkSpec;)Z +HSPLandroidx/work/impl/constraints/controllers/NetworkConnectedController;->isConstrained(Landroidx/work/impl/constraints/NetworkState;)Z +HSPLandroidx/work/impl/constraints/controllers/NetworkConnectedController;->isConstrained(Ljava/lang/Object;)Z +Landroidx/work/impl/constraints/controllers/NetworkMeteredController; +HSPLandroidx/work/impl/constraints/controllers/NetworkMeteredController;->()V +HSPLandroidx/work/impl/constraints/controllers/NetworkMeteredController;->(Landroidx/work/impl/constraints/trackers/ConstraintTracker;)V +HSPLandroidx/work/impl/constraints/controllers/NetworkMeteredController;->hasConstraint(Landroidx/work/impl/model/WorkSpec;)Z +Landroidx/work/impl/constraints/controllers/NetworkMeteredController$Companion; +HSPLandroidx/work/impl/constraints/controllers/NetworkMeteredController$Companion;->()V +HSPLandroidx/work/impl/constraints/controllers/NetworkMeteredController$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/work/impl/constraints/controllers/NetworkNotRoamingController; +HSPLandroidx/work/impl/constraints/controllers/NetworkNotRoamingController;->()V +HSPLandroidx/work/impl/constraints/controllers/NetworkNotRoamingController;->(Landroidx/work/impl/constraints/trackers/ConstraintTracker;)V +HSPLandroidx/work/impl/constraints/controllers/NetworkNotRoamingController;->hasConstraint(Landroidx/work/impl/model/WorkSpec;)Z +Landroidx/work/impl/constraints/controllers/NetworkNotRoamingController$Companion; +HSPLandroidx/work/impl/constraints/controllers/NetworkNotRoamingController$Companion;->()V +HSPLandroidx/work/impl/constraints/controllers/NetworkNotRoamingController$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Landroidx/work/impl/constraints/controllers/NetworkUnmeteredController; +HSPLandroidx/work/impl/constraints/controllers/NetworkUnmeteredController;->(Landroidx/work/impl/constraints/trackers/ConstraintTracker;)V +HSPLandroidx/work/impl/constraints/controllers/NetworkUnmeteredController;->hasConstraint(Landroidx/work/impl/model/WorkSpec;)Z +Landroidx/work/impl/constraints/controllers/StorageNotLowController; +HSPLandroidx/work/impl/constraints/controllers/StorageNotLowController;->(Landroidx/work/impl/constraints/trackers/ConstraintTracker;)V +HSPLandroidx/work/impl/constraints/controllers/StorageNotLowController;->hasConstraint(Landroidx/work/impl/model/WorkSpec;)Z +Landroidx/work/impl/constraints/trackers/BatteryChargingTracker; +HSPLandroidx/work/impl/constraints/trackers/BatteryChargingTracker;->(Landroid/content/Context;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;)V +Landroidx/work/impl/constraints/trackers/BatteryNotLowTracker; +HSPLandroidx/work/impl/constraints/trackers/BatteryNotLowTracker;->(Landroid/content/Context;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;)V +Landroidx/work/impl/constraints/trackers/BroadcastReceiverConstraintTracker; +HSPLandroidx/work/impl/constraints/trackers/BroadcastReceiverConstraintTracker;->(Landroid/content/Context;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;)V +Landroidx/work/impl/constraints/trackers/BroadcastReceiverConstraintTracker$broadcastReceiver$1; +HSPLandroidx/work/impl/constraints/trackers/BroadcastReceiverConstraintTracker$broadcastReceiver$1;->(Landroidx/work/impl/constraints/trackers/BroadcastReceiverConstraintTracker;)V +Landroidx/work/impl/constraints/trackers/ConstraintTracker; +HSPLandroidx/work/impl/constraints/trackers/ConstraintTracker;->(Landroid/content/Context;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;)V +HSPLandroidx/work/impl/constraints/trackers/ConstraintTracker;->addListener(Landroidx/work/impl/constraints/ConstraintListener;)V +HSPLandroidx/work/impl/constraints/trackers/ConstraintTracker;->getAppContext()Landroid/content/Context; +HSPLandroidx/work/impl/constraints/trackers/ConstraintTracker;->removeListener(Landroidx/work/impl/constraints/ConstraintListener;)V +HSPLandroidx/work/impl/constraints/trackers/ConstraintTracker;->setState(Ljava/lang/Object;)V +Landroidx/work/impl/constraints/trackers/ConstraintTrackerKt; +HSPLandroidx/work/impl/constraints/trackers/ConstraintTrackerKt;->()V +HSPLandroidx/work/impl/constraints/trackers/ConstraintTrackerKt;->access$getTAG$p()Ljava/lang/String; +Landroidx/work/impl/constraints/trackers/NetworkStateTracker24; +HSPLandroidx/work/impl/constraints/trackers/NetworkStateTracker24;->(Landroid/content/Context;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;)V +HSPLandroidx/work/impl/constraints/trackers/NetworkStateTracker24;->access$getConnectivityManager$p(Landroidx/work/impl/constraints/trackers/NetworkStateTracker24;)Landroid/net/ConnectivityManager; +HSPLandroidx/work/impl/constraints/trackers/NetworkStateTracker24;->readSystemState()Landroidx/work/impl/constraints/NetworkState; +HSPLandroidx/work/impl/constraints/trackers/NetworkStateTracker24;->readSystemState()Ljava/lang/Object; +HSPLandroidx/work/impl/constraints/trackers/NetworkStateTracker24;->startTracking()V +HSPLandroidx/work/impl/constraints/trackers/NetworkStateTracker24;->stopTracking()V +Landroidx/work/impl/constraints/trackers/NetworkStateTracker24$networkCallback$1; +HSPLandroidx/work/impl/constraints/trackers/NetworkStateTracker24$networkCallback$1;->(Landroidx/work/impl/constraints/trackers/NetworkStateTracker24;)V +HSPLandroidx/work/impl/constraints/trackers/NetworkStateTracker24$networkCallback$1;->onCapabilitiesChanged(Landroid/net/Network;Landroid/net/NetworkCapabilities;)V +Landroidx/work/impl/constraints/trackers/NetworkStateTrackerKt; +HSPLandroidx/work/impl/constraints/trackers/NetworkStateTrackerKt;->()V +HSPLandroidx/work/impl/constraints/trackers/NetworkStateTrackerKt;->NetworkStateTracker(Landroid/content/Context;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;)Landroidx/work/impl/constraints/trackers/ConstraintTracker; +HSPLandroidx/work/impl/constraints/trackers/NetworkStateTrackerKt;->access$getTAG$p()Ljava/lang/String; +HSPLandroidx/work/impl/constraints/trackers/NetworkStateTrackerKt;->getActiveNetworkState(Landroid/net/ConnectivityManager;)Landroidx/work/impl/constraints/NetworkState; +HSPLandroidx/work/impl/constraints/trackers/NetworkStateTrackerKt;->isActiveNetworkValidated(Landroid/net/ConnectivityManager;)Z +Landroidx/work/impl/constraints/trackers/StorageNotLowTracker; +HSPLandroidx/work/impl/constraints/trackers/StorageNotLowTracker;->(Landroid/content/Context;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;)V +Landroidx/work/impl/constraints/trackers/Trackers; +HSPLandroidx/work/impl/constraints/trackers/Trackers;->(Landroid/content/Context;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;Landroidx/work/impl/constraints/trackers/ConstraintTracker;Landroidx/work/impl/constraints/trackers/BatteryNotLowTracker;Landroidx/work/impl/constraints/trackers/ConstraintTracker;Landroidx/work/impl/constraints/trackers/ConstraintTracker;)V +HSPLandroidx/work/impl/constraints/trackers/Trackers;->(Landroid/content/Context;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;Landroidx/work/impl/constraints/trackers/ConstraintTracker;Landroidx/work/impl/constraints/trackers/BatteryNotLowTracker;Landroidx/work/impl/constraints/trackers/ConstraintTracker;Landroidx/work/impl/constraints/trackers/ConstraintTracker;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/work/impl/constraints/trackers/Trackers;->getBatteryChargingTracker()Landroidx/work/impl/constraints/trackers/ConstraintTracker; +HSPLandroidx/work/impl/constraints/trackers/Trackers;->getBatteryNotLowTracker()Landroidx/work/impl/constraints/trackers/BatteryNotLowTracker; +HSPLandroidx/work/impl/constraints/trackers/Trackers;->getNetworkStateTracker()Landroidx/work/impl/constraints/trackers/ConstraintTracker; +HSPLandroidx/work/impl/constraints/trackers/Trackers;->getStorageNotLowTracker()Landroidx/work/impl/constraints/trackers/ConstraintTracker; +Landroidx/work/impl/foreground/ForegroundProcessor; +Landroidx/work/impl/model/Dependency; +HSPLandroidx/work/impl/model/Dependency;->getPrerequisiteId()Ljava/lang/String; +HSPLandroidx/work/impl/model/Dependency;->getWorkSpecId()Ljava/lang/String; +Landroidx/work/impl/model/DependencyDao; +Landroidx/work/impl/model/DependencyDao_Impl; +HSPLandroidx/work/impl/model/DependencyDao_Impl;->(Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/DependencyDao_Impl;->getDependentWorkIds(Ljava/lang/String;)Ljava/util/List; +HSPLandroidx/work/impl/model/DependencyDao_Impl;->getRequiredConverters()Ljava/util/List; +HSPLandroidx/work/impl/model/DependencyDao_Impl;->hasDependents(Ljava/lang/String;)Z +HSPLandroidx/work/impl/model/DependencyDao_Impl;->insertDependency(Landroidx/work/impl/model/Dependency;)V +Landroidx/work/impl/model/DependencyDao_Impl$1; +HSPLandroidx/work/impl/model/DependencyDao_Impl$1;->(Landroidx/work/impl/model/DependencyDao_Impl;Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/DependencyDao_Impl$1;->bind(Landroidx/sqlite/db/SupportSQLiteStatement;Landroidx/work/impl/model/Dependency;)V +HSPLandroidx/work/impl/model/DependencyDao_Impl$1;->bind(Landroidx/sqlite/db/SupportSQLiteStatement;Ljava/lang/Object;)V +HSPLandroidx/work/impl/model/DependencyDao_Impl$1;->createQuery()Ljava/lang/String; +Landroidx/work/impl/model/Preference; +HSPLandroidx/work/impl/model/Preference;->(Ljava/lang/String;Ljava/lang/Long;)V +HSPLandroidx/work/impl/model/Preference;->getKey()Ljava/lang/String; +HSPLandroidx/work/impl/model/Preference;->getValue()Ljava/lang/Long; +Landroidx/work/impl/model/PreferenceDao; +Landroidx/work/impl/model/PreferenceDao_Impl; +HSPLandroidx/work/impl/model/PreferenceDao_Impl;->(Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/PreferenceDao_Impl;->getLongValue(Ljava/lang/String;)Ljava/lang/Long; +HSPLandroidx/work/impl/model/PreferenceDao_Impl;->getRequiredConverters()Ljava/util/List; +HSPLandroidx/work/impl/model/PreferenceDao_Impl;->insertPreference(Landroidx/work/impl/model/Preference;)V +Landroidx/work/impl/model/PreferenceDao_Impl$1; +HSPLandroidx/work/impl/model/PreferenceDao_Impl$1;->(Landroidx/work/impl/model/PreferenceDao_Impl;Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/PreferenceDao_Impl$1;->bind(Landroidx/sqlite/db/SupportSQLiteStatement;Landroidx/work/impl/model/Preference;)V +HSPLandroidx/work/impl/model/PreferenceDao_Impl$1;->bind(Landroidx/sqlite/db/SupportSQLiteStatement;Ljava/lang/Object;)V +HSPLandroidx/work/impl/model/PreferenceDao_Impl$1;->createQuery()Ljava/lang/String; +Landroidx/work/impl/model/RawWorkInfoDao; +Landroidx/work/impl/model/RawWorkInfoDao_Impl; +HSPLandroidx/work/impl/model/RawWorkInfoDao_Impl;->getRequiredConverters()Ljava/util/List; +Landroidx/work/impl/model/SystemIdInfo; +HSPLandroidx/work/impl/model/SystemIdInfo;->(Ljava/lang/String;II)V +HSPLandroidx/work/impl/model/SystemIdInfo;->getGeneration()I +Landroidx/work/impl/model/SystemIdInfoDao; +HSPLandroidx/work/impl/model/SystemIdInfoDao;->access$getSystemIdInfo$jd(Landroidx/work/impl/model/SystemIdInfoDao;Landroidx/work/impl/model/WorkGenerationalId;)Landroidx/work/impl/model/SystemIdInfo; +HSPLandroidx/work/impl/model/SystemIdInfoDao;->getSystemIdInfo(Landroidx/work/impl/model/WorkGenerationalId;)Landroidx/work/impl/model/SystemIdInfo; +Landroidx/work/impl/model/SystemIdInfoDao$DefaultImpls; +HSPLandroidx/work/impl/model/SystemIdInfoDao$DefaultImpls;->getSystemIdInfo(Landroidx/work/impl/model/SystemIdInfoDao;Landroidx/work/impl/model/WorkGenerationalId;)Landroidx/work/impl/model/SystemIdInfo; +Landroidx/work/impl/model/SystemIdInfoDao_Impl; +HSPLandroidx/work/impl/model/SystemIdInfoDao_Impl;->(Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/SystemIdInfoDao_Impl;->getRequiredConverters()Ljava/util/List; +HSPLandroidx/work/impl/model/SystemIdInfoDao_Impl;->getSystemIdInfo(Landroidx/work/impl/model/WorkGenerationalId;)Landroidx/work/impl/model/SystemIdInfo; +HSPLandroidx/work/impl/model/SystemIdInfoDao_Impl;->getSystemIdInfo(Ljava/lang/String;I)Landroidx/work/impl/model/SystemIdInfo; +HSPLandroidx/work/impl/model/SystemIdInfoDao_Impl;->getWorkSpecIds()Ljava/util/List; +HSPLandroidx/work/impl/model/SystemIdInfoDao_Impl;->insertSystemIdInfo(Landroidx/work/impl/model/SystemIdInfo;)V +HSPLandroidx/work/impl/model/SystemIdInfoDao_Impl;->removeSystemIdInfo(Ljava/lang/String;)V +Landroidx/work/impl/model/SystemIdInfoDao_Impl$1; +HSPLandroidx/work/impl/model/SystemIdInfoDao_Impl$1;->(Landroidx/work/impl/model/SystemIdInfoDao_Impl;Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/SystemIdInfoDao_Impl$1;->bind(Landroidx/sqlite/db/SupportSQLiteStatement;Landroidx/work/impl/model/SystemIdInfo;)V +HSPLandroidx/work/impl/model/SystemIdInfoDao_Impl$1;->bind(Landroidx/sqlite/db/SupportSQLiteStatement;Ljava/lang/Object;)V +HSPLandroidx/work/impl/model/SystemIdInfoDao_Impl$1;->createQuery()Ljava/lang/String; +Landroidx/work/impl/model/SystemIdInfoDao_Impl$2; +HSPLandroidx/work/impl/model/SystemIdInfoDao_Impl$2;->(Landroidx/work/impl/model/SystemIdInfoDao_Impl;Landroidx/room/RoomDatabase;)V +Landroidx/work/impl/model/SystemIdInfoDao_Impl$3; +HSPLandroidx/work/impl/model/SystemIdInfoDao_Impl$3;->(Landroidx/work/impl/model/SystemIdInfoDao_Impl;Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/SystemIdInfoDao_Impl$3;->createQuery()Ljava/lang/String; +Landroidx/work/impl/model/SystemIdInfoKt; +HSPLandroidx/work/impl/model/SystemIdInfoKt;->systemIdInfo(Landroidx/work/impl/model/WorkGenerationalId;I)Landroidx/work/impl/model/SystemIdInfo; +Landroidx/work/impl/model/WorkGenerationalId; +HSPLandroidx/work/impl/model/WorkGenerationalId;->(Ljava/lang/String;I)V +HSPLandroidx/work/impl/model/WorkGenerationalId;->equals(Ljava/lang/Object;)Z +HSPLandroidx/work/impl/model/WorkGenerationalId;->getGeneration()I +HSPLandroidx/work/impl/model/WorkGenerationalId;->getWorkSpecId()Ljava/lang/String; +HSPLandroidx/work/impl/model/WorkGenerationalId;->hashCode()I +HSPLandroidx/work/impl/model/WorkGenerationalId;->toString()Ljava/lang/String; +Landroidx/work/impl/model/WorkName; +HSPLandroidx/work/impl/model/WorkName;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroidx/work/impl/model/WorkName;->getName()Ljava/lang/String; +HSPLandroidx/work/impl/model/WorkName;->getWorkSpecId()Ljava/lang/String; +Landroidx/work/impl/model/WorkNameDao; +Landroidx/work/impl/model/WorkNameDao_Impl; +HSPLandroidx/work/impl/model/WorkNameDao_Impl;->(Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/WorkNameDao_Impl;->getRequiredConverters()Ljava/util/List; +HSPLandroidx/work/impl/model/WorkNameDao_Impl;->insert(Landroidx/work/impl/model/WorkName;)V +Landroidx/work/impl/model/WorkNameDao_Impl$1; +HSPLandroidx/work/impl/model/WorkNameDao_Impl$1;->(Landroidx/work/impl/model/WorkNameDao_Impl;Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/WorkNameDao_Impl$1;->bind(Landroidx/sqlite/db/SupportSQLiteStatement;Landroidx/work/impl/model/WorkName;)V +HSPLandroidx/work/impl/model/WorkNameDao_Impl$1;->bind(Landroidx/sqlite/db/SupportSQLiteStatement;Ljava/lang/Object;)V +HSPLandroidx/work/impl/model/WorkNameDao_Impl$1;->createQuery()Ljava/lang/String; +Landroidx/work/impl/model/WorkProgressDao; +Landroidx/work/impl/model/WorkProgressDao_Impl; +HSPLandroidx/work/impl/model/WorkProgressDao_Impl;->(Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/WorkProgressDao_Impl;->delete(Ljava/lang/String;)V +HSPLandroidx/work/impl/model/WorkProgressDao_Impl;->deleteAll()V +HSPLandroidx/work/impl/model/WorkProgressDao_Impl;->getRequiredConverters()Ljava/util/List; +Landroidx/work/impl/model/WorkProgressDao_Impl$1; +HSPLandroidx/work/impl/model/WorkProgressDao_Impl$1;->(Landroidx/work/impl/model/WorkProgressDao_Impl;Landroidx/room/RoomDatabase;)V +Landroidx/work/impl/model/WorkProgressDao_Impl$2; +HSPLandroidx/work/impl/model/WorkProgressDao_Impl$2;->(Landroidx/work/impl/model/WorkProgressDao_Impl;Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/WorkProgressDao_Impl$2;->createQuery()Ljava/lang/String; +Landroidx/work/impl/model/WorkProgressDao_Impl$3; +HSPLandroidx/work/impl/model/WorkProgressDao_Impl$3;->(Landroidx/work/impl/model/WorkProgressDao_Impl;Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/WorkProgressDao_Impl$3;->createQuery()Ljava/lang/String; +Landroidx/work/impl/model/WorkSpec; +HSPLandroidx/work/impl/model/WorkSpec;->()V +HSPLandroidx/work/impl/model/WorkSpec;->(Ljava/lang/String;Landroidx/work/WorkInfo$State;Ljava/lang/String;Ljava/lang/String;Landroidx/work/Data;Landroidx/work/Data;JJJLandroidx/work/Constraints;ILandroidx/work/BackoffPolicy;JJJJZLandroidx/work/OutOfQuotaPolicy;IIJII)V +HSPLandroidx/work/impl/model/WorkSpec;->(Ljava/lang/String;Landroidx/work/WorkInfo$State;Ljava/lang/String;Ljava/lang/String;Landroidx/work/Data;Landroidx/work/Data;JJJLandroidx/work/Constraints;ILandroidx/work/BackoffPolicy;JJJJZLandroidx/work/OutOfQuotaPolicy;IIJIIILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/work/impl/model/WorkSpec;->(Ljava/lang/String;Landroidx/work/impl/model/WorkSpec;)V +HSPLandroidx/work/impl/model/WorkSpec;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroidx/work/impl/model/WorkSpec;->calculateNextRunTime()J +HSPLandroidx/work/impl/model/WorkSpec;->getGeneration()I +HSPLandroidx/work/impl/model/WorkSpec;->getNextScheduleTimeOverride()J +HSPLandroidx/work/impl/model/WorkSpec;->getNextScheduleTimeOverrideGeneration()I +HSPLandroidx/work/impl/model/WorkSpec;->getPeriodCount()I +HSPLandroidx/work/impl/model/WorkSpec;->getStopReason()I +HSPLandroidx/work/impl/model/WorkSpec;->hasConstraints()Z +HSPLandroidx/work/impl/model/WorkSpec;->hashCode()I +HSPLandroidx/work/impl/model/WorkSpec;->isBackedOff()Z +HSPLandroidx/work/impl/model/WorkSpec;->isPeriodic()Z +HSPLandroidx/work/impl/model/WorkSpec;->setPeriodic(JJ)V +Landroidx/work/impl/model/WorkSpec$$ExternalSyntheticLambda0; +HSPLandroidx/work/impl/model/WorkSpec$$ExternalSyntheticLambda0;->()V +Landroidx/work/impl/model/WorkSpec$Companion; +HSPLandroidx/work/impl/model/WorkSpec$Companion;->()V +HSPLandroidx/work/impl/model/WorkSpec$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/work/impl/model/WorkSpec$Companion;->calculateNextRunTime(ZILandroidx/work/BackoffPolicy;JJIZJJJJ)J +Landroidx/work/impl/model/WorkSpec$IdAndState; +HSPLandroidx/work/impl/model/WorkSpec$IdAndState;->(Ljava/lang/String;Landroidx/work/WorkInfo$State;)V +Landroidx/work/impl/model/WorkSpecDao; +Landroidx/work/impl/model/WorkSpecDao_Impl; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->(Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->getAllEligibleWorkSpecsForScheduling(I)Ljava/util/List; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->getEligibleWorkForScheduling(I)Ljava/util/List; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->getEligibleWorkForSchedulingWithContentUris()Ljava/util/List; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->getInputsFromPrerequisites(Ljava/lang/String;)Ljava/util/List; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->getRequiredConverters()Ljava/util/List; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->getRunningWork()Ljava/util/List; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->getState(Ljava/lang/String;)Landroidx/work/WorkInfo$State; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->getWorkSpec(Ljava/lang/String;)Landroidx/work/impl/model/WorkSpec; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->getWorkSpecIdAndStatesForName(Ljava/lang/String;)Ljava/util/List; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->hasUnfinishedWork()Z +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->incrementWorkSpecRunAttemptCount(Ljava/lang/String;)I +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->insertWorkSpec(Landroidx/work/impl/model/WorkSpec;)V +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->markWorkSpecScheduled(Ljava/lang/String;J)I +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->resetScheduledState()I +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->setOutput(Ljava/lang/String;Landroidx/work/Data;)V +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->setState(Landroidx/work/WorkInfo$State;Ljava/lang/String;)I +HSPLandroidx/work/impl/model/WorkSpecDao_Impl;->setStopReason(Ljava/lang/String;I)V +Landroidx/work/impl/model/WorkSpecDao_Impl$1; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$1;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$1;->bind(Landroidx/sqlite/db/SupportSQLiteStatement;Landroidx/work/impl/model/WorkSpec;)V +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$1;->bind(Landroidx/sqlite/db/SupportSQLiteStatement;Ljava/lang/Object;)V +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$1;->createQuery()Ljava/lang/String; +Landroidx/work/impl/model/WorkSpecDao_Impl$10; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$10;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +Landroidx/work/impl/model/WorkSpecDao_Impl$11; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$11;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +Landroidx/work/impl/model/WorkSpecDao_Impl$12; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$12;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +Landroidx/work/impl/model/WorkSpecDao_Impl$13; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$13;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$13;->createQuery()Ljava/lang/String; +Landroidx/work/impl/model/WorkSpecDao_Impl$14; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$14;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$14;->createQuery()Ljava/lang/String; +Landroidx/work/impl/model/WorkSpecDao_Impl$15; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$15;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +Landroidx/work/impl/model/WorkSpecDao_Impl$16; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$16;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +Landroidx/work/impl/model/WorkSpecDao_Impl$17; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$17;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$17;->createQuery()Ljava/lang/String; +Landroidx/work/impl/model/WorkSpecDao_Impl$2; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$2;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +Landroidx/work/impl/model/WorkSpecDao_Impl$3; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$3;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +Landroidx/work/impl/model/WorkSpecDao_Impl$4; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$4;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$4;->createQuery()Ljava/lang/String; +Landroidx/work/impl/model/WorkSpecDao_Impl$5; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$5;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +Landroidx/work/impl/model/WorkSpecDao_Impl$6; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$6;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +Landroidx/work/impl/model/WorkSpecDao_Impl$7; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$7;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$7;->createQuery()Ljava/lang/String; +Landroidx/work/impl/model/WorkSpecDao_Impl$8; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$8;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +Landroidx/work/impl/model/WorkSpecDao_Impl$9; +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$9;->(Landroidx/work/impl/model/WorkSpecDao_Impl;Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/WorkSpecDao_Impl$9;->createQuery()Ljava/lang/String; +Landroidx/work/impl/model/WorkSpecKt; +HSPLandroidx/work/impl/model/WorkSpecKt;->generationalId(Landroidx/work/impl/model/WorkSpec;)Landroidx/work/impl/model/WorkGenerationalId; +Landroidx/work/impl/model/WorkTag; +HSPLandroidx/work/impl/model/WorkTag;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroidx/work/impl/model/WorkTag;->getTag()Ljava/lang/String; +HSPLandroidx/work/impl/model/WorkTag;->getWorkSpecId()Ljava/lang/String; +Landroidx/work/impl/model/WorkTagDao; +HSPLandroidx/work/impl/model/WorkTagDao;->access$insertTags$jd(Landroidx/work/impl/model/WorkTagDao;Ljava/lang/String;Ljava/util/Set;)V +HSPLandroidx/work/impl/model/WorkTagDao;->insertTags(Ljava/lang/String;Ljava/util/Set;)V +Landroidx/work/impl/model/WorkTagDao$DefaultImpls; +HSPLandroidx/work/impl/model/WorkTagDao$DefaultImpls;->insertTags(Landroidx/work/impl/model/WorkTagDao;Ljava/lang/String;Ljava/util/Set;)V +Landroidx/work/impl/model/WorkTagDao_Impl; +HSPLandroidx/work/impl/model/WorkTagDao_Impl;->(Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/WorkTagDao_Impl;->getRequiredConverters()Ljava/util/List; +HSPLandroidx/work/impl/model/WorkTagDao_Impl;->getTagsForWorkSpecId(Ljava/lang/String;)Ljava/util/List; +HSPLandroidx/work/impl/model/WorkTagDao_Impl;->insert(Landroidx/work/impl/model/WorkTag;)V +HSPLandroidx/work/impl/model/WorkTagDao_Impl;->insertTags(Ljava/lang/String;Ljava/util/Set;)V +Landroidx/work/impl/model/WorkTagDao_Impl$1; +HSPLandroidx/work/impl/model/WorkTagDao_Impl$1;->(Landroidx/work/impl/model/WorkTagDao_Impl;Landroidx/room/RoomDatabase;)V +HSPLandroidx/work/impl/model/WorkTagDao_Impl$1;->bind(Landroidx/sqlite/db/SupportSQLiteStatement;Landroidx/work/impl/model/WorkTag;)V +HSPLandroidx/work/impl/model/WorkTagDao_Impl$1;->bind(Landroidx/sqlite/db/SupportSQLiteStatement;Ljava/lang/Object;)V +HSPLandroidx/work/impl/model/WorkTagDao_Impl$1;->createQuery()Ljava/lang/String; +Landroidx/work/impl/model/WorkTagDao_Impl$2; +HSPLandroidx/work/impl/model/WorkTagDao_Impl$2;->(Landroidx/work/impl/model/WorkTagDao_Impl;Landroidx/room/RoomDatabase;)V +Landroidx/work/impl/model/WorkTypeConverters; +HSPLandroidx/work/impl/model/WorkTypeConverters;->()V +HSPLandroidx/work/impl/model/WorkTypeConverters;->()V +HSPLandroidx/work/impl/model/WorkTypeConverters;->backoffPolicyToInt(Landroidx/work/BackoffPolicy;)I +HSPLandroidx/work/impl/model/WorkTypeConverters;->byteArrayToSetOfTriggers([B)Ljava/util/Set; +HSPLandroidx/work/impl/model/WorkTypeConverters;->intToBackoffPolicy(I)Landroidx/work/BackoffPolicy; +HSPLandroidx/work/impl/model/WorkTypeConverters;->intToNetworkType(I)Landroidx/work/NetworkType; +HSPLandroidx/work/impl/model/WorkTypeConverters;->intToOutOfQuotaPolicy(I)Landroidx/work/OutOfQuotaPolicy; +HSPLandroidx/work/impl/model/WorkTypeConverters;->intToState(I)Landroidx/work/WorkInfo$State; +HSPLandroidx/work/impl/model/WorkTypeConverters;->networkTypeToInt(Landroidx/work/NetworkType;)I +HSPLandroidx/work/impl/model/WorkTypeConverters;->outOfQuotaPolicyToInt(Landroidx/work/OutOfQuotaPolicy;)I +HSPLandroidx/work/impl/model/WorkTypeConverters;->setOfTriggersToByteArray(Ljava/util/Set;)[B +HSPLandroidx/work/impl/model/WorkTypeConverters;->stateToInt(Landroidx/work/WorkInfo$State;)I +Landroidx/work/impl/model/WorkTypeConverters$WhenMappings; +HSPLandroidx/work/impl/model/WorkTypeConverters$WhenMappings;->()V +Landroidx/work/impl/utils/Api28Impl; +HSPLandroidx/work/impl/utils/Api28Impl;->()V +HSPLandroidx/work/impl/utils/Api28Impl;->()V +HSPLandroidx/work/impl/utils/Api28Impl;->getProcessName()Ljava/lang/String; +Landroidx/work/impl/utils/EnqueueRunnable; +HSPLandroidx/work/impl/utils/EnqueueRunnable;->()V +HSPLandroidx/work/impl/utils/EnqueueRunnable;->(Landroidx/work/impl/WorkContinuationImpl;)V +HSPLandroidx/work/impl/utils/EnqueueRunnable;->(Landroidx/work/impl/WorkContinuationImpl;Landroidx/work/impl/OperationImpl;)V +HSPLandroidx/work/impl/utils/EnqueueRunnable;->addToDatabase()Z +HSPLandroidx/work/impl/utils/EnqueueRunnable;->enqueueContinuation(Landroidx/work/impl/WorkContinuationImpl;)Z +HSPLandroidx/work/impl/utils/EnqueueRunnable;->enqueueWorkWithPrerequisites(Landroidx/work/impl/WorkManagerImpl;Ljava/util/List;[Ljava/lang/String;Ljava/lang/String;Landroidx/work/ExistingWorkPolicy;)Z +HSPLandroidx/work/impl/utils/EnqueueRunnable;->getOperation()Landroidx/work/Operation; +HSPLandroidx/work/impl/utils/EnqueueRunnable;->processContinuation(Landroidx/work/impl/WorkContinuationImpl;)Z +HSPLandroidx/work/impl/utils/EnqueueRunnable;->run()V +HSPLandroidx/work/impl/utils/EnqueueRunnable;->scheduleWorkInBackground()V +Landroidx/work/impl/utils/EnqueueUtilsKt; +HSPLandroidx/work/impl/utils/EnqueueUtilsKt;->checkContentUriTriggerWorkerLimits(Landroidx/work/impl/WorkDatabase;Landroidx/work/Configuration;Landroidx/work/impl/WorkContinuationImpl;)V +HSPLandroidx/work/impl/utils/EnqueueUtilsKt;->wrapInConstraintTrackingWorkerIfNeeded(Ljava/util/List;Landroidx/work/impl/model/WorkSpec;)Landroidx/work/impl/model/WorkSpec; +Landroidx/work/impl/utils/ForceStopRunnable; +HSPLandroidx/work/impl/utils/ForceStopRunnable;->()V +HSPLandroidx/work/impl/utils/ForceStopRunnable;->(Landroid/content/Context;Landroidx/work/impl/WorkManagerImpl;)V +HSPLandroidx/work/impl/utils/ForceStopRunnable;->cleanUp()Z +HSPLandroidx/work/impl/utils/ForceStopRunnable;->forceStopRunnable()V +HSPLandroidx/work/impl/utils/ForceStopRunnable;->getIntent(Landroid/content/Context;)Landroid/content/Intent; +HSPLandroidx/work/impl/utils/ForceStopRunnable;->getPendingIntent(Landroid/content/Context;I)Landroid/app/PendingIntent; +HSPLandroidx/work/impl/utils/ForceStopRunnable;->isForceStopped()Z +HSPLandroidx/work/impl/utils/ForceStopRunnable;->multiProcessChecks()Z +HSPLandroidx/work/impl/utils/ForceStopRunnable;->run()V +HSPLandroidx/work/impl/utils/ForceStopRunnable;->shouldRescheduleWorkers()Z +Landroidx/work/impl/utils/ForceStopRunnable$BroadcastReceiver; +Landroidx/work/impl/utils/IdGenerator; +HSPLandroidx/work/impl/utils/IdGenerator;->$r8$lambda$LyUC9fmKDw6AhARQq6V7VCdkafU(Landroidx/work/impl/utils/IdGenerator;II)Ljava/lang/Integer; +HSPLandroidx/work/impl/utils/IdGenerator;->(Landroidx/work/impl/WorkDatabase;)V +HSPLandroidx/work/impl/utils/IdGenerator;->nextJobSchedulerIdWithRange$lambda$0(Landroidx/work/impl/utils/IdGenerator;II)Ljava/lang/Integer; +HSPLandroidx/work/impl/utils/IdGenerator;->nextJobSchedulerIdWithRange(II)I +Landroidx/work/impl/utils/IdGenerator$$ExternalSyntheticLambda1; +HSPLandroidx/work/impl/utils/IdGenerator$$ExternalSyntheticLambda1;->(Landroidx/work/impl/utils/IdGenerator;II)V +HSPLandroidx/work/impl/utils/IdGenerator$$ExternalSyntheticLambda1;->call()Ljava/lang/Object; +Landroidx/work/impl/utils/IdGeneratorKt; +HSPLandroidx/work/impl/utils/IdGeneratorKt;->access$nextId(Landroidx/work/impl/WorkDatabase;Ljava/lang/String;)I +HSPLandroidx/work/impl/utils/IdGeneratorKt;->nextId(Landroidx/work/impl/WorkDatabase;Ljava/lang/String;)I +HSPLandroidx/work/impl/utils/IdGeneratorKt;->updatePreference(Landroidx/work/impl/WorkDatabase;Ljava/lang/String;I)V +Landroidx/work/impl/utils/NetworkApi21; +HSPLandroidx/work/impl/utils/NetworkApi21;->getNetworkCapabilitiesCompat(Landroid/net/ConnectivityManager;Landroid/net/Network;)Landroid/net/NetworkCapabilities; +HSPLandroidx/work/impl/utils/NetworkApi21;->hasCapabilityCompat(Landroid/net/NetworkCapabilities;I)Z +HSPLandroidx/work/impl/utils/NetworkApi21;->unregisterNetworkCallbackCompat(Landroid/net/ConnectivityManager;Landroid/net/ConnectivityManager$NetworkCallback;)V +Landroidx/work/impl/utils/NetworkApi23; +HSPLandroidx/work/impl/utils/NetworkApi23;->getActiveNetworkCompat(Landroid/net/ConnectivityManager;)Landroid/net/Network; +Landroidx/work/impl/utils/NetworkApi24; +HSPLandroidx/work/impl/utils/NetworkApi24;->registerDefaultNetworkCallbackCompat(Landroid/net/ConnectivityManager;Landroid/net/ConnectivityManager$NetworkCallback;)V +Landroidx/work/impl/utils/PackageManagerHelper; +HSPLandroidx/work/impl/utils/PackageManagerHelper;->()V +HSPLandroidx/work/impl/utils/PackageManagerHelper;->getComponentEnabledSetting(Landroid/content/Context;Ljava/lang/String;)I +HSPLandroidx/work/impl/utils/PackageManagerHelper;->isComponentEnabled(IZ)Z +HSPLandroidx/work/impl/utils/PackageManagerHelper;->setComponentEnabled(Landroid/content/Context;Ljava/lang/Class;Z)V +Landroidx/work/impl/utils/PreferenceUtils; +HSPLandroidx/work/impl/utils/PreferenceUtils;->(Landroidx/work/impl/WorkDatabase;)V +HSPLandroidx/work/impl/utils/PreferenceUtils;->getLastForceStopEventMillis()J +HSPLandroidx/work/impl/utils/PreferenceUtils;->getNeedsReschedule()Z +HSPLandroidx/work/impl/utils/PreferenceUtils;->setLastForceStopEventMillis(J)V +Landroidx/work/impl/utils/ProcessUtils; +HSPLandroidx/work/impl/utils/ProcessUtils;->()V +HSPLandroidx/work/impl/utils/ProcessUtils;->getProcessName(Landroid/content/Context;)Ljava/lang/String; +HSPLandroidx/work/impl/utils/ProcessUtils;->isDefaultProcess(Landroid/content/Context;Landroidx/work/Configuration;)Z +Landroidx/work/impl/utils/SerialExecutorImpl; +HSPLandroidx/work/impl/utils/SerialExecutorImpl;->(Ljava/util/concurrent/Executor;)V +HSPLandroidx/work/impl/utils/SerialExecutorImpl;->execute(Ljava/lang/Runnable;)V +HSPLandroidx/work/impl/utils/SerialExecutorImpl;->scheduleNext()V +Landroidx/work/impl/utils/SerialExecutorImpl$Task; +HSPLandroidx/work/impl/utils/SerialExecutorImpl$Task;->(Landroidx/work/impl/utils/SerialExecutorImpl;Ljava/lang/Runnable;)V +HSPLandroidx/work/impl/utils/SerialExecutorImpl$Task;->run()V +Landroidx/work/impl/utils/StartWorkRunnable; +HSPLandroidx/work/impl/utils/StartWorkRunnable;->(Landroidx/work/impl/Processor;Landroidx/work/impl/StartStopToken;Landroidx/work/WorkerParameters$RuntimeExtras;)V +HSPLandroidx/work/impl/utils/StartWorkRunnable;->run()V +Landroidx/work/impl/utils/SynchronousExecutor; +HSPLandroidx/work/impl/utils/SynchronousExecutor;->()V +HSPLandroidx/work/impl/utils/SynchronousExecutor;->execute(Ljava/lang/Runnable;)V +Landroidx/work/impl/utils/WorkForegroundRunnable; +HSPLandroidx/work/impl/utils/WorkForegroundRunnable;->()V +HSPLandroidx/work/impl/utils/WorkForegroundRunnable;->(Landroid/content/Context;Landroidx/work/impl/model/WorkSpec;Landroidx/work/ListenableWorker;Landroidx/work/ForegroundUpdater;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;)V +HSPLandroidx/work/impl/utils/WorkForegroundRunnable;->getFuture()Lcom/google/common/util/concurrent/ListenableFuture; +HSPLandroidx/work/impl/utils/WorkForegroundRunnable;->run()V +Landroidx/work/impl/utils/WorkForegroundUpdater; +HSPLandroidx/work/impl/utils/WorkForegroundUpdater;->()V +HSPLandroidx/work/impl/utils/WorkForegroundUpdater;->(Landroidx/work/impl/WorkDatabase;Landroidx/work/impl/foreground/ForegroundProcessor;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;)V +Landroidx/work/impl/utils/WorkProgressUpdater; +HSPLandroidx/work/impl/utils/WorkProgressUpdater;->()V +HSPLandroidx/work/impl/utils/WorkProgressUpdater;->(Landroidx/work/impl/WorkDatabase;Landroidx/work/impl/utils/taskexecutor/TaskExecutor;)V +Landroidx/work/impl/utils/futures/AbstractFuture; +HSPLandroidx/work/impl/utils/futures/AbstractFuture;->()V +HSPLandroidx/work/impl/utils/futures/AbstractFuture;->()V +HSPLandroidx/work/impl/utils/futures/AbstractFuture;->addListener(Ljava/lang/Runnable;Ljava/util/concurrent/Executor;)V +HSPLandroidx/work/impl/utils/futures/AbstractFuture;->afterDone()V +HSPLandroidx/work/impl/utils/futures/AbstractFuture;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/work/impl/utils/futures/AbstractFuture;->clearListeners(Landroidx/work/impl/utils/futures/AbstractFuture$Listener;)Landroidx/work/impl/utils/futures/AbstractFuture$Listener; +HSPLandroidx/work/impl/utils/futures/AbstractFuture;->complete(Landroidx/work/impl/utils/futures/AbstractFuture;)V +HSPLandroidx/work/impl/utils/futures/AbstractFuture;->executeListener(Ljava/lang/Runnable;Ljava/util/concurrent/Executor;)V +HSPLandroidx/work/impl/utils/futures/AbstractFuture;->get()Ljava/lang/Object; +HSPLandroidx/work/impl/utils/futures/AbstractFuture;->getDoneValue(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/work/impl/utils/futures/AbstractFuture;->getFutureValue(Lcom/google/common/util/concurrent/ListenableFuture;)Ljava/lang/Object; +HSPLandroidx/work/impl/utils/futures/AbstractFuture;->isCancelled()Z +HSPLandroidx/work/impl/utils/futures/AbstractFuture;->isDone()Z +HSPLandroidx/work/impl/utils/futures/AbstractFuture;->releaseWaiters()V +HSPLandroidx/work/impl/utils/futures/AbstractFuture;->set(Ljava/lang/Object;)Z +HSPLandroidx/work/impl/utils/futures/AbstractFuture;->setFuture(Lcom/google/common/util/concurrent/ListenableFuture;)Z +Landroidx/work/impl/utils/futures/AbstractFuture$AtomicHelper; +HSPLandroidx/work/impl/utils/futures/AbstractFuture$AtomicHelper;->()V +HSPLandroidx/work/impl/utils/futures/AbstractFuture$AtomicHelper;->(Landroidx/work/impl/utils/futures/AbstractFuture$1;)V +Landroidx/work/impl/utils/futures/AbstractFuture$Cancellation; +Landroidx/work/impl/utils/futures/AbstractFuture$Failure; +Landroidx/work/impl/utils/futures/AbstractFuture$Listener; +HSPLandroidx/work/impl/utils/futures/AbstractFuture$Listener;->()V +HSPLandroidx/work/impl/utils/futures/AbstractFuture$Listener;->(Ljava/lang/Runnable;Ljava/util/concurrent/Executor;)V +Landroidx/work/impl/utils/futures/AbstractFuture$SafeAtomicHelper; +HSPLandroidx/work/impl/utils/futures/AbstractFuture$SafeAtomicHelper;->(Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;)V +HSPLandroidx/work/impl/utils/futures/AbstractFuture$SafeAtomicHelper;->casListeners(Landroidx/work/impl/utils/futures/AbstractFuture;Landroidx/work/impl/utils/futures/AbstractFuture$Listener;Landroidx/work/impl/utils/futures/AbstractFuture$Listener;)Z +HSPLandroidx/work/impl/utils/futures/AbstractFuture$SafeAtomicHelper;->casValue(Landroidx/work/impl/utils/futures/AbstractFuture;Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLandroidx/work/impl/utils/futures/AbstractFuture$SafeAtomicHelper;->casWaiters(Landroidx/work/impl/utils/futures/AbstractFuture;Landroidx/work/impl/utils/futures/AbstractFuture$Waiter;Landroidx/work/impl/utils/futures/AbstractFuture$Waiter;)Z +Landroidx/work/impl/utils/futures/AbstractFuture$SetFuture; +HSPLandroidx/work/impl/utils/futures/AbstractFuture$SetFuture;->(Landroidx/work/impl/utils/futures/AbstractFuture;Lcom/google/common/util/concurrent/ListenableFuture;)V +Landroidx/work/impl/utils/futures/AbstractFuture$Waiter; +HSPLandroidx/work/impl/utils/futures/AbstractFuture$Waiter;->()V +HSPLandroidx/work/impl/utils/futures/AbstractFuture$Waiter;->(Z)V +Landroidx/work/impl/utils/futures/DirectExecutor; +HSPLandroidx/work/impl/utils/futures/DirectExecutor;->$values()[Landroidx/work/impl/utils/futures/DirectExecutor; +HSPLandroidx/work/impl/utils/futures/DirectExecutor;->()V +HSPLandroidx/work/impl/utils/futures/DirectExecutor;->(Ljava/lang/String;I)V +Landroidx/work/impl/utils/futures/SettableFuture; +HSPLandroidx/work/impl/utils/futures/SettableFuture;->()V +HSPLandroidx/work/impl/utils/futures/SettableFuture;->create()Landroidx/work/impl/utils/futures/SettableFuture; +HSPLandroidx/work/impl/utils/futures/SettableFuture;->set(Ljava/lang/Object;)Z +HSPLandroidx/work/impl/utils/futures/SettableFuture;->setFuture(Lcom/google/common/util/concurrent/ListenableFuture;)Z +Landroidx/work/impl/utils/taskexecutor/SerialExecutor; +Landroidx/work/impl/utils/taskexecutor/TaskExecutor; +HSPLandroidx/work/impl/utils/taskexecutor/TaskExecutor;->executeOnTaskThread(Ljava/lang/Runnable;)V +Landroidx/work/impl/utils/taskexecutor/WorkManagerTaskExecutor; +HSPLandroidx/work/impl/utils/taskexecutor/WorkManagerTaskExecutor;->(Ljava/util/concurrent/Executor;)V +HSPLandroidx/work/impl/utils/taskexecutor/WorkManagerTaskExecutor;->getMainThreadExecutor()Ljava/util/concurrent/Executor; +HSPLandroidx/work/impl/utils/taskexecutor/WorkManagerTaskExecutor;->getSerialTaskExecutor()Landroidx/work/impl/utils/SerialExecutorImpl; +HSPLandroidx/work/impl/utils/taskexecutor/WorkManagerTaskExecutor;->getSerialTaskExecutor()Landroidx/work/impl/utils/taskexecutor/SerialExecutor; +HSPLandroidx/work/impl/utils/taskexecutor/WorkManagerTaskExecutor;->getTaskCoroutineDispatcher()Lkotlinx/coroutines/CoroutineDispatcher; +Landroidx/work/impl/utils/taskexecutor/WorkManagerTaskExecutor$1; +HSPLandroidx/work/impl/utils/taskexecutor/WorkManagerTaskExecutor$1;->(Landroidx/work/impl/utils/taskexecutor/WorkManagerTaskExecutor;)V +HSPLandroidx/work/impl/utils/taskexecutor/WorkManagerTaskExecutor$1;->execute(Ljava/lang/Runnable;)V +Lapp/cash/sqldelight/BaseTransacterImpl; +HSPLapp/cash/sqldelight/BaseTransacterImpl;->(Lapp/cash/sqldelight/db/SqlDriver;)V +HSPLapp/cash/sqldelight/BaseTransacterImpl;->getDriver()Lapp/cash/sqldelight/db/SqlDriver; +HSPLapp/cash/sqldelight/BaseTransacterImpl;->postTransactionCleanup(Lapp/cash/sqldelight/Transacter$Transaction;Lapp/cash/sqldelight/Transacter$Transaction;Ljava/lang/Throwable;Ljava/lang/Object;)Ljava/lang/Object; +Lapp/cash/sqldelight/ColumnAdapter; +Lapp/cash/sqldelight/ExecutableQuery; +HSPLapp/cash/sqldelight/ExecutableQuery;->(Lkotlin/jvm/functions/Function1;)V +HSPLapp/cash/sqldelight/ExecutableQuery;->executeAsList()Ljava/util/List; +Lapp/cash/sqldelight/ExecutableQuery$executeAsList$1; +HSPLapp/cash/sqldelight/ExecutableQuery$executeAsList$1;->(Lapp/cash/sqldelight/ExecutableQuery;)V +HSPLapp/cash/sqldelight/ExecutableQuery$executeAsList$1;->invoke(Lapp/cash/sqldelight/db/SqlCursor;)Lapp/cash/sqldelight/db/QueryResult; +HSPLapp/cash/sqldelight/ExecutableQuery$executeAsList$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lapp/cash/sqldelight/Query; +HSPLapp/cash/sqldelight/Query;->(Lkotlin/jvm/functions/Function1;)V +Lapp/cash/sqldelight/Query$Listener; +Lapp/cash/sqldelight/QueryKt; +HSPLapp/cash/sqldelight/QueryKt;->Query(I[Ljava/lang/String;Lapp/cash/sqldelight/db/SqlDriver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)Lapp/cash/sqldelight/Query; +Lapp/cash/sqldelight/RollbackException; +Lapp/cash/sqldelight/SimpleQuery; +HSPLapp/cash/sqldelight/SimpleQuery;->(I[Ljava/lang/String;Lapp/cash/sqldelight/db/SqlDriver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V +HSPLapp/cash/sqldelight/SimpleQuery;->addListener(Lapp/cash/sqldelight/Query$Listener;)V +HSPLapp/cash/sqldelight/SimpleQuery;->execute(Lkotlin/jvm/functions/Function1;)Lapp/cash/sqldelight/db/QueryResult; +HSPLapp/cash/sqldelight/SimpleQuery;->removeListener(Lapp/cash/sqldelight/Query$Listener;)V +Lapp/cash/sqldelight/Transacter; +Lapp/cash/sqldelight/Transacter$DefaultImpls; +HSPLapp/cash/sqldelight/Transacter$DefaultImpls;->transaction$default(Lapp/cash/sqldelight/Transacter;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +Lapp/cash/sqldelight/Transacter$Transaction; +HSPLapp/cash/sqldelight/Transacter$Transaction;->()V +HSPLapp/cash/sqldelight/Transacter$Transaction;->checkThreadConfinement$runtime()V +HSPLapp/cash/sqldelight/Transacter$Transaction;->enclosingTransaction$runtime()Lapp/cash/sqldelight/Transacter$Transaction; +HSPLapp/cash/sqldelight/Transacter$Transaction;->endTransaction$runtime()Lapp/cash/sqldelight/db/QueryResult; +HSPLapp/cash/sqldelight/Transacter$Transaction;->getChildrenSuccessful$runtime()Z +HSPLapp/cash/sqldelight/Transacter$Transaction;->getPendingTables$runtime()Ljava/util/Set; +HSPLapp/cash/sqldelight/Transacter$Transaction;->getPostCommitHooks$runtime()Ljava/util/List; +HSPLapp/cash/sqldelight/Transacter$Transaction;->getRegisteredQueries$runtime()Ljava/util/Set; +HSPLapp/cash/sqldelight/Transacter$Transaction;->getSuccessful$runtime()Z +HSPLapp/cash/sqldelight/Transacter$Transaction;->setSuccessful$runtime(Z)V +HSPLapp/cash/sqldelight/Transacter$Transaction;->setTransacter$runtime(Lapp/cash/sqldelight/TransacterBase;)V +Lapp/cash/sqldelight/TransacterBase; +Lapp/cash/sqldelight/TransacterImpl; +HSPLapp/cash/sqldelight/TransacterImpl;->(Lapp/cash/sqldelight/db/SqlDriver;)V +HSPLapp/cash/sqldelight/TransacterImpl;->transaction(ZLkotlin/jvm/functions/Function1;)V +HSPLapp/cash/sqldelight/TransacterImpl;->transactionWithWrapper(ZLkotlin/jvm/functions/Function1;)Ljava/lang/Object; +Lapp/cash/sqldelight/TransactionCallbacks; +Lapp/cash/sqldelight/TransactionWithReturn; +Lapp/cash/sqldelight/TransactionWithoutReturn; +Lapp/cash/sqldelight/TransactionWrapper; +PLapp/cash/sqldelight/TransactionWrapper;->(Lapp/cash/sqldelight/Transacter$Transaction;)V +Lapp/cash/sqldelight/async/coroutines/QueryExtensionsKt; +HSPLapp/cash/sqldelight/async/coroutines/QueryExtensionsKt;->awaitAsList(Lapp/cash/sqldelight/ExecutableQuery;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lapp/cash/sqldelight/async/coroutines/QueryExtensionsKt$awaitAsList$2; +HSPLapp/cash/sqldelight/async/coroutines/QueryExtensionsKt$awaitAsList$2;->(Lapp/cash/sqldelight/ExecutableQuery;)V +HSPLapp/cash/sqldelight/async/coroutines/QueryExtensionsKt$awaitAsList$2;->invoke(Lapp/cash/sqldelight/db/SqlCursor;)Lapp/cash/sqldelight/db/QueryResult; +HSPLapp/cash/sqldelight/async/coroutines/QueryExtensionsKt$awaitAsList$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lapp/cash/sqldelight/coroutines/FlowQuery; +HSPLapp/cash/sqldelight/coroutines/FlowQuery;->mapToList(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/CoroutineContext;)Lkotlinx/coroutines/flow/Flow; +HSPLapp/cash/sqldelight/coroutines/FlowQuery;->toFlow(Lapp/cash/sqldelight/Query;)Lkotlinx/coroutines/flow/Flow; +Lapp/cash/sqldelight/coroutines/FlowQuery$asFlow$1; +HSPLapp/cash/sqldelight/coroutines/FlowQuery$asFlow$1;->(Lapp/cash/sqldelight/Query;Lkotlin/coroutines/Continuation;)V +HSPLapp/cash/sqldelight/coroutines/FlowQuery$asFlow$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLapp/cash/sqldelight/coroutines/FlowQuery$asFlow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLapp/cash/sqldelight/coroutines/FlowQuery$asFlow$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLapp/cash/sqldelight/coroutines/FlowQuery$asFlow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lapp/cash/sqldelight/coroutines/FlowQuery$asFlow$1$$ExternalSyntheticLambda0; +HSPLapp/cash/sqldelight/coroutines/FlowQuery$asFlow$1$$ExternalSyntheticLambda0;->(Lkotlinx/coroutines/channels/Channel;)V +Lapp/cash/sqldelight/coroutines/FlowQuery$mapToList$$inlined$map$1; +HSPLapp/cash/sqldelight/coroutines/FlowQuery$mapToList$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/CoroutineContext;)V +HSPLapp/cash/sqldelight/coroutines/FlowQuery$mapToList$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lapp/cash/sqldelight/coroutines/FlowQuery$mapToList$$inlined$map$1$2; +HSPLapp/cash/sqldelight/coroutines/FlowQuery$mapToList$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/CoroutineContext;)V +HSPLapp/cash/sqldelight/coroutines/FlowQuery$mapToList$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lapp/cash/sqldelight/coroutines/FlowQuery$mapToList$$inlined$map$1$2$1; +HSPLapp/cash/sqldelight/coroutines/FlowQuery$mapToList$$inlined$map$1$2$1;->(Lapp/cash/sqldelight/coroutines/FlowQuery$mapToList$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +HSPLapp/cash/sqldelight/coroutines/FlowQuery$mapToList$$inlined$map$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lapp/cash/sqldelight/coroutines/FlowQuery$mapToList$1$1; +HSPLapp/cash/sqldelight/coroutines/FlowQuery$mapToList$1$1;->(Lapp/cash/sqldelight/Query;Lkotlin/coroutines/Continuation;)V +HSPLapp/cash/sqldelight/coroutines/FlowQuery$mapToList$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLapp/cash/sqldelight/coroutines/FlowQuery$mapToList$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lapp/cash/sqldelight/db/AfterVersion; +Lapp/cash/sqldelight/db/QueryResult; +HSPLapp/cash/sqldelight/db/QueryResult;->()V +Lapp/cash/sqldelight/db/QueryResult$AsyncValue; +Lapp/cash/sqldelight/db/QueryResult$Companion; +HSPLapp/cash/sqldelight/db/QueryResult$Companion;->()V +HSPLapp/cash/sqldelight/db/QueryResult$Companion;->()V +HSPLapp/cash/sqldelight/db/QueryResult$Companion;->getUnit-mlR-ZEE()Ljava/lang/Object; +Lapp/cash/sqldelight/db/QueryResult$Value; +HSPLapp/cash/sqldelight/db/QueryResult$Value;->(Ljava/lang/Object;)V +HSPLapp/cash/sqldelight/db/QueryResult$Value;->await(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLapp/cash/sqldelight/db/QueryResult$Value;->await-impl(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLapp/cash/sqldelight/db/QueryResult$Value;->box-impl(Ljava/lang/Object;)Lapp/cash/sqldelight/db/QueryResult$Value; +HSPLapp/cash/sqldelight/db/QueryResult$Value;->constructor-impl(Ljava/lang/Object;)Ljava/lang/Object; +HSPLapp/cash/sqldelight/db/QueryResult$Value;->getValue()Ljava/lang/Object; +Lapp/cash/sqldelight/db/SqlCursor; +Lapp/cash/sqldelight/db/SqlDriver; +Lapp/cash/sqldelight/db/SqlDriver$DefaultImpls; +HSPLapp/cash/sqldelight/db/SqlDriver$DefaultImpls;->execute$default(Lapp/cash/sqldelight/db/SqlDriver;Ljava/lang/Integer;Ljava/lang/String;ILkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lapp/cash/sqldelight/db/QueryResult; +Lapp/cash/sqldelight/db/SqlPreparedStatement; +Lapp/cash/sqldelight/db/SqlSchema; +Lapp/cash/sqldelight/driver/android/AndroidCursor; +HSPLapp/cash/sqldelight/driver/android/AndroidCursor;->(Landroid/database/Cursor;Ljava/lang/Long;)V +HSPLapp/cash/sqldelight/driver/android/AndroidCursor;->next()Lapp/cash/sqldelight/db/QueryResult; +HSPLapp/cash/sqldelight/driver/android/AndroidCursor;->next-mlR-ZEE()Ljava/lang/Object; +Lapp/cash/sqldelight/driver/android/AndroidPreparedStatement; +HSPLapp/cash/sqldelight/driver/android/AndroidPreparedStatement;->(Landroidx/sqlite/db/SupportSQLiteStatement;)V +HSPLapp/cash/sqldelight/driver/android/AndroidPreparedStatement;->close()V +HSPLapp/cash/sqldelight/driver/android/AndroidPreparedStatement;->execute()J +Lapp/cash/sqldelight/driver/android/AndroidQuery; +HSPLapp/cash/sqldelight/driver/android/AndroidQuery;->(Ljava/lang/String;Landroidx/sqlite/db/SupportSQLiteDatabase;ILjava/lang/Long;)V +HSPLapp/cash/sqldelight/driver/android/AndroidQuery;->bindTo(Landroidx/sqlite/db/SupportSQLiteProgram;)V +HSPLapp/cash/sqldelight/driver/android/AndroidQuery;->close()V +HSPLapp/cash/sqldelight/driver/android/AndroidQuery;->executeQuery(Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +HSPLapp/cash/sqldelight/driver/android/AndroidQuery;->getArgCount()I +HSPLapp/cash/sqldelight/driver/android/AndroidQuery;->getSql()Ljava/lang/String; +Lapp/cash/sqldelight/driver/android/AndroidSqliteDriver; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver;->(Landroidx/sqlite/db/SupportSQLiteOpenHelper;)V +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver;->(Landroidx/sqlite/db/SupportSQLiteOpenHelper;Landroidx/sqlite/db/SupportSQLiteDatabase;ILjava/lang/Long;)V +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver;->(Landroidx/sqlite/db/SupportSQLiteOpenHelper;Landroidx/sqlite/db/SupportSQLiteDatabase;ILjava/lang/Long;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver;->access$getDatabase(Lapp/cash/sqldelight/driver/android/AndroidSqliteDriver;)Landroidx/sqlite/db/SupportSQLiteDatabase; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver;->access$getOpenHelper$p(Lapp/cash/sqldelight/driver/android/AndroidSqliteDriver;)Landroidx/sqlite/db/SupportSQLiteOpenHelper; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver;->access$getTransactions$p(Lapp/cash/sqldelight/driver/android/AndroidSqliteDriver;)Ljava/lang/ThreadLocal; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver;->access$getWindowSizeBytes$p(Lapp/cash/sqldelight/driver/android/AndroidSqliteDriver;)Ljava/lang/Long; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver;->addListener([Ljava/lang/String;Lapp/cash/sqldelight/Query$Listener;)V +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver;->execute(Ljava/lang/Integer;Ljava/lang/String;ILkotlin/jvm/functions/Function1;)Lapp/cash/sqldelight/db/QueryResult; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver;->execute-zeHU3Mk(Ljava/lang/Integer;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver;->executeQuery(Ljava/lang/Integer;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/functions/Function1;)Lapp/cash/sqldelight/db/QueryResult; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver;->executeQuery-0yMERmw(Ljava/lang/Integer;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/functions/Function1;)Ljava/lang/Object; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver;->getDatabase()Landroidx/sqlite/db/SupportSQLiteDatabase; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver;->newTransaction()Lapp/cash/sqldelight/db/QueryResult; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver;->removeListener([Ljava/lang/String;Lapp/cash/sqldelight/Query$Listener;)V +Lapp/cash/sqldelight/driver/android/AndroidSqliteDriver$Callback; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$Callback;->(Lapp/cash/sqldelight/db/SqlSchema;[Lapp/cash/sqldelight/db/AfterVersion;)V +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$Callback;->onCreate(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +Lapp/cash/sqldelight/driver/android/AndroidSqliteDriver$Transaction; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$Transaction;->(Lapp/cash/sqldelight/driver/android/AndroidSqliteDriver;Lapp/cash/sqldelight/Transacter$Transaction;)V +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$Transaction;->endTransaction(Z)Lapp/cash/sqldelight/db/QueryResult; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$Transaction;->getEnclosingTransaction()Lapp/cash/sqldelight/Transacter$Transaction; +Lapp/cash/sqldelight/driver/android/AndroidSqliteDriver$database$2; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$database$2;->(Lapp/cash/sqldelight/driver/android/AndroidSqliteDriver;Landroidx/sqlite/db/SupportSQLiteDatabase;)V +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$database$2;->invoke()Landroidx/sqlite/db/SupportSQLiteDatabase; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$database$2;->invoke()Ljava/lang/Object; +Lapp/cash/sqldelight/driver/android/AndroidSqliteDriver$execute$1; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$execute$1;->(Lapp/cash/sqldelight/driver/android/AndroidSqliteDriver;Ljava/lang/String;)V +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$execute$1;->invoke()Lapp/cash/sqldelight/driver/android/AndroidStatement; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$execute$1;->invoke()Ljava/lang/Object; +Lapp/cash/sqldelight/driver/android/AndroidSqliteDriver$execute$2; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$execute$2;->()V +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$execute$2;->()V +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$execute$2;->invoke(Lapp/cash/sqldelight/driver/android/AndroidStatement;)Ljava/lang/Long; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$execute$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lapp/cash/sqldelight/driver/android/AndroidSqliteDriver$executeQuery$1; +PLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$executeQuery$1;->(Ljava/lang/String;Lapp/cash/sqldelight/driver/android/AndroidSqliteDriver;I)V +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$executeQuery$1;->invoke()Lapp/cash/sqldelight/driver/android/AndroidStatement; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$executeQuery$1;->invoke()Ljava/lang/Object; +Lapp/cash/sqldelight/driver/android/AndroidSqliteDriver$executeQuery$2; +PLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$executeQuery$2;->(Lkotlin/jvm/functions/Function1;)V +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$executeQuery$2;->invoke(Lapp/cash/sqldelight/driver/android/AndroidStatement;)Ljava/lang/Object; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$executeQuery$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lapp/cash/sqldelight/driver/android/AndroidSqliteDriver$statements$1; +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$statements$1;->(I)V +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$statements$1;->entryRemoved(ZILapp/cash/sqldelight/driver/android/AndroidStatement;Lapp/cash/sqldelight/driver/android/AndroidStatement;)V +HSPLapp/cash/sqldelight/driver/android/AndroidSqliteDriver$statements$1;->entryRemoved(ZLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V +Lapp/cash/sqldelight/driver/android/AndroidStatement; +Lapp/cash/sqldelight/internal/CurrentThreadIdKt; +HSPLapp/cash/sqldelight/internal/CurrentThreadIdKt;->currentThreadId()J +Larrow/core/AndThen1; +HSPLarrow/core/AndThen1;->()V +HSPLarrow/core/AndThen1;->()V +HSPLarrow/core/AndThen1;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLarrow/core/AndThen1;->compose(Lkotlin/jvm/functions/Function1;)Larrow/core/AndThen1; +HSPLarrow/core/AndThen1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Larrow/core/AndThen1$Companion; +HSPLarrow/core/AndThen1$Companion;->()V +HSPLarrow/core/AndThen1$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLarrow/core/AndThen1$Companion;->invoke(Lkotlin/jvm/functions/Function1;)Larrow/core/AndThen1; +HSPLarrow/core/AndThen1$Companion;->loop(Larrow/core/AndThen1;Ljava/lang/Object;I)Ljava/lang/Object; +Larrow/core/AndThen1$Single; +HSPLarrow/core/AndThen1$Single;->(Lkotlin/jvm/functions/Function1;I)V +HSPLarrow/core/AndThen1$Single;->getF()Lkotlin/jvm/functions/Function1; +HSPLarrow/core/AndThen1$Single;->getIndex()I +Larrow/core/AndThen1$compose$1; +HSPLarrow/core/AndThen1$compose$1;->(Larrow/core/AndThen1;Lkotlin/jvm/functions/Function1;)V +HSPLarrow/core/AndThen1$compose$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Larrow/core/Composition; +HSPLarrow/core/Composition;->compose(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function1; +Larrow/core/Either; +HSPLarrow/core/Either;->()V +HSPLarrow/core/Either;->()V +HSPLarrow/core/Either;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLarrow/core/Either;->getOrNull()Ljava/lang/Object; +Larrow/core/Either$Companion; +HSPLarrow/core/Either$Companion;->()V +HSPLarrow/core/Either$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Larrow/core/Either$Left; +Larrow/core/Either$Right; +HSPLarrow/core/Either$Right;->()V +HSPLarrow/core/Either$Right;->(Ljava/lang/Object;)V +HSPLarrow/core/Either$Right;->getValue()Ljava/lang/Object; +Larrow/core/Either$Right$Companion; +HSPLarrow/core/Either$Right$Companion;->()V +HSPLarrow/core/Either$Right$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Larrow/core/EitherKt; +HSPLarrow/core/EitherKt;->right(Ljava/lang/Object;)Larrow/core/Either; +Larrow/core/IterableKt; +HSPLarrow/core/IterableKt;->()V +HSPLarrow/core/IterableKt;->widen(Ljava/util/List;)Ljava/util/List; +Larrow/core/None; +Larrow/core/Option; +HSPLarrow/core/Option;->()V +HSPLarrow/core/Option;->()V +HSPLarrow/core/Option;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Larrow/core/Option$Companion; +HSPLarrow/core/Option$Companion;->()V +HSPLarrow/core/Option$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Larrow/core/Partials; +HSPLarrow/core/Partials;->partially1(Lkotlin/jvm/functions/Function1;Ljava/lang/Object;)Lkotlin/jvm/functions/Function0; +HSPLarrow/core/Partials;->partially1(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;)Lkotlin/jvm/functions/Function1; +HSPLarrow/core/Partials;->partially1Effect(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;)Lkotlin/jvm/functions/Function1; +Larrow/core/Partials$partially1$1; +HSPLarrow/core/Partials$partially1$1;->(Lkotlin/jvm/functions/Function1;Ljava/lang/Object;)V +HSPLarrow/core/Partials$partially1$1;->invoke()Ljava/lang/Object; +Larrow/core/Partials$partially1$2; +HSPLarrow/core/Partials$partially1$2;->(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;)V +Larrow/core/Partials$partially1$23; +HSPLarrow/core/Partials$partially1$23;->(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)V +Larrow/core/PredefKt; +Larrow/core/Some; +HSPLarrow/core/Some;->()V +HSPLarrow/core/Some;->(Ljava/lang/Object;)V +HSPLarrow/core/Some;->getValue()Ljava/lang/Object; +Larrow/core/Some$Companion; +HSPLarrow/core/Some$Companion;->()V +HSPLarrow/core/Some$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Larrow/optics/Fold; +Larrow/optics/Getter; +Larrow/optics/OptionalKt; +HSPLarrow/optics/OptionalKt;->Optional(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Larrow/optics/POptional; +Larrow/optics/OptionalKt$Optional$1; +HSPLarrow/optics/OptionalKt$Optional$1;->(Lkotlin/jvm/functions/Function1;)V +Larrow/optics/PEvery; +Larrow/optics/PLens; +HSPLarrow/optics/PLens;->()V +Larrow/optics/PLens$Companion; +HSPLarrow/optics/PLens$Companion;->()V +HSPLarrow/optics/PLens$Companion;->()V +HSPLarrow/optics/PLens$Companion;->invoke(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Larrow/optics/PLens; +Larrow/optics/PLens$Companion$invoke$1; +HSPLarrow/optics/PLens$Companion$invoke$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)V +Larrow/optics/POptional; +HSPLarrow/optics/POptional;->()V +Larrow/optics/POptional$Companion; +HSPLarrow/optics/POptional$Companion;->()V +HSPLarrow/optics/POptional$Companion;->()V +HSPLarrow/optics/POptional$Companion;->invoke(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Larrow/optics/POptional; +Larrow/optics/POptional$Companion$invoke$1; +HSPLarrow/optics/POptional$Companion$invoke$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)V +Larrow/optics/POptionalGetter; +Larrow/optics/PSetter; +Larrow/optics/PTraversal; +Lch/qos/logback/classic/Level; +HSPLch/qos/logback/classic/Level;->()V +HSPLch/qos/logback/classic/Level;->(ILjava/lang/String;)V +HSPLch/qos/logback/classic/Level;->toLevel(Ljava/lang/String;)Lch/qos/logback/classic/Level; +HSPLch/qos/logback/classic/Level;->toLevel(Ljava/lang/String;Lch/qos/logback/classic/Level;)Lch/qos/logback/classic/Level; +HSPLch/qos/logback/classic/Level;->toString()Ljava/lang/String; +Lch/qos/logback/classic/Logger; +HSPLch/qos/logback/classic/Logger;->()V +HSPLch/qos/logback/classic/Logger;->(Ljava/lang/String;Lch/qos/logback/classic/Logger;Lch/qos/logback/classic/LoggerContext;)V +HSPLch/qos/logback/classic/Logger;->addAppender(Lch/qos/logback/core/Appender;)V +HSPLch/qos/logback/classic/Logger;->createChildByName(Ljava/lang/String;)Lch/qos/logback/classic/Logger; +HSPLch/qos/logback/classic/Logger;->getChildByName(Ljava/lang/String;)Lch/qos/logback/classic/Logger; +HSPLch/qos/logback/classic/Logger;->getName()Ljava/lang/String; +HSPLch/qos/logback/classic/Logger;->setLevel(Lch/qos/logback/classic/Level;)V +HSPLch/qos/logback/classic/Logger;->toString()Ljava/lang/String; +Lch/qos/logback/classic/LoggerContext; +HSPLch/qos/logback/classic/LoggerContext;->()V +HSPLch/qos/logback/classic/LoggerContext;->fireOnLevelChange(Lch/qos/logback/classic/Logger;Lch/qos/logback/classic/Level;)V +HSPLch/qos/logback/classic/LoggerContext;->fireOnStart()V +HSPLch/qos/logback/classic/LoggerContext;->getLogger(Ljava/lang/String;)Lch/qos/logback/classic/Logger; +HSPLch/qos/logback/classic/LoggerContext;->getLogger(Ljava/lang/String;)Lorg/slf4j/Logger; +HSPLch/qos/logback/classic/LoggerContext;->incSize()V +HSPLch/qos/logback/classic/LoggerContext;->initEvaluatorMap()V +HSPLch/qos/logback/classic/LoggerContext;->isPackagingDataEnabled()Z +HSPLch/qos/logback/classic/LoggerContext;->putProperty(Ljava/lang/String;Ljava/lang/String;)V +HSPLch/qos/logback/classic/LoggerContext;->setName(Ljava/lang/String;)V +HSPLch/qos/logback/classic/LoggerContext;->setPackagingDataEnabled(Z)V +HSPLch/qos/logback/classic/LoggerContext;->start()V +HSPLch/qos/logback/classic/LoggerContext;->updateLoggerContextVO()V +Lch/qos/logback/classic/PatternLayout; +HSPLch/qos/logback/classic/PatternLayout;->()V +HSPLch/qos/logback/classic/PatternLayout;->()V +HSPLch/qos/logback/classic/PatternLayout;->getDefaultConverterMap()Ljava/util/Map; +Lch/qos/logback/classic/android/LogcatAppender; +HSPLch/qos/logback/classic/android/LogcatAppender;->()V +HSPLch/qos/logback/classic/android/LogcatAppender;->setEncoder(Lch/qos/logback/classic/encoder/PatternLayoutEncoder;)V +HSPLch/qos/logback/classic/android/LogcatAppender;->setTagEncoder(Lch/qos/logback/classic/encoder/PatternLayoutEncoder;)V +HSPLch/qos/logback/classic/android/LogcatAppender;->start()V +Lch/qos/logback/classic/encoder/PatternLayoutEncoder; +HSPLch/qos/logback/classic/encoder/PatternLayoutEncoder;->()V +HSPLch/qos/logback/classic/encoder/PatternLayoutEncoder;->start()V +Lch/qos/logback/classic/joran/JoranConfigurator; +HSPLch/qos/logback/classic/joran/JoranConfigurator;->()V +HSPLch/qos/logback/classic/joran/JoranConfigurator;->addDefaultNestedComponentRegistryRules(Lch/qos/logback/core/joran/spi/DefaultNestedComponentRegistry;)V +HSPLch/qos/logback/classic/joran/JoranConfigurator;->addInstanceRules(Lch/qos/logback/core/joran/spi/RuleStore;)V +Lch/qos/logback/classic/joran/action/ConditionalIncludeAction; +HSPLch/qos/logback/classic/joran/action/ConditionalIncludeAction;->()V +Lch/qos/logback/classic/joran/action/ConfigurationAction; +HSPLch/qos/logback/classic/joran/action/ConfigurationAction;->()V +HSPLch/qos/logback/classic/joran/action/ConfigurationAction;->()V +HSPLch/qos/logback/classic/joran/action/ConfigurationAction;->begin(Lch/qos/logback/core/joran/spi/InterpretationContext;Ljava/lang/String;Lorg/xml/sax/Attributes;)V +HSPLch/qos/logback/classic/joran/action/ConfigurationAction;->end(Lch/qos/logback/core/joran/spi/InterpretationContext;Ljava/lang/String;)V +HSPLch/qos/logback/classic/joran/action/ConfigurationAction;->processScanAttrib(Lch/qos/logback/core/joran/spi/InterpretationContext;Lorg/xml/sax/Attributes;)V +Lch/qos/logback/classic/joran/action/ContextNameAction; +HSPLch/qos/logback/classic/joran/action/ContextNameAction;->()V +Lch/qos/logback/classic/joran/action/FindIncludeAction; +HSPLch/qos/logback/classic/joran/action/FindIncludeAction;->()V +Lch/qos/logback/classic/joran/action/LevelAction; +HSPLch/qos/logback/classic/joran/action/LevelAction;->()V +Lch/qos/logback/classic/joran/action/LoggerAction; +HSPLch/qos/logback/classic/joran/action/LoggerAction;->()V +Lch/qos/logback/classic/joran/action/LoggerContextListenerAction; +HSPLch/qos/logback/classic/joran/action/LoggerContextListenerAction;->()V +Lch/qos/logback/classic/joran/action/ReceiverAction; +HSPLch/qos/logback/classic/joran/action/ReceiverAction;->()V +Lch/qos/logback/classic/joran/action/RootLoggerAction; +HSPLch/qos/logback/classic/joran/action/RootLoggerAction;->()V +HSPLch/qos/logback/classic/joran/action/RootLoggerAction;->begin(Lch/qos/logback/core/joran/spi/InterpretationContext;Ljava/lang/String;Lorg/xml/sax/Attributes;)V +HSPLch/qos/logback/classic/joran/action/RootLoggerAction;->end(Lch/qos/logback/core/joran/spi/InterpretationContext;Ljava/lang/String;)V +Lch/qos/logback/classic/pattern/Abbreviator; +Lch/qos/logback/classic/pattern/CallerDataConverter; +Lch/qos/logback/classic/pattern/ClassOfCallerConverter; +Lch/qos/logback/classic/pattern/ClassicConverter; +HSPLch/qos/logback/classic/pattern/ClassicConverter;->()V +Lch/qos/logback/classic/pattern/ContextNameConverter; +Lch/qos/logback/classic/pattern/DateConverter; +Lch/qos/logback/classic/pattern/EnsureExceptionHandling; +HSPLch/qos/logback/classic/pattern/EnsureExceptionHandling;->()V +HSPLch/qos/logback/classic/pattern/EnsureExceptionHandling;->chainHandlesThrowable(Lch/qos/logback/core/pattern/Converter;)Z +HSPLch/qos/logback/classic/pattern/EnsureExceptionHandling;->process(Lch/qos/logback/core/Context;Lch/qos/logback/core/pattern/Converter;)V +Lch/qos/logback/classic/pattern/ExtendedThrowableProxyConverter; +Lch/qos/logback/classic/pattern/FileOfCallerConverter; +Lch/qos/logback/classic/pattern/LevelConverter; +Lch/qos/logback/classic/pattern/LineOfCallerConverter; +Lch/qos/logback/classic/pattern/LineSeparatorConverter; +Lch/qos/logback/classic/pattern/LocalSequenceNumberConverter; +Lch/qos/logback/classic/pattern/LoggerConverter; +HSPLch/qos/logback/classic/pattern/LoggerConverter;->()V +Lch/qos/logback/classic/pattern/MDCConverter; +Lch/qos/logback/classic/pattern/MarkerConverter; +Lch/qos/logback/classic/pattern/MessageConverter; +HSPLch/qos/logback/classic/pattern/MessageConverter;->()V +Lch/qos/logback/classic/pattern/MethodOfCallerConverter; +Lch/qos/logback/classic/pattern/NamedConverter; +HSPLch/qos/logback/classic/pattern/NamedConverter;->()V +HSPLch/qos/logback/classic/pattern/NamedConverter;->start()V +Lch/qos/logback/classic/pattern/NopThrowableInformationConverter; +HSPLch/qos/logback/classic/pattern/NopThrowableInformationConverter;->()V +Lch/qos/logback/classic/pattern/PropertyConverter; +Lch/qos/logback/classic/pattern/RelativeTimeConverter; +Lch/qos/logback/classic/pattern/RootCauseFirstThrowableProxyConverter; +Lch/qos/logback/classic/pattern/TargetLengthBasedClassNameAbbreviator; +HSPLch/qos/logback/classic/pattern/TargetLengthBasedClassNameAbbreviator;->(I)V +Lch/qos/logback/classic/pattern/ThreadConverter; +HSPLch/qos/logback/classic/pattern/ThreadConverter;->()V +Lch/qos/logback/classic/pattern/ThrowableHandlingConverter; +HSPLch/qos/logback/classic/pattern/ThrowableHandlingConverter;->()V +Lch/qos/logback/classic/pattern/ThrowableProxyConverter; +HSPLch/qos/logback/classic/pattern/ThrowableProxyConverter;->()V +HSPLch/qos/logback/classic/pattern/ThrowableProxyConverter;->start()V +Lch/qos/logback/classic/sift/SiftAction; +HSPLch/qos/logback/classic/sift/SiftAction;->()V +Lch/qos/logback/classic/spi/LoggerContextVO; +HSPLch/qos/logback/classic/spi/LoggerContextVO;->(Lch/qos/logback/classic/LoggerContext;)V +Lch/qos/logback/classic/spi/TurboFilterList; +HSPLch/qos/logback/classic/spi/TurboFilterList;->()V +Lch/qos/logback/classic/util/ContextInitializer; +HSPLch/qos/logback/classic/util/ContextInitializer;->(Lch/qos/logback/classic/LoggerContext;)V +HSPLch/qos/logback/classic/util/ContextInitializer;->autoConfig()V +HSPLch/qos/logback/classic/util/ContextInitializer;->findConfigFileFromSystemProperties(Z)Ljava/net/URL; +HSPLch/qos/logback/classic/util/ContextInitializer;->findConfigFileURLFromAssets(Z)Ljava/net/URL; +HSPLch/qos/logback/classic/util/ContextInitializer;->getResource(Ljava/lang/String;Ljava/lang/ClassLoader;Z)Ljava/net/URL; +HSPLch/qos/logback/classic/util/ContextInitializer;->statusOnResourceSearch(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/String;)V +Lch/qos/logback/classic/util/DefaultNestedComponentRules; +HSPLch/qos/logback/classic/util/DefaultNestedComponentRules;->addDefaultNestedComponentRegistryRules(Lch/qos/logback/core/joran/spi/DefaultNestedComponentRegistry;)V +Lch/qos/logback/classic/util/LogbackMDCAdapter; +HSPLch/qos/logback/classic/util/LogbackMDCAdapter;->()V +Lch/qos/logback/classic/util/LoggerNameUtil; +HSPLch/qos/logback/classic/util/LoggerNameUtil;->getSeparatorIndexOf(Ljava/lang/String;I)I +Lch/qos/logback/core/Appender; +Lch/qos/logback/core/AppenderBase; +Lch/qos/logback/core/BasicStatusManager; +HSPLch/qos/logback/core/BasicStatusManager;->()V +HSPLch/qos/logback/core/BasicStatusManager;->add(Lch/qos/logback/core/status/Status;)V +HSPLch/qos/logback/core/BasicStatusManager;->fireStatusAddEvent(Lch/qos/logback/core/status/Status;)V +HSPLch/qos/logback/core/BasicStatusManager;->getCopyOfStatusList()Ljava/util/List; +HSPLch/qos/logback/core/BasicStatusManager;->getCopyOfStatusListenerList()Ljava/util/List; +Lch/qos/logback/core/Context; +Lch/qos/logback/core/ContextBase; +HSPLch/qos/logback/core/ContextBase;->()V +HSPLch/qos/logback/core/ContextBase;->getBirthTime()J +HSPLch/qos/logback/core/ContextBase;->getConfigurationLock()Ljava/lang/Object; +HSPLch/qos/logback/core/ContextBase;->getCopyOfPropertyMap()Ljava/util/Map; +HSPLch/qos/logback/core/ContextBase;->getName()Ljava/lang/String; +HSPLch/qos/logback/core/ContextBase;->getObject(Ljava/lang/String;)Ljava/lang/Object; +HSPLch/qos/logback/core/ContextBase;->getStatusManager()Lch/qos/logback/core/status/StatusManager; +HSPLch/qos/logback/core/ContextBase;->initCollisionMaps()V +HSPLch/qos/logback/core/ContextBase;->putObject(Ljava/lang/String;Ljava/lang/Object;)V +HSPLch/qos/logback/core/ContextBase;->putProperty(Ljava/lang/String;Ljava/lang/String;)V +HSPLch/qos/logback/core/ContextBase;->setName(Ljava/lang/String;)V +HSPLch/qos/logback/core/ContextBase;->start()V +Lch/qos/logback/core/CoreConstants; +HSPLch/qos/logback/core/CoreConstants;->()V +Lch/qos/logback/core/Layout; +Lch/qos/logback/core/LayoutBase; +HSPLch/qos/logback/core/LayoutBase;->()V +HSPLch/qos/logback/core/LayoutBase;->getContext()Lch/qos/logback/core/Context; +HSPLch/qos/logback/core/LayoutBase;->setContext(Lch/qos/logback/core/Context;)V +HSPLch/qos/logback/core/LayoutBase;->start()V +Lch/qos/logback/core/UnsynchronizedAppenderBase; +HSPLch/qos/logback/core/UnsynchronizedAppenderBase;->()V +HSPLch/qos/logback/core/UnsynchronizedAppenderBase;->setName(Ljava/lang/String;)V +HSPLch/qos/logback/core/UnsynchronizedAppenderBase;->start()V +Lch/qos/logback/core/android/AndroidContextUtil; +HSPLch/qos/logback/core/android/AndroidContextUtil;->containsProperties(Ljava/lang/String;)Z +Lch/qos/logback/core/android/SystemPropertiesProxy; +HSPLch/qos/logback/core/android/SystemPropertiesProxy;->()V +HSPLch/qos/logback/core/android/SystemPropertiesProxy;->(Ljava/lang/ClassLoader;)V +HSPLch/qos/logback/core/android/SystemPropertiesProxy;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLch/qos/logback/core/android/SystemPropertiesProxy;->getInstance()Lch/qos/logback/core/android/SystemPropertiesProxy; +HSPLch/qos/logback/core/android/SystemPropertiesProxy;->setClassLoader(Ljava/lang/ClassLoader;)V +Lch/qos/logback/core/boolex/EvaluationException; +Lch/qos/logback/core/encoder/Encoder; +Lch/qos/logback/core/encoder/EncoderBase; +HSPLch/qos/logback/core/encoder/EncoderBase;->()V +Lch/qos/logback/core/encoder/LayoutWrappingEncoder; +HSPLch/qos/logback/core/encoder/LayoutWrappingEncoder;->()V +HSPLch/qos/logback/core/encoder/LayoutWrappingEncoder;->getLayout()Lch/qos/logback/core/Layout; +HSPLch/qos/logback/core/encoder/LayoutWrappingEncoder;->setParent(Lch/qos/logback/core/Appender;)V +HSPLch/qos/logback/core/encoder/LayoutWrappingEncoder;->start()V +HSPLch/qos/logback/core/encoder/LayoutWrappingEncoder;->stop()V +Lch/qos/logback/core/filter/Filter; +Lch/qos/logback/core/helpers/CyclicBuffer; +HSPLch/qos/logback/core/helpers/CyclicBuffer;->(I)V +HSPLch/qos/logback/core/helpers/CyclicBuffer;->asList()Ljava/util/List; +HSPLch/qos/logback/core/helpers/CyclicBuffer;->init(I)V +HSPLch/qos/logback/core/helpers/CyclicBuffer;->length()I +Lch/qos/logback/core/joran/GenericConfigurator; +HSPLch/qos/logback/core/joran/GenericConfigurator;->()V +HSPLch/qos/logback/core/joran/GenericConfigurator;->buildInterpreter()V +HSPLch/qos/logback/core/joran/GenericConfigurator;->doConfigure(Ljava/io/InputStream;Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/GenericConfigurator;->doConfigure(Ljava/net/URL;)V +HSPLch/qos/logback/core/joran/GenericConfigurator;->doConfigure(Ljava/util/List;)V +HSPLch/qos/logback/core/joran/GenericConfigurator;->doConfigure(Lorg/xml/sax/InputSource;)V +HSPLch/qos/logback/core/joran/GenericConfigurator;->informContextOfURLUsedForConfiguration(Lch/qos/logback/core/Context;Ljava/net/URL;)V +HSPLch/qos/logback/core/joran/GenericConfigurator;->initialElementPath()Lch/qos/logback/core/joran/spi/ElementPath; +HSPLch/qos/logback/core/joran/GenericConfigurator;->registerSafeConfiguration(Ljava/util/List;)V +Lch/qos/logback/core/joran/JoranConfiguratorBase; +HSPLch/qos/logback/core/joran/JoranConfiguratorBase;->()V +HSPLch/qos/logback/core/joran/JoranConfiguratorBase;->addImplicitRules(Lch/qos/logback/core/joran/spi/Interpreter;)V +HSPLch/qos/logback/core/joran/JoranConfiguratorBase;->addInstanceRules(Lch/qos/logback/core/joran/spi/RuleStore;)V +HSPLch/qos/logback/core/joran/JoranConfiguratorBase;->buildInterpreter()V +Lch/qos/logback/core/joran/action/AbstractIncludeAction; +HSPLch/qos/logback/core/joran/action/AbstractIncludeAction;->()V +Lch/qos/logback/core/joran/action/Action; +HSPLch/qos/logback/core/joran/action/Action;->()V +Lch/qos/logback/core/joran/action/AppenderAction; +HSPLch/qos/logback/core/joran/action/AppenderAction;->()V +HSPLch/qos/logback/core/joran/action/AppenderAction;->begin(Lch/qos/logback/core/joran/spi/InterpretationContext;Ljava/lang/String;Lorg/xml/sax/Attributes;)V +HSPLch/qos/logback/core/joran/action/AppenderAction;->end(Lch/qos/logback/core/joran/spi/InterpretationContext;Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/action/AppenderAction;->warnDeprecated(Ljava/lang/String;)V +Lch/qos/logback/core/joran/action/AppenderRefAction; +HSPLch/qos/logback/core/joran/action/AppenderRefAction;->()V +HSPLch/qos/logback/core/joran/action/AppenderRefAction;->begin(Lch/qos/logback/core/joran/spi/InterpretationContext;Ljava/lang/String;Lorg/xml/sax/Attributes;)V +HSPLch/qos/logback/core/joran/action/AppenderRefAction;->end(Lch/qos/logback/core/joran/spi/InterpretationContext;Ljava/lang/String;)V +Lch/qos/logback/core/joran/action/ConversionRuleAction; +HSPLch/qos/logback/core/joran/action/ConversionRuleAction;->()V +Lch/qos/logback/core/joran/action/DefinePropertyAction; +HSPLch/qos/logback/core/joran/action/DefinePropertyAction;->()V +Lch/qos/logback/core/joran/action/IADataForBasicProperty; +HSPLch/qos/logback/core/joran/action/IADataForBasicProperty;->(Lch/qos/logback/core/joran/util/PropertySetter;Lch/qos/logback/core/util/AggregationType;Ljava/lang/String;)V +Lch/qos/logback/core/joran/action/IADataForComplexProperty; +HSPLch/qos/logback/core/joran/action/IADataForComplexProperty;->(Lch/qos/logback/core/joran/util/PropertySetter;Lch/qos/logback/core/util/AggregationType;Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/action/IADataForComplexProperty;->getAggregationType()Lch/qos/logback/core/util/AggregationType; +HSPLch/qos/logback/core/joran/action/IADataForComplexProperty;->getComplexPropertyName()Ljava/lang/String; +HSPLch/qos/logback/core/joran/action/IADataForComplexProperty;->getNestedComplexProperty()Ljava/lang/Object; +HSPLch/qos/logback/core/joran/action/IADataForComplexProperty;->setNestedComplexProperty(Ljava/lang/Object;)V +Lch/qos/logback/core/joran/action/ImplicitAction; +HSPLch/qos/logback/core/joran/action/ImplicitAction;->()V +Lch/qos/logback/core/joran/action/IncludeAction; +HSPLch/qos/logback/core/joran/action/IncludeAction;->()V +HSPLch/qos/logback/core/joran/action/IncludeAction;->setEventOffset(I)V +Lch/qos/logback/core/joran/action/NOPAction; +HSPLch/qos/logback/core/joran/action/NOPAction;->()V +Lch/qos/logback/core/joran/action/NestedBasicPropertyIA; +HSPLch/qos/logback/core/joran/action/NestedBasicPropertyIA;->()V +HSPLch/qos/logback/core/joran/action/NestedBasicPropertyIA;->begin(Lch/qos/logback/core/joran/spi/InterpretationContext;Ljava/lang/String;Lorg/xml/sax/Attributes;)V +HSPLch/qos/logback/core/joran/action/NestedBasicPropertyIA;->body(Lch/qos/logback/core/joran/spi/InterpretationContext;Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/action/NestedBasicPropertyIA;->end(Lch/qos/logback/core/joran/spi/InterpretationContext;Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/action/NestedBasicPropertyIA;->isApplicable(Lch/qos/logback/core/joran/spi/ElementPath;Lorg/xml/sax/Attributes;Lch/qos/logback/core/joran/spi/InterpretationContext;)Z +Lch/qos/logback/core/joran/action/NestedBasicPropertyIA$1; +HSPLch/qos/logback/core/joran/action/NestedBasicPropertyIA$1;->()V +Lch/qos/logback/core/joran/action/NestedComplexPropertyIA; +HSPLch/qos/logback/core/joran/action/NestedComplexPropertyIA;->()V +HSPLch/qos/logback/core/joran/action/NestedComplexPropertyIA;->begin(Lch/qos/logback/core/joran/spi/InterpretationContext;Ljava/lang/String;Lorg/xml/sax/Attributes;)V +HSPLch/qos/logback/core/joran/action/NestedComplexPropertyIA;->end(Lch/qos/logback/core/joran/spi/InterpretationContext;Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/action/NestedComplexPropertyIA;->isApplicable(Lch/qos/logback/core/joran/spi/ElementPath;Lorg/xml/sax/Attributes;Lch/qos/logback/core/joran/spi/InterpretationContext;)Z +Lch/qos/logback/core/joran/action/NestedComplexPropertyIA$1; +HSPLch/qos/logback/core/joran/action/NestedComplexPropertyIA$1;->()V +Lch/qos/logback/core/joran/action/NewRuleAction; +HSPLch/qos/logback/core/joran/action/NewRuleAction;->()V +Lch/qos/logback/core/joran/action/ParamAction; +HSPLch/qos/logback/core/joran/action/ParamAction;->()V +HSPLch/qos/logback/core/joran/action/ParamAction;->()V +Lch/qos/logback/core/joran/action/PropertyAction; +HSPLch/qos/logback/core/joran/action/PropertyAction;->()V +HSPLch/qos/logback/core/joran/action/PropertyAction;->()V +Lch/qos/logback/core/joran/action/ShutdownHookAction; +HSPLch/qos/logback/core/joran/action/ShutdownHookAction;->()V +Lch/qos/logback/core/joran/action/StatusListenerAction; +HSPLch/qos/logback/core/joran/action/StatusListenerAction;->()V +Lch/qos/logback/core/joran/action/TimestampAction; +HSPLch/qos/logback/core/joran/action/TimestampAction;->()V +HSPLch/qos/logback/core/joran/action/TimestampAction;->()V +Lch/qos/logback/core/joran/event/BodyEvent; +HSPLch/qos/logback/core/joran/event/BodyEvent;->(Ljava/lang/String;Lorg/xml/sax/Locator;)V +HSPLch/qos/logback/core/joran/event/BodyEvent;->getText()Ljava/lang/String; +Lch/qos/logback/core/joran/event/EndEvent; +HSPLch/qos/logback/core/joran/event/EndEvent;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/xml/sax/Locator;)V +Lch/qos/logback/core/joran/event/InPlayListener; +Lch/qos/logback/core/joran/event/SaxEvent; +HSPLch/qos/logback/core/joran/event/SaxEvent;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/xml/sax/Locator;)V +HSPLch/qos/logback/core/joran/event/SaxEvent;->getLocator()Lorg/xml/sax/Locator; +Lch/qos/logback/core/joran/event/SaxEventRecorder; +HSPLch/qos/logback/core/joran/event/SaxEventRecorder;->(Lch/qos/logback/core/Context;)V +HSPLch/qos/logback/core/joran/event/SaxEventRecorder;->buildPullParser()Lorg/xmlpull/v1/sax2/Driver; +HSPLch/qos/logback/core/joran/event/SaxEventRecorder;->characters([CII)V +HSPLch/qos/logback/core/joran/event/SaxEventRecorder;->endElement(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/event/SaxEventRecorder;->getLastEvent()Lch/qos/logback/core/joran/event/SaxEvent; +HSPLch/qos/logback/core/joran/event/SaxEventRecorder;->getLocator()Lorg/xml/sax/Locator; +HSPLch/qos/logback/core/joran/event/SaxEventRecorder;->getSaxEventList()Ljava/util/List; +HSPLch/qos/logback/core/joran/event/SaxEventRecorder;->getTagName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLch/qos/logback/core/joran/event/SaxEventRecorder;->isSpaceOnly(Ljava/lang/String;)Z +HSPLch/qos/logback/core/joran/event/SaxEventRecorder;->recordEvents(Lorg/xml/sax/InputSource;)Ljava/util/List; +HSPLch/qos/logback/core/joran/event/SaxEventRecorder;->setDocumentLocator(Lorg/xml/sax/Locator;)V +HSPLch/qos/logback/core/joran/event/SaxEventRecorder;->startDocument()V +HSPLch/qos/logback/core/joran/event/SaxEventRecorder;->startElement(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/xml/sax/Attributes;)V +Lch/qos/logback/core/joran/event/StartEvent; +HSPLch/qos/logback/core/joran/event/StartEvent;->(Lch/qos/logback/core/joran/spi/ElementPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/xml/sax/Attributes;Lorg/xml/sax/Locator;)V +Lch/qos/logback/core/joran/spi/ActionException; +Lch/qos/logback/core/joran/spi/CAI_WithLocatorSupport; +HSPLch/qos/logback/core/joran/spi/CAI_WithLocatorSupport;->(Lch/qos/logback/core/Context;Lch/qos/logback/core/joran/spi/Interpreter;)V +Lch/qos/logback/core/joran/spi/ConfigurationWatchList; +HSPLch/qos/logback/core/joran/spi/ConfigurationWatchList;->()V +HSPLch/qos/logback/core/joran/spi/ConfigurationWatchList;->addAsFileToWatch(Ljava/net/URL;)V +HSPLch/qos/logback/core/joran/spi/ConfigurationWatchList;->convertToFile(Ljava/net/URL;)Ljava/io/File; +HSPLch/qos/logback/core/joran/spi/ConfigurationWatchList;->setMainURL(Ljava/net/URL;)V +Lch/qos/logback/core/joran/spi/DefaultClass; +Lch/qos/logback/core/joran/spi/DefaultNestedComponentRegistry; +HSPLch/qos/logback/core/joran/spi/DefaultNestedComponentRegistry;->()V +HSPLch/qos/logback/core/joran/spi/DefaultNestedComponentRegistry;->add(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)V +HSPLch/qos/logback/core/joran/spi/DefaultNestedComponentRegistry;->findDefaultComponentType(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Class; +HSPLch/qos/logback/core/joran/spi/DefaultNestedComponentRegistry;->oneShotFind(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Class; +Lch/qos/logback/core/joran/spi/ElementPath; +HSPLch/qos/logback/core/joran/spi/ElementPath;->()V +HSPLch/qos/logback/core/joran/spi/ElementPath;->(Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/spi/ElementPath;->duplicate()Lch/qos/logback/core/joran/spi/ElementPath; +HSPLch/qos/logback/core/joran/spi/ElementPath;->get(I)Ljava/lang/String; +HSPLch/qos/logback/core/joran/spi/ElementPath;->peekLast()Ljava/lang/String; +HSPLch/qos/logback/core/joran/spi/ElementPath;->pop()V +HSPLch/qos/logback/core/joran/spi/ElementPath;->push(Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/spi/ElementPath;->size()I +Lch/qos/logback/core/joran/spi/ElementSelector; +HSPLch/qos/logback/core/joran/spi/ElementSelector;->(Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/spi/ElementSelector;->equalityCheck(Ljava/lang/String;Ljava/lang/String;)Z +HSPLch/qos/logback/core/joran/spi/ElementSelector;->fullPathMatch(Lch/qos/logback/core/joran/spi/ElementPath;)Z +HSPLch/qos/logback/core/joran/spi/ElementSelector;->getPrefixMatchLength(Lch/qos/logback/core/joran/spi/ElementPath;)I +HSPLch/qos/logback/core/joran/spi/ElementSelector;->getTailMatchLength(Lch/qos/logback/core/joran/spi/ElementPath;)I +HSPLch/qos/logback/core/joran/spi/ElementSelector;->hashCode()I +Lch/qos/logback/core/joran/spi/EventPlayer; +HSPLch/qos/logback/core/joran/spi/EventPlayer;->(Lch/qos/logback/core/joran/spi/Interpreter;)V +HSPLch/qos/logback/core/joran/spi/EventPlayer;->play(Ljava/util/List;)V +Lch/qos/logback/core/joran/spi/HostClassAndPropertyDouble; +HSPLch/qos/logback/core/joran/spi/HostClassAndPropertyDouble;->(Ljava/lang/Class;Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/spi/HostClassAndPropertyDouble;->equals(Ljava/lang/Object;)Z +HSPLch/qos/logback/core/joran/spi/HostClassAndPropertyDouble;->hashCode()I +Lch/qos/logback/core/joran/spi/InterpretationContext; +HSPLch/qos/logback/core/joran/spi/InterpretationContext;->()V +HSPLch/qos/logback/core/joran/spi/InterpretationContext;->(Lch/qos/logback/core/Context;Lch/qos/logback/core/joran/spi/Interpreter;)V +HSPLch/qos/logback/core/joran/spi/InterpretationContext;->fireInPlay(Lch/qos/logback/core/joran/event/SaxEvent;)V +HSPLch/qos/logback/core/joran/spi/InterpretationContext;->getDefaultNestedComponentRegistry()Lch/qos/logback/core/joran/spi/DefaultNestedComponentRegistry; +HSPLch/qos/logback/core/joran/spi/InterpretationContext;->getObjectMap()Ljava/util/Map; +HSPLch/qos/logback/core/joran/spi/InterpretationContext;->initAndroidContextIfValueHasSpecialVars(Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/spi/InterpretationContext;->isEmpty()Z +HSPLch/qos/logback/core/joran/spi/InterpretationContext;->peekObject()Ljava/lang/Object; +HSPLch/qos/logback/core/joran/spi/InterpretationContext;->popObject()Ljava/lang/Object; +HSPLch/qos/logback/core/joran/spi/InterpretationContext;->pushObject(Ljava/lang/Object;)V +HSPLch/qos/logback/core/joran/spi/InterpretationContext;->subst(Ljava/lang/String;)Ljava/lang/String; +Lch/qos/logback/core/joran/spi/Interpreter; +HSPLch/qos/logback/core/joran/spi/Interpreter;->()V +HSPLch/qos/logback/core/joran/spi/Interpreter;->(Lch/qos/logback/core/Context;Lch/qos/logback/core/joran/spi/RuleStore;Lch/qos/logback/core/joran/spi/ElementPath;)V +HSPLch/qos/logback/core/joran/spi/Interpreter;->addImplicitAction(Lch/qos/logback/core/joran/action/ImplicitAction;)V +HSPLch/qos/logback/core/joran/spi/Interpreter;->callBeginAction(Ljava/util/List;Ljava/lang/String;Lorg/xml/sax/Attributes;)V +HSPLch/qos/logback/core/joran/spi/Interpreter;->callBodyAction(Ljava/util/List;Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/spi/Interpreter;->callEndAction(Ljava/util/List;Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/spi/Interpreter;->characters(Lch/qos/logback/core/joran/event/BodyEvent;)V +HSPLch/qos/logback/core/joran/spi/Interpreter;->endElement(Lch/qos/logback/core/joran/event/EndEvent;)V +HSPLch/qos/logback/core/joran/spi/Interpreter;->endElement(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/spi/Interpreter;->getApplicableActionList(Lch/qos/logback/core/joran/spi/ElementPath;Lorg/xml/sax/Attributes;)Ljava/util/List; +HSPLch/qos/logback/core/joran/spi/Interpreter;->getEventPlayer()Lch/qos/logback/core/joran/spi/EventPlayer; +HSPLch/qos/logback/core/joran/spi/Interpreter;->getInterpretationContext()Lch/qos/logback/core/joran/spi/InterpretationContext; +HSPLch/qos/logback/core/joran/spi/Interpreter;->getTagName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLch/qos/logback/core/joran/spi/Interpreter;->lookupImplicitAction(Lch/qos/logback/core/joran/spi/ElementPath;Lorg/xml/sax/Attributes;Lch/qos/logback/core/joran/spi/InterpretationContext;)Ljava/util/List; +HSPLch/qos/logback/core/joran/spi/Interpreter;->setDocumentLocator(Lorg/xml/sax/Locator;)V +HSPLch/qos/logback/core/joran/spi/Interpreter;->startElement(Lch/qos/logback/core/joran/event/StartEvent;)V +HSPLch/qos/logback/core/joran/spi/Interpreter;->startElement(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/xml/sax/Attributes;)V +Lch/qos/logback/core/joran/spi/JoranException; +Lch/qos/logback/core/joran/spi/NoAutoStart; +Lch/qos/logback/core/joran/spi/NoAutoStartUtil; +HSPLch/qos/logback/core/joran/spi/NoAutoStartUtil;->notMarkedWithNoAutoStart(Ljava/lang/Object;)Z +Lch/qos/logback/core/joran/spi/RuleStore; +Lch/qos/logback/core/joran/spi/SimpleRuleStore; +HSPLch/qos/logback/core/joran/spi/SimpleRuleStore;->()V +HSPLch/qos/logback/core/joran/spi/SimpleRuleStore;->(Lch/qos/logback/core/Context;)V +HSPLch/qos/logback/core/joran/spi/SimpleRuleStore;->addRule(Lch/qos/logback/core/joran/spi/ElementSelector;Lch/qos/logback/core/joran/action/Action;)V +HSPLch/qos/logback/core/joran/spi/SimpleRuleStore;->fullPathMatch(Lch/qos/logback/core/joran/spi/ElementPath;)Ljava/util/List; +HSPLch/qos/logback/core/joran/spi/SimpleRuleStore;->isKleeneStar(Ljava/lang/String;)Z +HSPLch/qos/logback/core/joran/spi/SimpleRuleStore;->isSuffixPattern(Lch/qos/logback/core/joran/spi/ElementSelector;)Z +HSPLch/qos/logback/core/joran/spi/SimpleRuleStore;->matchActions(Lch/qos/logback/core/joran/spi/ElementPath;)Ljava/util/List; +HSPLch/qos/logback/core/joran/spi/SimpleRuleStore;->middleMatch(Lch/qos/logback/core/joran/spi/ElementPath;)Ljava/util/List; +HSPLch/qos/logback/core/joran/spi/SimpleRuleStore;->prefixMatch(Lch/qos/logback/core/joran/spi/ElementPath;)Ljava/util/List; +HSPLch/qos/logback/core/joran/spi/SimpleRuleStore;->suffixMatch(Lch/qos/logback/core/joran/spi/ElementPath;)Ljava/util/List; +Lch/qos/logback/core/joran/util/ConfigurationWatchListUtil; +HSPLch/qos/logback/core/joran/util/ConfigurationWatchListUtil;->()V +HSPLch/qos/logback/core/joran/util/ConfigurationWatchListUtil;->()V +HSPLch/qos/logback/core/joran/util/ConfigurationWatchListUtil;->getConfigurationWatchList(Lch/qos/logback/core/Context;)Lch/qos/logback/core/joran/spi/ConfigurationWatchList; +HSPLch/qos/logback/core/joran/util/ConfigurationWatchListUtil;->setMainWatchURL(Lch/qos/logback/core/Context;Ljava/net/URL;)V +Lch/qos/logback/core/joran/util/IntrospectionException; +Lch/qos/logback/core/joran/util/Introspector; +HSPLch/qos/logback/core/joran/util/Introspector;->decapitalize(Ljava/lang/String;)Ljava/lang/String; +HSPLch/qos/logback/core/joran/util/Introspector;->getMethodDescriptors(Ljava/lang/Class;)[Lch/qos/logback/core/joran/util/MethodDescriptor; +HSPLch/qos/logback/core/joran/util/Introspector;->getPropertyDescriptors(Ljava/lang/Class;)[Lch/qos/logback/core/joran/util/PropertyDescriptor; +Lch/qos/logback/core/joran/util/MethodDescriptor; +HSPLch/qos/logback/core/joran/util/MethodDescriptor;->(Ljava/lang/String;Ljava/lang/reflect/Method;)V +HSPLch/qos/logback/core/joran/util/MethodDescriptor;->getName()Ljava/lang/String; +Lch/qos/logback/core/joran/util/PropertyDescriptor; +HSPLch/qos/logback/core/joran/util/PropertyDescriptor;->(Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/util/PropertyDescriptor;->getName()Ljava/lang/String; +HSPLch/qos/logback/core/joran/util/PropertyDescriptor;->getPropertyType()Ljava/lang/Class; +HSPLch/qos/logback/core/joran/util/PropertyDescriptor;->getWriteMethod()Ljava/lang/reflect/Method; +HSPLch/qos/logback/core/joran/util/PropertyDescriptor;->setPropertyType(Ljava/lang/Class;)V +HSPLch/qos/logback/core/joran/util/PropertyDescriptor;->setReadMethod(Ljava/lang/reflect/Method;)V +HSPLch/qos/logback/core/joran/util/PropertyDescriptor;->setWriteMethod(Ljava/lang/reflect/Method;)V +Lch/qos/logback/core/joran/util/PropertySetter; +HSPLch/qos/logback/core/joran/util/PropertySetter;->(Ljava/lang/Object;)V +HSPLch/qos/logback/core/joran/util/PropertySetter;->capitalizeFirstLetter(Ljava/lang/String;)Ljava/lang/String; +HSPLch/qos/logback/core/joran/util/PropertySetter;->computeAggregationType(Ljava/lang/String;)Lch/qos/logback/core/util/AggregationType; +HSPLch/qos/logback/core/joran/util/PropertySetter;->computeRawAggregationType(Ljava/lang/reflect/Method;)Lch/qos/logback/core/util/AggregationType; +HSPLch/qos/logback/core/joran/util/PropertySetter;->findAdderMethod(Ljava/lang/String;)Ljava/lang/reflect/Method; +HSPLch/qos/logback/core/joran/util/PropertySetter;->findSetterMethod(Ljava/lang/String;)Ljava/lang/reflect/Method; +HSPLch/qos/logback/core/joran/util/PropertySetter;->getAnnotation(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/reflect/Method;)Ljava/lang/annotation/Annotation; +HSPLch/qos/logback/core/joran/util/PropertySetter;->getByConcreteType(Ljava/lang/String;Ljava/lang/reflect/Method;)Ljava/lang/Class; +HSPLch/qos/logback/core/joran/util/PropertySetter;->getClassNameViaImplicitRules(Ljava/lang/String;Lch/qos/logback/core/util/AggregationType;Lch/qos/logback/core/joran/spi/DefaultNestedComponentRegistry;)Ljava/lang/Class; +HSPLch/qos/logback/core/joran/util/PropertySetter;->getDefaultClassNameByAnnonation(Ljava/lang/String;Ljava/lang/reflect/Method;)Ljava/lang/Class; +HSPLch/qos/logback/core/joran/util/PropertySetter;->getMethod(Ljava/lang/String;)Ljava/lang/reflect/Method; +HSPLch/qos/logback/core/joran/util/PropertySetter;->getObj()Ljava/lang/Object; +HSPLch/qos/logback/core/joran/util/PropertySetter;->getParameterClassForMethod(Ljava/lang/reflect/Method;)Ljava/lang/Class; +HSPLch/qos/logback/core/joran/util/PropertySetter;->getPropertyDescriptor(Ljava/lang/String;)Lch/qos/logback/core/joran/util/PropertyDescriptor; +HSPLch/qos/logback/core/joran/util/PropertySetter;->getRelevantMethod(Ljava/lang/String;Lch/qos/logback/core/util/AggregationType;)Ljava/lang/reflect/Method; +HSPLch/qos/logback/core/joran/util/PropertySetter;->introspect()V +HSPLch/qos/logback/core/joran/util/PropertySetter;->invokeMethodWithSingleParameterOnThisObject(Ljava/lang/reflect/Method;Ljava/lang/Object;)V +HSPLch/qos/logback/core/joran/util/PropertySetter;->isSanityCheckSuccessful(Ljava/lang/String;Ljava/lang/reflect/Method;[Ljava/lang/Class;Ljava/lang/Object;)Z +HSPLch/qos/logback/core/joran/util/PropertySetter;->isUnequivocallyInstantiable(Ljava/lang/Class;)Z +HSPLch/qos/logback/core/joran/util/PropertySetter;->setComplexProperty(Ljava/lang/String;Ljava/lang/Object;)V +HSPLch/qos/logback/core/joran/util/PropertySetter;->setProperty(Lch/qos/logback/core/joran/util/PropertyDescriptor;Ljava/lang/String;Ljava/lang/String;)V +HSPLch/qos/logback/core/joran/util/PropertySetter;->setProperty(Ljava/lang/String;Ljava/lang/String;)V +Lch/qos/logback/core/joran/util/StringToObjectConverter; +HSPLch/qos/logback/core/joran/util/StringToObjectConverter;->()V +HSPLch/qos/logback/core/joran/util/StringToObjectConverter;->canBeBuiltFromSimpleString(Ljava/lang/Class;)Z +HSPLch/qos/logback/core/joran/util/StringToObjectConverter;->convertArg(Lch/qos/logback/core/spi/ContextAware;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object; +HSPLch/qos/logback/core/joran/util/StringToObjectConverter;->followsTheValueOfConvention(Ljava/lang/Class;)Z +HSPLch/qos/logback/core/joran/util/StringToObjectConverter;->getValueOfMethod(Ljava/lang/Class;)Ljava/lang/reflect/Method; +HSPLch/qos/logback/core/joran/util/StringToObjectConverter;->isOfTypeCharset(Ljava/lang/Class;)Z +Lch/qos/logback/core/net/ssl/KeyManagerFactoryFactoryBean; +Lch/qos/logback/core/net/ssl/KeyStoreFactoryBean; +Lch/qos/logback/core/net/ssl/SSLComponent; +Lch/qos/logback/core/net/ssl/SSLConfiguration; +Lch/qos/logback/core/net/ssl/SSLContextFactoryBean; +Lch/qos/logback/core/net/ssl/SSLNestedComponentRegistryRules; +HSPLch/qos/logback/core/net/ssl/SSLNestedComponentRegistryRules;->addDefaultNestedComponentRegistryRules(Lch/qos/logback/core/joran/spi/DefaultNestedComponentRegistry;)V +Lch/qos/logback/core/net/ssl/SSLParametersConfiguration; +Lch/qos/logback/core/net/ssl/SecureRandomFactoryBean; +Lch/qos/logback/core/net/ssl/TrustManagerFactoryFactoryBean; +Lch/qos/logback/core/pattern/CompositeConverter; +Lch/qos/logback/core/pattern/Converter; +HSPLch/qos/logback/core/pattern/Converter;->()V +HSPLch/qos/logback/core/pattern/Converter;->getNext()Lch/qos/logback/core/pattern/Converter; +HSPLch/qos/logback/core/pattern/Converter;->setNext(Lch/qos/logback/core/pattern/Converter;)V +Lch/qos/logback/core/pattern/ConverterUtil; +HSPLch/qos/logback/core/pattern/ConverterUtil;->findTail(Lch/qos/logback/core/pattern/Converter;)Lch/qos/logback/core/pattern/Converter; +HSPLch/qos/logback/core/pattern/ConverterUtil;->setContextForConverters(Lch/qos/logback/core/Context;Lch/qos/logback/core/pattern/Converter;)V +HSPLch/qos/logback/core/pattern/ConverterUtil;->startConverters(Lch/qos/logback/core/pattern/Converter;)V +Lch/qos/logback/core/pattern/DynamicConverter; +HSPLch/qos/logback/core/pattern/DynamicConverter;->()V +HSPLch/qos/logback/core/pattern/DynamicConverter;->getFirstOption()Ljava/lang/String; +HSPLch/qos/logback/core/pattern/DynamicConverter;->getOptionList()Ljava/util/List; +HSPLch/qos/logback/core/pattern/DynamicConverter;->setContext(Lch/qos/logback/core/Context;)V +HSPLch/qos/logback/core/pattern/DynamicConverter;->setOptionList(Ljava/util/List;)V +HSPLch/qos/logback/core/pattern/DynamicConverter;->start()V +Lch/qos/logback/core/pattern/FormatInfo; +HSPLch/qos/logback/core/pattern/FormatInfo;->()V +HSPLch/qos/logback/core/pattern/FormatInfo;->valueOf(Ljava/lang/String;)Lch/qos/logback/core/pattern/FormatInfo; +Lch/qos/logback/core/pattern/FormattingConverter; +HSPLch/qos/logback/core/pattern/FormattingConverter;->()V +HSPLch/qos/logback/core/pattern/FormattingConverter;->setFormattingInfo(Lch/qos/logback/core/pattern/FormatInfo;)V +Lch/qos/logback/core/pattern/IdentityCompositeConverter; +Lch/qos/logback/core/pattern/LiteralConverter; +HSPLch/qos/logback/core/pattern/LiteralConverter;->(Ljava/lang/String;)V +Lch/qos/logback/core/pattern/PatternLayoutBase; +HSPLch/qos/logback/core/pattern/PatternLayoutBase;->()V +HSPLch/qos/logback/core/pattern/PatternLayoutBase;->getEffectiveConverterMap()Ljava/util/Map; +HSPLch/qos/logback/core/pattern/PatternLayoutBase;->setOutputPatternAsHeader(Z)V +HSPLch/qos/logback/core/pattern/PatternLayoutBase;->setPattern(Ljava/lang/String;)V +HSPLch/qos/logback/core/pattern/PatternLayoutBase;->setPostCompileProcessor(Lch/qos/logback/core/pattern/PostCompileProcessor;)V +HSPLch/qos/logback/core/pattern/PatternLayoutBase;->start()V +Lch/qos/logback/core/pattern/PatternLayoutEncoderBase; +HSPLch/qos/logback/core/pattern/PatternLayoutEncoderBase;->()V +HSPLch/qos/logback/core/pattern/PatternLayoutEncoderBase;->getPattern()Ljava/lang/String; +HSPLch/qos/logback/core/pattern/PatternLayoutEncoderBase;->setPattern(Ljava/lang/String;)V +Lch/qos/logback/core/pattern/PostCompileProcessor; +Lch/qos/logback/core/pattern/ReplacingCompositeConverter; +Lch/qos/logback/core/pattern/parser/Compiler; +HSPLch/qos/logback/core/pattern/parser/Compiler;->(Lch/qos/logback/core/pattern/parser/Node;Ljava/util/Map;)V +HSPLch/qos/logback/core/pattern/parser/Compiler;->addToList(Lch/qos/logback/core/pattern/Converter;)V +HSPLch/qos/logback/core/pattern/parser/Compiler;->compile()Lch/qos/logback/core/pattern/Converter; +HSPLch/qos/logback/core/pattern/parser/Compiler;->createConverter(Lch/qos/logback/core/pattern/parser/SimpleKeywordNode;)Lch/qos/logback/core/pattern/DynamicConverter; +Lch/qos/logback/core/pattern/parser/FormattingNode; +HSPLch/qos/logback/core/pattern/parser/FormattingNode;->(ILjava/lang/Object;)V +HSPLch/qos/logback/core/pattern/parser/FormattingNode;->getFormatInfo()Lch/qos/logback/core/pattern/FormatInfo; +HSPLch/qos/logback/core/pattern/parser/FormattingNode;->setFormatInfo(Lch/qos/logback/core/pattern/FormatInfo;)V +Lch/qos/logback/core/pattern/parser/Node; +HSPLch/qos/logback/core/pattern/parser/Node;->(ILjava/lang/Object;)V +HSPLch/qos/logback/core/pattern/parser/Node;->getValue()Ljava/lang/Object; +HSPLch/qos/logback/core/pattern/parser/Node;->setNext(Lch/qos/logback/core/pattern/parser/Node;)V +Lch/qos/logback/core/pattern/parser/OptionTokenizer; +HSPLch/qos/logback/core/pattern/parser/OptionTokenizer;->(Lch/qos/logback/core/pattern/parser/TokenStream;)V +HSPLch/qos/logback/core/pattern/parser/OptionTokenizer;->(Lch/qos/logback/core/pattern/parser/TokenStream;Lch/qos/logback/core/pattern/util/IEscapeUtil;)V +HSPLch/qos/logback/core/pattern/parser/OptionTokenizer;->emitOptionToken(Ljava/util/List;Ljava/util/List;)V +HSPLch/qos/logback/core/pattern/parser/OptionTokenizer;->tokenize(CLjava/util/List;)V +Lch/qos/logback/core/pattern/parser/Parser; +HSPLch/qos/logback/core/pattern/parser/Parser;->()V +HSPLch/qos/logback/core/pattern/parser/Parser;->(Ljava/lang/String;)V +HSPLch/qos/logback/core/pattern/parser/Parser;->(Ljava/lang/String;Lch/qos/logback/core/pattern/util/IEscapeUtil;)V +HSPLch/qos/logback/core/pattern/parser/Parser;->C()Lch/qos/logback/core/pattern/parser/FormattingNode; +HSPLch/qos/logback/core/pattern/parser/Parser;->E()Lch/qos/logback/core/pattern/parser/Node; +HSPLch/qos/logback/core/pattern/parser/Parser;->Eopt()Lch/qos/logback/core/pattern/parser/Node; +HSPLch/qos/logback/core/pattern/parser/Parser;->SINGLE()Lch/qos/logback/core/pattern/parser/FormattingNode; +HSPLch/qos/logback/core/pattern/parser/Parser;->T()Lch/qos/logback/core/pattern/parser/Node; +HSPLch/qos/logback/core/pattern/parser/Parser;->advanceTokenPointer()V +HSPLch/qos/logback/core/pattern/parser/Parser;->compile(Lch/qos/logback/core/pattern/parser/Node;Ljava/util/Map;)Lch/qos/logback/core/pattern/Converter; +HSPLch/qos/logback/core/pattern/parser/Parser;->expectNotNull(Lch/qos/logback/core/pattern/parser/Token;Ljava/lang/String;)V +HSPLch/qos/logback/core/pattern/parser/Parser;->getCurentToken()Lch/qos/logback/core/pattern/parser/Token; +HSPLch/qos/logback/core/pattern/parser/Parser;->getNextToken()Lch/qos/logback/core/pattern/parser/Token; +HSPLch/qos/logback/core/pattern/parser/Parser;->parse()Lch/qos/logback/core/pattern/parser/Node; +Lch/qos/logback/core/pattern/parser/SimpleKeywordNode; +HSPLch/qos/logback/core/pattern/parser/SimpleKeywordNode;->(Ljava/lang/Object;)V +HSPLch/qos/logback/core/pattern/parser/SimpleKeywordNode;->getOptions()Ljava/util/List; +HSPLch/qos/logback/core/pattern/parser/SimpleKeywordNode;->setOptions(Ljava/util/List;)V +Lch/qos/logback/core/pattern/parser/Token; +HSPLch/qos/logback/core/pattern/parser/Token;->()V +HSPLch/qos/logback/core/pattern/parser/Token;->(I)V +HSPLch/qos/logback/core/pattern/parser/Token;->(ILjava/lang/String;)V +HSPLch/qos/logback/core/pattern/parser/Token;->(ILjava/lang/String;Ljava/util/List;)V +HSPLch/qos/logback/core/pattern/parser/Token;->(ILjava/util/List;)V +HSPLch/qos/logback/core/pattern/parser/Token;->getOptionsList()Ljava/util/List; +HSPLch/qos/logback/core/pattern/parser/Token;->getType()I +HSPLch/qos/logback/core/pattern/parser/Token;->getValue()Ljava/lang/String; +Lch/qos/logback/core/pattern/parser/TokenStream; +HSPLch/qos/logback/core/pattern/parser/TokenStream;->(Ljava/lang/String;Lch/qos/logback/core/pattern/util/IEscapeUtil;)V +HSPLch/qos/logback/core/pattern/parser/TokenStream;->addValuedToken(ILjava/lang/StringBuffer;Ljava/util/List;)V +HSPLch/qos/logback/core/pattern/parser/TokenStream;->handleFormatModifierState(CLjava/util/List;Ljava/lang/StringBuffer;)V +HSPLch/qos/logback/core/pattern/parser/TokenStream;->handleKeywordState(CLjava/util/List;Ljava/lang/StringBuffer;)V +HSPLch/qos/logback/core/pattern/parser/TokenStream;->handleLiteralState(CLjava/util/List;Ljava/lang/StringBuffer;)V +HSPLch/qos/logback/core/pattern/parser/TokenStream;->processOption(CLjava/util/List;Ljava/lang/StringBuffer;)V +HSPLch/qos/logback/core/pattern/parser/TokenStream;->tokenize()Ljava/util/List; +Lch/qos/logback/core/pattern/parser/TokenStream$1; +HSPLch/qos/logback/core/pattern/parser/TokenStream$1;->()V +Lch/qos/logback/core/pattern/parser/TokenStream$TokenizerState; +HSPLch/qos/logback/core/pattern/parser/TokenStream$TokenizerState;->()V +HSPLch/qos/logback/core/pattern/parser/TokenStream$TokenizerState;->(Ljava/lang/String;I)V +HSPLch/qos/logback/core/pattern/parser/TokenStream$TokenizerState;->values()[Lch/qos/logback/core/pattern/parser/TokenStream$TokenizerState; +Lch/qos/logback/core/pattern/util/AsIsEscapeUtil; +HSPLch/qos/logback/core/pattern/util/AsIsEscapeUtil;->()V +Lch/qos/logback/core/pattern/util/IEscapeUtil; +Lch/qos/logback/core/pattern/util/RegularEscapeUtil; +HSPLch/qos/logback/core/pattern/util/RegularEscapeUtil;->()V +Lch/qos/logback/core/pattern/util/RestrictedEscapeUtil; +HSPLch/qos/logback/core/pattern/util/RestrictedEscapeUtil;->()V +Lch/qos/logback/core/spi/AppenderAttachable; +Lch/qos/logback/core/spi/AppenderAttachableImpl; +HSPLch/qos/logback/core/spi/AppenderAttachableImpl;->()V +HSPLch/qos/logback/core/spi/AppenderAttachableImpl;->()V +HSPLch/qos/logback/core/spi/AppenderAttachableImpl;->addAppender(Lch/qos/logback/core/Appender;)V +Lch/qos/logback/core/spi/ContextAware; +Lch/qos/logback/core/spi/ContextAwareBase; +HSPLch/qos/logback/core/spi/ContextAwareBase;->()V +HSPLch/qos/logback/core/spi/ContextAwareBase;->(Lch/qos/logback/core/spi/ContextAware;)V +HSPLch/qos/logback/core/spi/ContextAwareBase;->addInfo(Ljava/lang/String;)V +HSPLch/qos/logback/core/spi/ContextAwareBase;->addStatus(Lch/qos/logback/core/status/Status;)V +HSPLch/qos/logback/core/spi/ContextAwareBase;->getContext()Lch/qos/logback/core/Context; +HSPLch/qos/logback/core/spi/ContextAwareBase;->getDeclaredOrigin()Ljava/lang/Object; +HSPLch/qos/logback/core/spi/ContextAwareBase;->setContext(Lch/qos/logback/core/Context;)V +Lch/qos/logback/core/spi/ContextAwareImpl; +HSPLch/qos/logback/core/spi/ContextAwareImpl;->(Lch/qos/logback/core/Context;Ljava/lang/Object;)V +Lch/qos/logback/core/spi/FilterAttachable; +Lch/qos/logback/core/spi/FilterAttachableImpl; +HSPLch/qos/logback/core/spi/FilterAttachableImpl;->()V +Lch/qos/logback/core/spi/FilterReply; +Lch/qos/logback/core/spi/LifeCycle; +Lch/qos/logback/core/spi/LogbackLock; +HSPLch/qos/logback/core/spi/LogbackLock;->()V +Lch/qos/logback/core/spi/PropertyContainer; +Lch/qos/logback/core/spi/ScanException; +Lch/qos/logback/core/status/InfoStatus; +HSPLch/qos/logback/core/status/InfoStatus;->(Ljava/lang/String;Ljava/lang/Object;)V +Lch/qos/logback/core/status/Status; +Lch/qos/logback/core/status/StatusBase; +HSPLch/qos/logback/core/status/StatusBase;->()V +HSPLch/qos/logback/core/status/StatusBase;->(ILjava/lang/String;Ljava/lang/Object;)V +HSPLch/qos/logback/core/status/StatusBase;->(ILjava/lang/String;Ljava/lang/Object;Ljava/lang/Throwable;)V +HSPLch/qos/logback/core/status/StatusBase;->getDate()Ljava/lang/Long; +HSPLch/qos/logback/core/status/StatusBase;->getLevel()I +Lch/qos/logback/core/status/StatusListener; +Lch/qos/logback/core/status/StatusManager; +Lch/qos/logback/core/status/StatusUtil; +HSPLch/qos/logback/core/status/StatusUtil;->(Lch/qos/logback/core/Context;)V +HSPLch/qos/logback/core/status/StatusUtil;->containsMatch(JILjava/lang/String;)Z +HSPLch/qos/logback/core/status/StatusUtil;->contextHasStatusListener(Lch/qos/logback/core/Context;)Z +HSPLch/qos/logback/core/status/StatusUtil;->filterStatusListByTimeThreshold(Ljava/util/List;J)Ljava/util/List; +HSPLch/qos/logback/core/status/StatusUtil;->getHighestLevel(J)I +HSPLch/qos/logback/core/status/StatusUtil;->hasXMLParsingErrors(J)Z +HSPLch/qos/logback/core/status/StatusUtil;->noXMLParsingErrorsOccurred(J)Z +Lch/qos/logback/core/subst/Node; +HSPLch/qos/logback/core/subst/Node;->(Lch/qos/logback/core/subst/Node$Type;Ljava/lang/Object;)V +HSPLch/qos/logback/core/subst/Node;->append(Lch/qos/logback/core/subst/Node;)V +Lch/qos/logback/core/subst/Node$Type; +HSPLch/qos/logback/core/subst/Node$Type;->()V +HSPLch/qos/logback/core/subst/Node$Type;->(Ljava/lang/String;I)V +HSPLch/qos/logback/core/subst/Node$Type;->values()[Lch/qos/logback/core/subst/Node$Type; +Lch/qos/logback/core/subst/NodeToStringTransformer; +HSPLch/qos/logback/core/subst/NodeToStringTransformer;->(Lch/qos/logback/core/subst/Node;Lch/qos/logback/core/spi/PropertyContainer;Lch/qos/logback/core/spi/PropertyContainer;)V +HSPLch/qos/logback/core/subst/NodeToStringTransformer;->compileNode(Lch/qos/logback/core/subst/Node;Ljava/lang/StringBuilder;Ljava/util/Stack;)V +HSPLch/qos/logback/core/subst/NodeToStringTransformer;->handleLiteral(Lch/qos/logback/core/subst/Node;Ljava/lang/StringBuilder;)V +HSPLch/qos/logback/core/subst/NodeToStringTransformer;->substituteVariable(Ljava/lang/String;Lch/qos/logback/core/spi/PropertyContainer;Lch/qos/logback/core/spi/PropertyContainer;)Ljava/lang/String; +HSPLch/qos/logback/core/subst/NodeToStringTransformer;->tokenizeAndParseString(Ljava/lang/String;)Lch/qos/logback/core/subst/Node; +HSPLch/qos/logback/core/subst/NodeToStringTransformer;->transform()Ljava/lang/String; +Lch/qos/logback/core/subst/NodeToStringTransformer$1; +HSPLch/qos/logback/core/subst/NodeToStringTransformer$1;->()V +Lch/qos/logback/core/subst/Parser; +HSPLch/qos/logback/core/subst/Parser;->(Ljava/util/List;)V +HSPLch/qos/logback/core/subst/Parser;->C()Lch/qos/logback/core/subst/Node; +HSPLch/qos/logback/core/subst/Parser;->E()Lch/qos/logback/core/subst/Node; +HSPLch/qos/logback/core/subst/Parser;->Eopt()Lch/qos/logback/core/subst/Node; +HSPLch/qos/logback/core/subst/Parser;->T()Lch/qos/logback/core/subst/Node; +HSPLch/qos/logback/core/subst/Parser;->advanceTokenPointer()V +HSPLch/qos/logback/core/subst/Parser;->expectCurlyRight(Lch/qos/logback/core/subst/Token;)V +HSPLch/qos/logback/core/subst/Parser;->expectNotNull(Lch/qos/logback/core/subst/Token;Ljava/lang/String;)V +HSPLch/qos/logback/core/subst/Parser;->isDefaultToken(Lch/qos/logback/core/subst/Token;)Z +HSPLch/qos/logback/core/subst/Parser;->makeNewLiteralNode(Ljava/lang/String;)Lch/qos/logback/core/subst/Node; +HSPLch/qos/logback/core/subst/Parser;->parse()Lch/qos/logback/core/subst/Node; +HSPLch/qos/logback/core/subst/Parser;->peekAtCurentToken()Lch/qos/logback/core/subst/Token; +Lch/qos/logback/core/subst/Parser$1; +HSPLch/qos/logback/core/subst/Parser$1;->()V +Lch/qos/logback/core/subst/Token; +HSPLch/qos/logback/core/subst/Token;->()V +HSPLch/qos/logback/core/subst/Token;->(Lch/qos/logback/core/subst/Token$Type;Ljava/lang/String;)V +Lch/qos/logback/core/subst/Token$Type; +HSPLch/qos/logback/core/subst/Token$Type;->()V +HSPLch/qos/logback/core/subst/Token$Type;->(Ljava/lang/String;I)V +HSPLch/qos/logback/core/subst/Token$Type;->values()[Lch/qos/logback/core/subst/Token$Type; +Lch/qos/logback/core/subst/Tokenizer; +HSPLch/qos/logback/core/subst/Tokenizer;->(Ljava/lang/String;)V +HSPLch/qos/logback/core/subst/Tokenizer;->addLiteralToken(Ljava/util/List;Ljava/lang/StringBuilder;)V +HSPLch/qos/logback/core/subst/Tokenizer;->handleLiteralState(CLjava/util/List;Ljava/lang/StringBuilder;)V +HSPLch/qos/logback/core/subst/Tokenizer;->tokenize()Ljava/util/List; +Lch/qos/logback/core/subst/Tokenizer$1; +HSPLch/qos/logback/core/subst/Tokenizer$1;->()V +Lch/qos/logback/core/subst/Tokenizer$TokenizerState; +HSPLch/qos/logback/core/subst/Tokenizer$TokenizerState;->()V +HSPLch/qos/logback/core/subst/Tokenizer$TokenizerState;->(Ljava/lang/String;I)V +HSPLch/qos/logback/core/subst/Tokenizer$TokenizerState;->values()[Lch/qos/logback/core/subst/Tokenizer$TokenizerState; +Lch/qos/logback/core/util/AggregationType; +HSPLch/qos/logback/core/util/AggregationType;->()V +HSPLch/qos/logback/core/util/AggregationType;->(Ljava/lang/String;I)V +HSPLch/qos/logback/core/util/AggregationType;->values()[Lch/qos/logback/core/util/AggregationType; +Lch/qos/logback/core/util/COWArrayList; +HSPLch/qos/logback/core/util/COWArrayList;->([Ljava/lang/Object;)V +HSPLch/qos/logback/core/util/COWArrayList;->addIfAbsent(Ljava/lang/Object;)V +HSPLch/qos/logback/core/util/COWArrayList;->markAsStale()V +Lch/qos/logback/core/util/CachingDateFormatter; +HSPLch/qos/logback/core/util/CachingDateFormatter;->(Ljava/lang/String;)V +HSPLch/qos/logback/core/util/CachingDateFormatter;->(Ljava/lang/String;Ljava/util/Locale;)V +Lch/qos/logback/core/util/CloseUtil; +HSPLch/qos/logback/core/util/CloseUtil;->closeQuietly(Ljava/io/Closeable;)V +Lch/qos/logback/core/util/ContextUtil; +HSPLch/qos/logback/core/util/ContextUtil;->(Lch/qos/logback/core/Context;)V +HSPLch/qos/logback/core/util/ContextUtil;->addHostNameAsProperty()V +Lch/qos/logback/core/util/Duration; +HSPLch/qos/logback/core/util/Duration;->()V +HSPLch/qos/logback/core/util/Duration;->(J)V +HSPLch/qos/logback/core/util/Duration;->buildByMinutes(D)Lch/qos/logback/core/util/Duration; +Lch/qos/logback/core/util/EnvUtil; +HSPLch/qos/logback/core/util/EnvUtil;->()V +HSPLch/qos/logback/core/util/EnvUtil;->isJDK5()Z +HSPLch/qos/logback/core/util/EnvUtil;->isJDK_N_OrHigher(I)Z +Lch/qos/logback/core/util/IncompatibleClassException; +Lch/qos/logback/core/util/Loader; +HSPLch/qos/logback/core/util/Loader;->()V +HSPLch/qos/logback/core/util/Loader;->getClassLoaderOfClass(Ljava/lang/Class;)Ljava/lang/ClassLoader; +HSPLch/qos/logback/core/util/Loader;->getClassLoaderOfObject(Ljava/lang/Object;)Ljava/lang/ClassLoader; +Lch/qos/logback/core/util/Loader$1; +HSPLch/qos/logback/core/util/Loader$1;->()V +HSPLch/qos/logback/core/util/Loader$1;->run()Ljava/lang/Boolean; +HSPLch/qos/logback/core/util/Loader$1;->run()Ljava/lang/Object; +Lch/qos/logback/core/util/OptionHelper; +HSPLch/qos/logback/core/util/OptionHelper;->getAndroidSystemProperty(Ljava/lang/String;)Ljava/lang/String; +HSPLch/qos/logback/core/util/OptionHelper;->getSystemProperty(Ljava/lang/String;)Ljava/lang/String; +HSPLch/qos/logback/core/util/OptionHelper;->getSystemProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLch/qos/logback/core/util/OptionHelper;->instantiateByClassName(Ljava/lang/String;Ljava/lang/Class;Lch/qos/logback/core/Context;)Ljava/lang/Object; +HSPLch/qos/logback/core/util/OptionHelper;->instantiateByClassName(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/ClassLoader;)Ljava/lang/Object; +HSPLch/qos/logback/core/util/OptionHelper;->instantiateByClassNameAndParameter(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/ClassLoader;Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/Object; +HSPLch/qos/logback/core/util/OptionHelper;->isEmpty(Ljava/lang/String;)Z +HSPLch/qos/logback/core/util/OptionHelper;->substVars(Ljava/lang/String;Lch/qos/logback/core/spi/PropertyContainer;Lch/qos/logback/core/spi/PropertyContainer;)Ljava/lang/String; +HSPLch/qos/logback/core/util/OptionHelper;->toBoolean(Ljava/lang/String;Z)Z +Lch/qos/logback/core/util/PropertySetterException; +Lch/qos/logback/core/util/StatusListenerConfigHelper; +HSPLch/qos/logback/core/util/StatusListenerConfigHelper;->installIfAsked(Lch/qos/logback/core/Context;)V +Lch/qos/logback/core/util/StatusPrinter; +HSPLch/qos/logback/core/util/StatusPrinter;->()V +HSPLch/qos/logback/core/util/StatusPrinter;->printInCaseOfErrorsOrWarnings(Lch/qos/logback/core/Context;)V +HSPLch/qos/logback/core/util/StatusPrinter;->printInCaseOfErrorsOrWarnings(Lch/qos/logback/core/Context;J)V +Lcom/android/billingclient/api/AlternativeBillingListener; +Lcom/android/billingclient/api/BillingClient; +HSPLcom/android/billingclient/api/BillingClient;->()V +PLcom/android/billingclient/api/BillingClient;->newBuilder(Landroid/content/Context;)Lcom/android/billingclient/api/BillingClient$Builder; +Lcom/android/billingclient/api/BillingClient$Builder; +PLcom/android/billingclient/api/BillingClient$Builder;->(Landroid/content/Context;Lcom/android/billingclient/api/zzi;)V +HSPLcom/android/billingclient/api/BillingClient$Builder;->build()Lcom/android/billingclient/api/BillingClient; +PLcom/android/billingclient/api/BillingClient$Builder;->enablePendingPurchases()Lcom/android/billingclient/api/BillingClient$Builder; +PLcom/android/billingclient/api/BillingClient$Builder;->setListener(Lcom/android/billingclient/api/PurchasesUpdatedListener;)Lcom/android/billingclient/api/BillingClient$Builder; +Lcom/android/billingclient/api/BillingClientImpl; +HSPLcom/android/billingclient/api/BillingClientImpl;->(Ljava/lang/String;Lcom/android/billingclient/api/zzbx;Landroid/content/Context;Lcom/android/billingclient/api/PurchasesUpdatedListener;Lcom/android/billingclient/api/AlternativeBillingListener;Lcom/android/billingclient/api/zzbi;Ljava/util/concurrent/ExecutorService;)V +HSPLcom/android/billingclient/api/BillingClientImpl;->initialize(Landroid/content/Context;Lcom/android/billingclient/api/PurchasesUpdatedListener;Lcom/android/billingclient/api/zzbx;Lcom/android/billingclient/api/AlternativeBillingListener;Ljava/lang/String;Lcom/android/billingclient/api/zzbi;)V +HSPLcom/android/billingclient/api/BillingClientImpl;->isReady()Z +HSPLcom/android/billingclient/api/BillingClientImpl;->startConnection(Lcom/android/billingclient/api/BillingClientStateListener;)V +HSPLcom/android/billingclient/api/BillingClientImpl;->zzA(Lcom/android/billingclient/api/BillingClientImpl;Z)V +HSPLcom/android/billingclient/api/BillingClientImpl;->zzB(Lcom/android/billingclient/api/BillingClientImpl;Z)V +HSPLcom/android/billingclient/api/BillingClientImpl;->zzC(Lcom/android/billingclient/api/BillingClientImpl;Z)V +HSPLcom/android/billingclient/api/BillingClientImpl;->zzD(Lcom/android/billingclient/api/BillingClientImpl;Z)V +HSPLcom/android/billingclient/api/BillingClientImpl;->zzE(Lcom/android/billingclient/api/BillingClientImpl;Z)V +HSPLcom/android/billingclient/api/BillingClientImpl;->zzF(Lcom/android/billingclient/api/BillingClientImpl;Z)V +HSPLcom/android/billingclient/api/BillingClientImpl;->zzG(Lcom/android/billingclient/api/BillingClientImpl;Z)V +HSPLcom/android/billingclient/api/BillingClientImpl;->zzH(Lcom/android/billingclient/api/BillingClientImpl;Z)V +HSPLcom/android/billingclient/api/BillingClientImpl;->zzI(Lcom/android/billingclient/api/BillingClientImpl;Z)V +HSPLcom/android/billingclient/api/BillingClientImpl;->zzJ(Lcom/android/billingclient/api/BillingClientImpl;Lcom/google/android/gms/internal/play_billing/zzm;)V +HSPLcom/android/billingclient/api/BillingClientImpl;->zzK(Lcom/android/billingclient/api/BillingClientImpl;Z)V +HSPLcom/android/billingclient/api/BillingClientImpl;->zzL(Lcom/android/billingclient/api/BillingClientImpl;Z)V +HSPLcom/android/billingclient/api/BillingClientImpl;->zzY()Landroid/os/Handler; +HSPLcom/android/billingclient/api/BillingClientImpl;->zza(Lcom/android/billingclient/api/BillingClientImpl;)I +HSPLcom/android/billingclient/api/BillingClientImpl;->zzab()Ljava/lang/String; +HSPLcom/android/billingclient/api/BillingClientImpl;->zzac(Ljava/util/concurrent/Callable;JLjava/lang/Runnable;Landroid/os/Handler;)Ljava/util/concurrent/Future; +HSPLcom/android/billingclient/api/BillingClientImpl;->zzb(Lcom/android/billingclient/api/BillingClientImpl;)Landroid/content/Context; +HSPLcom/android/billingclient/api/BillingClientImpl;->zze(Lcom/android/billingclient/api/BillingClientImpl;)Landroid/os/Handler; +HSPLcom/android/billingclient/api/BillingClientImpl;->zzh(Lcom/android/billingclient/api/BillingClientImpl;)Lcom/android/billingclient/api/zzbi; +HSPLcom/android/billingclient/api/BillingClientImpl;->zzj(Lcom/android/billingclient/api/BillingClientImpl;)Lcom/google/android/gms/internal/play_billing/zzm; +HSPLcom/android/billingclient/api/BillingClientImpl;->zzt(Lcom/android/billingclient/api/BillingClientImpl;Ljava/util/concurrent/Callable;JLjava/lang/Runnable;Landroid/os/Handler;)Ljava/util/concurrent/Future; +HSPLcom/android/billingclient/api/BillingClientImpl;->zzu(Lcom/android/billingclient/api/BillingClientImpl;I)V +HSPLcom/android/billingclient/api/BillingClientImpl;->zzw(Lcom/android/billingclient/api/BillingClientImpl;Z)V +HSPLcom/android/billingclient/api/BillingClientImpl;->zzx(Lcom/android/billingclient/api/BillingClientImpl;Z)V +HSPLcom/android/billingclient/api/BillingClientImpl;->zzy(Lcom/android/billingclient/api/BillingClientImpl;Z)V +HSPLcom/android/billingclient/api/BillingClientImpl;->zzz(Lcom/android/billingclient/api/BillingClientImpl;Z)V +Lcom/android/billingclient/api/BillingClientStateListener; +Lcom/android/billingclient/api/BillingResult; +HSPLcom/android/billingclient/api/BillingResult;->()V +HSPLcom/android/billingclient/api/BillingResult;->getDebugMessage()Ljava/lang/String; +HSPLcom/android/billingclient/api/BillingResult;->getResponseCode()I +HSPLcom/android/billingclient/api/BillingResult;->newBuilder()Lcom/android/billingclient/api/BillingResult$Builder; +HSPLcom/android/billingclient/api/BillingResult;->zza(Lcom/android/billingclient/api/BillingResult;Ljava/lang/String;)V +HSPLcom/android/billingclient/api/BillingResult;->zzb(Lcom/android/billingclient/api/BillingResult;I)V +Lcom/android/billingclient/api/BillingResult$Builder; +HSPLcom/android/billingclient/api/BillingResult$Builder;->(Lcom/android/billingclient/api/zzbj;)V +HSPLcom/android/billingclient/api/BillingResult$Builder;->build()Lcom/android/billingclient/api/BillingResult; +HSPLcom/android/billingclient/api/BillingResult$Builder;->setDebugMessage(Ljava/lang/String;)Lcom/android/billingclient/api/BillingResult$Builder; +HSPLcom/android/billingclient/api/BillingResult$Builder;->setResponseCode(I)Lcom/android/billingclient/api/BillingResult$Builder; +Lcom/android/billingclient/api/PurchasesUpdatedListener; +Lcom/android/billingclient/api/UserChoiceBillingListener; +Lcom/android/billingclient/api/zzag; +HSPLcom/android/billingclient/api/zzag;->(Lcom/android/billingclient/api/BillingClientImpl;)V +HSPLcom/android/billingclient/api/zzag;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread; +Lcom/android/billingclient/api/zzal; +HSPLcom/android/billingclient/api/zzal;->(Lcom/android/billingclient/api/zzao;)V +HSPLcom/android/billingclient/api/zzal;->call()Ljava/lang/Object; +Lcom/android/billingclient/api/zzam; +HSPLcom/android/billingclient/api/zzam;->(Lcom/android/billingclient/api/zzao;)V +Lcom/android/billingclient/api/zzao; +HSPLcom/android/billingclient/api/zzao;->(Lcom/android/billingclient/api/BillingClientImpl;Lcom/android/billingclient/api/BillingClientStateListener;Lcom/android/billingclient/api/zzan;)V +HSPLcom/android/billingclient/api/zzao;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +HSPLcom/android/billingclient/api/zzao;->zza()Ljava/lang/Object; +HSPLcom/android/billingclient/api/zzao;->zzd(Lcom/android/billingclient/api/BillingResult;)V +Lcom/android/billingclient/api/zzbh; +HSPLcom/android/billingclient/api/zzbh;->zza(IILcom/android/billingclient/api/BillingResult;)Lcom/google/android/gms/internal/play_billing/zzhy; +Lcom/android/billingclient/api/zzbi; +Lcom/android/billingclient/api/zzbk; +HSPLcom/android/billingclient/api/zzbk;->()V +Lcom/android/billingclient/api/zzbn; +HSPLcom/android/billingclient/api/zzbn;->(Landroid/content/Context;Lcom/google/android/gms/internal/play_billing/zzio;)V +HSPLcom/android/billingclient/api/zzbn;->zza(Lcom/google/android/gms/internal/play_billing/zzhy;)V +Lcom/android/billingclient/api/zzbo; +HSPLcom/android/billingclient/api/zzbo;->()V +HSPLcom/android/billingclient/api/zzbo;->()V +HSPLcom/android/billingclient/api/zzbo;->apply(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/android/billingclient/api/zzbp; +HSPLcom/android/billingclient/api/zzbp;->(Landroid/content/Context;)V +HSPLcom/android/billingclient/api/zzbp;->zza(Lcom/google/android/gms/internal/play_billing/zziv;)V +Lcom/android/billingclient/api/zzbq; +Lcom/android/billingclient/api/zzbv; +PLcom/android/billingclient/api/zzbv;->(Lcom/android/billingclient/api/zzbu;)V +PLcom/android/billingclient/api/zzbv;->zza()Lcom/android/billingclient/api/zzbv; +PLcom/android/billingclient/api/zzbv;->zzb()Lcom/android/billingclient/api/zzbx; +Lcom/android/billingclient/api/zzbx; +PLcom/android/billingclient/api/zzbx;->(ZZLcom/android/billingclient/api/zzbw;)V +Lcom/android/billingclient/api/zzg; +HSPLcom/android/billingclient/api/zzg;->(Lcom/android/billingclient/api/zzh;Lcom/android/billingclient/api/PurchasesUpdatedListener;Lcom/android/billingclient/api/AlternativeBillingListener;Lcom/android/billingclient/api/zzbi;Lcom/android/billingclient/api/zzf;)V +Lcom/android/billingclient/api/zzh; +HSPLcom/android/billingclient/api/zzh;->(Landroid/content/Context;Lcom/android/billingclient/api/PurchasesUpdatedListener;Lcom/android/billingclient/api/AlternativeBillingListener;Lcom/android/billingclient/api/zzbi;)V +Lcom/android/billingclient/api/zzn; +HSPLcom/android/billingclient/api/zzn;->(Ljava/util/concurrent/Future;Ljava/lang/Runnable;)V +Lcom/android/billingclient/ktx/BuildConfig; +Lcom/artemchep/bindin/BindInKt; +HSPLcom/artemchep/bindin/BindInKt;->$r8$lambda$7FZYiAZKPPHiKth_BqoIeBFpcSE(Landroidx/lifecycle/Lifecycle$State;Lkotlin/jvm/internal/Ref$BooleanRef;Lkotlin/jvm/internal/Ref$ObjectRef;Landroidx/lifecycle/LifecycleOwner;Lkotlin/jvm/functions/Function1;Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +HSPLcom/artemchep/bindin/BindInKt;->()V +HSPLcom/artemchep/bindin/BindInKt;->bindBlock$default(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$State;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lkotlin/jvm/functions/Function0; +HSPLcom/artemchep/bindin/BindInKt;->bindBlock$lambda-2(Landroidx/lifecycle/Lifecycle$State;Lkotlin/jvm/internal/Ref$BooleanRef;Lkotlin/jvm/internal/Ref$ObjectRef;Landroidx/lifecycle/LifecycleOwner;Lkotlin/jvm/functions/Function1;Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +HSPLcom/artemchep/bindin/BindInKt;->bindBlock(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$State;Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function0; +Lcom/artemchep/bindin/BindInKt$$ExternalSyntheticLambda0; +HSPLcom/artemchep/bindin/BindInKt$$ExternalSyntheticLambda0;->(Landroidx/lifecycle/Lifecycle$State;Lkotlin/jvm/internal/Ref$BooleanRef;Lkotlin/jvm/internal/Ref$ObjectRef;Landroidx/lifecycle/LifecycleOwner;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/bindin/BindInKt$$ExternalSyntheticLambda0;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +Lcom/artemchep/bindin/BindInKt$bindBlock$observer$1$1; +HSPLcom/artemchep/bindin/BindInKt$bindBlock$observer$1$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/bindin/BindInKt$bindBlock$observer$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/bindin/BindInKt$bindBlock$observer$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/bindin/BindInKt$bindBlock$registration$1; +HSPLcom/artemchep/bindin/BindInKt$bindBlock$registration$1;->(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/LifecycleEventObserver;Lkotlin/jvm/internal/Ref$ObjectRef;)V +Lcom/artemchep/keyguard/AppMode; +Lcom/artemchep/keyguard/AppMode$HasType; +Lcom/artemchep/keyguard/AppMode$Main; +HSPLcom/artemchep/keyguard/AppMode$Main;->()V +HSPLcom/artemchep/keyguard/AppMode$Main;->()V +Lcom/artemchep/keyguard/AppMode$Pick; +Lcom/artemchep/keyguard/AppMode$PickPasskey; +Lcom/artemchep/keyguard/AppMode$Save; +Lcom/artemchep/keyguard/AppMode$SavePasskey; +Lcom/artemchep/keyguard/AutofillActArgsKt; +HSPLcom/artemchep/keyguard/AutofillActArgsKt;->getAutofillTarget(Lcom/artemchep/keyguard/AppMode;)Lcom/artemchep/keyguard/common/model/AutofillTarget; +Lcom/artemchep/keyguard/LocalAppModeKt; +HSPLcom/artemchep/keyguard/LocalAppModeKt;->()V +HSPLcom/artemchep/keyguard/LocalAppModeKt;->getLocalAppMode()Landroidx/compose/runtime/ProvidableCompositionLocal; +Lcom/artemchep/keyguard/LocalAppModeKt$LocalAppMode$1; +HSPLcom/artemchep/keyguard/LocalAppModeKt$LocalAppMode$1;->()V +HSPLcom/artemchep/keyguard/LocalAppModeKt$LocalAppMode$1;->()V +Lcom/artemchep/keyguard/Main; +HSPLcom/artemchep/keyguard/Main;->()V +HSPLcom/artemchep/keyguard/Main;->()V +HSPLcom/artemchep/keyguard/Main;->access$onCreate$lambda$1(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetVaultSession; +HSPLcom/artemchep/keyguard/Main;->access$onCreate$lambda$11(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetVaultLockAfterScreenOff; +HSPLcom/artemchep/keyguard/Main;->access$onCreate$lambda$12(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/service/power/PowerService; +HSPLcom/artemchep/keyguard/Main;->access$onCreate$lambda$3(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetVaultPersist; +HSPLcom/artemchep/keyguard/Main;->access$onCreate$lambda$4(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/service/vault/KeyReadWriteRepository; +HSPLcom/artemchep/keyguard/Main;->access$onCreate$lambda$6(Lkotlin/Lazy;)Lcom/artemchep/keyguard/android/downloader/journal/DownloadRepository; +HSPLcom/artemchep/keyguard/Main;->access$onCreate$lambda$7(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/CleanUpAttachment; +HSPLcom/artemchep/keyguard/Main;->access$onCreate$lambda$8(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/AppWorker; +HSPLcom/artemchep/keyguard/Main;->attachBaseContext(Landroid/content/Context;)V +HSPLcom/artemchep/keyguard/Main;->getDi()Lorg/kodein/di/DI; +HSPLcom/artemchep/keyguard/Main;->getDi()Lorg/kodein/di/LazyDI; +HSPLcom/artemchep/keyguard/Main;->getDiContext()Lorg/kodein/di/DIContext; +HSPLcom/artemchep/keyguard/Main;->getDiTrigger()Lorg/kodein/di/DITrigger; +HSPLcom/artemchep/keyguard/Main;->onCreate$lambda$1(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetVaultSession; +HSPLcom/artemchep/keyguard/Main;->onCreate$lambda$11(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetVaultLockAfterScreenOff; +HSPLcom/artemchep/keyguard/Main;->onCreate$lambda$12(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/service/power/PowerService; +HSPLcom/artemchep/keyguard/Main;->onCreate$lambda$3(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetVaultPersist; +HSPLcom/artemchep/keyguard/Main;->onCreate$lambda$4(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/service/vault/KeyReadWriteRepository; +HSPLcom/artemchep/keyguard/Main;->onCreate$lambda$6(Lkotlin/Lazy;)Lcom/artemchep/keyguard/android/downloader/journal/DownloadRepository; +HSPLcom/artemchep/keyguard/Main;->onCreate$lambda$7(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/CleanUpAttachment; +HSPLcom/artemchep/keyguard/Main;->onCreate$lambda$8(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/AppWorker; +HSPLcom/artemchep/keyguard/Main;->onCreate()V +Lcom/artemchep/keyguard/Main$di$2; +HSPLcom/artemchep/keyguard/Main$di$2;->(Lcom/artemchep/keyguard/Main;)V +HSPLcom/artemchep/keyguard/Main$di$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$di$2;->invoke(Lorg/kodein/di/DI$MainBuilder;)V +Lcom/artemchep/keyguard/Main$di$2$1; +HSPLcom/artemchep/keyguard/Main$di$2$1;->(Lcom/artemchep/keyguard/Main;)V +HSPLcom/artemchep/keyguard/Main$di$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$di$2$1;->invoke(Lorg/kodein/di/bindings/NoArgBindingDI;)Lcom/artemchep/keyguard/billing/BillingManagerImpl; +Lcom/artemchep/keyguard/Main$di$2$invoke$$inlined$bind$default$1; +HSPLcom/artemchep/keyguard/Main$di$2$invoke$$inlined$bind$default$1;->()V +Lcom/artemchep/keyguard/Main$di$2$invoke$$inlined$singleton$default$1; +HSPLcom/artemchep/keyguard/Main$di$2$invoke$$inlined$singleton$default$1;->()V +Lcom/artemchep/keyguard/Main$onCreate$$inlined$instance$1; +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$instance$1;->()V +Lcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$10; +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$10;->()V +Lcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$11; +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$11;->()V +Lcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$4; +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$4;->()V +Lcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$5; +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$5;->()V +Lcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$6; +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$6;->()V +Lcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$7; +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$7;->()V +Lcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$8; +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$8;->()V +Lcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$9; +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$instance$default$9;->()V +Lcom/artemchep/keyguard/Main$onCreate$$inlined$map$1; +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/Main$onCreate$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/Main$onCreate$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/Main$onCreate$1; +HSPLcom/artemchep/keyguard/Main$onCreate$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/Lazy;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/Main$onCreate$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/Main$onCreate$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$2; +HSPLcom/artemchep/keyguard/Main$onCreate$2;->(Lkotlin/Lazy;Lkotlin/Lazy;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/Main$onCreate$2;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/Main$onCreate$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$2;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$2$1; +HSPLcom/artemchep/keyguard/Main$onCreate$2$1;->(Lkotlin/Lazy;Lkotlin/Lazy;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/Main$onCreate$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/Main$onCreate$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$2$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$3; +HSPLcom/artemchep/keyguard/Main$onCreate$3;->(Lkotlin/Lazy;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/Main$onCreate$3;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/Main$onCreate$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$3;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$3$2; +HSPLcom/artemchep/keyguard/Main$onCreate$3$2;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/Main$onCreate$3$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/Main$onCreate$3$2;->invoke(Lcom/artemchep/keyguard/common/usecase/GetAccounts;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$3$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$3$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$3$2$1; +HSPLcom/artemchep/keyguard/Main$onCreate$3$2$1;->(Lcom/artemchep/keyguard/common/usecase/GetAccounts;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/Main$onCreate$3$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/Main$onCreate$3$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$3$2$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$3$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$3$invokeSuspend$$inlined$map$1; +HSPLcom/artemchep/keyguard/Main$onCreate$3$invokeSuspend$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/Main$onCreate$3$invokeSuspend$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$3$invokeSuspend$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/Main$onCreate$3$invokeSuspend$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/Main$onCreate$3$invokeSuspend$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$3$invokeSuspend$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/Main$onCreate$3$invokeSuspend$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/Main$onCreate$3$invokeSuspend$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/Main$onCreate$3$invokeSuspend$lambda$0$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/Main$onCreate$3$invokeSuspend$lambda$0$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/Main$onCreate$4; +HSPLcom/artemchep/keyguard/Main$onCreate$4;->(Lkotlin/Lazy;Lkotlin/Lazy;Lkotlin/Lazy;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/Main$onCreate$4;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/Main$onCreate$4;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$4;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$4;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$4$1; +HSPLcom/artemchep/keyguard/Main$onCreate$4$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/Main$onCreate$4$1;->invoke(Lcom/artemchep/keyguard/common/model/MasterSession;ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$4$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$4$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$4$2; +HSPLcom/artemchep/keyguard/Main$onCreate$4$2;->(Lkotlin/Lazy;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/Main$onCreate$4$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/Main$onCreate$4$2;->invoke(Lcom/artemchep/keyguard/common/model/MasterKey;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$4$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$4$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$5; +HSPLcom/artemchep/keyguard/Main$onCreate$5;->(Lkotlin/jvm/internal/Ref$ObjectRef;Lkotlin/Lazy;Lcom/artemchep/keyguard/Main;Lkotlin/Lazy;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/Main$onCreate$5;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/Main$onCreate$5;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$5;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$5;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$6; +HSPLcom/artemchep/keyguard/Main$onCreate$6;->(Lkotlin/Lazy;Lkotlin/Lazy;Lkotlin/Lazy;Lkotlin/Lazy;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/Main$onCreate$6;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/Main$onCreate$6;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$6$6; +HSPLcom/artemchep/keyguard/Main$onCreate$6$6;->(Lkotlinx/coroutines/CoroutineScope;Lkotlin/Lazy;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$filter$1; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$filter$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$filter$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$filter$1$2; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$filter$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;Lkotlin/Lazy;)V +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$flatMapLatest$2; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$flatMapLatest$2;->(Lkotlin/coroutines/Continuation;Lkotlinx/coroutines/flow/SharedFlow;)V +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$flatMapLatest$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$flatMapLatest$2;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$flatMapLatest$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$1; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$2; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$2;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$2;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$2$2; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$2$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$2$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$2$2$1; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$2$2$1;->(Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$2$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$3; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$3;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$3;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$3$2; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$3$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$3$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$3$2$1; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$3$2$1;->(Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$$inlined$map$3$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$lambda$6$$inlined$mapNotNull$1; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$lambda$6$$inlined$mapNotNull$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlinx/datetime/Instant;)V +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$lambda$6$$inlined$mapNotNull$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$lambda$6$$inlined$mapNotNull$1$2; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$lambda$6$$inlined$mapNotNull$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lkotlinx/datetime/Instant;)V +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$lambda$6$$inlined$mapNotNull$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$lambda$6$$inlined$mapNotNull$1$2$1; +HSPLcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$lambda$6$$inlined$mapNotNull$1$2$1;->(Lcom/artemchep/keyguard/Main$onCreate$6$invokeSuspend$lambda$6$$inlined$mapNotNull$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/android/BaseActivity; +HSPLcom/artemchep/keyguard/android/BaseActivity;->()V +HSPLcom/artemchep/keyguard/android/BaseActivity;->()V +HSPLcom/artemchep/keyguard/android/BaseActivity;->Navigation(Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/android/BaseActivity;->access$Navigation(Lcom/artemchep/keyguard/android/BaseActivity;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/android/BaseActivity;->access$setLastUseExternalBrowser$p(Lcom/artemchep/keyguard/android/BaseActivity;Z)V +HSPLcom/artemchep/keyguard/android/BaseActivity;->getDi()Lorg/kodein/di/DI; +HSPLcom/artemchep/keyguard/android/BaseActivity;->getDiContext()Lorg/kodein/di/DIContext; +HSPLcom/artemchep/keyguard/android/BaseActivity;->getDiTrigger()Lorg/kodein/di/DITrigger; +HSPLcom/artemchep/keyguard/android/BaseActivity;->onCreate$lambda$0(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetAllowScreenshots; +HSPLcom/artemchep/keyguard/android/BaseActivity;->onCreate$lambda$1(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetUseExternalBrowser; +HSPLcom/artemchep/keyguard/android/BaseActivity;->onCreate(Landroid/os/Bundle;)V +Lcom/artemchep/keyguard/android/BaseActivity$Navigation$1; +HSPLcom/artemchep/keyguard/android/BaseActivity$Navigation$1;->()V +HSPLcom/artemchep/keyguard/android/BaseActivity$Navigation$1;->(Lcom/artemchep/keyguard/android/BaseActivity;Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/android/BaseActivity$Navigation$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/android/BaseActivity$Navigation$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/BaseActivity$Navigation$1$1; +HSPLcom/artemchep/keyguard/android/BaseActivity$Navigation$1$1;->(Lcom/artemchep/keyguard/android/BaseActivity;Lkotlin/Lazy;)V +Lcom/artemchep/keyguard/android/BaseActivity$Navigation$1$2; +HSPLcom/artemchep/keyguard/android/BaseActivity$Navigation$1$2;->(Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/android/BaseActivity$Navigation$1$2;->invoke(Lcom/artemchep/keyguard/feature/navigation/NavigationController;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/android/BaseActivity$Navigation$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/BaseActivity$Navigation$1$2$1; +HSPLcom/artemchep/keyguard/android/BaseActivity$Navigation$1$2$1;->(Lcom/artemchep/keyguard/feature/navigation/BackHandler;Lcom/artemchep/keyguard/feature/navigation/NavigationController;)V +HSPLcom/artemchep/keyguard/android/BaseActivity$Navigation$1$2$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLcom/artemchep/keyguard/android/BaseActivity$Navigation$1$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/BaseActivity$Navigation$1$2$1$invoke$$inlined$onDispose$1; +HSPLcom/artemchep/keyguard/android/BaseActivity$Navigation$1$2$1$invoke$$inlined$onDispose$1;->(Lkotlin/jvm/functions/Function0;)V +Lcom/artemchep/keyguard/android/BaseActivity$Navigation$1$invoke$$inlined$rememberInstance$1; +HSPLcom/artemchep/keyguard/android/BaseActivity$Navigation$1$invoke$$inlined$rememberInstance$1;->()V +Lcom/artemchep/keyguard/android/BaseActivity$onCreate$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/android/BaseActivity$onCreate$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/android/BaseActivity$onCreate$1; +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$1;->(Lcom/artemchep/keyguard/android/BaseActivity;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$1;->invoke(ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/BaseActivity$onCreate$2; +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$2;->(Lcom/artemchep/keyguard/android/BaseActivity;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$2;->invoke(ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/BaseActivity$onCreate$3; +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$3;->(Lcom/artemchep/keyguard/android/BaseActivity;)V +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$3;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1; +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1;->(Lcom/artemchep/keyguard/android/BaseActivity;)V +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1$1; +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1$1;->()V +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1$1;->()V +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1$2; +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1$2;->(Lcom/artemchep/keyguard/android/BaseActivity;)V +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1$2$1; +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1$2$1;->(Lcom/artemchep/keyguard/android/BaseActivity;)V +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1$2$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/android/BaseActivity$onCreate$3$1$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/BaseActivity$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/android/BaseActivity$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/android/BaseActivity$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/android/BaseActivity$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/android/BaseApp; +HSPLcom/artemchep/keyguard/android/BaseApp;->()V +HSPLcom/artemchep/keyguard/android/BaseApp;->()V +Lcom/artemchep/keyguard/android/ComposableSingletons$MainActivityKt; +HSPLcom/artemchep/keyguard/android/ComposableSingletons$MainActivityKt;->()V +HSPLcom/artemchep/keyguard/android/ComposableSingletons$MainActivityKt;->()V +HSPLcom/artemchep/keyguard/android/ComposableSingletons$MainActivityKt;->getLambda-1$common_playStoreRelease()Lkotlin/jvm/functions/Function2; +Lcom/artemchep/keyguard/android/ComposableSingletons$MainActivityKt$lambda-1$1; +HSPLcom/artemchep/keyguard/android/ComposableSingletons$MainActivityKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/android/ComposableSingletons$MainActivityKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/android/ComposableSingletons$MainActivityKt$lambda-1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/android/ComposableSingletons$MainActivityKt$lambda-1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/MainActivity; +HSPLcom/artemchep/keyguard/android/MainActivity;->()V +HSPLcom/artemchep/keyguard/android/MainActivity;->()V +HSPLcom/artemchep/keyguard/android/MainActivity;->Content(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/android/MainActivity;->onCreate(Landroid/os/Bundle;)V +HSPLcom/artemchep/keyguard/android/MainActivity;->updateDeeplinkFromIntent(Landroid/content/Intent;)V +Lcom/artemchep/keyguard/android/MainActivity$Companion; +HSPLcom/artemchep/keyguard/android/MainActivity$Companion;->()V +HSPLcom/artemchep/keyguard/android/MainActivity$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/android/MainActivity$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/android/MainActivity$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/android/PasskeyBeginGetRequest; +Lcom/artemchep/keyguard/android/PasskeyCreateRequest; +Lcom/artemchep/keyguard/android/PasskeyGenerator; +Lcom/artemchep/keyguard/android/PasskeyGeneratorBase; +Lcom/artemchep/keyguard/android/PasskeyGeneratorES256; +Lcom/artemchep/keyguard/android/PasskeyModuleKt; +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt;->passkeysModule()Lorg/kodein/di/DI$Module; +Lcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1; +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1;->()V +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1;->()V +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1;->invoke(Lorg/kodein/di/DI$Builder;)V +Lcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$1; +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$1;->()V +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$1;->()V +Lcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$2; +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$2;->()V +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$2;->()V +Lcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$3; +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$3;->()V +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$3;->()V +Lcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$4; +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$4;->()V +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$4;->()V +Lcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$5; +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$5;->()V +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$5;->()V +Lcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$invoke$$inlined$bindSingleton$default$1; +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$invoke$$inlined$bindSingleton$default$1;->()V +Lcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$invoke$$inlined$bindSingleton$default$2; +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$invoke$$inlined$bindSingleton$default$2;->()V +Lcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$invoke$$inlined$bindSingleton$default$3; +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$invoke$$inlined$bindSingleton$default$3;->()V +Lcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$invoke$$inlined$bindSingleton$default$4; +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$invoke$$inlined$bindSingleton$default$4;->()V +Lcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$invoke$$inlined$bindSingleton$default$5; +HSPLcom/artemchep/keyguard/android/PasskeyModuleKt$passkeysModule$1$invoke$$inlined$bindSingleton$default$5;->()V +Lcom/artemchep/keyguard/android/PasskeyProviderGetRequest; +Lcom/artemchep/keyguard/android/PasskeyUtils; +Lcom/artemchep/keyguard/android/downloader/DownloadClientAndroid; +Lcom/artemchep/keyguard/android/downloader/journal/CipherHistoryOpenedRepository; +Lcom/artemchep/keyguard/android/downloader/journal/CipherHistoryOpenedRepositoryImpl; +HSPLcom/artemchep/keyguard/android/downloader/journal/CipherHistoryOpenedRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/android/downloader/journal/CipherHistoryOpenedRepositoryImpl;->(Lcom/artemchep/keyguard/core/store/DatabaseManager;Lkotlinx/coroutines/CoroutineDispatcher;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/CipherHistoryOpenedRepositoryImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/android/downloader/journal/CipherHistoryOpenedRepositoryImpl$special$$inlined$instance$1; +HSPLcom/artemchep/keyguard/android/downloader/journal/CipherHistoryOpenedRepositoryImpl$special$$inlined$instance$1;->()V +Lcom/artemchep/keyguard/android/downloader/journal/CipherHistoryOpenedRepositoryImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/android/downloader/journal/CipherHistoryOpenedRepositoryImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/android/downloader/journal/DownloadRepository; +Lcom/artemchep/keyguard/android/downloader/journal/DownloadRepositoryImpl; +HSPLcom/artemchep/keyguard/android/downloader/journal/DownloadRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/android/downloader/journal/DownloadRepositoryImpl;->(Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/DownloadRepositoryImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/android/downloader/journal/DownloadRepositoryImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/android/downloader/journal/DownloadRepositoryImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/android/downloader/journal/GeneratorHistoryRepository; +Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase;->()V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase;->()V +Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;->()V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;->(Landroid/content/Context;Ljava/lang/String;Lcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;->access$getApplicationContext$p(Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;)Landroid/content/Context; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;->access$getDbIo$p(Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;->access$getName$p(Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;->migrateIfExists(Lcom/artemchep/keyguard/data/Database;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Lkotlin/coroutines/CoroutineContext;Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;Lcom/artemchep/keyguard/data/Database;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$$inlined$ioEffect$1$1; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$$inlined$ioEffect$1$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;Lcom/artemchep/keyguard/data/Database;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$$inlined$ioEffect$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$$inlined$ioEffect$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$1$1; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$1$1;->(Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase;Lcom/artemchep/keyguard/data/Database;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$1$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$1$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$1$1$1; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$1$1$1;->(Ljava/util/List;Lcom/artemchep/keyguard/data/Database;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$1$1$1;->invoke(Lapp/cash/sqldelight/TransactionWithoutReturn;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$migrateIfExists$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$special$$inlined$effectMap$1; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$special$$inlined$effectMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$special$$inlined$effectMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$special$$inlined$effectMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$special$$inlined$effectMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$special$$inlined$effectMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$special$$inlined$effectMap$1$1; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$special$$inlined$effectMap$1$1;->(Ljava/lang/Object;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$special$$inlined$effectMap$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$special$$inlined$effectMap$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$special$$inlined$retry$1; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$special$$inlined$retry$1;->(Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function1;Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$special$$inlined$retry$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$special$$inlined$retry$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$special$$inlined$retry$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager$special$$inlined$retry$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseTypeConverter; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseTypeConverter;->()V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseTypeConverter;->()V +Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_AutoMigration_1_2_Impl; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_AutoMigration_1_2_Impl;->()V +Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl;->()V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl;->access$100(Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl;)Ljava/util/List; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl;->access$202(Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl;Landroidx/sqlite/db/SupportSQLiteDatabase;)Landroidx/sqlite/db/SupportSQLiteDatabase; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl;->access$300(Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl;Landroidx/sqlite/db/SupportSQLiteDatabase;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl;->access$400(Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl;)Ljava/util/List; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl;->createInvalidationTracker()Landroidx/room/InvalidationTracker; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl;->createOpenHelper(Landroidx/room/DatabaseConfiguration;)Landroidx/sqlite/db/SupportSQLiteOpenHelper; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl;->generatorDao()Lcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl;->getAutoMigrations(Ljava/util/Map;)Ljava/util/List; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl;->getRequiredAutoMigrationSpecs()Ljava/util/Set; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl;->getRequiredTypeConverters()Ljava/util/Map; +Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl$1; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl$1;->(Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl;I)V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl$1;->createAllTables(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl$1;->onCreate(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase_Impl$1;->onOpen(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadInfoDao; +Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadInfoDao_Impl; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/DownloadInfoDao_Impl;->getRequiredConverters()Ljava/util/List; +Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadInfoEntity2; +Lcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao; +Lcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl;->-$$Nest$fget__db(Lcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl;)Landroidx/room/RoomDatabase; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl;->-$$Nest$fget__preparedStmtOfRemoveAll(Lcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl;)Landroidx/room/SharedSQLiteStatement; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl;->(Landroidx/room/RoomDatabase;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl;->getAll()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl;->getRequiredConverters()Ljava/util/List; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl;->removeAll(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl$1; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl$1;->(Lcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl;Landroidx/room/RoomDatabase;)V +Lcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl$2; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl$2;->(Lcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl;Landroidx/room/RoomDatabase;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl$2;->createQuery()Ljava/lang/String; +Lcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl$4; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl$4;->(Lcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl$4;->call()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl$4;->call()Lkotlin/Unit; +Lcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl$5; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl$5;->(Lcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl;Landroidx/room/RoomSQLiteQuery;)V +HSPLcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl$5;->call()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl$5;->call()Ljava/util/List; +PLcom/artemchep/keyguard/android/downloader/journal/room/GeneratorDao_Impl$5;->finalize()V +Lcom/artemchep/keyguard/android/downloader/worker/AttachmentDownloadAllWorker; +HSPLcom/artemchep/keyguard/android/downloader/worker/AttachmentDownloadAllWorker;->()V +Lcom/artemchep/keyguard/android/downloader/worker/AttachmentDownloadAllWorker$Companion; +HSPLcom/artemchep/keyguard/android/downloader/worker/AttachmentDownloadAllWorker$Companion;->()V +HSPLcom/artemchep/keyguard/android/downloader/worker/AttachmentDownloadAllWorker$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/android/downloader/worker/AttachmentDownloadAllWorker$Companion;->enqueue(Landroid/content/Context;)Landroidx/work/Operation; +Lcom/artemchep/keyguard/android/util/ScreenFlowKt; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt;->access$screenState(Landroid/content/Context;)Lcom/artemchep/keyguard/common/model/Screen; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt;->isScreenOn(Landroid/content/Context;)Z +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt;->screenFlow(Landroid/content/Context;)Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt;->screenState(Landroid/content/Context;)Lcom/artemchep/keyguard/common/model/Screen; +Lcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;Landroid/content/Context;)V +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1;->(Lkotlin/coroutines/Continuation;Landroid/content/Context;)V +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1;->invoke(Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1$1; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1$1;->(Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/coroutines/Continuation;Landroid/content/Context;)V +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1$1$1; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1$1$1;->(Lkotlinx/coroutines/channels/ProducerScope;)V +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1$1$1;->invoke-JP2dKIU(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1$2; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$$inlined$observerFlow$1$2;->(Lkotlinx/coroutines/CancellableContinuation;)V +Lcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$1$1; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$1$1;->(Landroid/content/Context;Lcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$1$broadcastReceiver$1;)V +Lcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$1$broadcastReceiver$1; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$1$broadcastReceiver$1;->(Lkotlin/jvm/functions/Function1;)V +Lcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$2$1; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$2$1;->(Lcom/artemchep/keyguard/common/model/Screen;Landroid/content/Context;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$2$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/util/ScreenFlowKt$screenFlow$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/worker/SyncWorker; +HSPLcom/artemchep/keyguard/android/worker/SyncWorker;->()V +HSPLcom/artemchep/keyguard/android/worker/SyncWorker;->(Landroid/content/Context;Landroidx/work/WorkerParameters;)V +HSPLcom/artemchep/keyguard/android/worker/SyncWorker;->doWork(Lorg/kodein/di/DI;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/worker/SyncWorker;->getAccountIds()Ljava/util/Set; +Lcom/artemchep/keyguard/android/worker/SyncWorker$Companion; +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$Companion;->()V +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$Companion;->enqueueOnce$default(Lcom/artemchep/keyguard/android/worker/SyncWorker$Companion;Landroid/content/Context;Ljava/util/Set;ILjava/lang/Object;)Landroidx/work/Operation; +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$Companion;->enqueueOnce(Landroid/content/Context;Ljava/util/Set;)Landroidx/work/Operation; +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$Companion;->getConstraints()Landroidx/work/Constraints; +Lcom/artemchep/keyguard/android/worker/SyncWorker$accountIds$2; +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$accountIds$2;->(Lcom/artemchep/keyguard/android/worker/SyncWorker;)V +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$accountIds$2;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$accountIds$2;->invoke()Ljava/util/Set; +Lcom/artemchep/keyguard/android/worker/SyncWorker$accountIds$2$1; +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$accountIds$2$1;->()V +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$accountIds$2$1;->()V +Lcom/artemchep/keyguard/android/worker/SyncWorker$doWork$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$doWork$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/android/worker/SyncWorker$doWork$$inlined$map$1; +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$doWork$$inlined$map$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$doWork$$inlined$map$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$doWork$$inlined$map$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$doWork$$inlined$map$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$doWork$$inlined$map$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/worker/SyncWorker$doWork$1; +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$doWork$1;->(Lcom/artemchep/keyguard/android/worker/SyncWorker;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/android/worker/SyncWorker$doWork$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/worker/util/SessionWorker; +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker;->()V +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker;->(Landroid/content/Context;Landroidx/work/WorkerParameters;)V +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker;->doWork$suspendImpl(Lcom/artemchep/keyguard/android/worker/util/SessionWorker;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker;->doWork(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker;->getDi()Lorg/kodein/di/DI; +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker;->getGetVaultSession()Lcom/artemchep/keyguard/common/usecase/GetVaultSession; +Lcom/artemchep/keyguard/android/worker/util/SessionWorker$Companion; +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker$Companion;->()V +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/android/worker/util/SessionWorker$di$2; +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker$di$2;->(Lcom/artemchep/keyguard/android/worker/util/SessionWorker;)V +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker$di$2;->invoke()Landroid/content/Context; +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker$di$2;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/android/worker/util/SessionWorker$doWork$2$1; +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker$doWork$2$1;->(Lcom/artemchep/keyguard/android/worker/util/SessionWorker;Lcom/artemchep/keyguard/common/model/MasterSession;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker$doWork$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker$doWork$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker$doWork$2$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker$doWork$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/worker/util/SessionWorker$doWork$suspendImpl$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker$doWork$suspendImpl$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/android/worker/util/SessionWorker;)V +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker$doWork$suspendImpl$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker$doWork$suspendImpl$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker$doWork$suspendImpl$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/android/worker/util/SessionWorker$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/android/worker/util/SessionWorker$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/billing/BillingClientApiException; +HSPLcom/artemchep/keyguard/billing/BillingClientApiException;->()V +HSPLcom/artemchep/keyguard/billing/BillingClientApiException;->(I)V +Lcom/artemchep/keyguard/billing/BillingConnection; +Lcom/artemchep/keyguard/billing/BillingConnectionImpl; +HSPLcom/artemchep/keyguard/billing/BillingConnectionImpl;->()V +PLcom/artemchep/keyguard/billing/BillingConnectionImpl;->(Lkotlinx/coroutines/CoroutineScope;Lcom/artemchep/keyguard/common/util/flow/EventFlow;Lkotlinx/coroutines/flow/MutableStateFlow;)V +HSPLcom/artemchep/keyguard/billing/BillingConnectionImpl;->access$getDataChangedLiveFlow$p(Lcom/artemchep/keyguard/billing/BillingConnectionImpl;)Lcom/artemchep/keyguard/common/util/flow/EventFlow; +HSPLcom/artemchep/keyguard/billing/BillingConnectionImpl;->getClientLiveFlow()Lkotlinx/coroutines/flow/MutableStateFlow; +HSPLcom/artemchep/keyguard/billing/BillingConnectionImpl;->mapClient(Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/billing/BillingConnectionImpl;->purchasesFlow(Ljava/lang/String;)Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/billing/BillingConnectionImpl$Companion; +HSPLcom/artemchep/keyguard/billing/BillingConnectionImpl$Companion;->()V +HSPLcom/artemchep/keyguard/billing/BillingConnectionImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/billing/BillingConnectionImpl$mapClient$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/billing/BillingConnectionImpl$mapClient$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/billing/BillingConnectionImpl;Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/billing/BillingConnectionImpl$mapClient$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/billing/BillingConnectionImpl$mapClient$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/billing/BillingConnectionImpl$mapClient$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/billing/BillingConnectionImpl$mapClient$1$1; +HSPLcom/artemchep/keyguard/billing/BillingConnectionImpl$mapClient$1$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/billing/BillingConnectionImpl$mapClient$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/billing/BillingConnectionImpl$mapClient$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/billing/BillingConnectionImpl$mapClient$1$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/billing/BillingConnectionImpl$mapClient$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/billing/BillingConnectionImpl$mapClient$1$2$1; +HSPLcom/artemchep/keyguard/billing/BillingConnectionImpl$mapClient$1$2$1;->(Lcom/artemchep/keyguard/common/model/RichResult;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/billing/BillingConnectionImpl$mapClient$1$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/billing/BillingConnectionImpl$mapClient$1$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/billing/BillingConnectionImpl$mapClient$1$2$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/billing/BillingConnectionImpl$mapClient$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/billing/BillingConnectionImpl$mapClient$lambda$10$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/billing/BillingConnectionImpl$mapClient$lambda$10$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/model/RichResult;Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/billing/BillingConnectionImpl$mapClient$lambda$10$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/billing/BillingConnectionImpl$mapClient$lambda$10$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/billing/BillingConnectionImpl$mapClient$lambda$10$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/billing/BillingConnectionImpl$purchasesFlow$1; +HSPLcom/artemchep/keyguard/billing/BillingConnectionImpl$purchasesFlow$1;->(Lcom/artemchep/keyguard/billing/BillingConnectionImpl;Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/billing/BillingManager; +Lcom/artemchep/keyguard/billing/BillingManagerImpl; +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl;->()V +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl;->(Landroid/content/Context;)V +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl;->access$launchIn(Lcom/artemchep/keyguard/billing/BillingManagerImpl;Lkotlinx/coroutines/CoroutineScope;)Lcom/artemchep/keyguard/billing/BillingConnection; +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl;->getBillingConnectionFlow()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl;->launchIn(Lkotlinx/coroutines/CoroutineScope;)Lcom/artemchep/keyguard/billing/BillingConnection; +Lcom/artemchep/keyguard/billing/BillingManagerImpl$$ExternalSyntheticLambda0; +PLcom/artemchep/keyguard/billing/BillingManagerImpl$$ExternalSyntheticLambda0;->(Lcom/artemchep/keyguard/common/util/flow/EventFlow;)V +Lcom/artemchep/keyguard/billing/BillingManagerImpl$Companion; +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$Companion;->()V +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/billing/BillingManagerImpl$billingConnectionFlow$1; +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$billingConnectionFlow$1;->(Lcom/artemchep/keyguard/billing/BillingManagerImpl;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$billingConnectionFlow$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$billingConnectionFlow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$billingConnectionFlow$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$billingConnectionFlow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/billing/BillingManagerImpl$billingConnectionFlow$1$1; +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$billingConnectionFlow$1$1;->(Lcom/artemchep/keyguard/billing/BillingManagerImpl;Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$billingConnectionFlow$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$billingConnectionFlow$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$billingConnectionFlow$1$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$billingConnectionFlow$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/billing/BillingManagerImpl$launchIn$job$1; +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$launchIn$job$1;->(Lcom/android/billingclient/api/BillingClient;Lkotlinx/coroutines/flow/MutableStateFlow;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$launchIn$job$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$launchIn$job$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/billing/BillingManagerImpl$launchIn$job$1$flow$1; +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$launchIn$job$1$flow$1;->(Lkotlin/jvm/functions/Function0;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$launchIn$job$1$flow$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$launchIn$job$1$flow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$launchIn$job$1$flow$1;->invoke(Lkotlin/Unit;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$launchIn$job$1$flow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/billing/BillingManagerImpl$launchIn$job$1$flow$2; +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$launchIn$job$1$flow$2;->(Lkotlin/jvm/functions/Function0;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$launchIn$job$1$flow$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$launchIn$job$1$flow$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$launchIn$job$1$flow$2;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$launchIn$job$1$flow$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/billing/BillingManagerImpl$launchIn$job$1$listener$1; +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$launchIn$job$1$listener$1;->(Lcom/android/billingclient/api/BillingClient;Lkotlin/jvm/functions/Function0;Lkotlinx/coroutines/flow/MutableStateFlow;)V +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$launchIn$job$1$listener$1;->onBillingSetupFinished(Lcom/android/billingclient/api/BillingResult;)V +Lcom/artemchep/keyguard/billing/BillingManagerImpl$launchIn$job$1$requestConnect$1; +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$launchIn$job$1$requestConnect$1;->(Ljava/lang/Object;)V +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$launchIn$job$1$requestConnect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$launchIn$job$1$requestConnect$1;->invoke(Lkotlin/Unit;)V +Lcom/artemchep/keyguard/billing/BillingManagerImpl$launchIn$job$1$tryConnect$1; +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$launchIn$job$1$tryConnect$1;->(Lkotlinx/coroutines/flow/MutableStateFlow;Lcom/android/billingclient/api/BillingClient;Lcom/artemchep/keyguard/billing/BillingManagerImpl$launchIn$job$1$listener$1;)V +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$launchIn$job$1$tryConnect$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/billing/BillingManagerImpl$launchIn$job$1$tryConnect$1;->invoke()V +Lcom/artemchep/keyguard/billing/BillingResponseException; +Lcom/artemchep/keyguard/build/BuildKonfig; +HSPLcom/artemchep/keyguard/build/BuildKonfig;->()V +HSPLcom/artemchep/keyguard/build/BuildKonfig;->()V +HSPLcom/artemchep/keyguard/build/BuildKonfig;->getBuildType()Ljava/lang/String; +Lcom/artemchep/keyguard/common/AppWorker; +Lcom/artemchep/keyguard/common/AppWorker$Feature; +HSPLcom/artemchep/keyguard/common/AppWorker$Feature;->$values()[Lcom/artemchep/keyguard/common/AppWorker$Feature; +HSPLcom/artemchep/keyguard/common/AppWorker$Feature;->()V +HSPLcom/artemchep/keyguard/common/AppWorker$Feature;->(Ljava/lang/String;I)V +Lcom/artemchep/keyguard/common/AppWorkerIm; +HSPLcom/artemchep/keyguard/common/AppWorkerIm;->()V +HSPLcom/artemchep/keyguard/common/AppWorkerIm;->(Lcom/artemchep/keyguard/common/usecase/GetVaultSession;)V +HSPLcom/artemchep/keyguard/common/AppWorkerIm;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/AppWorkerIm;->access$launchSyncManagerWhenAvailable(Lcom/artemchep/keyguard/common/AppWorkerIm;Lkotlinx/coroutines/CoroutineScope;)Lkotlinx/coroutines/Job; +HSPLcom/artemchep/keyguard/common/AppWorkerIm;->launch(Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/flow/Flow;)Lkotlinx/coroutines/Job; +HSPLcom/artemchep/keyguard/common/AppWorkerIm;->launchSyncManagerWhenAvailable(Lkotlinx/coroutines/CoroutineScope;)Lkotlinx/coroutines/Job; +Lcom/artemchep/keyguard/common/AppWorkerIm$launch$1; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launch$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/common/AppWorkerIm;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launch$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launch$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/AppWorkerIm$launch$1$1; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launch$1$1;->(Lcom/artemchep/keyguard/common/AppWorkerIm;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launch$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launch$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launch$1$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launch$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$2; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$2;->()V +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$2;->()V +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$2;->invoke(Lcom/artemchep/keyguard/common/NotificationsWorker;Lcom/artemchep/keyguard/common/NotificationsWorker;)Ljava/lang/Boolean; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$3; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$3;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$3;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$3;->invoke(Lcom/artemchep/keyguard/common/NotificationsWorker;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$3$1; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$3$1;->(Lcom/artemchep/keyguard/common/NotificationsWorker;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$3$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$3$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$3$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$3$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$lambda$0$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$launchSyncManagerWhenAvailable$lambda$0$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/AppWorkerIm$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/AppWorkerIm$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/NotificationsWorker; +Lcom/artemchep/keyguard/common/R$font; +Lcom/artemchep/keyguard/common/R$string; +Lcom/artemchep/keyguard/common/io/FlowThrottle; +HSPLcom/artemchep/keyguard/common/io/FlowThrottle;->()V +HSPLcom/artemchep/keyguard/common/io/FlowThrottle;->(Lkotlinx/coroutines/channels/ProducerScope;J)V +HSPLcom/artemchep/keyguard/common/io/FlowThrottle;->send(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/FlowThrottle$Companion; +HSPLcom/artemchep/keyguard/common/io/FlowThrottle$Companion;->()V +HSPLcom/artemchep/keyguard/common/io/FlowThrottle$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/io/FlowThrottle$send$2; +HSPLcom/artemchep/keyguard/common/io/FlowThrottle$send$2;->(JLcom/artemchep/keyguard/common/io/FlowThrottle;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/io/FlowThrottle$send$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/io/FlowThrottle$send$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOBindKt; +HSPLcom/artemchep/keyguard/common/io/IOBindKt;->bind(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOExceptionKt; +HSPLcom/artemchep/keyguard/common/io/IOExceptionKt;->attempt(Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/io/IOExceptionKt$attempt$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/common/io/IOExceptionKt$attempt$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/common/io/IOExceptionKt$attempt$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/io/IOExceptionKt$attempt$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOExceptionKt$attempt$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOExceptionKt$attempt$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOFactoryKt; +HSPLcom/artemchep/keyguard/common/io/IOFactoryKt;->()V +HSPLcom/artemchep/keyguard/common/io/IOFactoryKt;->io(Ljava/lang/Object;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/io/IOFactoryKt$io$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/common/io/IOFactoryKt$io$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Ljava/lang/Object;)V +HSPLcom/artemchep/keyguard/common/io/IOFactoryKt$io$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/io/IOFactoryKt$io$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOFactoryKt$io$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOFactoryKt$io$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOFlattenKt; +HSPLcom/artemchep/keyguard/common/io/IOFlattenKt;->flatten(Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/common/io/IOFlattenKt;->flattenMap(Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/io/IOFlattenKt$flatten$$inlined$flatMap$1; +HSPLcom/artemchep/keyguard/common/io/IOFlattenKt$flatten$$inlined$flatMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/io/IOFlattenKt$flatten$$inlined$flatMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/io/IOFlattenKt$flatten$$inlined$flatMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOFlattenKt$flatten$$inlined$flatMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOFlattenKt$flatten$$inlined$flatMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOFlattenKt$flattenMap$$inlined$effectMap$1; +HSPLcom/artemchep/keyguard/common/io/IOFlattenKt$flattenMap$$inlined$effectMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/io/IOFlattenKt$flattenMap$$inlined$effectMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/io/IOFlattenKt$flattenMap$$inlined$effectMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOFlattenKt$flattenMap$$inlined$effectMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOFlattenKt$flattenMap$$inlined$effectMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOFlowKt; +HSPLcom/artemchep/keyguard/common/io/IOFlowKt;->toIO(Lkotlinx/coroutines/flow/Flow;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/io/IOFlowKt$toIO$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/common/io/IOFlowKt$toIO$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/common/io/IOFlowKt$toIO$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/io/IOFlowKt$toIO$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOFlowKt$toIO$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOFlowKt$toIO$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOForkKt; +HSPLcom/artemchep/keyguard/common/io/IOForkKt;->dispatchOn(Lkotlin/jvm/functions/Function1;Lkotlinx/coroutines/CoroutineDispatcher;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/io/IOForkKt$dispatchOn$1; +HSPLcom/artemchep/keyguard/common/io/IOForkKt$dispatchOn$1;->(Lkotlinx/coroutines/CoroutineDispatcher;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/io/IOForkKt$dispatchOn$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/io/IOForkKt$dispatchOn$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOForkKt$dispatchOn$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOForkKt$dispatchOn$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOForkKt$dispatchOn$1$1; +HSPLcom/artemchep/keyguard/common/io/IOForkKt$dispatchOn$1$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/io/IOForkKt$dispatchOn$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/io/IOForkKt$dispatchOn$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOForkKt$dispatchOn$1$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOForkKt$dispatchOn$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOLaunchInKt; +HSPLcom/artemchep/keyguard/common/io/IOLaunchInKt;->launchIn(Lkotlin/jvm/functions/Function1;Lkotlinx/coroutines/CoroutineScope;)Lkotlinx/coroutines/Job; +Lcom/artemchep/keyguard/common/io/IOLaunchInKt$launchIn$1; +HSPLcom/artemchep/keyguard/common/io/IOLaunchInKt$launchIn$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/io/IOLaunchInKt$launchIn$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/io/IOLaunchInKt$launchIn$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOMonadKt; +PLcom/artemchep/keyguard/common/io/IOMonadKt;->parallel$default(Ljava/util/List;Lkotlin/coroutines/CoroutineContext;IILjava/lang/Object;)Lkotlin/jvm/functions/Function1; +PLcom/artemchep/keyguard/common/io/IOMonadKt;->parallel(Ljava/util/List;Lkotlin/coroutines/CoroutineContext;I)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/io/IOMonadKt$flatMap$1; +HSPLcom/artemchep/keyguard/common/io/IOMonadKt$flatMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/io/IOMonadKt$flatMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/io/IOMonadKt$flatMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOMonadKt$flatMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOMonadKt$flatMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOMonadKt$parallel$1; +HSPLcom/artemchep/keyguard/common/io/IOMonadKt$parallel$1;->(Ljava/util/List;ILkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/io/IOMonadKt$parallel$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/io/IOMonadKt$parallel$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOMonadKt$parallel$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOMonadKt$parallel$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOMonadKt$parallel$1$1; +HSPLcom/artemchep/keyguard/common/io/IOMonadKt$parallel$1$1;->(Ljava/util/List;ILkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/io/IOMonadKt$parallel$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/io/IOMonadKt$parallel$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOMonadKt$parallel$1$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOMonadKt$parallel$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOSharedKt; +HSPLcom/artemchep/keyguard/common/io/IOSharedKt;->shared$default(Lkotlin/jvm/functions/Function1;ZILjava/lang/Object;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/common/io/IOSharedKt;->shared(Lkotlin/jvm/functions/Function1;Z)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/io/IOSharedKt$shared$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/common/io/IOSharedKt$shared$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Lkotlin/jvm/internal/Ref$ObjectRef;Lkotlin/jvm/functions/Function1;ZLkotlin/jvm/internal/Ref$ObjectRef;)V +HSPLcom/artemchep/keyguard/common/io/IOSharedKt$shared$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/io/IOSharedKt$shared$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOSharedKt$shared$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/IOSharedKt$shared$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOSharedKt$shared$1$2$1; +HSPLcom/artemchep/keyguard/common/io/IOSharedKt$shared$1$2$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/internal/Ref$ObjectRef;Lkotlin/jvm/internal/Ref$ObjectRef;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/io/IOSharedKt$shared$1$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/io/IOSharedKt$shared$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOWidenKt; +HSPLcom/artemchep/keyguard/common/io/IOWidenKt;->nullable(Lkotlinx/coroutines/flow/Flow;)Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/io/IOWidenKt$nullable$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/io/IOWidenKt$nullable$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/common/io/IOWidenKt$nullable$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOWidenKt$nullable$$inlined$map$1$2; +PLcom/artemchep/keyguard/common/io/IOWidenKt$nullable$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/common/io/IOWidenKt$nullable$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/IOWidenKt$nullable$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/common/io/IOWidenKt$nullable$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/common/io/IOWidenKt$nullable$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/common/io/ThrottleKt; +HSPLcom/artemchep/keyguard/common/io/ThrottleKt;->throttle(Lkotlinx/coroutines/flow/Flow;JZ)Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/io/ThrottleKt$throttle$1; +HSPLcom/artemchep/keyguard/common/io/ThrottleKt$throttle$1;->(JLkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/io/ThrottleKt$throttle$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/io/ThrottleKt$throttle$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/ThrottleKt$throttle$1;->invoke(Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/io/ThrottleKt$throttle$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/io/ThrottleKt$throttle$1$1; +HSPLcom/artemchep/keyguard/common/io/ThrottleKt$throttle$1$1;->(Lcom/artemchep/keyguard/common/io/FlowThrottle;)V +HSPLcom/artemchep/keyguard/common/io/ThrottleKt$throttle$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/model/AccountId; +Lcom/artemchep/keyguard/common/model/AccountTask; +HSPLcom/artemchep/keyguard/common/model/AccountTask;->$values()[Lcom/artemchep/keyguard/common/model/AccountTask; +HSPLcom/artemchep/keyguard/common/model/AccountTask;->()V +HSPLcom/artemchep/keyguard/common/model/AccountTask;->(Ljava/lang/String;I)V +Lcom/artemchep/keyguard/common/model/AddCipherOpenedHistoryRequest; +Lcom/artemchep/keyguard/common/model/AddCipherUsedPasskeyHistoryRequest; +Lcom/artemchep/keyguard/common/model/AddPasskeyCipherRequest; +Lcom/artemchep/keyguard/common/model/AddUriCipherRequest; +Lcom/artemchep/keyguard/common/model/AnyMap; +HSPLcom/artemchep/keyguard/common/model/AnyMap;->()V +HSPLcom/artemchep/keyguard/common/model/AnyMap;->(Ljava/util/Map;)V +PLcom/artemchep/keyguard/common/model/AnyMap;->getValue()Ljava/util/Map; +Lcom/artemchep/keyguard/common/model/AppColors; +HSPLcom/artemchep/keyguard/common/model/AppColors;->$values()[Lcom/artemchep/keyguard/common/model/AppColors; +HSPLcom/artemchep/keyguard/common/model/AppColors;->()V +HSPLcom/artemchep/keyguard/common/model/AppColors;->(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;I)V +HSPLcom/artemchep/keyguard/common/model/AppColors;->getKey()Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/model/AppColors;->values()[Lcom/artemchep/keyguard/common/model/AppColors; +Lcom/artemchep/keyguard/common/model/AppFont; +HSPLcom/artemchep/keyguard/common/model/AppFont;->$values()[Lcom/artemchep/keyguard/common/model/AppFont; +HSPLcom/artemchep/keyguard/common/model/AppFont;->()V +HSPLcom/artemchep/keyguard/common/model/AppFont;->(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/common/model/AppFont;->getKey()Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/model/AppFont;->values()[Lcom/artemchep/keyguard/common/model/AppFont; +Lcom/artemchep/keyguard/common/model/AppTheme; +HSPLcom/artemchep/keyguard/common/model/AppTheme;->$values()[Lcom/artemchep/keyguard/common/model/AppTheme; +HSPLcom/artemchep/keyguard/common/model/AppTheme;->()V +HSPLcom/artemchep/keyguard/common/model/AppTheme;->(Ljava/lang/String;ILjava/lang/String;)V +HSPLcom/artemchep/keyguard/common/model/AppTheme;->getKey()Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/model/AppTheme;->values()[Lcom/artemchep/keyguard/common/model/AppTheme; +Lcom/artemchep/keyguard/common/model/AuthResult; +HSPLcom/artemchep/keyguard/common/model/AuthResult;->()V +HSPLcom/artemchep/keyguard/common/model/AuthResult;->(Lcom/artemchep/keyguard/common/model/MasterKey;Lcom/artemchep/keyguard/common/model/FingerprintPassword;)V +HSPLcom/artemchep/keyguard/common/model/AuthResult;->getKey()Lcom/artemchep/keyguard/common/model/MasterKey; +HSPLcom/artemchep/keyguard/common/model/AuthResult;->getToken()Lcom/artemchep/keyguard/common/model/FingerprintPassword; +Lcom/artemchep/keyguard/common/model/AutofillHint; +HSPLcom/artemchep/keyguard/common/model/AutofillHint;->$values()[Lcom/artemchep/keyguard/common/model/AutofillHint; +HSPLcom/artemchep/keyguard/common/model/AutofillHint;->()V +HSPLcom/artemchep/keyguard/common/model/AutofillHint;->(Ljava/lang/String;I)V +HSPLcom/artemchep/keyguard/common/model/AutofillHint;->values()[Lcom/artemchep/keyguard/common/model/AutofillHint; +Lcom/artemchep/keyguard/common/model/AutofillTarget; +Lcom/artemchep/keyguard/common/model/BarcodeImageRequest; +Lcom/artemchep/keyguard/common/model/BiometricStatus; +Lcom/artemchep/keyguard/common/model/BiometricStatus$Available; +Lcom/artemchep/keyguard/common/model/BiometricStatus$Unavailable; +HSPLcom/artemchep/keyguard/common/model/BiometricStatus$Unavailable;->()V +HSPLcom/artemchep/keyguard/common/model/BiometricStatus$Unavailable;->()V +Lcom/artemchep/keyguard/common/model/CheckPasswordLeakRequest; +Lcom/artemchep/keyguard/common/model/CheckPasswordSetLeakRequest; +Lcom/artemchep/keyguard/common/model/CheckUsernameLeakRequest; +Lcom/artemchep/keyguard/common/model/CipherFieldSwitchToggleRequest; +Lcom/artemchep/keyguard/common/model/CipherOpenedHistoryMode; +Lcom/artemchep/keyguard/common/model/DAccount; +Lcom/artemchep/keyguard/common/model/DAccountStatus; +HSPLcom/artemchep/keyguard/common/model/DAccountStatus;->()V +HSPLcom/artemchep/keyguard/common/model/DAccountStatus;->(Lcom/artemchep/keyguard/common/model/DAccountStatus$Error;Lcom/artemchep/keyguard/common/model/DAccountStatus$Pending;Ljava/util/List;)V +HSPLcom/artemchep/keyguard/common/model/DAccountStatus;->(Lcom/artemchep/keyguard/common/model/DAccountStatus$Error;Lcom/artemchep/keyguard/common/model/DAccountStatus$Pending;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/common/model/DAccountStatus;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/common/model/DAccountStatus;->getError()Lcom/artemchep/keyguard/common/model/DAccountStatus$Error; +HSPLcom/artemchep/keyguard/common/model/DAccountStatus;->getPending()Lcom/artemchep/keyguard/common/model/DAccountStatus$Pending; +HSPLcom/artemchep/keyguard/common/model/DAccountStatus;->getPendingPermissions()Ljava/util/List; +Lcom/artemchep/keyguard/common/model/DAccountStatus$Error; +HSPLcom/artemchep/keyguard/common/model/DAccountStatus$Error;->()V +HSPLcom/artemchep/keyguard/common/model/DAccountStatus$Error;->(I)V +Lcom/artemchep/keyguard/common/model/DAccountStatus$Pending; +HSPLcom/artemchep/keyguard/common/model/DAccountStatus$Pending;->()V +HSPLcom/artemchep/keyguard/common/model/DAccountStatus$Pending;->(I)V +Lcom/artemchep/keyguard/common/model/DCipherOpenedHistory; +Lcom/artemchep/keyguard/common/model/DCollection; +Lcom/artemchep/keyguard/common/model/DFilter; +HSPLcom/artemchep/keyguard/common/model/DFilter;->()V +Lcom/artemchep/keyguard/common/model/DFilter$All; +HSPLcom/artemchep/keyguard/common/model/DFilter$All;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$All;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$All;->toString()Ljava/lang/String; +Lcom/artemchep/keyguard/common/model/DFilter$All$1; +HSPLcom/artemchep/keyguard/common/model/DFilter$All$1;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$All$1;->()V +Lcom/artemchep/keyguard/common/model/DFilter$And; +HSPLcom/artemchep/keyguard/common/model/DFilter$And;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$And;->(Ljava/util/Collection;)V +PLcom/artemchep/keyguard/common/model/DFilter$And;->getFilters()Ljava/util/Collection; +Lcom/artemchep/keyguard/common/model/DFilter$And$Companion; +HSPLcom/artemchep/keyguard/common/model/DFilter$And$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$And$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/model/DFilter$ByAttachments; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByAttachments;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByAttachments;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByAttachments;->getKey()Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByAttachments;->prepare(Lorg/kodein/di/DirectDI;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/model/DFilter$ByAttachments$1; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByAttachments$1;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByAttachments$1;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByAttachments$prepare$2; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByAttachments$prepare$2;->(Ljava/lang/Object;)V +Lcom/artemchep/keyguard/common/model/DFilter$ByDuplicateWebsites; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByDuplicateWebsites;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByDuplicateWebsites;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByDuplicateWebsites$1; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByDuplicateWebsites$1;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByDuplicateWebsites$1;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByError; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByError;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByError;->(Z)V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByError;->getKey()Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByError;->prepare(Lorg/kodein/di/DirectDI;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/model/DFilter$ByError$$serializer; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByError$$serializer;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByError$$serializer;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByError$$serializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lcom/artemchep/keyguard/common/model/DFilter$ByError$Companion; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByError$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByError$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/model/DFilter$ByError$prepare$2; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByError$prepare$2;->(Ljava/lang/Object;)V +Lcom/artemchep/keyguard/common/model/DFilter$ByExpiring; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByExpiring;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByExpiring;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByExpiring$1; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByExpiring$1;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByExpiring$1;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ById; +HSPLcom/artemchep/keyguard/common/model/DFilter$ById;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ById;->(Ljava/lang/String;Lcom/artemchep/keyguard/common/model/DFilter$ById$What;)V +HSPLcom/artemchep/keyguard/common/model/DFilter$ById;->getId()Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/model/DFilter$ById;->getKey()Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/model/DFilter$ById;->getWhat()Lcom/artemchep/keyguard/common/model/DFilter$ById$What; +Lcom/artemchep/keyguard/common/model/DFilter$ById$$serializer; +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$$serializer;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$$serializer;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$$serializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lcom/artemchep/keyguard/common/model/DFilter$ById$Companion; +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/model/DFilter$ById$What; +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$What;->$values()[Lcom/artemchep/keyguard/common/model/DFilter$ById$What; +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$What;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$What;->(Ljava/lang/String;I)V +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$What;->access$get$cachedSerializer$delegate$cp()Lkotlin/Lazy; +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$What;->values()[Lcom/artemchep/keyguard/common/model/DFilter$ById$What; +Lcom/artemchep/keyguard/common/model/DFilter$ById$What$Companion; +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$What$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$What$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$What$Companion;->get$cachedSerializer()Lkotlinx/serialization/KSerializer; +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$What$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/common/model/DFilter$ById$What$Companion$1; +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$What$Companion$1;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$What$Companion$1;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$What$Companion$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/model/DFilter$ById$What$Companion$1;->invoke()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/common/model/DFilter$ByIncomplete; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByIncomplete;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByIncomplete;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByIncomplete$1; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByIncomplete$1;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByIncomplete$1;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByOtp; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByOtp;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByOtp;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByOtp;->getKey()Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByOtp;->prepare(Lorg/kodein/di/DirectDI;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/model/DFilter$ByOtp$1; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByOtp$1;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByOtp$1;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByOtp$prepare$2; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByOtp$prepare$2;->(Ljava/lang/Object;)V +Lcom/artemchep/keyguard/common/model/DFilter$ByPasskeyWebsites; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasskeyWebsites;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasskeyWebsites;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByPasskeyWebsites$1; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasskeyWebsites$1;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasskeyWebsites$1;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByPasskeys; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasskeys;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasskeys;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasskeys;->getKey()Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasskeys;->prepare(Lorg/kodein/di/DirectDI;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/model/DFilter$ByPasskeys$1; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasskeys$1;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasskeys$1;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByPasskeys$prepare$2; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasskeys$prepare$2;->(Ljava/lang/Object;)V +Lcom/artemchep/keyguard/common/model/DFilter$ByPasswordDuplicates; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasswordDuplicates;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasswordDuplicates;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByPasswordDuplicates$1; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasswordDuplicates$1;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasswordDuplicates$1;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByPasswordPwned; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasswordPwned;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasswordPwned;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByPasswordPwned$1; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasswordPwned$1;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasswordPwned$1;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByPasswordStrength; +Lcom/artemchep/keyguard/common/model/DFilter$ByPasswordStrength$$serializer; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasswordStrength$$serializer;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasswordStrength$$serializer;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasswordStrength$$serializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lcom/artemchep/keyguard/common/model/DFilter$ByPasswordValue; +Lcom/artemchep/keyguard/common/model/DFilter$ByPasswordValue$$serializer; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasswordValue$$serializer;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasswordValue$$serializer;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByPasswordValue$$serializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lcom/artemchep/keyguard/common/model/DFilter$ByReprompt; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByReprompt;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByReprompt;->(Z)V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByReprompt;->getKey()Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByReprompt;->prepare(Lorg/kodein/di/DirectDI;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/model/DFilter$ByReprompt$$serializer; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByReprompt$$serializer;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByReprompt$$serializer;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByReprompt$$serializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lcom/artemchep/keyguard/common/model/DFilter$ByReprompt$Companion; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByReprompt$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByReprompt$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/model/DFilter$ByReprompt$prepare$2; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByReprompt$prepare$2;->(Ljava/lang/Object;)V +Lcom/artemchep/keyguard/common/model/DFilter$BySync; +HSPLcom/artemchep/keyguard/common/model/DFilter$BySync;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$BySync;->(Z)V +HSPLcom/artemchep/keyguard/common/model/DFilter$BySync;->getKey()Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/model/DFilter$BySync;->prepare(Lorg/kodein/di/DirectDI;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/model/DFilter$BySync$$serializer; +HSPLcom/artemchep/keyguard/common/model/DFilter$BySync$$serializer;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$BySync$$serializer;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$BySync$$serializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lcom/artemchep/keyguard/common/model/DFilter$BySync$Companion; +HSPLcom/artemchep/keyguard/common/model/DFilter$BySync$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$BySync$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/model/DFilter$BySync$prepare$2; +HSPLcom/artemchep/keyguard/common/model/DFilter$BySync$prepare$2;->(Ljava/lang/Object;)V +Lcom/artemchep/keyguard/common/model/DFilter$ByTfaWebsites; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByTfaWebsites;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByTfaWebsites;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByTfaWebsites$1; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByTfaWebsites$1;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByTfaWebsites$1;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByType; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByType;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByType;->(Lcom/artemchep/keyguard/common/model/DSecret$Type;)V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByType;->getKey()Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByType;->prepare(Lorg/kodein/di/DirectDI;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/model/DFilter$ByType$$serializer; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByType$$serializer;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByType$$serializer;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByType$$serializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lcom/artemchep/keyguard/common/model/DFilter$ByType$Companion; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByType$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByType$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/model/DFilter$ByType$prepare$2; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByType$prepare$2;->(Ljava/lang/Object;)V +Lcom/artemchep/keyguard/common/model/DFilter$ByUnsecureWebsites; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByUnsecureWebsites;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByUnsecureWebsites;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByUnsecureWebsites$1; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByUnsecureWebsites$1;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByUnsecureWebsites$1;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByWebsitePwned; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByWebsitePwned;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByWebsitePwned;->()V +Lcom/artemchep/keyguard/common/model/DFilter$ByWebsitePwned$1; +HSPLcom/artemchep/keyguard/common/model/DFilter$ByWebsitePwned$1;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$ByWebsitePwned$1;->()V +Lcom/artemchep/keyguard/common/model/DFilter$Companion; +HSPLcom/artemchep/keyguard/common/model/DFilter$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$Companion;->_findOne(Lcom/artemchep/keyguard/common/model/DFilter;Ljava/lang/Class;Lkotlin/jvm/functions/Function1;)Larrow/core/Either; +HSPLcom/artemchep/keyguard/common/model/DFilter$Companion;->findOne$default(Lcom/artemchep/keyguard/common/model/DFilter$Companion;Lcom/artemchep/keyguard/common/model/DFilter;Ljava/lang/Class;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/model/DFilter$Companion;->findOne(Lcom/artemchep/keyguard/common/model/DFilter;Ljava/lang/Class;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/model/DFilter$Companion$findOne$2; +HSPLcom/artemchep/keyguard/common/model/DFilter$Companion$findOne$2;->()V +HSPLcom/artemchep/keyguard/common/model/DFilter$Companion$findOne$2;->()V +Lcom/artemchep/keyguard/common/model/DFilter$Or; +Lcom/artemchep/keyguard/common/model/DFilter$Primitive; +Lcom/artemchep/keyguard/common/model/DFolder; +Lcom/artemchep/keyguard/common/model/DFolderTree; +Lcom/artemchep/keyguard/common/model/DGeneratorEmailRelay; +Lcom/artemchep/keyguard/common/model/DGeneratorHistory; +Lcom/artemchep/keyguard/common/model/DHibpC; +Lcom/artemchep/keyguard/common/model/DMeta; +Lcom/artemchep/keyguard/common/model/DOrganization; +Lcom/artemchep/keyguard/common/model/DProfile; +Lcom/artemchep/keyguard/common/model/DSecret; +HSPLcom/artemchep/keyguard/common/model/DSecret;->()V +Lcom/artemchep/keyguard/common/model/DSecret$Companion; +HSPLcom/artemchep/keyguard/common/model/DSecret$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/model/DSecret$Field$LinkedId; +HSPLcom/artemchep/keyguard/common/model/DSecret$Field$LinkedId;->$values()[Lcom/artemchep/keyguard/common/model/DSecret$Field$LinkedId; +HSPLcom/artemchep/keyguard/common/model/DSecret$Field$LinkedId;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret$Field$LinkedId;->(Ljava/lang/String;ILcom/artemchep/keyguard/common/model/DSecret$Type;)V +HSPLcom/artemchep/keyguard/common/model/DSecret$Field$LinkedId;->values()[Lcom/artemchep/keyguard/common/model/DSecret$Field$LinkedId; +Lcom/artemchep/keyguard/common/model/DSecret$Identity; +HSPLcom/artemchep/keyguard/common/model/DSecret$Identity;->()V +Lcom/artemchep/keyguard/common/model/DSecret$Identity$Companion; +HSPLcom/artemchep/keyguard/common/model/DSecret$Identity$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret$Identity$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/model/DSecret$Login; +HSPLcom/artemchep/keyguard/common/model/DSecret$Login;->()V +Lcom/artemchep/keyguard/common/model/DSecret$Login$Companion; +HSPLcom/artemchep/keyguard/common/model/DSecret$Login$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret$Login$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/model/DSecret$Login$Fido2Credentials; +Lcom/artemchep/keyguard/common/model/DSecret$Type; +HSPLcom/artemchep/keyguard/common/model/DSecret$Type;->$values()[Lcom/artemchep/keyguard/common/model/DSecret$Type; +HSPLcom/artemchep/keyguard/common/model/DSecret$Type;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret$Type;->(Ljava/lang/String;I)V +HSPLcom/artemchep/keyguard/common/model/DSecret$Type;->values()[Lcom/artemchep/keyguard/common/model/DSecret$Type; +Lcom/artemchep/keyguard/common/model/DSecret$Uri; +Lcom/artemchep/keyguard/common/model/DSecret$Uri$MatchType; +HSPLcom/artemchep/keyguard/common/model/DSecret$Uri$MatchType;->$values()[Lcom/artemchep/keyguard/common/model/DSecret$Uri$MatchType; +HSPLcom/artemchep/keyguard/common/model/DSecret$Uri$MatchType;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret$Uri$MatchType;->(Ljava/lang/String;I)V +HSPLcom/artemchep/keyguard/common/model/DSecret$Uri$MatchType;->values()[Lcom/artemchep/keyguard/common/model/DSecret$Uri$MatchType; +Lcom/artemchep/keyguard/common/model/DSecret$Uri$MatchType$Companion; +HSPLcom/artemchep/keyguard/common/model/DSecret$Uri$MatchType$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret$Uri$MatchType$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/model/DSecretDuplicateGroup; +Lcom/artemchep/keyguard/common/model/DSecretFun; +HSPLcom/artemchep/keyguard/common/model/DSecretFun;->iconImageVector(Lcom/artemchep/keyguard/common/model/DSecret$Type;)Landroidx/compose/ui/graphics/vector/ImageVector; +HSPLcom/artemchep/keyguard/common/model/DSecretFun;->titleH(Lcom/artemchep/keyguard/common/model/DSecret$Type;)Ldev/icerock/moko/resources/StringResource; +Lcom/artemchep/keyguard/common/model/DSecretFun$WhenMappings; +HSPLcom/artemchep/keyguard/common/model/DSecretFun$WhenMappings;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address1$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address1$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address1$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address1$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address1$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address1$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address2$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address2$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address2$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address2$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address2$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address2$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address3$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address3$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address3$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address3$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address3$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$address3$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$city$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$city$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$city$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$city$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$city$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$city$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$company$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$company$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$company$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$company$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$company$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$company$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$country$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$country$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$country$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$country$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$country$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$country$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$email$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$email$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$email$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$email$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$email$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$email$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$firstName$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$firstName$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$firstName$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$firstName$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$firstName$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$firstName$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$lastName$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$lastName$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$lastName$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$lastName$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$lastName$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$lastName$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$licenseNumber$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$licenseNumber$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$licenseNumber$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$licenseNumber$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$licenseNumber$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$licenseNumber$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$middleName$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$middleName$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$middleName$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$middleName$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$middleName$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$middleName$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$passportNumber$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$passportNumber$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$passportNumber$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$passportNumber$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$passportNumber$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$passportNumber$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$phone$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$phone$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$phone$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$phone$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$phone$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$phone$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$postalCode$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$postalCode$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$postalCode$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$postalCode$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$postalCode$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$postalCode$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$ssn$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$ssn$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$ssn$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$ssn$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$ssn$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$ssn$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$state$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$state$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$state$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$state$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$state$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$state$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$title$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$title$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$title$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$title$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$title$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$title$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$username$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$username$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$username$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$username$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$username$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Identity__OpticsKt$username$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$password$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$password$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$password$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$password$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$password$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$password$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$totp$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$totp$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$totp$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$totp$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$totp$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$totp$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$username$1; +HSPLcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$username$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$username$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$username$2; +HSPLcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$username$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret_Login__OpticsKt$username$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$attachments$1; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$attachments$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$attachments$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$attachments$2; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$attachments$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$attachments$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$card$1; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$card$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$card$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$card$2; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$card$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$card$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$favorite$1; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$favorite$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$favorite$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$favorite$2; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$favorite$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$favorite$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$fields$1; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$fields$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$fields$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$fields$2; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$fields$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$fields$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$identity$1; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$identity$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$identity$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$identity$2; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$identity$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$identity$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$login$1; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$login$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$login$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$login$2; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$login$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$login$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$notes$1; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$notes$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$notes$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$notes$2; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$notes$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$notes$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$reprompt$1; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$reprompt$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$reprompt$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$reprompt$2; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$reprompt$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$reprompt$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$type$1; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$type$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$type$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$type$2; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$type$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$type$2;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$uris$1; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$uris$1;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$uris$1;->()V +Lcom/artemchep/keyguard/common/model/DSecret__OpticsKt$uris$2; +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$uris$2;->()V +HSPLcom/artemchep/keyguard/common/model/DSecret__OpticsKt$uris$2;->()V +Lcom/artemchep/keyguard/common/model/DSend; +Lcom/artemchep/keyguard/common/model/DownloadAttachmentRequest; +Lcom/artemchep/keyguard/common/model/Fingerprint; +HSPLcom/artemchep/keyguard/common/model/Fingerprint;->()V +HSPLcom/artemchep/keyguard/common/model/Fingerprint;->(Lcom/artemchep/keyguard/common/model/FingerprintPassword;Lcom/artemchep/keyguard/common/model/FingerprintBiometric;)V +HSPLcom/artemchep/keyguard/common/model/Fingerprint;->getBiometric()Lcom/artemchep/keyguard/common/model/FingerprintBiometric; +HSPLcom/artemchep/keyguard/common/model/Fingerprint;->getMaster()Lcom/artemchep/keyguard/common/model/FingerprintPassword; +Lcom/artemchep/keyguard/common/model/FingerprintBiometric; +Lcom/artemchep/keyguard/common/model/FingerprintPassword; +HSPLcom/artemchep/keyguard/common/model/FingerprintPassword;->()V +HSPLcom/artemchep/keyguard/common/model/FingerprintPassword;->(Lcom/artemchep/keyguard/common/model/MasterPasswordHash;Lcom/artemchep/keyguard/common/model/MasterPasswordSalt;)V +HSPLcom/artemchep/keyguard/common/model/FingerprintPassword;->getHash()Lcom/artemchep/keyguard/common/model/MasterPasswordHash; +HSPLcom/artemchep/keyguard/common/model/FingerprintPassword;->getSalt()Lcom/artemchep/keyguard/common/model/MasterPasswordSalt; +HSPLcom/artemchep/keyguard/common/model/FingerprintPassword;->hashCode()I +Lcom/artemchep/keyguard/common/model/FolderOwnership2; +Lcom/artemchep/keyguard/common/model/GeneratorContext; +Lcom/artemchep/keyguard/common/model/HasAccountId; +Lcom/artemchep/keyguard/common/model/LinkInfo; +Lcom/artemchep/keyguard/common/model/LinkInfoAndroid; +Lcom/artemchep/keyguard/common/model/LinkInfoExecute; +Lcom/artemchep/keyguard/common/model/LinkInfoLaunch; +Lcom/artemchep/keyguard/common/model/LinkInfoPlatform; +Lcom/artemchep/keyguard/common/model/LinkInfoPlatform$Android; +Lcom/artemchep/keyguard/common/model/Loadable; +Lcom/artemchep/keyguard/common/model/Loadable$Loading; +HSPLcom/artemchep/keyguard/common/model/Loadable$Loading;->()V +HSPLcom/artemchep/keyguard/common/model/Loadable$Loading;->()V +HSPLcom/artemchep/keyguard/common/model/Loadable$Loading;->equals(Ljava/lang/Object;)Z +Lcom/artemchep/keyguard/common/model/Loadable$Ok; +HSPLcom/artemchep/keyguard/common/model/Loadable$Ok;->()V +HSPLcom/artemchep/keyguard/common/model/Loadable$Ok;->(Ljava/lang/Object;)V +HSPLcom/artemchep/keyguard/common/model/Loadable$Ok;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/common/model/Loadable$Ok;->getValue()Ljava/lang/Object; +Lcom/artemchep/keyguard/common/model/Loadable$Ok$Companion; +HSPLcom/artemchep/keyguard/common/model/Loadable$Ok$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/Loadable$Ok$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/model/MasterKey; +HSPLcom/artemchep/keyguard/common/model/MasterKey;->()V +HSPLcom/artemchep/keyguard/common/model/MasterKey;->([B)V +HSPLcom/artemchep/keyguard/common/model/MasterKey;->getByteArray()[B +HSPLcom/artemchep/keyguard/common/model/MasterKey;->hashCode()I +Lcom/artemchep/keyguard/common/model/MasterPassword; +HSPLcom/artemchep/keyguard/common/model/MasterPassword;->([B)V +HSPLcom/artemchep/keyguard/common/model/MasterPassword;->box-impl([B)Lcom/artemchep/keyguard/common/model/MasterPassword; +HSPLcom/artemchep/keyguard/common/model/MasterPassword;->constructor-impl([B)[B +HSPLcom/artemchep/keyguard/common/model/MasterPassword;->unbox-impl()[B +Lcom/artemchep/keyguard/common/model/MasterPasswordHash; +HSPLcom/artemchep/keyguard/common/model/MasterPasswordHash;->()V +HSPLcom/artemchep/keyguard/common/model/MasterPasswordHash;->([B)V +HSPLcom/artemchep/keyguard/common/model/MasterPasswordHash;->getByteArray()[B +HSPLcom/artemchep/keyguard/common/model/MasterPasswordHash;->hashCode()I +Lcom/artemchep/keyguard/common/model/MasterPasswordSalt; +HSPLcom/artemchep/keyguard/common/model/MasterPasswordSalt;->()V +HSPLcom/artemchep/keyguard/common/model/MasterPasswordSalt;->([B)V +HSPLcom/artemchep/keyguard/common/model/MasterPasswordSalt;->getByteArray()[B +HSPLcom/artemchep/keyguard/common/model/MasterPasswordSalt;->hashCode()I +Lcom/artemchep/keyguard/common/model/MasterSession; +Lcom/artemchep/keyguard/common/model/MasterSession$Empty; +HSPLcom/artemchep/keyguard/common/model/MasterSession$Empty;->()V +HSPLcom/artemchep/keyguard/common/model/MasterSession$Empty;->(Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/common/model/MasterSession$Empty;->(Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/common/model/MasterSession$Empty;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/common/model/MasterSession$Empty;->getReason()Ljava/lang/String; +Lcom/artemchep/keyguard/common/model/MasterSession$Empty$Companion; +HSPLcom/artemchep/keyguard/common/model/MasterSession$Empty$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/MasterSession$Empty$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/model/MasterSession$Key; +HSPLcom/artemchep/keyguard/common/model/MasterSession$Key;->()V +HSPLcom/artemchep/keyguard/common/model/MasterSession$Key;->(Lcom/artemchep/keyguard/common/model/MasterKey;Lorg/kodein/di/DI;Lcom/artemchep/keyguard/common/model/MasterSession$Key$Origin;Lkotlinx/datetime/Instant;)V +HSPLcom/artemchep/keyguard/common/model/MasterSession$Key;->getDi()Lorg/kodein/di/DI; +HSPLcom/artemchep/keyguard/common/model/MasterSession$Key;->getMasterKey()Lcom/artemchep/keyguard/common/model/MasterKey; +Lcom/artemchep/keyguard/common/model/MasterSession$Key$Authenticated; +HSPLcom/artemchep/keyguard/common/model/MasterSession$Key$Authenticated;->()V +HSPLcom/artemchep/keyguard/common/model/MasterSession$Key$Authenticated;->()V +Lcom/artemchep/keyguard/common/model/MasterSession$Key$Companion; +HSPLcom/artemchep/keyguard/common/model/MasterSession$Key$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/MasterSession$Key$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/model/MasterSession$Key$Origin; +Lcom/artemchep/keyguard/common/model/NavAnimation; +HSPLcom/artemchep/keyguard/common/model/NavAnimation;->$values()[Lcom/artemchep/keyguard/common/model/NavAnimation; +HSPLcom/artemchep/keyguard/common/model/NavAnimation;->()V +HSPLcom/artemchep/keyguard/common/model/NavAnimation;->(Ljava/lang/String;ILjava/lang/String;Ldev/icerock/moko/resources/StringResource;)V +HSPLcom/artemchep/keyguard/common/model/NavAnimation;->getKey()Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/model/NavAnimation;->values()[Lcom/artemchep/keyguard/common/model/NavAnimation; +Lcom/artemchep/keyguard/common/model/NavAnimation$Companion; +HSPLcom/artemchep/keyguard/common/model/NavAnimation$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/NavAnimation$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/common/model/NavAnimation$Companion;->getDefault()Lcom/artemchep/keyguard/common/model/NavAnimation; +Lcom/artemchep/keyguard/common/model/PasswordGeneratorConfig; +Lcom/artemchep/keyguard/common/model/PasswordGeneratorConfig$Passphrase; +Lcom/artemchep/keyguard/common/model/PasswordPwnage; +Lcom/artemchep/keyguard/common/model/PasswordStrength; +Lcom/artemchep/keyguard/common/model/PersistedSession; +Lcom/artemchep/keyguard/common/model/Product; +Lcom/artemchep/keyguard/common/model/RemoveAttachmentRequest; +Lcom/artemchep/keyguard/common/model/RichResult; +HSPLcom/artemchep/keyguard/common/model/RichResult;->()V +HSPLcom/artemchep/keyguard/common/model/RichResult;->()V +HSPLcom/artemchep/keyguard/common/model/RichResult;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/model/RichResult$Companion; +HSPLcom/artemchep/keyguard/common/model/RichResult$Companion;->()V +HSPLcom/artemchep/keyguard/common/model/RichResult$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/model/RichResult$Failure; +HSPLcom/artemchep/keyguard/common/model/RichResult$Failure;->()V +HSPLcom/artemchep/keyguard/common/model/RichResult$Failure;->(Ljava/lang/Throwable;)V +HSPLcom/artemchep/keyguard/common/model/RichResult$Failure;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/common/model/RichResult$Failure;->getException()Ljava/lang/Throwable; +Lcom/artemchep/keyguard/common/model/RichResult$Loading; +HSPLcom/artemchep/keyguard/common/model/RichResult$Loading;->()V +HSPLcom/artemchep/keyguard/common/model/RichResult$Loading;->(Ljava/lang/Float;Lcom/artemchep/keyguard/common/model/RichResult;)V +HSPLcom/artemchep/keyguard/common/model/RichResult$Loading;->(Ljava/lang/Float;Lcom/artemchep/keyguard/common/model/RichResult;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/common/model/RichResult$Loading;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/common/model/RichResult$Loading;->getLastTerminalState()Lcom/artemchep/keyguard/common/model/RichResult; +HSPLcom/artemchep/keyguard/common/model/RichResult$Loading;->getProgress()Ljava/lang/Float; +Lcom/artemchep/keyguard/common/model/RichResult$Success; +Lcom/artemchep/keyguard/common/model/RichResultKt; +HSPLcom/artemchep/keyguard/common/model/RichResultKt;->combine(Lcom/artemchep/keyguard/common/model/RichResult;Lcom/artemchep/keyguard/common/model/RichResult;)Lcom/artemchep/keyguard/common/model/RichResult; +HSPLcom/artemchep/keyguard/common/model/RichResultKt;->fold(Lcom/artemchep/keyguard/common/model/RichResult;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/model/RichResultKt;->getTerminalState(Lcom/artemchep/keyguard/common/model/RichResult;)Lcom/artemchep/keyguard/common/model/RichResult; +HSPLcom/artemchep/keyguard/common/model/RichResultKt;->orNull(Lcom/artemchep/keyguard/common/model/RichResult;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/model/Screen; +HSPLcom/artemchep/keyguard/common/model/Screen;->()V +HSPLcom/artemchep/keyguard/common/model/Screen;->()V +HSPLcom/artemchep/keyguard/common/model/Screen;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/model/Screen$On; +HSPLcom/artemchep/keyguard/common/model/Screen$On;->()V +HSPLcom/artemchep/keyguard/common/model/Screen$On;->()V +HSPLcom/artemchep/keyguard/common/model/Screen$On;->equals(Ljava/lang/Object;)Z +Lcom/artemchep/keyguard/common/model/Subscription; +Lcom/artemchep/keyguard/common/model/TotpCode; +Lcom/artemchep/keyguard/common/model/TotpToken; +Lcom/artemchep/keyguard/common/model/VaultState; +Lcom/artemchep/keyguard/common/model/VaultState$Create; +HSPLcom/artemchep/keyguard/common/model/VaultState$Create;->()V +HSPLcom/artemchep/keyguard/common/model/VaultState$Create;->(Lcom/artemchep/keyguard/common/model/VaultState$Create$WithPassword;Lcom/artemchep/keyguard/common/model/VaultState$Create$WithBiometric;)V +HSPLcom/artemchep/keyguard/common/model/VaultState$Create;->getCreateWithMasterPassword()Lcom/artemchep/keyguard/common/model/VaultState$Create$WithPassword; +HSPLcom/artemchep/keyguard/common/model/VaultState$Create;->getCreateWithMasterPasswordAndBiometric()Lcom/artemchep/keyguard/common/model/VaultState$Create$WithBiometric; +Lcom/artemchep/keyguard/common/model/VaultState$Create$WithBiometric; +Lcom/artemchep/keyguard/common/model/VaultState$Create$WithPassword; +HSPLcom/artemchep/keyguard/common/model/VaultState$Create$WithPassword;->()V +HSPLcom/artemchep/keyguard/common/model/VaultState$Create$WithPassword;->(Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/common/model/VaultState$Create$WithPassword;->getGetCreateIo()Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/model/VaultState$Loading; +HSPLcom/artemchep/keyguard/common/model/VaultState$Loading;->()V +HSPLcom/artemchep/keyguard/common/model/VaultState$Loading;->()V +HSPLcom/artemchep/keyguard/common/model/VaultState$Loading;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/common/model/VaultState$Loading;->hashCode()I +Lcom/artemchep/keyguard/common/model/VaultState$Main; +HSPLcom/artemchep/keyguard/common/model/VaultState$Main;->()V +HSPLcom/artemchep/keyguard/common/model/VaultState$Main;->(Lcom/artemchep/keyguard/common/model/MasterKey;Lcom/artemchep/keyguard/common/model/VaultState$Main$ChangePassword;Lorg/kodein/di/DI;)V +HSPLcom/artemchep/keyguard/common/model/VaultState$Main;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/common/model/VaultState$Main;->getDi()Lorg/kodein/di/DI; +HSPLcom/artemchep/keyguard/common/model/VaultState$Main;->hashCode()I +Lcom/artemchep/keyguard/common/model/VaultState$Main$ChangePassword; +HSPLcom/artemchep/keyguard/common/model/VaultState$Main$ChangePassword;->()V +HSPLcom/artemchep/keyguard/common/model/VaultState$Main$ChangePassword;->(Ljava/lang/Object;Lcom/artemchep/keyguard/common/model/VaultState$Main$ChangePassword$WithPassword;Lcom/artemchep/keyguard/common/model/VaultState$Main$ChangePassword$WithBiometric;)V +HSPLcom/artemchep/keyguard/common/model/VaultState$Main$ChangePassword;->hashCode()I +Lcom/artemchep/keyguard/common/model/VaultState$Main$ChangePassword$WithBiometric; +Lcom/artemchep/keyguard/common/model/VaultState$Main$ChangePassword$WithPassword; +HSPLcom/artemchep/keyguard/common/model/VaultState$Main$ChangePassword$WithPassword;->()V +HSPLcom/artemchep/keyguard/common/model/VaultState$Main$ChangePassword$WithPassword;->(Lkotlin/jvm/functions/Function2;)V +Lcom/artemchep/keyguard/common/model/VaultState$Unlock; +HSPLcom/artemchep/keyguard/common/model/VaultState$Unlock;->()V +HSPLcom/artemchep/keyguard/common/model/VaultState$Unlock;->(Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithPassword;Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithBiometric;Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/common/model/VaultState$Unlock;->getLockReason()Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/model/VaultState$Unlock;->getUnlockWithBiometric()Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithBiometric; +HSPLcom/artemchep/keyguard/common/model/VaultState$Unlock;->getUnlockWithMasterPassword()Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithPassword; +Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithBiometric; +Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithPassword; +HSPLcom/artemchep/keyguard/common/model/VaultState$Unlock$WithPassword;->()V +HSPLcom/artemchep/keyguard/common/model/VaultState$Unlock$WithPassword;->(Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/common/model/VaultState$Unlock$WithPassword;->getGetCreateIo()Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/model/WithBiometric; +Lcom/artemchep/keyguard/common/model/create/CreateRequest; +Lcom/artemchep/keyguard/common/model/create/CreateRequest$Ownership2; +Lcom/artemchep/keyguard/common/service/Files; +HSPLcom/artemchep/keyguard/common/service/Files;->$values()[Lcom/artemchep/keyguard/common/service/Files; +HSPLcom/artemchep/keyguard/common/service/Files;->()V +HSPLcom/artemchep/keyguard/common/service/Files;->(Ljava/lang/String;ILjava/lang/String;)V +HSPLcom/artemchep/keyguard/common/service/Files;->getFilename()Ljava/lang/String; +Lcom/artemchep/keyguard/common/service/autofill/AutofillService; +Lcom/artemchep/keyguard/common/service/clipboard/ClipboardService; +Lcom/artemchep/keyguard/common/service/connectivity/ConnectivityService; +Lcom/artemchep/keyguard/common/service/crypto/CipherEncryptor; +Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator; +Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator$DefaultImpls; +HSPLcom/artemchep/keyguard/common/service/crypto/CryptoGenerator$DefaultImpls;->hkdf$default(Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator;[B[B[BIILjava/lang/Object;)[B +HSPLcom/artemchep/keyguard/common/service/crypto/CryptoGenerator$DefaultImpls;->pbkdf2$default(Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator;[B[BIIILjava/lang/Object;)[B +Lcom/artemchep/keyguard/common/service/crypto/FileEncryptor; +Lcom/artemchep/keyguard/common/service/deeplink/DeeplinkService; +Lcom/artemchep/keyguard/common/service/deeplink/impl/DeeplinkServiceImpl; +HSPLcom/artemchep/keyguard/common/service/deeplink/impl/DeeplinkServiceImpl;->()V +HSPLcom/artemchep/keyguard/common/service/deeplink/impl/DeeplinkServiceImpl;->()V +HSPLcom/artemchep/keyguard/common/service/deeplink/impl/DeeplinkServiceImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/service/deeplink/impl/DeeplinkServiceImpl;->clear(Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/common/service/deeplink/impl/DeeplinkServiceImpl;->get(Ljava/lang/String;)Ljava/lang/String; +Lcom/artemchep/keyguard/common/service/download/DownloadManager; +Lcom/artemchep/keyguard/common/service/download/DownloadService; +Lcom/artemchep/keyguard/common/service/extract/LinkInfoExtractor; +Lcom/artemchep/keyguard/common/service/extract/impl/LinkInfoPlatformExtractor; +Lcom/artemchep/keyguard/common/service/gpmprivapps/PrivilegedAppsService; +Lcom/artemchep/keyguard/common/service/hibp/breaches/all/BreachesLocalDataSource; +Lcom/artemchep/keyguard/common/service/hibp/breaches/all/BreachesRemoteDataSource; +Lcom/artemchep/keyguard/common/service/hibp/breaches/all/BreachesRepository; +Lcom/artemchep/keyguard/common/service/hibp/passwords/PasswordPwnageDataSource; +Lcom/artemchep/keyguard/common/service/hibp/passwords/PasswordPwnageDataSourceLocal; +Lcom/artemchep/keyguard/common/service/hibp/passwords/PasswordPwnageDataSourceRemote; +Lcom/artemchep/keyguard/common/service/hibp/passwords/PasswordPwnageRepository; +Lcom/artemchep/keyguard/common/service/id/IdRepository; +Lcom/artemchep/keyguard/common/service/id/impl/IdRepositoryImpl; +HSPLcom/artemchep/keyguard/common/service/id/impl/IdRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/common/service/id/impl/IdRepositoryImpl;->(Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStore;)V +HSPLcom/artemchep/keyguard/common/service/id/impl/IdRepositoryImpl;->get()Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/common/service/id/impl/IdRepositoryImpl;->put(Ljava/lang/String;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/service/id/impl/IdRepositoryImpl$Companion; +HSPLcom/artemchep/keyguard/common/service/id/impl/IdRepositoryImpl$Companion;->()V +HSPLcom/artemchep/keyguard/common/service/id/impl/IdRepositoryImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/service/justdeleteme/JustDeleteMeService; +Lcom/artemchep/keyguard/common/service/justdeleteme/JustDeleteMeServiceInfo; +Lcom/artemchep/keyguard/common/service/justgetmydata/JustGetMyDataService; +Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreferenceKt; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreferenceKt;->asDuration(Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference;)Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreferenceKt$asDuration$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreferenceKt$asDuration$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStore; +Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt;->getObject(Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStore;Ljava/lang/String;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1;->(Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1;->setAndCommit(Ljava/lang/Object;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$collect$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$collect$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$collect$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$collect$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$collect$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$collect$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$collect$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$collect$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$collect$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$collect$$inlined$map$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$flatMap$1; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$flatMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference;)V +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$flatMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$flatMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$flatMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$flatMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function1;Ljava/lang/Object;)V +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$ioEffect$1$1; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$ioEffect$1$1;->(Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function1;Ljava/lang/Object;)V +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$ioEffect$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$ioEffect$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$ioEffect$1$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/keyvalue/KeyValueStoreKt$getObject$1$setAndCommit$$inlined$ioEffect$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/keyvalue/SecureKeyValueStore; +Lcom/artemchep/keyguard/common/service/license/LicenseService; +Lcom/artemchep/keyguard/common/service/logging/LogLevel; +HSPLcom/artemchep/keyguard/common/service/logging/LogLevel;->$values()[Lcom/artemchep/keyguard/common/service/logging/LogLevel; +HSPLcom/artemchep/keyguard/common/service/logging/LogLevel;->()V +HSPLcom/artemchep/keyguard/common/service/logging/LogLevel;->(Ljava/lang/String;I)V +Lcom/artemchep/keyguard/common/service/logging/LogRepository; +Lcom/artemchep/keyguard/common/service/logging/LogRepository$DefaultImpls; +PLcom/artemchep/keyguard/common/service/logging/LogRepository$DefaultImpls;->post$default(Lcom/artemchep/keyguard/common/service/logging/LogRepository;Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/common/service/logging/LogLevel;ILjava/lang/Object;)V +Lcom/artemchep/keyguard/common/service/passkey/PassKeyService; +Lcom/artemchep/keyguard/common/service/permission/Permission; +HSPLcom/artemchep/keyguard/common/service/permission/Permission;->$values()[Lcom/artemchep/keyguard/common/service/permission/Permission; +HSPLcom/artemchep/keyguard/common/service/permission/Permission;->()V +HSPLcom/artemchep/keyguard/common/service/permission/Permission;->(Ljava/lang/String;ILjava/lang/String;II)V +HSPLcom/artemchep/keyguard/common/service/permission/Permission;->(Ljava/lang/String;ILjava/lang/String;IIILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/common/service/permission/Permission;->getMaxSdk()I +HSPLcom/artemchep/keyguard/common/service/permission/Permission;->getMinSdk()I +HSPLcom/artemchep/keyguard/common/service/permission/Permission;->getPermission()Ljava/lang/String; +Lcom/artemchep/keyguard/common/service/permission/PermissionService; +Lcom/artemchep/keyguard/common/service/permission/PermissionState; +Lcom/artemchep/keyguard/common/service/permission/PermissionState$Declined; +HSPLcom/artemchep/keyguard/common/service/permission/PermissionState$Declined;->()V +HSPLcom/artemchep/keyguard/common/service/permission/PermissionState$Declined;->(Lkotlin/jvm/functions/Function1;)V +Lcom/artemchep/keyguard/common/service/power/PowerService; +Lcom/artemchep/keyguard/common/service/relays/api/EmailRelay; +Lcom/artemchep/keyguard/common/service/relays/api/anonaddy/AnonAddyEmailRelay; +Lcom/artemchep/keyguard/common/service/relays/api/duckduckgo/DuckDuckGoEmailRelay; +Lcom/artemchep/keyguard/common/service/relays/api/firefoxrelay/FirefoxRelayEmailRelay; +Lcom/artemchep/keyguard/common/service/relays/api/forwardemail/ForwardEmailEmailRelay; +Lcom/artemchep/keyguard/common/service/relays/api/simplelogin/SimpleLoginEmailRelay; +Lcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt; +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt;->emailRelayDiModule()Lorg/kodein/di/DI$Module; +Lcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1; +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1;->()V +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1;->()V +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1;->invoke(Lorg/kodein/di/DI$Builder;)V +Lcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$1; +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$1;->()V +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$1;->()V +Lcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$2; +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$2;->()V +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$2;->()V +Lcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$3; +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$3;->()V +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$3;->()V +Lcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$4; +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$4;->()V +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$4;->()V +Lcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$5; +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$5;->()V +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$5;->()V +Lcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$invoke$$inlined$bindSingleton$default$1; +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$invoke$$inlined$bindSingleton$default$1;->()V +Lcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$invoke$$inlined$bindSingleton$default$2; +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$invoke$$inlined$bindSingleton$default$2;->()V +Lcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$invoke$$inlined$bindSingleton$default$3; +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$invoke$$inlined$bindSingleton$default$3;->()V +Lcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$invoke$$inlined$bindSingleton$default$4; +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$invoke$$inlined$bindSingleton$default$4;->()V +Lcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$invoke$$inlined$bindSingleton$default$5; +HSPLcom/artemchep/keyguard/common/service/relays/di/EmailRelayModuleKt$emailRelayDiModule$1$invoke$$inlined$bindSingleton$default$5;->()V +Lcom/artemchep/keyguard/common/service/relays/repo/GeneratorEmailRelayRepository; +Lcom/artemchep/keyguard/common/service/review/ReviewLog; +Lcom/artemchep/keyguard/common/service/review/ReviewService; +Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository; +Lcom/artemchep/keyguard/common/service/settings/SettingsReadWriteRepository; +Lcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->(Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStore;)V +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getAllowScreenshots()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getAllowScreenshots()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getAllowTwoPanelLayoutInLandscape()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getAllowTwoPanelLayoutInLandscape()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getAllowTwoPanelLayoutInPortrait()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getAllowTwoPanelLayoutInPortrait()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getAppIcons()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getAppIcons()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getBiometricTimeout()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getCachePremium()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getCachePremium()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getColors()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getColors()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getConcealFields()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getConcealFields()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getDebugPremium()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getDebugPremium()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getDebugScreenDelay()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getDebugScreenDelay()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getFont()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getFont()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getNavAnimation()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getNavAnimation()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getNavLabel()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getNavLabel()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getTheme()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getTheme()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getThemeUseAmoledDark()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getThemeUseAmoledDark()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getUseExternalBrowser()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getUseExternalBrowser()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getVaultPersist()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getVaultScreenLock()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getVaultScreenLock()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getWebsiteIcons()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getWebsiteIcons()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getWriteAccess()Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->getWriteAccess()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl;->setCachePremium(Z)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$Companion; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$Companion;->()V +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$onboardingLastVisitInstantPref$1; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$onboardingLastVisitInstantPref$1;->()V +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$onboardingLastVisitInstantPref$1;->()V +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$onboardingLastVisitInstantPref$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$onboardingLastVisitInstantPref$1;->invoke(Lkotlinx/datetime/Instant;)Ljava/lang/String; +Lcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$onboardingLastVisitInstantPref$2; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$onboardingLastVisitInstantPref$2;->()V +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$onboardingLastVisitInstantPref$2;->()V +Lcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$1; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$1;->()V +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$1;->invoke(Ljava/lang/Enum;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$2; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$2;->()V +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$2;->invoke(Ljava/lang/String;)Ljava/lang/Enum; +Lcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$3; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$3;->()V +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$3;->invoke(Ljava/lang/Enum;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$4; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$4;->()V +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$4;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$4;->invoke(Ljava/lang/String;)Ljava/lang/Enum; +Lcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$5; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$5;->()V +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$5;->invoke(Ljava/lang/Enum;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$5;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$6; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$6;->()V +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$6;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$6;->invoke(Ljava/lang/String;)Ljava/lang/Enum; +Lcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$7; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$7;->()V +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$7;->invoke(Ljava/lang/Enum;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$7;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$8; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$8;->()V +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$8;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$getEnumNullable$8;->invoke(Ljava/lang/String;)Ljava/lang/Enum; +Lcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/service/similarity/SimilarityService; +Lcom/artemchep/keyguard/common/service/state/StateRepository; +Lcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl; +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl;->(Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStore;Lkotlinx/serialization/json/Json;)V +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl;->access$getJson$p(Lcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl;)Lkotlinx/serialization/json/Json; +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl;->createOrGetPref(Ljava/lang/String;)Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl;->createPref(Ljava/lang/String;)Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl;->get(Ljava/lang/String;)Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl;->put(Ljava/lang/String;Ljava/util/Map;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$createPref$1; +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$createPref$1;->(Lcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl;)V +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$createPref$1;->invoke(Lcom/artemchep/keyguard/common/model/AnyMap;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$createPref$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$createPref$2; +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$createPref$2;->(Lcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl;)V +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$createPref$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$createPref$2;->invoke(Ljava/lang/String;)Lcom/artemchep/keyguard/common/model/AnyMap; +Lcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$get$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$get$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$get$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$get$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$get$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$get$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$get$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$get$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl$get$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImplKt; +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImplKt;->getExtractedContent(Lkotlinx/serialization/json/JsonElement;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImplKt;->toJson(Ljava/lang/Object;)Lkotlinx/serialization/json/JsonElement; +HSPLcom/artemchep/keyguard/common/service/state/impl/StateRepositoryImplKt;->toMap(Lkotlinx/serialization/json/JsonObject;)Ljava/util/Map; +Lcom/artemchep/keyguard/common/service/subscription/SubscriptionService; +Lcom/artemchep/keyguard/common/service/text/Base32Service; +Lcom/artemchep/keyguard/common/service/text/Base64Service; +Lcom/artemchep/keyguard/common/service/text/Base64Service$DefaultImpls; +HSPLcom/artemchep/keyguard/common/service/text/Base64Service$DefaultImpls;->decode(Lcom/artemchep/keyguard/common/service/text/Base64Service;Ljava/lang/String;)[B +Lcom/artemchep/keyguard/common/service/text/TextService; +Lcom/artemchep/keyguard/common/service/tld/TldService; +Lcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl; +HSPLcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl;->()V +HSPLcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl;->(Lcom/artemchep/keyguard/common/service/text/TextService;Lcom/artemchep/keyguard/common/service/logging/LogRepository;)V +HSPLcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl$Companion; +HSPLcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl$Companion;->()V +HSPLcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl$dataIo$1; +HSPLcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl$dataIo$1;->()V +HSPLcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl$dataIo$1;->()V +Lcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl$special$$inlined$measure$1; +HSPLcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl$special$$inlined$measure$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/service/tld/impl/TldServiceImpl;)V +Lcom/artemchep/keyguard/common/service/tld/impl/TldServiceImplKt; +Lcom/artemchep/keyguard/common/service/totp/TotpService; +Lcom/artemchep/keyguard/common/service/totp/impl/TotpServiceImpl; +HSPLcom/artemchep/keyguard/common/service/totp/impl/TotpServiceImpl;->()V +HSPLcom/artemchep/keyguard/common/service/totp/impl/TotpServiceImpl;->(Lcom/artemchep/keyguard/common/service/text/Base32Service;Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator;)V +HSPLcom/artemchep/keyguard/common/service/totp/impl/TotpServiceImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/common/service/totp/impl/TotpServiceImpl$Companion; +HSPLcom/artemchep/keyguard/common/service/totp/impl/TotpServiceImpl$Companion;->()V +HSPLcom/artemchep/keyguard/common/service/totp/impl/TotpServiceImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/service/totp/impl/TotpServiceImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/service/totp/impl/TotpServiceImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/service/totp/impl/TotpServiceImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/service/totp/impl/TotpServiceImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/service/twofa/TwoFaService; +Lcom/artemchep/keyguard/common/service/vault/FingerprintReadRepository; +Lcom/artemchep/keyguard/common/service/vault/FingerprintReadWriteRepository; +Lcom/artemchep/keyguard/common/service/vault/KeyReadRepository; +Lcom/artemchep/keyguard/common/service/vault/KeyReadWriteRepository; +Lcom/artemchep/keyguard/common/service/vault/SessionMetadataReadRepository; +Lcom/artemchep/keyguard/common/service/vault/SessionMetadataReadWriteRepository; +Lcom/artemchep/keyguard/common/service/vault/SessionReadRepository; +Lcom/artemchep/keyguard/common/service/vault/SessionReadWriteRepository; +Lcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl; +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl;->(Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStore;Lcom/artemchep/keyguard/common/service/text/Base64Service;)V +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl;->access$getBase64Service$p(Lcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl;)Lcom/artemchep/keyguard/common/service/text/Base64Service; +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl;->get()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl;->put(Lcom/artemchep/keyguard/common/model/Fingerprint;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$dataPref$1; +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$dataPref$1;->(Lcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl;)V +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$dataPref$1;->invoke(Lcom/artemchep/keyguard/common/model/Fingerprint;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$dataPref$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$dataPref$1$2; +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$dataPref$1$2;->()V +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$dataPref$1$2;->()V +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$dataPref$1$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$dataPref$1$2;->invoke([B)Ljava/lang/CharSequence; +Lcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$dataPref$2; +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$dataPref$2;->(Lcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl;)V +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$dataPref$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$dataPref$2;->invoke(Ljava/lang/String;)Lcom/artemchep/keyguard/common/model/Fingerprint; +Lcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl;->(Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStore;Lkotlinx/serialization/json/Json;Lcom/artemchep/keyguard/common/service/text/Base64Service;)V +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl;->access$getDataPref$p(Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl;)Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl;->get()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl;->put(Lcom/artemchep/keyguard/common/model/PersistedSession;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$dataPref$1; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$dataPref$1;->(Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl;)V +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$dataPref$1;->invoke(Lcom/artemchep/keyguard/common/service/vault/impl/PersistedSessionEntity;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$dataPref$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$dataPref$2; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$dataPref$2;->(Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl;)V +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$dataPref$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$dataPref$2;->invoke(Ljava/lang/String;)Lcom/artemchep/keyguard/common/service/vault/impl/PersistedSessionEntity; +Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$get$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$get$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl;)V +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$get$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$get$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$get$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl;)V +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$get$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$get$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$get$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$get$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$put$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$put$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/model/PersistedSession;Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl;)V +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$put$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$put$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$put$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$put$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$special$$inlined$instance$default$4; +HSPLcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl$special$$inlined$instance$default$4;->()V +Lcom/artemchep/keyguard/common/service/vault/impl/PersistedSessionEntity; +Lcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl; +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl;->(Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStore;)V +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl;->setAndCommit(Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference;Lkotlinx/datetime/Instant;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl;->setLastPasswordUseTimestamp(Lkotlinx/datetime/Instant;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$Companion; +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$Companion;->()V +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$setAndCommit$$inlined$flatMap$1; +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$setAndCommit$$inlined$flatMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference;)V +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$setAndCommit$$inlined$flatMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$setAndCommit$$inlined$flatMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$setAndCommit$$inlined$flatMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$setAndCommit$$inlined$flatMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$setAndCommit$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$setAndCommit$$inlined$map$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$setAndCommit$$inlined$map$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$setAndCommit$$inlined$map$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$setAndCommit$$inlined$map$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$setAndCommit$$inlined$map$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/service/vault/impl/SessionRepositoryImpl; +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionRepositoryImpl;->get()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/service/vault/impl/SessionRepositoryImpl;->put(Lcom/artemchep/keyguard/common/model/MasterSession;)V +Lcom/artemchep/keyguard/common/service/wordlist/WordlistService; +Lcom/artemchep/keyguard/common/service/wordlist/impl/WordlistServiceImpl; +HSPLcom/artemchep/keyguard/common/service/wordlist/impl/WordlistServiceImpl;->()V +HSPLcom/artemchep/keyguard/common/service/wordlist/impl/WordlistServiceImpl;->(Lcom/artemchep/keyguard/common/service/text/TextService;)V +HSPLcom/artemchep/keyguard/common/service/wordlist/impl/WordlistServiceImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/common/service/wordlist/impl/WordlistServiceImpl$special$$inlined$handleErrorTap$default$1; +HSPLcom/artemchep/keyguard/common/service/wordlist/impl/WordlistServiceImpl$special$$inlined$handleErrorTap$default$1;->(Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function1;)V +Lcom/artemchep/keyguard/common/service/wordlist/impl/WordlistServiceImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/service/wordlist/impl/WordlistServiceImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/service/wordlist/impl/WordlistServiceImpl$wordListIo$1; +HSPLcom/artemchep/keyguard/common/service/wordlist/impl/WordlistServiceImpl$wordListIo$1;->()V +HSPLcom/artemchep/keyguard/common/service/wordlist/impl/WordlistServiceImpl$wordListIo$1;->()V +Lcom/artemchep/keyguard/common/service/wordlist/impl/WordlistServiceImplKt; +Lcom/artemchep/keyguard/common/usecase/AddCipher; +Lcom/artemchep/keyguard/common/usecase/AddCipherOpenedHistory; +Lcom/artemchep/keyguard/common/usecase/AddCipherUsedAutofillHistory; +Lcom/artemchep/keyguard/common/usecase/AddCipherUsedPasskeyHistory; +Lcom/artemchep/keyguard/common/usecase/AddEmailRelay; +Lcom/artemchep/keyguard/common/usecase/AddFolder; +Lcom/artemchep/keyguard/common/usecase/AddGeneratorHistory; +Lcom/artemchep/keyguard/common/usecase/AddPasskeyCipher; +Lcom/artemchep/keyguard/common/usecase/AddUriCipher; +Lcom/artemchep/keyguard/common/usecase/AuthConfirmMasterKeyUseCase; +Lcom/artemchep/keyguard/common/usecase/AuthGenerateMasterKeyUseCase; +Lcom/artemchep/keyguard/common/usecase/BiometricKeyDecryptUseCase; +Lcom/artemchep/keyguard/common/usecase/BiometricKeyEncryptUseCase; +Lcom/artemchep/keyguard/common/usecase/BiometricStatusUseCase; +Lcom/artemchep/keyguard/common/usecase/ChangeCipherNameById; +Lcom/artemchep/keyguard/common/usecase/ChangeCipherPasswordById; +Lcom/artemchep/keyguard/common/usecase/CheckPasswordLeak; +Lcom/artemchep/keyguard/common/usecase/CheckPasswordSetLeak; +Lcom/artemchep/keyguard/common/usecase/CheckUsernameLeak; +Lcom/artemchep/keyguard/common/usecase/CipherBreachCheck; +Lcom/artemchep/keyguard/common/usecase/CipherDuplicatesCheck; +Lcom/artemchep/keyguard/common/usecase/CipherDuplicatesCheck$Sensitivity; +Lcom/artemchep/keyguard/common/usecase/CipherExpiringCheck; +Lcom/artemchep/keyguard/common/usecase/CipherFieldSwitchToggle; +Lcom/artemchep/keyguard/common/usecase/CipherIncompleteCheck; +Lcom/artemchep/keyguard/common/usecase/CipherMerge; +Lcom/artemchep/keyguard/common/usecase/CipherRemovePasswordHistory; +Lcom/artemchep/keyguard/common/usecase/CipherRemovePasswordHistoryById; +Lcom/artemchep/keyguard/common/usecase/CipherToolbox; +Lcom/artemchep/keyguard/common/usecase/CipherToolboxImpl; +HSPLcom/artemchep/keyguard/common/usecase/CipherToolboxImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/CipherToolboxImpl;->(Lcom/artemchep/keyguard/common/usecase/FavouriteCipherById;Lcom/artemchep/keyguard/common/usecase/RePromptCipherById;Lcom/artemchep/keyguard/common/usecase/ChangeCipherNameById;Lcom/artemchep/keyguard/common/usecase/ChangeCipherPasswordById;Lcom/artemchep/keyguard/common/usecase/CopyCipherById;Lcom/artemchep/keyguard/common/usecase/MoveCipherToFolderById;Lcom/artemchep/keyguard/common/usecase/RestoreCipherById;Lcom/artemchep/keyguard/common/usecase/TrashCipherById;Lcom/artemchep/keyguard/common/usecase/RemoveCipherById;Lcom/artemchep/keyguard/common/usecase/CipherMerge;)V +HSPLcom/artemchep/keyguard/common/usecase/CipherToolboxImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$10; +HSPLcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$10;->()V +Lcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$4; +HSPLcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$4;->()V +Lcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$5; +HSPLcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$5;->()V +Lcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$6; +HSPLcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$6;->()V +Lcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$7; +HSPLcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$7;->()V +Lcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$8; +HSPLcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$8;->()V +Lcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$9; +HSPLcom/artemchep/keyguard/common/usecase/CipherToolboxImpl$special$$inlined$instance$default$9;->()V +Lcom/artemchep/keyguard/common/usecase/CipherUnsecureUrlAutoFix; +Lcom/artemchep/keyguard/common/usecase/CipherUnsecureUrlCheck; +Lcom/artemchep/keyguard/common/usecase/CipherUrlCheck; +Lcom/artemchep/keyguard/common/usecase/CipherUrlDuplicateCheck; +Lcom/artemchep/keyguard/common/usecase/CleanUpAttachment; +Lcom/artemchep/keyguard/common/usecase/ClearData; +Lcom/artemchep/keyguard/common/usecase/ClearVaultSession; +Lcom/artemchep/keyguard/common/usecase/ConfirmAccessByPasswordUseCase; +Lcom/artemchep/keyguard/common/usecase/CopyCipherById; +Lcom/artemchep/keyguard/common/usecase/CopyText; +HSPLcom/artemchep/keyguard/common/usecase/CopyText;->()V +HSPLcom/artemchep/keyguard/common/usecase/CopyText;->(Lcom/artemchep/keyguard/common/service/clipboard/ClipboardService;Lkotlin/jvm/functions/Function1;)V +Lcom/artemchep/keyguard/common/usecase/DateFormatter; +Lcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase; +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase;->()V +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase;->(Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator;Lcom/artemchep/keyguard/common/usecase/DeviceIdUseCase;)V +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase;->access$getCryptoGenerator$p(Lcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase;)Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator; +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase;->invoke()Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase$invoke$$inlined$effectMap$1; +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase$invoke$$inlined$effectMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase;)V +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase$invoke$$inlined$effectMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase$invoke$$inlined$effectMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase$invoke$$inlined$effectMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase$invoke$$inlined$effectMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase$invoke$$inlined$effectMap$1$1; +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase$invoke$$inlined$effectMap$1$1;->(Ljava/lang/Object;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase;)V +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase$invoke$$inlined$effectMap$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase$invoke$$inlined$effectMap$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase$invoke$$inlined$effectMap$1$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase$invoke$$inlined$effectMap$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/usecase/DeviceIdUseCase; +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase;->()V +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase;->(Lcom/artemchep/keyguard/common/service/id/IdRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase;->access$getDeviceId$p(Lcom/artemchep/keyguard/common/usecase/DeviceIdUseCase;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase;->access$getDeviceIdRepository$p(Lcom/artemchep/keyguard/common/usecase/DeviceIdUseCase;)Lcom/artemchep/keyguard/common/service/id/IdRepository; +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase;->access$setDeviceId$p(Lcom/artemchep/keyguard/common/usecase/DeviceIdUseCase;Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase;->getOrSet()Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase;->invoke()Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/usecase/DeviceIdUseCase$getOrSet$$inlined$flatMap$1; +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase$getOrSet$$inlined$flatMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/usecase/DeviceIdUseCase;)V +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase$getOrSet$$inlined$flatMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase$getOrSet$$inlined$flatMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase$getOrSet$$inlined$flatMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase$getOrSet$$inlined$flatMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/DeviceIdUseCase$getOrSet$1$inMemoryId$1$3; +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase$getOrSet$1$inMemoryId$1$3;->(Ljava/lang/Object;)V +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase$getOrSet$1$inMemoryId$1$3;->set(Ljava/lang/Object;)V +Lcom/artemchep/keyguard/common/usecase/DeviceIdUseCase$getOrSet$lambda$5$lambda$4$$inlined$flatTap$1; +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase$getOrSet$lambda$5$lambda$4$$inlined$flatTap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/service/id/IdRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase$getOrSet$lambda$5$lambda$4$$inlined$flatTap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase$getOrSet$lambda$5$lambda$4$$inlined$flatTap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase$getOrSet$lambda$5$lambda$4$$inlined$flatTap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase$getOrSet$lambda$5$lambda$4$$inlined$flatTap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/DeviceIdUseCase$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCase$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/DeviceIdUseCaseKt; +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCaseKt;->access$getDeviceId()Ljava/lang/String; +HSPLcom/artemchep/keyguard/common/usecase/DeviceIdUseCaseKt;->getDeviceId()Ljava/lang/String; +Lcom/artemchep/keyguard/common/usecase/DisableBiometric; +Lcom/artemchep/keyguard/common/usecase/DownloadAttachment; +Lcom/artemchep/keyguard/common/usecase/EnableBiometric; +Lcom/artemchep/keyguard/common/usecase/FavouriteCipherById; +Lcom/artemchep/keyguard/common/usecase/GenerateMasterHashUseCase; +Lcom/artemchep/keyguard/common/usecase/GenerateMasterKeyUseCase; +Lcom/artemchep/keyguard/common/usecase/GenerateMasterSaltUseCase; +Lcom/artemchep/keyguard/common/usecase/GetAccountHasError; +Lcom/artemchep/keyguard/common/usecase/GetAccountStatus; +Lcom/artemchep/keyguard/common/usecase/GetAccounts; +Lcom/artemchep/keyguard/common/usecase/GetAccountsHasError; +Lcom/artemchep/keyguard/common/usecase/GetAllowScreenshots; +Lcom/artemchep/keyguard/common/usecase/GetAllowTwoPanelLayoutInLandscape; +Lcom/artemchep/keyguard/common/usecase/GetAllowTwoPanelLayoutInPortrait; +Lcom/artemchep/keyguard/common/usecase/GetAppBuildDate; +Lcom/artemchep/keyguard/common/usecase/GetAppBuildType; +Lcom/artemchep/keyguard/common/usecase/GetAppIcons; +Lcom/artemchep/keyguard/common/usecase/GetAppVersion; +Lcom/artemchep/keyguard/common/usecase/GetAppVersionCode; +Lcom/artemchep/keyguard/common/usecase/GetAppVersionName; +Lcom/artemchep/keyguard/common/usecase/GetAutofillCopyTotp; +Lcom/artemchep/keyguard/common/usecase/GetAutofillInlineSuggestions; +Lcom/artemchep/keyguard/common/usecase/GetAutofillManualSelection; +Lcom/artemchep/keyguard/common/usecase/GetAutofillRespectAutofillOff; +Lcom/artemchep/keyguard/common/usecase/GetAutofillSaveRequest; +Lcom/artemchep/keyguard/common/usecase/GetAutofillSaveUri; +Lcom/artemchep/keyguard/common/usecase/GetBarcodeImage; +Lcom/artemchep/keyguard/common/usecase/GetBiometricRemainingDuration; +Lcom/artemchep/keyguard/common/usecase/GetBiometricTimeout; +Lcom/artemchep/keyguard/common/usecase/GetBiometricTimeoutVariants; +Lcom/artemchep/keyguard/common/usecase/GetCachePremium; +Lcom/artemchep/keyguard/common/usecase/GetCanAddAccount; +Lcom/artemchep/keyguard/common/usecase/GetCanWrite; +Lcom/artemchep/keyguard/common/usecase/GetCheckPwnedPasswords; +Lcom/artemchep/keyguard/common/usecase/GetCheckPwnedServices; +Lcom/artemchep/keyguard/common/usecase/GetCheckTwoFA; +Lcom/artemchep/keyguard/common/usecase/GetCipherOpenedCount; +Lcom/artemchep/keyguard/common/usecase/GetCipherOpenedHistory; +Lcom/artemchep/keyguard/common/usecase/GetCiphers; +Lcom/artemchep/keyguard/common/usecase/GetClipboardAutoClear; +Lcom/artemchep/keyguard/common/usecase/GetClipboardAutoClearVariants; +Lcom/artemchep/keyguard/common/usecase/GetClipboardAutoRefresh; +Lcom/artemchep/keyguard/common/usecase/GetClipboardAutoRefreshVariants; +Lcom/artemchep/keyguard/common/usecase/GetCollections; +Lcom/artemchep/keyguard/common/usecase/GetColors; +Lcom/artemchep/keyguard/common/usecase/GetColorsVariants; +Lcom/artemchep/keyguard/common/usecase/GetConcealFields; +Lcom/artemchep/keyguard/common/usecase/GetDebugPremium; +Lcom/artemchep/keyguard/common/usecase/GetDebugScreenDelay; +Lcom/artemchep/keyguard/common/usecase/GetEmailRelays; +Lcom/artemchep/keyguard/common/usecase/GetEnvSendUrl; +Lcom/artemchep/keyguard/common/usecase/GetFingerprint; +Lcom/artemchep/keyguard/common/usecase/GetFolderTree; +Lcom/artemchep/keyguard/common/usecase/GetFolderTreeById; +Lcom/artemchep/keyguard/common/usecase/GetFolders; +Lcom/artemchep/keyguard/common/usecase/GetFont; +Lcom/artemchep/keyguard/common/usecase/GetFontVariants; +Lcom/artemchep/keyguard/common/usecase/GetGeneratorHistory; +Lcom/artemchep/keyguard/common/usecase/GetGravatarUrl; +Lcom/artemchep/keyguard/common/usecase/GetJustDeleteMeByUrl; +Lcom/artemchep/keyguard/common/usecase/GetKeepScreenOn; +Lcom/artemchep/keyguard/common/usecase/GetLocale; +Lcom/artemchep/keyguard/common/usecase/GetLocaleVariants; +Lcom/artemchep/keyguard/common/usecase/GetMarkdown; +Lcom/artemchep/keyguard/common/usecase/GetMetas; +Lcom/artemchep/keyguard/common/usecase/GetNavAnimation; +Lcom/artemchep/keyguard/common/usecase/GetNavAnimationVariants; +Lcom/artemchep/keyguard/common/usecase/GetNavLabel; +Lcom/artemchep/keyguard/common/usecase/GetOnboardingLastVisitInstant; +Lcom/artemchep/keyguard/common/usecase/GetOrganizations; +Lcom/artemchep/keyguard/common/usecase/GetPassphrase; +Lcom/artemchep/keyguard/common/usecase/GetPassword; +Lcom/artemchep/keyguard/common/usecase/GetPasswordStrength; +Lcom/artemchep/keyguard/common/usecase/GetProducts; +Lcom/artemchep/keyguard/common/usecase/GetProfiles; +Lcom/artemchep/keyguard/common/usecase/GetPurchased; +Lcom/artemchep/keyguard/common/usecase/GetScreenState; +Lcom/artemchep/keyguard/common/usecase/GetSends; +Lcom/artemchep/keyguard/common/usecase/GetShouldRequestAppReview; +Lcom/artemchep/keyguard/common/usecase/GetSubscriptions; +Lcom/artemchep/keyguard/common/usecase/GetSuggestions; +Lcom/artemchep/keyguard/common/usecase/GetTheme; +Lcom/artemchep/keyguard/common/usecase/GetThemeUseAmoledDark; +Lcom/artemchep/keyguard/common/usecase/GetThemeVariants; +Lcom/artemchep/keyguard/common/usecase/GetTotpCode; +Lcom/artemchep/keyguard/common/usecase/GetUseExternalBrowser; +Lcom/artemchep/keyguard/common/usecase/GetVaultLockAfterReboot; +Lcom/artemchep/keyguard/common/usecase/GetVaultLockAfterScreenOff; +Lcom/artemchep/keyguard/common/usecase/GetVaultLockAfterTimeout; +Lcom/artemchep/keyguard/common/usecase/GetVaultLockAfterTimeoutVariants; +Lcom/artemchep/keyguard/common/usecase/GetVaultPersist; +Lcom/artemchep/keyguard/common/usecase/GetVaultSession; +Lcom/artemchep/keyguard/common/usecase/GetWebsiteIcons; +Lcom/artemchep/keyguard/common/usecase/GetWriteAccess; +Lcom/artemchep/keyguard/common/usecase/MergeFolderById; +Lcom/artemchep/keyguard/common/usecase/MessageHub; +Lcom/artemchep/keyguard/common/usecase/MoveCipherToFolderById; +Lcom/artemchep/keyguard/common/usecase/NumberFormatter; +Lcom/artemchep/keyguard/common/usecase/PasskeyTarget; +Lcom/artemchep/keyguard/common/usecase/PasskeyTargetCheck; +Lcom/artemchep/keyguard/common/usecase/PutAccountColorById; +Lcom/artemchep/keyguard/common/usecase/PutAccountMasterPasswordHintById; +Lcom/artemchep/keyguard/common/usecase/PutAccountNameById; +Lcom/artemchep/keyguard/common/usecase/PutAllowScreenshots; +Lcom/artemchep/keyguard/common/usecase/PutAllowTwoPanelLayoutInLandscape; +Lcom/artemchep/keyguard/common/usecase/PutAllowTwoPanelLayoutInPortrait; +Lcom/artemchep/keyguard/common/usecase/PutAppIcons; +Lcom/artemchep/keyguard/common/usecase/PutAutofillCopyTotp; +Lcom/artemchep/keyguard/common/usecase/PutAutofillInlineSuggestions; +Lcom/artemchep/keyguard/common/usecase/PutAutofillManualSelection; +Lcom/artemchep/keyguard/common/usecase/PutAutofillRespectAutofillOff; +Lcom/artemchep/keyguard/common/usecase/PutAutofillSaveRequest; +Lcom/artemchep/keyguard/common/usecase/PutAutofillSaveUri; +Lcom/artemchep/keyguard/common/usecase/PutBiometricTimeout; +Lcom/artemchep/keyguard/common/usecase/PutCachePremium; +Lcom/artemchep/keyguard/common/usecase/PutCheckPwnedPasswords; +Lcom/artemchep/keyguard/common/usecase/PutCheckPwnedServices; +Lcom/artemchep/keyguard/common/usecase/PutCheckTwoFA; +Lcom/artemchep/keyguard/common/usecase/PutClipboardAutoClear; +Lcom/artemchep/keyguard/common/usecase/PutClipboardAutoRefresh; +Lcom/artemchep/keyguard/common/usecase/PutColors; +Lcom/artemchep/keyguard/common/usecase/PutConcealFields; +Lcom/artemchep/keyguard/common/usecase/PutDebugPremium; +Lcom/artemchep/keyguard/common/usecase/PutDebugScreenDelay; +Lcom/artemchep/keyguard/common/usecase/PutFont; +Lcom/artemchep/keyguard/common/usecase/PutKeepScreenOn; +Lcom/artemchep/keyguard/common/usecase/PutLocale; +Lcom/artemchep/keyguard/common/usecase/PutMarkdown; +Lcom/artemchep/keyguard/common/usecase/PutNavAnimation; +Lcom/artemchep/keyguard/common/usecase/PutNavLabel; +Lcom/artemchep/keyguard/common/usecase/PutOnboardingLastVisitInstant; +Lcom/artemchep/keyguard/common/usecase/PutScreenState; +Lcom/artemchep/keyguard/common/usecase/PutTheme; +Lcom/artemchep/keyguard/common/usecase/PutThemeUseAmoledDark; +Lcom/artemchep/keyguard/common/usecase/PutUseExternalBrowser; +Lcom/artemchep/keyguard/common/usecase/PutVaultLockAfterReboot; +Lcom/artemchep/keyguard/common/usecase/PutVaultLockAfterScreenOff; +Lcom/artemchep/keyguard/common/usecase/PutVaultLockAfterTimeout; +Lcom/artemchep/keyguard/common/usecase/PutVaultPersist; +Lcom/artemchep/keyguard/common/usecase/PutVaultSession; +Lcom/artemchep/keyguard/common/usecase/PutWebsiteIcons; +Lcom/artemchep/keyguard/common/usecase/PutWriteAccess; +Lcom/artemchep/keyguard/common/usecase/QueueSyncAll; +Lcom/artemchep/keyguard/common/usecase/QueueSyncById; +Lcom/artemchep/keyguard/common/usecase/RePromptCipherById; +Lcom/artemchep/keyguard/common/usecase/RemoveAccountById; +Lcom/artemchep/keyguard/common/usecase/RemoveAccounts; +Lcom/artemchep/keyguard/common/usecase/RemoveAttachment; +Lcom/artemchep/keyguard/common/usecase/RemoveCipherById; +Lcom/artemchep/keyguard/common/usecase/RemoveEmailRelayById; +Lcom/artemchep/keyguard/common/usecase/RemoveFolderById; +Lcom/artemchep/keyguard/common/usecase/RemoveFolderById$OnCiphersConflict; +Lcom/artemchep/keyguard/common/usecase/RemoveGeneratorHistory; +Lcom/artemchep/keyguard/common/usecase/RemoveGeneratorHistoryById; +Lcom/artemchep/keyguard/common/usecase/RenameFolderById; +Lcom/artemchep/keyguard/common/usecase/RequestAppReview; +Lcom/artemchep/keyguard/common/usecase/RestoreCipherById; +Lcom/artemchep/keyguard/common/usecase/RetryCipher; +Lcom/artemchep/keyguard/common/usecase/RotateDeviceIdUseCase; +Lcom/artemchep/keyguard/common/usecase/ShowMessage; +Lcom/artemchep/keyguard/common/usecase/SupervisorRead; +Lcom/artemchep/keyguard/common/usecase/SyncAll; +Lcom/artemchep/keyguard/common/usecase/SyncById; +Lcom/artemchep/keyguard/common/usecase/TrashCipherByFolderId; +Lcom/artemchep/keyguard/common/usecase/TrashCipherById; +Lcom/artemchep/keyguard/common/usecase/UnlockUseCase; +Lcom/artemchep/keyguard/common/usecase/Watchdog; +Lcom/artemchep/keyguard/common/usecase/WatchdogImpl; +HSPLcom/artemchep/keyguard/common/usecase/WatchdogImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/WatchdogImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/WatchdogImpl;->get()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/usecase/WatchdogImpl;->get(Lcom/artemchep/keyguard/common/model/AccountTask;)Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/common/usecase/WatchdogImpl;)V +HSPLcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$1$2; +PLcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/common/usecase/WatchdogImpl;)V +HSPLcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$2; +HSPLcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$2;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/common/model/AccountTask;)V +HSPLcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$2;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$2$2; +PLcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$2$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/common/model/AccountTask;)V +HSPLcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$2$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$2$2$1; +HSPLcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$2$2$1;->(Lcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$2$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/WatchdogImpl$get$$inlined$map$2$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope; +Lcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl;->(Lcom/artemchep/keyguard/common/usecase/GenerateMasterHashUseCase;Lcom/artemchep/keyguard/common/usecase/GenerateMasterKeyUseCase;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl;->access$getGenerateMasterHashUseCase$p(Lcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl;)Lcom/artemchep/keyguard/common/usecase/GenerateMasterHashUseCase; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl;->access$getGenerateMasterKeyUseCase$p(Lcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl;)Lcom/artemchep/keyguard/common/usecase/GenerateMasterKeyUseCase; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl;->invoke(Lcom/artemchep/keyguard/common/model/MasterPasswordSalt;Lcom/artemchep/keyguard/common/model/MasterPasswordHash;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$invoke$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$invoke$1;->(Lcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl;Lcom/artemchep/keyguard/common/model/MasterPasswordSalt;Lcom/artemchep/keyguard/common/model/MasterPasswordHash;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$invoke$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$invoke$1;->invoke-A0jvUzs([B)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$flatMap$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$flatMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/model/MasterPasswordHash;Lcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl;[B)V +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$flatMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$flatMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$flatMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$flatMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$map$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/model/MasterPasswordHash;Lcom/artemchep/keyguard/common/model/MasterPasswordSalt;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$map$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$map$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$map$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$map$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl;->(Lcom/artemchep/keyguard/common/usecase/GenerateMasterHashUseCase;Lcom/artemchep/keyguard/common/usecase/GenerateMasterKeyUseCase;Lcom/artemchep/keyguard/common/usecase/GenerateMasterSaltUseCase;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl;->access$getGenerateMasterHashUseCase$p(Lcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl;)Lcom/artemchep/keyguard/common/usecase/GenerateMasterHashUseCase; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl;->access$getGenerateMasterKeyUseCase$p(Lcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl;)Lcom/artemchep/keyguard/common/usecase/GenerateMasterKeyUseCase; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl;->access$getGenerateMasterSaltUseCase$p(Lcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl;)Lcom/artemchep/keyguard/common/usecase/GenerateMasterSaltUseCase; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl;->invoke()Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl$invoke$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl$invoke$1;->(Lcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl$invoke$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl$invoke$1;->invoke-A0jvUzs([B)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$effectMap$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$effectMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl;[B)V +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$effectMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$effectMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$effectMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl$invoke$1$invoke-A0jvUzs$$inlined$effectMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/common/usecase/impl/BiometricKeyDecryptUseCaseImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/BiometricKeyDecryptUseCaseImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/BiometricKeyDecryptUseCaseImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/BiometricKeyDecryptUseCaseImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/common/usecase/impl/BiometricKeyEncryptUseCaseImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/BiometricKeyEncryptUseCaseImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/BiometricKeyEncryptUseCaseImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/BiometricKeyEncryptUseCaseImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl;->(Landroid/content/Context;Lcom/artemchep/keyguard/common/service/logging/LogRepository;Lcom/artemchep/keyguard/android/downloader/journal/DownloadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl$Companion; +HSPLcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl$Companion;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl$Companion;->zzz(Lkotlinx/coroutines/CoroutineScope;Lcom/artemchep/keyguard/android/downloader/journal/DownloadRepository;Lcom/artemchep/keyguard/common/usecase/CleanUpAttachment;)Lkotlinx/coroutines/Job; +Lcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl$Companion$zzz$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl$Companion$zzz$1;->(Lcom/artemchep/keyguard/android/downloader/journal/DownloadRepository;Lkotlinx/coroutines/CoroutineScope;Lcom/artemchep/keyguard/common/usecase/CleanUpAttachment;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl$Companion$zzz$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl$Companion$zzz$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/common/usecase/impl/ClearVaultSessionImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/ClearVaultSessionImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/ClearVaultSessionImpl;->(Lcom/artemchep/keyguard/common/usecase/PutVaultSession;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/ClearVaultSessionImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/common/usecase/impl/ClearVaultSessionImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/ClearVaultSessionImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/DisableBiometricImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/DisableBiometricImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/DisableBiometricImpl;->(Lcom/artemchep/keyguard/common/service/vault/FingerprintReadWriteRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/DisableBiometricImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/common/usecase/impl/DisableBiometricImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/DisableBiometricImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl;->(Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl;->access$encode(Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl;[B[B)[B +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl;->encode([B[B)[B +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl;->invoke-NTeWIBM([BLcom/artemchep/keyguard/common/model/MasterPasswordSalt;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$Companion; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$Companion;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Lkotlin/coroutines/CoroutineContext;Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl;[BLcom/artemchep/keyguard/common/model/MasterPasswordSalt;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl;[BLcom/artemchep/keyguard/common/model/MasterPasswordSalt;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$map$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$map$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$map$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$map$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$invoke-NTeWIBM$$inlined$map$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl;->(Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl;->access$encode(Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl;[B[B)[B +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl;->encode([B[B)[B +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl;->invoke-NTeWIBM([BLcom/artemchep/keyguard/common/model/MasterPasswordHash;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$Companion; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$Companion;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Lkotlin/coroutines/CoroutineContext;Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl;[BLcom/artemchep/keyguard/common/model/MasterPasswordHash;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl;[BLcom/artemchep/keyguard/common/model/MasterPasswordHash;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$ioEffect$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$map$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$map$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$map$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$map$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$invoke-NTeWIBM$$inlined$map$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl;->(Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl;->access$getCryptoGenerator$p(Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl;)Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl;->invoke()Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$Companion; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$Companion;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Lkotlin/coroutines/CoroutineContext;Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$ioEffect$1$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$ioEffect$1$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$ioEffect$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$ioEffect$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$ioEffect$1$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$ioEffect$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$map$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$map$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$map$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$map$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$invoke$$inlined$map$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl;->(Lcom/artemchep/keyguard/common/service/permission/PermissionService;Lcom/artemchep/keyguard/common/usecase/GetAccounts;Lcom/artemchep/keyguard/common/usecase/GetMetas;Lcom/artemchep/keyguard/common/usecase/GetCiphers;Lcom/artemchep/keyguard/common/usecase/GetFolders;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1;->(Ljava/util/List;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$1;->(Ljava/util/List;[Ljava/lang/Object;Ljava/util/concurrent/atomic/AtomicInteger;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$1;->invoke(Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$1$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$1$1;->(Lkotlinx/coroutines/flow/Flow;[Ljava/lang/Object;ILjava/util/concurrent/atomic/AtomicInteger;Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$1$1$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$1$1$1;->([Ljava/lang/Object;ILkotlin/jvm/internal/Ref$BooleanRef;Ljava/util/concurrent/atomic/AtomicInteger;Lkotlinx/coroutines/channels/ProducerScope;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$1$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$2;->(Ljava/util/concurrent/atomic/AtomicInteger;Lkotlinx/coroutines/flow/FlowCollector;[Ljava/lang/Object;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$combineToList$1$2;->emit(Lkotlin/Unit;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$$inlined$map$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$1;->invoke(IILjava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$hasFailureFlow$1$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$hasFailureFlow$1$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$hasFailureFlow$1$1;->invoke(IIILkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$hasFailureFlow$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$hasFailureFlow$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$hasPendingFlow$1$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$hasPendingFlow$1$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$hasPendingFlow$1$1;->invoke(IILkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$hasPendingFlow$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$hasPendingFlow$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$2;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$2;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$2$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$2$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$2$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$2$2$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$2$2$1;->(Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$2$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$11$$inlined$map$2$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$2;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$2;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$2$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$2$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$2$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$2$2$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$2$2$1;->(Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$2$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$2$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$3; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$3;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$3;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$3$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$3$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$3$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$3$2$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$3$2$1;->(Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$3$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$invoke$lambda$6$$inlined$map$3$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$special$$inlined$instance$default$4; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$special$$inlined$instance$default$4;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$special$$inlined$instance$default$5; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl$special$$inlined$instance$default$5;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetAllowScreenshotsImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowScreenshotsImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowScreenshotsImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowScreenshotsImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowScreenshotsImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowScreenshotsImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetAllowScreenshotsImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowScreenshotsImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInLandscapeImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInLandscapeImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInLandscapeImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInLandscapeImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInLandscapeImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInLandscapeImpl;->invoke()Lkotlinx/coroutines/flow/StateFlow; +Lcom/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInLandscapeImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInLandscapeImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInPortraitImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInPortraitImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInPortraitImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInPortraitImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInPortraitImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInPortraitImpl;->invoke()Lkotlinx/coroutines/flow/StateFlow; +Lcom/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInPortraitImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInPortraitImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetAppIconsImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAppIconsImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAppIconsImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAppIconsImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAppIconsImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAppIconsImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetAppIconsImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetAppIconsImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetBiometricRemainingDurationImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetBiometricRemainingDurationImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetBiometricRemainingDurationImpl;->(Lcom/artemchep/keyguard/common/service/vault/SessionMetadataReadRepository;Lcom/artemchep/keyguard/common/usecase/GetBiometricTimeout;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetBiometricRemainingDurationImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/common/usecase/impl/GetBiometricRemainingDurationImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetBiometricRemainingDurationImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetBiometricRemainingDurationImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetBiometricRemainingDurationImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetBiometricTimeoutImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetBiometricTimeoutImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetBiometricTimeoutImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetBiometricTimeoutImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/common/usecase/impl/GetBiometricTimeoutImpl$Companion; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetBiometricTimeoutImpl$Companion;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetBiometricTimeoutImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/usecase/impl/GetBiometricTimeoutImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetBiometricTimeoutImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetBiometricTimeoutImpl$special$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetBiometricTimeoutImpl$special$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +Lcom/artemchep/keyguard/common/usecase/impl/GetCachePremiumImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetCachePremiumImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetCachePremiumImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetCachePremiumImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetCachePremiumImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetCachePremiumImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetCachePremiumImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetCachePremiumImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetCanWriteImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetCanWriteImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetCanWriteImpl;->(Lcom/artemchep/keyguard/common/usecase/GetPurchased;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetCanWriteImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetCanWriteImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetCanWriteImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetCanWriteImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetCanWriteImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetColorsImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetColorsImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetColorsImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetColorsImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetColorsImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetColorsImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetColorsImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetColorsImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetConcealFieldsImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetConcealFieldsImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetConcealFieldsImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetConcealFieldsImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetConcealFieldsImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetConcealFieldsImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetConcealFieldsImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetConcealFieldsImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetDebugPremiumImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetDebugPremiumImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetDebugPremiumImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetDebugPremiumImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetDebugPremiumImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetDebugPremiumImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetDebugPremiumImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetDebugPremiumImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetDebugScreenDelayImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetDebugScreenDelayImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetDebugScreenDelayImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetDebugScreenDelayImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetDebugScreenDelayImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetDebugScreenDelayImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetDebugScreenDelayImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetDebugScreenDelayImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetFontImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetFontImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetFontImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetFontImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetFontImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetFontImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetFontImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetFontImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl;->invoke()Lkotlinx/coroutines/flow/StateFlow; +Lcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl$special$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl$special$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl$special$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl$special$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl$special$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl$special$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl$special$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl$special$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl$special$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/common/usecase/impl/GetNavLabelImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavLabelImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavLabelImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavLabelImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavLabelImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavLabelImpl;->invoke()Lkotlinx/coroutines/flow/StateFlow; +Lcom/artemchep/keyguard/common/usecase/impl/GetNavLabelImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetNavLabelImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl;->(Landroid/content/Context;Lcom/artemchep/keyguard/common/service/subscription/SubscriptionService;Lcom/artemchep/keyguard/common/usecase/GetDebugPremium;Lcom/artemchep/keyguard/common/usecase/GetCachePremium;Lcom/artemchep/keyguard/common/usecase/PutCachePremium;Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl;->access$getPutCachePremium$p(Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl;)Lcom/artemchep/keyguard/common/usecase/PutCachePremium; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl;->access$getWindowCoroutineScope$p(Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl;)Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl;->hasGooglePlayServices()Z +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl;->localStatusFlow()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl;->upstreamStatusFlow()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$PremiumStatus; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$PremiumStatus;->(ZZ)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$PremiumStatus;->isPremium()Z +PLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$PremiumStatus;->isUpstream()Z +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$localStatusFlow$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$localStatusFlow$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$localStatusFlow$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$localStatusFlow$$inlined$map$1$2; +PLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$localStatusFlow$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$localStatusFlow$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$localStatusFlow$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$localStatusFlow$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$localStatusFlow$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$sharedFlow$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$sharedFlow$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$sharedFlow$1;->invoke(Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$PremiumStatus;Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$PremiumStatus;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$sharedFlow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$sharedFlow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$sharedFlow$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$sharedFlow$2;->(Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$sharedFlow$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$sharedFlow$2;->invoke(Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$PremiumStatus;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$sharedFlow$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$sharedFlow$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$instance$default$4; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$instance$default$4;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$instance$default$5; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$instance$default$5;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$instance$default$6; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$instance$default$6;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$map$1$2; +PLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$special$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$$inlined$map$1$2; +PLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$1$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$1$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$1$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$1$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$1$2;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$1$2;->invoke(ZZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$1$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$1$isPurchased$1$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$1$isPurchased$1$1;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$1$isPurchased$1$1;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$1$isPurchased$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$1$isPurchased$1$1;->invoke(Ljava/lang/Throwable;)Ljava/lang/Boolean; +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$1$isPurchased$1$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$1$isPurchased$1$2;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$1$isPurchased$1$2;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$1$isPurchased$1$2;->invoke(Lcom/artemchep/keyguard/common/model/RichResult;)Ljava/lang/Boolean; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$1$isPurchased$1$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$1$isPurchased$1$3; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$1$isPurchased$1$3;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$1$isPurchased$1$3;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$lambda$3$$inlined$mapNotNull$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$lambda$3$$inlined$mapNotNull$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$lambda$3$$inlined$mapNotNull$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$lambda$3$$inlined$mapNotNull$1$2; +PLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$lambda$3$$inlined$mapNotNull$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$lambda$3$$inlined$mapNotNull$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$lambda$3$$inlined$mapNotNull$1$2$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$lambda$3$$inlined$mapNotNull$1$2$1;->(Lcom/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl$upstreamStatusFlow$lambda$3$$inlined$mapNotNull$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/common/usecase/impl/GetScreenStateImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetScreenStateImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetScreenStateImpl;->(Lcom/artemchep/keyguard/common/service/state/StateRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetScreenStateImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetScreenStateImpl;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetScreenStateImpl;->invoke(Ljava/lang/String;)Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetScreenStateImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetScreenStateImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetSuggestionsImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetSuggestionsImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetSuggestionsImpl;->(Ljava/util/List;Lcom/artemchep/keyguard/common/usecase/CipherUrlCheck;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetSuggestionsImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/common/usecase/impl/GetSuggestionsImpl$special$$inlined$allInstances$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetSuggestionsImpl$special$$inlined$allInstances$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetSuggestionsImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetSuggestionsImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetThemeImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetThemeImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetThemeImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetThemeImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetThemeImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetThemeImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetThemeImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetThemeImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetThemeUseAmoledDarkImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetThemeUseAmoledDarkImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetThemeUseAmoledDarkImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetThemeUseAmoledDarkImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetThemeUseAmoledDarkImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetThemeUseAmoledDarkImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetThemeUseAmoledDarkImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetThemeUseAmoledDarkImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetTotpCodeImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetTotpCodeImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetTotpCodeImpl;->(Lcom/artemchep/keyguard/common/service/totp/TotpService;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetTotpCodeImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/common/usecase/impl/GetTotpCodeImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetTotpCodeImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetUseExternalBrowserImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetUseExternalBrowserImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetUseExternalBrowserImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetUseExternalBrowserImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetUseExternalBrowserImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetUseExternalBrowserImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetUseExternalBrowserImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetUseExternalBrowserImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;Lcom/artemchep/keyguard/common/usecase/GetVaultPersist;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl$sharedFlow$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl$sharedFlow$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl$sharedFlow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl$sharedFlow$1;->invoke(ZZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl$sharedFlow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetVaultPersistImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultPersistImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultPersistImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultPersistImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultPersistImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultPersistImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetVaultPersistImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultPersistImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl;->(Lorg/kodein/di/DI;Lcom/artemchep/keyguard/common/service/vault/SessionReadWriteRepository;Lcom/artemchep/keyguard/common/service/vault/KeyReadWriteRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl;->access$getKeyReadWriteRepository$p(Lcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl;)Lcom/artemchep/keyguard/common/service/vault/KeyReadWriteRepository; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl;->access$getSessionReadWriteRepository$p(Lcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl;)Lcom/artemchep/keyguard/common/service/vault/SessionReadWriteRepository; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$Companion; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$Companion;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$sharedFlow$1$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$sharedFlow$1$2;->(Lcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$sharedFlow$1$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$sharedFlow$1$2;->invoke(Lcom/artemchep/keyguard/common/model/MasterSession;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$sharedFlow$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$sharedFlow$1$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$sharedFlow$lambda$2$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$sharedFlow$lambda$2$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$sharedFlow$lambda$2$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$sharedFlow$lambda$2$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$sharedFlow$lambda$2$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$sharedFlow$lambda$2$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$sharedFlow$lambda$2$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$sharedFlow$lambda$2$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$sharedFlow$lambda$2$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$special$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$special$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$special$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$special$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$special$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetWebsiteIconsImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetWebsiteIconsImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetWebsiteIconsImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetWebsiteIconsImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetWebsiteIconsImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetWebsiteIconsImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/usecase/impl/GetWebsiteIconsImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetWebsiteIconsImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/GetWriteAccessImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetWriteAccessImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetWriteAccessImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/GetWriteAccessImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/common/usecase/impl/GetWriteAccessImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/GetWriteAccessImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/MessageHubImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/MessageHubImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/MessageHubImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/MessageHubImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/MessageHubImpl;->register(Ljava/lang/String;Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function0; +Lcom/artemchep/keyguard/common/usecase/impl/MessageHubImpl$Entry; +HSPLcom/artemchep/keyguard/common/usecase/impl/MessageHubImpl$Entry;->(Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V +Lcom/artemchep/keyguard/common/usecase/impl/MessageHubImpl$register$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/MessageHubImpl$register$1;->(Lcom/artemchep/keyguard/common/usecase/impl/MessageHubImpl;Lcom/artemchep/keyguard/common/usecase/impl/MessageHubImpl$Entry;)V +Lcom/artemchep/keyguard/common/usecase/impl/PasskeyTargetCheckImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/PasskeyTargetCheckImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/PasskeyTargetCheckImpl;->(Lcom/artemchep/keyguard/common/service/tld/TldService;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/PasskeyTargetCheckImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/common/usecase/impl/PasskeyTargetCheckImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/PasskeyTargetCheckImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/PutCachePremiumImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/PutCachePremiumImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/PutCachePremiumImpl;->(Lcom/artemchep/keyguard/common/service/settings/SettingsReadWriteRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/PutCachePremiumImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/PutCachePremiumImpl;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/PutCachePremiumImpl;->invoke(Z)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/usecase/impl/PutCachePremiumImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/PutCachePremiumImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/PutScreenStateImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/PutScreenStateImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/PutScreenStateImpl;->(Lcom/artemchep/keyguard/common/service/state/StateRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/PutScreenStateImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/PutScreenStateImpl;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/PutScreenStateImpl;->invoke(Ljava/lang/String;Ljava/util/Map;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/usecase/impl/PutScreenStateImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/PutScreenStateImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl;->(Lcom/artemchep/keyguard/common/service/vault/SessionReadWriteRepository;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl;->access$getSessionReadWriteRepository$p(Lcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl;)Lcom/artemchep/keyguard/common/service/vault/SessionReadWriteRepository; +HSPLcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl;->invoke(Lcom/artemchep/keyguard/common/model/MasterSession;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl$invoke$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl$invoke$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl;Lcom/artemchep/keyguard/common/model/MasterSession;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl$invoke$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl$invoke$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl$invoke$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl$invoke$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->(Lorg/kodein/di/DI;Lcom/artemchep/keyguard/common/usecase/BiometricStatusUseCase;Lcom/artemchep/keyguard/common/usecase/GetVaultSession;Lcom/artemchep/keyguard/common/usecase/PutVaultSession;Lcom/artemchep/keyguard/common/usecase/DisableBiometric;Lcom/artemchep/keyguard/common/service/vault/FingerprintReadWriteRepository;Lcom/artemchep/keyguard/common/service/vault/SessionMetadataReadWriteRepository;Lcom/artemchep/keyguard/common/usecase/GetBiometricRemainingDuration;Lcom/artemchep/keyguard/common/usecase/BiometricKeyEncryptUseCase;Lcom/artemchep/keyguard/common/usecase/BiometricKeyDecryptUseCase;Lcom/artemchep/keyguard/common/usecase/AuthConfirmMasterKeyUseCase;Lcom/artemchep/keyguard/common/usecase/AuthGenerateMasterKeyUseCase;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->access$create(Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;Lcom/artemchep/keyguard/common/model/AuthResult;Lcom/artemchep/keyguard/common/model/FingerprintBiometric;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->access$createCreateVaultState(Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;Lcom/artemchep/keyguard/common/model/BiometricStatus;)Lcom/artemchep/keyguard/common/model/VaultState; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->access$createMainVaultState(Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;Lcom/artemchep/keyguard/common/model/Fingerprint;Lcom/artemchep/keyguard/common/model/BiometricStatus;Lcom/artemchep/keyguard/common/model/MasterKey;Lorg/kodein/di/DI;)Lcom/artemchep/keyguard/common/model/VaultState; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->access$createUnlockVaultState(Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;Lcom/artemchep/keyguard/common/model/Fingerprint;Lcom/artemchep/keyguard/common/model/BiometricStatus;Ljava/lang/String;)Lcom/artemchep/keyguard/common/model/VaultState; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->access$getDi$p(Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;)Lorg/kodein/di/DI; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->access$getGenerateMasterKey$p(Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->access$unlock(Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;Lcom/artemchep/keyguard/common/model/MasterKey;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->access$writeLastPasswordUseTimestamp(Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->create(Lcom/artemchep/keyguard/common/model/AuthResult;Lcom/artemchep/keyguard/common/model/FingerprintBiometric;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->createCreateVaultState(Lcom/artemchep/keyguard/common/model/BiometricStatus;)Lcom/artemchep/keyguard/common/model/VaultState; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->createMainVaultState(Lcom/artemchep/keyguard/common/model/Fingerprint;Lcom/artemchep/keyguard/common/model/BiometricStatus;Lcom/artemchep/keyguard/common/model/MasterKey;Lorg/kodein/di/DI;)Lcom/artemchep/keyguard/common/model/VaultState; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->createUnlockVaultState(Lcom/artemchep/keyguard/common/model/Fingerprint;Lcom/artemchep/keyguard/common/model/BiometricStatus;Ljava/lang/String;)Lcom/artemchep/keyguard/common/model/VaultState; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->getBiometricStatusFlow()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->invoke()Lkotlinx/coroutines/flow/SharedFlow; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->unlock(Lcom/artemchep/keyguard/common/model/MasterKey;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;->writeLastPasswordUseTimestamp()Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$ComplexBiometricStatus; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$ComplexBiometricStatus;->(Lcom/artemchep/keyguard/common/model/BiometricStatus;Lcom/artemchep/keyguard/common/model/BiometricStatus;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$ComplexBiometricStatus;->getForCreate()Lcom/artemchep/keyguard/common/model/BiometricStatus; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$ComplexBiometricStatus;->getForUnlock()Lcom/artemchep/keyguard/common/model/BiometricStatus; +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$create$$inlined$flatMap$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$create$$inlined$flatMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;Lcom/artemchep/keyguard/common/model/AuthResult;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$create$$inlined$flatMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$create$$inlined$flatMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$create$$inlined$flatMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$create$$inlined$flatMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createCreateVaultState$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createCreateVaultState$1;->(Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createCreateVaultState$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createCreateVaultState$1;->invoke(Ljava/lang/String;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createCreateVaultState$1$invoke$$inlined$flatMap$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createCreateVaultState$1$invoke$$inlined$flatMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createCreateVaultState$1$invoke$$inlined$flatMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createCreateVaultState$1$invoke$$inlined$flatMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createCreateVaultState$1$invoke$$inlined$flatMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createCreateVaultState$1$invoke$$inlined$flatMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createCreateVaultState$1$invoke$$inlined$flatTap$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createCreateVaultState$1$invoke$$inlined$flatTap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createCreateVaultState$1$invoke$$inlined$flatTap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createCreateVaultState$1$invoke$$inlined$flatTap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createCreateVaultState$1$invoke$$inlined$flatTap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createCreateVaultState$1$invoke$$inlined$flatTap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createMainVaultState$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createMainVaultState$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createMainVaultState$getCreateIo$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createMainVaultState$getCreateIo$1;->(Lkotlin/jvm/functions/Function1;Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;Lkotlin/Lazy;)V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createMainVaultState$unlockMasterKey$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createMainVaultState$unlockMasterKey$1;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createMainVaultState$unlockMasterKey$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1;->(Lkotlin/jvm/functions/Function1;Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1;->invoke(Ljava/lang/String;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$flatMap$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$flatMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$flatMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$flatMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$flatMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$flatMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$flatTap$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$flatTap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$flatTap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$flatTap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$flatTap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$flatTap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$map$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$map$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$map$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$map$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$map$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$1$invoke$$inlined$map$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$unlockMasterKey$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$unlockMasterKey$1;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$unlockMasterKey$1;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$unlockMasterKey$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$createUnlockVaultState$unlockMasterKey$1;->invoke-xshU9yM(Ljava/lang/String;)[B +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$generateMasterKey$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$generateMasterKey$1;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$generateMasterKey$1;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$generateMasterKey$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$generateMasterKey$1;->invoke-xshU9yM(Ljava/lang/String;)[B +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$getBiometricStatusFlow$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$getBiometricStatusFlow$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$getBiometricStatusFlow$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$getBiometricStatusFlow$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$getBiometricStatusFlow$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$getBiometricStatusFlow$lambda$4$$inlined$map$3; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$getBiometricStatusFlow$lambda$4$$inlined$map$3;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/common/model/BiometricStatus;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$getBiometricStatusFlow$lambda$4$$inlined$map$3;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$getBiometricStatusFlow$lambda$4$$inlined$map$3$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$getBiometricStatusFlow$lambda$4$$inlined$map$3$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/common/model/BiometricStatus;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$getBiometricStatusFlow$lambda$4$$inlined$map$3$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$getBiometricStatusFlow$lambda$4$$inlined$map$3$2$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$getBiometricStatusFlow$lambda$4$$inlined$map$3$2$1;->(Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$getBiometricStatusFlow$lambda$4$$inlined$map$3$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$sharedFlow$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$sharedFlow$1;->(Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$sharedFlow$1;->invoke(Lcom/artemchep/keyguard/common/model/Fingerprint;Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$ComplexBiometricStatus;Lcom/artemchep/keyguard/common/model/MasterSession;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$sharedFlow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$sharedFlow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$10; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$10;->()V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$11; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$11;->()V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$4; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$4;->()V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$5; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$5;->()V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$6; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$6;->()V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$7; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$7;->()V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$8; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$8;->()V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$9; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$special$$inlined$instance$default$9;->()V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$unlock$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$unlock$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl;Lcom/artemchep/keyguard/common/model/MasterKey;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$unlock$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$unlock$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$unlock$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$unlock$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$unlock$1$moduleDi$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$unlock$1$moduleDi$1;->(Lcom/artemchep/keyguard/common/model/MasterKey;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$unlock$1$moduleDi$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$unlock$1$moduleDi$1;->invoke(Lorg/kodein/di/DI$Builder;)V +Lcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$unlock$lambda$12$$inlined$subDI$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$unlock$lambda$12$$inlined$subDI$1;->(Lorg/kodein/di/DI;Lorg/kodein/di/Copy;Lorg/kodein/di/DI$Module;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$unlock$lambda$12$$inlined$subDI$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl$unlock$lambda$12$$inlined$subDI$1;->invoke(Lorg/kodein/di/DI$MainBuilder;)V +Lcom/artemchep/keyguard/common/usecase/impl/WindowCoroutineScopeImpl; +HSPLcom/artemchep/keyguard/common/usecase/impl/WindowCoroutineScopeImpl;->()V +HSPLcom/artemchep/keyguard/common/usecase/impl/WindowCoroutineScopeImpl;->(Lkotlinx/coroutines/CoroutineScope;Lcom/artemchep/keyguard/common/usecase/ShowMessage;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/WindowCoroutineScopeImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/common/usecase/impl/WindowCoroutineScopeImpl;->getCoroutineContext()Lkotlin/coroutines/CoroutineContext; +Lcom/artemchep/keyguard/common/usecase/impl/WindowCoroutineScopeImpl$special$$inlined$CoroutineExceptionHandler$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/WindowCoroutineScopeImpl$special$$inlined$CoroutineExceptionHandler$1;->(Lkotlinx/coroutines/CoroutineExceptionHandler$Key;Lcom/artemchep/keyguard/common/usecase/impl/WindowCoroutineScopeImpl;)V +Lcom/artemchep/keyguard/common/usecase/impl/WindowCoroutineScopeImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/common/usecase/impl/WindowCoroutineScopeImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/common/util/flow/EventFlow; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow;->()V +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow;->(Lkotlin/coroutines/CoroutineContext;)V +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow;->(Lkotlin/coroutines/CoroutineContext;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow;->access$getChannels$p(Lcom/artemchep/keyguard/common/util/flow/EventFlow;)Ljava/util/Queue; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow;->asFlow()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow;->collect$suspendImpl(Lcom/artemchep/keyguard/common/util/flow/EventFlow;Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow;->emit(Ljava/lang/Object;)V +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow;->getMonitor()Lcom/artemchep/keyguard/common/util/flow/EventFlow; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow;->onActive()V +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow;->onInactive()V +Lcom/artemchep/keyguard/common/util/flow/EventFlow$asFlow$1; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow$asFlow$1;->(Lcom/artemchep/keyguard/common/util/flow/EventFlow;)V +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow$asFlow$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow$asFlow$1;->invoke(Lkotlinx/coroutines/channels/SendChannel;)V +Lcom/artemchep/keyguard/common/util/flow/EventFlow$asFlow$2; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow$asFlow$2;->(Lcom/artemchep/keyguard/common/util/flow/EventFlow;)V +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow$asFlow$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow$asFlow$2;->invoke(Lkotlinx/coroutines/channels/SendChannel;)V +Lcom/artemchep/keyguard/common/util/flow/EventFlow$emit$1; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow$emit$1;->(Ljava/util/List;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow$emit$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlow$emit$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/util/flow/EventFlowKt; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlowKt;->access$flowWithLifecycle(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlowKt;->flowWithLifecycle(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/common/util/flow/EventFlowKt$flowWithLifecycle$1; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlowKt$flowWithLifecycle$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/util/flow/EventFlowKt$flowWithLifecycle$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlowKt$flowWithLifecycle$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlowKt$flowWithLifecycle$1;->invoke(Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlowKt$flowWithLifecycle$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/util/flow/EventFlowKt$flowWithLifecycle$1$1$1; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlowKt$flowWithLifecycle$1$1$1;->(Lkotlinx/coroutines/CancellableContinuation;)V +HSPLcom/artemchep/keyguard/common/util/flow/EventFlowKt$flowWithLifecycle$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/util/flow/EventFlowKt$flowWithLifecycle$1$1$1;->invoke(Ljava/lang/Throwable;)V +Lcom/artemchep/keyguard/common/util/flow/ReadonlyStateFlow; +HSPLcom/artemchep/keyguard/common/util/flow/ReadonlyStateFlow;->(Lkotlinx/coroutines/flow/StateFlow;Lkotlinx/coroutines/Job;)V +HSPLcom/artemchep/keyguard/common/util/flow/ReadonlyStateFlow;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/util/flow/ReadonlyStateFlow;->getValue()Ljava/lang/Object; +Lcom/artemchep/keyguard/common/util/flow/StateInKt; +HSPLcom/artemchep/keyguard/common/util/flow/StateInKt;->()V +HSPLcom/artemchep/keyguard/common/util/flow/StateInKt;->launchSharing(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/MutableStateFlow;Lkotlinx/coroutines/flow/SharingStarted;)Lkotlinx/coroutines/Job; +HSPLcom/artemchep/keyguard/common/util/flow/StateInKt;->persistingStateIn(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/flow/SharingStarted;Ljava/lang/Object;)Lkotlinx/coroutines/flow/StateFlow; +Lcom/artemchep/keyguard/common/util/flow/StateInKt$launchSharing$1; +HSPLcom/artemchep/keyguard/common/util/flow/StateInKt$launchSharing$1;->(Lkotlinx/coroutines/flow/SharingStarted;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/MutableStateFlow;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/util/flow/StateInKt$launchSharing$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/util/flow/StateInKt$launchSharing$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/util/flow/StateInKt$launchSharing$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/util/flow/StateInKt$launchSharing$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/util/flow/StateInKt$launchSharing$1$2; +HSPLcom/artemchep/keyguard/common/util/flow/StateInKt$launchSharing$1$2;->(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/MutableStateFlow;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/common/util/flow/StateInKt$launchSharing$1$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/common/util/flow/StateInKt$launchSharing$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/util/flow/StateInKt$launchSharing$1$2;->invoke(Lkotlinx/coroutines/flow/SharingCommand;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/common/util/flow/StateInKt$launchSharing$1$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/common/util/flow/StateInKt$launchSharing$1$2$WhenMappings; +HSPLcom/artemchep/keyguard/common/util/flow/StateInKt$launchSharing$1$2$WhenMappings;->()V +Lcom/artemchep/keyguard/copy/Base32ServiceJvm; +HSPLcom/artemchep/keyguard/copy/Base32ServiceJvm;->()V +HSPLcom/artemchep/keyguard/copy/Base32ServiceJvm;->()V +HSPLcom/artemchep/keyguard/copy/Base32ServiceJvm;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/copy/Base64ServiceJvm; +HSPLcom/artemchep/keyguard/copy/Base64ServiceJvm;->()V +HSPLcom/artemchep/keyguard/copy/Base64ServiceJvm;->()V +HSPLcom/artemchep/keyguard/copy/Base64ServiceJvm;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/copy/Base64ServiceJvm;->decode(Ljava/lang/String;)[B +HSPLcom/artemchep/keyguard/copy/Base64ServiceJvm;->decode([B)[B +HSPLcom/artemchep/keyguard/copy/Base64ServiceJvm;->encode([B)[B +Lcom/artemchep/keyguard/copy/ClearDataAndroid; +HSPLcom/artemchep/keyguard/copy/ClearDataAndroid;->()V +HSPLcom/artemchep/keyguard/copy/ClearDataAndroid;->(Landroid/app/Application;)V +HSPLcom/artemchep/keyguard/copy/ClearDataAndroid;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/copy/ClearDataAndroid$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/copy/ClearDataAndroid$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/copy/ClipboardServiceAndroid; +HSPLcom/artemchep/keyguard/copy/ClipboardServiceAndroid;->()V +HSPLcom/artemchep/keyguard/copy/ClipboardServiceAndroid;->(Landroid/app/Application;Landroid/content/ClipboardManager;)V +HSPLcom/artemchep/keyguard/copy/ClipboardServiceAndroid;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/copy/ClipboardServiceAndroid$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/copy/ClipboardServiceAndroid$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/copy/ClipboardServiceAndroid$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/copy/ClipboardServiceAndroid$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/copy/ConnectivityServiceAndroid; +HSPLcom/artemchep/keyguard/copy/ConnectivityServiceAndroid;->()V +HSPLcom/artemchep/keyguard/copy/ConnectivityServiceAndroid;->(Landroid/content/Context;)V +HSPLcom/artemchep/keyguard/copy/ConnectivityServiceAndroid;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/copy/ConnectivityServiceAndroid$availableFlow$1; +HSPLcom/artemchep/keyguard/copy/ConnectivityServiceAndroid$availableFlow$1;->(Lcom/artemchep/keyguard/copy/ConnectivityServiceAndroid;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/copy/ConnectivityServiceAndroid$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/copy/ConnectivityServiceAndroid$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/copy/DateFormatterAndroid; +HSPLcom/artemchep/keyguard/copy/DateFormatterAndroid;->()V +HSPLcom/artemchep/keyguard/copy/DateFormatterAndroid;->()V +HSPLcom/artemchep/keyguard/copy/DateFormatterAndroid;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/copy/GetPasswordStrengthJvm; +HSPLcom/artemchep/keyguard/copy/GetPasswordStrengthJvm;->()V +HSPLcom/artemchep/keyguard/copy/GetPasswordStrengthJvm;->(Lcom/artemchep/keyguard/common/service/wordlist/WordlistService;)V +HSPLcom/artemchep/keyguard/copy/GetPasswordStrengthJvm;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/copy/GetPasswordStrengthJvm$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/copy/GetPasswordStrengthJvm$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/copy/GetPasswordStrengthJvm$zxcvbn$2; +HSPLcom/artemchep/keyguard/copy/GetPasswordStrengthJvm$zxcvbn$2;->()V +HSPLcom/artemchep/keyguard/copy/GetPasswordStrengthJvm$zxcvbn$2;->()V +Lcom/artemchep/keyguard/copy/LinkInfoExtractorAndroid; +HSPLcom/artemchep/keyguard/copy/LinkInfoExtractorAndroid;->()V +HSPLcom/artemchep/keyguard/copy/LinkInfoExtractorAndroid;->(Landroid/content/pm/PackageManager;)V +Lcom/artemchep/keyguard/copy/LinkInfoExtractorExecute; +Lcom/artemchep/keyguard/copy/LinkInfoExtractorLaunch; +Lcom/artemchep/keyguard/copy/LogRepositoryAndroid; +HSPLcom/artemchep/keyguard/copy/LogRepositoryAndroid;->()V +HSPLcom/artemchep/keyguard/copy/LogRepositoryAndroid;->()V +HSPLcom/artemchep/keyguard/copy/LogRepositoryAndroid;->add(Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/common/service/logging/LogLevel;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/copy/LogRepositoryAndroid;->post(Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/common/service/logging/LogLevel;)V +Lcom/artemchep/keyguard/copy/LogRepositoryAndroid$add$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/copy/LogRepositoryAndroid$add$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/copy/LogRepositoryAndroid$add$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/copy/LogRepositoryAndroid$add$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/copy/LogRepositoryAndroid$add$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/copy/LogRepositoryAndroid$add$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/copy/PermissionServiceAndroid; +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid;->()V +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid;->(Landroid/content/Context;)V +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid;->access$checkPermission(Lcom/artemchep/keyguard/copy/PermissionServiceAndroid;Ljava/lang/String;)Lcom/artemchep/keyguard/common/service/permission/PermissionState; +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid;->checkPermission(Ljava/lang/String;)Lcom/artemchep/keyguard/common/service/permission/PermissionState; +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid;->getState(Lcom/artemchep/keyguard/common/service/permission/Permission;)Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/copy/PermissionServiceAndroid$Companion; +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid$Companion;->()V +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/copy/PermissionServiceAndroid$checkPermission$1; +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid$checkPermission$1;->(Ljava/lang/Object;)V +Lcom/artemchep/keyguard/copy/PermissionServiceAndroid$getState$$inlined$map$1; +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid$getState$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/copy/PermissionServiceAndroid;Lcom/artemchep/keyguard/common/service/permission/Permission;)V +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid$getState$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/copy/PermissionServiceAndroid$getState$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid$getState$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/copy/PermissionServiceAndroid;Lcom/artemchep/keyguard/common/service/permission/Permission;)V +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid$getState$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/copy/PermissionServiceAndroid$getState$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid$getState$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/copy/PermissionServiceAndroid$getState$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/copy/PermissionServiceAndroid$getState$1; +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid$getState$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid$getState$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid$getState$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid$getState$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid$getState$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/copy/PermissionServiceAndroid$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/copy/PermissionServiceAndroid$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/copy/PowerServiceAndroid; +HSPLcom/artemchep/keyguard/copy/PowerServiceAndroid;->()V +HSPLcom/artemchep/keyguard/copy/PowerServiceAndroid;->(Landroid/app/Application;)V +HSPLcom/artemchep/keyguard/copy/PowerServiceAndroid;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/copy/PowerServiceAndroid;->getScreenState()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/copy/PowerServiceAndroid;->getScreenState()Lkotlinx/coroutines/flow/SharedFlow; +Lcom/artemchep/keyguard/copy/PowerServiceAndroid$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/copy/PowerServiceAndroid$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/copy/QueueSyncAllAndroid; +HSPLcom/artemchep/keyguard/copy/QueueSyncAllAndroid;->()V +HSPLcom/artemchep/keyguard/copy/QueueSyncAllAndroid;->(Landroid/content/Context;)V +HSPLcom/artemchep/keyguard/copy/QueueSyncAllAndroid;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/copy/QueueSyncAllAndroid;->access$getContext$p(Lcom/artemchep/keyguard/copy/QueueSyncAllAndroid;)Landroid/content/Context; +HSPLcom/artemchep/keyguard/copy/QueueSyncAllAndroid;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/copy/QueueSyncAllAndroid;->invoke()Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/copy/QueueSyncAllAndroid$invoke$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/copy/QueueSyncAllAndroid$invoke$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/copy/QueueSyncAllAndroid;)V +HSPLcom/artemchep/keyguard/copy/QueueSyncAllAndroid$invoke$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/copy/QueueSyncAllAndroid$invoke$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/copy/QueueSyncAllAndroid$invoke$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/copy/QueueSyncAllAndroid$invoke$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/copy/QueueSyncAllAndroid$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/copy/QueueSyncAllAndroid$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/copy/QueueSyncByIdAndroid; +HSPLcom/artemchep/keyguard/copy/QueueSyncByIdAndroid;->()V +HSPLcom/artemchep/keyguard/copy/QueueSyncByIdAndroid;->(Landroid/content/Context;)V +HSPLcom/artemchep/keyguard/copy/QueueSyncByIdAndroid;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/copy/QueueSyncByIdAndroid$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/copy/QueueSyncByIdAndroid$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/copy/SharedPreferencesStoreFactory; +Lcom/artemchep/keyguard/copy/SharedPreferencesStoreFactoryDefault; +HSPLcom/artemchep/keyguard/copy/SharedPreferencesStoreFactoryDefault;->()V +HSPLcom/artemchep/keyguard/copy/SharedPreferencesStoreFactoryDefault;->()V +HSPLcom/artemchep/keyguard/copy/SharedPreferencesStoreFactoryDefault;->getStore(Lorg/kodein/di/DI;Lcom/artemchep/keyguard/common/service/Files;)Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStore; +Lcom/artemchep/keyguard/copy/SharedPreferencesStoreFactoryDefault$getStore$$inlined$instance$1; +HSPLcom/artemchep/keyguard/copy/SharedPreferencesStoreFactoryDefault$getStore$$inlined$instance$1;->()V +Lcom/artemchep/keyguard/copy/SharedPreferencesStoreFactoryDefault$getStore$$inlined$instance$2; +HSPLcom/artemchep/keyguard/copy/SharedPreferencesStoreFactoryDefault$getStore$$inlined$instance$2;->()V +Lcom/artemchep/keyguard/copy/SubscriptionServiceAndroid; +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid;->()V +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid;->(Lcom/artemchep/keyguard/billing/BillingManager;)V +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid;->access$onEachAcknowledge(Lcom/artemchep/keyguard/copy/SubscriptionServiceAndroid;Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/billing/BillingConnection;)Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid;->getReceiptFlow()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid;->onEachAcknowledge(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/billing/BillingConnection;)Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid;->purchased()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$Companion; +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$Companion;->()V +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$getReceiptFlow$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$getReceiptFlow$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/copy/SubscriptionServiceAndroid;)V +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$getReceiptFlow$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$getReceiptFlow$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$getReceiptFlow$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$getReceiptFlow$1$1; +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$getReceiptFlow$1$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$getReceiptFlow$1$1;->invoke(Lcom/artemchep/keyguard/common/model/RichResult;Lcom/artemchep/keyguard/common/model/RichResult;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$getReceiptFlow$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$getReceiptFlow$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$onEachAcknowledge$1; +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$onEachAcknowledge$1;->(Lcom/artemchep/keyguard/copy/SubscriptionServiceAndroid;Lcom/artemchep/keyguard/billing/BillingConnection;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$onEachAcknowledge$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$onEachAcknowledge$1;->invoke(Lcom/artemchep/keyguard/common/model/RichResult;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$onEachAcknowledge$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$onEachAcknowledge$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$purchased$$inlined$map$1; +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$purchased$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$purchased$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$purchased$$inlined$map$1$2; +PLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$purchased$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$purchased$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$purchased$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$purchased$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$purchased$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/copy/SubscriptionServiceAndroid$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/copy/TextServiceAndroid; +HSPLcom/artemchep/keyguard/copy/TextServiceAndroid;->()V +HSPLcom/artemchep/keyguard/copy/TextServiceAndroid;->(Landroid/content/Context;)V +HSPLcom/artemchep/keyguard/copy/TextServiceAndroid;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/copy/TextServiceAndroid$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/copy/TextServiceAndroid$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/copy/download/DownloadClientJvm; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt;->diFingerprintRepositoryModule()Lorg/kodein/di/DI$Module; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1;->invoke(Lorg/kodein/di/DI$Builder;)V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$1; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$1;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$1;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$10; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$10;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$10;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$10;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$10;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetPurchased; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$11; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$11;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$11;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$11;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$11;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/CleanUpAttachment; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$12; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$12;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$12;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$12;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$12;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/clipboard/ClipboardService; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$13; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$13;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$13;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$13;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$13;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/connectivity/ConnectivityService; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$14; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$14;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$14;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$14;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$14;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/power/PowerService; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$15; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$15;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$15;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$15;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$15;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/copy/PermissionServiceAndroid; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$16; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$16;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$16;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$16;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$16;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/permission/PermissionService; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$16$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$16$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$17; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$17;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$17;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$17;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$17;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/copy/LinkInfoExtractorAndroid; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$17$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$17$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$18; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$18;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$18;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$19; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$19;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$19;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$2; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$2;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$2;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$2;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/BiometricStatusUseCase; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$20; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$20;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$20;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$20;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$20;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/text/TextService; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$21; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$21;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$21;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$22; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$22;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$22;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$22;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$22;->invoke(Lorg/kodein/di/DirectDI;)Landroid/content/pm/PackageManager; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$22$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$22$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$23; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$23;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$23;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$24; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$24;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$24;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$25; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$25;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$25;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$25;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$25;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/android/downloader/journal/DownloadRepository; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$26; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$26;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$26;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$27; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$27;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$27;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$27;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$27;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/subscription/SubscriptionService; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$28; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$28;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$28;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$28;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$28;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/ClearData; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$29; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$29;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$29;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$29;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$29;->invoke(Lorg/kodein/di/bindings/BindingDI;Lcom/artemchep/keyguard/common/service/Files;)Lcom/artemchep/keyguard/common/service/keyvalue/KeyValueStore; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$29$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$29$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$3; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$3;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$3;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$30; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$30;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$30;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$30;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$30;->invoke(Lorg/kodein/di/bindings/BindingDI;Lcom/artemchep/keyguard/common/service/Files;)Ldb_key_value/crypto_prefs/SecurePrefKeyValueStore; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$30$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$30$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$31; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$31;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$31;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$31;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$31;->invoke(Lorg/kodein/di/bindings/BindingDI;Lcom/artemchep/keyguard/common/service/Files;)Ldb_key_value/shared_prefs/SharedPrefsKeyValueStore; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$31$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$31$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$32; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$32;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$32;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$32;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$32;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/copy/SharedPreferencesStoreFactory; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$33; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$33;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$33;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$33;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$33;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$33$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$33$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$33$invoke$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$33$invoke$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$34; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$34;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$34;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$34;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$34;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/logging/LogRepository; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$4; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$4;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$4;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$4;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$4;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetBiometricRemainingDuration; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$5; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$5;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$5;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$5;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$5;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/DisableBiometric; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$6; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$6;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$6;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$7; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$7;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$7;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$8; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$8;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$8;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$9; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$9;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$9;->()V +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$9;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$9;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetSuggestions; +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bind$default$1; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bind$default$1;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bind$default$2; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bind$default$2;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bind$default$3; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bind$default$3;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindProvider$default$1; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindProvider$default$1;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindProvider$default$2; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindProvider$default$2;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindProvider$default$3; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindProvider$default$3;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$1; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$1;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$10; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$10;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$11; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$11;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$12; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$12;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$13; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$13;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$14; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$14;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$15; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$15;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$16; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$16;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$17; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$17;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$18; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$18;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$19; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$19;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$2; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$2;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$20; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$20;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$21; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$21;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$22; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$22;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$23; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$23;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$24; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$24;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$25; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$25;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$26; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$26;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$27; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$27;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$28; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$28;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$3; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$3;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$4; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$4;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$5; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$5;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$6; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$6;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$7; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$7;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$8; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$8;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$9; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$bindSingleton$default$9;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$factory$1; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$factory$1;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$factory$2; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$factory$2;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$multiton$default$1; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$multiton$default$1;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$multiton$default$2; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$multiton$default$2;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$multiton$default$3; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$multiton$default$3;->()V +Lcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$multiton$default$4; +HSPLcom/artemchep/keyguard/core/session/FingerprintRepositoryModuleKt$diFingerprintRepositoryModule$1$invoke$$inlined$multiton$default$4;->()V +Lcom/artemchep/keyguard/core/session/usecase/BiometricStatusUseCaseImpl; +HSPLcom/artemchep/keyguard/core/session/usecase/BiometricStatusUseCaseImpl;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/BiometricStatusUseCaseImpl;->(Landroid/app/Application;)V +HSPLcom/artemchep/keyguard/core/session/usecase/BiometricStatusUseCaseImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/core/session/usecase/BiometricStatusUseCaseImpl;->hasStrongBiometric()Z +HSPLcom/artemchep/keyguard/core/session/usecase/BiometricStatusUseCaseImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/BiometricStatusUseCaseImpl;->invoke()Lkotlinx/coroutines/flow/MutableStateFlow; +Lcom/artemchep/keyguard/core/session/usecase/BiometricStatusUseCaseImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/session/usecase/BiometricStatusUseCaseImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt;->createSubDi(Lorg/kodein/di/DI$Builder;Lcom/artemchep/keyguard/common/model/MasterKey;)V +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$$inlined$bindSingleton$default$1; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$$inlined$bindSingleton$default$1;->()V +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$$inlined$bindSingleton$default$2; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$$inlined$bindSingleton$default$2;->()V +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$$inlined$bindSingleton$default$3; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$$inlined$bindSingleton$default$3;->()V +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$$inlined$bindSingleton$default$4; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$$inlined$bindSingleton$default$4;->()V +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$1; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$1;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$1;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$1;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/QueueSyncAll; +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$2; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$2;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$2;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$2;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/QueueSyncById; +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$3; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$3;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$3;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$3;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/NotificationsWorker; +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4;->(Lcom/artemchep/keyguard/common/model/MasterKey;)V +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/core/store/DatabaseManager; +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$invoke$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$invoke$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$invoke$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$invoke$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$invoke$$inlined$instance$default$4; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$invoke$$inlined$instance$default$4;->()V +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$invoke$$inlined$instance$default$5; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$invoke$$inlined$instance$default$5;->()V +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$invoke$$inlined$instance$default$6; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$invoke$$inlined$instance$default$6;->()V +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$sqlManager$1; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$sqlManager$1;->(Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;)V +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$sqlManager$1;->invoke(Lcom/artemchep/keyguard/data/Database;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$sqlManager$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$sqlManager$1$2; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$sqlManager$1$2;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$sqlManager$1$2;->()V +Lcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$sqlManager$1$invoke$$inlined$flatMap$1; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$sqlManager$1$invoke$$inlined$flatMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager;Lcom/artemchep/keyguard/data/Database;)V +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$sqlManager$1$invoke$$inlined$flatMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$sqlManager$1$invoke$$inlined$flatMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$sqlManager$1$invoke$$inlined$flatMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/CreateSubDiKt$createSubDi$4$sqlManager$1$invoke$$inlined$flatMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2; +HSPLcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2;->(Landroid/content/Context;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2;->access$getContext$p(Lcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2;)Landroid/content/Context; +HSPLcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2;->access$getOnCreate$p(Lcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2;->create(Lcom/artemchep/keyguard/common/model/MasterKey;Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2$Callback; +HSPLcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2$Callback;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2$Callback;->onConfigure(Landroidx/sqlite/db/SupportSQLiteDatabase;)V +Lcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2$Helper; +PLcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2$Helper;->(Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/Database;Landroidx/sqlite/db/SupportSQLiteOpenHelper;)V +HSPLcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2$Helper;->getDatabase()Lcom/artemchep/keyguard/data/Database; +Lcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2$create$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2$create$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/common/model/MasterKey;Lcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2$create$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2$create$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2$create$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SqlManagerFile2$create$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt;->createSubDi2(Lorg/kodein/di/DI$Builder;Lcom/artemchep/keyguard/common/model/MasterKey;)V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$1; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$1;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$10; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$10;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$11; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$11;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$12; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$12;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$13; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$13;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$14; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$14;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$15; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$15;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$16; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$16;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$17; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$17;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$18; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$18;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$19; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$19;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$2; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$2;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$20; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$20;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$21; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$21;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$22; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$22;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$23; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$23;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$24; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$24;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$25; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$25;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$26; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$26;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$27; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$27;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$28; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$28;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$29; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$29;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$3; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$3;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$30; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$30;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$31; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$31;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$32; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$32;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$33; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$33;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$34; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$34;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$35; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$35;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$36; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$36;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$37; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$37;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$38; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$38;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$39; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$39;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$4; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$4;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$40; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$40;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$41; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$41;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$42; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$42;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$43; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$43;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$44; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$44;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$45; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$45;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$46; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$46;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$47; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$47;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$48; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$48;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$49; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$49;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$5; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$5;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$50; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$50;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$51; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$51;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$52; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$52;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$53; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$53;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$54; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$54;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$55; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$55;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$56; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$56;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$57; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$57;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$58; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$58;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$59; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$59;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$6; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$6;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$60; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$60;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$61; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$61;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$62; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$62;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$63; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$63;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$64; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$64;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$65; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$65;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$66; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$66;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$67; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$67;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$68; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$68;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$69; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$69;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$7; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$7;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$70; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$70;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$71; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$71;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$72; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$72;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$73; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$73;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$74; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$74;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$75; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$75;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$76; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$76;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$77; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$77;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$78; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$78;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$79; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$79;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$8; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$8;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$80; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$80;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$81; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$81;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$82; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$82;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$83; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$83;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$84; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$84;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$85; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$85;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$86; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$86;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$87; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$87;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$88; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$88;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$89; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$89;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$9; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$9;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$90; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$90;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$91; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$91;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$92; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$92;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$93; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$93;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$94; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$94;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$95; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$95;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$96; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$96;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$97; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$97;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$98; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$98;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$99; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$$inlined$bindSingleton$default$99;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$1; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$1;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$1;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$10; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$10;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$10;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$11; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$11;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$11;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$11;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$11;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetCiphers; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$12; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$12;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$12;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$13; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$13;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$13;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$13;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$13;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetCollections; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$14; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$14;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$14;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$14;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$14;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetOrganizations; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$15; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$15;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$15;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$16; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$16;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$16;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$16;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$16;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetFolders; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$17; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$17;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$17;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$17;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$17;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetFolderTree; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$18; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$18;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$18;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$19; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$19;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$19;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$19;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$19;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetProfiles; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$2; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$2;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$2;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$20; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$20;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$20;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$20;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$20;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetMetas; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$21; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$21;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$21;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$22; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$22;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$22;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$23; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$23;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$23;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$24; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$24;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$24;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$25; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$25;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$25;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$26; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$26;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$26;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$26;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$26;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$27; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$27;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$27;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$27;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$27;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyFolderById; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$28; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$28;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$28;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$29; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$29;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$29;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$29;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$29;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$3; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$3;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$3;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$30; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$30;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$30;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$30;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$30;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/TrashCipherById; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$31; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$31;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$31;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$32; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$32;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$32;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$32;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$32;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/RestoreCipherById; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$33; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$33;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$33;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$33;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$33;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/MoveCipherToFolderById; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$34; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$34;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$34;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$34;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$34;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/RemoveCipherById; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$35; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$35;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$35;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$36; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$36;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$36;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$37; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$37;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$37;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$37;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$37;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/ChangeCipherPasswordById; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$38; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$38;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$38;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$38;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$38;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/ChangeCipherNameById; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$39; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$39;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$39;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$4; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$4;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$4;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$40; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$40;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$40;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$41; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$41;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$41;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$42; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$42;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$42;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$42;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$42;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/CipherToolbox; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$43; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$43;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$43;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$44; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$44;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$44;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$45; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$45;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$45;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$45;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$45;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/CipherMerge; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$46; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$46;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$46;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$47; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$47;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$47;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$48; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$48;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$48;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$49; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$49;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$49;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$49;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$49;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/RenameFolderById; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$5; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$5;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$5;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$50; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$50;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$50;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$51; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$51;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$51;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$52; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$52;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$52;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$53; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$53;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$53;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$53;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$53;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/AddFolder; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$54; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$54;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$54;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$55; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$55;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$55;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$56; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$56;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$56;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$57; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$57;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$57;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$58; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$58;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$58;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$59; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$59;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$59;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$6; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$6;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$6;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$60; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$60;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$60;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$61; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$61;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$61;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$62; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$62;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$62;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$63; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$63;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$63;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$64; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$64;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$64;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$65; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$65;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$65;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$65;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$65;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetCipherOpenedHistory; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$66; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$66;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$66;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$67; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$67;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$67;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$68; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$68;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$68;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$68;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$68;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/android/downloader/journal/CipherHistoryOpenedRepository; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$69; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$69;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$69;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$7; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$7;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$7;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$7;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$7;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetAccounts; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$70; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$70;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$70;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$71; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$71;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$71;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$72; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$72;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$72;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$73; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$73;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$73;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$74; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$74;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$74;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$75; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$75;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$75;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$76; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$76;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$76;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$77; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$77;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$77;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$78; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$78;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$78;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$79; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$79;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$79;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$79;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$79;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/FavouriteCipherById; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$8; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$8;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$8;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$8;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$8;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetAccountStatus; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$80; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$80;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$80;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$80;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$80;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/RePromptCipherById; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$81; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$81;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$81;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$81;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$81;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/CopyCipherById; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$82; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$82;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$82;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$83; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$83;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$83;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$84; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$84;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$84;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$84;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$84;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/SyncAll; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$85; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$85;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$85;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$86; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$86;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$86;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$86;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$86;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByToken; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$87; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$87;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$87;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$87;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$87;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/WatchdogImpl; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$88; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$88;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$88;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$88;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$88;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/Watchdog; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$88$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$88$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$89; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$89;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$89;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$89;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$89;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/SupervisorRead; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$89$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$89$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$9; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$9;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$9;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$90; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$90;->(Lcom/artemchep/keyguard/common/model/MasterKey;)V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$91; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$91;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$91;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$91;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$91;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenTokenRepository; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$92; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$92;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$92;->()V +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$93; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$93;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$93;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$93;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$93;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenCipherRepository; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$94; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$94;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$94;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$94;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$94;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenCollectionRepository; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$95; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$95;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$95;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$95;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$95;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenOrganizationRepository; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$96; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$96;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$96;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$96;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$96;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenFolderRepository; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$97; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$97;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$97;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$97;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$97;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenProfileRepository; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$98; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$98;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$98;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$98;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$98;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenMetaRepository; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$99; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$99;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$99;->()V +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$99;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$99;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/core/store/DatabaseSyncer; +Lcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$99$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/session/usecase/SubDIKt$createSubDi2$99$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/store/BitwardenCipherToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/BitwardenCipherToStringAdapter;->(Lkotlinx/serialization/json/Json;)V +Lcom/artemchep/keyguard/core/store/BitwardenCollectionToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/BitwardenCollectionToStringAdapter;->(Lkotlinx/serialization/json/Json;)V +Lcom/artemchep/keyguard/core/store/BitwardenFolderToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/BitwardenFolderToStringAdapter;->(Lkotlinx/serialization/json/Json;)V +Lcom/artemchep/keyguard/core/store/BitwardenMetaToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/BitwardenMetaToStringAdapter;->(Lkotlinx/serialization/json/Json;)V +Lcom/artemchep/keyguard/core/store/BitwardenOrganizationToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/BitwardenOrganizationToStringAdapter;->(Lkotlinx/serialization/json/Json;)V +Lcom/artemchep/keyguard/core/store/BitwardenProfileToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/BitwardenProfileToStringAdapter;->(Lkotlinx/serialization/json/Json;)V +Lcom/artemchep/keyguard/core/store/BitwardenSendToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/BitwardenSendToStringAdapter;->(Lkotlinx/serialization/json/Json;)V +Lcom/artemchep/keyguard/core/store/BitwardenTokenToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/BitwardenTokenToStringAdapter;->(Lkotlinx/serialization/json/Json;)V +Lcom/artemchep/keyguard/core/store/DatabaseDispatcher; +HSPLcom/artemchep/keyguard/core/store/DatabaseDispatcher;->()V +HSPLcom/artemchep/keyguard/core/store/DatabaseDispatcher;->()V +Lcom/artemchep/keyguard/core/store/DatabaseManager; +Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;->()V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;->(Landroid/content/Context;Lkotlinx/serialization/json/Json;Ljava/lang/String;Lcom/artemchep/keyguard/common/model/MasterKey;)V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;->access$getApplicationContext$p(Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;)Landroid/content/Context; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;->access$getDbFileIo$p(Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;->access$getDbIo$p(Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;->access$getName$p(Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;->migrateIfExists(Lcom/artemchep/keyguard/data/Database;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$Companion; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$Companion;->()V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$migrateIfExists$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$migrateIfExists$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Lkotlin/coroutines/CoroutineContext;Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;Lcom/artemchep/keyguard/data/Database;)V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$migrateIfExists$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$migrateIfExists$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$migrateIfExists$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$migrateIfExists$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$migrateIfExists$$inlined$ioEffect$1$1; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$migrateIfExists$$inlined$ioEffect$1$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;Lcom/artemchep/keyguard/data/Database;)V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$migrateIfExists$$inlined$ioEffect$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$migrateIfExists$$inlined$ioEffect$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$effectMap$1; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$effectMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;)V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$effectMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$effectMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$effectMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$effectMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$ioEffect$1; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;)V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$retry$1; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$retry$1;->(Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function1;Lcom/artemchep/keyguard/core/store/DatabaseManagerAndroid;)V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$retry$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$retry$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$retry$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerAndroid$special$$inlined$retry$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl;->()V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl;->(Lcom/artemchep/keyguard/common/service/logging/LogRepository;Lkotlinx/serialization/json/Json;Lcom/artemchep/keyguard/core/store/SqlManager;Lcom/artemchep/keyguard/common/model/MasterKey;)V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl;->access$getBitwardenCipherToStringAdapter$p(Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl;)Lcom/artemchep/keyguard/core/store/BitwardenCipherToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl;->access$getBitwardenCollectionToStringAdapter$p(Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl;)Lcom/artemchep/keyguard/core/store/BitwardenCollectionToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl;->access$getBitwardenFolderToStringAdapter$p(Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl;)Lcom/artemchep/keyguard/core/store/BitwardenFolderToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl;->access$getBitwardenMetaToStringAdapter$p(Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl;)Lcom/artemchep/keyguard/core/store/BitwardenMetaToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl;->access$getBitwardenOrganizationToStringAdapter$p(Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl;)Lcom/artemchep/keyguard/core/store/BitwardenOrganizationToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl;->access$getBitwardenProfileToStringAdapter$p(Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl;)Lcom/artemchep/keyguard/core/store/BitwardenProfileToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl;->access$getBitwardenSendToStringAdapter$p(Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl;)Lcom/artemchep/keyguard/core/store/BitwardenSendToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl;->access$getBitwardenTokenToStringAdapter$p(Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl;)Lcom/artemchep/keyguard/core/store/BitwardenTokenToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl;->access$getHibpAccountBreachToStringAdapter$p(Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl;)Lcom/artemchep/keyguard/core/store/HibpAccountBreachToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl;->access$getMutex$cp()Lkotlinx/coroutines/sync/Mutex; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl;->access$getSqlManager$p(Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl;)Lcom/artemchep/keyguard/core/store/SqlManager; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl;->get()Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl;->mutate(Lkotlin/jvm/functions/Function2;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl$Companion; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$Companion;->()V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl$dbIo$1$databaseFactory$1; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$dbIo$1$databaseFactory$1;->(Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl;)V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$dbIo$1$databaseFactory$1;->invoke(Lapp/cash/sqldelight/db/SqlDriver;)Lcom/artemchep/keyguard/data/Database; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$dbIo$1$databaseFactory$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl$get$$inlined$map$1; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$get$$inlined$map$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$get$$inlined$map$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$get$$inlined$map$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$get$$inlined$map$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$get$$inlined$map$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl$mutate$$inlined$effectMap$1; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$mutate$$inlined$effectMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$mutate$$inlined$effectMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$mutate$$inlined$effectMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$mutate$$inlined$effectMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$mutate$$inlined$effectMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl$mutate$$inlined$effectMap$1$1; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$mutate$$inlined$effectMap$1$1;->(Ljava/lang/Object;Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$mutate$$inlined$effectMap$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$mutate$$inlined$effectMap$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl$special$$inlined$effectMap$1; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$special$$inlined$effectMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl;)V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$special$$inlined$effectMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$special$$inlined$effectMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$special$$inlined$effectMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$special$$inlined$effectMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/DatabaseManagerImpl$special$$inlined$retry$1; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$special$$inlined$retry$1;->(Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$special$$inlined$retry$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$special$$inlined$retry$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$special$$inlined$retry$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/DatabaseManagerImpl$special$$inlined$retry$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/DatabaseSyncer; +HSPLcom/artemchep/keyguard/core/store/DatabaseSyncer;->()V +HSPLcom/artemchep/keyguard/core/store/DatabaseSyncer;->(Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator;)V +Lcom/artemchep/keyguard/core/store/HibpAccountBreachToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/HibpAccountBreachToStringAdapter;->(Lkotlinx/serialization/json/Json;)V +Lcom/artemchep/keyguard/core/store/InstantToLongAdapter; +HSPLcom/artemchep/keyguard/core/store/InstantToLongAdapter;->()V +HSPLcom/artemchep/keyguard/core/store/InstantToLongAdapter;->()V +Lcom/artemchep/keyguard/core/store/ObjectToStringAdapter; +HSPLcom/artemchep/keyguard/core/store/ObjectToStringAdapter;->()V +HSPLcom/artemchep/keyguard/core/store/ObjectToStringAdapter;->(Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/json/Json;)V +Lcom/artemchep/keyguard/core/store/ObjectToStringAdapter$Companion; +HSPLcom/artemchep/keyguard/core/store/ObjectToStringAdapter$Companion;->()V +HSPLcom/artemchep/keyguard/core/store/ObjectToStringAdapter$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/core/store/SqlHelper; +Lcom/artemchep/keyguard/core/store/SqlManager; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$$serializer; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$$serializer;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$$serializer;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Local; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Local;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Local$$serializer; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Local$$serializer;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Local$$serializer;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Local$$serializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Local$Companion; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Local$Companion;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Local$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Local$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Remote; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Remote;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Remote$$serializer; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Remote$$serializer;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Remote$$serializer;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Remote$$serializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Remote$Companion; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Remote$Companion;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Remote$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Attachment$Remote$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Companion; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Companion;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Field$$serializer; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Field$$serializer;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Field$$serializer;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Field$$serializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType;->$values()[Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType;->(Ljava/lang/String;I)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType;->access$get$cachedSerializer$delegate$cp()Lkotlin/Lazy; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType;->values()[Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType$Companion; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType$Companion;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType$Companion;->get$cachedSerializer()Lkotlinx/serialization/KSerializer; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType$Companion$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType$Companion$1;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType$Companion$1;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType$Companion$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$RepromptType$Companion$1;->invoke()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type;->$values()[Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type;->(Ljava/lang/String;I)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type;->access$get$cachedSerializer$delegate$cp()Lkotlin/Lazy; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type;->values()[Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type$Companion; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type$Companion;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type$Companion;->get$cachedSerializer()Lkotlinx/serialization/KSerializer; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type$Companion$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type$Companion$1;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type$Companion$1;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type$Companion$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipher$Type$Companion$1;->invoke()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl;->(Lcom/artemchep/keyguard/core/store/DatabaseManager;Lkotlinx/coroutines/CoroutineDispatcher;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl;->access$getDispatcher$p(Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl;)Lkotlinx/coroutines/CoroutineDispatcher; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl;->get()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$get$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$get$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$get$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$get$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$get$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$get$1$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$get$1$1;->(Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$get$lambda$2$$inlined$map$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$get$lambda$2$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$get$lambda$2$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$get$lambda$2$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$get$lambda$2$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$get$lambda$2$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$get$lambda$2$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$get$lambda$2$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$get$lambda$2$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$special$$inlined$instance$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$special$$inlined$instance$1;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollection; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollection;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollection$$serializer; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollection$$serializer;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollection$$serializer;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollection$Companion; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollection$Companion;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollection$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollection$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl;->(Lcom/artemchep/keyguard/core/store/DatabaseManager;Lkotlinx/coroutines/CoroutineDispatcher;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl;->access$getDispatcher$p(Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl;)Lkotlinx/coroutines/CoroutineDispatcher; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl;->get()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$get$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$get$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$get$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$get$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$get$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$get$lambda$2$$inlined$map$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$get$lambda$2$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$get$lambda$2$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$get$lambda$2$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$get$lambda$2$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$get$lambda$2$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$get$lambda$2$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$get$lambda$2$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$get$lambda$2$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$special$$inlined$instance$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$special$$inlined$instance$1;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolder; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolder;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolder$$serializer; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolder$$serializer;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolder$$serializer;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolder$Companion; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolder$Companion;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolder$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolder$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl;->(Lcom/artemchep/keyguard/core/store/DatabaseManager;Lkotlinx/coroutines/CoroutineDispatcher;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl;->access$getDispatcher$p(Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl;)Lkotlinx/coroutines/CoroutineDispatcher; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl;->get()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$get$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$get$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$get$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$get$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$get$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$get$lambda$2$$inlined$map$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$get$lambda$2$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$get$lambda$2$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$get$lambda$2$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$get$lambda$2$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$get$lambda$2$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$get$lambda$2$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$get$lambda$2$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$get$lambda$2$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$special$$inlined$instance$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$special$$inlined$instance$1;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$$serializer; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$$serializer;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$$serializer;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$Companion; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$Companion;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$LastSyncResult; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$LastSyncResult$Failure; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$LastSyncResult$Failure$$serializer; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$LastSyncResult$Failure$$serializer;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$LastSyncResult$Failure$$serializer;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$LastSyncResult$Failure$$serializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$LastSyncResult$Success; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$LastSyncResult$Success;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$LastSyncResult$Success;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$LastSyncResult$Success$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$LastSyncResult$Success$1;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMeta$LastSyncResult$Success$1;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl;->(Lcom/artemchep/keyguard/core/store/DatabaseManager;Lkotlinx/coroutines/CoroutineDispatcher;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl;->access$getDispatcher$p(Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl;)Lkotlinx/coroutines/CoroutineDispatcher; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl;->get()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$get$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$get$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$get$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$get$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$get$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$get$lambda$2$$inlined$map$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$get$lambda$2$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$get$lambda$2$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$get$lambda$2$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$get$lambda$2$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$get$lambda$2$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$get$lambda$2$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$get$lambda$2$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$get$lambda$2$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$special$$inlined$instance$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$special$$inlined$instance$1;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganization; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganization;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganization$$serializer; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganization$$serializer;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganization$$serializer;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganization$Companion; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganization$Companion;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganization$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganization$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl;->(Lcom/artemchep/keyguard/core/store/DatabaseManager;Lkotlinx/coroutines/CoroutineDispatcher;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl;->access$getDispatcher$p(Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl;)Lkotlinx/coroutines/CoroutineDispatcher; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl;->get()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$get$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$get$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$get$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$get$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$get$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$get$lambda$2$$inlined$map$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$get$lambda$2$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$get$lambda$2$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$get$lambda$2$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$get$lambda$2$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$get$lambda$2$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$get$lambda$2$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$get$lambda$2$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$get$lambda$2$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$special$$inlined$instance$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$special$$inlined$instance$1;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfile; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfile;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfile$$serializer; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfile$$serializer;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfile$$serializer;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfile$Companion; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfile$Companion;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfile$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfile$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl;->(Lcom/artemchep/keyguard/core/store/DatabaseManager;Lkotlinx/coroutines/CoroutineDispatcher;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl;->access$getDispatcher$p(Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl;)Lkotlinx/coroutines/CoroutineDispatcher; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl;->get()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$get$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$get$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$get$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$get$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$get$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$get$lambda$2$$inlined$map$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$get$lambda$2$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$get$lambda$2$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$get$lambda$2$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$get$lambda$2$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$get$lambda$2$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$get$lambda$2$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$get$lambda$2$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$get$lambda$2$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$special$$inlined$instance$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$special$$inlined$instance$1;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$$serializer; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$$serializer;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$$serializer;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Companion; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Companion;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type;->$values()[Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type;->(Ljava/lang/String;I)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type;->access$get$cachedSerializer$delegate$cp()Lkotlin/Lazy; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type;->values()[Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type$Companion; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type$Companion;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type$Companion;->get$cachedSerializer()Lkotlinx/serialization/KSerializer; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type$Companion$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type$Companion$1;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type$Companion$1;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type$Companion$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenSend$Type$Companion$1;->invoke()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenService$Has; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenToken; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenToken;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenToken$$serializer; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenToken$$serializer;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenToken$$serializer;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenToken$Companion; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenToken$Companion;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenToken$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenToken$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl;->()V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl;->(Lcom/artemchep/keyguard/core/store/DatabaseManager;Lkotlinx/coroutines/CoroutineDispatcher;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl;->access$getDispatcher$p(Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl;)Lkotlinx/coroutines/CoroutineDispatcher; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl;->get()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl;->getSnapshot()Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$get$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$get$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$get$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$get$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$get$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$get$lambda$2$$inlined$map$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$get$lambda$2$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$get$lambda$2$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$get$lambda$2$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$get$lambda$2$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$get$lambda$2$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$get$lambda$2$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$get$lambda$2$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$get$lambda$2$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$special$$inlined$instance$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$special$$inlined$instance$1;->()V +Lcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/crypto/CipherEncryptorImpl; +HSPLcom/artemchep/keyguard/crypto/CipherEncryptorImpl;->()V +HSPLcom/artemchep/keyguard/crypto/CipherEncryptorImpl;->(Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator;Lcom/artemchep/keyguard/common/service/text/Base64Service;)V +HSPLcom/artemchep/keyguard/crypto/CipherEncryptorImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/crypto/CipherEncryptorImpl$Companion; +HSPLcom/artemchep/keyguard/crypto/CipherEncryptorImpl$Companion;->()V +HSPLcom/artemchep/keyguard/crypto/CipherEncryptorImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/crypto/CipherEncryptorImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/crypto/CipherEncryptorImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/crypto/CipherEncryptorImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/crypto/CipherEncryptorImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/crypto/CryptoGeneratorJvm; +HSPLcom/artemchep/keyguard/crypto/CryptoGeneratorJvm;->()V +HSPLcom/artemchep/keyguard/crypto/CryptoGeneratorJvm;->()V +HSPLcom/artemchep/keyguard/crypto/CryptoGeneratorJvm;->getSecureRandom()Ljava/security/SecureRandom; +HSPLcom/artemchep/keyguard/crypto/CryptoGeneratorJvm;->hkdf([B[B[BI)[B +HSPLcom/artemchep/keyguard/crypto/CryptoGeneratorJvm;->pbkdf2([B[BII)[B +HSPLcom/artemchep/keyguard/crypto/CryptoGeneratorJvm;->seed(I)[B +Lcom/artemchep/keyguard/crypto/CryptoGeneratorJvm$Companion; +HSPLcom/artemchep/keyguard/crypto/CryptoGeneratorJvm$Companion;->()V +HSPLcom/artemchep/keyguard/crypto/CryptoGeneratorJvm$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/crypto/CryptoGeneratorJvm$secureRandom$2; +HSPLcom/artemchep/keyguard/crypto/CryptoGeneratorJvm$secureRandom$2;->()V +HSPLcom/artemchep/keyguard/crypto/CryptoGeneratorJvm$secureRandom$2;->()V +HSPLcom/artemchep/keyguard/crypto/CryptoGeneratorJvm$secureRandom$2;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/crypto/CryptoGeneratorJvm$secureRandom$2;->invoke()Ljava/security/SecureRandom; +Lcom/artemchep/keyguard/crypto/util/HkdfKt; +HSPLcom/artemchep/keyguard/crypto/util/HkdfKt;->hkdf(Lorg/bouncycastle/crypto/Digest;[B[B[BI)[B +HSPLcom/artemchep/keyguard/crypto/util/HkdfKt;->hkdfSha256([B[B[BI)[B +Lcom/artemchep/keyguard/crypto/util/Pbkdf2Kt; +HSPLcom/artemchep/keyguard/crypto/util/Pbkdf2Kt;->pbkdf2(Lorg/bouncycastle/crypto/Digest;[B[BII)[B +HSPLcom/artemchep/keyguard/crypto/util/Pbkdf2Kt;->pbkdf2Sha256([B[BII)[B +Lcom/artemchep/keyguard/data/CipherUsageHistory$Adapter; +HSPLcom/artemchep/keyguard/data/CipherUsageHistory$Adapter;->()V +HSPLcom/artemchep/keyguard/data/CipherUsageHistory$Adapter;->(Lapp/cash/sqldelight/ColumnAdapter;)V +Lcom/artemchep/keyguard/data/CipherUsageHistoryQueries; +HSPLcom/artemchep/keyguard/data/CipherUsageHistoryQueries;->()V +HSPLcom/artemchep/keyguard/data/CipherUsageHistoryQueries;->(Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/CipherUsageHistory$Adapter;)V +Lcom/artemchep/keyguard/data/Database; +HSPLcom/artemchep/keyguard/data/Database;->()V +Lcom/artemchep/keyguard/data/Database$Companion; +HSPLcom/artemchep/keyguard/data/Database$Companion;->()V +HSPLcom/artemchep/keyguard/data/Database$Companion;->()V +HSPLcom/artemchep/keyguard/data/Database$Companion;->getSchema()Lapp/cash/sqldelight/db/SqlSchema; +HSPLcom/artemchep/keyguard/data/Database$Companion;->invoke(Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/bitwarden/Account$Adapter;Lcom/artemchep/keyguard/data/pwnage/AccountBreach$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Cipher$Adapter;Lcom/artemchep/keyguard/data/CipherUsageHistory$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Collection$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Folder$Adapter;Lcom/artemchep/keyguard/data/GeneratorEmailRelay$Adapter;Lcom/artemchep/keyguard/data/GeneratorHistory$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Meta$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Organization$Adapter;Lcom/artemchep/keyguard/data/pwnage/PasswordBreach$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Profile$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Send$Adapter;)Lcom/artemchep/keyguard/data/Database; +Lcom/artemchep/keyguard/data/GeneratorEmailRelay$Adapter; +HSPLcom/artemchep/keyguard/data/GeneratorEmailRelay$Adapter;->()V +HSPLcom/artemchep/keyguard/data/GeneratorEmailRelay$Adapter;->(Lapp/cash/sqldelight/ColumnAdapter;)V +Lcom/artemchep/keyguard/data/GeneratorEmailRelayQueries; +HSPLcom/artemchep/keyguard/data/GeneratorEmailRelayQueries;->()V +HSPLcom/artemchep/keyguard/data/GeneratorEmailRelayQueries;->(Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/GeneratorEmailRelay$Adapter;)V +Lcom/artemchep/keyguard/data/GeneratorHistory$Adapter; +HSPLcom/artemchep/keyguard/data/GeneratorHistory$Adapter;->()V +HSPLcom/artemchep/keyguard/data/GeneratorHistory$Adapter;->(Lapp/cash/sqldelight/ColumnAdapter;)V +Lcom/artemchep/keyguard/data/GeneratorHistoryQueries; +HSPLcom/artemchep/keyguard/data/GeneratorHistoryQueries;->()V +HSPLcom/artemchep/keyguard/data/GeneratorHistoryQueries;->(Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/GeneratorHistory$Adapter;)V +Lcom/artemchep/keyguard/data/bitwarden/Account$Adapter; +HSPLcom/artemchep/keyguard/data/bitwarden/Account$Adapter;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/Account$Adapter;->(Lapp/cash/sqldelight/ColumnAdapter;)V +Lcom/artemchep/keyguard/data/bitwarden/AccountQueries; +HSPLcom/artemchep/keyguard/data/bitwarden/AccountQueries;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/AccountQueries;->(Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/bitwarden/Account$Adapter;)V +HSPLcom/artemchep/keyguard/data/bitwarden/AccountQueries;->get()Lapp/cash/sqldelight/Query; +HSPLcom/artemchep/keyguard/data/bitwarden/AccountQueries;->get(Lkotlin/jvm/functions/Function2;)Lapp/cash/sqldelight/Query; +Lcom/artemchep/keyguard/data/bitwarden/AccountQueries$get$1; +HSPLcom/artemchep/keyguard/data/bitwarden/AccountQueries$get$1;->(Lkotlin/jvm/functions/Function2;Lcom/artemchep/keyguard/data/bitwarden/AccountQueries;)V +Lcom/artemchep/keyguard/data/bitwarden/AccountQueries$get$2; +HSPLcom/artemchep/keyguard/data/bitwarden/AccountQueries$get$2;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/AccountQueries$get$2;->()V +Lcom/artemchep/keyguard/data/bitwarden/Cipher; +Lcom/artemchep/keyguard/data/bitwarden/Cipher$Adapter; +HSPLcom/artemchep/keyguard/data/bitwarden/Cipher$Adapter;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/Cipher$Adapter;->(Lapp/cash/sqldelight/ColumnAdapter;)V +Lcom/artemchep/keyguard/data/bitwarden/CipherQueries; +HSPLcom/artemchep/keyguard/data/bitwarden/CipherQueries;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/CipherQueries;->(Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/bitwarden/Cipher$Adapter;)V +HSPLcom/artemchep/keyguard/data/bitwarden/CipherQueries;->get()Lapp/cash/sqldelight/Query; +HSPLcom/artemchep/keyguard/data/bitwarden/CipherQueries;->get(Lkotlin/jvm/functions/Function4;)Lapp/cash/sqldelight/Query; +Lcom/artemchep/keyguard/data/bitwarden/CipherQueries$get$1; +HSPLcom/artemchep/keyguard/data/bitwarden/CipherQueries$get$1;->(Lkotlin/jvm/functions/Function4;Lcom/artemchep/keyguard/data/bitwarden/CipherQueries;)V +Lcom/artemchep/keyguard/data/bitwarden/CipherQueries$get$2; +HSPLcom/artemchep/keyguard/data/bitwarden/CipherQueries$get$2;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/CipherQueries$get$2;->()V +Lcom/artemchep/keyguard/data/bitwarden/Collection$Adapter; +HSPLcom/artemchep/keyguard/data/bitwarden/Collection$Adapter;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/Collection$Adapter;->(Lapp/cash/sqldelight/ColumnAdapter;)V +Lcom/artemchep/keyguard/data/bitwarden/CollectionQueries; +HSPLcom/artemchep/keyguard/data/bitwarden/CollectionQueries;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/CollectionQueries;->(Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/bitwarden/Collection$Adapter;)V +HSPLcom/artemchep/keyguard/data/bitwarden/CollectionQueries;->get()Lapp/cash/sqldelight/Query; +HSPLcom/artemchep/keyguard/data/bitwarden/CollectionQueries;->get(Lkotlin/jvm/functions/Function3;)Lapp/cash/sqldelight/Query; +Lcom/artemchep/keyguard/data/bitwarden/CollectionQueries$get$1; +HSPLcom/artemchep/keyguard/data/bitwarden/CollectionQueries$get$1;->(Lkotlin/jvm/functions/Function3;Lcom/artemchep/keyguard/data/bitwarden/CollectionQueries;)V +Lcom/artemchep/keyguard/data/bitwarden/CollectionQueries$get$2; +HSPLcom/artemchep/keyguard/data/bitwarden/CollectionQueries$get$2;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/CollectionQueries$get$2;->()V +Lcom/artemchep/keyguard/data/bitwarden/Folder$Adapter; +HSPLcom/artemchep/keyguard/data/bitwarden/Folder$Adapter;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/Folder$Adapter;->(Lapp/cash/sqldelight/ColumnAdapter;)V +Lcom/artemchep/keyguard/data/bitwarden/FolderQueries; +HSPLcom/artemchep/keyguard/data/bitwarden/FolderQueries;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/FolderQueries;->(Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/bitwarden/Folder$Adapter;)V +HSPLcom/artemchep/keyguard/data/bitwarden/FolderQueries;->get()Lapp/cash/sqldelight/Query; +HSPLcom/artemchep/keyguard/data/bitwarden/FolderQueries;->get(Lkotlin/jvm/functions/Function3;)Lapp/cash/sqldelight/Query; +Lcom/artemchep/keyguard/data/bitwarden/FolderQueries$get$1; +HSPLcom/artemchep/keyguard/data/bitwarden/FolderQueries$get$1;->(Lkotlin/jvm/functions/Function3;Lcom/artemchep/keyguard/data/bitwarden/FolderQueries;)V +Lcom/artemchep/keyguard/data/bitwarden/FolderQueries$get$2; +HSPLcom/artemchep/keyguard/data/bitwarden/FolderQueries$get$2;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/FolderQueries$get$2;->()V +Lcom/artemchep/keyguard/data/bitwarden/Meta$Adapter; +HSPLcom/artemchep/keyguard/data/bitwarden/Meta$Adapter;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/Meta$Adapter;->(Lapp/cash/sqldelight/ColumnAdapter;)V +Lcom/artemchep/keyguard/data/bitwarden/MetaQueries; +HSPLcom/artemchep/keyguard/data/bitwarden/MetaQueries;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/MetaQueries;->(Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/bitwarden/Meta$Adapter;)V +HSPLcom/artemchep/keyguard/data/bitwarden/MetaQueries;->get()Lapp/cash/sqldelight/Query; +HSPLcom/artemchep/keyguard/data/bitwarden/MetaQueries;->get(Lkotlin/jvm/functions/Function2;)Lapp/cash/sqldelight/Query; +Lcom/artemchep/keyguard/data/bitwarden/MetaQueries$get$1; +HSPLcom/artemchep/keyguard/data/bitwarden/MetaQueries$get$1;->(Lkotlin/jvm/functions/Function2;Lcom/artemchep/keyguard/data/bitwarden/MetaQueries;)V +Lcom/artemchep/keyguard/data/bitwarden/MetaQueries$get$2; +HSPLcom/artemchep/keyguard/data/bitwarden/MetaQueries$get$2;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/MetaQueries$get$2;->()V +Lcom/artemchep/keyguard/data/bitwarden/Organization$Adapter; +HSPLcom/artemchep/keyguard/data/bitwarden/Organization$Adapter;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/Organization$Adapter;->(Lapp/cash/sqldelight/ColumnAdapter;)V +Lcom/artemchep/keyguard/data/bitwarden/OrganizationQueries; +HSPLcom/artemchep/keyguard/data/bitwarden/OrganizationQueries;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/OrganizationQueries;->(Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/bitwarden/Organization$Adapter;)V +HSPLcom/artemchep/keyguard/data/bitwarden/OrganizationQueries;->get()Lapp/cash/sqldelight/Query; +HSPLcom/artemchep/keyguard/data/bitwarden/OrganizationQueries;->get(Lkotlin/jvm/functions/Function3;)Lapp/cash/sqldelight/Query; +Lcom/artemchep/keyguard/data/bitwarden/OrganizationQueries$get$1; +HSPLcom/artemchep/keyguard/data/bitwarden/OrganizationQueries$get$1;->(Lkotlin/jvm/functions/Function3;Lcom/artemchep/keyguard/data/bitwarden/OrganizationQueries;)V +Lcom/artemchep/keyguard/data/bitwarden/OrganizationQueries$get$2; +HSPLcom/artemchep/keyguard/data/bitwarden/OrganizationQueries$get$2;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/OrganizationQueries$get$2;->()V +Lcom/artemchep/keyguard/data/bitwarden/Profile$Adapter; +HSPLcom/artemchep/keyguard/data/bitwarden/Profile$Adapter;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/Profile$Adapter;->(Lapp/cash/sqldelight/ColumnAdapter;)V +Lcom/artemchep/keyguard/data/bitwarden/ProfileQueries; +HSPLcom/artemchep/keyguard/data/bitwarden/ProfileQueries;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/ProfileQueries;->(Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/bitwarden/Profile$Adapter;)V +HSPLcom/artemchep/keyguard/data/bitwarden/ProfileQueries;->get()Lapp/cash/sqldelight/Query; +HSPLcom/artemchep/keyguard/data/bitwarden/ProfileQueries;->get(Lkotlin/jvm/functions/Function3;)Lapp/cash/sqldelight/Query; +Lcom/artemchep/keyguard/data/bitwarden/ProfileQueries$get$1; +HSPLcom/artemchep/keyguard/data/bitwarden/ProfileQueries$get$1;->(Lkotlin/jvm/functions/Function3;Lcom/artemchep/keyguard/data/bitwarden/ProfileQueries;)V +Lcom/artemchep/keyguard/data/bitwarden/ProfileQueries$get$2; +HSPLcom/artemchep/keyguard/data/bitwarden/ProfileQueries$get$2;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/ProfileQueries$get$2;->()V +Lcom/artemchep/keyguard/data/bitwarden/Send$Adapter; +HSPLcom/artemchep/keyguard/data/bitwarden/Send$Adapter;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/Send$Adapter;->(Lapp/cash/sqldelight/ColumnAdapter;)V +Lcom/artemchep/keyguard/data/bitwarden/SendQueries; +HSPLcom/artemchep/keyguard/data/bitwarden/SendQueries;->()V +HSPLcom/artemchep/keyguard/data/bitwarden/SendQueries;->(Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/bitwarden/Send$Adapter;)V +Lcom/artemchep/keyguard/data/common/DatabaseImpl; +HSPLcom/artemchep/keyguard/data/common/DatabaseImpl;->(Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/bitwarden/Account$Adapter;Lcom/artemchep/keyguard/data/pwnage/AccountBreach$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Cipher$Adapter;Lcom/artemchep/keyguard/data/CipherUsageHistory$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Collection$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Folder$Adapter;Lcom/artemchep/keyguard/data/GeneratorEmailRelay$Adapter;Lcom/artemchep/keyguard/data/GeneratorHistory$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Meta$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Organization$Adapter;Lcom/artemchep/keyguard/data/pwnage/PasswordBreach$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Profile$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Send$Adapter;)V +HSPLcom/artemchep/keyguard/data/common/DatabaseImpl;->getAccountQueries()Lcom/artemchep/keyguard/data/bitwarden/AccountQueries; +HSPLcom/artemchep/keyguard/data/common/DatabaseImpl;->getCipherQueries()Lcom/artemchep/keyguard/data/bitwarden/CipherQueries; +HSPLcom/artemchep/keyguard/data/common/DatabaseImpl;->getCollectionQueries()Lcom/artemchep/keyguard/data/bitwarden/CollectionQueries; +HSPLcom/artemchep/keyguard/data/common/DatabaseImpl;->getFolderQueries()Lcom/artemchep/keyguard/data/bitwarden/FolderQueries; +HSPLcom/artemchep/keyguard/data/common/DatabaseImpl;->getMetaQueries()Lcom/artemchep/keyguard/data/bitwarden/MetaQueries; +HSPLcom/artemchep/keyguard/data/common/DatabaseImpl;->getOrganizationQueries()Lcom/artemchep/keyguard/data/bitwarden/OrganizationQueries; +HSPLcom/artemchep/keyguard/data/common/DatabaseImpl;->getProfileQueries()Lcom/artemchep/keyguard/data/bitwarden/ProfileQueries; +Lcom/artemchep/keyguard/data/common/DatabaseImpl$Schema; +HSPLcom/artemchep/keyguard/data/common/DatabaseImpl$Schema;->()V +HSPLcom/artemchep/keyguard/data/common/DatabaseImpl$Schema;->()V +HSPLcom/artemchep/keyguard/data/common/DatabaseImpl$Schema;->create(Lapp/cash/sqldelight/db/SqlDriver;)Lapp/cash/sqldelight/db/QueryResult; +HSPLcom/artemchep/keyguard/data/common/DatabaseImpl$Schema;->create-0iQ1-z0(Lapp/cash/sqldelight/db/SqlDriver;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/data/common/DatabaseImpl$Schema;->getVersion()J +Lcom/artemchep/keyguard/data/common/DatabaseImplKt; +HSPLcom/artemchep/keyguard/data/common/DatabaseImplKt;->getSchema(Lkotlin/reflect/KClass;)Lapp/cash/sqldelight/db/SqlSchema; +HSPLcom/artemchep/keyguard/data/common/DatabaseImplKt;->newInstance(Lkotlin/reflect/KClass;Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/bitwarden/Account$Adapter;Lcom/artemchep/keyguard/data/pwnage/AccountBreach$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Cipher$Adapter;Lcom/artemchep/keyguard/data/CipherUsageHistory$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Collection$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Folder$Adapter;Lcom/artemchep/keyguard/data/GeneratorEmailRelay$Adapter;Lcom/artemchep/keyguard/data/GeneratorHistory$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Meta$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Organization$Adapter;Lcom/artemchep/keyguard/data/pwnage/PasswordBreach$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Profile$Adapter;Lcom/artemchep/keyguard/data/bitwarden/Send$Adapter;)Lcom/artemchep/keyguard/data/Database; +Lcom/artemchep/keyguard/data/pwnage/AccountBreach$Adapter; +HSPLcom/artemchep/keyguard/data/pwnage/AccountBreach$Adapter;->()V +HSPLcom/artemchep/keyguard/data/pwnage/AccountBreach$Adapter;->(Lapp/cash/sqldelight/ColumnAdapter;Lapp/cash/sqldelight/ColumnAdapter;)V +Lcom/artemchep/keyguard/data/pwnage/AccountBreachQueries; +HSPLcom/artemchep/keyguard/data/pwnage/AccountBreachQueries;->()V +HSPLcom/artemchep/keyguard/data/pwnage/AccountBreachQueries;->(Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/pwnage/AccountBreach$Adapter;)V +Lcom/artemchep/keyguard/data/pwnage/PasswordBreach$Adapter; +HSPLcom/artemchep/keyguard/data/pwnage/PasswordBreach$Adapter;->()V +HSPLcom/artemchep/keyguard/data/pwnage/PasswordBreach$Adapter;->(Lapp/cash/sqldelight/ColumnAdapter;)V +Lcom/artemchep/keyguard/data/pwnage/PasswordBreachQueries; +HSPLcom/artemchep/keyguard/data/pwnage/PasswordBreachQueries;->()V +HSPLcom/artemchep/keyguard/data/pwnage/PasswordBreachQueries;->(Lapp/cash/sqldelight/db/SqlDriver;Lcom/artemchep/keyguard/data/pwnage/PasswordBreach$Adapter;)V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt;->access$installFingerprintRepo(Lorg/kodein/di/DI$Builder;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt;->access$installKeyRepo(Lorg/kodein/di/DI$Builder;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt;->access$installSessionMetadataRepo(Lorg/kodein/di/DI$Builder;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt;->access$installSessionRepo(Lorg/kodein/di/DI$Builder;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt;->access$installSettingsRepo(Lorg/kodein/di/DI$Builder;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt;->globalModuleJvm()Lorg/kodein/di/DI$Module; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt;->installFingerprintRepo(Lorg/kodein/di/DI$Builder;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt;->installKeyRepo(Lorg/kodein/di/DI$Builder;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt;->installSessionMetadataRepo(Lorg/kodein/di/DI$Builder;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt;->installSessionRepo(Lorg/kodein/di/DI$Builder;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt;->installSettingsRepo(Lorg/kodein/di/DI$Builder;)V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1;->invoke(Lorg/kodein/di/DI$Builder;)V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$1;->invoke(Lorg/kodein/di/DirectDI;)Lkotlinx/coroutines/CoroutineDispatcher; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$10; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$10;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$10;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$100; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$100;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$100;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$101; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$101;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$101;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$102; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$102;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$102;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$103; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$103;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$103;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$104; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$104;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$104;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$105; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$105;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$105;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$106; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$106;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$106;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$107; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$107;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$107;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$107;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$107;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/AppWorker; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$108; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$108;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$108;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$108;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$108;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetVaultSession; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$109; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$109;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$109;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$109;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$109;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetVaultPersist; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$11; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$11;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$11;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$11;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$11;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/UnlockUseCase; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$110; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$110;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$110;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$111; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$111;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$111;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$112; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$112;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$112;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$113; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$113;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$113;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$113;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$113;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/MessageHub; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$113$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$113$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$114; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$114;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$114;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$114;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$114;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/ShowMessage; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$114$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$114$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$115; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$115;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$115;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$115;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$115;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/impl/MessageHubImpl; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$116; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$116;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$116;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$117; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$117;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$117;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$118; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$118;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$118;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$118;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$118;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$119; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$119;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$119;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$119;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$119;->invoke(Lorg/kodein/di/DirectDI;)Lkotlinx/serialization/json/Json; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$119$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$119$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$119$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$119$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$119$1;->invoke(Lkotlinx/serialization/json/JsonBuilder;)V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$119$1$1$1$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$119$1$1$1$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$119$1$1$1$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$12; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$12;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$12;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$12;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$12;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/text/Base64Service; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$120; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$120;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$120;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$120;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$120;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/crypto/CipherEncryptor; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$121; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$121;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$121;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$122; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$122;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$122;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$123; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$123;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$123;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$124; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$124;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$124;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$124;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$124;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/deeplink/DeeplinkService; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$125; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$125;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$125;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$125;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$125;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/wordlist/WordlistService; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$126; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$126;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$126;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$127; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$127;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$127;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$128; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$128;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$128;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$129; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$129;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$129;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$13; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$13;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$13;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$13;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$13;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/text/Base32Service; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$130; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$130;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$130;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$131; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$131;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$131;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$132; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$132;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$132;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$132;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$132;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/tld/TldService; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$133; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$133;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$133;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$134; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$134;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$134;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$135; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$135;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$135;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$135;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$135;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/id/IdRepository; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$135$invoke$$inlined$instance$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$135$invoke$$inlined$instance$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$135$invoke$$inlined$instance$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$135$invoke$$inlined$instance$2;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$136; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$136;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$136;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$136;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$136;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/state/StateRepository; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$136$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$136$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$136$invoke$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$136$invoke$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$136$invoke$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$136$invoke$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$137; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$137;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$137;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$137;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$137;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/DeviceIdUseCase; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$138; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$138;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$138;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$138;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$138;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$139; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$139;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$139;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$14; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$14;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$14;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$14;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$14;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetTotpCode; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$140; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$140;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$140;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$141; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$141;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$141;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$141;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$141;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetPasswordStrength; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$142; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$142;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$142;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$143; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$143;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$143;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$143;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$143;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/DateFormatter; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$144; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$144;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$144;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$145; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$145;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$145;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$145;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$145;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$146; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$146;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$146;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$146;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$146;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/totp/TotpService; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147;->invoke(Lorg/kodein/di/DirectDI;)Lio/ktor/client/HttpClient; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1;->(Lokhttp3/OkHttpClient;Lkotlinx/serialization/json/Json;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1;->invoke(Lio/ktor/client/HttpClientConfig;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$1;->invoke(Lio/ktor/client/plugins/UserAgentConfig;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$2;->(Lokhttp3/OkHttpClient;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$2;->invoke(Lio/ktor/client/engine/okhttp/OkHttpConfig;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$3; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$3;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$3;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$3;->invoke(Lio/ktor/client/plugins/logging/LoggingConfig;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$4; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$4;->(Lkotlinx/serialization/json/Json;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$4;->invoke(Lio/ktor/client/plugins/contentnegotiation/ContentNegotiationConfig;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$4;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$5; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$5;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$5;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$5;->invoke(Lio/ktor/client/plugins/websocket/WebSockets$Config;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$5;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$6; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$6;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$6;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$6;->invoke(Lio/ktor/client/plugins/cache/HttpCache$Config;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$6;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$7; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$7;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$7;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$7;->invoke(Lio/ktor/client/plugins/HttpRequestRetryConfig;)V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$7;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$7$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$7$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$1$7$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$invoke$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$147$invoke$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$148; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$148;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$148;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$149; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$149;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$149;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$149;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$149;->invoke(Lorg/kodein/di/DirectDI;)Lokhttp3/OkHttpClient; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$149$$ExternalSyntheticLambda0; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$149$$ExternalSyntheticLambda0;->(Lcom/artemchep/keyguard/common/service/logging/LogRepository;)V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$149$invoke$lambda$2$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$149$invoke$lambda$2$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$15; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$15;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$15;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$16; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$16;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$16;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$16;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$16;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetScreenState; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$17; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$17;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$17;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$17;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$17;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetConcealFields; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$18; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$18;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$18;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$19; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$19;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$19;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$2;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$2;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$20; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$20;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$20;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$21; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$21;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$21;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$21;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$21;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetBiometricTimeout; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$22; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$22;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$22;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$23; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$23;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$23;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$24; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$24;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$24;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$25; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$25;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$25;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$26; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$26;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$26;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$27; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$27;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$27;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$28; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$28;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$28;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$29; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$29;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$29;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$3; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$3;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$3;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$3;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/AuthConfirmMasterKeyUseCase; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$30; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$30;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$30;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$31; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$31;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$31;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$32; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$32;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$32;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$33; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$33;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$33;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$34; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$34;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$34;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$35; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$35;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$35;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$36; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$36;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$36;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$37; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$37;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$37;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$37;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$37;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/PutVaultSession; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$38; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$38;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$38;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$38;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$38;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/ClearVaultSession; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$39; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$39;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$39;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$4; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$4;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$4;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$4;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$4;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/AuthGenerateMasterKeyUseCase; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$40; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$40;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$40;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$41; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$41;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$41;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$42; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$42;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$42;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$43; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$43;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$43;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$44; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$44;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$44;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$44;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$44;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/PutScreenState; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$45; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$45;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$45;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$45;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$45;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetAllowScreenshots; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$46; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$46;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$46;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$46;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$46;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetAllowTwoPanelLayoutInLandscape; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$47; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$47;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$47;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$47;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$47;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetAllowTwoPanelLayoutInPortrait; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$48; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$48;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$48;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$48;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$48;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetVaultLockAfterScreenOff; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$49; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$49;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$49;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$5; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$5;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$5;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$5;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$5;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/BiometricKeyDecryptUseCase; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$50; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$50;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$50;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$50;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$50;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/PasskeyTargetCheck; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$51; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$51;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$51;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$52; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$52;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$52;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$52;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$52;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetUseExternalBrowser; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$53; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$53;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$53;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$54; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$54;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$54;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$55; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$55;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$55;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$56; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$56;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$56;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$57; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$57;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$57;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$58; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$58;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$58;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$59; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$59;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$59;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$6; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$6;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$6;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$6;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$6;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/BiometricKeyEncryptUseCase; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$60; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$60;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$60;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$61; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$61;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$61;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$62; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$62;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$62;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$63; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$63;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$63;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$64; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$64;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$64;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$65; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$65;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$65;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$66; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$66;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$66;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$66;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$66;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetNavAnimation; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$67; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$67;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$67;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$67;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$67;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetNavLabel; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$68; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$68;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$68;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$69; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$69;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$69;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$69;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$69;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetFont; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$7; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$7;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$7;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$7;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$7;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GenerateMasterHashUseCase; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$70; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$70;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$70;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$71; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$71;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$71;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$72; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$72;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$72;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$73; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$73;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$73;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$73;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$73;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetTheme; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$74; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$74;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$74;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$74;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$74;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetThemeUseAmoledDark; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$75; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$75;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$75;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$75;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$75;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetColors; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$76; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$76;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$76;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$77; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$77;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$77;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$78; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$78;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$78;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$78;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$78;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/CipherUrlCheck; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$79; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$79;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$79;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$8; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$8;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$8;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$8;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$8;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GenerateMasterKeyUseCase; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$80; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$80;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$80;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$80;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$80;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetCanWrite; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$81; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$81;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$81;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$81;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$81;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetCachePremium; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$82; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$82;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$82;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$82;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$82;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/PutCachePremium; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$83; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$83;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$83;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$84; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$84;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$84;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$85; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$85;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$85;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$86; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$86;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$86;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$87; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$87;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$87;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$88; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$88;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$88;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$89; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$89;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$89;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$9; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$9;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$9;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$9;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$9;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GenerateMasterSaltUseCase; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$90; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$90;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$90;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$91; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$91;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$91;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$91;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$91;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetDebugPremium; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$92; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$92;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$92;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$92;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$92;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetWriteAccess; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$93; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$93;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$93;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$93;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$93;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetDebugScreenDelay; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$94; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$94;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$94;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$94;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$94;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetAppIcons; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$95; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$95;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$95;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$95;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$95;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/usecase/GetWebsiteIcons; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$96; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$96;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$96;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$97; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$97;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$97;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$98; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$98;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$98;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$99; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$99;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$99;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindProvider$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindProvider$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindProvider$default$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindProvider$default$2;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindProvider$default$3; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindProvider$default$3;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$10; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$10;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$100; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$100;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$101; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$101;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$102; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$102;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$103; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$103;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$104; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$104;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$105; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$105;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$106; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$106;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$107; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$107;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$108; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$108;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$109; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$109;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$11; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$11;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$110; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$110;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$111; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$111;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$112; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$112;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$113; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$113;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$114; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$114;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$115; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$115;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$116; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$116;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$117; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$117;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$118; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$118;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$119; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$119;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$12; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$12;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$120; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$120;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$121; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$121;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$122; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$122;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$123; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$123;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$124; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$124;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$125; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$125;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$126; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$126;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$127; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$127;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$128; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$128;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$129; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$129;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$13; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$13;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$130; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$130;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$131; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$131;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$132; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$132;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$133; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$133;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$134; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$134;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$135; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$135;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$136; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$136;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$137; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$137;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$138; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$138;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$139; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$139;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$14; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$14;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$140; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$140;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$141; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$141;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$142; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$142;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$143; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$143;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$144; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$144;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$145; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$145;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$146; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$146;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$15; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$15;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$16; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$16;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$17; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$17;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$18; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$18;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$19; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$19;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$2;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$20; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$20;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$21; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$21;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$22; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$22;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$23; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$23;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$24; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$24;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$25; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$25;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$26; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$26;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$27; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$27;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$28; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$28;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$29; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$29;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$3; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$3;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$30; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$30;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$31; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$31;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$32; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$32;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$33; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$33;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$34; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$34;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$35; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$35;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$36; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$36;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$37; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$37;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$38; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$38;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$39; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$39;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$4; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$4;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$40; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$40;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$41; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$41;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$42; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$42;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$43; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$43;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$44; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$44;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$45; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$45;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$46; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$46;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$47; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$47;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$48; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$48;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$49; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$49;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$5; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$5;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$50; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$50;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$51; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$51;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$52; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$52;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$53; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$53;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$54; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$54;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$55; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$55;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$56; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$56;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$57; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$57;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$58; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$58;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$59; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$59;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$6; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$6;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$60; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$60;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$61; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$61;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$62; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$62;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$63; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$63;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$64; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$64;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$65; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$65;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$66; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$66;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$67; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$67;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$68; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$68;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$69; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$69;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$7; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$7;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$70; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$70;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$71; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$71;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$72; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$72;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$73; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$73;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$74; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$74;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$75; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$75;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$76; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$76;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$77; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$77;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$78; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$78;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$79; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$79;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$8; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$8;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$80; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$80;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$81; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$81;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$82; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$82;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$83; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$83;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$84; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$84;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$85; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$85;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$86; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$86;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$87; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$87;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$88; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$88;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$89; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$89;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$9; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$9;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$90; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$90;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$91; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$91;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$92; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$92;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$93; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$93;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$94; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$94;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$95; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$95;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$96; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$96;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$97; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$97;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$98; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$98;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$99; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$globalModuleJvm$1$invoke$$inlined$bindSingleton$default$99;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$$inlined$bindProvider$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$$inlined$bindProvider$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$$inlined$bindProvider$default$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$$inlined$bindProvider$default$2;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$$inlined$bindSingleton$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$$inlined$bindSingleton$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$1;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$2;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$2;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$3; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$3;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$3;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$3;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/vault/FingerprintReadWriteRepository; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$3$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installFingerprintRepo$3$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$$inlined$bindProvider$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$$inlined$bindProvider$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$$inlined$bindProvider$default$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$$inlined$bindProvider$default$2;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$$inlined$bindSingleton$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$$inlined$bindSingleton$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$1;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$2;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$2;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$3; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$3;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$3;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$3;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/vault/KeyReadWriteRepository; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$3$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installKeyRepo$3$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$$inlined$bindProvider$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$$inlined$bindProvider$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$$inlined$bindProvider$default$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$$inlined$bindProvider$default$2;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$$inlined$bindSingleton$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$$inlined$bindSingleton$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$1;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$2;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$2;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$2;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/vault/SessionMetadataReadRepository; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$2$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$2$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$3; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$3;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$3;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$3;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/vault/SessionMetadataReadWriteRepository; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$3$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionMetadataRepo$3$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$$inlined$bindProvider$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$$inlined$bindProvider$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$$inlined$bindProvider$default$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$$inlined$bindProvider$default$2;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$$inlined$bindSingleton$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$$inlined$bindSingleton$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$1;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/vault/impl/SessionRepositoryImpl; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$2;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$2;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$3; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$3;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$3;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$3;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/vault/SessionReadWriteRepository; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$3$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSessionRepo$3$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$$inlined$bindProvider$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$$inlined$bindProvider$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$$inlined$bindProvider$default$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$$inlined$bindProvider$default$2;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$$inlined$bindSingleton$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$$inlined$bindSingleton$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$1;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$1;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$2; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$2;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$2;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$2;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/settings/SettingsReadRepository; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$2$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$2$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$3; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$3;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$3;->()V +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$3;->invoke(Lorg/kodein/di/DirectDI;)Lcom/artemchep/keyguard/common/service/settings/SettingsReadWriteRepository; +Lcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$3$invoke$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/di/GlobalModuleJvmKt$installSettingsRepo$3$invoke$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/feature/attachments/SelectableItemState; +HSPLcom/artemchep/keyguard/feature/attachments/SelectableItemState;->()V +HSPLcom/artemchep/keyguard/feature/attachments/SelectableItemState;->(ZZZLkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)V +Lcom/artemchep/keyguard/feature/auth/common/AutofillKt; +HSPLcom/artemchep/keyguard/feature/auth/common/AutofillKt;->autofill(Landroidx/compose/ui/Modifier;Ljava/lang/String;Ljava/util/List;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +Lcom/artemchep/keyguard/feature/auth/common/AutofillKt$autofill$1; +HSPLcom/artemchep/keyguard/feature/auth/common/AutofillKt$autofill$1;->(Ljava/util/List;Lkotlin/jvm/functions/Function1;Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/feature/auth/common/AutofillKt$autofill$1;->access$invoke$lambda$1(Landroidx/compose/runtime/State;)Landroidx/compose/ui/autofill/Autofill; +HSPLcom/artemchep/keyguard/feature/auth/common/AutofillKt$autofill$1;->access$invoke$lambda$2(Landroidx/compose/runtime/State;)Landroidx/compose/ui/autofill/AutofillNode; +HSPLcom/artemchep/keyguard/feature/auth/common/AutofillKt$autofill$1;->invoke$lambda$1(Landroidx/compose/runtime/State;)Landroidx/compose/ui/autofill/Autofill; +HSPLcom/artemchep/keyguard/feature/auth/common/AutofillKt$autofill$1;->invoke$lambda$2(Landroidx/compose/runtime/State;)Landroidx/compose/ui/autofill/AutofillNode; +HSPLcom/artemchep/keyguard/feature/auth/common/AutofillKt$autofill$1;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLcom/artemchep/keyguard/feature/auth/common/AutofillKt$autofill$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/auth/common/AutofillKt$autofill$1$1; +HSPLcom/artemchep/keyguard/feature/auth/common/AutofillKt$autofill$1$1;->(Landroidx/compose/ui/autofill/AutofillNode;)V +HSPLcom/artemchep/keyguard/feature/auth/common/AutofillKt$autofill$1$1;->invoke(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLcom/artemchep/keyguard/feature/auth/common/AutofillKt$autofill$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/auth/common/AutofillKt$autofill$1$2; +HSPLcom/artemchep/keyguard/feature/auth/common/AutofillKt$autofill$1$2;->(Landroidx/compose/ui/autofill/AutofillNode;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/feature/auth/common/AutofillKt$autofill$1$2;->invoke(Landroidx/compose/ui/focus/FocusState;)V +HSPLcom/artemchep/keyguard/feature/auth/common/AutofillKt$autofill$1$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/auth/common/Autofill_androidKt; +HSPLcom/artemchep/keyguard/feature/auth/common/Autofill_androidKt;->AutofillSideEffect(Ljava/lang/String;Landroidx/compose/ui/autofill/AutofillNode;Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/auth/common/Autofill_androidKt$AutofillSideEffect$1; +HSPLcom/artemchep/keyguard/feature/auth/common/Autofill_androidKt$AutofillSideEffect$1;->(Landroidx/compose/ui/autofill/AutofillNode;Landroid/view/autofill/AutofillManager;Landroid/view/View;Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/feature/auth/common/Autofill_androidKt$AutofillSideEffect$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/auth/common/Autofill_androidKt$AutofillSideEffect$1;->invoke()V +Lcom/artemchep/keyguard/feature/auth/common/SwitchFieldModel; +HSPLcom/artemchep/keyguard/feature/auth/common/SwitchFieldModel;->()V +HSPLcom/artemchep/keyguard/feature/auth/common/SwitchFieldModel;->(ZLkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/feature/auth/common/SwitchFieldModel;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/feature/auth/common/SwitchFieldModel;->getChecked()Z +HSPLcom/artemchep/keyguard/feature/auth/common/SwitchFieldModel;->getOnChange()Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/feature/auth/common/SwitchFieldModel$Companion; +HSPLcom/artemchep/keyguard/feature/auth/common/SwitchFieldModel$Companion;->()V +HSPLcom/artemchep/keyguard/feature/auth/common/SwitchFieldModel$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2; +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;->()V +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;->(Landroidx/compose/runtime/MutableState;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Vl;Lkotlinx/collections/immutable/ImmutableList;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;->(Landroidx/compose/runtime/MutableState;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Vl;Lkotlinx/collections/immutable/ImmutableList;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;->getAutocompleteOptions()Lkotlinx/collections/immutable/ImmutableList; +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;->getError()Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;->getHint()Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;->getOnChange()Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;->getState()Landroidx/compose/runtime/MutableState; +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;->getText()Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;->getVl()Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Vl; +Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Companion; +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Companion;->()V +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Companion;->of$default(Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Companion;Landroidx/compose/runtime/MutableState;Lcom/artemchep/keyguard/feature/auth/common/Validated;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2; +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Companion;->of(Landroidx/compose/runtime/MutableState;Lcom/artemchep/keyguard/feature/auth/common/Validated;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2; +Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Companion$of$1; +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Companion$of$1;->(Ljava/lang/Object;)V +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Companion$of$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Companion$of$1;->invoke(Ljava/lang/String;)V +Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Companion$of$2; +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Companion$of$2;->(Ljava/lang/Object;)V +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Companion$of$2;->set(Ljava/lang/Object;)V +Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Vl; +Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Vl$Type; +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Vl$Type;->$values()[Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Vl$Type; +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Vl$Type;->()V +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Vl$Type;->(Ljava/lang/String;I)V +HSPLcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Vl$Type;->values()[Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2$Vl$Type; +Lcom/artemchep/keyguard/feature/auth/common/Validated; +Lcom/artemchep/keyguard/feature/auth/common/Validated$Failure; +HSPLcom/artemchep/keyguard/feature/auth/common/Validated$Failure;->()V +HSPLcom/artemchep/keyguard/feature/auth/common/Validated$Failure;->(Ljava/lang/Object;Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/feature/auth/common/Validated$Failure;->getError()Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/auth/common/Validated$Failure;->getModel()Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/auth/common/Validated$Success; +HSPLcom/artemchep/keyguard/feature/auth/common/Validated$Success;->()V +HSPLcom/artemchep/keyguard/feature/auth/common/Validated$Success;->(Ljava/lang/Object;)V +HSPLcom/artemchep/keyguard/feature/auth/common/Validated$Success;->getModel()Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/auth/common/VisibilityKt; +HSPLcom/artemchep/keyguard/feature/auth/common/VisibilityKt;->VisibilityToggle(Lcom/artemchep/keyguard/feature/auth/common/VisibilityState;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/auth/common/VisibilityKt;->VisibilityToggle(ZZLkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/feature/auth/common/VisibilityKt$VisibilityToggle$1$1; +HSPLcom/artemchep/keyguard/feature/auth/common/VisibilityKt$VisibilityToggle$1$1;->(Lcom/artemchep/keyguard/feature/auth/common/VisibilityState;)V +Lcom/artemchep/keyguard/feature/auth/common/VisibilityKt$VisibilityToggle$2; +HSPLcom/artemchep/keyguard/feature/auth/common/VisibilityKt$VisibilityToggle$2;->(Lcom/artemchep/keyguard/feature/auth/common/VisibilityState;I)V +Lcom/artemchep/keyguard/feature/auth/common/VisibilityKt$VisibilityToggle$3; +HSPLcom/artemchep/keyguard/feature/auth/common/VisibilityKt$VisibilityToggle$3;->(Z)V +HSPLcom/artemchep/keyguard/feature/auth/common/VisibilityKt$VisibilityToggle$3;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/auth/common/VisibilityKt$VisibilityToggle$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/auth/common/VisibilityState; +HSPLcom/artemchep/keyguard/feature/auth/common/VisibilityState;->()V +HSPLcom/artemchep/keyguard/feature/auth/common/VisibilityState;->(ZZ)V +HSPLcom/artemchep/keyguard/feature/auth/common/VisibilityState;->(ZZILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/auth/common/VisibilityState;->isEnabled()Z +HSPLcom/artemchep/keyguard/feature/auth/common/VisibilityState;->isVisible()Z +Lcom/artemchep/keyguard/feature/auth/common/util/ValidationPassword; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidationPassword;->$values()[Lcom/artemchep/keyguard/feature/auth/common/util/ValidationPassword; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidationPassword;->()V +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidationPassword;->(Ljava/lang/String;I)V +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidationPassword;->values()[Lcom/artemchep/keyguard/feature/auth/common/util/ValidationPassword; +Lcom/artemchep/keyguard/feature/auth/common/util/ValidationTitle; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidationTitle;->$values()[Lcom/artemchep/keyguard/feature/auth/common/util/ValidationTitle; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidationTitle;->()V +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidationTitle;->(Ljava/lang/String;I)V +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidationTitle;->values()[Lcom/artemchep/keyguard/feature/auth/common/util/ValidationTitle; +Lcom/artemchep/keyguard/feature/auth/common/util/ValidatorPasswordKt; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorPasswordKt;->format(Lcom/artemchep/keyguard/feature/auth/common/util/ValidationPassword;Lcom/artemchep/keyguard/feature/navigation/state/TranslatorScope;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorPasswordKt;->validatePassword(Ljava/lang/String;)Lcom/artemchep/keyguard/feature/auth/common/util/ValidationPassword; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorPasswordKt;->validatedPassword(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/feature/navigation/state/TranslatorScope;)Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/feature/auth/common/util/ValidatorPasswordKt$WhenMappings; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorPasswordKt$WhenMappings;->()V +Lcom/artemchep/keyguard/feature/auth/common/util/ValidatorPasswordKt$validatedPassword$$inlined$map$1; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorPasswordKt$validatedPassword$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/feature/navigation/state/TranslatorScope;)V +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorPasswordKt$validatedPassword$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/auth/common/util/ValidatorPasswordKt$validatedPassword$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorPasswordKt$validatedPassword$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/feature/navigation/state/TranslatorScope;)V +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorPasswordKt$validatedPassword$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/auth/common/util/ValidatorPasswordKt$validatedPassword$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorPasswordKt$validatedPassword$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/feature/auth/common/util/ValidatorPasswordKt$validatedPassword$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorPasswordKt$validatedPassword$$inlined$map$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/auth/common/util/ValidatorTitleKt; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorTitleKt;->format(Lcom/artemchep/keyguard/feature/auth/common/util/ValidationTitle;Lcom/artemchep/keyguard/feature/navigation/state/TranslatorScope;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorTitleKt;->validateTitle(Ljava/lang/String;)Lcom/artemchep/keyguard/feature/auth/common/util/ValidationTitle; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorTitleKt;->validatedTitle(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/feature/navigation/state/TranslatorScope;)Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/feature/auth/common/util/ValidatorTitleKt$WhenMappings; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorTitleKt$WhenMappings;->()V +Lcom/artemchep/keyguard/feature/auth/common/util/ValidatorTitleKt$validatedTitle$$inlined$map$1; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorTitleKt$validatedTitle$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/feature/navigation/state/TranslatorScope;)V +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorTitleKt$validatedTitle$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/auth/common/util/ValidatorTitleKt$validatedTitle$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorTitleKt$validatedTitle$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/feature/navigation/state/TranslatorScope;)V +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorTitleKt$validatedTitle$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/auth/common/util/ValidatorTitleKt$validatedTitle$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorTitleKt$validatedTitle$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/feature/auth/common/util/ValidatorTitleKt$validatedTitle$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/auth/common/util/ValidatorTitleKt$validatedTitle$$inlined$map$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/biometric/BiometricPromptEffectKt; +HSPLcom/artemchep/keyguard/feature/biometric/BiometricPromptEffectKt;->BiometricPromptEffect(Lkotlinx/coroutines/flow/Flow;Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/biometric/BiometricPromptEffectKt$BiometricPromptEffect$1$1; +HSPLcom/artemchep/keyguard/feature/biometric/BiometricPromptEffectKt$BiometricPromptEffect$1$1;->(Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/feature/crashlytics/CrashlyticsMapKt; +HSPLcom/artemchep/keyguard/feature/crashlytics/CrashlyticsMapKt;->crashlyticsTap$default(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/feature/crashlytics/CrashlyticsMapKt;->crashlyticsTap(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/feature/crashlytics/CrashlyticsMapKt$crashlyticsTap$$inlined$handleErrorTap$default$1; +HSPLcom/artemchep/keyguard/feature/crashlytics/CrashlyticsMapKt$crashlyticsTap$$inlined$handleErrorTap$default$1;->(Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/feature/crashlytics/CrashlyticsMapKt$crashlyticsTap$$inlined$handleErrorTap$default$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/crashlytics/CrashlyticsMapKt$crashlyticsTap$$inlined$handleErrorTap$default$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/crashlytics/CrashlyticsMapKt$crashlyticsTap$$inlined$handleErrorTap$default$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/crashlytics/CrashlyticsMapKt$crashlyticsTap$$inlined$handleErrorTap$default$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/crashlytics/CrashlyticsMapKt$crashlyticsTap$1; +HSPLcom/artemchep/keyguard/feature/crashlytics/CrashlyticsMapKt$crashlyticsTap$1;->()V +HSPLcom/artemchep/keyguard/feature/crashlytics/CrashlyticsMapKt$crashlyticsTap$1;->()V +Lcom/artemchep/keyguard/feature/decorator/ItemDecorator; +Lcom/artemchep/keyguard/feature/decorator/ItemDecoratorNone; +HSPLcom/artemchep/keyguard/feature/decorator/ItemDecoratorNone;->()V +HSPLcom/artemchep/keyguard/feature/decorator/ItemDecoratorNone;->()V +Lcom/artemchep/keyguard/feature/duplicates/DuplicatesStateProducerKt; +HSPLcom/artemchep/keyguard/feature/duplicates/DuplicatesStateProducerKt;->createCipherSelectionFlow(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lcom/artemchep/keyguard/ui/selection/SelectionHandle;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/common/usecase/CipherToolbox;)Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/feature/duplicates/DuplicatesStateProducerKt$createCipherSelectionFlow$1; +HSPLcom/artemchep/keyguard/feature/duplicates/DuplicatesStateProducerKt$createCipherSelectionFlow$1;->(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lcom/artemchep/keyguard/common/usecase/CipherToolbox;Lcom/artemchep/keyguard/ui/selection/SelectionHandle;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/duplicates/DuplicatesStateProducerKt$createCipherSelectionFlow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/duplicates/DuplicatesStateProducerKt$createCipherSelectionFlow$1;->invoke(Ljava/util/List;Ljava/util/Set;Ljava/util/List;ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/duplicates/DuplicatesStateProducerKt$createCipherSelectionFlow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/favicon/Favicon; +HSPLcom/artemchep/keyguard/feature/favicon/Favicon;->()V +HSPLcom/artemchep/keyguard/feature/favicon/Favicon;->()V +HSPLcom/artemchep/keyguard/feature/favicon/Favicon;->launch(Lkotlinx/coroutines/CoroutineScope;Lcom/artemchep/keyguard/common/usecase/GetAccounts;)V +HSPLcom/artemchep/keyguard/feature/favicon/Favicon;->setServers(Ljava/util/List;)V +Lcom/artemchep/keyguard/feature/favicon/Favicon$launch$$inlined$map$1; +HSPLcom/artemchep/keyguard/feature/favicon/Favicon$launch$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/favicon/Favicon$launch$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/favicon/Favicon$launch$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/feature/favicon/Favicon$launch$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/feature/favicon/Favicon$launch$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/favicon/Favicon$launch$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/feature/favicon/Favicon$launch$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/feature/favicon/Favicon$launch$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/feature/favicon/Favicon$launch$2; +HSPLcom/artemchep/keyguard/feature/favicon/Favicon$launch$2;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/favicon/Favicon$launch$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/favicon/Favicon$launch$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/favicon/Favicon$launch$2;->invoke(Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/favicon/Favicon$launch$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/favicon/GravatarUrl; +Lcom/artemchep/keyguard/feature/generator/GeneratorRoute; +HSPLcom/artemchep/keyguard/feature/generator/GeneratorRoute;->()V +HSPLcom/artemchep/keyguard/feature/generator/GeneratorRoute;->(Lcom/artemchep/keyguard/feature/generator/GeneratorRoute$Args;)V +Lcom/artemchep/keyguard/feature/generator/GeneratorRoute$Args; +HSPLcom/artemchep/keyguard/feature/generator/GeneratorRoute$Args;->()V +HSPLcom/artemchep/keyguard/feature/generator/GeneratorRoute$Args;->(ZZ)V +Lcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt; +HSPLcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt;->mapLatestScoped(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function3;)V +HSPLcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$1$1; +HSPLcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$1$1;->(Lkotlin/jvm/functions/Function3;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$1$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$1$1$1; +HSPLcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$1$1$1;->(Lkotlin/jvm/functions/Function3;Ljava/lang/Object;Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$1$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$1$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$1$1$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducerKt$mapLatestScoped$1$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/BannerStatusBadgeContentModel; +PLcom/artemchep/keyguard/feature/home/BannerStatusBadgeContentModel;->(ILcom/artemchep/keyguard/feature/localization/TextHolder;Lcom/artemchep/keyguard/feature/localization/TextHolder;ZLkotlin/jvm/functions/Function0;)V +HSPLcom/artemchep/keyguard/feature/home/BannerStatusBadgeContentModel;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/feature/home/BannerStatusBadgeContentModel;->getCount()I +HSPLcom/artemchep/keyguard/feature/home/BannerStatusBadgeContentModel;->getError()Z +HSPLcom/artemchep/keyguard/feature/home/BannerStatusBadgeContentModel;->getOnClick()Lkotlin/jvm/functions/Function0; +HSPLcom/artemchep/keyguard/feature/home/BannerStatusBadgeContentModel;->getText()Lcom/artemchep/keyguard/feature/localization/TextHolder; +HSPLcom/artemchep/keyguard/feature/home/BannerStatusBadgeContentModel;->getTitle()Lcom/artemchep/keyguard/feature/localization/TextHolder; +Lcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt; +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt;->()V +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt;->()V +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt;->getLambda-1$common_playStoreRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt;->getLambda-2$common_playStoreRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt;->getLambda-4$common_playStoreRelease()Lkotlin/jvm/functions/Function3; +Lcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-1$1; +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-1$1;->()V +Lcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-2$1; +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-2$1;->invoke(Lcom/artemchep/keyguard/feature/home/BannerStatusBadgeContentModel;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-3$1; +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-3$1;->()V +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-3$1;->()V +Lcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-4$1; +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-4$1;->()V +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-4$1;->()V +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-4$1;->invoke(Lcom/artemchep/keyguard/feature/localization/TextHolder;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-4$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-5$1; +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-5$1;->()V +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-5$1;->()V +Lcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-6$1; +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-6$1;->()V +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-6$1;->()V +Lcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-7$1; +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-7$1;->()V +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-7$1;->()V +Lcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-8$1; +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-8$1;->()V +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-8$1;->()V +Lcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-9$1; +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-9$1;->()V +HSPLcom/artemchep/keyguard/feature/home/ComposableSingletons$HomeScreenKt$lambda-9$1;->()V +Lcom/artemchep/keyguard/feature/home/HomeLayout; +Lcom/artemchep/keyguard/feature/home/HomeLayout$Horizontal; +Lcom/artemchep/keyguard/feature/home/HomeLayout$Vertical; +HSPLcom/artemchep/keyguard/feature/home/HomeLayout$Vertical;->()V +HSPLcom/artemchep/keyguard/feature/home/HomeLayout$Vertical;->()V +Lcom/artemchep/keyguard/feature/home/HomeLayoutKt; +HSPLcom/artemchep/keyguard/feature/home/HomeLayoutKt;->()V +HSPLcom/artemchep/keyguard/feature/home/HomeLayoutKt;->ResponsiveLayout(Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/HomeLayoutKt;->getLocalHomeLayout()Landroidx/compose/runtime/ProvidableCompositionLocal; +Lcom/artemchep/keyguard/feature/home/HomeLayoutKt$LocalHomeLayout$1; +HSPLcom/artemchep/keyguard/feature/home/HomeLayoutKt$LocalHomeLayout$1;->()V +HSPLcom/artemchep/keyguard/feature/home/HomeLayoutKt$LocalHomeLayout$1;->()V +Lcom/artemchep/keyguard/feature/home/HomeLayoutKt$ResponsiveLayout$1; +HSPLcom/artemchep/keyguard/feature/home/HomeLayoutKt$ResponsiveLayout$1;->(Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/feature/home/HomeLayoutKt$ResponsiveLayout$1;->invoke(Landroidx/compose/foundation/layout/BoxWithConstraintsScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/HomeLayoutKt$ResponsiveLayout$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/HomeLayoutKt$ResponsiveLayout$1$1; +HSPLcom/artemchep/keyguard/feature/home/HomeLayoutKt$ResponsiveLayout$1$1;->(Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/feature/home/HomeLayoutKt$ResponsiveLayout$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/HomeLayoutKt$ResponsiveLayout$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/HomeScreenKt; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt;->()V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt;->BannerStatusBadge(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/State;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt;->BannerStatusBadgeContent(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Lcom/artemchep/keyguard/feature/home/BannerStatusBadgeContentModel;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt;->BottomNavigationControllerItem(Landroidx/compose/foundation/layout/RowScope;Ljava/util/List;Lcom/artemchep/keyguard/feature/navigation/Route;Landroidx/compose/ui/graphics/vector/ImageVector;Landroidx/compose/ui/graphics/vector/ImageVector;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt;->HomeEffect$lambda$0(Lkotlin/Lazy;)Lcom/artemchep/keyguard/core/store/DatabaseManager; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt;->HomeEffect(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt;->HomeScreen(Lcom/artemchep/keyguard/feature/navigation/Route;ZLandroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt;->HomeScreenContent(Lkotlinx/collections/immutable/PersistentList;Ljava/util/List;ZLandroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt;->NavigationIcon(ZLandroidx/compose/ui/graphics/vector/ImageVector;Landroidx/compose/ui/graphics/vector/ImageVector;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt;->access$BannerStatusBadge(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/State;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt;->access$BannerStatusBadgeContent(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Lcom/artemchep/keyguard/feature/home/BannerStatusBadgeContentModel;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt;->access$BottomNavigationControllerItem(Landroidx/compose/foundation/layout/RowScope;Ljava/util/List;Lcom/artemchep/keyguard/feature/navigation/Route;Landroidx/compose/ui/graphics/vector/ImageVector;Landroidx/compose/ui/graphics/vector/ImageVector;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt;->access$HomeEffect$lambda$0(Lkotlin/Lazy;)Lcom/artemchep/keyguard/core/store/DatabaseManager; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt;->access$NavigationIcon(ZLandroidx/compose/ui/graphics/vector/ImageVector;Landroidx/compose/ui/graphics/vector/ImageVector;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt;->access$getVaultRoute$p()Lcom/artemchep/keyguard/feature/home/vault/VaultRoute; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt;->isSelected(Ljava/util/List;Lcom/artemchep/keyguard/feature/navigation/Route;)Z +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$BannerStatusBadge$1; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$BannerStatusBadge$1;->(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/State;II)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$BannerStatusBadge$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$BannerStatusBadge$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$BannerStatusBadge$errorState$1$1; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$BannerStatusBadge$errorState$1$1;->(Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$BannerStatusBadge$errorState$1$1;->invoke()Lcom/artemchep/keyguard/feature/home/BannerStatusBadgeContentModel; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$BannerStatusBadge$errorState$1$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$BannerStatusBadge$errorState$1$1$2; +PLcom/artemchep/keyguard/feature/home/HomeScreenKt$BannerStatusBadge$errorState$1$1$2;->(Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;)V +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$BannerStatusBadgeContent$2; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$BannerStatusBadgeContent$2;->(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Lcom/artemchep/keyguard/feature/home/BannerStatusBadgeContentModel;II)V +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$BottomNavigationControllerItem$1; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$BottomNavigationControllerItem$1;->(Lcom/artemchep/keyguard/feature/navigation/NavigationController;Ljava/util/List;Lcom/artemchep/keyguard/feature/navigation/Route;)V +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$BottomNavigationControllerItem$2; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$BottomNavigationControllerItem$2;->(ZLandroidx/compose/ui/graphics/vector/ImageVector;Landroidx/compose/ui/graphics/vector/ImageVector;Lkotlin/jvm/functions/Function3;)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$BottomNavigationControllerItem$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$BottomNavigationControllerItem$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$$inlined$rememberInstance$1; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$$inlined$rememberInstance$1;->()V +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$$inlined$rememberInstance$2; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$$inlined$rememberInstance$2;->()V +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$1; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$1;->(Lkotlin/Lazy;Lkotlin/Lazy;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$1$1; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$1$1;->(Lkotlin/Lazy;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$1$1;->invoke(Lcom/artemchep/keyguard/data/Database;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$1$1$1; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$1$1$1;->([Lcom/artemchep/keyguard/data/bitwarden/Cipher;Lcom/artemchep/keyguard/data/Database;)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$1$1$1;->invoke(Lapp/cash/sqldelight/TransactionWithoutReturn;)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$2; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeEffect$2;->(I)V +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreen$1; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreen$1;->(Ljava/util/List;Z)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreen$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreen$1;->invoke(Lkotlinx/collections/immutable/PersistentList;Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1;->()V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1;->(ZLjava/util/List;Lkotlinx/collections/immutable/PersistentList;)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1;->access$invoke$lambda$6$lambda$0(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetNavLabel; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1;->access$invoke$lambda$6$lambda$2(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetAccountStatus; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1;->invoke$lambda$6$lambda$0(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetNavLabel; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1;->invoke$lambda$6$lambda$2(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetAccountStatus; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$1; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$1;->(Ljava/util/List;Lkotlinx/collections/immutable/PersistentList;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;)V +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$1$1; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$1$1;->(Lkotlinx/collections/immutable/PersistentList;)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$2; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$2;->(Landroidx/compose/runtime/State;Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/foundation/layout/WindowInsets;Ljava/util/List;Lkotlinx/collections/immutable/PersistentList;Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$2;->invoke(Landroidx/compose/animation/AnimatedVisibilityScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$2$1; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$2$1;->(Landroidx/compose/runtime/State;Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/foundation/layout/WindowInsets;Ljava/util/List;Lkotlinx/collections/immutable/PersistentList;Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$2$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$2$1$1$1$1$1; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$2$1$1$1$1$1;->(Lcom/artemchep/keyguard/feature/home/Rail;)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$2$1$1$1$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$2$1$1$1$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$2$1$isSyncingState$1$1; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$2$1$isSyncingState$1$1;->(Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$2$1$isSyncingState$1$1;->invoke()Ljava/lang/Boolean; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$1$2$2$1$isSyncingState$1$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$invoke$lambda$6$$inlined$rememberInstance$1; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$invoke$lambda$6$$inlined$rememberInstance$1;->()V +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$invoke$lambda$6$$inlined$rememberInstance$2; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$HomeScreenContent$1$invoke$lambda$6$$inlined$rememberInstance$2;->()V +Lcom/artemchep/keyguard/feature/home/HomeScreenKt$NavigationIcon$1; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$NavigationIcon$1;->(Landroidx/compose/ui/graphics/vector/ImageVector;Landroidx/compose/ui/graphics/vector/ImageVector;)V +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$NavigationIcon$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/HomeScreenKt$NavigationIcon$1;->invoke(ZLandroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/home/Rail; +HSPLcom/artemchep/keyguard/feature/home/Rail;->()V +HSPLcom/artemchep/keyguard/feature/home/Rail;->(Lcom/artemchep/keyguard/feature/navigation/Route;Landroidx/compose/ui/graphics/vector/ImageVector;Landroidx/compose/ui/graphics/vector/ImageVector;Lcom/artemchep/keyguard/feature/localization/TextHolder;)V +HSPLcom/artemchep/keyguard/feature/home/Rail;->getIcon()Landroidx/compose/ui/graphics/vector/ImageVector; +HSPLcom/artemchep/keyguard/feature/home/Rail;->getIconSelected()Landroidx/compose/ui/graphics/vector/ImageVector; +HSPLcom/artemchep/keyguard/feature/home/Rail;->getLabel()Lcom/artemchep/keyguard/feature/localization/TextHolder; +HSPLcom/artemchep/keyguard/feature/home/Rail;->getRoute()Lcom/artemchep/keyguard/feature/navigation/Route; +Lcom/artemchep/keyguard/feature/home/settings/SettingsRoute; +HSPLcom/artemchep/keyguard/feature/home/settings/SettingsRoute;->()V +HSPLcom/artemchep/keyguard/feature/home/settings/SettingsRoute;->()V +Lcom/artemchep/keyguard/feature/home/vault/ComposableSingletons$VaultScreenKt; +HSPLcom/artemchep/keyguard/feature/home/vault/ComposableSingletons$VaultScreenKt;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/ComposableSingletons$VaultScreenKt;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/ComposableSingletons$VaultScreenKt;->getLambda-1$common_playStoreRelease()Lkotlin/jvm/functions/Function3; +Lcom/artemchep/keyguard/feature/home/vault/ComposableSingletons$VaultScreenKt$lambda-1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/ComposableSingletons$VaultScreenKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/ComposableSingletons$VaultScreenKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/ComposableSingletons$VaultScreenKt$lambda-1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/ComposableSingletons$VaultScreenKt$lambda-1$1;->invoke(Lkotlinx/collections/immutable/PersistentList;Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/home/vault/VaultRoute; +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute;->(Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;)V +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute;->(Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute;->Content(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute;->hashCode()I +Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args; +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;->(Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args$AppBar;Lcom/artemchep/keyguard/common/model/DFilter;Lcom/artemchep/keyguard/feature/home/vault/search/sort/Sort;ZLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args$SearchBy;Ljava/lang/Boolean;ZZ)V +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;->(Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args$AppBar;Lcom/artemchep/keyguard/common/model/DFilter;Lcom/artemchep/keyguard/feature/home/vault/search/sort/Sort;ZLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args$SearchBy;Ljava/lang/Boolean;ZZILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;->getAppBar()Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args$AppBar; +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;->getCanAddSecrets()Z +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;->getCanAlwaysShowKeyboard()Z +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;->getCanQuickFilter()Z +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;->getFilter()Lcom/artemchep/keyguard/common/model/DFilter; +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;->getPreselect()Z +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;->getSort()Lcom/artemchep/keyguard/feature/home/vault/search/sort/Sort; +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;->hashCode()I +Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args$AppBar; +Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args$SearchBy; +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args$SearchBy;->$values()[Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args$SearchBy; +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args$SearchBy;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args$SearchBy;->(Ljava/lang/String;I)V +Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Companion; +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Companion;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/VaultRoute$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/home/vault/VaultScreenKt; +HSPLcom/artemchep/keyguard/feature/home/vault/VaultScreenKt;->VaultScreen(Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/home/vault/VaultScreenKt$VaultScreen$1; +HSPLcom/artemchep/keyguard/feature/home/vault/VaultScreenKt$VaultScreen$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListRoute;)V +HSPLcom/artemchep/keyguard/feature/home/vault/VaultScreenKt$VaultScreen$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/VaultScreenKt$VaultScreen$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/VaultScreenKt$VaultScreen$2; +HSPLcom/artemchep/keyguard/feature/home/vault/VaultScreenKt$VaultScreen$2;->(Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;I)V +Lcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt; +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt;->SearchTextField(Landroidx/compose/ui/Modifier;Ljava/lang/String;Ljava/lang/String;ZLkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt;->searchTextFieldBackground(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/ui/graphics/Shape;)Landroidx/compose/ui/Modifier; +Lcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$SearchTextField$1$1$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$SearchTextField$1$1$2$1;->(Lkotlin/jvm/functions/Function0;)V +Lcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$SearchTextField$1$1$3$1; +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$SearchTextField$1$1$3$1;->(Landroidx/compose/runtime/State;)V +Lcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$SearchTextField$1$1$4; +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$SearchTextField$1$1$4;->(Ljava/lang/String;Landroidx/compose/ui/text/TextStyle;)V +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$SearchTextField$1$1$4;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$SearchTextField$1$1$4;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$SearchTextField$1$1$6; +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$SearchTextField$1$1$6;->(Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/State;)V +Lcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$SearchTextField$2; +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$SearchTextField$2;->(Landroidx/compose/ui/Modifier;Ljava/lang/String;Ljava/lang/String;ZLkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;II)V +Lcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$searchTextFieldBackground$1; +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$searchTextFieldBackground$1;->(Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/ui/graphics/Shape;)V +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$searchTextFieldBackground$1;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$searchTextFieldBackground$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$searchTextFieldBackground$1$1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$searchTextFieldBackground$1$1$1;->(Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$searchTextFieldBackground$1$1$1;->invoke(Landroidx/compose/ui/graphics/drawscope/DrawScope;)V +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$searchTextFieldBackground$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$searchTextFieldBackground$1$isHighlightedState$1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$searchTextFieldBackground$1$isHighlightedState$1$1;->(Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$searchTextFieldBackground$1$isHighlightedState$1$1;->invoke()Ljava/lang/Boolean; +HSPLcom/artemchep/keyguard/feature/home/vault/component/SearchTextFieldKt$searchTextFieldBackground$1$isHighlightedState$1$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem; +Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item;->(Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;ZZILkotlin/jvm/functions/Function2;Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item;->copy$default(Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;ZZILkotlin/jvm/functions/Function2;Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item;->copy(Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;ZZILkotlin/jvm/functions/Function2;Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item;->getChecked()Z +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item;->getFilterSectionId()Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item;->getFilters()Ljava/util/Set; +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item;->getSectionId()Ljava/lang/String; +Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item$Companion; +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item$Companion;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item$id$1; +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item$id$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item$id$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item$id$1;->invoke(Lcom/artemchep/keyguard/common/model/DFilter$Primitive;)Ljava/lang/CharSequence; +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item$id$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Section; +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Section;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Section;->(Ljava/lang/String;Ljava/lang/String;ZLkotlin/jvm/functions/Function0;)V +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Section;->(Ljava/lang/String;Ljava/lang/String;ZLkotlin/jvm/functions/Function0;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Section;->getSectionId()Ljava/lang/String; +Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Section$Companion; +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Section$Companion;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Section$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/home/vault/model/SortItem; +Lcom/artemchep/keyguard/feature/home/vault/model/SortItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/model/SortItem$Item;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/model/SortItem$Item;->(Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;Landroidx/compose/ui/graphics/vector/ImageVector;Lcom/artemchep/keyguard/feature/localization/TextHolder;ZLkotlin/jvm/functions/Function0;)V +HSPLcom/artemchep/keyguard/feature/home/vault/model/SortItem$Item;->copy$default(Lcom/artemchep/keyguard/feature/home/vault/model/SortItem$Item;Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;Landroidx/compose/ui/graphics/vector/ImageVector;Lcom/artemchep/keyguard/feature/localization/TextHolder;ZLkotlin/jvm/functions/Function0;ILjava/lang/Object;)Lcom/artemchep/keyguard/feature/home/vault/model/SortItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/model/SortItem$Item;->copy(Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;Landroidx/compose/ui/graphics/vector/ImageVector;Lcom/artemchep/keyguard/feature/localization/TextHolder;ZLkotlin/jvm/functions/Function0;)Lcom/artemchep/keyguard/feature/home/vault/model/SortItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/model/SortItem$Item;->getConfig()Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder; +Lcom/artemchep/keyguard/feature/home/vault/model/SortItem$Section; +HSPLcom/artemchep/keyguard/feature/home/vault/model/SortItem$Section;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/model/SortItem$Section;->(Ljava/lang/String;Lcom/artemchep/keyguard/feature/localization/TextHolder;)V +Lcom/artemchep/keyguard/feature/home/vault/model/SortItem$Section$Companion; +HSPLcom/artemchep/keyguard/feature/home/vault/model/SortItem$Section$Companion;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/model/SortItem$Section$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/home/vault/model/VaultItem2; +Lcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$Item; +Lcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$Item$LocalState; +HSPLcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$Item$LocalState;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$Item$LocalState;->(Lcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$Item$OpenedState;Lcom/artemchep/keyguard/feature/attachments/SelectableItemState;)V +Lcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$Item$OpenedState; +HSPLcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$Item$OpenedState;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$Item$OpenedState;->(Z)V +Lcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$NoItems; +HSPLcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$NoItems;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$NoItems;->()V +Lcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$QuickFilters; +HSPLcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$QuickFilters;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$QuickFilters;->(Ljava/lang/String;Lkotlinx/collections/immutable/ImmutableList;)V +Lcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$QuickFilters$Companion; +HSPLcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$QuickFilters$Companion;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/model/VaultItem2$QuickFilters$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;->(Lcom/artemchep/keyguard/feature/home/vault/search/sort/Sort;ZZ)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;->(Lcom/artemchep/keyguard/feature/home/vault/search/sort/Sort;ZZILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;->getComparator()Lcom/artemchep/keyguard/feature/home/vault/search/sort/Sort; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;->hashCode()I +Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder$Companion; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder$Companion;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder$Creator; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder$Creator;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt;->getLambda-1$common_playStoreRelease()Lkotlin/jvm/functions/Function2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt;->getLambda-2$common_playStoreRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt;->getLambda-3$common_playStoreRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt;->getLambda-4$common_playStoreRelease()Lkotlin/jvm/functions/Function2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt;->getLambda-5$common_playStoreRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt;->getLambda-6$common_playStoreRelease()Lkotlin/jvm/functions/Function3; +Lcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-1$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-2$1;->invoke(Landroidx/compose/foundation/lazy/LazyItemScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-3$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-3$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-3$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-3$1;->invoke(Landroidx/compose/foundation/lazy/LazyItemScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-3$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-4$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-4$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-4$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-4$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-4$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-5$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-5$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-5$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-5$1;->invoke(Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-5$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-6$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-6$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-6$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-6$1;->invoke(Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListScreenKt$lambda-6$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt;->getLambda-1$common_playStoreRelease()Lkotlin/jvm/functions/Function2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt;->getLambda-2$common_playStoreRelease()Lkotlin/jvm/functions/Function2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt;->getLambda-3$common_playStoreRelease()Lkotlin/jvm/functions/Function2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt;->getLambda-4$common_playStoreRelease()Lkotlin/jvm/functions/Function2; +Lcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-1$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-2$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-3$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-3$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-3$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-4$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-4$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-4$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-5$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-5$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-5$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-6$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-6$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-6$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-7$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-7$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-7$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-8$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-8$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/ComposableSingletons$VaultListStateProducerKt$lambda-8$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function0;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;->getFilterFlow()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;->getOnClear()Lkotlin/jvm/functions/Function0; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;->getOnToggle()Lkotlin/jvm/functions/Function2; +Lcom/artemchep/keyguard/feature/home/vault/screen/FilterParams; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilterParams;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilterParams;->(Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/FilterParams$Section;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilterParams;->(Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/FilterParams$Section;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilterParams;->getDeeplinkCustomFilter()Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilterParams;->getSection()Lcom/artemchep/keyguard/feature/home/vault/screen/FilterParams$Section; +Lcom/artemchep/keyguard/feature/home/vault/screen/FilterParams$Section; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilterParams$Section;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilterParams$Section;->(ZZZZZZ)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilterParams$Section;->(ZZZZZZILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilterParams$Section;->getAccount()Z +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilterParams$Section;->getCollection()Z +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilterParams$Section;->getFolder()Z +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilterParams$Section;->getMisc()Z +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilterParams$Section;->getOrganization()Z +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilterParams$Section;->getType()Z +Lcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo;->(ILjava/util/List;Ljava/util/List;Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;Lcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder;Lcom/artemchep/keyguard/feature/home/vault/search/IndexedText;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo;->(ILjava/util/List;Ljava/util/List;Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;Lcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder;Lcom/artemchep/keyguard/feature/home/vault/search/IndexedText;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo;->copy$default(Lcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo;ILjava/util/List;Ljava/util/List;Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;Lcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder;Lcom/artemchep/keyguard/feature/home/vault/search/IndexedText;ILjava/lang/Object;)Lcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo;->copy(ILjava/util/List;Ljava/util/List;Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;Lcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder;Lcom/artemchep/keyguard/feature/home/vault/search/IndexedText;)Lcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo;->getCount()I +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo;->getFilterConfig()Lcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo;->getList()Ljava/util/List; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo;->getOrderConfig()Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo;->getPreferredList()Ljava/util/List; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo;->getQueryConfig()Lcom/artemchep/keyguard/feature/home/vault/search/IndexedText; +Lcom/artemchep/keyguard/feature/home/vault/screen/OhOhOh; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/OhOhOh;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/OhOhOh;->(Ljava/lang/String;II)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/OhOhOh;->(Ljava/lang/String;IIILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/OhOhOh;->getRevision()I +Lcom/artemchep/keyguard/feature/home/vault/screen/OhOhOh$Creator; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/OhOhOh$Creator;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/OurFilterResult; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/OurFilterResult;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/OurFilterResult;->(ILjava/util/List;Lkotlin/jvm/functions/Function0;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/OurFilterResult;->(ILjava/util/List;Lkotlin/jvm/functions/Function0;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/OurFilterResult;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/feature/home/vault/screen/OurFilterResult;->getItems()Ljava/util/List; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/OurFilterResult;->getOnClear()Lkotlin/jvm/functions/Function0; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/OurFilterResult;->getRev()I +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt;->access$ah$createFolderFilterAction(Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;Ljava/util/Set;Ljava/lang/String;Landroidx/compose/ui/graphics/vector/ImageVector;ZI)Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt;->ah$aaa$default(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;Lkotlinx/coroutines/flow/MutableStateFlow;Ljava/lang/String;Ljava/lang/String;ZILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt;->ah$aaa(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;Lkotlinx/coroutines/flow/MutableStateFlow;Ljava/lang/String;Ljava/lang/String;Z)Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt;->ah$createCollectionFilterAction$default(Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;Ljava/util/Set;Ljava/lang/String;Landroidx/compose/ui/graphics/vector/ImageVector;ILjava/lang/Object;)Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt;->ah$createCollectionFilterAction(Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;Ljava/util/Set;Ljava/lang/String;Landroidx/compose/ui/graphics/vector/ImageVector;)Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt;->ah$createFilterAction$default(Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;Ljava/lang/String;Ljava/util/Set;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/ui/icons/AccentColors;Landroidx/compose/ui/graphics/vector/ImageVector;ZIILjava/lang/Object;)Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt;->ah$createFilterAction(Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;Ljava/lang/String;Ljava/util/Set;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/ui/icons/AccentColors;Landroidx/compose/ui/graphics/vector/ImageVector;ZI)Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt;->ah$createFolderFilterAction(Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;Ljava/util/Set;Ljava/lang/String;Landroidx/compose/ui/graphics/vector/ImageVector;ZI)Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt;->ah$createOrganizationFilterAction$default(Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;Ljava/util/Set;Ljava/lang/String;Landroidx/compose/ui/graphics/vector/ImageVector;ILjava/lang/Object;)Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt;->ah$createOrganizationFilterAction(Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;Ljava/util/Set;Ljava/lang/String;Landroidx/compose/ui/graphics/vector/ImageVector;)Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt;->ah$createTypeFilterAction$default(Ljava/lang/String;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;Lcom/artemchep/keyguard/common/model/DSecret$Type;Ljava/lang/String;ILjava/lang/Object;)Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt;->ah$createTypeFilterAction(Ljava/lang/String;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;Lcom/artemchep/keyguard/common/model/DSecret$Type;Ljava/lang/String;)Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt;->ah$filterSection(Lkotlinx/coroutines/flow/Flow;Z)Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt;->ah(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lorg/kodein/di/DirectDI;Lkotlin/jvm/functions/Function1;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;Lcom/artemchep/keyguard/feature/home/vault/screen/FilterParams;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt;->createFilter(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt;->mapCiphers(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$combine$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$combine$1;->([Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$combine$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$combine$1$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$combine$1$2;->([Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$combine$1$2;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$combine$1$2;->invoke()[Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$combine$1$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$combine$1$3;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$combine$1$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$combine$1$3;->invoke(Lkotlinx/coroutines/flow/FlowCollector;[Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$combine$1$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$1$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$2;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$2;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$2$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$2$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$2$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$2$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$2$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$2$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$2$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$3;->(Lkotlinx/coroutines/flow/Flow;Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$3;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$3$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$3$2;->(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$3$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$3$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$3$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$3$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$3$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$4; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$4;->(Lkotlinx/coroutines/flow/Flow;Ljava/util/List;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$4;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$4$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$4$2;->(Lkotlinx/coroutines/flow/FlowCollector;Ljava/util/List;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$4$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$4$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$4$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$4$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$4$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$5; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$5;->(Lkotlinx/coroutines/flow/Flow;Ljava/util/Set;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lkotlin/jvm/functions/Function1;Lcom/artemchep/keyguard/common/usecase/GetFolderTree;Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$5;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$5$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$5$2;->(Lkotlinx/coroutines/flow/FlowCollector;Ljava/util/Set;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lkotlin/jvm/functions/Function1;Lcom/artemchep/keyguard/common/usecase/GetFolderTree;Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$5$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$5$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$5$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$5$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$5$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$6; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$6;->(Lkotlinx/coroutines/flow/Flow;Ljava/util/Set;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lkotlin/jvm/functions/Function1;Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$6;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$6$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$6$2;->(Lkotlinx/coroutines/flow/FlowCollector;Ljava/util/Set;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lkotlin/jvm/functions/Function1;Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$6$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$6$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$6$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$6$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$6$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$7; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$7;->(Lkotlinx/coroutines/flow/Flow;Ljava/util/Set;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lkotlin/jvm/functions/Function1;Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$7;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$7$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$7$2;->(Lkotlinx/coroutines/flow/FlowCollector;Ljava/util/Set;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lkotlin/jvm/functions/Function1;Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$7$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$7$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$7$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$7$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$7$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$8; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$8;->(Lkotlinx/coroutines/flow/Flow;Ljava/util/List;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$8;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$8$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$8$2;->(Lkotlinx/coroutines/flow/FlowCollector;Ljava/util/List;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$8$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$8$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$8$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$8$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$8$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$9; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$9;->(Lkotlinx/coroutines/flow/Flow;Ljava/util/List;Ljava/util/List;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$9;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$9$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$9$2;->(Lkotlinx/coroutines/flow/FlowCollector;Ljava/util/List;Ljava/util/List;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$9$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$9$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$9$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$9$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$$inlined$map$9$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$3;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$3;->invoke(Ljava/util/List;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$4; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$4;->(Lorg/kodein/di/DirectDI;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$4;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$4;->invoke(Ljava/util/List;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$4;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$4$checkedSectionIds$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$4$checkedSectionIds$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$4$checkedSectionIds$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$4$checkedSectionIds$1;->invoke(Lcom/artemchep/keyguard/feature/home/vault/model/FilterItem;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$4$checkedSectionIds$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$5; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$5;->(Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$5;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$5;->invoke(Ljava/util/List;Lcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$5;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$$inlined$map$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;ZLjava/lang/String;Ljava/lang/String;Lkotlinx/coroutines/flow/MutableStateFlow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$$inlined$map$1$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;ZLjava/lang/String;Ljava/lang/String;Lkotlinx/coroutines/flow/MutableStateFlow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$$inlined$map$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$1;->invoke(Ljava/util/List;Lcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$2$1$sectionItem$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$aaa$2$1$sectionItem$1;->(Ljava/lang/String;Lkotlinx/coroutines/flow/MutableStateFlow;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$collapsedSectionIdsSink$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$collapsedSectionIdsSink$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$collapsedSectionIdsSink$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$collapsedSectionIdsSink$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$collapsedSectionIdsSink$1;->invoke()Ljava/util/List; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createCollectionFilterAction$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createCollectionFilterAction$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createCollectionFilterAction$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createCollectionFilterAction$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createCollectionFilterAction$1;->invoke(Ljava/lang/String;)Lcom/artemchep/keyguard/common/model/DFilter$ById; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createFilterAction$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createFilterAction$1;->(Landroidx/compose/ui/graphics/vector/ImageVector;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createFolderFilterAction$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createFolderFilterAction$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createFolderFilterAction$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createFolderFilterAction$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createFolderFilterAction$1;->invoke(Ljava/lang/String;)Lcom/artemchep/keyguard/common/model/DFilter$ById; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createOrganizationFilterAction$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createOrganizationFilterAction$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createOrganizationFilterAction$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createOrganizationFilterAction$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$createOrganizationFilterAction$1;->invoke(Ljava/lang/String;)Lcom/artemchep/keyguard/common/model/DFilter$ById; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterAccountListFlow$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterAccountListFlow$2;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterAccountListFlow$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterAccountListFlow$2;->invoke(Ljava/util/List;Ljava/util/Set;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterAccountListFlow$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterAccountsWithCiphers$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterAccountsWithCiphers$1;->(Lkotlin/jvm/functions/Function1;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterCollectionListFlow$1$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterCollectionListFlow$1$2;->(Lkotlin/jvm/functions/Function1;Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterCollectionListFlow$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterCollectionListFlow$2;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterCollectionListFlow$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterCollectionListFlow$2;->invoke(Ljava/util/List;Ljava/util/Set;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterCollectionListFlow$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterCollectionsWithCiphers$1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterCollectionsWithCiphers$1$1;->(Lkotlin/jvm/functions/Function1;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterFolderListFlow$1$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterFolderListFlow$1$2;->(Lkotlin/jvm/functions/Function1;Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterFolderListFlow$1$p$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterFolderListFlow$1$p$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterFolderListFlow$1$p$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterFolderListFlow$1$p$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterFolderListFlow$1$p$2;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterFolderListFlow$1$p$2;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterFolderListFlow$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterFolderListFlow$2;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterFolderListFlow$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterFolderListFlow$2;->invoke(Ljava/util/List;Ljava/util/Set;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterFolderListFlow$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterFoldersWithCiphers$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterFoldersWithCiphers$1;->(Lkotlin/jvm/functions/Function1;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterOrganizationListFlow$1$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterOrganizationListFlow$1$2;->(Lkotlin/jvm/functions/Function1;Ljava/lang/String;Lcom/artemchep/keyguard/feature/home/vault/screen/CreateFilterResult;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterOrganizationListFlow$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterOrganizationListFlow$2;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterOrganizationListFlow$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterOrganizationListFlow$2;->invoke(Ljava/util/List;Ljava/util/Set;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterOrganizationListFlow$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterOrganizationsWithCiphers$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterOrganizationsWithCiphers$1;->(Lkotlin/jvm/functions/Function1;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterTypesWithCiphers$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$filterTypesWithCiphers$1;->(Lkotlin/jvm/functions/Function1;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$lambda$17$$inlined$sortedBy$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$lambda$17$$inlined$sortedBy$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$lambda$20$$inlined$sortedBy$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$lambda$20$$inlined$sortedBy$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$lambda$23$$inlined$sortedBy$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$ah$lambda$23$$inlined$sortedBy$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$createFilter$filterSink$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$createFilter$filterSink$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$createFilter$filterSink$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$createFilter$filterSink$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$createFilter$filterSink$2;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$createFilter$filterSink$2;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$createFilter$filterSink$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$createFilter$filterSink$3;->(Lcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$createFilter$filterSink$3;->invoke()Lcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$createFilter$filterSink$3;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$createFilter$onClear$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$createFilter$onClear$1;->(Lkotlinx/coroutines/flow/MutableStateFlow;Lcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$createFilter$onToggle$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$createFilter$onToggle$1;->(Lkotlinx/coroutines/flow/MutableStateFlow;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$mapCiphers$$inlined$map$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$mapCiphers$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$mapCiphers$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$mapCiphers$$inlined$map$1$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$mapCiphers$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$mapCiphers$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$mapCiphers$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$mapCiphers$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$mapCiphers$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListFilterKt$mapCiphers$$inlined$map$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListRoute; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListRoute;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListRoute;->(Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListRoute;->Content(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListRoute;->hashCode()I +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt;->VaultHomeScreenListPane(Landroidx/compose/ui/Modifier;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;Lcom/artemchep/keyguard/ui/focus/FocusRequester2;Ljava/lang/String;Ljava/lang/String;ZZZLandroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt;->VaultListFilterButton(Landroidx/compose/ui/Modifier;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt;->VaultListScreen(Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt;->VaultListSortButton(Landroidx/compose/ui/Modifier;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt;->access$VaultListFilterButton(Landroidx/compose/ui/Modifier;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt;->access$VaultListSortButton(Landroidx/compose/ui/Modifier;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items$Revision;Landroidx/compose/foundation/lazy/LazyListState;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$2;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items$Revision;Landroidx/compose/foundation/lazy/LazyListState;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$4; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$4;->(Landroidx/compose/material3/TopAppBarScrollBehavior;Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/ui/focus/FocusRequester2;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;Z)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$4;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$4;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$4$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$4$1;->(Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/ui/focus/FocusRequester2;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;Z)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$4$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$4$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$4$1$1$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$4$1$1$2;->(Z)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$4$1$1$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$4$1$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$4$1$1$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$4$1$1$3;->(ZZLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$4$1$1$3;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$4$1$1$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$5; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$5;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$5;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$5;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$6; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$6;->(Landroidx/compose/runtime/MutableState;Landroidx/compose/runtime/State;Landroidx/compose/runtime/MutableState;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$6;->invoke(Lcom/artemchep/keyguard/ui/FabScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$6;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$6$1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$6$1$1;->(Landroidx/compose/runtime/MutableState;Landroidx/compose/runtime/State;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$6$1$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$6$1$2$1;->(Landroidx/compose/runtime/MutableState;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$6$1$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$6$1$3;->(Landroidx/compose/runtime/MutableState;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$7; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$7;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;Landroidx/compose/material/pullrefresh/PullRefreshState;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$7;->invoke(Lcom/artemchep/keyguard/ui/OverlayScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$7;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;ZZ)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1;->invoke(Landroidx/compose/foundation/lazy/LazyListScope;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1$1; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1$1;->invoke(Landroidx/compose/foundation/lazy/LazyItemScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1$2;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1$2;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1$invoke$$inlined$items$default$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1$invoke$$inlined$items$default$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1$invoke$$inlined$items$default$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1$invoke$$inlined$items$default$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1$invoke$$inlined$items$default$2;->(Lkotlin/jvm/functions/Function1;Ljava/util/List;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1$invoke$$inlined$items$default$3; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1$invoke$$inlined$items$default$3;->(Lkotlin/jvm/functions/Function1;Ljava/util/List;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1$invoke$$inlined$items$default$4; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$8$1$invoke$$inlined$items$default$4;->(Ljava/util/List;ZLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;Z)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$pullRefreshState$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultHomeScreenListPane$pullRefreshState$1;->(Lcom/artemchep/keyguard/ui/focus/FocusRequester2;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$1$1;->(Landroidx/compose/runtime/MutableState;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$1$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$1$1;->invoke()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$2;->(Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$2$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$2$1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$2$1$1;->(Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$2$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$2$1$1;->emit(Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$2$childBackStackFlow$1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$2$childBackStackFlow$1$1;->(Lkotlinx/collections/immutable/PersistentList;Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$2$childBackStackFlow$1$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$2$childBackStackFlow$1$1;->invoke()Ljava/util/List; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$3$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$3$1;->(Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$4; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$4;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$5; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$5;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;Lcom/artemchep/keyguard/ui/focus/FocusRequester2;Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$5;->invoke(Lcom/artemchep/keyguard/feature/twopane/TwoPaneScaffoldScope;Landroidx/compose/ui/Modifier;ZLandroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$5;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$6; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$6;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;Lcom/artemchep/keyguard/ui/focus/FocusRequester2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$6;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$6;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$7; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$7;->(Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$7;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListScreenKt$VaultListScreen$7;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->(ILcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;Ljava/util/List;Ljava/util/List;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;ZLjava/util/List;Ljava/util/List;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$SideEffects;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->(ILcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;Ljava/util/List;Ljava/util/List;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;ZLjava/util/List;Ljava/util/List;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$SideEffects;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->copy$default(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;ILcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;Ljava/util/List;Ljava/util/List;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;ZLjava/util/List;Ljava/util/List;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$SideEffects;ILjava/lang/Object;)Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->copy(ILcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;Ljava/util/List;Ljava/util/List;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;ZLjava/util/List;Ljava/util/List;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$SideEffects;)Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->getActions()Ljava/util/List; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->getClearFilters()Lkotlin/jvm/functions/Function0; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->getClearSort()Lkotlin/jvm/functions/Function0; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->getContent()Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->getFilters()Ljava/util/List; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->getPrimaryActions()Ljava/util/List; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->getQuery()Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->getSelectCipher()Lkotlin/jvm/functions/Function1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->getShowKeyboard()Z +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->getSideEffects()Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$SideEffects; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;->getSort()Ljava/util/List; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Companion; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Companion;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$AddAccount; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$AddAccount;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$AddAccount;->(Lkotlin/jvm/functions/Function0;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$AddAccount;->getOnAddAccount()Lkotlin/jvm/functions/Function0; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$AddAccount$Companion; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$AddAccount$Companion;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$AddAccount$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items$Revision;Lcom/artemchep/keyguard/ui/Selection;Ljava/util/List;ILkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items$Revision;Lcom/artemchep/keyguard/ui/Selection;Ljava/util/List;ILkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items$Companion; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items$Companion;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items$Revision; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items$Revision;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items$Revision;->(ILcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items$Revision$Mutable;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items$Revision$Mutable;Lkotlin/jvm/functions/Function2;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items$Revision$Companion; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items$Revision$Companion;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items$Revision$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items$Revision$Mutable; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Skeleton; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Skeleton;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Skeleton;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$SideEffects; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$SideEffects;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$SideEffects;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$SideEffects;->(Lkotlinx/coroutines/flow/Flow;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$SideEffects;->getShowBiometricPromptFlow()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$SideEffects$Companion; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$SideEffects$Companion;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$SideEffects$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt;->access$hahah-Samhc0A(Lorg/kodein/di/DirectDI;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/common/model/AutofillTarget;Lcom/artemchep/keyguard/common/usecase/GetSuggestions;Lcom/artemchep/keyguard/common/usecase/DateFormatter;JJ)Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt;->hahah-Samhc0A(Lorg/kodein/di/DirectDI;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/common/model/AutofillTarget;Lcom/artemchep/keyguard/common/usecase/GetSuggestions;Lcom/artemchep/keyguard/common/usecase/DateFormatter;JJ)Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt;->vaultListScreenState-ML3G3h0(Lorg/kodein/di/DirectDI;Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;JJLcom/artemchep/keyguard/AppMode;Lcom/artemchep/keyguard/common/service/deeplink/DeeplinkService;Lcom/artemchep/keyguard/common/usecase/GetSuggestions;Lcom/artemchep/keyguard/common/usecase/GetAccounts;Lcom/artemchep/keyguard/common/usecase/GetProfiles;Lcom/artemchep/keyguard/common/usecase/GetCanWrite;Lcom/artemchep/keyguard/common/usecase/GetCiphers;Lcom/artemchep/keyguard/common/usecase/GetFolders;Lcom/artemchep/keyguard/common/usecase/GetCollections;Lcom/artemchep/keyguard/common/usecase/GetOrganizations;Lcom/artemchep/keyguard/common/usecase/GetTotpCode;Lcom/artemchep/keyguard/common/usecase/GetConcealFields;Lcom/artemchep/keyguard/common/usecase/GetAppIcons;Lcom/artemchep/keyguard/common/usecase/GetWebsiteIcons;Lcom/artemchep/keyguard/common/usecase/GetPasswordStrength;Lcom/artemchep/keyguard/common/usecase/GetCipherOpenedHistory;Lcom/artemchep/keyguard/common/usecase/PasskeyTargetCheck;Lcom/artemchep/keyguard/common/usecase/RenameFolderById;Lcom/artemchep/keyguard/common/usecase/ClearVaultSession;Lcom/artemchep/keyguard/common/usecase/CipherToolbox;Lcom/artemchep/keyguard/common/usecase/QueueSyncAll;Lcom/artemchep/keyguard/common/usecase/SupervisorRead;Lcom/artemchep/keyguard/common/usecase/DateFormatter;Lcom/artemchep/keyguard/common/service/clipboard/ClipboardService;Landroidx/compose/runtime/Composer;III)Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt;->vaultListScreenState-RIQooxk(Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;JJLcom/artemchep/keyguard/AppMode;Landroidx/compose/runtime/Composer;I)Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$2$orderComparator$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$2$orderComparator$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$3;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$3;->invoke(Lcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo;Lkotlin/Pair;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$4; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$4;->(Lorg/kodein/di/DirectDI;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$4;->invoke(Lcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo;Lcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$4;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$4;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$5; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$5;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$5;->invoke(Lcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo;Lcom/artemchep/keyguard/feature/home/vault/search/IndexedText;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$5;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$5;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$6; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$6;->(JJLkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$6;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$6;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$6;->invoke(Lkotlin/Pair;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$6;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$7$items$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$7$items$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/FilteredBoo;Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;Lcom/artemchep/keyguard/feature/decorator/ItemDecorator;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$7$items$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah$7$items$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/common/model/AutofillTarget;Lcom/artemchep/keyguard/common/usecase/GetSuggestions;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$1$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/common/model/AutofillTarget;Lcom/artemchep/keyguard/common/usecase/GetSuggestions;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$2;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$2;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$2$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$2$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$2$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$2$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$2$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$2$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$2$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$3;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/common/usecase/DateFormatter;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$3;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$3$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$3$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/common/usecase/DateFormatter;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$3$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$3$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$3$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$hahah-Samhc0A$$inlined$map$3$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2;->(Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;Lcom/artemchep/keyguard/common/service/clipboard/ClipboardService;Lcom/artemchep/keyguard/common/usecase/GetCiphers;Lcom/artemchep/keyguard/common/usecase/SupervisorRead;Lcom/artemchep/keyguard/common/usecase/GetConcealFields;Lcom/artemchep/keyguard/common/usecase/GetAppIcons;Lcom/artemchep/keyguard/common/usecase/GetWebsiteIcons;Lcom/artemchep/keyguard/common/usecase/GetOrganizations;Lcom/artemchep/keyguard/AppMode;Lorg/kodein/di/DirectDI;Lcom/artemchep/keyguard/common/usecase/GetSuggestions;Lcom/artemchep/keyguard/common/usecase/DateFormatter;JJLcom/artemchep/keyguard/common/service/deeplink/DeeplinkService;Lcom/artemchep/keyguard/common/usecase/GetAccounts;Lcom/artemchep/keyguard/common/usecase/GetProfiles;Lcom/artemchep/keyguard/common/usecase/GetFolders;Lcom/artemchep/keyguard/common/usecase/GetCollections;Lcom/artemchep/keyguard/common/usecase/GetCanWrite;Lcom/artemchep/keyguard/common/usecase/CipherToolbox;Lcom/artemchep/keyguard/common/usecase/QueueSyncAll;Lcom/artemchep/keyguard/common/usecase/ClearVaultSession;Lcom/artemchep/keyguard/common/usecase/RenameFolderById;Lcom/artemchep/keyguard/common/usecase/PasskeyTargetCheck;Lcom/artemchep/keyguard/common/usecase/GetTotpCode;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2;->invoke(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2;->invokeSuspend$createComparatorAction$default(Lkotlinx/coroutines/flow/MutableStateFlow;Ljava/lang/String;Ldev/icerock/moko/resources/StringResource;Landroidx/compose/ui/graphics/vector/ImageVector;Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;ILjava/lang/Object;)Lcom/artemchep/keyguard/feature/home/vault/model/SortItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2;->invokeSuspend$createComparatorAction(Lkotlinx/coroutines/flow/MutableStateFlow;Ljava/lang/String;Ldev/icerock/moko/resources/StringResource;Landroidx/compose/ui/graphics/vector/ImageVector;Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;)Lcom/artemchep/keyguard/feature/home/vault/model/SortItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$1;->(Lcom/artemchep/keyguard/ui/selection/SelectionHandle;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$1;->invoke(Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$2;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$2;->invoke(Ljava/util/List;Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$4; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$4;->(Landroidx/compose/runtime/MutableState;Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;Lcom/artemchep/keyguard/common/util/flow/EventFlow;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lcom/artemchep/keyguard/AppMode;Lkotlinx/coroutines/flow/MutableStateFlow;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$4;->invoke(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState$Content$Items;Lcom/artemchep/keyguard/feature/home/vault/screen/OurFilterResult;Lkotlin/Pair;Lkotlin/Pair;ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$4;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$4;->invokeSuspend$createTypeAction(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lcom/artemchep/keyguard/AppMode;Ljava/lang/String;Lcom/artemchep/keyguard/common/model/DSecret$Type;)Lcom/artemchep/keyguard/ui/FlatItemAction; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$4;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$4$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$4$3;->(Ljava/lang/Object;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$4$content$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$4$content$1;->(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$4$createTypeAction$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$4$createTypeAction$1;->(Lcom/artemchep/keyguard/AppMode;Ljava/lang/String;Lcom/artemchep/keyguard/common/model/DSecret$Type;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$5; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$5;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$5;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$5;->invoke(ZLjava/util/Set;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$5;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$6; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$6;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$6;->invoke(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$6;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$6;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$7; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$7;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$7;->invoke(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;Lkotlinx/collections/immutable/PersistentList;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$7;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$7;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$8; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$8;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$8;->invoke(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListState;ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$8;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$8;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$ConfigMapper; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$ConfigMapper;->(ZZZ)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Fuu; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Fuu;->(Lcom/artemchep/keyguard/feature/home/vault/model/SortItem$Item;Ljava/util/List;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Fuu;->getItem()Lcom/artemchep/keyguard/feature/home/vault/model/SortItem$Item; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Fuu;->getSubItems()Ljava/util/List; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Rev; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Rev;->(ILjava/util/List;I)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Rev;->copy$default(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Rev;ILjava/util/List;IILjava/lang/Object;)Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Rev; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Rev;->copy(ILjava/util/List;I)Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Rev; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Rev;->getCount()I +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Rev;->getList()Ljava/util/List; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Rev;->getRevision()I +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$1$1$1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$1$1$1$1;->(Lkotlinx/collections/immutable/PersistentList;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$1$1$1$1;->invoke(Lcom/artemchep/keyguard/ui/ContextItemBuilder;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$1$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionAlwaysShowKeyboardFlow$1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionAlwaysShowKeyboardFlow$1$1;->(ZLkotlinx/coroutines/flow/MutableStateFlow;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionAlwaysShowKeyboardFlow$1$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionAlwaysShowKeyboardFlow$1$2;->(Ljava/lang/Object;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionAlwaysShowKeyboardFlow$1$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionAlwaysShowKeyboardFlow$1$3;->(Ljava/lang/Object;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionDownloadsItem$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionDownloadsItem$1;->(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionGroup2Flow$1$1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionGroup2Flow$1$1$1;->([Lcom/artemchep/keyguard/ui/FlatItemAction;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionGroup2Flow$1$1$1;->invoke(Lcom/artemchep/keyguard/ui/ContextItemBuilder;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionGroup2Flow$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionGroup3Flow$1$1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionGroup3Flow$1$1$1;->([Lcom/artemchep/keyguard/ui/FlatItemAction;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionGroup3Flow$1$1$1;->invoke(Lcom/artemchep/keyguard/ui/ContextItemBuilder;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionGroup3Flow$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionGroupFlow$1$1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionGroupFlow$1$1$1;->([Lcom/artemchep/keyguard/ui/FlatItemAction;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionGroupFlow$1$1$1;->invoke(Lcom/artemchep/keyguard/ui/ContextItemBuilder;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionGroupFlow$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionLockVaultItem$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionLockVaultItem$1;->(Lcom/artemchep/keyguard/common/usecase/ClearVaultSession;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionSyncAccountsFlow$1$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionSyncAccountsFlow$1$1;->(Z)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionSyncAccountsFlow$1$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionSyncAccountsFlow$1$2;->(Lcom/artemchep/keyguard/common/usecase/QueueSyncAll;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionTrashItem$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$actionsFlow$1$actionTrashItem$1;->(Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$ciphersFlow$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$ciphersFlow$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$ciphersFlow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$ciphersFlow$1;->invoke(Ljava/util/List;Ljava/util/Map;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$ConfigMapper;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$ciphersFlow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$ciphersFlow$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$ciphersFlow$2;->(Lcom/artemchep/keyguard/AppMode;Lcom/artemchep/keyguard/common/usecase/PasskeyTargetCheck;Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;Lcom/artemchep/keyguard/ui/selection/SelectionHandle;Lkotlinx/coroutines/flow/MutableStateFlow;Lcom/artemchep/keyguard/common/usecase/CopyText;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lcom/artemchep/keyguard/common/usecase/GetTotpCode;Lcom/artemchep/keyguard/common/util/flow/EventFlow;Lorg/kodein/di/DirectDI;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$ciphersFlow$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$ciphersFlow$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/Triple;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$ciphersFlow$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$configFlow$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$configFlow$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$configFlow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$configFlow$1;->invoke(ZZZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$configFlow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$createComparatorAction$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$createComparatorAction$1;->(Lkotlinx/coroutines/flow/MutableStateFlow;Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$fffFolderId$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$fffFolderId$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$fffFolderId$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$3;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$3;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$4; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$4;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$4;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$5; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$5;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$5;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$6; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$6;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$6;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$7; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$7;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$filterListFlow$7;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$1$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$2;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$2;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$2$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$2$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$2$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$2$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$2$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$2$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$2$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$3;->(Lkotlinx/coroutines/flow/Flow;Ljava/util/Map;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$3;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$3$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$3$2;->(Lkotlinx/coroutines/flow/FlowCollector;Ljava/util/Map;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$3$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$3$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$3$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$3$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$3$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$4; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$4;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$4;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$4$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$4$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$4$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$4$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$4$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$4$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$4$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$5; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$5;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$5;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$5$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$5$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$5$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$5$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$5$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$5$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$5$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$6; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$6;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/AppMode;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$6;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$6$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$6$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/AppMode;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$6$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$6$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$6$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$6$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$7; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$7;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$7;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$7$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$7$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$7$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$7$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$7$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$7$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$7$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$8; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$8;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$8;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$8$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$8$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$8$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$8$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$8$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$8$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$8$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$9; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$9;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$9;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$9$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$9$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$9$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$9$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$9$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$9$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$$inlined$map$9$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$1;->([Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$1$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$1$2;->([Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$1$2;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$1$2;->invoke()[Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$1$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$1$3;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$1$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$1$3;->invoke(Lkotlinx/coroutines/flow/FlowCollector;[Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$1$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$2;->([Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$2;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$2$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$2$2;->([Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$2$2;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$2$2;->invoke()[Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$2$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$2$3;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$2$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$2$3;->invoke(Lkotlinx/coroutines/flow/FlowCollector;[Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$2$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$3;->([Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$3;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$3$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$3$2;->([Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$3$2;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$3$2;->invoke()[Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$3$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$3$3;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$3$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$3$3;->invoke(Lkotlinx/coroutines/flow/FlowCollector;[Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$3$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$4; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$4;->([Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$4;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$4$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$4$2;->([Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$4$2;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$4$2;->invoke()[Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$4$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$4$3;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$4$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$4$3;->invoke(Lkotlinx/coroutines/flow/FlowCollector;[Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$combine$4$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lkotlinx/coroutines/flow/MutableStateFlow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$1$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lkotlinx/coroutines/flow/MutableStateFlow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$2;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lcom/artemchep/keyguard/common/usecase/QueueSyncAll;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$2;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$2$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$2$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lcom/artemchep/keyguard/common/usecase/QueueSyncAll;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$2$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$2$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$2$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$2$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$2$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$3;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Ljava/lang/String;Lcom/artemchep/keyguard/common/usecase/RenameFolderById;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$3;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$3$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$3$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Ljava/lang/String;Lcom/artemchep/keyguard/common/usecase/RenameFolderById;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$3$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$3$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$3$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$3$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$3$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$4; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$4;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$4;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$4$2; +PLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$4$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$4$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$4$2$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$4$2$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$4$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$invokeSuspend$lambda$22$$inlined$map$4$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemSink$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemSink$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemSink$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemSink$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemSink$1;->invoke()Ljava/lang/String; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2;->(Lkotlin/jvm/internal/Ref$ObjectRef;Lkotlinx/coroutines/flow/MutableStateFlow;Lkotlinx/coroutines/flow/MutableStateFlow;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2;->invoke(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Rev;Lcom/artemchep/keyguard/ui/Selection;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2$2;->(Ljava/util/List;Lkotlin/jvm/internal/Ref$ObjectRef;Ljava/util/List;Lkotlinx/coroutines/flow/MutableStateFlow;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Rev;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2$3;->(Lkotlinx/coroutines/flow/MutableStateFlow;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2$a$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2$a$1;->(Lkotlinx/coroutines/flow/MutableStateFlow;Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$Rev;Ljava/util/List;II)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2$b$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2$b$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2$a$1;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2$c$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2$c$1;->(Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$itemsFlow$2$a$1;)V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$querySink$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$querySink$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$querySink$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$querySink$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$querySink$1;->invoke()Ljava/lang/String; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$scrollPositionSink$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$scrollPositionSink$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$scrollPositionSink$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$scrollPositionSink$1;->invoke()Lcom/artemchep/keyguard/feature/home/vault/screen/OhOhOh; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$scrollPositionSink$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$showKeyboardSink$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$showKeyboardSink$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$showKeyboardSink$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$showKeyboardSink$1;->invoke()Ljava/lang/Boolean; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$showKeyboardSink$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$sortSink$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$sortSink$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$sortSink$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$sortSink$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$sortSink$2;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$sortSink$2;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$sortSink$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$sortSink$3;->(Lcom/artemchep/keyguard/feature/home/vault/VaultRoute$Args;Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder;)V +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$sortSink$3;->invoke()Lcom/artemchep/keyguard/feature/home/vault/screen/ComparatorHolder; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState$2$sortSink$3;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$10; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$10;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$11; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$11;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$12; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$12;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$13; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$13;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$14; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$14;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$15; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$15;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$16; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$16;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$17; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$17;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$18; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$18;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$19; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$19;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$20; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$20;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$21; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$21;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$22; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$22;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$23; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$23;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$4; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$4;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$5; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$5;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$6; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$6;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$7; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$7;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$8; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$8;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$9; +HSPLcom/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducerKt$vaultListScreenState_RIQooxk$lambda$0$$inlined$instance$default$9;->()V +Lcom/artemchep/keyguard/feature/home/vault/screen/VaultViewRoute; +Lcom/artemchep/keyguard/feature/home/vault/search/IndexedText; +Lcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder; +HSPLcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder;->(Ljava/util/Map;)V +HSPLcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder;->getFilter()Lcom/artemchep/keyguard/common/model/DFilter$And; +HSPLcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder;->getId()I +HSPLcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder;->getState()Ljava/util/Map; +Lcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder$1; +HSPLcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder$1;->(Lcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder;)V +HSPLcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder$1;->invoke()Lcom/artemchep/keyguard/common/model/DFilter$And; +HSPLcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder$2; +HSPLcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder$2;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder$2;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder$Companion; +HSPLcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder$Companion;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/AlphabeticalSort; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/AlphabeticalSort;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/AlphabeticalSort;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/AlphabeticalSort$1; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/AlphabeticalSort$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/AlphabeticalSort$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/AlphabeticalSort$Creator; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/AlphabeticalSort$Creator;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/LastCreatedSort; +Lcom/artemchep/keyguard/feature/home/vault/search/sort/LastModifiedSort; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/LastModifiedSort;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/LastModifiedSort;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/LastModifiedSort$1; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/LastModifiedSort$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/LastModifiedSort$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/LastModifiedSort$Creator; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/LastModifiedSort$Creator;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/LastModifiedSort$LastModifiedRawComparator; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/LastModifiedSort$LastModifiedRawComparator;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/LastModifiedSort$LastModifiedRawComparator;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/LastModifiedSort$special$$inlined$thenBy$1; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/LastModifiedSort$special$$inlined$thenBy$1;->(Ljava/util/Comparator;Ljava/util/Comparator;)V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordLastModifiedSort; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordLastModifiedSort;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordLastModifiedSort;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordLastModifiedSort$1; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordLastModifiedSort$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordLastModifiedSort$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordLastModifiedSort$Creator; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordLastModifiedSort$Creator;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordLastModifiedSort$PasswordLastModifiedRawComparator; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordLastModifiedSort$PasswordLastModifiedRawComparator;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordLastModifiedSort$PasswordLastModifiedRawComparator;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordLastModifiedSort$special$$inlined$thenBy$1; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordLastModifiedSort$special$$inlined$thenBy$1;->(Ljava/util/Comparator;Ljava/util/Comparator;)V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordSort; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordSort;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordSort;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordSort$1; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordSort$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordSort$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordSort$Creator; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordSort$Creator;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordStrengthSort; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordStrengthSort;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordStrengthSort;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordStrengthSort$1; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordStrengthSort$1;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordStrengthSort$1;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordStrengthSort$Creator; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordStrengthSort$Creator;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordStrengthSort$PasswordStrengthRawComparator; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordStrengthSort$PasswordStrengthRawComparator;->()V +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordStrengthSort$PasswordStrengthRawComparator;->()V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordStrengthSort$special$$inlined$thenBy$1; +HSPLcom/artemchep/keyguard/feature/home/vault/search/sort/PasswordStrengthSort$special$$inlined$thenBy$1;->(Ljava/util/Comparator;Ljava/util/Comparator;)V +Lcom/artemchep/keyguard/feature/home/vault/search/sort/PureSort; +Lcom/artemchep/keyguard/feature/home/vault/search/sort/Sort; +Lcom/artemchep/keyguard/feature/keyguard/AppRoute; +HSPLcom/artemchep/keyguard/feature/keyguard/AppRoute;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/AppRoute;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/AppRoute;->Content(Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/keyguard/AppScreenKt; +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt;->AppScreen(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt;->ManualAppScreen$lambda$6$lambda$3(Landroidx/compose/runtime/MutableState;)Lcom/artemchep/keyguard/common/model/VaultState; +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt;->ManualAppScreen$lambda$6$lambda$4(Landroidx/compose/runtime/MutableState;Lcom/artemchep/keyguard/common/model/VaultState;)V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt;->ManualAppScreen$lambda$6$lambda$5(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/UnlockUseCase; +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt;->ManualAppScreen(Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt;->ManualAppScreenOnCreate(Lcom/artemchep/keyguard/common/model/VaultState$Create;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt;->ManualAppScreenOnLoading(Lcom/artemchep/keyguard/common/model/VaultState$Loading;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt;->ManualAppScreenOnMain(Lcom/artemchep/keyguard/common/model/VaultState$Main;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt;->ManualAppScreenOnUnlock(Lcom/artemchep/keyguard/common/model/VaultState$Unlock;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt;->access$ManualAppScreen$lambda$6$lambda$3(Landroidx/compose/runtime/MutableState;)Lcom/artemchep/keyguard/common/model/VaultState; +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt;->access$ManualAppScreen$lambda$6$lambda$4(Landroidx/compose/runtime/MutableState;Lcom/artemchep/keyguard/common/model/VaultState;)V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt;->access$ManualAppScreen$lambda$6$lambda$5(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/UnlockUseCase; +Lcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$1; +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$1;->(Lkotlinx/coroutines/flow/StateFlow;Lkotlin/Lazy;Landroidx/compose/runtime/MutableState;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$1$1; +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$1$1;->(Landroidx/compose/runtime/MutableState;)V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$1$1;->emit(Lcom/artemchep/keyguard/common/model/VaultState;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$2; +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$2;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$2;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$2;->invoke(Lcom/artemchep/keyguard/common/model/VaultState;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$3; +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$3;->(Lkotlin/jvm/functions/Function3;)V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$3;->invoke(Lcom/artemchep/keyguard/common/model/VaultState;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$1$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$2; +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$2;->(Lkotlin/jvm/functions/Function3;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$lambda$6$$inlined$rememberInstance$1; +HSPLcom/artemchep/keyguard/feature/keyguard/AppScreenKt$ManualAppScreen$lambda$6$$inlined$rememberInstance$1;->()V +Lcom/artemchep/keyguard/feature/keyguard/ComposableSingletons$AppScreenKt; +HSPLcom/artemchep/keyguard/feature/keyguard/ComposableSingletons$AppScreenKt;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/ComposableSingletons$AppScreenKt;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/ComposableSingletons$AppScreenKt;->getLambda-1$common_playStoreRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/feature/keyguard/ComposableSingletons$AppScreenKt;->getLambda-2$common_playStoreRelease()Lkotlin/jvm/functions/Function2; +Lcom/artemchep/keyguard/feature/keyguard/ComposableSingletons$AppScreenKt$lambda-1$1; +HSPLcom/artemchep/keyguard/feature/keyguard/ComposableSingletons$AppScreenKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/ComposableSingletons$AppScreenKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/ComposableSingletons$AppScreenKt$lambda-1$1;->invoke(Lcom/artemchep/keyguard/common/model/VaultState;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/ComposableSingletons$AppScreenKt$lambda-1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/ComposableSingletons$AppScreenKt$lambda-2$1; +HSPLcom/artemchep/keyguard/feature/keyguard/ComposableSingletons$AppScreenKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/ComposableSingletons$AppScreenKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/ComposableSingletons$AppScreenKt$lambda-2$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/ComposableSingletons$AppScreenKt$lambda-2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/main/MainRoute; +HSPLcom/artemchep/keyguard/feature/keyguard/main/MainRoute;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/main/MainRoute;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/main/MainRoute;->Content(Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/keyguard/main/MainScreenKt; +HSPLcom/artemchep/keyguard/feature/keyguard/main/MainScreenKt;->MainScreen(Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt;->getLambda-1$common_playStoreRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt;->getLambda-2$common_playStoreRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt;->getLambda-3$common_playStoreRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt;->getLambda-4$common_playStoreRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt;->getLambda-5$common_playStoreRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt;->getLambda-7$common_playStoreRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt;->getLambda-8$common_playStoreRelease()Lkotlin/jvm/functions/Function3; +Lcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-1$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-1$1;->invoke(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-2$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-2$1;->invoke(Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-3$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-3$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-3$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-3$1;->invoke(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-3$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-4$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-4$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-4$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-4$1;->invoke(Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-4$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-5$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-5$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-5$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-5$1;->invoke(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-5$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-6$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-6$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-6$1;->()V +Lcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-7$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-7$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-7$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-7$1;->invoke(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-7$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-8$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-8$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-8$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-8$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/ComposableSingletons$SetupScreenKt$lambda-8$1;->invoke(ZLandroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/keyguard/setup/CreateVaultWithBiometric; +Lcom/artemchep/keyguard/feature/keyguard/setup/CreateVaultWithPassword; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/CreateVaultWithPassword;->(Lcom/artemchep/keyguard/feature/loading/LoadingTask;Lcom/artemchep/keyguard/common/model/VaultState$Create$WithPassword;)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/CreateVaultWithPassword;->(Lcom/artemchep/keyguard/feature/loading/LoadingTask;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/CreateVaultWithPassword;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/CreateVaultWithPassword;->invoke(Ljava/lang/String;)V +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupRoute; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupRoute;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupRoute;->(Lcom/artemchep/keyguard/common/model/VaultState$Create$WithPassword;Lcom/artemchep/keyguard/common/model/VaultState$Create$WithBiometric;)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupRoute;->Content(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupRoute;->hashCode()I +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt;->SetupContent$lambda$7(Landroidx/compose/runtime/State;)Lcom/artemchep/keyguard/feature/auth/common/SwitchFieldModel; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt;->SetupContent$lambda$9(Landroidx/compose/runtime/State;)Lkotlin/jvm/functions/Function0; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt;->SetupContent(Landroidx/compose/foundation/layout/ColumnScope;Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt;->SetupScreen(Lcom/artemchep/keyguard/common/model/VaultState$Create$WithPassword;Lcom/artemchep/keyguard/common/model/VaultState$Create$WithBiometric;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt;->SetupScreen(Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt;->SetupScreenCreateVaultTitle(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt;->SetupScreenSkeleton(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt;->access$SetupContent$lambda$9(Landroidx/compose/runtime/State;)Lkotlin/jvm/functions/Function0; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt;->access$SetupScreenCreateVaultTitle(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt;->keyguardSpan()Landroidx/compose/ui/text/AnnotatedString; +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$1$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$1$1;->(Landroidx/compose/ui/focus/FocusRequester;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$2; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$2;->(Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState;)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$2;->invoke(Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$5; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$5;->(Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState;)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$5;->invoke(Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$5;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$6$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$6$1;->(Landroidx/compose/runtime/State;)V +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$7$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$7$1;->(Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$7$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$7$1;->invoke()V +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$8; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$8;->(Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState;)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$8;->invoke(Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$8;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$9; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$9;->(Landroidx/compose/foundation/layout/ColumnScope;Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState;I)V +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$keyboardOnGo$1$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupContent$keyboardOnGo$1$1;->(Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState;)V +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupScreen$3; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupScreen$3;->(Lcom/artemchep/keyguard/common/model/VaultState$Create$WithPassword;Lcom/artemchep/keyguard/common/model/VaultState$Create$WithBiometric;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupScreen$3;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupScreen$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupScreen$4; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupScreen$4;->(Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState;)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupScreen$4;->invoke(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupScreenKt$SetupScreen$4;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState;->(Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState$SideEffects;Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;Lcom/artemchep/keyguard/feature/auth/common/SwitchFieldModel;Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState$Biometric;ZLkotlin/jvm/functions/Function0;)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState;->getBiometric()Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState$Biometric; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState;->getCrashlytics()Lcom/artemchep/keyguard/feature/auth/common/SwitchFieldModel; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState;->getOnCreateVault()Lkotlin/jvm/functions/Function0; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState;->getPassword()Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState;->getSideEffects()Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState$SideEffects; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState;->isLoading()Z +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState$Biometric; +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState$Companion; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState$Companion;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState$SideEffects; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState$SideEffects;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState$SideEffects;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState$SideEffects;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState$SideEffects;->getShowBiometricPromptFlow()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupState$SideEffects$Companion; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState$SideEffects$Companion;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupState$SideEffects$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt;->access$biometricStateFlow(Lkotlinx/coroutines/flow/MutableStateFlow;Z)Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt;->biometricStateFlow(Lkotlinx/coroutines/flow/MutableStateFlow;Z)Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt;->setupScreenState(Lcom/artemchep/keyguard/common/model/VaultState$Create$WithPassword;Lcom/artemchep/keyguard/common/model/VaultState$Create$WithBiometric;Landroidx/compose/runtime/Composer;I)Lcom/artemchep/keyguard/common/model/Loadable; +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1;->(Lcom/artemchep/keyguard/common/model/VaultState$Create$WithPassword;Lcom/artemchep/keyguard/common/model/VaultState$Create$WithBiometric;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1;->invoke(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$1;->(Landroidx/compose/runtime/MutableState;Lkotlinx/coroutines/flow/MutableStateFlow;Lcom/artemchep/keyguard/common/util/flow/EventFlow;Lcom/artemchep/keyguard/feature/keyguard/setup/CreateVaultWithBiometric;Lcom/artemchep/keyguard/feature/keyguard/setup/CreateVaultWithPassword;Lcom/artemchep/keyguard/feature/loading/LoadingTask;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$1;->invoke(Lcom/artemchep/keyguard/feature/auth/common/Validated;ZLcom/artemchep/keyguard/feature/keyguard/setup/SetupState$Biometric;ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$1$state$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$1$state$1;->(Ljava/lang/Object;)V +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$1$state$2; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$1$state$2;->(Ljava/lang/Object;)V +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$biometricSink$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$biometricSink$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$biometricSink$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$biometricSink$1;->invoke()Ljava/lang/Boolean; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$biometricSink$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$crashlyticsSink$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$crashlyticsSink$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$crashlyticsSink$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$crashlyticsSink$1;->invoke()Ljava/lang/Boolean; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$crashlyticsSink$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$passwordSink$1; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$passwordSink$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$passwordSink$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$passwordSink$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/setup/SetupStateProducerKt$setupScreenState$1$1$passwordSink$1;->invoke()Ljava/lang/String; +Lcom/artemchep/keyguard/feature/keyguard/unlock/BiometricStatePrecomputed; +Lcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt;->getLambda-1$common_playStoreRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt;->getLambda-2$common_playStoreRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt;->getLambda-3$common_playStoreRelease()Lkotlin/jvm/functions/Function3; +Lcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt$lambda-1$1; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt$lambda-1$1;->invoke(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt$lambda-1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt$lambda-2$1; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt$lambda-2$1;->()V +Lcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt$lambda-3$1; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt$lambda-3$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt$lambda-3$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt$lambda-3$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt$lambda-3$1;->invoke(ZLandroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt$lambda-4$1; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt$lambda-4$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/ComposableSingletons$UnlockScreenKt$lambda-4$1;->()V +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockRoute; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockRoute;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockRoute;->(Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithPassword;Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithBiometric;Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockRoute;->Content(Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt;->UnlockScreen$lambda$3(Landroidx/compose/runtime/State;)Z +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt;->UnlockScreen(Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithPassword;Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithBiometric;Ljava/lang/String;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt;->UnlockScreen(Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt;->UnlockScreenSkeleton(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt;->UnlockScreenTheVaultIsLockedTitle(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt;->access$UnlockScreen$lambda$3(Landroidx/compose/runtime/State;)Z +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt;->access$UnlockScreenTheVaultIsLockedTitle(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt;->getUnlockScreenActionPadding()F +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt;->getUnlockScreenTitlePadding()F +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$3; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$3;->(Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithPassword;Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithBiometric;Ljava/lang/String;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$3;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$4; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$4;->(Lcom/artemchep/keyguard/ui/focus/FocusRequester2;Landroidx/compose/runtime/State;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$4;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$4;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$5; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$5;->(Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState;)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$5;->invoke(Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$5;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6;->(Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState;Lcom/artemchep/keyguard/ui/focus/FocusRequester2;)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6;->access$invoke$lambda$6$lambda$3(Landroidx/compose/runtime/State;)Lkotlin/jvm/functions/Function0; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6;->invoke$lambda$6$lambda$3(Landroidx/compose/runtime/State;)Lkotlin/jvm/functions/Function0; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6;->invoke(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6$2$keyboardOnGo$1$1; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6$2$keyboardOnGo$1$1;->(Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState;)V +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6$3$1$1; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6$3$1$1;->(Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6$3$1$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6$3$1$1;->invoke()V +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6$3$2; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6$3$2;->(Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState;)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6$3$2;->invoke(Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6$3$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6$3$3; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockScreenKt$UnlockScreen$6$3$3;->(Landroidx/compose/runtime/State;)V +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState;->(Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState$SideEffects;Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState$Biometric;Ljava/lang/String;ZLkotlinx/collections/immutable/ImmutableList;Lkotlin/jvm/functions/Function0;)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState;->getActions()Lkotlinx/collections/immutable/ImmutableList; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState;->getBiometric()Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState$Biometric; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState;->getLockReason()Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState;->getPassword()Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState;->getSideEffects()Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState$SideEffects; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState;->getUnlockVaultByMasterPassword()Lkotlin/jvm/functions/Function0; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState;->isLoading()Z +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState$Biometric; +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState$Companion; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState$Companion;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState$SideEffects; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState$SideEffects;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState$SideEffects;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState$SideEffects;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState$SideEffects;->getShowBiometricPromptFlow()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState$SideEffects$Companion; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState$SideEffects$Companion;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockState$SideEffects$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt;->access$getDEFAULT_PASSWORD$p()Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt;->unlockScreenState(Lcom/artemchep/keyguard/common/usecase/ClearData;Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithPassword;Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithBiometric;Ljava/lang/String;Landroidx/compose/runtime/Composer;II)Lcom/artemchep/keyguard/common/model/Loadable; +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1;->(Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithPassword;Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithBiometric;Lcom/artemchep/keyguard/common/usecase/ClearData;Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1;->invoke(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$1; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$1;->(Landroidx/compose/runtime/MutableState;Lcom/artemchep/keyguard/feature/keyguard/unlock/BiometricStatePrecomputed;Lkotlinx/coroutines/flow/SharedFlow;Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockVaultWithPassword;Ljava/lang/String;Lkotlinx/collections/immutable/PersistentList;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$1;->invoke(Lcom/artemchep/keyguard/feature/auth/common/Validated;ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$actions$1; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$actions$1;->(Lcom/artemchep/keyguard/common/usecase/ClearData;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;)V +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$biometricPromptFlow$1; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$biometricPromptFlow$1;->(Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockVaultWithBiometric;Lcom/artemchep/keyguard/feature/loading/LoadingTask;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$biometricPromptFlow$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$biometricPromptFlow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$biometricPromptFlow$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$biometricPromptFlow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$passwordSink$1; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$passwordSink$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$passwordSink$1;->()V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$passwordSink$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducerKt$unlockScreenState$1$passwordSink$1;->invoke()Ljava/lang/String; +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockVaultWithBiometric; +Lcom/artemchep/keyguard/feature/keyguard/unlock/UnlockVaultWithPassword; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockVaultWithPassword;->(Lcom/artemchep/keyguard/feature/loading/LoadingTask;Lcom/artemchep/keyguard/common/model/VaultState$Unlock$WithPassword;)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockVaultWithPassword;->(Lcom/artemchep/keyguard/feature/loading/LoadingTask;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockVaultWithPassword;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/keyguard/unlock/UnlockVaultWithPassword;->invoke(Ljava/lang/String;)V +Lcom/artemchep/keyguard/feature/loading/LoadingScreenKt; +HSPLcom/artemchep/keyguard/feature/loading/LoadingScreenKt;->LoadingScreen(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/loading/LoadingScreenKt;->LoadingScreenContent(Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/loading/LoadingTask; +HSPLcom/artemchep/keyguard/feature/loading/LoadingTask;->()V +HSPLcom/artemchep/keyguard/feature/loading/LoadingTask;->(Lcom/artemchep/keyguard/feature/navigation/state/TranslatorScope;Lkotlinx/coroutines/CoroutineScope;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/feature/loading/LoadingTask;->(Lcom/artemchep/keyguard/feature/navigation/state/TranslatorScope;Lkotlinx/coroutines/CoroutineScope;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/loading/LoadingTask;->access$isWorkingSink$p(Lcom/artemchep/keyguard/feature/loading/LoadingTask;)Lkotlinx/coroutines/flow/MutableStateFlow; +HSPLcom/artemchep/keyguard/feature/loading/LoadingTask;->execute(Lkotlin/jvm/functions/Function1;Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/feature/loading/LoadingTask;->getErrorFlow()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/feature/loading/LoadingTask;->isExecutingFlow()Lkotlinx/coroutines/flow/MutableStateFlow; +Lcom/artemchep/keyguard/feature/loading/LoadingTask$1; +HSPLcom/artemchep/keyguard/feature/loading/LoadingTask$1;->(Lcom/artemchep/keyguard/feature/navigation/state/TranslatorScope;)V +Lcom/artemchep/keyguard/feature/loading/LoadingTask$execute$1; +HSPLcom/artemchep/keyguard/feature/loading/LoadingTask$execute$1;->(Lcom/artemchep/keyguard/feature/loading/LoadingTask;Lkotlin/jvm/functions/Function1;Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/loading/LoadingTask$execute$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/loading/LoadingTask$execute$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/loading/LoadingTask$special$$inlined$map$1; +HSPLcom/artemchep/keyguard/feature/loading/LoadingTask$special$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/loading/LoadingTask$special$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/loading/LoadingTask$special$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/feature/loading/LoadingTask$special$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +Lcom/artemchep/keyguard/feature/localization/TextHolder; +Lcom/artemchep/keyguard/feature/localization/TextHolder$Res; +HSPLcom/artemchep/keyguard/feature/localization/TextHolder$Res;->()V +HSPLcom/artemchep/keyguard/feature/localization/TextHolder$Res;->(Ldev/icerock/moko/resources/StringResource;)V +HSPLcom/artemchep/keyguard/feature/localization/TextHolder$Res;->getData()Ldev/icerock/moko/resources/StringResource; +Lcom/artemchep/keyguard/feature/localization/TextHolder$Value; +HSPLcom/artemchep/keyguard/feature/localization/TextHolder$Value;->()V +PLcom/artemchep/keyguard/feature/localization/TextHolder$Value;->(Ljava/lang/String;)V +PLcom/artemchep/keyguard/feature/localization/TextHolder$Value;->getData()Ljava/lang/String; +Lcom/artemchep/keyguard/feature/localization/TextHolderKt; +HSPLcom/artemchep/keyguard/feature/localization/TextHolderKt;->textResource(Lcom/artemchep/keyguard/feature/localization/TextHolder;Landroidx/compose/runtime/Composer;I)Ljava/lang/String; +Lcom/artemchep/keyguard/feature/localization/TextResourceKt; +HSPLcom/artemchep/keyguard/feature/localization/TextResourceKt;->textResource(Ldev/icerock/moko/resources/StringResource;Lcom/artemchep/keyguard/platform/LeContext;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/localization/TextResourceKt;->textResource(Ldev/icerock/moko/resources/StringResource;Lcom/artemchep/keyguard/platform/LeContext;[Ljava/lang/Object;)Ljava/lang/String; +Lcom/artemchep/keyguard/feature/navigation/BackHandler; +HSPLcom/artemchep/keyguard/feature/navigation/BackHandler;->()V +HSPLcom/artemchep/keyguard/feature/navigation/BackHandler;->(Lkotlinx/coroutines/flow/MutableStateFlow;Lkotlinx/coroutines/flow/MutableStateFlow;)V +HSPLcom/artemchep/keyguard/feature/navigation/BackHandler;->(Lkotlinx/coroutines/flow/MutableStateFlow;Lkotlinx/coroutines/flow/MutableStateFlow;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/navigation/BackHandler;->getEek()Lkotlinx/coroutines/flow/MutableStateFlow; +HSPLcom/artemchep/keyguard/feature/navigation/BackHandler;->register(Lcom/artemchep/keyguard/feature/navigation/NavigationController;Ljava/util/List;)Lkotlin/jvm/functions/Function0; +Lcom/artemchep/keyguard/feature/navigation/BackHandler$Entry; +HSPLcom/artemchep/keyguard/feature/navigation/BackHandler$Entry;->()V +HSPLcom/artemchep/keyguard/feature/navigation/BackHandler$Entry;->(Lcom/artemchep/keyguard/feature/navigation/NavigationController;Ljava/util/List;)V +HSPLcom/artemchep/keyguard/feature/navigation/BackHandler$Entry;->getBackStack()Ljava/util/List; +HSPLcom/artemchep/keyguard/feature/navigation/BackHandler$Entry;->getController()Lcom/artemchep/keyguard/feature/navigation/NavigationController; +Lcom/artemchep/keyguard/feature/navigation/BackHandler$register$1; +HSPLcom/artemchep/keyguard/feature/navigation/BackHandler$register$1;->(Lcom/artemchep/keyguard/feature/navigation/BackHandler;Ljava/lang/String;)V +Lcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt; +HSPLcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt;->()V +HSPLcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt;->()V +HSPLcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt;->getLambda-1$common_playStoreRelease()Lkotlin/jvm/functions/Function4; +HSPLcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt;->getLambda-2$common_playStoreRelease()Lkotlin/jvm/functions/Function3; +Lcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt$lambda-1$1; +HSPLcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt$lambda-1$1;->invoke(Landroidx/compose/animation/AnimatedContentScope;Lcom/artemchep/keyguard/feature/navigation/Foo;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt$lambda-1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt$lambda-1$1$1; +HSPLcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt$lambda-1$1$1;->(Lcom/artemchep/keyguard/feature/navigation/NavigationEntry;)V +HSPLcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt$lambda-1$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt$lambda-1$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt$lambda-2$1; +HSPLcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt$lambda-2$1;->invoke(Lcom/artemchep/keyguard/feature/navigation/Foo;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/navigation/ComposableSingletons$NavigationNodeKt$lambda-2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/DialogRoute; +Lcom/artemchep/keyguard/feature/navigation/Foo; +HSPLcom/artemchep/keyguard/feature/navigation/Foo;->()V +HSPLcom/artemchep/keyguard/feature/navigation/Foo;->(Lkotlinx/collections/immutable/PersistentList;Lkotlinx/collections/immutable/PersistentList;Lcom/artemchep/keyguard/feature/navigation/NavigationEntry;)V +HSPLcom/artemchep/keyguard/feature/navigation/Foo;->access$getEmpty$cp()Lcom/artemchep/keyguard/feature/navigation/Foo; +HSPLcom/artemchep/keyguard/feature/navigation/Foo;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/feature/navigation/Foo;->getEntry()Lcom/artemchep/keyguard/feature/navigation/NavigationEntry; +HSPLcom/artemchep/keyguard/feature/navigation/Foo;->getLogicalStack()Lkotlinx/collections/immutable/PersistentList; +HSPLcom/artemchep/keyguard/feature/navigation/Foo;->getVisualStack()Lkotlinx/collections/immutable/PersistentList; +HSPLcom/artemchep/keyguard/feature/navigation/Foo;->hashCode()I +Lcom/artemchep/keyguard/feature/navigation/Foo$Companion; +HSPLcom/artemchep/keyguard/feature/navigation/Foo$Companion;->()V +HSPLcom/artemchep/keyguard/feature/navigation/Foo$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/navigation/Foo$Companion;->getEmpty()Lcom/artemchep/keyguard/feature/navigation/Foo; +Lcom/artemchep/keyguard/feature/navigation/N; +HSPLcom/artemchep/keyguard/feature/navigation/N;->()V +HSPLcom/artemchep/keyguard/feature/navigation/N;->()V +HSPLcom/artemchep/keyguard/feature/navigation/N;->tag(Ljava/lang/String;)Ljava/lang/String; +Lcom/artemchep/keyguard/feature/navigation/NavigationAnimation; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimation;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimation;->()V +Lcom/artemchep/keyguard/feature/navigation/NavigationAnimationKt; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimationKt;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimationKt;->transform(Lcom/artemchep/keyguard/feature/navigation/NavigationAnimation;FLcom/artemchep/keyguard/common/model/NavAnimation;Lcom/artemchep/keyguard/feature/navigation/NavigationAnimationType;)Landroidx/compose/animation/ContentTransform; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimationKt;->transformGoBack(Lcom/artemchep/keyguard/feature/navigation/NavigationAnimation;F)Landroidx/compose/animation/ContentTransform; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimationKt;->transformSwitchContext(Lcom/artemchep/keyguard/feature/navigation/NavigationAnimation;F)Landroidx/compose/animation/ContentTransform; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimationKt;->twaat(I)Landroidx/compose/animation/core/TweenSpec; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimationKt;->twuut(I)Landroidx/compose/animation/core/TweenSpec; +Lcom/artemchep/keyguard/feature/navigation/NavigationAnimationKt$WhenMappings; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimationKt$WhenMappings;->()V +Lcom/artemchep/keyguard/feature/navigation/NavigationAnimationKt$transformGoBack$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimationKt$transformGoBack$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimationKt$transformGoBack$1;->()V +Lcom/artemchep/keyguard/feature/navigation/NavigationAnimationKt$transformGoBack$2; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimationKt$transformGoBack$2;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimationKt$transformGoBack$2;->()V +Lcom/artemchep/keyguard/feature/navigation/NavigationAnimationType; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimationType;->$values()[Lcom/artemchep/keyguard/feature/navigation/NavigationAnimationType; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimationType;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimationType;->(Ljava/lang/String;I)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationAnimationType;->values()[Lcom/artemchep/keyguard/feature/navigation/NavigationAnimationType; +Lcom/artemchep/keyguard/feature/navigation/NavigationController; +Lcom/artemchep/keyguard/feature/navigation/NavigationControllerKt; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt;->NavigationController(Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt;->getLocalNavigationController()Landroidx/compose/runtime/ProvidableCompositionLocal; +Lcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$LocalNavigationController$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$LocalNavigationController$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$LocalNavigationController$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$LocalNavigationController$1;->invoke()Lcom/artemchep/keyguard/feature/navigation/NavigationController; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$LocalNavigationController$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$LocalNavigationController$1$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$LocalNavigationController$1$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$LocalNavigationController$1$1;->canPop()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$NavigationController$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$NavigationController$1;->(Lkotlin/jvm/functions/Function3;Lcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$NavigationController$controller$1$handler$1;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$NavigationController$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$NavigationController$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$NavigationController$controller$1$combinedCanPop$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$NavigationController$controller$1$combinedCanPop$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$NavigationController$controller$1$combinedCanPop$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$NavigationController$controller$1$combinedCanPop$1;->invoke(ZZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$NavigationController$controller$1$combinedCanPop$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$NavigationController$controller$1$handler$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$NavigationController$controller$1$handler$1;->(Lkotlinx/coroutines/CoroutineScope;Lcom/artemchep/keyguard/feature/navigation/NavigationController;Lkotlin/jvm/functions/Function1;Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$NavigationController$controller$1$handler$1;->canPop()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationControllerKt$NavigationController$controller$1$handler$1;->getScope()Lkotlinx/coroutines/CoroutineScope; +Lcom/artemchep/keyguard/feature/navigation/NavigationEntry; +Lcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl;->(Ljava/lang/String;Lkotlinx/coroutines/CoroutineScope;Ljava/lang/String;Lcom/artemchep/keyguard/feature/navigation/Route;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl;->destroy()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl;->getId()Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl;->getRoute()Lcom/artemchep/keyguard/feature/navigation/Route; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl;->getScope()Lkotlinx/coroutines/CoroutineScope; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl;->getType()Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl;->getVm()Lcom/artemchep/keyguard/feature/navigation/state/FlowHolderViewModel; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl;->hashCode()I +Lcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl$1;->(Lcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationEntryKt; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryKt;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryKt;->getLocalNavigationEntry()Landroidx/compose/runtime/ProvidableCompositionLocal; +Lcom/artemchep/keyguard/feature/navigation/NavigationEntryKt$LocalNavigationEntry$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryKt$LocalNavigationEntry$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryKt$LocalNavigationEntry$1;->()V +Lcom/artemchep/keyguard/feature/navigation/NavigationEntryProviderKt; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryProviderKt;->NavigationNode(Ljava/lang/String;Lcom/artemchep/keyguard/feature/navigation/Route;Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/navigation/NavigationEntryProviderKt$NavigationNode$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryProviderKt$NavigationNode$1;->(Lcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryProviderKt$NavigationNode$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryProviderKt$NavigationNode$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationEntryProviderKt$NavigationNode$1$invoke$$inlined$onDispose$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryProviderKt$NavigationNode$1$invoke$$inlined$onDispose$1;->(Lcom/artemchep/keyguard/feature/navigation/NavigationEntryImpl;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationEntryProviderKt$NavigationNode$1$invoke$$inlined$onDispose$1;->dispose()V +Lcom/artemchep/keyguard/feature/navigation/NavigationKt; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationKt;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationKt;->getLocalRoute()Landroidx/compose/runtime/ProvidableCompositionLocal; +Lcom/artemchep/keyguard/feature/navigation/NavigationKt$LocalBackHost$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationKt$LocalBackHost$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationKt$LocalBackHost$1;->()V +Lcom/artemchep/keyguard/feature/navigation/NavigationKt$LocalRoute$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationKt$LocalRoute$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationKt$LocalRoute$1;->()V +Lcom/artemchep/keyguard/feature/navigation/NavigationNodeCurrentStackKt; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeCurrentStackKt;->access$navigationNodeStack$lambda$0(Landroidx/compose/runtime/State;)Lkotlinx/collections/immutable/PersistentList; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeCurrentStackKt;->navigationNodeStack$lambda$0(Landroidx/compose/runtime/State;)Lkotlinx/collections/immutable/PersistentList; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeCurrentStackKt;->navigationNodeStack$lambda$2(Landroidx/compose/runtime/State;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeCurrentStackKt;->navigationNodeStack(Landroidx/compose/runtime/Composer;I)Ljava/lang/String; +Lcom/artemchep/keyguard/feature/navigation/NavigationNodeCurrentStackKt$navigationNodeStack$value$2$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeCurrentStackKt$navigationNodeStack$value$2$1;->(Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeCurrentStackKt$navigationNodeStack$value$2$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeCurrentStackKt$navigationNodeStack$value$2$1;->invoke()Ljava/lang/String; +Lcom/artemchep/keyguard/feature/navigation/NavigationNodeCurrentStackKt$navigationNodeStack$value$2$1$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeCurrentStackKt$navigationNodeStack$value$2$1$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeCurrentStackKt$navigationNodeStack$value$2$1$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeCurrentStackKt$navigationNodeStack$value$2$1$1;->invoke(Lcom/artemchep/keyguard/feature/navigation/NavigationEntry;)Ljava/lang/CharSequence; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeCurrentStackKt$navigationNodeStack$value$2$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationNodeKt; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt;->NavigationNode$lambda$0(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetNavAnimation; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt;->NavigationNode$lambda$12$lambda$9(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt;->NavigationNode(Lcom/artemchep/keyguard/feature/navigation/NavigationEntry;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt;->NavigationNode(Lkotlinx/collections/immutable/PersistentList;ILandroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt;->NavigationRoute(Lcom/artemchep/keyguard/feature/navigation/NavigationEntry;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt;->access$NavigationNode$lambda$0(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetNavAnimation; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt;->access$NavigationNode$lambda$12$lambda$9(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt;->access$NavigationRoute(Lcom/artemchep/keyguard/feature/navigation/NavigationEntry;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt;->getLocalNavigationNodeLogicalStack()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt;->getLocalNavigationNodeVisualStack()Landroidx/compose/runtime/ProvidableCompositionLocal; +Lcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$LocalNavigationNodeLogicalStack$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$LocalNavigationNodeLogicalStack$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$LocalNavigationNodeLogicalStack$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$LocalNavigationNodeLogicalStack$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$LocalNavigationNodeLogicalStack$1;->invoke()Lkotlinx/collections/immutable/PersistentList; +Lcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$LocalNavigationNodeVisualStack$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$LocalNavigationNodeVisualStack$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$LocalNavigationNodeVisualStack$1;->()V +Lcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationNode$$inlined$rememberInstance$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationNode$$inlined$rememberInstance$1;->()V +Lcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationNode$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationNode$1;->(Lcom/artemchep/keyguard/feature/navigation/NavigationEntry;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationNode$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationNode$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationNode$2; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationNode$2;->(Lcom/artemchep/keyguard/feature/navigation/NavigationEntry;I)V +Lcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationNode$3$2; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationNode$3$2;->(Lkotlin/Lazy;Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationNode$3$2;->invoke(Landroidx/compose/animation/AnimatedContentTransitionScope;)Landroidx/compose/animation/ContentTransform; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationNode$3$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationNode$4; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationNode$4;->(Lkotlinx/collections/immutable/PersistentList;III)V +Lcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationRoute$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationRoute$1;->(Lcom/artemchep/keyguard/feature/navigation/NavigationEntry;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationRoute$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationNodeKt$NavigationRoute$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2;->NavigationRouterBackHandler(Landroidx/activity/OnBackPressedDispatcher;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1;->(Landroidx/activity/OnBackPressedDispatcher;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1;->invoke(Lcom/artemchep/keyguard/feature/navigation/BackHandler;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$1;->(Landroidx/activity/OnBackPressedDispatcher;Landroidx/activity/OnBackPressedCallback;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$1$invoke$$inlined$onDispose$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$1$invoke$$inlined$onDispose$1;->(Landroidx/activity/OnBackPressedCallback;)V +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2;->(Lcom/artemchep/keyguard/feature/navigation/BackHandler;Landroidx/activity/OnBackPressedCallback;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$3; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$3;->(Landroidx/activity/OnBackPressedCallback;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$3;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$3;->invoke(ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$invokeSuspend$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$invokeSuspend$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$invokeSuspend$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$invokeSuspend$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$invokeSuspend$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$invokeSuspend$$inlined$map$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$invokeSuspend$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$invokeSuspend$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$invokeSuspend$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$invokeSuspend$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$invokeSuspend$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$invokeSuspend$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$invokeSuspend$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$2$invokeSuspend$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$callback$1$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler2$NavigationRouterBackHandler$1$callback$1$1;->(Lcom/artemchep/keyguard/feature/navigation/BackHandler;)V +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandlerKt; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandlerKt;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandlerKt;->NavigationRouterBackHandler(Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandlerKt;->getLocalNavigationBackHandler()Landroidx/compose/runtime/ProvidableCompositionLocal; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandlerKt$LocalNavigationBackHandler$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandlerKt$LocalNavigationBackHandler$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandlerKt$LocalNavigationBackHandler$1;->()V +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandlerKt$NavigationRouterBackHandler$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandlerKt$NavigationRouterBackHandler$1;->(Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandlerKt$NavigationRouterBackHandler$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackHandlerKt$NavigationRouterBackHandler$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackIconKt; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackIconKt;->NavigationIcon(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterBackIconKt$NavigationIcon$2; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterBackIconKt$NavigationIcon$2;->(Landroidx/compose/ui/Modifier;II)V +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterKt; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt;->NavigationRouter(Ljava/lang/String;Lcom/artemchep/keyguard/feature/navigation/Route;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt;->getLocalNavigationRouter()Landroidx/compose/runtime/ProvidableCompositionLocal; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$LocalNavigationRouter$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$LocalNavigationRouter$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$LocalNavigationRouter$1;->()V +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$1;->(Lcom/artemchep/keyguard/feature/navigation/NavigationStack;Lkotlinx/coroutines/CoroutineScope;)V +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$2; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$2;->(Lcom/artemchep/keyguard/feature/navigation/NavigationStack;Lkotlin/jvm/functions/Function3;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$2;->invoke(Lcom/artemchep/keyguard/feature/navigation/NavigationController;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$2$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$2$1;->(Lcom/artemchep/keyguard/feature/navigation/BackHandler;Lcom/artemchep/keyguard/feature/navigation/NavigationController;Lkotlinx/collections/immutable/PersistentList;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$2$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$2$1$invoke$$inlined$onDispose$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$2$1$invoke$$inlined$onDispose$1;->(Lkotlin/jvm/functions/Function0;)V +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$2$2; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$2$2;->(Lkotlin/jvm/functions/Function3;Lkotlinx/collections/immutable/PersistentList;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$2$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$2$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$3; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$3;->(Ljava/lang/String;Lcom/artemchep/keyguard/feature/navigation/Route;Lkotlin/jvm/functions/Function3;I)V +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$canPop$1$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$canPop$1$1;->(Lcom/artemchep/keyguard/feature/navigation/NavigationStack;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$canPop$1$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$canPop$1$1;->invoke()Lkotlinx/collections/immutable/PersistentList; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$lambda$2$$inlined$map$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$lambda$2$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$lambda$2$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$lambda$2$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$lambda$2$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$lambda$2$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$lambda$2$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$lambda$2$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$lambda$2$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationRouterKt$NavigationRouter$lambda$2$$inlined$map$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/NavigationStack; +HSPLcom/artemchep/keyguard/feature/navigation/NavigationStack;->()V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationStack;->(Lcom/artemchep/keyguard/feature/navigation/NavigationEntry;)V +HSPLcom/artemchep/keyguard/feature/navigation/NavigationStack;->getValue()Lkotlinx/collections/immutable/PersistentList; +Lcom/artemchep/keyguard/feature/navigation/Route; +Lcom/artemchep/keyguard/feature/navigation/state/CopyKt; +HSPLcom/artemchep/keyguard/feature/navigation/state/CopyKt;->copy(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lcom/artemchep/keyguard/common/service/clipboard/ClipboardService;)Lcom/artemchep/keyguard/common/usecase/CopyText; +Lcom/artemchep/keyguard/feature/navigation/state/CopyKt$copy$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/CopyKt$copy$1;->(Ljava/lang/Object;)V +Lcom/artemchep/keyguard/feature/navigation/state/DiskHandle; +Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl;->()V +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl;->(Lkotlinx/coroutines/CoroutineScope;Lcom/artemchep/keyguard/common/usecase/PutScreenState;Ljava/lang/String;Ljava/util/Map;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl;->(Lkotlinx/coroutines/CoroutineScope;Lcom/artemchep/keyguard/common/usecase/PutScreenState;Ljava/lang/String;Ljava/util/Map;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl;->access$tryWrite(Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl;Ljava/util/Map;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl;->getRestoredState()Ljava/util/Map; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl;->link(Ljava/lang/String;Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl;->tryWrite(Ljava/util/Map;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$2; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$2;->(Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$2;->invoke(Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$Companion; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$Companion;->()V +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$Companion;->read(Lkotlinx/coroutines/CoroutineScope;Lcom/artemchep/keyguard/common/usecase/GetScreenState;Lcom/artemchep/keyguard/common/usecase/PutScreenState;Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$Companion$read$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$Companion$read$1;->(Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$Companion;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$Companion$read$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1;->(Ljava/util/List;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$1;->(Ljava/util/List;[Ljava/lang/Object;Ljava/util/concurrent/atomic/AtomicInteger;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$1;->invoke(Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$1$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$1$1;->(Lkotlinx/coroutines/flow/Flow;[Ljava/lang/Object;ILjava/util/concurrent/atomic/AtomicInteger;Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$1$1$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$1$1$1;->([Ljava/lang/Object;ILkotlin/jvm/internal/Ref$BooleanRef;Ljava/util/concurrent/atomic/AtomicInteger;Lkotlinx/coroutines/channels/ProducerScope;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$1$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$2; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$2;->(Ljava/util/concurrent/atomic/AtomicInteger;Lkotlinx/coroutines/flow/FlowCollector;[Ljava/lang/Object;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$_init_$lambda$2$$inlined$combineToList$1$2;->emit(Lkotlin/Unit;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$lambda$2$lambda$1$$inlined$map$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$lambda$2$lambda$1$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$lambda$2$lambda$1$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$lambda$2$lambda$1$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$lambda$2$lambda$1$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$lambda$2$lambda$1$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$lambda$2$lambda$1$$inlined$map$1$2$1; +PLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$lambda$2$lambda$1$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$lambda$2$lambda$1$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$special$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$special$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$special$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$special$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/DiskHandleImpl$special$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/FlowHolderViewModel; +HSPLcom/artemchep/keyguard/feature/navigation/state/FlowHolderViewModel;->()V +HSPLcom/artemchep/keyguard/feature/navigation/state/FlowHolderViewModel;->(Ljava/lang/String;Lkotlinx/coroutines/CoroutineScope;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/FlowHolderViewModel;->clear(Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/FlowHolderViewModel;->destroy()V +HSPLcom/artemchep/keyguard/feature/navigation/state/FlowHolderViewModel;->getOrPut(Ljava/lang/String;Lcom/artemchep/keyguard/feature/navigation/NavigationController;Lcom/artemchep/keyguard/common/usecase/ShowMessage;Lcom/artemchep/keyguard/common/usecase/GetScreenState;Lcom/artemchep/keyguard/common/usecase/PutScreenState;Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope;Lkotlinx/serialization/json/Json;Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/platform/LeContext;Landroidx/compose/runtime/State;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/FlowHolderViewModel$Entry; +HSPLcom/artemchep/keyguard/feature/navigation/state/FlowHolderViewModel$Entry;->(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lkotlinx/coroutines/Job;Ljava/lang/Object;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/FlowHolderViewModel$Entry;->getJob()Lkotlinx/coroutines/Job; +HSPLcom/artemchep/keyguard/feature/navigation/state/FlowHolderViewModel$Entry;->getValue()Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/PersistedStorage; +Lcom/artemchep/keyguard/feature/navigation/state/PersistedStorage$InDisk; +HSPLcom/artemchep/keyguard/feature/navigation/state/PersistedStorage$InDisk;->()V +HSPLcom/artemchep/keyguard/feature/navigation/state/PersistedStorage$InDisk;->(Lcom/artemchep/keyguard/feature/navigation/state/DiskHandle;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/PersistedStorage$InDisk;->getDisk()Lcom/artemchep/keyguard/feature/navigation/state/DiskHandle; +Lcom/artemchep/keyguard/feature/navigation/state/PersistedStorage$InMemory; +HSPLcom/artemchep/keyguard/feature/navigation/state/PersistedStorage$InMemory;->()V +HSPLcom/artemchep/keyguard/feature/navigation/state/PersistedStorage$InMemory;->()V +Lcom/artemchep/keyguard/feature/navigation/state/ProduceScreenStateKt; +HSPLcom/artemchep/keyguard/feature/navigation/state/ProduceScreenStateKt;->produceScreenState$lambda$0(Landroidx/compose/runtime/State;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/ProduceScreenStateKt;->produceScreenState(Ljava/lang/String;[Ljava/lang/Object;[Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/ProduceScreenStateKt;->rememberScreenState(Ljava/lang/String;[Ljava/lang/Object;[Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)Landroidx/compose/runtime/State; +Lcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt;->()V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt;->access$rememberScreenStateFlow$lambda$0(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/ShowMessage; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt;->access$rememberScreenStateFlow$lambda$1(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetScreenState; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt;->access$rememberScreenStateFlow$lambda$2(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetDebugScreenDelay; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt;->access$rememberScreenStateFlow$lambda$3(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/PutScreenState; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt;->access$rememberScreenStateFlow$lambda$4(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt;->access$rememberScreenStateFlow$lambda$5(Lkotlin/Lazy;)Lkotlinx/serialization/json/Json; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt;->rememberScreenStateFlow$lambda$0(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/ShowMessage; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt;->rememberScreenStateFlow$lambda$1(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetScreenState; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt;->rememberScreenStateFlow$lambda$2(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetDebugScreenDelay; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt;->rememberScreenStateFlow$lambda$3(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/PutScreenState; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt;->rememberScreenStateFlow$lambda$4(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt;->rememberScreenStateFlow$lambda$5(Lkotlin/Lazy;)Lkotlinx/serialization/json/Json; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt;->rememberScreenStateFlow(Ljava/lang/String;[Ljava/lang/Object;[Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)Lkotlinx/coroutines/flow/StateFlow; +Lcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$$inlined$rememberInstance$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$$inlined$rememberInstance$1;->()V +Lcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$$inlined$rememberInstance$2; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$$inlined$rememberInstance$2;->()V +Lcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$$inlined$rememberInstance$3; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$$inlined$rememberInstance$3;->()V +Lcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$$inlined$rememberInstance$4; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$$inlined$rememberInstance$4;->()V +Lcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$$inlined$rememberInstance$5; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$$inlined$rememberInstance$5;->()V +Lcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$$inlined$rememberInstance$6; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$$inlined$rememberInstance$6;->()V +Lcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1;->(Ljava/lang/Object;Lkotlin/Lazy;Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1;->invoke(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;)Lkotlinx/coroutines/flow/StateFlow; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$invoke$$inlined$map$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$invoke$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$invoke$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$invoke$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$invoke$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$invoke$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$invoke$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$invoke$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$invoke$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$structureFlow$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$structureFlow$1;->(Lkotlin/Lazy;Lkotlin/jvm/functions/Function2;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$structureFlow$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$structureFlow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$structureFlow$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$structureFlow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$structureFlow$1$structure$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$structureFlow$1$structure$1;->(Lkotlin/jvm/functions/Function2;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$structureFlow$1$structure$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$structureFlow$1$structure$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$structureFlow$1$structure$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlowKt$rememberScreenStateFlow$1$flow$1$structureFlow$1$structure$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope; +Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->()V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->(Ljava/lang/String;Landroid/os/Bundle;Lcom/artemchep/keyguard/common/usecase/ShowMessage;Lcom/artemchep/keyguard/common/usecase/GetScreenState;Lcom/artemchep/keyguard/common/usecase/PutScreenState;Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope;Lcom/artemchep/keyguard/feature/navigation/NavigationController;Lkotlinx/serialization/json/Json;Lkotlinx/coroutines/CoroutineScope;Ljava/lang/String;Landroidx/compose/runtime/State;Ljava/lang/String;Lcom/artemchep/keyguard/platform/LeContext;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->access$getJson$p(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;)Lkotlinx/serialization/json/Json; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->getAppScope()Lkotlinx/coroutines/CoroutineScope; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->getBundleKey(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->getContext()Lcom/artemchep/keyguard/platform/LeContext; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->getCoroutineContext()Lkotlin/coroutines/CoroutineContext; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->getScreenName()Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->getScreenScope()Lkotlinx/coroutines/CoroutineScope; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->interceptBackPress(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->loadDiskHandle(Ljava/lang/String;ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->mutableComposeState(Lkotlinx/coroutines/flow/MutableStateFlow;)Landroidx/compose/runtime/MutableState; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->mutablePersistedFlow(Ljava/lang/String;Lcom/artemchep/keyguard/feature/navigation/state/PersistedStorage;Lkotlin/jvm/functions/Function0;)Lkotlinx/coroutines/flow/MutableStateFlow; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->mutablePersistedFlow(Ljava/lang/String;Lcom/artemchep/keyguard/feature/navigation/state/PersistedStorage;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function0;)Lkotlinx/coroutines/flow/MutableStateFlow; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->screenExecutor()Lcom/artemchep/keyguard/feature/loading/LoadingTask; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->translate(Ldev/icerock/moko/resources/StringResource;)Ljava/lang/String; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;->translate(Ldev/icerock/moko/resources/StringResource;[Ljava/lang/Object;)Ljava/lang/String; +Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$Entry; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$Entry;->(Lkotlinx/coroutines/flow/MutableStateFlow;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$Entry$ComposeState;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$Entry;->getSink()Lkotlinx/coroutines/flow/MutableStateFlow; +Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$Entry$ComposeState; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$Entry$ComposeState;->()V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$Entry$ComposeState;->(Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/flow/MutableStateFlow;)V +Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$Entry$ComposeState$collectScope$2; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$Entry$ComposeState$collectScope$2;->(Lkotlinx/coroutines/CoroutineScope;)V +Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$Entry$ComposeState$mutableState$2; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$Entry$ComposeState$mutableState$2;->(Lkotlinx/coroutines/flow/MutableStateFlow;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$Entry$ComposeState;)V +Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutableComposeState$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutableComposeState$1;->(Landroidx/compose/runtime/MutableState;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutableComposeState$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutableComposeState$2; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutableComposeState$2;->(Lkotlinx/coroutines/flow/MutableStateFlow;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutableComposeState$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutableComposeState$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutableComposeState$2;->invoke(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutableComposeState$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$1;->()V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$1;->invoke(Lkotlinx/serialization/json/Json;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$2; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$2;->()V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$2;->()V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$2;->invoke(Lkotlinx/serialization/json/Json;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$lambda$4$lambda$3$$inlined$map$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$lambda$4$lambda$3$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$lambda$4$lambda$3$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$lambda$4$lambda$3$$inlined$map$1$2; +PLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$lambda$4$lambda$3$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/jvm/functions/Function2;Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;)V +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$lambda$4$lambda$3$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$lambda$4$lambda$3$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$lambda$4$lambda$3$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$mutablePersistedFlow$lambda$4$lambda$3$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$screenExecutor$1; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl$screenExecutor$1;->(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeSub; +Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeSub$DefaultImpls; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeSub$DefaultImpls;->loadDiskHandle$default(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeSub;Ljava/lang/String;ZLkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeSub$DefaultImpls;->mutablePersistedFlow$default(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeSub;Ljava/lang/String;Lcom/artemchep/keyguard/feature/navigation/state/PersistedStorage;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)Lkotlinx/coroutines/flow/MutableStateFlow; +HSPLcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeSub$DefaultImpls;->mutablePersistedFlow$default(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeSub;Ljava/lang/String;Lcom/artemchep/keyguard/feature/navigation/state/PersistedStorage;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)Lkotlinx/coroutines/flow/MutableStateFlow; +Lcom/artemchep/keyguard/feature/navigation/state/TranslatorScope; +Lcom/artemchep/keyguard/feature/search/component/ComposableSingletons$DropdownButtonKt; +HSPLcom/artemchep/keyguard/feature/search/component/ComposableSingletons$DropdownButtonKt;->()V +HSPLcom/artemchep/keyguard/feature/search/component/ComposableSingletons$DropdownButtonKt;->()V +HSPLcom/artemchep/keyguard/feature/search/component/ComposableSingletons$DropdownButtonKt;->getLambda-1$common_playStoreRelease()Lkotlin/jvm/functions/Function3; +Lcom/artemchep/keyguard/feature/search/component/ComposableSingletons$DropdownButtonKt$lambda-1$1; +HSPLcom/artemchep/keyguard/feature/search/component/ComposableSingletons$DropdownButtonKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/feature/search/component/ComposableSingletons$DropdownButtonKt$lambda-1$1;->()V +Lcom/artemchep/keyguard/feature/search/component/DropdownButtonKt; +HSPLcom/artemchep/keyguard/feature/search/component/DropdownButtonKt;->DropdownButton$lambda$1(Landroidx/compose/runtime/MutableState;)Z +HSPLcom/artemchep/keyguard/feature/search/component/DropdownButtonKt;->DropdownButton(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/vector/ImageVector;Ljava/lang/String;Ljava/util/List;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/search/component/DropdownButtonKt;->access$DropdownButton$lambda$1(Landroidx/compose/runtime/MutableState;)Z +Lcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$1; +HSPLcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$1;->(Ljava/util/List;Landroidx/compose/runtime/MutableState;)V +HSPLcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$1;->invoke()V +Lcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$2$2; +HSPLcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$2$2;->(Ljava/util/List;Landroidx/compose/runtime/MutableState;Landroidx/compose/ui/graphics/vector/ImageVector;Lkotlin/jvm/functions/Function0;)V +HSPLcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$2$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$2$2;->invoke(Lkotlin/Unit;Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$2$2$1$1; +HSPLcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$2$2$1$1;->(Landroidx/compose/runtime/MutableState;)V +Lcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$2$2$2; +HSPLcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$2$2$2;->(Landroidx/compose/ui/graphics/vector/ImageVector;Lkotlin/jvm/functions/Function0;)V +HSPLcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$2$2$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$2$2$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$2$3; +HSPLcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$2$3;->(Ljava/lang/String;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;)V +Lcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$2$onDismissRequest$1$1; +HSPLcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$2$onDismissRequest$1$1;->(Landroidx/compose/runtime/MutableState;)V +Lcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$3; +HSPLcom/artemchep/keyguard/feature/search/component/DropdownButtonKt$DropdownButton$3;->(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/vector/ImageVector;Ljava/lang/String;Ljava/util/List;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;II)V +Lcom/artemchep/keyguard/feature/search/filter/FilterButtonKt; +HSPLcom/artemchep/keyguard/feature/search/filter/FilterButtonKt;->FilterButton(Landroidx/compose/ui/Modifier;Ljava/lang/Integer;Ljava/util/List;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/feature/search/filter/FilterButtonKt$FilterButton$1; +HSPLcom/artemchep/keyguard/feature/search/filter/FilterButtonKt$FilterButton$1;->(Ljava/lang/Integer;Ljava/util/List;)V +Lcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt; +HSPLcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt;->FilterItemLayout$lambda$0(Landroidx/compose/runtime/State;)Lkotlin/jvm/functions/Function0; +HSPLcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt;->FilterItemLayout(Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function0;ZLandroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt;->access$FilterItemLayout$lambda$0(Landroidx/compose/runtime/State;)Lkotlin/jvm/functions/Function0; +Lcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt$FilterItemLayout$1; +HSPLcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt$FilterItemLayout$1;->()V +HSPLcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt$FilterItemLayout$1;->()V +HSPLcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt$FilterItemLayout$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt$FilterItemLayout$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt$FilterItemLayout$2; +HSPLcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt$FilterItemLayout$2;->(ZLandroidx/compose/runtime/State;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt$FilterItemLayout$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt$FilterItemLayout$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt$FilterItemLayout$2$1; +HSPLcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt$FilterItemLayout$2$1;->(Landroidx/compose/runtime/State;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt$FilterItemLayout$2$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt$FilterItemLayout$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt$FilterItemLayout$3; +HSPLcom/artemchep/keyguard/feature/search/filter/component/FilterItemKt$FilterItemLayout$3;->(Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function0;ZII)V +Lcom/artemchep/keyguard/feature/search/filter/model/FilterItemModel; +Lcom/artemchep/keyguard/feature/search/filter/model/FilterItemModel$Item; +Lcom/artemchep/keyguard/feature/search/filter/model/FilterItemModel$Section; +Lcom/artemchep/keyguard/feature/search/sort/SortButtonKt; +HSPLcom/artemchep/keyguard/feature/search/sort/SortButtonKt;->SortButton(Landroidx/compose/ui/Modifier;Ljava/util/List;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/feature/search/sort/SortButtonKt$SortButton$1; +HSPLcom/artemchep/keyguard/feature/search/sort/SortButtonKt$SortButton$1;->(Ljava/util/List;)V +Lcom/artemchep/keyguard/feature/search/sort/model/SortItemModel; +Lcom/artemchep/keyguard/feature/search/sort/model/SortItemModel$Item; +Lcom/artemchep/keyguard/feature/search/sort/model/SortItemModel$Section; +Lcom/artemchep/keyguard/feature/send/SendRoute; +HSPLcom/artemchep/keyguard/feature/send/SendRoute;->()V +HSPLcom/artemchep/keyguard/feature/send/SendRoute;->()V +Lcom/artemchep/keyguard/feature/twopane/ComposableSingletons$TwoPaneLayoutKt; +HSPLcom/artemchep/keyguard/feature/twopane/ComposableSingletons$TwoPaneLayoutKt;->()V +HSPLcom/artemchep/keyguard/feature/twopane/ComposableSingletons$TwoPaneLayoutKt;->()V +HSPLcom/artemchep/keyguard/feature/twopane/ComposableSingletons$TwoPaneLayoutKt;->getLambda-1$common_playStoreRelease()Lkotlin/jvm/functions/Function4; +Lcom/artemchep/keyguard/feature/twopane/ComposableSingletons$TwoPaneLayoutKt$lambda-1$1; +HSPLcom/artemchep/keyguard/feature/twopane/ComposableSingletons$TwoPaneLayoutKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/feature/twopane/ComposableSingletons$TwoPaneLayoutKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/feature/twopane/ComposableSingletons$TwoPaneLayoutKt$lambda-1$1;->invoke(Landroidx/compose/animation/AnimatedContentScope;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/twopane/ComposableSingletons$TwoPaneLayoutKt$lambda-1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt;->()V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt;->PaneLayout(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt;->TwoPaneLayout$lambda$5(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetNavAnimation; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt;->TwoPaneLayout(Lcom/artemchep/keyguard/feature/twopane/TwoPaneScaffoldScope;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt;->TwoPaneScaffold-KLGhzwk(Landroidx/compose/ui/Modifier;FFFFLkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt;->TwoPaneScaffold_KLGhzwk$lambda$0(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetAllowTwoPanelLayoutInPortrait; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt;->TwoPaneScaffold_KLGhzwk$lambda$2(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetAllowTwoPanelLayoutInLandscape; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt;->access$TwoPaneLayout$lambda$5(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetNavAnimation; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt;->access$TwoPaneScaffold_KLGhzwk$lambda$0(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetAllowTwoPanelLayoutInPortrait; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt;->access$TwoPaneScaffold_KLGhzwk$lambda$2(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetAllowTwoPanelLayoutInLandscape; +Lcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneLayout$$inlined$rememberInstance$1; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneLayout$$inlined$rememberInstance$1;->()V +Lcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneLayout$1$2; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneLayout$1$2;->(Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lcom/artemchep/keyguard/feature/twopane/TwoPaneScaffoldScope;Lkotlin/Lazy;)V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneLayout$1$2;->access$invoke$lambda$1(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneLayout$1$2;->invoke$lambda$1(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneLayout$1$2;->invoke(Landroidx/compose/foundation/layout/BoxScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneLayout$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneLayout$1$2$1; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneLayout$1$2$1;->(Lkotlin/Lazy;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneLayout$1$2$1;->invoke(Landroidx/compose/animation/AnimatedContentTransitionScope;)Landroidx/compose/animation/ContentTransform; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneLayout$1$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneLayout$2; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneLayout$2;->(Lcom/artemchep/keyguard/feature/twopane/TwoPaneScaffoldScope;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;II)V +Lcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneScaffold$2; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneScaffold$2;->(FFFFLandroidx/compose/runtime/State;Landroidx/compose/runtime/State;Lkotlin/jvm/functions/Function3;)V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneScaffold$2;->invoke(Landroidx/compose/foundation/layout/BoxWithConstraintsScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneScaffold$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneScaffold$3; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneScaffold$3;->(Landroidx/compose/ui/Modifier;FFFFLkotlin/jvm/functions/Function3;II)V +Lcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneScaffold-KLGhzwk$$inlined$rememberInstance$1; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneScaffold-KLGhzwk$$inlined$rememberInstance$1;->()V +Lcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneScaffold-KLGhzwk$$inlined$rememberInstance$2; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneLayoutKt$TwoPaneScaffold-KLGhzwk$$inlined$rememberInstance$2;->()V +Lcom/artemchep/keyguard/feature/twopane/TwoPaneNavigationKt; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneNavigationKt;->TwoPaneNavigationContent(Lkotlinx/collections/immutable/PersistentList;Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/feature/twopane/TwoPaneNavigationKt$TwoPaneNavigationContent$1; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneNavigationKt$TwoPaneNavigationContent$1;->(Lkotlinx/collections/immutable/PersistentList;)V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneNavigationKt$TwoPaneNavigationContent$1;->invoke(Lcom/artemchep/keyguard/feature/twopane/TwoPaneScaffoldScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneNavigationKt$TwoPaneNavigationContent$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/twopane/TwoPaneNavigationKt$TwoPaneNavigationContent$1$2; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneNavigationKt$TwoPaneNavigationContent$1$2;->(Lcom/artemchep/keyguard/feature/navigation/NavigationEntry;Lcom/artemchep/keyguard/feature/navigation/NavigationEntry;Lkotlinx/collections/immutable/PersistentList;)V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneNavigationKt$TwoPaneNavigationContent$1$2;->invoke(Landroidx/compose/foundation/layout/BoxScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneNavigationKt$TwoPaneNavigationContent$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/twopane/TwoPaneScaffoldScope; +Lcom/artemchep/keyguard/feature/twopane/TwoPaneScaffoldScopeImpl; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneScaffoldScopeImpl;->(Landroidx/compose/foundation/layout/BoxScope;ZF)V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneScaffoldScopeImpl;->(Landroidx/compose/foundation/layout/BoxScope;ZFLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneScaffoldScopeImpl;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneScaffoldScopeImpl;->getTabletUi()Z +Lcom/artemchep/keyguard/feature/twopane/TwoPaneScreenKt; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneScreenKt;->TwoPaneScreen(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function4;Lkotlin/jvm/functions/Function5;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/feature/twopane/TwoPaneScreenKt$TwoPaneScreen$1; +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneScreenKt$TwoPaneScreen$1;->(Lkotlin/jvm/functions/Function5;Lkotlin/jvm/functions/Function4;)V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneScreenKt$TwoPaneScreen$1;->invoke(Lcom/artemchep/keyguard/feature/twopane/TwoPaneScaffoldScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/feature/twopane/TwoPaneScreenKt$TwoPaneScreen$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/feature/watchtower/WatchtowerRoute; +HSPLcom/artemchep/keyguard/feature/watchtower/WatchtowerRoute;->()V +HSPLcom/artemchep/keyguard/feature/watchtower/WatchtowerRoute;->()V +Lcom/artemchep/keyguard/platform/LeAnimationKt; +HSPLcom/artemchep/keyguard/platform/LeAnimationKt;->getLocalAnimationFactor(Landroidx/compose/runtime/Composer;I)F +Lcom/artemchep/keyguard/platform/LeBundleKt; +HSPLcom/artemchep/keyguard/platform/LeBundleKt;->contains(Landroid/os/Bundle;Ljava/lang/String;)Z +HSPLcom/artemchep/keyguard/platform/LeBundleKt;->leBundleOf([Lkotlin/Pair;)Landroid/os/Bundle; +Lcom/artemchep/keyguard/platform/LeContext; +HSPLcom/artemchep/keyguard/platform/LeContext;->()V +HSPLcom/artemchep/keyguard/platform/LeContext;->(Landroid/content/Context;)V +HSPLcom/artemchep/keyguard/platform/LeContext;->getContext()Landroid/content/Context; +Lcom/artemchep/keyguard/platform/LeContextKt; +HSPLcom/artemchep/keyguard/platform/LeContextKt;->getLocalLeContext(Landroidx/compose/runtime/Composer;I)Lcom/artemchep/keyguard/platform/LeContext; +Lcom/artemchep/keyguard/platform/LeDebugKt; +HSPLcom/artemchep/keyguard/platform/LeDebugKt;->()V +HSPLcom/artemchep/keyguard/platform/LeDebugKt;->isStandalone()Z +Lcom/artemchep/keyguard/platform/LeImeKt; +HSPLcom/artemchep/keyguard/platform/LeImeKt;->getLeDisplayCutout(Landroidx/compose/foundation/layout/WindowInsets$Companion;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/WindowInsets; +HSPLcom/artemchep/keyguard/platform/LeImeKt;->getLeIme(Landroidx/compose/foundation/layout/WindowInsets$Companion;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/WindowInsets; +HSPLcom/artemchep/keyguard/platform/LeImeKt;->getLeNavigationBars(Landroidx/compose/foundation/layout/WindowInsets$Companion;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/WindowInsets; +HSPLcom/artemchep/keyguard/platform/LeImeKt;->getLeStatusBars(Landroidx/compose/foundation/layout/WindowInsets$Companion;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/WindowInsets; +HSPLcom/artemchep/keyguard/platform/LeImeKt;->getLeSystemBars(Landroidx/compose/foundation/layout/WindowInsets$Companion;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/WindowInsets; +Lcom/artemchep/keyguard/platform/LePlatformKt; +HSPLcom/artemchep/keyguard/platform/LePlatformKt;->()V +HSPLcom/artemchep/keyguard/platform/LePlatformKt;->getCurrentPlatform()Lcom/artemchep/keyguard/platform/Platform; +HSPLcom/artemchep/keyguard/platform/LePlatformKt;->getPlatform()Lcom/artemchep/keyguard/platform/Platform$Mobile$Android; +Lcom/artemchep/keyguard/platform/LePlatformKt$platform$2; +HSPLcom/artemchep/keyguard/platform/LePlatformKt$platform$2;->()V +HSPLcom/artemchep/keyguard/platform/LePlatformKt$platform$2;->()V +HSPLcom/artemchep/keyguard/platform/LePlatformKt$platform$2;->invoke()Lcom/artemchep/keyguard/platform/Platform$Mobile$Android; +HSPLcom/artemchep/keyguard/platform/LePlatformKt$platform$2;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/platform/Platform; +Lcom/artemchep/keyguard/platform/Platform$Desktop; +Lcom/artemchep/keyguard/platform/Platform$Mobile; +Lcom/artemchep/keyguard/platform/Platform$Mobile$Android; +HSPLcom/artemchep/keyguard/platform/Platform$Mobile$Android;->()V +HSPLcom/artemchep/keyguard/platform/Platform$Mobile$Android;->(Z)V +Lcom/artemchep/keyguard/platform/RecordExceptionKt; +HSPLcom/artemchep/keyguard/platform/RecordExceptionKt;->crashlyticsIsEnabled()Ljava/lang/Boolean; +HSPLcom/artemchep/keyguard/platform/RecordExceptionKt;->crashlyticsSetEnabled(Ljava/lang/Boolean;)V +HSPLcom/artemchep/keyguard/platform/RecordExceptionKt;->recordLog(Ljava/lang/String;)V +Lcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt; +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt;->flowWithLifecycle$default(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/platform/lifecycle/LeLifecycleState;ILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt;->flowWithLifecycle(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/platform/lifecycle/LeLifecycleState;)Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt;->onState(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/platform/lifecycle/LeLifecycleState;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$flowWithLifecycle$$inlined$flatMapLatest$1; +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$flowWithLifecycle$$inlined$flatMapLatest$1;->(Lkotlin/coroutines/Continuation;Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$flowWithLifecycle$$inlined$flatMapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$flowWithLifecycle$$inlined$flatMapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$flowWithLifecycle$$inlined$flatMapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$flowWithLifecycle$$inlined$map$1; +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$flowWithLifecycle$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/platform/lifecycle/LeLifecycleState;)V +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$flowWithLifecycle$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$flowWithLifecycle$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$flowWithLifecycle$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/platform/lifecycle/LeLifecycleState;)V +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$flowWithLifecycle$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$flowWithLifecycle$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$flowWithLifecycle$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$flowWithLifecycle$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$onState$1$flow$1; +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$onState$1$flow$1;->(Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$onState$1$flow$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$onState$1$flow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$onState$1$flow$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleExtKt$onState$1$flow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/platform/lifecycle/LeLifecycleState; +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleState;->$values()[Lcom/artemchep/keyguard/platform/lifecycle/LeLifecycleState; +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleState;->()V +HSPLcom/artemchep/keyguard/platform/lifecycle/LeLifecycleState;->(Ljava/lang/String;I)V +Lcom/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlowKt; +HSPLcom/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlowKt;->getLocalLifecycleStateFlow(Landroidx/compose/runtime/Composer;I)Lkotlinx/coroutines/flow/StateFlow; +HSPLcom/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlowKt;->toCommon(Landroidx/lifecycle/Lifecycle$State;)Lcom/artemchep/keyguard/platform/lifecycle/LeLifecycleState; +Lcom/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlowKt$LocalLifecycleStateFlow$1; +HSPLcom/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlowKt$LocalLifecycleStateFlow$1;->$r8$lambda$YdcAxOC5sem8u3fiyg-GfdyOe8c(Lkotlinx/coroutines/flow/MutableStateFlow;Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +HSPLcom/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlowKt$LocalLifecycleStateFlow$1;->(Landroidx/lifecycle/LifecycleOwner;Lkotlinx/coroutines/flow/MutableStateFlow;)V +HSPLcom/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlowKt$LocalLifecycleStateFlow$1;->invoke$lambda$0(Lkotlinx/coroutines/flow/MutableStateFlow;Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +HSPLcom/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlowKt$LocalLifecycleStateFlow$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLcom/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlowKt$LocalLifecycleStateFlow$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlowKt$LocalLifecycleStateFlow$1$$ExternalSyntheticLambda0; +HSPLcom/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlowKt$LocalLifecycleStateFlow$1$$ExternalSyntheticLambda0;->(Lkotlinx/coroutines/flow/MutableStateFlow;)V +HSPLcom/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlowKt$LocalLifecycleStateFlow$1$$ExternalSyntheticLambda0;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +Lcom/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlowKt$LocalLifecycleStateFlow$1$invoke$$inlined$onDispose$1; +HSPLcom/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlowKt$LocalLifecycleStateFlow$1$invoke$$inlined$onDispose$1;->(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/LifecycleEventObserver;)V +Lcom/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlowKt$WhenMappings; +HSPLcom/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlowKt$WhenMappings;->()V +Lcom/artemchep/keyguard/platform/util/IsReleaseKt; +HSPLcom/artemchep/keyguard/platform/util/IsReleaseKt;->()V +HSPLcom/artemchep/keyguard/platform/util/IsReleaseKt;->isRelease()Z +Lcom/artemchep/keyguard/provider/bitwarden/ServerEnv; +Lcom/artemchep/keyguard/provider/bitwarden/ServerTwoFactorToken; +Lcom/artemchep/keyguard/provider/bitwarden/entity/HibpBreachGroup; +HSPLcom/artemchep/keyguard/provider/bitwarden/entity/HibpBreachGroup;->()V +Lcom/artemchep/keyguard/provider/bitwarden/entity/HibpBreachGroup$$serializer; +HSPLcom/artemchep/keyguard/provider/bitwarden/entity/HibpBreachGroup$$serializer;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/entity/HibpBreachGroup$$serializer;->()V +Lcom/artemchep/keyguard/provider/bitwarden/entity/HibpBreachGroup$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/entity/HibpBreachGroup$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/entity/HibpBreachGroup$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/entity/HibpBreachGroup$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lcom/artemchep/keyguard/provider/bitwarden/entity/HibpBreachResponse$$serializer; +HSPLcom/artemchep/keyguard/provider/bitwarden/entity/HibpBreachResponse$$serializer;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/entity/HibpBreachResponse$$serializer;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/entity/HibpBreachResponse$$serializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lcom/artemchep/keyguard/provider/bitwarden/entity/HibpBreachResponse$$serializer$annotationImpl$kotlinx_serialization_json_JsonNames$0; +HSPLcom/artemchep/keyguard/provider/bitwarden/entity/HibpBreachResponse$$serializer$annotationImpl$kotlinx_serialization_json_JsonNames$0;->([Ljava/lang/String;)V +Lcom/artemchep/keyguard/provider/bitwarden/repository/BaseRepository; +Lcom/artemchep/keyguard/provider/bitwarden/repository/BaseRepository$DefaultImpls; +HSPLcom/artemchep/keyguard/provider/bitwarden/repository/BaseRepository$DefaultImpls;->getSnapshot(Lcom/artemchep/keyguard/provider/bitwarden/repository/BaseRepository;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenCipherRepository; +Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenCollectionRepository; +Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenFolderRepository; +Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenMetaRepository; +Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenOrganizationRepository; +Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenProfileRepository; +Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenSendRepository; +Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenTokenRepository; +Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenTokenRepository$DefaultImpls; +HSPLcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenTokenRepository$DefaultImpls;->getSnapshot(Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenTokenRepository;)Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/AddFolderImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/AddFolderImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/AddFolderImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase;Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/AddFolderImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/AddFolderImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/AddFolderImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/AddFolderImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/AddFolderImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/AddFolderImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/AddFolderImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/AddFolderImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherNameByIdImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherNameByIdImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherNameByIdImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherNameByIdImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherNameByIdImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherNameByIdImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherNameByIdImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherNameByIdImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherNameByIdImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherPasswordByIdImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherPasswordByIdImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherPasswordByIdImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById;Lcom/artemchep/keyguard/common/usecase/GetPasswordStrength;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherPasswordByIdImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherPasswordByIdImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherPasswordByIdImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherPasswordByIdImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherPasswordByIdImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherPasswordByIdImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherPasswordByIdImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherPasswordByIdImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$Node; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$Node$Group; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$Node$Group;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$Node$Group;->(Larrow/optics/POptional;Ljava/util/List;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$Node$Leaf; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$Node$Leaf;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$Node$Leaf;->(Larrow/optics/POptional;Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$PickStrategy;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$Node$Leaf;->(Larrow/optics/POptional;Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$PickStrategy;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$PickAttachmentStrategy; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$PickAttachmentStrategy;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$PickCardStrategy; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$PickCardStrategy;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$PickFieldStrategy; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$PickFieldStrategy;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$PickModeStrategy; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$PickModeStrategy;->(Lkotlin/jvm/functions/Function0;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$PickModeStrategy;->(Lkotlin/jvm/functions/Function0;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$PickStrategy; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$PickUriStrategy; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$PickUriStrategy;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$mergeRules$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$mergeRules$1;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$mergeRules$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$mergeRules$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$mergeRules$2;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$mergeRules$2;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$mergeRules$3; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$mergeRules$3;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$mergeRules$3;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$mergeRules$4; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$mergeRules$4;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$mergeRules$4;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$mergeRules$5; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$mergeRules$5;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherMergeImpl$mergeRules$5;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherUrlCheckImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherUrlCheckImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherUrlCheckImpl;->(Lcom/artemchep/keyguard/common/service/tld/TldService;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherUrlCheckImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherUrlCheckImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherUrlCheckImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherUrlCheckImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CipherUrlCheckImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CipherUrlCheckImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CopyCipherByIdImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CopyCipherByIdImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CopyCipherByIdImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById;Lcom/artemchep/keyguard/common/usecase/AddFolder;Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CopyCipherByIdImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CopyCipherByIdImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CopyCipherByIdImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CopyCipherByIdImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CopyCipherByIdImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CopyCipherByIdImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CopyCipherByIdImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CopyCipherByIdImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/CopyCipherByIdImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/CopyCipherByIdImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/FavouriteCipherByIdImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/FavouriteCipherByIdImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/FavouriteCipherByIdImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/FavouriteCipherByIdImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/FavouriteCipherByIdImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/FavouriteCipherByIdImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/FavouriteCipherByIdImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/FavouriteCipherByIdImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/FavouriteCipherByIdImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenTokenRepository;Lkotlin/coroutines/CoroutineContext;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenTokenRepository;Lkotlin/coroutines/CoroutineContext;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl$invoke$$inlined$map$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl$invoke$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl$invoke$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl$invoke$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl$invoke$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl$invoke$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl$invoke$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl$invoke$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl$invoke$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl$invoke$$inlined$map$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCipherOpenedHistoryImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCipherOpenedHistoryImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCipherOpenedHistoryImpl;->(Lcom/artemchep/keyguard/android/downloader/journal/CipherHistoryOpenedRepository;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCipherOpenedHistoryImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCipherOpenedHistoryImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCipherOpenedHistoryImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl;->(Lcom/artemchep/keyguard/common/service/logging/LogRepository;Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenCipherRepository;Lcom/artemchep/keyguard/common/usecase/GetPasswordStrength;Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope;Lkotlin/coroutines/CoroutineContext;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl;->(Lcom/artemchep/keyguard/common/service/logging/LogRepository;Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenCipherRepository;Lcom/artemchep/keyguard/common/usecase/GetPasswordStrength;Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope;Lkotlin/coroutines/CoroutineContext;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$instance$default$4; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$instance$default$4;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$map$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/common/service/logging/LogRepository;Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->(Lkotlin/jvm/internal/Ref$BooleanRef;Lkotlinx/datetime/Instant;Lcom/artemchep/keyguard/common/service/logging/LogRepository;Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->invoke(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCiphersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl;->(Lcom/artemchep/keyguard/common/service/logging/LogRepository;Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenCollectionRepository;Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope;Lkotlin/coroutines/CoroutineContext;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl;->(Lcom/artemchep/keyguard/common/service/logging/LogRepository;Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenCollectionRepository;Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope;Lkotlin/coroutines/CoroutineContext;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$map$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$map$1$2; +PLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/common/service/logging/LogRepository;Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->(Lkotlin/jvm/internal/Ref$BooleanRef;Lkotlinx/datetime/Instant;Lcom/artemchep/keyguard/common/service/logging/LogRepository;Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->invoke(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetCollectionsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetFolderTreeImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFolderTreeImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFolderTreeImpl;->(Lkotlin/coroutines/CoroutineContext;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFolderTreeImpl;->(Lkotlin/coroutines/CoroutineContext;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFolderTreeImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetFolderTreeImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFolderTreeImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFolderTreeImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl;->(Lcom/artemchep/keyguard/common/service/logging/LogRepository;Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenFolderRepository;Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope;Lkotlin/coroutines/CoroutineContext;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl;->(Lcom/artemchep/keyguard/common/service/logging/LogRepository;Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenFolderRepository;Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope;Lkotlin/coroutines/CoroutineContext;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$map$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/common/service/logging/LogRepository;Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->(Lkotlin/jvm/internal/Ref$BooleanRef;Lkotlinx/datetime/Instant;Lcom/artemchep/keyguard/common/service/logging/LogRepository;Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->invoke(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetFoldersImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenMetaRepository;Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope;Lkotlin/coroutines/CoroutineContext;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenMetaRepository;Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope;Lkotlin/coroutines/CoroutineContext;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl$special$$inlined$map$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl$special$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl$special$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl$special$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl$special$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl$special$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl$special$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl$special$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetMetasImpl$special$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl;->(Lcom/artemchep/keyguard/common/service/logging/LogRepository;Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenOrganizationRepository;Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope;Lkotlin/coroutines/CoroutineContext;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl;->(Lcom/artemchep/keyguard/common/service/logging/LogRepository;Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenOrganizationRepository;Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope;Lkotlin/coroutines/CoroutineContext;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$map$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$map$1$2; +PLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/artemchep/keyguard/common/service/logging/LogRepository;Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->(Lkotlin/jvm/internal/Ref$BooleanRef;Lkotlinx/datetime/Instant;Lcom/artemchep/keyguard/common/service/logging/LogRepository;Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->invoke(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizationsImpl$special$$inlined$withLogTimeOfFirstEvent$default$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenTokenRepository;Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenProfileRepository;Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope;Lkotlin/coroutines/CoroutineContext;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenTokenRepository;Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenProfileRepository;Lcom/artemchep/keyguard/common/usecase/WindowCoroutineScope;Lkotlin/coroutines/CoroutineContext;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl;->invoke()Lkotlinx/coroutines/flow/Flow; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl$sharedFlow$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl$sharedFlow$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl$sharedFlow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl$sharedFlow$1;->invoke(Ljava/util/List;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl$sharedFlow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/GetProfilesImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/MoveCipherToFolderByIdImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/MoveCipherToFolderByIdImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/MoveCipherToFolderByIdImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById;Lcom/artemchep/keyguard/common/usecase/AddFolder;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/MoveCipherToFolderByIdImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/MoveCipherToFolderByIdImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/MoveCipherToFolderByIdImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/MoveCipherToFolderByIdImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/MoveCipherToFolderByIdImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/MoveCipherToFolderByIdImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/MoveCipherToFolderByIdImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/MoveCipherToFolderByIdImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenTokenRepository;Lcom/artemchep/keyguard/common/service/text/Base64Service;Lcom/artemchep/keyguard/common/service/connectivity/ConnectivityService;Lkotlinx/serialization/json/Json;Lio/ktor/client/HttpClient;Lcom/artemchep/keyguard/core/store/DatabaseManager;Lcom/artemchep/keyguard/common/usecase/QueueSyncById;Lcom/artemchep/keyguard/common/usecase/QueueSyncAll;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl;->(Lorg/kodein/di/DirectDI;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl;->access$getQueueSyncAll$p(Lcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl;)Lcom/artemchep/keyguard/common/usecase/QueueSyncAll; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl;->access$getTokenRepository$p(Lcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl;)Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenTokenRepository; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl;->launch(Lkotlinx/coroutines/CoroutineScope;)Lkotlinx/coroutines/Job; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$launch$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$launch$1;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$launch$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$launch$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$launch$1$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$launch$1$1;->(Lkotlinx/coroutines/CoroutineScope;Lcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$launch$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$launch$1$1;->invoke(Lkotlinx/collections/immutable/PersistentMap;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$launch$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$special$$inlined$instance$default$4; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$special$$inlined$instance$default$4;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$special$$inlined$instance$default$5; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$special$$inlined$instance$default$5;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$special$$inlined$instance$default$6; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$special$$inlined$instance$default$6;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$special$$inlined$instance$default$7; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$special$$inlined$instance$default$7;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$special$$inlined$instance$default$8; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/NotificationsImpl$special$$inlined$instance$default$8;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/RePromptCipherByIdImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RePromptCipherByIdImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RePromptCipherByIdImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RePromptCipherByIdImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/RePromptCipherByIdImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RePromptCipherByIdImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RePromptCipherByIdImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/RePromptCipherByIdImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RePromptCipherByIdImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/RemoveCipherByIdImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RemoveCipherByIdImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RemoveCipherByIdImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RemoveCipherByIdImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/RemoveCipherByIdImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RemoveCipherByIdImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RemoveCipherByIdImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/RemoveCipherByIdImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RemoveCipherByIdImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/RenameFolderByIdImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RenameFolderByIdImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RenameFolderByIdImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyFolderById;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RenameFolderByIdImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/RenameFolderByIdImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RenameFolderByIdImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RenameFolderByIdImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/RenameFolderByIdImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RenameFolderByIdImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/RestoreCipherByIdImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RestoreCipherByIdImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RestoreCipherByIdImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RestoreCipherByIdImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/RestoreCipherByIdImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RestoreCipherByIdImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RestoreCipherByIdImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/RestoreCipherByIdImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/RestoreCipherByIdImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl;->(Lcom/artemchep/keyguard/common/service/logging/LogRepository;Lcom/artemchep/keyguard/provider/bitwarden/repository/BitwardenTokenRepository;Lcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByToken;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl;->(Lorg/kodein/di/DirectDI;)V +PLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl;->access$getLogRepository$p(Lcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl;)Lcom/artemchep/keyguard/common/service/logging/LogRepository; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl;->invoke()Lkotlin/jvm/functions/Function1; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$invoke$$inlined$flatMap$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$invoke$$inlined$flatMap$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;Lcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$invoke$$inlined$flatMap$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$invoke$$inlined$flatMap$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$invoke$$inlined$flatMap$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$invoke$$inlined$flatMap$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$invoke$lambda$3$$inlined$map$1; +PLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$invoke$lambda$3$$inlined$map$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V +PLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$invoke$lambda$3$$inlined$map$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +PLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$invoke$lambda$3$$inlined$map$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +PLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$invoke$lambda$3$$inlined$map$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$invoke$lambda$3$$inlined$map$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/SyncAllImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/TrashCipherByIdImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/TrashCipherByIdImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/TrashCipherByIdImpl;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/TrashCipherByIdImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/TrashCipherByIdImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/TrashCipherByIdImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/TrashCipherByIdImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/TrashCipherByIdImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/TrashCipherByIdImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/internal/AddAccount; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/internal/RequestEmailTfa; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByToken; +Lcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl;->(Lcom/artemchep/keyguard/common/service/logging/LogRepository;Lcom/artemchep/keyguard/common/service/crypto/CipherEncryptor;Lcom/artemchep/keyguard/common/service/crypto/CryptoGenerator;Lcom/artemchep/keyguard/common/service/text/Base64Service;Lkotlinx/serialization/json/Json;Lio/ktor/client/HttpClient;Lcom/artemchep/keyguard/core/store/DatabaseManager;Lcom/artemchep/keyguard/core/store/DatabaseSyncer;Lcom/artemchep/keyguard/common/usecase/Watchdog;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$4; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$4;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$5; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$5;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$6; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$6;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$7; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$7;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$8; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$8;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$9; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl$special$$inlined$instance$default$9;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase;->(Lcom/artemchep/keyguard/core/store/DatabaseManager;Lcom/artemchep/keyguard/common/usecase/GetCanWrite;Lcom/artemchep/keyguard/common/usecase/GetWriteAccess;Lcom/artemchep/keyguard/common/usecase/QueueSyncById;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase$special$$inlined$instance$default$2; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase$special$$inlined$instance$default$2;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase$special$$inlined$instance$default$3; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase$special$$inlined$instance$default$3;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase$special$$inlined$instance$default$4; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase$special$$inlined$instance$default$4;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyFolderById; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyFolderById;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyFolderById;->(Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase;)V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyFolderById;->(Lorg/kodein/di/DirectDI;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyFolderById$Companion; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyFolderById$Companion;->()V +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyFolderById$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyFolderById$special$$inlined$instance$default$1; +HSPLcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyFolderById$special$$inlined$instance$default$1;->()V +Lcom/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyProfileById; +Lcom/artemchep/keyguard/res/Res$fonts$RobotoMono; +HSPLcom/artemchep/keyguard/res/Res$fonts$RobotoMono;->()V +HSPLcom/artemchep/keyguard/res/Res$fonts$RobotoMono;->()V +HSPLcom/artemchep/keyguard/res/Res$fonts$RobotoMono;->getRobotoMono()Ldev/icerock/moko/resources/FontResource; +Lcom/artemchep/keyguard/res/Res$strings; +HSPLcom/artemchep/keyguard/res/Res$strings;->()V +HSPLcom/artemchep/keyguard/res/Res$strings;->()V +HSPLcom/artemchep/keyguard/res/Res$strings;->getAccount()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getAccount_main_add_account_title()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getAttachments()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getCipher_type_card()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getCipher_type_identity()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getCipher_type_login()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getCipher_type_note()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getCollection()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getCollection_none()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getCustom()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getDownloads()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getError_must_have_at_least_n_symbols()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getError_must_not_be_blank()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getFilter_header_title()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getFolder()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getFolder_none()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getHome_generator_label()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getHome_send_label()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getHome_settings_label()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getHome_vault_label()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getHome_watchtower_label()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getMisc()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getNav_animation_crossfade()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getNav_animation_disabled()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getNav_animation_dynamic()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getOne_time_password()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getOptions()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getOrganization()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getOrganization_none()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getPasskeys()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getPassword()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getPref_item_erase_data_text()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getPref_item_erase_data_title()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getPull_to_search()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSetup_button_create_vault()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSetup_button_send_crash_reports()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSetup_field_app_password_label()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSetup_header_text()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSort_header_title()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSortby_modification_date_normal_mode()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSortby_modification_date_reverse_mode()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSortby_modification_date_title()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSortby_password_modification_date_normal_mode()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSortby_password_modification_date_reverse_mode()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSortby_password_modification_date_title()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSortby_password_normal_mode()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSortby_password_reverse_mode()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSortby_password_strength_normal_mode()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSortby_password_strength_reverse_mode()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSortby_password_strength_title()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSortby_password_title()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSortby_title_normal_mode()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSortby_title_reverse_mode()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getSortby_title_title()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getTrash()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getType()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getUnlock_button_unlock()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getUnlock_header_text()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getVault_action_always_show_keyboard_title()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getVault_action_lock_vault_title()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getVault_action_sync_vault_title()Ldev/icerock/moko/resources/StringResource; +HSPLcom/artemchep/keyguard/res/Res$strings;->getVault_main_search_placeholder()Ldev/icerock/moko/resources/StringResource; +Lcom/artemchep/keyguard/room/AppDatabase; +Lcom/artemchep/keyguard/ui/Afh; +HSPLcom/artemchep/keyguard/ui/Afh;->(Lkotlinx/collections/immutable/ImmutableList;Lkotlinx/datetime/Instant;)V +HSPLcom/artemchep/keyguard/ui/Afh;->equals(Ljava/lang/Object;)Z +HSPLcom/artemchep/keyguard/ui/Afh;->getOptions()Lkotlinx/collections/immutable/ImmutableList; +Lcom/artemchep/keyguard/ui/AnimatedFabVisibilityKt; +HSPLcom/artemchep/keyguard/ui/AnimatedFabVisibilityKt;->rememberFabExpanded(Landroidx/compose/material3/TopAppBarScrollBehavior;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State; +Lcom/artemchep/keyguard/ui/AnimatedFabVisibilityKt$rememberFabExpanded$1$1; +HSPLcom/artemchep/keyguard/ui/AnimatedFabVisibilityKt$rememberFabExpanded$1$1;->(Landroidx/compose/material3/TopAppBarScrollBehavior;)V +Lcom/artemchep/keyguard/ui/AutofillWindowKt; +HSPLcom/artemchep/keyguard/ui/AutofillWindowKt;->AutofillButton$lambda$1(Landroidx/compose/runtime/MutableState;)Z +HSPLcom/artemchep/keyguard/ui/AutofillWindowKt;->AutofillButton(Ljava/lang/String;ZZLkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/ui/AutofillWindowKt$AutofillButton$1$1; +HSPLcom/artemchep/keyguard/ui/AutofillWindowKt$AutofillButton$1$1;->(Landroidx/compose/runtime/MutableState;)V +Lcom/artemchep/keyguard/ui/AutofillWindowKt$AutofillButton$2; +HSPLcom/artemchep/keyguard/ui/AutofillWindowKt$AutofillButton$2;->(Ljava/lang/String;ZZLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)V +Lcom/artemchep/keyguard/ui/AutofillWindowKt$AutofillButton$3; +HSPLcom/artemchep/keyguard/ui/AutofillWindowKt$AutofillButton$3;->(Ljava/lang/String;ZZLkotlin/jvm/functions/Function1;II)V +Lcom/artemchep/keyguard/ui/AutofillWindowKt$AutofillButton$onDismissRequest$1$1; +HSPLcom/artemchep/keyguard/ui/AutofillWindowKt$AutofillButton$onDismissRequest$1$1;->(Landroidx/compose/runtime/MutableState;)V +Lcom/artemchep/keyguard/ui/CollectedEffectKt; +HSPLcom/artemchep/keyguard/ui/CollectedEffectKt;->CollectedEffect(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/ui/CollectedEffectKt$CollectedEffect$1; +HSPLcom/artemchep/keyguard/ui/CollectedEffectKt$CollectedEffect$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/ui/CollectedEffectKt$CollectedEffect$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/ui/CollectedEffectKt$CollectedEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/CollectedEffectKt$CollectedEffect$1$1; +HSPLcom/artemchep/keyguard/ui/CollectedEffectKt$CollectedEffect$1$1;->(Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/ui/CollectedEffectKt$CollectedEffect$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/ComposableKt; +HSPLcom/artemchep/keyguard/ui/ComposableKt;->Compose(Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt;->getLambda-1$common_playStoreRelease()Lkotlin/jvm/functions/Function2; +Lcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-1$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-2$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-2$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-3$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-3$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-3$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-4$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-4$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-4$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-5$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-5$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-5$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-6$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-6$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$AutofillWindowKt$lambda-6$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$OptionsWindowKt; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$OptionsWindowKt;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$OptionsWindowKt;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$OptionsWindowKt;->getLambda-1$common_playStoreRelease()Lkotlin/jvm/functions/Function2; +Lcom/artemchep/keyguard/ui/ComposableSingletons$OptionsWindowKt$lambda-1$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$OptionsWindowKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$OptionsWindowKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$OptionsWindowKt$lambda-1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$OptionsWindowKt$lambda-1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt;->getLambda-12$common_playStoreRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt;->getLambda-13$common_playStoreRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt;->getLambda-3$common_playStoreRelease()Lkotlin/jvm/functions/Function2; +Lcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-1$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-1$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-10$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-10$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-10$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-11$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-11$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-11$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-12$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-12$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-12$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-13$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-13$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-13$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-2$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-2$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-3$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-3$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-3$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-3$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-3$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-4$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-4$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-4$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-5$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-5$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-5$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-6$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-6$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-6$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-7$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-7$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-7$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-8$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-8$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-8$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-9$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-9$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$ScaffoldKt$lambda-9$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt;->getLambda-3$common_playStoreRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt;->getLambda-4$common_playStoreRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt;->getLambda-5$common_playStoreRelease()Lkotlin/jvm/functions/Function2; +Lcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-1$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-1$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-2$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-2$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-3$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-3$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-3$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-3$1;->invoke(Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-3$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-4$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-4$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-4$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-5$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-5$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-5$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-5$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-5$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-6$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-6$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-6$1;->()V +Lcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-7$1; +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-7$1;->()V +HSPLcom/artemchep/keyguard/ui/ComposableSingletons$TextItemKt$lambda-7$1;->()V +Lcom/artemchep/keyguard/ui/ContextItem; +Lcom/artemchep/keyguard/ui/ContextItem$Section; +HSPLcom/artemchep/keyguard/ui/ContextItem$Section;->()V +HSPLcom/artemchep/keyguard/ui/ContextItem$Section;->(Ljava/lang/String;)V +HSPLcom/artemchep/keyguard/ui/ContextItem$Section;->getTitle()Ljava/lang/String; +Lcom/artemchep/keyguard/ui/ContextItemBuilder; +HSPLcom/artemchep/keyguard/ui/ContextItemBuilder;->()V +HSPLcom/artemchep/keyguard/ui/ContextItemBuilder;->([Ljava/util/List;)V +HSPLcom/artemchep/keyguard/ui/ContextItemBuilder;->access$getItems$p(Lcom/artemchep/keyguard/ui/ContextItemBuilder;)Ljava/util/List; +HSPLcom/artemchep/keyguard/ui/ContextItemBuilder;->build()Lkotlinx/collections/immutable/PersistentList; +HSPLcom/artemchep/keyguard/ui/ContextItemBuilder;->plusAssign(Lcom/artemchep/keyguard/ui/ContextItem;)V +HSPLcom/artemchep/keyguard/ui/ContextItemBuilder;->section$default(Lcom/artemchep/keyguard/ui/ContextItemBuilder;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +HSPLcom/artemchep/keyguard/ui/ContextItemBuilder;->section(Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V +Lcom/artemchep/keyguard/ui/ContextItemBuilder$build$1; +HSPLcom/artemchep/keyguard/ui/ContextItemBuilder$build$1;->(Lcom/artemchep/keyguard/ui/ContextItemBuilder;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/ui/ContextItemBuilder$build$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/ui/ContextItemBuilder$build$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/DropdownKt; +HSPLcom/artemchep/keyguard/ui/DropdownKt;->()V +HSPLcom/artemchep/keyguard/ui/DropdownKt;->getDropdownMinWidth()F +Lcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt; +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt;->ExpandedIfNotEmpty(Ljava/lang/Object;Landroidx/compose/ui/Modifier;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt;->ExpandedIfNotEmptyForRow(Ljava/lang/Object;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmpty$1; +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmpty$1;->()V +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmpty$1;->()V +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmpty$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmpty$1;->invoke-mzRDjE0(J)J +Lcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmpty$2; +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmpty$2;->()V +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmpty$2;->()V +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmpty$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmpty$2;->invoke-mzRDjE0(J)J +Lcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmpty$3; +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmpty$3;->(Ljava/lang/Object;Lkotlin/jvm/functions/Function3;I)V +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmpty$3;->invoke$lambda$1(Landroidx/compose/runtime/MutableState;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmpty$3;->invoke$lambda$2(Landroidx/compose/runtime/MutableState;Ljava/lang/Object;)V +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmpty$3;->invoke(Landroidx/compose/animation/AnimatedVisibilityScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmpty$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmptyForRow$1; +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmptyForRow$1;->()V +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmptyForRow$1;->()V +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmptyForRow$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmptyForRow$1;->invoke-mzRDjE0(J)J +Lcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmptyForRow$2; +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmptyForRow$2;->()V +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmptyForRow$2;->()V +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmptyForRow$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/ExpandedIfNotEmptyKt$ExpandedIfNotEmptyForRow$2;->invoke-mzRDjE0(J)J +Lcom/artemchep/keyguard/ui/FabScope; +Lcom/artemchep/keyguard/ui/FabState; +Lcom/artemchep/keyguard/ui/FlatItemAction; +HSPLcom/artemchep/keyguard/ui/FlatItemAction;->()V +HSPLcom/artemchep/keyguard/ui/FlatItemAction;->(Ljava/lang/String;Landroidx/compose/ui/graphics/vector/ImageVector;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/ui/FlatItemAction$Type;Lkotlin/jvm/functions/Function0;)V +HSPLcom/artemchep/keyguard/ui/FlatItemAction;->(Ljava/lang/String;Landroidx/compose/ui/graphics/vector/ImageVector;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/ui/FlatItemAction$Type;Lkotlin/jvm/functions/Function0;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/ui/FlatItemAction$Companion; +HSPLcom/artemchep/keyguard/ui/FlatItemAction$Companion;->()V +HSPLcom/artemchep/keyguard/ui/FlatItemAction$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/ui/FlatItemAction$Type; +Lcom/artemchep/keyguard/ui/InputPhase; +HSPLcom/artemchep/keyguard/ui/InputPhase;->$values()[Lcom/artemchep/keyguard/ui/InputPhase; +HSPLcom/artemchep/keyguard/ui/InputPhase;->()V +HSPLcom/artemchep/keyguard/ui/InputPhase;->(Ljava/lang/String;I)V +HSPLcom/artemchep/keyguard/ui/InputPhase;->values()[Lcom/artemchep/keyguard/ui/InputPhase; +Lcom/artemchep/keyguard/ui/LeMOdelBottomSheetKt; +HSPLcom/artemchep/keyguard/ui/LeMOdelBottomSheetKt;->LeMOdelBottomSheet(ZLkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/ui/LeMOdelBottomSheetKt$LeMOdelBottomSheet$3; +HSPLcom/artemchep/keyguard/ui/LeMOdelBottomSheetKt$LeMOdelBottomSheet$3;->(ZLkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;I)V +Lcom/artemchep/keyguard/ui/MutableFabScope; +HSPLcom/artemchep/keyguard/ui/MutableFabScope;->(Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/ui/MutableFabScope;->getState()Landroidx/compose/runtime/State; +Lcom/artemchep/keyguard/ui/MutableOverlayScope; +HSPLcom/artemchep/keyguard/ui/MutableOverlayScope;->(Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/ui/MutableOverlayScope;->getContentPadding()Landroidx/compose/runtime/State; +Lcom/artemchep/keyguard/ui/OptionsWindowKt; +HSPLcom/artemchep/keyguard/ui/OptionsWindowKt;->OptionsButton$lambda$4(Landroidx/compose/runtime/MutableState;)Z +HSPLcom/artemchep/keyguard/ui/OptionsWindowKt;->OptionsButton(Ljava/util/List;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/ui/OptionsWindowKt;->OptionsButton(ZLkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/ui/OptionsWindowKt$OptionsButton$1; +PLcom/artemchep/keyguard/ui/OptionsWindowKt$OptionsButton$1;->(Ljava/util/List;)V +Lcom/artemchep/keyguard/ui/OptionsWindowKt$OptionsButton$3$1$1; +HSPLcom/artemchep/keyguard/ui/OptionsWindowKt$OptionsButton$3$1$1;->(Landroidx/compose/runtime/MutableState;)V +Lcom/artemchep/keyguard/ui/OptionsWindowKt$OptionsButton$3$2; +HSPLcom/artemchep/keyguard/ui/OptionsWindowKt$OptionsButton$3$2;->(Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;)V +Lcom/artemchep/keyguard/ui/OptionsWindowKt$OptionsButton$3$onDismissRequest$1$1; +HSPLcom/artemchep/keyguard/ui/OptionsWindowKt$OptionsButton$3$onDismissRequest$1$1;->(Landroidx/compose/runtime/MutableState;)V +Lcom/artemchep/keyguard/ui/OptionsWindowKt$OptionsButton$4; +HSPLcom/artemchep/keyguard/ui/OptionsWindowKt$OptionsButton$4;->(ZLkotlin/jvm/functions/Function3;II)V +Lcom/artemchep/keyguard/ui/OtherScaffoldKt; +HSPLcom/artemchep/keyguard/ui/OtherScaffoldKt;->OtherScaffold(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/ui/OverlayScope; +Lcom/artemchep/keyguard/ui/PaddingKt; +HSPLcom/artemchep/keyguard/ui/PaddingKt;->minus(Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/PaddingValues;)Landroidx/compose/foundation/layout/PaddingValues; +HSPLcom/artemchep/keyguard/ui/PaddingKt;->plus(Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/PaddingValues;)Landroidx/compose/foundation/layout/PaddingValues; +Lcom/artemchep/keyguard/ui/PaddingKt$minus$1; +HSPLcom/artemchep/keyguard/ui/PaddingKt$minus$1;->(Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/PaddingValues;)V +Lcom/artemchep/keyguard/ui/PaddingKt$plus$1; +HSPLcom/artemchep/keyguard/ui/PaddingKt$plus$1;->(Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/PaddingValues;)V +HSPLcom/artemchep/keyguard/ui/PaddingKt$plus$1;->calculateBottomPadding-D9Ej5fM()F +HSPLcom/artemchep/keyguard/ui/PaddingKt$plus$1;->calculateLeftPadding-u2uoSUM(Landroidx/compose/ui/unit/LayoutDirection;)F +HSPLcom/artemchep/keyguard/ui/PaddingKt$plus$1;->calculateRightPadding-u2uoSUM(Landroidx/compose/ui/unit/LayoutDirection;)F +HSPLcom/artemchep/keyguard/ui/PaddingKt$plus$1;->calculateTopPadding-D9Ej5fM()F +Lcom/artemchep/keyguard/ui/PasswordFilterItemKt; +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt;->()V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt;->Avatar-3IgeMak(Landroidx/compose/ui/Modifier;JLkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt;->FlatItem-ws5HyW4(Landroidx/compose/ui/Modifier;FJLkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Ljava/util/List;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/PaddingValues;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;ZLandroidx/compose/runtime/Composer;III)V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt;->FlatItemLayout-uncuNKo(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/PaddingValues;FJLkotlin/jvm/functions/Function3;Ljava/util/List;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;ZLandroidx/compose/runtime/Composer;III)V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt;->FlatItemLayout_uncuNKo$lambda$11$lambda$7(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt;->FlatItemLayout_uncuNKo$lambda$11$lambda$9(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt;->FlatItemTextContent-uDo3WH8(Landroidx/compose/foundation/layout/ColumnScope;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;JZLandroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt;->getDefaultEmphasisAlpha()F +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt;->getDisabledEmphasisAlpha()F +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt;->getHighEmphasisAlpha()F +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt;->getMediumEmphasisAlpha()F +Lcom/artemchep/keyguard/ui/PasswordFilterItemKt$Avatar$3; +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$Avatar$3;->(Landroidx/compose/ui/Modifier;JLkotlin/jvm/functions/Function3;II)V +Lcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItem$1; +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItem$1;->(Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItem$1;->invoke(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItem$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$1$1; +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$1$1;->(Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;ZLandroidx/compose/foundation/layout/PaddingValues;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;)V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$1$1$2$1; +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$1$1$2$1;->(Landroidx/compose/runtime/State;)V +Lcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$1$1$3$1; +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$1$1$3$1;->(Landroidx/compose/runtime/State;)V +Lcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$1$1$4$1$2; +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$1$1$4$1$2;->(Lkotlin/jvm/functions/Function3;Landroidx/compose/foundation/layout/RowScope;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;)V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$1$1$4$1$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$1$1$4$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$1$1$4$1$2$1; +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$1$1$4$1$2$1;->(Lkotlin/jvm/functions/Function3;Landroidx/compose/foundation/layout/RowScope;)V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$1$1$4$1$2$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$1$1$4$1$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$2; +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemLayout$2;->(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/PaddingValues;FJLkotlin/jvm/functions/Function3;Ljava/util/List;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;ZIII)V +Lcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemTextContent$1; +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemTextContent$1;->(Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemTextContent$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemTextContent$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemTextContent$2; +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemTextContent$2;->(Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemTextContent$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemTextContent$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemTextContent$3; +HSPLcom/artemchep/keyguard/ui/PasswordFilterItemKt$FlatItemTextContent$3;->(Landroidx/compose/foundation/layout/ColumnScope;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;JZII)V +Lcom/artemchep/keyguard/ui/RightClickableKt; +HSPLcom/artemchep/keyguard/ui/RightClickableKt;->rightClickable(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function0;)Landroidx/compose/ui/Modifier; +Lcom/artemchep/keyguard/ui/ScaffoldKt; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt;->()V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt;->DefaultFab-DTcfvLk(Lcom/artemchep/keyguard/ui/FabScope;JJLkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt;->DefaultProgressBar(Lcom/artemchep/keyguard/ui/OverlayScope;Landroidx/compose/ui/Modifier;ZLandroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt;->DefaultSelection(Lcom/artemchep/keyguard/ui/Selection;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt;->ScaffoldLazyColumn-k0_msSU(Landroidx/compose/ui/Modifier;Landroidx/compose/material3/TopAppBarScrollBehavior;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/State;Lkotlin/jvm/functions/Function3;ILandroidx/compose/material/pullrefresh/PullRefreshState;JJLandroidx/compose/foundation/layout/WindowInsets;Lkotlin/jvm/functions/Function3;Landroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/foundation/lazy/LazyListState;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;III)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt;->SmallFab(Lcom/artemchep/keyguard/ui/FabScope;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt;->access$calculatePaddingWithFab(Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/runtime/State;)Landroidx/compose/foundation/layout/PaddingValues; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt;->access$getScreenPaddingTop$p()F +HSPLcom/artemchep/keyguard/ui/ScaffoldKt;->calculatePaddingWithFab(Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/runtime/State;)Landroidx/compose/foundation/layout/PaddingValues; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt;->getScaffoldContentWindowInsets(Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/WindowInsets; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt;->getScreenMaxWidth()F +Lcom/artemchep/keyguard/ui/ScaffoldKt$DefaultFab$1; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$DefaultFab$1;->(JJLcom/artemchep/keyguard/ui/FabScope;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/State;)V +Lcom/artemchep/keyguard/ui/ScaffoldKt$DefaultFab$2; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$DefaultFab$2;->(Lcom/artemchep/keyguard/ui/FabScope;JJLkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;II)V +Lcom/artemchep/keyguard/ui/ScaffoldKt$DefaultProgressBar$1; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$DefaultProgressBar$1;->()V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$DefaultProgressBar$1;->()V +Lcom/artemchep/keyguard/ui/ScaffoldKt$DefaultProgressBar$2; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$DefaultProgressBar$2;->()V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$DefaultProgressBar$2;->()V +Lcom/artemchep/keyguard/ui/ScaffoldKt$DefaultProgressBar$3; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$DefaultProgressBar$3;->(Lcom/artemchep/keyguard/ui/OverlayScope;Landroidx/compose/ui/Modifier;ZII)V +Lcom/artemchep/keyguard/ui/ScaffoldKt$DefaultProgressBar$finalPadding$1$1; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$DefaultProgressBar$finalPadding$1$1;->(Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$DefaultProgressBar$finalPadding$1$1;->invoke()Landroidx/compose/foundation/layout/PaddingValues; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$DefaultProgressBar$finalPadding$1$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$1$1; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$1$1;->(Landroidx/compose/foundation/layout/MutableWindowInsets;Landroidx/compose/foundation/layout/WindowInsets;)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$1$1;->invoke(Landroidx/compose/foundation/layout/WindowInsets;)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$2; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$2;->(Landroidx/compose/material3/TopAppBarScrollBehavior;Landroidx/compose/runtime/State;Lkotlin/jvm/functions/Function3;)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$3; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$3;->(Landroidx/compose/runtime/State;Landroidx/compose/foundation/layout/WindowInsets;Landroidx/compose/foundation/lazy/LazyListState;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/State;Landroidx/compose/foundation/layout/Arrangement$Vertical;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$3;->invoke(Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$3$1; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$3$1;->(Landroidx/compose/runtime/State;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/Arrangement$Vertical;Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$3$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$3$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$3$1$1$1; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$3$1$1$1;->(Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$3$1$1$1;->invoke(Landroidx/compose/ui/graphics/GraphicsLayerScope;)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$3$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$3$1$2$1; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$3$1$2$1;->(Lkotlin/jvm/functions/Function1;)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$3$1$2$1;->invoke(Landroidx/compose/foundation/lazy/LazyListScope;)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$3$1$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$4; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$4;->(Landroidx/compose/ui/Modifier;Landroidx/compose/material3/TopAppBarScrollBehavior;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/State;Lkotlin/jvm/functions/Function3;ILandroidx/compose/material/pullrefresh/PullRefreshState;JJLandroidx/compose/foundation/layout/WindowInsets;Lkotlin/jvm/functions/Function3;Landroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/foundation/lazy/LazyListState;Lkotlin/jvm/functions/Function1;III)V +Lcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$translationYState$1$1; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$translationYState$1$1;->(Landroidx/compose/ui/unit/Density;Landroidx/compose/material/pullrefresh/PullRefreshState;)V +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$translationYState$1$1;->invoke()Ljava/lang/Float; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$ScaffoldLazyColumn$translationYState$1$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/ScaffoldKt$SmallFab$1; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$SmallFab$1;->(Landroidx/compose/runtime/State;Lkotlin/jvm/functions/Function2;)V +Lcom/artemchep/keyguard/ui/ScaffoldKt$SmallFab$2; +HSPLcom/artemchep/keyguard/ui/ScaffoldKt$SmallFab$2;->(Lcom/artemchep/keyguard/ui/FabScope;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function0;I)V +Lcom/artemchep/keyguard/ui/Selection; +Lcom/artemchep/keyguard/ui/TextItemKt; +HSPLcom/artemchep/keyguard/ui/TextItemKt;->()V +HSPLcom/artemchep/keyguard/ui/TextItemKt;->ConcealedFlatTextField(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;Landroidx/compose/foundation/text/KeyboardOptions;Landroidx/compose/foundation/text/KeyboardActions;ZILandroidx/compose/foundation/interaction/MutableInteractionSource;ZLkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;III)V +HSPLcom/artemchep/keyguard/ui/TextItemKt;->Decoration-KTwxG1Y(JLandroidx/compose/ui/text/TextStyle;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/ui/TextItemKt;->FlatTextField$lambda$4(Landroidx/compose/runtime/MutableState;)Z +HSPLcom/artemchep/keyguard/ui/TextItemKt;->FlatTextField$lambda$5(Landroidx/compose/runtime/MutableState;Z)V +HSPLcom/artemchep/keyguard/ui/TextItemKt;->FlatTextField(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/input/VisualTransformation;Landroidx/compose/foundation/text/KeyboardOptions;Landroidx/compose/foundation/text/KeyboardActions;ZILandroidx/compose/foundation/interaction/MutableInteractionSource;ZLkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;III)V +HSPLcom/artemchep/keyguard/ui/TextItemKt;->FlatTextFieldSurface$lambda$27(Landroidx/compose/runtime/State;)J +HSPLcom/artemchep/keyguard/ui/TextItemKt;->FlatTextFieldSurface(Landroidx/compose/ui/Modifier;ZZLkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/ui/TextItemKt;->PasswordFlatTextField(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;Landroidx/compose/foundation/text/KeyboardOptions;Landroidx/compose/foundation/text/KeyboardActions;ZLkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;III)V +HSPLcom/artemchep/keyguard/ui/TextItemKt;->PlainTextField(Ljava/lang/String;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Ljava/lang/String;ZZLandroidx/compose/ui/text/TextStyle;Lkotlin/jvm/functions/Function2;ZLandroidx/compose/ui/text/input/VisualTransformation;Landroidx/compose/foundation/text/KeyboardOptions;Landroidx/compose/foundation/text/KeyboardActions;ZILandroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/runtime/Composer;III)V +HSPLcom/artemchep/keyguard/ui/TextItemKt;->PlainTextFieldDecorationBox$lambda$15(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/TextItemKt;->PlainTextFieldDecorationBox(Landroidx/compose/ui/Modifier;Ljava/lang/String;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Landroidx/compose/ui/text/input/VisualTransformation;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/ui/TextItemKt;->access$Decoration-KTwxG1Y(JLandroidx/compose/ui/text/TextStyle;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/ui/TextItemKt;->access$FlatTextField$lambda$4(Landroidx/compose/runtime/MutableState;)Z +HSPLcom/artemchep/keyguard/ui/TextItemKt;->access$FlatTextField$lambda$5(Landroidx/compose/runtime/MutableState;Z)V +HSPLcom/artemchep/keyguard/ui/TextItemKt;->access$FlatTextFieldSurface(Landroidx/compose/ui/Modifier;ZZLkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/ui/TextItemKt;->access$PlainTextFieldDecorationBox$lambda$15(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/TextItemKt;->access$PlainTextFieldDecorationBox(Landroidx/compose/ui/Modifier;Ljava/lang/String;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Landroidx/compose/ui/text/input/VisualTransformation;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/ui/TextItemKt$ConcealedFlatTextField$2; +HSPLcom/artemchep/keyguard/ui/TextItemKt$ConcealedFlatTextField$2;->(Lcom/artemchep/keyguard/feature/auth/common/VisibilityState;Lkotlin/jvm/functions/Function3;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$ConcealedFlatTextField$2;->invoke(Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$ConcealedFlatTextField$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/TextItemKt$ConcealedFlatTextField$3; +HSPLcom/artemchep/keyguard/ui/TextItemKt$ConcealedFlatTextField$3;->(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;Landroidx/compose/foundation/text/KeyboardOptions;Landroidx/compose/foundation/text/KeyboardActions;ZILandroidx/compose/foundation/interaction/MutableInteractionSource;ZLkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;III)V +Lcom/artemchep/keyguard/ui/TextItemKt$Decoration$contentWithColor$1; +HSPLcom/artemchep/keyguard/ui/TextItemKt$Decoration$contentWithColor$1;->(JLkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$Decoration$contentWithColor$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$Decoration$contentWithColor$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$2$1; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$2$1;->(Landroidx/compose/runtime/MutableState;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$2$1;->invoke(Landroidx/compose/ui/focus/FocusState;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3;->(Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Ljava/lang/String;ZLjava/lang/String;Landroidx/compose/ui/Modifier;Lcom/artemchep/keyguard/ui/focus/FocusRequester2;Landroidx/compose/ui/Modifier;Ljava/lang/String;ZLandroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/input/VisualTransformation;Landroidx/compose/foundation/text/KeyboardOptions;Landroidx/compose/foundation/text/KeyboardActions;ZILandroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/runtime/MutableState;Lkotlin/jvm/functions/Function3;Z)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3;->invoke$lambda$20$lambda$15$lambda$11$lambda$9$lambda$2(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3;->invoke$lambda$20$lambda$15$lambda$11$lambda$9$lambda$3(Landroidx/compose/runtime/State;)J +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3;->invoke$lambda$20$lambda$15$lambda$11$lambda$9$lambda$4(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3;->invoke$lambda$20$lambda$15$lambda$11$lambda$9$lambda$7(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3;->invoke$lambda$20$lambda$18(Landroidx/compose/runtime/State;)Lcom/artemchep/keyguard/ui/Afh; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$1$1; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$1$1;->(Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$1$1;->invoke(Landroidx/compose/ui/graphics/GraphicsLayerScope;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$3$1$1$1; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$3$1$1$1;->(Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$3$1$1$1;->invoke(Landroidx/compose/ui/graphics/GraphicsLayerScope;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$3$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$3$1$3; +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$3$1$4$1; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$3$1$4$1;->(Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$3$1$4$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$3$1$4$1;->invoke(Ljava/lang/String;)V +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$4$1; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$4$1;->(Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$4$1;->invoke(Landroidx/compose/ui/graphics/GraphicsLayerScope;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$4$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$7; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$7;->(Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;Lcom/artemchep/keyguard/ui/focus/FocusRequester2;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$7;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$7;->invoke(Lkotlin/Unit;Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$7$1$1; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$1$7$1$1;->(Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;Lcom/artemchep/keyguard/ui/focus/FocusRequester2;)V +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$3; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$3;->(Landroidx/compose/runtime/State;Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;)V +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$options$2$1; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$options$2$1;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$options$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$options$2$1;->invoke(Ljava/lang/String;Lkotlinx/collections/immutable/ImmutableList;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$options$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$options$2$1$filteredOptions$1; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$options$2$1$filteredOptions$1;->(Ljava/lang/String;)V +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$options$2$optionsFlow$1; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$options$2$optionsFlow$1;->(Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$options$2$optionsFlow$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$options$2$optionsFlow$1;->invoke()Lkotlinx/collections/immutable/ImmutableList; +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$options$2$valueFlow$1; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$options$2$valueFlow$1;->(Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$options$2$valueFlow$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$1$options$2$valueFlow$1;->invoke()Ljava/lang/String; +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$invoke$lambda$20$lambda$17$$inlined$map$1; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$invoke$lambda$20$lambda$17$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$invoke$lambda$20$lambda$17$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$invoke$lambda$20$lambda$17$$inlined$map$1$2; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$invoke$lambda$20$lambda$17$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$invoke$lambda$20$lambda$17$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$invoke$lambda$20$lambda$17$$inlined$map$1$2$1; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$invoke$lambda$20$lambda$17$$inlined$map$1$2$1;->(Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$3$invoke$lambda$20$lambda$17$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$4; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$4;->(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/artemchep/keyguard/feature/auth/common/TextFieldModel2;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/input/VisualTransformation;Landroidx/compose/foundation/text/KeyboardOptions;Landroidx/compose/foundation/text/KeyboardActions;ZILandroidx/compose/foundation/interaction/MutableInteractionSource;ZLkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;III)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$4;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextField$4;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextFieldSurface$1; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextFieldSurface$1;->(Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextFieldSurface$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextFieldSurface$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/TextItemKt$FlatTextFieldSurface$2; +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextFieldSurface$2;->(Landroidx/compose/ui/Modifier;ZZLkotlin/jvm/functions/Function2;II)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextFieldSurface$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$FlatTextFieldSurface$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/TextItemKt$PlainTextField$2; +HSPLcom/artemchep/keyguard/ui/TextItemKt$PlainTextField$2;->(Landroidx/compose/ui/Modifier;Ljava/lang/String;Lkotlin/jvm/functions/Function2;Landroidx/compose/ui/text/input/VisualTransformation;Landroidx/compose/foundation/interaction/MutableInteractionSource;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$PlainTextField$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/TextItemKt$PlainTextField$2;->invoke(Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +Lcom/artemchep/keyguard/ui/TextItemKt$PlainTextField$3; +HSPLcom/artemchep/keyguard/ui/TextItemKt$PlainTextField$3;->(Ljava/lang/String;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Ljava/lang/String;ZZLandroidx/compose/ui/text/TextStyle;Lkotlin/jvm/functions/Function2;ZLandroidx/compose/ui/text/input/VisualTransformation;Landroidx/compose/foundation/text/KeyboardOptions;Landroidx/compose/foundation/text/KeyboardActions;ZILandroidx/compose/foundation/interaction/MutableInteractionSource;III)V +Lcom/artemchep/keyguard/ui/TextItemKt$PlainTextFieldDecorationBox$3; +HSPLcom/artemchep/keyguard/ui/TextItemKt$PlainTextFieldDecorationBox$3;->(Landroidx/compose/ui/Modifier;Ljava/lang/String;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Landroidx/compose/ui/text/input/VisualTransformation;Landroidx/compose/foundation/interaction/MutableInteractionSource;II)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$PlainTextFieldDecorationBox$3;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$PlainTextFieldDecorationBox$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/TextItemKt$PlainTextFieldDecorationBox$decoratedPlaceholder$1; +HSPLcom/artemchep/keyguard/ui/TextItemKt$PlainTextFieldDecorationBox$decoratedPlaceholder$1;->(Landroidx/compose/runtime/State;Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$PlainTextFieldDecorationBox$decoratedPlaceholder$1;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/TextItemKt$PlainTextFieldDecorationBox$decoratedPlaceholder$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/TextItemKt$PlainTextFieldDecorationBox$placeholderOpacity$2; +HSPLcom/artemchep/keyguard/ui/TextItemKt$PlainTextFieldDecorationBox$placeholderOpacity$2;->()V +HSPLcom/artemchep/keyguard/ui/TextItemKt$PlainTextFieldDecorationBox$placeholderOpacity$2;->()V +HSPLcom/artemchep/keyguard/ui/TextItemKt$PlainTextFieldDecorationBox$placeholderOpacity$2;->invoke(Landroidx/compose/animation/core/Transition$Segment;Landroidx/compose/runtime/Composer;I)Landroidx/compose/animation/core/FiniteAnimationSpec; +HSPLcom/artemchep/keyguard/ui/TextItemKt$PlainTextFieldDecorationBox$placeholderOpacity$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/TextItemKt$WhenMappings; +HSPLcom/artemchep/keyguard/ui/TextItemKt$WhenMappings;->()V +Lcom/artemchep/keyguard/ui/ToastComposableKt; +HSPLcom/artemchep/keyguard/ui/ToastComposableKt;->()V +HSPLcom/artemchep/keyguard/ui/ToastComposableKt;->ToastMessageHost$lambda$1(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/MessageHub; +HSPLcom/artemchep/keyguard/ui/ToastComposableKt;->ToastMessageHost$lambda$2(Landroidx/compose/runtime/State;)Ljava/util/List; +HSPLcom/artemchep/keyguard/ui/ToastComposableKt;->ToastMessageHost(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/ui/ToastComposableKt;->access$ToastMessageHost$lambda$1(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/MessageHub; +Lcom/artemchep/keyguard/ui/ToastComposableKt$ToastMessageHost$$inlined$rememberInstance$1; +HSPLcom/artemchep/keyguard/ui/ToastComposableKt$ToastMessageHost$$inlined$rememberInstance$1;->()V +Lcom/artemchep/keyguard/ui/ToastComposableKt$ToastMessageHost$1; +HSPLcom/artemchep/keyguard/ui/ToastComposableKt$ToastMessageHost$1;->(Ljava/lang/String;Lkotlin/Lazy;Lkotlinx/coroutines/flow/MutableStateFlow;Lkotlinx/coroutines/CoroutineScope;)V +HSPLcom/artemchep/keyguard/ui/ToastComposableKt$ToastMessageHost$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult; +HSPLcom/artemchep/keyguard/ui/ToastComposableKt$ToastMessageHost$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/ToastComposableKt$ToastMessageHost$1$invoke$$inlined$onDispose$1; +HSPLcom/artemchep/keyguard/ui/ToastComposableKt$ToastMessageHost$1$invoke$$inlined$onDispose$1;->(Lkotlin/jvm/functions/Function0;)V +Lcom/artemchep/keyguard/ui/ToastComposableKt$ToastMessageHost$1$unregister$1; +HSPLcom/artemchep/keyguard/ui/ToastComposableKt$ToastMessageHost$1$unregister$1;->(Lkotlinx/coroutines/flow/MutableStateFlow;Lkotlinx/coroutines/CoroutineScope;)V +Lcom/artemchep/keyguard/ui/ToastComposableKt$ToastMessageHost$3; +HSPLcom/artemchep/keyguard/ui/ToastComposableKt$ToastMessageHost$3;->(Landroidx/compose/ui/Modifier;II)V +Lcom/artemchep/keyguard/ui/focus/BringIntoViewKt; +HSPLcom/artemchep/keyguard/ui/focus/BringIntoViewKt;->bringIntoView(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier; +Lcom/artemchep/keyguard/ui/focus/BringIntoViewKt$bringIntoView$1; +HSPLcom/artemchep/keyguard/ui/focus/BringIntoViewKt$bringIntoView$1;->()V +HSPLcom/artemchep/keyguard/ui/focus/BringIntoViewKt$bringIntoView$1;->()V +HSPLcom/artemchep/keyguard/ui/focus/BringIntoViewKt$bringIntoView$1;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLcom/artemchep/keyguard/ui/focus/BringIntoViewKt$bringIntoView$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/focus/BringIntoViewKt$bringIntoView$1$1; +HSPLcom/artemchep/keyguard/ui/focus/BringIntoViewKt$bringIntoView$1$1;->(Landroidx/compose/runtime/MutableState;Lkotlinx/coroutines/CoroutineScope;Landroidx/compose/foundation/relocation/BringIntoViewRequester;)V +HSPLcom/artemchep/keyguard/ui/focus/BringIntoViewKt$bringIntoView$1$1;->invoke(Landroidx/compose/ui/focus/FocusState;)V +HSPLcom/artemchep/keyguard/ui/focus/BringIntoViewKt$bringIntoView$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/focus/BringIntoViewKt$bringIntoView$1$1$1; +HSPLcom/artemchep/keyguard/ui/focus/BringIntoViewKt$bringIntoView$1$1$1;->(Landroidx/compose/foundation/relocation/BringIntoViewRequester;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/ui/focus/BringIntoViewKt$bringIntoView$1$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/ui/focus/BringIntoViewKt$bringIntoView$1$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/focus/FocusEvent; +HSPLcom/artemchep/keyguard/ui/focus/FocusEvent;->()V +HSPLcom/artemchep/keyguard/ui/focus/FocusEvent;->(Z)V +Lcom/artemchep/keyguard/ui/focus/FocusRequester2; +HSPLcom/artemchep/keyguard/ui/focus/FocusRequester2;->()V +HSPLcom/artemchep/keyguard/ui/focus/FocusRequester2;->()V +HSPLcom/artemchep/keyguard/ui/focus/FocusRequester2;->getOnRequestFocusFlow()Lkotlinx/coroutines/flow/Flow; +HSPLcom/artemchep/keyguard/ui/focus/FocusRequester2;->requestFocus$default(Lcom/artemchep/keyguard/ui/focus/FocusRequester2;ZILjava/lang/Object;)V +HSPLcom/artemchep/keyguard/ui/focus/FocusRequester2;->requestFocus(Z)V +Lcom/artemchep/keyguard/ui/focus/FocusRequesterKt; +HSPLcom/artemchep/keyguard/ui/focus/FocusRequesterKt;->focusRequester2(Landroidx/compose/ui/Modifier;Lcom/artemchep/keyguard/ui/focus/FocusRequester2;)Landroidx/compose/ui/Modifier; +Lcom/artemchep/keyguard/ui/focus/FocusRequesterKt$focusRequester2$1; +HSPLcom/artemchep/keyguard/ui/focus/FocusRequesterKt$focusRequester2$1;->(Lcom/artemchep/keyguard/ui/focus/FocusRequester2;)V +HSPLcom/artemchep/keyguard/ui/focus/FocusRequesterKt$focusRequester2$1;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLcom/artemchep/keyguard/ui/focus/FocusRequesterKt$focusRequester2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/focus/FocusRequesterKt$focusRequester2$1$1$1; +HSPLcom/artemchep/keyguard/ui/focus/FocusRequesterKt$focusRequester2$1$1$1;->(Landroidx/compose/runtime/MutableState;Landroidx/compose/ui/platform/SoftwareKeyboardController;Landroidx/compose/ui/focus/FocusRequester;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/ui/focus/FocusRequesterKt$focusRequester2$1$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/ui/focus/FocusRequesterKt$focusRequester2$1$1$1;->invoke(Lcom/artemchep/keyguard/ui/focus/FocusEvent;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/focus/FocusRequesterKt$focusRequester2$1$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/focus/FocusRequesterKt$focusRequester2$1$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/focus/FocusRequesterKt$focusRequester2$1$2$1; +HSPLcom/artemchep/keyguard/ui/focus/FocusRequesterKt$focusRequester2$1$2$1;->(Landroidx/compose/runtime/MutableState;)V +HSPLcom/artemchep/keyguard/ui/focus/FocusRequesterKt$focusRequester2$1$2$1;->invoke(Landroidx/compose/ui/focus/FocusState;)V +HSPLcom/artemchep/keyguard/ui/focus/FocusRequesterKt$focusRequester2$1$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/icons/ChevronIconKt; +HSPLcom/artemchep/keyguard/ui/icons/ChevronIconKt;->ChevronIcon-iJQMabo(Landroidx/compose/ui/Modifier;JLandroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/ui/icons/ChevronIconKt$ChevronIcon$1; +HSPLcom/artemchep/keyguard/ui/icons/ChevronIconKt$ChevronIcon$1;->(Landroidx/compose/ui/Modifier;JII)V +Lcom/artemchep/keyguard/ui/icons/ComposableSingletons$VisibilityIconKt; +HSPLcom/artemchep/keyguard/ui/icons/ComposableSingletons$VisibilityIconKt;->()V +HSPLcom/artemchep/keyguard/ui/icons/ComposableSingletons$VisibilityIconKt;->()V +HSPLcom/artemchep/keyguard/ui/icons/ComposableSingletons$VisibilityIconKt;->getLambda-1$common_playStoreRelease()Lkotlin/jvm/functions/Function3; +Lcom/artemchep/keyguard/ui/icons/ComposableSingletons$VisibilityIconKt$lambda-1$1; +HSPLcom/artemchep/keyguard/ui/icons/ComposableSingletons$VisibilityIconKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/ui/icons/ComposableSingletons$VisibilityIconKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/ui/icons/ComposableSingletons$VisibilityIconKt$lambda-1$1;->invoke(Landroidx/compose/ui/graphics/vector/ImageVector;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/icons/ComposableSingletons$VisibilityIconKt$lambda-1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/icons/IconBoxKt; +HSPLcom/artemchep/keyguard/ui/icons/IconBoxKt;->IconBox(Landroidx/compose/ui/graphics/vector/ImageVector;Landroidx/compose/ui/graphics/vector/ImageVector;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/ui/icons/IconBoxKt$IconBox$1; +HSPLcom/artemchep/keyguard/ui/icons/IconBoxKt$IconBox$1;->()V +HSPLcom/artemchep/keyguard/ui/icons/IconBoxKt$IconBox$1;->()V +Lcom/artemchep/keyguard/ui/icons/IconBoxKt$IconBox$2; +HSPLcom/artemchep/keyguard/ui/icons/IconBoxKt$IconBox$2;->()V +HSPLcom/artemchep/keyguard/ui/icons/IconBoxKt$IconBox$2;->()V +Lcom/artemchep/keyguard/ui/icons/IconBoxKt$icon$1; +HSPLcom/artemchep/keyguard/ui/icons/IconBoxKt$icon$1;->(Landroidx/compose/ui/graphics/vector/ImageVector;Landroidx/compose/ui/graphics/vector/ImageVector;)V +Lcom/artemchep/keyguard/ui/icons/IconsKt; +HSPLcom/artemchep/keyguard/ui/icons/IconsKt;->()V +HSPLcom/artemchep/keyguard/ui/icons/IconsKt;->getKeyguardAttachment(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +HSPLcom/artemchep/keyguard/ui/icons/IconsKt;->getKeyguardNote(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +HSPLcom/artemchep/keyguard/ui/icons/IconsKt;->getKeyguardTwoFa(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector; +Lcom/artemchep/keyguard/ui/icons/VisibilityIconKt; +HSPLcom/artemchep/keyguard/ui/icons/VisibilityIconKt;->VisibilityIcon(Landroidx/compose/ui/Modifier;ZLandroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/ui/pulltosearch/PullToSearchKt; +HSPLcom/artemchep/keyguard/ui/pulltosearch/PullToSearchKt;->PullToSearch$lambda$4$lambda$1(Landroidx/compose/runtime/State;)Z +HSPLcom/artemchep/keyguard/ui/pulltosearch/PullToSearchKt;->PullToSearch$lambda$4$lambda$3$lambda$2(Landroidx/compose/runtime/State;)J +HSPLcom/artemchep/keyguard/ui/pulltosearch/PullToSearchKt;->PullToSearch(Landroidx/compose/ui/Modifier;Landroidx/compose/material/pullrefresh/PullRefreshState;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/ui/pulltosearch/PullToSearchKt$PullToSearch$1$1; +HSPLcom/artemchep/keyguard/ui/pulltosearch/PullToSearchKt$PullToSearch$1$1;->(Landroidx/compose/material/pullrefresh/PullRefreshState;)V +HSPLcom/artemchep/keyguard/ui/pulltosearch/PullToSearchKt$PullToSearch$1$1;->invoke(Landroidx/compose/ui/graphics/GraphicsLayerScope;)V +HSPLcom/artemchep/keyguard/ui/pulltosearch/PullToSearchKt$PullToSearch$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/pulltosearch/PullToSearchKt$PullToSearch$1$willSearch$2$1; +HSPLcom/artemchep/keyguard/ui/pulltosearch/PullToSearchKt$PullToSearch$1$willSearch$2$1;->(Landroidx/compose/material/pullrefresh/PullRefreshState;)V +HSPLcom/artemchep/keyguard/ui/pulltosearch/PullToSearchKt$PullToSearch$1$willSearch$2$1;->invoke()Ljava/lang/Boolean; +HSPLcom/artemchep/keyguard/ui/pulltosearch/PullToSearchKt$PullToSearch$1$willSearch$2$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/pulltosearch/PullToSearchKt$PullToSearch$2; +HSPLcom/artemchep/keyguard/ui/pulltosearch/PullToSearchKt$PullToSearch$2;->(Landroidx/compose/ui/Modifier;Landroidx/compose/material/pullrefresh/PullRefreshState;II)V +Lcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->InternalLazyColumnScrollbar-pAIm_bA(Landroidx/compose/foundation/lazy/LazyListState;ZFFFJJLandroidx/compose/ui/graphics/Shape;Lcom/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode;Lkotlin/jvm/functions/Function4;Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/runtime/Composer;III)V +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->InternalLazyColumnScrollbar_pAIm_bA$fractionHiddenTop(Landroidx/compose/foundation/lazy/LazyListItemInfo;)F +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->InternalLazyColumnScrollbar_pAIm_bA$fractionVisibleBottom(Landroidx/compose/foundation/lazy/LazyListItemInfo;I)F +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->InternalLazyColumnScrollbar_pAIm_bA$lambda$11(Landroidx/compose/runtime/State;)Landroidx/compose/foundation/lazy/LazyListItemInfo; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->InternalLazyColumnScrollbar_pAIm_bA$lambda$13(Landroidx/compose/runtime/State;)Z +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->InternalLazyColumnScrollbar_pAIm_bA$lambda$15(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->InternalLazyColumnScrollbar_pAIm_bA$lambda$17(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->InternalLazyColumnScrollbar_pAIm_bA$lambda$19(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->InternalLazyColumnScrollbar_pAIm_bA$lambda$20(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->InternalLazyColumnScrollbar_pAIm_bA$lambda$21(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->InternalLazyColumnScrollbar_pAIm_bA$lambda$3(Landroidx/compose/runtime/MutableState;)Z +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->InternalLazyColumnScrollbar_pAIm_bA$lambda$9(Landroidx/compose/runtime/State;)Z +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->InternalLazyColumnScrollbar_pAIm_bA$offsetCorrection(FLandroidx/compose/runtime/State;Landroidx/compose/runtime/State;F)F +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->LazyColumnScrollbar-lnVutNI(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/LazyListState;ZFFFJJLandroidx/compose/ui/graphics/Shape;Lcom/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode;ZLkotlin/jvm/functions/Function4;Landroidx/compose/foundation/layout/PaddingValues;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;III)V +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->access$InternalLazyColumnScrollbar_pAIm_bA$fractionHiddenTop(Landroidx/compose/foundation/lazy/LazyListItemInfo;)F +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->access$InternalLazyColumnScrollbar_pAIm_bA$fractionVisibleBottom(Landroidx/compose/foundation/lazy/LazyListItemInfo;I)F +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->access$InternalLazyColumnScrollbar_pAIm_bA$lambda$11(Landroidx/compose/runtime/State;)Landroidx/compose/foundation/lazy/LazyListItemInfo; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->access$InternalLazyColumnScrollbar_pAIm_bA$lambda$13(Landroidx/compose/runtime/State;)Z +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->access$InternalLazyColumnScrollbar_pAIm_bA$lambda$15(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->access$InternalLazyColumnScrollbar_pAIm_bA$lambda$17(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->access$InternalLazyColumnScrollbar_pAIm_bA$lambda$19(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->access$InternalLazyColumnScrollbar_pAIm_bA$lambda$21(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->access$InternalLazyColumnScrollbar_pAIm_bA$lambda$3(Landroidx/compose/runtime/MutableState;)Z +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt;->access$InternalLazyColumnScrollbar_pAIm_bA$offsetCorrection(FLandroidx/compose/runtime/State;Landroidx/compose/runtime/State;F)F +Lcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$1; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$1;->(Lkotlin/jvm/functions/Function4;ZLcom/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode;Landroidx/compose/runtime/MutableState;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/MutableState;Landroidx/compose/foundation/lazy/LazyListState;Lkotlinx/coroutines/CoroutineScope;Landroidx/compose/runtime/State;FLandroidx/compose/runtime/State;Landroidx/compose/runtime/State;FFLandroidx/compose/ui/graphics/Shape;JJ)V +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$1;->invoke(Landroidx/compose/foundation/layout/BoxWithConstraintsScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$1$3; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$1$3;->(Landroidx/compose/foundation/layout/BoxWithConstraintsScope;Landroidx/compose/runtime/State;Landroidx/compose/runtime/MutableState;Landroidx/compose/runtime/MutableState;Landroidx/compose/foundation/lazy/LazyListState;Lkotlinx/coroutines/CoroutineScope;Landroidx/compose/runtime/State;FLandroidx/compose/runtime/State;Landroidx/compose/runtime/State;)V +Lcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$1$4; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$1$4;->(Landroidx/compose/foundation/layout/BoxWithConstraintsScope;Lcom/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/MutableState;Landroidx/compose/foundation/lazy/LazyListState;Lkotlinx/coroutines/CoroutineScope;FLandroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/MutableState;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$1$5$1; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$1$5$1;->(Landroidx/compose/runtime/MutableState;Lkotlin/coroutines/Continuation;)V +Lcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$1$7; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$1$7;->(FFLandroidx/compose/ui/graphics/Shape;JJLandroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/MutableState;)V +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$1$7;->invoke$lambda$0(Landroidx/compose/runtime/State;)F +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$1$7;->invoke(Landroidx/compose/foundation/layout/BoxWithConstraintsScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$1$7;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$2; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$2;->(Landroidx/compose/foundation/lazy/LazyListState;ZFFFJJLandroidx/compose/ui/graphics/Shape;Lcom/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode;Lkotlin/jvm/functions/Function4;Landroidx/compose/foundation/layout/PaddingValues;III)V +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$firstVisibleItemIndex$1$1; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$firstVisibleItemIndex$1$1;->(Landroidx/compose/foundation/lazy/LazyListState;)V +Lcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$isStickyHeaderInAction$2$1; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$isStickyHeaderInAction$2$1;->(Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$isStickyHeaderInAction$2$1;->invoke()Ljava/lang/Boolean; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$isStickyHeaderInAction$2$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$normalizedOffsetPosition$2$1; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$normalizedOffsetPosition$2$1;->(Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/runtime/State;FLandroidx/compose/runtime/State;Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$normalizedOffsetPosition$2$1;->invoke()Ljava/lang/Float; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$normalizedOffsetPosition$2$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$normalizedThumbSize$2$1; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$normalizedThumbSize$2$1;->(FLandroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$normalizedThumbSize$2$1;->invoke()Ljava/lang/Float; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$normalizedThumbSize$2$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$normalizedThumbSizeReal$2$1; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$normalizedThumbSizeReal$2$1;->(Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;)V +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$normalizedThumbSizeReal$2$1;->invoke()Ljava/lang/Float; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$normalizedThumbSizeReal$2$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$realFirstVisibleItem$2$1; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$realFirstVisibleItem$2$1;->(Landroidx/compose/foundation/lazy/LazyListState;)V +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$realFirstVisibleItem$2$1;->invoke()Landroidx/compose/foundation/lazy/LazyListItemInfo; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$realFirstVisibleItem$2$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$reverseLayout$2$1; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$reverseLayout$2$1;->(Landroidx/compose/foundation/lazy/LazyListState;)V +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$reverseLayout$2$1;->invoke()Ljava/lang/Boolean; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$InternalLazyColumnScrollbar$reverseLayout$2$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$LazyColumnScrollbar$2; +HSPLcom/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbarKt$LazyColumnScrollbar$2;->(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/LazyListState;ZFFFJJLandroidx/compose/ui/graphics/Shape;Lcom/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode;ZLkotlin/jvm/functions/Function4;Landroidx/compose/foundation/layout/PaddingValues;Lkotlin/jvm/functions/Function2;III)V +Lcom/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode; +HSPLcom/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode;->$values()[Lcom/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode; +HSPLcom/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode;->()V +HSPLcom/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode;->(Ljava/lang/String;I)V +Lcom/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode$Companion; +HSPLcom/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode$Companion;->()V +HSPLcom/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode$Companion;->getDefault(Landroidx/compose/runtime/Composer;I)Lcom/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode; +Lcom/artemchep/keyguard/ui/selection/SelectionHandle; +Lcom/artemchep/keyguard/ui/selection/SelectionUtilKt; +HSPLcom/artemchep/keyguard/ui/selection/SelectionUtilKt;->selectionHandle(Lcom/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope;Ljava/lang/String;)Lcom/artemchep/keyguard/ui/selection/SelectionHandle; +Lcom/artemchep/keyguard/ui/selection/SelectionUtilKt$selectionHandle$$inlined$map$1; +HSPLcom/artemchep/keyguard/ui/selection/SelectionUtilKt$selectionHandle$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;)V +Lcom/artemchep/keyguard/ui/selection/SelectionUtilKt$selectionHandle$2; +HSPLcom/artemchep/keyguard/ui/selection/SelectionUtilKt$selectionHandle$2;->(Lkotlinx/coroutines/flow/MutableStateFlow;)V +Lcom/artemchep/keyguard/ui/selection/SelectionUtilKt$selectionHandle$3; +HSPLcom/artemchep/keyguard/ui/selection/SelectionUtilKt$selectionHandle$3;->(Lkotlinx/coroutines/flow/MutableStateFlow;)V +HSPLcom/artemchep/keyguard/ui/selection/SelectionUtilKt$selectionHandle$3;->getIdsFlow()Lkotlinx/coroutines/flow/StateFlow; +Lcom/artemchep/keyguard/ui/selection/SelectionUtilKt$selectionHandle$itemIdsSink$1; +HSPLcom/artemchep/keyguard/ui/selection/SelectionUtilKt$selectionHandle$itemIdsSink$1;->()V +HSPLcom/artemchep/keyguard/ui/selection/SelectionUtilKt$selectionHandle$itemIdsSink$1;->()V +HSPLcom/artemchep/keyguard/ui/selection/SelectionUtilKt$selectionHandle$itemIdsSink$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/selection/SelectionUtilKt$selectionHandle$itemIdsSink$1;->invoke()Ljava/util/Set; +Lcom/artemchep/keyguard/ui/shimmer/RememberShimmerBoundsWindowKt; +HSPLcom/artemchep/keyguard/ui/shimmer/RememberShimmerBoundsWindowKt;->rememberShimmerBoundsWindow(Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/geometry/Rect; +Lcom/artemchep/keyguard/ui/shimmer/RememberShimmerEffectKt; +HSPLcom/artemchep/keyguard/ui/shimmer/RememberShimmerEffectKt;->rememberShimmerEffect(Lcom/artemchep/keyguard/ui/shimmer/ShimmerTheme;Landroidx/compose/runtime/Composer;I)Lcom/artemchep/keyguard/ui/shimmer/ShimmerEffect; +Lcom/artemchep/keyguard/ui/shimmer/RememberShimmerEffectKt$rememberShimmerEffect$1; +HSPLcom/artemchep/keyguard/ui/shimmer/RememberShimmerEffectKt$rememberShimmerEffect$1;->(Lcom/artemchep/keyguard/ui/shimmer/ShimmerEffect;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/ui/shimmer/RememberShimmerEffectKt$rememberShimmerEffect$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/ui/shimmer/RememberShimmerEffectKt$rememberShimmerEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/shimmer/RememberShimmerKt; +HSPLcom/artemchep/keyguard/ui/shimmer/RememberShimmerKt;->rememberShimmer(Lcom/artemchep/keyguard/ui/shimmer/ShimmerBounds;Lcom/artemchep/keyguard/ui/shimmer/ShimmerTheme;Landroidx/compose/runtime/Composer;II)Lcom/artemchep/keyguard/ui/shimmer/Shimmer; +Lcom/artemchep/keyguard/ui/shimmer/Shimmer; +HSPLcom/artemchep/keyguard/ui/shimmer/Shimmer;->()V +HSPLcom/artemchep/keyguard/ui/shimmer/Shimmer;->(Lcom/artemchep/keyguard/ui/shimmer/ShimmerTheme;Lcom/artemchep/keyguard/ui/shimmer/ShimmerEffect;Landroidx/compose/ui/geometry/Rect;)V +HSPLcom/artemchep/keyguard/ui/shimmer/Shimmer;->getBoundsFlow$common_playStoreRelease()Lkotlinx/coroutines/flow/MutableStateFlow; +HSPLcom/artemchep/keyguard/ui/shimmer/Shimmer;->getEffect$common_playStoreRelease()Lcom/artemchep/keyguard/ui/shimmer/ShimmerEffect; +HSPLcom/artemchep/keyguard/ui/shimmer/Shimmer;->getTheme$common_playStoreRelease()Lcom/artemchep/keyguard/ui/shimmer/ShimmerTheme; +Lcom/artemchep/keyguard/ui/shimmer/ShimmerArea; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerArea;->()V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerArea;->(FF)V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerArea;->computeShimmerBounds()V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerArea;->computeTranslationDistance()V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerArea;->getPivotPoint-F1C5BW0()J +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerArea;->getShimmerBounds()Landroidx/compose/ui/geometry/Rect; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerArea;->getTranslationDistance()F +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerArea;->getViewBounds()Landroidx/compose/ui/geometry/Rect; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerArea;->reduceRotation(F)F +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerArea;->setViewBounds(Landroidx/compose/ui/geometry/Rect;)V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerArea;->toRadian(F)F +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerArea;->updateBounds(Landroidx/compose/ui/geometry/Rect;)V +Lcom/artemchep/keyguard/ui/shimmer/ShimmerBounds; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerBounds;->()V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerBounds;->()V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerBounds;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/artemchep/keyguard/ui/shimmer/ShimmerBounds$Custom; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerBounds$Custom;->()V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerBounds$Custom;->()V +Lcom/artemchep/keyguard/ui/shimmer/ShimmerBounds$View; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerBounds$View;->()V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerBounds$View;->()V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerBounds$View;->equals(Ljava/lang/Object;)Z +Lcom/artemchep/keyguard/ui/shimmer/ShimmerBounds$Window; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerBounds$Window;->()V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerBounds$Window;->()V +Lcom/artemchep/keyguard/ui/shimmer/ShimmerBoundsKt; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerBoundsKt;->rememberShimmerBounds(Lcom/artemchep/keyguard/ui/shimmer/ShimmerBounds;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/geometry/Rect; +Lcom/artemchep/keyguard/ui/shimmer/ShimmerEffect; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerEffect;->()V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerEffect;->(Landroidx/compose/animation/core/AnimationSpec;IFLjava/util/List;Ljava/util/List;F)V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerEffect;->(Landroidx/compose/animation/core/AnimationSpec;IFLjava/util/List;Ljava/util/List;FLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerEffect;->draw(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;Lcom/artemchep/keyguard/ui/shimmer/ShimmerArea;)V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerEffect;->startAnimation$common_playStoreRelease(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/shimmer/ShimmerKt; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerKt;->shimmer$default(Landroidx/compose/ui/Modifier;Lcom/artemchep/keyguard/ui/shimmer/Shimmer;ILjava/lang/Object;)Landroidx/compose/ui/Modifier; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerKt;->shimmer(Landroidx/compose/ui/Modifier;Lcom/artemchep/keyguard/ui/shimmer/Shimmer;)Landroidx/compose/ui/Modifier; +Lcom/artemchep/keyguard/ui/shimmer/ShimmerKt$shimmer$2; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerKt$shimmer$2;->(Lcom/artemchep/keyguard/ui/shimmer/Shimmer;)V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerKt$shimmer$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerKt$shimmer$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/shimmer/ShimmerKt$shimmer$2$1; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerKt$shimmer$2$1;->(Lcom/artemchep/keyguard/ui/shimmer/Shimmer;Lcom/artemchep/keyguard/ui/shimmer/ShimmerArea;Lkotlin/coroutines/Continuation;)V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerKt$shimmer$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerKt$shimmer$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/shimmer/ShimmerKt$shimmer$2$1$1; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerKt$shimmer$2$1$1;->(Lcom/artemchep/keyguard/ui/shimmer/ShimmerArea;)V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerKt$shimmer$2$1$1;->emit(Landroidx/compose/ui/geometry/Rect;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerKt$shimmer$2$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/shimmer/ShimmerModifier; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerModifier;->()V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerModifier;->(Lcom/artemchep/keyguard/ui/shimmer/ShimmerArea;Lcom/artemchep/keyguard/ui/shimmer/ShimmerEffect;)V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerModifier;->draw(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerModifier;->onGloballyPositioned(Landroidx/compose/ui/layout/LayoutCoordinates;)V +Lcom/artemchep/keyguard/ui/shimmer/ShimmerTheme; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerTheme;->()V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerTheme;->(Landroidx/compose/animation/core/AnimationSpec;IFLjava/util/List;Ljava/util/List;F)V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerTheme;->(Landroidx/compose/animation/core/AnimationSpec;IFLjava/util/List;Ljava/util/List;FLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerTheme;->getAnimationSpec()Landroidx/compose/animation/core/AnimationSpec; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerTheme;->getBlendMode-0nO6VwU()I +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerTheme;->getRotation()F +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerTheme;->getShaderColorStops()Ljava/util/List; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerTheme;->getShaderColors()Ljava/util/List; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerTheme;->getShimmerWidth-D9Ej5fM()F +Lcom/artemchep/keyguard/ui/shimmer/ShimmerThemeKt; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerThemeKt;->()V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerThemeKt;->getDefaultShimmerTheme()Lcom/artemchep/keyguard/ui/shimmer/ShimmerTheme; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerThemeKt;->getLocalShimmerTheme()Landroidx/compose/runtime/ProvidableCompositionLocal; +Lcom/artemchep/keyguard/ui/shimmer/ShimmerThemeKt$LocalShimmerTheme$1; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerThemeKt$LocalShimmerTheme$1;->()V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerThemeKt$LocalShimmerTheme$1;->()V +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerThemeKt$LocalShimmerTheme$1;->invoke()Lcom/artemchep/keyguard/ui/shimmer/ShimmerTheme; +HSPLcom/artemchep/keyguard/ui/shimmer/ShimmerThemeKt$LocalShimmerTheme$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/shimmer/UnclippedBoundsInWindowKt; +HSPLcom/artemchep/keyguard/ui/shimmer/UnclippedBoundsInWindowKt;->unclippedBoundsInWindow(Landroidx/compose/ui/layout/LayoutCoordinates;)Landroidx/compose/ui/geometry/Rect; +Lcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonFilterKt; +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonFilterKt;->()V +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonFilterKt;->()V +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonFilterKt;->getLambda-1$common_playStoreRelease()Lkotlin/jvm/functions/Function2; +Lcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonFilterKt$lambda-1$1; +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonFilterKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonFilterKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonFilterKt$lambda-1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonFilterKt$lambda-1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonItemKt; +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonItemKt;->()V +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonItemKt;->()V +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonItemKt;->getLambda-1$common_playStoreRelease()Lkotlin/jvm/functions/Function3; +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonItemKt;->getLambda-2$common_playStoreRelease()Lkotlin/jvm/functions/Function3; +Lcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonItemKt$lambda-1$1; +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonItemKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonItemKt$lambda-1$1;->()V +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonItemKt$lambda-1$1;->invoke(Landroidx/compose/foundation/layout/BoxScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonItemKt$lambda-1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonItemKt$lambda-2$1; +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonItemKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonItemKt$lambda-2$1;->()V +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonItemKt$lambda-2$1;->invoke(Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/skeleton/ComposableSingletons$SkeletonItemKt$lambda-2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/skeleton/SkeletonButtonKt; +HSPLcom/artemchep/keyguard/ui/skeleton/SkeletonButtonKt;->SkeletonButton(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/ui/skeleton/SkeletonButtonKt$SkeletonButton$1; +HSPLcom/artemchep/keyguard/ui/skeleton/SkeletonButtonKt$SkeletonButton$1;->(Landroidx/compose/ui/Modifier;II)V +Lcom/artemchep/keyguard/ui/skeleton/SkeletonCheckBoxKt; +HSPLcom/artemchep/keyguard/ui/skeleton/SkeletonCheckBoxKt;->SkeletonCheckbox(Landroidx/compose/ui/Modifier;ZLandroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/ui/skeleton/SkeletonCheckBoxKt$SkeletonCheckbox$2; +HSPLcom/artemchep/keyguard/ui/skeleton/SkeletonCheckBoxKt$SkeletonCheckbox$2;->(Landroidx/compose/ui/Modifier;ZII)V +Lcom/artemchep/keyguard/ui/skeleton/SkeletonFilterKt; +HSPLcom/artemchep/keyguard/ui/skeleton/SkeletonFilterKt;->SkeletonFilter(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/ui/skeleton/SkeletonItemKt; +HSPLcom/artemchep/keyguard/ui/skeleton/SkeletonItemKt;->SkeletonItem(ZFLjava/lang/Float;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/ui/skeleton/SkeletonItemKt$SkeletonItem$1; +HSPLcom/artemchep/keyguard/ui/skeleton/SkeletonItemKt$SkeletonItem$1;->(Ljava/lang/Float;)V +HSPLcom/artemchep/keyguard/ui/skeleton/SkeletonItemKt$SkeletonItem$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/skeleton/SkeletonItemKt$SkeletonItem$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/skeleton/SkeletonItemKt$SkeletonItem$2; +HSPLcom/artemchep/keyguard/ui/skeleton/SkeletonItemKt$SkeletonItem$2;->(F)V +HSPLcom/artemchep/keyguard/ui/skeleton/SkeletonItemKt$SkeletonItem$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/skeleton/SkeletonItemKt$SkeletonItem$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/skeleton/SkeletonTextFieldKt; +HSPLcom/artemchep/keyguard/ui/skeleton/SkeletonTextFieldKt;->SkeletonTextField(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/ui/skeleton/SkeletonTextFieldKt$SkeletonTextField$1; +HSPLcom/artemchep/keyguard/ui/skeleton/SkeletonTextFieldKt$SkeletonTextField$1;->(Landroidx/compose/ui/Modifier;II)V +Lcom/artemchep/keyguard/ui/skeleton/SkeletonTextKt; +HSPLcom/artemchep/keyguard/ui/skeleton/SkeletonTextKt;->SkeletonText(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/text/TextStyle;FLandroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/ui/skeleton/SkeletonTextKt$SkeletonText$1; +HSPLcom/artemchep/keyguard/ui/skeleton/SkeletonTextKt$SkeletonText$1;->(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/text/TextStyle;FII)V +Lcom/artemchep/keyguard/ui/theme/ColorKt; +HSPLcom/artemchep/keyguard/ui/theme/ColorKt;->combineAlpha-DxMtmZc(JF)J +Lcom/artemchep/keyguard/ui/theme/Dimen; +HSPLcom/artemchep/keyguard/ui/theme/Dimen;->()V +HSPLcom/artemchep/keyguard/ui/theme/Dimen;->(FFFF)V +HSPLcom/artemchep/keyguard/ui/theme/Dimen;->(FFFFILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/ui/theme/Dimen;->(FFFFLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/ui/theme/Dimen;->getButtonIconPadding-D9Ej5fM()F +HSPLcom/artemchep/keyguard/ui/theme/Dimen;->getHorizontalPadding-D9Ej5fM()F +HSPLcom/artemchep/keyguard/ui/theme/Dimen;->getVerticalPadding-D9Ej5fM()F +Lcom/artemchep/keyguard/ui/theme/Dimen$Companion; +HSPLcom/artemchep/keyguard/ui/theme/Dimen$Companion;->()V +HSPLcom/artemchep/keyguard/ui/theme/Dimen$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/artemchep/keyguard/ui/theme/Dimen$Companion;->normal()Lcom/artemchep/keyguard/ui/theme/Dimen; +Lcom/artemchep/keyguard/ui/theme/DimenKt; +HSPLcom/artemchep/keyguard/ui/theme/DimenKt;->()V +HSPLcom/artemchep/keyguard/ui/theme/DimenKt;->getDimens(Landroidx/compose/runtime/Composer;I)Lcom/artemchep/keyguard/ui/theme/Dimen; +Lcom/artemchep/keyguard/ui/theme/DimenKt$LocalDimens$1; +HSPLcom/artemchep/keyguard/ui/theme/DimenKt$LocalDimens$1;->()V +HSPLcom/artemchep/keyguard/ui/theme/DimenKt$LocalDimens$1;->()V +HSPLcom/artemchep/keyguard/ui/theme/DimenKt$LocalDimens$1;->invoke()Lcom/artemchep/keyguard/ui/theme/Dimen; +HSPLcom/artemchep/keyguard/ui/theme/DimenKt$LocalDimens$1;->invoke()Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/theme/PlatformTheme; +HSPLcom/artemchep/keyguard/ui/theme/PlatformTheme;->SystemUiThemeEffect(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/theme/PlatformTheme;->appDynamicLightColorScheme(Landroidx/compose/runtime/Composer;I)Landroidx/compose/material3/ColorScheme; +Lcom/artemchep/keyguard/ui/theme/PlatformTheme$SystemUiThemeEffect$1$1; +HSPLcom/artemchep/keyguard/ui/theme/PlatformTheme$SystemUiThemeEffect$1$1;->(Lcom/google/accompanist/systemuicontroller/SystemUiController;Z)V +HSPLcom/artemchep/keyguard/ui/theme/PlatformTheme$SystemUiThemeEffect$1$1;->invoke()Ljava/lang/Object; +HSPLcom/artemchep/keyguard/ui/theme/PlatformTheme$SystemUiThemeEffect$1$1;->invoke()V +Lcom/artemchep/keyguard/ui/theme/PlatformTheme$SystemUiThemeEffect$2; +HSPLcom/artemchep/keyguard/ui/theme/PlatformTheme$SystemUiThemeEffect$2;->(I)V +Lcom/artemchep/keyguard/ui/theme/ThemeKt; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->()V +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->KeyguardTheme$lambda$10(Landroidx/compose/runtime/State;)Z +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->KeyguardTheme$lambda$12(Landroidx/compose/runtime/State;)Lcom/artemchep/keyguard/common/model/AppColors; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->KeyguardTheme$lambda$14(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetFont; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->KeyguardTheme$lambda$4(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetTheme; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->KeyguardTheme$lambda$5(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetThemeUseAmoledDark; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->KeyguardTheme$lambda$6(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetColors; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->KeyguardTheme$lambda$8(Landroidx/compose/runtime/State;)Lcom/artemchep/keyguard/common/model/AppTheme; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->KeyguardTheme(Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->access$KeyguardTheme$lambda$14(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetFont; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->access$KeyguardTheme$lambda$4(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetTheme; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->access$KeyguardTheme$lambda$5(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetThemeUseAmoledDark; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->access$KeyguardTheme$lambda$6(Lkotlin/Lazy;)Lcom/artemchep/keyguard/common/usecase/GetColors; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->access$buildContentColor(FZ)J +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->appColorScheme(Lcom/artemchep/keyguard/common/model/AppColors;ZLandroidx/compose/runtime/Composer;I)Landroidx/compose/material3/ColorScheme; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->buildContainerColor(Landroidx/compose/material3/ColorScheme;FLandroidx/compose/runtime/Composer;I)J +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->buildContentColor(FZ)J +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->buildContentColor(Landroidx/compose/material3/ColorScheme;FLandroidx/compose/runtime/Composer;I)J +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->getInfo(Landroidx/compose/material3/ColorScheme;Landroidx/compose/runtime/Composer;I)J +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->getInfoContainer(Landroidx/compose/material3/ColorScheme;Landroidx/compose/runtime/Composer;I)J +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->getMonoFontFamily(Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/text/font/FontFamily; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->getRobotoMonoFontFamily(Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/text/font/FontFamily; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->get_error(Landroidx/compose/material3/ColorScheme;Landroidx/compose/runtime/Composer;I)J +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->get_errorContainer(Landroidx/compose/material3/ColorScheme;Landroidx/compose/runtime/Composer;I)J +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->get_onErrorContainer(Landroidx/compose/material3/ColorScheme;Landroidx/compose/runtime/Composer;I)J +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt;->isDark(Landroidx/compose/material3/ColorScheme;)Z +Lcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$$inlined$rememberInstance$1; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$$inlined$rememberInstance$1;->()V +Lcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$$inlined$rememberInstance$2; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$$inlined$rememberInstance$2;->()V +Lcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$$inlined$rememberInstance$3; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$$inlined$rememberInstance$3;->()V +Lcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$$inlined$rememberInstance$4; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$$inlined$rememberInstance$4;->()V +Lcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$1; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$1;->(ZLandroidx/compose/material3/ColorScheme;Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$1$1; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$1$1;->(Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$2; +HSPLcom/artemchep/keyguard/ui/theme/ThemeKt$KeyguardTheme$2;->(Lkotlin/jvm/functions/Function2;I)V +Lcom/artemchep/keyguard/ui/toolbar/CustomToolbarKt; +HSPLcom/artemchep/keyguard/ui/toolbar/CustomToolbarKt;->CustomToolbar$lambda$0(Landroidx/compose/runtime/State;)J +HSPLcom/artemchep/keyguard/ui/toolbar/CustomToolbarKt;->CustomToolbar(Landroidx/compose/ui/Modifier;Landroidx/compose/material3/TopAppBarScrollBehavior;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V +Lcom/artemchep/keyguard/ui/toolbar/CustomToolbarKt$CustomToolbar$1; +HSPLcom/artemchep/keyguard/ui/toolbar/CustomToolbarKt$CustomToolbar$1;->(Landroidx/compose/foundation/layout/WindowInsets;Landroidx/compose/material3/TopAppBarScrollBehavior;Lkotlin/jvm/functions/Function2;)V +HSPLcom/artemchep/keyguard/ui/toolbar/CustomToolbarKt$CustomToolbar$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/toolbar/CustomToolbarKt$CustomToolbar$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/toolbar/CustomToolbarKt$CustomToolbar$1$1$1; +HSPLcom/artemchep/keyguard/ui/toolbar/CustomToolbarKt$CustomToolbar$1$1$1;->(Landroidx/compose/material3/TopAppBarScrollBehavior;)V +HSPLcom/artemchep/keyguard/ui/toolbar/CustomToolbarKt$CustomToolbar$1$1$1;->invoke(Landroidx/compose/ui/layout/LayoutCoordinates;)V +HSPLcom/artemchep/keyguard/ui/toolbar/CustomToolbarKt$CustomToolbar$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/toolbar/CustomToolbarKt$CustomToolbar$2; +HSPLcom/artemchep/keyguard/ui/toolbar/CustomToolbarKt$CustomToolbar$2;->(Landroidx/compose/ui/Modifier;Landroidx/compose/material3/TopAppBarScrollBehavior;Lkotlin/jvm/functions/Function2;II)V +HSPLcom/artemchep/keyguard/ui/toolbar/CustomToolbarKt$CustomToolbar$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/artemchep/keyguard/ui/toolbar/CustomToolbarKt$CustomToolbar$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/artemchep/keyguard/ui/util/DividerKt; +HSPLcom/artemchep/keyguard/ui/util/DividerKt;->Divider(Landroidx/compose/ui/Modifier;ZLandroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/ui/util/DividerKt;->VerticalDivider(Landroidx/compose/ui/Modifier;ZLandroidx/compose/runtime/Composer;II)V +HSPLcom/artemchep/keyguard/ui/util/DividerKt;->getDividerColor(Landroidx/compose/runtime/Composer;I)J +HSPLcom/artemchep/keyguard/ui/util/DividerKt;->getDividerSize()F +Lcom/artemchep/keyguard/ui/util/DividerKt$Divider$1; +HSPLcom/artemchep/keyguard/ui/util/DividerKt$Divider$1;->(Landroidx/compose/ui/Modifier;ZII)V +Lcom/fredporciuncula/flow/preferences/BasePreference; +HSPLcom/fredporciuncula/flow/preferences/BasePreference;->(Ljava/lang/String;Lkotlinx/coroutines/flow/Flow;Landroid/content/SharedPreferences;Lkotlin/coroutines/CoroutineContext;)V +HSPLcom/fredporciuncula/flow/preferences/BasePreference;->asFlow()Lkotlinx/coroutines/flow/Flow; +Lcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$filter$1; +HSPLcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$filter$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/fredporciuncula/flow/preferences/BasePreference;)V +HSPLcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$filter$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$filter$1$2; +HSPLcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$filter$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/fredporciuncula/flow/preferences/BasePreference;)V +HSPLcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$filter$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$filter$1$2$1; +HSPLcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$filter$1$2$1;->(Lcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$filter$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$map$1; +HSPLcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$map$1;->(Lkotlinx/coroutines/flow/Flow;Lcom/fredporciuncula/flow/preferences/BasePreference;)V +HSPLcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$map$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$map$1$2; +HSPLcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$map$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lcom/fredporciuncula/flow/preferences/BasePreference;)V +HSPLcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$map$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$map$1$2$1; +HSPLcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$map$1$2$1;->(Lcom/fredporciuncula/flow/preferences/BasePreference$asFlow$$inlined$map$1$2;Lkotlin/coroutines/Continuation;)V +Lcom/fredporciuncula/flow/preferences/BasePreference$asFlow$2; +HSPLcom/fredporciuncula/flow/preferences/BasePreference$asFlow$2;->(Lkotlin/coroutines/Continuation;)V +HSPLcom/fredporciuncula/flow/preferences/BasePreference$asFlow$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/fredporciuncula/flow/preferences/BasePreference$asFlow$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/fredporciuncula/flow/preferences/BasePreference$asFlow$2;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/fredporciuncula/flow/preferences/BasePreference$asFlow$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/fredporciuncula/flow/preferences/BooleanPreference; +HSPLcom/fredporciuncula/flow/preferences/BooleanPreference;->(Ljava/lang/String;ZLkotlinx/coroutines/flow/Flow;Landroid/content/SharedPreferences;Lkotlin/coroutines/CoroutineContext;)V +HSPLcom/fredporciuncula/flow/preferences/BooleanPreference;->access$getSharedPreferences$p(Lcom/fredporciuncula/flow/preferences/BooleanPreference;)Landroid/content/SharedPreferences; +HSPLcom/fredporciuncula/flow/preferences/BooleanPreference;->get()Ljava/lang/Boolean; +HSPLcom/fredporciuncula/flow/preferences/BooleanPreference;->get()Ljava/lang/Object; +HSPLcom/fredporciuncula/flow/preferences/BooleanPreference;->getDefaultValue()Ljava/lang/Boolean; +HSPLcom/fredporciuncula/flow/preferences/BooleanPreference;->getKey()Ljava/lang/String; +HSPLcom/fredporciuncula/flow/preferences/BooleanPreference;->setAndCommit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/fredporciuncula/flow/preferences/BooleanPreference;->setAndCommit(ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/fredporciuncula/flow/preferences/BooleanPreference$setAndCommit$2; +HSPLcom/fredporciuncula/flow/preferences/BooleanPreference$setAndCommit$2;->(Lcom/fredporciuncula/flow/preferences/BooleanPreference;ZLkotlin/coroutines/Continuation;)V +HSPLcom/fredporciuncula/flow/preferences/BooleanPreference$setAndCommit$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/fredporciuncula/flow/preferences/BooleanPreference$setAndCommit$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/fredporciuncula/flow/preferences/BooleanPreference$setAndCommit$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/fredporciuncula/flow/preferences/BooleanPreference$setAndCommit$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/fredporciuncula/flow/preferences/FlowSharedPreferences; +HSPLcom/fredporciuncula/flow/preferences/FlowSharedPreferences;->(Landroid/content/SharedPreferences;Lkotlin/coroutines/CoroutineContext;)V +HSPLcom/fredporciuncula/flow/preferences/FlowSharedPreferences;->(Landroid/content/SharedPreferences;Lkotlin/coroutines/CoroutineContext;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/fredporciuncula/flow/preferences/FlowSharedPreferences;->getBoolean(Ljava/lang/String;Z)Lcom/fredporciuncula/flow/preferences/Preference; +HSPLcom/fredporciuncula/flow/preferences/FlowSharedPreferences;->getLong(Ljava/lang/String;J)Lcom/fredporciuncula/flow/preferences/Preference; +HSPLcom/fredporciuncula/flow/preferences/FlowSharedPreferences;->getString(Ljava/lang/String;Ljava/lang/String;)Lcom/fredporciuncula/flow/preferences/Preference; +Lcom/fredporciuncula/flow/preferences/LongPreference; +HSPLcom/fredporciuncula/flow/preferences/LongPreference;->(Ljava/lang/String;JLkotlinx/coroutines/flow/Flow;Landroid/content/SharedPreferences;Lkotlin/coroutines/CoroutineContext;)V +HSPLcom/fredporciuncula/flow/preferences/LongPreference;->access$getSharedPreferences$p(Lcom/fredporciuncula/flow/preferences/LongPreference;)Landroid/content/SharedPreferences; +HSPLcom/fredporciuncula/flow/preferences/LongPreference;->getKey()Ljava/lang/String; +HSPLcom/fredporciuncula/flow/preferences/LongPreference;->setAndCommit(JLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/fredporciuncula/flow/preferences/LongPreference;->setAndCommit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/fredporciuncula/flow/preferences/LongPreference$setAndCommit$2; +HSPLcom/fredporciuncula/flow/preferences/LongPreference$setAndCommit$2;->(Lcom/fredporciuncula/flow/preferences/LongPreference;JLkotlin/coroutines/Continuation;)V +HSPLcom/fredporciuncula/flow/preferences/LongPreference$setAndCommit$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/fredporciuncula/flow/preferences/LongPreference$setAndCommit$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/fredporciuncula/flow/preferences/LongPreference$setAndCommit$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/fredporciuncula/flow/preferences/LongPreference$setAndCommit$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/fredporciuncula/flow/preferences/Preference; +Lcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt; +HSPLcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt;->getKeyFlow(Landroid/content/SharedPreferences;)Lkotlinx/coroutines/flow/Flow; +Lcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt$keyFlow$1; +HSPLcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt$keyFlow$1;->$r8$lambda$ILt5lcHT_KsH_b03g0fr8T5gYPE(Lkotlinx/coroutines/channels/ProducerScope;Landroid/content/SharedPreferences;Ljava/lang/String;)V +HSPLcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt$keyFlow$1;->(Landroid/content/SharedPreferences;Lkotlin/coroutines/Continuation;)V +HSPLcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt$keyFlow$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt$keyFlow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt$keyFlow$1;->invoke(Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt$keyFlow$1;->invokeSuspend$lambda$0(Lkotlinx/coroutines/channels/ProducerScope;Landroid/content/SharedPreferences;Ljava/lang/String;)V +HSPLcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt$keyFlow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt$keyFlow$1$$ExternalSyntheticLambda0; +HSPLcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt$keyFlow$1$$ExternalSyntheticLambda0;->(Lkotlinx/coroutines/channels/ProducerScope;)V +HSPLcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt$keyFlow$1$$ExternalSyntheticLambda0;->onSharedPreferenceChanged(Landroid/content/SharedPreferences;Ljava/lang/String;)V +Lcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt$keyFlow$1$1; +HSPLcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt$keyFlow$1$1;->(Landroid/content/SharedPreferences;Landroid/content/SharedPreferences$OnSharedPreferenceChangeListener;)V +HSPLcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt$keyFlow$1$1;->invoke()Ljava/lang/Object; +HSPLcom/fredporciuncula/flow/preferences/SharedPreferencesExtensionsKt$keyFlow$1$1;->invoke()V +Lcom/fredporciuncula/flow/preferences/StringPreference; +HSPLcom/fredporciuncula/flow/preferences/StringPreference;->(Ljava/lang/String;Ljava/lang/String;Lkotlinx/coroutines/flow/Flow;Landroid/content/SharedPreferences;Lkotlin/coroutines/CoroutineContext;)V +HSPLcom/fredporciuncula/flow/preferences/StringPreference;->access$getSharedPreferences$p(Lcom/fredporciuncula/flow/preferences/StringPreference;)Landroid/content/SharedPreferences; +HSPLcom/fredporciuncula/flow/preferences/StringPreference;->get()Ljava/lang/Object; +HSPLcom/fredporciuncula/flow/preferences/StringPreference;->get()Ljava/lang/String; +HSPLcom/fredporciuncula/flow/preferences/StringPreference;->getDefaultValue()Ljava/lang/String; +HSPLcom/fredporciuncula/flow/preferences/StringPreference;->getKey()Ljava/lang/String; +HSPLcom/fredporciuncula/flow/preferences/StringPreference;->setAndCommit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/fredporciuncula/flow/preferences/StringPreference;->setAndCommit(Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lcom/fredporciuncula/flow/preferences/StringPreference$setAndCommit$2; +HSPLcom/fredporciuncula/flow/preferences/StringPreference$setAndCommit$2;->(Lcom/fredporciuncula/flow/preferences/StringPreference;Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +HSPLcom/fredporciuncula/flow/preferences/StringPreference$setAndCommit$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/fredporciuncula/flow/preferences/StringPreference$setAndCommit$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/fredporciuncula/flow/preferences/StringPreference$setAndCommit$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/fredporciuncula/flow/preferences/StringPreference$setAndCommit$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/google/accompanist/systemuicontroller/AndroidSystemUiController; +HSPLcom/google/accompanist/systemuicontroller/AndroidSystemUiController;->(Landroid/view/View;Landroid/view/Window;)V +HSPLcom/google/accompanist/systemuicontroller/AndroidSystemUiController;->setNavigationBarColor-Iv8Zu3U(JZZLkotlin/jvm/functions/Function1;)V +HSPLcom/google/accompanist/systemuicontroller/AndroidSystemUiController;->setNavigationBarContrastEnforced(Z)V +HSPLcom/google/accompanist/systemuicontroller/AndroidSystemUiController;->setNavigationBarDarkContentEnabled(Z)V +HSPLcom/google/accompanist/systemuicontroller/AndroidSystemUiController;->setStatusBarColor-ek8zF_U(JZLkotlin/jvm/functions/Function1;)V +HSPLcom/google/accompanist/systemuicontroller/AndroidSystemUiController;->setStatusBarDarkContentEnabled(Z)V +Lcom/google/accompanist/systemuicontroller/SystemUiController; +HSPLcom/google/accompanist/systemuicontroller/SystemUiController;->setSystemBarsColor-Iv8Zu3U$default(Lcom/google/accompanist/systemuicontroller/SystemUiController;JZZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +HSPLcom/google/accompanist/systemuicontroller/SystemUiController;->setSystemBarsColor-Iv8Zu3U(JZZLkotlin/jvm/functions/Function1;)V +Lcom/google/accompanist/systemuicontroller/SystemUiControllerKt; +HSPLcom/google/accompanist/systemuicontroller/SystemUiControllerKt;->()V +HSPLcom/google/accompanist/systemuicontroller/SystemUiControllerKt;->access$getBlackScrimmed$p()Lkotlin/jvm/functions/Function1; +HSPLcom/google/accompanist/systemuicontroller/SystemUiControllerKt;->findWindow(Landroid/content/Context;)Landroid/view/Window; +HSPLcom/google/accompanist/systemuicontroller/SystemUiControllerKt;->findWindow(Landroidx/compose/runtime/Composer;I)Landroid/view/Window; +HSPLcom/google/accompanist/systemuicontroller/SystemUiControllerKt;->rememberSystemUiController(Landroid/view/Window;Landroidx/compose/runtime/Composer;II)Lcom/google/accompanist/systemuicontroller/SystemUiController; +Lcom/google/accompanist/systemuicontroller/SystemUiControllerKt$BlackScrimmed$1; +HSPLcom/google/accompanist/systemuicontroller/SystemUiControllerKt$BlackScrimmed$1;->()V +HSPLcom/google/accompanist/systemuicontroller/SystemUiControllerKt$BlackScrimmed$1;->()V +Lcom/google/android/datatransport/AutoValue_Event; +HSPLcom/google/android/datatransport/AutoValue_Event;->(Ljava/lang/Integer;Ljava/lang/Object;Lcom/google/android/datatransport/Priority;)V +HSPLcom/google/android/datatransport/AutoValue_Event;->getCode()Ljava/lang/Integer; +HSPLcom/google/android/datatransport/AutoValue_Event;->getPayload()Ljava/lang/Object; +HSPLcom/google/android/datatransport/AutoValue_Event;->getPriority()Lcom/google/android/datatransport/Priority; +Lcom/google/android/datatransport/Encoding; +HSPLcom/google/android/datatransport/Encoding;->(Ljava/lang/String;)V +HSPLcom/google/android/datatransport/Encoding;->equals(Ljava/lang/Object;)Z +HSPLcom/google/android/datatransport/Encoding;->getName()Ljava/lang/String; +HSPLcom/google/android/datatransport/Encoding;->hashCode()I +HSPLcom/google/android/datatransport/Encoding;->of(Ljava/lang/String;)Lcom/google/android/datatransport/Encoding; +Lcom/google/android/datatransport/Event; +HSPLcom/google/android/datatransport/Event;->()V +HSPLcom/google/android/datatransport/Event;->ofData(Ljava/lang/Object;)Lcom/google/android/datatransport/Event; +Lcom/google/android/datatransport/Priority; +HSPLcom/google/android/datatransport/Priority;->()V +HSPLcom/google/android/datatransport/Priority;->(Ljava/lang/String;I)V +HSPLcom/google/android/datatransport/Priority;->values()[Lcom/google/android/datatransport/Priority; +Lcom/google/android/datatransport/Transformer; +Lcom/google/android/datatransport/Transport; +Lcom/google/android/datatransport/TransportFactory; +Lcom/google/android/datatransport/TransportScheduleCallback; +Lcom/google/android/datatransport/cct/CCTDestination; +HSPLcom/google/android/datatransport/cct/CCTDestination;->()V +HSPLcom/google/android/datatransport/cct/CCTDestination;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/google/android/datatransport/cct/CCTDestination;->asByteArray()[B +HSPLcom/google/android/datatransport/cct/CCTDestination;->getExtras()[B +HSPLcom/google/android/datatransport/cct/CCTDestination;->getName()Ljava/lang/String; +HSPLcom/google/android/datatransport/cct/CCTDestination;->getSupportedEncodings()Ljava/util/Set; +Lcom/google/android/datatransport/cct/CctBackendFactory; +HSPLcom/google/android/datatransport/cct/CctBackendFactory;->()V +HSPLcom/google/android/datatransport/cct/CctBackendFactory;->create(Lcom/google/android/datatransport/runtime/backends/CreationContext;)Lcom/google/android/datatransport/runtime/backends/TransportBackend; +Lcom/google/android/datatransport/cct/CctTransportBackend; +HSPLcom/google/android/datatransport/cct/CctTransportBackend;->(Landroid/content/Context;Lcom/google/android/datatransport/runtime/time/Clock;Lcom/google/android/datatransport/runtime/time/Clock;)V +HSPLcom/google/android/datatransport/cct/CctTransportBackend;->(Landroid/content/Context;Lcom/google/android/datatransport/runtime/time/Clock;Lcom/google/android/datatransport/runtime/time/Clock;I)V +HSPLcom/google/android/datatransport/cct/CctTransportBackend;->decorate(Lcom/google/android/datatransport/runtime/EventInternal;)Lcom/google/android/datatransport/runtime/EventInternal; +HSPLcom/google/android/datatransport/cct/CctTransportBackend;->getNetSubtypeValue(Landroid/net/NetworkInfo;)I +HSPLcom/google/android/datatransport/cct/CctTransportBackend;->getNetTypeValue(Landroid/net/NetworkInfo;)I +HSPLcom/google/android/datatransport/cct/CctTransportBackend;->getPackageVersionCode(Landroid/content/Context;)I +HSPLcom/google/android/datatransport/cct/CctTransportBackend;->getTelephonyManager(Landroid/content/Context;)Landroid/telephony/TelephonyManager; +HSPLcom/google/android/datatransport/cct/CctTransportBackend;->getTzOffset()J +HSPLcom/google/android/datatransport/cct/CctTransportBackend;->parseUrlOrThrow(Ljava/lang/String;)Ljava/net/URL; +Lcom/google/android/datatransport/cct/StringMerger; +HSPLcom/google/android/datatransport/cct/StringMerger;->mergeStrings(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +Lcom/google/android/datatransport/cct/internal/AndroidClientInfo; +Lcom/google/android/datatransport/cct/internal/AutoBatchedLogRequestEncoder; +HSPLcom/google/android/datatransport/cct/internal/AutoBatchedLogRequestEncoder;->()V +HSPLcom/google/android/datatransport/cct/internal/AutoBatchedLogRequestEncoder;->()V +HSPLcom/google/android/datatransport/cct/internal/AutoBatchedLogRequestEncoder;->configure(Lcom/google/firebase/encoders/config/EncoderConfig;)V +Lcom/google/android/datatransport/cct/internal/AutoBatchedLogRequestEncoder$AndroidClientInfoEncoder; +HSPLcom/google/android/datatransport/cct/internal/AutoBatchedLogRequestEncoder$AndroidClientInfoEncoder;->()V +HSPLcom/google/android/datatransport/cct/internal/AutoBatchedLogRequestEncoder$AndroidClientInfoEncoder;->()V +Lcom/google/android/datatransport/cct/internal/AutoBatchedLogRequestEncoder$BatchedLogRequestEncoder; +HSPLcom/google/android/datatransport/cct/internal/AutoBatchedLogRequestEncoder$BatchedLogRequestEncoder;->()V +HSPLcom/google/android/datatransport/cct/internal/AutoBatchedLogRequestEncoder$BatchedLogRequestEncoder;->()V +Lcom/google/android/datatransport/cct/internal/AutoBatchedLogRequestEncoder$ClientInfoEncoder; +HSPLcom/google/android/datatransport/cct/internal/AutoBatchedLogRequestEncoder$ClientInfoEncoder;->()V +HSPLcom/google/android/datatransport/cct/internal/AutoBatchedLogRequestEncoder$ClientInfoEncoder;->()V +Lcom/google/android/datatransport/cct/internal/AutoBatchedLogRequestEncoder$LogEventEncoder; +HSPLcom/google/android/datatransport/cct/internal/AutoBatchedLogRequestEncoder$LogEventEncoder;->()V +HSPLcom/google/android/datatransport/cct/internal/AutoBatchedLogRequestEncoder$LogEventEncoder;->()V +Lcom/google/android/datatransport/cct/internal/AutoBatchedLogRequestEncoder$LogRequestEncoder; +HSPLcom/google/android/datatransport/cct/internal/AutoBatchedLogRequestEncoder$LogRequestEncoder;->()V +HSPLcom/google/android/datatransport/cct/internal/AutoBatchedLogRequestEncoder$LogRequestEncoder;->()V +Lcom/google/android/datatransport/cct/internal/AutoBatchedLogRequestEncoder$NetworkConnectionInfoEncoder; +HSPLcom/google/android/datatransport/cct/internal/AutoBatchedLogRequestEncoder$NetworkConnectionInfoEncoder;->()V +HSPLcom/google/android/datatransport/cct/internal/AutoBatchedLogRequestEncoder$NetworkConnectionInfoEncoder;->()V +Lcom/google/android/datatransport/cct/internal/AutoValue_AndroidClientInfo; +Lcom/google/android/datatransport/cct/internal/AutoValue_BatchedLogRequest; +Lcom/google/android/datatransport/cct/internal/AutoValue_ClientInfo; +Lcom/google/android/datatransport/cct/internal/AutoValue_LogEvent; +Lcom/google/android/datatransport/cct/internal/AutoValue_LogRequest; +Lcom/google/android/datatransport/cct/internal/AutoValue_NetworkConnectionInfo; +Lcom/google/android/datatransport/cct/internal/BatchedLogRequest; +HSPLcom/google/android/datatransport/cct/internal/BatchedLogRequest;->createDataEncoder()Lcom/google/firebase/encoders/DataEncoder; +Lcom/google/android/datatransport/cct/internal/ClientInfo; +Lcom/google/android/datatransport/cct/internal/LogEvent; +Lcom/google/android/datatransport/cct/internal/LogRequest; +Lcom/google/android/datatransport/cct/internal/NetworkConnectionInfo; +Lcom/google/android/datatransport/cct/internal/NetworkConnectionInfo$MobileSubtype; +HSPLcom/google/android/datatransport/cct/internal/NetworkConnectionInfo$MobileSubtype;->()V +HSPLcom/google/android/datatransport/cct/internal/NetworkConnectionInfo$MobileSubtype;->(Ljava/lang/String;II)V +HSPLcom/google/android/datatransport/cct/internal/NetworkConnectionInfo$MobileSubtype;->getValue()I +Lcom/google/android/datatransport/runtime/AutoValue_EventInternal; +HSPLcom/google/android/datatransport/runtime/AutoValue_EventInternal;->(Ljava/lang/String;Ljava/lang/Integer;Lcom/google/android/datatransport/runtime/EncodedPayload;JJLjava/util/Map;)V +HSPLcom/google/android/datatransport/runtime/AutoValue_EventInternal;->(Ljava/lang/String;Ljava/lang/Integer;Lcom/google/android/datatransport/runtime/EncodedPayload;JJLjava/util/Map;Lcom/google/android/datatransport/runtime/AutoValue_EventInternal$1;)V +HSPLcom/google/android/datatransport/runtime/AutoValue_EventInternal;->getAutoMetadata()Ljava/util/Map; +HSPLcom/google/android/datatransport/runtime/AutoValue_EventInternal;->getCode()Ljava/lang/Integer; +HSPLcom/google/android/datatransport/runtime/AutoValue_EventInternal;->getEncodedPayload()Lcom/google/android/datatransport/runtime/EncodedPayload; +HSPLcom/google/android/datatransport/runtime/AutoValue_EventInternal;->getEventMillis()J +HSPLcom/google/android/datatransport/runtime/AutoValue_EventInternal;->getTransportName()Ljava/lang/String; +HSPLcom/google/android/datatransport/runtime/AutoValue_EventInternal;->getUptimeMillis()J +Lcom/google/android/datatransport/runtime/AutoValue_EventInternal$Builder; +HSPLcom/google/android/datatransport/runtime/AutoValue_EventInternal$Builder;->()V +HSPLcom/google/android/datatransport/runtime/AutoValue_EventInternal$Builder;->build()Lcom/google/android/datatransport/runtime/EventInternal; +HSPLcom/google/android/datatransport/runtime/AutoValue_EventInternal$Builder;->getAutoMetadata()Ljava/util/Map; +HSPLcom/google/android/datatransport/runtime/AutoValue_EventInternal$Builder;->setAutoMetadata(Ljava/util/Map;)Lcom/google/android/datatransport/runtime/EventInternal$Builder; +HSPLcom/google/android/datatransport/runtime/AutoValue_EventInternal$Builder;->setCode(Ljava/lang/Integer;)Lcom/google/android/datatransport/runtime/EventInternal$Builder; +HSPLcom/google/android/datatransport/runtime/AutoValue_EventInternal$Builder;->setEncodedPayload(Lcom/google/android/datatransport/runtime/EncodedPayload;)Lcom/google/android/datatransport/runtime/EventInternal$Builder; +HSPLcom/google/android/datatransport/runtime/AutoValue_EventInternal$Builder;->setEventMillis(J)Lcom/google/android/datatransport/runtime/EventInternal$Builder; +HSPLcom/google/android/datatransport/runtime/AutoValue_EventInternal$Builder;->setTransportName(Ljava/lang/String;)Lcom/google/android/datatransport/runtime/EventInternal$Builder; +HSPLcom/google/android/datatransport/runtime/AutoValue_EventInternal$Builder;->setUptimeMillis(J)Lcom/google/android/datatransport/runtime/EventInternal$Builder; +Lcom/google/android/datatransport/runtime/AutoValue_SendRequest; +HSPLcom/google/android/datatransport/runtime/AutoValue_SendRequest;->(Lcom/google/android/datatransport/runtime/TransportContext;Ljava/lang/String;Lcom/google/android/datatransport/Event;Lcom/google/android/datatransport/Transformer;Lcom/google/android/datatransport/Encoding;)V +HSPLcom/google/android/datatransport/runtime/AutoValue_SendRequest;->(Lcom/google/android/datatransport/runtime/TransportContext;Ljava/lang/String;Lcom/google/android/datatransport/Event;Lcom/google/android/datatransport/Transformer;Lcom/google/android/datatransport/Encoding;Lcom/google/android/datatransport/runtime/AutoValue_SendRequest$1;)V +HSPLcom/google/android/datatransport/runtime/AutoValue_SendRequest;->getEncoding()Lcom/google/android/datatransport/Encoding; +HSPLcom/google/android/datatransport/runtime/AutoValue_SendRequest;->getEvent()Lcom/google/android/datatransport/Event; +HSPLcom/google/android/datatransport/runtime/AutoValue_SendRequest;->getTransformer()Lcom/google/android/datatransport/Transformer; +HSPLcom/google/android/datatransport/runtime/AutoValue_SendRequest;->getTransportContext()Lcom/google/android/datatransport/runtime/TransportContext; +HSPLcom/google/android/datatransport/runtime/AutoValue_SendRequest;->getTransportName()Ljava/lang/String; +Lcom/google/android/datatransport/runtime/AutoValue_SendRequest$Builder; +HSPLcom/google/android/datatransport/runtime/AutoValue_SendRequest$Builder;->()V +HSPLcom/google/android/datatransport/runtime/AutoValue_SendRequest$Builder;->build()Lcom/google/android/datatransport/runtime/SendRequest; +HSPLcom/google/android/datatransport/runtime/AutoValue_SendRequest$Builder;->setEncoding(Lcom/google/android/datatransport/Encoding;)Lcom/google/android/datatransport/runtime/SendRequest$Builder; +HSPLcom/google/android/datatransport/runtime/AutoValue_SendRequest$Builder;->setEvent(Lcom/google/android/datatransport/Event;)Lcom/google/android/datatransport/runtime/SendRequest$Builder; +HSPLcom/google/android/datatransport/runtime/AutoValue_SendRequest$Builder;->setTransformer(Lcom/google/android/datatransport/Transformer;)Lcom/google/android/datatransport/runtime/SendRequest$Builder; +HSPLcom/google/android/datatransport/runtime/AutoValue_SendRequest$Builder;->setTransportContext(Lcom/google/android/datatransport/runtime/TransportContext;)Lcom/google/android/datatransport/runtime/SendRequest$Builder; +HSPLcom/google/android/datatransport/runtime/AutoValue_SendRequest$Builder;->setTransportName(Ljava/lang/String;)Lcom/google/android/datatransport/runtime/SendRequest$Builder; +Lcom/google/android/datatransport/runtime/AutoValue_TransportContext; +HSPLcom/google/android/datatransport/runtime/AutoValue_TransportContext;->(Ljava/lang/String;[BLcom/google/android/datatransport/Priority;)V +HSPLcom/google/android/datatransport/runtime/AutoValue_TransportContext;->(Ljava/lang/String;[BLcom/google/android/datatransport/Priority;Lcom/google/android/datatransport/runtime/AutoValue_TransportContext$1;)V +HSPLcom/google/android/datatransport/runtime/AutoValue_TransportContext;->getBackendName()Ljava/lang/String; +HSPLcom/google/android/datatransport/runtime/AutoValue_TransportContext;->getExtras()[B +HSPLcom/google/android/datatransport/runtime/AutoValue_TransportContext;->getPriority()Lcom/google/android/datatransport/Priority; +Lcom/google/android/datatransport/runtime/AutoValue_TransportContext$Builder; +HSPLcom/google/android/datatransport/runtime/AutoValue_TransportContext$Builder;->()V +HSPLcom/google/android/datatransport/runtime/AutoValue_TransportContext$Builder;->build()Lcom/google/android/datatransport/runtime/TransportContext; +HSPLcom/google/android/datatransport/runtime/AutoValue_TransportContext$Builder;->setBackendName(Ljava/lang/String;)Lcom/google/android/datatransport/runtime/TransportContext$Builder; +HSPLcom/google/android/datatransport/runtime/AutoValue_TransportContext$Builder;->setExtras([B)Lcom/google/android/datatransport/runtime/TransportContext$Builder; +HSPLcom/google/android/datatransport/runtime/AutoValue_TransportContext$Builder;->setPriority(Lcom/google/android/datatransport/Priority;)Lcom/google/android/datatransport/runtime/TransportContext$Builder; +Lcom/google/android/datatransport/runtime/DaggerTransportRuntimeComponent; +HSPLcom/google/android/datatransport/runtime/DaggerTransportRuntimeComponent;->(Landroid/content/Context;)V +HSPLcom/google/android/datatransport/runtime/DaggerTransportRuntimeComponent;->(Landroid/content/Context;Lcom/google/android/datatransport/runtime/DaggerTransportRuntimeComponent$1;)V +HSPLcom/google/android/datatransport/runtime/DaggerTransportRuntimeComponent;->builder()Lcom/google/android/datatransport/runtime/TransportRuntimeComponent$Builder; +HSPLcom/google/android/datatransport/runtime/DaggerTransportRuntimeComponent;->getTransportRuntime()Lcom/google/android/datatransport/runtime/TransportRuntime; +HSPLcom/google/android/datatransport/runtime/DaggerTransportRuntimeComponent;->initialize(Landroid/content/Context;)V +Lcom/google/android/datatransport/runtime/DaggerTransportRuntimeComponent$Builder; +HSPLcom/google/android/datatransport/runtime/DaggerTransportRuntimeComponent$Builder;->()V +HSPLcom/google/android/datatransport/runtime/DaggerTransportRuntimeComponent$Builder;->(Lcom/google/android/datatransport/runtime/DaggerTransportRuntimeComponent$1;)V +HSPLcom/google/android/datatransport/runtime/DaggerTransportRuntimeComponent$Builder;->build()Lcom/google/android/datatransport/runtime/TransportRuntimeComponent; +HSPLcom/google/android/datatransport/runtime/DaggerTransportRuntimeComponent$Builder;->setApplicationContext(Landroid/content/Context;)Lcom/google/android/datatransport/runtime/DaggerTransportRuntimeComponent$Builder; +HSPLcom/google/android/datatransport/runtime/DaggerTransportRuntimeComponent$Builder;->setApplicationContext(Landroid/content/Context;)Lcom/google/android/datatransport/runtime/TransportRuntimeComponent$Builder; +Lcom/google/android/datatransport/runtime/Destination; +Lcom/google/android/datatransport/runtime/EncodedDestination; +Lcom/google/android/datatransport/runtime/EncodedPayload; +HSPLcom/google/android/datatransport/runtime/EncodedPayload;->(Lcom/google/android/datatransport/Encoding;[B)V +HSPLcom/google/android/datatransport/runtime/EncodedPayload;->getBytes()[B +HSPLcom/google/android/datatransport/runtime/EncodedPayload;->getEncoding()Lcom/google/android/datatransport/Encoding; +Lcom/google/android/datatransport/runtime/EventInternal; +HSPLcom/google/android/datatransport/runtime/EventInternal;->()V +HSPLcom/google/android/datatransport/runtime/EventInternal;->builder()Lcom/google/android/datatransport/runtime/EventInternal$Builder; +HSPLcom/google/android/datatransport/runtime/EventInternal;->getMetadata()Ljava/util/Map; +HSPLcom/google/android/datatransport/runtime/EventInternal;->toBuilder()Lcom/google/android/datatransport/runtime/EventInternal$Builder; +Lcom/google/android/datatransport/runtime/EventInternal$Builder; +HSPLcom/google/android/datatransport/runtime/EventInternal$Builder;->()V +HSPLcom/google/android/datatransport/runtime/EventInternal$Builder;->addMetadata(Ljava/lang/String;I)Lcom/google/android/datatransport/runtime/EventInternal$Builder; +HSPLcom/google/android/datatransport/runtime/EventInternal$Builder;->addMetadata(Ljava/lang/String;J)Lcom/google/android/datatransport/runtime/EventInternal$Builder; +HSPLcom/google/android/datatransport/runtime/EventInternal$Builder;->addMetadata(Ljava/lang/String;Ljava/lang/String;)Lcom/google/android/datatransport/runtime/EventInternal$Builder; +Lcom/google/android/datatransport/runtime/ExecutionModule; +HSPLcom/google/android/datatransport/runtime/ExecutionModule;->executor()Ljava/util/concurrent/Executor; +Lcom/google/android/datatransport/runtime/ExecutionModule_ExecutorFactory; +HSPLcom/google/android/datatransport/runtime/ExecutionModule_ExecutorFactory;->()V +HSPLcom/google/android/datatransport/runtime/ExecutionModule_ExecutorFactory;->create()Lcom/google/android/datatransport/runtime/ExecutionModule_ExecutorFactory; +HSPLcom/google/android/datatransport/runtime/ExecutionModule_ExecutorFactory;->executor()Ljava/util/concurrent/Executor; +HSPLcom/google/android/datatransport/runtime/ExecutionModule_ExecutorFactory;->get()Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/ExecutionModule_ExecutorFactory;->get()Ljava/util/concurrent/Executor; +Lcom/google/android/datatransport/runtime/ExecutionModule_ExecutorFactory$InstanceHolder; +HSPLcom/google/android/datatransport/runtime/ExecutionModule_ExecutorFactory$InstanceHolder;->()V +HSPLcom/google/android/datatransport/runtime/ExecutionModule_ExecutorFactory$InstanceHolder;->access$000()Lcom/google/android/datatransport/runtime/ExecutionModule_ExecutorFactory; +Lcom/google/android/datatransport/runtime/SafeLoggingExecutor; +HSPLcom/google/android/datatransport/runtime/SafeLoggingExecutor;->(Ljava/util/concurrent/Executor;)V +HSPLcom/google/android/datatransport/runtime/SafeLoggingExecutor;->execute(Ljava/lang/Runnable;)V +Lcom/google/android/datatransport/runtime/SafeLoggingExecutor$SafeLoggingRunnable; +HSPLcom/google/android/datatransport/runtime/SafeLoggingExecutor$SafeLoggingRunnable;->(Ljava/lang/Runnable;)V +HSPLcom/google/android/datatransport/runtime/SafeLoggingExecutor$SafeLoggingRunnable;->run()V +Lcom/google/android/datatransport/runtime/SendRequest; +HSPLcom/google/android/datatransport/runtime/SendRequest;->()V +HSPLcom/google/android/datatransport/runtime/SendRequest;->builder()Lcom/google/android/datatransport/runtime/SendRequest$Builder; +HSPLcom/google/android/datatransport/runtime/SendRequest;->getPayload()[B +Lcom/google/android/datatransport/runtime/SendRequest$Builder; +HSPLcom/google/android/datatransport/runtime/SendRequest$Builder;->()V +Lcom/google/android/datatransport/runtime/TransportContext; +HSPLcom/google/android/datatransport/runtime/TransportContext;->()V +HSPLcom/google/android/datatransport/runtime/TransportContext;->builder()Lcom/google/android/datatransport/runtime/TransportContext$Builder; +HSPLcom/google/android/datatransport/runtime/TransportContext;->withPriority(Lcom/google/android/datatransport/Priority;)Lcom/google/android/datatransport/runtime/TransportContext; +Lcom/google/android/datatransport/runtime/TransportContext$Builder; +HSPLcom/google/android/datatransport/runtime/TransportContext$Builder;->()V +Lcom/google/android/datatransport/runtime/TransportFactoryImpl; +HSPLcom/google/android/datatransport/runtime/TransportFactoryImpl;->(Ljava/util/Set;Lcom/google/android/datatransport/runtime/TransportContext;Lcom/google/android/datatransport/runtime/TransportInternal;)V +HSPLcom/google/android/datatransport/runtime/TransportFactoryImpl;->getTransport(Ljava/lang/String;Ljava/lang/Class;Lcom/google/android/datatransport/Encoding;Lcom/google/android/datatransport/Transformer;)Lcom/google/android/datatransport/Transport; +Lcom/google/android/datatransport/runtime/TransportImpl; +HSPLcom/google/android/datatransport/runtime/TransportImpl;->(Lcom/google/android/datatransport/runtime/TransportContext;Ljava/lang/String;Lcom/google/android/datatransport/Encoding;Lcom/google/android/datatransport/Transformer;Lcom/google/android/datatransport/runtime/TransportInternal;)V +HSPLcom/google/android/datatransport/runtime/TransportImpl;->lambda$send$0(Ljava/lang/Exception;)V +HSPLcom/google/android/datatransport/runtime/TransportImpl;->schedule(Lcom/google/android/datatransport/Event;Lcom/google/android/datatransport/TransportScheduleCallback;)V +HSPLcom/google/android/datatransport/runtime/TransportImpl;->send(Lcom/google/android/datatransport/Event;)V +Lcom/google/android/datatransport/runtime/TransportImpl$$ExternalSyntheticLambda0; +HSPLcom/google/android/datatransport/runtime/TransportImpl$$ExternalSyntheticLambda0;->()V +HSPLcom/google/android/datatransport/runtime/TransportImpl$$ExternalSyntheticLambda0;->onSchedule(Ljava/lang/Exception;)V +Lcom/google/android/datatransport/runtime/TransportInternal; +Lcom/google/android/datatransport/runtime/TransportRuntime; +HSPLcom/google/android/datatransport/runtime/TransportRuntime;->()V +HSPLcom/google/android/datatransport/runtime/TransportRuntime;->(Lcom/google/android/datatransport/runtime/time/Clock;Lcom/google/android/datatransport/runtime/time/Clock;Lcom/google/android/datatransport/runtime/scheduling/Scheduler;Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/Uploader;Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer;)V +HSPLcom/google/android/datatransport/runtime/TransportRuntime;->convert(Lcom/google/android/datatransport/runtime/SendRequest;)Lcom/google/android/datatransport/runtime/EventInternal; +HSPLcom/google/android/datatransport/runtime/TransportRuntime;->getInstance()Lcom/google/android/datatransport/runtime/TransportRuntime; +HSPLcom/google/android/datatransport/runtime/TransportRuntime;->getSupportedEncodings(Lcom/google/android/datatransport/runtime/Destination;)Ljava/util/Set; +HSPLcom/google/android/datatransport/runtime/TransportRuntime;->initialize(Landroid/content/Context;)V +HSPLcom/google/android/datatransport/runtime/TransportRuntime;->newFactory(Lcom/google/android/datatransport/runtime/Destination;)Lcom/google/android/datatransport/TransportFactory; +HSPLcom/google/android/datatransport/runtime/TransportRuntime;->send(Lcom/google/android/datatransport/runtime/SendRequest;Lcom/google/android/datatransport/TransportScheduleCallback;)V +Lcom/google/android/datatransport/runtime/TransportRuntimeComponent; +HSPLcom/google/android/datatransport/runtime/TransportRuntimeComponent;->()V +Lcom/google/android/datatransport/runtime/TransportRuntimeComponent$Builder; +Lcom/google/android/datatransport/runtime/TransportRuntime_Factory; +HSPLcom/google/android/datatransport/runtime/TransportRuntime_Factory;->(Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)V +HSPLcom/google/android/datatransport/runtime/TransportRuntime_Factory;->create(Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)Lcom/google/android/datatransport/runtime/TransportRuntime_Factory; +HSPLcom/google/android/datatransport/runtime/TransportRuntime_Factory;->get()Lcom/google/android/datatransport/runtime/TransportRuntime; +HSPLcom/google/android/datatransport/runtime/TransportRuntime_Factory;->get()Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/TransportRuntime_Factory;->newInstance(Lcom/google/android/datatransport/runtime/time/Clock;Lcom/google/android/datatransport/runtime/time/Clock;Lcom/google/android/datatransport/runtime/scheduling/Scheduler;Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/Uploader;Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer;)Lcom/google/android/datatransport/runtime/TransportRuntime; +Lcom/google/android/datatransport/runtime/backends/AutoValue_CreationContext; +HSPLcom/google/android/datatransport/runtime/backends/AutoValue_CreationContext;->(Landroid/content/Context;Lcom/google/android/datatransport/runtime/time/Clock;Lcom/google/android/datatransport/runtime/time/Clock;Ljava/lang/String;)V +HSPLcom/google/android/datatransport/runtime/backends/AutoValue_CreationContext;->getApplicationContext()Landroid/content/Context; +HSPLcom/google/android/datatransport/runtime/backends/AutoValue_CreationContext;->getMonotonicClock()Lcom/google/android/datatransport/runtime/time/Clock; +HSPLcom/google/android/datatransport/runtime/backends/AutoValue_CreationContext;->getWallClock()Lcom/google/android/datatransport/runtime/time/Clock; +Lcom/google/android/datatransport/runtime/backends/BackendFactory; +Lcom/google/android/datatransport/runtime/backends/BackendRegistry; +Lcom/google/android/datatransport/runtime/backends/CreationContext; +HSPLcom/google/android/datatransport/runtime/backends/CreationContext;->()V +HSPLcom/google/android/datatransport/runtime/backends/CreationContext;->create(Landroid/content/Context;Lcom/google/android/datatransport/runtime/time/Clock;Lcom/google/android/datatransport/runtime/time/Clock;Ljava/lang/String;)Lcom/google/android/datatransport/runtime/backends/CreationContext; +Lcom/google/android/datatransport/runtime/backends/CreationContextFactory; +HSPLcom/google/android/datatransport/runtime/backends/CreationContextFactory;->(Landroid/content/Context;Lcom/google/android/datatransport/runtime/time/Clock;Lcom/google/android/datatransport/runtime/time/Clock;)V +HSPLcom/google/android/datatransport/runtime/backends/CreationContextFactory;->create(Ljava/lang/String;)Lcom/google/android/datatransport/runtime/backends/CreationContext; +Lcom/google/android/datatransport/runtime/backends/CreationContextFactory_Factory; +HSPLcom/google/android/datatransport/runtime/backends/CreationContextFactory_Factory;->(Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)V +HSPLcom/google/android/datatransport/runtime/backends/CreationContextFactory_Factory;->create(Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)Lcom/google/android/datatransport/runtime/backends/CreationContextFactory_Factory; +HSPLcom/google/android/datatransport/runtime/backends/CreationContextFactory_Factory;->get()Lcom/google/android/datatransport/runtime/backends/CreationContextFactory; +HSPLcom/google/android/datatransport/runtime/backends/CreationContextFactory_Factory;->get()Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/backends/CreationContextFactory_Factory;->newInstance(Landroid/content/Context;Lcom/google/android/datatransport/runtime/time/Clock;Lcom/google/android/datatransport/runtime/time/Clock;)Lcom/google/android/datatransport/runtime/backends/CreationContextFactory; +Lcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry; +HSPLcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry;->(Landroid/content/Context;Lcom/google/android/datatransport/runtime/backends/CreationContextFactory;)V +HSPLcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry;->(Lcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry$BackendFactoryProvider;Lcom/google/android/datatransport/runtime/backends/CreationContextFactory;)V +HSPLcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry;->get(Ljava/lang/String;)Lcom/google/android/datatransport/runtime/backends/TransportBackend; +Lcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry$BackendFactoryProvider; +HSPLcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry$BackendFactoryProvider;->(Landroid/content/Context;)V +HSPLcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry$BackendFactoryProvider;->discover(Landroid/content/Context;)Ljava/util/Map; +HSPLcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry$BackendFactoryProvider;->get(Ljava/lang/String;)Lcom/google/android/datatransport/runtime/backends/BackendFactory; +HSPLcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry$BackendFactoryProvider;->getBackendProviders()Ljava/util/Map; +HSPLcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry$BackendFactoryProvider;->getMetadata(Landroid/content/Context;)Landroid/os/Bundle; +Lcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry_Factory; +HSPLcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry_Factory;->(Ljavax/inject/Provider;Ljavax/inject/Provider;)V +HSPLcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry_Factory;->create(Ljavax/inject/Provider;Ljavax/inject/Provider;)Lcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry_Factory; +HSPLcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry_Factory;->get()Lcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry; +HSPLcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry_Factory;->get()Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry_Factory;->newInstance(Landroid/content/Context;Ljava/lang/Object;)Lcom/google/android/datatransport/runtime/backends/MetadataBackendRegistry; +Lcom/google/android/datatransport/runtime/backends/TransportBackend; +Lcom/google/android/datatransport/runtime/backends/TransportBackendDiscovery; +Lcom/google/android/datatransport/runtime/dagger/Lazy; +Lcom/google/android/datatransport/runtime/dagger/internal/DoubleCheck; +HSPLcom/google/android/datatransport/runtime/dagger/internal/DoubleCheck;->()V +HSPLcom/google/android/datatransport/runtime/dagger/internal/DoubleCheck;->(Ljavax/inject/Provider;)V +HSPLcom/google/android/datatransport/runtime/dagger/internal/DoubleCheck;->get()Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/dagger/internal/DoubleCheck;->provider(Ljavax/inject/Provider;)Ljavax/inject/Provider; +HSPLcom/google/android/datatransport/runtime/dagger/internal/DoubleCheck;->reentrantCheck(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/google/android/datatransport/runtime/dagger/internal/Factory; +Lcom/google/android/datatransport/runtime/dagger/internal/InstanceFactory; +HSPLcom/google/android/datatransport/runtime/dagger/internal/InstanceFactory;->()V +HSPLcom/google/android/datatransport/runtime/dagger/internal/InstanceFactory;->(Ljava/lang/Object;)V +HSPLcom/google/android/datatransport/runtime/dagger/internal/InstanceFactory;->create(Ljava/lang/Object;)Lcom/google/android/datatransport/runtime/dagger/internal/Factory; +HSPLcom/google/android/datatransport/runtime/dagger/internal/InstanceFactory;->get()Ljava/lang/Object; +Lcom/google/android/datatransport/runtime/dagger/internal/Preconditions; +HSPLcom/google/android/datatransport/runtime/dagger/internal/Preconditions;->checkBuilderRequirement(Ljava/lang/Object;Ljava/lang/Class;)V +HSPLcom/google/android/datatransport/runtime/dagger/internal/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/dagger/internal/Preconditions;->checkNotNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; +Lcom/google/android/datatransport/runtime/logging/Logging; +HSPLcom/google/android/datatransport/runtime/logging/Logging;->d(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V +HSPLcom/google/android/datatransport/runtime/logging/Logging;->d(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V +HSPLcom/google/android/datatransport/runtime/logging/Logging;->getTag(Ljava/lang/String;)Ljava/lang/String; +Lcom/google/android/datatransport/runtime/scheduling/DefaultScheduler; +HSPLcom/google/android/datatransport/runtime/scheduling/DefaultScheduler;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/DefaultScheduler;->(Ljava/util/concurrent/Executor;Lcom/google/android/datatransport/runtime/backends/BackendRegistry;Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkScheduler;Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStore;Lcom/google/android/datatransport/runtime/synchronization/SynchronizationGuard;)V +HSPLcom/google/android/datatransport/runtime/scheduling/DefaultScheduler;->lambda$schedule$0$com-google-android-datatransport-runtime-scheduling-DefaultScheduler(Lcom/google/android/datatransport/runtime/TransportContext;Lcom/google/android/datatransport/runtime/EventInternal;)Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/scheduling/DefaultScheduler;->lambda$schedule$1$com-google-android-datatransport-runtime-scheduling-DefaultScheduler(Lcom/google/android/datatransport/runtime/TransportContext;Lcom/google/android/datatransport/TransportScheduleCallback;Lcom/google/android/datatransport/runtime/EventInternal;)V +HSPLcom/google/android/datatransport/runtime/scheduling/DefaultScheduler;->schedule(Lcom/google/android/datatransport/runtime/TransportContext;Lcom/google/android/datatransport/runtime/EventInternal;Lcom/google/android/datatransport/TransportScheduleCallback;)V +Lcom/google/android/datatransport/runtime/scheduling/DefaultScheduler$$ExternalSyntheticLambda0; +HSPLcom/google/android/datatransport/runtime/scheduling/DefaultScheduler$$ExternalSyntheticLambda0;->(Lcom/google/android/datatransport/runtime/scheduling/DefaultScheduler;Lcom/google/android/datatransport/runtime/TransportContext;Lcom/google/android/datatransport/runtime/EventInternal;)V +HSPLcom/google/android/datatransport/runtime/scheduling/DefaultScheduler$$ExternalSyntheticLambda0;->execute()Ljava/lang/Object; +Lcom/google/android/datatransport/runtime/scheduling/DefaultScheduler$$ExternalSyntheticLambda1; +HSPLcom/google/android/datatransport/runtime/scheduling/DefaultScheduler$$ExternalSyntheticLambda1;->(Lcom/google/android/datatransport/runtime/scheduling/DefaultScheduler;Lcom/google/android/datatransport/runtime/TransportContext;Lcom/google/android/datatransport/TransportScheduleCallback;Lcom/google/android/datatransport/runtime/EventInternal;)V +HSPLcom/google/android/datatransport/runtime/scheduling/DefaultScheduler$$ExternalSyntheticLambda1;->run()V +Lcom/google/android/datatransport/runtime/scheduling/DefaultScheduler_Factory; +HSPLcom/google/android/datatransport/runtime/scheduling/DefaultScheduler_Factory;->(Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)V +HSPLcom/google/android/datatransport/runtime/scheduling/DefaultScheduler_Factory;->create(Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)Lcom/google/android/datatransport/runtime/scheduling/DefaultScheduler_Factory; +HSPLcom/google/android/datatransport/runtime/scheduling/DefaultScheduler_Factory;->get()Lcom/google/android/datatransport/runtime/scheduling/DefaultScheduler; +HSPLcom/google/android/datatransport/runtime/scheduling/DefaultScheduler_Factory;->get()Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/scheduling/DefaultScheduler_Factory;->newInstance(Ljava/util/concurrent/Executor;Lcom/google/android/datatransport/runtime/backends/BackendRegistry;Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkScheduler;Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStore;Lcom/google/android/datatransport/runtime/synchronization/SynchronizationGuard;)Lcom/google/android/datatransport/runtime/scheduling/DefaultScheduler; +Lcom/google/android/datatransport/runtime/scheduling/Scheduler; +Lcom/google/android/datatransport/runtime/scheduling/SchedulingConfigModule; +HSPLcom/google/android/datatransport/runtime/scheduling/SchedulingConfigModule;->config(Lcom/google/android/datatransport/runtime/time/Clock;)Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig; +Lcom/google/android/datatransport/runtime/scheduling/SchedulingConfigModule_ConfigFactory; +HSPLcom/google/android/datatransport/runtime/scheduling/SchedulingConfigModule_ConfigFactory;->(Ljavax/inject/Provider;)V +HSPLcom/google/android/datatransport/runtime/scheduling/SchedulingConfigModule_ConfigFactory;->config(Lcom/google/android/datatransport/runtime/time/Clock;)Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig; +HSPLcom/google/android/datatransport/runtime/scheduling/SchedulingConfigModule_ConfigFactory;->create(Ljavax/inject/Provider;)Lcom/google/android/datatransport/runtime/scheduling/SchedulingConfigModule_ConfigFactory; +HSPLcom/google/android/datatransport/runtime/scheduling/SchedulingConfigModule_ConfigFactory;->get()Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig; +HSPLcom/google/android/datatransport/runtime/scheduling/SchedulingConfigModule_ConfigFactory;->get()Ljava/lang/Object; +Lcom/google/android/datatransport/runtime/scheduling/SchedulingModule; +HSPLcom/google/android/datatransport/runtime/scheduling/SchedulingModule;->workScheduler(Landroid/content/Context;Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStore;Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig;Lcom/google/android/datatransport/runtime/time/Clock;)Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkScheduler; +Lcom/google/android/datatransport/runtime/scheduling/SchedulingModule_WorkSchedulerFactory; +HSPLcom/google/android/datatransport/runtime/scheduling/SchedulingModule_WorkSchedulerFactory;->(Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)V +HSPLcom/google/android/datatransport/runtime/scheduling/SchedulingModule_WorkSchedulerFactory;->create(Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)Lcom/google/android/datatransport/runtime/scheduling/SchedulingModule_WorkSchedulerFactory; +HSPLcom/google/android/datatransport/runtime/scheduling/SchedulingModule_WorkSchedulerFactory;->get()Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkScheduler; +HSPLcom/google/android/datatransport/runtime/scheduling/SchedulingModule_WorkSchedulerFactory;->get()Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/scheduling/SchedulingModule_WorkSchedulerFactory;->workScheduler(Landroid/content/Context;Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStore;Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig;Lcom/google/android/datatransport/runtime/time/Clock;)Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkScheduler; +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/AutoValue_SchedulerConfig; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/AutoValue_SchedulerConfig;->(Lcom/google/android/datatransport/runtime/time/Clock;Ljava/util/Map;)V +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/AutoValue_SchedulerConfig;->getClock()Lcom/google/android/datatransport/runtime/time/Clock; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/AutoValue_SchedulerConfig;->getValues()Ljava/util/Map; +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/AutoValue_SchedulerConfig_ConfigValue; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/AutoValue_SchedulerConfig_ConfigValue;->(JJLjava/util/Set;)V +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/AutoValue_SchedulerConfig_ConfigValue;->(JJLjava/util/Set;Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/AutoValue_SchedulerConfig_ConfigValue$1;)V +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/AutoValue_SchedulerConfig_ConfigValue;->getDelta()J +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/AutoValue_SchedulerConfig_ConfigValue;->getFlags()Ljava/util/Set; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/AutoValue_SchedulerConfig_ConfigValue;->getMaxAllowedDelay()J +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/AutoValue_SchedulerConfig_ConfigValue$Builder; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/AutoValue_SchedulerConfig_ConfigValue$Builder;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/AutoValue_SchedulerConfig_ConfigValue$Builder;->build()Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$ConfigValue; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/AutoValue_SchedulerConfig_ConfigValue$Builder;->setDelta(J)Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$ConfigValue$Builder; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/AutoValue_SchedulerConfig_ConfigValue$Builder;->setFlags(Ljava/util/Set;)Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$ConfigValue$Builder; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/AutoValue_SchedulerConfig_ConfigValue$Builder;->setMaxAllowedDelay(J)Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$ConfigValue$Builder; +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/JobInfoScheduler; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/JobInfoScheduler;->(Landroid/content/Context;Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStore;Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig;)V +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/JobInfoScheduler;->getJobId(Lcom/google/android/datatransport/runtime/TransportContext;)I +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/JobInfoScheduler;->isJobServiceOn(Landroid/app/job/JobScheduler;II)Z +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/JobInfoScheduler;->schedule(Lcom/google/android/datatransport/runtime/TransportContext;I)V +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/JobInfoScheduler;->schedule(Lcom/google/android/datatransport/runtime/TransportContext;IZ)V +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/JobInfoSchedulerService; +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig;->adjustedExponentialBackoff(IJ)J +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig;->builder()Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$Builder; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig;->configureJob(Landroid/app/job/JobInfo$Builder;Lcom/google/android/datatransport/Priority;JI)Landroid/app/job/JobInfo$Builder; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig;->create(Lcom/google/android/datatransport/runtime/time/Clock;Ljava/util/Map;)Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig;->getDefault(Lcom/google/android/datatransport/runtime/time/Clock;)Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig;->getScheduleDelay(Lcom/google/android/datatransport/Priority;JI)J +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig;->immutableSetOf([Ljava/lang/Object;)Ljava/util/Set; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig;->populateFlags(Landroid/app/job/JobInfo$Builder;Ljava/util/Set;)V +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$Builder; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$Builder;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$Builder;->addConfig(Lcom/google/android/datatransport/Priority;Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$ConfigValue;)Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$Builder; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$Builder;->build()Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$Builder;->setClock(Lcom/google/android/datatransport/runtime/time/Clock;)Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$Builder; +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$ConfigValue; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$ConfigValue;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$ConfigValue;->builder()Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$ConfigValue$Builder; +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$ConfigValue$Builder; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$ConfigValue$Builder;->()V +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$Flag; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$Flag;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/SchedulerConfig$Flag;->(Ljava/lang/String;I)V +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/Uploader; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/Uploader;->(Landroid/content/Context;Lcom/google/android/datatransport/runtime/backends/BackendRegistry;Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStore;Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkScheduler;Ljava/util/concurrent/Executor;Lcom/google/android/datatransport/runtime/synchronization/SynchronizationGuard;Lcom/google/android/datatransport/runtime/time/Clock;Lcom/google/android/datatransport/runtime/time/Clock;Lcom/google/android/datatransport/runtime/scheduling/persistence/ClientHealthMetricsStore;)V +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/Uploader_Factory; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/Uploader_Factory;->(Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)V +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/Uploader_Factory;->create(Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/Uploader_Factory; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/Uploader_Factory;->get()Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/Uploader; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/Uploader_Factory;->get()Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/Uploader_Factory;->newInstance(Landroid/content/Context;Lcom/google/android/datatransport/runtime/backends/BackendRegistry;Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStore;Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkScheduler;Ljava/util/concurrent/Executor;Lcom/google/android/datatransport/runtime/synchronization/SynchronizationGuard;Lcom/google/android/datatransport/runtime/time/Clock;Lcom/google/android/datatransport/runtime/time/Clock;Lcom/google/android/datatransport/runtime/scheduling/persistence/ClientHealthMetricsStore;)Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/Uploader; +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer;->(Ljava/util/concurrent/Executor;Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStore;Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkScheduler;Lcom/google/android/datatransport/runtime/synchronization/SynchronizationGuard;)V +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer;->ensureContextsScheduled()V +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer;->lambda$ensureContextsScheduled$0$com-google-android-datatransport-runtime-scheduling-jobscheduling-WorkInitializer()Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer;->lambda$ensureContextsScheduled$1$com-google-android-datatransport-runtime-scheduling-jobscheduling-WorkInitializer()V +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer$$ExternalSyntheticLambda0; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer$$ExternalSyntheticLambda0;->(Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer;)V +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer$$ExternalSyntheticLambda0;->execute()Ljava/lang/Object; +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer$$ExternalSyntheticLambda1; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer$$ExternalSyntheticLambda1;->(Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer;)V +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer$$ExternalSyntheticLambda1;->run()V +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer_Factory; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer_Factory;->(Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)V +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer_Factory;->create(Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer_Factory; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer_Factory;->get()Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer_Factory;->get()Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer_Factory;->newInstance(Ljava/util/concurrent/Executor;Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStore;Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkScheduler;Lcom/google/android/datatransport/runtime/synchronization/SynchronizationGuard;)Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkInitializer; +Lcom/google/android/datatransport/runtime/scheduling/jobscheduling/WorkScheduler; +Lcom/google/android/datatransport/runtime/scheduling/persistence/AutoValue_EventStoreConfig; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/AutoValue_EventStoreConfig;->(JIIJI)V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/AutoValue_EventStoreConfig;->(JIIJILcom/google/android/datatransport/runtime/scheduling/persistence/AutoValue_EventStoreConfig$1;)V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/AutoValue_EventStoreConfig;->getMaxBlobByteSizePerRow()I +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/AutoValue_EventStoreConfig;->getMaxStorageSizeInBytes()J +Lcom/google/android/datatransport/runtime/scheduling/persistence/AutoValue_EventStoreConfig$Builder; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/AutoValue_EventStoreConfig$Builder;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/AutoValue_EventStoreConfig$Builder;->build()Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/AutoValue_EventStoreConfig$Builder;->setCriticalSectionEnterTimeoutMs(I)Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig$Builder; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/AutoValue_EventStoreConfig$Builder;->setEventCleanUpAge(J)Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig$Builder; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/AutoValue_EventStoreConfig$Builder;->setLoadBatchSize(I)Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig$Builder; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/AutoValue_EventStoreConfig$Builder;->setMaxBlobByteSizePerRow(I)Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig$Builder; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/AutoValue_EventStoreConfig$Builder;->setMaxStorageSizeInBytes(J)Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig$Builder; +Lcom/google/android/datatransport/runtime/scheduling/persistence/AutoValue_PersistedEvent; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/AutoValue_PersistedEvent;->(JLcom/google/android/datatransport/runtime/TransportContext;Lcom/google/android/datatransport/runtime/EventInternal;)V +Lcom/google/android/datatransport/runtime/scheduling/persistence/ClientHealthMetricsStore; +Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStore; +Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig;->builder()Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig$Builder; +Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig$Builder; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig$Builder;->()V +Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule;->dbName()Ljava/lang/String; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule;->schemaVersion()I +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule;->storeConfig()Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig; +Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_DbNameFactory; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_DbNameFactory;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_DbNameFactory;->create()Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_DbNameFactory; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_DbNameFactory;->dbName()Ljava/lang/String; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_DbNameFactory;->get()Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_DbNameFactory;->get()Ljava/lang/String; +Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_DbNameFactory$InstanceHolder; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_DbNameFactory$InstanceHolder;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_DbNameFactory$InstanceHolder;->access$000()Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_DbNameFactory; +Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_PackageNameFactory; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_PackageNameFactory;->(Ljavax/inject/Provider;)V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_PackageNameFactory;->create(Ljavax/inject/Provider;)Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_PackageNameFactory; +Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_SchemaVersionFactory; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_SchemaVersionFactory;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_SchemaVersionFactory;->create()Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_SchemaVersionFactory; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_SchemaVersionFactory;->get()Ljava/lang/Integer; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_SchemaVersionFactory;->get()Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_SchemaVersionFactory;->schemaVersion()I +Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_SchemaVersionFactory$InstanceHolder; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_SchemaVersionFactory$InstanceHolder;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_SchemaVersionFactory$InstanceHolder;->access$000()Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_SchemaVersionFactory; +Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_StoreConfigFactory; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_StoreConfigFactory;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_StoreConfigFactory;->create()Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_StoreConfigFactory; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_StoreConfigFactory;->get()Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_StoreConfigFactory;->get()Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_StoreConfigFactory;->storeConfig()Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig; +Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_StoreConfigFactory$InstanceHolder; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_StoreConfigFactory$InstanceHolder;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_StoreConfigFactory$InstanceHolder;->access$000()Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreModule_StoreConfigFactory; +Lcom/google/android/datatransport/runtime/scheduling/persistence/PersistedEvent; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/PersistedEvent;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/PersistedEvent;->create(JLcom/google/android/datatransport/runtime/TransportContext;Lcom/google/android/datatransport/runtime/EventInternal;)Lcom/google/android/datatransport/runtime/scheduling/persistence/PersistedEvent; +Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->(Lcom/google/android/datatransport/runtime/time/Clock;Lcom/google/android/datatransport/runtime/time/Clock;Lcom/google/android/datatransport/runtime/scheduling/persistence/EventStoreConfig;Lcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager;Ljavax/inject/Provider;)V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->ensureBeginTransaction(Landroid/database/sqlite/SQLiteDatabase;)V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->ensureTransportContext(Landroid/database/sqlite/SQLiteDatabase;Lcom/google/android/datatransport/runtime/TransportContext;)J +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->getDb()Landroid/database/sqlite/SQLiteDatabase; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->getNextCallTime(Lcom/google/android/datatransport/runtime/TransportContext;)J +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->getPageCount()J +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->getPageSize()J +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->getTransportContextId(Landroid/database/sqlite/SQLiteDatabase;Lcom/google/android/datatransport/runtime/TransportContext;)Ljava/lang/Long; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->inTransaction(Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$Function;)Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->isStorageAtLimit()Z +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->lambda$ensureBeginTransaction$24(Landroid/database/sqlite/SQLiteDatabase;)Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->lambda$getNextCallTime$5(Landroid/database/Cursor;)Ljava/lang/Long; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->lambda$getTransportContextId$2(Landroid/database/Cursor;)Ljava/lang/Long; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->lambda$loadActiveContexts$10(Landroid/database/sqlite/SQLiteDatabase;)Ljava/util/List; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->lambda$loadActiveContexts$9(Landroid/database/Cursor;)Ljava/util/List; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->lambda$persist$1$com-google-android-datatransport-runtime-scheduling-persistence-SQLiteEventStore(Lcom/google/android/datatransport/runtime/EventInternal;Lcom/google/android/datatransport/runtime/TransportContext;Landroid/database/sqlite/SQLiteDatabase;)Ljava/lang/Long; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->loadActiveContexts()Ljava/lang/Iterable; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->persist(Lcom/google/android/datatransport/runtime/TransportContext;Lcom/google/android/datatransport/runtime/EventInternal;)Lcom/google/android/datatransport/runtime/scheduling/persistence/PersistedEvent; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->retryIfDbLocked(Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$Producer;Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$Function;)Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->runCriticalSection(Lcom/google/android/datatransport/runtime/synchronization/SynchronizationGuard$CriticalSection;)Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;->tryWithCursor(Landroid/database/Cursor;Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$Function;)Ljava/lang/Object; +Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda10; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda10;->(Landroid/database/sqlite/SQLiteDatabase;)V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda10;->produce()Ljava/lang/Object; +Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda12; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda12;->()V +Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda15; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda15;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda15;->apply(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda19; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda19;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda19;->apply(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda2; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda2;->(Lcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager;)V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda2;->produce()Ljava/lang/Object; +Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda24; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda24;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda24;->apply(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda27; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda27;->(Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore;Lcom/google/android/datatransport/runtime/EventInternal;Lcom/google/android/datatransport/runtime/TransportContext;)V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda27;->apply(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda3; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda3;->()V +Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda4; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda4;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$$ExternalSyntheticLambda4;->apply(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$Function; +Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore$Producer; +Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore_Factory; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore_Factory;->(Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore_Factory;->create(Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore_Factory; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore_Factory;->get()Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore_Factory;->get()Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore_Factory;->newInstance(Lcom/google/android/datatransport/runtime/time/Clock;Lcom/google/android/datatransport/runtime/time/Clock;Ljava/lang/Object;Ljava/lang/Object;Ljavax/inject/Provider;)Lcom/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore; +Lcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager;->()V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager;->(Landroid/content/Context;Ljava/lang/String;I)V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager;->ensureConfigured(Landroid/database/sqlite/SQLiteDatabase;)V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager;->onConfigure(Landroid/database/sqlite/SQLiteDatabase;)V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager;->onOpen(Landroid/database/sqlite/SQLiteDatabase;)V +Lcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager$$ExternalSyntheticLambda0; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager$$ExternalSyntheticLambda0;->()V +Lcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager$$ExternalSyntheticLambda1; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager$$ExternalSyntheticLambda1;->()V +Lcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager$$ExternalSyntheticLambda2; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager$$ExternalSyntheticLambda2;->()V +Lcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager$$ExternalSyntheticLambda3; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager$$ExternalSyntheticLambda3;->()V +Lcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager$$ExternalSyntheticLambda4; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager$$ExternalSyntheticLambda4;->()V +Lcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager$Migration; +Lcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager_Factory; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager_Factory;->(Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)V +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager_Factory;->create(Ljavax/inject/Provider;Ljavax/inject/Provider;Ljavax/inject/Provider;)Lcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager_Factory; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager_Factory;->get()Lcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager_Factory;->get()Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager_Factory;->newInstance(Landroid/content/Context;Ljava/lang/String;I)Lcom/google/android/datatransport/runtime/scheduling/persistence/SchemaManager; +Lcom/google/android/datatransport/runtime/synchronization/SynchronizationException; +Lcom/google/android/datatransport/runtime/synchronization/SynchronizationGuard; +Lcom/google/android/datatransport/runtime/synchronization/SynchronizationGuard$CriticalSection; +Lcom/google/android/datatransport/runtime/time/Clock; +Lcom/google/android/datatransport/runtime/time/TimeModule; +HSPLcom/google/android/datatransport/runtime/time/TimeModule;->eventClock()Lcom/google/android/datatransport/runtime/time/Clock; +HSPLcom/google/android/datatransport/runtime/time/TimeModule;->uptimeClock()Lcom/google/android/datatransport/runtime/time/Clock; +Lcom/google/android/datatransport/runtime/time/TimeModule_EventClockFactory; +HSPLcom/google/android/datatransport/runtime/time/TimeModule_EventClockFactory;->()V +HSPLcom/google/android/datatransport/runtime/time/TimeModule_EventClockFactory;->create()Lcom/google/android/datatransport/runtime/time/TimeModule_EventClockFactory; +HSPLcom/google/android/datatransport/runtime/time/TimeModule_EventClockFactory;->eventClock()Lcom/google/android/datatransport/runtime/time/Clock; +HSPLcom/google/android/datatransport/runtime/time/TimeModule_EventClockFactory;->get()Lcom/google/android/datatransport/runtime/time/Clock; +HSPLcom/google/android/datatransport/runtime/time/TimeModule_EventClockFactory;->get()Ljava/lang/Object; +Lcom/google/android/datatransport/runtime/time/TimeModule_EventClockFactory$InstanceHolder; +HSPLcom/google/android/datatransport/runtime/time/TimeModule_EventClockFactory$InstanceHolder;->()V +HSPLcom/google/android/datatransport/runtime/time/TimeModule_EventClockFactory$InstanceHolder;->access$000()Lcom/google/android/datatransport/runtime/time/TimeModule_EventClockFactory; +Lcom/google/android/datatransport/runtime/time/TimeModule_UptimeClockFactory; +HSPLcom/google/android/datatransport/runtime/time/TimeModule_UptimeClockFactory;->()V +HSPLcom/google/android/datatransport/runtime/time/TimeModule_UptimeClockFactory;->create()Lcom/google/android/datatransport/runtime/time/TimeModule_UptimeClockFactory; +HSPLcom/google/android/datatransport/runtime/time/TimeModule_UptimeClockFactory;->get()Lcom/google/android/datatransport/runtime/time/Clock; +HSPLcom/google/android/datatransport/runtime/time/TimeModule_UptimeClockFactory;->get()Ljava/lang/Object; +HSPLcom/google/android/datatransport/runtime/time/TimeModule_UptimeClockFactory;->uptimeClock()Lcom/google/android/datatransport/runtime/time/Clock; +Lcom/google/android/datatransport/runtime/time/TimeModule_UptimeClockFactory$InstanceHolder; +HSPLcom/google/android/datatransport/runtime/time/TimeModule_UptimeClockFactory$InstanceHolder;->()V +HSPLcom/google/android/datatransport/runtime/time/TimeModule_UptimeClockFactory$InstanceHolder;->access$000()Lcom/google/android/datatransport/runtime/time/TimeModule_UptimeClockFactory; +Lcom/google/android/datatransport/runtime/time/UptimeClock; +HSPLcom/google/android/datatransport/runtime/time/UptimeClock;->()V +HSPLcom/google/android/datatransport/runtime/time/UptimeClock;->getTime()J +Lcom/google/android/datatransport/runtime/time/WallTimeClock; +HSPLcom/google/android/datatransport/runtime/time/WallTimeClock;->()V +HSPLcom/google/android/datatransport/runtime/time/WallTimeClock;->getTime()J +Lcom/google/android/datatransport/runtime/util/PriorityMapping; +HSPLcom/google/android/datatransport/runtime/util/PriorityMapping;->()V +HSPLcom/google/android/datatransport/runtime/util/PriorityMapping;->toInt(Lcom/google/android/datatransport/Priority;)I +Lcom/google/android/gms/common/ConnectionResult; +HSPLcom/google/android/gms/common/ConnectionResult;->()V +HSPLcom/google/android/gms/common/ConnectionResult;->(I)V +HSPLcom/google/android/gms/common/ConnectionResult;->(IILandroid/app/PendingIntent;Ljava/lang/String;)V +HSPLcom/google/android/gms/common/ConnectionResult;->(ILandroid/app/PendingIntent;Ljava/lang/String;)V +HSPLcom/google/android/gms/common/ConnectionResult;->isSuccess()Z +Lcom/google/android/gms/common/Feature; +HSPLcom/google/android/gms/common/Feature;->()V +Lcom/google/android/gms/common/GoogleApiAvailability; +HSPLcom/google/android/gms/common/GoogleApiAvailability;->()V +HSPLcom/google/android/gms/common/GoogleApiAvailability;->()V +HSPLcom/google/android/gms/common/GoogleApiAvailability;->getInstance()Lcom/google/android/gms/common/GoogleApiAvailability; +HSPLcom/google/android/gms/common/GoogleApiAvailability;->isGooglePlayServicesAvailable(Landroid/content/Context;)I +HSPLcom/google/android/gms/common/GoogleApiAvailability;->isGooglePlayServicesAvailable(Landroid/content/Context;I)I +Lcom/google/android/gms/common/GoogleApiAvailabilityLight; +HSPLcom/google/android/gms/common/GoogleApiAvailabilityLight;->()V +HSPLcom/google/android/gms/common/GoogleApiAvailabilityLight;->()V +HSPLcom/google/android/gms/common/GoogleApiAvailabilityLight;->getInstance()Lcom/google/android/gms/common/GoogleApiAvailabilityLight; +HSPLcom/google/android/gms/common/GoogleApiAvailabilityLight;->isGooglePlayServicesAvailable(Landroid/content/Context;)I +HSPLcom/google/android/gms/common/GoogleApiAvailabilityLight;->isGooglePlayServicesAvailable(Landroid/content/Context;I)I +Lcom/google/android/gms/common/GooglePlayServicesUtilLight; +HSPLcom/google/android/gms/common/GooglePlayServicesUtilLight;->()V +HSPLcom/google/android/gms/common/GooglePlayServicesUtilLight;->isGooglePlayServicesAvailable(Landroid/content/Context;I)I +HSPLcom/google/android/gms/common/GooglePlayServicesUtilLight;->isPlayServicesPossiblyUpdating(Landroid/content/Context;I)Z +Lcom/google/android/gms/common/GoogleSignatureVerifier; +HSPLcom/google/android/gms/common/GoogleSignatureVerifier;->(Landroid/content/Context;)V +HSPLcom/google/android/gms/common/GoogleSignatureVerifier;->getInstance(Landroid/content/Context;)Lcom/google/android/gms/common/GoogleSignatureVerifier; +HSPLcom/google/android/gms/common/GoogleSignatureVerifier;->zza(Landroid/content/pm/PackageInfo;[Lcom/google/android/gms/common/zzj;)Lcom/google/android/gms/common/zzj; +HSPLcom/google/android/gms/common/GoogleSignatureVerifier;->zzb(Landroid/content/pm/PackageInfo;Z)Z +Lcom/google/android/gms/common/R$string; +Lcom/google/android/gms/common/api/Scope; +Lcom/google/android/gms/common/api/internal/BackgroundDetector; +HSPLcom/google/android/gms/common/api/internal/BackgroundDetector;->()V +HSPLcom/google/android/gms/common/api/internal/BackgroundDetector;->()V +HSPLcom/google/android/gms/common/api/internal/BackgroundDetector;->addListener(Lcom/google/android/gms/common/api/internal/BackgroundDetector$BackgroundStateChangeListener;)V +HSPLcom/google/android/gms/common/api/internal/BackgroundDetector;->getInstance()Lcom/google/android/gms/common/api/internal/BackgroundDetector; +HSPLcom/google/android/gms/common/api/internal/BackgroundDetector;->initialize(Landroid/app/Application;)V +HSPLcom/google/android/gms/common/api/internal/BackgroundDetector;->onActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V +HSPLcom/google/android/gms/common/api/internal/BackgroundDetector;->onActivityResumed(Landroid/app/Activity;)V +HSPLcom/google/android/gms/common/api/internal/BackgroundDetector;->onActivityStarted(Landroid/app/Activity;)V +Lcom/google/android/gms/common/api/internal/BackgroundDetector$BackgroundStateChangeListener; +Lcom/google/android/gms/common/internal/BaseGmsClient; +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->()V +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->(Landroid/content/Context;Landroid/os/Looper;ILcom/google/android/gms/common/internal/BaseGmsClient$BaseConnectionCallbacks;Lcom/google/android/gms/common/internal/BaseGmsClient$BaseOnConnectionFailedListener;Ljava/lang/String;)V +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->(Landroid/content/Context;Landroid/os/Looper;Lcom/google/android/gms/common/internal/GmsClientSupervisor;Lcom/google/android/gms/common/GoogleApiAvailabilityLight;ILcom/google/android/gms/common/internal/BaseGmsClient$BaseConnectionCallbacks;Lcom/google/android/gms/common/internal/BaseGmsClient$BaseOnConnectionFailedListener;Ljava/lang/String;)V +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->checkAvailabilityAndConnect()V +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->checkConnected()V +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->connect(Lcom/google/android/gms/common/internal/BaseGmsClient$ConnectionProgressReportCallbacks;)V +PLcom/google/android/gms/common/internal/BaseGmsClient;->disconnect()V +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->getApiFeatures()[Lcom/google/android/gms/common/Feature; +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->getBindServiceExecutor()Ljava/util/concurrent/Executor; +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->getConnectionHint()Landroid/os/Bundle; +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->getGetServiceRequestExtraArgs()Landroid/os/Bundle; +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->getRemoteService(Lcom/google/android/gms/common/internal/IAccountAccessor;Ljava/util/Set;)V +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->getScopes()Ljava/util/Set; +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->getService()Landroid/os/IInterface; +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->getStartServicePackage()Ljava/lang/String; +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->getUseDynamicLookup()Z +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->isConnected()Z +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->isConnecting()Z +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->onConnectedLocked(Landroid/os/IInterface;)V +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->onPostInitHandler(ILandroid/os/IBinder;Landroid/os/Bundle;I)V +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->requiresAccount()Z +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->requiresSignIn()Z +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->usesClientTelemetry()Z +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->zzb(Lcom/google/android/gms/common/internal/BaseGmsClient;)Lcom/google/android/gms/common/internal/BaseGmsClient$BaseConnectionCallbacks; +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->zzd(Lcom/google/android/gms/common/internal/BaseGmsClient;)Ljava/lang/Object; +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->zze()Ljava/lang/String; +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->zzf(Lcom/google/android/gms/common/internal/BaseGmsClient;)Ljava/util/ArrayList; +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->zzg(Lcom/google/android/gms/common/internal/BaseGmsClient;Lcom/google/android/gms/common/ConnectionResult;)V +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->zzh(Lcom/google/android/gms/common/internal/BaseGmsClient;Lcom/google/android/gms/common/internal/IGmsServiceBroker;)V +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->zzj(Lcom/google/android/gms/common/internal/BaseGmsClient;Lcom/google/android/gms/common/internal/zzj;)V +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->zzl(ILandroid/os/Bundle;I)V +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->zzn(Lcom/google/android/gms/common/internal/BaseGmsClient;IILandroid/os/IInterface;)Z +HSPLcom/google/android/gms/common/internal/BaseGmsClient;->zzp(ILandroid/os/IInterface;)V +Lcom/google/android/gms/common/internal/BaseGmsClient$BaseConnectionCallbacks; +Lcom/google/android/gms/common/internal/BaseGmsClient$BaseOnConnectionFailedListener; +Lcom/google/android/gms/common/internal/BaseGmsClient$ConnectionProgressReportCallbacks; +Lcom/google/android/gms/common/internal/BaseGmsClient$LegacyClientCallbackAdapter; +HSPLcom/google/android/gms/common/internal/BaseGmsClient$LegacyClientCallbackAdapter;->(Lcom/google/android/gms/common/internal/BaseGmsClient;)V +HSPLcom/google/android/gms/common/internal/BaseGmsClient$LegacyClientCallbackAdapter;->onReportServiceBinding(Lcom/google/android/gms/common/ConnectionResult;)V +Lcom/google/android/gms/common/internal/ConnectionTelemetryConfiguration; +Lcom/google/android/gms/common/internal/GetServiceRequest; +HSPLcom/google/android/gms/common/internal/GetServiceRequest;->()V +HSPLcom/google/android/gms/common/internal/GetServiceRequest;->(IIILjava/lang/String;Landroid/os/IBinder;[Lcom/google/android/gms/common/api/Scope;Landroid/os/Bundle;Landroid/accounts/Account;[Lcom/google/android/gms/common/Feature;[Lcom/google/android/gms/common/Feature;ZIZLjava/lang/String;)V +HSPLcom/google/android/gms/common/internal/GetServiceRequest;->zza()Ljava/lang/String; +Lcom/google/android/gms/common/internal/GmsClientSupervisor; +HSPLcom/google/android/gms/common/internal/GmsClientSupervisor;->()V +HSPLcom/google/android/gms/common/internal/GmsClientSupervisor;->()V +HSPLcom/google/android/gms/common/internal/GmsClientSupervisor;->getDefaultBindFlags()I +HSPLcom/google/android/gms/common/internal/GmsClientSupervisor;->getInstance(Landroid/content/Context;)Lcom/google/android/gms/common/internal/GmsClientSupervisor; +PLcom/google/android/gms/common/internal/GmsClientSupervisor;->zzb(Ljava/lang/String;Ljava/lang/String;ILandroid/content/ServiceConnection;Ljava/lang/String;Z)V +Lcom/google/android/gms/common/internal/IGmsCallbacks; +Lcom/google/android/gms/common/internal/IGmsServiceBroker; +Lcom/google/android/gms/common/internal/Objects; +HSPLcom/google/android/gms/common/internal/Objects;->equal(Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLcom/google/android/gms/common/internal/Objects;->hashCode([Ljava/lang/Object;)I +Lcom/google/android/gms/common/internal/Preconditions; +HSPLcom/google/android/gms/common/internal/Preconditions;->checkArgument(Z)V +HSPLcom/google/android/gms/common/internal/Preconditions;->checkMainThread(Ljava/lang/String;)V +HSPLcom/google/android/gms/common/internal/Preconditions;->checkNotEmpty(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/google/android/gms/common/internal/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/android/gms/common/internal/Preconditions;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/android/gms/common/internal/Preconditions;->checkState(Z)V +HSPLcom/google/android/gms/common/internal/Preconditions;->checkState(ZLjava/lang/Object;)V +Lcom/google/android/gms/common/internal/ReflectedParcelable; +Lcom/google/android/gms/common/internal/StringResourceValueReader; +HSPLcom/google/android/gms/common/internal/StringResourceValueReader;->(Landroid/content/Context;)V +HSPLcom/google/android/gms/common/internal/StringResourceValueReader;->getString(Ljava/lang/String;)Ljava/lang/String; +Lcom/google/android/gms/common/internal/safeparcel/AbstractSafeParcelable; +HSPLcom/google/android/gms/common/internal/safeparcel/AbstractSafeParcelable;->()V +Lcom/google/android/gms/common/internal/safeparcel/SafeParcelReader; +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelReader;->createTypedArray(Landroid/os/Parcel;ILandroid/os/Parcelable$Creator;)[Ljava/lang/Object; +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelReader;->ensureAtEnd(Landroid/os/Parcel;I)V +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelReader;->getFieldId(I)I +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelReader;->readHeader(Landroid/os/Parcel;)I +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelReader;->readInt(Landroid/os/Parcel;I)I +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelReader;->readSize(Landroid/os/Parcel;I)I +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelReader;->validateObjectHeader(Landroid/os/Parcel;)I +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelReader;->zzb(Landroid/os/Parcel;II)V +Lcom/google/android/gms/common/internal/safeparcel/SafeParcelReader$ParseException; +Lcom/google/android/gms/common/internal/safeparcel/SafeParcelWriter; +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelWriter;->beginObjectHeader(Landroid/os/Parcel;)I +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelWriter;->finishObjectHeader(Landroid/os/Parcel;I)V +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelWriter;->writeBoolean(Landroid/os/Parcel;IZ)V +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelWriter;->writeBooleanObject(Landroid/os/Parcel;ILjava/lang/Boolean;Z)V +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelWriter;->writeBundle(Landroid/os/Parcel;ILandroid/os/Bundle;Z)V +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelWriter;->writeIBinder(Landroid/os/Parcel;ILandroid/os/IBinder;Z)V +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelWriter;->writeInt(Landroid/os/Parcel;II)V +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelWriter;->writeLong(Landroid/os/Parcel;IJ)V +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelWriter;->writeParcelable(Landroid/os/Parcel;ILandroid/os/Parcelable;IZ)V +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelWriter;->writeString(Landroid/os/Parcel;ILjava/lang/String;Z)V +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelWriter;->writeStringList(Landroid/os/Parcel;ILjava/util/List;Z)V +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelWriter;->writeTypedArray(Landroid/os/Parcel;I[Landroid/os/Parcelable;IZ)V +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelWriter;->zza(Landroid/os/Parcel;I)I +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelWriter;->zzb(Landroid/os/Parcel;I)V +HSPLcom/google/android/gms/common/internal/safeparcel/SafeParcelWriter;->zzc(Landroid/os/Parcel;II)V +Lcom/google/android/gms/common/internal/safeparcel/SafeParcelable; +Lcom/google/android/gms/common/internal/zza; +HSPLcom/google/android/gms/common/internal/zza;->(Lcom/google/android/gms/common/internal/BaseGmsClient;ILandroid/os/Bundle;)V +HSPLcom/google/android/gms/common/internal/zza;->zza(Ljava/lang/Object;)V +Lcom/google/android/gms/common/internal/zzab; +HSPLcom/google/android/gms/common/internal/zzab;->()V +HSPLcom/google/android/gms/common/internal/zzab;->zza(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +Lcom/google/android/gms/common/internal/zzac; +HSPLcom/google/android/gms/common/internal/zzac;->(Landroid/os/IBinder;)V +HSPLcom/google/android/gms/common/internal/zzac;->getService(Lcom/google/android/gms/common/internal/IGmsCallbacks;Lcom/google/android/gms/common/internal/GetServiceRequest;)V +Lcom/google/android/gms/common/internal/zzag; +HSPLcom/google/android/gms/common/internal/zzag;->()V +HSPLcom/google/android/gms/common/internal/zzag;->zza(Landroid/content/Context;)I +HSPLcom/google/android/gms/common/internal/zzag;->zzc(Landroid/content/Context;)V +Lcom/google/android/gms/common/internal/zzb; +HSPLcom/google/android/gms/common/internal/zzb;->(Lcom/google/android/gms/common/internal/BaseGmsClient;Landroid/os/Looper;)V +HSPLcom/google/android/gms/common/internal/zzb;->handleMessage(Landroid/os/Message;)V +HSPLcom/google/android/gms/common/internal/zzb;->zzb(Landroid/os/Message;)Z +Lcom/google/android/gms/common/internal/zzc; +HSPLcom/google/android/gms/common/internal/zzc;->(Lcom/google/android/gms/common/internal/BaseGmsClient;Ljava/lang/Object;)V +HSPLcom/google/android/gms/common/internal/zzc;->zze()V +HSPLcom/google/android/gms/common/internal/zzc;->zzf()V +HSPLcom/google/android/gms/common/internal/zzc;->zzg()V +Lcom/google/android/gms/common/internal/zzd; +HSPLcom/google/android/gms/common/internal/zzd;->(Lcom/google/android/gms/common/internal/BaseGmsClient;I)V +HSPLcom/google/android/gms/common/internal/zzd;->onPostInitComplete(ILandroid/os/IBinder;Landroid/os/Bundle;)V +HSPLcom/google/android/gms/common/internal/zzd;->zzc(ILandroid/os/IBinder;Lcom/google/android/gms/common/internal/zzj;)V +Lcom/google/android/gms/common/internal/zze; +HSPLcom/google/android/gms/common/internal/zze;->(Lcom/google/android/gms/common/internal/BaseGmsClient;I)V +HSPLcom/google/android/gms/common/internal/zze;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +Lcom/google/android/gms/common/internal/zzf; +HSPLcom/google/android/gms/common/internal/zzf;->(Lcom/google/android/gms/common/internal/BaseGmsClient;ILandroid/os/IBinder;Landroid/os/Bundle;)V +HSPLcom/google/android/gms/common/internal/zzf;->zzd()Z +Lcom/google/android/gms/common/internal/zzg; +HSPLcom/google/android/gms/common/internal/zzg;->(Lcom/google/android/gms/common/internal/BaseGmsClient;ILandroid/os/Bundle;)V +HSPLcom/google/android/gms/common/internal/zzg;->zzd()Z +Lcom/google/android/gms/common/internal/zzj; +HSPLcom/google/android/gms/common/internal/zzj;->()V +HSPLcom/google/android/gms/common/internal/zzj;->(Landroid/os/Bundle;[Lcom/google/android/gms/common/Feature;ILcom/google/android/gms/common/internal/ConnectionTelemetryConfiguration;)V +Lcom/google/android/gms/common/internal/zzk; +HSPLcom/google/android/gms/common/internal/zzk;->()V +HSPLcom/google/android/gms/common/internal/zzk;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +Lcom/google/android/gms/common/internal/zzm; +HSPLcom/google/android/gms/common/internal/zzm;->()V +HSPLcom/google/android/gms/common/internal/zzm;->zza(Lcom/google/android/gms/common/internal/GetServiceRequest;Landroid/os/Parcel;I)V +Lcom/google/android/gms/common/internal/zzn; +HSPLcom/google/android/gms/common/internal/zzn;->()V +HSPLcom/google/android/gms/common/internal/zzn;->(Ljava/lang/String;Ljava/lang/String;IZ)V +PLcom/google/android/gms/common/internal/zzn;->equals(Ljava/lang/Object;)Z +HSPLcom/google/android/gms/common/internal/zzn;->hashCode()I +HSPLcom/google/android/gms/common/internal/zzn;->zza()I +HSPLcom/google/android/gms/common/internal/zzn;->zzc(Landroid/content/Context;)Landroid/content/Intent; +Lcom/google/android/gms/common/internal/zzo; +HSPLcom/google/android/gms/common/internal/zzo;->(Lcom/google/android/gms/common/internal/zzr;Lcom/google/android/gms/common/internal/zzn;)V +HSPLcom/google/android/gms/common/internal/zzo;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +HSPLcom/google/android/gms/common/internal/zzo;->zzd(Landroid/content/ServiceConnection;Landroid/content/ServiceConnection;Ljava/lang/String;)V +HSPLcom/google/android/gms/common/internal/zzo;->zze(Ljava/lang/String;Ljava/util/concurrent/Executor;)V +PLcom/google/android/gms/common/internal/zzo;->zzf(Landroid/content/ServiceConnection;Ljava/lang/String;)V +PLcom/google/android/gms/common/internal/zzo;->zzh(Landroid/content/ServiceConnection;)Z +PLcom/google/android/gms/common/internal/zzo;->zzi()Z +HSPLcom/google/android/gms/common/internal/zzo;->zzj()Z +Lcom/google/android/gms/common/internal/zzq; +HSPLcom/google/android/gms/common/internal/zzq;->(Lcom/google/android/gms/common/internal/zzr;Lcom/google/android/gms/common/internal/zzp;)V +Lcom/google/android/gms/common/internal/zzr; +HSPLcom/google/android/gms/common/internal/zzr;->(Landroid/content/Context;Landroid/os/Looper;)V +PLcom/google/android/gms/common/internal/zzr;->zza(Lcom/google/android/gms/common/internal/zzn;Landroid/content/ServiceConnection;Ljava/lang/String;)V +HSPLcom/google/android/gms/common/internal/zzr;->zzc(Lcom/google/android/gms/common/internal/zzn;Landroid/content/ServiceConnection;Ljava/lang/String;Ljava/util/concurrent/Executor;)Z +HSPLcom/google/android/gms/common/internal/zzr;->zzd(Lcom/google/android/gms/common/internal/zzr;)J +HSPLcom/google/android/gms/common/internal/zzr;->zze(Lcom/google/android/gms/common/internal/zzr;)Landroid/content/Context; +HSPLcom/google/android/gms/common/internal/zzr;->zzf(Lcom/google/android/gms/common/internal/zzr;)Landroid/os/Handler; +HSPLcom/google/android/gms/common/internal/zzr;->zzg(Lcom/google/android/gms/common/internal/zzr;)Lcom/google/android/gms/common/stats/ConnectionTracker; +HSPLcom/google/android/gms/common/internal/zzr;->zzh(Lcom/google/android/gms/common/internal/zzr;)Ljava/util/HashMap; +Lcom/google/android/gms/common/internal/zzs; +Lcom/google/android/gms/common/internal/zzu; +HSPLcom/google/android/gms/common/internal/zzu;->(Ljava/lang/String;Ljava/lang/String;ZIZ)V +HSPLcom/google/android/gms/common/internal/zzu;->zza()I +HSPLcom/google/android/gms/common/internal/zzu;->zzb()Ljava/lang/String; +HSPLcom/google/android/gms/common/internal/zzu;->zzc()Ljava/lang/String; +HSPLcom/google/android/gms/common/internal/zzu;->zzd()Z +Lcom/google/android/gms/common/internal/zzy; +HSPLcom/google/android/gms/common/internal/zzy;->()V +Lcom/google/android/gms/common/internal/zzz; +Lcom/google/android/gms/common/stats/ConnectionTracker; +HSPLcom/google/android/gms/common/stats/ConnectionTracker;->()V +HSPLcom/google/android/gms/common/stats/ConnectionTracker;->()V +HSPLcom/google/android/gms/common/stats/ConnectionTracker;->getInstance()Lcom/google/android/gms/common/stats/ConnectionTracker; +PLcom/google/android/gms/common/stats/ConnectionTracker;->unbindService(Landroid/content/Context;Landroid/content/ServiceConnection;)V +HSPLcom/google/android/gms/common/stats/ConnectionTracker;->zza(Landroid/content/Context;Ljava/lang/String;Landroid/content/Intent;Landroid/content/ServiceConnection;ILjava/util/concurrent/Executor;)Z +PLcom/google/android/gms/common/stats/ConnectionTracker;->zzb(Landroid/content/Context;Landroid/content/ServiceConnection;)V +HSPLcom/google/android/gms/common/stats/ConnectionTracker;->zzc(Landroid/content/Context;Ljava/lang/String;Landroid/content/Intent;Landroid/content/ServiceConnection;IZLjava/util/concurrent/Executor;)Z +HSPLcom/google/android/gms/common/stats/ConnectionTracker;->zzd(Landroid/content/ServiceConnection;)Z +HSPLcom/google/android/gms/common/stats/ConnectionTracker;->zze(Landroid/content/Context;Landroid/content/Intent;Landroid/content/ServiceConnection;ILjava/util/concurrent/Executor;)Z +Lcom/google/android/gms/common/util/Base64Utils; +HSPLcom/google/android/gms/common/util/Base64Utils;->encodeUrlSafeNoPadding([B)Ljava/lang/String; +Lcom/google/android/gms/common/util/Clock; +Lcom/google/android/gms/common/util/DefaultClock; +HSPLcom/google/android/gms/common/util/DefaultClock;->()V +HSPLcom/google/android/gms/common/util/DefaultClock;->()V +HSPLcom/google/android/gms/common/util/DefaultClock;->currentTimeMillis()J +HSPLcom/google/android/gms/common/util/DefaultClock;->elapsedRealtime()J +HSPLcom/google/android/gms/common/util/DefaultClock;->getInstance()Lcom/google/android/gms/common/util/Clock; +Lcom/google/android/gms/common/util/DeviceProperties; +HSPLcom/google/android/gms/common/util/DeviceProperties;->isWearable(Landroid/content/Context;)Z +HSPLcom/google/android/gms/common/util/DeviceProperties;->isWearableWithoutPlayStore(Landroid/content/Context;)Z +HSPLcom/google/android/gms/common/util/DeviceProperties;->zza(Landroid/content/Context;)Z +HSPLcom/google/android/gms/common/util/DeviceProperties;->zzb(Landroid/content/Context;)Z +Lcom/google/android/gms/common/util/PlatformVersion; +HSPLcom/google/android/gms/common/util/PlatformVersion;->isAtLeastIceCreamSandwich()Z +HSPLcom/google/android/gms/common/util/PlatformVersion;->isAtLeastKitKatWatch()Z +HSPLcom/google/android/gms/common/util/PlatformVersion;->isAtLeastLollipop()Z +HSPLcom/google/android/gms/common/util/PlatformVersion;->isAtLeastO()Z +HSPLcom/google/android/gms/common/util/PlatformVersion;->isAtLeastQ()Z +HSPLcom/google/android/gms/common/util/PlatformVersion;->isAtLeastS()Z +Lcom/google/android/gms/common/util/Strings; +HSPLcom/google/android/gms/common/util/Strings;->()V +HSPLcom/google/android/gms/common/util/Strings;->isEmptyOrWhitespace(Ljava/lang/String;)Z +Lcom/google/android/gms/common/util/zza; +HSPLcom/google/android/gms/common/util/zza;->zza(I)I +Lcom/google/android/gms/common/util/zzb; +HSPLcom/google/android/gms/common/util/zzb;->zza()Z +Lcom/google/android/gms/common/wrappers/InstantApps; +HSPLcom/google/android/gms/common/wrappers/InstantApps;->isInstantApp(Landroid/content/Context;)Z +Lcom/google/android/gms/common/wrappers/PackageManagerWrapper; +HSPLcom/google/android/gms/common/wrappers/PackageManagerWrapper;->(Landroid/content/Context;)V +HSPLcom/google/android/gms/common/wrappers/PackageManagerWrapper;->checkCallingOrSelfPermission(Ljava/lang/String;)I +HSPLcom/google/android/gms/common/wrappers/PackageManagerWrapper;->getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo; +HSPLcom/google/android/gms/common/wrappers/PackageManagerWrapper;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo; +HSPLcom/google/android/gms/common/wrappers/PackageManagerWrapper;->isCallerInstantApp()Z +Lcom/google/android/gms/common/wrappers/Wrappers; +HSPLcom/google/android/gms/common/wrappers/Wrappers;->()V +HSPLcom/google/android/gms/common/wrappers/Wrappers;->()V +HSPLcom/google/android/gms/common/wrappers/Wrappers;->packageManager(Landroid/content/Context;)Lcom/google/android/gms/common/wrappers/PackageManagerWrapper; +HSPLcom/google/android/gms/common/wrappers/Wrappers;->zza(Landroid/content/Context;)Lcom/google/android/gms/common/wrappers/PackageManagerWrapper; +Lcom/google/android/gms/common/zzb; +HSPLcom/google/android/gms/common/zzb;->()V +Lcom/google/android/gms/common/zzc; +HSPLcom/google/android/gms/common/zzc;->()V +HSPLcom/google/android/gms/common/zzc;->newArray(I)[Ljava/lang/Object; +Lcom/google/android/gms/common/zzf; +HSPLcom/google/android/gms/common/zzf;->([B)V +Lcom/google/android/gms/common/zzg; +HSPLcom/google/android/gms/common/zzg;->([B)V +Lcom/google/android/gms/common/zzh; +HSPLcom/google/android/gms/common/zzh;->([B)V +HSPLcom/google/android/gms/common/zzh;->zzb()[B +Lcom/google/android/gms/common/zzi; +HSPLcom/google/android/gms/common/zzi;->([B)V +Lcom/google/android/gms/common/zzj; +HSPLcom/google/android/gms/common/zzj;->([B)V +HSPLcom/google/android/gms/common/zzj;->equals(Ljava/lang/Object;)Z +HSPLcom/google/android/gms/common/zzj;->zzc()I +HSPLcom/google/android/gms/common/zzj;->zzd()Lcom/google/android/gms/dynamic/IObjectWrapper; +HSPLcom/google/android/gms/common/zzj;->zze(Ljava/lang/String;)[B +Lcom/google/android/gms/common/zzk; +HSPLcom/google/android/gms/common/zzk;->([B)V +HSPLcom/google/android/gms/common/zzk;->zzf()[B +Lcom/google/android/gms/common/zzl; +HSPLcom/google/android/gms/common/zzl;->()V +HSPLcom/google/android/gms/common/zzl;->([B)V +HSPLcom/google/android/gms/common/zzl;->zzf()[B +Lcom/google/android/gms/common/zzm; +HSPLcom/google/android/gms/common/zzm;->()V +Lcom/google/android/gms/common/zzn; +HSPLcom/google/android/gms/common/zzn;->()V +HSPLcom/google/android/gms/common/zzn;->zze(Landroid/content/Context;)V +Lcom/google/android/gms/dynamic/IObjectWrapper; +Lcom/google/android/gms/dynamic/IObjectWrapper$Stub; +HSPLcom/google/android/gms/dynamic/IObjectWrapper$Stub;->()V +Lcom/google/android/gms/dynamic/ObjectWrapper; +HSPLcom/google/android/gms/dynamic/ObjectWrapper;->(Ljava/lang/Object;)V +HSPLcom/google/android/gms/dynamic/ObjectWrapper;->unwrap(Lcom/google/android/gms/dynamic/IObjectWrapper;)Ljava/lang/Object; +HSPLcom/google/android/gms/dynamic/ObjectWrapper;->wrap(Ljava/lang/Object;)Lcom/google/android/gms/dynamic/IObjectWrapper; +Lcom/google/android/gms/dynamite/DynamiteModule; +HSPLcom/google/android/gms/dynamite/DynamiteModule;->()V +HSPLcom/google/android/gms/dynamite/DynamiteModule;->(Landroid/content/Context;)V +HSPLcom/google/android/gms/dynamite/DynamiteModule;->getLocalVersion(Landroid/content/Context;Ljava/lang/String;)I +HSPLcom/google/android/gms/dynamite/DynamiteModule;->getRemoteVersion(Landroid/content/Context;Ljava/lang/String;)I +HSPLcom/google/android/gms/dynamite/DynamiteModule;->instantiate(Ljava/lang/String;)Landroid/os/IBinder; +HSPLcom/google/android/gms/dynamite/DynamiteModule;->load(Landroid/content/Context;Lcom/google/android/gms/dynamite/DynamiteModule$VersionPolicy;Ljava/lang/String;)Lcom/google/android/gms/dynamite/DynamiteModule; +HSPLcom/google/android/gms/dynamite/DynamiteModule;->zza(Landroid/content/Context;Ljava/lang/String;Z)I +HSPLcom/google/android/gms/dynamite/DynamiteModule;->zzb(Landroid/content/Context;Ljava/lang/String;ZZ)I +HSPLcom/google/android/gms/dynamite/DynamiteModule;->zzc(Landroid/content/Context;Ljava/lang/String;)Lcom/google/android/gms/dynamite/DynamiteModule; +HSPLcom/google/android/gms/dynamite/DynamiteModule;->zzd(Ljava/lang/ClassLoader;)V +HSPLcom/google/android/gms/dynamite/DynamiteModule;->zze(Landroid/database/Cursor;)Z +HSPLcom/google/android/gms/dynamite/DynamiteModule;->zzf(Landroid/content/Context;)Z +Lcom/google/android/gms/dynamite/DynamiteModule$DynamiteLoaderClassLoader; +Lcom/google/android/gms/dynamite/DynamiteModule$LoadingException; +Lcom/google/android/gms/dynamite/DynamiteModule$VersionPolicy; +Lcom/google/android/gms/dynamite/DynamiteModule$VersionPolicy$IVersions; +Lcom/google/android/gms/dynamite/DynamiteModule$VersionPolicy$SelectionResult; +HSPLcom/google/android/gms/dynamite/DynamiteModule$VersionPolicy$SelectionResult;->()V +Lcom/google/android/gms/dynamite/descriptors/com/google/android/gms/measurement/dynamite/ModuleDescriptor; +Lcom/google/android/gms/dynamite/zza; +HSPLcom/google/android/gms/dynamite/zza;->(Ljava/lang/ThreadGroup;Ljava/lang/String;)V +HSPLcom/google/android/gms/dynamite/zza;->run()V +Lcom/google/android/gms/dynamite/zzb; +HSPLcom/google/android/gms/dynamite/zzb;->()V +HSPLcom/google/android/gms/dynamite/zzb;->zza()Ljava/lang/ClassLoader; +HSPLcom/google/android/gms/dynamite/zzb;->zzb()Ljava/lang/ClassLoader; +HSPLcom/google/android/gms/dynamite/zzb;->zzc()Ljava/lang/Thread; +Lcom/google/android/gms/dynamite/zzd; +HSPLcom/google/android/gms/dynamite/zzd;->()V +HSPLcom/google/android/gms/dynamite/zzd;->initialValue()Ljava/lang/Object; +Lcom/google/android/gms/dynamite/zze; +HSPLcom/google/android/gms/dynamite/zze;->()V +HSPLcom/google/android/gms/dynamite/zze;->zza(Landroid/content/Context;Ljava/lang/String;)I +HSPLcom/google/android/gms/dynamite/zze;->zzb(Landroid/content/Context;Ljava/lang/String;Z)I +Lcom/google/android/gms/dynamite/zzf; +HSPLcom/google/android/gms/dynamite/zzf;->()V +Lcom/google/android/gms/dynamite/zzg; +HSPLcom/google/android/gms/dynamite/zzg;->()V +Lcom/google/android/gms/dynamite/zzh; +HSPLcom/google/android/gms/dynamite/zzh;->()V +Lcom/google/android/gms/dynamite/zzi; +HSPLcom/google/android/gms/dynamite/zzi;->()V +HSPLcom/google/android/gms/dynamite/zzi;->selectModule(Landroid/content/Context;Ljava/lang/String;Lcom/google/android/gms/dynamite/DynamiteModule$VersionPolicy$IVersions;)Lcom/google/android/gms/dynamite/DynamiteModule$VersionPolicy$SelectionResult; +Lcom/google/android/gms/dynamite/zzj; +HSPLcom/google/android/gms/dynamite/zzj;->()V +Lcom/google/android/gms/dynamite/zzk; +HSPLcom/google/android/gms/dynamite/zzk;->()V +Lcom/google/android/gms/dynamite/zzl; +HSPLcom/google/android/gms/dynamite/zzl;->()V +Lcom/google/android/gms/dynamite/zzn; +HSPLcom/google/android/gms/dynamite/zzn;->(Lcom/google/android/gms/dynamite/zzm;)V +Lcom/google/android/gms/dynamite/zzr; +HSPLcom/google/android/gms/dynamite/zzr;->(Landroid/os/IBinder;)V +Lcom/google/android/gms/internal/common/zza; +HSPLcom/google/android/gms/internal/common/zza;->(Landroid/os/IBinder;Ljava/lang/String;)V +Lcom/google/android/gms/internal/common/zzb; +HSPLcom/google/android/gms/internal/common/zzb;->(Ljava/lang/String;)V +HSPLcom/google/android/gms/internal/common/zzb;->asBinder()Landroid/os/IBinder; +HSPLcom/google/android/gms/internal/common/zzb;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +Lcom/google/android/gms/internal/common/zzc; +HSPLcom/google/android/gms/internal/common/zzc;->()V +HSPLcom/google/android/gms/internal/common/zzc;->zza(Landroid/os/Parcel;Landroid/os/Parcelable$Creator;)Landroid/os/Parcelable; +HSPLcom/google/android/gms/internal/common/zzc;->zzb(Landroid/os/Parcel;)V +Lcom/google/android/gms/internal/common/zzi; +HSPLcom/google/android/gms/internal/common/zzi;->(Landroid/os/Looper;)V +HSPLcom/google/android/gms/internal/common/zzi;->(Landroid/os/Looper;Landroid/os/Handler$Callback;)V +Lcom/google/android/gms/internal/measurement/zzbu; +HSPLcom/google/android/gms/internal/measurement/zzbu;->(Landroid/os/IBinder;Ljava/lang/String;)V +HSPLcom/google/android/gms/internal/measurement/zzbu;->a_()Landroid/os/Parcel; +HSPLcom/google/android/gms/internal/measurement/zzbu;->zza(ILandroid/os/Parcel;)Landroid/os/Parcel; +HSPLcom/google/android/gms/internal/measurement/zzbu;->zzb(ILandroid/os/Parcel;)V +Lcom/google/android/gms/internal/measurement/zzbw; +HSPLcom/google/android/gms/internal/measurement/zzbw;->()V +HSPLcom/google/android/gms/internal/measurement/zzbw;->zza(Landroid/os/Parcel;Landroid/os/Parcelable;)V +Lcom/google/android/gms/internal/measurement/zzbx; +HSPLcom/google/android/gms/internal/measurement/zzbx;->()V +HSPLcom/google/android/gms/internal/measurement/zzbx;->(Ljava/lang/String;)V +Lcom/google/android/gms/internal/measurement/zzch; +HSPLcom/google/android/gms/internal/measurement/zzch;->()V +HSPLcom/google/android/gms/internal/measurement/zzch;->zza()Lcom/google/android/gms/internal/measurement/zzci; +Lcom/google/android/gms/internal/measurement/zzci; +Lcom/google/android/gms/internal/measurement/zzck; +HSPLcom/google/android/gms/internal/measurement/zzck;->()V +HSPLcom/google/android/gms/internal/measurement/zzck;->(Lcom/google/android/gms/internal/measurement/zzcj;)V +HSPLcom/google/android/gms/internal/measurement/zzck;->zza(Ljava/util/concurrent/ThreadFactory;I)Ljava/util/concurrent/ExecutorService; +Lcom/google/android/gms/internal/measurement/zzcl; +HSPLcom/google/android/gms/internal/measurement/zzcl;->zza()Lcom/google/android/gms/internal/measurement/zzcm; +Lcom/google/android/gms/internal/measurement/zzcm; +Lcom/google/android/gms/internal/measurement/zzcn; +HSPLcom/google/android/gms/internal/measurement/zzcn;->()V +HSPLcom/google/android/gms/internal/measurement/zzcn;->zza(Ljava/lang/Runnable;)Ljava/lang/Runnable; +Lcom/google/android/gms/internal/measurement/zzco; +HSPLcom/google/android/gms/internal/measurement/zzco;->()V +HSPLcom/google/android/gms/internal/measurement/zzco;->zza()Lcom/google/android/gms/internal/measurement/zzcm; +Lcom/google/android/gms/internal/measurement/zzcp; +HSPLcom/google/android/gms/internal/measurement/zzcp;->()V +HSPLcom/google/android/gms/internal/measurement/zzcp;->(Landroid/os/Looper;)V +Lcom/google/android/gms/internal/measurement/zzcq; +HSPLcom/google/android/gms/internal/measurement/zzcq;->()V +Lcom/google/android/gms/internal/measurement/zzct; +HSPLcom/google/android/gms/internal/measurement/zzct;->()V +HSPLcom/google/android/gms/internal/measurement/zzct;->asInterface(Landroid/os/IBinder;)Lcom/google/android/gms/internal/measurement/zzcu; +Lcom/google/android/gms/internal/measurement/zzcu; +Lcom/google/android/gms/internal/measurement/zzcz; +HSPLcom/google/android/gms/internal/measurement/zzcz;->()V +Lcom/google/android/gms/internal/measurement/zzda; +Lcom/google/android/gms/internal/measurement/zzdd; +HSPLcom/google/android/gms/internal/measurement/zzdd;->()V +HSPLcom/google/android/gms/internal/measurement/zzdd;->(JJZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;Ljava/lang/String;)V +Lcom/google/android/gms/internal/measurement/zzdf; +HSPLcom/google/android/gms/internal/measurement/zzdf;->(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)V +HSPLcom/google/android/gms/internal/measurement/zzdf;->zza(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Lcom/google/android/gms/internal/measurement/zzdf; +HSPLcom/google/android/gms/internal/measurement/zzdf;->zza(Landroid/content/Context;Z)Lcom/google/android/gms/internal/measurement/zzcu; +HSPLcom/google/android/gms/internal/measurement/zzdf;->zza(Lcom/google/android/gms/internal/measurement/zzdf$zza;)V +HSPLcom/google/android/gms/internal/measurement/zzdf;->zza(Lcom/google/android/gms/internal/measurement/zzdf;)Lcom/google/android/gms/internal/measurement/zzcu; +HSPLcom/google/android/gms/internal/measurement/zzdf;->zza(Lcom/google/android/gms/internal/measurement/zzdf;Lcom/google/android/gms/internal/measurement/zzcu;)V +HSPLcom/google/android/gms/internal/measurement/zzdf;->zza(Lcom/google/android/gms/internal/measurement/zzdf;Lcom/google/android/gms/internal/measurement/zzdf$zza;)V +HSPLcom/google/android/gms/internal/measurement/zzdf;->zza(Lcom/google/android/gms/internal/measurement/zzdf;Ljava/lang/String;Ljava/lang/String;)Z +HSPLcom/google/android/gms/internal/measurement/zzdf;->zza(Lcom/google/android/gms/measurement/internal/zzil;)V +HSPLcom/google/android/gms/internal/measurement/zzdf;->zzb()Lcom/google/android/gms/measurement/api/AppMeasurementSdk; +HSPLcom/google/android/gms/internal/measurement/zzdf;->zzb(Landroid/content/Context;)Z +HSPLcom/google/android/gms/internal/measurement/zzdf;->zzc(Lcom/google/android/gms/internal/measurement/zzdf;)Z +HSPLcom/google/android/gms/internal/measurement/zzdf;->zzc(Ljava/lang/String;Ljava/lang/String;)Z +HSPLcom/google/android/gms/internal/measurement/zzdf;->zzk()Z +Lcom/google/android/gms/internal/measurement/zzdf$zza; +HSPLcom/google/android/gms/internal/measurement/zzdf$zza;->(Lcom/google/android/gms/internal/measurement/zzdf;)V +HSPLcom/google/android/gms/internal/measurement/zzdf$zza;->(Lcom/google/android/gms/internal/measurement/zzdf;Z)V +HSPLcom/google/android/gms/internal/measurement/zzdf$zza;->run()V +Lcom/google/android/gms/internal/measurement/zzdf$zzb; +HSPLcom/google/android/gms/internal/measurement/zzdf$zzb;->(Lcom/google/android/gms/measurement/internal/zzil;)V +HSPLcom/google/android/gms/internal/measurement/zzdf$zzb;->zza()I +Lcom/google/android/gms/internal/measurement/zzdf$zzd; +HSPLcom/google/android/gms/internal/measurement/zzdf$zzd;->(Lcom/google/android/gms/internal/measurement/zzdf;)V +HSPLcom/google/android/gms/internal/measurement/zzdf$zzd;->onActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V +HSPLcom/google/android/gms/internal/measurement/zzdf$zzd;->onActivityResumed(Landroid/app/Activity;)V +HSPLcom/google/android/gms/internal/measurement/zzdf$zzd;->onActivityStarted(Landroid/app/Activity;)V +Lcom/google/android/gms/internal/measurement/zzdg; +HSPLcom/google/android/gms/internal/measurement/zzdg;->()V +Lcom/google/android/gms/internal/measurement/zzdi; +HSPLcom/google/android/gms/internal/measurement/zzdi;->(Lcom/google/android/gms/internal/measurement/zzdf;Ljava/lang/String;Ljava/lang/String;Landroid/content/Context;Landroid/os/Bundle;)V +HSPLcom/google/android/gms/internal/measurement/zzdi;->zza()V +Lcom/google/android/gms/internal/measurement/zzdr; +HSPLcom/google/android/gms/internal/measurement/zzdr;->(Lcom/google/android/gms/internal/measurement/zzdf;)V +HSPLcom/google/android/gms/internal/measurement/zzdr;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread; +Lcom/google/android/gms/internal/measurement/zzej; +HSPLcom/google/android/gms/internal/measurement/zzej;->(Lcom/google/android/gms/internal/measurement/zzdf;Lcom/google/android/gms/internal/measurement/zzdf$zzb;)V +HSPLcom/google/android/gms/internal/measurement/zzej;->zza()V +Lcom/google/android/gms/internal/measurement/zzeo; +HSPLcom/google/android/gms/internal/measurement/zzeo;->(Lcom/google/android/gms/internal/measurement/zzdf$zzd;Landroid/os/Bundle;Landroid/app/Activity;)V +HSPLcom/google/android/gms/internal/measurement/zzeo;->zza()V +Lcom/google/android/gms/internal/measurement/zzep; +HSPLcom/google/android/gms/internal/measurement/zzep;->(Lcom/google/android/gms/internal/measurement/zzdf$zzd;Landroid/app/Activity;)V +HSPLcom/google/android/gms/internal/measurement/zzep;->zza()V +Lcom/google/android/gms/internal/measurement/zzeq; +HSPLcom/google/android/gms/internal/measurement/zzeq;->(Lcom/google/android/gms/internal/measurement/zzdf$zzd;Landroid/app/Activity;)V +HSPLcom/google/android/gms/internal/measurement/zzeq;->zza()V +Lcom/google/android/gms/internal/measurement/zzfr; +HSPLcom/google/android/gms/internal/measurement/zzfr;->()V +Lcom/google/android/gms/internal/measurement/zzfr$zzb; +Lcom/google/android/gms/internal/measurement/zzfv; +HSPLcom/google/android/gms/internal/measurement/zzfv;->(Landroid/content/Context;Lcom/google/common/base/Supplier;)V +HSPLcom/google/android/gms/internal/measurement/zzfv;->zza()Landroid/content/Context; +HSPLcom/google/android/gms/internal/measurement/zzfv;->zzb()Lcom/google/common/base/Supplier; +Lcom/google/android/gms/internal/measurement/zzfx; +HSPLcom/google/android/gms/internal/measurement/zzfx;->(Lcom/google/android/gms/internal/measurement/zzfy;)V +HSPLcom/google/android/gms/internal/measurement/zzfx;->zza()Ljava/lang/Object; +Lcom/google/android/gms/internal/measurement/zzfy; +HSPLcom/google/android/gms/internal/measurement/zzfy;->()V +HSPLcom/google/android/gms/internal/measurement/zzfy;->(Landroid/content/ContentResolver;Landroid/net/Uri;Ljava/lang/Runnable;)V +HSPLcom/google/android/gms/internal/measurement/zzfy;->zza()Ljava/util/Map; +HSPLcom/google/android/gms/internal/measurement/zzfy;->zza(Landroid/content/ContentResolver;Landroid/net/Uri;Ljava/lang/Runnable;)Lcom/google/android/gms/internal/measurement/zzfy; +HSPLcom/google/android/gms/internal/measurement/zzfy;->zza(Ljava/lang/String;)Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzfy;->zzb()Ljava/util/Map; +HSPLcom/google/android/gms/internal/measurement/zzfy;->zzc()V +HSPLcom/google/android/gms/internal/measurement/zzfy;->zzd()V +HSPLcom/google/android/gms/internal/measurement/zzfy;->zze()Ljava/util/Map; +Lcom/google/android/gms/internal/measurement/zzga; +HSPLcom/google/android/gms/internal/measurement/zzga;->(Lcom/google/android/gms/internal/measurement/zzfy;Landroid/os/Handler;)V +HSPLcom/google/android/gms/internal/measurement/zzga;->onChange(Z)V +Lcom/google/android/gms/internal/measurement/zzgb; +Lcom/google/android/gms/internal/measurement/zzgd; +Lcom/google/android/gms/internal/measurement/zzge; +HSPLcom/google/android/gms/internal/measurement/zzge;->zza(Lcom/google/android/gms/internal/measurement/zzgd;)Ljava/lang/Object; +Lcom/google/android/gms/internal/measurement/zzgg; +HSPLcom/google/android/gms/internal/measurement/zzgg;->zza()V +Lcom/google/android/gms/internal/measurement/zzgh; +Lcom/google/android/gms/internal/measurement/zzgj; +HSPLcom/google/android/gms/internal/measurement/zzgj;->()V +Lcom/google/android/gms/internal/measurement/zzgj$zza; +HSPLcom/google/android/gms/internal/measurement/zzgj$zza;->()V +HSPLcom/google/android/gms/internal/measurement/zzgj$zza;->zza(Landroid/content/Context;)Lcom/google/common/base/Optional; +Lcom/google/android/gms/internal/measurement/zzgk; +HSPLcom/google/android/gms/internal/measurement/zzgk;->()V +HSPLcom/google/android/gms/internal/measurement/zzgk;->zza(Ljava/lang/String;)Landroid/net/Uri; +Lcom/google/android/gms/internal/measurement/zzgl; +HSPLcom/google/android/gms/internal/measurement/zzgl;->()V +HSPLcom/google/android/gms/internal/measurement/zzgl;->zza(Landroid/content/Context;)Z +HSPLcom/google/android/gms/internal/measurement/zzgl;->zza(Landroid/content/Context;Landroid/net/Uri;)Z +Lcom/google/android/gms/internal/measurement/zzgm; +HSPLcom/google/android/gms/internal/measurement/zzgm;->()V +HSPLcom/google/android/gms/internal/measurement/zzgm;->()V +HSPLcom/google/android/gms/internal/measurement/zzgm;->run()V +Lcom/google/android/gms/internal/measurement/zzgn; +HSPLcom/google/android/gms/internal/measurement/zzgn;->()V +HSPLcom/google/android/gms/internal/measurement/zzgn;->(Lcom/google/android/gms/internal/measurement/zzgv;Ljava/lang/String;Ljava/lang/Object;Z)V +HSPLcom/google/android/gms/internal/measurement/zzgn;->(Lcom/google/android/gms/internal/measurement/zzgv;Ljava/lang/String;Ljava/lang/Object;ZLcom/google/android/gms/internal/measurement/zzgx;)V +HSPLcom/google/android/gms/internal/measurement/zzgn;->zza()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzgn;->zza(Landroid/content/Context;)Lcom/google/common/base/Optional; +HSPLcom/google/android/gms/internal/measurement/zzgn;->zza(Lcom/google/android/gms/internal/measurement/zzgu;)Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzgn;->zza(Lcom/google/android/gms/internal/measurement/zzgv;Ljava/lang/String;Ljava/lang/Boolean;Z)Lcom/google/android/gms/internal/measurement/zzgn; +HSPLcom/google/android/gms/internal/measurement/zzgn;->zza(Lcom/google/android/gms/internal/measurement/zzgv;Ljava/lang/String;Ljava/lang/Double;Z)Lcom/google/android/gms/internal/measurement/zzgn; +HSPLcom/google/android/gms/internal/measurement/zzgn;->zza(Lcom/google/android/gms/internal/measurement/zzgv;Ljava/lang/String;Ljava/lang/Long;Z)Lcom/google/android/gms/internal/measurement/zzgn; +HSPLcom/google/android/gms/internal/measurement/zzgn;->zza(Lcom/google/android/gms/internal/measurement/zzgv;Ljava/lang/String;Ljava/lang/String;Z)Lcom/google/android/gms/internal/measurement/zzgn; +HSPLcom/google/android/gms/internal/measurement/zzgn;->zza(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzgn;->zzb()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzgn;->zzb(Landroid/content/Context;)V +HSPLcom/google/android/gms/internal/measurement/zzgn;->zzb(Lcom/google/android/gms/internal/measurement/zzgu;)Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzgn;->zzc()V +HSPLcom/google/android/gms/internal/measurement/zzgn;->zzd()Z +Lcom/google/android/gms/internal/measurement/zzgo; +HSPLcom/google/android/gms/internal/measurement/zzgo;->()V +HSPLcom/google/android/gms/internal/measurement/zzgo;->()V +HSPLcom/google/android/gms/internal/measurement/zzgo;->zza()Z +Lcom/google/android/gms/internal/measurement/zzgp; +HSPLcom/google/android/gms/internal/measurement/zzgp;->(Landroid/content/Context;)V +HSPLcom/google/android/gms/internal/measurement/zzgp;->get()Ljava/lang/Object; +Lcom/google/android/gms/internal/measurement/zzgq; +HSPLcom/google/android/gms/internal/measurement/zzgq;->(Lcom/google/android/gms/internal/measurement/zzgv;Ljava/lang/String;Ljava/lang/Boolean;Z)V +HSPLcom/google/android/gms/internal/measurement/zzgq;->zza(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/google/android/gms/internal/measurement/zzgr; +HSPLcom/google/android/gms/internal/measurement/zzgr;->(Lcom/google/android/gms/internal/measurement/zzgv;Ljava/lang/String;Ljava/lang/Long;Z)V +HSPLcom/google/android/gms/internal/measurement/zzgr;->zza(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzgr;->zzb(Ljava/lang/Object;)Ljava/lang/Long; +Lcom/google/android/gms/internal/measurement/zzgs; +HSPLcom/google/android/gms/internal/measurement/zzgs;->(Lcom/google/android/gms/internal/measurement/zzgv;Ljava/lang/String;Ljava/lang/String;Z)V +HSPLcom/google/android/gms/internal/measurement/zzgs;->zza(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/google/android/gms/internal/measurement/zzgt; +HSPLcom/google/android/gms/internal/measurement/zzgt;->(Lcom/google/android/gms/internal/measurement/zzgv;Ljava/lang/String;Ljava/lang/Double;Z)V +HSPLcom/google/android/gms/internal/measurement/zzgt;->zza(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzgt;->zzb(Ljava/lang/Object;)Ljava/lang/Double; +Lcom/google/android/gms/internal/measurement/zzgu; +HSPLcom/google/android/gms/internal/measurement/zzgu;->()V +Lcom/google/android/gms/internal/measurement/zzgv; +HSPLcom/google/android/gms/internal/measurement/zzgv;->(Landroid/net/Uri;)V +HSPLcom/google/android/gms/internal/measurement/zzgv;->(Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;ZZZZLcom/google/common/base/Function;)V +HSPLcom/google/android/gms/internal/measurement/zzgv;->zza()Lcom/google/android/gms/internal/measurement/zzgv; +HSPLcom/google/android/gms/internal/measurement/zzgv;->zza(Ljava/lang/String;D)Lcom/google/android/gms/internal/measurement/zzgn; +HSPLcom/google/android/gms/internal/measurement/zzgv;->zza(Ljava/lang/String;J)Lcom/google/android/gms/internal/measurement/zzgn; +HSPLcom/google/android/gms/internal/measurement/zzgv;->zza(Ljava/lang/String;Ljava/lang/String;)Lcom/google/android/gms/internal/measurement/zzgn; +HSPLcom/google/android/gms/internal/measurement/zzgv;->zza(Ljava/lang/String;Z)Lcom/google/android/gms/internal/measurement/zzgn; +HSPLcom/google/android/gms/internal/measurement/zzgv;->zzb()Lcom/google/android/gms/internal/measurement/zzgv; +Lcom/google/android/gms/internal/measurement/zzgw; +HSPLcom/google/android/gms/internal/measurement/zzgw;->()V +HSPLcom/google/android/gms/internal/measurement/zzgw;->zza()V +Lcom/google/android/gms/internal/measurement/zzgy; +HSPLcom/google/android/gms/internal/measurement/zzgy;->(Lcom/google/android/gms/internal/measurement/zzhb;)V +Lcom/google/android/gms/internal/measurement/zzhb; +Lcom/google/android/gms/internal/measurement/zzmy; +HSPLcom/google/android/gms/internal/measurement/zzmy;->()V +HSPLcom/google/android/gms/internal/measurement/zzmy;->()V +HSPLcom/google/android/gms/internal/measurement/zzmy;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzmy;->zza()Z +Lcom/google/android/gms/internal/measurement/zzna; +HSPLcom/google/android/gms/internal/measurement/zzna;->()V +HSPLcom/google/android/gms/internal/measurement/zzna;->()V +HSPLcom/google/android/gms/internal/measurement/zzna;->zza()Z +Lcom/google/android/gms/internal/measurement/zznb; +Lcom/google/android/gms/internal/measurement/zznc; +Lcom/google/android/gms/internal/measurement/zznd; +HSPLcom/google/android/gms/internal/measurement/zznd;->()V +HSPLcom/google/android/gms/internal/measurement/zznd;->()V +HSPLcom/google/android/gms/internal/measurement/zznd;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zznd;->zza()Z +Lcom/google/android/gms/internal/measurement/zzne; +HSPLcom/google/android/gms/internal/measurement/zzne;->()V +HSPLcom/google/android/gms/internal/measurement/zzne;->()V +HSPLcom/google/android/gms/internal/measurement/zzne;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzne;->zza()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzaa()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzab()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzac()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzad()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzae()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzaf()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzag()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzah()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzai()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzaj()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzak()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzal()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzne;->zzam()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzne;->zzan()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzne;->zzao()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzne;->zzap()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzne;->zzaq()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzne;->zzar()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzne;->zzas()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzne;->zzat()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzne;->zzau()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzne;->zzb()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzc()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzd()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zze()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzf()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzg()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzh()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzi()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzj()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzk()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzl()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzm()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzn()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzo()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzp()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzq()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzr()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzs()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzt()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzu()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzv()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzw()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzx()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzy()J +HSPLcom/google/android/gms/internal/measurement/zzne;->zzz()J +Lcom/google/android/gms/internal/measurement/zznf; +HSPLcom/google/android/gms/internal/measurement/zznf;->()V +HSPLcom/google/android/gms/internal/measurement/zznf;->()V +HSPLcom/google/android/gms/internal/measurement/zznf;->zza()Z +Lcom/google/android/gms/internal/measurement/zzng; +HSPLcom/google/android/gms/internal/measurement/zzng;->()V +HSPLcom/google/android/gms/internal/measurement/zzng;->()V +HSPLcom/google/android/gms/internal/measurement/zzng;->zza()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzaa()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzab()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzac()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzad()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzae()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzaf()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzag()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzah()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzai()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzaj()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzak()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzal()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzng;->zzam()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzng;->zzan()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzng;->zzao()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzng;->zzap()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzng;->zzaq()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzng;->zzar()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzng;->zzas()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzng;->zzat()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzng;->zzau()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzng;->zzb()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzc()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzd()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zze()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzf()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzg()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzh()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzi()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzj()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzk()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzl()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzm()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzn()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzo()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzp()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzq()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzr()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzs()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzt()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzu()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzv()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzw()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzx()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzy()J +HSPLcom/google/android/gms/internal/measurement/zzng;->zzz()J +Lcom/google/android/gms/internal/measurement/zznh; +Lcom/google/android/gms/internal/measurement/zzni; +Lcom/google/android/gms/internal/measurement/zznj; +HSPLcom/google/android/gms/internal/measurement/zznj;->()V +HSPLcom/google/android/gms/internal/measurement/zznj;->()V +HSPLcom/google/android/gms/internal/measurement/zznj;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zznj;->zza()J +Lcom/google/android/gms/internal/measurement/zznk; +HSPLcom/google/android/gms/internal/measurement/zznk;->()V +HSPLcom/google/android/gms/internal/measurement/zznk;->()V +HSPLcom/google/android/gms/internal/measurement/zznk;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zznk;->zzb()Z +Lcom/google/android/gms/internal/measurement/zznl; +HSPLcom/google/android/gms/internal/measurement/zznl;->()V +HSPLcom/google/android/gms/internal/measurement/zznl;->()V +HSPLcom/google/android/gms/internal/measurement/zznl;->zza()J +Lcom/google/android/gms/internal/measurement/zznm; +HSPLcom/google/android/gms/internal/measurement/zznm;->()V +HSPLcom/google/android/gms/internal/measurement/zznm;->()V +HSPLcom/google/android/gms/internal/measurement/zznm;->zzb()Z +Lcom/google/android/gms/internal/measurement/zznn; +Lcom/google/android/gms/internal/measurement/zzno; +Lcom/google/android/gms/internal/measurement/zznp; +HSPLcom/google/android/gms/internal/measurement/zznp;->()V +HSPLcom/google/android/gms/internal/measurement/zznp;->()V +HSPLcom/google/android/gms/internal/measurement/zznp;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zznp;->zza()Z +HSPLcom/google/android/gms/internal/measurement/zznp;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zznp;->zzc()Z +HSPLcom/google/android/gms/internal/measurement/zznp;->zzd()Z +HSPLcom/google/android/gms/internal/measurement/zznp;->zze()Z +HSPLcom/google/android/gms/internal/measurement/zznp;->zzf()Z +HSPLcom/google/android/gms/internal/measurement/zznp;->zzg()Z +Lcom/google/android/gms/internal/measurement/zznq; +HSPLcom/google/android/gms/internal/measurement/zznq;->()V +HSPLcom/google/android/gms/internal/measurement/zznq;->()V +HSPLcom/google/android/gms/internal/measurement/zznq;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zznq;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zznq;->zzc()Z +Lcom/google/android/gms/internal/measurement/zznr; +HSPLcom/google/android/gms/internal/measurement/zznr;->()V +HSPLcom/google/android/gms/internal/measurement/zznr;->()V +HSPLcom/google/android/gms/internal/measurement/zznr;->zza()Z +HSPLcom/google/android/gms/internal/measurement/zznr;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zznr;->zzc()Z +HSPLcom/google/android/gms/internal/measurement/zznr;->zzd()Z +HSPLcom/google/android/gms/internal/measurement/zznr;->zze()Z +HSPLcom/google/android/gms/internal/measurement/zznr;->zzf()Z +HSPLcom/google/android/gms/internal/measurement/zznr;->zzg()Z +Lcom/google/android/gms/internal/measurement/zzns; +HSPLcom/google/android/gms/internal/measurement/zzns;->()V +HSPLcom/google/android/gms/internal/measurement/zzns;->()V +HSPLcom/google/android/gms/internal/measurement/zzns;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zzns;->zzc()Z +Lcom/google/android/gms/internal/measurement/zznt; +Lcom/google/android/gms/internal/measurement/zznu; +Lcom/google/android/gms/internal/measurement/zznv; +HSPLcom/google/android/gms/internal/measurement/zznv;->()V +HSPLcom/google/android/gms/internal/measurement/zznv;->()V +HSPLcom/google/android/gms/internal/measurement/zznv;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zznv;->zza()Z +HSPLcom/google/android/gms/internal/measurement/zznv;->zzb()Z +Lcom/google/android/gms/internal/measurement/zznw; +HSPLcom/google/android/gms/internal/measurement/zznw;->()V +HSPLcom/google/android/gms/internal/measurement/zznw;->()V +HSPLcom/google/android/gms/internal/measurement/zznw;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zznw;->zzb()Z +Lcom/google/android/gms/internal/measurement/zznx; +HSPLcom/google/android/gms/internal/measurement/zznx;->()V +HSPLcom/google/android/gms/internal/measurement/zznx;->()V +HSPLcom/google/android/gms/internal/measurement/zznx;->zza()Z +HSPLcom/google/android/gms/internal/measurement/zznx;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzny; +HSPLcom/google/android/gms/internal/measurement/zzny;->()V +HSPLcom/google/android/gms/internal/measurement/zzny;->()V +HSPLcom/google/android/gms/internal/measurement/zzny;->zzb()Z +Lcom/google/android/gms/internal/measurement/zznz; +Lcom/google/android/gms/internal/measurement/zzoa; +Lcom/google/android/gms/internal/measurement/zzob; +HSPLcom/google/android/gms/internal/measurement/zzob;->()V +HSPLcom/google/android/gms/internal/measurement/zzob;->()V +HSPLcom/google/android/gms/internal/measurement/zzob;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzob;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zzob;->zzc()Z +HSPLcom/google/android/gms/internal/measurement/zzob;->zzd()Z +Lcom/google/android/gms/internal/measurement/zzoc; +HSPLcom/google/android/gms/internal/measurement/zzoc;->()V +HSPLcom/google/android/gms/internal/measurement/zzoc;->()V +HSPLcom/google/android/gms/internal/measurement/zzoc;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzoc;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzod; +HSPLcom/google/android/gms/internal/measurement/zzod;->()V +HSPLcom/google/android/gms/internal/measurement/zzod;->()V +HSPLcom/google/android/gms/internal/measurement/zzod;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zzod;->zzc()Z +HSPLcom/google/android/gms/internal/measurement/zzod;->zzd()Z +Lcom/google/android/gms/internal/measurement/zzoe; +HSPLcom/google/android/gms/internal/measurement/zzoe;->()V +HSPLcom/google/android/gms/internal/measurement/zzoe;->()V +HSPLcom/google/android/gms/internal/measurement/zzoe;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzof; +Lcom/google/android/gms/internal/measurement/zzog; +Lcom/google/android/gms/internal/measurement/zzoh; +HSPLcom/google/android/gms/internal/measurement/zzoh;->()V +HSPLcom/google/android/gms/internal/measurement/zzoh;->()V +HSPLcom/google/android/gms/internal/measurement/zzoh;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzoh;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzoi; +HSPLcom/google/android/gms/internal/measurement/zzoi;->()V +HSPLcom/google/android/gms/internal/measurement/zzoi;->()V +HSPLcom/google/android/gms/internal/measurement/zzoi;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzoi;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zzoi;->zzc()Z +Lcom/google/android/gms/internal/measurement/zzoj; +HSPLcom/google/android/gms/internal/measurement/zzoj;->()V +HSPLcom/google/android/gms/internal/measurement/zzoj;->()V +HSPLcom/google/android/gms/internal/measurement/zzoj;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzok; +HSPLcom/google/android/gms/internal/measurement/zzok;->()V +HSPLcom/google/android/gms/internal/measurement/zzok;->()V +HSPLcom/google/android/gms/internal/measurement/zzok;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zzok;->zzc()Z +Lcom/google/android/gms/internal/measurement/zzol; +Lcom/google/android/gms/internal/measurement/zzom; +Lcom/google/android/gms/internal/measurement/zzon; +HSPLcom/google/android/gms/internal/measurement/zzon;->()V +HSPLcom/google/android/gms/internal/measurement/zzon;->()V +HSPLcom/google/android/gms/internal/measurement/zzon;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzon;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzoo; +HSPLcom/google/android/gms/internal/measurement/zzoo;->()V +HSPLcom/google/android/gms/internal/measurement/zzoo;->()V +HSPLcom/google/android/gms/internal/measurement/zzoo;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzoo;->zza()Z +HSPLcom/google/android/gms/internal/measurement/zzoo;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzop; +HSPLcom/google/android/gms/internal/measurement/zzop;->()V +HSPLcom/google/android/gms/internal/measurement/zzop;->()V +HSPLcom/google/android/gms/internal/measurement/zzop;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzoq; +HSPLcom/google/android/gms/internal/measurement/zzoq;->()V +HSPLcom/google/android/gms/internal/measurement/zzoq;->()V +HSPLcom/google/android/gms/internal/measurement/zzoq;->zza()Z +HSPLcom/google/android/gms/internal/measurement/zzoq;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzor; +Lcom/google/android/gms/internal/measurement/zzos; +Lcom/google/android/gms/internal/measurement/zzot; +HSPLcom/google/android/gms/internal/measurement/zzot;->()V +HSPLcom/google/android/gms/internal/measurement/zzot;->()V +HSPLcom/google/android/gms/internal/measurement/zzot;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzot;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zzot;->zzc()Z +Lcom/google/android/gms/internal/measurement/zzou; +HSPLcom/google/android/gms/internal/measurement/zzou;->()V +HSPLcom/google/android/gms/internal/measurement/zzou;->()V +HSPLcom/google/android/gms/internal/measurement/zzou;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzou;->zza()Z +Lcom/google/android/gms/internal/measurement/zzov; +HSPLcom/google/android/gms/internal/measurement/zzov;->()V +HSPLcom/google/android/gms/internal/measurement/zzov;->()V +HSPLcom/google/android/gms/internal/measurement/zzov;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zzov;->zzc()Z +Lcom/google/android/gms/internal/measurement/zzow; +HSPLcom/google/android/gms/internal/measurement/zzow;->()V +HSPLcom/google/android/gms/internal/measurement/zzow;->()V +HSPLcom/google/android/gms/internal/measurement/zzow;->zza()Z +Lcom/google/android/gms/internal/measurement/zzox; +Lcom/google/android/gms/internal/measurement/zzoy; +Lcom/google/android/gms/internal/measurement/zzoz; +HSPLcom/google/android/gms/internal/measurement/zzoz;->()V +HSPLcom/google/android/gms/internal/measurement/zzoz;->()V +HSPLcom/google/android/gms/internal/measurement/zzoz;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzoz;->zza()Z +Lcom/google/android/gms/internal/measurement/zzpa; +HSPLcom/google/android/gms/internal/measurement/zzpa;->()V +HSPLcom/google/android/gms/internal/measurement/zzpa;->()V +HSPLcom/google/android/gms/internal/measurement/zzpa;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzpa;->zza()D +HSPLcom/google/android/gms/internal/measurement/zzpa;->zzb()J +HSPLcom/google/android/gms/internal/measurement/zzpa;->zzc()J +HSPLcom/google/android/gms/internal/measurement/zzpa;->zzd()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzpa;->zze()Z +Lcom/google/android/gms/internal/measurement/zzpb; +HSPLcom/google/android/gms/internal/measurement/zzpb;->()V +HSPLcom/google/android/gms/internal/measurement/zzpb;->()V +HSPLcom/google/android/gms/internal/measurement/zzpb;->zza()Z +Lcom/google/android/gms/internal/measurement/zzpc; +HSPLcom/google/android/gms/internal/measurement/zzpc;->()V +HSPLcom/google/android/gms/internal/measurement/zzpc;->()V +HSPLcom/google/android/gms/internal/measurement/zzpc;->zza()D +HSPLcom/google/android/gms/internal/measurement/zzpc;->zzb()J +HSPLcom/google/android/gms/internal/measurement/zzpc;->zzc()J +HSPLcom/google/android/gms/internal/measurement/zzpc;->zzd()Ljava/lang/String; +HSPLcom/google/android/gms/internal/measurement/zzpc;->zze()Z +Lcom/google/android/gms/internal/measurement/zzpd; +Lcom/google/android/gms/internal/measurement/zzpe; +Lcom/google/android/gms/internal/measurement/zzpf; +HSPLcom/google/android/gms/internal/measurement/zzpf;->()V +HSPLcom/google/android/gms/internal/measurement/zzpf;->()V +HSPLcom/google/android/gms/internal/measurement/zzpf;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzpf;->zza()Z +Lcom/google/android/gms/internal/measurement/zzpg; +HSPLcom/google/android/gms/internal/measurement/zzpg;->()V +HSPLcom/google/android/gms/internal/measurement/zzpg;->()V +HSPLcom/google/android/gms/internal/measurement/zzpg;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzpg;->zza()Z +HSPLcom/google/android/gms/internal/measurement/zzpg;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zzpg;->zzc()Z +HSPLcom/google/android/gms/internal/measurement/zzpg;->zzd()Z +HSPLcom/google/android/gms/internal/measurement/zzpg;->zze()Z +HSPLcom/google/android/gms/internal/measurement/zzpg;->zzf()Z +Lcom/google/android/gms/internal/measurement/zzph; +HSPLcom/google/android/gms/internal/measurement/zzph;->()V +HSPLcom/google/android/gms/internal/measurement/zzph;->()V +HSPLcom/google/android/gms/internal/measurement/zzph;->zza()Z +Lcom/google/android/gms/internal/measurement/zzpi; +HSPLcom/google/android/gms/internal/measurement/zzpi;->()V +HSPLcom/google/android/gms/internal/measurement/zzpi;->()V +HSPLcom/google/android/gms/internal/measurement/zzpi;->zza()Z +HSPLcom/google/android/gms/internal/measurement/zzpi;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zzpi;->zzc()Z +HSPLcom/google/android/gms/internal/measurement/zzpi;->zzd()Z +HSPLcom/google/android/gms/internal/measurement/zzpi;->zze()Z +HSPLcom/google/android/gms/internal/measurement/zzpi;->zzf()Z +Lcom/google/android/gms/internal/measurement/zzpj; +Lcom/google/android/gms/internal/measurement/zzpk; +Lcom/google/android/gms/internal/measurement/zzpl; +HSPLcom/google/android/gms/internal/measurement/zzpl;->()V +HSPLcom/google/android/gms/internal/measurement/zzpl;->()V +HSPLcom/google/android/gms/internal/measurement/zzpl;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzpl;->zza()Z +HSPLcom/google/android/gms/internal/measurement/zzpl;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzpm; +HSPLcom/google/android/gms/internal/measurement/zzpm;->()V +HSPLcom/google/android/gms/internal/measurement/zzpm;->()V +HSPLcom/google/android/gms/internal/measurement/zzpm;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzpm;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzpn; +HSPLcom/google/android/gms/internal/measurement/zzpn;->()V +HSPLcom/google/android/gms/internal/measurement/zzpn;->()V +HSPLcom/google/android/gms/internal/measurement/zzpn;->zza()Z +HSPLcom/google/android/gms/internal/measurement/zzpn;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzpo; +HSPLcom/google/android/gms/internal/measurement/zzpo;->()V +HSPLcom/google/android/gms/internal/measurement/zzpo;->()V +HSPLcom/google/android/gms/internal/measurement/zzpo;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzpp; +Lcom/google/android/gms/internal/measurement/zzpq; +Lcom/google/android/gms/internal/measurement/zzpr; +HSPLcom/google/android/gms/internal/measurement/zzpr;->()V +HSPLcom/google/android/gms/internal/measurement/zzpr;->()V +HSPLcom/google/android/gms/internal/measurement/zzpr;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzpr;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzps; +HSPLcom/google/android/gms/internal/measurement/zzps;->()V +HSPLcom/google/android/gms/internal/measurement/zzps;->()V +HSPLcom/google/android/gms/internal/measurement/zzps;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzps;->zza()Z +HSPLcom/google/android/gms/internal/measurement/zzps;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zzps;->zzc()Z +HSPLcom/google/android/gms/internal/measurement/zzps;->zzd()Z +Lcom/google/android/gms/internal/measurement/zzpt; +HSPLcom/google/android/gms/internal/measurement/zzpt;->()V +HSPLcom/google/android/gms/internal/measurement/zzpt;->()V +HSPLcom/google/android/gms/internal/measurement/zzpt;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzpu; +HSPLcom/google/android/gms/internal/measurement/zzpu;->()V +HSPLcom/google/android/gms/internal/measurement/zzpu;->()V +HSPLcom/google/android/gms/internal/measurement/zzpu;->zza()Z +HSPLcom/google/android/gms/internal/measurement/zzpu;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zzpu;->zzc()Z +HSPLcom/google/android/gms/internal/measurement/zzpu;->zzd()Z +Lcom/google/android/gms/internal/measurement/zzpv; +Lcom/google/android/gms/internal/measurement/zzpw; +Lcom/google/android/gms/internal/measurement/zzpx; +HSPLcom/google/android/gms/internal/measurement/zzpx;->()V +HSPLcom/google/android/gms/internal/measurement/zzpx;->()V +HSPLcom/google/android/gms/internal/measurement/zzpx;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzpx;->zza()Z +Lcom/google/android/gms/internal/measurement/zzpy; +HSPLcom/google/android/gms/internal/measurement/zzpy;->()V +HSPLcom/google/android/gms/internal/measurement/zzpy;->()V +HSPLcom/google/android/gms/internal/measurement/zzpy;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzpy;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zzpy;->zzc()Z +Lcom/google/android/gms/internal/measurement/zzpz; +HSPLcom/google/android/gms/internal/measurement/zzpz;->()V +HSPLcom/google/android/gms/internal/measurement/zzpz;->()V +HSPLcom/google/android/gms/internal/measurement/zzpz;->zza()Z +Lcom/google/android/gms/internal/measurement/zzqa; +HSPLcom/google/android/gms/internal/measurement/zzqa;->()V +HSPLcom/google/android/gms/internal/measurement/zzqa;->()V +HSPLcom/google/android/gms/internal/measurement/zzqa;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zzqa;->zzc()Z +Lcom/google/android/gms/internal/measurement/zzqb; +Lcom/google/android/gms/internal/measurement/zzqc; +Lcom/google/android/gms/internal/measurement/zzqd; +HSPLcom/google/android/gms/internal/measurement/zzqd;->()V +HSPLcom/google/android/gms/internal/measurement/zzqd;->()V +HSPLcom/google/android/gms/internal/measurement/zzqd;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzqd;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zzqd;->zzc()Z +Lcom/google/android/gms/internal/measurement/zzqe; +HSPLcom/google/android/gms/internal/measurement/zzqe;->()V +HSPLcom/google/android/gms/internal/measurement/zzqe;->()V +HSPLcom/google/android/gms/internal/measurement/zzqe;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzqe;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzqf; +HSPLcom/google/android/gms/internal/measurement/zzqf;->()V +HSPLcom/google/android/gms/internal/measurement/zzqf;->()V +HSPLcom/google/android/gms/internal/measurement/zzqf;->zzb()Z +HSPLcom/google/android/gms/internal/measurement/zzqf;->zzc()Z +Lcom/google/android/gms/internal/measurement/zzqg; +HSPLcom/google/android/gms/internal/measurement/zzqg;->()V +HSPLcom/google/android/gms/internal/measurement/zzqg;->()V +HSPLcom/google/android/gms/internal/measurement/zzqg;->zzb()Z +Lcom/google/android/gms/internal/measurement/zzqh; +Lcom/google/android/gms/internal/measurement/zzqi; +Lcom/google/android/gms/internal/measurement/zzqj; +HSPLcom/google/android/gms/internal/measurement/zzqj;->()V +HSPLcom/google/android/gms/internal/measurement/zzqj;->()V +HSPLcom/google/android/gms/internal/measurement/zzqj;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzqj;->zza()Z +Lcom/google/android/gms/internal/measurement/zzqk; +HSPLcom/google/android/gms/internal/measurement/zzqk;->()V +HSPLcom/google/android/gms/internal/measurement/zzqk;->()V +HSPLcom/google/android/gms/internal/measurement/zzqk;->get()Ljava/lang/Object; +HSPLcom/google/android/gms/internal/measurement/zzqk;->zza()Z +Lcom/google/android/gms/internal/measurement/zzql; +HSPLcom/google/android/gms/internal/measurement/zzql;->()V +HSPLcom/google/android/gms/internal/measurement/zzql;->()V +HSPLcom/google/android/gms/internal/measurement/zzql;->zza()Z +Lcom/google/android/gms/internal/measurement/zzqm; +HSPLcom/google/android/gms/internal/measurement/zzqm;->()V +HSPLcom/google/android/gms/internal/measurement/zzqm;->()V +HSPLcom/google/android/gms/internal/measurement/zzqm;->zza()Z +Lcom/google/android/gms/internal/measurement/zzqn; +Lcom/google/android/gms/internal/mlkit_common/zzaf; +HSPLcom/google/android/gms/internal/mlkit_common/zzaf;->zzb(IILjava/lang/String;)I +Lcom/google/android/gms/internal/mlkit_common/zzah; +HSPLcom/google/android/gms/internal/mlkit_common/zzah;->(II)V +Lcom/google/android/gms/internal/mlkit_common/zzaj; +Lcom/google/android/gms/internal/mlkit_common/zzan; +HSPLcom/google/android/gms/internal/mlkit_common/zzan;->()V +HSPLcom/google/android/gms/internal/mlkit_common/zzan;->()V +HSPLcom/google/android/gms/internal/mlkit_common/zzan;->toArray()[Ljava/lang/Object; +HSPLcom/google/android/gms/internal/mlkit_common/zzan;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; +Lcom/google/android/gms/internal/mlkit_common/zzap; +HSPLcom/google/android/gms/internal/mlkit_common/zzap;->(Lcom/google/android/gms/internal/mlkit_common/zzar;I)V +Lcom/google/android/gms/internal/mlkit_common/zzar; +HSPLcom/google/android/gms/internal/mlkit_common/zzar;->()V +HSPLcom/google/android/gms/internal/mlkit_common/zzar;->()V +HSPLcom/google/android/gms/internal/mlkit_common/zzar;->zzg([Ljava/lang/Object;I)Lcom/google/android/gms/internal/mlkit_common/zzar; +HSPLcom/google/android/gms/internal/mlkit_common/zzar;->zzi(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lcom/google/android/gms/internal/mlkit_common/zzar; +Lcom/google/android/gms/internal/mlkit_common/zzaw; +HSPLcom/google/android/gms/internal/mlkit_common/zzaw;->zza([Ljava/lang/Object;I)[Ljava/lang/Object; +Lcom/google/android/gms/internal/mlkit_common/zzax; +HSPLcom/google/android/gms/internal/mlkit_common/zzax;->()V +HSPLcom/google/android/gms/internal/mlkit_common/zzax;->([Ljava/lang/Object;I)V +HSPLcom/google/android/gms/internal/mlkit_common/zzax;->size()I +HSPLcom/google/android/gms/internal/mlkit_common/zzax;->zzb()I +HSPLcom/google/android/gms/internal/mlkit_common/zzax;->zzc()I +HSPLcom/google/android/gms/internal/mlkit_common/zzax;->zze()[Ljava/lang/Object; +Lcom/google/android/gms/internal/mlkit_common/zzbe; +HSPLcom/google/android/gms/internal/mlkit_common/zzbe;->()V +Lcom/google/android/gms/internal/mlkit_common/zzbf; +HSPLcom/google/android/gms/internal/mlkit_common/zzbf;->()V +Lcom/google/android/gms/internal/mlkit_common/zzbh; +Lcom/google/android/gms/internal/mlkit_vision_barcode/zzbc; +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzbc;->zzb(IILjava/lang/String;)I +Lcom/google/android/gms/internal/mlkit_vision_barcode/zzbg; +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzbg;->(II)V +Lcom/google/android/gms/internal/mlkit_vision_barcode/zzcq; +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzcq;->()V +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzcq;->()V +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzcq;->toArray()[Ljava/lang/Object; +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzcq;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; +Lcom/google/android/gms/internal/mlkit_vision_barcode/zzct; +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzct;->(Lcom/google/android/gms/internal/mlkit_vision_barcode/zzcv;I)V +Lcom/google/android/gms/internal/mlkit_vision_barcode/zzcv; +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzcv;->()V +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzcv;->()V +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzcv;->zzg([Ljava/lang/Object;I)Lcom/google/android/gms/internal/mlkit_vision_barcode/zzcv; +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzcv;->zzh(Ljava/lang/Object;Ljava/lang/Object;)Lcom/google/android/gms/internal/mlkit_vision_barcode/zzcv; +Lcom/google/android/gms/internal/mlkit_vision_barcode/zzdm; +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzdm;->zza([Ljava/lang/Object;I)[Ljava/lang/Object; +Lcom/google/android/gms/internal/mlkit_vision_barcode/zzdn; +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzdn;->()V +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzdn;->([Ljava/lang/Object;I)V +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzdn;->size()I +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzdn;->zzb()I +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzdn;->zzc()I +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzdn;->zze()[Ljava/lang/Object; +Lcom/google/android/gms/internal/mlkit_vision_barcode/zzdx; +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzdx;->()V +Lcom/google/android/gms/internal/mlkit_vision_barcode/zzdy; +HSPLcom/google/android/gms/internal/mlkit_vision_barcode/zzdy;->()V +Lcom/google/android/gms/internal/mlkit_vision_common/zzab; +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzab;->()V +Lcom/google/android/gms/internal/mlkit_vision_common/zzac; +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzac;->()V +Lcom/google/android/gms/internal/mlkit_vision_common/zzf; +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzf;->zzb(IILjava/lang/String;)I +Lcom/google/android/gms/internal/mlkit_vision_common/zzh; +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzh;->(II)V +Lcom/google/android/gms/internal/mlkit_vision_common/zzl; +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzl;->()V +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzl;->()V +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzl;->toArray()[Ljava/lang/Object; +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzl;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; +Lcom/google/android/gms/internal/mlkit_vision_common/zzn; +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzn;->(Lcom/google/android/gms/internal/mlkit_vision_common/zzp;I)V +Lcom/google/android/gms/internal/mlkit_vision_common/zzp; +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzp;->()V +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzp;->()V +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzp;->zzh([Ljava/lang/Object;I)Lcom/google/android/gms/internal/mlkit_vision_common/zzp; +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzp;->zzi(Ljava/lang/Object;)Lcom/google/android/gms/internal/mlkit_vision_common/zzp; +Lcom/google/android/gms/internal/mlkit_vision_common/zzt; +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzt;->zza([Ljava/lang/Object;I)[Ljava/lang/Object; +Lcom/google/android/gms/internal/mlkit_vision_common/zzu; +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzu;->()V +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzu;->([Ljava/lang/Object;I)V +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzu;->size()I +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzu;->zzb()I +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzu;->zzc()I +HSPLcom/google/android/gms/internal/mlkit_vision_common/zzu;->zze()[Ljava/lang/Object; +Lcom/google/android/gms/internal/play_billing/zzb; +HSPLcom/google/android/gms/internal/play_billing/zzb;->()V +HSPLcom/google/android/gms/internal/play_billing/zzb;->zzj(Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/google/android/gms/internal/play_billing/zzb;->zzk(Ljava/lang/String;Ljava/lang/String;)V +Lcom/google/android/gms/internal/play_billing/zzdf; +HSPLcom/google/android/gms/internal/play_billing/zzdf;->()V +Lcom/google/android/gms/internal/play_billing/zzdg; +HSPLcom/google/android/gms/internal/play_billing/zzdg;->()V +HSPLcom/google/android/gms/internal/play_billing/zzdg;->zzc()[B +Lcom/google/android/gms/internal/play_billing/zzdi; +HSPLcom/google/android/gms/internal/play_billing/zzdi;->()V +Lcom/google/android/gms/internal/play_billing/zzdm; +HSPLcom/google/android/gms/internal/play_billing/zzdm;->()V +Lcom/google/android/gms/internal/play_billing/zzdo; +HSPLcom/google/android/gms/internal/play_billing/zzdo;->()V +Lcom/google/android/gms/internal/play_billing/zzds; +HSPLcom/google/android/gms/internal/play_billing/zzds;->()V +Lcom/google/android/gms/internal/play_billing/zzdt; +HSPLcom/google/android/gms/internal/play_billing/zzdt;->([B)V +Lcom/google/android/gms/internal/play_billing/zzdv; +HSPLcom/google/android/gms/internal/play_billing/zzdv;->(Lcom/google/android/gms/internal/play_billing/zzdu;)V +Lcom/google/android/gms/internal/play_billing/zzdw; +HSPLcom/google/android/gms/internal/play_billing/zzdw;->()V +HSPLcom/google/android/gms/internal/play_billing/zzdw;->()V +Lcom/google/android/gms/internal/play_billing/zzdy; +HSPLcom/google/android/gms/internal/play_billing/zzdy;->([BIIZLcom/google/android/gms/internal/play_billing/zzdx;)V +HSPLcom/google/android/gms/internal/play_billing/zzdy;->zza(I)I +Lcom/google/android/gms/internal/play_billing/zzea; +HSPLcom/google/android/gms/internal/play_billing/zzea;->()V +HSPLcom/google/android/gms/internal/play_billing/zzea;->(Lcom/google/android/gms/internal/play_billing/zzdz;)V +Lcom/google/android/gms/internal/play_billing/zzeb; +HSPLcom/google/android/gms/internal/play_billing/zzeb;->([BII)V +HSPLcom/google/android/gms/internal/play_billing/zzeb;->zza()I +HSPLcom/google/android/gms/internal/play_billing/zzeb;->zzj(II)V +HSPLcom/google/android/gms/internal/play_billing/zzeb;->zzk(I)V +HSPLcom/google/android/gms/internal/play_billing/zzeb;->zzm(ILjava/lang/String;)V +HSPLcom/google/android/gms/internal/play_billing/zzeb;->zzn(Ljava/lang/String;)V +HSPLcom/google/android/gms/internal/play_billing/zzeb;->zzq(I)V +Lcom/google/android/gms/internal/play_billing/zzee; +HSPLcom/google/android/gms/internal/play_billing/zzee;->()V +HSPLcom/google/android/gms/internal/play_billing/zzee;->(Lcom/google/android/gms/internal/play_billing/zzed;)V +HSPLcom/google/android/gms/internal/play_billing/zzee;->zzA()V +HSPLcom/google/android/gms/internal/play_billing/zzee;->zzu(I)I +HSPLcom/google/android/gms/internal/play_billing/zzee;->zzv(Lcom/google/android/gms/internal/play_billing/zzgc;Lcom/google/android/gms/internal/play_billing/zzgm;)I +HSPLcom/google/android/gms/internal/play_billing/zzee;->zzw(Ljava/lang/String;)I +HSPLcom/google/android/gms/internal/play_billing/zzee;->zzx(I)I +HSPLcom/google/android/gms/internal/play_billing/zzee;->zzz([BII)Lcom/google/android/gms/internal/play_billing/zzee; +Lcom/google/android/gms/internal/play_billing/zzef; +HSPLcom/google/android/gms/internal/play_billing/zzef;->(Lcom/google/android/gms/internal/play_billing/zzee;)V +HSPLcom/google/android/gms/internal/play_billing/zzef;->zzF(ILjava/lang/String;)V +HSPLcom/google/android/gms/internal/play_billing/zzef;->zza(Lcom/google/android/gms/internal/play_billing/zzee;)Lcom/google/android/gms/internal/play_billing/zzef; +HSPLcom/google/android/gms/internal/play_billing/zzef;->zzi(II)V +HSPLcom/google/android/gms/internal/play_billing/zzef;->zzr(II)V +HSPLcom/google/android/gms/internal/play_billing/zzef;->zzv(ILjava/lang/Object;Lcom/google/android/gms/internal/play_billing/zzgm;)V +Lcom/google/android/gms/internal/play_billing/zzek; +HSPLcom/google/android/gms/internal/play_billing/zzek;->()V +Lcom/google/android/gms/internal/play_billing/zzel; +HSPLcom/google/android/gms/internal/play_billing/zzel;->()V +HSPLcom/google/android/gms/internal/play_billing/zzel;->zzc(Lcom/google/android/gms/internal/play_billing/zzgc;)Z +Lcom/google/android/gms/internal/play_billing/zzem; +HSPLcom/google/android/gms/internal/play_billing/zzem;->()V +HSPLcom/google/android/gms/internal/play_billing/zzem;->zzb()Lcom/google/android/gms/internal/play_billing/zzek; +Lcom/google/android/gms/internal/play_billing/zzep; +HSPLcom/google/android/gms/internal/play_billing/zzep;->()V +HSPLcom/google/android/gms/internal/play_billing/zzep;->(Ljava/lang/String;IIILcom/google/android/gms/internal/play_billing/zzfg;)V +HSPLcom/google/android/gms/internal/play_billing/zzep;->values()[Lcom/google/android/gms/internal/play_billing/zzep; +HSPLcom/google/android/gms/internal/play_billing/zzep;->zza()I +Lcom/google/android/gms/internal/play_billing/zzes; +HSPLcom/google/android/gms/internal/play_billing/zzes;->()V +HSPLcom/google/android/gms/internal/play_billing/zzes;->()V +HSPLcom/google/android/gms/internal/play_billing/zzes;->zza()Lcom/google/android/gms/internal/play_billing/zzes; +HSPLcom/google/android/gms/internal/play_billing/zzes;->zzb(Ljava/lang/Class;)Lcom/google/android/gms/internal/play_billing/zzfz; +HSPLcom/google/android/gms/internal/play_billing/zzes;->zzc(Ljava/lang/Class;)Z +Lcom/google/android/gms/internal/play_billing/zzet; +HSPLcom/google/android/gms/internal/play_billing/zzet;->(Lcom/google/android/gms/internal/play_billing/zzex;)V +HSPLcom/google/android/gms/internal/play_billing/zzet;->zzc()Lcom/google/android/gms/internal/play_billing/zzex; +HSPLcom/google/android/gms/internal/play_billing/zzet;->zzd()Lcom/google/android/gms/internal/play_billing/zzex; +HSPLcom/google/android/gms/internal/play_billing/zzet;->zzg()V +Lcom/google/android/gms/internal/play_billing/zzeu; +Lcom/google/android/gms/internal/play_billing/zzex; +HSPLcom/google/android/gms/internal/play_billing/zzex;->()V +HSPLcom/google/android/gms/internal/play_billing/zzex;->()V +HSPLcom/google/android/gms/internal/play_billing/zzex;->zza(Lcom/google/android/gms/internal/play_billing/zzgm;)I +HSPLcom/google/android/gms/internal/play_billing/zzex;->zze()I +HSPLcom/google/android/gms/internal/play_billing/zzex;->zzg()Lcom/google/android/gms/internal/play_billing/zzet; +HSPLcom/google/android/gms/internal/play_billing/zzex;->zzh(Ljava/lang/Class;)Lcom/google/android/gms/internal/play_billing/zzex; +HSPLcom/google/android/gms/internal/play_billing/zzex;->zzi()Lcom/google/android/gms/internal/play_billing/zzex; +HSPLcom/google/android/gms/internal/play_billing/zzex;->zzm(Lcom/google/android/gms/internal/play_billing/zzgc;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/android/gms/internal/play_billing/zzex;->zzn()V +HSPLcom/google/android/gms/internal/play_billing/zzex;->zzo()V +HSPLcom/google/android/gms/internal/play_billing/zzex;->zzp(Ljava/lang/Class;Lcom/google/android/gms/internal/play_billing/zzex;)V +HSPLcom/google/android/gms/internal/play_billing/zzex;->zzq(I)V +HSPLcom/google/android/gms/internal/play_billing/zzex;->zzr(Lcom/google/android/gms/internal/play_billing/zzee;)V +HSPLcom/google/android/gms/internal/play_billing/zzex;->zzs()Z +HSPLcom/google/android/gms/internal/play_billing/zzex;->zzt()Z +HSPLcom/google/android/gms/internal/play_billing/zzex;->zzv(Lcom/google/android/gms/internal/play_billing/zzgm;)I +Lcom/google/android/gms/internal/play_billing/zzfb; +Lcom/google/android/gms/internal/play_billing/zzfd; +HSPLcom/google/android/gms/internal/play_billing/zzfd;->()V +HSPLcom/google/android/gms/internal/play_billing/zzfd;->zzc(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; +Lcom/google/android/gms/internal/play_billing/zzff; +Lcom/google/android/gms/internal/play_billing/zzfg; +HSPLcom/google/android/gms/internal/play_billing/zzfg;->()V +HSPLcom/google/android/gms/internal/play_billing/zzfg;->(Ljava/lang/String;ILjava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;)V +HSPLcom/google/android/gms/internal/play_billing/zzfg;->zza()Ljava/lang/Class; +Lcom/google/android/gms/internal/play_billing/zzfi; +Lcom/google/android/gms/internal/play_billing/zzfm; +HSPLcom/google/android/gms/internal/play_billing/zzfm;->()V +HSPLcom/google/android/gms/internal/play_billing/zzfm;->(Lcom/google/android/gms/internal/play_billing/zzfl;)V +Lcom/google/android/gms/internal/play_billing/zzfo; +HSPLcom/google/android/gms/internal/play_billing/zzfo;->(Lcom/google/android/gms/internal/play_billing/zzfn;)V +Lcom/google/android/gms/internal/play_billing/zzfq; +HSPLcom/google/android/gms/internal/play_billing/zzfq;->()V +HSPLcom/google/android/gms/internal/play_billing/zzfq;->(Lcom/google/android/gms/internal/play_billing/zzfp;)V +HSPLcom/google/android/gms/internal/play_billing/zzfq;->zzd()Lcom/google/android/gms/internal/play_billing/zzfq; +Lcom/google/android/gms/internal/play_billing/zzfs; +HSPLcom/google/android/gms/internal/play_billing/zzfs;->()V +Lcom/google/android/gms/internal/play_billing/zzft; +HSPLcom/google/android/gms/internal/play_billing/zzft;->([Lcom/google/android/gms/internal/play_billing/zzga;)V +HSPLcom/google/android/gms/internal/play_billing/zzft;->zzb(Ljava/lang/Class;)Lcom/google/android/gms/internal/play_billing/zzfz; +Lcom/google/android/gms/internal/play_billing/zzfu; +HSPLcom/google/android/gms/internal/play_billing/zzfu;->()V +HSPLcom/google/android/gms/internal/play_billing/zzfu;->()V +HSPLcom/google/android/gms/internal/play_billing/zzfu;->zza(Ljava/lang/Class;)Lcom/google/android/gms/internal/play_billing/zzgm; +HSPLcom/google/android/gms/internal/play_billing/zzfu;->zzb(Lcom/google/android/gms/internal/play_billing/zzfz;)Z +Lcom/google/android/gms/internal/play_billing/zzfx; +HSPLcom/google/android/gms/internal/play_billing/zzfx;->()V +Lcom/google/android/gms/internal/play_billing/zzfy; +HSPLcom/google/android/gms/internal/play_billing/zzfy;->()V +HSPLcom/google/android/gms/internal/play_billing/zzfy;->zzb()Lcom/google/android/gms/internal/play_billing/zzfx; +Lcom/google/android/gms/internal/play_billing/zzfz; +Lcom/google/android/gms/internal/play_billing/zzga; +Lcom/google/android/gms/internal/play_billing/zzgb; +Lcom/google/android/gms/internal/play_billing/zzgc; +Lcom/google/android/gms/internal/play_billing/zzgd; +Lcom/google/android/gms/internal/play_billing/zzgf; +HSPLcom/google/android/gms/internal/play_billing/zzgf;->()V +HSPLcom/google/android/gms/internal/play_billing/zzgf;->([I[Ljava/lang/Object;IILcom/google/android/gms/internal/play_billing/zzgc;IZ[IIILcom/google/android/gms/internal/play_billing/zzgh;Lcom/google/android/gms/internal/play_billing/zzfq;Lcom/google/android/gms/internal/play_billing/zzhd;Lcom/google/android/gms/internal/play_billing/zzek;Lcom/google/android/gms/internal/play_billing/zzfx;)V +HSPLcom/google/android/gms/internal/play_billing/zzgf;->zzI(Ljava/lang/Object;I)Z +HSPLcom/google/android/gms/internal/play_billing/zzgf;->zzJ(Ljava/lang/Object;IIII)Z +HSPLcom/google/android/gms/internal/play_billing/zzgf;->zzL(Ljava/lang/Object;)Z +HSPLcom/google/android/gms/internal/play_billing/zzgf;->zzM(Ljava/lang/Object;II)Z +HSPLcom/google/android/gms/internal/play_billing/zzgf;->zzO(ILjava/lang/Object;Lcom/google/android/gms/internal/play_billing/zzhv;)V +HSPLcom/google/android/gms/internal/play_billing/zzgf;->zza(Ljava/lang/Object;)I +HSPLcom/google/android/gms/internal/play_billing/zzgf;->zzf(Ljava/lang/Object;)V +HSPLcom/google/android/gms/internal/play_billing/zzgf;->zzi(Ljava/lang/Object;Lcom/google/android/gms/internal/play_billing/zzhv;)V +HSPLcom/google/android/gms/internal/play_billing/zzgf;->zzl(Ljava/lang/Class;Lcom/google/android/gms/internal/play_billing/zzfz;Lcom/google/android/gms/internal/play_billing/zzgh;Lcom/google/android/gms/internal/play_billing/zzfq;Lcom/google/android/gms/internal/play_billing/zzhd;Lcom/google/android/gms/internal/play_billing/zzek;Lcom/google/android/gms/internal/play_billing/zzfx;)Lcom/google/android/gms/internal/play_billing/zzgf; +HSPLcom/google/android/gms/internal/play_billing/zzgf;->zzp(I)I +HSPLcom/google/android/gms/internal/play_billing/zzgf;->zzr(I)I +HSPLcom/google/android/gms/internal/play_billing/zzgf;->zzs(I)I +HSPLcom/google/android/gms/internal/play_billing/zzgf;->zzv(I)Lcom/google/android/gms/internal/play_billing/zzgm; +HSPLcom/google/android/gms/internal/play_billing/zzgf;->zzz(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/reflect/Field; +Lcom/google/android/gms/internal/play_billing/zzgh; +HSPLcom/google/android/gms/internal/play_billing/zzgh;->()V +Lcom/google/android/gms/internal/play_billing/zzgi; +HSPLcom/google/android/gms/internal/play_billing/zzgi;->()V +HSPLcom/google/android/gms/internal/play_billing/zzgi;->zzb()Lcom/google/android/gms/internal/play_billing/zzgh; +Lcom/google/android/gms/internal/play_billing/zzgk; +HSPLcom/google/android/gms/internal/play_billing/zzgk;->()V +HSPLcom/google/android/gms/internal/play_billing/zzgk;->()V +HSPLcom/google/android/gms/internal/play_billing/zzgk;->zza()Lcom/google/android/gms/internal/play_billing/zzgk; +HSPLcom/google/android/gms/internal/play_billing/zzgk;->zzb(Ljava/lang/Class;)Lcom/google/android/gms/internal/play_billing/zzgm; +Lcom/google/android/gms/internal/play_billing/zzgl; +HSPLcom/google/android/gms/internal/play_billing/zzgl;->(Lcom/google/android/gms/internal/play_billing/zzgc;Ljava/lang/String;[Ljava/lang/Object;)V +HSPLcom/google/android/gms/internal/play_billing/zzgl;->zza()Lcom/google/android/gms/internal/play_billing/zzgc; +HSPLcom/google/android/gms/internal/play_billing/zzgl;->zzb()Z +HSPLcom/google/android/gms/internal/play_billing/zzgl;->zzc()I +HSPLcom/google/android/gms/internal/play_billing/zzgl;->zzd()Ljava/lang/String; +HSPLcom/google/android/gms/internal/play_billing/zzgl;->zze()[Ljava/lang/Object; +Lcom/google/android/gms/internal/play_billing/zzgm; +Lcom/google/android/gms/internal/play_billing/zzgn; +Lcom/google/android/gms/internal/play_billing/zzgo; +HSPLcom/google/android/gms/internal/play_billing/zzgo;->()V +HSPLcom/google/android/gms/internal/play_billing/zzgo;->zzh(ILjava/lang/Object;Lcom/google/android/gms/internal/play_billing/zzgm;)I +HSPLcom/google/android/gms/internal/play_billing/zzgo;->zzn()Lcom/google/android/gms/internal/play_billing/zzhd; +HSPLcom/google/android/gms/internal/play_billing/zzgo;->zzq(Ljava/lang/Class;)V +Lcom/google/android/gms/internal/play_billing/zzhc; +Lcom/google/android/gms/internal/play_billing/zzhd; +HSPLcom/google/android/gms/internal/play_billing/zzhd;->()V +Lcom/google/android/gms/internal/play_billing/zzhe; +HSPLcom/google/android/gms/internal/play_billing/zzhe;->()V +HSPLcom/google/android/gms/internal/play_billing/zzhe;->(I[I[Ljava/lang/Object;Z)V +HSPLcom/google/android/gms/internal/play_billing/zzhe;->zza()I +HSPLcom/google/android/gms/internal/play_billing/zzhe;->zzc()Lcom/google/android/gms/internal/play_billing/zzhe; +HSPLcom/google/android/gms/internal/play_billing/zzhe;->zzh()V +HSPLcom/google/android/gms/internal/play_billing/zzhe;->zzk(Lcom/google/android/gms/internal/play_billing/zzhv;)V +Lcom/google/android/gms/internal/play_billing/zzhf; +HSPLcom/google/android/gms/internal/play_billing/zzhf;->()V +HSPLcom/google/android/gms/internal/play_billing/zzhf;->zza(Ljava/lang/Object;)I +HSPLcom/google/android/gms/internal/play_billing/zzhf;->zzd(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/android/gms/internal/play_billing/zzhf;->zzg(Ljava/lang/Object;)V +HSPLcom/google/android/gms/internal/play_billing/zzhf;->zzi(Ljava/lang/Object;Lcom/google/android/gms/internal/play_billing/zzhv;)V +Lcom/google/android/gms/internal/play_billing/zzhj; +HSPLcom/google/android/gms/internal/play_billing/zzhj;->()V +HSPLcom/google/android/gms/internal/play_billing/zzhj;->run()Ljava/lang/Object; +Lcom/google/android/gms/internal/play_billing/zzhl; +HSPLcom/google/android/gms/internal/play_billing/zzhl;->(Lsun/misc/Unsafe;)V +Lcom/google/android/gms/internal/play_billing/zzhm; +HSPLcom/google/android/gms/internal/play_billing/zzhm;->(Lsun/misc/Unsafe;)V +Lcom/google/android/gms/internal/play_billing/zzhn; +HSPLcom/google/android/gms/internal/play_billing/zzhn;->()V +HSPLcom/google/android/gms/internal/play_billing/zzhn;->zzA(Ljava/lang/Class;)I +HSPLcom/google/android/gms/internal/play_billing/zzhn;->zzB()Ljava/lang/reflect/Field; +HSPLcom/google/android/gms/internal/play_billing/zzhn;->zzC(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/reflect/Field; +HSPLcom/google/android/gms/internal/play_billing/zzhn;->zzc(Ljava/lang/Object;J)I +HSPLcom/google/android/gms/internal/play_billing/zzhn;->zzg()Lsun/misc/Unsafe; +HSPLcom/google/android/gms/internal/play_billing/zzhn;->zzv(Ljava/lang/Class;)Z +HSPLcom/google/android/gms/internal/play_billing/zzhn;->zzx()Z +HSPLcom/google/android/gms/internal/play_billing/zzhn;->zzy()Z +HSPLcom/google/android/gms/internal/play_billing/zzhn;->zzz(Ljava/lang/Class;)I +Lcom/google/android/gms/internal/play_billing/zzhp; +HSPLcom/google/android/gms/internal/play_billing/zzhp;->()V +Lcom/google/android/gms/internal/play_billing/zzhq; +HSPLcom/google/android/gms/internal/play_billing/zzhq;->()V +Lcom/google/android/gms/internal/play_billing/zzhr; +Lcom/google/android/gms/internal/play_billing/zzhs; +HSPLcom/google/android/gms/internal/play_billing/zzhs;->()V +HSPLcom/google/android/gms/internal/play_billing/zzhs;->zzb(Ljava/lang/CharSequence;[BII)I +HSPLcom/google/android/gms/internal/play_billing/zzhs;->zzc(Ljava/lang/CharSequence;)I +Lcom/google/android/gms/internal/play_billing/zzhv; +Lcom/google/android/gms/internal/play_billing/zzhx; +HSPLcom/google/android/gms/internal/play_billing/zzhx;->(Lcom/google/android/gms/internal/play_billing/zzhw;)V +HSPLcom/google/android/gms/internal/play_billing/zzhx;->zzi(Lcom/google/android/gms/internal/play_billing/zzie;)Lcom/google/android/gms/internal/play_billing/zzhx; +HSPLcom/google/android/gms/internal/play_billing/zzhx;->zzk(I)Lcom/google/android/gms/internal/play_billing/zzhx; +Lcom/google/android/gms/internal/play_billing/zzhy; +HSPLcom/google/android/gms/internal/play_billing/zzhy;->()V +HSPLcom/google/android/gms/internal/play_billing/zzhy;->()V +HSPLcom/google/android/gms/internal/play_billing/zzhy;->zzA(Lcom/google/android/gms/internal/play_billing/zzhy;I)V +HSPLcom/google/android/gms/internal/play_billing/zzhy;->zzu(ILjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/android/gms/internal/play_billing/zzhy;->zzv()Lcom/google/android/gms/internal/play_billing/zzhx; +HSPLcom/google/android/gms/internal/play_billing/zzhy;->zzw()Lcom/google/android/gms/internal/play_billing/zzhy; +HSPLcom/google/android/gms/internal/play_billing/zzhy;->zzy(Lcom/google/android/gms/internal/play_billing/zzhy;Lcom/google/android/gms/internal/play_billing/zzii;)V +Lcom/google/android/gms/internal/play_billing/zzhz; +HSPLcom/google/android/gms/internal/play_billing/zzhz;->()V +HSPLcom/google/android/gms/internal/play_billing/zzhz;->()V +Lcom/google/android/gms/internal/play_billing/zzic; +Lcom/google/android/gms/internal/play_billing/zzie; +HSPLcom/google/android/gms/internal/play_billing/zzie;->(Lcom/google/android/gms/internal/play_billing/zzid;)V +HSPLcom/google/android/gms/internal/play_billing/zzie;->zzj(Ljava/lang/String;)Lcom/google/android/gms/internal/play_billing/zzie; +HSPLcom/google/android/gms/internal/play_billing/zzie;->zzk(I)Lcom/google/android/gms/internal/play_billing/zzie; +HSPLcom/google/android/gms/internal/play_billing/zzie;->zzl(I)Lcom/google/android/gms/internal/play_billing/zzie; +Lcom/google/android/gms/internal/play_billing/zzig; +HSPLcom/google/android/gms/internal/play_billing/zzig;->()V +HSPLcom/google/android/gms/internal/play_billing/zzig;->()V +Lcom/google/android/gms/internal/play_billing/zzii; +HSPLcom/google/android/gms/internal/play_billing/zzii;->()V +HSPLcom/google/android/gms/internal/play_billing/zzii;->()V +HSPLcom/google/android/gms/internal/play_billing/zzii;->zzA(Lcom/google/android/gms/internal/play_billing/zzii;I)V +HSPLcom/google/android/gms/internal/play_billing/zzii;->zzu(ILjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/android/gms/internal/play_billing/zzii;->zzv()Lcom/google/android/gms/internal/play_billing/zzie; +HSPLcom/google/android/gms/internal/play_billing/zzii;->zzw()Lcom/google/android/gms/internal/play_billing/zzii; +HSPLcom/google/android/gms/internal/play_billing/zzii;->zzx(Lcom/google/android/gms/internal/play_billing/zzii;I)V +HSPLcom/google/android/gms/internal/play_billing/zzii;->zzy(Lcom/google/android/gms/internal/play_billing/zzii;Ljava/lang/String;)V +Lcom/google/android/gms/internal/play_billing/zzil; +Lcom/google/android/gms/internal/play_billing/zzin; +HSPLcom/google/android/gms/internal/play_billing/zzin;->(Lcom/google/android/gms/internal/play_billing/zzim;)V +HSPLcom/google/android/gms/internal/play_billing/zzin;->zzi(Ljava/lang/String;)Lcom/google/android/gms/internal/play_billing/zzin; +HSPLcom/google/android/gms/internal/play_billing/zzin;->zzj(Ljava/lang/String;)Lcom/google/android/gms/internal/play_billing/zzin; +Lcom/google/android/gms/internal/play_billing/zzio; +HSPLcom/google/android/gms/internal/play_billing/zzio;->()V +HSPLcom/google/android/gms/internal/play_billing/zzio;->()V +HSPLcom/google/android/gms/internal/play_billing/zzio;->zzu(ILjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/android/gms/internal/play_billing/zzio;->zzv()Lcom/google/android/gms/internal/play_billing/zzin; +HSPLcom/google/android/gms/internal/play_billing/zzio;->zzw()Lcom/google/android/gms/internal/play_billing/zzio; +HSPLcom/google/android/gms/internal/play_billing/zzio;->zzx(Lcom/google/android/gms/internal/play_billing/zzio;Ljava/lang/String;)V +HSPLcom/google/android/gms/internal/play_billing/zzio;->zzy(Lcom/google/android/gms/internal/play_billing/zzio;Ljava/lang/String;)V +Lcom/google/android/gms/internal/play_billing/zzis; +Lcom/google/android/gms/internal/play_billing/zziu; +HSPLcom/google/android/gms/internal/play_billing/zziu;->(Lcom/google/android/gms/internal/play_billing/zzit;)V +HSPLcom/google/android/gms/internal/play_billing/zziu;->zzi(Lcom/google/android/gms/internal/play_billing/zzhy;)Lcom/google/android/gms/internal/play_billing/zziu; +HSPLcom/google/android/gms/internal/play_billing/zziu;->zzk(Lcom/google/android/gms/internal/play_billing/zzio;)Lcom/google/android/gms/internal/play_billing/zziu; +Lcom/google/android/gms/internal/play_billing/zziv; +HSPLcom/google/android/gms/internal/play_billing/zziv;->()V +HSPLcom/google/android/gms/internal/play_billing/zziv;->()V +HSPLcom/google/android/gms/internal/play_billing/zziv;->zzu(ILjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/android/gms/internal/play_billing/zziv;->zzv()Lcom/google/android/gms/internal/play_billing/zziu; +HSPLcom/google/android/gms/internal/play_billing/zziv;->zzw()Lcom/google/android/gms/internal/play_billing/zziv; +HSPLcom/google/android/gms/internal/play_billing/zziv;->zzy(Lcom/google/android/gms/internal/play_billing/zziv;Lcom/google/android/gms/internal/play_billing/zzio;)V +HSPLcom/google/android/gms/internal/play_billing/zziv;->zzz(Lcom/google/android/gms/internal/play_billing/zziv;Lcom/google/android/gms/internal/play_billing/zzhy;)V +Lcom/google/android/gms/internal/play_billing/zziz; +Lcom/google/android/gms/internal/play_billing/zzk; +HSPLcom/google/android/gms/internal/play_billing/zzk;->(Landroid/os/IBinder;)V +HSPLcom/google/android/gms/internal/play_billing/zzk;->zzv(ILjava/lang/String;Ljava/lang/String;)I +Lcom/google/android/gms/internal/play_billing/zzl; +HSPLcom/google/android/gms/internal/play_billing/zzl;->zzr(Landroid/os/IBinder;)Lcom/google/android/gms/internal/play_billing/zzm; +Lcom/google/android/gms/internal/play_billing/zzm; +Lcom/google/android/gms/internal/play_billing/zzp; +HSPLcom/google/android/gms/internal/play_billing/zzp;->(Landroid/os/IBinder;Ljava/lang/String;)V +HSPLcom/google/android/gms/internal/play_billing/zzp;->zzr()Landroid/os/Parcel; +HSPLcom/google/android/gms/internal/play_billing/zzp;->zzs(ILandroid/os/Parcel;)Landroid/os/Parcel; +Lcom/google/android/gms/internal/play_billing/zzq; +Lcom/google/android/gms/internal/tasks/zza; +HSPLcom/google/android/gms/internal/tasks/zza;->(Landroid/os/Looper;)V +Lcom/google/android/gms/measurement/api/AppMeasurementSdk; +HSPLcom/google/android/gms/measurement/api/AppMeasurementSdk;->(Lcom/google/android/gms/internal/measurement/zzdf;)V +HSPLcom/google/android/gms/measurement/api/AppMeasurementSdk;->registerOnMeasurementEventListener(Lcom/google/android/gms/measurement/api/AppMeasurementSdk$OnEventListener;)V +Lcom/google/android/gms/measurement/api/AppMeasurementSdk$OnEventListener; +Lcom/google/android/gms/measurement/internal/AppMeasurementDynamiteService; +HSPLcom/google/android/gms/measurement/internal/AppMeasurementDynamiteService;->()V +HSPLcom/google/android/gms/measurement/internal/AppMeasurementDynamiteService;->initialize(Lcom/google/android/gms/dynamic/IObjectWrapper;Lcom/google/android/gms/internal/measurement/zzdd;J)V +HSPLcom/google/android/gms/measurement/internal/AppMeasurementDynamiteService;->onActivityCreated(Lcom/google/android/gms/dynamic/IObjectWrapper;Landroid/os/Bundle;J)V +HSPLcom/google/android/gms/measurement/internal/AppMeasurementDynamiteService;->onActivityResumed(Lcom/google/android/gms/dynamic/IObjectWrapper;J)V +HSPLcom/google/android/gms/measurement/internal/AppMeasurementDynamiteService;->onActivityStarted(Lcom/google/android/gms/dynamic/IObjectWrapper;J)V +HSPLcom/google/android/gms/measurement/internal/AppMeasurementDynamiteService;->registerOnMeasurementEventListener(Lcom/google/android/gms/internal/measurement/zzda;)V +HSPLcom/google/android/gms/measurement/internal/AppMeasurementDynamiteService;->zza()V +Lcom/google/android/gms/measurement/internal/AppMeasurementDynamiteService$zzb; +HSPLcom/google/android/gms/measurement/internal/AppMeasurementDynamiteService$zzb;->(Lcom/google/android/gms/measurement/internal/AppMeasurementDynamiteService;Lcom/google/android/gms/internal/measurement/zzda;)V +Lcom/google/android/gms/measurement/internal/zzae; +HSPLcom/google/android/gms/measurement/internal/zzae;->(Landroid/content/Context;)V +HSPLcom/google/android/gms/measurement/internal/zzae;->zza()Z +Lcom/google/android/gms/measurement/internal/zzaf; +HSPLcom/google/android/gms/measurement/internal/zzaf;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zzaf;->zza()Landroid/content/Context; +HSPLcom/google/android/gms/measurement/internal/zzaf;->zza(Lcom/google/android/gms/measurement/internal/zzfi;)Z +HSPLcom/google/android/gms/measurement/internal/zzaf;->zza(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzaf;->zzb(Ljava/lang/String;)I +HSPLcom/google/android/gms/measurement/internal/zzaf;->zze()Lcom/google/android/gms/measurement/internal/zzaf; +HSPLcom/google/android/gms/measurement/internal/zzaf;->zzf(Ljava/lang/String;Lcom/google/android/gms/measurement/internal/zzfi;)Z +HSPLcom/google/android/gms/measurement/internal/zzaf;->zzg(Ljava/lang/String;)Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzaf;->zzi(Ljava/lang/String;)Ljava/util/List; +HSPLcom/google/android/gms/measurement/internal/zzaf;->zzn()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzaf;->zzp()Z +HSPLcom/google/android/gms/measurement/internal/zzaf;->zzu()Z +HSPLcom/google/android/gms/measurement/internal/zzaf;->zzv()Z +HSPLcom/google/android/gms/measurement/internal/zzaf;->zzw()Z +HSPLcom/google/android/gms/measurement/internal/zzaf;->zzy()Landroid/os/Bundle; +Lcom/google/android/gms/measurement/internal/zzah; +Lcom/google/android/gms/measurement/internal/zzai; +HSPLcom/google/android/gms/measurement/internal/zzai;->()V +HSPLcom/google/android/gms/measurement/internal/zzai;->()V +Lcom/google/android/gms/measurement/internal/zzav; +HSPLcom/google/android/gms/measurement/internal/zzav;->(Lcom/google/android/gms/measurement/internal/zzaw;Lcom/google/android/gms/measurement/internal/zzif;)V +PLcom/google/android/gms/measurement/internal/zzav;->run()V +Lcom/google/android/gms/measurement/internal/zzaw; +HSPLcom/google/android/gms/measurement/internal/zzaw;->(Lcom/google/android/gms/measurement/internal/zzif;)V +HSPLcom/google/android/gms/measurement/internal/zzaw;->zza()V +HSPLcom/google/android/gms/measurement/internal/zzaw;->zza(J)V +PLcom/google/android/gms/measurement/internal/zzaw;->zza(Lcom/google/android/gms/measurement/internal/zzaw;J)V +PLcom/google/android/gms/measurement/internal/zzaw;->zzc()Z +HSPLcom/google/android/gms/measurement/internal/zzaw;->zzd()Landroid/os/Handler; +Lcom/google/android/gms/measurement/internal/zzb; +HSPLcom/google/android/gms/measurement/internal/zzb;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zzb;->zza(Lcom/google/android/gms/measurement/internal/zzb;J)V +HSPLcom/google/android/gms/measurement/internal/zzb;->zzb()Lcom/google/android/gms/common/util/Clock; +HSPLcom/google/android/gms/measurement/internal/zzb;->zzb(J)V +HSPLcom/google/android/gms/measurement/internal/zzb;->zzl()Lcom/google/android/gms/measurement/internal/zzgy; +Lcom/google/android/gms/measurement/internal/zzba; +HSPLcom/google/android/gms/measurement/internal/zzba;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zzba;->zzo()Z +Lcom/google/android/gms/measurement/internal/zzbi; +HSPLcom/google/android/gms/measurement/internal/zzbi;->()V +HSPLcom/google/android/gms/measurement/internal/zzbi;->zza()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zza(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Lcom/google/android/gms/measurement/internal/zzfg;)Lcom/google/android/gms/measurement/internal/zzfi; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzaa()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzab()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzac()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzad()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzae()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzaf()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzag()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzah()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzai()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzaj()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzak()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzal()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzam()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzan()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzao()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzap()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzaq()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzar()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzas()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzat()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzau()Ljava/lang/Double; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzav()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzaw()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzax()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzay()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzaz()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzb()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzba()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbb()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbc()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbd()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbe()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbf()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbg()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbh()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbi()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbj()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbk()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbl()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbm()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbn()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbo()Ljava/lang/Integer; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbp()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbq()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbr()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbs()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbt()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbu()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbv()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbw()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbx()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzby()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzbz()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzc()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzca()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzcb()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzcc()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzcd()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzce()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzcf()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzcg()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzch()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzci()Ljava/lang/Long; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzcj()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzck()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzcl()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzcm()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzcn()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzco()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzcp()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzcq()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzcr()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzcs()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzct()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzcu()Ljava/util/List; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzd()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zze()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzf()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzg()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzh()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzi()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzj()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzk()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzl()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzm()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzn()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzo()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzp()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzq()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzr()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzs()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzt()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzu()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzv()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzw()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzx()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzy()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzbi;->zzz()Ljava/lang/Boolean; +Lcom/google/android/gms/measurement/internal/zzbj; +HSPLcom/google/android/gms/measurement/internal/zzbj;->()V +HSPLcom/google/android/gms/measurement/internal/zzbj;->()V +HSPLcom/google/android/gms/measurement/internal/zzbj;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzbk; +HSPLcom/google/android/gms/measurement/internal/zzbk;->()V +HSPLcom/google/android/gms/measurement/internal/zzbk;->()V +HSPLcom/google/android/gms/measurement/internal/zzbk;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzbl; +HSPLcom/google/android/gms/measurement/internal/zzbl;->()V +HSPLcom/google/android/gms/measurement/internal/zzbl;->()V +HSPLcom/google/android/gms/measurement/internal/zzbl;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzbm; +HSPLcom/google/android/gms/measurement/internal/zzbm;->()V +HSPLcom/google/android/gms/measurement/internal/zzbm;->()V +HSPLcom/google/android/gms/measurement/internal/zzbm;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzbn; +HSPLcom/google/android/gms/measurement/internal/zzbn;->()V +HSPLcom/google/android/gms/measurement/internal/zzbn;->()V +HSPLcom/google/android/gms/measurement/internal/zzbn;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzbo; +HSPLcom/google/android/gms/measurement/internal/zzbo;->()V +HSPLcom/google/android/gms/measurement/internal/zzbo;->()V +HSPLcom/google/android/gms/measurement/internal/zzbo;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzbp; +HSPLcom/google/android/gms/measurement/internal/zzbp;->()V +HSPLcom/google/android/gms/measurement/internal/zzbp;->()V +HSPLcom/google/android/gms/measurement/internal/zzbp;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzbq; +HSPLcom/google/android/gms/measurement/internal/zzbq;->()V +HSPLcom/google/android/gms/measurement/internal/zzbq;->()V +HSPLcom/google/android/gms/measurement/internal/zzbq;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzbr; +HSPLcom/google/android/gms/measurement/internal/zzbr;->()V +HSPLcom/google/android/gms/measurement/internal/zzbr;->()V +HSPLcom/google/android/gms/measurement/internal/zzbr;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzbs; +HSPLcom/google/android/gms/measurement/internal/zzbs;->()V +HSPLcom/google/android/gms/measurement/internal/zzbs;->()V +HSPLcom/google/android/gms/measurement/internal/zzbs;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzbt; +HSPLcom/google/android/gms/measurement/internal/zzbt;->()V +HSPLcom/google/android/gms/measurement/internal/zzbt;->()V +HSPLcom/google/android/gms/measurement/internal/zzbt;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzbu; +HSPLcom/google/android/gms/measurement/internal/zzbu;->()V +HSPLcom/google/android/gms/measurement/internal/zzbu;->()V +HSPLcom/google/android/gms/measurement/internal/zzbu;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzbv; +HSPLcom/google/android/gms/measurement/internal/zzbv;->()V +HSPLcom/google/android/gms/measurement/internal/zzbv;->()V +HSPLcom/google/android/gms/measurement/internal/zzbv;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzbw; +HSPLcom/google/android/gms/measurement/internal/zzbw;->()V +HSPLcom/google/android/gms/measurement/internal/zzbw;->()V +HSPLcom/google/android/gms/measurement/internal/zzbw;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzbx; +HSPLcom/google/android/gms/measurement/internal/zzbx;->()V +HSPLcom/google/android/gms/measurement/internal/zzbx;->()V +HSPLcom/google/android/gms/measurement/internal/zzbx;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzby; +HSPLcom/google/android/gms/measurement/internal/zzby;->()V +HSPLcom/google/android/gms/measurement/internal/zzby;->()V +HSPLcom/google/android/gms/measurement/internal/zzby;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzbz; +HSPLcom/google/android/gms/measurement/internal/zzbz;->()V +HSPLcom/google/android/gms/measurement/internal/zzbz;->()V +HSPLcom/google/android/gms/measurement/internal/zzbz;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzc; +HSPLcom/google/android/gms/measurement/internal/zzc;->(Lcom/google/android/gms/measurement/internal/zzb;J)V +HSPLcom/google/android/gms/measurement/internal/zzc;->run()V +Lcom/google/android/gms/measurement/internal/zzca; +HSPLcom/google/android/gms/measurement/internal/zzca;->()V +HSPLcom/google/android/gms/measurement/internal/zzca;->()V +HSPLcom/google/android/gms/measurement/internal/zzca;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcb; +HSPLcom/google/android/gms/measurement/internal/zzcb;->()V +HSPLcom/google/android/gms/measurement/internal/zzcb;->()V +HSPLcom/google/android/gms/measurement/internal/zzcb;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcc; +HSPLcom/google/android/gms/measurement/internal/zzcc;->()V +HSPLcom/google/android/gms/measurement/internal/zzcc;->()V +HSPLcom/google/android/gms/measurement/internal/zzcc;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcd; +HSPLcom/google/android/gms/measurement/internal/zzcd;->()V +HSPLcom/google/android/gms/measurement/internal/zzcd;->()V +HSPLcom/google/android/gms/measurement/internal/zzcd;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzce; +HSPLcom/google/android/gms/measurement/internal/zzce;->()V +HSPLcom/google/android/gms/measurement/internal/zzce;->()V +HSPLcom/google/android/gms/measurement/internal/zzce;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcf; +HSPLcom/google/android/gms/measurement/internal/zzcf;->()V +HSPLcom/google/android/gms/measurement/internal/zzcf;->()V +HSPLcom/google/android/gms/measurement/internal/zzcf;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcg; +HSPLcom/google/android/gms/measurement/internal/zzcg;->()V +HSPLcom/google/android/gms/measurement/internal/zzcg;->()V +HSPLcom/google/android/gms/measurement/internal/zzcg;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzch; +HSPLcom/google/android/gms/measurement/internal/zzch;->()V +HSPLcom/google/android/gms/measurement/internal/zzch;->()V +HSPLcom/google/android/gms/measurement/internal/zzch;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzci; +HSPLcom/google/android/gms/measurement/internal/zzci;->()V +HSPLcom/google/android/gms/measurement/internal/zzci;->()V +HSPLcom/google/android/gms/measurement/internal/zzci;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcj; +HSPLcom/google/android/gms/measurement/internal/zzcj;->()V +HSPLcom/google/android/gms/measurement/internal/zzcj;->()V +HSPLcom/google/android/gms/measurement/internal/zzcj;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzck; +HSPLcom/google/android/gms/measurement/internal/zzck;->()V +HSPLcom/google/android/gms/measurement/internal/zzck;->()V +HSPLcom/google/android/gms/measurement/internal/zzck;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcl; +HSPLcom/google/android/gms/measurement/internal/zzcl;->()V +HSPLcom/google/android/gms/measurement/internal/zzcl;->()V +HSPLcom/google/android/gms/measurement/internal/zzcl;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcm; +HSPLcom/google/android/gms/measurement/internal/zzcm;->()V +HSPLcom/google/android/gms/measurement/internal/zzcm;->()V +HSPLcom/google/android/gms/measurement/internal/zzcm;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcn; +HSPLcom/google/android/gms/measurement/internal/zzcn;->()V +HSPLcom/google/android/gms/measurement/internal/zzcn;->()V +HSPLcom/google/android/gms/measurement/internal/zzcn;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzco; +HSPLcom/google/android/gms/measurement/internal/zzco;->()V +HSPLcom/google/android/gms/measurement/internal/zzco;->()V +HSPLcom/google/android/gms/measurement/internal/zzco;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcp; +HSPLcom/google/android/gms/measurement/internal/zzcp;->()V +HSPLcom/google/android/gms/measurement/internal/zzcp;->()V +HSPLcom/google/android/gms/measurement/internal/zzcp;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcq; +HSPLcom/google/android/gms/measurement/internal/zzcq;->()V +HSPLcom/google/android/gms/measurement/internal/zzcq;->()V +HSPLcom/google/android/gms/measurement/internal/zzcq;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcr; +HSPLcom/google/android/gms/measurement/internal/zzcr;->()V +HSPLcom/google/android/gms/measurement/internal/zzcr;->()V +HSPLcom/google/android/gms/measurement/internal/zzcr;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcs; +HSPLcom/google/android/gms/measurement/internal/zzcs;->()V +HSPLcom/google/android/gms/measurement/internal/zzcs;->()V +HSPLcom/google/android/gms/measurement/internal/zzcs;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzct; +HSPLcom/google/android/gms/measurement/internal/zzct;->()V +HSPLcom/google/android/gms/measurement/internal/zzct;->()V +HSPLcom/google/android/gms/measurement/internal/zzct;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcu; +HSPLcom/google/android/gms/measurement/internal/zzcu;->()V +HSPLcom/google/android/gms/measurement/internal/zzcu;->()V +HSPLcom/google/android/gms/measurement/internal/zzcu;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcv; +HSPLcom/google/android/gms/measurement/internal/zzcv;->()V +HSPLcom/google/android/gms/measurement/internal/zzcv;->()V +HSPLcom/google/android/gms/measurement/internal/zzcv;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcw; +HSPLcom/google/android/gms/measurement/internal/zzcw;->()V +HSPLcom/google/android/gms/measurement/internal/zzcw;->()V +HSPLcom/google/android/gms/measurement/internal/zzcw;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcx; +HSPLcom/google/android/gms/measurement/internal/zzcx;->()V +HSPLcom/google/android/gms/measurement/internal/zzcx;->()V +HSPLcom/google/android/gms/measurement/internal/zzcx;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcy; +HSPLcom/google/android/gms/measurement/internal/zzcy;->()V +HSPLcom/google/android/gms/measurement/internal/zzcy;->()V +HSPLcom/google/android/gms/measurement/internal/zzcy;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzcz; +HSPLcom/google/android/gms/measurement/internal/zzcz;->()V +HSPLcom/google/android/gms/measurement/internal/zzcz;->()V +HSPLcom/google/android/gms/measurement/internal/zzcz;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzda; +HSPLcom/google/android/gms/measurement/internal/zzda;->()V +HSPLcom/google/android/gms/measurement/internal/zzda;->()V +HSPLcom/google/android/gms/measurement/internal/zzda;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdb; +HSPLcom/google/android/gms/measurement/internal/zzdb;->()V +HSPLcom/google/android/gms/measurement/internal/zzdb;->()V +HSPLcom/google/android/gms/measurement/internal/zzdb;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdc; +HSPLcom/google/android/gms/measurement/internal/zzdc;->()V +HSPLcom/google/android/gms/measurement/internal/zzdc;->()V +HSPLcom/google/android/gms/measurement/internal/zzdc;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdd; +HSPLcom/google/android/gms/measurement/internal/zzdd;->()V +HSPLcom/google/android/gms/measurement/internal/zzdd;->()V +HSPLcom/google/android/gms/measurement/internal/zzdd;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzde; +HSPLcom/google/android/gms/measurement/internal/zzde;->()V +HSPLcom/google/android/gms/measurement/internal/zzde;->()V +HSPLcom/google/android/gms/measurement/internal/zzde;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdf; +HSPLcom/google/android/gms/measurement/internal/zzdf;->()V +HSPLcom/google/android/gms/measurement/internal/zzdf;->()V +HSPLcom/google/android/gms/measurement/internal/zzdf;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdg; +HSPLcom/google/android/gms/measurement/internal/zzdg;->()V +HSPLcom/google/android/gms/measurement/internal/zzdg;->()V +HSPLcom/google/android/gms/measurement/internal/zzdg;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdh; +HSPLcom/google/android/gms/measurement/internal/zzdh;->()V +HSPLcom/google/android/gms/measurement/internal/zzdh;->()V +HSPLcom/google/android/gms/measurement/internal/zzdh;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdi; +HSPLcom/google/android/gms/measurement/internal/zzdi;->()V +HSPLcom/google/android/gms/measurement/internal/zzdi;->()V +HSPLcom/google/android/gms/measurement/internal/zzdi;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdj; +HSPLcom/google/android/gms/measurement/internal/zzdj;->()V +HSPLcom/google/android/gms/measurement/internal/zzdj;->()V +HSPLcom/google/android/gms/measurement/internal/zzdj;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdk; +HSPLcom/google/android/gms/measurement/internal/zzdk;->()V +HSPLcom/google/android/gms/measurement/internal/zzdk;->()V +HSPLcom/google/android/gms/measurement/internal/zzdk;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdl; +HSPLcom/google/android/gms/measurement/internal/zzdl;->()V +HSPLcom/google/android/gms/measurement/internal/zzdl;->()V +HSPLcom/google/android/gms/measurement/internal/zzdl;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdm; +HSPLcom/google/android/gms/measurement/internal/zzdm;->()V +HSPLcom/google/android/gms/measurement/internal/zzdm;->()V +HSPLcom/google/android/gms/measurement/internal/zzdm;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdn; +HSPLcom/google/android/gms/measurement/internal/zzdn;->()V +HSPLcom/google/android/gms/measurement/internal/zzdn;->()V +HSPLcom/google/android/gms/measurement/internal/zzdn;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdo; +HSPLcom/google/android/gms/measurement/internal/zzdo;->()V +HSPLcom/google/android/gms/measurement/internal/zzdo;->()V +HSPLcom/google/android/gms/measurement/internal/zzdo;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdp; +HSPLcom/google/android/gms/measurement/internal/zzdp;->()V +HSPLcom/google/android/gms/measurement/internal/zzdp;->()V +HSPLcom/google/android/gms/measurement/internal/zzdp;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdq; +HSPLcom/google/android/gms/measurement/internal/zzdq;->()V +HSPLcom/google/android/gms/measurement/internal/zzdq;->()V +HSPLcom/google/android/gms/measurement/internal/zzdq;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdr; +HSPLcom/google/android/gms/measurement/internal/zzdr;->()V +HSPLcom/google/android/gms/measurement/internal/zzdr;->()V +HSPLcom/google/android/gms/measurement/internal/zzdr;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzds; +HSPLcom/google/android/gms/measurement/internal/zzds;->()V +HSPLcom/google/android/gms/measurement/internal/zzds;->()V +HSPLcom/google/android/gms/measurement/internal/zzds;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdt; +HSPLcom/google/android/gms/measurement/internal/zzdt;->()V +HSPLcom/google/android/gms/measurement/internal/zzdt;->()V +HSPLcom/google/android/gms/measurement/internal/zzdt;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdu; +HSPLcom/google/android/gms/measurement/internal/zzdu;->()V +HSPLcom/google/android/gms/measurement/internal/zzdu;->()V +HSPLcom/google/android/gms/measurement/internal/zzdu;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdv; +HSPLcom/google/android/gms/measurement/internal/zzdv;->()V +HSPLcom/google/android/gms/measurement/internal/zzdv;->()V +HSPLcom/google/android/gms/measurement/internal/zzdv;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdw; +HSPLcom/google/android/gms/measurement/internal/zzdw;->()V +HSPLcom/google/android/gms/measurement/internal/zzdw;->()V +HSPLcom/google/android/gms/measurement/internal/zzdw;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdx; +HSPLcom/google/android/gms/measurement/internal/zzdx;->()V +HSPLcom/google/android/gms/measurement/internal/zzdx;->()V +HSPLcom/google/android/gms/measurement/internal/zzdx;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdy; +HSPLcom/google/android/gms/measurement/internal/zzdy;->()V +HSPLcom/google/android/gms/measurement/internal/zzdy;->()V +HSPLcom/google/android/gms/measurement/internal/zzdy;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzdz; +HSPLcom/google/android/gms/measurement/internal/zzdz;->()V +HSPLcom/google/android/gms/measurement/internal/zzdz;->()V +HSPLcom/google/android/gms/measurement/internal/zzdz;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zze; +HSPLcom/google/android/gms/measurement/internal/zze;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zze;->zzu()V +HSPLcom/google/android/gms/measurement/internal/zze;->zzv()V +HSPLcom/google/android/gms/measurement/internal/zze;->zzw()V +HSPLcom/google/android/gms/measurement/internal/zze;->zzy()Z +Lcom/google/android/gms/measurement/internal/zzea; +HSPLcom/google/android/gms/measurement/internal/zzea;->()V +HSPLcom/google/android/gms/measurement/internal/zzea;->()V +HSPLcom/google/android/gms/measurement/internal/zzea;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzeb; +HSPLcom/google/android/gms/measurement/internal/zzeb;->()V +HSPLcom/google/android/gms/measurement/internal/zzeb;->()V +HSPLcom/google/android/gms/measurement/internal/zzeb;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzec; +HSPLcom/google/android/gms/measurement/internal/zzec;->()V +HSPLcom/google/android/gms/measurement/internal/zzec;->()V +HSPLcom/google/android/gms/measurement/internal/zzec;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzed; +HSPLcom/google/android/gms/measurement/internal/zzed;->()V +HSPLcom/google/android/gms/measurement/internal/zzed;->()V +HSPLcom/google/android/gms/measurement/internal/zzed;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzee; +HSPLcom/google/android/gms/measurement/internal/zzee;->()V +HSPLcom/google/android/gms/measurement/internal/zzee;->()V +HSPLcom/google/android/gms/measurement/internal/zzee;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzef; +HSPLcom/google/android/gms/measurement/internal/zzef;->()V +HSPLcom/google/android/gms/measurement/internal/zzef;->()V +HSPLcom/google/android/gms/measurement/internal/zzef;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzeg; +HSPLcom/google/android/gms/measurement/internal/zzeg;->()V +HSPLcom/google/android/gms/measurement/internal/zzeg;->()V +HSPLcom/google/android/gms/measurement/internal/zzeg;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzeh; +HSPLcom/google/android/gms/measurement/internal/zzeh;->()V +HSPLcom/google/android/gms/measurement/internal/zzeh;->()V +HSPLcom/google/android/gms/measurement/internal/zzeh;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzei; +HSPLcom/google/android/gms/measurement/internal/zzei;->()V +HSPLcom/google/android/gms/measurement/internal/zzei;->()V +HSPLcom/google/android/gms/measurement/internal/zzei;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzej; +HSPLcom/google/android/gms/measurement/internal/zzej;->()V +HSPLcom/google/android/gms/measurement/internal/zzej;->()V +HSPLcom/google/android/gms/measurement/internal/zzej;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzek; +HSPLcom/google/android/gms/measurement/internal/zzek;->()V +HSPLcom/google/android/gms/measurement/internal/zzek;->()V +HSPLcom/google/android/gms/measurement/internal/zzek;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzel; +HSPLcom/google/android/gms/measurement/internal/zzel;->()V +HSPLcom/google/android/gms/measurement/internal/zzel;->()V +HSPLcom/google/android/gms/measurement/internal/zzel;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzem; +HSPLcom/google/android/gms/measurement/internal/zzem;->()V +HSPLcom/google/android/gms/measurement/internal/zzem;->()V +HSPLcom/google/android/gms/measurement/internal/zzem;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzen; +HSPLcom/google/android/gms/measurement/internal/zzen;->()V +HSPLcom/google/android/gms/measurement/internal/zzen;->()V +HSPLcom/google/android/gms/measurement/internal/zzen;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzeo; +HSPLcom/google/android/gms/measurement/internal/zzeo;->()V +HSPLcom/google/android/gms/measurement/internal/zzeo;->()V +HSPLcom/google/android/gms/measurement/internal/zzeo;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzep; +HSPLcom/google/android/gms/measurement/internal/zzep;->()V +HSPLcom/google/android/gms/measurement/internal/zzep;->()V +HSPLcom/google/android/gms/measurement/internal/zzep;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzeq; +HSPLcom/google/android/gms/measurement/internal/zzeq;->()V +HSPLcom/google/android/gms/measurement/internal/zzeq;->()V +HSPLcom/google/android/gms/measurement/internal/zzeq;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzer; +HSPLcom/google/android/gms/measurement/internal/zzer;->()V +HSPLcom/google/android/gms/measurement/internal/zzer;->()V +HSPLcom/google/android/gms/measurement/internal/zzer;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzes; +HSPLcom/google/android/gms/measurement/internal/zzes;->()V +HSPLcom/google/android/gms/measurement/internal/zzes;->()V +HSPLcom/google/android/gms/measurement/internal/zzes;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzet; +HSPLcom/google/android/gms/measurement/internal/zzet;->()V +HSPLcom/google/android/gms/measurement/internal/zzet;->()V +HSPLcom/google/android/gms/measurement/internal/zzet;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzeu; +HSPLcom/google/android/gms/measurement/internal/zzeu;->()V +HSPLcom/google/android/gms/measurement/internal/zzeu;->()V +HSPLcom/google/android/gms/measurement/internal/zzeu;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzev; +HSPLcom/google/android/gms/measurement/internal/zzev;->()V +HSPLcom/google/android/gms/measurement/internal/zzev;->()V +HSPLcom/google/android/gms/measurement/internal/zzev;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzew; +HSPLcom/google/android/gms/measurement/internal/zzew;->()V +HSPLcom/google/android/gms/measurement/internal/zzew;->()V +HSPLcom/google/android/gms/measurement/internal/zzew;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzex; +HSPLcom/google/android/gms/measurement/internal/zzex;->()V +HSPLcom/google/android/gms/measurement/internal/zzex;->()V +HSPLcom/google/android/gms/measurement/internal/zzex;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzey; +HSPLcom/google/android/gms/measurement/internal/zzey;->()V +HSPLcom/google/android/gms/measurement/internal/zzey;->()V +HSPLcom/google/android/gms/measurement/internal/zzey;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzez; +HSPLcom/google/android/gms/measurement/internal/zzez;->()V +HSPLcom/google/android/gms/measurement/internal/zzez;->()V +HSPLcom/google/android/gms/measurement/internal/zzez;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzf; +HSPLcom/google/android/gms/measurement/internal/zzf;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zzf;->zzc()Lcom/google/android/gms/measurement/internal/zzb; +HSPLcom/google/android/gms/measurement/internal/zzf;->zzg()Lcom/google/android/gms/measurement/internal/zzfl; +HSPLcom/google/android/gms/measurement/internal/zzf;->zzm()Lcom/google/android/gms/measurement/internal/zziq; +HSPLcom/google/android/gms/measurement/internal/zzf;->zzn()Lcom/google/android/gms/measurement/internal/zzkh; +HSPLcom/google/android/gms/measurement/internal/zzf;->zzo()Lcom/google/android/gms/measurement/internal/zzkp; +HSPLcom/google/android/gms/measurement/internal/zzf;->zzp()Lcom/google/android/gms/measurement/internal/zzlx; +HSPLcom/google/android/gms/measurement/internal/zzf;->zzt()V +Lcom/google/android/gms/measurement/internal/zzfa; +HSPLcom/google/android/gms/measurement/internal/zzfa;->()V +HSPLcom/google/android/gms/measurement/internal/zzfa;->()V +HSPLcom/google/android/gms/measurement/internal/zzfa;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzfb; +HSPLcom/google/android/gms/measurement/internal/zzfb;->()V +HSPLcom/google/android/gms/measurement/internal/zzfb;->()V +HSPLcom/google/android/gms/measurement/internal/zzfb;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzfc; +HSPLcom/google/android/gms/measurement/internal/zzfc;->()V +HSPLcom/google/android/gms/measurement/internal/zzfc;->()V +HSPLcom/google/android/gms/measurement/internal/zzfc;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzfd; +HSPLcom/google/android/gms/measurement/internal/zzfd;->()V +HSPLcom/google/android/gms/measurement/internal/zzfd;->()V +HSPLcom/google/android/gms/measurement/internal/zzfd;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzfe; +HSPLcom/google/android/gms/measurement/internal/zzfe;->()V +HSPLcom/google/android/gms/measurement/internal/zzfe;->()V +HSPLcom/google/android/gms/measurement/internal/zzfe;->zza()Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzff; +Lcom/google/android/gms/measurement/internal/zzfg; +Lcom/google/android/gms/measurement/internal/zzfi; +HSPLcom/google/android/gms/measurement/internal/zzfi;->()V +HSPLcom/google/android/gms/measurement/internal/zzfi;->(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Lcom/google/android/gms/measurement/internal/zzfg;)V +HSPLcom/google/android/gms/measurement/internal/zzfi;->(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Lcom/google/android/gms/measurement/internal/zzfg;Lcom/google/android/gms/measurement/internal/zzfh;)V +HSPLcom/google/android/gms/measurement/internal/zzfi;->zza(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/google/android/gms/measurement/internal/zzfk; +Lcom/google/android/gms/measurement/internal/zzfl; +HSPLcom/google/android/gms/measurement/internal/zzfl;->(Lcom/google/android/gms/measurement/internal/zzhf;J)V +HSPLcom/google/android/gms/measurement/internal/zzfl;->zza()Landroid/content/Context; +HSPLcom/google/android/gms/measurement/internal/zzfl;->zza(Ljava/lang/String;)Lcom/google/android/gms/measurement/internal/zzo; +HSPLcom/google/android/gms/measurement/internal/zzfl;->zzaa()I +HSPLcom/google/android/gms/measurement/internal/zzfl;->zzab()I +HSPLcom/google/android/gms/measurement/internal/zzfl;->zzac()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzfl;->zzad()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzfl;->zzae()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzfl;->zzag()V +HSPLcom/google/android/gms/measurement/internal/zzfl;->zzb()Lcom/google/android/gms/common/util/Clock; +HSPLcom/google/android/gms/measurement/internal/zzfl;->zze()Lcom/google/android/gms/measurement/internal/zzaf; +HSPLcom/google/android/gms/measurement/internal/zzfl;->zzj()Lcom/google/android/gms/measurement/internal/zzfr; +HSPLcom/google/android/gms/measurement/internal/zzfl;->zzk()Lcom/google/android/gms/measurement/internal/zzgd; +HSPLcom/google/android/gms/measurement/internal/zzfl;->zzq()Lcom/google/android/gms/measurement/internal/zznd; +HSPLcom/google/android/gms/measurement/internal/zzfl;->zzt()V +HSPLcom/google/android/gms/measurement/internal/zzfl;->zzx()V +HSPLcom/google/android/gms/measurement/internal/zzfl;->zzz()Z +Lcom/google/android/gms/measurement/internal/zzfm; +HSPLcom/google/android/gms/measurement/internal/zzfm;->(Landroid/os/IBinder;)V +HSPLcom/google/android/gms/measurement/internal/zzfm;->zza(JLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/google/android/gms/measurement/internal/zzfm;->zza(Landroid/os/Bundle;Lcom/google/android/gms/measurement/internal/zzo;)V +HSPLcom/google/android/gms/measurement/internal/zzfm;->zzb(Lcom/google/android/gms/measurement/internal/zzo;)Ljava/lang/String; +Lcom/google/android/gms/measurement/internal/zzfn; +HSPLcom/google/android/gms/measurement/internal/zzfn;->(Lcom/google/android/gms/measurement/internal/zzfo;Landroid/content/Context;Ljava/lang/String;)V +Lcom/google/android/gms/measurement/internal/zzfo; +HSPLcom/google/android/gms/measurement/internal/zzfo;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zzfo;->zza()Landroid/content/Context; +HSPLcom/google/android/gms/measurement/internal/zzfo;->zzz()Z +Lcom/google/android/gms/measurement/internal/zzfp; +Lcom/google/android/gms/measurement/internal/zzfq; +HSPLcom/google/android/gms/measurement/internal/zzfq;->()V +HSPLcom/google/android/gms/measurement/internal/zzfq;->(Lcom/google/android/gms/measurement/internal/zzfp;)V +Lcom/google/android/gms/measurement/internal/zzfr; +HSPLcom/google/android/gms/measurement/internal/zzfr;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zzfr;->zza(I)Z +HSPLcom/google/android/gms/measurement/internal/zzfr;->zza(ILjava/lang/String;)V +HSPLcom/google/android/gms/measurement/internal/zzfr;->zza(IZZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V +HSPLcom/google/android/gms/measurement/internal/zzfr;->zza(ZLjava/lang/Object;)Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzfr;->zza(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzfr;->zzc()Lcom/google/android/gms/measurement/internal/zzft; +HSPLcom/google/android/gms/measurement/internal/zzfr;->zzn()Lcom/google/android/gms/measurement/internal/zzft; +HSPLcom/google/android/gms/measurement/internal/zzfr;->zzo()Z +HSPLcom/google/android/gms/measurement/internal/zzfr;->zzp()Lcom/google/android/gms/measurement/internal/zzft; +HSPLcom/google/android/gms/measurement/internal/zzfr;->zzy()Ljava/lang/String; +Lcom/google/android/gms/measurement/internal/zzfs; +HSPLcom/google/android/gms/measurement/internal/zzfs;->(Landroid/content/Context;Landroid/os/Looper;Lcom/google/android/gms/common/internal/BaseGmsClient$BaseConnectionCallbacks;Lcom/google/android/gms/common/internal/BaseGmsClient$BaseOnConnectionFailedListener;)V +HSPLcom/google/android/gms/measurement/internal/zzfs;->createServiceInterface(Landroid/os/IBinder;)Landroid/os/IInterface; +HSPLcom/google/android/gms/measurement/internal/zzfs;->getMinApkVersion()I +HSPLcom/google/android/gms/measurement/internal/zzfs;->getServiceDescriptor()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzfs;->getStartServiceAction()Ljava/lang/String; +Lcom/google/android/gms/measurement/internal/zzft; +HSPLcom/google/android/gms/measurement/internal/zzft;->(Lcom/google/android/gms/measurement/internal/zzfr;IZZ)V +HSPLcom/google/android/gms/measurement/internal/zzft;->zza(Ljava/lang/String;)V +HSPLcom/google/android/gms/measurement/internal/zzft;->zza(Ljava/lang/String;Ljava/lang/Object;)V +Lcom/google/android/gms/measurement/internal/zzgd; +HSPLcom/google/android/gms/measurement/internal/zzgd;->()V +HSPLcom/google/android/gms/measurement/internal/zzgd;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zzgd;->zza(J)Z +HSPLcom/google/android/gms/measurement/internal/zzgd;->zza(Z)V +HSPLcom/google/android/gms/measurement/internal/zzgd;->zzaa()Z +HSPLcom/google/android/gms/measurement/internal/zzgd;->zzb(Ljava/lang/String;)V +HSPLcom/google/android/gms/measurement/internal/zzgd;->zzb(Z)V +HSPLcom/google/android/gms/measurement/internal/zzgd;->zzc()Landroid/content/SharedPreferences; +HSPLcom/google/android/gms/measurement/internal/zzgd;->zzc(Ljava/lang/String;)V +HSPLcom/google/android/gms/measurement/internal/zzgd;->zzm()Lcom/google/android/gms/measurement/internal/zzih; +HSPLcom/google/android/gms/measurement/internal/zzgd;->zzn()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzgd;->zzo()Z +HSPLcom/google/android/gms/measurement/internal/zzgd;->zzu()Ljava/lang/Boolean; +HSPLcom/google/android/gms/measurement/internal/zzgd;->zzw()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzgd;->zzx()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzgd;->zzz()V +Lcom/google/android/gms/measurement/internal/zzgf; +HSPLcom/google/android/gms/measurement/internal/zzgf;->(Lcom/google/android/gms/measurement/internal/zzgd;Ljava/lang/String;Landroid/os/Bundle;)V +HSPLcom/google/android/gms/measurement/internal/zzgf;->zza()Landroid/os/Bundle; +Lcom/google/android/gms/measurement/internal/zzgg; +HSPLcom/google/android/gms/measurement/internal/zzgg;->(Lcom/google/android/gms/measurement/internal/zzgd;Ljava/lang/String;Z)V +HSPLcom/google/android/gms/measurement/internal/zzgg;->zza(Z)V +Lcom/google/android/gms/measurement/internal/zzgh; +HSPLcom/google/android/gms/measurement/internal/zzgh;->(Lcom/google/android/gms/measurement/internal/zzgd;Ljava/lang/String;J)V +HSPLcom/google/android/gms/measurement/internal/zzgh;->(Lcom/google/android/gms/measurement/internal/zzgd;Ljava/lang/String;JLcom/google/android/gms/measurement/internal/zzgk;)V +Lcom/google/android/gms/measurement/internal/zzgi; +HSPLcom/google/android/gms/measurement/internal/zzgi;->(Lcom/google/android/gms/measurement/internal/zzgd;Ljava/lang/String;J)V +HSPLcom/google/android/gms/measurement/internal/zzgi;->zza()J +HSPLcom/google/android/gms/measurement/internal/zzgi;->zza(J)V +Lcom/google/android/gms/measurement/internal/zzgj; +HSPLcom/google/android/gms/measurement/internal/zzgj;->(Lcom/google/android/gms/measurement/internal/zzgd;Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/google/android/gms/measurement/internal/zzgj;->zza()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzgj;->zza(Ljava/lang/String;)V +Lcom/google/android/gms/measurement/internal/zzgy; +HSPLcom/google/android/gms/measurement/internal/zzgy;->()V +HSPLcom/google/android/gms/measurement/internal/zzgy;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zzgy;->zza(Lcom/google/android/gms/measurement/internal/zzhd;)V +HSPLcom/google/android/gms/measurement/internal/zzgy;->zzb(Ljava/lang/Runnable;)V +HSPLcom/google/android/gms/measurement/internal/zzgy;->zzc()Ljava/util/concurrent/atomic/AtomicLong; +HSPLcom/google/android/gms/measurement/internal/zzgy;->zzc(Lcom/google/android/gms/measurement/internal/zzgy;)Ljava/lang/Object; +HSPLcom/google/android/gms/measurement/internal/zzgy;->zzd(Lcom/google/android/gms/measurement/internal/zzgy;)Ljava/util/concurrent/Semaphore; +HSPLcom/google/android/gms/measurement/internal/zzgy;->zze(Lcom/google/android/gms/measurement/internal/zzgy;)Z +HSPLcom/google/android/gms/measurement/internal/zzgy;->zzo()Z +HSPLcom/google/android/gms/measurement/internal/zzgy;->zzt()V +Lcom/google/android/gms/measurement/internal/zzgz; +HSPLcom/google/android/gms/measurement/internal/zzgz;->(Landroid/content/Context;Ljava/lang/String;)V +HSPLcom/google/android/gms/measurement/internal/zzgz;->zza(Landroid/content/Context;)Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzgz;->zza(Ljava/lang/String;)Ljava/lang/String; +Lcom/google/android/gms/measurement/internal/zzha; +HSPLcom/google/android/gms/measurement/internal/zzha;->(Lcom/google/android/gms/measurement/internal/zzgy;Ljava/lang/String;)V +Lcom/google/android/gms/measurement/internal/zzhc; +HSPLcom/google/android/gms/measurement/internal/zzhc;->(Lcom/google/android/gms/measurement/internal/zzgy;Ljava/lang/String;Ljava/util/concurrent/BlockingQueue;)V +HSPLcom/google/android/gms/measurement/internal/zzhc;->run()V +HSPLcom/google/android/gms/measurement/internal/zzhc;->zza()V +Lcom/google/android/gms/measurement/internal/zzhd; +HSPLcom/google/android/gms/measurement/internal/zzhd;->(Lcom/google/android/gms/measurement/internal/zzgy;Ljava/lang/Runnable;ZLjava/lang/String;)V +HSPLcom/google/android/gms/measurement/internal/zzhd;->compareTo(Ljava/lang/Object;)I +Lcom/google/android/gms/measurement/internal/zzhf; +HSPLcom/google/android/gms/measurement/internal/zzhf;->(Lcom/google/android/gms/measurement/internal/zzio;)V +HSPLcom/google/android/gms/measurement/internal/zzhf;->zza()Landroid/content/Context; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zza(Landroid/content/Context;Lcom/google/android/gms/internal/measurement/zzdd;Ljava/lang/Long;)Lcom/google/android/gms/measurement/internal/zzhf; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zza(Lcom/google/android/gms/internal/measurement/zzdd;)V +HSPLcom/google/android/gms/measurement/internal/zzhf;->zza(Lcom/google/android/gms/measurement/internal/zze;)V +HSPLcom/google/android/gms/measurement/internal/zzhf;->zza(Lcom/google/android/gms/measurement/internal/zzhf;Lcom/google/android/gms/measurement/internal/zzio;)V +HSPLcom/google/android/gms/measurement/internal/zzhf;->zza(Lcom/google/android/gms/measurement/internal/zzic;)V +HSPLcom/google/android/gms/measurement/internal/zzhf;->zza(Lcom/google/android/gms/measurement/internal/zzid;)V +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzaa()V +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzac()Z +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzad()Z +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzaf()Z +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzag()Z +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzb()Lcom/google/android/gms/common/util/Clock; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzc()I +PLcom/google/android/gms/measurement/internal/zzhf;->zzd()Lcom/google/android/gms/measurement/internal/zzae; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zze()Lcom/google/android/gms/measurement/internal/zzb; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzf()Lcom/google/android/gms/measurement/internal/zzaf; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzh()Lcom/google/android/gms/measurement/internal/zzfl; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzj()Lcom/google/android/gms/measurement/internal/zzfr; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzl()Lcom/google/android/gms/measurement/internal/zzgy; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzn()Lcom/google/android/gms/measurement/internal/zzgd; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzp()Lcom/google/android/gms/measurement/internal/zziq; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzq()Lcom/google/android/gms/measurement/internal/zzkh; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzr()Lcom/google/android/gms/measurement/internal/zzkp; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzs()Lcom/google/android/gms/measurement/internal/zzlx; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzt()Lcom/google/android/gms/measurement/internal/zznd; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzu()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzw()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzx()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzhf;->zzz()V +Lcom/google/android/gms/measurement/internal/zzhg; +HSPLcom/google/android/gms/measurement/internal/zzhg;->(Lcom/google/android/gms/measurement/internal/zzhf;Lcom/google/android/gms/measurement/internal/zzio;)V +HSPLcom/google/android/gms/measurement/internal/zzhg;->run()V +Lcom/google/android/gms/measurement/internal/zzic; +HSPLcom/google/android/gms/measurement/internal/zzic;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zzic;->zzab()V +HSPLcom/google/android/gms/measurement/internal/zzic;->zzac()V +HSPLcom/google/android/gms/measurement/internal/zzic;->zzad()V +HSPLcom/google/android/gms/measurement/internal/zzic;->zzae()Z +Lcom/google/android/gms/measurement/internal/zzid; +HSPLcom/google/android/gms/measurement/internal/zzid;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zzid;->zza()Landroid/content/Context; +HSPLcom/google/android/gms/measurement/internal/zzid;->zzb()Lcom/google/android/gms/common/util/Clock; +HSPLcom/google/android/gms/measurement/internal/zzid;->zze()Lcom/google/android/gms/measurement/internal/zzaf; +HSPLcom/google/android/gms/measurement/internal/zzid;->zzj()Lcom/google/android/gms/measurement/internal/zzfr; +HSPLcom/google/android/gms/measurement/internal/zzid;->zzk()Lcom/google/android/gms/measurement/internal/zzgd; +HSPLcom/google/android/gms/measurement/internal/zzid;->zzl()Lcom/google/android/gms/measurement/internal/zzgy; +HSPLcom/google/android/gms/measurement/internal/zzid;->zzq()Lcom/google/android/gms/measurement/internal/zznd; +HSPLcom/google/android/gms/measurement/internal/zzid;->zzt()V +Lcom/google/android/gms/measurement/internal/zzif; +Lcom/google/android/gms/measurement/internal/zzig; +HSPLcom/google/android/gms/measurement/internal/zzig;->()V +HSPLcom/google/android/gms/measurement/internal/zzig;->(Ljava/lang/String;I[Lcom/google/android/gms/measurement/internal/zzih$zza;)V +HSPLcom/google/android/gms/measurement/internal/zzig;->zza()[Lcom/google/android/gms/measurement/internal/zzih$zza; +Lcom/google/android/gms/measurement/internal/zzih; +HSPLcom/google/android/gms/measurement/internal/zzih;->()V +HSPLcom/google/android/gms/measurement/internal/zzih;->(Ljava/lang/Boolean;Ljava/lang/Boolean;I)V +HSPLcom/google/android/gms/measurement/internal/zzih;->(Ljava/util/EnumMap;I)V +HSPLcom/google/android/gms/measurement/internal/zzih;->zza()I +HSPLcom/google/android/gms/measurement/internal/zzih;->zza(Lcom/google/android/gms/measurement/internal/zzih$zza;)Z +HSPLcom/google/android/gms/measurement/internal/zzih;->zza(Ljava/lang/Boolean;)C +HSPLcom/google/android/gms/measurement/internal/zzih;->zza(Ljava/lang/String;I)Lcom/google/android/gms/measurement/internal/zzih; +HSPLcom/google/android/gms/measurement/internal/zzih;->zze()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzih;->zzg()Z +HSPLcom/google/android/gms/measurement/internal/zzih;->zzh()Z +Lcom/google/android/gms/measurement/internal/zzih$zza; +HSPLcom/google/android/gms/measurement/internal/zzih$zza;->()V +HSPLcom/google/android/gms/measurement/internal/zzih$zza;->(Ljava/lang/String;ILjava/lang/String;)V +HSPLcom/google/android/gms/measurement/internal/zzih$zza;->values()[Lcom/google/android/gms/measurement/internal/zzih$zza; +Lcom/google/android/gms/measurement/internal/zzij; +HSPLcom/google/android/gms/measurement/internal/zzij;->()V +Lcom/google/android/gms/measurement/internal/zzil; +Lcom/google/android/gms/measurement/internal/zzin; +HSPLcom/google/android/gms/measurement/internal/zzin;->(Lcom/google/android/gms/measurement/internal/zzio;Lcom/google/android/gms/measurement/internal/zzhf;)V +Lcom/google/android/gms/measurement/internal/zzio; +HSPLcom/google/android/gms/measurement/internal/zzio;->(Landroid/content/Context;Lcom/google/android/gms/internal/measurement/zzdd;Ljava/lang/Long;)V +Lcom/google/android/gms/measurement/internal/zziq; +HSPLcom/google/android/gms/measurement/internal/zziq;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zziq;->zza()Landroid/content/Context; +HSPLcom/google/android/gms/measurement/internal/zziq;->zza(Lcom/google/android/gms/measurement/internal/zzih;)V +HSPLcom/google/android/gms/measurement/internal/zziq;->zza(Lcom/google/android/gms/measurement/internal/zzil;)V +HSPLcom/google/android/gms/measurement/internal/zziq;->zza(Ljava/lang/String;)V +HSPLcom/google/android/gms/measurement/internal/zziq;->zza(Ljava/lang/String;Ljava/lang/String;JLandroid/os/Bundle;)V +HSPLcom/google/android/gms/measurement/internal/zziq;->zza(Ljava/lang/String;Ljava/lang/String;JLandroid/os/Bundle;ZZZLjava/lang/String;)V +HSPLcom/google/android/gms/measurement/internal/zziq;->zzak()V +HSPLcom/google/android/gms/measurement/internal/zziq;->zzj()Lcom/google/android/gms/measurement/internal/zzfr; +HSPLcom/google/android/gms/measurement/internal/zziq;->zzn()Lcom/google/android/gms/measurement/internal/zzkh; +HSPLcom/google/android/gms/measurement/internal/zziq;->zzp()Lcom/google/android/gms/measurement/internal/zzlx; +HSPLcom/google/android/gms/measurement/internal/zziq;->zzt()V +HSPLcom/google/android/gms/measurement/internal/zziq;->zzz()Z +Lcom/google/android/gms/measurement/internal/zzjp; +HSPLcom/google/android/gms/measurement/internal/zzjp;->(Lcom/google/android/gms/measurement/internal/zziq;)V +Lcom/google/android/gms/measurement/internal/zzjx; +HSPLcom/google/android/gms/measurement/internal/zzjx;->(Lcom/google/android/gms/measurement/internal/zziq;)V +HSPLcom/google/android/gms/measurement/internal/zzjx;->onActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V +HSPLcom/google/android/gms/measurement/internal/zzjx;->onActivityResumed(Landroid/app/Activity;)V +HSPLcom/google/android/gms/measurement/internal/zzjx;->onActivityStarted(Landroid/app/Activity;)V +Lcom/google/android/gms/measurement/internal/zzkc; +HSPLcom/google/android/gms/measurement/internal/zzkc;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zzkc;->zzo()Z +Lcom/google/android/gms/measurement/internal/zzkh; +HSPLcom/google/android/gms/measurement/internal/zzkh;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zzkh;->zza(Landroid/app/Activity;Landroid/os/Bundle;)V +HSPLcom/google/android/gms/measurement/internal/zzkh;->zza(Landroid/app/Activity;Lcom/google/android/gms/measurement/internal/zzki;Z)V +HSPLcom/google/android/gms/measurement/internal/zzkh;->zza(Lcom/google/android/gms/measurement/internal/zzkh;Lcom/google/android/gms/measurement/internal/zzki;)V +HSPLcom/google/android/gms/measurement/internal/zzkh;->zza(Lcom/google/android/gms/measurement/internal/zzkh;Lcom/google/android/gms/measurement/internal/zzki;Lcom/google/android/gms/measurement/internal/zzki;JZLandroid/os/Bundle;)V +HSPLcom/google/android/gms/measurement/internal/zzkh;->zza(Lcom/google/android/gms/measurement/internal/zzki;Lcom/google/android/gms/measurement/internal/zzki;JZLandroid/os/Bundle;)V +HSPLcom/google/android/gms/measurement/internal/zzkh;->zza(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zzkh;->zzb()Lcom/google/android/gms/common/util/Clock; +HSPLcom/google/android/gms/measurement/internal/zzkh;->zzc()Lcom/google/android/gms/measurement/internal/zzb; +HSPLcom/google/android/gms/measurement/internal/zzkh;->zzc(Landroid/app/Activity;)V +HSPLcom/google/android/gms/measurement/internal/zzkh;->zzd(Landroid/app/Activity;)Lcom/google/android/gms/measurement/internal/zzki; +HSPLcom/google/android/gms/measurement/internal/zzkh;->zze()Lcom/google/android/gms/measurement/internal/zzaf; +HSPLcom/google/android/gms/measurement/internal/zzkh;->zzl()Lcom/google/android/gms/measurement/internal/zzgy; +HSPLcom/google/android/gms/measurement/internal/zzkh;->zzm()Lcom/google/android/gms/measurement/internal/zziq; +HSPLcom/google/android/gms/measurement/internal/zzkh;->zzo()Lcom/google/android/gms/measurement/internal/zzkp; +HSPLcom/google/android/gms/measurement/internal/zzkh;->zzq()Lcom/google/android/gms/measurement/internal/zznd; +HSPLcom/google/android/gms/measurement/internal/zzkh;->zzt()V +HSPLcom/google/android/gms/measurement/internal/zzkh;->zzz()Z +Lcom/google/android/gms/measurement/internal/zzki; +HSPLcom/google/android/gms/measurement/internal/zzki;->(Ljava/lang/String;Ljava/lang/String;J)V +HSPLcom/google/android/gms/measurement/internal/zzki;->(Ljava/lang/String;Ljava/lang/String;JZJ)V +Lcom/google/android/gms/measurement/internal/zzkm; +HSPLcom/google/android/gms/measurement/internal/zzkm;->(Lcom/google/android/gms/measurement/internal/zzkh;Lcom/google/android/gms/measurement/internal/zzki;Lcom/google/android/gms/measurement/internal/zzki;JZ)V +HSPLcom/google/android/gms/measurement/internal/zzkm;->run()V +Lcom/google/android/gms/measurement/internal/zzkp; +HSPLcom/google/android/gms/measurement/internal/zzkp;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zzkp;->zza()Landroid/content/Context; +HSPLcom/google/android/gms/measurement/internal/zzkp;->zza(Landroid/os/Bundle;)V +HSPLcom/google/android/gms/measurement/internal/zzkp;->zza(Lcom/google/android/gms/measurement/internal/zzfk;)V +HSPLcom/google/android/gms/measurement/internal/zzkp;->zza(Lcom/google/android/gms/measurement/internal/zzki;)V +HSPLcom/google/android/gms/measurement/internal/zzkp;->zza(Lcom/google/android/gms/measurement/internal/zzkp;)Lcom/google/android/gms/measurement/internal/zzfk; +HSPLcom/google/android/gms/measurement/internal/zzkp;->zza(Ljava/lang/Runnable;)V +HSPLcom/google/android/gms/measurement/internal/zzkp;->zza(Ljava/util/concurrent/atomic/AtomicReference;)V +HSPLcom/google/android/gms/measurement/internal/zzkp;->zzad()V +PLcom/google/android/gms/measurement/internal/zzkp;->zzae()V +HSPLcom/google/android/gms/measurement/internal/zzkp;->zzah()Z +HSPLcom/google/android/gms/measurement/internal/zzkp;->zzak()V +HSPLcom/google/android/gms/measurement/internal/zzkp;->zzal()V +HSPLcom/google/android/gms/measurement/internal/zzkp;->zzam()Z +HSPLcom/google/android/gms/measurement/internal/zzkp;->zzb(Z)Lcom/google/android/gms/measurement/internal/zzo; +PLcom/google/android/gms/measurement/internal/zzkp;->zzd(Lcom/google/android/gms/measurement/internal/zzkp;)V +HSPLcom/google/android/gms/measurement/internal/zzkp;->zze(Lcom/google/android/gms/measurement/internal/zzkp;)V +HSPLcom/google/android/gms/measurement/internal/zzkp;->zzg()Lcom/google/android/gms/measurement/internal/zzfl; +HSPLcom/google/android/gms/measurement/internal/zzkp;->zzj()Lcom/google/android/gms/measurement/internal/zzfr; +HSPLcom/google/android/gms/measurement/internal/zzkp;->zzk()Lcom/google/android/gms/measurement/internal/zzgd; +HSPLcom/google/android/gms/measurement/internal/zzkp;->zzl()Lcom/google/android/gms/measurement/internal/zzgy; +HSPLcom/google/android/gms/measurement/internal/zzkp;->zzm()Lcom/google/android/gms/measurement/internal/zziq; +HSPLcom/google/android/gms/measurement/internal/zzkp;->zzq()Lcom/google/android/gms/measurement/internal/zznd; +HSPLcom/google/android/gms/measurement/internal/zzkp;->zzt()V +HSPLcom/google/android/gms/measurement/internal/zzkp;->zzz()Z +Lcom/google/android/gms/measurement/internal/zzkq; +HSPLcom/google/android/gms/measurement/internal/zzkq;->(Lcom/google/android/gms/measurement/internal/zzkh;)V +HSPLcom/google/android/gms/measurement/internal/zzkq;->run()V +Lcom/google/android/gms/measurement/internal/zzks; +HSPLcom/google/android/gms/measurement/internal/zzks;->(Lcom/google/android/gms/measurement/internal/zzkp;Lcom/google/android/gms/measurement/internal/zzif;)V +PLcom/google/android/gms/measurement/internal/zzks;->zzb()V +Lcom/google/android/gms/measurement/internal/zzky; +HSPLcom/google/android/gms/measurement/internal/zzky;->(Lcom/google/android/gms/measurement/internal/zzkp;Ljava/util/concurrent/atomic/AtomicReference;Lcom/google/android/gms/measurement/internal/zzo;)V +HSPLcom/google/android/gms/measurement/internal/zzky;->run()V +Lcom/google/android/gms/measurement/internal/zzkz; +HSPLcom/google/android/gms/measurement/internal/zzkz;->(Lcom/google/android/gms/measurement/internal/zzkp;Lcom/google/android/gms/measurement/internal/zzki;)V +HSPLcom/google/android/gms/measurement/internal/zzkz;->run()V +Lcom/google/android/gms/measurement/internal/zzlb; +HSPLcom/google/android/gms/measurement/internal/zzlb;->(Lcom/google/android/gms/measurement/internal/zzkp;Lcom/google/android/gms/measurement/internal/zzif;)V +Lcom/google/android/gms/measurement/internal/zzlc; +HSPLcom/google/android/gms/measurement/internal/zzlc;->(Lcom/google/android/gms/measurement/internal/zzkp;Lcom/google/android/gms/measurement/internal/zzo;Landroid/os/Bundle;)V +HSPLcom/google/android/gms/measurement/internal/zzlc;->run()V +Lcom/google/android/gms/measurement/internal/zzlm; +HSPLcom/google/android/gms/measurement/internal/zzlm;->(Lcom/google/android/gms/measurement/internal/zzkp;)V +HSPLcom/google/android/gms/measurement/internal/zzlm;->onConnected(Landroid/os/Bundle;)V +HSPLcom/google/android/gms/measurement/internal/zzlm;->zza()V +HSPLcom/google/android/gms/measurement/internal/zzlm;->zza(Lcom/google/android/gms/measurement/internal/zzlm;Z)V +PLcom/google/android/gms/measurement/internal/zzlm;->zzb()V +Lcom/google/android/gms/measurement/internal/zzln; +HSPLcom/google/android/gms/measurement/internal/zzln;->(Lcom/google/android/gms/measurement/internal/zzlm;Lcom/google/android/gms/measurement/internal/zzfk;)V +HSPLcom/google/android/gms/measurement/internal/zzln;->run()V +Lcom/google/android/gms/measurement/internal/zzlx; +HSPLcom/google/android/gms/measurement/internal/zzlx;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zzlx;->zza(Z)V +HSPLcom/google/android/gms/measurement/internal/zzlx;->zzab()V +HSPLcom/google/android/gms/measurement/internal/zzlx;->zzb()Lcom/google/android/gms/common/util/Clock; +HSPLcom/google/android/gms/measurement/internal/zzlx;->zzb(Lcom/google/android/gms/measurement/internal/zzlx;J)V +HSPLcom/google/android/gms/measurement/internal/zzlx;->zze()Lcom/google/android/gms/measurement/internal/zzaf; +HSPLcom/google/android/gms/measurement/internal/zzlx;->zzj()Lcom/google/android/gms/measurement/internal/zzfr; +HSPLcom/google/android/gms/measurement/internal/zzlx;->zzk()Lcom/google/android/gms/measurement/internal/zzgd; +HSPLcom/google/android/gms/measurement/internal/zzlx;->zzl()Lcom/google/android/gms/measurement/internal/zzgy; +HSPLcom/google/android/gms/measurement/internal/zzlx;->zzt()V +HSPLcom/google/android/gms/measurement/internal/zzlx;->zzz()Z +Lcom/google/android/gms/measurement/internal/zzma; +HSPLcom/google/android/gms/measurement/internal/zzma;->(Lcom/google/android/gms/measurement/internal/zzlx;J)V +HSPLcom/google/android/gms/measurement/internal/zzma;->run()V +Lcom/google/android/gms/measurement/internal/zzmc; +HSPLcom/google/android/gms/measurement/internal/zzmc;->(Lcom/google/android/gms/measurement/internal/zzlx;)V +HSPLcom/google/android/gms/measurement/internal/zzmc;->zza()V +Lcom/google/android/gms/measurement/internal/zzmd; +HSPLcom/google/android/gms/measurement/internal/zzmd;->(Lcom/google/android/gms/measurement/internal/zzlx;)V +HSPLcom/google/android/gms/measurement/internal/zzmd;->zzc(J)V +Lcom/google/android/gms/measurement/internal/zzmf; +HSPLcom/google/android/gms/measurement/internal/zzmf;->(Lcom/google/android/gms/measurement/internal/zzlx;)V +HSPLcom/google/android/gms/measurement/internal/zzmf;->zza()V +HSPLcom/google/android/gms/measurement/internal/zzmf;->zzb(JZ)V +Lcom/google/android/gms/measurement/internal/zzmg; +HSPLcom/google/android/gms/measurement/internal/zzmg;->(Lcom/google/android/gms/measurement/internal/zzmd;Lcom/google/android/gms/measurement/internal/zzif;)V +Lcom/google/android/gms/measurement/internal/zzmi; +HSPLcom/google/android/gms/measurement/internal/zzmi;->(Lcom/google/android/gms/common/util/Clock;)V +HSPLcom/google/android/gms/measurement/internal/zzmi;->zzb()V +Lcom/google/android/gms/measurement/internal/zznd; +HSPLcom/google/android/gms/measurement/internal/zznd;->()V +HSPLcom/google/android/gms/measurement/internal/zznd;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zznd;->zza()Landroid/content/Context; +HSPLcom/google/android/gms/measurement/internal/zznd;->zza(I)I +HSPLcom/google/android/gms/measurement/internal/zznd;->zza(Landroid/content/Context;)Z +HSPLcom/google/android/gms/measurement/internal/zznd;->zza(Landroid/content/Context;Ljava/lang/String;)J +HSPLcom/google/android/gms/measurement/internal/zznd;->zza(Landroid/content/Context;Z)Z +HSPLcom/google/android/gms/measurement/internal/zznd;->zza(Lcom/google/android/gms/measurement/internal/zzki;Landroid/os/Bundle;Z)V +HSPLcom/google/android/gms/measurement/internal/zznd;->zza(Ljava/lang/String;Ljava/lang/String;)Z +HSPLcom/google/android/gms/measurement/internal/zznd;->zza(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z +HSPLcom/google/android/gms/measurement/internal/zznd;->zza([B)J +HSPLcom/google/android/gms/measurement/internal/zznd;->zzb(Landroid/content/Context;Ljava/lang/String;)Z +HSPLcom/google/android/gms/measurement/internal/zznd;->zzc(Landroid/content/Context;Ljava/lang/String;)Z +HSPLcom/google/android/gms/measurement/internal/zznd;->zzc(Ljava/lang/String;)J +HSPLcom/google/android/gms/measurement/internal/zznd;->zze()Lcom/google/android/gms/measurement/internal/zzaf; +HSPLcom/google/android/gms/measurement/internal/zznd;->zze(Ljava/lang/String;)Z +HSPLcom/google/android/gms/measurement/internal/zznd;->zzf(Ljava/lang/String;)Z +HSPLcom/google/android/gms/measurement/internal/zznd;->zzm()J +HSPLcom/google/android/gms/measurement/internal/zznd;->zzn(Ljava/lang/String;)Z +HSPLcom/google/android/gms/measurement/internal/zznd;->zzo()Z +HSPLcom/google/android/gms/measurement/internal/zznd;->zzp()Ljava/lang/String; +HSPLcom/google/android/gms/measurement/internal/zznd;->zzt()V +HSPLcom/google/android/gms/measurement/internal/zznd;->zzu()Ljava/security/MessageDigest; +HSPLcom/google/android/gms/measurement/internal/zznd;->zzv()Ljava/security/SecureRandom; +HSPLcom/google/android/gms/measurement/internal/zznd;->zzx()Z +HSPLcom/google/android/gms/measurement/internal/zznd;->zzz()V +Lcom/google/android/gms/measurement/internal/zznf; +Lcom/google/android/gms/measurement/internal/zzo; +HSPLcom/google/android/gms/measurement/internal/zzo;->()V +HSPLcom/google/android/gms/measurement/internal/zzo;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JLjava/lang/String;JJLjava/lang/String;ZZLjava/lang/String;JJIZZLjava/lang/String;Ljava/lang/Boolean;JLjava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZJILjava/lang/String;IJ)V +HSPLcom/google/android/gms/measurement/internal/zzo;->writeToParcel(Landroid/os/Parcel;I)V +Lcom/google/android/gms/measurement/internal/zzq; +HSPLcom/google/android/gms/measurement/internal/zzq;->()V +Lcom/google/android/gms/measurement/internal/zzu; +HSPLcom/google/android/gms/measurement/internal/zzu;->(Lcom/google/android/gms/measurement/internal/zzhf;)V +HSPLcom/google/android/gms/measurement/internal/zzu;->zzb()V +HSPLcom/google/android/gms/measurement/internal/zzu;->zzc()Z +Lcom/google/android/gms/tasks/Continuation; +Lcom/google/android/gms/tasks/OnCanceledListener; +Lcom/google/android/gms/tasks/OnFailureListener; +Lcom/google/android/gms/tasks/OnSuccessListener; +Lcom/google/android/gms/tasks/RuntimeExecutionException; +Lcom/google/android/gms/tasks/SuccessContinuation; +Lcom/google/android/gms/tasks/Task; +HSPLcom/google/android/gms/tasks/Task;->()V +Lcom/google/android/gms/tasks/TaskCompletionSource; +HSPLcom/google/android/gms/tasks/TaskCompletionSource;->()V +HSPLcom/google/android/gms/tasks/TaskCompletionSource;->getTask()Lcom/google/android/gms/tasks/Task; +HSPLcom/google/android/gms/tasks/TaskCompletionSource;->setResult(Ljava/lang/Object;)V +HSPLcom/google/android/gms/tasks/TaskCompletionSource;->trySetResult(Ljava/lang/Object;)Z +Lcom/google/android/gms/tasks/TaskExecutors; +HSPLcom/google/android/gms/tasks/TaskExecutors;->()V +Lcom/google/android/gms/tasks/Tasks; +HSPLcom/google/android/gms/tasks/Tasks;->call(Ljava/util/concurrent/Executor;Ljava/util/concurrent/Callable;)Lcom/google/android/gms/tasks/Task; +HSPLcom/google/android/gms/tasks/Tasks;->forResult(Ljava/lang/Object;)Lcom/google/android/gms/tasks/Task; +Lcom/google/android/gms/tasks/zzc; +HSPLcom/google/android/gms/tasks/zzc;->(Lcom/google/android/gms/tasks/zzd;Lcom/google/android/gms/tasks/Task;)V +HSPLcom/google/android/gms/tasks/zzc;->run()V +Lcom/google/android/gms/tasks/zzd; +HSPLcom/google/android/gms/tasks/zzd;->(Ljava/util/concurrent/Executor;Lcom/google/android/gms/tasks/Continuation;Lcom/google/android/gms/tasks/zzw;)V +HSPLcom/google/android/gms/tasks/zzd;->zza(Lcom/google/android/gms/tasks/zzd;)Lcom/google/android/gms/tasks/Continuation; +HSPLcom/google/android/gms/tasks/zzd;->zzb(Lcom/google/android/gms/tasks/zzd;)Lcom/google/android/gms/tasks/zzw; +HSPLcom/google/android/gms/tasks/zzd;->zzd(Lcom/google/android/gms/tasks/Task;)V +Lcom/google/android/gms/tasks/zzp; +HSPLcom/google/android/gms/tasks/zzp;->(Ljava/util/concurrent/Executor;Lcom/google/android/gms/tasks/SuccessContinuation;Lcom/google/android/gms/tasks/zzw;)V +Lcom/google/android/gms/tasks/zzq; +Lcom/google/android/gms/tasks/zzr; +HSPLcom/google/android/gms/tasks/zzr;->()V +HSPLcom/google/android/gms/tasks/zzr;->zza(Lcom/google/android/gms/tasks/zzq;)V +HSPLcom/google/android/gms/tasks/zzr;->zzb(Lcom/google/android/gms/tasks/Task;)V +Lcom/google/android/gms/tasks/zzt; +HSPLcom/google/android/gms/tasks/zzt;->()V +Lcom/google/android/gms/tasks/zzu; +HSPLcom/google/android/gms/tasks/zzu;->()V +Lcom/google/android/gms/tasks/zzw; +HSPLcom/google/android/gms/tasks/zzw;->()V +HSPLcom/google/android/gms/tasks/zzw;->continueWith(Ljava/util/concurrent/Executor;Lcom/google/android/gms/tasks/Continuation;)Lcom/google/android/gms/tasks/Task; +HSPLcom/google/android/gms/tasks/zzw;->getResult()Ljava/lang/Object; +HSPLcom/google/android/gms/tasks/zzw;->isCanceled()Z +HSPLcom/google/android/gms/tasks/zzw;->isSuccessful()Z +HSPLcom/google/android/gms/tasks/zzw;->onSuccessTask(Ljava/util/concurrent/Executor;Lcom/google/android/gms/tasks/SuccessContinuation;)Lcom/google/android/gms/tasks/Task; +HSPLcom/google/android/gms/tasks/zzw;->zzb(Ljava/lang/Object;)V +HSPLcom/google/android/gms/tasks/zzw;->zze(Ljava/lang/Object;)Z +HSPLcom/google/android/gms/tasks/zzw;->zzf()V +HSPLcom/google/android/gms/tasks/zzw;->zzg()V +HSPLcom/google/android/gms/tasks/zzw;->zzh()V +HSPLcom/google/android/gms/tasks/zzw;->zzi()V +Lcom/google/android/gms/tasks/zzz; +HSPLcom/google/android/gms/tasks/zzz;->(Lcom/google/android/gms/tasks/zzw;Ljava/util/concurrent/Callable;)V +HSPLcom/google/android/gms/tasks/zzz;->run()V +Lcom/google/common/base/Absent; +HSPLcom/google/common/base/Absent;->()V +HSPLcom/google/common/base/Absent;->()V +HSPLcom/google/common/base/Absent;->isPresent()Z +HSPLcom/google/common/base/Absent;->withType()Lcom/google/common/base/Optional; +Lcom/google/common/base/Function; +Lcom/google/common/base/NullnessCasts; +HSPLcom/google/common/base/NullnessCasts;->uncheckedCastNullableTToT(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/google/common/base/Optional; +HSPLcom/google/common/base/Optional;->()V +HSPLcom/google/common/base/Optional;->absent()Lcom/google/common/base/Optional; +HSPLcom/google/common/base/Optional;->of(Ljava/lang/Object;)Lcom/google/common/base/Optional; +Lcom/google/common/base/Preconditions; +HSPLcom/google/common/base/Preconditions;->checkArgument(ZLjava/lang/Object;)V +HSPLcom/google/common/base/Preconditions;->checkElementIndex(II)I +HSPLcom/google/common/base/Preconditions;->checkElementIndex(IILjava/lang/String;)I +HSPLcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/common/base/Preconditions;->checkPositionIndex(II)I +HSPLcom/google/common/base/Preconditions;->checkPositionIndex(IILjava/lang/String;)I +HSPLcom/google/common/base/Preconditions;->checkState(ZLjava/lang/Object;)V +Lcom/google/common/base/Present; +HSPLcom/google/common/base/Present;->(Ljava/lang/Object;)V +HSPLcom/google/common/base/Present;->get()Ljava/lang/Object; +HSPLcom/google/common/base/Present;->isPresent()Z +Lcom/google/common/base/Supplier; +Lcom/google/common/base/Suppliers; +HSPLcom/google/common/base/Suppliers;->memoize(Lcom/google/common/base/Supplier;)Lcom/google/common/base/Supplier; +HSPLcom/google/common/base/Suppliers;->ofInstance(Ljava/lang/Object;)Lcom/google/common/base/Supplier; +Lcom/google/common/base/Suppliers$MemoizingSupplier; +Lcom/google/common/base/Suppliers$NonSerializableMemoizingSupplier; +HSPLcom/google/common/base/Suppliers$NonSerializableMemoizingSupplier;->(Lcom/google/common/base/Supplier;)V +HSPLcom/google/common/base/Suppliers$NonSerializableMemoizingSupplier;->get()Ljava/lang/Object; +Lcom/google/common/base/Suppliers$SupplierOfInstance; +HSPLcom/google/common/base/Suppliers$SupplierOfInstance;->(Ljava/lang/Object;)V +HSPLcom/google/common/base/Suppliers$SupplierOfInstance;->get()Ljava/lang/Object; +Lcom/google/common/collect/AbstractIndexedListIterator; +HSPLcom/google/common/collect/AbstractIndexedListIterator;->(II)V +Lcom/google/common/collect/CollectPreconditions; +HSPLcom/google/common/collect/CollectPreconditions;->checkNonnegative(ILjava/lang/String;)I +Lcom/google/common/collect/Hashing; +HSPLcom/google/common/collect/Hashing;->smear(I)I +Lcom/google/common/collect/ImmutableCollection; +HSPLcom/google/common/collect/ImmutableCollection;->()V +HSPLcom/google/common/collect/ImmutableCollection;->()V +Lcom/google/common/collect/ImmutableCollection$ArrayBasedBuilder; +HSPLcom/google/common/collect/ImmutableCollection$ArrayBasedBuilder;->(I)V +HSPLcom/google/common/collect/ImmutableCollection$ArrayBasedBuilder;->add([Ljava/lang/Object;)Lcom/google/common/collect/ImmutableCollection$Builder; +HSPLcom/google/common/collect/ImmutableCollection$ArrayBasedBuilder;->addAll([Ljava/lang/Object;I)V +HSPLcom/google/common/collect/ImmutableCollection$ArrayBasedBuilder;->getReadyToExpandTo(I)V +Lcom/google/common/collect/ImmutableCollection$Builder; +HSPLcom/google/common/collect/ImmutableCollection$Builder;->()V +HSPLcom/google/common/collect/ImmutableCollection$Builder;->expandedCapacity(II)I +Lcom/google/common/collect/ImmutableList; +HSPLcom/google/common/collect/ImmutableList;->()V +HSPLcom/google/common/collect/ImmutableList;->()V +HSPLcom/google/common/collect/ImmutableList;->asImmutableList([Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList; +HSPLcom/google/common/collect/ImmutableList;->asImmutableList([Ljava/lang/Object;I)Lcom/google/common/collect/ImmutableList; +HSPLcom/google/common/collect/ImmutableList;->construct([Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList; +HSPLcom/google/common/collect/ImmutableList;->contains(Ljava/lang/Object;)Z +HSPLcom/google/common/collect/ImmutableList;->indexOf(Ljava/lang/Object;)I +HSPLcom/google/common/collect/ImmutableList;->of(Ljava/lang/Object;Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList; +HSPLcom/google/common/collect/ImmutableList;->of(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList; +HSPLcom/google/common/collect/ImmutableList;->of(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList; +Lcom/google/common/collect/ImmutableList$Builder; +HSPLcom/google/common/collect/ImmutableList$Builder;->()V +HSPLcom/google/common/collect/ImmutableList$Builder;->(I)V +HSPLcom/google/common/collect/ImmutableList$Builder;->add([Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList$Builder; +HSPLcom/google/common/collect/ImmutableList$Builder;->build()Lcom/google/common/collect/ImmutableList; +Lcom/google/common/collect/ImmutableList$Itr; +HSPLcom/google/common/collect/ImmutableList$Itr;->(Lcom/google/common/collect/ImmutableList;I)V +Lcom/google/common/collect/ImmutableSet; +HSPLcom/google/common/collect/ImmutableSet;->()V +HSPLcom/google/common/collect/ImmutableSet;->chooseTableSize(I)I +HSPLcom/google/common/collect/ImmutableSet;->construct(I[Ljava/lang/Object;)Lcom/google/common/collect/ImmutableSet; +HSPLcom/google/common/collect/ImmutableSet;->of(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;[Ljava/lang/Object;)Lcom/google/common/collect/ImmutableSet; +HSPLcom/google/common/collect/ImmutableSet;->shouldTrim(II)Z +Lcom/google/common/collect/Lists; +HSPLcom/google/common/collect/Lists;->indexOfImpl(Ljava/util/List;Ljava/lang/Object;)I +HSPLcom/google/common/collect/Lists;->indexOfRandomAccess(Ljava/util/List;Ljava/lang/Object;)I +Lcom/google/common/collect/ObjectArrays; +HSPLcom/google/common/collect/ObjectArrays;->checkElementNotNull(Ljava/lang/Object;I)Ljava/lang/Object; +HSPLcom/google/common/collect/ObjectArrays;->checkElementsNotNull([Ljava/lang/Object;)[Ljava/lang/Object; +HSPLcom/google/common/collect/ObjectArrays;->checkElementsNotNull([Ljava/lang/Object;I)[Ljava/lang/Object; +Lcom/google/common/collect/RegularImmutableList; +HSPLcom/google/common/collect/RegularImmutableList;->()V +HSPLcom/google/common/collect/RegularImmutableList;->([Ljava/lang/Object;I)V +HSPLcom/google/common/collect/RegularImmutableList;->get(I)Ljava/lang/Object; +HSPLcom/google/common/collect/RegularImmutableList;->size()I +Lcom/google/common/collect/RegularImmutableSet; +HSPLcom/google/common/collect/RegularImmutableSet;->()V +HSPLcom/google/common/collect/RegularImmutableSet;->([Ljava/lang/Object;I[Ljava/lang/Object;II)V +Lcom/google/common/collect/UnmodifiableIterator; +HSPLcom/google/common/collect/UnmodifiableIterator;->()V +Lcom/google/common/collect/UnmodifiableListIterator; +HSPLcom/google/common/collect/UnmodifiableListIterator;->()V +Lcom/google/common/util/concurrent/ListenableFuture; +Lcom/google/common/util/concurrent/Striped$SmallLazyStriped$$ExternalSyntheticBackportWithForwarding0; +HSPLcom/google/common/util/concurrent/Striped$SmallLazyStriped$$ExternalSyntheticBackportWithForwarding0;->m(Ljava/util/concurrent/atomic/AtomicReferenceArray;ILjava/lang/Object;Ljava/lang/Object;)Z +Lcom/google/crypto/tink/Aead; +Lcom/google/crypto/tink/BinaryKeysetReader; +HSPLcom/google/crypto/tink/BinaryKeysetReader;->(Ljava/io/InputStream;)V +HSPLcom/google/crypto/tink/BinaryKeysetReader;->readEncrypted()Lcom/google/crypto/tink/proto/EncryptedKeyset; +HSPLcom/google/crypto/tink/BinaryKeysetReader;->withBytes([B)Lcom/google/crypto/tink/KeysetReader; +Lcom/google/crypto/tink/CryptoFormat; +HSPLcom/google/crypto/tink/CryptoFormat;->()V +HSPLcom/google/crypto/tink/CryptoFormat;->getOutputPrefix(Lcom/google/crypto/tink/proto/Keyset$Key;)[B +Lcom/google/crypto/tink/CryptoFormat$1; +HSPLcom/google/crypto/tink/CryptoFormat$1;->()V +Lcom/google/crypto/tink/DeterministicAead; +Lcom/google/crypto/tink/InsecureSecretKeyAccess; +HSPLcom/google/crypto/tink/InsecureSecretKeyAccess;->get()Lcom/google/crypto/tink/SecretKeyAccess; +Lcom/google/crypto/tink/Key; +HSPLcom/google/crypto/tink/Key;->()V +Lcom/google/crypto/tink/KeyManager; +Lcom/google/crypto/tink/KeyManagerImpl; +HSPLcom/google/crypto/tink/KeyManagerImpl;->(Lcom/google/crypto/tink/internal/KeyTypeManager;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/KeyManagerImpl;->getKeyType()Ljava/lang/String; +HSPLcom/google/crypto/tink/KeyManagerImpl;->getPrimitive(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/KeyManagerImpl;->keyFactoryHelper()Lcom/google/crypto/tink/KeyManagerImpl$KeyFactoryHelper; +HSPLcom/google/crypto/tink/KeyManagerImpl;->newKeyData(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)Lcom/google/crypto/tink/proto/KeyData; +HSPLcom/google/crypto/tink/KeyManagerImpl;->validateKeyAndGetPrimitive(Lcom/google/crypto/tink/shaded/protobuf/MessageLite;)Ljava/lang/Object; +Lcom/google/crypto/tink/KeyManagerImpl$KeyFactoryHelper; +HSPLcom/google/crypto/tink/KeyManagerImpl$KeyFactoryHelper;->(Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory;)V +HSPLcom/google/crypto/tink/KeyManagerImpl$KeyFactoryHelper;->parseValidateCreate(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)Lcom/google/crypto/tink/shaded/protobuf/MessageLite; +HSPLcom/google/crypto/tink/KeyManagerImpl$KeyFactoryHelper;->validateCreate(Lcom/google/crypto/tink/shaded/protobuf/MessageLite;)Lcom/google/crypto/tink/shaded/protobuf/MessageLite; +Lcom/google/crypto/tink/KeyManagerRegistry; +HSPLcom/google/crypto/tink/KeyManagerRegistry;->()V +HSPLcom/google/crypto/tink/KeyManagerRegistry;->()V +HSPLcom/google/crypto/tink/KeyManagerRegistry;->(Lcom/google/crypto/tink/KeyManagerRegistry;)V +HSPLcom/google/crypto/tink/KeyManagerRegistry;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/KeyManagerRegistry;->createContainerFor(Lcom/google/crypto/tink/internal/KeyTypeManager;)Lcom/google/crypto/tink/KeyManagerRegistry$KeyManagerContainer; +HSPLcom/google/crypto/tink/KeyManagerRegistry;->getKeyManager(Ljava/lang/String;Ljava/lang/Class;)Lcom/google/crypto/tink/KeyManager; +HSPLcom/google/crypto/tink/KeyManagerRegistry;->getKeyManagerContainerOrThrow(Ljava/lang/String;)Lcom/google/crypto/tink/KeyManagerRegistry$KeyManagerContainer; +HSPLcom/google/crypto/tink/KeyManagerRegistry;->getKeyManagerInternal(Ljava/lang/String;Ljava/lang/Class;)Lcom/google/crypto/tink/KeyManager; +HSPLcom/google/crypto/tink/KeyManagerRegistry;->getUntypedKeyManager(Ljava/lang/String;)Lcom/google/crypto/tink/KeyManager; +HSPLcom/google/crypto/tink/KeyManagerRegistry;->registerKeyManager(Lcom/google/crypto/tink/internal/KeyTypeManager;)V +HSPLcom/google/crypto/tink/KeyManagerRegistry;->registerKeyManagerContainer(Lcom/google/crypto/tink/KeyManagerRegistry$KeyManagerContainer;Z)V +HSPLcom/google/crypto/tink/KeyManagerRegistry;->typeUrlExists(Ljava/lang/String;)Z +Lcom/google/crypto/tink/KeyManagerRegistry$2; +HSPLcom/google/crypto/tink/KeyManagerRegistry$2;->(Lcom/google/crypto/tink/internal/KeyTypeManager;)V +HSPLcom/google/crypto/tink/KeyManagerRegistry$2;->getImplementingClass()Ljava/lang/Class; +HSPLcom/google/crypto/tink/KeyManagerRegistry$2;->getKeyManager(Ljava/lang/Class;)Lcom/google/crypto/tink/KeyManager; +HSPLcom/google/crypto/tink/KeyManagerRegistry$2;->getUntypedKeyManager()Lcom/google/crypto/tink/KeyManager; +HSPLcom/google/crypto/tink/KeyManagerRegistry$2;->supportedPrimitives()Ljava/util/Set; +Lcom/google/crypto/tink/KeyManagerRegistry$KeyManagerContainer; +Lcom/google/crypto/tink/KeyStatus; +HSPLcom/google/crypto/tink/KeyStatus;->()V +HSPLcom/google/crypto/tink/KeyStatus;->(Ljava/lang/String;)V +Lcom/google/crypto/tink/KeyTemplate; +HSPLcom/google/crypto/tink/KeyTemplate;->(Lcom/google/crypto/tink/proto/KeyTemplate;)V +HSPLcom/google/crypto/tink/KeyTemplate;->create(Ljava/lang/String;[BLcom/google/crypto/tink/KeyTemplate$OutputPrefixType;)Lcom/google/crypto/tink/KeyTemplate; +HSPLcom/google/crypto/tink/KeyTemplate;->getProto()Lcom/google/crypto/tink/proto/KeyTemplate; +HSPLcom/google/crypto/tink/KeyTemplate;->toProto(Lcom/google/crypto/tink/KeyTemplate$OutputPrefixType;)Lcom/google/crypto/tink/proto/OutputPrefixType; +Lcom/google/crypto/tink/KeyTemplate$1; +HSPLcom/google/crypto/tink/KeyTemplate$1;->()V +Lcom/google/crypto/tink/KeyTemplate$OutputPrefixType; +HSPLcom/google/crypto/tink/KeyTemplate$OutputPrefixType;->()V +HSPLcom/google/crypto/tink/KeyTemplate$OutputPrefixType;->(Ljava/lang/String;I)V +HSPLcom/google/crypto/tink/KeyTemplate$OutputPrefixType;->values()[Lcom/google/crypto/tink/KeyTemplate$OutputPrefixType; +Lcom/google/crypto/tink/KeyTemplates; +HSPLcom/google/crypto/tink/KeyTemplates;->get(Ljava/lang/String;)Lcom/google/crypto/tink/KeyTemplate; +Lcom/google/crypto/tink/KeysetHandle; +HSPLcom/google/crypto/tink/KeysetHandle;->(Lcom/google/crypto/tink/proto/Keyset;Ljava/util/List;)V +HSPLcom/google/crypto/tink/KeysetHandle;->assertEnoughEncryptedKeyMaterial(Lcom/google/crypto/tink/proto/EncryptedKeyset;)V +HSPLcom/google/crypto/tink/KeysetHandle;->assertEnoughKeyMaterial(Lcom/google/crypto/tink/proto/Keyset;)V +HSPLcom/google/crypto/tink/KeysetHandle;->decrypt(Lcom/google/crypto/tink/proto/EncryptedKeyset;Lcom/google/crypto/tink/Aead;[B)Lcom/google/crypto/tink/proto/Keyset; +HSPLcom/google/crypto/tink/KeysetHandle;->encrypt(Lcom/google/crypto/tink/proto/Keyset;Lcom/google/crypto/tink/Aead;[B)Lcom/google/crypto/tink/proto/EncryptedKeyset; +HSPLcom/google/crypto/tink/KeysetHandle;->fromKeyset(Lcom/google/crypto/tink/proto/Keyset;)Lcom/google/crypto/tink/KeysetHandle; +HSPLcom/google/crypto/tink/KeysetHandle;->getEntriesFromKeyset(Lcom/google/crypto/tink/proto/Keyset;)Ljava/util/List; +HSPLcom/google/crypto/tink/KeysetHandle;->getFullPrimitiveOrNull(Lcom/google/crypto/tink/Key;Ljava/lang/Class;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/KeysetHandle;->getKeyset()Lcom/google/crypto/tink/proto/Keyset; +HSPLcom/google/crypto/tink/KeysetHandle;->getKeysetInfo()Lcom/google/crypto/tink/proto/KeysetInfo; +HSPLcom/google/crypto/tink/KeysetHandle;->getLegacyPrimitiveOrNull(Lcom/google/crypto/tink/proto/Keyset$Key;Ljava/lang/Class;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/KeysetHandle;->getPrimitive(Ljava/lang/Class;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/KeysetHandle;->getPrimitiveWithKnownInputPrimitive(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/KeysetHandle;->parseStatus(Lcom/google/crypto/tink/proto/KeyStatusType;)Lcom/google/crypto/tink/KeyStatus; +HSPLcom/google/crypto/tink/KeysetHandle;->read(Lcom/google/crypto/tink/KeysetReader;Lcom/google/crypto/tink/Aead;)Lcom/google/crypto/tink/KeysetHandle; +HSPLcom/google/crypto/tink/KeysetHandle;->readWithAssociatedData(Lcom/google/crypto/tink/KeysetReader;Lcom/google/crypto/tink/Aead;[B)Lcom/google/crypto/tink/KeysetHandle; +HSPLcom/google/crypto/tink/KeysetHandle;->size()I +HSPLcom/google/crypto/tink/KeysetHandle;->toProtoKeySerialization(Lcom/google/crypto/tink/proto/Keyset$Key;)Lcom/google/crypto/tink/internal/ProtoKeySerialization; +HSPLcom/google/crypto/tink/KeysetHandle;->write(Lcom/google/crypto/tink/KeysetWriter;Lcom/google/crypto/tink/Aead;)V +HSPLcom/google/crypto/tink/KeysetHandle;->writeWithAssociatedData(Lcom/google/crypto/tink/KeysetWriter;Lcom/google/crypto/tink/Aead;[B)V +Lcom/google/crypto/tink/KeysetHandle$1; +HSPLcom/google/crypto/tink/KeysetHandle$1;->()V +Lcom/google/crypto/tink/KeysetHandle$Entry; +HSPLcom/google/crypto/tink/KeysetHandle$Entry;->(Lcom/google/crypto/tink/Key;Lcom/google/crypto/tink/KeyStatus;IZ)V +HSPLcom/google/crypto/tink/KeysetHandle$Entry;->(Lcom/google/crypto/tink/Key;Lcom/google/crypto/tink/KeyStatus;IZLcom/google/crypto/tink/KeysetHandle$1;)V +HSPLcom/google/crypto/tink/KeysetHandle$Entry;->getKey()Lcom/google/crypto/tink/Key; +Lcom/google/crypto/tink/KeysetManager; +HSPLcom/google/crypto/tink/KeysetManager;->(Lcom/google/crypto/tink/proto/Keyset$Builder;)V +HSPLcom/google/crypto/tink/KeysetManager;->add(Lcom/google/crypto/tink/KeyTemplate;)Lcom/google/crypto/tink/KeysetManager; +HSPLcom/google/crypto/tink/KeysetManager;->addNewKey(Lcom/google/crypto/tink/proto/KeyTemplate;Z)I +HSPLcom/google/crypto/tink/KeysetManager;->createKeysetKey(Lcom/google/crypto/tink/proto/KeyData;Lcom/google/crypto/tink/proto/OutputPrefixType;)Lcom/google/crypto/tink/proto/Keyset$Key; +HSPLcom/google/crypto/tink/KeysetManager;->getKeysetHandle()Lcom/google/crypto/tink/KeysetHandle; +HSPLcom/google/crypto/tink/KeysetManager;->keyIdExists(I)Z +HSPLcom/google/crypto/tink/KeysetManager;->newKey(Lcom/google/crypto/tink/proto/KeyTemplate;)Lcom/google/crypto/tink/proto/Keyset$Key; +HSPLcom/google/crypto/tink/KeysetManager;->newKeyId()I +HSPLcom/google/crypto/tink/KeysetManager;->setPrimary(I)Lcom/google/crypto/tink/KeysetManager; +HSPLcom/google/crypto/tink/KeysetManager;->withEmptyKeyset()Lcom/google/crypto/tink/KeysetManager; +HSPLcom/google/crypto/tink/KeysetManager;->withKeysetHandle(Lcom/google/crypto/tink/KeysetHandle;)Lcom/google/crypto/tink/KeysetManager; +Lcom/google/crypto/tink/KeysetReader; +Lcom/google/crypto/tink/KeysetWriter; +Lcom/google/crypto/tink/KmsClient; +Lcom/google/crypto/tink/Mac; +Lcom/google/crypto/tink/Parameters; +HSPLcom/google/crypto/tink/Parameters;->()V +Lcom/google/crypto/tink/PrimitiveSet; +HSPLcom/google/crypto/tink/PrimitiveSet;->(Ljava/util/concurrent/ConcurrentMap;Lcom/google/crypto/tink/PrimitiveSet$Entry;Lcom/google/crypto/tink/monitoring/MonitoringAnnotations;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/PrimitiveSet;->(Ljava/util/concurrent/ConcurrentMap;Lcom/google/crypto/tink/PrimitiveSet$Entry;Lcom/google/crypto/tink/monitoring/MonitoringAnnotations;Ljava/lang/Class;Lcom/google/crypto/tink/PrimitiveSet$1;)V +HSPLcom/google/crypto/tink/PrimitiveSet;->access$100(Ljava/lang/Object;Ljava/lang/Object;Lcom/google/crypto/tink/proto/Keyset$Key;Ljava/util/concurrent/ConcurrentMap;)Lcom/google/crypto/tink/PrimitiveSet$Entry; +HSPLcom/google/crypto/tink/PrimitiveSet;->addEntryToMap(Ljava/lang/Object;Ljava/lang/Object;Lcom/google/crypto/tink/proto/Keyset$Key;Ljava/util/concurrent/ConcurrentMap;)Lcom/google/crypto/tink/PrimitiveSet$Entry; +HSPLcom/google/crypto/tink/PrimitiveSet;->getPrimary()Lcom/google/crypto/tink/PrimitiveSet$Entry; +HSPLcom/google/crypto/tink/PrimitiveSet;->getPrimitive([B)Ljava/util/List; +HSPLcom/google/crypto/tink/PrimitiveSet;->getPrimitiveClass()Ljava/lang/Class; +HSPLcom/google/crypto/tink/PrimitiveSet;->hasAnnotations()Z +HSPLcom/google/crypto/tink/PrimitiveSet;->newBuilder(Ljava/lang/Class;)Lcom/google/crypto/tink/PrimitiveSet$Builder; +Lcom/google/crypto/tink/PrimitiveSet$Builder; +HSPLcom/google/crypto/tink/PrimitiveSet$Builder;->(Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/PrimitiveSet$Builder;->(Ljava/lang/Class;Lcom/google/crypto/tink/PrimitiveSet$1;)V +HSPLcom/google/crypto/tink/PrimitiveSet$Builder;->addPrimaryFullPrimitiveAndOptionalPrimitive(Ljava/lang/Object;Ljava/lang/Object;Lcom/google/crypto/tink/proto/Keyset$Key;)Lcom/google/crypto/tink/PrimitiveSet$Builder; +HSPLcom/google/crypto/tink/PrimitiveSet$Builder;->addPrimitive(Ljava/lang/Object;Ljava/lang/Object;Lcom/google/crypto/tink/proto/Keyset$Key;Z)Lcom/google/crypto/tink/PrimitiveSet$Builder; +HSPLcom/google/crypto/tink/PrimitiveSet$Builder;->build()Lcom/google/crypto/tink/PrimitiveSet; +HSPLcom/google/crypto/tink/PrimitiveSet$Builder;->setAnnotations(Lcom/google/crypto/tink/monitoring/MonitoringAnnotations;)Lcom/google/crypto/tink/PrimitiveSet$Builder; +Lcom/google/crypto/tink/PrimitiveSet$Entry; +HSPLcom/google/crypto/tink/PrimitiveSet$Entry;->(Ljava/lang/Object;Ljava/lang/Object;[BLcom/google/crypto/tink/proto/KeyStatusType;Lcom/google/crypto/tink/proto/OutputPrefixType;ILjava/lang/String;Lcom/google/crypto/tink/Key;)V +HSPLcom/google/crypto/tink/PrimitiveSet$Entry;->getIdentifier()[B +HSPLcom/google/crypto/tink/PrimitiveSet$Entry;->getKeyId()I +HSPLcom/google/crypto/tink/PrimitiveSet$Entry;->getPrimitive()Ljava/lang/Object; +Lcom/google/crypto/tink/PrimitiveSet$Prefix; +HSPLcom/google/crypto/tink/PrimitiveSet$Prefix;->([B)V +HSPLcom/google/crypto/tink/PrimitiveSet$Prefix;->([BLcom/google/crypto/tink/PrimitiveSet$1;)V +HSPLcom/google/crypto/tink/PrimitiveSet$Prefix;->equals(Ljava/lang/Object;)Z +HSPLcom/google/crypto/tink/PrimitiveSet$Prefix;->hashCode()I +Lcom/google/crypto/tink/PrimitiveWrapper; +Lcom/google/crypto/tink/Registry; +HSPLcom/google/crypto/tink/Registry;->()V +HSPLcom/google/crypto/tink/Registry;->createDeriverFor(Lcom/google/crypto/tink/internal/KeyTypeManager;)Lcom/google/crypto/tink/Registry$KeyDeriverContainer; +HSPLcom/google/crypto/tink/Registry;->ensureKeyManagerInsertable(Ljava/lang/String;Ljava/util/Map;Z)V +HSPLcom/google/crypto/tink/Registry;->getFullPrimitive(Lcom/google/crypto/tink/Key;Ljava/lang/Class;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/Registry;->getInputPrimitive(Ljava/lang/Class;)Ljava/lang/Class; +HSPLcom/google/crypto/tink/Registry;->getPrimitive(Lcom/google/crypto/tink/proto/KeyData;Ljava/lang/Class;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/Registry;->getPrimitive(Ljava/lang/String;Lcom/google/crypto/tink/shaded/protobuf/ByteString;Ljava/lang/Class;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/Registry;->getUntypedKeyManager(Ljava/lang/String;)Lcom/google/crypto/tink/KeyManager; +HSPLcom/google/crypto/tink/Registry;->keyTemplateMap()Ljava/util/Map; +HSPLcom/google/crypto/tink/Registry;->newKeyData(Lcom/google/crypto/tink/proto/KeyTemplate;)Lcom/google/crypto/tink/proto/KeyData; +HSPLcom/google/crypto/tink/Registry;->registerKeyManager(Lcom/google/crypto/tink/internal/KeyTypeManager;Z)V +HSPLcom/google/crypto/tink/Registry;->registerKeyTemplates(Ljava/lang/String;Ljava/util/Map;)V +HSPLcom/google/crypto/tink/Registry;->registerPrimitiveWrapper(Lcom/google/crypto/tink/PrimitiveWrapper;)V +HSPLcom/google/crypto/tink/Registry;->wrap(Lcom/google/crypto/tink/PrimitiveSet;Ljava/lang/Class;)Ljava/lang/Object; +Lcom/google/crypto/tink/Registry$1; +HSPLcom/google/crypto/tink/Registry$1;->(Lcom/google/crypto/tink/internal/KeyTypeManager;)V +Lcom/google/crypto/tink/Registry$KeyDeriverContainer; +Lcom/google/crypto/tink/SecretKeyAccess; +HSPLcom/google/crypto/tink/SecretKeyAccess;->()V +HSPLcom/google/crypto/tink/SecretKeyAccess;->()V +HSPLcom/google/crypto/tink/SecretKeyAccess;->instance()Lcom/google/crypto/tink/SecretKeyAccess; +HSPLcom/google/crypto/tink/SecretKeyAccess;->requireAccess(Lcom/google/crypto/tink/SecretKeyAccess;)Lcom/google/crypto/tink/SecretKeyAccess; +Lcom/google/crypto/tink/Util; +HSPLcom/google/crypto/tink/Util;->()V +HSPLcom/google/crypto/tink/Util;->getKeyInfo(Lcom/google/crypto/tink/proto/Keyset$Key;)Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo; +HSPLcom/google/crypto/tink/Util;->getKeysetInfo(Lcom/google/crypto/tink/proto/Keyset;)Lcom/google/crypto/tink/proto/KeysetInfo; +HSPLcom/google/crypto/tink/Util;->validateKey(Lcom/google/crypto/tink/proto/Keyset$Key;)V +HSPLcom/google/crypto/tink/Util;->validateKeyset(Lcom/google/crypto/tink/proto/Keyset;)V +Lcom/google/crypto/tink/aead/AeadConfig; +HSPLcom/google/crypto/tink/aead/AeadConfig;->()V +HSPLcom/google/crypto/tink/aead/AeadConfig;->init()V +HSPLcom/google/crypto/tink/aead/AeadConfig;->register()V +Lcom/google/crypto/tink/aead/AeadKey; +HSPLcom/google/crypto/tink/aead/AeadKey;->()V +Lcom/google/crypto/tink/aead/AeadParameters; +HSPLcom/google/crypto/tink/aead/AeadParameters;->()V +Lcom/google/crypto/tink/aead/AeadWrapper; +HSPLcom/google/crypto/tink/aead/AeadWrapper;->()V +HSPLcom/google/crypto/tink/aead/AeadWrapper;->()V +HSPLcom/google/crypto/tink/aead/AeadWrapper;->getInputPrimitiveClass()Ljava/lang/Class; +HSPLcom/google/crypto/tink/aead/AeadWrapper;->getPrimitiveClass()Ljava/lang/Class; +HSPLcom/google/crypto/tink/aead/AeadWrapper;->register()V +HSPLcom/google/crypto/tink/aead/AeadWrapper;->wrap(Lcom/google/crypto/tink/PrimitiveSet;)Lcom/google/crypto/tink/Aead; +HSPLcom/google/crypto/tink/aead/AeadWrapper;->wrap(Lcom/google/crypto/tink/PrimitiveSet;)Ljava/lang/Object; +Lcom/google/crypto/tink/aead/AeadWrapper$WrappedAead; +HSPLcom/google/crypto/tink/aead/AeadWrapper$WrappedAead;->(Lcom/google/crypto/tink/PrimitiveSet;)V +HSPLcom/google/crypto/tink/aead/AeadWrapper$WrappedAead;->(Lcom/google/crypto/tink/PrimitiveSet;Lcom/google/crypto/tink/aead/AeadWrapper$1;)V +HSPLcom/google/crypto/tink/aead/AeadWrapper$WrappedAead;->decrypt([B[B)[B +HSPLcom/google/crypto/tink/aead/AeadWrapper$WrappedAead;->encrypt([B[B)[B +Lcom/google/crypto/tink/aead/AesCtrHmacAeadKeyManager; +HSPLcom/google/crypto/tink/aead/AesCtrHmacAeadKeyManager;->()V +HSPLcom/google/crypto/tink/aead/AesCtrHmacAeadKeyManager;->access$000(IIIILcom/google/crypto/tink/proto/HashType;Lcom/google/crypto/tink/KeyTemplate$OutputPrefixType;)Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory$KeyFormat; +HSPLcom/google/crypto/tink/aead/AesCtrHmacAeadKeyManager;->createKeyFormat(IIIILcom/google/crypto/tink/proto/HashType;)Lcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat; +HSPLcom/google/crypto/tink/aead/AesCtrHmacAeadKeyManager;->createKeyFormat(IIIILcom/google/crypto/tink/proto/HashType;Lcom/google/crypto/tink/KeyTemplate$OutputPrefixType;)Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory$KeyFormat; +HSPLcom/google/crypto/tink/aead/AesCtrHmacAeadKeyManager;->fipsStatus()Lcom/google/crypto/tink/config/internal/TinkFipsUtil$AlgorithmFipsCompatibility; +HSPLcom/google/crypto/tink/aead/AesCtrHmacAeadKeyManager;->getKeyType()Ljava/lang/String; +HSPLcom/google/crypto/tink/aead/AesCtrHmacAeadKeyManager;->keyFactory()Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory; +HSPLcom/google/crypto/tink/aead/AesCtrHmacAeadKeyManager;->register(Z)V +Lcom/google/crypto/tink/aead/AesCtrHmacAeadKeyManager$1; +HSPLcom/google/crypto/tink/aead/AesCtrHmacAeadKeyManager$1;->(Ljava/lang/Class;)V +Lcom/google/crypto/tink/aead/AesCtrHmacAeadKeyManager$2; +HSPLcom/google/crypto/tink/aead/AesCtrHmacAeadKeyManager$2;->(Lcom/google/crypto/tink/aead/AesCtrHmacAeadKeyManager;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/aead/AesCtrHmacAeadKeyManager$2;->keyFormats()Ljava/util/Map; +Lcom/google/crypto/tink/aead/AesEaxKey; +Lcom/google/crypto/tink/aead/AesEaxKeyManager; +HSPLcom/google/crypto/tink/aead/AesEaxKeyManager;->()V +HSPLcom/google/crypto/tink/aead/AesEaxKeyManager;->access$000(IILcom/google/crypto/tink/KeyTemplate$OutputPrefixType;)Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory$KeyFormat; +HSPLcom/google/crypto/tink/aead/AesEaxKeyManager;->createKeyFormat(IILcom/google/crypto/tink/KeyTemplate$OutputPrefixType;)Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory$KeyFormat; +HSPLcom/google/crypto/tink/aead/AesEaxKeyManager;->getKeyType()Ljava/lang/String; +HSPLcom/google/crypto/tink/aead/AesEaxKeyManager;->keyFactory()Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory; +HSPLcom/google/crypto/tink/aead/AesEaxKeyManager;->register(Z)V +Lcom/google/crypto/tink/aead/AesEaxKeyManager$1; +HSPLcom/google/crypto/tink/aead/AesEaxKeyManager$1;->(Ljava/lang/Class;)V +Lcom/google/crypto/tink/aead/AesEaxKeyManager$2; +HSPLcom/google/crypto/tink/aead/AesEaxKeyManager$2;->(Lcom/google/crypto/tink/aead/AesEaxKeyManager;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/aead/AesEaxKeyManager$2;->keyFormats()Ljava/util/Map; +Lcom/google/crypto/tink/aead/AesEaxParameters; +Lcom/google/crypto/tink/aead/AesEaxProtoSerialization; +HSPLcom/google/crypto/tink/aead/AesEaxProtoSerialization;->()V +HSPLcom/google/crypto/tink/aead/AesEaxProtoSerialization;->register()V +HSPLcom/google/crypto/tink/aead/AesEaxProtoSerialization;->register(Lcom/google/crypto/tink/internal/MutableSerializationRegistry;)V +Lcom/google/crypto/tink/aead/AesEaxProtoSerialization$$ExternalSyntheticLambda0; +HSPLcom/google/crypto/tink/aead/AesEaxProtoSerialization$$ExternalSyntheticLambda0;->()V +Lcom/google/crypto/tink/aead/AesEaxProtoSerialization$$ExternalSyntheticLambda1; +HSPLcom/google/crypto/tink/aead/AesEaxProtoSerialization$$ExternalSyntheticLambda1;->()V +Lcom/google/crypto/tink/aead/AesEaxProtoSerialization$$ExternalSyntheticLambda2; +HSPLcom/google/crypto/tink/aead/AesEaxProtoSerialization$$ExternalSyntheticLambda2;->()V +Lcom/google/crypto/tink/aead/AesEaxProtoSerialization$$ExternalSyntheticLambda3; +HSPLcom/google/crypto/tink/aead/AesEaxProtoSerialization$$ExternalSyntheticLambda3;->()V +Lcom/google/crypto/tink/aead/AesGcmKey; +HSPLcom/google/crypto/tink/aead/AesGcmKey;->(Lcom/google/crypto/tink/aead/AesGcmParameters;Lcom/google/crypto/tink/util/SecretBytes;Lcom/google/crypto/tink/util/Bytes;Ljava/lang/Integer;)V +HSPLcom/google/crypto/tink/aead/AesGcmKey;->(Lcom/google/crypto/tink/aead/AesGcmParameters;Lcom/google/crypto/tink/util/SecretBytes;Lcom/google/crypto/tink/util/Bytes;Ljava/lang/Integer;Lcom/google/crypto/tink/aead/AesGcmKey$1;)V +HSPLcom/google/crypto/tink/aead/AesGcmKey;->builder()Lcom/google/crypto/tink/aead/AesGcmKey$Builder; +Lcom/google/crypto/tink/aead/AesGcmKey$Builder; +HSPLcom/google/crypto/tink/aead/AesGcmKey$Builder;->()V +HSPLcom/google/crypto/tink/aead/AesGcmKey$Builder;->(Lcom/google/crypto/tink/aead/AesGcmKey$1;)V +HSPLcom/google/crypto/tink/aead/AesGcmKey$Builder;->build()Lcom/google/crypto/tink/aead/AesGcmKey; +HSPLcom/google/crypto/tink/aead/AesGcmKey$Builder;->getOutputPrefix()Lcom/google/crypto/tink/util/Bytes; +HSPLcom/google/crypto/tink/aead/AesGcmKey$Builder;->setIdRequirement(Ljava/lang/Integer;)Lcom/google/crypto/tink/aead/AesGcmKey$Builder; +HSPLcom/google/crypto/tink/aead/AesGcmKey$Builder;->setKeyBytes(Lcom/google/crypto/tink/util/SecretBytes;)Lcom/google/crypto/tink/aead/AesGcmKey$Builder; +HSPLcom/google/crypto/tink/aead/AesGcmKey$Builder;->setParameters(Lcom/google/crypto/tink/aead/AesGcmParameters;)Lcom/google/crypto/tink/aead/AesGcmKey$Builder; +Lcom/google/crypto/tink/aead/AesGcmKeyManager; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager;->()V +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager;->access$000(ILcom/google/crypto/tink/KeyTemplate$OutputPrefixType;)Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory$KeyFormat; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager;->createKeyFormat(ILcom/google/crypto/tink/KeyTemplate$OutputPrefixType;)Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory$KeyFormat; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager;->fipsStatus()Lcom/google/crypto/tink/config/internal/TinkFipsUtil$AlgorithmFipsCompatibility; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager;->getKeyType()Ljava/lang/String; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager;->getVersion()I +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager;->keyFactory()Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager;->keyMaterialType()Lcom/google/crypto/tink/proto/KeyData$KeyMaterialType; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager;->parseKey(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)Lcom/google/crypto/tink/proto/AesGcmKey; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager;->parseKey(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)Lcom/google/crypto/tink/shaded/protobuf/MessageLite; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager;->register(Z)V +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager;->validateKey(Lcom/google/crypto/tink/proto/AesGcmKey;)V +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager;->validateKey(Lcom/google/crypto/tink/shaded/protobuf/MessageLite;)V +Lcom/google/crypto/tink/aead/AesGcmKeyManager$1; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager$1;->(Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager$1;->getPrimitive(Lcom/google/crypto/tink/proto/AesGcmKey;)Lcom/google/crypto/tink/Aead; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager$1;->getPrimitive(Lcom/google/crypto/tink/shaded/protobuf/MessageLite;)Ljava/lang/Object; +Lcom/google/crypto/tink/aead/AesGcmKeyManager$2; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager$2;->(Lcom/google/crypto/tink/aead/AesGcmKeyManager;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager$2;->createKey(Lcom/google/crypto/tink/proto/AesGcmKeyFormat;)Lcom/google/crypto/tink/proto/AesGcmKey; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager$2;->createKey(Lcom/google/crypto/tink/shaded/protobuf/MessageLite;)Lcom/google/crypto/tink/shaded/protobuf/MessageLite; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager$2;->keyFormats()Ljava/util/Map; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager$2;->parseKeyFormat(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)Lcom/google/crypto/tink/proto/AesGcmKeyFormat; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager$2;->parseKeyFormat(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)Lcom/google/crypto/tink/shaded/protobuf/MessageLite; +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager$2;->validateKeyFormat(Lcom/google/crypto/tink/proto/AesGcmKeyFormat;)V +HSPLcom/google/crypto/tink/aead/AesGcmKeyManager$2;->validateKeyFormat(Lcom/google/crypto/tink/shaded/protobuf/MessageLite;)V +Lcom/google/crypto/tink/aead/AesGcmParameters; +HSPLcom/google/crypto/tink/aead/AesGcmParameters;->(IIILcom/google/crypto/tink/aead/AesGcmParameters$Variant;)V +HSPLcom/google/crypto/tink/aead/AesGcmParameters;->(IIILcom/google/crypto/tink/aead/AesGcmParameters$Variant;Lcom/google/crypto/tink/aead/AesGcmParameters$1;)V +HSPLcom/google/crypto/tink/aead/AesGcmParameters;->builder()Lcom/google/crypto/tink/aead/AesGcmParameters$Builder; +HSPLcom/google/crypto/tink/aead/AesGcmParameters;->getKeySizeBytes()I +HSPLcom/google/crypto/tink/aead/AesGcmParameters;->getVariant()Lcom/google/crypto/tink/aead/AesGcmParameters$Variant; +HSPLcom/google/crypto/tink/aead/AesGcmParameters;->hasIdRequirement()Z +Lcom/google/crypto/tink/aead/AesGcmParameters$Builder; +HSPLcom/google/crypto/tink/aead/AesGcmParameters$Builder;->()V +HSPLcom/google/crypto/tink/aead/AesGcmParameters$Builder;->(Lcom/google/crypto/tink/aead/AesGcmParameters$1;)V +HSPLcom/google/crypto/tink/aead/AesGcmParameters$Builder;->build()Lcom/google/crypto/tink/aead/AesGcmParameters; +HSPLcom/google/crypto/tink/aead/AesGcmParameters$Builder;->setIvSizeBytes(I)Lcom/google/crypto/tink/aead/AesGcmParameters$Builder; +HSPLcom/google/crypto/tink/aead/AesGcmParameters$Builder;->setKeySizeBytes(I)Lcom/google/crypto/tink/aead/AesGcmParameters$Builder; +HSPLcom/google/crypto/tink/aead/AesGcmParameters$Builder;->setTagSizeBytes(I)Lcom/google/crypto/tink/aead/AesGcmParameters$Builder; +HSPLcom/google/crypto/tink/aead/AesGcmParameters$Builder;->setVariant(Lcom/google/crypto/tink/aead/AesGcmParameters$Variant;)Lcom/google/crypto/tink/aead/AesGcmParameters$Builder; +Lcom/google/crypto/tink/aead/AesGcmParameters$Variant; +HSPLcom/google/crypto/tink/aead/AesGcmParameters$Variant;->()V +HSPLcom/google/crypto/tink/aead/AesGcmParameters$Variant;->(Ljava/lang/String;)V +Lcom/google/crypto/tink/aead/AesGcmProtoSerialization; +HSPLcom/google/crypto/tink/aead/AesGcmProtoSerialization;->$r8$lambda$RUN6s-jYME9EdLASXNpQ12CSlHc(Lcom/google/crypto/tink/internal/ProtoKeySerialization;Lcom/google/crypto/tink/SecretKeyAccess;)Lcom/google/crypto/tink/aead/AesGcmKey; +HSPLcom/google/crypto/tink/aead/AesGcmProtoSerialization;->()V +HSPLcom/google/crypto/tink/aead/AesGcmProtoSerialization;->parseKey(Lcom/google/crypto/tink/internal/ProtoKeySerialization;Lcom/google/crypto/tink/SecretKeyAccess;)Lcom/google/crypto/tink/aead/AesGcmKey; +HSPLcom/google/crypto/tink/aead/AesGcmProtoSerialization;->register()V +HSPLcom/google/crypto/tink/aead/AesGcmProtoSerialization;->register(Lcom/google/crypto/tink/internal/MutableSerializationRegistry;)V +HSPLcom/google/crypto/tink/aead/AesGcmProtoSerialization;->toVariant(Lcom/google/crypto/tink/proto/OutputPrefixType;)Lcom/google/crypto/tink/aead/AesGcmParameters$Variant; +Lcom/google/crypto/tink/aead/AesGcmProtoSerialization$$ExternalSyntheticLambda0; +HSPLcom/google/crypto/tink/aead/AesGcmProtoSerialization$$ExternalSyntheticLambda0;->()V +Lcom/google/crypto/tink/aead/AesGcmProtoSerialization$$ExternalSyntheticLambda1; +HSPLcom/google/crypto/tink/aead/AesGcmProtoSerialization$$ExternalSyntheticLambda1;->()V +Lcom/google/crypto/tink/aead/AesGcmProtoSerialization$$ExternalSyntheticLambda2; +HSPLcom/google/crypto/tink/aead/AesGcmProtoSerialization$$ExternalSyntheticLambda2;->()V +Lcom/google/crypto/tink/aead/AesGcmProtoSerialization$$ExternalSyntheticLambda3; +HSPLcom/google/crypto/tink/aead/AesGcmProtoSerialization$$ExternalSyntheticLambda3;->()V +HSPLcom/google/crypto/tink/aead/AesGcmProtoSerialization$$ExternalSyntheticLambda3;->parseKey(Lcom/google/crypto/tink/internal/Serialization;Lcom/google/crypto/tink/SecretKeyAccess;)Lcom/google/crypto/tink/Key; +Lcom/google/crypto/tink/aead/AesGcmProtoSerialization$1; +HSPLcom/google/crypto/tink/aead/AesGcmProtoSerialization$1;->()V +Lcom/google/crypto/tink/aead/AesGcmSivKey; +Lcom/google/crypto/tink/aead/AesGcmSivKeyManager; +HSPLcom/google/crypto/tink/aead/AesGcmSivKeyManager;->()V +HSPLcom/google/crypto/tink/aead/AesGcmSivKeyManager;->access$000(ILcom/google/crypto/tink/KeyTemplate$OutputPrefixType;)Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory$KeyFormat; +HSPLcom/google/crypto/tink/aead/AesGcmSivKeyManager;->canUseAesGcmSive()Z +HSPLcom/google/crypto/tink/aead/AesGcmSivKeyManager;->createKeyFormat(ILcom/google/crypto/tink/KeyTemplate$OutputPrefixType;)Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory$KeyFormat; +HSPLcom/google/crypto/tink/aead/AesGcmSivKeyManager;->getKeyType()Ljava/lang/String; +HSPLcom/google/crypto/tink/aead/AesGcmSivKeyManager;->keyFactory()Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory; +HSPLcom/google/crypto/tink/aead/AesGcmSivKeyManager;->register(Z)V +Lcom/google/crypto/tink/aead/AesGcmSivKeyManager$1; +HSPLcom/google/crypto/tink/aead/AesGcmSivKeyManager$1;->(Ljava/lang/Class;)V +Lcom/google/crypto/tink/aead/AesGcmSivKeyManager$2; +HSPLcom/google/crypto/tink/aead/AesGcmSivKeyManager$2;->(Lcom/google/crypto/tink/aead/AesGcmSivKeyManager;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/aead/AesGcmSivKeyManager$2;->keyFormats()Ljava/util/Map; +Lcom/google/crypto/tink/aead/AesGcmSivParameters; +Lcom/google/crypto/tink/aead/AesGcmSivProtoSerialization; +HSPLcom/google/crypto/tink/aead/AesGcmSivProtoSerialization;->()V +HSPLcom/google/crypto/tink/aead/AesGcmSivProtoSerialization;->register()V +HSPLcom/google/crypto/tink/aead/AesGcmSivProtoSerialization;->register(Lcom/google/crypto/tink/internal/MutableSerializationRegistry;)V +Lcom/google/crypto/tink/aead/AesGcmSivProtoSerialization$$ExternalSyntheticLambda0; +HSPLcom/google/crypto/tink/aead/AesGcmSivProtoSerialization$$ExternalSyntheticLambda0;->()V +Lcom/google/crypto/tink/aead/AesGcmSivProtoSerialization$$ExternalSyntheticLambda1; +HSPLcom/google/crypto/tink/aead/AesGcmSivProtoSerialization$$ExternalSyntheticLambda1;->()V +Lcom/google/crypto/tink/aead/AesGcmSivProtoSerialization$$ExternalSyntheticLambda2; +HSPLcom/google/crypto/tink/aead/AesGcmSivProtoSerialization$$ExternalSyntheticLambda2;->()V +Lcom/google/crypto/tink/aead/AesGcmSivProtoSerialization$$ExternalSyntheticLambda3; +HSPLcom/google/crypto/tink/aead/AesGcmSivProtoSerialization$$ExternalSyntheticLambda3;->()V +Lcom/google/crypto/tink/aead/ChaCha20Poly1305Key; +Lcom/google/crypto/tink/aead/ChaCha20Poly1305KeyManager; +HSPLcom/google/crypto/tink/aead/ChaCha20Poly1305KeyManager;->()V +HSPLcom/google/crypto/tink/aead/ChaCha20Poly1305KeyManager;->getKeyType()Ljava/lang/String; +HSPLcom/google/crypto/tink/aead/ChaCha20Poly1305KeyManager;->keyFactory()Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory; +HSPLcom/google/crypto/tink/aead/ChaCha20Poly1305KeyManager;->register(Z)V +Lcom/google/crypto/tink/aead/ChaCha20Poly1305KeyManager$1; +HSPLcom/google/crypto/tink/aead/ChaCha20Poly1305KeyManager$1;->(Ljava/lang/Class;)V +Lcom/google/crypto/tink/aead/ChaCha20Poly1305KeyManager$2; +HSPLcom/google/crypto/tink/aead/ChaCha20Poly1305KeyManager$2;->(Lcom/google/crypto/tink/aead/ChaCha20Poly1305KeyManager;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/aead/ChaCha20Poly1305KeyManager$2;->keyFormats()Ljava/util/Map; +Lcom/google/crypto/tink/aead/ChaCha20Poly1305Parameters; +Lcom/google/crypto/tink/aead/ChaCha20Poly1305ProtoSerialization; +HSPLcom/google/crypto/tink/aead/ChaCha20Poly1305ProtoSerialization;->()V +HSPLcom/google/crypto/tink/aead/ChaCha20Poly1305ProtoSerialization;->register()V +HSPLcom/google/crypto/tink/aead/ChaCha20Poly1305ProtoSerialization;->register(Lcom/google/crypto/tink/internal/MutableSerializationRegistry;)V +Lcom/google/crypto/tink/aead/ChaCha20Poly1305ProtoSerialization$$ExternalSyntheticLambda0; +HSPLcom/google/crypto/tink/aead/ChaCha20Poly1305ProtoSerialization$$ExternalSyntheticLambda0;->()V +Lcom/google/crypto/tink/aead/ChaCha20Poly1305ProtoSerialization$$ExternalSyntheticLambda1; +HSPLcom/google/crypto/tink/aead/ChaCha20Poly1305ProtoSerialization$$ExternalSyntheticLambda1;->()V +Lcom/google/crypto/tink/aead/ChaCha20Poly1305ProtoSerialization$$ExternalSyntheticLambda2; +HSPLcom/google/crypto/tink/aead/ChaCha20Poly1305ProtoSerialization$$ExternalSyntheticLambda2;->()V +Lcom/google/crypto/tink/aead/ChaCha20Poly1305ProtoSerialization$$ExternalSyntheticLambda3; +HSPLcom/google/crypto/tink/aead/ChaCha20Poly1305ProtoSerialization$$ExternalSyntheticLambda3;->()V +Lcom/google/crypto/tink/aead/KmsAeadKeyManager; +HSPLcom/google/crypto/tink/aead/KmsAeadKeyManager;->()V +HSPLcom/google/crypto/tink/aead/KmsAeadKeyManager;->getKeyType()Ljava/lang/String; +HSPLcom/google/crypto/tink/aead/KmsAeadKeyManager;->keyFactory()Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory; +HSPLcom/google/crypto/tink/aead/KmsAeadKeyManager;->register(Z)V +Lcom/google/crypto/tink/aead/KmsAeadKeyManager$1; +HSPLcom/google/crypto/tink/aead/KmsAeadKeyManager$1;->(Ljava/lang/Class;)V +Lcom/google/crypto/tink/aead/KmsAeadKeyManager$2; +HSPLcom/google/crypto/tink/aead/KmsAeadKeyManager$2;->(Lcom/google/crypto/tink/aead/KmsAeadKeyManager;Ljava/lang/Class;)V +Lcom/google/crypto/tink/aead/KmsEnvelopeAeadKeyManager; +HSPLcom/google/crypto/tink/aead/KmsEnvelopeAeadKeyManager;->()V +HSPLcom/google/crypto/tink/aead/KmsEnvelopeAeadKeyManager;->getKeyType()Ljava/lang/String; +HSPLcom/google/crypto/tink/aead/KmsEnvelopeAeadKeyManager;->keyFactory()Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory; +HSPLcom/google/crypto/tink/aead/KmsEnvelopeAeadKeyManager;->register(Z)V +Lcom/google/crypto/tink/aead/KmsEnvelopeAeadKeyManager$1; +HSPLcom/google/crypto/tink/aead/KmsEnvelopeAeadKeyManager$1;->(Ljava/lang/Class;)V +Lcom/google/crypto/tink/aead/KmsEnvelopeAeadKeyManager$2; +HSPLcom/google/crypto/tink/aead/KmsEnvelopeAeadKeyManager$2;->(Lcom/google/crypto/tink/aead/KmsEnvelopeAeadKeyManager;Ljava/lang/Class;)V +Lcom/google/crypto/tink/aead/XChaCha20Poly1305Key; +Lcom/google/crypto/tink/aead/XChaCha20Poly1305KeyManager; +HSPLcom/google/crypto/tink/aead/XChaCha20Poly1305KeyManager;->()V +HSPLcom/google/crypto/tink/aead/XChaCha20Poly1305KeyManager;->getKeyType()Ljava/lang/String; +HSPLcom/google/crypto/tink/aead/XChaCha20Poly1305KeyManager;->keyFactory()Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory; +HSPLcom/google/crypto/tink/aead/XChaCha20Poly1305KeyManager;->register(Z)V +Lcom/google/crypto/tink/aead/XChaCha20Poly1305KeyManager$1; +HSPLcom/google/crypto/tink/aead/XChaCha20Poly1305KeyManager$1;->(Ljava/lang/Class;)V +Lcom/google/crypto/tink/aead/XChaCha20Poly1305KeyManager$2; +HSPLcom/google/crypto/tink/aead/XChaCha20Poly1305KeyManager$2;->(Lcom/google/crypto/tink/aead/XChaCha20Poly1305KeyManager;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/aead/XChaCha20Poly1305KeyManager$2;->keyFormats()Ljava/util/Map; +Lcom/google/crypto/tink/aead/XChaCha20Poly1305Parameters; +Lcom/google/crypto/tink/aead/XChaCha20Poly1305ProtoSerialization; +HSPLcom/google/crypto/tink/aead/XChaCha20Poly1305ProtoSerialization;->()V +HSPLcom/google/crypto/tink/aead/XChaCha20Poly1305ProtoSerialization;->register()V +HSPLcom/google/crypto/tink/aead/XChaCha20Poly1305ProtoSerialization;->register(Lcom/google/crypto/tink/internal/MutableSerializationRegistry;)V +Lcom/google/crypto/tink/aead/XChaCha20Poly1305ProtoSerialization$$ExternalSyntheticLambda0; +HSPLcom/google/crypto/tink/aead/XChaCha20Poly1305ProtoSerialization$$ExternalSyntheticLambda0;->()V +Lcom/google/crypto/tink/aead/XChaCha20Poly1305ProtoSerialization$$ExternalSyntheticLambda1; +HSPLcom/google/crypto/tink/aead/XChaCha20Poly1305ProtoSerialization$$ExternalSyntheticLambda1;->()V +Lcom/google/crypto/tink/aead/XChaCha20Poly1305ProtoSerialization$$ExternalSyntheticLambda2; +HSPLcom/google/crypto/tink/aead/XChaCha20Poly1305ProtoSerialization$$ExternalSyntheticLambda2;->()V +Lcom/google/crypto/tink/aead/XChaCha20Poly1305ProtoSerialization$$ExternalSyntheticLambda3; +HSPLcom/google/crypto/tink/aead/XChaCha20Poly1305ProtoSerialization$$ExternalSyntheticLambda3;->()V +Lcom/google/crypto/tink/aead/internal/InsecureNonceAesGcmJce; +HSPLcom/google/crypto/tink/aead/internal/InsecureNonceAesGcmJce;->()V +HSPLcom/google/crypto/tink/aead/internal/InsecureNonceAesGcmJce;->([BZ)V +HSPLcom/google/crypto/tink/aead/internal/InsecureNonceAesGcmJce;->decrypt([B[B[B)[B +HSPLcom/google/crypto/tink/aead/internal/InsecureNonceAesGcmJce;->encrypt([B[B[B)[B +HSPLcom/google/crypto/tink/aead/internal/InsecureNonceAesGcmJce;->getParams([B)Ljava/security/spec/AlgorithmParameterSpec; +HSPLcom/google/crypto/tink/aead/internal/InsecureNonceAesGcmJce;->getParams([BII)Ljava/security/spec/AlgorithmParameterSpec; +Lcom/google/crypto/tink/aead/internal/InsecureNonceAesGcmJce$1; +HSPLcom/google/crypto/tink/aead/internal/InsecureNonceAesGcmJce$1;->()V +HSPLcom/google/crypto/tink/aead/internal/InsecureNonceAesGcmJce$1;->initialValue()Ljava/lang/Object; +HSPLcom/google/crypto/tink/aead/internal/InsecureNonceAesGcmJce$1;->initialValue()Ljavax/crypto/Cipher; +Lcom/google/crypto/tink/config/TinkFips; +HSPLcom/google/crypto/tink/config/TinkFips;->useOnlyFips()Z +Lcom/google/crypto/tink/config/internal/TinkFipsStatus; +HSPLcom/google/crypto/tink/config/internal/TinkFipsStatus;->useOnlyFips()Z +Lcom/google/crypto/tink/config/internal/TinkFipsUtil; +HSPLcom/google/crypto/tink/config/internal/TinkFipsUtil;->()V +HSPLcom/google/crypto/tink/config/internal/TinkFipsUtil;->useOnlyFips()Z +Lcom/google/crypto/tink/config/internal/TinkFipsUtil$AlgorithmFipsCompatibility; +HSPLcom/google/crypto/tink/config/internal/TinkFipsUtil$AlgorithmFipsCompatibility;->()V +HSPLcom/google/crypto/tink/config/internal/TinkFipsUtil$AlgorithmFipsCompatibility;->(Ljava/lang/String;I)V +HSPLcom/google/crypto/tink/config/internal/TinkFipsUtil$AlgorithmFipsCompatibility;->(Ljava/lang/String;ILcom/google/crypto/tink/config/internal/TinkFipsUtil$1;)V +Lcom/google/crypto/tink/config/internal/TinkFipsUtil$AlgorithmFipsCompatibility$1; +HSPLcom/google/crypto/tink/config/internal/TinkFipsUtil$AlgorithmFipsCompatibility$1;->(Ljava/lang/String;I)V +HSPLcom/google/crypto/tink/config/internal/TinkFipsUtil$AlgorithmFipsCompatibility$1;->isCompatible()Z +Lcom/google/crypto/tink/config/internal/TinkFipsUtil$AlgorithmFipsCompatibility$2; +HSPLcom/google/crypto/tink/config/internal/TinkFipsUtil$AlgorithmFipsCompatibility$2;->(Ljava/lang/String;I)V +HSPLcom/google/crypto/tink/config/internal/TinkFipsUtil$AlgorithmFipsCompatibility$2;->isCompatible()Z +Lcom/google/crypto/tink/daead/AesSivKeyManager; +HSPLcom/google/crypto/tink/daead/AesSivKeyManager;->()V +HSPLcom/google/crypto/tink/daead/AesSivKeyManager;->getKeyType()Ljava/lang/String; +HSPLcom/google/crypto/tink/daead/AesSivKeyManager;->getVersion()I +HSPLcom/google/crypto/tink/daead/AesSivKeyManager;->keyFactory()Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory; +HSPLcom/google/crypto/tink/daead/AesSivKeyManager;->keyMaterialType()Lcom/google/crypto/tink/proto/KeyData$KeyMaterialType; +HSPLcom/google/crypto/tink/daead/AesSivKeyManager;->parseKey(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)Lcom/google/crypto/tink/proto/AesSivKey; +HSPLcom/google/crypto/tink/daead/AesSivKeyManager;->parseKey(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)Lcom/google/crypto/tink/shaded/protobuf/MessageLite; +HSPLcom/google/crypto/tink/daead/AesSivKeyManager;->register(Z)V +HSPLcom/google/crypto/tink/daead/AesSivKeyManager;->validateKey(Lcom/google/crypto/tink/proto/AesSivKey;)V +HSPLcom/google/crypto/tink/daead/AesSivKeyManager;->validateKey(Lcom/google/crypto/tink/shaded/protobuf/MessageLite;)V +Lcom/google/crypto/tink/daead/AesSivKeyManager$1; +HSPLcom/google/crypto/tink/daead/AesSivKeyManager$1;->(Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/daead/AesSivKeyManager$1;->getPrimitive(Lcom/google/crypto/tink/proto/AesSivKey;)Lcom/google/crypto/tink/DeterministicAead; +HSPLcom/google/crypto/tink/daead/AesSivKeyManager$1;->getPrimitive(Lcom/google/crypto/tink/shaded/protobuf/MessageLite;)Ljava/lang/Object; +Lcom/google/crypto/tink/daead/AesSivKeyManager$2; +HSPLcom/google/crypto/tink/daead/AesSivKeyManager$2;->(Lcom/google/crypto/tink/daead/AesSivKeyManager;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/daead/AesSivKeyManager$2;->createKey(Lcom/google/crypto/tink/proto/AesSivKeyFormat;)Lcom/google/crypto/tink/proto/AesSivKey; +HSPLcom/google/crypto/tink/daead/AesSivKeyManager$2;->createKey(Lcom/google/crypto/tink/shaded/protobuf/MessageLite;)Lcom/google/crypto/tink/shaded/protobuf/MessageLite; +HSPLcom/google/crypto/tink/daead/AesSivKeyManager$2;->keyFormats()Ljava/util/Map; +HSPLcom/google/crypto/tink/daead/AesSivKeyManager$2;->parseKeyFormat(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)Lcom/google/crypto/tink/proto/AesSivKeyFormat; +HSPLcom/google/crypto/tink/daead/AesSivKeyManager$2;->parseKeyFormat(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)Lcom/google/crypto/tink/shaded/protobuf/MessageLite; +HSPLcom/google/crypto/tink/daead/AesSivKeyManager$2;->validateKeyFormat(Lcom/google/crypto/tink/proto/AesSivKeyFormat;)V +HSPLcom/google/crypto/tink/daead/AesSivKeyManager$2;->validateKeyFormat(Lcom/google/crypto/tink/shaded/protobuf/MessageLite;)V +Lcom/google/crypto/tink/daead/DeterministicAeadConfig; +HSPLcom/google/crypto/tink/daead/DeterministicAeadConfig;->()V +HSPLcom/google/crypto/tink/daead/DeterministicAeadConfig;->register()V +Lcom/google/crypto/tink/daead/DeterministicAeadWrapper; +HSPLcom/google/crypto/tink/daead/DeterministicAeadWrapper;->()V +HSPLcom/google/crypto/tink/daead/DeterministicAeadWrapper;->()V +HSPLcom/google/crypto/tink/daead/DeterministicAeadWrapper;->getInputPrimitiveClass()Ljava/lang/Class; +HSPLcom/google/crypto/tink/daead/DeterministicAeadWrapper;->getPrimitiveClass()Ljava/lang/Class; +HSPLcom/google/crypto/tink/daead/DeterministicAeadWrapper;->register()V +HSPLcom/google/crypto/tink/daead/DeterministicAeadWrapper;->wrap(Lcom/google/crypto/tink/PrimitiveSet;)Lcom/google/crypto/tink/DeterministicAead; +HSPLcom/google/crypto/tink/daead/DeterministicAeadWrapper;->wrap(Lcom/google/crypto/tink/PrimitiveSet;)Ljava/lang/Object; +Lcom/google/crypto/tink/daead/DeterministicAeadWrapper$WrappedDeterministicAead; +HSPLcom/google/crypto/tink/daead/DeterministicAeadWrapper$WrappedDeterministicAead;->(Lcom/google/crypto/tink/PrimitiveSet;)V +HSPLcom/google/crypto/tink/daead/DeterministicAeadWrapper$WrappedDeterministicAead;->encryptDeterministically([B[B)[B +Lcom/google/crypto/tink/integration/android/AndroidKeysetManager; +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager;->()V +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager;->(Lcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;)V +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager;->(Lcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;Lcom/google/crypto/tink/integration/android/AndroidKeysetManager$1;)V +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager;->access$600()Ljava/lang/Object; +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager;->access$700()Z +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager;->getKeysetHandle()Lcom/google/crypto/tink/KeysetHandle; +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager;->isAtLeastM()Z +Lcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder; +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;->()V +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;->access$000(Lcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;)Landroid/content/Context; +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;->access$100(Lcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;)Ljava/lang/String; +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;->access$200(Lcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;)Ljava/lang/String; +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;->access$300(Lcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;)Lcom/google/crypto/tink/Aead; +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;->access$400(Lcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;)Lcom/google/crypto/tink/KeysetManager; +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;->build()Lcom/google/crypto/tink/integration/android/AndroidKeysetManager; +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;->generateKeysetAndWriteToPrefs()Lcom/google/crypto/tink/KeysetManager; +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;->readKeysetFromPrefs(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)[B +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;->readMasterkeyDecryptAndParseKeyset([B)Lcom/google/crypto/tink/KeysetManager; +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;->readOrGenerateNewMasterKey()Lcom/google/crypto/tink/Aead; +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;->withKeyTemplate(Lcom/google/crypto/tink/KeyTemplate;)Lcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder; +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;->withMasterKeyUri(Ljava/lang/String;)Lcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder; +HSPLcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder;->withSharedPref(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)Lcom/google/crypto/tink/integration/android/AndroidKeysetManager$Builder; +Lcom/google/crypto/tink/integration/android/AndroidKeystoreAesGcm; +HSPLcom/google/crypto/tink/integration/android/AndroidKeystoreAesGcm;->()V +HSPLcom/google/crypto/tink/integration/android/AndroidKeystoreAesGcm;->(Ljava/lang/String;Ljava/security/KeyStore;)V +HSPLcom/google/crypto/tink/integration/android/AndroidKeystoreAesGcm;->decrypt([B[B)[B +HSPLcom/google/crypto/tink/integration/android/AndroidKeystoreAesGcm;->decryptInternal([B[B)[B +HSPLcom/google/crypto/tink/integration/android/AndroidKeystoreAesGcm;->encrypt([B[B)[B +HSPLcom/google/crypto/tink/integration/android/AndroidKeystoreAesGcm;->encryptInternal([B[B)[B +Lcom/google/crypto/tink/integration/android/AndroidKeystoreKmsClient; +HSPLcom/google/crypto/tink/integration/android/AndroidKeystoreKmsClient;->()V +HSPLcom/google/crypto/tink/integration/android/AndroidKeystoreKmsClient;->()V +HSPLcom/google/crypto/tink/integration/android/AndroidKeystoreKmsClient;->(Lcom/google/crypto/tink/integration/android/AndroidKeystoreKmsClient$Builder;)V +HSPLcom/google/crypto/tink/integration/android/AndroidKeystoreKmsClient;->access$000()Z +HSPLcom/google/crypto/tink/integration/android/AndroidKeystoreKmsClient;->generateKeyIfNotExist(Ljava/lang/String;)Z +HSPLcom/google/crypto/tink/integration/android/AndroidKeystoreKmsClient;->getAead(Ljava/lang/String;)Lcom/google/crypto/tink/Aead; +HSPLcom/google/crypto/tink/integration/android/AndroidKeystoreKmsClient;->hasKey(Ljava/lang/String;)Z +HSPLcom/google/crypto/tink/integration/android/AndroidKeystoreKmsClient;->isAtLeastM()Z +HSPLcom/google/crypto/tink/integration/android/AndroidKeystoreKmsClient;->validateAead(Lcom/google/crypto/tink/Aead;)Lcom/google/crypto/tink/Aead; +Lcom/google/crypto/tink/integration/android/AndroidKeystoreKmsClient$Builder; +HSPLcom/google/crypto/tink/integration/android/AndroidKeystoreKmsClient$Builder;->()V +Lcom/google/crypto/tink/integration/android/SharedPrefKeysetWriter; +HSPLcom/google/crypto/tink/integration/android/SharedPrefKeysetWriter;->(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/google/crypto/tink/integration/android/SharedPrefKeysetWriter;->write(Lcom/google/crypto/tink/proto/EncryptedKeyset;)V +Lcom/google/crypto/tink/internal/BuildDispatchedCode; +HSPLcom/google/crypto/tink/internal/BuildDispatchedCode;->getApiLevel()Ljava/lang/Integer; +Lcom/google/crypto/tink/internal/KeyParser; +HSPLcom/google/crypto/tink/internal/KeyParser;->(Lcom/google/crypto/tink/util/Bytes;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/internal/KeyParser;->(Lcom/google/crypto/tink/util/Bytes;Ljava/lang/Class;Lcom/google/crypto/tink/internal/KeyParser$1;)V +HSPLcom/google/crypto/tink/internal/KeyParser;->create(Lcom/google/crypto/tink/internal/KeyParser$KeyParsingFunction;Lcom/google/crypto/tink/util/Bytes;Ljava/lang/Class;)Lcom/google/crypto/tink/internal/KeyParser; +HSPLcom/google/crypto/tink/internal/KeyParser;->getObjectIdentifier()Lcom/google/crypto/tink/util/Bytes; +HSPLcom/google/crypto/tink/internal/KeyParser;->getSerializationClass()Ljava/lang/Class; +Lcom/google/crypto/tink/internal/KeyParser$1; +HSPLcom/google/crypto/tink/internal/KeyParser$1;->(Lcom/google/crypto/tink/util/Bytes;Ljava/lang/Class;Lcom/google/crypto/tink/internal/KeyParser$KeyParsingFunction;)V +HSPLcom/google/crypto/tink/internal/KeyParser$1;->parseKey(Lcom/google/crypto/tink/internal/Serialization;Lcom/google/crypto/tink/SecretKeyAccess;)Lcom/google/crypto/tink/Key; +Lcom/google/crypto/tink/internal/KeyParser$KeyParsingFunction; +Lcom/google/crypto/tink/internal/KeySerializer; +HSPLcom/google/crypto/tink/internal/KeySerializer;->(Ljava/lang/Class;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/internal/KeySerializer;->(Ljava/lang/Class;Ljava/lang/Class;Lcom/google/crypto/tink/internal/KeySerializer$1;)V +HSPLcom/google/crypto/tink/internal/KeySerializer;->create(Lcom/google/crypto/tink/internal/KeySerializer$KeySerializationFunction;Ljava/lang/Class;Ljava/lang/Class;)Lcom/google/crypto/tink/internal/KeySerializer; +HSPLcom/google/crypto/tink/internal/KeySerializer;->getKeyClass()Ljava/lang/Class; +HSPLcom/google/crypto/tink/internal/KeySerializer;->getSerializationClass()Ljava/lang/Class; +Lcom/google/crypto/tink/internal/KeySerializer$1; +HSPLcom/google/crypto/tink/internal/KeySerializer$1;->(Ljava/lang/Class;Ljava/lang/Class;Lcom/google/crypto/tink/internal/KeySerializer$KeySerializationFunction;)V +Lcom/google/crypto/tink/internal/KeySerializer$KeySerializationFunction; +Lcom/google/crypto/tink/internal/KeyTypeManager; +HSPLcom/google/crypto/tink/internal/KeyTypeManager;->(Ljava/lang/Class;[Lcom/google/crypto/tink/internal/PrimitiveFactory;)V +HSPLcom/google/crypto/tink/internal/KeyTypeManager;->fipsStatus()Lcom/google/crypto/tink/config/internal/TinkFipsUtil$AlgorithmFipsCompatibility; +HSPLcom/google/crypto/tink/internal/KeyTypeManager;->firstSupportedPrimitiveClass()Ljava/lang/Class; +HSPLcom/google/crypto/tink/internal/KeyTypeManager;->getPrimitive(Lcom/google/crypto/tink/shaded/protobuf/MessageLite;Ljava/lang/Class;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/internal/KeyTypeManager;->supportedPrimitives()Ljava/util/Set; +Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory; +HSPLcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory;->(Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory;->keyFormats()Ljava/util/Map; +Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory$KeyFormat; +HSPLcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory$KeyFormat;->(Ljava/lang/Object;Lcom/google/crypto/tink/KeyTemplate$OutputPrefixType;)V +Lcom/google/crypto/tink/internal/LegacyProtoKey; +HSPLcom/google/crypto/tink/internal/LegacyProtoKey;->(Lcom/google/crypto/tink/internal/ProtoKeySerialization;Lcom/google/crypto/tink/SecretKeyAccess;)V +HSPLcom/google/crypto/tink/internal/LegacyProtoKey;->throwIfMissingAccess(Lcom/google/crypto/tink/internal/ProtoKeySerialization;Lcom/google/crypto/tink/SecretKeyAccess;)V +Lcom/google/crypto/tink/internal/LegacyProtoKey$1; +HSPLcom/google/crypto/tink/internal/LegacyProtoKey$1;->()V +Lcom/google/crypto/tink/internal/MonitoringUtil; +HSPLcom/google/crypto/tink/internal/MonitoringUtil;->()V +Lcom/google/crypto/tink/internal/MonitoringUtil$DoNothingLogger; +HSPLcom/google/crypto/tink/internal/MonitoringUtil$DoNothingLogger;->()V +HSPLcom/google/crypto/tink/internal/MonitoringUtil$DoNothingLogger;->(Lcom/google/crypto/tink/internal/MonitoringUtil$1;)V +HSPLcom/google/crypto/tink/internal/MonitoringUtil$DoNothingLogger;->log(IJ)V +Lcom/google/crypto/tink/internal/MutablePrimitiveRegistry; +HSPLcom/google/crypto/tink/internal/MutablePrimitiveRegistry;->()V +HSPLcom/google/crypto/tink/internal/MutablePrimitiveRegistry;->()V +HSPLcom/google/crypto/tink/internal/MutablePrimitiveRegistry;->getInputPrimitiveClass(Ljava/lang/Class;)Ljava/lang/Class; +HSPLcom/google/crypto/tink/internal/MutablePrimitiveRegistry;->getPrimitive(Lcom/google/crypto/tink/Key;Ljava/lang/Class;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/internal/MutablePrimitiveRegistry;->globalInstance()Lcom/google/crypto/tink/internal/MutablePrimitiveRegistry; +HSPLcom/google/crypto/tink/internal/MutablePrimitiveRegistry;->registerPrimitiveConstructor(Lcom/google/crypto/tink/internal/PrimitiveConstructor;)V +HSPLcom/google/crypto/tink/internal/MutablePrimitiveRegistry;->registerPrimitiveWrapper(Lcom/google/crypto/tink/PrimitiveWrapper;)V +HSPLcom/google/crypto/tink/internal/MutablePrimitiveRegistry;->wrap(Lcom/google/crypto/tink/PrimitiveSet;Ljava/lang/Class;)Ljava/lang/Object; +Lcom/google/crypto/tink/internal/MutableSerializationRegistry; +HSPLcom/google/crypto/tink/internal/MutableSerializationRegistry;->()V +HSPLcom/google/crypto/tink/internal/MutableSerializationRegistry;->()V +HSPLcom/google/crypto/tink/internal/MutableSerializationRegistry;->globalInstance()Lcom/google/crypto/tink/internal/MutableSerializationRegistry; +HSPLcom/google/crypto/tink/internal/MutableSerializationRegistry;->hasParserForKey(Lcom/google/crypto/tink/internal/Serialization;)Z +HSPLcom/google/crypto/tink/internal/MutableSerializationRegistry;->parseKey(Lcom/google/crypto/tink/internal/Serialization;Lcom/google/crypto/tink/SecretKeyAccess;)Lcom/google/crypto/tink/Key; +HSPLcom/google/crypto/tink/internal/MutableSerializationRegistry;->parseKeyWithLegacyFallback(Lcom/google/crypto/tink/internal/ProtoKeySerialization;Lcom/google/crypto/tink/SecretKeyAccess;)Lcom/google/crypto/tink/Key; +HSPLcom/google/crypto/tink/internal/MutableSerializationRegistry;->registerKeyParser(Lcom/google/crypto/tink/internal/KeyParser;)V +HSPLcom/google/crypto/tink/internal/MutableSerializationRegistry;->registerKeySerializer(Lcom/google/crypto/tink/internal/KeySerializer;)V +HSPLcom/google/crypto/tink/internal/MutableSerializationRegistry;->registerParametersParser(Lcom/google/crypto/tink/internal/ParametersParser;)V +HSPLcom/google/crypto/tink/internal/MutableSerializationRegistry;->registerParametersSerializer(Lcom/google/crypto/tink/internal/ParametersSerializer;)V +Lcom/google/crypto/tink/internal/ParametersParser; +HSPLcom/google/crypto/tink/internal/ParametersParser;->(Lcom/google/crypto/tink/util/Bytes;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/internal/ParametersParser;->(Lcom/google/crypto/tink/util/Bytes;Ljava/lang/Class;Lcom/google/crypto/tink/internal/ParametersParser$1;)V +HSPLcom/google/crypto/tink/internal/ParametersParser;->create(Lcom/google/crypto/tink/internal/ParametersParser$ParametersParsingFunction;Lcom/google/crypto/tink/util/Bytes;Ljava/lang/Class;)Lcom/google/crypto/tink/internal/ParametersParser; +HSPLcom/google/crypto/tink/internal/ParametersParser;->getObjectIdentifier()Lcom/google/crypto/tink/util/Bytes; +HSPLcom/google/crypto/tink/internal/ParametersParser;->getSerializationClass()Ljava/lang/Class; +Lcom/google/crypto/tink/internal/ParametersParser$1; +HSPLcom/google/crypto/tink/internal/ParametersParser$1;->(Lcom/google/crypto/tink/util/Bytes;Ljava/lang/Class;Lcom/google/crypto/tink/internal/ParametersParser$ParametersParsingFunction;)V +Lcom/google/crypto/tink/internal/ParametersParser$ParametersParsingFunction; +Lcom/google/crypto/tink/internal/ParametersSerializer; +HSPLcom/google/crypto/tink/internal/ParametersSerializer;->(Ljava/lang/Class;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/internal/ParametersSerializer;->(Ljava/lang/Class;Ljava/lang/Class;Lcom/google/crypto/tink/internal/ParametersSerializer$1;)V +HSPLcom/google/crypto/tink/internal/ParametersSerializer;->create(Lcom/google/crypto/tink/internal/ParametersSerializer$ParametersSerializationFunction;Ljava/lang/Class;Ljava/lang/Class;)Lcom/google/crypto/tink/internal/ParametersSerializer; +HSPLcom/google/crypto/tink/internal/ParametersSerializer;->getParametersClass()Ljava/lang/Class; +HSPLcom/google/crypto/tink/internal/ParametersSerializer;->getSerializationClass()Ljava/lang/Class; +Lcom/google/crypto/tink/internal/ParametersSerializer$1; +HSPLcom/google/crypto/tink/internal/ParametersSerializer$1;->(Ljava/lang/Class;Ljava/lang/Class;Lcom/google/crypto/tink/internal/ParametersSerializer$ParametersSerializationFunction;)V +Lcom/google/crypto/tink/internal/ParametersSerializer$ParametersSerializationFunction; +Lcom/google/crypto/tink/internal/PrimitiveConstructor; +HSPLcom/google/crypto/tink/internal/PrimitiveConstructor;->(Ljava/lang/Class;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/internal/PrimitiveConstructor;->(Ljava/lang/Class;Ljava/lang/Class;Lcom/google/crypto/tink/internal/PrimitiveConstructor$1;)V +HSPLcom/google/crypto/tink/internal/PrimitiveConstructor;->create(Lcom/google/crypto/tink/internal/PrimitiveConstructor$PrimitiveConstructionFunction;Ljava/lang/Class;Ljava/lang/Class;)Lcom/google/crypto/tink/internal/PrimitiveConstructor; +HSPLcom/google/crypto/tink/internal/PrimitiveConstructor;->getKeyClass()Ljava/lang/Class; +HSPLcom/google/crypto/tink/internal/PrimitiveConstructor;->getPrimitiveClass()Ljava/lang/Class; +Lcom/google/crypto/tink/internal/PrimitiveConstructor$1; +HSPLcom/google/crypto/tink/internal/PrimitiveConstructor$1;->(Ljava/lang/Class;Ljava/lang/Class;Lcom/google/crypto/tink/internal/PrimitiveConstructor$PrimitiveConstructionFunction;)V +Lcom/google/crypto/tink/internal/PrimitiveConstructor$PrimitiveConstructionFunction; +Lcom/google/crypto/tink/internal/PrimitiveFactory; +HSPLcom/google/crypto/tink/internal/PrimitiveFactory;->(Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/internal/PrimitiveFactory;->getPrimitiveClass()Ljava/lang/Class; +Lcom/google/crypto/tink/internal/PrimitiveRegistry; +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry;->(Lcom/google/crypto/tink/internal/PrimitiveRegistry$Builder;)V +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry;->(Lcom/google/crypto/tink/internal/PrimitiveRegistry$Builder;Lcom/google/crypto/tink/internal/PrimitiveRegistry$1;)V +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry;->access$000(Lcom/google/crypto/tink/internal/PrimitiveRegistry;)Ljava/util/Map; +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry;->access$100(Lcom/google/crypto/tink/internal/PrimitiveRegistry;)Ljava/util/Map; +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry;->getInputPrimitiveClass(Ljava/lang/Class;)Ljava/lang/Class; +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry;->getPrimitive(Lcom/google/crypto/tink/Key;Ljava/lang/Class;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry;->wrap(Lcom/google/crypto/tink/PrimitiveSet;Ljava/lang/Class;)Ljava/lang/Object; +Lcom/google/crypto/tink/internal/PrimitiveRegistry$Builder; +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry$Builder;->()V +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry$Builder;->(Lcom/google/crypto/tink/internal/PrimitiveRegistry;)V +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry$Builder;->access$400(Lcom/google/crypto/tink/internal/PrimitiveRegistry$Builder;)Ljava/util/Map; +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry$Builder;->access$500(Lcom/google/crypto/tink/internal/PrimitiveRegistry$Builder;)Ljava/util/Map; +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry$Builder;->build()Lcom/google/crypto/tink/internal/PrimitiveRegistry; +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry$Builder;->registerPrimitiveConstructor(Lcom/google/crypto/tink/internal/PrimitiveConstructor;)Lcom/google/crypto/tink/internal/PrimitiveRegistry$Builder; +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry$Builder;->registerPrimitiveWrapper(Lcom/google/crypto/tink/PrimitiveWrapper;)Lcom/google/crypto/tink/internal/PrimitiveRegistry$Builder; +Lcom/google/crypto/tink/internal/PrimitiveRegistry$PrimitiveConstructorIndex; +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry$PrimitiveConstructorIndex;->(Ljava/lang/Class;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry$PrimitiveConstructorIndex;->(Ljava/lang/Class;Ljava/lang/Class;Lcom/google/crypto/tink/internal/PrimitiveRegistry$1;)V +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry$PrimitiveConstructorIndex;->equals(Ljava/lang/Object;)Z +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry$PrimitiveConstructorIndex;->hashCode()I +HSPLcom/google/crypto/tink/internal/PrimitiveRegistry$PrimitiveConstructorIndex;->toString()Ljava/lang/String; +Lcom/google/crypto/tink/internal/ProtoKeySerialization; +HSPLcom/google/crypto/tink/internal/ProtoKeySerialization;->(Ljava/lang/String;Lcom/google/crypto/tink/shaded/protobuf/ByteString;Lcom/google/crypto/tink/proto/KeyData$KeyMaterialType;Lcom/google/crypto/tink/proto/OutputPrefixType;Ljava/lang/Integer;)V +HSPLcom/google/crypto/tink/internal/ProtoKeySerialization;->create(Ljava/lang/String;Lcom/google/crypto/tink/shaded/protobuf/ByteString;Lcom/google/crypto/tink/proto/KeyData$KeyMaterialType;Lcom/google/crypto/tink/proto/OutputPrefixType;Ljava/lang/Integer;)Lcom/google/crypto/tink/internal/ProtoKeySerialization; +HSPLcom/google/crypto/tink/internal/ProtoKeySerialization;->getIdRequirementOrNull()Ljava/lang/Integer; +HSPLcom/google/crypto/tink/internal/ProtoKeySerialization;->getKeyMaterialType()Lcom/google/crypto/tink/proto/KeyData$KeyMaterialType; +HSPLcom/google/crypto/tink/internal/ProtoKeySerialization;->getObjectIdentifier()Lcom/google/crypto/tink/util/Bytes; +HSPLcom/google/crypto/tink/internal/ProtoKeySerialization;->getOutputPrefixType()Lcom/google/crypto/tink/proto/OutputPrefixType; +HSPLcom/google/crypto/tink/internal/ProtoKeySerialization;->getTypeUrl()Ljava/lang/String; +HSPLcom/google/crypto/tink/internal/ProtoKeySerialization;->getValue()Lcom/google/crypto/tink/shaded/protobuf/ByteString; +Lcom/google/crypto/tink/internal/ProtoParametersSerialization; +Lcom/google/crypto/tink/internal/Serialization; +Lcom/google/crypto/tink/internal/SerializationRegistry; +HSPLcom/google/crypto/tink/internal/SerializationRegistry;->(Lcom/google/crypto/tink/internal/SerializationRegistry$Builder;)V +HSPLcom/google/crypto/tink/internal/SerializationRegistry;->(Lcom/google/crypto/tink/internal/SerializationRegistry$Builder;Lcom/google/crypto/tink/internal/SerializationRegistry$1;)V +HSPLcom/google/crypto/tink/internal/SerializationRegistry;->access$000(Lcom/google/crypto/tink/internal/SerializationRegistry;)Ljava/util/Map; +HSPLcom/google/crypto/tink/internal/SerializationRegistry;->access$100(Lcom/google/crypto/tink/internal/SerializationRegistry;)Ljava/util/Map; +HSPLcom/google/crypto/tink/internal/SerializationRegistry;->access$200(Lcom/google/crypto/tink/internal/SerializationRegistry;)Ljava/util/Map; +HSPLcom/google/crypto/tink/internal/SerializationRegistry;->access$300(Lcom/google/crypto/tink/internal/SerializationRegistry;)Ljava/util/Map; +HSPLcom/google/crypto/tink/internal/SerializationRegistry;->hasParserForKey(Lcom/google/crypto/tink/internal/Serialization;)Z +HSPLcom/google/crypto/tink/internal/SerializationRegistry;->parseKey(Lcom/google/crypto/tink/internal/Serialization;Lcom/google/crypto/tink/SecretKeyAccess;)Lcom/google/crypto/tink/Key; +Lcom/google/crypto/tink/internal/SerializationRegistry$Builder; +HSPLcom/google/crypto/tink/internal/SerializationRegistry$Builder;->()V +HSPLcom/google/crypto/tink/internal/SerializationRegistry$Builder;->(Lcom/google/crypto/tink/internal/SerializationRegistry;)V +HSPLcom/google/crypto/tink/internal/SerializationRegistry$Builder;->access$1000(Lcom/google/crypto/tink/internal/SerializationRegistry$Builder;)Ljava/util/Map; +HSPLcom/google/crypto/tink/internal/SerializationRegistry$Builder;->access$700(Lcom/google/crypto/tink/internal/SerializationRegistry$Builder;)Ljava/util/Map; +HSPLcom/google/crypto/tink/internal/SerializationRegistry$Builder;->access$800(Lcom/google/crypto/tink/internal/SerializationRegistry$Builder;)Ljava/util/Map; +HSPLcom/google/crypto/tink/internal/SerializationRegistry$Builder;->access$900(Lcom/google/crypto/tink/internal/SerializationRegistry$Builder;)Ljava/util/Map; +HSPLcom/google/crypto/tink/internal/SerializationRegistry$Builder;->build()Lcom/google/crypto/tink/internal/SerializationRegistry; +HSPLcom/google/crypto/tink/internal/SerializationRegistry$Builder;->registerKeyParser(Lcom/google/crypto/tink/internal/KeyParser;)Lcom/google/crypto/tink/internal/SerializationRegistry$Builder; +HSPLcom/google/crypto/tink/internal/SerializationRegistry$Builder;->registerKeySerializer(Lcom/google/crypto/tink/internal/KeySerializer;)Lcom/google/crypto/tink/internal/SerializationRegistry$Builder; +HSPLcom/google/crypto/tink/internal/SerializationRegistry$Builder;->registerParametersParser(Lcom/google/crypto/tink/internal/ParametersParser;)Lcom/google/crypto/tink/internal/SerializationRegistry$Builder; +HSPLcom/google/crypto/tink/internal/SerializationRegistry$Builder;->registerParametersSerializer(Lcom/google/crypto/tink/internal/ParametersSerializer;)Lcom/google/crypto/tink/internal/SerializationRegistry$Builder; +Lcom/google/crypto/tink/internal/SerializationRegistry$ParserIndex; +HSPLcom/google/crypto/tink/internal/SerializationRegistry$ParserIndex;->(Ljava/lang/Class;Lcom/google/crypto/tink/util/Bytes;)V +HSPLcom/google/crypto/tink/internal/SerializationRegistry$ParserIndex;->(Ljava/lang/Class;Lcom/google/crypto/tink/util/Bytes;Lcom/google/crypto/tink/internal/SerializationRegistry$1;)V +HSPLcom/google/crypto/tink/internal/SerializationRegistry$ParserIndex;->equals(Ljava/lang/Object;)Z +HSPLcom/google/crypto/tink/internal/SerializationRegistry$ParserIndex;->hashCode()I +Lcom/google/crypto/tink/internal/SerializationRegistry$SerializerIndex; +HSPLcom/google/crypto/tink/internal/SerializationRegistry$SerializerIndex;->(Ljava/lang/Class;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/internal/SerializationRegistry$SerializerIndex;->(Ljava/lang/Class;Ljava/lang/Class;Lcom/google/crypto/tink/internal/SerializationRegistry$1;)V +HSPLcom/google/crypto/tink/internal/SerializationRegistry$SerializerIndex;->equals(Ljava/lang/Object;)Z +HSPLcom/google/crypto/tink/internal/SerializationRegistry$SerializerIndex;->hashCode()I +Lcom/google/crypto/tink/internal/Util; +HSPLcom/google/crypto/tink/internal/Util;->()V +HSPLcom/google/crypto/tink/internal/Util;->getAndroidApiLevel()Ljava/lang/Integer; +HSPLcom/google/crypto/tink/internal/Util;->isAndroid()Z +HSPLcom/google/crypto/tink/internal/Util;->randKeyId()I +HSPLcom/google/crypto/tink/internal/Util;->toByteFromPrintableAscii(C)B +HSPLcom/google/crypto/tink/internal/Util;->toBytesFromPrintableAscii(Ljava/lang/String;)Lcom/google/crypto/tink/util/Bytes; +Lcom/google/crypto/tink/mac/AesCmacKey; +Lcom/google/crypto/tink/mac/AesCmacKeyManager; +HSPLcom/google/crypto/tink/mac/AesCmacKeyManager;->()V +HSPLcom/google/crypto/tink/mac/AesCmacKeyManager;->()V +HSPLcom/google/crypto/tink/mac/AesCmacKeyManager;->getKeyType()Ljava/lang/String; +HSPLcom/google/crypto/tink/mac/AesCmacKeyManager;->keyFactory()Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory; +HSPLcom/google/crypto/tink/mac/AesCmacKeyManager;->register(Z)V +Lcom/google/crypto/tink/mac/AesCmacKeyManager$$ExternalSyntheticLambda0; +HSPLcom/google/crypto/tink/mac/AesCmacKeyManager$$ExternalSyntheticLambda0;->()V +Lcom/google/crypto/tink/mac/AesCmacKeyManager$1; +HSPLcom/google/crypto/tink/mac/AesCmacKeyManager$1;->(Ljava/lang/Class;)V +Lcom/google/crypto/tink/mac/AesCmacKeyManager$2; +HSPLcom/google/crypto/tink/mac/AesCmacKeyManager$2;->(Lcom/google/crypto/tink/mac/AesCmacKeyManager;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/mac/AesCmacKeyManager$2;->keyFormats()Ljava/util/Map; +Lcom/google/crypto/tink/mac/AesCmacParameters; +Lcom/google/crypto/tink/mac/AesCmacProtoSerialization; +HSPLcom/google/crypto/tink/mac/AesCmacProtoSerialization;->()V +HSPLcom/google/crypto/tink/mac/AesCmacProtoSerialization;->register()V +HSPLcom/google/crypto/tink/mac/AesCmacProtoSerialization;->register(Lcom/google/crypto/tink/internal/MutableSerializationRegistry;)V +Lcom/google/crypto/tink/mac/AesCmacProtoSerialization$$ExternalSyntheticLambda0; +HSPLcom/google/crypto/tink/mac/AesCmacProtoSerialization$$ExternalSyntheticLambda0;->()V +Lcom/google/crypto/tink/mac/AesCmacProtoSerialization$$ExternalSyntheticLambda1; +HSPLcom/google/crypto/tink/mac/AesCmacProtoSerialization$$ExternalSyntheticLambda1;->()V +Lcom/google/crypto/tink/mac/AesCmacProtoSerialization$$ExternalSyntheticLambda2; +HSPLcom/google/crypto/tink/mac/AesCmacProtoSerialization$$ExternalSyntheticLambda2;->()V +Lcom/google/crypto/tink/mac/AesCmacProtoSerialization$$ExternalSyntheticLambda3; +HSPLcom/google/crypto/tink/mac/AesCmacProtoSerialization$$ExternalSyntheticLambda3;->()V +Lcom/google/crypto/tink/mac/ChunkedMac; +Lcom/google/crypto/tink/mac/ChunkedMacWrapper; +HSPLcom/google/crypto/tink/mac/ChunkedMacWrapper;->()V +HSPLcom/google/crypto/tink/mac/ChunkedMacWrapper;->()V +HSPLcom/google/crypto/tink/mac/ChunkedMacWrapper;->getPrimitiveClass()Ljava/lang/Class; +HSPLcom/google/crypto/tink/mac/ChunkedMacWrapper;->register()V +Lcom/google/crypto/tink/mac/HmacKey; +Lcom/google/crypto/tink/mac/HmacKeyManager; +HSPLcom/google/crypto/tink/mac/HmacKeyManager;->()V +HSPLcom/google/crypto/tink/mac/HmacKeyManager;->()V +HSPLcom/google/crypto/tink/mac/HmacKeyManager;->access$100(IILcom/google/crypto/tink/proto/HashType;Lcom/google/crypto/tink/KeyTemplate$OutputPrefixType;)Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory$KeyFormat; +HSPLcom/google/crypto/tink/mac/HmacKeyManager;->createKeyFormat(IILcom/google/crypto/tink/proto/HashType;Lcom/google/crypto/tink/KeyTemplate$OutputPrefixType;)Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory$KeyFormat; +HSPLcom/google/crypto/tink/mac/HmacKeyManager;->fipsStatus()Lcom/google/crypto/tink/config/internal/TinkFipsUtil$AlgorithmFipsCompatibility; +HSPLcom/google/crypto/tink/mac/HmacKeyManager;->getKeyType()Ljava/lang/String; +HSPLcom/google/crypto/tink/mac/HmacKeyManager;->keyFactory()Lcom/google/crypto/tink/internal/KeyTypeManager$KeyFactory; +HSPLcom/google/crypto/tink/mac/HmacKeyManager;->register(Z)V +Lcom/google/crypto/tink/mac/HmacKeyManager$$ExternalSyntheticLambda0; +HSPLcom/google/crypto/tink/mac/HmacKeyManager$$ExternalSyntheticLambda0;->()V +Lcom/google/crypto/tink/mac/HmacKeyManager$1; +HSPLcom/google/crypto/tink/mac/HmacKeyManager$1;->(Ljava/lang/Class;)V +Lcom/google/crypto/tink/mac/HmacKeyManager$2; +HSPLcom/google/crypto/tink/mac/HmacKeyManager$2;->(Lcom/google/crypto/tink/mac/HmacKeyManager;Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/mac/HmacKeyManager$2;->keyFormats()Ljava/util/Map; +Lcom/google/crypto/tink/mac/HmacParameters; +Lcom/google/crypto/tink/mac/HmacProtoSerialization; +HSPLcom/google/crypto/tink/mac/HmacProtoSerialization;->()V +HSPLcom/google/crypto/tink/mac/HmacProtoSerialization;->register()V +HSPLcom/google/crypto/tink/mac/HmacProtoSerialization;->register(Lcom/google/crypto/tink/internal/MutableSerializationRegistry;)V +Lcom/google/crypto/tink/mac/HmacProtoSerialization$$ExternalSyntheticLambda0; +HSPLcom/google/crypto/tink/mac/HmacProtoSerialization$$ExternalSyntheticLambda0;->()V +Lcom/google/crypto/tink/mac/HmacProtoSerialization$$ExternalSyntheticLambda1; +HSPLcom/google/crypto/tink/mac/HmacProtoSerialization$$ExternalSyntheticLambda1;->()V +Lcom/google/crypto/tink/mac/HmacProtoSerialization$$ExternalSyntheticLambda2; +HSPLcom/google/crypto/tink/mac/HmacProtoSerialization$$ExternalSyntheticLambda2;->()V +Lcom/google/crypto/tink/mac/HmacProtoSerialization$$ExternalSyntheticLambda3; +HSPLcom/google/crypto/tink/mac/HmacProtoSerialization$$ExternalSyntheticLambda3;->()V +Lcom/google/crypto/tink/mac/MacConfig; +HSPLcom/google/crypto/tink/mac/MacConfig;->()V +HSPLcom/google/crypto/tink/mac/MacConfig;->init()V +HSPLcom/google/crypto/tink/mac/MacConfig;->register()V +Lcom/google/crypto/tink/mac/MacKey; +Lcom/google/crypto/tink/mac/MacParameters; +Lcom/google/crypto/tink/mac/MacWrapper; +HSPLcom/google/crypto/tink/mac/MacWrapper;->()V +HSPLcom/google/crypto/tink/mac/MacWrapper;->()V +HSPLcom/google/crypto/tink/mac/MacWrapper;->getPrimitiveClass()Ljava/lang/Class; +HSPLcom/google/crypto/tink/mac/MacWrapper;->register()V +Lcom/google/crypto/tink/mac/internal/AesUtil; +HSPLcom/google/crypto/tink/mac/internal/AesUtil;->cmacPad([B)[B +HSPLcom/google/crypto/tink/mac/internal/AesUtil;->dbl([B)[B +Lcom/google/crypto/tink/monitoring/MonitoringAnnotations; +HSPLcom/google/crypto/tink/monitoring/MonitoringAnnotations;->()V +HSPLcom/google/crypto/tink/monitoring/MonitoringAnnotations;->(Ljava/util/Map;)V +HSPLcom/google/crypto/tink/monitoring/MonitoringAnnotations;->(Ljava/util/Map;Lcom/google/crypto/tink/monitoring/MonitoringAnnotations$1;)V +HSPLcom/google/crypto/tink/monitoring/MonitoringAnnotations;->newBuilder()Lcom/google/crypto/tink/monitoring/MonitoringAnnotations$Builder; +HSPLcom/google/crypto/tink/monitoring/MonitoringAnnotations;->toMap()Ljava/util/Map; +Lcom/google/crypto/tink/monitoring/MonitoringAnnotations$Builder; +HSPLcom/google/crypto/tink/monitoring/MonitoringAnnotations$Builder;->()V +HSPLcom/google/crypto/tink/monitoring/MonitoringAnnotations$Builder;->build()Lcom/google/crypto/tink/monitoring/MonitoringAnnotations; +Lcom/google/crypto/tink/monitoring/MonitoringClient$Logger; +Lcom/google/crypto/tink/prf/Prf; +Lcom/google/crypto/tink/proto/AesCmacKey; +Lcom/google/crypto/tink/proto/AesCmacKeyFormat; +HSPLcom/google/crypto/tink/proto/AesCmacKeyFormat;->()V +HSPLcom/google/crypto/tink/proto/AesCmacKeyFormat;->()V +HSPLcom/google/crypto/tink/proto/AesCmacKeyFormat;->access$000()Lcom/google/crypto/tink/proto/AesCmacKeyFormat; +HSPLcom/google/crypto/tink/proto/AesCmacKeyFormat;->access$100(Lcom/google/crypto/tink/proto/AesCmacKeyFormat;I)V +HSPLcom/google/crypto/tink/proto/AesCmacKeyFormat;->access$300(Lcom/google/crypto/tink/proto/AesCmacKeyFormat;Lcom/google/crypto/tink/proto/AesCmacParams;)V +HSPLcom/google/crypto/tink/proto/AesCmacKeyFormat;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/AesCmacKeyFormat;->newBuilder()Lcom/google/crypto/tink/proto/AesCmacKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesCmacKeyFormat;->setKeySize(I)V +HSPLcom/google/crypto/tink/proto/AesCmacKeyFormat;->setParams(Lcom/google/crypto/tink/proto/AesCmacParams;)V +Lcom/google/crypto/tink/proto/AesCmacKeyFormat$1; +HSPLcom/google/crypto/tink/proto/AesCmacKeyFormat$1;->()V +Lcom/google/crypto/tink/proto/AesCmacKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesCmacKeyFormat$Builder;->()V +HSPLcom/google/crypto/tink/proto/AesCmacKeyFormat$Builder;->(Lcom/google/crypto/tink/proto/AesCmacKeyFormat$1;)V +HSPLcom/google/crypto/tink/proto/AesCmacKeyFormat$Builder;->setKeySize(I)Lcom/google/crypto/tink/proto/AesCmacKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesCmacKeyFormat$Builder;->setParams(Lcom/google/crypto/tink/proto/AesCmacParams;)Lcom/google/crypto/tink/proto/AesCmacKeyFormat$Builder; +Lcom/google/crypto/tink/proto/AesCmacKeyFormatOrBuilder; +Lcom/google/crypto/tink/proto/AesCmacKeyOrBuilder; +Lcom/google/crypto/tink/proto/AesCmacParams; +HSPLcom/google/crypto/tink/proto/AesCmacParams;->()V +HSPLcom/google/crypto/tink/proto/AesCmacParams;->()V +HSPLcom/google/crypto/tink/proto/AesCmacParams;->access$000()Lcom/google/crypto/tink/proto/AesCmacParams; +HSPLcom/google/crypto/tink/proto/AesCmacParams;->access$100(Lcom/google/crypto/tink/proto/AesCmacParams;I)V +HSPLcom/google/crypto/tink/proto/AesCmacParams;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/AesCmacParams;->newBuilder()Lcom/google/crypto/tink/proto/AesCmacParams$Builder; +HSPLcom/google/crypto/tink/proto/AesCmacParams;->setTagSize(I)V +Lcom/google/crypto/tink/proto/AesCmacParams$1; +HSPLcom/google/crypto/tink/proto/AesCmacParams$1;->()V +Lcom/google/crypto/tink/proto/AesCmacParams$Builder; +HSPLcom/google/crypto/tink/proto/AesCmacParams$Builder;->()V +HSPLcom/google/crypto/tink/proto/AesCmacParams$Builder;->(Lcom/google/crypto/tink/proto/AesCmacParams$1;)V +HSPLcom/google/crypto/tink/proto/AesCmacParams$Builder;->setTagSize(I)Lcom/google/crypto/tink/proto/AesCmacParams$Builder; +Lcom/google/crypto/tink/proto/AesCmacParamsOrBuilder; +Lcom/google/crypto/tink/proto/AesCtrHmacAeadKey; +Lcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat; +HSPLcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat;->()V +HSPLcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat;->()V +HSPLcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat;->access$000()Lcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat; +HSPLcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat;->access$100(Lcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat;Lcom/google/crypto/tink/proto/AesCtrKeyFormat;)V +HSPLcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat;->access$400(Lcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat;Lcom/google/crypto/tink/proto/HmacKeyFormat;)V +HSPLcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat;->newBuilder()Lcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat;->setAesCtrKeyFormat(Lcom/google/crypto/tink/proto/AesCtrKeyFormat;)V +HSPLcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat;->setHmacKeyFormat(Lcom/google/crypto/tink/proto/HmacKeyFormat;)V +Lcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat$1; +HSPLcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat$1;->()V +Lcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat$Builder;->()V +HSPLcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat$Builder;->(Lcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat$1;)V +HSPLcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat$Builder;->setAesCtrKeyFormat(Lcom/google/crypto/tink/proto/AesCtrKeyFormat;)Lcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat$Builder;->setHmacKeyFormat(Lcom/google/crypto/tink/proto/HmacKeyFormat;)Lcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormat$Builder; +Lcom/google/crypto/tink/proto/AesCtrHmacAeadKeyFormatOrBuilder; +Lcom/google/crypto/tink/proto/AesCtrHmacAeadKeyOrBuilder; +Lcom/google/crypto/tink/proto/AesCtrKeyFormat; +HSPLcom/google/crypto/tink/proto/AesCtrKeyFormat;->()V +HSPLcom/google/crypto/tink/proto/AesCtrKeyFormat;->()V +HSPLcom/google/crypto/tink/proto/AesCtrKeyFormat;->access$000()Lcom/google/crypto/tink/proto/AesCtrKeyFormat; +HSPLcom/google/crypto/tink/proto/AesCtrKeyFormat;->access$100(Lcom/google/crypto/tink/proto/AesCtrKeyFormat;Lcom/google/crypto/tink/proto/AesCtrParams;)V +HSPLcom/google/crypto/tink/proto/AesCtrKeyFormat;->access$400(Lcom/google/crypto/tink/proto/AesCtrKeyFormat;I)V +HSPLcom/google/crypto/tink/proto/AesCtrKeyFormat;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/AesCtrKeyFormat;->newBuilder()Lcom/google/crypto/tink/proto/AesCtrKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesCtrKeyFormat;->setKeySize(I)V +HSPLcom/google/crypto/tink/proto/AesCtrKeyFormat;->setParams(Lcom/google/crypto/tink/proto/AesCtrParams;)V +Lcom/google/crypto/tink/proto/AesCtrKeyFormat$1; +HSPLcom/google/crypto/tink/proto/AesCtrKeyFormat$1;->()V +Lcom/google/crypto/tink/proto/AesCtrKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesCtrKeyFormat$Builder;->()V +HSPLcom/google/crypto/tink/proto/AesCtrKeyFormat$Builder;->(Lcom/google/crypto/tink/proto/AesCtrKeyFormat$1;)V +HSPLcom/google/crypto/tink/proto/AesCtrKeyFormat$Builder;->setKeySize(I)Lcom/google/crypto/tink/proto/AesCtrKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesCtrKeyFormat$Builder;->setParams(Lcom/google/crypto/tink/proto/AesCtrParams;)Lcom/google/crypto/tink/proto/AesCtrKeyFormat$Builder; +Lcom/google/crypto/tink/proto/AesCtrKeyFormatOrBuilder; +Lcom/google/crypto/tink/proto/AesCtrParams; +HSPLcom/google/crypto/tink/proto/AesCtrParams;->()V +HSPLcom/google/crypto/tink/proto/AesCtrParams;->()V +HSPLcom/google/crypto/tink/proto/AesCtrParams;->access$000()Lcom/google/crypto/tink/proto/AesCtrParams; +HSPLcom/google/crypto/tink/proto/AesCtrParams;->access$100(Lcom/google/crypto/tink/proto/AesCtrParams;I)V +HSPLcom/google/crypto/tink/proto/AesCtrParams;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/AesCtrParams;->newBuilder()Lcom/google/crypto/tink/proto/AesCtrParams$Builder; +HSPLcom/google/crypto/tink/proto/AesCtrParams;->setIvSize(I)V +Lcom/google/crypto/tink/proto/AesCtrParams$1; +HSPLcom/google/crypto/tink/proto/AesCtrParams$1;->()V +Lcom/google/crypto/tink/proto/AesCtrParams$Builder; +HSPLcom/google/crypto/tink/proto/AesCtrParams$Builder;->()V +HSPLcom/google/crypto/tink/proto/AesCtrParams$Builder;->(Lcom/google/crypto/tink/proto/AesCtrParams$1;)V +HSPLcom/google/crypto/tink/proto/AesCtrParams$Builder;->setIvSize(I)Lcom/google/crypto/tink/proto/AesCtrParams$Builder; +Lcom/google/crypto/tink/proto/AesCtrParamsOrBuilder; +Lcom/google/crypto/tink/proto/AesEaxKey; +Lcom/google/crypto/tink/proto/AesEaxKeyFormat; +HSPLcom/google/crypto/tink/proto/AesEaxKeyFormat;->()V +HSPLcom/google/crypto/tink/proto/AesEaxKeyFormat;->()V +HSPLcom/google/crypto/tink/proto/AesEaxKeyFormat;->access$000()Lcom/google/crypto/tink/proto/AesEaxKeyFormat; +HSPLcom/google/crypto/tink/proto/AesEaxKeyFormat;->access$100(Lcom/google/crypto/tink/proto/AesEaxKeyFormat;Lcom/google/crypto/tink/proto/AesEaxParams;)V +HSPLcom/google/crypto/tink/proto/AesEaxKeyFormat;->access$400(Lcom/google/crypto/tink/proto/AesEaxKeyFormat;I)V +HSPLcom/google/crypto/tink/proto/AesEaxKeyFormat;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/AesEaxKeyFormat;->newBuilder()Lcom/google/crypto/tink/proto/AesEaxKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesEaxKeyFormat;->setKeySize(I)V +HSPLcom/google/crypto/tink/proto/AesEaxKeyFormat;->setParams(Lcom/google/crypto/tink/proto/AesEaxParams;)V +Lcom/google/crypto/tink/proto/AesEaxKeyFormat$1; +HSPLcom/google/crypto/tink/proto/AesEaxKeyFormat$1;->()V +Lcom/google/crypto/tink/proto/AesEaxKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesEaxKeyFormat$Builder;->()V +HSPLcom/google/crypto/tink/proto/AesEaxKeyFormat$Builder;->(Lcom/google/crypto/tink/proto/AesEaxKeyFormat$1;)V +HSPLcom/google/crypto/tink/proto/AesEaxKeyFormat$Builder;->setKeySize(I)Lcom/google/crypto/tink/proto/AesEaxKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesEaxKeyFormat$Builder;->setParams(Lcom/google/crypto/tink/proto/AesEaxParams;)Lcom/google/crypto/tink/proto/AesEaxKeyFormat$Builder; +Lcom/google/crypto/tink/proto/AesEaxKeyFormatOrBuilder; +Lcom/google/crypto/tink/proto/AesEaxKeyOrBuilder; +Lcom/google/crypto/tink/proto/AesEaxParams; +HSPLcom/google/crypto/tink/proto/AesEaxParams;->()V +HSPLcom/google/crypto/tink/proto/AesEaxParams;->()V +HSPLcom/google/crypto/tink/proto/AesEaxParams;->access$000()Lcom/google/crypto/tink/proto/AesEaxParams; +HSPLcom/google/crypto/tink/proto/AesEaxParams;->access$100(Lcom/google/crypto/tink/proto/AesEaxParams;I)V +HSPLcom/google/crypto/tink/proto/AesEaxParams;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/AesEaxParams;->newBuilder()Lcom/google/crypto/tink/proto/AesEaxParams$Builder; +HSPLcom/google/crypto/tink/proto/AesEaxParams;->setIvSize(I)V +Lcom/google/crypto/tink/proto/AesEaxParams$1; +HSPLcom/google/crypto/tink/proto/AesEaxParams$1;->()V +Lcom/google/crypto/tink/proto/AesEaxParams$Builder; +HSPLcom/google/crypto/tink/proto/AesEaxParams$Builder;->()V +HSPLcom/google/crypto/tink/proto/AesEaxParams$Builder;->(Lcom/google/crypto/tink/proto/AesEaxParams$1;)V +HSPLcom/google/crypto/tink/proto/AesEaxParams$Builder;->setIvSize(I)Lcom/google/crypto/tink/proto/AesEaxParams$Builder; +Lcom/google/crypto/tink/proto/AesEaxParamsOrBuilder; +Lcom/google/crypto/tink/proto/AesGcmKey; +HSPLcom/google/crypto/tink/proto/AesGcmKey;->()V +HSPLcom/google/crypto/tink/proto/AesGcmKey;->()V +HSPLcom/google/crypto/tink/proto/AesGcmKey;->access$000()Lcom/google/crypto/tink/proto/AesGcmKey; +HSPLcom/google/crypto/tink/proto/AesGcmKey;->access$100(Lcom/google/crypto/tink/proto/AesGcmKey;I)V +HSPLcom/google/crypto/tink/proto/AesGcmKey;->access$300(Lcom/google/crypto/tink/proto/AesGcmKey;Lcom/google/crypto/tink/shaded/protobuf/ByteString;)V +HSPLcom/google/crypto/tink/proto/AesGcmKey;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/AesGcmKey;->getKeyValue()Lcom/google/crypto/tink/shaded/protobuf/ByteString; +HSPLcom/google/crypto/tink/proto/AesGcmKey;->getVersion()I +HSPLcom/google/crypto/tink/proto/AesGcmKey;->newBuilder()Lcom/google/crypto/tink/proto/AesGcmKey$Builder; +HSPLcom/google/crypto/tink/proto/AesGcmKey;->parseFrom(Lcom/google/crypto/tink/shaded/protobuf/ByteString;Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)Lcom/google/crypto/tink/proto/AesGcmKey; +HSPLcom/google/crypto/tink/proto/AesGcmKey;->setKeyValue(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)V +HSPLcom/google/crypto/tink/proto/AesGcmKey;->setVersion(I)V +Lcom/google/crypto/tink/proto/AesGcmKey$1; +HSPLcom/google/crypto/tink/proto/AesGcmKey$1;->()V +Lcom/google/crypto/tink/proto/AesGcmKey$Builder; +HSPLcom/google/crypto/tink/proto/AesGcmKey$Builder;->()V +HSPLcom/google/crypto/tink/proto/AesGcmKey$Builder;->(Lcom/google/crypto/tink/proto/AesGcmKey$1;)V +HSPLcom/google/crypto/tink/proto/AesGcmKey$Builder;->setKeyValue(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)Lcom/google/crypto/tink/proto/AesGcmKey$Builder; +HSPLcom/google/crypto/tink/proto/AesGcmKey$Builder;->setVersion(I)Lcom/google/crypto/tink/proto/AesGcmKey$Builder; +Lcom/google/crypto/tink/proto/AesGcmKeyFormat; +HSPLcom/google/crypto/tink/proto/AesGcmKeyFormat;->()V +HSPLcom/google/crypto/tink/proto/AesGcmKeyFormat;->()V +HSPLcom/google/crypto/tink/proto/AesGcmKeyFormat;->access$000()Lcom/google/crypto/tink/proto/AesGcmKeyFormat; +HSPLcom/google/crypto/tink/proto/AesGcmKeyFormat;->access$100(Lcom/google/crypto/tink/proto/AesGcmKeyFormat;I)V +HSPLcom/google/crypto/tink/proto/AesGcmKeyFormat;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/AesGcmKeyFormat;->getKeySize()I +HSPLcom/google/crypto/tink/proto/AesGcmKeyFormat;->newBuilder()Lcom/google/crypto/tink/proto/AesGcmKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesGcmKeyFormat;->parseFrom(Lcom/google/crypto/tink/shaded/protobuf/ByteString;Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)Lcom/google/crypto/tink/proto/AesGcmKeyFormat; +HSPLcom/google/crypto/tink/proto/AesGcmKeyFormat;->setKeySize(I)V +Lcom/google/crypto/tink/proto/AesGcmKeyFormat$1; +HSPLcom/google/crypto/tink/proto/AesGcmKeyFormat$1;->()V +Lcom/google/crypto/tink/proto/AesGcmKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesGcmKeyFormat$Builder;->()V +HSPLcom/google/crypto/tink/proto/AesGcmKeyFormat$Builder;->(Lcom/google/crypto/tink/proto/AesGcmKeyFormat$1;)V +HSPLcom/google/crypto/tink/proto/AesGcmKeyFormat$Builder;->setKeySize(I)Lcom/google/crypto/tink/proto/AesGcmKeyFormat$Builder; +Lcom/google/crypto/tink/proto/AesGcmKeyFormatOrBuilder; +Lcom/google/crypto/tink/proto/AesGcmKeyOrBuilder; +Lcom/google/crypto/tink/proto/AesGcmSivKey; +Lcom/google/crypto/tink/proto/AesGcmSivKeyFormat; +HSPLcom/google/crypto/tink/proto/AesGcmSivKeyFormat;->()V +HSPLcom/google/crypto/tink/proto/AesGcmSivKeyFormat;->()V +HSPLcom/google/crypto/tink/proto/AesGcmSivKeyFormat;->access$000()Lcom/google/crypto/tink/proto/AesGcmSivKeyFormat; +HSPLcom/google/crypto/tink/proto/AesGcmSivKeyFormat;->access$100(Lcom/google/crypto/tink/proto/AesGcmSivKeyFormat;I)V +HSPLcom/google/crypto/tink/proto/AesGcmSivKeyFormat;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/AesGcmSivKeyFormat;->newBuilder()Lcom/google/crypto/tink/proto/AesGcmSivKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesGcmSivKeyFormat;->setKeySize(I)V +Lcom/google/crypto/tink/proto/AesGcmSivKeyFormat$1; +HSPLcom/google/crypto/tink/proto/AesGcmSivKeyFormat$1;->()V +Lcom/google/crypto/tink/proto/AesGcmSivKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesGcmSivKeyFormat$Builder;->()V +HSPLcom/google/crypto/tink/proto/AesGcmSivKeyFormat$Builder;->(Lcom/google/crypto/tink/proto/AesGcmSivKeyFormat$1;)V +HSPLcom/google/crypto/tink/proto/AesGcmSivKeyFormat$Builder;->setKeySize(I)Lcom/google/crypto/tink/proto/AesGcmSivKeyFormat$Builder; +Lcom/google/crypto/tink/proto/AesGcmSivKeyFormatOrBuilder; +Lcom/google/crypto/tink/proto/AesGcmSivKeyOrBuilder; +Lcom/google/crypto/tink/proto/AesSivKey; +HSPLcom/google/crypto/tink/proto/AesSivKey;->()V +HSPLcom/google/crypto/tink/proto/AesSivKey;->()V +HSPLcom/google/crypto/tink/proto/AesSivKey;->access$000()Lcom/google/crypto/tink/proto/AesSivKey; +HSPLcom/google/crypto/tink/proto/AesSivKey;->access$100(Lcom/google/crypto/tink/proto/AesSivKey;I)V +HSPLcom/google/crypto/tink/proto/AesSivKey;->access$300(Lcom/google/crypto/tink/proto/AesSivKey;Lcom/google/crypto/tink/shaded/protobuf/ByteString;)V +HSPLcom/google/crypto/tink/proto/AesSivKey;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/AesSivKey;->getKeyValue()Lcom/google/crypto/tink/shaded/protobuf/ByteString; +HSPLcom/google/crypto/tink/proto/AesSivKey;->getVersion()I +HSPLcom/google/crypto/tink/proto/AesSivKey;->newBuilder()Lcom/google/crypto/tink/proto/AesSivKey$Builder; +HSPLcom/google/crypto/tink/proto/AesSivKey;->parseFrom(Lcom/google/crypto/tink/shaded/protobuf/ByteString;Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)Lcom/google/crypto/tink/proto/AesSivKey; +HSPLcom/google/crypto/tink/proto/AesSivKey;->setKeyValue(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)V +HSPLcom/google/crypto/tink/proto/AesSivKey;->setVersion(I)V +Lcom/google/crypto/tink/proto/AesSivKey$1; +HSPLcom/google/crypto/tink/proto/AesSivKey$1;->()V +Lcom/google/crypto/tink/proto/AesSivKey$Builder; +HSPLcom/google/crypto/tink/proto/AesSivKey$Builder;->()V +HSPLcom/google/crypto/tink/proto/AesSivKey$Builder;->(Lcom/google/crypto/tink/proto/AesSivKey$1;)V +HSPLcom/google/crypto/tink/proto/AesSivKey$Builder;->setKeyValue(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)Lcom/google/crypto/tink/proto/AesSivKey$Builder; +HSPLcom/google/crypto/tink/proto/AesSivKey$Builder;->setVersion(I)Lcom/google/crypto/tink/proto/AesSivKey$Builder; +Lcom/google/crypto/tink/proto/AesSivKeyFormat; +HSPLcom/google/crypto/tink/proto/AesSivKeyFormat;->()V +HSPLcom/google/crypto/tink/proto/AesSivKeyFormat;->()V +HSPLcom/google/crypto/tink/proto/AesSivKeyFormat;->access$000()Lcom/google/crypto/tink/proto/AesSivKeyFormat; +HSPLcom/google/crypto/tink/proto/AesSivKeyFormat;->access$100(Lcom/google/crypto/tink/proto/AesSivKeyFormat;I)V +HSPLcom/google/crypto/tink/proto/AesSivKeyFormat;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/AesSivKeyFormat;->getKeySize()I +HSPLcom/google/crypto/tink/proto/AesSivKeyFormat;->newBuilder()Lcom/google/crypto/tink/proto/AesSivKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesSivKeyFormat;->parseFrom(Lcom/google/crypto/tink/shaded/protobuf/ByteString;Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)Lcom/google/crypto/tink/proto/AesSivKeyFormat; +HSPLcom/google/crypto/tink/proto/AesSivKeyFormat;->setKeySize(I)V +Lcom/google/crypto/tink/proto/AesSivKeyFormat$1; +HSPLcom/google/crypto/tink/proto/AesSivKeyFormat$1;->()V +Lcom/google/crypto/tink/proto/AesSivKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/AesSivKeyFormat$Builder;->()V +HSPLcom/google/crypto/tink/proto/AesSivKeyFormat$Builder;->(Lcom/google/crypto/tink/proto/AesSivKeyFormat$1;)V +HSPLcom/google/crypto/tink/proto/AesSivKeyFormat$Builder;->setKeySize(I)Lcom/google/crypto/tink/proto/AesSivKeyFormat$Builder; +Lcom/google/crypto/tink/proto/AesSivKeyFormatOrBuilder; +Lcom/google/crypto/tink/proto/AesSivKeyOrBuilder; +Lcom/google/crypto/tink/proto/ChaCha20Poly1305Key; +Lcom/google/crypto/tink/proto/ChaCha20Poly1305KeyFormat; +HSPLcom/google/crypto/tink/proto/ChaCha20Poly1305KeyFormat;->()V +HSPLcom/google/crypto/tink/proto/ChaCha20Poly1305KeyFormat;->()V +HSPLcom/google/crypto/tink/proto/ChaCha20Poly1305KeyFormat;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/ChaCha20Poly1305KeyFormat;->getDefaultInstance()Lcom/google/crypto/tink/proto/ChaCha20Poly1305KeyFormat; +Lcom/google/crypto/tink/proto/ChaCha20Poly1305KeyFormat$1; +HSPLcom/google/crypto/tink/proto/ChaCha20Poly1305KeyFormat$1;->()V +Lcom/google/crypto/tink/proto/ChaCha20Poly1305KeyFormatOrBuilder; +Lcom/google/crypto/tink/proto/ChaCha20Poly1305KeyOrBuilder; +Lcom/google/crypto/tink/proto/EncryptedKeyset; +HSPLcom/google/crypto/tink/proto/EncryptedKeyset;->()V +HSPLcom/google/crypto/tink/proto/EncryptedKeyset;->()V +HSPLcom/google/crypto/tink/proto/EncryptedKeyset;->access$000()Lcom/google/crypto/tink/proto/EncryptedKeyset; +HSPLcom/google/crypto/tink/proto/EncryptedKeyset;->access$100(Lcom/google/crypto/tink/proto/EncryptedKeyset;Lcom/google/crypto/tink/shaded/protobuf/ByteString;)V +HSPLcom/google/crypto/tink/proto/EncryptedKeyset;->access$300(Lcom/google/crypto/tink/proto/EncryptedKeyset;Lcom/google/crypto/tink/proto/KeysetInfo;)V +HSPLcom/google/crypto/tink/proto/EncryptedKeyset;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/EncryptedKeyset;->getEncryptedKeyset()Lcom/google/crypto/tink/shaded/protobuf/ByteString; +HSPLcom/google/crypto/tink/proto/EncryptedKeyset;->newBuilder()Lcom/google/crypto/tink/proto/EncryptedKeyset$Builder; +HSPLcom/google/crypto/tink/proto/EncryptedKeyset;->parseFrom(Ljava/io/InputStream;Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)Lcom/google/crypto/tink/proto/EncryptedKeyset; +HSPLcom/google/crypto/tink/proto/EncryptedKeyset;->setEncryptedKeyset(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)V +HSPLcom/google/crypto/tink/proto/EncryptedKeyset;->setKeysetInfo(Lcom/google/crypto/tink/proto/KeysetInfo;)V +Lcom/google/crypto/tink/proto/EncryptedKeyset$1; +HSPLcom/google/crypto/tink/proto/EncryptedKeyset$1;->()V +Lcom/google/crypto/tink/proto/EncryptedKeyset$Builder; +HSPLcom/google/crypto/tink/proto/EncryptedKeyset$Builder;->()V +HSPLcom/google/crypto/tink/proto/EncryptedKeyset$Builder;->(Lcom/google/crypto/tink/proto/EncryptedKeyset$1;)V +HSPLcom/google/crypto/tink/proto/EncryptedKeyset$Builder;->setEncryptedKeyset(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)Lcom/google/crypto/tink/proto/EncryptedKeyset$Builder; +HSPLcom/google/crypto/tink/proto/EncryptedKeyset$Builder;->setKeysetInfo(Lcom/google/crypto/tink/proto/KeysetInfo;)Lcom/google/crypto/tink/proto/EncryptedKeyset$Builder; +Lcom/google/crypto/tink/proto/EncryptedKeysetOrBuilder; +Lcom/google/crypto/tink/proto/HashType; +HSPLcom/google/crypto/tink/proto/HashType;->()V +HSPLcom/google/crypto/tink/proto/HashType;->(Ljava/lang/String;II)V +HSPLcom/google/crypto/tink/proto/HashType;->getNumber()I +Lcom/google/crypto/tink/proto/HashType$1; +HSPLcom/google/crypto/tink/proto/HashType$1;->()V +Lcom/google/crypto/tink/proto/HmacKey; +Lcom/google/crypto/tink/proto/HmacKeyFormat; +HSPLcom/google/crypto/tink/proto/HmacKeyFormat;->()V +HSPLcom/google/crypto/tink/proto/HmacKeyFormat;->()V +HSPLcom/google/crypto/tink/proto/HmacKeyFormat;->access$000()Lcom/google/crypto/tink/proto/HmacKeyFormat; +HSPLcom/google/crypto/tink/proto/HmacKeyFormat;->access$100(Lcom/google/crypto/tink/proto/HmacKeyFormat;Lcom/google/crypto/tink/proto/HmacParams;)V +HSPLcom/google/crypto/tink/proto/HmacKeyFormat;->access$400(Lcom/google/crypto/tink/proto/HmacKeyFormat;I)V +HSPLcom/google/crypto/tink/proto/HmacKeyFormat;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/HmacKeyFormat;->newBuilder()Lcom/google/crypto/tink/proto/HmacKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/HmacKeyFormat;->setKeySize(I)V +HSPLcom/google/crypto/tink/proto/HmacKeyFormat;->setParams(Lcom/google/crypto/tink/proto/HmacParams;)V +Lcom/google/crypto/tink/proto/HmacKeyFormat$1; +HSPLcom/google/crypto/tink/proto/HmacKeyFormat$1;->()V +Lcom/google/crypto/tink/proto/HmacKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/HmacKeyFormat$Builder;->()V +HSPLcom/google/crypto/tink/proto/HmacKeyFormat$Builder;->(Lcom/google/crypto/tink/proto/HmacKeyFormat$1;)V +HSPLcom/google/crypto/tink/proto/HmacKeyFormat$Builder;->setKeySize(I)Lcom/google/crypto/tink/proto/HmacKeyFormat$Builder; +HSPLcom/google/crypto/tink/proto/HmacKeyFormat$Builder;->setParams(Lcom/google/crypto/tink/proto/HmacParams;)Lcom/google/crypto/tink/proto/HmacKeyFormat$Builder; +Lcom/google/crypto/tink/proto/HmacKeyFormatOrBuilder; +Lcom/google/crypto/tink/proto/HmacKeyOrBuilder; +Lcom/google/crypto/tink/proto/HmacParams; +HSPLcom/google/crypto/tink/proto/HmacParams;->()V +HSPLcom/google/crypto/tink/proto/HmacParams;->()V +HSPLcom/google/crypto/tink/proto/HmacParams;->access$000()Lcom/google/crypto/tink/proto/HmacParams; +HSPLcom/google/crypto/tink/proto/HmacParams;->access$200(Lcom/google/crypto/tink/proto/HmacParams;Lcom/google/crypto/tink/proto/HashType;)V +HSPLcom/google/crypto/tink/proto/HmacParams;->access$400(Lcom/google/crypto/tink/proto/HmacParams;I)V +HSPLcom/google/crypto/tink/proto/HmacParams;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/HmacParams;->newBuilder()Lcom/google/crypto/tink/proto/HmacParams$Builder; +HSPLcom/google/crypto/tink/proto/HmacParams;->setHash(Lcom/google/crypto/tink/proto/HashType;)V +HSPLcom/google/crypto/tink/proto/HmacParams;->setTagSize(I)V +Lcom/google/crypto/tink/proto/HmacParams$1; +HSPLcom/google/crypto/tink/proto/HmacParams$1;->()V +Lcom/google/crypto/tink/proto/HmacParams$Builder; +HSPLcom/google/crypto/tink/proto/HmacParams$Builder;->()V +HSPLcom/google/crypto/tink/proto/HmacParams$Builder;->(Lcom/google/crypto/tink/proto/HmacParams$1;)V +HSPLcom/google/crypto/tink/proto/HmacParams$Builder;->setHash(Lcom/google/crypto/tink/proto/HashType;)Lcom/google/crypto/tink/proto/HmacParams$Builder; +HSPLcom/google/crypto/tink/proto/HmacParams$Builder;->setTagSize(I)Lcom/google/crypto/tink/proto/HmacParams$Builder; +Lcom/google/crypto/tink/proto/HmacParamsOrBuilder; +Lcom/google/crypto/tink/proto/KeyData; +HSPLcom/google/crypto/tink/proto/KeyData;->()V +HSPLcom/google/crypto/tink/proto/KeyData;->()V +HSPLcom/google/crypto/tink/proto/KeyData;->access$000()Lcom/google/crypto/tink/proto/KeyData; +HSPLcom/google/crypto/tink/proto/KeyData;->access$100(Lcom/google/crypto/tink/proto/KeyData;Ljava/lang/String;)V +HSPLcom/google/crypto/tink/proto/KeyData;->access$400(Lcom/google/crypto/tink/proto/KeyData;Lcom/google/crypto/tink/shaded/protobuf/ByteString;)V +HSPLcom/google/crypto/tink/proto/KeyData;->access$700(Lcom/google/crypto/tink/proto/KeyData;Lcom/google/crypto/tink/proto/KeyData$KeyMaterialType;)V +HSPLcom/google/crypto/tink/proto/KeyData;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/KeyData;->getKeyMaterialType()Lcom/google/crypto/tink/proto/KeyData$KeyMaterialType; +HSPLcom/google/crypto/tink/proto/KeyData;->getTypeUrl()Ljava/lang/String; +HSPLcom/google/crypto/tink/proto/KeyData;->getValue()Lcom/google/crypto/tink/shaded/protobuf/ByteString; +HSPLcom/google/crypto/tink/proto/KeyData;->newBuilder()Lcom/google/crypto/tink/proto/KeyData$Builder; +HSPLcom/google/crypto/tink/proto/KeyData;->setKeyMaterialType(Lcom/google/crypto/tink/proto/KeyData$KeyMaterialType;)V +HSPLcom/google/crypto/tink/proto/KeyData;->setTypeUrl(Ljava/lang/String;)V +HSPLcom/google/crypto/tink/proto/KeyData;->setValue(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)V +Lcom/google/crypto/tink/proto/KeyData$1; +HSPLcom/google/crypto/tink/proto/KeyData$1;->()V +Lcom/google/crypto/tink/proto/KeyData$Builder; +HSPLcom/google/crypto/tink/proto/KeyData$Builder;->()V +HSPLcom/google/crypto/tink/proto/KeyData$Builder;->(Lcom/google/crypto/tink/proto/KeyData$1;)V +HSPLcom/google/crypto/tink/proto/KeyData$Builder;->setKeyMaterialType(Lcom/google/crypto/tink/proto/KeyData$KeyMaterialType;)Lcom/google/crypto/tink/proto/KeyData$Builder; +HSPLcom/google/crypto/tink/proto/KeyData$Builder;->setTypeUrl(Ljava/lang/String;)Lcom/google/crypto/tink/proto/KeyData$Builder; +HSPLcom/google/crypto/tink/proto/KeyData$Builder;->setValue(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)Lcom/google/crypto/tink/proto/KeyData$Builder; +Lcom/google/crypto/tink/proto/KeyData$KeyMaterialType; +HSPLcom/google/crypto/tink/proto/KeyData$KeyMaterialType;->()V +HSPLcom/google/crypto/tink/proto/KeyData$KeyMaterialType;->(Ljava/lang/String;II)V +HSPLcom/google/crypto/tink/proto/KeyData$KeyMaterialType;->forNumber(I)Lcom/google/crypto/tink/proto/KeyData$KeyMaterialType; +HSPLcom/google/crypto/tink/proto/KeyData$KeyMaterialType;->getNumber()I +HSPLcom/google/crypto/tink/proto/KeyData$KeyMaterialType;->values()[Lcom/google/crypto/tink/proto/KeyData$KeyMaterialType; +Lcom/google/crypto/tink/proto/KeyData$KeyMaterialType$1; +HSPLcom/google/crypto/tink/proto/KeyData$KeyMaterialType$1;->()V +Lcom/google/crypto/tink/proto/KeyDataOrBuilder; +Lcom/google/crypto/tink/proto/KeyStatusType; +HSPLcom/google/crypto/tink/proto/KeyStatusType;->()V +HSPLcom/google/crypto/tink/proto/KeyStatusType;->(Ljava/lang/String;II)V +HSPLcom/google/crypto/tink/proto/KeyStatusType;->forNumber(I)Lcom/google/crypto/tink/proto/KeyStatusType; +HSPLcom/google/crypto/tink/proto/KeyStatusType;->getNumber()I +HSPLcom/google/crypto/tink/proto/KeyStatusType;->values()[Lcom/google/crypto/tink/proto/KeyStatusType; +Lcom/google/crypto/tink/proto/KeyStatusType$1; +HSPLcom/google/crypto/tink/proto/KeyStatusType$1;->()V +Lcom/google/crypto/tink/proto/KeyTemplate; +HSPLcom/google/crypto/tink/proto/KeyTemplate;->()V +HSPLcom/google/crypto/tink/proto/KeyTemplate;->()V +HSPLcom/google/crypto/tink/proto/KeyTemplate;->access$000()Lcom/google/crypto/tink/proto/KeyTemplate; +HSPLcom/google/crypto/tink/proto/KeyTemplate;->access$100(Lcom/google/crypto/tink/proto/KeyTemplate;Ljava/lang/String;)V +HSPLcom/google/crypto/tink/proto/KeyTemplate;->access$400(Lcom/google/crypto/tink/proto/KeyTemplate;Lcom/google/crypto/tink/shaded/protobuf/ByteString;)V +HSPLcom/google/crypto/tink/proto/KeyTemplate;->access$700(Lcom/google/crypto/tink/proto/KeyTemplate;Lcom/google/crypto/tink/proto/OutputPrefixType;)V +HSPLcom/google/crypto/tink/proto/KeyTemplate;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/KeyTemplate;->getOutputPrefixType()Lcom/google/crypto/tink/proto/OutputPrefixType; +HSPLcom/google/crypto/tink/proto/KeyTemplate;->getTypeUrl()Ljava/lang/String; +HSPLcom/google/crypto/tink/proto/KeyTemplate;->getValue()Lcom/google/crypto/tink/shaded/protobuf/ByteString; +HSPLcom/google/crypto/tink/proto/KeyTemplate;->newBuilder()Lcom/google/crypto/tink/proto/KeyTemplate$Builder; +HSPLcom/google/crypto/tink/proto/KeyTemplate;->setOutputPrefixType(Lcom/google/crypto/tink/proto/OutputPrefixType;)V +HSPLcom/google/crypto/tink/proto/KeyTemplate;->setTypeUrl(Ljava/lang/String;)V +HSPLcom/google/crypto/tink/proto/KeyTemplate;->setValue(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)V +Lcom/google/crypto/tink/proto/KeyTemplate$1; +HSPLcom/google/crypto/tink/proto/KeyTemplate$1;->()V +Lcom/google/crypto/tink/proto/KeyTemplate$Builder; +HSPLcom/google/crypto/tink/proto/KeyTemplate$Builder;->()V +HSPLcom/google/crypto/tink/proto/KeyTemplate$Builder;->(Lcom/google/crypto/tink/proto/KeyTemplate$1;)V +HSPLcom/google/crypto/tink/proto/KeyTemplate$Builder;->setOutputPrefixType(Lcom/google/crypto/tink/proto/OutputPrefixType;)Lcom/google/crypto/tink/proto/KeyTemplate$Builder; +HSPLcom/google/crypto/tink/proto/KeyTemplate$Builder;->setTypeUrl(Ljava/lang/String;)Lcom/google/crypto/tink/proto/KeyTemplate$Builder; +HSPLcom/google/crypto/tink/proto/KeyTemplate$Builder;->setValue(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)Lcom/google/crypto/tink/proto/KeyTemplate$Builder; +Lcom/google/crypto/tink/proto/KeyTemplateOrBuilder; +Lcom/google/crypto/tink/proto/Keyset; +HSPLcom/google/crypto/tink/proto/Keyset;->()V +HSPLcom/google/crypto/tink/proto/Keyset;->()V +HSPLcom/google/crypto/tink/proto/Keyset;->access$1300()Lcom/google/crypto/tink/proto/Keyset; +HSPLcom/google/crypto/tink/proto/Keyset;->access$1400(Lcom/google/crypto/tink/proto/Keyset;I)V +HSPLcom/google/crypto/tink/proto/Keyset;->access$1700(Lcom/google/crypto/tink/proto/Keyset;Lcom/google/crypto/tink/proto/Keyset$Key;)V +HSPLcom/google/crypto/tink/proto/Keyset;->addKey(Lcom/google/crypto/tink/proto/Keyset$Key;)V +HSPLcom/google/crypto/tink/proto/Keyset;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/Keyset;->ensureKeyIsMutable()V +HSPLcom/google/crypto/tink/proto/Keyset;->getKey(I)Lcom/google/crypto/tink/proto/Keyset$Key; +HSPLcom/google/crypto/tink/proto/Keyset;->getKeyCount()I +HSPLcom/google/crypto/tink/proto/Keyset;->getKeyList()Ljava/util/List; +HSPLcom/google/crypto/tink/proto/Keyset;->getPrimaryKeyId()I +HSPLcom/google/crypto/tink/proto/Keyset;->newBuilder()Lcom/google/crypto/tink/proto/Keyset$Builder; +HSPLcom/google/crypto/tink/proto/Keyset;->parseFrom([BLcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)Lcom/google/crypto/tink/proto/Keyset; +HSPLcom/google/crypto/tink/proto/Keyset;->setPrimaryKeyId(I)V +Lcom/google/crypto/tink/proto/Keyset$1; +HSPLcom/google/crypto/tink/proto/Keyset$1;->()V +Lcom/google/crypto/tink/proto/Keyset$Builder; +HSPLcom/google/crypto/tink/proto/Keyset$Builder;->()V +HSPLcom/google/crypto/tink/proto/Keyset$Builder;->(Lcom/google/crypto/tink/proto/Keyset$1;)V +HSPLcom/google/crypto/tink/proto/Keyset$Builder;->addKey(Lcom/google/crypto/tink/proto/Keyset$Key;)Lcom/google/crypto/tink/proto/Keyset$Builder; +HSPLcom/google/crypto/tink/proto/Keyset$Builder;->getKey(I)Lcom/google/crypto/tink/proto/Keyset$Key; +HSPLcom/google/crypto/tink/proto/Keyset$Builder;->getKeyCount()I +HSPLcom/google/crypto/tink/proto/Keyset$Builder;->getKeyList()Ljava/util/List; +HSPLcom/google/crypto/tink/proto/Keyset$Builder;->setPrimaryKeyId(I)Lcom/google/crypto/tink/proto/Keyset$Builder; +Lcom/google/crypto/tink/proto/Keyset$Key; +HSPLcom/google/crypto/tink/proto/Keyset$Key;->()V +HSPLcom/google/crypto/tink/proto/Keyset$Key;->()V +HSPLcom/google/crypto/tink/proto/Keyset$Key;->access$000()Lcom/google/crypto/tink/proto/Keyset$Key; +HSPLcom/google/crypto/tink/proto/Keyset$Key;->access$100(Lcom/google/crypto/tink/proto/Keyset$Key;Lcom/google/crypto/tink/proto/KeyData;)V +HSPLcom/google/crypto/tink/proto/Keyset$Key;->access$1000(Lcom/google/crypto/tink/proto/Keyset$Key;Lcom/google/crypto/tink/proto/OutputPrefixType;)V +HSPLcom/google/crypto/tink/proto/Keyset$Key;->access$500(Lcom/google/crypto/tink/proto/Keyset$Key;Lcom/google/crypto/tink/proto/KeyStatusType;)V +HSPLcom/google/crypto/tink/proto/Keyset$Key;->access$700(Lcom/google/crypto/tink/proto/Keyset$Key;I)V +HSPLcom/google/crypto/tink/proto/Keyset$Key;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/Keyset$Key;->getKeyData()Lcom/google/crypto/tink/proto/KeyData; +HSPLcom/google/crypto/tink/proto/Keyset$Key;->getKeyId()I +HSPLcom/google/crypto/tink/proto/Keyset$Key;->getOutputPrefixType()Lcom/google/crypto/tink/proto/OutputPrefixType; +HSPLcom/google/crypto/tink/proto/Keyset$Key;->getStatus()Lcom/google/crypto/tink/proto/KeyStatusType; +HSPLcom/google/crypto/tink/proto/Keyset$Key;->hasKeyData()Z +HSPLcom/google/crypto/tink/proto/Keyset$Key;->newBuilder()Lcom/google/crypto/tink/proto/Keyset$Key$Builder; +HSPLcom/google/crypto/tink/proto/Keyset$Key;->setKeyData(Lcom/google/crypto/tink/proto/KeyData;)V +HSPLcom/google/crypto/tink/proto/Keyset$Key;->setKeyId(I)V +HSPLcom/google/crypto/tink/proto/Keyset$Key;->setOutputPrefixType(Lcom/google/crypto/tink/proto/OutputPrefixType;)V +HSPLcom/google/crypto/tink/proto/Keyset$Key;->setStatus(Lcom/google/crypto/tink/proto/KeyStatusType;)V +Lcom/google/crypto/tink/proto/Keyset$Key$Builder; +HSPLcom/google/crypto/tink/proto/Keyset$Key$Builder;->()V +HSPLcom/google/crypto/tink/proto/Keyset$Key$Builder;->(Lcom/google/crypto/tink/proto/Keyset$1;)V +HSPLcom/google/crypto/tink/proto/Keyset$Key$Builder;->setKeyData(Lcom/google/crypto/tink/proto/KeyData;)Lcom/google/crypto/tink/proto/Keyset$Key$Builder; +HSPLcom/google/crypto/tink/proto/Keyset$Key$Builder;->setKeyId(I)Lcom/google/crypto/tink/proto/Keyset$Key$Builder; +HSPLcom/google/crypto/tink/proto/Keyset$Key$Builder;->setOutputPrefixType(Lcom/google/crypto/tink/proto/OutputPrefixType;)Lcom/google/crypto/tink/proto/Keyset$Key$Builder; +HSPLcom/google/crypto/tink/proto/Keyset$Key$Builder;->setStatus(Lcom/google/crypto/tink/proto/KeyStatusType;)Lcom/google/crypto/tink/proto/Keyset$Key$Builder; +Lcom/google/crypto/tink/proto/Keyset$KeyOrBuilder; +Lcom/google/crypto/tink/proto/KeysetInfo; +HSPLcom/google/crypto/tink/proto/KeysetInfo;->()V +HSPLcom/google/crypto/tink/proto/KeysetInfo;->()V +HSPLcom/google/crypto/tink/proto/KeysetInfo;->access$1300()Lcom/google/crypto/tink/proto/KeysetInfo; +HSPLcom/google/crypto/tink/proto/KeysetInfo;->access$1400(Lcom/google/crypto/tink/proto/KeysetInfo;I)V +HSPLcom/google/crypto/tink/proto/KeysetInfo;->access$1700(Lcom/google/crypto/tink/proto/KeysetInfo;Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;)V +HSPLcom/google/crypto/tink/proto/KeysetInfo;->addKeyInfo(Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;)V +HSPLcom/google/crypto/tink/proto/KeysetInfo;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/KeysetInfo;->ensureKeyInfoIsMutable()V +HSPLcom/google/crypto/tink/proto/KeysetInfo;->getKeyInfo(I)Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo; +HSPLcom/google/crypto/tink/proto/KeysetInfo;->newBuilder()Lcom/google/crypto/tink/proto/KeysetInfo$Builder; +HSPLcom/google/crypto/tink/proto/KeysetInfo;->setPrimaryKeyId(I)V +Lcom/google/crypto/tink/proto/KeysetInfo$1; +HSPLcom/google/crypto/tink/proto/KeysetInfo$1;->()V +Lcom/google/crypto/tink/proto/KeysetInfo$Builder; +HSPLcom/google/crypto/tink/proto/KeysetInfo$Builder;->()V +HSPLcom/google/crypto/tink/proto/KeysetInfo$Builder;->(Lcom/google/crypto/tink/proto/KeysetInfo$1;)V +HSPLcom/google/crypto/tink/proto/KeysetInfo$Builder;->addKeyInfo(Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;)Lcom/google/crypto/tink/proto/KeysetInfo$Builder; +HSPLcom/google/crypto/tink/proto/KeysetInfo$Builder;->setPrimaryKeyId(I)Lcom/google/crypto/tink/proto/KeysetInfo$Builder; +Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo; +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;->()V +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;->()V +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;->access$000()Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo; +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;->access$100(Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;Ljava/lang/String;)V +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;->access$1000(Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;Lcom/google/crypto/tink/proto/OutputPrefixType;)V +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;->access$500(Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;Lcom/google/crypto/tink/proto/KeyStatusType;)V +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;->access$700(Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;I)V +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;->getKeyId()I +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;->newBuilder()Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo$Builder; +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;->setKeyId(I)V +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;->setOutputPrefixType(Lcom/google/crypto/tink/proto/OutputPrefixType;)V +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;->setStatus(Lcom/google/crypto/tink/proto/KeyStatusType;)V +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo;->setTypeUrl(Ljava/lang/String;)V +Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo$Builder; +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo$Builder;->()V +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo$Builder;->(Lcom/google/crypto/tink/proto/KeysetInfo$1;)V +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo$Builder;->setKeyId(I)Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo$Builder; +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo$Builder;->setOutputPrefixType(Lcom/google/crypto/tink/proto/OutputPrefixType;)Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo$Builder; +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo$Builder;->setStatus(Lcom/google/crypto/tink/proto/KeyStatusType;)Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo$Builder; +HSPLcom/google/crypto/tink/proto/KeysetInfo$KeyInfo$Builder;->setTypeUrl(Ljava/lang/String;)Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfo$Builder; +Lcom/google/crypto/tink/proto/KeysetInfo$KeyInfoOrBuilder; +Lcom/google/crypto/tink/proto/KeysetInfoOrBuilder; +Lcom/google/crypto/tink/proto/KeysetOrBuilder; +Lcom/google/crypto/tink/proto/KmsAeadKey; +Lcom/google/crypto/tink/proto/KmsAeadKeyFormat; +Lcom/google/crypto/tink/proto/KmsAeadKeyFormatOrBuilder; +Lcom/google/crypto/tink/proto/KmsAeadKeyOrBuilder; +Lcom/google/crypto/tink/proto/KmsEnvelopeAeadKey; +Lcom/google/crypto/tink/proto/KmsEnvelopeAeadKeyFormat; +Lcom/google/crypto/tink/proto/KmsEnvelopeAeadKeyFormatOrBuilder; +Lcom/google/crypto/tink/proto/KmsEnvelopeAeadKeyOrBuilder; +Lcom/google/crypto/tink/proto/OutputPrefixType; +HSPLcom/google/crypto/tink/proto/OutputPrefixType;->()V +HSPLcom/google/crypto/tink/proto/OutputPrefixType;->(Ljava/lang/String;II)V +HSPLcom/google/crypto/tink/proto/OutputPrefixType;->forNumber(I)Lcom/google/crypto/tink/proto/OutputPrefixType; +HSPLcom/google/crypto/tink/proto/OutputPrefixType;->getNumber()I +HSPLcom/google/crypto/tink/proto/OutputPrefixType;->values()[Lcom/google/crypto/tink/proto/OutputPrefixType; +Lcom/google/crypto/tink/proto/OutputPrefixType$1; +HSPLcom/google/crypto/tink/proto/OutputPrefixType$1;->()V +Lcom/google/crypto/tink/proto/RegistryConfig; +HSPLcom/google/crypto/tink/proto/RegistryConfig;->()V +HSPLcom/google/crypto/tink/proto/RegistryConfig;->()V +HSPLcom/google/crypto/tink/proto/RegistryConfig;->getDefaultInstance()Lcom/google/crypto/tink/proto/RegistryConfig; +Lcom/google/crypto/tink/proto/RegistryConfigOrBuilder; +Lcom/google/crypto/tink/proto/XChaCha20Poly1305Key; +Lcom/google/crypto/tink/proto/XChaCha20Poly1305KeyFormat; +HSPLcom/google/crypto/tink/proto/XChaCha20Poly1305KeyFormat;->()V +HSPLcom/google/crypto/tink/proto/XChaCha20Poly1305KeyFormat;->()V +HSPLcom/google/crypto/tink/proto/XChaCha20Poly1305KeyFormat;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/proto/XChaCha20Poly1305KeyFormat;->getDefaultInstance()Lcom/google/crypto/tink/proto/XChaCha20Poly1305KeyFormat; +Lcom/google/crypto/tink/proto/XChaCha20Poly1305KeyFormat$1; +HSPLcom/google/crypto/tink/proto/XChaCha20Poly1305KeyFormat$1;->()V +Lcom/google/crypto/tink/proto/XChaCha20Poly1305KeyFormatOrBuilder; +Lcom/google/crypto/tink/proto/XChaCha20Poly1305KeyOrBuilder; +Lcom/google/crypto/tink/shaded/protobuf/AbstractMessageLite; +HSPLcom/google/crypto/tink/shaded/protobuf/AbstractMessageLite;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/AbstractMessageLite;->toByteArray()[B +HSPLcom/google/crypto/tink/shaded/protobuf/AbstractMessageLite;->toByteString()Lcom/google/crypto/tink/shaded/protobuf/ByteString; +Lcom/google/crypto/tink/shaded/protobuf/AbstractMessageLite$Builder; +HSPLcom/google/crypto/tink/shaded/protobuf/AbstractMessageLite$Builder;->()V +Lcom/google/crypto/tink/shaded/protobuf/AbstractProtobufList; +HSPLcom/google/crypto/tink/shaded/protobuf/AbstractProtobufList;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/AbstractProtobufList;->ensureIsMutable()V +HSPLcom/google/crypto/tink/shaded/protobuf/AbstractProtobufList;->equals(Ljava/lang/Object;)Z +HSPLcom/google/crypto/tink/shaded/protobuf/AbstractProtobufList;->isModifiable()Z +HSPLcom/google/crypto/tink/shaded/protobuf/AbstractProtobufList;->makeImmutable()V +Lcom/google/crypto/tink/shaded/protobuf/Android; +HSPLcom/google/crypto/tink/shaded/protobuf/Android;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/Android;->getClassForName(Ljava/lang/String;)Ljava/lang/Class; +HSPLcom/google/crypto/tink/shaded/protobuf/Android;->getMemoryClass()Ljava/lang/Class; +HSPLcom/google/crypto/tink/shaded/protobuf/Android;->isOnAndroidDevice()Z +Lcom/google/crypto/tink/shaded/protobuf/ArrayDecoders; +HSPLcom/google/crypto/tink/shaded/protobuf/ArrayDecoders;->decodeBytes([BILcom/google/crypto/tink/shaded/protobuf/ArrayDecoders$Registers;)I +HSPLcom/google/crypto/tink/shaded/protobuf/ArrayDecoders;->decodeMessageField(Lcom/google/crypto/tink/shaded/protobuf/Schema;[BIILcom/google/crypto/tink/shaded/protobuf/ArrayDecoders$Registers;)I +HSPLcom/google/crypto/tink/shaded/protobuf/ArrayDecoders;->decodeMessageList(Lcom/google/crypto/tink/shaded/protobuf/Schema;I[BIILcom/google/crypto/tink/shaded/protobuf/Internal$ProtobufList;Lcom/google/crypto/tink/shaded/protobuf/ArrayDecoders$Registers;)I +HSPLcom/google/crypto/tink/shaded/protobuf/ArrayDecoders;->decodeStringRequireUtf8([BILcom/google/crypto/tink/shaded/protobuf/ArrayDecoders$Registers;)I +HSPLcom/google/crypto/tink/shaded/protobuf/ArrayDecoders;->decodeVarint32(I[BILcom/google/crypto/tink/shaded/protobuf/ArrayDecoders$Registers;)I +HSPLcom/google/crypto/tink/shaded/protobuf/ArrayDecoders;->decodeVarint32([BILcom/google/crypto/tink/shaded/protobuf/ArrayDecoders$Registers;)I +HSPLcom/google/crypto/tink/shaded/protobuf/ArrayDecoders;->mergeMessageField(Ljava/lang/Object;Lcom/google/crypto/tink/shaded/protobuf/Schema;[BIILcom/google/crypto/tink/shaded/protobuf/ArrayDecoders$Registers;)I +Lcom/google/crypto/tink/shaded/protobuf/ArrayDecoders$Registers; +HSPLcom/google/crypto/tink/shaded/protobuf/ArrayDecoders$Registers;->(Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)V +Lcom/google/crypto/tink/shaded/protobuf/ByteOutput; +HSPLcom/google/crypto/tink/shaded/protobuf/ByteOutput;->()V +Lcom/google/crypto/tink/shaded/protobuf/ByteString; +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString;->checkRange(III)I +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString;->copyFrom([B)Lcom/google/crypto/tink/shaded/protobuf/ByteString; +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString;->copyFrom([BII)Lcom/google/crypto/tink/shaded/protobuf/ByteString; +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString;->newCodedBuilder(I)Lcom/google/crypto/tink/shaded/protobuf/ByteString$CodedBuilder; +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString;->peekCachedHashCode()I +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString;->toByteArray()[B +Lcom/google/crypto/tink/shaded/protobuf/ByteString$2; +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$2;->()V +Lcom/google/crypto/tink/shaded/protobuf/ByteString$ByteArrayCopier; +Lcom/google/crypto/tink/shaded/protobuf/ByteString$CodedBuilder; +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$CodedBuilder;->(I)V +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$CodedBuilder;->(ILcom/google/crypto/tink/shaded/protobuf/ByteString$1;)V +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$CodedBuilder;->build()Lcom/google/crypto/tink/shaded/protobuf/ByteString; +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$CodedBuilder;->getCodedOutput()Lcom/google/crypto/tink/shaded/protobuf/CodedOutputStream; +Lcom/google/crypto/tink/shaded/protobuf/ByteString$LeafByteString; +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$LeafByteString;->()V +Lcom/google/crypto/tink/shaded/protobuf/ByteString$LiteralByteString; +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$LiteralByteString;->([B)V +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$LiteralByteString;->copyToInternal([BIII)V +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$LiteralByteString;->equals(Ljava/lang/Object;)Z +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$LiteralByteString;->equalsRange(Lcom/google/crypto/tink/shaded/protobuf/ByteString;II)Z +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$LiteralByteString;->getOffsetIntoBytes()I +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$LiteralByteString;->newCodedInput()Lcom/google/crypto/tink/shaded/protobuf/CodedInputStream; +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$LiteralByteString;->size()I +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$LiteralByteString;->writeTo(Lcom/google/crypto/tink/shaded/protobuf/ByteOutput;)V +Lcom/google/crypto/tink/shaded/protobuf/ByteString$SystemByteArrayCopier; +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$SystemByteArrayCopier;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$SystemByteArrayCopier;->(Lcom/google/crypto/tink/shaded/protobuf/ByteString$1;)V +HSPLcom/google/crypto/tink/shaded/protobuf/ByteString$SystemByteArrayCopier;->copyFrom([BII)[B +Lcom/google/crypto/tink/shaded/protobuf/CodedInputStream; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream;->(Lcom/google/crypto/tink/shaded/protobuf/CodedInputStream$1;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream;->newInstance(Ljava/io/InputStream;)Lcom/google/crypto/tink/shaded/protobuf/CodedInputStream; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream;->newInstance(Ljava/io/InputStream;I)Lcom/google/crypto/tink/shaded/protobuf/CodedInputStream; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream;->newInstance([B)Lcom/google/crypto/tink/shaded/protobuf/CodedInputStream; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream;->newInstance([BII)Lcom/google/crypto/tink/shaded/protobuf/CodedInputStream; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream;->newInstance([BIIZ)Lcom/google/crypto/tink/shaded/protobuf/CodedInputStream; +Lcom/google/crypto/tink/shaded/protobuf/CodedInputStream$ArrayDecoder; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$ArrayDecoder;->([BIIZ)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$ArrayDecoder;->([BIIZLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$1;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$ArrayDecoder;->checkLastTagWas(I)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$ArrayDecoder;->getTotalBytesRead()I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$ArrayDecoder;->isAtEnd()Z +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$ArrayDecoder;->pushLimit(I)I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$ArrayDecoder;->readBytes()Lcom/google/crypto/tink/shaded/protobuf/ByteString; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$ArrayDecoder;->readRawVarint32()I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$ArrayDecoder;->readTag()I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$ArrayDecoder;->readUInt32()I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$ArrayDecoder;->recomputeBufferSizeAfterLimit()V +Lcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->(Ljava/io/InputStream;I)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->(Ljava/io/InputStream;ILcom/google/crypto/tink/shaded/protobuf/CodedInputStream$1;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->checkLastTagWas(I)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->isAtEnd()Z +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->popLimit(I)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->pushLimit(I)I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->read(Ljava/io/InputStream;[BII)I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->readBytes()Lcom/google/crypto/tink/shaded/protobuf/ByteString; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->readEnum()I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->readRawByte()B +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->readRawVarint32()I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->readRawVarint64SlowPath()J +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->readStringRequireUtf8()Ljava/lang/String; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->readTag()I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->readUInt32()I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->recomputeBufferSizeAfterLimit()V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder;->tryRefillBuffer(I)Z +Lcom/google/crypto/tink/shaded/protobuf/CodedInputStream$StreamDecoder$RefillCallback; +Lcom/google/crypto/tink/shaded/protobuf/CodedInputStreamReader; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStreamReader;->(Lcom/google/crypto/tink/shaded/protobuf/CodedInputStream;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStreamReader;->forCodedInput(Lcom/google/crypto/tink/shaded/protobuf/CodedInputStream;)Lcom/google/crypto/tink/shaded/protobuf/CodedInputStreamReader; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStreamReader;->getFieldNumber()I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStreamReader;->mergeMessageField(Ljava/lang/Object;Lcom/google/crypto/tink/shaded/protobuf/Schema;Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStreamReader;->mergeMessageFieldInternal(Ljava/lang/Object;Lcom/google/crypto/tink/shaded/protobuf/Schema;Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStreamReader;->readBytes()Lcom/google/crypto/tink/shaded/protobuf/ByteString; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStreamReader;->readEnum()I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStreamReader;->readMessage(Lcom/google/crypto/tink/shaded/protobuf/Schema;Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStreamReader;->readMessageList(Ljava/util/List;Lcom/google/crypto/tink/shaded/protobuf/Schema;Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStreamReader;->readStringRequireUtf8()Ljava/lang/String; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStreamReader;->readUInt32()I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedInputStreamReader;->requireWireType(I)V +Lcom/google/crypto/tink/shaded/protobuf/CodedOutputStream; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->(Lcom/google/crypto/tink/shaded/protobuf/CodedOutputStream$1;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->checkNoSpaceLeft()V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->computeBytesSize(ILcom/google/crypto/tink/shaded/protobuf/ByteString;)I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->computeBytesSizeNoTag(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->computeEnumSize(II)I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->computeEnumSizeNoTag(I)I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->computeInt32SizeNoTag(I)I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->computeLengthDelimitedFieldSize(I)I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->computeMessageSize(ILcom/google/crypto/tink/shaded/protobuf/MessageLite;Lcom/google/crypto/tink/shaded/protobuf/Schema;)I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->computeMessageSizeNoTag(Lcom/google/crypto/tink/shaded/protobuf/MessageLite;Lcom/google/crypto/tink/shaded/protobuf/Schema;)I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->computeStringSize(ILjava/lang/String;)I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->computeStringSizeNoTag(Ljava/lang/String;)I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->computeTagSize(I)I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->computeUInt32Size(II)I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->computeUInt32SizeNoTag(I)I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->newInstance([B)Lcom/google/crypto/tink/shaded/protobuf/CodedOutputStream; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->newInstance([BII)Lcom/google/crypto/tink/shaded/protobuf/CodedOutputStream; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;->writeEnum(II)V +Lcom/google/crypto/tink/shaded/protobuf/CodedOutputStream$ArrayEncoder; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream$ArrayEncoder;->([BII)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream$ArrayEncoder;->spaceLeft()I +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream$ArrayEncoder;->write([BII)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream$ArrayEncoder;->writeBytes(ILcom/google/crypto/tink/shaded/protobuf/ByteString;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream$ArrayEncoder;->writeBytesNoTag(Lcom/google/crypto/tink/shaded/protobuf/ByteString;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream$ArrayEncoder;->writeInt32(II)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream$ArrayEncoder;->writeInt32NoTag(I)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream$ArrayEncoder;->writeLazy([BII)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream$ArrayEncoder;->writeMessage(ILcom/google/crypto/tink/shaded/protobuf/MessageLite;Lcom/google/crypto/tink/shaded/protobuf/Schema;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream$ArrayEncoder;->writeString(ILjava/lang/String;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream$ArrayEncoder;->writeStringNoTag(Ljava/lang/String;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream$ArrayEncoder;->writeTag(II)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream$ArrayEncoder;->writeUInt32(II)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStream$ArrayEncoder;->writeUInt32NoTag(I)V +Lcom/google/crypto/tink/shaded/protobuf/CodedOutputStreamWriter; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStreamWriter;->(Lcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStreamWriter;->fieldOrder()Lcom/google/crypto/tink/shaded/protobuf/Writer$FieldOrder; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStreamWriter;->forCodedOutput(Lcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;)Lcom/google/crypto/tink/shaded/protobuf/CodedOutputStreamWriter; +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStreamWriter;->writeBytes(ILcom/google/crypto/tink/shaded/protobuf/ByteString;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStreamWriter;->writeEnum(II)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStreamWriter;->writeMessage(ILjava/lang/Object;Lcom/google/crypto/tink/shaded/protobuf/Schema;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStreamWriter;->writeMessageList(ILjava/util/List;Lcom/google/crypto/tink/shaded/protobuf/Schema;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStreamWriter;->writeString(ILjava/lang/String;)V +HSPLcom/google/crypto/tink/shaded/protobuf/CodedOutputStreamWriter;->writeUInt32(II)V +Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryFactory; +HSPLcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryFactory;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryFactory;->createEmpty()Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite; +HSPLcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryFactory;->invokeSubclassFactory(Ljava/lang/String;)Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite; +HSPLcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryFactory;->reflectExtensionRegistry()Ljava/lang/Class; +Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite; +HSPLcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;->(Z)V +HSPLcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;->getEmptyRegistry()Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite; +Lcom/google/crypto/tink/shaded/protobuf/ExtensionSchema; +Lcom/google/crypto/tink/shaded/protobuf/FieldType; +HSPLcom/google/crypto/tink/shaded/protobuf/FieldType;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/FieldType;->(Ljava/lang/String;IILcom/google/crypto/tink/shaded/protobuf/FieldType$Collection;Lcom/google/crypto/tink/shaded/protobuf/JavaType;)V +HSPLcom/google/crypto/tink/shaded/protobuf/FieldType;->id()I +HSPLcom/google/crypto/tink/shaded/protobuf/FieldType;->values()[Lcom/google/crypto/tink/shaded/protobuf/FieldType; +Lcom/google/crypto/tink/shaded/protobuf/FieldType$1; +HSPLcom/google/crypto/tink/shaded/protobuf/FieldType$1;->()V +Lcom/google/crypto/tink/shaded/protobuf/FieldType$Collection; +HSPLcom/google/crypto/tink/shaded/protobuf/FieldType$Collection;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/FieldType$Collection;->(Ljava/lang/String;IZ)V +HSPLcom/google/crypto/tink/shaded/protobuf/FieldType$Collection;->values()[Lcom/google/crypto/tink/shaded/protobuf/FieldType$Collection; +Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageInfoFactory; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageInfoFactory;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageInfoFactory;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageInfoFactory;->getInstance()Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageInfoFactory; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageInfoFactory;->isSupported(Ljava/lang/Class;)Z +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageInfoFactory;->messageInfoFor(Ljava/lang/Class;)Lcom/google/crypto/tink/shaded/protobuf/MessageInfo; +Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->buildMessageInfo()Ljava/lang/Object; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->checkMessageInitialized(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;)Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->clearMemoizedHashCode()V +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->clearMemoizedSerializedSize()V +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->computeSerializedSize(Lcom/google/crypto/tink/shaded/protobuf/Schema;)I +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->createBuilder()Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$Builder; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->dynamicMethod(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->emptyProtobufList()Lcom/google/crypto/tink/shaded/protobuf/Internal$ProtobufList; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->equals(Ljava/lang/Object;)Z +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->getDefaultInstance(Ljava/lang/Class;)Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->getMemoizedSerializedSize()I +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->getSerializedSize()I +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->getSerializedSize(Lcom/google/crypto/tink/shaded/protobuf/Schema;)I +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->isInitialized()Z +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->isInitialized(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;Z)Z +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->isMutable()Z +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->makeImmutable()V +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->markImmutable()V +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->mutableCopy(Lcom/google/crypto/tink/shaded/protobuf/Internal$ProtobufList;)Lcom/google/crypto/tink/shaded/protobuf/Internal$ProtobufList; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->newMessageInfo(Lcom/google/crypto/tink/shaded/protobuf/MessageLite;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->newMutableInstance()Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->parseFrom(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;Lcom/google/crypto/tink/shaded/protobuf/ByteString;Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->parseFrom(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;Ljava/io/InputStream;Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->parseFrom(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;[BLcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->parsePartialFrom(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;Lcom/google/crypto/tink/shaded/protobuf/ByteString;Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->parsePartialFrom(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;Lcom/google/crypto/tink/shaded/protobuf/CodedInputStream;Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->parsePartialFrom(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;[BIILcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->registerDefaultInstance(Ljava/lang/Class;Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;)V +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->setMemoizedSerializedSize(I)V +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->toBuilder()Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$Builder; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;->writeTo(Lcom/google/crypto/tink/shaded/protobuf/CodedOutputStream;)V +Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$Builder; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$Builder;->(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;)V +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$Builder;->build()Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$Builder;->buildPartial()Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$Builder;->copyOnWrite()V +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$Builder;->copyOnWriteInternal()V +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$Builder;->getDefaultInstanceForType()Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$Builder;->mergeFrom(Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite;)Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$Builder; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$Builder;->mergeFromInstance(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$Builder;->newMutableInstance()Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite; +Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke; +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;->(Ljava/lang/String;I)V +HSPLcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke;->values()[Lcom/google/crypto/tink/shaded/protobuf/GeneratedMessageLite$MethodToInvoke; +Lcom/google/crypto/tink/shaded/protobuf/Internal; +HSPLcom/google/crypto/tink/shaded/protobuf/Internal;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/Internal;->checkNotNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; +Lcom/google/crypto/tink/shaded/protobuf/Internal$EnumLite; +Lcom/google/crypto/tink/shaded/protobuf/Internal$EnumLiteMap; +Lcom/google/crypto/tink/shaded/protobuf/Internal$EnumVerifier; +Lcom/google/crypto/tink/shaded/protobuf/Internal$ProtobufList; +Lcom/google/crypto/tink/shaded/protobuf/InvalidProtocolBufferException; +Lcom/google/crypto/tink/shaded/protobuf/InvalidProtocolBufferException$InvalidWireTypeException; +Lcom/google/crypto/tink/shaded/protobuf/JavaType; +HSPLcom/google/crypto/tink/shaded/protobuf/JavaType;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/JavaType;->(Ljava/lang/String;ILjava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;)V +HSPLcom/google/crypto/tink/shaded/protobuf/JavaType;->getBoxedType()Ljava/lang/Class; +HSPLcom/google/crypto/tink/shaded/protobuf/JavaType;->values()[Lcom/google/crypto/tink/shaded/protobuf/JavaType; +Lcom/google/crypto/tink/shaded/protobuf/LazyFieldLite; +Lcom/google/crypto/tink/shaded/protobuf/ListFieldSchema; +HSPLcom/google/crypto/tink/shaded/protobuf/ListFieldSchema;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/ListFieldSchema;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/ListFieldSchema;->(Lcom/google/crypto/tink/shaded/protobuf/ListFieldSchema$1;)V +HSPLcom/google/crypto/tink/shaded/protobuf/ListFieldSchema;->lite()Lcom/google/crypto/tink/shaded/protobuf/ListFieldSchema; +Lcom/google/crypto/tink/shaded/protobuf/ListFieldSchema$ListFieldSchemaFull; +HSPLcom/google/crypto/tink/shaded/protobuf/ListFieldSchema$ListFieldSchemaFull;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/ListFieldSchema$ListFieldSchemaFull;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/ListFieldSchema$ListFieldSchemaFull;->(Lcom/google/crypto/tink/shaded/protobuf/ListFieldSchema$1;)V +Lcom/google/crypto/tink/shaded/protobuf/ListFieldSchema$ListFieldSchemaLite; +HSPLcom/google/crypto/tink/shaded/protobuf/ListFieldSchema$ListFieldSchemaLite;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/ListFieldSchema$ListFieldSchemaLite;->(Lcom/google/crypto/tink/shaded/protobuf/ListFieldSchema$1;)V +HSPLcom/google/crypto/tink/shaded/protobuf/ListFieldSchema$ListFieldSchemaLite;->getProtobufList(Ljava/lang/Object;J)Lcom/google/crypto/tink/shaded/protobuf/Internal$ProtobufList; +HSPLcom/google/crypto/tink/shaded/protobuf/ListFieldSchema$ListFieldSchemaLite;->makeImmutableListAt(Ljava/lang/Object;J)V +HSPLcom/google/crypto/tink/shaded/protobuf/ListFieldSchema$ListFieldSchemaLite;->mergeListsAt(Ljava/lang/Object;Ljava/lang/Object;J)V +HSPLcom/google/crypto/tink/shaded/protobuf/ListFieldSchema$ListFieldSchemaLite;->mutableListAt(Ljava/lang/Object;J)Ljava/util/List; +Lcom/google/crypto/tink/shaded/protobuf/ManifestSchemaFactory; +HSPLcom/google/crypto/tink/shaded/protobuf/ManifestSchemaFactory;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/ManifestSchemaFactory;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/ManifestSchemaFactory;->(Lcom/google/crypto/tink/shaded/protobuf/MessageInfoFactory;)V +HSPLcom/google/crypto/tink/shaded/protobuf/ManifestSchemaFactory;->createSchema(Ljava/lang/Class;)Lcom/google/crypto/tink/shaded/protobuf/Schema; +HSPLcom/google/crypto/tink/shaded/protobuf/ManifestSchemaFactory;->getDefaultMessageInfoFactory()Lcom/google/crypto/tink/shaded/protobuf/MessageInfoFactory; +HSPLcom/google/crypto/tink/shaded/protobuf/ManifestSchemaFactory;->getDescriptorMessageInfoFactory()Lcom/google/crypto/tink/shaded/protobuf/MessageInfoFactory; +HSPLcom/google/crypto/tink/shaded/protobuf/ManifestSchemaFactory;->isProto2(Lcom/google/crypto/tink/shaded/protobuf/MessageInfo;)Z +HSPLcom/google/crypto/tink/shaded/protobuf/ManifestSchemaFactory;->newSchema(Ljava/lang/Class;Lcom/google/crypto/tink/shaded/protobuf/MessageInfo;)Lcom/google/crypto/tink/shaded/protobuf/Schema; +Lcom/google/crypto/tink/shaded/protobuf/ManifestSchemaFactory$1; +HSPLcom/google/crypto/tink/shaded/protobuf/ManifestSchemaFactory$1;->()V +Lcom/google/crypto/tink/shaded/protobuf/ManifestSchemaFactory$CompositeMessageInfoFactory; +HSPLcom/google/crypto/tink/shaded/protobuf/ManifestSchemaFactory$CompositeMessageInfoFactory;->([Lcom/google/crypto/tink/shaded/protobuf/MessageInfoFactory;)V +HSPLcom/google/crypto/tink/shaded/protobuf/ManifestSchemaFactory$CompositeMessageInfoFactory;->messageInfoFor(Ljava/lang/Class;)Lcom/google/crypto/tink/shaded/protobuf/MessageInfo; +Lcom/google/crypto/tink/shaded/protobuf/MapFieldSchema; +Lcom/google/crypto/tink/shaded/protobuf/MapFieldSchemaLite; +HSPLcom/google/crypto/tink/shaded/protobuf/MapFieldSchemaLite;->()V +Lcom/google/crypto/tink/shaded/protobuf/MapFieldSchemas; +HSPLcom/google/crypto/tink/shaded/protobuf/MapFieldSchemas;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/MapFieldSchemas;->lite()Lcom/google/crypto/tink/shaded/protobuf/MapFieldSchema; +HSPLcom/google/crypto/tink/shaded/protobuf/MapFieldSchemas;->loadSchemaForFullRuntime()Lcom/google/crypto/tink/shaded/protobuf/MapFieldSchema; +Lcom/google/crypto/tink/shaded/protobuf/MessageInfo; +Lcom/google/crypto/tink/shaded/protobuf/MessageInfoFactory; +Lcom/google/crypto/tink/shaded/protobuf/MessageLite; +Lcom/google/crypto/tink/shaded/protobuf/MessageLite$Builder; +Lcom/google/crypto/tink/shaded/protobuf/MessageLiteOrBuilder; +Lcom/google/crypto/tink/shaded/protobuf/MessageSchema; +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->([I[Ljava/lang/Object;IILcom/google/crypto/tink/shaded/protobuf/MessageLite;ZZ[IIILcom/google/crypto/tink/shaded/protobuf/NewInstanceSchema;Lcom/google/crypto/tink/shaded/protobuf/ListFieldSchema;Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSchema;Lcom/google/crypto/tink/shaded/protobuf/ExtensionSchema;Lcom/google/crypto/tink/shaded/protobuf/MapFieldSchema;)V +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->arePresentForEquals(Ljava/lang/Object;Ljava/lang/Object;I)Z +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->checkMutable(Ljava/lang/Object;)V +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->equals(Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->equals(Ljava/lang/Object;Ljava/lang/Object;I)Z +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->getEnumFieldVerifier(I)Lcom/google/crypto/tink/shaded/protobuf/Internal$EnumVerifier; +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->getMessageFieldSchema(I)Lcom/google/crypto/tink/shaded/protobuf/Schema; +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->getSerializedSize(Ljava/lang/Object;)I +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->getSerializedSizeProto3(Ljava/lang/Object;)I +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->getUnknownFieldsSerializedSize(Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSchema;Ljava/lang/Object;)I +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->intAt(Ljava/lang/Object;J)I +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->isEnforceUtf8(I)Z +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->isFieldPresent(Ljava/lang/Object;I)Z +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->isMutable(Ljava/lang/Object;)Z +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->listAt(Ljava/lang/Object;J)Ljava/util/List; +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->makeImmutable(Ljava/lang/Object;)V +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->mergeFrom(Ljava/lang/Object;Lcom/google/crypto/tink/shaded/protobuf/Reader;Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)V +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->mergeFrom(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->mergeFrom(Ljava/lang/Object;[BIILcom/google/crypto/tink/shaded/protobuf/ArrayDecoders$Registers;)V +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->mergeFromHelper(Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSchema;Lcom/google/crypto/tink/shaded/protobuf/ExtensionSchema;Ljava/lang/Object;Lcom/google/crypto/tink/shaded/protobuf/Reader;Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)V +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->mergeSingleField(Ljava/lang/Object;Ljava/lang/Object;I)V +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->mutableMessageFieldForMerge(Ljava/lang/Object;I)Ljava/lang/Object; +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->newInstance()Ljava/lang/Object; +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->newSchema(Ljava/lang/Class;Lcom/google/crypto/tink/shaded/protobuf/MessageInfo;Lcom/google/crypto/tink/shaded/protobuf/NewInstanceSchema;Lcom/google/crypto/tink/shaded/protobuf/ListFieldSchema;Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSchema;Lcom/google/crypto/tink/shaded/protobuf/ExtensionSchema;Lcom/google/crypto/tink/shaded/protobuf/MapFieldSchema;)Lcom/google/crypto/tink/shaded/protobuf/MessageSchema; +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->newSchemaForRawMessageInfo(Lcom/google/crypto/tink/shaded/protobuf/RawMessageInfo;Lcom/google/crypto/tink/shaded/protobuf/NewInstanceSchema;Lcom/google/crypto/tink/shaded/protobuf/ListFieldSchema;Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSchema;Lcom/google/crypto/tink/shaded/protobuf/ExtensionSchema;Lcom/google/crypto/tink/shaded/protobuf/MapFieldSchema;)Lcom/google/crypto/tink/shaded/protobuf/MessageSchema; +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->numberAt(I)I +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->offset(I)J +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->parseProto3Message(Ljava/lang/Object;[BIILcom/google/crypto/tink/shaded/protobuf/ArrayDecoders$Registers;)I +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->positionForFieldNumber(I)I +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->positionForFieldNumber(II)I +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->presenceMaskAndOffsetAt(I)I +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->readMessageList(Ljava/lang/Object;ILcom/google/crypto/tink/shaded/protobuf/Reader;Lcom/google/crypto/tink/shaded/protobuf/Schema;Lcom/google/crypto/tink/shaded/protobuf/ExtensionRegistryLite;)V +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->readString(Ljava/lang/Object;ILcom/google/crypto/tink/shaded/protobuf/Reader;)V +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->reflectField(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/reflect/Field; +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->setFieldPresent(Ljava/lang/Object;I)V +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->slowPositionForFieldNumber(II)I +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->storeMessageField(Ljava/lang/Object;ILjava/lang/Object;)V +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->type(I)I +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->typeAndOffsetAt(I)I +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->writeFieldsInAscendingOrderProto3(Ljava/lang/Object;Lcom/google/crypto/tink/shaded/protobuf/Writer;)V +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->writeString(ILjava/lang/Object;Lcom/google/crypto/tink/shaded/protobuf/Writer;)V +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->writeTo(Ljava/lang/Object;Lcom/google/crypto/tink/shaded/protobuf/Writer;)V +HSPLcom/google/crypto/tink/shaded/protobuf/MessageSchema;->writeUnknownInMessageTo(Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSchema;Ljava/lang/Object;Lcom/google/crypto/tink/shaded/protobuf/Writer;)V +Lcom/google/crypto/tink/shaded/protobuf/NewInstanceSchema; +Lcom/google/crypto/tink/shaded/protobuf/NewInstanceSchemaLite; +HSPLcom/google/crypto/tink/shaded/protobuf/NewInstanceSchemaLite;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/NewInstanceSchemaLite;->newInstance(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/google/crypto/tink/shaded/protobuf/NewInstanceSchemas; +HSPLcom/google/crypto/tink/shaded/protobuf/NewInstanceSchemas;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/NewInstanceSchemas;->lite()Lcom/google/crypto/tink/shaded/protobuf/NewInstanceSchema; +HSPLcom/google/crypto/tink/shaded/protobuf/NewInstanceSchemas;->loadSchemaForFullRuntime()Lcom/google/crypto/tink/shaded/protobuf/NewInstanceSchema; +Lcom/google/crypto/tink/shaded/protobuf/ProtoSyntax; +HSPLcom/google/crypto/tink/shaded/protobuf/ProtoSyntax;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/ProtoSyntax;->(Ljava/lang/String;I)V +Lcom/google/crypto/tink/shaded/protobuf/Protobuf; +HSPLcom/google/crypto/tink/shaded/protobuf/Protobuf;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/Protobuf;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/Protobuf;->getInstance()Lcom/google/crypto/tink/shaded/protobuf/Protobuf; +HSPLcom/google/crypto/tink/shaded/protobuf/Protobuf;->registerSchema(Ljava/lang/Class;Lcom/google/crypto/tink/shaded/protobuf/Schema;)Lcom/google/crypto/tink/shaded/protobuf/Schema; +HSPLcom/google/crypto/tink/shaded/protobuf/Protobuf;->schemaFor(Ljava/lang/Class;)Lcom/google/crypto/tink/shaded/protobuf/Schema; +HSPLcom/google/crypto/tink/shaded/protobuf/Protobuf;->schemaFor(Ljava/lang/Object;)Lcom/google/crypto/tink/shaded/protobuf/Schema; +Lcom/google/crypto/tink/shaded/protobuf/ProtobufArrayList; +HSPLcom/google/crypto/tink/shaded/protobuf/ProtobufArrayList;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/ProtobufArrayList;->([Ljava/lang/Object;I)V +HSPLcom/google/crypto/tink/shaded/protobuf/ProtobufArrayList;->add(Ljava/lang/Object;)Z +HSPLcom/google/crypto/tink/shaded/protobuf/ProtobufArrayList;->emptyList()Lcom/google/crypto/tink/shaded/protobuf/ProtobufArrayList; +HSPLcom/google/crypto/tink/shaded/protobuf/ProtobufArrayList;->ensureIndexInRange(I)V +HSPLcom/google/crypto/tink/shaded/protobuf/ProtobufArrayList;->get(I)Ljava/lang/Object; +HSPLcom/google/crypto/tink/shaded/protobuf/ProtobufArrayList;->mutableCopyWithCapacity(I)Lcom/google/crypto/tink/shaded/protobuf/Internal$ProtobufList; +HSPLcom/google/crypto/tink/shaded/protobuf/ProtobufArrayList;->mutableCopyWithCapacity(I)Lcom/google/crypto/tink/shaded/protobuf/ProtobufArrayList; +HSPLcom/google/crypto/tink/shaded/protobuf/ProtobufArrayList;->size()I +Lcom/google/crypto/tink/shaded/protobuf/RawMessageInfo; +HSPLcom/google/crypto/tink/shaded/protobuf/RawMessageInfo;->(Lcom/google/crypto/tink/shaded/protobuf/MessageLite;Ljava/lang/String;[Ljava/lang/Object;)V +HSPLcom/google/crypto/tink/shaded/protobuf/RawMessageInfo;->getDefaultInstance()Lcom/google/crypto/tink/shaded/protobuf/MessageLite; +HSPLcom/google/crypto/tink/shaded/protobuf/RawMessageInfo;->getObjects()[Ljava/lang/Object; +HSPLcom/google/crypto/tink/shaded/protobuf/RawMessageInfo;->getStringInfo()Ljava/lang/String; +HSPLcom/google/crypto/tink/shaded/protobuf/RawMessageInfo;->getSyntax()Lcom/google/crypto/tink/shaded/protobuf/ProtoSyntax; +HSPLcom/google/crypto/tink/shaded/protobuf/RawMessageInfo;->isMessageSetWireFormat()Z +Lcom/google/crypto/tink/shaded/protobuf/Reader; +Lcom/google/crypto/tink/shaded/protobuf/Schema; +Lcom/google/crypto/tink/shaded/protobuf/SchemaFactory; +Lcom/google/crypto/tink/shaded/protobuf/SchemaUtil; +HSPLcom/google/crypto/tink/shaded/protobuf/SchemaUtil;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/SchemaUtil;->computeSizeMessage(ILjava/lang/Object;Lcom/google/crypto/tink/shaded/protobuf/Schema;)I +HSPLcom/google/crypto/tink/shaded/protobuf/SchemaUtil;->computeSizeMessageList(ILjava/util/List;Lcom/google/crypto/tink/shaded/protobuf/Schema;)I +HSPLcom/google/crypto/tink/shaded/protobuf/SchemaUtil;->getGeneratedMessageClass()Ljava/lang/Class; +HSPLcom/google/crypto/tink/shaded/protobuf/SchemaUtil;->getUnknownFieldSetSchema(Z)Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSchema; +HSPLcom/google/crypto/tink/shaded/protobuf/SchemaUtil;->getUnknownFieldSetSchemaClass()Ljava/lang/Class; +HSPLcom/google/crypto/tink/shaded/protobuf/SchemaUtil;->mergeUnknownFields(Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSchema;Ljava/lang/Object;Ljava/lang/Object;)V +HSPLcom/google/crypto/tink/shaded/protobuf/SchemaUtil;->requireGeneratedMessage(Ljava/lang/Class;)V +HSPLcom/google/crypto/tink/shaded/protobuf/SchemaUtil;->safeEquals(Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLcom/google/crypto/tink/shaded/protobuf/SchemaUtil;->unknownFieldSetLiteSchema()Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSchema; +HSPLcom/google/crypto/tink/shaded/protobuf/SchemaUtil;->writeMessageList(ILjava/util/List;Lcom/google/crypto/tink/shaded/protobuf/Writer;Lcom/google/crypto/tink/shaded/protobuf/Schema;)V +Lcom/google/crypto/tink/shaded/protobuf/UninitializedMessageException; +Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSchema; +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSchema;->()V +Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLite; +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLite;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLite;->(I[I[Ljava/lang/Object;Z)V +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLite;->equals(Ljava/lang/Object;)Z +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLite;->getDefaultInstance()Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLite; +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLite;->getSerializedSize()I +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLite;->makeImmutable()V +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLite;->writeTo(Lcom/google/crypto/tink/shaded/protobuf/Writer;)V +Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLiteSchema; +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLiteSchema;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLiteSchema;->getFromMessage(Ljava/lang/Object;)Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLite; +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLiteSchema;->getFromMessage(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLiteSchema;->getSerializedSize(Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLite;)I +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLiteSchema;->getSerializedSize(Ljava/lang/Object;)I +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLiteSchema;->makeImmutable(Ljava/lang/Object;)V +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLiteSchema;->merge(Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLite;Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLite;)Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLite; +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLiteSchema;->merge(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLiteSchema;->setToMessage(Ljava/lang/Object;Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLite;)V +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLiteSchema;->setToMessage(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLiteSchema;->writeTo(Lcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLite;Lcom/google/crypto/tink/shaded/protobuf/Writer;)V +HSPLcom/google/crypto/tink/shaded/protobuf/UnknownFieldSetLiteSchema;->writeTo(Ljava/lang/Object;Lcom/google/crypto/tink/shaded/protobuf/Writer;)V +Lcom/google/crypto/tink/shaded/protobuf/UnsafeUtil; +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->arrayBaseOffset(Ljava/lang/Class;)I +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->arrayIndexScale(Ljava/lang/Class;)I +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->bufferAddressField()Ljava/lang/reflect/Field; +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->determineAndroidSupportByAddressSize(Ljava/lang/Class;)Z +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->field(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/reflect/Field; +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->fieldOffset(Ljava/lang/reflect/Field;)J +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->getInt(Ljava/lang/Object;J)I +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->getMemoryAccessor()Lcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$MemoryAccessor; +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->getUnsafe()Lsun/misc/Unsafe; +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->hasUnsafeArrayOperations()Z +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->hasUnsafeByteBufferOperations()Z +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->putInt(Ljava/lang/Object;JI)V +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->supportsUnsafeArrayOperations()Z +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil;->supportsUnsafeByteBufferOperations()Z +Lcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$1; +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$1;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$1;->run()Ljava/lang/Object; +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$1;->run()Lsun/misc/Unsafe; +Lcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$Android64MemoryAccessor; +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$Android64MemoryAccessor;->(Lsun/misc/Unsafe;)V +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$Android64MemoryAccessor;->supportsUnsafeByteBufferOperations()Z +Lcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$MemoryAccessor; +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$MemoryAccessor;->(Lsun/misc/Unsafe;)V +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$MemoryAccessor;->arrayBaseOffset(Ljava/lang/Class;)I +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$MemoryAccessor;->arrayIndexScale(Ljava/lang/Class;)I +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$MemoryAccessor;->getInt(Ljava/lang/Object;J)I +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$MemoryAccessor;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$MemoryAccessor;->objectFieldOffset(Ljava/lang/reflect/Field;)J +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$MemoryAccessor;->putInt(Ljava/lang/Object;JI)V +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$MemoryAccessor;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V +HSPLcom/google/crypto/tink/shaded/protobuf/UnsafeUtil$MemoryAccessor;->supportsUnsafeArrayOperations()Z +Lcom/google/crypto/tink/shaded/protobuf/Utf8; +HSPLcom/google/crypto/tink/shaded/protobuf/Utf8;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/Utf8;->decodeUtf8([BII)Ljava/lang/String; +HSPLcom/google/crypto/tink/shaded/protobuf/Utf8;->encode(Ljava/lang/CharSequence;[BII)I +HSPLcom/google/crypto/tink/shaded/protobuf/Utf8;->encodedLength(Ljava/lang/CharSequence;)I +Lcom/google/crypto/tink/shaded/protobuf/Utf8$DecodeUtil; +HSPLcom/google/crypto/tink/shaded/protobuf/Utf8$DecodeUtil;->access$400(B)Z +HSPLcom/google/crypto/tink/shaded/protobuf/Utf8$DecodeUtil;->access$500(B[CI)V +HSPLcom/google/crypto/tink/shaded/protobuf/Utf8$DecodeUtil;->handleOneByte(B[CI)V +HSPLcom/google/crypto/tink/shaded/protobuf/Utf8$DecodeUtil;->isOneByte(B)Z +Lcom/google/crypto/tink/shaded/protobuf/Utf8$Processor; +HSPLcom/google/crypto/tink/shaded/protobuf/Utf8$Processor;->()V +Lcom/google/crypto/tink/shaded/protobuf/Utf8$SafeProcessor; +HSPLcom/google/crypto/tink/shaded/protobuf/Utf8$SafeProcessor;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/Utf8$SafeProcessor;->decodeUtf8([BII)Ljava/lang/String; +HSPLcom/google/crypto/tink/shaded/protobuf/Utf8$SafeProcessor;->encodeUtf8(Ljava/lang/CharSequence;[BII)I +Lcom/google/crypto/tink/shaded/protobuf/Utf8$UnpairedSurrogateException; +Lcom/google/crypto/tink/shaded/protobuf/Utf8$UnsafeProcessor; +HSPLcom/google/crypto/tink/shaded/protobuf/Utf8$UnsafeProcessor;->isAvailable()Z +Lcom/google/crypto/tink/shaded/protobuf/WireFormat; +HSPLcom/google/crypto/tink/shaded/protobuf/WireFormat;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/WireFormat;->getTagFieldNumber(I)I +HSPLcom/google/crypto/tink/shaded/protobuf/WireFormat;->getTagWireType(I)I +HSPLcom/google/crypto/tink/shaded/protobuf/WireFormat;->makeTag(II)I +Lcom/google/crypto/tink/shaded/protobuf/Writer; +Lcom/google/crypto/tink/shaded/protobuf/Writer$FieldOrder; +HSPLcom/google/crypto/tink/shaded/protobuf/Writer$FieldOrder;->()V +HSPLcom/google/crypto/tink/shaded/protobuf/Writer$FieldOrder;->(Ljava/lang/String;I)V +Lcom/google/crypto/tink/subtle/AesGcmJce; +HSPLcom/google/crypto/tink/subtle/AesGcmJce;->()V +HSPLcom/google/crypto/tink/subtle/AesGcmJce;->([B)V +HSPLcom/google/crypto/tink/subtle/AesGcmJce;->decrypt([B[B)[B +HSPLcom/google/crypto/tink/subtle/AesGcmJce;->encrypt([B[B)[B +Lcom/google/crypto/tink/subtle/AesSiv; +HSPLcom/google/crypto/tink/subtle/AesSiv;->()V +HSPLcom/google/crypto/tink/subtle/AesSiv;->([B)V +HSPLcom/google/crypto/tink/subtle/AesSiv;->encryptDeterministically([B[B)[B +HSPLcom/google/crypto/tink/subtle/AesSiv;->s2v([[B)[B +Lcom/google/crypto/tink/subtle/Base64; +HSPLcom/google/crypto/tink/subtle/Base64;->()V +HSPLcom/google/crypto/tink/subtle/Base64;->decode(Ljava/lang/String;I)[B +HSPLcom/google/crypto/tink/subtle/Base64;->decode([BI)[B +HSPLcom/google/crypto/tink/subtle/Base64;->decode([BIII)[B +HSPLcom/google/crypto/tink/subtle/Base64;->encode([B)Ljava/lang/String; +HSPLcom/google/crypto/tink/subtle/Base64;->encode([BI)[B +HSPLcom/google/crypto/tink/subtle/Base64;->encode([BIII)[B +HSPLcom/google/crypto/tink/subtle/Base64;->encodeToString([BI)Ljava/lang/String; +Lcom/google/crypto/tink/subtle/Base64$Coder; +HSPLcom/google/crypto/tink/subtle/Base64$Coder;->()V +Lcom/google/crypto/tink/subtle/Base64$Decoder; +HSPLcom/google/crypto/tink/subtle/Base64$Decoder;->()V +HSPLcom/google/crypto/tink/subtle/Base64$Decoder;->(I[B)V +HSPLcom/google/crypto/tink/subtle/Base64$Decoder;->process([BIIZ)Z +Lcom/google/crypto/tink/subtle/Base64$Encoder; +HSPLcom/google/crypto/tink/subtle/Base64$Encoder;->()V +HSPLcom/google/crypto/tink/subtle/Base64$Encoder;->(I[B)V +HSPLcom/google/crypto/tink/subtle/Base64$Encoder;->process([BIIZ)Z +Lcom/google/crypto/tink/subtle/Bytes; +HSPLcom/google/crypto/tink/subtle/Bytes;->concat([[B)[B +HSPLcom/google/crypto/tink/subtle/Bytes;->xor([BI[BII)[B +HSPLcom/google/crypto/tink/subtle/Bytes;->xor([B[B)[B +HSPLcom/google/crypto/tink/subtle/Bytes;->xorEnd([B[B)[B +Lcom/google/crypto/tink/subtle/EngineFactory; +HSPLcom/google/crypto/tink/subtle/EngineFactory;->()V +HSPLcom/google/crypto/tink/subtle/EngineFactory;->(Lcom/google/crypto/tink/subtle/EngineWrapper;)V +HSPLcom/google/crypto/tink/subtle/EngineFactory;->getInstance(Ljava/lang/String;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/subtle/EngineFactory;->toProviderList([Ljava/lang/String;)Ljava/util/List; +Lcom/google/crypto/tink/subtle/EngineFactory$AndroidPolicy; +HSPLcom/google/crypto/tink/subtle/EngineFactory$AndroidPolicy;->(Lcom/google/crypto/tink/subtle/EngineWrapper;)V +HSPLcom/google/crypto/tink/subtle/EngineFactory$AndroidPolicy;->(Lcom/google/crypto/tink/subtle/EngineWrapper;Lcom/google/crypto/tink/subtle/EngineFactory$1;)V +HSPLcom/google/crypto/tink/subtle/EngineFactory$AndroidPolicy;->getInstance(Ljava/lang/String;)Ljava/lang/Object; +Lcom/google/crypto/tink/subtle/EngineFactory$Policy; +Lcom/google/crypto/tink/subtle/EngineWrapper; +Lcom/google/crypto/tink/subtle/EngineWrapper$TCipher; +HSPLcom/google/crypto/tink/subtle/EngineWrapper$TCipher;->()V +HSPLcom/google/crypto/tink/subtle/EngineWrapper$TCipher;->getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/lang/Object; +HSPLcom/google/crypto/tink/subtle/EngineWrapper$TCipher;->getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljavax/crypto/Cipher; +Lcom/google/crypto/tink/subtle/EngineWrapper$TKeyAgreement; +HSPLcom/google/crypto/tink/subtle/EngineWrapper$TKeyAgreement;->()V +Lcom/google/crypto/tink/subtle/EngineWrapper$TKeyFactory; +HSPLcom/google/crypto/tink/subtle/EngineWrapper$TKeyFactory;->()V +Lcom/google/crypto/tink/subtle/EngineWrapper$TKeyPairGenerator; +HSPLcom/google/crypto/tink/subtle/EngineWrapper$TKeyPairGenerator;->()V +Lcom/google/crypto/tink/subtle/EngineWrapper$TMac; +HSPLcom/google/crypto/tink/subtle/EngineWrapper$TMac;->()V +Lcom/google/crypto/tink/subtle/EngineWrapper$TMessageDigest; +HSPLcom/google/crypto/tink/subtle/EngineWrapper$TMessageDigest;->()V +Lcom/google/crypto/tink/subtle/EngineWrapper$TSignature; +HSPLcom/google/crypto/tink/subtle/EngineWrapper$TSignature;->()V +Lcom/google/crypto/tink/subtle/Hex; +HSPLcom/google/crypto/tink/subtle/Hex;->decode(Ljava/lang/String;)[B +HSPLcom/google/crypto/tink/subtle/Hex;->encode([B)Ljava/lang/String; +Lcom/google/crypto/tink/subtle/PrfAesCmac; +HSPLcom/google/crypto/tink/subtle/PrfAesCmac;->()V +HSPLcom/google/crypto/tink/subtle/PrfAesCmac;->([B)V +HSPLcom/google/crypto/tink/subtle/PrfAesCmac;->compute([BI)[B +HSPLcom/google/crypto/tink/subtle/PrfAesCmac;->generateSubKeys()V +HSPLcom/google/crypto/tink/subtle/PrfAesCmac;->instance()Ljavax/crypto/Cipher; +Lcom/google/crypto/tink/subtle/Random; +HSPLcom/google/crypto/tink/subtle/Random;->()V +HSPLcom/google/crypto/tink/subtle/Random;->access$000()Ljava/security/SecureRandom; +HSPLcom/google/crypto/tink/subtle/Random;->newDefaultSecureRandom()Ljava/security/SecureRandom; +HSPLcom/google/crypto/tink/subtle/Random;->randBytes(I)[B +Lcom/google/crypto/tink/subtle/Random$1; +HSPLcom/google/crypto/tink/subtle/Random$1;->()V +HSPLcom/google/crypto/tink/subtle/Random$1;->initialValue()Ljava/lang/Object; +HSPLcom/google/crypto/tink/subtle/Random$1;->initialValue()Ljava/security/SecureRandom; +Lcom/google/crypto/tink/subtle/SubtleUtil; +HSPLcom/google/crypto/tink/subtle/SubtleUtil;->androidApiLevel()I +HSPLcom/google/crypto/tink/subtle/SubtleUtil;->isAndroid()Z +Lcom/google/crypto/tink/subtle/Validators; +HSPLcom/google/crypto/tink/subtle/Validators;->()V +HSPLcom/google/crypto/tink/subtle/Validators;->validateAesKeySize(I)V +HSPLcom/google/crypto/tink/subtle/Validators;->validateKmsKeyUriAndRemovePrefix(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLcom/google/crypto/tink/subtle/Validators;->validateVersion(II)V +Lcom/google/crypto/tink/util/Bytes; +HSPLcom/google/crypto/tink/util/Bytes;->([BII)V +HSPLcom/google/crypto/tink/util/Bytes;->copyFrom([B)Lcom/google/crypto/tink/util/Bytes; +HSPLcom/google/crypto/tink/util/Bytes;->copyFrom([BII)Lcom/google/crypto/tink/util/Bytes; +HSPLcom/google/crypto/tink/util/Bytes;->equals(Ljava/lang/Object;)Z +HSPLcom/google/crypto/tink/util/Bytes;->hashCode()I +HSPLcom/google/crypto/tink/util/Bytes;->size()I +Lcom/google/crypto/tink/util/SecretBytes; +HSPLcom/google/crypto/tink/util/SecretBytes;->(Lcom/google/crypto/tink/util/Bytes;)V +HSPLcom/google/crypto/tink/util/SecretBytes;->copyFrom([BLcom/google/crypto/tink/SecretKeyAccess;)Lcom/google/crypto/tink/util/SecretBytes; +HSPLcom/google/crypto/tink/util/SecretBytes;->size()I +Lcom/google/firebase/AutoValue_StartupTime; +HSPLcom/google/firebase/AutoValue_StartupTime;->(JJJ)V +Lcom/google/firebase/DataCollectionDefaultChange; +Lcom/google/firebase/FirebaseApp; +HSPLcom/google/firebase/FirebaseApp;->()V +HSPLcom/google/firebase/FirebaseApp;->(Landroid/content/Context;Ljava/lang/String;Lcom/google/firebase/FirebaseOptions;)V +HSPLcom/google/firebase/FirebaseApp;->addBackgroundStateChangeListener(Lcom/google/firebase/FirebaseApp$BackgroundStateChangeListener;)V +HSPLcom/google/firebase/FirebaseApp;->checkNotDeleted()V +HSPLcom/google/firebase/FirebaseApp;->get(Ljava/lang/Class;)Ljava/lang/Object; +HSPLcom/google/firebase/FirebaseApp;->getApplicationContext()Landroid/content/Context; +HSPLcom/google/firebase/FirebaseApp;->getInstance()Lcom/google/firebase/FirebaseApp; +HSPLcom/google/firebase/FirebaseApp;->getName()Ljava/lang/String; +HSPLcom/google/firebase/FirebaseApp;->getOptions()Lcom/google/firebase/FirebaseOptions; +HSPLcom/google/firebase/FirebaseApp;->getPersistenceKey()Ljava/lang/String; +HSPLcom/google/firebase/FirebaseApp;->initializeAllApis()V +HSPLcom/google/firebase/FirebaseApp;->initializeApp(Landroid/content/Context;)Lcom/google/firebase/FirebaseApp; +HSPLcom/google/firebase/FirebaseApp;->initializeApp(Landroid/content/Context;Lcom/google/firebase/FirebaseOptions;)Lcom/google/firebase/FirebaseApp; +HSPLcom/google/firebase/FirebaseApp;->initializeApp(Landroid/content/Context;Lcom/google/firebase/FirebaseOptions;Ljava/lang/String;)Lcom/google/firebase/FirebaseApp; +HSPLcom/google/firebase/FirebaseApp;->isDataCollectionDefaultEnabled()Z +HSPLcom/google/firebase/FirebaseApp;->isDefaultApp()Z +HSPLcom/google/firebase/FirebaseApp;->lambda$new$0$com-google-firebase-FirebaseApp(Landroid/content/Context;)Lcom/google/firebase/internal/DataCollectionConfigStorage; +HSPLcom/google/firebase/FirebaseApp;->normalize(Ljava/lang/String;)Ljava/lang/String; +Lcom/google/firebase/FirebaseApp$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/FirebaseApp$$ExternalSyntheticLambda0;->(Lcom/google/firebase/FirebaseApp;Landroid/content/Context;)V +HSPLcom/google/firebase/FirebaseApp$$ExternalSyntheticLambda0;->get()Ljava/lang/Object; +Lcom/google/firebase/FirebaseApp$$ExternalSyntheticLambda1; +HSPLcom/google/firebase/FirebaseApp$$ExternalSyntheticLambda1;->(Lcom/google/firebase/FirebaseApp;)V +Lcom/google/firebase/FirebaseApp$BackgroundStateChangeListener; +Lcom/google/firebase/FirebaseApp$GlobalBackgroundStateListener; +HSPLcom/google/firebase/FirebaseApp$GlobalBackgroundStateListener;->()V +HSPLcom/google/firebase/FirebaseApp$GlobalBackgroundStateListener;->()V +HSPLcom/google/firebase/FirebaseApp$GlobalBackgroundStateListener;->access$000(Landroid/content/Context;)V +HSPLcom/google/firebase/FirebaseApp$GlobalBackgroundStateListener;->ensureBackgroundStateListenerRegistered(Landroid/content/Context;)V +Lcom/google/firebase/FirebaseCommonKtxRegistrar; +HSPLcom/google/firebase/FirebaseCommonKtxRegistrar;->()V +HSPLcom/google/firebase/FirebaseCommonKtxRegistrar;->getComponents()Ljava/util/List; +Lcom/google/firebase/FirebaseCommonKtxRegistrar$getComponents$$inlined$coroutineDispatcher$1; +HSPLcom/google/firebase/FirebaseCommonKtxRegistrar$getComponents$$inlined$coroutineDispatcher$1;->()V +HSPLcom/google/firebase/FirebaseCommonKtxRegistrar$getComponents$$inlined$coroutineDispatcher$1;->()V +HSPLcom/google/firebase/FirebaseCommonKtxRegistrar$getComponents$$inlined$coroutineDispatcher$1;->create(Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +HSPLcom/google/firebase/FirebaseCommonKtxRegistrar$getComponents$$inlined$coroutineDispatcher$1;->create(Lcom/google/firebase/components/ComponentContainer;)Lkotlinx/coroutines/CoroutineDispatcher; +Lcom/google/firebase/FirebaseCommonKtxRegistrar$getComponents$$inlined$coroutineDispatcher$2; +HSPLcom/google/firebase/FirebaseCommonKtxRegistrar$getComponents$$inlined$coroutineDispatcher$2;->()V +HSPLcom/google/firebase/FirebaseCommonKtxRegistrar$getComponents$$inlined$coroutineDispatcher$2;->()V +Lcom/google/firebase/FirebaseCommonKtxRegistrar$getComponents$$inlined$coroutineDispatcher$3; +HSPLcom/google/firebase/FirebaseCommonKtxRegistrar$getComponents$$inlined$coroutineDispatcher$3;->()V +HSPLcom/google/firebase/FirebaseCommonKtxRegistrar$getComponents$$inlined$coroutineDispatcher$3;->()V +HSPLcom/google/firebase/FirebaseCommonKtxRegistrar$getComponents$$inlined$coroutineDispatcher$3;->create(Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +HSPLcom/google/firebase/FirebaseCommonKtxRegistrar$getComponents$$inlined$coroutineDispatcher$3;->create(Lcom/google/firebase/components/ComponentContainer;)Lkotlinx/coroutines/CoroutineDispatcher; +Lcom/google/firebase/FirebaseCommonKtxRegistrar$getComponents$$inlined$coroutineDispatcher$4; +HSPLcom/google/firebase/FirebaseCommonKtxRegistrar$getComponents$$inlined$coroutineDispatcher$4;->()V +HSPLcom/google/firebase/FirebaseCommonKtxRegistrar$getComponents$$inlined$coroutineDispatcher$4;->()V +Lcom/google/firebase/FirebaseCommonRegistrar; +HSPLcom/google/firebase/FirebaseCommonRegistrar;->()V +HSPLcom/google/firebase/FirebaseCommonRegistrar;->getComponents()Ljava/util/List; +HSPLcom/google/firebase/FirebaseCommonRegistrar;->lambda$getComponents$0(Landroid/content/Context;)Ljava/lang/String; +HSPLcom/google/firebase/FirebaseCommonRegistrar;->lambda$getComponents$1(Landroid/content/Context;)Ljava/lang/String; +HSPLcom/google/firebase/FirebaseCommonRegistrar;->lambda$getComponents$2(Landroid/content/Context;)Ljava/lang/String; +HSPLcom/google/firebase/FirebaseCommonRegistrar;->lambda$getComponents$3(Landroid/content/Context;)Ljava/lang/String; +HSPLcom/google/firebase/FirebaseCommonRegistrar;->safeValue(Ljava/lang/String;)Ljava/lang/String; +Lcom/google/firebase/FirebaseCommonRegistrar$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/FirebaseCommonRegistrar$$ExternalSyntheticLambda0;->()V +HSPLcom/google/firebase/FirebaseCommonRegistrar$$ExternalSyntheticLambda0;->extract(Ljava/lang/Object;)Ljava/lang/String; +Lcom/google/firebase/FirebaseCommonRegistrar$$ExternalSyntheticLambda1; +HSPLcom/google/firebase/FirebaseCommonRegistrar$$ExternalSyntheticLambda1;->()V +HSPLcom/google/firebase/FirebaseCommonRegistrar$$ExternalSyntheticLambda1;->extract(Ljava/lang/Object;)Ljava/lang/String; +Lcom/google/firebase/FirebaseCommonRegistrar$$ExternalSyntheticLambda2; +HSPLcom/google/firebase/FirebaseCommonRegistrar$$ExternalSyntheticLambda2;->()V +HSPLcom/google/firebase/FirebaseCommonRegistrar$$ExternalSyntheticLambda2;->extract(Ljava/lang/Object;)Ljava/lang/String; +Lcom/google/firebase/FirebaseCommonRegistrar$$ExternalSyntheticLambda3; +HSPLcom/google/firebase/FirebaseCommonRegistrar$$ExternalSyntheticLambda3;->()V +HSPLcom/google/firebase/FirebaseCommonRegistrar$$ExternalSyntheticLambda3;->extract(Ljava/lang/Object;)Ljava/lang/String; +Lcom/google/firebase/FirebaseException; +Lcom/google/firebase/FirebaseOptions; +HSPLcom/google/firebase/FirebaseOptions;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/google/firebase/FirebaseOptions;->fromResource(Landroid/content/Context;)Lcom/google/firebase/FirebaseOptions; +HSPLcom/google/firebase/FirebaseOptions;->getApplicationId()Ljava/lang/String; +Lcom/google/firebase/StartupTime; +HSPLcom/google/firebase/StartupTime;->()V +HSPLcom/google/firebase/StartupTime;->create(JJJ)Lcom/google/firebase/StartupTime; +HSPLcom/google/firebase/StartupTime;->now()Lcom/google/firebase/StartupTime; +Lcom/google/firebase/analytics/FirebaseAnalytics; +Lcom/google/firebase/analytics/connector/AnalyticsConnector; +Lcom/google/firebase/analytics/connector/AnalyticsConnector$AnalyticsConnectorHandle; +Lcom/google/firebase/analytics/connector/AnalyticsConnector$AnalyticsConnectorListener; +Lcom/google/firebase/analytics/connector/AnalyticsConnectorImpl; +HSPLcom/google/firebase/analytics/connector/AnalyticsConnectorImpl;->(Lcom/google/android/gms/measurement/api/AppMeasurementSdk;)V +HSPLcom/google/firebase/analytics/connector/AnalyticsConnectorImpl;->getInstance(Lcom/google/firebase/FirebaseApp;Landroid/content/Context;Lcom/google/firebase/events/Subscriber;)Lcom/google/firebase/analytics/connector/AnalyticsConnector; +HSPLcom/google/firebase/analytics/connector/AnalyticsConnectorImpl;->registerAnalyticsConnectorListener(Ljava/lang/String;Lcom/google/firebase/analytics/connector/AnalyticsConnector$AnalyticsConnectorListener;)Lcom/google/firebase/analytics/connector/AnalyticsConnector$AnalyticsConnectorHandle; +HSPLcom/google/firebase/analytics/connector/AnalyticsConnectorImpl;->zza(Ljava/lang/String;)Z +Lcom/google/firebase/analytics/connector/AnalyticsConnectorImpl$1; +HSPLcom/google/firebase/analytics/connector/AnalyticsConnectorImpl$1;->(Lcom/google/firebase/analytics/connector/AnalyticsConnectorImpl;Ljava/lang/String;)V +Lcom/google/firebase/analytics/connector/internal/AnalyticsConnectorRegistrar; +HSPLcom/google/firebase/analytics/connector/internal/AnalyticsConnectorRegistrar;->()V +HSPLcom/google/firebase/analytics/connector/internal/AnalyticsConnectorRegistrar;->getComponents()Ljava/util/List; +HSPLcom/google/firebase/analytics/connector/internal/AnalyticsConnectorRegistrar;->lambda$getComponents$0(Lcom/google/firebase/components/ComponentContainer;)Lcom/google/firebase/analytics/connector/AnalyticsConnector; +Lcom/google/firebase/analytics/connector/internal/zza; +Lcom/google/firebase/analytics/connector/internal/zzb; +HSPLcom/google/firebase/analytics/connector/internal/zzb;->()V +HSPLcom/google/firebase/analytics/connector/internal/zzb;->zzf(Ljava/lang/String;)Z +Lcom/google/firebase/analytics/connector/internal/zzc; +HSPLcom/google/firebase/analytics/connector/internal/zzc;->()V +HSPLcom/google/firebase/analytics/connector/internal/zzc;->()V +HSPLcom/google/firebase/analytics/connector/internal/zzc;->create(Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +Lcom/google/firebase/analytics/connector/internal/zzf; +HSPLcom/google/firebase/analytics/connector/internal/zzf;->(Lcom/google/firebase/analytics/connector/internal/zzg;)V +Lcom/google/firebase/analytics/connector/internal/zzg; +HSPLcom/google/firebase/analytics/connector/internal/zzg;->(Lcom/google/android/gms/measurement/api/AppMeasurementSdk;Lcom/google/firebase/analytics/connector/AnalyticsConnector$AnalyticsConnectorListener;)V +Lcom/google/firebase/analytics/connector/zza; +HSPLcom/google/firebase/analytics/connector/zza;->()V +HSPLcom/google/firebase/analytics/connector/zza;->()V +Lcom/google/firebase/analytics/connector/zzb; +HSPLcom/google/firebase/analytics/connector/zzb;->()V +HSPLcom/google/firebase/analytics/connector/zzb;->()V +Lcom/google/firebase/analytics/ktx/FirebaseAnalyticsLegacyRegistrar; +HSPLcom/google/firebase/analytics/ktx/FirebaseAnalyticsLegacyRegistrar;->()V +HSPLcom/google/firebase/analytics/ktx/FirebaseAnalyticsLegacyRegistrar;->getComponents()Ljava/util/List; +Lcom/google/firebase/annotations/concurrent/Background; +Lcom/google/firebase/annotations/concurrent/Blocking; +Lcom/google/firebase/annotations/concurrent/Lightweight; +Lcom/google/firebase/annotations/concurrent/UiThread; +Lcom/google/firebase/components/Component; +HSPLcom/google/firebase/components/Component;->(Ljava/lang/String;Ljava/util/Set;Ljava/util/Set;IILcom/google/firebase/components/ComponentFactory;Ljava/util/Set;)V +HSPLcom/google/firebase/components/Component;->(Ljava/lang/String;Ljava/util/Set;Ljava/util/Set;IILcom/google/firebase/components/ComponentFactory;Ljava/util/Set;Lcom/google/firebase/components/Component$1;)V +HSPLcom/google/firebase/components/Component;->builder(Lcom/google/firebase/components/Qualified;)Lcom/google/firebase/components/Component$Builder; +HSPLcom/google/firebase/components/Component;->builder(Lcom/google/firebase/components/Qualified;[Lcom/google/firebase/components/Qualified;)Lcom/google/firebase/components/Component$Builder; +HSPLcom/google/firebase/components/Component;->builder(Ljava/lang/Class;)Lcom/google/firebase/components/Component$Builder; +HSPLcom/google/firebase/components/Component;->builder(Ljava/lang/Class;[Ljava/lang/Class;)Lcom/google/firebase/components/Component$Builder; +HSPLcom/google/firebase/components/Component;->getDependencies()Ljava/util/Set; +HSPLcom/google/firebase/components/Component;->getFactory()Lcom/google/firebase/components/ComponentFactory; +HSPLcom/google/firebase/components/Component;->getName()Ljava/lang/String; +HSPLcom/google/firebase/components/Component;->getProvidedInterfaces()Ljava/util/Set; +HSPLcom/google/firebase/components/Component;->getPublishedEvents()Ljava/util/Set; +HSPLcom/google/firebase/components/Component;->intoSet(Ljava/lang/Object;Ljava/lang/Class;)Lcom/google/firebase/components/Component; +HSPLcom/google/firebase/components/Component;->intoSetBuilder(Ljava/lang/Class;)Lcom/google/firebase/components/Component$Builder; +HSPLcom/google/firebase/components/Component;->isAlwaysEager()Z +HSPLcom/google/firebase/components/Component;->isEagerInDefaultApp()Z +HSPLcom/google/firebase/components/Component;->isValue()Z +HSPLcom/google/firebase/components/Component;->lambda$intoSet$3(Ljava/lang/Object;Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +HSPLcom/google/firebase/components/Component;->lambda$of$1(Ljava/lang/Object;Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +HSPLcom/google/firebase/components/Component;->of(Ljava/lang/Object;Ljava/lang/Class;[Ljava/lang/Class;)Lcom/google/firebase/components/Component; +HSPLcom/google/firebase/components/Component;->withFactory(Lcom/google/firebase/components/ComponentFactory;)Lcom/google/firebase/components/Component; +Lcom/google/firebase/components/Component$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/components/Component$$ExternalSyntheticLambda0;->(Ljava/lang/Object;)V +HSPLcom/google/firebase/components/Component$$ExternalSyntheticLambda0;->create(Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +Lcom/google/firebase/components/Component$$ExternalSyntheticLambda1; +HSPLcom/google/firebase/components/Component$$ExternalSyntheticLambda1;->(Ljava/lang/Object;)V +HSPLcom/google/firebase/components/Component$$ExternalSyntheticLambda1;->create(Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +Lcom/google/firebase/components/Component$Builder; +HSPLcom/google/firebase/components/Component$Builder;->(Lcom/google/firebase/components/Qualified;[Lcom/google/firebase/components/Qualified;)V +HSPLcom/google/firebase/components/Component$Builder;->(Lcom/google/firebase/components/Qualified;[Lcom/google/firebase/components/Qualified;Lcom/google/firebase/components/Component$1;)V +HSPLcom/google/firebase/components/Component$Builder;->(Ljava/lang/Class;[Ljava/lang/Class;)V +HSPLcom/google/firebase/components/Component$Builder;->(Ljava/lang/Class;[Ljava/lang/Class;Lcom/google/firebase/components/Component$1;)V +HSPLcom/google/firebase/components/Component$Builder;->access$200(Lcom/google/firebase/components/Component$Builder;)Lcom/google/firebase/components/Component$Builder; +HSPLcom/google/firebase/components/Component$Builder;->add(Lcom/google/firebase/components/Dependency;)Lcom/google/firebase/components/Component$Builder; +HSPLcom/google/firebase/components/Component$Builder;->build()Lcom/google/firebase/components/Component; +HSPLcom/google/firebase/components/Component$Builder;->eagerInDefaultApp()Lcom/google/firebase/components/Component$Builder; +HSPLcom/google/firebase/components/Component$Builder;->factory(Lcom/google/firebase/components/ComponentFactory;)Lcom/google/firebase/components/Component$Builder; +HSPLcom/google/firebase/components/Component$Builder;->intoSet()Lcom/google/firebase/components/Component$Builder; +HSPLcom/google/firebase/components/Component$Builder;->name(Ljava/lang/String;)Lcom/google/firebase/components/Component$Builder; +HSPLcom/google/firebase/components/Component$Builder;->setInstantiation(I)Lcom/google/firebase/components/Component$Builder; +HSPLcom/google/firebase/components/Component$Builder;->validateInterface(Lcom/google/firebase/components/Qualified;)V +Lcom/google/firebase/components/ComponentContainer; +HSPLcom/google/firebase/components/ComponentContainer;->get(Lcom/google/firebase/components/Qualified;)Ljava/lang/Object; +HSPLcom/google/firebase/components/ComponentContainer;->get(Ljava/lang/Class;)Ljava/lang/Object; +HSPLcom/google/firebase/components/ComponentContainer;->getProvider(Ljava/lang/Class;)Lcom/google/firebase/inject/Provider; +HSPLcom/google/firebase/components/ComponentContainer;->setOf(Lcom/google/firebase/components/Qualified;)Ljava/util/Set; +HSPLcom/google/firebase/components/ComponentContainer;->setOf(Ljava/lang/Class;)Ljava/util/Set; +Lcom/google/firebase/components/ComponentDiscovery; +HSPLcom/google/firebase/components/ComponentDiscovery;->(Ljava/lang/Object;Lcom/google/firebase/components/ComponentDiscovery$RegistrarNameRetriever;)V +HSPLcom/google/firebase/components/ComponentDiscovery;->discoverLazy()Ljava/util/List; +HSPLcom/google/firebase/components/ComponentDiscovery;->forContext(Landroid/content/Context;Ljava/lang/Class;)Lcom/google/firebase/components/ComponentDiscovery; +HSPLcom/google/firebase/components/ComponentDiscovery;->instantiate(Ljava/lang/String;)Lcom/google/firebase/components/ComponentRegistrar; +HSPLcom/google/firebase/components/ComponentDiscovery;->lambda$discoverLazy$0(Ljava/lang/String;)Lcom/google/firebase/components/ComponentRegistrar; +Lcom/google/firebase/components/ComponentDiscovery$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/components/ComponentDiscovery$$ExternalSyntheticLambda0;->(Ljava/lang/String;)V +HSPLcom/google/firebase/components/ComponentDiscovery$$ExternalSyntheticLambda0;->get()Ljava/lang/Object; +Lcom/google/firebase/components/ComponentDiscovery$MetadataRegistrarNameRetriever; +HSPLcom/google/firebase/components/ComponentDiscovery$MetadataRegistrarNameRetriever;->(Ljava/lang/Class;)V +HSPLcom/google/firebase/components/ComponentDiscovery$MetadataRegistrarNameRetriever;->(Ljava/lang/Class;Lcom/google/firebase/components/ComponentDiscovery$1;)V +HSPLcom/google/firebase/components/ComponentDiscovery$MetadataRegistrarNameRetriever;->getMetadata(Landroid/content/Context;)Landroid/os/Bundle; +HSPLcom/google/firebase/components/ComponentDiscovery$MetadataRegistrarNameRetriever;->retrieve(Landroid/content/Context;)Ljava/util/List; +HSPLcom/google/firebase/components/ComponentDiscovery$MetadataRegistrarNameRetriever;->retrieve(Ljava/lang/Object;)Ljava/util/List; +Lcom/google/firebase/components/ComponentDiscovery$RegistrarNameRetriever; +Lcom/google/firebase/components/ComponentDiscoveryService; +Lcom/google/firebase/components/ComponentFactory; +Lcom/google/firebase/components/ComponentRegistrar; +Lcom/google/firebase/components/ComponentRegistrarProcessor; +HSPLcom/google/firebase/components/ComponentRegistrarProcessor;->()V +Lcom/google/firebase/components/ComponentRegistrarProcessor$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/components/ComponentRegistrarProcessor$$ExternalSyntheticLambda0;->()V +HSPLcom/google/firebase/components/ComponentRegistrarProcessor$$ExternalSyntheticLambda0;->processRegistrar(Lcom/google/firebase/components/ComponentRegistrar;)Ljava/util/List; +Lcom/google/firebase/components/ComponentRuntime; +HSPLcom/google/firebase/components/ComponentRuntime;->()V +HSPLcom/google/firebase/components/ComponentRuntime;->(Ljava/util/concurrent/Executor;Ljava/lang/Iterable;Ljava/util/Collection;Lcom/google/firebase/components/ComponentRegistrarProcessor;)V +HSPLcom/google/firebase/components/ComponentRuntime;->(Ljava/util/concurrent/Executor;Ljava/lang/Iterable;Ljava/util/Collection;Lcom/google/firebase/components/ComponentRegistrarProcessor;Lcom/google/firebase/components/ComponentRuntime$1;)V +HSPLcom/google/firebase/components/ComponentRuntime;->builder(Ljava/util/concurrent/Executor;)Lcom/google/firebase/components/ComponentRuntime$Builder; +HSPLcom/google/firebase/components/ComponentRuntime;->discoverComponents(Ljava/util/List;)V +HSPLcom/google/firebase/components/ComponentRuntime;->doInitializeEagerComponents(Ljava/util/Map;Z)V +HSPLcom/google/firebase/components/ComponentRuntime;->getDeferred(Lcom/google/firebase/components/Qualified;)Lcom/google/firebase/inject/Deferred; +HSPLcom/google/firebase/components/ComponentRuntime;->getProvider(Lcom/google/firebase/components/Qualified;)Lcom/google/firebase/inject/Provider; +HSPLcom/google/firebase/components/ComponentRuntime;->initializeEagerComponents(Z)V +HSPLcom/google/firebase/components/ComponentRuntime;->iterableToList(Ljava/lang/Iterable;)Ljava/util/List; +HSPLcom/google/firebase/components/ComponentRuntime;->lambda$discoverComponents$0$com-google-firebase-components-ComponentRuntime(Lcom/google/firebase/components/Component;)Ljava/lang/Object; +HSPLcom/google/firebase/components/ComponentRuntime;->maybeInitializeEagerComponents()V +HSPLcom/google/firebase/components/ComponentRuntime;->processDependencies()V +HSPLcom/google/firebase/components/ComponentRuntime;->processInstanceComponents(Ljava/util/List;)Ljava/util/List; +HSPLcom/google/firebase/components/ComponentRuntime;->processSetComponents()Ljava/util/List; +HSPLcom/google/firebase/components/ComponentRuntime;->setOfProvider(Lcom/google/firebase/components/Qualified;)Lcom/google/firebase/inject/Provider; +Lcom/google/firebase/components/ComponentRuntime$$ExternalSyntheticLambda1; +HSPLcom/google/firebase/components/ComponentRuntime$$ExternalSyntheticLambda1;->(Lcom/google/firebase/components/ComponentRuntime;Lcom/google/firebase/components/Component;)V +HSPLcom/google/firebase/components/ComponentRuntime$$ExternalSyntheticLambda1;->get()Ljava/lang/Object; +Lcom/google/firebase/components/ComponentRuntime$$ExternalSyntheticLambda4; +HSPLcom/google/firebase/components/ComponentRuntime$$ExternalSyntheticLambda4;->()V +Lcom/google/firebase/components/ComponentRuntime$Builder; +HSPLcom/google/firebase/components/ComponentRuntime$Builder;->(Ljava/util/concurrent/Executor;)V +HSPLcom/google/firebase/components/ComponentRuntime$Builder;->addComponent(Lcom/google/firebase/components/Component;)Lcom/google/firebase/components/ComponentRuntime$Builder; +HSPLcom/google/firebase/components/ComponentRuntime$Builder;->addComponentRegistrar(Lcom/google/firebase/components/ComponentRegistrar;)Lcom/google/firebase/components/ComponentRuntime$Builder; +HSPLcom/google/firebase/components/ComponentRuntime$Builder;->addLazyComponentRegistrars(Ljava/util/Collection;)Lcom/google/firebase/components/ComponentRuntime$Builder; +HSPLcom/google/firebase/components/ComponentRuntime$Builder;->build()Lcom/google/firebase/components/ComponentRuntime; +HSPLcom/google/firebase/components/ComponentRuntime$Builder;->lambda$addComponentRegistrar$0(Lcom/google/firebase/components/ComponentRegistrar;)Lcom/google/firebase/components/ComponentRegistrar; +HSPLcom/google/firebase/components/ComponentRuntime$Builder;->setProcessor(Lcom/google/firebase/components/ComponentRegistrarProcessor;)Lcom/google/firebase/components/ComponentRuntime$Builder; +Lcom/google/firebase/components/ComponentRuntime$Builder$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/components/ComponentRuntime$Builder$$ExternalSyntheticLambda0;->(Lcom/google/firebase/components/ComponentRegistrar;)V +HSPLcom/google/firebase/components/ComponentRuntime$Builder$$ExternalSyntheticLambda0;->get()Ljava/lang/Object; +Lcom/google/firebase/components/CycleDetector; +HSPLcom/google/firebase/components/CycleDetector;->detect(Ljava/util/List;)V +HSPLcom/google/firebase/components/CycleDetector;->getRoots(Ljava/util/Set;)Ljava/util/Set; +HSPLcom/google/firebase/components/CycleDetector;->toGraph(Ljava/util/List;)Ljava/util/Set; +Lcom/google/firebase/components/CycleDetector$ComponentNode; +HSPLcom/google/firebase/components/CycleDetector$ComponentNode;->(Lcom/google/firebase/components/Component;)V +HSPLcom/google/firebase/components/CycleDetector$ComponentNode;->addDependency(Lcom/google/firebase/components/CycleDetector$ComponentNode;)V +HSPLcom/google/firebase/components/CycleDetector$ComponentNode;->addDependent(Lcom/google/firebase/components/CycleDetector$ComponentNode;)V +HSPLcom/google/firebase/components/CycleDetector$ComponentNode;->getComponent()Lcom/google/firebase/components/Component; +HSPLcom/google/firebase/components/CycleDetector$ComponentNode;->getDependencies()Ljava/util/Set; +HSPLcom/google/firebase/components/CycleDetector$ComponentNode;->isRoot()Z +HSPLcom/google/firebase/components/CycleDetector$ComponentNode;->removeDependent(Lcom/google/firebase/components/CycleDetector$ComponentNode;)V +Lcom/google/firebase/components/CycleDetector$Dep; +HSPLcom/google/firebase/components/CycleDetector$Dep;->(Lcom/google/firebase/components/Qualified;Z)V +HSPLcom/google/firebase/components/CycleDetector$Dep;->(Lcom/google/firebase/components/Qualified;ZLcom/google/firebase/components/CycleDetector$1;)V +HSPLcom/google/firebase/components/CycleDetector$Dep;->access$100(Lcom/google/firebase/components/CycleDetector$Dep;)Z +HSPLcom/google/firebase/components/CycleDetector$Dep;->equals(Ljava/lang/Object;)Z +HSPLcom/google/firebase/components/CycleDetector$Dep;->hashCode()I +Lcom/google/firebase/components/Dependency; +HSPLcom/google/firebase/components/Dependency;->(Lcom/google/firebase/components/Qualified;II)V +HSPLcom/google/firebase/components/Dependency;->(Ljava/lang/Class;II)V +HSPLcom/google/firebase/components/Dependency;->deferred(Ljava/lang/Class;)Lcom/google/firebase/components/Dependency; +HSPLcom/google/firebase/components/Dependency;->getInterface()Lcom/google/firebase/components/Qualified; +HSPLcom/google/firebase/components/Dependency;->hashCode()I +HSPLcom/google/firebase/components/Dependency;->isDeferred()Z +HSPLcom/google/firebase/components/Dependency;->isDirectInjection()Z +HSPLcom/google/firebase/components/Dependency;->isRequired()Z +HSPLcom/google/firebase/components/Dependency;->isSet()Z +HSPLcom/google/firebase/components/Dependency;->optionalProvider(Ljava/lang/Class;)Lcom/google/firebase/components/Dependency; +HSPLcom/google/firebase/components/Dependency;->required(Lcom/google/firebase/components/Qualified;)Lcom/google/firebase/components/Dependency; +HSPLcom/google/firebase/components/Dependency;->required(Ljava/lang/Class;)Lcom/google/firebase/components/Dependency; +HSPLcom/google/firebase/components/Dependency;->requiredProvider(Lcom/google/firebase/components/Qualified;)Lcom/google/firebase/components/Dependency; +HSPLcom/google/firebase/components/Dependency;->requiredProvider(Ljava/lang/Class;)Lcom/google/firebase/components/Dependency; +HSPLcom/google/firebase/components/Dependency;->setOf(Ljava/lang/Class;)Lcom/google/firebase/components/Dependency; +Lcom/google/firebase/components/EventBus; +HSPLcom/google/firebase/components/EventBus;->(Ljava/util/concurrent/Executor;)V +HSPLcom/google/firebase/components/EventBus;->enablePublishingAndFlushPending()V +HSPLcom/google/firebase/components/EventBus;->subscribe(Ljava/lang/Class;Ljava/util/concurrent/Executor;Lcom/google/firebase/events/EventHandler;)V +Lcom/google/firebase/components/InvalidRegistrarException; +Lcom/google/firebase/components/Lazy; +HSPLcom/google/firebase/components/Lazy;->()V +HSPLcom/google/firebase/components/Lazy;->(Lcom/google/firebase/inject/Provider;)V +HSPLcom/google/firebase/components/Lazy;->get()Ljava/lang/Object; +Lcom/google/firebase/components/LazySet; +HSPLcom/google/firebase/components/LazySet;->(Ljava/util/Collection;)V +HSPLcom/google/firebase/components/LazySet;->fromCollection(Ljava/util/Collection;)Lcom/google/firebase/components/LazySet; +HSPLcom/google/firebase/components/LazySet;->get()Ljava/lang/Object; +HSPLcom/google/firebase/components/LazySet;->get()Ljava/util/Set; +HSPLcom/google/firebase/components/LazySet;->updateSet()V +Lcom/google/firebase/components/OptionalProvider; +HSPLcom/google/firebase/components/OptionalProvider;->()V +HSPLcom/google/firebase/components/OptionalProvider;->(Lcom/google/firebase/inject/Deferred$DeferredHandler;Lcom/google/firebase/inject/Provider;)V +HSPLcom/google/firebase/components/OptionalProvider;->empty()Lcom/google/firebase/components/OptionalProvider; +HSPLcom/google/firebase/components/OptionalProvider;->of(Lcom/google/firebase/inject/Provider;)Lcom/google/firebase/components/OptionalProvider; +HSPLcom/google/firebase/components/OptionalProvider;->whenAvailable(Lcom/google/firebase/inject/Deferred$DeferredHandler;)V +Lcom/google/firebase/components/OptionalProvider$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/components/OptionalProvider$$ExternalSyntheticLambda0;->()V +Lcom/google/firebase/components/OptionalProvider$$ExternalSyntheticLambda1; +HSPLcom/google/firebase/components/OptionalProvider$$ExternalSyntheticLambda1;->()V +Lcom/google/firebase/components/OptionalProvider$$ExternalSyntheticLambda2; +HSPLcom/google/firebase/components/OptionalProvider$$ExternalSyntheticLambda2;->(Lcom/google/firebase/inject/Deferred$DeferredHandler;Lcom/google/firebase/inject/Deferred$DeferredHandler;)V +Lcom/google/firebase/components/Preconditions; +HSPLcom/google/firebase/components/Preconditions;->checkArgument(ZLjava/lang/String;)V +HSPLcom/google/firebase/components/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/google/firebase/components/Preconditions;->checkNotNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; +HSPLcom/google/firebase/components/Preconditions;->checkState(ZLjava/lang/String;)V +Lcom/google/firebase/components/Qualified; +HSPLcom/google/firebase/components/Qualified;->(Ljava/lang/Class;Ljava/lang/Class;)V +HSPLcom/google/firebase/components/Qualified;->equals(Ljava/lang/Object;)Z +HSPLcom/google/firebase/components/Qualified;->hashCode()I +HSPLcom/google/firebase/components/Qualified;->qualified(Ljava/lang/Class;Ljava/lang/Class;)Lcom/google/firebase/components/Qualified; +HSPLcom/google/firebase/components/Qualified;->toString()Ljava/lang/String; +HSPLcom/google/firebase/components/Qualified;->unqualified(Ljava/lang/Class;)Lcom/google/firebase/components/Qualified; +Lcom/google/firebase/components/Qualified$Unqualified; +Lcom/google/firebase/components/RestrictedComponentContainer; +HSPLcom/google/firebase/components/RestrictedComponentContainer;->(Lcom/google/firebase/components/Component;Lcom/google/firebase/components/ComponentContainer;)V +HSPLcom/google/firebase/components/RestrictedComponentContainer;->get(Lcom/google/firebase/components/Qualified;)Ljava/lang/Object; +HSPLcom/google/firebase/components/RestrictedComponentContainer;->get(Ljava/lang/Class;)Ljava/lang/Object; +HSPLcom/google/firebase/components/RestrictedComponentContainer;->getDeferred(Lcom/google/firebase/components/Qualified;)Lcom/google/firebase/inject/Deferred; +HSPLcom/google/firebase/components/RestrictedComponentContainer;->getDeferred(Ljava/lang/Class;)Lcom/google/firebase/inject/Deferred; +HSPLcom/google/firebase/components/RestrictedComponentContainer;->getProvider(Lcom/google/firebase/components/Qualified;)Lcom/google/firebase/inject/Provider; +HSPLcom/google/firebase/components/RestrictedComponentContainer;->getProvider(Ljava/lang/Class;)Lcom/google/firebase/inject/Provider; +HSPLcom/google/firebase/components/RestrictedComponentContainer;->setOf(Lcom/google/firebase/components/Qualified;)Ljava/util/Set; +Lcom/google/firebase/concurrent/CustomThreadFactory; +HSPLcom/google/firebase/concurrent/CustomThreadFactory;->()V +HSPLcom/google/firebase/concurrent/CustomThreadFactory;->(Ljava/lang/String;ILandroid/os/StrictMode$ThreadPolicy;)V +HSPLcom/google/firebase/concurrent/CustomThreadFactory;->lambda$newThread$0$com-google-firebase-concurrent-CustomThreadFactory(Ljava/lang/Runnable;)V +HSPLcom/google/firebase/concurrent/CustomThreadFactory;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread; +Lcom/google/firebase/concurrent/CustomThreadFactory$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/concurrent/CustomThreadFactory$$ExternalSyntheticLambda0;->(Lcom/google/firebase/concurrent/CustomThreadFactory;Ljava/lang/Runnable;)V +HSPLcom/google/firebase/concurrent/CustomThreadFactory$$ExternalSyntheticLambda0;->run()V +Lcom/google/firebase/concurrent/DelegatingScheduledExecutorService; +HSPLcom/google/firebase/concurrent/DelegatingScheduledExecutorService;->(Ljava/util/concurrent/ExecutorService;Ljava/util/concurrent/ScheduledExecutorService;)V +HSPLcom/google/firebase/concurrent/DelegatingScheduledExecutorService;->execute(Ljava/lang/Runnable;)V +Lcom/google/firebase/concurrent/ExecutorsRegistrar; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar;->()V +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar;->()V +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar;->bgPolicy()Landroid/os/StrictMode$ThreadPolicy; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar;->factory(Ljava/lang/String;I)Ljava/util/concurrent/ThreadFactory; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar;->factory(Ljava/lang/String;ILandroid/os/StrictMode$ThreadPolicy;)Ljava/util/concurrent/ThreadFactory; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar;->getComponents()Ljava/util/List; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar;->lambda$getComponents$4(Lcom/google/firebase/components/ComponentContainer;)Ljava/util/concurrent/ScheduledExecutorService; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar;->lambda$getComponents$5(Lcom/google/firebase/components/ComponentContainer;)Ljava/util/concurrent/ScheduledExecutorService; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar;->lambda$static$0()Ljava/util/concurrent/ScheduledExecutorService; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar;->lambda$static$2()Ljava/util/concurrent/ScheduledExecutorService; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar;->lambda$static$3()Ljava/util/concurrent/ScheduledExecutorService; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar;->scheduled(Ljava/util/concurrent/ExecutorService;)Ljava/util/concurrent/ScheduledExecutorService; +Lcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda0;->()V +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda0;->create(Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +Lcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda1; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda1;->()V +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda1;->create(Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +Lcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda2; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda2;->()V +Lcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda3; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda3;->()V +Lcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda4; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda4;->()V +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda4;->get()Ljava/lang/Object; +Lcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda5; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda5;->()V +Lcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda6; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda6;->()V +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda6;->get()Ljava/lang/Object; +Lcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda7; +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda7;->()V +HSPLcom/google/firebase/concurrent/ExecutorsRegistrar$$ExternalSyntheticLambda7;->get()Ljava/lang/Object; +Lcom/google/firebase/concurrent/FirebaseExecutors; +HSPLcom/google/firebase/concurrent/FirebaseExecutors;->newSequentialExecutor(Ljava/util/concurrent/Executor;)Ljava/util/concurrent/Executor; +Lcom/google/firebase/concurrent/SequentialExecutor; +HSPLcom/google/firebase/concurrent/SequentialExecutor;->()V +HSPLcom/google/firebase/concurrent/SequentialExecutor;->(Ljava/util/concurrent/Executor;)V +Lcom/google/firebase/concurrent/SequentialExecutor$QueueWorker; +HSPLcom/google/firebase/concurrent/SequentialExecutor$QueueWorker;->(Lcom/google/firebase/concurrent/SequentialExecutor;)V +HSPLcom/google/firebase/concurrent/SequentialExecutor$QueueWorker;->(Lcom/google/firebase/concurrent/SequentialExecutor;Lcom/google/firebase/concurrent/SequentialExecutor$1;)V +Lcom/google/firebase/concurrent/SequentialExecutor$WorkerRunningState; +HSPLcom/google/firebase/concurrent/SequentialExecutor$WorkerRunningState;->()V +HSPLcom/google/firebase/concurrent/SequentialExecutor$WorkerRunningState;->(Ljava/lang/String;I)V +Lcom/google/firebase/concurrent/UiExecutor; +HSPLcom/google/firebase/concurrent/UiExecutor;->()V +HSPLcom/google/firebase/concurrent/UiExecutor;->(Ljava/lang/String;I)V +Lcom/google/firebase/crashlytics/AnalyticsDeferredProxy; +HSPLcom/google/firebase/crashlytics/AnalyticsDeferredProxy;->(Lcom/google/firebase/inject/Deferred;)V +HSPLcom/google/firebase/crashlytics/AnalyticsDeferredProxy;->(Lcom/google/firebase/inject/Deferred;Lcom/google/firebase/crashlytics/internal/breadcrumbs/BreadcrumbSource;Lcom/google/firebase/crashlytics/internal/analytics/AnalyticsEventLogger;)V +HSPLcom/google/firebase/crashlytics/AnalyticsDeferredProxy;->getAnalyticsEventLogger()Lcom/google/firebase/crashlytics/internal/analytics/AnalyticsEventLogger; +HSPLcom/google/firebase/crashlytics/AnalyticsDeferredProxy;->getDeferredBreadcrumbSource()Lcom/google/firebase/crashlytics/internal/breadcrumbs/BreadcrumbSource; +HSPLcom/google/firebase/crashlytics/AnalyticsDeferredProxy;->init()V +HSPLcom/google/firebase/crashlytics/AnalyticsDeferredProxy;->lambda$getDeferredBreadcrumbSource$0$com-google-firebase-crashlytics-AnalyticsDeferredProxy(Lcom/google/firebase/crashlytics/internal/breadcrumbs/BreadcrumbHandler;)V +HSPLcom/google/firebase/crashlytics/AnalyticsDeferredProxy;->lambda$init$2$com-google-firebase-crashlytics-AnalyticsDeferredProxy(Lcom/google/firebase/inject/Provider;)V +HSPLcom/google/firebase/crashlytics/AnalyticsDeferredProxy;->subscribeToAnalyticsEvents(Lcom/google/firebase/analytics/connector/AnalyticsConnector;Lcom/google/firebase/crashlytics/CrashlyticsAnalyticsListener;)Lcom/google/firebase/analytics/connector/AnalyticsConnector$AnalyticsConnectorHandle; +Lcom/google/firebase/crashlytics/AnalyticsDeferredProxy$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/crashlytics/AnalyticsDeferredProxy$$ExternalSyntheticLambda0;->(Lcom/google/firebase/crashlytics/AnalyticsDeferredProxy;)V +HSPLcom/google/firebase/crashlytics/AnalyticsDeferredProxy$$ExternalSyntheticLambda0;->registerBreadcrumbHandler(Lcom/google/firebase/crashlytics/internal/breadcrumbs/BreadcrumbHandler;)V +Lcom/google/firebase/crashlytics/AnalyticsDeferredProxy$$ExternalSyntheticLambda1; +HSPLcom/google/firebase/crashlytics/AnalyticsDeferredProxy$$ExternalSyntheticLambda1;->(Lcom/google/firebase/crashlytics/AnalyticsDeferredProxy;)V +Lcom/google/firebase/crashlytics/AnalyticsDeferredProxy$$ExternalSyntheticLambda2; +HSPLcom/google/firebase/crashlytics/AnalyticsDeferredProxy$$ExternalSyntheticLambda2;->(Lcom/google/firebase/crashlytics/AnalyticsDeferredProxy;)V +HSPLcom/google/firebase/crashlytics/AnalyticsDeferredProxy$$ExternalSyntheticLambda2;->handle(Lcom/google/firebase/inject/Provider;)V +Lcom/google/firebase/crashlytics/CrashlyticsAnalyticsListener; +HSPLcom/google/firebase/crashlytics/CrashlyticsAnalyticsListener;->()V +HSPLcom/google/firebase/crashlytics/CrashlyticsAnalyticsListener;->setBreadcrumbEventReceiver(Lcom/google/firebase/crashlytics/internal/analytics/AnalyticsEventReceiver;)V +HSPLcom/google/firebase/crashlytics/CrashlyticsAnalyticsListener;->setCrashlyticsOriginEventReceiver(Lcom/google/firebase/crashlytics/internal/analytics/AnalyticsEventReceiver;)V +Lcom/google/firebase/crashlytics/CrashlyticsRegistrar; +HSPLcom/google/firebase/crashlytics/CrashlyticsRegistrar;->$r8$lambda$Pfd5XmDCFzNyAT9o9H6rDnTBQE4(Lcom/google/firebase/crashlytics/CrashlyticsRegistrar;Lcom/google/firebase/components/ComponentContainer;)Lcom/google/firebase/crashlytics/FirebaseCrashlytics; +HSPLcom/google/firebase/crashlytics/CrashlyticsRegistrar;->()V +HSPLcom/google/firebase/crashlytics/CrashlyticsRegistrar;->()V +HSPLcom/google/firebase/crashlytics/CrashlyticsRegistrar;->buildCrashlytics(Lcom/google/firebase/components/ComponentContainer;)Lcom/google/firebase/crashlytics/FirebaseCrashlytics; +HSPLcom/google/firebase/crashlytics/CrashlyticsRegistrar;->getComponents()Ljava/util/List; +Lcom/google/firebase/crashlytics/CrashlyticsRegistrar$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/crashlytics/CrashlyticsRegistrar$$ExternalSyntheticLambda0;->(Lcom/google/firebase/crashlytics/CrashlyticsRegistrar;)V +HSPLcom/google/firebase/crashlytics/CrashlyticsRegistrar$$ExternalSyntheticLambda0;->create(Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +Lcom/google/firebase/crashlytics/FirebaseCrashlytics; +HSPLcom/google/firebase/crashlytics/FirebaseCrashlytics;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;)V +HSPLcom/google/firebase/crashlytics/FirebaseCrashlytics;->getInstance()Lcom/google/firebase/crashlytics/FirebaseCrashlytics; +HSPLcom/google/firebase/crashlytics/FirebaseCrashlytics;->init(Lcom/google/firebase/FirebaseApp;Lcom/google/firebase/installations/FirebaseInstallationsApi;Lcom/google/firebase/inject/Deferred;Lcom/google/firebase/inject/Deferred;Lcom/google/firebase/inject/Deferred;)Lcom/google/firebase/crashlytics/FirebaseCrashlytics; +HSPLcom/google/firebase/crashlytics/FirebaseCrashlytics;->log(Ljava/lang/String;)V +HSPLcom/google/firebase/crashlytics/FirebaseCrashlytics;->setCrashlyticsCollectionEnabled(Ljava/lang/Boolean;)V +Lcom/google/firebase/crashlytics/FirebaseCrashlytics$1; +HSPLcom/google/firebase/crashlytics/FirebaseCrashlytics$1;->()V +Lcom/google/firebase/crashlytics/FirebaseCrashlytics$2; +HSPLcom/google/firebase/crashlytics/FirebaseCrashlytics$2;->(ZLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;Lcom/google/firebase/crashlytics/internal/settings/SettingsController;)V +HSPLcom/google/firebase/crashlytics/FirebaseCrashlytics$2;->call()Ljava/lang/Object; +HSPLcom/google/firebase/crashlytics/FirebaseCrashlytics$2;->call()Ljava/lang/Void; +Lcom/google/firebase/crashlytics/FirebaseCrashlyticsKtxRegistrar; +HSPLcom/google/firebase/crashlytics/FirebaseCrashlyticsKtxRegistrar;->()V +HSPLcom/google/firebase/crashlytics/FirebaseCrashlyticsKtxRegistrar;->()V +HSPLcom/google/firebase/crashlytics/FirebaseCrashlyticsKtxRegistrar;->getComponents()Ljava/util/List; +Lcom/google/firebase/crashlytics/FirebaseCrashlyticsKtxRegistrar$Companion; +HSPLcom/google/firebase/crashlytics/FirebaseCrashlyticsKtxRegistrar$Companion;->()V +HSPLcom/google/firebase/crashlytics/FirebaseCrashlyticsKtxRegistrar$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/google/firebase/crashlytics/IsEnabledKt; +HSPLcom/google/firebase/crashlytics/IsEnabledKt;->()V +HSPLcom/google/firebase/crashlytics/IsEnabledKt;->isEnabled(Lcom/google/firebase/crashlytics/FirebaseCrashlytics;)Ljava/lang/Boolean; +HSPLcom/google/firebase/crashlytics/IsEnabledKt;->setEnabled(Lcom/google/firebase/crashlytics/FirebaseCrashlytics;Ljava/lang/Boolean;)V +Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponent; +Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponentDeferredProxy; +HSPLcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponentDeferredProxy;->()V +HSPLcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponentDeferredProxy;->(Lcom/google/firebase/inject/Deferred;)V +HSPLcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponentDeferredProxy;->hasCrashDataForSession(Ljava/lang/String;)Z +HSPLcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponentDeferredProxy;->prepareNativeSession(Ljava/lang/String;Ljava/lang/String;JLcom/google/firebase/crashlytics/internal/model/StaticSessionData;)V +Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponentDeferredProxy$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponentDeferredProxy$$ExternalSyntheticLambda0;->(Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponentDeferredProxy;)V +Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponentDeferredProxy$$ExternalSyntheticLambda1; +HSPLcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponentDeferredProxy$$ExternalSyntheticLambda1;->(Ljava/lang/String;Ljava/lang/String;JLcom/google/firebase/crashlytics/internal/model/StaticSessionData;)V +Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponentDeferredProxy$MissingNativeSessionFileProvider; +HSPLcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponentDeferredProxy$MissingNativeSessionFileProvider;->()V +HSPLcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponentDeferredProxy$MissingNativeSessionFileProvider;->(Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponentDeferredProxy$1;)V +Lcom/google/firebase/crashlytics/internal/CrashlyticsRemoteConfigListener; +HSPLcom/google/firebase/crashlytics/internal/CrashlyticsRemoteConfigListener;->(Lcom/google/firebase/crashlytics/internal/metadata/UserMetadata;)V +Lcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider; +HSPLcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider;->(Landroid/content/Context;)V +HSPLcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider;->access$300(Lcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider;)Landroid/content/Context; +HSPLcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider;->access$400(Lcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider;Ljava/lang/String;)Z +HSPLcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider;->assetFileExists(Ljava/lang/String;)Z +HSPLcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider;->getDevelopmentPlatform()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider;->getDevelopmentPlatformVersion()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider;->initDevelopmentPlatform()Lcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider$DevelopmentPlatform; +Lcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider$DevelopmentPlatform; +HSPLcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider$DevelopmentPlatform;->(Lcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider;)V +HSPLcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider$DevelopmentPlatform;->(Lcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider;Lcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider$1;)V +HSPLcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider$DevelopmentPlatform;->access$000(Lcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider$DevelopmentPlatform;)Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider$DevelopmentPlatform;->access$100(Lcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider$DevelopmentPlatform;)Ljava/lang/String; +Lcom/google/firebase/crashlytics/internal/Logger; +HSPLcom/google/firebase/crashlytics/internal/Logger;->()V +HSPLcom/google/firebase/crashlytics/internal/Logger;->(Ljava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/Logger;->canLog(I)Z +HSPLcom/google/firebase/crashlytics/internal/Logger;->d(Ljava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/Logger;->d(Ljava/lang/String;Ljava/lang/Throwable;)V +HSPLcom/google/firebase/crashlytics/internal/Logger;->getLogger()Lcom/google/firebase/crashlytics/internal/Logger; +HSPLcom/google/firebase/crashlytics/internal/Logger;->i(Ljava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/Logger;->i(Ljava/lang/String;Ljava/lang/Throwable;)V +HSPLcom/google/firebase/crashlytics/internal/Logger;->v(Ljava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/Logger;->v(Ljava/lang/String;Ljava/lang/Throwable;)V +Lcom/google/firebase/crashlytics/internal/NativeSessionFileProvider; +Lcom/google/firebase/crashlytics/internal/ProcessDetailsProvider; +HSPLcom/google/firebase/crashlytics/internal/ProcessDetailsProvider;->()V +HSPLcom/google/firebase/crashlytics/internal/ProcessDetailsProvider;->()V +Lcom/google/firebase/crashlytics/internal/RemoteConfigDeferredProxy; +HSPLcom/google/firebase/crashlytics/internal/RemoteConfigDeferredProxy;->(Lcom/google/firebase/inject/Deferred;)V +HSPLcom/google/firebase/crashlytics/internal/RemoteConfigDeferredProxy;->setupListener(Lcom/google/firebase/crashlytics/internal/metadata/UserMetadata;)V +Lcom/google/firebase/crashlytics/internal/RemoteConfigDeferredProxy$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/crashlytics/internal/RemoteConfigDeferredProxy$$ExternalSyntheticLambda0;->(Lcom/google/firebase/crashlytics/internal/CrashlyticsRemoteConfigListener;)V +Lcom/google/firebase/crashlytics/internal/analytics/AnalyticsEventLogger; +Lcom/google/firebase/crashlytics/internal/analytics/AnalyticsEventReceiver; +Lcom/google/firebase/crashlytics/internal/analytics/BlockingAnalyticsEventLogger; +HSPLcom/google/firebase/crashlytics/internal/analytics/BlockingAnalyticsEventLogger;->(Lcom/google/firebase/crashlytics/internal/analytics/CrashlyticsOriginAnalyticsEventLogger;ILjava/util/concurrent/TimeUnit;)V +Lcom/google/firebase/crashlytics/internal/analytics/BreadcrumbAnalyticsEventReceiver; +HSPLcom/google/firebase/crashlytics/internal/analytics/BreadcrumbAnalyticsEventReceiver;->()V +HSPLcom/google/firebase/crashlytics/internal/analytics/BreadcrumbAnalyticsEventReceiver;->registerBreadcrumbHandler(Lcom/google/firebase/crashlytics/internal/breadcrumbs/BreadcrumbHandler;)V +Lcom/google/firebase/crashlytics/internal/analytics/CrashlyticsOriginAnalyticsEventLogger; +HSPLcom/google/firebase/crashlytics/internal/analytics/CrashlyticsOriginAnalyticsEventLogger;->(Lcom/google/firebase/analytics/connector/AnalyticsConnector;)V +Lcom/google/firebase/crashlytics/internal/analytics/UnavailableAnalyticsEventLogger; +HSPLcom/google/firebase/crashlytics/internal/analytics/UnavailableAnalyticsEventLogger;->()V +Lcom/google/firebase/crashlytics/internal/breadcrumbs/BreadcrumbHandler; +Lcom/google/firebase/crashlytics/internal/breadcrumbs/BreadcrumbSource; +Lcom/google/firebase/crashlytics/internal/breadcrumbs/DisabledBreadcrumbSource; +HSPLcom/google/firebase/crashlytics/internal/breadcrumbs/DisabledBreadcrumbSource;->()V +Lcom/google/firebase/crashlytics/internal/common/AppData; +HSPLcom/google/firebase/crashlytics/internal/common/AppData;->(Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider;)V +HSPLcom/google/firebase/crashlytics/internal/common/AppData;->create(Landroid/content/Context;Lcom/google/firebase/crashlytics/internal/common/IdManager;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider;)Lcom/google/firebase/crashlytics/internal/common/AppData; +HSPLcom/google/firebase/crashlytics/internal/common/AppData;->getAppBuildVersion(Landroid/content/pm/PackageInfo;)Ljava/lang/String; +Lcom/google/firebase/crashlytics/internal/common/AutoValue_InstallIdProvider_InstallIds; +HSPLcom/google/firebase/crashlytics/internal/common/AutoValue_InstallIdProvider_InstallIds;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/common/AutoValue_InstallIdProvider_InstallIds;->getCrashlyticsInstallId()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/AutoValue_InstallIdProvider_InstallIds;->getFirebaseInstallationId()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/AutoValue_InstallIdProvider_InstallIds;->toString()Ljava/lang/String; +Lcom/google/firebase/crashlytics/internal/common/BackgroundPriorityRunnable; +HSPLcom/google/firebase/crashlytics/internal/common/BackgroundPriorityRunnable;->()V +HSPLcom/google/firebase/crashlytics/internal/common/BackgroundPriorityRunnable;->run()V +Lcom/google/firebase/crashlytics/internal/common/CLSUUID; +HSPLcom/google/firebase/crashlytics/internal/common/CLSUUID;->()V +HSPLcom/google/firebase/crashlytics/internal/common/CLSUUID;->(Lcom/google/firebase/crashlytics/internal/common/IdManager;)V +HSPLcom/google/firebase/crashlytics/internal/common/CLSUUID;->convertLongToFourByteBuffer(J)[B +HSPLcom/google/firebase/crashlytics/internal/common/CLSUUID;->convertLongToTwoByteBuffer(J)[B +HSPLcom/google/firebase/crashlytics/internal/common/CLSUUID;->populatePID([B)V +HSPLcom/google/firebase/crashlytics/internal/common/CLSUUID;->populateSequenceNumber([B)V +HSPLcom/google/firebase/crashlytics/internal/common/CLSUUID;->populateTime([B)V +HSPLcom/google/firebase/crashlytics/internal/common/CLSUUID;->toString()Ljava/lang/String; +Lcom/google/firebase/crashlytics/internal/common/CommonUtils; +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->()V +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->calculateTotalRamInBytes(Landroid/content/Context;)J +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->closeOrLog(Ljava/io/Closeable;Ljava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->createInstanceIdFrom([Ljava/lang/String;)Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->getBooleanResourceValue(Landroid/content/Context;Ljava/lang/String;Z)Z +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->getBuildIdInfo(Landroid/content/Context;)Ljava/util/List; +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->getCpuArchitectureInt()I +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->getDeviceState()I +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->getMappingFileId(Landroid/content/Context;)Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->getResourcePackageName(Landroid/content/Context;)Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->getResourcesIdentifier(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)I +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->getSharedPrefs(Landroid/content/Context;)Landroid/content/SharedPreferences; +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->hash(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->hash([BLjava/lang/String;)Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->hexify([B)Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->isDebuggerAttached()Z +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->isEmulator()Z +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->isRooted()Z +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils;->sha1(Ljava/lang/String;)Ljava/lang/String; +Lcom/google/firebase/crashlytics/internal/common/CommonUtils$Architecture; +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils$Architecture;->()V +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils$Architecture;->(Ljava/lang/String;I)V +HSPLcom/google/firebase/crashlytics/internal/common/CommonUtils$Architecture;->getValue()Lcom/google/firebase/crashlytics/internal/common/CommonUtils$Architecture; +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsStore; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsStore;->()V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsStore;->(Lcom/google/firebase/crashlytics/internal/persistence/FileStore;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsStore;->persist(Lcom/google/firebase/crashlytics/internal/persistence/FileStore;Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsStore;->rotateSessionId(Ljava/lang/String;)V +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsStore$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsStore$$ExternalSyntheticLambda0;->()V +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsStore$$ExternalSyntheticLambda1; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsStore$$ExternalSyntheticLambda1;->()V +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsSubscriber; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsSubscriber;->(Lcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;Lcom/google/firebase/crashlytics/internal/persistence/FileStore;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsSubscriber;->getSessionSubscriberName()Lcom/google/firebase/sessions/api/SessionSubscriber$Name; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsSubscriber;->isDataCollectionEnabled()Z +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsSubscriber;->setSessionId(Ljava/lang/String;)V +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;->(Ljava/util/concurrent/Executor;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;->access$000(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;)Ljava/lang/ThreadLocal; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;->checkRunningOnThread()V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;->ignoreResult(Lcom/google/android/gms/tasks/Task;)Lcom/google/android/gms/tasks/Task; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;->isRunningOnThread()Z +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;->newContinuation(Ljava/util/concurrent/Callable;)Lcom/google/android/gms/tasks/Continuation; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;->submit(Ljava/util/concurrent/Callable;)Lcom/google/android/gms/tasks/Task; +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker$1; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker$1;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker$1;->run()V +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker$3; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker$3;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;Ljava/util/concurrent/Callable;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker$3;->then(Lcom/google/android/gms/tasks/Task;)Ljava/lang/Object; +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker$4; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker$4;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker$4;->then(Lcom/google/android/gms/tasks/Task;)Ljava/lang/Object; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker$4;->then(Lcom/google/android/gms/tasks/Task;)Ljava/lang/Void; +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->()V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->(Landroid/content/Context;Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;Lcom/google/firebase/crashlytics/internal/common/IdManager;Lcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;Lcom/google/firebase/crashlytics/internal/persistence/FileStore;Lcom/google/firebase/crashlytics/internal/common/CrashlyticsFileMarker;Lcom/google/firebase/crashlytics/internal/common/AppData;Lcom/google/firebase/crashlytics/internal/metadata/UserMetadata;Lcom/google/firebase/crashlytics/internal/metadata/LogFileManager;Lcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator;Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponent;Lcom/google/firebase/crashlytics/internal/analytics/AnalyticsEventLogger;Lcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsSubscriber;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->access$1100(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;)Lcom/google/firebase/crashlytics/internal/metadata/LogFileManager; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->access$600(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;Ljava/lang/String;Ljava/lang/Boolean;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->createAppData(Lcom/google/firebase/crashlytics/internal/common/IdManager;Lcom/google/firebase/crashlytics/internal/common/AppData;)Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$AppData; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->createDeviceData(Landroid/content/Context;)Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$DeviceData; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->createOsData()Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$OsData; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->didCrashOnPreviousExecution()Z +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->doCloseSessions(ZLcom/google/firebase/crashlytics/internal/settings/SettingsProvider;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->doOpenSession(Ljava/lang/String;Ljava/lang/Boolean;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->enableExceptionHandling(Ljava/lang/String;Ljava/lang/Thread$UncaughtExceptionHandler;Lcom/google/firebase/crashlytics/internal/settings/SettingsProvider;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->finalizeSessions(Lcom/google/firebase/crashlytics/internal/settings/SettingsProvider;)Z +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->getCurrentSessionId()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->getCurrentTimestampSeconds()J +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->getResourceAsStream(Ljava/lang/String;)Ljava/io/InputStream; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->getTimestampSeconds(J)J +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->getVersionControlInfo()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->isHandlingException()Z +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->openSession(Ljava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->saveVersionControlInfo()V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->submitAllReports(Lcom/google/android/gms/tasks/Task;)Lcom/google/android/gms/tasks/Task; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->writeToLog(JLjava/lang/String;)V +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController$$ExternalSyntheticLambda0;->()V +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController$1; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController$1;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;)V +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController$5; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController$5;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;JLjava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController$5;->call()Ljava/lang/Object; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController$5;->call()Ljava/lang/Void; +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController$7; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController$7;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;Ljava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController$7;->call()Ljava/lang/Object; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsController$7;->call()Ljava/lang/Void; +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsCore; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;->(Lcom/google/firebase/FirebaseApp;Lcom/google/firebase/crashlytics/internal/common/IdManager;Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponent;Lcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;Lcom/google/firebase/crashlytics/internal/breadcrumbs/BreadcrumbSource;Lcom/google/firebase/crashlytics/internal/analytics/AnalyticsEventLogger;Lcom/google/firebase/crashlytics/internal/persistence/FileStore;Ljava/util/concurrent/ExecutorService;Lcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsSubscriber;Lcom/google/firebase/crashlytics/internal/RemoteConfigDeferredProxy;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;->access$000(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;Lcom/google/firebase/crashlytics/internal/settings/SettingsProvider;)Lcom/google/android/gms/tasks/Task; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;->access$100(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;)Lcom/google/firebase/crashlytics/internal/common/CrashlyticsFileMarker; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;->access$200(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;)Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;->checkForPreviousCrash()V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;->didPreviousInitializationFail()Z +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;->doBackgroundInitialization(Lcom/google/firebase/crashlytics/internal/settings/SettingsProvider;)Lcom/google/android/gms/tasks/Task; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;->doBackgroundInitializationAsync(Lcom/google/firebase/crashlytics/internal/settings/SettingsProvider;)Lcom/google/android/gms/tasks/Task; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;->getVersion()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;->isBuildIdValid(Ljava/lang/String;Z)Z +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;->log(Ljava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;->markInitializationComplete()V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;->markInitializationStarted()V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;->onPreExecute(Lcom/google/firebase/crashlytics/internal/common/AppData;Lcom/google/firebase/crashlytics/internal/settings/SettingsProvider;)Z +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;->setCrashlyticsCollectionEnabled(Ljava/lang/Boolean;)V +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsCore$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore$$ExternalSyntheticLambda0;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;)V +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsCore$1; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore$1;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;Lcom/google/firebase/crashlytics/internal/settings/SettingsProvider;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore$1;->call()Lcom/google/android/gms/tasks/Task; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore$1;->call()Ljava/lang/Object; +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsCore$3; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore$3;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore$3;->call()Ljava/lang/Boolean; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore$3;->call()Ljava/lang/Object; +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsCore$4; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore$4;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore$4;->call()Ljava/lang/Boolean; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsCore$4;->call()Ljava/lang/Object; +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsFileMarker; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsFileMarker;->(Ljava/lang/String;Lcom/google/firebase/crashlytics/internal/persistence/FileStore;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsFileMarker;->create()Z +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsFileMarker;->getMarkerFile()Ljava/io/File; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsFileMarker;->isPresent()Z +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsFileMarker;->remove()Z +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsLifecycleEvents; +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsReportDataCapture; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsReportDataCapture;->()V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsReportDataCapture;->(Landroid/content/Context;Lcom/google/firebase/crashlytics/internal/common/IdManager;Lcom/google/firebase/crashlytics/internal/common/AppData;Lcom/google/firebase/crashlytics/internal/stacktrace/StackTraceTrimmingStrategy;Lcom/google/firebase/crashlytics/internal/settings/SettingsProvider;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsReportDataCapture;->buildReportData()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Builder; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsReportDataCapture;->captureReportData(Ljava/lang/String;J)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsReportDataCapture;->getDeviceArchitecture()I +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsReportDataCapture;->populateSessionApplicationData()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsReportDataCapture;->populateSessionData(Ljava/lang/String;J)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsReportDataCapture;->populateSessionDeviceData()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsReportDataCapture;->populateSessionOperatingSystemData()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem; +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsUncaughtExceptionHandler; +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsUncaughtExceptionHandler;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsUncaughtExceptionHandler$CrashListener;Lcom/google/firebase/crashlytics/internal/settings/SettingsProvider;Ljava/lang/Thread$UncaughtExceptionHandler;Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponent;)V +HSPLcom/google/firebase/crashlytics/internal/common/CrashlyticsUncaughtExceptionHandler;->isHandlingException()Z +Lcom/google/firebase/crashlytics/internal/common/CrashlyticsUncaughtExceptionHandler$CrashListener; +Lcom/google/firebase/crashlytics/internal/common/CurrentTimeProvider; +Lcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter; +HSPLcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;->(Lcom/google/firebase/FirebaseApp;)V +HSPLcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;->getDataCollectionValueFromManifest(Landroid/content/Context;)Ljava/lang/Boolean; +HSPLcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;->getDataCollectionValueFromSharedPreferences()Ljava/lang/Boolean; +HSPLcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;->isAutomaticDataCollectionEnabled()Z +HSPLcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;->logDataCollectionState(Z)V +HSPLcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;->readCrashlyticsDataCollectionEnabledFromManifest(Landroid/content/Context;)Ljava/lang/Boolean; +HSPLcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;->setCrashlyticsDataCollectionEnabled(Ljava/lang/Boolean;)V +HSPLcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;->storeDataCollectionValueInSharedPreferences(Landroid/content/SharedPreferences;Ljava/lang/Boolean;)V +HSPLcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;->waitForAutomaticDataCollectionEnabled()Lcom/google/android/gms/tasks/Task; +HSPLcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;->waitForDataCollectionPermission(Ljava/util/concurrent/Executor;)Lcom/google/android/gms/tasks/Task; +Lcom/google/firebase/crashlytics/internal/common/DeliveryMechanism; +HSPLcom/google/firebase/crashlytics/internal/common/DeliveryMechanism;->()V +HSPLcom/google/firebase/crashlytics/internal/common/DeliveryMechanism;->(Ljava/lang/String;II)V +HSPLcom/google/firebase/crashlytics/internal/common/DeliveryMechanism;->determineFrom(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/common/DeliveryMechanism; +HSPLcom/google/firebase/crashlytics/internal/common/DeliveryMechanism;->getId()I +Lcom/google/firebase/crashlytics/internal/common/ExecutorUtils; +HSPLcom/google/firebase/crashlytics/internal/common/ExecutorUtils;->addDelayedShutdownHook(Ljava/lang/String;Ljava/util/concurrent/ExecutorService;)V +HSPLcom/google/firebase/crashlytics/internal/common/ExecutorUtils;->addDelayedShutdownHook(Ljava/lang/String;Ljava/util/concurrent/ExecutorService;JLjava/util/concurrent/TimeUnit;)V +HSPLcom/google/firebase/crashlytics/internal/common/ExecutorUtils;->buildSingleThreadExecutorService(Ljava/lang/String;)Ljava/util/concurrent/ExecutorService; +HSPLcom/google/firebase/crashlytics/internal/common/ExecutorUtils;->getNamedThreadFactory(Ljava/lang/String;)Ljava/util/concurrent/ThreadFactory; +HSPLcom/google/firebase/crashlytics/internal/common/ExecutorUtils;->newSingleThreadExecutor(Ljava/util/concurrent/ThreadFactory;Ljava/util/concurrent/RejectedExecutionHandler;)Ljava/util/concurrent/ExecutorService; +Lcom/google/firebase/crashlytics/internal/common/ExecutorUtils$1; +HSPLcom/google/firebase/crashlytics/internal/common/ExecutorUtils$1;->(Ljava/lang/String;Ljava/util/concurrent/atomic/AtomicLong;)V +HSPLcom/google/firebase/crashlytics/internal/common/ExecutorUtils$1;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread; +Lcom/google/firebase/crashlytics/internal/common/ExecutorUtils$1$1; +HSPLcom/google/firebase/crashlytics/internal/common/ExecutorUtils$1$1;->(Lcom/google/firebase/crashlytics/internal/common/ExecutorUtils$1;Ljava/lang/Runnable;)V +HSPLcom/google/firebase/crashlytics/internal/common/ExecutorUtils$1$1;->onRun()V +Lcom/google/firebase/crashlytics/internal/common/ExecutorUtils$2; +HSPLcom/google/firebase/crashlytics/internal/common/ExecutorUtils$2;->(Ljava/lang/String;Ljava/util/concurrent/ExecutorService;JLjava/util/concurrent/TimeUnit;)V +Lcom/google/firebase/crashlytics/internal/common/IdManager; +HSPLcom/google/firebase/crashlytics/internal/common/IdManager;->()V +HSPLcom/google/firebase/crashlytics/internal/common/IdManager;->(Landroid/content/Context;Ljava/lang/String;Lcom/google/firebase/installations/FirebaseInstallationsApi;Lcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;)V +HSPLcom/google/firebase/crashlytics/internal/common/IdManager;->getAppIdentifier()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/IdManager;->getInstallIds()Lcom/google/firebase/crashlytics/internal/common/InstallIdProvider$InstallIds; +HSPLcom/google/firebase/crashlytics/internal/common/IdManager;->getInstallerPackageName()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/IdManager;->getModelName()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/IdManager;->getOsBuildVersionString()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/IdManager;->getOsDisplayVersionString()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/IdManager;->isSyntheticFid(Ljava/lang/String;)Z +HSPLcom/google/firebase/crashlytics/internal/common/IdManager;->readCachedCrashlyticsInstallId(Landroid/content/SharedPreferences;)Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/IdManager;->removeForwardSlashesIn(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/IdManager;->shouldRefresh()Z +Lcom/google/firebase/crashlytics/internal/common/InstallIdProvider; +Lcom/google/firebase/crashlytics/internal/common/InstallIdProvider$InstallIds; +HSPLcom/google/firebase/crashlytics/internal/common/InstallIdProvider$InstallIds;->()V +HSPLcom/google/firebase/crashlytics/internal/common/InstallIdProvider$InstallIds;->create(Ljava/lang/String;Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/common/InstallIdProvider$InstallIds; +HSPLcom/google/firebase/crashlytics/internal/common/InstallIdProvider$InstallIds;->createWithoutFid(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/common/InstallIdProvider$InstallIds; +Lcom/google/firebase/crashlytics/internal/common/InstallerPackageNameProvider; +HSPLcom/google/firebase/crashlytics/internal/common/InstallerPackageNameProvider;->()V +HSPLcom/google/firebase/crashlytics/internal/common/InstallerPackageNameProvider;->getInstallerPackageName(Landroid/content/Context;)Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/common/InstallerPackageNameProvider;->loadInstallerPackageName(Landroid/content/Context;)Ljava/lang/String; +Lcom/google/firebase/crashlytics/internal/common/OnDemandCounter; +HSPLcom/google/firebase/crashlytics/internal/common/OnDemandCounter;->()V +Lcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator; +HSPLcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsReportDataCapture;Lcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence;Lcom/google/firebase/crashlytics/internal/send/DataTransportCrashlyticsReportSender;Lcom/google/firebase/crashlytics/internal/metadata/LogFileManager;Lcom/google/firebase/crashlytics/internal/metadata/UserMetadata;Lcom/google/firebase/crashlytics/internal/common/IdManager;)V +HSPLcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator;->create(Landroid/content/Context;Lcom/google/firebase/crashlytics/internal/common/IdManager;Lcom/google/firebase/crashlytics/internal/persistence/FileStore;Lcom/google/firebase/crashlytics/internal/common/AppData;Lcom/google/firebase/crashlytics/internal/metadata/LogFileManager;Lcom/google/firebase/crashlytics/internal/metadata/UserMetadata;Lcom/google/firebase/crashlytics/internal/stacktrace/StackTraceTrimmingStrategy;Lcom/google/firebase/crashlytics/internal/settings/SettingsProvider;Lcom/google/firebase/crashlytics/internal/common/OnDemandCounter;Lcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsSubscriber;)Lcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator; +HSPLcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator;->finalizeSessions(JLjava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator;->hasReportsToSend()Z +HSPLcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator;->listSortedOpenSessionIds()Ljava/util/SortedSet; +HSPLcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator;->onBeginSession(Ljava/lang/String;J)V +Lcom/google/firebase/crashlytics/internal/common/SystemCurrentTimeProvider; +HSPLcom/google/firebase/crashlytics/internal/common/SystemCurrentTimeProvider;->()V +HSPLcom/google/firebase/crashlytics/internal/common/SystemCurrentTimeProvider;->getCurrentTimeMillis()J +Lcom/google/firebase/crashlytics/internal/common/Utils; +HSPLcom/google/firebase/crashlytics/internal/common/Utils;->()V +HSPLcom/google/firebase/crashlytics/internal/common/Utils;->awaitEvenIfOnMainThread(Lcom/google/android/gms/tasks/Task;)Ljava/lang/Object; +HSPLcom/google/firebase/crashlytics/internal/common/Utils;->callTask(Ljava/util/concurrent/Executor;Ljava/util/concurrent/Callable;)Lcom/google/android/gms/tasks/Task; +HSPLcom/google/firebase/crashlytics/internal/common/Utils;->lambda$awaitEvenIfOnMainThread$4(Ljava/util/concurrent/CountDownLatch;Lcom/google/android/gms/tasks/Task;)Ljava/lang/Object; +HSPLcom/google/firebase/crashlytics/internal/common/Utils;->lambda$callTask$2(Lcom/google/android/gms/tasks/TaskCompletionSource;Lcom/google/android/gms/tasks/Task;)Ljava/lang/Object; +HSPLcom/google/firebase/crashlytics/internal/common/Utils;->lambda$callTask$3(Ljava/util/concurrent/Callable;Ljava/util/concurrent/Executor;Lcom/google/android/gms/tasks/TaskCompletionSource;)V +HSPLcom/google/firebase/crashlytics/internal/common/Utils;->race(Ljava/util/concurrent/Executor;Lcom/google/android/gms/tasks/Task;Lcom/google/android/gms/tasks/Task;)Lcom/google/android/gms/tasks/Task; +Lcom/google/firebase/crashlytics/internal/common/Utils$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/crashlytics/internal/common/Utils$$ExternalSyntheticLambda0;->(Lcom/google/android/gms/tasks/TaskCompletionSource;)V +HSPLcom/google/firebase/crashlytics/internal/common/Utils$$ExternalSyntheticLambda0;->then(Lcom/google/android/gms/tasks/Task;)Ljava/lang/Object; +Lcom/google/firebase/crashlytics/internal/common/Utils$$ExternalSyntheticLambda2; +HSPLcom/google/firebase/crashlytics/internal/common/Utils$$ExternalSyntheticLambda2;->(Ljava/util/concurrent/CountDownLatch;)V +HSPLcom/google/firebase/crashlytics/internal/common/Utils$$ExternalSyntheticLambda2;->then(Lcom/google/android/gms/tasks/Task;)Ljava/lang/Object; +Lcom/google/firebase/crashlytics/internal/common/Utils$$ExternalSyntheticLambda3; +HSPLcom/google/firebase/crashlytics/internal/common/Utils$$ExternalSyntheticLambda3;->(Lcom/google/android/gms/tasks/TaskCompletionSource;)V +Lcom/google/firebase/crashlytics/internal/common/Utils$$ExternalSyntheticLambda4; +HSPLcom/google/firebase/crashlytics/internal/common/Utils$$ExternalSyntheticLambda4;->(Ljava/util/concurrent/Callable;Ljava/util/concurrent/Executor;Lcom/google/android/gms/tasks/TaskCompletionSource;)V +HSPLcom/google/firebase/crashlytics/internal/common/Utils$$ExternalSyntheticLambda4;->run()V +Lcom/google/firebase/crashlytics/internal/metadata/FileLogStore; +Lcom/google/firebase/crashlytics/internal/metadata/KeysMap; +HSPLcom/google/firebase/crashlytics/internal/metadata/KeysMap;->(II)V +Lcom/google/firebase/crashlytics/internal/metadata/LogFileManager; +HSPLcom/google/firebase/crashlytics/internal/metadata/LogFileManager;->()V +HSPLcom/google/firebase/crashlytics/internal/metadata/LogFileManager;->(Lcom/google/firebase/crashlytics/internal/persistence/FileStore;)V +HSPLcom/google/firebase/crashlytics/internal/metadata/LogFileManager;->getWorkingFileForSession(Ljava/lang/String;)Ljava/io/File; +HSPLcom/google/firebase/crashlytics/internal/metadata/LogFileManager;->setCurrentSession(Ljava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/metadata/LogFileManager;->setLogFile(Ljava/io/File;I)V +HSPLcom/google/firebase/crashlytics/internal/metadata/LogFileManager;->writeToLog(JLjava/lang/String;)V +Lcom/google/firebase/crashlytics/internal/metadata/LogFileManager$NoopLogStore; +HSPLcom/google/firebase/crashlytics/internal/metadata/LogFileManager$NoopLogStore;->()V +HSPLcom/google/firebase/crashlytics/internal/metadata/LogFileManager$NoopLogStore;->(Lcom/google/firebase/crashlytics/internal/metadata/LogFileManager$1;)V +HSPLcom/google/firebase/crashlytics/internal/metadata/LogFileManager$NoopLogStore;->closeLogFile()V +Lcom/google/firebase/crashlytics/internal/metadata/MetaDataStore; +HSPLcom/google/firebase/crashlytics/internal/metadata/MetaDataStore;->()V +HSPLcom/google/firebase/crashlytics/internal/metadata/MetaDataStore;->(Lcom/google/firebase/crashlytics/internal/persistence/FileStore;)V +Lcom/google/firebase/crashlytics/internal/metadata/QueueFile; +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->()V +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->(Ljava/io/File;)V +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->add([B)V +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->add([BII)V +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->expandIfNecessary(I)V +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->initialize(Ljava/io/File;)V +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->isEmpty()Z +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->nonNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->open(Ljava/io/File;)Ljava/io/RandomAccessFile; +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->readElement(I)Lcom/google/firebase/crashlytics/internal/metadata/QueueFile$Element; +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->readHeader()V +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->readInt([BI)I +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->remainingBytes()I +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->ringWrite(I[BII)V +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->usedBytes()I +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->wrapPosition(I)I +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->writeHeader(IIII)V +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->writeInt([BII)V +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile;->writeInts([B[I)V +Lcom/google/firebase/crashlytics/internal/metadata/QueueFile$Element; +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile$Element;->()V +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFile$Element;->(II)V +Lcom/google/firebase/crashlytics/internal/metadata/QueueFileLogStore; +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFileLogStore;->()V +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFileLogStore;->(Ljava/io/File;I)V +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFileLogStore;->doWriteToLog(JLjava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFileLogStore;->openLogFile()V +HSPLcom/google/firebase/crashlytics/internal/metadata/QueueFileLogStore;->writeToLog(JLjava/lang/String;)V +Lcom/google/firebase/crashlytics/internal/metadata/RolloutAssignmentList; +HSPLcom/google/firebase/crashlytics/internal/metadata/RolloutAssignmentList;->(I)V +Lcom/google/firebase/crashlytics/internal/metadata/UserMetadata; +HSPLcom/google/firebase/crashlytics/internal/metadata/UserMetadata;->(Ljava/lang/String;Lcom/google/firebase/crashlytics/internal/persistence/FileStore;Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;)V +Lcom/google/firebase/crashlytics/internal/metadata/UserMetadata$SerializeableKeysMap; +HSPLcom/google/firebase/crashlytics/internal/metadata/UserMetadata$SerializeableKeysMap;->(Lcom/google/firebase/crashlytics/internal/metadata/UserMetadata;Z)V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder;->configure(Lcom/google/firebase/encoders/config/EncoderConfig;)V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportApplicationExitInfoBuildIdMappingForArchEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportApplicationExitInfoBuildIdMappingForArchEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportApplicationExitInfoBuildIdMappingForArchEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportApplicationExitInfoEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportApplicationExitInfoEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportApplicationExitInfoEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportCustomAttributeEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportCustomAttributeEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportCustomAttributeEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportEncoder;->encode(Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport;Lcom/google/firebase/encoders/ObjectEncoderContext;)V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportEncoder;->encode(Ljava/lang/Object;Ljava/lang/Object;)V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportFilesPayloadEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportFilesPayloadEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportFilesPayloadEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportFilesPayloadFileEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportFilesPayloadFileEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportFilesPayloadFileEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionApplicationEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionApplicationEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionApplicationEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionApplicationEncoder;->encode(Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application;Lcom/google/firebase/encoders/ObjectEncoderContext;)V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionApplicationEncoder;->encode(Ljava/lang/Object;Ljava/lang/Object;)V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionApplicationOrganizationEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionApplicationOrganizationEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionApplicationOrganizationEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionDeviceEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionDeviceEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionDeviceEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionDeviceEncoder;->encode(Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device;Lcom/google/firebase/encoders/ObjectEncoderContext;)V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionDeviceEncoder;->encode(Ljava/lang/Object;Ljava/lang/Object;)V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEncoder;->encode(Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session;Lcom/google/firebase/encoders/ObjectEncoderContext;)V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEncoder;->encode(Ljava/lang/Object;Ljava/lang/Object;)V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionBinaryImageEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionBinaryImageEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionBinaryImageEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionExceptionEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionExceptionEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionExceptionEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionSignalEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionSignalEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionSignalEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionThreadEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionThreadEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionThreadEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionThreadFrameEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionThreadFrameEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationExecutionThreadFrameEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationProcessDetailsEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationProcessDetailsEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventApplicationProcessDetailsEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventDeviceEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventDeviceEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventDeviceEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventLogEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventLogEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventLogEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventRolloutAssignmentEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventRolloutAssignmentEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventRolloutAssignmentEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventRolloutAssignmentRolloutVariantEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventRolloutAssignmentRolloutVariantEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventRolloutAssignmentRolloutVariantEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventRolloutsStateEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventRolloutsStateEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionEventRolloutsStateEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionOperatingSystemEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionOperatingSystemEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionOperatingSystemEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionOperatingSystemEncoder;->encode(Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem;Lcom/google/firebase/encoders/ObjectEncoderContext;)V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionOperatingSystemEncoder;->encode(Ljava/lang/Object;Ljava/lang/Object;)V +Lcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionUserEncoder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionUserEncoder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoCrashlyticsReportEncoder$CrashlyticsReportSessionUserEncoder;->()V +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport;->(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session;Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$FilesPayload;Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$ApplicationExitInfo;)V +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport;->(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session;Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$FilesPayload;Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$ApplicationExitInfo;Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport$1;)V +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport;->getAppExitInfo()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$ApplicationExitInfo; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport;->getAppQualitySessionId()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport;->getBuildVersion()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport;->getDisplayVersion()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport;->getFirebaseInstallationId()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport;->getGmpAppId()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport;->getInstallationUuid()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport;->getNdkPayload()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$FilesPayload; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport;->getPlatform()I +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport;->getSdkVersion()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport;->getSession()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport$Builder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport$Builder;->build()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport$Builder;->setBuildVersion(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport$Builder;->setDisplayVersion(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport$Builder;->setFirebaseInstallationId(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport$Builder;->setGmpAppId(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport$Builder;->setInstallationUuid(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport$Builder;->setPlatform(I)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport$Builder;->setSdkVersion(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport$Builder;->setSession(Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Builder; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_ApplicationExitInfo; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_ApplicationExitInfo_BuildIdMappingForArch; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_CustomAttribute; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_FilesPayload; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_FilesPayload_File; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JLjava/lang/Long;ZLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application;Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$User;Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem;Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device;Ljava/util/List;I)V +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JLjava/lang/Long;ZLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application;Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$User;Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem;Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device;Ljava/util/List;ILcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session$1;)V +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session;->getApp()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session;->getAppQualitySessionId()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session;->getDevice()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session;->getEndedAt()Ljava/lang/Long; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session;->getEvents()Ljava/util/List; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session;->getGenerator()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session;->getGeneratorType()I +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session;->getIdentifier()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session;->getOs()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session;->getStartedAt()J +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session;->getUser()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$User; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session;->isCrashed()Z +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session$Builder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session$Builder;->build()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session$Builder;->setApp(Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session$Builder;->setCrashed(Z)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session$Builder;->setDevice(Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session$Builder;->setGenerator(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session$Builder;->setGeneratorType(I)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session$Builder;->setIdentifier(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session$Builder;->setOs(Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session$Builder;->setStartedAt(J)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Builder; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application$Organization;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application$Organization;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application$1;)V +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application;->getDevelopmentPlatform()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application;->getDevelopmentPlatformVersion()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application;->getDisplayVersion()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application;->getIdentifier()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application;->getInstallationUuid()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application;->getOrganization()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application$Organization; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application;->getVersion()Ljava/lang/String; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application$Builder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application$Builder;->build()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application$Builder;->setDevelopmentPlatform(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application$Builder;->setDevelopmentPlatformVersion(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application$Builder;->setDisplayVersion(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application$Builder;->setIdentifier(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application$Builder;->setInstallationUuid(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application$Builder;->setVersion(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application$Builder; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Application_Organization; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device;->(ILjava/lang/String;IJJZILjava/lang/String;Ljava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device;->(ILjava/lang/String;IJJZILjava/lang/String;Ljava/lang/String;Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device$1;)V +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device;->getArch()I +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device;->getCores()I +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device;->getDiskSpace()J +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device;->getManufacturer()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device;->getModel()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device;->getModelClass()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device;->getRam()J +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device;->getState()I +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device;->isSimulator()Z +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device$Builder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device$Builder;->build()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device$Builder;->setArch(I)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device$Builder;->setCores(I)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device$Builder;->setDiskSpace(J)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device$Builder;->setManufacturer(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device$Builder;->setModel(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device$Builder;->setModelClass(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device$Builder;->setRam(J)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device$Builder;->setSimulator(Z)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Device$Builder;->setState(I)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device$Builder; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Event; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Event_Application; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Event_Application_Execution; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Event_Application_Execution_BinaryImage; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Event_Application_Execution_Exception; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Event_Application_Execution_Signal; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Event_Application_Execution_Thread; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Event_Application_Execution_Thread_Frame; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Event_Application_ProcessDetails; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Event_Device; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Event_Log; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Event_RolloutAssignment; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Event_RolloutAssignment_RolloutVariant; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_Event_RolloutsState; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_OperatingSystem; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_OperatingSystem;->(ILjava/lang/String;Ljava/lang/String;Z)V +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_OperatingSystem;->(ILjava/lang/String;Ljava/lang/String;ZLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_OperatingSystem$1;)V +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_OperatingSystem;->getBuildVersion()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_OperatingSystem;->getPlatform()I +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_OperatingSystem;->getVersion()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_OperatingSystem;->isJailbroken()Z +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_OperatingSystem$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_OperatingSystem$Builder;->()V +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_OperatingSystem$Builder;->build()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_OperatingSystem$Builder;->setBuildVersion(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_OperatingSystem$Builder;->setJailbroken(Z)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_OperatingSystem$Builder;->setPlatform(I)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_OperatingSystem$Builder;->setVersion(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem$Builder; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_CrashlyticsReport_Session_User; +Lcom/google/firebase/crashlytics/internal/model/AutoValue_StaticSessionData; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_StaticSessionData;->(Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$AppData;Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$OsData;Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$DeviceData;)V +Lcom/google/firebase/crashlytics/internal/model/AutoValue_StaticSessionData_AppData; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_StaticSessionData_AppData;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider;)V +Lcom/google/firebase/crashlytics/internal/model/AutoValue_StaticSessionData_DeviceData; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_StaticSessionData_DeviceData;->(ILjava/lang/String;IJJZILjava/lang/String;Ljava/lang/String;)V +Lcom/google/firebase/crashlytics/internal/model/AutoValue_StaticSessionData_OsData; +HSPLcom/google/firebase/crashlytics/internal/model/AutoValue_StaticSessionData_OsData;->(Ljava/lang/String;Ljava/lang/String;Z)V +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport; +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport;->()V +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport;->()V +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport;->access$000()Ljava/nio/charset/Charset; +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport;->builder()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Builder; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$ApplicationExitInfo; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$ApplicationExitInfo$BuildIdMappingForArch; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Builder;->()V +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$CustomAttribute; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$FilesPayload; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$FilesPayload$File; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session; +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session;->()V +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session;->builder()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session;->getIdentifierUtf8Bytes()[B +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application; +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application;->()V +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application;->builder()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application$Builder; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application$Builder;->()V +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Application$Organization; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Builder;->()V +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device; +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device;->()V +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device;->builder()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device$Builder; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Device$Builder;->()V +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Event; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Event$Application; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Event$Application$Execution; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Event$Application$Execution$BinaryImage; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Event$Application$Execution$Exception; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Event$Application$Execution$Signal; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Event$Application$Execution$Thread; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Event$Application$Execution$Thread$Frame; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Event$Application$ProcessDetails; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Event$Device; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Event$Log; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Event$RolloutAssignment; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Event$RolloutAssignment$RolloutVariant; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$Event$RolloutsState; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem; +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem;->()V +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem;->builder()Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem$Builder; +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem$Builder; +HSPLcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$OperatingSystem$Builder;->()V +Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport$Session$User; +Lcom/google/firebase/crashlytics/internal/model/StaticSessionData; +HSPLcom/google/firebase/crashlytics/internal/model/StaticSessionData;->()V +HSPLcom/google/firebase/crashlytics/internal/model/StaticSessionData;->create(Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$AppData;Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$OsData;Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$DeviceData;)Lcom/google/firebase/crashlytics/internal/model/StaticSessionData; +Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$AppData; +HSPLcom/google/firebase/crashlytics/internal/model/StaticSessionData$AppData;->()V +HSPLcom/google/firebase/crashlytics/internal/model/StaticSessionData$AppData;->create(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider;)Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$AppData; +Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$DeviceData; +HSPLcom/google/firebase/crashlytics/internal/model/StaticSessionData$DeviceData;->()V +HSPLcom/google/firebase/crashlytics/internal/model/StaticSessionData$DeviceData;->create(ILjava/lang/String;IJJZILjava/lang/String;Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$DeviceData; +Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$OsData; +HSPLcom/google/firebase/crashlytics/internal/model/StaticSessionData$OsData;->()V +HSPLcom/google/firebase/crashlytics/internal/model/StaticSessionData$OsData;->create(Ljava/lang/String;Ljava/lang/String;Z)Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$OsData; +Lcom/google/firebase/crashlytics/internal/model/serialization/CrashlyticsReportJsonTransform; +HSPLcom/google/firebase/crashlytics/internal/model/serialization/CrashlyticsReportJsonTransform;->()V +HSPLcom/google/firebase/crashlytics/internal/model/serialization/CrashlyticsReportJsonTransform;->()V +HSPLcom/google/firebase/crashlytics/internal/model/serialization/CrashlyticsReportJsonTransform;->reportToJson(Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport;)Ljava/lang/String; +Lcom/google/firebase/crashlytics/internal/network/HttpRequestFactory; +HSPLcom/google/firebase/crashlytics/internal/network/HttpRequestFactory;->()V +Lcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence; +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence;->()V +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence;->(Lcom/google/firebase/crashlytics/internal/persistence/FileStore;Lcom/google/firebase/crashlytics/internal/settings/SettingsProvider;Lcom/google/firebase/crashlytics/internal/common/CrashlyticsAppQualitySessionsSubscriber;)V +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence;->capAndGetOpenSessions(Ljava/lang/String;)Ljava/util/SortedSet; +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence;->capFinalizedReports()V +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence;->convertTimestampFromSecondsToMs(J)J +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence;->finalizeReports(Ljava/lang/String;J)V +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence;->getAllFinalizedReportFiles()Ljava/util/List; +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence;->getOpenSessionIds()Ljava/util/SortedSet; +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence;->hasFinalizedReports()Z +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence;->lambda$static$1(Ljava/io/File;Ljava/lang/String;)Z +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence;->persistReport(Lcom/google/firebase/crashlytics/internal/model/CrashlyticsReport;)V +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence;->synthesizeReport(Ljava/lang/String;J)V +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence;->writeTextFile(Ljava/io/File;Ljava/lang/String;)V +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence;->writeTextFile(Ljava/io/File;Ljava/lang/String;J)V +Lcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence$$ExternalSyntheticLambda2; +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence$$ExternalSyntheticLambda2;->()V +Lcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence$$ExternalSyntheticLambda3; +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence$$ExternalSyntheticLambda3;->()V +HSPLcom/google/firebase/crashlytics/internal/persistence/CrashlyticsReportPersistence$$ExternalSyntheticLambda3;->accept(Ljava/io/File;Ljava/lang/String;)Z +Lcom/google/firebase/crashlytics/internal/persistence/FileStore; +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->(Landroid/content/Context;)V +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->cleanupDir(Ljava/io/File;)V +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->cleanupPreviousFileSystems()V +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->deleteSessionFiles(Ljava/lang/String;)Z +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->getAllOpenSessionIds()Ljava/util/List; +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->getCommonFile(Ljava/lang/String;)Ljava/io/File; +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->getNativeReports()Ljava/util/List; +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->getPriorityReports()Ljava/util/List; +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->getReports()Ljava/util/List; +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->getSessionDir(Ljava/lang/String;)Ljava/io/File; +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->getSessionFile(Ljava/lang/String;Ljava/lang/String;)Ljava/io/File; +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->getSessionFiles(Ljava/lang/String;Ljava/io/FilenameFilter;)Ljava/util/List; +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->prepareBaseDir(Ljava/io/File;)Ljava/io/File; +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->prepareDir(Ljava/io/File;)Ljava/io/File; +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->recursiveDelete(Ljava/io/File;)Z +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->safeArrayToList([Ljava/lang/Object;)Ljava/util/List; +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->sanitizeName(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/persistence/FileStore;->useV2FileSystem()Z +Lcom/google/firebase/crashlytics/internal/send/DataTransportCrashlyticsReportSender; +HSPLcom/google/firebase/crashlytics/internal/send/DataTransportCrashlyticsReportSender;->()V +HSPLcom/google/firebase/crashlytics/internal/send/DataTransportCrashlyticsReportSender;->(Lcom/google/firebase/crashlytics/internal/send/ReportQueue;Lcom/google/android/datatransport/Transformer;)V +HSPLcom/google/firebase/crashlytics/internal/send/DataTransportCrashlyticsReportSender;->create(Landroid/content/Context;Lcom/google/firebase/crashlytics/internal/settings/SettingsProvider;Lcom/google/firebase/crashlytics/internal/common/OnDemandCounter;)Lcom/google/firebase/crashlytics/internal/send/DataTransportCrashlyticsReportSender; +HSPLcom/google/firebase/crashlytics/internal/send/DataTransportCrashlyticsReportSender;->mergeStrings(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +Lcom/google/firebase/crashlytics/internal/send/DataTransportCrashlyticsReportSender$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/crashlytics/internal/send/DataTransportCrashlyticsReportSender$$ExternalSyntheticLambda0;->()V +Lcom/google/firebase/crashlytics/internal/send/ReportQueue; +HSPLcom/google/firebase/crashlytics/internal/send/ReportQueue;->(DDJLcom/google/android/datatransport/Transport;Lcom/google/firebase/crashlytics/internal/common/OnDemandCounter;)V +HSPLcom/google/firebase/crashlytics/internal/send/ReportQueue;->(Lcom/google/android/datatransport/Transport;Lcom/google/firebase/crashlytics/internal/settings/Settings;Lcom/google/firebase/crashlytics/internal/common/OnDemandCounter;)V +Lcom/google/firebase/crashlytics/internal/settings/CachedSettingsIo; +HSPLcom/google/firebase/crashlytics/internal/settings/CachedSettingsIo;->(Lcom/google/firebase/crashlytics/internal/persistence/FileStore;)V +HSPLcom/google/firebase/crashlytics/internal/settings/CachedSettingsIo;->getSettingsFile()Ljava/io/File; +HSPLcom/google/firebase/crashlytics/internal/settings/CachedSettingsIo;->readCachedSettings()Lorg/json/JSONObject; +Lcom/google/firebase/crashlytics/internal/settings/DefaultSettingsJsonTransform; +HSPLcom/google/firebase/crashlytics/internal/settings/DefaultSettingsJsonTransform;->defaultSettings(Lcom/google/firebase/crashlytics/internal/common/CurrentTimeProvider;)Lcom/google/firebase/crashlytics/internal/settings/Settings; +Lcom/google/firebase/crashlytics/internal/settings/DefaultSettingsSpiCall; +HSPLcom/google/firebase/crashlytics/internal/settings/DefaultSettingsSpiCall;->(Ljava/lang/String;Lcom/google/firebase/crashlytics/internal/network/HttpRequestFactory;)V +HSPLcom/google/firebase/crashlytics/internal/settings/DefaultSettingsSpiCall;->(Ljava/lang/String;Lcom/google/firebase/crashlytics/internal/network/HttpRequestFactory;Lcom/google/firebase/crashlytics/internal/Logger;)V +Lcom/google/firebase/crashlytics/internal/settings/Settings; +HSPLcom/google/firebase/crashlytics/internal/settings/Settings;->(JLcom/google/firebase/crashlytics/internal/settings/Settings$SessionData;Lcom/google/firebase/crashlytics/internal/settings/Settings$FeatureFlagData;IIDDI)V +Lcom/google/firebase/crashlytics/internal/settings/Settings$FeatureFlagData; +HSPLcom/google/firebase/crashlytics/internal/settings/Settings$FeatureFlagData;->(ZZZ)V +Lcom/google/firebase/crashlytics/internal/settings/Settings$SessionData; +HSPLcom/google/firebase/crashlytics/internal/settings/Settings$SessionData;->(II)V +Lcom/google/firebase/crashlytics/internal/settings/SettingsCacheBehavior; +HSPLcom/google/firebase/crashlytics/internal/settings/SettingsCacheBehavior;->()V +HSPLcom/google/firebase/crashlytics/internal/settings/SettingsCacheBehavior;->(Ljava/lang/String;I)V +Lcom/google/firebase/crashlytics/internal/settings/SettingsController; +HSPLcom/google/firebase/crashlytics/internal/settings/SettingsController;->(Landroid/content/Context;Lcom/google/firebase/crashlytics/internal/settings/SettingsRequest;Lcom/google/firebase/crashlytics/internal/common/CurrentTimeProvider;Lcom/google/firebase/crashlytics/internal/settings/SettingsJsonParser;Lcom/google/firebase/crashlytics/internal/settings/CachedSettingsIo;Lcom/google/firebase/crashlytics/internal/settings/SettingsSpiCall;Lcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;)V +HSPLcom/google/firebase/crashlytics/internal/settings/SettingsController;->buildInstanceIdentifierChanged()Z +HSPLcom/google/firebase/crashlytics/internal/settings/SettingsController;->create(Landroid/content/Context;Ljava/lang/String;Lcom/google/firebase/crashlytics/internal/common/IdManager;Lcom/google/firebase/crashlytics/internal/network/HttpRequestFactory;Ljava/lang/String;Ljava/lang/String;Lcom/google/firebase/crashlytics/internal/persistence/FileStore;Lcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;)Lcom/google/firebase/crashlytics/internal/settings/SettingsController; +HSPLcom/google/firebase/crashlytics/internal/settings/SettingsController;->getCachedSettingsData(Lcom/google/firebase/crashlytics/internal/settings/SettingsCacheBehavior;)Lcom/google/firebase/crashlytics/internal/settings/Settings; +HSPLcom/google/firebase/crashlytics/internal/settings/SettingsController;->getSettingsAsync()Lcom/google/android/gms/tasks/Task; +HSPLcom/google/firebase/crashlytics/internal/settings/SettingsController;->getSettingsSync()Lcom/google/firebase/crashlytics/internal/settings/Settings; +HSPLcom/google/firebase/crashlytics/internal/settings/SettingsController;->getStoredBuildInstanceIdentifier()Ljava/lang/String; +HSPLcom/google/firebase/crashlytics/internal/settings/SettingsController;->loadSettingsData(Lcom/google/firebase/crashlytics/internal/settings/SettingsCacheBehavior;Ljava/util/concurrent/Executor;)Lcom/google/android/gms/tasks/Task; +HSPLcom/google/firebase/crashlytics/internal/settings/SettingsController;->loadSettingsData(Ljava/util/concurrent/Executor;)Lcom/google/android/gms/tasks/Task; +Lcom/google/firebase/crashlytics/internal/settings/SettingsController$1; +HSPLcom/google/firebase/crashlytics/internal/settings/SettingsController$1;->(Lcom/google/firebase/crashlytics/internal/settings/SettingsController;)V +Lcom/google/firebase/crashlytics/internal/settings/SettingsJsonParser; +HSPLcom/google/firebase/crashlytics/internal/settings/SettingsJsonParser;->(Lcom/google/firebase/crashlytics/internal/common/CurrentTimeProvider;)V +Lcom/google/firebase/crashlytics/internal/settings/SettingsJsonTransform; +Lcom/google/firebase/crashlytics/internal/settings/SettingsProvider; +Lcom/google/firebase/crashlytics/internal/settings/SettingsRequest; +HSPLcom/google/firebase/crashlytics/internal/settings/SettingsRequest;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/google/firebase/crashlytics/internal/common/InstallIdProvider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V +Lcom/google/firebase/crashlytics/internal/settings/SettingsSpiCall; +Lcom/google/firebase/crashlytics/internal/stacktrace/MiddleOutFallbackStrategy; +HSPLcom/google/firebase/crashlytics/internal/stacktrace/MiddleOutFallbackStrategy;->(I[Lcom/google/firebase/crashlytics/internal/stacktrace/StackTraceTrimmingStrategy;)V +Lcom/google/firebase/crashlytics/internal/stacktrace/MiddleOutStrategy; +HSPLcom/google/firebase/crashlytics/internal/stacktrace/MiddleOutStrategy;->(I)V +Lcom/google/firebase/crashlytics/internal/stacktrace/RemoveRepeatsStrategy; +HSPLcom/google/firebase/crashlytics/internal/stacktrace/RemoveRepeatsStrategy;->(I)V +Lcom/google/firebase/crashlytics/internal/stacktrace/StackTraceTrimmingStrategy; +Lcom/google/firebase/crashlytics/ktx/FirebaseCrashlyticsKt; +HSPLcom/google/firebase/crashlytics/ktx/FirebaseCrashlyticsKt;->getCrashlytics(Lcom/google/firebase/ktx/Firebase;)Lcom/google/firebase/crashlytics/FirebaseCrashlytics; +Lcom/google/firebase/crashlytics/ktx/FirebaseCrashlyticsKtxRegistrar; +HSPLcom/google/firebase/crashlytics/ktx/FirebaseCrashlyticsKtxRegistrar;->()V +HSPLcom/google/firebase/crashlytics/ktx/FirebaseCrashlyticsKtxRegistrar;->()V +HSPLcom/google/firebase/crashlytics/ktx/FirebaseCrashlyticsKtxRegistrar;->getComponents()Ljava/util/List; +Lcom/google/firebase/crashlytics/ktx/FirebaseCrashlyticsKtxRegistrar$Companion; +HSPLcom/google/firebase/crashlytics/ktx/FirebaseCrashlyticsKtxRegistrar$Companion;->()V +HSPLcom/google/firebase/crashlytics/ktx/FirebaseCrashlyticsKtxRegistrar$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/google/firebase/datatransport/TransportRegistrar; +HSPLcom/google/firebase/datatransport/TransportRegistrar;->()V +HSPLcom/google/firebase/datatransport/TransportRegistrar;->getComponents()Ljava/util/List; +Lcom/google/firebase/datatransport/TransportRegistrar$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/datatransport/TransportRegistrar$$ExternalSyntheticLambda0;->()V +Lcom/google/firebase/dynamicloading/ComponentLoader; +Lcom/google/firebase/encoders/DataEncoder; +Lcom/google/firebase/encoders/Encoder; +Lcom/google/firebase/encoders/EncodingException; +Lcom/google/firebase/encoders/FieldDescriptor; +HSPLcom/google/firebase/encoders/FieldDescriptor;->(Ljava/lang/String;Ljava/util/Map;)V +HSPLcom/google/firebase/encoders/FieldDescriptor;->getName()Ljava/lang/String; +HSPLcom/google/firebase/encoders/FieldDescriptor;->of(Ljava/lang/String;)Lcom/google/firebase/encoders/FieldDescriptor; +Lcom/google/firebase/encoders/ObjectEncoder; +Lcom/google/firebase/encoders/ObjectEncoderContext; +Lcom/google/firebase/encoders/ValueEncoder; +Lcom/google/firebase/encoders/ValueEncoderContext; +Lcom/google/firebase/encoders/config/Configurator; +Lcom/google/firebase/encoders/config/EncoderConfig; +Lcom/google/firebase/encoders/json/JsonDataEncoderBuilder; +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder;->()V +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder;->()V +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder;->access$100(Lcom/google/firebase/encoders/json/JsonDataEncoderBuilder;)Ljava/util/Map; +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder;->access$200(Lcom/google/firebase/encoders/json/JsonDataEncoderBuilder;)Ljava/util/Map; +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder;->access$300(Lcom/google/firebase/encoders/json/JsonDataEncoderBuilder;)Lcom/google/firebase/encoders/ObjectEncoder; +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder;->access$400(Lcom/google/firebase/encoders/json/JsonDataEncoderBuilder;)Z +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder;->build()Lcom/google/firebase/encoders/DataEncoder; +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder;->configureWith(Lcom/google/firebase/encoders/config/Configurator;)Lcom/google/firebase/encoders/json/JsonDataEncoderBuilder; +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder;->ignoreNullValues(Z)Lcom/google/firebase/encoders/json/JsonDataEncoderBuilder; +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder;->lambda$static$1(Ljava/lang/String;Lcom/google/firebase/encoders/ValueEncoderContext;)V +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder;->registerEncoder(Ljava/lang/Class;Lcom/google/firebase/encoders/ObjectEncoder;)Lcom/google/firebase/encoders/config/EncoderConfig; +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder;->registerEncoder(Ljava/lang/Class;Lcom/google/firebase/encoders/ObjectEncoder;)Lcom/google/firebase/encoders/json/JsonDataEncoderBuilder; +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder;->registerEncoder(Ljava/lang/Class;Lcom/google/firebase/encoders/ValueEncoder;)Lcom/google/firebase/encoders/json/JsonDataEncoderBuilder; +Lcom/google/firebase/encoders/json/JsonDataEncoderBuilder$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder$$ExternalSyntheticLambda0;->()V +Lcom/google/firebase/encoders/json/JsonDataEncoderBuilder$$ExternalSyntheticLambda1; +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder$$ExternalSyntheticLambda1;->()V +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder$$ExternalSyntheticLambda1;->encode(Ljava/lang/Object;Ljava/lang/Object;)V +Lcom/google/firebase/encoders/json/JsonDataEncoderBuilder$$ExternalSyntheticLambda2; +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder$$ExternalSyntheticLambda2;->()V +Lcom/google/firebase/encoders/json/JsonDataEncoderBuilder$1; +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder$1;->(Lcom/google/firebase/encoders/json/JsonDataEncoderBuilder;)V +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder$1;->encode(Ljava/lang/Object;)Ljava/lang/String; +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder$1;->encode(Ljava/lang/Object;Ljava/io/Writer;)V +Lcom/google/firebase/encoders/json/JsonDataEncoderBuilder$TimestampEncoder; +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder$TimestampEncoder;->()V +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder$TimestampEncoder;->()V +HSPLcom/google/firebase/encoders/json/JsonDataEncoderBuilder$TimestampEncoder;->(Lcom/google/firebase/encoders/json/JsonDataEncoderBuilder$1;)V +Lcom/google/firebase/encoders/json/JsonValueObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->(Ljava/io/Writer;Ljava/util/Map;Ljava/util/Map;Lcom/google/firebase/encoders/ObjectEncoder;Z)V +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->add(I)Lcom/google/firebase/encoders/json/JsonValueObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->add(J)Lcom/google/firebase/encoders/json/JsonValueObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->add(Lcom/google/firebase/encoders/FieldDescriptor;I)Lcom/google/firebase/encoders/ObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->add(Lcom/google/firebase/encoders/FieldDescriptor;J)Lcom/google/firebase/encoders/ObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->add(Lcom/google/firebase/encoders/FieldDescriptor;Ljava/lang/Object;)Lcom/google/firebase/encoders/ObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->add(Lcom/google/firebase/encoders/FieldDescriptor;Z)Lcom/google/firebase/encoders/ObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->add(Ljava/lang/Object;Z)Lcom/google/firebase/encoders/json/JsonValueObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->add(Ljava/lang/String;)Lcom/google/firebase/encoders/ValueEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->add(Ljava/lang/String;)Lcom/google/firebase/encoders/json/JsonValueObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->add(Ljava/lang/String;I)Lcom/google/firebase/encoders/json/JsonValueObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->add(Ljava/lang/String;J)Lcom/google/firebase/encoders/json/JsonValueObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->add(Ljava/lang/String;Ljava/lang/Object;)Lcom/google/firebase/encoders/json/JsonValueObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->add(Ljava/lang/String;Z)Lcom/google/firebase/encoders/json/JsonValueObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->add(Z)Lcom/google/firebase/encoders/json/JsonValueObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->add([B)Lcom/google/firebase/encoders/json/JsonValueObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->close()V +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->doEncode(Lcom/google/firebase/encoders/ObjectEncoder;Ljava/lang/Object;Z)Lcom/google/firebase/encoders/json/JsonValueObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->internalAddIgnoreNullValues(Ljava/lang/String;Ljava/lang/Object;)Lcom/google/firebase/encoders/json/JsonValueObjectEncoderContext; +HSPLcom/google/firebase/encoders/json/JsonValueObjectEncoderContext;->maybeUnNest()V +Lcom/google/firebase/encoders/json/NumberedEnum; +Lcom/google/firebase/events/EventHandler; +Lcom/google/firebase/events/Publisher; +Lcom/google/firebase/events/Subscriber; +Lcom/google/firebase/heartbeatinfo/DefaultHeartBeatController; +HSPLcom/google/firebase/heartbeatinfo/DefaultHeartBeatController;->(Landroid/content/Context;Ljava/lang/String;Ljava/util/Set;Lcom/google/firebase/inject/Provider;Ljava/util/concurrent/Executor;)V +HSPLcom/google/firebase/heartbeatinfo/DefaultHeartBeatController;->(Lcom/google/firebase/inject/Provider;Ljava/util/Set;Ljava/util/concurrent/Executor;Lcom/google/firebase/inject/Provider;Landroid/content/Context;)V +HSPLcom/google/firebase/heartbeatinfo/DefaultHeartBeatController;->component()Lcom/google/firebase/components/Component; +HSPLcom/google/firebase/heartbeatinfo/DefaultHeartBeatController;->lambda$component$3(Lcom/google/firebase/components/Qualified;Lcom/google/firebase/components/ComponentContainer;)Lcom/google/firebase/heartbeatinfo/DefaultHeartBeatController; +HSPLcom/google/firebase/heartbeatinfo/DefaultHeartBeatController;->lambda$new$2(Landroid/content/Context;Ljava/lang/String;)Lcom/google/firebase/heartbeatinfo/HeartBeatInfoStorage; +HSPLcom/google/firebase/heartbeatinfo/DefaultHeartBeatController;->lambda$registerHeartBeat$0$com-google-firebase-heartbeatinfo-DefaultHeartBeatController()Ljava/lang/Void; +HSPLcom/google/firebase/heartbeatinfo/DefaultHeartBeatController;->registerHeartBeat()Lcom/google/android/gms/tasks/Task; +Lcom/google/firebase/heartbeatinfo/DefaultHeartBeatController$$ExternalSyntheticLambda1; +HSPLcom/google/firebase/heartbeatinfo/DefaultHeartBeatController$$ExternalSyntheticLambda1;->(Lcom/google/firebase/heartbeatinfo/DefaultHeartBeatController;)V +HSPLcom/google/firebase/heartbeatinfo/DefaultHeartBeatController$$ExternalSyntheticLambda1;->call()Ljava/lang/Object; +Lcom/google/firebase/heartbeatinfo/DefaultHeartBeatController$$ExternalSyntheticLambda2; +HSPLcom/google/firebase/heartbeatinfo/DefaultHeartBeatController$$ExternalSyntheticLambda2;->(Lcom/google/firebase/components/Qualified;)V +HSPLcom/google/firebase/heartbeatinfo/DefaultHeartBeatController$$ExternalSyntheticLambda2;->create(Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +Lcom/google/firebase/heartbeatinfo/DefaultHeartBeatController$$ExternalSyntheticLambda3; +HSPLcom/google/firebase/heartbeatinfo/DefaultHeartBeatController$$ExternalSyntheticLambda3;->(Landroid/content/Context;Ljava/lang/String;)V +HSPLcom/google/firebase/heartbeatinfo/DefaultHeartBeatController$$ExternalSyntheticLambda3;->get()Ljava/lang/Object; +Lcom/google/firebase/heartbeatinfo/HeartBeatConsumer; +Lcom/google/firebase/heartbeatinfo/HeartBeatConsumerComponent; +HSPLcom/google/firebase/heartbeatinfo/HeartBeatConsumerComponent;->create()Lcom/google/firebase/components/Component; +Lcom/google/firebase/heartbeatinfo/HeartBeatConsumerComponent$1; +HSPLcom/google/firebase/heartbeatinfo/HeartBeatConsumerComponent$1;->()V +Lcom/google/firebase/heartbeatinfo/HeartBeatController; +Lcom/google/firebase/heartbeatinfo/HeartBeatInfo; +Lcom/google/firebase/heartbeatinfo/HeartBeatInfoStorage; +HSPLcom/google/firebase/heartbeatinfo/HeartBeatInfoStorage;->()V +HSPLcom/google/firebase/heartbeatinfo/HeartBeatInfoStorage;->(Landroid/content/Context;Ljava/lang/String;)V +HSPLcom/google/firebase/heartbeatinfo/HeartBeatInfoStorage;->getFormattedDate(J)Ljava/lang/String; +HSPLcom/google/firebase/heartbeatinfo/HeartBeatInfoStorage;->getStoredUserAgentString(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/google/firebase/heartbeatinfo/HeartBeatInfoStorage;->storeHeartBeat(JLjava/lang/String;)V +Lcom/google/firebase/inject/Deferred; +Lcom/google/firebase/inject/Deferred$DeferredHandler; +Lcom/google/firebase/inject/Provider; +Lcom/google/firebase/installations/FirebaseInstallations; +HSPLcom/google/firebase/installations/FirebaseInstallations;->()V +HSPLcom/google/firebase/installations/FirebaseInstallations;->(Lcom/google/firebase/FirebaseApp;Lcom/google/firebase/inject/Provider;Ljava/util/concurrent/ExecutorService;Ljava/util/concurrent/Executor;)V +HSPLcom/google/firebase/installations/FirebaseInstallations;->(Ljava/util/concurrent/ExecutorService;Ljava/util/concurrent/Executor;Lcom/google/firebase/FirebaseApp;Lcom/google/firebase/installations/remote/FirebaseInstallationServiceClient;Lcom/google/firebase/installations/local/PersistedInstallation;Lcom/google/firebase/installations/Utils;Lcom/google/firebase/components/Lazy;Lcom/google/firebase/installations/RandomFidGenerator;)V +Lcom/google/firebase/installations/FirebaseInstallations$$ExternalSyntheticLambda4; +HSPLcom/google/firebase/installations/FirebaseInstallations$$ExternalSyntheticLambda4;->(Lcom/google/firebase/FirebaseApp;)V +Lcom/google/firebase/installations/FirebaseInstallations$1; +HSPLcom/google/firebase/installations/FirebaseInstallations$1;->()V +Lcom/google/firebase/installations/FirebaseInstallationsApi; +Lcom/google/firebase/installations/FirebaseInstallationsException; +Lcom/google/firebase/installations/FirebaseInstallationsKtxRegistrar; +HSPLcom/google/firebase/installations/FirebaseInstallationsKtxRegistrar;->()V +HSPLcom/google/firebase/installations/FirebaseInstallationsKtxRegistrar;->getComponents()Ljava/util/List; +Lcom/google/firebase/installations/FirebaseInstallationsRegistrar; +HSPLcom/google/firebase/installations/FirebaseInstallationsRegistrar;->()V +HSPLcom/google/firebase/installations/FirebaseInstallationsRegistrar;->getComponents()Ljava/util/List; +HSPLcom/google/firebase/installations/FirebaseInstallationsRegistrar;->lambda$getComponents$0(Lcom/google/firebase/components/ComponentContainer;)Lcom/google/firebase/installations/FirebaseInstallationsApi; +Lcom/google/firebase/installations/FirebaseInstallationsRegistrar$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/installations/FirebaseInstallationsRegistrar$$ExternalSyntheticLambda0;->()V +HSPLcom/google/firebase/installations/FirebaseInstallationsRegistrar$$ExternalSyntheticLambda0;->create(Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +Lcom/google/firebase/installations/RandomFidGenerator; +HSPLcom/google/firebase/installations/RandomFidGenerator;->()V +HSPLcom/google/firebase/installations/RandomFidGenerator;->()V +Lcom/google/firebase/installations/Utils; +HSPLcom/google/firebase/installations/Utils;->()V +HSPLcom/google/firebase/installations/Utils;->(Lcom/google/firebase/installations/time/Clock;)V +HSPLcom/google/firebase/installations/Utils;->getInstance()Lcom/google/firebase/installations/Utils; +HSPLcom/google/firebase/installations/Utils;->getInstance(Lcom/google/firebase/installations/time/Clock;)Lcom/google/firebase/installations/Utils; +Lcom/google/firebase/installations/local/PersistedInstallation; +HSPLcom/google/firebase/installations/local/PersistedInstallation;->(Lcom/google/firebase/FirebaseApp;)V +Lcom/google/firebase/installations/remote/FirebaseInstallationServiceClient; +HSPLcom/google/firebase/installations/remote/FirebaseInstallationServiceClient;->()V +HSPLcom/google/firebase/installations/remote/FirebaseInstallationServiceClient;->(Landroid/content/Context;Lcom/google/firebase/inject/Provider;)V +Lcom/google/firebase/installations/remote/RequestLimiter; +HSPLcom/google/firebase/installations/remote/RequestLimiter;->()V +HSPLcom/google/firebase/installations/remote/RequestLimiter;->()V +Lcom/google/firebase/installations/time/Clock; +Lcom/google/firebase/installations/time/SystemClock; +HSPLcom/google/firebase/installations/time/SystemClock;->()V +HSPLcom/google/firebase/installations/time/SystemClock;->getInstance()Lcom/google/firebase/installations/time/SystemClock; +Lcom/google/firebase/internal/DataCollectionConfigStorage; +HSPLcom/google/firebase/internal/DataCollectionConfigStorage;->(Landroid/content/Context;Ljava/lang/String;Lcom/google/firebase/events/Publisher;)V +HSPLcom/google/firebase/internal/DataCollectionConfigStorage;->directBootSafe(Landroid/content/Context;)Landroid/content/Context; +HSPLcom/google/firebase/internal/DataCollectionConfigStorage;->isEnabled()Z +HSPLcom/google/firebase/internal/DataCollectionConfigStorage;->readAutoDataCollectionEnabled()Z +HSPLcom/google/firebase/internal/DataCollectionConfigStorage;->readManifestDataCollectionEnabled()Z +Lcom/google/firebase/ktx/Firebase; +HSPLcom/google/firebase/ktx/Firebase;->()V +HSPLcom/google/firebase/ktx/Firebase;->()V +Lcom/google/firebase/ktx/FirebaseCommonLegacyRegistrar; +HSPLcom/google/firebase/ktx/FirebaseCommonLegacyRegistrar;->()V +HSPLcom/google/firebase/ktx/FirebaseCommonLegacyRegistrar;->getComponents()Ljava/util/List; +Lcom/google/firebase/platforminfo/AutoValue_LibraryVersion; +HSPLcom/google/firebase/platforminfo/AutoValue_LibraryVersion;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/google/firebase/platforminfo/AutoValue_LibraryVersion;->getLibraryName()Ljava/lang/String; +HSPLcom/google/firebase/platforminfo/AutoValue_LibraryVersion;->getVersion()Ljava/lang/String; +HSPLcom/google/firebase/platforminfo/AutoValue_LibraryVersion;->hashCode()I +Lcom/google/firebase/platforminfo/DefaultUserAgentPublisher; +HSPLcom/google/firebase/platforminfo/DefaultUserAgentPublisher;->(Ljava/util/Set;Lcom/google/firebase/platforminfo/GlobalLibraryVersionRegistrar;)V +HSPLcom/google/firebase/platforminfo/DefaultUserAgentPublisher;->component()Lcom/google/firebase/components/Component; +HSPLcom/google/firebase/platforminfo/DefaultUserAgentPublisher;->getUserAgent()Ljava/lang/String; +HSPLcom/google/firebase/platforminfo/DefaultUserAgentPublisher;->lambda$component$0(Lcom/google/firebase/components/ComponentContainer;)Lcom/google/firebase/platforminfo/UserAgentPublisher; +HSPLcom/google/firebase/platforminfo/DefaultUserAgentPublisher;->toUserAgent(Ljava/util/Set;)Ljava/lang/String; +Lcom/google/firebase/platforminfo/DefaultUserAgentPublisher$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/platforminfo/DefaultUserAgentPublisher$$ExternalSyntheticLambda0;->()V +HSPLcom/google/firebase/platforminfo/DefaultUserAgentPublisher$$ExternalSyntheticLambda0;->create(Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +Lcom/google/firebase/platforminfo/GlobalLibraryVersionRegistrar; +HSPLcom/google/firebase/platforminfo/GlobalLibraryVersionRegistrar;->()V +HSPLcom/google/firebase/platforminfo/GlobalLibraryVersionRegistrar;->getInstance()Lcom/google/firebase/platforminfo/GlobalLibraryVersionRegistrar; +HSPLcom/google/firebase/platforminfo/GlobalLibraryVersionRegistrar;->getRegisteredVersions()Ljava/util/Set; +Lcom/google/firebase/platforminfo/KotlinDetector; +HSPLcom/google/firebase/platforminfo/KotlinDetector;->detectVersion()Ljava/lang/String; +Lcom/google/firebase/platforminfo/LibraryVersion; +HSPLcom/google/firebase/platforminfo/LibraryVersion;->()V +HSPLcom/google/firebase/platforminfo/LibraryVersion;->create(Ljava/lang/String;Ljava/lang/String;)Lcom/google/firebase/platforminfo/LibraryVersion; +Lcom/google/firebase/platforminfo/LibraryVersionComponent; +HSPLcom/google/firebase/platforminfo/LibraryVersionComponent;->create(Ljava/lang/String;Ljava/lang/String;)Lcom/google/firebase/components/Component; +HSPLcom/google/firebase/platforminfo/LibraryVersionComponent;->fromContext(Ljava/lang/String;Lcom/google/firebase/platforminfo/LibraryVersionComponent$VersionExtractor;)Lcom/google/firebase/components/Component; +HSPLcom/google/firebase/platforminfo/LibraryVersionComponent;->lambda$fromContext$0(Ljava/lang/String;Lcom/google/firebase/platforminfo/LibraryVersionComponent$VersionExtractor;Lcom/google/firebase/components/ComponentContainer;)Lcom/google/firebase/platforminfo/LibraryVersion; +Lcom/google/firebase/platforminfo/LibraryVersionComponent$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/platforminfo/LibraryVersionComponent$$ExternalSyntheticLambda0;->(Ljava/lang/String;Lcom/google/firebase/platforminfo/LibraryVersionComponent$VersionExtractor;)V +HSPLcom/google/firebase/platforminfo/LibraryVersionComponent$$ExternalSyntheticLambda0;->create(Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +Lcom/google/firebase/platforminfo/LibraryVersionComponent$VersionExtractor; +Lcom/google/firebase/platforminfo/UserAgentPublisher; +Lcom/google/firebase/provider/FirebaseInitProvider; +HSPLcom/google/firebase/provider/FirebaseInitProvider;->()V +HSPLcom/google/firebase/provider/FirebaseInitProvider;->()V +HSPLcom/google/firebase/provider/FirebaseInitProvider;->attachInfo(Landroid/content/Context;Landroid/content/pm/ProviderInfo;)V +HSPLcom/google/firebase/provider/FirebaseInitProvider;->checkContentProviderAuthority(Landroid/content/pm/ProviderInfo;)V +HSPLcom/google/firebase/provider/FirebaseInitProvider;->getStartupTime()Lcom/google/firebase/StartupTime; +HSPLcom/google/firebase/provider/FirebaseInitProvider;->isCurrentlyInitializing()Z +HSPLcom/google/firebase/provider/FirebaseInitProvider;->onCreate()Z +Lcom/google/firebase/remoteconfig/interop/FirebaseRemoteConfigInterop; +Lcom/google/firebase/remoteconfig/interop/rollouts/RolloutsStateSubscriber; +Lcom/google/firebase/sessions/AndroidApplicationInfo; +HSPLcom/google/firebase/sessions/AndroidApplicationInfo;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/google/firebase/sessions/ProcessDetails;Ljava/util/List;)V +Lcom/google/firebase/sessions/ApplicationInfo; +HSPLcom/google/firebase/sessions/ApplicationInfo;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/google/firebase/sessions/LogEnvironment;Lcom/google/firebase/sessions/AndroidApplicationInfo;)V +Lcom/google/firebase/sessions/AutoSessionEventEncoder; +HSPLcom/google/firebase/sessions/AutoSessionEventEncoder;->()V +HSPLcom/google/firebase/sessions/AutoSessionEventEncoder;->()V +HSPLcom/google/firebase/sessions/AutoSessionEventEncoder;->configure(Lcom/google/firebase/encoders/config/EncoderConfig;)V +Lcom/google/firebase/sessions/AutoSessionEventEncoder$AndroidApplicationInfoEncoder; +HSPLcom/google/firebase/sessions/AutoSessionEventEncoder$AndroidApplicationInfoEncoder;->()V +HSPLcom/google/firebase/sessions/AutoSessionEventEncoder$AndroidApplicationInfoEncoder;->()V +Lcom/google/firebase/sessions/AutoSessionEventEncoder$ApplicationInfoEncoder; +HSPLcom/google/firebase/sessions/AutoSessionEventEncoder$ApplicationInfoEncoder;->()V +HSPLcom/google/firebase/sessions/AutoSessionEventEncoder$ApplicationInfoEncoder;->()V +Lcom/google/firebase/sessions/AutoSessionEventEncoder$DataCollectionStatusEncoder; +HSPLcom/google/firebase/sessions/AutoSessionEventEncoder$DataCollectionStatusEncoder;->()V +HSPLcom/google/firebase/sessions/AutoSessionEventEncoder$DataCollectionStatusEncoder;->()V +Lcom/google/firebase/sessions/AutoSessionEventEncoder$ProcessDetailsEncoder; +HSPLcom/google/firebase/sessions/AutoSessionEventEncoder$ProcessDetailsEncoder;->()V +HSPLcom/google/firebase/sessions/AutoSessionEventEncoder$ProcessDetailsEncoder;->()V +Lcom/google/firebase/sessions/AutoSessionEventEncoder$SessionEventEncoder; +HSPLcom/google/firebase/sessions/AutoSessionEventEncoder$SessionEventEncoder;->()V +HSPLcom/google/firebase/sessions/AutoSessionEventEncoder$SessionEventEncoder;->()V +Lcom/google/firebase/sessions/AutoSessionEventEncoder$SessionInfoEncoder; +HSPLcom/google/firebase/sessions/AutoSessionEventEncoder$SessionInfoEncoder;->()V +HSPLcom/google/firebase/sessions/AutoSessionEventEncoder$SessionInfoEncoder;->()V +Lcom/google/firebase/sessions/DataCollectionStatus; +Lcom/google/firebase/sessions/FirebaseSessions; +HSPLcom/google/firebase/sessions/FirebaseSessions;->()V +HSPLcom/google/firebase/sessions/FirebaseSessions;->(Lcom/google/firebase/FirebaseApp;Lcom/google/firebase/sessions/settings/SessionsSettings;Lkotlin/coroutines/CoroutineContext;)V +Lcom/google/firebase/sessions/FirebaseSessions$1; +HSPLcom/google/firebase/sessions/FirebaseSessions$1;->(Lcom/google/firebase/sessions/FirebaseSessions;Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/Continuation;)V +HSPLcom/google/firebase/sessions/FirebaseSessions$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/google/firebase/sessions/FirebaseSessions$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/google/firebase/sessions/FirebaseSessions$Companion; +HSPLcom/google/firebase/sessions/FirebaseSessions$Companion;->()V +HSPLcom/google/firebase/sessions/FirebaseSessions$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/google/firebase/sessions/FirebaseSessionsRegistrar; +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar;->$r8$lambda$JITndpZCWeA0w9BDlkcI3l22oGY(Lcom/google/firebase/components/ComponentContainer;)Lcom/google/firebase/sessions/FirebaseSessions; +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar;->$r8$lambda$lQmicvH5m7EC8I4trkeatnIrMEc(Lcom/google/firebase/components/ComponentContainer;)Lcom/google/firebase/sessions/settings/SessionsSettings; +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar;->()V +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar;->()V +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar;->getComponents$lambda-0(Lcom/google/firebase/components/ComponentContainer;)Lcom/google/firebase/sessions/FirebaseSessions; +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar;->getComponents$lambda-3(Lcom/google/firebase/components/ComponentContainer;)Lcom/google/firebase/sessions/settings/SessionsSettings; +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar;->getComponents()Ljava/util/List; +Lcom/google/firebase/sessions/FirebaseSessionsRegistrar$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar$$ExternalSyntheticLambda0;->()V +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar$$ExternalSyntheticLambda0;->create(Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +Lcom/google/firebase/sessions/FirebaseSessionsRegistrar$$ExternalSyntheticLambda1; +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar$$ExternalSyntheticLambda1;->()V +Lcom/google/firebase/sessions/FirebaseSessionsRegistrar$$ExternalSyntheticLambda2; +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar$$ExternalSyntheticLambda2;->()V +Lcom/google/firebase/sessions/FirebaseSessionsRegistrar$$ExternalSyntheticLambda3; +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar$$ExternalSyntheticLambda3;->()V +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar$$ExternalSyntheticLambda3;->create(Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +Lcom/google/firebase/sessions/FirebaseSessionsRegistrar$$ExternalSyntheticLambda4; +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar$$ExternalSyntheticLambda4;->()V +Lcom/google/firebase/sessions/FirebaseSessionsRegistrar$$ExternalSyntheticLambda5; +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar$$ExternalSyntheticLambda5;->()V +Lcom/google/firebase/sessions/FirebaseSessionsRegistrar$Companion; +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar$Companion;->()V +HSPLcom/google/firebase/sessions/FirebaseSessionsRegistrar$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/google/firebase/sessions/LogEnvironment; +HSPLcom/google/firebase/sessions/LogEnvironment;->$values()[Lcom/google/firebase/sessions/LogEnvironment; +HSPLcom/google/firebase/sessions/LogEnvironment;->()V +HSPLcom/google/firebase/sessions/LogEnvironment;->(Ljava/lang/String;II)V +Lcom/google/firebase/sessions/ProcessDetails; +HSPLcom/google/firebase/sessions/ProcessDetails;->(Ljava/lang/String;IIZ)V +HSPLcom/google/firebase/sessions/ProcessDetails;->getPid()I +Lcom/google/firebase/sessions/ProcessDetailsProvider; +HSPLcom/google/firebase/sessions/ProcessDetailsProvider;->()V +HSPLcom/google/firebase/sessions/ProcessDetailsProvider;->()V +HSPLcom/google/firebase/sessions/ProcessDetailsProvider;->getAppProcessDetails(Landroid/content/Context;)Ljava/util/List; +HSPLcom/google/firebase/sessions/ProcessDetailsProvider;->getCurrentProcessDetails(Landroid/content/Context;)Lcom/google/firebase/sessions/ProcessDetails; +HSPLcom/google/firebase/sessions/ProcessDetailsProvider;->getProcessName$com_google_firebase_firebase_sessions()Ljava/lang/String; +Lcom/google/firebase/sessions/SessionDataStoreConfigs; +HSPLcom/google/firebase/sessions/SessionDataStoreConfigs;->()V +HSPLcom/google/firebase/sessions/SessionDataStoreConfigs;->()V +HSPLcom/google/firebase/sessions/SessionDataStoreConfigs;->getSETTINGS_CONFIG_NAME()Ljava/lang/String; +Lcom/google/firebase/sessions/SessionDatastore; +Lcom/google/firebase/sessions/SessionEvent; +Lcom/google/firebase/sessions/SessionEvents; +HSPLcom/google/firebase/sessions/SessionEvents;->()V +HSPLcom/google/firebase/sessions/SessionEvents;->()V +HSPLcom/google/firebase/sessions/SessionEvents;->getApplicationInfo(Lcom/google/firebase/FirebaseApp;)Lcom/google/firebase/sessions/ApplicationInfo; +Lcom/google/firebase/sessions/SessionFirelogPublisher; +Lcom/google/firebase/sessions/SessionGenerator; +Lcom/google/firebase/sessions/SessionInfo; +Lcom/google/firebase/sessions/SessionLifecycleServiceBinder; +Lcom/google/firebase/sessions/SessionsActivityLifecycleCallbacks; +HSPLcom/google/firebase/sessions/SessionsActivityLifecycleCallbacks;->()V +HSPLcom/google/firebase/sessions/SessionsActivityLifecycleCallbacks;->()V +HSPLcom/google/firebase/sessions/SessionsActivityLifecycleCallbacks;->onActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V +HSPLcom/google/firebase/sessions/SessionsActivityLifecycleCallbacks;->onActivityResumed(Landroid/app/Activity;)V +HSPLcom/google/firebase/sessions/SessionsActivityLifecycleCallbacks;->onActivityStarted(Landroid/app/Activity;)V +Lcom/google/firebase/sessions/api/FirebaseSessionsDependencies; +HSPLcom/google/firebase/sessions/api/FirebaseSessionsDependencies;->()V +HSPLcom/google/firebase/sessions/api/FirebaseSessionsDependencies;->()V +HSPLcom/google/firebase/sessions/api/FirebaseSessionsDependencies;->addDependency(Lcom/google/firebase/sessions/api/SessionSubscriber$Name;)V +HSPLcom/google/firebase/sessions/api/FirebaseSessionsDependencies;->getDependency(Lcom/google/firebase/sessions/api/SessionSubscriber$Name;)Lcom/google/firebase/sessions/api/FirebaseSessionsDependencies$Dependency; +HSPLcom/google/firebase/sessions/api/FirebaseSessionsDependencies;->getRegisteredSubscribers$com_google_firebase_firebase_sessions(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/google/firebase/sessions/api/FirebaseSessionsDependencies;->getSubscriber$com_google_firebase_firebase_sessions(Lcom/google/firebase/sessions/api/SessionSubscriber$Name;)Lcom/google/firebase/sessions/api/SessionSubscriber; +HSPLcom/google/firebase/sessions/api/FirebaseSessionsDependencies;->register(Lcom/google/firebase/sessions/api/SessionSubscriber;)V +Lcom/google/firebase/sessions/api/FirebaseSessionsDependencies$Dependency; +HSPLcom/google/firebase/sessions/api/FirebaseSessionsDependencies$Dependency;->(Lkotlinx/coroutines/sync/Mutex;Lcom/google/firebase/sessions/api/SessionSubscriber;)V +HSPLcom/google/firebase/sessions/api/FirebaseSessionsDependencies$Dependency;->(Lkotlinx/coroutines/sync/Mutex;Lcom/google/firebase/sessions/api/SessionSubscriber;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/google/firebase/sessions/api/FirebaseSessionsDependencies$Dependency;->getMutex()Lkotlinx/coroutines/sync/Mutex; +HSPLcom/google/firebase/sessions/api/FirebaseSessionsDependencies$Dependency;->getSubscriber()Lcom/google/firebase/sessions/api/SessionSubscriber; +HSPLcom/google/firebase/sessions/api/FirebaseSessionsDependencies$Dependency;->setSubscriber(Lcom/google/firebase/sessions/api/SessionSubscriber;)V +Lcom/google/firebase/sessions/api/FirebaseSessionsDependencies$getRegisteredSubscribers$1; +HSPLcom/google/firebase/sessions/api/FirebaseSessionsDependencies$getRegisteredSubscribers$1;->(Lcom/google/firebase/sessions/api/FirebaseSessionsDependencies;Lkotlin/coroutines/Continuation;)V +Lcom/google/firebase/sessions/api/SessionSubscriber; +Lcom/google/firebase/sessions/api/SessionSubscriber$Name; +HSPLcom/google/firebase/sessions/api/SessionSubscriber$Name;->$values()[Lcom/google/firebase/sessions/api/SessionSubscriber$Name; +HSPLcom/google/firebase/sessions/api/SessionSubscriber$Name;->()V +HSPLcom/google/firebase/sessions/api/SessionSubscriber$Name;->(Ljava/lang/String;I)V +Lcom/google/firebase/sessions/settings/CrashlyticsSettingsFetcher; +Lcom/google/firebase/sessions/settings/LocalOverrideSettings; +HSPLcom/google/firebase/sessions/settings/LocalOverrideSettings;->()V +HSPLcom/google/firebase/sessions/settings/LocalOverrideSettings;->(Landroid/content/Context;)V +Lcom/google/firebase/sessions/settings/LocalOverrideSettings$Companion; +HSPLcom/google/firebase/sessions/settings/LocalOverrideSettings$Companion;->()V +HSPLcom/google/firebase/sessions/settings/LocalOverrideSettings$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/google/firebase/sessions/settings/RemoteSettings; +HSPLcom/google/firebase/sessions/settings/RemoteSettings;->()V +HSPLcom/google/firebase/sessions/settings/RemoteSettings;->(Lkotlin/coroutines/CoroutineContext;Lcom/google/firebase/installations/FirebaseInstallationsApi;Lcom/google/firebase/sessions/ApplicationInfo;Lcom/google/firebase/sessions/settings/CrashlyticsSettingsFetcher;Landroidx/datastore/core/DataStore;)V +Lcom/google/firebase/sessions/settings/RemoteSettings$Companion; +HSPLcom/google/firebase/sessions/settings/RemoteSettings$Companion;->()V +HSPLcom/google/firebase/sessions/settings/RemoteSettings$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/google/firebase/sessions/settings/RemoteSettingsFetcher; +HSPLcom/google/firebase/sessions/settings/RemoteSettingsFetcher;->()V +HSPLcom/google/firebase/sessions/settings/RemoteSettingsFetcher;->(Lcom/google/firebase/sessions/ApplicationInfo;Lkotlin/coroutines/CoroutineContext;Ljava/lang/String;)V +HSPLcom/google/firebase/sessions/settings/RemoteSettingsFetcher;->(Lcom/google/firebase/sessions/ApplicationInfo;Lkotlin/coroutines/CoroutineContext;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/google/firebase/sessions/settings/RemoteSettingsFetcher$Companion; +HSPLcom/google/firebase/sessions/settings/RemoteSettingsFetcher$Companion;->()V +HSPLcom/google/firebase/sessions/settings/RemoteSettingsFetcher$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/google/firebase/sessions/settings/SessionConfigs; +HSPLcom/google/firebase/sessions/settings/SessionConfigs;->(Ljava/lang/Boolean;Ljava/lang/Double;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Long;)V +Lcom/google/firebase/sessions/settings/SessionsSettings; +HSPLcom/google/firebase/sessions/settings/SessionsSettings;->()V +HSPLcom/google/firebase/sessions/settings/SessionsSettings;->(Landroid/content/Context;Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/CoroutineContext;Lcom/google/firebase/installations/FirebaseInstallationsApi;Lcom/google/firebase/sessions/ApplicationInfo;)V +HSPLcom/google/firebase/sessions/settings/SessionsSettings;->(Lcom/google/firebase/FirebaseApp;Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/CoroutineContext;Lcom/google/firebase/installations/FirebaseInstallationsApi;)V +HSPLcom/google/firebase/sessions/settings/SessionsSettings;->(Lcom/google/firebase/sessions/settings/SettingsProvider;Lcom/google/firebase/sessions/settings/SettingsProvider;)V +HSPLcom/google/firebase/sessions/settings/SessionsSettings;->access$getDataStore$delegate$cp()Lkotlin/properties/ReadOnlyProperty; +Lcom/google/firebase/sessions/settings/SessionsSettings$Companion; +HSPLcom/google/firebase/sessions/settings/SessionsSettings$Companion;->()V +HSPLcom/google/firebase/sessions/settings/SessionsSettings$Companion;->()V +HSPLcom/google/firebase/sessions/settings/SessionsSettings$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLcom/google/firebase/sessions/settings/SessionsSettings$Companion;->access$getDataStore(Lcom/google/firebase/sessions/settings/SessionsSettings$Companion;Landroid/content/Context;)Landroidx/datastore/core/DataStore; +HSPLcom/google/firebase/sessions/settings/SessionsSettings$Companion;->getDataStore(Landroid/content/Context;)Landroidx/datastore/core/DataStore; +Lcom/google/firebase/sessions/settings/SettingsCache; +HSPLcom/google/firebase/sessions/settings/SettingsCache;->()V +HSPLcom/google/firebase/sessions/settings/SettingsCache;->(Landroidx/datastore/core/DataStore;)V +HSPLcom/google/firebase/sessions/settings/SettingsCache;->access$getDataStore$p(Lcom/google/firebase/sessions/settings/SettingsCache;)Landroidx/datastore/core/DataStore; +HSPLcom/google/firebase/sessions/settings/SettingsCache;->access$updateSessionConfigs(Lcom/google/firebase/sessions/settings/SettingsCache;Landroidx/datastore/preferences/core/Preferences;)V +HSPLcom/google/firebase/sessions/settings/SettingsCache;->updateSessionConfigs(Landroidx/datastore/preferences/core/Preferences;)V +Lcom/google/firebase/sessions/settings/SettingsCache$1; +HSPLcom/google/firebase/sessions/settings/SettingsCache$1;->(Lcom/google/firebase/sessions/settings/SettingsCache;Lkotlin/coroutines/Continuation;)V +HSPLcom/google/firebase/sessions/settings/SettingsCache$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/google/firebase/sessions/settings/SettingsCache$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/google/firebase/sessions/settings/SettingsCache$Companion; +HSPLcom/google/firebase/sessions/settings/SettingsCache$Companion;->()V +HSPLcom/google/firebase/sessions/settings/SettingsCache$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lcom/google/firebase/sessions/settings/SettingsProvider; +Lcom/google/firebase/tracing/ComponentMonitor; +HSPLcom/google/firebase/tracing/ComponentMonitor;->()V +HSPLcom/google/firebase/tracing/ComponentMonitor;->lambda$processRegistrar$0(Ljava/lang/String;Lcom/google/firebase/components/Component;Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +HSPLcom/google/firebase/tracing/ComponentMonitor;->processRegistrar(Lcom/google/firebase/components/ComponentRegistrar;)Ljava/util/List; +Lcom/google/firebase/tracing/ComponentMonitor$$ExternalSyntheticLambda0; +HSPLcom/google/firebase/tracing/ComponentMonitor$$ExternalSyntheticLambda0;->(Ljava/lang/String;Lcom/google/firebase/components/Component;)V +HSPLcom/google/firebase/tracing/ComponentMonitor$$ExternalSyntheticLambda0;->create(Lcom/google/firebase/components/ComponentContainer;)Ljava/lang/Object; +Lcom/google/firebase/tracing/FirebaseTrace; +HSPLcom/google/firebase/tracing/FirebaseTrace;->popTrace()V +HSPLcom/google/firebase/tracing/FirebaseTrace;->pushTrace(Ljava/lang/String;)V +Lcom/google/mlkit/common/internal/CommonComponentRegistrar; +HSPLcom/google/mlkit/common/internal/CommonComponentRegistrar;->()V +HSPLcom/google/mlkit/common/internal/CommonComponentRegistrar;->getComponents()Ljava/util/List; +Lcom/google/mlkit/common/internal/MlKitComponentDiscoveryService; +Lcom/google/mlkit/common/internal/MlKitInitProvider; +HSPLcom/google/mlkit/common/internal/MlKitInitProvider;->()V +HSPLcom/google/mlkit/common/internal/MlKitInitProvider;->attachInfo(Landroid/content/Context;Landroid/content/pm/ProviderInfo;)V +HSPLcom/google/mlkit/common/internal/MlKitInitProvider;->onCreate()Z +Lcom/google/mlkit/common/internal/model/zzg; +Lcom/google/mlkit/common/internal/zza; +HSPLcom/google/mlkit/common/internal/zza;->()V +HSPLcom/google/mlkit/common/internal/zza;->()V +Lcom/google/mlkit/common/internal/zzb; +HSPLcom/google/mlkit/common/internal/zzb;->()V +HSPLcom/google/mlkit/common/internal/zzb;->()V +Lcom/google/mlkit/common/internal/zzc; +HSPLcom/google/mlkit/common/internal/zzc;->()V +HSPLcom/google/mlkit/common/internal/zzc;->()V +Lcom/google/mlkit/common/internal/zzd; +HSPLcom/google/mlkit/common/internal/zzd;->()V +HSPLcom/google/mlkit/common/internal/zzd;->()V +Lcom/google/mlkit/common/internal/zze; +HSPLcom/google/mlkit/common/internal/zze;->()V +HSPLcom/google/mlkit/common/internal/zze;->()V +Lcom/google/mlkit/common/internal/zzf; +HSPLcom/google/mlkit/common/internal/zzf;->()V +HSPLcom/google/mlkit/common/internal/zzf;->()V +Lcom/google/mlkit/common/internal/zzg; +HSPLcom/google/mlkit/common/internal/zzg;->()V +HSPLcom/google/mlkit/common/internal/zzg;->()V +Lcom/google/mlkit/common/internal/zzh; +HSPLcom/google/mlkit/common/internal/zzh;->()V +HSPLcom/google/mlkit/common/internal/zzh;->()V +Lcom/google/mlkit/common/model/RemoteModelManager; +Lcom/google/mlkit/common/model/RemoteModelManager$RemoteModelManagerRegistration; +Lcom/google/mlkit/common/sdkinternal/Cleaner; +Lcom/google/mlkit/common/sdkinternal/CloseGuard$Factory; +Lcom/google/mlkit/common/sdkinternal/ExecutorSelector; +Lcom/google/mlkit/common/sdkinternal/LazyInstanceMap; +Lcom/google/mlkit/common/sdkinternal/MlKitContext; +HSPLcom/google/mlkit/common/sdkinternal/MlKitContext;->()V +HSPLcom/google/mlkit/common/sdkinternal/MlKitContext;->()V +HSPLcom/google/mlkit/common/sdkinternal/MlKitContext;->zza(Landroid/content/Context;)Lcom/google/mlkit/common/sdkinternal/MlKitContext; +HSPLcom/google/mlkit/common/sdkinternal/MlKitContext;->zzb(Landroid/content/Context;)Landroid/content/Context; +Lcom/google/mlkit/common/sdkinternal/MlKitThreadPool; +Lcom/google/mlkit/common/sdkinternal/SharedPrefManager; +HSPLcom/google/mlkit/common/sdkinternal/SharedPrefManager;->()V +Lcom/google/mlkit/common/sdkinternal/model/ModelFileHelper; +Lcom/google/mlkit/common/sdkinternal/model/RemoteModelManagerInterface; +Lcom/google/mlkit/common/sdkinternal/zzs; +HSPLcom/google/mlkit/common/sdkinternal/zzs;->()V +HSPLcom/google/mlkit/common/sdkinternal/zzs;->()V +Lcom/google/mlkit/vision/barcode/internal/BarcodeRegistrar; +HSPLcom/google/mlkit/vision/barcode/internal/BarcodeRegistrar;->()V +HSPLcom/google/mlkit/vision/barcode/internal/BarcodeRegistrar;->getComponents()Ljava/util/List; +Lcom/google/mlkit/vision/barcode/internal/zzc; +HSPLcom/google/mlkit/vision/barcode/internal/zzc;->()V +HSPLcom/google/mlkit/vision/barcode/internal/zzc;->()V +Lcom/google/mlkit/vision/barcode/internal/zzd; +HSPLcom/google/mlkit/vision/barcode/internal/zzd;->()V +HSPLcom/google/mlkit/vision/barcode/internal/zzd;->()V +Lcom/google/mlkit/vision/barcode/internal/zzg; +Lcom/google/mlkit/vision/barcode/internal/zzh; +Lcom/google/mlkit/vision/common/internal/MultiFlavorDetectorCreator; +Lcom/google/mlkit/vision/common/internal/MultiFlavorDetectorCreator$Registration; +Lcom/google/mlkit/vision/common/internal/VisionCommonRegistrar; +HSPLcom/google/mlkit/vision/common/internal/VisionCommonRegistrar;->()V +HSPLcom/google/mlkit/vision/common/internal/VisionCommonRegistrar;->getComponents()Ljava/util/List; +Lcom/google/mlkit/vision/common/internal/zzf; +HSPLcom/google/mlkit/vision/common/internal/zzf;->()V +HSPLcom/google/mlkit/vision/common/internal/zzf;->()V +Ldb_key_value/crypto_prefs/SecurePrefKeyValueStore; +HSPLdb_key_value/crypto_prefs/SecurePrefKeyValueStore;->()V +HSPLdb_key_value/crypto_prefs/SecurePrefKeyValueStore;->(Landroid/content/Context;Ljava/lang/String;)V +HSPLdb_key_value/crypto_prefs/SecurePrefKeyValueStore;->getBoolean(Ljava/lang/String;Z)Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLdb_key_value/crypto_prefs/SecurePrefKeyValueStore;->getLong(Ljava/lang/String;J)Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLdb_key_value/crypto_prefs/SecurePrefKeyValueStore;->getString(Ljava/lang/String;Ljava/lang/String;)Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +Ldb_key_value/crypto_prefs/SecurePrefKeyValueStore$1; +HSPLdb_key_value/crypto_prefs/SecurePrefKeyValueStore$1;->(Landroid/content/Context;Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +HSPLdb_key_value/crypto_prefs/SecurePrefKeyValueStore$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLdb_key_value/crypto_prefs/SecurePrefKeyValueStore$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLdb_key_value/crypto_prefs/SecurePrefKeyValueStore$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLdb_key_value/crypto_prefs/SecurePrefKeyValueStore$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Ldb_key_value/crypto_prefs/SecurePrefKeyValueStoreKt; +HSPLdb_key_value/crypto_prefs/SecurePrefKeyValueStoreKt;->access$getEncryptedSharedPrefsOrRecreate(Landroid/content/Context;Ljava/lang/String;)Landroid/content/SharedPreferences; +HSPLdb_key_value/crypto_prefs/SecurePrefKeyValueStoreKt;->getEncryptedSharedPrefs(Landroid/content/Context;Ljava/lang/String;)Landroid/content/SharedPreferences; +HSPLdb_key_value/crypto_prefs/SecurePrefKeyValueStoreKt;->getEncryptedSharedPrefsOrRecreate(Landroid/content/Context;Ljava/lang/String;)Landroid/content/SharedPreferences; +HSPLdb_key_value/crypto_prefs/SecurePrefKeyValueStoreKt;->getMasterKeyAlias(Landroid/content/Context;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)Landroidx/security/crypto/MasterKey; +Ldb_key_value/crypto_prefs/SecurePrefKeyValueStoreKt$getEncryptedSharedPrefs$1$masterKeyAlias$1; +HSPLdb_key_value/crypto_prefs/SecurePrefKeyValueStoreKt$getEncryptedSharedPrefs$1$masterKeyAlias$1;->(Landroid/content/Context;Ljava/lang/String;)V +Ldb_key_value/shared_prefs/SharedPrefsKeyValuePreference; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference;->()V +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference;->(Lkotlin/jvm/functions/Function1;)V +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference;->access$getPref(Ldb_key_value/shared_prefs/SharedPrefsKeyValuePreference;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference;->flowOfPref()Lkotlinx/coroutines/flow/Flow; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference;->getPref(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference;->setAndCommit(Ljava/lang/Object;)Lkotlin/jvm/functions/Function1; +Ldb_key_value/shared_prefs/SharedPrefsKeyValuePreference$flowOfPref$1; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$flowOfPref$1;->(Ldb_key_value/shared_prefs/SharedPrefsKeyValuePreference;Lkotlin/coroutines/Continuation;)V +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$flowOfPref$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$flowOfPref$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$flowOfPref$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$flowOfPref$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Ldb_key_value/shared_prefs/SharedPrefsKeyValuePreference$flowOfPref$1$1; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$flowOfPref$1$1;->(Ldb_key_value/shared_prefs/SharedPrefsKeyValuePreference;Lkotlin/coroutines/Continuation;)V +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$flowOfPref$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$flowOfPref$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Ldb_key_value/shared_prefs/SharedPrefsKeyValuePreference$flowOfPref$1$2; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$flowOfPref$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$flowOfPref$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Ldb_key_value/shared_prefs/SharedPrefsKeyValuePreference$getPref$1; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$getPref$1;->(Ldb_key_value/shared_prefs/SharedPrefsKeyValuePreference;Lkotlin/coroutines/Continuation;)V +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$getPref$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Ldb_key_value/shared_prefs/SharedPrefsKeyValuePreference$setAndCommit$$inlined$ioEffect$1; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$setAndCommit$$inlined$ioEffect$1;->(Lkotlin/coroutines/Continuation;Lkotlin/coroutines/CoroutineContext;Ldb_key_value/shared_prefs/SharedPrefsKeyValuePreference;Ljava/lang/Object;)V +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$setAndCommit$$inlined$ioEffect$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$setAndCommit$$inlined$ioEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$setAndCommit$$inlined$ioEffect$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$setAndCommit$$inlined$ioEffect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Ldb_key_value/shared_prefs/SharedPrefsKeyValuePreference$setAndCommit$$inlined$ioEffect$1$1; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$setAndCommit$$inlined$ioEffect$1$1;->(Lkotlin/coroutines/Continuation;Ldb_key_value/shared_prefs/SharedPrefsKeyValuePreference;Ljava/lang/Object;)V +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$setAndCommit$$inlined$ioEffect$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValuePreference$setAndCommit$$inlined$ioEffect$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Ldb_key_value/shared_prefs/SharedPrefsKeyValueStore; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore;->()V +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore;->(Landroid/content/Context;Ljava/lang/String;)V +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore;->(Lkotlin/jvm/functions/Function1;)V +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore;->access$getFlowPrefs(Ldb_key_value/shared_prefs/SharedPrefsKeyValueStore;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore;->getBoolean(Ljava/lang/String;Z)Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore;->getFlowPrefs(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore;->getLong(Ljava/lang/String;J)Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore;->getString(Ljava/lang/String;Ljava/lang/String;)Lcom/artemchep/keyguard/common/service/keyvalue/KeyValuePreference; +Ldb_key_value/shared_prefs/SharedPrefsKeyValueStore$1; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$1;->(Landroid/content/Context;Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Ldb_key_value/shared_prefs/SharedPrefsKeyValueStore$getBoolean$1; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getBoolean$1;->(Ldb_key_value/shared_prefs/SharedPrefsKeyValueStore;Ljava/lang/String;ZLkotlin/coroutines/Continuation;)V +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getBoolean$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getBoolean$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getBoolean$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getBoolean$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Ldb_key_value/shared_prefs/SharedPrefsKeyValueStore$getFlowPrefs$1; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getFlowPrefs$1;->(Ldb_key_value/shared_prefs/SharedPrefsKeyValueStore;Lkotlin/coroutines/Continuation;)V +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getFlowPrefs$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Ldb_key_value/shared_prefs/SharedPrefsKeyValueStore$getLong$1; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getLong$1;->(Ldb_key_value/shared_prefs/SharedPrefsKeyValueStore;Ljava/lang/String;JLkotlin/coroutines/Continuation;)V +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getLong$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getLong$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getLong$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getLong$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Ldb_key_value/shared_prefs/SharedPrefsKeyValueStore$getString$1; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getString$1;->(Ldb_key_value/shared_prefs/SharedPrefsKeyValueStore;Ljava/lang/String;Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getString$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getString$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getString$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLdb_key_value/shared_prefs/SharedPrefsKeyValueStore$getString$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Ldev/icerock/moko/resources/FontResource; +HSPLdev/icerock/moko/resources/FontResource;->()V +HSPLdev/icerock/moko/resources/FontResource;->(I)V +HSPLdev/icerock/moko/resources/FontResource;->getFontResourceId()I +Ldev/icerock/moko/resources/FontResource$Creator; +HSPLdev/icerock/moko/resources/FontResource$Creator;->()V +Ldev/icerock/moko/resources/ResourceContainer; +Ldev/icerock/moko/resources/StringResource; +HSPLdev/icerock/moko/resources/StringResource;->()V +HSPLdev/icerock/moko/resources/StringResource;->(I)V +HSPLdev/icerock/moko/resources/StringResource;->getResourceId()I +Ldev/icerock/moko/resources/StringResource$Creator; +HSPLdev/icerock/moko/resources/StringResource$Creator;->()V +Ldev/icerock/moko/resources/compose/FontResource_androidKt; +HSPLdev/icerock/moko/resources/compose/FontResource_androidKt;->asFont-DnXFreY(Ldev/icerock/moko/resources/FontResource;Landroidx/compose/ui/text/font/FontWeight;ILandroidx/compose/runtime/Composer;II)Landroidx/compose/ui/text/font/Font; +Ldev/icerock/moko/resources/compose/FontResource_commonKt; +HSPLdev/icerock/moko/resources/compose/FontResource_commonKt;->fontFamilyResource(Ldev/icerock/moko/resources/FontResource;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/text/font/FontFamily; +Ldev/icerock/moko/resources/compose/StringResourceKt; +HSPLdev/icerock/moko/resources/compose/StringResourceKt;->stringResource(Ldev/icerock/moko/resources/StringResource;Landroidx/compose/runtime/Composer;I)Ljava/lang/String; +Ldev/icerock/moko/resources/desc/ResourceFormattedStringDesc; +HSPLdev/icerock/moko/resources/desc/ResourceFormattedStringDesc;->(Ldev/icerock/moko/resources/StringResource;Ljava/util/List;)V +HSPLdev/icerock/moko/resources/desc/ResourceFormattedStringDesc;->toString(Landroid/content/Context;)Ljava/lang/String; +Ldev/icerock/moko/resources/desc/ResourceFormattedStringDescKt; +HSPLdev/icerock/moko/resources/desc/ResourceFormattedStringDescKt;->ResourceFormatted(Ldev/icerock/moko/resources/desc/StringDesc$Companion;Ldev/icerock/moko/resources/StringResource;[Ljava/lang/Object;)Ldev/icerock/moko/resources/desc/ResourceFormattedStringDesc; +Ldev/icerock/moko/resources/desc/ResourceStringDesc; +HSPLdev/icerock/moko/resources/desc/ResourceStringDesc;->()V +HSPLdev/icerock/moko/resources/desc/ResourceStringDesc;->(Ldev/icerock/moko/resources/StringResource;)V +HSPLdev/icerock/moko/resources/desc/ResourceStringDesc;->toString(Landroid/content/Context;)Ljava/lang/String; +Ldev/icerock/moko/resources/desc/ResourceStringDesc$Creator; +HSPLdev/icerock/moko/resources/desc/ResourceStringDesc$Creator;->()V +Ldev/icerock/moko/resources/desc/ResourceStringDescKt; +HSPLdev/icerock/moko/resources/desc/ResourceStringDescKt;->Resource(Ldev/icerock/moko/resources/desc/StringDesc$Companion;Ldev/icerock/moko/resources/StringResource;)Ldev/icerock/moko/resources/desc/ResourceStringDesc; +Ldev/icerock/moko/resources/desc/StringDesc; +HSPLdev/icerock/moko/resources/desc/StringDesc;->()V +Ldev/icerock/moko/resources/desc/StringDesc$Companion; +HSPLdev/icerock/moko/resources/desc/StringDesc$Companion;->()V +HSPLdev/icerock/moko/resources/desc/StringDesc$Companion;->()V +HSPLdev/icerock/moko/resources/desc/StringDesc$Companion;->getLocaleType()Ldev/icerock/moko/resources/desc/StringDesc$LocaleType; +Ldev/icerock/moko/resources/desc/StringDesc$LocaleType; +HSPLdev/icerock/moko/resources/desc/StringDesc$LocaleType;->()V +HSPLdev/icerock/moko/resources/desc/StringDesc$LocaleType;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Ldev/icerock/moko/resources/desc/StringDesc$LocaleType$System; +HSPLdev/icerock/moko/resources/desc/StringDesc$LocaleType$System;->()V +HSPLdev/icerock/moko/resources/desc/StringDesc$LocaleType$System;->()V +HSPLdev/icerock/moko/resources/desc/StringDesc$LocaleType$System;->getSystemLocale()Ljava/util/Locale; +Ldev/icerock/moko/resources/desc/Utils; +HSPLdev/icerock/moko/resources/desc/Utils;->()V +HSPLdev/icerock/moko/resources/desc/Utils;->()V +HSPLdev/icerock/moko/resources/desc/Utils;->localizedContext(Landroid/content/Context;)Landroid/content/Context; +HSPLdev/icerock/moko/resources/desc/Utils;->processArgs(Ljava/util/List;Landroid/content/Context;)[Ljava/lang/Object; +HSPLdev/icerock/moko/resources/desc/Utils;->resourcesForContext(Landroid/content/Context;)Landroid/content/res/Resources; +Lio/ktor/client/HttpClient; +HSPLio/ktor/client/HttpClient;->()V +HSPLio/ktor/client/HttpClient;->(Lio/ktor/client/engine/HttpClientEngine;Lio/ktor/client/HttpClientConfig;)V +HSPLio/ktor/client/HttpClient;->(Lio/ktor/client/engine/HttpClientEngine;Lio/ktor/client/HttpClientConfig;Z)V +HSPLio/ktor/client/HttpClient;->getAttributes()Lio/ktor/util/Attributes; +HSPLio/ktor/client/HttpClient;->getConfig$ktor_client_core()Lio/ktor/client/HttpClientConfig; +HSPLio/ktor/client/HttpClient;->getCoroutineContext()Lkotlin/coroutines/CoroutineContext; +HSPLio/ktor/client/HttpClient;->getEngine()Lio/ktor/client/engine/HttpClientEngine; +HSPLio/ktor/client/HttpClient;->getReceivePipeline()Lio/ktor/client/statement/HttpReceivePipeline; +HSPLio/ktor/client/HttpClient;->getRequestPipeline()Lio/ktor/client/request/HttpRequestPipeline; +HSPLio/ktor/client/HttpClient;->getResponsePipeline()Lio/ktor/client/statement/HttpResponsePipeline; +HSPLio/ktor/client/HttpClient;->getSendPipeline()Lio/ktor/client/request/HttpSendPipeline; +Lio/ktor/client/HttpClient$2; +HSPLio/ktor/client/HttpClient$2;->(Lio/ktor/client/HttpClient;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/HttpClient$3$1; +HSPLio/ktor/client/HttpClient$3$1;->()V +HSPLio/ktor/client/HttpClient$3$1;->()V +HSPLio/ktor/client/HttpClient$3$1;->invoke(Lio/ktor/client/HttpClient;)V +HSPLio/ktor/client/HttpClient$3$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/HttpClient$4; +HSPLio/ktor/client/HttpClient$4;->(Lio/ktor/client/HttpClient;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/HttpClientConfig; +HSPLio/ktor/client/HttpClientConfig;->()V +HSPLio/ktor/client/HttpClientConfig;->access$getPluginConfigurations$p(Lio/ktor/client/HttpClientConfig;)Ljava/util/Map; +HSPLio/ktor/client/HttpClientConfig;->engine(Lkotlin/jvm/functions/Function1;)V +HSPLio/ktor/client/HttpClientConfig;->getDevelopmentMode()Z +HSPLio/ktor/client/HttpClientConfig;->getEngineConfig$ktor_client_core()Lkotlin/jvm/functions/Function1; +HSPLio/ktor/client/HttpClientConfig;->getExpectSuccess()Z +HSPLio/ktor/client/HttpClientConfig;->getFollowRedirects()Z +HSPLio/ktor/client/HttpClientConfig;->getUseDefaultTransformers()Z +HSPLio/ktor/client/HttpClientConfig;->install$default(Lio/ktor/client/HttpClientConfig;Lio/ktor/client/plugins/HttpClientPlugin;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +HSPLio/ktor/client/HttpClientConfig;->install(Lio/ktor/client/HttpClient;)V +HSPLio/ktor/client/HttpClientConfig;->install(Lio/ktor/client/plugins/HttpClientPlugin;Lkotlin/jvm/functions/Function1;)V +HSPLio/ktor/client/HttpClientConfig;->install(Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V +HSPLio/ktor/client/HttpClientConfig;->plusAssign(Lio/ktor/client/HttpClientConfig;)V +Lio/ktor/client/HttpClientConfig$engine$1; +HSPLio/ktor/client/HttpClientConfig$engine$1;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLio/ktor/client/HttpClientConfig$engine$1;->invoke(Lio/ktor/client/engine/HttpClientEngineConfig;)V +HSPLio/ktor/client/HttpClientConfig$engine$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/HttpClientConfig$engineConfig$1; +HSPLio/ktor/client/HttpClientConfig$engineConfig$1;->()V +HSPLio/ktor/client/HttpClientConfig$engineConfig$1;->()V +HSPLio/ktor/client/HttpClientConfig$engineConfig$1;->invoke(Lio/ktor/client/engine/HttpClientEngineConfig;)V +HSPLio/ktor/client/HttpClientConfig$engineConfig$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/HttpClientConfig$install$1; +HSPLio/ktor/client/HttpClientConfig$install$1;->()V +HSPLio/ktor/client/HttpClientConfig$install$1;->()V +HSPLio/ktor/client/HttpClientConfig$install$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLio/ktor/client/HttpClientConfig$install$1;->invoke(Ljava/lang/Object;)V +Lio/ktor/client/HttpClientConfig$install$2; +HSPLio/ktor/client/HttpClientConfig$install$2;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLio/ktor/client/HttpClientConfig$install$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLio/ktor/client/HttpClientConfig$install$2;->invoke(Ljava/lang/Object;)V +Lio/ktor/client/HttpClientConfig$install$3; +HSPLio/ktor/client/HttpClientConfig$install$3;->(Lio/ktor/client/plugins/HttpClientPlugin;)V +HSPLio/ktor/client/HttpClientConfig$install$3;->invoke(Lio/ktor/client/HttpClient;)V +HSPLio/ktor/client/HttpClientConfig$install$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/HttpClientConfig$install$3$attributes$1; +HSPLio/ktor/client/HttpClientConfig$install$3$attributes$1;->()V +HSPLio/ktor/client/HttpClientConfig$install$3$attributes$1;->()V +HSPLio/ktor/client/HttpClientConfig$install$3$attributes$1;->invoke()Lio/ktor/util/Attributes; +HSPLio/ktor/client/HttpClientConfig$install$3$attributes$1;->invoke()Ljava/lang/Object; +Lio/ktor/client/HttpClientKt; +HSPLio/ktor/client/HttpClientKt;->HttpClient(Lio/ktor/client/engine/HttpClientEngineFactory;Lkotlin/jvm/functions/Function1;)Lio/ktor/client/HttpClient; +Lio/ktor/client/HttpClientKt$HttpClient$2; +HSPLio/ktor/client/HttpClientKt$HttpClient$2;->(Lio/ktor/client/engine/HttpClientEngine;)V +Lio/ktor/client/content/ProgressListener; +Lio/ktor/client/engine/HttpClientEngine; +Lio/ktor/client/engine/HttpClientEngine$DefaultImpls; +HSPLio/ktor/client/engine/HttpClientEngine$DefaultImpls;->install(Lio/ktor/client/engine/HttpClientEngine;Lio/ktor/client/HttpClient;)V +Lio/ktor/client/engine/HttpClientEngine$install$1; +HSPLio/ktor/client/engine/HttpClientEngine$install$1;->(Lio/ktor/client/HttpClient;Lio/ktor/client/engine/HttpClientEngine;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/engine/HttpClientEngineBase; +HSPLio/ktor/client/engine/HttpClientEngineBase;->()V +HSPLio/ktor/client/engine/HttpClientEngineBase;->(Ljava/lang/String;)V +HSPLio/ktor/client/engine/HttpClientEngineBase;->access$getEngineName$p(Lio/ktor/client/engine/HttpClientEngineBase;)Ljava/lang/String; +HSPLio/ktor/client/engine/HttpClientEngineBase;->getCoroutineContext()Lkotlin/coroutines/CoroutineContext; +HSPLio/ktor/client/engine/HttpClientEngineBase;->getDispatcher()Lkotlinx/coroutines/CoroutineDispatcher; +HSPLio/ktor/client/engine/HttpClientEngineBase;->install(Lio/ktor/client/HttpClient;)V +Lio/ktor/client/engine/HttpClientEngineBase$coroutineContext$2; +HSPLio/ktor/client/engine/HttpClientEngineBase$coroutineContext$2;->(Lio/ktor/client/engine/HttpClientEngineBase;)V +HSPLio/ktor/client/engine/HttpClientEngineBase$coroutineContext$2;->invoke()Ljava/lang/Object; +HSPLio/ktor/client/engine/HttpClientEngineBase$coroutineContext$2;->invoke()Lkotlin/coroutines/CoroutineContext; +Lio/ktor/client/engine/HttpClientEngineBase_jvmKt; +HSPLio/ktor/client/engine/HttpClientEngineBase_jvmKt;->ioDispatcher()Lkotlinx/coroutines/CoroutineDispatcher; +Lio/ktor/client/engine/HttpClientEngineCapability; +Lio/ktor/client/engine/HttpClientEngineConfig; +HSPLio/ktor/client/engine/HttpClientEngineConfig;->()V +Lio/ktor/client/engine/HttpClientEngineFactory; +Lio/ktor/client/engine/okhttp/OkHttp; +HSPLio/ktor/client/engine/okhttp/OkHttp;->()V +HSPLio/ktor/client/engine/okhttp/OkHttp;->()V +HSPLio/ktor/client/engine/okhttp/OkHttp;->create(Lkotlin/jvm/functions/Function1;)Lio/ktor/client/engine/HttpClientEngine; +Lio/ktor/client/engine/okhttp/OkHttpConfig; +HSPLio/ktor/client/engine/okhttp/OkHttpConfig;->()V +HSPLio/ktor/client/engine/okhttp/OkHttpConfig;->getClientCacheSize()I +HSPLio/ktor/client/engine/okhttp/OkHttpConfig;->setPreconfigured(Lokhttp3/OkHttpClient;)V +Lio/ktor/client/engine/okhttp/OkHttpConfig$config$1; +HSPLio/ktor/client/engine/okhttp/OkHttpConfig$config$1;->()V +HSPLio/ktor/client/engine/okhttp/OkHttpConfig$config$1;->()V +Lio/ktor/client/engine/okhttp/OkHttpEngine; +HSPLio/ktor/client/engine/okhttp/OkHttpEngine;->()V +HSPLio/ktor/client/engine/okhttp/OkHttpEngine;->(Lio/ktor/client/engine/okhttp/OkHttpConfig;)V +HSPLio/ktor/client/engine/okhttp/OkHttpEngine;->access$getRequestsJob$p(Lio/ktor/client/engine/okhttp/OkHttpEngine;)Lkotlin/coroutines/CoroutineContext; +HSPLio/ktor/client/engine/okhttp/OkHttpEngine;->getConfig()Lio/ktor/client/engine/HttpClientEngineConfig; +HSPLio/ktor/client/engine/okhttp/OkHttpEngine;->getConfig()Lio/ktor/client/engine/okhttp/OkHttpConfig; +HSPLio/ktor/client/engine/okhttp/OkHttpEngine;->getCoroutineContext()Lkotlin/coroutines/CoroutineContext; +HSPLio/ktor/client/engine/okhttp/OkHttpEngine;->getSupportedCapabilities()Ljava/util/Set; +Lio/ktor/client/engine/okhttp/OkHttpEngine$1; +HSPLio/ktor/client/engine/okhttp/OkHttpEngine$1;->(Lio/ktor/client/engine/okhttp/OkHttpEngine;Lkotlin/coroutines/Continuation;)V +HSPLio/ktor/client/engine/okhttp/OkHttpEngine$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLio/ktor/client/engine/okhttp/OkHttpEngine$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/engine/okhttp/OkHttpEngine$Companion; +HSPLio/ktor/client/engine/okhttp/OkHttpEngine$Companion;->()V +HSPLio/ktor/client/engine/okhttp/OkHttpEngine$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lio/ktor/client/engine/okhttp/OkHttpEngine$Companion$okHttpClientPrototype$2; +HSPLio/ktor/client/engine/okhttp/OkHttpEngine$Companion$okHttpClientPrototype$2;->()V +HSPLio/ktor/client/engine/okhttp/OkHttpEngine$Companion$okHttpClientPrototype$2;->()V +Lio/ktor/client/engine/okhttp/OkHttpEngine$clientCache$1; +HSPLio/ktor/client/engine/okhttp/OkHttpEngine$clientCache$1;->(Ljava/lang/Object;)V +Lio/ktor/client/engine/okhttp/OkHttpEngine$clientCache$2; +HSPLio/ktor/client/engine/okhttp/OkHttpEngine$clientCache$2;->()V +HSPLio/ktor/client/engine/okhttp/OkHttpEngine$clientCache$2;->()V +Lio/ktor/client/plugins/AfterReceiveHook; +HSPLio/ktor/client/plugins/AfterReceiveHook;->()V +HSPLio/ktor/client/plugins/AfterReceiveHook;->()V +HSPLio/ktor/client/plugins/AfterReceiveHook;->install(Lio/ktor/client/HttpClient;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/AfterReceiveHook;->install(Lio/ktor/client/HttpClient;Lkotlin/jvm/functions/Function2;)V +Lio/ktor/client/plugins/AfterReceiveHook$install$1; +HSPLio/ktor/client/plugins/AfterReceiveHook$install$1;->(Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/AfterRenderHook; +HSPLio/ktor/client/plugins/AfterRenderHook;->()V +HSPLio/ktor/client/plugins/AfterRenderHook;->()V +HSPLio/ktor/client/plugins/AfterRenderHook;->install(Lio/ktor/client/HttpClient;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/AfterRenderHook;->install(Lio/ktor/client/HttpClient;Lkotlin/jvm/functions/Function3;)V +Lio/ktor/client/plugins/AfterRenderHook$install$1; +HSPLio/ktor/client/plugins/AfterRenderHook$install$1;->(Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/BodyProgressKt; +HSPLio/ktor/client/plugins/BodyProgressKt;->()V +HSPLio/ktor/client/plugins/BodyProgressKt;->getBodyProgress()Lio/ktor/client/plugins/api/ClientPlugin; +Lio/ktor/client/plugins/BodyProgressKt$BodyProgress$1; +HSPLio/ktor/client/plugins/BodyProgressKt$BodyProgress$1;->()V +HSPLio/ktor/client/plugins/BodyProgressKt$BodyProgress$1;->()V +HSPLio/ktor/client/plugins/BodyProgressKt$BodyProgress$1;->invoke(Lio/ktor/client/plugins/api/ClientPluginBuilder;)V +HSPLio/ktor/client/plugins/BodyProgressKt$BodyProgress$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/plugins/BodyProgressKt$BodyProgress$1$1; +HSPLio/ktor/client/plugins/BodyProgressKt$BodyProgress$1$1;->(Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/BodyProgressKt$BodyProgress$1$2; +HSPLio/ktor/client/plugins/BodyProgressKt$BodyProgress$1$2;->(Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/DefaultResponseValidationKt; +HSPLio/ktor/client/plugins/DefaultResponseValidationKt;->()V +HSPLio/ktor/client/plugins/DefaultResponseValidationKt;->addDefaultResponseValidation(Lio/ktor/client/HttpClientConfig;)V +Lio/ktor/client/plugins/DefaultResponseValidationKt$addDefaultResponseValidation$1; +HSPLio/ktor/client/plugins/DefaultResponseValidationKt$addDefaultResponseValidation$1;->(Lio/ktor/client/HttpClientConfig;)V +HSPLio/ktor/client/plugins/DefaultResponseValidationKt$addDefaultResponseValidation$1;->invoke(Lio/ktor/client/plugins/HttpCalValidatorConfig;)V +HSPLio/ktor/client/plugins/DefaultResponseValidationKt$addDefaultResponseValidation$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/plugins/DefaultResponseValidationKt$addDefaultResponseValidation$1$1; +HSPLio/ktor/client/plugins/DefaultResponseValidationKt$addDefaultResponseValidation$1$1;->(Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/DefaultTransformKt; +HSPLio/ktor/client/plugins/DefaultTransformKt;->()V +HSPLio/ktor/client/plugins/DefaultTransformKt;->defaultTransformers(Lio/ktor/client/HttpClient;)V +Lio/ktor/client/plugins/DefaultTransformKt$defaultTransformers$1; +HSPLio/ktor/client/plugins/DefaultTransformKt$defaultTransformers$1;->(Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/DefaultTransformKt$defaultTransformers$2; +HSPLio/ktor/client/plugins/DefaultTransformKt$defaultTransformers$2;->(Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/DefaultTransformersJvmKt; +HSPLio/ktor/client/plugins/DefaultTransformersJvmKt;->platformResponseDefaultTransformers(Lio/ktor/client/HttpClient;)V +Lio/ktor/client/plugins/DefaultTransformersJvmKt$platformResponseDefaultTransformers$1; +HSPLio/ktor/client/plugins/DefaultTransformersJvmKt$platformResponseDefaultTransformers$1;->(Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/DoubleReceivePluginKt; +HSPLio/ktor/client/plugins/DoubleReceivePluginKt;->()V +HSPLio/ktor/client/plugins/DoubleReceivePluginKt;->getSaveBodyPlugin()Lio/ktor/client/plugins/api/ClientPlugin; +Lio/ktor/client/plugins/DoubleReceivePluginKt$SaveBodyPlugin$1; +HSPLio/ktor/client/plugins/DoubleReceivePluginKt$SaveBodyPlugin$1;->()V +HSPLio/ktor/client/plugins/DoubleReceivePluginKt$SaveBodyPlugin$1;->()V +HSPLio/ktor/client/plugins/DoubleReceivePluginKt$SaveBodyPlugin$1;->invoke()Lio/ktor/client/plugins/SaveBodyPluginConfig; +HSPLio/ktor/client/plugins/DoubleReceivePluginKt$SaveBodyPlugin$1;->invoke()Ljava/lang/Object; +Lio/ktor/client/plugins/DoubleReceivePluginKt$SaveBodyPlugin$2; +HSPLio/ktor/client/plugins/DoubleReceivePluginKt$SaveBodyPlugin$2;->()V +HSPLio/ktor/client/plugins/DoubleReceivePluginKt$SaveBodyPlugin$2;->()V +HSPLio/ktor/client/plugins/DoubleReceivePluginKt$SaveBodyPlugin$2;->invoke(Lio/ktor/client/plugins/api/ClientPluginBuilder;)V +HSPLio/ktor/client/plugins/DoubleReceivePluginKt$SaveBodyPlugin$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/plugins/DoubleReceivePluginKt$SaveBodyPlugin$2$1; +HSPLio/ktor/client/plugins/DoubleReceivePluginKt$SaveBodyPlugin$2$1;->(ZLkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/HttpCalValidatorConfig; +HSPLio/ktor/client/plugins/HttpCalValidatorConfig;->()V +HSPLio/ktor/client/plugins/HttpCalValidatorConfig;->getExpectSuccess()Z +HSPLio/ktor/client/plugins/HttpCalValidatorConfig;->getResponseExceptionHandlers$ktor_client_core()Ljava/util/List; +HSPLio/ktor/client/plugins/HttpCalValidatorConfig;->getResponseValidators$ktor_client_core()Ljava/util/List; +HSPLio/ktor/client/plugins/HttpCalValidatorConfig;->setExpectSuccess(Z)V +HSPLio/ktor/client/plugins/HttpCalValidatorConfig;->validateResponse(Lkotlin/jvm/functions/Function2;)V +Lio/ktor/client/plugins/HttpCallValidatorKt; +HSPLio/ktor/client/plugins/HttpCallValidatorKt;->()V +HSPLio/ktor/client/plugins/HttpCallValidatorKt;->HttpResponseValidator(Lio/ktor/client/HttpClientConfig;Lkotlin/jvm/functions/Function1;)V +HSPLio/ktor/client/plugins/HttpCallValidatorKt;->getHttpCallValidator()Lio/ktor/client/plugins/api/ClientPlugin; +Lio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$1; +HSPLio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$1;->()V +HSPLio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$1;->()V +HSPLio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$1;->invoke()Lio/ktor/client/plugins/HttpCalValidatorConfig; +HSPLio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$1;->invoke()Ljava/lang/Object; +Lio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$2; +HSPLio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$2;->()V +HSPLio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$2;->()V +HSPLio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$2;->invoke(Lio/ktor/client/plugins/api/ClientPluginBuilder;)V +HSPLio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$2$1; +HSPLio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$2$1;->(ZLkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$2$2; +HSPLio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$2$2;->(Ljava/util/List;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$2$3; +HSPLio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$2$3;->(Ljava/util/List;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$2$4; +HSPLio/ktor/client/plugins/HttpCallValidatorKt$HttpCallValidator$2$4;->(Ljava/util/List;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/HttpClientPlugin; +Lio/ktor/client/plugins/HttpClientPluginKt; +HSPLio/ktor/client/plugins/HttpClientPluginKt;->()V +HSPLio/ktor/client/plugins/HttpClientPluginKt;->getPLUGIN_INSTALLED_LIST()Lio/ktor/util/AttributeKey; +HSPLio/ktor/client/plugins/HttpClientPluginKt;->plugin(Lio/ktor/client/HttpClient;Lio/ktor/client/plugins/HttpClientPlugin;)Ljava/lang/Object; +HSPLio/ktor/client/plugins/HttpClientPluginKt;->pluginOrNull(Lio/ktor/client/HttpClient;Lio/ktor/client/plugins/HttpClientPlugin;)Ljava/lang/Object; +Lio/ktor/client/plugins/HttpPlainTextConfig; +HSPLio/ktor/client/plugins/HttpPlainTextConfig;->()V +HSPLio/ktor/client/plugins/HttpPlainTextConfig;->getCharsetQuality$ktor_client_core()Ljava/util/Map; +HSPLio/ktor/client/plugins/HttpPlainTextConfig;->getCharsets$ktor_client_core()Ljava/util/Set; +HSPLio/ktor/client/plugins/HttpPlainTextConfig;->getResponseCharsetFallback()Ljava/nio/charset/Charset; +HSPLio/ktor/client/plugins/HttpPlainTextConfig;->getSendCharset()Ljava/nio/charset/Charset; +Lio/ktor/client/plugins/HttpPlainTextKt; +HSPLio/ktor/client/plugins/HttpPlainTextKt;->()V +HSPLio/ktor/client/plugins/HttpPlainTextKt;->getHttpPlainText()Lio/ktor/client/plugins/api/ClientPlugin; +Lio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$1; +HSPLio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$1;->()V +HSPLio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$1;->()V +HSPLio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$1;->invoke()Lio/ktor/client/plugins/HttpPlainTextConfig; +HSPLio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$1;->invoke()Ljava/lang/Object; +Lio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$2; +HSPLio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$2;->()V +HSPLio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$2;->()V +HSPLio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$2;->invoke(Lio/ktor/client/plugins/api/ClientPluginBuilder;)V +HSPLio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$2$1; +HSPLio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$2$1;->(Ljava/lang/String;Ljava/nio/charset/Charset;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$2$2; +HSPLio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$2$2;->(Ljava/nio/charset/Charset;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$2$invoke$$inlined$sortedBy$1; +HSPLio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$2$invoke$$inlined$sortedBy$1;->()V +Lio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$2$invoke$$inlined$sortedByDescending$1; +HSPLio/ktor/client/plugins/HttpPlainTextKt$HttpPlainText$2$invoke$$inlined$sortedByDescending$1;->()V +Lio/ktor/client/plugins/HttpRedirectConfig; +HSPLio/ktor/client/plugins/HttpRedirectConfig;->()V +HSPLio/ktor/client/plugins/HttpRedirectConfig;->getAllowHttpsDowngrade()Z +HSPLio/ktor/client/plugins/HttpRedirectConfig;->getCheckHttpMethod()Z +Lio/ktor/client/plugins/HttpRedirectKt; +HSPLio/ktor/client/plugins/HttpRedirectKt;->()V +HSPLio/ktor/client/plugins/HttpRedirectKt;->getHttpRedirect()Lio/ktor/client/plugins/api/ClientPlugin; +Lio/ktor/client/plugins/HttpRedirectKt$HttpRedirect$1; +HSPLio/ktor/client/plugins/HttpRedirectKt$HttpRedirect$1;->()V +HSPLio/ktor/client/plugins/HttpRedirectKt$HttpRedirect$1;->()V +HSPLio/ktor/client/plugins/HttpRedirectKt$HttpRedirect$1;->invoke()Lio/ktor/client/plugins/HttpRedirectConfig; +HSPLio/ktor/client/plugins/HttpRedirectKt$HttpRedirect$1;->invoke()Ljava/lang/Object; +Lio/ktor/client/plugins/HttpRedirectKt$HttpRedirect$2; +HSPLio/ktor/client/plugins/HttpRedirectKt$HttpRedirect$2;->()V +HSPLio/ktor/client/plugins/HttpRedirectKt$HttpRedirect$2;->()V +HSPLio/ktor/client/plugins/HttpRedirectKt$HttpRedirect$2;->invoke(Lio/ktor/client/plugins/api/ClientPluginBuilder;)V +HSPLio/ktor/client/plugins/HttpRedirectKt$HttpRedirect$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/plugins/HttpRedirectKt$HttpRedirect$2$1; +HSPLio/ktor/client/plugins/HttpRedirectKt$HttpRedirect$2$1;->(ZZLio/ktor/client/plugins/api/ClientPluginBuilder;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/HttpRequestLifecycleKt; +HSPLio/ktor/client/plugins/HttpRequestLifecycleKt;->()V +HSPLio/ktor/client/plugins/HttpRequestLifecycleKt;->getHttpRequestLifecycle()Lio/ktor/client/plugins/api/ClientPlugin; +Lio/ktor/client/plugins/HttpRequestLifecycleKt$HttpRequestLifecycle$1; +HSPLio/ktor/client/plugins/HttpRequestLifecycleKt$HttpRequestLifecycle$1;->()V +HSPLio/ktor/client/plugins/HttpRequestLifecycleKt$HttpRequestLifecycle$1;->()V +HSPLio/ktor/client/plugins/HttpRequestLifecycleKt$HttpRequestLifecycle$1;->invoke(Lio/ktor/client/plugins/api/ClientPluginBuilder;)V +HSPLio/ktor/client/plugins/HttpRequestLifecycleKt$HttpRequestLifecycle$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/plugins/HttpRequestLifecycleKt$HttpRequestLifecycle$1$1; +HSPLio/ktor/client/plugins/HttpRequestLifecycleKt$HttpRequestLifecycle$1$1;->(Lio/ktor/client/plugins/api/ClientPluginBuilder;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/HttpRequestRetryConfig; +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->()V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->constantDelay$default(Lio/ktor/client/plugins/HttpRequestRetryConfig;JJZILjava/lang/Object;)V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->constantDelay(JJZ)V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->delayMillis(ZLkotlin/jvm/functions/Function2;)V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->exponentialDelay$default(Lio/ktor/client/plugins/HttpRequestRetryConfig;DJJZILjava/lang/Object;)V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->exponentialDelay(DJJZ)V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->getDelay$ktor_client_core()Lkotlin/jvm/functions/Function2; +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->getDelayMillis$ktor_client_core()Lkotlin/jvm/functions/Function2; +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->getMaxRetries()I +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->getModifyRequest$ktor_client_core()Lkotlin/jvm/functions/Function2; +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->getShouldRetry$ktor_client_core()Lkotlin/jvm/functions/Function3; +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->getShouldRetryOnException$ktor_client_core()Lkotlin/jvm/functions/Function3; +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->retryIf$default(Lio/ktor/client/plugins/HttpRequestRetryConfig;ILkotlin/jvm/functions/Function3;ILjava/lang/Object;)V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->retryIf(ILkotlin/jvm/functions/Function3;)V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->retryOnException$default(Lio/ktor/client/plugins/HttpRequestRetryConfig;IZILjava/lang/Object;)V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->retryOnException(IZ)V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->retryOnExceptionIf(ILkotlin/jvm/functions/Function3;)V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->retryOnExceptionOrServerErrors(I)V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->retryOnServerErrors(I)V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->setDelayMillis$ktor_client_core(Lkotlin/jvm/functions/Function2;)V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->setMaxRetries(I)V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->setShouldRetry$ktor_client_core(Lkotlin/jvm/functions/Function3;)V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig;->setShouldRetryOnException$ktor_client_core(Lkotlin/jvm/functions/Function3;)V +Lio/ktor/client/plugins/HttpRequestRetryConfig$constantDelay$1; +HSPLio/ktor/client/plugins/HttpRequestRetryConfig$constantDelay$1;->(JLio/ktor/client/plugins/HttpRequestRetryConfig;J)V +Lio/ktor/client/plugins/HttpRequestRetryConfig$delay$1; +HSPLio/ktor/client/plugins/HttpRequestRetryConfig$delay$1;->(Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/HttpRequestRetryConfig$delayMillis$1; +HSPLio/ktor/client/plugins/HttpRequestRetryConfig$delayMillis$1;->(ZLkotlin/jvm/functions/Function2;)V +Lio/ktor/client/plugins/HttpRequestRetryConfig$exponentialDelay$1; +HSPLio/ktor/client/plugins/HttpRequestRetryConfig$exponentialDelay$1;->(DJLio/ktor/client/plugins/HttpRequestRetryConfig;J)V +Lio/ktor/client/plugins/HttpRequestRetryConfig$modifyRequest$1; +HSPLio/ktor/client/plugins/HttpRequestRetryConfig$modifyRequest$1;->()V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig$modifyRequest$1;->()V +Lio/ktor/client/plugins/HttpRequestRetryConfig$retryOnException$1; +HSPLio/ktor/client/plugins/HttpRequestRetryConfig$retryOnException$1;->(Z)V +Lio/ktor/client/plugins/HttpRequestRetryConfig$retryOnServerErrors$1; +HSPLio/ktor/client/plugins/HttpRequestRetryConfig$retryOnServerErrors$1;->()V +HSPLio/ktor/client/plugins/HttpRequestRetryConfig$retryOnServerErrors$1;->()V +Lio/ktor/client/plugins/HttpRequestRetryKt; +HSPLio/ktor/client/plugins/HttpRequestRetryKt;->()V +HSPLio/ktor/client/plugins/HttpRequestRetryKt;->getHttpRequestRetry()Lio/ktor/client/plugins/api/ClientPlugin; +Lio/ktor/client/plugins/HttpRequestRetryKt$HttpRequestRetry$1; +HSPLio/ktor/client/plugins/HttpRequestRetryKt$HttpRequestRetry$1;->()V +HSPLio/ktor/client/plugins/HttpRequestRetryKt$HttpRequestRetry$1;->()V +HSPLio/ktor/client/plugins/HttpRequestRetryKt$HttpRequestRetry$1;->invoke()Lio/ktor/client/plugins/HttpRequestRetryConfig; +HSPLio/ktor/client/plugins/HttpRequestRetryKt$HttpRequestRetry$1;->invoke()Ljava/lang/Object; +Lio/ktor/client/plugins/HttpRequestRetryKt$HttpRequestRetry$2; +HSPLio/ktor/client/plugins/HttpRequestRetryKt$HttpRequestRetry$2;->()V +HSPLio/ktor/client/plugins/HttpRequestRetryKt$HttpRequestRetry$2;->()V +HSPLio/ktor/client/plugins/HttpRequestRetryKt$HttpRequestRetry$2;->invoke(Lio/ktor/client/plugins/api/ClientPluginBuilder;)V +HSPLio/ktor/client/plugins/HttpRequestRetryKt$HttpRequestRetry$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/plugins/HttpRequestRetryKt$HttpRequestRetry$2$1; +HSPLio/ktor/client/plugins/HttpRequestRetryKt$HttpRequestRetry$2$1;->(Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;ILkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lio/ktor/client/plugins/api/ClientPluginBuilder;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/HttpSend; +HSPLio/ktor/client/plugins/HttpSend;->()V +HSPLio/ktor/client/plugins/HttpSend;->(I)V +HSPLio/ktor/client/plugins/HttpSend;->(ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLio/ktor/client/plugins/HttpSend;->access$getKey$cp()Lio/ktor/util/AttributeKey; +HSPLio/ktor/client/plugins/HttpSend;->intercept(Lkotlin/jvm/functions/Function3;)V +Lio/ktor/client/plugins/HttpSend$Config; +HSPLio/ktor/client/plugins/HttpSend$Config;->()V +HSPLio/ktor/client/plugins/HttpSend$Config;->getMaxSendCount()I +Lio/ktor/client/plugins/HttpSend$Plugin; +HSPLio/ktor/client/plugins/HttpSend$Plugin;->()V +HSPLio/ktor/client/plugins/HttpSend$Plugin;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLio/ktor/client/plugins/HttpSend$Plugin;->getKey()Lio/ktor/util/AttributeKey; +HSPLio/ktor/client/plugins/HttpSend$Plugin;->install(Lio/ktor/client/plugins/HttpSend;Lio/ktor/client/HttpClient;)V +HSPLio/ktor/client/plugins/HttpSend$Plugin;->install(Ljava/lang/Object;Lio/ktor/client/HttpClient;)V +HSPLio/ktor/client/plugins/HttpSend$Plugin;->prepare(Lkotlin/jvm/functions/Function1;)Lio/ktor/client/plugins/HttpSend; +HSPLio/ktor/client/plugins/HttpSend$Plugin;->prepare(Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +Lio/ktor/client/plugins/HttpSend$Plugin$install$1; +HSPLio/ktor/client/plugins/HttpSend$Plugin$install$1;->(Lio/ktor/client/plugins/HttpSend;Lio/ktor/client/HttpClient;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/HttpTimeoutCapability; +HSPLio/ktor/client/plugins/HttpTimeoutCapability;->()V +HSPLio/ktor/client/plugins/HttpTimeoutCapability;->()V +Lio/ktor/client/plugins/ReceiveError; +HSPLio/ktor/client/plugins/ReceiveError;->()V +HSPLio/ktor/client/plugins/ReceiveError;->()V +HSPLio/ktor/client/plugins/ReceiveError;->install(Lio/ktor/client/HttpClient;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/ReceiveError;->install(Lio/ktor/client/HttpClient;Lkotlin/jvm/functions/Function3;)V +Lio/ktor/client/plugins/ReceiveError$install$1; +HSPLio/ktor/client/plugins/ReceiveError$install$1;->(Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/RenderRequestHook; +HSPLio/ktor/client/plugins/RenderRequestHook;->()V +HSPLio/ktor/client/plugins/RenderRequestHook;->()V +HSPLio/ktor/client/plugins/RenderRequestHook;->install(Lio/ktor/client/HttpClient;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/RenderRequestHook;->install(Lio/ktor/client/HttpClient;Lkotlin/jvm/functions/Function3;)V +Lio/ktor/client/plugins/RenderRequestHook$install$1; +HSPLio/ktor/client/plugins/RenderRequestHook$install$1;->(Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/RequestError; +HSPLio/ktor/client/plugins/RequestError;->()V +HSPLio/ktor/client/plugins/RequestError;->()V +HSPLio/ktor/client/plugins/RequestError;->install(Lio/ktor/client/HttpClient;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/RequestError;->install(Lio/ktor/client/HttpClient;Lkotlin/jvm/functions/Function3;)V +Lio/ktor/client/plugins/RequestError$install$1; +HSPLio/ktor/client/plugins/RequestError$install$1;->(Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/SaveBodyPluginConfig; +HSPLio/ktor/client/plugins/SaveBodyPluginConfig;->()V +HSPLio/ktor/client/plugins/SaveBodyPluginConfig;->getDisabled()Z +Lio/ktor/client/plugins/SetupRequestContext; +HSPLio/ktor/client/plugins/SetupRequestContext;->()V +HSPLio/ktor/client/plugins/SetupRequestContext;->()V +HSPLio/ktor/client/plugins/SetupRequestContext;->install(Lio/ktor/client/HttpClient;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/SetupRequestContext;->install(Lio/ktor/client/HttpClient;Lkotlin/jvm/functions/Function3;)V +Lio/ktor/client/plugins/SetupRequestContext$install$1; +HSPLio/ktor/client/plugins/SetupRequestContext$install$1;->(Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/UserAgentConfig; +HSPLio/ktor/client/plugins/UserAgentConfig;->(Ljava/lang/String;)V +HSPLio/ktor/client/plugins/UserAgentConfig;->(Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLio/ktor/client/plugins/UserAgentConfig;->getAgent()Ljava/lang/String; +HSPLio/ktor/client/plugins/UserAgentConfig;->setAgent(Ljava/lang/String;)V +Lio/ktor/client/plugins/UserAgentKt; +HSPLio/ktor/client/plugins/UserAgentKt;->()V +HSPLio/ktor/client/plugins/UserAgentKt;->getUserAgent()Lio/ktor/client/plugins/api/ClientPlugin; +Lio/ktor/client/plugins/UserAgentKt$UserAgent$1; +HSPLio/ktor/client/plugins/UserAgentKt$UserAgent$1;->()V +HSPLio/ktor/client/plugins/UserAgentKt$UserAgent$1;->()V +HSPLio/ktor/client/plugins/UserAgentKt$UserAgent$1;->invoke()Lio/ktor/client/plugins/UserAgentConfig; +HSPLio/ktor/client/plugins/UserAgentKt$UserAgent$1;->invoke()Ljava/lang/Object; +Lio/ktor/client/plugins/UserAgentKt$UserAgent$2; +HSPLio/ktor/client/plugins/UserAgentKt$UserAgent$2;->()V +HSPLio/ktor/client/plugins/UserAgentKt$UserAgent$2;->()V +HSPLio/ktor/client/plugins/UserAgentKt$UserAgent$2;->invoke(Lio/ktor/client/plugins/api/ClientPluginBuilder;)V +HSPLio/ktor/client/plugins/UserAgentKt$UserAgent$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/plugins/UserAgentKt$UserAgent$2$1; +HSPLio/ktor/client/plugins/UserAgentKt$UserAgent$2$1;->(Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/api/ClientHook; +Lio/ktor/client/plugins/api/ClientPlugin; +Lio/ktor/client/plugins/api/ClientPluginBuilder; +HSPLio/ktor/client/plugins/api/ClientPluginBuilder;->(Lio/ktor/util/AttributeKey;Lio/ktor/client/HttpClient;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/api/ClientPluginBuilder;->getClient()Lio/ktor/client/HttpClient; +HSPLio/ktor/client/plugins/api/ClientPluginBuilder;->getHooks$ktor_client_core()Ljava/util/List; +HSPLio/ktor/client/plugins/api/ClientPluginBuilder;->getOnClose$ktor_client_core()Lkotlin/jvm/functions/Function0; +HSPLio/ktor/client/plugins/api/ClientPluginBuilder;->getPluginConfig()Ljava/lang/Object; +HSPLio/ktor/client/plugins/api/ClientPluginBuilder;->on(Lio/ktor/client/plugins/api/ClientHook;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/api/ClientPluginBuilder;->onRequest(Lkotlin/jvm/functions/Function4;)V +HSPLio/ktor/client/plugins/api/ClientPluginBuilder;->transformRequestBody(Lkotlin/jvm/functions/Function5;)V +HSPLio/ktor/client/plugins/api/ClientPluginBuilder;->transformResponseBody(Lkotlin/jvm/functions/Function5;)V +Lio/ktor/client/plugins/api/ClientPluginBuilder$onClose$1; +HSPLio/ktor/client/plugins/api/ClientPluginBuilder$onClose$1;->()V +HSPLio/ktor/client/plugins/api/ClientPluginBuilder$onClose$1;->()V +Lio/ktor/client/plugins/api/ClientPluginInstance; +HSPLio/ktor/client/plugins/api/ClientPluginInstance;->(Ljava/lang/Object;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V +HSPLio/ktor/client/plugins/api/ClientPluginInstance;->install(Lio/ktor/client/HttpClient;)V +Lio/ktor/client/plugins/api/ClientPluginInstance$onClose$1; +HSPLio/ktor/client/plugins/api/ClientPluginInstance$onClose$1;->()V +HSPLio/ktor/client/plugins/api/ClientPluginInstance$onClose$1;->()V +Lio/ktor/client/plugins/api/CreatePluginUtilsKt; +HSPLio/ktor/client/plugins/api/CreatePluginUtilsKt;->createClientPlugin(Ljava/lang/String;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;)Lio/ktor/client/plugins/api/ClientPlugin; +HSPLio/ktor/client/plugins/api/CreatePluginUtilsKt;->createClientPlugin(Ljava/lang/String;Lkotlin/jvm/functions/Function1;)Lio/ktor/client/plugins/api/ClientPlugin; +Lio/ktor/client/plugins/api/CreatePluginUtilsKt$createClientPlugin$1; +HSPLio/ktor/client/plugins/api/CreatePluginUtilsKt$createClientPlugin$1;->(Ljava/lang/String;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;)V +HSPLio/ktor/client/plugins/api/CreatePluginUtilsKt$createClientPlugin$1;->getKey()Lio/ktor/util/AttributeKey; +HSPLio/ktor/client/plugins/api/CreatePluginUtilsKt$createClientPlugin$1;->install(Lio/ktor/client/plugins/api/ClientPluginInstance;Lio/ktor/client/HttpClient;)V +HSPLio/ktor/client/plugins/api/CreatePluginUtilsKt$createClientPlugin$1;->install(Ljava/lang/Object;Lio/ktor/client/HttpClient;)V +HSPLio/ktor/client/plugins/api/CreatePluginUtilsKt$createClientPlugin$1;->prepare(Lkotlin/jvm/functions/Function1;)Lio/ktor/client/plugins/api/ClientPluginInstance; +HSPLio/ktor/client/plugins/api/CreatePluginUtilsKt$createClientPlugin$1;->prepare(Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +Lio/ktor/client/plugins/api/CreatePluginUtilsKt$createClientPlugin$2; +HSPLio/ktor/client/plugins/api/CreatePluginUtilsKt$createClientPlugin$2;->()V +HSPLio/ktor/client/plugins/api/CreatePluginUtilsKt$createClientPlugin$2;->()V +HSPLio/ktor/client/plugins/api/CreatePluginUtilsKt$createClientPlugin$2;->invoke()Ljava/lang/Object; +HSPLio/ktor/client/plugins/api/CreatePluginUtilsKt$createClientPlugin$2;->invoke()V +Lio/ktor/client/plugins/api/HookHandler; +HSPLio/ktor/client/plugins/api/HookHandler;->(Lio/ktor/client/plugins/api/ClientHook;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/api/HookHandler;->install(Lio/ktor/client/HttpClient;)V +Lio/ktor/client/plugins/api/RequestHook; +HSPLio/ktor/client/plugins/api/RequestHook;->()V +HSPLio/ktor/client/plugins/api/RequestHook;->()V +HSPLio/ktor/client/plugins/api/RequestHook;->install(Lio/ktor/client/HttpClient;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/api/RequestHook;->install(Lio/ktor/client/HttpClient;Lkotlin/jvm/functions/Function4;)V +Lio/ktor/client/plugins/api/RequestHook$install$1; +HSPLio/ktor/client/plugins/api/RequestHook$install$1;->(Lkotlin/jvm/functions/Function4;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/api/Send; +HSPLio/ktor/client/plugins/api/Send;->()V +HSPLio/ktor/client/plugins/api/Send;->()V +HSPLio/ktor/client/plugins/api/Send;->install(Lio/ktor/client/HttpClient;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/api/Send;->install(Lio/ktor/client/HttpClient;Lkotlin/jvm/functions/Function3;)V +Lio/ktor/client/plugins/api/Send$install$1; +HSPLio/ktor/client/plugins/api/Send$install$1;->(Lkotlin/jvm/functions/Function3;Lio/ktor/client/HttpClient;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/api/SetupRequest; +HSPLio/ktor/client/plugins/api/SetupRequest;->()V +HSPLio/ktor/client/plugins/api/SetupRequest;->()V +HSPLio/ktor/client/plugins/api/SetupRequest;->install(Lio/ktor/client/HttpClient;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/api/SetupRequest;->install(Lio/ktor/client/HttpClient;Lkotlin/jvm/functions/Function2;)V +Lio/ktor/client/plugins/api/SetupRequest$install$1; +HSPLio/ktor/client/plugins/api/SetupRequest$install$1;->(Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/api/TransformRequestBodyHook; +HSPLio/ktor/client/plugins/api/TransformRequestBodyHook;->()V +HSPLio/ktor/client/plugins/api/TransformRequestBodyHook;->()V +HSPLio/ktor/client/plugins/api/TransformRequestBodyHook;->install(Lio/ktor/client/HttpClient;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/api/TransformRequestBodyHook;->install(Lio/ktor/client/HttpClient;Lkotlin/jvm/functions/Function5;)V +Lio/ktor/client/plugins/api/TransformRequestBodyHook$install$1; +HSPLio/ktor/client/plugins/api/TransformRequestBodyHook$install$1;->(Lkotlin/jvm/functions/Function5;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/api/TransformResponseBodyHook; +HSPLio/ktor/client/plugins/api/TransformResponseBodyHook;->()V +HSPLio/ktor/client/plugins/api/TransformResponseBodyHook;->()V +HSPLio/ktor/client/plugins/api/TransformResponseBodyHook;->install(Lio/ktor/client/HttpClient;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/api/TransformResponseBodyHook;->install(Lio/ktor/client/HttpClient;Lkotlin/jvm/functions/Function5;)V +Lio/ktor/client/plugins/api/TransformResponseBodyHook$install$1; +HSPLio/ktor/client/plugins/api/TransformResponseBodyHook$install$1;->(Lkotlin/jvm/functions/Function5;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/cache/HttpCache; +HSPLio/ktor/client/plugins/cache/HttpCache;->()V +HSPLio/ktor/client/plugins/cache/HttpCache;->(Lio/ktor/client/plugins/cache/storage/HttpCacheStorage;Lio/ktor/client/plugins/cache/storage/HttpCacheStorage;Lio/ktor/client/plugins/cache/storage/CacheStorage;Lio/ktor/client/plugins/cache/storage/CacheStorage;ZZ)V +HSPLio/ktor/client/plugins/cache/HttpCache;->(Lio/ktor/client/plugins/cache/storage/HttpCacheStorage;Lio/ktor/client/plugins/cache/storage/HttpCacheStorage;Lio/ktor/client/plugins/cache/storage/CacheStorage;Lio/ktor/client/plugins/cache/storage/CacheStorage;ZZLkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLio/ktor/client/plugins/cache/HttpCache;->access$getKey$cp()Lio/ktor/util/AttributeKey; +Lio/ktor/client/plugins/cache/HttpCache$Companion; +HSPLio/ktor/client/plugins/cache/HttpCache$Companion;->()V +HSPLio/ktor/client/plugins/cache/HttpCache$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLio/ktor/client/plugins/cache/HttpCache$Companion;->getKey()Lio/ktor/util/AttributeKey; +HSPLio/ktor/client/plugins/cache/HttpCache$Companion;->install(Lio/ktor/client/plugins/cache/HttpCache;Lio/ktor/client/HttpClient;)V +HSPLio/ktor/client/plugins/cache/HttpCache$Companion;->install(Ljava/lang/Object;Lio/ktor/client/HttpClient;)V +HSPLio/ktor/client/plugins/cache/HttpCache$Companion;->prepare(Lkotlin/jvm/functions/Function1;)Lio/ktor/client/plugins/cache/HttpCache; +HSPLio/ktor/client/plugins/cache/HttpCache$Companion;->prepare(Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +Lio/ktor/client/plugins/cache/HttpCache$Companion$install$1; +HSPLio/ktor/client/plugins/cache/HttpCache$Companion$install$1;->(Lio/ktor/client/plugins/cache/HttpCache;Lio/ktor/client/HttpClient;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/cache/HttpCache$Companion$install$2; +HSPLio/ktor/client/plugins/cache/HttpCache$Companion$install$2;->(Lio/ktor/client/plugins/cache/HttpCache;Lio/ktor/client/HttpClient;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/cache/HttpCache$Config; +HSPLio/ktor/client/plugins/cache/HttpCache$Config;->()V +HSPLio/ktor/client/plugins/cache/HttpCache$Config;->getPrivateStorage()Lio/ktor/client/plugins/cache/storage/HttpCacheStorage; +HSPLio/ktor/client/plugins/cache/HttpCache$Config;->getPrivateStorageNew$ktor_client_core()Lio/ktor/client/plugins/cache/storage/CacheStorage; +HSPLio/ktor/client/plugins/cache/HttpCache$Config;->getPublicStorage()Lio/ktor/client/plugins/cache/storage/HttpCacheStorage; +HSPLio/ktor/client/plugins/cache/HttpCache$Config;->getPublicStorageNew$ktor_client_core()Lio/ktor/client/plugins/cache/storage/CacheStorage; +HSPLio/ktor/client/plugins/cache/HttpCache$Config;->getUseOldStorage$ktor_client_core()Z +HSPLio/ktor/client/plugins/cache/HttpCache$Config;->isShared()Z +Lio/ktor/client/plugins/cache/storage/CacheStorage; +HSPLio/ktor/client/plugins/cache/storage/CacheStorage;->()V +Lio/ktor/client/plugins/cache/storage/CacheStorage$Companion; +HSPLio/ktor/client/plugins/cache/storage/CacheStorage$Companion;->()V +HSPLio/ktor/client/plugins/cache/storage/CacheStorage$Companion;->()V +HSPLio/ktor/client/plugins/cache/storage/CacheStorage$Companion;->getUnlimited()Lkotlin/jvm/functions/Function0; +Lio/ktor/client/plugins/cache/storage/CacheStorage$Companion$Unlimited$1; +HSPLio/ktor/client/plugins/cache/storage/CacheStorage$Companion$Unlimited$1;->()V +HSPLio/ktor/client/plugins/cache/storage/CacheStorage$Companion$Unlimited$1;->()V +HSPLio/ktor/client/plugins/cache/storage/CacheStorage$Companion$Unlimited$1;->invoke()Lio/ktor/client/plugins/cache/storage/UnlimitedStorage; +HSPLio/ktor/client/plugins/cache/storage/CacheStorage$Companion$Unlimited$1;->invoke()Ljava/lang/Object; +Lio/ktor/client/plugins/cache/storage/DisabledCacheStorage; +HSPLio/ktor/client/plugins/cache/storage/DisabledCacheStorage;->()V +HSPLio/ktor/client/plugins/cache/storage/DisabledCacheStorage;->()V +Lio/ktor/client/plugins/cache/storage/DisabledStorage; +HSPLio/ktor/client/plugins/cache/storage/DisabledStorage;->()V +HSPLio/ktor/client/plugins/cache/storage/DisabledStorage;->()V +Lio/ktor/client/plugins/cache/storage/HttpCacheStorage; +HSPLio/ktor/client/plugins/cache/storage/HttpCacheStorage;->()V +HSPLio/ktor/client/plugins/cache/storage/HttpCacheStorage;->()V +HSPLio/ktor/client/plugins/cache/storage/HttpCacheStorage;->access$getUnlimited$cp()Lkotlin/jvm/functions/Function0; +Lio/ktor/client/plugins/cache/storage/HttpCacheStorage$Companion; +HSPLio/ktor/client/plugins/cache/storage/HttpCacheStorage$Companion;->()V +HSPLio/ktor/client/plugins/cache/storage/HttpCacheStorage$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLio/ktor/client/plugins/cache/storage/HttpCacheStorage$Companion;->getUnlimited()Lkotlin/jvm/functions/Function0; +Lio/ktor/client/plugins/cache/storage/HttpCacheStorage$Companion$Unlimited$1; +HSPLio/ktor/client/plugins/cache/storage/HttpCacheStorage$Companion$Unlimited$1;->()V +HSPLio/ktor/client/plugins/cache/storage/HttpCacheStorage$Companion$Unlimited$1;->()V +HSPLio/ktor/client/plugins/cache/storage/HttpCacheStorage$Companion$Unlimited$1;->invoke()Lio/ktor/client/plugins/cache/storage/UnlimitedCacheStorage; +HSPLio/ktor/client/plugins/cache/storage/HttpCacheStorage$Companion$Unlimited$1;->invoke()Ljava/lang/Object; +Lio/ktor/client/plugins/cache/storage/UnlimitedCacheStorage; +HSPLio/ktor/client/plugins/cache/storage/UnlimitedCacheStorage;->()V +Lio/ktor/client/plugins/cache/storage/UnlimitedStorage; +HSPLio/ktor/client/plugins/cache/storage/UnlimitedStorage;->()V +Lio/ktor/client/plugins/contentnegotiation/ContentNegotiationConfig; +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationConfig;->()V +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationConfig;->getIgnoredTypes$ktor_client_content_negotiation()Ljava/util/Set; +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationConfig;->getRegistrations$ktor_client_content_negotiation()Ljava/util/List; +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationConfig;->register(Lio/ktor/http/ContentType;Lio/ktor/serialization/ContentConverter;Lio/ktor/http/ContentTypeMatcher;Lkotlin/jvm/functions/Function1;)V +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationConfig;->register(Lio/ktor/http/ContentType;Lio/ktor/serialization/ContentConverter;Lkotlin/jvm/functions/Function1;)V +Lio/ktor/client/plugins/contentnegotiation/ContentNegotiationConfig$ConverterRegistration; +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationConfig$ConverterRegistration;->(Lio/ktor/serialization/ContentConverter;Lio/ktor/http/ContentType;Lio/ktor/http/ContentTypeMatcher;)V +Lio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt; +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt;->()V +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt;->getContentNegotiation()Lio/ktor/client/plugins/api/ClientPlugin; +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt;->getDefaultCommonIgnoredTypes()Ljava/util/Set; +Lio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt$ContentNegotiation$1; +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt$ContentNegotiation$1;->()V +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt$ContentNegotiation$1;->()V +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt$ContentNegotiation$1;->invoke()Lio/ktor/client/plugins/contentnegotiation/ContentNegotiationConfig; +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt$ContentNegotiation$1;->invoke()Ljava/lang/Object; +Lio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt$ContentNegotiation$2; +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt$ContentNegotiation$2;->()V +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt$ContentNegotiation$2;->()V +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt$ContentNegotiation$2;->invoke(Lio/ktor/client/plugins/api/ClientPluginBuilder;)V +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt$ContentNegotiation$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt$ContentNegotiation$2$1; +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt$ContentNegotiation$2$1;->(Ljava/util/List;Ljava/util/Set;Lio/ktor/client/plugins/api/ClientPluginBuilder;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt$ContentNegotiation$2$2; +HSPLio/ktor/client/plugins/contentnegotiation/ContentNegotiationKt$ContentNegotiation$2$2;->(Ljava/util/Set;Ljava/util/List;Lio/ktor/client/plugins/api/ClientPluginBuilder;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/contentnegotiation/DefaultIgnoredTypesJvmKt; +HSPLio/ktor/client/plugins/contentnegotiation/DefaultIgnoredTypesJvmKt;->()V +HSPLio/ktor/client/plugins/contentnegotiation/DefaultIgnoredTypesJvmKt;->getDefaultIgnoredTypes()Ljava/util/Set; +Lio/ktor/client/plugins/contentnegotiation/JsonContentTypeMatcher; +HSPLio/ktor/client/plugins/contentnegotiation/JsonContentTypeMatcher;->()V +HSPLio/ktor/client/plugins/contentnegotiation/JsonContentTypeMatcher;->()V +Lio/ktor/client/plugins/logging/HttpClientCallLogger; +Lio/ktor/client/plugins/logging/LogLevel; +HSPLio/ktor/client/plugins/logging/LogLevel;->$values()[Lio/ktor/client/plugins/logging/LogLevel; +HSPLio/ktor/client/plugins/logging/LogLevel;->()V +HSPLio/ktor/client/plugins/logging/LogLevel;->(Ljava/lang/String;IZZZ)V +HSPLio/ktor/client/plugins/logging/LogLevel;->getBody()Z +Lio/ktor/client/plugins/logging/Logger; +HSPLio/ktor/client/plugins/logging/Logger;->()V +Lio/ktor/client/plugins/logging/Logger$Companion; +HSPLio/ktor/client/plugins/logging/Logger$Companion;->()V +HSPLio/ktor/client/plugins/logging/Logger$Companion;->()V +Lio/ktor/client/plugins/logging/LoggerJvmKt; +HSPLio/ktor/client/plugins/logging/LoggerJvmKt;->getDEFAULT(Lio/ktor/client/plugins/logging/Logger$Companion;)Lio/ktor/client/plugins/logging/Logger; +Lio/ktor/client/plugins/logging/LoggerJvmKt$DEFAULT$1; +HSPLio/ktor/client/plugins/logging/LoggerJvmKt$DEFAULT$1;->()V +Lio/ktor/client/plugins/logging/LoggingConfig; +HSPLio/ktor/client/plugins/logging/LoggingConfig;->()V +HSPLio/ktor/client/plugins/logging/LoggingConfig;->getFilters$ktor_client_logging()Ljava/util/List; +HSPLio/ktor/client/plugins/logging/LoggingConfig;->getLevel()Lio/ktor/client/plugins/logging/LogLevel; +HSPLio/ktor/client/plugins/logging/LoggingConfig;->getLogger()Lio/ktor/client/plugins/logging/Logger; +HSPLio/ktor/client/plugins/logging/LoggingConfig;->getSanitizedHeaders$ktor_client_logging()Ljava/util/List; +HSPLio/ktor/client/plugins/logging/LoggingConfig;->setLevel(Lio/ktor/client/plugins/logging/LogLevel;)V +Lio/ktor/client/plugins/logging/LoggingKt; +HSPLio/ktor/client/plugins/logging/LoggingKt;->()V +HSPLio/ktor/client/plugins/logging/LoggingKt;->getLogging()Lio/ktor/client/plugins/api/ClientPlugin; +Lio/ktor/client/plugins/logging/LoggingKt$Logging$1; +HSPLio/ktor/client/plugins/logging/LoggingKt$Logging$1;->()V +HSPLio/ktor/client/plugins/logging/LoggingKt$Logging$1;->()V +HSPLio/ktor/client/plugins/logging/LoggingKt$Logging$1;->invoke()Lio/ktor/client/plugins/logging/LoggingConfig; +HSPLio/ktor/client/plugins/logging/LoggingKt$Logging$1;->invoke()Ljava/lang/Object; +Lio/ktor/client/plugins/logging/LoggingKt$Logging$2; +HSPLio/ktor/client/plugins/logging/LoggingKt$Logging$2;->()V +HSPLio/ktor/client/plugins/logging/LoggingKt$Logging$2;->()V +HSPLio/ktor/client/plugins/logging/LoggingKt$Logging$2;->invoke(Lio/ktor/client/plugins/api/ClientPluginBuilder;)V +HSPLio/ktor/client/plugins/logging/LoggingKt$Logging$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/plugins/logging/LoggingKt$Logging$2$1; +HSPLio/ktor/client/plugins/logging/LoggingKt$Logging$2$1;->(Ljava/util/List;Lio/ktor/client/plugins/logging/Logger;Lio/ktor/client/plugins/logging/LogLevel;Ljava/util/List;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/logging/LoggingKt$Logging$2$2; +HSPLio/ktor/client/plugins/logging/LoggingKt$Logging$2$2;->(Lio/ktor/client/plugins/logging/LogLevel;Ljava/util/List;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/logging/LoggingKt$Logging$2$3; +HSPLio/ktor/client/plugins/logging/LoggingKt$Logging$2$3;->(Lio/ktor/client/plugins/logging/LogLevel;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/logging/LoggingKt$Logging$2$4; +HSPLio/ktor/client/plugins/logging/LoggingKt$Logging$2$4;->(Lkotlin/jvm/functions/Function2;)V +HSPLio/ktor/client/plugins/logging/LoggingKt$Logging$2$4;->invoke(Lio/ktor/client/plugins/observer/ResponseObserverConfig;)V +HSPLio/ktor/client/plugins/logging/LoggingKt$Logging$2$4;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/plugins/logging/LoggingKt$Logging$2$observer$1; +HSPLio/ktor/client/plugins/logging/LoggingKt$Logging$2$observer$1;->(Lio/ktor/client/plugins/logging/LogLevel;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/logging/ReceiveHook; +HSPLio/ktor/client/plugins/logging/ReceiveHook;->()V +HSPLio/ktor/client/plugins/logging/ReceiveHook;->()V +HSPLio/ktor/client/plugins/logging/ReceiveHook;->install(Lio/ktor/client/HttpClient;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/logging/ReceiveHook;->install(Lio/ktor/client/HttpClient;Lkotlin/jvm/functions/Function3;)V +Lio/ktor/client/plugins/logging/ReceiveHook$install$1; +HSPLio/ktor/client/plugins/logging/ReceiveHook$install$1;->(Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/logging/ResponseHook; +HSPLio/ktor/client/plugins/logging/ResponseHook;->()V +HSPLio/ktor/client/plugins/logging/ResponseHook;->()V +HSPLio/ktor/client/plugins/logging/ResponseHook;->install(Lio/ktor/client/HttpClient;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/logging/ResponseHook;->install(Lio/ktor/client/HttpClient;Lkotlin/jvm/functions/Function3;)V +Lio/ktor/client/plugins/logging/ResponseHook$install$1; +HSPLio/ktor/client/plugins/logging/ResponseHook$install$1;->(Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/logging/SendHook; +HSPLio/ktor/client/plugins/logging/SendHook;->()V +HSPLio/ktor/client/plugins/logging/SendHook;->()V +HSPLio/ktor/client/plugins/logging/SendHook;->install(Lio/ktor/client/HttpClient;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/logging/SendHook;->install(Lio/ktor/client/HttpClient;Lkotlin/jvm/functions/Function3;)V +Lio/ktor/client/plugins/logging/SendHook$install$1; +HSPLio/ktor/client/plugins/logging/SendHook$install$1;->(Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/observer/AfterReceiveHook; +HSPLio/ktor/client/plugins/observer/AfterReceiveHook;->()V +HSPLio/ktor/client/plugins/observer/AfterReceiveHook;->()V +HSPLio/ktor/client/plugins/observer/AfterReceiveHook;->install(Lio/ktor/client/HttpClient;Ljava/lang/Object;)V +HSPLio/ktor/client/plugins/observer/AfterReceiveHook;->install(Lio/ktor/client/HttpClient;Lkotlin/jvm/functions/Function3;)V +Lio/ktor/client/plugins/observer/AfterReceiveHook$install$1; +HSPLio/ktor/client/plugins/observer/AfterReceiveHook$install$1;->(Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/observer/ResponseObserverConfig; +HSPLio/ktor/client/plugins/observer/ResponseObserverConfig;->()V +HSPLio/ktor/client/plugins/observer/ResponseObserverConfig;->getFilter$ktor_client_core()Lkotlin/jvm/functions/Function1; +HSPLio/ktor/client/plugins/observer/ResponseObserverConfig;->getResponseHandler$ktor_client_core()Lkotlin/jvm/functions/Function2; +HSPLio/ktor/client/plugins/observer/ResponseObserverConfig;->onResponse(Lkotlin/jvm/functions/Function2;)V +Lio/ktor/client/plugins/observer/ResponseObserverConfig$responseHandler$1; +HSPLio/ktor/client/plugins/observer/ResponseObserverConfig$responseHandler$1;->(Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/observer/ResponseObserverKt; +HSPLio/ktor/client/plugins/observer/ResponseObserverKt;->()V +HSPLio/ktor/client/plugins/observer/ResponseObserverKt;->getResponseObserver()Lio/ktor/client/plugins/api/ClientPlugin; +Lio/ktor/client/plugins/observer/ResponseObserverKt$ResponseObserver$1; +HSPLio/ktor/client/plugins/observer/ResponseObserverKt$ResponseObserver$1;->()V +HSPLio/ktor/client/plugins/observer/ResponseObserverKt$ResponseObserver$1;->()V +HSPLio/ktor/client/plugins/observer/ResponseObserverKt$ResponseObserver$1;->invoke()Lio/ktor/client/plugins/observer/ResponseObserverConfig; +HSPLio/ktor/client/plugins/observer/ResponseObserverKt$ResponseObserver$1;->invoke()Ljava/lang/Object; +Lio/ktor/client/plugins/observer/ResponseObserverKt$ResponseObserver$2; +HSPLio/ktor/client/plugins/observer/ResponseObserverKt$ResponseObserver$2;->()V +HSPLio/ktor/client/plugins/observer/ResponseObserverKt$ResponseObserver$2;->()V +HSPLio/ktor/client/plugins/observer/ResponseObserverKt$ResponseObserver$2;->invoke(Lio/ktor/client/plugins/api/ClientPluginBuilder;)V +HSPLio/ktor/client/plugins/observer/ResponseObserverKt$ResponseObserver$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/client/plugins/observer/ResponseObserverKt$ResponseObserver$2$1; +HSPLio/ktor/client/plugins/observer/ResponseObserverKt$ResponseObserver$2$1;->(Lkotlin/jvm/functions/Function1;Lio/ktor/client/plugins/api/ClientPluginBuilder;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/sse/SSECapability; +HSPLio/ktor/client/plugins/sse/SSECapability;->()V +HSPLio/ktor/client/plugins/sse/SSECapability;->()V +Lio/ktor/client/plugins/websocket/WebSocketCapability; +HSPLio/ktor/client/plugins/websocket/WebSocketCapability;->()V +HSPLio/ktor/client/plugins/websocket/WebSocketCapability;->()V +Lio/ktor/client/plugins/websocket/WebSocketExtensionsCapability; +HSPLio/ktor/client/plugins/websocket/WebSocketExtensionsCapability;->()V +HSPLio/ktor/client/plugins/websocket/WebSocketExtensionsCapability;->()V +Lio/ktor/client/plugins/websocket/WebSockets; +HSPLio/ktor/client/plugins/websocket/WebSockets;->()V +HSPLio/ktor/client/plugins/websocket/WebSockets;->(JJLio/ktor/websocket/WebSocketExtensionsConfig;Lio/ktor/serialization/WebsocketContentConverter;)V +HSPLio/ktor/client/plugins/websocket/WebSockets;->access$getKey$cp()Lio/ktor/util/AttributeKey; +Lio/ktor/client/plugins/websocket/WebSockets$Config; +HSPLio/ktor/client/plugins/websocket/WebSockets$Config;->()V +HSPLio/ktor/client/plugins/websocket/WebSockets$Config;->getContentConverter()Lio/ktor/serialization/WebsocketContentConverter; +HSPLio/ktor/client/plugins/websocket/WebSockets$Config;->getExtensionsConfig$ktor_client_core()Lio/ktor/websocket/WebSocketExtensionsConfig; +HSPLio/ktor/client/plugins/websocket/WebSockets$Config;->getMaxFrameSize()J +HSPLio/ktor/client/plugins/websocket/WebSockets$Config;->getPingInterval()J +HSPLio/ktor/client/plugins/websocket/WebSockets$Config;->setPingInterval(J)V +Lio/ktor/client/plugins/websocket/WebSockets$Plugin; +HSPLio/ktor/client/plugins/websocket/WebSockets$Plugin;->()V +HSPLio/ktor/client/plugins/websocket/WebSockets$Plugin;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLio/ktor/client/plugins/websocket/WebSockets$Plugin;->getKey()Lio/ktor/util/AttributeKey; +HSPLio/ktor/client/plugins/websocket/WebSockets$Plugin;->install(Lio/ktor/client/plugins/websocket/WebSockets;Lio/ktor/client/HttpClient;)V +HSPLio/ktor/client/plugins/websocket/WebSockets$Plugin;->install(Ljava/lang/Object;Lio/ktor/client/HttpClient;)V +HSPLio/ktor/client/plugins/websocket/WebSockets$Plugin;->prepare(Lkotlin/jvm/functions/Function1;)Lio/ktor/client/plugins/websocket/WebSockets; +HSPLio/ktor/client/plugins/websocket/WebSockets$Plugin;->prepare(Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +Lio/ktor/client/plugins/websocket/WebSockets$Plugin$install$1; +HSPLio/ktor/client/plugins/websocket/WebSockets$Plugin$install$1;->(ZLio/ktor/client/plugins/websocket/WebSockets;Lkotlin/coroutines/Continuation;)V +Lio/ktor/client/plugins/websocket/WebSockets$Plugin$install$2; +HSPLio/ktor/client/plugins/websocket/WebSockets$Plugin$install$2;->(Lio/ktor/client/plugins/websocket/WebSockets;ZLkotlin/coroutines/Continuation;)V +Lio/ktor/client/request/HttpRequestPipeline; +HSPLio/ktor/client/request/HttpRequestPipeline;->()V +HSPLio/ktor/client/request/HttpRequestPipeline;->(Z)V +HSPLio/ktor/client/request/HttpRequestPipeline;->access$getBefore$cp()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/request/HttpRequestPipeline;->access$getRender$cp()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/request/HttpRequestPipeline;->access$getSend$cp()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/request/HttpRequestPipeline;->access$getState$cp()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/request/HttpRequestPipeline;->access$getTransform$cp()Lio/ktor/util/pipeline/PipelinePhase; +Lio/ktor/client/request/HttpRequestPipeline$Phases; +HSPLio/ktor/client/request/HttpRequestPipeline$Phases;->()V +HSPLio/ktor/client/request/HttpRequestPipeline$Phases;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLio/ktor/client/request/HttpRequestPipeline$Phases;->getBefore()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/request/HttpRequestPipeline$Phases;->getRender()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/request/HttpRequestPipeline$Phases;->getSend()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/request/HttpRequestPipeline$Phases;->getState()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/request/HttpRequestPipeline$Phases;->getTransform()Lio/ktor/util/pipeline/PipelinePhase; +Lio/ktor/client/request/HttpSendPipeline; +HSPLio/ktor/client/request/HttpSendPipeline;->()V +HSPLio/ktor/client/request/HttpSendPipeline;->(Z)V +HSPLio/ktor/client/request/HttpSendPipeline;->access$getEngine$cp()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/request/HttpSendPipeline;->access$getMonitoring$cp()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/request/HttpSendPipeline;->access$getReceive$cp()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/request/HttpSendPipeline;->access$getState$cp()Lio/ktor/util/pipeline/PipelinePhase; +Lio/ktor/client/request/HttpSendPipeline$Phases; +HSPLio/ktor/client/request/HttpSendPipeline$Phases;->()V +HSPLio/ktor/client/request/HttpSendPipeline$Phases;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLio/ktor/client/request/HttpSendPipeline$Phases;->getEngine()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/request/HttpSendPipeline$Phases;->getMonitoring()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/request/HttpSendPipeline$Phases;->getReceive()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/request/HttpSendPipeline$Phases;->getState()Lio/ktor/util/pipeline/PipelinePhase; +Lio/ktor/client/statement/HttpReceivePipeline; +HSPLio/ktor/client/statement/HttpReceivePipeline;->()V +HSPLio/ktor/client/statement/HttpReceivePipeline;->(Z)V +HSPLio/ktor/client/statement/HttpReceivePipeline;->access$getAfter$cp()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/statement/HttpReceivePipeline;->access$getBefore$cp()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/statement/HttpReceivePipeline;->access$getState$cp()Lio/ktor/util/pipeline/PipelinePhase; +Lio/ktor/client/statement/HttpReceivePipeline$Phases; +HSPLio/ktor/client/statement/HttpReceivePipeline$Phases;->()V +HSPLio/ktor/client/statement/HttpReceivePipeline$Phases;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLio/ktor/client/statement/HttpReceivePipeline$Phases;->getAfter()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/statement/HttpReceivePipeline$Phases;->getBefore()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/statement/HttpReceivePipeline$Phases;->getState()Lio/ktor/util/pipeline/PipelinePhase; +Lio/ktor/client/statement/HttpResponsePipeline; +HSPLio/ktor/client/statement/HttpResponsePipeline;->()V +HSPLio/ktor/client/statement/HttpResponsePipeline;->(Z)V +HSPLio/ktor/client/statement/HttpResponsePipeline;->access$getParse$cp()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/statement/HttpResponsePipeline;->access$getReceive$cp()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/statement/HttpResponsePipeline;->access$getTransform$cp()Lio/ktor/util/pipeline/PipelinePhase; +Lio/ktor/client/statement/HttpResponsePipeline$Phases; +HSPLio/ktor/client/statement/HttpResponsePipeline$Phases;->()V +HSPLio/ktor/client/statement/HttpResponsePipeline$Phases;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLio/ktor/client/statement/HttpResponsePipeline$Phases;->getParse()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/statement/HttpResponsePipeline$Phases;->getReceive()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/client/statement/HttpResponsePipeline$Phases;->getTransform()Lio/ktor/util/pipeline/PipelinePhase; +Lio/ktor/events/EventDefinition; +HSPLio/ktor/events/EventDefinition;->()V +Lio/ktor/events/Events; +HSPLio/ktor/events/Events;->()V +Lio/ktor/http/ContentType; +HSPLio/ktor/http/ContentType;->()V +HSPLio/ktor/http/ContentType;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)V +HSPLio/ktor/http/ContentType;->(Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)V +HSPLio/ktor/http/ContentType;->(Ljava/lang/String;Ljava/lang/String;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLio/ktor/http/ContentType;->equals(Ljava/lang/Object;)Z +Lio/ktor/http/ContentType$Application; +HSPLio/ktor/http/ContentType$Application;->()V +HSPLio/ktor/http/ContentType$Application;->()V +HSPLio/ktor/http/ContentType$Application;->getJson()Lio/ktor/http/ContentType; +Lio/ktor/http/ContentType$Companion; +HSPLio/ktor/http/ContentType$Companion;->()V +HSPLio/ktor/http/ContentType$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lio/ktor/http/ContentTypeMatcher; +Lio/ktor/http/HeaderValueWithParameters; +HSPLio/ktor/http/HeaderValueWithParameters;->()V +HSPLio/ktor/http/HeaderValueWithParameters;->(Ljava/lang/String;Ljava/util/List;)V +HSPLio/ktor/http/HeaderValueWithParameters;->getParameters()Ljava/util/List; +Lio/ktor/http/HeaderValueWithParameters$Companion; +HSPLio/ktor/http/HeaderValueWithParameters$Companion;->()V +HSPLio/ktor/http/HeaderValueWithParameters$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lio/ktor/http/HttpMethod; +HSPLio/ktor/http/HttpMethod;->()V +HSPLio/ktor/http/HttpMethod;->(Ljava/lang/String;)V +HSPLio/ktor/http/HttpMethod;->access$getGet$cp()Lio/ktor/http/HttpMethod; +HSPLio/ktor/http/HttpMethod;->access$getHead$cp()Lio/ktor/http/HttpMethod; +HSPLio/ktor/http/HttpMethod;->hashCode()I +Lio/ktor/http/HttpMethod$Companion; +HSPLio/ktor/http/HttpMethod$Companion;->()V +HSPLio/ktor/http/HttpMethod$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLio/ktor/http/HttpMethod$Companion;->getGet()Lio/ktor/http/HttpMethod; +HSPLio/ktor/http/HttpMethod$Companion;->getHead()Lio/ktor/http/HttpMethod; +Lio/ktor/http/HttpStatusCode; +Lio/ktor/http/content/OutgoingContent; +Lio/ktor/serialization/Configuration; +Lio/ktor/serialization/Configuration$DefaultImpls; +HSPLio/ktor/serialization/Configuration$DefaultImpls;->register$default(Lio/ktor/serialization/Configuration;Lio/ktor/http/ContentType;Lio/ktor/serialization/ContentConverter;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +Lio/ktor/serialization/Configuration$register$1; +HSPLio/ktor/serialization/Configuration$register$1;->()V +HSPLio/ktor/serialization/Configuration$register$1;->()V +HSPLio/ktor/serialization/Configuration$register$1;->invoke(Lio/ktor/serialization/ContentConverter;)V +HSPLio/ktor/serialization/Configuration$register$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lio/ktor/serialization/ContentConverter; +Lio/ktor/serialization/WebsocketContentConverter; +Lio/ktor/serialization/kotlinx/ExtensionsJvmKt; +HSPLio/ktor/serialization/kotlinx/ExtensionsJvmKt;->()V +HSPLio/ktor/serialization/kotlinx/ExtensionsJvmKt;->getProviders()Ljava/util/List; +Lio/ktor/serialization/kotlinx/ExtensionsKt; +HSPLio/ktor/serialization/kotlinx/ExtensionsKt;->extensions(Lkotlinx/serialization/SerialFormat;)Ljava/util/List; +Lio/ktor/serialization/kotlinx/KotlinxSerializationConverter; +HSPLio/ktor/serialization/kotlinx/KotlinxSerializationConverter;->(Lkotlinx/serialization/SerialFormat;)V +Lio/ktor/serialization/kotlinx/KotlinxSerializationExtensionProvider; +Lio/ktor/util/AttributeKey; +HSPLio/ktor/util/AttributeKey;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLio/ktor/util/AttributeKey;->hashCode()I +Lio/ktor/util/Attributes; +Lio/ktor/util/AttributesJvmBase; +HSPLio/ktor/util/AttributesJvmBase;->()V +HSPLio/ktor/util/AttributesJvmBase;->getOrNull(Lio/ktor/util/AttributeKey;)Ljava/lang/Object; +HSPLio/ktor/util/AttributesJvmBase;->put(Lio/ktor/util/AttributeKey;Ljava/lang/Object;)V +Lio/ktor/util/AttributesJvmKt; +HSPLio/ktor/util/AttributesJvmKt;->Attributes(Z)Lio/ktor/util/Attributes; +Lio/ktor/util/CacheKt; +HSPLio/ktor/util/CacheKt;->createLRUCache(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;I)Ljava/util/Map; +Lio/ktor/util/ConcurrentSafeAttributes; +HSPLio/ktor/util/ConcurrentSafeAttributes;->()V +HSPLio/ktor/util/ConcurrentSafeAttributes;->computeIfAbsent(Lio/ktor/util/AttributeKey;Lkotlin/jvm/functions/Function0;)Ljava/lang/Object; +HSPLio/ktor/util/ConcurrentSafeAttributes;->getMap()Ljava/util/Map; +HSPLio/ktor/util/ConcurrentSafeAttributes;->getMap()Ljava/util/concurrent/ConcurrentHashMap; +Lio/ktor/util/CoroutinesUtilsKt; +HSPLio/ktor/util/CoroutinesUtilsKt;->SilentSupervisor$default(Lkotlinx/coroutines/Job;ILjava/lang/Object;)Lkotlin/coroutines/CoroutineContext; +HSPLio/ktor/util/CoroutinesUtilsKt;->SilentSupervisor(Lkotlinx/coroutines/Job;)Lkotlin/coroutines/CoroutineContext; +Lio/ktor/util/CoroutinesUtilsKt$SilentSupervisor$$inlined$CoroutineExceptionHandler$1; +HSPLio/ktor/util/CoroutinesUtilsKt$SilentSupervisor$$inlined$CoroutineExceptionHandler$1;->(Lkotlinx/coroutines/CoroutineExceptionHandler$Key;)V +Lio/ktor/util/LRUCache; +HSPLio/ktor/util/LRUCache;->(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;I)V +Lio/ktor/util/Platform; +HSPLio/ktor/util/Platform;->$values()[Lio/ktor/util/Platform; +HSPLio/ktor/util/Platform;->()V +HSPLio/ktor/util/Platform;->(Ljava/lang/String;I)V +Lio/ktor/util/PlatformUtils; +HSPLio/ktor/util/PlatformUtils;->()V +HSPLio/ktor/util/PlatformUtils;->()V +HSPLio/ktor/util/PlatformUtils;->getIS_DEVELOPMENT_MODE()Z +Lio/ktor/util/PlatformUtilsJvmKt; +HSPLio/ktor/util/PlatformUtilsJvmKt;->getPlatform(Lio/ktor/util/PlatformUtils;)Lio/ktor/util/Platform; +HSPLio/ktor/util/PlatformUtilsJvmKt;->isDevelopmentMode(Lio/ktor/util/PlatformUtils;)Z +HSPLio/ktor/util/PlatformUtilsJvmKt;->isNewMemoryModel(Lio/ktor/util/PlatformUtils;)Z +Lio/ktor/util/collections/ConcurrentMap; +HSPLio/ktor/util/collections/ConcurrentMap;->(I)V +HSPLio/ktor/util/collections/ConcurrentMap;->(IILkotlin/jvm/internal/DefaultConstructorMarker;)V +Lio/ktor/util/collections/CopyOnWriteHashMap; +HSPLio/ktor/util/collections/CopyOnWriteHashMap;->()V +HSPLio/ktor/util/collections/CopyOnWriteHashMap;->()V +Lio/ktor/util/logging/KtorSimpleLoggerJvmKt; +HSPLio/ktor/util/logging/KtorSimpleLoggerJvmKt;->KtorSimpleLogger(Ljava/lang/String;)Lorg/slf4j/Logger; +Lio/ktor/util/pipeline/PhaseContent; +HSPLio/ktor/util/pipeline/PhaseContent;->()V +HSPLio/ktor/util/pipeline/PhaseContent;->(Lio/ktor/util/pipeline/PipelinePhase;Lio/ktor/util/pipeline/PipelinePhaseRelation;)V +HSPLio/ktor/util/pipeline/PhaseContent;->(Lio/ktor/util/pipeline/PipelinePhase;Lio/ktor/util/pipeline/PipelinePhaseRelation;Ljava/util/List;)V +HSPLio/ktor/util/pipeline/PhaseContent;->addInterceptor(Lkotlin/jvm/functions/Function3;)V +HSPLio/ktor/util/pipeline/PhaseContent;->copiedInterceptors()Ljava/util/List; +HSPLio/ktor/util/pipeline/PhaseContent;->copyInterceptors()V +HSPLio/ktor/util/pipeline/PhaseContent;->getPhase()Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/util/pipeline/PhaseContent;->getRelation()Lio/ktor/util/pipeline/PipelinePhaseRelation; +Lio/ktor/util/pipeline/PhaseContent$Companion; +HSPLio/ktor/util/pipeline/PhaseContent$Companion;->()V +HSPLio/ktor/util/pipeline/PhaseContent$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lio/ktor/util/pipeline/Pipeline; +HSPLio/ktor/util/pipeline/Pipeline;->([Lio/ktor/util/pipeline/PipelinePhase;)V +HSPLio/ktor/util/pipeline/Pipeline;->afterIntercepted()V +HSPLio/ktor/util/pipeline/Pipeline;->findPhase(Lio/ktor/util/pipeline/PipelinePhase;)Lio/ktor/util/pipeline/PhaseContent; +HSPLio/ktor/util/pipeline/Pipeline;->findPhaseIndex(Lio/ktor/util/pipeline/PipelinePhase;)I +HSPLio/ktor/util/pipeline/Pipeline;->getInterceptors()Ljava/util/List; +HSPLio/ktor/util/pipeline/Pipeline;->hasPhase(Lio/ktor/util/pipeline/PipelinePhase;)Z +HSPLio/ktor/util/pipeline/Pipeline;->insertPhaseAfter(Lio/ktor/util/pipeline/PipelinePhase;Lio/ktor/util/pipeline/PipelinePhase;)V +HSPLio/ktor/util/pipeline/Pipeline;->insertPhaseBefore(Lio/ktor/util/pipeline/PipelinePhase;Lio/ktor/util/pipeline/PipelinePhase;)V +HSPLio/ktor/util/pipeline/Pipeline;->intercept(Lio/ktor/util/pipeline/PipelinePhase;Lkotlin/jvm/functions/Function3;)V +HSPLio/ktor/util/pipeline/Pipeline;->resetInterceptorsList()V +HSPLio/ktor/util/pipeline/Pipeline;->setInterceptors(Ljava/util/List;)V +HSPLio/ktor/util/pipeline/Pipeline;->tryAddToPhaseFastPath(Lio/ktor/util/pipeline/PipelinePhase;Lkotlin/jvm/functions/Function3;)Z +Lio/ktor/util/pipeline/PipelinePhase; +HSPLio/ktor/util/pipeline/PipelinePhase;->(Ljava/lang/String;)V +Lio/ktor/util/pipeline/PipelinePhaseRelation; +HSPLio/ktor/util/pipeline/PipelinePhaseRelation;->()V +HSPLio/ktor/util/pipeline/PipelinePhaseRelation;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lio/ktor/util/pipeline/PipelinePhaseRelation$After; +HSPLio/ktor/util/pipeline/PipelinePhaseRelation$After;->(Lio/ktor/util/pipeline/PipelinePhase;)V +Lio/ktor/util/pipeline/PipelinePhaseRelation$Before; +HSPLio/ktor/util/pipeline/PipelinePhaseRelation$Before;->(Lio/ktor/util/pipeline/PipelinePhase;)V +Lio/ktor/util/pipeline/PipelinePhaseRelation$Last; +HSPLio/ktor/util/pipeline/PipelinePhaseRelation$Last;->()V +HSPLio/ktor/util/pipeline/PipelinePhaseRelation$Last;->()V +Lio/ktor/utils/io/ByteReadChannel; +Lio/ktor/utils/io/charsets/CharsetJVMKt; +HSPLio/ktor/utils/io/charsets/CharsetJVMKt;->()V +HSPLio/ktor/utils/io/charsets/CharsetJVMKt;->getName(Ljava/nio/charset/Charset;)Ljava/lang/String; +Lio/ktor/utils/io/charsets/MalformedInputException; +Lio/ktor/websocket/WebSocketExtensionsConfig; +HSPLio/ktor/websocket/WebSocketExtensionsConfig;->()V +Ljavax/inject/Provider; +Lkotlin/Function; +Lkotlin/KotlinNothingValueException; +Lkotlin/KotlinVersion; +HSPLkotlin/KotlinVersion;->()V +HSPLkotlin/KotlinVersion;->(III)V +HSPLkotlin/KotlinVersion;->toString()Ljava/lang/String; +HSPLkotlin/KotlinVersion;->versionOf(III)I +Lkotlin/KotlinVersion$Companion; +HSPLkotlin/KotlinVersion$Companion;->()V +HSPLkotlin/KotlinVersion$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/KotlinVersionCurrentValue; +HSPLkotlin/KotlinVersionCurrentValue;->()V +HSPLkotlin/KotlinVersionCurrentValue;->()V +HSPLkotlin/KotlinVersionCurrentValue;->get()Lkotlin/KotlinVersion; +Lkotlin/Lazy; +Lkotlin/LazyKt; +Lkotlin/LazyKt__LazyJVMKt; +HSPLkotlin/LazyKt__LazyJVMKt;->lazy(Lkotlin/LazyThreadSafetyMode;Lkotlin/jvm/functions/Function0;)Lkotlin/Lazy; +HSPLkotlin/LazyKt__LazyJVMKt;->lazy(Lkotlin/jvm/functions/Function0;)Lkotlin/Lazy; +Lkotlin/LazyKt__LazyJVMKt$WhenMappings; +HSPLkotlin/LazyKt__LazyJVMKt$WhenMappings;->()V +Lkotlin/LazyKt__LazyKt; +Lkotlin/LazyThreadSafetyMode; +HSPLkotlin/LazyThreadSafetyMode;->$values()[Lkotlin/LazyThreadSafetyMode; +HSPLkotlin/LazyThreadSafetyMode;->()V +HSPLkotlin/LazyThreadSafetyMode;->(Ljava/lang/String;I)V +HSPLkotlin/LazyThreadSafetyMode;->values()[Lkotlin/LazyThreadSafetyMode; +Lkotlin/NoWhenBranchMatchedException; +Lkotlin/Pair; +HSPLkotlin/Pair;->(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLkotlin/Pair;->component1()Ljava/lang/Object; +HSPLkotlin/Pair;->component2()Ljava/lang/Object; +HSPLkotlin/Pair;->getFirst()Ljava/lang/Object; +HSPLkotlin/Pair;->getSecond()Ljava/lang/Object; +Lkotlin/Result; +HSPLkotlin/Result;->()V +HSPLkotlin/Result;->constructor-impl(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlin/Result;->exceptionOrNull-impl(Ljava/lang/Object;)Ljava/lang/Throwable; +HSPLkotlin/Result;->isFailure-impl(Ljava/lang/Object;)Z +HSPLkotlin/Result;->isSuccess-impl(Ljava/lang/Object;)Z +Lkotlin/Result$Companion; +HSPLkotlin/Result$Companion;->()V +HSPLkotlin/Result$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/Result$Failure; +HSPLkotlin/Result$Failure;->(Ljava/lang/Throwable;)V +Lkotlin/ResultKt; +HSPLkotlin/ResultKt;->createFailure(Ljava/lang/Throwable;)Ljava/lang/Object; +HSPLkotlin/ResultKt;->throwOnFailure(Ljava/lang/Object;)V +Lkotlin/SafePublicationLazyImpl; +HSPLkotlin/SafePublicationLazyImpl;->()V +HSPLkotlin/SafePublicationLazyImpl;->(Lkotlin/jvm/functions/Function0;)V +HSPLkotlin/SafePublicationLazyImpl;->getValue()Ljava/lang/Object; +Lkotlin/SafePublicationLazyImpl$Companion; +HSPLkotlin/SafePublicationLazyImpl$Companion;->()V +HSPLkotlin/SafePublicationLazyImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/SynchronizedLazyImpl; +HSPLkotlin/SynchronizedLazyImpl;->(Lkotlin/jvm/functions/Function0;Ljava/lang/Object;)V +HSPLkotlin/SynchronizedLazyImpl;->(Lkotlin/jvm/functions/Function0;Ljava/lang/Object;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlin/SynchronizedLazyImpl;->getValue()Ljava/lang/Object; +HSPLkotlin/SynchronizedLazyImpl;->isInitialized()Z +Lkotlin/Triple; +HSPLkotlin/Triple;->(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V +HSPLkotlin/Triple;->component1()Ljava/lang/Object; +HSPLkotlin/Triple;->component2()Ljava/lang/Object; +HSPLkotlin/Triple;->component3()Ljava/lang/Object; +HSPLkotlin/Triple;->copy$default(Lkotlin/Triple;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;ILjava/lang/Object;)Lkotlin/Triple; +HSPLkotlin/Triple;->copy(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Triple; +HSPLkotlin/Triple;->getSecond()Ljava/lang/Object; +Lkotlin/TuplesKt; +HSPLkotlin/TuplesKt;->to(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair; +Lkotlin/UByte; +HSPLkotlin/UByte;->()V +Lkotlin/UByte$Companion; +HSPLkotlin/UByte$Companion;->()V +HSPLkotlin/UByte$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/UByteArray; +Lkotlin/UInt; +HSPLkotlin/UInt;->()V +Lkotlin/UInt$Companion; +HSPLkotlin/UInt$Companion;->()V +HSPLkotlin/UInt$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/UIntArray; +Lkotlin/ULong; +HSPLkotlin/ULong;->()V +HSPLkotlin/ULong;->constructor-impl(J)J +HSPLkotlin/ULong;->equals-impl0(JJ)Z +HSPLkotlin/ULong;->hashCode-impl(J)I +Lkotlin/ULong$Companion; +HSPLkotlin/ULong$Companion;->()V +HSPLkotlin/ULong$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/ULongArray; +Lkotlin/UNINITIALIZED_VALUE; +HSPLkotlin/UNINITIALIZED_VALUE;->()V +HSPLkotlin/UNINITIALIZED_VALUE;->()V +Lkotlin/UShort; +HSPLkotlin/UShort;->()V +Lkotlin/UShort$Companion; +HSPLkotlin/UShort$Companion;->()V +HSPLkotlin/UShort$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/UShortArray; +Lkotlin/Unit; +HSPLkotlin/Unit;->()V +HSPLkotlin/Unit;->()V +Lkotlin/UnsafeLazyImpl; +HSPLkotlin/UnsafeLazyImpl;->(Lkotlin/jvm/functions/Function0;)V +HSPLkotlin/UnsafeLazyImpl;->getValue()Ljava/lang/Object; +Lkotlin/UnsignedKt; +HSPLkotlin/UnsignedKt;->ulongToDouble(J)D +Lkotlin/collections/AbstractCollection; +HSPLkotlin/collections/AbstractCollection;->()V +HSPLkotlin/collections/AbstractCollection;->isEmpty()Z +HSPLkotlin/collections/AbstractCollection;->size()I +HSPLkotlin/collections/AbstractCollection;->toArray()[Ljava/lang/Object; +Lkotlin/collections/AbstractList; +HSPLkotlin/collections/AbstractList;->()V +HSPLkotlin/collections/AbstractList;->()V +HSPLkotlin/collections/AbstractList;->equals(Ljava/lang/Object;)Z +HSPLkotlin/collections/AbstractList;->hashCode()I +HSPLkotlin/collections/AbstractList;->iterator()Ljava/util/Iterator; +HSPLkotlin/collections/AbstractList;->listIterator(I)Ljava/util/ListIterator; +Lkotlin/collections/AbstractList$Companion; +HSPLkotlin/collections/AbstractList$Companion;->()V +HSPLkotlin/collections/AbstractList$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlin/collections/AbstractList$Companion;->checkElementIndex$kotlin_stdlib(II)V +HSPLkotlin/collections/AbstractList$Companion;->checkPositionIndex$kotlin_stdlib(II)V +HSPLkotlin/collections/AbstractList$Companion;->newCapacity$kotlin_stdlib(II)I +HSPLkotlin/collections/AbstractList$Companion;->orderedEquals$kotlin_stdlib(Ljava/util/Collection;Ljava/util/Collection;)Z +HSPLkotlin/collections/AbstractList$Companion;->orderedHashCode$kotlin_stdlib(Ljava/util/Collection;)I +Lkotlin/collections/AbstractList$IteratorImpl; +HSPLkotlin/collections/AbstractList$IteratorImpl;->(Lkotlin/collections/AbstractList;)V +HSPLkotlin/collections/AbstractList$IteratorImpl;->getIndex()I +HSPLkotlin/collections/AbstractList$IteratorImpl;->hasNext()Z +HSPLkotlin/collections/AbstractList$IteratorImpl;->next()Ljava/lang/Object; +HSPLkotlin/collections/AbstractList$IteratorImpl;->setIndex(I)V +Lkotlin/collections/AbstractList$ListIteratorImpl; +HSPLkotlin/collections/AbstractList$ListIteratorImpl;->(Lkotlin/collections/AbstractList;I)V +HSPLkotlin/collections/AbstractList$ListIteratorImpl;->hasPrevious()Z +HSPLkotlin/collections/AbstractList$ListIteratorImpl;->nextIndex()I +HSPLkotlin/collections/AbstractList$ListIteratorImpl;->previous()Ljava/lang/Object; +Lkotlin/collections/AbstractMap; +HSPLkotlin/collections/AbstractMap;->()V +HSPLkotlin/collections/AbstractMap;->()V +HSPLkotlin/collections/AbstractMap;->containsEntry$kotlin_stdlib(Ljava/util/Map$Entry;)Z +HSPLkotlin/collections/AbstractMap;->entrySet()Ljava/util/Set; +HSPLkotlin/collections/AbstractMap;->equals(Ljava/lang/Object;)Z +HSPLkotlin/collections/AbstractMap;->isEmpty()Z +HSPLkotlin/collections/AbstractMap;->size()I +HSPLkotlin/collections/AbstractMap;->values()Ljava/util/Collection; +Lkotlin/collections/AbstractMap$Companion; +HSPLkotlin/collections/AbstractMap$Companion;->()V +HSPLkotlin/collections/AbstractMap$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/collections/AbstractMutableList; +HSPLkotlin/collections/AbstractMutableList;->()V +HSPLkotlin/collections/AbstractMutableList;->size()I +Lkotlin/collections/AbstractMutableMap; +HSPLkotlin/collections/AbstractMutableMap;->()V +HSPLkotlin/collections/AbstractMutableMap;->size()I +Lkotlin/collections/AbstractMutableSet; +HSPLkotlin/collections/AbstractMutableSet;->()V +HSPLkotlin/collections/AbstractMutableSet;->size()I +Lkotlin/collections/AbstractSet; +HSPLkotlin/collections/AbstractSet;->()V +HSPLkotlin/collections/AbstractSet;->()V +HSPLkotlin/collections/AbstractSet;->equals(Ljava/lang/Object;)Z +Lkotlin/collections/AbstractSet$Companion; +HSPLkotlin/collections/AbstractSet$Companion;->()V +HSPLkotlin/collections/AbstractSet$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlin/collections/AbstractSet$Companion;->setEquals$kotlin_stdlib(Ljava/util/Set;Ljava/util/Set;)Z +Lkotlin/collections/ArrayAsCollection; +HSPLkotlin/collections/ArrayAsCollection;->([Ljava/lang/Object;Z)V +HSPLkotlin/collections/ArrayAsCollection;->toArray()[Ljava/lang/Object; +Lkotlin/collections/ArrayDeque; +HSPLkotlin/collections/ArrayDeque;->()V +HSPLkotlin/collections/ArrayDeque;->()V +HSPLkotlin/collections/ArrayDeque;->add(Ljava/lang/Object;)Z +HSPLkotlin/collections/ArrayDeque;->addLast(Ljava/lang/Object;)V +HSPLkotlin/collections/ArrayDeque;->copyElements(I)V +HSPLkotlin/collections/ArrayDeque;->ensureCapacity(I)V +HSPLkotlin/collections/ArrayDeque;->first()Ljava/lang/Object; +HSPLkotlin/collections/ArrayDeque;->get(I)Ljava/lang/Object; +HSPLkotlin/collections/ArrayDeque;->getSize()I +HSPLkotlin/collections/ArrayDeque;->incremented(I)I +HSPLkotlin/collections/ArrayDeque;->isEmpty()Z +HSPLkotlin/collections/ArrayDeque;->positiveMod(I)I +HSPLkotlin/collections/ArrayDeque;->removeFirst()Ljava/lang/Object; +HSPLkotlin/collections/ArrayDeque;->removeFirstOrNull()Ljava/lang/Object; +HSPLkotlin/collections/ArrayDeque;->removeLast()Ljava/lang/Object; +HSPLkotlin/collections/ArrayDeque;->removeLastOrNull()Ljava/lang/Object; +Lkotlin/collections/ArrayDeque$Companion; +HSPLkotlin/collections/ArrayDeque$Companion;->()V +HSPLkotlin/collections/ArrayDeque$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/collections/ArraysKt; +Lkotlin/collections/ArraysKt__ArraysJVMKt; +Lkotlin/collections/ArraysKt__ArraysKt; +Lkotlin/collections/ArraysKt___ArraysJvmKt; +HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->asList([Ljava/lang/Object;)Ljava/util/List; +HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto$default([F[FIIIILjava/lang/Object;)[F +HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto$default([I[IIIIILjava/lang/Object;)[I +HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto$default([Ljava/lang/Object;[Ljava/lang/Object;IIIILjava/lang/Object;)[Ljava/lang/Object; +HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto([B[BIII)[B +HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto([C[CIII)[C +HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto([F[FIII)[F +HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto([I[IIII)[I +HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto([Ljava/lang/Object;[Ljava/lang/Object;III)[Ljava/lang/Object; +HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->fill$default([IIIIILjava/lang/Object;)V +HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->fill$default([Ljava/lang/Object;Ljava/lang/Object;IIILjava/lang/Object;)V +HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->fill([IIII)V +HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->fill([Ljava/lang/Object;Ljava/lang/Object;II)V +HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->sortWith([Ljava/lang/Object;Ljava/util/Comparator;II)V +Lkotlin/collections/ArraysKt___ArraysKt; +HSPLkotlin/collections/ArraysKt___ArraysKt;->asIterable([Ljava/lang/Object;)Ljava/lang/Iterable; +HSPLkotlin/collections/ArraysKt___ArraysKt;->asSequence([Ljava/lang/Object;)Lkotlin/sequences/Sequence; +HSPLkotlin/collections/ArraysKt___ArraysKt;->filterNotNull([Ljava/lang/Object;)Ljava/util/List; +HSPLkotlin/collections/ArraysKt___ArraysKt;->filterNotNullTo([Ljava/lang/Object;Ljava/util/Collection;)Ljava/util/Collection; +HSPLkotlin/collections/ArraysKt___ArraysKt;->getIndices([I)Lkotlin/ranges/IntRange; +HSPLkotlin/collections/ArraysKt___ArraysKt;->getIndices([Ljava/lang/Object;)Lkotlin/ranges/IntRange; +HSPLkotlin/collections/ArraysKt___ArraysKt;->getLastIndex([I)I +HSPLkotlin/collections/ArraysKt___ArraysKt;->getLastIndex([Ljava/lang/Object;)I +HSPLkotlin/collections/ArraysKt___ArraysKt;->getOrNull([Ljava/lang/Object;I)Ljava/lang/Object; +HSPLkotlin/collections/ArraysKt___ArraysKt;->indexOf([Ljava/lang/Object;Ljava/lang/Object;)I +HSPLkotlin/collections/ArraysKt___ArraysKt;->toCollection([Ljava/lang/Object;Ljava/util/Collection;)Ljava/util/Collection; +HSPLkotlin/collections/ArraysKt___ArraysKt;->toList([Ljava/lang/Object;)Ljava/util/List; +HSPLkotlin/collections/ArraysKt___ArraysKt;->toMutableList([Ljava/lang/Object;)Ljava/util/List; +HSPLkotlin/collections/ArraysKt___ArraysKt;->toSet([Ljava/lang/Object;)Ljava/util/Set; +HSPLkotlin/collections/ArraysKt___ArraysKt;->withIndex([Ljava/lang/Object;)Ljava/lang/Iterable; +HSPLkotlin/collections/ArraysKt___ArraysKt;->zip([Ljava/lang/Object;[Ljava/lang/Object;)Ljava/util/List; +Lkotlin/collections/ArraysKt___ArraysKt$asIterable$$inlined$Iterable$1; +HSPLkotlin/collections/ArraysKt___ArraysKt$asIterable$$inlined$Iterable$1;->([Ljava/lang/Object;)V +HSPLkotlin/collections/ArraysKt___ArraysKt$asIterable$$inlined$Iterable$1;->iterator()Ljava/util/Iterator; +Lkotlin/collections/ArraysKt___ArraysKt$withIndex$1; +HSPLkotlin/collections/ArraysKt___ArraysKt$withIndex$1;->([Ljava/lang/Object;)V +HSPLkotlin/collections/ArraysKt___ArraysKt$withIndex$1;->invoke()Ljava/lang/Object; +HSPLkotlin/collections/ArraysKt___ArraysKt$withIndex$1;->invoke()Ljava/util/Iterator; +Lkotlin/collections/ArraysUtilJVM; +HSPLkotlin/collections/ArraysUtilJVM;->asList([Ljava/lang/Object;)Ljava/util/List; +Lkotlin/collections/CollectionsKt; +Lkotlin/collections/CollectionsKt__CollectionsJVMKt; +HSPLkotlin/collections/CollectionsKt__CollectionsJVMKt;->build(Ljava/util/List;)Ljava/util/List; +HSPLkotlin/collections/CollectionsKt__CollectionsJVMKt;->copyToArrayOfAny([Ljava/lang/Object;Z)[Ljava/lang/Object; +HSPLkotlin/collections/CollectionsKt__CollectionsJVMKt;->createListBuilder()Ljava/util/List; +HSPLkotlin/collections/CollectionsKt__CollectionsJVMKt;->listOf(Ljava/lang/Object;)Ljava/util/List; +HSPLkotlin/collections/CollectionsKt__CollectionsJVMKt;->terminateCollectionToArray(I[Ljava/lang/Object;)[Ljava/lang/Object; +Lkotlin/collections/CollectionsKt__CollectionsKt; +HSPLkotlin/collections/CollectionsKt__CollectionsKt;->asCollection([Ljava/lang/Object;)Ljava/util/Collection; +HSPLkotlin/collections/CollectionsKt__CollectionsKt;->binarySearch$default(Ljava/util/List;Ljava/lang/Comparable;IIILjava/lang/Object;)I +HSPLkotlin/collections/CollectionsKt__CollectionsKt;->binarySearch(Ljava/util/List;Ljava/lang/Comparable;II)I +HSPLkotlin/collections/CollectionsKt__CollectionsKt;->emptyList()Ljava/util/List; +HSPLkotlin/collections/CollectionsKt__CollectionsKt;->getLastIndex(Ljava/util/List;)I +HSPLkotlin/collections/CollectionsKt__CollectionsKt;->listOf([Ljava/lang/Object;)Ljava/util/List; +HSPLkotlin/collections/CollectionsKt__CollectionsKt;->listOfNotNull([Ljava/lang/Object;)Ljava/util/List; +HSPLkotlin/collections/CollectionsKt__CollectionsKt;->mutableListOf([Ljava/lang/Object;)Ljava/util/List; +HSPLkotlin/collections/CollectionsKt__CollectionsKt;->optimizeReadOnlyList(Ljava/util/List;)Ljava/util/List; +HSPLkotlin/collections/CollectionsKt__CollectionsKt;->rangeCheck$CollectionsKt__CollectionsKt(III)V +Lkotlin/collections/CollectionsKt__IterablesKt; +HSPLkotlin/collections/CollectionsKt__IterablesKt;->collectionSizeOrDefault(Ljava/lang/Iterable;I)I +HSPLkotlin/collections/CollectionsKt__IterablesKt;->collectionSizeOrNull(Ljava/lang/Iterable;)Ljava/lang/Integer; +Lkotlin/collections/CollectionsKt__IteratorsJVMKt; +Lkotlin/collections/CollectionsKt__IteratorsKt; +Lkotlin/collections/CollectionsKt__MutableCollectionsJVMKt; +HSPLkotlin/collections/CollectionsKt__MutableCollectionsJVMKt;->sort(Ljava/util/List;)V +HSPLkotlin/collections/CollectionsKt__MutableCollectionsJVMKt;->sortWith(Ljava/util/List;Ljava/util/Comparator;)V +Lkotlin/collections/CollectionsKt__MutableCollectionsKt; +HSPLkotlin/collections/CollectionsKt__MutableCollectionsKt;->addAll(Ljava/util/Collection;Ljava/lang/Iterable;)Z +HSPLkotlin/collections/CollectionsKt__MutableCollectionsKt;->addAll(Ljava/util/Collection;Lkotlin/sequences/Sequence;)Z +HSPLkotlin/collections/CollectionsKt__MutableCollectionsKt;->filterInPlace$CollectionsKt__MutableCollectionsKt(Ljava/lang/Iterable;Lkotlin/jvm/functions/Function1;Z)Z +HSPLkotlin/collections/CollectionsKt__MutableCollectionsKt;->filterInPlace$CollectionsKt__MutableCollectionsKt(Ljava/util/List;Lkotlin/jvm/functions/Function1;Z)Z +HSPLkotlin/collections/CollectionsKt__MutableCollectionsKt;->removeAll(Ljava/util/List;Lkotlin/jvm/functions/Function1;)Z +HSPLkotlin/collections/CollectionsKt__MutableCollectionsKt;->removeFirstOrNull(Ljava/util/List;)Ljava/lang/Object; +HSPLkotlin/collections/CollectionsKt__MutableCollectionsKt;->removeLast(Ljava/util/List;)Ljava/lang/Object; +Lkotlin/collections/CollectionsKt__ReversedViewsKt; +Lkotlin/collections/CollectionsKt___CollectionsJvmKt; +Lkotlin/collections/CollectionsKt___CollectionsKt; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->asSequence(Ljava/lang/Iterable;)Lkotlin/sequences/Sequence; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->filterNotNull(Ljava/lang/Iterable;)Ljava/util/List; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->filterNotNullTo(Ljava/lang/Iterable;Ljava/util/Collection;)Ljava/util/Collection; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->first(Ljava/util/List;)Ljava/lang/Object; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->firstOrNull(Ljava/lang/Iterable;)Ljava/lang/Object; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->firstOrNull(Ljava/util/List;)Ljava/lang/Object; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->getOrNull(Ljava/util/List;I)Ljava/lang/Object; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->joinTo(Ljava/lang/Iterable;Ljava/lang/Appendable;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;)Ljava/lang/Appendable; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->joinToString$default(Ljava/lang/Iterable;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/String; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->joinToString(Ljava/lang/Iterable;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;)Ljava/lang/String; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->last(Ljava/util/List;)Ljava/lang/Object; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->lastOrNull(Ljava/util/List;)Ljava/lang/Object; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->plus(Ljava/util/Collection;Ljava/lang/Iterable;)Ljava/util/List; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->plus(Ljava/util/Collection;Ljava/lang/Object;)Ljava/util/List; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->reversed(Ljava/lang/Iterable;)Ljava/util/List; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->singleOrNull(Ljava/util/List;)Ljava/lang/Object; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->sorted(Ljava/lang/Iterable;)Ljava/util/List; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->sortedWith(Ljava/lang/Iterable;Ljava/util/Comparator;)Ljava/util/List; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toBooleanArray(Ljava/util/Collection;)[Z +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toCollection(Ljava/lang/Iterable;Ljava/util/Collection;)Ljava/util/Collection; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toFloatArray(Ljava/util/Collection;)[F +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toHashSet(Ljava/lang/Iterable;)Ljava/util/HashSet; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toIntArray(Ljava/util/Collection;)[I +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toList(Ljava/lang/Iterable;)Ljava/util/List; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toMutableList(Ljava/lang/Iterable;)Ljava/util/List; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toMutableList(Ljava/util/Collection;)Ljava/util/List; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toMutableSet(Ljava/lang/Iterable;)Ljava/util/Set; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toSet(Ljava/lang/Iterable;)Ljava/util/Set; +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->windowed(Ljava/lang/Iterable;IIZ)Ljava/util/List; +Lkotlin/collections/CollectionsKt___CollectionsKt$asSequence$$inlined$Sequence$1; +HSPLkotlin/collections/CollectionsKt___CollectionsKt$asSequence$$inlined$Sequence$1;->(Ljava/lang/Iterable;)V +HSPLkotlin/collections/CollectionsKt___CollectionsKt$asSequence$$inlined$Sequence$1;->iterator()Ljava/util/Iterator; +Lkotlin/collections/EmptyIterator; +HSPLkotlin/collections/EmptyIterator;->()V +HSPLkotlin/collections/EmptyIterator;->()V +HSPLkotlin/collections/EmptyIterator;->hasNext()Z +Lkotlin/collections/EmptyList; +HSPLkotlin/collections/EmptyList;->()V +HSPLkotlin/collections/EmptyList;->()V +PLkotlin/collections/EmptyList;->contains(Ljava/lang/Object;)Z +HSPLkotlin/collections/EmptyList;->equals(Ljava/lang/Object;)Z +HSPLkotlin/collections/EmptyList;->getSize()I +HSPLkotlin/collections/EmptyList;->hashCode()I +HSPLkotlin/collections/EmptyList;->isEmpty()Z +HSPLkotlin/collections/EmptyList;->iterator()Ljava/util/Iterator; +HSPLkotlin/collections/EmptyList;->size()I +HSPLkotlin/collections/EmptyList;->toArray()[Ljava/lang/Object; +Lkotlin/collections/EmptyMap; +HSPLkotlin/collections/EmptyMap;->()V +HSPLkotlin/collections/EmptyMap;->()V +HSPLkotlin/collections/EmptyMap;->containsKey(Ljava/lang/Object;)Z +HSPLkotlin/collections/EmptyMap;->entrySet()Ljava/util/Set; +HSPLkotlin/collections/EmptyMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlin/collections/EmptyMap;->get(Ljava/lang/Object;)Ljava/lang/Void; +HSPLkotlin/collections/EmptyMap;->getEntries()Ljava/util/Set; +HSPLkotlin/collections/EmptyMap;->getSize()I +HSPLkotlin/collections/EmptyMap;->isEmpty()Z +HSPLkotlin/collections/EmptyMap;->size()I +Lkotlin/collections/EmptySet; +HSPLkotlin/collections/EmptySet;->()V +HSPLkotlin/collections/EmptySet;->()V +HSPLkotlin/collections/EmptySet;->contains(Ljava/lang/Object;)Z +HSPLkotlin/collections/EmptySet;->getSize()I +HSPLkotlin/collections/EmptySet;->isEmpty()Z +HSPLkotlin/collections/EmptySet;->iterator()Ljava/util/Iterator; +HSPLkotlin/collections/EmptySet;->size()I +Lkotlin/collections/Grouping; +Lkotlin/collections/IndexedValue; +HSPLkotlin/collections/IndexedValue;->(ILjava/lang/Object;)V +HSPLkotlin/collections/IndexedValue;->getIndex()I +HSPLkotlin/collections/IndexedValue;->getValue()Ljava/lang/Object; +Lkotlin/collections/IndexingIterable; +HSPLkotlin/collections/IndexingIterable;->(Lkotlin/jvm/functions/Function0;)V +HSPLkotlin/collections/IndexingIterable;->iterator()Ljava/util/Iterator; +Lkotlin/collections/IndexingIterator; +HSPLkotlin/collections/IndexingIterator;->(Ljava/util/Iterator;)V +HSPLkotlin/collections/IndexingIterator;->hasNext()Z +HSPLkotlin/collections/IndexingIterator;->next()Ljava/lang/Object; +HSPLkotlin/collections/IndexingIterator;->next()Lkotlin/collections/IndexedValue; +Lkotlin/collections/IntIterator; +HSPLkotlin/collections/IntIterator;->()V +Lkotlin/collections/MapWithDefault; +Lkotlin/collections/MapsKt; +Lkotlin/collections/MapsKt__MapWithDefaultKt; +HSPLkotlin/collections/MapsKt__MapWithDefaultKt;->getOrImplicitDefaultNullable(Ljava/util/Map;Ljava/lang/Object;)Ljava/lang/Object; +Lkotlin/collections/MapsKt__MapsJVMKt; +HSPLkotlin/collections/MapsKt__MapsJVMKt;->mapCapacity(I)I +HSPLkotlin/collections/MapsKt__MapsJVMKt;->mapOf(Lkotlin/Pair;)Ljava/util/Map; +Lkotlin/collections/MapsKt__MapsKt; +HSPLkotlin/collections/MapsKt__MapsKt;->emptyMap()Ljava/util/Map; +HSPLkotlin/collections/MapsKt__MapsKt;->getValue(Ljava/util/Map;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlin/collections/MapsKt__MapsKt;->hashMapOf([Lkotlin/Pair;)Ljava/util/HashMap; +HSPLkotlin/collections/MapsKt__MapsKt;->mapOf([Lkotlin/Pair;)Ljava/util/Map; +HSPLkotlin/collections/MapsKt__MapsKt;->putAll(Ljava/util/Map;Ljava/lang/Iterable;)V +HSPLkotlin/collections/MapsKt__MapsKt;->putAll(Ljava/util/Map;[Lkotlin/Pair;)V +HSPLkotlin/collections/MapsKt__MapsKt;->toMap(Ljava/lang/Iterable;)Ljava/util/Map; +HSPLkotlin/collections/MapsKt__MapsKt;->toMap(Ljava/lang/Iterable;Ljava/util/Map;)Ljava/util/Map; +HSPLkotlin/collections/MapsKt__MapsKt;->toMap(Ljava/util/Map;)Ljava/util/Map; +HSPLkotlin/collections/MapsKt__MapsKt;->toMap([Lkotlin/Pair;Ljava/util/Map;)Ljava/util/Map; +HSPLkotlin/collections/MapsKt__MapsKt;->toMutableMap(Ljava/util/Map;)Ljava/util/Map; +Lkotlin/collections/MapsKt___MapsJvmKt; +Lkotlin/collections/MapsKt___MapsKt; +HSPLkotlin/collections/MapsKt___MapsKt;->asSequence(Ljava/util/Map;)Lkotlin/sequences/Sequence; +HSPLkotlin/collections/MapsKt___MapsKt;->toList(Ljava/util/Map;)Ljava/util/List; +Lkotlin/collections/SetsKt; +Lkotlin/collections/SetsKt__SetsJVMKt; +HSPLkotlin/collections/SetsKt__SetsJVMKt;->build(Ljava/util/Set;)Ljava/util/Set; +HSPLkotlin/collections/SetsKt__SetsJVMKt;->createSetBuilder()Ljava/util/Set; +HSPLkotlin/collections/SetsKt__SetsJVMKt;->setOf(Ljava/lang/Object;)Ljava/util/Set; +Lkotlin/collections/SetsKt__SetsKt; +HSPLkotlin/collections/SetsKt__SetsKt;->emptySet()Ljava/util/Set; +HSPLkotlin/collections/SetsKt__SetsKt;->mutableSetOf([Ljava/lang/Object;)Ljava/util/Set; +HSPLkotlin/collections/SetsKt__SetsKt;->setOf([Ljava/lang/Object;)Ljava/util/Set; +Lkotlin/collections/SetsKt___SetsKt; +HSPLkotlin/collections/SetsKt___SetsKt;->plus(Ljava/util/Set;Ljava/lang/Iterable;)Ljava/util/Set; +HSPLkotlin/collections/SetsKt___SetsKt;->plus(Ljava/util/Set;Ljava/lang/Object;)Ljava/util/Set; +Lkotlin/collections/SlidingWindowKt; +HSPLkotlin/collections/SlidingWindowKt;->checkWindowSizeStep(II)V +Lkotlin/collections/builders/ListBuilder; +HSPLkotlin/collections/builders/ListBuilder;->()V +HSPLkotlin/collections/builders/ListBuilder;->()V +HSPLkotlin/collections/builders/ListBuilder;->(I)V +HSPLkotlin/collections/builders/ListBuilder;->([Ljava/lang/Object;IIZLkotlin/collections/builders/ListBuilder;Lkotlin/collections/builders/ListBuilder;)V +HSPLkotlin/collections/builders/ListBuilder;->add(Ljava/lang/Object;)Z +HSPLkotlin/collections/builders/ListBuilder;->addAtInternal(ILjava/lang/Object;)V +HSPLkotlin/collections/builders/ListBuilder;->build()Ljava/util/List; +HSPLkotlin/collections/builders/ListBuilder;->checkForComodification()V +HSPLkotlin/collections/builders/ListBuilder;->checkIsMutable()V +HSPLkotlin/collections/builders/ListBuilder;->ensureCapacityInternal(I)V +HSPLkotlin/collections/builders/ListBuilder;->ensureExtraCapacity(I)V +HSPLkotlin/collections/builders/ListBuilder;->insertAtInternal(II)V +HSPLkotlin/collections/builders/ListBuilder;->isEffectivelyReadOnly()Z +HSPLkotlin/collections/builders/ListBuilder;->registerModification()V +HSPLkotlin/collections/builders/ListBuilder;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; +Lkotlin/collections/builders/ListBuilder$Companion; +HSPLkotlin/collections/builders/ListBuilder$Companion;->()V +HSPLkotlin/collections/builders/ListBuilder$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/collections/builders/ListBuilderKt; +HSPLkotlin/collections/builders/ListBuilderKt;->arrayOfUninitializedElements(I)[Ljava/lang/Object; +Lkotlin/collections/builders/MapBuilder; +HSPLkotlin/collections/builders/MapBuilder;->()V +HSPLkotlin/collections/builders/MapBuilder;->()V +HSPLkotlin/collections/builders/MapBuilder;->(I)V +HSPLkotlin/collections/builders/MapBuilder;->([Ljava/lang/Object;[Ljava/lang/Object;[I[III)V +HSPLkotlin/collections/builders/MapBuilder;->access$getEmpty$cp()Lkotlin/collections/builders/MapBuilder; +HSPLkotlin/collections/builders/MapBuilder;->access$getKeysArray$p(Lkotlin/collections/builders/MapBuilder;)[Ljava/lang/Object; +HSPLkotlin/collections/builders/MapBuilder;->access$getLength$p(Lkotlin/collections/builders/MapBuilder;)I +HSPLkotlin/collections/builders/MapBuilder;->access$getModCount$p(Lkotlin/collections/builders/MapBuilder;)I +HSPLkotlin/collections/builders/MapBuilder;->access$getPresenceArray$p(Lkotlin/collections/builders/MapBuilder;)[I +HSPLkotlin/collections/builders/MapBuilder;->addKey$kotlin_stdlib(Ljava/lang/Object;)I +HSPLkotlin/collections/builders/MapBuilder;->build()Ljava/util/Map; +HSPLkotlin/collections/builders/MapBuilder;->checkIsMutable$kotlin_stdlib()V +HSPLkotlin/collections/builders/MapBuilder;->getCapacity$kotlin_stdlib()I +HSPLkotlin/collections/builders/MapBuilder;->getHashSize()I +HSPLkotlin/collections/builders/MapBuilder;->getSize()I +HSPLkotlin/collections/builders/MapBuilder;->hash(Ljava/lang/Object;)I +HSPLkotlin/collections/builders/MapBuilder;->isEmpty()Z +HSPLkotlin/collections/builders/MapBuilder;->keysIterator$kotlin_stdlib()Lkotlin/collections/builders/MapBuilder$KeysItr; +HSPLkotlin/collections/builders/MapBuilder;->registerModification()V +HSPLkotlin/collections/builders/MapBuilder;->size()I +Lkotlin/collections/builders/MapBuilder$Companion; +HSPLkotlin/collections/builders/MapBuilder$Companion;->()V +HSPLkotlin/collections/builders/MapBuilder$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlin/collections/builders/MapBuilder$Companion;->access$computeHashSize(Lkotlin/collections/builders/MapBuilder$Companion;I)I +HSPLkotlin/collections/builders/MapBuilder$Companion;->access$computeShift(Lkotlin/collections/builders/MapBuilder$Companion;I)I +HSPLkotlin/collections/builders/MapBuilder$Companion;->computeHashSize(I)I +HSPLkotlin/collections/builders/MapBuilder$Companion;->computeShift(I)I +HSPLkotlin/collections/builders/MapBuilder$Companion;->getEmpty$kotlin_stdlib()Lkotlin/collections/builders/MapBuilder; +Lkotlin/collections/builders/MapBuilder$Itr; +HSPLkotlin/collections/builders/MapBuilder$Itr;->(Lkotlin/collections/builders/MapBuilder;)V +HSPLkotlin/collections/builders/MapBuilder$Itr;->checkForComodification$kotlin_stdlib()V +HSPLkotlin/collections/builders/MapBuilder$Itr;->getIndex$kotlin_stdlib()I +HSPLkotlin/collections/builders/MapBuilder$Itr;->getLastIndex$kotlin_stdlib()I +HSPLkotlin/collections/builders/MapBuilder$Itr;->getMap$kotlin_stdlib()Lkotlin/collections/builders/MapBuilder; +HSPLkotlin/collections/builders/MapBuilder$Itr;->hasNext()Z +HSPLkotlin/collections/builders/MapBuilder$Itr;->initNext$kotlin_stdlib()V +HSPLkotlin/collections/builders/MapBuilder$Itr;->setIndex$kotlin_stdlib(I)V +HSPLkotlin/collections/builders/MapBuilder$Itr;->setLastIndex$kotlin_stdlib(I)V +Lkotlin/collections/builders/MapBuilder$KeysItr; +HSPLkotlin/collections/builders/MapBuilder$KeysItr;->(Lkotlin/collections/builders/MapBuilder;)V +HSPLkotlin/collections/builders/MapBuilder$KeysItr;->next()Ljava/lang/Object; +Lkotlin/collections/builders/SetBuilder; +HSPLkotlin/collections/builders/SetBuilder;->()V +HSPLkotlin/collections/builders/SetBuilder;->()V +HSPLkotlin/collections/builders/SetBuilder;->(Lkotlin/collections/builders/MapBuilder;)V +HSPLkotlin/collections/builders/SetBuilder;->add(Ljava/lang/Object;)Z +HSPLkotlin/collections/builders/SetBuilder;->build()Ljava/util/Set; +HSPLkotlin/collections/builders/SetBuilder;->getSize()I +HSPLkotlin/collections/builders/SetBuilder;->isEmpty()Z +HSPLkotlin/collections/builders/SetBuilder;->iterator()Ljava/util/Iterator; +Lkotlin/collections/builders/SetBuilder$Companion; +HSPLkotlin/collections/builders/SetBuilder$Companion;->()V +HSPLkotlin/collections/builders/SetBuilder$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/comparisons/ComparisonsKt; +Lkotlin/comparisons/ComparisonsKt__ComparisonsKt; +HSPLkotlin/comparisons/ComparisonsKt__ComparisonsKt;->$r8$lambda$nq8UCGW90ISdL04-oV8sJ24EEKI([Lkotlin/jvm/functions/Function1;Ljava/lang/Object;Ljava/lang/Object;)I +HSPLkotlin/comparisons/ComparisonsKt__ComparisonsKt;->compareBy$lambda$0$ComparisonsKt__ComparisonsKt([Lkotlin/jvm/functions/Function1;Ljava/lang/Object;Ljava/lang/Object;)I +HSPLkotlin/comparisons/ComparisonsKt__ComparisonsKt;->compareBy([Lkotlin/jvm/functions/Function1;)Ljava/util/Comparator; +HSPLkotlin/comparisons/ComparisonsKt__ComparisonsKt;->compareValues(Ljava/lang/Comparable;Ljava/lang/Comparable;)I +HSPLkotlin/comparisons/ComparisonsKt__ComparisonsKt;->compareValuesByImpl$ComparisonsKt__ComparisonsKt(Ljava/lang/Object;Ljava/lang/Object;[Lkotlin/jvm/functions/Function1;)I +Lkotlin/comparisons/ComparisonsKt__ComparisonsKt$$ExternalSyntheticLambda1; +HSPLkotlin/comparisons/ComparisonsKt__ComparisonsKt$$ExternalSyntheticLambda1;->([Lkotlin/jvm/functions/Function1;)V +HSPLkotlin/comparisons/ComparisonsKt__ComparisonsKt$$ExternalSyntheticLambda1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +Lkotlin/comparisons/ComparisonsKt___ComparisonsJvmKt; +HSPLkotlin/comparisons/ComparisonsKt___ComparisonsJvmKt;->maxOf(F[F)F +HSPLkotlin/comparisons/ComparisonsKt___ComparisonsJvmKt;->minOf(F[F)F +Lkotlin/comparisons/ComparisonsKt___ComparisonsKt; +Lkotlin/coroutines/AbstractCoroutineContextElement; +HSPLkotlin/coroutines/AbstractCoroutineContextElement;->(Lkotlin/coroutines/CoroutineContext$Key;)V +HSPLkotlin/coroutines/AbstractCoroutineContextElement;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLkotlin/coroutines/AbstractCoroutineContextElement;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLkotlin/coroutines/AbstractCoroutineContextElement;->getKey()Lkotlin/coroutines/CoroutineContext$Key; +HSPLkotlin/coroutines/AbstractCoroutineContextElement;->minusKey(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext; +HSPLkotlin/coroutines/AbstractCoroutineContextElement;->plus(Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext; +Lkotlin/coroutines/AbstractCoroutineContextKey; +HSPLkotlin/coroutines/AbstractCoroutineContextKey;->(Lkotlin/coroutines/CoroutineContext$Key;Lkotlin/jvm/functions/Function1;)V +Lkotlin/coroutines/CombinedContext; +HSPLkotlin/coroutines/CombinedContext;->(Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/CoroutineContext$Element;)V +HSPLkotlin/coroutines/CombinedContext;->contains(Lkotlin/coroutines/CoroutineContext$Element;)Z +HSPLkotlin/coroutines/CombinedContext;->containsAll(Lkotlin/coroutines/CombinedContext;)Z +HSPLkotlin/coroutines/CombinedContext;->equals(Ljava/lang/Object;)Z +HSPLkotlin/coroutines/CombinedContext;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLkotlin/coroutines/CombinedContext;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLkotlin/coroutines/CombinedContext;->minusKey(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext; +HSPLkotlin/coroutines/CombinedContext;->plus(Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext; +HSPLkotlin/coroutines/CombinedContext;->size()I +Lkotlin/coroutines/Continuation; +Lkotlin/coroutines/ContinuationInterceptor; +HSPLkotlin/coroutines/ContinuationInterceptor;->()V +Lkotlin/coroutines/ContinuationInterceptor$DefaultImpls; +HSPLkotlin/coroutines/ContinuationInterceptor$DefaultImpls;->get(Lkotlin/coroutines/ContinuationInterceptor;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLkotlin/coroutines/ContinuationInterceptor$DefaultImpls;->minusKey(Lkotlin/coroutines/ContinuationInterceptor;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext; +Lkotlin/coroutines/ContinuationInterceptor$Key; +HSPLkotlin/coroutines/ContinuationInterceptor$Key;->()V +HSPLkotlin/coroutines/ContinuationInterceptor$Key;->()V +Lkotlin/coroutines/ContinuationKt; +HSPLkotlin/coroutines/ContinuationKt;->createCoroutine(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlin/coroutines/ContinuationKt;->startCoroutine(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)V +Lkotlin/coroutines/CoroutineContext; +Lkotlin/coroutines/CoroutineContext$DefaultImpls; +HSPLkotlin/coroutines/CoroutineContext$DefaultImpls;->plus(Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext; +Lkotlin/coroutines/CoroutineContext$Element; +Lkotlin/coroutines/CoroutineContext$Element$DefaultImpls; +HSPLkotlin/coroutines/CoroutineContext$Element$DefaultImpls;->fold(Lkotlin/coroutines/CoroutineContext$Element;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLkotlin/coroutines/CoroutineContext$Element$DefaultImpls;->get(Lkotlin/coroutines/CoroutineContext$Element;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLkotlin/coroutines/CoroutineContext$Element$DefaultImpls;->minusKey(Lkotlin/coroutines/CoroutineContext$Element;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext; +HSPLkotlin/coroutines/CoroutineContext$Element$DefaultImpls;->plus(Lkotlin/coroutines/CoroutineContext$Element;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext; +Lkotlin/coroutines/CoroutineContext$Key; +Lkotlin/coroutines/CoroutineContext$plus$1; +HSPLkotlin/coroutines/CoroutineContext$plus$1;->()V +HSPLkotlin/coroutines/CoroutineContext$plus$1;->()V +HSPLkotlin/coroutines/CoroutineContext$plus$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlin/coroutines/CoroutineContext$plus$1;->invoke(Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/CoroutineContext$Element;)Lkotlin/coroutines/CoroutineContext; +Lkotlin/coroutines/EmptyCoroutineContext; +HSPLkotlin/coroutines/EmptyCoroutineContext;->()V +HSPLkotlin/coroutines/EmptyCoroutineContext;->()V +HSPLkotlin/coroutines/EmptyCoroutineContext;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLkotlin/coroutines/EmptyCoroutineContext;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLkotlin/coroutines/EmptyCoroutineContext;->plus(Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext; +Lkotlin/coroutines/SafeContinuation; +HSPLkotlin/coroutines/SafeContinuation;->()V +HSPLkotlin/coroutines/SafeContinuation;->(Lkotlin/coroutines/Continuation;Ljava/lang/Object;)V +HSPLkotlin/coroutines/SafeContinuation;->resumeWith(Ljava/lang/Object;)V +Lkotlin/coroutines/SafeContinuation$Companion; +HSPLkotlin/coroutines/SafeContinuation$Companion;->()V +HSPLkotlin/coroutines/SafeContinuation$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/coroutines/intrinsics/CoroutineSingletons; +HSPLkotlin/coroutines/intrinsics/CoroutineSingletons;->$values()[Lkotlin/coroutines/intrinsics/CoroutineSingletons; +HSPLkotlin/coroutines/intrinsics/CoroutineSingletons;->()V +HSPLkotlin/coroutines/intrinsics/CoroutineSingletons;->(Ljava/lang/String;I)V +Lkotlin/coroutines/intrinsics/IntrinsicsKt; +Lkotlin/coroutines/intrinsics/IntrinsicsKt__IntrinsicsJvmKt; +HSPLkotlin/coroutines/intrinsics/IntrinsicsKt__IntrinsicsJvmKt;->createCoroutineUnintercepted(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlin/coroutines/intrinsics/IntrinsicsKt__IntrinsicsJvmKt;->intercepted(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +Lkotlin/coroutines/intrinsics/IntrinsicsKt__IntrinsicsKt; +HSPLkotlin/coroutines/intrinsics/IntrinsicsKt__IntrinsicsKt;->getCOROUTINE_SUSPENDED()Ljava/lang/Object; +Lkotlin/coroutines/jvm/internal/BaseContinuationImpl; +HSPLkotlin/coroutines/jvm/internal/BaseContinuationImpl;->(Lkotlin/coroutines/Continuation;)V +HSPLkotlin/coroutines/jvm/internal/BaseContinuationImpl;->getCallerFrame()Lkotlin/coroutines/jvm/internal/CoroutineStackFrame; +HSPLkotlin/coroutines/jvm/internal/BaseContinuationImpl;->releaseIntercepted()V +HSPLkotlin/coroutines/jvm/internal/BaseContinuationImpl;->resumeWith(Ljava/lang/Object;)V +Lkotlin/coroutines/jvm/internal/Boxing; +HSPLkotlin/coroutines/jvm/internal/Boxing;->boxBoolean(Z)Ljava/lang/Boolean; +HSPLkotlin/coroutines/jvm/internal/Boxing;->boxFloat(F)Ljava/lang/Float; +HSPLkotlin/coroutines/jvm/internal/Boxing;->boxInt(I)Ljava/lang/Integer; +HSPLkotlin/coroutines/jvm/internal/Boxing;->boxLong(J)Ljava/lang/Long; +Lkotlin/coroutines/jvm/internal/CompletedContinuation; +HSPLkotlin/coroutines/jvm/internal/CompletedContinuation;->()V +HSPLkotlin/coroutines/jvm/internal/CompletedContinuation;->()V +Lkotlin/coroutines/jvm/internal/ContinuationImpl; +HSPLkotlin/coroutines/jvm/internal/ContinuationImpl;->(Lkotlin/coroutines/Continuation;)V +HSPLkotlin/coroutines/jvm/internal/ContinuationImpl;->(Lkotlin/coroutines/Continuation;Lkotlin/coroutines/CoroutineContext;)V +HSPLkotlin/coroutines/jvm/internal/ContinuationImpl;->getContext()Lkotlin/coroutines/CoroutineContext; +HSPLkotlin/coroutines/jvm/internal/ContinuationImpl;->intercepted()Lkotlin/coroutines/Continuation; +HSPLkotlin/coroutines/jvm/internal/ContinuationImpl;->releaseIntercepted()V +Lkotlin/coroutines/jvm/internal/CoroutineStackFrame; +Lkotlin/coroutines/jvm/internal/DebugProbesKt; +HSPLkotlin/coroutines/jvm/internal/DebugProbesKt;->probeCoroutineCreated(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlin/coroutines/jvm/internal/DebugProbesKt;->probeCoroutineResumed(Lkotlin/coroutines/Continuation;)V +HSPLkotlin/coroutines/jvm/internal/DebugProbesKt;->probeCoroutineSuspended(Lkotlin/coroutines/Continuation;)V +Lkotlin/coroutines/jvm/internal/RestrictedContinuationImpl; +HSPLkotlin/coroutines/jvm/internal/RestrictedContinuationImpl;->(Lkotlin/coroutines/Continuation;)V +HSPLkotlin/coroutines/jvm/internal/RestrictedContinuationImpl;->getContext()Lkotlin/coroutines/CoroutineContext; +Lkotlin/coroutines/jvm/internal/RestrictedSuspendLambda; +HSPLkotlin/coroutines/jvm/internal/RestrictedSuspendLambda;->(ILkotlin/coroutines/Continuation;)V +Lkotlin/coroutines/jvm/internal/SuspendFunction; +Lkotlin/coroutines/jvm/internal/SuspendLambda; +HSPLkotlin/coroutines/jvm/internal/SuspendLambda;->(ILkotlin/coroutines/Continuation;)V +HSPLkotlin/coroutines/jvm/internal/SuspendLambda;->getArity()I +Lkotlin/enums/EnumEntries; +Lkotlin/enums/EnumEntriesKt; +HSPLkotlin/enums/EnumEntriesKt;->enumEntries([Ljava/lang/Enum;)Lkotlin/enums/EnumEntries; +Lkotlin/enums/EnumEntriesList; +HSPLkotlin/enums/EnumEntriesList;->([Ljava/lang/Enum;)V +HSPLkotlin/enums/EnumEntriesList;->getSize()I +Lkotlin/internal/PlatformImplementations; +HSPLkotlin/internal/PlatformImplementations;->()V +Lkotlin/internal/PlatformImplementationsKt; +HSPLkotlin/internal/PlatformImplementationsKt;->()V +Lkotlin/internal/ProgressionUtilKt; +HSPLkotlin/internal/ProgressionUtilKt;->differenceModulo(III)I +HSPLkotlin/internal/ProgressionUtilKt;->differenceModulo(JJJ)J +HSPLkotlin/internal/ProgressionUtilKt;->getProgressionLastElement(III)I +HSPLkotlin/internal/ProgressionUtilKt;->getProgressionLastElement(JJJ)J +HSPLkotlin/internal/ProgressionUtilKt;->mod(II)I +HSPLkotlin/internal/ProgressionUtilKt;->mod(JJ)J +Lkotlin/internal/jdk7/JDK7PlatformImplementations; +HSPLkotlin/internal/jdk7/JDK7PlatformImplementations;->()V +Lkotlin/internal/jdk8/JDK8PlatformImplementations; +HSPLkotlin/internal/jdk8/JDK8PlatformImplementations;->()V +HSPLkotlin/internal/jdk8/JDK8PlatformImplementations;->defaultPlatformRandom()Lkotlin/random/Random; +HSPLkotlin/internal/jdk8/JDK8PlatformImplementations;->sdkIsNullOrAtLeast(I)Z +Lkotlin/internal/jdk8/JDK8PlatformImplementations$ReflectSdkVersion; +HSPLkotlin/internal/jdk8/JDK8PlatformImplementations$ReflectSdkVersion;->()V +HSPLkotlin/internal/jdk8/JDK8PlatformImplementations$ReflectSdkVersion;->()V +Lkotlin/io/CloseableKt; +HSPLkotlin/io/CloseableKt;->closeFinally(Ljava/io/Closeable;Ljava/lang/Throwable;)V +Lkotlin/io/FileSystemException; +Lkotlin/io/FilesKt; +Lkotlin/io/FilesKt__FilePathComponentsKt; +Lkotlin/io/FilesKt__FileReadWriteKt; +Lkotlin/io/FilesKt__FileTreeWalkKt; +Lkotlin/io/FilesKt__UtilsKt; +HSPLkotlin/io/FilesKt__UtilsKt;->getExtension(Ljava/io/File;)Ljava/lang/String; +Lkotlin/io/TerminateException; +Lkotlin/jvm/JvmClassMappingKt; +HSPLkotlin/jvm/JvmClassMappingKt;->getJavaClass(Lkotlin/reflect/KClass;)Ljava/lang/Class; +HSPLkotlin/jvm/JvmClassMappingKt;->getJavaObjectType(Lkotlin/reflect/KClass;)Ljava/lang/Class; +HSPLkotlin/jvm/JvmClassMappingKt;->getJavaPrimitiveType(Lkotlin/reflect/KClass;)Ljava/lang/Class; +Lkotlin/jvm/functions/Function0; +Lkotlin/jvm/functions/Function1; +Lkotlin/jvm/functions/Function10; +Lkotlin/jvm/functions/Function11; +Lkotlin/jvm/functions/Function12; +Lkotlin/jvm/functions/Function13; +Lkotlin/jvm/functions/Function14; +Lkotlin/jvm/functions/Function15; +Lkotlin/jvm/functions/Function16; +Lkotlin/jvm/functions/Function17; +Lkotlin/jvm/functions/Function18; +Lkotlin/jvm/functions/Function19; +Lkotlin/jvm/functions/Function2; +Lkotlin/jvm/functions/Function20; +Lkotlin/jvm/functions/Function21; +Lkotlin/jvm/functions/Function22; +Lkotlin/jvm/functions/Function3; +Lkotlin/jvm/functions/Function4; +Lkotlin/jvm/functions/Function5; +Lkotlin/jvm/functions/Function6; +Lkotlin/jvm/functions/Function7; +Lkotlin/jvm/functions/Function8; +Lkotlin/jvm/functions/Function9; +Lkotlin/jvm/internal/AdaptedFunctionReference; +HSPLkotlin/jvm/internal/AdaptedFunctionReference;->(ILjava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +HSPLkotlin/jvm/internal/AdaptedFunctionReference;->(ILjava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +Lkotlin/jvm/internal/ArrayIterator; +HSPLkotlin/jvm/internal/ArrayIterator;->([Ljava/lang/Object;)V +HSPLkotlin/jvm/internal/ArrayIterator;->hasNext()Z +HSPLkotlin/jvm/internal/ArrayIterator;->next()Ljava/lang/Object; +Lkotlin/jvm/internal/ArrayIteratorKt; +HSPLkotlin/jvm/internal/ArrayIteratorKt;->iterator([Ljava/lang/Object;)Ljava/util/Iterator; +Lkotlin/jvm/internal/BooleanCompanionObject; +HSPLkotlin/jvm/internal/BooleanCompanionObject;->()V +HSPLkotlin/jvm/internal/BooleanCompanionObject;->()V +Lkotlin/jvm/internal/ByteCompanionObject; +HSPLkotlin/jvm/internal/ByteCompanionObject;->()V +HSPLkotlin/jvm/internal/ByteCompanionObject;->()V +Lkotlin/jvm/internal/CallableReference; +HSPLkotlin/jvm/internal/CallableReference;->()V +HSPLkotlin/jvm/internal/CallableReference;->(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;Z)V +HSPLkotlin/jvm/internal/CallableReference;->getBoundReceiver()Ljava/lang/Object; +HSPLkotlin/jvm/internal/CallableReference;->getName()Ljava/lang/String; +HSPLkotlin/jvm/internal/CallableReference;->getOwner()Lkotlin/reflect/KDeclarationContainer; +HSPLkotlin/jvm/internal/CallableReference;->getSignature()Ljava/lang/String; +Lkotlin/jvm/internal/CallableReference$NoReceiver; +HSPLkotlin/jvm/internal/CallableReference$NoReceiver;->()V +HSPLkotlin/jvm/internal/CallableReference$NoReceiver;->()V +HSPLkotlin/jvm/internal/CallableReference$NoReceiver;->access$000()Lkotlin/jvm/internal/CallableReference$NoReceiver; +Lkotlin/jvm/internal/CharCompanionObject; +HSPLkotlin/jvm/internal/CharCompanionObject;->()V +HSPLkotlin/jvm/internal/CharCompanionObject;->()V +Lkotlin/jvm/internal/ClassBasedDeclarationContainer; +Lkotlin/jvm/internal/CollectionToArray; +HSPLkotlin/jvm/internal/CollectionToArray;->()V +HSPLkotlin/jvm/internal/CollectionToArray;->toArray(Ljava/util/Collection;)[Ljava/lang/Object; +Lkotlin/jvm/internal/DefaultConstructorMarker; +Lkotlin/jvm/internal/DoubleCompanionObject; +HSPLkotlin/jvm/internal/DoubleCompanionObject;->()V +HSPLkotlin/jvm/internal/DoubleCompanionObject;->()V +Lkotlin/jvm/internal/FloatCompanionObject; +HSPLkotlin/jvm/internal/FloatCompanionObject;->()V +HSPLkotlin/jvm/internal/FloatCompanionObject;->()V +Lkotlin/jvm/internal/FunctionBase; +Lkotlin/jvm/internal/FunctionReference; +HSPLkotlin/jvm/internal/FunctionReference;->(ILjava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +HSPLkotlin/jvm/internal/FunctionReference;->equals(Ljava/lang/Object;)Z +HSPLkotlin/jvm/internal/FunctionReference;->getArity()I +Lkotlin/jvm/internal/FunctionReferenceImpl; +HSPLkotlin/jvm/internal/FunctionReferenceImpl;->(ILjava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +HSPLkotlin/jvm/internal/FunctionReferenceImpl;->(ILjava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +Lkotlin/jvm/internal/InlineMarker; +HSPLkotlin/jvm/internal/InlineMarker;->mark(I)V +Lkotlin/jvm/internal/IntCompanionObject; +HSPLkotlin/jvm/internal/IntCompanionObject;->()V +HSPLkotlin/jvm/internal/IntCompanionObject;->()V +Lkotlin/jvm/internal/Intrinsics; +HSPLkotlin/jvm/internal/Intrinsics;->areEqual(Ljava/lang/Float;F)Z +HSPLkotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;)V +HSPLkotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;Ljava/lang/String;)V +HSPLkotlin/jvm/internal/Intrinsics;->checkNotNullExpressionValue(Ljava/lang/Object;Ljava/lang/String;)V +HSPLkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V +HSPLkotlin/jvm/internal/Intrinsics;->compare(II)I +HSPLkotlin/jvm/internal/Intrinsics;->sanitizeStackTrace(Ljava/lang/Throwable;)Ljava/lang/Throwable; +HSPLkotlin/jvm/internal/Intrinsics;->sanitizeStackTrace(Ljava/lang/Throwable;Ljava/lang/String;)Ljava/lang/Throwable; +HSPLkotlin/jvm/internal/Intrinsics;->stringPlus(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/String; +Lkotlin/jvm/internal/Intrinsics$Kotlin; +Lkotlin/jvm/internal/Lambda; +HSPLkotlin/jvm/internal/Lambda;->(I)V +HSPLkotlin/jvm/internal/Lambda;->getArity()I +Lkotlin/jvm/internal/LongCompanionObject; +HSPLkotlin/jvm/internal/LongCompanionObject;->()V +HSPLkotlin/jvm/internal/LongCompanionObject;->()V +Lkotlin/jvm/internal/MutablePropertyReference; +HSPLkotlin/jvm/internal/MutablePropertyReference;->(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +Lkotlin/jvm/internal/MutablePropertyReference0; +HSPLkotlin/jvm/internal/MutablePropertyReference0;->(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +Lkotlin/jvm/internal/MutablePropertyReference0Impl; +HSPLkotlin/jvm/internal/MutablePropertyReference0Impl;->(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +Lkotlin/jvm/internal/MutablePropertyReference1; +HSPLkotlin/jvm/internal/MutablePropertyReference1;->(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +Lkotlin/jvm/internal/MutablePropertyReference1Impl; +HSPLkotlin/jvm/internal/MutablePropertyReference1Impl;->(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +Lkotlin/jvm/internal/PropertyReference; +HSPLkotlin/jvm/internal/PropertyReference;->(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +HSPLkotlin/jvm/internal/PropertyReference;->equals(Ljava/lang/Object;)Z +Lkotlin/jvm/internal/PropertyReference0; +HSPLkotlin/jvm/internal/PropertyReference0;->(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +HSPLkotlin/jvm/internal/PropertyReference0;->invoke()Ljava/lang/Object; +Lkotlin/jvm/internal/PropertyReference0Impl; +HSPLkotlin/jvm/internal/PropertyReference0Impl;->(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +HSPLkotlin/jvm/internal/PropertyReference0Impl;->(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +Lkotlin/jvm/internal/PropertyReference1; +HSPLkotlin/jvm/internal/PropertyReference1;->(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +Lkotlin/jvm/internal/PropertyReference1Impl; +HSPLkotlin/jvm/internal/PropertyReference1Impl;->(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +HSPLkotlin/jvm/internal/PropertyReference1Impl;->(Lkotlin/reflect/KDeclarationContainer;Ljava/lang/String;Ljava/lang/String;)V +Lkotlin/jvm/internal/PropertyReference2; +HSPLkotlin/jvm/internal/PropertyReference2;->(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +Lkotlin/jvm/internal/PropertyReference2Impl; +HSPLkotlin/jvm/internal/PropertyReference2Impl;->(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V +Lkotlin/jvm/internal/Ref$BooleanRef; +HSPLkotlin/jvm/internal/Ref$BooleanRef;->()V +Lkotlin/jvm/internal/Ref$FloatRef; +HSPLkotlin/jvm/internal/Ref$FloatRef;->()V +Lkotlin/jvm/internal/Ref$IntRef; +HSPLkotlin/jvm/internal/Ref$IntRef;->()V +Lkotlin/jvm/internal/Ref$LongRef; +HSPLkotlin/jvm/internal/Ref$LongRef;->()V +Lkotlin/jvm/internal/Ref$ObjectRef; +HSPLkotlin/jvm/internal/Ref$ObjectRef;->()V +Lkotlin/jvm/internal/Reflection; +HSPLkotlin/jvm/internal/Reflection;->()V +HSPLkotlin/jvm/internal/Reflection;->getOrCreateKotlinClass(Ljava/lang/Class;)Lkotlin/reflect/KClass; +HSPLkotlin/jvm/internal/Reflection;->getOrCreateKotlinPackage(Ljava/lang/Class;)Lkotlin/reflect/KDeclarationContainer; +HSPLkotlin/jvm/internal/Reflection;->mutableProperty1(Lkotlin/jvm/internal/MutablePropertyReference1;)Lkotlin/reflect/KMutableProperty1; +HSPLkotlin/jvm/internal/Reflection;->property0(Lkotlin/jvm/internal/PropertyReference0;)Lkotlin/reflect/KProperty0; +HSPLkotlin/jvm/internal/Reflection;->property1(Lkotlin/jvm/internal/PropertyReference1;)Lkotlin/reflect/KProperty1; +HSPLkotlin/jvm/internal/Reflection;->property2(Lkotlin/jvm/internal/PropertyReference2;)Lkotlin/reflect/KProperty2; +Lkotlin/jvm/internal/ReflectionFactory; +HSPLkotlin/jvm/internal/ReflectionFactory;->()V +Lkotlin/jvm/internal/ShortCompanionObject; +HSPLkotlin/jvm/internal/ShortCompanionObject;->()V +HSPLkotlin/jvm/internal/ShortCompanionObject;->()V +Lkotlin/jvm/internal/SpreadBuilder; +HSPLkotlin/jvm/internal/SpreadBuilder;->(I)V +HSPLkotlin/jvm/internal/SpreadBuilder;->add(Ljava/lang/Object;)V +HSPLkotlin/jvm/internal/SpreadBuilder;->addSpread(Ljava/lang/Object;)V +HSPLkotlin/jvm/internal/SpreadBuilder;->size()I +HSPLkotlin/jvm/internal/SpreadBuilder;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; +Lkotlin/jvm/internal/StringCompanionObject; +HSPLkotlin/jvm/internal/StringCompanionObject;->()V +HSPLkotlin/jvm/internal/StringCompanionObject;->()V +Lkotlin/jvm/internal/TypeIntrinsics; +HSPLkotlin/jvm/internal/TypeIntrinsics;->asMutableCollection(Ljava/lang/Object;)Ljava/util/Collection; +HSPLkotlin/jvm/internal/TypeIntrinsics;->asMutableIterable(Ljava/lang/Object;)Ljava/lang/Iterable; +HSPLkotlin/jvm/internal/TypeIntrinsics;->asMutableList(Ljava/lang/Object;)Ljava/util/List; +HSPLkotlin/jvm/internal/TypeIntrinsics;->beforeCheckcastToFunctionOfArity(Ljava/lang/Object;I)Ljava/lang/Object; +HSPLkotlin/jvm/internal/TypeIntrinsics;->castToCollection(Ljava/lang/Object;)Ljava/util/Collection; +HSPLkotlin/jvm/internal/TypeIntrinsics;->castToIterable(Ljava/lang/Object;)Ljava/lang/Iterable; +HSPLkotlin/jvm/internal/TypeIntrinsics;->castToList(Ljava/lang/Object;)Ljava/util/List; +HSPLkotlin/jvm/internal/TypeIntrinsics;->getFunctionArity(Ljava/lang/Object;)I +HSPLkotlin/jvm/internal/TypeIntrinsics;->isFunctionOfArity(Ljava/lang/Object;I)Z +HSPLkotlin/jvm/internal/TypeIntrinsics;->isMutableSet(Ljava/lang/Object;)Z +Lkotlin/jvm/internal/markers/KMappedMarker; +Lkotlin/jvm/internal/markers/KMutableCollection; +Lkotlin/jvm/internal/markers/KMutableIterable; +Lkotlin/jvm/internal/markers/KMutableIterator; +Lkotlin/jvm/internal/markers/KMutableList; +Lkotlin/jvm/internal/markers/KMutableListIterator; +Lkotlin/jvm/internal/markers/KMutableMap; +Lkotlin/jvm/internal/markers/KMutableSet; +Lkotlin/math/MathKt; +Lkotlin/math/MathKt__MathHKt; +Lkotlin/math/MathKt__MathJVMKt; +HSPLkotlin/math/MathKt__MathJVMKt;->getSign(I)I +HSPLkotlin/math/MathKt__MathJVMKt;->getSign(J)I +HSPLkotlin/math/MathKt__MathJVMKt;->roundToInt(F)I +Lkotlin/properties/ReadOnlyProperty; +Lkotlin/random/AbstractPlatformRandom; +HSPLkotlin/random/AbstractPlatformRandom;->()V +HSPLkotlin/random/AbstractPlatformRandom;->nextInt()I +HSPLkotlin/random/AbstractPlatformRandom;->nextInt(I)I +Lkotlin/random/Random; +HSPLkotlin/random/Random;->()V +HSPLkotlin/random/Random;->()V +HSPLkotlin/random/Random;->access$getDefaultRandom$cp()Lkotlin/random/Random; +Lkotlin/random/Random$Default; +HSPLkotlin/random/Random$Default;->()V +HSPLkotlin/random/Random$Default;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlin/random/Random$Default;->nextInt()I +HSPLkotlin/random/Random$Default;->nextInt(I)I +Lkotlin/random/jdk8/PlatformThreadLocalRandom; +HSPLkotlin/random/jdk8/PlatformThreadLocalRandom;->()V +HSPLkotlin/random/jdk8/PlatformThreadLocalRandom;->getImpl()Ljava/util/Random; +Lkotlin/ranges/ClosedFloatRange; +HSPLkotlin/ranges/ClosedFloatRange;->(FF)V +HSPLkotlin/ranges/ClosedFloatRange;->getEndInclusive()Ljava/lang/Comparable; +HSPLkotlin/ranges/ClosedFloatRange;->getEndInclusive()Ljava/lang/Float; +HSPLkotlin/ranges/ClosedFloatRange;->getStart()Ljava/lang/Comparable; +HSPLkotlin/ranges/ClosedFloatRange;->getStart()Ljava/lang/Float; +HSPLkotlin/ranges/ClosedFloatRange;->isEmpty()Z +HSPLkotlin/ranges/ClosedFloatRange;->lessThanOrEquals(FF)Z +HSPLkotlin/ranges/ClosedFloatRange;->lessThanOrEquals(Ljava/lang/Comparable;Ljava/lang/Comparable;)Z +Lkotlin/ranges/ClosedFloatingPointRange; +Lkotlin/ranges/ClosedRange; +Lkotlin/ranges/IntProgression; +HSPLkotlin/ranges/IntProgression;->()V +HSPLkotlin/ranges/IntProgression;->(III)V +HSPLkotlin/ranges/IntProgression;->getFirst()I +HSPLkotlin/ranges/IntProgression;->getLast()I +HSPLkotlin/ranges/IntProgression;->getStep()I +HSPLkotlin/ranges/IntProgression;->iterator()Ljava/util/Iterator; +HSPLkotlin/ranges/IntProgression;->iterator()Lkotlin/collections/IntIterator; +Lkotlin/ranges/IntProgression$Companion; +HSPLkotlin/ranges/IntProgression$Companion;->()V +HSPLkotlin/ranges/IntProgression$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/ranges/IntProgressionIterator; +HSPLkotlin/ranges/IntProgressionIterator;->(III)V +HSPLkotlin/ranges/IntProgressionIterator;->hasNext()Z +HSPLkotlin/ranges/IntProgressionIterator;->nextInt()I +Lkotlin/ranges/IntRange; +HSPLkotlin/ranges/IntRange;->()V +HSPLkotlin/ranges/IntRange;->(II)V +HSPLkotlin/ranges/IntRange;->contains(I)Z +Lkotlin/ranges/IntRange$Companion; +HSPLkotlin/ranges/IntRange$Companion;->()V +HSPLkotlin/ranges/IntRange$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/ranges/LongProgression; +HSPLkotlin/ranges/LongProgression;->()V +HSPLkotlin/ranges/LongProgression;->(JJJ)V +HSPLkotlin/ranges/LongProgression;->getFirst()J +HSPLkotlin/ranges/LongProgression;->getLast()J +Lkotlin/ranges/LongProgression$Companion; +HSPLkotlin/ranges/LongProgression$Companion;->()V +HSPLkotlin/ranges/LongProgression$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/ranges/LongRange; +HSPLkotlin/ranges/LongRange;->()V +HSPLkotlin/ranges/LongRange;->(JJ)V +HSPLkotlin/ranges/LongRange;->contains(J)Z +Lkotlin/ranges/LongRange$Companion; +HSPLkotlin/ranges/LongRange$Companion;->()V +HSPLkotlin/ranges/LongRange$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/ranges/OpenEndRange; +Lkotlin/ranges/RangesKt; +Lkotlin/ranges/RangesKt__RangesKt; +HSPLkotlin/ranges/RangesKt__RangesKt;->rangeTo(FF)Lkotlin/ranges/ClosedFloatingPointRange; +Lkotlin/ranges/RangesKt___RangesKt; +HSPLkotlin/ranges/RangesKt___RangesKt;->coerceAtLeast(FF)F +HSPLkotlin/ranges/RangesKt___RangesKt;->coerceAtLeast(II)I +HSPLkotlin/ranges/RangesKt___RangesKt;->coerceAtLeast(JJ)J +HSPLkotlin/ranges/RangesKt___RangesKt;->coerceAtLeast(Ljava/lang/Comparable;Ljava/lang/Comparable;)Ljava/lang/Comparable; +HSPLkotlin/ranges/RangesKt___RangesKt;->coerceAtMost(FF)F +HSPLkotlin/ranges/RangesKt___RangesKt;->coerceAtMost(II)I +HSPLkotlin/ranges/RangesKt___RangesKt;->coerceAtMost(JJ)J +HSPLkotlin/ranges/RangesKt___RangesKt;->coerceIn(DDD)D +HSPLkotlin/ranges/RangesKt___RangesKt;->coerceIn(FFF)F +HSPLkotlin/ranges/RangesKt___RangesKt;->coerceIn(III)I +HSPLkotlin/ranges/RangesKt___RangesKt;->coerceIn(JJJ)J +HSPLkotlin/ranges/RangesKt___RangesKt;->coerceIn(Ljava/lang/Comparable;Lkotlin/ranges/ClosedFloatingPointRange;)Ljava/lang/Comparable; +HSPLkotlin/ranges/RangesKt___RangesKt;->until(II)Lkotlin/ranges/IntRange; +Lkotlin/reflect/KAnnotatedElement; +Lkotlin/reflect/KCallable; +Lkotlin/reflect/KClass; +Lkotlin/reflect/KClassifier; +Lkotlin/reflect/KDeclarationContainer; +Lkotlin/reflect/KFunction; +Lkotlin/reflect/KMutableProperty; +Lkotlin/reflect/KMutableProperty0; +Lkotlin/reflect/KMutableProperty1; +Lkotlin/reflect/KProperty; +Lkotlin/reflect/KProperty0; +Lkotlin/reflect/KProperty1; +Lkotlin/reflect/KProperty2; +Lkotlin/reflect/jvm/internal/CacheByClass; +HSPLkotlin/reflect/jvm/internal/CacheByClass;->()V +Lkotlin/reflect/jvm/internal/CacheByClassKt; +HSPLkotlin/reflect/jvm/internal/CacheByClassKt;->()V +HSPLkotlin/reflect/jvm/internal/CacheByClassKt;->createCache(Lkotlin/jvm/functions/Function1;)Lkotlin/reflect/jvm/internal/CacheByClass; +Lkotlin/reflect/jvm/internal/CachesKt; +HSPLkotlin/reflect/jvm/internal/CachesKt;->()V +HSPLkotlin/reflect/jvm/internal/CachesKt;->getOrCreateKotlinClass(Ljava/lang/Class;)Lkotlin/reflect/jvm/internal/KClassImpl; +HSPLkotlin/reflect/jvm/internal/CachesKt;->getOrCreateKotlinPackage(Ljava/lang/Class;)Lkotlin/reflect/KDeclarationContainer; +Lkotlin/reflect/jvm/internal/CachesKt$CACHE_FOR_BASE_CLASSIFIERS$1; +HSPLkotlin/reflect/jvm/internal/CachesKt$CACHE_FOR_BASE_CLASSIFIERS$1;->()V +HSPLkotlin/reflect/jvm/internal/CachesKt$CACHE_FOR_BASE_CLASSIFIERS$1;->()V +Lkotlin/reflect/jvm/internal/CachesKt$CACHE_FOR_GENERIC_CLASSIFIERS$1; +HSPLkotlin/reflect/jvm/internal/CachesKt$CACHE_FOR_GENERIC_CLASSIFIERS$1;->()V +HSPLkotlin/reflect/jvm/internal/CachesKt$CACHE_FOR_GENERIC_CLASSIFIERS$1;->()V +Lkotlin/reflect/jvm/internal/CachesKt$CACHE_FOR_NULLABLE_BASE_CLASSIFIERS$1; +HSPLkotlin/reflect/jvm/internal/CachesKt$CACHE_FOR_NULLABLE_BASE_CLASSIFIERS$1;->()V +HSPLkotlin/reflect/jvm/internal/CachesKt$CACHE_FOR_NULLABLE_BASE_CLASSIFIERS$1;->()V +Lkotlin/reflect/jvm/internal/CachesKt$K_CLASS_CACHE$1; +HSPLkotlin/reflect/jvm/internal/CachesKt$K_CLASS_CACHE$1;->()V +HSPLkotlin/reflect/jvm/internal/CachesKt$K_CLASS_CACHE$1;->()V +HSPLkotlin/reflect/jvm/internal/CachesKt$K_CLASS_CACHE$1;->invoke(Ljava/lang/Class;)Lkotlin/reflect/jvm/internal/KClassImpl; +HSPLkotlin/reflect/jvm/internal/CachesKt$K_CLASS_CACHE$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlin/reflect/jvm/internal/CachesKt$K_PACKAGE_CACHE$1; +HSPLkotlin/reflect/jvm/internal/CachesKt$K_PACKAGE_CACHE$1;->()V +HSPLkotlin/reflect/jvm/internal/CachesKt$K_PACKAGE_CACHE$1;->()V +HSPLkotlin/reflect/jvm/internal/CachesKt$K_PACKAGE_CACHE$1;->invoke(Ljava/lang/Class;)Lkotlin/reflect/jvm/internal/KPackageImpl; +HSPLkotlin/reflect/jvm/internal/CachesKt$K_PACKAGE_CACHE$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlin/reflect/jvm/internal/ClassValueCache; +HSPLkotlin/reflect/jvm/internal/ClassValueCache;->(Lkotlin/jvm/functions/Function1;)V +HSPLkotlin/reflect/jvm/internal/ClassValueCache;->get(Ljava/lang/Class;)Ljava/lang/Object; +Lkotlin/reflect/jvm/internal/ClassValueCache$$ExternalSyntheticApiModelOutline0; +HSPLkotlin/reflect/jvm/internal/ClassValueCache$$ExternalSyntheticApiModelOutline0;->m(Lkotlin/reflect/jvm/internal/ComputableClassValue;Ljava/lang/Class;)Ljava/lang/Object; +Lkotlin/reflect/jvm/internal/ComputableClassValue; +HSPLkotlin/reflect/jvm/internal/ComputableClassValue;->(Lkotlin/jvm/functions/Function1;)V +HSPLkotlin/reflect/jvm/internal/ComputableClassValue;->computeValue(Ljava/lang/Class;)Ljava/lang/Object; +HSPLkotlin/reflect/jvm/internal/ComputableClassValue;->computeValue(Ljava/lang/Class;)Ljava/lang/ref/SoftReference; +Lkotlin/reflect/jvm/internal/KCallableImpl; +HSPLkotlin/reflect/jvm/internal/KCallableImpl;->()V +Lkotlin/reflect/jvm/internal/KCallableImpl$_absentArguments$1; +HSPLkotlin/reflect/jvm/internal/KCallableImpl$_absentArguments$1;->(Lkotlin/reflect/jvm/internal/KCallableImpl;)V +Lkotlin/reflect/jvm/internal/KCallableImpl$_annotations$1; +HSPLkotlin/reflect/jvm/internal/KCallableImpl$_annotations$1;->(Lkotlin/reflect/jvm/internal/KCallableImpl;)V +Lkotlin/reflect/jvm/internal/KCallableImpl$_parameters$1; +HSPLkotlin/reflect/jvm/internal/KCallableImpl$_parameters$1;->(Lkotlin/reflect/jvm/internal/KCallableImpl;)V +Lkotlin/reflect/jvm/internal/KCallableImpl$_returnType$1; +HSPLkotlin/reflect/jvm/internal/KCallableImpl$_returnType$1;->(Lkotlin/reflect/jvm/internal/KCallableImpl;)V +Lkotlin/reflect/jvm/internal/KCallableImpl$_typeParameters$1; +HSPLkotlin/reflect/jvm/internal/KCallableImpl$_typeParameters$1;->(Lkotlin/reflect/jvm/internal/KCallableImpl;)V +Lkotlin/reflect/jvm/internal/KCallableImpl$parametersNeedMFVCFlattening$1; +HSPLkotlin/reflect/jvm/internal/KCallableImpl$parametersNeedMFVCFlattening$1;->(Lkotlin/reflect/jvm/internal/KCallableImpl;)V +Lkotlin/reflect/jvm/internal/KClassImpl; +HSPLkotlin/reflect/jvm/internal/KClassImpl;->(Ljava/lang/Class;)V +HSPLkotlin/reflect/jvm/internal/KClassImpl;->access$getClassId(Lkotlin/reflect/jvm/internal/KClassImpl;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/KClassImpl;->equals(Ljava/lang/Object;)Z +HSPLkotlin/reflect/jvm/internal/KClassImpl;->getClassId()Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/KClassImpl;->getJClass()Ljava/lang/Class; +HSPLkotlin/reflect/jvm/internal/KClassImpl;->getSimpleName()Ljava/lang/String; +HSPLkotlin/reflect/jvm/internal/KClassImpl;->hashCode()I +HSPLkotlin/reflect/jvm/internal/KClassImpl;->toString()Ljava/lang/String; +Lkotlin/reflect/jvm/internal/KClassImpl$Data; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data;->()V +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data;->(Lkotlin/reflect/jvm/internal/KClassImpl;)V +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data;->getSimpleName()Ljava/lang/String; +Lkotlin/reflect/jvm/internal/KClassImpl$Data$allMembers$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$allMembers$2;->(Lkotlin/reflect/jvm/internal/KClassImpl$Data;)V +Lkotlin/reflect/jvm/internal/KClassImpl$Data$allNonStaticMembers$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$allNonStaticMembers$2;->(Lkotlin/reflect/jvm/internal/KClassImpl$Data;)V +Lkotlin/reflect/jvm/internal/KClassImpl$Data$allStaticMembers$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$allStaticMembers$2;->(Lkotlin/reflect/jvm/internal/KClassImpl$Data;)V +Lkotlin/reflect/jvm/internal/KClassImpl$Data$annotations$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$annotations$2;->(Lkotlin/reflect/jvm/internal/KClassImpl$Data;)V +Lkotlin/reflect/jvm/internal/KClassImpl$Data$constructors$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$constructors$2;->(Lkotlin/reflect/jvm/internal/KClassImpl;)V +Lkotlin/reflect/jvm/internal/KClassImpl$Data$declaredMembers$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$declaredMembers$2;->(Lkotlin/reflect/jvm/internal/KClassImpl$Data;)V +Lkotlin/reflect/jvm/internal/KClassImpl$Data$declaredNonStaticMembers$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$declaredNonStaticMembers$2;->(Lkotlin/reflect/jvm/internal/KClassImpl;)V +Lkotlin/reflect/jvm/internal/KClassImpl$Data$declaredStaticMembers$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$declaredStaticMembers$2;->(Lkotlin/reflect/jvm/internal/KClassImpl;)V +Lkotlin/reflect/jvm/internal/KClassImpl$Data$descriptor$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$descriptor$2;->(Lkotlin/reflect/jvm/internal/KClassImpl;)V +Lkotlin/reflect/jvm/internal/KClassImpl$Data$inheritedNonStaticMembers$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$inheritedNonStaticMembers$2;->(Lkotlin/reflect/jvm/internal/KClassImpl;)V +Lkotlin/reflect/jvm/internal/KClassImpl$Data$inheritedStaticMembers$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$inheritedStaticMembers$2;->(Lkotlin/reflect/jvm/internal/KClassImpl;)V +Lkotlin/reflect/jvm/internal/KClassImpl$Data$nestedClasses$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$nestedClasses$2;->(Lkotlin/reflect/jvm/internal/KClassImpl$Data;)V +Lkotlin/reflect/jvm/internal/KClassImpl$Data$objectInstance$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$objectInstance$2;->(Lkotlin/reflect/jvm/internal/KClassImpl$Data;Lkotlin/reflect/jvm/internal/KClassImpl;)V +Lkotlin/reflect/jvm/internal/KClassImpl$Data$qualifiedName$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$qualifiedName$2;->(Lkotlin/reflect/jvm/internal/KClassImpl;)V +Lkotlin/reflect/jvm/internal/KClassImpl$Data$sealedSubclasses$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$sealedSubclasses$2;->(Lkotlin/reflect/jvm/internal/KClassImpl$Data;)V +Lkotlin/reflect/jvm/internal/KClassImpl$Data$simpleName$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$simpleName$2;->(Lkotlin/reflect/jvm/internal/KClassImpl;Lkotlin/reflect/jvm/internal/KClassImpl$Data;)V +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$simpleName$2;->invoke()Ljava/lang/Object; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$simpleName$2;->invoke()Ljava/lang/String; +Lkotlin/reflect/jvm/internal/KClassImpl$Data$supertypes$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$supertypes$2;->(Lkotlin/reflect/jvm/internal/KClassImpl$Data;Lkotlin/reflect/jvm/internal/KClassImpl;)V +Lkotlin/reflect/jvm/internal/KClassImpl$Data$typeParameters$2; +HSPLkotlin/reflect/jvm/internal/KClassImpl$Data$typeParameters$2;->(Lkotlin/reflect/jvm/internal/KClassImpl$Data;Lkotlin/reflect/jvm/internal/KClassImpl;)V +Lkotlin/reflect/jvm/internal/KClassImpl$data$1; +HSPLkotlin/reflect/jvm/internal/KClassImpl$data$1;->(Lkotlin/reflect/jvm/internal/KClassImpl;)V +HSPLkotlin/reflect/jvm/internal/KClassImpl$data$1;->invoke()Ljava/lang/Object; +HSPLkotlin/reflect/jvm/internal/KClassImpl$data$1;->invoke()Lkotlin/reflect/jvm/internal/KClassImpl$Data; +Lkotlin/reflect/jvm/internal/KClassifierImpl; +Lkotlin/reflect/jvm/internal/KDeclarationContainerImpl; +HSPLkotlin/reflect/jvm/internal/KDeclarationContainerImpl;->()V +HSPLkotlin/reflect/jvm/internal/KDeclarationContainerImpl;->()V +Lkotlin/reflect/jvm/internal/KDeclarationContainerImpl$Companion; +HSPLkotlin/reflect/jvm/internal/KDeclarationContainerImpl$Companion;->()V +HSPLkotlin/reflect/jvm/internal/KDeclarationContainerImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/reflect/jvm/internal/KDeclarationContainerImpl$Data; +HSPLkotlin/reflect/jvm/internal/KDeclarationContainerImpl$Data;->()V +HSPLkotlin/reflect/jvm/internal/KDeclarationContainerImpl$Data;->(Lkotlin/reflect/jvm/internal/KDeclarationContainerImpl;)V +Lkotlin/reflect/jvm/internal/KDeclarationContainerImpl$Data$moduleData$2; +HSPLkotlin/reflect/jvm/internal/KDeclarationContainerImpl$Data$moduleData$2;->(Lkotlin/reflect/jvm/internal/KDeclarationContainerImpl;)V +Lkotlin/reflect/jvm/internal/KMutableProperty1Impl; +HSPLkotlin/reflect/jvm/internal/KMutableProperty1Impl;->(Lkotlin/reflect/jvm/internal/KDeclarationContainerImpl;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V +Lkotlin/reflect/jvm/internal/KMutableProperty1Impl$_setter$1; +HSPLkotlin/reflect/jvm/internal/KMutableProperty1Impl$_setter$1;->(Lkotlin/reflect/jvm/internal/KMutableProperty1Impl;)V +Lkotlin/reflect/jvm/internal/KPackageImpl; +HSPLkotlin/reflect/jvm/internal/KPackageImpl;->(Ljava/lang/Class;)V +Lkotlin/reflect/jvm/internal/KPackageImpl$data$1; +HSPLkotlin/reflect/jvm/internal/KPackageImpl$data$1;->(Lkotlin/reflect/jvm/internal/KPackageImpl;)V +Lkotlin/reflect/jvm/internal/KProperty0Impl; +HSPLkotlin/reflect/jvm/internal/KProperty0Impl;->(Lkotlin/reflect/jvm/internal/KDeclarationContainerImpl;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V +Lkotlin/reflect/jvm/internal/KProperty0Impl$_getter$1; +HSPLkotlin/reflect/jvm/internal/KProperty0Impl$_getter$1;->(Lkotlin/reflect/jvm/internal/KProperty0Impl;)V +Lkotlin/reflect/jvm/internal/KProperty0Impl$delegateValue$1; +HSPLkotlin/reflect/jvm/internal/KProperty0Impl$delegateValue$1;->(Lkotlin/reflect/jvm/internal/KProperty0Impl;)V +Lkotlin/reflect/jvm/internal/KProperty1Impl; +HSPLkotlin/reflect/jvm/internal/KProperty1Impl;->(Lkotlin/reflect/jvm/internal/KDeclarationContainerImpl;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V +Lkotlin/reflect/jvm/internal/KProperty1Impl$_getter$1; +HSPLkotlin/reflect/jvm/internal/KProperty1Impl$_getter$1;->(Lkotlin/reflect/jvm/internal/KProperty1Impl;)V +Lkotlin/reflect/jvm/internal/KProperty1Impl$delegateSource$1; +HSPLkotlin/reflect/jvm/internal/KProperty1Impl$delegateSource$1;->(Lkotlin/reflect/jvm/internal/KProperty1Impl;)V +Lkotlin/reflect/jvm/internal/KProperty2Impl; +HSPLkotlin/reflect/jvm/internal/KProperty2Impl;->(Lkotlin/reflect/jvm/internal/KDeclarationContainerImpl;Ljava/lang/String;Ljava/lang/String;)V +Lkotlin/reflect/jvm/internal/KProperty2Impl$_getter$1; +HSPLkotlin/reflect/jvm/internal/KProperty2Impl$_getter$1;->(Lkotlin/reflect/jvm/internal/KProperty2Impl;)V +Lkotlin/reflect/jvm/internal/KProperty2Impl$delegateSource$1; +HSPLkotlin/reflect/jvm/internal/KProperty2Impl$delegateSource$1;->(Lkotlin/reflect/jvm/internal/KProperty2Impl;)V +Lkotlin/reflect/jvm/internal/KPropertyImpl; +HSPLkotlin/reflect/jvm/internal/KPropertyImpl;->()V +HSPLkotlin/reflect/jvm/internal/KPropertyImpl;->(Lkotlin/reflect/jvm/internal/KDeclarationContainerImpl;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V +HSPLkotlin/reflect/jvm/internal/KPropertyImpl;->(Lkotlin/reflect/jvm/internal/KDeclarationContainerImpl;Ljava/lang/String;Ljava/lang/String;Lkotlin/reflect/jvm/internal/impl/descriptors/PropertyDescriptor;Ljava/lang/Object;)V +HSPLkotlin/reflect/jvm/internal/KPropertyImpl;->getName()Ljava/lang/String; +Lkotlin/reflect/jvm/internal/KPropertyImpl$Companion; +HSPLkotlin/reflect/jvm/internal/KPropertyImpl$Companion;->()V +HSPLkotlin/reflect/jvm/internal/KPropertyImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/reflect/jvm/internal/KPropertyImpl$_descriptor$1; +HSPLkotlin/reflect/jvm/internal/KPropertyImpl$_descriptor$1;->(Lkotlin/reflect/jvm/internal/KPropertyImpl;)V +Lkotlin/reflect/jvm/internal/KPropertyImpl$_javaField$1; +HSPLkotlin/reflect/jvm/internal/KPropertyImpl$_javaField$1;->(Lkotlin/reflect/jvm/internal/KPropertyImpl;)V +Lkotlin/reflect/jvm/internal/KTypeParameterOwnerImpl; +Lkotlin/reflect/jvm/internal/ReflectProperties; +HSPLkotlin/reflect/jvm/internal/ReflectProperties;->lazy(Lkotlin/jvm/functions/Function0;)Lkotlin/reflect/jvm/internal/ReflectProperties$LazyVal; +HSPLkotlin/reflect/jvm/internal/ReflectProperties;->lazySoft(Ljava/lang/Object;Lkotlin/jvm/functions/Function0;)Lkotlin/reflect/jvm/internal/ReflectProperties$LazySoftVal; +HSPLkotlin/reflect/jvm/internal/ReflectProperties;->lazySoft(Lkotlin/jvm/functions/Function0;)Lkotlin/reflect/jvm/internal/ReflectProperties$LazySoftVal; +Lkotlin/reflect/jvm/internal/ReflectProperties$LazySoftVal; +HSPLkotlin/reflect/jvm/internal/ReflectProperties$LazySoftVal;->(Ljava/lang/Object;Lkotlin/jvm/functions/Function0;)V +HSPLkotlin/reflect/jvm/internal/ReflectProperties$LazySoftVal;->invoke()Ljava/lang/Object; +Lkotlin/reflect/jvm/internal/ReflectProperties$LazyVal; +HSPLkotlin/reflect/jvm/internal/ReflectProperties$LazyVal;->(Lkotlin/jvm/functions/Function0;)V +HSPLkotlin/reflect/jvm/internal/ReflectProperties$LazyVal;->invoke()Ljava/lang/Object; +Lkotlin/reflect/jvm/internal/ReflectProperties$Val; +HSPLkotlin/reflect/jvm/internal/ReflectProperties$Val;->()V +HSPLkotlin/reflect/jvm/internal/ReflectProperties$Val;->()V +HSPLkotlin/reflect/jvm/internal/ReflectProperties$Val;->escape(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlin/reflect/jvm/internal/ReflectProperties$Val;->getValue(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lkotlin/reflect/jvm/internal/ReflectProperties$Val$1; +HSPLkotlin/reflect/jvm/internal/ReflectProperties$Val$1;->()V +Lkotlin/reflect/jvm/internal/ReflectionFactoryImpl; +HSPLkotlin/reflect/jvm/internal/ReflectionFactoryImpl;->()V +HSPLkotlin/reflect/jvm/internal/ReflectionFactoryImpl;->getOrCreateKotlinClass(Ljava/lang/Class;)Lkotlin/reflect/KClass; +HSPLkotlin/reflect/jvm/internal/ReflectionFactoryImpl;->getOrCreateKotlinPackage(Ljava/lang/Class;Ljava/lang/String;)Lkotlin/reflect/KDeclarationContainer; +HSPLkotlin/reflect/jvm/internal/ReflectionFactoryImpl;->getOwner(Lkotlin/jvm/internal/CallableReference;)Lkotlin/reflect/jvm/internal/KDeclarationContainerImpl; +HSPLkotlin/reflect/jvm/internal/ReflectionFactoryImpl;->mutableProperty1(Lkotlin/jvm/internal/MutablePropertyReference1;)Lkotlin/reflect/KMutableProperty1; +HSPLkotlin/reflect/jvm/internal/ReflectionFactoryImpl;->property0(Lkotlin/jvm/internal/PropertyReference0;)Lkotlin/reflect/KProperty0; +HSPLkotlin/reflect/jvm/internal/ReflectionFactoryImpl;->property1(Lkotlin/jvm/internal/PropertyReference1;)Lkotlin/reflect/KProperty1; +HSPLkotlin/reflect/jvm/internal/ReflectionFactoryImpl;->property2(Lkotlin/jvm/internal/PropertyReference2;)Lkotlin/reflect/KProperty2; +Lkotlin/reflect/jvm/internal/RuntimeTypeMapper; +HSPLkotlin/reflect/jvm/internal/RuntimeTypeMapper;->()V +HSPLkotlin/reflect/jvm/internal/RuntimeTypeMapper;->()V +HSPLkotlin/reflect/jvm/internal/RuntimeTypeMapper;->getPrimitiveType(Ljava/lang/Class;)Lkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType; +HSPLkotlin/reflect/jvm/internal/RuntimeTypeMapper;->mapJvmClassToKotlinClassId(Ljava/lang/Class;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +Lkotlin/reflect/jvm/internal/impl/builtins/CompanionObjectMapping; +HSPLkotlin/reflect/jvm/internal/impl/builtins/CompanionObjectMapping;->()V +HSPLkotlin/reflect/jvm/internal/impl/builtins/CompanionObjectMapping;->()V +HSPLkotlin/reflect/jvm/internal/impl/builtins/CompanionObjectMapping;->allClassesWithIntrinsicCompanions()Ljava/util/Set; +Lkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType; +HSPLkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType;->$values()[Lkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType; +HSPLkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType;->()V +HSPLkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType;->(Ljava/lang/String;ILjava/lang/String;)V +HSPLkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType;->getArrayTypeName()Lkotlin/reflect/jvm/internal/impl/name/Name; +HSPLkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType;->getTypeName()Lkotlin/reflect/jvm/internal/impl/name/Name; +HSPLkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType;->values()[Lkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType; +Lkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType$Companion; +HSPLkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType$Companion;->()V +HSPLkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType$arrayTypeFqName$2; +HSPLkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType$arrayTypeFqName$2;->(Lkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType;)V +Lkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType$typeFqName$2; +HSPLkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType$typeFqName$2;->(Lkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType;)V +Lkotlin/reflect/jvm/internal/impl/builtins/StandardNames; +HSPLkotlin/reflect/jvm/internal/impl/builtins/StandardNames;->()V +HSPLkotlin/reflect/jvm/internal/impl/builtins/StandardNames;->()V +HSPLkotlin/reflect/jvm/internal/impl/builtins/StandardNames;->getFunctionClassId(I)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/builtins/StandardNames;->getFunctionName(I)Ljava/lang/String; +HSPLkotlin/reflect/jvm/internal/impl/builtins/StandardNames;->getPrimitiveFqName(Lkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType;)Lkotlin/reflect/jvm/internal/impl/name/FqName; +Lkotlin/reflect/jvm/internal/impl/builtins/StandardNames$FqNames; +HSPLkotlin/reflect/jvm/internal/impl/builtins/StandardNames$FqNames;->()V +HSPLkotlin/reflect/jvm/internal/impl/builtins/StandardNames$FqNames;->()V +HSPLkotlin/reflect/jvm/internal/impl/builtins/StandardNames$FqNames;->annotationName(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/builtins/StandardNames$FqNames;->collectionsFqName(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/builtins/StandardNames$FqNames;->fqName(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/builtins/StandardNames$FqNames;->fqNameUnsafe(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe; +HSPLkotlin/reflect/jvm/internal/impl/builtins/StandardNames$FqNames;->internalName(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/builtins/StandardNames$FqNames;->rangesFqName(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe; +HSPLkotlin/reflect/jvm/internal/impl/builtins/StandardNames$FqNames;->reflect(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe; +Lkotlin/reflect/jvm/internal/impl/builtins/functions/FunctionTypeKind; +HSPLkotlin/reflect/jvm/internal/impl/builtins/functions/FunctionTypeKind;->(Lkotlin/reflect/jvm/internal/impl/name/FqName;Ljava/lang/String;ZLkotlin/reflect/jvm/internal/impl/name/ClassId;)V +HSPLkotlin/reflect/jvm/internal/impl/builtins/functions/FunctionTypeKind;->getClassNamePrefix()Ljava/lang/String; +HSPLkotlin/reflect/jvm/internal/impl/builtins/functions/FunctionTypeKind;->getPackageFqName()Lkotlin/reflect/jvm/internal/impl/name/FqName; +Lkotlin/reflect/jvm/internal/impl/builtins/functions/FunctionTypeKind$Function; +HSPLkotlin/reflect/jvm/internal/impl/builtins/functions/FunctionTypeKind$Function;->()V +HSPLkotlin/reflect/jvm/internal/impl/builtins/functions/FunctionTypeKind$Function;->()V +Lkotlin/reflect/jvm/internal/impl/builtins/functions/FunctionTypeKind$KFunction; +HSPLkotlin/reflect/jvm/internal/impl/builtins/functions/FunctionTypeKind$KFunction;->()V +HSPLkotlin/reflect/jvm/internal/impl/builtins/functions/FunctionTypeKind$KFunction;->()V +Lkotlin/reflect/jvm/internal/impl/builtins/functions/FunctionTypeKind$KSuspendFunction; +HSPLkotlin/reflect/jvm/internal/impl/builtins/functions/FunctionTypeKind$KSuspendFunction;->()V +HSPLkotlin/reflect/jvm/internal/impl/builtins/functions/FunctionTypeKind$KSuspendFunction;->()V +Lkotlin/reflect/jvm/internal/impl/builtins/functions/FunctionTypeKind$SuspendFunction; +HSPLkotlin/reflect/jvm/internal/impl/builtins/functions/FunctionTypeKind$SuspendFunction;->()V +HSPLkotlin/reflect/jvm/internal/impl/builtins/functions/FunctionTypeKind$SuspendFunction;->()V +Lkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap; +HSPLkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap;->()V +HSPLkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap;->()V +HSPLkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap;->add(Lkotlin/reflect/jvm/internal/impl/name/ClassId;Lkotlin/reflect/jvm/internal/impl/name/ClassId;)V +HSPLkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap;->addJavaToKotlin(Lkotlin/reflect/jvm/internal/impl/name/ClassId;Lkotlin/reflect/jvm/internal/impl/name/ClassId;)V +HSPLkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap;->addKotlinToJava(Lkotlin/reflect/jvm/internal/impl/name/FqName;Lkotlin/reflect/jvm/internal/impl/name/ClassId;)V +HSPLkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap;->addMapping(Lkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap$PlatformMutabilityMapping;)V +HSPLkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap;->addTopLevel(Ljava/lang/Class;Lkotlin/reflect/jvm/internal/impl/name/FqName;)V +HSPLkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap;->addTopLevel(Ljava/lang/Class;Lkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;)V +HSPLkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap;->classId(Ljava/lang/Class;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap;->mapJavaToKotlin(Lkotlin/reflect/jvm/internal/impl/name/FqName;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +Lkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap$PlatformMutabilityMapping; +HSPLkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap$PlatformMutabilityMapping;->(Lkotlin/reflect/jvm/internal/impl/name/ClassId;Lkotlin/reflect/jvm/internal/impl/name/ClassId;Lkotlin/reflect/jvm/internal/impl/name/ClassId;)V +HSPLkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap$PlatformMutabilityMapping;->component1()Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap$PlatformMutabilityMapping;->component2()Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/builtins/jvm/JavaToKotlinClassMap$PlatformMutabilityMapping;->component3()Lkotlin/reflect/jvm/internal/impl/name/ClassId; +Lkotlin/reflect/jvm/internal/impl/descriptors/runtime/structure/ReflectClassUtilKt; +HSPLkotlin/reflect/jvm/internal/impl/descriptors/runtime/structure/ReflectClassUtilKt;->()V +HSPLkotlin/reflect/jvm/internal/impl/descriptors/runtime/structure/ReflectClassUtilKt;->getClassId(Ljava/lang/Class;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/ClassId;->()V +HSPLkotlin/reflect/jvm/internal/impl/name/ClassId;->(Lkotlin/reflect/jvm/internal/impl/name/FqName;Lkotlin/reflect/jvm/internal/impl/name/FqName;Z)V +HSPLkotlin/reflect/jvm/internal/impl/name/ClassId;->(Lkotlin/reflect/jvm/internal/impl/name/FqName;Lkotlin/reflect/jvm/internal/impl/name/Name;)V +HSPLkotlin/reflect/jvm/internal/impl/name/ClassId;->asSingleFqName()Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/name/ClassId;->createNestedClassId(Lkotlin/reflect/jvm/internal/impl/name/Name;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/ClassId;->getPackageFqName()Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/name/ClassId;->getRelativeClassName()Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/name/ClassId;->getShortClassName()Lkotlin/reflect/jvm/internal/impl/name/Name; +HSPLkotlin/reflect/jvm/internal/impl/name/ClassId;->hashCode()I +HSPLkotlin/reflect/jvm/internal/impl/name/ClassId;->isLocal()Z +HSPLkotlin/reflect/jvm/internal/impl/name/ClassId;->topLevel(Lkotlin/reflect/jvm/internal/impl/name/FqName;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/name/FqName;->()V +HSPLkotlin/reflect/jvm/internal/impl/name/FqName;->(Ljava/lang/String;)V +HSPLkotlin/reflect/jvm/internal/impl/name/FqName;->(Lkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;)V +HSPLkotlin/reflect/jvm/internal/impl/name/FqName;->(Lkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;Lkotlin/reflect/jvm/internal/impl/name/FqName;)V +HSPLkotlin/reflect/jvm/internal/impl/name/FqName;->asString()Ljava/lang/String; +HSPLkotlin/reflect/jvm/internal/impl/name/FqName;->child(Lkotlin/reflect/jvm/internal/impl/name/Name;)Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/name/FqName;->equals(Ljava/lang/Object;)Z +HSPLkotlin/reflect/jvm/internal/impl/name/FqName;->hashCode()I +HSPLkotlin/reflect/jvm/internal/impl/name/FqName;->isRoot()Z +HSPLkotlin/reflect/jvm/internal/impl/name/FqName;->parent()Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/name/FqName;->shortName()Lkotlin/reflect/jvm/internal/impl/name/Name; +HSPLkotlin/reflect/jvm/internal/impl/name/FqName;->toString()Ljava/lang/String; +HSPLkotlin/reflect/jvm/internal/impl/name/FqName;->toUnsafe()Lkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe; +HSPLkotlin/reflect/jvm/internal/impl/name/FqName;->topLevel(Lkotlin/reflect/jvm/internal/impl/name/Name;)Lkotlin/reflect/jvm/internal/impl/name/FqName; +Lkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe; +HSPLkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;->()V +HSPLkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;->(Ljava/lang/String;)V +HSPLkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;->(Ljava/lang/String;Lkotlin/reflect/jvm/internal/impl/name/FqName;)V +HSPLkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;->(Ljava/lang/String;Lkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;Lkotlin/reflect/jvm/internal/impl/name/Name;)V +HSPLkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;->asString()Ljava/lang/String; +HSPLkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;->child(Lkotlin/reflect/jvm/internal/impl/name/Name;)Lkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe; +HSPLkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;->compute()V +HSPLkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;->equals(Ljava/lang/Object;)Z +HSPLkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;->hashCode()I +HSPLkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;->isRoot()Z +HSPLkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;->parent()Lkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe; +HSPLkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;->shortName()Lkotlin/reflect/jvm/internal/impl/name/Name; +HSPLkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;->toSafe()Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;->toString()Ljava/lang/String; +HSPLkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe;->topLevel(Lkotlin/reflect/jvm/internal/impl/name/Name;)Lkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe; +Lkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe$1; +HSPLkotlin/reflect/jvm/internal/impl/name/FqNameUnsafe$1;->()V +Lkotlin/reflect/jvm/internal/impl/name/FqNamesUtilKt; +HSPLkotlin/reflect/jvm/internal/impl/name/FqNamesUtilKt;->isSubpackageOf(Ljava/lang/String;Ljava/lang/String;)Z +HSPLkotlin/reflect/jvm/internal/impl/name/FqNamesUtilKt;->isSubpackageOf(Lkotlin/reflect/jvm/internal/impl/name/FqName;Lkotlin/reflect/jvm/internal/impl/name/FqName;)Z +HSPLkotlin/reflect/jvm/internal/impl/name/FqNamesUtilKt;->tail(Lkotlin/reflect/jvm/internal/impl/name/FqName;Lkotlin/reflect/jvm/internal/impl/name/FqName;)Lkotlin/reflect/jvm/internal/impl/name/FqName; +Lkotlin/reflect/jvm/internal/impl/name/Name; +HSPLkotlin/reflect/jvm/internal/impl/name/Name;->(Ljava/lang/String;Z)V +HSPLkotlin/reflect/jvm/internal/impl/name/Name;->asString()Ljava/lang/String; +HSPLkotlin/reflect/jvm/internal/impl/name/Name;->getIdentifier()Ljava/lang/String; +HSPLkotlin/reflect/jvm/internal/impl/name/Name;->guessByFirstCharacter(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/Name; +HSPLkotlin/reflect/jvm/internal/impl/name/Name;->hashCode()I +HSPLkotlin/reflect/jvm/internal/impl/name/Name;->identifier(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/Name; +HSPLkotlin/reflect/jvm/internal/impl/name/Name;->special(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/Name; +Lkotlin/reflect/jvm/internal/impl/name/SpecialNames; +HSPLkotlin/reflect/jvm/internal/impl/name/SpecialNames;->()V +HSPLkotlin/reflect/jvm/internal/impl/name/SpecialNames;->()V +Lkotlin/reflect/jvm/internal/impl/name/StandardClassIds; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIds;->()V +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIds;->()V +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIds;->getArray()Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIds;->getBASE_ANNOTATION_PACKAGE()Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIds;->getBASE_COLLECTIONS_PACKAGE()Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIds;->getBASE_COROUTINES_PACKAGE()Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIds;->getBASE_ENUMS_PACKAGE()Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIds;->getBASE_KOTLIN_PACKAGE()Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIds;->getBASE_RANGES_PACKAGE()Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIds;->getBASE_REFLECT_PACKAGE()Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIds;->getKClass()Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIds;->getKFunction()Lkotlin/reflect/jvm/internal/impl/name/ClassId; +Lkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->()V +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->access$annotationId(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->access$baseId(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->access$collectionsId(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->access$coroutinesId(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->access$enumsId(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->access$inverseMap(Ljava/util/Map;)Ljava/util/Map; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->access$primitiveArrayId(Lkotlin/reflect/jvm/internal/impl/name/Name;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->access$rangesId(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->access$reflectId(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->access$unsignedId(Lkotlin/reflect/jvm/internal/impl/name/ClassId;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->annotationId(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->baseId(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->collectionsId(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->coroutinesId(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->enumsId(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->inverseMap(Ljava/util/Map;)Ljava/util/Map; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->primitiveArrayId(Lkotlin/reflect/jvm/internal/impl/name/Name;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->rangesId(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->reflectId(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +HSPLkotlin/reflect/jvm/internal/impl/name/StandardClassIdsKt;->unsignedId(Lkotlin/reflect/jvm/internal/impl/name/ClassId;)Lkotlin/reflect/jvm/internal/impl/name/ClassId; +Lkotlin/reflect/jvm/internal/impl/resolve/jvm/JvmPrimitiveType; +HSPLkotlin/reflect/jvm/internal/impl/resolve/jvm/JvmPrimitiveType;->()V +HSPLkotlin/reflect/jvm/internal/impl/resolve/jvm/JvmPrimitiveType;->(Ljava/lang/String;ILkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLkotlin/reflect/jvm/internal/impl/resolve/jvm/JvmPrimitiveType;->get(Ljava/lang/String;)Lkotlin/reflect/jvm/internal/impl/resolve/jvm/JvmPrimitiveType; +HSPLkotlin/reflect/jvm/internal/impl/resolve/jvm/JvmPrimitiveType;->getDesc()Ljava/lang/String; +HSPLkotlin/reflect/jvm/internal/impl/resolve/jvm/JvmPrimitiveType;->getJavaKeywordName()Ljava/lang/String; +HSPLkotlin/reflect/jvm/internal/impl/resolve/jvm/JvmPrimitiveType;->getPrimitiveType()Lkotlin/reflect/jvm/internal/impl/builtins/PrimitiveType; +HSPLkotlin/reflect/jvm/internal/impl/resolve/jvm/JvmPrimitiveType;->getWrapperFqName()Lkotlin/reflect/jvm/internal/impl/name/FqName; +HSPLkotlin/reflect/jvm/internal/impl/resolve/jvm/JvmPrimitiveType;->values()[Lkotlin/reflect/jvm/internal/impl/resolve/jvm/JvmPrimitiveType; +Lkotlin/reflect/jvm/internal/impl/utils/CollectionsKt; +HSPLkotlin/reflect/jvm/internal/impl/utils/CollectionsKt;->capacity(I)I +HSPLkotlin/reflect/jvm/internal/impl/utils/CollectionsKt;->newHashMapWithExpectedSize(I)Ljava/util/HashMap; +HSPLkotlin/reflect/jvm/internal/impl/utils/CollectionsKt;->newHashSetWithExpectedSize(I)Ljava/util/HashSet; +Lkotlin/sequences/DropTakeSequence; +Lkotlin/sequences/EmptySequence; +HSPLkotlin/sequences/EmptySequence;->()V +HSPLkotlin/sequences/EmptySequence;->()V +HSPLkotlin/sequences/EmptySequence;->iterator()Ljava/util/Iterator; +Lkotlin/sequences/FilteringSequence; +HSPLkotlin/sequences/FilteringSequence;->(Lkotlin/sequences/Sequence;ZLkotlin/jvm/functions/Function1;)V +HSPLkotlin/sequences/FilteringSequence;->access$getPredicate$p(Lkotlin/sequences/FilteringSequence;)Lkotlin/jvm/functions/Function1; +HSPLkotlin/sequences/FilteringSequence;->access$getSendWhen$p(Lkotlin/sequences/FilteringSequence;)Z +HSPLkotlin/sequences/FilteringSequence;->access$getSequence$p(Lkotlin/sequences/FilteringSequence;)Lkotlin/sequences/Sequence; +HSPLkotlin/sequences/FilteringSequence;->iterator()Ljava/util/Iterator; +Lkotlin/sequences/FilteringSequence$iterator$1; +HSPLkotlin/sequences/FilteringSequence$iterator$1;->(Lkotlin/sequences/FilteringSequence;)V +HSPLkotlin/sequences/FilteringSequence$iterator$1;->calcNext()V +HSPLkotlin/sequences/FilteringSequence$iterator$1;->hasNext()Z +HSPLkotlin/sequences/FilteringSequence$iterator$1;->next()Ljava/lang/Object; +Lkotlin/sequences/FlatteningSequence; +HSPLkotlin/sequences/FlatteningSequence;->(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V +HSPLkotlin/sequences/FlatteningSequence;->access$getIterator$p(Lkotlin/sequences/FlatteningSequence;)Lkotlin/jvm/functions/Function1; +HSPLkotlin/sequences/FlatteningSequence;->access$getSequence$p(Lkotlin/sequences/FlatteningSequence;)Lkotlin/sequences/Sequence; +HSPLkotlin/sequences/FlatteningSequence;->access$getTransformer$p(Lkotlin/sequences/FlatteningSequence;)Lkotlin/jvm/functions/Function1; +HSPLkotlin/sequences/FlatteningSequence;->iterator()Ljava/util/Iterator; +Lkotlin/sequences/FlatteningSequence$iterator$1; +HSPLkotlin/sequences/FlatteningSequence$iterator$1;->(Lkotlin/sequences/FlatteningSequence;)V +HSPLkotlin/sequences/FlatteningSequence$iterator$1;->ensureItemIterator()Z +HSPLkotlin/sequences/FlatteningSequence$iterator$1;->hasNext()Z +HSPLkotlin/sequences/FlatteningSequence$iterator$1;->next()Ljava/lang/Object; +Lkotlin/sequences/GeneratorSequence; +HSPLkotlin/sequences/GeneratorSequence;->(Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;)V +HSPLkotlin/sequences/GeneratorSequence;->access$getGetInitialValue$p(Lkotlin/sequences/GeneratorSequence;)Lkotlin/jvm/functions/Function0; +HSPLkotlin/sequences/GeneratorSequence;->access$getGetNextValue$p(Lkotlin/sequences/GeneratorSequence;)Lkotlin/jvm/functions/Function1; +HSPLkotlin/sequences/GeneratorSequence;->iterator()Ljava/util/Iterator; +Lkotlin/sequences/GeneratorSequence$iterator$1; +HSPLkotlin/sequences/GeneratorSequence$iterator$1;->(Lkotlin/sequences/GeneratorSequence;)V +HSPLkotlin/sequences/GeneratorSequence$iterator$1;->calcNext()V +HSPLkotlin/sequences/GeneratorSequence$iterator$1;->hasNext()Z +HSPLkotlin/sequences/GeneratorSequence$iterator$1;->next()Ljava/lang/Object; +Lkotlin/sequences/Sequence; +Lkotlin/sequences/SequenceBuilderIterator; +HSPLkotlin/sequences/SequenceBuilderIterator;->()V +HSPLkotlin/sequences/SequenceBuilderIterator;->getContext()Lkotlin/coroutines/CoroutineContext; +HSPLkotlin/sequences/SequenceBuilderIterator;->hasNext()Z +HSPLkotlin/sequences/SequenceBuilderIterator;->next()Ljava/lang/Object; +HSPLkotlin/sequences/SequenceBuilderIterator;->resumeWith(Ljava/lang/Object;)V +HSPLkotlin/sequences/SequenceBuilderIterator;->setNextStep(Lkotlin/coroutines/Continuation;)V +HSPLkotlin/sequences/SequenceBuilderIterator;->yield(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlin/sequences/SequenceScope; +HSPLkotlin/sequences/SequenceScope;->()V +Lkotlin/sequences/SequencesKt; +Lkotlin/sequences/SequencesKt__SequenceBuilderKt; +HSPLkotlin/sequences/SequencesKt__SequenceBuilderKt;->iterator(Lkotlin/jvm/functions/Function2;)Ljava/util/Iterator; +HSPLkotlin/sequences/SequencesKt__SequenceBuilderKt;->sequence(Lkotlin/jvm/functions/Function2;)Lkotlin/sequences/Sequence; +Lkotlin/sequences/SequencesKt__SequenceBuilderKt$sequence$$inlined$Sequence$1; +HSPLkotlin/sequences/SequencesKt__SequenceBuilderKt$sequence$$inlined$Sequence$1;->(Lkotlin/jvm/functions/Function2;)V +HSPLkotlin/sequences/SequencesKt__SequenceBuilderKt$sequence$$inlined$Sequence$1;->iterator()Ljava/util/Iterator; +Lkotlin/sequences/SequencesKt__SequencesJVMKt; +Lkotlin/sequences/SequencesKt__SequencesKt; +HSPLkotlin/sequences/SequencesKt__SequencesKt;->emptySequence()Lkotlin/sequences/Sequence; +HSPLkotlin/sequences/SequencesKt__SequencesKt;->generateSequence(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Lkotlin/sequences/Sequence; +Lkotlin/sequences/SequencesKt__SequencesKt$generateSequence$2; +HSPLkotlin/sequences/SequencesKt__SequencesKt$generateSequence$2;->(Ljava/lang/Object;)V +HSPLkotlin/sequences/SequencesKt__SequencesKt$generateSequence$2;->invoke()Ljava/lang/Object; +Lkotlin/sequences/SequencesKt___SequencesJvmKt; +Lkotlin/sequences/SequencesKt___SequencesKt; +HSPLkotlin/sequences/SequencesKt___SequencesKt;->filter(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;)Lkotlin/sequences/Sequence; +HSPLkotlin/sequences/SequencesKt___SequencesKt;->filterNot(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;)Lkotlin/sequences/Sequence; +HSPLkotlin/sequences/SequencesKt___SequencesKt;->filterNotNull(Lkotlin/sequences/Sequence;)Lkotlin/sequences/Sequence; +HSPLkotlin/sequences/SequencesKt___SequencesKt;->firstOrNull(Lkotlin/sequences/Sequence;)Ljava/lang/Object; +HSPLkotlin/sequences/SequencesKt___SequencesKt;->flatMap(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;)Lkotlin/sequences/Sequence; +HSPLkotlin/sequences/SequencesKt___SequencesKt;->flatMapIterable(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;)Lkotlin/sequences/Sequence; +HSPLkotlin/sequences/SequencesKt___SequencesKt;->map(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;)Lkotlin/sequences/Sequence; +HSPLkotlin/sequences/SequencesKt___SequencesKt;->mapNotNull(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;)Lkotlin/sequences/Sequence; +HSPLkotlin/sequences/SequencesKt___SequencesKt;->sortedWith(Lkotlin/sequences/Sequence;Ljava/util/Comparator;)Lkotlin/sequences/Sequence; +HSPLkotlin/sequences/SequencesKt___SequencesKt;->take(Lkotlin/sequences/Sequence;I)Lkotlin/sequences/Sequence; +HSPLkotlin/sequences/SequencesKt___SequencesKt;->toCollection(Lkotlin/sequences/Sequence;Ljava/util/Collection;)Ljava/util/Collection; +HSPLkotlin/sequences/SequencesKt___SequencesKt;->toList(Lkotlin/sequences/Sequence;)Ljava/util/List; +HSPLkotlin/sequences/SequencesKt___SequencesKt;->toMutableList(Lkotlin/sequences/Sequence;)Ljava/util/List; +HSPLkotlin/sequences/SequencesKt___SequencesKt;->toSet(Lkotlin/sequences/Sequence;)Ljava/util/Set; +Lkotlin/sequences/SequencesKt___SequencesKt$filterNotNull$1; +HSPLkotlin/sequences/SequencesKt___SequencesKt$filterNotNull$1;->()V +HSPLkotlin/sequences/SequencesKt___SequencesKt$filterNotNull$1;->()V +HSPLkotlin/sequences/SequencesKt___SequencesKt$filterNotNull$1;->invoke(Ljava/lang/Object;)Ljava/lang/Boolean; +HSPLkotlin/sequences/SequencesKt___SequencesKt$filterNotNull$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlin/sequences/SequencesKt___SequencesKt$flatMap$1; +HSPLkotlin/sequences/SequencesKt___SequencesKt$flatMap$1;->()V +HSPLkotlin/sequences/SequencesKt___SequencesKt$flatMap$1;->()V +Lkotlin/sequences/SequencesKt___SequencesKt$flatMap$2; +HSPLkotlin/sequences/SequencesKt___SequencesKt$flatMap$2;->()V +HSPLkotlin/sequences/SequencesKt___SequencesKt$flatMap$2;->()V +HSPLkotlin/sequences/SequencesKt___SequencesKt$flatMap$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlin/sequences/SequencesKt___SequencesKt$flatMap$2;->invoke(Lkotlin/sequences/Sequence;)Ljava/util/Iterator; +Lkotlin/sequences/SequencesKt___SequencesKt$sortedWith$1; +HSPLkotlin/sequences/SequencesKt___SequencesKt$sortedWith$1;->(Lkotlin/sequences/Sequence;Ljava/util/Comparator;)V +HSPLkotlin/sequences/SequencesKt___SequencesKt$sortedWith$1;->iterator()Ljava/util/Iterator; +Lkotlin/sequences/TakeSequence; +HSPLkotlin/sequences/TakeSequence;->(Lkotlin/sequences/Sequence;I)V +HSPLkotlin/sequences/TakeSequence;->access$getCount$p(Lkotlin/sequences/TakeSequence;)I +HSPLkotlin/sequences/TakeSequence;->access$getSequence$p(Lkotlin/sequences/TakeSequence;)Lkotlin/sequences/Sequence; +HSPLkotlin/sequences/TakeSequence;->iterator()Ljava/util/Iterator; +Lkotlin/sequences/TakeSequence$iterator$1; +HSPLkotlin/sequences/TakeSequence$iterator$1;->(Lkotlin/sequences/TakeSequence;)V +HSPLkotlin/sequences/TakeSequence$iterator$1;->hasNext()Z +Lkotlin/sequences/TransformingSequence; +HSPLkotlin/sequences/TransformingSequence;->(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;)V +HSPLkotlin/sequences/TransformingSequence;->access$getSequence$p(Lkotlin/sequences/TransformingSequence;)Lkotlin/sequences/Sequence; +HSPLkotlin/sequences/TransformingSequence;->access$getTransformer$p(Lkotlin/sequences/TransformingSequence;)Lkotlin/jvm/functions/Function1; +HSPLkotlin/sequences/TransformingSequence;->iterator()Ljava/util/Iterator; +Lkotlin/sequences/TransformingSequence$iterator$1; +HSPLkotlin/sequences/TransformingSequence$iterator$1;->(Lkotlin/sequences/TransformingSequence;)V +HSPLkotlin/sequences/TransformingSequence$iterator$1;->hasNext()Z +HSPLkotlin/sequences/TransformingSequence$iterator$1;->next()Ljava/lang/Object; +Lkotlin/text/CharsKt; +Lkotlin/text/CharsKt__CharJVMKt; +HSPLkotlin/text/CharsKt__CharJVMKt;->checkRadix(I)I +HSPLkotlin/text/CharsKt__CharJVMKt;->digitOf(CI)I +HSPLkotlin/text/CharsKt__CharJVMKt;->isWhitespace(C)Z +Lkotlin/text/CharsKt__CharKt; +HSPLkotlin/text/CharsKt__CharKt;->equals(CCZ)Z +Lkotlin/text/Charsets; +HSPLkotlin/text/Charsets;->()V +HSPLkotlin/text/Charsets;->()V +Lkotlin/text/Regex; +HSPLkotlin/text/Regex;->()V +HSPLkotlin/text/Regex;->(Ljava/lang/String;)V +HSPLkotlin/text/Regex;->(Ljava/util/regex/Pattern;)V +HSPLkotlin/text/Regex;->matches(Ljava/lang/CharSequence;)Z +Lkotlin/text/Regex$Companion; +HSPLkotlin/text/Regex$Companion;->()V +HSPLkotlin/text/Regex$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/text/ScreenFloatValueRegEx; +HSPLkotlin/text/ScreenFloatValueRegEx;->()V +HSPLkotlin/text/ScreenFloatValueRegEx;->()V +Lkotlin/text/StringsKt; +Lkotlin/text/StringsKt__AppendableKt; +HSPLkotlin/text/StringsKt__AppendableKt;->appendElement(Ljava/lang/Appendable;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)V +Lkotlin/text/StringsKt__IndentKt; +Lkotlin/text/StringsKt__RegexExtensionsJVMKt; +Lkotlin/text/StringsKt__RegexExtensionsKt; +Lkotlin/text/StringsKt__StringBuilderJVMKt; +Lkotlin/text/StringsKt__StringBuilderKt; +Lkotlin/text/StringsKt__StringNumberConversionsJVMKt; +HSPLkotlin/text/StringsKt__StringNumberConversionsJVMKt;->toDoubleOrNull(Ljava/lang/String;)Ljava/lang/Double; +Lkotlin/text/StringsKt__StringNumberConversionsKt; +HSPLkotlin/text/StringsKt__StringNumberConversionsKt;->toLongOrNull(Ljava/lang/String;)Ljava/lang/Long; +HSPLkotlin/text/StringsKt__StringNumberConversionsKt;->toLongOrNull(Ljava/lang/String;I)Ljava/lang/Long; +Lkotlin/text/StringsKt__StringsJVMKt; +HSPLkotlin/text/StringsKt__StringsJVMKt;->encodeToByteArray(Ljava/lang/String;)[B +HSPLkotlin/text/StringsKt__StringsJVMKt;->endsWith$default(Ljava/lang/String;Ljava/lang/String;ZILjava/lang/Object;)Z +HSPLkotlin/text/StringsKt__StringsJVMKt;->endsWith(Ljava/lang/String;Ljava/lang/String;Z)Z +HSPLkotlin/text/StringsKt__StringsJVMKt;->equals(Ljava/lang/String;Ljava/lang/String;Z)Z +HSPLkotlin/text/StringsKt__StringsJVMKt;->isBlank(Ljava/lang/CharSequence;)Z +HSPLkotlin/text/StringsKt__StringsJVMKt;->repeat(Ljava/lang/CharSequence;I)Ljava/lang/String; +HSPLkotlin/text/StringsKt__StringsJVMKt;->replace$default(Ljava/lang/String;CCZILjava/lang/Object;)Ljava/lang/String; +HSPLkotlin/text/StringsKt__StringsJVMKt;->replace(Ljava/lang/String;CCZ)Ljava/lang/String; +HSPLkotlin/text/StringsKt__StringsJVMKt;->startsWith$default(Ljava/lang/String;Ljava/lang/String;ZILjava/lang/Object;)Z +HSPLkotlin/text/StringsKt__StringsJVMKt;->startsWith(Ljava/lang/String;Ljava/lang/String;Z)Z +Lkotlin/text/StringsKt__StringsKt; +HSPLkotlin/text/StringsKt__StringsKt;->contains$default(Ljava/lang/CharSequence;CZILjava/lang/Object;)Z +HSPLkotlin/text/StringsKt__StringsKt;->contains(Ljava/lang/CharSequence;CZ)Z +HSPLkotlin/text/StringsKt__StringsKt;->endsWith$default(Ljava/lang/CharSequence;Ljava/lang/CharSequence;ZILjava/lang/Object;)Z +HSPLkotlin/text/StringsKt__StringsKt;->endsWith(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Z)Z +HSPLkotlin/text/StringsKt__StringsKt;->getIndices(Ljava/lang/CharSequence;)Lkotlin/ranges/IntRange; +HSPLkotlin/text/StringsKt__StringsKt;->getLastIndex(Ljava/lang/CharSequence;)I +HSPLkotlin/text/StringsKt__StringsKt;->indexOf$default(Ljava/lang/CharSequence;CIZILjava/lang/Object;)I +HSPLkotlin/text/StringsKt__StringsKt;->indexOf(Ljava/lang/CharSequence;CIZ)I +HSPLkotlin/text/StringsKt__StringsKt;->indexOf(Ljava/lang/CharSequence;Ljava/lang/String;IZ)I +HSPLkotlin/text/StringsKt__StringsKt;->indexOfAny(Ljava/lang/CharSequence;[CIZ)I +HSPLkotlin/text/StringsKt__StringsKt;->lastIndexOf$default(Ljava/lang/CharSequence;CIZILjava/lang/Object;)I +HSPLkotlin/text/StringsKt__StringsKt;->lastIndexOf(Ljava/lang/CharSequence;CIZ)I +HSPLkotlin/text/StringsKt__StringsKt;->padStart(Ljava/lang/CharSequence;IC)Ljava/lang/CharSequence; +HSPLkotlin/text/StringsKt__StringsKt;->padStart(Ljava/lang/String;IC)Ljava/lang/String; +HSPLkotlin/text/StringsKt__StringsKt;->removePrefix(Ljava/lang/String;Ljava/lang/CharSequence;)Ljava/lang/String; +HSPLkotlin/text/StringsKt__StringsKt;->removeSuffix(Ljava/lang/String;Ljava/lang/CharSequence;)Ljava/lang/String; +HSPLkotlin/text/StringsKt__StringsKt;->requireNonNegativeLimit(I)V +HSPLkotlin/text/StringsKt__StringsKt;->split$StringsKt__StringsKt(Ljava/lang/CharSequence;Ljava/lang/String;ZI)Ljava/util/List; +HSPLkotlin/text/StringsKt__StringsKt;->split$default(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List; +HSPLkotlin/text/StringsKt__StringsKt;->split(Ljava/lang/CharSequence;[Ljava/lang/String;ZI)Ljava/util/List; +HSPLkotlin/text/StringsKt__StringsKt;->startsWith$default(Ljava/lang/CharSequence;Ljava/lang/CharSequence;ZILjava/lang/Object;)Z +HSPLkotlin/text/StringsKt__StringsKt;->startsWith(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Z)Z +HSPLkotlin/text/StringsKt__StringsKt;->substringAfterLast(Ljava/lang/String;CLjava/lang/String;)Ljava/lang/String; +HSPLkotlin/text/StringsKt__StringsKt;->toBooleanStrictOrNull(Ljava/lang/String;)Ljava/lang/Boolean; +HSPLkotlin/text/StringsKt__StringsKt;->trim(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; +Lkotlin/text/StringsKt___StringsJvmKt; +Lkotlin/text/StringsKt___StringsKt; +Lkotlin/text/UStringsKt; +HSPLkotlin/text/UStringsKt;->toULongOrNull(Ljava/lang/String;)Lkotlin/ULong; +HSPLkotlin/text/UStringsKt;->toULongOrNull(Ljava/lang/String;I)Lkotlin/ULong; +Lkotlin/time/Duration; +HSPLkotlin/time/Duration;->()V +HSPLkotlin/time/Duration;->appendFractional-impl(JLjava/lang/StringBuilder;IIILjava/lang/String;Z)V +HSPLkotlin/time/Duration;->constructor-impl(J)J +HSPLkotlin/time/Duration;->getAbsoluteValue-UwyO8pc(J)J +HSPLkotlin/time/Duration;->getHoursComponent-impl(J)I +HSPLkotlin/time/Duration;->getInWholeDays-impl(J)J +HSPLkotlin/time/Duration;->getInWholeHours-impl(J)J +HSPLkotlin/time/Duration;->getInWholeMilliseconds-impl(J)J +HSPLkotlin/time/Duration;->getInWholeMinutes-impl(J)J +HSPLkotlin/time/Duration;->getInWholeSeconds-impl(J)J +HSPLkotlin/time/Duration;->getMinutesComponent-impl(J)I +HSPLkotlin/time/Duration;->getNanosecondsComponent-impl(J)I +HSPLkotlin/time/Duration;->getSecondsComponent-impl(J)I +HSPLkotlin/time/Duration;->getStorageUnit-impl(J)Lkotlin/time/DurationUnit; +HSPLkotlin/time/Duration;->getValue-impl(J)J +HSPLkotlin/time/Duration;->isInMillis-impl(J)Z +HSPLkotlin/time/Duration;->isInNanos-impl(J)Z +HSPLkotlin/time/Duration;->isInfinite-impl(J)Z +HSPLkotlin/time/Duration;->isNegative-impl(J)Z +HSPLkotlin/time/Duration;->isPositive-impl(J)Z +HSPLkotlin/time/Duration;->plus-LRDsOJo(JJ)J +HSPLkotlin/time/Duration;->toLong-impl(JLkotlin/time/DurationUnit;)J +HSPLkotlin/time/Duration;->toString-impl(J)Ljava/lang/String; +Lkotlin/time/Duration$Companion; +HSPLkotlin/time/Duration$Companion;->()V +HSPLkotlin/time/Duration$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlin/time/DurationJvmKt; +HSPLkotlin/time/DurationJvmKt;->()V +HSPLkotlin/time/DurationJvmKt;->getDurationAssertionsEnabled()Z +Lkotlin/time/DurationKt; +HSPLkotlin/time/DurationKt;->access$durationOfMillis(J)J +HSPLkotlin/time/DurationKt;->access$durationOfNanosNormalized(J)J +HSPLkotlin/time/DurationKt;->durationOfMillis(J)J +HSPLkotlin/time/DurationKt;->durationOfNanos(J)J +HSPLkotlin/time/DurationKt;->durationOfNanosNormalized(J)J +HSPLkotlin/time/DurationKt;->toDuration(ILkotlin/time/DurationUnit;)J +HSPLkotlin/time/DurationKt;->toDuration(JLkotlin/time/DurationUnit;)J +Lkotlin/time/DurationUnit; +HSPLkotlin/time/DurationUnit;->$values()[Lkotlin/time/DurationUnit; +HSPLkotlin/time/DurationUnit;->()V +HSPLkotlin/time/DurationUnit;->(Ljava/lang/String;ILjava/util/concurrent/TimeUnit;)V +HSPLkotlin/time/DurationUnit;->getTimeUnit$kotlin_stdlib()Ljava/util/concurrent/TimeUnit; +Lkotlin/time/DurationUnitKt; +Lkotlin/time/DurationUnitKt__DurationUnitJvmKt; +HSPLkotlin/time/DurationUnitKt__DurationUnitJvmKt;->convertDurationUnit(JLkotlin/time/DurationUnit;Lkotlin/time/DurationUnit;)J +HSPLkotlin/time/DurationUnitKt__DurationUnitJvmKt;->convertDurationUnitOverflow(JLkotlin/time/DurationUnit;Lkotlin/time/DurationUnit;)J +Lkotlin/time/DurationUnitKt__DurationUnitKt; +Lkotlinx/collections/immutable/ExtensionsKt; +HSPLkotlinx/collections/immutable/ExtensionsKt;->persistentListOf()Lkotlinx/collections/immutable/PersistentList; +HSPLkotlinx/collections/immutable/ExtensionsKt;->persistentListOf([Ljava/lang/Object;)Lkotlinx/collections/immutable/PersistentList; +HSPLkotlinx/collections/immutable/ExtensionsKt;->persistentMapOf()Lkotlinx/collections/immutable/PersistentMap; +HSPLkotlinx/collections/immutable/ExtensionsKt;->plus(Lkotlinx/collections/immutable/PersistentList;Lkotlin/sequences/Sequence;)Lkotlinx/collections/immutable/PersistentList; +HSPLkotlinx/collections/immutable/ExtensionsKt;->toImmutableList(Lkotlin/sequences/Sequence;)Lkotlinx/collections/immutable/ImmutableList; +HSPLkotlinx/collections/immutable/ExtensionsKt;->toPersistentList(Lkotlin/sequences/Sequence;)Lkotlinx/collections/immutable/PersistentList; +Lkotlinx/collections/immutable/ImmutableCollection; +Lkotlinx/collections/immutable/ImmutableList; +Lkotlinx/collections/immutable/ImmutableList$DefaultImpls; +HSPLkotlinx/collections/immutable/ImmutableList$DefaultImpls;->subList(Lkotlinx/collections/immutable/ImmutableList;II)Lkotlinx/collections/immutable/ImmutableList; +Lkotlinx/collections/immutable/ImmutableList$SubList; +HSPLkotlinx/collections/immutable/ImmutableList$SubList;->(Lkotlinx/collections/immutable/ImmutableList;II)V +HSPLkotlinx/collections/immutable/ImmutableList$SubList;->get(I)Ljava/lang/Object; +HSPLkotlinx/collections/immutable/ImmutableList$SubList;->getSize()I +HSPLkotlinx/collections/immutable/ImmutableList$SubList;->subList(II)Lkotlinx/collections/immutable/ImmutableList; +Lkotlinx/collections/immutable/ImmutableMap; +Lkotlinx/collections/immutable/ImmutableSet; +Lkotlinx/collections/immutable/PersistentCollection; +Lkotlinx/collections/immutable/PersistentCollection$Builder; +Lkotlinx/collections/immutable/PersistentList; +Lkotlinx/collections/immutable/PersistentList$Builder; +Lkotlinx/collections/immutable/PersistentList$DefaultImpls; +HSPLkotlinx/collections/immutable/PersistentList$DefaultImpls;->subList(Lkotlinx/collections/immutable/PersistentList;II)Lkotlinx/collections/immutable/ImmutableList; +Lkotlinx/collections/immutable/PersistentMap; +Lkotlinx/collections/immutable/implementations/immutableList/AbstractListIterator; +HSPLkotlinx/collections/immutable/implementations/immutableList/AbstractListIterator;->(II)V +HSPLkotlinx/collections/immutable/implementations/immutableList/AbstractListIterator;->getIndex()I +HSPLkotlinx/collections/immutable/implementations/immutableList/AbstractListIterator;->hasNext()Z +HSPLkotlinx/collections/immutable/implementations/immutableList/AbstractListIterator;->setIndex(I)V +Lkotlinx/collections/immutable/implementations/immutableList/AbstractPersistentList; +HSPLkotlinx/collections/immutable/implementations/immutableList/AbstractPersistentList;->()V +HSPLkotlinx/collections/immutable/implementations/immutableList/AbstractPersistentList;->iterator()Ljava/util/Iterator; +HSPLkotlinx/collections/immutable/implementations/immutableList/AbstractPersistentList;->listIterator()Ljava/util/ListIterator; +HSPLkotlinx/collections/immutable/implementations/immutableList/AbstractPersistentList;->subList(II)Lkotlinx/collections/immutable/ImmutableList; +Lkotlinx/collections/immutable/implementations/immutableList/BufferIterator; +HSPLkotlinx/collections/immutable/implementations/immutableList/BufferIterator;->([Ljava/lang/Object;II)V +HSPLkotlinx/collections/immutable/implementations/immutableList/BufferIterator;->next()Ljava/lang/Object; +Lkotlinx/collections/immutable/implementations/immutableList/PersistentVectorBuilder; +HSPLkotlinx/collections/immutable/implementations/immutableList/PersistentVectorBuilder;->(Lkotlinx/collections/immutable/PersistentList;[Ljava/lang/Object;[Ljava/lang/Object;I)V +HSPLkotlinx/collections/immutable/implementations/immutableList/PersistentVectorBuilder;->add(Ljava/lang/Object;)Z +HSPLkotlinx/collections/immutable/implementations/immutableList/PersistentVectorBuilder;->build()Lkotlinx/collections/immutable/PersistentList; +HSPLkotlinx/collections/immutable/implementations/immutableList/PersistentVectorBuilder;->getSize()I +HSPLkotlinx/collections/immutable/implementations/immutableList/PersistentVectorBuilder;->isMutable([Ljava/lang/Object;)Z +HSPLkotlinx/collections/immutable/implementations/immutableList/PersistentVectorBuilder;->makeMutable([Ljava/lang/Object;)[Ljava/lang/Object; +HSPLkotlinx/collections/immutable/implementations/immutableList/PersistentVectorBuilder;->mutableBuffer()[Ljava/lang/Object; +HSPLkotlinx/collections/immutable/implementations/immutableList/PersistentVectorBuilder;->tailSize()I +HSPLkotlinx/collections/immutable/implementations/immutableList/PersistentVectorBuilder;->tailSize(I)I +Lkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector; +HSPLkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->()V +HSPLkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->([Ljava/lang/Object;)V +HSPLkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->access$getEMPTY$cp()Lkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector; +HSPLkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->add(Ljava/lang/Object;)Lkotlinx/collections/immutable/PersistentList; +HSPLkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->addAll(Ljava/util/Collection;)Lkotlinx/collections/immutable/PersistentList; +HSPLkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->builder()Lkotlinx/collections/immutable/PersistentList$Builder; +HSPLkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->get(I)Ljava/lang/Object; +HSPLkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->getSize()I +HSPLkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->listIterator(I)Ljava/util/ListIterator; +HSPLkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->removeAt(I)Lkotlinx/collections/immutable/PersistentList; +Lkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector$Companion; +HSPLkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector$Companion;->()V +HSPLkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector$Companion;->getEMPTY()Lkotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector; +Lkotlinx/collections/immutable/implementations/immutableList/UtilsKt; +HSPLkotlinx/collections/immutable/implementations/immutableList/UtilsKt;->persistentVectorOf()Lkotlinx/collections/immutable/PersistentList; +Lkotlinx/collections/immutable/implementations/immutableMap/MapEntry; +HSPLkotlinx/collections/immutable/implementations/immutableMap/MapEntry;->(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLkotlinx/collections/immutable/implementations/immutableMap/MapEntry;->getKey()Ljava/lang/Object; +HSPLkotlinx/collections/immutable/implementations/immutableMap/MapEntry;->getValue()Ljava/lang/Object; +Lkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap; +HSPLkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->()V +HSPLkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->(Lkotlinx/collections/immutable/implementations/immutableMap/TrieNode;I)V +HSPLkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->access$getEMPTY$cp()Lkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap; +HSPLkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->getSize()I +HSPLkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Lkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap; +Lkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap$Companion; +HSPLkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap$Companion;->()V +HSPLkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap$Companion;->emptyOf$kotlinx_collections_immutable()Lkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap; +Lkotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->()V +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->(II[Ljava/lang/Object;)V +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->(II[Ljava/lang/Object;Lkotlinx/collections/immutable/internal/MutabilityOwnership;)V +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->access$getEMPTY$cp()Lkotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->asInsertResult()Lkotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult; +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->asUpdateResult()Lkotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult; +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->entryKeyIndex$kotlinx_collections_immutable(I)I +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->get(ILjava/lang/Object;I)Ljava/lang/Object; +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->hasEntryAt$kotlinx_collections_immutable(I)Z +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->hasNodeAt(I)Z +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->insertEntryAt(ILjava/lang/Object;Ljava/lang/Object;)Lkotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->keyAtIndex(I)Ljava/lang/Object; +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->put(ILjava/lang/Object;Ljava/lang/Object;I)Lkotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult; +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->updateValueAtIndex(ILjava/lang/Object;)Lkotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode;->valueAtKeyIndex(I)Ljava/lang/Object; +Lkotlinx/collections/immutable/implementations/immutableMap/TrieNode$Companion; +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode$Companion;->()V +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode$Companion;->getEMPTY$kotlinx_collections_immutable()Lkotlinx/collections/immutable/implementations/immutableMap/TrieNode; +Lkotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult; +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult;->(Lkotlinx/collections/immutable/implementations/immutableMap/TrieNode;I)V +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult;->getNode()Lkotlinx/collections/immutable/implementations/immutableMap/TrieNode; +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult;->getSizeDelta()I +Lkotlinx/collections/immutable/implementations/immutableMap/TrieNodeKt; +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNodeKt;->access$insertEntryAtIndex([Ljava/lang/Object;ILjava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object; +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNodeKt;->indexSegment(II)I +HSPLkotlinx/collections/immutable/implementations/immutableMap/TrieNodeKt;->insertEntryAtIndex([Ljava/lang/Object;ILjava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object; +Lkotlinx/collections/immutable/implementations/persistentOrderedMap/LinkedValue; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/LinkedValue;->(Ljava/lang/Object;)V +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/LinkedValue;->(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/LinkedValue;->(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/LinkedValue;->getNext()Ljava/lang/Object; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/LinkedValue;->getValue()Ljava/lang/Object; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/LinkedValue;->withNext(Ljava/lang/Object;)Lkotlinx/collections/immutable/implementations/persistentOrderedMap/LinkedValue; +Lkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;->()V +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;->(Ljava/lang/Object;Ljava/lang/Object;Lkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;)V +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;->access$getEMPTY$cp()Lkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;->createEntries()Lkotlinx/collections/immutable/ImmutableSet; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;->equals(Ljava/lang/Object;)Z +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;->getEntries()Ljava/util/Set; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;->getFirstKey$kotlinx_collections_immutable()Ljava/lang/Object; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;->getHashMap$kotlinx_collections_immutable()Lkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;->getSize()I +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;->getValues()Ljava/util/Collection; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;->getValues()Lkotlinx/collections/immutable/ImmutableCollection; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Lkotlinx/collections/immutable/PersistentMap; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Lkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;->remove(Ljava/lang/Object;)Lkotlinx/collections/immutable/PersistentMap; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;->remove(Ljava/lang/Object;)Lkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap; +Lkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap$Companion; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap$Companion;->()V +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap$Companion;->emptyOf$kotlinx_collections_immutable()Lkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap; +Lkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapEntries; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapEntries;->(Lkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;)V +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapEntries;->getSize()I +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapEntries;->iterator()Ljava/util/Iterator; +Lkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapEntriesIterator; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapEntriesIterator;->(Lkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;)V +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapEntriesIterator;->hasNext()Z +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapEntriesIterator;->next()Ljava/lang/Object; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapEntriesIterator;->next()Ljava/util/Map$Entry; +Lkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapLinksIterator; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapLinksIterator;->(Ljava/lang/Object;Ljava/util/Map;)V +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapLinksIterator;->getNextKey$kotlinx_collections_immutable()Ljava/lang/Object; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapLinksIterator;->hasNext()Z +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapLinksIterator;->next()Lkotlinx/collections/immutable/implementations/persistentOrderedMap/LinkedValue; +Lkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapValues; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapValues;->(Lkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;)V +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapValues;->iterator()Ljava/util/Iterator; +Lkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapValuesIterator; +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapValuesIterator;->(Lkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMap;)V +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapValuesIterator;->hasNext()Z +HSPLkotlinx/collections/immutable/implementations/persistentOrderedMap/PersistentOrderedMapValuesIterator;->next()Ljava/lang/Object; +Lkotlinx/collections/immutable/internal/CommonFunctionsKt; +HSPLkotlinx/collections/immutable/internal/CommonFunctionsKt;->assert(Z)V +Lkotlinx/collections/immutable/internal/EndOfChain; +HSPLkotlinx/collections/immutable/internal/EndOfChain;->()V +HSPLkotlinx/collections/immutable/internal/EndOfChain;->()V +Lkotlinx/collections/immutable/internal/ListImplementation; +HSPLkotlinx/collections/immutable/internal/ListImplementation;->()V +HSPLkotlinx/collections/immutable/internal/ListImplementation;->()V +HSPLkotlinx/collections/immutable/internal/ListImplementation;->checkElementIndex$kotlinx_collections_immutable(II)V +HSPLkotlinx/collections/immutable/internal/ListImplementation;->checkPositionIndex$kotlinx_collections_immutable(II)V +HSPLkotlinx/collections/immutable/internal/ListImplementation;->checkRangeIndexes$kotlinx_collections_immutable(III)V +Lkotlinx/collections/immutable/internal/MutabilityOwnership; +HSPLkotlinx/collections/immutable/internal/MutabilityOwnership;->()V +Lkotlinx/coroutines/AbstractCoroutine; +HSPLkotlinx/coroutines/AbstractCoroutine;->(Lkotlin/coroutines/CoroutineContext;ZZ)V +HSPLkotlinx/coroutines/AbstractCoroutine;->afterResume(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/AbstractCoroutine;->cancellationExceptionMessage()Ljava/lang/String; +HSPLkotlinx/coroutines/AbstractCoroutine;->getContext()Lkotlin/coroutines/CoroutineContext; +HSPLkotlinx/coroutines/AbstractCoroutine;->getCoroutineContext()Lkotlin/coroutines/CoroutineContext; +HSPLkotlinx/coroutines/AbstractCoroutine;->isActive()Z +HSPLkotlinx/coroutines/AbstractCoroutine;->onCancelled(Ljava/lang/Throwable;Z)V +HSPLkotlinx/coroutines/AbstractCoroutine;->onCompleted(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/AbstractCoroutine;->onCompletionInternal(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/AbstractCoroutine;->resumeWith(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/AbstractCoroutine;->start(Lkotlinx/coroutines/CoroutineStart;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)V +Lkotlinx/coroutines/AbstractTimeSource; +Lkotlinx/coroutines/AbstractTimeSourceKt; +HSPLkotlinx/coroutines/AbstractTimeSourceKt;->()V +HSPLkotlinx/coroutines/AbstractTimeSourceKt;->getTimeSource()Lkotlinx/coroutines/AbstractTimeSource; +Lkotlinx/coroutines/Active; +HSPLkotlinx/coroutines/Active;->()V +HSPLkotlinx/coroutines/Active;->()V +Lkotlinx/coroutines/BlockingCoroutine; +HSPLkotlinx/coroutines/BlockingCoroutine;->(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Thread;Lkotlinx/coroutines/EventLoop;)V +HSPLkotlinx/coroutines/BlockingCoroutine;->afterCompletion(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/BlockingCoroutine;->joinBlocking()Ljava/lang/Object; +Lkotlinx/coroutines/BlockingEventLoop; +HSPLkotlinx/coroutines/BlockingEventLoop;->(Ljava/lang/Thread;)V +HSPLkotlinx/coroutines/BlockingEventLoop;->getThread()Ljava/lang/Thread; +Lkotlinx/coroutines/BuildersKt; +HSPLkotlinx/coroutines/BuildersKt;->async$default(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/Deferred; +HSPLkotlinx/coroutines/BuildersKt;->async(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/Deferred; +HSPLkotlinx/coroutines/BuildersKt;->launch$default(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/Job; +HSPLkotlinx/coroutines/BuildersKt;->launch(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/Job; +HSPLkotlinx/coroutines/BuildersKt;->runBlocking$default(Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/BuildersKt;->runBlocking(Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLkotlinx/coroutines/BuildersKt;->withContext(Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/BuildersKt__BuildersKt; +HSPLkotlinx/coroutines/BuildersKt__BuildersKt;->runBlocking$default(Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/BuildersKt__BuildersKt;->runBlocking(Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +Lkotlinx/coroutines/BuildersKt__Builders_commonKt; +HSPLkotlinx/coroutines/BuildersKt__Builders_commonKt;->async$default(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/Deferred; +HSPLkotlinx/coroutines/BuildersKt__Builders_commonKt;->async(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/Deferred; +HSPLkotlinx/coroutines/BuildersKt__Builders_commonKt;->launch$default(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/Job; +HSPLkotlinx/coroutines/BuildersKt__Builders_commonKt;->launch(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/Job; +HSPLkotlinx/coroutines/BuildersKt__Builders_commonKt;->withContext(Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/CancelHandler; +HSPLkotlinx/coroutines/CancelHandler;->()V +Lkotlinx/coroutines/CancelHandlerBase; +HSPLkotlinx/coroutines/CancelHandlerBase;->()V +Lkotlinx/coroutines/CancellableContinuation; +Lkotlinx/coroutines/CancellableContinuation$DefaultImpls; +Lkotlinx/coroutines/CancellableContinuationImpl; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->()V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->(Lkotlin/coroutines/Continuation;I)V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->callCancelHandler(Lkotlinx/coroutines/CancelHandler;Ljava/lang/Throwable;)V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->callSegmentOnCancellation(Lkotlinx/coroutines/internal/Segment;Ljava/lang/Throwable;)V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->cancel(Ljava/lang/Throwable;)Z +HSPLkotlinx/coroutines/CancellableContinuationImpl;->cancelCompletedResult$kotlinx_coroutines_core(Ljava/lang/Object;Ljava/lang/Throwable;)V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->cancelLater(Ljava/lang/Throwable;)Z +HSPLkotlinx/coroutines/CancellableContinuationImpl;->completeResume(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->detachChild$kotlinx_coroutines_core()V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->detachChildIfNonResuable()V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->dispatchResume(I)V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->getContext()Lkotlin/coroutines/CoroutineContext; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->getContinuationCancellationCause(Lkotlinx/coroutines/Job;)Ljava/lang/Throwable; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->getDelegate$kotlinx_coroutines_core()Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->getExceptionalResult$kotlinx_coroutines_core(Ljava/lang/Object;)Ljava/lang/Throwable; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->getParentHandle()Lkotlinx/coroutines/DisposableHandle; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->getResult()Ljava/lang/Object; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->getState$kotlinx_coroutines_core()Ljava/lang/Object; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->getSuccessfulResult$kotlinx_coroutines_core(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->get_decisionAndIndex$volatile$FU()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->get_parentHandle$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->get_state$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->initCancellability()V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->installParentHandle()Lkotlinx/coroutines/DisposableHandle; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->invokeOnCancellation(Lkotlin/jvm/functions/Function1;)V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->invokeOnCancellation(Lkotlinx/coroutines/internal/Segment;I)V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->invokeOnCancellationImpl(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->isCompleted()Z +HSPLkotlinx/coroutines/CancellableContinuationImpl;->isReusable()Z +HSPLkotlinx/coroutines/CancellableContinuationImpl;->makeCancelHandler(Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/CancelHandler; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->parentCancelled$kotlinx_coroutines_core(Ljava/lang/Throwable;)V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->releaseClaimedReusableContinuation$kotlinx_coroutines_core()V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->resetStateReusable()Z +HSPLkotlinx/coroutines/CancellableContinuationImpl;->resume(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->resumeImpl$default(Lkotlinx/coroutines/CancellableContinuationImpl;Ljava/lang/Object;ILkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->resumeImpl(Ljava/lang/Object;ILkotlin/jvm/functions/Function1;)V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->resumeUndispatched(Lkotlinx/coroutines/CoroutineDispatcher;Ljava/lang/Object;)V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->resumeWith(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/CancellableContinuationImpl;->resumedState(Lkotlinx/coroutines/NotCompleted;Ljava/lang/Object;ILkotlin/jvm/functions/Function1;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->takeState$kotlinx_coroutines_core()Ljava/lang/Object; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->tryResume()Z +HSPLkotlinx/coroutines/CancellableContinuationImpl;->tryResume(Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->tryResumeImpl(Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/CancellableContinuationImpl;->trySuspend()Z +Lkotlinx/coroutines/CancellableContinuationImplKt; +HSPLkotlinx/coroutines/CancellableContinuationImplKt;->()V +Lkotlinx/coroutines/CancellableContinuationKt; +HSPLkotlinx/coroutines/CancellableContinuationKt;->disposeOnCancellation(Lkotlinx/coroutines/CancellableContinuation;Lkotlinx/coroutines/DisposableHandle;)V +HSPLkotlinx/coroutines/CancellableContinuationKt;->getOrCreateCancellableContinuation(Lkotlin/coroutines/Continuation;)Lkotlinx/coroutines/CancellableContinuationImpl; +Lkotlinx/coroutines/CancelledContinuation; +HSPLkotlinx/coroutines/CancelledContinuation;->()V +HSPLkotlinx/coroutines/CancelledContinuation;->(Lkotlin/coroutines/Continuation;Ljava/lang/Throwable;Z)V +HSPLkotlinx/coroutines/CancelledContinuation;->get_resumed$volatile$FU()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; +HSPLkotlinx/coroutines/CancelledContinuation;->makeResumed()Z +Lkotlinx/coroutines/ChildContinuation; +HSPLkotlinx/coroutines/ChildContinuation;->(Lkotlinx/coroutines/CancellableContinuationImpl;)V +HSPLkotlinx/coroutines/ChildContinuation;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/ChildContinuation;->invoke(Ljava/lang/Throwable;)V +Lkotlinx/coroutines/ChildHandle; +Lkotlinx/coroutines/ChildHandleNode; +HSPLkotlinx/coroutines/ChildHandleNode;->(Lkotlinx/coroutines/ChildJob;)V +HSPLkotlinx/coroutines/ChildHandleNode;->childCancelled(Ljava/lang/Throwable;)Z +HSPLkotlinx/coroutines/ChildHandleNode;->getParent()Lkotlinx/coroutines/Job; +HSPLkotlinx/coroutines/ChildHandleNode;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/ChildHandleNode;->invoke(Ljava/lang/Throwable;)V +Lkotlinx/coroutines/ChildJob; +Lkotlinx/coroutines/CompletableJob; +Lkotlinx/coroutines/CompletedContinuation; +HSPLkotlinx/coroutines/CompletedContinuation;->(Ljava/lang/Object;Lkotlinx/coroutines/CancelHandler;Lkotlin/jvm/functions/Function1;Ljava/lang/Object;Ljava/lang/Throwable;)V +HSPLkotlinx/coroutines/CompletedContinuation;->(Ljava/lang/Object;Lkotlinx/coroutines/CancelHandler;Lkotlin/jvm/functions/Function1;Ljava/lang/Object;Ljava/lang/Throwable;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/coroutines/CompletedContinuation;->copy$default(Lkotlinx/coroutines/CompletedContinuation;Ljava/lang/Object;Lkotlinx/coroutines/CancelHandler;Lkotlin/jvm/functions/Function1;Ljava/lang/Object;Ljava/lang/Throwable;ILjava/lang/Object;)Lkotlinx/coroutines/CompletedContinuation; +HSPLkotlinx/coroutines/CompletedContinuation;->copy(Ljava/lang/Object;Lkotlinx/coroutines/CancelHandler;Lkotlin/jvm/functions/Function1;Ljava/lang/Object;Ljava/lang/Throwable;)Lkotlinx/coroutines/CompletedContinuation; +HSPLkotlinx/coroutines/CompletedContinuation;->getCancelled()Z +HSPLkotlinx/coroutines/CompletedContinuation;->invokeHandlers(Lkotlinx/coroutines/CancellableContinuationImpl;Ljava/lang/Throwable;)V +Lkotlinx/coroutines/CompletedExceptionally; +HSPLkotlinx/coroutines/CompletedExceptionally;->()V +HSPLkotlinx/coroutines/CompletedExceptionally;->(Ljava/lang/Throwable;Z)V +HSPLkotlinx/coroutines/CompletedExceptionally;->(Ljava/lang/Throwable;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/coroutines/CompletedExceptionally;->getHandled()Z +HSPLkotlinx/coroutines/CompletedExceptionally;->get_handled$volatile$FU()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; +HSPLkotlinx/coroutines/CompletedExceptionally;->makeHandled()Z +Lkotlinx/coroutines/CompletionHandlerBase; +HSPLkotlinx/coroutines/CompletionHandlerBase;->()V +Lkotlinx/coroutines/CompletionStateKt; +HSPLkotlinx/coroutines/CompletionStateKt;->recoverResult(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/CompletionStateKt;->toState$default(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/CompletionStateKt;->toState(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +HSPLkotlinx/coroutines/CompletionStateKt;->toState(Ljava/lang/Object;Lkotlinx/coroutines/CancellableContinuation;)Ljava/lang/Object; +Lkotlinx/coroutines/CopyableThreadContextElement; +Lkotlinx/coroutines/CopyableThrowable; +Lkotlinx/coroutines/CoroutineContextKt; +HSPLkotlinx/coroutines/CoroutineContextKt;->foldCopies(Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/CoroutineContext;Z)Lkotlin/coroutines/CoroutineContext; +HSPLkotlinx/coroutines/CoroutineContextKt;->hasCopyableElements(Lkotlin/coroutines/CoroutineContext;)Z +HSPLkotlinx/coroutines/CoroutineContextKt;->newCoroutineContext(Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext; +HSPLkotlinx/coroutines/CoroutineContextKt;->newCoroutineContext(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext; +HSPLkotlinx/coroutines/CoroutineContextKt;->undispatchedCompletion(Lkotlin/coroutines/jvm/internal/CoroutineStackFrame;)Lkotlinx/coroutines/UndispatchedCoroutine; +HSPLkotlinx/coroutines/CoroutineContextKt;->updateUndispatchedCompletion(Lkotlin/coroutines/Continuation;Lkotlin/coroutines/CoroutineContext;Ljava/lang/Object;)Lkotlinx/coroutines/UndispatchedCoroutine; +Lkotlinx/coroutines/CoroutineContextKt$hasCopyableElements$1; +HSPLkotlinx/coroutines/CoroutineContextKt$hasCopyableElements$1;->()V +HSPLkotlinx/coroutines/CoroutineContextKt$hasCopyableElements$1;->()V +HSPLkotlinx/coroutines/CoroutineContextKt$hasCopyableElements$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/CoroutineContextKt$hasCopyableElements$1;->invoke(ZLkotlin/coroutines/CoroutineContext$Element;)Ljava/lang/Boolean; +Lkotlinx/coroutines/CoroutineDispatcher; +HSPLkotlinx/coroutines/CoroutineDispatcher;->()V +HSPLkotlinx/coroutines/CoroutineDispatcher;->()V +HSPLkotlinx/coroutines/CoroutineDispatcher;->dispatchYield(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Runnable;)V +HSPLkotlinx/coroutines/CoroutineDispatcher;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLkotlinx/coroutines/CoroutineDispatcher;->interceptContinuation(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/CoroutineDispatcher;->isDispatchNeeded(Lkotlin/coroutines/CoroutineContext;)Z +HSPLkotlinx/coroutines/CoroutineDispatcher;->limitedParallelism(I)Lkotlinx/coroutines/CoroutineDispatcher; +HSPLkotlinx/coroutines/CoroutineDispatcher;->minusKey(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext; +HSPLkotlinx/coroutines/CoroutineDispatcher;->releaseInterceptedContinuation(Lkotlin/coroutines/Continuation;)V +Lkotlinx/coroutines/CoroutineDispatcher$Key; +HSPLkotlinx/coroutines/CoroutineDispatcher$Key;->()V +HSPLkotlinx/coroutines/CoroutineDispatcher$Key;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/coroutines/CoroutineDispatcher$Key$1; +HSPLkotlinx/coroutines/CoroutineDispatcher$Key$1;->()V +HSPLkotlinx/coroutines/CoroutineDispatcher$Key$1;->()V +Lkotlinx/coroutines/CoroutineExceptionHandler; +HSPLkotlinx/coroutines/CoroutineExceptionHandler;->()V +Lkotlinx/coroutines/CoroutineExceptionHandler$Key; +HSPLkotlinx/coroutines/CoroutineExceptionHandler$Key;->()V +HSPLkotlinx/coroutines/CoroutineExceptionHandler$Key;->()V +Lkotlinx/coroutines/CoroutineId; +Lkotlinx/coroutines/CoroutineName; +HSPLkotlinx/coroutines/CoroutineName;->()V +HSPLkotlinx/coroutines/CoroutineName;->(Ljava/lang/String;)V +Lkotlinx/coroutines/CoroutineName$Key; +HSPLkotlinx/coroutines/CoroutineName$Key;->()V +HSPLkotlinx/coroutines/CoroutineName$Key;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/coroutines/CoroutineScope; +Lkotlinx/coroutines/CoroutineScopeKt; +HSPLkotlinx/coroutines/CoroutineScopeKt;->CoroutineScope(Lkotlin/coroutines/CoroutineContext;)Lkotlinx/coroutines/CoroutineScope; +HSPLkotlinx/coroutines/CoroutineScopeKt;->MainScope()Lkotlinx/coroutines/CoroutineScope; +HSPLkotlinx/coroutines/CoroutineScopeKt;->cancel(Lkotlinx/coroutines/CoroutineScope;Ljava/util/concurrent/CancellationException;)V +HSPLkotlinx/coroutines/CoroutineScopeKt;->coroutineScope(Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/CoroutineScopeKt;->ensureActive(Lkotlinx/coroutines/CoroutineScope;)V +HSPLkotlinx/coroutines/CoroutineScopeKt;->isActive(Lkotlinx/coroutines/CoroutineScope;)Z +HSPLkotlinx/coroutines/CoroutineScopeKt;->plus(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;)Lkotlinx/coroutines/CoroutineScope; +Lkotlinx/coroutines/CoroutineStart; +HSPLkotlinx/coroutines/CoroutineStart;->$values()[Lkotlinx/coroutines/CoroutineStart; +HSPLkotlinx/coroutines/CoroutineStart;->()V +HSPLkotlinx/coroutines/CoroutineStart;->(Ljava/lang/String;I)V +HSPLkotlinx/coroutines/CoroutineStart;->invoke(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/CoroutineStart;->isLazy()Z +HSPLkotlinx/coroutines/CoroutineStart;->values()[Lkotlinx/coroutines/CoroutineStart; +Lkotlinx/coroutines/CoroutineStart$WhenMappings; +HSPLkotlinx/coroutines/CoroutineStart$WhenMappings;->()V +Lkotlinx/coroutines/DebugKt; +HSPLkotlinx/coroutines/DebugKt;->()V +HSPLkotlinx/coroutines/DebugKt;->getASSERTIONS_ENABLED()Z +HSPLkotlinx/coroutines/DebugKt;->getDEBUG()Z +HSPLkotlinx/coroutines/DebugKt;->getRECOVER_STACK_TRACES()Z +Lkotlinx/coroutines/DebugStringsKt; +HSPLkotlinx/coroutines/DebugStringsKt;->getClassSimpleName(Ljava/lang/Object;)Ljava/lang/String; +Lkotlinx/coroutines/DefaultExecutor; +HSPLkotlinx/coroutines/DefaultExecutor;->()V +HSPLkotlinx/coroutines/DefaultExecutor;->()V +HSPLkotlinx/coroutines/DefaultExecutor;->acknowledgeShutdownIfNeeded()V +HSPLkotlinx/coroutines/DefaultExecutor;->createThreadSync()Ljava/lang/Thread; +HSPLkotlinx/coroutines/DefaultExecutor;->getThread()Ljava/lang/Thread; +HSPLkotlinx/coroutines/DefaultExecutor;->invokeOnTimeout(JLjava/lang/Runnable;Lkotlin/coroutines/CoroutineContext;)Lkotlinx/coroutines/DisposableHandle; +HSPLkotlinx/coroutines/DefaultExecutor;->isShutdownRequested()Z +HSPLkotlinx/coroutines/DefaultExecutor;->notifyStartup()Z +HSPLkotlinx/coroutines/DefaultExecutor;->run()V +Lkotlinx/coroutines/DefaultExecutorKt; +HSPLkotlinx/coroutines/DefaultExecutorKt;->()V +HSPLkotlinx/coroutines/DefaultExecutorKt;->getDefaultDelay()Lkotlinx/coroutines/Delay; +HSPLkotlinx/coroutines/DefaultExecutorKt;->initializeDefaultDelay()Lkotlinx/coroutines/Delay; +Lkotlinx/coroutines/Deferred; +Lkotlinx/coroutines/DeferredCoroutine; +HSPLkotlinx/coroutines/DeferredCoroutine;->(Lkotlin/coroutines/CoroutineContext;Z)V +HSPLkotlinx/coroutines/DeferredCoroutine;->await$suspendImpl(Lkotlinx/coroutines/DeferredCoroutine;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/DeferredCoroutine;->await(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/Delay; +Lkotlinx/coroutines/DelayKt; +HSPLkotlinx/coroutines/DelayKt;->awaitCancellation(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/DelayKt;->delay(JLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/DelayKt;->delay-VtjQ1oo(JLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/DelayKt;->getDelay(Lkotlin/coroutines/CoroutineContext;)Lkotlinx/coroutines/Delay; +HSPLkotlinx/coroutines/DelayKt;->toDelayMillis-LRDsOJo(J)J +Lkotlinx/coroutines/DelayKt$awaitCancellation$1; +HSPLkotlinx/coroutines/DelayKt$awaitCancellation$1;->(Lkotlin/coroutines/Continuation;)V +Lkotlinx/coroutines/DispatchedCoroutine; +HSPLkotlinx/coroutines/DispatchedCoroutine;->()V +HSPLkotlinx/coroutines/DispatchedCoroutine;->(Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/DispatchedCoroutine;->afterCompletion(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/DispatchedCoroutine;->afterResume(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/DispatchedCoroutine;->getResult$kotlinx_coroutines_core()Ljava/lang/Object; +HSPLkotlinx/coroutines/DispatchedCoroutine;->get_decision$volatile$FU$kotlinx_coroutines_core()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; +HSPLkotlinx/coroutines/DispatchedCoroutine;->tryResume()Z +HSPLkotlinx/coroutines/DispatchedCoroutine;->trySuspend()Z +Lkotlinx/coroutines/DispatchedTask; +HSPLkotlinx/coroutines/DispatchedTask;->(I)V +HSPLkotlinx/coroutines/DispatchedTask;->getExceptionalResult$kotlinx_coroutines_core(Ljava/lang/Object;)Ljava/lang/Throwable; +HSPLkotlinx/coroutines/DispatchedTask;->getSuccessfulResult$kotlinx_coroutines_core(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/DispatchedTask;->handleFatalException$kotlinx_coroutines_core(Ljava/lang/Throwable;Ljava/lang/Throwable;)V +HSPLkotlinx/coroutines/DispatchedTask;->run()V +Lkotlinx/coroutines/DispatchedTaskKt; +HSPLkotlinx/coroutines/DispatchedTaskKt;->dispatch(Lkotlinx/coroutines/DispatchedTask;I)V +HSPLkotlinx/coroutines/DispatchedTaskKt;->isCancellableMode(I)Z +HSPLkotlinx/coroutines/DispatchedTaskKt;->isReusableMode(I)Z +HSPLkotlinx/coroutines/DispatchedTaskKt;->resume(Lkotlinx/coroutines/DispatchedTask;Lkotlin/coroutines/Continuation;Z)V +HSPLkotlinx/coroutines/DispatchedTaskKt;->resumeUnconfined(Lkotlinx/coroutines/DispatchedTask;)V +Lkotlinx/coroutines/DispatcherExecutor; +Lkotlinx/coroutines/Dispatchers; +HSPLkotlinx/coroutines/Dispatchers;->()V +HSPLkotlinx/coroutines/Dispatchers;->()V +HSPLkotlinx/coroutines/Dispatchers;->getDefault()Lkotlinx/coroutines/CoroutineDispatcher; +HSPLkotlinx/coroutines/Dispatchers;->getIO()Lkotlinx/coroutines/CoroutineDispatcher; +HSPLkotlinx/coroutines/Dispatchers;->getMain()Lkotlinx/coroutines/MainCoroutineDispatcher; +Lkotlinx/coroutines/DisposableHandle; +Lkotlinx/coroutines/DisposeOnCancel; +HSPLkotlinx/coroutines/DisposeOnCancel;->(Lkotlinx/coroutines/DisposableHandle;)V +HSPLkotlinx/coroutines/DisposeOnCancel;->invoke(Ljava/lang/Throwable;)V +Lkotlinx/coroutines/Empty; +HSPLkotlinx/coroutines/Empty;->(Z)V +HSPLkotlinx/coroutines/Empty;->getList()Lkotlinx/coroutines/NodeList; +HSPLkotlinx/coroutines/Empty;->isActive()Z +Lkotlinx/coroutines/EventLoop; +HSPLkotlinx/coroutines/EventLoop;->()V +HSPLkotlinx/coroutines/EventLoop;->decrementUseCount$default(Lkotlinx/coroutines/EventLoop;ZILjava/lang/Object;)V +HSPLkotlinx/coroutines/EventLoop;->decrementUseCount(Z)V +HSPLkotlinx/coroutines/EventLoop;->delta(Z)J +HSPLkotlinx/coroutines/EventLoop;->dispatchUnconfined(Lkotlinx/coroutines/DispatchedTask;)V +HSPLkotlinx/coroutines/EventLoop;->getNextTime()J +HSPLkotlinx/coroutines/EventLoop;->incrementUseCount$default(Lkotlinx/coroutines/EventLoop;ZILjava/lang/Object;)V +HSPLkotlinx/coroutines/EventLoop;->incrementUseCount(Z)V +HSPLkotlinx/coroutines/EventLoop;->isUnconfinedLoopActive()Z +HSPLkotlinx/coroutines/EventLoop;->isUnconfinedQueueEmpty()Z +HSPLkotlinx/coroutines/EventLoop;->processUnconfinedEvent()Z +Lkotlinx/coroutines/EventLoopImplBase; +HSPLkotlinx/coroutines/EventLoopImplBase;->()V +HSPLkotlinx/coroutines/EventLoopImplBase;->()V +HSPLkotlinx/coroutines/EventLoopImplBase;->access$isCompleted(Lkotlinx/coroutines/EventLoopImplBase;)Z +HSPLkotlinx/coroutines/EventLoopImplBase;->closeQueue()V +HSPLkotlinx/coroutines/EventLoopImplBase;->dequeue()Ljava/lang/Runnable; +HSPLkotlinx/coroutines/EventLoopImplBase;->dispatch(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Runnable;)V +HSPLkotlinx/coroutines/EventLoopImplBase;->enqueue(Ljava/lang/Runnable;)V +HSPLkotlinx/coroutines/EventLoopImplBase;->enqueueImpl(Ljava/lang/Runnable;)Z +HSPLkotlinx/coroutines/EventLoopImplBase;->getNextTime()J +HSPLkotlinx/coroutines/EventLoopImplBase;->get_delayed$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/EventLoopImplBase;->get_isCompleted$volatile$FU()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; +HSPLkotlinx/coroutines/EventLoopImplBase;->get_queue$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/EventLoopImplBase;->isCompleted()Z +HSPLkotlinx/coroutines/EventLoopImplBase;->isEmpty()Z +HSPLkotlinx/coroutines/EventLoopImplBase;->processNextEvent()J +HSPLkotlinx/coroutines/EventLoopImplBase;->rescheduleAllDelayed()V +HSPLkotlinx/coroutines/EventLoopImplBase;->schedule(JLkotlinx/coroutines/EventLoopImplBase$DelayedTask;)V +HSPLkotlinx/coroutines/EventLoopImplBase;->scheduleImpl(JLkotlinx/coroutines/EventLoopImplBase$DelayedTask;)I +HSPLkotlinx/coroutines/EventLoopImplBase;->scheduleInvokeOnTimeout(JLjava/lang/Runnable;)Lkotlinx/coroutines/DisposableHandle; +HSPLkotlinx/coroutines/EventLoopImplBase;->scheduleResumeAfterDelay(JLkotlinx/coroutines/CancellableContinuation;)V +HSPLkotlinx/coroutines/EventLoopImplBase;->setCompleted(Z)V +HSPLkotlinx/coroutines/EventLoopImplBase;->shouldUnpark(Lkotlinx/coroutines/EventLoopImplBase$DelayedTask;)Z +HSPLkotlinx/coroutines/EventLoopImplBase;->shutdown()V +Lkotlinx/coroutines/EventLoopImplBase$DelayedResumeTask; +HSPLkotlinx/coroutines/EventLoopImplBase$DelayedResumeTask;->(Lkotlinx/coroutines/EventLoopImplBase;JLkotlinx/coroutines/CancellableContinuation;)V +HSPLkotlinx/coroutines/EventLoopImplBase$DelayedResumeTask;->run()V +Lkotlinx/coroutines/EventLoopImplBase$DelayedRunnableTask; +HSPLkotlinx/coroutines/EventLoopImplBase$DelayedRunnableTask;->(JLjava/lang/Runnable;)V +HSPLkotlinx/coroutines/EventLoopImplBase$DelayedRunnableTask;->run()V +Lkotlinx/coroutines/EventLoopImplBase$DelayedTask; +HSPLkotlinx/coroutines/EventLoopImplBase$DelayedTask;->(J)V +HSPLkotlinx/coroutines/EventLoopImplBase$DelayedTask;->compareTo(Ljava/lang/Object;)I +HSPLkotlinx/coroutines/EventLoopImplBase$DelayedTask;->compareTo(Lkotlinx/coroutines/EventLoopImplBase$DelayedTask;)I +HSPLkotlinx/coroutines/EventLoopImplBase$DelayedTask;->dispose()V +HSPLkotlinx/coroutines/EventLoopImplBase$DelayedTask;->getHeap()Lkotlinx/coroutines/internal/ThreadSafeHeap; +HSPLkotlinx/coroutines/EventLoopImplBase$DelayedTask;->getIndex()I +HSPLkotlinx/coroutines/EventLoopImplBase$DelayedTask;->scheduleTask(JLkotlinx/coroutines/EventLoopImplBase$DelayedTaskQueue;Lkotlinx/coroutines/EventLoopImplBase;)I +HSPLkotlinx/coroutines/EventLoopImplBase$DelayedTask;->setHeap(Lkotlinx/coroutines/internal/ThreadSafeHeap;)V +HSPLkotlinx/coroutines/EventLoopImplBase$DelayedTask;->setIndex(I)V +HSPLkotlinx/coroutines/EventLoopImplBase$DelayedTask;->timeToExecute(J)Z +Lkotlinx/coroutines/EventLoopImplBase$DelayedTaskQueue; +HSPLkotlinx/coroutines/EventLoopImplBase$DelayedTaskQueue;->(J)V +Lkotlinx/coroutines/EventLoopImplPlatform; +HSPLkotlinx/coroutines/EventLoopImplPlatform;->()V +HSPLkotlinx/coroutines/EventLoopImplPlatform;->unpark()V +Lkotlinx/coroutines/EventLoopKt; +HSPLkotlinx/coroutines/EventLoopKt;->createEventLoop()Lkotlinx/coroutines/EventLoop; +Lkotlinx/coroutines/EventLoop_commonKt; +HSPLkotlinx/coroutines/EventLoop_commonKt;->()V +HSPLkotlinx/coroutines/EventLoop_commonKt;->access$getCLOSED_EMPTY$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/EventLoop_commonKt;->access$getDISPOSED_TASK$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/EventLoop_commonKt;->delayToNanos(J)J +Lkotlinx/coroutines/ExecutorCoroutineDispatcher; +HSPLkotlinx/coroutines/ExecutorCoroutineDispatcher;->()V +HSPLkotlinx/coroutines/ExecutorCoroutineDispatcher;->()V +Lkotlinx/coroutines/ExecutorCoroutineDispatcher$Key; +HSPLkotlinx/coroutines/ExecutorCoroutineDispatcher$Key;->()V +HSPLkotlinx/coroutines/ExecutorCoroutineDispatcher$Key;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/coroutines/ExecutorCoroutineDispatcher$Key$1; +HSPLkotlinx/coroutines/ExecutorCoroutineDispatcher$Key$1;->()V +HSPLkotlinx/coroutines/ExecutorCoroutineDispatcher$Key$1;->()V +Lkotlinx/coroutines/ExecutorCoroutineDispatcherImpl; +HSPLkotlinx/coroutines/ExecutorCoroutineDispatcherImpl;->(Ljava/util/concurrent/Executor;)V +HSPLkotlinx/coroutines/ExecutorCoroutineDispatcherImpl;->dispatch(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Runnable;)V +HSPLkotlinx/coroutines/ExecutorCoroutineDispatcherImpl;->getExecutor()Ljava/util/concurrent/Executor; +Lkotlinx/coroutines/ExecutorsKt; +HSPLkotlinx/coroutines/ExecutorsKt;->from(Ljava/util/concurrent/Executor;)Lkotlinx/coroutines/CoroutineDispatcher; +Lkotlinx/coroutines/GlobalScope; +HSPLkotlinx/coroutines/GlobalScope;->()V +HSPLkotlinx/coroutines/GlobalScope;->()V +HSPLkotlinx/coroutines/GlobalScope;->getCoroutineContext()Lkotlin/coroutines/CoroutineContext; +Lkotlinx/coroutines/InactiveNodeList; +Lkotlinx/coroutines/Incomplete; +Lkotlinx/coroutines/IncompleteStateBox; +Lkotlinx/coroutines/InvokeOnCancel; +HSPLkotlinx/coroutines/InvokeOnCancel;->(Lkotlin/jvm/functions/Function1;)V +HSPLkotlinx/coroutines/InvokeOnCancel;->invoke(Ljava/lang/Throwable;)V +Lkotlinx/coroutines/InvokeOnCancelling; +Lkotlinx/coroutines/InvokeOnCompletion; +HSPLkotlinx/coroutines/InvokeOnCompletion;->(Lkotlin/jvm/functions/Function1;)V +Lkotlinx/coroutines/Job; +HSPLkotlinx/coroutines/Job;->()V +Lkotlinx/coroutines/Job$DefaultImpls; +HSPLkotlinx/coroutines/Job$DefaultImpls;->cancel$default(Lkotlinx/coroutines/Job;Ljava/util/concurrent/CancellationException;ILjava/lang/Object;)V +HSPLkotlinx/coroutines/Job$DefaultImpls;->fold(Lkotlinx/coroutines/Job;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLkotlinx/coroutines/Job$DefaultImpls;->get(Lkotlinx/coroutines/Job;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLkotlinx/coroutines/Job$DefaultImpls;->invokeOnCompletion$default(Lkotlinx/coroutines/Job;ZZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lkotlinx/coroutines/DisposableHandle; +HSPLkotlinx/coroutines/Job$DefaultImpls;->minusKey(Lkotlinx/coroutines/Job;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext; +HSPLkotlinx/coroutines/Job$DefaultImpls;->plus(Lkotlinx/coroutines/Job;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext; +Lkotlinx/coroutines/Job$Key; +HSPLkotlinx/coroutines/Job$Key;->()V +HSPLkotlinx/coroutines/Job$Key;->()V +Lkotlinx/coroutines/JobCancellationException; +HSPLkotlinx/coroutines/JobCancellationException;->(Ljava/lang/String;Ljava/lang/Throwable;Lkotlinx/coroutines/Job;)V +HSPLkotlinx/coroutines/JobCancellationException;->equals(Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/JobCancellationException;->fillInStackTrace()Ljava/lang/Throwable; +Lkotlinx/coroutines/JobCancellingNode; +HSPLkotlinx/coroutines/JobCancellingNode;->()V +Lkotlinx/coroutines/JobImpl; +HSPLkotlinx/coroutines/JobImpl;->(Lkotlinx/coroutines/Job;)V +HSPLkotlinx/coroutines/JobImpl;->getHandlesException$kotlinx_coroutines_core()Z +HSPLkotlinx/coroutines/JobImpl;->getOnCancelComplete$kotlinx_coroutines_core()Z +HSPLkotlinx/coroutines/JobImpl;->handlesException()Z +Lkotlinx/coroutines/JobKt; +HSPLkotlinx/coroutines/JobKt;->Job$default(Lkotlinx/coroutines/Job;ILjava/lang/Object;)Lkotlinx/coroutines/CompletableJob; +HSPLkotlinx/coroutines/JobKt;->Job(Lkotlinx/coroutines/Job;)Lkotlinx/coroutines/CompletableJob; +HSPLkotlinx/coroutines/JobKt;->cancelAndJoin(Lkotlinx/coroutines/Job;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/JobKt;->ensureActive(Lkotlin/coroutines/CoroutineContext;)V +HSPLkotlinx/coroutines/JobKt;->ensureActive(Lkotlinx/coroutines/Job;)V +HSPLkotlinx/coroutines/JobKt;->getJob(Lkotlin/coroutines/CoroutineContext;)Lkotlinx/coroutines/Job; +HSPLkotlinx/coroutines/JobKt;->isActive(Lkotlin/coroutines/CoroutineContext;)Z +Lkotlinx/coroutines/JobKt__JobKt; +HSPLkotlinx/coroutines/JobKt__JobKt;->Job$default(Lkotlinx/coroutines/Job;ILjava/lang/Object;)Lkotlinx/coroutines/CompletableJob; +HSPLkotlinx/coroutines/JobKt__JobKt;->Job(Lkotlinx/coroutines/Job;)Lkotlinx/coroutines/CompletableJob; +HSPLkotlinx/coroutines/JobKt__JobKt;->cancelAndJoin(Lkotlinx/coroutines/Job;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/JobKt__JobKt;->ensureActive(Lkotlin/coroutines/CoroutineContext;)V +HSPLkotlinx/coroutines/JobKt__JobKt;->ensureActive(Lkotlinx/coroutines/Job;)V +HSPLkotlinx/coroutines/JobKt__JobKt;->getJob(Lkotlin/coroutines/CoroutineContext;)Lkotlinx/coroutines/Job; +HSPLkotlinx/coroutines/JobKt__JobKt;->isActive(Lkotlin/coroutines/CoroutineContext;)Z +Lkotlinx/coroutines/JobNode; +HSPLkotlinx/coroutines/JobNode;->()V +HSPLkotlinx/coroutines/JobNode;->dispose()V +HSPLkotlinx/coroutines/JobNode;->getJob()Lkotlinx/coroutines/JobSupport; +HSPLkotlinx/coroutines/JobNode;->getList()Lkotlinx/coroutines/NodeList; +HSPLkotlinx/coroutines/JobNode;->isActive()Z +HSPLkotlinx/coroutines/JobNode;->setJob(Lkotlinx/coroutines/JobSupport;)V +Lkotlinx/coroutines/JobSupport; +HSPLkotlinx/coroutines/JobSupport;->()V +HSPLkotlinx/coroutines/JobSupport;->(Z)V +HSPLkotlinx/coroutines/JobSupport;->access$cancellationExceptionMessage(Lkotlinx/coroutines/JobSupport;)Ljava/lang/String; +HSPLkotlinx/coroutines/JobSupport;->access$continueCompleting(Lkotlinx/coroutines/JobSupport;Lkotlinx/coroutines/JobSupport$Finishing;Lkotlinx/coroutines/ChildHandleNode;Ljava/lang/Object;)V +HSPLkotlinx/coroutines/JobSupport;->addLastAtomic(Ljava/lang/Object;Lkotlinx/coroutines/NodeList;Lkotlinx/coroutines/JobNode;)Z +HSPLkotlinx/coroutines/JobSupport;->addSuppressedExceptions(Ljava/lang/Throwable;Ljava/util/List;)V +HSPLkotlinx/coroutines/JobSupport;->afterCompletion(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/JobSupport;->attachChild(Lkotlinx/coroutines/ChildJob;)Lkotlinx/coroutines/ChildHandle; +HSPLkotlinx/coroutines/JobSupport;->awaitInternal(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/JobSupport;->awaitSuspend(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/JobSupport;->cancel(Ljava/util/concurrent/CancellationException;)V +HSPLkotlinx/coroutines/JobSupport;->cancelCoroutine(Ljava/lang/Throwable;)Z +HSPLkotlinx/coroutines/JobSupport;->cancelImpl$kotlinx_coroutines_core(Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/JobSupport;->cancelInternal(Ljava/lang/Throwable;)V +HSPLkotlinx/coroutines/JobSupport;->cancelMakeCompleting(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/JobSupport;->cancelParent(Ljava/lang/Throwable;)Z +HSPLkotlinx/coroutines/JobSupport;->cancellationExceptionMessage()Ljava/lang/String; +HSPLkotlinx/coroutines/JobSupport;->childCancelled(Ljava/lang/Throwable;)Z +HSPLkotlinx/coroutines/JobSupport;->completeStateFinalization(Lkotlinx/coroutines/Incomplete;Ljava/lang/Object;)V +HSPLkotlinx/coroutines/JobSupport;->continueCompleting(Lkotlinx/coroutines/JobSupport$Finishing;Lkotlinx/coroutines/ChildHandleNode;Ljava/lang/Object;)V +HSPLkotlinx/coroutines/JobSupport;->createCauseException(Ljava/lang/Object;)Ljava/lang/Throwable; +HSPLkotlinx/coroutines/JobSupport;->finalizeFinishingState(Lkotlinx/coroutines/JobSupport$Finishing;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/JobSupport;->firstChild(Lkotlinx/coroutines/Incomplete;)Lkotlinx/coroutines/ChildHandleNode; +HSPLkotlinx/coroutines/JobSupport;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLkotlinx/coroutines/JobSupport;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLkotlinx/coroutines/JobSupport;->getCancellationException()Ljava/util/concurrent/CancellationException; +HSPLkotlinx/coroutines/JobSupport;->getChildJobCancellationCause()Ljava/util/concurrent/CancellationException; +HSPLkotlinx/coroutines/JobSupport;->getFinalRootCause(Lkotlinx/coroutines/JobSupport$Finishing;Ljava/util/List;)Ljava/lang/Throwable; +HSPLkotlinx/coroutines/JobSupport;->getKey()Lkotlin/coroutines/CoroutineContext$Key; +HSPLkotlinx/coroutines/JobSupport;->getOnCancelComplete$kotlinx_coroutines_core()Z +HSPLkotlinx/coroutines/JobSupport;->getOrPromoteCancellingList(Lkotlinx/coroutines/Incomplete;)Lkotlinx/coroutines/NodeList; +HSPLkotlinx/coroutines/JobSupport;->getParent()Lkotlinx/coroutines/Job; +HSPLkotlinx/coroutines/JobSupport;->getParentHandle$kotlinx_coroutines_core()Lkotlinx/coroutines/ChildHandle; +HSPLkotlinx/coroutines/JobSupport;->getState$kotlinx_coroutines_core()Ljava/lang/Object; +HSPLkotlinx/coroutines/JobSupport;->get_parentHandle$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/JobSupport;->get_state$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/JobSupport;->initParentJob(Lkotlinx/coroutines/Job;)V +HSPLkotlinx/coroutines/JobSupport;->invokeOnCompletion(Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/DisposableHandle; +HSPLkotlinx/coroutines/JobSupport;->invokeOnCompletion(ZZLkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/DisposableHandle; +HSPLkotlinx/coroutines/JobSupport;->isActive()Z +HSPLkotlinx/coroutines/JobSupport;->isCancelled()Z +HSPLkotlinx/coroutines/JobSupport;->isCompleted()Z +HSPLkotlinx/coroutines/JobSupport;->isScopedCoroutine()Z +HSPLkotlinx/coroutines/JobSupport;->join(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/JobSupport;->joinInternal()Z +HSPLkotlinx/coroutines/JobSupport;->joinSuspend(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/JobSupport;->makeCancelling(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/JobSupport;->makeCompletingOnce$kotlinx_coroutines_core(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/JobSupport;->makeNode(Lkotlin/jvm/functions/Function1;Z)Lkotlinx/coroutines/JobNode; +HSPLkotlinx/coroutines/JobSupport;->minusKey(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext; +HSPLkotlinx/coroutines/JobSupport;->nextChild(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)Lkotlinx/coroutines/ChildHandleNode; +HSPLkotlinx/coroutines/JobSupport;->notifyCancelling(Lkotlinx/coroutines/NodeList;Ljava/lang/Throwable;)V +HSPLkotlinx/coroutines/JobSupport;->notifyCompletion(Lkotlinx/coroutines/NodeList;Ljava/lang/Throwable;)V +HSPLkotlinx/coroutines/JobSupport;->onCancelling(Ljava/lang/Throwable;)V +HSPLkotlinx/coroutines/JobSupport;->onCompletionInternal(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/JobSupport;->parentCancelled(Lkotlinx/coroutines/ParentJob;)V +HSPLkotlinx/coroutines/JobSupport;->plus(Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext; +HSPLkotlinx/coroutines/JobSupport;->promoteSingleToNodeList(Lkotlinx/coroutines/JobNode;)V +HSPLkotlinx/coroutines/JobSupport;->removeNode$kotlinx_coroutines_core(Lkotlinx/coroutines/JobNode;)V +HSPLkotlinx/coroutines/JobSupport;->setParentHandle$kotlinx_coroutines_core(Lkotlinx/coroutines/ChildHandle;)V +HSPLkotlinx/coroutines/JobSupport;->start()Z +HSPLkotlinx/coroutines/JobSupport;->startInternal(Ljava/lang/Object;)I +HSPLkotlinx/coroutines/JobSupport;->toCancellationException$default(Lkotlinx/coroutines/JobSupport;Ljava/lang/Throwable;Ljava/lang/String;ILjava/lang/Object;)Ljava/util/concurrent/CancellationException; +HSPLkotlinx/coroutines/JobSupport;->toCancellationException(Ljava/lang/Throwable;Ljava/lang/String;)Ljava/util/concurrent/CancellationException; +HSPLkotlinx/coroutines/JobSupport;->tryFinalizeSimpleState(Lkotlinx/coroutines/Incomplete;Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/JobSupport;->tryMakeCancelling(Lkotlinx/coroutines/Incomplete;Ljava/lang/Throwable;)Z +HSPLkotlinx/coroutines/JobSupport;->tryMakeCompleting(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/JobSupport;->tryMakeCompletingSlowPath(Lkotlinx/coroutines/Incomplete;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/JobSupport;->tryWaitForChild(Lkotlinx/coroutines/JobSupport$Finishing;Lkotlinx/coroutines/ChildHandleNode;Ljava/lang/Object;)Z +Lkotlinx/coroutines/JobSupport$AwaitContinuation; +HSPLkotlinx/coroutines/JobSupport$AwaitContinuation;->(Lkotlin/coroutines/Continuation;Lkotlinx/coroutines/JobSupport;)V +Lkotlinx/coroutines/JobSupport$ChildCompletion; +HSPLkotlinx/coroutines/JobSupport$ChildCompletion;->(Lkotlinx/coroutines/JobSupport;Lkotlinx/coroutines/JobSupport$Finishing;Lkotlinx/coroutines/ChildHandleNode;Ljava/lang/Object;)V +HSPLkotlinx/coroutines/JobSupport$ChildCompletion;->invoke(Ljava/lang/Throwable;)V +Lkotlinx/coroutines/JobSupport$Finishing; +HSPLkotlinx/coroutines/JobSupport$Finishing;->()V +HSPLkotlinx/coroutines/JobSupport$Finishing;->(Lkotlinx/coroutines/NodeList;ZLjava/lang/Throwable;)V +HSPLkotlinx/coroutines/JobSupport$Finishing;->addExceptionLocked(Ljava/lang/Throwable;)V +HSPLkotlinx/coroutines/JobSupport$Finishing;->allocateList()Ljava/util/ArrayList; +HSPLkotlinx/coroutines/JobSupport$Finishing;->getExceptionsHolder()Ljava/lang/Object; +HSPLkotlinx/coroutines/JobSupport$Finishing;->getList()Lkotlinx/coroutines/NodeList; +HSPLkotlinx/coroutines/JobSupport$Finishing;->getRootCause()Ljava/lang/Throwable; +HSPLkotlinx/coroutines/JobSupport$Finishing;->get_exceptionsHolder$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/JobSupport$Finishing;->get_isCompleting$volatile$FU()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; +HSPLkotlinx/coroutines/JobSupport$Finishing;->get_rootCause$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/JobSupport$Finishing;->isActive()Z +HSPLkotlinx/coroutines/JobSupport$Finishing;->isCancelling()Z +HSPLkotlinx/coroutines/JobSupport$Finishing;->isCompleting()Z +HSPLkotlinx/coroutines/JobSupport$Finishing;->isSealed()Z +HSPLkotlinx/coroutines/JobSupport$Finishing;->sealLocked(Ljava/lang/Throwable;)Ljava/util/List; +HSPLkotlinx/coroutines/JobSupport$Finishing;->setCompleting(Z)V +HSPLkotlinx/coroutines/JobSupport$Finishing;->setExceptionsHolder(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/JobSupport$Finishing;->setRootCause(Ljava/lang/Throwable;)V +Lkotlinx/coroutines/JobSupport$addLastAtomic$$inlined$addLastIf$1; +HSPLkotlinx/coroutines/JobSupport$addLastAtomic$$inlined$addLastIf$1;->(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/JobSupport;Ljava/lang/Object;)V +HSPLkotlinx/coroutines/JobSupport$addLastAtomic$$inlined$addLastIf$1;->prepare(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/JobSupport$addLastAtomic$$inlined$addLastIf$1;->prepare(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)Ljava/lang/Object; +Lkotlinx/coroutines/JobSupportKt; +HSPLkotlinx/coroutines/JobSupportKt;->()V +HSPLkotlinx/coroutines/JobSupportKt;->access$getCOMPLETING_ALREADY$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/JobSupportKt;->access$getCOMPLETING_RETRY$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/JobSupportKt;->access$getEMPTY_ACTIVE$p()Lkotlinx/coroutines/Empty; +HSPLkotlinx/coroutines/JobSupportKt;->access$getSEALED$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/JobSupportKt;->access$getTOO_LATE_TO_CANCEL$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/JobSupportKt;->boxIncomplete(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/JobSupportKt;->unboxState(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/MainCoroutineDispatcher; +HSPLkotlinx/coroutines/MainCoroutineDispatcher;->()V +Lkotlinx/coroutines/NodeList; +HSPLkotlinx/coroutines/NodeList;->()V +HSPLkotlinx/coroutines/NodeList;->getList()Lkotlinx/coroutines/NodeList; +HSPLkotlinx/coroutines/NodeList;->isActive()Z +Lkotlinx/coroutines/NonDisposableHandle; +HSPLkotlinx/coroutines/NonDisposableHandle;->()V +HSPLkotlinx/coroutines/NonDisposableHandle;->()V +HSPLkotlinx/coroutines/NonDisposableHandle;->dispose()V +Lkotlinx/coroutines/NotCompleted; +Lkotlinx/coroutines/ParentJob; +Lkotlinx/coroutines/ResumeAwaitOnCompletion; +HSPLkotlinx/coroutines/ResumeAwaitOnCompletion;->(Lkotlinx/coroutines/CancellableContinuationImpl;)V +HSPLkotlinx/coroutines/ResumeAwaitOnCompletion;->invoke(Ljava/lang/Throwable;)V +Lkotlinx/coroutines/ResumeOnCompletion; +HSPLkotlinx/coroutines/ResumeOnCompletion;->(Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/ResumeOnCompletion;->invoke(Ljava/lang/Throwable;)V +Lkotlinx/coroutines/StandaloneCoroutine; +HSPLkotlinx/coroutines/StandaloneCoroutine;->(Lkotlin/coroutines/CoroutineContext;Z)V +Lkotlinx/coroutines/SupervisorJobImpl; +HSPLkotlinx/coroutines/SupervisorJobImpl;->(Lkotlinx/coroutines/Job;)V +Lkotlinx/coroutines/SupervisorKt; +HSPLkotlinx/coroutines/SupervisorKt;->SupervisorJob$default(Lkotlinx/coroutines/Job;ILjava/lang/Object;)Lkotlinx/coroutines/CompletableJob; +HSPLkotlinx/coroutines/SupervisorKt;->SupervisorJob(Lkotlinx/coroutines/Job;)Lkotlinx/coroutines/CompletableJob; +Lkotlinx/coroutines/ThreadContextElement; +Lkotlinx/coroutines/ThreadContextElement$DefaultImpls; +HSPLkotlinx/coroutines/ThreadContextElement$DefaultImpls;->fold(Lkotlinx/coroutines/ThreadContextElement;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +Lkotlinx/coroutines/ThreadContextElementKt; +HSPLkotlinx/coroutines/ThreadContextElementKt;->asContextElement(Ljava/lang/ThreadLocal;Ljava/lang/Object;)Lkotlinx/coroutines/ThreadContextElement; +Lkotlinx/coroutines/ThreadLocalEventLoop; +HSPLkotlinx/coroutines/ThreadLocalEventLoop;->()V +HSPLkotlinx/coroutines/ThreadLocalEventLoop;->()V +HSPLkotlinx/coroutines/ThreadLocalEventLoop;->getEventLoop$kotlinx_coroutines_core()Lkotlinx/coroutines/EventLoop; +HSPLkotlinx/coroutines/ThreadLocalEventLoop;->resetEventLoop$kotlinx_coroutines_core()V +HSPLkotlinx/coroutines/ThreadLocalEventLoop;->setEventLoop$kotlinx_coroutines_core(Lkotlinx/coroutines/EventLoop;)V +Lkotlinx/coroutines/TimeoutCancellationException; +Lkotlinx/coroutines/Unconfined; +HSPLkotlinx/coroutines/Unconfined;->()V +HSPLkotlinx/coroutines/Unconfined;->()V +Lkotlinx/coroutines/UndispatchedCoroutine; +HSPLkotlinx/coroutines/UndispatchedCoroutine;->(Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/UndispatchedCoroutine;->afterResume(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/UndispatchedCoroutine;->clearThreadContext()Z +HSPLkotlinx/coroutines/UndispatchedCoroutine;->saveThreadContext(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Object;)V +Lkotlinx/coroutines/UndispatchedMarker; +HSPLkotlinx/coroutines/UndispatchedMarker;->()V +HSPLkotlinx/coroutines/UndispatchedMarker;->()V +HSPLkotlinx/coroutines/UndispatchedMarker;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLkotlinx/coroutines/UndispatchedMarker;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLkotlinx/coroutines/UndispatchedMarker;->getKey()Lkotlin/coroutines/CoroutineContext$Key; +Lkotlinx/coroutines/Waiter; +Lkotlinx/coroutines/YieldContext; +HSPLkotlinx/coroutines/YieldContext;->()V +HSPLkotlinx/coroutines/YieldContext;->()V +Lkotlinx/coroutines/YieldContext$Key; +HSPLkotlinx/coroutines/YieldContext$Key;->()V +HSPLkotlinx/coroutines/YieldContext$Key;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/coroutines/YieldKt; +HSPLkotlinx/coroutines/YieldKt;->yield(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/android/AndroidDispatcherFactory; +HSPLkotlinx/coroutines/android/AndroidDispatcherFactory;->()V +HSPLkotlinx/coroutines/android/AndroidDispatcherFactory;->createDispatcher(Ljava/util/List;)Lkotlinx/coroutines/MainCoroutineDispatcher; +Lkotlinx/coroutines/android/HandlerContext; +HSPLkotlinx/coroutines/android/HandlerContext;->(Landroid/os/Handler;Ljava/lang/String;)V +HSPLkotlinx/coroutines/android/HandlerContext;->(Landroid/os/Handler;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/coroutines/android/HandlerContext;->(Landroid/os/Handler;Ljava/lang/String;Z)V +HSPLkotlinx/coroutines/android/HandlerContext;->dispatch(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Runnable;)V +HSPLkotlinx/coroutines/android/HandlerContext;->equals(Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/android/HandlerContext;->getImmediate()Lkotlinx/coroutines/MainCoroutineDispatcher; +HSPLkotlinx/coroutines/android/HandlerContext;->getImmediate()Lkotlinx/coroutines/android/HandlerContext; +HSPLkotlinx/coroutines/android/HandlerContext;->getImmediate()Lkotlinx/coroutines/android/HandlerDispatcher; +HSPLkotlinx/coroutines/android/HandlerContext;->isDispatchNeeded(Lkotlin/coroutines/CoroutineContext;)Z +HSPLkotlinx/coroutines/android/HandlerContext;->scheduleResumeAfterDelay(JLkotlinx/coroutines/CancellableContinuation;)V +Lkotlinx/coroutines/android/HandlerContext$scheduleResumeAfterDelay$$inlined$Runnable$1; +HSPLkotlinx/coroutines/android/HandlerContext$scheduleResumeAfterDelay$$inlined$Runnable$1;->(Lkotlinx/coroutines/CancellableContinuation;Lkotlinx/coroutines/android/HandlerContext;)V +HSPLkotlinx/coroutines/android/HandlerContext$scheduleResumeAfterDelay$$inlined$Runnable$1;->run()V +Lkotlinx/coroutines/android/HandlerContext$scheduleResumeAfterDelay$1; +HSPLkotlinx/coroutines/android/HandlerContext$scheduleResumeAfterDelay$1;->(Lkotlinx/coroutines/android/HandlerContext;Ljava/lang/Runnable;)V +Lkotlinx/coroutines/android/HandlerDispatcher; +HSPLkotlinx/coroutines/android/HandlerDispatcher;->()V +HSPLkotlinx/coroutines/android/HandlerDispatcher;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/coroutines/android/HandlerDispatcherKt; +HSPLkotlinx/coroutines/android/HandlerDispatcherKt;->()V +HSPLkotlinx/coroutines/android/HandlerDispatcherKt;->asHandler(Landroid/os/Looper;Z)Landroid/os/Handler; +HSPLkotlinx/coroutines/android/HandlerDispatcherKt;->from(Landroid/os/Handler;Ljava/lang/String;)Lkotlinx/coroutines/android/HandlerDispatcher; +Lkotlinx/coroutines/channels/BufferOverflow; +HSPLkotlinx/coroutines/channels/BufferOverflow;->$values()[Lkotlinx/coroutines/channels/BufferOverflow; +HSPLkotlinx/coroutines/channels/BufferOverflow;->()V +HSPLkotlinx/coroutines/channels/BufferOverflow;->(Ljava/lang/String;I)V +Lkotlinx/coroutines/channels/BufferedChannel; +HSPLkotlinx/coroutines/channels/BufferedChannel;->()V +HSPLkotlinx/coroutines/channels/BufferedChannel;->(ILkotlin/jvm/functions/Function1;)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->access$findSegmentReceive(Lkotlinx/coroutines/channels/BufferedChannel;JLkotlinx/coroutines/channels/ChannelSegment;)Lkotlinx/coroutines/channels/ChannelSegment; +HSPLkotlinx/coroutines/channels/BufferedChannel;->access$findSegmentSend(Lkotlinx/coroutines/channels/BufferedChannel;JLkotlinx/coroutines/channels/ChannelSegment;)Lkotlinx/coroutines/channels/ChannelSegment; +HSPLkotlinx/coroutines/channels/BufferedChannel;->access$getReceiveSegment$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/channels/BufferedChannel;->access$getReceivers$volatile$FU()Ljava/util/concurrent/atomic/AtomicLongFieldUpdater; +HSPLkotlinx/coroutines/channels/BufferedChannel;->access$getSendSegment$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/channels/BufferedChannel;->access$getSendersAndCloseStatus$volatile$FU()Ljava/util/concurrent/atomic/AtomicLongFieldUpdater; +HSPLkotlinx/coroutines/channels/BufferedChannel;->access$isClosedForSend0(Lkotlinx/coroutines/channels/BufferedChannel;J)Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->access$prepareReceiverForSuspension(Lkotlinx/coroutines/channels/BufferedChannel;Lkotlinx/coroutines/Waiter;Lkotlinx/coroutines/channels/ChannelSegment;I)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->access$prepareSenderForSuspension(Lkotlinx/coroutines/channels/BufferedChannel;Lkotlinx/coroutines/Waiter;Lkotlinx/coroutines/channels/ChannelSegment;I)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->access$processResultSelectReceiveCatching(Lkotlinx/coroutines/channels/BufferedChannel;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->access$receiveCatchingOnNoWaiterSuspend-GKJJFZk(Lkotlinx/coroutines/channels/BufferedChannel;Lkotlinx/coroutines/channels/ChannelSegment;IJLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->access$registerSelectForReceive(Lkotlinx/coroutines/channels/BufferedChannel;Lkotlinx/coroutines/selects/SelectInstance;Ljava/lang/Object;)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->access$updateCellReceive(Lkotlinx/coroutines/channels/BufferedChannel;Lkotlinx/coroutines/channels/ChannelSegment;IJLjava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->access$updateCellSend(Lkotlinx/coroutines/channels/BufferedChannel;Lkotlinx/coroutines/channels/ChannelSegment;ILjava/lang/Object;JLjava/lang/Object;Z)I +HSPLkotlinx/coroutines/channels/BufferedChannel;->bufferOrRendezvousSend(J)Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->cancel(Ljava/util/concurrent/CancellationException;)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->cancelImpl$kotlinx_coroutines_core(Ljava/lang/Throwable;)Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->cancelSuspendedReceiveRequests(Lkotlinx/coroutines/channels/ChannelSegment;J)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->close(Ljava/lang/Throwable;)Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->closeLinkedList()Lkotlinx/coroutines/channels/ChannelSegment; +HSPLkotlinx/coroutines/channels/BufferedChannel;->closeOrCancelImpl(Ljava/lang/Throwable;Z)Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->completeCancel(J)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->completeClose(J)Lkotlinx/coroutines/channels/ChannelSegment; +HSPLkotlinx/coroutines/channels/BufferedChannel;->completeCloseOrCancel()V +HSPLkotlinx/coroutines/channels/BufferedChannel;->dropFirstElementUntilTheSpecifiedCellIsInTheBuffer(J)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->expandBuffer()V +HSPLkotlinx/coroutines/channels/BufferedChannel;->findSegmentBufferEnd(JLkotlinx/coroutines/channels/ChannelSegment;J)Lkotlinx/coroutines/channels/ChannelSegment; +HSPLkotlinx/coroutines/channels/BufferedChannel;->findSegmentReceive(JLkotlinx/coroutines/channels/ChannelSegment;)Lkotlinx/coroutines/channels/ChannelSegment; +HSPLkotlinx/coroutines/channels/BufferedChannel;->findSegmentSend(JLkotlinx/coroutines/channels/ChannelSegment;)Lkotlinx/coroutines/channels/ChannelSegment; +HSPLkotlinx/coroutines/channels/BufferedChannel;->getBufferEnd$volatile$FU()Ljava/util/concurrent/atomic/AtomicLongFieldUpdater; +HSPLkotlinx/coroutines/channels/BufferedChannel;->getBufferEndCounter()J +HSPLkotlinx/coroutines/channels/BufferedChannel;->getBufferEndSegment$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/channels/BufferedChannel;->getCloseCause()Ljava/lang/Throwable; +HSPLkotlinx/coroutines/channels/BufferedChannel;->getCloseHandler$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/channels/BufferedChannel;->getCompletedExpandBuffersAndPauseFlag$volatile$FU()Ljava/util/concurrent/atomic/AtomicLongFieldUpdater; +HSPLkotlinx/coroutines/channels/BufferedChannel;->getOnReceiveCatching()Lkotlinx/coroutines/selects/SelectClause1; +HSPLkotlinx/coroutines/channels/BufferedChannel;->getReceiveSegment$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/channels/BufferedChannel;->getReceivers$volatile$FU()Ljava/util/concurrent/atomic/AtomicLongFieldUpdater; +HSPLkotlinx/coroutines/channels/BufferedChannel;->getReceiversCounter$kotlinx_coroutines_core()J +HSPLkotlinx/coroutines/channels/BufferedChannel;->getSendSegment$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/channels/BufferedChannel;->getSendersAndCloseStatus$volatile$FU()Ljava/util/concurrent/atomic/AtomicLongFieldUpdater; +HSPLkotlinx/coroutines/channels/BufferedChannel;->getSendersCounter$kotlinx_coroutines_core()J +HSPLkotlinx/coroutines/channels/BufferedChannel;->get_closeCause$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/channels/BufferedChannel;->hasElements$kotlinx_coroutines_core()Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->incCompletedExpandBufferAttempts$default(Lkotlinx/coroutines/channels/BufferedChannel;JILjava/lang/Object;)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->incCompletedExpandBufferAttempts(J)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->invokeCloseHandler()V +HSPLkotlinx/coroutines/channels/BufferedChannel;->invokeOnClose(Lkotlin/jvm/functions/Function1;)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->isClosed(JZ)Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->isClosedForReceive()Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->isClosedForReceive0(J)Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->isClosedForSend()Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->isClosedForSend0(J)Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->isConflatedDropOldest()Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->isRendezvousOrUnlimited()Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->iterator()Lkotlinx/coroutines/channels/ChannelIterator; +HSPLkotlinx/coroutines/channels/BufferedChannel;->markAllEmptyCellsAsClosed(Lkotlinx/coroutines/channels/ChannelSegment;)J +HSPLkotlinx/coroutines/channels/BufferedChannel;->markCancellationStarted()V +HSPLkotlinx/coroutines/channels/BufferedChannel;->markCancelled()V +HSPLkotlinx/coroutines/channels/BufferedChannel;->markClosed()V +HSPLkotlinx/coroutines/channels/BufferedChannel;->onClosedIdempotent()V +HSPLkotlinx/coroutines/channels/BufferedChannel;->onReceiveDequeued()V +HSPLkotlinx/coroutines/channels/BufferedChannel;->onReceiveEnqueued()V +HSPLkotlinx/coroutines/channels/BufferedChannel;->prepareReceiverForSuspension(Lkotlinx/coroutines/Waiter;Lkotlinx/coroutines/channels/ChannelSegment;I)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->prepareSenderForSuspension(Lkotlinx/coroutines/Waiter;Lkotlinx/coroutines/channels/ChannelSegment;I)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->processResultSelectReceiveCatching(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->receive$suspendImpl(Lkotlinx/coroutines/channels/BufferedChannel;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->receive(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->receiveCatching-JP2dKIU$suspendImpl(Lkotlinx/coroutines/channels/BufferedChannel;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->receiveCatching-JP2dKIU(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->receiveCatchingOnNoWaiterSuspend-GKJJFZk(Lkotlinx/coroutines/channels/ChannelSegment;IJLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->receiveOnNoWaiterSuspend(Lkotlinx/coroutines/channels/ChannelSegment;IJLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->registerSelectForReceive(Lkotlinx/coroutines/selects/SelectInstance;Ljava/lang/Object;)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->removeUnprocessedElements(Lkotlinx/coroutines/channels/ChannelSegment;)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->resumeReceiverOnClosedChannel(Lkotlinx/coroutines/Waiter;)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->resumeWaiterOnClosedChannel(Lkotlinx/coroutines/Waiter;Z)V +HSPLkotlinx/coroutines/channels/BufferedChannel;->send$suspendImpl(Lkotlinx/coroutines/channels/BufferedChannel;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->send(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->sendOnNoWaiterSuspend(Lkotlinx/coroutines/channels/ChannelSegment;ILjava/lang/Object;JLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->shouldSendSuspend(J)Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->tryReceive-PtdJZtk()Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->tryResumeReceiver(Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->tryResumeSender(Ljava/lang/Object;Lkotlinx/coroutines/channels/ChannelSegment;I)Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->trySend-JP2dKIU(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->updateCellExpandBuffer(Lkotlinx/coroutines/channels/ChannelSegment;IJ)Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->updateCellExpandBufferSlow(Lkotlinx/coroutines/channels/ChannelSegment;IJ)Z +HSPLkotlinx/coroutines/channels/BufferedChannel;->updateCellReceive(Lkotlinx/coroutines/channels/ChannelSegment;IJLjava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->updateCellReceiveSlow(Lkotlinx/coroutines/channels/ChannelSegment;IJLjava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel;->updateCellSend(Lkotlinx/coroutines/channels/ChannelSegment;ILjava/lang/Object;JLjava/lang/Object;Z)I +HSPLkotlinx/coroutines/channels/BufferedChannel;->updateCellSendSlow(Lkotlinx/coroutines/channels/ChannelSegment;ILjava/lang/Object;JLjava/lang/Object;Z)I +HSPLkotlinx/coroutines/channels/BufferedChannel;->waitExpandBufferCompletion$kotlinx_coroutines_core(J)V +Lkotlinx/coroutines/channels/BufferedChannel$BufferedChannelIterator; +HSPLkotlinx/coroutines/channels/BufferedChannel$BufferedChannelIterator;->(Lkotlinx/coroutines/channels/BufferedChannel;)V +HSPLkotlinx/coroutines/channels/BufferedChannel$BufferedChannelIterator;->access$setContinuation$p(Lkotlinx/coroutines/channels/BufferedChannel$BufferedChannelIterator;Lkotlinx/coroutines/CancellableContinuationImpl;)V +HSPLkotlinx/coroutines/channels/BufferedChannel$BufferedChannelIterator;->hasNext(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel$BufferedChannelIterator;->hasNextOnNoWaiterSuspend(Lkotlinx/coroutines/channels/ChannelSegment;IJLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel$BufferedChannelIterator;->invokeOnCancellation(Lkotlinx/coroutines/internal/Segment;I)V +HSPLkotlinx/coroutines/channels/BufferedChannel$BufferedChannelIterator;->next()Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel$BufferedChannelIterator;->tryResumeHasNext(Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/channels/BufferedChannel$BufferedChannelIterator;->tryResumeHasNextOnClosedChannel()V +Lkotlinx/coroutines/channels/BufferedChannel$SendBroadcast; +Lkotlinx/coroutines/channels/BufferedChannel$onReceiveCatching$1; +HSPLkotlinx/coroutines/channels/BufferedChannel$onReceiveCatching$1;->()V +HSPLkotlinx/coroutines/channels/BufferedChannel$onReceiveCatching$1;->()V +HSPLkotlinx/coroutines/channels/BufferedChannel$onReceiveCatching$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel$onReceiveCatching$1;->invoke(Lkotlinx/coroutines/channels/BufferedChannel;Lkotlinx/coroutines/selects/SelectInstance;Ljava/lang/Object;)V +Lkotlinx/coroutines/channels/BufferedChannel$onReceiveCatching$2; +HSPLkotlinx/coroutines/channels/BufferedChannel$onReceiveCatching$2;->()V +HSPLkotlinx/coroutines/channels/BufferedChannel$onReceiveCatching$2;->()V +HSPLkotlinx/coroutines/channels/BufferedChannel$onReceiveCatching$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/BufferedChannel$onReceiveCatching$2;->invoke(Lkotlinx/coroutines/channels/BufferedChannel;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/channels/BufferedChannel$receiveCatching$1; +HSPLkotlinx/coroutines/channels/BufferedChannel$receiveCatching$1;->(Lkotlinx/coroutines/channels/BufferedChannel;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/channels/BufferedChannel$receiveCatching$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/channels/BufferedChannel$receiveCatchingOnNoWaiterSuspend$1; +HSPLkotlinx/coroutines/channels/BufferedChannel$receiveCatchingOnNoWaiterSuspend$1;->(Lkotlinx/coroutines/channels/BufferedChannel;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/channels/BufferedChannel$receiveCatchingOnNoWaiterSuspend$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/channels/BufferedChannelKt; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->()V +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$constructSendersAndCloseStatus(JI)J +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$createSegment(JLkotlinx/coroutines/channels/ChannelSegment;)Lkotlinx/coroutines/channels/ChannelSegment; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$getCLOSE_HANDLER_CLOSED$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$getCLOSE_HANDLER_INVOKED$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$getDONE_RCV$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$getEXPAND_BUFFER_COMPLETION_WAIT_ITERATIONS$p()I +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$getFAILED$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$getINTERRUPTED_RCV$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$getINTERRUPTED_SEND$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$getIN_BUFFER$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$getNO_CLOSE_CAUSE$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$getNO_RECEIVE_RESULT$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$getNULL_SEGMENT$p()Lkotlinx/coroutines/channels/ChannelSegment; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$getRESUMING_BY_EB$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$getRESUMING_BY_RCV$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$getSUSPEND$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$getSUSPEND_NO_WAITER$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$initialBufferEnd(I)J +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->access$tryResume0(Lkotlinx/coroutines/CancellableContinuation;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Z +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->constructSendersAndCloseStatus(JI)J +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->createSegment(JLkotlinx/coroutines/channels/ChannelSegment;)Lkotlinx/coroutines/channels/ChannelSegment; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->createSegmentFunction()Lkotlin/reflect/KFunction; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->getCHANNEL_CLOSED()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->initialBufferEnd(I)J +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->tryResume0$default(Lkotlinx/coroutines/CancellableContinuation;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Z +HSPLkotlinx/coroutines/channels/BufferedChannelKt;->tryResume0(Lkotlinx/coroutines/CancellableContinuation;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Z +Lkotlinx/coroutines/channels/BufferedChannelKt$createSegmentFunction$1; +HSPLkotlinx/coroutines/channels/BufferedChannelKt$createSegmentFunction$1;->()V +HSPLkotlinx/coroutines/channels/BufferedChannelKt$createSegmentFunction$1;->()V +HSPLkotlinx/coroutines/channels/BufferedChannelKt$createSegmentFunction$1;->invoke(JLkotlinx/coroutines/channels/ChannelSegment;)Lkotlinx/coroutines/channels/ChannelSegment; +HSPLkotlinx/coroutines/channels/BufferedChannelKt$createSegmentFunction$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/channels/Channel; +HSPLkotlinx/coroutines/channels/Channel;->()V +Lkotlinx/coroutines/channels/Channel$Factory; +HSPLkotlinx/coroutines/channels/Channel$Factory;->()V +HSPLkotlinx/coroutines/channels/Channel$Factory;->()V +HSPLkotlinx/coroutines/channels/Channel$Factory;->getCHANNEL_DEFAULT_CAPACITY$kotlinx_coroutines_core()I +Lkotlinx/coroutines/channels/ChannelCoroutine; +HSPLkotlinx/coroutines/channels/ChannelCoroutine;->(Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/channels/Channel;ZZ)V +HSPLkotlinx/coroutines/channels/ChannelCoroutine;->cancel(Ljava/util/concurrent/CancellationException;)V +HSPLkotlinx/coroutines/channels/ChannelCoroutine;->cancelInternal(Ljava/lang/Throwable;)V +HSPLkotlinx/coroutines/channels/ChannelCoroutine;->getChannel()Lkotlinx/coroutines/channels/Channel; +HSPLkotlinx/coroutines/channels/ChannelCoroutine;->getOnReceiveCatching()Lkotlinx/coroutines/selects/SelectClause1; +HSPLkotlinx/coroutines/channels/ChannelCoroutine;->get_channel()Lkotlinx/coroutines/channels/Channel; +HSPLkotlinx/coroutines/channels/ChannelCoroutine;->invokeOnClose(Lkotlin/jvm/functions/Function1;)V +HSPLkotlinx/coroutines/channels/ChannelCoroutine;->iterator()Lkotlinx/coroutines/channels/ChannelIterator; +HSPLkotlinx/coroutines/channels/ChannelCoroutine;->send(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/ChannelCoroutine;->trySend-JP2dKIU(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/channels/ChannelIterator; +Lkotlinx/coroutines/channels/ChannelKt; +HSPLkotlinx/coroutines/channels/ChannelKt;->Channel$default(ILkotlinx/coroutines/channels/BufferOverflow;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lkotlinx/coroutines/channels/Channel; +HSPLkotlinx/coroutines/channels/ChannelKt;->Channel(ILkotlinx/coroutines/channels/BufferOverflow;Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/channels/Channel; +Lkotlinx/coroutines/channels/ChannelResult; +HSPLkotlinx/coroutines/channels/ChannelResult;->()V +HSPLkotlinx/coroutines/channels/ChannelResult;->(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/channels/ChannelResult;->access$getFailed$cp()Lkotlinx/coroutines/channels/ChannelResult$Failed; +HSPLkotlinx/coroutines/channels/ChannelResult;->box-impl(Ljava/lang/Object;)Lkotlinx/coroutines/channels/ChannelResult; +HSPLkotlinx/coroutines/channels/ChannelResult;->constructor-impl(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/ChannelResult;->getOrNull-impl(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/ChannelResult;->isSuccess-impl(Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/channels/ChannelResult;->unbox-impl()Ljava/lang/Object; +Lkotlinx/coroutines/channels/ChannelResult$Closed; +HSPLkotlinx/coroutines/channels/ChannelResult$Closed;->(Ljava/lang/Throwable;)V +Lkotlinx/coroutines/channels/ChannelResult$Companion; +HSPLkotlinx/coroutines/channels/ChannelResult$Companion;->()V +HSPLkotlinx/coroutines/channels/ChannelResult$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/coroutines/channels/ChannelResult$Companion;->closed-JP2dKIU(Ljava/lang/Throwable;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/ChannelResult$Companion;->failure-PtdJZtk()Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/ChannelResult$Companion;->success-JP2dKIU(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/channels/ChannelResult$Failed; +HSPLkotlinx/coroutines/channels/ChannelResult$Failed;->()V +Lkotlinx/coroutines/channels/ChannelSegment; +HSPLkotlinx/coroutines/channels/ChannelSegment;->(JLkotlinx/coroutines/channels/ChannelSegment;Lkotlinx/coroutines/channels/BufferedChannel;I)V +HSPLkotlinx/coroutines/channels/ChannelSegment;->casState$kotlinx_coroutines_core(ILjava/lang/Object;Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/channels/ChannelSegment;->cleanElement$kotlinx_coroutines_core(I)V +HSPLkotlinx/coroutines/channels/ChannelSegment;->getChannel()Lkotlinx/coroutines/channels/BufferedChannel; +HSPLkotlinx/coroutines/channels/ChannelSegment;->getData()Ljava/util/concurrent/atomic/AtomicReferenceArray; +HSPLkotlinx/coroutines/channels/ChannelSegment;->getElement$kotlinx_coroutines_core(I)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/ChannelSegment;->getNumberOfSlots()I +HSPLkotlinx/coroutines/channels/ChannelSegment;->getState$kotlinx_coroutines_core(I)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/ChannelSegment;->onCancellation(ILjava/lang/Throwable;Lkotlin/coroutines/CoroutineContext;)V +HSPLkotlinx/coroutines/channels/ChannelSegment;->onCancelledRequest(IZ)V +HSPLkotlinx/coroutines/channels/ChannelSegment;->retrieveElement$kotlinx_coroutines_core(I)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/ChannelSegment;->setElementLazy(ILjava/lang/Object;)V +HSPLkotlinx/coroutines/channels/ChannelSegment;->setState$kotlinx_coroutines_core(ILjava/lang/Object;)V +HSPLkotlinx/coroutines/channels/ChannelSegment;->storeElement$kotlinx_coroutines_core(ILjava/lang/Object;)V +Lkotlinx/coroutines/channels/ChannelsKt; +HSPLkotlinx/coroutines/channels/ChannelsKt;->cancelConsumed(Lkotlinx/coroutines/channels/ReceiveChannel;Ljava/lang/Throwable;)V +Lkotlinx/coroutines/channels/ChannelsKt__Channels_commonKt; +HSPLkotlinx/coroutines/channels/ChannelsKt__Channels_commonKt;->cancelConsumed(Lkotlinx/coroutines/channels/ReceiveChannel;Ljava/lang/Throwable;)V +Lkotlinx/coroutines/channels/ConflatedBufferedChannel; +HSPLkotlinx/coroutines/channels/ConflatedBufferedChannel;->(ILkotlinx/coroutines/channels/BufferOverflow;Lkotlin/jvm/functions/Function1;)V +HSPLkotlinx/coroutines/channels/ConflatedBufferedChannel;->isConflatedDropOldest()Z +HSPLkotlinx/coroutines/channels/ConflatedBufferedChannel;->send$suspendImpl(Lkotlinx/coroutines/channels/ConflatedBufferedChannel;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/ConflatedBufferedChannel;->send(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/ConflatedBufferedChannel;->trySend-JP2dKIU(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/ConflatedBufferedChannel;->trySendDropOldest-JP2dKIU(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/ConflatedBufferedChannel;->trySendImpl-Mj0NB7M(Ljava/lang/Object;Z)Ljava/lang/Object; +Lkotlinx/coroutines/channels/ProduceKt; +HSPLkotlinx/coroutines/channels/ProduceKt;->awaitClose$default(Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/jvm/functions/Function0;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/ProduceKt;->awaitClose(Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/jvm/functions/Function0;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/ProduceKt;->produce$default(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;ILkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/channels/ReceiveChannel; +HSPLkotlinx/coroutines/channels/ProduceKt;->produce$default(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/channels/ReceiveChannel; +HSPLkotlinx/coroutines/channels/ProduceKt;->produce(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;ILkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/channels/ReceiveChannel; +HSPLkotlinx/coroutines/channels/ProduceKt;->produce(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/channels/ReceiveChannel; +Lkotlinx/coroutines/channels/ProduceKt$awaitClose$1; +HSPLkotlinx/coroutines/channels/ProduceKt$awaitClose$1;->(Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/channels/ProduceKt$awaitClose$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/channels/ProduceKt$awaitClose$2; +HSPLkotlinx/coroutines/channels/ProduceKt$awaitClose$2;->()V +HSPLkotlinx/coroutines/channels/ProduceKt$awaitClose$2;->()V +Lkotlinx/coroutines/channels/ProduceKt$awaitClose$4$1; +HSPLkotlinx/coroutines/channels/ProduceKt$awaitClose$4$1;->(Lkotlinx/coroutines/CancellableContinuation;)V +HSPLkotlinx/coroutines/channels/ProduceKt$awaitClose$4$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/channels/ProduceKt$awaitClose$4$1;->invoke(Ljava/lang/Throwable;)V +Lkotlinx/coroutines/channels/ProducerCoroutine; +HSPLkotlinx/coroutines/channels/ProducerCoroutine;->(Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/channels/Channel;)V +HSPLkotlinx/coroutines/channels/ProducerCoroutine;->getChannel()Lkotlinx/coroutines/channels/SendChannel; +HSPLkotlinx/coroutines/channels/ProducerCoroutine;->isActive()Z +HSPLkotlinx/coroutines/channels/ProducerCoroutine;->onCancelled(Ljava/lang/Throwable;Z)V +Lkotlinx/coroutines/channels/ProducerScope; +Lkotlinx/coroutines/channels/ReceiveCatching; +HSPLkotlinx/coroutines/channels/ReceiveCatching;->(Lkotlinx/coroutines/CancellableContinuationImpl;)V +HSPLkotlinx/coroutines/channels/ReceiveCatching;->invokeOnCancellation(Lkotlinx/coroutines/internal/Segment;I)V +Lkotlinx/coroutines/channels/ReceiveChannel; +Lkotlinx/coroutines/channels/SendChannel; +Lkotlinx/coroutines/channels/SendChannel$DefaultImpls; +HSPLkotlinx/coroutines/channels/SendChannel$DefaultImpls;->close$default(Lkotlinx/coroutines/channels/SendChannel;Ljava/lang/Throwable;ILjava/lang/Object;)Z +Lkotlinx/coroutines/channels/WaiterEB; +Lkotlinx/coroutines/flow/AbstractFlow; +HSPLkotlinx/coroutines/flow/AbstractFlow;->()V +HSPLkotlinx/coroutines/flow/AbstractFlow;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/AbstractFlow$collect$1; +HSPLkotlinx/coroutines/flow/AbstractFlow$collect$1;->(Lkotlinx/coroutines/flow/AbstractFlow;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/AbstractFlow$collect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/CallbackFlowBuilder; +HSPLkotlinx/coroutines/flow/CallbackFlowBuilder;->(Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;)V +HSPLkotlinx/coroutines/flow/CallbackFlowBuilder;->(Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/coroutines/flow/CallbackFlowBuilder;->collectTo(Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/CallbackFlowBuilder$collectTo$1; +HSPLkotlinx/coroutines/flow/CallbackFlowBuilder$collectTo$1;->(Lkotlinx/coroutines/flow/CallbackFlowBuilder;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/CallbackFlowBuilder$collectTo$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/CancellableFlow; +Lkotlinx/coroutines/flow/ChannelFlowBuilder; +HSPLkotlinx/coroutines/flow/ChannelFlowBuilder;->(Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;)V +HSPLkotlinx/coroutines/flow/ChannelFlowBuilder;->(Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/coroutines/flow/ChannelFlowBuilder;->collectTo$suspendImpl(Lkotlinx/coroutines/flow/ChannelFlowBuilder;Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/ChannelFlowBuilder;->collectTo(Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/DistinctFlowImpl; +HSPLkotlinx/coroutines/flow/DistinctFlowImpl;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)V +HSPLkotlinx/coroutines/flow/DistinctFlowImpl;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/DistinctFlowImpl$collect$2; +HSPLkotlinx/coroutines/flow/DistinctFlowImpl$collect$2;->(Lkotlinx/coroutines/flow/DistinctFlowImpl;Lkotlin/jvm/internal/Ref$ObjectRef;Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLkotlinx/coroutines/flow/DistinctFlowImpl$collect$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/DistinctFlowImpl$collect$2$emit$1; +HSPLkotlinx/coroutines/flow/DistinctFlowImpl$collect$2$emit$1;->(Lkotlinx/coroutines/flow/DistinctFlowImpl$collect$2;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/DistinctFlowImpl$collect$2$emit$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/EmptyFlow; +HSPLkotlinx/coroutines/flow/EmptyFlow;->()V +HSPLkotlinx/coroutines/flow/EmptyFlow;->()V +HSPLkotlinx/coroutines/flow/EmptyFlow;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/Flow; +Lkotlinx/coroutines/flow/FlowCollector; +Lkotlinx/coroutines/flow/FlowKt; +HSPLkotlinx/coroutines/flow/FlowKt;->asFlow(Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->asStateFlow(Lkotlinx/coroutines/flow/MutableStateFlow;)Lkotlinx/coroutines/flow/StateFlow; +HSPLkotlinx/coroutines/flow/FlowKt;->buffer$default(Lkotlinx/coroutines/flow/Flow;ILkotlinx/coroutines/channels/BufferOverflow;ILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->buffer(Lkotlinx/coroutines/flow/Flow;ILkotlinx/coroutines/channels/BufferOverflow;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->callbackFlow(Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->catch(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->catchImpl(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt;->channelFlow(Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->collect(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt;->collectLatest(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt;->combine(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->combine(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function4;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->combine(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function5;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->combine(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function6;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->conflate(Lkotlinx/coroutines/flow/Flow;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->debounce(Lkotlinx/coroutines/flow/Flow;J)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->distinctUntilChanged(Lkotlinx/coroutines/flow/Flow;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->distinctUntilChanged(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->dropWhile(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->emitAll(Lkotlinx/coroutines/flow/FlowCollector;Lkotlinx/coroutines/channels/ReceiveChannel;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt;->emitAll(Lkotlinx/coroutines/flow/FlowCollector;Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt;->emptyFlow()Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->ensureActive(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLkotlinx/coroutines/flow/FlowKt;->first(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt;->first(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt;->firstOrNull(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt;->flattenConcat(Lkotlinx/coroutines/flow/Flow;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->flow(Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->flowCombine(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->flowOf(Ljava/lang/Object;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->flowOn(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/CoroutineContext;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->launchIn(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/CoroutineScope;)Lkotlinx/coroutines/Job; +HSPLkotlinx/coroutines/flow/FlowKt;->mapLatest(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->merge(Ljava/lang/Iterable;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->merge([Lkotlinx/coroutines/flow/Flow;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->onEach(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->onStart(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->runningFold(Lkotlinx/coroutines/flow/Flow;Ljava/lang/Object;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->runningReduce(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->scan(Lkotlinx/coroutines/flow/Flow;Ljava/lang/Object;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->shareIn$default(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/flow/SharingStarted;IILjava/lang/Object;)Lkotlinx/coroutines/flow/SharedFlow; +HSPLkotlinx/coroutines/flow/FlowKt;->shareIn(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/flow/SharingStarted;I)Lkotlinx/coroutines/flow/SharedFlow; +HSPLkotlinx/coroutines/flow/FlowKt;->stateIn(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/flow/SharingStarted;Ljava/lang/Object;)Lkotlinx/coroutines/flow/StateFlow; +HSPLkotlinx/coroutines/flow/FlowKt;->transformLatest(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt;->withIndex(Lkotlinx/coroutines/flow/Flow;)Lkotlinx/coroutines/flow/Flow; +Lkotlinx/coroutines/flow/FlowKt__BuildersKt; +HSPLkotlinx/coroutines/flow/FlowKt__BuildersKt;->asFlow(Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__BuildersKt;->callbackFlow(Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__BuildersKt;->channelFlow(Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__BuildersKt;->emptyFlow()Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__BuildersKt;->flow(Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__BuildersKt;->flowOf(Ljava/lang/Object;)Lkotlinx/coroutines/flow/Flow; +Lkotlinx/coroutines/flow/FlowKt__BuildersKt$asFlow$$inlined$unsafeFlow$2; +HSPLkotlinx/coroutines/flow/FlowKt__BuildersKt$asFlow$$inlined$unsafeFlow$2;->(Lkotlin/jvm/functions/Function1;)V +HSPLkotlinx/coroutines/flow/FlowKt__BuildersKt$asFlow$$inlined$unsafeFlow$2;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__BuildersKt$asFlow$$inlined$unsafeFlow$2$1; +HSPLkotlinx/coroutines/flow/FlowKt__BuildersKt$asFlow$$inlined$unsafeFlow$2$1;->(Lkotlinx/coroutines/flow/FlowKt__BuildersKt$asFlow$$inlined$unsafeFlow$2;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__BuildersKt$asFlow$$inlined$unsafeFlow$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__BuildersKt$flowOf$$inlined$unsafeFlow$2; +HSPLkotlinx/coroutines/flow/FlowKt__BuildersKt$flowOf$$inlined$unsafeFlow$2;->(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/flow/FlowKt__BuildersKt$flowOf$$inlined$unsafeFlow$2;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ChannelsKt; +HSPLkotlinx/coroutines/flow/FlowKt__ChannelsKt;->access$emitAllImpl$FlowKt__ChannelsKt(Lkotlinx/coroutines/flow/FlowCollector;Lkotlinx/coroutines/channels/ReceiveChannel;ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ChannelsKt;->emitAll(Lkotlinx/coroutines/flow/FlowCollector;Lkotlinx/coroutines/channels/ReceiveChannel;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ChannelsKt;->emitAllImpl$FlowKt__ChannelsKt(Lkotlinx/coroutines/flow/FlowCollector;Lkotlinx/coroutines/channels/ReceiveChannel;ZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ChannelsKt$emitAllImpl$1; +HSPLkotlinx/coroutines/flow/FlowKt__ChannelsKt$emitAllImpl$1;->(Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__ChannelsKt$emitAllImpl$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__CollectKt; +HSPLkotlinx/coroutines/flow/FlowKt__CollectKt;->collect(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__CollectKt;->collectLatest(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__CollectKt;->emitAll(Lkotlinx/coroutines/flow/FlowCollector;Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__CollectKt;->launchIn(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/CoroutineScope;)Lkotlinx/coroutines/Job; +Lkotlinx/coroutines/flow/FlowKt__CollectKt$launchIn$1; +HSPLkotlinx/coroutines/flow/FlowKt__CollectKt$launchIn$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__CollectKt$launchIn$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/FlowKt__CollectKt$launchIn$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ContextKt; +HSPLkotlinx/coroutines/flow/FlowKt__ContextKt;->buffer$default(Lkotlinx/coroutines/flow/Flow;ILkotlinx/coroutines/channels/BufferOverflow;ILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__ContextKt;->buffer(Lkotlinx/coroutines/flow/Flow;ILkotlinx/coroutines/channels/BufferOverflow;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__ContextKt;->checkFlowContext$FlowKt__ContextKt(Lkotlin/coroutines/CoroutineContext;)V +HSPLkotlinx/coroutines/flow/FlowKt__ContextKt;->conflate(Lkotlinx/coroutines/flow/Flow;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__ContextKt;->flowOn(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/CoroutineContext;)Lkotlinx/coroutines/flow/Flow; +Lkotlinx/coroutines/flow/FlowKt__DelayKt; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt;->debounce(Lkotlinx/coroutines/flow/Flow;J)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt;->debounceInternal$FlowKt__DelayKt(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/flow/Flow; +Lkotlinx/coroutines/flow/FlowKt__DelayKt$debounce$2; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounce$2;->(J)V +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounce$2;->invoke(Ljava/lang/Object;)Ljava/lang/Long; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounce$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1;->(Lkotlin/jvm/functions/Function1;Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$3$1; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$3$1;->(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/jvm/internal/Ref$ObjectRef;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$3$1;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$3$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$3$1;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$3$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$3$2; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$3$2;->(Lkotlin/jvm/internal/Ref$ObjectRef;Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$3$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$3$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$3$2;->invoke-WpGqRn0(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$3$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$values$1; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$values$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$values$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$values$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$values$1$1; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$values$1$1;->(Lkotlinx/coroutines/channels/ProducerScope;)V +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$values$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$values$1$1$emit$1; +HSPLkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$values$1$1$emit$1;->(Lkotlinx/coroutines/flow/FlowKt__DelayKt$debounceInternal$1$values$1$1;Lkotlin/coroutines/Continuation;)V +Lkotlinx/coroutines/flow/FlowKt__DistinctKt; +HSPLkotlinx/coroutines/flow/FlowKt__DistinctKt;->()V +HSPLkotlinx/coroutines/flow/FlowKt__DistinctKt;->distinctUntilChanged(Lkotlinx/coroutines/flow/Flow;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__DistinctKt;->distinctUntilChanged(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__DistinctKt;->distinctUntilChangedBy$FlowKt__DistinctKt(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +Lkotlinx/coroutines/flow/FlowKt__DistinctKt$defaultAreEquivalent$1; +HSPLkotlinx/coroutines/flow/FlowKt__DistinctKt$defaultAreEquivalent$1;->()V +HSPLkotlinx/coroutines/flow/FlowKt__DistinctKt$defaultAreEquivalent$1;->()V +HSPLkotlinx/coroutines/flow/FlowKt__DistinctKt$defaultAreEquivalent$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Boolean; +HSPLkotlinx/coroutines/flow/FlowKt__DistinctKt$defaultAreEquivalent$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__DistinctKt$defaultKeySelector$1; +HSPLkotlinx/coroutines/flow/FlowKt__DistinctKt$defaultKeySelector$1;->()V +HSPLkotlinx/coroutines/flow/FlowKt__DistinctKt$defaultKeySelector$1;->()V +HSPLkotlinx/coroutines/flow/FlowKt__DistinctKt$defaultKeySelector$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__EmittersKt; +HSPLkotlinx/coroutines/flow/FlowKt__EmittersKt;->ensureActive(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLkotlinx/coroutines/flow/FlowKt__EmittersKt;->onStart(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +Lkotlinx/coroutines/flow/FlowKt__EmittersKt$onStart$$inlined$unsafeFlow$1; +HSPLkotlinx/coroutines/flow/FlowKt__EmittersKt$onStart$$inlined$unsafeFlow$1;->(Lkotlin/jvm/functions/Function2;Lkotlinx/coroutines/flow/Flow;)V +HSPLkotlinx/coroutines/flow/FlowKt__EmittersKt$onStart$$inlined$unsafeFlow$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__EmittersKt$onStart$$inlined$unsafeFlow$1$1; +HSPLkotlinx/coroutines/flow/FlowKt__EmittersKt$onStart$$inlined$unsafeFlow$1$1;->(Lkotlinx/coroutines/flow/FlowKt__EmittersKt$onStart$$inlined$unsafeFlow$1;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__EmittersKt$onStart$$inlined$unsafeFlow$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ErrorsKt; +HSPLkotlinx/coroutines/flow/FlowKt__ErrorsKt;->catch(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__ErrorsKt;->catchImpl(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ErrorsKt$catch$$inlined$unsafeFlow$1; +HSPLkotlinx/coroutines/flow/FlowKt__ErrorsKt$catch$$inlined$unsafeFlow$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)V +HSPLkotlinx/coroutines/flow/FlowKt__ErrorsKt$catch$$inlined$unsafeFlow$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ErrorsKt$catch$$inlined$unsafeFlow$1$1; +HSPLkotlinx/coroutines/flow/FlowKt__ErrorsKt$catch$$inlined$unsafeFlow$1$1;->(Lkotlinx/coroutines/flow/FlowKt__ErrorsKt$catch$$inlined$unsafeFlow$1;Lkotlin/coroutines/Continuation;)V +Lkotlinx/coroutines/flow/FlowKt__ErrorsKt$catchImpl$1; +HSPLkotlinx/coroutines/flow/FlowKt__ErrorsKt$catchImpl$1;->(Lkotlin/coroutines/Continuation;)V +Lkotlinx/coroutines/flow/FlowKt__ErrorsKt$catchImpl$2; +HSPLkotlinx/coroutines/flow/FlowKt__ErrorsKt$catchImpl$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/jvm/internal/Ref$ObjectRef;)V +HSPLkotlinx/coroutines/flow/FlowKt__ErrorsKt$catchImpl$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ErrorsKt$catchImpl$2$emit$1; +HSPLkotlinx/coroutines/flow/FlowKt__ErrorsKt$catchImpl$2$emit$1;->(Lkotlinx/coroutines/flow/FlowKt__ErrorsKt$catchImpl$2;Lkotlin/coroutines/Continuation;)V +Lkotlinx/coroutines/flow/FlowKt__LimitKt; +HSPLkotlinx/coroutines/flow/FlowKt__LimitKt;->dropWhile(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +Lkotlinx/coroutines/flow/FlowKt__LimitKt$dropWhile$$inlined$unsafeFlow$1; +HSPLkotlinx/coroutines/flow/FlowKt__LimitKt$dropWhile$$inlined$unsafeFlow$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;)V +HSPLkotlinx/coroutines/flow/FlowKt__LimitKt$dropWhile$$inlined$unsafeFlow$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__LimitKt$dropWhile$1$1; +HSPLkotlinx/coroutines/flow/FlowKt__LimitKt$dropWhile$1$1;->(Lkotlin/jvm/internal/Ref$BooleanRef;Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/jvm/functions/Function2;)V +HSPLkotlinx/coroutines/flow/FlowKt__LimitKt$dropWhile$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__LimitKt$dropWhile$1$1$emit$1; +HSPLkotlinx/coroutines/flow/FlowKt__LimitKt$dropWhile$1$1$emit$1;->(Lkotlinx/coroutines/flow/FlowKt__LimitKt$dropWhile$1$1;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__LimitKt$dropWhile$1$1$emit$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__MergeKt; +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt;->()V +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt;->flattenConcat(Lkotlinx/coroutines/flow/Flow;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt;->mapLatest(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt;->merge(Ljava/lang/Iterable;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt;->merge([Lkotlinx/coroutines/flow/Flow;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt;->transformLatest(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow; +Lkotlinx/coroutines/flow/FlowKt__MergeKt$flattenConcat$$inlined$unsafeFlow$1; +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt$flattenConcat$$inlined$unsafeFlow$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt$flattenConcat$$inlined$unsafeFlow$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__MergeKt$flattenConcat$1$1; +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt$flattenConcat$1$1;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt$flattenConcat$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt$flattenConcat$1$1;->emit(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__MergeKt$flattenConcat$1$1$emit$1; +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt$flattenConcat$1$1$emit$1;->(Lkotlinx/coroutines/flow/FlowKt__MergeKt$flattenConcat$1$1;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt$flattenConcat$1$1$emit$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__MergeKt$mapLatest$1; +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt$mapLatest$1;->(Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt$mapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt$mapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__MergeKt$mapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ReduceKt; +HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt;->first(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt;->first(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt;->firstOrNull(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ReduceKt$first$$inlined$collectWhile$1; +HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$first$$inlined$collectWhile$1;->(Lkotlin/jvm/internal/Ref$ObjectRef;)V +HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$first$$inlined$collectWhile$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ReduceKt$first$$inlined$collectWhile$2; +HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$first$$inlined$collectWhile$2;->(Lkotlin/jvm/functions/Function2;Lkotlin/jvm/internal/Ref$ObjectRef;)V +HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$first$$inlined$collectWhile$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ReduceKt$first$$inlined$collectWhile$2$1; +HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$first$$inlined$collectWhile$2$1;->(Lkotlinx/coroutines/flow/FlowKt__ReduceKt$first$$inlined$collectWhile$2;Lkotlin/coroutines/Continuation;)V +Lkotlinx/coroutines/flow/FlowKt__ReduceKt$first$1; +HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$first$1;->(Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$first$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ReduceKt$first$3; +HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$first$3;->(Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$first$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ReduceKt$firstOrNull$$inlined$collectWhile$1; +HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$firstOrNull$$inlined$collectWhile$1;->(Lkotlin/jvm/internal/Ref$ObjectRef;)V +HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$firstOrNull$$inlined$collectWhile$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ReduceKt$firstOrNull$1; +HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$firstOrNull$1;->(Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$firstOrNull$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ShareKt; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt;->asStateFlow(Lkotlinx/coroutines/flow/MutableStateFlow;)Lkotlinx/coroutines/flow/StateFlow; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt;->configureSharing$FlowKt__ShareKt(Lkotlinx/coroutines/flow/Flow;I)Lkotlinx/coroutines/flow/SharingConfig; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt;->launchSharing$FlowKt__ShareKt(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/MutableSharedFlow;Lkotlinx/coroutines/flow/SharingStarted;Ljava/lang/Object;)Lkotlinx/coroutines/Job; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt;->shareIn$default(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/flow/SharingStarted;IILjava/lang/Object;)Lkotlinx/coroutines/flow/SharedFlow; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt;->shareIn(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/flow/SharingStarted;I)Lkotlinx/coroutines/flow/SharedFlow; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt;->stateIn(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/flow/SharingStarted;Ljava/lang/Object;)Lkotlinx/coroutines/flow/StateFlow; +Lkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1;->(Lkotlinx/coroutines/flow/SharingStarted;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/MutableSharedFlow;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$1; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$1;->(Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$1;->invoke(ILkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$2; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$2;->(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/MutableSharedFlow;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$2;->invoke(Lkotlinx/coroutines/flow/SharingCommand;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$2$WhenMappings; +HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$2$WhenMappings;->()V +Lkotlinx/coroutines/flow/FlowKt__TransformKt; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt;->onEach(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt;->runningFold(Lkotlinx/coroutines/flow/Flow;Ljava/lang/Object;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt;->runningReduce(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt;->scan(Lkotlinx/coroutines/flow/Flow;Ljava/lang/Object;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt;->withIndex(Lkotlinx/coroutines/flow/Flow;)Lkotlinx/coroutines/flow/Flow; +Lkotlinx/coroutines/flow/FlowKt__TransformKt$onEach$$inlined$unsafeTransform$1; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$onEach$$inlined$unsafeTransform$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;)V +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$onEach$$inlined$unsafeTransform$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__TransformKt$onEach$$inlined$unsafeTransform$1$2; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$onEach$$inlined$unsafeTransform$1$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/jvm/functions/Function2;)V +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$onEach$$inlined$unsafeTransform$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__TransformKt$onEach$$inlined$unsafeTransform$1$2$1; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$onEach$$inlined$unsafeTransform$1$2$1;->(Lkotlinx/coroutines/flow/FlowKt__TransformKt$onEach$$inlined$unsafeTransform$1$2;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$onEach$$inlined$unsafeTransform$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__TransformKt$runningFold$$inlined$unsafeFlow$1; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$runningFold$$inlined$unsafeFlow$1;->(Ljava/lang/Object;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)V +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$runningFold$$inlined$unsafeFlow$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__TransformKt$runningFold$$inlined$unsafeFlow$1$1; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$runningFold$$inlined$unsafeFlow$1$1;->(Lkotlinx/coroutines/flow/FlowKt__TransformKt$runningFold$$inlined$unsafeFlow$1;Lkotlin/coroutines/Continuation;)V +Lkotlinx/coroutines/flow/FlowKt__TransformKt$runningFold$1$1; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$runningFold$1$1;->(Lkotlin/jvm/internal/Ref$ObjectRef;Lkotlin/jvm/functions/Function3;Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$runningFold$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__TransformKt$runningFold$1$1$emit$1; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$runningFold$1$1$emit$1;->(Lkotlinx/coroutines/flow/FlowKt__TransformKt$runningFold$1$1;Lkotlin/coroutines/Continuation;)V +Lkotlinx/coroutines/flow/FlowKt__TransformKt$runningReduce$$inlined$unsafeFlow$1; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$runningReduce$$inlined$unsafeFlow$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)V +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$runningReduce$$inlined$unsafeFlow$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__TransformKt$runningReduce$1$1; +PLkotlinx/coroutines/flow/FlowKt__TransformKt$runningReduce$1$1;->(Lkotlin/jvm/internal/Ref$ObjectRef;Lkotlin/jvm/functions/Function3;Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$runningReduce$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__TransformKt$runningReduce$1$1$emit$1; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$runningReduce$1$1$emit$1;->(Lkotlinx/coroutines/flow/FlowKt__TransformKt$runningReduce$1$1;Lkotlin/coroutines/Continuation;)V +Lkotlinx/coroutines/flow/FlowKt__TransformKt$withIndex$$inlined$unsafeFlow$1; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$withIndex$$inlined$unsafeFlow$1;->(Lkotlinx/coroutines/flow/Flow;)V +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$withIndex$$inlined$unsafeFlow$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__TransformKt$withIndex$1$1; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$withIndex$1$1;->(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/jvm/internal/Ref$IntRef;)V +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$withIndex$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__TransformKt$withIndex$1$1$emit$1; +HSPLkotlinx/coroutines/flow/FlowKt__TransformKt$withIndex$1$1$emit$1;->(Lkotlinx/coroutines/flow/FlowKt__TransformKt$withIndex$1$1;Lkotlin/coroutines/Continuation;)V +Lkotlinx/coroutines/flow/FlowKt__ZipKt; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt;->access$nullArrayFactory()Lkotlin/jvm/functions/Function0; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt;->combine(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt;->combine(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function4;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt;->combine(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function5;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt;->combine(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function6;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt;->flowCombine(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt;->nullArrayFactory$FlowKt__ZipKt()Lkotlin/jvm/functions/Function0; +Lkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$1; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$1;->([Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function4;)V +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$1$2; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$1$2;->(Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function4;)V +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$1$2;->invoke(Lkotlinx/coroutines/flow/FlowCollector;[Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$1$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$2; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$2;->([Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function5;)V +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$2;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$2$2; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$2$2;->(Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function5;)V +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$2$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$2$2;->invoke(Lkotlinx/coroutines/flow/FlowCollector;[Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$2$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$3; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$3;->([Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function6;)V +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$3;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$3$2; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$3$2;->(Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function6;)V +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$3$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$3$2;->invoke(Lkotlinx/coroutines/flow/FlowCollector;[Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$combineUnsafe$FlowKt__ZipKt$3$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$unsafeFlow$1; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$unsafeFlow$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)V +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$$inlined$unsafeFlow$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ZipKt$combine$1$1; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$1$1;->(Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$1$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;[Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$combine$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/FlowKt__ZipKt$nullArrayFactory$1; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$nullArrayFactory$1;->()V +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$nullArrayFactory$1;->()V +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$nullArrayFactory$1;->invoke()Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/FlowKt__ZipKt$nullArrayFactory$1;->invoke()Ljava/lang/Void; +Lkotlinx/coroutines/flow/MutableSharedFlow; +Lkotlinx/coroutines/flow/MutableStateFlow; +Lkotlinx/coroutines/flow/ReadonlySharedFlow; +HSPLkotlinx/coroutines/flow/ReadonlySharedFlow;->(Lkotlinx/coroutines/flow/SharedFlow;Lkotlinx/coroutines/Job;)V +HSPLkotlinx/coroutines/flow/ReadonlySharedFlow;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/ReadonlyStateFlow; +HSPLkotlinx/coroutines/flow/ReadonlyStateFlow;->(Lkotlinx/coroutines/flow/StateFlow;Lkotlinx/coroutines/Job;)V +HSPLkotlinx/coroutines/flow/ReadonlyStateFlow;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/ReadonlyStateFlow;->getValue()Ljava/lang/Object; +Lkotlinx/coroutines/flow/SafeFlow; +HSPLkotlinx/coroutines/flow/SafeFlow;->(Lkotlin/jvm/functions/Function2;)V +HSPLkotlinx/coroutines/flow/SafeFlow;->collectSafely(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/SharedFlow; +Lkotlinx/coroutines/flow/SharedFlowImpl; +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->(IILkotlinx/coroutines/channels/BufferOverflow;)V +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->access$tryPeekLocked(Lkotlinx/coroutines/flow/SharedFlowImpl;Lkotlinx/coroutines/flow/SharedFlowSlot;)J +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->awaitValue(Lkotlinx/coroutines/flow/SharedFlowSlot;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->cleanupTailLocked()V +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->collect$suspendImpl(Lkotlinx/coroutines/flow/SharedFlowImpl;Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->createSlot()Lkotlinx/coroutines/flow/SharedFlowSlot; +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->createSlot()Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot; +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->createSlotArray(I)[Lkotlinx/coroutines/flow/SharedFlowSlot; +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->createSlotArray(I)[Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot; +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->dropOldestLocked()V +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->emit$suspendImpl(Lkotlinx/coroutines/flow/SharedFlowImpl;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->enqueueLocked(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->findSlotsToResumeLocked([Lkotlin/coroutines/Continuation;)[Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->getBufferEndIndex()J +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->getHead()J +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->getLastReplayedLocked()Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->getPeekedValueLockedAt(J)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->getQueueEndIndex()J +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->getReplaySize()I +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->getTotalSize()I +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->growBuffer([Ljava/lang/Object;II)[Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->tryEmit(Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->tryEmitLocked(Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->tryEmitNoCollectorsLocked(Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->tryPeekLocked(Lkotlinx/coroutines/flow/SharedFlowSlot;)J +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->tryTakeValue(Lkotlinx/coroutines/flow/SharedFlowSlot;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->updateBufferLocked(JJJJ)V +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->updateCollectorIndexLocked$kotlinx_coroutines_core(J)[Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/SharedFlowImpl;->updateNewCollectorIndexLocked$kotlinx_coroutines_core()J +Lkotlinx/coroutines/flow/SharedFlowImpl$Emitter; +Lkotlinx/coroutines/flow/SharedFlowImpl$collect$1; +HSPLkotlinx/coroutines/flow/SharedFlowImpl$collect$1;->(Lkotlinx/coroutines/flow/SharedFlowImpl;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/SharedFlowImpl$collect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/SharedFlowKt; +HSPLkotlinx/coroutines/flow/SharedFlowKt;->()V +HSPLkotlinx/coroutines/flow/SharedFlowKt;->MutableSharedFlow$default(IILkotlinx/coroutines/channels/BufferOverflow;ILjava/lang/Object;)Lkotlinx/coroutines/flow/MutableSharedFlow; +HSPLkotlinx/coroutines/flow/SharedFlowKt;->MutableSharedFlow(IILkotlinx/coroutines/channels/BufferOverflow;)Lkotlinx/coroutines/flow/MutableSharedFlow; +HSPLkotlinx/coroutines/flow/SharedFlowKt;->access$getBufferAt([Ljava/lang/Object;J)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/SharedFlowKt;->access$setBufferAt([Ljava/lang/Object;JLjava/lang/Object;)V +HSPLkotlinx/coroutines/flow/SharedFlowKt;->getBufferAt([Ljava/lang/Object;J)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/SharedFlowKt;->setBufferAt([Ljava/lang/Object;JLjava/lang/Object;)V +Lkotlinx/coroutines/flow/SharedFlowSlot; +HSPLkotlinx/coroutines/flow/SharedFlowSlot;->()V +HSPLkotlinx/coroutines/flow/SharedFlowSlot;->allocateLocked(Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/flow/SharedFlowSlot;->allocateLocked(Lkotlinx/coroutines/flow/SharedFlowImpl;)Z +HSPLkotlinx/coroutines/flow/SharedFlowSlot;->freeLocked(Ljava/lang/Object;)[Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/SharedFlowSlot;->freeLocked(Lkotlinx/coroutines/flow/SharedFlowImpl;)[Lkotlin/coroutines/Continuation; +Lkotlinx/coroutines/flow/SharingCommand; +HSPLkotlinx/coroutines/flow/SharingCommand;->$values()[Lkotlinx/coroutines/flow/SharingCommand; +HSPLkotlinx/coroutines/flow/SharingCommand;->()V +HSPLkotlinx/coroutines/flow/SharingCommand;->(Ljava/lang/String;I)V +HSPLkotlinx/coroutines/flow/SharingCommand;->values()[Lkotlinx/coroutines/flow/SharingCommand; +Lkotlinx/coroutines/flow/SharingConfig; +HSPLkotlinx/coroutines/flow/SharingConfig;->(Lkotlinx/coroutines/flow/Flow;ILkotlinx/coroutines/channels/BufferOverflow;Lkotlin/coroutines/CoroutineContext;)V +Lkotlinx/coroutines/flow/SharingStarted; +HSPLkotlinx/coroutines/flow/SharingStarted;->()V +Lkotlinx/coroutines/flow/SharingStarted$Companion; +HSPLkotlinx/coroutines/flow/SharingStarted$Companion;->()V +HSPLkotlinx/coroutines/flow/SharingStarted$Companion;->()V +HSPLkotlinx/coroutines/flow/SharingStarted$Companion;->WhileSubscribed$default(Lkotlinx/coroutines/flow/SharingStarted$Companion;JJILjava/lang/Object;)Lkotlinx/coroutines/flow/SharingStarted; +HSPLkotlinx/coroutines/flow/SharingStarted$Companion;->WhileSubscribed(JJ)Lkotlinx/coroutines/flow/SharingStarted; +HSPLkotlinx/coroutines/flow/SharingStarted$Companion;->getEagerly()Lkotlinx/coroutines/flow/SharingStarted; +HSPLkotlinx/coroutines/flow/SharingStarted$Companion;->getLazily()Lkotlinx/coroutines/flow/SharingStarted; +Lkotlinx/coroutines/flow/StartedEagerly; +HSPLkotlinx/coroutines/flow/StartedEagerly;->()V +Lkotlinx/coroutines/flow/StartedLazily; +HSPLkotlinx/coroutines/flow/StartedLazily;->()V +Lkotlinx/coroutines/flow/StartedWhileSubscribed; +HSPLkotlinx/coroutines/flow/StartedWhileSubscribed;->(JJ)V +HSPLkotlinx/coroutines/flow/StartedWhileSubscribed;->access$getReplayExpiration$p(Lkotlinx/coroutines/flow/StartedWhileSubscribed;)J +HSPLkotlinx/coroutines/flow/StartedWhileSubscribed;->access$getStopTimeout$p(Lkotlinx/coroutines/flow/StartedWhileSubscribed;)J +HSPLkotlinx/coroutines/flow/StartedWhileSubscribed;->command(Lkotlinx/coroutines/flow/StateFlow;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/StartedWhileSubscribed;->equals(Ljava/lang/Object;)Z +Lkotlinx/coroutines/flow/StartedWhileSubscribed$command$1; +HSPLkotlinx/coroutines/flow/StartedWhileSubscribed$command$1;->(Lkotlinx/coroutines/flow/StartedWhileSubscribed;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/StartedWhileSubscribed$command$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/StartedWhileSubscribed$command$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;ILkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/StartedWhileSubscribed$command$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/StartedWhileSubscribed$command$2; +HSPLkotlinx/coroutines/flow/StartedWhileSubscribed$command$2;->(Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/StartedWhileSubscribed$command$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/StartedWhileSubscribed$command$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/StartedWhileSubscribed$command$2;->invoke(Lkotlinx/coroutines/flow/SharingCommand;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/StartedWhileSubscribed$command$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/StateFlow; +Lkotlinx/coroutines/flow/StateFlowImpl; +HSPLkotlinx/coroutines/flow/StateFlowImpl;->()V +HSPLkotlinx/coroutines/flow/StateFlowImpl;->(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/flow/StateFlowImpl;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/StateFlowImpl;->compareAndSet(Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/flow/StateFlowImpl;->createSlot()Lkotlinx/coroutines/flow/StateFlowSlot; +HSPLkotlinx/coroutines/flow/StateFlowImpl;->createSlot()Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot; +HSPLkotlinx/coroutines/flow/StateFlowImpl;->createSlotArray(I)[Lkotlinx/coroutines/flow/StateFlowSlot; +HSPLkotlinx/coroutines/flow/StateFlowImpl;->createSlotArray(I)[Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot; +HSPLkotlinx/coroutines/flow/StateFlowImpl;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/StateFlowImpl;->getValue()Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/StateFlowImpl;->get_state$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/flow/StateFlowImpl;->setValue(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/flow/StateFlowImpl;->updateState(Ljava/lang/Object;Ljava/lang/Object;)Z +Lkotlinx/coroutines/flow/StateFlowImpl$collect$1; +HSPLkotlinx/coroutines/flow/StateFlowImpl$collect$1;->(Lkotlinx/coroutines/flow/StateFlowImpl;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/StateFlowImpl$collect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/StateFlowKt; +HSPLkotlinx/coroutines/flow/StateFlowKt;->()V +HSPLkotlinx/coroutines/flow/StateFlowKt;->MutableStateFlow(Ljava/lang/Object;)Lkotlinx/coroutines/flow/MutableStateFlow; +HSPLkotlinx/coroutines/flow/StateFlowKt;->access$getNONE$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/flow/StateFlowKt;->access$getPENDING$p()Lkotlinx/coroutines/internal/Symbol; +Lkotlinx/coroutines/flow/StateFlowSlot; +HSPLkotlinx/coroutines/flow/StateFlowSlot;->()V +HSPLkotlinx/coroutines/flow/StateFlowSlot;->()V +HSPLkotlinx/coroutines/flow/StateFlowSlot;->access$get_state$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/flow/StateFlowSlot;->allocateLocked(Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/flow/StateFlowSlot;->allocateLocked(Lkotlinx/coroutines/flow/StateFlowImpl;)Z +HSPLkotlinx/coroutines/flow/StateFlowSlot;->awaitPending(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/StateFlowSlot;->freeLocked(Ljava/lang/Object;)[Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/StateFlowSlot;->freeLocked(Lkotlinx/coroutines/flow/StateFlowImpl;)[Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/StateFlowSlot;->get_state$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/flow/StateFlowSlot;->makePending()V +HSPLkotlinx/coroutines/flow/StateFlowSlot;->takePending()Z +Lkotlinx/coroutines/flow/SubscribedFlowCollector; +Lkotlinx/coroutines/flow/ThrowingCollector; +Lkotlinx/coroutines/flow/internal/AbortFlowException; +HSPLkotlinx/coroutines/flow/internal/AbortFlowException;->(Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLkotlinx/coroutines/flow/internal/AbortFlowException;->fillInStackTrace()Ljava/lang/Throwable; +Lkotlinx/coroutines/flow/internal/AbstractSharedFlow; +HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlow;->()V +HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlow;->access$getNCollectors(Lkotlinx/coroutines/flow/internal/AbstractSharedFlow;)I +HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlow;->access$getSlots(Lkotlinx/coroutines/flow/internal/AbstractSharedFlow;)[Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot; +HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlow;->allocateSlot()Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot; +HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlow;->freeSlot(Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot;)V +HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlow;->getNCollectors()I +HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlow;->getSlots()[Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot; +HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlow;->getSubscriptionCount()Lkotlinx/coroutines/flow/StateFlow; +Lkotlinx/coroutines/flow/internal/AbstractSharedFlowKt; +HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlowKt;->()V +Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot; +HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot;->()V +Lkotlinx/coroutines/flow/internal/ChannelFlow; +HSPLkotlinx/coroutines/flow/internal/ChannelFlow;->(Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;)V +HSPLkotlinx/coroutines/flow/internal/ChannelFlow;->collect$suspendImpl(Lkotlinx/coroutines/flow/internal/ChannelFlow;Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/ChannelFlow;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/ChannelFlow;->dropChannelOperators()Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/internal/ChannelFlow;->fuse(Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;)Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/internal/ChannelFlow;->getCollectToFun$kotlinx_coroutines_core()Lkotlin/jvm/functions/Function2; +HSPLkotlinx/coroutines/flow/internal/ChannelFlow;->getProduceCapacity$kotlinx_coroutines_core()I +HSPLkotlinx/coroutines/flow/internal/ChannelFlow;->produceImpl(Lkotlinx/coroutines/CoroutineScope;)Lkotlinx/coroutines/channels/ReceiveChannel; +Lkotlinx/coroutines/flow/internal/ChannelFlow$collect$2; +HSPLkotlinx/coroutines/flow/internal/ChannelFlow$collect$2;->(Lkotlinx/coroutines/flow/FlowCollector;Lkotlinx/coroutines/flow/internal/ChannelFlow;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/internal/ChannelFlow$collect$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/internal/ChannelFlow$collect$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/ChannelFlow$collect$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/ChannelFlow$collect$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/ChannelFlow$collectToFun$1; +HSPLkotlinx/coroutines/flow/internal/ChannelFlow$collectToFun$1;->(Lkotlinx/coroutines/flow/internal/ChannelFlow;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/internal/ChannelFlow$collectToFun$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/internal/ChannelFlow$collectToFun$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/ChannelFlowOperator; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowOperator;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;)V +HSPLkotlinx/coroutines/flow/internal/ChannelFlowOperator;->collect$suspendImpl(Lkotlinx/coroutines/flow/internal/ChannelFlowOperator;Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowOperator;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowOperator;->collectTo$suspendImpl(Lkotlinx/coroutines/flow/internal/ChannelFlowOperator;Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowOperator;->collectTo(Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/ChannelFlowOperatorImpl; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowOperatorImpl;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;)V +HSPLkotlinx/coroutines/flow/internal/ChannelFlowOperatorImpl;->(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/coroutines/flow/internal/ChannelFlowOperatorImpl;->dropChannelOperators()Lkotlinx/coroutines/flow/Flow; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowOperatorImpl;->flowCollect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest;->(Lkotlin/jvm/functions/Function3;Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;)V +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest;->(Lkotlin/jvm/functions/Function3;Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest;->access$getTransform$p(Lkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest;)Lkotlin/jvm/functions/Function3; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest;->create(Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;)Lkotlinx/coroutines/flow/internal/ChannelFlow; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest;->flowCollect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3;->(Lkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest;Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1;->(Lkotlin/jvm/internal/Ref$ObjectRef;Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest;Lkotlinx/coroutines/flow/FlowCollector;)V +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1$2; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1$2;->(Lkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest;Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1$emit$1; +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1$emit$1;->(Lkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1$emit$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/ChannelLimitedFlowMerge; +HSPLkotlinx/coroutines/flow/internal/ChannelLimitedFlowMerge;->(Ljava/lang/Iterable;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;)V +HSPLkotlinx/coroutines/flow/internal/ChannelLimitedFlowMerge;->(Ljava/lang/Iterable;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/coroutines/flow/internal/ChannelLimitedFlowMerge;->collectTo(Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/ChannelLimitedFlowMerge;->produceImpl(Lkotlinx/coroutines/CoroutineScope;)Lkotlinx/coroutines/channels/ReceiveChannel; +Lkotlinx/coroutines/flow/internal/ChannelLimitedFlowMerge$collectTo$2$1; +HSPLkotlinx/coroutines/flow/internal/ChannelLimitedFlowMerge$collectTo$2$1;->(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/internal/SendingCollector;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/internal/ChannelLimitedFlowMerge$collectTo$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/internal/ChannelLimitedFlowMerge$collectTo$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/ChildCancelledException; +HSPLkotlinx/coroutines/flow/internal/ChildCancelledException;->()V +HSPLkotlinx/coroutines/flow/internal/ChildCancelledException;->fillInStackTrace()Ljava/lang/Throwable; +Lkotlinx/coroutines/flow/internal/CombineKt; +HSPLkotlinx/coroutines/flow/internal/CombineKt;->combineInternal(Lkotlinx/coroutines/flow/FlowCollector;[Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2; +HSPLkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2;->([Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2$1; +HSPLkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2$1;->([Lkotlinx/coroutines/flow/Flow;ILjava/util/concurrent/atomic/AtomicInteger;Lkotlinx/coroutines/channels/Channel;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2$1$1; +HSPLkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2$1$1;->(Lkotlinx/coroutines/channels/Channel;I)V +HSPLkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2$1$1$emit$1; +HSPLkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2$1$1$emit$1;->(Lkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2$1$1;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2$1$1$emit$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/DownstreamExceptionContext; +HSPLkotlinx/coroutines/flow/internal/DownstreamExceptionContext;->(Ljava/lang/Throwable;Lkotlin/coroutines/CoroutineContext;)V +Lkotlinx/coroutines/flow/internal/FlowCoroutine; +HSPLkotlinx/coroutines/flow/internal/FlowCoroutine;->(Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/internal/FlowCoroutine;->childCancelled(Ljava/lang/Throwable;)Z +Lkotlinx/coroutines/flow/internal/FlowCoroutineKt; +HSPLkotlinx/coroutines/flow/internal/FlowCoroutineKt;->flowScope(Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/FlowCoroutineKt;->scopedFlow(Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow; +Lkotlinx/coroutines/flow/internal/FlowCoroutineKt$scopedFlow$$inlined$unsafeFlow$1; +HSPLkotlinx/coroutines/flow/internal/FlowCoroutineKt$scopedFlow$$inlined$unsafeFlow$1;->(Lkotlin/jvm/functions/Function3;)V +HSPLkotlinx/coroutines/flow/internal/FlowCoroutineKt$scopedFlow$$inlined$unsafeFlow$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/FlowCoroutineKt$scopedFlow$1$1; +HSPLkotlinx/coroutines/flow/internal/FlowCoroutineKt$scopedFlow$1$1;->(Lkotlin/jvm/functions/Function3;Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/flow/internal/FlowCoroutineKt$scopedFlow$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/flow/internal/FlowCoroutineKt$scopedFlow$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/FlowCoroutineKt$scopedFlow$1$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/FlowCoroutineKt$scopedFlow$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/FlowExceptions_commonKt; +HSPLkotlinx/coroutines/flow/internal/FlowExceptions_commonKt;->checkOwnership(Lkotlinx/coroutines/flow/internal/AbortFlowException;Lkotlinx/coroutines/flow/FlowCollector;)V +Lkotlinx/coroutines/flow/internal/FusibleFlow; +Lkotlinx/coroutines/flow/internal/FusibleFlow$DefaultImpls; +HSPLkotlinx/coroutines/flow/internal/FusibleFlow$DefaultImpls;->fuse$default(Lkotlinx/coroutines/flow/internal/FusibleFlow;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;ILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow; +Lkotlinx/coroutines/flow/internal/NoOpContinuation; +HSPLkotlinx/coroutines/flow/internal/NoOpContinuation;->()V +HSPLkotlinx/coroutines/flow/internal/NoOpContinuation;->()V +Lkotlinx/coroutines/flow/internal/NopCollector; +HSPLkotlinx/coroutines/flow/internal/NopCollector;->()V +HSPLkotlinx/coroutines/flow/internal/NopCollector;->()V +HSPLkotlinx/coroutines/flow/internal/NopCollector;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/NullSurrogateKt; +HSPLkotlinx/coroutines/flow/internal/NullSurrogateKt;->()V +Lkotlinx/coroutines/flow/internal/SafeCollector; +HSPLkotlinx/coroutines/flow/internal/SafeCollector;->(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/CoroutineContext;)V +HSPLkotlinx/coroutines/flow/internal/SafeCollector;->checkContext(Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/CoroutineContext;Ljava/lang/Object;)V +HSPLkotlinx/coroutines/flow/internal/SafeCollector;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/SafeCollector;->emit(Lkotlin/coroutines/Continuation;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/SafeCollector;->getContext()Lkotlin/coroutines/CoroutineContext; +HSPLkotlinx/coroutines/flow/internal/SafeCollector;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/SafeCollector;->releaseIntercepted()V +Lkotlinx/coroutines/flow/internal/SafeCollector$collectContextSize$1; +HSPLkotlinx/coroutines/flow/internal/SafeCollector$collectContextSize$1;->()V +HSPLkotlinx/coroutines/flow/internal/SafeCollector$collectContextSize$1;->()V +HSPLkotlinx/coroutines/flow/internal/SafeCollector$collectContextSize$1;->invoke(ILkotlin/coroutines/CoroutineContext$Element;)Ljava/lang/Integer; +HSPLkotlinx/coroutines/flow/internal/SafeCollector$collectContextSize$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/SafeCollectorKt; +HSPLkotlinx/coroutines/flow/internal/SafeCollectorKt;->()V +HSPLkotlinx/coroutines/flow/internal/SafeCollectorKt;->access$getEmitFun$p()Lkotlin/jvm/functions/Function3; +Lkotlinx/coroutines/flow/internal/SafeCollectorKt$emitFun$1; +HSPLkotlinx/coroutines/flow/internal/SafeCollectorKt$emitFun$1;->()V +HSPLkotlinx/coroutines/flow/internal/SafeCollectorKt$emitFun$1;->()V +HSPLkotlinx/coroutines/flow/internal/SafeCollectorKt$emitFun$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/flow/internal/SafeCollectorKt$emitFun$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/SafeCollector_commonKt; +HSPLkotlinx/coroutines/flow/internal/SafeCollector_commonKt;->checkContext(Lkotlinx/coroutines/flow/internal/SafeCollector;Lkotlin/coroutines/CoroutineContext;)V +HSPLkotlinx/coroutines/flow/internal/SafeCollector_commonKt;->transitiveCoroutineParent(Lkotlinx/coroutines/Job;Lkotlinx/coroutines/Job;)Lkotlinx/coroutines/Job; +Lkotlinx/coroutines/flow/internal/SafeCollector_commonKt$checkContext$result$1; +HSPLkotlinx/coroutines/flow/internal/SafeCollector_commonKt$checkContext$result$1;->(Lkotlinx/coroutines/flow/internal/SafeCollector;)V +HSPLkotlinx/coroutines/flow/internal/SafeCollector_commonKt$checkContext$result$1;->invoke(ILkotlin/coroutines/CoroutineContext$Element;)Ljava/lang/Integer; +HSPLkotlinx/coroutines/flow/internal/SafeCollector_commonKt$checkContext$result$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/SendingCollector; +HSPLkotlinx/coroutines/flow/internal/SendingCollector;->(Lkotlinx/coroutines/channels/SendChannel;)V +HSPLkotlinx/coroutines/flow/internal/SendingCollector;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/flow/internal/SubscriptionCountStateFlow; +HSPLkotlinx/coroutines/flow/internal/SubscriptionCountStateFlow;->(I)V +HSPLkotlinx/coroutines/flow/internal/SubscriptionCountStateFlow;->increment(I)Z +Lkotlinx/coroutines/internal/AtomicKt; +HSPLkotlinx/coroutines/internal/AtomicKt;->()V +Lkotlinx/coroutines/internal/AtomicOp; +HSPLkotlinx/coroutines/internal/AtomicOp;->()V +HSPLkotlinx/coroutines/internal/AtomicOp;->()V +HSPLkotlinx/coroutines/internal/AtomicOp;->decide(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/internal/AtomicOp;->get_consensus$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/internal/AtomicOp;->perform(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/internal/ConcurrentKt; +HSPLkotlinx/coroutines/internal/ConcurrentKt;->()V +HSPLkotlinx/coroutines/internal/ConcurrentKt;->removeFutureOnCancel(Ljava/util/concurrent/Executor;)Z +Lkotlinx/coroutines/internal/ConcurrentLinkedListKt; +HSPLkotlinx/coroutines/internal/ConcurrentLinkedListKt;->()V +HSPLkotlinx/coroutines/internal/ConcurrentLinkedListKt;->access$getCLOSED$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/internal/ConcurrentLinkedListKt;->close(Lkotlinx/coroutines/internal/ConcurrentLinkedListNode;)Lkotlinx/coroutines/internal/ConcurrentLinkedListNode; +HSPLkotlinx/coroutines/internal/ConcurrentLinkedListKt;->findSegmentInternal(Lkotlinx/coroutines/internal/Segment;JLkotlin/jvm/functions/Function2;)Ljava/lang/Object; +Lkotlinx/coroutines/internal/ConcurrentLinkedListNode; +HSPLkotlinx/coroutines/internal/ConcurrentLinkedListNode;->()V +HSPLkotlinx/coroutines/internal/ConcurrentLinkedListNode;->(Lkotlinx/coroutines/internal/ConcurrentLinkedListNode;)V +HSPLkotlinx/coroutines/internal/ConcurrentLinkedListNode;->access$getNextOrClosed(Lkotlinx/coroutines/internal/ConcurrentLinkedListNode;)Ljava/lang/Object; +HSPLkotlinx/coroutines/internal/ConcurrentLinkedListNode;->cleanPrev()V +HSPLkotlinx/coroutines/internal/ConcurrentLinkedListNode;->getNext()Lkotlinx/coroutines/internal/ConcurrentLinkedListNode; +HSPLkotlinx/coroutines/internal/ConcurrentLinkedListNode;->getNextOrClosed()Ljava/lang/Object; +HSPLkotlinx/coroutines/internal/ConcurrentLinkedListNode;->getPrev()Lkotlinx/coroutines/internal/ConcurrentLinkedListNode; +HSPLkotlinx/coroutines/internal/ConcurrentLinkedListNode;->get_next$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/internal/ConcurrentLinkedListNode;->get_prev$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/internal/ConcurrentLinkedListNode;->markAsClosed()Z +HSPLkotlinx/coroutines/internal/ConcurrentLinkedListNode;->trySetNext(Lkotlinx/coroutines/internal/ConcurrentLinkedListNode;)Z +Lkotlinx/coroutines/internal/ContextScope; +HSPLkotlinx/coroutines/internal/ContextScope;->(Lkotlin/coroutines/CoroutineContext;)V +HSPLkotlinx/coroutines/internal/ContextScope;->getCoroutineContext()Lkotlin/coroutines/CoroutineContext; +Lkotlinx/coroutines/internal/DispatchedContinuation; +HSPLkotlinx/coroutines/internal/DispatchedContinuation;->()V +HSPLkotlinx/coroutines/internal/DispatchedContinuation;->(Lkotlinx/coroutines/CoroutineDispatcher;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/internal/DispatchedContinuation;->awaitReusability$kotlinx_coroutines_core()V +HSPLkotlinx/coroutines/internal/DispatchedContinuation;->claimReusableCancellableContinuation$kotlinx_coroutines_core()Lkotlinx/coroutines/CancellableContinuationImpl; +HSPLkotlinx/coroutines/internal/DispatchedContinuation;->dispatchYield$kotlinx_coroutines_core(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Object;)V +HSPLkotlinx/coroutines/internal/DispatchedContinuation;->getContext()Lkotlin/coroutines/CoroutineContext; +HSPLkotlinx/coroutines/internal/DispatchedContinuation;->getDelegate$kotlinx_coroutines_core()Lkotlin/coroutines/Continuation; +HSPLkotlinx/coroutines/internal/DispatchedContinuation;->getReusableCancellableContinuation()Lkotlinx/coroutines/CancellableContinuationImpl; +HSPLkotlinx/coroutines/internal/DispatchedContinuation;->get_reusableCancellableContinuation$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/internal/DispatchedContinuation;->isReusable$kotlinx_coroutines_core()Z +HSPLkotlinx/coroutines/internal/DispatchedContinuation;->postponeCancellation$kotlinx_coroutines_core(Ljava/lang/Throwable;)Z +HSPLkotlinx/coroutines/internal/DispatchedContinuation;->release$kotlinx_coroutines_core()V +HSPLkotlinx/coroutines/internal/DispatchedContinuation;->resumeWith(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/internal/DispatchedContinuation;->takeState$kotlinx_coroutines_core()Ljava/lang/Object; +HSPLkotlinx/coroutines/internal/DispatchedContinuation;->tryReleaseClaimedContinuation$kotlinx_coroutines_core(Lkotlinx/coroutines/CancellableContinuation;)Ljava/lang/Throwable; +Lkotlinx/coroutines/internal/DispatchedContinuationKt; +HSPLkotlinx/coroutines/internal/DispatchedContinuationKt;->()V +HSPLkotlinx/coroutines/internal/DispatchedContinuationKt;->access$getUNDEFINED$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/internal/DispatchedContinuationKt;->resumeCancellableWith$default(Lkotlin/coroutines/Continuation;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +HSPLkotlinx/coroutines/internal/DispatchedContinuationKt;->resumeCancellableWith(Lkotlin/coroutines/Continuation;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)V +Lkotlinx/coroutines/internal/FastServiceLoader; +HSPLkotlinx/coroutines/internal/FastServiceLoader;->()V +HSPLkotlinx/coroutines/internal/FastServiceLoader;->()V +HSPLkotlinx/coroutines/internal/FastServiceLoader;->loadMainDispatcherFactory$kotlinx_coroutines_core()Ljava/util/List; +Lkotlinx/coroutines/internal/FastServiceLoaderKt; +HSPLkotlinx/coroutines/internal/FastServiceLoaderKt;->()V +HSPLkotlinx/coroutines/internal/FastServiceLoaderKt;->getANDROID_DETECTED()Z +Lkotlinx/coroutines/internal/InlineList; +HSPLkotlinx/coroutines/internal/InlineList;->constructor-impl$default(Ljava/lang/Object;ILkotlin/jvm/internal/DefaultConstructorMarker;)Ljava/lang/Object; +HSPLkotlinx/coroutines/internal/InlineList;->constructor-impl(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/internal/InlineList;->plus-FjFbRPM(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/internal/LimitedDispatcher; +HSPLkotlinx/coroutines/internal/LimitedDispatcher;->()V +HSPLkotlinx/coroutines/internal/LimitedDispatcher;->(Lkotlinx/coroutines/CoroutineDispatcher;I)V +HSPLkotlinx/coroutines/internal/LimitedDispatcher;->access$obtainTaskOrDeallocateWorker(Lkotlinx/coroutines/internal/LimitedDispatcher;)Ljava/lang/Runnable; +HSPLkotlinx/coroutines/internal/LimitedDispatcher;->dispatch(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Runnable;)V +HSPLkotlinx/coroutines/internal/LimitedDispatcher;->getRunningWorkers$volatile$FU()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; +HSPLkotlinx/coroutines/internal/LimitedDispatcher;->obtainTaskOrDeallocateWorker()Ljava/lang/Runnable; +HSPLkotlinx/coroutines/internal/LimitedDispatcher;->tryAllocateWorker()Z +Lkotlinx/coroutines/internal/LimitedDispatcher$Worker; +HSPLkotlinx/coroutines/internal/LimitedDispatcher$Worker;->(Lkotlinx/coroutines/internal/LimitedDispatcher;Ljava/lang/Runnable;)V +HSPLkotlinx/coroutines/internal/LimitedDispatcher$Worker;->run()V +Lkotlinx/coroutines/internal/LimitedDispatcherKt; +HSPLkotlinx/coroutines/internal/LimitedDispatcherKt;->checkParallelism(I)V +Lkotlinx/coroutines/internal/LockFreeLinkedListHead; +HSPLkotlinx/coroutines/internal/LockFreeLinkedListHead;->()V +HSPLkotlinx/coroutines/internal/LockFreeLinkedListHead;->isRemoved()Z +Lkotlinx/coroutines/internal/LockFreeLinkedListNode; +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->()V +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->()V +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->access$finishAdd(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)V +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->access$get_next$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->addOneIfEmpty(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)Z +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->correctPrev(Lkotlinx/coroutines/internal/OpDescriptor;)Lkotlinx/coroutines/internal/LockFreeLinkedListNode; +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->findPrevNonRemoved(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)Lkotlinx/coroutines/internal/LockFreeLinkedListNode; +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->finishAdd(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)V +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->getNext()Ljava/lang/Object; +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->getNextNode()Lkotlinx/coroutines/internal/LockFreeLinkedListNode; +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->getPrevNode()Lkotlinx/coroutines/internal/LockFreeLinkedListNode; +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->get_next$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->get_prev$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->get_removedRef$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->isRemoved()Z +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->remove()Z +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->removeOrNext()Lkotlinx/coroutines/internal/LockFreeLinkedListNode; +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->removed()Lkotlinx/coroutines/internal/Removed; +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->tryCondAddNext(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/internal/LockFreeLinkedListNode$CondAddOp;)I +Lkotlinx/coroutines/internal/LockFreeLinkedListNode$CondAddOp; +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode$CondAddOp;->(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)V +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode$CondAddOp;->complete(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode$CondAddOp;->complete(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Ljava/lang/Object;)V +Lkotlinx/coroutines/internal/LockFreeTaskQueue; +HSPLkotlinx/coroutines/internal/LockFreeTaskQueue;->()V +HSPLkotlinx/coroutines/internal/LockFreeTaskQueue;->(Z)V +HSPLkotlinx/coroutines/internal/LockFreeTaskQueue;->addLast(Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/internal/LockFreeTaskQueue;->getSize()I +HSPLkotlinx/coroutines/internal/LockFreeTaskQueue;->get_cur$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/internal/LockFreeTaskQueue;->removeFirstOrNull()Ljava/lang/Object; +Lkotlinx/coroutines/internal/LockFreeTaskQueueCore; +HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore;->()V +HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore;->(IZ)V +HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore;->addLast(Ljava/lang/Object;)I +HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore;->allocateNextCopy(J)Lkotlinx/coroutines/internal/LockFreeTaskQueueCore; +HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore;->allocateOrGetNextCopy(J)Lkotlinx/coroutines/internal/LockFreeTaskQueueCore; +HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore;->getArray()Ljava/util/concurrent/atomic/AtomicReferenceArray; +HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore;->getSize()I +HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore;->get_next$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore;->get_state$volatile$FU()Ljava/util/concurrent/atomic/AtomicLongFieldUpdater; +HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore;->isEmpty()Z +HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore;->markFrozen()J +HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore;->next()Lkotlinx/coroutines/internal/LockFreeTaskQueueCore; +HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore;->removeFirstOrNull()Ljava/lang/Object; +Lkotlinx/coroutines/internal/LockFreeTaskQueueCore$Companion; +HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore$Companion;->()V +HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore$Companion;->updateHead(JI)J +HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore$Companion;->updateTail(JI)J +HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore$Companion;->wo(JJ)J +Lkotlinx/coroutines/internal/LockFreeTaskQueueCore$Placeholder; +Lkotlinx/coroutines/internal/MainDispatcherFactory; +Lkotlinx/coroutines/internal/MainDispatcherLoader; +HSPLkotlinx/coroutines/internal/MainDispatcherLoader;->()V +HSPLkotlinx/coroutines/internal/MainDispatcherLoader;->()V +HSPLkotlinx/coroutines/internal/MainDispatcherLoader;->loadMainDispatcher()Lkotlinx/coroutines/MainCoroutineDispatcher; +Lkotlinx/coroutines/internal/MainDispatchersKt; +HSPLkotlinx/coroutines/internal/MainDispatchersKt;->()V +HSPLkotlinx/coroutines/internal/MainDispatchersKt;->tryCreateDispatcher(Lkotlinx/coroutines/internal/MainDispatcherFactory;Ljava/util/List;)Lkotlinx/coroutines/MainCoroutineDispatcher; +Lkotlinx/coroutines/internal/OnUndeliveredElementKt; +Lkotlinx/coroutines/internal/OpDescriptor; +HSPLkotlinx/coroutines/internal/OpDescriptor;->()V +Lkotlinx/coroutines/internal/Removed; +HSPLkotlinx/coroutines/internal/Removed;->(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)V +Lkotlinx/coroutines/internal/ResizableAtomicArray; +HSPLkotlinx/coroutines/internal/ResizableAtomicArray;->(I)V +HSPLkotlinx/coroutines/internal/ResizableAtomicArray;->get(I)Ljava/lang/Object; +HSPLkotlinx/coroutines/internal/ResizableAtomicArray;->setSynchronized(ILjava/lang/Object;)V +Lkotlinx/coroutines/internal/ScopeCoroutine; +HSPLkotlinx/coroutines/internal/ScopeCoroutine;->(Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/internal/ScopeCoroutine;->afterCompletion(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/internal/ScopeCoroutine;->afterResume(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/internal/ScopeCoroutine;->getCallerFrame()Lkotlin/coroutines/jvm/internal/CoroutineStackFrame; +HSPLkotlinx/coroutines/internal/ScopeCoroutine;->isScopedCoroutine()Z +Lkotlinx/coroutines/internal/Segment; +HSPLkotlinx/coroutines/internal/Segment;->()V +HSPLkotlinx/coroutines/internal/Segment;->(JLkotlinx/coroutines/internal/Segment;I)V +HSPLkotlinx/coroutines/internal/Segment;->decPointers$kotlinx_coroutines_core()Z +HSPLkotlinx/coroutines/internal/Segment;->getCleanedAndPointers$volatile$FU()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; +HSPLkotlinx/coroutines/internal/Segment;->isRemoved()Z +HSPLkotlinx/coroutines/internal/Segment;->onSlotCleaned()V +HSPLkotlinx/coroutines/internal/Segment;->tryIncPointers$kotlinx_coroutines_core()Z +Lkotlinx/coroutines/internal/SegmentOrClosed; +HSPLkotlinx/coroutines/internal/SegmentOrClosed;->constructor-impl(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/internal/SegmentOrClosed;->getSegment-impl(Ljava/lang/Object;)Lkotlinx/coroutines/internal/Segment; +HSPLkotlinx/coroutines/internal/SegmentOrClosed;->isClosed-impl(Ljava/lang/Object;)Z +Lkotlinx/coroutines/internal/StackTraceRecoveryKt; +HSPLkotlinx/coroutines/internal/StackTraceRecoveryKt;->()V +HSPLkotlinx/coroutines/internal/StackTraceRecoveryKt;->recoverStackTrace(Ljava/lang/Throwable;)Ljava/lang/Throwable; +Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/internal/Symbol;->(Ljava/lang/String;)V +Lkotlinx/coroutines/internal/SystemPropsKt; +HSPLkotlinx/coroutines/internal/SystemPropsKt;->getAVAILABLE_PROCESSORS()I +HSPLkotlinx/coroutines/internal/SystemPropsKt;->systemProp$default(Ljava/lang/String;IIIILjava/lang/Object;)I +HSPLkotlinx/coroutines/internal/SystemPropsKt;->systemProp$default(Ljava/lang/String;JJJILjava/lang/Object;)J +HSPLkotlinx/coroutines/internal/SystemPropsKt;->systemProp(Ljava/lang/String;)Ljava/lang/String; +HSPLkotlinx/coroutines/internal/SystemPropsKt;->systemProp(Ljava/lang/String;III)I +HSPLkotlinx/coroutines/internal/SystemPropsKt;->systemProp(Ljava/lang/String;JJJ)J +HSPLkotlinx/coroutines/internal/SystemPropsKt;->systemProp(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLkotlinx/coroutines/internal/SystemPropsKt;->systemProp(Ljava/lang/String;Z)Z +Lkotlinx/coroutines/internal/SystemPropsKt__SystemPropsKt; +HSPLkotlinx/coroutines/internal/SystemPropsKt__SystemPropsKt;->()V +HSPLkotlinx/coroutines/internal/SystemPropsKt__SystemPropsKt;->getAVAILABLE_PROCESSORS()I +HSPLkotlinx/coroutines/internal/SystemPropsKt__SystemPropsKt;->systemProp(Ljava/lang/String;)Ljava/lang/String; +Lkotlinx/coroutines/internal/SystemPropsKt__SystemProps_commonKt; +HSPLkotlinx/coroutines/internal/SystemPropsKt__SystemProps_commonKt;->systemProp$default(Ljava/lang/String;IIIILjava/lang/Object;)I +HSPLkotlinx/coroutines/internal/SystemPropsKt__SystemProps_commonKt;->systemProp$default(Ljava/lang/String;JJJILjava/lang/Object;)J +HSPLkotlinx/coroutines/internal/SystemPropsKt__SystemProps_commonKt;->systemProp(Ljava/lang/String;III)I +HSPLkotlinx/coroutines/internal/SystemPropsKt__SystemProps_commonKt;->systemProp(Ljava/lang/String;JJJ)J +HSPLkotlinx/coroutines/internal/SystemPropsKt__SystemProps_commonKt;->systemProp(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLkotlinx/coroutines/internal/SystemPropsKt__SystemProps_commonKt;->systemProp(Ljava/lang/String;Z)Z +Lkotlinx/coroutines/internal/ThreadContextKt; +HSPLkotlinx/coroutines/internal/ThreadContextKt;->()V +HSPLkotlinx/coroutines/internal/ThreadContextKt;->restoreThreadContext(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Object;)V +HSPLkotlinx/coroutines/internal/ThreadContextKt;->threadContextElements(Lkotlin/coroutines/CoroutineContext;)Ljava/lang/Object; +HSPLkotlinx/coroutines/internal/ThreadContextKt;->updateThreadContext(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/internal/ThreadContextKt$countAll$1; +HSPLkotlinx/coroutines/internal/ThreadContextKt$countAll$1;->()V +HSPLkotlinx/coroutines/internal/ThreadContextKt$countAll$1;->()V +HSPLkotlinx/coroutines/internal/ThreadContextKt$countAll$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/internal/ThreadContextKt$countAll$1;->invoke(Ljava/lang/Object;Lkotlin/coroutines/CoroutineContext$Element;)Ljava/lang/Object; +Lkotlinx/coroutines/internal/ThreadContextKt$findOne$1; +HSPLkotlinx/coroutines/internal/ThreadContextKt$findOne$1;->()V +HSPLkotlinx/coroutines/internal/ThreadContextKt$findOne$1;->()V +HSPLkotlinx/coroutines/internal/ThreadContextKt$findOne$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/internal/ThreadContextKt$findOne$1;->invoke(Lkotlinx/coroutines/ThreadContextElement;Lkotlin/coroutines/CoroutineContext$Element;)Lkotlinx/coroutines/ThreadContextElement; +Lkotlinx/coroutines/internal/ThreadContextKt$updateState$1; +HSPLkotlinx/coroutines/internal/ThreadContextKt$updateState$1;->()V +HSPLkotlinx/coroutines/internal/ThreadContextKt$updateState$1;->()V +Lkotlinx/coroutines/internal/ThreadLocalElement; +HSPLkotlinx/coroutines/internal/ThreadLocalElement;->(Ljava/lang/Object;Ljava/lang/ThreadLocal;)V +HSPLkotlinx/coroutines/internal/ThreadLocalElement;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +HSPLkotlinx/coroutines/internal/ThreadLocalElement;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; +HSPLkotlinx/coroutines/internal/ThreadLocalElement;->getKey()Lkotlin/coroutines/CoroutineContext$Key; +HSPLkotlinx/coroutines/internal/ThreadLocalElement;->restoreThreadContext(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Object;)V +HSPLkotlinx/coroutines/internal/ThreadLocalElement;->updateThreadContext(Lkotlin/coroutines/CoroutineContext;)Ljava/lang/Object; +Lkotlinx/coroutines/internal/ThreadLocalKey; +HSPLkotlinx/coroutines/internal/ThreadLocalKey;->(Ljava/lang/ThreadLocal;)V +HSPLkotlinx/coroutines/internal/ThreadLocalKey;->equals(Ljava/lang/Object;)Z +Lkotlinx/coroutines/internal/ThreadLocalKt; +HSPLkotlinx/coroutines/internal/ThreadLocalKt;->commonThreadLocal(Lkotlinx/coroutines/internal/Symbol;)Ljava/lang/ThreadLocal; +Lkotlinx/coroutines/internal/ThreadSafeHeap; +HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->()V +HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->()V +HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->addImpl(Lkotlinx/coroutines/internal/ThreadSafeHeapNode;)V +HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->firstImpl()Lkotlinx/coroutines/internal/ThreadSafeHeapNode; +HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->getSize()I +HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->get_size$volatile$FU()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; +HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->isEmpty()Z +HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->peek()Lkotlinx/coroutines/internal/ThreadSafeHeapNode; +HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->realloc()[Lkotlinx/coroutines/internal/ThreadSafeHeapNode; +HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->remove(Lkotlinx/coroutines/internal/ThreadSafeHeapNode;)Z +HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->removeAtImpl(I)Lkotlinx/coroutines/internal/ThreadSafeHeapNode; +HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->setSize(I)V +HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->siftDownFrom(I)V +HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->siftUpFrom(I)V +HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->swap(II)V +Lkotlinx/coroutines/internal/ThreadSafeHeapNode; +Lkotlinx/coroutines/internal/ThreadState; +Lkotlinx/coroutines/intrinsics/CancellableKt; +HSPLkotlinx/coroutines/intrinsics/CancellableKt;->startCoroutineCancellable$default(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +HSPLkotlinx/coroutines/intrinsics/CancellableKt;->startCoroutineCancellable(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function1;)V +Lkotlinx/coroutines/intrinsics/UndispatchedKt; +HSPLkotlinx/coroutines/intrinsics/UndispatchedKt;->startCoroutineUndispatched(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/intrinsics/UndispatchedKt;->startUndispatchedOrReturn(Lkotlinx/coroutines/internal/ScopeCoroutine;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; +Lkotlinx/coroutines/scheduling/CoroutineScheduler; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->()V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->(IIJLjava/lang/String;)V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->access$getControlState$volatile$FU()Ljava/util/concurrent/atomic/AtomicLongFieldUpdater; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->addToGlobalQueue(Lkotlinx/coroutines/scheduling/Task;)Z +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->createNewWorker()I +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->createTask(Ljava/lang/Runnable;Lkotlinx/coroutines/scheduling/TaskContext;)Lkotlinx/coroutines/scheduling/Task; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->currentWorker()Lkotlinx/coroutines/scheduling/CoroutineScheduler$Worker; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->dispatch$default(Lkotlinx/coroutines/scheduling/CoroutineScheduler;Ljava/lang/Runnable;Lkotlinx/coroutines/scheduling/TaskContext;ZILjava/lang/Object;)V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->dispatch(Ljava/lang/Runnable;Lkotlinx/coroutines/scheduling/TaskContext;Z)V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->getControlState$volatile$FU()Ljava/util/concurrent/atomic/AtomicLongFieldUpdater; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->getParkedWorkersStack$volatile$FU()Ljava/util/concurrent/atomic/AtomicLongFieldUpdater; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->get_isTerminated$volatile$FU()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->isTerminated()Z +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->parkedWorkersStackNextIndex(Lkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;)I +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->parkedWorkersStackPop()Lkotlinx/coroutines/scheduling/CoroutineScheduler$Worker; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->parkedWorkersStackPush(Lkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;)Z +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->runSafely(Lkotlinx/coroutines/scheduling/Task;)V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->signalBlockingWork(JZ)V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->signalCpuWork()V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->submitToLocalQueue(Lkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;Lkotlinx/coroutines/scheduling/Task;Z)Lkotlinx/coroutines/scheduling/Task; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->tryCreateWorker$default(Lkotlinx/coroutines/scheduling/CoroutineScheduler;JILjava/lang/Object;)Z +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->tryCreateWorker(J)Z +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;->tryUnpark()Z +Lkotlinx/coroutines/scheduling/CoroutineScheduler$Companion; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Companion;->()V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/coroutines/scheduling/CoroutineScheduler$Worker; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->()V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->(Lkotlinx/coroutines/scheduling/CoroutineScheduler;)V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->(Lkotlinx/coroutines/scheduling/CoroutineScheduler;I)V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->access$getThis$0$p(Lkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;)Lkotlinx/coroutines/scheduling/CoroutineScheduler; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->afterTask(I)V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->beforeTask(I)V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->executeTask(Lkotlinx/coroutines/scheduling/Task;)V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->findAnyTask(Z)Lkotlinx/coroutines/scheduling/Task; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->findBlockingTask()Lkotlinx/coroutines/scheduling/Task; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->findTask(Z)Lkotlinx/coroutines/scheduling/Task; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->getIndexInArray()I +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->getNextParkedWorker()Ljava/lang/Object; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->getWorkerCtl$volatile$FU$kotlinx_coroutines_core()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->idleReset(I)V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->inStack()Z +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->nextInt(I)I +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->park()V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->pollGlobalQueues()Lkotlinx/coroutines/scheduling/Task; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->run()V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->runWorker()V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->setIndexInArray(I)V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->setNextParkedWorker(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->tryAcquireCpuPermit()Z +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->tryPark()V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->tryReleaseCpu(Lkotlinx/coroutines/scheduling/CoroutineScheduler$WorkerState;)Z +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->trySteal(I)Lkotlinx/coroutines/scheduling/Task; +Lkotlinx/coroutines/scheduling/CoroutineScheduler$WorkerState; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$WorkerState;->$values()[Lkotlinx/coroutines/scheduling/CoroutineScheduler$WorkerState; +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$WorkerState;->()V +HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$WorkerState;->(Ljava/lang/String;I)V +Lkotlinx/coroutines/scheduling/DefaultIoScheduler; +HSPLkotlinx/coroutines/scheduling/DefaultIoScheduler;->()V +HSPLkotlinx/coroutines/scheduling/DefaultIoScheduler;->()V +HSPLkotlinx/coroutines/scheduling/DefaultIoScheduler;->dispatch(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Runnable;)V +Lkotlinx/coroutines/scheduling/DefaultScheduler; +HSPLkotlinx/coroutines/scheduling/DefaultScheduler;->()V +HSPLkotlinx/coroutines/scheduling/DefaultScheduler;->()V +Lkotlinx/coroutines/scheduling/GlobalQueue; +HSPLkotlinx/coroutines/scheduling/GlobalQueue;->()V +Lkotlinx/coroutines/scheduling/NanoTimeSource; +HSPLkotlinx/coroutines/scheduling/NanoTimeSource;->()V +HSPLkotlinx/coroutines/scheduling/NanoTimeSource;->()V +HSPLkotlinx/coroutines/scheduling/NanoTimeSource;->nanoTime()J +Lkotlinx/coroutines/scheduling/SchedulerCoroutineDispatcher; +HSPLkotlinx/coroutines/scheduling/SchedulerCoroutineDispatcher;->(IIJLjava/lang/String;)V +HSPLkotlinx/coroutines/scheduling/SchedulerCoroutineDispatcher;->createScheduler()Lkotlinx/coroutines/scheduling/CoroutineScheduler; +HSPLkotlinx/coroutines/scheduling/SchedulerCoroutineDispatcher;->dispatch(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Runnable;)V +HSPLkotlinx/coroutines/scheduling/SchedulerCoroutineDispatcher;->dispatchWithContext$kotlinx_coroutines_core(Ljava/lang/Runnable;Lkotlinx/coroutines/scheduling/TaskContext;Z)V +HSPLkotlinx/coroutines/scheduling/SchedulerCoroutineDispatcher;->dispatchYield(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Runnable;)V +Lkotlinx/coroutines/scheduling/SchedulerTimeSource; +HSPLkotlinx/coroutines/scheduling/SchedulerTimeSource;->()V +Lkotlinx/coroutines/scheduling/Task; +HSPLkotlinx/coroutines/scheduling/Task;->()V +HSPLkotlinx/coroutines/scheduling/Task;->(JLkotlinx/coroutines/scheduling/TaskContext;)V +Lkotlinx/coroutines/scheduling/TaskContext; +Lkotlinx/coroutines/scheduling/TaskContextImpl; +HSPLkotlinx/coroutines/scheduling/TaskContextImpl;->(I)V +HSPLkotlinx/coroutines/scheduling/TaskContextImpl;->afterTask()V +HSPLkotlinx/coroutines/scheduling/TaskContextImpl;->getTaskMode()I +Lkotlinx/coroutines/scheduling/TaskImpl; +HSPLkotlinx/coroutines/scheduling/TaskImpl;->(Ljava/lang/Runnable;JLkotlinx/coroutines/scheduling/TaskContext;)V +HSPLkotlinx/coroutines/scheduling/TaskImpl;->run()V +Lkotlinx/coroutines/scheduling/TasksKt; +HSPLkotlinx/coroutines/scheduling/TasksKt;->()V +Lkotlinx/coroutines/scheduling/UnlimitedIoScheduler; +HSPLkotlinx/coroutines/scheduling/UnlimitedIoScheduler;->()V +HSPLkotlinx/coroutines/scheduling/UnlimitedIoScheduler;->()V +HSPLkotlinx/coroutines/scheduling/UnlimitedIoScheduler;->dispatch(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Runnable;)V +HSPLkotlinx/coroutines/scheduling/UnlimitedIoScheduler;->limitedParallelism(I)Lkotlinx/coroutines/CoroutineDispatcher; +Lkotlinx/coroutines/scheduling/WorkQueue; +HSPLkotlinx/coroutines/scheduling/WorkQueue;->()V +HSPLkotlinx/coroutines/scheduling/WorkQueue;->()V +HSPLkotlinx/coroutines/scheduling/WorkQueue;->add(Lkotlinx/coroutines/scheduling/Task;Z)Lkotlinx/coroutines/scheduling/Task; +HSPLkotlinx/coroutines/scheduling/WorkQueue;->addLast(Lkotlinx/coroutines/scheduling/Task;)Lkotlinx/coroutines/scheduling/Task; +HSPLkotlinx/coroutines/scheduling/WorkQueue;->decrementIfBlocking(Lkotlinx/coroutines/scheduling/Task;)V +HSPLkotlinx/coroutines/scheduling/WorkQueue;->getBlockingTasksInBuffer$volatile$FU()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; +HSPLkotlinx/coroutines/scheduling/WorkQueue;->getBufferSize()I +HSPLkotlinx/coroutines/scheduling/WorkQueue;->getConsumerIndex$volatile$FU()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; +HSPLkotlinx/coroutines/scheduling/WorkQueue;->getLastScheduledTask$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/scheduling/WorkQueue;->getProducerIndex$volatile$FU()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; +HSPLkotlinx/coroutines/scheduling/WorkQueue;->poll()Lkotlinx/coroutines/scheduling/Task; +HSPLkotlinx/coroutines/scheduling/WorkQueue;->pollBlocking()Lkotlinx/coroutines/scheduling/Task; +HSPLkotlinx/coroutines/scheduling/WorkQueue;->pollBuffer()Lkotlinx/coroutines/scheduling/Task; +HSPLkotlinx/coroutines/scheduling/WorkQueue;->pollWithExclusiveMode(Z)Lkotlinx/coroutines/scheduling/Task; +HSPLkotlinx/coroutines/scheduling/WorkQueue;->stealWithExclusiveMode(I)Lkotlinx/coroutines/scheduling/Task; +HSPLkotlinx/coroutines/scheduling/WorkQueue;->tryExtractFromTheMiddle(IZ)Lkotlinx/coroutines/scheduling/Task; +HSPLkotlinx/coroutines/scheduling/WorkQueue;->trySteal(ILkotlin/jvm/internal/Ref$ObjectRef;)J +HSPLkotlinx/coroutines/scheduling/WorkQueue;->tryStealLastScheduled(ILkotlin/jvm/internal/Ref$ObjectRef;)J +Lkotlinx/coroutines/selects/OnTimeout; +HSPLkotlinx/coroutines/selects/OnTimeout;->(J)V +HSPLkotlinx/coroutines/selects/OnTimeout;->access$register(Lkotlinx/coroutines/selects/OnTimeout;Lkotlinx/coroutines/selects/SelectInstance;Ljava/lang/Object;)V +HSPLkotlinx/coroutines/selects/OnTimeout;->getSelectClause()Lkotlinx/coroutines/selects/SelectClause0; +HSPLkotlinx/coroutines/selects/OnTimeout;->register(Lkotlinx/coroutines/selects/SelectInstance;Ljava/lang/Object;)V +Lkotlinx/coroutines/selects/OnTimeout$register$$inlined$Runnable$1; +HSPLkotlinx/coroutines/selects/OnTimeout$register$$inlined$Runnable$1;->(Lkotlinx/coroutines/selects/SelectInstance;Lkotlinx/coroutines/selects/OnTimeout;)V +HSPLkotlinx/coroutines/selects/OnTimeout$register$$inlined$Runnable$1;->run()V +Lkotlinx/coroutines/selects/OnTimeout$selectClause$1; +HSPLkotlinx/coroutines/selects/OnTimeout$selectClause$1;->()V +HSPLkotlinx/coroutines/selects/OnTimeout$selectClause$1;->()V +HSPLkotlinx/coroutines/selects/OnTimeout$selectClause$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/selects/OnTimeout$selectClause$1;->invoke(Lkotlinx/coroutines/selects/OnTimeout;Lkotlinx/coroutines/selects/SelectInstance;Ljava/lang/Object;)V +Lkotlinx/coroutines/selects/OnTimeoutKt; +HSPLkotlinx/coroutines/selects/OnTimeoutKt;->onTimeout(Lkotlinx/coroutines/selects/SelectBuilder;JLkotlin/jvm/functions/Function1;)V +Lkotlinx/coroutines/selects/SelectBuilder; +Lkotlinx/coroutines/selects/SelectClause; +Lkotlinx/coroutines/selects/SelectClause0; +Lkotlinx/coroutines/selects/SelectClause0Impl; +HSPLkotlinx/coroutines/selects/SelectClause0Impl;->(Ljava/lang/Object;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;)V +HSPLkotlinx/coroutines/selects/SelectClause0Impl;->(Ljava/lang/Object;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/coroutines/selects/SelectClause0Impl;->getClauseObject()Ljava/lang/Object; +HSPLkotlinx/coroutines/selects/SelectClause0Impl;->getOnCancellationConstructor()Lkotlin/jvm/functions/Function3; +HSPLkotlinx/coroutines/selects/SelectClause0Impl;->getProcessResFunc()Lkotlin/jvm/functions/Function3; +HSPLkotlinx/coroutines/selects/SelectClause0Impl;->getRegFunc()Lkotlin/jvm/functions/Function3; +Lkotlinx/coroutines/selects/SelectClause1; +Lkotlinx/coroutines/selects/SelectClause1Impl; +HSPLkotlinx/coroutines/selects/SelectClause1Impl;->(Ljava/lang/Object;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;)V +HSPLkotlinx/coroutines/selects/SelectClause1Impl;->getClauseObject()Ljava/lang/Object; +HSPLkotlinx/coroutines/selects/SelectClause1Impl;->getOnCancellationConstructor()Lkotlin/jvm/functions/Function3; +HSPLkotlinx/coroutines/selects/SelectClause1Impl;->getProcessResFunc()Lkotlin/jvm/functions/Function3; +HSPLkotlinx/coroutines/selects/SelectClause1Impl;->getRegFunc()Lkotlin/jvm/functions/Function3; +Lkotlinx/coroutines/selects/SelectImplementation; +HSPLkotlinx/coroutines/selects/SelectImplementation;->()V +HSPLkotlinx/coroutines/selects/SelectImplementation;->(Lkotlin/coroutines/CoroutineContext;)V +HSPLkotlinx/coroutines/selects/SelectImplementation;->access$doSelectSuspend(Lkotlinx/coroutines/selects/SelectImplementation;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/selects/SelectImplementation;->access$getInternalResult$p(Lkotlinx/coroutines/selects/SelectImplementation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/selects/SelectImplementation;->access$getState$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/selects/SelectImplementation;->checkClauseObject(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/selects/SelectImplementation;->cleanup(Lkotlinx/coroutines/selects/SelectImplementation$ClauseData;)V +HSPLkotlinx/coroutines/selects/SelectImplementation;->complete(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/selects/SelectImplementation;->disposeOnCompletion(Lkotlinx/coroutines/DisposableHandle;)V +HSPLkotlinx/coroutines/selects/SelectImplementation;->doSelect$suspendImpl(Lkotlinx/coroutines/selects/SelectImplementation;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/selects/SelectImplementation;->doSelect(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/selects/SelectImplementation;->doSelectSuspend(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/selects/SelectImplementation;->findClause(Ljava/lang/Object;)Lkotlinx/coroutines/selects/SelectImplementation$ClauseData; +HSPLkotlinx/coroutines/selects/SelectImplementation;->getContext()Lkotlin/coroutines/CoroutineContext; +HSPLkotlinx/coroutines/selects/SelectImplementation;->getState$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/selects/SelectImplementation;->invoke(Ljava/lang/Throwable;)V +HSPLkotlinx/coroutines/selects/SelectImplementation;->invoke(Lkotlinx/coroutines/selects/SelectClause0;Lkotlin/jvm/functions/Function1;)V +HSPLkotlinx/coroutines/selects/SelectImplementation;->invoke(Lkotlinx/coroutines/selects/SelectClause1;Lkotlin/jvm/functions/Function2;)V +HSPLkotlinx/coroutines/selects/SelectImplementation;->invokeOnCancellation(Lkotlinx/coroutines/internal/Segment;I)V +HSPLkotlinx/coroutines/selects/SelectImplementation;->isSelected()Z +HSPLkotlinx/coroutines/selects/SelectImplementation;->register$default(Lkotlinx/coroutines/selects/SelectImplementation;Lkotlinx/coroutines/selects/SelectImplementation$ClauseData;ZILjava/lang/Object;)V +HSPLkotlinx/coroutines/selects/SelectImplementation;->register(Lkotlinx/coroutines/selects/SelectImplementation$ClauseData;Z)V +HSPLkotlinx/coroutines/selects/SelectImplementation;->trySelect(Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/selects/SelectImplementation;->trySelectInternal(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLkotlinx/coroutines/selects/SelectImplementation;->waitUntilSelected(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +Lkotlinx/coroutines/selects/SelectImplementation$ClauseData; +HSPLkotlinx/coroutines/selects/SelectImplementation$ClauseData;->(Lkotlinx/coroutines/selects/SelectImplementation;Ljava/lang/Object;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function3;)V +HSPLkotlinx/coroutines/selects/SelectImplementation$ClauseData;->createOnCancellationAction(Lkotlinx/coroutines/selects/SelectInstance;Ljava/lang/Object;)Lkotlin/jvm/functions/Function1; +HSPLkotlinx/coroutines/selects/SelectImplementation$ClauseData;->dispose()V +HSPLkotlinx/coroutines/selects/SelectImplementation$ClauseData;->invokeBlock(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/selects/SelectImplementation$ClauseData;->processResult(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/selects/SelectImplementation$ClauseData;->tryRegisterAsWaiter(Lkotlinx/coroutines/selects/SelectImplementation;)Z +Lkotlinx/coroutines/selects/SelectImplementation$doSelectSuspend$1; +HSPLkotlinx/coroutines/selects/SelectImplementation$doSelectSuspend$1;->(Lkotlinx/coroutines/selects/SelectImplementation;Lkotlin/coroutines/Continuation;)V +HSPLkotlinx/coroutines/selects/SelectImplementation$doSelectSuspend$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/selects/SelectInstance; +Lkotlinx/coroutines/selects/SelectInstanceInternal; +Lkotlinx/coroutines/selects/SelectKt; +HSPLkotlinx/coroutines/selects/SelectKt;->()V +HSPLkotlinx/coroutines/selects/SelectKt;->access$getDUMMY_PROCESS_RESULT_FUNCTION$p()Lkotlin/jvm/functions/Function3; +HSPLkotlinx/coroutines/selects/SelectKt;->access$getNO_RESULT$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/selects/SelectKt;->access$getSTATE_CANCELLED$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/selects/SelectKt;->access$getSTATE_COMPLETED$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/selects/SelectKt;->access$getSTATE_REG$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/selects/SelectKt;->access$tryResume(Lkotlinx/coroutines/CancellableContinuation;Lkotlin/jvm/functions/Function1;)Z +HSPLkotlinx/coroutines/selects/SelectKt;->getPARAM_CLAUSE_0()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/selects/SelectKt;->tryResume(Lkotlinx/coroutines/CancellableContinuation;Lkotlin/jvm/functions/Function1;)Z +Lkotlinx/coroutines/selects/SelectKt$DUMMY_PROCESS_RESULT_FUNCTION$1; +HSPLkotlinx/coroutines/selects/SelectKt$DUMMY_PROCESS_RESULT_FUNCTION$1;->()V +HSPLkotlinx/coroutines/selects/SelectKt$DUMMY_PROCESS_RESULT_FUNCTION$1;->()V +HSPLkotlinx/coroutines/selects/SelectKt$DUMMY_PROCESS_RESULT_FUNCTION$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/selects/SelectKt$DUMMY_PROCESS_RESULT_FUNCTION$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Void; +Lkotlinx/coroutines/sync/Mutex; +Lkotlinx/coroutines/sync/Mutex$DefaultImpls; +HSPLkotlinx/coroutines/sync/Mutex$DefaultImpls;->lock$default(Lkotlinx/coroutines/sync/Mutex;Ljava/lang/Object;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/coroutines/sync/Mutex$DefaultImpls;->unlock$default(Lkotlinx/coroutines/sync/Mutex;Ljava/lang/Object;ILjava/lang/Object;)V +Lkotlinx/coroutines/sync/MutexImpl; +HSPLkotlinx/coroutines/sync/MutexImpl;->()V +HSPLkotlinx/coroutines/sync/MutexImpl;->(Z)V +HSPLkotlinx/coroutines/sync/MutexImpl;->access$getOwner$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/sync/MutexImpl;->getOwner$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/sync/MutexImpl;->isLocked()Z +HSPLkotlinx/coroutines/sync/MutexImpl;->lock$suspendImpl(Lkotlinx/coroutines/sync/MutexImpl;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/sync/MutexImpl;->lock(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/sync/MutexImpl;->lockSuspend(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLkotlinx/coroutines/sync/MutexImpl;->tryLock(Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/sync/MutexImpl;->tryLockImpl(Ljava/lang/Object;)I +HSPLkotlinx/coroutines/sync/MutexImpl;->unlock(Ljava/lang/Object;)V +Lkotlinx/coroutines/sync/MutexImpl$CancellableContinuationWithOwner; +HSPLkotlinx/coroutines/sync/MutexImpl$CancellableContinuationWithOwner;->(Lkotlinx/coroutines/sync/MutexImpl;Lkotlinx/coroutines/CancellableContinuationImpl;Ljava/lang/Object;)V +HSPLkotlinx/coroutines/sync/MutexImpl$CancellableContinuationWithOwner;->completeResume(Ljava/lang/Object;)V +HSPLkotlinx/coroutines/sync/MutexImpl$CancellableContinuationWithOwner;->invokeOnCancellation(Lkotlinx/coroutines/internal/Segment;I)V +HSPLkotlinx/coroutines/sync/MutexImpl$CancellableContinuationWithOwner;->tryResume(Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +HSPLkotlinx/coroutines/sync/MutexImpl$CancellableContinuationWithOwner;->tryResume(Lkotlin/Unit;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; +Lkotlinx/coroutines/sync/MutexImpl$CancellableContinuationWithOwner$tryResume$token$1; +HSPLkotlinx/coroutines/sync/MutexImpl$CancellableContinuationWithOwner$tryResume$token$1;->(Lkotlinx/coroutines/sync/MutexImpl;Lkotlinx/coroutines/sync/MutexImpl$CancellableContinuationWithOwner;)V +Lkotlinx/coroutines/sync/MutexImpl$onSelectCancellationUnlockConstructor$1; +HSPLkotlinx/coroutines/sync/MutexImpl$onSelectCancellationUnlockConstructor$1;->(Lkotlinx/coroutines/sync/MutexImpl;)V +Lkotlinx/coroutines/sync/MutexKt; +HSPLkotlinx/coroutines/sync/MutexKt;->()V +HSPLkotlinx/coroutines/sync/MutexKt;->Mutex$default(ZILjava/lang/Object;)Lkotlinx/coroutines/sync/Mutex; +HSPLkotlinx/coroutines/sync/MutexKt;->Mutex(Z)Lkotlinx/coroutines/sync/Mutex; +HSPLkotlinx/coroutines/sync/MutexKt;->access$getNO_OWNER$p()Lkotlinx/coroutines/internal/Symbol; +Lkotlinx/coroutines/sync/Semaphore; +Lkotlinx/coroutines/sync/SemaphoreImpl; +HSPLkotlinx/coroutines/sync/SemaphoreImpl;->()V +HSPLkotlinx/coroutines/sync/SemaphoreImpl;->(II)V +HSPLkotlinx/coroutines/sync/SemaphoreImpl;->acquire(Lkotlinx/coroutines/CancellableContinuation;)V +HSPLkotlinx/coroutines/sync/SemaphoreImpl;->addAcquireToQueue(Lkotlinx/coroutines/Waiter;)Z +HSPLkotlinx/coroutines/sync/SemaphoreImpl;->decPermits()I +HSPLkotlinx/coroutines/sync/SemaphoreImpl;->getAvailablePermits()I +HSPLkotlinx/coroutines/sync/SemaphoreImpl;->getDeqIdx$volatile$FU()Ljava/util/concurrent/atomic/AtomicLongFieldUpdater; +HSPLkotlinx/coroutines/sync/SemaphoreImpl;->getEnqIdx$volatile$FU()Ljava/util/concurrent/atomic/AtomicLongFieldUpdater; +HSPLkotlinx/coroutines/sync/SemaphoreImpl;->getHead$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/sync/SemaphoreImpl;->getTail$volatile$FU()Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLkotlinx/coroutines/sync/SemaphoreImpl;->get_availablePermits$volatile$FU()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; +HSPLkotlinx/coroutines/sync/SemaphoreImpl;->release()V +HSPLkotlinx/coroutines/sync/SemaphoreImpl;->tryAcquire()Z +HSPLkotlinx/coroutines/sync/SemaphoreImpl;->tryResumeAcquire(Ljava/lang/Object;)Z +HSPLkotlinx/coroutines/sync/SemaphoreImpl;->tryResumeNextFromQueue()Z +Lkotlinx/coroutines/sync/SemaphoreImpl$addAcquireToQueue$createNewSegment$1; +HSPLkotlinx/coroutines/sync/SemaphoreImpl$addAcquireToQueue$createNewSegment$1;->()V +HSPLkotlinx/coroutines/sync/SemaphoreImpl$addAcquireToQueue$createNewSegment$1;->()V +HSPLkotlinx/coroutines/sync/SemaphoreImpl$addAcquireToQueue$createNewSegment$1;->invoke(JLkotlinx/coroutines/sync/SemaphoreSegment;)Lkotlinx/coroutines/sync/SemaphoreSegment; +HSPLkotlinx/coroutines/sync/SemaphoreImpl$addAcquireToQueue$createNewSegment$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/coroutines/sync/SemaphoreImpl$onCancellationRelease$1; +HSPLkotlinx/coroutines/sync/SemaphoreImpl$onCancellationRelease$1;->(Lkotlinx/coroutines/sync/SemaphoreImpl;)V +Lkotlinx/coroutines/sync/SemaphoreImpl$tryResumeNextFromQueue$createNewSegment$1; +HSPLkotlinx/coroutines/sync/SemaphoreImpl$tryResumeNextFromQueue$createNewSegment$1;->()V +HSPLkotlinx/coroutines/sync/SemaphoreImpl$tryResumeNextFromQueue$createNewSegment$1;->()V +Lkotlinx/coroutines/sync/SemaphoreKt; +HSPLkotlinx/coroutines/sync/SemaphoreKt;->()V +HSPLkotlinx/coroutines/sync/SemaphoreKt;->access$createSegment(JLkotlinx/coroutines/sync/SemaphoreSegment;)Lkotlinx/coroutines/sync/SemaphoreSegment; +HSPLkotlinx/coroutines/sync/SemaphoreKt;->access$getCANCELLED$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/sync/SemaphoreKt;->access$getPERMIT$p()Lkotlinx/coroutines/internal/Symbol; +HSPLkotlinx/coroutines/sync/SemaphoreKt;->access$getSEGMENT_SIZE$p()I +HSPLkotlinx/coroutines/sync/SemaphoreKt;->createSegment(JLkotlinx/coroutines/sync/SemaphoreSegment;)Lkotlinx/coroutines/sync/SemaphoreSegment; +Lkotlinx/coroutines/sync/SemaphoreSegment; +HSPLkotlinx/coroutines/sync/SemaphoreSegment;->(JLkotlinx/coroutines/sync/SemaphoreSegment;I)V +HSPLkotlinx/coroutines/sync/SemaphoreSegment;->getAcquirers()Ljava/util/concurrent/atomic/AtomicReferenceArray; +HSPLkotlinx/coroutines/sync/SemaphoreSegment;->getNumberOfSlots()I +Lkotlinx/datetime/Clock; +Lkotlinx/datetime/Clock$System; +HSPLkotlinx/datetime/Clock$System;->()V +HSPLkotlinx/datetime/Clock$System;->()V +HSPLkotlinx/datetime/Clock$System;->now()Lkotlinx/datetime/Instant; +Lkotlinx/datetime/Instant; +HSPLkotlinx/datetime/Instant;->()V +HSPLkotlinx/datetime/Instant;->(Ljava/time/Instant;)V +HSPLkotlinx/datetime/Instant;->compareTo(Lkotlinx/datetime/Instant;)I +HSPLkotlinx/datetime/Instant;->equals(Ljava/lang/Object;)Z +HSPLkotlinx/datetime/Instant;->minus-5sfh64U(Lkotlinx/datetime/Instant;)J +HSPLkotlinx/datetime/Instant;->toEpochMilliseconds()J +Lkotlinx/datetime/Instant$Companion; +HSPLkotlinx/datetime/Instant$Companion;->()V +HSPLkotlinx/datetime/Instant$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/datetime/Instant$Companion;->now()Lkotlinx/datetime/Instant; +Lkotlinx/serialization/BinaryFormat; +Lkotlinx/serialization/DeserializationStrategy; +Lkotlinx/serialization/KSerializer; +Lkotlinx/serialization/MissingFieldException; +Lkotlinx/serialization/PolymorphicSerializer; +HSPLkotlinx/serialization/PolymorphicSerializer;->(Lkotlin/reflect/KClass;)V +HSPLkotlinx/serialization/PolymorphicSerializer;->(Lkotlin/reflect/KClass;[Ljava/lang/annotation/Annotation;)V +Lkotlinx/serialization/PolymorphicSerializer$descriptor$2; +HSPLkotlinx/serialization/PolymorphicSerializer$descriptor$2;->(Lkotlinx/serialization/PolymorphicSerializer;)V +Lkotlinx/serialization/SealedClassSerializer; +HSPLkotlinx/serialization/SealedClassSerializer;->(Ljava/lang/String;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;)V +HSPLkotlinx/serialization/SealedClassSerializer;->(Ljava/lang/String;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;[Ljava/lang/annotation/Annotation;)V +HSPLkotlinx/serialization/SealedClassSerializer;->access$getSerialName2Serializer$p(Lkotlinx/serialization/SealedClassSerializer;)Ljava/util/Map; +HSPLkotlinx/serialization/SealedClassSerializer;->access$get_annotations$p(Lkotlinx/serialization/SealedClassSerializer;)Ljava/util/List; +HSPLkotlinx/serialization/SealedClassSerializer;->getBaseClass()Lkotlin/reflect/KClass; +HSPLkotlinx/serialization/SealedClassSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/SealedClassSerializer$descriptor$2; +HSPLkotlinx/serialization/SealedClassSerializer$descriptor$2;->(Ljava/lang/String;Lkotlinx/serialization/SealedClassSerializer;)V +HSPLkotlinx/serialization/SealedClassSerializer$descriptor$2;->invoke()Ljava/lang/Object; +HSPLkotlinx/serialization/SealedClassSerializer$descriptor$2;->invoke()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/SealedClassSerializer$descriptor$2$1; +HSPLkotlinx/serialization/SealedClassSerializer$descriptor$2$1;->(Lkotlinx/serialization/SealedClassSerializer;)V +HSPLkotlinx/serialization/SealedClassSerializer$descriptor$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/serialization/SealedClassSerializer$descriptor$2$1;->invoke(Lkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder;)V +Lkotlinx/serialization/SealedClassSerializer$descriptor$2$1$elementDescriptor$1; +HSPLkotlinx/serialization/SealedClassSerializer$descriptor$2$1$elementDescriptor$1;->(Lkotlinx/serialization/SealedClassSerializer;)V +HSPLkotlinx/serialization/SealedClassSerializer$descriptor$2$1$elementDescriptor$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/serialization/SealedClassSerializer$descriptor$2$1$elementDescriptor$1;->invoke(Lkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder;)V +Lkotlinx/serialization/SealedClassSerializer$special$$inlined$groupingBy$1; +HSPLkotlinx/serialization/SealedClassSerializer$special$$inlined$groupingBy$1;->(Ljava/lang/Iterable;)V +HSPLkotlinx/serialization/SealedClassSerializer$special$$inlined$groupingBy$1;->keyOf(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/serialization/SealedClassSerializer$special$$inlined$groupingBy$1;->sourceIterator()Ljava/util/Iterator; +Lkotlinx/serialization/SerialFormat; +Lkotlinx/serialization/SerializationException; +HSPLkotlinx/serialization/SerializationException;->(Ljava/lang/String;)V +Lkotlinx/serialization/SerializationStrategy; +Lkotlinx/serialization/SerializersKt; +HSPLkotlinx/serialization/SerializersKt;->serializer(Lkotlin/reflect/KClass;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/SerializersKt;->serializerOrNull(Lkotlin/reflect/KClass;)Lkotlinx/serialization/KSerializer; +Lkotlinx/serialization/SerializersKt__SerializersKt; +HSPLkotlinx/serialization/SerializersKt__SerializersKt;->serializer(Lkotlin/reflect/KClass;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/SerializersKt__SerializersKt;->serializerOrNull(Lkotlin/reflect/KClass;)Lkotlinx/serialization/KSerializer; +Lkotlinx/serialization/StringFormat; +Lkotlinx/serialization/builtins/BuiltinSerializersKt; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->BooleanArraySerializer()Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->ByteArraySerializer()Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->CharArraySerializer()Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->DoubleArraySerializer()Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->FloatArraySerializer()Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->IntArraySerializer()Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->ListSerializer(Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->LongArraySerializer()Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->MapSerializer(Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->NothingSerializer()Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->ShortArraySerializer()Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->UByteArraySerializer()Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->UIntArraySerializer()Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->ULongArraySerializer()Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->UShortArraySerializer()Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->serializer(Lkotlin/UByte$Companion;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->serializer(Lkotlin/UInt$Companion;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->serializer(Lkotlin/ULong$Companion;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->serializer(Lkotlin/UShort$Companion;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->serializer(Lkotlin/Unit;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->serializer(Lkotlin/jvm/internal/BooleanCompanionObject;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->serializer(Lkotlin/jvm/internal/ByteCompanionObject;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->serializer(Lkotlin/jvm/internal/CharCompanionObject;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->serializer(Lkotlin/jvm/internal/DoubleCompanionObject;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->serializer(Lkotlin/jvm/internal/FloatCompanionObject;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->serializer(Lkotlin/jvm/internal/IntCompanionObject;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->serializer(Lkotlin/jvm/internal/LongCompanionObject;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->serializer(Lkotlin/jvm/internal/ShortCompanionObject;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->serializer(Lkotlin/jvm/internal/StringCompanionObject;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/builtins/BuiltinSerializersKt;->serializer(Lkotlin/time/Duration$Companion;)Lkotlinx/serialization/KSerializer; +Lkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder; +HSPLkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder;->(Ljava/lang/String;)V +HSPLkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder;->element$default(Lkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder;Ljava/lang/String;Lkotlinx/serialization/descriptors/SerialDescriptor;Ljava/util/List;ZILjava/lang/Object;)V +HSPLkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder;->element(Ljava/lang/String;Lkotlinx/serialization/descriptors/SerialDescriptor;Ljava/util/List;Z)V +HSPLkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder;->getAnnotations()Ljava/util/List; +HSPLkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder;->getElementAnnotations$kotlinx_serialization_core()Ljava/util/List; +HSPLkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder;->getElementDescriptors$kotlinx_serialization_core()Ljava/util/List; +HSPLkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder;->getElementNames$kotlinx_serialization_core()Ljava/util/List; +HSPLkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder;->getElementOptionality$kotlinx_serialization_core()Ljava/util/List; +HSPLkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder;->setAnnotations(Ljava/util/List;)V +Lkotlinx/serialization/descriptors/PolymorphicKind; +HSPLkotlinx/serialization/descriptors/PolymorphicKind;->()V +HSPLkotlinx/serialization/descriptors/PolymorphicKind;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/serialization/descriptors/PolymorphicKind$SEALED; +HSPLkotlinx/serialization/descriptors/PolymorphicKind$SEALED;->()V +HSPLkotlinx/serialization/descriptors/PolymorphicKind$SEALED;->()V +Lkotlinx/serialization/descriptors/PrimitiveKind; +HSPLkotlinx/serialization/descriptors/PrimitiveKind;->()V +HSPLkotlinx/serialization/descriptors/PrimitiveKind;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/serialization/descriptors/PrimitiveKind$BOOLEAN; +HSPLkotlinx/serialization/descriptors/PrimitiveKind$BOOLEAN;->()V +HSPLkotlinx/serialization/descriptors/PrimitiveKind$BOOLEAN;->()V +Lkotlinx/serialization/descriptors/PrimitiveKind$BYTE; +HSPLkotlinx/serialization/descriptors/PrimitiveKind$BYTE;->()V +HSPLkotlinx/serialization/descriptors/PrimitiveKind$BYTE;->()V +Lkotlinx/serialization/descriptors/PrimitiveKind$CHAR; +HSPLkotlinx/serialization/descriptors/PrimitiveKind$CHAR;->()V +HSPLkotlinx/serialization/descriptors/PrimitiveKind$CHAR;->()V +Lkotlinx/serialization/descriptors/PrimitiveKind$DOUBLE; +HSPLkotlinx/serialization/descriptors/PrimitiveKind$DOUBLE;->()V +HSPLkotlinx/serialization/descriptors/PrimitiveKind$DOUBLE;->()V +Lkotlinx/serialization/descriptors/PrimitiveKind$FLOAT; +HSPLkotlinx/serialization/descriptors/PrimitiveKind$FLOAT;->()V +HSPLkotlinx/serialization/descriptors/PrimitiveKind$FLOAT;->()V +Lkotlinx/serialization/descriptors/PrimitiveKind$INT; +HSPLkotlinx/serialization/descriptors/PrimitiveKind$INT;->()V +HSPLkotlinx/serialization/descriptors/PrimitiveKind$INT;->()V +Lkotlinx/serialization/descriptors/PrimitiveKind$LONG; +HSPLkotlinx/serialization/descriptors/PrimitiveKind$LONG;->()V +HSPLkotlinx/serialization/descriptors/PrimitiveKind$LONG;->()V +Lkotlinx/serialization/descriptors/PrimitiveKind$SHORT; +HSPLkotlinx/serialization/descriptors/PrimitiveKind$SHORT;->()V +HSPLkotlinx/serialization/descriptors/PrimitiveKind$SHORT;->()V +Lkotlinx/serialization/descriptors/PrimitiveKind$STRING; +HSPLkotlinx/serialization/descriptors/PrimitiveKind$STRING;->()V +HSPLkotlinx/serialization/descriptors/PrimitiveKind$STRING;->()V +Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/descriptors/SerialDescriptor$DefaultImpls; +HSPLkotlinx/serialization/descriptors/SerialDescriptor$DefaultImpls;->isInline(Lkotlinx/serialization/descriptors/SerialDescriptor;)Z +Lkotlinx/serialization/descriptors/SerialDescriptorImpl; +HSPLkotlinx/serialization/descriptors/SerialDescriptorImpl;->(Ljava/lang/String;Lkotlinx/serialization/descriptors/SerialKind;ILjava/util/List;Lkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder;)V +HSPLkotlinx/serialization/descriptors/SerialDescriptorImpl;->getSerialName()Ljava/lang/String; +Lkotlinx/serialization/descriptors/SerialDescriptorImpl$_hashCode$2; +HSPLkotlinx/serialization/descriptors/SerialDescriptorImpl$_hashCode$2;->(Lkotlinx/serialization/descriptors/SerialDescriptorImpl;)V +Lkotlinx/serialization/descriptors/SerialDescriptorsKt; +HSPLkotlinx/serialization/descriptors/SerialDescriptorsKt;->PrimitiveSerialDescriptor(Ljava/lang/String;Lkotlinx/serialization/descriptors/PrimitiveKind;)Lkotlinx/serialization/descriptors/SerialDescriptor; +HSPLkotlinx/serialization/descriptors/SerialDescriptorsKt;->buildSerialDescriptor$default(Ljava/lang/String;Lkotlinx/serialization/descriptors/SerialKind;[Lkotlinx/serialization/descriptors/SerialDescriptor;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lkotlinx/serialization/descriptors/SerialDescriptor; +HSPLkotlinx/serialization/descriptors/SerialDescriptorsKt;->buildSerialDescriptor(Ljava/lang/String;Lkotlinx/serialization/descriptors/SerialKind;[Lkotlinx/serialization/descriptors/SerialDescriptor;Lkotlin/jvm/functions/Function1;)Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/descriptors/SerialDescriptorsKt$buildSerialDescriptor$1; +HSPLkotlinx/serialization/descriptors/SerialDescriptorsKt$buildSerialDescriptor$1;->()V +HSPLkotlinx/serialization/descriptors/SerialDescriptorsKt$buildSerialDescriptor$1;->()V +HSPLkotlinx/serialization/descriptors/SerialDescriptorsKt$buildSerialDescriptor$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/serialization/descriptors/SerialDescriptorsKt$buildSerialDescriptor$1;->invoke(Lkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder;)V +Lkotlinx/serialization/descriptors/SerialKind; +HSPLkotlinx/serialization/descriptors/SerialKind;->()V +HSPLkotlinx/serialization/descriptors/SerialKind;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/serialization/descriptors/SerialKind$CONTEXTUAL; +HSPLkotlinx/serialization/descriptors/SerialKind$CONTEXTUAL;->()V +HSPLkotlinx/serialization/descriptors/SerialKind$CONTEXTUAL;->()V +Lkotlinx/serialization/descriptors/SerialKind$ENUM; +HSPLkotlinx/serialization/descriptors/SerialKind$ENUM;->()V +HSPLkotlinx/serialization/descriptors/SerialKind$ENUM;->()V +Lkotlinx/serialization/descriptors/StructureKind; +HSPLkotlinx/serialization/descriptors/StructureKind;->()V +HSPLkotlinx/serialization/descriptors/StructureKind;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/serialization/descriptors/StructureKind$CLASS; +HSPLkotlinx/serialization/descriptors/StructureKind$CLASS;->()V +HSPLkotlinx/serialization/descriptors/StructureKind$CLASS;->()V +Lkotlinx/serialization/descriptors/StructureKind$LIST; +HSPLkotlinx/serialization/descriptors/StructureKind$LIST;->()V +HSPLkotlinx/serialization/descriptors/StructureKind$LIST;->()V +Lkotlinx/serialization/descriptors/StructureKind$MAP; +HSPLkotlinx/serialization/descriptors/StructureKind$MAP;->()V +HSPLkotlinx/serialization/descriptors/StructureKind$MAP;->()V +Lkotlinx/serialization/descriptors/StructureKind$OBJECT; +HSPLkotlinx/serialization/descriptors/StructureKind$OBJECT;->()V +HSPLkotlinx/serialization/descriptors/StructureKind$OBJECT;->()V +Lkotlinx/serialization/encoding/AbstractDecoder; +HSPLkotlinx/serialization/encoding/AbstractDecoder;->()V +HSPLkotlinx/serialization/encoding/AbstractDecoder;->decodeSequentially()Z +HSPLkotlinx/serialization/encoding/AbstractDecoder;->decodeSerializableElement(Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/serialization/encoding/AbstractDecoder;->decodeSerializableValue(Lkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/serialization/encoding/AbstractEncoder; +HSPLkotlinx/serialization/encoding/AbstractEncoder;->()V +HSPLkotlinx/serialization/encoding/AbstractEncoder;->beginCollection(Lkotlinx/serialization/descriptors/SerialDescriptor;I)Lkotlinx/serialization/encoding/CompositeEncoder; +HSPLkotlinx/serialization/encoding/AbstractEncoder;->encodeSerializableElement(Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)V +Lkotlinx/serialization/encoding/ChunkedDecoder; +Lkotlinx/serialization/encoding/CompositeDecoder; +Lkotlinx/serialization/encoding/CompositeDecoder$DefaultImpls; +HSPLkotlinx/serialization/encoding/CompositeDecoder$DefaultImpls;->decodeSequentially(Lkotlinx/serialization/encoding/CompositeDecoder;)Z +HSPLkotlinx/serialization/encoding/CompositeDecoder$DefaultImpls;->decodeSerializableElement$default(Lkotlinx/serialization/encoding/CompositeDecoder;Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;ILjava/lang/Object;)Ljava/lang/Object; +Lkotlinx/serialization/encoding/CompositeEncoder; +Lkotlinx/serialization/encoding/Decoder; +Lkotlinx/serialization/encoding/Encoder; +Lkotlinx/serialization/encoding/Encoder$DefaultImpls; +PLkotlinx/serialization/encoding/Encoder$DefaultImpls;->beginCollection(Lkotlinx/serialization/encoding/Encoder;Lkotlinx/serialization/descriptors/SerialDescriptor;I)Lkotlinx/serialization/encoding/CompositeEncoder; +Lkotlinx/serialization/internal/AbstractCollectionSerializer; +HSPLkotlinx/serialization/internal/AbstractCollectionSerializer;->()V +HSPLkotlinx/serialization/internal/AbstractCollectionSerializer;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/serialization/internal/AbstractCollectionSerializer;->deserialize(Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; +HSPLkotlinx/serialization/internal/AbstractCollectionSerializer;->merge(Lkotlinx/serialization/encoding/Decoder;Ljava/lang/Object;)Ljava/lang/Object; +Lkotlinx/serialization/internal/AbstractPolymorphicSerializer; +HSPLkotlinx/serialization/internal/AbstractPolymorphicSerializer;->()V +Lkotlinx/serialization/internal/ArrayListClassDesc; +HSPLkotlinx/serialization/internal/ArrayListClassDesc;->(Lkotlinx/serialization/descriptors/SerialDescriptor;)V +Lkotlinx/serialization/internal/ArrayListSerializer; +HSPLkotlinx/serialization/internal/ArrayListSerializer;->(Lkotlinx/serialization/KSerializer;)V +HSPLkotlinx/serialization/internal/ArrayListSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/BooleanArraySerializer; +HSPLkotlinx/serialization/internal/BooleanArraySerializer;->()V +HSPLkotlinx/serialization/internal/BooleanArraySerializer;->()V +Lkotlinx/serialization/internal/BooleanSerializer; +HSPLkotlinx/serialization/internal/BooleanSerializer;->()V +HSPLkotlinx/serialization/internal/BooleanSerializer;->()V +HSPLkotlinx/serialization/internal/BooleanSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/ByteArraySerializer; +HSPLkotlinx/serialization/internal/ByteArraySerializer;->()V +HSPLkotlinx/serialization/internal/ByteArraySerializer;->()V +Lkotlinx/serialization/internal/ByteSerializer; +HSPLkotlinx/serialization/internal/ByteSerializer;->()V +HSPLkotlinx/serialization/internal/ByteSerializer;->()V +HSPLkotlinx/serialization/internal/ByteSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/CachedNames; +Lkotlinx/serialization/internal/CharArraySerializer; +HSPLkotlinx/serialization/internal/CharArraySerializer;->()V +HSPLkotlinx/serialization/internal/CharArraySerializer;->()V +Lkotlinx/serialization/internal/CharSerializer; +HSPLkotlinx/serialization/internal/CharSerializer;->()V +HSPLkotlinx/serialization/internal/CharSerializer;->()V +HSPLkotlinx/serialization/internal/CharSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/CollectionLikeSerializer; +HSPLkotlinx/serialization/internal/CollectionLikeSerializer;->(Lkotlinx/serialization/KSerializer;)V +HSPLkotlinx/serialization/internal/CollectionLikeSerializer;->(Lkotlinx/serialization/KSerializer;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/serialization/internal/CollectionLikeSerializer;->serialize(Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +Lkotlinx/serialization/internal/CollectionSerializer; +HSPLkotlinx/serialization/internal/CollectionSerializer;->(Lkotlinx/serialization/KSerializer;)V +HSPLkotlinx/serialization/internal/CollectionSerializer;->collectionIterator(Ljava/lang/Object;)Ljava/util/Iterator; +HSPLkotlinx/serialization/internal/CollectionSerializer;->collectionIterator(Ljava/util/Collection;)Ljava/util/Iterator; +HSPLkotlinx/serialization/internal/CollectionSerializer;->collectionSize(Ljava/lang/Object;)I +HSPLkotlinx/serialization/internal/CollectionSerializer;->collectionSize(Ljava/util/Collection;)I +Lkotlinx/serialization/internal/DoubleArraySerializer; +HSPLkotlinx/serialization/internal/DoubleArraySerializer;->()V +HSPLkotlinx/serialization/internal/DoubleArraySerializer;->()V +Lkotlinx/serialization/internal/DoubleSerializer; +HSPLkotlinx/serialization/internal/DoubleSerializer;->()V +HSPLkotlinx/serialization/internal/DoubleSerializer;->()V +HSPLkotlinx/serialization/internal/DoubleSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/DurationSerializer; +HSPLkotlinx/serialization/internal/DurationSerializer;->()V +HSPLkotlinx/serialization/internal/DurationSerializer;->()V +Lkotlinx/serialization/internal/EnumDescriptor; +HSPLkotlinx/serialization/internal/EnumDescriptor;->(Ljava/lang/String;I)V +Lkotlinx/serialization/internal/EnumDescriptor$elementDescriptors$2; +HSPLkotlinx/serialization/internal/EnumDescriptor$elementDescriptors$2;->(ILjava/lang/String;Lkotlinx/serialization/internal/EnumDescriptor;)V +Lkotlinx/serialization/internal/EnumSerializer; +HSPLkotlinx/serialization/internal/EnumSerializer;->(Ljava/lang/String;[Ljava/lang/Enum;)V +HSPLkotlinx/serialization/internal/EnumSerializer;->(Ljava/lang/String;[Ljava/lang/Enum;Lkotlinx/serialization/descriptors/SerialDescriptor;)V +Lkotlinx/serialization/internal/EnumSerializer$descriptor$2; +HSPLkotlinx/serialization/internal/EnumSerializer$descriptor$2;->(Lkotlinx/serialization/internal/EnumSerializer;Ljava/lang/String;)V +Lkotlinx/serialization/internal/EnumsKt; +HSPLkotlinx/serialization/internal/EnumsKt;->createAnnotatedEnumSerializer(Ljava/lang/String;[Ljava/lang/Enum;[Ljava/lang/String;[[Ljava/lang/annotation/Annotation;[Ljava/lang/annotation/Annotation;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/internal/EnumsKt;->createSimpleEnumSerializer(Ljava/lang/String;[Ljava/lang/Enum;)Lkotlinx/serialization/KSerializer; +Lkotlinx/serialization/internal/FloatArraySerializer; +HSPLkotlinx/serialization/internal/FloatArraySerializer;->()V +HSPLkotlinx/serialization/internal/FloatArraySerializer;->()V +Lkotlinx/serialization/internal/FloatSerializer; +HSPLkotlinx/serialization/internal/FloatSerializer;->()V +HSPLkotlinx/serialization/internal/FloatSerializer;->()V +HSPLkotlinx/serialization/internal/FloatSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/GeneratedSerializer; +Lkotlinx/serialization/internal/InlineClassDescriptor; +HSPLkotlinx/serialization/internal/InlineClassDescriptor;->(Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;)V +Lkotlinx/serialization/internal/InlineClassDescriptorKt; +HSPLkotlinx/serialization/internal/InlineClassDescriptorKt;->InlinePrimitiveDescriptor(Ljava/lang/String;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/InlineClassDescriptorKt$InlinePrimitiveDescriptor$1; +HSPLkotlinx/serialization/internal/InlineClassDescriptorKt$InlinePrimitiveDescriptor$1;->(Lkotlinx/serialization/KSerializer;)V +Lkotlinx/serialization/internal/IntArraySerializer; +HSPLkotlinx/serialization/internal/IntArraySerializer;->()V +HSPLkotlinx/serialization/internal/IntArraySerializer;->()V +Lkotlinx/serialization/internal/IntSerializer; +HSPLkotlinx/serialization/internal/IntSerializer;->()V +HSPLkotlinx/serialization/internal/IntSerializer;->()V +HSPLkotlinx/serialization/internal/IntSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/LinkedHashMapClassDesc; +HSPLkotlinx/serialization/internal/LinkedHashMapClassDesc;->(Lkotlinx/serialization/descriptors/SerialDescriptor;Lkotlinx/serialization/descriptors/SerialDescriptor;)V +Lkotlinx/serialization/internal/LinkedHashMapSerializer; +HSPLkotlinx/serialization/internal/LinkedHashMapSerializer;->(Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)V +HSPLkotlinx/serialization/internal/LinkedHashMapSerializer;->builder()Ljava/lang/Object; +HSPLkotlinx/serialization/internal/LinkedHashMapSerializer;->builder()Ljava/util/LinkedHashMap; +HSPLkotlinx/serialization/internal/LinkedHashMapSerializer;->builderSize(Ljava/lang/Object;)I +HSPLkotlinx/serialization/internal/LinkedHashMapSerializer;->builderSize(Ljava/util/LinkedHashMap;)I +HSPLkotlinx/serialization/internal/LinkedHashMapSerializer;->collectionIterator(Ljava/lang/Object;)Ljava/util/Iterator; +HSPLkotlinx/serialization/internal/LinkedHashMapSerializer;->collectionIterator(Ljava/util/Map;)Ljava/util/Iterator; +HSPLkotlinx/serialization/internal/LinkedHashMapSerializer;->collectionSize(Ljava/lang/Object;)I +HSPLkotlinx/serialization/internal/LinkedHashMapSerializer;->collectionSize(Ljava/util/Map;)I +HSPLkotlinx/serialization/internal/LinkedHashMapSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +HSPLkotlinx/serialization/internal/LinkedHashMapSerializer;->toResult(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/serialization/internal/LinkedHashMapSerializer;->toResult(Ljava/util/LinkedHashMap;)Ljava/util/Map; +Lkotlinx/serialization/internal/LinkedHashSetClassDesc; +HSPLkotlinx/serialization/internal/LinkedHashSetClassDesc;->(Lkotlinx/serialization/descriptors/SerialDescriptor;)V +Lkotlinx/serialization/internal/LinkedHashSetSerializer; +HSPLkotlinx/serialization/internal/LinkedHashSetSerializer;->(Lkotlinx/serialization/KSerializer;)V +HSPLkotlinx/serialization/internal/LinkedHashSetSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/ListLikeDescriptor; +HSPLkotlinx/serialization/internal/ListLikeDescriptor;->(Lkotlinx/serialization/descriptors/SerialDescriptor;)V +HSPLkotlinx/serialization/internal/ListLikeDescriptor;->(Lkotlinx/serialization/descriptors/SerialDescriptor;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/serialization/internal/ListLikeDescriptor;->getKind()Lkotlinx/serialization/descriptors/SerialKind; +Lkotlinx/serialization/internal/LongArraySerializer; +HSPLkotlinx/serialization/internal/LongArraySerializer;->()V +HSPLkotlinx/serialization/internal/LongArraySerializer;->()V +Lkotlinx/serialization/internal/LongSerializer; +HSPLkotlinx/serialization/internal/LongSerializer;->()V +HSPLkotlinx/serialization/internal/LongSerializer;->()V +HSPLkotlinx/serialization/internal/LongSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/MapLikeDescriptor; +HSPLkotlinx/serialization/internal/MapLikeDescriptor;->(Ljava/lang/String;Lkotlinx/serialization/descriptors/SerialDescriptor;Lkotlinx/serialization/descriptors/SerialDescriptor;)V +HSPLkotlinx/serialization/internal/MapLikeDescriptor;->(Ljava/lang/String;Lkotlinx/serialization/descriptors/SerialDescriptor;Lkotlinx/serialization/descriptors/SerialDescriptor;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/serialization/internal/MapLikeDescriptor;->getElementDescriptor(I)Lkotlinx/serialization/descriptors/SerialDescriptor; +HSPLkotlinx/serialization/internal/MapLikeDescriptor;->getElementsCount()I +HSPLkotlinx/serialization/internal/MapLikeDescriptor;->getKind()Lkotlinx/serialization/descriptors/SerialKind; +Lkotlinx/serialization/internal/MapLikeSerializer; +HSPLkotlinx/serialization/internal/MapLikeSerializer;->(Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)V +HSPLkotlinx/serialization/internal/MapLikeSerializer;->(Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/serialization/internal/MapLikeSerializer;->getKeySerializer()Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/internal/MapLikeSerializer;->getValueSerializer()Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/internal/MapLikeSerializer;->readElement(Lkotlinx/serialization/encoding/CompositeDecoder;ILjava/lang/Object;Z)V +HSPLkotlinx/serialization/internal/MapLikeSerializer;->readElement(Lkotlinx/serialization/encoding/CompositeDecoder;ILjava/util/Map;Z)V +HSPLkotlinx/serialization/internal/MapLikeSerializer;->serialize(Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +Lkotlinx/serialization/internal/NothingSerialDescriptor; +HSPLkotlinx/serialization/internal/NothingSerialDescriptor;->()V +HSPLkotlinx/serialization/internal/NothingSerialDescriptor;->()V +Lkotlinx/serialization/internal/NothingSerializer; +HSPLkotlinx/serialization/internal/NothingSerializer;->()V +HSPLkotlinx/serialization/internal/NothingSerializer;->()V +Lkotlinx/serialization/internal/ObjectSerializer; +HSPLkotlinx/serialization/internal/ObjectSerializer;->(Ljava/lang/String;Ljava/lang/Object;)V +HSPLkotlinx/serialization/internal/ObjectSerializer;->(Ljava/lang/String;Ljava/lang/Object;[Ljava/lang/annotation/Annotation;)V +HSPLkotlinx/serialization/internal/ObjectSerializer;->access$get_annotations$p(Lkotlinx/serialization/internal/ObjectSerializer;)Ljava/util/List; +HSPLkotlinx/serialization/internal/ObjectSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/ObjectSerializer$descriptor$2; +HSPLkotlinx/serialization/internal/ObjectSerializer$descriptor$2;->(Ljava/lang/String;Lkotlinx/serialization/internal/ObjectSerializer;)V +HSPLkotlinx/serialization/internal/ObjectSerializer$descriptor$2;->invoke()Ljava/lang/Object; +HSPLkotlinx/serialization/internal/ObjectSerializer$descriptor$2;->invoke()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/ObjectSerializer$descriptor$2$1; +HSPLkotlinx/serialization/internal/ObjectSerializer$descriptor$2$1;->(Lkotlinx/serialization/internal/ObjectSerializer;)V +HSPLkotlinx/serialization/internal/ObjectSerializer$descriptor$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/serialization/internal/ObjectSerializer$descriptor$2$1;->invoke(Lkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder;)V +Lkotlinx/serialization/internal/PlatformKt; +HSPLkotlinx/serialization/internal/PlatformKt;->companionOrNull(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object; +HSPLkotlinx/serialization/internal/PlatformKt;->compiledSerializerImpl(Lkotlin/reflect/KClass;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/internal/PlatformKt;->constructSerializerForGivenTypeArgs(Ljava/lang/Class;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/internal/PlatformKt;->constructSerializerForGivenTypeArgs(Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/internal/PlatformKt;->invokeSerializerOnCompanion(Ljava/lang/Object;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer; +HSPLkotlinx/serialization/internal/PlatformKt;->invokeSerializerOnDefaultCompanion(Ljava/lang/Class;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer; +Lkotlinx/serialization/internal/Platform_commonKt; +HSPLkotlinx/serialization/internal/Platform_commonKt;->()V +HSPLkotlinx/serialization/internal/Platform_commonKt;->compactArray(Ljava/util/List;)[Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/PluginGeneratedSerialDescriptor; +HSPLkotlinx/serialization/internal/PluginGeneratedSerialDescriptor;->(Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;I)V +HSPLkotlinx/serialization/internal/PluginGeneratedSerialDescriptor;->(Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;IILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/serialization/internal/PluginGeneratedSerialDescriptor;->addElement$default(Lkotlinx/serialization/internal/PluginGeneratedSerialDescriptor;Ljava/lang/String;ZILjava/lang/Object;)V +HSPLkotlinx/serialization/internal/PluginGeneratedSerialDescriptor;->addElement(Ljava/lang/String;Z)V +HSPLkotlinx/serialization/internal/PluginGeneratedSerialDescriptor;->buildIndices()Ljava/util/Map; +HSPLkotlinx/serialization/internal/PluginGeneratedSerialDescriptor;->getElementName(I)Ljava/lang/String; +HSPLkotlinx/serialization/internal/PluginGeneratedSerialDescriptor;->getElementsCount()I +HSPLkotlinx/serialization/internal/PluginGeneratedSerialDescriptor;->getKind()Lkotlinx/serialization/descriptors/SerialKind; +HSPLkotlinx/serialization/internal/PluginGeneratedSerialDescriptor;->getSerialName()Ljava/lang/String; +HSPLkotlinx/serialization/internal/PluginGeneratedSerialDescriptor;->pushAnnotation(Ljava/lang/annotation/Annotation;)V +Lkotlinx/serialization/internal/PluginGeneratedSerialDescriptor$_hashCode$2; +HSPLkotlinx/serialization/internal/PluginGeneratedSerialDescriptor$_hashCode$2;->(Lkotlinx/serialization/internal/PluginGeneratedSerialDescriptor;)V +Lkotlinx/serialization/internal/PluginGeneratedSerialDescriptor$childSerializers$2; +HSPLkotlinx/serialization/internal/PluginGeneratedSerialDescriptor$childSerializers$2;->(Lkotlinx/serialization/internal/PluginGeneratedSerialDescriptor;)V +Lkotlinx/serialization/internal/PluginGeneratedSerialDescriptor$typeParameterDescriptors$2; +HSPLkotlinx/serialization/internal/PluginGeneratedSerialDescriptor$typeParameterDescriptors$2;->(Lkotlinx/serialization/internal/PluginGeneratedSerialDescriptor;)V +Lkotlinx/serialization/internal/PrimitiveArrayDescriptor; +HSPLkotlinx/serialization/internal/PrimitiveArrayDescriptor;->(Lkotlinx/serialization/descriptors/SerialDescriptor;)V +Lkotlinx/serialization/internal/PrimitiveArraySerializer; +HSPLkotlinx/serialization/internal/PrimitiveArraySerializer;->(Lkotlinx/serialization/KSerializer;)V +Lkotlinx/serialization/internal/PrimitiveSerialDescriptor; +HSPLkotlinx/serialization/internal/PrimitiveSerialDescriptor;->(Ljava/lang/String;Lkotlinx/serialization/descriptors/PrimitiveKind;)V +HSPLkotlinx/serialization/internal/PrimitiveSerialDescriptor;->getKind()Lkotlinx/serialization/descriptors/PrimitiveKind; +HSPLkotlinx/serialization/internal/PrimitiveSerialDescriptor;->getKind()Lkotlinx/serialization/descriptors/SerialKind; +HSPLkotlinx/serialization/internal/PrimitiveSerialDescriptor;->getSerialName()Ljava/lang/String; +HSPLkotlinx/serialization/internal/PrimitiveSerialDescriptor;->isInline()Z +Lkotlinx/serialization/internal/PrimitivesKt; +HSPLkotlinx/serialization/internal/PrimitivesKt;->()V +PLkotlinx/serialization/internal/PrimitivesKt;->PrimitiveDescriptorSafe(Ljava/lang/String;Lkotlinx/serialization/descriptors/PrimitiveKind;)Lkotlinx/serialization/descriptors/SerialDescriptor; +HSPLkotlinx/serialization/internal/PrimitivesKt;->capitalize(Ljava/lang/String;)Ljava/lang/String; +HSPLkotlinx/serialization/internal/PrimitivesKt;->checkName(Ljava/lang/String;)V +Lkotlinx/serialization/internal/ShortArraySerializer; +HSPLkotlinx/serialization/internal/ShortArraySerializer;->()V +HSPLkotlinx/serialization/internal/ShortArraySerializer;->()V +Lkotlinx/serialization/internal/ShortSerializer; +HSPLkotlinx/serialization/internal/ShortSerializer;->()V +HSPLkotlinx/serialization/internal/ShortSerializer;->()V +HSPLkotlinx/serialization/internal/ShortSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/StringSerializer; +HSPLkotlinx/serialization/internal/StringSerializer;->()V +HSPLkotlinx/serialization/internal/StringSerializer;->()V +HSPLkotlinx/serialization/internal/StringSerializer;->deserialize(Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; +HSPLkotlinx/serialization/internal/StringSerializer;->deserialize(Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/String; +HSPLkotlinx/serialization/internal/StringSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +HSPLkotlinx/serialization/internal/StringSerializer;->serialize(Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +HSPLkotlinx/serialization/internal/StringSerializer;->serialize(Lkotlinx/serialization/encoding/Encoder;Ljava/lang/String;)V +Lkotlinx/serialization/internal/UByteArraySerializer; +HSPLkotlinx/serialization/internal/UByteArraySerializer;->()V +HSPLkotlinx/serialization/internal/UByteArraySerializer;->()V +Lkotlinx/serialization/internal/UByteSerializer; +HSPLkotlinx/serialization/internal/UByteSerializer;->()V +HSPLkotlinx/serialization/internal/UByteSerializer;->()V +HSPLkotlinx/serialization/internal/UByteSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/UIntArraySerializer; +HSPLkotlinx/serialization/internal/UIntArraySerializer;->()V +HSPLkotlinx/serialization/internal/UIntArraySerializer;->()V +Lkotlinx/serialization/internal/UIntSerializer; +HSPLkotlinx/serialization/internal/UIntSerializer;->()V +HSPLkotlinx/serialization/internal/UIntSerializer;->()V +HSPLkotlinx/serialization/internal/UIntSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/ULongArraySerializer; +HSPLkotlinx/serialization/internal/ULongArraySerializer;->()V +HSPLkotlinx/serialization/internal/ULongArraySerializer;->()V +Lkotlinx/serialization/internal/ULongSerializer; +HSPLkotlinx/serialization/internal/ULongSerializer;->()V +HSPLkotlinx/serialization/internal/ULongSerializer;->()V +HSPLkotlinx/serialization/internal/ULongSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/UShortArraySerializer; +HSPLkotlinx/serialization/internal/UShortArraySerializer;->()V +HSPLkotlinx/serialization/internal/UShortArraySerializer;->()V +Lkotlinx/serialization/internal/UShortSerializer; +HSPLkotlinx/serialization/internal/UShortSerializer;->()V +HSPLkotlinx/serialization/internal/UShortSerializer;->()V +HSPLkotlinx/serialization/internal/UShortSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +Lkotlinx/serialization/internal/UnitSerializer; +HSPLkotlinx/serialization/internal/UnitSerializer;->()V +HSPLkotlinx/serialization/internal/UnitSerializer;->()V +Lkotlinx/serialization/json/Json; +HSPLkotlinx/serialization/json/Json;->()V +HSPLkotlinx/serialization/json/Json;->(Lkotlinx/serialization/json/JsonConfiguration;Lkotlinx/serialization/modules/SerializersModule;)V +HSPLkotlinx/serialization/json/Json;->(Lkotlinx/serialization/json/JsonConfiguration;Lkotlinx/serialization/modules/SerializersModule;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/serialization/json/Json;->decodeFromString(Lkotlinx/serialization/DeserializationStrategy;Ljava/lang/String;)Ljava/lang/Object; +HSPLkotlinx/serialization/json/Json;->encodeToString(Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)Ljava/lang/String; +HSPLkotlinx/serialization/json/Json;->getConfiguration()Lkotlinx/serialization/json/JsonConfiguration; +HSPLkotlinx/serialization/json/Json;->getSerializersModule()Lkotlinx/serialization/modules/SerializersModule; +Lkotlinx/serialization/json/Json$Default; +HSPLkotlinx/serialization/json/Json$Default;->()V +HSPLkotlinx/serialization/json/Json$Default;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/serialization/json/JsonArray; +HSPLkotlinx/serialization/json/JsonArray;->()V +HSPLkotlinx/serialization/json/JsonArray;->(Ljava/util/List;)V +HSPLkotlinx/serialization/json/JsonArray;->getSize()I +HSPLkotlinx/serialization/json/JsonArray;->iterator()Ljava/util/Iterator; +HSPLkotlinx/serialization/json/JsonArray;->size()I +Lkotlinx/serialization/json/JsonArray$Companion; +HSPLkotlinx/serialization/json/JsonArray$Companion;->()V +HSPLkotlinx/serialization/json/JsonArray$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/serialization/json/JsonArraySerializer; +HSPLkotlinx/serialization/json/JsonArraySerializer;->()V +HSPLkotlinx/serialization/json/JsonArraySerializer;->()V +HSPLkotlinx/serialization/json/JsonArraySerializer;->serialize(Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +HSPLkotlinx/serialization/json/JsonArraySerializer;->serialize(Lkotlinx/serialization/encoding/Encoder;Lkotlinx/serialization/json/JsonArray;)V +Lkotlinx/serialization/json/JsonArraySerializer$JsonArrayDescriptor; +HSPLkotlinx/serialization/json/JsonArraySerializer$JsonArrayDescriptor;->()V +HSPLkotlinx/serialization/json/JsonArraySerializer$JsonArrayDescriptor;->()V +Lkotlinx/serialization/json/JsonBuilder; +HSPLkotlinx/serialization/json/JsonBuilder;->(Lkotlinx/serialization/json/Json;)V +HSPLkotlinx/serialization/json/JsonBuilder;->build$kotlinx_serialization_json()Lkotlinx/serialization/json/JsonConfiguration; +HSPLkotlinx/serialization/json/JsonBuilder;->getSerializersModule()Lkotlinx/serialization/modules/SerializersModule; +HSPLkotlinx/serialization/json/JsonBuilder;->setCoerceInputValues(Z)V +HSPLkotlinx/serialization/json/JsonBuilder;->setIgnoreUnknownKeys(Z)V +HSPLkotlinx/serialization/json/JsonBuilder;->setLenient(Z)V +HSPLkotlinx/serialization/json/JsonBuilder;->setPrettyPrint(Z)V +HSPLkotlinx/serialization/json/JsonBuilder;->setSerializersModule(Lkotlinx/serialization/modules/SerializersModule;)V +Lkotlinx/serialization/json/JsonConfiguration; +HSPLkotlinx/serialization/json/JsonConfiguration;->(ZZZZZZLjava/lang/String;ZZLjava/lang/String;ZZLkotlinx/serialization/json/JsonNamingStrategy;ZZ)V +HSPLkotlinx/serialization/json/JsonConfiguration;->(ZZZZZZLjava/lang/String;ZZLjava/lang/String;ZZLkotlinx/serialization/json/JsonNamingStrategy;ZZILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/serialization/json/JsonConfiguration;->getAllowSpecialFloatingPointValues()Z +HSPLkotlinx/serialization/json/JsonConfiguration;->getAllowStructuredMapKeys()Z +HSPLkotlinx/serialization/json/JsonConfiguration;->getAllowTrailingComma()Z +HSPLkotlinx/serialization/json/JsonConfiguration;->getClassDiscriminator()Ljava/lang/String; +HSPLkotlinx/serialization/json/JsonConfiguration;->getCoerceInputValues()Z +HSPLkotlinx/serialization/json/JsonConfiguration;->getDecodeEnumsCaseInsensitive()Z +HSPLkotlinx/serialization/json/JsonConfiguration;->getEncodeDefaults()Z +HSPLkotlinx/serialization/json/JsonConfiguration;->getExplicitNulls()Z +HSPLkotlinx/serialization/json/JsonConfiguration;->getIgnoreUnknownKeys()Z +HSPLkotlinx/serialization/json/JsonConfiguration;->getNamingStrategy()Lkotlinx/serialization/json/JsonNamingStrategy; +HSPLkotlinx/serialization/json/JsonConfiguration;->getPrettyPrint()Z +HSPLkotlinx/serialization/json/JsonConfiguration;->getPrettyPrintIndent()Ljava/lang/String; +HSPLkotlinx/serialization/json/JsonConfiguration;->getUseAlternativeNames()Z +HSPLkotlinx/serialization/json/JsonConfiguration;->getUseArrayPolymorphism()Z +HSPLkotlinx/serialization/json/JsonConfiguration;->isLenient()Z +Lkotlinx/serialization/json/JsonDecoder; +Lkotlinx/serialization/json/JsonElement; +HSPLkotlinx/serialization/json/JsonElement;->()V +HSPLkotlinx/serialization/json/JsonElement;->()V +HSPLkotlinx/serialization/json/JsonElement;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/serialization/json/JsonElement$Companion; +HSPLkotlinx/serialization/json/JsonElement$Companion;->()V +HSPLkotlinx/serialization/json/JsonElement$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/serialization/json/JsonElement$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lkotlinx/serialization/json/JsonElementKt; +HSPLkotlinx/serialization/json/JsonElementKt;->()V +PLkotlinx/serialization/json/JsonElementKt;->JsonPrimitive(Ljava/lang/Boolean;)Lkotlinx/serialization/json/JsonPrimitive; +HSPLkotlinx/serialization/json/JsonElementKt;->getBooleanOrNull(Lkotlinx/serialization/json/JsonPrimitive;)Ljava/lang/Boolean; +HSPLkotlinx/serialization/json/JsonElementKt;->getJsonArray(Lkotlinx/serialization/json/JsonElement;)Lkotlinx/serialization/json/JsonArray; +HSPLkotlinx/serialization/json/JsonElementKt;->getJsonPrimitive(Lkotlinx/serialization/json/JsonElement;)Lkotlinx/serialization/json/JsonPrimitive; +Lkotlinx/serialization/json/JsonElementSerializer; +HSPLkotlinx/serialization/json/JsonElementSerializer;->()V +HSPLkotlinx/serialization/json/JsonElementSerializer;->()V +HSPLkotlinx/serialization/json/JsonElementSerializer;->deserialize(Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; +HSPLkotlinx/serialization/json/JsonElementSerializer;->deserialize(Lkotlinx/serialization/encoding/Decoder;)Lkotlinx/serialization/json/JsonElement; +HSPLkotlinx/serialization/json/JsonElementSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +HSPLkotlinx/serialization/json/JsonElementSerializer;->serialize(Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +HSPLkotlinx/serialization/json/JsonElementSerializer;->serialize(Lkotlinx/serialization/encoding/Encoder;Lkotlinx/serialization/json/JsonElement;)V +Lkotlinx/serialization/json/JsonElementSerializer$descriptor$1; +HSPLkotlinx/serialization/json/JsonElementSerializer$descriptor$1;->()V +HSPLkotlinx/serialization/json/JsonElementSerializer$descriptor$1;->()V +HSPLkotlinx/serialization/json/JsonElementSerializer$descriptor$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/serialization/json/JsonElementSerializer$descriptor$1;->invoke(Lkotlinx/serialization/descriptors/ClassSerialDescriptorBuilder;)V +Lkotlinx/serialization/json/JsonElementSerializer$descriptor$1$1; +HSPLkotlinx/serialization/json/JsonElementSerializer$descriptor$1$1;->()V +HSPLkotlinx/serialization/json/JsonElementSerializer$descriptor$1$1;->()V +Lkotlinx/serialization/json/JsonElementSerializer$descriptor$1$2; +HSPLkotlinx/serialization/json/JsonElementSerializer$descriptor$1$2;->()V +HSPLkotlinx/serialization/json/JsonElementSerializer$descriptor$1$2;->()V +Lkotlinx/serialization/json/JsonElementSerializer$descriptor$1$3; +HSPLkotlinx/serialization/json/JsonElementSerializer$descriptor$1$3;->()V +HSPLkotlinx/serialization/json/JsonElementSerializer$descriptor$1$3;->()V +Lkotlinx/serialization/json/JsonElementSerializer$descriptor$1$4; +HSPLkotlinx/serialization/json/JsonElementSerializer$descriptor$1$4;->()V +HSPLkotlinx/serialization/json/JsonElementSerializer$descriptor$1$4;->()V +Lkotlinx/serialization/json/JsonElementSerializer$descriptor$1$5; +HSPLkotlinx/serialization/json/JsonElementSerializer$descriptor$1$5;->()V +HSPLkotlinx/serialization/json/JsonElementSerializer$descriptor$1$5;->()V +Lkotlinx/serialization/json/JsonElementSerializersKt; +HSPLkotlinx/serialization/json/JsonElementSerializersKt;->access$defer(Lkotlin/jvm/functions/Function0;)Lkotlinx/serialization/descriptors/SerialDescriptor; +HSPLkotlinx/serialization/json/JsonElementSerializersKt;->access$verify(Lkotlinx/serialization/encoding/Decoder;)V +HSPLkotlinx/serialization/json/JsonElementSerializersKt;->access$verify(Lkotlinx/serialization/encoding/Encoder;)V +HSPLkotlinx/serialization/json/JsonElementSerializersKt;->asJsonDecoder(Lkotlinx/serialization/encoding/Decoder;)Lkotlinx/serialization/json/JsonDecoder; +HSPLkotlinx/serialization/json/JsonElementSerializersKt;->asJsonEncoder(Lkotlinx/serialization/encoding/Encoder;)Lkotlinx/serialization/json/JsonEncoder; +HSPLkotlinx/serialization/json/JsonElementSerializersKt;->defer(Lkotlin/jvm/functions/Function0;)Lkotlinx/serialization/descriptors/SerialDescriptor; +HSPLkotlinx/serialization/json/JsonElementSerializersKt;->verify(Lkotlinx/serialization/encoding/Decoder;)V +HSPLkotlinx/serialization/json/JsonElementSerializersKt;->verify(Lkotlinx/serialization/encoding/Encoder;)V +Lkotlinx/serialization/json/JsonElementSerializersKt$defer$1; +HSPLkotlinx/serialization/json/JsonElementSerializersKt$defer$1;->(Lkotlin/jvm/functions/Function0;)V +Lkotlinx/serialization/json/JsonEncoder; +Lkotlinx/serialization/json/JsonImpl; +HSPLkotlinx/serialization/json/JsonImpl;->(Lkotlinx/serialization/json/JsonConfiguration;Lkotlinx/serialization/modules/SerializersModule;)V +HSPLkotlinx/serialization/json/JsonImpl;->validateConfiguration()V +Lkotlinx/serialization/json/JsonKt; +HSPLkotlinx/serialization/json/JsonKt;->Json$default(Lkotlinx/serialization/json/Json;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lkotlinx/serialization/json/Json; +HSPLkotlinx/serialization/json/JsonKt;->Json(Lkotlinx/serialization/json/Json;Lkotlin/jvm/functions/Function1;)Lkotlinx/serialization/json/Json; +Lkotlinx/serialization/json/JsonLiteral; +HSPLkotlinx/serialization/json/JsonLiteral;->(Ljava/lang/Object;ZLkotlinx/serialization/descriptors/SerialDescriptor;)V +HSPLkotlinx/serialization/json/JsonLiteral;->(Ljava/lang/Object;ZLkotlinx/serialization/descriptors/SerialDescriptor;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/serialization/json/JsonLiteral;->getCoerceToInlineType$kotlinx_serialization_json()Lkotlinx/serialization/descriptors/SerialDescriptor; +HSPLkotlinx/serialization/json/JsonLiteral;->getContent()Ljava/lang/String; +HSPLkotlinx/serialization/json/JsonLiteral;->isString()Z +Lkotlinx/serialization/json/JsonLiteralSerializer; +HSPLkotlinx/serialization/json/JsonLiteralSerializer;->()V +HSPLkotlinx/serialization/json/JsonLiteralSerializer;->()V +HSPLkotlinx/serialization/json/JsonLiteralSerializer;->serialize(Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +HSPLkotlinx/serialization/json/JsonLiteralSerializer;->serialize(Lkotlinx/serialization/encoding/Encoder;Lkotlinx/serialization/json/JsonLiteral;)V +Lkotlinx/serialization/json/JsonNames; +Lkotlinx/serialization/json/JsonNamingStrategy; +Lkotlinx/serialization/json/JsonNull; +HSPLkotlinx/serialization/json/JsonNull;->()V +HSPLkotlinx/serialization/json/JsonNull;->()V +Lkotlinx/serialization/json/JsonNull$1; +HSPLkotlinx/serialization/json/JsonNull$1;->()V +HSPLkotlinx/serialization/json/JsonNull$1;->()V +Lkotlinx/serialization/json/JsonNullSerializer; +HSPLkotlinx/serialization/json/JsonNullSerializer;->()V +HSPLkotlinx/serialization/json/JsonNullSerializer;->()V +HSPLkotlinx/serialization/json/JsonNullSerializer;->serialize(Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +HSPLkotlinx/serialization/json/JsonNullSerializer;->serialize(Lkotlinx/serialization/encoding/Encoder;Lkotlinx/serialization/json/JsonNull;)V +Lkotlinx/serialization/json/JsonObject; +HSPLkotlinx/serialization/json/JsonObject;->()V +HSPLkotlinx/serialization/json/JsonObject;->(Ljava/util/Map;)V +HSPLkotlinx/serialization/json/JsonObject;->entrySet()Ljava/util/Set; +HSPLkotlinx/serialization/json/JsonObject;->getEntries()Ljava/util/Set; +HSPLkotlinx/serialization/json/JsonObject;->getSize()I +HSPLkotlinx/serialization/json/JsonObject;->size()I +Lkotlinx/serialization/json/JsonObject$Companion; +HSPLkotlinx/serialization/json/JsonObject$Companion;->()V +HSPLkotlinx/serialization/json/JsonObject$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlinx/serialization/json/JsonObject$Companion;->serializer()Lkotlinx/serialization/KSerializer; +Lkotlinx/serialization/json/JsonObjectSerializer; +HSPLkotlinx/serialization/json/JsonObjectSerializer;->()V +HSPLkotlinx/serialization/json/JsonObjectSerializer;->()V +HSPLkotlinx/serialization/json/JsonObjectSerializer;->deserialize(Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; +HSPLkotlinx/serialization/json/JsonObjectSerializer;->deserialize(Lkotlinx/serialization/encoding/Decoder;)Lkotlinx/serialization/json/JsonObject; +HSPLkotlinx/serialization/json/JsonObjectSerializer;->getDescriptor()Lkotlinx/serialization/descriptors/SerialDescriptor; +HSPLkotlinx/serialization/json/JsonObjectSerializer;->serialize(Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +HSPLkotlinx/serialization/json/JsonObjectSerializer;->serialize(Lkotlinx/serialization/encoding/Encoder;Lkotlinx/serialization/json/JsonObject;)V +Lkotlinx/serialization/json/JsonObjectSerializer$JsonObjectDescriptor; +HSPLkotlinx/serialization/json/JsonObjectSerializer$JsonObjectDescriptor;->()V +HSPLkotlinx/serialization/json/JsonObjectSerializer$JsonObjectDescriptor;->()V +Lkotlinx/serialization/json/JsonPrimitive; +HSPLkotlinx/serialization/json/JsonPrimitive;->()V +HSPLkotlinx/serialization/json/JsonPrimitive;->()V +HSPLkotlinx/serialization/json/JsonPrimitive;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/serialization/json/JsonPrimitive$Companion; +HSPLkotlinx/serialization/json/JsonPrimitive$Companion;->()V +HSPLkotlinx/serialization/json/JsonPrimitive$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/serialization/json/JsonPrimitiveSerializer; +HSPLkotlinx/serialization/json/JsonPrimitiveSerializer;->()V +HSPLkotlinx/serialization/json/JsonPrimitiveSerializer;->()V +HSPLkotlinx/serialization/json/JsonPrimitiveSerializer;->serialize(Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +HSPLkotlinx/serialization/json/JsonPrimitiveSerializer;->serialize(Lkotlinx/serialization/encoding/Encoder;Lkotlinx/serialization/json/JsonPrimitive;)V +Lkotlinx/serialization/json/internal/AbstractJsonLexer; +HSPLkotlinx/serialization/json/internal/AbstractJsonLexer;->()V +HSPLkotlinx/serialization/json/internal/AbstractJsonLexer;->consumeNextToken(B)B +HSPLkotlinx/serialization/json/internal/AbstractJsonLexer;->consumeString()Ljava/lang/String; +HSPLkotlinx/serialization/json/internal/AbstractJsonLexer;->consumeStringLenient()Ljava/lang/String; +HSPLkotlinx/serialization/json/internal/AbstractJsonLexer;->consumeStringLenientNotNull()Ljava/lang/String; +HSPLkotlinx/serialization/json/internal/AbstractJsonLexer;->expectEof()V +HSPLkotlinx/serialization/json/internal/AbstractJsonLexer;->fail$default(Lkotlinx/serialization/json/internal/AbstractJsonLexer;Ljava/lang/String;ILjava/lang/String;ILjava/lang/Object;)Ljava/lang/Void; +HSPLkotlinx/serialization/json/internal/AbstractJsonLexer;->fail$kotlinx_serialization_json$default(Lkotlinx/serialization/json/internal/AbstractJsonLexer;BZILjava/lang/Object;)Ljava/lang/Void; +HSPLkotlinx/serialization/json/internal/AbstractJsonLexer;->fail$kotlinx_serialization_json(BZ)Ljava/lang/Void; +HSPLkotlinx/serialization/json/internal/AbstractJsonLexer;->fail(Ljava/lang/String;ILjava/lang/String;)Ljava/lang/Void; +HSPLkotlinx/serialization/json/internal/AbstractJsonLexer;->isValidValueStart(C)Z +HSPLkotlinx/serialization/json/internal/AbstractJsonLexer;->peekNextToken()B +HSPLkotlinx/serialization/json/internal/AbstractJsonLexer;->substring(II)Ljava/lang/String; +HSPLkotlinx/serialization/json/internal/AbstractJsonLexer;->unexpectedToken(C)V +Lkotlinx/serialization/json/internal/AbstractJsonLexerKt; +HSPLkotlinx/serialization/json/internal/AbstractJsonLexerKt;->charToTokenClass(C)B +HSPLkotlinx/serialization/json/internal/AbstractJsonLexerKt;->tokenDescription(B)Ljava/lang/String; +Lkotlinx/serialization/json/internal/ArrayPoolsKt; +HSPLkotlinx/serialization/json/internal/ArrayPoolsKt;->()V +HSPLkotlinx/serialization/json/internal/ArrayPoolsKt;->access$getMAX_CHARS_IN_POOL$p()I +Lkotlinx/serialization/json/internal/CharArrayPool; +HSPLkotlinx/serialization/json/internal/CharArrayPool;->()V +HSPLkotlinx/serialization/json/internal/CharArrayPool;->()V +HSPLkotlinx/serialization/json/internal/CharArrayPool;->release([C)V +HSPLkotlinx/serialization/json/internal/CharArrayPool;->take()[C +Lkotlinx/serialization/json/internal/CharArrayPoolBase; +HSPLkotlinx/serialization/json/internal/CharArrayPoolBase;->()V +HSPLkotlinx/serialization/json/internal/CharArrayPoolBase;->releaseImpl([C)V +HSPLkotlinx/serialization/json/internal/CharArrayPoolBase;->take(I)[C +Lkotlinx/serialization/json/internal/CharMappings; +HSPLkotlinx/serialization/json/internal/CharMappings;->()V +HSPLkotlinx/serialization/json/internal/CharMappings;->()V +HSPLkotlinx/serialization/json/internal/CharMappings;->initC2ESC(CC)V +HSPLkotlinx/serialization/json/internal/CharMappings;->initC2ESC(IC)V +HSPLkotlinx/serialization/json/internal/CharMappings;->initC2TC(CB)V +HSPLkotlinx/serialization/json/internal/CharMappings;->initC2TC(IB)V +HSPLkotlinx/serialization/json/internal/CharMappings;->initCharToToken()V +HSPLkotlinx/serialization/json/internal/CharMappings;->initEscape()V +Lkotlinx/serialization/json/internal/Composer; +HSPLkotlinx/serialization/json/internal/Composer;->(Lkotlinx/serialization/json/internal/InternalJsonWriter;)V +HSPLkotlinx/serialization/json/internal/Composer;->getWritingFirst()Z +HSPLkotlinx/serialization/json/internal/Composer;->indent()V +HSPLkotlinx/serialization/json/internal/Composer;->nextItem()V +HSPLkotlinx/serialization/json/internal/Composer;->print(C)V +HSPLkotlinx/serialization/json/internal/Composer;->print(Ljava/lang/String;)V +HSPLkotlinx/serialization/json/internal/Composer;->print(Z)V +HSPLkotlinx/serialization/json/internal/Composer;->printQuoted(Ljava/lang/String;)V +HSPLkotlinx/serialization/json/internal/Composer;->space()V +HSPLkotlinx/serialization/json/internal/Composer;->unIndent()V +Lkotlinx/serialization/json/internal/ComposersKt; +HSPLkotlinx/serialization/json/internal/ComposersKt;->Composer(Lkotlinx/serialization/json/internal/InternalJsonWriter;Lkotlinx/serialization/json/Json;)Lkotlinx/serialization/json/internal/Composer; +Lkotlinx/serialization/json/internal/CreateMapForCacheKt; +HSPLkotlinx/serialization/json/internal/CreateMapForCacheKt;->createMapForCache(I)Ljava/util/Map; +Lkotlinx/serialization/json/internal/DescriptorSchemaCache; +HSPLkotlinx/serialization/json/internal/DescriptorSchemaCache;->()V +Lkotlinx/serialization/json/internal/InternalJsonWriter; +Lkotlinx/serialization/json/internal/JsonDecodingException; +HSPLkotlinx/serialization/json/internal/JsonDecodingException;->(Ljava/lang/String;)V +Lkotlinx/serialization/json/internal/JsonElementMarker; +Lkotlinx/serialization/json/internal/JsonException; +HSPLkotlinx/serialization/json/internal/JsonException;->(Ljava/lang/String;)V +Lkotlinx/serialization/json/internal/JsonExceptionsKt; +HSPLkotlinx/serialization/json/internal/JsonExceptionsKt;->JsonDecodingException(ILjava/lang/String;)Lkotlinx/serialization/json/internal/JsonDecodingException; +HSPLkotlinx/serialization/json/internal/JsonExceptionsKt;->JsonDecodingException(ILjava/lang/String;Ljava/lang/CharSequence;)Lkotlinx/serialization/json/internal/JsonDecodingException; +HSPLkotlinx/serialization/json/internal/JsonExceptionsKt;->minify(Ljava/lang/CharSequence;I)Ljava/lang/CharSequence; +Lkotlinx/serialization/json/internal/JsonPath; +HSPLkotlinx/serialization/json/internal/JsonPath;->()V +HSPLkotlinx/serialization/json/internal/JsonPath;->getPath()Ljava/lang/String; +HSPLkotlinx/serialization/json/internal/JsonPath;->popDescriptor()V +HSPLkotlinx/serialization/json/internal/JsonPath;->pushDescriptor(Lkotlinx/serialization/descriptors/SerialDescriptor;)V +HSPLkotlinx/serialization/json/internal/JsonPath;->resetCurrentMapKey()V +HSPLkotlinx/serialization/json/internal/JsonPath;->updateCurrentMapKey(Ljava/lang/Object;)V +Lkotlinx/serialization/json/internal/JsonStreamsKt; +HSPLkotlinx/serialization/json/internal/JsonStreamsKt;->encodeByWriter(Lkotlinx/serialization/json/Json;Lkotlinx/serialization/json/internal/InternalJsonWriter;Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)V +Lkotlinx/serialization/json/internal/JsonToStringWriter; +HSPLkotlinx/serialization/json/internal/JsonToStringWriter;->()V +HSPLkotlinx/serialization/json/internal/JsonToStringWriter;->ensureAdditionalCapacity(I)V +HSPLkotlinx/serialization/json/internal/JsonToStringWriter;->ensureTotalCapacity(II)I +HSPLkotlinx/serialization/json/internal/JsonToStringWriter;->release()V +HSPLkotlinx/serialization/json/internal/JsonToStringWriter;->toString()Ljava/lang/String; +HSPLkotlinx/serialization/json/internal/JsonToStringWriter;->write(Ljava/lang/String;)V +HSPLkotlinx/serialization/json/internal/JsonToStringWriter;->writeChar(C)V +HSPLkotlinx/serialization/json/internal/JsonToStringWriter;->writeQuoted(Ljava/lang/String;)V +Lkotlinx/serialization/json/internal/JsonTreeReader; +HSPLkotlinx/serialization/json/internal/JsonTreeReader;->(Lkotlinx/serialization/json/JsonConfiguration;Lkotlinx/serialization/json/internal/AbstractJsonLexer;)V +HSPLkotlinx/serialization/json/internal/JsonTreeReader;->read()Lkotlinx/serialization/json/JsonElement; +HSPLkotlinx/serialization/json/internal/JsonTreeReader;->readArray()Lkotlinx/serialization/json/JsonElement; +HSPLkotlinx/serialization/json/internal/JsonTreeReader;->readValue(Z)Lkotlinx/serialization/json/JsonPrimitive; +Lkotlinx/serialization/json/internal/PolymorphismValidator; +HSPLkotlinx/serialization/json/internal/PolymorphismValidator;->(ZLjava/lang/String;)V +HSPLkotlinx/serialization/json/internal/PolymorphismValidator;->checkDiscriminatorCollisions(Lkotlinx/serialization/descriptors/SerialDescriptor;Lkotlin/reflect/KClass;)V +HSPLkotlinx/serialization/json/internal/PolymorphismValidator;->checkKind(Lkotlinx/serialization/descriptors/SerialDescriptor;Lkotlin/reflect/KClass;)V +HSPLkotlinx/serialization/json/internal/PolymorphismValidator;->polymorphic(Lkotlin/reflect/KClass;Lkotlin/reflect/KClass;Lkotlinx/serialization/KSerializer;)V +HSPLkotlinx/serialization/json/internal/PolymorphismValidator;->polymorphicDefaultDeserializer(Lkotlin/reflect/KClass;Lkotlin/jvm/functions/Function1;)V +Lkotlinx/serialization/json/internal/StreamingJsonDecoder; +HSPLkotlinx/serialization/json/internal/StreamingJsonDecoder;->(Lkotlinx/serialization/json/Json;Lkotlinx/serialization/json/internal/WriteMode;Lkotlinx/serialization/json/internal/AbstractJsonLexer;Lkotlinx/serialization/descriptors/SerialDescriptor;Lkotlinx/serialization/json/internal/StreamingJsonDecoder$DiscriminatorHolder;)V +HSPLkotlinx/serialization/json/internal/StreamingJsonDecoder;->beginStructure(Lkotlinx/serialization/descriptors/SerialDescriptor;)Lkotlinx/serialization/encoding/CompositeDecoder; +HSPLkotlinx/serialization/json/internal/StreamingJsonDecoder;->decodeElementIndex(Lkotlinx/serialization/descriptors/SerialDescriptor;)I +HSPLkotlinx/serialization/json/internal/StreamingJsonDecoder;->decodeJsonElement()Lkotlinx/serialization/json/JsonElement; +HSPLkotlinx/serialization/json/internal/StreamingJsonDecoder;->decodeMapIndex()I +HSPLkotlinx/serialization/json/internal/StreamingJsonDecoder;->decodeSerializableElement(Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object; +HSPLkotlinx/serialization/json/internal/StreamingJsonDecoder;->decodeSerializableValue(Lkotlinx/serialization/DeserializationStrategy;)Ljava/lang/Object; +HSPLkotlinx/serialization/json/internal/StreamingJsonDecoder;->decodeString()Ljava/lang/String; +HSPLkotlinx/serialization/json/internal/StreamingJsonDecoder;->endStructure(Lkotlinx/serialization/descriptors/SerialDescriptor;)V +Lkotlinx/serialization/json/internal/StreamingJsonDecoder$DiscriminatorHolder; +Lkotlinx/serialization/json/internal/StreamingJsonDecoder$WhenMappings; +HSPLkotlinx/serialization/json/internal/StreamingJsonDecoder$WhenMappings;->()V +Lkotlinx/serialization/json/internal/StreamingJsonEncoder; +HSPLkotlinx/serialization/json/internal/StreamingJsonEncoder;->(Lkotlinx/serialization/json/internal/Composer;Lkotlinx/serialization/json/Json;Lkotlinx/serialization/json/internal/WriteMode;[Lkotlinx/serialization/json/JsonEncoder;)V +HSPLkotlinx/serialization/json/internal/StreamingJsonEncoder;->(Lkotlinx/serialization/json/internal/InternalJsonWriter;Lkotlinx/serialization/json/Json;Lkotlinx/serialization/json/internal/WriteMode;[Lkotlinx/serialization/json/JsonEncoder;)V +HSPLkotlinx/serialization/json/internal/StreamingJsonEncoder;->beginStructure(Lkotlinx/serialization/descriptors/SerialDescriptor;)Lkotlinx/serialization/encoding/CompositeEncoder; +HSPLkotlinx/serialization/json/internal/StreamingJsonEncoder;->encodeBoolean(Z)V +HSPLkotlinx/serialization/json/internal/StreamingJsonEncoder;->encodeElement(Lkotlinx/serialization/descriptors/SerialDescriptor;I)Z +HSPLkotlinx/serialization/json/internal/StreamingJsonEncoder;->encodeNull()V +HSPLkotlinx/serialization/json/internal/StreamingJsonEncoder;->encodeSerializableValue(Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)V +HSPLkotlinx/serialization/json/internal/StreamingJsonEncoder;->encodeString(Ljava/lang/String;)V +HSPLkotlinx/serialization/json/internal/StreamingJsonEncoder;->endStructure(Lkotlinx/serialization/descriptors/SerialDescriptor;)V +HSPLkotlinx/serialization/json/internal/StreamingJsonEncoder;->getJson()Lkotlinx/serialization/json/Json; +Lkotlinx/serialization/json/internal/StreamingJsonEncoder$WhenMappings; +HSPLkotlinx/serialization/json/internal/StreamingJsonEncoder$WhenMappings;->()V +Lkotlinx/serialization/json/internal/StringJsonLexer; +HSPLkotlinx/serialization/json/internal/StringJsonLexer;->(Ljava/lang/String;)V +HSPLkotlinx/serialization/json/internal/StringJsonLexer;->canConsumeValue()Z +HSPLkotlinx/serialization/json/internal/StringJsonLexer;->consumeKeyString()Ljava/lang/String; +HSPLkotlinx/serialization/json/internal/StringJsonLexer;->consumeNextToken()B +HSPLkotlinx/serialization/json/internal/StringJsonLexer;->consumeNextToken(C)V +HSPLkotlinx/serialization/json/internal/StringJsonLexer;->getSource()Ljava/lang/CharSequence; +HSPLkotlinx/serialization/json/internal/StringJsonLexer;->getSource()Ljava/lang/String; +HSPLkotlinx/serialization/json/internal/StringJsonLexer;->prefetchOrEof(I)I +HSPLkotlinx/serialization/json/internal/StringJsonLexer;->skipWhitespaces()I +HSPLkotlinx/serialization/json/internal/StringJsonLexer;->tryConsumeComma()Z +Lkotlinx/serialization/json/internal/StringOpsKt; +HSPLkotlinx/serialization/json/internal/StringOpsKt;->()V +PLkotlinx/serialization/json/internal/StringOpsKt;->getESCAPE_MARKERS()[B +HSPLkotlinx/serialization/json/internal/StringOpsKt;->toBooleanStrictOrNull(Ljava/lang/String;)Ljava/lang/Boolean; +HSPLkotlinx/serialization/json/internal/StringOpsKt;->toHexChar(I)C +Lkotlinx/serialization/json/internal/WriteMode; +HSPLkotlinx/serialization/json/internal/WriteMode;->$values()[Lkotlinx/serialization/json/internal/WriteMode; +HSPLkotlinx/serialization/json/internal/WriteMode;->()V +HSPLkotlinx/serialization/json/internal/WriteMode;->(Ljava/lang/String;ICC)V +HSPLkotlinx/serialization/json/internal/WriteMode;->getEntries()Lkotlin/enums/EnumEntries; +HSPLkotlinx/serialization/json/internal/WriteMode;->values()[Lkotlinx/serialization/json/internal/WriteMode; +Lkotlinx/serialization/json/internal/WriteModeKt; +HSPLkotlinx/serialization/json/internal/WriteModeKt;->carrierDescriptor(Lkotlinx/serialization/descriptors/SerialDescriptor;Lkotlinx/serialization/modules/SerializersModule;)Lkotlinx/serialization/descriptors/SerialDescriptor; +HSPLkotlinx/serialization/json/internal/WriteModeKt;->switchMode(Lkotlinx/serialization/json/Json;Lkotlinx/serialization/descriptors/SerialDescriptor;)Lkotlinx/serialization/json/internal/WriteMode; +Lkotlinx/serialization/modules/PolymorphicModuleBuilder; +HSPLkotlinx/serialization/modules/PolymorphicModuleBuilder;->(Lkotlin/reflect/KClass;Lkotlinx/serialization/KSerializer;)V +HSPLkotlinx/serialization/modules/PolymorphicModuleBuilder;->buildTo(Lkotlinx/serialization/modules/SerializersModuleBuilder;)V +HSPLkotlinx/serialization/modules/PolymorphicModuleBuilder;->defaultDeserializer(Lkotlin/jvm/functions/Function1;)V +HSPLkotlinx/serialization/modules/PolymorphicModuleBuilder;->subclass(Lkotlin/reflect/KClass;Lkotlinx/serialization/KSerializer;)V +Lkotlinx/serialization/modules/SerialModuleImpl; +HSPLkotlinx/serialization/modules/SerialModuleImpl;->(Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;)V +HSPLkotlinx/serialization/modules/SerialModuleImpl;->dumpTo(Lkotlinx/serialization/modules/SerializersModuleCollector;)V +Lkotlinx/serialization/modules/SerializersModule; +HSPLkotlinx/serialization/modules/SerializersModule;->()V +HSPLkotlinx/serialization/modules/SerializersModule;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lkotlinx/serialization/modules/SerializersModuleBuilder; +HSPLkotlinx/serialization/modules/SerializersModuleBuilder;->()V +HSPLkotlinx/serialization/modules/SerializersModuleBuilder;->build()Lkotlinx/serialization/modules/SerializersModule; +HSPLkotlinx/serialization/modules/SerializersModuleBuilder;->registerDefaultPolymorphicDeserializer(Lkotlin/reflect/KClass;Lkotlin/jvm/functions/Function1;Z)V +HSPLkotlinx/serialization/modules/SerializersModuleBuilder;->registerPolymorphicSerializer$default(Lkotlinx/serialization/modules/SerializersModuleBuilder;Lkotlin/reflect/KClass;Lkotlin/reflect/KClass;Lkotlinx/serialization/KSerializer;ZILjava/lang/Object;)V +HSPLkotlinx/serialization/modules/SerializersModuleBuilder;->registerPolymorphicSerializer(Lkotlin/reflect/KClass;Lkotlin/reflect/KClass;Lkotlinx/serialization/KSerializer;Z)V +Lkotlinx/serialization/modules/SerializersModuleBuildersKt; +HSPLkotlinx/serialization/modules/SerializersModuleBuildersKt;->EmptySerializersModule()Lkotlinx/serialization/modules/SerializersModule; +Lkotlinx/serialization/modules/SerializersModuleCollector; +Lkotlinx/serialization/modules/SerializersModuleKt; +HSPLkotlinx/serialization/modules/SerializersModuleKt;->()V +HSPLkotlinx/serialization/modules/SerializersModuleKt;->getEmptySerializersModule()Lkotlinx/serialization/modules/SerializersModule; +Lnet/zetetic/database/DatabaseErrorHandler; +Lnet/zetetic/database/DatabaseUtils; +HSPLnet/zetetic/database/DatabaseUtils;->()V +HSPLnet/zetetic/database/DatabaseUtils;->cursorPickFillWindowStartPosition(II)I +HSPLnet/zetetic/database/DatabaseUtils;->getSqlStatementType(Ljava/lang/String;)I +HSPLnet/zetetic/database/DatabaseUtils;->longForQuery(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/String;)J +HSPLnet/zetetic/database/DatabaseUtils;->longForQuery(Lnet/zetetic/database/sqlcipher/SQLiteStatement;[Ljava/lang/String;)J +Lnet/zetetic/database/DefaultDatabaseErrorHandler; +HSPLnet/zetetic/database/DefaultDatabaseErrorHandler;->()V +Lnet/zetetic/database/sqlcipher/CloseGuard; +HSPLnet/zetetic/database/sqlcipher/CloseGuard;->()V +HSPLnet/zetetic/database/sqlcipher/CloseGuard;->()V +HSPLnet/zetetic/database/sqlcipher/CloseGuard;->get()Lnet/zetetic/database/sqlcipher/CloseGuard; +HSPLnet/zetetic/database/sqlcipher/CloseGuard;->open(Ljava/lang/String;)V +Lnet/zetetic/database/sqlcipher/CloseGuard$DefaultReporter; +HSPLnet/zetetic/database/sqlcipher/CloseGuard$DefaultReporter;->()V +HSPLnet/zetetic/database/sqlcipher/CloseGuard$DefaultReporter;->(Lnet/zetetic/database/sqlcipher/CloseGuard$1;)V +Lnet/zetetic/database/sqlcipher/CloseGuard$Reporter; +Lnet/zetetic/database/sqlcipher/SQLiteClosable; +HSPLnet/zetetic/database/sqlcipher/SQLiteClosable;->()V +HSPLnet/zetetic/database/sqlcipher/SQLiteClosable;->acquireReference()V +HSPLnet/zetetic/database/sqlcipher/SQLiteClosable;->close()V +HSPLnet/zetetic/database/sqlcipher/SQLiteClosable;->releaseReference()V +Lnet/zetetic/database/sqlcipher/SQLiteConnection; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->(Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool;Lnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;IZ)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->acquirePreparedStatement(Ljava/lang/String;)Lnet/zetetic/database/sqlcipher/SQLiteConnection$PreparedStatement; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->applyBlockGuardPolicy(Lnet/zetetic/database/sqlcipher/SQLiteConnection$PreparedStatement;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->attachCancellationSignal(Landroid/os/CancellationSignal;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->bindArguments(Lnet/zetetic/database/sqlcipher/SQLiteConnection$PreparedStatement;[Ljava/lang/Object;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->canonicalizeSyncMode(Ljava/lang/String;)Ljava/lang/String; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->detachCancellationSignal(Landroid/os/CancellationSignal;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->execute(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->executeForChangedRowCount(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)I +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->executeForCursorWindow(Ljava/lang/String;[Ljava/lang/Object;Landroid/database/CursorWindow;IIZLandroid/os/CancellationSignal;)I +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->executeForLong(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)J +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->executeForString(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)Ljava/lang/String; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->finalizePreparedStatement(Lnet/zetetic/database/sqlcipher/SQLiteConnection$PreparedStatement;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->hasCodec()Z +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->isCacheable(I)Z +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->isPrimaryConnection()Z +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->obtainPreparedStatement(Ljava/lang/String;JIIZ)Lnet/zetetic/database/sqlcipher/SQLiteConnection$PreparedStatement; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->open()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->open(Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool;Lnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;IZ)Lnet/zetetic/database/sqlcipher/SQLiteConnection; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->prepare(Ljava/lang/String;Lnet/zetetic/database/sqlcipher/SQLiteStatementInfo;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->reconfigure(Lnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->recyclePreparedStatement(Lnet/zetetic/database/sqlcipher/SQLiteConnection$PreparedStatement;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->releasePreparedStatement(Lnet/zetetic/database/sqlcipher/SQLiteConnection$PreparedStatement;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->setAutoCheckpointInterval()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->setForeignKeyModeFromConfiguration()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->setJournalMode(Ljava/lang/String;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->setJournalSizeLimit()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->setOnlyAllowReadOnlyOperations(Z)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->setPageSize()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->setSyncMode(Ljava/lang/String;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->setWalModeFromConfiguration()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->throwIfStatementForbidden(Lnet/zetetic/database/sqlcipher/SQLiteConnection$PreparedStatement;)V +Lnet/zetetic/database/sqlcipher/SQLiteConnection$Operation; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection$Operation;->()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection$Operation;->(Lnet/zetetic/database/sqlcipher/SQLiteConnection$1;)V +Lnet/zetetic/database/sqlcipher/SQLiteConnection$OperationLog; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection$OperationLog;->()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection$OperationLog;->(Lnet/zetetic/database/sqlcipher/SQLiteConnection$1;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection$OperationLog;->beginOperation(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)I +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection$OperationLog;->endOperation(I)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection$OperationLog;->endOperationDeferLog(I)Z +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection$OperationLog;->endOperationDeferLogLocked(I)Z +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection$OperationLog;->getOperationLocked(I)Lnet/zetetic/database/sqlcipher/SQLiteConnection$Operation; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection$OperationLog;->newOperationCookieLocked(I)I +Lnet/zetetic/database/sqlcipher/SQLiteConnection$PreparedStatement; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection$PreparedStatement;->()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection$PreparedStatement;->(Lnet/zetetic/database/sqlcipher/SQLiteConnection$1;)V +Lnet/zetetic/database/sqlcipher/SQLiteConnection$PreparedStatementCache; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection$PreparedStatementCache;->(Lnet/zetetic/database/sqlcipher/SQLiteConnection;I)V +Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->(Lnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->acquireConnection(Ljava/lang/String;ILandroid/os/CancellationSignal;)Lnet/zetetic/database/sqlcipher/SQLiteConnection; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->closeExcessConnectionsAndLogExceptionsLocked()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->finishAcquireConnectionLocked(Lnet/zetetic/database/sqlcipher/SQLiteConnection;I)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->markAcquiredConnectionsLocked(Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool$AcquiredConnectionStatus;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->open()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->open(Lnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;)Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->openConnectionLocked(Lnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;Z)Lnet/zetetic/database/sqlcipher/SQLiteConnection; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->reconfigure(Lnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->reconfigureAllConnectionsLocked()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->recycleConnectionLocked(Lnet/zetetic/database/sqlcipher/SQLiteConnection;Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool$AcquiredConnectionStatus;)Z +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->releaseConnection(Lnet/zetetic/database/sqlcipher/SQLiteConnection;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->setMaxConnectionPoolSizeLocked()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->throwIfClosedLocked()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->tryAcquireNonPrimaryConnectionLocked(Ljava/lang/String;I)Lnet/zetetic/database/sqlcipher/SQLiteConnection; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->tryAcquirePrimaryConnectionLocked(I)Lnet/zetetic/database/sqlcipher/SQLiteConnection; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->waitForConnection(Ljava/lang/String;ILandroid/os/CancellationSignal;)Lnet/zetetic/database/sqlcipher/SQLiteConnection; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->wakeConnectionWaitersLocked()V +Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool$AcquiredConnectionStatus; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool$AcquiredConnectionStatus;->$values()[Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool$AcquiredConnectionStatus; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool$AcquiredConnectionStatus;->()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool$AcquiredConnectionStatus;->(Ljava/lang/String;I)V +Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool$ConnectionWaiter; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool$ConnectionWaiter;->()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool$ConnectionWaiter;->(Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool$1;)V +Lnet/zetetic/database/sqlcipher/SQLiteCursor; +HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->()V +HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->(Lnet/zetetic/database/sqlcipher/SQLiteCursorDriver;Ljava/lang/String;Lnet/zetetic/database/sqlcipher/SQLiteQuery;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->awc_clearOrCreateWindow(Ljava/lang/String;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->close()V +HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->fillWindow(I)V +PLnet/zetetic/database/sqlcipher/SQLiteCursor;->finalize()V +HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->getColumnIndex(Ljava/lang/String;)I +HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->getCount()I +HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->getDatabase()Lnet/zetetic/database/sqlcipher/SQLiteDatabase; +HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->onMove(II)Z +HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->setWindow(Landroid/database/CursorWindow;)V +Lnet/zetetic/database/sqlcipher/SQLiteCursorDriver; +Lnet/zetetic/database/sqlcipher/SQLiteCustomFunction; +Lnet/zetetic/database/sqlcipher/SQLiteDatabase; +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->()V +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->(Ljava/lang/String;[BILnet/zetetic/database/sqlcipher/SQLiteDatabase$CursorFactory;Lnet/zetetic/database/DatabaseErrorHandler;Lnet/zetetic/database/sqlcipher/SQLiteDatabaseHook;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->beginTransaction()V +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->beginTransaction(Lnet/zetetic/database/sqlcipher/SQLiteTransactionListener;Z)V +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->beginTransactionNonExclusive()V +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->compileStatement(Ljava/lang/String;)Landroidx/sqlite/db/SupportSQLiteStatement; +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->compileStatement(Ljava/lang/String;)Lnet/zetetic/database/sqlcipher/SQLiteStatement; +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->createSession()Lnet/zetetic/database/sqlcipher/SQLiteSession; +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->endTransaction()V +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->execSQL(Ljava/lang/String;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->executeSql(Ljava/lang/String;[Ljava/lang/Object;)I +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->getPath()Ljava/lang/String; +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->getThreadDefaultConnectionFlags(Z)I +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->getThreadSession()Lnet/zetetic/database/sqlcipher/SQLiteSession; +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->getVersion()I +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->hasCodec()Z +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->inTransaction()Z +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->isMainThread()Z +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->isOpen()Z +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->isReadOnly()Z +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->isReadOnlyLocked()Z +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->isWriteAheadLoggingEnabled()Z +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->open()V +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->openDatabase(Ljava/lang/String;[BLnet/zetetic/database/sqlcipher/SQLiteDatabase$CursorFactory;ILnet/zetetic/database/DatabaseErrorHandler;Lnet/zetetic/database/sqlcipher/SQLiteDatabaseHook;)Lnet/zetetic/database/sqlcipher/SQLiteDatabase; +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->openInner()V +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->query(Landroidx/sqlite/db/SupportSQLiteQuery;)Landroid/database/Cursor; +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->query(Landroidx/sqlite/db/SupportSQLiteQuery;Landroid/os/CancellationSignal;)Landroid/database/Cursor; +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->query(Ljava/lang/String;)Landroid/database/Cursor; +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->rawQuery(Ljava/lang/String;[Ljava/lang/Object;)Landroid/database/Cursor; +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->setForeignKeyConstraintsEnabled(Z)V +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->setTransactionSuccessful()V +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->setVersion(I)V +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->throwIfNotOpenLocked()V +Lnet/zetetic/database/sqlcipher/SQLiteDatabase$1; +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase$1;->(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase$1;->initialValue()Ljava/lang/Object; +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase$1;->initialValue()Lnet/zetetic/database/sqlcipher/SQLiteSession; +Lnet/zetetic/database/sqlcipher/SQLiteDatabase$CursorFactory; +Lnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration; +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;->()V +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;->(Ljava/lang/String;I[BLnet/zetetic/database/sqlcipher/SQLiteDatabaseHook;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;->(Lnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;->isInMemoryDb()Z +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;->stripPathForLogs(Ljava/lang/String;)Ljava/lang/String; +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;->updateParametersFrom(Lnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;)V +Lnet/zetetic/database/sqlcipher/SQLiteDatabaseHook; +Lnet/zetetic/database/sqlcipher/SQLiteDebug; +HSPLnet/zetetic/database/sqlcipher/SQLiteDebug;->()V +Lnet/zetetic/database/sqlcipher/SQLiteDebug$PagerStats; +Lnet/zetetic/database/sqlcipher/SQLiteDirectCursorDriver; +HSPLnet/zetetic/database/sqlcipher/SQLiteDirectCursorDriver;->(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteDirectCursorDriver;->cursorClosed()V +HSPLnet/zetetic/database/sqlcipher/SQLiteDirectCursorDriver;->query(Lnet/zetetic/database/sqlcipher/SQLiteDatabase$CursorFactory;[Ljava/lang/Object;)Landroid/database/Cursor; +Lnet/zetetic/database/sqlcipher/SQLiteGlobal; +HSPLnet/zetetic/database/sqlcipher/SQLiteGlobal;->()V +HSPLnet/zetetic/database/sqlcipher/SQLiteGlobal;->getDefaultJournalMode()Ljava/lang/String; +HSPLnet/zetetic/database/sqlcipher/SQLiteGlobal;->getDefaultSyncMode()Ljava/lang/String; +HSPLnet/zetetic/database/sqlcipher/SQLiteGlobal;->getJournalSizeLimit()I +HSPLnet/zetetic/database/sqlcipher/SQLiteGlobal;->getWALAutoCheckpoint()I +HSPLnet/zetetic/database/sqlcipher/SQLiteGlobal;->getWALConnectionPoolSize()I +HSPLnet/zetetic/database/sqlcipher/SQLiteGlobal;->getWALSyncMode()Ljava/lang/String; +Lnet/zetetic/database/sqlcipher/SQLiteOpenHelper; +HSPLnet/zetetic/database/sqlcipher/SQLiteOpenHelper;->()V +HSPLnet/zetetic/database/sqlcipher/SQLiteOpenHelper;->(Landroid/content/Context;Ljava/lang/String;[BLnet/zetetic/database/sqlcipher/SQLiteDatabase$CursorFactory;IILnet/zetetic/database/DatabaseErrorHandler;Lnet/zetetic/database/sqlcipher/SQLiteDatabaseHook;Z)V +HSPLnet/zetetic/database/sqlcipher/SQLiteOpenHelper;->getDatabaseLocked(Z)Lnet/zetetic/database/sqlcipher/SQLiteDatabase; +HSPLnet/zetetic/database/sqlcipher/SQLiteOpenHelper;->getWritableDatabase()Lnet/zetetic/database/sqlcipher/SQLiteDatabase; +HSPLnet/zetetic/database/sqlcipher/SQLiteOpenHelper;->setWriteAheadLoggingEnabled(Z)V +Lnet/zetetic/database/sqlcipher/SQLiteProgram; +HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->()V +HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->bindAllArgs([Ljava/lang/Object;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->bindAllArgsAsStrings([Ljava/lang/String;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->clearBindings()V +HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->getBindArgs()[Ljava/lang/Object; +HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->getColumnNames()[Ljava/lang/String; +HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->getConnectionFlags()I +HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->getDatabase()Lnet/zetetic/database/sqlcipher/SQLiteDatabase; +HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->getSession()Lnet/zetetic/database/sqlcipher/SQLiteSession; +HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->getSql()Ljava/lang/String; +HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->onAllReferencesReleased()V +Lnet/zetetic/database/sqlcipher/SQLiteQuery; +HSPLnet/zetetic/database/sqlcipher/SQLiteQuery;->(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;Ljava/lang/String;Landroid/os/CancellationSignal;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteQuery;->fillWindow(Landroid/database/CursorWindow;IIZ)I +Lnet/zetetic/database/sqlcipher/SQLiteSession; +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->()V +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->(Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->acquireConnection(Ljava/lang/String;ILandroid/os/CancellationSignal;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->beginTransaction(ILnet/zetetic/database/sqlcipher/SQLiteTransactionListener;ILandroid/os/CancellationSignal;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->beginTransactionUnchecked(ILnet/zetetic/database/sqlcipher/SQLiteTransactionListener;ILandroid/os/CancellationSignal;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->endTransaction(Landroid/os/CancellationSignal;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->endTransactionUnchecked(Landroid/os/CancellationSignal;Z)V +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->executeForChangedRowCount(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)I +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->executeForCursorWindow(Ljava/lang/String;[Ljava/lang/Object;Landroid/database/CursorWindow;IIZILandroid/os/CancellationSignal;)I +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->executeForLong(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)J +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->executeSpecial(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)Z +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->hasTransaction()Z +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->obtainTransaction(ILnet/zetetic/database/sqlcipher/SQLiteTransactionListener;)Lnet/zetetic/database/sqlcipher/SQLiteSession$Transaction; +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->prepare(Ljava/lang/String;ILandroid/os/CancellationSignal;Lnet/zetetic/database/sqlcipher/SQLiteStatementInfo;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->recycleTransaction(Lnet/zetetic/database/sqlcipher/SQLiteSession$Transaction;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->releaseConnection()V +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->setTransactionSuccessful()V +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->throwIfNoTransaction()V +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->throwIfTransactionMarkedSuccessful()V +Lnet/zetetic/database/sqlcipher/SQLiteSession$Transaction; +HSPLnet/zetetic/database/sqlcipher/SQLiteSession$Transaction;->()V +HSPLnet/zetetic/database/sqlcipher/SQLiteSession$Transaction;->(Lnet/zetetic/database/sqlcipher/SQLiteSession$1;)V +Lnet/zetetic/database/sqlcipher/SQLiteStatement; +HSPLnet/zetetic/database/sqlcipher/SQLiteStatement;->(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/Object;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteStatement;->executeUpdateDelete()I +HSPLnet/zetetic/database/sqlcipher/SQLiteStatement;->simpleQueryForLong()J +Lnet/zetetic/database/sqlcipher/SQLiteStatementInfo; +HSPLnet/zetetic/database/sqlcipher/SQLiteStatementInfo;->()V +Lnet/zetetic/database/sqlcipher/SQLiteTransactionListener; +Lnet/zetetic/database/sqlcipher/SupportHelper; +HSPLnet/zetetic/database/sqlcipher/SupportHelper;->(Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration;[BLnet/zetetic/database/sqlcipher/SQLiteDatabaseHook;Z)V +HSPLnet/zetetic/database/sqlcipher/SupportHelper;->(Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration;[BLnet/zetetic/database/sqlcipher/SQLiteDatabaseHook;ZI)V +HSPLnet/zetetic/database/sqlcipher/SupportHelper;->getWritableDatabase()Landroidx/sqlite/db/SupportSQLiteDatabase; +HSPLnet/zetetic/database/sqlcipher/SupportHelper;->setWriteAheadLoggingEnabled(Z)V +Lnet/zetetic/database/sqlcipher/SupportHelper$1; +HSPLnet/zetetic/database/sqlcipher/SupportHelper$1;->(Lnet/zetetic/database/sqlcipher/SupportHelper;Landroid/content/Context;Ljava/lang/String;[BLnet/zetetic/database/sqlcipher/SQLiteDatabase$CursorFactory;IILnet/zetetic/database/DatabaseErrorHandler;Lnet/zetetic/database/sqlcipher/SQLiteDatabaseHook;ZLandroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration;)V +HSPLnet/zetetic/database/sqlcipher/SupportHelper$1;->onConfigure(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;)V +HSPLnet/zetetic/database/sqlcipher/SupportHelper$1;->onCreate(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;)V +HSPLnet/zetetic/database/sqlcipher/SupportHelper$1;->onOpen(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;)V +Lnet/zetetic/database/sqlcipher/SupportOpenHelperFactory; +HSPLnet/zetetic/database/sqlcipher/SupportOpenHelperFactory;->([BLnet/zetetic/database/sqlcipher/SQLiteDatabaseHook;Z)V +HSPLnet/zetetic/database/sqlcipher/SupportOpenHelperFactory;->([BLnet/zetetic/database/sqlcipher/SQLiteDatabaseHook;ZI)V +HSPLnet/zetetic/database/sqlcipher/SupportOpenHelperFactory;->create(Landroidx/sqlite/db/SupportSQLiteOpenHelper$Configuration;)Landroidx/sqlite/db/SupportSQLiteOpenHelper; +Lokhttp3/Authenticator; +HSPLokhttp3/Authenticator;->()V +Lokhttp3/Authenticator$Companion; +HSPLokhttp3/Authenticator$Companion;->()V +HSPLokhttp3/Authenticator$Companion;->()V +Lokhttp3/Authenticator$Companion$AuthenticatorNone; +HSPLokhttp3/Authenticator$Companion$AuthenticatorNone;->()V +Lokhttp3/Cache; +Lokhttp3/Call$Factory; +Lokhttp3/CertificatePinner; +HSPLokhttp3/CertificatePinner;->()V +HSPLokhttp3/CertificatePinner;->(Ljava/util/Set;Lokhttp3/internal/tls/CertificateChainCleaner;)V +HSPLokhttp3/CertificatePinner;->(Ljava/util/Set;Lokhttp3/internal/tls/CertificateChainCleaner;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokhttp3/CertificatePinner;->withCertificateChainCleaner$okhttp(Lokhttp3/internal/tls/CertificateChainCleaner;)Lokhttp3/CertificatePinner; +Lokhttp3/CertificatePinner$Builder; +HSPLokhttp3/CertificatePinner$Builder;->()V +HSPLokhttp3/CertificatePinner$Builder;->build()Lokhttp3/CertificatePinner; +Lokhttp3/CertificatePinner$Companion; +HSPLokhttp3/CertificatePinner$Companion;->()V +HSPLokhttp3/CertificatePinner$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lokhttp3/CipherSuite; +HSPLokhttp3/CipherSuite;->()V +HSPLokhttp3/CipherSuite;->(Ljava/lang/String;)V +HSPLokhttp3/CipherSuite;->(Ljava/lang/String;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokhttp3/CipherSuite;->access$getINSTANCES$cp()Ljava/util/Map; +HSPLokhttp3/CipherSuite;->javaName()Ljava/lang/String; +Lokhttp3/CipherSuite$Companion; +HSPLokhttp3/CipherSuite$Companion;->()V +HSPLokhttp3/CipherSuite$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokhttp3/CipherSuite$Companion;->access$init(Lokhttp3/CipherSuite$Companion;Ljava/lang/String;I)Lokhttp3/CipherSuite; +HSPLokhttp3/CipherSuite$Companion;->init(Ljava/lang/String;I)Lokhttp3/CipherSuite; +Lokhttp3/CipherSuite$Companion$ORDER_BY_NAME$1; +HSPLokhttp3/CipherSuite$Companion$ORDER_BY_NAME$1;->()V +Lokhttp3/ConnectionPool; +HSPLokhttp3/ConnectionPool;->()V +HSPLokhttp3/ConnectionPool;->(IJLjava/util/concurrent/TimeUnit;)V +HSPLokhttp3/ConnectionPool;->(Lokhttp3/internal/connection/RealConnectionPool;)V +Lokhttp3/ConnectionSpec; +HSPLokhttp3/ConnectionSpec;->()V +HSPLokhttp3/ConnectionSpec;->(ZZ[Ljava/lang/String;[Ljava/lang/String;)V +HSPLokhttp3/ConnectionSpec;->isTls()Z +Lokhttp3/ConnectionSpec$Builder; +HSPLokhttp3/ConnectionSpec$Builder;->(Z)V +HSPLokhttp3/ConnectionSpec$Builder;->build()Lokhttp3/ConnectionSpec; +HSPLokhttp3/ConnectionSpec$Builder;->cipherSuites([Ljava/lang/String;)Lokhttp3/ConnectionSpec$Builder; +HSPLokhttp3/ConnectionSpec$Builder;->cipherSuites([Lokhttp3/CipherSuite;)Lokhttp3/ConnectionSpec$Builder; +HSPLokhttp3/ConnectionSpec$Builder;->supportsTlsExtensions(Z)Lokhttp3/ConnectionSpec$Builder; +HSPLokhttp3/ConnectionSpec$Builder;->tlsVersions([Ljava/lang/String;)Lokhttp3/ConnectionSpec$Builder; +HSPLokhttp3/ConnectionSpec$Builder;->tlsVersions([Lokhttp3/TlsVersion;)Lokhttp3/ConnectionSpec$Builder; +Lokhttp3/ConnectionSpec$Companion; +HSPLokhttp3/ConnectionSpec$Companion;->()V +HSPLokhttp3/ConnectionSpec$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lokhttp3/CookieJar; +HSPLokhttp3/CookieJar;->()V +Lokhttp3/CookieJar$Companion; +HSPLokhttp3/CookieJar$Companion;->()V +HSPLokhttp3/CookieJar$Companion;->()V +Lokhttp3/CookieJar$Companion$NoCookies; +HSPLokhttp3/CookieJar$Companion$NoCookies;->()V +Lokhttp3/Dispatcher; +HSPLokhttp3/Dispatcher;->()V +Lokhttp3/Dns; +HSPLokhttp3/Dns;->()V +Lokhttp3/Dns$Companion; +HSPLokhttp3/Dns$Companion;->()V +HSPLokhttp3/Dns$Companion;->()V +Lokhttp3/Dns$Companion$DnsSystem; +HSPLokhttp3/Dns$Companion$DnsSystem;->()V +Lokhttp3/EventListener; +HSPLokhttp3/EventListener;->()V +HSPLokhttp3/EventListener;->()V +Lokhttp3/EventListener$Companion; +HSPLokhttp3/EventListener$Companion;->()V +HSPLokhttp3/EventListener$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lokhttp3/EventListener$Companion$NONE$1; +HSPLokhttp3/EventListener$Companion$NONE$1;->()V +Lokhttp3/EventListener$Factory; +Lokhttp3/Headers; +HSPLokhttp3/Headers;->()V +HSPLokhttp3/Headers;->([Ljava/lang/String;)V +HSPLokhttp3/Headers;->([Ljava/lang/String;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lokhttp3/Headers$Companion; +HSPLokhttp3/Headers$Companion;->()V +HSPLokhttp3/Headers$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokhttp3/Headers$Companion;->of([Ljava/lang/String;)Lokhttp3/Headers; +Lokhttp3/Interceptor; +Lokhttp3/MediaType; +Lokhttp3/OkHttpClient; +HSPLokhttp3/OkHttpClient;->()V +HSPLokhttp3/OkHttpClient;->(Lokhttp3/OkHttpClient$Builder;)V +HSPLokhttp3/OkHttpClient;->access$getDEFAULT_CONNECTION_SPECS$cp()Ljava/util/List; +HSPLokhttp3/OkHttpClient;->access$getDEFAULT_PROTOCOLS$cp()Ljava/util/List; +HSPLokhttp3/OkHttpClient;->verifyClientState()V +Lokhttp3/OkHttpClient$Builder; +HSPLokhttp3/OkHttpClient$Builder;->()V +HSPLokhttp3/OkHttpClient$Builder;->addInterceptor(Lokhttp3/Interceptor;)Lokhttp3/OkHttpClient$Builder; +HSPLokhttp3/OkHttpClient$Builder;->build()Lokhttp3/OkHttpClient; +HSPLokhttp3/OkHttpClient$Builder;->getAuthenticator$okhttp()Lokhttp3/Authenticator; +HSPLokhttp3/OkHttpClient$Builder;->getCache$okhttp()Lokhttp3/Cache; +HSPLokhttp3/OkHttpClient$Builder;->getCallTimeout$okhttp()I +HSPLokhttp3/OkHttpClient$Builder;->getCertificatePinner$okhttp()Lokhttp3/CertificatePinner; +HSPLokhttp3/OkHttpClient$Builder;->getConnectTimeout$okhttp()I +HSPLokhttp3/OkHttpClient$Builder;->getConnectionPool$okhttp()Lokhttp3/ConnectionPool; +HSPLokhttp3/OkHttpClient$Builder;->getConnectionSpecs$okhttp()Ljava/util/List; +HSPLokhttp3/OkHttpClient$Builder;->getCookieJar$okhttp()Lokhttp3/CookieJar; +HSPLokhttp3/OkHttpClient$Builder;->getDispatcher$okhttp()Lokhttp3/Dispatcher; +HSPLokhttp3/OkHttpClient$Builder;->getDns$okhttp()Lokhttp3/Dns; +HSPLokhttp3/OkHttpClient$Builder;->getEventListenerFactory$okhttp()Lokhttp3/EventListener$Factory; +HSPLokhttp3/OkHttpClient$Builder;->getFollowRedirects$okhttp()Z +HSPLokhttp3/OkHttpClient$Builder;->getFollowSslRedirects$okhttp()Z +HSPLokhttp3/OkHttpClient$Builder;->getHostnameVerifier$okhttp()Ljavax/net/ssl/HostnameVerifier; +HSPLokhttp3/OkHttpClient$Builder;->getInterceptors$okhttp()Ljava/util/List; +HSPLokhttp3/OkHttpClient$Builder;->getMinWebSocketMessageToCompress$okhttp()J +HSPLokhttp3/OkHttpClient$Builder;->getNetworkInterceptors$okhttp()Ljava/util/List; +HSPLokhttp3/OkHttpClient$Builder;->getPingInterval$okhttp()I +HSPLokhttp3/OkHttpClient$Builder;->getProtocols$okhttp()Ljava/util/List; +HSPLokhttp3/OkHttpClient$Builder;->getProxy$okhttp()Ljava/net/Proxy; +HSPLokhttp3/OkHttpClient$Builder;->getProxyAuthenticator$okhttp()Lokhttp3/Authenticator; +HSPLokhttp3/OkHttpClient$Builder;->getProxySelector$okhttp()Ljava/net/ProxySelector; +HSPLokhttp3/OkHttpClient$Builder;->getReadTimeout$okhttp()I +HSPLokhttp3/OkHttpClient$Builder;->getRetryOnConnectionFailure$okhttp()Z +HSPLokhttp3/OkHttpClient$Builder;->getRouteDatabase$okhttp()Lokhttp3/internal/connection/RouteDatabase; +HSPLokhttp3/OkHttpClient$Builder;->getSocketFactory$okhttp()Ljavax/net/SocketFactory; +HSPLokhttp3/OkHttpClient$Builder;->getSslSocketFactoryOrNull$okhttp()Ljavax/net/ssl/SSLSocketFactory; +HSPLokhttp3/OkHttpClient$Builder;->getWriteTimeout$okhttp()I +Lokhttp3/OkHttpClient$Companion; +HSPLokhttp3/OkHttpClient$Companion;->()V +HSPLokhttp3/OkHttpClient$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokhttp3/OkHttpClient$Companion;->getDEFAULT_CONNECTION_SPECS$okhttp()Ljava/util/List; +HSPLokhttp3/OkHttpClient$Companion;->getDEFAULT_PROTOCOLS$okhttp()Ljava/util/List; +Lokhttp3/Protocol; +HSPLokhttp3/Protocol;->$values()[Lokhttp3/Protocol; +HSPLokhttp3/Protocol;->()V +HSPLokhttp3/Protocol;->(Ljava/lang/String;ILjava/lang/String;)V +Lokhttp3/Protocol$Companion; +HSPLokhttp3/Protocol$Companion;->()V +HSPLokhttp3/Protocol$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lokhttp3/RequestBody; +HSPLokhttp3/RequestBody;->()V +HSPLokhttp3/RequestBody;->()V +Lokhttp3/RequestBody$Companion; +HSPLokhttp3/RequestBody$Companion;->()V +HSPLokhttp3/RequestBody$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokhttp3/RequestBody$Companion;->create$default(Lokhttp3/RequestBody$Companion;[BLokhttp3/MediaType;IIILjava/lang/Object;)Lokhttp3/RequestBody; +HSPLokhttp3/RequestBody$Companion;->create([BLokhttp3/MediaType;II)Lokhttp3/RequestBody; +Lokhttp3/RequestBody$Companion$toRequestBody$2; +HSPLokhttp3/RequestBody$Companion$toRequestBody$2;->(Lokhttp3/MediaType;I[BI)V +Lokhttp3/ResponseBody; +HSPLokhttp3/ResponseBody;->()V +HSPLokhttp3/ResponseBody;->()V +Lokhttp3/ResponseBody$Companion; +HSPLokhttp3/ResponseBody$Companion;->()V +HSPLokhttp3/ResponseBody$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokhttp3/ResponseBody$Companion;->create$default(Lokhttp3/ResponseBody$Companion;[BLokhttp3/MediaType;ILjava/lang/Object;)Lokhttp3/ResponseBody; +HSPLokhttp3/ResponseBody$Companion;->create(Lokio/BufferedSource;Lokhttp3/MediaType;J)Lokhttp3/ResponseBody; +HSPLokhttp3/ResponseBody$Companion;->create([BLokhttp3/MediaType;)Lokhttp3/ResponseBody; +Lokhttp3/ResponseBody$Companion$asResponseBody$1; +HSPLokhttp3/ResponseBody$Companion$asResponseBody$1;->(Lokhttp3/MediaType;JLokio/BufferedSource;)V +Lokhttp3/TlsVersion; +HSPLokhttp3/TlsVersion;->$values()[Lokhttp3/TlsVersion; +HSPLokhttp3/TlsVersion;->()V +HSPLokhttp3/TlsVersion;->(Ljava/lang/String;ILjava/lang/String;)V +HSPLokhttp3/TlsVersion;->javaName()Ljava/lang/String; +Lokhttp3/TlsVersion$Companion; +HSPLokhttp3/TlsVersion$Companion;->()V +HSPLokhttp3/TlsVersion$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lokhttp3/WebSocket$Factory; +Lokhttp3/internal/Util; +HSPLokhttp3/internal/Util;->()V +HSPLokhttp3/internal/Util;->asFactory(Lokhttp3/EventListener;)Lokhttp3/EventListener$Factory; +HSPLokhttp3/internal/Util;->checkOffsetAndCount(JJJ)V +HSPLokhttp3/internal/Util;->immutableListOf([Ljava/lang/Object;)Ljava/util/List; +HSPLokhttp3/internal/Util;->threadFactory(Ljava/lang/String;Z)Ljava/util/concurrent/ThreadFactory; +HSPLokhttp3/internal/Util;->toImmutableList(Ljava/util/List;)Ljava/util/List; +Lokhttp3/internal/Util$$ExternalSyntheticLambda0; +HSPLokhttp3/internal/Util$$ExternalSyntheticLambda0;->(Ljava/lang/String;Z)V +Lokhttp3/internal/Util$$ExternalSyntheticLambda1; +HSPLokhttp3/internal/Util$$ExternalSyntheticLambda1;->(Lokhttp3/EventListener;)V +Lokhttp3/internal/authenticator/JavaNetAuthenticator; +HSPLokhttp3/internal/authenticator/JavaNetAuthenticator;->(Lokhttp3/Dns;)V +HSPLokhttp3/internal/authenticator/JavaNetAuthenticator;->(Lokhttp3/Dns;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +Lokhttp3/internal/concurrent/Task; +HSPLokhttp3/internal/concurrent/Task;->(Ljava/lang/String;Z)V +HSPLokhttp3/internal/concurrent/Task;->(Ljava/lang/String;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V +Lokhttp3/internal/concurrent/TaskQueue; +HSPLokhttp3/internal/concurrent/TaskQueue;->(Lokhttp3/internal/concurrent/TaskRunner;Ljava/lang/String;)V +Lokhttp3/internal/concurrent/TaskRunner; +HSPLokhttp3/internal/concurrent/TaskRunner;->()V +HSPLokhttp3/internal/concurrent/TaskRunner;->(Lokhttp3/internal/concurrent/TaskRunner$Backend;)V +HSPLokhttp3/internal/concurrent/TaskRunner;->newQueue()Lokhttp3/internal/concurrent/TaskQueue; +Lokhttp3/internal/concurrent/TaskRunner$Backend; +Lokhttp3/internal/concurrent/TaskRunner$Companion; +HSPLokhttp3/internal/concurrent/TaskRunner$Companion;->()V +HSPLokhttp3/internal/concurrent/TaskRunner$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lokhttp3/internal/concurrent/TaskRunner$RealBackend; +HSPLokhttp3/internal/concurrent/TaskRunner$RealBackend;->(Ljava/util/concurrent/ThreadFactory;)V +Lokhttp3/internal/concurrent/TaskRunner$runnable$1; +HSPLokhttp3/internal/concurrent/TaskRunner$runnable$1;->(Lokhttp3/internal/concurrent/TaskRunner;)V +Lokhttp3/internal/connection/RealConnectionPool; +HSPLokhttp3/internal/connection/RealConnectionPool;->()V +HSPLokhttp3/internal/connection/RealConnectionPool;->(Lokhttp3/internal/concurrent/TaskRunner;IJLjava/util/concurrent/TimeUnit;)V +Lokhttp3/internal/connection/RealConnectionPool$Companion; +HSPLokhttp3/internal/connection/RealConnectionPool$Companion;->()V +HSPLokhttp3/internal/connection/RealConnectionPool$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lokhttp3/internal/connection/RealConnectionPool$cleanupTask$1; +HSPLokhttp3/internal/connection/RealConnectionPool$cleanupTask$1;->(Lokhttp3/internal/connection/RealConnectionPool;Ljava/lang/String;)V +Lokhttp3/internal/connection/RouteDatabase; +HSPLokhttp3/internal/connection/RouteDatabase;->()V +Lokhttp3/internal/http2/Http2; +Lokhttp3/internal/platform/Android10Platform; +HSPLokhttp3/internal/platform/Android10Platform;->()V +HSPLokhttp3/internal/platform/Android10Platform;->()V +HSPLokhttp3/internal/platform/Android10Platform;->access$isSupported$cp()Z +HSPLokhttp3/internal/platform/Android10Platform;->buildCertificateChainCleaner(Ljavax/net/ssl/X509TrustManager;)Lokhttp3/internal/tls/CertificateChainCleaner; +Lokhttp3/internal/platform/Android10Platform$Companion; +HSPLokhttp3/internal/platform/Android10Platform$Companion;->()V +HSPLokhttp3/internal/platform/Android10Platform$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokhttp3/internal/platform/Android10Platform$Companion;->buildIfSupported()Lokhttp3/internal/platform/Platform; +HSPLokhttp3/internal/platform/Android10Platform$Companion;->isSupported()Z +Lokhttp3/internal/platform/Platform; +HSPLokhttp3/internal/platform/Platform;->()V +HSPLokhttp3/internal/platform/Platform;->()V +HSPLokhttp3/internal/platform/Platform;->access$getPlatform$cp()Lokhttp3/internal/platform/Platform; +HSPLokhttp3/internal/platform/Platform;->newSSLContext()Ljavax/net/ssl/SSLContext; +HSPLokhttp3/internal/platform/Platform;->newSslSocketFactory(Ljavax/net/ssl/X509TrustManager;)Ljavax/net/ssl/SSLSocketFactory; +HSPLokhttp3/internal/platform/Platform;->platformTrustManager()Ljavax/net/ssl/X509TrustManager; +Lokhttp3/internal/platform/Platform$Companion; +HSPLokhttp3/internal/platform/Platform$Companion;->()V +HSPLokhttp3/internal/platform/Platform$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokhttp3/internal/platform/Platform$Companion;->access$findPlatform(Lokhttp3/internal/platform/Platform$Companion;)Lokhttp3/internal/platform/Platform; +HSPLokhttp3/internal/platform/Platform$Companion;->findAndroidPlatform()Lokhttp3/internal/platform/Platform; +HSPLokhttp3/internal/platform/Platform$Companion;->findPlatform()Lokhttp3/internal/platform/Platform; +HSPLokhttp3/internal/platform/Platform$Companion;->get()Lokhttp3/internal/platform/Platform; +HSPLokhttp3/internal/platform/Platform$Companion;->isAndroid()Z +Lokhttp3/internal/platform/android/Android10SocketAdapter; +HSPLokhttp3/internal/platform/android/Android10SocketAdapter;->()V +HSPLokhttp3/internal/platform/android/Android10SocketAdapter;->()V +HSPLokhttp3/internal/platform/android/Android10SocketAdapter;->isSupported()Z +Lokhttp3/internal/platform/android/Android10SocketAdapter$Companion; +HSPLokhttp3/internal/platform/android/Android10SocketAdapter$Companion;->()V +HSPLokhttp3/internal/platform/android/Android10SocketAdapter$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokhttp3/internal/platform/android/Android10SocketAdapter$Companion;->buildIfSupported()Lokhttp3/internal/platform/android/SocketAdapter; +HSPLokhttp3/internal/platform/android/Android10SocketAdapter$Companion;->isSupported()Z +Lokhttp3/internal/platform/android/AndroidCertificateChainCleaner; +HSPLokhttp3/internal/platform/android/AndroidCertificateChainCleaner;->()V +HSPLokhttp3/internal/platform/android/AndroidCertificateChainCleaner;->(Ljavax/net/ssl/X509TrustManager;Landroid/net/http/X509TrustManagerExtensions;)V +Lokhttp3/internal/platform/android/AndroidCertificateChainCleaner$Companion; +HSPLokhttp3/internal/platform/android/AndroidCertificateChainCleaner$Companion;->()V +HSPLokhttp3/internal/platform/android/AndroidCertificateChainCleaner$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokhttp3/internal/platform/android/AndroidCertificateChainCleaner$Companion;->buildIfSupported(Ljavax/net/ssl/X509TrustManager;)Lokhttp3/internal/platform/android/AndroidCertificateChainCleaner; +Lokhttp3/internal/platform/android/AndroidLog; +HSPLokhttp3/internal/platform/android/AndroidLog;->()V +HSPLokhttp3/internal/platform/android/AndroidLog;->()V +HSPLokhttp3/internal/platform/android/AndroidLog;->enable()V +HSPLokhttp3/internal/platform/android/AndroidLog;->enableLogging(Ljava/lang/String;Ljava/lang/String;)V +Lokhttp3/internal/platform/android/AndroidLogHandler; +HSPLokhttp3/internal/platform/android/AndroidLogHandler;->()V +HSPLokhttp3/internal/platform/android/AndroidLogHandler;->()V +Lokhttp3/internal/platform/android/AndroidSocketAdapter; +HSPLokhttp3/internal/platform/android/AndroidSocketAdapter;->()V +HSPLokhttp3/internal/platform/android/AndroidSocketAdapter;->access$getPlayProviderFactory$cp()Lokhttp3/internal/platform/android/DeferredSocketAdapter$Factory; +Lokhttp3/internal/platform/android/AndroidSocketAdapter$Companion; +HSPLokhttp3/internal/platform/android/AndroidSocketAdapter$Companion;->()V +HSPLokhttp3/internal/platform/android/AndroidSocketAdapter$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokhttp3/internal/platform/android/AndroidSocketAdapter$Companion;->factory(Ljava/lang/String;)Lokhttp3/internal/platform/android/DeferredSocketAdapter$Factory; +HSPLokhttp3/internal/platform/android/AndroidSocketAdapter$Companion;->getPlayProviderFactory()Lokhttp3/internal/platform/android/DeferredSocketAdapter$Factory; +Lokhttp3/internal/platform/android/AndroidSocketAdapter$Companion$factory$1; +HSPLokhttp3/internal/platform/android/AndroidSocketAdapter$Companion$factory$1;->(Ljava/lang/String;)V +Lokhttp3/internal/platform/android/BouncyCastleSocketAdapter; +HSPLokhttp3/internal/platform/android/BouncyCastleSocketAdapter;->()V +HSPLokhttp3/internal/platform/android/BouncyCastleSocketAdapter;->access$getFactory$cp()Lokhttp3/internal/platform/android/DeferredSocketAdapter$Factory; +Lokhttp3/internal/platform/android/BouncyCastleSocketAdapter$Companion; +HSPLokhttp3/internal/platform/android/BouncyCastleSocketAdapter$Companion;->()V +HSPLokhttp3/internal/platform/android/BouncyCastleSocketAdapter$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokhttp3/internal/platform/android/BouncyCastleSocketAdapter$Companion;->getFactory()Lokhttp3/internal/platform/android/DeferredSocketAdapter$Factory; +Lokhttp3/internal/platform/android/BouncyCastleSocketAdapter$Companion$factory$1; +HSPLokhttp3/internal/platform/android/BouncyCastleSocketAdapter$Companion$factory$1;->()V +Lokhttp3/internal/platform/android/ConscryptSocketAdapter; +HSPLokhttp3/internal/platform/android/ConscryptSocketAdapter;->()V +HSPLokhttp3/internal/platform/android/ConscryptSocketAdapter;->access$getFactory$cp()Lokhttp3/internal/platform/android/DeferredSocketAdapter$Factory; +Lokhttp3/internal/platform/android/ConscryptSocketAdapter$Companion; +HSPLokhttp3/internal/platform/android/ConscryptSocketAdapter$Companion;->()V +HSPLokhttp3/internal/platform/android/ConscryptSocketAdapter$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokhttp3/internal/platform/android/ConscryptSocketAdapter$Companion;->getFactory()Lokhttp3/internal/platform/android/DeferredSocketAdapter$Factory; +Lokhttp3/internal/platform/android/ConscryptSocketAdapter$Companion$factory$1; +HSPLokhttp3/internal/platform/android/ConscryptSocketAdapter$Companion$factory$1;->()V +Lokhttp3/internal/platform/android/DeferredSocketAdapter; +HSPLokhttp3/internal/platform/android/DeferredSocketAdapter;->(Lokhttp3/internal/platform/android/DeferredSocketAdapter$Factory;)V +HSPLokhttp3/internal/platform/android/DeferredSocketAdapter;->isSupported()Z +Lokhttp3/internal/platform/android/DeferredSocketAdapter$Factory; +Lokhttp3/internal/platform/android/SocketAdapter; +Lokhttp3/internal/tls/CertificateChainCleaner; +HSPLokhttp3/internal/tls/CertificateChainCleaner;->()V +HSPLokhttp3/internal/tls/CertificateChainCleaner;->()V +Lokhttp3/internal/tls/CertificateChainCleaner$Companion; +HSPLokhttp3/internal/tls/CertificateChainCleaner$Companion;->()V +HSPLokhttp3/internal/tls/CertificateChainCleaner$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokhttp3/internal/tls/CertificateChainCleaner$Companion;->get(Ljavax/net/ssl/X509TrustManager;)Lokhttp3/internal/tls/CertificateChainCleaner; +Lokhttp3/internal/tls/OkHostnameVerifier; +HSPLokhttp3/internal/tls/OkHostnameVerifier;->()V +HSPLokhttp3/internal/tls/OkHostnameVerifier;->()V +Lokhttp3/logging/HttpLoggingInterceptor; +HSPLokhttp3/logging/HttpLoggingInterceptor;->(Lokhttp3/logging/HttpLoggingInterceptor$Logger;)V +HSPLokhttp3/logging/HttpLoggingInterceptor;->level(Lokhttp3/logging/HttpLoggingInterceptor$Level;)V +Lokhttp3/logging/HttpLoggingInterceptor$Level; +HSPLokhttp3/logging/HttpLoggingInterceptor$Level;->$values()[Lokhttp3/logging/HttpLoggingInterceptor$Level; +HSPLokhttp3/logging/HttpLoggingInterceptor$Level;->()V +HSPLokhttp3/logging/HttpLoggingInterceptor$Level;->(Ljava/lang/String;I)V +Lokhttp3/logging/HttpLoggingInterceptor$Logger; +Lokio/-SegmentedByteString; +HSPLokio/-SegmentedByteString;->()V +HSPLokio/-SegmentedByteString;->arrayRangeEquals([BI[BII)Z +HSPLokio/-SegmentedByteString;->checkOffsetAndCount(JJJ)V +Lokio/Buffer; +HSPLokio/Buffer;->()V +HSPLokio/Buffer;->exhausted()Z +HSPLokio/Buffer;->read(Lokio/Buffer;J)J +HSPLokio/Buffer;->readInt()I +HSPLokio/Buffer;->setSize$okio(J)V +HSPLokio/Buffer;->size()J +HSPLokio/Buffer;->writableSegment$okio(I)Lokio/Segment; +HSPLokio/Buffer;->write(Lokio/Buffer;J)V +HSPLokio/Buffer;->write([B)Lokio/Buffer; +HSPLokio/Buffer;->write([BII)Lokio/Buffer; +HSPLokio/Buffer;->writeAll(Lokio/Source;)J +HSPLokio/Buffer;->writeInt(I)Lokio/Buffer; +Lokio/Buffer$UnsafeCursor; +HSPLokio/Buffer$UnsafeCursor;->()V +Lokio/BufferedSink; +Lokio/BufferedSource; +Lokio/ByteString; +HSPLokio/ByteString;->()V +HSPLokio/ByteString;->([B)V +HSPLokio/ByteString;->compareTo(Ljava/lang/Object;)I +HSPLokio/ByteString;->compareTo(Lokio/ByteString;)I +HSPLokio/ByteString;->getByte(I)B +HSPLokio/ByteString;->getData$okio()[B +HSPLokio/ByteString;->getSize$okio()I +HSPLokio/ByteString;->internalGet$okio(I)B +HSPLokio/ByteString;->rangeEquals(ILokio/ByteString;II)Z +HSPLokio/ByteString;->rangeEquals(I[BII)Z +HSPLokio/ByteString;->size()I +HSPLokio/ByteString;->startsWith(Lokio/ByteString;)Z +Lokio/ByteString$Companion; +HSPLokio/ByteString$Companion;->()V +HSPLokio/ByteString$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokio/ByteString$Companion;->decodeHex(Ljava/lang/String;)Lokio/ByteString; +Lokio/Options; +HSPLokio/Options;->()V +HSPLokio/Options;->([Lokio/ByteString;[I)V +HSPLokio/Options;->([Lokio/ByteString;[ILkotlin/jvm/internal/DefaultConstructorMarker;)V +Lokio/Options$Companion; +HSPLokio/Options$Companion;->()V +HSPLokio/Options$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLokio/Options$Companion;->buildTrieRecursive$default(Lokio/Options$Companion;JLokio/Buffer;ILjava/util/List;IILjava/util/List;ILjava/lang/Object;)V +HSPLokio/Options$Companion;->buildTrieRecursive(JLokio/Buffer;ILjava/util/List;IILjava/util/List;)V +HSPLokio/Options$Companion;->getIntCount(Lokio/Buffer;)J +HSPLokio/Options$Companion;->of([Lokio/ByteString;)Lokio/Options; +Lokio/Segment; +HSPLokio/Segment;->()V +HSPLokio/Segment;->()V +HSPLokio/Segment;->([BIIZZ)V +HSPLokio/Segment;->compact()V +HSPLokio/Segment;->pop()Lokio/Segment; +HSPLokio/Segment;->push(Lokio/Segment;)Lokio/Segment; +HSPLokio/Segment;->writeTo(Lokio/Segment;I)V +Lokio/Segment$Companion; +HSPLokio/Segment$Companion;->()V +HSPLokio/Segment$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lokio/SegmentPool; +HSPLokio/SegmentPool;->()V +HSPLokio/SegmentPool;->()V +HSPLokio/SegmentPool;->firstRef()Ljava/util/concurrent/atomic/AtomicReference; +HSPLokio/SegmentPool;->recycle(Lokio/Segment;)V +HSPLokio/SegmentPool;->take()Lokio/Segment; +Lokio/Sink; +Lokio/Source; +Lokio/internal/-ByteString; +HSPLokio/internal/-ByteString;->()V +HSPLokio/internal/-ByteString;->access$decodeHexDigit(C)I +HSPLokio/internal/-ByteString;->decodeHexDigit(C)I +Lorg/apache/commons/codec/BinaryDecoder; +Lorg/apache/commons/codec/BinaryEncoder; +Lorg/apache/commons/codec/CodecPolicy; +HSPLorg/apache/commons/codec/CodecPolicy;->()V +HSPLorg/apache/commons/codec/CodecPolicy;->(Ljava/lang/String;I)V +Lorg/apache/commons/codec/Decoder; +Lorg/apache/commons/codec/Encoder; +Lorg/apache/commons/codec/binary/Base32; +HSPLorg/apache/commons/codec/binary/Base32;->()V +HSPLorg/apache/commons/codec/binary/Base32;->()V +HSPLorg/apache/commons/codec/binary/Base32;->(I[BZB)V +HSPLorg/apache/commons/codec/binary/Base32;->(I[BZBLorg/apache/commons/codec/CodecPolicy;)V +HSPLorg/apache/commons/codec/binary/Base32;->(Z)V +HSPLorg/apache/commons/codec/binary/Base32;->isInAlphabet(B)Z +Lorg/apache/commons/codec/binary/Base64; +HSPLorg/apache/commons/codec/binary/Base64;->()V +HSPLorg/apache/commons/codec/binary/Base64;->()V +HSPLorg/apache/commons/codec/binary/Base64;->(I)V +HSPLorg/apache/commons/codec/binary/Base64;->(I[B)V +HSPLorg/apache/commons/codec/binary/Base64;->(I[BZ)V +HSPLorg/apache/commons/codec/binary/Base64;->(I[BZLorg/apache/commons/codec/CodecPolicy;)V +HSPLorg/apache/commons/codec/binary/Base64;->decode([BIILorg/apache/commons/codec/binary/BaseNCodec$Context;)V +HSPLorg/apache/commons/codec/binary/Base64;->encode([BIILorg/apache/commons/codec/binary/BaseNCodec$Context;)V +HSPLorg/apache/commons/codec/binary/Base64;->isInAlphabet(B)Z +HSPLorg/apache/commons/codec/binary/Base64;->validateCharacter(ILorg/apache/commons/codec/binary/BaseNCodec$Context;)V +Lorg/apache/commons/codec/binary/BaseNCodec; +HSPLorg/apache/commons/codec/binary/BaseNCodec;->()V +HSPLorg/apache/commons/codec/binary/BaseNCodec;->(IIIIBLorg/apache/commons/codec/CodecPolicy;)V +HSPLorg/apache/commons/codec/binary/BaseNCodec;->available(Lorg/apache/commons/codec/binary/BaseNCodec$Context;)I +HSPLorg/apache/commons/codec/binary/BaseNCodec;->containsAlphabetOrPad([B)Z +HSPLorg/apache/commons/codec/binary/BaseNCodec;->decode([B)[B +HSPLorg/apache/commons/codec/binary/BaseNCodec;->encode([B)[B +HSPLorg/apache/commons/codec/binary/BaseNCodec;->encode([BII)[B +HSPLorg/apache/commons/codec/binary/BaseNCodec;->ensureBufferSize(ILorg/apache/commons/codec/binary/BaseNCodec$Context;)[B +HSPLorg/apache/commons/codec/binary/BaseNCodec;->getDefaultBufferSize()I +HSPLorg/apache/commons/codec/binary/BaseNCodec;->hasData(Lorg/apache/commons/codec/binary/BaseNCodec$Context;)Z +HSPLorg/apache/commons/codec/binary/BaseNCodec;->isStrictDecoding()Z +HSPLorg/apache/commons/codec/binary/BaseNCodec;->readResults([BIILorg/apache/commons/codec/binary/BaseNCodec$Context;)I +Lorg/apache/commons/codec/binary/BaseNCodec$Context; +HSPLorg/apache/commons/codec/binary/BaseNCodec$Context;->()V +Lorg/apache/commons/codec/binary/BinaryCodec; +HSPLorg/apache/commons/codec/binary/BinaryCodec;->()V +HSPLorg/apache/commons/codec/binary/BinaryCodec;->isEmpty([B)Z +Lorg/bouncycastle/asn1/ASN1Encodable; +Lorg/bouncycastle/asn1/ASN1Object; +HSPLorg/bouncycastle/asn1/ASN1Object;->()V +Lorg/bouncycastle/asn1/ASN1ObjectIdentifier; +HSPLorg/bouncycastle/asn1/ASN1ObjectIdentifier;->()V +HSPLorg/bouncycastle/asn1/ASN1ObjectIdentifier;->(Ljava/lang/String;)V +HSPLorg/bouncycastle/asn1/ASN1ObjectIdentifier;->(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Ljava/lang/String;)V +HSPLorg/bouncycastle/asn1/ASN1ObjectIdentifier;->branch(Ljava/lang/String;)Lorg/bouncycastle/asn1/ASN1ObjectIdentifier; +HSPLorg/bouncycastle/asn1/ASN1ObjectIdentifier;->doOutput(Ljava/io/ByteArrayOutputStream;)V +HSPLorg/bouncycastle/asn1/ASN1ObjectIdentifier;->getContents()[B +HSPLorg/bouncycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String; +HSPLorg/bouncycastle/asn1/ASN1ObjectIdentifier;->hashCode()I +HSPLorg/bouncycastle/asn1/ASN1ObjectIdentifier;->intern()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier; +HSPLorg/bouncycastle/asn1/ASN1ObjectIdentifier;->isValidIdentifier(Ljava/lang/String;)Z +HSPLorg/bouncycastle/asn1/ASN1ObjectIdentifier;->toString()Ljava/lang/String; +Lorg/bouncycastle/asn1/ASN1ObjectIdentifier$1; +HSPLorg/bouncycastle/asn1/ASN1ObjectIdentifier$1;->(Ljava/lang/Class;I)V +Lorg/bouncycastle/asn1/ASN1ObjectIdentifier$OidHandle; +HSPLorg/bouncycastle/asn1/ASN1ObjectIdentifier$OidHandle;->([B)V +HSPLorg/bouncycastle/asn1/ASN1ObjectIdentifier$OidHandle;->hashCode()I +Lorg/bouncycastle/asn1/ASN1Primitive; +HSPLorg/bouncycastle/asn1/ASN1Primitive;->()V +Lorg/bouncycastle/asn1/ASN1RelativeOID; +HSPLorg/bouncycastle/asn1/ASN1RelativeOID;->()V +HSPLorg/bouncycastle/asn1/ASN1RelativeOID;->isValidIdentifier(Ljava/lang/String;I)Z +HSPLorg/bouncycastle/asn1/ASN1RelativeOID;->writeField(Ljava/io/ByteArrayOutputStream;J)V +Lorg/bouncycastle/asn1/ASN1RelativeOID$1; +HSPLorg/bouncycastle/asn1/ASN1RelativeOID$1;->(Ljava/lang/Class;I)V +Lorg/bouncycastle/asn1/ASN1Tag; +HSPLorg/bouncycastle/asn1/ASN1Tag;->(II)V +HSPLorg/bouncycastle/asn1/ASN1Tag;->create(II)Lorg/bouncycastle/asn1/ASN1Tag; +Lorg/bouncycastle/asn1/ASN1Type; +HSPLorg/bouncycastle/asn1/ASN1Type;->(Ljava/lang/Class;)V +Lorg/bouncycastle/asn1/ASN1UniversalType; +HSPLorg/bouncycastle/asn1/ASN1UniversalType;->(Ljava/lang/Class;I)V +Lorg/bouncycastle/asn1/OIDTokenizer; +HSPLorg/bouncycastle/asn1/OIDTokenizer;->(Ljava/lang/String;)V +HSPLorg/bouncycastle/asn1/OIDTokenizer;->hasMoreTokens()Z +HSPLorg/bouncycastle/asn1/OIDTokenizer;->nextToken()Ljava/lang/String; +Lorg/bouncycastle/asn1/bc/BCObjectIdentifiers; +HSPLorg/bouncycastle/asn1/bc/BCObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/cryptopro/CryptoProObjectIdentifiers; +HSPLorg/bouncycastle/asn1/cryptopro/CryptoProObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/edec/EdECObjectIdentifiers; +HSPLorg/bouncycastle/asn1/edec/EdECObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/gm/GMObjectIdentifiers; +HSPLorg/bouncycastle/asn1/gm/GMObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/gnu/GNUObjectIdentifiers; +HSPLorg/bouncycastle/asn1/gnu/GNUObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/iana/IANAObjectIdentifiers; +HSPLorg/bouncycastle/asn1/iana/IANAObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/isara/IsaraObjectIdentifiers; +HSPLorg/bouncycastle/asn1/isara/IsaraObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/iso/ISOIECObjectIdentifiers; +HSPLorg/bouncycastle/asn1/iso/ISOIECObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/kisa/KISAObjectIdentifiers; +HSPLorg/bouncycastle/asn1/kisa/KISAObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/misc/MiscObjectIdentifiers; +HSPLorg/bouncycastle/asn1/misc/MiscObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/nist/NISTObjectIdentifiers; +HSPLorg/bouncycastle/asn1/nist/NISTObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/nsri/NSRIObjectIdentifiers; +HSPLorg/bouncycastle/asn1/nsri/NSRIObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/ntt/NTTObjectIdentifiers; +HSPLorg/bouncycastle/asn1/ntt/NTTObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/oiw/OIWObjectIdentifiers; +HSPLorg/bouncycastle/asn1/oiw/OIWObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers; +HSPLorg/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/rosstandart/RosstandartObjectIdentifiers; +HSPLorg/bouncycastle/asn1/rosstandart/RosstandartObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/sec/SECObjectIdentifiers; +HSPLorg/bouncycastle/asn1/sec/SECObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/teletrust/TeleTrusTObjectIdentifiers; +HSPLorg/bouncycastle/asn1/teletrust/TeleTrusTObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/ua/UAObjectIdentifiers; +HSPLorg/bouncycastle/asn1/ua/UAObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/x509/X509ObjectIdentifiers; +HSPLorg/bouncycastle/asn1/x509/X509ObjectIdentifiers;->()V +Lorg/bouncycastle/asn1/x9/X9ECParameters; +Lorg/bouncycastle/asn1/x9/X9ObjectIdentifiers; +HSPLorg/bouncycastle/asn1/x9/X9ObjectIdentifiers;->()V +Lorg/bouncycastle/crypto/CipherParameters; +Lorg/bouncycastle/crypto/CryptoServiceConstraintsException; +Lorg/bouncycastle/crypto/CryptoServiceProperties; +Lorg/bouncycastle/crypto/CryptoServicePurpose; +HSPLorg/bouncycastle/crypto/CryptoServicePurpose;->()V +HSPLorg/bouncycastle/crypto/CryptoServicePurpose;->(Ljava/lang/String;I)V +Lorg/bouncycastle/crypto/CryptoServicesConstraints; +Lorg/bouncycastle/crypto/CryptoServicesPermission; +HSPLorg/bouncycastle/crypto/CryptoServicesPermission;->(Ljava/lang/String;)V +Lorg/bouncycastle/crypto/CryptoServicesRegistrar; +HSPLorg/bouncycastle/crypto/CryptoServicesRegistrar;->()V +HSPLorg/bouncycastle/crypto/CryptoServicesRegistrar;->checkConstraints(Lorg/bouncycastle/crypto/CryptoServiceProperties;)V +HSPLorg/bouncycastle/crypto/CryptoServicesRegistrar;->chooseLowerBound(I)I +HSPLorg/bouncycastle/crypto/CryptoServicesRegistrar;->getDefaultConstraints()Lorg/bouncycastle/crypto/CryptoServicesConstraints; +HSPLorg/bouncycastle/crypto/CryptoServicesRegistrar;->localSetGlobalProperty(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;[Ljava/lang/Object;)V +HSPLorg/bouncycastle/crypto/CryptoServicesRegistrar;->localSetThread(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;[Ljava/lang/Object;)V +HSPLorg/bouncycastle/crypto/CryptoServicesRegistrar;->toDH(Lorg/bouncycastle/crypto/params/DSAParameters;)Lorg/bouncycastle/crypto/params/DHParameters; +Lorg/bouncycastle/crypto/CryptoServicesRegistrar$1; +HSPLorg/bouncycastle/crypto/CryptoServicesRegistrar$1;->()V +HSPLorg/bouncycastle/crypto/CryptoServicesRegistrar$1;->check(Lorg/bouncycastle/crypto/CryptoServiceProperties;)V +Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property; +HSPLorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;->()V +HSPLorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;->(Ljava/lang/String;Ljava/lang/Class;)V +HSPLorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;->access$100(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)Ljava/lang/String; +HSPLorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;->access$200(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)Ljava/lang/Class; +Lorg/bouncycastle/crypto/CryptoServicesRegistrar$ThreadLocalSecureRandomProvider; +HSPLorg/bouncycastle/crypto/CryptoServicesRegistrar$ThreadLocalSecureRandomProvider;->()V +HSPLorg/bouncycastle/crypto/CryptoServicesRegistrar$ThreadLocalSecureRandomProvider;->(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$1;)V +Lorg/bouncycastle/crypto/DerivationFunction; +Lorg/bouncycastle/crypto/DerivationParameters; +Lorg/bouncycastle/crypto/Digest; +Lorg/bouncycastle/crypto/ExtendedDigest; +Lorg/bouncycastle/crypto/Mac; +Lorg/bouncycastle/crypto/PBEParametersGenerator; +HSPLorg/bouncycastle/crypto/PBEParametersGenerator;->()V +HSPLorg/bouncycastle/crypto/PBEParametersGenerator;->init([B[BI)V +Lorg/bouncycastle/crypto/SavableDigest; +Lorg/bouncycastle/crypto/SecureRandomProvider; +Lorg/bouncycastle/crypto/digests/EncodableDigest; +Lorg/bouncycastle/crypto/digests/GeneralDigest; +HSPLorg/bouncycastle/crypto/digests/GeneralDigest;->(Lorg/bouncycastle/crypto/CryptoServicePurpose;)V +HSPLorg/bouncycastle/crypto/digests/GeneralDigest;->(Lorg/bouncycastle/crypto/digests/GeneralDigest;)V +HSPLorg/bouncycastle/crypto/digests/GeneralDigest;->copyIn(Lorg/bouncycastle/crypto/digests/GeneralDigest;)V +HSPLorg/bouncycastle/crypto/digests/GeneralDigest;->getByteLength()I +HSPLorg/bouncycastle/crypto/digests/GeneralDigest;->reset()V +Lorg/bouncycastle/crypto/digests/SHA256Digest; +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->()V +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->()V +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->(Lorg/bouncycastle/crypto/CryptoServicePurpose;)V +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->(Lorg/bouncycastle/crypto/digests/SHA256Digest;)V +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->Ch(III)I +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->Maj(III)I +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->Sum0(I)I +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->Sum1(I)I +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->Theta0(I)I +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->Theta1(I)I +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->copy()Lorg/bouncycastle/util/Memoable; +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->copyIn(Lorg/bouncycastle/crypto/digests/SHA256Digest;)V +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->cryptoServiceProperties()Lorg/bouncycastle/crypto/CryptoServiceProperties; +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->getAlgorithmName()Ljava/lang/String; +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->getDigestSize()I +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->processBlock()V +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->processLength(J)V +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->processWord([BI)V +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->reset()V +HSPLorg/bouncycastle/crypto/digests/SHA256Digest;->reset(Lorg/bouncycastle/util/Memoable;)V +Lorg/bouncycastle/crypto/digests/Utils; +HSPLorg/bouncycastle/crypto/digests/Utils;->getDefaultProperties(Lorg/bouncycastle/crypto/Digest;ILorg/bouncycastle/crypto/CryptoServicePurpose;)Lorg/bouncycastle/crypto/CryptoServiceProperties; +Lorg/bouncycastle/crypto/digests/Utils$DefaultPropertiesWithPRF; +HSPLorg/bouncycastle/crypto/digests/Utils$DefaultPropertiesWithPRF;->(IILjava/lang/String;Lorg/bouncycastle/crypto/CryptoServicePurpose;)V +Lorg/bouncycastle/crypto/generators/HKDFBytesGenerator; +HSPLorg/bouncycastle/crypto/generators/HKDFBytesGenerator;->(Lorg/bouncycastle/crypto/Digest;)V +HSPLorg/bouncycastle/crypto/generators/HKDFBytesGenerator;->expandNext()V +HSPLorg/bouncycastle/crypto/generators/HKDFBytesGenerator;->generateBytes([BII)I +HSPLorg/bouncycastle/crypto/generators/HKDFBytesGenerator;->init(Lorg/bouncycastle/crypto/DerivationParameters;)V +Lorg/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator; +HSPLorg/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator;->(Lorg/bouncycastle/crypto/Digest;)V +HSPLorg/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator;->F([BI[B[BI)V +HSPLorg/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator;->generateDerivedKey(I)[B +HSPLorg/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator;->generateDerivedMacParameters(I)Lorg/bouncycastle/crypto/CipherParameters; +HSPLorg/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator;->generateDerivedParameters(I)Lorg/bouncycastle/crypto/CipherParameters; +Lorg/bouncycastle/crypto/macs/HMac; +HSPLorg/bouncycastle/crypto/macs/HMac;->()V +HSPLorg/bouncycastle/crypto/macs/HMac;->(Lorg/bouncycastle/crypto/Digest;)V +HSPLorg/bouncycastle/crypto/macs/HMac;->(Lorg/bouncycastle/crypto/Digest;I)V +HSPLorg/bouncycastle/crypto/macs/HMac;->getByteLength(Lorg/bouncycastle/crypto/Digest;)I +HSPLorg/bouncycastle/crypto/macs/HMac;->getMacSize()I +HSPLorg/bouncycastle/crypto/macs/HMac;->init(Lorg/bouncycastle/crypto/CipherParameters;)V +HSPLorg/bouncycastle/crypto/macs/HMac;->update(B)V +HSPLorg/bouncycastle/crypto/macs/HMac;->update([BII)V +HSPLorg/bouncycastle/crypto/macs/HMac;->xorPad([BIB)V +Lorg/bouncycastle/crypto/params/DHParameters; +HSPLorg/bouncycastle/crypto/params/DHParameters;->(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;IILjava/math/BigInteger;Lorg/bouncycastle/crypto/params/DHValidationParameters;)V +Lorg/bouncycastle/crypto/params/DHValidationParameters; +HSPLorg/bouncycastle/crypto/params/DHValidationParameters;->([BI)V +Lorg/bouncycastle/crypto/params/DSAParameters; +HSPLorg/bouncycastle/crypto/params/DSAParameters;->(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Lorg/bouncycastle/crypto/params/DSAValidationParameters;)V +HSPLorg/bouncycastle/crypto/params/DSAParameters;->getG()Ljava/math/BigInteger; +HSPLorg/bouncycastle/crypto/params/DSAParameters;->getP()Ljava/math/BigInteger; +HSPLorg/bouncycastle/crypto/params/DSAParameters;->getQ()Ljava/math/BigInteger; +HSPLorg/bouncycastle/crypto/params/DSAParameters;->getValidationParameters()Lorg/bouncycastle/crypto/params/DSAValidationParameters; +Lorg/bouncycastle/crypto/params/DSAValidationParameters; +HSPLorg/bouncycastle/crypto/params/DSAValidationParameters;->([BI)V +HSPLorg/bouncycastle/crypto/params/DSAValidationParameters;->([BII)V +HSPLorg/bouncycastle/crypto/params/DSAValidationParameters;->getCounter()I +HSPLorg/bouncycastle/crypto/params/DSAValidationParameters;->getSeed()[B +Lorg/bouncycastle/crypto/params/HKDFParameters; +HSPLorg/bouncycastle/crypto/params/HKDFParameters;->([BZ[B[B)V +HSPLorg/bouncycastle/crypto/params/HKDFParameters;->getIKM()[B +HSPLorg/bouncycastle/crypto/params/HKDFParameters;->getInfo()[B +HSPLorg/bouncycastle/crypto/params/HKDFParameters;->skipExtract()Z +HSPLorg/bouncycastle/crypto/params/HKDFParameters;->skipExtractParameters([B[B)Lorg/bouncycastle/crypto/params/HKDFParameters; +Lorg/bouncycastle/crypto/params/KeyParameter; +HSPLorg/bouncycastle/crypto/params/KeyParameter;->(I)V +HSPLorg/bouncycastle/crypto/params/KeyParameter;->([B)V +HSPLorg/bouncycastle/crypto/params/KeyParameter;->([BII)V +HSPLorg/bouncycastle/crypto/params/KeyParameter;->getKey()[B +Lorg/bouncycastle/internal/asn1/bsi/BSIObjectIdentifiers; +HSPLorg/bouncycastle/internal/asn1/bsi/BSIObjectIdentifiers;->()V +Lorg/bouncycastle/internal/asn1/cms/CMSObjectIdentifiers; +HSPLorg/bouncycastle/internal/asn1/cms/CMSObjectIdentifiers;->()V +Lorg/bouncycastle/internal/asn1/eac/EACObjectIdentifiers; +HSPLorg/bouncycastle/internal/asn1/eac/EACObjectIdentifiers;->()V +Lorg/bouncycastle/jcajce/provider/asymmetric/COMPOSITE; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/COMPOSITE;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/COMPOSITE;->access$000()Lorg/bouncycastle/jcajce/provider/util/AsymmetricKeyInfoConverter; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/COMPOSITE;->access$002(Lorg/bouncycastle/jcajce/provider/util/AsymmetricKeyInfoConverter;)Lorg/bouncycastle/jcajce/provider/util/AsymmetricKeyInfoConverter; +Lorg/bouncycastle/jcajce/provider/asymmetric/COMPOSITE$CompositeKeyInfoConverter; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/COMPOSITE$CompositeKeyInfoConverter;->(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/COMPOSITE$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/COMPOSITE$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/COMPOSITE$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/DH; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/DH;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/DH;->access$000()Ljava/util/Map; +Lorg/bouncycastle/jcajce/provider/asymmetric/DH$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/DH$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/DH$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/DSA$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/DSA$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/DSA$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/DSTU4145$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/DSTU4145$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/DSTU4145$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/Dilithium$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/Dilithium$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/Dilithium$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/EC; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/EC;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/EC;->access$000()Ljava/util/Map; +Lorg/bouncycastle/jcajce/provider/asymmetric/EC$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/EC$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/EC$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/ECGOST$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/ECGOST$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/ECGOST$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/EXTERNAL; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/EXTERNAL;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/EXTERNAL;->access$000()Lorg/bouncycastle/jcajce/provider/util/AsymmetricKeyInfoConverter; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/EXTERNAL;->access$002(Lorg/bouncycastle/jcajce/provider/util/AsymmetricKeyInfoConverter;)Lorg/bouncycastle/jcajce/provider/util/AsymmetricKeyInfoConverter; +Lorg/bouncycastle/jcajce/provider/asymmetric/EXTERNAL$ExternalKeyInfoConverter; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/EXTERNAL$ExternalKeyInfoConverter;->(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/EXTERNAL$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/EXTERNAL$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/EXTERNAL$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/EdEC$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/EdEC$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/EdEC$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/ElGamal$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/ElGamal$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/ElGamal$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/Falcon$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/Falcon$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/Falcon$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/GM$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/GM$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/GM$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/GOST$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/GOST$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/GOST$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/IES$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/IES$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/IES$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/LMS$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/LMS$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/LMS$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/NTRU$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/NTRU$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/NTRU$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/RSA; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/RSA;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/RSA;->access$000()Ljava/util/Map; +Lorg/bouncycastle/jcajce/provider/asymmetric/RSA$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/RSA$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/RSA$Mappings;->addDigestSignature(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/RSA$Mappings;->addISO9796Signature(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/RSA$Mappings;->addPSSSignature(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/RSA$Mappings;->addPSSSignature(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/RSA$Mappings;->addX931Signature(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/RSA$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/SPHINCSPlus$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/SPHINCSPlus$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/SPHINCSPlus$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/X509$Mappings; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/X509$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/X509$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/dh/KeyFactorySpi; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/dh/KeyFactorySpi;->()V +Lorg/bouncycastle/jcajce/provider/asymmetric/dsa/DSAUtil; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/dsa/DSAUtil;->()V +Lorg/bouncycastle/jcajce/provider/asymmetric/dsa/KeyFactorySpi; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/dsa/KeyFactorySpi;->()V +Lorg/bouncycastle/jcajce/provider/asymmetric/dstu/KeyFactorySpi; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/dstu/KeyFactorySpi;->()V +Lorg/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi;->(Ljava/lang/String;Lorg/bouncycastle/jcajce/provider/config/ProviderConfiguration;)V +Lorg/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi$EC; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi$EC;->()V +Lorg/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi$ECMQV; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi$ECMQV;->()V +Lorg/bouncycastle/jcajce/provider/asymmetric/ecgost/KeyFactorySpi; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/ecgost/KeyFactorySpi;->()V +Lorg/bouncycastle/jcajce/provider/asymmetric/ecgost12/KeyFactorySpi; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/ecgost12/KeyFactorySpi;->()V +Lorg/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi;->()V +HSPLorg/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi;->(Ljava/lang/String;ZI)V +Lorg/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$Ed25519; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$Ed25519;->()V +Lorg/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$Ed448; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$Ed448;->()V +Lorg/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$X25519; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$X25519;->()V +Lorg/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$X448; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$X448;->()V +Lorg/bouncycastle/jcajce/provider/asymmetric/elgamal/KeyFactorySpi; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/elgamal/KeyFactorySpi;->()V +Lorg/bouncycastle/jcajce/provider/asymmetric/gost/KeyFactorySpi; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/gost/KeyFactorySpi;->()V +Lorg/bouncycastle/jcajce/provider/asymmetric/rsa/KeyFactorySpi; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/rsa/KeyFactorySpi;->()V +Lorg/bouncycastle/jcajce/provider/asymmetric/util/BaseKeyFactorySpi; +HSPLorg/bouncycastle/jcajce/provider/asymmetric/util/BaseKeyFactorySpi;->()V +Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider; +Lorg/bouncycastle/jcajce/provider/config/ProviderConfiguration; +Lorg/bouncycastle/jcajce/provider/config/ProviderConfigurationPermission; +HSPLorg/bouncycastle/jcajce/provider/config/ProviderConfigurationPermission;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/bouncycastle/jcajce/provider/config/ProviderConfigurationPermission;->calculateMask(Ljava/lang/String;)I +Lorg/bouncycastle/jcajce/provider/digest/Blake2b; +Lorg/bouncycastle/jcajce/provider/digest/Blake2b$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/Blake2b$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/Blake2b$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/Blake2b$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/Blake2s; +Lorg/bouncycastle/jcajce/provider/digest/Blake2s$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/Blake2s$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/Blake2s$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/Blake2s$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/Blake3; +Lorg/bouncycastle/jcajce/provider/digest/Blake3$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/Blake3$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/Blake3$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/Blake3$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/DSTU7564; +Lorg/bouncycastle/jcajce/provider/digest/DSTU7564$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/DSTU7564$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/DSTU7564$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/DSTU7564$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/DigestAlgorithmProvider; +HSPLorg/bouncycastle/jcajce/provider/digest/DigestAlgorithmProvider;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/DigestAlgorithmProvider;->addHMACAlgorithm(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/bouncycastle/jcajce/provider/digest/DigestAlgorithmProvider;->addHMACAlias(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V +HSPLorg/bouncycastle/jcajce/provider/digest/DigestAlgorithmProvider;->addKMACAlgorithm(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +Lorg/bouncycastle/jcajce/provider/digest/GOST3411; +Lorg/bouncycastle/jcajce/provider/digest/GOST3411$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/GOST3411$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/GOST3411$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/GOST3411$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/Haraka; +Lorg/bouncycastle/jcajce/provider/digest/Haraka$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/Haraka$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/Haraka$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/Haraka$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/Keccak; +Lorg/bouncycastle/jcajce/provider/digest/Keccak$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/Keccak$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/Keccak$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/Keccak$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/MD2; +Lorg/bouncycastle/jcajce/provider/digest/MD2$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/MD2$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/MD2$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/MD2$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/MD4; +Lorg/bouncycastle/jcajce/provider/digest/MD4$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/MD4$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/MD4$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/MD4$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/MD5; +Lorg/bouncycastle/jcajce/provider/digest/MD5$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/MD5$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/MD5$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/MD5$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/RIPEMD128; +Lorg/bouncycastle/jcajce/provider/digest/RIPEMD128$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/RIPEMD128$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/RIPEMD128$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/RIPEMD128$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/RIPEMD160; +Lorg/bouncycastle/jcajce/provider/digest/RIPEMD160$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/RIPEMD160$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/RIPEMD160$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/RIPEMD160$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/RIPEMD256; +Lorg/bouncycastle/jcajce/provider/digest/RIPEMD256$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/RIPEMD256$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/RIPEMD256$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/RIPEMD256$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/RIPEMD320; +Lorg/bouncycastle/jcajce/provider/digest/RIPEMD320$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/RIPEMD320$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/RIPEMD320$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/RIPEMD320$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/SHA1; +Lorg/bouncycastle/jcajce/provider/digest/SHA1$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/SHA1$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/SHA1$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/SHA1$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/SHA224; +Lorg/bouncycastle/jcajce/provider/digest/SHA224$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/SHA224$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/SHA224$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/SHA224$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/SHA256; +Lorg/bouncycastle/jcajce/provider/digest/SHA256$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/SHA256$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/SHA256$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/SHA256$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/SHA3; +Lorg/bouncycastle/jcajce/provider/digest/SHA3$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/SHA3$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/SHA3$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/SHA3$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/SHA384; +Lorg/bouncycastle/jcajce/provider/digest/SHA384$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/SHA384$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/SHA384$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/SHA384$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/SHA512; +Lorg/bouncycastle/jcajce/provider/digest/SHA512$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/SHA512$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/SHA512$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/SHA512$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/SM3; +Lorg/bouncycastle/jcajce/provider/digest/SM3$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/SM3$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/SM3$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/SM3$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/Skein; +Lorg/bouncycastle/jcajce/provider/digest/Skein$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/Skein$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/Skein$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/Skein$Mappings;->addSkeinMacAlgorithm(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;II)V +HSPLorg/bouncycastle/jcajce/provider/digest/Skein$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/Tiger; +Lorg/bouncycastle/jcajce/provider/digest/Tiger$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/Tiger$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/Tiger$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/Tiger$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/digest/Whirlpool; +Lorg/bouncycastle/jcajce/provider/digest/Whirlpool$Mappings; +HSPLorg/bouncycastle/jcajce/provider/digest/Whirlpool$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/Whirlpool$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/digest/Whirlpool$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/drbg/DRBG; +HSPLorg/bouncycastle/jcajce/provider/drbg/DRBG;->()V +HSPLorg/bouncycastle/jcajce/provider/drbg/DRBG;->access$000()Ljava/lang/String; +Lorg/bouncycastle/jcajce/provider/drbg/DRBG$Mappings; +HSPLorg/bouncycastle/jcajce/provider/drbg/DRBG$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/drbg/DRBG$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/drbg/EntropyDaemon; +HSPLorg/bouncycastle/jcajce/provider/drbg/EntropyDaemon;->()V +HSPLorg/bouncycastle/jcajce/provider/drbg/EntropyDaemon;->()V +Lorg/bouncycastle/jcajce/provider/keystore/BC$Mappings; +HSPLorg/bouncycastle/jcajce/provider/keystore/BC$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/keystore/BC$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/keystore/BCFKS$Mappings; +HSPLorg/bouncycastle/jcajce/provider/keystore/BCFKS$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/keystore/BCFKS$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/keystore/PKCS12$Mappings; +HSPLorg/bouncycastle/jcajce/provider/keystore/PKCS12$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/keystore/PKCS12$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/AES; +HSPLorg/bouncycastle/jcajce/provider/symmetric/AES;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/AES;->access$100()Ljava/util/Map; +Lorg/bouncycastle/jcajce/provider/symmetric/AES$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/AES$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/AES$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/AES$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/ARC4; +Lorg/bouncycastle/jcajce/provider/symmetric/ARC4$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/ARC4$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/ARC4$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/ARC4$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/ARIA; +Lorg/bouncycastle/jcajce/provider/symmetric/ARIA$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/ARIA$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/ARIA$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/ARIA$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/Blowfish; +Lorg/bouncycastle/jcajce/provider/symmetric/Blowfish$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/Blowfish$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Blowfish$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Blowfish$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/CAST5; +Lorg/bouncycastle/jcajce/provider/symmetric/CAST5$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/CAST5$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/CAST5$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/CAST5$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/CAST6; +Lorg/bouncycastle/jcajce/provider/symmetric/CAST6$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/CAST6$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/CAST6$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/CAST6$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/Camellia; +Lorg/bouncycastle/jcajce/provider/symmetric/Camellia$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/Camellia$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Camellia$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Camellia$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/ChaCha; +Lorg/bouncycastle/jcajce/provider/symmetric/ChaCha$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/ChaCha$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/ChaCha$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/ChaCha$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/DES; +Lorg/bouncycastle/jcajce/provider/symmetric/DES$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/DES$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/DES$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/DES$Mappings;->addAlias(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Ljava/lang/String;)V +HSPLorg/bouncycastle/jcajce/provider/symmetric/DES$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/DESede; +Lorg/bouncycastle/jcajce/provider/symmetric/DESede$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/DESede$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/DESede$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/DESede$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/DSTU7624; +Lorg/bouncycastle/jcajce/provider/symmetric/DSTU7624$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/DSTU7624$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/DSTU7624$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/DSTU7624$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/GOST28147; +Lorg/bouncycastle/jcajce/provider/symmetric/GOST28147$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/GOST28147$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/GOST28147$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/GOST28147$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/GOST3412_2015; +Lorg/bouncycastle/jcajce/provider/symmetric/GOST3412_2015$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/GOST3412_2015$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/GOST3412_2015$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/GOST3412_2015$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/Grain128; +Lorg/bouncycastle/jcajce/provider/symmetric/Grain128$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/Grain128$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Grain128$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Grain128$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/Grainv1; +Lorg/bouncycastle/jcajce/provider/symmetric/Grainv1$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/Grainv1$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Grainv1$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Grainv1$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/HC128; +Lorg/bouncycastle/jcajce/provider/symmetric/HC128$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/HC128$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/HC128$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/HC128$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/HC256; +Lorg/bouncycastle/jcajce/provider/symmetric/HC256$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/HC256$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/HC256$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/HC256$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/IDEA; +Lorg/bouncycastle/jcajce/provider/symmetric/IDEA$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/IDEA$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/IDEA$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/IDEA$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/Noekeon; +Lorg/bouncycastle/jcajce/provider/symmetric/Noekeon$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/Noekeon$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Noekeon$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Noekeon$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/OpenSSLPBKDF; +Lorg/bouncycastle/jcajce/provider/symmetric/OpenSSLPBKDF$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/OpenSSLPBKDF$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/OpenSSLPBKDF$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/OpenSSLPBKDF$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/PBEPBKDF1; +Lorg/bouncycastle/jcajce/provider/symmetric/PBEPBKDF1$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/PBEPBKDF1$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/PBEPBKDF1$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/PBEPBKDF1$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2; +Lorg/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/PBEPKCS12; +Lorg/bouncycastle/jcajce/provider/symmetric/PBEPKCS12$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/PBEPKCS12$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/PBEPKCS12$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/PBEPKCS12$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/Poly1305; +Lorg/bouncycastle/jcajce/provider/symmetric/Poly1305$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/Poly1305$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Poly1305$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Poly1305$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/RC2; +Lorg/bouncycastle/jcajce/provider/symmetric/RC2$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/RC2$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/RC2$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/RC2$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/RC5; +Lorg/bouncycastle/jcajce/provider/symmetric/RC5$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/RC5$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/RC5$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/RC5$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/RC6; +Lorg/bouncycastle/jcajce/provider/symmetric/RC6$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/RC6$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/RC6$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/RC6$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/Rijndael; +Lorg/bouncycastle/jcajce/provider/symmetric/Rijndael$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/Rijndael$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Rijndael$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Rijndael$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/SCRYPT; +Lorg/bouncycastle/jcajce/provider/symmetric/SCRYPT$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/SCRYPT$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/SCRYPT$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/SCRYPT$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/SEED; +Lorg/bouncycastle/jcajce/provider/symmetric/SEED$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/SEED$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/SEED$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/SEED$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/SM4; +Lorg/bouncycastle/jcajce/provider/symmetric/SM4$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/SM4$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/SM4$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/SM4$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/Salsa20; +Lorg/bouncycastle/jcajce/provider/symmetric/Salsa20$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/Salsa20$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Salsa20$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Salsa20$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/Serpent; +Lorg/bouncycastle/jcajce/provider/symmetric/Serpent$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/Serpent$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Serpent$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Serpent$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/Shacal2; +Lorg/bouncycastle/jcajce/provider/symmetric/Shacal2$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/Shacal2$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Shacal2$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Shacal2$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/SipHash; +Lorg/bouncycastle/jcajce/provider/symmetric/SipHash$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/SipHash$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/SipHash$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/SipHash$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/SipHash128; +Lorg/bouncycastle/jcajce/provider/symmetric/SipHash128$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/SipHash128$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/SipHash128$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/SipHash128$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/Skipjack; +Lorg/bouncycastle/jcajce/provider/symmetric/Skipjack$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/Skipjack$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Skipjack$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Skipjack$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/SymmetricAlgorithmProvider; +HSPLorg/bouncycastle/jcajce/provider/symmetric/SymmetricAlgorithmProvider;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/SymmetricAlgorithmProvider;->addCMacAlgorithm(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/bouncycastle/jcajce/provider/symmetric/SymmetricAlgorithmProvider;->addGMacAlgorithm(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/bouncycastle/jcajce/provider/symmetric/SymmetricAlgorithmProvider;->addPoly1305Algorithm(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +Lorg/bouncycastle/jcajce/provider/symmetric/TEA; +Lorg/bouncycastle/jcajce/provider/symmetric/TEA$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/TEA$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/TEA$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/TEA$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/TLSKDF; +Lorg/bouncycastle/jcajce/provider/symmetric/TLSKDF$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/TLSKDF$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/TLSKDF$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/TLSKDF$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/Threefish; +Lorg/bouncycastle/jcajce/provider/symmetric/Threefish$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/Threefish$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Threefish$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Threefish$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/Twofish; +Lorg/bouncycastle/jcajce/provider/symmetric/Twofish$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/Twofish$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Twofish$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Twofish$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/VMPC; +Lorg/bouncycastle/jcajce/provider/symmetric/VMPC$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/VMPC$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/VMPC$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/VMPC$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/VMPCKSA3; +Lorg/bouncycastle/jcajce/provider/symmetric/VMPCKSA3$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/VMPCKSA3$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/VMPCKSA3$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/VMPCKSA3$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/XSalsa20; +Lorg/bouncycastle/jcajce/provider/symmetric/XSalsa20$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/XSalsa20$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/XSalsa20$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/XSalsa20$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/XTEA; +Lorg/bouncycastle/jcajce/provider/symmetric/XTEA$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/XTEA$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/XTEA$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/XTEA$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/Zuc; +Lorg/bouncycastle/jcajce/provider/symmetric/Zuc$Mappings; +HSPLorg/bouncycastle/jcajce/provider/symmetric/Zuc$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Zuc$Mappings;->()V +HSPLorg/bouncycastle/jcajce/provider/symmetric/Zuc$Mappings;->configure(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V +Lorg/bouncycastle/jcajce/provider/symmetric/util/ClassUtil; +HSPLorg/bouncycastle/jcajce/provider/symmetric/util/ClassUtil;->loadClass(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Class; +Lorg/bouncycastle/jcajce/provider/util/AlgorithmProvider; +HSPLorg/bouncycastle/jcajce/provider/util/AlgorithmProvider;->()V +Lorg/bouncycastle/jcajce/provider/util/AsymmetricAlgorithmProvider; +HSPLorg/bouncycastle/jcajce/provider/util/AsymmetricAlgorithmProvider;->()V +HSPLorg/bouncycastle/jcajce/provider/util/AsymmetricAlgorithmProvider;->addKeyFactoryAlgorithm(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Lorg/bouncycastle/jcajce/provider/util/AsymmetricKeyInfoConverter;)V +HSPLorg/bouncycastle/jcajce/provider/util/AsymmetricAlgorithmProvider;->addKeyPairGeneratorAlgorithm(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V +HSPLorg/bouncycastle/jcajce/provider/util/AsymmetricAlgorithmProvider;->addSignatureAlgorithm(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/bouncycastle/jcajce/provider/util/AsymmetricAlgorithmProvider;->addSignatureAlgorithm(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V +HSPLorg/bouncycastle/jcajce/provider/util/AsymmetricAlgorithmProvider;->addSignatureAlgorithm(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Ljava/util/Map;)V +HSPLorg/bouncycastle/jcajce/provider/util/AsymmetricAlgorithmProvider;->addSignatureAlgorithm(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V +HSPLorg/bouncycastle/jcajce/provider/util/AsymmetricAlgorithmProvider;->registerKeyFactoryOid(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Ljava/lang/String;Lorg/bouncycastle/jcajce/provider/util/AsymmetricKeyInfoConverter;)V +HSPLorg/bouncycastle/jcajce/provider/util/AsymmetricAlgorithmProvider;->registerOid(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Ljava/lang/String;Lorg/bouncycastle/jcajce/provider/util/AsymmetricKeyInfoConverter;)V +HSPLorg/bouncycastle/jcajce/provider/util/AsymmetricAlgorithmProvider;->registerOidAlgorithmParameterGenerator(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Ljava/lang/String;)V +HSPLorg/bouncycastle/jcajce/provider/util/AsymmetricAlgorithmProvider;->registerOidAlgorithmParameters(Lorg/bouncycastle/jcajce/provider/config/ConfigurableProvider;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Ljava/lang/String;)V +Lorg/bouncycastle/jcajce/provider/util/AsymmetricKeyInfoConverter; +Lorg/bouncycastle/jce/provider/BouncyCastleProvider; +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->()V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->()V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->access$000(Lorg/bouncycastle/jce/provider/BouncyCastleProvider;)V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->access$101(Lorg/bouncycastle/jce/provider/BouncyCastleProvider;Ljava/lang/String;Ljava/lang/String;)Ljava/security/Provider$Service; +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->access$200(Lorg/bouncycastle/jce/provider/BouncyCastleProvider;)Ljava/util/Map; +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->access$301(Lorg/bouncycastle/jce/provider/BouncyCastleProvider;Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->access$401(Lorg/bouncycastle/jce/provider/BouncyCastleProvider;Ljava/security/Provider$Service;)V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->addAlgorithm(Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->addAlgorithm(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->addAlgorithm(Ljava/lang/String;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Ljava/lang/String;)V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->addAlgorithm(Ljava/lang/String;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Ljava/lang/String;Ljava/util/Map;)V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->addAttributes(Ljava/lang/String;Ljava/util/Map;)V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->addKeyInfoConverter(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Lorg/bouncycastle/jcajce/provider/util/AsymmetricKeyInfoConverter;)V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->getService(Ljava/lang/String;Ljava/lang/String;)Ljava/security/Provider$Service; +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->hasAlgorithm(Ljava/lang/String;Ljava/lang/String;)Z +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->loadAlgorithms(Ljava/lang/String;[Ljava/lang/String;)V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->loadAlgorithms(Ljava/lang/String;[Lorg/bouncycastle/crypto/CryptoServiceProperties;)V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->loadPQCKeys()V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->loadServiceClass(Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->service(Ljava/lang/String;I)Lorg/bouncycastle/crypto/CryptoServiceProperties; +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider;->setup()V +Lorg/bouncycastle/jce/provider/BouncyCastleProvider$1; +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider$1;->(Lorg/bouncycastle/jce/provider/BouncyCastleProvider;)V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider$1;->run()Ljava/lang/Object; +Lorg/bouncycastle/jce/provider/BouncyCastleProvider$2; +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider$2;->(Lorg/bouncycastle/jce/provider/BouncyCastleProvider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider$2;->run()Ljava/lang/Object; +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider$2;->run()Ljava/security/Provider$Service; +Lorg/bouncycastle/jce/provider/BouncyCastleProvider$JcaCryptoService; +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider$JcaCryptoService;->(Ljava/lang/String;I)V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProvider$JcaCryptoService;->getServiceName()Ljava/lang/String; +Lorg/bouncycastle/jce/provider/BouncyCastleProviderConfiguration; +HSPLorg/bouncycastle/jce/provider/BouncyCastleProviderConfiguration;->()V +HSPLorg/bouncycastle/jce/provider/BouncyCastleProviderConfiguration;->()V +Lorg/bouncycastle/pqc/asn1/PQCObjectIdentifiers; +HSPLorg/bouncycastle/pqc/asn1/PQCObjectIdentifiers;->()V +Lorg/bouncycastle/pqc/jcajce/provider/bike/BIKEKeyFactorySpi; +HSPLorg/bouncycastle/pqc/jcajce/provider/bike/BIKEKeyFactorySpi;->()V +Lorg/bouncycastle/pqc/jcajce/provider/cmce/CMCEKeyFactorySpi; +HSPLorg/bouncycastle/pqc/jcajce/provider/cmce/CMCEKeyFactorySpi;->()V +Lorg/bouncycastle/pqc/jcajce/provider/dilithium/DilithiumKeyFactorySpi; +HSPLorg/bouncycastle/pqc/jcajce/provider/dilithium/DilithiumKeyFactorySpi;->()V +HSPLorg/bouncycastle/pqc/jcajce/provider/dilithium/DilithiumKeyFactorySpi;->()V +HSPLorg/bouncycastle/pqc/jcajce/provider/dilithium/DilithiumKeyFactorySpi;->(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V +Lorg/bouncycastle/pqc/jcajce/provider/dilithium/DilithiumKeyFactorySpi$Base2; +HSPLorg/bouncycastle/pqc/jcajce/provider/dilithium/DilithiumKeyFactorySpi$Base2;->()V +Lorg/bouncycastle/pqc/jcajce/provider/dilithium/DilithiumKeyFactorySpi$Base3; +HSPLorg/bouncycastle/pqc/jcajce/provider/dilithium/DilithiumKeyFactorySpi$Base3;->()V +Lorg/bouncycastle/pqc/jcajce/provider/dilithium/DilithiumKeyFactorySpi$Base5; +HSPLorg/bouncycastle/pqc/jcajce/provider/dilithium/DilithiumKeyFactorySpi$Base5;->()V +Lorg/bouncycastle/pqc/jcajce/provider/falcon/FalconKeyFactorySpi; +HSPLorg/bouncycastle/pqc/jcajce/provider/falcon/FalconKeyFactorySpi;->()V +HSPLorg/bouncycastle/pqc/jcajce/provider/falcon/FalconKeyFactorySpi;->()V +HSPLorg/bouncycastle/pqc/jcajce/provider/falcon/FalconKeyFactorySpi;->(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V +Lorg/bouncycastle/pqc/jcajce/provider/falcon/FalconKeyFactorySpi$Falcon1024; +HSPLorg/bouncycastle/pqc/jcajce/provider/falcon/FalconKeyFactorySpi$Falcon1024;->()V +Lorg/bouncycastle/pqc/jcajce/provider/falcon/FalconKeyFactorySpi$Falcon512; +HSPLorg/bouncycastle/pqc/jcajce/provider/falcon/FalconKeyFactorySpi$Falcon512;->()V +Lorg/bouncycastle/pqc/jcajce/provider/hqc/HQCKeyFactorySpi; +HSPLorg/bouncycastle/pqc/jcajce/provider/hqc/HQCKeyFactorySpi;->()V +Lorg/bouncycastle/pqc/jcajce/provider/kyber/KyberKeyFactorySpi; +HSPLorg/bouncycastle/pqc/jcajce/provider/kyber/KyberKeyFactorySpi;->()V +HSPLorg/bouncycastle/pqc/jcajce/provider/kyber/KyberKeyFactorySpi;->()V +Lorg/bouncycastle/pqc/jcajce/provider/lms/LMSKeyFactorySpi; +HSPLorg/bouncycastle/pqc/jcajce/provider/lms/LMSKeyFactorySpi;->()V +Lorg/bouncycastle/pqc/jcajce/provider/newhope/NHKeyFactorySpi; +HSPLorg/bouncycastle/pqc/jcajce/provider/newhope/NHKeyFactorySpi;->()V +Lorg/bouncycastle/pqc/jcajce/provider/ntru/NTRUKeyFactorySpi; +HSPLorg/bouncycastle/pqc/jcajce/provider/ntru/NTRUKeyFactorySpi;->()V +Lorg/bouncycastle/pqc/jcajce/provider/picnic/PicnicKeyFactorySpi; +HSPLorg/bouncycastle/pqc/jcajce/provider/picnic/PicnicKeyFactorySpi;->()V +Lorg/bouncycastle/pqc/jcajce/provider/sphincs/Sphincs256KeyFactorySpi; +HSPLorg/bouncycastle/pqc/jcajce/provider/sphincs/Sphincs256KeyFactorySpi;->()V +Lorg/bouncycastle/pqc/jcajce/provider/sphincsplus/SPHINCSPlusKeyFactorySpi; +HSPLorg/bouncycastle/pqc/jcajce/provider/sphincsplus/SPHINCSPlusKeyFactorySpi;->()V +Lorg/bouncycastle/pqc/jcajce/provider/util/BaseKeyFactorySpi; +HSPLorg/bouncycastle/pqc/jcajce/provider/util/BaseKeyFactorySpi;->(Ljava/util/Set;)V +HSPLorg/bouncycastle/pqc/jcajce/provider/util/BaseKeyFactorySpi;->(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V +Lorg/bouncycastle/pqc/jcajce/provider/xmss/XMSSKeyFactorySpi; +HSPLorg/bouncycastle/pqc/jcajce/provider/xmss/XMSSKeyFactorySpi;->()V +Lorg/bouncycastle/pqc/jcajce/provider/xmss/XMSSMTKeyFactorySpi; +HSPLorg/bouncycastle/pqc/jcajce/provider/xmss/XMSSMTKeyFactorySpi;->()V +Lorg/bouncycastle/util/Arrays; +HSPLorg/bouncycastle/util/Arrays;->clone([B)[B +HSPLorg/bouncycastle/util/Arrays;->hashCode([B)I +Lorg/bouncycastle/util/Encodable; +Lorg/bouncycastle/util/Integers; +HSPLorg/bouncycastle/util/Integers;->valueOf(I)Ljava/lang/Integer; +Lorg/bouncycastle/util/Memoable; +Lorg/bouncycastle/util/Pack; +HSPLorg/bouncycastle/util/Pack;->bigEndianToInt([BI)I +HSPLorg/bouncycastle/util/Pack;->intToBigEndian(I[BI)V +Lorg/bouncycastle/util/Properties; +HSPLorg/bouncycastle/util/Properties;->()V +HSPLorg/bouncycastle/util/Properties;->getPropertyValue(Ljava/lang/String;)Ljava/lang/String; +HSPLorg/bouncycastle/util/Properties;->isOverrideSet(Ljava/lang/String;)Z +HSPLorg/bouncycastle/util/Properties;->isSetTrue(Ljava/lang/String;)Z +Lorg/bouncycastle/util/Properties$1; +HSPLorg/bouncycastle/util/Properties$1;->(Ljava/lang/String;)V +HSPLorg/bouncycastle/util/Properties$1;->run()Ljava/lang/Object; +Lorg/bouncycastle/util/Properties$2; +HSPLorg/bouncycastle/util/Properties$2;->(Ljava/lang/String;)V +HSPLorg/bouncycastle/util/Properties$2;->run()Ljava/lang/Object; +Lorg/bouncycastle/util/Strings; +HSPLorg/bouncycastle/util/Strings;->()V +HSPLorg/bouncycastle/util/Strings;->toLowerCase(Ljava/lang/String;)Ljava/lang/String; +HSPLorg/bouncycastle/util/Strings;->toUpperCase(Ljava/lang/String;)Ljava/lang/String; +Lorg/bouncycastle/util/Strings$1; +HSPLorg/bouncycastle/util/Strings$1;->()V +HSPLorg/bouncycastle/util/Strings$1;->run()Ljava/lang/Object; +HSPLorg/bouncycastle/util/Strings$1;->run()Ljava/lang/String; +Lorg/bouncycastle/util/encoders/Encoder; +Lorg/bouncycastle/util/encoders/Hex; +HSPLorg/bouncycastle/util/encoders/Hex;->()V +HSPLorg/bouncycastle/util/encoders/Hex;->decode(Ljava/lang/String;)[B +HSPLorg/bouncycastle/util/encoders/Hex;->decodeStrict(Ljava/lang/String;)[B +Lorg/bouncycastle/util/encoders/HexEncoder; +HSPLorg/bouncycastle/util/encoders/HexEncoder;->()V +HSPLorg/bouncycastle/util/encoders/HexEncoder;->decode(Ljava/lang/String;Ljava/io/OutputStream;)I +HSPLorg/bouncycastle/util/encoders/HexEncoder;->decodeStrict(Ljava/lang/String;II)[B +HSPLorg/bouncycastle/util/encoders/HexEncoder;->ignore(C)Z +HSPLorg/bouncycastle/util/encoders/HexEncoder;->initialiseDecodingTable()V +Lorg/kodein/di/Contexes; +HSPLorg/kodein/di/Contexes;->()V +HSPLorg/kodein/di/Contexes;->()V +HSPLorg/kodein/di/Contexes;->getAnyDIContext()Lorg/kodein/di/DIContext; +Lorg/kodein/di/Copy; +Lorg/kodein/di/Copy$None; +HSPLorg/kodein/di/Copy$None;->()V +HSPLorg/kodein/di/Copy$None;->()V +HSPLorg/kodein/di/Copy$None;->keySet(Lorg/kodein/di/DITree;)Ljava/util/Set; +Lorg/kodein/di/DI; +HSPLorg/kodein/di/DI;->()V +Lorg/kodein/di/DI$BindBuilder; +Lorg/kodein/di/DI$BindBuilder$WithScope; +Lorg/kodein/di/DI$Builder; +Lorg/kodein/di/DI$Builder$DefaultImpls; +HSPLorg/kodein/di/DI$Builder$DefaultImpls;->import$default(Lorg/kodein/di/DI$Builder;Lorg/kodein/di/DI$Module;ZILjava/lang/Object;)V +HSPLorg/kodein/di/DI$Builder$DefaultImpls;->importOnce$default(Lorg/kodein/di/DI$Builder;Lorg/kodein/di/DI$Module;ZILjava/lang/Object;)V +Lorg/kodein/di/DI$Builder$TypeBinder; +Lorg/kodein/di/DI$Companion; +HSPLorg/kodein/di/DI$Companion;->()V +HSPLorg/kodein/di/DI$Companion;->()V +HSPLorg/kodein/di/DI$Companion;->getDefaultFullContainerTreeOnError()Z +HSPLorg/kodein/di/DI$Companion;->getDefaultFullDescriptionOnError()Z +HSPLorg/kodein/di/DI$Companion;->lazy$default(Lorg/kodein/di/DI$Companion;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lorg/kodein/di/LazyDI; +HSPLorg/kodein/di/DI$Companion;->lazy(ZLkotlin/jvm/functions/Function1;)Lorg/kodein/di/LazyDI; +Lorg/kodein/di/DI$Companion$lazy$1; +HSPLorg/kodein/di/DI$Companion$lazy$1;->(ZLkotlin/jvm/functions/Function1;)V +HSPLorg/kodein/di/DI$Companion$lazy$1;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/DI$Companion$lazy$1;->invoke()Lorg/kodein/di/DI; +Lorg/kodein/di/DI$DefaultImpls; +HSPLorg/kodein/di/DI$DefaultImpls;->getDi(Lorg/kodein/di/DI;)Lorg/kodein/di/DI; +HSPLorg/kodein/di/DI$DefaultImpls;->getDiContext(Lorg/kodein/di/DI;)Lorg/kodein/di/DIContext; +HSPLorg/kodein/di/DI$DefaultImpls;->getDiTrigger(Lorg/kodein/di/DI;)Lorg/kodein/di/DITrigger; +Lorg/kodein/di/DI$Key; +HSPLorg/kodein/di/DI$Key;->(Lorg/kodein/type/TypeToken;Lorg/kodein/type/TypeToken;Lorg/kodein/type/TypeToken;Ljava/lang/Object;)V +HSPLorg/kodein/di/DI$Key;->copy$default(Lorg/kodein/di/DI$Key;Lorg/kodein/type/TypeToken;Lorg/kodein/type/TypeToken;Lorg/kodein/type/TypeToken;Ljava/lang/Object;ILjava/lang/Object;)Lorg/kodein/di/DI$Key; +HSPLorg/kodein/di/DI$Key;->copy(Lorg/kodein/type/TypeToken;Lorg/kodein/type/TypeToken;Lorg/kodein/type/TypeToken;Ljava/lang/Object;)Lorg/kodein/di/DI$Key; +HSPLorg/kodein/di/DI$Key;->equals(Ljava/lang/Object;)Z +HSPLorg/kodein/di/DI$Key;->getArgType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/DI$Key;->getContextType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/DI$Key;->getTag()Ljava/lang/Object; +HSPLorg/kodein/di/DI$Key;->getType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/DI$Key;->hashCode()I +Lorg/kodein/di/DI$MainBuilder; +Lorg/kodein/di/DI$MainBuilder$DefaultImpls; +HSPLorg/kodein/di/DI$MainBuilder$DefaultImpls;->extend$default(Lorg/kodein/di/DI$MainBuilder;Lorg/kodein/di/DI;ZLorg/kodein/di/Copy;ILjava/lang/Object;)V +Lorg/kodein/di/DI$Module; +HSPLorg/kodein/di/DI$Module;->(Ljava/lang/String;ZLjava/lang/String;Lkotlin/jvm/functions/Function1;)V +HSPLorg/kodein/di/DI$Module;->(Ljava/lang/String;ZLjava/lang/String;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/kodein/di/DI$Module;->(ZLjava/lang/String;Lkotlin/jvm/functions/Function1;)V +HSPLorg/kodein/di/DI$Module;->getAllowSilentOverride()Z +HSPLorg/kodein/di/DI$Module;->getInit()Lkotlin/jvm/functions/Function1; +HSPLorg/kodein/di/DI$Module;->getName()Ljava/lang/String; +HSPLorg/kodein/di/DI$Module;->getPrefix()Ljava/lang/String; +Lorg/kodein/di/DI$NotFoundException; +Lorg/kodein/di/DIAware; +Lorg/kodein/di/DIAware$DefaultImpls; +HSPLorg/kodein/di/DIAware$DefaultImpls;->getDiContext(Lorg/kodein/di/DIAware;)Lorg/kodein/di/DIContext; +HSPLorg/kodein/di/DIAware$DefaultImpls;->getDiTrigger(Lorg/kodein/di/DIAware;)Lorg/kodein/di/DITrigger; +Lorg/kodein/di/DIAwareKt; +HSPLorg/kodein/di/DIAwareKt;->Instance(Lorg/kodein/di/DIAware;Lorg/kodein/type/TypeToken;Ljava/lang/Object;)Lorg/kodein/di/LazyDelegate; +HSPLorg/kodein/di/DIAwareKt;->On$default(Lorg/kodein/di/DIAware;Lorg/kodein/di/DIContext;Lorg/kodein/di/DITrigger;ILjava/lang/Object;)Lorg/kodein/di/DI; +HSPLorg/kodein/di/DIAwareKt;->On(Lorg/kodein/di/DIAware;Lorg/kodein/di/DIContext;Lorg/kodein/di/DITrigger;)Lorg/kodein/di/DI; +HSPLorg/kodein/di/DIAwareKt;->getAnyDIContext()Lorg/kodein/di/DIContext; +HSPLorg/kodein/di/DIAwareKt;->getDirect(Lorg/kodein/di/DIAware;)Lorg/kodein/di/DirectDI; +Lorg/kodein/di/DIAwareKt$Instance$1; +HSPLorg/kodein/di/DIAwareKt$Instance$1;->(Lorg/kodein/di/DIAware;Lorg/kodein/type/TypeToken;Ljava/lang/Object;)V +HSPLorg/kodein/di/DIAwareKt$Instance$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/DIAwareKt$Instance$1;->invoke(Lorg/kodein/di/DIContext;Ljava/lang/String;)Ljava/lang/Object; +Lorg/kodein/di/DIContainer; +Lorg/kodein/di/DIContainer$Builder; +Lorg/kodein/di/DIContainer$DefaultImpls; +HSPLorg/kodein/di/DIContainer$DefaultImpls;->allFactories$default(Lorg/kodein/di/DIContainer;Lorg/kodein/di/DI$Key;Ljava/lang/Object;IILjava/lang/Object;)Ljava/util/List; +HSPLorg/kodein/di/DIContainer$DefaultImpls;->allProviders$default(Lorg/kodein/di/DIContainer;Lorg/kodein/di/DI$Key;Ljava/lang/Object;IILjava/lang/Object;)Ljava/util/List; +HSPLorg/kodein/di/DIContainer$DefaultImpls;->allProviders(Lorg/kodein/di/DIContainer;Lorg/kodein/di/DI$Key;Ljava/lang/Object;I)Ljava/util/List; +HSPLorg/kodein/di/DIContainer$DefaultImpls;->factory$default(Lorg/kodein/di/DIContainer;Lorg/kodein/di/DI$Key;Ljava/lang/Object;IILjava/lang/Object;)Lkotlin/jvm/functions/Function1; +HSPLorg/kodein/di/DIContainer$DefaultImpls;->provider$default(Lorg/kodein/di/DIContainer;Lorg/kodein/di/DI$Key;Ljava/lang/Object;IILjava/lang/Object;)Lkotlin/jvm/functions/Function0; +HSPLorg/kodein/di/DIContainer$DefaultImpls;->provider(Lorg/kodein/di/DIContainer;Lorg/kodein/di/DI$Key;Ljava/lang/Object;I)Lkotlin/jvm/functions/Function0; +Lorg/kodein/di/DIContainer$DefaultImpls$allProviders$lambda$3$$inlined$toProvider$1; +HSPLorg/kodein/di/DIContainer$DefaultImpls$allProviders$lambda$3$$inlined$toProvider$1;->(Lkotlin/jvm/functions/Function1;)V +HSPLorg/kodein/di/DIContainer$DefaultImpls$allProviders$lambda$3$$inlined$toProvider$1;->invoke()Ljava/lang/Object; +Lorg/kodein/di/DIContainer$DefaultImpls$provider$$inlined$toProvider$1; +HSPLorg/kodein/di/DIContainer$DefaultImpls$provider$$inlined$toProvider$1;->(Lkotlin/jvm/functions/Function1;)V +HSPLorg/kodein/di/DIContainer$DefaultImpls$provider$$inlined$toProvider$1;->invoke()Ljava/lang/Object; +Lorg/kodein/di/DIContext; +HSPLorg/kodein/di/DIContext;->()V +Lorg/kodein/di/DIContext$Companion; +HSPLorg/kodein/di/DIContext$Companion;->()V +HSPLorg/kodein/di/DIContext$Companion;->()V +HSPLorg/kodein/di/DIContext$Companion;->invoke(Lorg/kodein/type/TypeToken;Ljava/lang/Object;)Lorg/kodein/di/DIContext; +Lorg/kodein/di/DIContext$Value; +HSPLorg/kodein/di/DIContext$Value;->(Lorg/kodein/type/TypeToken;Ljava/lang/Object;)V +HSPLorg/kodein/di/DIContext$Value;->getType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/DIContext$Value;->getValue()Ljava/lang/Object; +Lorg/kodein/di/DIDefining; +HSPLorg/kodein/di/DIDefining;->(Lorg/kodein/di/bindings/DIBinding;Ljava/lang/String;)V +HSPLorg/kodein/di/DIDefining;->getBinding()Lorg/kodein/di/bindings/DIBinding; +HSPLorg/kodein/di/DIDefining;->getFromModule()Ljava/lang/String; +Lorg/kodein/di/DIDefinition; +HSPLorg/kodein/di/DIDefinition;->(Lorg/kodein/di/bindings/DIBinding;Ljava/lang/String;Lorg/kodein/di/DITree;)V +HSPLorg/kodein/di/DIDefinition;->getTree()Lorg/kodein/di/DITree; +Lorg/kodein/di/DIProperty; +HSPLorg/kodein/di/DIProperty;->(Lorg/kodein/di/DITrigger;Lorg/kodein/di/DIContext;Lkotlin/jvm/functions/Function2;)V +HSPLorg/kodein/di/DIProperty;->access$getGet$p(Lorg/kodein/di/DIProperty;)Lkotlin/jvm/functions/Function2; +HSPLorg/kodein/di/DIProperty;->getOriginalContext()Lorg/kodein/di/DIContext; +HSPLorg/kodein/di/DIProperty;->provideDelegate(Ljava/lang/Object;Lkotlin/reflect/KProperty;)Lkotlin/Lazy; +Lorg/kodein/di/DIProperty$provideDelegate$1; +HSPLorg/kodein/di/DIProperty$provideDelegate$1;->(Ljava/lang/Object;Lorg/kodein/di/DIProperty;Lkotlin/reflect/KProperty;)V +HSPLorg/kodein/di/DIProperty$provideDelegate$1;->invoke()Ljava/lang/Object; +Lorg/kodein/di/DITree; +Lorg/kodein/di/DITree$DefaultImpls; +HSPLorg/kodein/di/DITree$DefaultImpls;->find$default(Lorg/kodein/di/DITree;Lorg/kodein/di/DI$Key;IZILjava/lang/Object;)Ljava/util/List; +Lorg/kodein/di/DITrigger; +Lorg/kodein/di/DIWrapper; +HSPLorg/kodein/di/DIWrapper;->(Lorg/kodein/di/DI;Lorg/kodein/di/DIContext;Lorg/kodein/di/DITrigger;)V +HSPLorg/kodein/di/DIWrapper;->(Lorg/kodein/di/DIAware;Lorg/kodein/di/DIContext;Lorg/kodein/di/DITrigger;)V +HSPLorg/kodein/di/DIWrapper;->getContainer()Lorg/kodein/di/DIContainer; +HSPLorg/kodein/di/DIWrapper;->getDi()Lorg/kodein/di/DI; +HSPLorg/kodein/di/DIWrapper;->getDiContext()Lorg/kodein/di/DIContext; +Lorg/kodein/di/DirectDI; +Lorg/kodein/di/DirectDI$DefaultImpls; +HSPLorg/kodein/di/DirectDI$DefaultImpls;->getDi(Lorg/kodein/di/DirectDI;)Lorg/kodein/di/DI; +Lorg/kodein/di/DirectDIAware; +Lorg/kodein/di/DirectDIBase; +Lorg/kodein/di/DirectDIBase$DefaultImpls; +HSPLorg/kodein/di/DirectDIBase$DefaultImpls;->getDi(Lorg/kodein/di/DirectDIBase;)Lorg/kodein/di/DI; +Lorg/kodein/di/LazyDI; +HSPLorg/kodein/di/LazyDI;->(Lkotlin/jvm/functions/Function0;)V +HSPLorg/kodein/di/LazyDI;->getBaseDI()Lorg/kodein/di/DI; +HSPLorg/kodein/di/LazyDI;->getContainer()Lorg/kodein/di/DIContainer; +HSPLorg/kodein/di/LazyDI;->getDi()Lorg/kodein/di/DI; +HSPLorg/kodein/di/LazyDI;->getDiContext()Lorg/kodein/di/DIContext; +HSPLorg/kodein/di/LazyDI;->getDiTrigger()Lorg/kodein/di/DITrigger; +HSPLorg/kodein/di/LazyDI;->getValue(Ljava/lang/Object;Lkotlin/reflect/KProperty;)Lorg/kodein/di/LazyDI; +Lorg/kodein/di/LazyDelegate; +Lorg/kodein/di/SearchSpecs; +HSPLorg/kodein/di/SearchSpecs;->(Lorg/kodein/type/TypeToken;Lorg/kodein/type/TypeToken;Lorg/kodein/type/TypeToken;Ljava/lang/Object;)V +HSPLorg/kodein/di/SearchSpecs;->getArgType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/SearchSpecs;->getContextType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/SearchSpecs;->getTag()Ljava/lang/Object; +HSPLorg/kodein/di/SearchSpecs;->getType()Lorg/kodein/type/TypeToken; +Lorg/kodein/di/SearchSpecs$NoDefinedTag; +HSPLorg/kodein/di/SearchSpecs$NoDefinedTag;->()V +HSPLorg/kodein/di/SearchSpecs$NoDefinedTag;->()V +Lorg/kodein/di/android/ClosestKt; +HSPLorg/kodein/di/android/ClosestKt;->access$closestDI(Ljava/lang/Object;Landroid/content/Context;)Lorg/kodein/di/DI; +HSPLorg/kodein/di/android/ClosestKt;->closestDI()Lorg/kodein/di/android/DIPropertyDelegateProvider; +HSPLorg/kodein/di/android/ClosestKt;->closestDI(Ljava/lang/Object;Landroid/content/Context;)Lorg/kodein/di/DI; +HSPLorg/kodein/di/android/ClosestKt;->closestDI(Lkotlin/jvm/functions/Function0;)Lorg/kodein/di/android/DIPropertyDelegateProvider; +Lorg/kodein/di/android/ContextDIPropertyDelegateProvider; +HSPLorg/kodein/di/android/ContextDIPropertyDelegateProvider;->()V +HSPLorg/kodein/di/android/ContextDIPropertyDelegateProvider;->provideDelegate(Landroid/content/Context;Lkotlin/reflect/KProperty;)Lkotlin/Lazy; +HSPLorg/kodein/di/android/ContextDIPropertyDelegateProvider;->provideDelegate(Ljava/lang/Object;Lkotlin/reflect/KProperty;)Lkotlin/Lazy; +Lorg/kodein/di/android/ContextDIPropertyDelegateProvider$provideDelegate$1; +HSPLorg/kodein/di/android/ContextDIPropertyDelegateProvider$provideDelegate$1;->(Landroid/content/Context;)V +HSPLorg/kodein/di/android/ContextDIPropertyDelegateProvider$provideDelegate$1;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ContextDIPropertyDelegateProvider$provideDelegate$1;->invoke()Lorg/kodein/di/DI; +Lorg/kodein/di/android/DIPropertyDelegateProvider; +Lorg/kodein/di/android/LazyContextDIPropertyDelegateProvider; +HSPLorg/kodein/di/android/LazyContextDIPropertyDelegateProvider;->(Lkotlin/jvm/functions/Function0;)V +HSPLorg/kodein/di/android/LazyContextDIPropertyDelegateProvider;->access$getGetContext$p(Lorg/kodein/di/android/LazyContextDIPropertyDelegateProvider;)Lkotlin/jvm/functions/Function0; +HSPLorg/kodein/di/android/LazyContextDIPropertyDelegateProvider;->provideDelegate(Ljava/lang/Object;Lkotlin/reflect/KProperty;)Lkotlin/Lazy; +Lorg/kodein/di/android/LazyContextDIPropertyDelegateProvider$provideDelegate$1; +HSPLorg/kodein/di/android/LazyContextDIPropertyDelegateProvider$provideDelegate$1;->(Ljava/lang/Object;Lorg/kodein/di/android/LazyContextDIPropertyDelegateProvider;)V +HSPLorg/kodein/di/android/LazyContextDIPropertyDelegateProvider$provideDelegate$1;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/LazyContextDIPropertyDelegateProvider$provideDelegate$1;->invoke()Lorg/kodein/di/DI; +Lorg/kodein/di/android/ModuleKt; +HSPLorg/kodein/di/android/ModuleKt;->()V +HSPLorg/kodein/di/android/ModuleKt;->androidCoreModule(Landroid/app/Application;)Lorg/kodein/di/DI$Module; +HSPLorg/kodein/di/android/ModuleKt;->getAndroidCoreContextTranslators()Lorg/kodein/di/DI$Module; +Lorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1;->invoke(Lorg/kodein/di/DI$Builder;)V +Lorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$2; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$2;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$2;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$3; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$3;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$3;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$4; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$4;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$4;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$5; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$5;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$5;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$10; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$10;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$2; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$2;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$3; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$3;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$4; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$4;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$5; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$5;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$6; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$6;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$7; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$7;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$8; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$8;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$9; +HSPLorg/kodein/di/android/ModuleKt$androidCoreContextTranslators$1$invoke$$inlined$generic$9;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1;->(Landroid/app/Application;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1;->invoke(Lorg/kodein/di/DI$Builder;)V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$1;->(Landroid/app/Application;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$1;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$1;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$1$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$1$1;->(Landroid/app/Application;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$1$1;->invoke(Lorg/kodein/di/bindings/NoArgBindingDI;)Landroid/app/Application; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$1$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$1$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$10; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$10;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$10;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$10;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$10$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$10$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$10$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$10$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$10$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$10$invoke$$inlined$generic$2; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$10$invoke$$inlined$generic$2;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$11; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$11;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$11;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$11;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$11$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$11$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$11$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$11$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$11$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$12; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$12;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$12;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$12;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$12$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$12$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$12$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$12$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$12$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$13; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$13;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$13;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$13;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$13$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$13$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$13$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$13$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$13$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$14; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$14;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$14;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$14;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$14$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$14$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$14$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$14$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$14$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$15; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$15;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$15;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$15;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$15$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$15$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$15$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$15$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$15$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$16; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$16;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$16;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$16;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$16$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$16$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$16$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$16$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$16$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$17; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$17;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$17;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$17;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$17$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$17$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$17$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$17$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$17$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$18; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$18;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$18;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$18;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$18$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$18$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$18$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$18$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$18$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$19; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$19;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$19;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$19;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$19$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$19$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$19$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$19$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$19$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$2; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$2;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$2;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$2;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$2$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$2$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$2$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$2$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$2$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$20; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$20;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$20;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$20;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$20$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$20$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$20$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$20$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$20$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$21; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$21;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$21;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$21;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$21$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$21$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$21$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$21$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$21$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$22; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$22;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$22;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$22;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$22$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$22$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$22$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$22$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$22$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$23; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$23;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$23;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$23;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$23$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$23$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$23$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$23$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$23$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$24; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$24;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$24;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$24;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$24$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$24$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$24$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$24$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$24$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$25; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$25;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$25;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$25;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$25$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$25$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$25$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$25$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$25$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$26; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$26;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$26;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$26;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$26$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$26$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$26$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$26$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$26$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$27; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$27;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$27;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$27;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$27$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$27$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$27$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$27$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$27$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$28; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$28;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$28;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$28;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$28$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$28$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$28$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$28$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$28$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$29; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$29;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$29;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$29;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$29$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$29$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$29$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$29$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$29$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$3; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$3;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$3;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$3;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$3$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$3$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$3$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$3$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$3$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$30; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$30;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$30;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$30;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$30$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$30$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$30$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$30$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$30$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$31; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$31;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$31;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$31;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$31$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$31$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$31$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$31$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$31$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$32; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$32;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$32;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$32;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$32$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$32$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$32$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$32$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$32$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$33; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$33;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$33;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$33;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$33$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$33$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$33$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$33$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$33$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$34; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$34;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$34;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$34;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$34$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$34$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$34$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$34$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$34$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$35; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$35;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$35;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$35;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$35$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$35$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$35$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$35$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$35$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$36; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$36;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$36;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$36;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$36$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$36$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$36$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$36$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$36$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$37; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$37;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$37;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$37;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$37$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$37$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$37$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$37$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$37$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$38; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$38;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$38;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$38;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$38$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$38$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$38$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$38$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$38$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$39; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$39;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$39;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$39;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$39$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$39$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$39$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$39$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$39$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$4; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$4;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$4;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$4;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$4$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$4$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$4$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$4$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$4$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$40; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$40;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$40;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$40;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$40$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$40$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$40$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$40$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$40$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$41; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$41;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$41;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$41;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$41$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$41$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$41$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$41$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$41$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$42; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$42;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$42;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$42;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$42$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$42$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$42$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$42$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$42$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$43; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$43;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$43;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$43;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$43$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$43$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$43$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$43$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$43$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$44; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$44;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$44;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$44;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$44$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$44$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$44$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$44$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$44$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$45; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$45;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$45;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$45;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$45$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$45$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$45$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$45$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$45$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$46; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$46;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$46;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$46;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$46$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$46$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$46$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$46$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$46$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$47; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$47;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$47;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$47;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$47$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$47$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$47$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$47$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$47$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$48; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$48;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$48;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$48;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$48$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$48$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$48$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$48$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$48$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$49; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$49;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$49;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$49;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$49$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$49$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$49$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$49$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$49$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$5; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$5;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$5;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$5;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$5$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$5$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$5$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$5$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$5$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$50; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$50;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$50;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$50;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$50$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$50$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$50$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$50$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$50$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$51; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$51;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$51;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$51;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$51$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$51$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$51$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$51$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$51$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$52; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$52;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$52;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$52;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$52$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$52$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$52$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$52$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$52$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$53; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$53;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$53;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$53;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$53$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$53$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$53$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$53$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$53$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$54; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$54;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$54;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$54;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$54$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$54$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$54$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$54$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$54$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$55; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$55;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$55;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$55;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$55$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$55$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$55$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$55$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$55$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$56; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$56;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$56;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$56;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$56$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$56$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$56$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$56$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$56$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$57; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$57;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$57;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$57;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$57$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$57$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$57$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$57$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$57$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$58; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$58;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$58;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$58;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$58$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$58$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$58$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$58$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$58$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$59; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$59;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$59;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$59;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$59$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$59$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$59$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$59$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$59$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$6; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$6;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$6;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$6;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$6$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$6$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$6$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$6$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$6$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$60; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$60;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$60;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$60;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$60$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$60$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$60$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$60$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$60$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$61; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$61;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$61;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$61;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$61$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$61$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$61$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$61$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$61$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$62; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$62;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$62;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$62;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$62$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$62$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$62$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$62$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$62$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$63; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$63;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$63;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$63;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$63$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$63$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$63$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$63$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$63$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$64; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$64;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$64;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$64;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$64$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$64$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$64$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$64$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$64$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$7; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$7;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$7;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$7;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$7$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$7$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$7$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$7$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$7$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$8; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$8;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$8;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$8;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$8$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$8$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$8$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$8$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$8$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$9; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$9;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$9;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$9;->invoke()Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$9$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$9$1;->()V +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$9$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$9$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$9$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/ModuleKt$androidCoreModule$1$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/ModuleKt$androidCoreModule$1$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/x/ModuleKt; +HSPLorg/kodein/di/android/x/ModuleKt;->()V +HSPLorg/kodein/di/android/x/ModuleKt;->androidXModule(Landroid/app/Application;)Lorg/kodein/di/DI$Module; +HSPLorg/kodein/di/android/x/ModuleKt;->getAndroidXContextTranslators()Lorg/kodein/di/DI$Module; +Lorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1; +HSPLorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1;->()V +HSPLorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1;->()V +HSPLorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1;->invoke(Lorg/kodein/di/DI$Builder;)V +Lorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$1; +HSPLorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$1;->()V +HSPLorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$1;->()V +Lorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$2; +HSPLorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$2;->()V +HSPLorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$2;->()V +Lorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$3; +HSPLorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$3;->()V +HSPLorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$3;->()V +Lorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$invoke$$inlined$generic$1; +HSPLorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$invoke$$inlined$generic$1;->()V +Lorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$invoke$$inlined$generic$2; +HSPLorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$invoke$$inlined$generic$2;->()V +Lorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$invoke$$inlined$generic$3; +HSPLorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$invoke$$inlined$generic$3;->()V +Lorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$invoke$$inlined$generic$4; +HSPLorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$invoke$$inlined$generic$4;->()V +Lorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$invoke$$inlined$generic$5; +HSPLorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$invoke$$inlined$generic$5;->()V +Lorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$invoke$$inlined$generic$6; +HSPLorg/kodein/di/android/x/ModuleKt$androidXContextTranslators$1$invoke$$inlined$generic$6;->()V +Lorg/kodein/di/android/x/ModuleKt$androidXModule$1; +HSPLorg/kodein/di/android/x/ModuleKt$androidXModule$1;->(Landroid/app/Application;)V +HSPLorg/kodein/di/android/x/ModuleKt$androidXModule$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/android/x/ModuleKt$androidXModule$1;->invoke(Lorg/kodein/di/DI$Builder;)V +Lorg/kodein/di/bindings/Binding; +Lorg/kodein/di/bindings/BindingDI; +Lorg/kodein/di/bindings/CompositeContextTranslator; +Lorg/kodein/di/bindings/ContextTranslator; +Lorg/kodein/di/bindings/DIBinding; +Lorg/kodein/di/bindings/DIBinding$Copier; +HSPLorg/kodein/di/bindings/DIBinding$Copier;->()V +Lorg/kodein/di/bindings/DIBinding$Copier$Companion; +HSPLorg/kodein/di/bindings/DIBinding$Copier$Companion;->()V +HSPLorg/kodein/di/bindings/DIBinding$Copier$Companion;->()V +HSPLorg/kodein/di/bindings/DIBinding$Copier$Companion;->invoke(Lkotlin/jvm/functions/Function1;)Lorg/kodein/di/bindings/DIBinding$Copier; +Lorg/kodein/di/bindings/DIBinding$Copier$Companion$invoke$1; +HSPLorg/kodein/di/bindings/DIBinding$Copier$Companion$invoke$1;->(Lkotlin/jvm/functions/Function1;)V +Lorg/kodein/di/bindings/DIBinding$DefaultImpls; +HSPLorg/kodein/di/bindings/DIBinding$DefaultImpls;->getSupportSubTypes(Lorg/kodein/di/bindings/DIBinding;)Z +Lorg/kodein/di/bindings/ErasedContext; +HSPLorg/kodein/di/bindings/ErasedContext;->()V +HSPLorg/kodein/di/bindings/ErasedContext;->()V +HSPLorg/kodein/di/bindings/ErasedContext;->getType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/bindings/ErasedContext;->getValue()Ljava/lang/Object; +HSPLorg/kodein/di/bindings/ErasedContext;->getValue()Lorg/kodein/di/bindings/ErasedContext; +Lorg/kodein/di/bindings/ExternalSource; +Lorg/kodein/di/bindings/Factory; +HSPLorg/kodein/di/bindings/Factory;->(Lorg/kodein/type/TypeToken;Lorg/kodein/type/TypeToken;Lorg/kodein/type/TypeToken;Lkotlin/jvm/functions/Function2;)V +HSPLorg/kodein/di/bindings/Factory;->access$getCreator$p(Lorg/kodein/di/bindings/Factory;)Lkotlin/jvm/functions/Function2; +HSPLorg/kodein/di/bindings/Factory;->getArgType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/bindings/Factory;->getContextType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/bindings/Factory;->getCreatedType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/bindings/Factory;->getFactory(Lorg/kodein/di/DI$Key;Lorg/kodein/di/bindings/BindingDI;)Lkotlin/jvm/functions/Function1; +HSPLorg/kodein/di/bindings/Factory;->getSupportSubTypes()Z +Lorg/kodein/di/bindings/Factory$getFactory$1; +HSPLorg/kodein/di/bindings/Factory$getFactory$1;->(Lorg/kodein/di/bindings/Factory;Lorg/kodein/di/bindings/BindingDI;)V +HSPLorg/kodein/di/bindings/Factory$getFactory$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lorg/kodein/di/bindings/Multiton; +HSPLorg/kodein/di/bindings/Multiton;->(Lorg/kodein/di/bindings/Scope;Lorg/kodein/type/TypeToken;ZLorg/kodein/type/TypeToken;Lorg/kodein/type/TypeToken;Lorg/kodein/di/bindings/RefMaker;ZLkotlin/jvm/functions/Function2;)V +HSPLorg/kodein/di/bindings/Multiton;->access$getCreator$p(Lorg/kodein/di/bindings/Multiton;)Lkotlin/jvm/functions/Function2; +HSPLorg/kodein/di/bindings/Multiton;->access$get_refMaker$p(Lorg/kodein/di/bindings/Multiton;)Lorg/kodein/di/bindings/RefMaker; +HSPLorg/kodein/di/bindings/Multiton;->access$get_scopeId$p(Lorg/kodein/di/bindings/Multiton;)Ljava/lang/Object; +HSPLorg/kodein/di/bindings/Multiton;->getArgType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/bindings/Multiton;->getContextType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/bindings/Multiton;->getFactory(Lorg/kodein/di/DI$Key;Lorg/kodein/di/bindings/BindingDI;)Lkotlin/jvm/functions/Function1; +HSPLorg/kodein/di/bindings/Multiton;->getScope()Lorg/kodein/di/bindings/Scope; +HSPLorg/kodein/di/bindings/Multiton;->getSupportSubTypes()Z +HSPLorg/kodein/di/bindings/Multiton;->getSync()Z +Lorg/kodein/di/bindings/Multiton$copier$1; +HSPLorg/kodein/di/bindings/Multiton$copier$1;->(Lorg/kodein/di/bindings/Multiton;)V +Lorg/kodein/di/bindings/Multiton$getFactory$1; +HSPLorg/kodein/di/bindings/Multiton$getFactory$1;->(Lkotlin/jvm/internal/Ref$ObjectRef;Lorg/kodein/di/bindings/Multiton;Lorg/kodein/di/bindings/BindingDI;)V +HSPLorg/kodein/di/bindings/Multiton$getFactory$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lorg/kodein/di/bindings/Multiton$getFactory$1$1; +HSPLorg/kodein/di/bindings/Multiton$getFactory$1$1;->(Lorg/kodein/di/bindings/Multiton;Lorg/kodein/di/bindings/BindingDI;Ljava/lang/Object;)V +HSPLorg/kodein/di/bindings/Multiton$getFactory$1$1;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/bindings/Multiton$getFactory$1$1;->invoke()Lorg/kodein/di/bindings/Reference; +Lorg/kodein/di/bindings/Multiton$getFactory$1$1$1; +HSPLorg/kodein/di/bindings/Multiton$getFactory$1$1$1;->(Lorg/kodein/di/bindings/Multiton;Lorg/kodein/di/bindings/BindingDI;Ljava/lang/Object;)V +HSPLorg/kodein/di/bindings/Multiton$getFactory$1$1$1;->invoke()Ljava/lang/Object; +Lorg/kodein/di/bindings/NoArgBindingDI; +Lorg/kodein/di/bindings/NoArgBindingDIWrap; +HSPLorg/kodein/di/bindings/NoArgBindingDIWrap;->(Lorg/kodein/di/bindings/BindingDI;)V +HSPLorg/kodein/di/bindings/NoArgBindingDIWrap;->getDi()Lorg/kodein/di/DI; +HSPLorg/kodein/di/bindings/NoArgBindingDIWrap;->getDirectDI()Lorg/kodein/di/DirectDI; +Lorg/kodein/di/bindings/NoArgDIBinding; +Lorg/kodein/di/bindings/NoArgDIBinding$DefaultImpls; +HSPLorg/kodein/di/bindings/NoArgDIBinding$DefaultImpls;->getArgType(Lorg/kodein/di/bindings/NoArgDIBinding;)Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/bindings/NoArgDIBinding$DefaultImpls;->getSupportSubTypes(Lorg/kodein/di/bindings/NoArgDIBinding;)Z +Lorg/kodein/di/bindings/NoScope; +HSPLorg/kodein/di/bindings/NoScope;->()V +HSPLorg/kodein/di/bindings/NoScope;->getRegistry(Ljava/lang/Object;)Lorg/kodein/di/bindings/ScopeRegistry; +HSPLorg/kodein/di/bindings/NoScope;->getRegistry(Ljava/lang/Object;)Lorg/kodein/di/bindings/StandardScopeRegistry; +Lorg/kodein/di/bindings/Provider; +HSPLorg/kodein/di/bindings/Provider;->(Lorg/kodein/type/TypeToken;Lorg/kodein/type/TypeToken;Lkotlin/jvm/functions/Function1;)V +HSPLorg/kodein/di/bindings/Provider;->getArgType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/bindings/Provider;->getContextType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/bindings/Provider;->getCreatedType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/bindings/Provider;->getCreator()Lkotlin/jvm/functions/Function1; +HSPLorg/kodein/di/bindings/Provider;->getFactory(Lorg/kodein/di/DI$Key;Lorg/kodein/di/bindings/BindingDI;)Lkotlin/jvm/functions/Function1; +HSPLorg/kodein/di/bindings/Provider;->getSupportSubTypes()Z +Lorg/kodein/di/bindings/Provider$getFactory$1; +HSPLorg/kodein/di/bindings/Provider$getFactory$1;->(Lorg/kodein/di/bindings/Provider;Lorg/kodein/di/bindings/BindingDI;)V +HSPLorg/kodein/di/bindings/Provider$getFactory$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/bindings/Provider$getFactory$1;->invoke(Lkotlin/Unit;)Ljava/lang/Object; +Lorg/kodein/di/bindings/RefMaker; +Lorg/kodein/di/bindings/Reference; +HSPLorg/kodein/di/bindings/Reference;->(Ljava/lang/Object;Lkotlin/jvm/functions/Function0;)V +HSPLorg/kodein/di/bindings/Reference;->component1()Ljava/lang/Object; +HSPLorg/kodein/di/bindings/Reference;->component2()Lkotlin/jvm/functions/Function0; +Lorg/kodein/di/bindings/Scope; +Lorg/kodein/di/bindings/ScopeCloseable; +Lorg/kodein/di/bindings/ScopeKey; +HSPLorg/kodein/di/bindings/ScopeKey;->(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLorg/kodein/di/bindings/ScopeKey;->hashCode()I +Lorg/kodein/di/bindings/ScopeRegistry; +HSPLorg/kodein/di/bindings/ScopeRegistry;->()V +HSPLorg/kodein/di/bindings/ScopeRegistry;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lorg/kodein/di/bindings/ScopesKt; +Lorg/kodein/di/bindings/SimpleContextTranslator; +HSPLorg/kodein/di/bindings/SimpleContextTranslator;->(Lorg/kodein/type/TypeToken;Lorg/kodein/type/TypeToken;Lkotlin/jvm/functions/Function2;)V +HSPLorg/kodein/di/bindings/SimpleContextTranslator;->getContextType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/bindings/SimpleContextTranslator;->getScopeType()Lorg/kodein/type/TypeToken; +Lorg/kodein/di/bindings/Singleton; +HSPLorg/kodein/di/bindings/Singleton;->access$get_refMaker$p(Lorg/kodein/di/bindings/Singleton;)Lorg/kodein/di/bindings/RefMaker; +HSPLorg/kodein/di/bindings/Singleton;->access$get_scopeKey$p(Lorg/kodein/di/bindings/Singleton;)Lorg/kodein/di/bindings/ScopeKey; +HSPLorg/kodein/di/bindings/Singleton;->getArgType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/bindings/Singleton;->getContextType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/bindings/Singleton;->getCreatedType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/bindings/Singleton;->getCreator()Lkotlin/jvm/functions/Function1; +HSPLorg/kodein/di/bindings/Singleton;->getFactory(Lorg/kodein/di/DI$Key;Lorg/kodein/di/bindings/BindingDI;)Lkotlin/jvm/functions/Function1; +HSPLorg/kodein/di/bindings/Singleton;->getScope()Lorg/kodein/di/bindings/Scope; +HSPLorg/kodein/di/bindings/Singleton;->getSupportSubTypes()Z +HSPLorg/kodein/di/bindings/Singleton;->getSync()Z +Lorg/kodein/di/bindings/Singleton$copier$1; +HSPLorg/kodein/di/bindings/Singleton$copier$1;->(Lorg/kodein/di/bindings/Singleton;)V +Lorg/kodein/di/bindings/Singleton$getFactory$1; +HSPLorg/kodein/di/bindings/Singleton$getFactory$1;->(Lkotlin/jvm/internal/Ref$ObjectRef;Lorg/kodein/di/bindings/Singleton;Lorg/kodein/di/bindings/BindingDI;)V +HSPLorg/kodein/di/bindings/Singleton$getFactory$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/bindings/Singleton$getFactory$1;->invoke(Lkotlin/Unit;)Ljava/lang/Object; +Lorg/kodein/di/bindings/Singleton$getFactory$1$1; +HSPLorg/kodein/di/bindings/Singleton$getFactory$1$1;->(Lorg/kodein/di/bindings/Singleton;Lorg/kodein/di/bindings/BindingDI;)V +HSPLorg/kodein/di/bindings/Singleton$getFactory$1$1;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/bindings/Singleton$getFactory$1$1;->invoke()Lorg/kodein/di/bindings/Reference; +Lorg/kodein/di/bindings/Singleton$getFactory$1$1$1; +HSPLorg/kodein/di/bindings/Singleton$getFactory$1$1$1;->(Lorg/kodein/di/bindings/Singleton;Lorg/kodein/di/bindings/BindingDI;)V +HSPLorg/kodein/di/bindings/Singleton$getFactory$1$1$1;->invoke()Ljava/lang/Object; +Lorg/kodein/di/bindings/SingletonReference; +HSPLorg/kodein/di/bindings/SingletonReference;->()V +HSPLorg/kodein/di/bindings/SingletonReference;->()V +HSPLorg/kodein/di/bindings/SingletonReference;->make(Lkotlin/jvm/functions/Function0;)Lorg/kodein/di/bindings/Reference; +Lorg/kodein/di/bindings/SingletonReference$make$1; +HSPLorg/kodein/di/bindings/SingletonReference$make$1;->(Ljava/lang/Object;)V +HSPLorg/kodein/di/bindings/SingletonReference$make$1;->invoke()Ljava/lang/Object; +Lorg/kodein/di/bindings/StandardScopeRegistry; +HSPLorg/kodein/di/bindings/StandardScopeRegistry;->()V +HSPLorg/kodein/di/bindings/StandardScopeRegistry;->getOrCreate(Ljava/lang/Object;ZLkotlin/jvm/functions/Function0;)Ljava/lang/Object; +Lorg/kodein/di/bindings/WithContext; +Lorg/kodein/di/compose/AndroidContextKt; +HSPLorg/kodein/di/compose/AndroidContextKt;->()V +HSPLorg/kodein/di/compose/AndroidContextKt;->access$androidContextDI$lambda$0(Lkotlin/Lazy;)Lorg/kodein/di/DI; +HSPLorg/kodein/di/compose/AndroidContextKt;->androidContextDI$lambda$0(Lkotlin/Lazy;)Lorg/kodein/di/DI; +HSPLorg/kodein/di/compose/AndroidContextKt;->androidContextDI(Landroidx/compose/runtime/Composer;I)Lorg/kodein/di/DI; +HSPLorg/kodein/di/compose/AndroidContextKt;->diFromAppContext(Landroidx/compose/runtime/Composer;I)Lorg/kodein/di/DI; +Lorg/kodein/di/compose/AndroidContextKt$androidContextDI$di$2; +HSPLorg/kodein/di/compose/AndroidContextKt$androidContextDI$di$2;->(Landroid/content/Context;)V +HSPLorg/kodein/di/compose/AndroidContextKt$androidContextDI$di$2;->invoke()Landroid/content/Context; +HSPLorg/kodein/di/compose/AndroidContextKt$androidContextDI$di$2;->invoke()Ljava/lang/Object; +Lorg/kodein/di/compose/ComposableDILazyDelegate; +HSPLorg/kodein/di/compose/ComposableDILazyDelegate;->()V +HSPLorg/kodein/di/compose/ComposableDILazyDelegate;->(Lorg/kodein/di/LazyDelegate;)V +HSPLorg/kodein/di/compose/ComposableDILazyDelegate;->provideDelegate(Ljava/lang/Object;Lkotlin/reflect/KProperty;)Lkotlin/Lazy; +Lorg/kodein/di/compose/CompositionLocalKt; +HSPLorg/kodein/di/compose/CompositionLocalKt;->()V +HSPLorg/kodein/di/compose/CompositionLocalKt;->getLocalDI()Landroidx/compose/runtime/ProvidableCompositionLocal; +HSPLorg/kodein/di/compose/CompositionLocalKt;->localDI(Landroidx/compose/runtime/Composer;I)Lorg/kodein/di/DI; +Lorg/kodein/di/compose/CompositionLocalKt$LocalDI$1; +HSPLorg/kodein/di/compose/CompositionLocalKt$LocalDI$1;->()V +HSPLorg/kodein/di/compose/CompositionLocalKt$LocalDI$1;->()V +HSPLorg/kodein/di/compose/CompositionLocalKt$LocalDI$1;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/compose/CompositionLocalKt$LocalDI$1;->invoke()Lorg/kodein/di/DI; +Lorg/kodein/di/compose/WithDIKt; +HSPLorg/kodein/di/compose/WithDIKt;->withDI(Lorg/kodein/di/DI;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V +Lorg/kodein/di/compose/WithDIKt$withDI$7; +HSPLorg/kodein/di/compose/WithDIKt$withDI$7;->(Lkotlin/jvm/functions/Function2;)V +HSPLorg/kodein/di/compose/WithDIKt$withDI$7;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLorg/kodein/di/compose/WithDIKt$withDI$7;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lorg/kodein/di/internal/BindingDIImpl; +HSPLorg/kodein/di/internal/BindingDIImpl;->(Lorg/kodein/di/DirectDI;Lorg/kodein/di/DI$Key;I)V +HSPLorg/kodein/di/internal/BindingDIImpl;->getContext()Ljava/lang/Object; +HSPLorg/kodein/di/internal/BindingDIImpl;->getDi()Lorg/kodein/di/DI; +HSPLorg/kodein/di/internal/BindingDIImpl;->getDirectDI()Lorg/kodein/di/DirectDI; +HSPLorg/kodein/di/internal/BindingDIImpl;->onErasedContext()Lorg/kodein/di/bindings/BindingDI; +Lorg/kodein/di/internal/DIBuilderImpl; +HSPLorg/kodein/di/internal/DIBuilderImpl;->(Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;Lorg/kodein/di/internal/DIContainerBuilderImpl;)V +HSPLorg/kodein/di/internal/DIBuilderImpl;->Bind(Ljava/lang/Object;Ljava/lang/Boolean;Lorg/kodein/di/bindings/DIBinding;)V +HSPLorg/kodein/di/internal/DIBuilderImpl;->Bind(Lorg/kodein/type/TypeToken;Ljava/lang/Object;Ljava/lang/Boolean;)Lorg/kodein/di/DI$Builder$TypeBinder; +HSPLorg/kodein/di/internal/DIBuilderImpl;->Bind(Lorg/kodein/type/TypeToken;Ljava/lang/Object;Ljava/lang/Boolean;)Lorg/kodein/di/internal/DIBuilderImpl$TypeBinder; +HSPLorg/kodein/di/internal/DIBuilderImpl;->RegisterContextTranslator(Lorg/kodein/di/bindings/ContextTranslator;)V +HSPLorg/kodein/di/internal/DIBuilderImpl;->access$getModuleName$p(Lorg/kodein/di/internal/DIBuilderImpl;)Ljava/lang/String; +HSPLorg/kodein/di/internal/DIBuilderImpl;->getContainerBuilder()Lorg/kodein/di/internal/DIContainerBuilderImpl; +HSPLorg/kodein/di/internal/DIBuilderImpl;->getContextType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/internal/DIBuilderImpl;->getExplicitContext()Z +HSPLorg/kodein/di/internal/DIBuilderImpl;->getImportedModules$kodein_di()Ljava/util/Set; +HSPLorg/kodein/di/internal/DIBuilderImpl;->getScope()Lorg/kodein/di/bindings/Scope; +HSPLorg/kodein/di/internal/DIBuilderImpl;->import(Lorg/kodein/di/DI$Module;Z)V +HSPLorg/kodein/di/internal/DIBuilderImpl;->importOnce(Lorg/kodein/di/DI$Module;Z)V +Lorg/kodein/di/internal/DIBuilderImpl$TypeBinder; +HSPLorg/kodein/di/internal/DIBuilderImpl$TypeBinder;->(Lorg/kodein/di/internal/DIBuilderImpl;Lorg/kodein/type/TypeToken;Ljava/lang/Object;Ljava/lang/Boolean;)V +HSPLorg/kodein/di/internal/DIBuilderImpl$TypeBinder;->getContainerBuilder$kodein_di()Lorg/kodein/di/internal/DIContainerBuilderImpl; +HSPLorg/kodein/di/internal/DIBuilderImpl$TypeBinder;->with(Lorg/kodein/di/bindings/DIBinding;)V +Lorg/kodein/di/internal/DIContainerBuilderImpl; +HSPLorg/kodein/di/internal/DIContainerBuilderImpl;->(ZZLjava/util/Map;Ljava/util/List;Ljava/util/List;)V +HSPLorg/kodein/di/internal/DIContainerBuilderImpl;->bind(Lorg/kodein/di/DI$Key;Lorg/kodein/di/bindings/DIBinding;Ljava/lang/String;Ljava/lang/Boolean;)V +HSPLorg/kodein/di/internal/DIContainerBuilderImpl;->checkMatch(Z)V +HSPLorg/kodein/di/internal/DIContainerBuilderImpl;->checkOverrides(Lorg/kodein/di/DI$Key;Ljava/lang/Boolean;)V +HSPLorg/kodein/di/internal/DIContainerBuilderImpl;->extend(Lorg/kodein/di/DIContainer;ZLjava/util/Set;)V +HSPLorg/kodein/di/internal/DIContainerBuilderImpl;->getBindingsMap$kodein_di()Ljava/util/Map; +HSPLorg/kodein/di/internal/DIContainerBuilderImpl;->getCallbacks$kodein_di()Ljava/util/List; +HSPLorg/kodein/di/internal/DIContainerBuilderImpl;->getTranslators$kodein_di()Ljava/util/List; +HSPLorg/kodein/di/internal/DIContainerBuilderImpl;->registerContextTranslator(Lorg/kodein/di/bindings/ContextTranslator;)V +HSPLorg/kodein/di/internal/DIContainerBuilderImpl;->subBuilder(ZZ)Lorg/kodein/di/internal/DIContainerBuilderImpl; +Lorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode; +HSPLorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode;->$values()[Lorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode; +HSPLorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode;->()V +HSPLorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode;->(Ljava/lang/String;I)V +HSPLorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode;->(Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +Lorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode$ALLOW_EXPLICIT; +HSPLorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode$ALLOW_EXPLICIT;->(Ljava/lang/String;I)V +HSPLorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode$ALLOW_EXPLICIT;->isAllowed()Z +HSPLorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode$ALLOW_EXPLICIT;->must(Ljava/lang/Boolean;)Ljava/lang/Boolean; +Lorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode$ALLOW_SILENT; +HSPLorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode$ALLOW_SILENT;->(Ljava/lang/String;I)V +Lorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode$Companion; +HSPLorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode$Companion;->()V +HSPLorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode$Companion;->get(ZZ)Lorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode; +Lorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode$FORBID; +HSPLorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode$FORBID;->(Ljava/lang/String;I)V +HSPLorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode$FORBID;->isAllowed()Z +HSPLorg/kodein/di/internal/DIContainerBuilderImpl$OverrideMode$FORBID;->must(Ljava/lang/Boolean;)Ljava/lang/Boolean; +Lorg/kodein/di/internal/DIContainerImpl; +HSPLorg/kodein/di/internal/DIContainerImpl;->(Lorg/kodein/di/DITree;Lorg/kodein/di/internal/DIContainerImpl$Node;ZZ)V +HSPLorg/kodein/di/internal/DIContainerImpl;->(Lorg/kodein/di/internal/DIContainerBuilderImpl;Ljava/util/List;ZZZ)V +HSPLorg/kodein/di/internal/DIContainerImpl;->allFactories(Lorg/kodein/di/DI$Key;Ljava/lang/Object;I)Ljava/util/List; +HSPLorg/kodein/di/internal/DIContainerImpl;->allProviders(Lorg/kodein/di/DI$Key;Ljava/lang/Object;I)Ljava/util/List; +HSPLorg/kodein/di/internal/DIContainerImpl;->bindingDI(Lorg/kodein/di/DI$Key;Lorg/kodein/di/DIContext;Lorg/kodein/di/DITree;I)Lorg/kodein/di/bindings/BindingDI; +HSPLorg/kodein/di/internal/DIContainerImpl;->factory(Lorg/kodein/di/DI$Key;Ljava/lang/Object;I)Lkotlin/jvm/functions/Function1; +HSPLorg/kodein/di/internal/DIContainerImpl;->getInitCallbacks()Lkotlin/jvm/functions/Function0; +HSPLorg/kodein/di/internal/DIContainerImpl;->getTree()Lorg/kodein/di/DITree; +HSPLorg/kodein/di/internal/DIContainerImpl;->provider(Lorg/kodein/di/DI$Key;Ljava/lang/Object;I)Lkotlin/jvm/functions/Function0; +Lorg/kodein/di/internal/DIContainerImpl$Node; +HSPLorg/kodein/di/internal/DIContainerImpl$Node;->(Lorg/kodein/di/DI$Key;ILorg/kodein/di/internal/DIContainerImpl$Node;Z)V +HSPLorg/kodein/di/internal/DIContainerImpl$Node;->check$kodein_di(Lorg/kodein/di/DI$Key;I)V +HSPLorg/kodein/di/internal/DIContainerImpl$Node;->recursiveCheck(Lorg/kodein/di/internal/DIContainerImpl$Node;Lorg/kodein/di/DI$Key;I)Z +Lorg/kodein/di/internal/DIContainerImpl$factory$descFun$1; +Lorg/kodein/di/internal/DIContainerImpl$factory$descFun$2; +Lorg/kodein/di/internal/DIContainerImpl$factory$descProp$1; +Lorg/kodein/di/internal/DIContainerImpl$factory$descProp$2; +Lorg/kodein/di/internal/DIContainerImpl$init$1; +HSPLorg/kodein/di/internal/DIContainerImpl$init$1;->(Lorg/kodein/di/internal/DIContainerImpl;Lorg/kodein/di/internal/DIContainerBuilderImpl;)V +HSPLorg/kodein/di/internal/DIContainerImpl$init$1;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/internal/DIContainerImpl$init$1;->invoke()V +Lorg/kodein/di/internal/DIImpl; +HSPLorg/kodein/di/internal/DIImpl;->()V +HSPLorg/kodein/di/internal/DIImpl;->(Lorg/kodein/di/internal/DIContainerImpl;)V +HSPLorg/kodein/di/internal/DIImpl;->(Lorg/kodein/di/internal/DIMainBuilderImpl;Z)V +HSPLorg/kodein/di/internal/DIImpl;->(ZLkotlin/jvm/functions/Function1;)V +HSPLorg/kodein/di/internal/DIImpl;->access$get_container$p(Lorg/kodein/di/internal/DIImpl;)Lorg/kodein/di/internal/DIContainerImpl; +HSPLorg/kodein/di/internal/DIImpl;->getContainer()Lorg/kodein/di/DIContainer; +HSPLorg/kodein/di/internal/DIImpl;->getDi()Lorg/kodein/di/DI; +HSPLorg/kodein/di/internal/DIImpl;->getDiTrigger()Lorg/kodein/di/DITrigger; +Lorg/kodein/di/internal/DIImpl$Companion; +HSPLorg/kodein/di/internal/DIImpl$Companion;->()V +HSPLorg/kodein/di/internal/DIImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/kodein/di/internal/DIImpl$Companion;->access$newBuilder(Lorg/kodein/di/internal/DIImpl$Companion;ZLkotlin/jvm/functions/Function1;)Lorg/kodein/di/internal/DIMainBuilderImpl; +HSPLorg/kodein/di/internal/DIImpl$Companion;->newBuilder(ZLkotlin/jvm/functions/Function1;)Lorg/kodein/di/internal/DIMainBuilderImpl; +Lorg/kodein/di/internal/DIImpl$container$2; +HSPLorg/kodein/di/internal/DIImpl$container$2;->(Lorg/kodein/di/internal/DIImpl;)V +HSPLorg/kodein/di/internal/DIImpl$container$2;->invoke()Ljava/lang/Object; +HSPLorg/kodein/di/internal/DIImpl$container$2;->invoke()Lorg/kodein/di/internal/DIContainerImpl; +Lorg/kodein/di/internal/DIMainBuilderImpl; +HSPLorg/kodein/di/internal/DIMainBuilderImpl;->(Z)V +HSPLorg/kodein/di/internal/DIMainBuilderImpl;->extend(Lorg/kodein/di/DI;ZLorg/kodein/di/Copy;)V +HSPLorg/kodein/di/internal/DIMainBuilderImpl;->getExternalSources()Ljava/util/List; +HSPLorg/kodein/di/internal/DIMainBuilderImpl;->getFullContainerTreeOnError()Z +HSPLorg/kodein/di/internal/DIMainBuilderImpl;->getFullDescriptionOnError()Z +Lorg/kodein/di/internal/DITreeImpl; +HSPLorg/kodein/di/internal/DITreeImpl;->(Ljava/util/Map;Ljava/util/List;Ljava/util/List;)V +HSPLorg/kodein/di/internal/DITreeImpl;->find(Lorg/kodein/di/DI$Key;IZ)Ljava/util/List; +HSPLorg/kodein/di/internal/DITreeImpl;->findBySpecs(Lorg/kodein/di/SearchSpecs;)Ljava/util/List; +HSPLorg/kodein/di/internal/DITreeImpl;->getBindings()Ljava/util/Map; +HSPLorg/kodein/di/internal/DITreeImpl;->getExternalSources()Ljava/util/List; +HSPLorg/kodein/di/internal/DITreeImpl;->getRegisteredTranslators()Ljava/util/List; +Lorg/kodein/di/internal/DITreeImpl$findBySpecs$1; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$1;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$1;->invoke(Ljava/util/Map$Entry;)Ljava/lang/Boolean; +Lorg/kodein/di/internal/DITreeImpl$findBySpecs$2; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$2;->(Lorg/kodein/type/TypeToken;Lorg/kodein/di/internal/DITreeImpl;)V +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$2;->invoke(Lkotlin/Triple;)Lkotlin/Triple; +Lorg/kodein/di/internal/DITreeImpl$findBySpecs$3; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$3;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$3;->invoke(Lkotlin/Triple;)Ljava/lang/Boolean; +Lorg/kodein/di/internal/DITreeImpl$findBySpecs$4; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$4;->(Ljava/lang/Object;)V +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$4;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$4;->invoke(Lkotlin/Triple;)Ljava/lang/Boolean; +Lorg/kodein/di/internal/DITreeImpl$findBySpecs$argSeq$1; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$argSeq$1;->()V +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$argSeq$1;->()V +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$argSeq$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$argSeq$1;->invoke(Lkotlin/Triple;)Lkotlin/sequences/Sequence; +Lorg/kodein/di/internal/DITreeImpl$findBySpecs$argSeq$1$1; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$argSeq$1$1;->(Lorg/kodein/di/bindings/ContextTranslator;)V +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$argSeq$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$argSeq$1$1;->invoke(Ljava/util/Map$Entry;)Lkotlin/Triple; +Lorg/kodein/di/internal/DITreeImpl$findBySpecs$contextSeq$1; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$contextSeq$1;->()V +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$contextSeq$1;->()V +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$contextSeq$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$contextSeq$1;->invoke(Ljava/util/Map$Entry;)Lkotlin/sequences/Sequence; +Lorg/kodein/di/internal/DITreeImpl$findBySpecs$contextSeq$1$1; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$contextSeq$1$1;->()V +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$contextSeq$1$1;->()V +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$contextSeq$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$contextSeq$1$1;->invoke(Ljava/util/Map$Entry;)Lkotlin/Triple; +Lorg/kodein/di/internal/DITreeImpl$findBySpecs$resultSeq$1; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$resultSeq$1;->()V +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$resultSeq$1;->()V +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$resultSeq$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$resultSeq$1;->invoke(Lkotlin/Triple;)Lkotlin/Pair; +Lorg/kodein/di/internal/DITreeImpl$findBySpecs$tagSeq$1; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$tagSeq$1;->()V +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$tagSeq$1;->()V +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$tagSeq$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$tagSeq$1;->invoke(Lkotlin/Triple;)Lkotlin/sequences/Sequence; +Lorg/kodein/di/internal/DITreeImpl$findBySpecs$tagSeq$1$1; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$tagSeq$1$1;->(Lorg/kodein/di/bindings/ContextTranslator;)V +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$tagSeq$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/internal/DITreeImpl$findBySpecs$tagSeq$1$1;->invoke(Ljava/util/Map$Entry;)Lkotlin/Triple; +Lorg/kodein/di/internal/DirectDIBaseImpl; +HSPLorg/kodein/di/internal/DirectDIBaseImpl;->(Lorg/kodein/di/DIContainer;Lorg/kodein/di/DIContext;)V +HSPLorg/kodein/di/internal/DirectDIBaseImpl;->Instance(Lorg/kodein/type/TypeToken;Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/internal/DirectDIBaseImpl;->Instance(Lorg/kodein/type/TypeToken;Lorg/kodein/type/TypeToken;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/kodein/di/internal/DirectDIBaseImpl;->On(Lorg/kodein/di/DIContext;)Lorg/kodein/di/DirectDI; +HSPLorg/kodein/di/internal/DirectDIBaseImpl;->getContainer()Lorg/kodein/di/DIContainer; +HSPLorg/kodein/di/internal/DirectDIBaseImpl;->getContext()Lorg/kodein/di/DIContext; +HSPLorg/kodein/di/internal/DirectDIBaseImpl;->getDi()Lorg/kodein/di/DI; +HSPLorg/kodein/di/internal/DirectDIBaseImpl;->getDirectDI()Lorg/kodein/di/DirectDI; +HSPLorg/kodein/di/internal/DirectDIBaseImpl;->getLazy()Lorg/kodein/di/DI; +Lorg/kodein/di/internal/DirectDIImpl; +HSPLorg/kodein/di/internal/DirectDIImpl;->(Lorg/kodein/di/DIContainer;Lorg/kodein/di/DIContext;)V +HSPLorg/kodein/di/internal/DirectDIImpl;->AllInstances(Lorg/kodein/type/TypeToken;Ljava/lang/Object;)Ljava/util/List; +Lorg/kodein/di/internal/DirectDIJVMImplKt; +HSPLorg/kodein/di/internal/DirectDIJVMImplKt;->access$getAnyType(Lorg/kodein/di/DIContext;)Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/internal/DirectDIJVMImplKt;->getAnyType(Lorg/kodein/di/DIContext;)Lorg/kodein/type/TypeToken; +Lorg/kodein/di/internal/LangKt; +HSPLorg/kodein/di/internal/LangKt;->newConcurrentMap()Ljava/util/Map; +HSPLorg/kodein/di/internal/LangKt;->newLinkedList()Ljava/util/List; +HSPLorg/kodein/di/internal/LangKt;->newLinkedList(Ljava/util/Collection;)Ljava/util/List; +Lorg/kodein/di/internal/TypeChecker; +HSPLorg/kodein/di/internal/TypeChecker;->()V +HSPLorg/kodein/di/internal/TypeChecker;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lorg/kodein/di/internal/TypeChecker$Down; +HSPLorg/kodein/di/internal/TypeChecker$Down;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/internal/TypeChecker$Down;->check(Lorg/kodein/type/TypeToken;)Z +HSPLorg/kodein/di/internal/TypeChecker$Down;->equals(Ljava/lang/Object;)Z +HSPLorg/kodein/di/internal/TypeChecker$Down;->getType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/internal/TypeChecker$Down;->hashCode()I +Lorg/kodein/di/internal/TypeChecker$Up; +HSPLorg/kodein/di/internal/TypeChecker$Up;->(Lorg/kodein/type/TypeToken;)V +HSPLorg/kodein/di/internal/TypeChecker$Up;->check(Lorg/kodein/type/TypeToken;)Z +HSPLorg/kodein/di/internal/TypeChecker$Up;->equals(Ljava/lang/Object;)Z +HSPLorg/kodein/di/internal/TypeChecker$Up;->getType()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/di/internal/TypeChecker$Up;->hashCode()I +Lorg/kodein/type/AbstractTypeToken; +HSPLorg/kodein/type/AbstractTypeToken;->()V +HSPLorg/kodein/type/AbstractTypeToken;->()V +HSPLorg/kodein/type/AbstractTypeToken;->equals(Ljava/lang/Object;)Z +HSPLorg/kodein/type/AbstractTypeToken;->hashCode()I +HSPLorg/kodein/type/AbstractTypeToken;->isAssignableFrom(Lorg/kodein/type/TypeToken;)Z +Lorg/kodein/type/AbstractTypeToken$Companion; +HSPLorg/kodein/type/AbstractTypeToken$Companion;->()V +HSPLorg/kodein/type/AbstractTypeToken$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +Lorg/kodein/type/GenericArrayTypeImpl; +HSPLorg/kodein/type/GenericArrayTypeImpl;->()V +HSPLorg/kodein/type/GenericArrayTypeImpl;->(Ljava/lang/reflect/Type;)V +HSPLorg/kodein/type/GenericArrayTypeImpl;->(Ljava/lang/reflect/Type;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/kodein/type/GenericArrayTypeImpl;->getGenericComponentType()Ljava/lang/reflect/Type; +Lorg/kodein/type/GenericArrayTypeImpl$Companion; +HSPLorg/kodein/type/GenericArrayTypeImpl$Companion;->()V +HSPLorg/kodein/type/GenericArrayTypeImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/kodein/type/GenericArrayTypeImpl$Companion;->invoke(Ljava/lang/reflect/Type;)Lorg/kodein/type/GenericArrayTypeImpl; +Lorg/kodein/type/GenericJVMTypeTokenDelegate; +HSPLorg/kodein/type/GenericJVMTypeTokenDelegate;->(Lorg/kodein/type/JVMTypeToken;Ljava/lang/Class;)V +HSPLorg/kodein/type/GenericJVMTypeTokenDelegate;->equals(Ljava/lang/Object;)Z +HSPLorg/kodein/type/GenericJVMTypeTokenDelegate;->getRaw()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/type/GenericJVMTypeTokenDelegate;->getSuper()Ljava/util/List; +HSPLorg/kodein/type/GenericJVMTypeTokenDelegate;->hashCode()I +HSPLorg/kodein/type/GenericJVMTypeTokenDelegate;->isAssignableFrom(Lorg/kodein/type/TypeToken;)Z +HSPLorg/kodein/type/GenericJVMTypeTokenDelegate;->isWildcard()Z +Lorg/kodein/type/JVMAbstractTypeToken; +HSPLorg/kodein/type/JVMAbstractTypeToken;->()V +HSPLorg/kodein/type/JVMAbstractTypeToken;->()V +HSPLorg/kodein/type/JVMAbstractTypeToken;->access$getNeedGATWorkaround$delegate$cp()Lkotlin/Lazy; +HSPLorg/kodein/type/JVMAbstractTypeToken;->access$getNeedPTWorkaround$delegate$cp()Lkotlin/Lazy; +HSPLorg/kodein/type/JVMAbstractTypeToken;->typeEquals$kaverit_release(Lorg/kodein/type/TypeToken;)Z +HSPLorg/kodein/type/JVMAbstractTypeToken;->typeHashCode$kaverit_release()I +Lorg/kodein/type/JVMAbstractTypeToken$Companion; +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion;->()V +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion;->Equals(Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)Z +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion;->HashCode(Ljava/lang/reflect/Type;)I +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion;->getNeedGATWorkaround()Z +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion;->getNeedPTWorkaround()Z +Lorg/kodein/type/JVMAbstractTypeToken$Companion$WrappingTest; +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion$WrappingTest;->()V +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion$WrappingTest;->getType()Ljava/lang/reflect/Type; +Lorg/kodein/type/JVMAbstractTypeToken$Companion$needGATWorkaround$2; +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion$needGATWorkaround$2;->()V +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion$needGATWorkaround$2;->()V +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion$needGATWorkaround$2;->invoke()Ljava/lang/Boolean; +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion$needGATWorkaround$2;->invoke()Ljava/lang/Object; +Lorg/kodein/type/JVMAbstractTypeToken$Companion$needGATWorkaround$2$t1$1; +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion$needGATWorkaround$2$t1$1;->()V +Lorg/kodein/type/JVMAbstractTypeToken$Companion$needGATWorkaround$2$t2$1; +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion$needGATWorkaround$2$t2$1;->()V +Lorg/kodein/type/JVMAbstractTypeToken$Companion$needPTWorkaround$2; +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion$needPTWorkaround$2;->()V +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion$needPTWorkaround$2;->()V +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion$needPTWorkaround$2;->invoke()Ljava/lang/Boolean; +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion$needPTWorkaround$2;->invoke()Ljava/lang/Object; +Lorg/kodein/type/JVMAbstractTypeToken$Companion$needPTWorkaround$2$t1$1; +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion$needPTWorkaround$2$t1$1;->()V +Lorg/kodein/type/JVMAbstractTypeToken$Companion$needPTWorkaround$2$t2$1; +HSPLorg/kodein/type/JVMAbstractTypeToken$Companion$needPTWorkaround$2$t2$1;->()V +Lorg/kodein/type/JVMClassTypeToken; +HSPLorg/kodein/type/JVMClassTypeToken;->(Ljava/lang/Class;)V +HSPLorg/kodein/type/JVMClassTypeToken;->getJvmType()Ljava/lang/Class; +HSPLorg/kodein/type/JVMClassTypeToken;->getJvmType()Ljava/lang/reflect/Type; +HSPLorg/kodein/type/JVMClassTypeToken;->getRaw()Lorg/kodein/type/JVMClassTypeToken; +HSPLorg/kodein/type/JVMClassTypeToken;->getRaw()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/type/JVMClassTypeToken;->getSuper()Ljava/util/List; +HSPLorg/kodein/type/JVMClassTypeToken;->isAssignableFrom(Lorg/kodein/type/TypeToken;)Z +HSPLorg/kodein/type/JVMClassTypeToken;->isWildcard()Z +Lorg/kodein/type/JVMGenericArrayTypeToken; +Lorg/kodein/type/JVMParameterizedTypeToken; +HSPLorg/kodein/type/JVMParameterizedTypeToken;->(Ljava/lang/reflect/ParameterizedType;)V +HSPLorg/kodein/type/JVMParameterizedTypeToken;->getGenericParameters()[Lorg/kodein/type/TypeToken; +HSPLorg/kodein/type/JVMParameterizedTypeToken;->getJvmType()Ljava/lang/reflect/ParameterizedType; +HSPLorg/kodein/type/JVMParameterizedTypeToken;->getJvmType()Ljava/lang/reflect/Type; +HSPLorg/kodein/type/JVMParameterizedTypeToken;->getRaw()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/type/JVMParameterizedTypeToken;->getSuper()Ljava/util/List; +HSPLorg/kodein/type/JVMParameterizedTypeToken;->isWildcard()Z +Lorg/kodein/type/JVMTypeToken; +Lorg/kodein/type/JVMUtilsKt; +HSPLorg/kodein/type/JVMUtilsKt;->allTypeEquals([Ljava/lang/reflect/Type;[Ljava/lang/reflect/Type;)Z +HSPLorg/kodein/type/JVMUtilsKt;->boundedTypeArguments(Ljava/lang/reflect/ParameterizedType;)[Ljava/lang/reflect/Type; +HSPLorg/kodein/type/JVMUtilsKt;->getBoundedGenericSuperClass(Ljava/lang/Class;)Ljava/lang/reflect/Type; +HSPLorg/kodein/type/JVMUtilsKt;->getRawClass(Ljava/lang/reflect/ParameterizedType;)Ljava/lang/Class; +HSPLorg/kodein/type/JVMUtilsKt;->kodein(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type; +HSPLorg/kodein/type/JVMUtilsKt;->reify$default(Ljava/lang/reflect/ParameterizedType;Ljava/lang/reflect/Type;Ljava/lang/reflect/ParameterizedType;[Ljava/lang/reflect/Type;ILjava/lang/Object;)Ljava/lang/reflect/Type; +HSPLorg/kodein/type/JVMUtilsKt;->reify(Ljava/lang/reflect/ParameterizedType;Ljava/lang/reflect/Type;Ljava/lang/reflect/ParameterizedType;[Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type; +HSPLorg/kodein/type/JVMUtilsKt;->removeVariables(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type; +HSPLorg/kodein/type/JVMUtilsKt;->typeEquals(Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)Z +HSPLorg/kodein/type/JVMUtilsKt;->typeHashCode(Ljava/lang/reflect/Type;)I +Lorg/kodein/type/ParameterizedTypeImpl; +HSPLorg/kodein/type/ParameterizedTypeImpl;->()V +HSPLorg/kodein/type/ParameterizedTypeImpl;->(Ljava/lang/Class;[Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)V +HSPLorg/kodein/type/ParameterizedTypeImpl;->equals(Ljava/lang/Object;)Z +HSPLorg/kodein/type/ParameterizedTypeImpl;->getActualTypeArguments()[Ljava/lang/reflect/Type; +HSPLorg/kodein/type/ParameterizedTypeImpl;->getRawType()Ljava/lang/Class; +HSPLorg/kodein/type/ParameterizedTypeImpl;->getRawType()Ljava/lang/reflect/Type; +HSPLorg/kodein/type/ParameterizedTypeImpl;->hashCode()I +Lorg/kodein/type/ParameterizedTypeImpl$Companion; +HSPLorg/kodein/type/ParameterizedTypeImpl$Companion;->()V +HSPLorg/kodein/type/ParameterizedTypeImpl$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/kodein/type/ParameterizedTypeImpl$Companion;->invoke(Ljava/lang/reflect/ParameterizedType;)Lorg/kodein/type/ParameterizedTypeImpl; +Lorg/kodein/type/TypeReference; +HSPLorg/kodein/type/TypeReference;->()V +HSPLorg/kodein/type/TypeReference;->getSuperType()Ljava/lang/reflect/Type; +Lorg/kodein/type/TypeToken; +HSPLorg/kodein/type/TypeToken;->()V +Lorg/kodein/type/TypeToken$Companion; +HSPLorg/kodein/type/TypeToken$Companion;->()V +HSPLorg/kodein/type/TypeToken$Companion;->()V +HSPLorg/kodein/type/TypeToken$Companion;->getAny()Lorg/kodein/type/TypeToken; +HSPLorg/kodein/type/TypeToken$Companion;->getUnit()Lorg/kodein/type/TypeToken; +Lorg/kodein/type/TypeTokensJVMKt; +HSPLorg/kodein/type/TypeTokensJVMKt;->()V +HSPLorg/kodein/type/TypeTokensJVMKt;->erased(Lkotlin/reflect/KClass;)Lorg/kodein/type/TypeToken; +HSPLorg/kodein/type/TypeTokensJVMKt;->erasedOf(Ljava/lang/Object;)Lorg/kodein/type/TypeToken; +HSPLorg/kodein/type/TypeTokensJVMKt;->isReified(Ljava/lang/reflect/Type;)Z +HSPLorg/kodein/type/TypeTokensJVMKt;->typeToken(Ljava/lang/reflect/Type;)Lorg/kodein/type/JVMTypeToken; +Lorg/slf4j/ILoggerFactory; +Lorg/slf4j/IMarkerFactory; +Lorg/slf4j/Logger; +Lorg/slf4j/LoggerFactory; +HSPLorg/slf4j/LoggerFactory;->()V +HSPLorg/slf4j/LoggerFactory;->bind()V +HSPLorg/slf4j/LoggerFactory;->findServiceProviders()Ljava/util/List; +HSPLorg/slf4j/LoggerFactory;->fixSubstituteLoggers()V +HSPLorg/slf4j/LoggerFactory;->getILoggerFactory()Lorg/slf4j/ILoggerFactory; +HSPLorg/slf4j/LoggerFactory;->getLogger(Ljava/lang/Class;)Lorg/slf4j/Logger; +HSPLorg/slf4j/LoggerFactory;->getLogger(Ljava/lang/String;)Lorg/slf4j/Logger; +HSPLorg/slf4j/LoggerFactory;->getProvider()Lorg/slf4j/spi/SLF4JServiceProvider; +HSPLorg/slf4j/LoggerFactory;->getServiceLoader(Ljava/lang/ClassLoader;)Ljava/util/ServiceLoader; +HSPLorg/slf4j/LoggerFactory;->isAmbiguousProviderList(Ljava/util/List;)Z +HSPLorg/slf4j/LoggerFactory;->loadExplicitlySpecified(Ljava/lang/ClassLoader;)Lorg/slf4j/spi/SLF4JServiceProvider; +HSPLorg/slf4j/LoggerFactory;->performInitialization()V +HSPLorg/slf4j/LoggerFactory;->postBindCleanUp()V +HSPLorg/slf4j/LoggerFactory;->replayEvents()V +HSPLorg/slf4j/LoggerFactory;->reportActualBinding(Ljava/util/List;)V +HSPLorg/slf4j/LoggerFactory;->reportMultipleBindingAmbiguity(Ljava/util/List;)V +HSPLorg/slf4j/LoggerFactory;->safelyInstantiate(Ljava/util/List;Ljava/util/Iterator;)V +HSPLorg/slf4j/LoggerFactory;->versionSanityCheck()V +Lorg/slf4j/helpers/BasicMDCAdapter; +HSPLorg/slf4j/helpers/BasicMDCAdapter;->()V +Lorg/slf4j/helpers/BasicMDCAdapter$1; +HSPLorg/slf4j/helpers/BasicMDCAdapter$1;->(Lorg/slf4j/helpers/BasicMDCAdapter;)V +Lorg/slf4j/helpers/BasicMarkerFactory; +HSPLorg/slf4j/helpers/BasicMarkerFactory;->()V +Lorg/slf4j/helpers/NOPLoggerFactory; +HSPLorg/slf4j/helpers/NOPLoggerFactory;->()V +Lorg/slf4j/helpers/NOPMDCAdapter; +HSPLorg/slf4j/helpers/NOPMDCAdapter;->()V +Lorg/slf4j/helpers/NOP_FallbackServiceProvider; +HSPLorg/slf4j/helpers/NOP_FallbackServiceProvider;->()V +HSPLorg/slf4j/helpers/NOP_FallbackServiceProvider;->()V +Lorg/slf4j/helpers/SubstituteLoggerFactory; +HSPLorg/slf4j/helpers/SubstituteLoggerFactory;->()V +HSPLorg/slf4j/helpers/SubstituteLoggerFactory;->clear()V +HSPLorg/slf4j/helpers/SubstituteLoggerFactory;->getEventQueue()Ljava/util/concurrent/LinkedBlockingQueue; +HSPLorg/slf4j/helpers/SubstituteLoggerFactory;->getLoggers()Ljava/util/List; +HSPLorg/slf4j/helpers/SubstituteLoggerFactory;->postInitialization()V +Lorg/slf4j/helpers/SubstituteServiceProvider; +HSPLorg/slf4j/helpers/SubstituteServiceProvider;->()V +HSPLorg/slf4j/helpers/SubstituteServiceProvider;->getSubstituteLoggerFactory()Lorg/slf4j/helpers/SubstituteLoggerFactory; +Lorg/slf4j/helpers/ThreadLocalMapOfStacks; +HSPLorg/slf4j/helpers/ThreadLocalMapOfStacks;->()V +Lorg/slf4j/helpers/Util; +HSPLorg/slf4j/helpers/Util;->()V +HSPLorg/slf4j/helpers/Util;->safeGetBooleanSystemProperty(Ljava/lang/String;)Z +HSPLorg/slf4j/helpers/Util;->safeGetSystemProperty(Ljava/lang/String;)Ljava/lang/String; +Lorg/slf4j/impl/LoggerServiceProvider; +HSPLorg/slf4j/impl/LoggerServiceProvider;->()V +HSPLorg/slf4j/impl/LoggerServiceProvider;->()V +HSPLorg/slf4j/impl/LoggerServiceProvider;->getLoggerFactory()Lorg/slf4j/ILoggerFactory; +HSPLorg/slf4j/impl/LoggerServiceProvider;->getRequestedApiVersion()Ljava/lang/String; +HSPLorg/slf4j/impl/LoggerServiceProvider;->initialize()V +HSPLorg/slf4j/impl/LoggerServiceProvider;->initializeLoggerContext()V +Lorg/slf4j/spi/LocationAwareLogger; +Lorg/slf4j/spi/MDCAdapter; +Lorg/slf4j/spi/SLF4JServiceProvider; \ No newline at end of file diff --git a/androidApp/src/test/java/com/artemchep/keyguard/ExampleUnitTest.kt b/androidApp/src/test/java/com/artemchep/keyguard/ExampleUnitTest.kt new file mode 100644 index 00000000..6ef88b5d --- /dev/null +++ b/androidApp/src/test/java/com/artemchep/keyguard/ExampleUnitTest.kt @@ -0,0 +1,15 @@ +package com.artemchep.keyguard + +import kotlinx.coroutines.runBlocking +import org.junit.Test + +/** + * Example local unit test, which will execute on the development machine (host). + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +class ExampleUnitTest { + @Test + fun addition_isCorrect() = runBlocking { + } +} diff --git a/androidBenchmark/build.gradle.kts b/androidBenchmark/build.gradle.kts new file mode 100644 index 00000000..e7828531 --- /dev/null +++ b/androidBenchmark/build.gradle.kts @@ -0,0 +1,80 @@ +import com.android.build.api.dsl.ManagedVirtualDevice + +plugins { + alias(libs.plugins.android.test) + alias(libs.plugins.kotlin.android) + alias(libs.plugins.baseline.profile) +} + +android { + compileSdk = libs.versions.androidCompileSdk.get().toInt() + namespace = "com.artemchep.macrobenchmark" + + defaultConfig { + minSdk = libs.versions.androidMinSdk.get().toInt() + targetSdk = libs.versions.androidTargetSdk.get().toInt() + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + kotlinOptions { + jvmTarget = "11" + } + testOptions.managedDevices.devices { + maybeCreate("pixel6api34").apply { + device = "Pixel 6" + apiLevel = 34 + systemImageSource = "google_apis_playstore" + } + } + + targetProjectPath = ":androidApp" + // Enable the benchmark to run separately from the app process + experimentalProperties["android.experimental.self-instrumenting"] = true + + buildTypes { + // declare a build type to match the target app"s build type + create("benchmark") { + isDebuggable = true + signingConfig = signingConfigs.getByName("debug") + // Selects release buildType if the 'benchmark' + // buildType not available in other modules. + matchingFallbacks.add("release") + } + } + + buildFeatures { + buildConfig = true + } + + val accountManagementDimension = "accountManagement" + flavorDimensions += accountManagementDimension + productFlavors { + maybeCreate("playStore").apply { + dimension = accountManagementDimension + } + maybeCreate("none").apply { + dimension = accountManagementDimension + } + } +} + +baselineProfile { + managedDevices += "pixel6api34" + + // This enables using connected devices to generate profiles. The default is true. + // When using connected devices, they must be rooted or API 33 and higher. + useConnectedDevices = false +} + +dependencies { + implementation(libs.androidx.benchmark.macro.junit4) + implementation(libs.androidx.espresso.core) + implementation(libs.androidx.junit) + implementation(libs.androidx.uiautomator) + implementation(libs.androidx.profileinstaller) +} diff --git a/androidBenchmark/src/main/AndroidManifest.xml b/androidBenchmark/src/main/AndroidManifest.xml new file mode 100644 index 00000000..602ac04b --- /dev/null +++ b/androidBenchmark/src/main/AndroidManifest.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/androidBenchmark/src/main/java/com/artemchep/macrobenchmark/Utils.kt b/androidBenchmark/src/main/java/com/artemchep/macrobenchmark/Utils.kt new file mode 100644 index 00000000..d1183bda --- /dev/null +++ b/androidBenchmark/src/main/java/com/artemchep/macrobenchmark/Utils.kt @@ -0,0 +1,15 @@ +package com.artemchep.macrobenchmark + +/** + * Convenience parameter to use proper package name + * with regards to build type and build flavor. + */ +val PACKAGE_NAME = StringBuilder("com.artemchep.keyguard").apply { + val hasSuffix = when (BuildConfig.BUILD_TYPE) { + "debug" -> true + else -> false + } + if (hasSuffix) { + append(".${BuildConfig.BUILD_TYPE}") + } +}.toString() diff --git a/androidBenchmark/src/main/java/com/artemchep/macrobenchmark/baselineprofile/BaselineProfileGenerator.kt b/androidBenchmark/src/main/java/com/artemchep/macrobenchmark/baselineprofile/BaselineProfileGenerator.kt new file mode 100644 index 00000000..3ea7844b --- /dev/null +++ b/androidBenchmark/src/main/java/com/artemchep/macrobenchmark/baselineprofile/BaselineProfileGenerator.kt @@ -0,0 +1,33 @@ +package com.artemchep.macrobenchmark.baselineprofile + +import android.os.Build +import androidx.annotation.RequiresApi +import androidx.benchmark.macro.junit4.BaselineProfileRule +import com.artemchep.macrobenchmark.PACKAGE_NAME +import com.artemchep.macrobenchmark.ui.keyguard.createVaultAndWait +import org.junit.Rule +import org.junit.Test + +/** + * Generates a baseline profile which + * can be copied to `app/src/main/baseline-prof.txt`. + */ +@RequiresApi(Build.VERSION_CODES.P) +class BaselineProfileGenerator { + @get:Rule + val baselineProfileRule = BaselineProfileRule() + + @Test + fun generate() = baselineProfileRule.collect( + packageName = PACKAGE_NAME, + ) { + // This block defines the app's critical user journey. Here we are interested in + // optimizing for app startup. But you can also navigate and scroll + // through your most important UI. + + pressHome() + startActivityAndWait() + + createVaultAndWait() + } +} diff --git a/androidBenchmark/src/main/java/com/artemchep/macrobenchmark/ui/keyguard/interestsWaitForTopics.kt b/androidBenchmark/src/main/java/com/artemchep/macrobenchmark/ui/keyguard/interestsWaitForTopics.kt new file mode 100644 index 00000000..c6d9a224 --- /dev/null +++ b/androidBenchmark/src/main/java/com/artemchep/macrobenchmark/ui/keyguard/interestsWaitForTopics.kt @@ -0,0 +1,36 @@ +package com.artemchep.macrobenchmark.ui.keyguard + +import androidx.benchmark.macro.MacrobenchmarkScope +import androidx.test.uiautomator.By +import androidx.test.uiautomator.Until +import java.util.regex.Pattern + +fun MacrobenchmarkScope.waitForMainScreen() = kotlin.run { + val search = kotlin.run { + val pattern = Pattern.compile("nav:(setup|unlock|main)") + val selector = By.res(pattern) + Until.findObject(selector) + } + device.wait(search, 30_000) +} + +fun MacrobenchmarkScope.createVaultAndWait() = kotlin.run { + val screen = waitForMainScreen() + when (screen.resourceName) { + "nav:setup", + "nav:unlock", + -> { + // Create or unlock existing vault + val password = screen + .findObject(By.res("field:password")) + password.text = "111111" + val btn = screen + .findObject(By.res("btn:go")) + btn.wait(Until.clickable(true), 1000L) + btn.click() + // wait till main screen is loaded + device.wait(Until.findObject(By.res("nav:main")), 30_000) + } + else -> screen + } +} diff --git a/artwork/android-adaptive-icon.sketch b/artwork/android-adaptive-icon.sketch new file mode 100644 index 0000000000000000000000000000000000000000..1c514c5ee1bbc12c41541e2ec17efcb67d5bc4db GIT binary patch literal 23392 zcma&NV{oRy^DZ3Q=Ek;d+qP}nw(Vp$<`dgaHnweBXMca3Z>QdOYO3z8nXXaQ-QCw* zJ&H1*V01t*Ku|#cTYmnhzyqNHnL3!b*_qk9(p$SY*aHJ0{jbjd{a$HlIc&6HeA9$o z+hk7qo#9d?2|}I$EZ^DbV20I=<;=zt53NE5e*6%Q$Qn}s_4a?-5Fe5?b!R=;{Ubip zeY4fPR>&AqyjXM?VmcJ)cTfHtAI};u_f8awSWAPC;914c?GMjmB z6ww@_VBXf>&t*hWvLEd-PFW_6D;$bfw4W&fYfZ++5zSX<3<9c1LJ5k_QvEw{p0rul zJ0_DH>`qn1)KKiu_IK#RFP}k*kYrh;iLBC8m-nc(3&DDDV9SjhzLwWl2MfeRj71oss+{T@k}_*Urezf%WM#Gae~-0vEiX6sfTbe zpyVR(n14qrfJ2;`)&wKb4K(C7dcz`jAl63P6!{s5sPI7?2%;#2UKK`1hU*?yV+@WZ zFngyuNMsPiL#zEZ7QZ_8TLMWe)N?f-%5RbwQ1`Sjaz(Q;aPD3w8Br4zGr^N_@;Xi@ zostq6CeOcLYBYLn?6Z5;UQ*SZ7UOkQrWroIF(6p0Jgr^tx}?+obf26&(Oh|n z-aJc(Z(wKS#G(2j!1pP0xnWRX!N~5ztsFwq3@4$3d+Cplyx%Hk_bz$C1A8G2dGBZm zgJH&SW(aLbOZ_NRN*fd@Q8$@q#lpSVhe6c%KX`#hEw{B8Nzs)fQi+L;i#c>jBq%?j znO$N(633~Y+o*3azQC|byiWQPaUQRrlxHA@ymrTgC<{|BSf>LuDdj0f2GLCLe&>M? zKuuPs;U!H8E5dT-06=B)MP!>)83*T~3CV#n3A@nY;?;tZ;OWC+OPNbUf&r!tzcnvX z&8>rPZ=yTh(poLZ%C>Twh7_V;vQ`o^Aez)!Tp8x6nEM6iEc?>!@wOeO8THw z9>4vSmMyIKT=WWZaAN8Gq>7 zHJ748nZ|X+Dl$M5+Xgan1c>0BW`?jJpBYHRi}wEJb`Ze4`uI>|(zMZf7V}XX5ZE2K z-FoucD2RPiUVdoo@oBA%<}>22%?uBZDZTW?pJXWf?)|_a8giY0~48hF|0Cy7m{k!PHm#+!$vKOq@SB=b>^t@ zReyfD8#pV9=hCybBoN#WtaVVQpx&Ns z53e;HBR^WkotdZMDo?ruh{rpi=5K}Pn)N{1T*ZNce;>{F6q@`nA}WD4`TIO-YZXx~KRE zdSwIxa~m;GzzY_$3$YL|xc@^-d;a_K+2i{4b`8^w{&3BH_v(6d%haRD$BU=)ngdhzjyV24am=hgNjCh@gX(d6F%Y z?kyZ|*`EmHj(IMDnc1t?`^JY-!KCrAh|#LBLQ)9pvn;kymAWxCo(EixsVqY{K((I zEl=7dFH2tR^Z4b4<0KB!*_QpeAN{~C1*uxwHD^}@X6z#bpoW;OVF!;OzT<;ChZO3Y zj)Q`D%r`M7UuRxBf18;f9ohFk?5xDZV8u|tzav4>V1Zc|!93}>?&W=;nr{F8GdN=U zKV6jTT?{$zuN0ony6!!nin6oW8fJI?bAYcq1&8}en(+KeUE1igot&1>?uw7Dj zUMQC3Xh1}a&o95#A;!HV#%oO?F5(A_O#=9ztu(-W=&Ak_)Q~Z04G4R%Uc0_yWfgUC zcKcOrW#f`kjIa=aOt6RQ?u_=W8|L&tJ|VY+xis|y-!)}vvG;B*Z6mx5b?5@#t z`LgQe|L)3f@a#0*Ll@0qMDS&2ak^xUIevz<;~?zkPVod}jVSpumj|i89=M=n|T$E?n2q-qz!BtiU>?KEGRfr!iPGT<|w%_=)Sk``&$Mv+G;Jth*s0r zO8YSl!EX)xMz`0h7=dE?Q%XPMf!BaG-}MX3)gi{888pV)3z^`}lNU%8eU3i*&*`@o zn9sYXo10rX^s?RVXCJh>Y^k9*G9eO^V8yZ^XPJ;>Ep0HIagA*7G1&A=(D4#?4;{Nl z#>2yJZya|OeFgjVCbW3V;YOhOzaY`jkkL5ssf-{j@hlcoMg(ePiQfxB0MdD+Gp71z zBf&gYK`3J&6)56Cye6&a0#wNW1WAWkOm#u-LyKg`G;BmTHzEO4q7k)J&fQSqG3hhD z;GmFWy}6bnfM=SxXjogpb1G{G-`{#QZwb?*m3OeM6gQX!h);y zdT6O=QU!`{{^hLeUW=Q(nKDG^TJ&7BVFO?;18UBi%Le$#M7KD-Hw;bPaCh1Wj&4pNL4GR$wOtJy5+ z!v87ud3X|fc91BDt@S5`>}64~?MU16xsKjI%Z&YW!uHxq)w^Q_BQTk0cwhhLlE*k$ z>BPsLaB&55TAG~Qvg+5-Jj9}z1~+4pWS3lZZuP)UuMH6NMKPN`_0~io!8Pz#h6J=) zZlW<8Om0u?3O}8%0&hFaE^xy4{A*s*)+0vd%Kx5kXf^Q=zCT=rT)Y}CVMWwtLqN15 zUQ^xLV2OD!MPE-+z8}XHcVdaXn4$TJi0|pe4ty|k^JBI4=U`>rIICg~vl_2=8bh(o zW(T0(7_d)zTSKUKcE61pF>$mrQQN1?PQ`bzCMp#JIV%HaufahTgY`+GTva>G+!Ijo zWT#${mWc~ES`US>3@{^hE%g_6n+dX<2Hj6chSz66{aK_e6Q{D4tx%GVOHTT;c)I+G zH6St`cYXLcM=DV;cy=%r&oA+@!^Ia(>$mWE`ot)ElG55BP56u;S--7mg63EAVRgkH z>owE1WlX)$_2a{`b4+pfn;L9m1Cj&{@Ma2XON4p`f(0LMMYBaTN-4fr+v>IW=JtGj z#bTZ#N-JJhGyUN!P`v{XuiS#UO+RvNvxlAI8J8EnrQd@NqRBz z*vohGZ_LKWi773CBgB^3gDVr{rWYKc9nQCeZ}?HFTYg z^I09h>kmCj#oEns3>=`{B~(G+{2ld_s8l4$eIgmgmC#wgWpi0Q3Sqi!C39^~(fK3DwATF?bI!^%|IwB!oqdmlAv z|NYDf?z6PizSmb3H`D=1yHp?yWJ#p5V3n-x-b9oV2cHNabx5^cV1-Iys4G6vJ|w({ z5;zd}JW#ZXDbrY)1kZ_td8wtMu8@AoO3HLNus)1H@4>(^FknS58n8u8rOfUA#K8B$ z?f%`OBymlUSP>k>5p*PBE1;;>A;ZC_2^2|+#BY-A{#)*)Iec^cydZ6uGv-2O9A%t6 zCZtSLAe&&x-%ddI--C;DekTTgWjGzGA{o}FJ>1p8SjiD_)z#0!NOeF=T9V#mMS}0L zKx2^yn?^X5UDwdHd3}hg4(d7R7PW^ z#2sKG34q8MEz_)4uzEOQ!6FJlMZ2J~tf|B>G~%>GPV~95_hMDijOf#Ue*$sGqkP=I zDsaHVc3oQ<^4FOf8;tpZv&SJ3G*1bJbCH^5z`4w;vQ%bmu3v4Q$O7CA8)B@_aFzQ( zP~|AlERk@!u;`4V;H>T3k@_rhCiAx@$N(8|f1_HUEm083rid}V(#UV=4zNW?H7SWq z=VUDWSnUVRGtr=6qWAhx76oh*`O<&g^A*YTYV%v=r7`NRO@Tv-#dM8*DmK7RM2{+q zPJtl_s_U@9ji3Pm(=vZ9T|5qhb9iAu2EN9wtw%c8PqZu7(i@ z?x9Vw#dC?qptpZ^tU!qgF13GYofggpmgIv(=fcsmhV)sF=FOpyl%&AQ(Ld5-dNTu^ zpTSpcw1|^rgW;$wz1Vs6T*d@-pZv+WSy;F&>bVW-mD|`hbr4RV>yXl+f1hKyl4}lc zJMKEeEzF@#m+}xPBaNbTN?F`}u>bRPCd1j)BeT)&CjuuEjWoM@ybmuOsqW#x_>EfD zKDObjI4CEicM%;La&lvPM{c10rNtUn{Ht^!zj@NTQEan|n&JFycX4kienoX<{lO+? zha{kc<@(fVal+zL`$zkxJ+4LI+``O56{3U(=I6O-|I`&KzoSIVUx~N<>R=4-5Es#UWKMer z!0!9|5f)(=XB8J`qhn-Z=b~d}V`iu0WEWzl6BiK?W#kfP5oH$<`hO!9zYAxb@ucG_ z#z%`E%CioGV*|ab?S`%R^yMa8lL$~^BIE_qJ|IE2N&M){mCVSkj2wzJT0A676f_~2 zLMW!SEz5hnTyD4ViO-(Osp=j5uY*8{VF%^U>rL5-gQ{azf|^WBy2vyC|e z$S(tWiG#DM0IwaMf=3IF8OV%`uLXhFk&uA+@P+NSE1!U?gg+rE%{&2kd7qmCdhNF@ z0Zv}qInNsOUv7-pT|A>S3wP-HoHu^w2|t{fvXgZg-FsB(CktfThjj+`VRNo)x8rN4=bx$xQC|i+8lRqPJ#ky#8_qz>H-eV%E$<* z79hUJ7+uu;JoL)*Cr?4LzgLKhDm( zP{Tb=G!B}%r|DU}s0V*VFDMhszl+fR>b=9|S*}aCJz(*_FS|Ju33xZp)t9 z*~!t@Q-Jkd0#ps2u-lCMp)qNHe{SZnSvnnh2XJtG$T&o^Vb2U3GhY7LKFXz@bBxTcXE%b{cW@KwvaTFDgP>3`?vpysn@#A6(^tUS#FM#$^BNu!vwQpK=+4v|B&FbEA%&%lxA*<; zueYluS)n`*y_NSefwvX@i3NuOfdGEhrKv2P^5eCe^6WfCmLuBD9zYX)c#a~-Ybgng zt1}XwwS^6F)yTayIK`Fhx>s4QyOoMV^F>Ti0o#px$X)yP+mY6dHXe8TYv6i2Zi^F* zJp=sP-_SCF+-=&5&PbH_Cd>IBlYrMEIl*P~hf`y!K)KJ_-fqi7SHLTXgF&XOLBEJc{vg3UPKzgePH(v1_a^IxBWvbkfS}7<|L|ME!nY&y zg+Z6=np{dpB5+UJv%BMVKuCC%-sh)nHE+*e3p;D$?XEI7`QMQ$OBCzD!0K^tC0Qw= z&ilvXZkr!@&H3F!0vXVN1%QWHqM1SKWvl-Dmi5BPmZ_^h+f^_2XVV4pV&K=C-r?RL zVjad;eBMjzjvgF6gLj6blQ-Av#!ZLMYJr3N%sb{5q1t-}{!{*_|iWCt;B{Q*XUp7@>; z)bh9DCkzTzhA{9R9*bIdE>?{rU$V%S_tMC3{$y{%49|w4t}O%nYr9@lcrSBS)0!@- z=dW3Op8PqO;&q*|PMsw8!D^Lc85+QS>_^zC%O3j4GUX(|MR=aqbKJEnAX?oTeY*5v z&Xg)TqrCl(z;vwSWx*3ag7`H5-CG>)R)90x_v(*KClkwwiSL7g%g10X11E=ju3G!OxRB;62QIIs;L^B;;-QdFic8>nk0xHf~2_F=aZrJ-!uHr7K9I1r?X!M{^zT*RcEF(uh%wlf}8K^IYc#| za|OH&fSkHvl6|ZMy?H}NF=^gAeToWcHap;6tH&gQDX#bf2R!T zI^D$~-}5Se$@fOrHJBXXr|3J{Ggp3u)nCHPzEqe^7V&1MF;b=}y%|+7C8! zo|pH2_O1WTUW;7^@#pKeew)vgmWnFDiR@(+%vqj^f`b20mH_4kn>-9qXAxqKxb~N9OBr}?2&?0tn6$*FRz8Ep9?C8fEp7*J{wL-B7~TZ1oezCgEYhY?d2hS!TAu=wcL5s z_9=p4>&CWou>EDg*`huBOrs(}X^m?%6Fr_pHQP$3y|q~;Cw4r|iIN^ek=7b&30IO@ zvgR(EE*d~*wc!J}s?43Hw?Cg@UtghxJ@S71{wfvt+S%f<==~|k^3Ec3JIk|gB^`|C zIv9X5#T90@SqHh^ilN}SDVW8rnezQ~zpQs$?!5f*FR7W^gj6>RDr^HaV_U~LpyNzR zebn_XSaNA*d!Tu_4k()&=E=4BBjKPekhs)7dVX4#HOJC9;DCkOzC+i5=IgBPiKJ$w zIADG|4k;?4&6r!q{Vr%8)-q&C6WB7;bC;gEGNMUOYN5ChYbm!{$SX2kQ2HCU` zT{RupmkN)WgPB}#Z+5sc#C3)Pe_LwPUBqj}#;Ofy(()Cbt&Y;9? z#a!D}+sIme*isRjOdeG~v~5+pquShNub)j1L5!m<86@-f+OdtPr6i}33X6ES2_<_e|0BQ?c(2* zWhSZGV*aCO+%e=Db%wIgjo;CVu(~qXc>O%~NNkl?1(ELpM3xpxs0>1045KtWAV-)m zh1qOGlY!gfJmNgO;BBg2;8xEpR3ROBPZ=j44aY8Fmxi*IDGNxqq}%f-Zr({><_8xi z$Nrhwq|u9-(T6E&_MB&JwlR4fTOQP4Gr&5CTa<+@t6sh@gyIoc zbc;Sg5<8Z?r6q%({{V~5fKyTn^PF=DQ(U@eX-70EcTGcckFjCQBEl4MW0fKyzj(vl7a20KAC@8MiKbH&IEiKxwt8RO(jm z=2k1Z#4+LKX%-7I3EzE)+!Zg|R)J-eK$P9KmPZGVl`ZSz7MzU<2;YHeKnRIjO**)+F#-hu(_(66P7#i>L{=%2 znO{yX7BdGRtdvpBD5qD_EABv}Th1fEb3LTyVO*v(?VS;pq=} z)>?Ne6~a;E!iHiNkL)2oNtRK^T+b#pnCKR|&#ijk59H7ac5W9&S`$2spG*Y}c2-Et zCFJTy4?aAUky;2=PfAZOv$ybnB?-u8YL{Z?&l_tQw)dAi>yy( zIC^*}Q%&ay*Tw95LMLm*a-?;MBws4DbwU2UMN!-ldKPt_%s?gwTihY)7IprgGx$L9 zr6Rb}qcTR5Vun`s1g*q^r)#G%RWh#RX34v9nI2ZSPV+Gw7WU;r@BQmO;`6rcY0tb~ zksi2{4KmRPBZLd8m4q+y!C=04iVsrP7ldfbOp@OuNQ(9=epv>9J^~ zC99N@r6`|+Qq*lRvsObkXdJ6?CnIazGaVccPl2bvJ#6FaJK zg(ww-NtRZkna)J`?i+vW+A{4aNO@yl$1vx`vD4rxCnRml#9Qpsa!Hn4vtr&c?HTt? zdGjAR{_w7=NE!08V{7?W(RMe^bCPi`3`pAdthTL@a30m%rc;febI4ZI zxEra5KgclbSRE)*L2r!A@?4d!=&;VXvdt||Up!|fbyk(?vDufH-uetV>-E65Zd?~^ zVYPSa_jHaxle2-~j_0jR$vE6NY{ubOwKq6zOtnvw{kvH7m{`q=Lmf3g4mW9Lg0RR# zmV?})+D7~}!#7F2srQ2$E!xR|c%OHE-XGFsvDKs$xypy)D{_j@@7((2^_sh-TVj6I zy5GjDT4EweXgyz;Ns9z7vkRY2RxMTRxZk$()AA7g!gjM+!}D_fl{Y|adpshT92T@s zmxbuyL#o!OnK#yGzTYzb!Jah_4OK)$1noT|Mhkfq(MSckIXZ6|9oxj%J{Or!H$73Sd*R;q~H4e8e6Ss}= zT(>^-3ZC@Qo=QX|W^9Gx$rFU4HZOBLO2b6xT)-Lyc;mHuN|Jd@G?X&q89m%T=yU8( zC-6=*c&aGz*yZIwvom|ghyD`y{F)lCUXtMcvOES9mEto~)OIhfR*!t}Wys0lwKDS4 zp}oY)j4$zBa8h>4vsjQiqoSEt@I*c66J5=1LZMkwb@`Actv3eqTqbXLAO4y> zxlF zK#)1GnQTd{mFv)KEvl4fhBf6(@XCA;^KvlDT;Mnv)Lu1`vkNh_c=>my=+ph`#}n_E zN8$UDp<1&%c<2V^m;zZ^c48QY3U;|J3D_^#MR(UfFxp{S;w&ILTHWsB*=YC=7OO(#T850=i~jSX1S|p2}kD%+Q9et&b z;m1O!PZlp2e>CDI8(`MTij>$T9OKm-v&BYT=E*7kGv>buaw#|!?&TfxcRxKm^P{-g zuSS1OG?42ozpUljH~RS%j1p07Ob((JxHVRZRs$_zeMH>}JN|Fg@CHvrW(Uy>CM{-JNh9T1Jn7y zG*r$noVq3VBoRSEhW77_2Z|Y@KCGA-FKBH_&}b`gd1uIF8~WU(F<)$Cy$K@0wgON3 zJKbcDelBXgWwH2LlvGpVFfAkCbR(ysde!u5aghNeRpZ+(&KmM`01zhdH~C-#R?MZ!N1#w)Wie= zeLC*y4|v?KZLLM}=O-UKUm)vAR?zB`ibSxL_ z)OifyXXrnmbu*l(dXb`~`9w*@NOr{It%3Di>e(^0ZdQp6!H#=hs!i^x8soKQ z($Mq+tLP%wL>LJ|X8WAy$YA$k+`*2=hogXC``w+Lh`lHR<$=Dy&F~Mzn>5S7@UbAx zGy^kD?6pSmT+(Gw;l(U^$Er=7S(JOz%w@0PJ5I1@A8?Y7v5PvB0>`$5m!&mKQuk(1 zT`5lG6~ha8ggpM)u4}L@s%fk;>=ITJ2F7VDhB@Yo^ok_Q5$p6751TxMD){apE9(Q0^SF$cR~sD^ZiW%s!<{I}IWKkGlPj}gcX z89r;1_p6!igj03!S#<@`>t-M88x@Rfp?x6AC&{8<=m0VH18mFMXb*A5be4v!(FW|` zijDq%=+A!5xJ!eP#$uc4415J5Y_1YKu-i$`CAf(JeWr(2p~mccoNFwz4Evt;&n`$? zB{-!8p63uoAsJ%)@F9&&&Nayp>p{QOPaR*it3_WA%qW;r`(c`h(l$}N5<)OK9$@fi zuPc>n5_C38TJU&JP~258yzYdKO>cd^n<(p0$9XwX|oGv499FM3z+A7k>dA4UyMIU8FiZc3g&y z{N5@KIyuHPs~X8VwNO-Px4AE2H)Ou2xPi)4b}Vy~nOq?W#%}y1@&V<9OtDcyaUk|q zeF8O_rOH83O3CcR$sAAyi7YFlC{`Hx9#u`eE@>E0K*GFl_I77`3$a z(SW5Hk9Jybl|PTE3bY)xRf854#(}8GOa13@%EiG)k*8m^5t4tR!r04HXA_i5eBzm* z#R#z+!2x!ZMXC@z#gAk;akSh=mmaC-SxG2lwXI}Ygxk--A`tn1u?`OTJG+HwMb+kH zZrLM`kBs`>&ik@x;a(b#6%l;t+_&wShYc8qk2SUM?A^cGd6lMF;}cl=33T|HW;O|E z_5eo@v)yJMasBU>NaQfc@Ra>5o)OhLn1CfFTm}~WDZ%CU9Rj4xrKc@sdKJ;e1h?fc=(ytkAMam)s~;tBheAMvB%8qOvY8;t_P zdE14|w7_;TA@2yger;@3!+Gl2=Esr9jRs4O^+v19Rg-n*2+dAw*cGRby}+^)6t`&v(&#*VNp+y-nvzumf=FL`SeZs-CDqwNZY!Y%LP8v> zK&p)HG{)04QWgCVX z$6Dkma>4tNSwFC)wN3(`SL&IqvMX0`BRe@vfhSB{E+0|tD;)tQhx$4|033Ah#TJiU z&WbwDZ$P4WQJm`YcS{X2?2F6DB!0BH4X-p!V=#Hfm584`Eiy*vC)MB< z+7@(}bqR+|tstF$xy@2jWua+D`Ryq}Yrbyr>pbyvVxlodaW<;(n`EcL3uvN1Z@N`6 z-tPQ-G)G4W?fZ-s6|vF#+!_u-fq_cv**i$~?{;hamlpKp4$&2i&mubaa+}FRtq3GjAD<#jMW1Lf6{M}~yoNK7;4#?r_84EBrFd3bs8X65%Co_s$Z z!qLyx@dG6Meb_>m47fXcX71kX=N-83wI`_T zn(t3~>DAHy58CBH^HNOpdDLFlLI}yBPH5P~#+j?Dgxum~xwPGwPfpLjyOnu=ywW*9 z?{H!1=zF4kI&EzjT742JeC@{OW3N2R@U5u3Kawn6G(dtA6cZ=aA5H@4T3&p*N}Vj+(M6SuP- zY1%f<#bI5CpnG`fd3l@{ifoxoql9)t(X17bJP_=s34keM~C5&RQ+L%U)Jl)(-54|qb@vH57NkOh- zj&rt7Ut_PMPr$>)Hs?|6M^n|u&RAf)3K#S|)auX8HaWv{es=ft9P!Tm5)EGu6*6vd z_SxlPYfe@j-b*BQ&?sg0WPN`>YcpBo(>z(1-5XKqXm_?ic>+JQth zW6|gzZt?pT2$cWwl)iM7 zEqCQKZ53PCO3lV2&)0r-M%CPPH#L9da!$np*jrx3&FD^Rf{X4Kz@%& z@|J{ZzmTdu<7Hth7`Cy*{X!S~{P(=aaNWt3{uorC+pk@9PAlrqh5!ZD&*J)8n{Cwt zw6Y{HnuVlHT(qJrI)5o`DN1Rc6puqu9>;NvoEB`Io3(_qIoQgQ@D!EEoRZ5K8Z51^ zTfUExTRMN?>3fT@S`FCfUEY%Uj496(>EfXJ_#`}+^7u}t^t0M|CJW?mc#z{_)>lPl zRV!oUi4$eY%>>o^6196!4~=DI&wwrcjpmdA*fr~q^{?i-b=6LFZkmJZGI(+|!HHzS zb}T|lt-`iGujd~1Z?sP94Xg{lt4ceet>?${L8~Y3du!`6_HAQr%Nv$cQd=H_8Bl43 zA5x@Poskx&R56BlkeBZQ;J+U3yD2|2bUkvvGQ|{3B9drTXy_+O$hyEAkpgi zxY#$AP|~iti+S1UZf4GnOOT4sWM5*eu@=l<=`nYDv7mA?(3$RAWh;y_GD-2oOMb~` z@81eLo5>wVOXQ*yukj0vdGU}pwZFf#p1vQ=?_SPuKh0i?jK45emSKDnJe&iZnSbfZ z^HevfFX|3{v3hf4#}mfS(#5ZXQOIc_d|cg z-Y^__<19@d?Pl9{=iF=a%1+0cx$8?!9J$GDL%<`b^u}DX6!-q<eW)?Z-02NzwQri1Bf)S3IYaD%!ABUq)*X0 zAEznsp6@Iya z2P}5L3aH#{!fb)ZFSp}U4#!Mb6|i%K#?`q=Q{7ET*sX7fAC@t=53&i@ibR;D5-;x( ztD8^)aKG)^%qipj&*b9emA(S7o)r>)my~G5C1eMn@q4g(2ZSCtx&t;{xP)jM99!sOa+*ADuE^yv$ELA*Bw1t+NX-85>8UVhrT7vAm>;@6p0fUoaj z-R?Tt9M#yJN?T$B@Jbt4L73{|ChA! zIR;L$`s9>3rGW3Axi&SN4`cVkiMdW1z~aLAoFQk`@VMpXC6NEsC!iVAZ4!EB-CyIR z^);^7)xJmKKlwZ)i>DFV9qoKkz40B?xpDOM?-X*{3BA8KIvqfB3}*23cK}}lg>6TLj&=pMn*QejZQM6; zR;Jg#u(!{>|0T%J#d?t+5QiGX$5^)CTFv+}!~g~7tVl#(d1DhgQZZ}5(AEK`8vpV& z#L0yx8?RPnzpl>!h7o2Tf{wiE_@WWTL(~HQJ8O#`NN`WxXN)ZP@rEOq!B}2ay|K~~ z%SuIFL!_m*VRVS0dx)ahq75|)`jWp4WCVlHeksWZmE7<_lm*z18o&q3VAiI!>BH3`ib4yHCX+6LPDUo(U?aU~G3!GA2sbT8 z3$qRuDgOn|`wk_a71~Qhrb#E2Dw`Nfh%Lk%Y>G>`HjxkeABlq~YXg+DX`RJJEtJ-a zM{ly_5m88JJpM>og^i1VoixWNX;>d0?`ZC}_vfJ(D$UPEmHf%OIG=BTSxqgm9HZ}H zJvki)k*H*Om;FSvYh9 zi=YyU54o8x0?q?Uv%nH=Hk#WWQb~fBu#ye7X{~H6o7j{KQ(}%xER^ce*0h-6&T^=U z#Dq`Afs6mlOta$zN-nn~XIU?TJln!b4%LNDmGXd>MhX}f`dG4G zk20<)z3MzRt5RJUh~WyY`mNB#Y`%@BfRvgCltvSZw8nLv3*M6sI~H0%hYdx!bqSnD zbm#FQ$I4YatV8qRYbm5KkruPhGT|8eSe%Y4(g$$XD-4Osdg3XL;T#7 zr#*`ar|{(qC`cOp-2LaQRYp2X^HzP>6|HM|fs}6={lz)$?vwc7_dl}!cK@o6faT|nTqkj%LB-$t9Ra&@+mTU;!PXLimw>m5 zNy1HQZY`Rg5A71h)}AHvv2@Z2$WfF^V?%0^sQERb$0-mPO!^TN?2I5uw4=kFY>|ee z`v>0oFprH_AD%NsGY6Mj3}*}o)nz!4R`g)^GG~(9+9XOeB}$NJ(V|Gg5Vz+%OUqD7YGNMXePHRfV1rK)g!mZuw%@k}A$1PNWae9SA7I`bT! z0!FOXH(^iFx(A+YD^_IfOH7E+3?|HKmtIPdno%&ahKN%Sc2dbIKT;Gqinv^oG+GjE z8je^=wD>;_>*!Gvm5YX5q9|l4IzunJFyG^9Nn=%_waNQMmIUWE14YM4hdw2W)S5?n zdxUyUg~qA7NgP6t=?$tVRki=MI>G-sf^6*nYz_I}a+_&j)JV^b23aNN5NZ`BgbYW5 zrldZ~Q|if4|IvrGEPn_ zFBvMul4k&;K402GFq&N(I7MIg?LVfVF8{S*RZemVT5dVw9&>Ps*9hRR?A0EL0O^pId!0MRh4CGNQ6Z^a{0mZbg0m zeZ^3;C=uj{;w&M&=>J|K;*lb5!iH=mArv&QBC3vHUJjwATEESpS%vn4DZ)qF^!QQ) z;urMu+}y`p+mF#Eca;3*=Q4#oO!rL9v%4!-2625VY3iZ&02)O<)d5kNWtDnGhvM0g z9Jf=7{H8Avg}r?vBoDV&6BQe`*Tb#+HkyIg{jupY4y(e#+Wh>q2#0QcRO2s=1b#-<3>b(O4)=UjMjGXKo*D`~Juk&qy6k7L$!&Rl!Gh7p9-uy*hZn<^&2tiv|Wv zLUnD0QDmxRyerkRD35K}Q9IwK2g(L(aU+?JEhb8Dm-O28wXHuw*sX_G#|vc=e=|Li zxMBTecEcL~!5c=Ud-mn{-MPM#&bZC8Rm0@wlZxDw`GVZZO^f{isqzk+j~QsK)gV?y zV4gjOa0aV>si*>c`nm2C?_oyPIz_9N_V>eRt8+!VQk2DQs4) zBU$P9xJeO?J(lek(G5QavGz06HF28Aq`a=C_+Du!`#ySeoXKL1tAbr5dB>o|G z5Y>1f#5HX|k1A5NK8qcS$g@nKBxxKkP8Jcq*lU~@O2&5@I%)pdrZVUSovvIesDc0R z*wB3~OzAGhAVU4;7qtV*u0?=vmggT|)eI!0G-pp++XJdu65aMK^9VQ-<&k8sNxQ6a zho@ya#?L-5*!aQg{1PVKOizKg>?yfEwb{93ld@MfHmRuyHk8kd^Z;q z90YdSl`*Mmo8B@Hm2o4W3HF6dy_r+VF*zD5K-|*!zfW-6a`}PX&vIo z)z5fn_kyxT!0BSEZ=>CF*NWzw^mTWA0Pk5%R^C{Q+>V$5tta392-!aOc7M9XwE9AC zdBaa~l&pRQ@rfEmRYOfHw=OT(W>_=`aOaMyYz|oKpWXnV0spt^fID|MS$RJDkM78R zrQ|Rt0S&%UoKfPWs@sornN3NRputkvDm+G_gzwid(6O*Eo_D~tn`Ce~aNG7i20T96 z-NPxlx^Bb4r9 z-G_vhiy@pRS_Jh2Y&D0!^?Wn81;cxd8~0m1t>ho;JkBA$pC!pEXzGL!g@ah+T#nOd zqsL#bur$Y2Z9o(e$MZ!lj};yAN{TRw>!OlWLlTk@Z1idGER#?SrL5mkU&j0Atr@G) zNLbaC*qMEZN0O>ZW58quy=aFtl#9kE@1<3l*sZ$_8A;JoUZBx85sRLn<-;*z0^ewJ zM!N*5{u(TK`6)Wqj=eyBR2xyJ8vH3`ICLdTu><)L0>ih;Uca#GC#@_C79y9#c+neP zgVc$i!`Wv^Ac*IKZ`kz8~8yHCz8`{G{%*!$aym#H)|HfbXI(DK^P8rQp7^T%IKdstYDd2d!m`*Nb{@1p zgU=20uR-`1R}TR2o2`fNHV9qat-S55;2xa+-QaL_w)vk(dtRuk%Hd*@Vc+V+Rgjm~ zyxlwAZIFMg2I|bb?EpPA<(>j6KT&MmcBHNJ6|7ZM0Iaud2mlyq2e`B6?#3Xy-2eb| zBoJ`-&;Z^YL!$k2)DemPSNm?_#oR0v0B|2&L0VGV2e@nG?@BaD`o!jpk!By0071X3 z0;p*qx=$ISUlwI3T|Ozys!hqRRWUw$iHZNcxVJ{PBKtCZR#?}`E1E98I1o~ZK*J(5 z0pYV8`_*i_gy&^R#llDs?a6 z0|!h`s`=%pLEHc_h~z!Vdw>vtd{`z70lU55Uqbk}ZwEkV)c5VpZ_9uoAPL%u9%v5$ z3JI1jenArjq=o`ss6UW`qDxQ%2=W*)0Os@nGB*O5t>dhKA19)QNs>6@n=qlA!`}0` zs+XJ8B2*SvEz>!wW8$5N6*d?&W~{&AtuqQYJ(HpG}~7p8tV|J2SIFFRYR zK&rekjrX*s59SbGW0G==pD3O(-k;o`4jD-5KfmWET&XPlD27mWGlZ(KBT`3p@>CL4 z1fgQ3a+-nhaGGB3fea^0oE-^EH{~-gZ~AzuBrYZ29e?IOIa#%@0=O=*#Ep6241`-0 z+GTjEy}i^Rxl+UbP6#ls7rn6i7E5tCDO%j2J%?Iw(qb#He2KNCm#UnaBELw%CZ<)j zw>v^LVLQgLe~s|D5Zsz$I8HQNbFESzQjb*XQ`C!36aTJrGx_P%J1W{qiZa2{1Zbcw z&19qC!e6#uUqYJ=0KK(N%vE_M@X*F3_aMB06Pg#=lseiFnS2T)CylJ5SLEPKO^r(v z-_jJ|tGg7ZNpUL@DV6qRZ1WQpd#vWyW)S#ZMh9%jtjN?+{PJcb7_~(yw@+;@c(u0E zACXCOpE4^&%7yI}m%G>^(!8IX!RMd}#;cdAV77mTyWK^#(TGfND3aR~;-crN&a7o4 z;V`z!Tu%4#$ne~xpIg}Lv$hP`)PV$@) zZ=~!fFAP9_I!OcR2~j`oEq52QU+Jcuts2YLcrPa)kXD(&adQIlKTH?4)f|JzJFi3^%ZXq`ycPld0X@AF7%wlHvcHCAe6)VQnYo)_?qmaZ!aZ10o|gs5F?HEigk^*7!GrqrzJ3 zrws9r(fEKeRaWO<3)sUT9vKt3Jg_Lj=<{f&M33JAN~=&W;XMWBg9BVVJe{_}o#&z1 zJ3K@Y1v69qvt$GJ+0*#PcSL==#`=G<$s1;}F>{L}6soZ)BGC||7I4*+qoNmMFJMMTbJ+4mqTy6J8e^tX3HaKVDj^) z24gdRUj|I}C2s3!^N$6G632InK=24nK!@b(aWHG>3mffZ za!N^Aq@?|c>ZoDknndJxIz4F(ibE4fV^`~=XL-sU4{%b!(_dT8ULLd~#ND~`wfD6b z7A*(q9_2pL$&zByHRE7RPd*udbM>{%>RZJ5RVPh8l&^r;YYq_le!2h+hU+B38Ac$g|#x7Cm>3Q1uxO*!08m5D>kF0hyEFvdk zYYj4|5=R%4OPe%p2!!2aXXDNkUs-DjJ*~$PD5#Ro7xh)0#dXkF7{Rc0A8gf&@wVr} zzfT<%l3Z5I2|dgPz5ltFIt5iH)nr}dbvMvYYTV(-%usp*NwH*IC5zBR;dPK94TT3S z*YZSJnE6MRlT&D%TzS8x%iY=&O#K{jtE3QXQ9=53LRp^QvHG?jm-~QXQns9+H;7asqpM?}#w7$E9=feOd`9I;Eb*eoD>a3m32Rv2Pq)MO3pE#ZQ@r zWjPu3UF0dmaRn8~iCG?gT_MqA<}6r^NlMZdC-=gg5DW~wZ&imF`=0s=dsE1X7n+5Ub#VaAX|vN_6tH|YG(+}n9jRbT)mjnW zS`hH7k$pLNxov&k=*P1(uD4nE#gV7@A~*vfsh`54pGnauTqOgJ5`6fpkC z#%W`CMoj~`2T>*`R5-?4DW@ng4EXHzCWw3L0iUbvQOxSLb$?B~yH%mlLywqy;k=iJ zZ$-u`^RzVy5uG49mI0L>k*MlRSBE+-QSDxMlkB;&(nAc5{a!j!VtB!oe;>?(Cc7OL z;Aad$bBpy1TV0SmK2)c2+W_u2TY}-3q{{3_fpHbG7;4OIK=A7M`OnNu(CJI z_fB%3y8H4`MzXr2?6cFBpw=gDD_i%KQIg?Aa-NFOiuQ*2SKhnRg6Rw5)U8bUI;V{B z3zcx_vnQL3NO%pY%*)t5R0Cw$s5}{-2iv1|FYJ%`BI&hdB@3T0VV^KhvG1>+rbZZ-4Q?GdMKSCTT%3Oik+`q~_OjHEBB0Vf!!f{T0Le z3_S^gwM+hh-jahYDZ(4h`&3kKYP4B z^HmyrW~^+N#TY)WnAqek(?i6(KmaP)^ET%&5j?4aL(kw3&L;~s>lH{{3E0_0Yz|X~ zh)n`Yh!WW<4WDlj=?T3Y9ogJ$@+Owg!;@UH%}8R;T%zpxO35nvz<37l*rIBXC6-dJ zbv-1~rNzlhS9c8gIy?Kiz<;XTe^X=9F5#t}T4RCQ9eGGD$yfrxXvagwM5&ImYrfJnB` z2(O#gNlhoy)I`yH%zk9)^Rd{fxlAxXQ6K*26Ek-SM|v8svjetJ<4q9@ktje9&6N$O z=wL3~I*%7-h2?^;mfk?HBER0lt<8rkslM~Py?CV6xa%rynLDM0-!3Mlpp7q?z`r7Xi3o%ue=_Ii@mAlL=67Hf3I_)v~7FtOh>??681E`d+^bJGBxJZ#PC2;7do3e3^+cC-mcQDg# z-fn(=O$bZwp0SbX5^|0kDcZDu;NkDk^=g#~F24ICdc+2a;ezgLHH4Ckr-RtOV}W$P zg2jf2ab+Ya^vO>g8KMdpx1VpTL}LjEzNcl&pMMhiK7Q^y-A+BJb_@<@o{Ps$vqE}1 zPG|>9k6f|?OggY=CD{Gz+D$n$3=gd<4nI;C&44*m zkOSLyO3f*?4NSZAhv>kXF0RO@D}rd8FvnHBu^##G&(xT5kMU+~&($44n~B0O%+Z*< zP+dqqGoE>Q{s?E+-u^wWo_`Btc#@Eh$S#xV|G?`)OfBkjoXII@3rS2CqvV~oe zxRkvdT7$|DLWmYaAkjiqByNTwdJ2*F0tE>VTSApkAnF|qAwlsO zrRgV{hh_BTq*iC`$1i6h8>bo2G1TWpXE_B5Yz8V8vvcTr99x7DciraoYWnp%k7!ZO zT=78ZuVdS;>ahN$&W6`YYfRgOpQpSQB&A=)al4}|u|AmQu1yQFJA4PsjP?B(+uT<8 zk*qvMNSD3BpFib8>dpnOVo#~eW$u{!lp~y<1D#&$91Z$z)Bl-&i5nGZfvyo!d{%Jd zxw1@?+}Xt$MZJ6@sC^7S=Y8k(sGH8 z2qu^ZEq_}-H8YuJr`XhevbBs-iwY?Fz@~dU^JA}Rd8n@!#o<+<7_D&dUKZd`$$zza z>CSf+xv~>eaD_Fa8e*_ z<73JuZh%lz8j{}j2go~EL_tPXy7H+R;tuxV%~1KCasTcp0PuUSt^~Y=W(faD)BKxn z@s4W|_s^;S^8Yu|=6@IcO?+}kdcyfHLI8llEv)qaq-Fef<-cL%I|%vj%5jK(EB`+; zsQkO~-=ORrAdB@k%gLkxf8o*pF7_KnyMxgFF2*7Q_zSoFE%qB*`+XViE&<`+R;!e| aJ(d3fX;W7MW86)|xcwF0+E{3C*ZVIk93-Rw literal 0 HcmV?d00001 diff --git a/artwork/ic_launcher_web.png b/artwork/ic_launcher_web.png new file mode 100644 index 0000000000000000000000000000000000000000..c5cd3d73c91c632b0451c3a00d10b9930b9176ee GIT binary patch literal 21325 zcmeEug;(1_({2dvR-ix&6pA|(DDG0cxVscD?gT0BZIR;A;!bgQcXucSg1ZHh-1Pmv zd+xda!^?rQKgecwc6WB3XJ#ivtE5e<^N zhP)J@YVy?~;ujffy$?1jDgYM5GX?-D(hh*~uM6Ub0`UU?AmEuFvTpjDo_mk|!C-eo=p62H8aOFh9B@P8py(3}z(9PzNR;^Hqcj*J2|$qmpu9xF z03;w20FVfnn2<0eBwr_5hyCk@0vP(A-roTzd3gy#b^qxO47U8wyRZ}iKy~#Y%M}^` zkOqL%&Hb+dqS6D9m`ZkQ9sh|725i4XG=Pv$qF}&_`Aa?ie}hW^KI8mTLqZZ$0)Tbo z!$$c}2^zqAG(;njmxp*n^%P0P{U?q9@Cx~#e06moL2#%L)fgH=+&^{yHUCxjzpMLS zWBBh;`>$vC=XbfZradiJ_=!HhDxMl+NgE5yA)E`5AVc`rRt#e4+b{`uVZeBqMO+Af z|7U4!IfNVL`Gb*8_<@FDSnh5_LU!6wK?-dhNGyWzzf`Y=t-eTb`PuZ>sE%`yp>l)2 zyoGqhB4EJqEw^eh%J{?bp`Hz#qmz5OLm1{)s}7vgRk;6wczvpyJ3BWRFB}&0`;h|; zQc_x21eSPtbCr+sasK0`Fv5#()(#A_V}O^J3XDH_YO&!ttshI}ayuP{6d}=r8``)! z830JrOi5s3q}PWUQwOp2uF$6o-)S&@aE4bA8FCLg55a-Syk|6GFeMspWgyTgB8WF9 zVro{WIgywHBX%8r=4od9C8t&)V6ziIRO^vfgUI>?3MEpl+s zObcZ_L@^Y~|Th*Z0*i}|ZEgDq%Mm#y+Gy6hRElKhXviyq_ z)`i)dAA5(qS>|^}R5?4!x!O5hKi!67t}O1V-}#3WmowHKN7H`qo?GTs=0YaN;F0`r zfY^j=-hPZ7l-3sz&zF2QGm`6eLWVgWIf1`xZ|$%kzmlDp`5y*-K7J@(VN!_`A}*Zo z{#}?a^gYrRlfL9tkd*Hpvog_5U;KG%xi01n%X(_7yH9A+p9J;y6yF`HfAe#tY}|JtgMD4jVqVp} zVyWFpNCM29Mmolx&U?SF$71KLL&W=~(a=ull<^VlVOj;qT+p>TLpkR!-DSUhvNHQ{ zdO8t#{`v0o9mN5IzTipoXz78jPPSo=pf1IR2Iey^Em^Emh{C%P1qlE!2|$$bmS(zP zy82I0=|`96JKYI%7YFAco}OoY7mX@B?F8XMNWoHSqNwreQQ}nyHV_mx%qN9LJCjG7 zieMk4_$=QD6)2#dpS>gbyr5-`MwyNk9lwIk)v}QN*CQH#vP4qxdYomlGUn`6trLUS zz9W4KW=B^rT|z>5Kx69foy;*6Z;!s*mlt* z9f8M)x3tTUEI$a-+YS{$8sM|*4K3hzeT$}|JM_{n&xNz&D|NFA02VH*ZcQqF0{^A% zPt=RnQxA2AHJikCc=JVNxjU{*zGZN(1p?$fL=Te?mF0;!m(|yiLXwH;uAbC z%1TWgpwf+ZXbySg`S+SYu}J2%ilvOBw%30T52k+K7h zFPXynR>#Xb5pOf(Hy#PYzq>0=pa*??n(6v8CwA%^(h01-tL)0p6`lT+k93+WQ%!@Q z^hubCMnLw0E?a5E4&Y3emi_u=*lN7)wD&_>7;VbeVBVm-yNxdQ92hP#+sn3s@^s#3 zIU&aw(oLM>P@Xmfgq+;D$d@}1az5|K$x?q*y)Qq!_jYM52ztU7;sIt0A{F!Nx9wj~ z$OlchO#@z$7}Elfz(fki5q5-7=V;0Y+T@+BPXw=Pxc;Zm>LlAs6rc$rNa4i)Yk|@HCW7LUsZdF8 z(oU?iC}?-d5=}yz40C!(b{_Ubt>oWS%Pl*;be7~RmT3siZ4Y05%A|AopBX#(e{d!2 zA(oF5Wl$L`?5ekQfI>LaG9KDNYY&><9&-1KK@U^Egy3RMpCs&q!0MrZZJHz$4SCQT zOxm+~hg5+R+b_|(<1|`H04fkbM7>_V-5FuNA)nTrA zbfNeb%>UoADV=8KdN2$<**bqNQv4M#Ke9kP#X;Rt_Rb-vOU&Zn*kzH2ll07KKhBX; z^jh70V`Cyavz-q*shvtKdKw5(l(PT=cQOkrwM;_wY6ZI zdAH%9rSGM+w=R&DXfP0Q(;rATNcq9rM$NLR*>f~ZitoN3L?<0j>1n%R9N$*$J$P5T z80c5|3Kn{J{wVCHOGYux_(w1otqU{D9o@?&$m-@EXRI)j6C$h%-FJC+sH+HhV8Wj& z>-=*nUG3{)*P}rSv6dj~N!Yqk|Deyh3byq!{8SHa= zF)f@puaAOHsaTT3)G>K@PD0uw%(Waj`ig@Q=l{vU{l0yF zQzvey^LoYC*?4zHc$Hc_aO&s-XJr=L%P%p_#ig_h%ls$>_i&J}{=3?~&ZT23BgE%d zPl$@uov!wYw${az5#Cf;`%&Fh*)>H|z}QOX%*phe2Q*DrO?+p3wnFeZ5xH5^s@>(W zhsc>&kd$It^W4hmvk{Wj1Rb=V(e3FR+si81us7^=AU71hQ(dUJORZ6rlFIM&iRGZZ zR3`V2ZHV%-yXnShOU2dMBJsY zGDc^6a1BM0p+3mhb$oCQ9Q`KaWtKa*{w z8_Rw|W-9$7dOYb~m$4e9xS3v=7OnHx%p0LF0^W!f6UnlHRyiz)j3!pudd8P&p!%>= zAOLJegkvewqmZ!x4f_R;-aD$!jt{0W(@*ky->)M$9(QM_-;v8(U+_t>C)Nv{QO>O3 zPO>#qlH~l3d$O@qbmxvbv3SRSBk|qOTB7O2zWXs5+iSle#zRfzj!4~tE``r>jVzwwrWTZ*wXH7M=w?D)w{;dVT>tU6E}PKzG% zlh*k(WM57puW571@tbSK9dw{}!TawOmh`)^Tazk<_uiZ=Y53)hs*e+ycv( z)%H6b7xqt_i;;1IBOWK4+gb6-iuawd{Zf(kVgd5k!LF4I0Zf4u?3nqM`O_K*98-F| zHdq(1V`Al*XQp55y5#AElU0TtSZrxuG4hR8l}oZX2IRO?B)! z_BL8id)gvzT$8`XDX%$c?@HaM%l>!P=$T%uH zckr{_v?CNq1s=so8p8HO8e{l{m|{!DayDMz_tTCs;8tV4vz3Nq`nA^QKZrjTWME6{ z>x!XtM47km{Sw4xO?&?MqhoBNJW?~$zN$;!80A7AC%3h}byHwWDzgbb-qVo zEe=JEmC;l7-g5>qcMb}TIqgQwu=z1q%8B9EO9qfedHWdGVo91K`K+qqjTE(a`s7aBe z6{{zV*=6)t2KmR|u#!&>5&k;K+vZ*~b~A~FEaO_5v#gm)bi2a4m6li=yc558*+}M!{9E=J2dC9659wkcP=&5Beu9ze zll!R72Dr_Y@Z>18mD$;)6rs=Q|%dUSR#o(mw9iKT>SzHY`3Xk4Hn%q5SZ~A!o1t;&Af>%0&IRha*Y#c*X496 zgcI8x4On#e@uM@Rq*k+W9*(5-`+mv7Y{!CYoCNAuYY*!qZjsDNE!PZFv4E`t{>XU( ziC1N5zGya=>O(SAP~Qed$hDsiTUhmEY>`OWD2vJLF=NJ<`0F42)CETS53!|4713Z; zM;r2%XN^*~*%phqGcn#b;y&FVGN$dz?Vol{cs+#bU-c1*$MM!8mx#-k+nd*};;<>U z6AGBK;qKSBvvpNz}AzmLYRZ60T8K^;Hr|;><*!hOB-9c{CgTiD2nz0l;qwwx3ayvRI@sZTvg*gMv8G`U^~rm0EIBJFa`#zSHu{}@#YdG1tlP2{juJ=N zi;uW%w?`){y=Tv{_z#0P6m5c0hmmFLgb433X?^-K>w&*Y9%b|eyWb^p(wwbUDm7i9 z2&yFE-d=sJ&_^j$TE7?td&Lko?pB{~9|{|rbd@<~f~m@z4+~@}Lgk7-TID6?97Pcq z9t)Kq0$ni?F?^lEej5bQ$n3~8b9z1z@D3Qfn_g+FCo@G-xfgh-?vU3zh)r~oh07!h zS-?^U#=9RPi$m0qtxQXi*vQ-n)dg?#?&dHyg5KSuR38w)+EfH}cO?OCdsWWl4sy@a z+@(lR0is589H-o(nt*=Hd875K3m14;{x?1nNzDjV1m7ZO<)W@c{=L##>ERF(U9T?l z+#LOZhLtrT-eE>3yWYk71GFS8AX7e(4nO*{s6qg0X{0nQHR1q1UT98L;s{@6o2w~x1@glCbL+hTJ=2z8GaQ)&$jP?+@hRJW*s@4sm1G99szQ0`?pDobef#@4m#SF z3fq7=3fsym9{z(GEkZJ;NbHR*EX{4-F5F^nS=QV5DmB?HT#u1f9g`hREM;@v>H>9W z-%8q$qbDji+8Nel^74_h$$T(Jm^0Qfyc#NfnGvfs z5LVAfK@C;MSakEsgt54agUyCVl<1ypWW;wbBdr`EFnQRAPL06oXa9^hmduFU&aZ^i z!8$)TR4xY&-uOSl*dV{Pu{y^!N@8Nmvew#VyrHPM;O%LtO%Fj+p~!+*us5wO<&P@* z><_JFmMqlJC4eG+D?cOJCG|LB znzG&ay}Z8n!!9GNuE9Xy;E!cW`P}mByqaK+qrJE~$xyBpPhx-Wytd8mnBNbz6!bCc zXpwrJ(3ukNKn0w1Q-tX}LpVzJ2tkA7b$izVC`^YJ8_r}=N%_QYH$Fvrow=GjtXbSh zEX(13bp_9ANa00r#K)QQs33CXcK6-y<+^dxzRDkCWMY2~#JxmI-u{*IG1@90L5{KZ z&MMd!eUNGTe@mhc6KKwohAU`E49+I3EZn(`O^FlO`$K8m}!mEZ*z?V$lh9>qJ z8smyAOUAAh@W_C|tHS?Ohir_>(3FYb#?Ejw9kTTs>m#?Wly@@n3*CzDngp%;)4l6# zm=XKoh&YKehovmrcN5S1t*)<$&qw^l=SoUol6Y>9#lOk`Fjh!@Ra~f~M4m1RI47l+ zY|t>d<4>F`_6LA20!jS~WNnWoLS#q_2@!P&EQqz#YMyQ$LJ=t_ zv#A0ez9Q=O2MBs(q%dd_ygR!sr`KqHCr0q&Nuso%OD}44#sUgT9*c>y4@a)1nKlMC z1Hl|q>k0hRpLa1qv}Y}M>YEAbB|1AC@d>2b!(V}6&5PWlZ2`)+&VM;5V|E}Ch)Dzn z$1&poUx1iqXBu;ePJR@xcZhSQXz%kOk?3De&zN#5r0La)vC*2Md`3;;1bL1bPzAN; zN1lq8epvu-&sQEAB+}X1;)Xl5W7pdP27mK6b&&e8yQx5aO*x!gdz|)2RR9@9KIr?3j`x>LG%Yl|9h%{&1cDpW@d zY1Y!l3rW*tD~dIxUVAWa7sS$GXYWAgd zCI{m+)QiGXVgDPT3UGDUWTo>owT!2_?QY_^^XuH_e1|nLN5EzC>qo z_h+m5EVrz(K|!@CgLED;o;RrSer|6O)h)mzT=AQ3EYJ;pHmz0eft~ls2S)f~v6%nt z2qV7Q@$C6rW5x`xD9=ojHIt7fxazx-bjnqnV9J1d5ntBqu-2hj$GgD6xRz@&D%W-F zsI5n`uG=vBgF{dJt;c%m4YyMepO73DF8HN+1R4`{;6Mh>4`j_&85$8tn=U{EM^h)l z(n}!1+6q&N?T09om~q_i(yrKSXo)`e#_nY+!Ll)Hd?fVl>Fl*(b=zUlLVaTS+yHRx z;W{_Z9B*G-p03WSsGUK5$%p57HBq|PI{Eqq3e5pt9GAEbKCpB)0G9%H>u;Vt{sXEVEzPavI`F8(xEEx7x84;$I@ z$}i~@d0E;T`BdEuH>3u+KV!iB4Fi&|PNpo(qrs^23e@qJM4qj;<#O`eAOoGf&v*PJ0E$`gg+GsH3@>j@-&65Yj^Fq*xhOYw z7+xq~qhHWNj``+oaoK&g>q+StX$cfYbJCX;#z5fbh_lKxzU2u#V@Qw>cl-dWa4KuU^qJn1|xW>dvOX2;Q_?_+Q#_vIL{q_aL~&S#-tga zT>1!wUSOe1(frAK8O5IdTOMUzC8ztsW3k>Hip$6*?%~x>$~}#aDo9`B_Xd(1VW*5%UUlP1X#kU04&b=By;eUGt`(~u?GXLud8Z(+W#KpGE|Evj=|_#le@ zbOUwt4O;pMBFJoJ!%DMA!bkDSjX{*T&S zY8xnRxToZfcd}7C?FF0{ah|^Tlq&#~p3w!2+0Ho!ClHZ9?Cj)tT(HACq7f)SWL{U9 zEHssvUd$iZSV?e<$tVFLd3BqvQ#qbx6GWvP4r=kdur7>{^vyx^zWR&UcVhxCaFs_+E0E4PatC^mcJ(ngQO8@FVuH5jrP( z9LmVaika%=s)&I* z2sVcG+e_pT13N3jex%reB^d*Fm&kxgf@#0a)sOKlc7Hn|J4m)|I|Ty;#US{7*eFO! z>{v(|qXv~a)eCp=C%!?ug9idmA~m3`{{HtQlUafelj|)?X`JF$C6;*NZhIFvca?$$ z0-gm-KMktBabP@{#y2=dq3I*Ge7MfL)jZRmgxUu^U3-Okg$b;tI&Jy94F=QUi#~J* zdRKOwpB)H@Q6e`PROa{%#!i72!Z|^EsH};is!cE2F*2d^HyOz_83@{8e~(7WxP@f1 zcZXhEJ2MkzSxCIQt0w;VfGZB^33E6j7yV2V{Pt(w%qNlNeKE-WFV5#Jl1S>Ho@0)n zgD3Htha`FrmF`Z(NKiH&F>>)d&Y_bfVP$Id>R!~MQy8>y*V-rofA;RYT%a}zTv*$>?Ys}z?z<*qBar?m^3#y!hKj;Y zV$MFtsZe_8e_3b^7itL9|6T)J%>I04EZpV2uyp>s$7#?donz+H8h&$H4Z4lodOB;{ zg!kMBT=XHnT8Zr>emTbDNR0lr#7^!m4#wKqr)6`qx3^#0Ke$gg$p^!S!yLpfXYe;& z*QVNtpnRgO`8N$9_@BM=W{3?IK)(P8O@J1Udrr!7k(h*e_<(kuBuWODC z0letG*Kyg-nAktd7QQ=K9T7X_6@28(eVkv=4T{I|KUxZWx`SP!Z{Ak2b`oWU{}H#7 znAGk*qGJHp1Jfh`74AXFjdm|?yq&k?a_`=7YCy(v;gSBjTbtC0vmS8RRPIx?OCa6* zY+MQnA_-QuZux=GGgd83lsxsbMyJ{~FUR7khgj{vgP7`dkoU0DkDRJUQ}L(!uFhMs ze9dX$KEW)`+U1ep}=flX&HgBu9 z?-QHJUa-kyVpx4aa9p~CU~*=RSFb23H@Zwc^6ve+9^sw+XS(=j+;z71x}6U#(~tQ` z`FiT;ks z9R~{?kxAhCOx7LjfpT~HI$!*jC=kpsecyFG;Q{rZ%dk4k6~8VmslBw3ctQRhA5kM? zR`bm5F9f`~6+^#k0quBh+*hA%PzU^~uh24ZKi}|%9W73qc%TOJvj3B=1c=--d$hds zK#{{AHiXZ|!_Mv(Go2Ndx`ryd?oU|@ZMxGAI0spcl7}T1@bQ0$`vr7R-V)vDu z(jWo_GCcm;{hS5iMi=}Bq;r%n7Lq$=|N4$m*B8@BnuALzYBXpJL={X!OPFARa|FJJhM zXJ!DPjcI4~mp_UJ@oK68qpQ35=!^a7D7aA}VP!Bxuy>OyXyX_O*f1_#I&M8ETBg2T zn1JNwaTaaX1{%({69hByFi~S5VRTE>SkBI)*gv%Qtnmpd$Dbi70z}Z4c%J05_}s3&k<1f^kQRD%7l(8m(9*$_o$zUJT6n zn%e#{;7jB3pETmlEWKHO#OATak3$M!LRbkx)hW^t#R2z<$xLx^!#natHlya@;WwDT z75Z(#(mDqQHdYa&Et2jm-<1xaUX73I_cphO+qI8Mk}bFhsO0yl#c)XHcgkoPCy9J* zXH)-;BW;W|QH+0)vg%+Z;8^sJT&23GI!c>Ddm7Xu0<8#FY zxaMRi_rJpKmN#6MgUU{<9W#Dl^T=aIFQVccSOJqI6GR$Nu$>n`gBT9EC*i{yqF)g! zU>^Q=&SZI#N%YKpU+_S7A{b2l|L@`kkY@|iXTgC(QB)>Tc>IU({X%v8@6o3;98rGM zzAyAR9iSdE<(ZvR!t7yHzUJ%o&81==A6 zl78x;z1O^}hGoa5u^HwNj*^+&L|7(@znM=zafI*EJ!^H4+lym4A#lECp+0)i(`*(R z0hM{pGaYqSe>@eYnkxp~NQ0ZB#j#Ah%(=A9eOO~s`qSsERc-Qp$mmjqF9Ww-Wd<8e zPDKn%GC#Q4{2l1q1|(1*N6*qt0RBb9A@F7R2FkE5@v0U7Y&e{MH>3!Pm0w>W^%*ex^zqubw&aJ>0RfTtD zsUHf(v9r^pKpw-mr!#B4FPSN-1^k2s>Jxdlh|9)T*(M2d;Se^q}4 zqB4$~-7wN+gO8Ijud#v?$csv5B2_>4FpVJ6juLp;i=y8S1G~V%(;aqx{Ih@Pl@8dG zOgrI&P0wf6UGSb96%rn}Ax*ii%Yi&bfJj2n ztcMNb-zkZw>$)tjNsV*sGYynWu_`@TY{a5^85Ix{#? z@;K4hVY9fzU#$NX=`uy~<`m>enzXMe)K z>HtM%O^ezhe3YQOUgSPSt!Yd*EP7RjU0$+68W4UaM#v7BI;UiPmr=k$1vG0rh^K7$ zXxOgu)aI48?v?RqVmfXsLA}9E)WpC0mAi`k=t>TOS^|j;E-u?|by7=z?x`5uxbDqQpsgb@^G%X~*m_?Oc`R6XGTp)HU9hvtx?n2`Wwm|NC zZ}5RVzXDR;^m+XGkuj}JWp&vUcDF~z8$=l(?h;PoD8G*fPd)F3=vuY$eZYzT7jhGP zWhDu-caW)VFlEe4?a} zLtaB{7!uy^SGlm--ZFvCXAYe7uot^AmHFsE$Zlmb&5y3R)hmSCE!V^`GaJfZbPBot z_j;hXkzskl7`k0wcnfyHJ(~~hxvAC?7M(0lQI&r=JnF3`r|Q3^X}Ek3ACBVWM3Qyr zB<4yWA-|0OI{fitGB2=2q{4mBM}2?rZ2s?uNmYB-tG43%hGWMEkxvZ<3)={%|8wq? zo|IjmVw1a%I;~JnB-%{iu;$8gO01v{5Q;K zPRkuv%e!iVr{O&bFQB}vfScVsvPlQm0dEw>vV%*8_*kE65(x}*A`mxlm%Lx~yo{3M2Z!ULp zpTB?HW-tVO8FX4ZpFab0!drHKR0NMhiXCa38A-hcFOgBG6$ zML{0ZYD-t~gPuIh1kK%o)2X|yOeH;c=&9>mwDmr|3bA6mYkmF1Ap)Cz?2~qtw(d+Q z5Z}PCe|L2A{$Q^d)rfJ+Ruo)9b_+ z#pTpKZhciyqrKg8IMWBNYQQ?~m)N&6@$yZA8Y{HwVvrcVl{$5~TY`|d zUaAeg0z*05EZ;k9(*Pa%i$gU$h1-$8$1nrCw^G|Vs~zz3pxQ-qrM=5+R1d`{+iP4v zr@YyKNYCc0ZTugeY4PCmx?x+Et*5pCp7Z<#4=D&=u&M$1KKPy2GP9G7rIWAU6xeC% zr2PU+Ut4+g@q>9bmDO=*c&yH=ASSv_Y5ngT4t+h+}EP zeFIpzRq;>#CBlB#pH?ew(>nEhlsth>TcD&YpmiGy*jU*jJL}e{<|vu=#W;) zU}xxgRP&>>_yg?MLgK5e7y@)Y;rm)4y!rC7{_;J9v{d2uD_43^wjnfs@-1W@sX#ML7~&Nto9l()NSPS0d+(1gQtM|4o)9|KEJ7bIhrIcE^^$AU z6Zx$p0{UuZ%DElf3Pr?6WOZ`SuS`NF{n7rgNN8I_svgIxJN#Yd$yEJ>-pmmL*BEI* zr^m&|0x-uu_W&Kzvz8^jW`P$QTpzwuqUQX3FCrp4tS5_rw-n)tfwvtPpVi#x&NSbQ z)nd@*#w(V+%(f4>fcW1pIX>N*5u3@)soE`B+0g=@oz$FR=jgffCf70`cTurlWRofK zp;y2C&C*3%ihQt=Mz|5SpOC#&ba)nBsp?6gz@XnxR-21Ei6u(Wjf|C27js(p?HmR( z79Mh_pr;CaBXJM)R!$kD61n(BzG@a_KuBG0zn~Z)Xt#D6Z8$K*3us7}|2~6D@X29WX5r800Wv zd6H%#^L>duom4?|yUYy5Z)5gC*ny7fPtx>miOlSn;sRAQ`M*tS4inBWKqB};FTkI&mI=gv}j^CkUJC{zz0!*+5X^SkaKz138$2Q8;85Z3dUVO=JFPj8@tQ?RZb7iyM(hZ?{MT>AwAfnhQYfmQBSP9@`wKi>VzkqG4JS zq3;Vokq@Wm35F7PPw!U-RU9z~>dk0-(PL@ZGQhY632g0BJG)Mbzi@@`JNAy&sMqEE zHMGN)8ZoAqL>ymZC&E0|4p_ZKuO|Ej-p0e$0cRY0B$pKHhv-VHJXG0NQh=u5t3Rci z%j6vzb}S-9>pDv=c3H29ew!*ey(7#5spmJ2f(5YTzjQPZaYW?E zYDO~I7l}%dX!C|QuWUdDxOtmK7$t2)$S??m82@S4T{T_wOJ+QKyYw>C*_`QPgxI1; z*KV6b?y@L!Z6Zegzk`^^shio43k#w*>z3+I~`;#@cWIACqXb3^5o`4#{$5B zGd$=rS3y&bVVNEY^gfa^3woKB?J*dGI?&E6LkSTj{&iV%?zzk-1pDSWwFw(v6gor} zU7xPzfq^;cL-@4gtw%|4RA2jp5|Gpw5EVBc3YiYy<9_A@Mn&K(y9rnK3iS0yZ2R7h zQq*_mNO7PPWU_e6d!|lgU+&bKe7;MLjlCx24ixhGse=XkDpmhiq}6lk^^{`^yyf+o zFcM4NalCksWsm63b#|OYSVi%P+=s`{^pYtrtD7G!yKDF{k!ltjF0qe)p-qoV;XIV5 zqS&ZM;iwk5nlUC21M1i=Jpm35U;OF%%k?--JSjDi zeQYN~_$bQ0Z@Gq#%jf5>C{3H3@SmD2tc`6_~4eS}Uh1wg$e%lc?YHFMRNx(l^v(;_^J^~ZqJZ`G|?kuoM6 zt4B8NeEtQI&D-0^QNWeh(3IUQ&`q7Y4u_~)&&e_MUxMs=?0q!_dY)REBKjo? z;w!$=wYf*RYPl}67Jy!oIE*1sq?LcCcXbJnAraw74l%|}(pDr&XVze}dQRgk=z2BK zasCraPn-{3O>^=GuZYL$l`JEtX^q9%xc*$E4X(DWa{1(|GSzCGV*HdymXv(A=+3Vh ze|}>85E+rnS9>K$t1w#owc|p2rit_2>qxPVImhXG-j&aHYW#8x4s^Q>(FT?Uo9Pt` zL;3|`I^}bWzD(eA3S8LdYVHoz(Pp*53)&oQ0r%$cI;50nv4S5sdu6|xVsIH0=W7Dq z7OMY+PDR0jXd4gS02=+97a#^00MA5U@!*9R%m-|j!_nZbQ75|Hu7Kpz8@;o*R=KL) zT-^b}y}DLTPUr4hm11OW&LzR74wgUkEP1hm1u^3F2FahxwJfz|`P!oi!LpmDy_!2} zQLr7O3Xa!xex7@b!Uj~V2N0mzvro!(?trVbA^F+2@%PJude>^8u&N3r@pL~ zjb}*u<^bjLdlce6h>)R;^4B~dRMIsv(gsUT3b{lX-LH(Fwu=>+&23~1nFMMTzfiXWsYyxCYMVN`p+cdExeX0iYq8 zs#UDl3yla|ex((7m23tjp#;vxvYMYSYqFy3GnsnDk6LPNEeT3%rrMOoUzwd@V_3DN z%e2oTGY8|-ozLPlON}Wdc76F zj?}J^(eGFZ`BPuetmBhBv_e?*X*S?-8s@_v1~%RC_D|I@`Wa)XJS66Fd%pZ*g`-i{ zFHUu@9ZP1{Pe^ZXn0~T1Ey^OKM2hB4&t&mpQP*UfxYvhKBgTlzgT;tY}Ic>I^((Iz0K& zBp?X&%-JggEQFxdp;yO2U4Py}diS4T&*V)PW^fLMCT~9V{X3K%@O7bF{6Y>t{De>; zXrbXTb+Sxx5Owy}5F#YL%xJ{OeD}OT_Y;6{o7jEhp!=GZ*u?3!l}p{ikkEKUqMrta zYx||2bz*+5jl#UL3L!nL>bbJPbwumQ8huYLj{1?{;w@%2F1uV&S9Vt~E`6=h^VU{I z6l~d%cisF>25jWN*SFZ5F(l6o!SBPv#C=E(^9p58;Ow7zGVf{?7Rkh!4pZHNa7y0( zYgQkZlhe1R8CN#MM-!1!-KiKKDANl_%C*6iz;q9yU#p znl}cjFG;aSq4yXFeurB5b#GSYisqQFt2nVh##a5^F@=?T!Mn+p6Ow{S`ff(!J9pHe zxb`6z>poVIawj4tbVY`}BSFB409y6$cx(ZilwbwM=-9x@&ye9xv>NSaMKz-nv42Ij zrFCF}#=|YGlt%k5At{52ewYzEMU1ZzlJ z2t}<$Z;i(;qG=76*WK<|>w9`1NfjO$Cyqq1cYtaKT);!m1;q%upd)WU$Vy61%HnT2 zr{pkZZcXoxZ=B(6hvmFF9&L1EF}|Uh>i(9b7Q#lP_lvshC0@jGl|hat!%|PW&YpBp8rt)x)Je-IL|Nsl~!4_*{3fcsLuJX;d~`@|7#X zrtQfN;2QOFQefpj&e%Z;w4cYfzp&iQ9V^^Ct6O^Ve_qV|`1MVQ>*;l@?1EJ=`_TFM z9U%x341BKFbC7wh^p3+jRqw^7qT2dpV(yX<0G}sU%daGs5 CyXQs# literal 0 HcmV?d00001 diff --git a/artwork/promote.kra b/artwork/promote.kra new file mode 100644 index 0000000000000000000000000000000000000000..1b9ff214577ae9d57742cb8c159f44ec71e9aafa GIT binary patch literal 204526 zcmeFa2V4|M^FQ3XOU??2D6~QOp6stb|1r z5W#>6QKX3?s7R2^?%T7d=iPZH7oOkq{NE2K%S=zFss46#byaokq;WI>F+lz}`D;u| z`b0Y^i>}FE5%jylcg3Q>wJR5Stz5a>*V`-5*Wb@H#CTbNZ=lyCR8WqejVw5;IMano z1z?*n0ODjpFJHff{@x}bE0*8gGtd8(wcN(WmSMJK)jpT$MlXvQ$H!C}>6fm^-78cw z-8pWw#o_~U`t~uC-)A-M+*-W6ZpQKwd)igEcL&?k-)cBtnD6vael2hqbF4xCkj@}V z(T<%r&mId7E-$tSU9;+H*V5jc&t(r2m7{qJTRzr*Xjm37v8tn}OE>04@UpZ^#pb(; zcG+fjat|K#Kh%)5rK+mQwrae=%URaLuePMF+I)PdgY3kE$8IW&R1ZCM>|yQ5g|@zV zYK?jiXMHkC9)30E&2|lqX1k-Dv2KB@M$Jgcx|N=xF=uDl^NJRM;qFhV&kuE{`h=Z2 z_U1swDw(*9)~V0i#|G3+GK@@i*w!3t8W1z(y78`YX^xuvO2=++%Za__A-9_vdgO6- z(2h&tx^}T5HU%X~i&b)$4h>NpM4??v3(iitHg?9=Ll-G{xRUIm4k=evCx;B-n0fKn zDpqXGyzP*=X!g3L@(quYQ?54_VXFHwV=kwLorspa+g0KA(NZ^b*;Xs|?We&O&qZs7 zYfFm_>rz=PEmG$!mDcoO!HUzWl~bmS7-L!-D@ zF0r297Tf)H8@SJtWV|b<&S)N4I&JOPRU_mrk7x}Gyp~*KVbC%yxkiP%{K#?Hi^Fn* z4_OHtXX>A?WU{C4zL@X)$a>Sp+L2e-u1UB_mod? z?1ttlsuk8UIxQE?{+RRF>B7=waq)|!@@Z3rm%mmo)r$Vam>qFHP&oPSHtgKS;aryc ziAk}RuH!3u7{*J2H$Bv=sFuBXw&VDr=_-C&>D&eBJd+2Jv|mq?=-i|J zBW7a$gtpa(c%db(8!9H~SYoH!bwf)cx!g6X69(m$r%C3{Iy}#ySo>~Bi?`B*Bb0ib z+!e2M4;tu6rB*24d<2xWeEx&u}k8l9irW*Mzmai@Uf*k@1&loVjX+!piR$9 zZa>kJn|WGi%n6xm(NU>^XFV_bT4lf3f(_a5HgHQv)Ub*rV?W6c9};y=U;_U7@JQ7s zvle1?;nqiv&8l}loH@tDFJYVe8^3%3w-?V7NBR3csp%HXPS`amd7p{$46(*lELGDR zk1iYwtInbx;YME+IvlpCdz3-)Ecwfe9VHeTm5ytG+H2RTER*l{2(2CU(0x-oJ#w*) zjQz*;>VYa7!&e-9-|o$t=Q;J+cy*U+YHR3WVbuZZ@2cg0J)rjfHRd~&00>v^<9jOu z76th(3N~5kx43B5XOE|zvfTGm#F#8YP1v`?}D47q93cRyKuzvO;kih1!vM^>0mjlj57^NfUd z?aQIwTerckL$mu@jpDG3OX_&xDA)HpcE#8nq;Fs9cd@(kp7mrmzbM8*n}W{dE1R@D z=0+8{3%ck>$Jbw;z94J2wb7Ov7oLXdHqFY88#}UG$*y-{``z8uiyQWL4KIA*qrJ2y zcVabr{1JWj1c&3-yhTNpbZ;IalqlxDRiC1r?S4}ub496BE9TXe)%qS}QZFg`o%Kzf zrA@du+wG!?pNi&$H`T4$?_q* zI_JB}{*pGw4&B!e?OO7BiO8vvA-$)D?pr$EY@SEnnk8a92Ze|uj~|ZN(sc6U)l}2Q zPNz9kG3Ajv3NM;IYqdUm^U%qJ6H~IBoHE1>IAYZI%)ODbbDD0QcsezC>F;OZS<5&|g1lNYtvAjGd;z~g&u954M%vV6P)CCuaEXVu=%>Urbg@Y$G%T9 zE6T1h?^@5iu&`xM{?QqpS2r!n3toPa(Rk=A=cJDRvwNqwG~E-EdxZ}M-*gxhn7GWd znHAt{pFaEXW}|>j5p6SPe`If)Xl%C`T)%tAcq26#W4EZxjSE;fW?9*~a=GFuYKxi= zh*<@%s^8!3)+9_zj48{CK2H&U>pD~S-sYTfrL4yXS11Ojy{4+PdmC&p@*HF;c%r>v3`|IVW_e6V5z^vnxXzO z@`;uif{XVw$T3XovWEuF(;Aj*D6TD>&oplAq)&3`fn3iZ)tnu&-&Szio6MbNF$)_za zJ4(W}^*N>Gop$Gz$9f9FW&2_RGWU$1B%9?u=blmP*g#3+jUlR~XC(5oP6V*@1L9Lw zq@h&DJg11PUk?>*KtKY1&3*l539$`eHQ z+*gp8;n^#lL0dL4%gE!|ZmszvgalTYE{-vGwz8^TBZtq;*#EkFoudUbI(MFSR{!#z ze0Q5_ny%2`h&#hYG=<}jUuiWu&?B67e5p&_P8UXsM}`rHHFkbpWOKl&Gi9ppoj+GL z=X&axNnL)WmeV#L=4nnBjL*6g*tTcf%GRm9i@I4VR|dPt1e>@NdFsx4b*pLj%Q>?j zc!XxyS=w94)i&^gSQZRzfhQ|Yj@zO4qS0N7k~(42;gRuzJ{b!>cipx;@v@?K_YUoS zHV*|ACR^N$eHFyDJH2Y2RLK1Ni3#$8O=&r`L26Pvhc*4Cm0cX>tXV z;zR9+F26cswRl3QQN?~jcyZ0mKgm~`Dcz9Z?zX!H6_a?MI>oCUV5 zkK8GrDUrYG(8wvflbl!GPpouaS1=`fL-O0j@V%d6S?J(~o`823H9hZqT1M;6xqo9TXWcWbONn>~B+Kf(nZYW0a zSwB4`y-ikJxVo#!=V8p$B~wpzxZA}j*acpE9yNFJ;RdBL|2->8hs0+Co5%LW;tv9q zwc7F;{1u-K9d-WgLD3KCf$3YXuN^x-F>f^6bJ6Jd&1+@W7Ihd`nW|1Qn{D89pngF{ zK#Dc{WA*XCt?pNCE}CmT3vz2U9GWt2H+N2{YW=v4;1bST5EA!k;%c+7C9@4vuiAx+ z`J|~IyQpMXTmN*>$+2VW#wAOvU*?D%s!~_zfh`-vYo*T(COD!Hd0>Lg=c=&dp07V)D9BG5@rMc7rngnPrVZq?kCrA}ja zN$*ZNfDL)>eI&ZlS60+HvvAUdx6d1ER!6v5Yse>TcbZkCequ+^$~wB8*B4R0?;6&Dxl1P|7e2!EinZ0@qEu6-PF>O1YwCb!z#p>onMSv&nM+w=r) zu?W1hoMQEK!p$)45u++n=k2uJS3g!W%4wTLz`LX7!3zpT-+TPJ*mO)?Q=K@K>8&0s z*jY+fs>5<}9YT&|$QUQZyqOo4?j~Ekv_TQO9MDx?K%08a(@*;T?zQ91OPv#i>&{-a zRbF~&h>~GL@6j`3rez!%W}7uUes)hqUjJb8D`S%)j;8WX0f3D?66Ug%@8k>3y>Np82?CQp*gV_|zB+JvV9@ zWu8);xFLn5HT8+_LQy|@o|%kZ`Q?OTg#|AMT{=3+C+9l8Sy{eMl?p&c>CqH zyClu79<|5ObN|k|?W=4yWJH0Db0pR+Ik4q7JZ*2QH zz;VK(TWe}#FI4%B4<8!AJGgt%k-N+n25eDjr4Jgql~wcao(men7^&|;lXscDC%)CQ zICNoLnA)VM^07iio7!SK-nk6PeIFWjIU3W|Q;>Yd92u;tU>v`!V^VARniPvA)Nw1O z53YzFrR>gh(|G+t_0~kQJHt{6JZ{iBg>ANZj+zrSNlMT~cy{L#v-QxZRuF+iAGSBiUhcx#%r}#ryBl z9qBC#Rv*2;Y{4#%Wd-IjypQXST`ee9u}_?1rmnPkWx_OzRpRRx1(hy79s2p%Lk~Ft zRgaoPEN8ok+Wujir_)ujYwnJc6FY|<8e*X{;n=)$gCY-nUQo97;uHJc4IK{8GcPgE zKRR@Hyq@Vgg@=(D`{i3#N%VR+tag=Wd@8&!an`A_(!HCaOBze=rC*)4IcxMz^AGVl z<2Z!{Q)8v(FV|b%F)c0LdfZ8q)Up~8o@3By!OQPvd8n3MiBBrG>|KkG(^ZhRoww9b ze~iU8>-Q4ej!m^r^Ywc=*) zyYphN3{Q`)+9xn#=kyjlNjf$qd&?X-m5x`Rht8gtcuw(!yZDN>u+D^K=Ew5)>_2oO zv9Z$g(9lO|tMB`B=bd;T*;EofB~YRCUSu7yCVf?#3;)i}v(dc;y~9>MuN0rlPZC^hcG-N9 zgo&z3=aSYZ`-wwCRjowTi|c2cs)R9v2yizzpVUqCo*zR^ky86xI9RIg^b*irL*kk^=Q|oE$V)=?BtTRwUckV ztSPo=osrueBz~Zt4khETT`k8~4SliusN(0`b3HLP^nyatWb8Xec{_b3E=(N#aKwnZ zN1+eGUlI``YpqxM&Xw}^E#GUfYmq~X=Dy=Pl@InSG-zFaZ#?{pO}3eU&4racpDsn_ z2Grk7i#bzY@r>KJC~=r@NkR{;Z2H^W58*qPIWD>Xtf8i1(Pw%~7_aSqql?;JgGFXj z)=a(9a?Y{MYLt@gk=O5%<)^%nlPnOwJf`GO@4t+v|JeBpnV4`Ltdp?=b^hP)s_Nw94a*QItnv@(vl|aOs%FQe&5xhK-l*cvaTK zetb2!?7cgFet7L#H zDOQ;ii}VEC9zNf+V?;vjtF|~}rq{KVi+UU)ZaiFCkg7a-?y>N79ou1QT3W9Y9L`kr%C6d9TyOCKM0KW?YqCy!&E$(v`-O~1rF zVLvS8h8=jBrsx%Q`f%0g`NCyVaXwzQU9JlY{0CLfXfWM!rYFGo?xyfh`x9iv5BUuj zTK2GzX}8bsA!pXS=d}Ta>o0m6JeZt4>1m49y*qLfpLVOvnKR=^Rp{XB4uN`OHyh&F z=~vH<*tUK}T(`bg$hpMZ-eXM!tg({hVMgPcoTq&n9(%^pM`udcn8MUqhS6RD7jmx` zsU8fuSkSujLMrBdU`p`ZpeM4LP5FmErQNn$m-@7Vdb(MnGI40*$%N%68MTf}?ixP3 z)?=p}r8ZB6Ij__8zE4!C_*x^O3z5a_&2rO2I%8aWVj0K2FlEBLG|vM_E)sMH=6qS zx+Z98>9{IA5B%hB{`gJqdkL>w*0=p%j+%YK_{zhDsRGZJ%Ne>jtr~5cyUoJSu)Dl; zrSGD=AoKcO*?F5spKKo->J*w2{BCC5L%o*#WzSNTC(clF8oE=ge&hKO4NB=}Lh7%p zPFI>{Hh*@8fv?}m}z(-TR$YLtHk%S`INowldcGk%aGl0r)d6p4XI$^ zv#AH-sLCc%j@olY3`|ZQ-wYR5uTJg4SOiaPO<0d=y z7BnxAqh3-PeOT$>oXhtv?H`$xLxf)Gq&DA}uD)<-?T9<|+qboMUOv0tTflbo^7fJ{ zk;b(pBR8q8QyXfp0o>A6fq42wr~J-UyLTR&z?EU&Yb!XD@k!S(AXGsAjuCxL_WRqm z8{He^%f%}WaQ)Va*}Sgl7_~*9bxr5{mrvVY4!5Z5-Z3p&L@(O4^Fg=QtQaGrq#$kY z{k^;FHtAlybf9jBm1LL6G3HkD8FSA{Pd2t{?cOIGH)-{LgYBM@wLSqmAMKht`{9w? zU9(bYj_zI3lv zc5{dEizo3Gjy^5I4f?9(_XLi3dq~W<_1VQI?h~a#ZU33)BTwG3JDD9llU;V!q%KL_ zKj6a3Z8D=BF1!~Xap7&6-}`aHPMPgX?kN~EuH8VZ*rxe$TOpBz8^O(9Sg;fIApXI) zHfD_Q`kAp8RUhQj^j1a6eLS(4d)cz;A}!cWPX=ZyJ9+jQqq?o45o7uMP zt$J`j(Ye9RKyWnvboz1A^{etPh6mqvF?r`~o>y2BcD39u>+F(2=6mZNFDmPB7pa+< zcS?42^5vMgJ?~`kkY@UhyRHrHl1B~nE?CYxS{yJco=K<`KljkSZkJMX$mjFAN-&AK zPWrUFvAe9}guM>&uL74V><+E6>(+_LW3Fp7G*uXJp@6Nqb=tz7qB#=xk5k zkcDqg-cGXae)>r?E--MPPSKFlmAC9uaoLkOw9_7T@AhnLp*i(Nes~_Vm$zV&>Z7LX z(D!qiu;hs|pDz?|@>-YnICzbYpW$c8=m#*a%z1U|`vd#7T5dczZQdz|mP;QD+ddYR zIX|5eTFwoJPnUEr+-_459DI};m3nh(r_Lysl??Q?|W%8=!b( zSWt|5Ps^tZ*yepoFYeT7?eVr6&s-YtM(6cI|N3zkd_IM$R)=p%cWvm@NqgOywDG8Q zl_gg&DqhHUzj)U3*Rukjy@^delepj9Zjwp))t&pM@@CHc*tzGk?$O)US+$l`uFBWn zwsn?KA6Cw~wm9NW&4fyy;Z2;@O}RIeiW(licR#a9(eq=o^n>m1A1*5#!^zS1p)Frg zJ~82_{S()5@;6?&D{NeDxOHZ9vg528$1yVn3lncw&KR<1^cyT};%Gm`Mma`T{+g$~ zH?3orQH+O$9s!f77yXPu^H^~pXD3(y^DdBs*y1e~{_OqUwuP+?vEbO5O3JR!{9?GjO zJ^X4SeO26n5V@*~CV!oIIqw*($--%yCS1#4y-g83arIiO?4{KyGQrpD+f;O#q#g;2 z`QP+&y6)0t_Q3eK?5!&4$BG+_w@hnkcMcfyf!VEk?(m12g8~UtkKar??VKxla>L_e z`-9!|mQT`MoI11oTKQ3-wt__yXB_#gmm(wkD!h$4_54A)(yZcSIWrd&UjZ^6H_e@;Tap2J6uvaqM-S@cH+S62x;)YmskJ{t8 zsF^6>dEDyNs0xGr^!Gn3!IIW>DiqoDi6>(r6ZRz06F;H_GIy zZVlPxccN-bOT)0ig*8TM%*^+LMsBK;PGa5MDVLPDIk-%G`GOI_ycycN3gJT6!z%An z&1)(`IvD;3wd5uRob$ZTDQceXIQFJ&Xc5uiEjDJga-)9i+k=w>S2W4IBU+a}o0|G) z7LU2nZ0^OveKm0WdjD}FeeG*EjJR+z#32wJ@J`Xa%SLFTkiqe|9Z#)IZ?7MsW znOUo|S7n5))0mm=l@*2`VIgi4>I%~j z_%3zkl*kvsA4)f!to=mUifb$zdi2$_MT&`+;g-lq%yHAqvYB~7$K2GHI<5m-k}_HI zMU$@`niVu*LSwtC`_4uMZSO2k>De2$S#E0`&0X7b`lOSchs{2{SMjIRGz9TphiksQan@i;NtM&8&}CVcV_EZ~PbZkK2rRH% z*(2a7-8*=5El)qoUFNr&4ZeOmbXO$!LP@yMVFl0o;mg{3geK!*#>-KJ(S^xI= zOr^2nZz=?Ds@&SWlC@DTQ*-Ff__^oAnv2dSi)Qax+;h)KLiu3QY)gTVMFmBPVjFv_ zUd+5H?Y2ilx)Zc>v3(&YJtPW~ZeX>>ts~@f&rdmgZbzoh;+uC=pLVBDnH4s9DbL25 zh<>|bb>ZfGW`tDeq?CAr%r(^q+qND)duAo^%B%SnFZRL1d&c@gcZ1fgscPs=xpAUv z+SJtXZ=Uj)zcyTLljQ~vM+W;&WQjCFmdKR>{ww?g7nv^iTDvGANglhsSSRxaWv znR@&C1tLqO$?BlRE2hrzFEx{keCu&=t?8?E-g*LKWRj*tO_&~hTEF4)=-8o^gBSQH zyR$}rUFpADHsaIKA=5p$??y&VsqVgf zac6;#$L$3}Kh}s|2JSfxjpL@DzmS?^IboK!jzX*MoBfe74-8ZH25Hq6cZmq+96$2x zMkx#qa-u{%n=?E?TrSR8rz}Z$w3d_Q(Z{E!f84s=b(LP-8k>(`$P{DoO)XnHL`w~3 zmDfj%vR!F=ky4bIcw_F&jo0GCgbg2VHoh~eGC47@d(NMC$>(4M>7UntHJU;LCylb*udW&3W!q2wo$QNp%Q=R54EN-lE?dAfr&Kl_dSi88jr zXy0oueDxf6Oc@g*qvIvlV)k*P;}(4I%u{KF`C)HVvQCXk(SBCKteJnYS+;fW>i3ny zShT&XQ?uvyycE;o$(qbJ zv)^k;SDsQGbtt|_@m=i(UQ*#~_Hu(m@f*9!vOoJ-oV{|-G^&DAan^qRMgK87W=E(n zrH84!xt~C}wNNTy=H$rS`Ti<;eo>xJy&BYi4L*k=E9>VkDIgF1%KriQhJ$XN0GKgy z%2YS^iI|1hG`I01J=|QUjlrxf`8Q)mx{V$)jl7%WHgn|oscy4JVwPgA&eNPRb31D> zTRUqbYfGc?vqu>Xx3&_{=)wf022Q~c2qYiq4AeX@cvQ>4E#6$sq=pFLnEKt zm{}T`4bc5x94Ymmke$b;ySat!0NwvZs$-y^bRTYMX+#pAWHsjIHfDTYqlVZTlmbwV z4m)vlQE>#v0F=na6reg{LpT%z73z*CNz4glME4p%!x)MJsKGBFP8NXTw+H~$vxs3( zoS#P(RERsEBvq#>sc^&zl%NX0450*o3XV|15>f$th(l^6lmk$j2j%!FqfyFilo1Lu zp$b0*M=4XFHsCO!Hb21z|Ah;sl6+4Mm9O}JvhN!I5BHr16#%v4oHmp#g9>yi?}dZbvP7I+5+Jql{FI;s*$fL8 z=&8FAK+wRtG=%LGnES!)*uF zb2yx=%*>4R^z^lAXengTApnd~km5o(Lka<= zAen;z#0XSwJtLZua~ma6(vWmYfO{N3*rD8*3k1%L97oD#0=ma=&Uzvm-P1BM zj;TW-0^El*fH|@NMzGdFK)8rFj{sAlEb1EzRpX51u%e=JDH(_O#aS-cI%gqBBQO>v z!ww1(mf|9OFW?cnEkOXlD zi$ZDHY!+}sor7Woq_Mz4I24BhM6?jdgA^8sL{vtEBBj3TZf!Iu*bMigRRzXckm(zyOEN z$*d6IVJb)()yg0uqv_B9#~d*_7Rks&BY`QByAdR38sS?deckk^6*MN`!C?S!(YwK6 zXan?}qQ(J$1SkZ+UKSAAvuDrl-Miy4AigUuE^g<}ow2bo^HtC=Lm@f?0g&Ykc45ve z0ysl49PC5zVK^}ma2U}T2_VWQJrcwFIjHr~3>?)LXyRW9KB% zfE@xc+Zt5?feV8`wMIG9DB)@(f@!v>pO_2AV%&j(1Q-QX5fV7gSTqzMC=se8bPu3{ zm<`H?kSjz`VqN&Kg%nf~cAKm$Di=xCBKa- zV4=x@5F5>iN}?j507nwA;sm6!fIA6T5khklf+u?7)dyIJAcEk#nnWx~3>Mh%1+s!H zmvvwV30MK5LNJph}^DITS*0W#Jf60iu8*AF>3_CaAmOj7i7} zuppI#uz?XA4#W`nSDvIu-#`5gDKWx`LuCOo!Z&P@~a}2n+3b7-)E$8AOGM3j=Kp5!MMP%!0D^ zEL1Id$$n;cLQF#tV4 zov`JgmIx9OeQ7j;vyxM|)SO!bA*_!>Xc1V|q{q=_PJ+@Jck#WE?ScgL4R| z&Lk%vpLL-()g##!n}AprN@cO&0vrluLwzPfXQc@L-9?#D&V+2^D$XKV4-}~+2^EC1 zBcW*)hYnqF0HGzIl)r(Nzh*BM0I{C$`OVL+v42&l`m43|PxvLb9i%ugp#1);^!?-f z{i8gxI1INK(0>0h8UOl|{t@1GxWzXm?0~)JuT%L)CHhBsQuR&l`bcJDX>P~Yej~1W zA2D+aIw&LvOb`wS@OvHe&v-0+O)8;LB?tN{N&LH&Xpog)eU)hZ-Aexdw?0@}{xW0( zljTRy|LbY}n=Do~)&pv(e^r9&AKlF@%)b)e%8KMsUw4>C0ou|d`Bm>G+C!529bvxV zKpM%Me4BwV+C!5U9Q0ScKY}6$6n?d)C6Zi>tozb`q;8G>RNY5`$YA{`YxkThsCo+x zE(ys_*qr*joyP`9sF$Ki2m?SB7nZSDl9*Z3%|_}0M9e{8ko>5C_|!))%j;UXU9Byh zyxv}x1={>Uak}teixs;sm$#v9l|E?`6~u)U?N=soD!ZT*Y1$-kF;PQ&?BoS2kKTiw zP@J^82;PFttsOk5a^|N*|Lb%0`w~CJ4~56Gwlw>;#0~Jv@2U6quYXE+zEcCK#{Vi@ z3{d{>Q~Udp{i8f7P!IS|{a2PMTO(3H8`!*m588ir-9N~in_GP~8roXh@P&k+ui`-r zxrB${9ORFa$Ki_z$Y%%n;|SZJBvmK01U|y6)I~9Jfzwby&K6LLRA+O@{XIJ0JV_) z#GVakT<(5ps7bJ`AQe!#+|9@bg~sEy_&^P$;0{4mQMm=i5JNSQeo!dK_P!hyHc%bq z2ttVz?gnK3pxhUSYA7WT(oo7+(i4V>q#>&93S?yn`Bp>hq zSrvo~XN0DfHupjS5;Wi)5`H8Em32)<&kIUS`g9=kBn-2GpM%kZgF~4PK z1`o4PL3jj5hPZF3KfU;_Sig0U_Go$H!r`uzHZBrB%n9nF@Csx^H6;XkE~x+}fkR`0 z(i&+>p-3JIlj2)QJFG*BhwJ~PhcaK(5>s{5DGy3f%T!SlE%iGG7%! zKOL3-$qc{H;qP31BN?A=KlnfhL4z>BxBd=s|E!Gq7ij+BpRXr7%)V%it;}rsSpA6h zC2XWw6@SP#en#aVJ?|go%`MGrzbb*PE&ELS5=at&7&^+v zKc|L)3Zw@U1QnPqV(fxWm0D|A03+=_NY$l*+-gZBn1;2I9AL$1V`5J(6Q<{UJE*)vAC?D29JvweV!;Pe-dE zwKGK=8Xy-*oZ9?H}FA-Ri)>n%~my zpWXML@&l^Ue@5xwmhK7X%r{;4(i zPfPx>K^Ou-Wb*8&y-R$QX|F3Qd61oU{?e7pY3D9oxpD~;z(fVou3Skwj|qTF3<04F zX_v2DLLtXhF#(aQms67C)=X3f1~|26mr}ijJ(X9w5?VMR^WQNWOyKvg`E?-rrL-Y! zuEt*$SZk|3JJ#>%^_!HTeTJ@~`pCM~XOI$7Bkfy#<}MjCHaZVW9{ptNlIK4~NRt;7 zwuMrp5e(VBWUya4JqhG6f4TcjJKt^x^_jm0X+X&@4NB^u1NL7U6g5D~&b}6*pfRL; zZIWWnLLPr)qbw@~7ya)vUUon$^ykeELBRvjy9^;;qwhUMF!Ejc-c!niwDR#^6atbI zU*1&68e+%+k%M!je`&(2U+*ag1O$aGru#!V4brHkXue|4rH3DTdwDz_Y1EPg!ZfpK z8!tV0+e5YhCH2vZiyFE625;MU@@`op$BKM;K?C$DCFHbp`^oFK@8rL%ZQ>#C0}9_1 zNipXDAz?e;9eM9Mp%DKJg%tw`s(J0aQQHlr$*^S%8({!cM>0=7{sae|K*SRQBEx(R zX4g1xg+_pq{}CEl_r2Fwp#A;7KjjU`x<;;q13dZf)A&ave@gc+CT?^-=bMtncK9Fr z=3s~&qltq35^(DmyyWYKg{Q=ppxxHvU zb(f|xM^Q0XsLe!`v`I?$!8u_Y!mPQf5g9yE(8ifLgT*PVg!dd6Amoo>VAJI zG$dH$WmlXs)OTi~fF4xt2?MA{u=$r~w2+HE+m?e;6Gfp8!9kbE$qv~Msl4)0P@6!3 zGlWq}GC!qb3e+N?a3td9TsCQGtVasL8=hk&J^}FUi=H zgGl;{gp-f-Fp{DD(La-4o@itPb8P4@_rJUPE-!L4CXPEid<=8cOFxB9C8`Ld(m` zu}59@a=;=f%)VTl3`&kUStT`-L1xI^fLg_PY?Kg5xnqrSiRE!TPbIHKOYQlCJ0j=YOCk`bF3MzoP4bU(t2{SGuBr zPhY8u0Ti4|HwzIJb07doMnqP`0r%}ofZAD52=yEZaEPL)>qG=4VGq>Ig5r^20ivVx zHL#x*N!h0Tg^(H4y>2QbA;T~rv@ancVQ+{^A1#p^H6xO;+Z^Elk$dlguek`Ex_7rB zNlSrDf=*4?yBIY`l9H?fQE-pR7izL1!E&OHm{{0RJL=xO7ATx9`m>txm6WcCls^(} z5h*c}l<0#DPGv=6q(7uY5xTwrl!k!Gho>)z7cwvtg5+X!l0K3IAfneI9EwIlKJZW& zkQ%K_l0vFblR)u#ff7j_aXJ|+3;Cj`EAnq6Q8HRXR29iiDU$>c%OoPvtE0GXST7kB zOpMNmB;!PhA@m^p12rri1C^>|OF-QjEhyke()e$f<#)ILE))5ywe^qbkP4Im7l6M? z+dt3WKguIkZ}yG!=GMdih~FbXv5`E$2GH~(n-1%6PCExw=;0h24nU_rI4MvVNp@L~ ze`@py&IX*T5M@_@WI#l|6S9geDoiB>Q#Kjh{r~yYKT?jeQB+VwB-l7Wq93wlK9UAV z^kps}W%Y z6cs1X>H>|?ev!bTH51fAYaYm{ux3`+@G7mDlxjU_l?9Ge4M)-Wxt&wVb(hOMSth0!a_QF`(q{{3YWv{;)msoYD}Xni)tDM`avq~u3!+8~M8h7nGAGJ)fSgcHiA z1dQYb3*FGhmD-z1hkz7AH0?2T_joozvJ6ZPY5+<}2&CGv(00|4$}3#CWEDheYIU5} zmNQ!l#cD(kRB`Hu1G+4Jm_&4N`D2VI6d}118GQd!D2M;u6DXbA90)~89;AY8s#~u7{x*8UnODgLlanNi8+H;#Nuu zpvDo2uRx)-EYw5vWdK82DAp`TSM2^*`@3I10ZTCBU!^Gj>h8P!0vgWerjfsT`e*fS z{!P6<$otEp!{t6h5z2n|L;ARqM?D7I-hV~*?*`@XrT;>B-j9F!l+nn=^{bp^VQx!W z2-T2{WRTWj6frv^Gc$|B;bdpu&dIrh0dN=n=Az#`q&~^d&xcZUidqtt>QRk_|2&6NIGYQ z6HaWhbtGqpJBMntdD&wT>`o})1n#4ZVmM{kb+1rTT&Fm(?O0?A@MfUuG_4?r!04v2hCr-OSeCkXh-DB`po6s5Dnk(7cuUPz!IuQ=5|GjqgnMuz5UjkQRw zCrEyUG9GZT<85#Sll0iQp97bg!H29xMXY!s<%`6CgFxt0T&u6-)pY*>@2f ztj2m-85&_&B$P*f>o|zzWMXvWgH8mq04JEt!vu(qL@%U8vg`@K;df6Mr)Xx}UW*7D z!OA4;7)Y4NtSzX(L>r?D zz(L9rD8sBo%cFcWI{SB&AW#Tk5^T{dv@2C`MxChwSp@$jfss#;kM)AcI}FfkKc_}pFMl_vdPHY6x15p zym=zT$05Z9#|Z`AK$MokDNZr0a1h51XFD-02(*pn@bQi@iF7m`w^($-76Tl6%D(+* z1Q6b5kO~f(6XP4&jkaSM2!#la!61RrH(?Om7os6@4ss5}9HF=q*pFraWmrtqb+4-= zy!iAIX95NX1sf+wWD3}W18hFjb+<3D_F9Yj_#N0M5_IPdup8l&#fJvM|5`NqXjhMZ z(={%!BYuIp83HMkbOMP4AJ8616{B&3i2M%Y!J2lg3^tvOaFT|7!?hKkZ9dCv>(0 z4vi!WxuDY>6@pG2{$eW31a27a6#<1&!1k|`X8i3g0)ajg0{-GXnAA!@LH-;ViaUo? zh_JQxj&)ZIcB({S zoGDpo)_lQu7TVV*G2svbWl2J;9}dbuuPB3S;ZX#sqLgN0I8-6fbgZIfL1h9xB3Kv^ zeTSSOlK8PGgmpf`@1U^ZP{9Q>V`SiNw6?ZFT{OMz;dlFgxDWtEgmsFN>J>$xPR<34 zoVrqUl#IUANRT8OV&ckBEP~(*MF_J>EOa>LCKRz}@FA?iAhm1^zC0v>qxnvyLosqd zCGaRm1Q#~{d%O^PR#GQ2p$Z+PGa{iX`4?(Lpik#;s7C%pPXUgRQC})Vap!cD6=Dt%?CSSAPgH{2lXSbRLHqj`a5IE%a$!L`;x`N%K$LUR~Bl8oe#T|pzQN^&xZ zUN(PR(Y+cv68jBJN}L`j5!q+m7eV2=BO&DrmjlYEJ+a;|_aZna3v~!m_V2~!*joRo72(@Uvc8xTq))*i1xXXMICK6LVfRa50~6 zB>J}o`A7Bqbl~}+CkK3ze?+^#pY~I#e{o1b8ozJbFFVp(t&j~6r};Lu`g8H9&j9`C z*Zk>cB`KsUSVgDUUuf$wpacoS$FKTdameNrC!8W-d?irh(&e1?2U zk*BOM64c1Zlt>^zKBvE_X%x82{B7FzS*G`~HN8dusoD|$ga4u0X8{@>bnG6~UnD+M zM@tSUxUNoq*38354XLz@9(~FB{nuVp)-@y9p|=MkMP^xCOwD?F#NIP`mGzBXeft`5 zT*Pv5?B$Zimd|K!!>6bqE=U^@mQv9HMaZudW#ht{qZr#y=hwEw!3Ly1ZQR+L`4vs= zy--s1d*c3^So&*q{S~m=Fz&VRa9Szb>OOx5$agHZcAQg2`fxI7$b3C9rl0BGEoxI0!j{Em3;jgYe zKpj$>quNnzec#CujH5Ern>gxZoe#e_hAjuT-BI6254!)Ip7H&x{wI6JgXnltE&38X z>gRJdq`TecR2yUz&!WC(3pzi6#>ggJw2I+GUc642#&$yPY67iyqZ~yslDgVi)X$l- z`GnTMY0c^W27QV`Ra~IABEe4ji#8CMk=xFXgH*m2ZzxXV)+9PWLB8s52>R0Y>}61Z zFEPoY=5r&^7j1qCT`15~duqW@D8yHjN+A0)Ow{5#!HD71w`b882aS}5~wzf1ie|mFcr?)Xw@eqFB*w)h6+QoGfM%qdm z_hX80y%Gl*P6m+<3U^mZLWT9{OYH#4QgD=+CC@j3JdnVG*U4)~mc%YDCy++zRehqO!c53UY;r}^(k>K~-^k3|oB3C-^z z`_EGPM|V=^F>n~_pHcd^rTa&DQtR>csJ5jIY4iAzm;LvQyYG50;!|uSn4IYIUm~qi zeDw#8)F1P|F#TzyRpa+Xf1k1!6v?5gIDF$Ws!Evu#bBr^Y0od^r=p`h{jEy&r&aaC zB7-`q0?0t$D!Ry0CW##5K9(1qiCwp9zPmLKiAVD7FK@=rbipT1q`S~3PQ*vhC%6-O z0w2I&WY84rZfUG5N=;-=H&cLsJco;{f`En4K+wr-B%WZsJa5Z6} z+i*-n4vLXl4dFq9(4seJupk_)+4si39oQe;|5T?-t}6qp8Fol>?PQb~Orayo3lBEY!{>NO7O9tc`7 zI(X%h0?}qc6-B)yy$)lcFxfu(V)pmw;p0jHvV9dCbYXN#SrCUWiz1iBNXiRC$bY7c z{6@<$COE+1ORdVt77xlQg|D+oheuG4MS|B*5*h7rP=Tty!RBv#l$fBGtZ+XHIe;=M z;h>$sK`5KgDU@(8I#~McNi)F&o?oAUCIYV(=_|v?0*k+;w-L-r$=(VT9_U0ht;6`D zFlvU2?vkLmBgSuqrxQXcE9!fQI{vW?1Hc}+!$1{YG^Cv@5->NYrxky1IP43z=s)a#^_O@Ja!5Mv7Q zTF^-38KGm-$VEvxoB>>1!I`(B1Vb5dA@B~l*KUMD5l|xwb>jm@REccF6d=0(gb`pX z#<%@rjsyU0n)x89R&We41c~T?tG|(wHx8O1IaIKtw(M1`8Ty)YY%p@oz?`YinA#j? zsEbOClm;WvQA-wZmO+myTyf;W(Z{0^Jexn%y||u8!n3))^7+YC4k{`tBs|}~ev&fJ z;43_vYhDyznfVo-RnLku=c|5&=ZBKw;-iLN;aU5nxHv-XD?FRt6c^w3_y*7B(&FOB z)4##Ar?VNR%P>{i||>8Ao%DTKAWB)0B!n)&kFP~_ZvPxA~+SV z{0^Um`rq)`{1lC7+;{ja{)W$TgwMyxeApqhK1U5){06)x4Ecp{Nfb9A5CwikE&}Jm zZ+ZSd_TB_As_Ob5zxT~d683$E$#ZMD@}tJT)_1-I6()?L|>c>&RC z71=?sc5rW9T9=AK$h^tI?nYfe1nwjO5m{tW1j6M1Id_tPfEt(YxBd4Qgz>$*z5CAl zoO{nb_ndQg0GyXKf^hp6z**3kzN;RbLAFPlyr?&n+6ve_fMy>g8yP&}AdtDC91BZU zC2clVwUMf4c&g2=f-Mg}_@1!Y-;fD3=Bd_zDWUOBWC4ilN6~rly$Oi(ss0`yaKn#O zODTRuDErVmm95y`(xrL>6TsgR;7|5ceb_k;3#z1u>XU0RSq$u1JybGdHC`8+rV@%( za*oZ|E+Fs0sOK!ZJM<6i0FYPuL*<&PQnDT9*}Zwgn|C9YN5JU@TmpP+C#C^>-m!`S zecbE~)@HP-1Ps}RXn@X=Z$#j>_upOh^aF&zZ5!WQx#)Ledi3Z)2z+N<`I2AsZ9w3* zw^x-tc|ijLH&mAW{oRJX&f21;qLy%kx>DEW&dm#8QEI^;mA`4 zMzsnk{PRfzV`js^xItV5Es2&V4ffSUnKdB@dc)`i<1C(X?LNi*jnV{amCwQ)( zO7umOO%2PrC&BVIaTA0y4NUf?C~Jh~zc4ILAWyk;ldFwD=KUBGRq~_|W83=O%btt6 zSBAP{{PeuPw#+F+gp~>?rpf=<{%DX*nz#ACpO4ct!jBj=dUX9h|A;YT&rDg0Cn~lw)J|nk_we`(yhxKedm}d3C!lslY5a|KC!?AUDZV&q zw91=O&eX}re+p`15ef2QTOJ$r@jkZARNe7zPAHsue~vZ(oio31FH29_5Hw-hMi4CV|NS zB5u5NOOr}$ zwG>$)rg~^7A@}T%&h3L-%)7TYWG134dsycsQl2o`ig+GPmAL!Y7xLc!Lf+~x*u62l-7z}jgUz21# z1w2&tU-?@4@=&f3`}k^0Q?L67kRIM~cPN%^BT7y(h|6O;YmAAw1LfU}zdk;`8gQq; z?A(a`9lknQAshia65o{{yf35|oh~mvJKuh3T&n6k3ZUQ{e;yaAj8xT$@%7j%(U0sj z8pEDZ`(ir^0%tH+^3Q`$D3%5-4Br!ky|u$!ZEjk9P<5n6*eg5O-d5fVCoXt#&71FS z-E-i`uB59Wpu1wP-`+vooY120`O}@6&sCc=)q%B$t(urI`i4c3k7`v1N^l=L_}M3) z?&|o?$t-c|eAC34gPf=8BS()Mn|ZR%u7ILp&?0@3N{ll$?8mkK2?pq`^|~8gHJ*OJ zDO*cJejAfw-r<62g0#XQI~4C)9~2Mf>BcArKp%-f7%&`9Fd?^MxG?gRJIg}&xYgv{ zz{iA8AIR*klp6ARsETmjEE$6s{TY)3`eWxLVgcz0D>p_gt%2mqCp|2306n zpxSgNtz_!hpI(0Db+=BIjIX*+b?gs{da?@s_~(eriEw>meao|Xifrh#NUXiCfIUshMAu5p>z6X|BdDcjqu@yEzGeEUs zy#GYYXODHVSSgZP4FhKR#m|VzaM!cPvTz7+q~>|wVo+H;FY>G`<~Vr3aC{CUd&zQp zGEnJ&QWQrriSeJj?D(vS_9z3sh3KD3q5+3rw#@QlDD|PmJekeP9LCGbY5O#hv1_pI z5P34^$5{qk5hXfCBMrOC@!ON_xWAN(`o(@J{nj$EU--nt(5-lhN|a5|BhPuSdJhV} zHHAfl58aVt1)Ld?Yfvxw=$G)VN=xl2c&<;3wX=}B3jZ3^=HTZ==tz_J`9Z~+%FhXU zplsk~H+=!VaA6}aCk{gw7NR*emwFoKWHA`j0xvJP`?m2v&CkmmHXyA}Z)CGLFT)KC zjJ%-m^0P*WFEX;c!v&wX)RXyGCHRbq=k-06g(n$z{c_OhEIjX;vGpvxxSoaQfc+a; z7_K*f^sHY)Pk#~z8*?sASFQCB5oc**;f(`TBJELFU{!b#@w*_ElA2D&S@&~e&ShSL zXFFouMFc7Ygee}b+L4M7aMirK;F@~g1%J8`qh|IG>$x{{6uetJ>?Gd3AAu9^n^ok1UeOq_rDu*^tfY z_XFIaEH=|_;NG;~I6j#R{%zphv!{U}-Fa|WY~Wn)l_0WxO9<46b1fe}dC5>JGaJvZ z=UVe#>1PkvKI>*Ho6Vtg&A04_a=GnusAG7gxpV6|_GbdJ8Msi6670v+Zk%H;aQt#I zn;psv5&zAT`2L!2e*o{qOyLjt#2CReZ_Y_WrV@rDm-p!H(CoUaG|_Atw7M2&O$j%gGXgX|90x zAw4n$YYEkQ8B1}njL73XdOE*Tj5+AF>PlXXEYo7PUYK;jZPb+&9}(di7TyosgQS)u<%H$2*nZm`22J(7;ZgR0=` z{(=%(bCU6jN`Qwh`2Ku_WqxD5f3WJrZ6|IU(@(jWRjA+!P*_!tu}6`sHiCW=aT8;{p}6a_NSiqL*&^xX(0d^C(SX> zp?9CX=aSCKbC##wMKhdTF|4RJKRYo;^ddj^MAj~Lc+aj6w`~4k%ZB9-Pq_N7H4;o_ z^>ZED9Llkh8VM!XiT}QKaYDB26xFuD#IaeQc!GG}!e-Kc7lNOt z+ceVa(^Z=7^-dZqPEhdMUNw#KWWChvEB9?_e5QI$qdPeeG&>QTiGJTct!b1$5hSsB zjQ{quKDlPo=uTri2{-3m_JhGAvqv^fDm_KI{7wZkEHpijdztuZg6GAlU3v`frd0$%mj>Ci&*D{;C>HgM72^##hns+vGKk z?igm80sn2t`{i|-MtBkio5%Qn!x&G}Wb=Ce%i;UYbD9Qt5+xhN$&r~O=1~3%wj8#0as{ld z`A!F$oiT-``kMSrC*t>-(awm~7-pZ#qG%rk@FYWUoKjI+Ax#mB@|YEirkK1c?Dg3Q zZy1BYFh9Oh7TIQ1w?fsbj@N|gh>O@t6vjM$2F9i}=x0?;zh_icPktyO7N66T&#XsWggGy-Q*A!m1H+F@3V?gkYQ||Ex^0 zqA2_}dWQM&wJM>gpf(gt{U2=3)wt@|CTtU{lp>t`!arJph?Hz)l$C^vRF5G4EJ9nz z2mxB6+96^mNU>H8D#8XjkG(-!dz|3WJ;>g+{X2}zsB4O9?{|Xy{S~%3^+*+;6z%GB zV9i{DHlFxYxr$~eeLVmHn(e4`U+$H`jw8qc-d4$R#m-<5Y))OBvKJVLA>EpStvJ9?ZuyQyh^OkMkn&Y5NC}m*Xd}5BSkA0s zNBM^j0d^s?;JE672*rE(QjyYc{@Dz=PQEwoKG&s!w?RlF80MwauPFWUYHkq)GZ zw#XB#*kpUr%Xbi7*Bo~=WWq?KCH9x2EYH~a$V>`{+q=}p?Q&MGIuxmn!D^Ppx6GsK z4rUbyz5+DJU#@z@WLU8k>}6%F5c;H>wnYNH$mZ*2>b>tG?0W)>a9lBHkJlg;0!djd zuXzMa#1@xj@elusZ$QCO+XqA7zQ2e36-%Rie2NA6(wQN1{1H*KWXdDURr{h)kcS@t zBV94UF~?ySU(il5IH=+zeu90a<*#BBEwcdqD+0`3()?tb@>Kw%%`%G_J9j*b{?xcL z!8pd^nkO20YVqQSDB>{~s+27b`C-rCDpaZH@zk-lKk7aL`8y?pU3yF?8`HF4B?SS9+S$)GumAjSaLVv6^bs4E9yZ9y;>u~by=(u3C) z7i6Q}z(T%wap-8p-<5F;>|`unJl~pveR5%@?;-YCO#HA|6tabp>?l91`W%x?E?+W% z4u3$h_g0IE+Z-k@Rec)RYOys@GG~&2K@xb4whRTaicOIs1Z{*f`bo|Tk-3c9r~3J& z3GXz{LKiD!fXx;!{t7ljCb8M(2m-x315+%9U3-`xz$iy^mwF@Q=aB`L4^{{LOtua1 zkNldTNb!}yTpNMJW&I^cg!zQ61+&~Oa*zwNzg98j3MyX8&TYtk2fX&YSJy`2N)*0D zQd8-0K|#aI2RGcULaP&#CB0aJKiUPLoXl4Y6FC;{&8ikta3&H9vNcW-3p(U*!ahLt z(oqiVDiBPa*p3xDe#+Q{N4|{X0ZqQG9M7{bz^hJSwgKfIP658X(7#L22% zso_=cq3|>PsXz-e+Hx5>&uZB+Q41CoH>d=rLn@a|;9&%ZUjfHaX9c?y11Y-sJKziy+JKu%nrJa`C2SCZ z*VVtrF7YwcQFuCvaKyK^HlpnIJK%)lh9tL z2_Yt?=$S+Qo=iT+ldVk$3{{8$ty)j8U?_e&P;F6tg(O6{ZbdliqD`&_;Ug(df&ElV z0!3Fc*1)(2j2b#_PK&%~@+)`*SrCSL5c4GFslJ6(I9E&CdEQ7YgTVE-n?)0P0@Yk z@=c?>#(YC)lM$n`8-so|GWS--FqOb0?K84D>Tg;YNY1kAJ)|%WMKfrwVZP{*Z~>)y z$2usCG$#*(p_W(wcT+~v^R>HGfi_I*>%&TJI4sr34o_UDaE6*&XLQ4;uAL1YfV06f zG)_JcMqgW!@a^c39&VBk)Rm{$e`lT5D?V%&C|yzW5R~#!>3RXYnp%(7T`?jOj0lkIKIK9d_a!&_Fc9_kZ{f zUz~Uru&xMxvh$$}F1hTyi+*;=uYU6LpI!W`^M8KfFMh4OFT;On_pLR?5u3cHC0w1Z zwP})s0D+rL=fzJd=?8bJfA+94@!Bd42T1T(kzzTZM1PaNJIo^Rro%rSViF||F!{Rn zR#u3FI3)f&M2Q1UcArke#fthAzCFpxw&}#s0>;v8Dh4TOlupA%W<$yVoifnm`#R_( zG_j_ktwp*m2$S#uV^`|b0VdlLb;anB^FtHSe*YlfeU2UPkT}j3gy=HEWN*?j9MpB3 zUiIk?nEj@iVgrPEK>UK;K$)~2)-w!x7ogaNhq@0?l?}MkO8g=1B;XOSapXju1 z2#Tl{W?%J3Z$*>xsv+L!$dMyx{~q!&YjYMTK zr0PaX3_iL7iT!NxGU~EFV`b~&s+$du6v6oaRN69X1W3|1)c{A_hB9vPYURq6(FCr# zQYp!Bgii~bid;>n;pI@~W%9 zn55x{okwLxSvYT~ikG3+5MimDA;J~ahAY~Wis8+lwCrkk1(aPpS)ac*i>lo%&EiPq z*(yEEgXL02Sb?N2-A;LbfYrH$9tIIm0=ES?EXFIVScD1}lm&tT8-XBMd37RJ{en?9 ztLo0GT>vvm9x(%sx30j6-hmdXIW+uY zlqU%K<5gk6erT<7heI%{x0O2=*gp356?pezuqEsxH&;Xr8y^8uIXr=4Z-10@78Ojw zC*iekRB`46qiwky3NfC4y7KD$E2laVRK-Nl0&TG^D#h09$d9eP%CKxv3pNE&>!K{AK0*|W z9Zny41P(5{Q@N-K-uq8N=2ui1(^MBJZzD|JMu-^?)r4(3jljKNu8>}QF%T!r{KPWF z)Pcb$%lpg}VZ|Im>mfpG(6*xjYkhjuZ73?3b|qprP{Y5MP@S@9XIl|y`1rX}itu~G=PdA09+7` z-fmVWv#4u17P2gir0U*wfb#iI=2SDA#1T2psqSRE_V4>p0j--Vo`2}N;o^@nSe<06 zj*=Y|%s8-nr_GGgThror6@I~>t_!#}+&ga$#u3|5-Av=)!B6aB*Up`r9uApRhAmi4 zy9$wGGroV9AY4{IW7j=dEZ@f({q&Ww2#HMlV}W!-$kLg`W0jFALd$BD{C& zshF%eyr9rPskBv3M^EHY#@S}n^Eilp6lLXn=M##PFI_8X(f7AXBx4TB_i%9Zlf}w^ z$alVm@;w|aydb0vz8ia=pikLR7Gc}R!`04Kz3QSIZqv4NWo2=I(BA`(H+rQAFe^l= z_=w!2M~Z3zFvE$H*aPtCDb#>^q$kt&?;UNyqf{94GV4iaCjs4K&@+5B)`u#0MbD5K z9l!*QqEQH==|L}xCY1ri$U^_9rD%UCN%RA56A8Dd@3qxv8vN2x?3l$^3O-lD^k`?M z-_7e_-$DPV+@MN8u{s&X?2#`?+;g*NdawZKm1qcftI|SYO9C8b;sV{1Bc^0k?z*a7 zX4K1Cf3R`=isj3fzx3FgX}=zjdd^f#6K1qyV0f-;+Xw3+fYx8GNU4XGDHz|f)|Rfw zbH7Oogemkdu%*<-kTfEXjghj-!vw2tm#?AqL1iewm;MBUs}>4?E42-{a(<&yr47LF zt>vL&UV2^>>Wp@_l^tU2gOF)NmicISYb!%JHe>%njVIES=Qyx}5iQGMPJ~CU#u({j zBl~^F=1Ygjo1wc?t!pbqBjNoo$!jJ7xqkC^eYt)ybFhEUdl?@%8* zL;@pQ@7M@FGX#|wLzFaZCOJV?vbV*0fQD^`ax5}Hf$xBsFN&=vi{WRw79h&M@4u$4 z9ib{|Ht7F;KT^{OPwVvt7o^P5bUG=PXM$okPA@x5!8$rJ(Yx)znhhoYeEy}SOJ9DTT$vRAiR=8wK8dL=J_tOH zX$+aOR}J*BI&kvE<-&)B7-=-@Air)Kc0g>C|KTI-fLJE~Z4ETe(&V|XL4_<#?s`m( z#Qz~kkHStfYqvs}(Tsm8&NxI6KS}P`NmKl%sz2iyJB3Leo?rhTe3*VKD717F%3_|c ztGf>^Cp4`zd;avYO~WHbf#Ho|nnq-fh=+Vg#gGVL68lP+d{oOx78DynOKVs#vGl?0 zhFMl&0}ML}I-!6zsc8ajrB{qdYXeD#G~_sSv#R4KDuI;dka-jI5)x`_9bpJj z2=yO(|F?8va~E8#`=#pY$KJgW`x^?;hMQ4ydpr0IW2@cR_vk>?10#WHeDqkFAP?)B zR$h^@a&jmDBbw)HACO7>NJ>*Z>s z?7!HEy%A6&Bo^hd*s~qfaEYNkHUV!fY`$TT8YV?hN){w>eqD4J7lks&V;8HTw(w!R zg(8h|%JIYZc2+~AD3O#pl2Xs2pL6NQq@Mv~Ii!+kCWw99nMS!lNxoB!Ctx%&Vuz*b zM7xS~$73&0wB^pYk)_**Ps6iJ{!(kzSr_o(gYLORb)=m@%VhVeE@@{N@XetQ^{+ic z`soviY1GA*rY&nyS%zo7I94=qhT*Y4r)8bmZVIM}ul!>mmz=H}b}5=Sh)yNpx4Uoh z+}^w=`t1n(Wwn}4_y+H!5hF(E^G6XKhOM($8yGUKSp$>CRVyniw%3u=)E2TRY%d_p ziy}2TC{0$QT9vBgFm}S0;4~L3Q2o-6k!e5}v2~+K$5p?elIHj+vW}NkN7KSEL&D%u zDN3QWTT%*ff>lHZnpK{n=m1g#RE-HD9wYwNjH;``t^Rv&ZNEBJwKF4Foq(k>4QiX{ z=WY6VgMQXPj|KItE2xJ=7D4w|E%Y(F+t&Rp2pcjUIZVa&;b%9Z0k;iXPK~FIN8VAX z!4Pa@9z&1Pu!gS0TbygV$|6oowZxg;;R5>)g?PtL@nU~CE-(u~M~O(p4$7`mV}eG+ zIj*2j=@g76I@~!3T?+&(5O0wM^|fS43t=8NfBw8x2ODT7ef+_NDu<{y0`_Y-5q@|W z1GJ2>`68?aLZ1ZksjE&<4hd{d6uK8^1x-G09=*q0^@;h&aW$}RDiLs6Y1M#m6qH%H zy;afncENmT08E(UaH1rh`(fKK$jBB|lWwItV(#ou)}}@stE_J2uTC{tDYdzje*Qr} zPti{Z6fLm-8txy2tr_m;5J~rfq}vgXBO%P^Y^PNE4Al^n+lF^AY&Hh@oEJb*C~4UI zK|y2AqC-T*KKS5#_CD++RWrvmXU^;>P408&%wA11)0{`p2A};2$QbPeLmivX-bQ5f z5*Y^Z5?Vd2B8SEtuSJ#}7e6cdh6 zb4Odk5p#r4Df=$^ zp*fnTyoc9Utx-`KGDXd2zg9k1Ee>pQ^v^iS3_!jnr_GvWUYgs1gWgOg128tQcTew&o0L4L%D zF(*ReHk1C_5c>2w-+=TDsL#$k-Mld_rd2V;pm+7u<5)|*tQc&(Am7tIAH-Lc zhAm-zokj+RNJwJd&ZLJ-()#Okt#VFe(G&zYgJMc;Gf7CipY}>lk_GFptJoUYQy*}s z;Nzx48w2z(PWSp*5wdSkcob?k{ZU`E?`wFsralU_oBpWNMBt|x)^?*`GIl;V3J1Cv zvDYW|uYfU*v3cGF*f@cf+;o4u@*derkRrQZ&~tou<>Y`%W`(dt0OPRTCAVe8sSoAW zq3J4#is7>E8koH#kpUlny>0%NR};$rIEvue&Fn znr23^P)@_LQYB777Ou85^Y50`B{xPK3{ zt8Hs{Z~EZ9tsfqU9XWX5v)EDO9y@g4)8ofJ`+VmZ*fIU5{?|0VKH=}#Jf40(U$SX* z*Y@HK<7qSL|8Gg3mDOk@`u_sy+4@bR`h7nX{_0km3VqPOK_mPB0{y?5Xx~q66G=~p z5!Ejm$=CoEFQ**?du3dN8+L2RubwiUr4GcoIxS!Q#dQ9z5;5z-`s{T1>Z?S#bbS;N zy#62;!C*n3*VxBb)oP;61f5H6>v_932^uZ3?K4PvSF-7ajBUpehcwp@dr*O+l5 z{ET4S0{<_j_#2rupnt6?U(0`9edNv8$ba9of2WCu-$VbtN@)D1{rjR!`7|?*y*ojT zeA!j?Sb)_Gt8>Rbe(KUrX9v{api%qgFC~dw10fPcE|#D^w9c+ipDSo#6RG>+T=-RY zWLudeykiUD!`bzMyui-xw!1Ro(a7O+X}lR6)_7{YyLQ{70T&Jxfl?a6maF#NyT>V) z{t_@+j8zn<1Z|htmCloo9s5gWWB#CsOsyv8nWg zc&=Ta3up9rWsn(#|NO<=IbX~z`eN>HzL*P#Y6N^m#U@6<)Z`7@>pxrH-t&z4>1pfw=0LOq* z)iKOhRj4FKT?;p*2n>URY^4lG;V&V{OT8RM>_KnwBMh5{maS^A9~X7QeWZ?8mK6lO z_Bae`X0h{#gaxrtSyr9~FM1Q!yJ4(khGRPpCisr(AI6YYOuJs#?t!hZUS#g<5I(D} z2K$NovD4VEE;_0X)+g9^Iv&9Q-#L zXWN#n3SbZUjtSiOoGt%jkeGU!?s33TO+|k}AE9Tth}^FMz>8bt5+Nis7=3 z9l5C6QGM%FwrM+6Tq?{F*e)9rj&GW!o76u^8WkIwt$b31d5WFk1GpXQf%4=qG|JBKYQr!(4+> zU|63(hV_6h2wiDLF?qLuO=g{XMbo-J<_T@K{t-5);gY9s;mf0ewWD)TFg%y;TIe(n z+vx_s(_W*&s#^G~Hkhox_xKJt`D|K;APuS5o`hQ+;xn-2A`g{~!kXS;_73h}qFX?8n#R?g2CpZ@o%f-VuM24h`{} z`1Mwhiv2)e*YHv{IG##Y!;5> z-zBAC-m3euKQ783JFaH!!FQqa>2*`SjN%RHn)0;!(`-R^I`zIwO4BG$e!UHthi@;P z7*nSPFwc=KTegf#4q^VH{R2!_e9PI7_^SrNL<-8|OCWK<-)hU2sj$j%@7=PcGA$&l z2G;Sq7^FC?icC-45w&IW<+fCVf{Ar?$98Vna@Rl^5UpXBo_KWsp6HX)ZoUb&>GeAf zM;L^cqn1aFV7&CO8iC>7C@DE06V!0#T2WH6TMfrFz)G<+*%}i`YA9o2DfzluH5C32 z!o&)vbblR^xf8aEdC3+vw46DPa$d5gs^1J&0SU7_aF->GIsoE%RN=U*CCHbsNW4 z3299gvcO|i6eL>t?qzR%c;JZYc$RDRs#PoDp&CfNFK|!l1EGLeEm)gnrEjW__Iz^i zvm-}qYmb8zF~x9Vq?C#Utf^K&8Ts}&BrhWm+11LRcBiSNe2H_pA!!IxwF`J#$mz}+ zsO{Mr0Y^aTO$ekTxhyQi7k*Qm~v0`uFF5)$(MI2*I6o&;TgtMQDIF(18kgi7K+fW2U{on zXltrnLFsoQp&b9p945|!(;Hv6P9@O;ox7|*+RXVO(#=pnP7O`N?{sC1Q&^w<*kWYT zEFx&r6_EMfmbl5s4adQVFhoW+o}t_U3sec6g=MdO4y0z_de4Rp8_eDz!Zi}&$j--o z6@;Kqfb0uHehA3!gYRwFFqyDjwPC|@5t3?Pm>)aJw2 z2;6g&OByqlL{&xw&UwSyr<~0MsiyK7j}X2g_A8^@HDktKHmS5qHV>e%rW!LAzeTW~ z@1VG1707;WGjMIdCeaCuZz1uW-7{v)EU6}JBdDBI2>~QL{rV2V^#UQCa_U8(I8ids z{m;F=b=UrAhj;jb1ri^;Tuv=W5CLnY#X8(S_nC^f-rKBdKKyvk-hH2Z^2vT6;Q&4! z_}QA8+R~nC2b4QsGI%ipc?8PvstbPy}Rou?NWss7p8&SpKOt0dGrtwH2=@an>972n<2^O(J`CwglYiU2g}9 zHNfzMBs@U^UrxZzXY-tVAR7-kOC^x`CeoD$a17mrv!e*iix#1O_MOTz&PI-p&A~Gg z0>ytqZQ%GG1ttNEt+34md`rDl2=oPkdlj+W_8c3B2n4$};DIICz!%V0~HHZD|eQ z-Td~OE9cyF#TBQ3cb%mN=Dv|Qc#~6Jk{Z0p$;ppu@FEyT@{}zayAqc_c#EK`Y+R=Q zLy#vDOR;Q(g_uadO#yIoO4JanghY{K{CDqQM8;sjrW&aaZB_jPL=!}AWQJU}P4x@V zcOa7U{FhYUfW#dUn&&(V$jV$hemCY}K-Pxx$;u5es}AchPI`(}!c?1e9{9_t4?XdZS0bxk zd+VL|Hg0-<^9P%^e1J~^-|v8G7e@z1U%2|xUa!Pc;1Q1Rl0+M$7J3q*Behi<(#cUj z;I~bsJ*1Tl(LKw=xTIRpk|~r$S?(+pjcbZ*4&-jA{j z{0Qj*ApC}<4@g&@2@iGIh>xO)ATYr14zetoYBE1B7aCGCRt3< zBw$h5LHN2N=RY82FphYx84|V-!xD^1{nHEfLFik3N)@T4@I^9?ss#N}`qe8wqW%0) z5IoUV8Ki^*m`N>?!J?UFy$U6x5Ghq2>20r*gQQ|XL=B=$)Fov*Jk1%WX@Lqh3((_j z-^T+?M-#^(Vrp__jQze+z?Sr0@zZ4Wt7Z@bo}RXpltlE}Z~Q;?+OIGktfPUg{~HX) z$ooloH3E7*o>;5g66#jY_K@0d4gJiepDQT0|54?V(E&Qn14OaSFxZD44!PRsU7P#g z2mb>Jw-0tb#lOT#gnZU`N0`TJ@eI==ikHyO6#Drw<#zpCamm0gjA=D$1rlqFGBv1_ zQ^b`Z`w0~tLO)%$L#!BF$62*vHt8K-r_>kd=T7?hIsFXT&hn!}OpZXMwi*f*93@Vm zAMYBE8j6>ThIEjhC6snKet3_=wp7EAquoyyQ98vR;%z>*q#BOrEu$og(!#qPlTwX9 z(XEv95G7?D5mJprl6G0Sj*=4J+JzwjzS@@`Q={t`OFvt<)kwyNuM;$YH0eKfp>Q>= zUO?rpB2*E#a-AE?GoRGEEA#CJ(I=Zmo&d;^mQ}18a~JN<3WQP znx1*4rWaGwr)?phv0dHsZ_u=tnuZ!5Z}WA39mZk~Q$yZzeC}9m(>q7hzgwe zU(<)3TXGod1HOH>^1xV-wTP|!#m#sAagvqSZU%Rap1<*PC*8F-a((AL-NNv4M(`Jd zC3QJ}+M~}uxA4Z{RwoDNkz;ppZHlGEyf$MY>BeHWs1DgS3k`sbM{dDwZJpUVi%^2i z#ebb8^yR6bfq7y7Q_>3g&Z~qtB~c^NVAj^uOTLif=dq8ylfRJE2wsEz`b{BE&Ldyu z>qPR&Nhhw|jGg^LOavNJrl7cUk?8fcV+Uu9qO&$z>^G9Wk%r$PrD@{^`D8W3c^N&1 z#*MFIjz;des9r`-xlScyf)P}^b5v4)g+OVE=cukjiOrs4(ZmnGp5Nk4o?S0trdq3@5T|MOq_>ulEI@Qw|y{O!+o-Fop*)$NBZ z+V{`Qx?ucY*3{J6*$|amS9nwfNj&ZegBGzB64X)P1`3Z^2&;)uLCsGnF`z1~c+!e&rTpDTR>&>I)y| z)H~y)s|ShE^{Hnld+Nu8&Cj;ZXt(i?7OY6O-@LPODs8{p{i&3%JM~X|HxUP(Hcw1n z3Gr|G8Jb3T^5JWS{5PfTSC?-ZdC=u?y=69F;>^sDoda7Ps|ByJG_p z^SJ6(=x7HYM5%A5?UoZ^x2%uuK%ld3*PK~m<23){v0U4y{%3T^`=8dKI@O&PaBuk( z*FIX^{bVQ$H!rOW?tv{aR-m{x_w8fym)#`l;*<46EM9hzVmc$)#O_x-9j;sNwo_2O zVT+)bDII9bJi0;(DVyTyxWwU84XIC^NL_j&_30C-b5Eq+b|UrM`cyn{Tlf0pUKF7! z_L%bMzN1%G{kKQY%RAO5_e4Anc4Pf3A+Fbp9aKX7yP|g0`So<@3A4)yDp9N6$;B*o zzcOgY1%}KhHnWXN(pfNp-cy{Q3~lt@6&7e!TK|BMUi{!fco z?SVa8OBdXTy)-C081pQ?=MO&^(?hYgr^El7@%z8G^w%!84GbxCj(fwhZ%pQhCNKLQ z#+nbb9QGWo37B((>Yr6lt*NYR)#-#gL&^dSBhC`jcW%Occ+=xo4O1f@V|9|X zIsW;9&kpX{z3zZsPy|3Xp08TV5IKn8rlhYzkgM)l4ob!D zqiu>0&rvNUVq@#<*h8>K5R!j1Rv~6l_dD<{h28PtVZ*b|4h$bY_N@F7!!ysyA2ocm zVubnl-*1AwZ(g=(Xw@#I%|h)rC-0ZnXd2;3z1X~p`*JFNo1CUmUIzqe@ZV{6CH*#p zKD|y8NsnXZ8g@Z(&<;sg>*2}C*4ZbARb06|E!o0JNB$5TBCtrPoNDrp&=J zunm5-Mb%*#1t*V{BFJ)dMo+WY51$;Pvf`f>6@=@|eflEREIW$SKj<4A8|fvY1tg>GB3^!;GX>T91eFJ70y;b09AAhhRvD!r#a(wG7)Dv9 zF4R3ZKDGn?EEIq8i0Q?1qrG8<5Q8xSynArs4y;jzo74QPOxX1>>(y!8jA)E~wOdKDn`s4@}KGj`DIR18^x+?Hr@_6kvT}!| zZNfSrfO!#o$6VPqt@R3ggKy`RM{J#kb-PgtA1hZDdVynrTb8ogkk08wpWRrsa)WXa ztzp8qvU0bhv%2Ci<$#YJi{~VpXDxHI>u5Xl+6iLS_L_229Xcr)0A%mQvy;t1FIRh( zIwVv9w2SQeaF&Q?Ie-2GqPG>ttn^t_=_<>|ddES_O&9#wvIM<3KiC=?jfj6|~L1h5X$^ z^$-Sp({d4al+UYCoCw>|41r8{)w0c&UZD5DsmnN8cm7&s5KaMF4?qv2;(sX5F-a^T z2^Kr0R#|j6MTt`ia~==11>ky03w&(1r8B#sDZ9v6F#m7LLu~=O^XG4{bzWEf7}dHI zsp&_fElLDd4Z$UTQ7D3F;W42V1YJy#ClHku20U~WH@+TF9npC(A^>;=Gz>;c&mMSq zZ}7IsQ~Fpwh6vw?K~!jnlwN{9bbN$ONs)9j6eBF+lYR5Mb3u{Dm8bT|RV2eLF1=F9b?m;_`PPkA#wkfl<{RXv7bP)~U< zK7=9hwT46{s^iY-?J%zA2-M7}x3cw`?6P`SZ8+Pfq}<$I7W;4bqg0(`Wnt%ao=` z79>hHFJr#X@6t57b~rc-uEV|pYSNmqBTr1 zW)nWW4tihZBAF%H-yel&eYeW2L%0r@y1qei4#vSJD~hn|DHLjfJ*);|ff3~Xuo~oV zS$ES-H{E>mEfZ$0I<5wziIYr?ZeWl|#!TQfrI;#Rwf`z9As?6nD@#gNKs+~U-(Mm8 zbn#I|31ocC!*%?#*M*PaZpYwT`H{_HSwhK*6{X>@qXyI&pKmI4rf>&=Ax!?+yK=Ie z!b+u|;SA595!<~%P7;0r0rtbR1FnOc%9e{<;gf!`+!cwGm8+DX>yTQt98!|yca@cu zS3n$he^#?0vRozk#1xJML}xjE@T0B&DigW(q~c6DnK>3_VHN|8+8?j2J$CfSXZv@5 zw4-X<=J#GNm)TCP$diX{pFPD@QCYbRn{p!4V&0(^V=H7{{&0L^pEx2IR!}RU)@#MA zF(I68?M!B6@(2RQuUr-Kst&ME7cYy6R-QfCJ2vEpa3-_x&{F&hE0!04hl!7`UM(nq zx*!9U9D9O2$$r&d20ukVTP;$NA+r_B6-yPHWclFJs4JvmyHH?1iLr>x#RFb}BL!c* zMzM65DTy3`88uHO_+akc#*||$CbF$ud!oqWl`C;z9UAuWHEXSYFq9XgY`6kS=KY(+ zSY;?LFh)WIVQcOFpo~POm1)B%$_u9#A78uH9uQ*oAgY&RO@xa^h(xP|!H`IF|My$D z4qlh7k-4t5YuBxFhKv3X>BLycQu}K+L7%a1U2inaiw=bdLZTj=OZ?G&i0w|;oQJa| zMIk#_c>)#N!#38)9JyY9N{ufP80drJ2!@j^XN zO?b7b%pbB{XoK(Csc;<4$2);mI_eTP(yvAa*)CCtg(W*+`_(Y4^u#2KMTZ0#UPLh1 zjt@2qvf(UMIU7p|#g@Bjo}2LiBraUKH!hy>z)UQ8*n!krEas_s1x|%CN#Z)Nk18AM zADn?lK+4*`H#KxBwh&=lUP(NqRoVluN5YJw6 zv+;iTVVTEf6ue}CAs{ib{h^7*mda=8i{YWRkI$W_+60XQ`#-S`cy?@Bx8m;)iY&?4 z1By*%vqDo`bLY)Fpg8NefBz@@_I|wUL$&G6b*su&y!z5pizM(6%9F36-|o5d=Fh($ z5VbY<;WfkO%mrWg*?geCJ;C{98`!5q!{;yQ1}-5W(38A-1+xxIun?OM$q+t@sQ|7- zGa_36ZUpBA3*wE81u$o;)<{?g3uMKzMjE1$(lE;~XA@4R0c|Mk=Pe;pADbhA5d_xZtq`78kh%f5+?j*g`?V zb&E`EIPD+hhVtx5#H}c65TvbaC&!_FDwk;w0ieYwhk2jD7;$sx75K?5TI39K`okm4 z!s|--$NG##i+T|7Z>zBxuTqW3FZM@2(cTPoIHw1r@+%>eMXN+3y zoZg^IZl{AI*w*4~Pb9MJlH}w#Qy7nqr7N~Ae>6b8>{_qzBU}x8M_0Ljg!F+w*ybgN zjL6eJ5jp5(Y8~JDnw$VEzw|%p7T5->Hi76g&gaHIuI?+cK*^L8gydo$Trn7hp0!df zJRPkfFzWkhJMob4+)DsF3oAD`%fBhH&@dkR-B5X3h)E3as%stJ^7fW6B|rIki)hN3UZt+(u51Mn=Bq>pj_?^|P$q~9p{WDbuT&bEd2 zR zR{{5mj-5HK;EmNj7;T5D+W`$E8WAU~JT{&Rd?Y$7T;;9+Z&5%7BLd7!n_i$vi5CgSFYTfT8^?WUgewoLVW0 ztJyh1+I_LdN~MH+bXCE$B^3~-I_lOeR8%|?k{F*lX(vPhPkzvgm0#6bbwU}DgMZSF zM492e(@w*VtnCxvCK)iU{1Y#WsLt6T&6vUrQN<8B{aSdIEelY?DpsAd9Q515N-lfnT;GN3sxyNZ530NgPr1$7;h*iB$bDDimjXwIkiJY z1$1}6NhPw-6!f`RCE_eSoePaAJ-p`)3U1OZK3DRK12^e6sTdEOvUSK5>`J zK6LiGBv~$ggc3geg9w+gQ0ttbX~oGw6$k5CEfGirt1Ti{>j6tC5e(VJ>{&IsFF{OV z#+=#YZpdfvC#uCcZPw;`PMh@{=98$48M9{XCc?D~V|ju(5G_Q&CEiFr%jd}4r{X+k z$kYJ#F@k(nCDszk<3M%*bAjbtAg_Z!-)^uP0oYp%@d`IUx5weLN|ehcJ)_&(A?iG1bW53f_N3)vrEg2W7bci`6U`)j= z8({8C`Sl6-MBqMRuy_H5PtzsNelp%50}B!}Q4RUuZ^9;lWB{IE;X<}i1JNmo!YC-giFRwa)(TwU z{V>xB<%XbQGcZQu^cIqQ=vG?zr065VZX^aveP4mW((9md{d+xorCdZA$s1Ihwb}-G z%0!*=wgNw;1Rn_)Daq5&j*;Shk4A|2+?9ME^yi8>Jbj~bfmIOJ5#?^yHL+VEl{W~~ zFn5Oq zzN(#x&zD@J+Dp-cGWbit4$OqnmW#kDwV5!QrBrH!RPI)HmBJjYyH5dRl#vx;b~mgj zLRuyi*&#FpUJrFuUS?A>%9};Mj8Me7s8lA=j7p_mIKYwOomCo^L?LWQ&}0^OP6gKFN<05v{aZod|5wFPH*V*kPB6-hCT=WZGCQp&G(8i>X%q+*^Kyg`sNI9kL0J#jt8J4nHpjzr&tYNrM0) zqx^+qn6NzoIuBg<495PbS`1YQEFpR$W0${BiYioIs`oEZxd5emeVg z;kTLb+N|@ePLi=y<(UuU$i9-b^kiQ#ZPAktP92}+mTeuzK36SCF9MYu1f~PZO%PLU zF$u!<=cJs2C*{yFs=LL_r*kMm9|liPMaOrE)YH?2d4@E0rWQ~x?F?n>&X9)H@ad^3 zP^f>|CXr4z@JlmZ^XBO3#QQEOO`GvZN!4r&@LlM9YTc&MT}v9xkUy1p-|fC>q$hLo z2Fu!Jo96FE@rK$>qkQ~)$>z{btbuIb$N!r~dh!WwUf6se^ghu>(6N5~I1Hs=lpw#;FNR3s^;qn9ARHE}a6s1gw;RwZixx1~sG;v(c-_F5RN z!zB2dwB5AD!nbR?2|_(qQN5T^^W251S3fN25{_?w{DLILRO?>QY#G%{&buFat$~p0 z-AA`Pa&`+FCuRg)`%5N`6`2afk}ih^*nQ~rh39p~ro9c*uBpON>4hr zgp8_LiKGofh4v#9XYl#0n3!7cSk3!ET6cfC?oSuAR0&$$)fU_O39&tqdwb8hxUE)Y3-+r@0^CFGR4Wsjj?9uVVRN_P!$r9(?clWG^ zU*7n+8kWzJZRYY`v~aT;oNxOrX5`$3vq9;|p;F^p#_=vqK z8MYgA&F-KrQn69>LBcK2N8(Hu+J7xky`^&NgkR|rJ5?_v+zf%Ks`vExiIVKM3Xzis z>GB_{p2&V4N>b(^fjvz>+NOIUT|I@LnqJeR2{+RtUQ=VRt@{Z!aaln1^sE1my)OZz zs_Xhc_qt}8GY`j0qEu8j6%9(GO5%#rs6mqo$CO4x zB4zrob5&2z^A7dC|Gw}0|KIOEJlMO-2m>tPIAl_r>@W)Fm0$yjAe&KHSQ6r7LeGulK8(v+Kooo!P|Dyn zN_amd&N$)o)o$T(<`|?j!V!d|UW=-R)2(qO8=~RK>YLt!tAp{D zcX)=YLc zSQA{=f&jk|9D;x65P^iK^|5J;if1jYEiEm$mLnn!Y$E5JQqztiq&862vtx0JK^XYu zLE2GUTseg`NGOFrB9`yC5^JC!tHd>;R`96!m1nTqs3nvo&oj<98pjE(6Qr$0mTR1M zWRg$|3<7YOgs-DV8U`=m(%(i9nM0Tb#6b9j&h;ZU&`?rw7Zy}{b2q@o^WFE7EfSt@xGdj`=`uNM}7V7S;lgE%e z)@z~_t-y0?Mb1b&izBJXO4JMrAh;8Z$BEZlL@kN?g{*LKP_T$2Dcxb^OFU4K4MaqX zSPYmGaGoN#%CUuJ(K2xe1HRHHI-B-AbQ(NN9ESQ*h_MPihnd5@6pLw|N~dX^CH>JPTo% zjg5-@9-5Em@@tegF$NX&uh7nHp8q}c|24`JuxIQ8sNX~JZ@K(B<=H&{jb^{+_tz-T zmR0^9YX6bTuhE@#MuhC`o7ak|V1fra zpSZFc&JU*Au&s5%N!mDgN))rlMT}rqhzr?*Vj%o-vRo<(*x;O2uxA1zN#e?DLu|xA zOAlc=U*xg@Yj$4PiaCR2CG3zW*2r}_>|gCcUPA_Hk_}SL1ThBP34;e$9BgUH=CBE~ zMid}3J|(TG=C&@L%MW{BXE5X8WCE@llIZ?b~+K{Or%bBPEb3`s4Qj^PO5=#Qk7 zO2cq)s|V6N#TZCH5&}yUWFv~=dm< zG83tUY-o@T1|H~W)}(w(d}0C!L@5a7irJyIgsg_+(xvlDSQ0cVI`}$9ZJFQ;`cj%E zE(-3bF~Cm%BG9c7CTfdRFs&i#kRdLD9T|m85t4&MkV6&DWlbuz#RW0sDx_p$C}1nV`!}!zY$Le0K4k_5RLC`m zVmJ|!BU%zI5rd{99n;4Jzy^|uFdQ*^qS|O89YZSP9Z2~qI6wAX%K-Wm__qC7pW5~7 zeG2DexkLTdqjmyEg0Kke1HW~u94460vpN;n@qs|soYkk~;1l>1RJHU?tn54jqPAe* zdD{NZT}s8+**^)hLjiLDUb6sde(P77&VietUy%vabiS{>iagmX8Jq-T5kzWMpEB{w z#5sTLQi`_gzjrC45Y)Pb%!fuWknv8Xzakg4QL>?fT2N(1=3_)yKIRsl&s7w(4Y`{4Zn1rDWNzoT4 zW4JQwJis~=wN3!>9$_s*(oRG%n)SHB45C&=!O3E{Ds8i1e3DXf66R$T`i zNs^~w7)}u-x}rY{y^oN=ama_{=He7q?*l?XuaZ-t1?hgk57sRpUlv!QX`kx6TK<}GJ#$dvp^qu6;6R(1br&feG>F30CRvo27QRKWlO4$ zCef?1fVd1+7vk8GMpK7gg_BvYV8DyyEh(-6lumpN7}(kNq3+n(-Ki@3?rrJ z5opLnpTitzwwMie6~&M&rA?#+Fh#(STqeSV!ciM0d|d)50wwy-H%%JoKk)pM{)2O> zfv6dW=}253v`dJIh({R)b;60Y

5?qFCd6ieS|Tvkoq!1Ii~%YeX9A$txoxD

zE2p4{3+TbSbnEd626e<`>}g*+09i&(0p|&Yc0|9;DKhf71VC;>y%AY_q76#SAtV_& zTolaEh$%!?u|?<=i_=Lm3gADRHEqBzYsNriTllzfSre!LyweK2gMwikB8}Fdgjg6A zgINLRO2E}DFr%pZshPU6E?A&5N0x-^nx zWpVYSVIDEEyu2*1Ef}t2ga>=Y6l@9*4*@(%u*iU_z@2O@U5ilB2cH1exS$ym+L>&F3u8Dx z(RXnY_>YE3O&dzYNmz>@M%CO=SkBEQ?768Z?U)${ydrme|`tP9kA9?&5HHLjW@a9%|v?8jR)0RhSSED;V1_n2X6aaAU`SDPlTG?A{pGIKK@O zVc0Q=agc0DgL%XT=SqQnCh7KVoCjua8%8n)O8`>_C~o3n);NbPWY2)%5w*k+S{V+& zKIS;gE{HkK4Yv724i*ezf`MrUb)}gz5QZVd-~!X29Qebz&2bKdNv!^uro@W?*CP$- zO(0<0?+wKW>dhcdyNRQF0Q3=s=}GUOjlADSXJ=x2fB+T;d>gV8L*T$4Zgvo}CqV<8 zj3K+|HaNu=>hYBXD6!DT5;3AS{KV+Zq5_#pgIS&d)g~MV108sPazHIG`2^QgKuD;! zJ^GCTI9U%T@K|VHKVB55_5I7iMec+jz8sclP}1-JZWN{oL=nDgvK4Mk%o@hiNlHq% zku_A<(3+?!u6LDH#VOWA-EeIiR&!|Bj8{j^=4%_Eb~vjAa9O)=^mqCf=>MNL#jwPh z-}{?B;X3A462_T37-!nuXF#3tgy$^EZ9F)y8Vg8}J4<&Q6tcjsy zA(o%!@sdSYflxA768}=k-?kAye(v}Cf2(B3@s~>e$86P#a16e0yo~E~aSyiLIJL#Y zL_{+RkhKLz$NJmrE6$!gxGikHsf+*$of2>?c>3EOUOSnz++KpgY876p(CFAmPix(| zV#cNjA5#e-GS0<{AyN52{d`+ud~{UM4A_m1Yw`d*rzn9%MgWabk;nK1)<6Zf$8qs* zp)p@W5yDm2Fl?h(5wPFCMBtfCgmH+9ti>l1p-du4t^C(;5}|E0kucF^5aES9xFC_9 zPCVQ+$0ri)MI#<(ca*Y`$2?V zEv}1@@6&Z~T^PO*F&ZcE6Z&udQv@der~h#fvBc>kdyVk#()jPc_ls);J=1T<+lHp& zQfb&!g60hi{mmW5fnXd=c`67~p6@;Qr#Ekj!AB6e3&=2k&gcBUoDTuq^E>hxgIODV zKShn_#czdDLGU9z-F{K71jjIc|in|5MNV_a8og=p7gaM2BA|&);va-xvDRmM4vk5qn(r5!}By zsQvw>`YG92_|pX8zimYI4fMvHq5h>qy+cU1ZsA4)uwFODh;>;!M#T-RQ45eu=}|EF z!F4groCf-V7>)RujM1ji!OIN>i+kc(8*boL)&(Wr2Z0qle!XyGEt3*q`41uAFOZ5S zzD0$MoP=PKC16}*WQ8TQus&aEkAWg*6(CJ*VPLJ4O*o2iC@83x;072)K|z69jq_o+ zA|0GuC@inVu!K$62-H9U!>A~- zU)oQ`HL8fOLl)EMXgrE7wn9P2kB$-1=rKsGS%t!Pk>+2+d8=?)I*k=^f=G<3RiW_h zB;RW^tb-y5ioA3pQuz#xO2?Fl<*W*nz3eJvGKr2xG7yq#8NktD8=wSfI)f-Q0oSGz zOBu!xBLY9s8Te{Fd;LX7W zRE~)YA4W6+K#yZ2gKVM^)1pVdYiB;}?%fbKMi4xnKhr(0J7N#yBtDrwRdT$lKjn?a+~4mu z!QoEM32F;?U$S&2WSInY#x6rD84OU&Ozh0&4R z7IhLc7HX=L0pvwZnIO(5==?WJL!dK?5_Cr4qrcPXSD2j+?GCI?H)8}sS{lT+<4=khSz21UMSx)N7DF~<#)j4 zF}Ooo_%{L@g5a1GL1ZF_p)t^v#{;EtQWy~^3-rT~R{m>{vPHKVi>5*Mrqj$ZLg36- zjmt2xX>^eMw(=$6(ik1W+xSx;ElFCQpzA+g_NiB zP`^fa0`iJY`2PXIvlNfN?SqVs$IbF5AuvjD!5~Jsrhps5MUooQ!e!M0gC#d>`@Vt6 zGQH1*=Mo%bXn_4XzK`dI^*gZ_WWulFUnjU9hJ&wB*2J=X5{TX+|C>rv`fn|53`fC{ z1^gYxc_P4+hDKO#=~K}SVzH##n#A)eoYxAlC*e7d1jp2v6><*e zyNoNuVOFFH3zWduYLOjd1y8U7L|VAZ!v)GwkRQYW4&?3CWE75C;Y5y#T9NBF!aZ!L z0Tmjx;AlCr9HkK(cmVF?>aN?H5NJ1%1+xWa5?mk*xV?R@0Fxy$AW;QIM?3GI&54a( z9}zfH8y6=ID?#MY*HE^3&U70Gvu>Sgvb&iS&N1_+P5f&kwIZWzBcP08fx??Chb4v#gw{&~#|^-D zI7OF`Vv||!PR3n2lGUMPx&afR>w;{aeEaro)R2jSpc~}FOc4JQCj_E~bc8t>MlTe4 z09_S24$eiOT+qzuAPbkmWf3|tlF1VFWU`iH#Q8o5zzAb0TpZNQw0_FlM1pmM6kqJC zJf9Hkvn2exY49mlL}nxen+EG`3PA%{-IG{uU`!yI9D$C*x=t_xJvt0QiEm**?JyK1 zW?%qtF*z>}P5=l15S%m>2n6Oz0B;Sn0?h)V+Y78l zK@>=MAz*zpk1Q@V{?Sr|2ZHgB=1?HWHvZ9~2C(x0^}oLzrvEl12t@i&1q3Bh7b0XO zB_(|7DX0OAZbaESajY^msVpk1QpZaJpO9ba3#BRn;bre$H)IE>&g^I*en z3b7oT!NoX(%JK3{#8e!S#FY^q5sQVPabYxTcrf^-F_|?=|K6tkcXIpbS`L~EA#hB- zAw#eibN>#R|Ms0<90B3vi@k{cTk8G$A-_gc0$hM`+3Njo3*k3elGuQKaWGs zLcVw|p}+A@a{Dm~a?bsia{lFYo;N}s`TQBz^qVj;*!SV{Koc`>9hHo5095^2#%V1CeByR9Zq9rb*`nO!dJ2uqy;@bHgu?wc40)HF* z*ASAoEK2!n;D62YPX}UHzZ2`BZ(M1p|D%!6k4^cP`$6DGIIpeJz!j$a!3_z&#C3zn zJH-NcQ&IPiH{*YatB5!E|LvQ-NIpbr;-_7b528&YuiA8-jeo4d0Q!RNI5ITaGW4vyeA>aU7#~ z-b@!zz=@-LYS_J04YR~m90$3{oH?i@>S z;_u^!|EipR%4ftHjfKwrjnniE^~OhsZ))mQE=95OQK+z*Zq-E5epAIKZ7 z$SMRVJ1m+yf-fZ>f{@&C<75Qk{68TgvHf8a@&A&DW6%tM{l?`<0!CfttY z;KD?x3>CRH9thsKKq(oX`*7iy@t7~)Vqj$amipcIut(p*+Qm7D_X5ym(1VF``at|R zUL;aAUJq~$=rdjosPSFWc%USe^kqISVvZ4q4M+*b`V0xsJ8Yjg(k?khdg(B}g%*z^ zy_$oI6Y0dLq^6k|OU+OeJaQW06A6wLrjpw?@X%Pph#-~Rk~s;NFlB&CLn>vo>x`Eu zgK*{rI82n$cjd8~xD;z|Pa>9Ny*Ia-;$#Bb4uv&a|7-kt6(i2GTf2rMW4=BgE*JQx z;ej;|{#T8s|M&U+bVO#UEfOw5zJX90v5xDY%m3_uoKT^M^E~xIoC}ZxVU5o^p^N*| z37s`k9sKjG8i+BL$g1~uWTo`mvf{C|HPkb(wKI~#r@TSN2qfy!Pxlx>8Zbji@(6NE znz(wpIy$*{&Tw>^?m5%Z$=P$J1I-FU2>9ogUCv;cCZyrGz|Y%v(dyl$w^|0rhKI39 zFgc;t6M9drviI;>9!gKkD|_+=6(-QK|DR>1U)zhaj(xxJk;znIV*eQv!57njkDz1f zhA^yvrEqme93eU?0k)1S){d_NVg3PNKh`0!yd@-pXF)`Xg+B?tec}B0r`)<2SPXL2 zUGraEiqd~aDO^&>MAb>saF`pyH~M81R-P?o>7L@ajx91qXK~-XO{Tb(HQfq^5NmRC zss^rMjhZpxfmH2-gFcZ3hM*YfbqpvHVT83Lz_5>`QgBs}ADYt;GyzEjw@#4a<0@PQ zqY?fsLD%|;4X%s<8UvlsKrL)l&Y%-VX-aU2hAYwG5RE~Ep8?DO(7zs;fnq4~_x~Y( z@rDF%Wuel4KP`k({}e+-ZvApvj5InGmHE@_KUS&oPcd|40V)e}XXGdUkzfrA7D?aq z8`yHjKT+{V`uHY026s52zKu)68q5kG zq_)653_OLyjWmh1N^6w_=i0=gkF|YJVx6N*{A%_ifs8*(Sm6=GNH0{wB&;~V=!Xdd zJvZ|oAJte8iv=iCJOBqU&PRW**o41RY@5Uw(1EA}>oT5#sNKIB2AIb}cDNkzUB6UW zrT=d#YlV>BjS<^4i2&pc>~&!Yj+?|GJvhKncN3t%PlyZQx*MPy;IaZPq^YC01lB4+ zB_SV)u&2a@1x&r91#*HVyGADth_tYXcHvqO$&!$j1Qd$`+{^;oelR4jlR2PX7u5CHU^Y*s^2mr_DvUMuBk~st6 zS6!5G{_*=hyn64NX$;Z7yPWu0FZzEk{--k;Yw=Iuvwk~4)t}0O3AhcbE7sY7paPDv zx}~Hq(K%;=9ZVRGfDT9;jsRc-f`br1n!x)dgaDkZ5a{aw5iHHpcj2^bBh3T3Cdv{R zD1r=(C3S($%?bl897SUyI}V~VA*@iAZqDC^(jX~ugg_%wf(Z}2KkeTQ`$ucVyTrgE zh%meH|81X5*e3li{OmE1QX@^^-d2!;h31vlH{QNvApq@oV z>e|SUU_=AcSyG=nK5j{iP?5bjSsYgeby?&_i`FF!&YDPX9Weo13rs6XgUfI&$dg7z zhFY~QFu2dIg+OX^vd8of0oR z!96@j`Uv}I{srY#m|4);`J-ng#<PXNMjU`xi-@an6;sM&peKvQg?A^`QvqCMTN)83LlqrgD!i{Ci?Y=oxJqx zhZ9X54QzMkUE-c_hKC0c+C=AjI6`h+s(Qf2gEqh!`*FvSw?ZjAgw4bqklswGa+4|KS{b?g0Ey@neT6EC=r)g<0~r6FA; zTxptYZ5L>|u~1dp?YZPcG5Oq+k}F4oC3e?Pldg4p%JejQlSgML%gRgYd}>~B_15R2 zn>9l>-m7J$(+{sHrw&IAZH1fPQ zJbcXXeb?%JO>K)6==Tqg)i~}WV;eTyjT@#~ZFN92J|hAzhBNP0^3h#V5IjaAODgwc zN#^UyFb+M8ERJyqFyHS{xzgmU%yF~HWf_y~MUtg)=hOK^I24%tgYgK1WQ_{g(KUoQ zMCpR6@edVTPGf@CyJsDuuCFED{Uh8lr25aC9*_B1pkFM@)RP!Y&djOnI*_bGmlfpu(lCD4*TNrQv#8EXT>DfsSl_ogxKS*AuwBb53HNh42xGr}( zu^5%TE_gacPAMQzv7PUttwNS$JIDK!VFt2^#A&PKE+tN~x4!SLBQB(7%SR&beF|U{C zj%5GEoL;BITtN`HvT3yMkg@gDC%xfq46WZf$x zJ*Wl6ccWvAeuP}bgytkgrcg`JAg={KHO2QzdXMbjCC8rtkun!MH6 ziTj|zgNd(GKU#lLk-jeMN0}-ko#|>*sBDnca6P77$xr_@#XGGSdyKx_T9g%#wd%TH zd!(PxX+^V5LpfPPa*CG0Bha(5h&ibOEk|TYS&p&0Y-9?6lyOl=V9APc-iK%J! zY6Y`rNgtM*V|7$`J!QR|XU0*7M+au^-#zR7;h7IPAKE`udnmk|vYul-|9YW*VWW+^ z?Jr}K3wF5QI-Ge}_wc^MzK1IV=?(>_0+o03-bs6D*H^%KzaVhhe6Hj4xz;Nf>+dHA zdYn~zCh)4yi!<4 z{W3L5$})K`)@)0)qdMH(-+8~}e)m1adn;abznbw;QGki+n+ovSUOl-qLXRvZvYFz* zb$~wWYT%NOdJa;dnP+IzPQG!aeQBDWqyC|tTCVah#S1w@ zB|;TKMM8N)Cx*%!#9vI0+!VPvGC49ea-;XPm@6^W#Y;=|E_ta+q^K=E;w7k~J6Bjc zdHa={i?^SW@mg3c@>p)g#`QI2OD>;`eTuF$HRj6OWJ$ks<>k`!lWI?=t~4qoMaw)- zeqS>{<34Hobk;l5fhhw@1NsBfVIo5km(mtik1|KEtZoxF)yYUa&}teIW2%&II#Z^I z?ol1oCJ<6+x+0&WjLbRDEQoaEA-e+iV_xtmaY6?vUdbLN6%1K)STL zrmZH2D}LfJNzbdjTs67Ps;#0ewxzUJPa$2s#kk1+f_3_(VM$0j1Qenb+0CMW^$0 zB+kF0X`{VA`<{!Gs({#P(Js+K9yi{;M3Y3%E0R~HwFrqQFWIE3%)d3=NhM9>P->dp z`hqF<69etnp=F|%Q{!v&mI&yl?zFzGA|a9~qMh1bQ(qI-%DIHPW|OHy`HXy3E2Rpw zV$uoWC!5~ZP*pc2s%>>%sj9FIbxu%qnXMGGRlxbBs`&$}ZIU`-4 zER*Zc#Z{BA{j)D<7^a!p?3oO1w32RGPh_Nd_#ZhsXW>!JM?1dUP++-LKhL@R`EIKU z!)6a1o_ECL$fqNjM|2OnJj{Hk_>ii@BSGfp=NC%XOBYWUO_xa5Pd7?8NSAa$T_`SO zmuW6mw?uZV-NCg(V#kynu{&1iwCM(iADJ`FJqHcyv4o!zkZsol4cRWtnp{5zLQF3nv!Z|ReO^R#fkPc$J~Ce6+7t{?S!?B>h6FQ;DKIHEix zJTzl~`<+{ZWW&6tm8XK&pr)JTisfSDmdLG@dn3msw?l5G+#)%F42=xGjFlP68M8B@ zG9)tkU{tF{`}+llBV2dwWi%`tX}%yJ}-xFUc8!wE3Z8j${TY3qWHzL7hEr_y!hh6@P#WE zMK4UfD7a=1ezarx%QvlMHAXkr=dMV8tM(-NM2XLW7d)#)P0UTUEZDXnbwSGWoacL= zZ#1WyZ!_Ozo-(8tZuZH!%eYISOQ~y3mvfg{m&uEL7oJ=Uj|{QUv52u~wfJDM+v1u< zsl{rGQ40}^R10qldkcSy2^Om?EG=v;+AM@3_x9@a#=LB3Pm16zUs+BrU$;nYk^CZq zMcj+r7I6g&bd#E5nnatHH`SN#Dd#AE64~8r)v~aCVaLdgOVueI2R`(ENbS??3F_U| z)6f^$!}-C!@6d;i-t9e}eS2QMZM{?zzNg!&*`wk~jN<3VpGnlc`?mPfeYg4U^382d zXijZTp(axIQa4s+Rc@|~uiR6aJ0>$Wc{FG=a@2pcdpM3$k35I8h_r@ePg+GXAUTqB z<7x4x@$2Gk$%n`j$g9Yg$xkS&`Ca+T#l1uZl}_4LKky11Hk>wNSE1vXgJ$(HL5t7Y z%{M;2bFTA>g7puk+`kqm6c`Fqp3M96=ytIKG;|NE1!}!QU#UsyNU87C^iuVj z@>Jug(oMp5VU2{gnG5_iXpv zdyIP%_NUm~O={xbAofLj^TcH$62d#g=ZY8$mr8_*2?}ROSfMfQgNY#)F&} z*-~^RIPpnhTsp&Ur(J}-s$GuVN4sJ>AG=}u0=wDve0DQ8Jxo8F{xNm)rWaznCVGo{ zi#3Sar_Z+kZ2!7ItAMM(xS*>*;J(!Tb@y%Vuf6Y4u%}>Sfr)*QU8jAnecYz5G?5z9 zn#8N^HD_yX*W}m4T)lF2+tm+OGtwWWpG)sg-ICTQnI{&lJ>a==ft-5Xq$wJ(zEWDP z)uqv;qA+Q%>R$C&*YcU=Gs@j!<_uR18uW&@HrJe2>k)k?dPQ`t=zP(aqIIG}YRYP} z)dZ*KOwZ3TRbS)WT3C})a>0HyVO<(4uu%md}${p{vmQRYDw|4G_EVVW0kgXg#X8wO@C#B1;tiS@ zWE*52r2E?awd!k&*KH5f58ZVZnx5(6=At`2Zb#F$s_Q3j^4z?BBk-2j^$XW2H*0SC z-4ws|@cP-CJ~GV?j(s^NX z2IAlGH%x4pV3sI%My@jdY<^+>t`}BjaTld7x?WszQRbrYMXQVY7d0>Du2t-ay>+0& zyCbQ+qkVn*@%F}!jU8g`p&gmG_T_ZvRO-aJjHV868#ej8kaHXPd_rQv(S%b82d=~> zX(X*ns^)vdcbsnn-%>sgK7PJ^;-%uJ(%z*hr=_KRNh?iTl(snSNLq@xw)kC*0gVg| zEBE|)!;C=}-s3e#Rf`WY4i@yI@|U-m5LS;4d2&q}Aw+T*xz_Cni6pGHqh zC(BuuzL#A`&PHW^S>LbOZ{Kg!ziL7OS7vffa$#~(a-PFUhtt=rxA1LQw#90TtW3R3 ziBUxmc}7|xy|B12qi{=M?y?KZcE4PFXa1ctyEpDWZxmpZYh-fv-u#vG3+CUPe{KHE z`K0-4=3ktzes=fSvU3jS3eQTMs|b7_n0@Z^Isdck&#pRq`K-#>`g7^$-k!Z12#(`k@e8F77g^sqhKD9H{?bPjy+>7QH&FI`#H+hfu9{)Wv7H*!Ba^k{?-6wXP zIJWxa>eF3HjarSyjV@*9*9EN4U2oE_7bO?f8nrxXS=5QBswmBKm}yY9Ysap0yUu&(c$YTto~d89VOiTUw>xuh z$L6)&iM-=~yZ`q4J0rK-?)2T!zVrOHZeFv|K9jMP6)URzl>GMlEnd>HL}bYtX2H{f zs@C$Whp(Q65v@$^*|z%G4`$zbaP7epsQHuAFHS%Du&qP>mgJ6olf#eiEKV%WIqrJ= zMX}BC2gMoljpp}zHJ*%Ga&Be+bD7{fD<-cv9{fH~K5&oU!oY^fpGDWi4lI@JuK5F!i$R((FCil^z8i`#tv5M;5)EnYm}jp3;2hI>P|9 z0FQw1PM%Jk&e@$3oz|Vvb^LYBpY{)|>B@dqbm{J5#ihPCD_S?Gf9iiH+iY^ayRAZA z@@V?u^s@Br=_M}tF7Yl~T#9aOy0!UMbnfJN+qCa^HaxohsNU$N(UWsm`itLsKGA%l z_GE@hxol-#LSAZK-h#vhr3-c~$a_BVyz_aJ)o;5@!>z(2!gI28P@0dqoFk_nrRmtb04|`O35V(fjrFE9%~6o3!6~Ipfpg-mso!5sE!idad4D z;v4Qp-ycd5dYtmav8ncHZKL`F^(RFSimC%@04$L`Js-Sf>6mCr}7k6awm{jpD$jO~o~wB;x5PR=~(5#kiGEX2E~0dK);tBzG& zQYu#3rWB<#WOK#lw5^tHU6PMbq|66RalsCr?Yu^O>-o3v-4Qy@ds%pz!WZR_E2O4v zHgVOzZE@RN$EsMPSihM1ZuQe+C%1$wx!`^w>cXlB+F*Q7Tg&m5dDTVL^R9#|d#R|Z zd{psKR#slCa#W?x@x|r{g zS~^b}k^;BQzRJQ$W*4e$Tt`g3V zr-!);y3{$JnAtV6VtaX3`Bt0hA~WvKTr-o`?Z%8FGhRDi%>JO&F;7d))56o_k(!a# zIrN;;Io9C!Qd_TC*lfA)Om`754< zJgYx@Zrz+|zGc(PW=vDDRJp8tS$l)U2CI<(E`3{7Tk~o&6=fCb0jmSLZPwQ=ZGP`s z>blD{+qL_4&FurbChw}=lf`; z>#ta6m2H_bVmjm@I5kDrQLWZkT|-^FNUO-aGpz1ye)GkLJ~w<0_}qPw_(J94zhl!+9KTpSr0xju43q|k?^j`!`M?YBDfI)^$Guj}6GzFoO%Y--#A`fPL- z%^ja5JkQXn;qFnXmE8 z;`TbP4=3+0?yh!D$&|N>j(FEI+|s{f`YF3pi%$itS+d4?O?0nUZ+dILO1p}vqd;ba zg0scicTPiFPpR}dKF*w-@gP%1p?})$bsq=spK%P9+Yq_#OyWhmqcs<5ic}9BJbUnr zUqQR)jmP>smQJm`o$*=T#eD9XcUMlC*Y3zzrPyhDBILyz)3%7mz0cY<)T(EeDto`TPSu`(Kn<9JVMbKM})-IXb+Q^Jv1{{hp^vlnYx!>|L$~UhPZkpFaJN z-y!Ei!5#58({6U%ytKXhC^pe;`}FM_JR=@e9W6Y%|7ekC^U>5tt&fr)H9flV=+L8u zkIo;x;fx! zokspCGqI>b+_iq!ih#X)yn~mm-Vsz9xXiHAaNo*`2g7GSNAq8_KYg`WjiGkz&$@}q-~N{r5&D_zf6U)b*=yMIQ(oeQht7C0=J@f>@;?s;yQ%_X}_YcBal zJ4CM%QD10K+~*z;+Sy;1R7YKyzffyo#=`px9n0#%W~`gM zhr9E0-HN^8mis~~J`N}KeY#t+2=f)LV8m5*+B{2o!#^UqY)Z`gN$Xw0^1=Mhoy{K<8Xgc$dKk9Szxv0kI?5JDO(NT&6v1OYoHDd3#7mQtf zm#(fWxG*Mc&4J8wZl~^^&^=vpq2zLKLH8=^3*CDq_1z8op7}O3KcO~`t*2X{mNb1~ z3wOPcW%w6nD|0|?uZv8skFMGxtxFF>U$-2(yD`!F3!?#Dsuz4RD8#R)1K)ScC-;%= zC7+oWe4;K6eQ58vJCA4Ht9iFiP!`^(T>ItbtL;~{pW9m4?zUZR>ufvGRx(9l!iLM! zE3`r%y;=VB(UoJz=hc=>S-7#}{)yKM`zm(C9`AbAu_E+|adJcQ_GI~#r74*c_9@2d z4X>e4Z4~uod1W-Ef)u1>BQ5zHI33nIUUsN=SmCIfS+`~NqJT>$Vj5pZz33Nva;bz` zUSaGYldW(@hF?}&W`*J;QR1!_i(!|sb=2t?C{Rpdt}3#ULbF9^Zq^|swQBoxB=4K@y zS!T+=j5AtfGEmC%Ku*`dCB^({RjUJmMvdVfAM8sN5X zB&x38r|)8C-^Wh%eVG<<{p2X6k5>jc+pbngzSr$4AJlW(nY-)!p3J>e{buvAh}aRe zA(#H#F5UV?k1OS3FJ3?<^Gue~)sqmMd{+0x!ojmn^K%xQ_1(Nc$M>CY{=(srw4v<- z+WY2tm+W5D7}4Kl^yOU5id#=aN-`@ddcNF$s~G&W>G0(>aiRE(k-Qd@k{!6(R<-&= zS%<1!_PAub_%_dO)~Z||nfIY|;QgcX{N0T3E8VV5oR!*9;a!az!+o1Qnzbv#Blmr& z=o&fqDg9Q@>FcLouYI+)ckPo84?ldG_;}*EiJ!Kg-JY#|K-=ZmVb4_0TaT_kT6*mA zvCMfU)Q}DLM)5wSPTRheRH0*vyo&zRX)&9}ygv7SsQsL2zK=qcj^q0>=i`yS`f9gk z>Y3QNL+^Uc+WL;%HLWz7pg<@sG^vFkbqdpcWGVo-#K*c=n{Na@w9Q|Q{^^G+hK$JU7Soa zdE_lO^6()Ul@LI#z8xd|S#<<+yc=Q(DkG-w2R3$pR|mzAWQx>|&9$HH;p{dOoys@I z+0}lYv)vpg)Yy>q;AHRY=ro6Ta(DK!clB_dZ;u-C*;&uAM)mmqT;8wfycqs2ofpF? zY@HXj&I?=Tg{||#)_Gy;ys&j%*g7w4ofo#w3tQ)ft@Faxd133kuytP8IxlRU7q-p| zTjzzX^TO77Ve7oGbzayyFKnF`w$2M%=Y_5F!q$0V>%6daUf4P>Y@L_?r8+N0zftF9 z4F3BW&Wq9C>bwxI{aJbDS8!g8*g7w4oEJ9E3mfN!jq}3Bd12$cuyJ14I4^9R7dFld z8|Q_M^TNh?VdK28abDOsFKnC_HqHwh=Y@^)!p3=FE8N9onqC# z`c^7@hQU7(x&KOWlxo9v)$26Q<%}|0jY# zG9IKy@Gta3g-KANNTA=*O@I9$64Lb7x>1x-3_;0TTqlbB<%59O=6|Uho7ik(|A|Z3 zoc))s${t48!^k*Gu*d8_jTA6(u_s9OYUIZS1$#B}BQ;?4%3k{Yb(Q=N*4cMN4y$v#rJh~e3=A_xIek$*z$H3nkFAxA9nM+5=zr@ zoc28liBitVgG9(~CC6{09DUGIQZtH7^m-e7UPa3N!HVm5ekhZNge)RcZldl3Gvm~z z4KA9p$e+gy!}OTPtOuw4Q2(otVNWtDT!6ijk1LrOw#i?}QoHDMinur`B^wd;4K9|@w{p%% ztk=k*vG6(mtEAjRG^}-+R3AK3I`ufr`P_^VlgEXz&CfJXdH1PV1*g`$oH?@X#NI1% zeAD^{PDfBUcqlu|_a3zVW0A)6pd)m35#E9+?oAn$i&LoEa~_tdtM$LL-R3oR_EAgj z=!7cA{td>Lg@#T-{Bt}PnwdowCsiYGVrK51-hf8(gyi&v_Be!6FyjP!E5`Nw9SYT!Q`_$rEkASNHH?*cGR(?K>GI%=6-NxO}g!)w6wX7O1C=HR;^o z4&M5(^iDq}zFfM^C4Bo}Y^{?ICuNDeL1Ev3m;jHd3cUf@Z>+XU>HBE*@B(Bf6O5+K zGmAeRKK!1PP;>Cj$7a^DonqNG&C$3&3Zs^%)s=o7!&^@kApXWKR>gK;Fu_b$9Oz)HjF%RFWR&?&a zC@Uzj`Qs%WAs#)VPFwm$-Nn8Wj1)j@!=<-M@I35&vLs{ASox9B0mG%$+scRLJHO~R zaTXM^d-lSuV`*QmOW)R#?S&gMx8+>+2o~i*dGM6oXaDHL--QBo7MZHbU7EOHkf&3^x1z|fa(JQWf|J!}6P!^xiX}G7 z9L@NiNtOug(=Q2|#fJcc6%Kt`wJmi;oYIY=uJrs>YFcvXCeFiI@J0GXX=l&n8VNHi zknMr9_QrpI-(3^vvVGf2Gb1J8sLp1qH&lJ4RPz(FD@S#Xr1tJU9IPU#Y`nD8a9>1W z%_l3H8GYv;83vqfUYw2XJ450j8-7?|*Z6H&6CcP6Vv4!Zj%B44)5c;Se>rvoIWpt! zt@iEB+uQ#S8DAaOMYQ(4k+i$+_`xQT*-`|Y;zMuP?bDis4=R8kJZM;;u@=At}f=RmeN$6vh)Dvew zIAH9#Kz7u{X>7y%l5-GCv_-GMMOiS`n_VOnqi*y^5K;Qnpp*fal3CTxt*B1po*yrB z5=N)_44OZ|UER1gDsHAYH*9a{98*Hj+Q~Qnfi3{h3fKqOq5Hi76k8)I>j(vu@jZ!eYmXuT+`^e4|1(u{#jY zLl48sH=h}|D4olR)w)z`obA0$Fgvo@-ot0siFhXEbuI<9LU3=i94|tIq=y#_$aSu< zu@EL&8ZiB;?9ue2PU}PKenneC!^-8fhE-rPx9R7ST?=+#ar~C}?uMxPI_k6_eN3K( zBZFEI!2XF_=>k-|2%ZI<551;f+-{770}ze-?D}$@-7pJ|L}>_-Z`P$xqsr0ra9Qny zQkl9)6AS@4awn5dQy(V}h|E={s3`Ouohu<$laDeQo9JF*}?uDiCKl*0j5` z2rRaFz>C|XSDp8VnuY_us{hRT&twF*GB6^@Y__fbW@#irP~6=38FCBb7JY_4Q28i* zzEt8xG*(AHVd=Q_%i8kR0Ljk5_LvM;#|4fTxe?BAFc*?EUlIBQ39*+wLA>SJ9o!1Z z0b`l3zd!C2ElCjo6njxE6)_MttsSOI;)(;Cg75_APn13v(eZC6J|xvk zq!-^kbyIg-lK4PQ_tLNAaner(6#RT;`@0^m zZL{%8Cj#)3sJN>~-{Y^{!yGRYvU`C%LPWK_sCs4mq+Vevoh&=SU?CvwY@b>wp*x|c zqyOMm9P_LIJ?uDUdh@6Sh=ie1_b zcyX9jJT5w6c3ygmi5tz_z~_O6(k*zfN1=m131~VCP~_sCwesCL&uHo0Lc4T(hYGBE zyHSm%a$YE@kBkY=<2}>n>cr-ZQLwa(B!uRN85=#9Gvioe=Xts)(FOIVy+?7AE%|gA zG7!DW9lpbR-Vws(ypmp=`4dBKL0Sn21%YBDJFQ%8+kAO99B*NEeT%bF=B-6IAgw5L zOKxv%k)EWezCLvCuLK+|N;7j3o?Q1~=x2qPWSLu-br!zwHSAXxti&x#!vZ6t8cm41 zfQH{5QCki5ceniC|L~bqiQYqai$EJya;_X2y%$kd>!*yfXNz0@?)%ttfBzuYG5Jp0 zb9)Dw{ZfIF4@)0WaVorf@dtfZUi#gWxRUFdo)i9e|M)+8ca)uLrW%$S(BO-E=2#7{ zRF@YmKG2@Huj5?Kj9NfGk3vJ=OV%nNJ-1#oMbD&~&2irOe%9WeQkxL8?4x==sJUzB zP>@HFG9tZBOTeXjGHE5}mFsXIQ?=RqohJFAL0Uq)v7(zJQkq|~X z`*pklxfCIlik~3VOCXh;Jg zgZI9|)c3NTcxqeWKK)~qZ^x_KZdH=XYWZT)NOhXGl>WiYAVQAX=}`LZc-fB(FdK8` zWpX4MaW0Olj#YQ`E=o7_4E7276+@@64s~pTr>|C2gvYO*6|Z%Cq`0L_^hV=6Cq~Dn zCxMY>@Q9a}C*O{kd;7Th)2q6%g7Yf5PX{g#qrltGrBi^THe9;=7a;})Is-8nFFD^}e5azu`xRitjujeZ}KH zL-g|y{#k2h1NG+a?N$;IlIu7QZ~Mt7B``(n_K?kwt!${g1Ml3Wh7q2EL&?V$N9w9B zWuLij@VT{UnE5I^s#U5NX!%^tzVjTcMY40063_e>qH^y8f8{V5WqT$#y&%1>f}bnM zmn9`lxRlm#_;GsJ*&%T?HH&9AwN?F-y30;#R)A|ph$|$r9G;!Xdyec|D8#eqcM|>V z*;NScv!1Umc-7+q_iS@L)w4=}Z?-;owu(?43F8|#$oMq+>LtDOIj{6&e3XODg5Xu1 z;$r1Iu?x7#CP3x=sK+`GpsPOKP}rbTn1B%p(=7#dCD$_Q4a~Ig;Xe-Lhg+B2&>GF& zRaZdRak<9eJu$q+aZ5{XsIgePW0*J5SY_bul2+oXaj?$QElbG}sqWLUJrd}fucPlG z&$zfHI%*K!{A@Hkls01;{kJLpS_7O%K-}k}DbZ@JZ#2&l%o>{KjFQ-#GX%s@nYZmX zz(M}}E$8}cIBLGBb!1z9I7gxhJvrr@&7dRZ=@z|;#EUmbTivkkx^#Kc{*p}uQIl(0 z%g8|=8E`b!M^4AT$oerNeENBwfgZ0LeAwuE#6U=;CY@8BQ4+xm{*OIyeEZX_nms3DBLeE$WFvyryr0?WGeQoCs ztZoE7I;Blca(}<8S(@O_mng1{svym2C?2O8Lvb0}r*U2is-NCowGbJzf7|h zTuw^S^S4Ie7^EQ_fcYa6m)WJfXnaz%R-v-j!H`$2yCmzLrvnJZ>X--jR*{=A_C*~R zPV6@OVBeO*>wW87xX!Jz0!tHJbC?$C_{B_4bF!G?(ip5IAK1Z&XXMG#;OO_aGz&x2 ze)k@ggn03|preCtgDVs6T*<|5DPOuEPdES6*iT2xz_~+uskz|a@v_`wh030#L6WRz zdQtE-s=BN0P2fXIyaX4Hloe*qHw%ppjvvD79g?_Txv}gP1%k(&19xK$$tlH)IH(R8K$`E-en=-2QP7r;oMYJ)4qb3xm9 zQ$QHde2ipq>LM7ZxCpfGNqWMY<;yl8Cr6T_;#2Ng)JX}j!*?E%4k;-(H)n;Icg_op zdE5JyJlh=JMfiMj$-;$SZ4BgtCvg#7k*4-G>CCyUuGqO?HQyJEngXOXA!TeL04|op zXH8z*@?NfnGot=@D$cxzhio_uTITwf5|{7aFPa5?1Z%uEkFN>`DygVys^AU%4~krV zhh+$w?0r+|uoI0dFwXuwekQFM>uRo#D=chBzQdZ|37f4z;{37WXEFYjS~vrC*>)ko zhQ|P2uxlhh8Jjxd2{@g`YaCp$Bev;D8z>B{`vEy1iZW&4HA1RszEj_e$4}Z3ed^WS zTvo6nGAOL{6ZjjWp{0bxWEDep?LFIhYULAEIe+c3^&;8NntX7`r`ov>`wC-2P}T!c z6Sg>%#Y`ar=`$cFd!m1d5|%&phJf#pa?eXl2PeMa& z(8mDdJ@`o&ci}Ulw@M@>#y;8a{_zfi;?y2UfF^krd?IyeKc1Jb#Hh1?5pMc)-#JcdC!Rj=C+0-c$VD%<61*JUGHLAusY#Dj{?J3dcDG_Uwas;)Sq;ck2!Z{NF49 z*q@L*k~)(u)M@x#67SBe!384bzqXng2O){MecC-xL`NF-K27?va(g*PwHh28ZlZvR z0jOf6g5|RcT;O1Zz2d$^7Zrs~s-#J#u>ylb)97L&UCdw3{25OwM8w4c+~*}8-tL?O_*&DW*ZGVz-&=if575I&S-%j7b{d8bSno2f3n994zD z2K1%Dpl?i$`T%Ij1BUYDM1AxaMhGB9RP;b%=kb3T1V9iGNC3cG4|N6-4Q2dRhn{^M zpLBWo14X6utFUA&tY0Pz@2psMwZdgRa3BC*tmQu74ckzj!TJY6?l-@Zho`%;p6lJC z-1ELdX0stC*RR0W9{>3_h9Blb+}@`FIISW-KW$VeNISps4fuCjyT?im&tmNY&x76GbACu150CygVmbHULrKm^%a5I zM?uw!VJ$Ci}|jqH)o-2%Iix{g#R;^$ zl2E0siFmg*qk^mEA=vz;R9p4Y)?1&mw+5131u(0l2Kj+oH*|z(;0UKZlX2^>u)wH78`eDJrv2Ip!KqH|8T%Fw75dr_Rx%9Megl#n%Q~WzHt<}K?9H9%?ns$CtP$$&0}+;FujR~_R_X2 z)4av~PCaHug?$;Abj<4YQrVp9l!fejkC6(2Fsnk){!w`#k-_VBhb_2ynuPx0mSU)P z-1lH!FfM`Iy!HAPcjbw?purHT^BT!}6EdA$sl~918~r0zA4@OAn9;g3xzvv1jeot_ z^0N7*zmZ45mua4v0d)~T#~iA5V=ESAPjXSb2)6^gNj6hRB_lEWv{7y zfS>~2+a$LZwLB7v5}nCQS|@Fi9&46Al25b+gk}HGytq<|7ld@raZ|;!xCR{WFkXyn zi7_SZxjy5N<841aUfi#Bq8%Glm`ZGtWgcwX=6Wsm1d#ghvwWq5%$(fv z2I*@Qo9V)<9;4b?%inK(Dm6Fiq1&wE=gmI2x0C|IAwAPb9d|gu9~g(6!<oQoxhbj<&9`Z39z|f*M6QJb$wO~{J+M&43!mr8VZlvu= z*7ny`-(jy<;y!P$>a-g^>(R0^4A<|7r0UD<6BEC>Zj@_1kZ^gz;NU#+ZHrqONs(XR z4)`Js{3fIUzlZDKc87C#HX1VdU5z05)W}yB*hL)(b!FfnCNEG!cz5N^XxS--vG*bG z@p~&d0deN;d8Po;u=jh$@{;mKxX2xnze^I4Jow`=blg)0Djdz*({D(N@X}IxQ{jD? z_H{(Ltp*)ZxcwWuhqdEvRdl4<5|@G3%r9H7Ja1zJI}iMRGjUH!-r`t8P|Ws<)}0mj z@2zkD#CYZ(+HZF^3EW{1@E&--H2(PU7y3ieW-Td%e^rPJ3$0gzZ&z!pjdj{WxCw4C*?iD+4 z`7!?mTW|ycAfA6Aiw=MmDBB47)gIpuoWE-nXH1IF@+K|4xvaaof{>+c4|p$QR@QGH zNK*W6E4y7n%jCMw$NTjc^oisTNq7_;SR%A2PsJgr`-^re^Q!%?ZTu4ryfpg0aii&d zHufU6)nI(FPS`@IMzM{R1mNDKT!Sau7g{LAABpevdmBULurpfyLRy1!UwV35p+`@~ zD+{jAVDV35MO?5jB|*dJNEt#|0*UDp2b{_S(rf{!n%i@1$t`q=$wADBe-jutA!2!U zJ-luJi$9Khc>C_qJfk9C+PWIu#HReACq5D}_vXbL{rHUHu8^d!oTFnk*e}#`bxMbe%=l|0!Jn zz~pO$cDbrcHiKnY_~eT%QMG%Z@(*CIo5S*2Fk`o5pSS8m+Xv$bNq=?zqCmoNp$ji` zOGDM&N(yB4$+Chiap~m`nHH+Un;6r&X$|wl_Yx&9?!%j8l9&VJqN!PWYw^oZSksNB zybRwU%VpVyt6vjZ{J?7KcPI>^Q)BJ_>Y5ZBaf0oXfce*0`l3WFPem2U5jWxY;{)@g z`l3%N)96lg0dmhcgJV}rg}*z>)#KV+Zr{1s?||^cI_FZkBnLv)2XY5mIFx+R!2*We z)8|M#_RyZ}{E8jfV0>R2*&!e*D_;w!aBv3F_xTHEVLz{1lYyVryJbxbIB+!-3z+6@ zj8E?tD~zot3)?r19^y5U;Xb`q4Emh|_?q|)48G)=)V|L2my)ylH~+d!yGbY$;HLri zqxMKJuULE(xXM~XG^DLDK!y8*qB8Fo)Q(tA&) z>?4w<<9^Me@9Ez%r#>QcdykHEztR0qDP%)r2Y5lL=CcZn$;yf&2CCfj{n&C?Q{P*a z<&%;oVXtPa5?NDM(-70WDl{Wq{07aUA0-QVQs*}0_R(xWtMgn{cfKEp=2s0q0zSQletQF*tZ-NF0^)8E zkW%a^r|u-MO$8MEE}>%5$?fDvYTK>At=9UQ;(-uTQT7!9Cz-BU-ZaFB}m#kN97z@#BX+X?L9JgchLGf|1X(LLyqsHTC_lzsOg{;ds^Z z<~`{I{zO^DQ1Pz`!vA>*jmQ5q{6Afx-%ZUO9uu8D5xvK$oh;J4YM$!t*yQ__H*_7n z>Ra1m?}JWa+=h#C6(zflk_B2l&?H^UqG8ev1JsxLjs!HWv*Y7tntTkaDTZlDv3WSzSy3a&6)6PB6;V1z~^65->m=bR!9;ihjPi7Z#gQ7T>&g-0pg|%L|Hky zr~xf2p(~!_M6zm$M~iNw4aIJkfR47I&Nqd#zwXbxTE@Eunn+Q_YWf};7RvJhtf9Db zQb56P(w0G%LRgm57#3F9ThSr zRxLqVKF@-kX(`OXzPMCB5+aa!`pS|DnoD%v_Q~Py6gb&9?2U5}lX83C#%|EXI12}e z0A(LX#tkbR76;y`TP)7-ZSghtIaUO;@`IPItVJEa9V<23BrnkNS`8Dlfxnbf=A*sa z#w>Z!yDE|-9I1AkQ&%{4W))@{i!nu`6yW$c%jH}piH{{pt)(2f+LR`}2AVNKMQ}eUe%{LHYpoH0|9w0U+Q{CRD=aQoWz=<7j%COT)B^YW%9CVH7FLdO- zAzV?(Yee1%Fgq`2WCRasJmoZ=&mvz+%r0GlGK*lXOmvw6&5fVpmZl^V84{a|pvW_yBtVDzM zf^e@}5a>phv^Dpeif|GvtYXGXmAgcpXX9aR^;C1Fx}A5ImJDHlVu4a@M}rytG~pj< zoAXb08y=K2?SGnwznYQH+G1m*X%z85Nk3QBWzTJo81qtnRihucGrPf=9y9t+d%_dQ zn*$LvX3l;Aj%oKURAn!cDx93)QLyzQ4Vw)H88Wc>)On z7X?M93(w`_$un&QheFe*a}5O)jxK=jn2>N6 z>EA6gT>An|PeIf~e>D0+asP7IQ(!-t1i&o)_wY~xEI?_eAK*ay*DORN;eR$1=nP(= zb!TQU3=3uYEWF~+*2t;zCiEA7$bBh>+x$?8cCfmmS~2_41r*#(B6!0q#{p3BI|K?3 z)f0RZ1@<87Jiz7t^;!b0ks$Ifk3e>xJO22I>TkL#+UW~{O$q4SOO&d&xV1o zvQ9T$Q5tyUn8S0T06f)Pi^0|ZBB$sM;W;G7Ij)ftkudAD+eE{ps1(DL_LPusrv{>% zEVmmsu8y6+#`#MN3V5f`?TkHlIuWY&cw9^gaaVep0dW8SPi!vNeZJtgEZb>_l;ZEl3H| zg*GNV6KpGv_Inp&FVF82X%Rhdk;+%5rMbb*o=W93(PdQoA!qxnq6yD-(nr1^TtB;m zsPe&W)dUoOMZhp}G8;7$J+GintYZh%@9h{UtbLlp-KlzLZoY1>7rJ;;&G7-j%$j$J zUxM2$z!k`aBG4>|BDVr=;n5hhbtNZ(NRmF6dEyzh0=HZ6mf-Thj4L!aDDe$o4PxOB zJW&i2ADC@t`_H!t<0gMz-Wg-G28b7^><{K0- zB6#dD4EM_)VwkrrO+Fy8$pTFa!DPAhxP_ct2?unzk96{w6k59f3m=MvqcQwg)ukX| zn5=Thdsp0lBtB6w`uKFtw?Vs+8k;G$eTtKAYwYP*<> zTZDuHLSYiy;M|YEfN6Z!j{9L6{&*vKuf7zgGbDcO|33TD&Py+O{@AjB!2_welL71rO*ThuK@21%!0wNj8M{q-t`q@q zrZhpN{PMqWGhKos)2xgaZc7S_-M`BnK};)z78U zqKVXlum1z<9HF80ga(uwm)>YN_(#g4je!t2^LagF0^(I$W_s={T=U9<33nE`(482o zu*yVYEg5>}_N9x2LPH@mc=K4x^${Sf>XP%!v}n{L&J6hcIsORVROE~hH2w*S+hv6s z{L+S<%zTU;JSF1hyuN%pRp#V>@j31$Q$o~%b}6eb^tBwTU44k?aNYN8M=rLX0DpCw z*Cm9jDXP1FP;MGVK(nbf7jvzXa_qUSxLDk&ucUccOZexO{i}@!1sf}C&$Qizt7>oO zVw1~K)pWJ~_lg}&tb-1?s&KOQvMKJJ?6cgvG26@{a)b%cFi%2i;x82O=b`~yyPsm3 zV8N%y#|;+v*izzU1KE0u5LAZ}F`((wcsofoz_D=X8-Emt_UUum`S>^#ZBg-Np>p2u zt*qfnbo`V1x(VNj#j(r8s21n9>duJhd>A`A^Oj5VCS#9RH_3m&P()7fxPw8pq&wn3 zEJf>wtr@TNzzLW7=&Ml3oc%JL z{aK!>GZxsc1~QE!IZ2Z-NKx5nZadB3sfQ`%7do(ziHXvQTUCQ%CQ@>_~$5@lR0Gv)jzt%Xg;_y2QH&txnAXSjX;Ui2(v&s zK(=~LnmWR=kF`=tbNtnWFWsO#y<^yo4huA9mP_RbrPY7NBe45@&1OM)%KI1NC>!1U z%;UN~2=6`us}?X4_4DZ`ss92Zl#uQLe?k=ek_2=2q`SL2vrrC>ow_X7dKSxM5XeHf z7@>yh&M&QR_~2!0$WgcgNPhT@0je_oV=Sh}#>G7a1?0;e5{!W#Ua< z^GrFZ<15W9`8>4$CF;S~gk;WKX;`dpd6}CoD%_LWdCn{q>LKWjUhU65_<%>NJ_@gC zU$mU)X^)0W@4ffmWXV5$ZG7W@*U&ivGR#KgZ+|W#yg5uy2>nX3!lqimIQS`C1l6^p zvvvI*xSNce95~w{3>CDNBH|bfIE#X6_ok@B9UqOd(8sn`<4q$iXld0noZB<7h-w}<% zmUO#;_?Pyuhfg*871=uE{<8u2;U7h@X!Vo$fe?+GqX2)1vF|e%BdKRb+H%sgwnxI& z_etB02h2rI-e@@cjqhihw5VQhIbsOWqA_!C)HDZ;93gau zoV*+@@_@U3zv`FzOsgGhYQDaa3_Q%VmiA->I)sI7zyu!(;%%4joI=@?4(F)F)ztq| z435jdzNmK(1ob4I%*{D>X3&;GVrFJ``AxMA>T0dQkAxmNefE1k)BZ1g z*&YE}qB-AlR<=T<&Nn3z)HDLd+iZ6S#L<2DT@6O%@Lfr56A3zHHp|;fi2K~dHoqL$ zP7n^+)sI1kG7mu1e(~Ph_>bTWj@9L2`879O2mbXui=wCeq_&C?<_NNyesn0R)>4gG z{C#MS7s@M{A5ZR9;CnA|K+XzC3;ce5vxjP`y`i^nAd3I<7rse(GK%yka)<$>HbC75HO9^ib(;j2;)g zE6H6tURSYw+RLn35}IA!T(lCfdnn?N-3lh%_erT^I92TpU$HH&KFnIP6z%>+v@x|i z?&FZI^{hw(@PD%aGR7DLjmLXQlavQ>w}BLQ|0Ky*PI>|c6+kR;fO%l^yXY9Z(l5yQ z({U&0<(}3hk>=Ok31nD2)yOjEPYJ;N0>Gz)s*`X;uMM78JJT<)P$&pr&pkhmN~=pE zd8VzvZ;tngr^Fv!UzpN3bcx%lw{SRjv}}41V0B=H0_`*`vKq~u7%6{0!p{^5Sw^-Q zG+FtD>rOw7sykmwEuqI{+RL+^-n8;WD#)~0`djiu_*!u-Ar!Vx`U*_F@;4S!yZV+E zmM3Lqj`O_ArkM3p_teS7RYqTZ(t9xedGu-|v<8^3pCR z*1`rpDQQ8WGrXr#gK&CLl8j^t>LCpQ^~!9`DzDJZs>m5(X8_jY`??wwrFggHJW-c0LBh>+t`^NO*k znUEz0@udcR+kp-FT;<}K>ew$S&x`J!80$r2$r=+L5{nlrJMLHfXvtTs@@iFyrHC!% z63eP^hXt(DBDdyx1WBR;iwz1PwzR+2V%ob@)4IXLPNAEm%zCXVZ(iu>%skJTUUsy1l zv{Ui&VTQ)okuc%ylvP_Ftzu&Hj1Zj6)Nw@Y4JdBkYY2UOn1SbZ!X0TkI`oyGd}qDM zjEWf+LkO=E$P&ODI$?9IA)XXN7kbtThzacO-DvCiQixX1+tYX`zx48f#p_Ua}$W9D9w5O`H1TT)u38cIs*Dn{J4T4*d(x3Hl?i_W| zfj;5b3=T(U+)m$C!BREKV7xW<4lvdimA*RaJ@+4N?;_a}sTP9a(>2uEbj!jt`}d|du0WH$r7l8YyKX`#r&y(}KD}X^Z&&WGMmgXQ zo$BR|QdVTQEcRDKjM`J%_Qr7vLwL^r=REk+d?chdv|P3N9`oD^S!y#g+N} zgDRIdl2i4%Qn=%#kJ6-qNBM=8Zf!eP#4D%pRXMJ;lOBaJY9s(|(Z|y{jjb zb&oF5M#iD0+G=4-er(P+Wt@uMaXkpVg4CSb9GAHq_(OjA?7`*{i1X?^&UnhRyHPpA z1?xiUq#Vh-G9K2dSD_d2HVwI<55gSP$$!loPCdvj%}uf*yEdLL4V*hp)Mh@PrQAqc zjsO4;_}bY32NQPjLc2Cqv+RM6k+r4G=5>b$C2}bR(x#wYTfW{7B>s!fWmGk{TTt(e z9J;8NSBg@DXT8cZTXQul_l4UG!N<&h8Y%ofp_Jj*K>fBee zY|5)ab>_tJN_SyuJ*;w47;F2(iM;weO3W?w3gmYy^F+ zY|E)s(v&@74jx$ktgZKa=83i;nsi(Xb9;;^eYVOHWr9W-CSD^@ToXkTN@8@6uZ4+p3f<)dj~J z?Sq4I6Xu-|kY)E*mnu`z8`oiHL6DY{sDmiFw+g|(FcAAQmo2fWW<@E;vODwZ{$jkg zf*v2UGk>v=qTBX)zrV7g2Rv7P!$!AeoEGnhd5NB(F-P5%5A%GRgvK>>W6sq-BT_5&8E8Sz%D13v~p1GY!d zX8-4Ukk0LwxF4x-J)_OKz#*Y^C}yDsq9Bi|dggQcOSHF}Ri~2ga2@_sTUj!5zaZ9} zWi5GQn5Fw9O{5~0c!Xuol$CpoX@Y(HVDz^KL*F0^`MOq0cm5H}WI^^;X=1sL^@QvK zwZ#z&Lgig?D;dW7*iR+Ze)^0gfL<}NRDVmST-$cX3zbNT;rFg|dNsY{TsOT_=3w_^ zkZ)W@pOv@>wslJ)HaKFf7}=T%>s{x!EvHgAdtY+u)2T8UtB%okJ*t5Y59zTYh2hwy zjV^et7tSH4#^=ztDIF=AT$gp2vi%)$3mfRU0fC9k;Gk*Ga+TOwi?tD7V%mj%4f6?I zYi`&+#tyX~H#vgl9kq z_y{TIJVU3`_eWC;(FXRdb|KH*0}mgCj*lD3ER|KSG(+$UO(k}L=FLGEiFssYhR-Lb z&wISYvrAE*xXW~lK`4qBQ8%p(419y2DnFKoJ6%y)R*fR(im(ky_}v~Ww3x!tsF%&p zw^mDEu046_z3KmYP4jXjKCo1>W7?*5H*_7`uh%)*F@0H@94bf%SZg}KAWJ0b+0St2 z^m}``Q+r_?BlvnN7nZU9Qk$|y!_^#U`DM?{=cBwJ-Hoa_n_a$vdMUbDpRJ0rQw)W} zq_IGIGg}d*(gc(o&y**-yo8WjH{qV6wZz1;GrNfwN6354AL~MyJ7dZvE@R@O^2q?e zlc^9o>RIoX>w|orRYTRx0a_uc-t32-L)99Ys)_V)hR57E0OX^uk zgRm9t*~HS&HD~DE=LkWBIEcB%wp&CTKL<$^VF(&hd9)q_m*)YK>seON*}uIpkxUpo z(Mbeu66qxNKlrdmTBr1!3|z2XjU3Qdk<*6d%5JVP_FA2?>KKc5nj->Yg)AD1o~J>P z3!k_w-!d2n2O^xj#m&A7YSToLq}9((Q=RhVh^Jf4HwF2o9gQQ%{4;muX3EcNhs@08 z6d^$a+JsAoARDO_kvNs!-w3PadjVOHFFy`Lm>N*jKUc;sLG3jW55yWV;sAIm^hd^5 z9Le+#H*#(5317>@4qIs z!keiH%_|v<_n#=~5A3!7%<%#XSS-b6owC}JHlGbN?H-?diRs{b3yQIDg$pe!+08{DHMQS%mCc zRaE}1saA0VmB4Ltd6)CO(*fpdc^pyMQ%gQ5j*kqFDgA0o&c#++=K{wq+cz7j2;utZ zPq^N-$urJ_dAAIeu9+yb-dZeUt3_#J)1_fyK_;5T)UYhah8B?fZa@2(MtXX>g~T}f z0Nu)o5R0qrn`OJLZjm_X=e;HO%l_Kjh6PK}f+llyn%sKDAUCr(Zql__KK8&Z@HY_dNW z3dNQ+eXryX=z$_i5r_I3oi*5^A2Nj@Wq$JVDwgUZ2CtcZ07WF!czA8=){79qBQm7$ zS>+wgx1UpqYJ{e{@0|Q-+VO!)3&(0nH$vZHEO*a0g|Wvva#%=|It&ple*i%qS)6NR z>|*X&t;A`V2!$+RbdaYgGjvAb9$9b}?$>iNfcH{gx}3Q;2Zz@d zZ1Kv9FgnO>Wx5}ki1C0S&liJ+zFw{`r3K-eTpe#0A|=xmh{165df=_KNGO7QTo3pi zI)pV5YmG`q<&PXOm_KwPH0ZqxxaN$I3X74b?L5eerJn7*z1RC|Wi$N&nqRC=T|Lvv zk@fROm9$L3zvU6m(9nWsa4xx#Df)MxLnfi9&UcJ(t22#Ckwa@%@7ujXp`fdF>+M|{ zQ1S4Q3bBI3=GM1OTvp?~E67-@0PC!)A4KMKvk%14`i|cO3TvO_syEuP`8wum%4GG} z3E%pk*;flfhiAue^kwM$2tH)KyQ6DG$-=lvg1M zv4{js_bxLB{to#=(VD0O(}v`}Q>USca|@#id0SJTp|XA-yb2B}C$LU0O;P-7vi>7&wMm`Hu;DSt$0?h}WDZhlt@ zQSa;V6kry!c*-z-g5>%7Y3YPRRwS`ze)&ib=vuS=;mx$qG30#~6(QeIdxu9MU+e@X zr^bX8+K$Eje|^}tr-QRu3%o1GIxSe)?HT4b z(O2x%8*CNjGN2gasWBnibe~XIeClmxyQh#7%6%l9TR3ZsRl~@#D^3ygq7RJu(8A!^ zeM;Yt>T9-q4@qeFE5Kg<)qK7r-{?)G?+M5bVCqY~{j@8x2<#MOGc;^Fyf7h15coa2 zXjOU#N{DfJ`)vZTWdi8(9<9r6_s%I#)(YYL0bB49+bs;FQ{}v|w&mBJPxk=8eT!m8 zwJZrO5?mLEyrLcVMFE_lp*@ataXVQtcIL`N)z#EP>--BtB;GG5Ot+@%v7 zrOju-%k8AAP+l~W4b?K^p67EWQC?8ZG|rGgq_eGD;)7es0$7iUBx@Aq1CTulqGtj+ zog>Lz9N!WNorkS@T;paBXpm-k9kl!ibv{>bNK$@mkQ{GV?{DXpplnZPgT)&>1i^)N zV?+>Dq^dM-XwRzvlJ2s{CkKuj$}O1TjOEEM(>FX#gl{pa;(f7*sR~pyS583gDg|il z_D#b^-mFxi4$DJT{`_~Ku8u$RxA*=`W4H2Wgl>N-pp<`jq4*c2qvrG%GZgnCcv-%=&d0h}DYJ83pKREhT5o=ZB7ZtR#l#`sAz1i|aH_!J> z0v$%^$bP3!tO_;|w!H0;?kC(9xFV9smgQwGnt^u?E;y=#L%6Yhd&({0xEn6%cT_-! zAOmGKthR1ScU!c0d5oO1;YQq?NTNP%8FGu(JGj*gz+qH?&hlI_A3Lg`tY*|J`3}M! z2d_`GeuN_k{8%vYoW)YxdB+eho+OPtQEKy;Hrhm&7Cqt7is}vA_8QSh-23snBZW`W z&YJKY1;QtBIBpVmsp|+6#lnIxntqH1L3$CWVd)W4? zG@sz1QReZUzJ)9vD}TOQ03?Qw1$a~=Sk?U)pUj1t;UU}9jq@EvR&PS(jOAE^yBS52 zSN+xB^|l?jF&0Z~J-lyx-+C(gip7T)bCGSMYpPt1OrbOR_MmriD7iN?`6*8y4{52y ze{AqiMV)qj=CXUSl2r6vJ4@$;d~r&BrXV7C^U>5!E44|d_f-Y=Y7OTAk<0=3 z6PcdmGHCZ3Pg~74g3=4_zmilJsM~KG3mne_Z|~k6k;4&5CV)V+FUxJ^>dY`b_Z?{f zCe{7^mR^{eKBw6#ck(oRjHo%X4G}oQ_|9!KV+y5D)KbvQVn4}oNtXKlz}n-sr$nIy z9q!uJ1{BJwx9KNW(LC2?RZvu+9w~=;b{cNftagM7rj>$VcuY@MMn?Bi;5Tw;Xp0(b z9nBC`MW#HOUX1>{PHQB#m&+t;n35mnh7l6lU7cs+wuXCn+Pz~H)Cm#0O34@x#mjO= zqC_qL`}A__*9^l2$6y)}iMj>daTD`MAwPUQPxZFBHY8{F{i zZ)9miH0ZUInDdyuyMNNMlV<&hm?Q zo=4b_DHkoi1j4+i^|!@i1P)FZnt$6|)Tz*?PO$^rV! zVB_jqzO#x}vDOILrRu8PNOp;y$7ro`ZBmo7;wx%Zu^ky>mxw#0heiXh37z(^NB0=^ zKgv3VKZcHj>kt6~nTO9<8CMa0j2 zg{|q6iM$odNcaQ0o6t9F{rhKZ`}Z35a(HU=Z`U_DH!v=~@6l8H+WP1CpD%qO$sIR) zv3HHZ&u1g<9XDkpr1DX&1~7tTTYQ)2U19!)>REgpb=K^TVFq=b8;ovQ6;rmIz1tJ!|0_ z1%~Yqod1QrsunNM6~A-*{?f4qd>>?(*qKO1_`uPqeThc|!jYO$1FxOq{GpB9Q@W{7 zG(OhtRf3>C3)B0u?yS>Q?Kkpv1DN&Gkyx85-zxs z@4KU#TDFIi00JU{prUjsA_@cn0cio1E=^DbrAe=$cL<2eRiuehr6^56x`?!ZqSBj` z&?C}&O@OrX9lTfXd++z&`pUoG3+pUqoy_c+-Dl69nWzTM@-)c4wxjU}uW@*@2nd?X zX-s(wzTbV3T-m%@kRwpdvDRZn*pblb>Olp21`oWuX18cmLt6qATbnkNHviBw*WdBi zsEm}&Kfn7Z%8L8yT`k4c-C8b03MV59l|6GVt@qKO+f0OV_Cap#-N|U>khQya9x**Q z=AQjzitfWxjyanWOduka5wZ}|cr|~LAU}qcnR)Y6CFfel=>f$_MeVr^isrQ1_2}p~ z)}3glmr4jLLySmIP{+5+xL~I;aCMdEtj>gDhRibgq=d1jzp`3pXzzB$+Ev}H>(eiI zColJ3Z2SCZzTOQ-#gDS-Z-$GonsXW8dyL@9ewBN{OK1qSD+C%pjvU+dge=ueYvMz3a${G zDskvSHoT7hsILxI8&``;Z^!t3*^Sm?F2iEcV+>CVhuX=e*~(i0Znl<||Z9ZSm-bQEQ+2y02JW zY$iYc$XS_EpUzUyrS%RGlPZo2?K~>>)kyK9dM)f zAI~89kZT21%dbns)S;%fJ)LwKZ5G@nLOhDWs%8U!T#=4xO73`T6~x$bmbGGQUo_V^ zb%ZMBkxu1Y`?yTVb!iKdEx)y*R^u!N8~2chRANB5{u-~ybWsbD6(gGlX1lNb`1oTH zOzxE5&Mv#WsyLX|K^>er5bx}T^^P$Jcp~V8#nCM7y?^M`UL6#s<#$Dm8@#V!&F`J8 z>*3@~lrddD;FIAhzdmic6OID<99XZiW<6k!=RpH!6LQesK8Tj~_ViDVHVkOTF2t0E z6b`s}uIa_dtrxH|EWW89_?!$Tdds|0ig1!*mSqA*_J(Zh+IuG+=JN@(JhI(utkyEt zs1##yie(6Sn?HT?3n9`&{J6vnSmaRi8 zB&{TL2k>}YS}*w+H?n*OAb1U)Ay@n85_U>C2G^0#Uj-q{LIppWb`;6oHH-A`ft@lS zLKdo~%!4=`vWIe~sPE->C;F`k#4314E+lY$`taV&>+x|#6JE=Fqs#~2eWMkm8cMGS z`}ErS)jdIqEKvq-dqqvNC0rfT5_ZB*zIuVNw}1ZNnN_;|>j-zZq%pgvDuoK}(cg}E_5OpdFew*>i8B#96yr2tlQo{dJMu*!i2Jw#t1aqgcu=fU{q#P9nCX zTR|io$oI!F;Qk1V;PvcStTPQ%yWuQRrmYEqT20mIwKOQ0{c(`J;sUc*RsAO!O;{TF zgM1&{_G))2#t*o_3U?W&43XEdS<| zVcOuky^&HN&cowb#8}R*%>3zm41JI};nw3z@;rJ;3Gs5b+_qIMo{1)f-eehj0tb4t zdkEvWgLE8g8pc0SeVu(0_lZ@ZKjo~$gcVbteH~k!Hz}Y(yA7r= zZNUuE&EOrh#$zFAMIjE06bYH)=jK?*o|z z+PivOm@O_C-p5@kWH7j@m%0B#Mgv@nKb_>@FzYk){POF(lwW%R0{gWyBPK%z+Va|p zS!pwXPT`78_4!umOR#+PZEy>eo6bBIUy5zb%S7pB5cf2{1?^W~Ti3Dl>{3`WvPk1j zopF?4Xu6OI?!y6-*+>U#TSf6mhYc=|mj$QPegsRW0SFihKwGZrPTLLc-j6>miXLENe zknP`BQ8+WKJ5v0J@*|>t&$wOsh8;#Z$!(qy8<4r~cNbxlnOMF^((71Y-3>?tXXU)i zt_NFN+yFvxLsgF4*(Ah_;{98VFLGw8_{2-P(_ik$26-yP$2s%(1@h!$01iz46Mmzw zwo;n6*MvW`J5G)@o-0q3PWX1)F%Y$_qj{9^RDNbid(dF(n!@x>AhquLxcOU2_i{S~1QPCD6%LYwJy0 zZ08#0g6ZN7h5H768K9kL_QPgYlCJUyEfSuxpm%Fy17A4T_|z@Oknnc~JRyTB_*!rE zvh`i8VR)3^9JLsj1j{$CCJ<_s5=*S%^NjF>W~%ewx43t8NSqltvBGzOV!w_i9ph8a z`BRVSU+BGQ6A+)VS&lD4-t2fnDG9{csT?7Pl&^vJoQC54%?0bHGXfG0(yCX&3?WOe zQ}~Qp??pmn#qat8m0OAAByB%0!v}Glh3v@ldcmc_-`(cza!b058muR0Yo`i)B*f(| zR(aLophfOywS7&Z6y=A2py`vEeHE593%b@=9!k%-%+K%5!L^srGQA@T^;Xb)(DH^ItOvr3+QP`$=v+0rsH=L%~xxC&SoR z`bE7ZLw?Jrg#$&a`*ZVcku^Kc6<|bb(jhnMJEG?uGVRntHoAA?8C8e`dd=~4z>ZiS z$Hh4whWrSz;=&0|aGLB>sVmp)(-x`p(efZeUJ{}A{Pg*zJ~T0$1}fv+65!+c`8%ql z+_%DbS)@XBU{!MabN{vVDP}^hT#GR7?Mf=%Md1vYqq*B_VOFBmeT@T=*SYSg_}Yk8 zSjJ)pQGrX165WkyU`jYywU}pq#nPxYU1F#Ka#TF!c2F!8TW3 zaC=L!q%R~l=_u% zgvK^0HExcpdFK(u0nq`WkwTh`A zqN4rka;xYhV$CR8qFcKj2>*h)D{~vLARJKxkfC-BJF%w(-rXU@LZ5$gxmjC%1sRe0 z0^FDeFJL6TjFs{#tY7OC3V90Y@$YlCnW9BY4sHrh4@z0bh!BQjbB6=B#JQ2hRZPRj z#4l@=4M=ncE!*3E?OQWkikLynGxEfDQ^lmz4)Q{{W=PEonvD>2fHp>G#t4~))HjxZ#3#vqjjrj z9Ps2;Ty7!QrVTRRx;(b4aC;8D$hp1Z-DK-tWNZF*8w&>dszCj>>9Yp`co=9*Ad^uQ z413%LnVdtBcg~m{zBy^@m7`?Iv;B6s&F-4+^X-nSg&0<^Fr@{pGFQKu9Zn^Jms^MjROd-XqrRi^ zWQ^Oa*lLhQtOlI2xBtp@MV5GTJwC&@zJL0XaB*jW1dT^K#chmR+|ZRy7T}WecXS{9 zL*?VasxHk{Aph;!p)b7Pspr4$*v)z*mSLry|6Nu&5;r)H-GA^@fuy zp&Ky4aW&|nH}Cv(ChZhKA`KW^~XFwW{&`9p_DRlTav1= zO{wODU|+?-@t)k+pgUXp+Qr94^z#;q{FLFUw@Hf(gQ);gtG{zgWWuA+diNE4+tBBN zEAa`{TjB37YVEjzvnKc#7jnRDv4tr;6ntRcBFqG86et z!Ox>?zHs+7ShMvT+{|s6MBCB6BW8As?6y3AsA1>p3kJka$l~Q$MU_hN#?o&H%TDdN z3%0xQ`EQzjGXrVN-8=Zn4r|-G{aP3)!Ay)-=c_K_(QF4 z_u&#ZvJ>7kK)>GX*`D83;O9|tQH>tRm;2J2zEi_+vVD$mS@4x_E&}Ij-&X76JllQ8 zY{-{zZtim7Hfqmct>x}wH){XuK=5&?oE&TVON4cg_L<(j2X{BI`DPi(p{R7U>1dO& z#w8Jybf8ydhViHxv=aWus*VBAjWnbDGf%aVak=V&)mTE3w=W^LQ=tQY-xMW-+Xch% zlZq!Wm|S$vPO2kW8@ZPkOW-g7xQyo;*zOS110JmT-leZThTO>Nrq!Iyf>?zxW2&f|CzU%dd1hj3<1uB+%pb~pZTihjo}x;{*FU)E5; zSgO*X$FSa0-(e@ei3+Q6a6ZXjdPY=&W}ST4-! z?q-aeZAeL{0;S7P-J~!CdV_VcBW*|Rsbnm8Jz)3SwWqh{oL-_lcI+N&D|y9_UfVo* z`U9ofiC^PHvea$gtTAoc8oP!S*P|cvzHSzD5So|1|C*oOB@DK)XsLXj&BW8-EeM~iOtm6!lBV-ur za3j~>OV2u)ltrZGmN~cek2YHl%FiKo%UPf5$@D@KXR(Aj(9X12N7V*SwH_8HlXuyds5Ifz9%IC7`FbuonGdYKDC8s7B5Ph*ox%x%hwt9J z1=oMt1J&`4f;5nCfO{G>)Hh{9kgWmFT#z2CH|V+r9{)JaaXMZTrve__U9Z{p1y6(t z*;?K~ebg|@iztvU3Y1i7c<{aH>d^$Y`VIZZb(~}w#Te6xz(?eraQgVr*hN4OceFJL z@QIas$ybTCK%IZj1I!CYXz(k@78 zd+e#qEFi!qaHiUt{vm&I$DDY1`N!d}<`#9*bxQcjbf3b)I;XZQcb!(G=g z>6vLRw>}&x&BmZ=%TJHt?~3=UuZl*bOEdE-hbfa_c9755$j$03i62;GcTO5K@wjeD zIz4KmE$!2o1-{cJqG>PSonUvmI7ICP28x8)Sj2wc(E#i8;MOjONkA>-d)$m)^Ujqrshk$H$2wlG`r?;E7X3 z+d6zj_T&2lY}aR5biw0tP#E<|6J?lXe2~51@(_w$c@jTr5d>UZX-rw6WRiu-WtilN zXF~Xt33zqn2oIX*!S={l$u=~$$h2+E^tGB$K(@O@haDzA;ro9VnXpM4e(pk5Yco&c&#XJoiJmL8iR{>9!{^8^u2ayM&U(DP8R4@{B=E6s zpSC2}0{{7;qf5+gZ;R4#U9MrwaN@T4-jkH-J{r0M3O3m>Xh2+incnu|BG;(I6II~g zQGuN(u8=$J|Czp@FD${$|BEsav9x2;O zUBU`Cyt58$NL<_;X<6L;*1eqD0QuGvy5HUtnXp*mW=^d}$9ere0N&hLGUCS@Jmc&a zvwAyZ2RroQ<&aeCnG!pMM)kNYrsOAl(x9}Sx3tqRQxa{Uf$C8|BjeU4{>eWs3@DJ@6kY8aKB$2 zO%Oc)ErrRMiR(!I8d*)&V;MKq`8b=O=t|sAdK87-sq@nI{OrS8APSC{P9!^wx=8}R zbfel4+y(xPSA=6?(pt-{rN0)Qq>Y9>t>W}Lz*T`*y048V# z`%)e7VF~YI8TK5Cao_AAo6FiuaubsT?)QfU1DRyg=}?GmLjNw7>sx6_sZ_Z8;+@G8 z?^kQemW7}5D<5#NkN!4{*(^yk;GxhkL)Ix?)>z9nIouDqQBB%JlJz$l%7L(7p*snaXqDyKL-DhE^ztQpL+)!{7A)NX1O|KQQ6;Oc3z7NGBslp6f(o1 z_;ie3pt_0N#@ZC~Ze+%X%EUp5iDBgO<+@Mr)zdSB&3YRn+1^3<3#;%=Ayc1M zW$ZY}=}I3EFE4Ld$|kIBWRf@ zP*#|4dqe5NRM%e#mS9_{l}Fd|1e7V}hAdfICP6IU`{a8Luj@X8u%&wqv0QLA^}Qfy zu`5_d&W|N=;0VTD}DDFm?Xi8E(B}pBK8iDPf5QL0JgTO&|07_)q1xwbZ zE}S1ulV&TvfAp&pRjk>C?lFt}bjH@iAs3-c9ywnLQYS6qv>WQf{zz}at**@|;kZM< zVk%(p5hZtZCIk~&#ZF2}lXO`^1qd{9lZ<7lfv5n#gWnnW*^OltwE*N+Q6pPnRdN5z zvSzj3bxVwRyJZs$5`;IdMA%sO%w9Y5HZ> zNgo{J6u%7CB>n8&>&tpZOZ>o#F()#2=j8iMY{i7y=+&Rr86+4xNU+?+_L~kGhzj;( z8hxgwEgWXnY!stzc|j8T%qy4wbK_oVCIe8no>mn0LBjQ}wj92DrXV)kmv~?m>$j~j z4|~SrSMU}BF9UaVrfY$_r3ijr`8@yVi|xo&pnV+0uJx<8YX|IEd2yn!-=-4MUVba% z$Q!gVed~Ei=ui^uZHx2l#Q0VJv6~i$*D0S|t%_}TS57QtIHUzCjLae!DeA8H#`TZQ zQ`Hor*VH32?VbC8(pA^~#&F`fknHzTxl_>&Iyb@dZ+}veHx!x%`HGF~tIh&%&Up8b z)rBsZ%RCUK%;eCT7xtxQyXUGuK{e=;yakR_W*;d;{n_7(OG}y<^v1TbF?Q0^cyFu+ zCHnHN_6_Q0HA-a|dMX}8o?Z^pdZ$a4A@EGE=5+rh6ydon;#8IewUXUm-*v-IIou-N z2;-A2>g*Mx@!AiCe5t`C9UJ$?MoeAe*}Jy)t%2!uQ}jZjT*8d|+GPp3J-vKV0G?P%TrO-9s0V4D-Oevhi{)= z)RBpnXPqRiV;(eqI2(}oUJ%NFD#|sa>Vzzv4C=I*l^DUFB7T5YFKZcfQ+k;=EIkR9Bib6V!FIG>;19RN#$=9tLJ?B1>K#{rp(KP%JxP;|#xbnC)_aLI zT`P~sqX7d9Vt3`;_ipudO^LQPI)1C=#0YteY2@zc!=*_B11RB9jyfBlSjQCpMUPQ z<#*0x2Ic?xD8Q5{n{pl3$bT0%DF3OgUo$+sYkx>4NJNd|+yQ-Zg;j@GN&~1~vGS(X zfQa-l77G6oR63BJdcE?_i|2C4a5W*4MJ5o5*Y|nwwTP4@VBKP0ZSS+|?t^~EJYJ@i%5~L4SwLt2Ya?lU zi(jy^<%$%iyi;@I77eE3{jpQ~NY*XzwwpgYZxR8~wR^Sn((u@+3-sdnyfBlQ$s*(F zekdW+e!d8C*|L5FvS^UBGI=_5YAo|4dU}&>Sfp&)%w2+hk174|)Lz^%K=Sc6<1XhB zAZTo2Dpmfd(Jt(i#1fXFzX(bp7y+SS2)B*Q^tXw3TgT+S)&l06crsLOOIYm}gOx4c zgi(j3S-+x@hSTfo(t%f~4yx1KVm;jO`HJocaq5d+y)0?RE8|p#Pup6VS(D6`k~Zx+ zkM4a6Z9=J4X$TYN(ad_>+D5_HZY1q9VPLr#m&?<_j_bLy;lvEzvsggU8pZrFd6sf8 z7D&H`cj9UKr!OF__ty!!!PBesy-{OD&cFpp$k}wp-Z;8pw2!ubS7j!%Ir&{j^Yre@ z^CJt`3y!@gk$~qGa-%4_RwG!Jmg~z+uWWJ< zBlt#tol|?5`$U6m%5vL%0vbw=GA6u{4nf_gNa9def#c_{|Dt%A3g~1QVds^2!bb$4 zg({TqtT6UxkdZt4+)(~Rnt_<2^Tj>7!_QtW2W5I|?v>coG)?bju!-riz=Hfl1tga`?$If>400{;hyKYkajg zQ*}9lgLFbAn0t?{1q_{wLNdBo92D#ux$gt}q-S-9e+y+N4JeelE3kf+WG5D0hTiQ| z#u3gk*}QkcmbYwLUBXtfNjZ$#%;zz0&FY>$e`$@0S#3KKzTGSdpWqN13(=L`U0IzP zUmg3@UHSf@*Ryqdq&E6Jl76h(O(*gAgR)EXH~M8SVM~>`9CcB;&gGZLO3{k*6(P)5 zZfh_3o!!^+TSO#uP9xGu!F>Ca-p5t$3!e+z7lsSmNdu-Vd!-Lq^K~PwM|$#`<7ei* zF%+rqjljlcTqgzTKd6q;j+CPLL1nm0Y++KEgoiXrqgInwN@oeD_A`gpE4Kfd zCxJ8f7%*m;`%vdZ8(z)|G09T=ngJQ{2v7xC(mMirMQ6?MdpDF7P4sIts?4MLNutdZ zs?{aPRaK;HaLbJ+!6M@Q^LiA6@m3?yjwMExT1z=mB zo8qo1Up}q>c(LOmN^!4?l|{$Fq{gvxI@34yX#m>bCQq`UzT5}l1-RkU!z7LvR#NPU z#nC^5FR+K(S_hM~m7!U;f$Ps8FUFM-n!QpSSxU}XQsumc@Sal(;L52TO-{j!@sUml zgqch8nu<}RC-2=%h`5Lb_lr}1pt{`mVz^Znkc<` ze=W-*@AlcaL8Qj+HH8g}!;jNAj2Q|qKv9=v;ZL2Bx}1AS?Xi^@Wpn3`z&Fy^t22N3 zh47mv;~=+ZCu8eZSp}h65YJ&WWVYu*Hep(f!GTUBEsvP=3<}yvpV}b7Gx|GvA&3Y% zc{dG+qQv)7YO*c%o&jJP`by~s_POjS_C1W`QF1>6g};8vDCL(i%+ds1Ysj&xrmqQ* zfL<9JX=Q>(IVCiN75z#QRxw?q8F9paVH8*@L!D%n>7qV|Jb%g{mXUgIw$^VPQdYtC zsf>}53IhUz5lhEVRBe&I-u;xZXik;icBTe2wrR`jONPv?RHctInB!<>bqoT8kHw+P zS2%8`vg?oXWN~iqrb?CtS^5Czc3bT|LFJ_B_fU;fjACSml$-?o#W=Z ztwn8v81j1$r`e}UgGvk1Y&A(KV#>N;Cv*J19)83Dn~T?@I(38)^eU*Il}b&BL90QU zPWskF(HClf!4q3>=$C0yE&?Z*7vibzu_T+bWF2q9$k2-@6?V~SP<`{fYw_5_S%vuK zfwHKdIH-~ZQOR_ttOe>Xww561vxb&l#ZtW$S>WLwtL~C+t)RCa2+1-{NP4`ut7-Og zk?Mdei3d_uLojr%kag3R&`?rwzk77!!u=N$5DeAlE$jU!WGI1#!;Z#glcfAomhX%{ zb+)VP?W`_n%h8NT>P}H2^oZNZa~r!Iy1#g!YFYhm= zEw8$z9*a}mAJHVV6eCY1XOwa_*~yccs5_(O0Y;RRrFq)draDoNvOcl#rZ>A~uNhZQ z$uGbwnS4$s`X|?m=8=#)6oZUkvSe8a&LpI@Cw=V2#5d={X1|wTq}RW;-@v~tNqe64 z(4)6k^`b6)o{x~E-fH)zpVP*y-Ka0HKO38nM)VtRfhLATNk%tbw)%+o_9Mie6i=yDam8{oVSj$bEpB%lGH<2fxHwLtFLkV^Mz#kWX~pf zLU~y9GNh2v&E!1qM&<^^UG^9InzX?A>suqgQa5WEDGpwSnY2Wjw~1QdFgjz6L?yO9_9gp-LqOd)o6mA#+>`_X)(7e*p$%{2vi;p)77rFA? z;$4pI`Ouo+JIdo9o;Mcvj%yULrM@#QRtf5$ztd4IPe=Mk4Q4I{<-I;6f6kC)Sf7u# z_-g+spf$lhL{38Roctgyc=9Y`VZM#jVECtyGUzAWL`FW!lOv%9AI zzE7RHEG(NJhj~h5dE8Q-%u9Tr>@l1Sbx(1c@yU0PdzckeCe8ZJPYc7gr?;8me*QOY zAF_e8-4na# z%d>4^I0ql^FLQ~!3u}`4o{v6~%fMSL5nm`?f1{NPnyTA{YXivvhdZTC_YTDA(B;i9 z*2Fv06J%cJi~N?@LOM`lwe+0luhXQ$dJ9C^k{!FID^?)dQS{KGpkbNN!gfIz})!5MbY{U%PDuk=nyA#+W#hrCu;l72gA-ZF`U;r9=+ zvqyzNE+=N((ECMyD9nT2CAz5AN&B}&`Lp1CEDo~pI`7EuPJR~txULN2tvG6E_ILXO zaqLx9hGj*iO8gehp9NkCkVma@*L{B5zn@D;%530kF{k#w+3^#{)`Q4wS$y#C2>d7Y z&A`{SZ-jp>*Zd`Rdx@sKN0o6l>V=H9H`uX74e^q+kdUcPec4m zIsPji{}qp)UiAM5Hy#eq_S~M~l1O(Fgn%DSRo!bPS1j*CArJu2*QTOA4!)#=C?d}o z-PQ_ezKdewe7v@9)<_#iH+x0Cn?`D)vU~`o!wP4v>0LE4(O2dD4M^10*4xU)%G-)p z|K^qJnpb&+MB#AlYpQVgHKS|1&Yq6oHy6b&!r`jALcBr_-rnwVaJZkJpP03ki;JVZ zr_M zTSYzzDL!8B0C%wT^93LLpq8hVo4qZs9Y`QWJ`ihfB#6HFLE&dbZ^r`=V2wX3Tl;u= z+PZlgfp32S{ay7RVA}e-BR#!Ey==X`K>~V#-S8@S*?RbZB(+s@bg|X9@^<*u{#Q?b zH~+it6)P`WT@Z=?le(I2j^2(|E@}rz>-xCfv-SMdO7!CY>_Y+mKgOu=w{-kws?uS7 zZ77VJ>hOWQ{gkX%8&vtMVEN#oJ9zomMG(0 z1%Mg@|M^cs%*(;b-S%f0ZjE&F28Si)<@-M%%XeLp9vXo{TEOSTUy%PCl0DzQhb;N8 zgX6?rJ3|k)p#~qY&F_yuxH}2@Th;$@aFSv+wsuxNF5d2r{HX7fc)|Y-kQ(acjNCW~Bn^C+{t3v5NEigPpZ2ykpxd#x{db!7ub%2xdx7wIHmct& c|LqF?_FMYeG=~l<9|QkVKvh7ngSra&Uv9hO4FCWD literal 0 HcmV?d00001 diff --git a/artwork/promote.png b/artwork/promote.png new file mode 100644 index 0000000000000000000000000000000000000000..fe2b70557ebb47adc06fe581ed5b5a321f3a0ee8 GIT binary patch literal 37400 zcmeFZbz78e*FHQ9DT0)sfOJZSfPlcD0@B^7(p^Kt3}7MBC5_UcAl(cG(hS`xokKS> zztiV=F7dwJ?fnM#AEIu~9LG9W>}y|f8m6J9KukzO2m*nK6`wrT0)cRVKVlsa-~qp7 zvzv1Re{r*W^hm?*`EwA6GX@$XrTksv=BwFirB*${b;e)OAKpH?o*Q!Cp057p-Kr4X zq(xD?m#oBMcePA#Z@mr)UHvsWC)20vs!NI^N9wkRe^T`%Y(?}Xl^t?v`9Y&NYJSE8 z3np*#YB~u-G&o=9sbs|aN%5=qiS5hiA78p19hg#kvTQCMXz{i_GC5c`9Tj;fH*5`e zf%_yHPBCS0^g4-4WG4{vi{d@>RfD_d5Euc4Z(?=dg0JlCHx8@ zu{Zf)*{{s3KJULteWB}NmArR<>)Kd5Q^ZYH&VpwY5_f*wO}$sK-TZj4<^`ee?Lgk4 zmJZE_$&G?q#Y4KepJGY|1~e%=Ff!`KsfvEn-|uE&hM_VX!E@4m1r6J%!VS@0c*}KH zr|L_}l))*nwZm#EDLiJ$mL*kV?Hll7Q;W^<*t)5BaOGtRUVsVc5w67|{cV$D>*2Gg zeGW#1s=6os9eONn9ft7}>_%&wjh<6lGr$JdT%QfXj`iO9q;l;R zn1B%u`uoSdN=V}e2Zbe42nY-3?;kDXjG&hA|NJl`9D;*G0D7DiQ^@@HA-~VW0r}wn z{r%s^y@7+U-~{)CbRYlga5xBr`VTRFpFl>+2qF!Z&wKlC8A(BNbpIBQ5e(eO+}Ex{ z_Mc*du)v^3?0=u|7y<`DaA=abnE&-a5D?t^U$TLM2?$6*Zy+q%a{r+a;9~@!og4qs zA0sIia3h(mWzm~|KM)pZ=HIg6Ff&3xjNk|rO0s`F5TIVIM6zcBK@F7aQ?{tu)864!qdKBzxwdj_|vG@ME-~~58d`;Bd zAGOrL60qU5UT>^Oq`33TU*EjRc$?JEA%^MCXaAHx z&wOzoZXMun?~Hznf#bDdmPYwsz#%^~*}zMI$PT(cygv&KoIM1i)e7ah_F`oBczBJZ zFxzEMWj5WTrkwH`(Tm%p7J86`W-=e1t4pSV`lBEsUG6 z)^O#N<(Xj}m|!X!@lvc(y%ZbC3!0s{TV}Y=ChZdTV_EGowj|@*9YTryqjDb{YyzD3 zjTt$zS0t@P8xDeVkX`%8r!fc3u@V?Lg(={!SPNI^GiX{%2f0O` zNB;1hQ1~TTWX{FND0SVD47)}O{C1O0ncv_k|x! z`RI?h1qDD={MLQ{iytY$)TuY!F2D3d=DIOQ7-oj21K%ZPsJiD6a?_rALD@UuB&h9) z2`wc3E76iPUdpR(f4V zkSR>EL<@oDDGb|9DR5!A#Vq=~`d+3_-j8GHhpPKE!}n||XP?GFGApnM!1wlyA5Z^7 zYl3aB0c{FBe}($$W(iEt$XRg*s8AKzwU{uQu$WjCBU&QAlIez} z4cl^Mgk4Ev73`CciCiEncmpX&htb_>#~~PUp*S|@r$`D&?1jl0mG3Zxwdr^Mc$pbH zG{K?Mkb`h`Vc96XljvBxy`gbJWR6l#xbqiufxu?qZqN?-uMH^wT=BkM-(63`jZ%ye zY6o+isrYR8Gt^~>fbxxqi1J`rzT*CTegO-%lL(=kBB%?CW?uEfjeiUe@x)EZHip{M z;|BLhV2)bgB1^C;74({a?5620+@JLY&$$He#*Jc>w2)HFJ*9q#C;rDnGobpda#^?v zq>YNH{nT%_X#F^h5n|eS<0knZKyHzRvw<3^h`BXNdSQG0n1Z{Q%=~@xY!|g(VF^M( z^Z9JKp~69lIJZaIM*Xecb9DTpZs3H17eJ&baqho+d;MfRhcflZ#dxDsGOoiP!$tu+ zlWw@sZ$E1eE1iX=%cX zwa{z$Ro<=sN446Arv1|9*xDt+yKU-RexP z582Us6pAyxP{R<=SLL7S|CkJLD;+(c&1Ti)Ym|%=07XxaT&!#zxI|oF4i!F%T`m-P zU=3GOjGEeS&0Cl<_2TRtZV!vIv|izOfeRqR;dD^^Oey^7in)#CDKeaGw{I&b6LLmF z_5P%dpY_l{BI^-p)+^(;AFmKF{tq0)SoVmcc+x9{bpm+uaq3L7upuf2v$()*wU=@|o0($VFYo6ot6w!3b<2%c z8lj+{ScUDK+HQaB9&AqtWcNI2B%fkSLB-O@X^qTy3SLI6&a7YZ#XgB#Y)5QoYtJE5 zG|dzj1?(hpV)JPlBP8%1b?#LYl~WUV;4t`<8C`I!Bqq59Voh9|LM2@od9EB0rI-Kk zK@}IcBcj-9&pgQhi*Z9}oFa>hZRx{bmWt==Gx4KZghQkVEd9Ldo}s)Y>>?h_xug9q0cx>G8Lq+=1~RFt=9!WX1jfXOYKyr{JlrG%lw1JclG4FdWfQJ=%W|Edp~jC-#^TOZudsKJ)TA8XO}6aD3Ca&mX{t!#{wqK#w?MbR3LmLxW-7y#RP#Pa#?@%plKTrY1ArX0(<=ANp3nymG!=Q_VQ|bJ zdMSjih*GxqEJ)FH5A+I{k0h5_huYU8QkF|gLt>UM3Rhb{5-`bQy;Zr)jMT8~jJ-wL zcg)VtmTQg8x_wfS^Qw9{@3LGf=g`Sq&;PEiSR#1Hl0}pAD#RdQNAT@85vg3fbK|G{ zoYCh)FezG#y;oiK<@*c{8#;8DQKdnwHr2y?4+->9;fgOMp9H1U4-ni~Z>0C6T1b^r z`k3F7I@Or9dRB0tv5hIVaZ5?@f$Q_0bmnN2{r6m>s^l_rW1f_b9N3l)@iliXauG~E z^nVyUKp=rx0S;s#k>+MQb#gC*Z*RQ*Ws_2p-}Y0*2R_O@x*zRIzq18(7moZ4(#}Tu zrmtS~))>3Cm1?}6P0BgSPCH5Ie$J^u&gQR65E*gomn+?~`50R5HmskWyE1{@ z7BdxjuR5I&?#<5UT4pKljn?}vmXV5s!5kwxsX0ThUQ&o%vWtzygxOina^KJ>ER@d{ zxPqGu04g7ZJ<%`+J8NTfd3D-&0gQ;9Xw0)Nx|v#|W2A-&`EevY(6r!!Qfcrkzb81b>kG8l2YX@-m-+85sKqVo2WmXqG8GvV?KmIa!-2m2I`r=K1q-Wi zYbDZ?lb&>k$Z}Yv=Ptn?Ye2FA#I+qtj8JNNt9pr~QBl3TC32Q|fi$<5XK(%mvXj0H zXI_7USevPD8r+s1$P}(ejg5O}P-+OcyF@InV1#PL%x+t>Un3l|xn>!PRqveKIC$8N z2OdiDlG5-kuy}$DnXt{)(PDQ&4CqmX_6C)yk~?JU#RFdOf9!$r+wW=B)XAa7AtXER zh5~x6o}IqYFc!N>M04w;S)rH=MPiuxYiaYI3-Q|(=mlNg!Aj)viuc%IO;y_tta=bN zG_H=1^I*TdK@9NcYXmok6jqE$37#bBL(!?~=V`0jr1tYl1r*n{E@>Yc6Oyh5mf#X} z{;3fd`$z!+Xg*T27+uSbz{E$W<;!~<_Ip&hiqP%3+exg^*=Hj>6{IHhz1L3iM|T^% z&caI&HQv=uESF~K{>5?5nbdRSoB{^tnd#Kg$&?l%53OO?lhXLf2-JHf)%+l(UtPyV zK^|;QsEEM3kg{08>se=8^4G4&)1BWn_Oqc+kgR^Kq%6p<7)jRQe0lfc01>(ituVwY zarF(?ddQI}MwkVSO9wONn1V(G#`I&fj&NMB-(GYfST!i|gnrh=UWbiCAoUQn3M?au zoV6;3n3LG)qN!*0OK&6und_unmI-LVdQGOBe}Nth$nfZ%+H5MEG>J2DZOq_Hm8c1J zXGGC@Ze(!;I^{qRHs0@YIr&W!vsSpD9O+SJirJUAkdr*cb2#7kK1QO_B$qM=*J_;b z-k-7YQvT9PDw93(r}r)=rDSt==={Ddt6am&SDF#%(iP!=5%i zMb9?}c9C8=PU+~78+HC1htZCH25p&lm1Wyz&1Sj-*TzA~^(*3*p&%#Ifs1+% zR%s7s-AR653^8-|qa%9s0ZN?eOOey}?^nZuZonGvjbq9~z;X(TstOog-@^i@U%{!| z27BKWTCMq`^Yk-5k6ehUMmZa6qx17yR^FW%3kFY>uAqI-MlK?K%hb?143aH8pbfWP z40rpWpZr!<~dcp_aTt#q&&U|e$(hpd{X7y@uTf;h5vGJ9*BM)k^^CH(Td?bJuds9PH+EtO zhsYphYZyI|J$a12uG;~oPyfw9cjk6wetw0z_aYP{R$B2u1Yg?bCq#Bd+@=y%PvR7X zeRF!1|B1(~>ok^o75KRBAy{jE%Q(`G!Elv{fbed2xTCL=FvpR^Lx5cpXvM{%6rHA7 zJ67mIl#)U5gJGaQDO#<<3oD8ZLq<0` zP+yW0&Sb%UW^-H90;+EfiOOoA5?f8fY&KqgOWQ(v5#cT3iw|UShwIdw6X=Ywle z*ZKm!QQK>SphXWUOBUm_QNss3AW^J>hr&Bg{>dO9poxG30%y4?Q{t$|W42ngY^piL zN=hEe%B9?ZC7i)}#M3d3vY&30I<5Qn`e6#yTzfrX8}gH9zW(M98eT~wQk>~7weAz` zd0xk}+z^oJk>O~G`TXmE6Xu28(yanIFUP+;uTutEJM+0ZoI6b&!^JwN*$;yZj5kO* z=O}9zr>+(pNTC3tYQnH-3enY7;~gvXn(396tq!+RMa+Ns7e^KbDm4thM5>@_O8wQ3 z11e;L8~b-RJuz#yTXf7PW;A;bGOjPr=@)GCA*+)5MXxb>Ps3&i5R_8_*T5>&_vrGh z4K1;;DT_+{RO~|uc?v<=N97?{j(7%jRC9_~Kq?D>7*4`M^8~3YHB|L;P%YPzgT&%e zY`MBB^4;pB0=j|?u=yR)=8EI3aIcGS9g+4tnAvfybT89w4Ia|y?Z%bOGjmd$cAN*B zUqcS=y%7&D_Tb4Pl-m%seVRuRUd%P3}cxMk2J^n(pAq``=h3I$!BEYUg|2Zb}~QuVZ1& z4tMH#)awo}EETglGU8N_3SUe%x{Th}55w1~W%Idn1&a)TqJt`*80!UVjXtswv!b0~ zFYIyXG}6oOPCZCDSf(nL%&bV9&A9($MaCaymM^h?T;h+V^QOga3t^lrtbMd43-^rv z9>@+s$Ko3|QEjo7ohozd^slwu#CdOkr?D$K7ks7B-_7b1v4uz@GFNJ+su7I-{M#)L z%X#gsY|K$FOv37GJEAGdW%h(`B~6Cz`Fnb)(uca!42GW1zp3O7Ho;06;R#cs6fK<% zu6H2;rP*9+7P#+U)kyMV?}%T|8fwvR>@H%v}Sv;&}H3{|?l6}4uAcdNMkLD*^9^8=zWK>0>N{&nlKLuF@ui4DifGdMNW;CEA=)%H=?$3R;oF&cS8G zA$9qHQusvAeSOFp?@W2~Lce?gb(25fmjF?ie+&UpHfl}!$vJ+_+mya}BxE@||4TO5LfC@Kz>xm0 zDak*)STF3^28LVe()@UKg->|mWwV8ne_2q2CWoO+^%;=qCT&bI(%c)i@C6bo)_CA! zQ@IJ3@=w_0&W7FN4x~XpNscMTgnHv&T$zEu=Q>dPiZaVdT_bWT_OW~JLA4|`*!(no z`|GmzfJYQ|x2H!%@@=p62+2uGDnY&^ZK-{1>{nEJSr)yqgrho#m#@PcT|VIy`1tQY zuF}9SAPx9DT8FgQT_Q42=40QLfR<0CbXlHt*db4QD%#xO#achcRem!Qx3~ouF;T7YknS{_ zYOJg#omNrw{_WkPs*&b$a$I#`LhwyvLW?Ea=35ZQ-d}G=?~6*CoTzXMSY1~WTtfWX z`u10hr~Rh=*7xEetu`Rf-uHWh>1UfUun~rGm`y-hdeqwX;ef5YEU2dQzG~tV6k6tG zs&|#QZW^0No=uvH6C@eN{PK}y)~}_7zfg)`?DwJ4LwWGYg2J}?^|8lRNubs2l}|UC z`>m8$s`p_r0ZQvCv?H9ZVKWLu3CAUx2$pinHdwS9OxJWfm+~PZnn#)T_NwOBd_u@vMdTji0 z3g2yIvdFUSkZI?W>0EkKP+0LiemYW? zM>Tndc^1XzbOw{-){S^A4wNP4k=;U|b7@er6=<#U?lgTuBY9jx01fi*1jY(PEZeS| z$8B)o$H5Qb?~aU9OLN66Dp2+G@*g^5UL*S*O&imoO}BJjRjn= zG|pZm#-piX#J@_qXj8b*!Q%VkJy0gH$YgJ=A00pF81EPjH^fSCpvbsFn`r*u!+LPA z296LdXxS>UM&7h%P0Wub8?&u49zn^gB&^PIphdCP9C)qa{FXVPw*7o9!yf_(!h+h1 z5)d$Iguu69G+yh zZe+iyl{64EDvV`yWhO`#&Tp;Gxp9Npu0QrUkT`%Syx>(1BI&qd4vgf#32cA2&eas+ zfBuni9o(adpM@sS(S`7Px6{^H3)dD^6OjCU`cvHZSbbkqXkA0Qrg2Bg(s`Ys7x;mZBnha<7^fBO6d{(!j9*%z9{ zaAlXGJV|Z5^gvT|O35SY*@}?*Tge?{y4gZ|aUxgx@WdIzW|VMJRV`+k`|=Z3f4e?A z)jPm+QL^^N*VslMh|;ur-|eMp(9KSF1+VTq1fE#qQZx(akjLUs>QD{6CS7nid%)oC zb*vtBWP^8k-5Reirn?#M2o#o{s|J=iypYiL`U7UcKdCJ6AkS-D(novkSZWKo46`>z zCUy&DhSw8#ZR&@PFe(WMuP!r6?Y3S_Wz5C_rs$^VzQ)9tqKgN2{QF`mnN)N9w<9e4%izfL^k{6b!X59AjYpL=UFGRs ziOIq?O8N?~E2}GOBRiIPCdCThqG(lw*i9C;-RI#lz_LP@w^KUWJ1Z8TQZ_Bor!Um8JR6iXWR z#9}$)BxT`3Ut@Xy@e)$E{~7q_T&LJg${HBvpE%{e&#a!n*RX7ya_7f#oyXS@Us*oI1l0Zn>|#;T}>yY)(i&K6nhW))vYsNq9^OUbSnr3$Z(})D3hsD^H{;2gm}7zQhIP z{labRW4p&ta}_;{*S=h1EPX788=!va&1o96f|*)4PCUNzWCih&m^$Wll~@?hR$mv+ z6nA5QUQ*h5EVdO!uELajoZXPx5$86UQPE!$UR)sDbs;M;&X=sPV$GDH)z#KgaRal) z05z}YfsSMZ#t?6Gk`E4+gmKE!f&z+#f5z(R(e5}TK|lDdV*s^$OZUcZz|}enqXYnD z9|uQtOYP=*-zl5SO>%5;G<4gS`ZaMv7Ot;`orDh;>uuuasd+31b6X-_O38DO-D{>1 zxtd)ShyWs0jWBESMolim45JPVQEM^?Otk4@mYnd%BDtnw#w>LrgDJy{uYP)+ucOAa zy;j$_R90O=x(-qq_WIxJW-Y{AWfl=;z#8&2AN#|}d=6wtCX$epS#vu{5P>790)w)ROUZp#0U=Hq}_?iUWdiXbC`2N zuXq4ZkKIxI>~ZIXh;hbm6@h&tP4n#QFmrS#JRq z6}>@b4}vqYGY1DT=5^=HhEq#|IM;c=R#XOK%a`!c?W)jjN9}%ae)u4$5liuEL4dR# zgaz+Y><}<#+*!5yI%lUevmZi-C7-np{=CkSKT4t=DAeL6nXiu9ZjPsMk5l7tT@&;N zbb|3Hcg~0=vxf7GL|81!PtEJU`1htVNja@sc=6%bL$cZ|m^;b3R$f;VW#JX6kX;e( zbrXPYq>EXwzAX*GIfIo>dML6MDYI=n%BmP|NK>}|r0gR9;r;0q;z0FsDQg{WYF&2eW6I zbL-P&ynsZuc;+iI6o}?eTeMTk;&5^HJ>5~_OYb){0GPaf%K{dcf&O2#T>}GLx{e@r zsK*P=nDOqpjg;72x-G=j1v^uPRS4(BL8< zXmesCJQ=%Cm$Az?ypdhNMio3s#;Kb%Zh_bGk&mu1WulFFg*i)?OXm0r_)dU?J4f+u zk@DsjXi6foGUB7&7lH?b!Oy@wc)}o~lwSk=u`oZmogR=K*&nlD;e`CYkgF|liOiLT zQa2b*{h4>km%ff!<1KuiGw6XR2~aQYZ-p>R#6T^|^3>*T*O({P2$pE%?5=i^Lz7Gq#maK!QK0NM7 z87{W!*)O&_ZxN-YqbqA3>F>WgEo|K$A{TD?n$A1MN^+CcY0HUR8@IB}=FPCq$JPO4 zUj_JCJ#Ot)q>yr&0->_@Y7wwq2OeCHranFBJ@hrq(Q{~hiiG4wXA%B(l0T~6bh~cj z#_%a@gtIs=k9{1~a;sCYEuE8J;s|HluC+w`*vd#wjO6q4$4boqXdPgMMO**~0aRp4 zk+A_Q>rk#fF=!^1X?UE0o+iFOhRpY@qitzj#+2!}^dgGLd3KwFmfMLrM&o$K>hkPs zO*5ZzB5xdpnO}M15*;eGZhzTW82eM%+5rf97B8uI7DO&)P%4gn*$A-Vf4aR^zc((e zEy}$q1XjmrS-P`GD_xXHrp)=x zhbq344Ko}SetzZ1FJSOGW-UU_lax{M{N=j3_0G7uyF|YFM_7qPg;9q_-Iul87Bf+x4nGWNu%S)??^TyYXjvYo>OP1bv-i{ON1heX7o9U4694v7WZQBq%$-yAnq+_)!f7vd@36( z)H~He|Br72>n6Wn-Wk4S0U9bGj_t@faGqfev@b$bbz#Qd2OK+?$9D0d>sCv3_a~~I ziUU?nT@uXAb|^-lt)dY(z>g(wv~-#E9LL-IL8AZLxy_0_wDA=FQoX(7GE*yiz=t^- zfT8Do&2_W4#qfKDH))~CK?mtBoi0JA*F!+9u7hoC2KlD0f5V3?AR6V5WlaJc%CU00 z?01Dd$3ml}Lr>19y=&F$NY2s(w$IUG&CHl)w7Fcx04-d8Msrsk{7xH)q; z2o4k8hGcyN`%PflcU+H>F((@ddo{&qjeemM-}f2Uc3yf&b4Gpg>pK*kJ{^?>@%`oa zqy=dJJaroGv*H9?KR9&mP&*$LlR20@UyR*{tx9Gp%?e0}axwTKCx`FiUdn}n9El9p z66bxd+)NX2WYVRP{B03lfd}_kL$R^Ph1Mg`d}nJUTwdMgh4(K5oA%;Rffcr*$q`t} zfmDCNIwKrj0}P;CShR*hAU_fxZ}bKsXfA8aN6kH|J{ev*@>afbqefr6p6!T>l3Aw4 zu@Hd^-o18}P)G@Q`tF>lIX?ykmtS+7oZt_8%$$mtxx^eJ>I)o^-1btG#{g4SB)utD`XBP}=;Ap89OZ=7KgWY27^W@4h($O;NK^X0RDZKV&C zp<$Os2qbOfn$=v^>u|LID zenAV{Rar@9Oo&(B3GH@%&#^UTfgU>@b4&w>l&0*%)|mxB!IHB*{?%)_($pGr@97|qHEMlveAE1mA@)~hNi)~s+#z75s`HUz{(Bo2+`q>2 z8@VeD@yQ$oi~cFQp}(b`$R3VIMY{&_u6fub3xq>RItB3jZ_jNoJ{*U8`tjlRm)lVanJc%L-gb`lTWI< z&Dr;nXG(s9VLzYci2f50a3I}-eupUJCCc;JfTJFg>{D46zJ`SmDnKK>j zY>7aK?Y;Niq|H5lqksE<&(JsqQ%;5EZhtNS-W;X?Lca_zzrKn)8gY)`TWjCZ*rK`* z>A=Is2T!%~Lb)wOu^9XOF2bPdU5UyF`^SUT&tS>>%TfO)5U?I02L|PK*V_}&as@+v z0PN@S1#Z@v22u$&`w$V2L4&&3&}@BQ3KPxQH-x|A51)iJNd1Kbw< zUSqz~w)2HbQn_wiB0z#+X!NcAp z8@%f?U$f9{SYcmT`Sq=c|52KSnENfTU2yOQjQbHc#%fXU9Lf-XG)*F;r2L0sFcN~h z!`?mQ)^4jObxpzQld34Q1|4*#Z;VsrJ^z_O9g}qi&P&yx-oChhGz7~<0UdjxsM7fn+exm?aNldf_oX-eV^CuR z^Lys9CUeotP2pH26~B>YtKD89R5xZ<<(7QNu86vUFu6Rv>D>k71J**zc{}=3q+LeE z6Nw}7hY}<{F`nC)kC0Tx<;6njRTp$C=FJSPth@A>x`N)pvH5b!@e#jLW5vPTuOnj& zPj=DFNJ57U$9v&Jd^%9F|Id}j{2c@f16YZIR#IhdRjhbttRf#GHFS}->nV48Jd&Pl z-0*+05o@aCO`QFO_`QO?`$P8g5%qE7bJqgiC8Nn4yPtQK5Kn;UA=ca&Iw^Qpl(lfO zu3+`7i$<{so>9_Ju;jOU#Alb$1i{_+O01?lSL_N|vMQ`NN?$eQ@0iEh7~dW7vP)5W zUZ4W{zg+-v{R1Sa+j|j%#D~#$!36hyC&^b1T3kA%;4^GLWB-PC5s}u#Ush($M;xGp zolOgT4R1PP@y;;BgNw{Rg+UMUKsmAHrydS?sA_{bxjWpf)9W(b88SzF_UsJYFZ!?w!q|Ekdcb=g~?#5hFd-uZZ;+Xj4 zNw&wQaT@KUJ!O1><#hDjwIQeZ{fQ%_c~=WDLU|>jLzI21p&7D_*zc0|@K7(oRy*^5 zTGY6PO7$F13P5XxiQK}ARSv54tC6Q~PHs*VvALgu%QiC?)tVg08IP_ zPD5@fw>2vyP8~Tf&F);1PzE3^u}#O}`Xw>F%HA0(MP6PF@|m^j2U^+l_|BT?&XguX zwabVFSnhdy9I=)kNB_@9+@*0b3fpOCX!jFw8V9>7YYOP5ccsM4L4uyZw^^(ETb<^4 zIr5-j382-l!9gr1n9bBTGZRAr>PubbHLF({DK*tT2A$K*HBlLRqpyL60<~Y81*2s! zDuK6~yEtck*F$~8^T#+8UJdPrnwLpuy>^Qz4O9{>q#&N~n$f39yHp((H@wYhJYC4p zxM7s-ub?-r=MJ)P-#5zcMeu2ie&wJ}=(-z|p(&UpF=~tniZN1q8pLD&%(!$oY%*wp zQfQ%8+p2d%I!nHAvLfnBqHV#wQ+=(7GrYRkN7zDz^7i|sKN@po%RQPDq6ngjSp?Ec zU15IfWGh=WW^59*A0{VPwZ4Xg5f^_pm#`Qd5;pfUI}%NH+ob(274``FR)N0$d%=^_ zu&E$v)@tWOUIZFev;eC>1!z+|Z$@<>o}PT2%)xXr(Bjq}d`jx)VE7W`bh&>z5O`2* z)$1U`xV!yxLae}2M+hLs3Rt38i>;8XS2z=r5`;<>$7ue759E0KolFXMwtPKm8O)^^ z6hczSTp1z;7~Voxkc%mY12u}HvTdoX#PQYvTXE&v#WpX1Me1A6Hj{PrX3nq!qm`p7 ze-7XDiF5GL{Sp}`?z1gP((nk~tVYtx4)4WHf=*eL9Ds zNT-mHzmJs^i)G=U=hJGwTSJAc=tyBxlwp-67%?2tI+lY~7c)1`ak z4Qit1Cvw@jI9vYopX7aI3`8MPOR(utWPF(FjP^_@6@Z-Tq5&(8f?Fn&nc1V`-gK6t zpUu5HRr3086}Rn#*3jryJV$-U-V)17Qv8HjHXQUPx-Hcs6_X)>FvF#|=w{wIZYP(> zLDTCT4Nbb7hnK^WR6fDjD{bsxbT7)hHIzFaJl@`2p^qb;4Ma>-R+Q#2)$$q4fYn=fx>p(04S&E#LRNu($BQW_f)LeVU8SX zq>dApB)3fVm-zHrlA8C12S)S)o^$45Mxhi*dOoko#G8)12GwPpoPw61Ylo%RXZ8=v zo!*L!*Jz5OPZmCk;c_46=9{`S?_3uu8^@GqI#&_39MG6S8|(%`JpJnT3ydh7-Jx`Q zb92{3mf6X39I?O1}iZ{c%Ig%>|o<50Fr@5RW+DKju z1%VGaTIfNCqt-DzyO!ls4F2}7tBM*ekls>|tFFI*-8A2a@`C-du+NUAm9>v?a57bAaLu4Dr(>_E_=ZC}Z> zKD%}`nDJH4I${D@j|7PhYnGq{y@NR|C1QkM!?sy z=FBoVRmo$Tz~05r>RPswPt|o%xFc!@cZac3rpnFahu=lapF5{bNPZg`XJ}k-5!(1M z7-5}o!sWxOV$LNvCUCU*-5wTRO8MEV>l@uCD^Y;g=X+h4f3o)WEUu!tt4QQjk$1Au z($^<7YTRZnVcPN4soW6vHWln5z`XG^>@bWxTqbb-z})7-X-i_g7@+MqP39|&!XBjEGo)i3rXFP&IUM@sM%mp*i@&ax*pYioJC>KRRUB91Wicu_ zOJZ_Ni&S`5*o1fBdE%pxWHWJr<3}MISFF9IQKD|O{(7acw&60@xOla8zLEYT-<B>T)2f76=Hh+PxmTOQSd{XCw)1f%bf900ZiN?d zR=?4XsPaJDWmb9}dDo|`@F!HKA0=*oH)lHYci%9F@lB$k$5)4-dK%Kf})DdfBtiUXax=zKePmdlP8k z=>P#AD(aZ6>u~=5cziZO$EL|T$kx^W=rMd`L{EI-Q^it)IcB!L$lBkyA>crGW~D6E zE63sU9y|8bLRb##C(S~MHG&smcPw;tyaS*LKNbhtoY&OM>i8~YVH+Zdd!1$|0h!|= z56hq7W(!|#K7HxA>HB6?mGCvjzgVPo!m?=>z7FZpY8z{vAQZ!gasvTtK@RGpeZBVl zXNY6U{k^R5y9ijJZk=#fj37Sf)4n85ww0RsKWkA2e^lDA#4(yOf?r4GxI++4lYWp+-dq0irDjP#4*F{v%E zO@^+_=CGKCQ|br$BON@2jJ|TKlfK4Du9=!3KIh03N->+M5AaSt9zo*yrtL~imRwf# z8yQW@ng{f%14=hvsUwkHK`V6qLYgh!_e(eb^5ZCox^|7^=hE;ssEsP}p+Mb%5D1Y3 z{gL_=jWhAX1z%l#)Z6svLlD(^ApM0Wx&o>#%(C1#&my#cQrK%GS1Pe)ON?GYMe_J1 zwtgcCMAq)RAb*?Jp@+b=-qSdB6Q!wTOnE)App9M&~4;`>84pG_WqRS!_J?iP?-FP?B|MdQ=6qRv_r!l@p4Ul5=54VS## z*jEMLVu`C`Q4ujtF2C9R*!JuzP{oz^^PRhi^!U%8BR)&#+?q8gAL1gO@r}@=@;DTF zL3vJ_I~-=T%pZ4(Ix){aaHgwxCgx4&9;-R?{T0jUQMZaZXJ0x@iu)T<#B~8>8i$nF zy|?yY$3SMBGABLT+IF=?)0Yp1^4k%LUlC`Cn%OeQ$<1U+`LE{7CtP$fv64Qee4h+JD5fWwVYL z2-nBI!}XqJwthCuv$4N;)j+0+Y3>t!)tdTQiWn?7z(BQ-1eR`J+bH3>+rx07l9G~Q zB0R#-OTKi)bUb5m@WMyoc*xqo zs_~$HqGRSTL*3T2{u_YTjg275ApnSsr$|$aA4PMatNd zkLG|{sXci;wFxtt5=|4LX>OeTS;cecNqzao+%gAGBT*8Q1QUqg}j zBU<3^(Ec+6fu^v8wcNpDO5;Zkz<}N}k7ZhKMP}~x+IF`2lBt%}{k=E)tDh!&{8Yb~ zojbcHm#oyx9G8(%2mX>qIzr)j&k-zAgX0wMJ_n6K*V^9QLYQ5sl<^%|(0ShN;(<%t zuwHLzSAhzJ43-My#WggA*Rz<7bS(! zOI19*)0&s*e|BF@fCW{Enhe z$CWkS?HE(n!aJ^gUrUg7@x6$Wxty=B(I4E-_b5Yc^$m>++=NC`-_%9qywp^Vi!2FJ zYm-*M2{L&tG10Y1+n@zPzk^~Jye~I zZVj%i#gR{yx*`-FWq#K6q=0A#cjgTW-%sPC(kHa8A+cqR(S}W$?qo^O}iaH+eGKtMSaqnrwN#J>t67=Dis874C z%Z=K}Ghc$#@2y9lvdfp{5%Kbs2YgGGF ztb5`TTP4p+U}dxtN1h}aug(~SQpsHdNr;&X*r=(Hu%CjZWKA0|w$dDnJWG2?vHrb-2n)v^Xv#rU#YkROTtA5PiFzPXKlaYB!tyIHy&4#Jrh7Y z!*GV=#81I5aK=ZRFHQ|;bXAcAPdsgo?^@$IzqlX|H4c<{=*5_sKtK>wL{bruMnFMoz#s)gKuSU>rMqE36pkVcAuXYFcf$;d(p^K3NO#V_T{kM4_VeS^gm#GE6T5VTZiue?|1 zysIpM9fS##Vxr(;w?j zt~tA6R*al@KX266Hh9*(#U~=8_xB#N;DOJay z9JW+jk4Mv&rz&TzdKimdXVU{^jj_By4OvDfZBJHze#do6 z+w-M&YS|JWWQUO)n)DOvNn681;Nsz_+6IP^=~`wTd_`PM_Sl||w4DV*oIk@}eLt5<#TE%k@UUn6&vht?YT3u}GXtCokQ=v~P;$k1J?dqIDVs*r6}=zE-CL#CZ|1ma2kqE_F3 zor2BV)$U@zFwugS7uoYt0krs)(g#^bozPxVp-1aw$b6PD9WH&uNhO{}oQv~&!LMF9zeCJdwpjJcjOEuL8 zk=#U%onx>UyaB09}#=+E>CT8f`CBjbUWL~y;_(Y=NP4>NFZb?-?z#RAW*XyPFS zD8N9r%Dcw?prucefIO<=yGi5wW1-H{qKL*HGsXcxMKK$XPLugx|O0@cytq zaD?YNl5IT9;;YpcY-o0BWc`)W`&9E=+u8QZXe%kRCr#fTUb^h(vlaXCCVix3)x+$^ z-~3`Qwb5!#w*&sR;XL`8+WkF1W8h)ubm*DKQ{K3ePuMKKH%9~ z#GT&~qhKcqf@Oo{tQgMUmV13mE?YlF%Qt|tf>~~K<(56)AxGn)ujCh|14R^D;)uziy7zqQxU;U{+i_D@r2 zPangN%%u*s%suC!R;6Dq0prW_FfPGbPA$G{&HEMVnlkuuALA60T6_OXpCE+}fPW)d})R3Ar27h3nj z96l?7U+5!5h64LW@1cSmDoNEBA|LiwdS$%+CBR~4da`o$8+oL433pr%j3Fj3HE>fc z?{&Wau&7mHv74DhiNyJ9j?TXQ{3CmF=kgRht0C5c4W8m8c&CyC@0@d)3n)*!bH5n; zmkFS=MzjuI>2Q4e2!xtzMwz2k!r6KPu)y$JQvoIq`>(JSP4QsFH*r1vX{glTtL3;B z8=R;STS0?>^t7M&JxSwHk#J=yI=_Uv7&F)LHTUS!G_C_~|8;O?mr%XPl!~eE)R?f@ zP=(Bp#jg}QJf`dB<-@`TjVB#7?f$ec-Pd$%Jt}`hD<5S_!O$A;N5W|#q!N3KB|^a6 zi_0tM){v%l<2&uXxr-IUrSxERZ7Dl>_?qK)XCp!^39D#g`oyKuKz{MMMF-;?$4i$D$iQ<|AAtr+%ZT3w-6LvyK4LA+ojOS0PDFpN)={!0vZ3s|>4IaSvtHG2OQ4=MmX zEUMf3S}vwWW@wItr+ykeEhHbcVpU9`bu8}GIa5?R3BnQ^NiA_DPkhD zYgT*bWP%^xwZz-n=x{qXm<-y0-wr^+~| z^4^Z(M0y`(P}+E$qbJfUM$i8Pp92y_wRu|q&Y`y-U6~V>hP9D3u zF>-rFEOZ-%t>ZsZNI-9;XKD#bO3bSACjIH8ZASG~~ z@~&+&nbm;7ozHKs>U=}V*L=Zs>*rc$@qX+pR12csYweV6)0t|vVa?H|7PzYbOQ2QYb9x)}S&A!CW56$<2Fi?eL%@Y)ed>j}8%NHr`!6 zTSr(G)(XjA7<##1?x-~=0H#pP>D;(x1hW;cG9$mt@MgkexIRNoFw$BZtMz!2{W8G(C6(-cCt;c zWW~nj>jQ-b&gbdby@(AlF+CmZ6Zw{t=KzZ=mo}J1`URqfYV%qoqTU}f-gB( z`mYE~YPrs#uig?|dg^*%|0sW4&2ATZ=T6^8Ym23{`6SEW0hGbH1j+T#uOUX73`wa9 zQKTsU37iB+Y&Ps%%U#xCC%eLaCxbX+K6KLCo}yAws*+o%>P=N2z&PGJFyzE!DXjkn zb*Gq4?}2U>=C_PGsTR+c{OZ+;_vEL0U-MJ{^a2EoX=Q~k1dsRR_mr_vX9E3#)dy;8 z-FNSh7pNVPTA*CC*O2H6WOsfRL?;t>sxcafX?VD&ZRIhbuxntM&XuNk3`qa1J>TbGgRG>g4ZLpOI?IWF5-BR@VRAleZE*pxWo>o2 za{S5QWyLqo;EB1*bvGo+2Qxk&%LaNV#Kk&t`v!0qAOLnm!3SQ0PFraW<6XhV-q#DW z@LN?$cN0d9Uk5;rv^6d;TrJ27?hTyi-c?vS4xrT8yO*uYJw?Lmx+4Hw<(9e zpbA~$YS{OISRR0~Q=umWSM8GKoQ9zNEcjZNGW`?IVAcDf`k>9PsW%L|Uq*stC7$~L zHHS%rWG!D${kO6G#n)Vgbb~4cf4QvL<&_T@v{^5#G%pr;OG?PyuJdd`k(IddYx$T& zDaua*flF63Myjov)^)6r+{B?0Mx&c)%eX4cj{h3Rb7Ozp`n_RHUS z;w%Cxe{H*-&aAcbmlfGMQf&rop zV|fL(u1&{|)ufEpq)%?fXIj@Qc*&uQVDR#3JVmf1Z1**r|FPHz`|VY3x`J@Avf_CT zQkd*rqa)Yh-4m(w&FTyxFAvxK#3s}}0>gz-k;yoA`Fnf(_ysAi@~Jl35~+SPz9V(? zW9;GHA`>=Gu1gSAx}Ao0Qn*fF?-=x4Uy&pDd>oZm)DtvZ8GR6+|awY8g6Voel1d+$ry6W{#Cq%jzO%5z%j z_PQUOG$950V4mRcaBmMsrGRBa@SmuPis8d;93*lS0H8X z=>qxkm1eKmb>9Bc5f7*qRCdc!H97OPN5qUm^+51Z_ft~Vn2FXfIhl|uz0fwBC+`yQ z{;#Z(B70cB|B*oNA#p>SU*2;6<(BmME-mkB)b?dZZi>3++5TwqIuYB5i4k4;;}+NQ zqR~M`g8r`Kj20e-D0r~Wb~i-4E$fHWp5l13sQrUh{NWU_b$br1euU2p;a*9z@EvCT z>|I`JRHMI5mVjqJ*0?_XEC0}GGwpRQEHdfAK=f}oSecl5Q9FXGeW>^5Jb`Aen z;eVgXB2y@!x^o-xdB+hN<1sOC+p>-R0YQ_GWejdGtV-=t4IlU5Qrzmo+NMu1J-au1 zqF}rV+u%6b_G-6vE3vgGJwlQa{YOCS=o0@~0v<{-CZL6=YPwS{y@To7qiW>D9a`Lo zqix000j2Dk5_z-w9H^p7TCmq&kA>>SKFr%73G+j@C$nU(ZAf+H7WWr+t;0ir@{r{w zLD=>#fVKr;_q+>xZ9V&fPD3*!6VN5|(n|0RPNAMlk(haV8w zHRlZPQ8Q;tF{EyBY8Ompwe=t;j6wu0w;l&PTEiR6_{_)?5H2fXJAvv@b#dY;=8N;T zEY5H*F4L%WZ0U|*S$~lvm3uGIWtK}q-{%Limmv4AE-DGPNd^$6OYW`PazQJk0?%7X@)9b&Y~ zE>1tmUoY`h7Jp=n-=LdF16(!7`VU3s-HWYHzK9>`dkZ_`K2Vej{z`1N;{y0i(22si zq_)`N)FC1|U}OXJYJF53&}n9bJj(mvq^L&CekFK0a#X?By>hMiE?ao& zzTRUo^JfH?t+jJ)$DN6E;N#$pdn<}6H4^ZOQLt6N)~c}WNnAl;`|rHTOePiaHsI$r zB6t|f7N0>o!K0+2-N;BrIY%``5!#TWN;w*Z^F*KPF2#sTKFvueY$NM596DM%QQ+lP za(Wa!ULf~#IODj9?n>_}!xrBcpFA+i*}kXQ+i_*k%zV-Zdu#Px@e$-yZ@26D#vlaK zIUaOLIycvv_6~N>y?1%|^zHKlWPy2RN(dwaW;)Yuq<%*PayP)UCevs}m8?emuN`eY z?x*Pn1=l}nxyI(H1vDVB$zDF#yncl~^cz!%4C;iGj$cu{j6meUhK|!-6SQ1U^PyOF zJ%H0_t&Prq%VoUrC^Tig*_GB$U*pThv-@^(Y-00+m^Zt!s-!~oLYc0p}K;o#~JBchti2r zEI}9U`?=`*LcL)7eyRR*>Eq`j2Z78D^JTitGP%$f&ktf;Y=g`D6^H}+Y9__OWKUTZ z`qGb8KT1JK;{gXtcRxN`b@&W%Kel_XrQ{hm^YGvbTO+Z-fmi)`k z^M!Buod-qzxF7mVf5j*}tcEjhXQ>WL{~cc&{Hos@+J&nqR@p&4FL0gpnmqX!tlz ze4P`~=e{w2*kus=>Safb!%?e+w@b^WaS6lxF^pOC=!(|Xp<=1;1HioOIW~hU_;(1( z0-W!Yfy`c5E8>;5b})HV6OzTcC*o{TbKgMiZXQuvsBs*2C&b>nu~{}GDMiycSgA53 z;RJbXv;*`+R2_|Wnog{p?=XpaQJdji{XNIGZ_2YbxX*OUeB#@qHV)MxW(SknoI4a6 z;!EzcxQ7M0PTE;-U;I=k0PjXNeR**e#Yeh)S6E7_|MUi^panP6MSvy12X7bmT+25hh@3Wd`}CZjc{dBwrFBrPB8HSNnqt z39POAPu{n15M&f%Oy>h42*+WxaUswRKo@nPI~nkX%6-031G9t()pG-Dmq6W4eyJLc z!Jjh4V13k&<$xCr5}4Ovq|CP`KP$NNYR*ynk`1Y?!S*xk8OtWacxEs#62n^>a2|gg zfHN&4TlvqR37$rf7U<2adjTWae3&~u`LZqs5f@MZmkOF33l8__kV;?qkzpPKzujM; z7rzk`v}zNYIqhlFQ_V?kIN*3w;Yt3TfP~C}UlSO_w?eI5|G8^MY1igY*737j*WxyS zJ2S19`uHVIv*5VH6!+tj;Jk{7A1qtr)tt#26JdyLgoCZ%KR)%X%6(Ee=4LS0**7_6$vy%Ea9 z!+MkKKKa9@OZP85dIOF|{4h z@Qk}mJj$WUcyc??4`k#)L$>5^r0ZaAI$6>so$?G?$bL`y_gPDHzfE}isei3i2)SB< zZLxr9zC4GlhX}qS*|kq-;w~2a_8eybl8v-pc z?b$W`sw&{0<7U}shbTz+wWwPTQ{s?Mv^n2-waOBSuL#U`B>>FxHtAEJoG6-Y*6_Sp zEkYcy)nc2-z5`ZtuKdOx5r*h*McbQWf7nC<-$pRh?&s*f}Q?cJe-&B zYS06Rd2+GSD{?%^$O);&X5_7#Y`4ap-v?aXBo zJ22fv2|Z%lqAjK|h2IyriPJU(2h-pgQHH~GW{`kOixLOE0L-ukET_v*dgE8cBf^1G zwdl3(Bw2;MKpC%)ceHy|*!x-`*a@%Y~QhHB)7(_hm5u}WjGjk=>ERihzD#_ElwCcmpnl?|9VN6yG3NIeM|tm z2Z-X`t9OC*9%(HJ3;x$u$B@>SQPFum?z9TkRjIlgul%mzU1#NyYQ;*MwiOIrE_f$d zY#vl5AnV@Y6Te^Jg^XZl_%N6r?0=ub zi*v?dk|Uy!$1R>(9zVQUibP2}rV+^rrEHf(Z$52!P3i(4Cs#M0ynKiE~eoA&!L^Fu<<1b_%!Mt)WUyqUuWn5R4@W84mg2o|#TQe3#? zn{UQKgMci8=~4*DHeu`p$vIk4ULhUkwqdq#xqhdqa!c?NuksleM`(@7naq<#{oe^p z(Pdw?<*a5^Hs3TN9?iJ*eHqD7(JC+T4-WHkI?lAYyWbr=oPgUD2OlN6%_~wzQUU{? zDdYiPl9wSMcbeJA?Jd#EZqu$XUwxS$S}aV-tr*6ROe0u`9q-Xb1SA>0jJJ#D}rK=K63r`3V|F7j3A`JkmpFpJW@zBny(`VNk> z%%~xf6~1!9&kH!G6A1)XmkUNn804XKFZ+}H2HOter5qokWf1?J=hwq_SQYrUG2ak; zP#o_4yD56tzDeila$v1(o%;J12yx79TR1C2({GU~oYOCmsjBV%5A%>e`O1+};_gEp?kdT`gMr&ZjBrwIeRvYDD>hxn+qxzIlTz3$b!K-6|9+A7W#ZC9* zQ2Ivh1d7woiibRx#kuR!*@IU#M(Xdt7WAx1vchESMMfL?XzvSOIkKBld1g2NrZUk& zpE>)`B#`;ni2Ts`J)L+EYli0}v#_J7k1(I*3117L0E%ZvVH?<8=(w?mW#Qi-TyU9a zVsZg7Sq+GqCdXXn1I4CHs1D=CW;z`xpytAZvz7%J4BbhS zP6Aonaz2vyerhnA3#1VJY&yx;^pEon;KAW)w4|cLYNV4w~!RsWHNbam*dL(+ylQ^L(B7f z#P7~8%4|=zFK=ePN)J$&UI8-@)tu4ry>A_h4Md#hVg!NO>Oh^uQ1MDDbeuF&hFaAS3 z9;T{LO64CJ4NncZuPAF*b1N%OiMyURX4}w~iI!(s!0#d6!W;Shlj`}%=pZF|`ot4H zeWGqm;RYw80!PSJ@6bD42(S5G7KiLcHzZ*9kQbEd+ZiBRDrx?>&GRNGpF zZ|iUW#SceAqB?C7uY@h)YK7sck1^otyBs$-Q9$yRD}&KOt*c_Hl*WD*K`S)`C3CKy zxR9kC4|&#V6p~|Ea9b7N13km5P6qvlgQ4x8Ns6#axg)tmTgy*&PIU=K7Q(e`kBkEI zYmy&pCZf-G4^6{=Fe(xb_qC9yakm8@7W>Yv0XDA0V~uOa$Sg`A#{#k7&ttL$@jP9P zTdM0iDih}w^udW!qfsEseQ?L1m%~4cfx`T0)j|DQGv1xdue3p*Cj$54^(1V`HyPX>Q0d+F(wsv)VPKU^G zA$Nqrf;aRa`n1G8R?UigPX6t3@8f_XB$tl*KMKJkabKCdeW%KeJSvfLU5%K?cka3Z z=8gGcnRu|zX%gKaotb6=)0GRJ?}a|O9QxieS%&!ixBxI_$)-L=!FivfCgi{OjA?|0 z4PYi^0!37bj(ubw?z3p)DyV=*_g{EXtAj*F7>Wh|2r3PUo;TKW4NHC-(}s$OiK{Ji zB#|FeoDvVB1IaI~nL;jE)iY)tLeHg%^~m50Y9Wd^wnRyig9H*Bu%^d z&*JSOq~qFs+5D`3@v1Pb1Uf&|WO<>)XlaZLn`OUN0={R}It|*;OWs~!3t61ax&m7| zV4V`FTrzi)q&;QKIKOxrdl8U&f5dRYK@SAZ&M&6PUobc!zbd(jq#G+CBVrAJkWjG8 zepW_l((~?Fxz1+5;s8w`lRFet{lj2otHMyq&~)oBRCmQ`pXkt#MyO7xQ9WZh-}d9a z&NOcEr*5k({@63~YNmJ3Zl!s<%%PGN^&Yp*8zOZ=#fyqyMveUcq5 zs{@tC-E|E$bbsH0N&M7u9YSpo^T*^_$&oXI#@xM<*l0f{g1X=AVReF*c4&vAW=k9a zVJQ%Q2E%YH%@oXA%Wt42i^+me+t;ylvi*sE9Vz^J7$V~T$x?0xV%IGVv~bHYm$z&Y z_j_zU0Gt}+*(XBLnKI6Y$(*COZ0~U}*c@~EH3+7V?d8di$r^EO9%KHGd!(f4e?SWP zxq8d1u7?e1kRS76Zd5(dWv&&WE4)cw48fqg%$Z<-VDh^)i)Ml6&5mkQ_2e}ahwm;6 z#47`@BBMSptNn{jE_fOZ_tU<5ig<(5%OP&{yurfA2vJ7Z!n?tc zH$*8Eyu8>|M2B^{%wD4KCVAm)=(1 zp?x|gdk0ye#Q9nWqT^U~hoBU#xKAL|==wAY7;Dc^ph{Nye+}3{- zxvftXx#7o6nNKU;u@vY;T2BuZbi^&Mc_E0>zu>_BL2N(K)o(%#p%p1j^_xQf1lPr= zupk}`m(GK`_d<43wkuY!S2066iLyIpARPOYC$($iQP51FwU*L&=49P1BZpwV1!o$x+J%YaO(llmrVQ&J z$KmFl z2l~+;rf0~V!uLe3QE**c|KoW)dkhO6I&FF3Kgkzq1!K*#AZ>ec#bx|)JScHa8LTlZ z&7Q5~m@Qq!qc1*mb)8f>wWG={N}QYS2Z5M4H6E%MM0)T%&jLw^sBP)NgA7{d~NuoTXpbUAvFs&cQB; z(Y>M(Nzcb6$CHt4q<3>5-}NWQy20RZ8hICWkfP+T3QB@4@}(YN74k*tH}aG0)oZ5+ zsSAWLIwEiDqCx5(W0)JaLK>ourHg}b=?p4H)U>4XHDe~&25{+IPKb#8SZS3qmwkL%0Me`0M=`(mCk(S z%77zT1V42?DXr136*a$Fhe0ZXEHVZ4ig#priM$j5Hj?0}E3t_zaWJ#CzpfcWLfEn=koE3D9{Ui_ZNqP0A&t08==Q;w5v6 z1#|YLc7zPAh*I$YjXK4s$8*c~?v5(B!newzz7iyrEQ(5@xoUm0^>%kTm^OQI^9z)s zRAil-YqnwFZg(}U^>}c$X+rY*jS~&?zl&67TuC~UswS+yW3{Y{mZZ9pire!G`@(M$ z=RpXHABWbM4+JtS6}ugk%>iEdv+RxQPbhPoosF{x$ht0MMpE{R;>hS-uH4!`>C^ec z17)kHB-POP$-(`u{f9>Ajdh(IRMB7k+!l(?`&@ob*~%|n`mo}Ej*^OoKei(L9;3qt8m3+O(eDaj{o^o6W{ii2>{q^VK-k96xvNqapKv_8 zaE)CRaFn8)d;sL9lC$_2#eG^&p-u5VMcmMa7)4|z$~j)d;k zip`^`Ukx#hW9{Ob?H)yAb=6nh{tb(%E|WBMI7Y8*n#L=Q;mL(vb{W=E=PR;0k~~^M zHq;khzlt0IOy~2jR6;jD41PQKD?8v#FnNF>yLb8Sx0ZIuU3mE5ze!A`|C!d<@AanN z9QME4KJ`BIM)O`*!O9)XiXP@%=Qg35mI#5{>JB{!+@n#$NNwZ$!zy$$_x2PZm$vU%Nwhr`d-~0v?(vqAExn!8w06?aXn*HTvTb8t6leI#v#`!+ z%J`=>%@&UD&M~IEY=;5)>OOJvC>qHV{*P* zE36_+nJSgy>#l9I9RDVRm2XH)6Q0^gn=`lK?+Hb{^7i_bD)%`<%GIDoXr|6Pq2d#fC z%6}fbF2;h^zvk2byU5=Ue?3+v=c&G+Z~ou^KNH8{N6O^cQE8I@iss)BJdz|Hb;~{W z{@4EfT|!c3C4DUB(EDF@{C&pmv&?KuV&cCU_}|nwCw<&pDEOyb^N-lwIIBIDb{LQb zc>Uiy`QN7hAEN$`(*F~WGnM7CFKsnUDs zA+*o~2}y1|=YIe0zx(%OEmmf+GH>Rc_nDdf?7g3S)qbl?N&b)=002;`s=U?#07&pn z!in3Y__uN3iU9yX;O?NPsO?~50{}ct^iJ$h@72E7uVq?PWFWcAzLAix7Ipu%LZ9mX zM3G7veMKv0wJIN{gP&^R25+hzN9|4)Wim@jEAi(kOkHD`;&IbTs2dKVQ z(DPe7Sh*F#{NZ}=#NMtNX?7$)nM4!tij3eDBI0ovB|XhMg_`#?-H|E{`B)PAcY0Zm zb%^iM6w(FUdGd(Hg#FRQ(WegR(FkaDVQF-Ab#-OTxupZy$!6x+`@M0EqwF5>W!&{%`AJ%>OQkpNap?;eW#6e_`|ARq?--@}GJ5-{$b2Y53pf@W0Ig z@V{g9KSA(6l6U6iR9|~*Ad_K{}bO8P|M46G`hqu1TsZ-lgj@=%~dC98UhE; zyu2;j%*gGIGG_b_P0?}FmS;qX+P~+{L;pO?ti4hbiXNUn{&(3I-vBg>$^$Rf)IY4= zzLj_$e2-iW)N6v6B0<+m=H)kXEu5o0Ip^#D&Ydd-hfW7?mqdX6^{Wj7(ENVi!hBWK z${Z2K*o5{3+>29=fcN%k@gJ9;r2!Dya31DczAPt+3al0(4JQu${e~Y2WoH>* zfdvN8-{=F+`6^WYbL}^P+qT9gVGuKyhs<)8JQ031`(K~awEQ^RRxY}Rf{tZ?>jy3W z#xqHqLWJ)T!ay7%pH|3xBaNnzoo?kI?lammJxdcY3(QBriS)f+Y*#?P zBwGId^A9~Ic;h>fUQ=O|z6)I153C_p5=Q(pLisI~!|Hw`8ymJSlmqhS;g2n;v&Q_5 zh^pzYgPX5uZLW~&FXp2y(}}}=r)fJCIJfRG*PsJ}G~Mpq8=7`Ae}sP$23-HfB!r(K z+mPxtw`m938?(>;L<$+}H}<~1-&Sf>3mw9Z_$jTCUSH3VU(P9|QGxwbmx0-WQ~ulX zohreJD*0zmpMEOOIQaRAOan|;mdmB2Ux~g+3z_(K=aM!e^kn!@XriE6-geu_CoWSH zByJcsdeLcFa2casWVI9b-$!H<37}CaI5)VVJTu|#x^ofDLjKL!Lhy2ro_6snROL*m zM#`jDj_E3gpFY3?_ib=ugr8O97Av^t`HlBeK@dChGn#@5wU{B{zVD5djCDTu74@Yu z$9M*=S;)4Y7zx;1d9OX1F7SW;!cShk_aa>df#wT>^c89a>8dd>kG1}r|YYxpbmeG%SuoT^L@%FK|aR1Zl`vvtcxG0#pZpTzG#6S9hRwE8oDM-Uv z@Z|`~?gpZ2F|v>K2ZIyo$?zkv8o_5x4r?u^f(zduWA|%bwhLYkAp1=k%qpm%H1NZ_ zWWo$?m-|M_~5;`R}%KX1?OK=#{L%%`6oE%anhT~Os zD;fG+SJ@|*SX^I7t%eiRlY&3Er%kyU@#Skean_%b2<_XcSsew_&SRd}M626;Bd}4v z`!cdhJxs<{rL<_3g>Xp9!|m zs9N@M+QZ+yRG$^=ZeDd51k(mn|{rPc!cz zad;Z%f-<{i*gAavXg^WYFo*BaOkUAArtNYhPpv!V@c+Fra{M$ZIIdfo9ov6ib`;;Q zWLOD4J!l*yD%gMMz*^6t+yZ0-3qGq6t4>~1oKxSOQRZ|Te`9^r+@$hGQ{#8K$?e@v z76o>t<#*4T7TgefVnE32i?8Tc1k zW!`3Ykbfvyt6l8J1pB$_G;EY>N>^L;mzHBAp(d#M&jPAJDrwrbs$`1GQqn$^EW~xR zmjJL2dA@xsSc8`V826vpW9P=lp6W3hb|E~^&>Z99XZULTM)?(@opW*p&iwhhV(qpt zJ1uz&kRALtp2!nP@0qvRpCLV3nc>xcE0mR#>=E(n$1H-33CC_v>3?p~e_8qateXMHy^|&O z6GfhGZ~z)^{T)wCabAmh)VaD&!I{`w6`ayC*t3l{*M1q}O8wsa1)8X&|V z#szztH0lVTHAfdey17Gw-wZWgX)SZjF8Xr0%Yhu$mf16<1X9|GWFHO09Nr>T|Jw0R zG}3G&K7f#uctm1v$9biw#4pzsMP2RdmXs{p8QAs#vu)pufFY))Qp)Uc2H#+Z>FV74 zVn(}uN3!ssbpo;mF?28w{Y1)$-1Om+wy4M3BL6yaFGx;CAaBqBIP4{M zhiMYCb0>FhcmyiVsRZVzms$b`_Sa3Ke)CUa20X*V61MCIQfTdQ<3bi|$PdE~ZqbsCR9igk_5E4#X-SIF*Lxxv=Y+!A_R zd>*uuhhdI<90GUQT<2x>9`7*xJ}A#q?IkptygucayqrHgVtaM-blx%09%sZ!ul!wP ztNFMtc)Io7{%t@=&8r9am6^5TbY)Ksd@CyGk5MHPXc3j}aSPe$OPL(4S+ z{we(R#nbtKTbbuI)t{BcFFo2B$7;%5e=f0hj81vw&yG%_vE*9au9L%aD?Bo8{1?*Z zL#$E7%-FK$KjDphIuAW0Y2Cf}L5sjr8ui#$IfgPHjwPKPw*1(lbv1rLC47$3XQNz` zuovZ%{vMAz*xJ`+vs`hNDQxFLWzwhj$n<7*`aTUBqQHOJP)@;X1~LKS?+c~bz(0M? zDj|v3Shm7*NuU$dgN^rf1$N6=rx8(O>{3htkZ;BBl8RN;z(`OH^wLLlcLAqzywLUr z6-b7g?5FtBaRP)xaMelB8Qz^6jvoC~BF)OCb4r!lU)DvT7u@iGZ6WBCA#=b_J?2aJ zccV0{rc)uj5sF_oB`+>nd7rL$&G;7jt#<01U9+j?K1>-bsQofNTu1pZmM-MJs6W!ZlAs!SH% zUc+`Ww_q=o+oC*ce%TU(pW0SKY3_Xi3Ds5$|K+oK-oD}Tlhr(fx$<~>TVp*r+gvS~ zB6^)IXOJbqtH8RYEor)SORx0Z{lp!RB|oK@*+Ul{W*wrpkNET^8sPEJWKF}o^pj)3 zG;%^FY(VHV4vt>!ZS+Ef6JhqeAt&w5?HkW5&uqRxJe_`dbX4FL7$#Y<{W_`X`+{;S zmE^<#E3;L#I`WX;7%$p&=o&XEPDAED-hC;~?m@T2iK#J4 zZ{_U3rRUb-*?X6R%_Uj+qN{$H2>4maNJ?uprsuFCSYuotC^PAP_<7PD^TgFMa-lHm zsw|}7A|K=@ZAZzoG#Gech8vjS5!+;HrAhM=1TCJ~76r1xot8{%BC?Zl|EI8rKth_%+vzlEY0L zI(9>Iz9IqIqIDLyXu%eua@(xEEUR8Y$Ocs{F`&y&QIbG~d|j&^Ugr6svyH5ZJIr*1M3?%%i%_#2LQ-}Q&ySkF=H#yN0rzq5FdA907{N!o_L#v}% zg%0T5mtEA8I#sD>p>wgzR+FbJ1E*+0&t-x)?R#pTfO*U!U2X}P-YkXGK_;AB0x3@l?bc_ne3SxS%+Vqine*mpc|3fXlVWvfvak- zH-j3q)fWiq!!L2ceyKy5#^LwII=DfE+IU;__Vk|1&61Y%$}!r3bh(`O(qwWjJtq%~ zQ$w0;wWvq!NL44T>JLkhiWXfC;c@Qf%b{^mN0H;kC|o9Hs`BCaGnPE~5UY(ZMin(F z@duBMvN!;JePg6LlsHuDldI(w+5pvyYkL}OEPcZ&zxu0qobIb?nLPuN$Y|URlI*sO z2=r_&h4(jaoVf8H>g%m}!9fsqD-N9L37f#m`U1ji%VX7$vWs(Quj|r9_1B^d2d2ne z82r!u04HpD7^HE~6$Y3_ZYVr-ZRXsTy&ro+$dl1hka7?Zk|H2(rsgAOMBcQbIa2#4 z#lB{H)v0dr*~`j2*buW#IW(nF+4a38KD>z{xk;3oyVy=7mXapQ@##lqn~Zt=V_h-I z;`#gpDZ;vUW&%57Xw~{MAFrj-Lwo0iv|eXndI~1zaStu;-_TFvc|iQmHH_84WV*#; zK0OP3QIr@x(?#EZcA5H<1(|f?u%z-MD9N)qgNWs_IvJk}c|jE~l6RxPUGFq;;5aFp z^XRxe9#`GP+$PJ*b5<~0*QugxDylVT6#Zq$Ke~xW@=Fp_4{?{eIHK6st9+0N z3AV#WB&LX`{>jB(-f3@Pg?b&`k~%5bR1j^|JFlT}06^g#0(P##6h0hFG1x`WqnXRGY6fEI{dv1Yz{RG zUYRWjUIlwj6vl&kB_g#F2bcsd^huVmBONc`ef=B=<(2`)4i6o)O;ZbpAiDFqEO!Ij z{c~D^A@lQ-0#+OFq&AC9Ju3hZ({gJyPL14t zToYAnDysNw)jwZk1;ykLxNLf+PcK`xR*vecQ^u@J%EYIPis2@8xlwz*ZI&P$PUFoY9{td#u!2^%8?}d3*ZE$ZH>HE>jOwlFGVsV7n_%M&v+z=YUQY6< zV-vaIV;Fri%%QyF&8r-KYw!Bj86XGiAh`CgJ)pc)fQ1W$ViqEgPL>^Tgxt{a$Q^Hv z30-#FQx+!$SUKMXSofS5U>MHKwj5xOMbB?KTuH3nMu2#Kd=mIM)8CMyb>Fl6uz%iB zSqQA3T=Sx4W>m@6ownCr?sMWh?-@n&@3+wXM;-!U`*Yte*41jnI=Ox91I0O+!xL}O zt(-@!2K+U?rTfHv!oG(-%k_!@L!w$t{=61KLm0>5_$x*(53x_WBJ=$_@Xd-dY-Wt{ z>pGW_Y{A1fPj4BY+xvE=`}0OtlxmapZ&vY%Qt zP*-!noB|^Kh8KtJPPS+K5T7QZ7bR!?w`8;mUR5tn37#-x-^8m6vx}DCIjulgLs_S! z>%a?u-U^i-i)R+o4L5yjY%7+{r#DCrtYvm!@EZNDe#+tn=7wqI?zTe!HGr`i&x;vx zh+@2ZKmUlZ0KLK!UE<2)jBK)Fu@UcNhgyE-aP1uUTaSI`e&GQ2^kw-n7O3QSHXVIm zLW~ofe417HYuvy}%Cv<}hT)Tg}u+c6S|16gF@!0zuv2QL&a+;+uo zqFo!?gUTc>qK;ZBfkQdpDPDNRPGBOD-F{##$?+B0GHp%$8QDqq$|hM19*^$FjWJbW z#~)9n?BPj6-Z)9oN^>4BX$+g?l)ivuzwZ@8ewM2iZvCS6sCK*s^n(Ck)&BmT75j;P z@VT`ds?zarvH5M-_^QnD4I{AAu>YBCS&X4GO1DDfXzVCy3mJL1Vr*PN?|xO37QYPkgAzsyQhD533S1xkK*RYY^3z+j!!GyAC5MSzG(4)%rJaGHI zKT>pjs*JZ!HP7UGE>lU;r!vgO8)gbXh{sm|4c(t#qacn^)6G0jTry756U8g}se4N;@7?(bIF?3O-v?6Hf#$t# za?bP`Og3ZFi+wy1%k$+}#3u!`Fw)Oe&E!8R_U@)bcGOL4rcNW&Bexjt57Q^}u8(1* zxpz->C`?giJlSz<*9mvEMmgTC**(JY1hiMN1#^M-cJ8=Lezh+#V|gha#FMgEjqUL* z;#3k>zGA#*GcwbMqco-BVh&P3=<=Xzw`8($K{!1_y$E=6;|uSF)sjZFW>1*-M0 z=dFj}PZB8+f`N#{pf5JmRJeP>?6aqM0u7mZ5Cz)9j7T^A6!V=32}6RvS63{tl-3m_-|K z=pod!q8PJq)`O5M4e^WtOC%a-Hd(B!Y~ro{wBD^FF+Ja=TuKN`Nlr%88;5`&i$H_lMVP zx{!@B8MByT%s(3ZRMEO^=JrB4xUS9Q$vGb2YLBKwtG}tp;95P||B!(NJfPqlj9(U^ zlAStk%KL5L>60q|VKn1ewBydKC1hYJ%74^LtXZR}XW?vlf@ABE{BE$5gARe!-(}!( zqP*has4B##wBc{%jxL91zokn<_+WqZdAmyH-evCP9ZF|6S?ho7>CDU{}(BJw{Izdu}n2DCa#U$nj+F< z1ZG=(NeP>uc?c8|Ng?=lge>pd40iN}2lmA&F^{6Gm60rdjNxpN?GTrxm~CvmRM+vHF!%aR{)k1gcleu|jJ%4w?@sD1J$r6s@Dw z2b^iL@i+}X(1lJm)xZnOt(%R8q4x-MH8*l{OrlHu_kD9Y)@*`X*)P@blx1L6@yDeV zPPfzgLJ(97VryqyBvt!#4W97qST-Xn&wX+3!*GntN`eR-$^ZffnwN1+wJ~?SB?8EA zp_27O$oL;(-ze25WF)v)ajq0oTJwWmEPIJCr9RxloZWfy3t3~$8VqK1w1sMaJbt&o zK8PF>$BK|cHONm2=_q_IGH)Hlwx#^9O8ZO;veXyjy`cqKF zs!6f;EUyTA;S3}FZE{_q;uOC0OniA-DwypHRB%I#QepjdzS0_a^c z-DTMk>0L|69~ateiW!P|zG@5r1;(2C)t5jKXsgdiWCrM?$t{(xzJ#UJ-OTK!RqFOz zA#bD(`R(43Nl^j-LhlHFh-&3)1~E=U`DUfmSN?+P^fC5&8fjhcxxcpH2A6reJ{~iY z!5TR|#&CpxpSw=Tv(&uL?b8tE9KAz9c^DH4i_!wvkdi(yJ7LI4SD+8uSqpuwmtkzd zzoWpdW(A>J{!3V={=eRvDlfd5%thN~|%6jqs?1TSAgMFUo7t#bYO{c#e8i z_P6?|tq z#bbRG9P#B(pWgHPWEUG*3lGVZ(XmWF#X5&vHTtcZTYd=L*l4q7tclXT6idrjSnI0& zjC*j!LhpG0-q#kSGN=2l>f<-t3uFX}`R>ANjm4qHr%NKtbQ|~X9wbLXZk|?R?!*;? z&H@kxxUpO*?U}3x{xiBVT6E54>01ut3AMm>LxR@uP|iBaz_ud$ZS`D>HouY%PHl;W z-Z*PK!5)>Hp6@n~OlybE-hnY$-6E4z1eb?oa zokVqxZ{8%?8`B1%-Znw{M{-Y2`zUF}3oBj86u;h^Wd&#hf0=Q=q?ah)b$ zIm}^2dtTl8iCefv72S`@P zqjS;BRWz+Dd~5?Odel^=;HKCA5!Z_R4z#Z`lF705mWt06sF|5_{3YacCHLjCq$&66 zwy|Y=iKp6YJga};4gmD6Qq_?^e?&=+KH!HA`Vh_i<;?$}W!njryI36?{m}v)>{|{N ztkI`4Zpz?pd@RUy6@4F-@#1OeH@&%j0h6Ae>};v8l)|#_4l~{)`DlQGcjVW^p69IJ zRIwPxU&<%jAuX3ErDCs@Rem(7zZ%CGa`w&`ILcNOQH$>fgff!!n>MxyjWoW0Z6#AU z0ky@`=Bg(GX!Vn^JHoQrVE=MMmT}xTW$TM{BVyoZW>sjRRvrgFy zGnKVCEhMk{(1|`D3hR~8+~m%9n$byFfP0(Z6uUa(rUsi-URHR9n(f?YX41rKxM8wN zLOzO@wW<};0Dv_O;MJLvo76gq|A-h_XZ^}IIrWR)nMMgdF^5nR$f-PWc=n!y~8 z%nQq^(G7hfC$Tt_Mrnp@GAhHNoe!DI7os8}^`p%S!Z8ZMv{cB0(C(Ldd>f$`uF4?$ zHG8Eif6wlBuE|dO+Z19g1_W!7`qpkJdE1@k(CZhC6gRXG*GMt~q0Z^=mo|80@&WF* zV_`WZX69St?0v$I*KBMrmBbc`>xA@ZidkFw_MFeo(clN}$?1s!Ih#5chlat&+{#xh z!=3=6_TgYWrknY@;g8wU${AHC6VjJhzTOC*T$fHdq^5I_9Vm7lwHE^bJa&m_7=s2G zse&pJjNBk=%dtpxrR?x50wLHD-%hTwo5Mqc>4R{(79yExy4<1d%vZ z{CSqRn|KAZ<`#=QY@7Ik$rN&br~@QC@{h@=gHf_xh|}p=hE&VZ>Gm_o5kAM@;I^l# zFtzJYZgE^LH=Z21Uix6NS9DUG_o3ZQW#*oCv~bzr&P`Du+u^kxu>NmIpkZ~2_P(9l z*}BI$^!VleaqymC`Bv9-0(foZ9PKvTs{S@D4PC{3qdwFglyEp`(O#mEZi7}b8LxBSYq)r&FLjU;tUdVa;keE#I_ zF{NBMhn5os-CloWXbn-~@3o0f6YP(OfQSdldwt6=KcVR#LBbbk#$6`c)MgHe#M_*E31=L(f!_&V)cd6Y&M1qugaA`LK4Dtgq7 z`qPV*dl*vk6|Bx%GNAF*@*>vRPX~!Jg?*E{Se2WJB5dmy!3A$BkQT8HuFOzsPW_Ng z^XEO*V#&fg3RCktPm_@vZKXjF@tbLyl_Lvo;BFnMU8xe!Qz~tvrpQ;{~)vZ@E*d8cB z|D3DLOH_D`bM)W#+s|rt%CPGK5BWf|Qdd`@%4g8|sfdy@(A^nTN$qfi^UaLmgLw`H zH}~5M1OP_V^>5ygIO)&A;R6I7SSKUC%Sipl{{ER+5<+Tx{qqQ$b#g@x<{-+42OM@Z z2_I+j%7S~n*i3mbBm7gZ2WP*KVIpM?I#Mu{o>^ar!~P^OK12T{VACYTqQ zjezDl0t5}glZL+kYzRW zZ1sgh2QD%uhmGriMAhN5)M70I9=(6!BZ!hl)I2B#-|*q(T9ELO{lrfSgLDoly>vi! zaGO!Zs(^vgfEE?A4W2C|DgfAQsQd)0i{es?W7l^e*PkC`QLB%vP|+0xEOu4&5j%Te zQ2mz|Vx>3{MTT%z?r}&n4)xoU{y(gIDs$|l#d#@?10*`7| zp(C}+#a&Z^H_9g2S=W_n)1S%RXHe%l`ZE`MNeTo%R^~WX++-1O;L5u%z|%U6_k%-! zYYRc6Nxx04zBq*JV^!XBKDk}GFJcS?C(!G;f-RZ+XO36-`w)dM>{@&Um7-e?6bG*ZEyV&tMs@_+}j;ZKb4%f zV``B=DM3qc9PXQ*faHwf%&hU39p9;Th)Bi#rG+D<>q7UZPD?L1f5n); z1p_>FE=nMW<+Oa&0bmW;ZS+5tv2(QvGX!b_4wi8hI<)-dzX&cUCza+|IlJxB_+g>P zMw%qVu`7OchOfx|(hP~N`mmaXLp=!MH27g%3v+noLh(>Ypjt4X4ew_(41_BG0o(pr zfJ7e^9JgY*{N)BDO^p7XG*G8sT^*h$RhFo{3&XE#(KXKOTQRAn;x7YSjaHe?ZijwKd4})x_?&-W#pa*|C7^P152A3zS)6UsrS> zMGvkLFg7XhvWFvNO62*#1=&G0xP>w*w{zVsUA449h<`W{R*)n(|LbkJi*X_E!{LsV zV`XI`pSZ!Qxpqo`P9ySNnM<9jcWw#X632S$P<*=O{4PGhZqLa+Jtf2G6pr1B98{1& ziM7k+-_j=pu;0aNZ_h6i_8_~+v?sL=-UDD<;SX`?`G`OpCu-N(Y>g`hIdPTqqaM@a z64J_J)ba7gi55lhDx);w=o6R8iVz18lfJk0h?nd43XNFOgZ3&g%1hB0jOOCBmn)aJ z2*T@xS6Rz@A5$au1yzSf?JN!{#;49JL59_%>&v_8M;*VXL~^QSSuGgYIu8wqxmccw zFSUP+A}JendtU?Vs&!jwvo?Jc*Wpp@3GdA+=z*jl3^azyGmj42m#3a|7gJV9 z;nAs_jxouE#S5`*B98IJQKlz0GoTNt*3JzDOd=0dku&K(0t94l)Gsj|k^aFYEVL>Q zzozq{IwVAH$EI37-8px8^9Q^A93%EOdd5@w*E$* z1Ii=T z#}zQjrPGdyz8W`OMPYS0)D4+EX!!&w+gWYYpo_l$!7i(3_=pm!-lCJSk6tm!YkB-@ z@7BGz2LK;dDG@dv{w$8x7RYY7W%+rS%YRbU;@lbU%B>9n*1n zcOHjWF!e~>AHF;>AeqNbg9?%1Vo6v``_NP&-s(O1qV02?@1?Zn;2Dkym(2r_kCArc zSPY>2`{@lN{@Z9+WfOx+R$Pt$>Ugv|+mOaE-jF!JgXi1WcRjL07c(C?7@VHIv2*5* z1Y1Q%1cdj<+RSIKg$mM2i!F05><}hN9I>4w9DlUB#ehBD@vT`Jbkq@gvXC@Q2U2mu_N~E0l1b3*n4Qqh})B#hU*d zMFx0HE^+^*0Rh+d2;bqACzygWDDm}b!9050FYgcVG?8Mu7@rd>`xM0al z@K9?dwPWfd$Z`P6f!D5h<^!T)I)WE^3Z}%W8%$g1KU*}&c%5BA5}sY&2bkoz&^o%Y z`VKo>cm>G44O37EApTQcWEF|D>pC1?&d&6-vJ_+@0X)Z6Eg6x7L@1UV#Zg$a?0kKv z&u7|GlwsFl_cJpwe+H!F8n3-CMXX`BptokA533jq8Zv5I&VAn~XAF(d^FP3QQg?4w z9xUPyg*VpT4cA%ic$Z<4SlQT_7x;8SD>cb5&9iFR{rbUV5K{C3b#KQ@qPJ;|JBKA@ z7b>u(By;L>Y2zh2-)5qW!ffzs%9mB+W1npuKEoUWrexe>T~xZ=snnoRd_ zLBX?G5e!$m!gXhw8&~ z#Qa;4E{z+;4uR)s^`nD3rZ_E>Sa3qaW}(%kndP8TD~eFBJI`cC8~m)=m+r!>QV?_+i3Qz15ZB-I2nK@K$kZrjaF(P*^68-pJ&(G&i6LJs%Sbe$4!oO%to{n|}sn(}p|K++v@<=FI!8IQT4|BO z%NtbrWam~~1>0jsD^j@`Fqr(;b*>zmyyQT8g2h?+a1;EPkLlFO?utB4-*43q)8E-6 zHS;3>#7)jS+pFC3D`Hc;aNLS>8_kB;52~0|!01C0@dy1`!?-u(IxLWN`u&zGpsVi< z;0xK)qaMM@Wf5I^;=RMuJDiJ1b2Cd&fdOe;!49NzEQ_PGNF;wA=S-f-0U8(x1)0y9f2uV#-|>DtT*oyo)Vy>5}r_%p({92k}@u-V;Ur=hsJbj2b6#Nyw z1H!7!T3o^FMMW>v^z9kOR|eP=!tV@hF{QktiP>SsfUg6}A*9TypF#did3HaT`&hF?%HLNBObLtJX ziaT!I)3gb8Wh@wr5PJJcK{U_jhNLmeSIS4k_5libr3wSpU^u@m^$B>keHHDw6cUf& zYEF`&qIg5``v1HDsi#C*377w5!wzyE{7Jdr(o%@$eXsX6Cow2ttk1p`q+TYdu3qL; zi)Yb8izl-wZ^=G;52{TPV@3ILycc9(QTiViG zUOR?cOJ{I;9`L;mrvn~I{t2PT(=)eide3m1E|JgW|ZzHItvyTa3%J@`M) z4i2p!s4Uct*SHYNq!67@9|q1{XBm*x3tKPGl zy6fJV1KmLtRaBK@gY;1#gGE-z3Q}c`_eNI}eCE`Y^w>V|o@+-qG1zfM&Bl9752FkI z)d)K*QjKcFi>kNqRaFA&BG$jE=tGGzp&2>~g?Di>>ufz>xxiee)~i;ym+KA_7G;we zysl||Kh00_)^u+0*Cm|AF9#bnv`@S+VlPn@Eb(#sr|u-SmG}9(eNBC?;-6mYe;+`# zrh{hj;%6yYub=0Bh?>vHAd8bb@f?a*FGppJ-7#!V(_Xi8?!q_q4|`1@!E0|};Y-#JcXXL3oBal5R{o~e zeK_TTCjVr)uaRL>u<<2%8KdXxFFIAU$59er?oah{u8jz_YlkO>-RFn*LO#oWD7Z%a5H?gu{O4$8dZW|DyXfSe(>~aH8*E(mX2g0uv>s(tR!= zQ6n%Nq#=hJh=~Fn1&9%KDj$27n7jL33f7XV+y2>rwk+{yPlt#)hJ;rjsD&GoRr78P zE}_2rEVd|Q_2`CbS4x(kMat~ovSb+~p4Q{m5g!g*n`ztgmT|M4W@8`2cGMwUvilFU z*>yXw@z$BHlOT3Nz`z`gs~lgn<91pyp14Pcxy9mGzl`7bk;qkV)3$um>qjsr^|{!nK4Qet+_tH14l+s>hX-s~f#Nc@;Vs?LmZC#Pr$#)y-KF?m}*yh{&+ zS~3ol(|;g^_bT-iNM$dyRp`H8PN_D>TJ;#{Y=%gox;!22CU$q2fbq2-*zky5Z z^1@|v`%LEguG?EJz@M6^KC!{}u=dkZ-QLmA9REMdgiNltWiGy#FJF{*8WR1rO_rqE zAG>Lp{_YdXMDgJ?LpK$|d!YAi=V0erbozI%k6TkC%w`5sVxpWWJv-Clv*=s>H5YmI z?^jYbDewhjkG~VHT^vF2kI9^witXmRHws;dt!DVbat@UM{e2ra6cg>5xF{?z>PKVr z+>^UZ2BVXCQUHlJA4Es4w;)7Ct(}H$6bFNSd7dU^jpqsKLOi_}oAlup(YEEoM+ta+ zVJx#(QQzq;di_ENj~448J|}Mjhhy%zKBRqRF9nD>NZ!5$G_$+8;^J92{88WOwOS|% z%V_H}o`tlfLjG>94zjTxbh5(DP+wNXMEi?$e0Rq2rf3L-VMOu1_Z{_R@GP8RRk~CH z^us!7sRJK1n{Qal0d%=w4W_9Ztqxq*mnK(B-+?v%=$4@gJK&%I+I@U`T6%aw_V#8I zJ=acDsb{!_=N@$tb{vMz>O}N560Sd^7PZ|6e2yw@eHn9(HE(vG9eZ){T}}m`w-j9;IW1#^=^f=$|JXn{pR}(xK(s*oyC^wc0tpdbbhYK%b7w zh?GOzyTkEeFk~E`3#P=`AEh=byLmT#t+uK7H7^6zkX+}ZEd{F|-zg^k?s9jzJ(OAz z(A8}9@0WL;0>fUCiVDXDv(UX*AcB^2l@Z~-ZA)t?hKb?yDv;?V5b8%T8Nxt;q^_TW zN`j0l&xcz4g&vpbY_%M-7;W8IX_{R-v~}}eZLG{+8oApJ*QuFp&rA%?B@ATa2<3RY zRJ+Hq#Qh?yF41bKZ#m>)L@0cL4;5Gh39dvk?JPbpc8hzcF1mfOG-7@zBDFO`J`3fJvp!N2MuQU`Wv47G*kqnq^DB;O~XAGIZHJkDWh*Y0$zN{k##$5gOb%V zYwwjsK4d%Pj(_~kg!ddDiCL!Pisj-9U9uHj~yg8TgUso|7nzZqK#v zm^W{bKIlL@wcIg}3C)qNjYhF>S6S1^*9GUl|bR4y?Ucp->9NodU(JxJz+&_u}sE zPVwUI?(R-;E$;5F%i{a(IrpCXiLF(c&OH}s$F{he=wmZ` z#Ky*nZH}NvQtDLm4eM#6N%+Fzz6C$D{y1(lI3_{A$j(dS}fQY5K{1a&(|ZL~t-So_%?eF#(pmoSrr zETb%!>VPKieW+>2e<`S!YQY6pTMx5aWuYDA0;Nw-?=XlbN(zWs3OUD-VTJWi#n}~~ zk7fl&f3P)DFyTR_PQ! zc^U5HIF+*D#GYZ7;9@748i$dw{Bj?$8F1yJH(_84W6zWcZSXFD zzq`G=ySoYM2KwbVZmU|5m?fW9b(orPiB1#JKJ%Ea%l&&@mf#aK6spRnlhI~^1jG4n zgyP-%8583Y&MNKi#cZ~HNue|h?c7)f+)LQAi!+Wg`Uyz}&788oJZZ3PF8F5GarhYr zpkNIwsmI=0+T|!lQ=@}py0!1!GVf9f0{Qd4KG%-uOVbX9}YblK}wG;2`+to-^4zrI>MKgqV+xsXC9t zxXqF2zaloVayS@nJ5;OANuoQ-$b3+hJ-iw;_h@)LibW4W6LCnp_o!O;JtC7=phC@^ z3lk{hW8@b$D@}e)FmU|%1=YXo=l;PJR+Hc4qL=h;Cl|Wiw7?sDny&LD@w;+gW&Tox z8%VjhAwH(>XkV+HDCyHb+T z;q%wkEUf(E#mYBeCi_4k9;>XXEWC8p8N|NsjZety8@PF^b*ynE@!*7xiFyMCmHJ_K z1Dnd(Joe;`E2G5g0LZdsLcTi>V)T=f-1_Yee4itpT^D#JX6Ct3K|SM@-rNwNdiKhW zZox`1fh52oEs;6 zh~3imS4+n)E0snrRC|in4J*follaH9OEtM`$&Hece-n#0qbMEZ0oLoK(phyU9WwTw{UloZ9=$Tn->XdaENCW(OL8U`$NvVtD?SB&8Ezxn8@z3qYio$D=1%}-^wM`MM z5@W=XF7f&N65HR;Qj7zCr{lXR0vEjow;~aJW9i=liMyrVTm0n0`z}A`R5!M+DRRu>gnfUmyWuEI9Ga`IBq#aQLc)c4{ zY>s1e-G@`(Odw#*mRGNF1qCTbJonr!VO(`6%`ffpVOu18 z_3r8OuOx@4aj&K77+nuA$U{AAo>b^v;hVfqY7E}s{~`Umv_AmB^ds(BPct3|Uu%8z zsV;j2>ETx8uq8>k6RK!}AyoEaq`!{-rRJiTJaJp1@I;X0R{%PR<1^~h1242V#n&m>3=PGEP2T zd>iYEjOdV{yOy?=MO@yzMa$yPx|r6YhVaMFSRcb208&`ft2Qc4JIT0w@Y+5|lTRBx zIf`FqKSjsBb~|(YE1iG_c!+{?96=011nG}IzG$Unu}_qdr))qk>F1Vm0~nZ6vQ*PpzDEmiI1lF7@}9NKW!k;+X<8SZ7%O_6m6Ywg*W}LrOYlT9 z7fS?S0&&*DvdnSp(eLJ41PoRA2a`%b6_+zi$%YiIwq@CrO-Z5*b`@%BgLrPHChwd@ zX$U}ujb8tq7MG_+rF7LBzUfULEYqAG8c$Qw&Lbc{DgSOFiBR|_@fC-FDU<<~E<_2v|NsJwzZ1#e- znQ#43Ssqsp2xa~?M1Wp%9CCC8Y2OE(gdhryl7av{Ei`}b@Echa!I6IP?miTmh*Fj7 z0+*i4#u!dw=n4v;EH&BuQu-7w0I6nZ;FyX__NUi>N{&L|M7Ph6_1N-EFR$rA$NZPm z23SGEy}7TWwEf2K&6>Zk7QLw8d_L@-e$ph2!S`F-u2*i_kfJUskAm$5Oi%$quOHa> z-iJjN(fpDv>J%>MQIsd6J4V1$cdWO!Zq!_}0tW(TI<@hqZa(4VE$he?0{_wufS7B3 ziyMK8K`Ez-4f}amuDXLSch+j8EswD~49qK0bsu=EY^*Y@u-RG33KJ|{h zFNj3$(XUs$;&Cit6mM?4RQkn<}`GPr}#N}q2jiLemiJ_ zdetRTH`M^yAb#KYySmL`GjZ$BnCSU|6xlGnLn_*D3-M z(LMf4eXj~+4IoZn+?4sq$$jY#F)TlT0w!|fM@$>i0n-0W@H?A^B5W?R#Mzd#o2@jB*gX)Rx&qK}P1Agp! zn2mI{2kV_)c1pR1Wf6QfQyeyq`>k&+>wY;Q=`q1qb5YE5xhb0Sw2sc|*T+i@t3|)( z7Ra{bj0gPJJNsucRG1LvD?oiqkhHis!pF^1pb~l6^ojJn?E(w)&F(UaGPJy;$4pE9 zICl-hfR@kV6vLj%E^gUemIZ^rcl7N$Lm2}{xK=`oP){|DChIh{`QKI8f4=`~Yard{ zHrC}M0I2MC>u{n!Awo@HtGF0)xwCm-B7K z@9_g4Xd;$+8&rO)D?##?8HpRG=xb_d$k%@;hBW_KSS)`)B2%1ws#s_k6<+v=U(Rz2 zSoEs%rX1r`<28fk@$nq*{LbTq7<^e%c6O@zJbU%}83GViq+#pMabc~KD9@K7#QOL0 zvwu1qL(+h7p?F}A36BV`P=i&fPtf1@W?~NaCYBj`!@0KyJ#z3kjo3HV_xXM$xkbxlS8%C_?zqE|6QFcLB!s9cS$o%xc36=9r7rvGafb^FM*JasZ6MHoxCRM=5x+PF@z>nVoEK z=$D9)>M0$Kh70;W?3I-E)Z|1(q0wV$K>gnqn)?VV2p9ukO)g(>U`38`5M0?^t$CH+ zos!qD5t6%9pE##8Wb%mHoo~v@nZ?AwBmRF{Z6LJfelk#`$M~c`lUDbBc5+&{C;nNw zqE{)n0otz>qYTdhUj&MXi|T)unj--o8YLI;ov_%Puo31=*Ssz;9h-CPdlZ;3+tMQ2maUcL2fDY z{D-D+GPqt5UfO(7vM;As7bF#vYPUz58!M7feylAWj4Fcvb#E{R@g4-j|3DkiBo#9? zMd=0v1^7F|Gq}9+Gm4V6!3iG!pE&o!7K<~F$;yQo2YL}tZfe~7 zSP(4(hsPmf^)D+VU2bs;(Mm-x8@{%~#=YWc(!e9R@=YGR^wE{|h(PLiXKv9=;g{P> zM?#fA3)bN!!1$3*#eD}~KTvWtrW_6xsOIjx$@Y4ZRG3H}g#S&NMIC*xuP8(vke1Bcc0PhE>>y@d z0uS#Qf|rmk)jNDy+E%$Kydm*Z%7-oAkbD>)|Z!roQqJE zrb<~tMho)yevI*!nCZT}VOLO=M(Tcr7bT`#os)d40V_2{Z@}o<+(mH9F=HgEiAkL< zZULZb*HH=Ox5fpETHQFE^n-j)eNHsf!5Lebzo|X}QVHk`8Rj~Tuz{VA1)VQ&a)e1f zHMo7Y``da_k3LUFw3jrNtFFUrSzcS0M^vk8MW@PGuZLF&3nv57^epaE-)oPG&b`2O z!n^$KWhaL`3Y-A{2tb4GcdtdCWJi9F_%uJ80{O4_c=#53K<%>f;?UVLmC-C)WhbN! z*Wr!w^TG7-fEUJ*$PS}`QyYs`X;P>qS9B{6Ry^q1ccEDVq*|_7 z*W5b#T67nh@HB+)hT%fcjQBT)47S(t&#CJuJo+j;rJ5TiqFLw-(WZFa`{s?;?v2C} zPcIX%K<=`E{zF$)duV#|mS)`27%21QLZ$j6ENHk(cUCub5B|{bx@$?rfdqLt?Ey}u z!SYX&EFpm_Zia$aH@iGCjV-RBllobU>O#JODfP}ccHu%@e6jXrJc)rRPoA_HwYwJK zR+GnY*V4TpoXngKjwrwsrgFm$x1i%cEC8(G$NI!4m-&UIgvq$kH=dTRAlFTonu+EN z1`A_MC)?pt~1Yk_JD&7oB-7)kR08RWQXS`1Dfx);POfoLII?O<13 zm6XYlF?#$FnL4QX1tVBvwvUb&#v*~AsLI{4WmHEtkcaWLyb?NuZw(|sw84pHk1;~*Dz>%+q zGeAVPz^iNL+qbqXT2=tJ3Mv!=Qs)-b@8Nf*##OqUliED9WRxm zu4qMg!595LGq?Vc2T%~2w^@}6NDxOR-j0g<1aGll0CKKdS#Ec`&QeEu7kewlA6?-! zbDVN}1FAIHr{UB*kLW3LSPa9>#fnZetPz7F8lUAU4foSoP_SeH{$pB3c?iAM{!N5- zoN^{L0L1bNtJ30Txrp>koPBBi7az+kmJ}rxItB6sNv#H7GM_gTaO%0M^wi65h8^zs zNONXUNySYp)*_3L4gaKp4_;1M-Z)>nof)Rh4vn7enbE4oOCQz+J^B{8R3p^|Utw}# ze^#^~W`Qu*r$INqx-#%S?9s zZ^J#0So9j4IZ^$W-^!df{0^QDxLPzw)54+5t6BeUQ+&)y$|}8@>6TO8GOf zN;7f%ggd`hc-9$rR@XrY@nirpn&2(|9Lpu!iLL3#(V@RyHPNwqJ71Bn{5rPlGThdK zKK+w)G$ls`^i}$Y)EmIH0%9TFVp(^YA_d&fANFUmEq}@6c_rmiBICmc8dK=a-rf%V zUX@qtZSZm5yyIo8=vl=0FB12_3ID_GVJwW}791YfFx0#!vMH-V- z|5efBNNt&ssONmo=pvc*1;i~dI5qEllEeK>N}PveM#YPF`SUS|53Xu}FETm(GZ;b` zKn3p?L`xxC_hI5M*wc`t1^wB{ElyU$!^KO)a!28P);wvxF7N}ZM~IOz<6o(e4fZ5s zJvV?~^^Y%Ku822^H%oNlkA`kD3mNfB%t{P0bPw1-TM5<0h_AJ$1@U zv#{3WB4d{WH{wVXlxNZd*{X}NL1%r>sOPuPGcyYcjx4rxu zT7I;ig3aEYeN!{GUk&M(v^oVnquz|NE$?U`a5g>Vj4)-TsrP`m+f#9#@dlrtv1nKE zDfbupw7tL|A5?JiEZRz~T-2vgClx{-jM+q49d&l}s$p`z55M^9PY%~C45r6DK==@p zt7Y3A)NKxDyqf^S%OPP0MORHU^1Tu>vu`Y?L$K9l=kBw?%$4K1)>JV4%eJx3#EEtN zCj!~3{V#8U4JK1jQRp{uKP(id_cWMseqRh5HpM=y(eJ1AI4i|x8=nG2p8$-P_;D9% zGNz&%uHo;cij6rQY40=aF5^qi%p}89np2Qy9vr>%X$u=41 z7&S~N?98n2RT(woIP!49h{Jz1SA)Atv7@V0n#?s7^XQiOvd`4j5K3)+-_e-}Ozi!r ztPwvyQl5qrS-JBzs6T|B2_SN?NfGJ7%T0XTaHgTxttM;&*1xqLF*2+wrBnryZKN!K zYD}uF#f>iL+#k@nP$b0u+^&`4e};lby(_g+SQ#jk8UMh zSmf&81NpfQ$C@w8ut4>ijU|I=ocW@SE*Cn1u|*N0G)H>sCNB{vC=s5l?4a`GJ+Xy+ z%zTFV16<)hx4vcLVqny)wV25QZ*!x#C76FsQpg4pG7-K>y2xpdY8Rvt@Qj+aC>Er8 z*WuuNf<1W;BQ6LH{or}Z0~R6+5>`$pOoba798aFhc`xb7t6FOrzf*kIX^$EZ;2#zt zLh8*^_?95L3O!@j?l7&Lo33-$FR0cCZ9?2$i3QO7BuS~fFW@Udf|gybG|D~N$}}GX{#nj*~aSS9(y3zLsAhbJ6r!%f*f#bSo|Bn znYN@z_pU5HXxF2>{Tg`N-sn>B7DpM0b`T2c5q>uc+b11IxXSZ!tebZp*JXw=pK(H} zyT*GuCaf#vrM?o?`!TL8>XKnw_rU)>h-O3AOr z*U5y&=BfXv*k`n$-=jck zQsHvF24Dms_Px2xHLn#3s@!v8M2-bBycfVDnQE9s{%r?x{POZhz|f-1Fs912(ynsj zlVGce-k5%@p#Igz zu)E)fHAi{s=DcgEsCU+Tt*ba#@G1_)#E<+?>Tkmv^ghs6(kPM6AUo!pz^wKCJe z)sNF~oZ9Cj;$BEYr;W>mDzsx=KhNlutl3plb`>|?GG2Pk$}DFbSLC|F9!{Svy7h=y zG`AOhmwvr3>Cf9}zfSgyT;UFk9#vipN&mUda@<_$RuL z&az&%kC-nWU#T7Jwh~cN92bShZJFL}P+fi~qYNKz!tfoAnS$=xU1sC$-pR38$Unde zez*GdEq)$5LaD2woLL4SodA~P2BY`ra6hAP{@IgT>O-L;Zj1;;s_YRa1Yy`rC8%1TxUupe zYi9W@Szf9<0d6n`!$o=+LJ3fb4 z0c1f+2)mLleCWTd8l-&!0>S0iv{U<#}^+_+1C~F8b6Q|##ln4 z=z_YNZgF*vPb}V`Vf{{MhP0Hq*_r<)cFv4u1+H3vN}%^JfBtq`0_%}-Y{Hu0-%71| zAuUd-4J=Iw8Zm(J8CucfFa}yZ#S6F87tJ31XNw_V=?7GfcyLWW6?cz8KRHcA;aDb(q$hsS zdrHeJNDZiJ=gxU@TPeYy?Y*@V9q2kk_bE!d@qd}~t;SbpRJbF|p&7&bP8b{M`yh&# zEnr~_7SV~}^R8LxSLgqlHA0}@$auL0QxZEZll3dK2$Ll??{K(={}l5ga4(nr>NWBH zn&y-Por$Z5(0z|w)7SL$=l1@Wm6$bRA0>Vam?R`aK%k~DRd%7AU8*%^`BJM6gQZ25 zF!JPNqw62j=O6(vt>9J#qGzee<^kwkGEn-HzkwZeYuO&iljKJX4SE&?`Rr zU-yp#qpV6Nx3d~|vRzMFq5X;xzn+Z(2DciGj0X#&M@uq3>8qJNx=ddDPUh%bR%5_& zcf`Gz68N$7j-^e^iJyTar=>Z;LiTg z;rF@kC4BLq0QsMn&BC2GyQC=`$DL0u;8*x!EJ-bgvZIg^9T0m?y1oc;Y17DJVneB}8(ONa|(wVP*K zz|V{)yH8F_7}&pAKH04_XT9Irf$^JMSij(BeiP>_9~$U!Bw%cP7*KAT&N2dfkljQr zQK#?RqbRumm0FeMEKNv%13C8f2rLGQ%Lm6B{2DR{v{7UF7;vAmQ>_wWT4e{od!q@i z^}|bl?cZc~b=1ZRXuSQi0`{CqFT zVeIOs!afuSbCpnG)6LtG_HA`ew2Kj}vZOd)sUzQXR-M2^ps8bk#Mo@G4;MCT5=T$` zJODcK**R+;bebHCrlD2$_*D1Ej>#dODSsTO1*p`kV<=G_QqdDxMtOrK@T zp#OQe{_@L`xMFU&U6ZZj}DGaR}wc1q0{F zi2=nHrQD;PDs~6vN-A>25H{zAe}K$yyg~3jiOr=R#V9Z7=vx3f@!2J2toCJ$=&TE? zUD~fFxvQG&q`;bX0k?7f2G125+z%mFBuiZqOXMfzl`ee5-XK*?aQVtxYw3+P{ZKty zZ9$o646+5&@KMjfy2$<7MUG-vssTt7>ny2p^X~gf#Tl#B$H<+>b;i>p4IhO`c)M0E z7UIgXq=N~Y*cZ61nONuiEbze3a;^6IQV-M=-Ke4Q=>~)FPWf{!y0aPcPT{SapmxX4 zkuQ@@s0ZuI~knW0HK0H6=~Dksyd zvjw(&)t_jLYEi2g$V!9L$(U#o)s0WaI8ci2vzdthN!D`rH+kV9^u*+PP2 zw);(?M4CjvAau6%Z6vlgpLKLet=g`J$NA7GRC@_p_WWcUSaIWO`3%3X!mKMb6V!8) zk3pjvIN((y`I9Y26nVIPCc=+*#jYL5kR&+h;QQF}IEe10M^(!v>^cixtQox4{Demx^SKN3!9#$k1^OTaS$oL7l2SDb4VVE( zScEBaye_E>{S`iRX((mv;GJgyvPbuo=Q(V$8Z38_#zZJY2i8~vgBGXTKy&Snik*P{ z+k;2PjcGpeKOc;-2lA)HygEh~7Js_SU`>lZ^i(l0)@|=BM{~Q0%=p#0&wj@n5BHO{ z03Hdr{>E!rFCTLrw~5s+ufK7p=&~L|#u`X>T`!1bQZ+}|3ASk2)KyyQCyka0#s(VG z$)%m96UuqyJPlsN!LbxA5F?=jmu$u(9G4=lj-gIGON0GdfR|w|Z#9)c%s=LZs2?q= z-o-w5GY)l$JH4xI&wtdFVQ#*)#sXX1U8wDEaoDyT zTL{!61O6!5R|?y_a;&IFaLK&6a7eZo+tA4o5p#x%b-PFDDPkL@!=h#G8&#)zng98E ztuZ2mDUi6!HE_-EqR&%%ME<1kUB5p<=h~&#Ae%P$6NqWmmyLb7CWj;3i343a(a7AA zp6lt+>B>(hMI&+zdnr;a8!4QtuQ%g#KztMCO8)o z(ZzxLZ4jDS(_%3ppTXYsSO^X+b0Rc)goMx?6N84R$nEw+>RVgW(5|(ujrWSjL=hi7;Jw#j(he-EC&Gw>s7WNuBKbx(?9&Ybr51J^uUZ8 zff>w@oq$5<_@%wHS;urn5V6VQQ0x3lZ#Z(}qA!7RL*llt$t8^ZKBj4#OxxB7d9rUUaci}Uw5n%>Z!NXs)D0+Q0mWH_=7hKuScX=CHW=>)Vq>iN^z%YxX=&A zr05&#dpnf3!-AMglX|F`01>w7h+$)b1;aAk2E{0N`Tb~Oz7>hs4@JkMhXIhy&wJ&q zkbTD8tf3BqCy1fYXU6$M+PF5z1`Z8)EMYiGUUQYS`?P@L4kZ1MiTDBfYpEbzC?SDe z&o1&@$WK=oG3o$C2a>dKZF8#QUvTdF--X`#zGK<|ez^xEd@y^Tj~_==xO(r9v61~s zv2h7^3TON{2KUEEl=TKmlXHT@<5M<&UPf-y<`cEDLrEcdt_Ey*tedyg+o|@I$A}J= zsG{#A-I&EGs~OTn$khmxsx@n~z2#=zxJrislMJmPBvX=AH^|+wUpi&Cz}FmYKf5eT2OceQStMhl<-ke4an=TI-@AmjjuEOfM;FmfYUwkv%h<5P8A_$h}Cn>yvw4~d}PHJ3alzwQIZ9EnZ;mZZY7O3cpSaW@iQ*PU=lHbSnXG4hVtr8*w#-JE_4b)~%kmf?-zHa>ed}sWfJGa;o$-hn{qB`O^ zUZ!Z&HYArr`8s&(usXgkao7Orw{AjXFk=Or;PftLyANk~GP9V*<1O5YZGHuQI_%f; z)!);e^ak6{8H^v|efwJ!hv3HKdizPZ0`^<26Ogs7TD2yLmlT(%u!1U70?|8~Yk3M> z^Zq2f<%$uMYqzv*E88s?D$!XcCYZ&D50frBcR<}K+s9NC7Wy_k$>b9#$6+^*;fUl( z9}VW)6`1y5wT&p6)|j@OdG`afJ1BxI`_lHNC-+?v5j)*ywOIEnZP|IaPBT<4-=FB{ zwOlWihA;L+i$+7pwU=u}^KTzly$}%TbSzmMeoi6)G67>shC4j7AKpI@EKOSL+N}Dv zSpK}U&dQ`~^*#^LeKg$J?PBo zH+3y*m$C*5HAY?C_57c<9o~2~?Q%glvMHEFj(A43EMn>9E8&MbXcn@ z_7q`u8~aUs$XlS3w%1#!|2MMQ=up_$U?;;)q1lb8fDpnm14f;74#*wLu+Jq;7j|7iLQm_ z5>hlX+?b!D?!orN$`icP$51xi4ycJ7kSxXd?3aPFdH}X zDe+PAwPx(*t8{cbdR2C25dGiy%A?X9h1^96)khb)d+qxNS1t$;t>ChAEfahO;GbQF zr_G|tb3&~s%&H$eM5}u$_y2x7pZOq}Bf0)z2_1j21Fy~`)s^&&#_$Ijb{Mj!RlEfw zk{ne*9hC`ftDysHc}>V5Qo&$%I(>)EmcAzh!z&fi)$3?!KhExbw{b zBGX9U{ajJPdo=w8Z{)&F*Ya)4%h6U!8i(|WP6;H*L;@n;5CHd;;-sgtxvY)|xfG-6 zrDY@G@P3L$LB^SmY;@w1eQ--iAiJg0smzACg(=mXRWr3k5P4Fgv4{GAxtXV_n&zMO zrXF@2&nQB_08C2x3ymR4mo^HpHvT(&1D3l-R_2WRma!1ppMLVOM9mu=6sG$%Npq|p zZ--jnnpuRQW+$v<_yb;%RMR(5YIB547*9Pl{gRHlX&9$2= zGLTLuzkHbPwvFdLt%U0^X%;a8J8ofoF>%0ULP|u_e*3NTn8Q%Gi&>dD#fv)+n^~$% zHbom3rL#dBTc8H@wRXhqKDRNG7IKAryKW5f*mGZU#KtsOkYaN?n3#YuilyL4dg43Z zn?Y)SR!UI_wm|Ssx3FpbqDD0q?WzN>%+?JI#u+{eu=giF=lB^U5jIYDmklR9%4Ziq z;I-YXEVTPWHp>}BogeZvhP(i_!mz)w)k(N%WwKgaNlfe#$BgUpLfUju<~EmJ;hj=3 zAF|o1GBehpXjnU6kpb@K;#%Ya1VNMU4A%!*yfIy|6usn)}Ff6KWkG;wesQs~&BpchE*$A~bHKvnG^+7MBHV?_gU4O+9|CQsOS< z0x-i4Pd^G+ivHa`Gu!(kT+~1r2Yh<{wfagd0WuCKcy$Nf8g z!gq)4&B}(4LCe-U@{Z)u)aBr~rF`tE!}2nNp?lghiw1F zy~lgBuBJ?tAE#8SUaI{`J_QvE5@SP3Cb8w^!*Tjh=vPH>?>irjbkR_zzE7<*KMjtA zks)D)Gx-!nk(i~Cq{w~e$F7a^LIZuKJ%r8+ydzy>Gu~q#!L`UAmNnQ3SL8-WyuzDcr5^Q{8K#~r~NG223;Yayv8SZ#_li2;*s~gQM;VGtTl}OQd z|9rh$Xv+TNYP^(q;yq$sZ(xKn4JpjQa=z9cOSmY4-Ts5#J(0c{WZ{*NA%(O zv&^Ut`fy1WXkf|wdSgjNvaHeG9nseVsir+Ow<+I=@1hJObMU@)~6({|o?CrgPU3~Y4WR(-UTDk!f3-CwM z2!=mnxfP^DEIJrGWJvL+fPv_1DkA4)loBBEM@idT^+?h1^s&CkHZyYYA_^C|Zd3UQ`ap87K^4i{CNzPF`DDD@Og6W`mYN`YH#MSBmLbzvurZ!{U-kYn+9XC z(=4*By!DP%MHzX;pP~r((R>a80)TKkB6BW!5ixcnc$qoS2o%DKyTj|T3pN31 zw$jl8#zfx^kQ_7k-*b}IosO_I1~k}^I=C&n&UUQ2O)JJ#wQR(VHcBS7GO3Z8w)>DS zL-B3f9zKpccRb@5|F!Boadm8&>^T(XId#;ou4T(n0(`2&zovIH!ERgKCtes|+DE|? z5MEL&v#+dpU-HdE1Gm27+b+ww;5WxFTuk+RUGE5^Qp$Iti*d8MH&9)<5{q;iWNhqd z@+ZeP13wV0=;wl)6fe@xM%>OJn5us;ag#6oOVSLZ(6K)!TQ;O8c`oA&zY0V}JUA=0 zo<-zcr(M649t{%DWWEq3-9S?!ZN( zjY^;x^QV7nlW{guWTsx7#m4|eD~wO+qC%D6+DLr9Ads+~)A(3iP0}XKTzsq4GqyQU+D@K{Z0t3sIAHdZKcE7L(Arfi#(bb zaIPkpTcu!khtP=BLtxb5O9gP4qL53g91WhgzY)-JQU~=qoqu(W+ztM^7pc*FNo$R( z*kq4OEvzCgW|V&usNBS9WkZYO^vh_kjH10R^=ENsy)B1fUs00|GaAq1Xmhe79a6@R zYoCtPPI+LH{k5NKG=5~xK;+LU_v7@8I%w9cH@DE50wqY|vBK2}`!1pl#aB-YBL&Pl zMoQmxJIG>;q*5@z+V(+P_ZG+It+IOR0ipW0ki$8Uq(a=Bf&-Q;K-Ybx?IE_Sm7 z0?SIYesb#6_MI83O1s6!%iTUP+UN1rpx7V5lBFT90v`I^xFPQqU~ctLnro14JM4x$ zi05=tEKPo-m$R}o>0w`Nsmt)WUZ=h#eEYpCd^&*kz6U=__FR98X*I(oyZ24Ys>~9o zg4<~0GBIgYw=0YHjUdBZDDH%Y%(X~;;cS)r*ZWr|>nSXkwZyVx@(xP5D&Hzs7roc`<`~{_H;v?*qP#f4;Wg53 zKk4aC11&O<9>tt@P@?GWv(h;ytlP>l>LN+XB{BXmeK&DEMhhYSX7!R*oN*QW2rmT< zsg8nHfhwT;yt3j+aTshekN10MgNv(sEi6mec@UqZqX{i?Fg|*IZz_(kzSTuOop)iO z4Oqpjxpimpyw@fVGTuVSItRtHzsD@%4vK2CULk$-9RcvRwXQ9wN#E>{L^xMq|H|fF z@oREtt(zm|)5Rd3Mf4A$FItxRYyLx3k}9FvxTeD+#x^6eN*$vXfI63Gp?ROjo}uGi zad~oZ(pI8X!EXVieBS=e{xlrn67rIZ+ZiK8_T~Dd(tr;sS#6%J9kDgksTIyuk&VeB zHxC5DxSVr(CDQgmzVK<-26-s*Q7Cy}G0-2QjVDh8*@4^7iKJ?qfSE7Eb0#mJ_1ie9 zhhraH&tQ{B5zxP{+`Wa;ua#Mz&@?SGFRS-Eu+gFvJk$^xG5d`226-sn0FwrXB#umE zdpcSRiCe{AI)HbRi1@VsQ%Ouz4%L_LM7(*iYyVr1dqH=3q2WBDSLkzCkhS5?aR0{c z0WGEIFRdoiDn-t+34ktzYLKqqo`unsZu2{jeN)csOlv8mxYjSXY!X(hWw6za$_T17 zcTD89=e!$f;l**C1lLRSDdQpp`v-GHt*(vBF^_MlF?L!f0z>j&kEX|g{&*|7j=pc| z#Kv3GCW@i%hZQv;RU!p^S<3Gnbd}tg$%+K8IV`$P@c?qR3Xa5k7ZtqGT0LVb45D6h zChaj5Mr~F5oXr&9V(HGpVEWt_R{?bes(oLU6ntX%X+~rE0qCGbt>&lX4y2*Sy)c$c z9kceIkzJACTbqSQ-7#6lRRTF(_sG$D)}=)o+NCqn!{`%I=0#BFHJK`|vjFIA_w-oF zhfwyz>v3-JN7vy+x$0pdNEsaD<>L0{V}ToonI7zJceN$#kud!tUbW!F& zF$nT~?DL#Za`=W}8EcoD%daVvFxn}^zYG)+3@O@({v5VjKbl;CgOm!m_#^R>TFs7Z zHtoLBQ>`8*b?)etcv5&dj46|l$eQpJ?;AWk3(@#FkJ^?7YcVu#z|RYggVw=s%4yW} z{JauhLLyTO$}~;YSbaJ@kW~A1xAzs3%#W# zxhCX&4PnTlH_e@UYX<%0SFMyzvuLg>YOL8yr|OCuG(=@7#Bo!?nvv#X1+?fF40c-D z&|vNHF}?@4XTQ1OZGw|0M({X&GQGu76u@Uag|u7X9L*M>_q@%rVQW^EPwNGCAiA0P zu&$R+kjyv5Uwv+RN#TXXE;HoM(o@;vKC8>L-aw@|7X|dqer~RC)W(mP8mRN_ut#SV zTmio{mu<8)Kg?tkx#&y=?p00Bvn!;keAAlu4yvO6lg{Md^)1Q}TyHQr%8(dblUX9M zltfw#MUBUQ9aCJ*U21s~kw(jkzE`ZMlxTP;xEYI*>lj#uAE^MFOG>p5UE~a-hQRZ> zRJZxX^Ua%>TDsH>I0wfbWXY&p^?aYkk|e-p=&?Fzc)u#wfBw<_wW(h(fkTLGy?Mr2^z z=J&DK#Tm|^&&yg*D*0vk&T!Qpnc%W+(Ph3hL9)b(ODtP?=K7$-WD~Ge4=cHtz5U}m zhhNc}UdKaw=38Ae-6KD+>(%M*#&6lj{))&UhEWN0C-DE;`|7VKyYBr#M5RP&2~m-5 zkVZyD1nKS&h90_W7*GLek(3mqJBMbZyKCs~?igUcx6kvwpa0>z)_Z;c)|y%OIrrh5 zeXg_jzOEh5GxW9XQK2NgdC=3VPZ66C`{bq2!SB5t@gpCb}cbFpLiN{f%@qAj_=){+V^`|mTfQ;3$m5pFZxgJuVB5o{4oM_(* zI<=lR<=XlA!33e|Y&vtIbk$Veu=4yXVW)PH8wX&qBy8tPf{AP0+u!K(7EMp_F0>i| znLqL3nuXLX_{Sd(E&PI}nYw)z!s6skE6Z#ejb2fpqP+~9Z~Crk0ypmW1&7n4=VOST z#f;iir&;uD;|gkj2~5hhSbVkjVRzWNUSS?c4RWN0UB->OTa-SDk*5sHBLFrptNc?X zd_I3-!EX_I0@SZDADQ$IC0YB)P^#+kr}FZ=uJg00p7BrJPn^{BRb?Zk;{gUA194DN zvAfuZQms&Ob{#qR0TUc38SaK;mszFpTX(%?y^sIrJ?ru<^i{{=w#dwDX{p+PPTL_J zjJAm)?lyAxxuHsUo@7sm9TUD2JX`5APGP4?oo%@-@95185wrKHv0sqOJG0Q`f^fZ$ z!dkB914wXY7nPRU_SL0oZC9nvS6o#f7MiJL7;&YOsB_#tm8W0+cKvCuMj+rmDEZY! z%0+PHbED__wlg+5dEmOvIW-YC0hOr)xm0$UkK(mb)Yqi?2?IgQJk?OXOXoU-f`Z#x{KJ_n7;Auzv>Dx<6PfcPvxy} zlu0b{9=?Y%KkR01AI&%|JtkKH?s=+$sw5%je<>6+f(?P^WZo9WF10y_S;-z0yFfsi zwSG|iYA70PF{IKl3FAL$Jh5&%{=U?c$kkQ)mVb>SnMRg*;2mruV3BBkT)QoQtIYu)--DMpUzvTR+sRkAuB@!X9`-f`!7hw+MLKSNob!^$ zoa^W+(w>H?HHf+0GXpqEbgj(>bIxQjEZK~vTCsELo zCkP1&eBCD5ed0p&ajC>l#E;+MPW2`!*kvwdMv*HuU_QSF17q-OfW(2)(4ya%vW*FnZ-YqM`ZsU@`bK~EA0~6&>3mMIxA5g(7kr9r%sAtT}b!?eQ|4trKy;ubaLLn`TRju;Jx7d`r< zyN#@EMTc#k(h9EH+{^Jc)|EiXi65nZi0NB~E63fgeQIBr!&HT_CrW=4Y=`nm!WMtS;GeN0@r)BGKg&>7GCUeZK`ml^nF zk)p@W&3l=VhPnDElnrJ}6~o@oLGP{mK3T#43vaH{#`VV*l;7lS)7Q4I1X*ykUE=Zc zqk$Zw9*$u`F^61gj$+z}pSx3wM5(Lq=;4i@5qH=MiF}H{l)irAg2*D}2DmW$Nitjj(On1_q_#=pFh%WkL}t%g;6u;#K{DQDw=5 zj{VBvTCwpSIa?)>BC5O8b*%lPFc-OoJAsm^2l;BtxQ>{3sm1yu7`ENAP|f2ZE`QF{ z0X9_TEArEBkwNciPVK;$gO+a#o6AqO6^7_aq&tZWYi{fXEPyPbjJAx}d&+cwDw~>F zb>qr(#hFGHl~~0dwo2YW;tcl}Zvvh)T#8fqe^5GSa0_lc2xk5A8Us6(!sv#ICg#eF za+pKP3n*|8scG)`b};OIk;+=_zi-+Zv-wWEb5sj#&*)&F<|#tnBl+@NS3M*ypZKIi z)_HfTkC*-PkF*9mrG;J|mV_hkkci|5?yLOA*Gz_;Q6}MMuT-nooHr0a`n|5WlCztM z7!=4{c7SWfy%%u!$0?IyK2%p`Cc2^Q5;310ZDp7e6wxQMuTS&qyqI99-@h+fPE*69 zMo+;}Bw0;WRbuyedNWJcO@*B*GkQE#(@4mY1iN5*_XXl$El^=o?a~0w9@BLVP2v`j z=kj(8s=YBPbLxG#ZGmf22)e{*v^d`3dkI>5bg5O({OU2kHRd$zC{zBn2|ryAYs;xA zDhUyo%3a~S>>p$05L4XOzxya;Wk7B+J({AO2CS^GA&Kn5I_$gGW>>#?R<9A??P%k* zaXfn59HGwXC)Tu@@yv|mONqr)^(o>>p;JAxOhC)4qcj~BGboL#dRBwKzGaPVf6e|- zl5I%9i}oY_R~Ku=nTfG^a*WKM`$k>jo60So03<%vQuZeVgMSj2_kOW^_E&&9HQL!v zEFq(Z9zf_pyc%pI%aDoULMJWr<25$4yR*WR1;Rz7i-Bg?y*8V>5HaVhSRgqZ+fk)!rzSek6Pw&k}zs+>m5=n{%9yl%h^BtT-fw1OR@2zb;q(Hf4!j@ z`9Xa(wBfkvhkfZf)UE-&h&xN+N^eDSUV-|vdabM8qp?MPt1hb%Gv*Sn`)w){$7XYY zjeXRyBilrj;~rwo2EHRJLSbxqlUG71P;g&?iGS96o!}d`E8r9}(l*4?o+0~O*s}&c ztW2`qP2%nftu#6=JdgJoY|$t-``WNbH212)HlfVX^zF(bQ;ut2Yr#3{sQ6|?(TrV! z>G5PE_@*s=d2`HWinV`T(D}x>f(iM3qQoW8LiSv-6Q-&2cn>8>C^#dxptGiGn*d}r z%QJ|ossJt+9`SwlckFqOkJGsnndL%~R9_!u;tu2%#bhP!C4C?4C$g!2O}5>oTyD%! z2|kk4Pi2$5AlCg33_nhs=P|Q~ea9Qq-xYY#0lpt-*Q@;(Ozq-R#2x(`OHFY-b`W}p zAw4P9JQ-|Ayo;sxr8EDlzSY6f_HgqeznPOG z#D{CGh_;5W1GBCSc;FPce|_ZR}TX(%lom6dT^on7~B70zk&+ z^QB)rmU~KkJC=Ii_lLo=m&=h1vq3PL`TRes)&?`09Qq6tfqy5<*pS*H>M#6?&;*lKydSojeyyWB6&=9wp(3i^9de2xSot-uG68?(bWo$TR z*d}J$;rVvVj^^$|WkXGs*?__otL@Gjx(Q^On<0n082RHcx#Qda7Hu=(ydX+rDms$RKgc2-NB4N{(jY>XWn$hZUWjj3D&UTv<|ziGHqDX^17T# z%dZThs+y0ar9d$#36Gb$Fa$<%2mg*OoPY{OnK$unYCHk*=sy{@+T?g%T3MmWBy<`+ zLjxr*FAXoK2w?~0IEr*V(@6WD$9kV$5c#dtZ}<(U95h?ZCjE&>E+IXm3<+$KlfJ@Juf_u1W!eflEv z4%p-;dTZdllOj*NAen^0=)5r(4p&y zn6l5$BIl^M16_!XK?<}qah#6{nBUWf7|F4W+yrT@Sj@hnIVFrD*Gl@5>C~Hn8uWE8 zUIHq%=(j{kq`awVyQ@dN0q0#5Qt7^X_iT$QrVdY0M%bNCk#myp+w4JsYc{*;z-P&y zT3k`esgiJN>Wxh439?PRR+0|})>_FA9d1s4T37CHz97fT>Tz|Krh(L#BZBtVLL%Z0 z!gD^4^voC8FyE@Q@&M7mwij8lGls>a=GDcYLh$-QouBV_Wb~fUO{kc#1QUhT$xr6x zxAAMp&uNLsPbjOw2ro>>Aqq-SGOevk1ChdUXE*`mCNo9R%V7N2w(5Q8_FY}=GW@zp zk-nm&$fBNf1)>lHX`dN`DHQA)soGw!bRk`zDuZHCG9NQtj{0nGtrRUUCO)N*xPtu^ z>S3X*2VaUB*DnL(Uzutc7iD`V>z$p|dOi^i;qa~WJ8;6apON~hE$7sbBn{(@s!boJuT=ih*Wzoj<6 zDHQ)pjc-F1W41p{gpp31<^7IwKFdt2Q964x%ZG!d3}H+Ews(!UCJTjero6#Bjp?a+ z7h_u?x6FZQ&Ef!(NZtFnTd>%Xfu*3J{+dSJ@ zRmHNYS);1%Xwr-IQb~BvXPUYkCiO^s9id`%urH}rDo6Fb1-5QRwx z2Ms5#i*9<+B}ZzcX#Bj4BfxnRGXCPxUp6JsnECK97Oq<5@HY)#Q zCP*PB{DI5`A|wv{c150YyMca@`DWulyOw)}DRC?zC=*hdQ;7M7SAEOMidXOt0rT%e zqXDU)x7vI>X_CL!v_B+%CMZaH{I$I`^*yiryr^@EkK;*qwZdJQ3Qm(&WF$?H-2E@g zSBq)o&N)ucmd~JCOznkl2;raVoBumNkSR8xqfdCp#gU#20VQA=)=>%R~DRqe2>u{Hu_QLin>WJ$@^yr-JAyrW8#wCPeGptF=K;n{_^X)(z~xq^1kS4;O}4oVrw1OA?CaotIVp#Pw_rJCt?k- zMke~(C#HTH!Hwjr*^iF?J9M>sz}!my(a_vMQC zQc2>ESL?8BmK3=m^9inJi70|Ef1cE?FRem)kU7=&Yp>pnF5?gVHPUo?dr=xm*<y%l1 zAAEZrXl^M)oXurtAosK`W*CU3k#XAE^$IQChr7DGl%Bsic$vIG-PL|Qg6kd38hOKB z=SO<_R@eV8%Nc0CN9ne^W=Fk-yy9+^Q%cOBUS4+D+fz^mz7o$$#T_*p#r(e~Pn3dr z0cgZ>46$Rrc?fWWVXTtp1s2)!HAc8Dqv}mY&I#W_rWZm;E+JP+uu>D1U>~rMeQ@pd zV!^bX#zJ}cZtkNyg|S2X>t(mp=y2D>EIxnGe^p6-z4ya;7Efye!6HY6@$z8G9I(mm z`7M{;;ZTv1(d9UqnzXIuCjDhMSN&PQ?bUbuabH!LmyxAcAsM40G!!*l#F>Hv_m4EP z|C&JszVP3d&Lk)UebMfW--0ODSDKU|iCNg& zq)QFW5?Lj`wlP9_lBrKd<{Lbcd_3|J(}PHbjpV@$_GJ;b8#x!*C|i>A%pU4r*+eOs z=3sHDw1Nw%qZFMAa@dhLbr3vwOZn^e|1EW;tv@)FYBV@eekS0*6A7H+BP=(r{-WGr z+SuW?vRNuCh-r(Sdb6vmanp*t%mm_(Ga+5iQo5_J@BLU#qc&ZaOu7`5-%r|4k5kl7 zla=r(oBXhR6Q+Hu9c^sqmqGWwh6GOf2(xhe9~CgruV_HZD@Ul;^lq%z51G5sc6`$r zYzH}Y`|f6+{B^naqYx&7(*+vAjH)O7{^BCD`@aVYbl*f2B`fkjWNS^sZJvzz@|zRM zB6(!S7%8KiE%*iu_KXa7B~lTJd?uQBCtSxN?}z6K2_{;qFYdJJ4eb96namS_pA-DD z7?gu%FZ}p`w~?bzj`D{>e&Ky7_1ubfk?)1W)+TA{g_S3n+i}BL2+uqx5qnj+<~AzX z$Alfc7*?aj;t9H}28z1PO1|Wkkk+p5An^>d?8lh0qIxPeaDJqabny9mvqH>&mM-v* zWWN6l=yP@I{U3)#F19;a!&^7Z44BkO-Q^d(slhkGF;s@TF%SA z9j#3*VX-12aQ!~;V3Ey#gd(z4ErS_;j4n6~+sLjBhPM?~K$P?4NQtFF{}l9+8xJW) zO9^#3-0)5p{+`mS;*vuboeWE9UTr#KzBvyfjsrDJcf_&t!8Nma#1{mRTlqH^J>CR| zME~{)dh@dY2}HYPI_eod`8-xirTmIfP_}(+e^R$(hxio2q&lj%n!eh{f6|$N<9ysq z?l^63_rjJlP5MV?>a*Z*Jb0NZ)y>XPN$Q!wR@xWMtK4b2taxT{puFX&U`oS;*0rk1 zxq92(ig3&z$|sM|gmsw<(5U%OTfGBV{loaGJJEKd(?{)hY37S&nAq-^MeyAU;`?=} zCFIcvSp5}@HMMc>_)#;eyq-lB_=N`1O%_v4it39aq?=qCprhmZ5S~aG#?(a}G!!)V z{AxjkNS_8z>1AZJ1IEPFa1z4ODiV_;C89jYy%?x*P0y=vg|!X-?-j)tl%c&)KKj0oPDVG5cBCp%gM)mZrBVzGeVN@PNJzALbYa-s`{Gv zNe6l)2%ZoR@3zU9jm;kU8?Y^kkX80BNi~+ZiGFawLKX%@u8pfA`}8Hxu08-+8BF;- zVa==)UP<3ZIs^Ar7J6}IE*eZ+M7m}h0cytXOY?0#Kz8YGV}1Z|VP(lX+qAH{3Ac8& z(*}6A&P2C}dv(6^s@jY*xL@|KBb?kJ{|W!WQtGRinTfMdD|}i}TbZ(^CTeNw zM9X1Wl<8UZ#VU#1QH$?06>>P^@PkGYVr`&n_Z2BTw98yu-g>l|>v=y{Y`Vk04^;uV1DUq;%k9E38Nh#->)A$?XHfQ|z?P`H#M;&+ z*fRy5@IpV1a4$c3iVpTe&q-8C>7N&WhDiY3c^0papNm_K%~rMUge!0@n0b}LDgJBi z;#%>=&mXqM-bK4EPq%XN)2Xt*h`F+j)mm57*QAgOs;egVus|Nv?g}_g74V8b#kX)p zcvABR^x!$?X@HFy-r{)Zej`*dZw8s$yfoLl)s34aW?=achZ1q0{?P8I+wENZf*z zIhO~GK$&i#%6{45=eZxHNvgp<-Oz+k2A}q3?$@^S@lTx&oQuDJb2TcJRsb^|lSw zlXpG+!Z5Y~znCAL{;qgvKX#|*AgKd`$T3(p{eE0G$xF+|m!DNn>VOq9`H{U_`dfmR zd*SI_UrS#;G{7>uil$A~m%cymL5QQDK3W85wC}6`^;NYx{wt=6)3ofv4dq#Vm^4{h zB73mGm}#1jCi$z~Y7n)=6=j3^p^^Hfe^OBY2&Z5^qpuxWUF^q@8d;gTc8%|voS2Sp!!aw5t?C`_ch}!_aAVKFL0-xSI~%0EAC%Il`=V!a+-0B} z*!=I6EenW)n!TQ2zrzYv4f2K5Wt2CozkSYKXCtRKniBVc^kvA<+7s5!J9IjZJJuU! zg`94(;*s2`49{1u*x@kHFE#1A-d6cs*a>zGfq8L-{g=W_7ZwfYe5CNRI#TM+WHJHo zOFiW~pG1CUpgz&HNd+*I5%x6pY&m{pduQG=Q*WE!7WXA}NdgxA$n<&P6Aq0h=iz*l zA_=;DMxgG;JmReY3#r|Jv&ET}p?griNO*T8$4;d~s&cZc+#Z+e-`h?6U%|>>AIY(# zj(tMw?nWeDmXaAJsQh$yJz7>kUmY?TKZw zhFEjovz8|K_~1!A=krIzyfZHaTXs)sVRq-WT(uKh5rcHU3{QKUi(}IEcY94<_BiP*UbC90fFE;KwEW>9KX=!EVcbe)Vj&TFLI-zR)M0H(ci zYxvI3#*&RF<*BfpqY`ne2fr%hm>+YkSa(OAV;T)^DbmADjaoD@{BGW7n1e*qeLJlo z+Hv?{sv`XL#rXE(V8c9H9jqf}pToMG313Ne9xlJpcp7E&X&<_H00XnvrN+v~1@OE1 zi0@#As+v0^`LOH=NRCg$Fmcvf=bO779oY){`udX{1(&Vs5MvNXhtnVCLP*6y|VHK@X-Bv1GTl~4-3{+#9a4Ibu|rL&gUpQ zSLvW)`2wL3t?t%Nd-7*%3Jl^6slwD@!A8LO;BCPRf5BpVWw0$lVP-qwA))>ccB17kN}5jP5fR>qsbT(wD!y zSy8`^p}DW}SfYB4BBlFXj$@1}f8}YK=`usw@)lGAO2D?}^qO?8>Wkf8*SmzK2CwdW z$~8{VhgQw*P2m_Q}fM~XbpFF%> zsxvx44GALygm#5AvI`rR_a(NouD41l*Jv9tQj@3wDNGSX%Rv*&Xm{4IKkL5Xpw$3o zpj60gbxw2W&z}DC8F#74^U=Yyo5_SIkEtqy)%#CCe_lKSy~_oqO+B)=S|)z}>1^n_ z_h$btUiN-UqryTjvfuhl_sB`3vdN%thEByu(21s#xGqmES5rQFfmhKg{B6V*5?`u- zS>*6SVsWKBLbJdz*l708oMyRhPkW!ySjXN&7Y-YBI;i(AE}F}}fqcBQr74>ZIxp@d z@3o|68>=bx59A`?~Z zj{En4%7X3fWtIio;^>Gp%f2h#b$51}t2Vcm!P}~StKN1`#egs1n{)diid)qjs7;-3 z@zpWrIM-(T%zh~dyw)ff5JAK4RYYR9S|)wE?N@vA^|`FbjoLS$dvm;i+)O*{YX!+H3Cwm&?()yeHb6U

$0i~dbWP%aPr;%0zH!D^ zaaR6{Z+`7`wx*dFkbY&UXYB_xw&jOMRZK^rR3SfHw-Wczp!&Z^sRQkw)^FwNA6yOy zy5`LHlvQPE=Iq%RR)~wg^Bw-&-OJQE)}wlehwZ2Y_+PkgI=*8c>oukrhHjNS^56q( z-?E7rU9)kV(T1|Yv2CVJpGjhw_X5w!sBWWftH9u07bZX)%&ys9Chu2A1lWbX?zEeVPl_8Vi$3EN*U`kC__*=F`Vn=<9}JkunpP#_}z)CG%9%;l6f0b%DVOeJWTU=$DlDvD@b`i7KT>e z{)U?y>8Z6);Wc9v5HSsUNAe7e(*OHD;P+RzX>XZ4)jt$GN0uRd^B@5W2844vgln1h@wNE@=bIAcQ4N0b8^M@Tn zfaM5OxjX!qxTTW_tV@)LoL;wvDizher(VK&Y33iYKx=-LbP8k8N>tfq>)lEo4 zK+XkQKspaEZs{drn#l4coD&u&HM}wY*xhfT2`CT=>Xe7Dg4ZuZ;u`!weczKL8h{k^nyt=YWxcmDfL}3c2B$G=Somf?-H3%iz{OY$EMI zYq+{uETtfA!;wcG#@XMxfJh{YXIbe(O(o=G8Y@_2kn$^T#*&*MGkq$1q7|#+Ri)6VRW9&PI6XjUJwT zua{{p4T0cWW9@(El~qn+FoCuJzYkDGz-YT9C3=Rh3FtJM+Ph|7_sIRi3Qc&uP;p1R zauG@qAIXr(<$3%Yf5m^F)yR9v>P9VH1(7f`g|xB?NaP`t8-G4w2?II3sd7VamT&&Q z=dp!BdqWi0U(#N~fgY-mk8l6}DQ7y#!ET@rNa7h=@tVEtk_@_`w38eh9(n!QyCDmDBplGu#D>8% z$KUx9k8T=Zb^~-aXcFpuh>0P<6rd!8V({F1LoB)fCEo0fGq=4Ng}1pcu%u$5?#II_ ziN-F=UTQz=g@6hxNCV0EU}SB*?;_*;f&4v zCYaiwJ5+k=vAUjfaMaZh5H+AtZ=h#W!sVJL-{GQFYuJ^_FmFl=s<;VI)C_)Z^IH$c zAHU~SN(Ah+_QTi*HU+I92}E~Zd(LfhfBe)@GS)P+TE&F7&a&9D@D}FTC}y=bkjmz{ z@r4ci=AGSqbJ1+Rbnr|L>4*|SN3E<21-C@VsAZt>Go?<3_uu{;tlN>{iH*B>^zH4u z+aIU1xsj$wxWet!*79*jk~?=^d(Le@0*%?2wI4=l1qDw}_YNDf(90y+fvJs)zj#FF zk}Ge~JEp6b;##4=K}$+G2<0MNMSm(oawNmd)&>@LwQ)?>6b_ow!1Tr#jbRI8%t;+V z!BwR5Hi^8=j%1eg{b~NxGsv5}hUiI*&=d{R-WUZbQNqyoF1=oFEwx{{Zr`0(emAw| z(bs`qU=VEqh2Yt7RX@OC^SMVGl$xbefT^A5{L@z&Kl!EqRlSy_g1tAC)(yERS2t5} zT~hf1gXt`;>k=^y+F}+Brit`$+FO;f9mqNkS=%L@w<$O_reV+$ix9IcU2pu&+<}-> ztLsU<^zcvn?z-whH24E}&CdBN)|K^qD+w6SrdWS`D1$bwaNk{5Jz{punjQJb$G3 zxW9>8dapomqxeL@&%XP|U-#X0)g$QDk-?5v?WZQrU$IVYKKEz`uU~+6N#?HW&s#C; zpH{Yqx(@o(M3gSY1UwKFy8Vqlibm^Jm}ceZ-Doy23V_0QFI4QjEN{O~6#RVm zhUa!&f8GjU2)*CRZ};yt@CIdEe%$k6!GJsr4DGn;>o*j7wyvF!=2YCY?~DCcY3QQ{ zq%58lvBxPX!YC#G)Rf?LhN)eSA?ki4PMhW~lUW+13Q+UwLH6i-Rf%c+nbc1f+7&I z@??~8rcwS^t7O-&TfJlHSSMe9<=i{betsAYe1h`k=D5MH`=bm4Pt~x17`n&Yir&W6()z_E$26Vr)icbt zsRvb+@qQM2sCPs1nFoF~{OFx)(ct?8Bq_Cas`mMl@+`^V(>2hCR{Pe_>b*8~o^$0F zVv9~VMMfJtt1e(4iknIGjlBBIBYk&W`CByD2{iD2t@l?qOvvX?+QU49k1|BNq$t`N zn!VIyv`lH6a@P015Iy*q&&XKQ2Z{)HB-xi)zxJtt`>y+~6Cd#XdxFx)W^iRg-5zCF z_ot}_;(~7tzFYEBgN!vdx1aXiIAcW+JQ9{Sfkj3yEkUueDRsVRku9rjwJkA zo(!ZB%4>a1+Ya{m<80CAr1@^C0ciA642U(Kc;=xEM}6iKp_vN~myInmYA$>n;-=!e z@;f*EDgDY*FDIV9|7|qLBj_e&3QdCVZi>qZC*yIp`|N?vl!%C;!S@M?dEbYdPdww0 z=%I@bvu4ac$ZYADE5gzG>{rfZ5_Y_QYhl;s4Vkysyp?$RSARyklPnr|AMg>hs|f=C z;d`KSMS=d9bC8HI28m{Xo$IhujE~E09w3|r}JISGbyRUm^e*1DQjw>J0ad;4M5x1Dr*J9RxkN zfOh{p(tHx7k_gL7VM>HV0-r;HYy4BD{8TxAr~=6iBpdC!3zWbQ65xOKuL-W*pNx$% zWwNgc@Wlr%=$?E+LX-pVzxS{44?7xdwIa+CyP m69DDl1_|*A+NU*rEcyRWw-jGC!iQ4;00001|0=}0tE$yE+;Fg_VJJZZy+Ijd=I2|T0efs4zjw=P*A8i{|#uUj4VPZ zC}uV}Nihxgtg~#7ED}vHq~}0my$f>gQrb`#0+#?CjKm1@LpDoH6!BX@_*itfU^iuJ z_aQ%$pf3;z+(jAAV=tgYp${dG^v9M(vJt=UO4?}Y*sKt|Ak%cUUtfjXd!{LmU)%_k zPgb9m3-);C90(l<93U0rhB*?>g;X^`g*iIxvIl%JmF8E>>r2OSfnZQbvivKfl}zYC zZNU*sS;Bww8ScHyzC(`vvb0SjT}K&p3dzw%Vlz%Yc-Q)4AM%W$tCm7Nttz6cuOu)U zNRq~OgDvXWjE$LKZjUPc?fL#^S6i2ojg^2FTrX;Hi5sPPN4zJhI5&l47ba&kInqPc zi8+uurGAH=CsIvfloR1s6{$JkS(CAQk(g-71nvHIAjhMXuK7NJnis_EwCB`9e3#UO zNRt24pu6huqE}NYg!c41MZ83Ycy$4E{bO$&Ux^Hbxd}5ibTsAP<&Wc~Sj1Yl?EUYWdO}7`B6K({E0O&lqP!f!3xO z=O~^$US_q`LJqbuR>k||@OQ${djp#EB<|bq6Ri5SlEBo!dIU|uJ2xgGFQF#qKC<>6 zx4WO$BW4^5O|xQ3c`!Rx{(s%ipFbZ@c`gd*nVv|^5_rR^H7{t5GW6CzRViNE?>oHL z%Dj7S9&c;9#RBud7B~r?HEAl#|^i((XDTJ?@ z)(3-|u6_rjEdFB3R1+vSKY>`og^t{%ha_Y@j*gd0i!Yf-i(Lw`c48C3mE_6h=bBfC zJ|iqA_7`t&mdz$OBMb683$lpt0g>s9UAw!R2E;=5$rxh}ukT``_Z6s`s5)A4cx12U zPGb!%KmFbtzELiWH%@qdc$R{2$UsG9^?}lMG(9}#{h8a8NltJ{v^*P26 z`TTIlvhE(PVTV1T2ZNW+L~_Z}`nGX%*F33$yzXbM8JzwPDD9a&)AGLG_5N53fhBU1 ztjOTaNP%-2PP%hm5xI|{$=A-l*Cnd(QW>!K#q5=reCMmXIcXjdXQNlpQ)k* za#S~5_V_`Bt6k3tLgwE%CKjmknH$DVMJ}7ZE*e}qSCqxbW0f5r5tACpAigMFJbWL* z;uG;~5Vm|9?b`zrid)~@3fyRuI^GoW@pbJ6k@%B68_KH~eO~}-!gwgAeu5JedEVvY z&VEloG%MPcSV-Ol`bTqnmmR&t2~9sPll4F&eeY4PUZJi41bn3N_=2D?dFxh>-*dp$ zPLdyk%RBNy;x;g7`jrljAopbq{{3|oLzLG`)NRAn)vT-$L!*BanYI0B`+XjuSHn1l z{s|V!*=%dIL*(`TB!C+4GRk@f7B7BC+iyRlT4wF~&Z@X|M9H4;R=3B^pJ=fP~Yir-3W@HLL@h0^*E{BdYHT>(9 zd?K!VD%KZqKR2DG@ChB^Ld(#y0+Sl z45hniGdLnFB=dUlwTI~J1=bfG`~UPesQU9!};w$0?Eafy0kip zU!~C?oU-38@OrFmPlDSRlaaAA1x8(JdCb$^;ZM@Z`$1;7m6nJVUVLajP0`Q89_Sg9 zV5qq6y(zGKMIHiyo6)vMl8r9n&y;5Bh>`%{5nO-ay#Rc$s{BHhWG|Ue{=dY^+Nhex z-BJgqDmQ~}+Z7*+IZB|h-rx({W|w%S%{Pv0n-m$QxzM; zK7(8*nD+f1&r9zOAsZbd308XGn7IW}-Ltv&ow=b0!MG<%ajUsbEnQ%;P%6Bz2<4i; ze5^^ee$3-I*{|lWh*UoGaFm##qL^5*>|ji}4J`S91hKo*-lY!Yzt!T+lQKCD2rEYy zlB6D;K03Dj9GSDu*60z`!TTpd$5GWx!d)fr1blXse%RsVhSn8F#Ig4?btHAe1@_f% z-CCP3wd!4t0vw@2@&V@JMbO(ArgrYwy9v3*cAf|+^5lWWmtn-4VRhY;$>dH|qeT>W zh*an?c2=dG=w~b!5|jGT0Fqxm)B^WkDpPnrs^P`D&z%4nqKPPgT^^KQU*wG2?*)@> z)cR`F*j|EK%IpCKHl`FN8GxMMRgjb_S3XH0!QM!?= zBPK{&rNbWK4i>s4wf#dG?|Fd!V_|qPAnTX+Q}@#!6kYa9G_n4q@DyvEQB2S>BO`c?}&joOt-Y@;s0Y{Qk%} zNMh8iq-(0Lym6IN3cwUcWj445KQ(NuPjYt%(kkWkzT^x#vvnvw1P!VDv%m}L1sQ|F zpR~q#{K#+mD(ilBhFgIx{a#ab&B0k(MuuFH0FImo9x$07!a^4!;9%+50y-jC#NB(h zEzNL{`zEZUAfTQjcmGDDUe^As)7!cr6>%WQ`NvHs-p!R!LiZ~`!xkw+@H8)X6}tjH z+1#e^uZNEQ--O3MbgEyBLPP)RN>Fw+-CTbV?9k>b$)PGmio#F)^jrVT_EI)|D=>%E zT;(u<4+GHS_$ws)RC6MRQf6;{y)VCK!kY?T0&P(u$>EeDtb3r%Ao`KGKrh~ew%407 z*bZB4RWEF0rCfE$AgYMGGOAL0rfEHZzS2jJwf&l~y6&#vC_<2HPbPJ}I>gHAkLRNt zC&Zg1KvWVSrqpZJrfNlS3a>uM1vMk*x)NXIF6^V?PGh#4h-lH>QWJ4_=L0T#d2#dJ&`=`dH zus#!fUmjvQ@B}%)>ZpIE5nf(-fvg`Fkt{I>^ZFj z9{rUwlbwV-^LAlvHbnV9Y`^q;NL~F=FjJuAxH?3m|Z6~Rhf`|Rf$&e1QfO9Dj7NniZ|r+;)_MR*;(|3v8P z_jQHuw;hr_FkbgEIAj(266K4(~{zz@ZphV2-q&4HaRBn<`7cPcP1F zK00OwU(H-KMW}^8;aB<|WU*xu)pRQ{LtDeN_v1c^;oKW5d8v=Ln1(H;^BI|HS%kh=A?&mx+*7ep;Nws) zuy$Qu5J~I`&ix7`WQ-)_Ug7hHO)r7i~9QM+!)_#x}rUS^r*pVz!1zOOkWG zc|_2|Q5_Qa;Lmt)qur4gW%^j*NXRYz)Q!M$5)acAs?tvLws<|$ zHu!9O7m-o!U*EimQzBPc>ePTJvvQ3M+T^L-_@Pg>rQDT{wnlWB1%j#x8}F+J%X@P| z!Sl8(U`5K!oi#U?@7_ePVj5GdRcBKxx-fsE6X7h;D4GU`8SHhHyU8?eQPX8%kNj0^ ze$%)yoK|v(JEcD6a$s=5H9Q0Ly>sTNqmqz8UP>f7T zplQ(oI}?QpynW;!TOqHQhnvw8ln zLd`eEzPqOEQ?-BHvJ|dW=OjO$K;#-vG)$<`XxB{#loihhWo-r@1p=yqZ>hrrqD<^K^i1n{L@tvM3_5l=r0tuXLFncZMUx9({*8xY6TJ} z3)_4C8H(ewn4a$%>dO1~(dtuy5qb$ka~w*}R-#LJNNjE<;3!Z*XYIf;o|)3fV?SRA2_ zA|*%NDe23e34qd(jui^Qi}lL9ir5`!U6Dmv&1&;a z0gG`rQ?1}HGt?HJ=Yzge8~<7@TwY64&E&=)0txZ7-p)&3Hv!)`1}2>&zqzek?}pU4 zX=sfzh;H46$5{+H;e~+6UC0VtyZb~mfefZ2Tr7@}Ido0~XJ2l@PRm+A(as!n1H8Ou zGWEq(T|{$tu}^&89E1d9Jkg9${DyD*yh);BC1j1Z<#<9sf=1W;fMH}_>Tfd#*rvs%cG)>6|2{|LHkkkiHw?0Aj5*(uC zJ`D0YvDA%V4f8>Uf95}1=Ryo9kSOF?Z-ukfc396RP!wnXz~(>iKkSn(Pf{c8#YBR- z+hj<0gKaS6=of1l)rnTeS=Iftss-qRZzsN96J8@H)2JFt7buXIFYstu*xfPoJ^x$r z>zFJz&S>s4u%bnS<%R|6A}ItEW6~d7;k6NAGs2G%fog1x2G!C-BS3`8s7&u3qU0g# zc$}ac11Ww3hwMWkXay`;oPaH6E~C*O!3=}|0QK^mLSA>>!-?_$x#^Zd2^JA7CsD9Q zo2=si(+Dm4WWUxStp#TUkwRefeyrN)qyjbyRgyGK(tIh-L-2UhmSq6CLo0AT*aLa* zXkHA(=$FNqm1R@&5VI@=p;B=~Y`?&EuCm3WjPUSPX?Dowfdm*{!aW&ToN}Ke2#IeA zP<}je%FO(#mS?k8nIKwnZ+V*30B zBmLH)X@F^iNE=VyuhPLo*u;yD&aF5*uNd?e8{%wON>(TCV_h87Q89oBRCu3NfZ z8>Pf+SSz!mc?mj&fm-P%6Yjr|xy5R%c)pkZ`b0Np;Qb=>wmYwUPxqbP(<&bE^n%({ zOjf)hc!R#v}aE;AbFZt)WP5QJ9}C`cyhJ&hAonDLs`(V7%&Y@) zTY)Ls%dR_%Z6T)+yq#Qqjv=L^oJ>&^U@W#0tS*>ob!$V7UV3CyiL0H7DrJgR{M0KN z4pxR1l2~FbG1eWgMa7(UCOHY?e3`BBPe!)ehC+uX3)QtjPyW|ipsG_* zUDl`^mzl}XdXXQFGYJo?1kSpvBp7pA!_w~{v-#Y7eNLqTv>O$ThQ59C2>xO(OxLxK ztNis$1Ajj3kdGWN#LJPAj5?TcZXFgfxGl~A!(eV<5?Il)x4ydid2DXikfN2VDH!(h zI@IpP?4SJG?ewe5#YHbS8n;rP8p;?qatKxDaWKv!B+e%b@~t`00roaV{HLVKKycAh z(Um9|Oh_X%Ee>P8&SOqkh?iQq?;s5) zXh9Y*3a1pLI7kkby&TJZO`iDtt)$wA)jE;HcC;Q-e0uipB-?psP}utmbqw@xMsSZG zux~r?+3A|lKoM5g-~1EgqBhpODZpIkbfr7Hr|OMryIs)5$2!2R828Wj_`_k$p2y7& zhgo0i904_CeuK-JLv=OSZPN6O7T1F!k&z%IwLlOf+T8b(k{B1VLrOJmk!topn3n+Z zDUptx^KH0%%pW^@`LM;dtb0hwVdCg}oa6Ftb{E><`FzVkxb%|j+%@MsR4P-xh0@Pq z*N@(4pKj;Yo5C_6!rD-bNyjQ~c5X`PX;h+)WWzAyd;6}hT8uM>JaUytEt<9&`_T&_ zqIt|A#)J(NK5eJJ)FRIRgDkaWo9dYqBbkBwUgemu*40TkDp46|)RMS)TgXFPnD1`W z%>cCdvcai;1){k;#>7xRK&GD{bPRPB#td{TaA<{=Q&9`pje5Tnr+FgI=LB{R2j=;> z(iy(HZqdG9=9Har`hjW$9WiA!9 zfcn%>a!`7@d9%mOG|- zP0*ep*zN_H8F=ijfM3MW_w{^k;?dD@UV}gY6n` z=w=wBRXYge?f!Y=_E7uzM@g3{>xfx>8B0BL)W_-v+v`tWkou-W3}0C9=_tSqaRw+} zE(l9Oh##f3;0R54f~)wK*Y}Y8XhrV-Boe8n8@Yj=doy0mV5(O0r(FfLWam4I;^^-Uf0^*avTdwjxUr$GFOHOz6 zD~GK4D3`S!(sQvTGu@o(@3$FhqA~HxKhzBSvhPt;aT^WjmR~(+%LDR6VWE!{A?Hna z$xZyk*)lk-&P2Ediqz-uR2nmj%ZX8>dsu-zv7Iu7Ffs33=M8l z>P{1gM$l}@2;t4?7PVK=osNYjbkLK-)aHNcn-G!nJU!UIS41l+VUHIDCmYwl{SN=i z=MFC-O$A%0)3_&YuO>fx#66R|zQi=TqSAn{yAQmN5 zF=d*=@u#nQFP@ zKs&GevMXx%gEtz@+}dmJ4@J#4IsCN+%x^wB5m|Ss&O{`nChy%{x1>udkT=%*i}je2 zM;*uIXJiF2PF+$3#(;F=v{d#}!06>=Dyxgq{@=B-L}c}HNu&P+{*a0YNd4NSufYGi>ocUzTMluIfNzdR zuUqoxSVT{wTeIU?%;rwNdRm?99Mgjfi2?(6x#MI{*3h+ECwPO}49&uzR&A+iF1McK zAn%h~?dG5Je8MyI1Y(c1XC$|cs8LMD^`_UU86J$YURogU+pa_Yp#TmIj8_v7TQ*wA z3F2c%_EhT}a$b9hX3;j|B94@d3+F8ubcM?&ToiUU?=}BrpZ8|D z@;wMmfMvJc(8tkhBH3w89i|J^ao6+<>#g1{9+B_7K!8}%Gptif43&ZEE9dp_Is_W| zv^@v-{Ja0P^P31gI(30c?Fx9K!}V@liZzx43$z`N6d*p0k9<9!EY`9cV*th6s#@MG3y_O(;n?e8nX;_hNnc}1%^Y{*K$v!%1chAotuoAn@LOn#29H^r;;) zZ%|QA2dm7*$>A`7Y*Rw{c@JEBHJLr$viGr_E5W%U$XUu-pD7NdSy>0~qJTRw4Vy{bch0i6izQ5io=B)|kPbI|EL zCj7^;!zNTmkSSVoBUFBxjEua;KK)rk5$fvCv(|?FfOPYeWL?Aun0{qT*PqonwQ3wp3!%?+K@R9)HH zr$)Tb%fjxPqt5~S0ypMR`;se&w7DnyiNidmSM!tTU+bDGFC-b9U(`!u)lTdw&PrI+ zz9Y+d`Go5X?)5>ccVh`UKo}A}{-a7R>`F+#>CQkW_cY|#jflLy|F#Jp9-r*EWyIk= z5_l=%$Njige05IMXAKM2qGTfdj;G206h5YHVllWoE=mroEEqrX?)Bv)&iwwu-Bz$( zg=D$8s(J&9o&r>fYE1DEhnV}%8N+^%9q;DEGLCmPOSazu5UOYu`@1;@tET;($oGAe zRPRLm!IgxD8p%z`t71pU@`I}C;=src&8y~y!GM&S57PIAkpoL&rkHv? zJ>2rjKwV6oUUcbTx5K9SGGMdnU!5Vs=*Ibh>ET!Bw{}?S=rawkv$$+7a+jZM! z?Y~FZ*TzMe%Ok+32mZECci@jGCmXVlo)qKlJj@MBwWQqVI|>}*ETsZe-BLr`d3g2v z&6y^TISgDzgLPae4cwiW$PIu>sID>&5Au@DM7A;>YQiMW@y_Q1KhJW}a6!Yv( z>_u%SDNo7iiGK{HPwit$O+ZQRg9Uu4MIt$7^a&=^AT|Zk>y!Bq7^_*=Xy=m@By`~9 z1vaA+F_d{xVPEC>%a0N-H@4>c2;;@=WMWIUk}scq@)_o!H!mx4t08O#p8D%YW3^fP zt_tEvs%8l2rM*1=B<-M&ith3Q8ZqU!7P(>CKglO>D1GWzI|V5JYPQKcv^Cr9lG-NS zx^gQ{wnB1I!kl*1I~JEM7g!t-cxfKN6G);dcP9uTsB?|m;O#uNJPA;B+5@K^IdQPS zcr?cUjx~@!(DS^gHu4m;&*0+wIJ8qJaXynPbO?`9Z-7Dnb^3_HB9t-0E7X2osJaMk zuHQ*1R)~zOK_1v8-TCq72Dynop6EPnDd^i$kjQomKRX_A}c&a{}Mr_T~jMG|4<7icK$L8Pe%yV z8G~+!q#QcUX-{#9fRvz=#OKnz*d(O#Wk~#NTaAxh@V@)fz3?`%&9lht&EKvSP?lvD z#q58S?=jkIvFajAt|=1`FssM+{lXelQwfgmaD)O5b3;EyZcjZtLl@a13#hN}GuxDk zPCemy^W$f8h=iV7^p`hwwCd^A%>L9(KA!VrouE))_0ps^%$H@Z?g@U?wd0<2PJssJ zd{rT9Ju+?Cnnx9w>5iT~ajo%(_JvB1QxeDY>#X91IvR~qMy1E4RyVm($5IJP zE%_M~4J!o-$|Q%$XzbD#+Gu9A})2GFs)0psW=#N ziySjRCVVxVg8YXU+PliAVUWojk^m=)ZI|U%u_*ev%5i6{)%&_#oGor7A8ov9w4H0C z&@c_?k7)ebTQ6<(P9erk|Ihw^zz34=XZ*ARsrF5>-Tit!*05NkdgLFG=z6a4x@d{%u7Ta-j#J37 zjjA*#8Ix+`0oJ906$*??(a!!$*aANL6M-3@`I8L`@x6H3$o=LeGU-Jl zlT**TsE|(y7nt}c;Xw`X*gJPc{L#4+Ri6Eskyr5$C}n*Ry6}GsRoq%v?Cc(cO;jZz zqcl0;E{?fF;`A>v7feD$H@nTnyC#Sq-BSyqmR|WoeoLb`*tmG-b*AU*ulf_4i+AOA zn`hxHh%74$RltyO4Yh}V`2nmF!53B|+PcMhSLcYprAJ9u(XT)P--*oFAHD}NtXFIX zPCs?+eZ$GSEN@JMFkT*V9-ew^haw)5a#Ob_K&&U?0>#$>71HD~NC8TeF~kw#OOh2s zwCY8!1Eo{Z%wEqOje~y&%n5eLg9X-lc$)9GpP&33=XRIO97lGoiEA4SQjwe~EZ_r( z#o(Hc<{i{bMnF{BR8lWdsm*-3egkcPc2m0~5PDhguq;yh4I@nht{Rk{-7GK73CCmGyi0(Q8A6j+#_a$Wvn#T9ZaG-|`~6%W?SkscwC4W8q;-Si?pL^t7=w-4#g70SLa`@*P)a4b=2B zAz;iV=6HhiBrg5hkJw&ttLA!wU?eGo$+<@=WOX95RZ0;PG~|fJm&Qb5G59Ox_ela@9bsI>pSe;=N#WNq}As=qw;bmMyMZ?E&K(ySl2{u=TXL^#_2jo zDNv^=22c*rfTtGg$|$_Amt~#~*uH%vu*?XXNZCPoDo+S1U7K+o73A z=aI8yD*4*jHh8I(^V|0-B%?eY_=Dla@FwekCn<>{{vSh$rM@g$q3l&+^`YJ=BF-mX z7>{k=$3O#k&k>DQ7Up`{KMgDzBRRSx^{c%m_zWS`H`d@F@zvs?}?%0q?9FV#J>mr52boc ALjV8( literal 0 HcmV?d00001 diff --git a/common/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.png b/common/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..34d241de213851760d4918d62e4e048451f0d9da GIT binary patch literal 15997 zcmbVz1ymbB_wND$f(NH)aEBl*F2SM2p-|l2iaWtwN}*63Do~1*7A@|SQYc>B-Q9WV zXXpRkdA{dtvb*_Row;{rXKrFO)D-csDX{?nz*AO|(?Wi?{XM}L$WN_VCrsoQmYdQG z4*eI{z@>da$qXvaasdP$3>ZZc7*p1{D(Fu`;(X zx3sX}g7U-o`FLT1ynKS(Fqo)-h^U|-^j`-9Qk=V$ji{EK!oP$e?<5%PJU!h+d3k+& ze0Y2WcwF6WdHF;{M0jERy!`y!NCdZspNprtFSm;aAiy^*=KHr@A;h|3`#}r@S}PjDI=ge~R|d z@pH50)w1?*^>VkgmiI=g$@teAH&I!4YjaOmcO6$(r+>GU#=ljD@(b|5plqt+0m{jued4 zPT(I}sH%!8yLfn-yI5K)%SkXGt>&?}w-Ob!wy}Wm!OXdBY^;U21+9dhaErkBEx0Ys ztt>=@EUbmBY%KpxFXw9M^|x*RO>g!8NU!d0j|?tzr~hw0e?#tXrw~=L_dqt6-@jr) z+xq3duAJEWF>- z^bu**G_qJOQmfJ-Ms?WTZsQCDRdG@lQU_ED{wZ8^xi>BkhHk0Z4Z9Z?!U@zcF2wGl zf=lXp$cD$SAgCA$Y^r~6R{et7h&K8a#vQiV4_U{!-$~Un19%(tgcs^i?dsjGRopNTeu&aDZ z8n=aLispisogi9ouAM%}MQdDf zMr#;+`CxR1kt*ZnA02mr&H5go?yBoP0V2LE-0m?At^Uc-HXXN?J2%0Wg|IRRk|nnk zD#|>yys5kYywYNb4;|-Z;&__Q7D226Jc{83AUz957Y)mOFXbdv!?@s7%2icT#aznNw3GLyBFAKn$nbLc+j@N70t zjx?QU6f+gRU2&WT6?905mxAeW{ZNEcXXG-&K}Ws8Vg5mMn1yE_oNT*8x90o>kHaSB zj&NBc(%v`B%EPSCQ$jC0F2(L&<_VW>QEq>3!H!7cuomN_eJ1r$@j6d8ndZgV_2^JD zL4cjkxeSFnsvDLMQ5W6K;DXvkj_0-Qr^;&whM3n+$9oFFA3xokDJ?8d&8w<=&iV|v z)Z-NHb`;Sw1LU8PMvH6P1oQ^q=}rDFZ5$#}maKc9NWE;P5|~cA?N_vNe;`HX_=i&7 zq1x#AyqOXh@%5S{NjT&-IX{y(i86%d?7EWY1)93_=I=v`GyNUQa-ZOH?)U4Mq8haG z1?Z3Qn48CT&Hay7x_ zaS)8H)@Sle<@aY}I}bytk6kFRki1W}zf33!yPBn|d8O%tNZApdUnBwhj=85TEMsFK zZ(~MIi-epg?Avv$>&SNR2MP@zR^R~k4OiJOpV4rdi(p$;qig&)?y!51#`DiI@3H*eA4&PS7rOTRX{BZfxeC8_thg8y zzR6e#IbM|kh!Py_jMY0x1%IGgGXf{kUn0eTRjgLurGb$tWhqA5g%8Zmi?C{pqf4Ij z9<}Q~5vEOt)&PHkqrI`7ff@rF4vO1q9SC}5W2zx`B=ppkn2Pd%sYvkMH*RW$3TTm_ ztdm`n$Fl32`St7|ICm;T0UIM>njogzr-OK)OY_0&CZg0s^3>Qs_a;3oH;_U;oEBT0 z+TiPMo@L0x75)3?vDnk58nq(QjlLnfb^9VU+p`0~{Lk(S(f(4Ddhp)#Pr1%{aQxun zWs3!AH-7cfBIJE6E)BU&nH|HN`Xy0Noiqy(!@T+U+puEQk$O=Bp zz>y%fxizaF5jcg5w>Qs!LQ@=Kxp2* z)lf~N$(v+_$;IoQPiQWv)b@DyKr=Z6&NmH9I7U0WB==<*x}VR?-mfi{l|Nu*s|To8 z$x)Q>CTID73wi7hj_K7@4R6pX_=R7Wl3m;UYHnD{GGys^MNA?KLMKH~T?GkjOz7l? zTn&zyo_vzY3!q3x+pfIQIlIbO*v%HH!;mL~w}VnDW<{>AzqfEByJv&O291KXOv$H* znCwWwA?YkNSfH%dcMR7x_MV$CFyd`8fuTeW^Ez(@9pD<-M73@_OP%FMVvJh ztv;#!^Hvj8)_~^_sj`RM>=Um)I7+nAX@E+CWpNI# z$9GOuTqISO(9JECW<(&=RjB`|;{AHQl+Qbj(Zk5V+~Um5j8io*0~8DtN;82cX3$R0 z5MDK*XVmBxgfM38u6K`Oar)610`QI}1rbTqm}7znokXB?2Y^UV0;r~@tK zx(-qY%9i2VlZ|ugmb)LAOZ5Z>$T54>8SK?^K-7;T?a+8ucx7>y8OIpXO7=P=SF2NW zM^t~3uxes%n7|3$aSm-_9G?uI!fJf5#=2aCg*fIa8nSY!0~}q3Hu4oDYD=>YV%X=Q z@Ou|68S9`A3kG~Q>YHDfO?D60ms-bBt&{wA*Ec7`rMR6ae(aGHNZnOFZ|d<|_uc9d zYtXBh<8OgE@AUhow{b`y*3c=upalgx!w0;HYAh}{YO}^AbkJ{K5_yWHT?7?6Sv;V4 zF5@_d?!2efriUl`l4Y~ZuV8cok>JEH_mKloQmE8mpGU+T3;NwEo0c_fmJYW2HZI%DXAEWYcHwnM0QSFf`g@b^?-Q7B0!gYAVCLc7>F9 ze<(ENxk3i0`uaDl` zkcXY#g=#P=0&Ulgh0QhK>qhGWTONe)0dZR&3zYV0FlGVP+^2SEiNPGqCskO6OOBjaQ4C zMRc8THz6@OvQ4OmcU&(If4-U_E-j96wk8Gl+kKFhsv;?Kk zEERda?}1q4bC1TQ*A$6I_y&617MptF9Z$iZWJ3C$pZuK;YpU&W8l^l%ULKZGaV;-)kY`!r#$T}e^Us4PQ8D}UgP zu}zk`N?`5f76a`n%be<>JIG(N=VerQ6g67177zkT;YEw%Q37{1PXbg+_38sFFs8BzDjqr$Va&!`sU|t4_`(WM3qEONh~wIy%B949 z1(>s_L()caj(6FJOLur&Z};g;omw}jDm#N2@wqcrtdK#xbKSS{F_Ac_ezQ*-=$?R$ppMVJ|u}kx+7C!}qwddpQFM>a!so)+a0}_@fo4bC{ zL~Rt;^hc=nvr5BdQQ=`a<0$X4=%3|V>Tg+=5BrpbwXD&+V>L*_Fv&`9Hp8rg2d&US zDlel%40JK2NAa`Sgod-O36dMO_T_U4X0K^+)v{z=zFwdFN2s=(JG^u}y zLSFuw=@*j}Y3RIK$w0mmzAzPdOjsHnY-@z=eoqRuWPO_f=ZhJLCVP<^_VV4rW8mdV zxFt*I6E$>+9ob_P+gX1h|$kmGA>`v|up!;6^7 zd$8xR6O`@9OHy--h8`HlQulThHTU5Q`00Pel-FetgV=1LZ~Vr zK-s`gWsvWd>Ca78HCEE#QDZvS45+=iq6eiPt?|$wOm6J_3wuBp1cD+Ox2>VmwlQTL zD(_gxuWnMTjfn=k(eyFNsaib_0=GYZ%0YL|ZEh|CPrL-C-}qqI+^rC%YcBj1v;6E_oUWUvSI~$ z`qmL)k0ec!Oc2)&JPxxf~9haRNRIfxwWx#n`0 zPSH2T4w3SI%_ps@`G;&OMfoqLGd565LX!rHNH$4m<$62gZ|;8;XmY*L6{8) zi1cWotC0)1k0bhd962-sIqBjF8_?Rh3;HHSRLs<>>%r>?DcxDetLT;og&a`;GVKiT zO)L&TzyZL#?iUqnDw)ZxV8E5gt7%yeo%V7luj z%}A~E*_Lc3xKusf?k45cZJ-GS!gcRln!ufTm{0>I-uTtA}ce~wW>AnL7hQd%eD*k6aeM1&W#hHP@X zChaUB4^!>X>)!<@QiCs!xZvmom6+ER zAt}z>Z2T;(W(euRgFj|JGX_6Ylyg8Cv*ANGYz3d7x7Ezz%EU`4XQI>*HP=-9en7Dh z{8-?lqFYO{J}nz9TCN{YUxG(MQiG8+`>DiE`>affJ3%;*IqSKOf_4rBUdp0?@4xbV zBENm?aWXo~0A;?VH~S4ct({XEoA?@85t`@4t|2rHj^x6@<0RpWC1ACu$(ypN8Fdbv ziCM{9bjRj7MMWv>5{`$;2-_CEnD`l59|meZfk1>^Sfwfhss2+E z(h7v9y{J2Y!ll52_6AXMrMtrevJ=t)AIw56d-z!_@N*X%F%l@yMQ_j$rCH|5x?A-9 z5AfX%rIb8IpIW6W9CDjtF=rVIXQ;eb6&s+^DY&4kefom&1$ zE&UXtdjJx--6(MKXDY1Y(LG=m5$09H`ZVZI7$oJBZ5V_eE((cWQ*RMDdOOx>1#K9( znVmK#M%}HUF1n!K3r)>H@-y5o_HQ2lAq?_+Y6@stdymfn)rhIcRI8^Kl45ewSV-}K% zi%}zp&~T^+%TJ!_!4(oPKGE2N5q0;{&sXWV_~Q{`HL3{!VKej{D+R+ZvNWKO7D|cg zA?8}-TJ|gwUNR)GHa5zqM6ie(0xEPl-My`=)raxE`H1q{&1EUMB3wrZp}%r{Wi@)0 zO@_F=qldu{W;`Z`*!-iT*>gHnsfZ?-G&A>c z=d=2>__SYWhimHQT^&P0+R3f%Kk|97V1OlF$Ob6gDMcSIiNNDp-3kZgVuhuW_hp2I z9A%rhh3eyV!TR9dV{(+UOWOqf%PX5HPI!fs3=2WZruUJW)Q**gfpJU^8U9c6X0xut ztSo_tSSSlO*UO&i{qa1R4(~u2ExIdj%}}c4oblgy>Yp6@Ep>n`=Ynt3Vs~Y)+h0xv zGCLBqMN5TE4eM(PHL&6GM~KdPFy}tm6hAAN?f^R4I1+DJp8Y!ZlU5S}Dyc)S9o0EB z#5mE6tUnl~a0seJ1m^Km=&)R%04%nC$KT`H*nwZaS*vYTn(vj7FFz2t-!n?q^Sf$0 z?IUydH||tJd!Sj2t|<^SIeQxklQGX06V#}!IU-T-B>h&Co>UEOu^b60#5bjf7KxW`&qfjttFsH{Vk)sIIAn=eq~LLjU#8mS zRTOzqSlr2~aG`!x$fsz1^AR^NtbKLg#;Ok`2i0vI2-BDu)>-s^18S^*PkuFvE=7Ez z%>4Lh4X*H07jJNc0pb38kx<4gSWbBu!fx+ z+P8-I(m{`{zaJacn&o&U^sdBU_-l^BFve?i3+|X>RY+u1@j#W}l64uqF3PaolJ*R2 zqY%umZ=P7;rhqobB}?!a2W#Z^_QoECyEy2Nl5{Z;Muelp+;b@1GN6)H>l6{Q_y{Cn zE~87&KG{CfmAf6v$u&U?-t8pN6KTU<{!p&pZIz5aArAx-v#3Tg#of)gYV!N*a6)rn zX#8jqh#;pYZYN$92l4EpG90o>)?keAO$Vt2XUB!kA3`SWg}&6)6|#%{2Zz3E!IkE( zzgILx`8^(0jaTsn82l))7slEPTg`_{Z4#nxkNpG=uXrV*K7JY3cr2~^6?cx)mf{&l z450J9GRW%a`R`C#YbFK(mX+D3yj{JO-w6lKsoS*!k{L_+`kuT=i8}%#O~H>ENJFET zlPVG{N=f7r6f}-j!g6VK!;tj*Vb}E-I;FS$Je?ej@W-wa9wtV)WpsEs*ie%>HWn_` zR7c!ikFC6jSDgEFt=^3XIdXV?y~ldLgQd2P5~gps=#7ufHP}zz6v^_4^?=OJ z{f|$>66@*%e?G~KfEb|EDX7aEjlyc?lLdMv7(}Vht?+t)R*d=0-J`UMAS(O_kbz;828IYB%pIRMy8j zvUTfZCk$-16tjb(AeF0nzZ8`Dh*A=zMmr3e!N>D)^=fM%3|W9dC_0MBEN!T>`JGJ4 zs>?Ky?#HF!M^gIF-6|ej_b2=@+{vfRh0T3YJgS*3z46@4HAGlCsyswK^Ow*hta&bs zr-mIgVsc(UYKq$GTYFs4Pw{Qq=kCdSEVz0j*PljWf7Z}};;xv&TPxe=z8y)WbUSOk zt>^}qm!W^TYm7yn!E97GH}~e&K5CnW-U0%PnAP(7=UcnHDX>haonW2( z95&9IpC~!Aypvzxjbv~s#)j()AZtP|%5;$Cx%!8i^l3cEXEB6eVS0nx9=v$=MpGjlk3e=(X=j5f7+P=KLuVXJxc2R46wEdmM>_Usv-BB zLL7U>eCagO4{AvPYk2|)>ZYiyIBjpsoY>K3_{CDW&>MzX@(88@h&)y>drka@cg-}> z_>##&CdOenJT0KQ+rtpI^BiqLY%~M+v|d;>qTSeV_Kk%iKXbc+Pju-i*?TWpiXI6L z5>P*v!(&4QAl8l?^ z@hbfE`bVn$nk^=6s}+euzb-U-;;&yg3r%(pxJ1y6FJ zt=|=X?mIj)6TWbJ%X50xO`l0~`(gqA4iwpMtY>0)piHjDGGB5=yT|4x77b!U?+BtV zi3>BHsavjL=55;;GCgWD)s3wA{CqjGI6pL+D*tITX$l#O4<-rfi)>m~M-ifG)|8-h;Iy*jqy=fD2}>j1UcS~P%7L~t*c%kwNEcEW9hm{((25;&y5jerIz7a1!uwy~c@v~);};lW zYKRfkl6_3Mvhed42sBf%Sx|c@9Co&G+;ufJm9Ge%P*L?jCoz02kYJh^p- z$@GMol*4{`CQwRX=<1G}l>v9(65y%Kg6cW?J#*?GFh^@Nta`Vb-3}>U_yaq?wUQ_5 z+?BIwv3EI*UUO1C!?aSy_(0-y#>i*Ct*nuL8_gb9RA6r;@KG(>JX-+9g&}sTVP=Zl zadn1W;fP&*JqBv20mMi2#&eRg?noKJ0Y;toHkXXcVK}@fmRCdQ7Dp7n@_qPvgp$J? zuo33IgN&@tDvnp_-0)K%q5frFwkR`3kghQXd~!=^)jjZLR?-PiPBQzb4V3o4M@DO6 zSP<{=ty^GO4Tvj(*}YG)RB%AH>rFU0_xh09fgpJmh+QLkNrn6S$c&U6AO)pWPctZG7ab* z88`g}8$I^C0gl}z_2(i8bVGbVdM9X)F5p{BUfeP2oaTp;qc0U`HH;4Q0aiaB7G;c% z`qdeU@bN@RurW}DA3ClsCoWu7yY6w>rov3s1p1L9+7*@U2^()l!P(jFE|OIsc=acW zQ=cI9^cK2c&38-3c|&pi!*B~=W)io1yofahSK3$>t<=%ssJk)X99^>a$}Fv68Kea08Eeaz5A%%YgvRo9|ALECl> ztz>u{Yuq zoa$pxT#?yy!rRNiJAxIV3#k}QO9ke25V>WpHmf!X%_dkL&Yn+}L3ip_#e6xTO$D$i z4Wb}WR)Ij;f}V5N9o_F@KRR&U|N6AXgHI1(m$x+~$t|SlB2q0H_d;mJl{!dCRxN57 zU8GmaLO@l)M3(ZgD_`>;_$zKs(}%sFv;(jLi6JN`#=ajCuT>yKsR%7S4UugplHJ>% zqMm6jCr1Y1nVB$cMGy)wc3Eh=b25uen|#71m1kaq zFF=Z*bo?`2PVH=*(OXN7%fLJ}L(}o4>UlM+WTb%q#Jg|eL9}Ycu9EN`;_;!9KP}At zo0oB!wWHAP>QFYO5>p3|hTO3Jj3Y4Z2!qb%y)0ycx83K#YCSkuJ3tWQqzzft`@BedZzVYP#}}}r zcn`#IItMJ!1&*G8Y;7qna=5_yUiCQ9XxOXRjgzWh;3!?5&X9y#NmM~>+5QgG88&7$N1IjQx=npeH6?6&eS-RVcr<^dvA!eV;TV*{0 zh(Yr=-7R4aNfQ8JNNaYA1rh&VPO8{xpzMyq=~GtmDQfr3rfEyi61VXe%>6X8h`U*N za5_Z)@i{xnGDjz;7y*2A;DqOpEG-G`Ao@A4v%Eh+3gI7rz>v95TvNPhYtH9|`1Iq$ zbprfa9Lw)Y-a>nX=(~ISodd`boBOwOr??3n%d?y?kqr}s1`MpLTj-eOJSs@qF3oH6 zOO$lORG8qX{^&(>n=Bm#0+DJJuLycVz16dR?$TG3q5=C7De-|EJznv9NA`RWx%aVH z00MIl#g~vt1_~VIWzf!-c~TpREV^odA+{7C0F)|ybfJprRv=_@s?kSD_8Vp+*y4Rs zUVr;Ty{NR2vWN+uYHiuzsT?)5(c5&Dv7B)siFox+feEvPw8}XRASB(?#^VQ*fV;iK zn;Xz6Eul8Yj`3FmR$M6~FWsz%o)Wk!XaR4))eOjaC?5Z_`Zbi7z)|11uIp3e>K;o` z+RSk;dbH*jvj`MuiaZKtK!>l@T=4B>>LZQQvd*I>1Yg_1#mefRuWlD~bUp2NH;~P} zFZ;;KhIUik#80E@QIk(0aU`~dj=3mvHoNNJMbglWx;hI-MS{TUv~TxMj*E#}r_718 z)6J}IO6$yzA^S%mt($s)HmyOYfs1hOTU=JqaLuL9=b*1cru51AwQkZ2OqDQpS*7E+ zuuLiR&;`cjtG)6}DQiKpXBCQUCbJVSgz6yjagU0hg?ns4KT=&_#=j-*$5stiLF@}d z9$SVagLg$}d%hZ;%M#fgU#!GouZ<9X^rY7R{a1`RIfDD@aYOcz@Sl$nfg)pM7$`CF zwPk^?KON172EJ-%*eeh|kvZzGl4c{xUD7+)Z7Y;MlBEaMx%ey*hJqFg7GIVV@91F; z_YyC|ZyC@#Ug8l{PKQ<~Q8SR=P|>-iv_>ouXsB6TiUvTbDJP zYToT2J*nMl`r%tmQ|`Y5j^uDSH&Hl7RwFP^(<|(shci zgnGEz6ErpDO)dFC&ccfRi)iZzYil=tNLuZiy6<_{cO01*6g-{zs=v%P0`Pk|p}Q;3eUX(hI{id%_V&8y=4WtTh<|xQ!3v{r7sT#*91fTe`kK#} zH`VV!n^MyRDSuf_Ug@K5BB}p!316W#>d1FW&T!PtAqc;;5}r6&md##{_Te5n^7VsX zyR%*7)M#SM0QpSIue@#!Hy&dyW~kv3>MNgp$t1i7gASjzQ3XsNZD!>bq-8l~HR?a` zUj_Z8Kkz#$RIPfwux$CfCWQ6{4gx1UhxvDA4f;Z$!>5UWKt&!rHfp0LfV@>pWsz8Z z_F~>ey!sr{G%}1I?R$LjNugns6=mSUd$B!zrjYO58@TXe>Gl!TIQ+SxUe$q0apo7+GsYaibY7}aZVYds^95DFtylhDWAs981 z4SabPw^#48CK(e(h(qvLgW~6A0%a!+6ZWOt;)lKRdY^8xF2UTL!|ES-X*YXD*MJIQ zb3Sq4dOpNjYIoJA=Rt&?6-BrS!HoJDmlO>mcD|YWH0}J(b$vResgoVN94N?BrNl0t z8iT2~*KRye$4D}{sNNjp+8stDZ7vulXhNeD zjuB20zeXbM`~ zPkPrb^;TB2mv$;Hr89wblp>uq_GU-fyC0y2Z?|4{xje&?CV>QNCh_H#ebkym9!-eeT4tW zFBE81?3kY52|VepxjfK&vT`?J5`(J2{H|=B+^`TIIAw49O#vB8B=@GlTf8`MQq>Q7 zK|&u}1P{IsAkGYPGq@R1F(JSth@RjH5DE6ZcsbR7fE$8gbr-se+4%uM#kfimYUiSL z@%5teRj<0?vee2l6{de)C<2mdBNOWt`j!tZBJ(>*PaU)ezYwq_kxT{|PabXWGx|E3 zV)A4PW7EBzk3cT%m_19kO30o}um+XCl$5^;R&v*|R-m$2_w3oP3M=0;*7qx**}4t5m^2e(CJ10W`Os5i1E z&tv7_@&@F${Br=)ucE!35}Hxp_XZ3GkKz%++BhhQWC;r*+IY1$8i!Xf?|#}piY6t7)TG79-#u#unz}7 zxY7ZpB zu1WCPGvlg?=pmECq_OWLDB#E$vva5Fe{jGfRb=p{CWRa%s2W z60Ws2ctEFuV*~X&Yw(KUD_y z;Dg=Hg5mP6i|IXk9Ekm->CZ2C{S!?Dw)cof7i;ZC?!qH{OS6Z;xX8c6N%vQZ@hJ{h z<$O|p%Ko{1*#Q43o<0K@4eZ!nA$=im!L2oY-ke_PK|ooHlgp$Y2a(=2p*OcjCnsW& z=w1{m*4-Fle$N~fH(u9$zeae1h8U?mDBri;H++x&9TnymhMF#s+xHo>4~ohepA3K% zYbzc0{LWnC(|?73KJmMEN;&Tkm1Wow`SF@n$+dnu^!JCZ$VJ<379|tboSyP!yEmL z)Y*IgCTH1}nPED96DwOKD+ya1y4@v06fbglgQsdEt`h)Kp~wRQGGlDkREEKode6*58kR5=r8~yW!?R+ zJFfWY`&kE%OUCnuhaP#@8P!%2ZxHuC+=wW!zmX8^e~|kJ5!A}%4Pex73f>_gfr6@s z)wOcKkwAq1n_KH3v#aIar-b+~s&w^?7Jz_~)Ig$G9)eW*rbkN0+3Y$Df_^5GZrl=A zH+L225rpSl!A-XPrW1_HfkMaRT>BfE!|D90>TS_7WLiz|1J01SwzN!xfUU=If;P*u zGPR$jtWL4}h5kIKH`VpM{}I~t!DRLMmUzABVNa2K=w$wE7}Js8vDn7tdii`lKDsH# zlSHslkoV#lYaMb?!Kq8JBL2rpv9Zo(?HOhs?2bpz#KQf9>?dVc`uWC<+<84Z!`Zsy zwK7}j+xG!2%iz4*+tu@;LOYM_>lb=`DsjXU za2)T8Zwn`hy|RuO5+9>c%ex&mV8>_@BzAb^#^?Gs5(~aYNJyK@)m43n#?Cb^nSAc- zMhUKnycu2w7-ds{PF9hw#Zq~3&z4pD!H6UjwBQXUIGkV_dfjFPtv$$lSywv*FLQMhs0C6C2cD?TW zZ*3E4%j=}He&N#>^$K8`TO?(*}>D=7I@N< zhQ&_c;>3o3hQxi9`}?)#RKY+Bc8#QOO_RuBCR&WH{!B!;g8T<;cS)0kpDO*G+NnemNH$-!ByH~Fxq3>R-RPw;avN6} z25gl4N=u)OgWukZOTPdE$bDi%r8EXqAg?hwXsxVNgzmOrRy@c=lTs8HkiI?KCoQb0 zY@I(D>D*b$yo&zm;TLbPQAvRU)HWf=L)Y-cmDVwuD4NDrE|Qz}&k3&7Bm-JBglznO zQwE~S>}<`_{At)PUrD|Td`pXCScs?YU&s7Rh3r@-4FL2A_32-&;WbqSfH>ujuZJ3~ zWcI=wd5)gtdC{NgCbK(qMhl-Rnc6x%)cT+ekT*Xvd03}s>ZFQ4ebeoew6;NB$?e}{ z`Vti|;*^^Zm3;#q!D>fq6Ikw?{8gHDQW(D)%W5jkr2clUrKY+qO&=EQw($eGBz|z( za(?-QsXRb*S+nMsh&RZkeSUgK z%0c!l@uHjH;04Y6>3&=u`9l**5^0+`ffxT=Mag^Jyf`u-WrFIkA++Yjs=6;KQ-oXR z+xyY=T-IbUd;Fuz?f3_74oohxt)#j=W2*V4<-0s`x@lm4omB}Nq3(8to$S%yk(x?J zfr<(cF#x-|3_|q2BToE4!}*B%P#N+MEk>XGrvJ!z8UKD>@)=|oBoUq7888t!!D~u` zTnQ6ftUpN}c$0J)o2{Fcb=w9ZL`32?pwN*u#KPBUnHP3(vK-cpUnYrfr3rlaJy`tc z>koBl*hfx90@ozEsTTVB{I5#2c6+CW6U(hn>sn4ia%p_9r;2GeqTlA zx5ennC(CIA@-Aav8n4L(n}M<0!s3P8PQVlEOj5k4j}UB$*#?FIN33cW&)!NHQVT3u z6*juaylT~g7oMF_Yl#u;CDb_0QTpDzRaKd30a8!CArqo}fm`fUwj#lVq^x+V> zsm}^c6ti+>egv8hIXZ>{2P*<={a@AI^gPRC8B5GlDOqIS7owuhtmyuh_wFX`mu$fD zP2C=Dg|B(^NN^j2M61bbs;k`hKJh05S(ju{O#m=i71IU@)fM$R!ES4viTnTz{YdCkA1&zbzH6{>mR zL?MS*-U zoU*^IyP;-Rotq3+n+yiMaQ9-Za+2Z(i<@B)7w6bmKoe`ez;oJ=5v4DMFW+m-XsCa7 z*eR)OjOv?rVCdJCJH3oy^M|9q)!+!zcz509nY-19Z5%J4o5=r|%v?phYx%dN#0dGA zY$z@F@OZg*4PA2Gz69-D!$(;h?_M)rF^AcYjZSJs-<@5Kg5-%7IttJ=mfQ^6;|P*L zz3U3zCb&(kZltKYVICDBpxzeZ32Ln1{CpwvZ1!lKWijs7(bDg)a#@=NelE@Mzc)K- z+0>NY77Q9;xFd7LK+`(E01~? zhdNzlX=RN8@v`_Ih88p!B9H3>FpJsjqJp-kSd)T^S%JC(h2V_@k&S5;HG&kE1yz_@ zGXMMXAeI~@)T+f(>^DMH;DPvdk<&18CFBU|r`QOK3Gqzj)xNZpFp%@chbvv&!nTav z7_bqFEPVBmye<=SgVVND54Oj^ZE&M_+goB`Q;*c3%v1cFP1MCD60{T&^b{lMw!}r3 zh@qZiTZizoOnZ;iY*PmXAL?+aeb_TxoHiP@j>Gx(>xIGU;;-j-%x%9;3~tou4{x^e zJRBcjBWC)*pY}wJt+K}KbRQx~Diq-db;W)2Y68>;I^t=&NH7Yr>B4Ng z6G^aXpiDN6X`7~Qz$ArK9HGTpcXr10gQ8gEqoQlKTPs~a>h8GfA9ePh-Sb}Xqx(;H z$Ng((@7#Cax#ygF&b_~L-+kv6@7!6263}8P>iKnuBA@v4^|Oqp7%#opRBN?SjD*6Y z)C(c|5QBc7WE4{)9~5dNC26VpWB$(j-9#&+M% z(rxCn334}AkBV&`Q8=V?RZ9+xd(4O$@T#_j>vU^bBBywLh1Zd@9w?U@cvgys>Fzgr zbpuGXtd-6gMLyf{r~G>Yr(Ruw0dHRDT&_DAa2!>GGM;BBaU`qf1^`&vvkI!M=Cdbk0hl2W#QA9o2ot{x#)DBm5aa7P;4bFMCy^Wf10WJibzZdA{e z6>RhsUM@FZJ+b%mM{2d-l0^>(46#Y;j=p4@$*0x z58wJ@5PP6P>(L;?dNtU=*SG(HU`@_72sdzQ`MI~W-_9#i_>Q1%VPd`^>|4hYAKFJ6 zbK-y}APq~@&Ls`^n_8FXAg}2n@m{FSDDCU*>C7FKeQ=3x*4;k(LD~=5%5&Ir&-9-o z%l76?SM2_adM@Dja7)$h{vpyxM0{i_jh_&(*Cl7wdrB$GwJzelU{k8JHx8$e3JpTV ze-lh_Rz9qM6r1)%DV2F5v!?V1 zdrP0SOy$*-JzHbmviAl5-s%(0pTBAO{M%Q)e5BSap_iDB&^qrb!kbNaXY#x7B2B}H z6ls#FFVcNe(lwLs#f!XRt9NIszxVCHt+x+LW3&pwC>5%>qb=^f7I$w;*SyQy@V39V zFYwI8=IE2b%xDFc8_K^_M3U}bXoa3G}vubtfW zeyEO3-i{0yq&tT`x~OdD4gG}ws;?CLMIT=0)?Si_$BEVb)8)E$ZuqS_X(pLQLh#xV z7GT_H6lexzP-$ck@~D=L7c4)nTE5uFO^LGNMAhZQ#s1^GG?OaL-2$kKM!?aX0?wU6 z&SGD7IZ-u{SWpV5$77d&^>rM46>`Q49`OZ^3MT#=>w4_T{@=j=IszE{>TbZZO~mC7 zW+PVyYBZ$dDPHEMi3Wd?$r1gXis7|rr$SbR=^++42((i|H!1?bxXP9NP~-(c$cpLh zVGuO%AACcgaakpDWBRvNpI&QnWfyXyDGx_IO2Ns@YlI)TqMQ9-PWf&N1KDTt{g4xM z%~Y&FsKPIHBebnDAc2Ga@yd4{rXyDZYLtM(PX=T+z$1QP5c!kF3+zz_tOk@N)a;IH z%WC)8;owg|r3fXTACQ?c^xm*FkmJUSrV5I=*1%lrVe6T@1=O;88UmQURAqWAYK=)1 zCUYj_D>o?E9no_)QTxH8Or%Rd0(Wg?V7B#ejyu{Hh+EN5s7z(%B5$N-^F~7K9Mk4Re3OtLWgt{eqkUv#mbpqx z!%Z>}yQ_|Z8<6tjbhIRa=<1?)0Ad&J<9P_eNI@TyUd@EOz+^Vp49aLM7fvZC*Z`I| zXs6cfsish~WS!`ThyZ3=uQpqL?>`{>&9U3p2NAl%T!KOgPj1nSiHZ(m_Yp5??7vdcsq70+S9SCc*LD^WAAVNVpUVfSVA5O#*ucc14)%RKu=F)3LhCfk#s!UnjMD z==%?81RhO!$c04;GZODoBd9A95pmE`%qWS3xr;ZZzOav?NFA&e0!8bI!;s-pJXSXZ z&q%bxu!s+qOhnR+DPm_jNe~gPktG5l@XC!T-OhB_oD}w8z(_!J1^JL1^Rzix<`vtI zq&)Fd{8XujoTtY}5^{Z8c7zw^ZQ77&E2(n#HnGW1`^YijEbezHoxV59b7#3awr)Yt zyqQRrAL8kTdEskKo4Rdja4Kq%-R?msk(sm>oxXv-vSIrZm>Zu&c46TTSK(P*V@pX2 z#wlZHYTI;cP + + @android:color/system_accent1_400 + @android:color/system_neutral1_900 + @android:color/system_accent1_100 + @android:color/system_accent2_50 + @android:color/system_accent2_50 + \ No newline at end of file diff --git a/common/src/androidMain/res/values/colors.xml b/common/src/androidMain/res/values/colors.xml new file mode 100644 index 00000000..e495e993 --- /dev/null +++ b/common/src/androidMain/res/values/colors.xml @@ -0,0 +1,22 @@ + + + #FF219BCC + #FF191C1E + #FFC1E8FF + #FFE0F3FF + #FFE0F3FF + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + #43a047 + + + #333333 + #738182 + #efeff4 + \ No newline at end of file diff --git a/common/src/androidMain/res/values/ids.xml b/common/src/androidMain/res/values/ids.xml new file mode 100644 index 00000000..a4337b8f --- /dev/null +++ b/common/src/androidMain/res/values/ids.xml @@ -0,0 +1,5 @@ + + 1100 + 1200 + 1300 + \ No newline at end of file diff --git a/common/src/androidMain/res/values/integers.xml b/common/src/androidMain/res/values/integers.xml new file mode 100644 index 00000000..ab26ee61 --- /dev/null +++ b/common/src/androidMain/res/values/integers.xml @@ -0,0 +1,3 @@ + + 10000000000 + \ No newline at end of file diff --git a/common/src/androidMain/res/values/strings.xml b/common/src/androidMain/res/values/strings.xml new file mode 100644 index 00000000..0dfb9ae0 --- /dev/null +++ b/common/src/androidMain/res/values/strings.xml @@ -0,0 +1,27 @@ + + Keyguard + + com.artemchep.keyguard.UPLOAD_ATTACHMENTS + Uploading attachments + Uploading attachments + Uploading attachments + + com.artemchep.keyguard.DOWNLOAD_ATTACHMENTS + Download attachments + Downloading attachments + + com.artemchep.keyguard.CLIPBOARD + Clipboard + + com.artemchep.keyguard.SYNC_VAULT + Sync vault + Syncing vault + + About + Keyguard form autofilling + Unlock Keyguard + Enable autofilling to quickly fill out forms in other apps + Open Keyguard + Set default autofill service + Autofill settings + \ No newline at end of file diff --git a/common/src/androidMain/res/values/themes.xml b/common/src/androidMain/res/values/themes.xml new file mode 100644 index 00000000..8c5bb04a --- /dev/null +++ b/common/src/androidMain/res/values/themes.xml @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file diff --git a/common/src/androidMain/res/xml/backup_data_extraction_rules.xml b/common/src/androidMain/res/xml/backup_data_extraction_rules.xml new file mode 100644 index 00000000..cc7fa1e6 --- /dev/null +++ b/common/src/androidMain/res/xml/backup_data_extraction_rules.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/common/src/androidMain/res/xml/backup_full_backup_content.xml b/common/src/androidMain/res/xml/backup_full_backup_content.xml new file mode 100644 index 00000000..80b98060 --- /dev/null +++ b/common/src/androidMain/res/xml/backup_full_backup_content.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/common/src/androidMain/res/xml/config_autofill_service.xml b/common/src/androidMain/res/xml/config_autofill_service.xml new file mode 100644 index 00000000..389579ba --- /dev/null +++ b/common/src/androidMain/res/xml/config_autofill_service.xml @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/common/src/androidMain/res/xml/config_credential_service.xml b/common/src/androidMain/res/xml/config_credential_service.xml new file mode 100644 index 00000000..13f432e3 --- /dev/null +++ b/common/src/androidMain/res/xml/config_credential_service.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/common/src/androidMain/res/xml/network_configuration.xml b/common/src/androidMain/res/xml/network_configuration.xml new file mode 100644 index 00000000..03fd745d --- /dev/null +++ b/common/src/androidMain/res/xml/network_configuration.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + bitwarden.com + bitwarden.eu + + + + + \ No newline at end of file diff --git a/common/src/androidMain/res/xml/provider_paths.xml b/common/src/androidMain/res/xml/provider_paths.xml new file mode 100644 index 00000000..c2271212 --- /dev/null +++ b/common/src/androidMain/res/xml/provider_paths.xml @@ -0,0 +1,6 @@ + + + + diff --git a/common/src/androidMain/res/xml/shortcuts.xml b/common/src/androidMain/res/xml/shortcuts.xml new file mode 100644 index 00000000..364daafb --- /dev/null +++ b/common/src/androidMain/res/xml/shortcuts.xml @@ -0,0 +1,20 @@ + + + + + + + + + diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/AppMode.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/AppMode.kt new file mode 100644 index 00000000..5c4e244d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/AppMode.kt @@ -0,0 +1,77 @@ +package com.artemchep.keyguard + +import arrow.optics.optics +import com.artemchep.keyguard.common.model.AutofillTarget +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.GeneratorContext +import com.artemchep.keyguard.common.usecase.PasskeyTarget +import com.artemchep.keyguard.feature.home.vault.add.AddRoute + +@optics +sealed interface AppMode { + companion object; + + interface HasType { + val type: DSecret.Type? + } + + data object Main : AppMode + + @optics + data class Pick( + override val type: DSecret.Type? = null, + val args: AutofillActArgs, + val onAutofill: (DSecret) -> Unit, + ) : AppMode, HasType { + companion object + } + + @optics + data class Save( + override val type: DSecret.Type? = null, + val args: AutofillSaveActArgs, + val onAutofill: (DSecret) -> Unit, + ) : AppMode, HasType { + companion object + } + + @optics + data class PickPasskey( + val target: PasskeyTarget, + val onComplete: (DSecret.Login.Fido2Credentials) -> Unit, + ) : AppMode, HasType { + companion object; + + // When in the passkeys mode only allow + // a user to see and create logins. + override val type: DSecret.Type get() = DSecret.Type.Login + } + + @optics + data class SavePasskey( + val rpId: String?, + val onComplete: (DSecret) -> Unit, + ) : AppMode, HasType { + companion object; + + // When in the passkeys mode only allow + // a user to see and create logins. + override val type: DSecret.Type get() = DSecret.Type.Login + } +} + +expect fun AddRoute.Args.Autofill.Companion.leof( + source: AutofillActArgs, +): AddRoute.Args.Autofill + +expect fun AddRoute.Args.Autofill.Companion.leof( + source: AutofillSaveActArgs, +): AddRoute.Args.Autofill + +expect val AppMode.autofillTarget: AutofillTarget? + +expect val AppMode.generatorTarget: GeneratorContext + +expect class AutofillActArgs + +expect class AutofillSaveActArgs diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/LocalAppMode.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/LocalAppMode.kt new file mode 100644 index 00000000..fee7310f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/LocalAppMode.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard + +import androidx.compose.runtime.staticCompositionLocalOf + +val LocalAppMode = staticCompositionLocalOf { + AppMode.Main +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/android/downloader/journal/CipherHistoryOpenedRepository.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/android/downloader/journal/CipherHistoryOpenedRepository.kt new file mode 100644 index 00000000..3f79072d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/android/downloader/journal/CipherHistoryOpenedRepository.kt @@ -0,0 +1,22 @@ +package com.artemchep.keyguard.android.downloader.journal + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.DCipherOpenedHistory +import com.artemchep.keyguard.provider.bitwarden.repository.BaseRepository +import kotlinx.coroutines.flow.Flow +import kotlinx.datetime.Instant + +interface CipherHistoryOpenedRepository : BaseRepository { + fun getCount(): Flow + + fun getPopular(): Flow> + + fun getRecent(): Flow> + + fun getCredentialLastUsed( + cipherId: String, + credentialId: String, + ): Flow + + fun removeAll(): IO +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/android/downloader/journal/CipherHistoryOpenedRepositoryImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/android/downloader/journal/CipherHistoryOpenedRepositoryImpl.kt new file mode 100644 index 00000000..f198685e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/android/downloader/journal/CipherHistoryOpenedRepositoryImpl.kt @@ -0,0 +1,113 @@ +package com.artemchep.keyguard.android.downloader.journal + +import app.cash.sqldelight.coroutines.asFlow +import app.cash.sqldelight.coroutines.mapToOne +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.model.DCipherOpenedHistory +import com.artemchep.keyguard.common.util.sqldelight.flatMapQueryToList +import com.artemchep.keyguard.core.store.DatabaseDispatcher +import com.artemchep.keyguard.core.store.DatabaseManager +import com.artemchep.keyguard.data.CipherUsageHistoryQueries +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.asFlow +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.map +import kotlinx.datetime.Instant +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class CipherHistoryOpenedRepositoryImpl( + private val databaseManager: DatabaseManager, + private val dispatcher: CoroutineDispatcher, +) : CipherHistoryOpenedRepository { + constructor( + directDI: DirectDI, + ) : this( + databaseManager = directDI.instance(), + dispatcher = directDI.instance(tag = DatabaseDispatcher), + ) + + override fun getCount(): Flow = + daoEffect { dao -> + dao.getCount() + } + .asFlow() + .flatMapLatest { query -> + query + .asFlow() + .mapToOne(dispatcher) + } + + override fun get(): Flow> = getRecent() + + override fun getRecent(): Flow> = + daoEffect { dao -> + dao.getDistinctRecent(100) + } + .flatMapQueryToList(dispatcher) + .map { entities -> + entities + .mapNotNull { entity -> + val instant = entity.createdAt + // should never happen + ?: return@mapNotNull null + DCipherOpenedHistory( + cipherId = entity.cipherId, + instant = instant, + ) + } + } + + override fun getPopular(): Flow> = + daoEffect { dao -> + dao.getDistinctPopular(100) + } + .flatMapQueryToList(dispatcher) + .map { entities -> + entities + .map { entity -> + DCipherOpenedHistory( + cipherId = entity.cipherId, + instant = entity.createdAt, + ) + } + } + + override fun getCredentialLastUsed( + cipherId: String, + credentialId: String, + ): Flow = + daoEffect { dao -> + dao.getUsedPasskeyById( + cipherId = cipherId, + credentialId = credentialId, + limit = 1L, + ) + } + .flatMapQueryToList(dispatcher) + .map { entities -> + val entity = entities.firstOrNull() + entity?.createdAt + } + + override fun put(model: DCipherOpenedHistory): IO = + daoEffect { dao -> + TODO() + } + + override fun removeAll(): IO = + daoEffect { dao -> + dao.deleteAll() + } + + private inline fun daoEffect( + crossinline block: suspend (CipherUsageHistoryQueries) -> T, + ): IO = databaseManager + .get() + .effectMap(dispatcher) { db -> + val dao = db.cipherUsageHistoryQueries + block(dao) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/android/downloader/journal/DownloadRepository.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/android/downloader/journal/DownloadRepository.kt new file mode 100644 index 00000000..2d1a537a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/android/downloader/journal/DownloadRepository.kt @@ -0,0 +1,28 @@ +package com.artemchep.keyguard.android.downloader.journal + +import com.artemchep.keyguard.android.downloader.journal.room.DownloadInfoEntity2 +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.provider.bitwarden.repository.BaseRepository +import kotlinx.coroutines.flow.Flow + +interface DownloadRepository : BaseRepository { + fun getById( + id: String, + ): IO + + fun getByIdFlow( + id: String, + ): Flow + + fun getByTag( + tag: DownloadInfoEntity2.AttachmentDownloadTag, + ): IO + + fun removeById( + id: String, + ): IO + + fun removeByTag( + tag: DownloadInfoEntity2.AttachmentDownloadTag, + ): IO +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/android/downloader/journal/GeneratorHistoryRepository.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/android/downloader/journal/GeneratorHistoryRepository.kt new file mode 100644 index 00000000..74e92a37 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/android/downloader/journal/GeneratorHistoryRepository.kt @@ -0,0 +1,13 @@ +package com.artemchep.keyguard.android.downloader.journal + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.DGeneratorHistory +import com.artemchep.keyguard.provider.bitwarden.repository.BaseRepository + +interface GeneratorHistoryRepository : BaseRepository { + fun removeAll(): IO + + fun removeByIds( + ids: Set, + ): IO +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/android/downloader/journal/GeneratorHistoryRepositoryImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/android/downloader/journal/GeneratorHistoryRepositoryImpl.kt new file mode 100644 index 00000000..8a68bf80 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/android/downloader/journal/GeneratorHistoryRepositoryImpl.kt @@ -0,0 +1,81 @@ +package com.artemchep.keyguard.android.downloader.journal + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.model.DGeneratorHistory +import com.artemchep.keyguard.common.util.sqldelight.flatMapQueryToList +import com.artemchep.keyguard.core.store.DatabaseDispatcher +import com.artemchep.keyguard.core.store.DatabaseManager +import com.artemchep.keyguard.data.GeneratorHistoryQueries +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GeneratorHistoryRepositoryImpl( + private val databaseManager: DatabaseManager, + private val dispatcher: CoroutineDispatcher, +) : GeneratorHistoryRepository { + constructor( + directDI: DirectDI, + ) : this( + databaseManager = directDI.instance(), + dispatcher = directDI.instance(tag = DatabaseDispatcher), + ) + + override fun get(): Flow> = + daoEffect { dao -> + dao.get(1000) + } + .flatMapQueryToList(dispatcher) + .map { entities -> + entities + .map { entity -> + DGeneratorHistory( + id = entity.id.toString(), + value = entity.value_, + createdDate = entity.createdAt, + isPassword = entity.isPassword, + isUsername = entity.isUsername, + isEmailRelay = entity.isEmailRelay == true, + ) + } + } + + override fun put(model: DGeneratorHistory): IO = + daoEffect { dao -> + dao.insert( + value_ = model.value, + createdAt = model.createdDate, + isPassword = model.isPassword, + isUsername = model.isUsername, + isEmailRelay = model.isEmailRelay, + ) + } + + override fun removeAll(): IO = + daoEffect { dao -> + dao.deleteAll() + } + + override fun removeByIds(ids: Set): IO = + daoEffect { dao -> + dao.transaction { + ids.forEach { + val id = it.toLongOrNull() + ?: return@forEach + dao.deleteByIds(id) + } + } + } + + private inline fun daoEffect( + crossinline block: suspend (GeneratorHistoryQueries) -> T, + ): IO = databaseManager + .get() + .effectMap(dispatcher) { db -> + val dao = db.generatorHistoryQueries + block(dao) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/android/downloader/journal/room/DownloadInfoEntity2.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/android/downloader/journal/room/DownloadInfoEntity2.kt new file mode 100644 index 00000000..7cd79a87 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/android/downloader/journal/room/DownloadInfoEntity2.kt @@ -0,0 +1,43 @@ +package com.artemchep.keyguard.android.downloader.journal.room + +import com.artemchep.keyguard.ui.canRetry +import kotlinx.datetime.Instant + +data class DownloadInfoEntity2( + val id: String, + val localCipherId: String, + val remoteCipherId: String?, + val attachmentId: String, + val url: String, + val urlIsOneTime: Boolean, + val name: String, + val hash: String? = null, + val createdDate: Instant, + val revisionDate: Instant = createdDate, + /** + * Encryption key used to decrypt the source + * url after downloading. + */ + val encryptionKeyBase64: String? = null, + /** + * Last downloading / decryption error, you can use it + * to find out if you can retry the downloading or if + * it should be done manually. + */ + val error: Error? = null, +) { + // must be data class + data class AttachmentDownloadTag( + val localCipherId: String, // to be able to find the right account for the item + val remoteCipherId: String?, + val attachmentId: String, + ) + + data class Error( + val code: Int, + val attempt: Int = 1, + val message: String? = null, + ) { + fun canRetry() = code.canRetry() && attempt <= 3 + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/AppWorker.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/AppWorker.kt new file mode 100644 index 00000000..24171326 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/AppWorker.kt @@ -0,0 +1,70 @@ +package com.artemchep.keyguard.common + +import com.artemchep.keyguard.common.model.MasterSession +import com.artemchep.keyguard.common.usecase.GetVaultSession +import com.artemchep.keyguard.platform.lifecycle.LeLifecycleState +import com.artemchep.keyguard.platform.lifecycle.onState +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Job +import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.collect +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.mapLatest +import kotlinx.coroutines.launch +import org.kodein.di.DirectDI +import org.kodein.di.direct +import org.kodein.di.instance + +class AppWorkerIm( + private val getVaultSession: GetVaultSession, +) : AppWorker { + constructor(directDI: DirectDI) : this( + getVaultSession = directDI.instance(), + ) + + override fun launch( + scope: CoroutineScope, + flow: Flow, + ): Job = scope.launch { + // The app should maintain the sync status + // while it is visible to a user. + flow + .onState(LeLifecycleState.STARTED) { + launchSyncManagerWhenAvailable(this) + } + .collect() + } + + private fun launchSyncManagerWhenAvailable(scope: CoroutineScope) = getVaultSession() + .map { session -> + val key = session as? MasterSession.Key + key?.di?.direct?.instance() + } + .distinctUntilChanged { old, new -> old === new } + .mapLatest { syncManager -> + if (syncManager == null) { + return@mapLatest + } + + // Launch the sync manager forever until the + // sync manager changes. + coroutineScope { + syncManager.launch(this) + } + } + .launchIn(scope) +} + +interface AppWorker { + enum class Feature { + SYNC, + } + + fun launch( + scope: CoroutineScope, + flow: Flow, + ): Job +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/NotificationsWorker.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/NotificationsWorker.kt new file mode 100644 index 00000000..5b266048 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/NotificationsWorker.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.common + +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Job + +interface NotificationsWorker { + fun launch(scope: CoroutineScope): Job +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/exception/ApiException.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/exception/ApiException.kt new file mode 100644 index 00000000..eeee7028 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/exception/ApiException.kt @@ -0,0 +1,22 @@ +package com.artemchep.keyguard.common.exception + +import com.artemchep.keyguard.provider.bitwarden.model.TwoFactorProviderArgument +import io.ktor.http.HttpStatusCode + +class ApiException( + val exception: Exception, + val code: HttpStatusCode, + val error: String, + val type: Type?, + message: String?, +) : HttpException(code, message, exception) { + sealed interface Type { + data class CaptchaRequired( + val siteKey: String, + ) : Type + + data class TwoFaRequired( + val providers: List, + ) : Type + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/exception/DecodeException.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/exception/DecodeException.kt new file mode 100644 index 00000000..48d94701 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/exception/DecodeException.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.exception + +class DecodeException( + message: String, + exception: Throwable, +) : RuntimeException(message, exception) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/exception/HttpException.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/exception/HttpException.kt new file mode 100644 index 00000000..d8589aca --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/exception/HttpException.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.common.exception + +import io.ktor.http.HttpStatusCode + +open class HttpException( + val statusCode: HttpStatusCode, + m: String?, + e: Throwable?, +) : Exception(m, e) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/exception/PasswordMismatchException.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/exception/PasswordMismatchException.kt new file mode 100644 index 00000000..7e38c958 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/exception/PasswordMismatchException.kt @@ -0,0 +1,13 @@ +package com.artemchep.keyguard.common.exception + +import com.artemchep.keyguard.common.model.NoAnalytics +import com.artemchep.keyguard.res.Res +import dev.icerock.moko.resources.StringResource + +class PasswordMismatchException( +) : RuntimeException("Invalid password"), + Readable, + NoAnalytics { + override val title: StringResource + get() = Res.strings.error_incorrect_password +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/exception/PremiumException.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/exception/PremiumException.kt new file mode 100644 index 00000000..8dc3e2f4 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/exception/PremiumException.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.exception + +import com.artemchep.keyguard.common.model.NoAnalytics + +class PremiumException : RuntimeException("The call requires Premium subscription."), NoAnalytics diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/exception/Readable.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/exception/Readable.kt new file mode 100644 index 00000000..0ed24aed --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/exception/Readable.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.exception + +import dev.icerock.moko.resources.StringResource + +interface Readable { + val title: StringResource +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/exception/SyncException.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/exception/SyncException.kt new file mode 100644 index 00000000..e89c7e0e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/exception/SyncException.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.exception + +data class SyncException( + val a: Int, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IO.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IO.kt new file mode 100644 index 00000000..a2174842 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IO.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.common.io + +import arrow.core.partially1 + +typealias IO = suspend () -> T + +fun (suspend (A) -> T).lift(block: (IO) -> IO): suspend (A) -> R = { + partially1(it) + .let(block) + .bind() +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOApplicative.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOApplicative.kt new file mode 100644 index 00000000..7398d553 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOApplicative.kt @@ -0,0 +1,59 @@ +package com.artemchep.keyguard.common.io + +import kotlinx.coroutines.withContext +import kotlin.coroutines.CoroutineContext +import kotlin.coroutines.EmptyCoroutineContext + +inline fun IO.map( + crossinline block: (T) -> R, +): IO = { + block(invoke()) +} + +inline fun IO.effectMap( + crossinline block: suspend (T) -> R, +): IO = { + block(invoke()) +} + +@Suppress("FunctionName") +suspend inline fun IO._effectMap( + crossinline block: suspend (T) -> R, +): R = block(invoke()) + +inline fun IO.effectMap( + context: CoroutineContext, + crossinline block: suspend (T) -> R, +): IO = suspend { + val value = invoke() // run previous IO + withContext(context) { + block(value) + } +} + +inline fun IO.effectTap( + context: CoroutineContext = EmptyCoroutineContext, + crossinline block: suspend (T) -> Unit, +): IO = suspend { + val value = invoke() + try { + withContext(context) { + block(value) + } + } catch (e: Throwable) { + e.throwIfFatalOrCancellation() + } + value +} + +inline fun IO.biEffectTap( + crossinline ifException: suspend (Throwable) -> Unit, + crossinline ifSuccess: suspend (T) -> Unit, +): IO = biFlatTap( + ifException = { e -> + ioEffect { ifException(e) } + }, + ifSuccess = { value -> + ioEffect { ifSuccess(value) } + }, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOBind.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOBind.kt new file mode 100644 index 00000000..bdc70fd0 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOBind.kt @@ -0,0 +1,21 @@ +package com.artemchep.keyguard.common.io + +import kotlinx.coroutines.async +import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.runBlocking +import kotlin.coroutines.CoroutineContext +import kotlin.coroutines.EmptyCoroutineContext + +fun IO.bindBlocking(): T = runBlocking { bind() } + +suspend fun IO.bind(): T = invoke() + +suspend fun List>.bind(context: CoroutineContext = EmptyCoroutineContext): List = + coroutineScope { + map { io -> + // Run all the tasks in parallel. + async(context) { + io.bind() + } + }.map { it.await() } + } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOCombine.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOCombine.kt new file mode 100644 index 00000000..1e74e255 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOCombine.kt @@ -0,0 +1,44 @@ +package com.artemchep.keyguard.common.io + +import kotlinx.coroutines.async +import kotlinx.coroutines.coroutineScope +import kotlin.coroutines.CoroutineContext +import kotlin.coroutines.EmptyCoroutineContext + +fun List>.combine( + bucket: Int, + context: CoroutineContext = EmptyCoroutineContext, +): IO> = ioEffect { + if (size >= bucket * 2) { + coroutineScope { + val bucketSize = size / + (size / bucket) + .coerceAtLeast(1) + this@combine + .windowed( + size = bucketSize, + step = bucketSize, + partialWindows = true, + ) + .map { window -> + async(context) { + sequentialCombine(window) + } + } + .flatMap { it.await() } + } + } else { + sequentialCombine(this) + } +} + +fun List>.combineSeq( + context: CoroutineContext = EmptyCoroutineContext, +): IO> = ioEffect(context = context) { + sequentialCombine(this) +} + +private suspend fun sequentialCombine( + list: List>, +): List = list + .map { io -> io.bind() } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOException.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOException.kt new file mode 100644 index 00000000..2aa88e30 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOException.kt @@ -0,0 +1,148 @@ +package com.artemchep.keyguard.common.io + +import arrow.core.Either +import arrow.core.left +import arrow.core.right +import kotlinx.coroutines.CancellationException +import kotlinx.coroutines.NonCancellable +import kotlinx.coroutines.withContext + +/** + * Wraps the [IO] into a virtual try catch block that guarantees that + * executing it will not result in a crash. + */ +fun IO.attempt(): IO> = ioEffect { + try { + invoke().right() + } catch (e: Throwable) { + e.throwIfFatalOrCancellation() + e.left() + } +} + +inline fun IO.retry(crossinline retry: suspend (Throwable, Int) -> Boolean): IO = + ioEffect { + var counter = 0 + while (true) { + try { + return@ioEffect invoke() + } catch (e: Throwable) { + e.throwIfFatalOrCancellation() + + // Ask the host whether we should + // retry or not. + val shouldExit = !retry(e, counter) + if (shouldExit) { + throw e + } + + counter += 1 + } + } + + @Suppress("ThrowableNotThrown", "UNREACHABLE_CODE") + throw IllegalStateException() + } + +fun Either.toIO(): IO = + fold( + ifLeft = ::ioRaise, + ifRight = ::io, + ) + +inline fun IO.finally( + crossinline block: () -> Unit, +): IO = ioEffect { + try { + invoke() + } finally { + block() + } +} + +inline fun IO.handleErrorWith( + crossinline predicate: (Throwable) -> Boolean = { true }, + crossinline block: (Throwable) -> IO, +): IO = ioEffect { + try { + invoke() + } catch (e: Throwable) { + e.throwIfFatalOrCancellation() + // run back-up plan + if (predicate(e)) { + val io = block(e) + io() + } else { + throw e + } + } +} + +inline fun IO.handleError( + crossinline predicate: (Throwable) -> Boolean = { true }, + crossinline block: (Throwable) -> T, +): IO = ioEffect { + try { + invoke() + } catch (e: Throwable) { + e.throwIfFatalOrCancellation() + // run back-up plan + if (predicate(e)) { + block(e) + } else { + throw e + } + } +} + +inline fun IO.handleErrorTap( + crossinline predicate: (Throwable) -> Boolean = { true }, + crossinline block: suspend (Throwable) -> Unit, +): IO = ioEffect { + try { + invoke() + } catch (e: Throwable) { + e.throwIfFatalOrCancellation() + // run back-up plan + if (predicate(e)) { + try { + block(e) + } catch (e: Throwable) { + e.throwIfFatalOrCancellation() + } + } + // throw + throw e + } +} + +fun Throwable.throwIfFatalOrCancellation() { + if (this is CancellationException) { + throw this + } + nonFatalOrThrow() +} + +private fun Throwable.nonFatalOrThrow(): Throwable = + if (this !is Error) this else throw this + +inline fun IO.bracket( + crossinline release: (T) -> IO, + crossinline use: (T) -> IO, +): IO = ioEffect { + val nothing = Any() + var resource: Any? = nothing + try { + val r = bind().also { resource = it } + use(r)() + } finally { + val res = resource + if (res !== nothing) { + // Always run the release IO + withContext(NonCancellable) { + val io = release(res as T) + io.bind() + } + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOFactory.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOFactory.kt new file mode 100644 index 00000000..cb2dd3e9 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOFactory.kt @@ -0,0 +1,38 @@ +package com.artemchep.keyguard.common.io + +import kotlinx.coroutines.withContext +import kotlin.coroutines.CoroutineContext + +/** + * Creates an [IO] that returns given + * value. + */ +fun io(value: T): IO = ioEffect { + value +} + +fun ioRaise(throwable: Throwable): IO = ioEffect { + throw throwable +} + +private val ioUnit = io(Unit) + +/** + * Creates an [IO] that returns [Unit]. + */ +fun ioUnit(): IO = ioUnit + +inline fun ioEffect( + crossinline block: suspend () -> T, +): IO = suspend { + block() +} + +inline fun ioEffect( + context: CoroutineContext, + crossinline block: suspend () -> T, +): IO = ioEffect { + withContext(context) { + block() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOFlatten.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOFlatten.kt new file mode 100644 index 00000000..8b810234 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOFlatten.kt @@ -0,0 +1,14 @@ +package com.artemchep.keyguard.common.io + +import arrow.core.Either +import arrow.core.getOrElse + +fun IO>.flattenMap(): IO = + effectMap { + it.getOrElse { throw it } + } + +fun IO>.flatten(): IO = + flatMap { + it + } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOFlow.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOFlow.kt new file mode 100644 index 00000000..25965bc4 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOFlow.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.io + +import arrow.core.Either +import arrow.core.left +import arrow.core.right +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.catch +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.map + +fun Flow.toIO(): IO = ioEffect { first() } + +fun Flow.attempt(): Flow> = this + .map> { it.right() } + .catch { + val value = it.left() + emit(value) + } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOFold.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOFold.kt new file mode 100644 index 00000000..f113d42d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOFold.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.common.io + +suspend inline fun IO.fold( + ifLeft: (Throwable) -> R, + ifRight: (T) -> R, +): R = try { + bind().let(ifRight) +} catch (e: Throwable) { + e.throwIfFatalOrCancellation() + ifLeft(e) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOFork.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOFork.kt new file mode 100644 index 00000000..d87f7249 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOFork.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.io + +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock +import kotlinx.coroutines.withContext + +fun IO.dispatchOn(dispatcher: CoroutineDispatcher): IO = { + withContext(dispatcher) { + bind() + } +} + +fun IO.mutex(mutex: Mutex): IO = { + mutex.withLock { + bind() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOLaunchIn.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOLaunchIn.kt new file mode 100644 index 00000000..20b4dc6d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOLaunchIn.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.io + +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.launch + +fun IO.launchIn(scope: CoroutineScope) = scope.launch { bind() } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOMeasure.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOMeasure.kt new file mode 100644 index 00000000..016a9419 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOMeasure.kt @@ -0,0 +1,13 @@ +package com.artemchep.keyguard.common.io + +import kotlin.time.Duration +import kotlin.time.ExperimentalTime +import kotlin.time.measureTimedValue + +inline fun IO.measure(crossinline block: suspend (Duration, T) -> Unit): IO = { + val r = measureTimedValue { + invoke() + } + block(r.duration, r.value) + r.value +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOMonad.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOMonad.kt new file mode 100644 index 00000000..4a82d123 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOMonad.kt @@ -0,0 +1,67 @@ +package com.artemchep.keyguard.common.io + +import kotlinx.coroutines.async +import kotlinx.coroutines.coroutineScope +import kotlin.coroutines.CoroutineContext +import kotlin.coroutines.EmptyCoroutineContext + +fun List>.parallel( + context: CoroutineContext = EmptyCoroutineContext, + parallelism: Int = 4, +): IO> = { + val window = size.div(parallelism).coerceAtLeast(1) + coroutineScope { + this@parallel + .windowed( + size = window, + step = window, + partialWindows = true, + ) + .map { list -> + async(context) { + list.map { io -> io.bind() } + } + } + .flatMap { it.await() } + } +} + +inline fun IO.flatMap( + crossinline block: (T) -> IO, +): IO = suspend { + val io = block(invoke()) + io() +} + +inline fun IO.flatTap( + crossinline block: (T) -> IO, +): IO = { + val value = invoke() + val io = block(value) + try { + io() + } catch (e: Throwable) { + e.throwIfFatalOrCancellation() + } + value +} + +inline fun IO.biFlatTap( + crossinline ifException: (Throwable) -> IO, + crossinline ifSuccess: (T) -> IO, +): IO = suspend { + val (identity, io) = try { + val v = invoke() + io(v) to ifSuccess(v) + } catch (e: Throwable) { + e.throwIfFatalOrCancellation() + ioRaise(e) to ifException(e) + } + // execute the "tap" io + try { + io() + } catch (e: Throwable) { + e.throwIfFatalOrCancellation() + } + identity +}.flatten() diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOShared.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOShared.kt new file mode 100644 index 00000000..1890d20c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOShared.kt @@ -0,0 +1,53 @@ +package com.artemchep.keyguard.common.io + +import arrow.core.Either +import kotlinx.coroutines.Deferred +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.async + +/** + * Returns an IO that computes the resulting value once + * and only once. + */ +fun IO.shared( + ifFailedRetryOnNextBind: Boolean = false, +): IO { + var result: Either? = null + var future: Deferred>? = null + return ioEffect { + // Fast path out when the resource is already + // loaded. + result?.also { + if (it is Either.Left && ifFailedRetryOnNextBind) { + // Reset the value, so next time we try to fetch it. + synchronized(this) { + result = null + future = null + } + return@also + } + return@ioEffect it + } + + synchronized(this) { + // Start retrieving the value of the original + // io, that will be shared across all IOs. + future ?: GlobalScope + .async { + val value = attempt().bind() + // Save the result + result = value + future = null + + value + } + .also { + // Theoretically it may NOT happen if the `async` + // completes before `also`. + if (result == null) { + future = it + } + } + }.await() + }.flattenMap() +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOTimeout.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOTimeout.kt new file mode 100644 index 00000000..675b9dda --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOTimeout.kt @@ -0,0 +1,19 @@ +package com.artemchep.keyguard.common.io + +import kotlinx.coroutines.TimeoutCancellationException +import kotlinx.coroutines.withTimeout +import java.util.concurrent.TimeoutException + +/** + * Raises the exception in IO, if the execution takes + * more than [millis]. + */ +fun IO.timeout(millis: Long): IO = { + try { + withTimeout(millis) { + invoke() + } + } catch (e: TimeoutCancellationException) { + throw TimeoutException() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOWiden.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOWiden.kt new file mode 100644 index 00000000..6bc55ff2 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/IOWiden.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.io + +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.map + +fun Flow.nullable(): Flow = map { it } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/search.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/search.kt new file mode 100644 index 00000000..b0c71cc6 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/search.kt @@ -0,0 +1,45 @@ +package com.artemchep.keyguard.common.io + +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.async +import kotlinx.coroutines.coroutineScope + +/** + * A number of queries to search though per + * coroutine. + */ +private const val PARALLEL_SEARCH_BUCKET_SIZE = 5000 + +suspend fun List.sequentialSearch( + block: suspend (T) -> R?, +) = this.mapNotNull { + block(it) +} + +suspend fun List.parallelSearch( + block: suspend (T) -> R?, +) = +// We don't want to parallelize the work unless there are +// more than 1 full bucket available. + if (size >= PARALLEL_SEARCH_BUCKET_SIZE * 2) { + coroutineScope { + val bucketSize = size / + (size / PARALLEL_SEARCH_BUCKET_SIZE) + .coerceAtLeast(1) + .coerceAtMost(6) // usually there's less than 6 threads + this@parallelSearch + .windowed( + size = bucketSize, + step = bucketSize, + partialWindows = true, + ) + .map { window -> + async(Dispatchers.Default) { + window.sequentialSearch(block) + } + } + .flatMap { it.await() } + } + } else { + sequentialSearch(block) + } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/throttle.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/throttle.kt new file mode 100644 index 00000000..59e235d4 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/io/throttle.kt @@ -0,0 +1,79 @@ +package com.artemchep.keyguard.common.io + +import kotlinx.coroutines.Job +import kotlinx.coroutines.channels.ProducerScope +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.channelFlow +import kotlinx.coroutines.flow.flow +import kotlinx.coroutines.launch + +fun Flow.throttle(timeoutMillis: Long, sendLastEvent: Boolean = true): Flow = + if (sendLastEvent) { + channelFlow { + val throttler = FlowThrottle(this, timeoutMillis) + collect { + throttler.send(it) + } + } + } else { + flow { + var lastTime = 0L + collect { value -> + val now = System.currentTimeMillis() + if (lastTime + timeoutMillis > now) { + return@collect + } + + lastTime = now + emit(value) + } + } + } + +private class FlowThrottle( + private val producer: ProducerScope, + private val timeoutMillis: Long, +) { + companion object { + private val NOTHING = Any() + } + + private var tickerJob: Job? = null + + /** + * The value that is waiting to be sent, [NOTHING] means that + * no value is waiting to be sent + */ + private var unsentValue: Any? = NOTHING + + private var lastTime = 0L + + suspend fun send(value: T) { + val now = System.currentTimeMillis() + val dt = lastTime + timeoutMillis - now + if (dt > 0L) { + // We can not send this value, so remember it and maybe send + // it next time. + unsentValue = value + // Schedule a send job. + if (tickerJob?.isActive != true) { + tickerJob = producer.launch { + delay(dt) + + val nextValue = unsentValue + if (nextValue !== NOTHING) { + send(nextValue as T) + } + } + } + return + } + + lastTime = System.currentTimeMillis() + unsentValue = NOTHING + tickerJob?.cancel() + + producer.trySend(value) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AccountId.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AccountId.kt new file mode 100644 index 00000000..b7da19b9 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AccountId.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.model + +data class AccountId( + val id: String, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AccountLastSyncStatus.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AccountLastSyncStatus.kt new file mode 100644 index 00000000..9b1d2310 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AccountLastSyncStatus.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.common.model + +import kotlinx.datetime.Instant + +data class AccountLastSyncStatus( + val date: Instant, + val error: AccountSyncError?, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AccountSyncError.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AccountSyncError.kt new file mode 100644 index 00000000..411d4230 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AccountSyncError.kt @@ -0,0 +1,14 @@ +package com.artemchep.keyguard.common.model + +sealed interface AccountSyncError { + data object Unauthorized : AccountSyncError + data object Forbidden : AccountSyncError + + /** + * Something wrong that should be fixable + * by trying to sync again. + */ + data class Unknown( + val message: String? = null, + ) : AccountSyncError +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AccountTask.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AccountTask.kt new file mode 100644 index 00000000..27cba5e8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AccountTask.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.model + +enum class AccountTask { + SYNC, + REMOVE, +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AddCipherOpenedHistoryRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AddCipherOpenedHistoryRequest.kt new file mode 100644 index 00000000..813405a3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AddCipherOpenedHistoryRequest.kt @@ -0,0 +1,10 @@ +package com.artemchep.keyguard.common.model + +import kotlinx.datetime.Clock +import kotlinx.datetime.Instant + +data class AddCipherOpenedHistoryRequest( + val accountId: String, + val cipherId: String, + val instant: Instant = Clock.System.now(), +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AddCipherUsedPasskeyHistoryRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AddCipherUsedPasskeyHistoryRequest.kt new file mode 100644 index 00000000..fe9da3f9 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AddCipherUsedPasskeyHistoryRequest.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.common.model + +import kotlinx.datetime.Clock +import kotlinx.datetime.Instant + +data class AddCipherUsedPasskeyHistoryRequest( + val accountId: String, + val cipherId: String, + val credentialId: String, + val instant: Instant = Clock.System.now(), +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AddPasskeyCipherRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AddPasskeyCipherRequest.kt new file mode 100644 index 00000000..4c2fed2c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AddPasskeyCipherRequest.kt @@ -0,0 +1,21 @@ +package com.artemchep.keyguard.common.model + +data class AddPasskeyCipherRequest( + val cipherId: String, + val data: Data, +) { + data class Data( + val credentialId: String?, + val keyType: String, // public-key + val keyAlgorithm: String, // ECDSA + val keyCurve: String, // P-256 + val keyValue: String, + val rpId: String, + val rpName: String, + val counter: Int?, + val userHandle: String, + val userName: String?, + val userDisplayName: String?, + val discoverable: Boolean, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AddUriCipherRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AddUriCipherRequest.kt new file mode 100644 index 00000000..dcb8361e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AddUriCipherRequest.kt @@ -0,0 +1,10 @@ +package com.artemchep.keyguard.common.model + +data class AddUriCipherRequest( + val cipherId: String, + // autofill + val applicationId: String? = null, + val webDomain: String? = null, + val webScheme: String? = null, + val webView: Boolean? = null, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AnyMap.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AnyMap.kt new file mode 100644 index 00000000..8d8f0c52 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AnyMap.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.model + +data class AnyMap( + val value: Map, +) : Map by value diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AppColors.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AppColors.kt new file mode 100644 index 00000000..b277328a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AppColors.kt @@ -0,0 +1,28 @@ +package com.artemchep.keyguard.common.model + +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.toArgb + +enum class AppColors( + val title: String, + val key: String, + val color: Int, +) { + RED("Red", "red", -0xbbcca), + PINK("Pink", "pink", -0x16e19d), + PURPLE("Purple", "purple", -0x63d850), + DEEP_PURPLE("Deep purple", "deep_purple", -0x98c549), + INDIGO("Indigo", "indigo", -0xc0ae4b), + BLUE("Blue", "blue", -0xde690d), + CYAN("Cyan", "cyan", -0xff6859), + TEAL("Teal", "teal", -0xff6978), + GREEN("Green", "green", -0xbc5fb9), + LIGHT_GREEN("Light green", "light_green", -0x743cb6), + LIME("Lime", "lime", -0x3223c7), + YELLOW("Yellow", "yellow", -0x14c5), + AMBER("Amber", "amber", -0x3ef9), + ORANGE("Orange", "orange", -0x6800), + DEEP_ORANGE("Deep orange", "deep_orange", -0xa8de), + BROWN("Brown", "brown", -0x86aab8), + GRAY("Gray", "gray", Color.Gray.toArgb()), +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AppFont.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AppFont.kt new file mode 100644 index 00000000..7580672e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AppFont.kt @@ -0,0 +1,10 @@ +package com.artemchep.keyguard.common.model + +enum class AppFont( + val title: String, + val key: String, +) { + ROBOTO("Roboto", "roboto"), + NOTO("Noto", "noto"), + ATKINSON_HYPERLEGIBLE("Atkinson Hyperlegible", "atkinson_hyperlegible"), +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AppTheme.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AppTheme.kt new file mode 100644 index 00000000..e7f19bd5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AppTheme.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.common.model + +enum class AppTheme( + val key: String, +) { + LIGHT("light"), + DARK("dark"), +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/Argon2Mode.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/Argon2Mode.kt new file mode 100644 index 00000000..e11addd8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/Argon2Mode.kt @@ -0,0 +1,27 @@ +package com.artemchep.keyguard.common.model + +/** + * The different Argon2 modes that differ regarding side-channel-and-memory-tradeoffs. + * Please refer to the documentation of the Argon2 project for details. + */ +enum class Argon2Mode(val identifier: Int) { + + /** + * Argon2d chooses memory depending on the password and salt. + * Not suitable for environments with potential side-channel attacks. + */ + ARGON2_D(0), + + /** + * Argon2i chooses memory independent of the password and salt + * reducing the risk from side-channels. However, the + * memory trade-off is weaker. + */ + ARGON2_I(1), + + /** + * Argon2id combines the Argon2d and Argon2i providing + * a reasonable trade-off between memory dependence and side-channels. + */ + ARGON2_ID(2), +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AttachmentId.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AttachmentId.kt new file mode 100644 index 00000000..79ac09ff --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AttachmentId.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.model + +data class AttachmentId( + val id: String, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AuthResult.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AuthResult.kt new file mode 100644 index 00000000..f3707eba --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AuthResult.kt @@ -0,0 +1,10 @@ +package com.artemchep.keyguard.common.model + +data class AuthResult( + /** + * The key used to encrypt all of the + * vaults' data. + */ + val key: MasterKey, + val token: FingerprintPassword, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AutofillHint.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AutofillHint.kt new file mode 100644 index 00000000..1958a829 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AutofillHint.kt @@ -0,0 +1,89 @@ +package com.artemchep.keyguard.common.model + +import com.artemchep.keyguard.feature.auth.common.util.REGEX_EMAIL +import com.artemchep.keyguard.feature.auth.common.util.REGEX_PHONE_NUMBER + +enum class AutofillHint { + EMAIL_ADDRESS, + USERNAME, + PASSWORD, + WIFI_PASSWORD, + POSTAL_ADDRESS, + POSTAL_CODE, + CREDIT_CARD_NUMBER, + CREDIT_CARD_SECURITY_CODE, + CREDIT_CARD_EXPIRATION_DATE, + CREDIT_CARD_EXPIRATION_MONTH, + CREDIT_CARD_EXPIRATION_YEAR, + CREDIT_CARD_EXPIRATION_DAY, + + // extended + POSTAL_ADDRESS_COUNTRY, + POSTAL_ADDRESS_REGION, + POSTAL_ADDRESS_LOCALITY, + POSTAL_ADDRESS_STREET_ADDRESS, + POSTAL_ADDRESS_EXTENDED_ADDRESS, + POSTAL_ADDRESS_EXTENDED_POSTAL_CODE, + POSTAL_ADDRESS_APT_NUMBER, + POSTAL_ADDRESS_DEPENDENT_LOCALITY, + PERSON_NAME, + PERSON_NAME_GIVEN, + PERSON_NAME_FAMILY, + PERSON_NAME_MIDDLE, + PERSON_NAME_MIDDLE_INITIAL, + PERSON_NAME_PREFIX, + PERSON_NAME_SUFFIX, + PHONE_NUMBER, + PHONE_NUMBER_DEVICE, + PHONE_COUNTRY_CODE, + PHONE_NATIONAL, + NEW_USERNAME, + NEW_PASSWORD, + GENDER, + BIRTH_DATE_FULL, + BIRTH_DATE_DAY, + BIRTH_DATE_MONTH, + BIRTH_DATE_YEAR, + SMS_OTP, + EMAIL_OTP, + APP_OTP, + NOT_APPLICABLE, + PROMO_CODE, + UPI_VPA, + + // custom + OFF, +} + +data class AutofillMatcher( + val hint: AutofillHint, + val regex: Regex? = null, +) + +val zzMap = mapOf>( + AutofillHint.USERNAME to listOf( + // Username might be your email field. + AutofillMatcher( + hint = AutofillHint.EMAIL_ADDRESS, + regex = REGEX_EMAIL, + ), + ), + AutofillHint.PASSWORD to listOf( + // Password might be your WiFi password. + AutofillMatcher( + hint = AutofillHint.WIFI_PASSWORD, + ), + ), + AutofillHint.WIFI_PASSWORD to listOf( + // WiFi password might be your regular password. + AutofillMatcher( + hint = AutofillHint.PASSWORD, + ), + ), + AutofillHint.PHONE_NUMBER to listOf( + AutofillMatcher( + hint = AutofillHint.USERNAME, + regex = REGEX_PHONE_NUMBER, + ), + ), +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AutofillTarget.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AutofillTarget.kt new file mode 100644 index 00000000..a1364e04 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/AutofillTarget.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.model + +data class AutofillTarget( + val links: List, + val hints: List, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/BarcodeImageFormat.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/BarcodeImageFormat.kt new file mode 100644 index 00000000..840bf542 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/BarcodeImageFormat.kt @@ -0,0 +1,58 @@ +package com.artemchep.keyguard.common.model + +/** + * Enumerates barcode formats known to this package. + * Please keep alphabetized. + */ +enum class BarcodeImageFormat { + /** Aztec 2D barcode format. */ + AZTEC, + + /** CODABAR 1D format. */ + CODABAR, + + /** Code 39 1D format. */ + CODE_39, + + /** Code 93 1D format. */ + CODE_93, + + /** Code 128 1D format. */ + CODE_128, + + /** Data Matrix 2D barcode format. */ + DATA_MATRIX, + + /** EAN-8 1D format. */ + EAN_8, + + /** EAN-13 1D format. */ + EAN_13, + + /** ITF (Interleaved Two of Five) 1D format. */ + ITF, + + /** MaxiCode 2D barcode format. */ + MAXICODE, + + /** PDF417 format. */ + PDF_417, + + /** QR Code 2D barcode format. */ + QR_CODE, + + /** RSS 14 */ + RSS_14, + + /** RSS EXPANDED */ + RSS_EXPANDED, + + /** UPC-A 1D format. */ + UPC_A, + + /** UPC-E 1D format. */ + UPC_E, + + /** UPC/EAN extension format. Not a stand-alone format. */ + UPC_EAN_EXTENSION, +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/BarcodeImageRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/BarcodeImageRequest.kt new file mode 100644 index 00000000..62bd9886 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/BarcodeImageRequest.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.common.model + +data class BarcodeImageRequest( + val format: BarcodeImageFormat, + val size: Size? = null, + val data: String, +) { + data class Size( + val width: Int, + val height: Int, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/BiometricAuthException.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/BiometricAuthException.kt new file mode 100644 index 00000000..3c6c5a83 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/BiometricAuthException.kt @@ -0,0 +1,110 @@ +package com.artemchep.keyguard.common.model + +class BiometricAuthException( + val code: Int, + message: String, +) : RuntimeException(message) { + companion object { + /** + * There is no error, and the user can successfully authenticate. + */ + const val BIOMETRIC_SUCCESS = 0 + + const val ERROR_UNKNOWN = 999_999 + + /** + * The hardware is unavailable. Try again later. + */ + const val ERROR_HW_UNAVAILABLE = 1 + + /** + * The sensor was unable to process the current image. + */ + const val ERROR_UNABLE_TO_PROCESS = 2 + + /** + * The current operation has been running too long and has timed out. + * + * + * This is intended to prevent programs from waiting for the biometric sensor indefinitely. + * The timeout is platform and sensor-specific, but is generally on the order of ~30 seconds. + */ + const val ERROR_TIMEOUT = 3 + + /** + * The operation can't be completed because there is not enough device storage remaining. + */ + const val ERROR_NO_SPACE = 4 + + /** + * The operation was canceled because the biometric sensor is unavailable. This may happen when + * the user is switched, the device is locked, or another pending operation prevents it. + */ + const val ERROR_CANCELED = 5 + + /** + * The operation was canceled because the API is locked out due to too many attempts. This + * occurs after 5 failed attempts, and lasts for 30 seconds. + */ + const val ERROR_LOCKOUT = 7 + + /** + * The operation failed due to a vendor-specific error. + * + * + * This error code may be used by hardware vendors to extend this list to cover errors that + * don't fall under one of the other predefined categories. Vendors are responsible for + * providing the strings for these errors. + * + * + * These messages are typically reserved for internal operations such as enrollment but may + * be used to express any error that is not otherwise covered. In this case, applications are + * expected to show the error message, but they are advised not to rely on the message ID, since + * this may vary by vendor and device. + */ + const val ERROR_VENDOR = 8 + + /** + * The operation was canceled because [.ERROR_LOCKOUT] occurred too many times. Biometric + * authentication is disabled until the user unlocks with their device credential (i.e. PIN, + * pattern, or password). + */ + const val ERROR_LOCKOUT_PERMANENT = 9 + + /** + * The user canceled the operation. + * + * + * Upon receiving this, applications should use alternate authentication, such as a password. + * The application should also provide the user a way of returning to biometric authentication, + * such as a button. + */ + const val ERROR_USER_CANCELED = 10 + + /** + * The user does not have any biometrics enrolled. + */ + const val ERROR_NO_BIOMETRICS = 11 + + /** + * The device does not have the required authentication hardware. + */ + const val ERROR_HW_NOT_PRESENT = 12 + + /** + * The user pressed the negative button. + */ + const val ERROR_NEGATIVE_BUTTON = 13 + + /** + * The device does not have pin, pattern, or password set up. + */ + const val ERROR_NO_DEVICE_CREDENTIAL = 14 + + /** + * A security vulnerability has been discovered with one or more hardware sensors. The + * affected sensor(s) are unavailable until a security update has addressed the issue. + */ + const val ERROR_SECURITY_UPDATE_REQUIRED = 15 + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/BiometricAuthPrompt.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/BiometricAuthPrompt.kt new file mode 100644 index 00000000..5222225d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/BiometricAuthPrompt.kt @@ -0,0 +1,32 @@ +package com.artemchep.keyguard.common.model + +import arrow.core.Either +import com.artemchep.keyguard.feature.localization.TextHolder +import com.artemchep.keyguard.platform.LeCipher + +sealed interface PureBiometricAuthPrompt + +class BiometricAuthPrompt( + val title: TextHolder, + val text: TextHolder? = null, + val cipher: LeCipher, + /** + * Called when the user either failed the authentication or + * successfully passed it. + */ + val onComplete: ( + result: Either, + ) -> Unit, +) : PureBiometricAuthPrompt + +class BiometricAuthPromptSimple( + val title: TextHolder, + val text: TextHolder? = null, + /** + * Called when the user either failed the authentication or + * successfully passed it. + */ + val onComplete: ( + result: Either, + ) -> Unit, +) : PureBiometricAuthPrompt diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/BiometricPurpose.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/BiometricPurpose.kt new file mode 100644 index 00000000..7eef99fc --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/BiometricPurpose.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.common.model + +sealed interface BiometricPurpose { + data object Encrypt : BiometricPurpose + + data class Decrypt( + val iv: DKey, + ) : BiometricPurpose +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/BiometricStatus.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/BiometricStatus.kt new file mode 100644 index 00000000..acc9a825 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/BiometricStatus.kt @@ -0,0 +1,16 @@ +package com.artemchep.keyguard.common.model + +import com.artemchep.keyguard.platform.LeCipher + +sealed interface BiometricStatus { + class Available( + /** + * Creates a cipher to use with a biometric + * prompt. + */ + val createCipher: (BiometricPurpose) -> LeCipher, + val deleteCipher: () -> Unit, + ) : BiometricStatus + + data object Unavailable : BiometricStatus +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CheckPasswordLeakRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CheckPasswordLeakRequest.kt new file mode 100644 index 00000000..1cfb0dc5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CheckPasswordLeakRequest.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.model + +data class CheckPasswordLeakRequest( + val password: String, + val cache: Boolean = true, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CheckPasswordSetLeakRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CheckPasswordSetLeakRequest.kt new file mode 100644 index 00000000..93a6e863 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CheckPasswordSetLeakRequest.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.model + +data class CheckPasswordSetLeakRequest( + val passwords: Set, + val cache: Boolean = true, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CheckUsernameLeakRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CheckUsernameLeakRequest.kt new file mode 100644 index 00000000..2c57d616 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CheckUsernameLeakRequest.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.model + +data class CheckUsernameLeakRequest( + val accountId: AccountId, + val username: String, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CipherFieldSwitchToggleRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CipherFieldSwitchToggleRequest.kt new file mode 100644 index 00000000..0cc0c213 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CipherFieldSwitchToggleRequest.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.model + +data class CipherFieldSwitchToggleRequest( + val fieldIndex: Int, + val fieldName: String?, + val value: Boolean, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CipherHistoryType.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CipherHistoryType.kt new file mode 100644 index 00000000..10aafdc2 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CipherHistoryType.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.model + +object CipherHistoryType { + const val OPENED = 0L + const val USED_AUTOFILL = 1L + const val USED_PASSKEY = 2L +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CipherId.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CipherId.kt new file mode 100644 index 00000000..f4a63bfc --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CipherId.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.model + +data class CipherId( + val id: String, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CipherOpenedHistoryMode.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CipherOpenedHistoryMode.kt new file mode 100644 index 00000000..5d585513 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CipherOpenedHistoryMode.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.model + +sealed interface CipherOpenedHistoryMode { + data object Recent : CipherOpenedHistoryMode + data object Popular : CipherOpenedHistoryMode +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CreditCardType.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CreditCardType.kt new file mode 100644 index 00000000..8fcf080b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CreditCardType.kt @@ -0,0 +1,223 @@ +// The MIT License (MIT) +// +// Copyright (c) 2015 Ben Drucker +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +package com.artemchep.keyguard.common.model + +import com.artemchep.keyguard.res.Res +import dev.icerock.moko.resources.ImageResource +import kotlinx.collections.immutable.persistentListOf + +// Thanks to +// https://github.com/bendrucker/creditcards-types/ +// for providing these beautiful regex patterns. +// +// Currently based on +// https://github.com/bendrucker/creditcards-types/commit/d3d1d11ea33afd97f56f3862c84adae4000ca032 +// +// Images of cards +// https://github.com/aaronfagan/svg-credit-card-payment-icons + +data class CreditCardType( + val name: String, + val icon: ImageResource? = null, + val digits: IntRange = 16..16, + val csc: IntRange = 3..3, + /** + * `true` if the credit card number uses the Luhn algorithm, + * `false` otherwise. + * + * See: https://en.wikipedia.org/wiki/Luhn_algorithm + */ + val luhn: Boolean = true, + /** A regular expression for validating a full card number */ + val pattern: Regex, + /** A regular expression for guessing the card type from a partial number */ + val eagerPattern: Regex, + /** + * A regular expression for separating the card number into groups. Can be + * used for formatting purposes. + */ + val groupPattern: Regex? = null, +) + +val creditCardVisa = CreditCardType( + name = "Visa", + icon = Res.images.ic_card_visa, + digits = 13..19, + pattern = "^4\\d{12}(\\d{3}|\\d{6})?\$".toRegex(), + eagerPattern = "^4".toRegex(), + groupPattern = "(\\d{1,4})(\\d{1,4})?(\\d{1,4})?(\\d{1,4})?(\\d{1,3})?".toRegex(), +) + +val creditCardAmericanExpress = CreditCardType( + name = "American Express", + icon = Res.images.ic_card_amex, + digits = 15..15, + csc = 4..4, + pattern = "^3[47]\\d{13}\$".toRegex(), + eagerPattern = "^3[47]".toRegex(), + groupPattern = "(\\d{1,4})(\\d{1,6})?(\\d{1,5})?".toRegex(), +) + +val creditCardDankort = CreditCardType( + name = "Dankort", + pattern = "^5019\\d{12}\$".toRegex(), + eagerPattern = "^5019".toRegex(), +) + +val creditCardDinersClub = CreditCardType( + name = "Diners Club", + icon = Res.images.ic_card_diners, + digits = 14..19, + pattern = "^3(0[0-5]|[68]\\d)\\d{11,16}\$".toRegex(), + eagerPattern = "^3(0|[68])".toRegex(), + groupPattern = "(\\d{1,4})?(\\d{1,6})?(\\d{1,9})?".toRegex(), +) + +val creditCardDiscover = CreditCardType( + name = "Discover", + icon = Res.images.ic_card_discover, + pattern = "^6(011(0[0-9]|[2-4]\\d|74|7[7-9]|8[6-9]|9[0-9])|4[4-9]\\d{3}|5\\d{4})\\d{10}\$".toRegex(), + eagerPattern = "^6(011(0[0-9]|[2-4]|74|7[7-9]|8[6-9]|9[0-9])|4[4-9]|5)".toRegex(), +) + +val creditCardElo = CreditCardType( + name = "Elo", + icon = Res.images.ic_card_elo, + pattern = "^(4[035]|5[0]|6[235])(6[7263]|9[90]|1[2416]|7[736]|8[9]|0[04579]|5[0])([0-9])([0-9])\\d{10}\$".toRegex(), + eagerPattern = "^(4[035]|5[0]|6[235])(6[7263]|9[90]|1[2416]|7[736]|8[9]|0[04579]|5[0])([0-9])([0-9])".toRegex(), + groupPattern = "(\\d{1,4})(\\d{1,4})?(\\d{1,4})?(\\d{1,4})?(\\d{1,3})?".toRegex(), +) + +val creditCardForbrugsforeningen = CreditCardType( + name = "Forbrugsforeningen", + pattern = "^600722\\d{10}\$".toRegex(), + eagerPattern = "^600".toRegex(), +) + +val creditCardJCB = CreditCardType( + name = "JCB", + icon = Res.images.ic_card_jcb, + pattern = "^35\\d{14}\$".toRegex(), + eagerPattern = "^35".toRegex(), +) + +val creditCardMada = CreditCardType( + name = "Mada", + digits = 16..16, + pattern = "^(4(0(0861|1757|3024|6136|6996|7(197|395)|9201)|1(2565|0621|0685|7633|9593)|2(0132|1141|281(7|8|9)|689700|8(331|67(1|2|3)))|3(1361|2328|4107|9954)|4(0(533|647|795)|5564|6(393|404|672))|5(5(036|708)|7865|7997|8456)|6(2220|854(0|1|2|3))|7(4491)|8(301(0|1|2)|4783|609(4|5|6)|931(7|8|9))|93428)|5(0(4300|6968|8160)|13213|2(0058|1076|4(130|514)|9(415|741))|3(0(060|906)|1(095|196)|2013|5(825|989)|6023|7767|9931)|4(3(085|357)|9760)|5(4180|7606|8563|8848)|8(5265|8(8(4(5|6|7|8|9)|5(0|1))|98(2|3))|9(005|206)))|6(0(4906|5141)|36120)|9682(0(1|2|3|4|5|6|7|8|9)|1(0|1)))\\d{10}\$".toRegex(), + eagerPattern = "^(4(0(0861|1757|3024|6136|6996|7(197|395)|9201)|1(2565|0621|0685|7633|9593)|2(0132|1141|281(7|8|9)|689700|8(331|67(1|2|3)))|3(1361|2328|4107|9954)|4(0(533|647|795)|5564|6(393|404|672))|5(5(036|708)|7865|7997|8456)|6(2220|854(0|1|2|3))|7(4491)|8(301(0|1|2)|4783|609(4|5|6)|931(7|8|9))|93428)|5(0(4300|6968|8160)|13213|2(0058|1076|4(130|514)|9(415|741))|3(0(060|906)|1(095|196)|2013|5(825|989)|6023|7767|9931)|4(3(085|357)|9760)|5(4180|7606|8563|8848)|8(5265|8(8(4(5|6|7|8|9)|5(0|1))|98(2|3))|9(005|206)))|6(0(4906|5141)|36120)|9682(0(1|2|3|4|5|6|7|8|9)|1(0|1)))".toRegex(), +) + +val creditCardMaestro = CreditCardType( + name = "Maestro", + icon = Res.images.ic_card_maestro, + digits = 12..19, + pattern = "^(?:5[06789]\\d\\d|(?!6011[0234])(?!60117[4789])(?!60118[6789])(?!60119)(?!64[456789])(?!65)6\\d{3})\\d{8,15}\$".toRegex(), + eagerPattern = "^(5(018|0[23]|[68])|6[37]|60111|60115|60117([56]|7[56])|60118[0-5]|64[0-3]|66)".toRegex(), + groupPattern = "(\\d{1,4})(\\d{1,4})?(\\d{1,4})?(\\d{1,4})?(\\d{1,3})?".toRegex(), +) + +val creditCardMastercard = CreditCardType( + name = "Mastercard", + icon = Res.images.ic_card_mastercard, + pattern = "^(5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)\\d{12}\$".toRegex(), + eagerPattern = "^(2[3-7]|22[2-9]|5[1-5])".toRegex(), +) + +val creditCardMeeza = CreditCardType( + name = "Meeza", + digits = 16..16, + pattern = "^5078(03|09|10|11)\\d{10}\$".toRegex(), + eagerPattern = "^5078(03|09|10|11)".toRegex(), +) + +val creditCardMir = CreditCardType( + name = "Mir", + icon = Res.images.ic_card_mir, + pattern = "^220[0-4]\\d{12}\$".toRegex(), + eagerPattern = "^220[0-4]".toRegex(), + groupPattern = "(\\d{1,4})(\\d{1,4})?(\\d{1,4})?(\\d{1,4})?(\\d{1,3})?".toRegex(), +) + +val creditCardTroy = CreditCardType( + name = "Troy", + pattern = "^9792\\d{12}\$".toRegex(), + eagerPattern = "^9792".toRegex(), +) + +val creditCardUATP = CreditCardType( + name = "UATP", + digits = 15..15, + pattern = "^1\\d{14}\$".toRegex(), + eagerPattern = "^1".toRegex(), + groupPattern = "(\\d{1,4})(\\d{1,5})?(\\d{1,6})?".toRegex(), +) + +val creditCardUnionPay = CreditCardType( + name = "UnionPay", + icon = Res.images.ic_card_unionpay, + luhn = false, + pattern = "^62[0-5]\\d{13,16}\$".toRegex(), + eagerPattern = "^62".toRegex(), + groupPattern = "(\\d{1,4})(\\d{1,4})?(\\d{1,4})?(\\d{1,4})?(\\d{1,3})?".toRegex(), +) + +// Sorted by popularity +val creditCards = persistentListOf( + creditCardVisa, + creditCardMastercard, + creditCardAmericanExpress, + creditCardDinersClub, + creditCardDiscover, + creditCardJCB, + creditCardUnionPay, + creditCardMaestro, + creditCardForbrugsforeningen, + creditCardDankort, + creditCardTroy, + creditCardElo, + creditCardMir, + creditCardUATP, + creditCardMada, + creditCardMeeza, +) + +fun List.firstOrNullByBrand( + brand: String, +) = this + .firstOrNull { + it.name.equals(brand, ignoreCase = true) + } + +fun List.firstOrNullByNumber( + number: String, +) = kotlin.run { + val digitOnlyNumber = number.replace( + regex = "\\D".toRegex(), + replacement = "", + ) + this + .firstOrNull { + it.pattern.matches(digitOnlyNumber) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CryptoHashAlgorithm.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CryptoHashAlgorithm.kt new file mode 100644 index 00000000..23d637f8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/CryptoHashAlgorithm.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.model + +enum class CryptoHashAlgorithm { + SHA_1, + SHA_256, + SHA_512, +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DAccount.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DAccount.kt new file mode 100644 index 00000000..a499eb8a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DAccount.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.common.model + +data class DAccount( + val id: AccountId, + val username: String, + val host: String, + val url: String, + val faviconServer: (String) -> String, +) : HasAccountId, Comparable { + private val comparator = compareBy( + { host }, + { username }, + { url }, + { id.id }, + ) + + override fun compareTo(other: DAccount): Int = comparator.compare(this, other) + + override fun accountId(): String = id.id +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DAccountStatus.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DAccountStatus.kt new file mode 100644 index 00000000..0163aebf --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DAccountStatus.kt @@ -0,0 +1,17 @@ +package com.artemchep.keyguard.common.model + +import com.artemchep.keyguard.common.service.permission.PermissionState + +data class DAccountStatus( + val error: Error? = null, + val pending: Pending? = null, + val pendingPermissions: List = emptyList(), +) { + data class Error( + val count: Int, + ) + + data class Pending( + val count: Int, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DCipherOpenedHistory.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DCipherOpenedHistory.kt new file mode 100644 index 00000000..8bd11fdd --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DCipherOpenedHistory.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.common.model + +import kotlinx.datetime.Clock +import kotlinx.datetime.Instant + +data class DCipherOpenedHistory( + val cipherId: String, + val instant: Instant = Clock.System.now(), +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DCollection.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DCollection.kt new file mode 100644 index 00000000..015b30cb --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DCollection.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.common.model + +import kotlinx.datetime.Instant + +data class DCollection( + val id: String, + val organizationId: String?, + val accountId: String, + val revisionDate: Instant, + val name: String, + val readOnly: Boolean, + val hidePasswords: Boolean, +) : HasAccountId, Comparable { + companion object; + + override fun accountId(): String = accountId + + override fun compareTo(other: DCollection): Int = + name.compareTo(other.name, ignoreCase = true) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DFilter.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DFilter.kt new file mode 100644 index 00000000..4b1f87b0 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DFilter.kt @@ -0,0 +1,994 @@ +package com.artemchep.keyguard.common.model + +import arrow.core.Either +import arrow.core.getOrElse +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.handleError +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.io.measure +import com.artemchep.keyguard.common.service.hibp.breaches.all.BreachesRepository +import com.artemchep.keyguard.common.service.passkey.PassKeyService +import com.artemchep.keyguard.common.service.passkey.PassKeyServiceInfo +import com.artemchep.keyguard.common.service.twofa.TwoFaService +import com.artemchep.keyguard.common.service.twofa.TwoFaServiceInfo +import com.artemchep.keyguard.common.usecase.CheckPasswordSetLeak +import com.artemchep.keyguard.common.usecase.CipherBreachCheck +import com.artemchep.keyguard.common.usecase.CipherExpiringCheck +import com.artemchep.keyguard.common.usecase.CipherIncompleteCheck +import com.artemchep.keyguard.common.usecase.CipherUnsecureUrlCheck +import com.artemchep.keyguard.common.usecase.CipherUrlDuplicateCheck +import com.artemchep.keyguard.core.store.bitwarden.exists +import com.artemchep.keyguard.feature.crashlytics.crashlyticsTap +import com.artemchep.keyguard.provider.bitwarden.entity.HibpBreachGroup +import io.ktor.http.Url +import kotlinx.datetime.Clock +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.collections.Collection +import kotlin.collections.List +import kotlin.collections.Map +import kotlin.collections.Set +import kotlin.collections.all +import kotlin.collections.any +import kotlin.collections.asSequence +import kotlin.collections.contains +import kotlin.collections.count +import kotlin.collections.emptyList +import kotlin.collections.emptyMap +import kotlin.collections.filter +import kotlin.collections.first +import kotlin.collections.firstOrNull +import kotlin.collections.forEach +import kotlin.collections.getOrElse +import kotlin.collections.indices +import kotlin.collections.isNotEmpty +import kotlin.collections.isNullOrEmpty +import kotlin.collections.map +import kotlin.collections.mapNotNull +import kotlin.collections.mapValues +import kotlin.collections.mutableMapOf +import kotlin.collections.orEmpty +import kotlin.collections.set +import kotlin.collections.toSet + +@Serializable +sealed interface DFilter { + companion object { + inline fun findOne( + filter: DFilter, + noinline predicate: (T) -> Boolean = { true }, + ): T? = findOne( + filter = filter, + target = T::class.java, + predicate = predicate, + ) + + fun findOne( + filter: DFilter, + target: Class, + predicate: (T) -> Boolean = { true }, + ): T? = _findOne( + filter = filter, + target = target, + predicate = predicate, + ).getOrNull() + + private fun _findOne( + filter: DFilter, + target: Class, + predicate: (T) -> Boolean = { true }, + ): Either = when (filter) { + is Or<*> -> { + when (filter.filters.size) { + 0 -> Either.Right(null) + 1 -> { + val f = filter.filters.first() + _findOne(f, target, predicate) + } + + else -> Either.Left(Unit) + } + } + + is And<*> -> { + val results = filter + .filters + .map { f -> + _findOne(f, target, predicate) + } + // If any of the variants has returned that + // we must abort the search then abort the search. + if (results.any { it.isLeft() }) { + // Propagate the error down the pipe. + Either.Left(Unit) + } else { + val fs = results.mapNotNull { it.getOrNull() } + when (fs.size) { + 0 -> Either.Right(null) + 1 -> Either.Right(fs.first()) + else -> Either.Left(Unit) + } + } + } + + else -> { + if (filter.javaClass == target) { + val f = filter as T + val v = predicate(f) + if (v) { + Either.Right(f) + } else { + Either.Right(null) + } + } else { + Either.Right(null) + } + } + } + } + + suspend fun prepare( + directDI: DirectDI, + ciphers: List, + ): (DSecret) -> Boolean + + suspend fun prepareFolders( + directDI: DirectDI, + folders: List, + ): (DFolder) -> Boolean = All.prepareFolders(directDI, folders) + + @Serializable + sealed interface Primitive : DFilter { + val key: String + } + + @Serializable + @SerialName("or") + data class Or( + val filters: Collection, + ) : DFilter { + override suspend fun prepare( + directDI: DirectDI, + ciphers: List, + ) = kotlin.run { + val list = filters + .map { it.prepare(directDI, ciphers) } + return@run { cipher: DSecret -> + list.isEmpty() || list.any { predicate -> predicate(cipher) } + } + } + + override suspend fun prepareFolders( + directDI: DirectDI, + folders: List, + ) = kotlin.run { + val list = filters + .map { it.prepareFolders(directDI, folders) } + return@run { folder: DFolder -> + list.isEmpty() || list.any { predicate -> predicate(folder) } + } + } + } + + @Serializable + @SerialName("and") + data class And( + val filters: Collection, + ) : DFilter { + override suspend fun prepare( + directDI: DirectDI, + ciphers: List, + ) = kotlin.run { + val list = filters + .map { it.prepare(directDI, ciphers) } + return@run { cipher: DSecret -> + list.isEmpty() || list.all { predicate -> predicate(cipher) } + } + } + + override suspend fun prepareFolders( + directDI: DirectDI, + folders: List, + ) = kotlin.run { + val list = filters + .map { it.prepareFolders(directDI, folders) } + return@run { folder: DFolder -> + list.isEmpty() || list.all { predicate -> predicate(folder) } + } + } + } + + @Serializable + @SerialName("all") + data object All : DFilter { + override suspend fun prepare( + directDI: DirectDI, + ciphers: List, + ) = ::predicateCipher + + override suspend fun prepareFolders( + directDI: DirectDI, + folders: List, + ) = ::predicateFolder + + private fun predicateCipher(cipher: DSecret) = true + + private fun predicateFolder(folder: DFolder) = true + } + + // Primitives + + @Serializable + @SerialName("by_id") + data class ById( + val id: String?, + val what: What, + ) : Primitive { + override val key: String = "$id|$what" + + @Serializable + enum class What { + @SerialName("account") + ACCOUNT, + + @SerialName("folder") + FOLDER, + + @SerialName("collection") + COLLECTION, + + @SerialName("organization") + ORGANIZATION, + } + + override suspend fun prepare( + directDI: DirectDI, + ciphers: List, + ) = ::predicateCipher + + override suspend fun prepareFolders( + directDI: DirectDI, + folders: List, + ) = ::predicateFolder + + private fun predicateCipher( + cipher: DSecret, + ) = kotlin.run { + when (what) { + What.COLLECTION -> { + // Special case: check in the set of + // collections. + return@run id in cipher.collectionIds + } + + What.ACCOUNT -> cipher.accountId + What.FOLDER -> cipher.folderId + What.ORGANIZATION -> cipher.organizationId + } == id + } + + private fun predicateFolder( + folder: DFolder, + ) = kotlin.run { + when (what) { + What.FOLDER -> folder.id + What.ACCOUNT -> folder.accountId + What.COLLECTION, + What.ORGANIZATION, + -> { + return@run true + } + } == id + } + } + + @Serializable + @SerialName("by_type") + data class ByType( + val type: DSecret.Type, + ) : Primitive { + override val key: String = "$type" + + override suspend fun prepare( + directDI: DirectDI, + ciphers: List, + ) = ::predicate + + private fun predicate( + cipher: DSecret, + ) = cipher.type == type + } + + @Serializable + @SerialName("by_otp") + data object ByOtp : Primitive { + override val key: String = "otp" + + override suspend fun prepare( + directDI: DirectDI, + ciphers: List, + ) = ::predicate + + private fun predicate( + cipher: DSecret, + ) = cipher.login?.totp != null + } + + @Serializable + @SerialName("by_attachments") + data object ByAttachments : Primitive { + override val key: String = "attachments" + + override suspend fun prepare( + directDI: DirectDI, + ciphers: List, + ) = ::predicate + + private fun predicate( + cipher: DSecret, + ) = cipher.attachments.isNotEmpty() + } + + @Serializable + @SerialName("by_passkeys") + data object ByPasskeys : Primitive { + override val key: String = "passkeys" + + override suspend fun prepare( + directDI: DirectDI, + ciphers: List, + ) = ::predicate + + private fun predicate( + cipher: DSecret, + ) = !cipher.login?.fido2Credentials.isNullOrEmpty() + } + + @Serializable + @SerialName("by_pwd_value") + data class ByPasswordValue( + val value: String?, + ) : Primitive { + override val key: String = "pwd_value|$value" + + override suspend fun prepare( + directDI: DirectDI, + ciphers: List, + ) = ::predicate + + private fun predicate( + cipher: DSecret, + ) = cipher.login?.password == value + } + + @Serializable + @SerialName("by_pwd_strength") + data class ByPasswordStrength( + val score: PasswordStrength.Score, + ) : Primitive { + override val key: String = "$score" + + override suspend fun prepare( + directDI: DirectDI, + ciphers: List, + ) = ::predicate + + private fun predicate( + cipher: DSecret, + ) = cipher.login?.passwordStrength?.score == score + } + + @Serializable + @SerialName("by_pwd_duplicates") + data object ByPasswordDuplicates : Primitive { + override val key: String = "pwd_duplicates" + + override suspend fun prepare( + directDI: DirectDI, + ciphers: List, + ) = kotlin.run { + val set = buildDuplicatesState(ciphers = ciphers) + .asSequence() + .mapNotNull { entry -> + entry.key.takeIf { entry.value > 1 } + } + .toSet() + ::predicate.partially1(set) + } + + /** Counts a number of ciphers with duplicate password */ + fun count( + directDI: DirectDI, + ciphers: List, + ) = buildDuplicatesState(ciphers = ciphers) + .asSequence() + .sumOf { entry -> + entry.value + .takeIf { it > 1 } + ?: 0 + } + + private fun buildDuplicatesState( + ciphers: List, + ): Map { + val map = mutableMapOf() + ciphers.forEach { cipher -> + val password = cipher.login?.password + if (password != null) { + val oldValue = map.getOrElse(password) { 0 } + map[password] = oldValue + 1 + } + } + return map + } + + private fun predicate( + passwords: Set, + cipher: DSecret, + ) = cipher.login?.password in passwords + } + + @Serializable + @SerialName("by_pwd_pwned") + data object ByPasswordPwned : Primitive { + override val key: String = "pwd_pwned" + + override suspend fun prepare( + directDI: DirectDI, + ciphers: List, + ) = kotlin.run { + val set = buildPwnedPasswordsState(directDI = directDI, ciphers = ciphers) + .asSequence() + .mapNotNull { entry -> + entry.key.takeIf { entry.value > 1 } + } + .toSet() + ::predicate.partially1(set) + } + + /** Counts a number of ciphers with pwned password */ + suspend fun count( + directDI: DirectDI, + ciphers: List, + ) = buildPwnedPasswordsState(directDI = directDI, ciphers = ciphers) + .asSequence() + .count { entry -> + entry.value > 1 + } + + private suspend fun buildPwnedPasswordsState( + directDI: DirectDI, + ciphers: List, + ): Map = ioEffect { + val checkPasswordSetLeak: CheckPasswordSetLeak = directDI.instance() + val passwords = ciphers + .asSequence() + .mapNotNull { cipher -> + cipher.login?.password + } + .toSet() + return@ioEffect checkPasswordSetLeak(CheckPasswordSetLeakRequest(passwords)) + .map { + it.mapValues { it.value?.occurrences ?: 0 } + } + .attempt() + .bind() + .getOrElse { emptyMap() } + } + .measure { duration, mutableMap -> + println("pwned calculated in $duration") + } + .bind() + + private fun predicate( + passwords: Set, + cipher: DSecret, + ) = cipher.login?.password in passwords + } + + @Serializable + @SerialName("by_website_pwned") + data object ByWebsitePwned : Primitive { + override val key: String = "website_pwned" + + override suspend fun prepare( + directDI: DirectDI, + ciphers: List, + ) = kotlin.run { + val set = buildDuplicatesState(directDI = directDI, ciphers = ciphers) + ::predicate.partially1(set) + } + + /** Counts a number of ciphers with pwned password */ + suspend fun count( + directDI: DirectDI, + ciphers: List, + ) = buildDuplicatesState(directDI = directDI, ciphers = ciphers) + .size + + private suspend fun buildDuplicatesState( + directDI: DirectDI, + ciphers: List, + ): Set = ioEffect { + val check: CipherBreachCheck = directDI.instance() + val repo: BreachesRepository = directDI.instance() + + val breaches = repo.get() + .handleError { + HibpBreachGroup(emptyList()) + } + .bind() + + ciphers + .filter { + check(it, breaches) + .handleError { false } + .bind() + } + .map { + it.id + } + .toSet() + } + .measure { duration, mutableMap -> + println("pwned accounts calculated in $duration") + } + .bind() + + private fun predicate( + cipherIds: Set, + cipher: DSecret, + ) = cipher.id in cipherIds + } + + @Serializable + @SerialName("by_incomplete") + data object ByIncomplete : Primitive { + override val key: String = "incomplete" + + override suspend fun prepare( + directDI: DirectDI, + ciphers: List, + ) = kotlin.run { + val ids = filterIncomplete(directDI, ciphers) + .map { it.id } + .toSet() + ::predicate.partially1(ids) + } + + private fun predicate( + ids: Set, + cipher: DSecret, + ) = cipher.id in ids + + /** Counts a number of ciphers that might be incomplete */ + fun count( + directDI: DirectDI, + ciphers: List, + ) = filterIncomplete(directDI, ciphers).count() + + private fun filterIncomplete( + directDI: DirectDI, + ciphers: List, + ) = kotlin.run { + val cipherIncompleteCheck = directDI.instance() + ciphers + .asSequence() + .filter { cipher -> + val isIncomplete = cipherIncompleteCheck(cipher) + isIncomplete + } + } + } + + @Serializable + @SerialName("by_expiring") + data object ByExpiring : Primitive { + override val key: String = "expiring" + + override suspend fun prepare( + directDI: DirectDI, + ciphers: List, + ) = kotlin.run { + val ids = filterExpiring(directDI, ciphers) + .map { it.id } + .toSet() + ::predicate.partially1(ids) + } + + private fun predicate( + ids: Set, + cipher: DSecret, + ) = cipher.id in ids + + /** Counts a number of ciphers that might be incomplete */ + fun count( + directDI: DirectDI, + ciphers: List, + ) = filterExpiring(directDI, ciphers).count() + + private fun filterExpiring( + directDI: DirectDI, + ciphers: List, + ) = kotlin.run { + val now = Clock.System.now() + val cipherExpiringCheck = directDI.instance() + ciphers + .asSequence() + .filter { cipher -> + val isExpiring = cipherExpiringCheck(cipher, now) != null + isExpiring + } + } + } + + @Serializable + @SerialName("by_unsecure_websites") + data object ByUnsecureWebsites : Primitive { + override val key: String = "unsecure_websites" + + override suspend fun prepare( + directDI: DirectDI, + ciphers: List, + ) = kotlin.run { + val ids = filterUnsecure(directDI, ciphers) + .map { it.id } + .toSet() + ::predicate.partially1(ids) + } + + private fun predicate( + ids: Set, + cipher: DSecret, + ) = cipher.id in ids + + /** Counts a number of ciphers that contain unsecure websites */ + fun count( + directDI: DirectDI, + ciphers: List, + ) = filterUnsecure(directDI, ciphers).count() + + private fun filterUnsecure( + directDI: DirectDI, + ciphers: List, + ) = kotlin.run { + val cipherUnsecureUrlCheck = directDI.instance() + ciphers + .asSequence() + .filter { cipher -> + val isUnsecure = cipher + .uris + .any { uri -> cipherUnsecureUrlCheck(uri.uri) } + isUnsecure + } + } + } + + @Serializable + @SerialName("by_tfa_websites") + data object ByTfaWebsites : Primitive { + override val key: String = "tfa_websites" + + override suspend fun prepare( + directDI: DirectDI, + ciphers: List, + ) = kotlin.run { + val ids = filterTfa( + directDI = directDI, + ciphers = ciphers, + ) + .map { it.id } + .toSet() + ::predicate.partially1(ids) + } + + private fun predicate( + ids: Set, + cipher: DSecret, + ) = cipher.id in ids + + /** Counts a number of ciphers that contain unsecure websites */ + suspend fun count( + directDI: DirectDI, + ciphers: List, + ) = filterTfa(directDI, ciphers).count() + + private suspend fun filterTfa( + directDI: DirectDI, + ciphers: List, + ) = kotlin.run { + val tfaService = directDI.instance() + val tfa = tfaService.get() + .crashlyticsTap() + .attempt() + .bind() + .getOrNull() + .orEmpty() + ciphers + .asSequence() + .filter { cipher -> + if ( + cipher.login?.totp != null || + !cipher.login?.fido2Credentials.isNullOrEmpty() && + cipher.login?.password.isNullOrEmpty() + ) { + return@filter false + } + + val isUnsecure = match(cipher, tfa).any() + isUnsecure + } + } + + fun match(cipher: DSecret, tfa: List) = cipher + .uris + .asSequence() + .mapNotNull { uri -> + val host = parseHost(uri) + ?: return@mapNotNull null + val result = tfa + .firstOrNull { host in it.domains } + result?.takeIf { "totp" in it.tfa } + } + + private fun parseHost(uri: DSecret.Uri) = if ( + uri.uri.startsWith("http://") || + uri.uri.startsWith("https://") + ) { + val parsedUri = kotlin.runCatching { + Url(uri.uri) + }.getOrElse { + // can not get the domain + null + } + parsedUri + ?.host + // The "www" subdomain is ignored in the database, however + // it's only "www". Other subdomains, such as "photos", + // should be respected. + ?.removePrefix("www.") + } else { + // can not get the domain + null + } + } + + @Serializable + @SerialName("by_passkey_websites") + data object ByPasskeyWebsites : Primitive { + override val key: String = "passkey_websites" + + override suspend fun prepare( + directDI: DirectDI, + ciphers: List, + ) = kotlin.run { + val ids = filterTfa( + directDI = directDI, + ciphers = ciphers, + ) + .map { it.id } + .toSet() + ::predicate.partially1(ids) + } + + private fun predicate( + ids: Set, + cipher: DSecret, + ) = cipher.id in ids + + /** Counts a number of ciphers that contain unsecure websites */ + suspend fun count( + directDI: DirectDI, + ciphers: List, + ) = filterTfa(directDI, ciphers).count() + + private suspend fun filterTfa( + directDI: DirectDI, + ciphers: List, + ) = kotlin.run { + val passkeyService = directDI.instance() + val tfa = passkeyService.get() + .crashlyticsTap() + .attempt() + .bind() + .getOrNull() + .orEmpty() + ciphers + .asSequence() + .filter { cipher -> + if (!cipher.login?.fido2Credentials.isNullOrEmpty()) { + return@filter false + } + + val isUnsecure = match(cipher, tfa).any() + isUnsecure + } + } + + fun match(cipher: DSecret, tfa: List) = cipher + .uris + .asSequence() + .mapNotNull { uri -> + val host = parseHost(uri) + ?: return@mapNotNull null + val result = tfa + .firstOrNull { + host in it.domains || it.domains + .any { domain -> + val endsWith = host.endsWith(domain) + if (!endsWith) { + return@any false + } + + val i = host.length - domain.length + if (i > 0) { + val leadingChar = host[i - 1] + leadingChar == '.' + } else { + false + } + } + } + result?.takeIf { "signin" in it.features } + } + + private fun parseHost(uri: DSecret.Uri) = if ( + uri.uri.startsWith("http://") || + uri.uri.startsWith("https://") + ) { + val parsedUri = kotlin.runCatching { + Url(uri.uri) + }.getOrElse { + // can not get the domain + null + } + parsedUri + ?.host + // The "www" subdomain is ignored in the database, however + // it's only "www". Other subdomains, such as "photos", + // should be respected. + ?.removePrefix("www.") + } else { + // can not get the domain + null + } + } + + @Serializable + @SerialName("by_duplicate_websites") + data object ByDuplicateWebsites : Primitive { + override val key: String = "duplicate_websites" + + override suspend fun prepare( + directDI: DirectDI, + ciphers: List, + ) = kotlin.run { + val ids = filterDuplicateWebsites( + directDI = directDI, + ciphers = ciphers, + ) + .map { it.id } + .toSet() + ::predicate.partially1(ids) + } + + private fun predicate( + ids: Set, + cipher: DSecret, + ) = cipher.id in ids + + /** Counts a number of ciphers that contain unsecure websites */ + suspend fun count( + directDI: DirectDI, + ciphers: List, + ) = filterDuplicateWebsites(directDI, ciphers).count() + + private suspend fun filterDuplicateWebsites( + directDI: DirectDI, + ciphers: List, + ) = kotlin.run { + val cipherUrlDuplicateCheck = directDI.instance() + ciphers + .filter { cipher -> + val uris = cipher.uris + if (uris.isEmpty()) { + return@filter false + } + + for (i in uris.indices) { + for (j in uris.indices) { + if (i == j) { + continue + } + + val a = uris[i] + val b = uris[j] + val duplicate = cipherUrlDuplicateCheck(a, b) + .attempt() + .bind() + .isRight { it != null } + if (duplicate) { + return@filter true + } + } + } + + false + } + } + } + + @Serializable + @SerialName("by_sync") + data class BySync( + val synced: Boolean, + ) : Primitive { + override val key: String = "$synced" + + override suspend fun prepare( + directDI: DirectDI, + ciphers: List, + ) = ::predicateCipher + + override suspend fun prepareFolders( + directDI: DirectDI, + folders: List, + ) = ::predicateFolder + + private fun predicateCipher( + cipher: DSecret, + ) = cipher.synced == synced + + private fun predicateFolder( + folder: DFolder, + ) = folder.synced == synced + } + + @Serializable + @SerialName("by_repromt") + data class ByReprompt( + val reprompt: Boolean, + ) : Primitive { + override val key: String = "$reprompt" + + override suspend fun prepare( + directDI: DirectDI, + ciphers: List, + ) = ::predicateCipher + + private fun predicateCipher( + cipher: DSecret, + ) = cipher.reprompt == reprompt + } + + @Serializable + @SerialName("by_error") + data class ByError( + val error: Boolean, + ) : Primitive { + override val key: String = "$error" + + override suspend fun prepare( + directDI: DirectDI, + ciphers: List, + ) = ::predicateCipher + + override suspend fun prepareFolders( + directDI: DirectDI, + folders: List, + ) = ::predicateFolder + + private fun predicateCipher( + cipher: DSecret, + ) = cipher.service.error.exists(cipher.revisionDate) == error + + private fun predicateFolder( + folder: DFolder, + ) = folder.service.error.exists(folder.revisionDate) == error + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DFolder.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DFolder.kt new file mode 100644 index 00000000..70b59f61 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DFolder.kt @@ -0,0 +1,21 @@ +package com.artemchep.keyguard.common.model + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenService +import com.artemchep.keyguard.core.store.bitwarden.exists +import kotlinx.datetime.Instant + +data class DFolder( + val id: String, + val accountId: String, + val revisionDate: Instant, + val service: BitwardenService, + val deleted: Boolean, + val synced: Boolean, + val name: String, +) : HasAccountId { + companion object; + + val hasError = service.error.exists(revisionDate) + + override fun accountId(): String = accountId +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DFolderTree.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DFolderTree.kt new file mode 100644 index 00000000..9f7c71da --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DFolderTree.kt @@ -0,0 +1,21 @@ +package com.artemchep.keyguard.common.model + +data class DFolderTree( + val folder: DFolder, + val hierarchy: List, +) { + data class Node( + val name: String, + val folder: DFolder, + ) +} + +data class DFolderTree2( + val folder: T, + val hierarchy: List>, +) { + data class Node( + val name: String, + val folder: T, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DGeneratorEmailRelay.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DGeneratorEmailRelay.kt new file mode 100644 index 00000000..8b98fd3c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DGeneratorEmailRelay.kt @@ -0,0 +1,22 @@ +package com.artemchep.keyguard.common.model + +import com.artemchep.keyguard.ui.icons.generateAccentColors +import kotlinx.collections.immutable.ImmutableMap +import kotlinx.datetime.Instant + +data class DGeneratorEmailRelay( + val id: String? = null, + val name: String, + val type: String, + val data: ImmutableMap, + val createdDate: Instant, +) : Comparable { + val accentColor = run { + val colors = generateAccentColors(name) + colors + } + + override fun compareTo(other: DGeneratorEmailRelay): Int { + return name.compareTo(other.name, ignoreCase = true) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DGeneratorHistory.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DGeneratorHistory.kt new file mode 100644 index 00000000..52153a5d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DGeneratorHistory.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.common.model + +import kotlinx.datetime.Instant + +data class DGeneratorHistory( + val id: String? = null, + val value: String, + val createdDate: Instant, + val isPassword: Boolean, + val isUsername: Boolean, + val isEmailRelay: Boolean, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DHibp.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DHibp.kt new file mode 100644 index 00000000..b00f041b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DHibp.kt @@ -0,0 +1,19 @@ +package com.artemchep.keyguard.common.model + +import kotlinx.datetime.Instant + +data class DHibpC( + val leaks: List, +) + +data class DHibp( + val title: String, + val name: String, + val website: String, + val icon: String, + val description: String, + val count: Int?, + val occurredAt: Instant?, + val reportedAt: Instant?, + val dataClasses: List, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DKey.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DKey.kt new file mode 100644 index 00000000..cb0155b0 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DKey.kt @@ -0,0 +1,27 @@ +package com.artemchep.keyguard.common.model + +data class DKey( + val byteArray: ByteArray, +) { + // /** +// * Lazily encoded byte array into a +// * form of base 64 symbols. +// */ +// val base64 by lazy { +// Base64.encode(byteArray).let(::String) +// } + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other == null || this::class != other::class) return false + + other as DKey + + if (!byteArray.contentEquals(other.byteArray)) return false + + return true + } + + override fun hashCode(): Int { + return byteArray.contentHashCode() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DMeta.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DMeta.kt new file mode 100644 index 00000000..4a244823 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DMeta.kt @@ -0,0 +1,25 @@ +package com.artemchep.keyguard.common.model + +import kotlinx.datetime.Instant + +data class DMeta( + val accountId: AccountId, + val lastSyncTimestamp: Instant? = null, + val lastSyncResult: LastSyncResult? = null, +) : HasAccountId { + override fun accountId(): String = accountId.id + + sealed interface LastSyncResult { + data object Success : LastSyncResult + + data class Failure( + val timestamp: Instant, + val reason: String? = null, + /** + * `true` if you should ask user to authenticate to use + * this account, `false` otherwise. + */ + val requiresAuthentication: Boolean = false, + ) : LastSyncResult + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DOrganization.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DOrganization.kt new file mode 100644 index 00000000..a494ceda --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DOrganization.kt @@ -0,0 +1,21 @@ +package com.artemchep.keyguard.common.model + +import com.artemchep.keyguard.ui.icons.AccentColors +import kotlinx.datetime.Instant + +data class DOrganization( + val id: String, + val accountId: String, + val revisionDate: Instant, + val keyBase64: String, + val name: String, + val accentColor: AccentColors, + val selfHost: Boolean, +) : HasAccountId, Comparable { + companion object; + + override fun accountId(): String = accountId + + override fun compareTo(other: DOrganization): Int = + name.compareTo(other.name, ignoreCase = true) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DProfile.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DProfile.kt new file mode 100644 index 00000000..261c5f8c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DProfile.kt @@ -0,0 +1,30 @@ +package com.artemchep.keyguard.common.model + +import com.artemchep.keyguard.ui.icons.AccentColors + +data class DProfile( + val accountId: String, + val profileId: String, + val keyBase64: String, + val privateKeyBase64: String, + val accountHost: String, + val accountUrl: String, + val email: String, + val emailVerified: Boolean, + val accentColor: AccentColors, + val name: String, + val premium: Boolean, + val securityStamp: String?, + val twoFactorEnabled: Boolean, + val masterPasswordHint: String?, + val unofficialServer: Boolean, +) : HasAccountId, Comparable { + private val comparator = compareBy( + { name }, + { email }, + ) + + override fun compareTo(other: DProfile): Int = comparator.compare(this, other) + + override fun accountId(): String = accountId +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DSecret.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DSecret.kt new file mode 100644 index 00000000..7f8fec10 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DSecret.kt @@ -0,0 +1,602 @@ +@file:JvmName("DSecretFun") + +package com.artemchep.keyguard.common.model + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.CreditCard +import androidx.compose.material.icons.outlined.Password +import androidx.compose.material.icons.outlined.PermIdentity +import androidx.compose.ui.graphics.Color +import arrow.optics.optics +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.toIO +import com.artemchep.keyguard.common.usecase.GetTotpCode +import com.artemchep.keyguard.core.store.bitwarden.BitwardenService +import com.artemchep.keyguard.core.store.bitwarden.exists +import com.artemchep.keyguard.feature.auth.common.util.REGEX_EMAIL +import com.artemchep.keyguard.feature.auth.common.util.REGEX_PHONE_NUMBER +import com.artemchep.keyguard.feature.favicon.FaviconUrl +import com.artemchep.keyguard.provider.bitwarden.usecase.util.canDelete +import com.artemchep.keyguard.provider.bitwarden.usecase.util.canEdit +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.icons.KeyguardNote +import com.artemchep.keyguard.ui.icons.Stub +import com.artemchep.keyguard.ui.icons.generateAccentColors +import kotlinx.coroutines.flow.map +import kotlinx.datetime.Instant + +@optics +data class DSecret( + val id: String, + val accountId: String, + val folderId: String?, + val organizationId: String?, + val collectionIds: Set, + val revisionDate: Instant, + val createdDate: Instant?, + val deletedDate: Instant?, + val service: BitwardenService, + // common + val name: String, + val notes: String, + val favorite: Boolean, + val reprompt: Boolean, + val synced: Boolean, + val uris: List = emptyList(), + val fields: List = emptyList(), + val attachments: List = emptyList(), + // types + val type: Type, + val login: Login? = null, + val card: Card? = null, + val identity: Identity? = null, +) : HasAccountId { + companion object { + private const val ignoreLength = 3 + + private val ignoreWords = setOf( + // popular domains + "com", + "tk", + "cn", + "de", + "net", + "uk", + "org", + "nl", + "icu", + "ru", + "eu", + // rising domains + "icu", + "top", + "xyz", + "site", + "online", + "club", + "wang", + "vip", + "shop", + "work", + ) + } + + val hasError = service.error.exists(revisionDate) + + val deleted: Boolean get() = deletedDate != null + + val accentLight: Color + val accentDark: Color + + init { + val colors = generateAccentColors(service.remote?.id ?: id) + accentLight = colors.light + accentDark = colors.dark + } + + val favicon: FaviconUrl? = kotlin.run { + val siteUrl = uris + .firstOrNull { uri -> + uri.uri.startsWith("http://") || + uri.uri.startsWith("https://") + } + ?.uri + siteUrl?.let { + FaviconUrl( + serverId = accountId, + url = it, + ) + } + } + + data class SearchToken( + val priority: Float, + val value: String, + ) + + val tokens = kotlin.run { + val out = mutableListOf() + // Split the name into tokens + name.lowercase().replace("[\\.\\,\\[\\]\\!]".toRegex(), " ") + .split(' ') + .forEach { + if (it.length <= ignoreLength || it in ignoreWords) { + return@forEach + } + out += SearchToken( + priority = 0.8f, + value = it, + ) + } + // Extract domain name from the username + // if that looks like an email. + if (login?.username != null) { + val tokens = login.username.split("@") + if (tokens.size == 2) { // this is an email + val domain = tokens[1] + domain + .lowercase() + .split('.') + .forEach { + if (it.length <= ignoreLength || it in ignoreWords) { + return@forEach + } + out += SearchToken( + priority = 1f, + value = it, + ) + } + // an email might contain extra info separated by the + sign + val username = tokens[0] + val extras = username.split('+') + if (extras.size == 2) { + val extrasInfo = extras[1] + extrasInfo + .lowercase() + .split('.') + .forEach { + if (it.length <= ignoreLength || it in ignoreWords) { + return@forEach + } + out += SearchToken( + priority = 0.8f, + value = it, + ) + } + } + } + } + out + } + + override fun accountId(): String = accountId + + enum class Type { + None, + Login, + SecureNote, + Card, + Identity, + } + + sealed interface Attachment { + val id: String + val url: String? + + data class Remote( + override val id: String, + override val url: String?, + val remoteCipherId: String, + val fileName: String, + val keyBase64: String?, + val size: Long, + ) : Attachment { + companion object + } + + data class Local( + override val id: String, + override val url: String, + val fileName: String, + val size: Long? = null, + ) : Attachment { + companion object + } + } + + @optics + data class Field( + val name: String? = null, + val value: String? = null, + val linkedId: LinkedId? = null, + val type: Type, + ) { + companion object; + + enum class Type { + Text, + Hidden, + Boolean, + Linked, + } + + enum class LinkedId( + val type: DSecret.Type, + ) { + Login_Username(type = DSecret.Type.Login), + Login_Password(type = DSecret.Type.Login), + + // card + Card_CardholderName(type = DSecret.Type.Card), + Card_ExpMonth(type = DSecret.Type.Card), + Card_ExpYear(type = DSecret.Type.Card), + Card_Code(type = DSecret.Type.Card), + Card_Brand(type = DSecret.Type.Card), + Card_Number(type = DSecret.Type.Card), + + // identity + Identity_Title(type = DSecret.Type.Identity), + Identity_MiddleName(type = DSecret.Type.Identity), + Identity_Address1(type = DSecret.Type.Identity), + Identity_Address2(type = DSecret.Type.Identity), + Identity_Address3(type = DSecret.Type.Identity), + Identity_City(type = DSecret.Type.Identity), + Identity_State(type = DSecret.Type.Identity), + Identity_PostalCode(type = DSecret.Type.Identity), + Identity_Country(type = DSecret.Type.Identity), + Identity_Company(type = DSecret.Type.Identity), + Identity_Email(type = DSecret.Type.Identity), + Identity_Phone(type = DSecret.Type.Identity), + Identity_Ssn(type = DSecret.Type.Identity), + Identity_Username(type = DSecret.Type.Identity), + Identity_PassportNumber(type = DSecret.Type.Identity), + Identity_LicenseNumber(type = DSecret.Type.Identity), + Identity_FirstName(type = DSecret.Type.Identity), + Identity_LastName(type = DSecret.Type.Identity), + Identity_FullName(type = DSecret.Type.Identity), + } + } + + @optics + data class Uri( + val uri: String, + val match: MatchType? = null, + ) : LinkInfo { + companion object; + + enum class MatchType { + Domain, + Host, + StartsWith, + Exact, + RegularExpression, + Never, + ; + + companion object { + val default = Domain + } + } + } + + // + // Types + // + + @optics + data class Login( + val username: String? = null, + val password: String? = null, + val passwordStrength: PasswordStrength? = null, + val passwordRevisionDate: Instant? = null, + val passwordHistory: List = emptyList(), + val fido2Credentials: List = emptyList(), + val totp: Totp? = null, + ) { + companion object; + + @optics + data class PasswordHistory( + val password: String, + val lastUsedDate: Instant, + ) { + companion object; + + val id = "$password|timestamp=$lastUsedDate" + } + + @optics + data class Totp( + val raw: String, + val token: TotpToken, + ) { + companion object + } + + data class Fido2Credentials( + val credentialId: String, + val keyType: String, // public-key + val keyAlgorithm: String, // ECDSA + val keyCurve: String, // P-256 + val keyValue: String, + val rpId: String, + val rpName: String, + val counter: Int?, + val userHandle: String, + val userName: String?, + val userDisplayName: String?, + val discoverable: Boolean, + val creationDate: Instant, + ) + } + + @optics + data class Card( + val cardholderName: String? = null, + val brand: String? = null, + val number: String? = null, + val fromMonth: String? = null, + val fromYear: String? = null, + val expMonth: String? = null, + val expYear: String? = null, + val code: String? = null, + ) { + companion object; + + val creditCardType = brand?.let(creditCards::firstOrNullByBrand) + ?: number?.let(creditCards::firstOrNullByNumber) + } + + @optics + data class Identity( + val title: String? = null, + val firstName: String? = null, + val middleName: String? = null, + val lastName: String? = null, + val address1: String? = null, + val address2: String? = null, + val address3: String? = null, + val city: String? = null, + val state: String? = null, + val postalCode: String? = null, + val country: String? = null, + val company: String? = null, + val email: String? = null, + val phone: String? = null, + val ssn: String? = null, + val username: String? = null, + val passportNumber: String? = null, + val licenseNumber: String? = null, + ) { + companion object + } +} + +fun DSecret.canDelete() = service.canDelete() + +fun DSecret.canEdit() = service.canEdit() + +fun DSecret.Attachment.fileName() = when (this) { + is DSecret.Attachment.Local -> fileName + is DSecret.Attachment.Remote -> fileName +} + +fun DSecret.Attachment.fileSize() = when (this) { + is DSecret.Attachment.Local -> size + is DSecret.Attachment.Remote -> size +} + +fun DSecret.Type.iconImageVector() = when (this) { + DSecret.Type.Login -> Icons.Outlined.Password + DSecret.Type.Card -> Icons.Outlined.CreditCard + DSecret.Type.Identity -> Icons.Outlined.PermIdentity + DSecret.Type.SecureNote -> Icons.Outlined.KeyguardNote + DSecret.Type.None -> Icons.Stub +} + +fun DSecret.Type.titleH() = when (this) { + DSecret.Type.Login -> Res.strings.cipher_type_login + DSecret.Type.Card -> Res.strings.cipher_type_card + DSecret.Type.Identity -> Res.strings.cipher_type_identity + DSecret.Type.SecureNote -> Res.strings.cipher_type_note + DSecret.Type.None -> Res.strings.cipher_type_unknown +} + +fun DSecret.Uri.MatchType.titleH() = when (this) { + DSecret.Uri.MatchType.Domain -> Res.strings.uri_match_detection_domain_title + DSecret.Uri.MatchType.Host -> Res.strings.uri_match_detection_host_title + DSecret.Uri.MatchType.StartsWith -> Res.strings.uri_match_detection_startswith_title + DSecret.Uri.MatchType.Exact -> Res.strings.uri_match_detection_exact_title + DSecret.Uri.MatchType.RegularExpression -> Res.strings.uri_match_detection_regex_title + DSecret.Uri.MatchType.Never -> Res.strings.uri_match_detection_never_title +} + +fun DSecret.Field.LinkedId.titleH() = when (this) { + DSecret.Field.LinkedId.Login_Username -> Res.strings.username + DSecret.Field.LinkedId.Login_Password -> Res.strings.password + DSecret.Field.LinkedId.Card_CardholderName -> Res.strings.cardholder_name + DSecret.Field.LinkedId.Card_ExpMonth -> Res.strings.card_expiry_month + DSecret.Field.LinkedId.Card_ExpYear -> Res.strings.card_expiry_year + DSecret.Field.LinkedId.Card_Code -> Res.strings.card_cvv + DSecret.Field.LinkedId.Card_Brand -> Res.strings.card_type + DSecret.Field.LinkedId.Card_Number -> Res.strings.card_number + DSecret.Field.LinkedId.Identity_Title -> Res.strings.identity_first_name + DSecret.Field.LinkedId.Identity_MiddleName -> Res.strings.identity_middle_name + DSecret.Field.LinkedId.Identity_Address1 -> Res.strings.address1 + DSecret.Field.LinkedId.Identity_Address2 -> Res.strings.address2 + DSecret.Field.LinkedId.Identity_Address3 -> Res.strings.address3 + DSecret.Field.LinkedId.Identity_City -> Res.strings.city + DSecret.Field.LinkedId.Identity_State -> Res.strings.state + DSecret.Field.LinkedId.Identity_PostalCode -> Res.strings.postal_code + DSecret.Field.LinkedId.Identity_Country -> Res.strings.country + DSecret.Field.LinkedId.Identity_Company -> Res.strings.company + DSecret.Field.LinkedId.Identity_Email -> Res.strings.email + DSecret.Field.LinkedId.Identity_Phone -> Res.strings.phone_number + DSecret.Field.LinkedId.Identity_Ssn -> Res.strings.ssn + DSecret.Field.LinkedId.Identity_Username -> Res.strings.username + DSecret.Field.LinkedId.Identity_PassportNumber -> Res.strings.passport_number + DSecret.Field.LinkedId.Identity_LicenseNumber -> Res.strings.license_number + DSecret.Field.LinkedId.Identity_FirstName -> Res.strings.identity_first_name + DSecret.Field.LinkedId.Identity_LastName -> Res.strings.identity_last_name + DSecret.Field.LinkedId.Identity_FullName -> Res.strings.identity_full_name +} + +fun DSecret.contains(hint: AutofillHint) = when (hint) { + AutofillHint.EMAIL_ADDRESS -> login?.username != null && login.username.matches(REGEX_EMAIL) + AutofillHint.USERNAME -> login?.username != null + AutofillHint.PASSWORD -> login?.password != null + AutofillHint.WIFI_PASSWORD -> false // not supported + AutofillHint.POSTAL_ADDRESS -> + identity?.address1 != null || + identity?.address2 != null || + identity?.address3 != null + + AutofillHint.POSTAL_CODE -> identity?.postalCode != null + AutofillHint.CREDIT_CARD_NUMBER -> card?.number != null + AutofillHint.CREDIT_CARD_SECURITY_CODE -> card?.code != null + AutofillHint.CREDIT_CARD_EXPIRATION_DATE -> + card?.expYear != null || + card?.expMonth != null + + AutofillHint.CREDIT_CARD_EXPIRATION_MONTH -> card?.expMonth != null + AutofillHint.CREDIT_CARD_EXPIRATION_YEAR -> card?.expYear != null + AutofillHint.CREDIT_CARD_EXPIRATION_DAY -> false // not supported + AutofillHint.POSTAL_ADDRESS_COUNTRY -> identity?.country != null + AutofillHint.POSTAL_ADDRESS_REGION -> false // not supported + AutofillHint.POSTAL_ADDRESS_LOCALITY -> false // not supported + AutofillHint.POSTAL_ADDRESS_STREET_ADDRESS -> identity?.address2 != null + AutofillHint.POSTAL_ADDRESS_EXTENDED_ADDRESS -> false // not supported + AutofillHint.POSTAL_ADDRESS_EXTENDED_POSTAL_CODE -> false // not supported + AutofillHint.POSTAL_ADDRESS_APT_NUMBER -> identity?.address1 != null + AutofillHint.POSTAL_ADDRESS_DEPENDENT_LOCALITY -> false // not supported + AutofillHint.PERSON_NAME -> identity?.firstName != null + AutofillHint.PERSON_NAME_GIVEN -> false // not supported + AutofillHint.PERSON_NAME_FAMILY -> identity?.lastName != null + AutofillHint.PERSON_NAME_MIDDLE -> identity?.middleName != null + AutofillHint.PERSON_NAME_MIDDLE_INITIAL -> identity?.middleName != null + AutofillHint.PERSON_NAME_PREFIX -> false // not supported + AutofillHint.PERSON_NAME_SUFFIX -> false // not supported + AutofillHint.PHONE_NUMBER -> identity?.phone != null + AutofillHint.PHONE_NUMBER_DEVICE -> false // not supported + AutofillHint.PHONE_COUNTRY_CODE -> identity?.phone != null // TODO: Extract country code + AutofillHint.PHONE_NATIONAL -> false // not supported + AutofillHint.NEW_USERNAME -> false // not supported + AutofillHint.NEW_PASSWORD -> false // not supported + AutofillHint.GENDER -> false // not supported + AutofillHint.BIRTH_DATE_FULL -> false // not supported + AutofillHint.BIRTH_DATE_DAY -> false // not supported + AutofillHint.BIRTH_DATE_MONTH -> false // not supported + AutofillHint.BIRTH_DATE_YEAR -> false // not supported + AutofillHint.SMS_OTP -> false // not supported + AutofillHint.EMAIL_OTP -> false // not supported + AutofillHint.APP_OTP -> login?.totp != null + AutofillHint.NOT_APPLICABLE -> false // not supported + AutofillHint.PROMO_CODE -> false // not supported + AutofillHint.UPI_VPA -> false // not supported + AutofillHint.OFF -> false +} + +fun DSecret.get( + hint: AutofillHint, + getTotpCode: GetTotpCode, +) = ioEffect { + when (hint) { + AutofillHint.EMAIL_ADDRESS -> login?.username + AutofillHint.USERNAME -> login?.username + AutofillHint.PASSWORD -> login?.password + AutofillHint.WIFI_PASSWORD -> null + AutofillHint.POSTAL_ADDRESS -> null + AutofillHint.POSTAL_CODE -> identity?.postalCode + AutofillHint.CREDIT_CARD_NUMBER -> card?.number + AutofillHint.CREDIT_CARD_SECURITY_CODE -> card?.code + AutofillHint.CREDIT_CARD_EXPIRATION_DATE -> null + AutofillHint.CREDIT_CARD_EXPIRATION_MONTH -> card?.expMonth + AutofillHint.CREDIT_CARD_EXPIRATION_YEAR -> card?.expYear + AutofillHint.CREDIT_CARD_EXPIRATION_DAY -> null + AutofillHint.POSTAL_ADDRESS_COUNTRY -> identity?.country + AutofillHint.POSTAL_ADDRESS_REGION -> null + AutofillHint.POSTAL_ADDRESS_LOCALITY -> null + AutofillHint.POSTAL_ADDRESS_STREET_ADDRESS -> identity?.address2 + AutofillHint.POSTAL_ADDRESS_EXTENDED_ADDRESS -> null + AutofillHint.POSTAL_ADDRESS_EXTENDED_POSTAL_CODE -> null + AutofillHint.POSTAL_ADDRESS_APT_NUMBER -> identity?.address1 + AutofillHint.POSTAL_ADDRESS_DEPENDENT_LOCALITY -> null + AutofillHint.PERSON_NAME -> identity?.firstName + AutofillHint.PERSON_NAME_GIVEN -> null + AutofillHint.PERSON_NAME_FAMILY -> identity?.lastName + AutofillHint.PERSON_NAME_MIDDLE -> identity?.middleName + AutofillHint.PERSON_NAME_MIDDLE_INITIAL -> identity?.middleName + AutofillHint.PERSON_NAME_PREFIX -> null + AutofillHint.PERSON_NAME_SUFFIX -> null + AutofillHint.PHONE_NUMBER -> identity?.phone + ?: login?.username?.takeIf { REGEX_PHONE_NUMBER.matches(it) } + + AutofillHint.PHONE_NUMBER_DEVICE -> null + AutofillHint.PHONE_COUNTRY_CODE -> identity?.phone // TODO: Extract country code + AutofillHint.PHONE_NATIONAL -> null + AutofillHint.NEW_USERNAME -> null + AutofillHint.NEW_PASSWORD -> null + AutofillHint.GENDER -> null + AutofillHint.BIRTH_DATE_FULL -> null + AutofillHint.BIRTH_DATE_DAY -> null + AutofillHint.BIRTH_DATE_MONTH -> null + AutofillHint.BIRTH_DATE_YEAR -> null + AutofillHint.SMS_OTP -> null + AutofillHint.EMAIL_OTP -> null + AutofillHint.APP_OTP -> login?.totp?.token?.let { + getTotpCode(it) + .map { it.code } + .toIO() + .bind() + } + + AutofillHint.NOT_APPLICABLE -> null + AutofillHint.PROMO_CODE -> null + AutofillHint.UPI_VPA -> null + AutofillHint.OFF -> null + } +} + +fun DSecret.gett( + hints: Set, + getTotpCode: GetTotpCode, +) = ioEffect { + val hintsWithDepth = hints + .map { hint -> + val variants = zzMap[hint].orEmpty() + .toMutableList() + .apply { + val self = AutofillMatcher( + hint = hint, + ) + add(0, self) + } + hint to variants + } + + val out = mutableMapOf() + do { + var shouldLoop = false + hintsWithDepth.forEach { (hint, variants) -> + if (variants.isEmpty()) { + return@forEach + } + + val variant = variants.removeFirst() + val value = get( + hint = variant.hint, + getTotpCode = getTotpCode, + ).attempt().bind().getOrNull() + if (value.isNullOrEmpty()) { + shouldLoop = shouldLoop || variants.isNotEmpty() + return@forEach + } + + out[hint] = value + variants.clear() + } + } while (shouldLoop) + out +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DSecretDuplicateGroup.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DSecretDuplicateGroup.kt new file mode 100644 index 00000000..5ddb05dd --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DSecretDuplicateGroup.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.model + +data class DSecretDuplicateGroup( + val id: String, + val accuracy: Float, + val ciphers: List, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DSend.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DSend.kt new file mode 100644 index 00000000..a4124c0b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DSend.kt @@ -0,0 +1,106 @@ +@file:JvmName("DSendFun") + +package com.artemchep.keyguard.common.model + +import androidx.compose.material.icons.Icons +import androidx.compose.ui.graphics.Color +import arrow.optics.optics +import com.artemchep.keyguard.common.util.flowOfTime +import com.artemchep.keyguard.core.store.bitwarden.BitwardenService +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.icons.KeyguardAttachment +import com.artemchep.keyguard.ui.icons.KeyguardNote +import com.artemchep.keyguard.ui.icons.Stub +import com.artemchep.keyguard.ui.icons.generateAccentColors +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.stateIn +import kotlinx.datetime.Clock +import kotlinx.datetime.Instant + +@optics +data class DSend( + val id: String, + val accountId: String, + val accessId: String, + val keyBase64: String?, + val revisionDate: Instant, + val createdDate: Instant?, + val deletedDate: Instant?, + val expirationDate: Instant?, + val service: BitwardenService, + // common + val name: String, + val notes: String, + val accessCount: Int, + val maxAccessCount: Int? = null, + val password: String? = null, + val disabled: Boolean, + val hideEmail: Boolean, + val type: Type, + val text: Text?, + val file: File?, +) : HasAccountId { + companion object { + } + + val accentLight: Color + val accentDark: Color + + init { + val colors = generateAccentColors(service.remote?.id ?: id) + accentLight = colors.light + accentDark = colors.dark + } + + enum class Type { + None, + File, + Text, + } + + data class File( + val id: String, + val fileName: String, + val keyBase64: String?, + val size: Long? = null, + ) { + companion object; + } + + data class Text( + val text: String? = null, + val hidden: Boolean? = null, + ) { + companion object; + } + + override fun accountId(): String = accountId +} + +val DSend.expiredFlow: StateFlow + get() = flowOfTime() + .map { expired } + .stateIn( + scope = GlobalScope, + started = SharingStarted.WhileSubscribed(1000L), + initialValue = expired, + ) + +val DSend.expired: Boolean + get() = expirationDate != null && + expirationDate <= Clock.System.now() + +fun DSend.Type.iconImageVector() = when (this) { + DSend.Type.Text -> Icons.Outlined.KeyguardNote + DSend.Type.File -> Icons.Outlined.KeyguardAttachment + DSend.Type.None -> Icons.Stub +} + +fun DSend.Type.titleH() = when (this) { + DSend.Type.Text -> Res.strings.send_type_text + DSend.Type.File -> Res.strings.send_type_file + DSend.Type.None -> Res.strings.send_type_unknown +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DSendFilter.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DSendFilter.kt new file mode 100644 index 00000000..c862c74d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DSendFilter.kt @@ -0,0 +1,185 @@ +package com.artemchep.keyguard.common.model + +import arrow.core.Either +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import org.kodein.di.DirectDI + +@Serializable +sealed interface DSendFilter { + companion object { + inline fun findOne( + filter: DSendFilter, + noinline predicate: (T) -> Boolean = { true }, + ): T? = findOne( + filter = filter, + target = T::class.java, + predicate = predicate, + ) + + fun findOne( + filter: DSendFilter, + target: Class, + predicate: (T) -> Boolean = { true }, + ): T? = _findOne( + filter = filter, + target = target, + predicate = predicate, + ).getOrNull() + + private fun _findOne( + filter: DSendFilter, + target: Class, + predicate: (T) -> Boolean = { true }, + ): Either = when (filter) { + is Or<*> -> { + when (filter.filters.size) { + 0 -> Either.Right(null) + 1 -> { + val f = filter.filters.first() + _findOne(f, target, predicate) + } + + else -> Either.Left(Unit) + } + } + + is And<*> -> { + val results = filter + .filters + .map { f -> + _findOne(f, target) + } + // If any of the variants has returned that + // we must abort the search then abort the search. + if (results.any { it.isLeft() }) { + // Propagate the error down the pipe. + Either.Left(Unit) + } else { + val fs = results.mapNotNull { it.getOrNull() } + when (fs.size) { + 0 -> Either.Right(null) + 1 -> Either.Right(fs.first()) + else -> Either.Left(Unit) + } + } + } + + else -> { + if (filter.javaClass == target) { + val f = filter as T + val v = predicate(f) + if (v) { + Either.Right(f) + } else { + Either.Right(null) + } + } else { + Either.Right(null) + } + } + } + } + + suspend fun prepare( + directDI: DirectDI, + ciphers: List, + ): (DSend) -> Boolean + + @Serializable + sealed interface Primitive : DSendFilter { + val key: String + } + + @Serializable + @SerialName("or") + data class Or( + val filters: Collection, + ) : DSendFilter { + override suspend fun prepare( + directDI: DirectDI, + ciphers: List, + ) = kotlin.run { + val list = filters + .map { it.prepare(directDI, ciphers) } + return@run { cipher: DSend -> + list.isEmpty() || list.any { predicate -> predicate(cipher) } + } + } + } + + @Serializable + @SerialName("and") + data class And( + val filters: Collection, + ) : DSendFilter { + override suspend fun prepare( + directDI: DirectDI, + ciphers: List, + ) = kotlin.run { + val list = filters + .map { it.prepare(directDI, ciphers) } + return@run { cipher: DSend -> + list.isEmpty() || list.all { predicate -> predicate(cipher) } + } + } + } + + @Serializable + @SerialName("all") + data object All : DSendFilter { + override suspend fun prepare( + directDI: DirectDI, + ciphers: List, + ) = ::predicateCipher + + private fun predicateCipher(cipher: DSend) = true + } + + // Primitives + + @Serializable + @SerialName("by_id") + data class ById( + val id: String?, + val what: What, + ) : Primitive { + override val key: String = "$id|$what" + + @Serializable + enum class What { + @SerialName("account") + ACCOUNT, + } + + override suspend fun prepare( + directDI: DirectDI, + ciphers: List, + ) = ::predicateCipher + + private fun predicateCipher( + cipher: DSend, + ) = kotlin.run { + when (what) { + What.ACCOUNT -> cipher.accountId + } == id + } + } + + @Serializable + @SerialName("by_type") + data class ByType( + val type: DSend.Type, + ) : Primitive { + override val key: String = "$type" + + override suspend fun prepare( + directDI: DirectDI, + ciphers: List, + ) = ::predicate + + private fun predicate( + cipher: DSend, + ) = cipher.type == type + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DownloadAttachmentRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DownloadAttachmentRequest.kt new file mode 100644 index 00000000..d5ea3dca --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DownloadAttachmentRequest.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.model + +sealed interface DownloadAttachmentRequest { + data class ByLocalCipherAttachment( + val localCipherId: String, + val remoteCipherId: String?, + val attachmentId: String, + ) : DownloadAttachmentRequest { + constructor( + cipher: DSecret, + attachment: DSecret.Attachment.Remote, + ) : this( + localCipherId = cipher.id, + remoteCipherId = cipher.service.remote?.id, + attachmentId = attachment.id, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DownloadAttachmentRequestData.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DownloadAttachmentRequestData.kt new file mode 100644 index 00000000..a91b1d75 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DownloadAttachmentRequestData.kt @@ -0,0 +1,39 @@ +package com.artemchep.keyguard.common.model + +data class DownloadAttachmentRequestData( + // ids + val localCipherId: String, + val remoteCipherId: String?, + val attachmentId: String, + // file info + val url: String, + val urlIsOneTime: Boolean, + val name: String, + val encryptionKey: ByteArray, +) { + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as DownloadAttachmentRequestData + + if (localCipherId != other.localCipherId) return false + if (remoteCipherId != other.remoteCipherId) return false + if (attachmentId != other.attachmentId) return false + if (url != other.url) return false + if (urlIsOneTime != other.urlIsOneTime) return false + if (!encryptionKey.contentEquals(other.encryptionKey)) return false + + return true + } + + override fun hashCode(): Int { + var result = localCipherId.hashCode() + result = 31 * result + (remoteCipherId?.hashCode() ?: 0) + result = 31 * result + attachmentId.hashCode() + result = 31 * result + url.hashCode() + result = 31 * result + urlIsOneTime.hashCode() + result = 31 * result + encryptionKey.contentHashCode() + return result + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/Fingerprint.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/Fingerprint.kt new file mode 100644 index 00000000..0a8a036a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/Fingerprint.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.model + +data class Fingerprint( + val master: FingerprintPassword, + val biometric: FingerprintBiometric?, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/FingerprintBiometric.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/FingerprintBiometric.kt new file mode 100644 index 00000000..90544bcc --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/FingerprintBiometric.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.model + +class FingerprintBiometric( + val iv: ByteArray, + val encryptedMasterKey: ByteArray, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/FingerprintPassword.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/FingerprintPassword.kt new file mode 100644 index 00000000..1c266697 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/FingerprintPassword.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.model + +data class FingerprintPassword( + val hash: MasterPasswordHash, + val salt: MasterPasswordSalt, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/FolderOwnership2.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/FolderOwnership2.kt new file mode 100644 index 00000000..94ecc42b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/FolderOwnership2.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.common.model + +import arrow.optics.optics +import com.artemchep.keyguard.feature.confirmation.organization.FolderInfo + +@optics +data class FolderOwnership2( + val accountId: String, + val folder: FolderInfo, +) { + companion object; +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/HasAccountId.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/HasAccountId.kt new file mode 100644 index 00000000..5806cde7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/HasAccountId.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.common.model + +interface HasAccountId { + fun accountId(): String +} + +fun List.firstOrNull(accountId: AccountId) = this + .firstOrNull { it.accountId() == accountId.id } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/LinkInfo.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/LinkInfo.kt new file mode 100644 index 00000000..4b887aa1 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/LinkInfo.kt @@ -0,0 +1,3 @@ +package com.artemchep.keyguard.common.model + +interface LinkInfo diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/LinkInfoAndroid.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/LinkInfoAndroid.kt new file mode 100644 index 00000000..19388cf7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/LinkInfoAndroid.kt @@ -0,0 +1,17 @@ +package com.artemchep.keyguard.common.model + +import androidx.compose.ui.graphics.painter.Painter + +sealed interface LinkInfoAndroid : LinkInfo { + val platform: LinkInfoPlatform.Android + + data class Installed( + val label: String, + val icon: Painter, + override val platform: LinkInfoPlatform.Android, + ) : LinkInfoAndroid + + data class NotInstalled( + override val platform: LinkInfoPlatform.Android, + ) : LinkInfoAndroid +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/LinkInfoExecute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/LinkInfoExecute.kt new file mode 100644 index 00000000..58e92b68 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/LinkInfoExecute.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.common.model + +/** + * @author Artem Chepurnyi + */ +sealed interface LinkInfoExecute : LinkInfo { + data class Allow( + val command: String, + ) : LinkInfoExecute + + data object Deny : LinkInfoExecute +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/LinkInfoLaunch.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/LinkInfoLaunch.kt new file mode 100644 index 00000000..054739ac --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/LinkInfoLaunch.kt @@ -0,0 +1,19 @@ +package com.artemchep.keyguard.common.model + +import androidx.compose.ui.graphics.painter.Painter + +/** + * @author Artem Chepurnyi + */ +sealed interface LinkInfoLaunch : LinkInfo { + data class Allow( + val apps: List, + ) : LinkInfoLaunch { + data class AppInfo( + val label: String, + val icon: Painter? = null, + ) + } + + data object Deny : LinkInfoLaunch +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/LinkInfoPlatform.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/LinkInfoPlatform.kt new file mode 100644 index 00000000..6dba6445 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/LinkInfoPlatform.kt @@ -0,0 +1,32 @@ +package com.artemchep.keyguard.common.model + +import io.ktor.http.Url + +/** + * Provides info about the platform of the resource that + * the URI doe refer. + * + * @author Artem Chepurnyi + */ +sealed interface LinkInfoPlatform : LinkInfo { + data class Android( + val packageName: String, + ) : LinkInfoPlatform { + /** + * A url to the app's content page on the Play Store formed by appending + * the package name to a base Play Store url. + */ + val playStoreUrl = "https://play.google.com/store/apps/details?id=$packageName" + } + + data class IOS( + val packageName: String, + ) : LinkInfoPlatform + + data class Web( + val url: Url, + val frontPageUrl: Url, + ) : LinkInfoPlatform + + data object Other : LinkInfoPlatform +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/Loadable.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/Loadable.kt new file mode 100644 index 00000000..6a8b6371 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/Loadable.kt @@ -0,0 +1,44 @@ +package com.artemchep.keyguard.common.model + +import androidx.compose.runtime.Immutable + +@Immutable +sealed interface Loadable { + companion object; + + @Immutable + data object Loading : Loadable + + @Immutable + data class Ok( + val value: T, + ) : Loadable { + companion object + } +} + +fun Loadable.getOrNull(): T? = fold( + ifLoading = { null }, + ifOk = { it }, +) + +fun Loadable.map( + transform: (T) -> R, +) = flatMap { + Loadable.Ok(transform(it)) +} + +inline fun Loadable.flatMap( + transform: (T) -> Loadable, +) = fold( + ifLoading = { Loadable.Loading }, + ifOk = transform, +) + +inline fun Loadable.fold( + ifLoading: () -> R, + ifOk: (T) -> R, +): R = when (this) { + is Loadable.Loading -> ifLoading() + is Loadable.Ok -> ifOk(value) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/MasterKey.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/MasterKey.kt new file mode 100644 index 00000000..005bc6e7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/MasterKey.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.common.model + +data class MasterKey( + val byteArray: ByteArray, +) { + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as MasterKey + + if (!byteArray.contentEquals(other.byteArray)) return false + + return true + } + + override fun hashCode(): Int { + return byteArray.contentHashCode() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/MasterPassword.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/MasterPassword.kt new file mode 100644 index 00000000..536105b8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/MasterPassword.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.model + +@JvmInline +value class MasterPassword( + val byteArray: ByteArray, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/MasterPasswordHash.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/MasterPasswordHash.kt new file mode 100644 index 00000000..d2b55cec --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/MasterPasswordHash.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.common.model + +data class MasterPasswordHash( + val byteArray: ByteArray, +) { + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as MasterPasswordHash + + if (!byteArray.contentEquals(other.byteArray)) return false + + return true + } + + override fun hashCode(): Int { + return byteArray.contentHashCode() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/MasterPasswordSalt.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/MasterPasswordSalt.kt new file mode 100644 index 00000000..e02854dd --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/MasterPasswordSalt.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.common.model + +data class MasterPasswordSalt( + val byteArray: ByteArray, +) { + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as MasterPasswordSalt + + if (!byteArray.contentEquals(other.byteArray)) return false + + return true + } + + override fun hashCode(): Int { + return byteArray.contentHashCode() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/MasterSession.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/MasterSession.kt new file mode 100644 index 00000000..6df905e5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/MasterSession.kt @@ -0,0 +1,41 @@ +package com.artemchep.keyguard.common.model + +import arrow.optics.optics +import kotlinx.datetime.Instant +import org.kodein.di.DI + +@optics +sealed interface MasterSession { + companion object; + + @optics + data class Key( + val masterKey: MasterKey, + val di: DI, + val origin: Origin, + val createdAt: Instant, + ) : MasterSession { + companion object; + + sealed interface Origin + + /** + * The key was loaded from the file system. You can not + * assume that the user is authenticated. + */ + data object Persisted : Origin + + /** + * The key was typed by a user. You can assume that the + * user is authenticated. + */ + data object Authenticated : Origin + } + + @optics + data class Empty( + val reason: String? = null, + ) : MasterSession { + companion object + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/NavAnimation.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/NavAnimation.kt new file mode 100644 index 00000000..b2464d42 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/NavAnimation.kt @@ -0,0 +1,27 @@ +package com.artemchep.keyguard.common.model + +import com.artemchep.keyguard.res.Res +import dev.icerock.moko.resources.StringResource + +enum class NavAnimation( + val key: String, + val title: StringResource, +) { + DISABLED( + key = "disabled", + title = Res.strings.nav_animation_disabled, + ), + CROSSFADE( + key = "crossfade", + title = Res.strings.nav_animation_crossfade, + ), + DYNAMIC( + key = "dynamic", + title = Res.strings.nav_animation_dynamic, + ), + ; + + companion object { + val default get() = DYNAMIC + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/NoAnalytics.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/NoAnalytics.kt new file mode 100644 index 00000000..6d888682 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/NoAnalytics.kt @@ -0,0 +1,3 @@ +package com.artemchep.keyguard.common.model + +interface NoAnalytics diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/PasswordGeneratorConfig.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/PasswordGeneratorConfig.kt new file mode 100644 index 00000000..cb5c9359 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/PasswordGeneratorConfig.kt @@ -0,0 +1,42 @@ +package com.artemchep.keyguard.common.model + +sealed interface PasswordGeneratorConfig { + data class Passphrase( + val length: Int, + val delimiter: String, + val capitalize: Boolean, + val includeNumber: Boolean, + val customWord: String? = null, + ) : PasswordGeneratorConfig + + data class Password( + val length: Int, + val uppercaseChars: List, + val lowercaseChars: List, + val numberChars: List, + val symbolChars: List, + val uppercaseMin: Long, + val lowercaseMin: Long, + val numbersMin: Long, + val symbolsMin: Long, + ) : PasswordGeneratorConfig { + val allChars: List = uppercaseChars + lowercaseChars + numberChars + symbolChars + } + + data class EmailRelay( + val emailRelay: com.artemchep.keyguard.common.service.relays.api.EmailRelay, + val config: DGeneratorEmailRelay, + ) : PasswordGeneratorConfig + + data class Composite( + val config: PasswordGeneratorConfig, + val transform: (String) -> String?, + ) : PasswordGeneratorConfig +} + +fun PasswordGeneratorConfig.isExpensive(): Boolean = when (this) { + is PasswordGeneratorConfig.Passphrase -> false + is PasswordGeneratorConfig.Password -> false + is PasswordGeneratorConfig.EmailRelay -> true + is PasswordGeneratorConfig.Composite -> config.isExpensive() +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/PasswordGeneratorConfigBuilder.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/PasswordGeneratorConfigBuilder.kt new file mode 100644 index 00000000..6067adee --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/PasswordGeneratorConfigBuilder.kt @@ -0,0 +1,230 @@ +package com.artemchep.keyguard.common.model + +import com.artemchep.keyguard.feature.auth.common.util.REGEX_DOMAIN +import com.artemchep.keyguard.feature.auth.common.util.REGEX_EMAIL + +sealed interface PasswordGeneratorConfigBuilder2 { + data class Passphrase( + val length: Int, + val delimiter: String, + val capitalize: Boolean, + val includeNumber: Boolean, + val customWord: String, + ) : PasswordGeneratorConfigBuilder2 + + data class Username( + val length: Int, + val delimiter: String, + val capitalize: Boolean, + val includeNumber: Boolean, + val customWord: String, + ) : PasswordGeneratorConfigBuilder2 + + data class Password( + val length: Int, + val includeUppercaseCharacters: Boolean = true, + val includeUppercaseCharactersMin: Long = 1L, + val includeLowercaseCharacters: Boolean = true, + val includeLowercaseCharactersMin: Long = 1L, + val includeNumbers: Boolean = true, + val includeNumbersMin: Long = 1L, + val includeSymbols: Boolean = true, + val includeSymbolsMin: Long = 1L, + val excludeSimilarCharacters: Boolean = true, + val excludeAmbiguousCharacters: Boolean = true, + ) : PasswordGeneratorConfigBuilder2 + + data class EmailCatchAll( + val length: Int, + val domain: String, + ) : PasswordGeneratorConfigBuilder2 + + data class EmailPlusAddressing( + val length: Int, + val email: String, + ) : PasswordGeneratorConfigBuilder2 + + data class EmailSubdomainAddressing( + val length: Int, + val email: String, + ) : PasswordGeneratorConfigBuilder2 + + data class EmailRelay( + val emailRelay: com.artemchep.keyguard.common.service.relays.api.EmailRelay, + val config: DGeneratorEmailRelay, + ) : PasswordGeneratorConfigBuilder2 +} + +fun PasswordGeneratorConfigBuilder2.build(): PasswordGeneratorConfig = when (this) { + is PasswordGeneratorConfigBuilder2.Password -> build() + is PasswordGeneratorConfigBuilder2.Passphrase -> build() + is PasswordGeneratorConfigBuilder2.Username -> build() + is PasswordGeneratorConfigBuilder2.EmailCatchAll -> build() + is PasswordGeneratorConfigBuilder2.EmailPlusAddressing -> build() + is PasswordGeneratorConfigBuilder2.EmailSubdomainAddressing -> build() + is PasswordGeneratorConfigBuilder2.EmailRelay -> build() +} + +fun PasswordGeneratorConfigBuilder2.Password.build(): PasswordGeneratorConfig { + val uppercaseChars = mutableListOf() + val lowercaseChars = mutableListOf() + val numberChars = mutableListOf() + val symbolChars = mutableListOf() + + if (includeUppercaseCharacters) { + uppercaseChars += 'A'..'Z' + } + if (includeLowercaseCharacters) { + lowercaseChars += 'a'..'z' + } + if (includeNumbers) { + numberChars += '0'..'9' + } + if (includeSymbols) { + symbolChars += """!"#$%&'()*+-./:;<=>?@[\]^_`{|}~""" + .toCharArray() + .toList() + } + if (excludeSimilarCharacters) { + // uppercase + uppercaseChars -= 'L' + uppercaseChars -= 'O' + // lowercase + lowercaseChars -= 'i' + lowercaseChars -= 'l' + lowercaseChars -= 'o' + // numbers + numberChars -= '1' + numberChars -= '0' + } + if (excludeAmbiguousCharacters) { + symbolChars -= """{}[]()/\'"`~,;:.<>""" + .toCharArray() + .toSet() + } + return PasswordGeneratorConfig.Password( + length = length, + // chars + uppercaseChars = uppercaseChars, + lowercaseChars = lowercaseChars, + numberChars = numberChars, + symbolChars = symbolChars, + // config + uppercaseMin = includeUppercaseCharactersMin, + lowercaseMin = includeLowercaseCharactersMin, + numbersMin = includeNumbersMin, + symbolsMin = includeSymbolsMin, + ) +} + +fun PasswordGeneratorConfigBuilder2.Passphrase.build() = + PasswordGeneratorConfig.Passphrase( + length = length, + delimiter = delimiter, + capitalize = capitalize, + includeNumber = includeNumber, + customWord = customWord.trim().takeUnless { it.isEmpty() }, + ) + +fun PasswordGeneratorConfigBuilder2.Username.build() = + PasswordGeneratorConfig.Passphrase( + length = length, + delimiter = delimiter, + capitalize = capitalize, + includeNumber = includeNumber, + customWord = customWord.trim().takeUnless { it.isEmpty() }, + ) + +fun PasswordGeneratorConfigBuilder2.EmailCatchAll.build(): PasswordGeneratorConfig { + val config = buildEmailFriendlyGeneratorConfig( + length = length, + ) + val domain = domain + .takeIf { REGEX_DOMAIN.matches(it) } + return PasswordGeneratorConfig.Composite( + config = config, + transform = { pwd -> + if (domain != null) { + "$pwd@$domain" + } else { + null + } + }, + ) +} + +fun PasswordGeneratorConfigBuilder2.EmailPlusAddressing.build(): PasswordGeneratorConfig { + val config = buildEmailFriendlyGeneratorConfig( + length = length, + ) + val email = email + .takeIf { REGEX_EMAIL.matches(it) } + ?.let(::parseEmail) + return PasswordGeneratorConfig.Composite( + config = config, + transform = { pwd -> + if (email != null) { + "${email.username}+$pwd@${email.domain}" + } else { + null + } + }, + ) +} + +fun PasswordGeneratorConfigBuilder2.EmailSubdomainAddressing.build(): PasswordGeneratorConfig { + val config = buildEmailFriendlyGeneratorConfig( + length = length, + ) + val email = email + .takeIf { REGEX_EMAIL.matches(it) } + ?.let(::parseEmail) + return PasswordGeneratorConfig.Composite( + config = config, + transform = { pwd -> + if (email != null) { + "${email.username}@$pwd.${email.domain}" + } else { + null + } + }, + ) +} + +fun PasswordGeneratorConfigBuilder2.EmailRelay.build(): PasswordGeneratorConfig { + return PasswordGeneratorConfig.EmailRelay( + emailRelay = emailRelay, + config = config, + ) +} + +private fun buildEmailFriendlyGeneratorConfig( + length: Int, +) = PasswordGeneratorConfigBuilder2.Password( + length = length, + includeUppercaseCharacters = false, + includeLowercaseCharacters = true, + includeNumbers = true, + includeSymbols = false, + excludeSimilarCharacters = true, + excludeAmbiguousCharacters = true, +).build() + +private fun parseEmail(email: String): ParsedEmail? { + val index = email.indexOf("@") + if (index != -1) { + val username = email.substring(startIndex = 0, endIndex = index) + val domain = email.substring(startIndex = index + 1) + return ParsedEmail( + username = username, + domain = domain, + ) + } + + return null +} + +private data class ParsedEmail( + val username: String, + val domain: String, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/PasswordGeneratorContext.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/PasswordGeneratorContext.kt new file mode 100644 index 00000000..cb374697 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/PasswordGeneratorContext.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.common.model + +data class GeneratorContext( + /** + * Hostname of the web service we are currently + * generating email for. + */ + val host: String?, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/PasswordPwnage.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/PasswordPwnage.kt new file mode 100644 index 00000000..b4312be0 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/PasswordPwnage.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.model + +@JvmInline +value class PasswordPwnage( + val occurrences: Int, +) \ No newline at end of file diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/PasswordStrength.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/PasswordStrength.kt new file mode 100644 index 00000000..b59b68c5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/PasswordStrength.kt @@ -0,0 +1,58 @@ +@file:JvmName("PasswordStrengthJvm") + +package com.artemchep.keyguard.common.model + +import androidx.compose.runtime.Composable +import arrow.optics.optics +import com.artemchep.keyguard.res.Res +import dev.icerock.moko.resources.compose.stringResource + +@optics +data class PasswordStrength( + val crackTimeSeconds: Long, + val score: Score = when { + crackTimeSeconds <= 1000L -> Score.Weak + crackTimeSeconds <= 100000L -> Score.Fair + crackTimeSeconds <= 100000000L -> Score.Good + crackTimeSeconds <= 100000000000L -> Score.Strong + else -> Score.VeryStrong + }, + val version: Long, +) { + companion object; + + enum class Score { + Weak, + Fair, + Good, + Strong, + VeryStrong, + } +} + +fun PasswordStrength.Score.alertScore() = when (this) { + PasswordStrength.Score.Weak -> 0f + PasswordStrength.Score.Fair -> 0.2f + PasswordStrength.Score.Good -> 0.5f + PasswordStrength.Score.Strong -> 0.9f + PasswordStrength.Score.VeryStrong -> 1f +} + +fun PasswordStrength.Score.formatH2() = when (this) { + PasswordStrength.Score.Weak -> Res.strings.passwords_weak_label + PasswordStrength.Score.Fair -> Res.strings.passwords_fair_label + PasswordStrength.Score.Good -> Res.strings.passwords_good_label + PasswordStrength.Score.Strong -> Res.strings.passwords_strong_label + PasswordStrength.Score.VeryStrong -> Res.strings.passwords_very_strong_label +} + +fun PasswordStrength.Score.formatH() = when (this) { + PasswordStrength.Score.Weak -> Res.strings.password_strength_weak_label + PasswordStrength.Score.Fair -> Res.strings.password_strength_fair_label + PasswordStrength.Score.Good -> Res.strings.password_strength_good_label + PasswordStrength.Score.Strong -> Res.strings.password_strength_strong_label + PasswordStrength.Score.VeryStrong -> Res.strings.password_strength_very_strong_label +} + +@Composable +fun PasswordStrength.Score.formatLocalized() = stringResource(formatH()) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/PersistedSession.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/PersistedSession.kt new file mode 100644 index 00000000..9ce42fdd --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/PersistedSession.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.common.model + +import kotlinx.datetime.Instant + +data class PersistedSession( + val masterKey: MasterKey, + val createdAt: Instant, + val persistedAt: Instant, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/Product.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/Product.kt new file mode 100644 index 00000000..4be35c7e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/Product.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.model + +import com.artemchep.keyguard.platform.LeContext + +data class Product( + val id: String, + val title: String, + val description: String?, + val price: String, + val status: Status, + val purchase: (LeContext) -> Unit, +) { + sealed interface Status { + data object Inactive : Status + + data object Active : Status + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/RemoveAttachmentRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/RemoveAttachmentRequest.kt new file mode 100644 index 00000000..67572aab --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/RemoveAttachmentRequest.kt @@ -0,0 +1,22 @@ +package com.artemchep.keyguard.common.model + +sealed interface RemoveAttachmentRequest { + data class ByDownloadId( + val downloadId: String, + ) : RemoveAttachmentRequest + + data class ByLocalCipherAttachment( + val localCipherId: String, + val remoteCipherId: String? = null, + val attachmentId: String, + ) : RemoveAttachmentRequest { + constructor( + cipher: DSecret, + attachment: DSecret.Attachment.Remote, + ) : this( + localCipherId = cipher.id, + remoteCipherId = cipher.service.remote?.id, + attachmentId = attachment.id, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/RichResult.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/RichResult.kt new file mode 100644 index 00000000..e910c517 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/RichResult.kt @@ -0,0 +1,164 @@ +package com.artemchep.keyguard.common.model + +import arrow.core.Either +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.filterNotNull +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.scan + +/** + * @author Artem Chepurnyi + */ +sealed class RichResult { + companion object { + operator fun invoke(either: Either): RichResult = + either.fold( + ifLeft = { Failure(it) }, + ifRight = { Success(it) }, + ) + } + + data class Failure( + val exception: Throwable, + ) : RichResult() { + override fun equals(other: Any?): Boolean = + other is Failure<*> && exception == other.exception + + override fun hashCode(): Int = exception.hashCode() + } + + data class Loading( + /** + * A progress or `null` if the progress is + * not supported. + */ + val progress: Float? = null, + val lastTerminalState: RichResult? = null, + ) : RichResult() + + data class Success( + val data: T, + ) : RichResult() +} + +fun RichResult.getTerminalState() = + when (this) { + is RichResult.Loading -> lastTerminalState + else -> this + } + +fun RichResult.preferTerminalState() = + when (this) { + is RichResult.Loading -> lastTerminalState ?: this + else -> this + } + +fun RichResult.orNull() = + when (this) { + is RichResult.Success -> data + else -> null + } + +fun RichResult>.combine(other: RichResult>): RichResult> = + when { + this is RichResult.Success && other is RichResult.Success -> + RichResult.Success( + data = this.data + other.data, + ) + + this is RichResult.Loading || other is RichResult.Loading -> { + val tts = this.getTerminalState() + val ots = other.getTerminalState() + + val lastTerminalState = + if (tts != null && ots != null) { + tts.combine(ots) + } else { + tts ?: ots + } + RichResult.Loading( + lastTerminalState = lastTerminalState, + ) + } + + this is RichResult.Failure -> other + else -> this + } + +fun RichResult.fold( + ifFailure: (Throwable) -> R, + ifLoading: (RichResult?) -> R, + ifSuccess: (T) -> R, +) = when (this) { + is RichResult.Failure -> ifFailure(exception) + is RichResult.Loading -> ifLoading(lastTerminalState) + is RichResult.Success -> ifSuccess(data) +} + +fun RichResult.ap(ff: RichResult<(T) -> R>) = + flatMap { t -> + ff.map { it(t) } + } + +inline fun RichResult.map(transform: (T) -> R) = + flatMap { + RichResult.Success(transform(it)) + } + +inline fun RichResult.flatMap(transform: (T) -> RichResult) = + when (this) { + is RichResult.Failure -> RichResult.Failure(exception) + is RichResult.Loading -> RichResult.Loading(progress) + is RichResult.Success -> transform(data) + } + +inline fun RichResult.handleError(transform: (Throwable) -> T) = + handleErrorWith { + RichResult.Success(transform(it)) + } + +inline fun RichResult.handleErrorWith(transform: (Throwable) -> RichResult) = + when (this) { + is RichResult.Failure -> transform(exception) + is RichResult.Loading -> this + is RichResult.Success -> this + } + +inline fun Flow>.richMap(crossinline block: suspend (T) -> R) = this + .map { result -> + result.map { + block(it) + } + } + +inline fun Flow>.richFlatMap(crossinline block: suspend (T) -> RichResult) = + this + .map { result -> + result.flatMap { + block(it) + } + } + +fun Flow>.withTerminalStateInLoading() = this + .scan(null as RichResult?) { old, new -> + when (new) { + is RichResult.Loading -> { + val lastTerminalState = when (old) { + null, + is RichResult.Failure, + is RichResult.Success, + -> old + + is RichResult.Loading -> old.lastTerminalState + } + if (lastTerminalState !== new.lastTerminalState) { + new.copy(lastTerminalState = lastTerminalState) + } else { + new + } + } + + else -> new + } + } + .filterNotNull() diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/Screen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/Screen.kt new file mode 100644 index 00000000..bb43fe71 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/Screen.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.common.model + +/** + * @author Artem Chepurnyi + */ +sealed class Screen { + data object On : Screen() + data object Off : Screen() +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/Subscription.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/Subscription.kt new file mode 100644 index 00000000..4fb460f8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/Subscription.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.common.model + +import com.artemchep.keyguard.platform.LeContext + +data class Subscription( + val id: String, + val title: String, + val description: String?, + val price: String, + val status: Status, + val purchase: (LeContext) -> Unit, +) { + sealed interface Status { + data object Inactive : Status + + data class Active( + val willRenew: Boolean, + ) : Status + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/ToastMessage.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/ToastMessage.kt new file mode 100644 index 00000000..410faba9 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/ToastMessage.kt @@ -0,0 +1,16 @@ +package com.artemchep.keyguard.common.model + +import java.util.UUID + +data class ToastMessage( + val id: String = UUID.randomUUID().toString(), + val type: Type? = null, + val title: String, + val text: String? = null, +) { + enum class Type { + INFO, + ERROR, + SUCCESS, + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/TotpCode.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/TotpCode.kt new file mode 100644 index 00000000..c5266c6f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/TotpCode.kt @@ -0,0 +1,21 @@ +package com.artemchep.keyguard.common.model + +import kotlinx.datetime.Instant +import kotlin.time.Duration + +data class TotpCode( + val code: String, + val counter: Counter, +) { + sealed interface Counter + + data class TimeBasedCounter( + val timestamp: Instant, + val expiration: Instant, + val duration: Duration, + ) : Counter + + data class IncrementBasedCounter( + val counter: Long, + ) : Counter +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/TotpToken.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/TotpToken.kt new file mode 100644 index 00000000..53d8349d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/TotpToken.kt @@ -0,0 +1,279 @@ +package com.artemchep.keyguard.common.model + +import arrow.core.Either +import arrow.core.flatten +import arrow.core.right +import io.ktor.http.Url + +private const val PREFIX_OTP_AUTH = "otpauth://" +private const val PREFIX_OTP_STEAM = "steam://" +private const val PREFIX_OTP_MOBILE = "motp://" + +sealed interface TotpToken { + companion object { + fun parse( + url: String, + ): Either = Either.catchAndFlatten { + when { + url.startsWith(PREFIX_OTP_AUTH) -> parseOtpAuth(url) + url.startsWith(PREFIX_OTP_STEAM) -> parseOtpSteam(url) + url.startsWith(PREFIX_OTP_MOBILE) -> parseOtpMobile(url) + else -> { + // By default we think that the url is a key and the token + // type is otp-auth. + TotpAuth.Builder() + .build( + keyBase32 = url, + raw = url, + ) + .right() + } + } + } + } + + val raw: String + val digits: Int + + data class TotpAuth( + val algorithm: CryptoHashAlgorithm, + val keyBase32: String, + override val raw: String, + override val digits: Int, + val period: Long, + ) : TotpToken { + internal class Builder( + var algorithm: CryptoHashAlgorithm = CryptoHashAlgorithm.SHA_1, + var digits: Int = 6, + var period: Long = 30L, + ) { + fun build( + raw: String, + keyBase32: String, + ) = TotpAuth( + algorithm = algorithm, + digits = digits, + period = period, + keyBase32 = keyBase32, + raw = raw, + ) + } + } + + data class HotpAuth( + val algorithm: CryptoHashAlgorithm, + val keyBase32: String, + override val raw: String, + override val digits: Int, + val counter: Long, + ) : TotpToken { + internal class Builder( + var algorithm: CryptoHashAlgorithm = CryptoHashAlgorithm.SHA_1, + var digits: Int = 6, + var counter: Long = 0L, + ) { + fun build( + raw: String, + keyBase32: String, + ) = HotpAuth( + algorithm = algorithm, + digits = digits, + counter = counter, + keyBase32 = keyBase32, + raw = raw, + ) + } + } + + data class SteamAuth( + val algorithm: CryptoHashAlgorithm, + val keyBase32: String, + override val raw: String, + ) : TotpToken { + companion object { + const val PERIOD = 30L + const val DIGITS = 5 + } + + override val digits: Int get() = DIGITS + + val period: Long get() = PERIOD + } + + data class MobileAuth( + val issuer: String?, + val username: String?, + val secret: String, + val pin: String?, + override val raw: String, + ) : TotpToken { + companion object { + const val PERIOD = 30L + const val DIGITS = 6 + } + + override val digits: Int get() = DIGITS + + val period: Long get() = PERIOD + } +} + +private fun parseOtpAuth( + url: String, +): Either = Either.catch { + val parsedUrl = Url(url) + when (parsedUrl.host) { + "hotp" -> parseHotpAuth(url, parsedUrl) + // totp + else -> parseTotpAuth(url, parsedUrl) + } +}.flatten() + +private fun parseTotpAuth( + raw: String, + url: Url, +): Either = Either.catch { + val builder = TotpToken.TotpAuth.Builder() + var keyBase32 = "" + + // Parse the parameters of the otp auth + val params = url.parameters + params["digits"]?.also { digitsParam -> + val n = digitsParam.toIntOrNull() + ?: return@also + if (n in 1..10) { + builder.digits = n + } + } + params["period"]?.also { periodParam -> + val n = periodParam.toLongOrNull() + ?: return@also + if (n > 0L) { + builder.period = n + } + } + params["secret"]?.also { secretParam -> + keyBase32 = secretParam + } + params["algorithm"]?.also { algorithmParam -> + val alg = when (algorithmParam.lowercase()) { + "sha1" -> CryptoHashAlgorithm.SHA_1 + "sha256" -> CryptoHashAlgorithm.SHA_256 + "sha512" -> CryptoHashAlgorithm.SHA_512 + else -> return@also + } + builder.algorithm = alg + } + + if (keyBase32.isBlank()) { + throw IllegalArgumentException("One time password key must not be empty.") + } + + builder.build( + keyBase32 = keyBase32, + raw = raw, + ) +} + +private fun parseHotpAuth( + raw: String, + url: Url, +): Either = Either.catch { + val builder = TotpToken.HotpAuth.Builder() + var keyBase32 = "" + + // Parse the parameters of the otp auth + val params = url.parameters + params["digits"]?.also { digitsParam -> + val n = digitsParam.toIntOrNull() + ?: return@also + if (n in 1..10) { + builder.digits = n + } + } + params["counter"]?.also { counterParam -> + val n = counterParam.toLongOrNull() + ?: return@also + builder.counter = n + } + params["secret"]?.also { secretParam -> + keyBase32 = secretParam + } + params["algorithm"]?.also { algorithmParam -> + val alg = when (algorithmParam.lowercase()) { + "sha1" -> CryptoHashAlgorithm.SHA_1 + "sha256" -> CryptoHashAlgorithm.SHA_256 + "sha512" -> CryptoHashAlgorithm.SHA_512 + else -> return@also + } + builder.algorithm = alg + } + + if (keyBase32.isBlank()) { + throw IllegalArgumentException("One time password key must not be empty.") + } + + builder.build( + keyBase32 = keyBase32, + raw = raw, + ) +} + +private fun parseOtpSteam( + url: String, +): Either = Either.catch { + val keyBase32 = url.substring(PREFIX_OTP_STEAM.length) + TotpToken.SteamAuth( + algorithm = CryptoHashAlgorithm.SHA_1, + keyBase32 = keyBase32, + raw = url, + ) +} + +// See: +// https://motp.sourceforge.net/#1.1 +// +// Example of the modified mOTP URI: +// motp://Google:artemchep?secret=haha&pin=1234 +private fun parseOtpMobile( + url: String, +): Either = Either.catch { + val data = url.substring(PREFIX_OTP_MOBILE.length) + val (issuer, username, params) = kotlin.run { + val parts = data.split('?') + if (parts.size != 2) { + throw IllegalArgumentException("URI is not a valid mOTP") + } + + val host = parts[0].split(':') + // First part is the issuer, second part of the host is the + // username. Both of these can be empty. + val issuer = host[0] + .takeIf { it.isNotEmpty() } + val username = host.getOrNull(1) + ?.takeIf { it.isNotEmpty() } + + val params = kotlin.run { + val fakeUrlString = "https://google.com?" + parts[1] + val fakeUrl = Url(fakeUrlString) + fakeUrl.parameters + } + Triple( + issuer, + username, + params, + ) + } + + val secret = requireNotNull(params["secret"]) { + "URI must include the mOTP secret" + } + val pin = params["pin"] + TotpToken.MobileAuth( + issuer = issuer, + username = username, + secret = secret, + pin = pin, + raw = url, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/UsernamePwnage.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/UsernamePwnage.kt new file mode 100644 index 00000000..1ee46d01 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/UsernamePwnage.kt @@ -0,0 +1,3 @@ +package com.artemchep.keyguard.common.model + +typealias UsernamePwnage = DHibpC diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/UsernameVariation.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/UsernameVariation.kt new file mode 100644 index 00000000..39713f71 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/UsernameVariation.kt @@ -0,0 +1,32 @@ +package com.artemchep.keyguard.common.model + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.AlternateEmail +import androidx.compose.material.icons.outlined.Call +import androidx.compose.material.icons.outlined.Email +import com.artemchep.keyguard.feature.auth.common.util.REGEX_EMAIL +import com.artemchep.keyguard.feature.auth.common.util.REGEX_PHONE_NUMBER + +enum class UsernameVariation { + USERNAME, + EMAIL, + PHONE, + ; + + companion object { + val default get() = USERNAME + + fun of(username: String) = when { + REGEX_EMAIL.matches(username) -> EMAIL + REGEX_PHONE_NUMBER.matches(username) -> PHONE + else -> default + } + } +} + +val UsernameVariation.icon + get() = when (this) { + UsernameVariation.EMAIL -> Icons.Outlined.Email + UsernameVariation.PHONE -> Icons.Outlined.Call + UsernameVariation.USERNAME -> Icons.Outlined.AlternateEmail + } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/UsernameVariation2.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/UsernameVariation2.kt new file mode 100644 index 00000000..5ebff4d5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/UsernameVariation2.kt @@ -0,0 +1,80 @@ +package com.artemchep.keyguard.common.model + +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.AlternateEmail +import androidx.compose.material.icons.outlined.Call +import androidx.compose.material.icons.outlined.Email +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.usecase.GetGravatarUrl +import com.artemchep.keyguard.feature.favicon.GravatarUrl +import com.artemchep.keyguard.ui.icons.EmailIcon +import com.artemchep.keyguard.ui.icons.IconBox + +sealed interface UsernameVariation2 { + data class Email( + val gravatarUrl: GravatarUrl? = null, + ) : UsernameVariation2 + + data object Username : UsernameVariation2 + + data object Phone : UsernameVariation2 + + companion object { + val default get() = Username + + suspend fun of( + getGravatarUrl: GetGravatarUrl, + username: String, + ) = when (UsernameVariation.of(username)) { + UsernameVariation.EMAIL -> { + val gravatarUrl = getGravatarUrl(username) + .attempt() + .bind() + .getOrNull() + Email( + gravatarUrl = gravatarUrl, + ) + } + + UsernameVariation.PHONE -> Phone + UsernameVariation.USERNAME -> Username + else -> default + } + } +} + +val UsernameVariation2.icon + get() = when (this) { + is UsernameVariation2.Email -> Icons.Outlined.Email + is UsernameVariation2.Phone -> Icons.Outlined.Call + is UsernameVariation2.Username -> Icons.Outlined.AlternateEmail + } + +@Composable +fun UsernameVariationIcon( + modifier: Modifier = Modifier, + usernameVariation: UsernameVariation2, +) { + when (usernameVariation) { + is UsernameVariation2.Email -> { + EmailIcon( + modifier = modifier + .size(24.dp) + .clip(CircleShape), + gravatarUrl = usernameVariation.gravatarUrl, + ) + } + + else -> { + val icon = usernameVariation.icon + IconBox(main = icon) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/VaultState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/VaultState.kt new file mode 100644 index 00000000..83c3d93c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/VaultState.kt @@ -0,0 +1,93 @@ +package com.artemchep.keyguard.common.model + +import arrow.core.Either +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.platform.LeCipher +import org.kodein.di.DI + +sealed interface VaultState { + class Create( + val createWithMasterPassword: WithPassword, + val createWithMasterPasswordAndBiometric: WithBiometric?, + ) : VaultState { + class WithPassword( + val getCreateIo: (String) -> IO, + ) + + class WithBiometric( + val getCipher: () -> Either, + val getCreateIo: (String) -> IO, + ) + } + + class Unlock( + val unlockWithMasterPassword: WithPassword, + val unlockWithBiometric: WithBiometric?, + val lockReason: String?, + ) : VaultState { + class WithPassword( + val getCreateIo: (String) -> IO, + ) + + class WithBiometric( + val getCipher: () -> Either, + val getCreateIo: () -> IO, + ) + } + + class Main( + val masterKey: MasterKey, + val changePassword: ChangePassword, + val di: DI, + ) : VaultState { + class ChangePassword( + private val key: Any, + val withMasterPassword: WithPassword, + val withMasterPasswordAndBiometric: WithBiometric?, + ) { + class WithPassword( + val getCreateIo: (String, String) -> IO, + ) + + class WithBiometric( + val getCipher: () -> Either, + val getCreateIo: (String, String) -> IO, + ) + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as ChangePassword + + if (key != other.key) return false + + return true + } + + override fun hashCode(): Int { + return key.hashCode() + } + } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as Main + + if (masterKey != other.masterKey) return false + if (changePassword != other.changePassword) return false + + return true + } + + override fun hashCode(): Int { + var result = masterKey.hashCode() + result = 31 * result + changePassword.hashCode() + return result + } + } + + data object Loading : VaultState +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/WithBiometric.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/WithBiometric.kt new file mode 100644 index 00000000..2bf6abfd --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/WithBiometric.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.common.model + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.platform.LeCipher + +class WithBiometric( + val getCipher: () -> LeCipher, + val getCreateIo: () -> IO, +) \ No newline at end of file diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/create/CreateRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/create/CreateRequest.kt new file mode 100644 index 00000000..ded8add7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/create/CreateRequest.kt @@ -0,0 +1,124 @@ +package com.artemchep.keyguard.common.model.create + +import arrow.optics.optics +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.feature.confirmation.organization.FolderInfo +import com.artemchep.keyguard.platform.LeUri +import kotlinx.collections.immutable.PersistentList +import kotlinx.collections.immutable.persistentListOf +import kotlinx.datetime.Instant + +@optics +data class CreateRequest( + val ownership: Ownership? = null, + val ownership2: Ownership2? = null, + val title: String? = null, + val note: String? = null, + val favorite: Boolean? = null, + val reprompt: Boolean? = null, + val uris: PersistentList = persistentListOf(), + val fido2Credentials: PersistentList = persistentListOf(), + val fields: PersistentList = persistentListOf(), + val attachments: PersistentList = persistentListOf(), + // types + val type: DSecret.Type? = null, + val login: Login = Login(), + val card: Card = Card(), + val identity: Identity = Identity(), + // other + val now: Instant, +) { + companion object; + + @optics + data class Ownership( + val accountId: String?, + val folderId: String?, + val organizationId: String?, + val collectionIds: Set, + ) { + companion object; + } + + @optics + data class Ownership2( + val accountId: String?, + val folder: FolderInfo, + val organizationId: String?, + val collectionIds: Set, + ) { + companion object; + } + + @optics + sealed interface Attachment { + companion object; + + val id: String + + @optics + data class Remote( + override val id: String, + val name: String, + ) : Attachment { + companion object + } + + @optics + data class Local( + override val id: String, + val uri: LeUri, + val name: String, + val size: Long? = null, + ) : Attachment { + companion object + } + } + + @optics + data class Login( + val username: String? = null, + val password: String? = null, + val totp: String? = null, + ) { + companion object; + } + + @optics + data class Card( + val cardholderName: String? = null, + val brand: String? = null, + val number: String? = null, + val fromMonth: String? = null, + val fromYear: String? = null, + val expMonth: String? = null, + val expYear: String? = null, + val code: String? = null, + ) { + companion object; + } + + @optics + data class Identity( + val title: String? = null, + val firstName: String? = null, + val middleName: String? = null, + val lastName: String? = null, + val address1: String? = null, + val address2: String? = null, + val address3: String? = null, + val city: String? = null, + val state: String? = null, + val postalCode: String? = null, + val country: String? = null, + val company: String? = null, + val email: String? = null, + val phone: String? = null, + val ssn: String? = null, + val username: String? = null, + val passportNumber: String? = null, + val licenseNumber: String? = null, + ) { + companion object; + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/Files.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/Files.kt new file mode 100644 index 00000000..1f89c634 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/Files.kt @@ -0,0 +1,14 @@ +package com.artemchep.keyguard.common.service + +enum class Files( + val filename: String, +) { + KEY("master_key"), + FINGERPRINT("fingerprint"), + DEVICE_ID("device_id"), + UI_STATE("ui_state"), + SESSION_METADATA("session_metadata"), + SETTINGS("settings"), + BREACHES("breaches"), + REVIEW("review"), +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/autofill/AutofillService.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/autofill/AutofillService.kt new file mode 100644 index 00000000..836529fb --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/autofill/AutofillService.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.service.autofill + +import kotlinx.coroutines.flow.Flow + +interface AutofillService { + fun status(): Flow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/autofill/AutofillServiceStatus.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/autofill/AutofillServiceStatus.kt new file mode 100644 index 00000000..4c649ccf --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/autofill/AutofillServiceStatus.kt @@ -0,0 +1,13 @@ +package com.artemchep.keyguard.common.service.autofill + +import com.artemchep.keyguard.platform.LeActivity + +sealed interface AutofillServiceStatus { + data class Enabled( + val onDisable: (() -> Unit)?, + ) : AutofillServiceStatus + + data class Disabled( + val onEnable: ((LeActivity) -> Unit)?, + ) : AutofillServiceStatus +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/clipboard/ClipboardService.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/clipboard/ClipboardService.kt new file mode 100644 index 00000000..54247530 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/clipboard/ClipboardService.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.common.service.clipboard + +interface ClipboardService { + fun setPrimaryClip( + value: String, + concealed: Boolean, + ) + + fun clearPrimaryClip() + + fun hasCopyNotification(): Boolean +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/connectivity/ConnectivityService.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/connectivity/ConnectivityService.kt new file mode 100644 index 00000000..64554d4a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/connectivity/ConnectivityService.kt @@ -0,0 +1,16 @@ +package com.artemchep.keyguard.common.service.connectivity + +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.first + +interface ConnectivityService { + val availableFlow: Flow + + suspend fun awaitAvailable(): Unit = availableFlow.first() + + /** + * Returns `true` if the device has active internet connection, + * `false` otherwise. + */ + fun isInternetAvailable(): Boolean +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/crypto/CipherEncryptor.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/crypto/CipherEncryptor.kt new file mode 100644 index 00000000..59d55a65 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/crypto/CipherEncryptor.kt @@ -0,0 +1,34 @@ +package com.artemchep.keyguard.common.service.crypto + +import com.artemchep.keyguard.provider.bitwarden.crypto.AsymmetricCryptoKey +import com.artemchep.keyguard.provider.bitwarden.crypto.DecodeResult +import com.artemchep.keyguard.provider.bitwarden.crypto.SymmetricCryptoKey2 + +interface CipherEncryptor { + @Suppress("EnumEntryName") + enum class Type( + val byte: Byte, + val type: String = byte.toString(), + ) { + AesCbc256_B64(byte = 0), + AesCbc128_HmacSha256_B64(byte = 1), + AesCbc256_HmacSha256_B64(byte = 2), + Rsa2048_OaepSha256_B64(byte = 3), + Rsa2048_OaepSha1_B64(byte = 4), + Rsa2048_OaepSha256_HmacSha256_B64(byte = 5), + Rsa2048_OaepSha1_HmacSha256_B64(byte = 6), + } + + fun decode2( + cipher: String, + symmetricCryptoKey: SymmetricCryptoKey2? = null, + asymmetricCryptoKey: AsymmetricCryptoKey? = null, + ): DecodeResult + + fun encode2( + cipherType: Type, + plainText: ByteArray, + symmetricCryptoKey: SymmetricCryptoKey2? = null, + asymmetricCryptoKey: AsymmetricCryptoKey? = null, + ): String +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/crypto/CryptoGenerator.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/crypto/CryptoGenerator.kt new file mode 100644 index 00000000..d2114d7b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/crypto/CryptoGenerator.kt @@ -0,0 +1,49 @@ +package com.artemchep.keyguard.common.service.crypto + +import com.artemchep.keyguard.common.model.Argon2Mode + +interface CryptoGenerator { + fun hkdf( + seed: ByteArray, + salt: ByteArray? = null, + info: ByteArray? = null, + length: Int = 32, + ): ByteArray + + fun pbkdf2( + seed: ByteArray, + salt: ByteArray, + iterations: Int = 1, + length: Int = 32, + ): ByteArray + + fun argon2( + mode: Argon2Mode, + seed: ByteArray, + salt: ByteArray, + iterations: Int, + memoryKb: Int, + parallelism: Int, + ): ByteArray + + fun seed( + length: Int = 32, + ): ByteArray + + fun hmacSha256( + key: ByteArray, + data: ByteArray, + ): ByteArray + + fun hashSha1(data: ByteArray): ByteArray + + fun hashSha256(data: ByteArray): ByteArray + + fun hashMd5(data: ByteArray): ByteArray + + fun uuid(): String + + fun random(): Int + + fun random(range: IntRange): Int +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/crypto/FileEncryptor.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/crypto/FileEncryptor.kt new file mode 100644 index 00000000..46f9c9a3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/crypto/FileEncryptor.kt @@ -0,0 +1,25 @@ +package com.artemchep.keyguard.common.service.crypto + +import java.io.ByteArrayInputStream +import java.io.InputStream + +interface FileEncryptor { + fun decode( + input: ByteArray, + key: ByteArray, + ): ByteArray + + fun decode( + input: InputStream, + key: ByteArray, + ): InputStream { + val data = input.readBytes() + val out = decode(data, key) + return ByteArrayInputStream(out) + } + + fun encode( + data: ByteArray, + key: ByteArray, + ): ByteArray +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/deeplink/DeeplinkService.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/deeplink/DeeplinkService.kt new file mode 100644 index 00000000..42bf588d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/deeplink/DeeplinkService.kt @@ -0,0 +1,13 @@ +package com.artemchep.keyguard.common.service.deeplink + +import kotlinx.coroutines.flow.Flow + +interface DeeplinkService { + fun get(key: String): String? + + fun getFlow(key: String): Flow + + fun put(key: String, value: String?) + + fun clear(key: String) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/deeplink/impl/DeeplinkServiceImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/deeplink/impl/DeeplinkServiceImpl.kt new file mode 100644 index 00000000..ce9654fc --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/deeplink/impl/DeeplinkServiceImpl.kt @@ -0,0 +1,36 @@ +package com.artemchep.keyguard.common.service.deeplink.impl + +import com.artemchep.keyguard.common.service.deeplink.DeeplinkService +import kotlinx.collections.immutable.persistentMapOf +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.update +import org.kodein.di.DirectDI + +class DeeplinkServiceImpl( +) : DeeplinkService { + constructor(directDI: DirectDI) : this( + ) + + private val sink = MutableStateFlow(persistentMapOf()) + + override fun get(key: String): String? = sink.value[key] + + override fun getFlow(key: String): Flow = sink + .map { state -> + state[key] + } + + override fun put(key: String, value: String?) { + sink.update { state -> + state.put(key, value) + } + } + + override fun clear(key: String) { + sink.update { state -> + state.remove(key) + } + } +} \ No newline at end of file diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/download/DownloadManager.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/download/DownloadManager.kt new file mode 100644 index 00000000..e1c4e613 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/download/DownloadManager.kt @@ -0,0 +1,37 @@ +package com.artemchep.keyguard.common.service.download + +import com.artemchep.keyguard.android.downloader.journal.room.DownloadInfoEntity2 +import kotlinx.coroutines.flow.Flow + +interface DownloadManager { + fun statusByDownloadId2(downloadId: String): Flow + + fun statusByTag(tag: DownloadInfoEntity2.AttachmentDownloadTag): Flow + + class QueueResult( + val info: DownloadInfoEntity2, + val flow: Flow, + ) + + suspend fun queue( + downloadInfo: DownloadInfoEntity2, + ): QueueResult + + suspend fun queue( + tag: DownloadInfoEntity2.AttachmentDownloadTag, + url: String, + urlIsOneTime: Boolean, + name: String, + key: ByteArray? = null, + attempt: Int = 0, + worker: Boolean = false, + ): QueueResult + + suspend fun removeByDownloadId( + downloadId: String, + ) + + suspend fun removeByTag( + tag: DownloadInfoEntity2.AttachmentDownloadTag, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/download/DownloadProgress.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/download/DownloadProgress.kt new file mode 100644 index 00000000..0fb069ed --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/download/DownloadProgress.kt @@ -0,0 +1,25 @@ +package com.artemchep.keyguard.common.service.download + +import arrow.core.Either +import java.io.File + +sealed interface DownloadProgress { + data object None : DownloadProgress + + data class Loading( + val downloaded: Long? = null, + val total: Long? = null, + ) : DownloadProgress { + val percentage: Float? = + if (downloaded != null && total != null) { + val p = downloaded.toDouble() / total.toDouble() + p.toFloat().coerceIn(0f..1f) + } else { + null + } + } + + data class Complete( + val result: Either, + ) : DownloadProgress +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/download/DownloadService.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/download/DownloadService.kt new file mode 100644 index 00000000..70424be4 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/download/DownloadService.kt @@ -0,0 +1,15 @@ +package com.artemchep.keyguard.common.service.download + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.DownloadAttachmentRequestData +import com.artemchep.keyguard.common.model.RemoveAttachmentRequest + +interface DownloadService { + fun download( + request: DownloadAttachmentRequestData, + ): IO + + fun remove( + request: RemoveAttachmentRequest, + ): IO +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/download/DownloadServiceImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/download/DownloadServiceImpl.kt new file mode 100644 index 00000000..a9ee6197 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/download/DownloadServiceImpl.kt @@ -0,0 +1,59 @@ +package com.artemchep.keyguard.common.service.download + +import com.artemchep.keyguard.android.downloader.journal.room.DownloadInfoEntity2 +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.model.DownloadAttachmentRequestData +import com.artemchep.keyguard.common.model.RemoveAttachmentRequest +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class DownloadServiceImpl( + private val downloadManager: DownloadManager, +) : DownloadService { + constructor( + directDI: DirectDI, + ) : this( + downloadManager = directDI.instance(), + ) + + override fun download( + request: DownloadAttachmentRequestData, + ): IO = ioEffect { + val tag = DownloadInfoEntity2.AttachmentDownloadTag( + localCipherId = request.localCipherId, + remoteCipherId = request.remoteCipherId, + attachmentId = request.attachmentId, + ) + downloadManager.queue( + tag = tag, + url = request.url, + urlIsOneTime = request.urlIsOneTime, + name = request.name, + key = request.encryptionKey, + worker = true, + ) + } + + override fun remove( + request: RemoveAttachmentRequest, + ): IO = ioEffect { + when (request) { + is RemoveAttachmentRequest.ByDownloadId -> request.handle() + is RemoveAttachmentRequest.ByLocalCipherAttachment -> request.handle() + } + } + + private suspend fun RemoveAttachmentRequest.ByDownloadId.handle() { + downloadManager.removeByDownloadId(downloadId) + } + + private suspend fun RemoveAttachmentRequest.ByLocalCipherAttachment.handle() { + val ref = DownloadInfoEntity2.AttachmentDownloadTag( + localCipherId = localCipherId, + remoteCipherId = remoteCipherId, + attachmentId = attachmentId, + ) + downloadManager.removeByTag(tag = ref) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/extract/LinkInfoExtractor.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/extract/LinkInfoExtractor.kt new file mode 100644 index 00000000..02c77f8a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/extract/LinkInfoExtractor.kt @@ -0,0 +1,16 @@ +package com.artemchep.keyguard.common.service.extract + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.LinkInfo +import kotlin.reflect.KClass + +interface LinkInfoExtractor where From : LinkInfo, To : LinkInfo { + val from: KClass + val to: KClass + + fun extractInfo( + uri: From, + ): IO + + fun handles(uri: From): Boolean +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/extract/LinkInfoRegistry.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/extract/LinkInfoRegistry.kt new file mode 100644 index 00000000..7f647614 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/extract/LinkInfoRegistry.kt @@ -0,0 +1,42 @@ +package com.artemchep.keyguard.common.service.extract + +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.LinkInfo + +class LinkInfoRegistry( + private val extractors: List>, +) { + suspend fun process(uri: DSecret.Uri): List { + val allArtifacts = mutableListOf() + var newArtifacts = listOf( + uri, + ) + do { + allArtifacts.addAll(newArtifacts) + + // Generate new list of artifacts from + // the old one. + newArtifacts = newArtifacts + .flatMap { linkInfo -> + extractors + .mapNotNull { extractor -> + val inputMatches = + extractor.from.java.isAssignableFrom(linkInfo.javaClass) && + extractor.handles(linkInfo) + if (inputMatches) { + extractor.extractInfo(linkInfo) + .attempt() + .bind() + // just ignore the ones that failed + .getOrNull() + } else { + null + } + } + } + } while (newArtifacts.isNotEmpty()) + return allArtifacts + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/extract/impl/LinkInfoPlatformExtractor.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/extract/impl/LinkInfoPlatformExtractor.kt new file mode 100644 index 00000000..96f25297 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/extract/impl/LinkInfoPlatformExtractor.kt @@ -0,0 +1,81 @@ +package com.artemchep.keyguard.common.service.extract.impl + +import arrow.core.Either +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.LinkInfoPlatform +import com.artemchep.keyguard.common.service.extract.LinkInfoExtractor +import io.ktor.http.URLBuilder +import io.ktor.http.Url +import io.ktor.http.encodedPath +import kotlin.reflect.KClass + +class LinkInfoPlatformExtractor : LinkInfoExtractor { + companion object { + private const val ANDROID_SCHEME_PREFIX = "androidapp://" + private const val IOS_SCHEME_PREFIX = "iosapp://" + + private const val HTTP_SCHEME_PREFIX = "http://" + private const val HTTPS_SCHEME_PREFIX = "https://" + } + + override val from: KClass get() = DSecret.Uri::class + + override val to: KClass get() = LinkInfoPlatform::class + + override fun extractInfo(uri: DSecret.Uri): IO = ioEffect { + val url = uri.uri + when { + url.startsWith(ANDROID_SCHEME_PREFIX, ignoreCase = true) -> + createAndroidPlatform(uri) + + url.startsWith(IOS_SCHEME_PREFIX, ignoreCase = true) -> + createIOSPlatform(uri) + + url.startsWith(HTTP_SCHEME_PREFIX, ignoreCase = true) || + url.startsWith(HTTPS_SCHEME_PREFIX, ignoreCase = true) -> + createWebPlatform(uri) + + else -> LinkInfoPlatform.Other + } + } + + private fun createAndroidPlatform(uri: DSecret.Uri): LinkInfoPlatform { + val packageName = uri.uri + .substring(ANDROID_SCHEME_PREFIX.length) + return LinkInfoPlatform.Android( + packageName = packageName, + ) + } + + private fun createIOSPlatform(uri: DSecret.Uri): LinkInfoPlatform { + val packageName = uri.uri + .substring(IOS_SCHEME_PREFIX.length) + return LinkInfoPlatform.IOS( + packageName = packageName, + ) + } + + private fun createWebPlatform(uri: DSecret.Uri): LinkInfoPlatform { + val parsedUri = Either + .catch { + Url(uri.uri) + } + .getOrNull() + // failed to parse the url, probably we can not open it + ?: return LinkInfoPlatform.Other + + val frontPageUrl = URLBuilder(parsedUri).apply { + parameters.clear() + fragment = "" + encodedPath = "" + }.build() + return LinkInfoPlatform.Web( + url = parsedUri, + frontPageUrl = frontPageUrl, + ) + } + + override fun handles(uri: DSecret.Uri): Boolean = true +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/gpmprivapps/PrivilegedAppsService.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/gpmprivapps/PrivilegedAppsService.kt new file mode 100644 index 00000000..55cb0559 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/gpmprivapps/PrivilegedAppsService.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.service.gpmprivapps + +import com.artemchep.keyguard.common.io.IO + +interface PrivilegedAppsService { + fun get(): IO +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/gpmprivapps/impl/PrivilegedAppsServiceImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/gpmprivapps/impl/PrivilegedAppsServiceImpl.kt new file mode 100644 index 00000000..f2be4ae1 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/gpmprivapps/impl/PrivilegedAppsServiceImpl.kt @@ -0,0 +1,28 @@ +package com.artemchep.keyguard.common.service.gpmprivapps.impl + +import arrow.core.partially1 +import com.artemchep.keyguard.common.service.gpmprivapps.PrivilegedAppsService +import com.artemchep.keyguard.common.service.text.TextService +import com.artemchep.keyguard.common.service.text.readFromResourcesAsText +import com.artemchep.keyguard.res.Res +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PrivilegedAppsServiceImpl( + private val textService: TextService, +) : PrivilegedAppsService { + private val jsonIo = ::loadJustDeleteMeRawData + .partially1(textService) + + constructor( + directDI: DirectDI, + ) : this( + textService = directDI.instance(), + ) + + override fun get() = jsonIo +} + +private suspend fun loadJustDeleteMeRawData( + textService: TextService, +) = textService.readFromResourcesAsText(Res.files.gpm_passkeys_privileged_apps) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/all/BreachesLocalDataSource.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/all/BreachesLocalDataSource.kt new file mode 100644 index 00000000..bad8732a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/all/BreachesLocalDataSource.kt @@ -0,0 +1,15 @@ +package com.artemchep.keyguard.common.service.hibp.breaches.all + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.hibp.breaches.all.model.LocalBreachesEntity +import kotlinx.coroutines.flow.Flow + +interface BreachesLocalDataSource { + fun put( + entity: LocalBreachesEntity?, + ): IO + + fun get(): Flow + + fun clear(): IO +} \ No newline at end of file diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/all/BreachesRemoteDataSource.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/all/BreachesRemoteDataSource.kt new file mode 100644 index 00000000..ae86810e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/all/BreachesRemoteDataSource.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.common.service.hibp.breaches.all + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.provider.bitwarden.entity.HibpBreachGroup + +interface BreachesRemoteDataSource { + fun get(): IO +} \ No newline at end of file diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/all/BreachesRepository.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/all/BreachesRepository.kt new file mode 100644 index 00000000..3fe64df3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/all/BreachesRepository.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.common.service.hibp.breaches.all + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.provider.bitwarden.entity.HibpBreachGroup + +interface BreachesRepository { + fun get(): IO +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/all/impl/BreachesLocalDataSourceImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/all/impl/BreachesLocalDataSourceImpl.kt new file mode 100644 index 00000000..96dca7b3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/all/impl/BreachesLocalDataSourceImpl.kt @@ -0,0 +1,60 @@ +package com.artemchep.keyguard.common.service.hibp.breaches.all.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.Files +import com.artemchep.keyguard.common.service.hibp.breaches.all.BreachesLocalDataSource +import com.artemchep.keyguard.common.service.hibp.breaches.all.model.LocalBreachesEntity +import com.artemchep.keyguard.common.service.keyvalue.KeyValueStore +import com.artemchep.keyguard.common.service.keyvalue.getObject +import kotlinx.coroutines.flow.Flow +import kotlinx.serialization.encodeToString +import kotlinx.serialization.json.Json +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class BreachesLocalDataSourceImpl( + private val store: KeyValueStore, + private val json: Json, +) : BreachesLocalDataSource { + companion object { + private const val KEY_LAST_BREACHES = "last_breaches" + } + + private val lastBreachesPref = store + .getObject( + key = KEY_LAST_BREACHES, + defaultValue = null, + serialize = { key -> + if (key == null) { + return@getObject "" + } + + json.encodeToString(key) + }, + deserialize = { data -> + if (data.isBlank()) { + return@getObject null + } + // If any exception happens, we just assume that the data + // is not present at all. Note: this implicitly clears + // the local data of the user. + kotlin.runCatching { + json.decodeFromString(data) + }.getOrNull() + }, + ) + + constructor(directDI: DirectDI) : this( + store = directDI.instance(arg = Files.BREACHES), + json = directDI.instance(), + ) + + override fun put( + entity: LocalBreachesEntity?, + ): IO = lastBreachesPref + .setAndCommit(entity) + + override fun get(): Flow = lastBreachesPref + + override fun clear(): IO = put(null) +} \ No newline at end of file diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/all/impl/BreachesRemoteDataSourceImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/all/impl/BreachesRemoteDataSourceImpl.kt new file mode 100644 index 00000000..bfb5fabf --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/all/impl/BreachesRemoteDataSourceImpl.kt @@ -0,0 +1,41 @@ +package com.artemchep.keyguard.common.service.hibp.breaches.all.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.service.hibp.breaches.all.BreachesRemoteDataSource +import com.artemchep.keyguard.provider.bitwarden.api.builder.bodyOrApiException +import com.artemchep.keyguard.provider.bitwarden.entity.HibpBreachGroup +import com.artemchep.keyguard.provider.bitwarden.entity.HibpBreachResponse +import io.ktor.client.HttpClient +import io.ktor.client.request.get +import io.ktor.http.userAgent +import kotlinx.coroutines.Dispatchers +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class BreachesRemoteDataSourceImpl( + private val httpClient: HttpClient, +) : BreachesRemoteDataSource { + constructor(directDI: DirectDI) : this( + httpClient = directDI.instance(), + ) + + override fun get(): IO = breachesRequestIo() + .map { + HibpBreachGroup(it) + } + + private fun breachesRequestIo( + ): IO> = ioEffect(Dispatchers.IO) { + // https://haveibeenpwned.com/API/v3#AllBreaches + val url = "https://haveibeenpwned.com/api/v3/breaches" + val breaches = httpClient + .get(url) { + // https://haveibeenpwned.com/API/v3#UserAgent + userAgent("Keyguard") + } + .bodyOrApiException>() + breaches + } +} \ No newline at end of file diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/all/impl/BreachesRepositoryImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/all/impl/BreachesRepositoryImpl.kt new file mode 100644 index 00000000..714e362e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/all/impl/BreachesRepositoryImpl.kt @@ -0,0 +1,89 @@ +package com.artemchep.keyguard.common.service.hibp.breaches.all.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.flatMap +import com.artemchep.keyguard.common.io.flatTap +import com.artemchep.keyguard.common.io.handleError +import com.artemchep.keyguard.common.io.handleErrorTap +import com.artemchep.keyguard.common.io.io +import com.artemchep.keyguard.common.io.measure +import com.artemchep.keyguard.common.io.toIO +import com.artemchep.keyguard.common.service.hibp.breaches.all.BreachesLocalDataSource +import com.artemchep.keyguard.common.service.hibp.breaches.all.BreachesRemoteDataSource +import com.artemchep.keyguard.common.service.hibp.breaches.all.BreachesRepository +import com.artemchep.keyguard.common.service.hibp.breaches.all.model.LocalBreachesEntity +import com.artemchep.keyguard.common.service.logging.LogRepository +import com.artemchep.keyguard.common.service.logging.postDebug +import com.artemchep.keyguard.provider.bitwarden.entity.HibpBreachGroup +import kotlinx.datetime.Clock +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.random.Random +import kotlin.time.Duration + +class BreachesRepositoryImpl( + private val logRepository: LogRepository, + private val localDataSource: BreachesLocalDataSource, + private val remoteDataSource: BreachesRemoteDataSource, +) : BreachesRepository { + companion object { + private const val TAG = "BreachesRepository" + + /** + * After this duration, the app will try + * to fetch the items again. + */ + private val CACHE_DURATION = with(Duration) { 7.days } + } + + constructor(directDI: DirectDI) : this( + logRepository = directDI.instance(), + localDataSource = directDI.instance(), + remoteDataSource = directDI.instance(), + ) + + override fun get(): IO = localDataSource.get().toIO() + .flatMap { localEntity -> + logRepository.postDebug(TAG) { + "Got breaches from local." + } + if (localEntity != null) { + return@flatMap if (localEntity.hasExpired()) { + getRemoteAndSave() + .handleError { localEntity.model } + } else { + io(localEntity.model) + } + } + + getRemoteAndSave() + } + + /** + * We are making it fluctuate a bit so when the time comes a + * user doesn't have to query 100% of the passwords at the same + * time. + */ + private fun LocalBreachesEntity.hasExpired() = kotlin.run { + val age = Clock.System.now() - updatedAt + age > CACHE_DURATION.times(0.7 + Random.nextDouble(0.3)) + } + + private fun getRemoteAndSave( + ) = remoteDataSource.get() + .flatTap { remoteEntity -> + val newLocalEntity = LocalBreachesEntity( + updatedAt = Clock.System.now(), + model = remoteEntity, + ) + localDataSource.put(newLocalEntity) + .handleErrorTap { + it.printStackTrace() + } + } + .measure { duration, _ -> + logRepository.postDebug(TAG) { + "Got breaches from HIBP in $duration." + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/all/model/LocalBreachesEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/all/model/LocalBreachesEntity.kt new file mode 100644 index 00000000..baf42274 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/all/model/LocalBreachesEntity.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.common.service.hibp.breaches.all.model + +import com.artemchep.keyguard.provider.bitwarden.entity.HibpBreachGroup +import kotlinx.datetime.Instant +import kotlinx.serialization.Serializable + +@Serializable +data class LocalBreachesEntity( + val updatedAt: Instant, + val model: HibpBreachGroup, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/find/AccountPwnageDataSource.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/find/AccountPwnageDataSource.kt new file mode 100644 index 00000000..eeb6fbd9 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/find/AccountPwnageDataSource.kt @@ -0,0 +1,3 @@ +package com.artemchep.keyguard.common.service.hibp.breaches.find + +interface AccountPwnageDataSource diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/find/AccountPwnageDataSourceLocal.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/find/AccountPwnageDataSourceLocal.kt new file mode 100644 index 00000000..027bbfed --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/find/AccountPwnageDataSourceLocal.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.common.service.hibp.breaches.find + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.data.pwnage.AccountBreach + +interface AccountPwnageDataSourceLocal : AccountPwnageDataSource { + fun put( + entity: AccountBreach, + ): IO + + fun getOne( + username: String, + ): IO + + fun getMany( + usernames: Collection, + ): IO> + + fun clear(): IO +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/find/AccountPwnageDataSourceRemote.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/find/AccountPwnageDataSourceRemote.kt new file mode 100644 index 00000000..8cf805ac --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/find/AccountPwnageDataSourceRemote.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.common.service.hibp.breaches.find + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.model.UsernamePwnage + +interface AccountPwnageDataSourceRemote : AccountPwnageDataSource { + fun check( + accountId: AccountId, + username: String, + ): IO +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/find/AccountPwnageRepository.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/find/AccountPwnageRepository.kt new file mode 100644 index 00000000..08fbe7cd --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/find/AccountPwnageRepository.kt @@ -0,0 +1,19 @@ +package com.artemchep.keyguard.common.service.hibp.breaches.find + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.model.UsernamePwnage + +interface AccountPwnageRepository { + fun checkOne( + accountId: AccountId, + username: String, + cache: Boolean, + ): IO + + fun checkMany( + accountId: AccountId, + usernames: Set, + cache: Boolean, + ): IO> +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/find/impl/AccountPwnageDataSourceLocalImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/find/impl/AccountPwnageDataSourceLocalImpl.kt new file mode 100644 index 00000000..102ac75f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/find/impl/AccountPwnageDataSourceLocalImpl.kt @@ -0,0 +1,68 @@ +package com.artemchep.keyguard.common.service.hibp.breaches.find.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.service.hibp.breaches.find.AccountPwnageDataSourceLocal +import com.artemchep.keyguard.core.store.DatabaseDispatcher +import com.artemchep.keyguard.core.store.DatabaseManager +import com.artemchep.keyguard.data.Database +import com.artemchep.keyguard.data.pwnage.AccountBreach +import kotlinx.coroutines.CoroutineDispatcher +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class AccountPwnageDataSourceLocalImpl( + private val databaseManager: DatabaseManager, + private val dispatcher: CoroutineDispatcher, +) : AccountPwnageDataSourceLocal { + constructor(directDI: DirectDI) : this( + databaseManager = directDI.instance(), + dispatcher = directDI.instance(tag = DatabaseDispatcher), + ) + + override fun put( + entity: AccountBreach, + ): IO = dbEffect { db -> + db.accountBreachQueries.insert( + count = entity.count, + updatedAt = entity.updatedAt, + data = entity.data_, + username = entity.username, + ) + } + + override fun getOne( + username: String, + ): IO = dbEffect { db -> + val model = db.accountBreachQueries + .getByUsername(username) + .executeAsOneOrNull() + model + } + + override fun getMany( + usernames: Collection, + ): IO> = dbEffect { db -> + val list = db.accountBreachQueries + .getByUsernames(usernames) + .executeAsList() + usernames + .asSequence() + .map { username -> + val entity = list.firstOrNull { it.username == username } + username to entity + } + .toMap() + } + + override fun clear(): IO = dbEffect { db -> + db.accountBreachQueries.deleteAll() + } + + private fun dbEffect(block: suspend (Database) -> T) = databaseManager + .get() + .effectMap(dispatcher, block) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/find/impl/AccountPwnageDataSourceRemoteImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/find/impl/AccountPwnageDataSourceRemoteImpl.kt new file mode 100644 index 00000000..d17bd49f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/find/impl/AccountPwnageDataSourceRemoteImpl.kt @@ -0,0 +1,96 @@ +package com.artemchep.keyguard.common.service.hibp.breaches.find.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.mutex +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.model.DHibp +import com.artemchep.keyguard.common.model.DHibpC +import com.artemchep.keyguard.common.model.UsernamePwnage +import com.artemchep.keyguard.common.service.hibp.breaches.find.AccountPwnageDataSourceRemote +import com.artemchep.keyguard.common.service.text.Base64Service +import com.artemchep.keyguard.core.store.DatabaseManager +import com.artemchep.keyguard.provider.bitwarden.api.builder.api +import com.artemchep.keyguard.provider.bitwarden.api.builder.breach +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenTokenRepository +import com.artemchep.keyguard.provider.bitwarden.usecase.util.withRefreshableAccessToken +import io.ktor.client.HttpClient +import kotlinx.coroutines.sync.Mutex +import kotlinx.datetime.TimeZone +import kotlinx.datetime.atStartOfDayIn +import kotlinx.serialization.json.Json +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class AccountPwnageDataSourceRemoteImpl( + private val tokenRepository: BitwardenTokenRepository, + private val base64Service: Base64Service, + private val json: Json, + private val httpClient: HttpClient, + private val db: DatabaseManager, +) : AccountPwnageDataSourceRemote { + companion object { + private const val DEFAULT_RETRY_AFTER_MS = 1000L + } + + private val mutex = Mutex() + + constructor(directDI: DirectDI) : this( + tokenRepository = directDI.instance(), + base64Service = directDI.instance(), + json = directDI.instance(), + httpClient = directDI.instance(), + db = directDI.instance(), + ) + + override fun check( + accountId: AccountId, + username: String, + ): IO = ioEffect { + val user = tokenRepository.getById(accountId) + .bind() + requireNotNull(user) { + "Failed to find a token!" + } + + val breaches = withRefreshableAccessToken( + base64Service = base64Service, + httpClient = httpClient, + json = json, + db = db, + user = user, + ) { latestUser -> + val serverEnv = latestUser.env.back() + val accessToken = requireNotNull(latestUser.token).accessToken + serverEnv.api.hibp.breach( + httpClient = httpClient, + env = serverEnv, + token = accessToken, + username = username, + ) + } + + val f = breaches + .map { + DHibp( + title = it.title.orEmpty(), + name = it.name.orEmpty(), + description = it.description + .orEmpty() + .replace("^(
|\\s)+".toRegex(), "") + .replace("(
|\\s)+$".toRegex(), ""), + website = it.domain.orEmpty(), + icon = it.logoPath.orEmpty(), + count = it.pwnCount, + occurredAt = it.breachDate?.atStartOfDayIn(TimeZone.UTC), + reportedAt = it.addedDate?.atStartOfDayIn(TimeZone.UTC), + dataClasses = it.dataClasses, + ) + } + DHibpC(f) + }.mutex(mutex) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/find/impl/AccountPwnageRepositoryImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/find/impl/AccountPwnageRepositoryImpl.kt new file mode 100644 index 00000000..e63a3dbf --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/breaches/find/impl/AccountPwnageRepositoryImpl.kt @@ -0,0 +1,205 @@ +package com.artemchep.keyguard.common.service.hibp.breaches.find.impl + +import arrow.core.Either +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.effectTap +import com.artemchep.keyguard.common.io.flatMap +import com.artemchep.keyguard.common.io.handleError +import com.artemchep.keyguard.common.io.handleErrorWith +import com.artemchep.keyguard.common.io.io +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.io.measure +import com.artemchep.keyguard.common.io.parallel +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.model.UsernamePwnage +import com.artemchep.keyguard.common.service.hibp.breaches.find.AccountPwnageDataSourceLocal +import com.artemchep.keyguard.common.service.hibp.breaches.find.AccountPwnageDataSourceRemote +import com.artemchep.keyguard.common.service.hibp.breaches.find.AccountPwnageRepository +import com.artemchep.keyguard.common.service.logging.LogRepository +import com.artemchep.keyguard.data.pwnage.AccountBreach +import kotlinx.coroutines.Dispatchers +import kotlinx.datetime.Clock +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.random.Random +import kotlin.time.Duration + +class AccountPwnageRepositoryImpl( + private val logRepository: LogRepository, + private val localDataSource: AccountPwnageDataSourceLocal, + private val remoteDataSource: AccountPwnageDataSourceRemote, +) : AccountPwnageRepository { + companion object { + private const val TAG = "AccountPwnage" + + /** + * After this duration, the app will try + * to fetch the items again. + */ + private val CACHE_DURATION = with(Duration) { 21.days } + } + + constructor(directDI: DirectDI) : this( + logRepository = directDI.instance(), + localDataSource = directDI.instance(), + remoteDataSource = directDI.instance(), + ) + + override fun checkOne( + accountId: AccountId, + username: String, + cache: Boolean, + ): IO = localDataSource + .getOne(username) + .handleError { null } + .flatMap { localPwnage -> + localPwnage?.let { entity -> + val localIo = io(entity) + .effectTap { pwnage -> + val msg = kotlin.run { + val passwordPrefix = username.take(2) + val passwordOccurrences = pwnage.count + "Obtained local pwnage report for '$passwordPrefix****', $passwordOccurrences occurrences." + } + logRepository.post(TAG, msg) + } + .map { + UsernamePwnage( + leaks = emptyList(), + ) + } + + if (entity.hasExpired()) { + checkRemote(accountId, username, cache = cache) + .handleErrorWith { + localIo + } + } else { + localIo + } + } + // Otherwise check the remote data source and + // store the result in the local one. + ?: checkRemote(accountId, username, cache = cache) + } + + override fun checkMany( + accountId: AccountId, + usernames: Set, + cache: Boolean, + ): IO> = ioEffect { + // According to + // https://stackoverflow.com/a/49960506/1408535 + // maximum number of query parameters is usually + // 999 per query. We do want to be safe, so we use a + // lower value. + val bucketSize = 100 + val entities = usernames + .windowed( + size = bucketSize, + step = bucketSize, + partialWindows = true, + ) + .flatMap { accountsWindow -> + localDataSource + .getMany(accountsWindow) + // On an error, fake a response with + // no data returned. + .handleError { + accountsWindow + .associateWith { null } + } + .bind() + .toList() + } + .toMap() + + val out = mutableMapOf() + val pending = mutableListOf>>>() + entities.entries.forEach { (password, entity) -> + if (entity != null) { + // TODO: dfsdf + val localPwnage = UsernamePwnage( + leaks = emptyList(), + ) +// val localPwnage = PasswordPwnage( +// occurrences = entity.count.toInt(), +// ) + + if (entity.hasExpired()) { + pending += checkRemote(accountId, password, cache = cache) + .handleError { + localPwnage + } + .attempt() + .map { password to it } + } else { + // No need to do any requests, just reuse the + // cached report. + out[password] = localPwnage + } + } else { + pending += checkRemote(accountId, password, cache = cache) + .attempt() + .map { password to it } + } + } + + val q = out.size + val s = pending.size + + val z = pending + .parallel( + context = Dispatchers.IO, + parallelism = 8, + ) + .bind() + z.forEach { (password, result) -> + val pwnage = result.getOrNull() + out[password] = pwnage + } + + out + } + + /** + * We are making it fluctuate a bit so when the time comes a + * user doesn't have to query 100% of the passwords at the same + * time. + */ + private fun AccountBreach.hasExpired() = kotlin.run { + val age = Clock.System.now() - updatedAt + age > CACHE_DURATION.times(0.7 + Random.nextDouble(0.3)) + } + + private fun checkRemote( + accountId: AccountId, + password: String, + cache: Boolean = true, + ) = remoteDataSource + .check(accountId, password) + .effectTap { remotePwnage -> +// if (cache) { +// val now = Clock.System.now() +// val count = remotePwnage.occurrences.toLong() +// val entity = AccountBreach( +// password = password, +// count = count, +// updatedAt = now, +// ) +// localDataSource +// .put(entity) +// .bind() +// } + } + .measure { duration, remotePwnage -> +// logRepository.postDebug(TAG) { +// val prefix = password.take(4) +// val count = remotePwnage.occurrences +// "Obtained remote pwnage report for '$prefix****': $count occurrences, took $duration." +// } + } +} \ No newline at end of file diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/passwords/PasswordPwnageDataSource.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/passwords/PasswordPwnageDataSource.kt new file mode 100644 index 00000000..93b4aa78 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/passwords/PasswordPwnageDataSource.kt @@ -0,0 +1,3 @@ +package com.artemchep.keyguard.common.service.hibp.passwords + +interface PasswordPwnageDataSource diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/passwords/PasswordPwnageDataSourceLocal.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/passwords/PasswordPwnageDataSourceLocal.kt new file mode 100644 index 00000000..4d065db2 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/passwords/PasswordPwnageDataSourceLocal.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.common.service.hibp.passwords + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.data.pwnage.PasswordBreach + +interface PasswordPwnageDataSourceLocal : PasswordPwnageDataSource { + fun put( + entity: PasswordBreach, + ): IO + + fun getOne( + password: String, + ): IO + + fun getMany( + passwords: Collection, + ): IO> + + fun clear(): IO +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/passwords/PasswordPwnageDataSourceRemote.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/passwords/PasswordPwnageDataSourceRemote.kt new file mode 100644 index 00000000..6c6e3df1 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/passwords/PasswordPwnageDataSourceRemote.kt @@ -0,0 +1,10 @@ +package com.artemchep.keyguard.common.service.hibp.passwords + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.PasswordPwnage + +interface PasswordPwnageDataSourceRemote : PasswordPwnageDataSource { + fun check( + password: String, + ): IO +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/passwords/PasswordPwnageRepository.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/passwords/PasswordPwnageRepository.kt new file mode 100644 index 00000000..0197ba4c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/passwords/PasswordPwnageRepository.kt @@ -0,0 +1,16 @@ +package com.artemchep.keyguard.common.service.hibp.passwords + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.PasswordPwnage + +interface PasswordPwnageRepository { + fun checkOne( + password: String, + cache: Boolean, + ): IO + + fun checkMany( + passwords: Set, + cache: Boolean, + ): IO> +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/passwords/impl/PasswordPwnageDataSourceLocalImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/passwords/impl/PasswordPwnageDataSourceLocalImpl.kt new file mode 100644 index 00000000..319e609d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/passwords/impl/PasswordPwnageDataSourceLocalImpl.kt @@ -0,0 +1,67 @@ +package com.artemchep.keyguard.common.service.hibp.passwords.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.service.hibp.passwords.PasswordPwnageDataSourceLocal +import com.artemchep.keyguard.core.store.DatabaseDispatcher +import com.artemchep.keyguard.core.store.DatabaseManager +import com.artemchep.keyguard.data.Database +import com.artemchep.keyguard.data.pwnage.PasswordBreach +import kotlinx.coroutines.CoroutineDispatcher +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class PasswordPwnageDataSourceLocalImpl( + private val databaseManager: DatabaseManager, + private val dispatcher: CoroutineDispatcher, +) : PasswordPwnageDataSourceLocal { + constructor(directDI: DirectDI) : this( + databaseManager = directDI.instance(), + dispatcher = directDI.instance(tag = DatabaseDispatcher), + ) + + override fun put( + entity: PasswordBreach, + ): IO = dbEffect { db -> + db.passwordBreachQueries.insert( + password = entity.password, + count = entity.count, + updatedAt = entity.updatedAt, + ) + } + + override fun getOne( + password: String, + ): IO = dbEffect { db -> + val model = db.passwordBreachQueries + .getByPassword(password) + .executeAsOneOrNull() + model + } + + override fun getMany( + passwords: Collection, + ): IO> = dbEffect { db -> + val list = db.passwordBreachQueries + .getByPasswords(passwords) + .executeAsList() + passwords + .asSequence() + .map { password -> + val entity = list.firstOrNull { it.password == password } + password to entity + } + .toMap() + } + + override fun clear(): IO = dbEffect { db -> + db.passwordBreachQueries.deleteAll() + } + + private fun dbEffect(block: suspend (Database) -> T) = databaseManager + .get() + .effectMap(dispatcher, block) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/passwords/impl/PasswordPwnageDataSourceRemoteImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/passwords/impl/PasswordPwnageDataSourceRemoteImpl.kt new file mode 100644 index 00000000..86b3f4ab --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/passwords/impl/PasswordPwnageDataSourceRemoteImpl.kt @@ -0,0 +1,81 @@ +package com.artemchep.keyguard.common.service.hibp.passwords.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.flatMap +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.model.PasswordPwnage +import com.artemchep.keyguard.common.service.crypto.CryptoGenerator +import com.artemchep.keyguard.common.service.hibp.passwords.PasswordPwnageDataSourceRemote +import io.ktor.client.HttpClient +import io.ktor.client.request.get +import io.ktor.client.statement.bodyAsChannel +import io.ktor.http.userAgent +import io.ktor.util.hex +import io.ktor.utils.io.cancel +import io.ktor.utils.io.readUTF8Line +import kotlinx.coroutines.Dispatchers +import org.kodein.di.DirectDI +import org.kodein.di.instance +import java.util.Locale + +/** + * @author Artem Chepurnyi + */ +class PasswordPwnageDataSourceRemoteImpl( + private val cryptoGenerator: CryptoGenerator, + private val httpClient: HttpClient, +) : PasswordPwnageDataSourceRemote { + constructor(directDI: DirectDI) : this( + cryptoGenerator = directDI.instance(), + httpClient = directDI.instance(), + ) + + override fun check( + password: String, + ): IO = ioEffect(Dispatchers.Default) { + val hash = cryptoGenerator.hashSha1(password.toByteArray()) + .let(::hex) + .uppercase(Locale.ENGLISH) + hash + } + .flatMap(::pwnedPasswordsRequestIo) + .map { occurrences -> + PasswordPwnage( + occurrences = occurrences, + ) + } + + private fun pwnedPasswordsRequestIo( + passwordSha1Hash: String, + ): IO = ioEffect(Dispatchers.IO) { + val prefix = passwordSha1Hash.take(5) + val suffix = passwordSha1Hash.drop(5) + + // https://haveibeenpwned.com/API/v3 + val url = "https://api.pwnedpasswords.com/range/$prefix" + val response = httpClient + .get(url) { + // https://haveibeenpwned.com/API/v3#UserAgent + userAgent("Keyguard") + } + val channel = response + .bodyAsChannel() + try { + while (!channel.isClosedForRead) { + val line = channel.readUTF8Line() + if (line != null && line.startsWith(suffix)) { + val count = line + .substringAfter(':') + .toInt() + return@ioEffect count + } + } + } finally { + if (!channel.isClosedForRead) + channel.cancel() + } + + return@ioEffect 0 + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/passwords/impl/PasswordPwnageRepositoryImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/passwords/impl/PasswordPwnageRepositoryImpl.kt new file mode 100644 index 00000000..e7975d47 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/hibp/passwords/impl/PasswordPwnageRepositoryImpl.kt @@ -0,0 +1,198 @@ +package com.artemchep.keyguard.common.service.hibp.passwords.impl + +import arrow.core.Either +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.effectTap +import com.artemchep.keyguard.common.io.flatMap +import com.artemchep.keyguard.common.io.handleError +import com.artemchep.keyguard.common.io.handleErrorWith +import com.artemchep.keyguard.common.io.io +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.io.measure +import com.artemchep.keyguard.common.io.parallel +import com.artemchep.keyguard.common.model.PasswordPwnage +import com.artemchep.keyguard.common.service.hibp.passwords.PasswordPwnageDataSourceLocal +import com.artemchep.keyguard.common.service.hibp.passwords.PasswordPwnageDataSourceRemote +import com.artemchep.keyguard.common.service.hibp.passwords.PasswordPwnageRepository +import com.artemchep.keyguard.common.service.logging.LogRepository +import com.artemchep.keyguard.common.service.logging.postDebug +import com.artemchep.keyguard.data.pwnage.PasswordBreach +import kotlinx.coroutines.Dispatchers +import kotlinx.datetime.Clock +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.random.Random +import kotlin.time.Duration + +class PasswordPwnageRepositoryImpl( + private val logRepository: LogRepository, + private val localDataSource: PasswordPwnageDataSourceLocal, + private val remoteDataSource: PasswordPwnageDataSourceRemote, +) : PasswordPwnageRepository { + companion object { + private const val TAG = "PasswordPwnage" + + /** + * After this duration, the app will try + * to fetch the items again. + */ + private val CACHE_DURATION = with(Duration) { 21.days } + } + + constructor(directDI: DirectDI) : this( + logRepository = directDI.instance(), + localDataSource = directDI.instance(), + remoteDataSource = directDI.instance(), + ) + + override fun checkOne( + password: String, + cache: Boolean, + ): IO = localDataSource + .getOne(password) + .handleError { null } + .flatMap { localPwnage -> + localPwnage?.let { entity -> + val localIo = io(entity) + .effectTap { pwnage -> + val msg = kotlin.run { + val passwordPrefix = password.take(2) + val passwordOccurrences = pwnage.count + "Obtained local pwnage report for '$passwordPrefix****', $passwordOccurrences occurrences." + } + logRepository.post(TAG, msg) + } + .map { + PasswordPwnage( + occurrences = it.count.toInt(), + ) + } + + if (entity.hasExpired()) { + checkRemote(password, cache = cache) + .handleErrorWith { + localIo + } + } else { + localIo + } + } + // Otherwise check the remote data source and + // store the result in the local one. + ?: checkRemote(password, cache = cache) + } + + override fun checkMany( + passwords: Set, + cache: Boolean, + ): IO> = ioEffect { + // According to + // https://stackoverflow.com/a/49960506/1408535 + // maximum number of query parameters is usually + // 999 per query. We do want to be safe, so we use a + // lower value. + val bucketSize = 100 + val entities = passwords + .windowed( + size = bucketSize, + step = bucketSize, + partialWindows = true, + ) + .flatMap { passwordsWindow -> + localDataSource + .getMany(passwordsWindow) + // On an error, fake a response with + // no data returned. + .handleError { + passwordsWindow + .associateWith { null } + } + .bind() + .toList() + } + .toMap() + + val out = mutableMapOf() + val pending = mutableListOf>>>() + entities.entries.forEach { (password, entity) -> + if (entity != null) { + val localPwnage = PasswordPwnage( + occurrences = entity.count.toInt(), + ) + + if (entity.hasExpired()) { + pending += checkRemote(password, cache = cache) + .handleError { + localPwnage + } + .attempt() + .map { password to it } + } else { + // No need to do any requests, just reuse the + // cached report. + out[password] = localPwnage + } + } else { + pending += checkRemote(password, cache = cache) + .attempt() + .map { password to it } + } + } + + val q = out.size + val s = pending.size + + val z = pending + .parallel( + context = Dispatchers.IO, + parallelism = 8, + ) + .bind() + z.forEach { (password, result) -> + val pwnage = result.getOrNull() + out[password] = pwnage + } + + out + } + + /** + * We are making it fluctuate a bit so when the time comes a + * user doesn't have to query 100% of the passwords at the same + * time. + */ + private fun PasswordBreach.hasExpired() = kotlin.run { + val age = Clock.System.now() - updatedAt + age > CACHE_DURATION.times(0.7 + Random.nextDouble(0.3)) + } + + private fun checkRemote( + password: String, + cache: Boolean = true, + ) = remoteDataSource + .check(password) + .effectTap { remotePwnage -> + if (cache) { + val now = Clock.System.now() + val count = remotePwnage.occurrences.toLong() + val entity = PasswordBreach( + password = password, + count = count, + updatedAt = now, + ) + localDataSource + .put(entity) + .bind() + } + } + .measure { duration, remotePwnage -> + logRepository.postDebug(TAG) { + val prefix = password.take(4) + val count = remotePwnage.occurrences + "Obtained remote pwnage report for '$prefix****': $count occurrences, took $duration." + } + } +} \ No newline at end of file diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/id/IdRepository.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/id/IdRepository.kt new file mode 100644 index 00000000..5450620b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/id/IdRepository.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.common.service.id + +import com.artemchep.keyguard.common.io.IO + +interface IdRepository { + fun put(id: String): IO + + fun get(): IO +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/id/impl/IdRepositoryImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/id/impl/IdRepositoryImpl.kt new file mode 100644 index 00000000..d9ce10d1 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/id/impl/IdRepositoryImpl.kt @@ -0,0 +1,26 @@ +package com.artemchep.keyguard.common.service.id.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.toIO +import com.artemchep.keyguard.common.service.id.IdRepository +import com.artemchep.keyguard.common.service.keyvalue.KeyValuePreference +import com.artemchep.keyguard.common.service.keyvalue.KeyValueStore + +class IdRepositoryImpl( + store: KeyValueStore, +) : IdRepository { + companion object { + private const val KEY = "device_id" + } + + private val deviceIdPref: KeyValuePreference = + store.getString( + key = KEY, + defaultValue = "", + ) + + override fun put(id: String): IO = deviceIdPref + .setAndCommit(id) + + override fun get(): IO = deviceIdPref.toIO() +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/justdeleteme/JustDeleteMeService.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/justdeleteme/JustDeleteMeService.kt new file mode 100644 index 00000000..a99a3f7a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/justdeleteme/JustDeleteMeService.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.service.justdeleteme + +import com.artemchep.keyguard.common.io.IO + +interface JustDeleteMeService { + fun get(): IO> +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/justdeleteme/JustDeleteMeServiceInfo.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/justdeleteme/JustDeleteMeServiceInfo.kt new file mode 100644 index 00000000..75af2c0c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/justdeleteme/JustDeleteMeServiceInfo.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.common.service.justdeleteme + +data class JustDeleteMeServiceInfo( + val name: String, + val domains: Set = emptySet(), + val url: String? = null, + val difficulty: String? = null, + val notes: String? = null, + val email: String? = null, + val emailSubject: String? = null, + val emailBody: String? = null, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/justdeleteme/impl/JustDeleteMeServiceImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/justdeleteme/impl/JustDeleteMeServiceImpl.kt new file mode 100644 index 00000000..ec24e2e1 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/justdeleteme/impl/JustDeleteMeServiceImpl.kt @@ -0,0 +1,70 @@ +package com.artemchep.keyguard.common.service.justdeleteme.impl + +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.io.shared +import com.artemchep.keyguard.common.service.justdeleteme.JustDeleteMeService +import com.artemchep.keyguard.common.service.justdeleteme.JustDeleteMeServiceInfo +import com.artemchep.keyguard.common.service.text.TextService +import com.artemchep.keyguard.common.service.text.readFromResourcesAsText +import com.artemchep.keyguard.res.Res +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.Json +import org.kodein.di.DirectDI +import org.kodein.di.instance + +@Serializable +data class JustDeleteMeEntity( + val name: String, + @SerialName("domains") + val domains: Set = emptySet(), + val url: String? = null, + val difficulty: String? = null, + val notes: String? = null, + val email: String? = null, + @SerialName("email_subject") + val emailSubject: String? = null, + @SerialName("email_body") + val emailBody: String? = null, +) + +fun JustDeleteMeEntity.toDomain() = kotlin.run { + JustDeleteMeServiceInfo( + name = name, + domains = domains, + url = url, + difficulty = difficulty, + notes = notes, + email = email, + emailSubject = emailSubject, + emailBody = emailBody, + ) +} + +class JustDeleteMeServiceImpl( + private val textService: TextService, + private val json: Json, +) : JustDeleteMeService { + private val listIo = ::loadJustDeleteMeRawData + .partially1(textService) + .effectMap { jsonString -> + val entities = json.decodeFromString>(jsonString) + val models = entities.map(JustDeleteMeEntity::toDomain) + models + } + .shared() + + constructor( + directDI: DirectDI, + ) : this( + textService = directDI.instance(), + json = directDI.instance(), + ) + + override fun get() = listIo +} + +private suspend fun loadJustDeleteMeRawData( + textService: TextService, +) = textService.readFromResourcesAsText(Res.files.justdeleteme) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/justgetmydata/JustGetMyDataService.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/justgetmydata/JustGetMyDataService.kt new file mode 100644 index 00000000..1f01efbb --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/justgetmydata/JustGetMyDataService.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.service.justgetmydata + +import com.artemchep.keyguard.common.io.IO + +interface JustGetMyDataService { + fun get(): IO> +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/justgetmydata/JustGetMyDataServiceInfo.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/justgetmydata/JustGetMyDataServiceInfo.kt new file mode 100644 index 00000000..8d2bcc11 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/justgetmydata/JustGetMyDataServiceInfo.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.common.service.justgetmydata + +data class JustGetMyDataServiceInfo( + val name: String, + val domains: Set = emptySet(), + val url: String? = null, + val difficulty: String? = null, + val notes: String? = null, + val email: String? = null, + val emailSubject: String? = null, + val emailBody: String? = null, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/justgetmydata/impl/JustGetMyDataServiceImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/justgetmydata/impl/JustGetMyDataServiceImpl.kt new file mode 100644 index 00000000..d057de37 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/justgetmydata/impl/JustGetMyDataServiceImpl.kt @@ -0,0 +1,70 @@ +package com.artemchep.keyguard.common.service.justgetmydata.impl + +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.io.shared +import com.artemchep.keyguard.common.service.justgetmydata.JustGetMyDataService +import com.artemchep.keyguard.common.service.justgetmydata.JustGetMyDataServiceInfo +import com.artemchep.keyguard.common.service.text.TextService +import com.artemchep.keyguard.common.service.text.readFromResourcesAsText +import com.artemchep.keyguard.res.Res +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.Json +import org.kodein.di.DirectDI +import org.kodein.di.instance + +@Serializable +data class JustGetMyDataEntity( + val name: String, + @SerialName("domains") + val domains: Set = emptySet(), + val url: String? = null, + val difficulty: String? = null, + val notes: String? = null, + val email: String? = null, + @SerialName("email_subject") + val emailSubject: String? = null, + @SerialName("email_body") + val emailBody: String? = null, +) + +fun JustGetMyDataEntity.toDomain() = kotlin.run { + JustGetMyDataServiceInfo( + name = name, + domains = domains, + url = url, + difficulty = difficulty, + notes = notes, + email = email, + emailSubject = emailSubject, + emailBody = emailBody, + ) +} + +class JustGetMyDataServiceImpl( + private val textService: TextService, + private val json: Json, +) : JustGetMyDataService { + private val listIo = ::loadJustGetMyDataRawData + .partially1(textService) + .effectMap { jsonString -> + val entities = json.decodeFromString>(jsonString) + val models = entities.map(JustGetMyDataEntity::toDomain) + models + } + .shared() + + constructor( + directDI: DirectDI, + ) : this( + textService = directDI.instance(), + json = directDI.instance(), + ) + + override fun get() = listIo +} + +private suspend fun loadJustGetMyDataRawData( + textService: TextService, +) = textService.readFromResourcesAsText(Res.files.justgetmydata) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/keyvalue/KeyValuePreference.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/keyvalue/KeyValuePreference.kt new file mode 100644 index 00000000..c0a459b6 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/keyvalue/KeyValuePreference.kt @@ -0,0 +1,52 @@ +package com.artemchep.keyguard.common.service.keyvalue + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.flatMap +import com.artemchep.keyguard.common.io.io +import com.artemchep.keyguard.common.io.map +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.map +import kotlinx.datetime.Instant +import kotlin.time.Duration + +private const val NONE_INSTANT = -1L + +private const val NONE_DURATION = -1L + +interface KeyValuePreference : Flow { + fun setAndCommit(value: T): IO + + fun deleteAndCommit(): IO +} + +// Instant + +fun KeyValuePreference.setAndCommit(instant: Instant?) = io(instant) + .map { inst -> + inst?.toEpochMilliseconds() + ?: NONE_INSTANT + } + .flatMap(this::setAndCommit) + +fun KeyValuePreference.asInstant() = this + .map { millis -> + millis.takeUnless { it == NONE_INSTANT } + ?.let(Instant::fromEpochMilliseconds) + } + +// Duration + +fun KeyValuePreference.setAndCommit(duration: Duration?) = io(duration) + .map { dur -> + dur?.inWholeMilliseconds + ?: NONE_DURATION + } + .flatMap(this::setAndCommit) + +fun KeyValuePreference.asDuration() = this + .map { millis -> + with(Duration) { + millis.takeUnless { it == NONE_DURATION } + ?.milliseconds + } + } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/keyvalue/KeyValueStore.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/keyvalue/KeyValueStore.kt new file mode 100644 index 00000000..9ee8f78d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/keyvalue/KeyValueStore.kt @@ -0,0 +1,79 @@ +package com.artemchep.keyguard.common.service.keyvalue + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.flatMap +import com.artemchep.keyguard.common.io.ioEffect +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.InternalCoroutinesApi +import kotlinx.coroutines.flow.FlowCollector +import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.map + +interface KeyValueStore { + companion object { + /** + * Flag that marks that the migration from X to this + * key value store has been completed. + */ + const val HAS_MIGRATED = "__has_migrated" + } + + fun getAll(): IO> + + fun getKeys(): IO> + + fun getInt(key: String, defaultValue: Int): KeyValuePreference + + fun getFloat(key: String, defaultValue: Float): KeyValuePreference + + fun getBoolean(key: String, defaultValue: Boolean): KeyValuePreference + + fun getLong(key: String, defaultValue: Long): KeyValuePreference + + fun getString(key: String, defaultValue: String): KeyValuePreference +} + +interface SecureKeyValueStore : KeyValueStore + +fun KeyValueStore.getObject( + key: String, + defaultValue: T, + serialize: (T) -> String, + deserialize: (String) -> T, +): KeyValuePreference { + val stringPref = getString(key, serialize(defaultValue)) + return object : KeyValuePreference { + override fun setAndCommit(value: T): IO = ioEffect(Dispatchers.Default) { + serialize(value) + } + .flatMap(stringPref::setAndCommit) + + override fun deleteAndCommit(): IO = stringPref.deleteAndCommit() + + override suspend fun collect(collector: FlowCollector) = stringPref + .map { + deserialize(it) + } + .flowOn(Dispatchers.Default) + .collect(collector) + } +} + +inline fun > KeyValueStore.getEnumNullable( + key: String, + crossinline lens: (T) -> String, +): KeyValuePreference = getObject( + key, + defaultValue = null, + serialize = { value -> + value?.let(lens) + .orEmpty() + }, + deserialize = { serializedKey -> + T::class.java + .enumConstants + .firstOrNull { + lens(it) == serializedKey + } + }, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/keyvalue/impl/JsonKeyValueStore.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/keyvalue/impl/JsonKeyValueStore.kt new file mode 100644 index 00000000..83a3c307 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/keyvalue/impl/JsonKeyValueStore.kt @@ -0,0 +1,185 @@ +package com.artemchep.keyguard.common.service.keyvalue.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.dispatchOn +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.io.handleError +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.ioRaise +import com.artemchep.keyguard.common.io.ioUnit +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.service.keyvalue.KeyValuePreference +import com.artemchep.keyguard.common.service.keyvalue.KeyValueStore +import com.artemchep.keyguard.common.service.keyvalue.SecureKeyValueStore +import com.artemchep.keyguard.common.service.state.impl.toJson +import com.artemchep.keyguard.common.service.state.impl.toMap +import kotlinx.collections.immutable.PersistentMap +import kotlinx.collections.immutable.persistentMapOf +import kotlinx.collections.immutable.toPersistentMap +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.FlowCollector +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.flow +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.updateAndGet +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock +import kotlinx.serialization.encodeToString +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonObject +import java.io.File + +class DefaultJsonKeyValueStoreStore : JsonKeyValueStoreStore { + override fun read(): IO> = + ioEffect { + persistentMapOf() + } + + override fun write(state: PersistentMap): IO = ioUnit() +} + +class FileJsonKeyValueStoreStore( + private val fileIo: IO, + private val json: Json, +) : JsonKeyValueStoreStore { + override fun read(): IO> = fileIo + .effectMap { it.readText() } + .map { text -> + val el = json.decodeFromString(text) + el.toMap().toPersistentMap() + } + .dispatchOn(Dispatchers.IO) + + override fun write(state: PersistentMap): IO = fileIo + .effectMap { file -> + val text = json.encodeToString(state.toJson()) + // Make sure the directory exists + file.parentFile.mkdirs() + // Overwrite the content of a file + file.writeText(text) + } + .dispatchOn(Dispatchers.IO) +} + +interface JsonKeyValueStoreStore { + fun read(): IO> + + fun write(state: PersistentMap): IO +} + +class JsonKeyValueStore( + private val str: JsonKeyValueStoreStore = DefaultJsonKeyValueStoreStore(), +) : KeyValueStore, SecureKeyValueStore { + class SharedPrefsKeyValuePreference( + private val key: String, + private val default: T, + private val update: suspend ((PersistentMap) -> PersistentMap) -> Unit, + private val flow: Flow>, + ) : KeyValuePreference { + override fun setAndCommit(value: T): IO = ioEffect { + update { state -> + state.put(key, value) + } + } + + override fun deleteAndCommit(): IO = ioEffect { + update { state -> + state.remove(key) + } + } + + override suspend fun collect(collector: FlowCollector) { + flow + .map { + val value = it[key] as? T + value ?: default + } + .distinctUntilChanged() + .collect(collector) + } + } + + private val mutex = Mutex() + + private val sink = MutableStateFlow(persistentMapOf()) + + private val flow: Flow> = flow { + ensureInit() + sink.collect(this) + } + + private var init = false + + private suspend fun ensureInit(): PersistentMap { + // Initialize the sink with data from the external + // database. + if (!init) { + mutex.withLock { + if (!init) { + val data = str.read() + .handleError { + persistentMapOf() + } + .bind() + sink.value = data + } + init = true + } + } + + return sink.value + } + + private fun getFlowPrefs( + key: String, + defaultValue: T, + ) = SharedPrefsKeyValuePreference( + key = key, + default = defaultValue, + update = { + ensureInit() + + val newValue = sink.updateAndGet(it) + str.write(newValue).bind() + }, + flow = flow, + ) + + override fun getAll(): IO> = ioRaise(RuntimeException()) + + override fun getKeys(): IO> = getAll() + .map { it.keys } + + override fun getInt(key: String, defaultValue: Int): KeyValuePreference = + getFlowPrefs( + key = key, + defaultValue = defaultValue, + ) + + override fun getFloat(key: String, defaultValue: Float): KeyValuePreference = + getFlowPrefs( + key = key, + defaultValue = defaultValue, + ) + + override fun getBoolean(key: String, defaultValue: Boolean): KeyValuePreference = + getFlowPrefs( + key = key, + defaultValue = defaultValue, + ) + + override fun getLong(key: String, defaultValue: Long): KeyValuePreference = + getFlowPrefs( + key = key, + defaultValue = defaultValue, + ) + + override fun getString(key: String, defaultValue: String): KeyValuePreference = + getFlowPrefs( + key = key, + defaultValue = defaultValue, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/license/LicenseService.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/license/LicenseService.kt new file mode 100644 index 00000000..4c70c1cb --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/license/LicenseService.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.common.service.license + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.license.model.License + +interface LicenseService { + fun get(): IO> +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/license/impl/LicenseServiceImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/license/impl/LicenseServiceImpl.kt new file mode 100644 index 00000000..c6f14586 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/license/impl/LicenseServiceImpl.kt @@ -0,0 +1,79 @@ +package com.artemchep.keyguard.common.service.license.impl + +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.service.license.LicenseService +import com.artemchep.keyguard.common.service.license.model.License +import com.artemchep.keyguard.common.service.text.TextService +import com.artemchep.keyguard.common.service.text.readFromResourcesAsText +import com.artemchep.keyguard.res.Res +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.Json +import org.kodein.di.DirectDI +import org.kodein.di.instance + +@Serializable +data class LicenseEntity( + val groupId: String, + val artifactId: String, + val version: String, + val name: String? = null, + val spdxLicenses: List = emptyList(), + val scm: Scm? = null, +) { + @Serializable + data class SpdxLicense( + val identifier: String, + val name: String, + val url: String? = null, + ) + + @Serializable + data class Scm( + val url: String? = null, + ) +} + +private fun LicenseEntity.toDomain(): License = License( + groupId = groupId, + artifactId = artifactId, + version = version, + name = name, + spdxLicenses = spdxLicenses.map(LicenseEntity.SpdxLicense::toDomain), + scm = scm?.let(LicenseEntity.Scm::toDomain), +) + +private fun LicenseEntity.SpdxLicense.toDomain(): License.SpdxLicense = License.SpdxLicense( + identifier = identifier, + name = name, + url = url, +) + +private fun LicenseEntity.Scm.toDomain(): License.Scm = License.Scm( + url = url, +) + +class LicenseServiceImpl( + private val textService: TextService, + private val json: Json, +) : LicenseService { + constructor( + directDI: DirectDI, + ) : this( + textService = directDI.instance(), + json = directDI.instance(), + ) + + override fun get(): IO> = ::loadLicensesRawData + .partially1(textService) + .effectMap { jsonString -> + val entities = json.decodeFromString>(jsonString) + val models = entities.map(LicenseEntity::toDomain) + models + } +} + +private suspend fun loadLicensesRawData( + textService: TextService, +) = textService.readFromResourcesAsText(Res.files.licenses) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/license/model/License.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/license/model/License.kt new file mode 100644 index 00000000..09b22266 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/license/model/License.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.common.service.license.model + +data class License( + val name: String?, + val groupId: String, + val artifactId: String, + val version: String, + val spdxLicenses: List, + val scm: Scm? = null, +) { + data class SpdxLicense( + val identifier: String, + val name: String, + val url: String? = null, + ) + + data class Scm( + val url: String? = null, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/logging/LogLevel.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/logging/LogLevel.kt new file mode 100644 index 00000000..aeccfe53 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/logging/LogLevel.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.common.service.logging + +enum class LogLevel { + DEBUG, + INFO, + WARNING, + ERROR, +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/logging/LogRepository.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/logging/LogRepository.kt new file mode 100644 index 00000000..9adfea87 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/logging/LogRepository.kt @@ -0,0 +1,32 @@ +package com.artemchep.keyguard.common.service.logging + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.platform.util.isRelease + +interface LogRepository { + fun post( + tag: String, + message: String, + level: LogLevel = LogLevel.DEBUG, + ) + + fun add( + tag: String, + message: String, + level: LogLevel = LogLevel.DEBUG, + ): IO +} + +/** + * A version that only exists in debug and gets completely + * stripped in release builds. + */ +inline fun LogRepository.postDebug( + tag: String, + provideMassage: () -> String, +) { + if (!isRelease) { + val msg = provideMassage() + post(tag, msg, level = LogLevel.DEBUG) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/logging/kotlin/LogRepositoryKotlin.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/logging/kotlin/LogRepositoryKotlin.kt new file mode 100644 index 00000000..49c11f0d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/logging/kotlin/LogRepositoryKotlin.kt @@ -0,0 +1,26 @@ +package com.artemchep.keyguard.common.service.logging.kotlin + +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.service.logging.LogLevel +import com.artemchep.keyguard.common.service.logging.LogRepository +import kotlinx.coroutines.GlobalScope + +class LogRepositoryKotlin : LogRepository { + override fun post( + tag: String, + message: String, + level: LogLevel, + ) { + add(tag, message, level).attempt().launchIn(GlobalScope) + } + + override fun add( + tag: String, + message: String, + level: LogLevel, + ) = ioEffect { + println("$tag: $message") + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/passkey/PassKeyService.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/passkey/PassKeyService.kt new file mode 100644 index 00000000..a0557e4d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/passkey/PassKeyService.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.service.passkey + +import com.artemchep.keyguard.common.io.IO + +interface PassKeyService { + fun get(): IO> +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/passkey/PassKeyServiceInfo.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/passkey/PassKeyServiceInfo.kt new file mode 100644 index 00000000..953a853d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/passkey/PassKeyServiceInfo.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.common.service.passkey + +data class PassKeyServiceInfo( + val name: String, + val domain: String, + val domains: Set = emptySet(), + val setup: String? = null, + val documentation: String? = null, + val notes: String? = null, + val features: Set = emptySet(), +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/passkey/impl/PassKeyServiceImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/passkey/impl/PassKeyServiceImpl.kt new file mode 100644 index 00000000..61217bb5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/passkey/impl/PassKeyServiceImpl.kt @@ -0,0 +1,66 @@ +package com.artemchep.keyguard.common.service.passkey.impl + +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.io.shared +import com.artemchep.keyguard.common.service.passkey.PassKeyService +import com.artemchep.keyguard.common.service.passkey.PassKeyServiceInfo +import com.artemchep.keyguard.common.service.text.TextService +import com.artemchep.keyguard.common.service.text.readFromResourcesAsText +import com.artemchep.keyguard.res.Res +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.Json +import org.kodein.di.DirectDI +import org.kodein.di.instance + +@Serializable +data class PassKeyEntity( + val name: String, + val domain: String, + @SerialName("additional-domains") + val domains: Set = emptySet(), + val setup: String? = null, + val documentation: String? = null, + val notes: String? = null, + val features: Set = emptySet(), +) + +fun PassKeyEntity.toDomain() = kotlin.run { + PassKeyServiceInfo( + name = name, + domain = domain, + domains = domains + domain, + setup = setup, + documentation = documentation, + notes = notes, + features = features, + ) +} + +class PassKeyServiceImpl( + private val textService: TextService, + private val json: Json, +) : PassKeyService { + private val listIo = ::loadPassKeyRawData + .partially1(textService) + .effectMap { jsonString -> + val entities = json.decodeFromString>(jsonString) + val models = entities.map(PassKeyEntity::toDomain) + models + } + .shared() + + constructor( + directDI: DirectDI, + ) : this( + textService = directDI.instance(), + json = directDI.instance(), + ) + + override fun get() = listIo +} + +private suspend fun loadPassKeyRawData( + textService: TextService, +) = textService.readFromResourcesAsText(Res.files.passkeys) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/permission/Permission.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/permission/Permission.kt new file mode 100644 index 00000000..69ac7006 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/permission/Permission.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.service.permission + +expect enum class Permission { + POST_NOTIFICATIONS, +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/permission/PermissionService.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/permission/PermissionService.kt new file mode 100644 index 00000000..62b66caa --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/permission/PermissionService.kt @@ -0,0 +1,13 @@ +package com.artemchep.keyguard.common.service.permission + +import kotlinx.coroutines.flow.Flow + +interface PermissionService { + /** + * Returns a state of target permission; changes if a user + * allows it in a runtime. + */ + fun getState( + permission: Permission, + ): Flow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/permission/PermissionState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/permission/PermissionState.kt new file mode 100644 index 00000000..82a25189 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/permission/PermissionState.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.common.service.permission + +import com.artemchep.keyguard.platform.LeContext + +sealed interface PermissionState { + data object Granted : PermissionState + + data class Declined( + val ask: (LeContext) -> Unit, + ) : PermissionState +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/power/PowerService.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/power/PowerService.kt new file mode 100644 index 00000000..e5f6cb48 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/power/PowerService.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.common.service.power + +import com.artemchep.keyguard.common.model.Screen +import kotlinx.coroutines.flow.Flow + +interface PowerService { + fun getScreenState(): Flow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/api/EmailRelay.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/api/EmailRelay.kt new file mode 100644 index 00000000..cbbd182f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/api/EmailRelay.kt @@ -0,0 +1,27 @@ +package com.artemchep.keyguard.common.service.relays.api + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.GeneratorContext +import kotlinx.collections.immutable.ImmutableMap +import kotlinx.collections.immutable.persistentMapOf + +interface EmailRelay { + val type: String + + /** + * Human-readable name of the email relay, will + * be shown directly to a user. + */ + val name: String + + val docUrl: String? + get() = null + + val schema: ImmutableMap + get() = persistentMapOf() + + fun generate( + context: GeneratorContext, + config: ImmutableMap, + ): IO +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/api/EmailRelaySchema.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/api/EmailRelaySchema.kt new file mode 100644 index 00000000..5d599001 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/api/EmailRelaySchema.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.common.service.relays.api + +import com.artemchep.keyguard.feature.confirmation.ConfirmationRoute +import com.artemchep.keyguard.feature.localization.TextHolder + +/** + * Schema defines the data that a user must fill + * for sending a request. All the UI is drawn automatically + * basing on the schema. + */ +data class EmailRelaySchema( + val title: TextHolder, + val hint: TextHolder? = null, + val type: ConfirmationRoute.Args.Item.StringItem.Type = ConfirmationRoute.Args.Item.StringItem.Type.Text, + /** + * `true` if the empty value is a valid + * value, `false` otherwise. + */ + val canBeEmpty: Boolean = true, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/api/anonaddy/AnonAddyEmailRelay.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/api/anonaddy/AnonAddyEmailRelay.kt new file mode 100644 index 00000000..2148cd00 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/api/anonaddy/AnonAddyEmailRelay.kt @@ -0,0 +1,113 @@ +package com.artemchep.keyguard.common.service.relays.api.anonaddy + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.model.GeneratorContext +import com.artemchep.keyguard.common.service.relays.api.EmailRelay +import com.artemchep.keyguard.common.service.relays.api.EmailRelaySchema +import com.artemchep.keyguard.feature.confirmation.ConfirmationRoute +import com.artemchep.keyguard.feature.localization.TextHolder +import com.artemchep.keyguard.res.Res +import io.ktor.client.HttpClient +import io.ktor.client.call.body +import io.ktor.client.request.header +import io.ktor.client.request.post +import io.ktor.client.request.setBody +import io.ktor.http.ContentType +import io.ktor.http.HttpStatusCode +import io.ktor.http.contentType +import io.ktor.http.isSuccess +import kotlinx.collections.immutable.ImmutableMap +import kotlinx.collections.immutable.persistentMapOf +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonObject +import kotlinx.serialization.json.jsonObject +import kotlinx.serialization.json.jsonPrimitive +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class AnonAddyEmailRelay( + private val httpClient: HttpClient, +) : EmailRelay { + companion object { + private const val ENDPOINT = "https://app.addy.io/api/v1/aliases" + + private const val KEY_API_KEY = "apiKey" + private const val HINT_API_KEY = "TODO" + private const val KEY_DOMAIN = "domain" + private const val HINT_DOMAIN = "TODO" + } + + override val type = "AnonAddy" + + override val name = "AnonAddy" + + override val docUrl = "https://bitwarden.com/help/generator/#tab-addy.io-3Uj911RtQsJD9OAhUuoKrz" + + override val schema = persistentMapOf( + KEY_API_KEY to EmailRelaySchema( + title = TextHolder.Res(Res.strings.api_key), + hint = TextHolder.Value(HINT_API_KEY), + type = ConfirmationRoute.Args.Item.StringItem.Type.Token, + canBeEmpty = false, + ), + KEY_DOMAIN to EmailRelaySchema( + title = TextHolder.Res(Res.strings.domain), + hint = TextHolder.Value(HINT_DOMAIN), + canBeEmpty = false, + ), + ) + + constructor(directDI: DirectDI) : this( + httpClient = directDI.instance(), + ) + + override fun generate( + context: GeneratorContext, + config: ImmutableMap, + ): IO = ioEffect { + val apiKey = requireNotNull(config[KEY_API_KEY]) { + "API key is required for creating an email alias." + } + val domain = requireNotNull(config[KEY_DOMAIN]) { + "Domain is required for creating an email alias." + } + // https://app.anonaddy.com/docs/#aliases-POSTapi-v1-aliases + val response = httpClient + .post(ENDPOINT) { + header("Authorization", "Bearer $apiKey") + + val body = AnonAddyRequest( + domain = domain, + description = context.host, + ) + contentType(ContentType.Application.Json) + setBody(body) + } + require(response.status.isSuccess()) { + // Example of an error: + // {"message":"Unauthenticated."} + val message = runCatching { + val result = response + .body() + result["message"]?.jsonPrimitive?.content + }.getOrNull() + message ?: HttpStatusCode.fromValue(response.status.value).description + } + val result = response + .body() + val alias = runCatching { + result["data"]?.jsonObject?.get("email")?.jsonPrimitive?.content + }.getOrNull() + requireNotNull(alias) { + "Email alias is missing from the response. " + + "Please report this to the developer." + } + } + + @Serializable + private data class AnonAddyRequest( + val domain: String, + val description: String?, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/api/duckduckgo/DuckDuckGoEmailRelay.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/api/duckduckgo/DuckDuckGoEmailRelay.kt new file mode 100644 index 00000000..cda7f56f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/api/duckduckgo/DuckDuckGoEmailRelay.kt @@ -0,0 +1,79 @@ +package com.artemchep.keyguard.common.service.relays.api.duckduckgo + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.model.GeneratorContext +import com.artemchep.keyguard.common.service.relays.api.EmailRelay +import com.artemchep.keyguard.common.service.relays.api.EmailRelaySchema +import com.artemchep.keyguard.feature.confirmation.ConfirmationRoute +import com.artemchep.keyguard.feature.localization.TextHolder +import com.artemchep.keyguard.res.Res +import io.ktor.client.HttpClient +import io.ktor.client.call.body +import io.ktor.client.request.header +import io.ktor.client.request.post +import io.ktor.http.HttpStatusCode +import io.ktor.http.isSuccess +import kotlinx.collections.immutable.ImmutableMap +import kotlinx.collections.immutable.persistentMapOf +import kotlinx.serialization.json.JsonObject +import kotlinx.serialization.json.jsonPrimitive +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class DuckDuckGoEmailRelay( + private val httpClient: HttpClient, +) : EmailRelay { + companion object { + private const val ENDPOINT = "https://quack.duckduckgo.com/api/email/addresses" + + private const val KEY_API_KEY = "apiKey" + private const val HINT_API_KEY = + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + } + + override val type = "DuckDuckGo" + + override val name = "DuckDuckGo" + + override val docUrl = + "https://bitwarden.com/help/generator/#tab-duckduckgo-3Uj911RtQsJD9OAhUuoKrz" + + override val schema = persistentMapOf( + KEY_API_KEY to EmailRelaySchema( + title = TextHolder.Res(Res.strings.api_key), + hint = TextHolder.Value(HINT_API_KEY), + type = ConfirmationRoute.Args.Item.StringItem.Type.Token, + canBeEmpty = false, + ), + ) + + constructor(directDI: DirectDI) : this( + httpClient = directDI.instance(), + ) + + override fun generate( + context: GeneratorContext, + config: ImmutableMap, + ): IO = ioEffect { + val apiKey = requireNotNull(config[KEY_API_KEY]) { + "API key is required for creating an email alias." + } + // https://duckduckgo.com/email/ + val response = httpClient + .post(ENDPOINT) { + header("Authorization", "Bearer $apiKey") + } + require(response.status.isSuccess()) { + HttpStatusCode.fromValue(response.status.value).description + } + val result = response + .body() + val aliasPrefix = result["address"]?.jsonPrimitive?.content + requireNotNull(aliasPrefix) { + "Email alias is missing from the response. " + + "Please report this to the developer." + } + "$aliasPrefix@duck.com" + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/api/fastmail/FastmailEmailRelay.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/api/fastmail/FastmailEmailRelay.kt new file mode 100644 index 00000000..5ac3bdfe --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/api/fastmail/FastmailEmailRelay.kt @@ -0,0 +1,58 @@ +package com.artemchep.keyguard.common.service.relays.api.fastmail + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.model.GeneratorContext +import com.artemchep.keyguard.common.service.relays.api.EmailRelay +import com.artemchep.keyguard.common.service.relays.api.EmailRelaySchema +import com.artemchep.keyguard.feature.confirmation.ConfirmationRoute +import com.artemchep.keyguard.feature.localization.TextHolder +import com.artemchep.keyguard.res.Res +import io.ktor.client.HttpClient +import kotlinx.collections.immutable.ImmutableMap +import kotlinx.collections.immutable.persistentMapOf +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class FastmailEmailRelay( + private val httpClient: HttpClient, +) : EmailRelay { + companion object { + private const val ENDPOINT = "https://api.fastmail.com/jmap/api/" + + private const val KEY_API_KEY = "apiKey" + private const val HINT_API_KEY = + "xxxx-xxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-x-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + } + + override val type = "Fastmail" + + override val name = "Fastmail" + + override val docUrl = + "https://bitwarden.com/help/generator/#tab-fastmail-3Uj911RtQsJD9OAhUuoKrz" + + override val schema = persistentMapOf( + KEY_API_KEY to EmailRelaySchema( + title = TextHolder.Res(Res.strings.api_key), + hint = TextHolder.Value(HINT_API_KEY), + type = ConfirmationRoute.Args.Item.StringItem.Type.Token, + canBeEmpty = false, + ), + ) + + constructor(directDI: DirectDI) : this( + httpClient = directDI.instance(), + ) + + override fun generate( + context: GeneratorContext, + config: ImmutableMap, + ): IO = ioEffect { + val apiKey = requireNotNull(config[KEY_API_KEY]) { + "API key is required for creating an email alias." + } + // TODO: Add Fastmail integration + throw RuntimeException("Not implemented") + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/api/firefoxrelay/FirefoxRelayEmailRelay.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/api/firefoxrelay/FirefoxRelayEmailRelay.kt new file mode 100644 index 00000000..5d36e896 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/api/firefoxrelay/FirefoxRelayEmailRelay.kt @@ -0,0 +1,101 @@ +package com.artemchep.keyguard.common.service.relays.api.firefoxrelay + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.model.GeneratorContext +import com.artemchep.keyguard.common.service.relays.api.EmailRelay +import com.artemchep.keyguard.common.service.relays.api.EmailRelaySchema +import com.artemchep.keyguard.feature.confirmation.ConfirmationRoute +import com.artemchep.keyguard.feature.localization.TextHolder +import com.artemchep.keyguard.res.Res +import io.ktor.client.HttpClient +import io.ktor.client.call.body +import io.ktor.client.request.header +import io.ktor.client.request.post +import io.ktor.client.request.setBody +import io.ktor.http.ContentType +import io.ktor.http.HttpStatusCode +import io.ktor.http.contentType +import io.ktor.http.isSuccess +import kotlinx.collections.immutable.ImmutableMap +import kotlinx.collections.immutable.persistentMapOf +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonObject +import kotlinx.serialization.json.jsonPrimitive +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class FirefoxRelayEmailRelay( + private val httpClient: HttpClient, +) : EmailRelay { + companion object { + private const val ENDPOINT = "https://relay.firefox.com/api/v1/relayaddresses/" + + private const val KEY_API_KEY = "apiKey" + private const val HINT_API_KEY = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" + } + + override val type = "FirefoxRelay" + + override val name = "Firefox Relay" + + override val docUrl = + "https://bitwarden.com/help/generator/#tab-firefox-relay-3Uj911RtQsJD9OAhUuoKrz" + + override val schema = persistentMapOf( + KEY_API_KEY to EmailRelaySchema( + title = TextHolder.Res(Res.strings.api_key), + hint = TextHolder.Value(HINT_API_KEY), + type = ConfirmationRoute.Args.Item.StringItem.Type.Token, + canBeEmpty = false, + ), + ) + + constructor(directDI: DirectDI) : this( + httpClient = directDI.instance(), + ) + + override fun generate( + context: GeneratorContext, + config: ImmutableMap, + ): IO = ioEffect { + val apiKey = requireNotNull(config[KEY_API_KEY]) { + "API key is required for creating an email alias." + } + // https://relay.firefox.com/ + val response = httpClient + .post(ENDPOINT) { + header("Authorization", "Token $apiKey") + + val body = FirefoxRelayRequest( + enabled = true, + description = "Generated by Keyguard.", + ) + contentType(ContentType.Application.Json) + setBody(body) + } + require(response.status.isSuccess()) { + // Example of an error: + // {"detail":"Invalid token."} + val message = runCatching { + val result = response + .body() + result["detail"]?.jsonPrimitive?.content + }.getOrNull() + message ?: HttpStatusCode.fromValue(response.status.value).description + } + val result = response + .body() + val alias = result["full_address"]?.jsonPrimitive?.content + requireNotNull(alias) { + "Email alias is missing from the response. " + + "Please report this to the developer." + } + } + + @Serializable + private data class FirefoxRelayRequest( + val enabled: Boolean, + val description: String, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/api/forwardemail/ForwardEmailEmailRelay.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/api/forwardemail/ForwardEmailEmailRelay.kt new file mode 100644 index 00000000..3feb84e0 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/api/forwardemail/ForwardEmailEmailRelay.kt @@ -0,0 +1,123 @@ +package com.artemchep.keyguard.common.service.relays.api.forwardemail + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.model.GeneratorContext +import com.artemchep.keyguard.common.service.relays.api.EmailRelay +import com.artemchep.keyguard.common.service.relays.api.EmailRelaySchema +import com.artemchep.keyguard.common.service.text.Base64Service +import com.artemchep.keyguard.feature.confirmation.ConfirmationRoute +import com.artemchep.keyguard.feature.localization.TextHolder +import com.artemchep.keyguard.res.Res +import io.ktor.client.HttpClient +import io.ktor.client.call.body +import io.ktor.client.request.header +import io.ktor.client.request.post +import io.ktor.client.request.setBody +import io.ktor.http.ContentType +import io.ktor.http.HttpStatusCode +import io.ktor.http.contentType +import io.ktor.http.isSuccess +import kotlinx.collections.immutable.ImmutableMap +import kotlinx.collections.immutable.persistentMapOf +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonObject +import kotlinx.serialization.json.jsonObject +import kotlinx.serialization.json.jsonPrimitive +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class ForwardEmailEmailRelay( + private val base64Service: Base64Service, + private val httpClient: HttpClient, +) : EmailRelay { + companion object { + private const val KEY_API_KEY = "apiKey" + private const val HINT_API_KEY = "XXXX" + private const val KEY_DOMAIN = "domain" + private const val HINT_DOMAIN = "mailsire.com" + } + + override val type = "ForwardEmail" + + override val name = "Forward Email" + + override val docUrl = + "https://bitwarden.com/help/generator/#tab-forward-email-3Uj911RtQsJD9OAhUuoKrz" + + override val schema = persistentMapOf( + KEY_API_KEY to EmailRelaySchema( + title = TextHolder.Res(Res.strings.api_key), + hint = TextHolder.Value(HINT_API_KEY), + type = ConfirmationRoute.Args.Item.StringItem.Type.Token, + canBeEmpty = false, + ), + KEY_DOMAIN to EmailRelaySchema( + title = TextHolder.Res(Res.strings.domain), + hint = TextHolder.Value(HINT_DOMAIN), + canBeEmpty = false, + ), + ) + + constructor(directDI: DirectDI) : this( + base64Service = directDI.instance(), + httpClient = directDI.instance(), + ) + + override fun generate( + context: GeneratorContext, + config: ImmutableMap, + ): IO = ioEffect { + val apiKey = requireNotNull(config[KEY_API_KEY]) { + "API key is required for creating an email alias." + } + val domain = requireNotNull(config[KEY_DOMAIN]) { + "Domain is required for creating an email alias." + } + + val endpoint = "https://api.forwardemail.net/v1/domains/$domain/aliases" + val response = httpClient + .post(endpoint) { + val token = base64Service.encodeToString("$apiKey:") + header("Authorization", "Basic $token") + + val body = ForwardEmailRequest( + description = context.host + ?: "Generated by Keyguard", + ) + contentType(ContentType.Application.Json) + setBody(body) + } + require(response.status.isSuccess()) { + // Example of an error: + // { + // "statusCode": 401, + // "error": "Unauthorized", + // "message": "Invalid API token." + // } + val message = runCatching { + val result = response + .body() + result["message"]?.jsonPrimitive?.content + ?: result["error"]?.jsonPrimitive?.content + }.getOrNull() + message ?: HttpStatusCode.fromValue(response.status.value).description + } + val result = response + .body() + val aliasName = result["name"]?.jsonPrimitive?.content + val aliasDomain = runCatching { + result["domain"]?.jsonObject?.get("name")?.jsonPrimitive?.content + }.getOrNull() ?: domain + requireNotNull(aliasName) { + "Email alias is missing from the response. " + + "Please report this to the developer." + } + "$aliasName@$aliasDomain" + } + + @Serializable + private data class ForwardEmailRequest( + val description: String, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/api/simplelogin/SimpleLoginEmailRelay.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/api/simplelogin/SimpleLoginEmailRelay.kt new file mode 100644 index 00000000..0632e329 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/api/simplelogin/SimpleLoginEmailRelay.kt @@ -0,0 +1,106 @@ +package com.artemchep.keyguard.common.service.relays.api.simplelogin + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.model.GeneratorContext +import com.artemchep.keyguard.common.service.relays.api.EmailRelay +import com.artemchep.keyguard.common.service.relays.api.EmailRelaySchema +import com.artemchep.keyguard.feature.confirmation.ConfirmationRoute +import com.artemchep.keyguard.feature.localization.TextHolder +import com.artemchep.keyguard.res.Res +import io.ktor.client.HttpClient +import io.ktor.client.call.body +import io.ktor.client.request.header +import io.ktor.client.request.parameter +import io.ktor.client.request.post +import io.ktor.http.HttpStatusCode +import io.ktor.http.isSuccess +import kotlinx.collections.immutable.ImmutableMap +import kotlinx.collections.immutable.persistentMapOf +import kotlinx.serialization.json.JsonObject +import kotlinx.serialization.json.jsonPrimitive +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class SimpleLoginEmailRelay( + private val httpClient: HttpClient, +) : EmailRelay { + companion object { + private const val ENDPOINT = "https://app.simplelogin.io/api/alias/random/new" + + private const val KEY_API_KEY = "apiKey" + private const val HINT_API_KEY = + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + private const val KEY_MODE = "mode" + } + + override val type = "SimpleLogin" + + override val name = "SimpleLogin" + + override val docUrl = + "https://bitwarden.com/help/generator/#tab-simplelogin-3Uj911RtQsJD9OAhUuoKrz" + + override val schema = persistentMapOf( + KEY_API_KEY to EmailRelaySchema( + title = TextHolder.Res(Res.strings.api_key), + hint = TextHolder.Value(HINT_API_KEY), + type = ConfirmationRoute.Args.Item.StringItem.Type.Token, + canBeEmpty = false, + ), + ) + + constructor(directDI: DirectDI) : this( + httpClient = directDI.instance(), + ) + + override fun generate( + context: GeneratorContext, + config: ImmutableMap, + ): IO = ioEffect { + val apiKey = requireNotNull(config[KEY_API_KEY]) { + "API key is required for creating an email alias." + } + // Create a new random alias. + // + // - Authentication header that contains the api key + // - (Optional, query) "hostname" + // - (Optional, query) "mode": either 'uuid' or 'word'. By default, use the user setting when creating new random alias. + // + // Request Message Body in json (Content-Type is application/json) + // - (Optional) note: alias note + // + // https://github.com/simple-login/app/blob/master/docs/api.md#post-apialiasrandomnew + val response = httpClient + .post(ENDPOINT) { + header("Authentication", apiKey) + + // Optional parameters. + val hostname = context.host + if (hostname != null) { + parameter("hostname", hostname) + } + val mode = config[KEY_MODE] + if (mode != null) { + parameter("mode", mode) + } + } + require(response.status.isSuccess()) { + // Example of an error: + // {"error":"Wrong api key"} + val message = runCatching { + val result = response + .body() + result["error"]?.jsonPrimitive?.content + }.getOrNull() + message ?: HttpStatusCode.fromValue(response.status.value).description + } + val result = response + .body() + val alias = result["alias"]?.jsonPrimitive?.content + requireNotNull(alias) { + "Email alias is missing from the response. " + + "Please report this to the developer." + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/di/EmailRelayModule.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/di/EmailRelayModule.kt new file mode 100644 index 00000000..e897fa72 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/di/EmailRelayModule.kt @@ -0,0 +1,38 @@ +package com.artemchep.keyguard.common.service.relays.di + +import com.artemchep.keyguard.common.service.relays.api.anonaddy.AnonAddyEmailRelay +import com.artemchep.keyguard.common.service.relays.api.duckduckgo.DuckDuckGoEmailRelay +import com.artemchep.keyguard.common.service.relays.api.firefoxrelay.FirefoxRelayEmailRelay +import com.artemchep.keyguard.common.service.relays.api.forwardemail.ForwardEmailEmailRelay +import com.artemchep.keyguard.common.service.relays.api.simplelogin.SimpleLoginEmailRelay +import org.kodein.di.DI +import org.kodein.di.bindSingleton + +fun emailRelayDiModule() = DI.Module("emailRelay") { + // + // Email relays + // + bindSingleton { + AnonAddyEmailRelay(this) + } + bindSingleton { + DuckDuckGoEmailRelay(this) + } +// bindSingleton { +// FastmailEmailRelay(this) +// } + bindSingleton { + FirefoxRelayEmailRelay(this) + } + bindSingleton { + ForwardEmailEmailRelay(this) + } + bindSingleton { + SimpleLoginEmailRelay(this) + } + + // + // Common + // + +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/repo/GeneratorEmailRelayRepository.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/repo/GeneratorEmailRelayRepository.kt new file mode 100644 index 00000000..f225fea3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/repo/GeneratorEmailRelayRepository.kt @@ -0,0 +1,13 @@ +package com.artemchep.keyguard.common.service.relays.repo + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.DGeneratorEmailRelay +import com.artemchep.keyguard.provider.bitwarden.repository.BaseRepository + +interface GeneratorEmailRelayRepository : BaseRepository { + fun removeAll(): IO + + fun removeByIds( + ids: Set, + ): IO +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/repo/GeneratorEmailRelayRepositoryImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/repo/GeneratorEmailRelayRepositoryImpl.kt new file mode 100644 index 00000000..24c1bdb9 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/relays/repo/GeneratorEmailRelayRepositoryImpl.kt @@ -0,0 +1,112 @@ +package com.artemchep.keyguard.common.service.relays.repo + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.model.DGeneratorEmailRelay +import com.artemchep.keyguard.common.service.state.impl.toJson +import com.artemchep.keyguard.common.service.state.impl.toMap +import com.artemchep.keyguard.common.util.sqldelight.flatMapQueryToList +import com.artemchep.keyguard.core.store.DatabaseDispatcher +import com.artemchep.keyguard.core.store.DatabaseManager +import com.artemchep.keyguard.data.GeneratorEmailRelayQueries +import kotlinx.collections.immutable.toPersistentMap +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.map +import kotlinx.serialization.encodeToString +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.jsonObject +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GeneratorEmailRelayRepositoryImpl( + private val databaseManager: DatabaseManager, + private val json: Json, + private val dispatcher: CoroutineDispatcher, +) : GeneratorEmailRelayRepository { + constructor( + directDI: DirectDI, + ) : this( + databaseManager = directDI.instance(), + json = directDI.instance(), + dispatcher = directDI.instance(tag = DatabaseDispatcher), + ) + + override fun get(): Flow> = + daoEffect { dao -> + dao.get(1000) + } + .flatMapQueryToList(dispatcher) + .map { entities -> + entities + .map { entity -> + val data = kotlin + .runCatching { + val el = json.parseToJsonElement(entity.data_) + el.jsonObject + .toMap() + .mapValues { entry -> + entry.value.toString() + } + } + .getOrElse { + emptyMap() + } + .toPersistentMap() + DGeneratorEmailRelay( + id = entity.id.toString(), + name = entity.name, + type = entity.type, + data = data, + createdDate = entity.createdAt, + ) + } + } + + override fun put(model: DGeneratorEmailRelay): IO = + daoEffect { dao -> + val data = json.encodeToString(model.data.toJson()) + val id = model.id?.toLongOrNull() + if (id != null) { + dao.update( + id = id, + name = model.name, + type = model.type, + data = data, + createdAt = model.createdDate, + ) + } else { + dao.insert( + name = model.name, + type = model.type, + data = data, + createdAt = model.createdDate, + ) + } + } + + override fun removeAll(): IO = + daoEffect { dao -> + dao.deleteAll() + } + + override fun removeByIds(ids: Set): IO = + daoEffect { dao -> + dao.transaction { + ids.forEach { + val id = it.toLongOrNull() + ?: return@forEach + dao.deleteByIds(id) + } + } + } + + private inline fun daoEffect( + crossinline block: suspend (GeneratorEmailRelayQueries) -> T, + ): IO = databaseManager + .get() + .effectMap(dispatcher) { db -> + val dao = db.generatorEmailRelayQueries + block(dao) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/review/ReviewLog.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/review/ReviewLog.kt new file mode 100644 index 00000000..f9d26806 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/review/ReviewLog.kt @@ -0,0 +1,13 @@ +package com.artemchep.keyguard.common.service.review + +import com.artemchep.keyguard.common.io.IO +import kotlinx.coroutines.flow.Flow +import kotlinx.datetime.Instant + +interface ReviewLog { + fun setLastRequestedAt( + requestedAt: Instant, + ): IO + + fun getLastRequestedAt(): Flow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/review/ReviewService.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/review/ReviewService.kt new file mode 100644 index 00000000..92d47023 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/review/ReviewService.kt @@ -0,0 +1,10 @@ +package com.artemchep.keyguard.common.service.review + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.platform.LeContext + +interface ReviewService { + fun request( + context: LeContext, + ): IO +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/review/impl/ReviewLogImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/review/impl/ReviewLogImpl.kt new file mode 100644 index 00000000..05a06d63 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/review/impl/ReviewLogImpl.kt @@ -0,0 +1,37 @@ +package com.artemchep.keyguard.common.service.review.impl + +import com.artemchep.keyguard.common.service.Files +import com.artemchep.keyguard.common.service.keyvalue.KeyValueStore +import com.artemchep.keyguard.common.service.keyvalue.asInstant +import com.artemchep.keyguard.common.service.keyvalue.setAndCommit +import com.artemchep.keyguard.common.service.review.ReviewLog +import kotlinx.datetime.Instant +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class ReviewLogImpl( + private val store: KeyValueStore, +) : ReviewLog { + companion object { + private const val KEY_LAST_REQUESTED_AT = "last_requested_at" + + private const val NONE_INSTANT = -1L + } + + private val lastRequestedAtPref = + store.getLong(KEY_LAST_REQUESTED_AT, NONE_INSTANT) + + constructor(directDI: DirectDI) : this( + store = directDI.instance(arg = Files.REVIEW), + ) + + override fun setLastRequestedAt( + requestedAt: Instant, + ) = lastRequestedAtPref + .setAndCommit(requestedAt) + + override fun getLastRequestedAt() = lastRequestedAtPref.asInstant() +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/settings/SettingsReadRepository.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/settings/SettingsReadRepository.kt new file mode 100644 index 00000000..387fc095 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/settings/SettingsReadRepository.kt @@ -0,0 +1,88 @@ +package com.artemchep.keyguard.common.service.settings + +import com.artemchep.keyguard.common.model.AppColors +import com.artemchep.keyguard.common.model.AppFont +import com.artemchep.keyguard.common.model.AppTheme +import com.artemchep.keyguard.common.model.NavAnimation +import kotlinx.coroutines.flow.Flow +import kotlinx.datetime.Instant +import kotlin.time.Duration + +/** + * @author Artem Chepurnyi + */ +interface SettingsReadRepository { + fun getAutofillInlineSuggestions(): Flow + + fun getAutofillManualSelection(): Flow + + fun getAutofillRespectAutofillOff(): Flow + + fun getAutofillSaveRequest(): Flow + + fun getAutofillSaveUri(): Flow + + fun getAutofillCopyTotp(): Flow + + fun getVaultPersist(): Flow + + fun getVaultLockAfterReboot(): Flow + + fun getVaultTimeout(): Flow + + fun getVaultScreenLock(): Flow + + fun getBiometricTimeout(): Flow + + fun getClipboardClearDelay(): Flow + + fun getClipboardUpdateDuration(): Flow + + fun getConcealFields(): Flow + + fun getAllowScreenshots(): Flow + + fun getOnboardingLastVisitInstant(): Flow + + fun getCheckPwnedPasswords(): Flow + + fun getCheckPwnedServices(): Flow + + fun getCheckTwoFA(): Flow + + fun getWriteAccess(): Flow + + fun getDebugPremium(): Flow + + fun getDebugScreenDelay(): Flow + + fun getCachePremium(): Flow + + fun getAppIcons(): Flow + + fun getWebsiteIcons(): Flow + + fun getMarkdown(): Flow + + fun getNavAnimation(): Flow + + fun getNavLabel(): Flow + + fun getFont(): Flow + + fun getTheme(): Flow + + fun getThemeUseAmoledDark(): Flow + + fun getKeepScreenOn(): Flow + + fun getAllowTwoPanelLayoutInPortrait(): Flow + + fun getAllowTwoPanelLayoutInLandscape(): Flow + + fun getUseExternalBrowser(): Flow + + fun getColors(): Flow + + fun getLocale(): Flow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/settings/SettingsReadWriteRepository.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/settings/SettingsReadWriteRepository.kt new file mode 100644 index 00000000..6c7ad0d0 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/settings/SettingsReadWriteRepository.kt @@ -0,0 +1,162 @@ +package com.artemchep.keyguard.common.service.settings + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.AppColors +import com.artemchep.keyguard.common.model.AppFont +import com.artemchep.keyguard.common.model.AppTheme +import com.artemchep.keyguard.common.model.NavAnimation +import kotlinx.datetime.Instant +import kotlin.time.Duration + +/** + * @author Artem Chepurnyi + */ +interface SettingsReadWriteRepository : SettingsReadRepository { + fun setAutofillInlineSuggestions( + inlineSuggestions: Boolean, + ): IO + + fun setAutofillManualSelection( + manualSelection: Boolean, + ): IO + + fun setAutofillRespectAutofillOff( + respectAutofillOff: Boolean, + ): IO + + fun setAutofillSaveRequest( + saveRequest: Boolean, + ): IO + + fun setAutofillSaveUri( + saveUri: Boolean, + ): IO + + fun setAutofillCopyTotp( + copyTotp: Boolean, + ): IO + + fun setVaultPersist( + enabled: Boolean, + ): IO + + fun setVaultLockAfterReboot( + enabled: Boolean, + ): IO + + fun setVaultTimeout( + duration: Duration?, + ): IO + + fun setVaultScreenLock( + screenLock: Boolean, + ): IO + + fun setBiometricTimeout( + duration: Duration?, + ): IO + + fun setClipboardClearDelay( + duration: Duration?, + ): IO + + fun setClipboardUpdateDuration( + duration: Duration?, + ): IO + + fun setConcealFields( + concealFields: Boolean, + ): IO + + fun setAllowScreenshots( + allowScreenshots: Boolean, + ): IO + + fun setCheckPwnedPasswords( + checkPwnedPasswords: Boolean, + ): IO + + fun setCheckPwnedServices( + checkPwnedServices: Boolean, + ): IO + + fun setCheckTwoFA( + checkTwoFA: Boolean, + ): IO + + fun setWriteAccess( + writeAccess: Boolean, + ): IO + + fun setDebugPremium( + premium: Boolean, + ): IO + + fun setDebugScreenDelay( + screenDelay: Boolean, + ): IO + + fun setCachePremium( + premium: Boolean, + ): IO + + fun setAppIcons( + appIcons: Boolean, + ): IO + + fun setWebsiteIcons( + websiteIcons: Boolean, + ): IO + + fun setMarkdown( + markdown: Boolean, + ): IO + + fun setOnboardingLastVisitInstant( + instant: Instant, + ): IO + + fun setNavAnimation( + navAnimation: NavAnimation?, + ): IO + + fun setNavLabel( + visible: Boolean, + ): IO + + fun setFont( + font: AppFont?, + ): IO + + fun setTheme( + theme: AppTheme?, + ): IO + + fun setThemeUseAmoledDark( + useAmoledDark: Boolean, + ): IO + + fun setKeepScreenOn( + keepScreenOn: Boolean, + ): IO + + fun setAllowTwoPanelLayoutInPortrait( + allow: Boolean, + ): IO + + fun setAllowTwoPanelLayoutInLandscape( + allow: Boolean, + ): IO + + fun setUseExternalBrowser( + useExternalBrowser: Boolean, + ): IO + + fun setColors( + colors: AppColors?, + ): IO + + fun setLocale( + locale: String?, + ): IO +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl.kt new file mode 100644 index 00000000..49b7d0b3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/settings/impl/SettingsRepositoryImpl.kt @@ -0,0 +1,388 @@ +package com.artemchep.keyguard.common.service.settings.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.AppColors +import com.artemchep.keyguard.common.model.AppFont +import com.artemchep.keyguard.common.model.AppTheme +import com.artemchep.keyguard.common.model.NavAnimation +import com.artemchep.keyguard.common.service.Files +import com.artemchep.keyguard.common.service.keyvalue.KeyValueStore +import com.artemchep.keyguard.common.service.keyvalue.asDuration +import com.artemchep.keyguard.common.service.keyvalue.getEnumNullable +import com.artemchep.keyguard.common.service.keyvalue.getObject +import com.artemchep.keyguard.common.service.keyvalue.setAndCommit +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.map +import kotlinx.datetime.Instant +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.time.Duration + +/** + * @author Artem Chepurnyi + */ +class SettingsRepositoryImpl( + private val store: KeyValueStore, +) : SettingsReadWriteRepository { + companion object { + private const val KEY_AUTOFILL_INLINE_SUGGESTIONS = "autofill.inline_suggestions" + private const val KEY_AUTOFILL_MANUAL_SELECTION = "autofill.manual_selection" + private const val KEY_AUTOFILL_RESPECT_AUTOFILL_OFF = "autofill.respect_autofill_off" + private const val KEY_AUTOFILL_SAVE_REQUEST = "autofill.save_request" + private const val KEY_AUTOFILL_SAVE_URI = "autofill.save_uri" + private const val KEY_AUTOFILL_COPY_TOTP = "autofill.copy_totp" + private const val KEY_VAULT_PERSIST = "vault_persist" + private const val KEY_VAULT_REBOOT = "vault_reboot" + private const val KEY_VAULT_TIMEOUT = "vault_timeout" + private const val KEY_VAULT_SCREEN_LOCK = "vault_screen_lock" + private const val KEY_BIOMETRIC_TIMEOUT = "biometric_timeout" + private const val KEY_CLIPBOARD_CLEAR_DELAY = "clipboard_clear_delay" + private const val KEY_CLIPBOARD_UPDATE_DURATION = "clipboard_update_duration" + private const val KEY_CONCEAL_FIELDS = "conceal_fields" + private const val KEY_ALLOW_SCREENSHOTS = "allow_screenshots" + private const val KEY_CHECK_PWNED_PASSWORDS = "check_pwned_passwords" + private const val KEY_CHECK_PWNED_SERVICES = "check_pwned_services" + private const val KEY_CHECK_TWO_FA = "check_two_fa" + private const val KEY_WRITE_ACCESS = "exp.22.write_access" + private const val KEY_DEBUG_PREMIUM = "debug_premium" + private const val KEY_DEBUG_SCREEN_DELAY = "debug_screen_delay" + private const val KEY_CACHE_PREMIUM = "cache_premium" + private const val KEY_APP_ICONS = "app_icons" + private const val KEY_WEBSITE_ICONS = "website_icons" + private const val KEY_MARKDOWN = "markdown" + private const val KEY_NAV_ANIMATION = "nav_animation" + private const val KEY_NAV_LABEL = "nav_label" + private const val KEY_TWO_PANEL_LAYOUT_LANDSCAPE = "two_panel_layout_landscape" + private const val KEY_TWO_PANEL_LAYOUT_PORTRAIT = "two_panel_layout_portrait" + private const val KEY_USE_EXTERNAL_BROWSER = "use_external_browser" + private const val KEY_FONT = "font" + private const val KEY_THEME = "theme" + private const val KEY_THEME_USE_AMOLED_DARK = "theme_use_amoled_dark" + private const val KEY_ONBOARDING_LAST_VISIT = "onboarding_last_visit" + private const val KEY_KEEP_SCREEN_ON = "keep_screen_on" + private const val KEY_COLORS = "colors" + private const val KEY_LOCALE = "locale" + + private const val NONE_DURATION = -1L + } + + private val autofillInlineSuggestionsPref = + store.getBoolean(KEY_AUTOFILL_INLINE_SUGGESTIONS, true) + + private val autofillManualSelectionPref = + store.getBoolean(KEY_AUTOFILL_MANUAL_SELECTION, true) + + private val autofillRespectAutofillOffPref = + store.getBoolean(KEY_AUTOFILL_RESPECT_AUTOFILL_OFF, false) + + private val autofillSaveRequestPref = + store.getBoolean(KEY_AUTOFILL_SAVE_REQUEST, true) + + private val autofillSaveUriPref = + store.getBoolean(KEY_AUTOFILL_SAVE_URI, false) + + private val autofillCopyTotpPref = + store.getBoolean(KEY_AUTOFILL_COPY_TOTP, true) + + private val vaultPersistPref = store.getBoolean(KEY_VAULT_PERSIST, false) + + private val vaultLockAfterRebootPref = store.getBoolean(KEY_VAULT_REBOOT, false) + + private val vaultTimeoutPref = store.getLong(KEY_VAULT_TIMEOUT, NONE_DURATION) + + private val vaultScreenLockPref = store.getBoolean(KEY_VAULT_SCREEN_LOCK, true) + + private val biometricTimeoutPref = store.getLong(KEY_BIOMETRIC_TIMEOUT, NONE_DURATION) + + private val clipboardClearDelayPref = + store.getLong(KEY_CLIPBOARD_CLEAR_DELAY, NONE_DURATION) + + private val clipboardUpdateDurationPref = + store.getLong(KEY_CLIPBOARD_UPDATE_DURATION, NONE_DURATION) + + private val concealFieldsPref = + store.getBoolean(KEY_CONCEAL_FIELDS, true) + + private val allowScreenshotsPref = + store.getBoolean(KEY_ALLOW_SCREENSHOTS, false) + + private val checkPwnedPasswordsPref = + store.getBoolean(KEY_CHECK_PWNED_PASSWORDS, false) + + private val checkPwnedServicesPref = + store.getBoolean(KEY_CHECK_PWNED_SERVICES, false) + + private val checkTwoFAPref = + store.getBoolean(KEY_CHECK_TWO_FA, false) + + private val writeAccessPref = + store.getBoolean(KEY_WRITE_ACCESS, true) + + private val debugPremiumPref = + store.getBoolean(KEY_DEBUG_PREMIUM, false) + + private val debugScreenDelayPref = + store.getBoolean(KEY_DEBUG_SCREEN_DELAY, false) + + private val cachePremiumPref = + store.getBoolean(KEY_CACHE_PREMIUM, false) + + private val appIconsPref = + store.getBoolean(KEY_APP_ICONS, true) + + private val websiteIconsPref = + store.getBoolean(KEY_WEBSITE_ICONS, true) + + private val markdownPref = + store.getBoolean(KEY_MARKDOWN, true) + + private val themeUseAmoledDarkPref = + store.getBoolean(KEY_THEME_USE_AMOLED_DARK, false) + + private val keepScreenOnPref = + store.getBoolean(KEY_KEEP_SCREEN_ON, true) + + private val navLabelPref = + store.getBoolean(KEY_NAV_LABEL, true) + + private val allowTwoPanelLayoutInLandscapePref = + store.getBoolean(KEY_TWO_PANEL_LAYOUT_LANDSCAPE, true) + + private val allowTwoPanelLayoutInPortraitPref = + store.getBoolean(KEY_TWO_PANEL_LAYOUT_PORTRAIT, true) + + private val useExternalBrowserPref = + store.getBoolean(KEY_USE_EXTERNAL_BROWSER, false) + + private val navAnimationPref = + store.getEnumNullable(KEY_NAV_ANIMATION, lens = NavAnimation::key) + + private val fontPref = + store.getEnumNullable(KEY_FONT, lens = AppFont::key) + + private val themePref = + store.getEnumNullable(KEY_THEME, lens = AppTheme::key) + + private val colorsPref = + store.getEnumNullable(KEY_COLORS, lens = AppColors::key) + + private val localePref = + store.getString(KEY_LOCALE, "") + + private val onboardingLastVisitInstantPref = + store.getObject( + KEY_ONBOARDING_LAST_VISIT, + defaultValue = null, + serialize = { instant -> + val millis = instant?.toEpochMilliseconds() + millis?.toString().orEmpty() + }, + deserialize = { millis -> + millis + .toLongOrNull() + ?.let(Instant::fromEpochMilliseconds) + }, + ) + + constructor(directDI: DirectDI) : this( + store = directDI.instance(arg = Files.SETTINGS), + ) + + override fun setAutofillInlineSuggestions(inlineSuggestions: Boolean) = + autofillInlineSuggestionsPref + .setAndCommit(inlineSuggestions) + + override fun getAutofillInlineSuggestions() = autofillInlineSuggestionsPref + + override fun setAutofillManualSelection(manualSelection: Boolean) = autofillManualSelectionPref + .setAndCommit(manualSelection) + + override fun getAutofillManualSelection() = autofillManualSelectionPref + + override fun setAutofillRespectAutofillOff(respectAutofillOff: Boolean) = + autofillRespectAutofillOffPref + .setAndCommit(respectAutofillOff) + + override fun getAutofillRespectAutofillOff() = autofillRespectAutofillOffPref + + override fun setAutofillSaveRequest(saveRequest: Boolean) = autofillSaveRequestPref + .setAndCommit(saveRequest) + + override fun getAutofillSaveRequest() = autofillSaveRequestPref + + override fun setAutofillSaveUri(saveUri: Boolean) = autofillSaveUriPref + .setAndCommit(saveUri) + + override fun getAutofillSaveUri() = autofillSaveUriPref + + override fun setOnboardingLastVisitInstant(instant: Instant): IO = + onboardingLastVisitInstantPref + .setAndCommit(instant) + + override fun getOnboardingLastVisitInstant(): Flow = onboardingLastVisitInstantPref + + override fun setAutofillCopyTotp(copyTotp: Boolean) = autofillCopyTotpPref + .setAndCommit(copyTotp) + + override fun getAutofillCopyTotp() = autofillCopyTotpPref + + override fun setVaultPersist(enabled: Boolean): IO = vaultPersistPref + .setAndCommit(enabled) + + override fun getVaultPersist(): Flow = vaultPersistPref + + override fun setVaultLockAfterReboot(enabled: Boolean): IO = vaultLockAfterRebootPref + .setAndCommit(enabled) + + override fun getVaultLockAfterReboot(): Flow = vaultLockAfterRebootPref + + override fun setVaultTimeout(duration: Duration?) = vaultTimeoutPref + .setAndCommit(duration) + + override fun getVaultTimeout(): Flow = vaultTimeoutPref + .asDuration() + + override fun setVaultScreenLock(screenLock: Boolean) = vaultScreenLockPref + .setAndCommit(screenLock) + + override fun getVaultScreenLock() = vaultScreenLockPref + + override fun setBiometricTimeout(duration: Duration?) = biometricTimeoutPref + .setAndCommit(duration) + + override fun getBiometricTimeout() = biometricTimeoutPref + .asDuration() + + override fun setClipboardClearDelay(duration: Duration?) = clipboardClearDelayPref + .setAndCommit(duration) + + override fun getClipboardClearDelay() = clipboardClearDelayPref + .asDuration() + + override fun setClipboardUpdateDuration(duration: Duration?) = clipboardUpdateDurationPref + .setAndCommit(duration) + + override fun getClipboardUpdateDuration() = clipboardUpdateDurationPref + .asDuration() + + override fun setConcealFields(concealFields: Boolean) = concealFieldsPref + .setAndCommit(concealFields) + + override fun getConcealFields() = concealFieldsPref + + override fun setAllowScreenshots(allowScreenshots: Boolean) = allowScreenshotsPref + .setAndCommit(allowScreenshots) + + override fun getAllowScreenshots() = allowScreenshotsPref + + override fun setCheckPwnedPasswords(checkPwnedPasswords: Boolean) = checkPwnedPasswordsPref + .setAndCommit(checkPwnedPasswords) + + override fun getCheckPwnedPasswords() = checkPwnedPasswordsPref + + override fun setCheckPwnedServices(checkPwnedServices: Boolean) = checkPwnedServicesPref + .setAndCommit(checkPwnedServices) + + override fun getCheckPwnedServices() = checkPwnedServicesPref + + override fun setCheckTwoFA(checkTwoFA: Boolean) = checkTwoFAPref + .setAndCommit(checkTwoFA) + + override fun getCheckTwoFA() = checkTwoFAPref + + override fun setDebugPremium(premium: Boolean) = debugPremiumPref + .setAndCommit(premium) + + override fun getDebugPremium() = debugPremiumPref + + override fun setWriteAccess(writeAccess: Boolean) = writeAccessPref + .setAndCommit(writeAccess) + + override fun getWriteAccess() = writeAccessPref + + override fun setDebugScreenDelay(screenDelay: Boolean) = debugScreenDelayPref + .setAndCommit(screenDelay) + + override fun getDebugScreenDelay() = debugScreenDelayPref + + override fun setCachePremium(premium: Boolean) = cachePremiumPref + .setAndCommit(premium) + + override fun getCachePremium() = cachePremiumPref + + override fun setAppIcons(appIcons: Boolean) = appIconsPref + .setAndCommit(appIcons) + + override fun getAppIcons() = appIconsPref + + override fun setWebsiteIcons(websiteIcons: Boolean) = websiteIconsPref + .setAndCommit(websiteIcons) + + override fun getWebsiteIcons() = websiteIconsPref + + override fun setMarkdown(markdown: Boolean) = markdownPref + .setAndCommit(markdown) + + override fun getMarkdown() = markdownPref + + override fun setNavAnimation(navAnimation: NavAnimation?) = navAnimationPref + .setAndCommit(navAnimation) + + override fun getNavAnimation() = navAnimationPref + + override fun setNavLabel(visible: Boolean) = navLabelPref + .setAndCommit(visible) + + override fun getNavLabel() = navLabelPref + + override fun setFont(font: AppFont?) = fontPref + .setAndCommit(font) + + override fun getFont() = fontPref + + override fun setTheme(theme: AppTheme?) = themePref + .setAndCommit(theme) + + override fun getTheme() = themePref + + override fun setThemeUseAmoledDark(useAmoledDark: Boolean) = themeUseAmoledDarkPref + .setAndCommit(useAmoledDark) + + override fun getThemeUseAmoledDark() = themeUseAmoledDarkPref + + override fun setKeepScreenOn(keepScreenOn: Boolean) = keepScreenOnPref + .setAndCommit(keepScreenOn) + + override fun getKeepScreenOn() = keepScreenOnPref + + override fun setAllowTwoPanelLayoutInLandscape(allow: Boolean) = + allowTwoPanelLayoutInLandscapePref + .setAndCommit(allow) + + override fun getAllowTwoPanelLayoutInLandscape() = allowTwoPanelLayoutInLandscapePref + + override fun setAllowTwoPanelLayoutInPortrait(allow: Boolean) = + allowTwoPanelLayoutInPortraitPref + .setAndCommit(allow) + + override fun getAllowTwoPanelLayoutInPortrait() = allowTwoPanelLayoutInPortraitPref + + override fun getUseExternalBrowser() = useExternalBrowserPref + + override fun setUseExternalBrowser(useExternalBrowser: Boolean) = useExternalBrowserPref + .setAndCommit(useExternalBrowser) + + override fun setColors(colors: AppColors?) = colorsPref + .setAndCommit(colors) + + override fun getColors() = colorsPref + + override fun setLocale(locale: String?) = localePref + .setAndCommit(locale.orEmpty()) + + override fun getLocale() = localePref + .map { locale -> + locale.takeUnless { it.isEmpty() } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/similarity/SimilarityService.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/similarity/SimilarityService.kt new file mode 100644 index 00000000..e8531db7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/similarity/SimilarityService.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.common.service.similarity + +interface SimilarityService { + fun score( + a: String, + b: String, + ): Float +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/state/StateRepository.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/state/StateRepository.kt new file mode 100644 index 00000000..83e09eb8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/state/StateRepository.kt @@ -0,0 +1,13 @@ +package com.artemchep.keyguard.common.service.state + +import com.artemchep.keyguard.common.io.IO +import kotlinx.coroutines.flow.Flow + +interface StateRepository { + fun put( + key: String, + model: Map, + ): IO + + fun get(key: String): Flow> +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl.kt new file mode 100644 index 00000000..9abe20a1 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/state/impl/StateRepositoryImpl.kt @@ -0,0 +1,117 @@ +package com.artemchep.keyguard.common.service.state.impl + +import com.artemchep.keyguard.common.model.AnyMap +import com.artemchep.keyguard.common.service.keyvalue.KeyValuePreference +import com.artemchep.keyguard.common.service.keyvalue.KeyValueStore +import com.artemchep.keyguard.common.service.keyvalue.getObject +import com.artemchep.keyguard.common.service.state.StateRepository +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.map +import kotlinx.serialization.encodeToString +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonArray +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.JsonNull +import kotlinx.serialization.json.JsonObject +import kotlinx.serialization.json.JsonPrimitive +import kotlinx.serialization.json.booleanOrNull +import kotlinx.serialization.json.contentOrNull +import kotlinx.serialization.json.doubleOrNull +import kotlinx.serialization.json.jsonArray +import kotlinx.serialization.json.jsonObject +import kotlinx.serialization.json.jsonPrimitive +import kotlinx.serialization.json.longOrNull + +class StateRepositoryImpl( + private val store: KeyValueStore, + private val json: Json, +) : StateRepository { + private val registry = mutableMapOf>() + + private fun createOrGetPref( + key: String, + ): KeyValuePreference = synchronized(this) { + registry.getOrPut(key) { + createPref(key) + } + } + + private fun createPref( + key: String, + ): KeyValuePreference = store.getObject( + key = key, + defaultValue = null, + serialize = { entity -> + val obj = entity?.value.toJson() + obj.let(json::encodeToString) + }, + deserialize = { text -> + kotlin.runCatching { + val obj = json.decodeFromString(text) + val map = obj.toMap() + AnyMap(map) + }.getOrNull() + }, + ) + + override fun put(key: String, model: Map) = kotlin.run { + val anyMap = AnyMap( + value = model, + ) + createOrGetPref(key) + .setAndCommit(anyMap) + } + + override fun get(key: String): Flow> = createOrGetPref(key) + .map { + it?.value.orEmpty() + } +} + +fun JsonObject.toMap(): Map = this + .mapValues { (_, element) -> + element.extractedContent + } + +fun Any?.toJson(): JsonElement = when (this) { + null -> JsonNull + is String -> JsonPrimitive(this) + is Number -> JsonPrimitive(this) + is Boolean -> JsonPrimitive(this) + is Map<*, *> -> { + val content = map { (k, v) -> k.toString() to v.toJson() } + JsonObject(content.toMap()) + } + + is List<*> -> { + val content = map { it.toJson() } + JsonArray(content) + } + + is JsonElement -> this + else -> throw IllegalArgumentException("Unable to encode $this") +} + +val JsonElement.extractedContent: Any? + get() { + if (this is JsonPrimitive) { + if (this.jsonPrimitive.isString) { + return this.jsonPrimitive.content + } + return this.jsonPrimitive.booleanOrNull + ?: this.jsonPrimitive.longOrNull + ?: this.jsonPrimitive.doubleOrNull + ?: this.jsonPrimitive.contentOrNull + } + if (this is JsonArray) { + return this.jsonArray.map { + it.extractedContent + } + } + if (this is JsonObject) { + return this.jsonObject.entries.associate { + it.key to it.value.extractedContent + } + } + return null + } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/subscription/SubscriptionService.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/subscription/SubscriptionService.kt new file mode 100644 index 00000000..1ac9ea02 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/subscription/SubscriptionService.kt @@ -0,0 +1,14 @@ +package com.artemchep.keyguard.common.service.subscription + +import com.artemchep.keyguard.common.model.Product +import com.artemchep.keyguard.common.model.RichResult +import com.artemchep.keyguard.common.model.Subscription +import kotlinx.coroutines.flow.Flow + +interface SubscriptionService { + fun purchased(): Flow> + + fun subscriptions(): Flow?> + + fun products(): Flow?> +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/text/Base32Service.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/text/Base32Service.kt new file mode 100644 index 00000000..068d778a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/text/Base32Service.kt @@ -0,0 +1,43 @@ +package com.artemchep.keyguard.common.service.text + +interface Base32Service { + // + // Encoders + // + + fun encode( + text: String, + ): ByteArray = encode(text.toByteArray()) + + fun encodeToString( + text: String, + ): String = encode(text).let(::String) + + fun encode( + bytes: ByteArray, + ): ByteArray + + fun encodeToString( + bytes: ByteArray, + ): String = encode(bytes).let(::String) + + // + // Decoders + // + + fun decode( + text: String, + ): ByteArray = decode(text.toByteArray()) + + fun decodeToString( + text: String, + ): String = decode(text).let(::String) + + fun decode( + bytes: ByteArray, + ): ByteArray + + fun decodeToString( + bytes: ByteArray, + ): String = decode(bytes).let(::String) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/text/Base64Service.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/text/Base64Service.kt new file mode 100644 index 00000000..6b946688 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/text/Base64Service.kt @@ -0,0 +1,48 @@ +package com.artemchep.keyguard.common.service.text + +interface Base64Service { + // + // Encoders + // + + fun encode( + text: String, + ): ByteArray = encode(text.toByteArray()) + + fun encodeToString( + text: String, + ): String = encode(text).let(::String) + + fun encode( + bytes: ByteArray, + ): ByteArray + + fun encodeToString( + bytes: ByteArray, + ): String = encode(bytes).let(::String) + + // + // Decoders + // + + fun decode( + text: String, + ): ByteArray = decode(text.toByteArray()) + + fun decodeToString( + text: String, + ): String = decode(text).let(::String) + + fun decode( + bytes: ByteArray, + ): ByteArray + + fun decodeToString( + bytes: ByteArray, + ): String = decode(bytes).let(::String) +} + +fun Base64Service.url(base64: String): String = base64 + .replace('+', '-') + .replace('/', '_') + .replace("=", "") diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/text/TextService.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/text/TextService.kt new file mode 100644 index 00000000..3f2ab93e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/text/TextService.kt @@ -0,0 +1,22 @@ +package com.artemchep.keyguard.common.service.text + +import dev.icerock.moko.resources.FileResource +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext +import java.io.InputStream + +interface TextService { + fun readFromResources( + fileResource: FileResource, + ): InputStream +} + +suspend fun TextService.readFromResourcesAsText( + fileResource: FileResource, +) = withContext(Dispatchers.IO) { + readFromResources(fileResource).use { inputStream -> + inputStream + .bufferedReader() + .readText() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/tld/TldService.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/tld/TldService.kt new file mode 100644 index 00000000..705d2fda --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/tld/TldService.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.service.tld + +import com.artemchep.keyguard.common.io.IO + +interface TldService { + fun getDomainName(host: String): IO +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/tld/impl/TldServiceImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/tld/impl/TldServiceImpl.kt new file mode 100644 index 00000000..9811e764 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/tld/impl/TldServiceImpl.kt @@ -0,0 +1,127 @@ +package com.artemchep.keyguard.common.service.tld.impl + +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.io.measure +import com.artemchep.keyguard.common.io.shared +import com.artemchep.keyguard.common.service.logging.LogRepository +import com.artemchep.keyguard.common.service.logging.postDebug +import com.artemchep.keyguard.common.service.text.TextService +import com.artemchep.keyguard.common.service.tld.TldService +import com.artemchep.keyguard.res.Res +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class TldServiceImpl( + private val textService: TextService, + private val logRepository: LogRepository, +) : TldService { + companion object { + private const val TAG = "TldService.android" + } + + private val dataIo = ::loadTld + .partially1(textService) + .measure { duration, node -> + logRepository.postDebug(TAG) { + val totalCount = node.count() + "Loaded TLD tree in $duration, and it has $totalCount leaves." + } + } + .shared() + + constructor( + directDI: DirectDI, + ) : this( + textService = directDI.instance(), + logRepository = directDI.instance(), + ) + + override fun getDomainName( + host: String, + ): IO = dataIo + .effectMap { node -> + val parts = host.trim().split(".").asReversed() + val length = node.match(parts) + parts + // Take N parts of TLD and then one + // custom domain. + .take(length + 1) + .asReversed() + .joinToString(separator = ".") + } + .measure { duration, result -> + logRepository.postDebug(TAG) { + "Found '$result' from the host '$host' in $duration" + } + } + + private fun Node.count(): Int = children.values + .fold(children.values.size) { y, x -> y + x.count() } +} + +private data class Node( + val children: MutableMap = mutableMapOf(), +) + +/** + * Loads a TLD list from a local resource file into a + * hash-tree for more compact footprint & faster search. + */ +private suspend fun loadTld( + textService: TextService, +) = withContext(Dispatchers.IO) { + textService + .readFromResources(Res.files.public_suffix_list).use { + it + .bufferedReader() + .useLines { lines -> + val root = Node() + lines + // Check + // https://publicsuffix.org/list/ + // for formatting rules. + .filter { it.isNotEmpty() && !it.startsWith("//") } + .forEach { line -> + val parts = line.trim().split(".").asReversed() + root.append(parts) + } + root + } + } +} + +private fun Node.match(parts: List): Int = + _match( + parts = parts, + offset = 0, + ) + +private tailrec fun Node._match( + parts: List, + offset: Int, +): Int { + if (offset >= parts.size) { + return offset + } + val key = parts[offset] + val next = children[key] + ?: children["*"] + ?: return offset + return next._match(parts, offset + 1) +} + +private tailrec fun Node.append(parts: List) { + if (parts.isEmpty()) { + return + } + val key = parts.first() + val next = getOrPut(key) + next.append(parts = parts.subList(1, parts.size)) +} + +private fun Node.getOrPut(key: String): Node = children + .getOrPut(key) { Node() } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/totp/TotpService.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/totp/TotpService.kt new file mode 100644 index 00000000..0bb7768a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/totp/TotpService.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.common.service.totp + +import com.artemchep.keyguard.common.model.TotpCode +import com.artemchep.keyguard.common.model.TotpToken +import kotlinx.datetime.Instant + +interface TotpService { + fun generate( + token: TotpToken, + timestamp: Instant, + ): TotpCode +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/totp/impl/TotpServiceImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/totp/impl/TotpServiceImpl.kt new file mode 100644 index 00000000..ec027ac0 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/totp/impl/TotpServiceImpl.kt @@ -0,0 +1,264 @@ +package com.artemchep.keyguard.common.service.totp.impl + +import com.artemchep.keyguard.common.model.CryptoHashAlgorithm +import com.artemchep.keyguard.common.model.TotpCode +import com.artemchep.keyguard.common.model.TotpToken +import com.artemchep.keyguard.common.service.crypto.CryptoGenerator +import com.artemchep.keyguard.common.service.text.Base32Service +import com.artemchep.keyguard.common.service.totp.TotpService +import com.artemchep.keyguard.common.util.int +import com.artemchep.keyguard.common.util.millis +import kotlinx.datetime.Instant +import org.kodein.di.DirectDI +import org.kodein.di.instance +import java.util.Locale +import javax.crypto.Mac +import javax.crypto.spec.SecretKeySpec +import kotlin.experimental.and +import kotlin.math.pow +import kotlin.math.roundToLong +import kotlin.time.Duration + + +// Code largely based on the +// https://github.com/marcelkliemannel/kotlin-onetimepassword +class TotpServiceImpl( + private val base32Service: Base32Service, + private val cryptoGenerator: CryptoGenerator, +) : TotpService { + companion object { + private const val STEAM_ALLOWED_CHARS = "23456789BCDFGHJKMNPQRTVWXY" + } + + constructor( + directDI: DirectDI, + ) : this( + base32Service = directDI.instance(), + cryptoGenerator = directDI.instance(), + ) + + override fun generate( + token: TotpToken, + timestamp: Instant, + ): TotpCode = when (token) { + is TotpToken.TotpAuth -> generateTotpAuthCode( + token = token, + timestamp = timestamp, + ) + + is TotpToken.HotpAuth -> generateHotpAuthCode( + token = token, + ) + + is TotpToken.SteamAuth -> generateSteamAuthCode( + token = token, + timestamp = timestamp, + ) + + is TotpToken.MobileAuth -> generateMobileAuthCode( + token = token, + timestamp = timestamp, + ) + } + + private fun roundToPeriodInSeconds( + timestamp: Instant, + period: Long, + ): Long { + // Instead of `epochSeconds` round the current second. This is + // to fix problems that occur if you request an update a few millis + // before the next period. + val seconds = (timestamp.millis.toDouble() / 1000.0).roundToLong() + return seconds / period + } + + /** + * Generator for the RFC 4226 "HOTP: An HMAC-Based One-Time Password Algorithm" + * (https://tools.ietf.org/html/rfc4226). TOTP is an extension on top of the HOTP + * algorithm where the counter is bound to the current time. + */ + private fun generateTotpAuthCode( + token: TotpToken.TotpAuth, + timestamp: Instant, + ): TotpCode { + val key = base32Service.decode(token.keyBase32) + val period = token.period + val time = roundToPeriodInSeconds(timestamp, period) + // The resulting integer value of the code must have at most the required code + // digits. Therefore the binary value is reduced by calculating the modulo + // 10 ^ codeDigits. + val codeInt = genHotpBinaryInt( + key = key, + counter = time, + algorithm = token.algorithm, + ).rem(10.0.pow(token.digits).toInt()) + // The integer code variable may contain a value with fewer digits than the + // required code digits. Therefore the final code value is filled with zeros + // on the left, till the code digits requirement is fulfilled. + val code = codeInt.toString().padStart(token.digits, '0') + return TotpCode( + code = code, + counter = TotpCode.TimeBasedCounter( + timestamp = timestamp, + expiration = kotlin.run { + // Get the beginning of the next period as an + // expiration date. + val exp = (time + 1L) * period + Instant.fromEpochSeconds(exp) + }, + duration = with(Duration) { period.seconds }, + ), + ) + } + + /** + * Generator for the RFC 4226 "HOTP: An HMAC-Based One-Time Password Algorithm" + * (https://tools.ietf.org/html/rfc4226) + */ + private fun generateHotpAuthCode( + token: TotpToken.HotpAuth, + ): TotpCode { + val key = base32Service.decode(token.keyBase32) + val counter = token.counter + // The resulting integer value of the code must have at most the required code + // digits. Therefore the binary value is reduced by calculating the modulo + // 10 ^ codeDigits. + val codeInt = genHotpBinaryInt( + key = key, + counter = counter, + algorithm = token.algorithm, + ).rem(10.0.pow(token.digits).toInt()) + // The integer code variable may contain a value with fewer digits than the + // required code digits. Therefore the final code value is filled with zeros + // on the left, till the code digits requirement is fulfilled. + val code = codeInt.toString().padStart(token.digits, '0') + return TotpCode( + code = code, + counter = TotpCode.IncrementBasedCounter( + counter = counter, + ), + ) + } + + /** + * Generator for the Steam one-time-password schema. Yes, Steam the + * app by Valve. + */ + private fun generateSteamAuthCode( + token: TotpToken.SteamAuth, + timestamp: Instant, + ): TotpCode { + val key = base32Service.decode(token.keyBase32) + val period = token.period + val time = roundToPeriodInSeconds(timestamp, period) + + val binaryInt = genHotpBinaryInt( + key = key, + counter = time, + algorithm = token.algorithm, + ) + val code = buildString { + var tmp = binaryInt + for (i in 0 until token.digits) { + val char = STEAM_ALLOWED_CHARS[tmp % STEAM_ALLOWED_CHARS.length] + append(char) + tmp /= STEAM_ALLOWED_CHARS.length + } + } + return TotpCode( + code = code, + counter = TotpCode.TimeBasedCounter( + timestamp = timestamp, + expiration = kotlin.run { + // Get the beginning of the next period as an + // expiration date. + val exp = (time + 1L) * period + Instant.fromEpochSeconds(exp) + }, + duration = with(Duration) { period.seconds }, + ), + ) + } + + private fun genHotpBinaryInt( + key: ByteArray, + counter: Long, + algorithm: CryptoHashAlgorithm, + ): Int { + // The counter value is the input parameter 'message' to the HMAC algorithm. + // It must be represented by a byte array with the length of a long (8 bytes). + val messageSize = 8 + val message = ByteArray(messageSize) { i -> + val shift = (messageSize - i - 1).times(8) + val byte = counter and (0xFF.toLong() shl shift) shr shift + byte.toByte() + } + val algorithmName = when (algorithm) { + CryptoHashAlgorithm.SHA_1 -> "HmacSHA1" + CryptoHashAlgorithm.SHA_256 -> "HmacSHA256" + CryptoHashAlgorithm.SHA_512 -> "HmacSHA512" + } + val hash = Mac.getInstance(algorithmName).run { + init(SecretKeySpec(key, "RAW")) // The hard-coded value 'RAW' is specified in the RFC + doFinal(message) + } + + // The value of the offset is the lower 4 bits of the last byte of the hash + // (0x0F = 0000 1111). + val offset = hash.last().and(0x0F).toInt() + // The first step for extracting the binary value is to collect the next four + // bytes from the hash, starting at the index of the offset. + val binary = ByteArray(4) { i -> + hash[i + offset] + } + // The second step is to drop the most significant bit (MSB) from the first + // step binary value (0x7F = 0111 1111). + binary[0] = binary[0].and(0x7F) + // The resulting integer value of the code must have at most the required code + // digits. Therefore the binary value is reduced by calculating the modulo + // 10 ^ codeDigits. + return binary.int + } + + @OptIn(ExperimentalStdlibApi::class) + private fun generateMobileAuthCode( + token: TotpToken.MobileAuth, + timestamp: Instant, + ): TotpCode { + val period = token.period + // As per the spec, the mOTP code should be generated each 10 seconds and + // valid for the next 3 minutes. This sucks for the users tho, as he does not know + // the latter. + val actualPeriod = 10L + val multiplier = period / actualPeriod // must be recoverable + val time = roundToPeriodInSeconds(timestamp, period) * multiplier + + // Generate a hash from the data. + val data = buildString { + append(time) + append(token.secret) + if (token.pin != null) { + append(token.pin) + } + } + val hash = cryptoGenerator.hashMd5(data.toByteArray()) + + val code = hash + .toHexString() + .lowercase(Locale.ENGLISH) + .take(token.digits) + return TotpCode( + code = code, + counter = TotpCode.TimeBasedCounter( + timestamp = timestamp, + expiration = kotlin.run { + // Get the beginning of the next period as an + // expiration date. + val exp = (time / multiplier + 1L) * period + Instant.fromEpochSeconds(exp) + }, + duration = with(Duration) { period.seconds }, + ), + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/twofa/TwoFaService.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/twofa/TwoFaService.kt new file mode 100644 index 00000000..620bbc2b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/twofa/TwoFaService.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.service.twofa + +import com.artemchep.keyguard.common.io.IO + +interface TwoFaService { + fun get(): IO> +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/twofa/TwoFaServiceInfo.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/twofa/TwoFaServiceInfo.kt new file mode 100644 index 00000000..97678e88 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/twofa/TwoFaServiceInfo.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.common.service.twofa + +data class TwoFaServiceInfo( + val name: String, + val domain: String, + val domains: Set = emptySet(), + val url: String? = null, + val documentation: String? = null, + val notes: String? = null, + val tfa: Set = emptySet(), +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/twofa/impl/TwoFaServiceImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/twofa/impl/TwoFaServiceImpl.kt new file mode 100644 index 00000000..bde2f308 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/twofa/impl/TwoFaServiceImpl.kt @@ -0,0 +1,66 @@ +package com.artemchep.keyguard.common.service.twofa.impl + +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.io.shared +import com.artemchep.keyguard.common.service.text.TextService +import com.artemchep.keyguard.common.service.text.readFromResourcesAsText +import com.artemchep.keyguard.common.service.twofa.TwoFaService +import com.artemchep.keyguard.common.service.twofa.TwoFaServiceInfo +import com.artemchep.keyguard.res.Res +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.Json +import org.kodein.di.DirectDI +import org.kodein.di.instance + +@Serializable +data class TfaEntity( + val name: String, + val domain: String, + @SerialName("additional-domains") + val domains: Set = emptySet(), + val url: String? = null, + val documentation: String? = null, + val notes: String? = null, + val tfa: Set = emptySet(), +) + +fun TfaEntity.toDomain() = kotlin.run { + TwoFaServiceInfo( + name = name, + domain = domain, + domains = domains + domain, + url = url, + documentation = documentation, + notes = notes, + tfa = tfa, + ) +} + +class TwoFaServiceImpl( + private val textService: TextService, + private val json: Json, +) : TwoFaService { + private val listIo = ::loadTfaRawData + .partially1(textService) + .effectMap { jsonString -> + val entities = json.decodeFromString>(jsonString) + val models = entities.map(TfaEntity::toDomain) + models + } + .shared() + + constructor( + directDI: DirectDI, + ) : this( + textService = directDI.instance(), + json = directDI.instance(), + ) + + override fun get() = listIo +} + +private suspend fun loadTfaRawData( + textService: TextService, +) = textService.readFromResourcesAsText(Res.files.tfa) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/FingerprintReadRepository.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/FingerprintReadRepository.kt new file mode 100644 index 00000000..96d26c25 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/FingerprintReadRepository.kt @@ -0,0 +1,15 @@ +package com.artemchep.keyguard.common.service.vault + +import com.artemchep.keyguard.common.model.Fingerprint +import kotlinx.coroutines.flow.Flow + +/** + * @author Artem Chepurnyi + */ +interface FingerprintReadRepository { + /** + * Returns a flow of tokens to help to identify the password and + * generate a master key. + */ + fun get(): Flow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/FingerprintReadWriteRepository.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/FingerprintReadWriteRepository.kt new file mode 100644 index 00000000..2f6fc4b0 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/FingerprintReadWriteRepository.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.common.service.vault + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.Fingerprint + +/** + * @author Artem Chepurnyi + */ +interface FingerprintReadWriteRepository : FingerprintReadRepository { + fun put(key: Fingerprint?): IO +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/KeyReadRepository.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/KeyReadRepository.kt new file mode 100644 index 00000000..9a454bfb --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/KeyReadRepository.kt @@ -0,0 +1,14 @@ +package com.artemchep.keyguard.common.service.vault + +import com.artemchep.keyguard.common.model.PersistedSession +import kotlinx.coroutines.flow.Flow + +/** + * @author Artem Chepurnyi + */ +interface KeyReadRepository { + /** + * Returns a flow of master key. + */ + fun get(): Flow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/KeyReadWriteRepository.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/KeyReadWriteRepository.kt new file mode 100644 index 00000000..0a0af714 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/KeyReadWriteRepository.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.common.service.vault + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.PersistedSession + +/** + * @author Artem Chepurnyi + */ +interface KeyReadWriteRepository : KeyReadRepository { + fun put(session: PersistedSession?): IO +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/SessionMetadataReadRepository.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/SessionMetadataReadRepository.kt new file mode 100644 index 00000000..ae2b0d51 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/SessionMetadataReadRepository.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.common.service.vault + +import kotlinx.coroutines.flow.Flow +import kotlinx.datetime.Instant + +/** + * @author Artem Chepurnyi + */ +interface SessionMetadataReadRepository { + fun getLastPasswordUseTimestamp(): Flow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/SessionMetadataReadWriteRepository.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/SessionMetadataReadWriteRepository.kt new file mode 100644 index 00000000..c253578d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/SessionMetadataReadWriteRepository.kt @@ -0,0 +1,13 @@ +package com.artemchep.keyguard.common.service.vault + +import com.artemchep.keyguard.common.io.IO +import kotlinx.datetime.Instant + +/** + * @author Artem Chepurnyi + */ +interface SessionMetadataReadWriteRepository : SessionMetadataReadRepository { + fun setLastPasswordUseTimestamp( + instant: Instant?, + ): IO +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/SessionReadRepository.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/SessionReadRepository.kt new file mode 100644 index 00000000..74707385 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/SessionReadRepository.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.common.service.vault + +import com.artemchep.keyguard.common.model.MasterSession +import kotlinx.coroutines.flow.Flow + +/** + * @author Artem Chepurnyi + */ +interface SessionReadRepository { + fun get(): Flow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/SessionReadWriteRepository.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/SessionReadWriteRepository.kt new file mode 100644 index 00000000..4061fcdb --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/SessionReadWriteRepository.kt @@ -0,0 +1,10 @@ +package com.artemchep.keyguard.common.service.vault + +import com.artemchep.keyguard.common.model.MasterSession + +/** + * @author Artem Chepurnyi + */ +interface SessionReadWriteRepository : SessionReadRepository { + fun put(key: MasterSession) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl.kt new file mode 100644 index 00000000..760ee256 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/impl/FingerprintRepositoryImpl.kt @@ -0,0 +1,96 @@ +package com.artemchep.keyguard.common.service.vault.impl + +import com.artemchep.keyguard.common.model.Fingerprint +import com.artemchep.keyguard.common.model.FingerprintBiometric +import com.artemchep.keyguard.common.model.FingerprintPassword +import com.artemchep.keyguard.common.model.MasterPasswordHash +import com.artemchep.keyguard.common.model.MasterPasswordSalt +import com.artemchep.keyguard.common.service.Files +import com.artemchep.keyguard.common.service.keyvalue.KeyValueStore +import com.artemchep.keyguard.common.service.keyvalue.SecureKeyValueStore +import com.artemchep.keyguard.common.service.keyvalue.getObject +import com.artemchep.keyguard.common.service.text.Base64Service +import com.artemchep.keyguard.common.service.vault.FingerprintReadWriteRepository +import kotlinx.coroutines.flow.Flow +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class FingerprintRepositoryImpl( + private val store: KeyValueStore, + private val base64Service: Base64Service, +) : FingerprintReadWriteRepository { + private val dataPref = store.getObject( + key = "data", + defaultValue = null, + serialize = { tokens -> + if (tokens == null) { + return@getObject "" + } + + listOfNotNull( + tokens.master.hash.byteArray, + tokens.master.salt.byteArray, + // The biometric token might be null, if the + // user did not enable biometric login. + tokens.biometric?.encryptedMasterKey, + tokens.biometric?.iv, + ) + .map(base64Service::encode) + .joinToString(separator = "|") { String(it) } + }, + deserialize = { data -> + // If any exception happens, we just assume that the data + // is not present at all. Note: this implicitly clears all of + // the local data of the user. + kotlin.runCatching { + val list = data + .split("|") + .map(base64Service::decode) + if (list.size != 2 && list.size != 4) { + return@runCatching null + } + + val masterHash = list[0] + val masterSalt = list[1] + val biometric = if (list.size == 4) { + val biometricEncryptedMasterKey = list[2] + val biometricIv = list[3] + FingerprintBiometric( + iv = biometricIv, + encryptedMasterKey = biometricEncryptedMasterKey, + ) + } else { + null + } + Fingerprint( + master = FingerprintPassword( + hash = MasterPasswordHash(masterHash), + salt = MasterPasswordSalt(masterSalt), + ), + biometric = biometric, + ) + }.getOrNull() + }, + ) + + init { + // Double check that we store the + // fingerprint in the secure store. + require(store is SecureKeyValueStore) { + "Fingerprint repository should be using a secure store. " + + "Current use of ${store::class.simpleName} is probably a mistake." + } + } + + constructor(directDI: DirectDI) : this( + store = directDI.instance(arg = Files.FINGERPRINT), + base64Service = directDI.instance(), + ) + + override fun put(key: Fingerprint?) = dataPref.setAndCommit(key) + + override fun get(): Flow = dataPref +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl.kt new file mode 100644 index 00000000..5b5c0e1e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/impl/KeyRepositoryImpl.kt @@ -0,0 +1,102 @@ +package com.artemchep.keyguard.common.service.vault.impl + +import com.artemchep.keyguard.common.io.flatten +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.model.MasterKey +import com.artemchep.keyguard.common.model.PersistedSession +import com.artemchep.keyguard.common.service.Files +import com.artemchep.keyguard.common.service.keyvalue.KeyValueStore +import com.artemchep.keyguard.common.service.keyvalue.SecureKeyValueStore +import com.artemchep.keyguard.common.service.keyvalue.getObject +import com.artemchep.keyguard.common.service.text.Base64Service +import com.artemchep.keyguard.common.service.vault.KeyReadWriteRepository +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.map +import kotlinx.datetime.Instant +import kotlinx.serialization.Serializable +import kotlinx.serialization.encodeToString +import kotlinx.serialization.json.Json +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class KeyRepositoryImpl( + private val store: KeyValueStore, + private val json: Json, + private val base64Service: Base64Service, +) : KeyReadWriteRepository { + private val dataPref = store.getObject( + key = "data2", + defaultValue = null, + serialize = { key -> + if (key == null) { + return@getObject "" + } + + json.encodeToString(key) + }, + deserialize = { data -> + if (data.isBlank()) { + return@getObject null + } + // If any exception happens, we just assume that the data + // is not present at all. Note: this implicitly clears + // the local data of the user. + kotlin.runCatching { + json.decodeFromString(data) + }.getOrNull() + }, + ) + + init { + // Double check that we store the + // fingerprint in the secure store. + require(store is SecureKeyValueStore) { + "Master key repository should be using a secure store. " + + "Current use of ${store::class.simpleName} is probably a mistake." + } + } + + constructor(directDI: DirectDI) : this( + store = directDI.instance(arg = Files.KEY), + json = directDI.instance(), + base64Service = directDI.instance(), + ) + + override fun put(session: PersistedSession?) = ioEffect { + val entity = if (session != null) { + val masterKeyBase64 = base64Service.encodeToString(session.masterKey.byteArray) + PersistedSessionEntity( + masterKeyBase64 = masterKeyBase64, + createdAt = session.createdAt, + persistedAt = session.persistedAt, + ) + } else { + null + } + dataPref.setAndCommit(entity) + }.flatten() + + override fun get(): Flow = dataPref + .map { entity -> + if (entity != null) { + val masterKey = base64Service.decode(entity.masterKeyBase64) + PersistedSession( + masterKey = MasterKey(masterKey), + createdAt = entity.createdAt, + persistedAt = entity.persistedAt, + ) + } else { + null + } + } +} + +@Serializable +data class PersistedSessionEntity( + val masterKeyBase64: String, + val createdAt: Instant, + val persistedAt: Instant, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl.kt new file mode 100644 index 00000000..8ef6fe78 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/impl/SessionMetadataRepositoryImpl.kt @@ -0,0 +1,52 @@ +package com.artemchep.keyguard.common.service.vault.impl + +import com.artemchep.keyguard.common.io.flatMap +import com.artemchep.keyguard.common.io.io +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.service.Files +import com.artemchep.keyguard.common.service.keyvalue.KeyValuePreference +import com.artemchep.keyguard.common.service.keyvalue.KeyValueStore +import com.artemchep.keyguard.common.service.vault.SessionMetadataReadWriteRepository +import kotlinx.coroutines.flow.map +import kotlinx.datetime.Instant +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class SessionMetadataRepositoryImpl( + private val store: KeyValueStore, +) : SessionMetadataReadWriteRepository { + companion object { + private const val KEY_LAST_PASSWORD_USE_TIMESTAMP = "last_password_use_timestamp" + + private const val NONE_INSTANT = -1L + } + + private val lastPasswordUseTimestamp = + store.getLong(KEY_LAST_PASSWORD_USE_TIMESTAMP, NONE_INSTANT) + + constructor(directDI: DirectDI) : this( + store = directDI.instance(arg = Files.SESSION_METADATA), + ) + + override fun setLastPasswordUseTimestamp(instant: Instant?) = lastPasswordUseTimestamp + .setAndCommit(instant) + + override fun getLastPasswordUseTimestamp() = lastPasswordUseTimestamp + .asInstant() + + private fun KeyValuePreference.setAndCommit(instant: Instant?) = io(instant) + .map { instant -> + instant?.toEpochMilliseconds() + ?: NONE_INSTANT + } + .flatMap(this::setAndCommit) + + private fun KeyValuePreference.asInstant() = this + .map { millis -> + millis.takeUnless { it == NONE_INSTANT } + ?.let(Instant::fromEpochMilliseconds) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/impl/SessionRepositoryImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/impl/SessionRepositoryImpl.kt new file mode 100644 index 00000000..74da54d4 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/vault/impl/SessionRepositoryImpl.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.common.service.vault.impl + +import com.artemchep.keyguard.common.model.MasterSession +import com.artemchep.keyguard.common.service.vault.SessionReadWriteRepository +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableStateFlow + +/** + * @author Artem Chepurnyi + */ +class SessionRepositoryImpl( +) : SessionReadWriteRepository { + private val inMemoryStore = MutableStateFlow(null) + + override fun put(key: MasterSession) { + inMemoryStore.value = key + } + + override fun get(): Flow = inMemoryStore +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/wordlist/WordlistService.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/wordlist/WordlistService.kt new file mode 100644 index 00000000..6bc9da44 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/wordlist/WordlistService.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.service.wordlist + +import com.artemchep.keyguard.common.io.IO + +interface WordlistService { + fun get(): IO> +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/wordlist/impl/WordlistServiceImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/wordlist/impl/WordlistServiceImpl.kt new file mode 100644 index 00000000..1fa92864 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/service/wordlist/impl/WordlistServiceImpl.kt @@ -0,0 +1,44 @@ +package com.artemchep.keyguard.common.service.wordlist.impl + +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.handleErrorTap +import com.artemchep.keyguard.common.io.shared +import com.artemchep.keyguard.common.service.text.TextService +import com.artemchep.keyguard.common.service.wordlist.WordlistService +import com.artemchep.keyguard.res.Res +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class WordlistServiceImpl( + private val textService: TextService, +) : WordlistService { + private val wordListIo = ::loadWordlist + .partially1(textService) + .handleErrorTap { + it.printStackTrace() + } + .shared() + + constructor( + directDI: DirectDI, + ) : this( + textService = directDI.instance(), + ) + + override fun get(): IO> = wordListIo +} + +private suspend fun loadWordlist( + textService: TextService, +) = withContext(Dispatchers.IO) { + textService.readFromResources(Res.files.wordlist_en_eff).use { + it + .bufferedReader() + .lineSequence() + .filter { line -> line.isNotEmpty() } + .toList() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddCipher.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddCipher.kt new file mode 100644 index 00000000..30a2d8b1 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddCipher.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.create.CreateRequest + +interface AddCipher : ( + Map, +) -> IO> diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddCipherOpenedHistory.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddCipherOpenedHistory.kt new file mode 100644 index 00000000..9366f863 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddCipherOpenedHistory.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.AddCipherOpenedHistoryRequest + +interface AddCipherOpenedHistory : ( + AddCipherOpenedHistoryRequest, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddCipherUsedAutofillHistory.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddCipherUsedAutofillHistory.kt new file mode 100644 index 00000000..ee232bbd --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddCipherUsedAutofillHistory.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.AddCipherOpenedHistoryRequest + +interface AddCipherUsedAutofillHistory : ( + AddCipherOpenedHistoryRequest, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddCipherUsedPasskeyHistory.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddCipherUsedPasskeyHistory.kt new file mode 100644 index 00000000..6f83c361 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddCipherUsedPasskeyHistory.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.AddCipherUsedPasskeyHistoryRequest + +interface AddCipherUsedPasskeyHistory : ( + AddCipherUsedPasskeyHistoryRequest, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddEmailRelay.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddEmailRelay.kt new file mode 100644 index 00000000..105639d7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddEmailRelay.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.DGeneratorEmailRelay + +interface AddEmailRelay : (DGeneratorEmailRelay) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddFolder.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddFolder.kt new file mode 100644 index 00000000..639f137f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddFolder.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.AccountId + +interface AddFolder : ( + Map, +) -> IO> diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddGeneratorHistory.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddGeneratorHistory.kt new file mode 100644 index 00000000..27298e19 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddGeneratorHistory.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.DGeneratorHistory + +interface AddGeneratorHistory : (DGeneratorHistory) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddPasskeyCipher.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddPasskeyCipher.kt new file mode 100644 index 00000000..a15629f2 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddPasskeyCipher.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.AddPasskeyCipherRequest + +interface AddPasskeyCipher : ( + AddPasskeyCipherRequest, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddUriCipher.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddUriCipher.kt new file mode 100644 index 00000000..61994fc0 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AddUriCipher.kt @@ -0,0 +1,13 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.AddUriCipherRequest + +fun AddUriCipherRequest.isEmpty() = + applicationId == null && + webDomain == null && + webScheme == null + +interface AddUriCipher : ( + AddUriCipherRequest, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AuthConfirmMasterKeyUseCase.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AuthConfirmMasterKeyUseCase.kt new file mode 100644 index 00000000..a2f8c30e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AuthConfirmMasterKeyUseCase.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.MasterPasswordHash +import com.artemchep.keyguard.common.model.MasterPasswordSalt +import com.artemchep.keyguard.core.session.usecase.AuthMasterKeyUseCase + +interface AuthConfirmMasterKeyUseCase : ( + MasterPasswordSalt, + MasterPasswordHash, +) -> AuthMasterKeyUseCase + diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AuthGenerateMasterKeyUseCase.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AuthGenerateMasterKeyUseCase.kt new file mode 100644 index 00000000..285dd43f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/AuthGenerateMasterKeyUseCase.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.core.session.usecase.AuthMasterKeyUseCase + +interface AuthGenerateMasterKeyUseCase : () -> AuthMasterKeyUseCase + diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/BiometricKeyDecryptUseCase.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/BiometricKeyDecryptUseCase.kt new file mode 100644 index 00000000..0ea5bb0d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/BiometricKeyDecryptUseCase.kt @@ -0,0 +1,10 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.MasterKey +import com.artemchep.keyguard.platform.LeCipher + +interface BiometricKeyDecryptUseCase : ( + IO, + ByteArray, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/BiometricKeyEncryptUseCase.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/BiometricKeyEncryptUseCase.kt new file mode 100644 index 00000000..8973ff8d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/BiometricKeyEncryptUseCase.kt @@ -0,0 +1,10 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.MasterKey +import com.artemchep.keyguard.platform.LeCipher + +interface BiometricKeyEncryptUseCase : ( + IO, + MasterKey, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/BiometricStatusUseCase.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/BiometricStatusUseCase.kt new file mode 100644 index 00000000..494ef0cd --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/BiometricStatusUseCase.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.BiometricStatus +import kotlinx.coroutines.flow.Flow + +interface BiometricStatusUseCase : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/ChangeCipherNameById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/ChangeCipherNameById.kt new file mode 100644 index 00000000..0e283443 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/ChangeCipherNameById.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface ChangeCipherNameById : ( + Map, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/ChangeCipherPasswordById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/ChangeCipherPasswordById.kt new file mode 100644 index 00000000..d3caa1e2 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/ChangeCipherPasswordById.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface ChangeCipherPasswordById : ( + Map, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CheckPasswordLeak.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CheckPasswordLeak.kt new file mode 100644 index 00000000..3b151241 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CheckPasswordLeak.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.CheckPasswordLeakRequest + +interface CheckPasswordLeak : ( + CheckPasswordLeakRequest, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CheckPasswordSetLeak.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CheckPasswordSetLeak.kt new file mode 100644 index 00000000..141094ae --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CheckPasswordSetLeak.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.CheckPasswordSetLeakRequest +import com.artemchep.keyguard.common.model.PasswordPwnage + +interface CheckPasswordSetLeak : ( + CheckPasswordSetLeakRequest, +) -> IO> diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CheckUsernameLeak.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CheckUsernameLeak.kt new file mode 100644 index 00000000..5063c6fe --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CheckUsernameLeak.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.CheckUsernameLeakRequest +import com.artemchep.keyguard.common.model.DHibpC + +interface CheckUsernameLeak : ( + CheckUsernameLeakRequest, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherBreachCheck.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherBreachCheck.kt new file mode 100644 index 00000000..36373fd6 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherBreachCheck.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.provider.bitwarden.entity.HibpBreachGroup + +interface CipherBreachCheck : (DSecret, HibpBreachGroup) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherDuplicatesCheck.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherDuplicatesCheck.kt new file mode 100644 index 00000000..a03aecee --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherDuplicatesCheck.kt @@ -0,0 +1,19 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.DSecretDuplicateGroup +import kotlinx.serialization.Serializable + +interface CipherDuplicatesCheck : + (List, CipherDuplicatesCheck.Sensitivity) -> List { + @Serializable + enum class Sensitivity( + val threshold: Float, + ) { + MAX(0.3f), + HIGH(0.15f), + NORMAL(0f), + LOW(-0.1f), + MIN(-0.15f), + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherExpiringCheck.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherExpiringCheck.kt new file mode 100644 index 00000000..482c7b78 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherExpiringCheck.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.DSecret +import kotlinx.datetime.Instant + +interface CipherExpiringCheck : (DSecret, Instant) -> Instant? diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherFieldSwitchToggle.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherFieldSwitchToggle.kt new file mode 100644 index 00000000..827eecb2 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherFieldSwitchToggle.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.CipherFieldSwitchToggleRequest + +interface CipherFieldSwitchToggle : ( + Map>, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherIncompleteCheck.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherIncompleteCheck.kt new file mode 100644 index 00000000..c36edf63 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherIncompleteCheck.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.DSecret + +interface CipherIncompleteCheck : (DSecret) -> Boolean diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherMerge.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherMerge.kt new file mode 100644 index 00000000..2147fbc5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherMerge.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.DSecret + +interface CipherMerge : (List) -> DSecret diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherRemovePasswordHistory.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherRemovePasswordHistory.kt new file mode 100644 index 00000000..5363f6f8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherRemovePasswordHistory.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface CipherRemovePasswordHistory : ( + String, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherRemovePasswordHistoryById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherRemovePasswordHistoryById.kt new file mode 100644 index 00000000..107ee742 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherRemovePasswordHistoryById.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface CipherRemovePasswordHistoryById : ( + String, + List, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherToolbox.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherToolbox.kt new file mode 100644 index 00000000..ef7eb92a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherToolbox.kt @@ -0,0 +1,43 @@ +package com.artemchep.keyguard.common.usecase + +import org.kodein.di.DirectDI +import org.kodein.di.instance + +interface CipherToolbox { + val favouriteCipherById: FavouriteCipherById + val rePromptCipherById: RePromptCipherById + val changeCipherNameById: ChangeCipherNameById + val changeCipherPasswordById: ChangeCipherPasswordById + val copyCipherById: CopyCipherById + val moveCipherToFolderById: MoveCipherToFolderById + val restoreCipherById: RestoreCipherById + val trashCipherById: TrashCipherById + val removeCipherById: RemoveCipherById + val cipherMerge: CipherMerge +} + +class CipherToolboxImpl( + override val favouriteCipherById: FavouriteCipherById, + override val rePromptCipherById: RePromptCipherById, + override val changeCipherNameById: ChangeCipherNameById, + override val changeCipherPasswordById: ChangeCipherPasswordById, + override val copyCipherById: CopyCipherById, + override val moveCipherToFolderById: MoveCipherToFolderById, + override val restoreCipherById: RestoreCipherById, + override val trashCipherById: TrashCipherById, + override val removeCipherById: RemoveCipherById, + override val cipherMerge: CipherMerge, +) : CipherToolbox { + constructor(directDI: DirectDI) : this( + favouriteCipherById = directDI.instance(), + rePromptCipherById = directDI.instance(), + changeCipherNameById = directDI.instance(), + changeCipherPasswordById = directDI.instance(), + copyCipherById = directDI.instance(), + moveCipherToFolderById = directDI.instance(), + restoreCipherById = directDI.instance(), + trashCipherById = directDI.instance(), + removeCipherById = directDI.instance(), + cipherMerge = directDI.instance(), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherUnsecureUrlAutoFix.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherUnsecureUrlAutoFix.kt new file mode 100644 index 00000000..78a2257d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherUnsecureUrlAutoFix.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface CipherUnsecureUrlAutoFix : ( + Map>, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherUnsecureUrlCheck.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherUnsecureUrlCheck.kt new file mode 100644 index 00000000..57f643ee --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherUnsecureUrlCheck.kt @@ -0,0 +1,3 @@ +package com.artemchep.keyguard.common.usecase + +interface CipherUnsecureUrlCheck : (String) -> Boolean diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherUrlCheck.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherUrlCheck.kt new file mode 100644 index 00000000..b49c2ad2 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherUrlCheck.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.DSecret + +interface CipherUrlCheck : (DSecret.Uri, String) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherUrlDuplicateCheck.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherUrlDuplicateCheck.kt new file mode 100644 index 00000000..ef418bfd --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CipherUrlDuplicateCheck.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.DSecret + +interface CipherUrlDuplicateCheck : (DSecret.Uri, DSecret.Uri) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CleanUpAttachment.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CleanUpAttachment.kt new file mode 100644 index 00000000..ef794f7f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CleanUpAttachment.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface CleanUpAttachment : () -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/ClearData.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/ClearData.kt new file mode 100644 index 00000000..03386cf0 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/ClearData.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface ClearData : () -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/ClearVaultSession.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/ClearVaultSession.kt new file mode 100644 index 00000000..ca46b3c8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/ClearVaultSession.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface ClearVaultSession : () -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/ConfirmAccessByPasswordUseCase.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/ConfirmAccessByPasswordUseCase.kt new file mode 100644 index 00000000..b2fd72e1 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/ConfirmAccessByPasswordUseCase.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface ConfirmAccessByPasswordUseCase : (String) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CopyCipherById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CopyCipherById.kt new file mode 100644 index 00000000..5577fa5d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CopyCipherById.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.create.CreateRequest + +interface CopyCipherById : ( + Map, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CopyText.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CopyText.kt new file mode 100644 index 00000000..81ff1460 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/CopyText.kt @@ -0,0 +1,26 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.ToastMessage +import com.artemchep.keyguard.common.service.clipboard.ClipboardService + +/** + * @author Artem Chepurnyi + */ +class CopyText( + private val clipboardService: ClipboardService, + private val onMessage: (ToastMessage) -> Unit, +) { + fun copy( + text: String, + hidden: Boolean, + ) { + clipboardService.setPrimaryClip(text, concealed = hidden) + if (!clipboardService.hasCopyNotification()) { + val message = ToastMessage( + title = "Copied a value", + text = text.takeUnless { hidden }, + ) + onMessage(message) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/DateFormatter.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/DateFormatter.kt new file mode 100644 index 00000000..4950593b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/DateFormatter.kt @@ -0,0 +1,17 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.datetime.Instant + +interface DateFormatter { + fun formatDateTime( + instant: Instant, + ): String + + fun formatDate( + instant: Instant, + ): String + + fun formatDateShort( + instant: Instant, + ): String +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase.kt new file mode 100644 index 00000000..88edb1e4 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/DeviceEncryptionKeyUseCase.kt @@ -0,0 +1,24 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.service.crypto.CryptoGenerator +import kotlinx.coroutines.Dispatchers +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class DeviceEncryptionKeyUseCase( + private val cryptoGenerator: CryptoGenerator, + private val deviceIdUseCase: DeviceIdUseCase, +) : () -> IO { + constructor(directDI: DirectDI) : this( + cryptoGenerator = directDI.instance(), + deviceIdUseCase = directDI.instance(), + ) + + override fun invoke() = deviceIdUseCase() + .effectMap(Dispatchers.Default) { deviceId -> + val seed = deviceId.toByteArray() + cryptoGenerator.hkdf(seed = seed) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/DeviceIdUseCase.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/DeviceIdUseCase.kt new file mode 100644 index 00000000..ec56eb9b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/DeviceIdUseCase.kt @@ -0,0 +1,48 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.flatMap +import com.artemchep.keyguard.common.io.flatTap +import com.artemchep.keyguard.common.io.io +import com.artemchep.keyguard.common.service.id.IdRepository +import org.kodein.di.DirectDI +import org.kodein.di.instance +import java.util.UUID + +class DeviceIdUseCase( + private val deviceIdRepository: IdRepository, +) : () -> IO { + @Volatile + private var deviceId: String? = null + + constructor(directDI: DirectDI) : this( + deviceIdRepository = directDI.instance(), + ) + + // Return a device ID from the memory, or try to load it from the + // file system. + override fun invoke(): IO = deviceId?.let(::io) ?: getOrSet() + + private fun getOrSet() = deviceIdRepository + .get() + .flatMap { storedDeviceId -> + val inMemoryId = synchronized(this@DeviceIdUseCase) { + deviceId + ?: storedDeviceId + .takeUnless { it.isBlank() } + ?: getDeviceId() + .also(::deviceId::set) + } + + io(inMemoryId) + .run { + if (inMemoryId != storedDeviceId) { + flatTap(deviceIdRepository::put) + } else { + this + } + } + } +} + +private fun getDeviceId() = UUID.randomUUID().toString() diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/DisableBiometric.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/DisableBiometric.kt new file mode 100644 index 00000000..3b29bfd3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/DisableBiometric.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface DisableBiometric : () -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/DownloadAttachment.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/DownloadAttachment.kt new file mode 100644 index 00000000..79617895 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/DownloadAttachment.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.DownloadAttachmentRequest + +interface DownloadAttachment : (List) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/EnableBiometric.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/EnableBiometric.kt new file mode 100644 index 00000000..4e457cce --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/EnableBiometric.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.MasterSession +import com.artemchep.keyguard.common.model.WithBiometric + +interface EnableBiometric : ( + MasterSession.Key?, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/FavouriteCipherById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/FavouriteCipherById.kt new file mode 100644 index 00000000..872facf4 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/FavouriteCipherById.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface FavouriteCipherById : ( + Set, + Boolean, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GenerateMasterHashUseCase.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GenerateMasterHashUseCase.kt new file mode 100644 index 00000000..05171b04 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GenerateMasterHashUseCase.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.MasterPassword +import com.artemchep.keyguard.common.model.MasterPasswordHash +import com.artemchep.keyguard.common.model.MasterPasswordSalt + +interface GenerateMasterHashUseCase : ( + MasterPassword, + MasterPasswordSalt, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GenerateMasterKeyUseCase.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GenerateMasterKeyUseCase.kt new file mode 100644 index 00000000..55c991dd --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GenerateMasterKeyUseCase.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.MasterKey +import com.artemchep.keyguard.common.model.MasterPassword +import com.artemchep.keyguard.common.model.MasterPasswordHash + +interface GenerateMasterKeyUseCase : ( + MasterPassword, + MasterPasswordHash, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GenerateMasterSaltUseCase.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GenerateMasterSaltUseCase.kt new file mode 100644 index 00000000..2b692071 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GenerateMasterSaltUseCase.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.MasterPasswordSalt + +interface GenerateMasterSaltUseCase : () -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAccountHasError.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAccountHasError.kt new file mode 100644 index 00000000..7ef7b007 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAccountHasError.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.AccountId +import kotlinx.coroutines.flow.Flow + +interface GetAccountHasError : (AccountId) -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAccountStatus.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAccountStatus.kt new file mode 100644 index 00000000..55106903 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAccountStatus.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.DAccountStatus +import kotlinx.coroutines.flow.Flow + +interface GetAccountStatus : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAccounts.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAccounts.kt new file mode 100644 index 00000000..90d06ab5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAccounts.kt @@ -0,0 +1,10 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.DAccount +import kotlinx.coroutines.flow.Flow + +/** + * Provides a list of all available on the + * device accounts. + */ +interface GetAccounts : () -> Flow> diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAccountsHasError.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAccountsHasError.kt new file mode 100644 index 00000000..4b28a64c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAccountsHasError.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetAccountsHasError : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAllowScreenshots.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAllowScreenshots.kt new file mode 100644 index 00000000..cd77fc1b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAllowScreenshots.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetAllowScreenshots : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAllowTwoPanelLayoutInLandscape.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAllowTwoPanelLayoutInLandscape.kt new file mode 100644 index 00000000..2bb07504 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAllowTwoPanelLayoutInLandscape.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.StateFlow + +interface GetAllowTwoPanelLayoutInLandscape : () -> StateFlow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAllowTwoPanelLayoutInPortrait.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAllowTwoPanelLayoutInPortrait.kt new file mode 100644 index 00000000..e86a293f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAllowTwoPanelLayoutInPortrait.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.StateFlow + +interface GetAllowTwoPanelLayoutInPortrait : () -> StateFlow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAppBuildDate.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAppBuildDate.kt new file mode 100644 index 00000000..7066742d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAppBuildDate.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetAppBuildDate : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAppBuildType.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAppBuildType.kt new file mode 100644 index 00000000..9067dc17 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAppBuildType.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetAppBuildType : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAppIcons.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAppIcons.kt new file mode 100644 index 00000000..2a15b230 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAppIcons.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetAppIcons : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAppVersion.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAppVersion.kt new file mode 100644 index 00000000..36c5aca9 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAppVersion.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetAppVersion : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAppVersionCode.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAppVersionCode.kt new file mode 100644 index 00000000..2294aaa2 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAppVersionCode.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetAppVersionCode : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAppVersionName.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAppVersionName.kt new file mode 100644 index 00000000..1500fc34 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAppVersionName.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetAppVersionName : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAutofillCopyTotp.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAutofillCopyTotp.kt new file mode 100644 index 00000000..afb002cd --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAutofillCopyTotp.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetAutofillCopyTotp : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAutofillInlineSuggestions.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAutofillInlineSuggestions.kt new file mode 100644 index 00000000..00222688 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAutofillInlineSuggestions.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetAutofillInlineSuggestions : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAutofillManualSelection.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAutofillManualSelection.kt new file mode 100644 index 00000000..5b0a8b91 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAutofillManualSelection.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetAutofillManualSelection : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAutofillRespectAutofillOff.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAutofillRespectAutofillOff.kt new file mode 100644 index 00000000..102d452c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAutofillRespectAutofillOff.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetAutofillRespectAutofillOff : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAutofillSaveRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAutofillSaveRequest.kt new file mode 100644 index 00000000..6d1652e4 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAutofillSaveRequest.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetAutofillSaveRequest : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAutofillSaveUri.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAutofillSaveUri.kt new file mode 100644 index 00000000..2976b98c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetAutofillSaveUri.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetAutofillSaveUri : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetBarcodeImage.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetBarcodeImage.kt new file mode 100644 index 00000000..14c0fa3d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetBarcodeImage.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.usecase + +import androidx.compose.ui.graphics.ImageBitmap +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.BarcodeImageRequest + +interface GetBarcodeImage : (BarcodeImageRequest) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetBiometricRemainingDuration.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetBiometricRemainingDuration.kt new file mode 100644 index 00000000..ba8eb43b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetBiometricRemainingDuration.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow +import kotlin.time.Duration + +interface GetBiometricRemainingDuration : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetBiometricTimeout.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetBiometricTimeout.kt new file mode 100644 index 00000000..0b0ffa68 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetBiometricTimeout.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow +import kotlin.time.Duration + +interface GetBiometricTimeout : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetBiometricTimeoutVariants.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetBiometricTimeoutVariants.kt new file mode 100644 index 00000000..78c99c0b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetBiometricTimeoutVariants.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow +import kotlin.time.Duration + +interface GetBiometricTimeoutVariants : () -> Flow> diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCachePremium.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCachePremium.kt new file mode 100644 index 00000000..e7a87c8c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCachePremium.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetCachePremium : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCanAddAccount.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCanAddAccount.kt new file mode 100644 index 00000000..fc2bb2d1 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCanAddAccount.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetCanAddAccount : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCanAddSecret.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCanAddSecret.kt new file mode 100644 index 00000000..e5904f3c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCanAddSecret.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetCanAddSecret : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCanWrite.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCanWrite.kt new file mode 100644 index 00000000..14745aab --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCanWrite.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetCanWrite : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCheckPwnedPasswords.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCheckPwnedPasswords.kt new file mode 100644 index 00000000..d9e13f92 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCheckPwnedPasswords.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetCheckPwnedPasswords : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCheckPwnedServices.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCheckPwnedServices.kt new file mode 100644 index 00000000..825cbf4b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCheckPwnedServices.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetCheckPwnedServices : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCheckTwoFA.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCheckTwoFA.kt new file mode 100644 index 00000000..449ae80a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCheckTwoFA.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetCheckTwoFA : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCipherOpenedCount.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCipherOpenedCount.kt new file mode 100644 index 00000000..017bace7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCipherOpenedCount.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetCipherOpenedCount : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCipherOpenedHistory.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCipherOpenedHistory.kt new file mode 100644 index 00000000..8a8f8faa --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCipherOpenedHistory.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.CipherOpenedHistoryMode +import com.artemchep.keyguard.common.model.DCipherOpenedHistory +import kotlinx.coroutines.flow.Flow + +interface GetCipherOpenedHistory : (CipherOpenedHistoryMode) -> Flow> diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCiphers.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCiphers.kt new file mode 100644 index 00000000..4658aa25 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCiphers.kt @@ -0,0 +1,10 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.DSecret +import kotlinx.coroutines.flow.Flow + +/** + * Provides a list of all available on the + * device accounts. + */ +interface GetCiphers : () -> Flow> diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetClipboardAutoClear.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetClipboardAutoClear.kt new file mode 100644 index 00000000..520cde5e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetClipboardAutoClear.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow +import kotlin.time.Duration + +interface GetClipboardAutoClear : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetClipboardAutoClearVariants.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetClipboardAutoClearVariants.kt new file mode 100644 index 00000000..cef5b68e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetClipboardAutoClearVariants.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow +import kotlin.time.Duration + +interface GetClipboardAutoClearVariants : () -> Flow> diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetClipboardAutoRefresh.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetClipboardAutoRefresh.kt new file mode 100644 index 00000000..19ba23b6 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetClipboardAutoRefresh.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow +import kotlin.time.Duration + +interface GetClipboardAutoRefresh : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetClipboardAutoRefreshVariants.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetClipboardAutoRefreshVariants.kt new file mode 100644 index 00000000..9fb42043 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetClipboardAutoRefreshVariants.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow +import kotlin.time.Duration + +interface GetClipboardAutoRefreshVariants : () -> Flow> diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCollections.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCollections.kt new file mode 100644 index 00000000..1a3cf12e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetCollections.kt @@ -0,0 +1,10 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.DCollection +import kotlinx.coroutines.flow.Flow + +/** + * Provides a list of all available on the + * device collections. + */ +interface GetCollections : () -> Flow> diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetColors.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetColors.kt new file mode 100644 index 00000000..c765c639 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetColors.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.AppColors +import kotlinx.coroutines.flow.Flow + +interface GetColors : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetColorsVariants.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetColorsVariants.kt new file mode 100644 index 00000000..0247c4d8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetColorsVariants.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.AppColors +import kotlinx.coroutines.flow.Flow + +interface GetColorsVariants : () -> Flow> diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetConcealFields.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetConcealFields.kt new file mode 100644 index 00000000..dedb6ed7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetConcealFields.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetConcealFields : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetDebugPremium.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetDebugPremium.kt new file mode 100644 index 00000000..3b04b75a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetDebugPremium.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetDebugPremium : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetDebugScreenDelay.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetDebugScreenDelay.kt new file mode 100644 index 00000000..d71fb459 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetDebugScreenDelay.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetDebugScreenDelay : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetEmailRelays.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetEmailRelays.kt new file mode 100644 index 00000000..3eb69cc5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetEmailRelays.kt @@ -0,0 +1,10 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.DGeneratorEmailRelay +import kotlinx.coroutines.flow.Flow + +/** + * Provides a list of all available email + * relays. + */ +interface GetEmailRelays : () -> Flow> diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetEnvSendUrl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetEnvSendUrl.kt new file mode 100644 index 00000000..b158ef9f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetEnvSendUrl.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.DSend + +interface GetEnvSendUrl : (DSend) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetFingerprint.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetFingerprint.kt new file mode 100644 index 00000000..574d6597 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetFingerprint.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.AccountId +import kotlinx.coroutines.flow.Flow + +interface GetFingerprint : (AccountId) -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetFolderTree.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetFolderTree.kt new file mode 100644 index 00000000..4167678e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetFolderTree.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.DFolderTree2 + +interface GetFolderTree { + fun invoke( + lens: (T) -> String, + allFolders: Collection, + folder: T, + ): DFolderTree2 +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetFolderTreeById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetFolderTreeById.kt new file mode 100644 index 00000000..7edce4cd --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetFolderTreeById.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.DFolderTree +import kotlinx.coroutines.flow.Flow + +interface GetFolderTreeById : ( + String, +) -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetFolders.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetFolders.kt new file mode 100644 index 00000000..92a36966 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetFolders.kt @@ -0,0 +1,10 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.DFolder +import kotlinx.coroutines.flow.Flow + +/** + * Provides a list of all available on the + * device accounts. + */ +interface GetFolders : () -> Flow> diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetFont.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetFont.kt new file mode 100644 index 00000000..304d59bd --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetFont.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.AppFont +import kotlinx.coroutines.flow.Flow + +interface GetFont : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetFontVariants.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetFontVariants.kt new file mode 100644 index 00000000..09c928e5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetFontVariants.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.AppFont +import kotlinx.coroutines.flow.Flow + +interface GetFontVariants : () -> Flow> diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetGeneratorHistory.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetGeneratorHistory.kt new file mode 100644 index 00000000..3528d486 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetGeneratorHistory.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.DGeneratorHistory +import kotlinx.coroutines.flow.Flow + +interface GetGeneratorHistory : () -> Flow> diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetGravatarUrl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetGravatarUrl.kt new file mode 100644 index 00000000..17b20d69 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetGravatarUrl.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.feature.favicon.GravatarUrl + +interface GetGravatarUrl : (String) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetJustDeleteMeByUrl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetJustDeleteMeByUrl.kt new file mode 100644 index 00000000..f5f0e1cb --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetJustDeleteMeByUrl.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.justdeleteme.JustDeleteMeServiceInfo + +interface GetJustDeleteMeByUrl : (String) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetKeepScreenOn.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetKeepScreenOn.kt new file mode 100644 index 00000000..a3911994 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetKeepScreenOn.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetKeepScreenOn : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetLocale.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetLocale.kt new file mode 100644 index 00000000..371f5f7d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetLocale.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetLocale : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetLocaleVariants.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetLocaleVariants.kt new file mode 100644 index 00000000..f19b80a0 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetLocaleVariants.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetLocaleVariants : () -> Flow> diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetMarkdown.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetMarkdown.kt new file mode 100644 index 00000000..df84f96e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetMarkdown.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetMarkdown : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetMetas.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetMetas.kt new file mode 100644 index 00000000..83cfdd26 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetMetas.kt @@ -0,0 +1,10 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.DMeta +import kotlinx.coroutines.flow.Flow + +/** + * Provides a list of all available on the + * device metadata. + */ +interface GetMetas : () -> Flow> diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetNavAnimation.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetNavAnimation.kt new file mode 100644 index 00000000..dc152b64 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetNavAnimation.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.NavAnimation +import kotlinx.coroutines.flow.StateFlow + +interface GetNavAnimation : () -> StateFlow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetNavAnimationVariants.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetNavAnimationVariants.kt new file mode 100644 index 00000000..d50be790 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetNavAnimationVariants.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.NavAnimation +import kotlinx.coroutines.flow.Flow + +interface GetNavAnimationVariants : () -> Flow> diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetNavLabel.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetNavLabel.kt new file mode 100644 index 00000000..a4390251 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetNavLabel.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.StateFlow + +interface GetNavLabel : () -> StateFlow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetOnboardingLastVisitInstant.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetOnboardingLastVisitInstant.kt new file mode 100644 index 00000000..60a9efcd --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetOnboardingLastVisitInstant.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow +import kotlinx.datetime.Instant + +interface GetOnboardingLastVisitInstant : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetOrganizations.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetOrganizations.kt new file mode 100644 index 00000000..f4f505e3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetOrganizations.kt @@ -0,0 +1,10 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.DOrganization +import kotlinx.coroutines.flow.Flow + +/** + * Provides a list of all available on the + * device organizations. + */ +interface GetOrganizations : () -> Flow> diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetPassphrase.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetPassphrase.kt new file mode 100644 index 00000000..2b49f262 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetPassphrase.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.PasswordGeneratorConfig + +interface GetPassphrase : (PasswordGeneratorConfig.Passphrase) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetPassword.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetPassword.kt new file mode 100644 index 00000000..0fd4bc76 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetPassword.kt @@ -0,0 +1,10 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.GeneratorContext +import com.artemchep.keyguard.common.model.PasswordGeneratorConfig + +interface GetPassword : ( + GeneratorContext, + PasswordGeneratorConfig, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetPasswordStrength.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetPasswordStrength.kt new file mode 100644 index 00000000..fc965423 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetPasswordStrength.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.PasswordStrength + +interface GetPasswordStrength : (String) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetProducts.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetProducts.kt new file mode 100644 index 00000000..54d2e269 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetProducts.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.Product +import kotlinx.coroutines.flow.Flow + +interface GetProducts : () -> Flow?> diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetProfiles.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetProfiles.kt new file mode 100644 index 00000000..7050ef2d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetProfiles.kt @@ -0,0 +1,10 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.DProfile +import kotlinx.coroutines.flow.Flow + +/** + * Provides a list of all available on the + * device profiles. + */ +interface GetProfiles : () -> Flow> diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetPurchased.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetPurchased.kt new file mode 100644 index 00000000..1b50087e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetPurchased.kt @@ -0,0 +1,41 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.exception.PremiumException +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.handleErrorTap +import com.artemchep.keyguard.common.io.io +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.io.toIO +import com.artemchep.keyguard.platform.recordException +import kotlinx.coroutines.flow.Flow + +interface GetPurchased : () -> Flow + +fun IO.premium( + getPurchased: () -> Flow, + predicate: IO = io(true), +): IO = ioEffect { + val isPremium = getPurchased() + .toIO() + .handleErrorTap { e -> + val newException = RuntimeException( + "Failed to obtain the Purchase status.", + e, + ) + recordException(newException) + } + .bind() + if (!isPremium) { + val needsPremium = predicate + .bind() + if (needsPremium) { + throw PremiumException() + } + } + + bind() +} + +fun IO.unit() = map { Unit } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetScreenState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetScreenState.kt new file mode 100644 index 00000000..42d14e50 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetScreenState.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetScreenState : (String) -> Flow> diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetSends.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetSends.kt new file mode 100644 index 00000000..974b13ee --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetSends.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.DSend +import kotlinx.coroutines.flow.Flow + +/** + */ +interface GetSends : () -> Flow> diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetShouldRequestAppReview.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetShouldRequestAppReview.kt new file mode 100644 index 00000000..d35bd502 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetShouldRequestAppReview.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +/** + * @author Artem Chepurnyi + */ +interface GetShouldRequestAppReview : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetSubscriptions.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetSubscriptions.kt new file mode 100644 index 00000000..93a48f3f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetSubscriptions.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.Subscription +import kotlinx.coroutines.flow.Flow + +interface GetSubscriptions : () -> Flow?> diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetSuggestions.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetSuggestions.kt new file mode 100644 index 00000000..d94f49c1 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetSuggestions.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.common.usecase + +import arrow.optics.Getter +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.AutofillTarget +import com.artemchep.keyguard.common.model.DSecret + +interface GetSuggestions : ( + List, + Getter, + AutofillTarget, +) -> IO> diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetTheme.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetTheme.kt new file mode 100644 index 00000000..e5392017 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetTheme.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.AppTheme +import kotlinx.coroutines.flow.Flow + +interface GetTheme : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetThemeUseAmoledDark.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetThemeUseAmoledDark.kt new file mode 100644 index 00000000..dde4d241 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetThemeUseAmoledDark.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetThemeUseAmoledDark : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetThemeVariants.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetThemeVariants.kt new file mode 100644 index 00000000..3970463c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetThemeVariants.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.AppTheme +import kotlinx.coroutines.flow.Flow + +interface GetThemeVariants : () -> Flow> diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetTotpCode.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetTotpCode.kt new file mode 100644 index 00000000..79abc6be --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetTotpCode.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.TotpCode +import com.artemchep.keyguard.common.model.TotpToken +import kotlinx.coroutines.flow.Flow + +interface GetTotpCode : (TotpToken) -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetUseExternalBrowser.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetUseExternalBrowser.kt new file mode 100644 index 00000000..05ef5daa --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetUseExternalBrowser.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetUseExternalBrowser : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetVaultLockAfterReboot.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetVaultLockAfterReboot.kt new file mode 100644 index 00000000..b847ed44 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetVaultLockAfterReboot.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetVaultLockAfterReboot : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetVaultLockAfterScreenOff.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetVaultLockAfterScreenOff.kt new file mode 100644 index 00000000..2ee456ea --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetVaultLockAfterScreenOff.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetVaultLockAfterScreenOff : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetVaultLockAfterTimeout.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetVaultLockAfterTimeout.kt new file mode 100644 index 00000000..c08416a9 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetVaultLockAfterTimeout.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow +import kotlin.time.Duration + +interface GetVaultLockAfterTimeout : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetVaultLockAfterTimeoutVariants.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetVaultLockAfterTimeoutVariants.kt new file mode 100644 index 00000000..acc6bf0e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetVaultLockAfterTimeoutVariants.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow +import kotlin.time.Duration + +interface GetVaultLockAfterTimeoutVariants : () -> Flow> diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetVaultPersist.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetVaultPersist.kt new file mode 100644 index 00000000..2d7a9439 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetVaultPersist.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetVaultPersist : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetVaultSession.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetVaultSession.kt new file mode 100644 index 00000000..c1fb77c6 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetVaultSession.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.MasterSession +import kotlinx.coroutines.flow.Flow + +interface GetVaultSession : () -> Flow { + /** + * Returns latest value of the session or `null` if no-one + * is currently subscribed to the session. + */ + val valueOrNull: MasterSession? +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetWebsiteIcons.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetWebsiteIcons.kt new file mode 100644 index 00000000..8c7b33da --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetWebsiteIcons.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetWebsiteIcons : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetWriteAccess.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetWriteAccess.kt new file mode 100644 index 00000000..f43a292d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/GetWriteAccess.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.flow.Flow + +interface GetWriteAccess : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/MergeFolderById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/MergeFolderById.kt new file mode 100644 index 00000000..29320aff --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/MergeFolderById.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface MergeFolderById : ( + Set, + String, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/MessageHub.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/MessageHub.kt new file mode 100644 index 00000000..be073a7c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/MessageHub.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.ToastMessage + +interface MessageHub { + fun register(key: String, onMessage: (ToastMessage) -> Unit): () -> Unit +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/MoveCipherToFolderById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/MoveCipherToFolderById.kt new file mode 100644 index 00000000..ac62a27c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/MoveCipherToFolderById.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.FolderOwnership2 + +interface MoveCipherToFolderById : ( + Set, + FolderOwnership2, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/NumberFormatter.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/NumberFormatter.kt new file mode 100644 index 00000000..39c28fb7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/NumberFormatter.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.usecase + +interface NumberFormatter { + fun formatNumber( + number: Int, + ): String +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PasskeyTargetCheck.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PasskeyTargetCheck.kt new file mode 100644 index 00000000..77b8a3ac --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PasskeyTargetCheck.kt @@ -0,0 +1,15 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.DSecret + +data class PasskeyTarget( + val allowedCredentials: List? = null, + val rpId: String?, +) { + data class AllowedCredential( + val credentialId: String, + ) +} + +interface PasskeyTargetCheck : (DSecret.Login.Fido2Credentials, PasskeyTarget) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAccountColorById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAccountColorById.kt new file mode 100644 index 00000000..20f21938 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAccountColorById.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.common.usecase + +import androidx.compose.ui.graphics.Color +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.AccountId + +interface PutAccountColorById : ( + Map, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAccountMasterPasswordHintById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAccountMasterPasswordHintById.kt new file mode 100644 index 00000000..19d4e7de --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAccountMasterPasswordHintById.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.AccountId + +interface PutAccountMasterPasswordHintById : ( + Map, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAccountNameById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAccountNameById.kt new file mode 100644 index 00000000..15654b0a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAccountNameById.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.AccountId + +interface PutAccountNameById : ( + Map, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAllowScreenshots.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAllowScreenshots.kt new file mode 100644 index 00000000..51535a6b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAllowScreenshots.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface PutAllowScreenshots : (Boolean) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAllowTwoPanelLayoutInLandscape.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAllowTwoPanelLayoutInLandscape.kt new file mode 100644 index 00000000..1cafe918 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAllowTwoPanelLayoutInLandscape.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface PutAllowTwoPanelLayoutInLandscape : (Boolean) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAllowTwoPanelLayoutInPortrait.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAllowTwoPanelLayoutInPortrait.kt new file mode 100644 index 00000000..011be707 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAllowTwoPanelLayoutInPortrait.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface PutAllowTwoPanelLayoutInPortrait : (Boolean) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAppIcons.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAppIcons.kt new file mode 100644 index 00000000..c98fdf4d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAppIcons.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface PutAppIcons : (Boolean) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAutofillCopyTotp.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAutofillCopyTotp.kt new file mode 100644 index 00000000..7b553a01 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAutofillCopyTotp.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface PutAutofillCopyTotp : (Boolean) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAutofillInlineSuggestions.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAutofillInlineSuggestions.kt new file mode 100644 index 00000000..7b77e511 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAutofillInlineSuggestions.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface PutAutofillInlineSuggestions : (Boolean) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAutofillManualSelection.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAutofillManualSelection.kt new file mode 100644 index 00000000..08cb543e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAutofillManualSelection.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface PutAutofillManualSelection : (Boolean) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAutofillRespectAutofillOff.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAutofillRespectAutofillOff.kt new file mode 100644 index 00000000..e9d786cd --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAutofillRespectAutofillOff.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface PutAutofillRespectAutofillOff : (Boolean) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAutofillSaveRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAutofillSaveRequest.kt new file mode 100644 index 00000000..9fe59454 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAutofillSaveRequest.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface PutAutofillSaveRequest : (Boolean) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAutofillSaveUri.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAutofillSaveUri.kt new file mode 100644 index 00000000..5300a9d8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutAutofillSaveUri.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface PutAutofillSaveUri : (Boolean) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutBiometricTimeout.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutBiometricTimeout.kt new file mode 100644 index 00000000..d19eeb49 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutBiometricTimeout.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import kotlin.time.Duration + +interface PutBiometricTimeout : (Duration?) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutCachePremium.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutCachePremium.kt new file mode 100644 index 00000000..c51d452c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutCachePremium.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface PutCachePremium : (Boolean) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutCheckPwnedPasswords.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutCheckPwnedPasswords.kt new file mode 100644 index 00000000..eb3a6b53 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutCheckPwnedPasswords.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface PutCheckPwnedPasswords : (Boolean) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutCheckPwnedServices.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutCheckPwnedServices.kt new file mode 100644 index 00000000..611e1330 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutCheckPwnedServices.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface PutCheckPwnedServices : (Boolean) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutCheckTwoFA.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutCheckTwoFA.kt new file mode 100644 index 00000000..99853abc --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutCheckTwoFA.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface PutCheckTwoFA : (Boolean) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutClipboardAutoClear.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutClipboardAutoClear.kt new file mode 100644 index 00000000..d4520301 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutClipboardAutoClear.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import kotlin.time.Duration + +interface PutClipboardAutoClear : (Duration?) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutClipboardAutoRefresh.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutClipboardAutoRefresh.kt new file mode 100644 index 00000000..a147aea6 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutClipboardAutoRefresh.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import kotlin.time.Duration + +interface PutClipboardAutoRefresh : (Duration?) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutColors.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutColors.kt new file mode 100644 index 00000000..7b8942ee --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutColors.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.AppColors + +interface PutColors : (AppColors?) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutConcealFields.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutConcealFields.kt new file mode 100644 index 00000000..a8dd4d40 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutConcealFields.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface PutConcealFields : (Boolean) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutDebugPremium.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutDebugPremium.kt new file mode 100644 index 00000000..04d27c94 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutDebugPremium.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface PutDebugPremium : (Boolean) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutDebugScreenDelay.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutDebugScreenDelay.kt new file mode 100644 index 00000000..73eba699 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutDebugScreenDelay.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface PutDebugScreenDelay : (Boolean) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutFont.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutFont.kt new file mode 100644 index 00000000..ebfd0a5f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutFont.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.AppFont + +interface PutFont : (AppFont?) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutKeepScreenOn.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutKeepScreenOn.kt new file mode 100644 index 00000000..2f77f04e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutKeepScreenOn.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface PutKeepScreenOn : (Boolean) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutLocale.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutLocale.kt new file mode 100644 index 00000000..051a4917 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutLocale.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface PutLocale : (String?) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutMarkdown.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutMarkdown.kt new file mode 100644 index 00000000..653b6d42 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutMarkdown.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface PutMarkdown : (Boolean) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutNavAnimation.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutNavAnimation.kt new file mode 100644 index 00000000..4916b37c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutNavAnimation.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.NavAnimation + +interface PutNavAnimation : (NavAnimation?) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutNavLabel.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutNavLabel.kt new file mode 100644 index 00000000..b5a60243 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutNavLabel.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface PutNavLabel : (Boolean) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutOnboardingLastVisitInstant.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutOnboardingLastVisitInstant.kt new file mode 100644 index 00000000..f0cb7133 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutOnboardingLastVisitInstant.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import kotlinx.datetime.Instant + +interface PutOnboardingLastVisitInstant : (Instant) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutScreenState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutScreenState.kt new file mode 100644 index 00000000..42fa79d3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutScreenState.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface PutScreenState : ( + String, + Map, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutTheme.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutTheme.kt new file mode 100644 index 00000000..c79581ed --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutTheme.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.AppTheme + +interface PutTheme : (AppTheme?) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutThemeUseAmoledDark.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutThemeUseAmoledDark.kt new file mode 100644 index 00000000..d76fe84a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutThemeUseAmoledDark.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface PutThemeUseAmoledDark : (Boolean) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutUseExternalBrowser.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutUseExternalBrowser.kt new file mode 100644 index 00000000..833aa3b2 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutUseExternalBrowser.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface PutUseExternalBrowser : (Boolean) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutVaultLockAfterReboot.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutVaultLockAfterReboot.kt new file mode 100644 index 00000000..1dbabde7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutVaultLockAfterReboot.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface PutVaultLockAfterReboot : (Boolean) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutVaultLockAfterScreenOff.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutVaultLockAfterScreenOff.kt new file mode 100644 index 00000000..1575817f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutVaultLockAfterScreenOff.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface PutVaultLockAfterScreenOff : (Boolean) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutVaultLockAfterTimeout.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutVaultLockAfterTimeout.kt new file mode 100644 index 00000000..064e16db --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutVaultLockAfterTimeout.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import kotlin.time.Duration + +interface PutVaultLockAfterTimeout : (Duration?) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutVaultPersist.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutVaultPersist.kt new file mode 100644 index 00000000..e8e5a01a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutVaultPersist.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface PutVaultPersist : (Boolean) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutVaultSession.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutVaultSession.kt new file mode 100644 index 00000000..0446e499 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutVaultSession.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.MasterSession + +interface PutVaultSession : (MasterSession) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutWebsiteIcons.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutWebsiteIcons.kt new file mode 100644 index 00000000..152704ac --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutWebsiteIcons.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface PutWebsiteIcons : (Boolean) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutWriteAccess.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutWriteAccess.kt new file mode 100644 index 00000000..cd27bd74 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/PutWriteAccess.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface PutWriteAccess : (Boolean) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/QueueSyncAll.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/QueueSyncAll.kt new file mode 100644 index 00000000..0faf45e7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/QueueSyncAll.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface QueueSyncAll : () -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/QueueSyncById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/QueueSyncById.kt new file mode 100644 index 00000000..9dc0f1e9 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/QueueSyncById.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.AccountId + +interface QueueSyncById : (AccountId) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RePromptCipherById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RePromptCipherById.kt new file mode 100644 index 00000000..3c51941d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RePromptCipherById.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface RePromptCipherById : ( + Set, + Boolean, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RemoveAccountById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RemoveAccountById.kt new file mode 100644 index 00000000..8184e0aa --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RemoveAccountById.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.AccountId + +interface RemoveAccountById : ( + Set, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RemoveAccounts.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RemoveAccounts.kt new file mode 100644 index 00000000..777cc9e2 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RemoveAccounts.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface RemoveAccounts : () -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RemoveAttachment.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RemoveAttachment.kt new file mode 100644 index 00000000..b95a0e36 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RemoveAttachment.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.RemoveAttachmentRequest + +interface RemoveAttachment : (List) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RemoveCipherById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RemoveCipherById.kt new file mode 100644 index 00000000..b70ba599 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RemoveCipherById.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface RemoveCipherById : ( + Set, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RemoveEmailRelayById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RemoveEmailRelayById.kt new file mode 100644 index 00000000..55ba0b30 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RemoveEmailRelayById.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface RemoveEmailRelayById : ( + Set, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RemoveFolderById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RemoveFolderById.kt new file mode 100644 index 00000000..3b591709 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RemoveFolderById.kt @@ -0,0 +1,13 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface RemoveFolderById : ( + Set, + RemoveFolderById.OnCiphersConflict, +) -> IO { + enum class OnCiphersConflict { + IGNORE, + TRASH, + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RemoveGeneratorHistory.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RemoveGeneratorHistory.kt new file mode 100644 index 00000000..1ce5792a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RemoveGeneratorHistory.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface RemoveGeneratorHistory : () -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RemoveGeneratorHistoryById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RemoveGeneratorHistoryById.kt new file mode 100644 index 00000000..1019aeb8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RemoveGeneratorHistoryById.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface RemoveGeneratorHistoryById : ( + Set, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RenameFolderById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RenameFolderById.kt new file mode 100644 index 00000000..ce65f0ce --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RenameFolderById.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface RenameFolderById : ( + Map, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RequestAppReview.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RequestAppReview.kt new file mode 100644 index 00000000..1d09e389 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RequestAppReview.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.platform.LeContext + +/** + * @author Artem Chepurnyi + */ +interface RequestAppReview : (LeContext) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/ResolvePlaceholders.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/ResolvePlaceholders.kt new file mode 100644 index 00000000..addd4895 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/ResolvePlaceholders.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface ResolvePlaceholders : ( + String, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RestoreCipherById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RestoreCipherById.kt new file mode 100644 index 00000000..2bf79b4a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RestoreCipherById.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface RestoreCipherById : ( + Set, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RetryCipher.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RetryCipher.kt new file mode 100644 index 00000000..9d51e9cf --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RetryCipher.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface RetryCipher : ( + Set, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RotateDeviceIdUseCase.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RotateDeviceIdUseCase.kt new file mode 100644 index 00000000..86486ce4 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/RotateDeviceIdUseCase.kt @@ -0,0 +1,25 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.flatTap +import com.artemchep.keyguard.common.service.id.IdRepository +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class RotateDeviceIdUseCase( + private val deviceIdRepository: IdRepository, + private val removeAccounts: RemoveAccounts, +) : () -> IO { + constructor(directDI: DirectDI) : this( + deviceIdRepository = directDI.instance(), + removeAccounts = directDI.instance(), + ) + + override fun invoke() = deviceIdRepository + .put("") + // Using an old token with a new device identifiers upon next + // request is suspicious. + .flatTap { + removeAccounts() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/ShowMessage.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/ShowMessage.kt new file mode 100644 index 00000000..b4f57aa6 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/ShowMessage.kt @@ -0,0 +1,10 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.ToastMessage + +interface ShowMessage { + fun copy( + value: ToastMessage, + target: String? = null, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/SyncAll.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/SyncAll.kt new file mode 100644 index 00000000..b81eb596 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/SyncAll.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.usecase + +import arrow.core.Either +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.AccountId + +interface SyncAll : () -> IO>> diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/SyncById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/SyncById.kt new file mode 100644 index 00000000..cf6469a0 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/SyncById.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.AccountId + +interface SyncById : (AccountId) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/TrashCipherByFolderId.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/TrashCipherByFolderId.kt new file mode 100644 index 00000000..ca518df9 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/TrashCipherByFolderId.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface TrashCipherByFolderId : ( + Set, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/TrashCipherById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/TrashCipherById.kt new file mode 100644 index 00000000..fa5e6568 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/TrashCipherById.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO + +interface TrashCipherById : ( + Set, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/UnlockUseCase.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/UnlockUseCase.kt new file mode 100644 index 00000000..474777d0 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/UnlockUseCase.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.model.VaultState +import kotlinx.coroutines.flow.Flow + +interface UnlockUseCase : () -> Flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/Watchdog.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/Watchdog.kt new file mode 100644 index 00000000..cf3bd4a3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/Watchdog.kt @@ -0,0 +1,96 @@ +package com.artemchep.keyguard.common.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.model.AccountTask +import kotlinx.collections.immutable.PersistentMap +import kotlinx.collections.immutable.persistentMapOf +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.update + +interface Watchdog { + fun track( + accountId: AccountId, + accountTask: AccountTask, + io: IO, + ) = track( + accountIdSet = setOf(accountId), + accountTask = accountTask, + io = io, + ) + + fun track( + accountIdSet: Set, + accountTask: AccountTask, + io: IO, + ): IO +} + +interface SupervisorRead { + fun get(): Flow>> + + fun get(accountTask: AccountTask): Flow> +} + +class WatchdogImpl() : Watchdog, SupervisorRead { + private val sink = MutableStateFlow( + value = persistentMapOf>(), + ) + + override fun track( + accountIdSet: Set, + accountTask: AccountTask, + io: IO, + ): IO = ioEffect { + try { + updateState(accountIdSet, accountTask, Int::inc) + io.bind() + } finally { + updateState(accountIdSet, accountTask, Int::dec) + } + } + + private fun updateState( + keys: Set, + section: AccountTask, + block: (Int) -> Int, + ) = sink.update { map -> + val initialSection = map.getOrElse(section) { persistentMapOf() } + val newSection = keys.fold(initialSection) { y, key -> + val v = y + .getOrElse(key) { 0 } + .let(block) + if (v > 0) { + y.put(key, v) + } else { + y.remove(key) + } + } + map.put(section, newSection) + } + + override fun get(): Flow>> = sink + .map { store -> + store.mapValues { it.value.convertToSet() } + } + .distinctUntilChanged() + + private fun Map.convertToSet() = this + .asSequence() + .mapNotNull { it.takeKeyIfExists() } + .toSet() + + private fun Map.Entry.takeKeyIfExists() = takeIf { it.value > 0 }?.key + + override fun get(accountTask: AccountTask): Flow> = get() + .map { all -> + // Get the specific section of the data. + all[accountTask].orEmpty() + } + .distinctUntilChanged() +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/WindowCoroutineScope.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/WindowCoroutineScope.kt new file mode 100644 index 00000000..ee660cfe --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/WindowCoroutineScope.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.usecase + +import kotlinx.coroutines.CoroutineScope + +interface WindowCoroutineScope : CoroutineScope diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/AddEmailRelayImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/AddEmailRelayImpl.kt new file mode 100644 index 00000000..52a9de15 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/AddEmailRelayImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.model.DGeneratorEmailRelay +import com.artemchep.keyguard.common.service.relays.repo.GeneratorEmailRelayRepository +import com.artemchep.keyguard.common.usecase.AddEmailRelay +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class AddEmailRelayImpl( + private val generatorEmailRelayRepository: GeneratorEmailRelayRepository, +) : AddEmailRelay { + constructor(directDI: DirectDI) : this( + generatorEmailRelayRepository = directDI.instance(), + ) + + override fun invoke(model: DGeneratorEmailRelay) = generatorEmailRelayRepository + .put(model) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/AddGeneratorHistoryImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/AddGeneratorHistoryImpl.kt new file mode 100644 index 00000000..7c4bbb9a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/AddGeneratorHistoryImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.android.downloader.journal.GeneratorHistoryRepository +import com.artemchep.keyguard.common.model.DGeneratorHistory +import com.artemchep.keyguard.common.usecase.AddGeneratorHistory +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class AddGeneratorHistoryImpl( + private val generatorHistoryRepository: GeneratorHistoryRepository, +) : AddGeneratorHistory { + constructor(directDI: DirectDI) : this( + generatorHistoryRepository = directDI.instance(), + ) + + override fun invoke(model: DGeneratorHistory) = generatorHistoryRepository + .put(model) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl.kt new file mode 100644 index 00000000..c31b7280 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/AuthConfirmMasterKeyUseCaseImpl.kt @@ -0,0 +1,52 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.exception.PasswordMismatchException +import com.artemchep.keyguard.common.io.flatMap +import com.artemchep.keyguard.common.io.ioRaise +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.model.AuthResult +import com.artemchep.keyguard.common.model.FingerprintPassword +import com.artemchep.keyguard.common.model.MasterPassword +import com.artemchep.keyguard.common.model.MasterPasswordHash +import com.artemchep.keyguard.common.model.MasterPasswordSalt +import com.artemchep.keyguard.common.usecase.AuthConfirmMasterKeyUseCase +import com.artemchep.keyguard.common.usecase.GenerateMasterHashUseCase +import com.artemchep.keyguard.common.usecase.GenerateMasterKeyUseCase +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class AuthConfirmMasterKeyUseCaseImpl( + private val generateMasterHashUseCase: GenerateMasterHashUseCase, + private val generateMasterKeyUseCase: GenerateMasterKeyUseCase, +) : AuthConfirmMasterKeyUseCase { + constructor(directDI: DirectDI) : this( + generateMasterHashUseCase = directDI.instance(), + generateMasterKeyUseCase = directDI.instance(), + ) + + override fun invoke( + salt: MasterPasswordSalt, + hash: MasterPasswordHash, + ) = { password: MasterPassword -> + // Generate a hash from the given password and known + // salt, to identify if the password is valid. + generateMasterHashUseCase(password, salt) + .flatMap { h -> + if (!h.byteArray.contentEquals(hash.byteArray)) { + val e = PasswordMismatchException() + return@flatMap ioRaise(e) + } + + generateMasterKeyUseCase(password, hash) + } + .map { key -> + AuthResult( + key = key, + token = FingerprintPassword( + hash = hash, + salt = salt, + ), + ) + } + } +} \ No newline at end of file diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl.kt new file mode 100644 index 00000000..9bceef06 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/AuthGenerateMasterKeyUseCaseImpl.kt @@ -0,0 +1,42 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.model.AuthResult +import com.artemchep.keyguard.common.model.FingerprintPassword +import com.artemchep.keyguard.common.model.MasterPassword +import com.artemchep.keyguard.common.usecase.AuthGenerateMasterKeyUseCase +import com.artemchep.keyguard.common.usecase.GenerateMasterHashUseCase +import com.artemchep.keyguard.common.usecase.GenerateMasterKeyUseCase +import com.artemchep.keyguard.common.usecase.GenerateMasterSaltUseCase +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class AuthGenerateMasterKeyUseCaseImpl( + private val generateMasterHashUseCase: GenerateMasterHashUseCase, + private val generateMasterKeyUseCase: GenerateMasterKeyUseCase, + private val generateMasterSaltUseCase: GenerateMasterSaltUseCase, +) : AuthGenerateMasterKeyUseCase { + constructor(directDI: DirectDI) : this( + generateMasterHashUseCase = directDI.instance(), + generateMasterKeyUseCase = directDI.instance(), + generateMasterSaltUseCase = directDI.instance(), + ) + + override fun invoke() = { password: MasterPassword -> + // Generate a hash from the given password and known + // salt, to identify if the password is valid. + generateMasterSaltUseCase() + .effectMap { salt -> + val hash = generateMasterHashUseCase(password, salt).bind() + val key = generateMasterKeyUseCase(password, hash).bind() + AuthResult( + key = key, + token = FingerprintPassword( + hash = hash, + salt = salt, + ), + ) + } + } +} \ No newline at end of file diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/BiometricKeyDecryptUseCaseImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/BiometricKeyDecryptUseCaseImpl.kt new file mode 100644 index 00000000..d8db7e72 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/BiometricKeyDecryptUseCaseImpl.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.model.MasterKey +import com.artemchep.keyguard.common.usecase.BiometricKeyDecryptUseCase +import com.artemchep.keyguard.core.session.util.encode +import com.artemchep.keyguard.platform.LeCipher +import org.kodein.di.DirectDI + +class BiometricKeyDecryptUseCaseImpl() : BiometricKeyDecryptUseCase { + constructor(directDI: DirectDI) : this() + + override fun invoke( + cipher: IO, + encryptedMasterKey: ByteArray, + ): IO = encryptedMasterKey + .encode(cipher) + .map(::MasterKey) +} \ No newline at end of file diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/BiometricKeyEncryptUseCaseImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/BiometricKeyEncryptUseCaseImpl.kt new file mode 100644 index 00000000..953716e8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/BiometricKeyEncryptUseCaseImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.MasterKey +import com.artemchep.keyguard.common.usecase.BiometricKeyEncryptUseCase +import com.artemchep.keyguard.core.session.util.encode +import com.artemchep.keyguard.platform.LeCipher +import org.kodein.di.DirectDI + +class BiometricKeyEncryptUseCaseImpl() : BiometricKeyEncryptUseCase { + constructor(directDI: DirectDI) : this() + + override fun invoke( + cipher: IO, + masterKey: MasterKey, + ): IO = masterKey.byteArray + .encode(cipher) +} \ No newline at end of file diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/ClearVaultSessionImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/ClearVaultSessionImpl.kt new file mode 100644 index 00000000..448383bc --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/ClearVaultSessionImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.MasterSession +import com.artemchep.keyguard.common.usecase.ClearVaultSession +import com.artemchep.keyguard.common.usecase.PutVaultSession +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class ClearVaultSessionImpl( + private val putVaultSession: PutVaultSession, +) : ClearVaultSession { + constructor(directDI: DirectDI) : this( + putVaultSession = directDI.instance(), + ) + + override fun invoke(): IO = putVaultSession(MasterSession.Empty()) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/ConfirmAccessByPasswordUseCaseImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/ConfirmAccessByPasswordUseCaseImpl.kt new file mode 100644 index 00000000..b4b526e7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/ConfirmAccessByPasswordUseCaseImpl.kt @@ -0,0 +1,45 @@ +package com.artemchep.keyguard.common.usecase.impl + +import arrow.core.compose +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.io.fold +import com.artemchep.keyguard.common.io.toIO +import com.artemchep.keyguard.common.model.MasterPassword +import com.artemchep.keyguard.common.service.vault.FingerprintReadWriteRepository +import com.artemchep.keyguard.common.usecase.AuthConfirmMasterKeyUseCase +import com.artemchep.keyguard.common.usecase.ConfirmAccessByPasswordUseCase +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class ConfirmAccessByPasswordUseCaseImpl( + private val keyReadWriteRepository: FingerprintReadWriteRepository, + private val authConfirmMasterKeyUseCase: AuthConfirmMasterKeyUseCase, +) : ConfirmAccessByPasswordUseCase { + constructor(directDI: DirectDI) : this( + keyReadWriteRepository = directDI.instance(), + authConfirmMasterKeyUseCase = directDI.instance(), + ) + + override fun invoke( + password: String, + ): IO = keyReadWriteRepository + .get().toIO() + .effectMap { fingerprint -> + requireNotNull(fingerprint) { + "Identity fingerprint must not be null!" + } + val salt = fingerprint.master.salt + val hash = fingerprint.master.hash + authConfirmMasterKeyUseCase(salt, hash) + .compose { password: String -> + val data = password.toByteArray() + MasterPassword(data) + } + .invoke(password) + .fold( + ifLeft = { false }, + ifRight = { true }, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/DownloadAttachmentImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/DownloadAttachmentImpl.kt new file mode 100644 index 00000000..eac2dd6c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/DownloadAttachmentImpl.kt @@ -0,0 +1,218 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.combine +import com.artemchep.keyguard.common.io.flatMap +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.io.toIO +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.model.DownloadAttachmentRequest +import com.artemchep.keyguard.common.model.DownloadAttachmentRequestData +import com.artemchep.keyguard.common.service.crypto.CipherEncryptor +import com.artemchep.keyguard.common.service.crypto.CryptoGenerator +import com.artemchep.keyguard.common.service.download.DownloadService +import com.artemchep.keyguard.common.service.text.Base64Service +import com.artemchep.keyguard.common.usecase.DownloadAttachment +import com.artemchep.keyguard.core.store.DatabaseManager +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.provider.bitwarden.api.builder.api +import com.artemchep.keyguard.provider.bitwarden.api.builder.get +import com.artemchep.keyguard.provider.bitwarden.crypto.BitwardenCrCta +import com.artemchep.keyguard.provider.bitwarden.crypto.BitwardenCrImpl +import com.artemchep.keyguard.provider.bitwarden.crypto.BitwardenCrKey +import com.artemchep.keyguard.provider.bitwarden.crypto.appendOrganizationToken2 +import com.artemchep.keyguard.provider.bitwarden.crypto.appendProfileToken2 +import com.artemchep.keyguard.provider.bitwarden.crypto.appendUserToken +import com.artemchep.keyguard.provider.bitwarden.crypto.encrypted +import com.artemchep.keyguard.provider.bitwarden.crypto.transform +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenCipherRepository +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenOrganizationRepository +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenProfileRepository +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenTokenRepository +import com.artemchep.keyguard.provider.bitwarden.usecase.util.withRefreshableAccessToken +import io.ktor.client.HttpClient +import kotlinx.serialization.json.Json +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class DownloadAttachmentImpl2( + private val tokenRepository: BitwardenTokenRepository, + private val cipherRepository: BitwardenCipherRepository, + private val profileRepository: BitwardenProfileRepository, + private val organizationRepository: BitwardenOrganizationRepository, + private val downloadService: DownloadService, + private val databaseManager: DatabaseManager, + private val cipherEncryptor: CipherEncryptor, + private val cryptoGenerator: CryptoGenerator, + private val base64Service: Base64Service, + private val json: Json, + private val httpClient: HttpClient, +) : DownloadAttachment { + companion object { + private const val THREAD_BUCKET_SIZE = 10 + } + + constructor(directDI: DirectDI) : this( + tokenRepository = directDI.instance(), + cipherRepository = directDI.instance(), + profileRepository = directDI.instance(), + organizationRepository = directDI.instance(), + downloadService = directDI.instance(), + databaseManager = directDI.instance(), + cipherEncryptor = directDI.instance(), + cryptoGenerator = directDI.instance(), + base64Service = directDI.instance(), + json = directDI.instance(), + httpClient = directDI.instance(), + ) + + override fun invoke( + requests: List, + ): IO = requests + .map { request -> + request + .foo() + .flatMap(downloadService::download) + } + .combine(bucket = THREAD_BUCKET_SIZE) + .map { Unit } + + private fun DownloadAttachmentRequest.foo(): IO = when (this) { + is DownloadAttachmentRequest.ByLocalCipherAttachment -> foo() + } + + private fun DownloadAttachmentRequest.ByLocalCipherAttachment.foo() = getLatestAttachmentData( + localCipherId = localCipherId, + remoteCipherId = remoteCipherId, + attachmentId = attachmentId, + ) + .map { data -> + DownloadAttachmentRequestData( + localCipherId = localCipherId, + remoteCipherId = remoteCipherId, + attachmentId = attachmentId, + // data + url = data.url, + urlIsOneTime = data.urlIsOneTime, + name = data.name, + encryptionKey = data.encryptionKey, + ) + } + + private class AttachmentData( + val url: String, + val urlIsOneTime: Boolean, + val name: String, + val encryptionKey: ByteArray, + ) + + private fun getLatestAttachmentData( + localCipherId: String, + remoteCipherId: String?, + attachmentId: String, + ): IO = ioEffect { + val cipher = cipherRepository.getById(id = localCipherId).bind() + requireNotNull(cipher) + requireNotNull(remoteCipherId) // can only get attachment info from remote cipher + // Check if actual remote cipher ID matches given + // remote cipher ID. + require(cipher.service.remote?.id == remoteCipherId) + + val attachment = cipher.attachments + .asSequence() + .mapNotNull { it as? BitwardenCipher.Attachment.Remote } + .firstOrNull { it.id == attachmentId } + requireNotNull(attachment) + + val accountId = AccountId(cipher.accountId) + val token = tokenRepository.getById(id = accountId).bind() + requireNotNull(token) + val profile = profileRepository.getById(id = accountId).toIO().bind() + requireNotNull(profile) + val organizations = organizationRepository.getByAccountId(id = accountId).bind() + + // Build cryptography model. + val builder = BitwardenCrImpl( + cipherEncryptor = cipherEncryptor, + cryptoGenerator = cryptoGenerator, + base64Service = base64Service, + ).apply { + // We need user keys to decrypt the + // profile key. + appendUserToken( + encKey = base64Service.decode(token.key.encryptionKeyBase64), + macKey = base64Service.decode(token.key.macKeyBase64), + ) + appendProfileToken2( + keyData = base64Service.decode(profile.keyBase64), + privateKey = base64Service.decode(profile.privateKeyBase64), + ) + + organizations.forEach { organization -> + appendOrganizationToken2( + id = organization.organizationId, + keyData = base64Service.decode(organization.keyBase64), + ) + } + } + val cr = builder.build() + val envEncryptionType = CipherEncryptor.Type.AesCbc256_HmacSha256_B64 + val organizationId: String? = cipher.organizationId + val env = if (organizationId != null) { + val key = BitwardenCrKey.OrganizationToken(organizationId) + BitwardenCrCta.BitwardenCrCtaEnv( + key = key, + encryptionType = envEncryptionType, + ) + } else { + val key = BitwardenCrKey.UserToken + BitwardenCrCta.BitwardenCrCtaEnv( + key = key, + encryptionType = envEncryptionType, + ) + } + val cta = cr.cta(env, BitwardenCrCta.Mode.DECRYPT) + + // + kotlin.runCatching { + val entity = withRefreshableAccessToken( + base64Service = base64Service, + httpClient = httpClient, + json = json, + db = databaseManager, + user = token, + ) { latestUser -> + val accessToken = requireNotNull(latestUser.token?.accessToken) + latestUser.env.back().api + .ciphers.focus(id = remoteCipherId) + .attachments.focus(id = attachmentId) + .get( + httpClient = httpClient, + env = latestUser.env.back(), + token = accessToken, + ) + } + val model = BitwardenCipher.Attachment + .encrypted(attachment = entity) + .transform(crypto = cta) + AttachmentData( + url = requireNotNull(model.url), + urlIsOneTime = true, + name = model.fileName, + encryptionKey = base64Service.decode(model.keyBase64!!), + ) + }.getOrElse { + AttachmentData( + url = requireNotNull(attachment.url), + urlIsOneTime = false, + name = attachment.fileName, + encryptionKey = base64Service.decode(attachment.keyBase64!!), + ) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl.kt new file mode 100644 index 00000000..fdf54433 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GenerateMasterHashUseCaseImpl.kt @@ -0,0 +1,46 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.model.MasterPassword +import com.artemchep.keyguard.common.model.MasterPasswordHash +import com.artemchep.keyguard.common.model.MasterPasswordSalt +import com.artemchep.keyguard.common.service.crypto.CryptoGenerator +import com.artemchep.keyguard.common.usecase.GenerateMasterHashUseCase +import kotlinx.coroutines.Dispatchers +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GenerateMasterHashUseCaseImpl( + private val cryptoGenerator: CryptoGenerator, +) : GenerateMasterHashUseCase { + companion object { + // Should be minimum 10k, as per + // https://pages.nist.gov/800-63-3/sp800-63b.html#sec5 + private const val HASH_ITERATIONS = 100000 + } + + constructor(directDI: DirectDI) : this( + cryptoGenerator = directDI.instance(), + ) + + override fun invoke( + password: MasterPassword, + salt: MasterPasswordSalt, + ): IO = ioEffect(Dispatchers.Default) { + encode( + password = password.byteArray, + salt = salt.byteArray, + ) + }.map(::MasterPasswordHash) + + private fun encode( + password: ByteArray, + salt: ByteArray, + ) = cryptoGenerator.pbkdf2( + seed = password, + salt = salt, + iterations = HASH_ITERATIONS, + ) +} \ No newline at end of file diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl.kt new file mode 100644 index 00000000..8aa3a2ef --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GenerateMasterKeyUseCaseImpl.kt @@ -0,0 +1,46 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.model.MasterKey +import com.artemchep.keyguard.common.model.MasterPassword +import com.artemchep.keyguard.common.model.MasterPasswordHash +import com.artemchep.keyguard.common.service.crypto.CryptoGenerator +import com.artemchep.keyguard.common.usecase.GenerateMasterKeyUseCase +import kotlinx.coroutines.Dispatchers +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GenerateMasterKeyUseCaseImpl( + private val cryptoGenerator: CryptoGenerator, +) : GenerateMasterKeyUseCase { + companion object { + // Should be minimum 10k, as per + // https://pages.nist.gov/800-63-3/sp800-63b.html#sec5 + private const val HASH_ITERATIONS = 10000 + } + + constructor(directDI: DirectDI) : this( + cryptoGenerator = directDI.instance(), + ) + + override fun invoke( + password: MasterPassword, + salt: MasterPasswordHash, + ): IO = ioEffect(Dispatchers.Default) { + encode( + password = password.byteArray, + salt = salt.byteArray, + ) + }.map(::MasterKey) + + private fun encode( + password: ByteArray, + salt: ByteArray, + ) = cryptoGenerator.pbkdf2( + seed = password, + salt = salt, + iterations = HASH_ITERATIONS, + ) +} \ No newline at end of file diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl.kt new file mode 100644 index 00000000..02b87272 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GenerateMasterSaltUseCaseImpl.kt @@ -0,0 +1,28 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.model.MasterPasswordSalt +import com.artemchep.keyguard.common.service.crypto.CryptoGenerator +import com.artemchep.keyguard.common.usecase.GenerateMasterSaltUseCase +import kotlinx.coroutines.Dispatchers +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GenerateMasterSaltUseCaseImpl( + private val cryptoGenerator: CryptoGenerator, +) : GenerateMasterSaltUseCase { + companion object { + private const val SALT_SIZE_BYTES = 64 + } + + constructor(directDI: DirectDI) : this( + cryptoGenerator = directDI.instance(), + ) + + override fun invoke(): IO = ioEffect(Dispatchers.Default) { + cryptoGenerator + .seed(length = SALT_SIZE_BYTES) + }.map(::MasterPasswordSalt) +} \ No newline at end of file diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl.kt new file mode 100644 index 00000000..b393589b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAccountStatusImpl.kt @@ -0,0 +1,95 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.model.DAccountStatus +import com.artemchep.keyguard.common.model.DMeta +import com.artemchep.keyguard.common.service.permission.Permission +import com.artemchep.keyguard.common.service.permission.PermissionService +import com.artemchep.keyguard.common.service.permission.PermissionState +import com.artemchep.keyguard.common.usecase.GetAccountStatus +import com.artemchep.keyguard.common.usecase.GetAccounts +import com.artemchep.keyguard.common.usecase.GetCiphers +import com.artemchep.keyguard.common.usecase.GetFolders +import com.artemchep.keyguard.common.usecase.GetMetas +import com.artemchep.keyguard.common.util.flow.combineToList +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetAccountStatusImpl( + private val permissionService: PermissionService, + private val getAccounts: GetAccounts, + private val getMetas: GetMetas, + private val getCiphers: GetCiphers, + private val getFolders: GetFolders, +) : GetAccountStatus { + private val importantPermissions = listOf( + Permission.POST_NOTIFICATIONS, + ) + + constructor(directDI: DirectDI) : this( + permissionService = directDI.instance(), + getAccounts = directDI.instance(), + getMetas = directDI.instance(), + getCiphers = directDI.instance(), + getFolders = directDI.instance(), + ) + + override fun invoke(): Flow { + val hasFailureFlow = kotlin.run { + val m = getMetas() + .map { metas -> + // If any of the account has failed to sync, then we report + // it as an error. + metas.count { it.lastSyncResult is DMeta.LastSyncResult.Failure } + } + .distinctUntilChanged() + val c = getCiphers() + .map { + it.count { it.hasError } + } + val f = getFolders() + .map { + it.count { it.hasError } + } + combine(c, f, m) { a, b, c -> a + b + c } + } + val hasPendingFlow = kotlin.run { + val c = getCiphers() + .map { + it.count { !it.synced } + } + val f = getFolders() + .map { + it.count { !it.synced } + } + combine(c, f) { a, b -> a + b } + } + + val pendingPermissionsFlow = importantPermissions + .map { permission -> + permissionService + .getState(permission) + } + .combineToList() + .map { permissionStates -> + permissionStates + .filterIsInstance() + } + return combine( + hasFailureFlow, + hasPendingFlow, + pendingPermissionsFlow, + ) { errorCount, pendingCount, pendingPermissions -> + DAccountStatus( + error = DAccountStatus.Error(errorCount) + .takeIf { errorCount > 0 }, + pending = DAccountStatus.Pending(pendingCount) + .takeIf { pendingCount > 0 }, + pendingPermissions = pendingPermissions, + ) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAllowScreenshotsImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAllowScreenshotsImpl.kt new file mode 100644 index 00000000..14dd42f7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAllowScreenshotsImpl.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetAllowScreenshots +import kotlinx.coroutines.flow.distinctUntilChanged +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetAllowScreenshotsImpl( + settingsReadRepository: SettingsReadRepository, +) : GetAllowScreenshots { + private val sharedFlow = settingsReadRepository.getAllowScreenshots() + .distinctUntilChanged() + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke() = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInLandscapeImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInLandscapeImpl.kt new file mode 100644 index 00000000..4443e7f3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInLandscapeImpl.kt @@ -0,0 +1,26 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetAllowTwoPanelLayoutInLandscape +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.stateIn +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetAllowTwoPanelLayoutInLandscapeImpl( + settingsReadRepository: SettingsReadRepository, +) : GetAllowTwoPanelLayoutInLandscape { + private val sharedFlow = settingsReadRepository.getAllowTwoPanelLayoutInLandscape() + .stateIn( + scope = GlobalScope, + started = SharingStarted.Eagerly, + initialValue = true, + ) + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke() = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInPortraitImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInPortraitImpl.kt new file mode 100644 index 00000000..7f09e25f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAllowTwoPanelLayoutInPortraitImpl.kt @@ -0,0 +1,26 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetAllowTwoPanelLayoutInPortrait +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.stateIn +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetAllowTwoPanelLayoutInPortraitImpl( + settingsReadRepository: SettingsReadRepository, +) : GetAllowTwoPanelLayoutInPortrait { + private val sharedFlow = settingsReadRepository.getAllowTwoPanelLayoutInPortrait() + .stateIn( + scope = GlobalScope, + started = SharingStarted.Eagerly, + initialValue = true, + ) + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke() = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAppBuildTypeImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAppBuildTypeImpl.kt new file mode 100644 index 00000000..da971d43 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAppBuildTypeImpl.kt @@ -0,0 +1,15 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.build.BuildKonfig +import com.artemchep.keyguard.common.usecase.GetAppBuildType +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.DirectDI + +class GetAppBuildTypeImpl( +) : GetAppBuildType { + constructor(directDI: DirectDI) : this( + ) + + override fun invoke(): Flow = flowOf(BuildKonfig.buildType.lowercase()) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAppIconsImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAppIconsImpl.kt new file mode 100644 index 00000000..d9fd0864 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAppIconsImpl.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetAppIcons +import kotlinx.coroutines.flow.distinctUntilChanged +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetAppIconsImpl( + settingsReadRepository: SettingsReadRepository, +) : GetAppIcons { + private val sharedFlow = settingsReadRepository.getAppIcons() + .distinctUntilChanged() + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke() = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAppVersionCode.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAppVersionCode.kt new file mode 100644 index 00000000..a238690c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAppVersionCode.kt @@ -0,0 +1,13 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.build.BuildKonfig +import com.artemchep.keyguard.common.usecase.GetAppVersionCode +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.DirectDI + +class GetAppVersionCodeImpl() : GetAppVersionCode { + constructor(directDI: DirectDI) : this() + + override fun invoke(): Flow = flowOf(BuildKonfig.versionCode) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAppVersionImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAppVersionImpl.kt new file mode 100644 index 00000000..99d7d1b6 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAppVersionImpl.kt @@ -0,0 +1,30 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.usecase.GetAppBuildType +import com.artemchep.keyguard.common.usecase.GetAppVersion +import com.artemchep.keyguard.common.usecase.GetAppVersionCode +import com.artemchep.keyguard.common.usecase.GetAppVersionName +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.combine +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetAppVersionImpl( + private val getAppBuildType: GetAppBuildType, + private val getAppVersionCode: GetAppVersionCode, + private val getAppVersionName: GetAppVersionName, +) : GetAppVersion { + constructor(directDI: DirectDI) : this( + getAppBuildType = directDI.instance(), + getAppVersionCode = directDI.instance(), + getAppVersionName = directDI.instance(), + ) + + override fun invoke(): Flow = combine( + getAppBuildType(), + getAppVersionCode(), + getAppVersionName(), + ) { buildType, versionCode, versionName -> + "$versionName-$versionCode.$buildType" + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAppVersionName.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAppVersionName.kt new file mode 100644 index 00000000..423a6b88 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAppVersionName.kt @@ -0,0 +1,13 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.build.BuildKonfig +import com.artemchep.keyguard.common.usecase.GetAppVersionName +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.DirectDI + +class GetAppVersionNameImpl() : GetAppVersionName { + constructor(directDI: DirectDI) : this() + + override fun invoke(): Flow = flowOf(BuildKonfig.versionName) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAutofillCopyTotpImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAutofillCopyTotpImpl.kt new file mode 100644 index 00000000..56bf114f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAutofillCopyTotpImpl.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetAutofillCopyTotp +import kotlinx.coroutines.flow.distinctUntilChanged +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetAutofillCopyTotpImpl( + settingsReadRepository: SettingsReadRepository, +) : GetAutofillCopyTotp { + private val sharedFlow = settingsReadRepository.getAutofillCopyTotp() + .distinctUntilChanged() + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke() = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAutofillInlineSuggestionsImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAutofillInlineSuggestionsImpl.kt new file mode 100644 index 00000000..23a16535 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAutofillInlineSuggestionsImpl.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetAutofillInlineSuggestions +import kotlinx.coroutines.flow.distinctUntilChanged +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetAutofillInlineSuggestionsImpl( + settingsReadRepository: SettingsReadRepository, +) : GetAutofillInlineSuggestions { + private val sharedFlow = settingsReadRepository.getAutofillInlineSuggestions() + .distinctUntilChanged() + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke() = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAutofillManualSelectionImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAutofillManualSelectionImpl.kt new file mode 100644 index 00000000..e7faa1f8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAutofillManualSelectionImpl.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetAutofillManualSelection +import kotlinx.coroutines.flow.distinctUntilChanged +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetAutofillManualSelectionImpl( + settingsReadRepository: SettingsReadRepository, +) : GetAutofillManualSelection { + private val sharedFlow = settingsReadRepository.getAutofillManualSelection() + .distinctUntilChanged() + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke() = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAutofillRespectAutofillOffImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAutofillRespectAutofillOffImpl.kt new file mode 100644 index 00000000..402265f7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAutofillRespectAutofillOffImpl.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetAutofillRespectAutofillOff +import kotlinx.coroutines.flow.distinctUntilChanged +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetAutofillRespectAutofillOffImpl( + settingsReadRepository: SettingsReadRepository, +) : GetAutofillRespectAutofillOff { + private val sharedFlow = settingsReadRepository.getAutofillRespectAutofillOff() + .distinctUntilChanged() + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke() = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAutofillSaveRequestImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAutofillSaveRequestImpl.kt new file mode 100644 index 00000000..dca29c16 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAutofillSaveRequestImpl.kt @@ -0,0 +1,29 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetAutofillSaveRequest +import com.artemchep.keyguard.common.usecase.GetCanWrite +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.distinctUntilChanged +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetAutofillSaveRequestImpl( + settingsReadRepository: SettingsReadRepository, + private val getCanWrite: GetCanWrite, +) : GetAutofillSaveRequest { + private val sharedFlow = settingsReadRepository.getAutofillSaveRequest() + .distinctUntilChanged() + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + getCanWrite = directDI.instance(), + ) + + override fun invoke() = combine( + sharedFlow, + getCanWrite(), + ) { saveRequest, canWrite -> + saveRequest && canWrite + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAutofillSaveUriImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAutofillSaveUriImpl.kt new file mode 100644 index 00000000..8fa61161 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetAutofillSaveUriImpl.kt @@ -0,0 +1,29 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetAutofillSaveUri +import com.artemchep.keyguard.common.usecase.GetCanWrite +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.distinctUntilChanged +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetAutofillSaveUriImpl( + settingsReadRepository: SettingsReadRepository, + private val getCanWrite: GetCanWrite, +) : GetAutofillSaveUri { + private val sharedFlow = settingsReadRepository.getAutofillSaveUri() + .distinctUntilChanged() + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + getCanWrite = directDI.instance(), + ) + + override fun invoke() = combine( + sharedFlow, + getCanWrite(), + ) { saveRequest, canWrite -> + saveRequest && canWrite + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetBiometricTimeoutImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetBiometricTimeoutImpl.kt new file mode 100644 index 00000000..7bcf6430 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetBiometricTimeoutImpl.kt @@ -0,0 +1,30 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetBiometricTimeout +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.time.Duration + +class GetBiometricTimeoutImpl( + settingsReadRepository: SettingsReadRepository, +) : GetBiometricTimeout { + companion object { + private val DEFAULT_DURATION = with(Duration) { 14L.days } + } + + private val sharedFlow = settingsReadRepository.getBiometricTimeout() + .map { duration -> + duration ?: DEFAULT_DURATION + } + .distinctUntilChanged() + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke(): Flow = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetBiometricTimeoutVariantsImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetBiometricTimeoutVariantsImpl.kt new file mode 100644 index 00000000..da195d89 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetBiometricTimeoutVariantsImpl.kt @@ -0,0 +1,27 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.usecase.GetBiometricTimeoutVariants +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.DirectDI +import kotlin.time.Duration + +class GetBiometricTimeoutVariantsImpl() : GetBiometricTimeoutVariants { + companion object { + private val DEFAULT_DURATION_VARIANTS + get() = with(Duration) { + listOf( + ZERO, + 8L.hours, + 1L.days, + 7L.days, + 14L.days, + INFINITE, + ) + } + } + + constructor(directDI: DirectDI) : this() + + override fun invoke(): Flow> = flowOf(DEFAULT_DURATION_VARIANTS) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetCachePremiumImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetCachePremiumImpl.kt new file mode 100644 index 00000000..c8b03782 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetCachePremiumImpl.kt @@ -0,0 +1,21 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetCachePremium +import kotlinx.coroutines.flow.distinctUntilChanged +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetCachePremiumImpl( + settingsReadRepository: SettingsReadRepository, +) : GetCachePremium { + private val sharedFlow = settingsReadRepository + .getCachePremium() + .distinctUntilChanged() + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke() = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetCanAddAccountImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetCanAddAccountImpl.kt new file mode 100644 index 00000000..4c2a7167 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetCanAddAccountImpl.kt @@ -0,0 +1,29 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.usecase.GetAccounts +import com.artemchep.keyguard.common.usecase.GetCanAddAccount +import com.artemchep.keyguard.common.usecase.GetPurchased +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetCanAddAccountImpl( + private val getPurchased: GetPurchased, + private val getAccounts: GetAccounts, +) : GetCanAddAccount { + constructor(directDI: DirectDI) : this( + getPurchased = directDI.instance(), + getAccounts = directDI.instance(), + ) + + override fun invoke() = combine( + getPurchased(), + getAccounts() + .map { it.isNotEmpty() } + .distinctUntilChanged(), + ) { isPremium, hasAccount -> + isPremium || !hasAccount + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetCanWriteImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetCanWriteImpl.kt new file mode 100644 index 00000000..bb8c6bda --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetCanWriteImpl.kt @@ -0,0 +1,16 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.usecase.GetCanWrite +import com.artemchep.keyguard.common.usecase.GetPurchased +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetCanWriteImpl( + private val getPurchased: GetPurchased, +) : GetCanWrite { + constructor(directDI: DirectDI) : this( + getPurchased = directDI.instance(), + ) + + override fun invoke() = getPurchased() +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetCanWriteStub.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetCanWriteStub.kt new file mode 100644 index 00000000..92fb22f9 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetCanWriteStub.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.usecase.GetCanWrite +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.DirectDI + +class GetCanWriteStub() : GetCanWrite { + constructor(directDI: DirectDI) : this() + + override fun invoke() = flowOf(false) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetCheckPwnedPasswordsImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetCheckPwnedPasswordsImpl.kt new file mode 100644 index 00000000..066258f7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetCheckPwnedPasswordsImpl.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetCheckPwnedPasswords +import kotlinx.coroutines.flow.distinctUntilChanged +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetCheckPwnedPasswordsImpl( + settingsReadRepository: SettingsReadRepository, +) : GetCheckPwnedPasswords { + private val sharedFlow = settingsReadRepository.getCheckPwnedPasswords() + .distinctUntilChanged() + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke() = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetCheckPwnedServicesImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetCheckPwnedServicesImpl.kt new file mode 100644 index 00000000..60d6e6ee --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetCheckPwnedServicesImpl.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetCheckPwnedServices +import kotlinx.coroutines.flow.distinctUntilChanged +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetCheckPwnedServicesImpl( + settingsReadRepository: SettingsReadRepository, +) : GetCheckPwnedServices { + private val sharedFlow = settingsReadRepository.getCheckPwnedServices() + .distinctUntilChanged() + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke() = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetCheckTwoFAImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetCheckTwoFAImpl.kt new file mode 100644 index 00000000..48ee2388 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetCheckTwoFAImpl.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetCheckTwoFA +import kotlinx.coroutines.flow.distinctUntilChanged +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetCheckTwoFAImpl( + settingsReadRepository: SettingsReadRepository, +) : GetCheckTwoFA { + private val sharedFlow = settingsReadRepository.getCheckTwoFA() + .distinctUntilChanged() + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke() = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetClipboardAutoClearImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetClipboardAutoClearImpl.kt new file mode 100644 index 00000000..ad7799ab --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetClipboardAutoClearImpl.kt @@ -0,0 +1,30 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetClipboardAutoClear +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.time.Duration + +class GetClipboardAutoClearImpl( + settingsReadRepository: SettingsReadRepository, +) : GetClipboardAutoClear { + companion object { + private val DEFAULT_DURATION = with(Duration) { 1L.minutes } + } + + private val sharedFlow = settingsReadRepository.getClipboardClearDelay() + .map { duration -> + duration ?: DEFAULT_DURATION + } + .distinctUntilChanged() + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke(): Flow = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetClipboardAutoClearVariantsImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetClipboardAutoClearVariantsImpl.kt new file mode 100644 index 00000000..d9fe4958 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetClipboardAutoClearVariantsImpl.kt @@ -0,0 +1,23 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.usecase.GetClipboardAutoClearVariants +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.DirectDI +import kotlin.time.Duration + +class GetClipboardAutoClearVariantsImpl() : GetClipboardAutoClearVariants { + companion object { + private val DEFAULT_DURATION_VARIANTS + get() = with(Duration) { + listOf( + 5L.minutes, + INFINITE, + ) + } + } + + constructor(directDI: DirectDI) : this() + + override fun invoke(): Flow> = flowOf(DEFAULT_DURATION_VARIANTS) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetClipboardAutoRefreshImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetClipboardAutoRefreshImpl.kt new file mode 100644 index 00000000..64144c84 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetClipboardAutoRefreshImpl.kt @@ -0,0 +1,30 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetClipboardAutoRefresh +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.time.Duration + +class GetClipboardAutoRefreshImpl( + settingsReadRepository: SettingsReadRepository, +) : GetClipboardAutoRefresh { + companion object { + private val DEFAULT_DURATION = with(Duration) { 30L.seconds } + } + + private val sharedFlow = settingsReadRepository.getClipboardUpdateDuration() + .map { duration -> + duration ?: DEFAULT_DURATION + } + .distinctUntilChanged() + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke(): Flow = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetClipboardAutoRefreshVariantsImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetClipboardAutoRefreshVariantsImpl.kt new file mode 100644 index 00000000..4f12ed22 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetClipboardAutoRefreshVariantsImpl.kt @@ -0,0 +1,25 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.usecase.GetClipboardAutoRefreshVariants +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.DirectDI +import kotlin.time.Duration + +class GetClipboardAutoRefreshVariantsImpl() : GetClipboardAutoRefreshVariants { + companion object { + private val DEFAULT_DURATION_VARIANTS + get() = with(Duration) { + listOf( + ZERO, + 30L.seconds, + 1L.minutes, + 2L.minutes, + ) + } + } + + constructor(directDI: DirectDI) : this() + + override fun invoke(): Flow> = flowOf(DEFAULT_DURATION_VARIANTS) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetColorsImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetColorsImpl.kt new file mode 100644 index 00000000..b05f1e32 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetColorsImpl.kt @@ -0,0 +1,22 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.model.AppColors +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetColors +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.distinctUntilChanged +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetColorsImpl( + settingsReadRepository: SettingsReadRepository, +) : GetColors { + private val sharedFlow = settingsReadRepository.getColors() + .distinctUntilChanged() + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke(): Flow = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetColorsVariantsImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetColorsVariantsImpl.kt new file mode 100644 index 00000000..57707673 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetColorsVariantsImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.model.AppColors +import com.artemchep.keyguard.common.usecase.GetColorsVariants +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.DirectDI + +class GetColorsVariantsImpl() : GetColorsVariants { + constructor(directDI: DirectDI) : this() + + private val variants = mutableListOf().apply { + this += null + this += AppColors.entries + } + + override fun invoke(): Flow> = flowOf(variants) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetConcealFieldsImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetConcealFieldsImpl.kt new file mode 100644 index 00000000..dfe52533 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetConcealFieldsImpl.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetConcealFields +import kotlinx.coroutines.flow.distinctUntilChanged +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetConcealFieldsImpl( + settingsReadRepository: SettingsReadRepository, +) : GetConcealFields { + private val sharedFlow = settingsReadRepository.getConcealFields() + .distinctUntilChanged() + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke() = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetDebugPremiumImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetDebugPremiumImpl.kt new file mode 100644 index 00000000..d46fb53e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetDebugPremiumImpl.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetDebugPremium +import kotlinx.coroutines.flow.distinctUntilChanged +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetDebugPremiumImpl( + settingsReadRepository: SettingsReadRepository, +) : GetDebugPremium { + private val sharedFlow = settingsReadRepository.getDebugPremium() + .distinctUntilChanged() + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke() = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetDebugScreenDelayImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetDebugScreenDelayImpl.kt new file mode 100644 index 00000000..17bd8fb5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetDebugScreenDelayImpl.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetDebugScreenDelay +import kotlinx.coroutines.flow.distinctUntilChanged +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetDebugScreenDelayImpl( + settingsReadRepository: SettingsReadRepository, +) : GetDebugScreenDelay { + private val sharedFlow = settingsReadRepository.getDebugScreenDelay() + .distinctUntilChanged() + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke() = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetEnvSendUrlImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetEnvSendUrlImpl.kt new file mode 100644 index 00000000..1bd557a7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetEnvSendUrlImpl.kt @@ -0,0 +1,45 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.model.DSend +import com.artemchep.keyguard.common.service.text.Base64Service +import com.artemchep.keyguard.common.service.text.url +import com.artemchep.keyguard.common.usecase.GetEnvSendUrl +import com.artemchep.keyguard.provider.bitwarden.api.builder.buildSendUrl +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenTokenRepository +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetEnvSendUrlImpl( + private val tokenRepository: BitwardenTokenRepository, + private val base64Service: Base64Service, +) : GetEnvSendUrl { + constructor(directDI: DirectDI) : this( + tokenRepository = directDI.instance(), + base64Service = directDI.instance(), + ) + + override fun invoke( + send: DSend, + ): IO = tokenRepository + .getById(AccountId(send.accountId)) + .effectMap { token -> + val sendBaseUrl = token?.env?.back()?.buildSendUrl() + requireNotNull(sendBaseUrl) { "Failed to get base send url." } + + val sendUrl = buildString { + append(sendBaseUrl) + append(send.accessId) + append('/') + + val key = send.keyBase64 + ?.let(base64Service::url) + if (key != null) { + append(key) + } + } + sendUrl + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetFontImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetFontImpl.kt new file mode 100644 index 00000000..552cd677 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetFontImpl.kt @@ -0,0 +1,22 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.model.AppFont +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetFont +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.distinctUntilChanged +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetFontImpl( + settingsReadRepository: SettingsReadRepository, +) : GetFont { + private val sharedFlow = settingsReadRepository.getFont() + .distinctUntilChanged() + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke(): Flow = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetFontVariantsImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetFontVariantsImpl.kt new file mode 100644 index 00000000..1900d415 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetFontVariantsImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.model.AppFont +import com.artemchep.keyguard.common.usecase.GetFontVariants +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.DirectDI + +class GetFontVariantsImpl() : GetFontVariants { + constructor(directDI: DirectDI) : this() + + private val variants = mutableListOf().apply { + this += null + this += AppFont.entries + } + + override fun invoke(): Flow> = flowOf(variants) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetGeneratorHistoryImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetGeneratorHistoryImpl.kt new file mode 100644 index 00000000..c27c3bbc --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetGeneratorHistoryImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.android.downloader.journal.GeneratorHistoryRepository +import com.artemchep.keyguard.common.usecase.GetGeneratorHistory +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetGeneratorHistoryImpl( + generatorHistoryRepository: GeneratorHistoryRepository, +) : GetGeneratorHistory { + private val sharedFlow = generatorHistoryRepository.get() + + constructor(directDI: DirectDI) : this( + generatorHistoryRepository = directDI.instance(), + ) + + override fun invoke() = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetGravatarUrlImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetGravatarUrlImpl.kt new file mode 100644 index 00000000..dda38af7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetGravatarUrlImpl.kt @@ -0,0 +1,42 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.service.crypto.CryptoGenerator +import com.artemchep.keyguard.common.usecase.GetGravatarUrl +import com.artemchep.keyguard.feature.favicon.GravatarUrl +import io.ktor.util.hex +import kotlinx.coroutines.Dispatchers +import org.kodein.di.DirectDI +import org.kodein.di.instance +import java.util.Locale + +class GetGravatarUrlImpl( + private val cryptoGenerator: CryptoGenerator, +) : GetGravatarUrl { + private val emailPlusAddressingRegex = "\\+.+(?=@)".toRegex() + + constructor(directDI: DirectDI) : this( + cryptoGenerator = directDI.instance(), + ) + + override fun invoke( + email: String, + ): IO = ioEffect(Dispatchers.Default) { + val emailHash = run { + // https://en.gravatar.com/site/implement/hash/ + val sanitizedEmail = transformEmail(email) + val sanitizedEmailBytes = sanitizedEmail.toByteArray() + cryptoGenerator.hashMd5(sanitizedEmailBytes) + .let(::hex) + } + val gravatarUrl = "https://www.gravatar.com/avatar/$emailHash?s=200&r=pg&d=404" + GravatarUrl(gravatarUrl) + } + + private fun transformEmail(email: String): String = email + .trim() + .replace(emailPlusAddressingRegex, "") + .lowercase(Locale.ENGLISH) + +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetJustDeleteMeByUrlImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetJustDeleteMeByUrlImpl.kt new file mode 100644 index 00000000..596b0cdb --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetJustDeleteMeByUrlImpl.kt @@ -0,0 +1,54 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.service.justdeleteme.JustDeleteMeService +import com.artemchep.keyguard.common.service.justdeleteme.JustDeleteMeServiceInfo +import com.artemchep.keyguard.common.usecase.GetJustDeleteMeByUrl +import io.ktor.http.Url +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetJustDeleteMeByUrlImpl( + private val justDeleteMeService: JustDeleteMeService, +) : GetJustDeleteMeByUrl { + constructor(directDI: DirectDI) : this( + justDeleteMeService = directDI.instance(), + ) + + override fun invoke( + url: String, + ): IO = justDeleteMeService.get() + .effectMap { list -> + match(url, list) + } + + fun match(url: String, list: List) = kotlin.run { + val host = parseHost(url) + ?: return@run null + val result = list + .firstOrNull { host in it.domains } + result + } + + private fun parseHost(url: String) = if ( + url.startsWith("http://") || + url.startsWith("https://") + ) { + val parsedUri = kotlin.runCatching { + Url(url) + }.getOrElse { + // can not get the domain + null + } + parsedUri + ?.host + // The "www" subdomain is ignored in the database, however + // it's only "www". Other subdomains, such as "photos", + // should be respected. + ?.removePrefix("www.") + } else { + // can not get the domain + null + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetKeepScreenOnImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetKeepScreenOnImpl.kt new file mode 100644 index 00000000..72fc2469 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetKeepScreenOnImpl.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetKeepScreenOn +import kotlinx.coroutines.flow.distinctUntilChanged +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetKeepScreenOnImpl( + settingsReadRepository: SettingsReadRepository, +) : GetKeepScreenOn { + private val sharedFlow = settingsReadRepository.getKeepScreenOn() + .distinctUntilChanged() + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke() = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetLocaleImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetLocaleImpl.kt new file mode 100644 index 00000000..95a87487 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetLocaleImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetLocale +import kotlinx.coroutines.flow.Flow +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetLocaleImpl( + private val settingsReadRepository: SettingsReadRepository, +) : GetLocale { + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke(): Flow = settingsReadRepository + .getLocale() +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetLocaleVariantsImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetLocaleVariantsImpl.kt new file mode 100644 index 00000000..a4363a04 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetLocaleVariantsImpl.kt @@ -0,0 +1,47 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.usecase.GetLocaleVariants +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.DirectDI + +class GetLocaleVariantsImpl() : GetLocaleVariants { + constructor(directDI: DirectDI) : this() + + private val variants = listOf( + null, + "af-ZA", + "ca-ES", + "de-DE", + "es-ES", + "ja-JP", + "no-NO", + "pt-PT", + "sr-SP", + "uk-UA", + "zh-TW", + "ar-SA", + "cs-CZ", + "el-GR", + "fr-FR", + "it-IT", + "ko-KR", + "pl-PL", + "ro-RO", + "sv-SE", + "vi-VN", + "da-DK", + "en-US", + "en-GB", + "fi-FI", + "hu-HU", + "iw-IL", + "nl-NL", + "pt-BR", + "ru-RU", + "tr-TR", + "zh-CN", + ) + + override fun invoke(): Flow> = flowOf(variants) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetMarkdownImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetMarkdownImpl.kt new file mode 100644 index 00000000..58ee3576 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetMarkdownImpl.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetMarkdown +import kotlinx.coroutines.flow.distinctUntilChanged +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetMarkdownImpl( + settingsReadRepository: SettingsReadRepository, +) : GetMarkdown { + private val sharedFlow = settingsReadRepository.getMarkdown() + .distinctUntilChanged() + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke() = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl.kt new file mode 100644 index 00000000..8970f45c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetNavAnimationImpl.kt @@ -0,0 +1,31 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.model.NavAnimation +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetNavAnimation +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.stateIn +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetNavAnimationImpl( + settingsReadRepository: SettingsReadRepository, +) : GetNavAnimation { + private val sharedFlow = settingsReadRepository.getNavAnimation() + .map { it ?: NavAnimation.default } + .distinctUntilChanged() + .stateIn( + scope = GlobalScope, + started = SharingStarted.Eagerly, + initialValue = NavAnimation.default, + ) + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke() = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetNavAnimationVariantsImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetNavAnimationVariantsImpl.kt new file mode 100644 index 00000000..f5bf5efb --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetNavAnimationVariantsImpl.kt @@ -0,0 +1,15 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.model.NavAnimation +import com.artemchep.keyguard.common.usecase.GetNavAnimationVariants +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.DirectDI + +class GetNavAnimationVariantsImpl() : GetNavAnimationVariants { + constructor(directDI: DirectDI) : this() + + private val variants = NavAnimation.entries + + override fun invoke(): Flow> = flowOf(variants) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetNavLabelImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetNavLabelImpl.kt new file mode 100644 index 00000000..2e8bbb0c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetNavLabelImpl.kt @@ -0,0 +1,26 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetNavLabel +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.stateIn +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetNavLabelImpl( + settingsReadRepository: SettingsReadRepository, +) : GetNavLabel { + private val sharedFlow = settingsReadRepository.getNavLabel() + .stateIn( + scope = GlobalScope, + started = SharingStarted.Eagerly, + initialValue = true, + ) + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke() = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetOnboardingLastVisitInstantImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetOnboardingLastVisitInstantImpl.kt new file mode 100644 index 00000000..ea9e2700 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetOnboardingLastVisitInstantImpl.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetOnboardingLastVisitInstant +import kotlinx.coroutines.flow.distinctUntilChanged +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetOnboardingLastVisitInstantImpl( + settingsReadRepository: SettingsReadRepository, +) : GetOnboardingLastVisitInstant { + private val sharedFlow = settingsReadRepository.getOnboardingLastVisitInstant() + .distinctUntilChanged() + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke() = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetPasswordImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetPasswordImpl.kt new file mode 100644 index 00000000..4c56843e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetPasswordImpl.kt @@ -0,0 +1,115 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.model.GeneratorContext +import com.artemchep.keyguard.common.model.PasswordGeneratorConfig +import com.artemchep.keyguard.common.service.crypto.CryptoGenerator +import com.artemchep.keyguard.common.usecase.GetPassphrase +import com.artemchep.keyguard.common.usecase.GetPassword +import kotlinx.coroutines.Dispatchers +import org.kodein.di.DirectDI +import org.kodein.di.instance +import java.security.SecureRandom +import kotlin.math.absoluteValue + +class GetPasswordImpl( + private val cryptoGenerator: CryptoGenerator, + private val getPassphrase: GetPassphrase, +) : GetPassword { + private val secureRandom by lazy { + SecureRandom() + } + + constructor(directDI: DirectDI) : this( + cryptoGenerator = directDI.instance(), + getPassphrase = directDI.instance(), + ) + + override fun invoke( + context: GeneratorContext, + config: PasswordGeneratorConfig, + ): IO = when (config) { + is PasswordGeneratorConfig.Password -> ioEffect(Dispatchers.Default) { + if ( + config.length < 1 || + config.allChars.isEmpty() + ) { + null + } else { + val output = mutableListOf() + + var curUppercaseMin = 0L + var curLowercaseMin = 0L + var curNumbersMin = 0L + var curSymbolsMin = 0L + do { + var should = false + // uppercase + if (curUppercaseMin < config.uppercaseMin) { + curUppercaseMin++ + should = true + // If possible, then add the symbol. + if (config.uppercaseChars.isNotEmpty()) { + output += config.uppercaseChars.random() + } + } + // lowercase + if (curLowercaseMin < config.lowercaseMin) { + curLowercaseMin++ + should = true + // If possible, then add the symbol. + if (config.lowercaseChars.isNotEmpty()) { + output += config.lowercaseChars.random() + } + } + // numbers + if (curNumbersMin < config.numbersMin) { + curNumbersMin++ + should = true + // If possible, then add the symbol. + if (config.numberChars.isNotEmpty()) { + output += config.numberChars.random() + } + } + // symbols + if (curSymbolsMin < config.symbolsMin) { + curSymbolsMin++ + should = true + // If possible, then add the symbol. + if (config.symbolChars.isNotEmpty()) { + output += config.symbolChars.random() + } + } + } while (should) + + repeat(config.length - output.size) { + output += config.allChars.random() + } + + val r = output + .take(config.length) + .shuffled(secureRandom) + .toCharArray() + String(r) + } + } + + is PasswordGeneratorConfig.Passphrase -> getPassphrase(config) + is PasswordGeneratorConfig.EmailRelay -> { + val cfg = config.config.data + config.emailRelay.generate(context, cfg) + } + + is PasswordGeneratorConfig.Composite -> invoke(context, config.config) + .map { raw -> + raw?.let { config.transform(it) } + } + } + + private fun List.random() = kotlin.run { + val r = cryptoGenerator.random().absoluteValue + this[r.rem(this.size)] + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetProductsImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetProductsImpl.kt new file mode 100644 index 00000000..791a6b82 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetProductsImpl.kt @@ -0,0 +1,16 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.subscription.SubscriptionService +import com.artemchep.keyguard.common.usecase.GetProducts +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetProductsImpl( + private val subscriptionService: SubscriptionService, +) : GetProducts { + constructor(directDI: DirectDI) : this( + subscriptionService = directDI.instance(), + ) + + override fun invoke() = subscriptionService.products() +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetScreenStateImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetScreenStateImpl.kt new file mode 100644 index 00000000..937778b8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetScreenStateImpl.kt @@ -0,0 +1,16 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.state.StateRepository +import com.artemchep.keyguard.common.usecase.GetScreenState +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetScreenStateImpl( + private val stateRepository: StateRepository, +) : GetScreenState { + constructor(directDI: DirectDI) : this( + stateRepository = directDI.instance(), + ) + + override fun invoke(key: String) = stateRepository.get(key) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetShouldRequestAppReviewImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetShouldRequestAppReviewImpl.kt new file mode 100644 index 00000000..c30fa7f5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetShouldRequestAppReviewImpl.kt @@ -0,0 +1,22 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.usecase.GetCipherOpenedCount +import com.artemchep.keyguard.common.usecase.GetShouldRequestAppReview +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetShouldRequestAppReviewImpl( + private val getCipherOpenedCount: GetCipherOpenedCount, +) : GetShouldRequestAppReview { + constructor(directDI: DirectDI) : this( + getCipherOpenedCount = directDI.instance(), + ) + + // We should ask for the app review after a user opens or fills + // a lot of the ciphers. Such a user is familiar enough with the + // app to give it a full (and hopefully nice) review. + override fun invoke(): Flow = getCipherOpenedCount() + .map { it > 100 } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetSubscriptionsImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetSubscriptionsImpl.kt new file mode 100644 index 00000000..895db476 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetSubscriptionsImpl.kt @@ -0,0 +1,16 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.subscription.SubscriptionService +import com.artemchep.keyguard.common.usecase.GetSubscriptions +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetSubscriptionsImpl( + private val subscriptionService: SubscriptionService, +) : GetSubscriptions { + constructor(directDI: DirectDI) : this( + subscriptionService = directDI.instance(), + ) + + override fun invoke() = subscriptionService.subscriptions() +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetThemeImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetThemeImpl.kt new file mode 100644 index 00000000..513659ef --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetThemeImpl.kt @@ -0,0 +1,22 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.model.AppTheme +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetTheme +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.distinctUntilChanged +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetThemeImpl( + settingsReadRepository: SettingsReadRepository, +) : GetTheme { + private val sharedFlow = settingsReadRepository.getTheme() + .distinctUntilChanged() + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke(): Flow = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetThemeUseAmoledDarkImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetThemeUseAmoledDarkImpl.kt new file mode 100644 index 00000000..a49c9621 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetThemeUseAmoledDarkImpl.kt @@ -0,0 +1,21 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetThemeUseAmoledDark +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.distinctUntilChanged +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetThemeUseAmoledDarkImpl( + settingsReadRepository: SettingsReadRepository, +) : GetThemeUseAmoledDark { + private val sharedFlow = settingsReadRepository.getThemeUseAmoledDark() + .distinctUntilChanged() + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke(): Flow = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetThemeVariantsImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetThemeVariantsImpl.kt new file mode 100644 index 00000000..966827d6 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetThemeVariantsImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.model.AppTheme +import com.artemchep.keyguard.common.usecase.GetThemeVariants +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.DirectDI + +class GetThemeVariantsImpl() : GetThemeVariants { + constructor(directDI: DirectDI) : this() + + private val variants = mutableListOf().apply { + this += null + this += AppTheme.entries + } + + override fun invoke(): Flow> = flowOf(variants) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetTotpCodeImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetTotpCodeImpl.kt new file mode 100644 index 00000000..9cf4605b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetTotpCodeImpl.kt @@ -0,0 +1,46 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.model.TotpCode +import com.artemchep.keyguard.common.model.TotpToken +import com.artemchep.keyguard.common.service.totp.TotpService +import com.artemchep.keyguard.common.usecase.GetTotpCode +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flow +import kotlinx.datetime.Clock +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.time.ExperimentalTime + +class GetTotpCodeImpl( + private val totpService: TotpService, +) : GetTotpCode { + constructor(directDI: DirectDI) : this( + totpService = directDI.instance(), + ) + + override fun invoke( + token: TotpToken, + ): Flow = flow { + while (true) { + val now = Clock.System.now() + val code = totpService.generate( + token = token, + timestamp = now, + ) + emit(code) + when (val counter = code.counter) { + is TotpCode.TimeBasedCounter -> { + // Wait for the code to expire, and then + // regenerate it. + val dt = counter.expiration - Clock.System.now() + delay(dt) + } + + is TotpCode.IncrementBasedCounter -> { + break + } + } + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetUseExternalBrowserImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetUseExternalBrowserImpl.kt new file mode 100644 index 00000000..ef6e948a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetUseExternalBrowserImpl.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetUseExternalBrowser +import kotlinx.coroutines.flow.distinctUntilChanged +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetUseExternalBrowserImpl( + settingsReadRepository: SettingsReadRepository, +) : GetUseExternalBrowser { + private val sharedFlow = settingsReadRepository.getUseExternalBrowser() + .distinctUntilChanged() + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke() = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterRebootImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterRebootImpl.kt new file mode 100644 index 00000000..fa324e99 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterRebootImpl.kt @@ -0,0 +1,30 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetVaultLockAfterReboot +import com.artemchep.keyguard.common.usecase.GetVaultPersist +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.distinctUntilChanged +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetVaultLockAfterRebootImpl( + settingsReadRepository: SettingsReadRepository, + getVaultPersist: GetVaultPersist, +) : GetVaultLockAfterReboot { + private val sharedFlow = combine( + getVaultPersist(), + settingsReadRepository.getVaultLockAfterReboot(), + ) { persist, lockAfterReboot -> + lockAfterReboot || !persist + } + .distinctUntilChanged() + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + getVaultPersist = directDI.instance(), + ) + + override fun invoke(): Flow = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl.kt new file mode 100644 index 00000000..3820a557 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterScreenOffImpl.kt @@ -0,0 +1,29 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetVaultLockAfterScreenOff +import com.artemchep.keyguard.common.usecase.GetVaultPersist +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.distinctUntilChanged +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetVaultLockAfterScreenOffImpl( + settingsReadRepository: SettingsReadRepository, + getVaultPersist: GetVaultPersist, +) : GetVaultLockAfterScreenOff { + private val sharedFlow = combine( + getVaultPersist(), + settingsReadRepository.getVaultScreenLock(), + ) { persist, lockAfterScreenOff -> + lockAfterScreenOff && !persist + } + .distinctUntilChanged() + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + getVaultPersist = directDI.instance(), + ) + + override fun invoke() = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterTimeoutImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterTimeoutImpl.kt new file mode 100644 index 00000000..da92b0e7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterTimeoutImpl.kt @@ -0,0 +1,30 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetVaultLockAfterTimeout +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.time.Duration + +class GetVaultLockAfterTimeoutImpl( + settingsReadRepository: SettingsReadRepository, +) : GetVaultLockAfterTimeout { + companion object { + private val DEFAULT_DURATION = with(Duration) { 5L.minutes } + } + + private val sharedFlow = settingsReadRepository.getVaultTimeout() + .map { duration -> + duration ?: DEFAULT_DURATION + } + .distinctUntilChanged() + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke(): Flow = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterTimeoutVariantsImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterTimeoutVariantsImpl.kt new file mode 100644 index 00000000..cb2f1f55 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetVaultLockAfterTimeoutVariantsImpl.kt @@ -0,0 +1,29 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.usecase.GetVaultLockAfterTimeoutVariants +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.DirectDI +import kotlin.time.Duration + +class GetVaultLockAfterTimeoutVariantsImpl() : GetVaultLockAfterTimeoutVariants { + companion object { + private val DEFAULT_DURATION_VARIANTS + get() = with(Duration) { + listOf( + ZERO, + 1L.minutes, + 5L.minutes, + 15L.minutes, + 30L.minutes, + 1L.hours, + 4L.hours, + INFINITE, + ) + } + } + + constructor(directDI: DirectDI) : this() + + override fun invoke(): Flow> = flowOf(DEFAULT_DURATION_VARIANTS) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetVaultPersistImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetVaultPersistImpl.kt new file mode 100644 index 00000000..3ff294fe --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetVaultPersistImpl.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetVaultPersist +import kotlinx.coroutines.flow.Flow +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetVaultPersistImpl( + settingsReadRepository: SettingsReadRepository, +) : GetVaultPersist { + private val sharedFlow = settingsReadRepository + .getVaultPersist() + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke(): Flow = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl.kt new file mode 100644 index 00000000..59ea43a3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetVaultSessionImpl.kt @@ -0,0 +1,79 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.model.MasterSession +import com.artemchep.keyguard.common.service.vault.KeyReadWriteRepository +import com.artemchep.keyguard.common.service.vault.SessionReadWriteRepository +import com.artemchep.keyguard.common.usecase.GetVaultSession +import com.artemchep.keyguard.core.session.usecase.createSubDi +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.flow.shareIn +import kotlinx.datetime.Clock +import org.kodein.di.Copy +import org.kodein.di.DI +import org.kodein.di.DirectDI +import org.kodein.di.instance +import org.kodein.di.subDI + +class GetVaultSessionImpl( + private val di: DI, + private val sessionReadWriteRepository: SessionReadWriteRepository, + private val keyReadWriteRepository: KeyReadWriteRepository, +) : GetVaultSession { + companion object { + private const val TAG = "GetVaultSession" + } + + constructor(directDI: DirectDI) : this( + di = directDI.di, + sessionReadWriteRepository = directDI.instance(), + keyReadWriteRepository = directDI.instance(), + ) + + private val sharedFlow = sessionReadWriteRepository.get() + .flatMapLatest { currentSession -> + if (currentSession != null) { + flowOf(currentSession) + } else { + keyReadWriteRepository.get() + .map { persistedSession -> + val newSession = if (persistedSession != null) { + val masterKey = persistedSession.masterKey + val moduleDi = + DI.Module("lalala") { + createSubDi( + masterKey = masterKey, + ) + } + val subDi = + subDI(di, false, Copy.None) { + import(moduleDi) + } + MasterSession.Key( + masterKey = masterKey, + di = subDi, + origin = MasterSession.Key.Persisted, + createdAt = Clock.System.now(), + ) + } else { + MasterSession.Empty() + } + newSession + } + .onEach { + sessionReadWriteRepository.put(it) + } + } + } + .shareIn(GlobalScope, SharingStarted.WhileSubscribed(), replay = 1) + + override val valueOrNull: MasterSession? + get() = sharedFlow.replayCache.firstOrNull() + + override fun invoke(): Flow = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetWebsiteIconsImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetWebsiteIconsImpl.kt new file mode 100644 index 00000000..01b6f176 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetWebsiteIconsImpl.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetWebsiteIcons +import kotlinx.coroutines.flow.distinctUntilChanged +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetWebsiteIconsImpl( + settingsReadRepository: SettingsReadRepository, +) : GetWebsiteIcons { + private val sharedFlow = settingsReadRepository.getWebsiteIcons() + .distinctUntilChanged() + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke() = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetWriteAccessImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetWriteAccessImpl.kt new file mode 100644 index 00000000..b34a7c3f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetWriteAccessImpl.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetWriteAccess +import kotlinx.coroutines.flow.distinctUntilChanged +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetWriteAccessImpl( + settingsReadRepository: SettingsReadRepository, +) : GetWriteAccess { + private val sharedFlow = settingsReadRepository.getWriteAccess() + .distinctUntilChanged() + + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke() = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/MessageHub.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/MessageHub.kt new file mode 100644 index 00000000..24e067dc --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/MessageHub.kt @@ -0,0 +1,52 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.model.ToastMessage +import com.artemchep.keyguard.common.usecase.MessageHub +import com.artemchep.keyguard.common.usecase.ShowMessage +import org.kodein.di.DirectDI +import java.util.UUID + +class MessageHubImpl() : MessageHub, ShowMessage { + constructor(directDI: DirectDI) : this() + + private val state = mutableListOf() + + private class Entry( + val id: String, + val key: String, + val onMessage: (ToastMessage) -> Unit, + ) + + override fun register( + key: String, + onMessage: (ToastMessage) -> Unit, + ): () -> Unit { + val id = UUID.randomUUID().toString() + val entry = Entry( + id = id, + key = key, + onMessage = onMessage, + ) + + state += entry + return { + state -= entry + } + } + + override fun copy( + value: ToastMessage, + target: String?, + ) { + val handler = kotlin.run { + if (target != null) { + return@run state + .maxByOrNull { + it.key.commonPrefixWith(target).length + } + } + null + } ?: state.firstOrNull() + handler?.onMessage?.invoke(value) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PasskeyTargetCheck.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PasskeyTargetCheck.kt new file mode 100644 index 00000000..204788d5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PasskeyTargetCheck.kt @@ -0,0 +1,97 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.service.tld.TldService +import com.artemchep.keyguard.common.usecase.PasskeyTarget +import com.artemchep.keyguard.common.usecase.PasskeyTargetCheck +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class PasskeyTargetCheckImpl( + private val tldService: TldService, +) : PasskeyTargetCheck { + constructor(directDI: DirectDI) : this( + tldService = directDI.instance(), + ) + + override fun invoke( + credential: DSecret.Login.Fido2Credentials, + target: PasskeyTarget, + ): IO = ioEffect { + // Check that the credential is mentioned in the request. + // + // If relying party does not provide us a list of credentials to choose + // from, then the credential must be marked as 'discoverable'. + // + // See: + // https://www.w3.org/TR/webauthn-2/#discoverable-credential + if (target.allowedCredentials != null) { + val matchesAllowedCredentials = target.allowedCredentials + .any { it.credentialId == credential.credentialId } + if (!matchesAllowedCredentials) { + return@ioEffect false + } + } else if (!credential.discoverable) { + return@ioEffect false + } + + val passkeyRpId = credential.rpId + val requestRpId = target.rpId + validatePasskeyRpId( + passkeyRpId = passkeyRpId, + requestRpId = requestRpId, + ) + } + + // See: + // https://webauthn-doc.spomky-labs.com/prerequisites/the-relying-party#how-to-determine-the-relying-party-id + private suspend fun validatePasskeyRpId( + passkeyRpId: String?, + requestRpId: String?, + ): Boolean { + // Fast path: + // if the relying party is the exact match or if + // relying party is not specified on both the passkey and the + // request. + if (passkeyRpId == requestRpId) { + return true + } + if (passkeyRpId == null || requestRpId == null) { + return false + } + // Relaying party ID must point for a + // valid domain. + val canMatchSubdomain = true + if (canMatchSubdomain) { + return isSubdomain( + domain = passkeyRpId, + request = requestRpId, + ) + } + return false + } +} + +fun isSubdomain( + domain: String, + request: String, +): Boolean { + val domainParts = domain.split('.') + val requestParts = request.split('.') + + val offset = requestParts.size - domainParts.size + if (offset < 0) { + return false + } + + return domainParts.withIndex().all { (passkeyRpIdIndex, passkeyRpIdPart) -> + val requestRpIdIndex = passkeyRpIdIndex + offset + val requestRpIdPart = requestParts[requestRpIdIndex] + requestRpIdPart == passkeyRpIdPart + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAllowScreenshotsImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAllowScreenshotsImpl.kt new file mode 100644 index 00000000..b05ec0a8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAllowScreenshotsImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutAllowScreenshots +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutAllowScreenshotsImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutAllowScreenshots { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(concealFields: Boolean): IO = settingsReadWriteRepository + .setAllowScreenshots(concealFields) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAllowTwoPanelLayoutInLandscapeImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAllowTwoPanelLayoutInLandscapeImpl.kt new file mode 100644 index 00000000..e9d206e7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAllowTwoPanelLayoutInLandscapeImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutAllowTwoPanelLayoutInLandscape +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutAllowTwoPanelLayoutInLandscapeImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutAllowTwoPanelLayoutInLandscape { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(allow: Boolean): IO = settingsReadWriteRepository + .setAllowTwoPanelLayoutInLandscape(allow) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAllowTwoPanelLayoutInPortraitImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAllowTwoPanelLayoutInPortraitImpl.kt new file mode 100644 index 00000000..9b1aab06 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAllowTwoPanelLayoutInPortraitImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutAllowTwoPanelLayoutInPortrait +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutAllowTwoPanelLayoutInPortraitImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutAllowTwoPanelLayoutInPortrait { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(allow: Boolean): IO = settingsReadWriteRepository + .setAllowTwoPanelLayoutInPortrait(allow) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAppIconsImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAppIconsImpl.kt new file mode 100644 index 00000000..1aa42c1b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAppIconsImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutAppIcons +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutAppIconsImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutAppIcons { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(appIcons: Boolean): IO = settingsReadWriteRepository + .setAppIcons(appIcons) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAutofillCopyTotpImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAutofillCopyTotpImpl.kt new file mode 100644 index 00000000..b7b36b4d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAutofillCopyTotpImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutAutofillCopyTotp +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutAutofillCopyTotpImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutAutofillCopyTotp { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(copyTotp: Boolean): IO = settingsReadWriteRepository + .setAutofillCopyTotp(copyTotp) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAutofillInlineSuggestionsImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAutofillInlineSuggestionsImpl.kt new file mode 100644 index 00000000..68038ff1 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAutofillInlineSuggestionsImpl.kt @@ -0,0 +1,17 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutAutofillInlineSuggestionsImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : com.artemchep.keyguard.common.usecase.PutAutofillInlineSuggestions { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(inlineSuggestions: Boolean): IO = settingsReadWriteRepository + .setAutofillInlineSuggestions(inlineSuggestions) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAutofillManualSelectionImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAutofillManualSelectionImpl.kt new file mode 100644 index 00000000..ee880d4c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAutofillManualSelectionImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutAutofillManualSelection +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutAutofillManualSelectionImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutAutofillManualSelection { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(manualSelection: Boolean): IO = settingsReadWriteRepository + .setAutofillManualSelection(manualSelection) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAutofillRespectAutofillOffImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAutofillRespectAutofillOffImpl.kt new file mode 100644 index 00000000..4a3917f4 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAutofillRespectAutofillOffImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutAutofillRespectAutofillOff +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutAutofillRespectAutofillOffImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutAutofillRespectAutofillOff { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(respectAutofillOff: Boolean): IO = settingsReadWriteRepository + .setAutofillRespectAutofillOff(respectAutofillOff) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAutofillSaveRequestImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAutofillSaveRequestImpl.kt new file mode 100644 index 00000000..d36589db --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAutofillSaveRequestImpl.kt @@ -0,0 +1,30 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.GetCanWrite +import com.artemchep.keyguard.common.usecase.PutAutofillSaveRequest +import com.artemchep.keyguard.common.usecase.premium +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutAutofillSaveRequestImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, + private val getCanWrite: GetCanWrite, +) : PutAutofillSaveRequest { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + getCanWrite = directDI.instance(), + ) + + override fun invoke(saveRequest: Boolean): IO = settingsReadWriteRepository + .setAutofillSaveRequest(saveRequest) + .premium( + getPurchased = getCanWrite, + ) { + // Enabling a save request feature requires write access. + @Suppress("UnnecessaryVariable") + val needsPremium = saveRequest + needsPremium + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAutofillSaveUriImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAutofillSaveUriImpl.kt new file mode 100644 index 00000000..de087d93 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutAutofillSaveUriImpl.kt @@ -0,0 +1,30 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.GetCanWrite +import com.artemchep.keyguard.common.usecase.PutAutofillSaveUri +import com.artemchep.keyguard.common.usecase.premium +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutAutofillSaveUriImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, + private val getCanWrite: GetCanWrite, +) : PutAutofillSaveUri { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + getCanWrite = directDI.instance(), + ) + + override fun invoke(saveUri: Boolean): IO = settingsReadWriteRepository + .setAutofillSaveUri(saveUri) + .premium( + getPurchased = getCanWrite, + ) { + // Enabling a save request feature requires write access. + @Suppress("UnnecessaryVariable") + val needsPremium = saveUri + needsPremium + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutBiometricTimeoutImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutBiometricTimeoutImpl.kt new file mode 100644 index 00000000..9ab80176 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutBiometricTimeoutImpl.kt @@ -0,0 +1,19 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutBiometricTimeout +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.time.Duration + +class PutBiometricTimeoutImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutBiometricTimeout { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(duration: Duration?): IO = settingsReadWriteRepository + .setBiometricTimeout(duration) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutCachePremiumImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutCachePremiumImpl.kt new file mode 100644 index 00000000..7daa5458 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutCachePremiumImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutCachePremium +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutCachePremiumImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutCachePremium { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(premium: Boolean): IO = settingsReadWriteRepository + .setCachePremium(premium) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutCheckPwnedPasswordsImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutCheckPwnedPasswordsImpl.kt new file mode 100644 index 00000000..869c9dbb --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutCheckPwnedPasswordsImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutCheckPwnedPasswords +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutCheckPwnedPasswordsImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutCheckPwnedPasswords { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(checkPwnedPasswords: Boolean): IO = settingsReadWriteRepository + .setCheckPwnedPasswords(checkPwnedPasswords) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutCheckPwnedServicesImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutCheckPwnedServicesImpl.kt new file mode 100644 index 00000000..8de0a87b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutCheckPwnedServicesImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutCheckPwnedServices +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutCheckPwnedServicesImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutCheckPwnedServices { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(checkPwnedServices: Boolean): IO = settingsReadWriteRepository + .setCheckPwnedServices(checkPwnedServices) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutCheckTwoFAImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutCheckTwoFAImpl.kt new file mode 100644 index 00000000..84dfbd7a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutCheckTwoFAImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutCheckTwoFA +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutCheckTwoFAImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutCheckTwoFA { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(checkTwoFA: Boolean): IO = settingsReadWriteRepository + .setCheckTwoFA(checkTwoFA) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutClipboardAutoClearImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutClipboardAutoClearImpl.kt new file mode 100644 index 00000000..346d80f6 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutClipboardAutoClearImpl.kt @@ -0,0 +1,19 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutClipboardAutoClear +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.time.Duration + +class PutClipboardAutoClearImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutClipboardAutoClear { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(duration: Duration?): IO = settingsReadWriteRepository + .setClipboardClearDelay(duration) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutClipboardAutoRefreshImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutClipboardAutoRefreshImpl.kt new file mode 100644 index 00000000..676afb08 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutClipboardAutoRefreshImpl.kt @@ -0,0 +1,19 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutClipboardAutoRefresh +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.time.Duration + +class PutClipboardAutoRefreshImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutClipboardAutoRefresh { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(duration: Duration?): IO = settingsReadWriteRepository + .setClipboardUpdateDuration(duration) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutColorsImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutColorsImpl.kt new file mode 100644 index 00000000..8c858e77 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutColorsImpl.kt @@ -0,0 +1,19 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.AppColors +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutColors +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutColorsImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutColors { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(colors: AppColors?): IO = settingsReadWriteRepository + .setColors(colors) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutConcealFieldsImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutConcealFieldsImpl.kt new file mode 100644 index 00000000..dcf27224 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutConcealFieldsImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutConcealFields +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutConcealFieldsImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutConcealFields { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(concealFields: Boolean): IO = settingsReadWriteRepository + .setConcealFields(concealFields) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutDebugPremiumImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutDebugPremiumImpl.kt new file mode 100644 index 00000000..06fc9bc2 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutDebugPremiumImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutDebugPremium +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutDebugPremiumImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutDebugPremium { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(premium: Boolean): IO = settingsReadWriteRepository + .setDebugPremium(premium) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutDebugScreenDelayImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutDebugScreenDelayImpl.kt new file mode 100644 index 00000000..0a0a87a7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutDebugScreenDelayImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutDebugScreenDelay +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutDebugScreenDelayImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutDebugScreenDelay { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(screenDelay: Boolean): IO = settingsReadWriteRepository + .setDebugScreenDelay(screenDelay) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutFontImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutFontImpl.kt new file mode 100644 index 00000000..f735d2fe --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutFontImpl.kt @@ -0,0 +1,19 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.AppFont +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutFont +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutFontImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutFont { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(font: AppFont?): IO = settingsReadWriteRepository + .setFont(font) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutKeepScreenOnImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutKeepScreenOnImpl.kt new file mode 100644 index 00000000..c4878bd7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutKeepScreenOnImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutKeepScreenOn +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutKeepScreenOnImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutKeepScreenOn { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(keepScreenOn: Boolean): IO = settingsReadWriteRepository + .setKeepScreenOn(keepScreenOn) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutLocaleImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutLocaleImpl.kt new file mode 100644 index 00000000..90bd3e87 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutLocaleImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutLocale +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutLocaleImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutLocale { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(locale: String?): IO = settingsReadWriteRepository + .setLocale(locale) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutMarkdownImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutMarkdownImpl.kt new file mode 100644 index 00000000..ffebb8fa --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutMarkdownImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutMarkdown +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutMarkdownImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutMarkdown { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(markdown: Boolean): IO = settingsReadWriteRepository + .setMarkdown(markdown) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutNavAnimationImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutNavAnimationImpl.kt new file mode 100644 index 00000000..436747c3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutNavAnimationImpl.kt @@ -0,0 +1,19 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.NavAnimation +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutNavAnimation +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutNavAnimationImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutNavAnimation { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(navAnimation: NavAnimation?): IO = settingsReadWriteRepository + .setNavAnimation(navAnimation) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutNavLabelImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutNavLabelImpl.kt new file mode 100644 index 00000000..1262d8d7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutNavLabelImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutNavLabel +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutNavLabelImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutNavLabel { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(visible: Boolean): IO = settingsReadWriteRepository + .setNavLabel(visible) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutOnboardingLastVisitInstantImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutOnboardingLastVisitInstantImpl.kt new file mode 100644 index 00000000..0335c2cd --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutOnboardingLastVisitInstantImpl.kt @@ -0,0 +1,19 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutOnboardingLastVisitInstant +import kotlinx.datetime.Instant +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutOnboardingLastVisitInstantImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutOnboardingLastVisitInstant { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(instant: Instant): IO = settingsReadWriteRepository + .setOnboardingLastVisitInstant(instant) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutScreenStateImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutScreenStateImpl.kt new file mode 100644 index 00000000..18709a09 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutScreenStateImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.state.StateRepository +import com.artemchep.keyguard.common.usecase.PutScreenState +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutScreenStateImpl( + private val stateRepository: StateRepository, +) : PutScreenState { + constructor(directDI: DirectDI) : this( + stateRepository = directDI.instance(), + ) + + override fun invoke(key: String, state: Map): IO = stateRepository + .put(key, state) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutThemeImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutThemeImpl.kt new file mode 100644 index 00000000..d725a3d8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutThemeImpl.kt @@ -0,0 +1,19 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.AppTheme +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutTheme +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutThemeImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutTheme { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(theme: AppTheme?): IO = settingsReadWriteRepository + .setTheme(theme) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutThemeUseAmoledDarkImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutThemeUseAmoledDarkImpl.kt new file mode 100644 index 00000000..0797ad81 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutThemeUseAmoledDarkImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutThemeUseAmoledDark +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutThemeUseAmoledDarkImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutThemeUseAmoledDark { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(useAmoledDark: Boolean): IO = settingsReadWriteRepository + .setThemeUseAmoledDark(useAmoledDark) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutUserExternalBrowserImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutUserExternalBrowserImpl.kt new file mode 100644 index 00000000..280e6476 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutUserExternalBrowserImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutUseExternalBrowser +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutUserExternalBrowserImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutUseExternalBrowser { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(useExternalBrowser: Boolean): IO = settingsReadWriteRepository + .setUseExternalBrowser(useExternalBrowser) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutVaultLockAfterRebootImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutVaultLockAfterRebootImpl.kt new file mode 100644 index 00000000..ed68981b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutVaultLockAfterRebootImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutVaultLockAfterReboot +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutVaultLockAfterRebootImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutVaultLockAfterReboot { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(enabled: Boolean): IO = settingsReadWriteRepository + .setVaultLockAfterReboot(enabled) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutVaultLockAfterScreenOffImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutVaultLockAfterScreenOffImpl.kt new file mode 100644 index 00000000..3929528d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutVaultLockAfterScreenOffImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutVaultLockAfterScreenOff +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutVaultLockAfterScreenOffImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutVaultLockAfterScreenOff { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(screenLock: Boolean): IO = settingsReadWriteRepository + .setVaultScreenLock(screenLock) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutVaultLockAfterTimeoutImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutVaultLockAfterTimeoutImpl.kt new file mode 100644 index 00000000..94df2cb4 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutVaultLockAfterTimeoutImpl.kt @@ -0,0 +1,19 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutVaultLockAfterTimeout +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.time.Duration + +class PutVaultLockAfterTimeoutImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutVaultLockAfterTimeout { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(duration: Duration?): IO = settingsReadWriteRepository + .setVaultTimeout(duration) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutVaultPersistImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutVaultPersistImpl.kt new file mode 100644 index 00000000..0c8199ce --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutVaultPersistImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutVaultPersist +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutVaultPersistImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutVaultPersist { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(enable: Boolean): IO = settingsReadWriteRepository + .setVaultPersist(enable) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl.kt new file mode 100644 index 00000000..f300d122 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutVaultSessionImpl.kt @@ -0,0 +1,21 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.model.MasterSession +import com.artemchep.keyguard.common.service.vault.SessionReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutVaultSession +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutVaultSessionImpl( + private val sessionReadWriteRepository: SessionReadWriteRepository, +) : PutVaultSession { + constructor(directDI: DirectDI) : this( + sessionReadWriteRepository = directDI.instance(), + ) + + override fun invoke(session: MasterSession): IO = ioEffect { + sessionReadWriteRepository.put(session) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutWebsiteIconsImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutWebsiteIconsImpl.kt new file mode 100644 index 00000000..b339d139 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutWebsiteIconsImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutWebsiteIcons +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutWebsiteIconsImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutWebsiteIcons { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(websiteIcons: Boolean): IO = settingsReadWriteRepository + .setWebsiteIcons(websiteIcons) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutWriteAccessImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutWriteAccessImpl.kt new file mode 100644 index 00000000..64c3f297 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/PutWriteAccessImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutWriteAccess +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutWriteAccessImpl( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutWriteAccess { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(writeAccess: Boolean): IO = settingsReadWriteRepository + .setWriteAccess(writeAccess) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/RemoveAttachmentImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/RemoveAttachmentImpl.kt new file mode 100644 index 00000000..695783b9 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/RemoveAttachmentImpl.kt @@ -0,0 +1,34 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.combine +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.model.RemoveAttachmentRequest +import com.artemchep.keyguard.common.service.download.DownloadService +import com.artemchep.keyguard.common.usecase.RemoveAttachment +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class RemoveAttachmentImpl( + private val downloadService: DownloadService, +) : RemoveAttachment { + companion object { + private const val THREAD_BUCKET_SIZE = 10 + } + + constructor(directDI: DirectDI) : this( + downloadService = directDI.instance(), + ) + + override fun invoke( + requests: List, + ): IO = requests + .map { request -> + downloadService.remove(request) + } + .combine(bucket = THREAD_BUCKET_SIZE) + .map { Unit } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/RemoveGeneratorHistoryByIdImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/RemoveGeneratorHistoryByIdImpl.kt new file mode 100644 index 00000000..a1738895 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/RemoveGeneratorHistoryByIdImpl.kt @@ -0,0 +1,17 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.android.downloader.journal.GeneratorHistoryRepository +import com.artemchep.keyguard.common.usecase.RemoveGeneratorHistoryById +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class RemoveGeneratorHistoryByIdImpl( + private val generatorHistoryRepository: GeneratorHistoryRepository, +) : RemoveGeneratorHistoryById { + constructor(directDI: DirectDI) : this( + generatorHistoryRepository = directDI.instance(), + ) + + override fun invoke(ids: Set) = generatorHistoryRepository + .removeByIds(ids) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/RemoveGeneratorHistoryImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/RemoveGeneratorHistoryImpl.kt new file mode 100644 index 00000000..52452c45 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/RemoveGeneratorHistoryImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.android.downloader.journal.GeneratorHistoryRepository +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.usecase.RemoveGeneratorHistory +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class RemoveGeneratorHistoryImpl( + private val generatorHistoryRepository: GeneratorHistoryRepository, +) : RemoveGeneratorHistory { + constructor(directDI: DirectDI) : this( + generatorHistoryRepository = directDI.instance(), + ) + + override fun invoke(): IO = generatorHistoryRepository + .removeAll() +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/RequestAppReviewImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/RequestAppReviewImpl.kt new file mode 100644 index 00000000..3162928d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/RequestAppReviewImpl.kt @@ -0,0 +1,77 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.effectTap +import com.artemchep.keyguard.common.io.flatMap +import com.artemchep.keyguard.common.io.flatTap +import com.artemchep.keyguard.common.io.ioUnit +import com.artemchep.keyguard.common.io.toIO +import com.artemchep.keyguard.common.service.logging.LogRepository +import com.artemchep.keyguard.common.service.logging.postDebug +import com.artemchep.keyguard.common.service.review.ReviewLog +import com.artemchep.keyguard.common.service.review.ReviewService +import com.artemchep.keyguard.common.usecase.RequestAppReview +import com.artemchep.keyguard.feature.crashlytics.crashlyticsTap +import com.artemchep.keyguard.platform.LeContext +import kotlinx.datetime.Clock +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.time.Duration + +class RequestAppReviewImpl( + private val logRepository: LogRepository, + private val reviewLog: ReviewLog, + private val reviewService: ReviewService, +) : RequestAppReview { + companion object { + private const val TAG = "RequestAppReview" + + /** + * After this period, the app will try + * to request a user to review the app. + */ + private val PERIOD = with(Duration) { 28.days } + } + + constructor(directDI: DirectDI) : this( + logRepository = directDI.instance(), + reviewLog = directDI.instance(), + reviewService = directDI.instance(), + ) + + override fun invoke( + context: LeContext, + ): IO = reviewLog + .getLastRequestedAt() + .toIO() + .flatMap { lastRequestedAt -> + val canRequest = kotlin.run { + lastRequestedAt + ?: return@run true + val age = Clock.System.now() - lastRequestedAt + age > PERIOD + } + if (canRequest) { + reviewService + .request(context) + .flatTap { + val now = Clock.System.now() + reviewLog.setLastRequestedAt(now) + } + .effectTap { + logRepository.postDebug(TAG) { + "Sent app review request." + } + } + } else { + ioUnit() + .effectTap { + logRepository.postDebug(TAG) { + "Ignored app review request: " + + "too little time has passed since the last request." + } + } + } + } + .crashlyticsTap() +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/ResolvePlaceholdersImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/ResolvePlaceholdersImpl.kt new file mode 100644 index 00000000..0f107f6b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/ResolvePlaceholdersImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.usecase.ResolvePlaceholders +import org.kodein.di.DirectDI + +// Here's Keepass docs for inspiration: +// https://keepass.info/help/base/placeholders.html +class ResolvePlaceholdersImpl( +) : ResolvePlaceholders { + constructor(directDI: DirectDI) : this() + + override fun invoke( + source: String, + ): IO { + TODO("Not yet implemented") + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl.kt new file mode 100644 index 00000000..34ed6f01 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/UnlockUseCaseImpl.kt @@ -0,0 +1,487 @@ +package com.artemchep.keyguard.common.usecase.impl + +import arrow.core.Either +import arrow.core.compose +import arrow.core.getOrElse +import arrow.core.memoize +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.dispatchOn +import com.artemchep.keyguard.common.io.flatMap +import com.artemchep.keyguard.common.io.flatTap +import com.artemchep.keyguard.common.io.handleErrorTap +import com.artemchep.keyguard.common.io.handleErrorWith +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.ioRaise +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.model.AuthResult +import com.artemchep.keyguard.common.model.BiometricPurpose +import com.artemchep.keyguard.common.model.BiometricStatus +import com.artemchep.keyguard.common.model.DKey +import com.artemchep.keyguard.common.model.Fingerprint +import com.artemchep.keyguard.common.model.FingerprintBiometric +import com.artemchep.keyguard.common.model.MasterKey +import com.artemchep.keyguard.common.model.MasterPassword +import com.artemchep.keyguard.common.model.MasterSession +import com.artemchep.keyguard.common.model.VaultState +import com.artemchep.keyguard.common.service.vault.FingerprintReadWriteRepository +import com.artemchep.keyguard.common.service.vault.SessionMetadataReadWriteRepository +import com.artemchep.keyguard.common.usecase.AuthConfirmMasterKeyUseCase +import com.artemchep.keyguard.common.usecase.AuthGenerateMasterKeyUseCase +import com.artemchep.keyguard.common.usecase.BiometricKeyDecryptUseCase +import com.artemchep.keyguard.common.usecase.BiometricKeyEncryptUseCase +import com.artemchep.keyguard.common.usecase.BiometricStatusUseCase +import com.artemchep.keyguard.common.usecase.DisableBiometric +import com.artemchep.keyguard.common.usecase.GetBiometricRemainingDuration +import com.artemchep.keyguard.common.usecase.GetVaultSession +import com.artemchep.keyguard.common.usecase.PutVaultSession +import com.artemchep.keyguard.common.usecase.UnlockUseCase +import com.artemchep.keyguard.core.session.usecase.createSubDi +import com.artemchep.keyguard.core.store.DatabaseManager +import com.artemchep.keyguard.feature.crashlytics.crashlyticsTap +import com.artemchep.keyguard.platform.LeCipher +import com.artemchep.keyguard.platform.leIv +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.shareIn +import kotlinx.coroutines.flow.take +import kotlinx.datetime.Clock +import org.kodein.di.Copy +import org.kodein.di.DI +import org.kodein.di.DirectDI +import org.kodein.di.instance +import org.kodein.di.subDI +import java.security.KeyException + +class UnlockUseCaseImpl( + private val di: DI, + private val biometricStatusUseCase: BiometricStatusUseCase, + private val getVaultSession: GetVaultSession, + private val putVaultSession: PutVaultSession, + private val disableBiometric: DisableBiometric, + private val keyReadWriteRepository: FingerprintReadWriteRepository, + private val sessionMetadataReadWriteRepository: SessionMetadataReadWriteRepository, + private val getBiometricRemainingDuration: GetBiometricRemainingDuration, + private val biometricKeyEncryptUseCase: BiometricKeyEncryptUseCase, + private val decryptBiometricKeyUseCase: BiometricKeyDecryptUseCase, + private val authConfirmMasterKeyUseCase: AuthConfirmMasterKeyUseCase, + private val authGenerateMasterKeyUseCase: AuthGenerateMasterKeyUseCase, +) : UnlockUseCase { + private val generateMasterKey = authGenerateMasterKeyUseCase() + .compose { password: String -> + val data = password.toByteArray() + MasterPassword(data) + } + + private val sharedFlow = combine( + keyReadWriteRepository.get(), + getBiometricStatusFlow(), + getVaultSession(), + ) { persistableUserTokens, biometric, session -> + when { + persistableUserTokens == null && session is MasterSession.Empty -> + createCreateVaultState( + biometric = biometric.forCreate, + ) + + persistableUserTokens == null && session is MasterSession.Key -> { + // FIXME: If you get stuck in this state, + // then you can consider it a critical error that + // is not recoverable. + VaultState.Loading + } + + persistableUserTokens != null && session is MasterSession.Empty -> + createUnlockVaultState( + tokens = persistableUserTokens, + biometric = biometric.forUnlock, + lockReason = session.reason, + ) + + persistableUserTokens != null && session is MasterSession.Key -> + createMainVaultState( + tokens = persistableUserTokens, + biometric = biometric.forCreate, + masterKey = session.masterKey, + di = session.di, + ) + + else -> error("Unreachable statement") + } + } + .distinctUntilChanged() + .shareIn(GlobalScope, SharingStarted.WhileSubscribed(10000L), replay = 1) + + constructor(directDI: DirectDI) : this( + di = directDI.di, + biometricStatusUseCase = directDI.instance(), + getVaultSession = directDI.instance(), + putVaultSession = directDI.instance(), + disableBiometric = directDI.instance(), + keyReadWriteRepository = directDI.instance(), + sessionMetadataReadWriteRepository = directDI.instance(), + getBiometricRemainingDuration = directDI.instance(), + biometricKeyEncryptUseCase = directDI.instance(), + decryptBiometricKeyUseCase = directDI.instance(), + authConfirmMasterKeyUseCase = directDI.instance(), + authGenerateMasterKeyUseCase = directDI.instance(), + ) + + override fun invoke() = sharedFlow + + private class ComplexBiometricStatus( + val forUnlock: BiometricStatus, + val forCreate: BiometricStatus, + ) + + private fun getBiometricStatusFlow() = biometricStatusUseCase() + .flatMapLatest { biometric -> + val forUnlockFlow = when (biometric) { + is BiometricStatus.Available -> + getBiometricRemainingDuration() + .map { it.isPositive() } + .take(1) // We don't want the option to suddenly disappear + .map { valid -> + biometric.takeIf { valid } ?: BiometricStatus.Unavailable + } + + is BiometricStatus.Unavailable -> flowOf(biometric) + } + forUnlockFlow + .map { forUnlock -> + ComplexBiometricStatus( + forUnlock = forUnlock, + forCreate = biometric, + ) + } + } + + private fun createCreateVaultState( + biometric: BiometricStatus, + ): VaultState { + return VaultState.Create( + createWithMasterPassword = VaultState.Create.WithPassword( + getCreateIo = { password -> + generateMasterKey(password) + .flatMap { result -> + create( + result = result, + biometricTokens = null, + ) + } + .flatTap { + writeLastPasswordUseTimestamp() + } + .dispatchOn(Dispatchers.Default) + }, + ), + createWithMasterPasswordAndBiometric = if (biometric is BiometricStatus.Available) { + val getCipherForEncryption = biometric + .createCipher + .partially1(BiometricPurpose.Encrypt) + .let { block -> + // lambda + { Either.catch(block) } + } + // Save the cipher for further use by + // the code in the block. This allows us to not + // return the cipher from the action. + .memoize() + VaultState.Create.WithBiometric( + getCipher = getCipherForEncryption, + getCreateIo = { password -> + generateMasterKey(password) + .flatMap { result -> + val masterKey = result.key + val cipherIo = ioEffect { + getCipherForEncryption() + .getOrElse { e -> + throw e + } + } + biometricKeyEncryptUseCase(cipherIo, masterKey) + .handleErrorWith { e -> + val newMessage = "Failed to encrypt the biometric key!" + val newException = IllegalStateException(newMessage, e) + ioRaise(newException) + } + .flatMap { encryptedMasterKey -> + val cipher = getCipherForEncryption() + .getOrElse { e -> + throw e + } + create( + result = result, + biometricTokens = FingerprintBiometric( + iv = cipher.leIv, + encryptedMasterKey = encryptedMasterKey, + ), + ) + } + } + .flatTap { + writeLastPasswordUseTimestamp() + } + .dispatchOn(Dispatchers.Default) + }, + ) + } else { + null + }, + ) + } + + private fun createUnlockVaultState( + tokens: Fingerprint, + biometric: BiometricStatus, + lockReason: String?, + ): VaultState { + val unlockMasterKey = authConfirmMasterKeyUseCase(tokens.master.salt, tokens.master.hash) + .compose { password: String -> + val data = password.toByteArray() + MasterPassword(data) + } + return VaultState.Unlock( + unlockWithMasterPassword = VaultState.Unlock.WithPassword( + getCreateIo = { password -> + unlockMasterKey(password) + // Try to unlock the vault using generated + // master key. + .map { it.key } + .flatMap(::unlock) + .flatTap { + writeLastPasswordUseTimestamp() + } + .dispatchOn(Dispatchers.Default) + }, + ), + unlockWithBiometric = if (biometric is BiometricStatus.Available && tokens.biometric != null) { + val getCipherForDecryption = biometric + .createCipher + .partially1(BiometricPurpose.Decrypt(DKey(tokens.biometric.iv))) + // Handle key invalidation + .createCipherOrDisableBiometrics() + .let { block -> + // lambda + { Either.catch(block) } + } + // Save the cipher for further use by + // the code in the block. This allows us to not + // return the cipher from the action. + .memoize() + VaultState.Unlock.WithBiometric( + getCipher = getCipherForDecryption, + getCreateIo = { + val encryptedMasterKey = tokens.biometric.encryptedMasterKey + val cipherIo = ioEffect { + getCipherForDecryption() + .getOrElse { e -> + throw e + } + } + decryptBiometricKeyUseCase(cipherIo, encryptedMasterKey) + .handleErrorWith { e -> + val newMessage = "Failed to decrypt the biometric key!" + val newException = IllegalStateException(newMessage, e) + ioRaise(newException) + } + // Try to unlock the vault using decrypted + // master key. + .flatMap(::unlock) + .dispatchOn(Dispatchers.Default) + }, + ) + } else { + null + }, + lockReason = lockReason, + ) + } + + private fun createMainVaultState( + tokens: Fingerprint, + biometric: BiometricStatus, + masterKey: MasterKey, + di: DI, + ): VaultState { + val databaseManager by di.instance() + val unlockMasterKey = authConfirmMasterKeyUseCase(tokens.master.salt, tokens.master.hash) + .compose { password: String -> + val data = password.toByteArray() + MasterPassword(data) + } + val getCreateIo: (String, String) -> IO = { currentPassword, newPassword -> + unlockMasterKey(currentPassword) // verify current password is valid + .flatMap { + generateMasterKey(newPassword) + } + .flatMap { result -> + val newMasterKey = result.key + databaseManager + .changePassword(newMasterKey) + .map { + result + } + } + .flatMap { result -> + create( + result = result, + biometricTokens = null, + ) + } + .flatTap { + writeLastPasswordUseTimestamp() + } + .handleErrorTap { + it.printStackTrace() + } + .dispatchOn(Dispatchers.Default) + } + val changePassword = VaultState.Main.ChangePassword( + key = tokens.master, + withMasterPassword = VaultState.Main.ChangePassword.WithPassword( + getCreateIo = getCreateIo, + ), + withMasterPasswordAndBiometric = if (biometric is BiometricStatus.Available) { + val getCipherForEncryption = biometric + .createCipher + .partially1(BiometricPurpose.Encrypt) + // Handle key invalidation + .createCipherOrDisableBiometrics() + .let { block -> + // lambda + { Either.catch(block) } + } + // Save the cipher for further use by + // the code in the block. This allows us to not + // return the cipher from the action. + .memoize() + VaultState.Main.ChangePassword.WithBiometric( + getCipher = getCipherForEncryption, + getCreateIo = { currentPassword, newPassword -> + unlockMasterKey(currentPassword) // verify current password is valid + .flatMap { + generateMasterKey(newPassword) + } + .flatMap { result -> + val newMasterKey = result.key + databaseManager + .changePassword(newMasterKey) + .map { + result + } + } + .flatMap { result -> + val newMasterKey = result.key + val cipherIo = ioEffect { + getCipherForEncryption() + .getOrElse { e -> + throw e + } + } + biometricKeyEncryptUseCase(cipherIo, newMasterKey) + .handleErrorWith { e -> + val newMessage = "Failed to encrypt the biometric key!" + val newException = IllegalStateException(newMessage, e) + ioRaise(newException) + } + .flatMap { encryptedNewMasterKey -> + val cipher = getCipherForEncryption() + .getOrElse { e -> + throw e + } + create( + result = result, + biometricTokens = FingerprintBiometric( + iv = cipher.leIv, + encryptedMasterKey = encryptedNewMasterKey, + ), + ) + } + } + .flatTap { + writeLastPasswordUseTimestamp() + } + .dispatchOn(Dispatchers.Default) + }, + ) + } else { + null + }, + ) + return VaultState.Main( + masterKey = masterKey, + changePassword = changePassword, + di = di, + ) + } + + private fun (() -> LeCipher).createCipherOrDisableBiometrics() = this + .let { createCipher -> + // Lambda. + { + try { + createCipher() + } catch (e: KeyException) { + // If the key is not valid, then we want to disable the + // biometrics for now. + disableBiometric() + .crashlyticsTap() + .attempt() + .launchIn(GlobalScope) + throw e + } + } + } + + /** + * Save the current vault tokens to the persistent + * storage. + */ + private fun create( + result: AuthResult, + biometricTokens: FingerprintBiometric? = null, + ): IO { + val token = Fingerprint( + master = result.token, + biometric = biometricTokens, + ) + return keyReadWriteRepository.put(token) + .flatMap { + unlock( + masterKey = result.key, + ) + } + } + + private fun unlock( + masterKey: MasterKey, + ): IO = ioEffect { + val moduleDi = DI.Module("lalala") { + createSubDi( + masterKey = masterKey, + ) + } + val subDi = + subDI(di, false, Copy.None) { + import(moduleDi) + } + MasterSession.Key( + masterKey = masterKey, + di = subDi, + origin = MasterSession.Key.Authenticated, + createdAt = Clock.System.now(), + ) + }.flatMap(putVaultSession) + + private fun writeLastPasswordUseTimestamp(): IO = sessionMetadataReadWriteRepository + .setLastPasswordUseTimestamp(instant = Clock.System.now()) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/WindowCoroutineScopeImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/WindowCoroutineScopeImpl.kt new file mode 100644 index 00000000..0a88ec8f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/usecase/impl/WindowCoroutineScopeImpl.kt @@ -0,0 +1,54 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.model.NoAnalytics +import com.artemchep.keyguard.common.model.ToastMessage +import com.artemchep.keyguard.common.usecase.ShowMessage +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.platform.recordException +import kotlinx.coroutines.CoroutineExceptionHandler +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.SupervisorJob +import kotlinx.coroutines.plus +import org.kodein.di.DirectDI +import org.kodein.di.instance +import java.io.IOException +import kotlin.coroutines.CoroutineContext +import kotlin.coroutines.cancellation.CancellationException + +class WindowCoroutineScopeImpl( + private val scope: CoroutineScope, + private val showMessage: ShowMessage, +) : WindowCoroutineScope { + constructor(directDI: DirectDI) : this( + scope = GlobalScope, + showMessage = directDI.instance(), + ) + + private val handler = CoroutineExceptionHandler { _, exception -> + if (exception is CancellationException) { + return@CoroutineExceptionHandler + } + if ( + exception !is IOException && + exception !is NoAnalytics + ) { + recordException(exception) + } + + exception.printStackTrace() + + val title = exception.localizedMessage + ?: exception.message + ?: exception.javaClass.simpleName + val msg = ToastMessage( + title = title, + ) + showMessage.copy(msg) + } + + private val internalScope = scope + SupervisorJob() + handler + + override val coroutineContext: CoroutineContext + get() = internalScope.coroutineContext +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/Boolean.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/Boolean.kt new file mode 100644 index 00000000..316f7729 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/Boolean.kt @@ -0,0 +1,3 @@ +package com.artemchep.keyguard.common.util + +val Boolean.int: Int get() = if (this) 1 else 0 diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/Browsers.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/Browsers.kt new file mode 100644 index 00000000..c8f65820 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/Browsers.kt @@ -0,0 +1,81 @@ +package com.artemchep.keyguard.common.util + +val Browsers = setOf( + "alook.browser", + "com.amazon.cloud9", + "com.android.browser", + "com.android.chrome", + "com.android.htmlviewer", + "com.avast.android.secure.browser", + "com.avg.android.secure.browser", + "com.brave.browser", + "com.brave.browser_beta", + "com.brave.browser_default", + "com.brave.browser_dev", + "com.brave.browser_nightly", + "com.chrome.beta", + "com.chrome.canary", + "com.chrome.dev", + "com.cookiegames.smartcookie", + "com.cookiejarapps.android.smartcookieweb", + "com.ecosia.android", + "com.google.android.apps.chrome", + "com.google.android.apps.chrome_dev", + "com.jamal2367.styx", + "com.kiwibrowser.browser", + "com.microsoft.emmx", + "com.microsoft.emmx.beta", + "com.microsoft.emmx.canary", + "com.microsoft.emmx.dev", + "com.mmbox.browser", + "com.mmbox.xbrowser", + "com.mycompany.app.soulbrowser", + "com.naver.whale", + "com.opera.browser", + "com.opera.browser.beta", + "com.opera.mini.native", + "com.opera.mini.native.beta", + "com.opera.touch", + "com.qwant.liberty", + "com.sec.android.app.sbrowser", + "com.sec.android.app.sbrowser.beta", + "com.stoutner.privacybrowser.free", + "com.stoutner.privacybrowser.standard", + "com.vivaldi.browser", + "com.vivaldi.browser.snapshot", + "com.vivaldi.browser.sopranos", + "com.yandex.browser", + "com.z28j.feel", + "idm.internet.download.manager", + "idm.internet.download.manager.adm.lite", + "idm.internet.download.manager.plus", + "io.github.forkmaintainers.iceraven", + "mark.via", + "mark.via.gp", + "net.slions.fulguris.full.download", + "net.slions.fulguris.full.download.debug", + "net.slions.fulguris.full.playstore", + "net.slions.fulguris.full.playstore.debug", + "org.adblockplus.browser", + "org.adblockplus.browser.beta", + "org.bromite.bromite", + "org.bromite.chromium", + "org.bromite.dev", + "org.chromium.chrome", + "org.codeaurora.swe.browser", + "org.gnu.icecat", + "org.mozilla.fenix", + "org.mozilla.fenix.nightly", + "org.mozilla.fennec_aurora", + "org.mozilla.fennec_fdroid", + "org.mozilla.firefox", + "org.mozilla.firefox_beta", + "org.mozilla.reference.browser", + "org.mozilla.rocket", + "org.torproject.torbrowser", + "org.torproject.torbrowser_alpha", + "org.ungoogled.chromium.extensions.stable", + "org.ungoogled.chromium.stable", + "us.spotco.fennec_dos", + "site.mises.browser", +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/ByteArray.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/ByteArray.kt new file mode 100644 index 00000000..4a9f19fb --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/ByteArray.kt @@ -0,0 +1,15 @@ +package com.artemchep.keyguard.common.util + +val ByteArray.int: Int + get() { + require(size == 4) + return this + .foldIndexed(0.toUInt()) { index, y, x -> + // We need to convert byte to unsigned byte first, otherwise + // the sign bit will plague the rest of the integer. + val xUInt = x.toUByte().toUInt() + val yUIntPatch = xUInt shl (size - index - 1).times(8) + y or yUIntPatch + } + .toInt() + } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/Instant.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/Instant.kt new file mode 100644 index 00000000..bdffd9c6 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/Instant.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.common.util + +import kotlinx.datetime.Instant + +val Instant.millis get() = toEpochMilliseconds() diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/Int.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/Int.kt new file mode 100644 index 00000000..13f39b5e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/Int.kt @@ -0,0 +1,3 @@ +package com.artemchep.keyguard.common.util + +operator fun Int.contains(other: Int) = (other and this) == other diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/Luhn.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/Luhn.kt new file mode 100644 index 00000000..f957c0c2 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/Luhn.kt @@ -0,0 +1,22 @@ +package com.artemchep.keyguard.common.util + +// https://en.wikipedia.org/wiki/Luhn_algorithm +fun validLuhn(number: String): Boolean { + if (number.isEmpty()) { + return true + } + + val parity = number.length.rem(2) + val checksum = number + .foldIndexed(0) { index, y, x -> + val n = charToDigit(x) + y + when { + index.rem(2) != parity -> n + n > 4 -> 2 * n - 9 + else -> 2 * n + } + } + return checksum.rem(10) == 0 +} + +private fun charToDigit(char: Char) = char - '0' diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/MainThread.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/MainThread.kt new file mode 100644 index 00000000..58055bce --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/MainThread.kt @@ -0,0 +1,4 @@ +package com.artemchep.keyguard.common.util + +fun assertNotMainThread() { +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/RegexColorize.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/RegexColorize.kt new file mode 100644 index 00000000..69b74e71 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/RegexColorize.kt @@ -0,0 +1,31 @@ +package com.artemchep.keyguard.common.util + +// A rewrite of +// https://github.com/geongeorge/regex-colorizer/ +// using Kotlin. + + +private val myclass = "regex" +private val regexToken = + """\[\^?]?(?:[^\\\]]+|\\[\S\s]?)*]?|\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\S\s]?)|\((?:\?[:=!]?)?|(?:[?*+]|\{[0-9]+(?:,[0-9]*)?\})\??|[^.?*+^${"$"}{[()|\\]+|.""" +private val charClassToken = + """/[^\\-]+|-|\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\S\s]?)""" +private val charClassParts = """^(\[\^?)(]?(?:[^\\\]]+|\\[\S\s]?)*)(]?)$""" +private val quantifier = """^(?:[?*+]|\{[0-9]+(?:,[0-9]*)?\})\??$""" +private val type_NONE = 0 +private val type_RANGE_HYPHEN = 1 +private val type_SHORT_CLASS = 2 +private val type_ALTERNATOR = 3 +private val error_UNCLOSED_CLASS = "Unclosed character class" +private val error_INCOMPLETE_TOKEN = "Incomplete regex token" +private val error_INVALID_RANGE = "Reversed or invalid range" +private val error_INVALID_GROUP_TYPE = "Invalid or unsupported group type" +private val error_UNBALANCED_LEFT_PAREN = "Unclosed grouping" +private val error_UNBALANCED_RIGHT_PAREN = "No matching opening parenthesis" +private val error_INTERVAL_OVERFLOW = "Interval quantifier cannot use value over 65,535" +private val error_INTERVAL_REVERSED = "Interval quantifier range is reversed" +private val error_UNQUANTIFIABLE = "Quantifiers must be preceded by a token that can be repeated" +private val error_IMPROPER_EMPTY_ALTERNATIVE = + "Empty alternative effectively truncates the regex here" + + diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/flow/EventFlow.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/flow/EventFlow.kt new file mode 100644 index 00000000..476f9737 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/flow/EventFlow.kt @@ -0,0 +1,95 @@ +package com.artemchep.keyguard.common.util.flow + +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.InternalCoroutinesApi +import kotlinx.coroutines.channels.SendChannel +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.FlowCollector +import kotlinx.coroutines.flow.channelFlow +import kotlinx.coroutines.launch +import kotlinx.coroutines.suspendCancellableCoroutine +import java.util.LinkedList +import java.util.Queue +import kotlin.coroutines.CoroutineContext +import kotlin.coroutines.EmptyCoroutineContext +import kotlin.coroutines.resume + +/** + * @author Artem Chepurnyi + */ +open class EventFlow( + private val context: CoroutineContext = EmptyCoroutineContext, +) : Flow { + /** + * Returns `true` if the live flow has any active observers, + * `false` otherwise. + */ + val isActive: Boolean + get() = channels.isNotEmpty() + + val monitor get() = this + + private val channels: Queue> = LinkedList() + + fun emit(value: T) { + // Copy the list of events to try + // to send the event to. + val channels = synchronized(monitor) { + channels.toList() + } + + GlobalScope.launch(context) { + channels.forEach { channel -> + channel.trySend(value) + } + } + } + + open fun onActive() { + // By default does nothing. + } + + open fun onInactive() { + // By default does nothing. + } + + fun asFlow(): Flow = flowWithLifecycle( + onActive = { channel -> + // Add a channel to the list of + // consumers. + synchronized(monitor) { + channels += channel + if (channels.size == 1) onActive() + } + }, + onInactive = { channel -> + // Remove a channel from the list of + // consumers. + synchronized(monitor) { + channels -= channel + if (channels.size == 0) onInactive() + } + }, + ) + + override suspend fun collect(collector: FlowCollector) = asFlow().collect(collector) +} + +private fun flowWithLifecycle( + onActive: (SendChannel) -> Unit, + onInactive: (SendChannel) -> Unit, +): Flow = channelFlow { + try { + onActive(this) + + // Suspend the flow until manually + // canceled. + suspendCancellableCoroutine { cont -> + invokeOnClose { + cont.resume(Unit) + } + } + } finally { + onInactive(this) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/flow/combine.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/flow/combine.kt new file mode 100644 index 00000000..51095f53 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/flow/combine.kt @@ -0,0 +1,58 @@ +package com.artemchep.keyguard.common.util.flow + +import kotlinx.coroutines.channels.awaitClose +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.channelFlow +import kotlinx.coroutines.flow.flow +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.launch +import java.util.concurrent.atomic.AtomicInteger + +inline fun List>.combineToList(): Flow> = if (isEmpty()) { + flowOf(emptyList()) +} else { + flow { + val remaining = AtomicInteger(size) + val list = Array(size) { index -> + null + } + + if (remaining.get() == 0) { + emit(list.toList() as List) + return@flow + } + + // Combines the flow of models with its position in the + // list. This is needed to ensure that all of the flows a consumed with + // the same dispatcher. + channelFlow { + forEachIndexed { index, flow -> + launch { + var isFirst = true + + flow.collect { model -> + list[index] = model + + if (isFirst) { + isFirst = false + remaining.getAndAdd(-1) + } + + // Indicate the update of the list, we don't care if some of the elements + // are going to be lost, because we don't pass the data, we pass the update + // request. + if (remaining.get() == 0) { + trySend(Unit) + } + } + } + } + + awaitClose() + }.collect { + if (remaining.get() == 0) { + emit(list.toList() as List) + } + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/flow/foldAsList.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/flow/foldAsList.kt new file mode 100644 index 00000000..621cf98d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/flow/foldAsList.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.common.util.flow + +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.flowOf + +inline fun List>.foldAsList(): Flow> = + if (isEmpty()) { + flowOf(emptyList()) + } else { + combine(this) { array -> array.toList() } + } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/flow/observeFlow.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/flow/observeFlow.kt new file mode 100644 index 00000000..013add79 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/flow/observeFlow.kt @@ -0,0 +1,34 @@ +package com.artemchep.keyguard.common.util.flow + +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.NonCancellable +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.channelFlow +import kotlinx.coroutines.suspendCancellableCoroutine +import kotlinx.coroutines.withContext +import kotlin.coroutines.resume + +inline fun observerFlow( + crossinline register: ((T) -> Unit) -> () -> Unit, +): Flow = channelFlow { + var unregister: (() -> Unit)? = null + try { + unregister = withContext(Dispatchers.Main) { + val setter = { value: T -> + trySend(value) + } + register(setter) + } + suspendCancellableCoroutine { cont -> + invokeOnClose { + cont.resume(Unit) + } + } + } finally { + withContext(Dispatchers.Main + NonCancellable) { + // Unregister the broadcast receiver that we have + // previously registered. + unregister?.invoke() + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/flow/stateIn.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/flow/stateIn.kt new file mode 100644 index 00000000..1bfda09c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/flow/stateIn.kt @@ -0,0 +1,98 @@ +package com.artemchep.keyguard.common.util.flow + +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.CoroutineStart +import kotlinx.coroutines.Job +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.SharingCommand +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.launch +import kotlin.coroutines.CoroutineContext +import kotlin.coroutines.EmptyCoroutineContext + +private val None = Any() + +fun Flow.persistingStateIn( + scope: CoroutineScope, + started: SharingStarted, + initialValue: T, +): StateFlow { + val state = MutableStateFlow(initialValue) + val job = scope.launchSharing(EmptyCoroutineContext, this, state, started) + return ReadonlyStateFlow(state, job) +} + +suspend fun Flow.persistingStateIn( + scope: CoroutineScope, + started: SharingStarted, +): StateFlow { + val state = MutableStateFlow(None) + val job = scope.launchSharing(EmptyCoroutineContext, this, state, started) + + // Wait till the flow gets + // its first value. + state.first { it !== None } + + // We are safe to cast it back. + return ReadonlyStateFlow(state as StateFlow, job) +} + +// Launches sharing coroutine +private fun CoroutineScope.launchSharing( + context: CoroutineContext, + upstream: Flow, + shared: MutableStateFlow, + started: SharingStarted, +): Job { + /* + * Conditional start: in the case when sharing and subscribing happens in the same dispatcher, we want to + * have the following invariants preserved: + * * Delayed sharing strategies have a chance to immediately observe consecutive subscriptions. + * E.g. in the cases like `flow.shareIn(...); flow.take(1)` we want sharing strategy to see the initial subscription + * * Eager sharing does not start immediately, so the subscribers have actual chance to subscribe _prior_ to sharing. + */ + val start = + if (started == SharingStarted.Eagerly) CoroutineStart.DEFAULT else CoroutineStart.UNDISPATCHED + return launch(context, start = start) { // the single coroutine to rule the sharing + // Optimize common built-in started strategies + when { + started === SharingStarted.Eagerly -> { + // collect immediately & forever + upstream.collect(shared) + } + + started === SharingStarted.Lazily -> { + // start collecting on the first subscriber - wait for it first + shared.subscriptionCount.first { it > 0 } + upstream.collect(shared) + } + + else -> { + // other & custom strategies + started.command(shared.subscriptionCount) + .distinctUntilChanged() // only changes in command have effect + .collectLatest { // cancels block on new emission + when (it) { + SharingCommand.START -> upstream.collect(shared) + SharingCommand.STOP -> { /* just cancel and do nothing else */ + } + + SharingCommand.STOP_AND_RESET_REPLAY_CACHE -> { /* just cancel and do nothing else */ + } + } + } + } + } + } +} + +private class ReadonlyStateFlow( + flow: StateFlow, + @Suppress("unused") + private val job: Job?, // keeps a strong reference to the job (if present) +) : StateFlow by flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/flow/widen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/flow/widen.kt new file mode 100644 index 00000000..bffa0c4e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/flow/widen.kt @@ -0,0 +1 @@ +package com.artemchep.keyguard.common.util.flow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/flowOfTime.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/flowOfTime.kt new file mode 100644 index 00000000..4f8fff87 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/flowOfTime.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.common.util + +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.flow +import kotlinx.datetime.Clock +import kotlin.time.DurationUnit +import kotlin.time.ExperimentalTime +import kotlin.time.toTimeUnit + +fun flowOfTime( + unit: DurationUnit = DurationUnit.SECONDS, + duration: Long = 1L, +) = flow { + val delayMs = unit.toTimeUnit().toMillis(duration) + while (true) { + val time = Clock.System.now() + emit(time) + delay(delayMs) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/hash/FNV.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/hash/FNV.kt new file mode 100644 index 00000000..dc696c08 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/hash/FNV.kt @@ -0,0 +1,25 @@ +package com.artemchep.keyguard.common.util.hash + +object FNV { + private const val init32 = 0x811c9dc5L + private const val prime32 = 0x01000193L + private const val mod32 = 1L shl 32 + + fun fnv1_32(data: String): Long { + var hash = init32 + for (b in data) { + hash = hash.times(prime32).mod(mod32) + hash = hash.xor(b.code.toLong()) + } + return hash + } + + fun fnv1_32(data: ByteArray): Long { + var hash = init32 + for (b in data) { + hash = hash.times(prime32).mod(mod32) + hash = hash.xor(b.toLong()) + } + return hash + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/sqldelight/collectors.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/sqldelight/collectors.kt new file mode 100644 index 00000000..57096e68 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/sqldelight/collectors.kt @@ -0,0 +1,27 @@ +package com.artemchep.keyguard.common.util.sqldelight + +import app.cash.sqldelight.Query +import app.cash.sqldelight.coroutines.asFlow +import app.cash.sqldelight.coroutines.mapToList +import com.artemchep.keyguard.common.io.IO +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.asFlow +import kotlinx.coroutines.flow.flatMapLatest +import kotlin.coroutines.CoroutineContext + +fun IO>.flatMapQueryToList( + context: CoroutineContext, +) = this + .asFlow() + .flatMapQueryToList(context) + +@OptIn(ExperimentalCoroutinesApi::class) +fun Flow>.flatMapQueryToList( + context: CoroutineContext, +) = this + .flatMapLatest { query -> + query + .asFlow() + .mapToList(context) + } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/toColorInt.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/toColorInt.kt new file mode 100644 index 00000000..9b1280ea --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/toColorInt.kt @@ -0,0 +1,93 @@ +package com.artemchep.keyguard.common.util + +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.toArgb +import kotlin.math.abs +import kotlin.math.max +import kotlin.math.min + +fun Color.toHex(): String { + val argb = toArgb() + val red = argb.shr(16).and(0xFF) + val green = argb.shr(8).and(0xFF) + val blue = argb.and(0xFF) + return buildString { + append('#') + append(red.toHex()) + append(green.toHex()) + append(blue.toHex()) + } +} + +private fun Int.toHex() = toString(16).uppercase().padStart(2, '0') + +fun String.toColorInt() = this + .trimStart('#') + // Add the alpha component of the + // color + .padStart(8, 'F') + .toLong(16) + .toInt() + +fun Color.hue(): Float { + val hsl = FloatArray(3) + RGBToHSL( + rf = red, + gf = green, + bf = blue, + outHsl = hsl, + ) + return hsl[0] +} + +/** + * Convert RGB components to HSL (hue-saturation-lightness). + * * outHsl[0] is Hue [0, 360) + * * outHsl[1] is Saturation [0, 1] + * * outHsl[2] is Lightness [0, 1] + * + * @param rf red component value [0, 1] + * @param gf green component value [0, 1] + * @param bf blue component value [0, 1] + * @param outHsl 3-element array which holds the resulting HSL components + */ +fun RGBToHSL( + rf: Float, + gf: Float, + bf: Float, + outHsl: FloatArray, +) { + val max = + max(rf.toDouble(), max(gf.toDouble(), bf.toDouble())).toFloat() + val min = + min(rf.toDouble(), min(gf.toDouble(), bf.toDouble())).toFloat() + val deltaMaxMin = max - min + var h: Float + val s: Float + val l = (max + min) / 2f + if (max == min) { + // Monochromatic + s = 0f + h = s + } else { + h = if (max == rf) { + (gf - bf) / deltaMaxMin % 6f + } else if (max == gf) { + (bf - rf) / deltaMaxMin + 2f + } else { + (rf - gf) / deltaMaxMin + 4f + } + s = (deltaMaxMin / (1f - abs((2f * l - 1f).toDouble()))).toFloat() + } + h = h * 60f % 360f + if (h < 0) { + h += 360f + } + outHsl[0] = constrain(h, 0f, 360f) + outHsl[1] = constrain(s, 0f, 1f) + outHsl[2] = constrain(l, 0f, 1f) +} + +private fun constrain(amount: Float, low: Float, high: Float): Float { + return if (amount < low) low else min(amount.toDouble(), high.toDouble()).toFloat() +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/withLogTimeOfFirstEvent.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/withLogTimeOfFirstEvent.kt new file mode 100644 index 00000000..5c7c14f3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/util/withLogTimeOfFirstEvent.kt @@ -0,0 +1,36 @@ +package com.artemchep.keyguard.common.util + +import com.artemchep.keyguard.common.service.logging.LogRepository +import com.artemchep.keyguard.common.service.logging.postDebug +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.emitAll +import kotlinx.coroutines.flow.flow +import kotlinx.coroutines.flow.onEach +import kotlinx.datetime.Clock + +inline fun Flow.withLogTimeOfFirstEvent( + logRepository: LogRepository, + tag: String, + crossinline predicate: (T) -> Boolean = { true }, +): Flow = flow { + var hasCompleted = false + val startTime = Clock.System.now() + emitAll( + this@withLogTimeOfFirstEvent.onEach { model -> + if (predicate(model) && !hasCompleted) { + hasCompleted = true + val now = Clock.System.now() + val dt = now - startTime + logRepository.postDebug(tag) { + val suffix = if (model is Collection<*>) { + val size = model.size + "Loaded $size models." + } else { + "" + } + "It took ${dt}ms. to load first portion of data. $suffix" + } + } + }, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/worker/Wrker.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/worker/Wrker.kt new file mode 100644 index 00000000..69729588 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/worker/Wrker.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.common.worker + +import com.artemchep.keyguard.platform.lifecycle.LeLifecycleState +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.flow.Flow + +interface Wrker { + fun start( + scope: CoroutineScope, + flow: Flow, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/worker/impl/WrkerImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/worker/impl/WrkerImpl.kt new file mode 100644 index 00000000..cbc71f7d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/worker/impl/WrkerImpl.kt @@ -0,0 +1,142 @@ +package com.artemchep.keyguard.common.worker.impl + +import com.artemchep.keyguard.android.downloader.journal.DownloadRepository +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.model.MasterSession +import com.artemchep.keyguard.common.model.PersistedSession +import com.artemchep.keyguard.common.service.logging.LogRepository +import com.artemchep.keyguard.common.service.vault.KeyReadWriteRepository +import com.artemchep.keyguard.common.usecase.CleanUpAttachment +import com.artemchep.keyguard.common.usecase.ClearVaultSession +import com.artemchep.keyguard.common.usecase.GetAccounts +import com.artemchep.keyguard.common.usecase.GetVaultPersist +import com.artemchep.keyguard.common.usecase.GetVaultSession +import com.artemchep.keyguard.common.usecase.PutVaultSession +import com.artemchep.keyguard.common.worker.Wrker +import com.artemchep.keyguard.feature.favicon.Favicon +import com.artemchep.keyguard.platform.lifecycle.LeLifecycleState +import com.artemchep.keyguard.platform.lifecycle.onState +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.collect +import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onEach +import kotlinx.datetime.Clock +import org.kodein.di.DirectDI +import org.kodein.di.direct +import org.kodein.di.instance + +class WrkerImpl( + private val logRepository: LogRepository, + private val getVaultSession: GetVaultSession, + private val putVaultSession: PutVaultSession, + private val getVaultPersist: GetVaultPersist, + private val keyReadWriteRepository: KeyReadWriteRepository, + private val clearVaultSession: ClearVaultSession, + private val downloadRepository: DownloadRepository, + private val cleanUpAttachment: CleanUpAttachment, +) : Wrker { + constructor(directDI: DirectDI) : this( + logRepository = directDI.instance(), + getVaultSession = directDI.instance(), + putVaultSession = directDI.instance(), + getVaultPersist = directDI.instance(), + keyReadWriteRepository = directDI.instance(), + clearVaultSession = directDI.instance(), + downloadRepository = directDI.instance(), + cleanUpAttachment = directDI.instance(), + ) + + override fun start( + scope: CoroutineScope, + flow: Flow, + ) { + flow + .onState { + getVaultSession() + .map { session -> + val key = session as? MasterSession.Key + key?.di?.direct?.instance() + } + .collectLatest { getAccounts -> + if (getAccounts != null) { + coroutineScope { + Favicon.launch(this, getAccounts) + } + } + } + } + flow + .onState { + combine( + getVaultSession(), + getVaultPersist(), + ) { session, persist -> + val persistedMasterKey = if (persist && session is MasterSession.Key) { + session.masterKey + } else { + null + } + persistedMasterKey + } + .onEach { masterKey -> + val persistedSession = if (masterKey != null) { + PersistedSession( + masterKey = masterKey, + createdAt = Clock.System.now(), + persistedAt = Clock.System.now(), + ) + } else { + null + } + keyReadWriteRepository.put(persistedSession).bind() + } + .collect() + } + flow + .onState { + combine( + getVaultSession(), + getVaultPersist(), + ) { session, persist -> + val persistedMasterKey = if (persist && session is MasterSession.Key) { + session.masterKey + } else { + null + } + persistedMasterKey + } + .onEach { masterKey -> + val persistedSession = if (masterKey != null) { + PersistedSession( + masterKey = masterKey, + createdAt = Clock.System.now(), + persistedAt = Clock.System.now(), + ) + } else { + null + } + keyReadWriteRepository.put(persistedSession).bind() + } + .collect() + } + // notifications +// ProcessLifecycleOwner.get().bindBlock { +// getVaultSession() +// .map { session -> +// val key = session as? MasterSession.Key +// key?.di?.direct?.instance() +// } +// .collectLatest { notifications -> +// if (notifications != null) { +// coroutineScope { +// notifications.invoke(this) +// } +// } +// } +// } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/core/session/usecase/AuthTypealias.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/session/usecase/AuthTypealias.kt new file mode 100644 index 00000000..12e8d005 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/session/usecase/AuthTypealias.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.core.session.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.AuthResult +import com.artemchep.keyguard.common.model.MasterPassword + +typealias AuthMasterKeyUseCase = (MasterPassword) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/core/session/usecase/SubDI.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/session/usecase/SubDI.kt new file mode 100644 index 00000000..3c88d323 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/session/usecase/SubDI.kt @@ -0,0 +1,510 @@ +package com.artemchep.keyguard.core.session.usecase + +import com.artemchep.keyguard.android.downloader.journal.CipherHistoryOpenedRepository +import com.artemchep.keyguard.android.downloader.journal.CipherHistoryOpenedRepositoryImpl +import com.artemchep.keyguard.android.downloader.journal.GeneratorHistoryRepository +import com.artemchep.keyguard.android.downloader.journal.GeneratorHistoryRepositoryImpl +import com.artemchep.keyguard.common.model.MasterKey +import com.artemchep.keyguard.common.service.hibp.breaches.all.BreachesLocalDataSource +import com.artemchep.keyguard.common.service.hibp.breaches.all.BreachesRemoteDataSource +import com.artemchep.keyguard.common.service.hibp.breaches.all.BreachesRepository +import com.artemchep.keyguard.common.service.hibp.breaches.all.impl.BreachesLocalDataSourceImpl +import com.artemchep.keyguard.common.service.hibp.breaches.all.impl.BreachesRemoteDataSourceImpl +import com.artemchep.keyguard.common.service.hibp.breaches.all.impl.BreachesRepositoryImpl +import com.artemchep.keyguard.common.service.hibp.passwords.PasswordPwnageDataSourceLocal +import com.artemchep.keyguard.common.service.hibp.passwords.PasswordPwnageDataSourceRemote +import com.artemchep.keyguard.common.service.hibp.passwords.PasswordPwnageRepository +import com.artemchep.keyguard.common.service.hibp.passwords.impl.PasswordPwnageDataSourceLocalImpl +import com.artemchep.keyguard.common.service.hibp.passwords.impl.PasswordPwnageDataSourceRemoteImpl +import com.artemchep.keyguard.common.service.hibp.passwords.impl.PasswordPwnageRepositoryImpl +import com.artemchep.keyguard.common.service.relays.repo.GeneratorEmailRelayRepository +import com.artemchep.keyguard.common.service.relays.repo.GeneratorEmailRelayRepositoryImpl +import com.artemchep.keyguard.common.usecase.AddCipher +import com.artemchep.keyguard.common.usecase.AddCipherOpenedHistory +import com.artemchep.keyguard.common.usecase.AddCipherUsedAutofillHistory +import com.artemchep.keyguard.common.usecase.AddCipherUsedPasskeyHistory +import com.artemchep.keyguard.common.usecase.AddEmailRelay +import com.artemchep.keyguard.common.usecase.AddFolder +import com.artemchep.keyguard.common.usecase.AddGeneratorHistory +import com.artemchep.keyguard.common.usecase.AddPasskeyCipher +import com.artemchep.keyguard.common.usecase.AddUriCipher +import com.artemchep.keyguard.common.usecase.ChangeCipherNameById +import com.artemchep.keyguard.common.usecase.ChangeCipherPasswordById +import com.artemchep.keyguard.common.usecase.CheckPasswordLeak +import com.artemchep.keyguard.common.usecase.CheckPasswordSetLeak +import com.artemchep.keyguard.common.usecase.CheckUsernameLeak +import com.artemchep.keyguard.common.usecase.CipherBreachCheck +import com.artemchep.keyguard.common.usecase.CipherDuplicatesCheck +import com.artemchep.keyguard.common.usecase.CipherExpiringCheck +import com.artemchep.keyguard.common.usecase.CipherFieldSwitchToggle +import com.artemchep.keyguard.common.usecase.CipherIncompleteCheck +import com.artemchep.keyguard.common.usecase.CipherMerge +import com.artemchep.keyguard.common.usecase.CipherRemovePasswordHistory +import com.artemchep.keyguard.common.usecase.CipherRemovePasswordHistoryById +import com.artemchep.keyguard.common.usecase.CipherToolbox +import com.artemchep.keyguard.common.usecase.CipherToolboxImpl +import com.artemchep.keyguard.common.usecase.CipherUnsecureUrlAutoFix +import com.artemchep.keyguard.common.usecase.CipherUnsecureUrlCheck +import com.artemchep.keyguard.common.usecase.CopyCipherById +import com.artemchep.keyguard.common.usecase.DownloadAttachment +import com.artemchep.keyguard.common.usecase.FavouriteCipherById +import com.artemchep.keyguard.common.usecase.GetAccountHasError +import com.artemchep.keyguard.common.usecase.GetAccountStatus +import com.artemchep.keyguard.common.usecase.GetAccounts +import com.artemchep.keyguard.common.usecase.GetAccountsHasError +import com.artemchep.keyguard.common.usecase.GetCanAddAccount +import com.artemchep.keyguard.common.usecase.GetCipherOpenedCount +import com.artemchep.keyguard.common.usecase.GetCipherOpenedHistory +import com.artemchep.keyguard.common.usecase.GetCiphers +import com.artemchep.keyguard.common.usecase.GetCollections +import com.artemchep.keyguard.common.usecase.GetEmailRelays +import com.artemchep.keyguard.common.usecase.GetEnvSendUrl +import com.artemchep.keyguard.common.usecase.GetFingerprint +import com.artemchep.keyguard.common.usecase.GetFolderTree +import com.artemchep.keyguard.common.usecase.GetFolderTreeById +import com.artemchep.keyguard.common.usecase.GetFolders +import com.artemchep.keyguard.common.usecase.GetGeneratorHistory +import com.artemchep.keyguard.common.usecase.GetMetas +import com.artemchep.keyguard.common.usecase.GetOrganizations +import com.artemchep.keyguard.common.usecase.GetProfiles +import com.artemchep.keyguard.common.usecase.GetSends +import com.artemchep.keyguard.common.usecase.GetShouldRequestAppReview +import com.artemchep.keyguard.common.usecase.MergeFolderById +import com.artemchep.keyguard.common.usecase.MoveCipherToFolderById +import com.artemchep.keyguard.common.usecase.PutAccountColorById +import com.artemchep.keyguard.common.usecase.PutAccountMasterPasswordHintById +import com.artemchep.keyguard.common.usecase.PutAccountNameById +import com.artemchep.keyguard.common.usecase.RePromptCipherById +import com.artemchep.keyguard.common.usecase.RemoveAccountById +import com.artemchep.keyguard.common.usecase.RemoveAccounts +import com.artemchep.keyguard.common.usecase.RemoveCipherById +import com.artemchep.keyguard.common.usecase.RemoveEmailRelayById +import com.artemchep.keyguard.common.usecase.RemoveFolderById +import com.artemchep.keyguard.common.usecase.RemoveGeneratorHistory +import com.artemchep.keyguard.common.usecase.RemoveGeneratorHistoryById +import com.artemchep.keyguard.common.usecase.RenameFolderById +import com.artemchep.keyguard.common.usecase.RestoreCipherById +import com.artemchep.keyguard.common.usecase.RetryCipher +import com.artemchep.keyguard.common.usecase.RotateDeviceIdUseCase +import com.artemchep.keyguard.common.usecase.SupervisorRead +import com.artemchep.keyguard.common.usecase.SyncAll +import com.artemchep.keyguard.common.usecase.SyncById +import com.artemchep.keyguard.common.usecase.TrashCipherByFolderId +import com.artemchep.keyguard.common.usecase.TrashCipherById +import com.artemchep.keyguard.common.usecase.Watchdog +import com.artemchep.keyguard.common.usecase.WatchdogImpl +import com.artemchep.keyguard.common.usecase.impl.AddEmailRelayImpl +import com.artemchep.keyguard.common.usecase.impl.AddGeneratorHistoryImpl +import com.artemchep.keyguard.common.usecase.impl.DownloadAttachmentImpl2 +import com.artemchep.keyguard.common.usecase.impl.GetAccountStatusImpl +import com.artemchep.keyguard.common.usecase.impl.GetCanAddAccountImpl +import com.artemchep.keyguard.common.usecase.impl.GetEnvSendUrlImpl +import com.artemchep.keyguard.common.usecase.impl.GetGeneratorHistoryImpl +import com.artemchep.keyguard.common.usecase.impl.GetShouldRequestAppReviewImpl +import com.artemchep.keyguard.common.usecase.impl.RemoveGeneratorHistoryByIdImpl +import com.artemchep.keyguard.common.usecase.impl.RemoveGeneratorHistoryImpl +import com.artemchep.keyguard.core.store.DatabaseSyncer +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipherRepositoryImpl +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCollectionRepositoryImpl +import com.artemchep.keyguard.core.store.bitwarden.BitwardenFolderRepositoryImpl +import com.artemchep.keyguard.core.store.bitwarden.BitwardenMetaRepositoryImpl +import com.artemchep.keyguard.core.store.bitwarden.BitwardenOrganizationRepositoryImpl +import com.artemchep.keyguard.core.store.bitwarden.BitwardenProfileRepositoryImpl +import com.artemchep.keyguard.core.store.bitwarden.BitwardenSendRepositoryImpl +import com.artemchep.keyguard.core.store.bitwarden.BitwardenTokenRepositoryImpl +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenCipherRepository +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenCollectionRepository +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenFolderRepository +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenMetaRepository +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenOrganizationRepository +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenProfileRepository +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenSendRepository +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenTokenRepository +import com.artemchep.keyguard.provider.bitwarden.usecase.AddCipherImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.AddCipherOpenedHistoryImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.AddCipherUsedAutofillHistoryImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.AddCipherUsedPasskeyHistoryImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.AddFolderImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.AddPasskeyCipherImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.AddUriCipherImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.ChangeCipherNameByIdImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.ChangeCipherPasswordByIdImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.CheckPasswordLeakImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.CheckPasswordSetLeakImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.CheckUsernameLeakImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.CipherBreachCheckImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.CipherDuplicatesCheckImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.CipherExpiringCheckImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.CipherFieldSwitchToggleImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.CipherIncompleteCheckImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.CipherMergeImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.CipherRemovePasswordHistoryByIdImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.CipherRemovePasswordHistoryImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.CipherUnsecureUrlAutoFixImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.CipherUnsecureUrlCheckImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.CopyCipherByIdImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.FavouriteCipherByIdImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.GetAccountHasErrorImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.GetAccountsHasErrorImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.GetAccountsImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.GetCipherOpenedCountImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.GetCipherOpenedHistoryImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.GetCiphersImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.GetCollectionsImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.GetEmailRelaysImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.GetFingerprintImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.GetFolderTreeByIdImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.GetFolderTreeImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.GetFoldersImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.GetMetasImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.GetOrganizationsImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.GetProfilesImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.GetSendsImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.MergeFolderByIdImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.MoveCipherToFolderByIdImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.PutAccountColorByIdImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.PutAccountMasterPasswordHintByIdImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.PutAccountNameByIdImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.RePromptCipherByIdImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.RemoveAccountByIdImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.RemoveAccountsImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.RemoveCipherByIdImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.RemoveEmailRelayByIdImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.RemoveFolderByIdImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.RenameFolderByIdImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.RestoreCipherByIdImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.RetryCipherImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.SyncAllImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.SyncByIdImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.TrashCipherByFolderIdImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.TrashCipherByIdImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.internal.AddAccount +import com.artemchep.keyguard.provider.bitwarden.usecase.internal.AddAccountImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.internal.RequestEmailTfa +import com.artemchep.keyguard.provider.bitwarden.usecase.internal.RequestEmailTfaImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.internal.SyncByToken +import com.artemchep.keyguard.provider.bitwarden.usecase.internal.SyncByTokenImpl +import com.artemchep.keyguard.provider.bitwarden.usecase.util.ModifyCipherById +import com.artemchep.keyguard.provider.bitwarden.usecase.util.ModifyDatabase +import com.artemchep.keyguard.provider.bitwarden.usecase.util.ModifyFolderById +import com.artemchep.keyguard.provider.bitwarden.usecase.util.ModifyProfileById +import org.kodein.di.DI +import org.kodein.di.bindSingleton +import org.kodein.di.instance + +expect fun DI.Builder.createSubDi( + masterKey: MasterKey, +) + +fun DI.Builder.createSubDi2( + masterKey: MasterKey, +) { + bindSingleton { + DownloadAttachmentImpl2(this) + } + bindSingleton { + GetCanAddAccountImpl(this) + } + bindSingleton { + GetEnvSendUrlImpl( + directDI = this, + ) + } + bindSingleton { + GetEmailRelaysImpl(this) + } + bindSingleton { + AddEmailRelayImpl(this) + } + bindSingleton { + RemoveEmailRelayByIdImpl(this) + } + bindSingleton { + GetAccountsImpl(this) + } + bindSingleton { + GetAccountStatusImpl(this) + } + bindSingleton { + GetAccountsHasErrorImpl(this) + } + bindSingleton { + GetAccountHasErrorImpl(this) + } + bindSingleton { + GetCiphersImpl(this) + } + bindSingleton { + GetSendsImpl(this) + } + bindSingleton { + GetCollectionsImpl(this) + } + bindSingleton { + GetOrganizationsImpl(this) + } + bindSingleton { + GetFingerprintImpl(this) + } + bindSingleton { + GetFoldersImpl(this) + } + bindSingleton { + GetFolderTreeImpl(this) + } + bindSingleton { + GetFolderTreeByIdImpl(this) + } + bindSingleton { + GetProfilesImpl(this) + } + bindSingleton { + GetMetasImpl(this) + } + bindSingleton { + AddAccountImpl(this) + } + bindSingleton { + RequestEmailTfaImpl(this) + } + bindSingleton { + RotateDeviceIdUseCase(this) + } + bindSingleton { + RemoveAccountsImpl(this) + } + bindSingleton { + RemoveAccountByIdImpl(this) + } + bindSingleton { + ModifyCipherById(this) + } + bindSingleton { + ModifyFolderById(this) + } + bindSingleton { + ModifyProfileById(this) + } + bindSingleton { + ModifyDatabase(this) + } + bindSingleton { + TrashCipherByIdImpl(this) + } + bindSingleton { + TrashCipherByFolderIdImpl(this) + } + bindSingleton { + RestoreCipherByIdImpl(this) + } + bindSingleton { + MoveCipherToFolderByIdImpl(this) + } + bindSingleton { + RemoveCipherByIdImpl(this) + } + bindSingleton { + RemoveFolderByIdImpl(this) + } + bindSingleton { + MergeFolderByIdImpl(this) + } + bindSingleton { + ChangeCipherPasswordByIdImpl(this) + } + bindSingleton { + ChangeCipherNameByIdImpl(this) + } + bindSingleton { + RetryCipherImpl(this) + } + bindSingleton { + CipherFieldSwitchToggleImpl(this) + } + bindSingleton { + CipherUnsecureUrlAutoFixImpl(this) + } + bindSingleton { + CipherToolboxImpl(this) + } + bindSingleton { + CipherUnsecureUrlCheckImpl(this) + } + bindSingleton { + CipherIncompleteCheckImpl(this) + } + bindSingleton { + CipherMergeImpl(this) + } + bindSingleton { + CipherExpiringCheckImpl(this) + } + bindSingleton { + CipherBreachCheckImpl(this) + } + bindSingleton { + CipherDuplicatesCheckImpl(this) + } + bindSingleton { + RenameFolderByIdImpl(this) + } + bindSingleton { + CheckPasswordLeakImpl(this) + } + bindSingleton { + CheckPasswordSetLeakImpl(this) + } + bindSingleton { + CheckUsernameLeakImpl(this) + } + bindSingleton { + AddFolderImpl(this) + } + bindSingleton { + PutAccountColorByIdImpl(this) + } + bindSingleton { + PutAccountMasterPasswordHintByIdImpl(this) + } + bindSingleton { + PutAccountNameByIdImpl(this) + } + bindSingleton { + GetGeneratorHistoryImpl( + directDI = this, + ) + } + bindSingleton { + RemoveGeneratorHistoryImpl( + directDI = this, + ) + } + bindSingleton { + RemoveGeneratorHistoryByIdImpl( + directDI = this, + ) + } + bindSingleton { + AddGeneratorHistoryImpl( + directDI = this, + ) + } + bindSingleton { + AddCipherImpl(this) + } + bindSingleton { + AddCipherOpenedHistoryImpl(this) + } + bindSingleton { + AddCipherUsedAutofillHistoryImpl(this) + } + bindSingleton { + AddCipherUsedPasskeyHistoryImpl(this) + } + bindSingleton { + GetCipherOpenedHistoryImpl(this) + } + bindSingleton { + GetCipherOpenedCountImpl(this) + } + bindSingleton { + GetShouldRequestAppReviewImpl(this) + } + bindSingleton { + CipherHistoryOpenedRepositoryImpl(this) + } + bindSingleton { + GeneratorHistoryRepositoryImpl(this) + } + bindSingleton { + GeneratorEmailRelayRepositoryImpl(this) + } + bindSingleton { + PasswordPwnageDataSourceLocalImpl(this) + } + bindSingleton { + PasswordPwnageDataSourceRemoteImpl(this) + } + bindSingleton { + PasswordPwnageRepositoryImpl(this) + } + bindSingleton { + BreachesRemoteDataSourceImpl(this) + } + bindSingleton { + BreachesLocalDataSourceImpl(this) + } + bindSingleton { + BreachesRepositoryImpl(this) + } + bindSingleton { + AddUriCipherImpl(this) + } + bindSingleton { + AddPasskeyCipherImpl(this) + } + bindSingleton { + FavouriteCipherByIdImpl(this) + } + bindSingleton { + RePromptCipherByIdImpl(this) + } + bindSingleton { + CopyCipherByIdImpl(this) + } + bindSingleton { + CipherRemovePasswordHistoryByIdImpl(this) + } + bindSingleton { + CipherRemovePasswordHistoryImpl(this) + } + bindSingleton { + SyncAllImpl(this) + } + bindSingleton { + SyncByIdImpl(this) + } + bindSingleton { + SyncByTokenImpl(this) + } + bindSingleton { + WatchdogImpl() + } + bindSingleton { + instance() + } + bindSingleton { + instance() + } + + bindSingleton { masterKey } + bindSingleton { + BitwardenTokenRepositoryImpl(this) + } + bindSingleton { + BitwardenSendRepositoryImpl(this) + } + bindSingleton { + BitwardenCipherRepositoryImpl(this) + } + bindSingleton { + BitwardenCollectionRepositoryImpl(this) + } + bindSingleton { + BitwardenOrganizationRepositoryImpl(this) + } + bindSingleton { + BitwardenFolderRepositoryImpl(this) + } + bindSingleton { + BitwardenProfileRepositoryImpl(this) + } + bindSingleton { + BitwardenMetaRepositoryImpl(this) + } + bindSingleton { + DatabaseSyncer( + cryptoGenerator = instance(), + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/core/session/util/EncodeByCipher.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/session/util/EncodeByCipher.kt new file mode 100644 index 00000000..2a94749f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/session/util/EncodeByCipher.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.core.session.util + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.platform.LeCipher + +expect fun ByteArray.encode(cipher: IO): IO + +expect fun IO.encode(cipher: IO): IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/DatabaseDispatcher.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/DatabaseDispatcher.kt new file mode 100644 index 00000000..61c60f43 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/DatabaseDispatcher.kt @@ -0,0 +1,3 @@ +package com.artemchep.keyguard.core.store + +object DatabaseDispatcher diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/DatabaseManager.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/DatabaseManager.kt new file mode 100644 index 00000000..f87fecf9 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/DatabaseManager.kt @@ -0,0 +1,220 @@ +package com.artemchep.keyguard.core.store + +import app.cash.sqldelight.ColumnAdapter +import app.cash.sqldelight.db.SqlDriver +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.io.io +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.io.retry +import com.artemchep.keyguard.common.io.shared +import com.artemchep.keyguard.common.model.MasterKey +import com.artemchep.keyguard.common.service.logging.LogRepository +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCollection +import com.artemchep.keyguard.core.store.bitwarden.BitwardenFolder +import com.artemchep.keyguard.core.store.bitwarden.BitwardenMeta +import com.artemchep.keyguard.core.store.bitwarden.BitwardenOrganization +import com.artemchep.keyguard.core.store.bitwarden.BitwardenProfile +import com.artemchep.keyguard.core.store.bitwarden.BitwardenSend +import com.artemchep.keyguard.core.store.bitwarden.BitwardenToken +import com.artemchep.keyguard.data.CipherUsageHistory +import com.artemchep.keyguard.data.Database +import com.artemchep.keyguard.data.GeneratorEmailRelay +import com.artemchep.keyguard.data.GeneratorHistory +import com.artemchep.keyguard.data.bitwarden.Account +import com.artemchep.keyguard.data.bitwarden.Cipher +import com.artemchep.keyguard.data.bitwarden.Collection +import com.artemchep.keyguard.data.bitwarden.Folder +import com.artemchep.keyguard.data.bitwarden.Meta +import com.artemchep.keyguard.data.bitwarden.Organization +import com.artemchep.keyguard.data.bitwarden.Profile +import com.artemchep.keyguard.data.bitwarden.Send +import com.artemchep.keyguard.data.pwnage.AccountBreach +import com.artemchep.keyguard.data.pwnage.PasswordBreach +import com.artemchep.keyguard.provider.bitwarden.entity.HibpBreachGroup +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock +import kotlinx.datetime.Instant +import kotlinx.serialization.InternalSerializationApi +import kotlinx.serialization.KSerializer +import kotlinx.serialization.json.Json +import kotlinx.serialization.serializer + +interface DatabaseManager { + fun get(): IO + + fun mutate( + block: suspend (Database) -> T, + ): IO + + /** + * Changes the password of the database. After executing the function, you must create a + * new database manager with a new master key. + */ + fun changePassword(newMasterKey: MasterKey): IO +} + +interface SqlManager { + fun create( + masterKey: MasterKey, + databaseFactory: (SqlDriver) -> Database, + ): IO +} + +interface SqlHelper { + val driver: SqlDriver + + val database: Database + + /** + * Changes the password of the database. After executing the function, you should create a + * new database manager with a new master key. + */ + fun changePassword(newMasterKey: MasterKey): IO +} + +class DatabaseManagerImpl( + private val logRepository: LogRepository, + private val json: Json, + private val sqlManager: SqlManager, + masterKey: MasterKey, +) : DatabaseManager { + companion object { + private const val TAG = "DatabaseManager" + + private val mutex = Mutex() + } + + private val bitwardenCipherToStringAdapter = BitwardenCipherToStringAdapter(json) + private val bitwardenSendToStringAdapter = BitwardenSendToStringAdapter(json) + private val bitwardenCollectionToStringAdapter = BitwardenCollectionToStringAdapter(json) + private val bitwardenFolderToStringAdapter = BitwardenFolderToStringAdapter(json) + private val bitwardenMetaToStringAdapter = BitwardenMetaToStringAdapter(json) + private val bitwardenOrganizationToStringAdapter = BitwardenOrganizationToStringAdapter(json) + private val bitwardenProfileToStringAdapter = BitwardenProfileToStringAdapter(json) + private val bitwardenTokenToStringAdapter = BitwardenTokenToStringAdapter(json) + private val hibpAccountBreachToStringAdapter = HibpAccountBreachToStringAdapter(json) + + private val dbIo = io(masterKey) + .effectMap { masterKey -> + val databaseFactory = { driver: SqlDriver -> + Database( + driver = driver, + cipherUsageHistoryAdapter = CipherUsageHistory.Adapter(InstantToLongAdapter), + generatorHistoryAdapter = GeneratorHistory.Adapter(InstantToLongAdapter), + generatorEmailRelayAdapter = GeneratorEmailRelay.Adapter(InstantToLongAdapter), + cipherAdapter = Cipher.Adapter(bitwardenCipherToStringAdapter), + sendAdapter = Send.Adapter(bitwardenSendToStringAdapter), + collectionAdapter = Collection.Adapter(bitwardenCollectionToStringAdapter), + folderAdapter = Folder.Adapter(bitwardenFolderToStringAdapter), + metaAdapter = Meta.Adapter(bitwardenMetaToStringAdapter), + organizationAdapter = Organization.Adapter(bitwardenOrganizationToStringAdapter), + profileAdapter = Profile.Adapter(bitwardenProfileToStringAdapter), + accountAdapter = Account.Adapter(bitwardenTokenToStringAdapter), + passwordBreachAdapter = PasswordBreach.Adapter( + updatedAtAdapter = InstantToLongAdapter, + ), + accountBreachAdapter = AccountBreach.Adapter( + updatedAtAdapter = InstantToLongAdapter, + data_Adapter = hibpAccountBreachToStringAdapter, + ), + ) + } + val sqlHelper = sqlManager + .create(masterKey, databaseFactory) + .bind() + sqlHelper + } + .retry { e, attempt -> + e.printStackTrace() + false + } + .shared() + + override fun get() = dbIo.map { it.database } + + override fun mutate( + block: suspend (Database) -> T, + ) = dbIo + .effectMap(Dispatchers.IO) { db -> + mutex.withLock { + block(db.database) + } + } + + /** + * Changes the password of the database. After executing the function, you must create a + * new database manager with a new master key. + */ + override fun changePassword(newMasterKey: MasterKey) = dbIo + .effectMap(Dispatchers.IO) { db -> + mutex.withLock { + db.changePassword(newMasterKey) + .bind() + } + } +} + +private object InstantToLongAdapter : ColumnAdapter { + override fun decode(databaseValue: Long) = Instant.fromEpochMilliseconds(databaseValue) + + override fun encode(value: Instant) = value.toEpochMilliseconds() +} + +private class BitwardenCipherToStringAdapter( + private val json: Json, +) : ColumnAdapter by ObjectToStringAdapter(json) + +private class BitwardenSendToStringAdapter( + private val json: Json, +) : ColumnAdapter by ObjectToStringAdapter(json) + +private class BitwardenCollectionToStringAdapter( + private val json: Json, +) : ColumnAdapter by ObjectToStringAdapter(json) + +private class BitwardenFolderToStringAdapter( + private val json: Json, +) : ColumnAdapter by ObjectToStringAdapter(json) + +private class BitwardenMetaToStringAdapter( + private val json: Json, +) : ColumnAdapter by ObjectToStringAdapter(json) + +private class BitwardenOrganizationToStringAdapter( + private val json: Json, +) : ColumnAdapter by ObjectToStringAdapter(json) + +private class BitwardenProfileToStringAdapter( + private val json: Json, +) : ColumnAdapter by ObjectToStringAdapter(json) + +private class BitwardenTokenToStringAdapter( + private val json: Json, +) : ColumnAdapter by ObjectToStringAdapter(json) + +private class HibpAccountBreachToStringAdapter( + private val json: Json, +) : ColumnAdapter by ObjectToStringAdapter(json) + +private class ObjectToStringAdapter( + private val serializer: KSerializer, + private val json: Json, +) : ColumnAdapter { + companion object { + @OptIn(InternalSerializationApi::class) + inline operator fun invoke( + json: Json, + ) = ObjectToStringAdapter( + serializer = T::class.serializer(), + json = json, + ) + } + + override fun decode(databaseValue: String) = json.decodeFromString(serializer, databaseValue) + + override fun encode(value: T) = json.encodeToString(serializer, value) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/DatabaseSyncer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/DatabaseSyncer.kt new file mode 100644 index 00000000..d9e3c35e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/DatabaseSyncer.kt @@ -0,0 +1,171 @@ +package com.artemchep.keyguard.core.store + +import com.artemchep.keyguard.common.service.crypto.CryptoGenerator +import kotlinx.coroutines.CancellationException +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Job +import kotlinx.coroutines.suspendCancellableCoroutine +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.yield +import kotlin.contracts.ExperimentalContracts +import kotlin.contracts.InvocationKind +import kotlin.contracts.contract + +class DatabaseSyncer( + private val cryptoGenerator: CryptoGenerator, +) { + sealed interface Key { + data class User( + val id: String, + ) : Key + + data class Profile( + val id: String, + ) : Key + + data class Cipher( + val id: String, + ) : Key + + data class Folder( + val id: String, + ) : Key + + data class Collection( + val id: String, + ) : Key + + data class Organization( + val id: String, + ) : Key + } + + private interface SimpleMutex { + /** + * Locks this mutex, suspending caller while the mutex is locked. + * + * This suspending function is cancellable. If the [Job] of the current coroutine is cancelled or completed while this + * function is suspended, this function immediately resumes with [CancellationException]. + * There is a **prompt cancellation guarantee**. If the job was cancelled while this function was + * suspended, it will not resume successfully. See [suspendCancellableCoroutine] documentation for low-level details. + * This function releases the lock if it was already acquired by this function before the [CancellationException] + * was thrown. + * + * Note that this function does not check for cancellation when it is not suspended. + * Use [yield] or [CoroutineScope.isActive] to periodically check for cancellation in tight loops if needed. + * + * This function is fair; suspended callers are resumed in first-in-first-out order. + * + * @param owner Optional owner token for debugging. When `owner` is specified (non-null value) and this mutex + * is already locked with the same token (same identity), this function throws [IllegalStateException]. + */ + suspend fun lock(owner: Any? = null) + + /** + * Unlocks this mutex. Throws [IllegalStateException] if invoked on a mutex that is not locked or + * was locked with a different owner token (by identity). + * + * @param owner Optional owner token for debugging. When `owner` is specified (non-null value) and this mutex + * was locked with the different token (by identity), this function throws [IllegalStateException]. + */ + fun unlock(owner: Any? = null) + } + + /** + * Executes the given [action] under this mutex's lock. + * + * @param owner Optional owner token for debugging. When `owner` is specified (non-null value) and this mutex + * is already locked with the same token (same identity), this function throws [IllegalStateException]. + * + * @return the return value of the action. + */ + @OptIn(ExperimentalContracts::class) + private suspend inline fun SimpleMutex.withLock(owner: Any? = null, action: () -> T): T { + contract { + callsInPlace(action, InvocationKind.EXACTLY_ONCE) + } + + lock(owner) + try { + return action() + } finally { + unlock(owner) + } + } + + private data class Entry( + val key: String, + val mutex: SimpleMutex, + ) + + private val map: MutableMap> = mutableMapOf() + + suspend fun withLock( + vararg keys: Key, + block: suspend () -> T, + ): T { + val id = cryptoGenerator.uuid() + try { + val mutex = synchronized(map) { + val entry = kotlin.run { + val existingLocks = keys.flatMap { key -> map[key].orEmpty() } + val newLock: SimpleMutex = + object : SimpleMutex { + private val mutex = Mutex() + + override suspend fun lock(owner: Any?) { + existingLocks.forEach { entry -> entry.mutex.lock(owner) } + mutex.lock(owner) + } + + override fun unlock(owner: Any?) { + mutex.unlock(owner) + existingLocks.forEach { entry -> entry.mutex.unlock(owner) } + } + } + Entry( + key = id, + mutex = newLock, + ) + } + + keys.forEach { key -> + val list = map[key] + if (list != null) { + list += entry + } else { + val newList = mutableListOf(entry) + map[key] = newList + } + } + + entry.mutex + } + return mutex.withLock { + block() + } + } finally { + synchronized(map) { + keys.forEach { key -> + val list = map[key] + if (list != null) { + var i = 0 + while (i < list.size) { + val el = list[i] + if (el.key == id) { + list.removeAt(i) + } else { + i++ + } + } + if (list.isEmpty()) { + map.remove(key) + } + } else { + error("Trying to remove mutex that does not exist!") + } + } + } + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenCipher.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenCipher.kt new file mode 100644 index 00000000..963ebf82 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenCipher.kt @@ -0,0 +1,297 @@ +package com.artemchep.keyguard.core.store.bitwarden + +import arrow.optics.optics +import kotlinx.datetime.Clock +import kotlinx.datetime.Instant +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import java.util.UUID +import kotlin.time.Duration.Companion.days + +@Serializable +@optics +data class BitwardenCipher( + /** + * Id of the bitwarden account, generated on + * login. + */ + val accountId: String, + val cipherId: String, + val folderId: String? = null, + val organizationId: String? = null, + val collectionIds: Set = emptySet(), + val revisionDate: Instant, + val createdDate: Instant? = null, + val deletedDate: Instant? = null, + // service fields + override val service: BitwardenService, + // common + val name: String?, + val notes: String?, + val favorite: Boolean, + val fields: List = emptyList(), + val attachments: List = emptyList(), + val reprompt: RepromptType, + // types + val type: Type, + val login: Login? = null, + val secureNote: SecureNote? = null, + val card: Card? = null, + val identity: Identity? = null, +) : BitwardenService.Has { + companion object; + + override fun withService(service: BitwardenService) = copy(service = service) + + @Serializable + enum class Type { + Login, + SecureNote, + Card, + Identity, + } + + @Serializable + sealed interface Attachment { + companion object; + + val id: String + val url: String? + + @Serializable + @SerialName("remote") + data class Remote( + override val id: String, + override val url: String?, + val fileName: String, + val keyBase64: String, + val size: Long, + ) : Attachment { + companion object + } + + @Serializable + @SerialName("local") + data class Local( + override val id: String, + override val url: String, + val fileName: String, + val size: Long? = null, + ) : Attachment { + companion object + } + } + + @Serializable + data class Field( + val name: String? = null, + val value: String? = null, + val linkedId: LinkedId? = null, + val type: Type, + ) { + @Serializable + enum class Type { + Text, + Hidden, + Boolean, + Linked, + } + + @Serializable + enum class LinkedId { + Login_Username, + Login_Password, + + // card + Card_CardholderName, + Card_ExpMonth, + Card_ExpYear, + Card_Code, + Card_Brand, + Card_Number, + + // identity + Identity_Title, + Identity_MiddleName, + Identity_Address1, + Identity_Address2, + Identity_Address3, + Identity_City, + Identity_State, + Identity_PostalCode, + Identity_Country, + Identity_Company, + Identity_Email, + Identity_Phone, + Identity_Ssn, + Identity_Username, + Identity_PassportNumber, + Identity_LicenseNumber, + Identity_FirstName, + Identity_LastName, + Identity_FullName, + ; + + companion object + } + } + + @Serializable + enum class RepromptType { + None, + Password, + } + + // + // Types + // + + @optics + @Serializable + data class Login( + val username: String? = null, + val password: String? = null, + val passwordStrength: PasswordStrength? = null, + val passwordRevisionDate: Instant? = null, + val passwordHistory: List = emptyList(), + val uris: List, + val fido2Credentials: List = emptyList(), + val totp: String? = null, + ) { + companion object; + + @Serializable + data class PasswordHistory( + val password: String, + val lastUsedDate: Instant, + ) { + val id = "$password|timestamp=$lastUsedDate" + } + + @Serializable + data class PasswordStrength( + val password: String, + val crackTimeSeconds: Long, + val version: Long, + ) + + @Serializable + data class Uri( + val uri: String? = null, + val match: MatchType? = null, + ) { + @Serializable + enum class MatchType { + Domain, + Host, + StartsWith, + Exact, + RegularExpression, + Never, + } + } + + @Serializable + data class Fido2Credentials( + val credentialId: String? = null, + val keyType: String, + val keyAlgorithm: String, + val keyCurve: String, + val keyValue: String, + val rpId: String, + val rpName: String, + val counter: String, + val userHandle: String, + val userName: String? = null, + val userDisplayName: String? = null, + val discoverable: String, + val creationDate: Instant, + ) + } + + @Serializable + data class Card( + val cardholderName: String? = null, + val brand: String? = null, + val number: String? = null, + val expMonth: String? = null, + val expYear: String? = null, + val code: String? = null, + ) { + companion object + } + + @Serializable + data class Identity( + val title: String? = null, + val firstName: String? = null, + val middleName: String? = null, + val lastName: String? = null, + val address1: String? = null, + val address2: String? = null, + val address3: String? = null, + val city: String? = null, + val state: String? = null, + val postalCode: String? = null, + val country: String? = null, + val company: String? = null, + val email: String? = null, + val phone: String? = null, + val ssn: String? = null, + val username: String? = null, + val passportNumber: String? = null, + val licenseNumber: String? = null, + ) { + companion object + } + + @Serializable + data class SecureNote( + val type: Type = Type.Generic, + ) { + companion object + + @Serializable + enum class Type { + Generic, + } + } +} + +fun BitwardenCipher.Companion.generated(): BitwardenCipher { + val accountIds = listOf( + "account_a", + "account_b", + "account_c", + ) + val folderIds = listOf( + "folder_a", + "folder_b", + "folder_c", + null, + ) + val name = listOf( + "**Lorem ipsum dolor sit amet**, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim medicorum scientiam non ipsius artis, sed bonae valetudinis causa probamus, et gubernatoris ars, quia bene navigandi rationem habet, utilitate, non arte.\n" + + "\n" + + "Qui officia deserunt mollit anim id est voluptatem et dolorem. Ad haec et quae fugiamus refert omnia. Quod quamquam Aristippi est a Chrysippo praetermissum in Stoicis? Legimus tamen Diogenem, Antipatrum, Mnesarchum, Panaetium, multos alios in primisque familiarem nostrum Posidonium. Quid? Theophrastus mediocriterne delectat, cum tractat locos ab Aristotele ante tractatos? Quid? Epicurei num desistunt de isdem, de quibus ante dictum.\n" + + "\n" + + "Cum ita esset affecta, secundum non recte, si voluptas esset bonum, fuisse desideraturam. Idcirco enim non desideraret, quia, quod dolore caret, id in hominum consuetudine facilius fieri poterit et iustius?", + ) + return BitwardenCipher( + cipherId = UUID.randomUUID().toString(), + accountId = accountIds.random(), + folderId = folderIds.random(), + revisionDate = Clock.System.now().minus(20L.days), + service = BitwardenService(), + favorite = Math.random() > 0.5f, + reprompt = BitwardenCipher.RepromptType.None, + name = name.random(), + notes = name.random(), + type = BitwardenCipher.Type.Login, + login = BitwardenCipher.Login( + username = "test", + password = "qwerty", + uris = listOf(), + ), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl.kt new file mode 100644 index 00000000..9a331cc5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenCipherRepositoryImpl.kt @@ -0,0 +1,64 @@ +package com.artemchep.keyguard.core.store.bitwarden + +import app.cash.sqldelight.coroutines.asFlow +import app.cash.sqldelight.coroutines.mapToList +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.io.toIO +import com.artemchep.keyguard.core.store.DatabaseDispatcher +import com.artemchep.keyguard.core.store.DatabaseManager +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenCipherRepository +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.asFlow +import kotlinx.coroutines.flow.catch +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.shareIn +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class BitwardenCipherRepositoryImpl( + private val databaseManager: DatabaseManager, + private val dispatcher: CoroutineDispatcher, +) : BitwardenCipherRepository { + constructor(directDI: DirectDI) : this( + databaseManager = directDI.instance(), + dispatcher = directDI.instance(tag = DatabaseDispatcher), + ) + + override fun get(): Flow> = databaseManager + .get() + .asFlow() + .flatMapLatest { db -> + db.cipherQueries + .get() + .asFlow() + .mapToList(dispatcher) + .catch { + } + .map { + it.map { it.data_ } + } + } + .shareIn(GlobalScope, SharingStarted.WhileSubscribed(1000L), replay = 1) + + override fun getById(id: String): IO = get() + .toIO() + .effectMap { ciphers -> + ciphers.firstOrNull { it.cipherId == id } + } + + override fun put(model: BitwardenCipher): IO = databaseManager + .get() + .effectMap(dispatcher) { + it.cipherQueries.insert( + accountId = model.accountId, + cipherId = model.cipherId, + folderId = null, + data = model, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenCollection.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenCollection.kt new file mode 100644 index 00000000..45791e36 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenCollection.kt @@ -0,0 +1,30 @@ +package com.artemchep.keyguard.core.store.bitwarden + +import arrow.optics.optics +import kotlinx.datetime.Instant +import kotlinx.serialization.Serializable + +@Serializable +@optics +data class BitwardenCollection( + /** + * Id of the bitwarden account, generated on + * login. + */ + val accountId: String, + val collectionId: String, + val externalId: String?, + val organizationId: String?, + val revisionDate: Instant, + val deletedDate: Instant? = null, + // service fields + override val service: BitwardenService, + // common + val name: String, + val hidePasswords: Boolean, + val readOnly: Boolean, +) : BitwardenService.Has { + companion object; + + override fun withService(service: BitwardenService) = copy(service = service) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl.kt new file mode 100644 index 00000000..fccdcc9a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenCollectionRepositoryImpl.kt @@ -0,0 +1,49 @@ +package com.artemchep.keyguard.core.store.bitwarden + +import app.cash.sqldelight.coroutines.asFlow +import app.cash.sqldelight.coroutines.mapToList +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.core.store.DatabaseDispatcher +import com.artemchep.keyguard.core.store.DatabaseManager +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenCollectionRepository +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.asFlow +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.shareIn +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class BitwardenCollectionRepositoryImpl( + private val databaseManager: DatabaseManager, + private val dispatcher: CoroutineDispatcher, +) : BitwardenCollectionRepository { + constructor(directDI: DirectDI) : this( + databaseManager = directDI.instance(), + dispatcher = directDI.instance(tag = DatabaseDispatcher), + ) + + override fun get(): Flow> = databaseManager + .get() + .asFlow() + .flatMapLatest { db -> + db.collectionQueries + .get() + .asFlow() + .mapToList(dispatcher) + .map { + it.map { it.data_ } + } + } + .shareIn(GlobalScope, SharingStarted.WhileSubscribed(1000L), replay = 1) + + override fun put(model: BitwardenCollection): IO = databaseManager + .get() + .map { + TODO() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenFolder.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenFolder.kt new file mode 100644 index 00000000..60ba629f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenFolder.kt @@ -0,0 +1,25 @@ +package com.artemchep.keyguard.core.store.bitwarden + +import arrow.optics.optics +import kotlinx.datetime.Instant +import kotlinx.serialization.Serializable + +@Serializable +@optics +data class BitwardenFolder( + /** + * Id of the bitwarden account, generated on + * login. + */ + val accountId: String, + val folderId: String, + val revisionDate: Instant, + // service fields + override val service: BitwardenService, + // common + val name: String, +) : BitwardenService.Has { + companion object; + + override fun withService(service: BitwardenService) = copy(service = service) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl.kt new file mode 100644 index 00000000..094be468 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenFolderRepositoryImpl.kt @@ -0,0 +1,49 @@ +package com.artemchep.keyguard.core.store.bitwarden + +import app.cash.sqldelight.coroutines.asFlow +import app.cash.sqldelight.coroutines.mapToList +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.core.store.DatabaseDispatcher +import com.artemchep.keyguard.core.store.DatabaseManager +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenFolderRepository +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.asFlow +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.shareIn +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class BitwardenFolderRepositoryImpl( + private val databaseManager: DatabaseManager, + private val dispatcher: CoroutineDispatcher, +) : BitwardenFolderRepository { + constructor(directDI: DirectDI) : this( + databaseManager = directDI.instance(), + dispatcher = directDI.instance(tag = DatabaseDispatcher), + ) + + override fun get(): Flow> = databaseManager + .get() + .asFlow() + .flatMapLatest { db -> + db.folderQueries + .get() + .asFlow() + .mapToList(dispatcher) + .map { + it.map { it.data_ } + } + } + .shareIn(GlobalScope, SharingStarted.WhileSubscribed(1000L), replay = 1) + + override fun put(model: BitwardenFolder): IO = databaseManager + .get() + .map { + TODO() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenMeta.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenMeta.kt new file mode 100644 index 00000000..a31c1e30 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenMeta.kt @@ -0,0 +1,40 @@ +package com.artemchep.keyguard.core.store.bitwarden + +import arrow.optics.optics +import kotlinx.datetime.Instant +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +@optics +data class BitwardenMeta( + /** + * Id of the bitwarden account, generated on + * login. + */ + val accountId: String, + // common + val lastSyncTimestamp: Instant? = null, + val lastSyncResult: LastSyncResult? = null, +) { + companion object; + + @Serializable + sealed interface LastSyncResult { + @Serializable + @SerialName("success") + data object Success : LastSyncResult + + @Serializable + @SerialName("failure") + data class Failure( + val timestamp: Instant, + val reason: String? = null, + /** + * `true` if you should ask user to authenticate to use + * this account, `false` otherwise. + */ + val requiresAuthentication: Boolean = false, + ) : LastSyncResult + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl.kt new file mode 100644 index 00000000..10194044 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenMetaRepositoryImpl.kt @@ -0,0 +1,49 @@ +package com.artemchep.keyguard.core.store.bitwarden + +import app.cash.sqldelight.coroutines.asFlow +import app.cash.sqldelight.coroutines.mapToList +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.core.store.DatabaseDispatcher +import com.artemchep.keyguard.core.store.DatabaseManager +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenMetaRepository +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.asFlow +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.shareIn +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class BitwardenMetaRepositoryImpl( + private val databaseManager: DatabaseManager, + private val dispatcher: CoroutineDispatcher, +) : BitwardenMetaRepository { + constructor(directDI: DirectDI) : this( + databaseManager = directDI.instance(), + dispatcher = directDI.instance(tag = DatabaseDispatcher), + ) + + override fun get(): Flow> = databaseManager + .get() + .asFlow() + .flatMapLatest { db -> + db.metaQueries + .get() + .asFlow() + .mapToList(dispatcher) + .map { + it.map { it.data_ } + } + } + .shareIn(GlobalScope, SharingStarted.WhileSubscribed(1000L), replay = 1) + + override fun put(model: BitwardenMeta): IO = databaseManager + .get() + .map { + TODO() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenOrganization.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenOrganization.kt new file mode 100644 index 00000000..f04eeaf0 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenOrganization.kt @@ -0,0 +1,29 @@ +package com.artemchep.keyguard.core.store.bitwarden + +import arrow.optics.optics +import kotlinx.datetime.Instant +import kotlinx.serialization.Serializable + +@Serializable +@optics +data class BitwardenOrganization( + /** + * Id of the bitwarden account, generated on + * login. + */ + val accountId: String, + val organizationId: String, + val revisionDate: Instant, + val deletedDate: Instant? = null, + // service fields + override val service: BitwardenService, + // common + val name: String, + val avatarColor: String? = null, + val selfHost: Boolean = false, + val keyBase64: String = "", +) : BitwardenService.Has { + companion object; + + override fun withService(service: BitwardenService) = copy(service = service) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl.kt new file mode 100644 index 00000000..66366390 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenOrganizationRepositoryImpl.kt @@ -0,0 +1,60 @@ +package com.artemchep.keyguard.core.store.bitwarden + +import app.cash.sqldelight.coroutines.asFlow +import app.cash.sqldelight.coroutines.mapToList +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.core.store.DatabaseDispatcher +import com.artemchep.keyguard.core.store.DatabaseManager +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenOrganizationRepository +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.asFlow +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.shareIn +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class BitwardenOrganizationRepositoryImpl( + private val databaseManager: DatabaseManager, + private val dispatcher: CoroutineDispatcher, +) : BitwardenOrganizationRepository { + constructor(directDI: DirectDI) : this( + databaseManager = directDI.instance(), + dispatcher = directDI.instance(tag = DatabaseDispatcher), + ) + + override fun get(): Flow> = databaseManager + .get() + .asFlow() + .flatMapLatest { db -> + db.organizationQueries + .get() + .asFlow() + .mapToList(dispatcher) + .map { + it.map { it.data_ } + } + } + .shareIn(GlobalScope, SharingStarted.WhileSubscribed(1000L), replay = 1) + + override fun getByAccountId(id: AccountId): IO> = databaseManager + .get() + .effectMap(dispatcher) { db -> + val list = db.organizationQueries + .getByAccountId(accountId = id.id) + .executeAsList() + list.map { it.data_ } + } + + override fun put(model: BitwardenOrganization): IO = databaseManager + .get() + .map { + TODO() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenProfile.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenProfile.kt new file mode 100644 index 00000000..285dbc8a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenProfile.kt @@ -0,0 +1,30 @@ +package com.artemchep.keyguard.core.store.bitwarden + +import arrow.optics.optics +import kotlinx.serialization.Serializable + +@Serializable +@optics +data class BitwardenProfile( + /** + * Id of the bitwarden account, generated on + * login. + */ + val accountId: String, + val profileId: String, + // common + val avatarColor: String? = null, + val name: String, + val keyBase64: String, + val privateKeyBase64: String, + val culture: String = "", + val email: String, + val emailVerified: Boolean, + val premium: Boolean, + val securityStamp: String = "", + val twoFactorEnabled: Boolean, + val masterPasswordHint: String?, + val unofficialServer: Boolean = false, +) { + companion object; +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl.kt new file mode 100644 index 00000000..dc1b4ae7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenProfileRepositoryImpl.kt @@ -0,0 +1,68 @@ +package com.artemchep.keyguard.core.store.bitwarden + +import app.cash.sqldelight.coroutines.asFlow +import app.cash.sqldelight.coroutines.mapToList +import app.cash.sqldelight.coroutines.mapToOneOrNull +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.core.store.DatabaseDispatcher +import com.artemchep.keyguard.core.store.DatabaseManager +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenProfileRepository +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.asFlow +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.shareIn +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class BitwardenProfileRepositoryImpl( + private val databaseManager: DatabaseManager, + private val dispatcher: CoroutineDispatcher, +) : BitwardenProfileRepository { + constructor(directDI: DirectDI) : this( + databaseManager = directDI.instance(), + dispatcher = directDI.instance(tag = DatabaseDispatcher), + ) + + override fun get(): Flow> = databaseManager + .get() + .asFlow() + .flatMapLatest { db -> + db.profileQueries + .get() + .asFlow() + .mapToList(dispatcher) + .map { + it.map { it.data_ } + } + } + .shareIn(GlobalScope, SharingStarted.WhileSubscribed(1000L), replay = 1) + + override fun getById(id: AccountId): Flow = databaseManager + .get() + .asFlow() + .flatMapLatest { db -> + db.profileQueries + .getByAccountId(accountId = id.id) + .asFlow() + .mapToOneOrNull(dispatcher) + .map { + it?.data_ + } + } + + override fun put(model: BitwardenProfile): IO = databaseManager + .get() + .effectMap(dispatcher) { db -> + db.profileQueries.insert( + model, + accountId = model.accountId, + profileId = model.profileId, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenSend.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenSend.kt new file mode 100644 index 00000000..1a2e8856 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenSend.kt @@ -0,0 +1,71 @@ +package com.artemchep.keyguard.core.store.bitwarden + +import arrow.optics.optics +import kotlinx.datetime.Instant +import kotlinx.serialization.Serializable + +@Serializable +@optics +data class BitwardenSend( + /** + * Id of the Bitwarden account, generated on + * login. + */ + val accountId: String, + val sendId: String, + val accessId: String, + val revisionDate: Instant, + val createdDate: Instant? = null, + val deletedDate: Instant? = null, + val expirationDate: Instant? = null, + // service fields + override val service: BitwardenService, + // common + val keyBase64: String? = null, + val name: String?, + val notes: String?, + val accessCount: Int, + val maxAccessCount: Int? = null, + val password: String? = null, + val disabled: Boolean = false, + val hideEmail: Boolean? = null, + // types + val type: Type = Type.None, + val file: File? = null, + val text: Text? = null, +) : BitwardenService.Has { + companion object; + + override fun withService(service: BitwardenService) = copy(service = service) + + @Serializable + enum class Type { + None, + File, + Text, + } + + // + // Types + // + + @optics + @Serializable + data class File( + val id: String, + val fileName: String, + val keyBase64: String? = null, + val size: Long? = null, + ) { + companion object; + } + + @optics + @Serializable + data class Text( + val text: String? = null, + val hidden: Boolean? = null, + ) { + companion object; + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenSendRepositoryImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenSendRepositoryImpl.kt new file mode 100644 index 00000000..4712f9a2 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenSendRepositoryImpl.kt @@ -0,0 +1,57 @@ +package com.artemchep.keyguard.core.store.bitwarden + +import app.cash.sqldelight.coroutines.asFlow +import app.cash.sqldelight.coroutines.mapToList +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.core.store.DatabaseDispatcher +import com.artemchep.keyguard.core.store.DatabaseManager +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenSendRepository +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.asFlow +import kotlinx.coroutines.flow.catch +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.shareIn +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class BitwardenSendRepositoryImpl( + private val databaseManager: DatabaseManager, + private val dispatcher: CoroutineDispatcher, +) : BitwardenSendRepository { + constructor(directDI: DirectDI) : this( + databaseManager = directDI.instance(), + dispatcher = directDI.instance(tag = DatabaseDispatcher), + ) + + override fun get(): Flow> = databaseManager + .get() + .asFlow() + .flatMapLatest { db -> + db.sendQueries + .get() + .asFlow() + .mapToList(dispatcher) + .catch { + } + .map { + it.map { it.data_ } + } + } + .shareIn(GlobalScope, SharingStarted.WhileSubscribed(1000L), replay = 1) + + override fun put(model: BitwardenSend): IO = databaseManager + .get() + .effectMap(dispatcher) { + it.sendQueries.insert( + accountId = model.accountId, + sendId = model.sendId, + data = model, + ) + Unit + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenService.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenService.kt new file mode 100644 index 00000000..4b988791 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenService.kt @@ -0,0 +1,57 @@ +package com.artemchep.keyguard.core.store.bitwarden + +import arrow.optics.optics +import kotlinx.datetime.Instant +import kotlinx.serialization.Serializable + +@Serializable +@optics +data class BitwardenService( + val remote: Remote? = null, + val error: Error? = null, + val deleted: Boolean = false, + val version: Int = 0, +) { + companion object { + const val VERSION = 13 + } + + @Serializable + @optics + data class Remote( + val id: String, + val revisionDate: Instant, + val deletedDate: Instant?, + ) { + companion object + } + + @Serializable + @optics + data class Error( + val code: Int, + val message: String? = null, + val revisionDate: Instant, + ) { + companion object { + const val CODE_UNKNOWN = 0 + + /** + * Thrown to indicate that there + * is an error in the underlying protocol, + * such as a TCP error. + */ + const val CODE_PROTOCOL_EXCEPTION = -3000 + const val CODE_UNKNOWN_HOST = -2000 + const val CODE_DECODING_FAILED = -1000 + } + } + + interface Has { + val service: BitwardenService + + fun withService( + service: BitwardenService, + ): T + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenServiceUtil.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenServiceUtil.kt new file mode 100644 index 00000000..834cb6d4 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenServiceUtil.kt @@ -0,0 +1,24 @@ +package com.artemchep.keyguard.core.store.bitwarden + +import com.artemchep.keyguard.ui.canRetry +import io.ktor.http.HttpStatusCode +import kotlinx.datetime.Instant + +fun BitwardenService.Error.canRetry(revisionDate: Instant): Boolean = + expired(revisionDate) || code.canRetry() + +fun BitwardenService.Error.expired(revisionDate: Instant) = + revisionDate > this.revisionDate + +fun BitwardenService.Error?.exists(revisionDate: Instant) = + this != null && !this.expired(revisionDate) + +fun BitwardenService.Error.message() = message + ?: code + .takeIf { it > 0 } + ?.let { HttpStatusCode.fromValue(it) } + ?.description + ?: when (code) { + BitwardenService.Error.CODE_DECODING_FAILED -> "Failed to decode cipher text" + else -> "Unknown error" + } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenToken.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenToken.kt new file mode 100644 index 00000000..a24f1575 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenToken.kt @@ -0,0 +1,148 @@ +package com.artemchep.keyguard.core.store.bitwarden + +import arrow.optics.optics +import com.artemchep.keyguard.provider.bitwarden.ServerEnv +import com.artemchep.keyguard.provider.bitwarden.ServerHeader +import kotlinx.datetime.Instant +import kotlinx.serialization.Serializable +import java.util.UUID + +@Serializable +data class BitwardenToken( + val id: String = UUID.randomUUID().toString(), + val key: Key, + val token: Token? = null, + val user: User, + /** Information about the Bitwarden server */ + val env: Environment, +) { + fun formatUser() = "<" + + "id=$id, " + + "email=${user.email}" + + ">" + + @Serializable + data class Token( + val refreshToken: String, + val accessToken: String, + /** + * Expiration date of the refresh token, ask user to re-login + * after the old one is expired! + */ + val expirationDate: Instant, + ) + + @optics + @Serializable + data class Key( + val masterKeyBase64: String, + val passwordKeyBase64: String, + val encryptionKeyBase64: String, + val macKeyBase64: String, + ) { + companion object + } + + @optics + @Serializable + data class Environment( + val baseUrl: String = "", + val webVaultUrl: String = "", + val apiUrl: String = "", + val identityUrl: String = "", + val iconsUrl: String = "", + val region: Region = Region.US, + val headers: List

= emptyList(), + ) { + companion object { + fun of(model: ServerEnv) = Environment( + baseUrl = model.baseUrl, + webVaultUrl = model.webVaultUrl, + apiUrl = model.apiUrl, + identityUrl = model.identityUrl, + iconsUrl = model.iconsUrl, + region = when (model.region) { + ServerEnv.Region.US -> Region.US + ServerEnv.Region.EU -> Region.EU + }, + headers = model + .headers + .map { header -> + Header( + key = header.key, + value = header.value, + ) + }, + ) + } + + fun back() = ServerEnv( + baseUrl = baseUrl, + webVaultUrl = webVaultUrl, + apiUrl = apiUrl, + identityUrl = identityUrl, + iconsUrl = iconsUrl, + region = when (region) { + Region.US -> ServerEnv.Region.US + Region.EU -> ServerEnv.Region.EU + }, + headers = headers + .map { header -> + ServerHeader( + key = header.key, + value = header.value, + ) + }, + ) + + @Serializable + enum class Region { + US, + EU, + } + + @optics + @Serializable + data class Header( + val key: String, + val value: String, + ) { + companion object + } + } + + @Serializable + data class User( + val email: String, + ) +} + +fun BitwardenToken.Companion.generated(): BitwardenToken { + val accountIds = listOf( + "account_a", + "account_b", + "account_c", + ) + val folderIds = listOf( + "folder_a", + "folder_b", + "folder_c", + null, + ) + val name = listOf( + "List", + ) + return BitwardenToken( + id = accountIds.random(), + key = BitwardenToken.Key( + masterKeyBase64 = "", + passwordKeyBase64 = "", + encryptionKeyBase64 = "", + macKeyBase64 = "", + ), + env = BitwardenToken.Environment(), + user = BitwardenToken.User( + email = "email", + ), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl.kt new file mode 100644 index 00000000..934fbde6 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenTokenRepositoryImpl.kt @@ -0,0 +1,62 @@ +package com.artemchep.keyguard.core.store.bitwarden + +import app.cash.sqldelight.coroutines.asFlow +import app.cash.sqldelight.coroutines.mapToList +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.core.store.DatabaseDispatcher +import com.artemchep.keyguard.core.store.DatabaseManager +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenTokenRepository +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.asFlow +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.shareIn +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class BitwardenTokenRepositoryImpl( + private val databaseManager: DatabaseManager, + private val dispatcher: CoroutineDispatcher, +) : BitwardenTokenRepository { + constructor(directDI: DirectDI) : this( + databaseManager = directDI.instance(), + dispatcher = directDI.instance(tag = DatabaseDispatcher), + ) + + override fun get(): Flow> = databaseManager + .get() + .asFlow() + .flatMapLatest { db -> + db.accountQueries + .get() + .asFlow() + .mapToList(dispatcher) + .map { + it.map { it.data_ } + } + } + .shareIn(GlobalScope, SharingStarted.WhileSubscribed(1000L), replay = 1) + + override fun getById(id: AccountId): IO = databaseManager + .get() + .effectMap(dispatcher) { db -> + val infoEntity = db.accountQueries + .getByAccountId(accountId = id.id) + .executeAsOneOrNull() + infoEntity?.data_ + } + + override fun put(model: BitwardenToken): IO = databaseManager + .get() + .effectMap(dispatcher) { + it.accountQueries.insert( + accountId = model.id, + data = model, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/EmptyView.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/EmptyView.kt new file mode 100644 index 00000000..c3ebd852 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/EmptyView.kt @@ -0,0 +1,96 @@ +package com.artemchep.keyguard.feature + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.widthIn +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.SearchOff +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.LocalTextStyle +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun EmptySearchView( + modifier: Modifier = Modifier, + text: @Composable () -> Unit = { + DefaultEmptyViewText() + }, +) { + EmptyView( + modifier = modifier, + icon = { + Icon( + imageVector = Icons.Outlined.SearchOff, + contentDescription = null, + ) + }, + text = text, + ) +} + +@Composable +fun EmptyView( + modifier: Modifier = Modifier, + icon: (@Composable () -> Unit)? = null, + text: @Composable () -> Unit = { + DefaultEmptyViewText() + }, +) { + Row( + modifier = modifier + .padding( + vertical = Dimens.verticalPadding, + horizontal = Dimens.horizontalPadding, + ) + .fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.Center, + ) { + CompositionLocalProvider( + LocalContentColor provides LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + LocalTextStyle provides MaterialTheme.typography.labelLarge, + ) { + if (icon != null) { + icon() + Spacer( + modifier = Modifier + .width(Dimens.buttonIconPadding), + ) + } + Box( + modifier = Modifier + .widthIn(max = 196.dp), + ) { + text() + } + } + } +} + +@Composable +private fun DefaultEmptyViewText( + modifier: Modifier = Modifier, +) { + Text( + modifier = modifier, + text = stringResource(Res.strings.items_empty_label), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/ErrorView.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/ErrorView.kt new file mode 100644 index 00000000..51bfc5a8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/ErrorView.kt @@ -0,0 +1,77 @@ +package com.artemchep.keyguard.feature + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.ErrorOutline +import androidx.compose.material3.ElevatedButton +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.LocalTextStyle +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +import com.artemchep.keyguard.ui.theme.Dimens + +@Composable +fun ErrorView( + icon: (@Composable () -> Unit)? = { + Icon( + imageVector = Icons.Outlined.ErrorOutline, + contentDescription = null, + ) + }, + text: @Composable () -> Unit = { + Text(text = "Something went wrong") + }, + exception: Throwable? = null, +) { + Column( + modifier = Modifier + .padding( + vertical = 16.dp, + horizontal = Dimens.horizontalPadding, + ) + .fillMaxWidth(), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Row( + verticalAlignment = Alignment.CenterVertically, + ) { + CompositionLocalProvider( + LocalContentColor provides MaterialTheme.colorScheme.error, + LocalTextStyle provides MaterialTheme.typography.labelLarge, + ) { + if (icon != null) { + icon() + Spacer( + modifier = Modifier + .width(16.dp), + ) + } + text() + } + } + ExpandedIfNotEmpty( + valueOrNull = exception, + ) { e -> + ElevatedButton( + modifier = Modifier + .padding(top = 8.dp), + onClick = { + }, + ) { + Text(text = "View details") + } + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/apppicker/AppPickerResult.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/apppicker/AppPickerResult.kt new file mode 100644 index 00000000..b8d60a4b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/apppicker/AppPickerResult.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.feature.apppicker + +sealed interface AppPickerResult { + data object Deny : AppPickerResult + + data class Confirm( + val uri: String, + ) : AppPickerResult +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/apppicker/AppPickerRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/apppicker/AppPickerRoute.kt new file mode 100644 index 00000000..c71e0b30 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/apppicker/AppPickerRoute.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.feature.apppicker + +import com.artemchep.keyguard.feature.navigation.RouteForResult + +expect object AppPickerRoute : RouteForResult diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/appreview/RequestAppReviewEffect.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/appreview/RequestAppReviewEffect.kt new file mode 100644 index 00000000..924ae2cc --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/appreview/RequestAppReviewEffect.kt @@ -0,0 +1,31 @@ +package com.artemchep.keyguard.feature.appreview + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.GetShouldRequestAppReview +import com.artemchep.keyguard.common.usecase.RequestAppReview +import com.artemchep.keyguard.platform.LocalLeContext +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.flow.first +import org.kodein.di.compose.rememberInstance + +@Composable +fun RequestAppReviewEffect() { + val getShouldRequestAppReview: GetShouldRequestAppReview by rememberInstance() + val requestAppReview: RequestAppReview by rememberInstance() + + val context by rememberUpdatedState(LocalLeContext) + LaunchedEffect(Unit) { + val shouldAskForReview = getShouldRequestAppReview() + .first() + if (shouldAskForReview) { + requestAppReview(context) + .attempt() + .launchIn(GlobalScope) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/attachments/AttachmentsRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/attachments/AttachmentsRoute.kt new file mode 100644 index 00000000..8041e165 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/attachments/AttachmentsRoute.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.attachments + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.Route + +class AttachmentsRoute : Route { + @Composable + override fun Content() { + AttachmentsScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/attachments/AttachmentsScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/attachments/AttachmentsScreen.kt new file mode 100644 index 00000000..9d452bfe --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/attachments/AttachmentsScreen.kt @@ -0,0 +1,164 @@ +package com.artemchep.keyguard.feature.attachments + +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.lazy.items +import androidx.compose.material.ExperimentalMaterialApi +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.input.nestedscroll.nestedScroll +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.getOrNull +import com.artemchep.keyguard.feature.EmptySearchView +import com.artemchep.keyguard.feature.attachments.compose.ItemAttachment +import com.artemchep.keyguard.feature.watchtower.VaultHomeScreenFilterButton2 +import com.artemchep.keyguard.feature.watchtower.VaultHomeScreenFilterPaneCard2 +import com.artemchep.keyguard.feature.home.vault.component.Section +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.feature.twopane.TwoPaneScreen +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.DefaultSelection +import com.artemchep.keyguard.ui.ScaffoldLazyColumn +import com.artemchep.keyguard.ui.skeleton.SkeletonItem +import com.artemchep.keyguard.ui.toolbar.LargeToolbar +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun AttachmentsScreen() { + val loadableState = produceAttachmentsScreenState() + + TwoPaneScreen( + detail = { modifier -> + VaultHomeScreenFilterPaneCard2( + modifier = modifier, + items = loadableState.getOrNull()?.filter?.items.orEmpty(), + onClear = loadableState.getOrNull()?.filter?.onClear, + ) + }, + ) { modifier, detailIsVisible -> + AttachmentsScreen( + modifier = modifier, + state = loadableState, + showFilter = !detailIsVisible, + ) + } +} + +@OptIn( + ExperimentalMaterial3Api::class, + ExperimentalFoundationApi::class, + ExperimentalMaterialApi::class, +) +@Composable +fun AttachmentsScreen( + modifier: Modifier, + state: Loadable, + showFilter: Boolean, +) { + val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + ScaffoldLazyColumn( + modifier = modifier + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + LargeToolbar( + title = { + Text( + text = stringResource(Res.strings.downloads), + ) + }, + navigationIcon = { + NavigationIcon() + }, + actions = { + if (showFilter) { + VaultHomeScreenFilterButton2( + modifier = modifier, + items = state.getOrNull()?.filter?.items.orEmpty(), + onClear = state.getOrNull()?.filter?.onClear, + ) + } + }, + scrollBehavior = scrollBehavior, + ) + }, + bottomBar = { + val selectionOrNull = state.getOrNull()?.selection + DefaultSelection( + state = selectionOrNull, + ) + }, + ) { + when (state) { + is Loadable.Loading -> { + for (i in 1..3) { + item("skeleton.$i") { + SkeletonItem() + } + } + } + + is Loadable.Ok -> { + val items = state.getOrNull()?.items.orEmpty() + if (items.isEmpty()) { + item("header.empty") { + NoItemsPlaceholder() + } + } + + items(items, key = { it.key }) { item -> + Item( + modifier = Modifier + .animateItemPlacement(), + item = item, + ) + } + } + } + } +} + +@Composable +private fun NoItemsPlaceholder( + modifier: Modifier = Modifier, +) { + EmptySearchView( + modifier = modifier, + text = { + Text( + text = stringResource(Res.strings.downloads_empty_label), + ) + }, + ) +} + +@Composable +private fun Item( + modifier: Modifier, + item: AttachmentsState.Item, +) = when (item) { + is AttachmentsState.Item.Section -> + ItemSection( + modifier = modifier, + item = item, + ) + + is AttachmentsState.Item.Attachment -> + ItemAttachment( + modifier = modifier, + item = item.item, + ) +} + +@Composable +private fun ItemSection( + modifier: Modifier, + item: AttachmentsState.Item.Section, +) { + Section( + modifier = modifier, + text = item.name, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/attachments/AttachmentsState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/attachments/AttachmentsState.kt new file mode 100644 index 00000000..c2fce31c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/attachments/AttachmentsState.kt @@ -0,0 +1,52 @@ +package com.artemchep.keyguard.feature.attachments + +import androidx.compose.runtime.Immutable +import com.artemchep.keyguard.feature.attachments.model.AttachmentItem +import com.artemchep.keyguard.feature.home.vault.model.FilterItem +import com.artemchep.keyguard.ui.Selection + +data class AttachmentsState( + val filter: Filter, + val stats: Stats, + val selection: Selection?, + val items: List, +) { + data class Filter( + val items: List = emptyList(), + val onClear: (() -> Unit)? = null, + ) + + data class Stats( + val totalAttachments: Int, + val totalSize: String, + ) + + sealed interface Item { + val key: String + + data class Section( + override val key: String, + val name: String, + ) : Item + + data class Attachment( + override val key: String, + val item: AttachmentItem, + ) : Item + } +} + +data class SelectableItemStateRaw( + val selecting: Boolean, + val selected: Boolean, + val canSelect: Boolean = true, +) + +@Immutable +data class SelectableItemState( + val selecting: Boolean, + val selected: Boolean, + val can: Boolean = true, + val onClick: (() -> Unit)?, + val onLongClick: (() -> Unit)?, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/attachments/AttachmentsStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/attachments/AttachmentsStateProducer.kt new file mode 100644 index 00000000..f85b930a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/attachments/AttachmentsStateProducer.kt @@ -0,0 +1,661 @@ +package com.artemchep.keyguard.feature.attachments + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Cancel +import androidx.compose.material.icons.outlined.Delete +import androidx.compose.material.icons.outlined.Download +import androidx.compose.material.icons.outlined.FileOpen +import androidx.compose.material.icons.outlined.FolderOpen +import androidx.compose.material.icons.outlined.OpenInNew +import androidx.compose.material.icons.outlined.Refresh +import androidx.compose.material.icons.outlined.Send +import androidx.compose.runtime.Composable +import arrow.core.identity +import arrow.core.partially1 +import com.artemchep.keyguard.android.downloader.journal.DownloadRepository +import com.artemchep.keyguard.android.downloader.journal.room.DownloadInfoEntity2 +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.DownloadAttachmentRequest +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.RemoveAttachmentRequest +import com.artemchep.keyguard.common.service.download.DownloadManager +import com.artemchep.keyguard.common.usecase.DownloadAttachment +import com.artemchep.keyguard.common.usecase.GetAccounts +import com.artemchep.keyguard.common.usecase.GetCiphers +import com.artemchep.keyguard.common.usecase.GetCollections +import com.artemchep.keyguard.common.usecase.GetFolders +import com.artemchep.keyguard.common.usecase.GetOrganizations +import com.artemchep.keyguard.common.usecase.GetProfiles +import com.artemchep.keyguard.common.usecase.RemoveAttachment +import com.artemchep.keyguard.common.util.flow.foldAsList +import com.artemchep.keyguard.feature.attachments.model.AttachmentItem +import com.artemchep.keyguard.feature.attachments.util.createAttachmentItem +import com.artemchep.keyguard.feature.decorator.ItemDecorator +import com.artemchep.keyguard.feature.decorator.ItemDecoratorNone +import com.artemchep.keyguard.feature.decorator.ItemDecoratorTitle +import com.artemchep.keyguard.feature.home.vault.screen.FilterParams +import com.artemchep.keyguard.feature.home.vault.screen.OurFilterResult +import com.artemchep.keyguard.feature.home.vault.screen.VaultViewRoute +import com.artemchep.keyguard.feature.home.vault.screen.ah +import com.artemchep.keyguard.feature.home.vault.screen.createFilter +import com.artemchep.keyguard.feature.home.vault.search.filter.FilterHolder +import com.artemchep.keyguard.feature.home.vault.util.AlphabeticalSortMinItemsSize +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.state.TranslatorScope +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.platform.CurrentPlatform +import com.artemchep.keyguard.platform.Platform +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.ContextItem +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.Selection +import com.artemchep.keyguard.ui.buildContextItems +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.icons.iconSmall +import com.artemchep.keyguard.ui.selection.selectionHandle +import kotlinx.collections.immutable.toPersistentList +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.awaitCancellation +import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.filterNotNull +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.flow +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.flow.stateIn +import org.kodein.di.DirectDI +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +@Composable +fun produceAttachmentsScreenState() = with(localDI().direct) { + produceAttachmentsScreenState( + directDI = this, + getAccounts = instance(), + getProfiles = instance(), + getCiphers = instance(), + getFolders = instance(), + getCollections = instance(), + getOrganizations = instance(), + downloadRepository = instance(), + downloadManager = instance(), + downloadAttachment = instance(), + removeAttachment = instance(), + ) +} + +private data class CipherWithAttachment( + val cipher: DSecret, + val attachment: DSecret.Attachment.Remote, +) + +private data class ItemCipher( + val item: AttachmentItem, + val cipher: DSecret, + val attachment: DSecret.Attachment.Remote, +) + +private data class FilteredBoo( + val count: Int, + val list: List, + val filterConfig: FilterHolder? = null, +) + +@OptIn(ExperimentalCoroutinesApi::class) +@Composable +fun produceAttachmentsScreenState( + directDI: DirectDI, + getAccounts: GetAccounts, + getProfiles: GetProfiles, + getCiphers: GetCiphers, + getFolders: GetFolders, + getCollections: GetCollections, + getOrganizations: GetOrganizations, + downloadRepository: DownloadRepository, + downloadManager: DownloadManager, + downloadAttachment: DownloadAttachment, + removeAttachment: RemoveAttachment, +): Loadable = produceScreenState( + key = "attachments", + args = arrayOf( + getCiphers, + ), + initial = Loadable.Loading, +) { + val selectionHandle = selectionHandle("selection") + + val filterResult = createFilter() + + val ciphersFlow = getCiphers() + + val ciphersByAttachmentRefFlow = ciphersFlow + .map { ciphers -> + ciphers + .asSequence() + .flatMap { cipher -> + cipher + .attachments + .asSequence() + .mapNotNull { it as? DSecret.Attachment.Remote } + .map { attachment -> + val model = CipherWithAttachment( + cipher = cipher, + attachment = attachment, + ) + val tag = DownloadInfoEntity2.AttachmentDownloadTag( + localCipherId = cipher.id, + remoteCipherId = cipher.service.remote?.id, + attachmentId = attachment.id, + ) + tag to model + } + } + .associate { it } + } + .shareInScreenScope() + + val itemsRawFlow = downloadRepository + // get a list of all known tags + .get() + .map { + it + .asSequence() + .map { + DownloadInfoEntity2.AttachmentDownloadTag( + localCipherId = it.localCipherId, + remoteCipherId = it.remoteCipherId, + attachmentId = it.attachmentId, + ) + } + .toSet() + } + .distinctUntilChanged() + // filter it by being available offline + .flatMapLatest { refs -> + refs + .map { ref -> + ciphersByAttachmentRefFlow + .map { state -> state[ref] } + .distinctUntilChanged() + .flatMapLatest { cipherWithAttachment -> + cipherWithAttachment + ?: return@flatMapLatest flowOf(null) + + val attachment = cipherWithAttachment.attachment + val cipher = cipherWithAttachment.cipher + + val downloadIo = kotlin.run { + val request = DownloadAttachmentRequest.ByLocalCipherAttachment( + cipher = cipher, + attachment = attachment, + ) + downloadAttachment(listOf(request)) + } + val removeIo = kotlin.run { + val request = RemoveAttachmentRequest.ByLocalCipherAttachment( + cipher = cipher, + attachment = attachment, + ) + removeAttachment(listOf(request)) + } + flow { + coroutineScope { + val actualItem = createAttachmentItem( + selectionHandle = selectionHandle, + tag = ref, + sharingScope = this, + attachment = attachment, + launchViewCipherData = LaunchViewCipherData( + accountId = cipher.accountId, + cipherId = cipher.id, + ), + downloadManager = downloadManager, + downloadIo = downloadIo, + removeIo = removeIo, + ) + val wrapperItem = ItemCipher( + item = actualItem, + cipher = cipher, + attachment = attachment, + ) + emit(wrapperItem) + awaitCancellation() + } + } + } + } + .foldAsList() + .map { list -> + list + .filterNotNull() + .sortedBy { it.item.name } + } + } + .shareInScreenScope() + + // Automatically de-select items + // that do not exist. + combine( + itemsRawFlow, + selectionHandle.idsFlow, + ) { attachments, selectedAttachmentIds -> + val newSelectedAttachmentIds = selectedAttachmentIds + .asSequence() + .filter { attachmentId -> + attachments.any { it.attachment.id == attachmentId } + } + .toSet() + newSelectedAttachmentIds.takeIf { it.size < selectedAttachmentIds.size } + } + .filterNotNull() + .onEach { ids -> selectionHandle.setSelection(ids) } + .launchIn(screenScope) + + val selectionFlow = combine( + itemsRawFlow, + selectionHandle.idsFlow, + ) { items, selectedCipherIds -> + val selectedItems = items + .filter { it.attachment.id in selectedCipherIds } + items to selectedItems + } + .flatMapLatest { (allItems, selectedItems) -> + selectedItems + .map { item -> + item.item.statusState + .map { attachmentStatus -> + item to FooStatus.of( + attachmentStatus = attachmentStatus, + ) + } + .distinctUntilChanged() + } + .foldAsList() + .map { allItems to it } + } + .map { (allItems, selectedPairs) -> + if (selectedPairs.isEmpty()) { + return@map null + } + + val selectedItemsAllDownloaded = selectedPairs + .all { it.second is FooStatus.Downloaded } + val selectedItemsAllCancelable = selectedPairs + .all { + val status = it.second + status is FooStatus.Loading || + status is FooStatus.Failed + } + val selectedItemsAllDownloadable = selectedPairs + .all { + val status = it.second + status is FooStatus.None || + status is FooStatus.Failed + } + + val downloadIo by lazy { + val requests = selectedPairs + .map { (i, _) -> + DownloadAttachmentRequest.ByLocalCipherAttachment( + cipher = i.cipher, + attachment = i.attachment, + ) + } + downloadAttachment(requests) + } + val removeIo by lazy { + val requests = selectedPairs + .map { (i, _) -> + RemoveAttachmentRequest.ByLocalCipherAttachment( + cipher = i.cipher, + attachment = i.attachment, + ) + } + removeAttachment(requests) + } + + val actions = mutableListOf() + if (selectedItemsAllCancelable) { + actions += FlatItemAction( + leading = icon(Icons.Outlined.Cancel), + title = translate(Res.strings.cancel), + onClick = { + removeIo.launchIn(appScope) + }, + ) + } + if (selectedItemsAllDownloadable) { + actions += FlatItemAction( + leading = icon(Icons.Outlined.Download), + title = "Download", + onClick = { + downloadIo.launchIn(appScope) + }, + ) + } + if (selectedItemsAllDownloaded) { + actions += FlatItemAction( + leading = icon(Icons.Outlined.Delete), + title = "Delete local files", + onClick = { + removeIo.launchIn(appScope) + }, + ) + } + + Selection( + count = selectedPairs.size, + actions = actions.toPersistentList(), + onSelectAll = if (selectedPairs.size < allItems.size) { + val allIds = allItems + .asSequence() + .map { it.attachment.id } + .toSet() + selectionHandle::setSelection + .partially1(allIds) + } else { + null + }, + onClear = selectionHandle::clearSelection, + ) + } + + val itemsFilteredFlow = itemsRawFlow + .map { attachments -> + FilteredBoo( + count = attachments.size, + list = attachments, + ) + } + .combine( + flow = filterResult.filterFlow, + ) { state, filterConfig -> + // Fast path: if the there are no filters, then + // just return original list of items. + if (filterConfig.state.isEmpty()) { + return@combine state.copy( + filterConfig = filterConfig, + ) + } + + val filteredAllItems = state + .list + .run { + val ciphers = map { it.cipher } + val predicate = filterConfig.filter.prepare(directDI, ciphers) + filter { predicate(it.cipher) } + } + state.copy( + list = filteredAllItems, + filterConfig = filterConfig, + ) + } + .shareInScreenScope() + + val filterListFlow = ah( + directDI = directDI, + outputGetter = { it.cipher }, + outputFlow = itemsFilteredFlow + .map { it.list }, + accountGetter = ::identity, + accountFlow = getAccounts(), + profileFlow = getProfiles(), + cipherGetter = ::identity, + cipherFlow = ciphersFlow, + folderGetter = ::identity, + folderFlow = getFolders(), + collectionGetter = ::identity, + collectionFlow = getCollections(), + organizationGetter = ::identity, + organizationFlow = getOrganizations(), + input = filterResult, + params = FilterParams( + section = FilterParams.Section( + type = false, + misc = false, + ), + ), + ) + .stateIn(screenScope, SharingStarted.WhileSubscribed(), OurFilterResult()) + + val itemsFlow = itemsFilteredFlow + .map { state -> + val decorator: ItemDecorator = + when { + state.list.size >= AlphabeticalSortMinItemsSize -> + ItemDecoratorTitle( + selector = { it.name }, + factory = { id, text -> + AttachmentsState.Item.Section( + key = id, + name = text, + ) + }, + ) + + else -> + ItemDecoratorNone + as ItemDecorator + } + + val items = sequence { + state.list.forEach { item -> + val section = decorator.getOrNull(item.item) + if (section != null) yield(section) + + val wrappedItem = AttachmentsState.Item.Attachment( + key = item.item.key, + item = item.item, + ) + yield(wrappedItem) + } + }.toList() + FilteredBoo( + count = state.list.size, + list = items, + filterConfig = state.filterConfig, + ) + } + .map { + it.list + } + + val state = combine( + itemsFlow, + selectionFlow, + filterListFlow, + ) { items, selection, filterState -> + val state = AttachmentsState( + filter = AttachmentsState.Filter( + items = filterState.items, + onClear = filterState.onClear, + ), + stats = AttachmentsState.Stats( + totalAttachments = 0, + totalSize = "12", + ), + selection = selection, + items = items, + ) + Loadable.Ok(state) + } + state +} + +private fun itemKeyForAttachment(key: String) = "attachment.$key" + +sealed interface FooStatus { + companion object { + fun of(attachmentStatus: AttachmentItem.Status) = when (attachmentStatus) { + is AttachmentItem.Status.None -> None + is AttachmentItem.Status.Loading -> Loading + is AttachmentItem.Status.Failed -> Failed + is AttachmentItem.Status.Downloaded -> + Downloaded( + localUrl = attachmentStatus.localUrl, + ) + } + } + + data object None : FooStatus + + data object Loading : FooStatus + + data object Failed : FooStatus + + data class Downloaded( + val localUrl: String, + ) : FooStatus +} + +data class LaunchViewCipherData( + val accountId: String, + val cipherId: String, +) + +fun foo( + translatorScope: TranslatorScope, + fileName: String, + status: FooStatus, + launchViewCipherData: LaunchViewCipherData?, + downloadIo: IO, + removeIo: IO, + navigate: (NavigationIntent) -> Unit, +): List { + fun performDownload() { + downloadIo + .attempt() + .launchIn(GlobalScope) + } + + fun performRemove() { + removeIo + .attempt() + .launchIn(GlobalScope) + } + + return buildContextItems { + section { + when (status) { + is FooStatus.None -> { + this += FlatItemAction( + icon = Icons.Outlined.Download, + title = translatorScope.translate(Res.strings.download), + onClick = ::performDownload, + type = FlatItemAction.Type.DOWNLOAD, + ) + } + + is FooStatus.Loading -> { + this += FlatItemAction( + leading = icon(Icons.Outlined.Cancel), + title = translatorScope.translate(Res.strings.cancel), + onClick = ::performRemove, + ) + } + + is FooStatus.Failed -> { + this += FlatItemAction( + leading = icon(Icons.Outlined.Cancel), + title = translatorScope.translate(Res.strings.cancel), + onClick = ::performRemove, + ) + this += FlatItemAction( + leading = icon(Icons.Outlined.Refresh), + title = translatorScope.translate(Res.strings.download), + onClick = ::performDownload, + type = FlatItemAction.Type.DOWNLOAD, + ) + } + + is FooStatus.Downloaded -> { + val fileUrl = status.localUrl + this += FlatItemAction( + leading = icon(Icons.Outlined.FileOpen), + trailing = { + ChevronIcon() + }, + title = translatorScope.translate(Res.strings.file_action_open_with_title), + onClick = { + val intent = NavigationIntent.NavigateToPreview( + uri = fileUrl, + fileName = fileName, + ) + navigate(intent) + }, + type = FlatItemAction.Type.VIEW, + ) + if (CurrentPlatform is Platform.Desktop) { + this += FlatItemAction( + leading = iconSmall(Icons.Outlined.FileOpen, Icons.Outlined.FolderOpen), + trailing = { + ChevronIcon() + }, + title = translatorScope.translate(Res.strings.file_action_open_in_file_manager_title), + onClick = { + val intent = NavigationIntent.NavigateToPreviewInFileManager( + uri = fileUrl, + fileName = fileName, + ) + navigate(intent) + }, + ) + } + if (CurrentPlatform is Platform.Mobile) { + this += FlatItemAction( + leading = icon(Icons.Outlined.Send), + trailing = { + ChevronIcon() + }, + title = translatorScope.translate(Res.strings.file_action_send_with_title), + onClick = { + val intent = NavigationIntent.NavigateToSend( + uri = fileUrl, + fileName = fileName, + ) + navigate(intent) + }, + ) + } + this += FlatItemAction( + leading = icon(Icons.Outlined.Delete), + title = translatorScope.translate(Res.strings.file_action_delete_local_title), + onClick = ::performRemove, + ) + } + } + } + if (launchViewCipherData != null) { + section { + this += FlatItemAction( + leading = icon(Icons.Outlined.OpenInNew), + trailing = { + ChevronIcon() + }, + title = translatorScope.translate(Res.strings.file_action_view_cipher_title), + onClick = { + val route = VaultViewRoute( + itemId = launchViewCipherData.cipherId, + accountId = launchViewCipherData.accountId, + ) + val intent = NavigationIntent.NavigateToRoute( + route = route, + ) + navigate(intent) + }, + ) + } + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/attachments/compose/ItemAttachment.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/attachments/compose/ItemAttachment.kt new file mode 100644 index 00000000..1699fe7b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/attachments/compose/ItemAttachment.kt @@ -0,0 +1,386 @@ +package com.artemchep.keyguard.feature.attachments.compose + +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.Crossfade +import androidx.compose.animation.ExperimentalAnimationApi +import androidx.compose.animation.animateContentSize +import androidx.compose.animation.core.animateFloatAsState +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.animation.scaleIn +import androidx.compose.animation.scaleOut +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.FlowRow +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.heightIn +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.sizeIn +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.widthIn +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Download +import androidx.compose.material.icons.outlined.DownloadDone +import androidx.compose.material.icons.outlined.ErrorOutline +import androidx.compose.material.icons.outlined.Info +import androidx.compose.material.icons.outlined.Launch +import androidx.compose.material3.Checkbox +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.LinearProgressIndicator +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.State +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.feature.attachments.SelectableItemState +import com.artemchep.keyguard.feature.attachments.model.AttachmentItem +import com.artemchep.keyguard.feature.filepicker.humanReadableByteCountSI +import com.artemchep.keyguard.ui.ContextItem +import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +import com.artemchep.keyguard.ui.ExpandedIfNotEmptyForRow +import com.artemchep.keyguard.ui.FlatDropdown +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.icons.AttachmentIcon +import com.artemchep.keyguard.ui.theme.info +import com.artemchep.keyguard.ui.theme.infoContainer + +@OptIn(ExperimentalLayoutApi::class) +@Composable +fun ItemAttachment( + modifier: Modifier, + item: AttachmentItem, +) { + val downloadStatusState = item.statusState.collectAsState() + val selectableState = item.selectableState.collectAsState() + val actionsState = item.actionsState.collectAsState() + ItemAttachmentLayout( + modifier = modifier, + name = item.name, + size = item.size, + dropdown = actionsState.value, + previewUrlProvider = { downloadStatusState.value.previewUrl }, + downloadedProvider = { + downloadStatusState.value is AttachmentItem.Status.Downloaded + }, + selectableState = selectableState, + content = { + ExpandedIfNotEmpty( + // If the download progress does not exist then + // do not show the visuals. + valueOrNull = downloadStatusState.value as? AttachmentItem.Status.Loading, + ) { downloadProgress -> + Column { + Spacer( + modifier = Modifier + .height(8.dp), + ) + + val downloaded = downloadProgress.downloaded + val total = downloadProgress.total + + val downloadedRatio = if ( + downloaded != null && + total != null + ) { + val p = downloaded.toDouble() / total.toDouble() + p.toFloat().coerceIn(0f..1f) + } else { + null + } + Row( + modifier = Modifier + .heightIn(min = 24.dp), + verticalAlignment = Alignment.CenterVertically, + ) { + val downloadedHumanReadable = downloaded?.let(::humanReadableByteCountSI) + ExpandedIfNotEmptyForRow( + valueOrNull = downloadedHumanReadable, + ) { text -> + Text( + modifier = Modifier + .widthIn(min = 64.dp) + .padding(end = 8.dp) + .animateContentSize(), + text = text, + style = MaterialTheme.typography.labelSmall, + ) + } + Crossfade( + targetState = downloadedRatio != null, + ) { hasProgress -> + if (hasProgress) { + val updatedProgressState = remember { + mutableStateOf(0f) + } + if (downloadedRatio != null) { + updatedProgressState.value = + downloadedRatio + } + val p = animateFloatAsState(updatedProgressState.value) + LinearProgressIndicator( + modifier = Modifier + .fillMaxWidth(), + progress = p.value, + ) + } else { + LinearProgressIndicator( + modifier = Modifier + .fillMaxWidth(), + ) + } + } + } + } + } + ExpandedIfNotEmpty( + // If the download progress does not exist then + // do not show the visuals. + valueOrNull = downloadStatusState.value as? AttachmentItem.Status.Failed, + ) { downloadFailed -> + FlowRow( + modifier = Modifier + .padding( + top = 4.dp, + ), + horizontalArrangement = Arrangement.spacedBy(4.dp), + verticalArrangement = Arrangement.spacedBy(4.dp, Alignment.CenterVertically), + ) { + val errorContentColor = MaterialTheme.colorScheme.error + val errorBackgroundColor = MaterialTheme.colorScheme.errorContainer + val infoContentColor = MaterialTheme.colorScheme.info + val infoBackgroundColor = MaterialTheme.colorScheme.infoContainer + Row( + modifier = Modifier + .background( + errorBackgroundColor, + MaterialTheme.shapes.small, + ) + .padding( + start = 4.dp, + top = 4.dp, + bottom = 4.dp, + end = 4.dp, + ), + verticalAlignment = Alignment.CenterVertically, + ) { + Icon( + modifier = Modifier + .size(14.dp), + imageVector = Icons.Outlined.ErrorOutline, + contentDescription = null, + tint = errorContentColor, + ) + Spacer(modifier = Modifier.width(4.dp)) + Text( + modifier = Modifier, + text = "Downloading failed", + style = MaterialTheme.typography.labelMedium, + ) + } + ExpandedIfNotEmptyForRow( + valueOrNull = Unit.takeIf { downloadFailed.autoResume }, + ) { + Row( + modifier = Modifier + .background( + infoBackgroundColor, + MaterialTheme.shapes.small, + ) + .padding( + start = 4.dp, + top = 4.dp, + bottom = 4.dp, + end = 4.dp, + ), + verticalAlignment = Alignment.CenterVertically, + ) { + Icon( + modifier = Modifier + .size(14.dp), + imageVector = Icons.Outlined.Info, + contentDescription = null, + tint = infoContentColor, + ) + Spacer(modifier = Modifier.width(4.dp)) + Text( + modifier = Modifier, + text = "Auto-resumes", + style = MaterialTheme.typography.labelMedium, + ) + } + } + } + } + }, + ) +} + +@Composable +private fun ItemAttachmentLayout( + modifier: Modifier, + name: String, + size: String? = null, + dropdown: List, + previewUrlProvider: @Composable () -> String?, + downloadedProvider: @Composable () -> Boolean, + selectableState: State, + content: (@Composable () -> Unit)? = null, +) { + val selectable = selectableState.value + val selected = selectable.selected + val backgroundColor = + if (selectable.selected) { + MaterialTheme.colorScheme.primaryContainer + } else { + MaterialTheme.colorScheme.surface + } + FlatDropdown( + modifier = modifier, + backgroundColor = backgroundColor, + content = { + FlatItemTextContent( + title = { + Text(name) + }, + text = if (size != null) { + // composable + { + Text(size) + } + } else { + null + }, + ) + content?.invoke() + }, + leading = { + Box { + val url = previewUrlProvider() + val downloaded = downloadedProvider() + AttachmentIcon( + uri = url, + name = name, + encrypted = false, + ) + Row( + modifier = Modifier + .offset(x = 6.dp, y = 6.dp) + .align(Alignment.BottomEnd), + ) { + AnimatedVisibility( + visible = downloaded, + enter = fadeIn() + scaleIn(), + exit = scaleOut() + fadeOut(), + ) { + Icon( + modifier = Modifier + .background( + MaterialTheme.colorScheme.tertiaryContainer, + MaterialTheme.shapes.extraSmall, + ) + .size(16.dp) + .padding(1.dp), + imageVector = Icons.Outlined.DownloadDone, + tint = MaterialTheme.colorScheme.onTertiaryContainer, + contentDescription = null, + ) + } + } + } + }, + trailing = { + Crossfade( + targetState = selectable.selecting, + ) { + if (it) { + Checkbox( + modifier = Modifier + .sizeIn( + minWidth = 48.dp, + minHeight = 48.dp, + ), + checked = selected, + onCheckedChange = null, + ) + } else { + Row( + modifier = Modifier + .sizeIn( + minWidth = 48.dp, + minHeight = 48.dp, + ), + horizontalArrangement = Arrangement.End, + verticalAlignment = Alignment.CenterVertically, + ) { + val onLaunchAction = remember(dropdown) { + dropdown + .firstNotNullOfOrNull { + val action = it as? FlatItemAction + action?.takeIf { it.type == FlatItemAction.Type.VIEW } + } + } + ExpandedIfNotEmptyForRow( + valueOrNull = onLaunchAction, + ) { action -> + val onCopy = action.onClick + IconButton( + enabled = onCopy != null, + onClick = { + onCopy?.invoke() + }, + ) { + Icon( + imageVector = Icons.Outlined.Launch, + contentDescription = null, + ) + } + } + + val onDownloadAction = remember(dropdown) { + dropdown + .firstNotNullOfOrNull { + val action = it as? FlatItemAction + action?.takeIf { it.type == FlatItemAction.Type.DOWNLOAD } + } + } + ExpandedIfNotEmptyForRow( + valueOrNull = onDownloadAction, + ) { action -> + val onCopy = action.onClick + IconButton( + enabled = onCopy != null, + onClick = { + onCopy?.invoke() + }, + ) { + Icon( + imageVector = Icons.Outlined.Download, + contentDescription = null, + ) + } + } + } + } + } + }, + dropdown = dropdown, + onClick = selectable.onClick, + onLongClick = selectable.onLongClick, + enabled = true, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/attachments/model/AttachmentItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/attachments/model/AttachmentItem.kt new file mode 100644 index 00000000..6d1a079d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/attachments/model/AttachmentItem.kt @@ -0,0 +1,79 @@ +package com.artemchep.keyguard.feature.attachments.model + +import com.artemchep.keyguard.common.service.download.DownloadProgress +import com.artemchep.keyguard.feature.attachments.SelectableItemState +import com.artemchep.keyguard.ui.ContextItem +import com.artemchep.keyguard.ui.canRetry +import com.artemchep.keyguard.ui.getHttpCode +import kotlinx.coroutines.flow.StateFlow + +data class AttachmentItem( + val key: String, + val name: String, + val extension: String?, + val size: String?, + val statusState: StateFlow, + val actionsState: StateFlow>, + val selectableState: StateFlow, +) { + sealed interface Status { + companion object { + fun of( + downloadStatus: DownloadProgress, + ) = when (downloadStatus) { + is DownloadProgress.None -> None + + is DownloadProgress.Loading -> Loading( + downloaded = downloadStatus.downloaded, + total = downloadStatus.total, + ) + + is DownloadProgress.Complete -> + downloadStatus + .result + .fold( + ifLeft = { e -> + val code = e.getHttpCode() + val autoResume = code.canRetry() + Failed( + code = code, + autoResume = autoResume, + ) + }, + ifRight = { file -> + val uri = file.toURI().toString() + Downloaded( + localUrl = uri,//leParseUri(file).toString(), + ) + }, + ) + } + } + + val previewUrl: String? + + data object None : Status { + override val previewUrl get() = null + } + + data class Loading( + val downloaded: Long?, + val total: Long?, + ) : Status { + override val previewUrl get() = null + } + + data class Failed( + val code: Int, + val autoResume: Boolean, + ) : Status { + override val previewUrl get() = null + } + + data class Downloaded( + val localUrl: String, + ) : Status { + override val previewUrl get() = localUrl + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/attachments/util/CreateAttachmentItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/attachments/util/CreateAttachmentItem.kt new file mode 100644 index 00000000..525c9cc0 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/attachments/util/CreateAttachmentItem.kt @@ -0,0 +1,121 @@ +package com.artemchep.keyguard.feature.attachments.util + +import arrow.core.partially1 +import com.artemchep.keyguard.android.downloader.journal.room.DownloadInfoEntity2 +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.fileName +import com.artemchep.keyguard.common.model.fileSize +import com.artemchep.keyguard.common.service.download.DownloadManager +import com.artemchep.keyguard.common.util.flow.persistingStateIn +import com.artemchep.keyguard.feature.attachments.FooStatus +import com.artemchep.keyguard.feature.attachments.LaunchViewCipherData +import com.artemchep.keyguard.feature.attachments.SelectableItemState +import com.artemchep.keyguard.feature.attachments.SelectableItemStateRaw +import com.artemchep.keyguard.feature.attachments.foo +import com.artemchep.keyguard.feature.attachments.model.AttachmentItem +import com.artemchep.keyguard.feature.filepicker.humanReadableByteCountSI +import com.artemchep.keyguard.feature.home.vault.screen.verify +import com.artemchep.keyguard.feature.navigation.state.RememberStateFlowScope +import com.artemchep.keyguard.ui.selection.SelectionHandle +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.stateIn + +suspend fun RememberStateFlowScope.createAttachmentItem( + attachment: DSecret.Attachment, + tag: DownloadInfoEntity2.AttachmentDownloadTag, + selectionHandle: SelectionHandle, + sharingScope: CoroutineScope, + launchViewCipherData: LaunchViewCipherData?, + downloadManager: DownloadManager, + downloadIo: IO, + removeIo: IO, + verify: ((() -> Unit) -> Unit)? = null, +): AttachmentItem { + val fileName = attachment.fileName() + val fileExt = attachment.fileName() + val fileSize = attachment + .fileSize() + ?.let(::humanReadableByteCountSI) + + val downloadStatusState = downloadManager + .statusByTag(tag) + .map { downloadStatus -> + AttachmentItem.Status.of( + downloadStatus = downloadStatus, + ) + } + .persistingStateIn( + scope = sharingScope, + started = SharingStarted.WhileSubscribed(1000L), + ) + val actionsState = downloadStatusState + .map { attachmentStatus -> + FooStatus.of( + attachmentStatus = attachmentStatus, + ) + } + .distinctUntilChanged() + .map { actionsStatus -> + val actions = foo( + translatorScope = this, + fileName = fileName, + launchViewCipherData = launchViewCipherData, + status = actionsStatus, + downloadIo = downloadIo, + removeIo = removeIo, + navigate = ::navigate, + ).verify(verify) + actions + } + .persistingStateIn( + scope = sharingScope, + started = SharingStarted.WhileSubscribed(1000L), + ) + val selectableState = selectionHandle + .idsFlow + .map { selectedIds -> + SelectableItemStateRaw( + selecting = selectedIds.isNotEmpty(), + selected = attachment.id in selectedIds, + ) + } + .distinctUntilChanged() + .map { raw -> + val onClick = if (raw.selecting) { + // lambda + selectionHandle::toggleSelection.partially1( + attachment.id, + ) + } else { + null + } + val onLongClick = if (raw.selecting) { + null + } else { + // lambda + selectionHandle::toggleSelection.partially1( + attachment.id, + ) + } + SelectableItemState( + selecting = raw.selecting, + selected = raw.selected, + onClick = onClick, + onLongClick = onLongClick, + ) + } + .stateIn(sharingScope) + return AttachmentItem( + key = "attachment.${attachment.id}", + name = fileName, + extension = fileExt, + size = fileSize, + statusState = downloadStatusState, + actionsState = actionsState, + selectableState = selectableState, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/attachments/util/CreateSendAttachmentItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/attachments/util/CreateSendAttachmentItem.kt new file mode 100644 index 00000000..55de7531 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/attachments/util/CreateSendAttachmentItem.kt @@ -0,0 +1,117 @@ +package com.artemchep.keyguard.feature.attachments.util + +import arrow.core.partially1 +import com.artemchep.keyguard.android.downloader.journal.room.DownloadInfoEntity2 +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.DSend +import com.artemchep.keyguard.common.service.download.DownloadManager +import com.artemchep.keyguard.common.util.flow.persistingStateIn +import com.artemchep.keyguard.feature.attachments.FooStatus +import com.artemchep.keyguard.feature.attachments.LaunchViewCipherData +import com.artemchep.keyguard.feature.attachments.SelectableItemState +import com.artemchep.keyguard.feature.attachments.SelectableItemStateRaw +import com.artemchep.keyguard.feature.attachments.foo +import com.artemchep.keyguard.feature.attachments.model.AttachmentItem +import com.artemchep.keyguard.feature.filepicker.humanReadableByteCountSI +import com.artemchep.keyguard.feature.navigation.state.RememberStateFlowScope +import com.artemchep.keyguard.ui.selection.SelectionHandle +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.stateIn + +suspend fun RememberStateFlowScope.createAttachmentItem( + attachment: DSend.File, + tag: DownloadInfoEntity2.AttachmentDownloadTag, + selectionHandle: SelectionHandle, + sharingScope: CoroutineScope, + launchViewCipherData: LaunchViewCipherData?, + downloadManager: DownloadManager, + downloadIo: IO, + removeIo: IO, +): AttachmentItem { + val fileName = attachment.fileName + val fileExt = attachment.fileName + val fileSize = attachment + .size + ?.let(::humanReadableByteCountSI) + + val downloadStatusState = downloadManager + .statusByTag(tag) + .map { downloadStatus -> + AttachmentItem.Status.of( + downloadStatus = downloadStatus, + ) + } + .persistingStateIn( + scope = sharingScope, + started = SharingStarted.WhileSubscribed(1000L), + ) + val actionsState = downloadStatusState + .map { attachmentStatus -> + FooStatus.of( + attachmentStatus = attachmentStatus, + ) + } + .distinctUntilChanged() + .map { actionsStatus -> + val actions = foo( + translatorScope = this, + fileName = fileName, + launchViewCipherData = launchViewCipherData, + status = actionsStatus, + downloadIo = downloadIo, + removeIo = removeIo, + navigate = ::navigate, + ) + actions + } + .persistingStateIn( + scope = sharingScope, + started = SharingStarted.WhileSubscribed(1000L), + ) + val selectableState = selectionHandle + .idsFlow + .map { selectedIds -> + SelectableItemStateRaw( + selecting = selectedIds.isNotEmpty(), + selected = attachment.id in selectedIds, + ) + } + .distinctUntilChanged() + .map { raw -> + val onClick = if (raw.selecting) { + // lambda + selectionHandle::toggleSelection.partially1( + attachment.id, + ) + } else { + null + } + val onLongClick = if (raw.selecting) { + null + } else { + // lambda + selectionHandle::toggleSelection.partially1( + attachment.id, + ) + } + SelectableItemState( + selecting = raw.selecting, + selected = raw.selected, + onClick = onClick, + onLongClick = onLongClick, + ) + } + .stateIn(sharingScope) + return AttachmentItem( + key = "attachment.${attachment.id}", + name = fileName, + extension = fileExt, + size = fileSize, + statusState = downloadStatusState, + actionsState = actionsState, + selectableState = selectableState, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/AccountViewRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/AccountViewRoute.kt new file mode 100644 index 00000000..556cbf8a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/AccountViewRoute.kt @@ -0,0 +1,16 @@ +package com.artemchep.keyguard.feature.auth + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.feature.navigation.Route + +data class AccountViewRoute( + val accountId: AccountId, +) : Route { + @Composable + override fun Content() { + AccountViewScreen( + accountId = accountId, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/AccountViewScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/AccountViewScreen.kt new file mode 100644 index 00000000..9699410d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/AccountViewScreen.kt @@ -0,0 +1,236 @@ +package com.artemchep.keyguard.feature.auth + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.IntrinsicSize +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.items +import androidx.compose.material.ExperimentalMaterialApi +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Launch +import androidx.compose.material.icons.outlined.SearchOff +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.feature.EmptyView +import com.artemchep.keyguard.feature.home.vault.component.VaultViewItem +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.DefaultFab +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.FabState +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.OptionallyKeepScreenOnEffect +import com.artemchep.keyguard.ui.OptionsButton +import com.artemchep.keyguard.ui.ScaffoldLazyColumn +import com.artemchep.keyguard.ui.shimmer.shimmer +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.toolbar.LargeToolbar +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun AccountViewScreen( + accountId: AccountId, +) { + OptionallyKeepScreenOnEffect() + + val state = accountState(accountId) + AccountViewScreen( + state = state, + ) +} + +@OptIn( + ExperimentalMaterial3Api::class, + ExperimentalMaterialApi::class, +) +@Composable +fun AccountViewScreen( + state: AccountViewState, +) { + val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + ScaffoldLazyColumn( + modifier = Modifier + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + LargeToolbar( + title = { + AccountViewTitle(state) + }, + navigationIcon = { + NavigationIcon() + }, + actions = { + val updatedOnOpenWebVault by rememberUpdatedState( + newValue = AccountViewState.content.data.onOpenWebVault.getOrNull(state), + ) + TextButton( + enabled = updatedOnOpenWebVault != null, + onClick = { + updatedOnOpenWebVault?.invoke() + }, + ) { + Icon( + imageVector = Icons.Outlined.Launch, + contentDescription = null, + ) + Spacer( + modifier = Modifier + .width(Dimens.buttonIconPadding), + ) + Text( + text = stringResource(Res.strings.web_vault), + ) + } + + val actions = AccountViewState.content.data.actions.getOrNull(state) + ?: return@LargeToolbar + OptionsButton( + actions = actions, + ) + }, + scrollBehavior = scrollBehavior, + ) + }, + floatingActionState = run { + val primaryAction = AccountViewState.content.data.primaryAction.getOrNull(state) + val fabOnClick = primaryAction?.onClick + val fabState = if (fabOnClick != null) { + FabState( + onClick = fabOnClick, + model = null, + ) + } else { + null + } + rememberUpdatedState(newValue = fabState) + }, + floatingActionButton = { + val primaryAction = AccountViewState.content.data.primaryAction.getOrNull(state) + DefaultFab( + icon = { + val icon = primaryAction?.icon + if (icon != null) { + Icon( + imageVector = icon, + contentDescription = null, + ) + } + }, + text = { + Text(primaryAction?.text.orEmpty()) + }, + ) + }, + ) { + val items = AccountViewState.content.data.items.getOrNull(state).orEmpty() + items( + items, + key = { it.id }, + ) { + VaultViewItem(item = it) + } + } +} + +@Composable +private fun AccountViewTitle( + state: AccountViewState, +) = Column { + val isLoading = state.content is AccountViewState.Content.Skeleton + val shimmerColor = LocalContentColor.current + .combineAlpha(DisabledEmphasisAlpha) + + val host by derivedStateOf { + val data = AccountViewState.content.data.data.getOrNull(state) + data?.host.orEmpty() + } + if (isLoading) { + Box( + modifier = Modifier + .height(IntrinsicSize.Min), + ) { + Box( + modifier = Modifier + .shimmer() + .fillMaxHeight() + .fillMaxWidth(0.28f) + .clip(MaterialTheme.shapes.medium) + .background(shimmerColor), + ) + // only needed to measure the text size + Text( + "", + style = MaterialTheme.typography.labelSmall, + ) + } + Box( + modifier = Modifier + .padding(top = 4.dp) + .height(IntrinsicSize.Min), + ) { + Box( + modifier = Modifier + .shimmer() + .fillMaxHeight() + .fillMaxWidth(0.45f) + .clip(MaterialTheme.shapes.medium) + .background(shimmerColor), + ) + // only needed to measure the text size + Text( + "", + style = MaterialTheme.typography.titleMedium, + ) + } + } else { + Text( + text = host, + style = MaterialTheme.typography.labelSmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + overflow = TextOverflow.Ellipsis, + maxLines = 2, + ) + Text( + text = "Bitwarden", + style = MaterialTheme.typography.titleMedium, + overflow = TextOverflow.Ellipsis, + maxLines = 1, + ) + } +} + +@Composable +private fun NoItemsPlaceholder() { + EmptyView( + icon = { + Icon(Icons.Outlined.SearchOff, null) + }, + text = { + Text(text = "No items") + }, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/AccountViewState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/AccountViewState.kt new file mode 100644 index 00000000..c36aafab --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/AccountViewState.kt @@ -0,0 +1,42 @@ +package com.artemchep.keyguard.feature.auth + +import androidx.compose.runtime.Immutable +import androidx.compose.ui.graphics.vector.ImageVector +import arrow.optics.optics +import com.artemchep.keyguard.common.model.DAccount +import com.artemchep.keyguard.feature.home.vault.model.VaultViewItem +import com.artemchep.keyguard.ui.FlatItemAction + +@Immutable +@optics +data class AccountViewState( + val content: Content = Content.Skeleton, +) { + companion object; + + @optics + sealed interface Content { + companion object; + + data object Skeleton : Content + + data object NotFound : Content + + @optics + data class Data( + val data: DAccount, + val items: List, + val actions: List, + val primaryAction: PrimaryAction? = null, + val onOpenWebVault: (() -> Unit)? = null, + ) : Content { + companion object; + + data class PrimaryAction( + val text: String = "", + val icon: ImageVector? = null, + val onClick: (() -> Unit)? = null, + ) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/AccountViewStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/AccountViewStateProducer.kt new file mode 100644 index 00000000..07784a57 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/AccountViewStateProducer.kt @@ -0,0 +1,1037 @@ +package com.artemchep.keyguard.feature.auth + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.ColorLens +import androidx.compose.material.icons.outlined.Edit +import androidx.compose.material.icons.outlined.Fingerprint +import androidx.compose.material.icons.outlined.Folder +import androidx.compose.material.icons.outlined.HelpOutline +import androidx.compose.material.icons.outlined.Login +import androidx.compose.material.icons.outlined.Logout +import androidx.compose.material.icons.outlined.VerifiedUser +import androidx.compose.material3.Badge +import androidx.compose.material3.BadgedBox +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.unit.dp +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.io.toIO +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.model.DAccount +import com.artemchep.keyguard.common.model.DFilter +import com.artemchep.keyguard.common.model.DMeta +import com.artemchep.keyguard.common.model.DProfile +import com.artemchep.keyguard.common.model.firstOrNull +import com.artemchep.keyguard.common.service.clipboard.ClipboardService +import com.artemchep.keyguard.common.usecase.CopyText +import com.artemchep.keyguard.common.usecase.DateFormatter +import com.artemchep.keyguard.common.usecase.GetAccounts +import com.artemchep.keyguard.common.usecase.GetCiphers +import com.artemchep.keyguard.common.usecase.GetCollections +import com.artemchep.keyguard.common.usecase.GetFingerprint +import com.artemchep.keyguard.common.usecase.GetFolders +import com.artemchep.keyguard.common.usecase.GetGravatarUrl +import com.artemchep.keyguard.common.usecase.GetMetas +import com.artemchep.keyguard.common.usecase.GetOrganizations +import com.artemchep.keyguard.common.usecase.GetProfiles +import com.artemchep.keyguard.common.usecase.PutAccountColorById +import com.artemchep.keyguard.common.usecase.PutAccountMasterPasswordHintById +import com.artemchep.keyguard.common.usecase.PutAccountNameById +import com.artemchep.keyguard.common.usecase.QueueSyncById +import com.artemchep.keyguard.common.usecase.RemoveAccountById +import com.artemchep.keyguard.common.usecase.SupervisorRead +import com.artemchep.keyguard.core.store.DatabaseManager +import com.artemchep.keyguard.feature.auth.login.LoginRoute +import com.artemchep.keyguard.feature.colorpicker.ColorPickerRoute +import com.artemchep.keyguard.feature.colorpicker.createColorPickerDialogIntent +import com.artemchep.keyguard.feature.confirmation.ConfirmationRoute +import com.artemchep.keyguard.feature.confirmation.createConfirmationDialogIntent +import com.artemchep.keyguard.feature.crashlytics.crashlyticsTap +import com.artemchep.keyguard.feature.emailleak.EmailLeakRoute +import com.artemchep.keyguard.feature.home.vault.VaultRoute +import com.artemchep.keyguard.feature.home.vault.collections.CollectionsRoute +import com.artemchep.keyguard.feature.home.vault.folders.FoldersRoute +import com.artemchep.keyguard.feature.home.vault.model.VaultViewItem +import com.artemchep.keyguard.feature.home.vault.organizations.OrganizationsRoute +import com.artemchep.keyguard.feature.largetype.LargeTypeRoute +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.registerRouteResultReceiver +import com.artemchep.keyguard.feature.navigation.state.RememberStateFlowScope +import com.artemchep.keyguard.feature.navigation.state.copy +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.provider.bitwarden.ServerEnv +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.buildContextItems +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.EmailIcon +import com.artemchep.keyguard.ui.icons.KeyguardCipher +import com.artemchep.keyguard.ui.icons.KeyguardCollection +import com.artemchep.keyguard.ui.icons.KeyguardOrganization +import com.artemchep.keyguard.ui.icons.KeyguardPremium +import com.artemchep.keyguard.ui.icons.KeyguardTwoFa +import com.artemchep.keyguard.ui.icons.SyncIcon +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.icons.iconSmall +import com.artemchep.keyguard.ui.theme.badgeContainer +import com.artemchep.keyguard.ui.theme.isDark +import kotlinx.coroutines.DelicateCoroutinesApi +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.FlowCollector +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.flow +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.toList +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +@Composable +fun accountState( + accountId: AccountId, +): AccountViewState = with(localDI().direct) { + accountState( + queueSyncById = instance(), + syncSupervisor = instance(), + getGravatarUrl = instance(), + clipboardService = instance(), + dateFormatter = instance(), + removeAccountById = instance(), + getFingerprint = instance(), + putAccountNameById = instance(), + putAccountColorById = instance(), + putAccountMasterPasswordHintById = instance(), + getAccounts = instance(), + getProfiles = instance(), + getCiphers = instance(), + getFolders = instance(), + getCollections = instance(), + getOrganizations = instance(), + getMetas = instance(), + db = instance(), + accountId = accountId, + ) +} + +private data class AccountCounters( + val ciphers: Int, + val organizations: Int, + val collections: Int, + val folders: Int, +) + +@Composable +fun accountState( + queueSyncById: QueueSyncById, + syncSupervisor: SupervisorRead, + getGravatarUrl: GetGravatarUrl, + clipboardService: ClipboardService, + dateFormatter: DateFormatter, + removeAccountById: RemoveAccountById, + getFingerprint: GetFingerprint, + putAccountNameById: PutAccountNameById, + putAccountColorById: PutAccountColorById, + putAccountMasterPasswordHintById: PutAccountMasterPasswordHintById, + getAccounts: GetAccounts, + getProfiles: GetProfiles, + getCiphers: GetCiphers, + getFolders: GetFolders, + getCollections: GetCollections, + getOrganizations: GetOrganizations, + getMetas: GetMetas, + db: DatabaseManager, + accountId: AccountId, +): AccountViewState = produceScreenState( + initial = AccountViewState(), + key = "account:$accountId", + args = arrayOf( + accountId, + ), +) { + fun doReLogin( + accountId: AccountId, + email: String, + env: ServerEnv, + ) { + val route = registerRouteResultReceiver( + route = LoginRoute( + args = LoginRoute.Args( + accountId = accountId.id, + email = email, + emailEditable = false, + env = env, + envEditable = false, + ), + ), + ) { + navigate(NavigationIntent.Pop) + } + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + } + + fun doSyncAccountById(accountId: AccountId) { + queueSyncById(accountId) + .launchIn(appScope) + } + + fun doRemoveAccountById(accountId: AccountId) { + val intent = createConfirmationDialogIntent( + icon = icon(Icons.Outlined.Logout), + title = translate(Res.strings.account_log_out_confirmation_title), + message = translate(Res.strings.account_log_out_confirmation_text), + ) { + removeAccountById(setOf(accountId)) + .launchIn(appScope) + } + navigate(intent) + } + + val accountFlow = getAccounts() + .map { it.firstOrNull(accountId) } + val metaFlow = getMetas() + .map { it.firstOrNull(accountId) } + val profileFlow = getProfiles() + .map { it.firstOrNull(accountId) } + + val countersFlow = kotlin.run { + fun Flow>.mapCount(predicate: (T) -> Boolean) = this + .map { list -> list.count(predicate) } + .distinctUntilChanged() + + val ciphersCountFlow = getCiphers() + .mapCount { + it.accountId == accountId.id && + it.deletedDate == null + } + val foldersCountFlow = getFolders() + .mapCount { + it.accountId == accountId.id && + !it.deleted + } + val collectionsCountFlow = getCollections() + .mapCount { it.accountId == accountId.id } + val organizationsCountFlow = getOrganizations() + .mapCount { it.accountId == accountId.id } + + combine( + ciphersCountFlow, + organizationsCountFlow, + collectionsCountFlow, + foldersCountFlow, + ) { ciphersCount, organizationsCount, collectionsCount, foldersCount -> + AccountCounters( + ciphers = ciphersCount, + organizations = organizationsCount, + collections = collectionsCount, + folders = foldersCount, + ) + } + } + + val copyText = copy(clipboardService) + + fun Flow.prepare() = this + .distinctUntilChanged() + + fun Flow.prepare() = this + .distinctUntilChanged() + + val primaryActionFlow = metaFlow.prepare() + .map { meta -> + val requiresAuthentication = meta?.lastSyncResult is DMeta.LastSyncResult.Failure + // TODO: +// && +// meta.lastSyncResult.requiresAuthentication + val primaryActionOrNull = if (requiresAuthentication) { + val token = db.get() + .effectMap { + val info = it + .accountQueries + .getByAccountId(accountId.id) + .executeAsOne() + .data_ + info + } + .attempt() + .bind() + token.fold( + ifLeft = { + null + }, + ifRight = { t -> + val email = t.user.email + val env = t.env.back() + AccountViewState.Content.Data.PrimaryAction( + text = translate(Res.strings.account_action_sign_in_title), + icon = Icons.Outlined.Login, + onClick = ::doReLogin + .partially1(accountId) + .partially1(email) + .partially1(env), + ) + }, + ) + } else { + null + } + primaryActionOrNull + } + val itemsFlow = combine( + metaFlow.prepare(), + accountFlow.prepare(), + profileFlow.prepare(), + countersFlow.prepare(), + ) { meta, account, profile, counters -> + buildItemsFlow( + accountId = accountId, + scope = this, + account = account, + profile = profile, + meta = meta, + counters = counters, + copyText = copyText, + putAccountNameById = putAccountNameById, + putAccountColorById = putAccountColorById, + putAccountMasterPasswordHintById = putAccountMasterPasswordHintById, + queueSyncById = queueSyncById, + getFingerprint = getFingerprint, + dateFormatter = dateFormatter, + getGravatarUrl = getGravatarUrl, + ).toList() + } + combine( + accountFlow, + itemsFlow, + primaryActionFlow, + ) { accountOrNull, items, primaryAction -> + if (accountOrNull == null) { + return@combine AccountViewState.Content.NotFound + } + + val syncing = false + val busy = false + + val actionSync = + FlatItemAction( + leading = { + SyncIcon(rotating = syncing) + }, + title = translate(Res.strings.sync), + onClick = if (busy) { + null + } else { + // on click listener + ::doSyncAccountById.partially1(accountOrNull.id) + }, + ) + val actionRemove = + FlatItemAction( + icon = Icons.Outlined.Logout, + title = translate(Res.strings.account_action_sign_out_title), + onClick = if (busy) { + null + } else { + // on click listener + ::doRemoveAccountById.partially1(accountOrNull.id) + }, + ) + AccountViewState.Content.Data( + data = accountOrNull, + actions = listOf( + actionSync, + actionRemove, + ), + items = items, + primaryAction = primaryAction, + onOpenWebVault = { + val intent = NavigationIntent.NavigateToBrowser(accountOrNull.url) + navigate(intent) + }, + ) + } + .map { content -> + AccountViewState( + content = content, + ) + } +} + +@OptIn(ExperimentalMaterial3Api::class) +private fun buildItemsFlow( + accountId: AccountId, + scope: RememberStateFlowScope, + account: DAccount?, + profile: DProfile?, + meta: DMeta?, + counters: AccountCounters, + getGravatarUrl: GetGravatarUrl, + copyText: CopyText, + putAccountNameById: PutAccountNameById, + putAccountColorById: PutAccountColorById, + putAccountMasterPasswordHintById: PutAccountMasterPasswordHintById, + queueSyncById: QueueSyncById, + getFingerprint: GetFingerprint, + dateFormatter: DateFormatter, +): Flow = flow { + if (meta != null) { + when (val syncResult = meta.lastSyncResult) { + is DMeta.LastSyncResult.Success -> { + // Show nothing. + } + + is DMeta.LastSyncResult.Failure -> { + val time = dateFormatter.formatDateTime(syncResult.timestamp) + val model = VaultViewItem.Error( + id = "error", + name = "Couldn't sync the account", + message = syncResult.reason ?: "Something went wrong", + timestamp = time, + onRetry = if (true) { + // lambda + { + queueSyncById(accountId) + .launchIn(scope.appScope) + } + } else { + null + }, + ) + emit(model) + } + + null -> { + // Do nothing. + } + } + } + if (profile != null) { + emitName( + scope = scope, + profile = profile, + copyText = copyText, + putAccountNameById = putAccountNameById, + putAccountColorById = putAccountColorById, + ) + emitEmail( + scope = scope, + profile = profile, + getGravatarUrl = getGravatarUrl, + copyText = copyText, + ) + } + if (meta != null) { + val syncTimestamp = meta.lastSyncTimestamp + if (syncTimestamp != null) { + val syncDate = dateFormatter.formatDateTime(syncTimestamp) + val syncInfoText = scope.translate(Res.strings.account_last_synced_at, syncDate) + val syncInfoItem = VaultViewItem.Label( + id = "sync.timestamp", + text = AnnotatedString(syncInfoText), + ) + emit(syncInfoItem) + } + } + + if (account != null) { + val ff0 = VaultViewItem.Action( + id = "ciphers", + title = scope.translate(Res.strings.items), + leading = { + BadgedBox( + badge = { + Badge( + containerColor = MaterialTheme.colorScheme.badgeContainer, + ) { + val size = counters.ciphers + Text(text = size.toString()) + } + }, + ) { + Icon(Icons.Outlined.KeyguardCipher, null) + } + }, + trailing = { + ChevronIcon() + }, + onClick = { + val route = VaultRoute.by(account = account) + val intent = NavigationIntent.NavigateToRoute(route) + scope.navigate(intent) + }, + ) + emit(ff0) + } + val ff = VaultViewItem.Action( + id = "folders", + title = scope.translate(Res.strings.folders), + leading = { + BadgedBox( + badge = { + Badge( + containerColor = MaterialTheme.colorScheme.badgeContainer, + ) { + val size = counters.folders + Text(text = size.toString()) + } + }, + ) { + Icon(Icons.Outlined.Folder, null) + } + }, + trailing = { + ChevronIcon() + }, + onClick = { + val route = FoldersRoute( + args = FoldersRoute.Args( + filter = DFilter.ById(accountId.id, DFilter.ById.What.ACCOUNT), + ), + ) + val intent = NavigationIntent.NavigateToRoute(route) + scope.navigate(intent) + }, + ) + emit(ff) + val ff2 = VaultViewItem.Action( + id = "collections", + title = scope.translate(Res.strings.collections), + leading = { + BadgedBox( + badge = { + Badge( + containerColor = MaterialTheme.colorScheme.badgeContainer, + ) { + val size = counters.collections + Text(text = size.toString()) + } + }, + ) { + Icon(Icons.Outlined.KeyguardCollection, null) + } + }, + trailing = { + ChevronIcon() + }, + onClick = { + val route = CollectionsRoute( + args = CollectionsRoute.Args( + accountId = accountId, + organizationId = null, + ), + ) + val intent = NavigationIntent.NavigateToRoute(route) + scope.navigate(intent) + }, + ) + emit(ff2) + val ff3 = VaultViewItem.Action( + id = "organizations", + title = scope.translate(Res.strings.organizations), + leading = { + BadgedBox( + badge = { + Badge( + containerColor = MaterialTheme.colorScheme.badgeContainer, + ) { + val size = counters.organizations + Text(text = size.toString()) + } + }, + ) { + Icon(Icons.Outlined.KeyguardOrganization, null) + } + }, + trailing = { + ChevronIcon() + }, + onClick = { + val route = OrganizationsRoute( + args = OrganizationsRoute.Args( + accountId = accountId, + ), + ) + val intent = NavigationIntent.NavigateToRoute(route) + scope.navigate(intent) + }, + ) + emit(ff3) + val ff4 = VaultViewItem.Section( + id = "section", + text = scope.translate(Res.strings.security), + ) + emit(ff4) + if (profile != null) { + emitFingerprint( + scope = scope, + profile = profile, + copyText = copyText, + getFingerprint = getFingerprint, + ) + emitMasterPasswordHint( + scope = scope, + profile = profile, + copyText = copyText, + putAccountMasterPasswordHintById = putAccountMasterPasswordHintById, + ) + val ff5 = VaultViewItem.Section( + id = "section2", + text = scope.translate(Res.strings.info), + ) + emit(ff5) + } + + if (account != null && profile != null) { + emitPremium( + scope = scope, + account = account, + profile = profile, + ) + emitTwoFactorAuth( + scope = scope, + account = account, + profile = profile, + ) + val unofficialServer = profile.unofficialServer + if (unofficialServer) { + val unofficialServerText = scope.translate(Res.strings.bitwarden_unofficial_server) + val unofficialServerItem = VaultViewItem.Label( + id = "unofficial_server", + text = AnnotatedString(unofficialServerText), + ) + emit(unofficialServerItem) + } +// emitMasterPasswordHint( +// profile = profile, +// copyText = copyText, +// ) + } +} + +private suspend fun FlowCollector.emitName( + scope: RememberStateFlowScope, + profile: DProfile, + copyText: CopyText, + putAccountNameById: PutAccountNameById, + putAccountColorById: PutAccountColorById, +) { + val name = profile.name + + fun onClick() { + val intent = scope.createConfirmationDialogIntent( + icon = icon(Icons.Outlined.Edit), + item = ConfirmationRoute.Args.Item.StringItem( + key = "name", + title = scope.translate(Res.strings.account_name), + value = name, + // You can have an empty account name. + canBeEmpty = true, + ), + title = scope.translate(Res.strings.account_action_change_name_title), + ) { name -> + val profileIdsToNames = mapOf( + AccountId(profile.accountId) to name, + ) + putAccountNameById(profileIdsToNames) + .launchIn(scope.appScope) + } + scope.navigate(intent) + } + + fun onEditColor() { + val intent = scope.createColorPickerDialogIntent( + args = ColorPickerRoute.Args( + color = profile.accentColor.dark, + ), + ) { color -> + val profileIdsToColors = mapOf( + AccountId(profile.accountId) to color, + ) + putAccountColorById(profileIdsToColors) + .launchIn(scope.appScope) + } + scope.navigate(intent) + } + + val id = "name" + val nameEditActionItem = FlatItemAction( + icon = Icons.Outlined.Edit, + title = scope.translate(Res.strings.account_action_change_name_title), + onClick = ::onClick, + ) + val colorEditActionItem = FlatItemAction( + leading = iconSmall(Icons.Outlined.Edit, Icons.Outlined.ColorLens), + trailing = { + val accentColor = if (MaterialTheme.colorScheme.isDark) { + profile.accentColor.dark + } else { + profile.accentColor.light + } + Box( + Modifier + .background(accentColor, CircleShape) + .size(24.dp), + ) + }, + title = scope.translate(Res.strings.account_action_change_color_title), + onClick = ::onEditColor, + ) + val leading: @Composable RowScope.() -> Unit = { + val backgroundColor = if (MaterialTheme.colorScheme.isDark) { + profile.accentColor.dark + } else { + profile.accentColor.light + } + Box( + modifier = Modifier + .size(24.dp) + .clip(CircleShape) + .background(backgroundColor), + ) + } + val nameItem = if (name.isBlank()) { + VaultViewItem.Value( + id = id, + elevation = 1.dp, + title = scope.translate(Res.strings.account_name), + value = "", + leading = leading, + dropdown = listOfNotNull( + // action to edit current name + nameEditActionItem, + colorEditActionItem, + ), + ) + } else { + VaultViewItem.Value( + id = id, + elevation = 1.dp, + title = scope.translate(Res.strings.account_name), + value = name, + leading = leading, + dropdown = buildContextItems { + section { + this += copyText.FlatItemAction( + title = scope.translate(Res.strings.copy), + value = name, + ) + } + section { + this += LargeTypeRoute.showInLargeTypeActionOrNull( + translator = scope, + text = name, + navigate = scope::navigate, + ) + this += LargeTypeRoute.showInLargeTypeActionAndLockOrNull( + translator = scope, + text = name, + navigate = scope::navigate, + ) + } + section { + this += nameEditActionItem + this += colorEditActionItem + } + }, + ) + } + emit(nameItem) +} + +private suspend fun FlowCollector.emitEmail( + scope: RememberStateFlowScope, + profile: DProfile, + getGravatarUrl: GetGravatarUrl, + copyText: CopyText, +) { + val id = "email" + val email = profile.email + if (email.isNotBlank()) { + val gravatarUrl = getGravatarUrl(email) + .attempt() + .bind() + .getOrNull() + val emailItem = VaultViewItem.Value( + id = id, + elevation = 1.dp, + title = scope.translate(Res.strings.email), + value = email, + leading = { + EmailIcon( + modifier = Modifier + .size(24.dp) + .clip(CircleShape), + gravatarUrl = gravatarUrl, + ) + }, + dropdown = buildContextItems { + section { + this += copyText.FlatItemAction( + title = scope.translate(Res.strings.copy), + value = email, + ) + } + section { + this += LargeTypeRoute.showInLargeTypeActionOrNull( + translator = scope, + text = email, + navigate = scope::navigate, + ) + this += LargeTypeRoute.showInLargeTypeActionAndLockOrNull( + translator = scope, + text = email, + navigate = scope::navigate, + ) + } + if (!profile.emailVerified) { + section { + this += FlatItemAction( + leading = icon(Icons.Outlined.VerifiedUser), + title = scope.translate(Res.strings.account_action_email_verify_instructions_title), + onClick = null, + ) + } + } + section { + this += EmailLeakRoute.checkBreachesEmailActionOrNull( + translator = scope, + accountId = AccountId(profile.accountId), + email = profile.email, + navigate = scope::navigate, + ) + } + }, + badge = if (profile.emailVerified) { + VaultViewItem.Value.Badge( + text = scope.translate(Res.strings.email_verified), + score = 1f, + ) + } else { + VaultViewItem.Value.Badge( + text = scope.translate(Res.strings.email_not_verified), + score = 0.5f, + ) + }, + ) + emit(emailItem) + } +} + +private suspend fun FlowCollector.emitTwoFactorAuth( + scope: RememberStateFlowScope, + account: DAccount, + profile: DProfile, +) { + val id = "twofa" + val twoFactorEnabled = profile.twoFactorEnabled + val item = VaultViewItem.Action( + id = id, + title = scope.translate(Res.strings.account_action_tfa_title), + text = scope.translate(Res.strings.account_action_tfa_text), + leading = { + Icon(Icons.Outlined.KeyguardTwoFa, null) + }, + trailing = { + ChevronIcon() + }, + badge = if (twoFactorEnabled) { + VaultViewItem.Action.Badge( + text = scope.translate(Res.strings.account_action_tfa_active_status), + score = 1f, + ) + } else { + null + }, + onClick = { + val intent = NavigationIntent.NavigateToBrowser(account.url) + scope.navigate(intent) + }, + ) + emit(item) +} + +private suspend fun FlowCollector.emitPremium( + scope: RememberStateFlowScope, + account: DAccount, + profile: DProfile, +) { + val id = "premium" + val premiumItem = if (profile.premium) { + VaultViewItem.Action( + id = id, + title = scope.translate(Res.strings.bitwarden_premium), + leading = { + Icon(Icons.Outlined.KeyguardPremium, null) + }, + trailing = { + ChevronIcon() + }, + badge = VaultViewItem.Action.Badge( + text = scope.translate(Res.strings.pref_item_premium_status_active), + score = 1f, + ), + onClick = { + val intent = NavigationIntent.NavigateToBrowser(account.url) + scope.navigate(intent) + }, + ) + } else { + VaultViewItem.Action( + id = id, + title = scope.translate(Res.strings.bitwarden_premium), + text = scope.translate(Res.strings.account_action_premium_purchase_instructions_title), + leading = { + Icon(Icons.Outlined.KeyguardPremium, null) + }, + trailing = { + ChevronIcon() + }, + onClick = { + val intent = NavigationIntent.NavigateToBrowser(account.url) + scope.navigate(intent) + }, + ) + } + emit(premiumItem) +} + +private suspend fun FlowCollector.emitMasterPasswordHint( + scope: RememberStateFlowScope, + profile: DProfile, + copyText: CopyText, + putAccountMasterPasswordHintById: PutAccountMasterPasswordHintById, +) { + val hint = profile.masterPasswordHint + + fun onClick() { + val intent = scope.createConfirmationDialogIntent( + icon = icon(Icons.Outlined.Edit), + item = ConfirmationRoute.Args.Item.StringItem( + key = "name", + title = scope.translate(Res.strings.master_password_hint), + value = hint.orEmpty(), + // You can have an empty password hint. + canBeEmpty = true, + ), + title = scope.translate(Res.strings.account_action_change_master_password_hint_title), + ) { newHint -> + val profileIdsToNames = mapOf( + AccountId(profile.accountId) to newHint, + ) + putAccountMasterPasswordHintById(profileIdsToNames) + .launchIn(scope.appScope) + } + scope.navigate(intent) + } + + val id = "master_password_hint" + val hintEditActionItem = FlatItemAction( + icon = Icons.Outlined.Edit, + title = scope.translate(Res.strings.account_action_change_master_password_hint_title), + onClick = ::onClick, + ) + val hintItem = + VaultViewItem.Value( + id = id, + title = scope.translate(Res.strings.master_password_hint), + value = hint.orEmpty(), + private = true, + leading = { + Icon(Icons.Outlined.HelpOutline, null) + }, + dropdown = buildContextItems { + if (!hint.isNullOrBlank()) { + section { + this += copyText.FlatItemAction( + title = scope.translate(Res.strings.copy), + value = hint, + ) + } + } + section { + this += hintEditActionItem + } + }, + ) + emit(hintItem) +} + +private suspend fun FlowCollector.emitFingerprint( + scope: RememberStateFlowScope, + profile: DProfile, + copyText: CopyText, + getFingerprint: GetFingerprint, +) { + val fingerprintOrException = getFingerprint(AccountId(profile.accountId)) + .toIO() + .crashlyticsTap() + .attempt() + .bind() + val fingerprint = fingerprintOrException.getOrNull().orEmpty() + val id = "fingerprint" + if (fingerprint.isNotBlank()) { + val item = VaultViewItem.Value( + id = id, + title = scope.translate(Res.strings.fingerprint_phrase), + value = fingerprint, + monospace = true, + colorize = true, + leading = { + Icon(Icons.Outlined.Fingerprint, null) + }, + dropdown = buildContextItems { + section { + this += copyText.FlatItemAction( + title = scope.translate(Res.strings.copy), + value = fingerprint, + ) + } + section { + this += LargeTypeRoute.showInLargeTypeActionOrNull( + translator = scope, + text = fingerprint, + colorize = true, + navigate = scope::navigate, + ) + this += LargeTypeRoute.showInLargeTypeActionAndLockOrNull( + translator = scope, + text = fingerprint, + colorize = true, + navigate = scope::navigate, + ) + } + section { + this += FlatItemAction( + icon = Icons.Outlined.HelpOutline, + title = scope.translate(Res.strings.fingerprint_phrase_help_title), + trailing = { + ChevronIcon() + }, + onClick = { + val url = "https://bitwarden.com/help/fingerprint-phrase/" + val intent = NavigationIntent.NavigateToBrowser(url) + scope.navigate(intent) + }, + ) + } + }, + ) + emit(item) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/Autofill.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/Autofill.kt new file mode 100644 index 00000000..ed6ccd0e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/Autofill.kt @@ -0,0 +1,71 @@ +package com.artemchep.keyguard.feature.auth.common + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.ExperimentalComposeUiApi +import androidx.compose.ui.Modifier +import androidx.compose.ui.autofill.AutofillNode +import androidx.compose.ui.autofill.AutofillType +import androidx.compose.ui.composed +import androidx.compose.ui.focus.onFocusChanged +import androidx.compose.ui.layout.boundsInWindow +import androidx.compose.ui.layout.onGloballyPositioned +import androidx.compose.ui.platform.LocalAutofill +import androidx.compose.ui.platform.LocalAutofillTree + +@OptIn(ExperimentalComposeUiApi::class) +fun Modifier.autofill( + value: String, + autofillTypes: List, + onFill: ((String) -> Unit)?, +) = composed { + val autofillNode = remember(autofillTypes, onFill) { + AutofillNode( + onFill = onFill, + autofillTypes = autofillTypes, + ) + } + val updatedAutofill by rememberUpdatedState(newValue = LocalAutofill.current) + val updatedAutofillNode by rememberUpdatedState(newValue = autofillNode) + + // TODO: Do we need to remove the node at some point? Do + // we need to add it every recomposition? + val autofillTree = LocalAutofillTree.current + autofillTree += autofillNode + + AutofillSideEffect( + value = value, + node = autofillNode, + ) + + this + .onGloballyPositioned { + autofillNode.boundingBox = it.boundsInWindow() + } + .onFocusChanged { focusState -> + val autofill = updatedAutofill + ?: return@onFocusChanged + if (focusState.isFocused) { + // To avoid exception: + // requestAutofill called before onChildPositioned() + // + // we first check if the element has been positioned already. + // Note that a few lines of code we update the position. + if (autofillNode.boundingBox != null) { + autofill.requestAutofillForNode(updatedAutofillNode) + } + } else { + autofill.cancelAutofillForNode(updatedAutofillNode) + } + } +} + +@OptIn(ExperimentalComposeUiApi::class) +@Composable +expect fun AutofillSideEffect( + value: String, + node: AutofillNode, +) + diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/IntFieldModel.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/IntFieldModel.kt new file mode 100644 index 00000000..701ce126 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/IntFieldModel.kt @@ -0,0 +1,15 @@ +package com.artemchep.keyguard.feature.auth.common + +import androidx.compose.runtime.Immutable +import arrow.optics.optics + +@Immutable +@optics +data class IntFieldModel( + val number: Long, + val min: Long, + val max: Long, + val onChange: ((Long) -> Unit)? = null, +) { + companion object +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/SwitchFieldModel.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/SwitchFieldModel.kt new file mode 100644 index 00000000..da76c13d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/SwitchFieldModel.kt @@ -0,0 +1,13 @@ +package com.artemchep.keyguard.feature.auth.common + +import androidx.compose.runtime.Immutable +import arrow.optics.optics + +@Immutable +@optics +data class SwitchFieldModel( + val checked: Boolean = false, + val onChange: ((Boolean) -> Unit)? = null, +) { + companion object +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/TextFieldModel.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/TextFieldModel.kt new file mode 100644 index 00000000..1beb02e4 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/TextFieldModel.kt @@ -0,0 +1,52 @@ +package com.artemchep.keyguard.feature.auth.common + +import androidx.compose.runtime.Immutable +import androidx.compose.runtime.MutableState +import androidx.compose.runtime.mutableStateOf +import arrow.optics.optics +import kotlinx.collections.immutable.ImmutableList +import kotlinx.collections.immutable.persistentListOf + +@Immutable +@optics +data class TextFieldModel2( + val state: MutableState, + val text: String = state.value, + val hint: String? = null, + val error: String? = null, + val vl: Vl? = null, + val autocompleteOptions: ImmutableList = persistentListOf(), + val onChange: ((String) -> Unit)? = null, +) { + companion object { + val empty = TextFieldModel2( + state = mutableStateOf(""), + ) + + fun of( + state: MutableState, + validated: Validated, + hint: String? = null, + onChange: ((String) -> Unit)? = state::value::set, + ) = TextFieldModel2( + state = state, + text = validated.model, + hint = hint, + error = (validated as? Validated.Failure)?.error + ?.takeUnless { validated.model.isEmpty() }, + onChange = onChange, + ) + } + + data class Vl( + val type: Type, + val text: String, + ) { + enum class Type { + SUCCESS, + INFO, + WARNING, + ERROR, + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/Validated.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/Validated.kt new file mode 100644 index 00000000..87f9f580 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/Validated.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.feature.auth.common + +sealed interface Validated { + val model: T + + data class Success( + override val model: T, + ) : Validated + + data class Failure( + override val model: T, + val error: String = "", + ) : Validated +} + +inline fun T.anyFlatMap(block: (Success) -> T) = + when (this) { + is Success -> block(this) + else -> this + } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/Visibility.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/Visibility.kt new file mode 100644 index 00000000..c319cc07 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/Visibility.kt @@ -0,0 +1,50 @@ +package com.artemchep.keyguard.feature.auth.common + +import androidx.compose.material3.IconButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue +import arrow.core.partially1 +import com.artemchep.keyguard.ui.icons.VisibilityIcon + +@Composable +fun VisibilityToggle( + visibilityState: VisibilityState, +) { + VisibilityToggle( + visible = visibilityState.isVisible, + enabled = visibilityState.isEnabled, + onVisibleChange = { shouldBeVisible -> + // Apply the visibility state only if the + // button is enabled. + if (visibilityState.isEnabled) { + visibilityState.isVisible = shouldBeVisible + } + }, + ) +} + +@Composable +fun VisibilityToggle( + visible: Boolean, + enabled: Boolean = true, + onVisibleChange: (Boolean) -> Unit, +) { + IconButton( + enabled = enabled, + onClick = onVisibleChange.partially1(!visible), + ) { + VisibilityIcon( + visible = visible, + ) + } +} + +class VisibilityState( + isVisible: Boolean = false, + isEnabled: Boolean = true, +) { + var isVisible by mutableStateOf(isVisible) + var isEnabled by mutableStateOf(isEnabled) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorDomain.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorDomain.kt new file mode 100644 index 00000000..b126a8d2 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorDomain.kt @@ -0,0 +1,81 @@ +package com.artemchep.keyguard.feature.auth.common.util + +import arrow.core.Either +import io.ktor.http.Url + +val REGEX_DOMAIN = + "^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]\$".toRegex() + +val REGEX_IPV4 = "^((25[0-5]|(2[0-4]|1\\d|[1-9]|)\\d)\\.?\\b){4}\$".toRegex() + +private val privateIpAddressList = listOf( + IpRange( + from = intArrayOf(10, 0, 0, 0), + to = intArrayOf(10, 255, 255, 255), + ), + IpRange( + from = intArrayOf(172, 16, 0, 0), + to = intArrayOf(172, 31, 255, 255), + ), + IpRange( + from = intArrayOf(192, 168, 0, 0), + to = intArrayOf(192, 168, 255, 255), + ), +) + +private data class IpRange( + val from: IntArray, + val to: IntArray, +) { + init { + require(from.size == 4) + require(to.size == 4) + } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as IpRange + + if (!from.contentEquals(other.from)) return false + if (!to.contentEquals(other.to)) return false + + return true + } + + override fun hashCode(): Int { + var result = from.contentHashCode() + result = 31 * result + to.contentHashCode() + return result + } + + fun matches(ip: IntArray): Boolean { + if (ip.size != 4) return false + ip.forEachIndexed { index, block -> + val a = from[index] + val b = to[index] + if (block < a || block > b) return false + } + return true + } +} + +fun verifyIsLocalUrl(url: String) = Either.catch { + verifyIsLocalUrl(Url(url)) +} + +fun verifyIsLocalUrl(url: Url) = run { + val host = url.host + when { + host == "localhost" -> true + REGEX_IPV4.matches(host) -> { + val ip = host.split(".") + .map { it.toInt() } + .toIntArray() + privateIpAddressList.any { it.matches(ip) } + } + + else -> false + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorEmail.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorEmail.kt new file mode 100644 index 00000000..6c572481 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorEmail.kt @@ -0,0 +1,62 @@ +package com.artemchep.keyguard.feature.auth.common.util + +import com.artemchep.keyguard.feature.auth.common.Validated +import com.artemchep.keyguard.feature.navigation.state.TranslatorScope +import com.artemchep.keyguard.res.Res +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.map + +enum class ValidationEmail { + OK, + ERROR_EMPTY, + ERROR_INVALID, +} + +val REGEX_EMAIL = ( + "[a-zA-Z0-9\\+\\.\\_\\%\\-\\+]{1,256}" + + "\\@" + + "[a-zA-Z0-9][a-zA-Z0-9\\-]{0,64}" + + "(" + + "\\." + + "[a-zA-Z0-9][a-zA-Z0-9\\-]{0,25}" + + ")+" + ).toRegex() + +fun validateEmail(email: String?): ValidationEmail { + return if (email.isNullOrBlank()) { + ValidationEmail.ERROR_EMPTY + } else if (!REGEX_EMAIL.matches(email)) { + ValidationEmail.ERROR_INVALID + } else { + ValidationEmail.OK + } +} + +/** + * @return human-readable variant of [validateEmail] result, or `null` if + * there's no validation error. + */ +fun ValidationEmail.format(scope: TranslatorScope): String? = + when (this) { + ValidationEmail.ERROR_EMPTY -> scope.translate(Res.strings.error_must_not_be_blank) + ValidationEmail.ERROR_INVALID -> scope.translate(Res.strings.error_invalid_email) + else -> null + } + +fun Flow.validatedEmail(scope: TranslatorScope) = this + .map { rawEmail -> + val email = rawEmail + .trim() + val emailError = validateEmail(email) + .format(scope) + if (emailError != null) { + Validated.Failure( + model = email, + error = emailError, + ) + } else { + Validated.Success( + model = email, + ) + } + } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorFeedback.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorFeedback.kt new file mode 100644 index 00000000..592db4ce --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorFeedback.kt @@ -0,0 +1,48 @@ +package com.artemchep.keyguard.feature.auth.common.util + +import com.artemchep.keyguard.feature.auth.common.Validated +import com.artemchep.keyguard.feature.navigation.state.TranslatorScope +import com.artemchep.keyguard.res.Res +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.map + +enum class ValidationFeedback { + OK, + ERROR_EMPTY, +} + +fun validateFeedback(feedback: String?): ValidationFeedback { + return if (feedback.isNullOrBlank()) { + ValidationFeedback.ERROR_EMPTY + } else { + ValidationFeedback.OK + } +} + +/** + * @return human-readable variant of [validateFeedback] result, or `null` if + * there's no validation error. + */ +fun ValidationFeedback.format(scope: TranslatorScope): String? = + when (this) { + ValidationFeedback.ERROR_EMPTY -> scope.translate(Res.strings.error_must_not_be_blank) + else -> null + } + +fun Flow.validatedFeedback(scope: TranslatorScope) = this + .map { rawFeedback -> + val feedback = rawFeedback + .trim(' ') + val feedbackError = validateFeedback(feedback) + .format(scope) + if (feedbackError != null) { + Validated.Failure( + model = feedback, + error = feedbackError, + ) + } else { + Validated.Success( + model = feedback, + ) + } + } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorHeader.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorHeader.kt new file mode 100644 index 00000000..59f92d2a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorHeader.kt @@ -0,0 +1,3 @@ +package com.artemchep.keyguard.feature.auth.common.util + +val REGEX_US_ASCII = "^[\\x00-\\x7F]*\$".toRegex() diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorPassword.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorPassword.kt new file mode 100644 index 00000000..12470ac5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorPassword.kt @@ -0,0 +1,53 @@ +package com.artemchep.keyguard.feature.auth.common.util + +import com.artemchep.keyguard.feature.auth.common.Validated +import com.artemchep.keyguard.feature.navigation.state.TranslatorScope +import com.artemchep.keyguard.res.Res +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.map + +enum class ValidationPassword { + OK, + ERROR_MIN_LENGTH, + ; + + object Const { + /** The minimum length of the password */ + const val MIN_LENGTH = 6 + } +} + +fun validatePassword(password: String?): ValidationPassword { + val passwordLength = password?.trim()?.length ?: 0 + return if (passwordLength < ValidationPassword.Const.MIN_LENGTH) { + ValidationPassword.ERROR_MIN_LENGTH + } else { + ValidationPassword.OK + } +} + +fun ValidationPassword.format(scope: TranslatorScope): String? = + when (this) { + ValidationPassword.ERROR_MIN_LENGTH -> scope.translate( + res = Res.strings.error_must_have_at_least_n_symbols, + ValidationPassword.Const.MIN_LENGTH, + ) + + else -> null + } + +fun Flow.validatedPassword(scope: TranslatorScope) = this + .map { password -> + val passwordError = validatePassword(password) + .format(scope) + if (passwordError != null) { + Validated.Failure( + model = password, + error = passwordError, + ) + } else { + Validated.Success( + model = password, + ) + } + } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorPhoneNumber.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorPhoneNumber.kt new file mode 100644 index 00000000..5b2f282b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorPhoneNumber.kt @@ -0,0 +1,4 @@ +package com.artemchep.keyguard.feature.auth.common.util + +val REGEX_PHONE_NUMBER = + "^(\\+\\d{1,2}\\s?)?1?\\-?\\.?\\s?\\(?\\d{3}\\)?[\\s.-]?\\d{3}[\\s.-]?\\d{4}\$".toRegex() diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorTitle.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorTitle.kt new file mode 100644 index 00000000..7b361359 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorTitle.kt @@ -0,0 +1,44 @@ +package com.artemchep.keyguard.feature.auth.common.util + +import com.artemchep.keyguard.feature.auth.common.Validated +import com.artemchep.keyguard.feature.navigation.state.TranslatorScope +import com.artemchep.keyguard.res.Res +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.map + +enum class ValidationTitle { + OK, + ERROR_EMPTY, +} + +fun validateTitle(title: String?): ValidationTitle { + return if (title.isNullOrBlank()) { + ValidationTitle.ERROR_EMPTY + } else { + ValidationTitle.OK + } +} + +fun ValidationTitle.format(scope: TranslatorScope): String? = + when (this) { + ValidationTitle.ERROR_EMPTY -> scope.translate(Res.strings.error_must_not_be_blank) + else -> null + } + +fun Flow.validatedTitle(scope: TranslatorScope) = this + .map { rawTitle -> + val title = rawTitle + .trim() + val titleError = validateTitle(title) + .format(scope) + if (titleError != null) { + Validated.Failure( + model = title, + error = titleError, + ) + } else { + Validated.Success( + model = title, + ) + } + } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorUri.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorUri.kt new file mode 100644 index 00000000..49845ad0 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorUri.kt @@ -0,0 +1,70 @@ +package com.artemchep.keyguard.feature.auth.common.util + +import com.artemchep.keyguard.feature.navigation.state.TranslatorScope +import com.artemchep.keyguard.res.Res + +enum class ValidationUri { + OK, + ERROR_EMPTY, + ERROR_INVALID, +} + +/** + * Example: "http". Also called 'protocol'. + * Scheme component is optional, even though the RFC doesn't make it optional. Since this regex is validating a + * submitted callback url, which determines where the browser will navigate to after a successful authentication, + * the browser will use http or https for the scheme by default. + * Not borrowed from dperini in order to allow any scheme type. + */ +private const val REGEX_SCHEME = "[A-Za-z][+-.\\w^_]*:" + +// Example: "//". +private const val REGEX_AUTHORITATIVE_DECLARATION = "/{2}" + +// Optional component. Example: "suzie:abc123@". The use of the format "user:password" is deprecated. +private const val REGEX_USERINFO = "(?:\\S+(?::\\S*)?@)?" + +// Examples: "google.com", "22.231.113.64". +private const val REGEX_HOST = + "(?:" + // @Author = http://www.regular-expressions.info/examples.html + // IP address + "(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" + + "|" + // host name + "(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)" + // domain name + "(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*" + // TLD identifier must have >= 2 characters + "(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))" + +// Example: ":8042". +private const val REGEX_PORT = "(?::\\d{2,5})?" + +// Example: "/search?foo=bar#element1". +private const val REGEX_RESOURCE_PATH = "(?:/\\S*)?" + +val REGEX_WEB_URI = ( + "^(?:(?:" + REGEX_SCHEME + REGEX_AUTHORITATIVE_DECLARATION + ")?" + + REGEX_USERINFO + REGEX_HOST + REGEX_PORT + REGEX_RESOURCE_PATH + ")$" + ).toRegex() + +fun validateUri( + uri: String?, + allowBlank: Boolean = false, +): ValidationUri { + return if (uri == null || uri.isBlank()) { + if (allowBlank) { + ValidationUri.OK + } else { + ValidationUri.ERROR_EMPTY + } + } else if (!REGEX_WEB_URI.matches(uri)) { + ValidationUri.ERROR_INVALID + } else { + ValidationUri.OK + } +} + +fun ValidationUri.format(scope: TranslatorScope): String? = + when (this) { + ValidationUri.ERROR_EMPTY -> scope.translate(Res.strings.error_must_not_be_blank) + ValidationUri.ERROR_INVALID -> scope.translate(Res.strings.error_invalid_uri) + else -> null + } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorUrl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorUrl.kt new file mode 100644 index 00000000..18ea24ee --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/common/util/ValidatorUrl.kt @@ -0,0 +1,106 @@ +package com.artemchep.keyguard.feature.auth.common.util + +import com.artemchep.keyguard.feature.auth.common.Validated +import com.artemchep.keyguard.feature.navigation.state.TranslatorScope +import com.artemchep.keyguard.res.Res +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.map + +enum class ValidationUrl { + OK, + ERROR_EMPTY, + ERROR_INVALID, +} + +/** + * Good characters for Internationalized Resource Identifiers (IRI). + * This comprises most common used Unicode characters allowed in IRI + * as detailed in RFC 3987. + * Specifically, those two byte Unicode characters are not included. + */ +private const val GOOD_IRI_CHAR = "a-zA-Z0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF" + +/** + * RFC 1035 Section 2.3.4 limits the labels to a maximum 63 octets. + */ +private const val IRI = "[$GOOD_IRI_CHAR]([$GOOD_IRI_CHAR\\-]{0,61}[$GOOD_IRI_CHAR]){0,1}" + +private const val GOOD_GTLD_CHAR = "a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF" + +private const val GTLD = "[$GOOD_GTLD_CHAR]{2,63}" + +private const val HOST_NAME = "($IRI\\.)+$GTLD" + +private const val IP_ADDRESS = + "((25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9])\\.(25[0-5]|2[0-4]" + + "[0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.(25[0-5]|2[0-4][0-9]|[0-1]" + + "[0-9]{2}|[1-9][0-9]|[1-9]|0)\\.(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}" + + "|[1-9][0-9]|[0-9]))" + +private const val DOMAIN_NAME = "($HOST_NAME|$IP_ADDRESS)" + +/** + * Regular expression pattern to match most part of RFC 3987 + * Internationalized URLs, aka IRIs. Commonly used Unicode characters are + * added. + */ +val REGEX_WEB_URL = + ( + "((?:(http|https|Http|Https|rtsp|Rtsp):\\/\\/(?:(?:[a-zA-Z0-9\\$\\-\\_\\.\\+\\!\\*\\'\\(\\)" + + "\\,\\;\\?\\&\\=]|(?:\\%[a-fA-F0-9]{2})){1,64}(?:\\:(?:[a-zA-Z0-9\\$\\-\\_" + + "\\.\\+\\!\\*\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-fA-F0-9]{2})){1,25})?\\@)?)?" + + "(?:" + DOMAIN_NAME + ")" + + "(?:\\:\\d{1,5})?)" + // plus option port number + "(\\/(?:(?:[" + GOOD_IRI_CHAR + "\\;\\/\\?\\:\\@\\&\\=\\#\\~" + // plus option query params + "\\-\\.\\+\\!\\*\\'\\(\\)\\,\\_])|(?:\\%[a-fA-F0-9]{2}))*)?" + + "(?:\\b|$)" + ).toRegex() + +fun validateUrl( + url: String?, + allowBlank: Boolean = false, +): ValidationUrl { + return if (url == null || url.isBlank()) { + if (allowBlank) { + ValidationUrl.OK + } else { + ValidationUrl.ERROR_EMPTY + } + } else if (!REGEX_WEB_URL.matches(url)) { + ValidationUrl.ERROR_INVALID + } else { + ValidationUrl.OK + } +} + +/** + * @return human-readable variant of [validateEmail] result, or `null` if + * there's no validation error. + */ +fun ValidationUrl.format(scope: TranslatorScope): String? = + when (this) { + ValidationUrl.ERROR_EMPTY -> scope.translate(Res.strings.error_must_not_be_blank) + ValidationUrl.ERROR_INVALID -> scope.translate(Res.strings.error_invalid_url) + else -> null + } + +fun Flow.validatedUrl( + scope: TranslatorScope, + allowBlank: Boolean = false, +) = this + .map { rawUrl -> + val url = rawUrl + .trim() + val urlError = validateUrl(url, allowBlank = allowBlank) + .format(scope) + if (urlError != null) { + Validated.Failure( + model = url, + error = urlError, + ) + } else { + Validated.Success( + model = url, + ) + } + } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/LoginEvent.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/LoginEvent.kt new file mode 100644 index 00000000..83e81b99 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/LoginEvent.kt @@ -0,0 +1,14 @@ +package com.artemchep.keyguard.feature.auth.login + +import com.artemchep.keyguard.feature.auth.login.otp.LoginTwofaRoute + +/** + * @author Artem Chepurnyi + */ +sealed interface LoginEvent { + sealed interface Error : LoginEvent { + data class OtpRequired( + val args: LoginTwofaRoute.Args, + ) : Error + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/LoginRegion.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/LoginRegion.kt new file mode 100644 index 00000000..e1ba3549 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/LoginRegion.kt @@ -0,0 +1,64 @@ +package com.artemchep.keyguard.feature.auth.login + +import com.artemchep.keyguard.provider.bitwarden.ServerEnv +import com.artemchep.keyguard.res.Res +import dev.icerock.moko.resources.StringResource +import kotlinx.collections.immutable.PersistentList +import kotlinx.collections.immutable.toPersistentList + +sealed interface LoginRegion { + companion object { + val default get() = Predefined(ServerEnv.Region.default) + + val values: PersistentList + get() = kotlin.run { + val list = ServerEnv.Region.entries + .asSequence() + .map { region -> + val value: LoginRegion = Predefined(region) + value + } + .toPersistentList() + list.add(Custom) + } + + fun ofOrNull(key: String): LoginRegion? { + val region = ServerEnv.Region.entries + .firstOrNull { it.name == key } + if (region != null) { + return Predefined(region) + } + + return when (key) { + Custom.key -> Custom + else -> null + } + } + } + + val key: String + val title: StringResource + val text: String? get() = null + + @JvmInline + value class Predefined( + val region: ServerEnv.Region, + ) : LoginRegion { + override val key: String + get() = region.name + + override val title: StringResource + get() = region.title + + override val text: String + get() = region.text + } + + data object Custom : LoginRegion { + override val key: String + get() = ServerEnv.Region.selfhosted + + override val title: StringResource + get() = Res.strings.addaccount_region_custom_type + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/LoginRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/LoginRoute.kt new file mode 100644 index 00000000..cd6b64a1 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/LoginRoute.kt @@ -0,0 +1,34 @@ +package com.artemchep.keyguard.feature.auth.login + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.RouteForResult +import com.artemchep.keyguard.feature.navigation.RouteResultTransmitter +import com.artemchep.keyguard.provider.bitwarden.ServerEnv + +data class LoginRoute( + val args: Args = Args(), +) : RouteForResult { + data class Args( + val accountId: String? = null, + // common + val clientSecret: String? = null, + val clientSecretEditable: Boolean = true, + val email: String? = null, + val emailEditable: Boolean = true, + val password: String? = null, + val passwordEditable: Boolean = true, + // server + val env: ServerEnv = ServerEnv(), + val envEditable: Boolean = true, + ) + + @Composable + override fun Content( + transmitter: RouteResultTransmitter, + ) { + LoginScreen( + transmitter = transmitter, + args = args, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/LoginScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/LoginScreen.kt new file mode 100644 index 00000000..56189b11 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/LoginScreen.kt @@ -0,0 +1,605 @@ +package com.artemchep.keyguard.feature.auth.login + +import androidx.compose.animation.Crossfade +import androidx.compose.animation.animateContentSize +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.widthIn +import androidx.compose.foundation.text.KeyboardActionScope +import androidx.compose.foundation.text.KeyboardActions +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Add +import androidx.compose.material.icons.outlined.Login +import androidx.compose.material.icons.outlined.Security +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.DropdownMenu +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.key +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.ExperimentalComposeUiApi +import androidx.compose.ui.Modifier +import androidx.compose.ui.autofill.AutofillType +import androidx.compose.ui.focus.FocusDirection +import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.focus.focusRequester +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.platform.LocalFocusManager +import androidx.compose.ui.text.input.ImeAction +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.fold +import com.artemchep.keyguard.feature.auth.common.autofill +import com.artemchep.keyguard.feature.auth.login.otp.LoginTwofaRoute +import com.artemchep.keyguard.feature.home.vault.component.Section +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.RouteResultTransmitter +import com.artemchep.keyguard.feature.navigation.registerRouteResultReceiver +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.BiFlatTextField +import com.artemchep.keyguard.ui.CollectedEffect +import com.artemchep.keyguard.ui.ConcealedFlatTextField +import com.artemchep.keyguard.ui.DefaultFab +import com.artemchep.keyguard.ui.DropdownMenuItemFlat +import com.artemchep.keyguard.ui.DropdownMinWidth +import com.artemchep.keyguard.ui.DropdownScopeImpl +import com.artemchep.keyguard.ui.EmailFlatTextField +import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +import com.artemchep.keyguard.ui.FabState +import com.artemchep.keyguard.ui.FlatDropdown +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.OptionsButton +import com.artemchep.keyguard.ui.PasswordFlatTextField +import com.artemchep.keyguard.ui.ScaffoldColumn +import com.artemchep.keyguard.ui.UrlFlatTextField +import com.artemchep.keyguard.ui.icons.DropdownIcon +import com.artemchep.keyguard.ui.icons.IconBox +import com.artemchep.keyguard.ui.skeleton.SkeletonText +import com.artemchep.keyguard.ui.skeleton.SkeletonTextField +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.toolbar.LargeToolbar +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.map + +@Composable +fun LoginScreen( + transmitter: RouteResultTransmitter, + args: LoginRoute.Args, +) { + val state = produceLoginScreenState( + args = args, + ) + state.fold( + ifLoading = { + LoginContentSkeleton() + }, + ifOk = { okState -> + LoginScreen( + transmitter = transmitter, + state = okState, + ) + }, + ) +} + +@Composable +fun LoginScreen( + transmitter: RouteResultTransmitter, + state: LoginState, +) { + val controller by rememberUpdatedState(LocalNavigationController.current) + CollectedEffect(state.effects.onSuccessFlow) { + // Notify that we have successfully logged in, and that + // the caller can now decide what to do. + transmitter.invoke(Unit) + } + CollectedEffect(state.effects.onErrorFlow) { error -> + when (error) { + // Navigate to the OTP screen with current + // credentials and environment. + is LoginEvent.Error.OtpRequired -> { + val route = registerRouteResultReceiver( + route = LoginTwofaRoute(error.args), + ) { + controller.queue(NavigationIntent.Pop) + transmitter.invoke(Unit) + } + val intent = NavigationIntent.NavigateToRoute(route) + controller.queue(intent) + } + } + } + + LoginContent( + loginState = state, + ) +} + +@OptIn( + ExperimentalMaterial3Api::class, +) +@Composable +fun LoginContentSkeleton() { + val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + ScaffoldColumn( + modifier = Modifier + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + LargeToolbar( + title = { + Text( + text = stringResource(Res.strings.addaccount_header_title), + ) + }, + navigationIcon = { + NavigationIcon() + }, + scrollBehavior = scrollBehavior, + ) + }, + ) { + SkeletonText( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding) + .fillMaxWidth(0.8f), + style = MaterialTheme.typography.bodyMedium, + ) + SkeletonText( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding) + .fillMaxWidth(0.88f), + style = MaterialTheme.typography.bodyMedium, + ) + SkeletonText( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding) + .fillMaxWidth(0.3f), + style = MaterialTheme.typography.bodyMedium, + ) + Spacer(Modifier.height(16.dp)) + SkeletonTextField( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = Dimens.horizontalPadding), + ) + Spacer(Modifier.height(8.dp)) + SkeletonTextField( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = Dimens.horizontalPadding), + ) + } +} + +@OptIn( + ExperimentalMaterial3Api::class, + ExperimentalFoundationApi::class, ExperimentalComposeUiApi::class, +) +@Composable +fun LoginContent( + loginState: LoginState, +) { + var isEnvironmentVisible by rememberSaveable { + mutableStateOf(false) + } + + val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + ScaffoldColumn( + modifier = Modifier + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + LargeToolbar( + title = { + Text( + text = stringResource(Res.strings.addaccount_header_title), + ) + }, + navigationIcon = { + NavigationIcon() + }, + scrollBehavior = scrollBehavior, + ) + }, + floatingActionState = run { + val fabOnClick = loginState.onLoginClick + val fabState = FabState( + onClick = fabOnClick, + model = null, + ) + rememberUpdatedState(newValue = fabState) + }, + floatingActionButton = { + DefaultFab( + icon = { + Crossfade( + modifier = Modifier + .size(24.dp), + targetState = loginState.isLoading, + ) { isLoading -> + if (isLoading) { + CircularProgressIndicator( + color = LocalContentColor.current, + ) + } else { + Icon( + imageVector = Icons.Outlined.Login, + contentDescription = null, + ) + } + } + }, + text = { + Text( + text = stringResource(Res.strings.addaccount_sign_in_button), + ) + }, + ) + }, + ) { + val focusManager = LocalFocusManager.current + val focusRequester = remember { FocusRequester() } + // Auto focus the text field + // on launch. + LaunchedEffect(focusRequester) { + focusRequester.requestFocus() + } + + val keyboardOnGo: (KeyboardActionScope.() -> Unit)? = + if (loginState.onLoginClick != null) { + // lambda + { + loginState.onLoginClick.invoke() + } + } else { + null + } + val keyboardOnNext: KeyboardActionScope.() -> Unit = { + focusManager.moveFocus(FocusDirection.Down) + } + + Text( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + text = stringResource(Res.strings.addaccount_disclaimer_bitwarden_label), + style = MaterialTheme.typography.bodyMedium, + ) + Spacer(Modifier.height(16.dp)) + EmailFlatTextField( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding) + .focusRequester(focusRequester), + fieldModifier = Modifier + .autofill( + value = loginState.email.state.value, + autofillTypes = listOf( + AutofillType.EmailAddress, + ), + onFill = loginState.email.onChange, + ), + value = loginState.email, + keyboardOptions = KeyboardOptions( + imeAction = ImeAction.Next, + ), + keyboardActions = KeyboardActions( + onNext = keyboardOnNext, + ), + ) + Spacer(Modifier.height(8.dp)) + val passwordIsLastField = loginState.clientSecret == null && !isEnvironmentVisible + PasswordFlatTextField( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + fieldModifier = Modifier + .autofill( + value = loginState.password.state.value, + autofillTypes = listOf( + AutofillType.Password, + ), + onFill = loginState.password.onChange, + ), + value = loginState.password, + keyboardOptions = KeyboardOptions( + imeAction = when { + !passwordIsLastField -> ImeAction.Next + keyboardOnGo != null -> ImeAction.Go + else -> ImeAction.Default + }, + ), + keyboardActions = KeyboardActions( + onGo = keyboardOnGo, + onNext = keyboardOnNext.takeUnless { passwordIsLastField }, + ), + ) + val clientSecretOrNull = loginState.clientSecret + ExpandedIfNotEmpty( + valueOrNull = clientSecretOrNull, + ) { clientSecret -> + Column { + Box(Modifier.height(32.dp)) + Text( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + text = stringResource(Res.strings.addaccount_captcha_need_client_secret_note), + style = MaterialTheme.typography.bodyMedium, + ) + Box(Modifier.height(16.dp)) + val clientSecretIsLastField = !isEnvironmentVisible + ConcealedFlatTextField( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + label = stringResource(Res.strings.addaccount_captcha_need_client_secret_label), + value = clientSecret, + keyboardOptions = KeyboardOptions( + imeAction = when { + !clientSecretIsLastField -> ImeAction.Next + keyboardOnGo != null -> ImeAction.Go + else -> ImeAction.Default + }, + ), + keyboardActions = KeyboardActions( + onGo = keyboardOnGo, + onNext = keyboardOnNext.takeUnless { clientSecretIsLastField }, + ), + singleLine = true, + maxLines = 1, + leading = { + IconBox( + main = Icons.Outlined.Security, + ) + }, + ) + } + } + Spacer(Modifier.height(8.dp)) + LoginItems( + items = loginState.regionItems, + ) + Spacer(Modifier.height(8.dp)) + ExpandedIfNotEmpty( + valueOrNull = Unit.takeIf { loginState.showCustomEnv }, + ) { + LoginItems( + items = loginState.items, + ) + } + } +} + +@Composable +private fun LoginItems( + modifier: Modifier = Modifier, + items: List, +) { + Column( + modifier = modifier + .fillMaxWidth(), + verticalArrangement = Arrangement.spacedBy(8.dp), + ) { + items.forEach { item -> + key(item.id) { + LoginItem( + modifier = Modifier, + item = item, + ) + } + } + } +} + +@Composable +private fun LoginItem( + modifier: Modifier = Modifier, + item: LoginStateItem, +) = when (item) { + is LoginStateItem.Dropdown -> LoginItemDropdown(modifier = modifier, item = item) + is LoginStateItem.Url -> LoginItemUrl(modifier = modifier, item = item) + is LoginStateItem.HttpHeader -> LoginItemField(modifier = modifier, item = item) + is LoginStateItem.Section -> LoginItemSection(modifier = modifier, item = item) + is LoginStateItem.Label -> LoginItemLabel(modifier = modifier, item = item) + is LoginStateItem.Add -> LoginItemAdd(modifier = modifier, item = item) +} + +@Composable +private fun LoginItemDropdown( + modifier: Modifier = Modifier, + item: LoginStateItem.Dropdown, +) { + val field by item.state.flow.collectAsState() + FlatDropdown( + modifier = modifier, + content = { + FlatItemTextContent( + title = { + Row( + verticalAlignment = Alignment.CenterVertically, + ) { + Column( + modifier = Modifier + .weight(1f, fill = false), + ) { + Text( + modifier = Modifier + .animateContentSize(), + text = field.title, + style = MaterialTheme.typography.titleMedium, + ) + ExpandedIfNotEmpty(field.text) { text -> + Text( + text = text, + style = MaterialTheme.typography.bodySmall, + color = MaterialTheme.colorScheme.primary, + ) + } + } + Spacer( + modifier = Modifier + .width(8.dp), + ) + DropdownIcon() + } + }, + ) + }, + dropdown = field.options, + ) +} + +@Composable +private fun LoginItemUrl( + modifier: Modifier = Modifier, + item: LoginStateItem.Url, +) { + val field by item.state.flow.collectAsState() + UrlFlatTextField( + modifier = modifier + .padding(horizontal = Dimens.horizontalPadding), + value = field.text, + label = field.label, +// keyboardOptions = KeyboardOptions( +// imeAction = ImeAction.Next, +// ), +// keyboardActions = KeyboardActions( +// onNext = keyboardOnNext, +// ), + ) +} + +@Composable +private fun LoginItemField( + modifier: Modifier = Modifier, + item: LoginStateItem.HttpHeader, +) { + val field by item.state.flow.collectAsState() + val localState by remember(item.state.flow) { + item.state.flow + .map { a -> + a.options + item.options + } + }.collectAsState(null) + BiFlatTextField( + modifier = modifier + .padding(horizontal = Dimens.horizontalPadding), + label = field.label, + value = field.text, + trailing = { + OptionsButton( + actions = localState.orEmpty(), + ) + }, + ) +} + +@Composable +private fun LoginItemSection( + modifier: Modifier = Modifier, + item: LoginStateItem.Section, +) { + Section( + modifier = modifier, + text = item.text, + ) +} + +@Composable +private fun LoginItemLabel( + modifier: Modifier = Modifier, + item: LoginStateItem.Label, +) { + Text( + modifier = modifier + .padding(horizontal = Dimens.horizontalPadding), + text = item.text, + style = MaterialTheme.typography.bodyMedium, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + ) +} + +@Composable +private fun LoginItemAdd( + modifier: Modifier = Modifier, + item: LoginStateItem.Add, +) { + Column( + modifier = modifier, + ) { + val dropdownShownState = remember { mutableStateOf(false) } + if (item.actions.isEmpty()) { + dropdownShownState.value = false + } + + // Inject the dropdown popup to the bottom of the + // content. + val onDismissRequest = remember(dropdownShownState) { + // lambda + { + dropdownShownState.value = false + } + } + val contentColor = MaterialTheme.colorScheme.primary + FlatItem( + leading = { + Icon(Icons.Outlined.Add, null, tint = contentColor) + }, + title = { + Text( + text = item.text, + color = contentColor, + ) + + DropdownMenu( + modifier = Modifier + .widthIn(min = DropdownMinWidth), + expanded = dropdownShownState.value, + onDismissRequest = onDismissRequest, + ) { + val scope = DropdownScopeImpl(this, onDismissRequest = onDismissRequest) + with(scope) { + item.actions.forEachIndexed { index, action -> + DropdownMenuItemFlat( + action = action, + ) + } + } + } + }, + onClick = { + if (item.actions.size == 1) { + item.actions.first() + .onClick?.invoke() + } else { + dropdownShownState.value = true + } + }, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/LoginState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/LoginState.kt new file mode 100644 index 00000000..c470af12 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/LoginState.kt @@ -0,0 +1,157 @@ +package com.artemchep.keyguard.feature.auth.login + +import androidx.compose.runtime.Immutable +import arrow.optics.optics +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import com.artemchep.keyguard.provider.bitwarden.ServerHeader +import com.artemchep.keyguard.ui.FlatItemAction +import kotlinx.collections.immutable.PersistentList +import kotlinx.collections.immutable.persistentListOf +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.emptyFlow + +@Immutable +@optics +data class LoginState( + val email: TextFieldModel2, + val password: TextFieldModel2, + val clientSecret: TextFieldModel2? = null, + val effects: SideEffect = SideEffect(), + val showCustomEnv: Boolean = false, + val regionItems: List = emptyList(), + val items: List = emptyList(), + val isLoading: Boolean = false, + val onLoginClick: (() -> Unit)? = null, +) { + companion object; + + @Immutable + @optics + data class SideEffect( + val onSuccessFlow: Flow = emptyFlow(), + val onErrorFlow: Flow = emptyFlow(), + ) { + companion object + } +} + +sealed interface LoginStateItem { + val id: String + + interface HasOptions { + val options: List + + /** + * Copies the data class replacing the old options with a + * provided ones. + */ + fun withOptions( + options: List, + ): T + } + + interface HasState { + val state: LocalStateItem + } + + data class Dropdown( + override val id: String, + override val state: LocalStateItem, + ) : LoginStateItem, HasState { + data class State( + val value: LoginRegion, + val title: String, + val text: String?, + val options: List = emptyList(), + ) + } + + data class Url( + override val id: String, + override val options: List = emptyList(), + override val state: LocalStateItem, + ) : LoginStateItem, HasOptions, HasState { + override fun withOptions(options: List): Url = + copy( + options = options, + ) + + data class State( + override val options: List = emptyList(), + val label: String, + val text: TextFieldModel2, + ) : HasOptions { + override fun withOptions(options: List): State = + copy( + options = options, + ) + } + } + + data class HttpHeader( + override val id: String, + override val options: List = emptyList(), + override val state: LocalStateItem, + ) : LoginStateItem, HasOptions, HasState { + override fun withOptions(options: List): HttpHeader = + copy( + options = options, + ) + + data class State( + override val options: List = emptyList(), + val label: TextFieldModel2, + val text: TextFieldModel2, + ) : HasOptions { + override fun withOptions(options: List) = + copy( + options = options, + ) + } + } + + // + // Items that may modify the amount of items in the + // list. + // + + data class Section( + override val id: String, + val text: String? = null, + ) : LoginStateItem + + data class Label( + override val id: String, + val text: String, + ) : LoginStateItem + + data class Add( + override val id: String, + val text: String, + val actions: List, + ) : LoginStateItem +} + +data class LocalStateItem( + val flow: StateFlow, + val populator: CreateRequest.(T) -> CreateRequest = { this }, +) + +data class CreateRequest( + val error: Boolean = false, + // general + val username: String? = null, + val password: String? = null, + val clientSecret: String? = null, + val region: LoginRegion? = null, + // base environment + val baseUrl: String? = null, + // custom environment + val webVaultUrl: String? = null, + val apiUrl: String? = null, + val identityUrl: String? = null, + val iconsUrl: String? = null, + // headers + val headers: PersistentList = persistentListOf(), +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/LoginStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/LoginStateProducer.kt new file mode 100644 index 00000000..eb7d7f0e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/LoginStateProducer.kt @@ -0,0 +1,1086 @@ +package com.artemchep.keyguard.feature.auth.login + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.ArrowDownward +import androidx.compose.material.icons.outlined.ArrowUpward +import androidx.compose.material.icons.outlined.DeleteForever +import androidx.compose.runtime.Composable +import arrow.core.partially1 +import arrow.core.partially2 +import arrow.core.widen +import com.artemchep.keyguard.common.exception.ApiException +import com.artemchep.keyguard.common.io.effectTap +import com.artemchep.keyguard.common.io.handleErrorTap +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.usecase.CipherUnsecureUrlCheck +import com.artemchep.keyguard.common.util.flow.EventFlow +import com.artemchep.keyguard.common.util.flow.combineToList +import com.artemchep.keyguard.common.util.flow.persistingStateIn +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import com.artemchep.keyguard.feature.auth.common.Validated +import com.artemchep.keyguard.feature.auth.common.util.REGEX_US_ASCII +import com.artemchep.keyguard.feature.auth.common.util.ValidationUrl +import com.artemchep.keyguard.feature.auth.common.util.format +import com.artemchep.keyguard.feature.auth.common.util.validateUrl +import com.artemchep.keyguard.feature.auth.common.util.validatedEmail +import com.artemchep.keyguard.feature.auth.common.util.validatedPassword +import com.artemchep.keyguard.feature.auth.login.otp.LoginTwofaRoute +import com.artemchep.keyguard.feature.confirmation.createConfirmationDialogIntent +import com.artemchep.keyguard.feature.navigation.state.RememberStateFlowScope +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.platform.parcelize.LeParcelable +import com.artemchep.keyguard.platform.parcelize.LeParcelize +import com.artemchep.keyguard.provider.bitwarden.ServerEnv +import com.artemchep.keyguard.provider.bitwarden.ServerHeader +import com.artemchep.keyguard.provider.bitwarden.usecase.internal.AddAccount +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.icons.icon +import kotlinx.collections.immutable.toPersistentList +import kotlinx.collections.immutable.toPersistentMap +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.Job +import kotlinx.coroutines.cancel +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.filterNotNull +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.scan +import kotlinx.coroutines.flow.shareIn +import kotlinx.coroutines.flow.update +import kotlinx.coroutines.plus +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance +import java.io.Serializable +import java.util.UUID + +private const val TAG = "login" + +private const val KEY_EMAIL = "$TAG.email" +private const val KEY_PASSWORD = "$TAG.password" +private const val KEY_REGION = "$TAG.region" + +private const val KEY_CLIENT_SECRET = "$TAG.client_secret" + +private const val KEY_FAILED_IDENTITY_REQUEST_FINGERPRINT = + "$TAG.failed_identity_request_fingerprint" + +private const val KEY_SERVER_REGION_SECTION = "$TAG.server.region.section" +private const val KEY_SERVER_REGION = "$TAG.server.region" + +private const val KEY_SERVER_BASE_SECTION = "$TAG.server.base.section" +private const val KEY_SERVER_BASE_URL = "$TAG.server.base.url" +private const val KEY_SERVER_BASE_URL_DESCRIPTION = "$TAG.server.base.description" + +private const val KEY_SERVER_CUSTOM_SECTION = "$TAG.server.custom.section" +private const val KEY_SERVER_CUSTOM_WEB_VAULT_URL = "$TAG.server.custom.web_vault_url" +private const val KEY_SERVER_CUSTOM_API_URL = "$TAG.server.custom.api_url" +private const val KEY_SERVER_CUSTOM_IDENTITY_URL = "$TAG.server.custom.identity_url" +private const val KEY_SERVER_CUSTOM_ICONS_URL = "$TAG.server.custom.icons_url" +private const val KEY_SERVER_CUSTOM_DESCRIPTION = "$TAG.server.custom.description" + +@LeParcelize +data class IdentityRequestFingerprint( + val email: String, + val password: String, + // env + val baseUrl: String = "", + val identityUrl: String = "", +) : LeParcelable + +private data class IdentityCredentials( + val email: Validated, + val password: Validated, + val clientSecret: Validated?, +) + +@Composable +fun produceLoginScreenState( + args: LoginRoute.Args, +): Loadable = with(localDI().direct) { + produceLoginScreenState( + addAccount = instance(), + cipherUnsecureUrlCheck = instance(), + args = args, + ) +} + +private inline val defaultEmail get() = "" + +private inline val defaultPassword get() = "" + +@OptIn(ExperimentalCoroutinesApi::class) +@Composable +fun produceLoginScreenState( + addAccount: AddAccount, + cipherUnsecureUrlCheck: CipherUnsecureUrlCheck, + args: LoginRoute.Args, +): Loadable = produceScreenState( + initial = Loadable.Loading, + key = "login", + args = arrayOf( + addAccount, + args, + ), +) { + val onSuccessFlow = EventFlow() + val onErrorFlow = EventFlow() + + val actionExecutor = screenExecutor() + + // email + + val emailSink = mutablePersistedFlow(KEY_EMAIL) { + args.email // fallback to default email + ?: defaultEmail + } + val emailState = mutableComposeState(emailSink) + + // A flow of a email + email validation error, if any. + val validatedEmailFlow = emailSink.filterNotNull() + .validatedEmail(this) + + // password + + val passwordSink = mutablePersistedFlow(KEY_PASSWORD) { + args.password // fallback to default password + ?: defaultPassword + } + val passwordState = mutableComposeState(passwordSink) + + // A flow of a password + password validation error, if any. + val validatedPasswordFlow = passwordSink.filterNotNull() + .validatedPassword(this) + + // client secret + + val clientSecretSink = mutablePersistedFlow(KEY_CLIENT_SECRET) { + args.clientSecret // fallback to default client secret + ?: "" + } + val clientSecretState = mutableComposeState(clientSecretSink) + + val failedIdentityRequestFingerprintSink = + mutablePersistedFlow(KEY_FAILED_IDENTITY_REQUEST_FINGERPRINT) { + null + } + + // region + + val regionDefault = LoginRegion.default + val regionSink = mutablePersistedFlow(KEY_REGION) { regionDefault.key } + val regionFlow = regionSink + .map { regionName -> + LoginRegion.ofOrNull(regionName) + ?: regionDefault + } + + val regionItems = LoginRegion.values + .asSequence() + .map { region -> + FlatItemAction( + id = region.key, + title = translate(region.title), + onClick = { + regionSink.value = region.key + }, + ) + } + .toPersistentList() + + // + // + // + + val envReadOnlyFlow = actionExecutor.isExecutingFlow + .map { executing -> + executing || !args.envEditable + } + .distinctUntilChanged() + + suspend fun createEnvUrlItem( + key: String, + label: String, + initialValue: () -> String, + populator: CreateRequest.(String) -> CreateRequest, + ) = kotlin.run { + val textSink = mutablePersistedFlow("$key.text") { + initialValue() + } + val textMutableState = mutableComposeState(textSink) + val textFlow = textSink + .map { text -> + val validationUrl = validateUrl( + url = text, + allowBlank = true, + ) + val badge = kotlin.run { + val isUnsecure = + validationUrl == ValidationUrl.OK && cipherUnsecureUrlCheck(text) + if (isUnsecure) { + return@run TextFieldModel2.Vl( + type = TextFieldModel2.Vl.Type.WARNING, + text = translate(Res.strings.uri_unsecure), + ) + } + + null + } + + TextFieldModel2( + text = text, + error = validationUrl.format(this), + state = textMutableState, + vl = badge, + onChange = textMutableState::value::set, + ) + } + .readOnly(envReadOnlyFlow) + + LoginStateItem.Url( + id = key, + state = LocalStateItem( + flow = textFlow + .map { textField -> + LoginStateItem.Url.State( + label = label, + text = textField, + ) + } + .persistingStateIn(screenScope, SharingStarted.Lazily), + populator = { state -> + val error = state.text.error != null + if (error) { + return@LocalStateItem copy(error = true) + } + + val value = state.text.text + populator(value) + }, + ), + ) + } + + val globalItems = listOf( + LoginStateItem.Section( + id = KEY_SERVER_REGION_SECTION, + text = translate(Res.strings.addaccount_region_section), + ), + LoginStateItem.Dropdown( + id = KEY_SERVER_REGION, + state = LocalStateItem( + flow = regionFlow + .map { region -> + LoginStateItem.Dropdown.State( + value = region, + title = translate(region.title), + text = region.text, + options = regionItems, + ) + } + .persistingStateIn(screenScope, SharingStarted.Lazily), + populator = { state -> + copy( + region = state.value, + ) + }, + ), + ), + ) + + val envServerBaseUrlItem = + createEnvUrlItem( + key = KEY_SERVER_BASE_URL, + label = translate(Res.strings.addaccount_base_env_server_url_label), + initialValue = { args.env.baseUrl }, + ) { copy(baseUrl = it) } + val envServerCustomIdentityUrlItem = + createEnvUrlItem( + key = KEY_SERVER_CUSTOM_IDENTITY_URL, + label = translate(Res.strings.addaccount_custom_env_identity_url_label), + initialValue = { args.env.identityUrl }, + ) { copy(identityUrl = it) } + + val envServerItems = listOf( + // general + envServerBaseUrlItem, + LoginStateItem.Label( + id = KEY_SERVER_BASE_URL_DESCRIPTION, + text = translate(Res.strings.addaccount_base_env_note), + ), + // custom + LoginStateItem.Section( + id = KEY_SERVER_CUSTOM_SECTION, + text = translate(Res.strings.addaccount_custom_env_section), + ), + createEnvUrlItem( + key = KEY_SERVER_CUSTOM_WEB_VAULT_URL, + label = translate(Res.strings.addaccount_custom_env_web_vault_url_label), + initialValue = { args.env.webVaultUrl }, + ) { copy(webVaultUrl = it) }, + createEnvUrlItem( + key = KEY_SERVER_CUSTOM_API_URL, + label = translate(Res.strings.addaccount_custom_env_api_url_label), + initialValue = { args.env.apiUrl }, + ) { copy(apiUrl = it) }, + envServerCustomIdentityUrlItem, + createEnvUrlItem( + key = KEY_SERVER_CUSTOM_ICONS_URL, + label = translate(Res.strings.addaccount_custom_env_icons_url_label), + initialValue = { args.env.iconsUrl }, + ) { copy(iconsUrl = it) }, + LoginStateItem.Label( + id = KEY_SERVER_CUSTOM_DESCRIPTION, + text = translate(Res.strings.addaccount_custom_env_note), + ), + ) + + val clientSecretRequiredFlow = failedIdentityRequestFingerprintSink + .flatMapLatest { identityOrNull -> + // If we don't have a failed request, then do not + // require a user to fill in the client secret. + identityOrNull ?: return@flatMapLatest flowOf(false) + + data class IdentityServerData( + val baseServerUrl: String? = null, + val identityServerUrl: String? = null, + ) + + // If the identity server is not specified then it is + // derived from the base server. + fun of( + baseServerUrl: String, + identityServerUrl: String, + ): IdentityServerData { + if (identityServerUrl.isNotBlank()) { + return IdentityServerData(identityServerUrl = identityServerUrl) + } + return IdentityServerData(baseServerUrl = baseServerUrl) + } + + val identityData = of( + baseServerUrl = identityOrNull.baseUrl, + identityServerUrl = identityOrNull.identityUrl, + ) + val dataFlow = combine( + envServerBaseUrlItem.state.flow.map { it.text.text }, + envServerCustomIdentityUrlItem.state.flow.map { it.text.text }, + ) { baseServerUrl, identityServerUrl -> + of( + baseServerUrl = baseServerUrl, + identityServerUrl = identityServerUrl, + ) + } + combine( + emailSink, + passwordSink, + dataFlow, + ) { email, password, data -> + identityOrNull.email == email && + identityOrNull.password == password && + identityData == data + } + } + .shareIn(screenScope, SharingStarted.WhileSubscribed(), replay = 1) + + val validatedClientSecretFlow = combine( + clientSecretSink, + clientSecretRequiredFlow, + ) { clientSecret, clientSecretRequired -> + val error = translate(Res.strings.error_must_not_be_blank) + .takeIf { clientSecretRequired && clientSecret.isBlank() } + if (error != null) { + Validated.Failure(clientSecret, error) + } else { + Validated.Success(clientSecret) + } + } + + val clientCredentialFlow = combine( + validatedEmailFlow, + validatedPasswordFlow, + // Hide client secret field if it is + // not required. + combine( + validatedClientSecretFlow, + clientSecretRequiredFlow, + ) { clientSecret, required -> + clientSecret.takeIf { required } + }, + ) { + email, + password, + clientSecret, + -> + IdentityCredentials( + email, + password, + clientSecret, + ) + }.shareIn(screenScope, SharingStarted.WhileSubscribed(), replay = 1) + + val envHeadersFactories = kotlin.run { + val headerFactory = AddStateItemFieldFactory( + readOnlyFlow = envReadOnlyFlow, + ) + listOf( + headerFactory, + ) + } + val envHeadersTypesFlow = flowOf( + listOf( + Foo2Type( + type = "header", + name = translate(Res.strings.addaccount_http_header_type), + ), + ), + ) + val envHeadersFlow = foo3( + scope = "header", + initial = args.env.headers, + initialType = { "header" }, + factories = envHeadersFactories, + afterList = { + val header = LoginStateItem.Section( + id = "header.section", + text = translate(Res.strings.addaccount_http_header_section), + ) + add(0, header) + }, + extra = { + typeBasedAddItem( + scope = "header", + addText = translate(Res.strings.addaccount_http_header_add_more_button), + typesFlow = envHeadersTypesFlow, + ).map { items -> + val info = LoginStateItem.Label( + id = "header.info", + text = translate(Res.strings.addaccount_http_header_note), + ) + items + info + } + }, + ) + + fun stetify(flow: Flow>) = flow + .map { items -> + items + .mapNotNull { item -> + val stateHolder = item as? LoginStateItem.HasState + ?: return@mapNotNull null + + val state = stateHolder.state + state + .flow + .map { v -> + state.populator + .partially2(v) + } + } + } + + val outputFlow = combine( + stetify(envHeadersFlow), + stetify(flowOf(globalItems)), + stetify(flowOf(envServerItems)), + clientCredentialFlow + .map { credentials -> + val transform = fun(oldState: CreateRequest): CreateRequest { + var state = oldState + + // Email + kotlin.run { + val error = credentials.email is Validated.Failure + if (error) return state.copy(error = true) + state = state.copy(username = credentials.email.model) + } + // Password + kotlin.run { + val error = credentials.password is Validated.Failure + if (error) return state.copy(error = true) + state = state.copy(password = credentials.password.model) + } + // Client secret + kotlin.run { + val error = credentials.clientSecret is Validated.Failure + if (error) return state.copy(error = true) + state = state.copy(clientSecret = credentials.clientSecret?.model) + } + + return state + } + listOf(flowOf(transform)) + }, + ) { arr -> + arr.toList().flatten() + } + .flatMapLatest { it.combineToList() } + .map { populators -> + populators.fold( + initial = CreateRequest(), + ) { state, transform -> + // If the model already has an error, then we can not + // use it and to save processing power we can abort + // populating it. + if (state.error) state else transform(state) + } + } + .distinctUntilChanged() + + combine( + clientCredentialFlow, + regionFlow.map { it is LoginRegion.Custom }.distinctUntilChanged(), + outputFlow, + envHeadersFlow, + actionExecutor.isExecutingFlow, + ) { (validatedEmail, validatedPassword, clientSecret), showCustomEnv, output, items, taskIsExecuting -> + val canLogin = validatedEmail is Validated.Success && + validatedPassword is Validated.Success && + !output.error && + !taskIsExecuting + + val emailField = TextFieldModel2.of( + state = emailState, + validated = validatedEmail, + onChange = emailState::value::set + .takeUnless { !args.emailEditable || taskIsExecuting }, + ) + val passwordField = TextFieldModel2.of( + state = passwordState, + validated = validatedPassword, + onChange = passwordState::value::set + .takeUnless { !args.passwordEditable || taskIsExecuting }, + ) + val clientSecretField = clientSecret?.let { + TextFieldModel2.of( + state = clientSecretState, + validated = it, + onChange = clientSecretState::value::set + .takeUnless { !args.clientSecretEditable || taskIsExecuting }, + ) + } + LoginState( + effects = LoginState.SideEffect( + onSuccessFlow = onSuccessFlow, + onErrorFlow = onErrorFlow, + ), + email = emailField, + password = passwordField, + clientSecret = clientSecretField, + showCustomEnv = showCustomEnv, + regionItems = globalItems, + items = envServerItems + items, + isLoading = taskIsExecuting, + onLoginClick = if (canLogin) { + { + val env = if (args.envEditable) { + when (val r = output.region) { + is LoginRegion.Predefined -> { + ServerEnv( + region = r.region, + ) + } + + is LoginRegion.Custom -> { + ServerEnv( + baseUrl = output.baseUrl.orEmpty().let(::ensureUrlSchema), + webVaultUrl = output.webVaultUrl.orEmpty() + .let(::ensureUrlSchema), + apiUrl = output.apiUrl.orEmpty().let(::ensureUrlSchema), + identityUrl = output.identityUrl.orEmpty() + .let(::ensureUrlSchema), + iconsUrl = output.iconsUrl.orEmpty().let(::ensureUrlSchema), + headers = output.headers, + ) + } + + null -> { + ServerEnv( + region = ServerEnv.Region.default, + ) + } + } + } else { + args.env + } + val io = addAccount( + args.accountId, // account id + env, // environment + null, // two-factor token + clientSecret?.model, // client secret + validatedEmail.model, // email + validatedPassword.model, // password + ) + .handleErrorTap { e -> + // We should only handle api exceptions + if (e !is ApiException) return@handleErrorTap + when (val t = e.type) { + is ApiException.Type.TwoFaRequired -> { + val otpRequiredArgs = LoginTwofaRoute.Args( + accountId = args.accountId, + providers = t.providers, + clientSecret = clientSecret?.model, + email = validatedEmail.model, + password = validatedPassword.model, + env = env, + ) + val event = LoginEvent.Error.OtpRequired(otpRequiredArgs) + onErrorFlow.emit(event) + } + + is ApiException.Type.CaptchaRequired -> { + val fingerprint = IdentityRequestFingerprint( + email = validatedEmail.model, + password = validatedPassword.model, + baseUrl = env.baseUrl, + identityUrl = env.identityUrl, + ) + failedIdentityRequestFingerprintSink.value = fingerprint + } + + else -> { + // TODO: Do we ned to reset the password on error? + // Everyone does that, but i'm not sure if + // that is very helpful. + passwordState.value = "" + } + } + } + .effectTap { + onSuccessFlow.emit(Unit) + } + actionExecutor.execute(io) + } + } else { + null + }, + ).let { Loadable.Ok(it) } + } +} + +private fun ensureUrlSchema(url: String) = + if (url.isBlank() || url.contains("://")) { + // The url contains a schema, return + // it as it as. + url + } else { + val newUrl = "https://$url" + newUrl + } + +class AddStateItemFieldFactory( + private val readOnlyFlow: Flow, +) : Foo2Factory { + override val type: String = "header" + + override fun RememberStateFlowScope.release(key: String) { + clearPersistedFlow("$key.label") + clearPersistedFlow("$key.text") + } + + override suspend fun RememberStateFlowScope.add( + coroutineScope: CoroutineScope, + key: String, + initial: ServerHeader?, + ): LoginStateItem.HttpHeader { + val labelSink = mutablePersistedFlow("$key.label") { + initial?.key.orEmpty() + } + val labelMutableState = mutableComposeState(labelSink) + val labelFlow = labelSink + .map { label -> + val error = if (label.isBlank()) { + translate(Res.strings.error_must_not_be_blank) + } else { + null + } + TextFieldModel2( + text = label, + hint = translate(Res.strings.addaccount_http_header_key_label), + error = error, + state = labelMutableState, + onChange = labelMutableState::value::set, + ) + } + .readOnly(readOnlyFlow) + + val textSink = mutablePersistedFlow("$key.text") { + initial?.value.orEmpty() + } + val textMutableState = mutableComposeState(textSink) + val textFlow = textSink + .map { text -> + val error = if (!REGEX_US_ASCII.matches(text)) { + translate(Res.strings.error_must_contain_only_us_ascii_chars) + } else { + null + } + TextFieldModel2( + text = text, + hint = translate(Res.strings.addaccount_http_header_value_label), + error = error, + state = textMutableState, + onChange = textMutableState::value::set, + ) + } + .readOnly(readOnlyFlow) + + val stateFlow = combine( + labelFlow, + textFlow, + ) { labelField, textField -> + LoginStateItem.HttpHeader.State( + label = labelField, + text = textField, + ) + } + .persistingStateIn( + scope = coroutineScope, + started = SharingStarted.Lazily, + ) + return LoginStateItem.HttpHeader( + id = key, + state = LocalStateItem( + flow = stateFlow, + populator = { state -> + val error = state.label.error != null || state.text.error != null + if (error) { + return@LocalStateItem copy(error = true) + } + + val header = ServerHeader( + key = state.label.text, + value = state.text.text, + ) + copy(headers = headers.add(header)) + }, + ), + ) + } +} + +interface Foo2Factory where T : LoginStateItem, T : LoginStateItem.HasOptions { + val type: String + + suspend fun RememberStateFlowScope.add( + coroutineScope: CoroutineScope, + key: String, + initial: Default?, + ): T + + fun RememberStateFlowScope.release(key: String) +} + +data class Foo2Type( + val type: String, + val name: String, +) + +data class Foo2Persistable( + val key: String, + val type: String, +) : Serializable + +data class Foo2InitialState( + val items: List>, +) { + data class Item( + val key: String, + val type: String, + val argument: Argument? = null, + ) +} + +fun RememberStateFlowScope.foo3( + scope: String, + initial: List, + initialType: (Argument) -> String, + factories: List>, + afterList: MutableList.() -> Unit, + extra: FieldBakeryScope.() -> Flow> = { + flowOf(emptyList()) + }, +): Flow> where T : LoginStateItem, T : LoginStateItem.HasOptions { + val initialState = Foo2InitialState( + items = initial + .associateBy { + UUID.randomUUID().toString() + } + .map { entry -> + Foo2InitialState.Item( + key = entry.key, + type = initialType(entry.value), + argument = entry.value, + ) + }, + ) + return foo( + scope = scope, + initialState = initialState, + entryAdd = { coroutineScope, (key, type), arg -> + val factory = factories.first { it.type == type } + with(factory) { + add(coroutineScope, key, arg) + } + }, + entryRelease = { (key, type) -> + val factory = factories.first { it.type == type } + with(factory) { + release(key) + } + }, + afterList = afterList, + extra = extra, + ) +} + +interface FieldBakeryScope { + fun moveUp(key: String) + + fun moveDown(key: String) + + fun delete(key: String) + + fun add(type: String, arg: Argument?) +} + +private fun FieldBakeryScope.typeBasedAddItem( + scope: String, + addText: String, + typesFlow: Flow>, +): Flow> = typesFlow + .map { types -> + if (types.isEmpty()) { + return@map null // hide add item + } + + val actions = types + .map { type -> + FlatItemAction( + title = type.name, + onClick = { + add(type.type, null) + }, + ) + } + LoginStateItem.Add( + id = "$scope.add", + text = addText, + actions = actions, + ) + } + .map { listOfNotNull(it) } + +fun RememberStateFlowScope.foo( + // scope name, + scope: String, + initialState: Foo2InitialState, + entryAdd: suspend RememberStateFlowScope.(CoroutineScope, Foo2Persistable, Argument?) -> T, + entryRelease: RememberStateFlowScope.(Foo2Persistable) -> Unit, + afterList: MutableList.() -> Unit, + extra: FieldBakeryScope.() -> Flow> = { + flowOf(emptyList()) + }, +): Flow> where T : LoginStateItem, T : LoginStateItem.HasOptions { + var inMemoryArguments = initialState + .items + .mapNotNull { + if (it.argument != null) { + it.key to it.argument + } else { + null + } + } + .toMap() + .toPersistentMap() + + val persistableSink = mutablePersistedFlow("$scope.keys") { + initialState + .items + .map { + Foo2Persistable( + key = it.key, + type = it.type, + ) + } + } + + fun move(key: String, offset: Int) = persistableSink.update { state -> + val i = state.indexOfFirst { it.key == key } + if ( + i == -1 || + i + offset < 0 || + i + offset >= state.size + ) { + return@update state + } + + val newState = state.toMutableList() + val item = newState.removeAt(i) + newState.add(i + offset, item) + newState + } + + fun moveUp(key: String) = move(key, offset = -1) + + fun moveDown(key: String) = move(key, offset = 1) + + fun delete(key: String) = persistableSink.update { state -> + inMemoryArguments = inMemoryArguments.remove(key) + + val i = state.indexOfFirst { it.key == key } + if (i == -1) return@update state + + val newState = state.toMutableList() + newState.removeAt(i) + newState + } + + fun add(type: String, arg: Argument?) { + val key = "$scope.items." + UUID.randomUUID().toString() + // Remember the argument, so we can grab it and construct something + // persistent from it. + if (arg != null) { + inMemoryArguments = inMemoryArguments.put(key, arg) + } + + val newEntry = Foo2Persistable( + key = key, + type = type, + ) + persistableSink.update { state -> + state + newEntry + } + } + + val scope2 = object : FieldBakeryScope { + override fun moveUp(key: String) = moveUp(key) + + override fun moveDown(key: String) = moveDown(key) + + override fun delete(key: String) = delete(key) + + override fun add(type: String, arg: Argument?) = add(type, arg) + } + + data class Foo2Scoped( + val perst: Foo2Persistable, + val scope: CoroutineScope, + val v: T, + ) + + val keysFlow = persistableSink + .scan( + initial = listOf>(), + ) { state, new -> + val out = mutableListOf>() + // Find if a new entry has a different + // type comparing to the old one. + new.forEach { perst -> + val existingEntry = state.firstOrNull { it.perst.key == perst.key } + val shouldAdd = when (val existingType = existingEntry?.perst?.type) { + perst.type -> { + out += existingEntry + false // do no add + } + + null -> true // add + + else -> { + val item = Foo2Persistable(perst.key, existingType) + entryRelease(item) + // clear the scope that we used to construct fields + existingEntry.scope.cancel() + true // add + } + } + if (shouldAdd) { + val itemCoroutineScope = screenScope + Job() + val itemDefaultArg = inMemoryArguments[perst.key] + out += Foo2Scoped( + perst = perst, + scope = itemCoroutineScope, + v = entryAdd(itemCoroutineScope, perst, itemDefaultArg), + ) + } + } + // Clean-up removed entries. + state.forEach { i -> + val removed = new.none { it.key == i.perst.key } + if (removed) { + val item = Foo2Persistable(i.perst.key, i.perst.type) + entryRelease(item) + // clear the scope that we used to construct fields + i.scope.cancel() + } + } + + out + } + val itemsFlow = keysFlow + .map { state -> + state.mapIndexed { index, entry -> + val item = entry.v + + // Appends list-specific options to be able to reorder + // the list or remove an item. + val options = item.options.toMutableList() + if (index > 0) { + options += FlatItemAction( + icon = Icons.Outlined.ArrowUpward, + title = translate(Res.strings.list_move_up), + onClick = ::moveUp.partially1(entry.perst.key), + ) + } + if (index < state.size - 1) { + options += FlatItemAction( + icon = Icons.Outlined.ArrowDownward, + title = translate(Res.strings.list_move_down), + onClick = ::moveDown.partially1(entry.perst.key), + ) + } + options += FlatItemAction( + icon = Icons.Outlined.DeleteForever, + title = translate(Res.strings.list_remove), + onClick = { + val intent = createConfirmationDialogIntent( + icon = icon(Icons.Outlined.DeleteForever), + title = translate(Res.strings.list_remove_confirmation_title), + ) { + delete(entry.perst.key) + } + navigate(intent) + }, + ) + + item.withOptions(options) + } + } + val extraFlow = extra(scope2) + return combine( + itemsFlow, + extraFlow, + ) { items, customItems -> + val out = items + .widen() + .toMutableList() + out += customItems + out.apply(afterList) + } + .shareIn(screenScope, SharingStarted.WhileSubscribed(5000L), replay = 1) +} + +private fun Flow.readOnly(flow: Flow) = this + .combine(flow) { textField, readOnly -> + if (readOnly) { + textField.copy(onChange = null) + } else { + textField + } + } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/otp/LoginTwofaRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/otp/LoginTwofaRoute.kt new file mode 100644 index 00000000..97001578 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/otp/LoginTwofaRoute.kt @@ -0,0 +1,33 @@ +package com.artemchep.keyguard.feature.auth.login.otp + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.RouteForResult +import com.artemchep.keyguard.feature.navigation.RouteResultTransmitter +import com.artemchep.keyguard.provider.bitwarden.ServerEnv +import com.artemchep.keyguard.provider.bitwarden.model.TwoFactorProviderArgument + +data class LoginTwofaRoute( + val args: Args, +) : RouteForResult { + data class Args( + val accountId: String? = null, + // two factor + val providers: List, + // common + val clientSecret: String?, + val email: String, + val password: String, + // server + val env: ServerEnv, + ) + + @Composable + override fun Content( + transmitter: RouteResultTransmitter, + ) { + LoginTwofaScreen( + args = args, + transmitter = transmitter, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/otp/LoginTwofaScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/otp/LoginTwofaScreen.kt new file mode 100644 index 00000000..cea2cd39 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/otp/LoginTwofaScreen.kt @@ -0,0 +1,654 @@ +package com.artemchep.keyguard.feature.auth.login.otp + +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.Crossfade +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.text.KeyboardActionScope +import androidx.compose.foundation.text.KeyboardActions +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Construction +import androidx.compose.material.icons.outlined.Launch +import androidx.compose.material.icons.outlined.Login +import androidx.compose.material.icons.outlined.MailOutline +import androidx.compose.material.icons.outlined.Refresh +import androidx.compose.material3.Checkbox +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.focus.focusRequester +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.input.ImeAction +import androidx.compose.ui.text.input.KeyboardType +import androidx.compose.ui.unit.dp +import arrow.core.partially1 +import arrow.core.right +import com.artemchep.keyguard.common.model.getOrNull +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.feature.navigation.RouteResultTransmitter +import com.artemchep.keyguard.feature.yubikey.YubiKeyManual +import com.artemchep.keyguard.feature.yubikey.YubiKeyNfcCard +import com.artemchep.keyguard.feature.yubikey.YubiKeyUsbCard +import com.artemchep.keyguard.feature.yubikey.rememberYubiKey +import com.artemchep.keyguard.platform.CurrentPlatform +import com.artemchep.keyguard.platform.Platform +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.DefaultFab +import com.artemchep.keyguard.ui.DefaultProgressBar +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +import com.artemchep.keyguard.ui.FabState +import com.artemchep.keyguard.ui.FlatDropdown +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.FlatItemLayout +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.FlatTextField +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.ScaffoldColumn +import com.artemchep.keyguard.ui.grid.SimpleGridLayout +import com.artemchep.keyguard.ui.icons.DropdownIcon +import com.artemchep.keyguard.ui.icons.IconBox +import com.artemchep.keyguard.ui.icons.KeyguardTwoFa +import com.artemchep.keyguard.ui.shimmer.shimmer +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.theme.horizontalPaddingHalf +import com.artemchep.keyguard.ui.theme.monoFontFamily +import com.artemchep.keyguard.ui.toolbar.LargeToolbar +import com.artemchep.keyguard.ui.util.HorizontalDivider +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun LoginTwofaScreen( + args: LoginTwofaRoute.Args, + transmitter: RouteResultTransmitter, +) { + val state = produceLoginTwofaScreenState( + args = args, + transmitter = transmitter, + ) + LoginTwofaScreenContent( + state = state, + ) +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun LoginTwofaScreenContent( + state: TwoFactorState, +) { + val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + val scope = remember { + LoginOtpScreenScope() + } + ScaffoldColumn( + modifier = Modifier + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + LargeToolbar( + title = { + Text( + text = stringResource(Res.strings.addaccount2fa_header_title), + ) + }, + navigationIcon = { + NavigationIcon() + }, + scrollBehavior = scrollBehavior, + ) + }, + floatingActionState = run { + val holder = state.state as? LoginTwofaState.HasPrimaryAction + val primaryAction = holder?.primaryAction + val fabState = if (primaryAction != null) { + val fabOnClick = primaryAction.onClick + FabState( + onClick = fabOnClick, + model = null, + ) + } else { + null + } + rememberUpdatedState(newValue = fabState) + }, + floatingActionButton = { + val holder = state.state as? LoginTwofaState.HasPrimaryAction + val action = holder?.primaryAction + DefaultFab( + icon = { + Crossfade( + modifier = Modifier + .size(24.dp), + targetState = action?.icon, + ) { icon -> + when (icon) { + LoginTwofaState.PrimaryAction.Icon.LOGIN -> + Icon( + imageVector = Icons.Outlined.Login, + contentDescription = null, + ) + + LoginTwofaState.PrimaryAction.Icon.LAUNCH -> + Icon( + imageVector = Icons.Outlined.Launch, + contentDescription = null, + ) + + LoginTwofaState.PrimaryAction.Icon.LOADING -> + CircularProgressIndicator( + color = LocalContentColor.current, + ) + + null -> { + // Draw nothing. + } + } + } + }, + text = { + Text(action?.text.orEmpty()) + }, + ) + }, + overlay = { + val isLoading by state.loadingState.collectAsState() + DefaultProgressBar( + modifier = Modifier, + visible = isLoading, + ) + }, + ) { + TwoFactorProviderSelector( + items = state.providers, + ) + Spacer(Modifier.height(8.dp)) + + // Content + val s = state.state + Column { + when (s) { + is LoginTwofaState.Skeleton -> LoginOtpScreenContentSkeleton(scope, s) + is LoginTwofaState.Unsupported -> LoginOtpScreenContentUnsupported(scope, s) + is LoginTwofaState.Authenticator -> LoginOtpScreenContentAuthenticator(scope, s) + is LoginTwofaState.YubiKey -> LoginOtpScreenContentYubiKey(scope, s) + is LoginTwofaState.Email -> LoginOtpScreenContentEmail(scope, s) + is LoginTwofaState.Fido2WebAuthn -> LoginOtpScreenContentFido2WebAuthnBrowser( + scope, + s, + ) + + is LoginTwofaState.Duo -> LoginOtpScreenContentDuoWebView(scope, s) + } + } + } +} + +class LoginOtpScreenScope( + initialFocusRequested: Boolean = false, +) { + val initialFocusRequestedState = mutableStateOf(initialFocusRequested) + + @Composable + fun initialFocusRequesterEffect(): FocusRequester { + val focusRequester = remember { FocusRequester() } + // Auto focus the text field + // on launch. + LaunchedEffect(focusRequester) { + var initialFocusRequested by initialFocusRequestedState + if (!initialFocusRequested) { + focusRequester.requestFocus() + // do not request it the second time + initialFocusRequested = true + } + } + return focusRequester + } +} + +@Composable +private fun TwoFactorProviderSelector( + items: List, +) { + val dropdown = remember(items) { + items + .map { type -> + FlatItemAction( + id = type.key, + title = type.title, + onClick = type.onClick, + ) + } + } + FlatDropdown( + content = { + FlatItemTextContent( + title = { + val selectedTitle = remember(items) { + val type = items.firstOrNull { it.checked } + type?.title.orEmpty() + } + Row( + verticalAlignment = Alignment.CenterVertically, + ) { + Text( + text = selectedTitle, + style = MaterialTheme.typography.titleMedium, + ) + Spacer( + modifier = Modifier + .width(Dimens.buttonIconPadding), + ) + DropdownIcon() + } + }, + ) + }, + dropdown = dropdown, + ) +} + +@Composable +private fun ColumnScope.LoginOtpScreenContentSkeleton( + screenScope: LoginOtpScreenScope, + state: LoginTwofaState.Skeleton, +) { + val contentColor = LocalContentColor.current.combineAlpha(DisabledEmphasisAlpha) + Box( + modifier = Modifier + .height(13.dp) + .fillMaxWidth(0.70f) + .shimmer() + .padding(horizontal = Dimens.horizontalPadding) + .clip(MaterialTheme.shapes.medium) + .background(contentColor.copy(alpha = 0.28f)), + ) + Spacer(Modifier.height(32.dp)) + Box( + modifier = Modifier + .height(56.dp) + .fillMaxWidth() + .shimmer() + .padding(horizontal = Dimens.horizontalPadding) + .clip(MaterialTheme.shapes.medium) + .background(contentColor), + ) + Spacer(Modifier.height(16.dp)) + val height = 18.dp + Row( + modifier = Modifier + .height(height) + .padding(horizontal = Dimens.horizontalPadding), + ) { + Box( + modifier = Modifier + .width(height) + .fillMaxHeight() + .shimmer() + .clip(MaterialTheme.shapes.medium) + .background(contentColor), + ) + Spacer(Modifier.width(16.dp)) + Box( + modifier = Modifier + .fillMaxWidth(0.33f) + .fillMaxHeight() + .shimmer() + .clip(MaterialTheme.shapes.medium) + .background(contentColor), + ) + } +} + +@Composable +private fun ColumnScope.LoginOtpScreenContentUnsupported( + screenScope: LoginOtpScreenScope, + state: LoginTwofaState.Unsupported, +) { + val contentColor = LocalContentColor.current + .combineAlpha(alpha = MediumEmphasisAlpha) + Icon( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + imageVector = Icons.Outlined.Construction, + contentDescription = null, + tint = contentColor, + ) + Spacer(Modifier.height(16.dp)) + Text( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + text = stringResource(Res.strings.addaccount2fa_unsupported_note), + style = MaterialTheme.typography.bodyMedium, + color = contentColor, + ) + val updatedOnLaunchWebVault by rememberUpdatedState(state.onLaunchWebVault) + ExpandedIfNotEmpty( + valueOrNull = Unit.takeIf { state.onLaunchWebVault != null }, + ) { + TextButton( + modifier = Modifier + .padding(top = 16.dp) + .padding( + vertical = 4.dp, + horizontal = 4.dp, + ), + onClick = { + updatedOnLaunchWebVault?.invoke() + }, + ) { + Text( + text = stringResource(Res.strings.launch_web_vault), + ) + } + } +} + +@Composable +private fun ColumnScope.LoginOtpScreenContentAuthenticator( + screenScope: LoginOtpScreenScope, + state: LoginTwofaState.Authenticator, +) { + val focusRequester = screenScope.initialFocusRequesterEffect() + + val primaryActionOnClick = state.primaryAction?.onClick + val keyboardOnGo: (KeyboardActionScope.() -> Unit)? = + if (primaryActionOnClick != null) { + // lambda + { + primaryActionOnClick() + } + } else { + null + } + + Text( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + text = stringResource(Res.strings.addaccount2fa_otp_note), + style = MaterialTheme.typography.bodyMedium, + ) + Spacer(Modifier.height(16.dp)) + FlatTextField( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + // TODO: Should be Authenticator code, when compose autofill + // adds a support for that. + fieldModifier = Modifier + .focusRequester(focusRequester), + label = stringResource(Res.strings.verification_code), + value = state.code, + textStyle = TextStyle( + fontFamily = monoFontFamily, + ), + keyboardOptions = KeyboardOptions( + autoCorrect = false, + keyboardType = KeyboardType.Number, + imeAction = when { + keyboardOnGo != null -> ImeAction.Go + else -> ImeAction.Default + }, + ), + keyboardActions = KeyboardActions( + onGo = keyboardOnGo, + ), + maxLines = 1, + singleLine = true, + leading = { + IconBox( + main = Icons.Outlined.KeyguardTwoFa, + ) + }, + ) + Spacer(Modifier.height(8.dp)) + FlatItemLayout( + leading = { + Checkbox( + checked = state.rememberMe.checked, + enabled = state.rememberMe.onChange != null, + onCheckedChange = null, + ) + }, + content = { + Text( + text = stringResource(Res.strings.remember_me), + style = MaterialTheme.typography.bodyMedium, + ) + }, + onClick = state.rememberMe.onChange?.partially1(!state.rememberMe.checked), + ) +} + +@Composable +private fun ColumnScope.LoginOtpScreenContentEmail( + screenScope: LoginOtpScreenScope, + state: LoginTwofaState.Email, +) { + val focusRequester = screenScope.initialFocusRequesterEffect() + + val primaryActionOnClick = state.primaryAction?.onClick + val keyboardOnGo: (KeyboardActionScope.() -> Unit)? = + if (primaryActionOnClick != null) { + // lambda + { + primaryActionOnClick() + } + } else { + null + } + + Text( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + text = stringResource(Res.strings.addaccount2fa_email_note, state.email.orEmpty()), + style = MaterialTheme.typography.bodyMedium, + ) + Spacer(Modifier.height(16.dp)) + FlatTextField( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + // TODO: Should be Email code, when compose autofill + // adds a support for that. + fieldModifier = Modifier + .focusRequester(focusRequester), + label = stringResource(Res.strings.verification_code), + value = state.code, + textStyle = TextStyle( + fontFamily = monoFontFamily, + ), + keyboardOptions = KeyboardOptions( + autoCorrect = false, + keyboardType = KeyboardType.Number, + imeAction = when { + keyboardOnGo != null -> ImeAction.Go + else -> ImeAction.Default + }, + ), + keyboardActions = KeyboardActions( + onGo = keyboardOnGo, + ), + maxLines = 1, + singleLine = true, + leading = { + IconBox( + main = Icons.Outlined.KeyguardTwoFa, + ) + }, + ) + Spacer(Modifier.height(8.dp)) + AnimatedVisibility( + visible = state.emailResend != null, + ) { + FlatItemLayout( + leading = { + Box { + Icon(Icons.Outlined.MailOutline, null) + Box( + Modifier + .align(Alignment.BottomEnd) + .background(MaterialTheme.colorScheme.surfaceVariant, CircleShape), + ) { + Icon( + Icons.Outlined.Refresh, + null, + Modifier + .padding(1.dp) + .size(12.dp), + ) + } + } + }, + content = { + Text( + text = stringResource(Res.strings.resend_verification_code), + style = MaterialTheme.typography.bodyMedium, + ) + }, + onClick = state.emailResend, + ) + } + FlatItemLayout( + leading = { + Checkbox( + checked = state.rememberMe.checked, + enabled = state.rememberMe.onChange != null, + onCheckedChange = null, + ) + }, + content = { + Text( + text = stringResource(Res.strings.remember_me), + style = MaterialTheme.typography.bodyMedium, + ) + }, + onClick = state.rememberMe.onChange?.partially1(!state.rememberMe.checked), + ) +} + +// TODO: Switch to WebView implementation after +// https://bugs.chromium.org/p/chromium/issues/detail?id=1284805 +// is fixed. +@Composable +expect fun ColumnScope.LoginOtpScreenContentFido2WebAuthnWebView( + screenScope: LoginOtpScreenScope, + state: LoginTwofaState.Fido2WebAuthn, +) + +@Composable +expect fun ColumnScope.LoginOtpScreenContentFido2WebAuthnBrowser( + screenScope: LoginOtpScreenScope, + state: LoginTwofaState.Fido2WebAuthn, +) + +@Composable +expect fun ColumnScope.LoginOtpScreenContentDuoWebView( + screenScope: LoginOtpScreenScope, + state: LoginTwofaState.Duo, +) + +@Composable +private fun ColumnScope.LoginOtpScreenContentYubiKey( + screenScope: LoginOtpScreenScope, + state: LoginTwofaState.YubiKey, +) { + val yubi = rememberYubiKey( + send = state.onComplete, + ) + + val platform = CurrentPlatform + val manual = remember(platform, yubi) { + derivedStateOf { + if (platform is Platform.Desktop) { + return@derivedStateOf true + } + + val usb = yubi.usbState.value.getOrNull() + val nfc = yubi.nfcState.value.getOrNull() + usb?.enabled == false && + nfc?.enabled == false + } + } + AnimatedVisibility(manual.value) { + val updatedSend by rememberUpdatedState(state.onComplete) + Column( + modifier = Modifier + .fillMaxWidth(), + ) { + YubiKeyManual( + modifier = Modifier + .fillMaxWidth(), + onSend = { value -> + val result = value.right() + updatedSend?.invoke(result) + }, + ) + Spacer( + modifier = Modifier + .height(16.dp), + ) + HorizontalDivider() + Spacer( + modifier = Modifier + .height(16.dp), + ) + } + } + SimpleGridLayout( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPaddingHalf), + ) { + YubiKeyUsbCard( + state = yubi.usbState, + ) + YubiKeyNfcCard( + state = yubi.nfcState, + ) + } + FlatItemLayout( + leading = { + Checkbox( + checked = state.rememberMe.checked, + enabled = state.rememberMe.onChange != null, + onCheckedChange = null, + ) + }, + content = { + Text( + text = stringResource(Res.strings.remember_me), + style = MaterialTheme.typography.bodyMedium, + ) + }, + onClick = state.rememberMe.onChange?.partially1(!state.rememberMe.checked), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/otp/LoginTwofaState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/otp/LoginTwofaState.kt new file mode 100644 index 00000000..e3ef7fa2 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/otp/LoginTwofaState.kt @@ -0,0 +1,145 @@ +package com.artemchep.keyguard.feature.auth.login.otp + +import androidx.compose.runtime.Immutable +import arrow.core.Either +import arrow.optics.optics +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import com.artemchep.keyguard.feature.yubikey.OnYubiKeyListener +import com.artemchep.keyguard.provider.bitwarden.model.TwoFactorProviderType + +@Immutable +@optics +sealed class LoginTwofaState { + companion object + + interface HasPrimaryAction { + val primaryAction: PrimaryAction? + } + + @Immutable + @optics + data class PrimaryAction( + val text: String = "", + val icon: Icon = Icon.LOADING, + val onClick: (() -> Unit)? = null, + ) { + companion object; + + enum class Icon { + LOGIN, + LAUNCH, + LOADING, + } + } + + data object Skeleton : LoginTwofaState() + + @Immutable + @optics + data class Unsupported( + val providerType: TwoFactorProviderType?, + val onLaunchWebVault: (() -> Unit)?, + override val primaryAction: PrimaryAction? = null, + ) : LoginTwofaState(), HasPrimaryAction { + companion object + } + + @Immutable + @optics + data class Authenticator( + val code: TextFieldModel2, + val rememberMe: RememberMe = RememberMe(), + override val primaryAction: PrimaryAction? = null, + ) : LoginTwofaState(), HasPrimaryAction { + companion object + + @Immutable + data class RememberMe( + val checked: Boolean = false, + val onChange: ((Boolean) -> Unit)? = null, + ) { + companion object + } + } + + @Immutable + @optics + data class YubiKey( + val onComplete: OnYubiKeyListener?, + val rememberMe: RememberMe = RememberMe(), + override val primaryAction: PrimaryAction? = null, + ) : LoginTwofaState(), HasPrimaryAction { + companion object + + @Immutable + data class RememberMe( + val checked: Boolean = false, + val onChange: ((Boolean) -> Unit)? = null, + ) { + companion object + } + } + + @Immutable + @optics + data class Email( + val email: String? = null, + val emailResend: (() -> Unit)? = null, + val code: TextFieldModel2, + val rememberMe: RememberMe = RememberMe(), + override val primaryAction: PrimaryAction? = null, + ) : LoginTwofaState(), HasPrimaryAction { + companion object + + @Immutable + @optics + data class RememberMe( + val checked: Boolean = false, + val onChange: ((Boolean) -> Unit)? = null, + ) { + companion object + } + } + + @Immutable + @optics + data class Fido2WebAuthn( + val authUrl: String, + val callbackUrls: Set, + val error: String? = null, + val rememberMe: RememberMe = RememberMe(), + val onBrowser: (() -> Unit)?, + val onComplete: ((Either) -> Unit)?, + ) : LoginTwofaState() { + companion object + + @Immutable + @optics + data class RememberMe( + val checked: Boolean = false, + val onChange: ((Boolean) -> Unit)? = null, + ) { + companion object + } + } + + @Immutable + @optics + data class Duo( + val authUrl: String, + val error: String? = null, + val rememberMe: RememberMe = RememberMe(), + val onComplete: ((Either) -> Unit)?, + ) : LoginTwofaState() { + companion object + + @Immutable + @optics + data class RememberMe( + val checked: Boolean = false, + val onChange: ((Boolean) -> Unit)? = null, + ) { + companion object + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/otp/LoginTwofaStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/otp/LoginTwofaStateProducer.kt new file mode 100644 index 00000000..5d7d8c58 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/otp/LoginTwofaStateProducer.kt @@ -0,0 +1,793 @@ +package com.artemchep.keyguard.feature.auth.login.otp + +import androidx.compose.runtime.Composable +import arrow.core.Either +import arrow.core.right +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.effectTap +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.model.ToastMessage +import com.artemchep.keyguard.common.service.crypto.CryptoGenerator +import com.artemchep.keyguard.common.service.deeplink.DeeplinkService +import com.artemchep.keyguard.common.service.text.Base64Service +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import com.artemchep.keyguard.feature.auth.common.Validated +import com.artemchep.keyguard.feature.loading.LoadingTask +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.RouteResultTransmitter +import com.artemchep.keyguard.feature.navigation.state.RememberStateFlowScope +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.provider.bitwarden.ServerTwoFactorToken +import com.artemchep.keyguard.provider.bitwarden.api.builder.buildWebVaultUrl +import com.artemchep.keyguard.provider.bitwarden.model.TwoFactorProvider +import com.artemchep.keyguard.provider.bitwarden.model.TwoFactorProviderArgument +import com.artemchep.keyguard.provider.bitwarden.model.TwoFactorProviderType +import com.artemchep.keyguard.provider.bitwarden.usecase.internal.AddAccount +import com.artemchep.keyguard.provider.bitwarden.usecase.internal.RequestEmailTfa +import com.artemchep.keyguard.res.Res +import io.ktor.http.URLBuilder +import io.ktor.http.URLParserException +import io.ktor.http.Url +import io.ktor.http.appendPathSegments +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.filterNotNull +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.flow +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onEach +import kotlinx.datetime.Clock +import kotlinx.datetime.Instant +import kotlinx.serialization.encodeToString +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.buildJsonObject +import kotlinx.serialization.json.put +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance +import kotlin.time.Duration + +@Composable +fun produceLoginTwofaScreenState( + args: LoginTwofaRoute.Args, + transmitter: RouteResultTransmitter, +) = with(localDI().direct) { + produceLoginTwofaScreenState( + cryptoGenerator = instance(), + base64Service = instance(), + deeplinkService = instance(), + json = instance(), + addAccount = instance(), + requestEmailTfa = instance(), + args = args, + transmitter = transmitter, + ) +} + +@Composable +fun produceLoginTwofaScreenState( + cryptoGenerator: CryptoGenerator, + base64Service: Base64Service, + deeplinkService: DeeplinkService, + json: Json, + addAccount: AddAccount, + requestEmailTfa: RequestEmailTfa, + args: LoginTwofaRoute.Args, + transmitter: RouteResultTransmitter, +): TwoFactorState = produceScreenState( + key = "login_otp", + initial = TwoFactorState( + loadingState = MutableStateFlow(false), + state = LoginTwofaState.Skeleton, + ), + args = arrayOf( + addAccount, + requestEmailTfa, + args, + transmitter, + ), +) { + val actionExecutor = screenExecutor() + + val providersComparator = compareBy( + { !it.supported }, // supported items first + { -it.priority }, // higher priority first + ) + val providers = args + .providers + .mapNotNull { TwoFactorProvider.state[it.type] } + .sortedWith(providersComparator) + + val providerTypeSink = mutablePersistedFlow("provider_type") { + providers.firstOrNull()?.type + } + + val providerItemsFlow = providerTypeSink + .map { selectedProviderType -> + providers.map { provider -> + val checked = provider.type == selectedProviderType + TwoFactorProviderItem( + key = provider.type.name, + title = translate(provider.name), + checked = checked, + onClick = { + providerTypeSink.value = provider.type + }, + ) + } + } + val providerCache = mutableMapOf>() + val providerStateFlow = providerTypeSink + .flatMapLatest { providerType -> + val providerArgs = args + .providers + .firstOrNull { providerType == it.type } + // should not happen + ?: return@flatMapLatest createStateFlowForUnsupported( + providerType = null, + args = args, + ) + val stateFlow = providerCache.getOrPut(providerType) { + val supported = TwoFactorProvider.state[providerType]?.supported + if (supported != true) { + // This might happen if platforms have different + // supported 2FA providers. + return@getOrPut createStateFlowForUnsupported( + providerType = providerType, + args = args, + ) + } + + when (providerType) { + TwoFactorProviderType.Authenticator -> + createStateFlowForAuthenticator( + actionExecutor = actionExecutor, + addAccount = addAccount, + args = args, + provider = providerArgs as TwoFactorProviderArgument.Authenticator, + transmitter = transmitter, + ) + + TwoFactorProviderType.YubiKey -> + createStateFlowForYubiKey( + actionExecutor = actionExecutor, + addAccount = addAccount, + args = args, + provider = providerArgs as TwoFactorProviderArgument.YubiKey, + transmitter = transmitter, + ) + + TwoFactorProviderType.Email -> + createStateFlowForEmail( + cryptoGenerator = cryptoGenerator, + actionExecutor = actionExecutor, + addAccount = addAccount, + requestEmailTfa = requestEmailTfa, + args = args, + provider = providerArgs as TwoFactorProviderArgument.Email, + transmitter = transmitter, + ) + + TwoFactorProviderType.Duo -> + createStateFlowForDuo( + actionExecutor = actionExecutor, + addAccount = addAccount, + args = args, + provider = providerArgs as TwoFactorProviderArgument.Duo, + transmitter = transmitter, + ) + + TwoFactorProviderType.OrganizationDuo -> + createStateFlowForOrganizationDuo( + actionExecutor = actionExecutor, + addAccount = addAccount, + args = args, + provider = providerArgs as TwoFactorProviderArgument.OrganizationDuo, + transmitter = transmitter, + ) + + TwoFactorProviderType.Fido2WebAuthn -> + createStateFlowForFido2WebAuthn( + cryptoGenerator = cryptoGenerator, + base64Service = base64Service, + deeplinkService = deeplinkService, + json = json, + actionExecutor = actionExecutor, + addAccount = addAccount, + args = args, + provider = providerArgs as TwoFactorProviderArgument.Fido2WebAuthn, + transmitter = transmitter, + ) + + else -> + // Show unsupported dialog for every other provider + // for now. + createStateFlowForUnsupported( + providerType = providerType, + args = args, + ) + } + } + stateFlow + } + combine( + providerItemsFlow, + providerStateFlow, + ) { providerItems, providerState -> + TwoFactorState( + providers = providerItems, + loadingState = actionExecutor.isExecutingFlow, + state = providerState, + ) + } +} + +private fun RememberStateFlowScope.createStateFlowForUnsupported( + providerType: TwoFactorProviderType?, + args: LoginTwofaRoute.Args, +): Flow { + val webVaultUrl = args.env.buildWebVaultUrl() + val onLaunchWebVault = try { + // Check if the web vault url is a + // valid url. + Url(webVaultUrl) + // if so, then + val onClick = { + val intent = NavigationIntent.NavigateToBrowser( + url = webVaultUrl, + ) + navigate(intent) + } + onClick + } catch (e: URLParserException) { + null + } + val defaultState = LoginTwofaState.Unsupported( + providerType = providerType, + onLaunchWebVault = onLaunchWebVault, + primaryAction = null, + ) + return flowOf( + value = defaultState, + ) +} + +private fun RememberStateFlowScope.createStateFlowForAuthenticator( + actionExecutor: LoadingTask, + addAccount: AddAccount, + args: LoginTwofaRoute.Args, + provider: TwoFactorProviderArgument.Authenticator, + transmitter: RouteResultTransmitter, +): Flow { + val codeSink = mutablePersistedFlow("authenticator.code") { "" } + val codeState = mutableComposeState(codeSink) + + val codeValidatedFlow = codeSink + .map { rawCode -> + val code = rawCode + .trim() + if (code.length != 6) { + Validated.Failure( + model = code, + error = translate(Res.strings.error_must_have_exactly_n_symbols, 6), + ) + } else { + Validated.Success( + model = code, + ) + } + } + + val rememberMeSink = mutablePersistedFlow("remember_me") { false } + + return combine( + codeValidatedFlow, + actionExecutor.isExecutingFlow, + rememberMeSink + .map { checked -> + LoginTwofaState.Authenticator.RememberMe( + checked = checked, + onChange = rememberMeSink::value::set, + ) + }, + ) { codeValidated, isLoading, rememberMe -> + val canLogin = codeValidated is Validated.Success && + !isLoading + val primaryAction = LoginTwofaState.PrimaryAction( + text = translate(Res.strings.continue_), + icon = if (isLoading) { + LoginTwofaState.PrimaryAction.Icon.LOADING + } else { + LoginTwofaState.PrimaryAction.Icon.LOGIN + }, + onClick = if (canLogin) { + // lambda + { + val io = addAccount( + args.accountId, + args.env, + ServerTwoFactorToken( + token = codeValidated.model, + provider = com.artemchep.keyguard.provider.bitwarden.model.TwoFactorProviderType.Authenticator, + remember = rememberMe.checked, + ), + args.clientSecret, + args.email, + args.password, + ).effectTap { + transmitter(Unit) + } + actionExecutor.execute(io) + } + } else { + null + }, + ) + LoginTwofaState.Authenticator( + code = TextFieldModel2.of( + state = codeState, + validated = codeValidated, + ), + rememberMe = rememberMe, + primaryAction = primaryAction, + ) + } +} + +private fun RememberStateFlowScope.createStateFlowForYubiKey( + actionExecutor: LoadingTask, + addAccount: AddAccount, + args: LoginTwofaRoute.Args, + provider: TwoFactorProviderArgument.YubiKey, + transmitter: RouteResultTransmitter, +): Flow { + val rememberMeSink = mutablePersistedFlow("remember_me") { false } + + fun onComplete( + token: String, + remember: Boolean, + ) { + val io = addAccount( + args.accountId, + args.env, + ServerTwoFactorToken( + token = token, + provider = TwoFactorProviderType.YubiKey, + remember = remember, + ), + args.clientSecret, + args.email, + args.password, + ).effectTap { + transmitter(Unit) + } + actionExecutor.execute(io) + } + + return combine( + actionExecutor.isExecutingFlow, + rememberMeSink + .map { checked -> + LoginTwofaState.YubiKey.RememberMe( + checked = checked, + onChange = rememberMeSink::value::set, + ) + }, + ) { isLoading, rememberMe -> + val canLogin = !isLoading + LoginTwofaState.YubiKey( + onComplete = { event: Either -> + event.fold( + ifLeft = { + val msg = ToastMessage( + title = translate(Res.strings.yubikey_error_failed_to_read), + type = ToastMessage.Type.ERROR, + ) + message(msg) + }, + ifRight = { token -> + onComplete( + token = token, + remember = rememberMe.checked, + ) + }, + ) + }.takeIf { canLogin }, + rememberMe = rememberMe, + primaryAction = null, + ) + } +} + +private fun RememberStateFlowScope.createStateFlowForEmail( + cryptoGenerator: CryptoGenerator, + actionExecutor: LoadingTask, + addAccount: AddAccount, + requestEmailTfa: RequestEmailTfa, + args: LoginTwofaRoute.Args, + provider: TwoFactorProviderArgument.Email, + transmitter: RouteResultTransmitter, +): Flow { + val codeSink = mutablePersistedFlow("email.code") { "" } + val codeState = mutableComposeState(codeSink) + + val codeValidatedFlow = codeSink + .map { rawCode -> + val code = rawCode + .trim() + if (code.length != 6) { + Validated.Failure( + model = code, + error = translate(Res.strings.error_must_have_exactly_n_symbols, 6), + ) + } else { + Validated.Success( + model = code, + ) + } + } + + val rememberMeSink = mutablePersistedFlow("remember_me") { false } + + val onResendFlow = createResendFlow( + cryptoGenerator = cryptoGenerator, + prefix = "email.send_email", + io = requestEmailTfa( + args.env, + args.email, + args.password, + ).effectTap { + val model = ToastMessage( + title = translate(Res.strings.requested_verification_email), + ) + message(model) + }, + ) + + return combine( + codeValidatedFlow, + actionExecutor.isExecutingFlow, + rememberMeSink + .map { checked -> + LoginTwofaState.Email.RememberMe( + checked = checked, + onChange = rememberMeSink::value::set, + ) + }, + onResendFlow, + ) { codeValidated, isLoading, rememberMe, onResend -> + val canLogin = codeValidated is Validated.Success && + !isLoading + val primaryAction = LoginTwofaState.PrimaryAction( + text = translate(Res.strings.continue_), + icon = if (isLoading) { + LoginTwofaState.PrimaryAction.Icon.LOADING + } else { + LoginTwofaState.PrimaryAction.Icon.LOGIN + }, + onClick = if (canLogin) { + // lambda + { + val io = addAccount( + args.accountId, + args.env, + ServerTwoFactorToken( + token = codeValidated.model, + provider = com.artemchep.keyguard.provider.bitwarden.model.TwoFactorProviderType.Email, + remember = rememberMe.checked, + ), + args.clientSecret, + args.email, + args.password, + ).effectTap { + transmitter(Unit) + } + actionExecutor.execute(io) + } + } else { + null + }, + ) + LoginTwofaState.Email( + email = provider.email, + emailResend = onResend, + code = TextFieldModel2.of( + state = codeState, + validated = codeValidated, + ), + rememberMe = rememberMe, + primaryAction = primaryAction, + ) + } +} + +private fun RememberStateFlowScope.createStateFlowForDuo( + actionExecutor: LoadingTask, + addAccount: AddAccount, + args: LoginTwofaRoute.Args, + provider: TwoFactorProviderArgument.Duo, + transmitter: RouteResultTransmitter, +): Flow = createStateFlowForDuo( + actionExecutor = actionExecutor, + addAccount = addAccount, + args = args, + providerHost = provider.host, + providerSignature = provider.signature, + providerType = TwoFactorProviderType.Duo, + transmitter = transmitter, +) + +private fun RememberStateFlowScope.createStateFlowForOrganizationDuo( + actionExecutor: LoadingTask, + addAccount: AddAccount, + args: LoginTwofaRoute.Args, + provider: TwoFactorProviderArgument.OrganizationDuo, + transmitter: RouteResultTransmitter, +): Flow = createStateFlowForDuo( + actionExecutor = actionExecutor, + addAccount = addAccount, + args = args, + providerHost = provider.host, + providerSignature = provider.signature, + providerType = TwoFactorProviderType.OrganizationDuo, + transmitter = transmitter, +) + +private fun RememberStateFlowScope.createStateFlowForDuo( + actionExecutor: LoadingTask, + addAccount: AddAccount, + args: LoginTwofaRoute.Args, + providerHost: String?, + providerSignature: String?, + providerType: TwoFactorProviderType, + transmitter: RouteResultTransmitter, +): Flow { + val authUrl = kotlin.run { + val url = args.env.buildWebVaultUrl() + URLBuilder(Url(url)).apply { + appendPathSegments("duo-connector.html") + parameters.apply { + if (providerHost != null) append("host", providerHost) + if (providerSignature != null) append("request", providerSignature) + } + }.build() + } + + val rememberMeSink = mutablePersistedFlow("remember_me") { false } + + fun onComplete( + result: Either, + ) { + result.fold( + ifLeft = { e -> + val text = e.localizedMessage ?: e.message + val msg = ToastMessage( + type = ToastMessage.Type.ERROR, + title = text.orEmpty(), + ) + message(msg) + }, + ifRight = { token -> + val io = addAccount( + args.accountId, + args.env, + ServerTwoFactorToken( + token = token, + provider = providerType, + remember = rememberMeSink.value, + ), + args.clientSecret, + args.email, + args.password, + ).effectTap { + transmitter(Unit) + } + actionExecutor.execute(io) + }, + ) + } + + return combine( + actionExecutor.isExecutingFlow, + rememberMeSink + .map { checked -> + LoginTwofaState.Duo.RememberMe( + checked = checked, + onChange = rememberMeSink::value::set, + ) + }, + ) { isLoading, rememberMe -> + val canLogin = !isLoading + LoginTwofaState.Duo( + authUrl = authUrl.toString(), + error = null, + rememberMe = rememberMe, + onComplete = ::onComplete + .takeIf { canLogin }, + ) + } +} + +private fun RememberStateFlowScope.createStateFlowForFido2WebAuthn( + cryptoGenerator: CryptoGenerator, + base64Service: Base64Service, + deeplinkService: DeeplinkService, + json: Json, + actionExecutor: LoadingTask, + addAccount: AddAccount, + args: LoginTwofaRoute.Args, + provider: TwoFactorProviderArgument.Fido2WebAuthn, + transmitter: RouteResultTransmitter, +): Flow { + val errorSink = mutablePersistedFlow("fido2webauthn.error") { "" } + + val callbackUrl = "keyguard://webauthn-callback" + val callbackUrls = setOf( + callbackUrl, + // Bitwarden hardcoded a callback URL internally, so we have to + // check for that schema too, to support older installations. + // https://github.com/bitwarden/clients/pull/6469 + "bitwarden://webauthn-callback", + ) + val authUrl = kotlin.run { + val url = args.env.buildWebVaultUrl() + val data = buildJsonObject { + val responseData = provider.json + ?.let { json.encodeToString(it) } + if (responseData != null) { + put("data", responseData) + } + put("callbackUri", callbackUrl) + put("headerText", translate(Res.strings.fido2webauthn_web_title)) + put("btnText", translate(Res.strings.fido2webauthn_action_go_title)) + put("btnReturnText", translate(Res.strings.fido2webauthn_action_return_title)) + } + .let { json.encodeToString(it) } + .let { base64Service.encodeToString(it) } + URLBuilder(Url(url)).apply { + appendPathSegments("webauthn-mobile-connector.html") + parameters.apply { + append("data", data) + append("parent", callbackUrl) + append("v", "2") + } + }.build() + } + + val rememberMeSink = mutablePersistedFlow("remember_me") { false } + + fun onComplete( + result: Either, + ) { + result.fold( + ifLeft = { e -> + val text = e.localizedMessage ?: e.message + val msg = ToastMessage( + type = ToastMessage.Type.ERROR, + title = text.orEmpty(), + ) + message(msg) + }, + ifRight = { token -> + val io = addAccount( + args.accountId, + args.env, + ServerTwoFactorToken( + token = token, + provider = TwoFactorProviderType.Fido2WebAuthn, + remember = rememberMeSink.value, + ), + args.clientSecret, + args.email, + args.password, + ).effectTap { + transmitter(Unit) + } + actionExecutor.execute(io) + }, + ) + } + + fun onBrowser( + ) { + val intent = NavigationIntent.NavigateToBrowser(authUrl.toString()) + navigate(intent) + } + + return combine( + deeplinkService + .getFlow("webauthn-callback") + .onEach { data -> + if (data != null) { + val result = data.right() + onComplete(result) + } + }, + errorSink + .map { error -> error.takeIf { it.isNotBlank() } }, + actionExecutor.isExecutingFlow, + rememberMeSink + .map { checked -> + LoginTwofaState.Fido2WebAuthn.RememberMe( + checked = checked, + onChange = rememberMeSink::value::set, + ) + }, + ) { _, error, isLoading, rememberMe -> + val canLogin = !isLoading + LoginTwofaState.Fido2WebAuthn( + authUrl = authUrl.toString(), + callbackUrls = callbackUrls, + error = error, + rememberMe = rememberMe, + onBrowser = ::onBrowser + .takeIf { canLogin }, + onComplete = ::onComplete + .takeIf { canLogin }, + ) + } +} + +private fun RememberStateFlowScope.createResendFlow( + cryptoGenerator: CryptoGenerator, + prefix: String, + io: IO, + resendDelay: Duration = with(Duration) { 30L.seconds }, +): Flow<(() -> Unit)?> = kotlin.run { + // A flow of time, past which a user can manually + // resend a request. + val canResendAtSink = mutablePersistedFlow("$prefix.resend_at") { + Instant.DISTANT_FUTURE + } + + val targetSink = mutablePersistedFlow("$prefix.target") { + cryptoGenerator.uuid() + } + val currentSink = mutablePersistedFlow("$prefix.current") { "" } + combine( + targetSink, + currentSink, + ) { send, sent -> + send.takeUnless { it == sent } + }.filterNotNull() + .onEach { + io + .effectTap { + canResendAtSink.value = Clock.System.now() + resendDelay + } + .launchIn(this) + } + .onEach { key -> + // Remember the key, so next time when we resubscribe + // we do not send the email request again. + currentSink.value = key + } + .launchIn(screenScope) + + val resend: () -> Unit = { + targetSink.value = cryptoGenerator.uuid() + } + + canResendAtSink + .flatMapLatest { at -> + val dt = at - Clock.System.now() + if (dt.isPositive()) { + flow { + emit(false) + delay(dt) + emit(true) + } + } else { + flowOf(true) + } + } + .distinctUntilChanged() + .map { canResend -> + resend.takeIf { canResend } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/otp/TwoFactorProviderItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/otp/TwoFactorProviderItem.kt new file mode 100644 index 00000000..6ebfab85 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/otp/TwoFactorProviderItem.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.feature.auth.login.otp + +data class TwoFactorProviderItem( + val key: String, + val title: String, + val checked: Boolean, + val onClick: (() -> Unit)? = null, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/otp/TwoFactorState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/otp/TwoFactorState.kt new file mode 100644 index 00000000..bc2aeaec --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/auth/login/otp/TwoFactorState.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.feature.auth.login.otp + +import kotlinx.coroutines.flow.StateFlow + +data class TwoFactorState( + val providers: List = emptyList(), + val loadingState: StateFlow, + val state: LoginTwofaState, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/barcodetype/BarcodeTypeRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/barcodetype/BarcodeTypeRoute.kt new file mode 100644 index 00000000..33f304da --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/barcodetype/BarcodeTypeRoute.kt @@ -0,0 +1,76 @@ +package com.artemchep.keyguard.feature.barcodetype + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.QrCode +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.model.BarcodeImageFormat +import com.artemchep.keyguard.feature.navigation.DialogRoute +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.state.TranslatorScope +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.icons.icon + +data class BarcodeTypeRoute( + val args: Args, +) : DialogRoute { + companion object { + fun showInBarcodeTypeActionOrNull( + translator: TranslatorScope, + data: String, + text: String? = null, + format: BarcodeImageFormat = BarcodeImageFormat.QR_CODE, + single: Boolean = false, + navigate: (NavigationIntent) -> Unit, + ) = if (data.length > 1024) { + null + } else { + showInBarcodeTypeAction( + translator = translator, + data = data, + text = text, + format = format, + single = single, + navigate = navigate, + ) + } + + fun showInBarcodeTypeAction( + translator: TranslatorScope, + data: String, + text: String? = null, + format: BarcodeImageFormat = BarcodeImageFormat.QR_CODE, + single: Boolean = false, + navigate: (NavigationIntent) -> Unit, + ) = FlatItemAction( + leading = icon(Icons.Outlined.QrCode), + title = translator.translate(Res.strings.barcodetype_action_show_in_barcode_title), + onClick = { + val route = BarcodeTypeRoute( + args = Args( + text = text, + data = data, + format = format, + single = single, + ), + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + } + + data class Args( + val text: String?, + val data: String, + val format: BarcodeImageFormat, + val single: Boolean, + ) + + @Composable + override fun Content() { + BarcodeTypeScreen( + args = args, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/barcodetype/BarcodeTypeScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/barcodetype/BarcodeTypeScreen.kt new file mode 100644 index 00000000..e73736b3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/barcodetype/BarcodeTypeScreen.kt @@ -0,0 +1,231 @@ +package com.artemchep.keyguard.feature.barcodetype + +import androidx.compose.animation.animateContentSize +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.BoxWithConstraints +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.QrCode +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.ImageBitmap +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import arrow.core.Either +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.handleErrorTap +import com.artemchep.keyguard.common.model.BarcodeImageFormat +import com.artemchep.keyguard.common.model.BarcodeImageRequest +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.getOrNull +import com.artemchep.keyguard.common.usecase.GetBarcodeImage +import com.artemchep.keyguard.feature.dialog.Dialog +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatDropdown +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.KeepScreenOnEffect +import com.artemchep.keyguard.ui.icons.DropdownIcon +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import org.kodein.di.compose.rememberInstance + +@Composable +fun BarcodeTypeScreen( + args: BarcodeTypeRoute.Args, +) { + val loadableState = produceBarcodeTypeScreenState(args) + BarcodeTypeContent( + args = args, + loadableState = loadableState, + ) +} + +@Composable +private fun BarcodeTypeContent( + args: BarcodeTypeRoute.Args, + loadableState: Loadable, +) { + KeepScreenOnEffect() + + Dialog( + icon = icon(Icons.Outlined.QrCode), + title = { + Text(stringResource(Res.strings.barcodetype_title)) + }, + content = { + Column { + val dropdown = loadableState.getOrNull()?.format?.options.orEmpty() + FlatDropdown( + content = { + FlatItemTextContent( + title = { + val selectedTitle = + loadableState.getOrNull()?.format?.format.orEmpty() + Row( + verticalAlignment = Alignment.CenterVertically, + ) { + Text( + text = selectedTitle, + style = MaterialTheme.typography.titleMedium, + ) + Spacer( + modifier = Modifier + .width(8.dp), + ) + DropdownIcon() + } + }, + ) + }, + dropdown = dropdown, + ) + Spacer( + modifier = Modifier + .height(8.dp), + ) + + val imageRequest = loadableState.getOrNull()?.request + val imageAspectRatio = imageRequest?.format?.aspectRatio() ?: 1f + BoxWithConstraints( + modifier = Modifier + .padding(horizontal = 8.dp) + .clip(MaterialTheme.shapes.medium) + .fillMaxWidth(), + ) { + val density = LocalDensity.current + val imageWidth = maxWidth.value.times(density.density).toInt() + val imageHeight = imageWidth + .div(imageAspectRatio) + .toInt() + BarcodeImage( + modifier = Modifier + .fillMaxWidth() + .animateContentSize(), + imageModel = { + imageRequest + ?.copy( + size = BarcodeImageRequest.Size( + width = imageWidth, + height = imageHeight, + ), + ) + }, + ) + } + + if (args.text != null) { + Spacer( + modifier = Modifier + .height(16.dp), + ) + Text( + modifier = Modifier + .padding(horizontal = 16.dp), + text = args.text, + ) + } + } + }, + actions = { + val updatedOnClose by rememberUpdatedState(loadableState.getOrNull()?.onClose) + TextButton( + enabled = updatedOnClose != null, + onClick = { + updatedOnClose?.invoke() + }, + ) { + Text(stringResource(Res.strings.close)) + } + }, + ) +} + +@Composable +private fun BarcodeImage( + imageModel: () -> BarcodeImageRequest?, + modifier: Modifier, +) { + val imageState = remember { + mutableStateOf?>(null) + } + + val getBarcodeImage: GetBarcodeImage by rememberInstance() + LaunchedEffect( + getBarcodeImage, + imageModel, + ) { + val image = imageModel() + ?.let(getBarcodeImage) + ?.handleErrorTap { + it.printStackTrace() + } + ?.attempt() + ?.bind() + imageState.value = image + } + + BoxWithConstraints( + modifier = modifier, + ) { + val image = imageState.value + ?: return@BoxWithConstraints + image.fold( + ifLeft = { e -> + Text( + modifier = Modifier + .padding(8.dp), + text = e.localizedMessage, + color = MaterialTheme.colorScheme.error, + style = MaterialTheme.typography.bodyMedium, + maxLines = 6, + overflow = TextOverflow.Ellipsis, + ) + }, + ifRight = { img -> + Image( + bitmap = img, + contentDescription = null, + ) + }, + ) + } +} + +private fun BarcodeImageFormat.aspectRatio() = when (this) { + BarcodeImageFormat.AZTEC -> 1f // square + BarcodeImageFormat.CODABAR -> 2f // bar + BarcodeImageFormat.CODE_39 -> 2f + BarcodeImageFormat.CODE_93 -> 2f + BarcodeImageFormat.CODE_128 -> 2f + BarcodeImageFormat.DATA_MATRIX -> 1f + BarcodeImageFormat.EAN_8 -> null + BarcodeImageFormat.EAN_13 -> null + BarcodeImageFormat.ITF -> null + BarcodeImageFormat.MAXICODE -> null + BarcodeImageFormat.PDF_417 -> 2f + BarcodeImageFormat.QR_CODE -> 1f + BarcodeImageFormat.RSS_14 -> null + BarcodeImageFormat.RSS_EXPANDED -> null + BarcodeImageFormat.UPC_A -> null + BarcodeImageFormat.UPC_E -> null + BarcodeImageFormat.UPC_EAN_EXTENSION -> null +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/barcodetype/BarcodeTypeState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/barcodetype/BarcodeTypeState.kt new file mode 100644 index 00000000..803c9ef7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/barcodetype/BarcodeTypeState.kt @@ -0,0 +1,15 @@ +package com.artemchep.keyguard.feature.barcodetype + +import com.artemchep.keyguard.common.model.BarcodeImageRequest +import com.artemchep.keyguard.ui.FlatItemAction + +data class BarcodeTypeState( + val format: Format, + val request: BarcodeImageRequest, + val onClose: (() -> Unit)? = null, +) { + data class Format( + val format: String, + val options: List, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/barcodetype/BarcodeTypeStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/barcodetype/BarcodeTypeStateProducer.kt new file mode 100644 index 00000000..933162a7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/barcodetype/BarcodeTypeStateProducer.kt @@ -0,0 +1,105 @@ +package com.artemchep.keyguard.feature.barcodetype + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.model.BarcodeImageFormat +import com.artemchep.keyguard.common.model.BarcodeImageRequest +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.feature.navigation.state.PersistedStorage +import com.artemchep.keyguard.feature.navigation.state.navigatePopSelf +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.ui.FlatItemAction +import kotlinx.coroutines.flow.map + +@Composable +fun produceBarcodeTypeScreenState( + args: BarcodeTypeRoute.Args, +): Loadable = produceScreenState( + key = "barcodetype", + args = arrayOf( + args, + ), + initial = Loadable.Loading, +) { + fun onClose() { + navigatePopSelf() + } + + val storage = kotlin.run { + val disk = loadDiskHandle("barcodetype") + PersistedStorage.InDisk(disk) + } + val formatDefault = args.format + val formatSink = mutablePersistedFlow( + key = "format", + storage = if (args.single) { + // Do not save the choice on disk, if we + // could not change anything. + PersistedStorage.InMemory + } else { + storage + }, + ) { formatDefault.name } + val formatFlow = formatSink + .map { + kotlin.runCatching { + BarcodeImageFormat.valueOf(it) + }.getOrDefault(formatDefault) + } + + val formatList = if (args.single) { + listOf(formatDefault) + } else { + listOf( + BarcodeImageFormat.QR_CODE, + BarcodeImageFormat.CODE_39, + BarcodeImageFormat.CODE_93, + BarcodeImageFormat.CODE_128, + BarcodeImageFormat.PDF_417, + ) + } + val formatActions = formatList + .map { format -> + FlatItemAction( + title = format.formatTitle(), + onClick = { + formatSink.value = format.name + }, + ) + } + formatFlow + .map { format -> + val request = BarcodeImageRequest( + format = format, + data = args.data, + ) + val state = BarcodeTypeState( + request = request, + format = BarcodeTypeState.Format( + format = format.formatTitle(), + options = formatActions, + ), + onClose = ::onClose, + ) + Loadable.Ok(state) + } +} + +private fun BarcodeImageFormat.formatTitle() = when (this) { + BarcodeImageFormat.AZTEC -> "Aztec 2D" + BarcodeImageFormat.CODABAR -> "CODABAR 1D" + BarcodeImageFormat.CODE_39 -> "Code 39 1D" + BarcodeImageFormat.CODE_93 -> "Code 93 1D" + BarcodeImageFormat.CODE_128 -> "Code 128 1D" + BarcodeImageFormat.DATA_MATRIX -> "Data Matrix 2D" + BarcodeImageFormat.EAN_8 -> "EAN-8 1D" + BarcodeImageFormat.EAN_13 -> "EAN-13 1D" + BarcodeImageFormat.ITF -> "ITF (Interleaved Two of Five) 1D" + BarcodeImageFormat.MAXICODE -> "MaxiCode 2D" + BarcodeImageFormat.PDF_417 -> "PDF417" + BarcodeImageFormat.QR_CODE -> "QR Code" + BarcodeImageFormat.RSS_14 -> "RSS 14" + BarcodeImageFormat.RSS_EXPANDED -> "RSS EXPANDED" + BarcodeImageFormat.UPC_A -> "UPC-A 1D" + BarcodeImageFormat.UPC_E -> "UPC-E 1D" + BarcodeImageFormat.UPC_EAN_EXTENSION -> "UPC/EAN extension format" +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/biometric/BiometricPromptEffect.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/biometric/BiometricPromptEffect.kt new file mode 100644 index 00000000..ce1bec13 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/biometric/BiometricPromptEffect.kt @@ -0,0 +1,10 @@ +package com.artemchep.keyguard.feature.biometric + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.model.PureBiometricAuthPrompt +import kotlinx.coroutines.flow.Flow + +@Composable +expect fun BiometricPromptEffect( + flow: Flow, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/changepassword/ChangePasswordRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/changepassword/ChangePasswordRoute.kt new file mode 100644 index 00000000..6b69321e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/changepassword/ChangePasswordRoute.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.changepassword + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.Route + +object ChangePasswordRoute : Route { + @Composable + override fun Content() { + ChangePasswordScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/changepassword/ChangePasswordScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/changepassword/ChangePasswordScreen.kt new file mode 100644 index 00000000..7d4b0618 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/changepassword/ChangePasswordScreen.kt @@ -0,0 +1,286 @@ +package com.artemchep.keyguard.feature.changepassword + +import androidx.compose.animation.Crossfade +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Info +import androidx.compose.material.icons.outlined.Save +import androidx.compose.material3.Checkbox +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.ExperimentalComposeUiApi +import androidx.compose.ui.Modifier +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.unit.dp +import arrow.core.partially1 +import com.artemchep.keyguard.common.model.fold +import com.artemchep.keyguard.feature.biometric.BiometricPromptEffect +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.AutofillButton +import com.artemchep.keyguard.ui.DefaultFab +import com.artemchep.keyguard.ui.FabState +import com.artemchep.keyguard.ui.FlatItemLayout +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.PasswordFlatTextField +import com.artemchep.keyguard.ui.ScaffoldColumn +import com.artemchep.keyguard.ui.skeleton.SkeletonCheckbox +import com.artemchep.keyguard.ui.skeleton.SkeletonText +import com.artemchep.keyguard.ui.skeleton.SkeletonTextField +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.toolbar.LargeToolbar +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun ChangePasswordScreen() { + val loadableState = changePasswordState() + loadableState.fold( + ifLoading = { + ChangePasswordSkeleton() + }, + ifOk = { state -> + ChangePasswordScreen( + state = state, + ) + }, + ) +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun ChangePasswordSkeleton() { + val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + ScaffoldColumn( + modifier = Modifier + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + LargeToolbar( + title = { + Text( + text = stringResource(Res.strings.changepassword_header_title), + ) + }, + navigationIcon = { + NavigationIcon() + }, + scrollBehavior = scrollBehavior, + ) + }, + ) { + SkeletonTextField( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = Dimens.horizontalPadding), + ) + Spacer(Modifier.height(8.dp)) + SkeletonTextField( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = Dimens.horizontalPadding), + ) + Spacer(Modifier.height(8.dp)) + FlatItemLayout( + leading = { + SkeletonCheckbox( + clickable = false, + ) + }, + content = { + SkeletonText( + modifier = Modifier + .fillMaxWidth(0.3f), + style = MaterialTheme.typography.bodyMedium, + ) + }, + enabled = true, + ) + Spacer( + modifier = Modifier + .height(32.dp), + ) + Spacer( + modifier = Modifier + .height(24.dp), + ) + Spacer( + modifier = Modifier + .height(16.dp), + ) + SkeletonText( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding) + .fillMaxWidth(), + style = MaterialTheme.typography.bodyMedium, + emphasis = MediumEmphasisAlpha, + ) + SkeletonText( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding) + .fillMaxWidth(), + style = MaterialTheme.typography.bodyMedium, + emphasis = MediumEmphasisAlpha, + ) + SkeletonText( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding) + .fillMaxWidth(0.6f), + style = MaterialTheme.typography.bodyMedium, + emphasis = MediumEmphasisAlpha, + ) + } +} + +@OptIn(ExperimentalMaterial3Api::class, ExperimentalComposeUiApi::class) +@Composable +fun ChangePasswordScreen( + state: ChangePasswordState, +) { + BiometricPromptEffect(state.sideEffects.showBiometricPromptFlow) + + val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + ScaffoldColumn( + modifier = Modifier + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + LargeToolbar( + title = { + Text( + text = stringResource(Res.strings.changepassword_header_title), + ) + }, + navigationIcon = { + NavigationIcon() + }, + scrollBehavior = scrollBehavior, + ) + }, + floatingActionState = run { + val fabOnClick = state.onConfirm + val fabState = if (fabOnClick != null) { + FabState( + onClick = fabOnClick, + model = null, + ) + } else { + null + } + rememberUpdatedState(newValue = fabState) + }, + floatingActionButton = { + DefaultFab( + icon = { + Crossfade( + targetState = state.isLoading, + ) { isLoading -> + if (isLoading) { + CircularProgressIndicator( + color = LocalContentColor.current, + ) + } else { + Icon( + imageVector = Icons.Outlined.Save, + contentDescription = null, + ) + } + } + }, + text = { + Text( + text = stringResource(Res.strings.changepassword_change_password_button), + ) + }, + ) + }, + ) { + PasswordFlatTextField( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + value = state.password.current, + label = stringResource(Res.strings.current_password), + ) + Spacer(Modifier.height(8.dp)) + PasswordFlatTextField( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + value = state.password.new, + label = stringResource(Res.strings.new_password), + trailing = { + AutofillButton( + key = "password", + password = true, + onValueChange = state.password.new.onChange, + ) + }, + ) + if (state.biometric != null) { + Spacer(Modifier.height(8.dp)) + FlatItemLayout( + leading = { + Checkbox( + enabled = state.biometric.onChange != null, + checked = state.biometric.checked, + onCheckedChange = { + state.biometric.onChange?.invoke(it) + }, + ) + }, + content = { + Text( + text = stringResource(Res.strings.changepassword_biometric_auth_checkbox), + style = MaterialTheme.typography.bodyMedium, + ) + }, + onClick = state.biometric.onChange?.partially1(!state.biometric.checked), + ) + } + Spacer( + modifier = Modifier + .height(32.dp), + ) + Icon( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + imageVector = Icons.Outlined.Info, + contentDescription = null, + tint = LocalContentColor.current + .combineAlpha(alpha = MediumEmphasisAlpha), + ) + Spacer( + modifier = Modifier + .height(16.dp), + ) + Text( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + text = stringResource(Res.strings.changepassword_disclaimer_local_note), + style = MaterialTheme.typography.bodyMedium, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + ) + Spacer( + modifier = Modifier + .height(16.dp), + ) + Text( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + text = stringResource(Res.strings.changepassword_disclaimer_abuse_note), + style = MaterialTheme.typography.bodyMedium, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/changepassword/ChangePasswordState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/changepassword/ChangePasswordState.kt new file mode 100644 index 00000000..a766cfb5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/changepassword/ChangePasswordState.kt @@ -0,0 +1,42 @@ +package com.artemchep.keyguard.feature.changepassword + +import androidx.compose.runtime.Immutable +import arrow.optics.optics +import com.artemchep.keyguard.common.model.BiometricAuthPrompt +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.emptyFlow + +data class ChangePasswordState( + val sideEffects: SideEffects = SideEffects(), + val password: Password, + val biometric: Biometric?, + val isLoading: Boolean = false, + val onConfirm: (() -> Unit)? = null, +) { + @Immutable + @optics + data class Password( + val current: TextFieldModel2, + val new: TextFieldModel2, + ) { + companion object + } + + @Immutable + @optics + data class Biometric( + val checked: Boolean = false, + val onChange: ((Boolean) -> Unit)? = null, + ) { + companion object + } + + @Immutable + @optics + data class SideEffects( + val showBiometricPromptFlow: Flow = emptyFlow(), + ) { + companion object + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/changepassword/ChangePasswordStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/changepassword/ChangePasswordStateProducer.kt new file mode 100644 index 00000000..d73b2075 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/changepassword/ChangePasswordStateProducer.kt @@ -0,0 +1,215 @@ +package com.artemchep.keyguard.feature.changepassword + +import androidx.compose.runtime.Composable +import arrow.core.identity +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.effectTap +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.model.BiometricAuthPrompt +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.ToastMessage +import com.artemchep.keyguard.common.model.VaultState +import com.artemchep.keyguard.common.usecase.UnlockUseCase +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.common.util.flow.EventFlow +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import com.artemchep.keyguard.feature.auth.common.util.validatedPassword +import com.artemchep.keyguard.feature.localization.TextHolder +import com.artemchep.keyguard.feature.navigation.state.RememberStateFlowScope +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.res.Res +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.map +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +private const val KEY_PASSWORD_OLD = "password.old" +private const val KEY_PASSWORD_NEW = "password.new" + +private const val KEY_BIOMETRIC_ENABLED = "biometric.enabled" + +@Composable +fun changePasswordState(): Loadable = with(localDI().direct) { + changePasswordState( + unlockUseCase = instance(), + windowCoroutineScope = instance(), + ) +} + +@Composable +fun changePasswordState( + unlockUseCase: UnlockUseCase, + windowCoroutineScope: WindowCoroutineScope, +): Loadable = produceScreenState( + key = "change_password", + initial = Loadable.Loading, + args = arrayOf( + unlockUseCase, + ), +) { + val biometricPromptSink = EventFlow() + + val passwordOldSink = mutablePersistedFlow(KEY_PASSWORD_OLD) { "" } + val passwordOldState = mutableComposeState(passwordOldSink) + + val passwordNewSink = mutablePersistedFlow(KEY_PASSWORD_NEW) { "" } + val passwordNewState = mutableComposeState(passwordNewSink) + + val fn = unlockUseCase() + .map { vaultState -> + when (vaultState) { + is VaultState.Main -> ah( + state = vaultState, + biometricPromptSink = biometricPromptSink, + windowCoroutineScope = windowCoroutineScope, + ) + + else -> null + } + } + + val biometricAvailableFlow = fn + .map { it?.changePasswordWithBiometric != null } + .distinctUntilChanged() + val biometricWasEnabled = true + val biometricEnabledSink = mutablePersistedFlow(KEY_BIOMETRIC_ENABLED) { + biometricWasEnabled + } + + val validatedPasswordFlow = passwordOldSink + .validatedPassword(this) + val validatedPasswordNewFlow = passwordNewSink + .validatedPassword(this) + + val passwordFlow = combine( + validatedPasswordFlow, + validatedPasswordNewFlow, + ) { + validatedPassword, + validatedPasswordNew, + -> + ChangePasswordState.Password( + current = TextFieldModel2.of( + state = passwordOldState, + validated = validatedPassword, + ), + new = TextFieldModel2.of( + state = passwordNewState, + validated = validatedPasswordNew, + ), + ) + } + + val biometricFlow = biometricAvailableFlow + .flatMapLatest { available -> + if (available) { + biometricEnabledSink + .map { enabled -> + ChangePasswordState.Biometric( + checked = enabled, + onChange = biometricEnabledSink::value::set, + ) + } + } else { + flowOf(null) + } + } + + combine( + passwordFlow, + biometricFlow, + fn, + ) { password, biometric, f -> + val isValid = password.current.error == null && + password.current.text.isNotEmpty() && + password.new.error == null && + password.new.text.isNotEmpty() + val onConfirm = if (isValid && f != null) { + if (biometric?.checked == true) { + f.changePasswordWithBiometric + } else { + f.changePassword + } + ?.partially1(password.current.text) + ?.partially1(password.new.text) + } else { + null + } + val state = ChangePasswordState( + sideEffects = ChangePasswordState.SideEffects( + showBiometricPromptFlow = biometricPromptSink, + ), + password = password, + biometric = biometric, + onConfirm = onConfirm, + ) + Loadable.Ok(state) + } +} + +private fun RememberStateFlowScope.ah( + state: VaultState.Main, + biometricPromptSink: EventFlow, + windowCoroutineScope: WindowCoroutineScope, +) = Fn( + changePassword = { currentPassword, newPassword -> + val io = state.changePassword.withMasterPassword + .getCreateIo(currentPassword, newPassword) + .effectTap { + val msg = ToastMessage( + title = "Changed the password", + type = ToastMessage.Type.SUCCESS, + ) + message(msg) + } + io.launchIn(windowCoroutineScope) + }, + changePasswordWithBiometric = if (state.changePassword.withMasterPasswordAndBiometric != null) { + lambda@{ currentPassword, newPassword -> + val cipher = state.changePassword.withMasterPasswordAndBiometric.getCipher() + .fold( + ifLeft = { e -> + message(e) + return@lambda + }, + ifRight = ::identity, + ) + val prompt = BiometricAuthPrompt( + title = TextHolder.Res(Res.strings.changepassword_biometric_auth_confirm_title), + cipher = cipher, + onComplete = { result -> + result.fold( + ifLeft = { e -> + message(e) + }, + ifRight = { + val io = state + .changePassword.withMasterPasswordAndBiometric + .getCreateIo(currentPassword, newPassword) + .effectTap { + val msg = ToastMessage( + title = "Changed the password", + type = ToastMessage.Type.SUCCESS, + ) + message(msg) + } + io.launchIn(windowCoroutineScope) + }, + ) + }, + ) + biometricPromptSink.emit(prompt) + } + } else { + null + }, +) + +private data class Fn( + val changePassword: (String, String) -> Unit, + val changePasswordWithBiometric: ((String, String) -> Unit)?, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/colorpicker/ColorPickerResult.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/colorpicker/ColorPickerResult.kt new file mode 100644 index 00000000..43723827 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/colorpicker/ColorPickerResult.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.colorpicker + +import androidx.compose.ui.graphics.Color + +sealed interface ColorPickerResult { + data object Deny : ColorPickerResult + + data class Confirm( + val color: Color, + ) : ColorPickerResult +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/colorpicker/ColorPickerRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/colorpicker/ColorPickerRoute.kt new file mode 100644 index 00000000..ca5caa05 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/colorpicker/ColorPickerRoute.kt @@ -0,0 +1,44 @@ +package com.artemchep.keyguard.feature.colorpicker + +import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.Color +import com.artemchep.keyguard.feature.navigation.DialogRouteForResult +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.RouteResultTransmitter +import com.artemchep.keyguard.feature.navigation.registerRouteResultReceiver +import com.artemchep.keyguard.feature.navigation.state.RememberStateFlowScope + +data class ColorPickerRoute( + val args: Args, +) : DialogRouteForResult { + data class Args( + val color: Color? = null, + ) + + @Composable + override fun Content( + transmitter: RouteResultTransmitter, + ) { + ColorPickerScreen( + args = args, + transmitter = transmitter, + ) + } +} + +inline fun RememberStateFlowScope.createColorPickerDialogIntent( + args: ColorPickerRoute.Args, + noinline onSuccess: (Color) -> Unit, +): NavigationIntent { + val route = registerRouteResultReceiver( + route = ColorPickerRoute( + args = args, + ), + ) { result -> + if (result is ColorPickerResult.Confirm) { + val arg = result.color + onSuccess(arg) + } + } + return NavigationIntent.NavigateToRoute(route) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/colorpicker/ColorPickerScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/colorpicker/ColorPickerScreen.kt new file mode 100644 index 00000000..cd79a660 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/colorpicker/ColorPickerScreen.kt @@ -0,0 +1,166 @@ +package com.artemchep.keyguard.feature.colorpicker + +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.sizeIn +import androidx.compose.foundation.lazy.LazyRow +import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.foundation.lazy.rememberLazyListState +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Check +import androidx.compose.material.icons.outlined.ColorLens +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.luminance +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.getOrNull +import com.artemchep.keyguard.feature.dialog.Dialog +import com.artemchep.keyguard.feature.navigation.RouteResultTransmitter +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.theme.isDark +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun ColorPickerScreen( + args: ColorPickerRoute.Args, + transmitter: RouteResultTransmitter, +) { + val loadableState = produceColorPickerState( + args = args, + transmitter = transmitter, + ) + Dialog( + icon = icon(Icons.Outlined.ColorLens), + title = { + Text(stringResource(Res.strings.colorpicker_title)) + }, + content = { + Column { + val state = loadableState.getOrNull() + ?: return@Column + Content( + state = state, + ) + } + }, + contentScrollable = false, + actions = { + val state = loadableState.getOrNull() + + val updatedOnClose by rememberUpdatedState(state?.onDeny) + val updatedOnOk by rememberUpdatedState(state?.onConfirm) + TextButton( + enabled = updatedOnClose != null, + onClick = { + updatedOnClose?.invoke() + }, + ) { + Text(stringResource(Res.strings.close)) + } + TextButton( + enabled = updatedOnOk != null, + onClick = { + updatedOnOk?.invoke() + }, + ) { + Text(stringResource(Res.strings.ok)) + } + }, + ) +} + +@Composable +private fun ColumnScope.Content( + state: ColorPickerState, +) { + val listState = rememberLazyListState() + LazyRow( + modifier = Modifier + .fillMaxWidth(), + state = listState, + ) { + itemsIndexed(state.content.items) { index, item -> + val backgroundColor = if (MaterialTheme.colorScheme.isDark) { + item.color.dark + } else { + item.color.light + } + val isSelected = state.content.index == index + ColorItem( + modifier = Modifier + .sizeIn( + minWidth = 16.dp, + minHeight = 64.dp, + ), + selected = isSelected, + backgroundColor = backgroundColor, + onClick = item.onClick, + ) + } + } + + LaunchedEffect(Unit) { + val index = state.content.index + ?: return@LaunchedEffect + val finalIndex = index.minus(4).coerceAtLeast(0) + listState.scrollToItem(finalIndex) + } +} + +@Composable +private fun ColorItem( + modifier: Modifier = Modifier, + selected: Boolean, + backgroundColor: Color, + onClick: () -> Unit, +) { + val updatedOnClick by rememberUpdatedState(onClick) + Box( + modifier = modifier + .background(color = backgroundColor) + .clickable { + updatedOnClick.invoke() + }, + ) { + androidx.compose.animation.AnimatedVisibility( + modifier = Modifier + .align(Alignment.Center), + visible = selected, + ) { + val contentColor = + if (backgroundColor.luminance() > 0.5f) Color.Black else Color.White + Box( + modifier = Modifier + .padding(16.dp) + .background( + color = contentColor + .combineAlpha(alpha = 0.09f), + shape = CircleShape, + ), + ) { + Icon( + Icons.Outlined.Check, + contentDescription = null, + tint = contentColor, + ) + } + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/colorpicker/ColorPickerState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/colorpicker/ColorPickerState.kt new file mode 100644 index 00000000..91916649 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/colorpicker/ColorPickerState.kt @@ -0,0 +1,25 @@ +package com.artemchep.keyguard.feature.colorpicker + +import androidx.compose.runtime.Immutable +import com.artemchep.keyguard.ui.icons.AccentColors +import kotlinx.collections.immutable.ImmutableList + +@Immutable +data class ColorPickerState( + val content: Content, + val onDeny: (() -> Unit)? = null, + val onConfirm: (() -> Unit)? = null, +) { + @Immutable + data class Content( + val index: Int?, + val items: ImmutableList, + ) + + @Immutable + data class Item( + val key: Int, + val color: AccentColors, + val onClick: () -> Unit, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/colorpicker/ColorPickerStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/colorpicker/ColorPickerStateProducer.kt new file mode 100644 index 00000000..06d83820 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/colorpicker/ColorPickerStateProducer.kt @@ -0,0 +1,78 @@ +package com.artemchep.keyguard.feature.colorpicker + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.util.hue +import com.artemchep.keyguard.feature.navigation.RouteResultTransmitter +import com.artemchep.keyguard.feature.navigation.state.navigatePopSelf +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.ui.icons.generateAccentColors +import kotlinx.collections.immutable.toPersistentList +import kotlinx.coroutines.flow.map + +@Composable +fun produceColorPickerState( + args: ColorPickerRoute.Args, + transmitter: RouteResultTransmitter, +): Loadable = produceScreenState( + key = "color_picker", + initial = Loadable.Loading, + args = arrayOf(), +) { + // Give a user a bunch of different colors + // to choose from. This should be enough for + // most of the users. + val length = 64 + + val indexSink = mutablePersistedFlow("index") { + val color = args.color + ?: return@mutablePersistedFlow -1 + val hue = color.hue() + val index = hue / 360f * length + index.toInt() + .rem(length) + } + + val hues = 0 until length + val items = hues + .asSequence() + .map { index -> + val hue = 360f * index.toFloat() / length.toFloat() + generateAccentColors(hue = hue) + } + .mapIndexed { index, colors -> + ColorPickerState.Item( + key = index, + color = colors, + onClick = { + indexSink.value = index + }, + ) + } + .toPersistentList() + + indexSink + .map { index -> + val content = ColorPickerState.Content( + index = index.takeIf { it >= 0 }, + items = items, + ) + val state = ColorPickerState( + content = content, + onDeny = { + transmitter(ColorPickerResult.Deny) + navigatePopSelf() + }, + onConfirm = { + val item = items.getOrNull(index) + ?: return@ColorPickerState + val result = ColorPickerResult.Confirm( + color = item.color.dark, + ) + transmitter(result) + navigatePopSelf() + }, + ) + Loadable.Ok(state) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/ConfirmationResult.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/ConfirmationResult.kt new file mode 100644 index 00000000..31a79cf7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/ConfirmationResult.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.feature.confirmation + +sealed interface ConfirmationResult { + data object Deny : ConfirmationResult + + data class Confirm( + val data: Map, + ) : ConfirmationResult +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/ConfirmationRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/ConfirmationRoute.kt new file mode 100644 index 00000000..466357b8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/ConfirmationRoute.kt @@ -0,0 +1,132 @@ +package com.artemchep.keyguard.feature.confirmation + +import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.vector.ImageVector +import com.artemchep.keyguard.feature.navigation.DialogRouteForResult +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.RouteResultTransmitter +import com.artemchep.keyguard.feature.navigation.registerRouteResultReceiver +import com.artemchep.keyguard.feature.navigation.state.RememberStateFlowScope + +class ConfirmationRoute( + val args: Args, +) : DialogRouteForResult { + data class Args( + val icon: (@Composable () -> Unit)? = null, + val title: String? = null, + val subtitle: String? = null, + val message: String? = null, + val items: List> = emptyList(), + val docUrl: String? = null, + ) { + sealed interface Item { + val key: String + val value: T + + data class BooleanItem( + override val key: String, + override val value: Boolean = false, + val title: String, + ) : Item + + data class StringItem( + override val key: String, + override val value: String = "", + val title: String, + val hint: String? = null, + val type: Type = Type.Text, + /** + * `true` if the empty value is a valid + * value, `false` otherwise. + */ + val canBeEmpty: Boolean = true, + ) : Item { + enum class Type { + Text, + Token, + Password, + Username, + } + } + + data class EnumItem( + override val key: String, + override val value: String = "", + val items: List, + val docs: Map = emptyMap(), + ) : Item { + data class Item( + val key: String, + val icon: ImageVector? = null, + val title: String, + val text: String? = null, + ) + + data class Doc( + val text: String, + val url: String? = null, + ) + } + } + } + + @Composable + override fun Content( + transmitter: RouteResultTransmitter, + ) { + ConfirmationScreen( + args = args, + transmitter = transmitter, + ) + } +} + +fun RememberStateFlowScope.createConfirmationDialogIntent( + icon: (@Composable () -> Unit)? = null, + title: String? = null, + message: String? = null, + onSuccess: () -> Unit, +): NavigationIntent { + val route = registerRouteResultReceiver( + route = ConfirmationRoute( + args = ConfirmationRoute.Args( + icon = icon, + title = title, + message = message, + ), + ), + ) { result -> + if (result is ConfirmationResult.Confirm) { + onSuccess() + } + } + return NavigationIntent.NavigateToRoute(route) +} + +inline fun RememberStateFlowScope.createConfirmationDialogIntent( + item: ConfirmationRoute.Args.Item, + noinline icon: (@Composable () -> Unit)? = null, + title: String? = null, + message: String? = null, + noinline onSuccess: (T) -> Unit, +): NavigationIntent { + val route = registerRouteResultReceiver( + route = ConfirmationRoute( + args = ConfirmationRoute.Args( + icon = icon, + title = title, + message = message, + items = listOf(item), + ), + ), + ) { result -> + if (result is ConfirmationResult.Confirm) { + val arg = result.data[item.key] + if (arg !is T) { + return@registerRouteResultReceiver + } + onSuccess(arg) + } + } + return NavigationIntent.NavigateToRoute(route) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/ConfirmationScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/ConfirmationScreen.kt new file mode 100644 index 00000000..f49c4545 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/ConfirmationScreen.kt @@ -0,0 +1,397 @@ +package com.artemchep.keyguard.feature.confirmation + +import androidx.compose.animation.animateContentSize +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.FlowRow +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Info +import androidx.compose.material3.Checkbox +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.LocalTextStyle +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.key +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.input.KeyboardType +import androidx.compose.ui.text.input.PasswordVisualTransformation +import androidx.compose.ui.text.input.VisualTransformation +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.getOrNull +import com.artemchep.keyguard.feature.auth.common.VisibilityState +import com.artemchep.keyguard.feature.auth.common.VisibilityToggle +import com.artemchep.keyguard.feature.dialog.Dialog +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.RouteResultTransmitter +import com.artemchep.keyguard.feature.search.filter.component.FilterItemComposable +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.AutofillButton +import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +import com.artemchep.keyguard.ui.ExpandedIfNotEmptyForRow +import com.artemchep.keyguard.ui.FlatItemLayout +import com.artemchep.keyguard.ui.FlatTextField +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.PasswordStrengthBadge +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.theme.monoFontFamily +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun ConfirmationScreen( + args: ConfirmationRoute.Args, + transmitter: RouteResultTransmitter, +) { + val state = confirmationState( + args = args, + transmitter = transmitter, + ) + val showContent = args.message != null || args.items.isNotEmpty() + Dialog( + icon = args.icon, + title = if (args.title != null) { + // composable + { + Text( + text = args.title, + ) + if (args.subtitle != null) { + Text( + text = args.subtitle, + style = MaterialTheme.typography.titleSmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + ) + } + } + } else { + null + }, + content = if (showContent) { + // composable + { + Column { + val items = state.items.getOrNull().orEmpty() + if (args.message != null) { + Text( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + text = args.message, + ) + if (items.isNotEmpty()) { + Spacer(modifier = Modifier.height(16.dp)) + } + } + + Column( + verticalArrangement = Arrangement.spacedBy(8.dp), + ) { + items.forEach { item -> + key(item.key) { + ConfirmationItem( + item = item, + ) + } + } + } + + if (state.items is Loadable.Loading) { + CircularProgressIndicator( + modifier = Modifier + .align(Alignment.CenterHorizontally) + .padding(16.dp), + ) + } + } + } + } else { + null + }, + actions = { + if (args.docUrl != null) { + val updatedNavigationController by rememberUpdatedState(LocalNavigationController.current) + val updatedDocUrl by rememberUpdatedState(args.docUrl) + TextButton( + modifier = Modifier, + onClick = { + val intent = NavigationIntent.NavigateToBrowser(updatedDocUrl) + updatedNavigationController.queue(intent) + }, + ) { + Text( + text = stringResource(Res.strings.uri_action_launch_docs_title), + ) + } + Spacer( + modifier = Modifier + .weight(1f), + ) + } + + val updatedOnDeny by rememberUpdatedState(state.onDeny) + val updatedOnConfirm by rememberUpdatedState(state.onConfirm) + TextButton( + enabled = state.onDeny != null, + onClick = { + updatedOnDeny?.invoke() + }, + ) { + Text(stringResource(Res.strings.cancel)) + } + TextButton( + enabled = state.onConfirm != null, + onClick = { + updatedOnConfirm?.invoke() + }, + ) { + Text(stringResource(Res.strings.ok)) + } + }, + ) +} + +@Composable +private fun ConfirmationItem( + modifier: Modifier = Modifier, + item: ConfirmationState.Item, +) = when (item) { + is ConfirmationState.Item.BooleanItem -> ConfirmationBooleanItem( + modifier = modifier, + item = item, + ) + + is ConfirmationState.Item.StringItem -> ConfirmationStringItem( + modifier = modifier, + item = item, + ) + + is ConfirmationState.Item.EnumItem -> ConfirmationEnumItem( + modifier = modifier, + item = item, + ) +} + +@Composable +private fun ConfirmationBooleanItem( + modifier: Modifier = Modifier, + item: ConfirmationState.Item.BooleanItem, +) { + FlatItemLayout( + modifier = modifier, + leading = { + Checkbox( + checked = item.value, + onCheckedChange = null, + ) + }, + content = { + Text( + text = item.title, + style = MaterialTheme.typography.bodyMedium, + ) + }, + onClick = { + val newValue = !item.value + item.onChange.invoke(newValue) + }, + ) +} + +@Composable +private fun ConfirmationStringItem( + modifier: Modifier = Modifier, + item: ConfirmationState.Item.StringItem, +) { + val visibilityState = remember(item.sensitive) { + VisibilityState( + isVisible = !item.sensitive, + ) + } + FlatTextField( + modifier = modifier + .padding(horizontal = Dimens.horizontalPadding), + label = item.title, + value = item.state, + textStyle = when { + item.monospace -> + TextStyle( + fontFamily = monoFontFamily, + ) + + else -> LocalTextStyle.current + }, + visualTransformation = if (visibilityState.isVisible) { + VisualTransformation.None + } else { + PasswordVisualTransformation() + }, + keyboardOptions = when { + item.password -> + KeyboardOptions( + autoCorrect = false, + keyboardType = KeyboardType.Password, + ) + + else -> KeyboardOptions.Default + }, + singleLine = true, + maxLines = 1, + trailing = { + ExpandedIfNotEmptyForRow( + Unit.takeIf { item.sensitive }, + ) { + VisibilityToggle( + visibilityState = visibilityState, + ) + } + ExpandedIfNotEmptyForRow( + item.generator, + ) { generator -> + val key = when (generator) { + ConfirmationState.Item.StringItem.Generator.Username -> "username" + ConfirmationState.Item.StringItem.Generator.Password -> "password" + } + AutofillButton( + key = key, + username = generator == ConfirmationState.Item.StringItem.Generator.Username, + password = generator == ConfirmationState.Item.StringItem.Generator.Password, + onValueChange = item.state.onChange, + ) + } + }, + content = { + ExpandedIfNotEmpty( + valueOrNull = Unit + .takeIf { + item.value.isNotEmpty() && + item.password && + item.state.error == null + }, + ) { + PasswordStrengthBadge( + modifier = Modifier + .padding( + top = 8.dp, + bottom = 8.dp, + ), + password = item.value, + ) + } + }, + ) +} + +@OptIn(ExperimentalLayoutApi::class) +@Composable +private fun ConfirmationEnumItem( + modifier: Modifier = Modifier, + item: ConfirmationState.Item.EnumItem, +) { + Column( + modifier = modifier, + ) { + FlowRow( + modifier = Modifier + .padding(horizontal = 8.dp), + horizontalArrangement = Arrangement.spacedBy(8.dp), + verticalArrangement = Arrangement.spacedBy(8.dp), + ) { + item.items.forEach { item -> + key(item.key) { + ConfirmationEnumItemItem( + modifier = Modifier, + item = item, + ) + } + } + } + ExpandedIfNotEmpty( + valueOrNull = item.doc, + ) { doc -> + Column { + Spacer( + modifier = Modifier + .height(32.dp), + ) + Icon( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + imageVector = Icons.Outlined.Info, + contentDescription = null, + tint = LocalContentColor.current.combineAlpha(alpha = MediumEmphasisAlpha), + ) + Spacer( + modifier = Modifier + .height(16.dp), + ) + Text( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding) + .animateContentSize(), + text = doc.text, + style = MaterialTheme.typography.bodySmall, + color = LocalContentColor.current.combineAlpha(alpha = MediumEmphasisAlpha), + ) + Spacer( + modifier = Modifier + .height(16.dp), + ) + val updatedOnLearnMore by rememberUpdatedState(doc.onLearnMore) + TextButton( + modifier = Modifier + .padding(horizontal = 4.dp), + enabled = updatedOnLearnMore != null, + onClick = { + updatedOnLearnMore?.invoke() + }, + ) { + Text( + text = stringResource(Res.strings.learn_more), + ) + } + } + } + } +} + +@Composable +private fun ConfirmationEnumItemItem( + modifier: Modifier = Modifier, + item: ConfirmationState.Item.EnumItem.Item, +) { + FilterItemComposable( + modifier = modifier, + checked = item.selected, + leading = + if (item.icon != null) { + // composable + { + Icon( + item.icon, + null, + ) + } + } else { + null + }, + title = item.title, + text = item.text, + onClick = item.onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/ConfirmationState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/ConfirmationState.kt new file mode 100644 index 00000000..70fe2a76 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/ConfirmationState.kt @@ -0,0 +1,70 @@ +package com.artemchep.keyguard.feature.confirmation + +import androidx.compose.ui.graphics.vector.ImageVector +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 + +data class ConfirmationState( + val items: Loadable> = Loadable.Loading, + val onDeny: (() -> Unit)? = null, + val onConfirm: (() -> Unit)? = null, +) { + sealed interface Item { + val key: String + val value: Any? + val valid: Boolean + + data class BooleanItem( + override val key: String, + override val value: Boolean, + val title: String, + val onChange: (Boolean) -> Unit, + ) : Item { + override val valid: Boolean + get() = true + } + + data class StringItem( + override val key: String, + override val value: String, + val state: TextFieldModel2, + val title: String, + val sensitive: Boolean, + val monospace: Boolean, + val password: Boolean, + val generator: Generator?, + ) : Item { + override val valid: Boolean + get() = state.error == null + + enum class Generator { + Username, + Password, + } + } + + data class EnumItem( + override val key: String, + override val value: String, + val items: List, + val doc: Doc? = null, + ) : Item { + override val valid: Boolean + get() = value.isNotEmpty() + + data class Item( + val key: String, + val icon: ImageVector? = null, + val title: String, + val text: String? = null, + val selected: Boolean, + val onClick: (() -> Unit)? = null, + ) + + data class Doc( + val text: String, + val onLearnMore: (() -> Unit)?, + ) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/ConfirmationStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/ConfirmationStateProducer.kt new file mode 100644 index 00000000..6a6058d7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/ConfirmationStateProducer.kt @@ -0,0 +1,173 @@ +package com.artemchep.keyguard.feature.confirmation + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.common.util.flow.combineToList +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.RouteResultTransmitter +import com.artemchep.keyguard.feature.navigation.state.navigatePopSelf +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.res.Res +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.map +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +@Composable +fun confirmationState( + args: ConfirmationRoute.Args, + transmitter: RouteResultTransmitter, +): ConfirmationState = with(localDI().direct) { + confirmationState( + args = args, + transmitter = transmitter, + windowCoroutineScope = instance(), + ) +} + +@Composable +fun confirmationState( + args: ConfirmationRoute.Args, + transmitter: RouteResultTransmitter, + windowCoroutineScope: WindowCoroutineScope, +): ConfirmationState = produceScreenState( + key = "confirmation", + initial = ConfirmationState( + items = if (args.items.isEmpty()) Loadable.Ok(emptyList()) else Loadable.Loading, + ), + args = arrayOf( + windowCoroutineScope, + ), +) { + fun createItemKey(key: String) = "item.$key" + + val itemsFlow = args.items + .map { item -> + val sink = mutablePersistedFlow(createItemKey(item.key)) { + item.value + } + val state = when (item) { + is ConfirmationRoute.Args.Item.BooleanItem -> null + is ConfirmationRoute.Args.Item.StringItem -> + mutableComposeState(sink as MutableStateFlow) + + is ConfirmationRoute.Args.Item.EnumItem -> null + } + sink + .map { value -> + when (item) { + is ConfirmationRoute.Args.Item.BooleanItem -> ConfirmationState.Item.BooleanItem( + key = item.key, + title = item.title, + value = value as Boolean, + onChange = sink::value::set, + ) + + is ConfirmationRoute.Args.Item.StringItem -> { + val fixed = value as String + val error = if (item.canBeEmpty || fixed.isNotBlank()) { + null + } else { + translate(Res.strings.error_must_not_be_blank) + } + val sensitive = + item.type == ConfirmationRoute.Args.Item.StringItem.Type.Password || + item.type == ConfirmationRoute.Args.Item.StringItem.Type.Token + val monospace = + item.type == ConfirmationRoute.Args.Item.StringItem.Type.Password || + item.type == ConfirmationRoute.Args.Item.StringItem.Type.Token + val password = + item.type == ConfirmationRoute.Args.Item.StringItem.Type.Password + val generator = when (item.type) { + ConfirmationRoute.Args.Item.StringItem.Type.Username -> ConfirmationState.Item.StringItem.Generator.Username + ConfirmationRoute.Args.Item.StringItem.Type.Password -> ConfirmationState.Item.StringItem.Generator.Password + ConfirmationRoute.Args.Item.StringItem.Type.Token, + ConfirmationRoute.Args.Item.StringItem.Type.Text, + -> null + } + requireNotNull(state) + val model = TextFieldModel2( + state = state, + text = fixed, + hint = item.hint, + error = error, + onChange = state::value::set, + ) + ConfirmationState.Item.StringItem( + key = item.key, + title = item.title, + sensitive = sensitive, + monospace = monospace, + password = password, + generator = generator, + value = fixed, + state = model, + ) + } + + is ConfirmationRoute.Args.Item.EnumItem -> { + val fixed = value as String + ConfirmationState.Item.EnumItem( + key = item.key, + value = fixed, + items = item.items + .map { el -> + ConfirmationState.Item.EnumItem.Item( + key = el.key, + title = el.title, + text = el.text, + selected = el.key == fixed, + onClick = { + sink.value = el.key + }, + ) + }, + doc = item.docs[fixed] + ?.let { doc -> + ConfirmationState.Item.EnumItem.Doc( + text = doc.text, + onLearnMore = if (doc.url != null) { + // lambda + { + val intent = + NavigationIntent.NavigateToBrowser(doc.url) + navigate(intent) + } + } else { + null + }, + ) + }, + ) + } + } + } + } + .combineToList() + itemsFlow + .map { items -> + val valid = items.all { it.valid } + ConfirmationState( + items = Loadable.Ok(items), + onDeny = { + transmitter(ConfirmationResult.Deny) + navigatePopSelf() + }, + onConfirm = if (valid) { + // lambda + { + val data = items + .associate { it.key to it.value } + val result = ConfirmationResult.Confirm(data) + transmitter(result) + navigatePopSelf() + } + } else { + null + }, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/elevatedaccess/ElevatedAccessResult.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/elevatedaccess/ElevatedAccessResult.kt new file mode 100644 index 00000000..06936c58 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/elevatedaccess/ElevatedAccessResult.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.feature.confirmation.elevatedaccess + +sealed interface ElevatedAccessResult { + data object Deny : ElevatedAccessResult + + data object Allow : ElevatedAccessResult +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/elevatedaccess/ElevatedAccessRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/elevatedaccess/ElevatedAccessRoute.kt new file mode 100644 index 00000000..3acb31cb --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/elevatedaccess/ElevatedAccessRoute.kt @@ -0,0 +1,33 @@ +package com.artemchep.keyguard.feature.confirmation.elevatedaccess + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.DialogRouteForResult +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.RouteResultTransmitter +import com.artemchep.keyguard.feature.navigation.registerRouteResultReceiver +import com.artemchep.keyguard.feature.navigation.state.RememberStateFlowScope + +class ElevatedAccessRoute( +) : DialogRouteForResult { + @Composable + override fun Content( + transmitter: RouteResultTransmitter, + ) { + ElevatedAccessScreen( + transmitter = transmitter, + ) + } +} + +fun RememberStateFlowScope.createElevatedAccessDialogIntent( + onSuccess: () -> Unit, +): NavigationIntent { + val route = registerRouteResultReceiver( + route = ElevatedAccessRoute(), + ) { result -> + if (result is ElevatedAccessResult.Allow) { + onSuccess() + } + } + return NavigationIntent.NavigateToRoute(route) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/elevatedaccess/ElevatedAccessScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/elevatedaccess/ElevatedAccessScreen.kt new file mode 100644 index 00000000..e21fb360 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/elevatedaccess/ElevatedAccessScreen.kt @@ -0,0 +1,211 @@ +package com.artemchep.keyguard.feature.confirmation.elevatedaccess + +import androidx.compose.foundation.BorderStroke +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.text.KeyboardActionScope +import androidx.compose.foundation.text.KeyboardActions +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Fingerprint +import androidx.compose.material.icons.outlined.Security +import androidx.compose.material3.Icon +import androidx.compose.material3.OutlinedButton +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.testTag +import androidx.compose.ui.text.input.ImeAction +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.feature.biometric.BiometricPromptEffect +import com.artemchep.keyguard.feature.dialog.Dialog +import com.artemchep.keyguard.feature.navigation.RouteResultTransmitter +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +import com.artemchep.keyguard.ui.PasswordFlatTextField +import com.artemchep.keyguard.ui.focus.FocusRequester2 +import com.artemchep.keyguard.ui.focus.focusRequester2 +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.skeleton.SkeletonText +import com.artemchep.keyguard.ui.skeleton.SkeletonTextField +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.util.DividerColor +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.delay + +@Composable +fun ElevatedAccessScreen( + transmitter: RouteResultTransmitter, +) { + val state = produceElevatedAccessState( + transmitter = transmitter, + ) + val content = state.content + // If we have a content ready, subscribe to biometric + // prompt effects. + if (content is Loadable.Ok) { + BiometricPromptEffect(content.value.sideEffects.showBiometricPromptFlow) + } + + Dialog( + icon = icon(Icons.Outlined.Security), + title = { + Text(stringResource(Res.strings.elevatedaccess_header_title)) + }, + content = { + Column( + modifier = Modifier, + ) { + when (content) { + is Loadable.Loading -> { + ElevatedAccessSkeleton() + } + + is Loadable.Ok -> { + ElevatedAccessContent( + content = content.value, + onConfirm = state.onConfirm, + ) + } + } + } + }, + actions = { + val updatedOnDeny by rememberUpdatedState(state.onDeny) + val updatedOnConfirm by rememberUpdatedState(state.onConfirm) + TextButton( + modifier = Modifier + .testTag("btn:close"), + enabled = state.onDeny != null, + onClick = { + updatedOnDeny?.invoke() + }, + ) { + Text(stringResource(Res.strings.close)) + } + TextButton( + modifier = Modifier + .testTag("btn:go"), + enabled = state.onConfirm != null, + onClick = { + updatedOnConfirm?.invoke() + }, + ) { + Text(stringResource(Res.strings.ok)) + } + }, + ) +} + +@Composable +private fun ColumnScope.ElevatedAccessSkeleton() { + SkeletonText( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding) + .fillMaxWidth(0.8f), + ) + SkeletonText( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding) + .fillMaxWidth(0.6f), + ) + Spacer(modifier = Modifier.height(16.dp)) + SkeletonTextField( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding) + .fillMaxWidth(), + ) +} + +@Composable +private fun ColumnScope.ElevatedAccessContent( + content: ElevatedAccessState.Content, + onConfirm: (() -> Unit)?, +) { + val requester = remember { + FocusRequester2() + } + + val keyboardOnGo: (KeyboardActionScope.() -> Unit)? = + if (onConfirm != null) { + // lambda + { + onConfirm.invoke() + } + } else { + null + } + Text( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + text = stringResource(Res.strings.elevatedaccess_header_text), + ) + Spacer(modifier = Modifier.height(16.dp)) + PasswordFlatTextField( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding) + .focusRequester2(requester), + testTag = "field:password", + value = content.password, + keyboardOptions = KeyboardOptions( + imeAction = when { + keyboardOnGo != null -> ImeAction.Go + else -> ImeAction.Default + }, + ), + keyboardActions = KeyboardActions( + onGo = keyboardOnGo, + ), + ) + val onBiometricButtonClick by rememberUpdatedState(content.biometric?.onClick) + ExpandedIfNotEmpty( + modifier = Modifier + .align(Alignment.CenterHorizontally), + valueOrNull = content.biometric, + ) { b -> + OutlinedButton( + modifier = Modifier + .padding( + top = 24.dp, + bottom = 16.dp, // fix shadow clipping + ), + enabled = b.onClick != null, + border = BorderStroke( + width = Dp.Hairline, + color = DividerColor, + ), + onClick = { + onBiometricButtonClick?.invoke() + }, + contentPadding = PaddingValues(16.dp), + ) { + Icon( + imageVector = Icons.Outlined.Fingerprint, + contentDescription = null, + ) + } + } + + LaunchedEffect(requester) { + delay(80L) + // Do not auto-focus the password field if a device has biometric + // available. It causes a weird layout lags when keyboard pops up for + // a split second. + if (onBiometricButtonClick == null) { + requester.requestFocus() + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/elevatedaccess/ElevatedAccessState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/elevatedaccess/ElevatedAccessState.kt new file mode 100644 index 00000000..19efb8ea --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/elevatedaccess/ElevatedAccessState.kt @@ -0,0 +1,40 @@ +package com.artemchep.keyguard.feature.confirmation.elevatedaccess + +import androidx.compose.runtime.Immutable +import arrow.optics.optics +import com.artemchep.keyguard.common.model.BiometricAuthPrompt +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import com.artemchep.keyguard.feature.keyguard.unlock.UnlockState +import kotlinx.coroutines.flow.Flow + +@Immutable +data class ElevatedAccessState( + val content: Loadable = Loadable.Loading, + val onDeny: (() -> Unit)? = null, + val onConfirm: (() -> Unit)? = null, +) { + @Immutable + data class Content( + val sideEffects: UnlockState.SideEffects, + val password: TextFieldModel2, + val biometric: Biometric? = null, + val isLoading: Boolean = false, + ) + + @Immutable + @optics + data class Biometric( + val onClick: (() -> Unit)? = null, + ) { + companion object + } + + @Immutable + @optics + data class SideEffects( + val showBiometricPromptFlow: Flow, + ) { + companion object + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/elevatedaccess/ElevatedAccessStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/elevatedaccess/ElevatedAccessStateProducer.kt new file mode 100644 index 00000000..ed36d01f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/elevatedaccess/ElevatedAccessStateProducer.kt @@ -0,0 +1,192 @@ +package com.artemchep.keyguard.feature.confirmation.elevatedaccess + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.effectTap +import com.artemchep.keyguard.common.io.ioRaise +import com.artemchep.keyguard.common.io.toIO +import com.artemchep.keyguard.common.model.BiometricAuthException +import com.artemchep.keyguard.common.model.BiometricAuthPromptSimple +import com.artemchep.keyguard.common.model.BiometricStatus +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.PureBiometricAuthPrompt +import com.artemchep.keyguard.common.model.ToastMessage +import com.artemchep.keyguard.common.usecase.BiometricStatusUseCase +import com.artemchep.keyguard.common.usecase.ConfirmAccessByPasswordUseCase +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.common.util.flow.EventFlow +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import com.artemchep.keyguard.feature.auth.common.Validated +import com.artemchep.keyguard.feature.auth.common.util.validatedPassword +import com.artemchep.keyguard.feature.keyguard.unlock.UnlockState +import com.artemchep.keyguard.feature.loading.LoadingTask +import com.artemchep.keyguard.feature.localization.TextHolder +import com.artemchep.keyguard.feature.navigation.RouteResultTransmitter +import com.artemchep.keyguard.feature.navigation.state.navigatePopSelf +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.res.Res +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.onStart +import kotlinx.coroutines.flow.shareIn +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +private const val DEFAULT_PASSWORD = "" + +@Composable +fun produceElevatedAccessState( + transmitter: RouteResultTransmitter, +): ElevatedAccessState = with(localDI().direct) { + produceElevatedAccessState( + transmitter = transmitter, + biometricStatusUseCase = instance(), + confirmAccessByPasswordUseCase = instance(), + windowCoroutineScope = instance(), + ) +} + +@Composable +fun produceElevatedAccessState( + transmitter: RouteResultTransmitter, + biometricStatusUseCase: BiometricStatusUseCase, + confirmAccessByPasswordUseCase: ConfirmAccessByPasswordUseCase, + windowCoroutineScope: WindowCoroutineScope, +): ElevatedAccessState = produceScreenState( + key = "elevated_access", + initial = ElevatedAccessState(), + args = arrayOf( + windowCoroutineScope, + ), +) { + val executor = screenExecutor() + + val passwordSink = mutablePersistedFlow("password") { DEFAULT_PASSWORD } + val passwordState = mutableComposeState(passwordSink) + + val biometricPrompt = kotlin.run { + val biometricStatus = biometricStatusUseCase() + .toIO() + .attempt() + .bind() + .getOrNull() + when (biometricStatus) { + is BiometricStatus.Available -> { + createPromptOrNull( + executor = executor, + fn = { + navigatePopSelf() + transmitter(ElevatedAccessResult.Allow) + }, + ) + } + + else -> null + } + } + + val biometricPromptSink = EventFlow() + val biometricPromptFlow = biometricPromptSink + // Automatically emit the prompt on first show + // of the user interface. + .onStart { + if (biometricPrompt != null) { + emit(biometricPrompt) + } + } + .shareIn(screenScope, SharingStarted.WhileSubscribed(5000L)) + val biometricStateEnabled = biometricPrompt?.let { prompt -> + ElevatedAccessState.Biometric( + onClick = { + biometricPromptSink.emit(prompt) + }, + ) + } + val biometricStateDisabled = biometricPrompt?.let { prompt -> + ElevatedAccessState.Biometric( + onClick = null, + ) + } + + combine( + passwordSink + .validatedPassword(this), + executor.isExecutingFlow, + ) { validatedPassword, taskExecuting -> + val error = (validatedPassword as? Validated.Failure)?.error + val canCreateVault = error == null && !taskExecuting + val content = ElevatedAccessState.Content( + biometric = if (taskExecuting) { + biometricStateDisabled + } else { + biometricStateEnabled + }, + sideEffects = UnlockState.SideEffects( + showBiometricPromptFlow = biometricPromptFlow, + ), + password = TextFieldModel2.of( + state = passwordState, + validated = validatedPassword, + ), + isLoading = taskExecuting, + ) + ElevatedAccessState( + content = Loadable.Ok(content), + onDeny = { + navigatePopSelf() + transmitter(ElevatedAccessResult.Deny) + }, + onConfirm = if (canCreateVault) { + // lambda + { + val io = confirmAccessByPasswordUseCase(validatedPassword.model) + .effectTap { success -> + if (success) { + navigatePopSelf() + transmitter(ElevatedAccessResult.Allow) + } else { + val message = ToastMessage( + title = translate(Res.strings.error_incorrect_password), + type = ToastMessage.Type.ERROR, + ) + message(message) + } + } + executor.execute(io) + } + } else { + null + }, + ) + } +} + +private fun createPromptOrNull( + executor: LoadingTask, + fn: () -> Unit, +): PureBiometricAuthPrompt = run { + BiometricAuthPromptSimple( + title = TextHolder.Res(Res.strings.elevatedaccess_biometric_auth_confirm_title), + text = TextHolder.Res(Res.strings.elevatedaccess_biometric_auth_confirm_text), + onComplete = { result -> + result.fold( + ifLeft = { exception -> + when (exception.code) { + BiometricAuthException.ERROR_CANCELED, + BiometricAuthException.ERROR_USER_CANCELED, + BiometricAuthException.ERROR_NEGATIVE_BUTTON, + -> return@fold + } + + val io = ioRaise(exception) + executor.execute(io) + }, + ifRight = { + fn.invoke() + }, + ) + }, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/folder/FolderConfirmationResult.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/folder/FolderConfirmationResult.kt new file mode 100644 index 00000000..dc1ef62b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/folder/FolderConfirmationResult.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.confirmation.folder + +import com.artemchep.keyguard.feature.confirmation.organization.FolderInfo + +sealed interface FolderConfirmationResult { + data object Deny : FolderConfirmationResult + + data class Confirm( + val folderInfo: FolderInfo, + ) : FolderConfirmationResult +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/folder/FolderConfirmationRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/folder/FolderConfirmationRoute.kt new file mode 100644 index 00000000..07e8b6e8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/folder/FolderConfirmationRoute.kt @@ -0,0 +1,25 @@ +package com.artemchep.keyguard.feature.confirmation.folder + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.feature.navigation.DialogRouteForResult +import com.artemchep.keyguard.feature.navigation.RouteResultTransmitter + +class FolderConfirmationRoute( + val args: Args, +) : DialogRouteForResult { + data class Args( + val accountId: AccountId, + val blacklistedFolderIds: Set = emptySet(), + ) + + @Composable + override fun Content( + transmitter: RouteResultTransmitter, + ) { + FolderConfirmationScreen( + args = args, + transmitter = transmitter, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/folder/FolderConfirmationScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/folder/FolderConfirmationScreen.kt new file mode 100644 index 00000000..41dd1938 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/folder/FolderConfirmationScreen.kt @@ -0,0 +1,195 @@ +package com.artemchep.keyguard.feature.confirmation.folder + +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.FlowRow +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Folder +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.key +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.getOrNull +import com.artemchep.keyguard.feature.EmptyView +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import com.artemchep.keyguard.feature.dialog.Dialog +import com.artemchep.keyguard.feature.navigation.RouteResultTransmitter +import com.artemchep.keyguard.feature.search.filter.component.FilterItemComposable +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +import com.artemchep.keyguard.ui.FlatTextField +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.focus.FocusRequester2 +import com.artemchep.keyguard.ui.focus.focusRequester2 +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.util.HorizontalDivider +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.delay + +@OptIn(ExperimentalFoundationApi::class, ExperimentalLayoutApi::class) +@Composable +fun FolderConfirmationScreen( + args: FolderConfirmationRoute.Args, + transmitter: RouteResultTransmitter, +) { + val state = folderConfirmationState( + args = args, + transmitter = transmitter, + ) + Dialog( + icon = icon(Icons.Outlined.Folder), + title = { + Text(stringResource(Res.strings.folderpicker_header_title)) + }, + content = { + val data = state.content.getOrNull() + Column( + modifier = Modifier + .align(Alignment.TopStart), + ) { + FlowRow( + modifier = Modifier + .padding(horizontal = 8.dp), + horizontalArrangement = Arrangement.spacedBy(8.dp), + verticalArrangement = Arrangement.spacedBy(8.dp), + ) { + if (data != null) { + if (data.items.isEmpty()) { + EmptyView() + } + + data.items.forEach { item -> + key(item.key) { + FolderConfirmationItem( + modifier = Modifier, + item = item, + ) + } + } + } + } + val field = state.content.getOrNull()?.new + CreateNewFolder( + field = field, + ) + } + + if (state.content is Loadable.Loading && data == null) { + CircularProgressIndicator( + modifier = Modifier + .align(Alignment.Center) + .padding(16.dp), + ) + } + }, + actions = { + val updatedOnDeny by rememberUpdatedState(state.onDeny) + val updatedOnConfirm by rememberUpdatedState(state.onConfirm) + TextButton( + enabled = state.onDeny != null, + onClick = { + updatedOnDeny?.invoke() + }, + ) { + Text(stringResource(Res.strings.close)) + } + TextButton( + enabled = state.onConfirm != null, + onClick = { + updatedOnConfirm?.invoke() + }, + ) { + Text(stringResource(Res.strings.ok)) + } + }, + ) +} + +@Composable +fun CreateNewFolder( + field: TextFieldModel2?, + modifier: Modifier = Modifier, +) { + ExpandedIfNotEmpty( + modifier = modifier, + valueOrNull = field, + ) { + Column { + val requester = remember { + FocusRequester2() + } + + HorizontalDivider( + modifier = Modifier + .padding(vertical = 16.dp), + ) + Text( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + text = stringResource(Res.strings.folderpicker_create_new_folder), + style = MaterialTheme.typography.bodyMedium, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + ) + Spacer(Modifier.height(16.dp)) + FlatTextField( + modifier = Modifier + .padding(horizontal = 8.dp), + fieldModifier = Modifier + .focusRequester2(requester), + value = it, + label = stringResource(Res.strings.generic_name), + ) + + LaunchedEffect(requester) { + delay(80L) + requester.requestFocus() + } + } + } +} + +@Composable +private fun FolderConfirmationItem( + modifier: Modifier = Modifier, + item: FolderConfirmationState.Content.Item, +) { + FilterItemComposable( + modifier = modifier, + checked = item.selected, + leading = + if (item.icon != null) { + // composable + { + Icon( + item.icon, + null, + ) + } + } else { + null + }, + title = item.title, + text = null, + onClick = item.onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/folder/FolderConfirmationState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/folder/FolderConfirmationState.kt new file mode 100644 index 00000000..df82897b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/folder/FolderConfirmationState.kt @@ -0,0 +1,24 @@ +package com.artemchep.keyguard.feature.confirmation.folder + +import androidx.compose.ui.graphics.vector.ImageVector +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 + +data class FolderConfirmationState( + val content: Loadable = Loadable.Loading, + val onDeny: (() -> Unit)? = null, + val onConfirm: (() -> Unit)? = null, +) { + data class Content( + val items: List, + val new: TextFieldModel2?, + ) { + data class Item( + val key: String, + val title: String, + val selected: Boolean, + val icon: ImageVector? = null, + val onClick: (() -> Unit)?, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/folder/FolderConfirmationStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/folder/FolderConfirmationStateProducer.kt new file mode 100644 index 00000000..376e31ce --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/folder/FolderConfirmationStateProducer.kt @@ -0,0 +1,311 @@ +package com.artemchep.keyguard.feature.confirmation.folder + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Add +import androidx.compose.material.icons.outlined.FolderOff +import androidx.compose.runtime.Composable +import arrow.core.andThen +import arrow.core.partially1 +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.usecase.GetFolders +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import com.artemchep.keyguard.feature.auth.common.Validated +import com.artemchep.keyguard.feature.auth.common.util.validatedTitle +import com.artemchep.keyguard.feature.confirmation.organization.FolderInfo +import com.artemchep.keyguard.feature.confirmation.organization.FolderInfoType +import com.artemchep.keyguard.feature.navigation.RouteResultTransmitter +import com.artemchep.keyguard.feature.navigation.state.navigatePopSelf +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.platform.parcelize.LeParcelable +import com.artemchep.keyguard.platform.parcelize.LeParcelize +import com.artemchep.keyguard.res.Res +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.shareIn +import kotlinx.coroutines.flow.update +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +private data class FolderVariant( + val accountId: String, + val folder: FolderInfo, + val name: String, + val enabled: Boolean, +) { + sealed interface FolderInfo { + val key: String + + data object None : FolderInfo { + override val key: String = "none" + } + + data object New : FolderInfo { + override val key: String = "new" + } + + data class Id( + val id: String, + ) : FolderInfo { + override val key: String = "id:$id" + } + + fun type() = when (this) { + is None -> FolderInfoType.None + is New -> FolderInfoType.New + is Id -> FolderInfoType.Id + } + + fun folderId() = when (this) { + is None -> null + is New -> null + is Id -> id + } + } + + val key = "$accountId|${folder.key}" +} + +@LeParcelize +@kotlinx.serialization.Serializable +data class FooBar( + val folderType: FolderInfoType = FolderInfoType.Id, + val folderId: String? = null, +) : LeParcelable + +private fun FooBar.withFolderId(folder: FolderVariant.FolderInfo): FooBar { + val folderType = folder.type() + val folderId = (folder as? FolderVariant.FolderInfo.Id)?.id + if ( + this.folderType == folderType && + this.folderId == folderId + ) { + return this + } + return FooBar( + folderType = folderType, + folderId = folderId, + ) +} + +@Composable +fun folderConfirmationState( + args: FolderConfirmationRoute.Args, + transmitter: RouteResultTransmitter, +): FolderConfirmationState = with(localDI().direct) { + folderConfirmationState( + args = args, + transmitter = transmitter, + getFolders = instance(), + windowCoroutineScope = instance(), + ) +} + +@Composable +fun folderConfirmationState( + args: FolderConfirmationRoute.Args, + transmitter: RouteResultTransmitter, + getFolders: GetFolders, + windowCoroutineScope: WindowCoroutineScope, +): FolderConfirmationState = produceScreenState( + key = "folder_confirmation", + initial = FolderConfirmationState(), + args = arrayOf( + getFolders, + windowCoroutineScope, + ), +) { + val folderNameSink = mutablePersistedFlow("folder_name") { + "" + } + val folderNameState = mutableComposeState(folderNameSink) + val folderValidatedFlow = folderNameSink + .validatedTitle(this) + .shareInScreenScope() + + val foldersFlow = getFolders() + .map { folders -> + val items = folders + .filter { it.accountId == args.accountId.id } + .sortedBy { it.name } + .map { folder -> + val folderEnabled = folder.id !in args.blacklistedFolderIds + val folderInfo = FolderVariant.FolderInfo.Id( + id = folder.id, + ) + FolderVariant( + accountId = folder.accountId, + folder = folderInfo, + name = folder.name, + enabled = folderEnabled, + ) + } + .toMutableList() + // No folder item + run { + val enabled = null !in args.blacklistedFolderIds + items += FolderVariant( + accountId = args.accountId.id, + folder = FolderVariant.FolderInfo.None, + name = translate(Res.strings.folder_none), + enabled = enabled, + ) + } + // New folder item + run { + items += FolderVariant( + accountId = args.accountId.id, + folder = FolderVariant.FolderInfo.New, + name = translate(Res.strings.folder_new), + enabled = true, + ) + } + items + } + .shareIn(screenScope, SharingStarted.Lazily, replay = 1) + + val selectionSink = mutablePersistedFlow("selection") { + FooBar() + } + val selectionFlow = foldersFlow + .combine(selectionSink) { folders, selection -> + var s = selection + + val filteredFolders = folders + .filter { it.enabled } + // De-select non-existent folder + if (s.folderType == FolderInfoType.Id) { + val hasSelectedFolder = filteredFolders + .any { variant -> + when (val f = variant.folder) { + is FolderVariant.FolderInfo.Id -> f.id == s.folderId + else -> false + } + } + if (!hasSelectedFolder) { + val newVariant = FolderVariant.FolderInfo.None + s = s.withFolderId(newVariant) + } + } + // Pre-select the only available folder + if (filteredFolders.size == 1 && s.folderId == null) { + val folderId = filteredFolders.first().folder + s = s.withFolderId(folderId) + } + s + } + .distinctUntilChanged() + .shareIn(screenScope, SharingStarted.Lazily, replay = 1) + + fun onClickFolder(folder: FolderVariant.FolderInfo) = selectionSink.update { + it.withFolderId(folder) + } + + val folderItemsFlow = combine( + foldersFlow, + selectionFlow + .distinctUntilChanged(), + ) { folders, selection -> + val selectedFolderType = selection.folderType + val selectedFolderId = selection.folderId + val items = folders + .asSequence() + .map { folder -> + val selected = folder.folder.type() == selectedFolderType && + folder.folder.folderId() == selectedFolderId + val onClick = if ( + folder.enabled + ) { + ::onClickFolder.partially1(folder.folder) + } else { + null + } + val icon = when (folder.folder) { + is FolderVariant.FolderInfo.None -> Icons.Outlined.FolderOff + is FolderVariant.FolderInfo.New -> Icons.Outlined.Add + else -> null + } + FolderConfirmationState.Content.Item( + key = folder.key, + icon = icon, + title = folder.name, + selected = selected, + onClick = onClick, + ) + } + .toList() + items + } + val folderNameFlow = combine( + selectionFlow + .map { it.folderType } + .distinctUntilChanged(), + folderValidatedFlow, + ) { folderType, folderNameValidated -> + when (folderType) { + FolderInfoType.New -> TextFieldModel2( + state = folderNameState, + text = folderNameValidated.model, + error = (folderNameValidated as? Validated.Failure)?.error, + onChange = folderNameState::value::set, + ) + + else -> null + } + } + val contentFlow = combine( + folderItemsFlow, + folderNameFlow, + ) { items, new -> + FolderConfirmationState.Content( + items = items, + new = new, + ) + } + val confirmFlow = combine( + selectionFlow, + folderValidatedFlow, + ) { selection, folderNameValidated -> + val onConfirm = if ( + (selection.folderType != FolderInfoType.New || folderNameValidated is Validated.Success) + ) { + val folder = when (selection.folderType) { + FolderInfoType.None -> FolderInfo.None + FolderInfoType.New -> FolderInfo.New(name = folderNameValidated.model) + FolderInfoType.Id -> { + val id = selection.folderId + ?: return@combine null // must not be null + FolderInfo.Id(id) + } + } + val result = FolderConfirmationResult.Confirm( + folderInfo = folder, + ) + // lambda + transmitter + .partially1(result) + .andThen { + navigatePopSelf() + } + } else { + null + } + onConfirm + } + combine( + contentFlow, + confirmFlow, + ) { content, onConfirm -> + FolderConfirmationState( + content = Loadable.Ok(content), + onDeny = { + transmitter(FolderConfirmationResult.Deny) + navigatePopSelf() + }, + onConfirm = onConfirm, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/organization/FolderInfo.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/organization/FolderInfo.kt new file mode 100644 index 00000000..78e4bb83 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/organization/FolderInfo.kt @@ -0,0 +1,36 @@ +package com.artemchep.keyguard.feature.confirmation.organization + +import com.artemchep.keyguard.platform.parcelize.LeParcelable +import com.artemchep.keyguard.platform.parcelize.LeParcelize +import kotlinx.serialization.Serializable + +@Serializable +sealed interface FolderInfo : LeParcelable { + @Serializable + @LeParcelize + data object None : FolderInfo + + @Serializable + @LeParcelize + data class New( + val name: String, + ) : FolderInfo + + @Serializable + @LeParcelize + data class Id( + val id: String, + ) : FolderInfo +} + +fun FolderInfo.type() = when (this) { + is FolderInfo.None -> FolderInfoType.None + is FolderInfo.New -> FolderInfoType.New + is FolderInfo.Id -> FolderInfoType.Id +} + +enum class FolderInfoType { + None, + New, + Id, +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/organization/OrganizationConfirmationResult.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/organization/OrganizationConfirmationResult.kt new file mode 100644 index 00000000..8fabb286 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/organization/OrganizationConfirmationResult.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.feature.confirmation.organization + +sealed interface OrganizationConfirmationResult { + data object Deny : OrganizationConfirmationResult + + data class Confirm( + val accountId: String, + val organizationId: String?, + val collectionsIds: Set, + val folderId: FolderInfo, + ) : OrganizationConfirmationResult +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/organization/OrganizationConfirmationRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/organization/OrganizationConfirmationRoute.kt new file mode 100644 index 00000000..ddb6965e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/organization/OrganizationConfirmationRoute.kt @@ -0,0 +1,54 @@ +package com.artemchep.keyguard.feature.confirmation.organization + +import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.vector.ImageVector +import com.artemchep.keyguard.feature.navigation.DialogRouteForResult +import com.artemchep.keyguard.feature.navigation.RouteResultTransmitter +import com.artemchep.keyguard.ui.SimpleNote + +class OrganizationConfirmationRoute( + val args: Args, +) : DialogRouteForResult { + data class Args( + val decor: Decor, + val flags: Int = 0, + // selection + val accountId: String? = null, + val organizationId: String? = null, + val folderId: FolderInfo = FolderInfo.None, + val collectionsIds: Set = emptySet(), + // blacklist + val blacklistedAccountIds: Set = emptySet(), + val blacklistedOrganizationIds: Set = emptySet(), + val blacklistedCollectionIds: Set = emptySet(), + val blacklistedFolderIds: Set = emptySet(), + ) { + companion object { + private const val RAW_RO_ACCOUNT = 1 + private const val RAW_RO_ORGANIZATION = 2 + private const val RAW_RO_COLLECTION = 4 + private const val RAW_RO_FOLDER = 8 + + const val RO_ACCOUNT = RAW_RO_ACCOUNT + const val RO_ORGANIZATION = RAW_RO_ORGANIZATION + const val RO_COLLECTION = RAW_RO_COLLECTION + const val RO_FOLDER = RAW_RO_FOLDER + } + + data class Decor( + val title: String, + val note: SimpleNote? = null, + val icon: ImageVector? = null, + ) + } + + @Composable + override fun Content( + transmitter: RouteResultTransmitter, + ) { + OrganizationConfirmationScreen( + args = args, + transmitter = transmitter, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/organization/OrganizationConfirmationScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/organization/OrganizationConfirmationScreen.kt new file mode 100644 index 00000000..493de156 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/organization/OrganizationConfirmationScreen.kt @@ -0,0 +1,184 @@ +package com.artemchep.keyguard.feature.confirmation.organization + +import androidx.compose.animation.animateContentSize +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.FlowRow +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.key +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.getOrNull +import com.artemchep.keyguard.feature.confirmation.folder.CreateNewFolder +import com.artemchep.keyguard.feature.dialog.Dialog +import com.artemchep.keyguard.feature.home.vault.component.Section +import com.artemchep.keyguard.feature.navigation.RouteResultTransmitter +import com.artemchep.keyguard.feature.search.filter.component.FilterItemComposable +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +import com.artemchep.keyguard.ui.FlatSimpleNote +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.theme.Dimens +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun OrganizationConfirmationScreen( + args: OrganizationConfirmationRoute.Args, + transmitter: RouteResultTransmitter, +) { + val state = organizationConfirmationState( + args = args, + transmitter = transmitter, + ) + OrganizationConfirmationScreen( + decor = args.decor, + state = state, + ) +} + +@Composable +private fun OrganizationConfirmationScreen( + decor: OrganizationConfirmationRoute.Args.Decor, + state: OrganizationConfirmationState, +) { + Dialog( + icon = decor.icon?.let { icon(it) }, + title = { + Text(decor.title) + }, + content = { + val data = state.content.getOrNull() + Column { + ExpandedIfNotEmpty( + valueOrNull = decor.note, + ) { note -> + FlatSimpleNote( + modifier = Modifier, + note = note, + ) + } + + val accountsOrNull = state.content.getOrNull()?.accounts + FolderSection( + title = stringResource(Res.strings.accounts), + section = accountsOrNull, + ) + val organizationsOrNull = state.content.getOrNull()?.organizations + FolderSection( + title = stringResource(Res.strings.organizations), + section = organizationsOrNull, + ) + val collectionsOrNull = state.content.getOrNull()?.collections + FolderSection( + title = stringResource(Res.strings.collections), + section = collectionsOrNull, + ) + val foldersOrNull = state.content.getOrNull()?.folders + FolderSection( + title = stringResource(Res.strings.folders), + section = foldersOrNull, + ) + + val field = state.content.getOrNull()?.folderNew + CreateNewFolder( + field = field, + ) + } + + if (state.content is Loadable.Loading && data == null) { + CircularProgressIndicator( + modifier = Modifier + .align(Alignment.Center) + .padding(16.dp), + ) + } + }, + actions = { + val updatedOnDeny by rememberUpdatedState(state.onDeny) + val updatedOnConfirm by rememberUpdatedState(state.onConfirm) + TextButton( + enabled = state.onDeny != null, + onClick = { + updatedOnDeny?.invoke() + }, + ) { + Text(stringResource(Res.strings.close)) + } + TextButton( + enabled = state.onConfirm != null, + onClick = { + updatedOnConfirm?.invoke() + }, + ) { + Text(stringResource(Res.strings.ok)) + } + }, + ) +} + +@Composable +private fun ColumnScope.Note( + modifier: Modifier = Modifier, + title: String, + section: OrganizationConfirmationState.Content.Section?, +) { +} + +@OptIn(ExperimentalLayoutApi::class) +@Composable +private fun ColumnScope.FolderSection( + modifier: Modifier = Modifier, + title: String, + section: OrganizationConfirmationState.Content.Section?, +) { + ExpandedIfNotEmpty( + valueOrNull = section?.takeUnless { it.items.isEmpty() }, + ) { l -> + Column { + Section(text = title) + FlowRow( + modifier = Modifier + .padding(horizontal = 8.dp) + .animateContentSize(), + horizontalArrangement = Arrangement.spacedBy(8.dp), + verticalArrangement = Arrangement.spacedBy(8.dp), + ) { + l.items.forEach { item -> + key(item.key) { + FilterItemComposable( + modifier = Modifier, + checked = item.selected, + leading = item.icon, + title = item.title, + text = item.text, + onClick = item.onClick, + ) + } + } + } + ExpandedIfNotEmpty( + valueOrNull = l.text, + ) { text -> + Text( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding) + .padding(top = 8.dp), + text = text, + style = MaterialTheme.typography.labelMedium, + ) + } + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/organization/OrganizationConfirmationState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/organization/OrganizationConfirmationState.kt new file mode 100644 index 00000000..b9874075 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/organization/OrganizationConfirmationState.kt @@ -0,0 +1,33 @@ +package com.artemchep.keyguard.feature.confirmation.organization + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 + +data class OrganizationConfirmationState( + val content: Loadable = Loadable.Loading, + val onDeny: (() -> Unit)? = null, + val onConfirm: (() -> Unit)? = null, +) { + data class Content( + val accounts: Section, + val organizations: Section, + val collections: Section, + val folders: Section, + val folderNew: TextFieldModel2?, + ) { + data class Section( + val items: List, + val text: String? = null, + ) + + data class Item( + val key: String, + val title: String, + val text: String? = null, + val selected: Boolean, + val icon: (@Composable () -> Unit)? = null, + val onClick: (() -> Unit)?, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/organization/OrganizationConfirmationStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/organization/OrganizationConfirmationStateProducer.kt new file mode 100644 index 00000000..c48407c1 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/confirmation/organization/OrganizationConfirmationStateProducer.kt @@ -0,0 +1,711 @@ +package com.artemchep.keyguard.feature.confirmation.organization + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Add +import androidx.compose.material.icons.outlined.FolderOff +import androidx.compose.material.icons.outlined.Lock +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import arrow.core.andThen +import arrow.core.partially1 +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.usecase.GetAccounts +import com.artemchep.keyguard.common.usecase.GetCollections +import com.artemchep.keyguard.common.usecase.GetFolders +import com.artemchep.keyguard.common.usecase.GetOrganizations +import com.artemchep.keyguard.common.usecase.GetProfiles +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.common.util.contains +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import com.artemchep.keyguard.feature.auth.common.Validated +import com.artemchep.keyguard.feature.auth.common.util.validatedTitle +import com.artemchep.keyguard.feature.navigation.RouteResultTransmitter +import com.artemchep.keyguard.feature.navigation.state.navigatePopSelf +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.platform.parcelize.LeParcelable +import com.artemchep.keyguard.platform.parcelize.LeParcelize +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.icons.AccentColors +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.theme.isDark +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.flow.shareIn +import kotlinx.coroutines.flow.update +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +@Composable +fun organizationConfirmationState( + args: OrganizationConfirmationRoute.Args, + transmitter: RouteResultTransmitter, +): OrganizationConfirmationState = with(localDI().direct) { + organizationConfirmationState( + args = args, + transmitter = transmitter, + getAccounts = instance(), + getProfiles = instance(), + getOrganizations = instance(), + getCollections = instance(), + getFolders = instance(), + windowCoroutineScope = instance(), + ) +} + +@LeParcelize +@kotlinx.serialization.Serializable +data class FooBar( + val accountId: String? = null, + val organizationId: String? = null, + val collectionsIds: Set = emptySet(), + val folderType: FolderInfoType = FolderInfoType.None, + val folderId: String? = null, +) : LeParcelable + +private fun FooBar.withAccountId(accountId: String?): FooBar { + if (this.accountId == accountId) return this + return FooBar( + accountId = accountId, + ) +} + +private fun FooBar.withOrganizationId(organizationId: String?): FooBar { + if (this.organizationId == organizationId) return this + return FooBar( + accountId = this.accountId, + organizationId = organizationId, + folderType = this.folderType, + folderId = this.folderId, + ) +} + +private fun FooBar.withCollectionIdSet(ids: Set): FooBar { + if (this.collectionsIds == ids) return this + return FooBar( + accountId = this.accountId, + organizationId = this.organizationId, + collectionsIds = ids, + folderType = this.folderType, + folderId = this.folderId, + ) +} + +private fun FooBar.withFolderId(folder: FolderVariant.FolderInfo): FooBar { + val folderType = folder.type() + val folderId = (folder as? FolderVariant.FolderInfo.Id)?.id + if ( + this.folderType == folderType && + this.folderId == folderId + ) { + return this + } + return FooBar( + accountId = this.accountId, + organizationId = this.organizationId, + collectionsIds = this.collectionsIds, + folderType = folderType, + folderId = folderId, + ) +} + +private data class AccountVariant( + val accountId: String, + val name: String, + val text: String, + val enabled: Boolean, + val accentColors: AccentColors, +) { + val key = accountId +} + +private data class OrganizationVariant( + val accountId: String, + val organizationId: String? = null, + val name: String, + val enabled: Boolean, +) { + val key = "$accountId|$organizationId" +} + +private data class CollectionVariant( + val accountId: String, + val organizationId: String? = null, + val collectionId: String, + val name: String, + val readOnly: Boolean, + val enabled: Boolean, +) { + val key = "$accountId|$organizationId|$collectionId" +} + +private data class FolderVariant( + val accountId: String, + val folder: FolderInfo, + val name: String, + val enabled: Boolean, +) { + sealed interface FolderInfo { + val key: String + + data object None : FolderInfo { + override val key: String = "none" + } + + data object New : FolderInfo { + override val key: String = "new" + } + + data class Id( + val id: String, + ) : FolderInfo { + override val key: String = "id:$id" + } + + fun type() = when (this) { + is None -> FolderInfoType.None + is New -> FolderInfoType.New + is Id -> FolderInfoType.Id + } + + fun folderId() = when (this) { + is None -> null + is New -> null + is Id -> id + } + } + + val key = "$accountId|${folder.key}" +} + +@Composable +fun organizationConfirmationState( + args: OrganizationConfirmationRoute.Args, + transmitter: RouteResultTransmitter, + getAccounts: GetAccounts, + getProfiles: GetProfiles, + getOrganizations: GetOrganizations, + getCollections: GetCollections, + getFolders: GetFolders, + windowCoroutineScope: WindowCoroutineScope, +): OrganizationConfirmationState = produceScreenState( + key = "organization_confirmation", + initial = OrganizationConfirmationState(), + args = arrayOf( + getFolders, + windowCoroutineScope, + ), +) { + val readOnlyAccount = OrganizationConfirmationRoute.Args.RO_ACCOUNT in args.flags + val readOnlyOrganization = OrganizationConfirmationRoute.Args.RO_ORGANIZATION in args.flags + val readOnlyFolder = OrganizationConfirmationRoute.Args.RO_FOLDER in args.flags + val readOnlyCollections = OrganizationConfirmationRoute.Args.RO_COLLECTION in args.flags + + val accountsFlow = getProfiles() + .map { profiles -> + profiles + .map { profile -> + val enabled = profile.accountId() !in args.blacklistedAccountIds + AccountVariant( + accountId = profile.accountId(), + name = profile.email, + text = profile.accountHost, + enabled = enabled, + accentColors = profile.accentColor, + ) + } + } + .shareIn(screenScope, SharingStarted.WhileSubscribed(), replay = 1) + val organizationsFlow = combine( + getOrganizations(), + accountsFlow, + ) { organizations, accounts -> + organizations + .sortedBy { it.name } + .map { organization -> + val enabled = organization.id !in args.blacklistedOrganizationIds + OrganizationVariant( + accountId = organization.accountId, + organizationId = organization.id, + name = organization.name, + enabled = enabled, + ) + } + accounts + .map { account -> + val enabled = null !in args.blacklistedOrganizationIds && + account.enabled + OrganizationVariant( + accountId = account.accountId, + organizationId = null, + name = translate(Res.strings.organization_none), + enabled = enabled, + ) + } + } + .shareIn(screenScope, SharingStarted.WhileSubscribed(), replay = 1) + val collectionsFlow = getCollections() + .map { collections -> + collections + .map { collection -> + val enabled = collection.id !in args.blacklistedCollectionIds && + !collection.readOnly + CollectionVariant( + accountId = collection.accountId, + organizationId = collection.organizationId, + collectionId = collection.id, + name = collection.name, + readOnly = collection.readOnly, + enabled = enabled, + ) + } + } + .shareIn(screenScope, SharingStarted.WhileSubscribed(), replay = 1) + val foldersFlow = combine( + getFolders(), + accountsFlow, + ) { folders, accounts -> + folders + .sortedBy { it.name } + .map { folder -> + val enabled = folder.id !in args.blacklistedFolderIds + FolderVariant( + accountId = folder.accountId, + folder = FolderVariant.FolderInfo.Id(folder.id), + name = folder.name, + enabled = enabled, + ) + } + accounts + .flatMap { account -> + val items = mutableListOf() + // No folder item + run { + val enabled = null !in args.blacklistedFolderIds && + account.enabled + items += FolderVariant( + accountId = account.accountId, + folder = FolderVariant.FolderInfo.None, + name = translate(Res.strings.folder_none), + enabled = enabled, + ) + } + // New folder item + run { + val enabled = account.enabled + items += FolderVariant( + accountId = account.accountId, + folder = FolderVariant.FolderInfo.New, + name = translate(Res.strings.folder_new), + enabled = enabled, + ) + } + items + } + } + .shareIn(screenScope, SharingStarted.WhileSubscribed(), replay = 1) + + val folderNameSink = mutablePersistedFlow("folder_name") { + val folderName = (args.folderId as? FolderInfo.New)?.name + folderName.orEmpty() + } + val folderNameState = mutableComposeState(folderNameSink) + val folderValidatedFlow = folderNameSink + .validatedTitle(this) + .shareInScreenScope() + + val selectionSink = mutablePersistedFlow("selection") { + val folderType = args.folderId.type() + val folderId = (args.folderId as? FolderInfo.Id)?.id + FooBar( + accountId = args.accountId, + organizationId = args.organizationId, + collectionsIds = args.collectionsIds, + folderType = folderType, + folderId = folderId, + ) + } + val selectionFlow = combine( + selectionSink, + accountsFlow, + organizationsFlow, + collectionsFlow, + foldersFlow, + ) { selection, accounts, organizations, collections, folders -> + var s = selection + + // + // Accounts + // + + val filteredAccounts = accounts + .filter { it.enabled } + // De-select non-existent account + if (filteredAccounts.none { it.accountId == s.accountId }) { + s = s.withAccountId(null) + } + // Pre-select the only available account + if (filteredAccounts.size == 1 && s.accountId == null) { + val accountId = filteredAccounts.first().accountId + s = s.withAccountId(accountId) + } + + // + // Organizations + // + + val filteredOrganizations = organizations + .filter { it.accountId == s.accountId && it.enabled } + // De-select non-existent organization + if (filteredOrganizations.none { it.organizationId == s.organizationId }) { + s = s.withOrganizationId(null) + } + // Pre-select the only available organization + if (filteredOrganizations.size == 1 && s.organizationId == null) { + val organizationId = filteredOrganizations.first().organizationId + s = s.withOrganizationId(organizationId) + } + + // + // Collections + // + + val filteredCollections = collections + .filter { + it.enabled && + it.accountId == s.accountId && + it.organizationId == s.organizationId + } + val filteredCollectionIds = filteredCollections + .map { it.collectionId } + .toSet() + // De-select non-existent collections + s = s.withCollectionIdSet( + ids = filteredCollectionIds + .intersect(s.collectionsIds), + ) + // Pre-select the only available collection + if (filteredCollectionIds.size == 1 && s.collectionsIds.isEmpty()) { + s = s.withCollectionIdSet(filteredCollectionIds) + } + + // + // Folders + // + + val filteredFolders = folders + .filter { it.accountId == s.accountId && it.enabled } + // De-select non-existent folder + if (s.folderType == FolderInfoType.Id) { + val hasSelectedFolder = filteredFolders + .any { variant -> + when (val f = variant.folder) { + is FolderVariant.FolderInfo.Id -> f.id == s.folderId + else -> false + } + } + if (!hasSelectedFolder) { + val newVariant = FolderVariant.FolderInfo.None + s = s.withFolderId(newVariant) + } + } + // Pre-select the only available folder + if (filteredFolders.size == 1 && s.folderId == null) { + val folderId = filteredFolders.first().folder + s = s.withFolderId(folderId) + } + + s + } + .distinctUntilChanged() + .onEach { + selectionSink.value = it + } + .shareIn(screenScope, SharingStarted.WhileSubscribed(), replay = 1) + + fun onClickAccount(accountId: String?) = selectionSink.update { + it.withAccountId(accountId) + } + + fun onClickOrganization(organizationId: String?) = selectionSink.update { + it.withOrganizationId(organizationId) + } + + fun onClickCollection(collectionId: String) = selectionSink.update { + val existed = collectionId in it.collectionsIds + val ids = if (existed) { + it.collectionsIds - collectionId + } else { + it.collectionsIds + collectionId + } + it.withCollectionIdSet(ids) + } + + fun onClickFolder(folder: FolderVariant.FolderInfo) = selectionSink.update { + it.withFolderId(folder) + } + + val itemAccountsFlow = combine( + accountsFlow, + selectionFlow + .map { it.accountId } + .distinctUntilChanged(), + ) { accounts, selectedAccountId -> + val items = accounts + .map { account -> + val selected = account.accountId == selectedAccountId + val onClick = if ( + account.enabled && + !readOnlyAccount + ) { + ::onClickAccount.partially1(account.accountId) + } else { + null + } + OrganizationConfirmationState.Content.Item( + key = account.accountId, + title = account.name, + text = account.text, + selected = selected, + onClick = onClick, + icon = { + val accentColor = if (MaterialTheme.colorScheme.isDark) { + account.accentColors.dark + } else { + account.accentColors.light + } + Box( + modifier = Modifier + .size(24.dp) + .background(accentColor, CircleShape), + ) + }, + ) + } + OrganizationConfirmationState.Content.Section( + items = items, + ) + } + val itemOrganizationsFlow = combine( + organizationsFlow, + selectionFlow + .map { it.organizationId to it.accountId } + .distinctUntilChanged(), + ) { organizations, (selectedOrganizationId, selectedAccountId) -> + val items = organizations + .asSequence() + .filter { it.accountId == selectedAccountId } + .map { organization -> + val selected = organization.organizationId == selectedOrganizationId + val onClick = if ( + organization.enabled && + !readOnlyOrganization + ) { + ::onClickOrganization.partially1(organization.organizationId) + } else { + null + } + OrganizationConfirmationState.Content.Item( + key = organization.key, + title = organization.name, + selected = selected, + onClick = onClick, + ) + } + .toList() + OrganizationConfirmationState.Content.Section( + items = items, + text = translate(Res.strings.destinationpicker_organization_ownership_note) + .takeIf { selectedOrganizationId != null }, + ) + } + val itemCollectionsFlow = combine( + collectionsFlow, + selectionFlow + .map { + Triple( + it.collectionsIds, + it.organizationId, + it.accountId, + ) + } + .distinctUntilChanged(), + ) { collections, (selectedCollectionIds, selectedOrganizationId, selectedAccountId) -> + val items = collections + .asSequence() + .filter { it.accountId == selectedAccountId && it.organizationId == selectedOrganizationId } + .map { collection -> + val selected = collection.collectionId in selectedCollectionIds + val onClick = if ( + collection.enabled && + !readOnlyCollections + ) { + ::onClickCollection.partially1(collection.collectionId) + } else { + null + } + OrganizationConfirmationState.Content.Item( + key = collection.key, + title = collection.name, + icon = Icons.Outlined.Lock + .takeIf { collection.readOnly } + ?.let { + // create icon composable + icon(it) + }, + selected = selected, + onClick = onClick, + ) + } + .toList() + OrganizationConfirmationState.Content.Section( + items = items, + ) + } + + data class Ty( + val folderType: FolderInfoType, + val folderId: String?, + val accountId: String?, + ) + + val itemFoldersFlow = combine( + foldersFlow, + selectionFlow + .map { + Ty( + folderType = it.folderType, + folderId = it.folderId, + accountId = it.accountId, + ) + } + .distinctUntilChanged(), + ) { folders, (selectedFolderType, selectedFolderId, selectedAccountId) -> + val items = folders + .asSequence() + .filter { it.accountId == selectedAccountId } + .map { folder -> + val selected = folder.folder.type() == selectedFolderType && + folder.folder.folderId() == selectedFolderId + val onClick = if ( + folder.enabled && + !readOnlyFolder + ) { + ::onClickFolder.partially1(folder.folder) + } else { + null + } + val icon = when (folder.folder) { + is FolderVariant.FolderInfo.None -> Icons.Outlined.FolderOff + is FolderVariant.FolderInfo.New -> Icons.Outlined.Add + else -> null + } + OrganizationConfirmationState.Content.Item( + key = folder.key, + icon = icon + ?.let { + // create icon composable + icon(it) + }, + title = folder.name, + selected = selected, + onClick = onClick, + ) + } + .toList() + OrganizationConfirmationState.Content.Section( + items = items, + ) + } + + val contentFlow = combine( + itemAccountsFlow, + itemOrganizationsFlow, + itemCollectionsFlow, + itemFoldersFlow, + // folder name + combine( + selectionFlow + .map { it.folderType } + .distinctUntilChanged(), + folderValidatedFlow, + ) { folderType, folderNameValidated -> + when (folderType) { + FolderInfoType.New -> TextFieldModel2( + state = folderNameState, + text = folderNameValidated.model, + error = (folderNameValidated as? Validated.Failure)?.error, + onChange = folderNameState::value::set, + ) + + else -> null + } + }, + ) { accounts, organizations, collections, folders, folderNew -> + OrganizationConfirmationState.Content( + accounts = accounts, + organizations = organizations, + collections = collections, + folders = folders, + folderNew = folderNew, + ) + } + + combine( + contentFlow, + combine( + selectionFlow, + folderValidatedFlow, + ) { selection, folderNameValidated -> + val onConfirm = if ( + // Account must be not empty + selection.accountId != null && + // If you save to an organization, you must pick at least one + // collection... otherwise the collection ids must be empty. + (selection.organizationId != null) == selection.collectionsIds.isNotEmpty() && + (selection.folderType != FolderInfoType.New || folderNameValidated is Validated.Success) + ) { + val folder = when (selection.folderType) { + FolderInfoType.None -> FolderInfo.None + FolderInfoType.New -> FolderInfo.New(name = folderNameValidated.model) + FolderInfoType.Id -> { + val id = selection.folderId + ?: return@combine null // must not be null + FolderInfo.Id(id) + } + } + val result = OrganizationConfirmationResult.Confirm( + accountId = selection.accountId, + organizationId = selection.organizationId, + collectionsIds = selection.collectionsIds, + folderId = folder, + ) + // lambda + transmitter + .partially1(result) + .andThen { + navigatePopSelf() + } + } else { + null + } + onConfirm + }, + ) { content, onConfirm -> + OrganizationConfirmationState( + content = Loadable.Ok(content), + onDeny = { + transmitter(OrganizationConfirmationResult.Deny) + navigatePopSelf() + }, + onConfirm = onConfirm, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/crashlytics/crashlyticsMap.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/crashlytics/crashlyticsMap.kt new file mode 100644 index 00000000..91aed0b3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/crashlytics/crashlyticsMap.kt @@ -0,0 +1,64 @@ +package com.artemchep.keyguard.feature.crashlytics + +import arrow.core.Either +import arrow.core.getOrElse +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.handleErrorTap +import com.artemchep.keyguard.platform.recordException +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flatMapConcat +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.onEach + +fun Flow.crashlyticsAttempt( + transform: (Throwable) -> Throwable? = { it }, +) = this + .attempt() + .onEach { result -> + if (result is Either.Left) { + val newException = transform(result.value) + if (newException != null) { + recordException(newException) + } + } + } + +fun Flow.crashlyticsMap( + transform: (Throwable) -> Throwable? = { it }, + orElse: (Throwable) -> T, +) = crashlyticsFlatMapConcat( + transform = transform, + orElse = { + val fallbackValue = orElse(it) + flowOf(fallbackValue) + }, +) + +fun Flow.crashlyticsFlatMapConcat( + transform: (Throwable) -> Throwable? = { it }, + orElse: Flow.(Throwable) -> Flow, +): Flow = this + .attempt() + .flatMapConcat { result -> + result + .map { flowOf(it) } + .getOrElse { e -> + val newException = transform(e) + if (newException != null) { + recordException(newException) + } + // Fall back to the default value. + orElse(e) + } + } + +fun IO.crashlyticsTap( + transform: (Throwable) -> Throwable? = { it }, +) = this + .handleErrorTap { e -> + val newException = transform(e) + if (newException != null) { + recordException(newException) + } + } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/datasafety/DataSafetyRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/datasafety/DataSafetyRoute.kt new file mode 100644 index 00000000..ff9456c5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/datasafety/DataSafetyRoute.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.datasafety + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.Route + +object DataSafetyRoute : Route { + @Composable + override fun Content() { + DataSafetyScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/datasafety/DataSafetyScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/datasafety/DataSafetyScreen.kt new file mode 100644 index 00000000..8aecf412 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/datasafety/DataSafetyScreen.kt @@ -0,0 +1,274 @@ +package com.artemchep.keyguard.feature.datasafety + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.widthIn +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.LocalTextStyle +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.feature.home.vault.component.LargeSection +import com.artemchep.keyguard.feature.home.vault.component.Section +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.ScaffoldColumn +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.toolbar.LargeToolbar +import com.artemchep.keyguard.ui.util.HorizontalDivider +import dev.icerock.moko.resources.compose.stringResource + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun DataSafetyScreen() { + val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + ScaffoldColumn( + modifier = Modifier + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + LargeToolbar( + title = { + Text( + text = stringResource(Res.strings.datasafety_header_title), + ) + }, + navigationIcon = { + NavigationIcon() + }, + scrollBehavior = scrollBehavior, + ) + }, + ) { + DataSafetyScreenContent() + } +} + +@Composable +private fun ColumnScope.DataSafetyScreenContent() { + val navigationController by rememberUpdatedState(LocalNavigationController.current) + val secondaryTextStyle = LocalTextStyle.current + .merge(MaterialTheme.typography.bodyMedium) + .copy( + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + ) + + LargeSection( + text = stringResource(Res.strings.datasafety_local_section), + ) + Text( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + text = stringResource(Res.strings.datasafety_local_text), + ) + Spacer( + modifier = Modifier + .height(16.dp), + ) + Section( + text = stringResource(Res.strings.datasafety_local_downloads_section), + ) + TwoColumnRow( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = Dimens.horizontalPadding), + title = stringResource(Res.strings.encryption), + value = stringResource(Res.strings.none), + ) + Spacer( + modifier = Modifier + .height(16.dp), + ) + Section( + text = stringResource(Res.strings.datasafety_local_settings_section), + ) + TwoColumnRow( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = Dimens.horizontalPadding), + title = stringResource(Res.strings.encryption), + value = "256-bit AES", + ) + Spacer( + modifier = Modifier + .height(16.dp), + ) + CompositionLocalProvider( + LocalTextStyle provides secondaryTextStyle, + ) { + Column { + Text( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + text = stringResource(Res.strings.datasafety_local_settings_note), + ) + } + } + Spacer( + modifier = Modifier + .height(16.dp), + ) + Section( + text = stringResource(Res.strings.datasafety_local_vault_section), + ) + TwoColumnRow( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = Dimens.horizontalPadding), + title = stringResource(Res.strings.encryption), + value = stringResource(Res.strings.encryption_algorithm_256bit_aes), + ) + Spacer( + modifier = Modifier + .height(16.dp), + ) + CompositionLocalProvider( + LocalTextStyle provides secondaryTextStyle, + ) { + Column { + val labelAppPassword = stringResource(Res.strings.app_password) + val labelHash = stringResource(Res.strings.encryption_hash) + val labelSalt = stringResource(Res.strings.encryption_salt) + val labelKey = stringResource(Res.strings.encryption_key) + Text( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + text = stringResource( + Res.strings.datasafety_local_encryption_algorithm_intro, + ), + ) + Spacer( + modifier = Modifier + .height(16.dp), + ) + TwoColumnRow( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = Dimens.horizontalPadding), + title = labelSalt, + value = stringResource(Res.strings.encryption_random_bits_data, 64), + ) + HorizontalDivider( + modifier = Modifier + .padding(vertical = 8.dp) + .padding(horizontal = Dimens.horizontalPadding), + ) + TwoColumnRow( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = Dimens.horizontalPadding), + title = labelHash, + value = "PBKDF2($labelAppPassword, $labelSalt)", + ) + HorizontalDivider( + modifier = Modifier + .padding(vertical = 8.dp) + .padding(horizontal = Dimens.horizontalPadding), + ) + TwoColumnRow( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = Dimens.horizontalPadding), + title = labelKey, + value = "PBKDF2($labelAppPassword, $labelHash)", + ) + Spacer( + modifier = Modifier + .height(16.dp), + ) + Text( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + text = stringResource( + Res.strings.datasafety_local_encryption_algorithm_outro, + ), + ) + } + } + HorizontalDivider( + modifier = Modifier + .padding(vertical = 16.dp), + ) + Text( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + text = stringResource( + Res.strings.datasafety_local_unlocking_vault, + stringResource(Res.strings.encryption_key), + ), + ) + LargeSection( + text = stringResource(Res.strings.datasafety_remote_section), + ) + Text( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + text = stringResource(Res.strings.datasafety_remote_text), + ) + TextButton( + modifier = Modifier + .padding( + vertical = 4.dp, + horizontal = 4.dp, + ), + onClick = { + val intent = NavigationIntent.NavigateToBrowser( + url = "https://bitwarden.com/help/what-encryption-is-used/", + ) + navigationController.queue(intent) + }, + ) { + Text( + text = stringResource(Res.strings.learn_more), + ) + } +} + +@Composable +private fun TwoColumnRow( + modifier: Modifier = Modifier, + title: String, + value: String, +) { + Row( + modifier = modifier, + verticalAlignment = Alignment.Top, + ) { + Text( + modifier = Modifier + .weight(1f) + .widthIn(max = 120.dp), + text = title, + fontWeight = FontWeight.Medium, + ) + Spacer(modifier = Modifier.width(16.dp)) + Text( + modifier = Modifier + .weight(1f) + .widthIn(max = 120.dp), + text = value, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/datepicker/DatePickerResult.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/datepicker/DatePickerResult.kt new file mode 100644 index 00000000..134234ef --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/datepicker/DatePickerResult.kt @@ -0,0 +1,13 @@ +package com.artemchep.keyguard.feature.datepicker + +import java.time.Month +import java.time.Year + +sealed interface DatePickerResult { + data object Deny : DatePickerResult + + data class Confirm( + val month: Month, + val year: Year, + ) : DatePickerResult +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/datepicker/DatePickerRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/datepicker/DatePickerRoute.kt new file mode 100644 index 00000000..849dc63c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/datepicker/DatePickerRoute.kt @@ -0,0 +1,24 @@ +package com.artemchep.keyguard.feature.datepicker + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.DialogRouteForResult +import com.artemchep.keyguard.feature.navigation.RouteResultTransmitter + +data class DatePickerRoute( + val args: Args, +) : DialogRouteForResult { + data class Args( + val month: Int? = null, + val year: Int? = null, + ) + + @Composable + override fun Content( + transmitter: RouteResultTransmitter, + ) { + DatePickerScreen( + args = args, + transmitter = transmitter, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/datepicker/DatePickerScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/datepicker/DatePickerScreen.kt new file mode 100644 index 00000000..409c65d7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/datepicker/DatePickerScreen.kt @@ -0,0 +1,206 @@ +package com.artemchep.keyguard.feature.datepicker + +import androidx.compose.animation.animateContentSize +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.lazy.rememberLazyListState +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.CalendarMonth +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.getOrNull +import com.artemchep.keyguard.feature.dialog.Dialog +import com.artemchep.keyguard.feature.navigation.RouteResultTransmitter +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.theme.selectedContainer +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.collections.immutable.ImmutableList + +@Composable +fun DatePickerScreen( + args: DatePickerRoute.Args, + transmitter: RouteResultTransmitter, +) { + val loadableState = produceDatePickerState( + args = args, + transmitter = transmitter, + ) + Dialog( + icon = icon(Icons.Outlined.CalendarMonth), + title = { + Text(stringResource(Res.strings.datepicker_title)) + }, + content = { + Column { + val state = loadableState.getOrNull() + ?: return@Column + Content( + state = state, + ) + } + }, + contentScrollable = false, + actions = { + val updatedOnClose by rememberUpdatedState(loadableState.getOrNull()?.onDeny) + val updatedOnOk by rememberUpdatedState(loadableState.getOrNull()?.onConfirm) + TextButton( + enabled = updatedOnClose != null, + onClick = { + updatedOnClose?.invoke() + }, + ) { + Text(stringResource(Res.strings.close)) + } + TextButton( + enabled = updatedOnOk != null, + onClick = { + updatedOnOk?.invoke() + }, + ) { + Text(stringResource(Res.strings.ok)) + } + }, + ) +} + +@Composable +private fun ColumnScope.Content( + state: DatePickerState, +) { + Surface( + modifier = Modifier + .padding( + horizontal = 8.dp, + vertical = 8.dp, + ), + color = MaterialTheme.colorScheme.primaryContainer, + shape = MaterialTheme.shapes.medium, + ) { + Row( + modifier = Modifier + .fillMaxWidth() + .padding(16.dp), + horizontalArrangement = Arrangement.SpaceEvenly, + ) { + val monthRes = getMonthTitleStringRes(state.content.month) + val year = getYearTitle(state.content.year) + Text( + modifier = Modifier + .animateContentSize() + .alignByBaseline(), + text = stringResource(monthRes), + style = MaterialTheme.typography.displaySmall, + ) + Text( + modifier = Modifier + .animateContentSize() + .alignByBaseline(), + text = year, + style = MaterialTheme.typography.displayMedium, + ) + } + } + Row( + modifier = Modifier, + ) { + MonthPicker( + modifier = Modifier + .weight(1f), + month = state.content.month, + months = state.content.months, + ) + MonthPicker( + modifier = Modifier + .weight(1f), + month = state.content.year, + months = state.content.years, + ) + } +} + +@Composable +private fun MonthPicker( + modifier: Modifier = Modifier, + month: Int, + months: ImmutableList, +) { + val listState = rememberLazyListState() + LazyColumn( + modifier = modifier, + state = listState, + ) { + items( + items = months, + key = { it.key }, + ) { item -> + val selected = month == item.key + MonthPickerItem( + item = item, + selected = selected, + ) + } + } + + LaunchedEffect(Unit) { + val index = months.indexOfFirst { it.key == month } + if (index != -1) { + val finalIndex = index.minus(1).coerceAtLeast(0) + listState.scrollToItem(finalIndex) + } + } +} + +@Composable +private fun MonthPickerItem( + modifier: Modifier = Modifier, + item: DatePickerState.Item, + selected: Boolean, +) { + val backgroundColor = if (selected) { + MaterialTheme.colorScheme.selectedContainer + } else { + Color.Unspecified + } + FlatItem( + modifier = modifier, + backgroundColor = backgroundColor, + title = { + Row { + Text(text = item.title) + + val index = item.index + if (!index.isNullOrEmpty()) { + Text( + modifier = Modifier + .padding(start = 8.dp) + .alignByBaseline(), + text = index, + color = LocalContentColor.current + .combineAlpha(DisabledEmphasisAlpha), + ) + } + } + }, + onClick = item.onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/datepicker/DatePickerState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/datepicker/DatePickerState.kt new file mode 100644 index 00000000..3b15a7d4 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/datepicker/DatePickerState.kt @@ -0,0 +1,28 @@ +package com.artemchep.keyguard.feature.datepicker + +import androidx.compose.runtime.Immutable +import androidx.compose.runtime.Stable +import kotlinx.collections.immutable.ImmutableList + +@Immutable +data class DatePickerState( + val content: Content, + val onDeny: (() -> Unit)? = null, + val onConfirm: (() -> Unit)? = null, +) { + @Immutable + data class Content( + val month: Int, + val months: ImmutableList, + val year: Int, + val years: ImmutableList, + ) + + @Stable + data class Item( + val key: Int, + val title: String, + val index: String? = null, + val onClick: () -> Unit, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/datepicker/DatePickerStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/datepicker/DatePickerStateProducer.kt new file mode 100644 index 00000000..ddcab7ca --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/datepicker/DatePickerStateProducer.kt @@ -0,0 +1,122 @@ +package com.artemchep.keyguard.feature.datepicker + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.feature.navigation.RouteResultTransmitter +import com.artemchep.keyguard.feature.navigation.state.navigatePopSelf +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.res.Res +import dev.icerock.moko.resources.StringResource +import kotlinx.collections.immutable.toImmutableList +import kotlinx.coroutines.flow.combine +import kotlinx.datetime.Clock +import kotlinx.datetime.Month +import kotlinx.datetime.TimeZone +import kotlinx.datetime.toLocalDateTime +import java.time.Year + +@Composable +fun produceDatePickerState( + args: DatePickerRoute.Args, + transmitter: RouteResultTransmitter, +): Loadable = produceScreenState( + key = "date_picker", + initial = Loadable.Loading, + args = arrayOf(), +) { + val yearCurrent = getYear() + val yearSink = mutablePersistedFlow("year") { + val year = args.year + ?: getYear() + year + } + val yearItems = kotlin.run { + val yearMin = yearCurrent - 32 + val yearMax = yearCurrent + 64 + (yearMin..yearMax) + .map { year -> + val title = getYearTitle(year) + DatePickerState.Item( + key = year, + title = title, + onClick = { + yearSink.value = year + }, + ) + } + .toImmutableList() + } + + val monthSink = mutablePersistedFlow("month") { + val month = args.month + ?: Clock.System.now().toLocalDateTime(TimeZone.UTC).month.value + month + } + val monthItems = kotlin.run { + (1..12) + .map { month -> + val index = kotlin.run { + val m = month.toString().padStart(2, '0') + "($m)" + } + val titleRes = getMonthTitleStringRes(month) + DatePickerState.Item( + key = month, + title = translate(titleRes), + index = index, + onClick = { + monthSink.value = month + }, + ) + } + .toImmutableList() + } + + combine( + monthSink, + yearSink, + ) { month, year -> + val content = DatePickerState.Content( + month = month, + months = monthItems, + year = year, + years = yearItems, + ) + val state = DatePickerState( + content = content, + onDeny = { + transmitter(DatePickerResult.Deny) + navigatePopSelf() + }, + onConfirm = { + val result = DatePickerResult.Confirm( + month = Month.of(month), + year = Year.of(year), + ) + transmitter(result) + navigatePopSelf() + }, + ) + Loadable.Ok(state) + } +} + +fun getMonthTitleStringRes(month: Int): StringResource = when (month) { + 1 -> Res.strings.january + 2 -> Res.strings.february + 3 -> Res.strings.march + 4 -> Res.strings.april + 5 -> Res.strings.may + 6 -> Res.strings.june + 7 -> Res.strings.july + 8 -> Res.strings.august + 9 -> Res.strings.september + 10 -> Res.strings.october + 11 -> Res.strings.november + 12 -> Res.strings.december + else -> throw IllegalArgumentException("Number of the month should be in 1..12 range, got $month instead!") +} + +fun getYearTitle(year: Int) = year.toString() + +private fun getYear() = Clock.System.now().toLocalDateTime(TimeZone.UTC).year diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/decorator/ItemDecorator.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/decorator/ItemDecorator.kt new file mode 100644 index 00000000..a3f2b4f6 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/decorator/ItemDecorator.kt @@ -0,0 +1,75 @@ +package com.artemchep.keyguard.feature.decorator + +import com.artemchep.keyguard.common.usecase.DateFormatter +import kotlinx.datetime.Instant +import kotlinx.datetime.TimeZone +import kotlinx.datetime.monthsUntil + +interface ItemDecorator { + fun getOrNull(item: Value): Generic? +} + +object ItemDecoratorNone : ItemDecorator { + override fun getOrNull(item: Any) = null +} + +class ItemDecoratorDate( + private val dateFormatter: DateFormatter, + private val selector: (Value) -> Instant?, + private val factory: (String, String) -> Generic, +) : ItemDecorator { + private val past = Instant.fromEpochMilliseconds(0L) + + /** + * Last shown month, used to not repeat the sections + * if it stays the same. + */ + private var lastMonths: Int? = null + + override fun getOrNull(item: Value): Generic? { + val instant = selector(item) ?: return null + val months = instant + .monthsUntil(past, TimeZone.UTC) + if (months == lastMonths) { + return null + } + + lastMonths = months + + val text = dateFormatter.formatDateShort(instant) + return factory( + "decorator.date.$months", + text, + ) + } +} + +class ItemDecoratorTitle( + private val selector: (Value) -> String?, + private val factory: (String, String) -> Generic, +) : ItemDecorator { + /** + * Last shown character, used to not repeat the sections + * if it stays the same. + */ + private var lastChar: Char? = null + + override fun getOrNull(item: Value): Generic? { + val char = selector(item) + ?.firstOrNull() + ?.uppercaseChar() + // Replace all non letter symbols with a common + // character. + ?.takeIf { it.isLetter() } + ?: '#' + if (char == lastChar) { + return null + } + + lastChar = char + return factory( + "decorator.title.$char", + char.toString(), + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/dialog/Dialog.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/dialog/Dialog.kt new file mode 100644 index 00000000..e57ccd4f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/dialog/Dialog.kt @@ -0,0 +1,229 @@ +package com.artemchep.keyguard.feature.dialog + +import androidx.compose.foundation.background +import androidx.compose.foundation.gestures.detectTapGestures +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.BoxScope +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.FlowRow +import androidx.compose.foundation.layout.FlowRowScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.consumeWindowInsets +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.union +import androidx.compose.foundation.layout.widthIn +import androidx.compose.foundation.layout.windowInsetsPadding +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.LocalAbsoluteTonalElevation +import androidx.compose.material3.LocalTextStyle +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.ProvideTextStyle +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.material3.surfaceColorAtElevation +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.input.pointer.pointerInput +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.platform.leIme +import com.artemchep.keyguard.platform.leSystemBars +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.util.HorizontalDivider + +// See: +// https://m3.material.io/components/dialogs/specs#9a8c226b-19fa-4d6b-894e-e7d5ca9203e8 + +@OptIn(ExperimentalMaterial3Api::class, ExperimentalLayoutApi::class) +@Composable +fun Dialog( + icon: (@Composable () -> Unit)? = null, + title: (@Composable ColumnScope.() -> Unit)?, + content: (@Composable BoxScope.() -> Unit)?, + contentScrollable: Boolean = true, + actions: @Composable FlowRowScope.() -> Unit, +) { + Dialog { + val scrollState = rememberScrollState() + val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior() + Column( + modifier = Modifier, + ) { + Column( + modifier = Modifier + .weight(1f, fill = false) + .nestedScroll(scrollBehavior.nestedScrollConnection), + ) { + Spacer( + modifier = Modifier + .height(24.dp), + ) + if (title != null) { + val centerAlign = icon != null + Column( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding) + .fillMaxWidth(), + horizontalAlignment = if (centerAlign) { + Alignment.CenterHorizontally + } else { + Alignment.Start + }, + ) { + if (icon != null) { + icon() + Spacer( + modifier = Modifier + .height(16.dp), + ) + } + ProvideTextStyle( + MaterialTheme.typography.titleLarge + .copy( + textAlign = if (centerAlign) { + TextAlign.Center + } else { + TextAlign.Start + }, + ), + ) { + title() + } + Spacer( + modifier = Modifier + .height(16.dp), + ) + } + } + if (content != null) { + Box { + Box( + modifier = Modifier + .fillMaxWidth() + .then( + if (contentScrollable) { + Modifier + .verticalScroll(scrollState) + } else { + Modifier + }, + ), + contentAlignment = Alignment.TopStart, + ) { + CompositionLocalProvider( + LocalTextStyle provides MaterialTheme.typography.bodyMedium, + ) { + content() + } + } + androidx.compose.animation.AnimatedVisibility( + modifier = Modifier + .align(Alignment.TopCenter) + .fillMaxWidth(), + visible = scrollState.canScrollBackward && contentScrollable, + ) { + HorizontalDivider(transparency = false) + } + androidx.compose.animation.AnimatedVisibility( + modifier = Modifier + .align(Alignment.BottomCenter) + .fillMaxWidth(), + visible = scrollState.canScrollForward && contentScrollable, + ) { + HorizontalDivider(transparency = false) + } + } + Spacer( + modifier = Modifier + .height(16.dp), + ) + } + } + FlowRow( + modifier = Modifier + .padding( + start = 16.dp, + end = 16.dp, + ) + .fillMaxWidth(), + verticalArrangement = Arrangement.spacedBy(8.dp), + horizontalArrangement = Arrangement.spacedBy(8.dp, Alignment.End), + ) { + actions() + } + Spacer( + modifier = Modifier + .height(16.dp), + ) + } + } +} + +@Composable +fun Dialog( + content: @Composable BoxScope.() -> Unit, +) { + val updatedNavController by rememberUpdatedState(LocalNavigationController.current) + + val tintColor = MaterialTheme.colorScheme.background + .combineAlpha(0.8f) + Box( + modifier = Modifier + .background(tintColor) + .pointerInput(Unit) { + detectTapGestures { + val intent = NavigationIntent.Pop + updatedNavController.queue(intent) + } + } + .fillMaxSize(), + ) { + CompositionLocalProvider( + LocalAbsoluteTonalElevation provides 8.dp, + ) { + val verticalInsets = WindowInsets.leSystemBars + .union(WindowInsets.leIme) + Box( + modifier = Modifier + .padding(16.dp) + .windowInsetsPadding(verticalInsets) + .consumeWindowInsets(verticalInsets) + .clip(MaterialTheme.shapes.extraLarge) + .background( + MaterialTheme.colorScheme + .surfaceColorAtElevation(LocalAbsoluteTonalElevation.current), + ) + .widthIn( + min = 280.dp, + max = 560.dp, + ) + .align(Alignment.Center) + // Eat all pointer inputs from within the + // dialog composable. + .pointerInput(Unit) { + detectTapGestures { + } + }, + ) { + content() + } + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/duplicates/DuplicatesRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/duplicates/DuplicatesRoute.kt new file mode 100644 index 00000000..40ce9fe6 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/duplicates/DuplicatesRoute.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.feature.duplicates + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.model.DFilter +import com.artemchep.keyguard.feature.navigation.Route + +data class DuplicatesRoute( + val args: Args = Args(), +) : Route { + data class Args( + val filter: DFilter? = null, + ) + + @Composable + override fun Content() { + DuplicatesScreen(args) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/duplicates/DuplicatesScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/duplicates/DuplicatesScreen.kt new file mode 100644 index 00000000..0cff0a52 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/duplicates/DuplicatesScreen.kt @@ -0,0 +1,193 @@ +package com.artemchep.keyguard.feature.duplicates + +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.widthIn +import androidx.compose.foundation.lazy.items +import androidx.compose.material.ExperimentalMaterialApi +import androidx.compose.material3.DropdownMenu +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.text.style.TextOverflow +import com.artemchep.keyguard.common.model.fold +import com.artemchep.keyguard.common.model.getOrNull +import com.artemchep.keyguard.feature.EmptySearchView +import com.artemchep.keyguard.feature.home.vault.component.VaultListItem +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.DefaultSelection +import com.artemchep.keyguard.ui.DropdownMenuItemFlat +import com.artemchep.keyguard.ui.DropdownMinWidth +import com.artemchep.keyguard.ui.DropdownScopeImpl +import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.ScaffoldLazyColumn +import com.artemchep.keyguard.ui.icons.DropdownIcon +import com.artemchep.keyguard.ui.skeleton.SkeletonItem +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.toolbar.LargeToolbar +import dev.icerock.moko.resources.compose.stringResource + +@OptIn( + ExperimentalMaterial3Api::class, + ExperimentalMaterialApi::class, + ExperimentalFoundationApi::class, +) +@Composable +fun DuplicatesScreen( + args: DuplicatesRoute.Args, +) { + val loadableState = produceDuplicatesState(args) + val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + ScaffoldLazyColumn( + modifier = Modifier + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + LargeToolbar( + title = { + Column() { + Text( + text = stringResource(Res.strings.watchtower_header_title), + style = MaterialTheme.typography.labelSmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + overflow = TextOverflow.Ellipsis, + maxLines = 2, + ) + Text( + text = stringResource(Res.strings.watchtower_item_duplicate_items_title), + style = MaterialTheme.typography.titleMedium, + overflow = TextOverflow.Ellipsis, + maxLines = 1, + ) + } + }, + navigationIcon = { + NavigationIcon() + }, + actions = { + var isAutofillWindowShowing by remember { + mutableStateOf(false) + } + + val normalContentColor = LocalContentColor.current + TextButton( + onClick = { + isAutofillWindowShowing = true + }, + ) { + Column { + Text(text = "Sensitivity") + val textOrNull = + loadableState.getOrNull()?.sensitivity?.name + ?.lowercase() + ?.capitalize() + ExpandedIfNotEmpty( + valueOrNull = textOrNull, + ) { text -> + Text( + text = text, + style = MaterialTheme.typography.labelSmall, + color = normalContentColor + .combineAlpha(MediumEmphasisAlpha), + ) + } + } + Spacer( + modifier = Modifier + .width(Dimens.buttonIconPadding), + ) + DropdownIcon() + + // Inject the dropdown popup to the bottom of the + // content. + val onDismissRequest = { + isAutofillWindowShowing = false + } + DropdownMenu( + modifier = Modifier + .widthIn(min = DropdownMinWidth), + expanded = isAutofillWindowShowing, + onDismissRequest = onDismissRequest, + ) { + val scope = DropdownScopeImpl(this, onDismissRequest = onDismissRequest) + loadableState.getOrNull()?.sensitivities.orEmpty() + .forEachIndexed { index, action -> + scope.DropdownMenuItemFlat( + action = action, + ) + } + } + } + }, + scrollBehavior = scrollBehavior, + ) + }, + bottomBar = { + val screenState = loadableState.getOrNull() + ?: return@ScaffoldLazyColumn + val selectionState = screenState.selectionStateFlow.collectAsState() + DefaultSelection( + state = selectionState.value, + ) + }, + ) { + loadableState.fold( + ifLoading = { + for (i in 0..2) { + item(i) { + SkeletonItem() + } + } + }, + ifOk = { state -> + val items = state.items + if (items.isEmpty()) { + item("header.empty") { + NoItemsPlaceholder() + } + } + items( + items = items, + key = { model -> model.id }, + ) { model -> + VaultListItem( + modifier = Modifier + .animateItemPlacement(), + item = model, + ) + } + }, + ) + } +} + +@Composable +private fun NoItemsPlaceholder( + modifier: Modifier = Modifier, +) { + EmptySearchView( + modifier = modifier, + text = { + Text( + text = stringResource(Res.strings.duplicates_empty_label), + ) + }, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/duplicates/DuplicatesState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/duplicates/DuplicatesState.kt new file mode 100644 index 00000000..7c8f602a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/duplicates/DuplicatesState.kt @@ -0,0 +1,14 @@ +package com.artemchep.keyguard.feature.duplicates + +import com.artemchep.keyguard.common.usecase.CipherDuplicatesCheck +import com.artemchep.keyguard.feature.home.vault.model.VaultItem2 +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.Selection +import kotlinx.coroutines.flow.StateFlow + +data class DuplicatesState( + val items: List, + val sensitivity: CipherDuplicatesCheck.Sensitivity, + val sensitivities: List, + val selectionStateFlow: StateFlow, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/duplicates/DuplicatesStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/duplicates/DuplicatesStateProducer.kt new file mode 100644 index 00000000..c5e7aaa6 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/duplicates/DuplicatesStateProducer.kt @@ -0,0 +1,560 @@ +package com.artemchep.keyguard.feature.duplicates + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Merge +import androidx.compose.runtime.Composable +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.model.DCollection +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.DSecretDuplicateGroup +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.ToastMessage +import com.artemchep.keyguard.common.model.canDelete +import com.artemchep.keyguard.common.model.canEdit +import com.artemchep.keyguard.common.service.clipboard.ClipboardService +import com.artemchep.keyguard.common.usecase.CipherDuplicatesCheck +import com.artemchep.keyguard.common.usecase.CipherToolbox +import com.artemchep.keyguard.common.usecase.GetAppIcons +import com.artemchep.keyguard.common.usecase.GetCanWrite +import com.artemchep.keyguard.common.usecase.GetCiphers +import com.artemchep.keyguard.common.usecase.GetCollections +import com.artemchep.keyguard.common.usecase.GetConcealFields +import com.artemchep.keyguard.common.usecase.GetOrganizations +import com.artemchep.keyguard.common.usecase.GetTotpCode +import com.artemchep.keyguard.common.usecase.GetWebsiteIcons +import com.artemchep.keyguard.common.util.flow.persistingStateIn +import com.artemchep.keyguard.feature.attachments.SelectableItemState +import com.artemchep.keyguard.feature.attachments.SelectableItemStateRaw +import com.artemchep.keyguard.feature.confirmation.elevatedaccess.createElevatedAccessDialogIntent +import com.artemchep.keyguard.feature.generator.history.mapLatestScoped +import com.artemchep.keyguard.feature.home.vault.model.VaultItem2 +import com.artemchep.keyguard.feature.home.vault.screen.VaultViewRoute +import com.artemchep.keyguard.feature.home.vault.screen.toVaultListItem +import com.artemchep.keyguard.feature.home.vault.screen.verify +import com.artemchep.keyguard.feature.home.vault.util.cipherChangeNameAction +import com.artemchep.keyguard.feature.home.vault.util.cipherChangePasswordAction +import com.artemchep.keyguard.feature.home.vault.util.cipherCopyToAction +import com.artemchep.keyguard.feature.home.vault.util.cipherDeleteAction +import com.artemchep.keyguard.feature.home.vault.util.cipherDisableConfirmAccessAction +import com.artemchep.keyguard.feature.home.vault.util.cipherEditAction +import com.artemchep.keyguard.feature.home.vault.util.cipherEnableConfirmAccessAction +import com.artemchep.keyguard.feature.home.vault.util.cipherMergeInto +import com.artemchep.keyguard.feature.home.vault.util.cipherMergeIntoAction +import com.artemchep.keyguard.feature.home.vault.util.cipherMoveToFolderAction +import com.artemchep.keyguard.feature.home.vault.util.cipherRestoreAction +import com.artemchep.keyguard.feature.home.vault.util.cipherTrashAction +import com.artemchep.keyguard.feature.home.vault.util.cipherViewPasswordHistoryAction +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.state.RememberStateFlowScope +import com.artemchep.keyguard.feature.navigation.state.copy +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.Selection +import com.artemchep.keyguard.ui.icons.KeyguardFavourite +import com.artemchep.keyguard.ui.icons.KeyguardFavouriteOutline +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.selection.SelectionHandle +import com.artemchep.keyguard.ui.selection.selectionHandle +import kotlinx.collections.immutable.toPersistentList +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +private data class ConfigMapper( + val concealFields: Boolean, + val appIcons: Boolean, + val websiteIcons: Boolean, +) + +private data class SelectionData( + val ids: Set, + val group: String, +) + +@Composable +fun produceDuplicatesState( + args: DuplicatesRoute.Args, +) = with(localDI().direct) { + produceDuplicatesState( + directDI = this, + args = args, + clipboardService = instance(), + getTotpCode = instance(), + getConcealFields = instance(), + getAppIcons = instance(), + getWebsiteIcons = instance(), + getOrganizations = instance(), + getCollections = instance(), + getCiphers = instance(), + getCanWrite = instance(), + cipherToolbox = instance(), + cipherDuplicatesCheck = instance(), + ) +} + +@Composable +fun produceDuplicatesState( + directDI: DirectDI, + args: DuplicatesRoute.Args, + clipboardService: ClipboardService, + getTotpCode: GetTotpCode, + getConcealFields: GetConcealFields, + getAppIcons: GetAppIcons, + getWebsiteIcons: GetWebsiteIcons, + getOrganizations: GetOrganizations, + getCollections: GetCollections, + getCiphers: GetCiphers, + getCanWrite: GetCanWrite, + cipherToolbox: CipherToolbox, + cipherDuplicatesCheck: CipherDuplicatesCheck, +): Loadable = produceScreenState( + key = "duplicates", + initial = Loadable.Loading, + args = arrayOf( + getOrganizations, + getCiphers, + cipherDuplicatesCheck, + ), +) { + val copy = copy(clipboardService) + val sensitivitySink = mutablePersistedFlow("sensitivity") { + CipherDuplicatesCheck.Sensitivity.NORMAL + } + val selectionHandle = selectionHandle("selection") + val selectionGroupSink = mutablePersistedFlow("selection_group_id") { + "" + } + val selectionFlow = combine( + selectionGroupSink, + selectionHandle.idsFlow, + ) { group, ids -> + SelectionData( + group = group, + ids = ids, + ) + } + + fun onClickCipher( + cipher: DSecret, + ) { + val intent = NavigationIntent.NavigateToRoute( + VaultViewRoute( + itemId = cipher.id, + accountId = cipher.accountId, + ), + ) + navigate(intent) + } + + fun onLongClickCipher( + group: DSecretDuplicateGroup, + cipher: DSecret, + ) { + val canToggle = selectionGroupSink.value == group.id || + selectionHandle.idsFlow.value.isEmpty() + if (canToggle) { + selectionGroupSink.value = group.id + selectionHandle.toggleSelection(cipher.id) + } + } + + val configFlow = combine( + getConcealFields(), + getAppIcons(), + getWebsiteIcons(), + ) { concealFields, appIcons, websiteIcons -> + ConfigMapper( + concealFields = concealFields, + appIcons = appIcons, + websiteIcons = websiteIcons, + ) + }.distinctUntilChanged() + + val organizationsByIdFlow = getOrganizations() + .map { organizations -> + organizations + .associateBy { it.id } + } + + val ciphersComparator = Comparator { a, b -> + var r = a.name.compareTo(b.name, ignoreCase = true) + if (r == 0) r = a.id.compareTo(b.id) + r + } + val ciphersFlow = getCiphers() + .map { ciphers -> + ciphers + .filter { it.deletedDate == null } + .run { + val filter = args.filter + if (filter != null) { + val predicate = filter.prepare(directDI, ciphers) + filter(predicate) + } else { + this + } + } + } + .shareInScreenScope() + val groupsFlow = ciphersFlow + .combine(sensitivitySink) { ciphers, sensitivity -> + val groups = + cipherDuplicatesCheck.invoke(ciphers, sensitivity) + groups + .map { group -> + val groupedCiphers = group.ciphers + .sortedWith(ciphersComparator) + group.copy(ciphers = groupedCiphers) + } + .sortedByDescending { it.accuracy } + } + val itemsFlow = combine( + groupsFlow, + organizationsByIdFlow, + configFlow, + ) { groups, organizationsById, cfg -> Triple(groups, organizationsById, cfg) } + .mapLatestScoped { (groups, organizationsById, cfg) -> + val totalItemsCount = groups.sumOf { it.ciphers.size } + groups + .flatMapIndexed { index: Int, group -> + val groupedItems = group + .ciphers + .map { cipher -> + val selectableFlow = selectionFlow + .map { data -> + val matchesGroupId = data.group == group.id + SelectableItemStateRaw( + selecting = matchesGroupId && data.ids.isNotEmpty(), + selected = matchesGroupId && cipher.id in data.ids, + canSelect = matchesGroupId || data.ids.isEmpty(), + ) + } + .distinctUntilChanged() + .map { raw -> + val toggle = ::onLongClickCipher + .partially1(group) + .partially1(cipher) + val onClick = toggle.takeIf { raw.selecting } + val onLongClick = toggle + .takeIf { !raw.selecting && raw.canSelect } + SelectableItemState( + selecting = raw.selecting, + selected = raw.selected, + can = raw.canSelect, + onClick = onClick, + onLongClick = onLongClick, + ) + } + val openedStateFlow = flowOf("") + .map { + val isOpened = it == cipher.id + VaultItem2.Item.OpenedState(isOpened) + } + val sharing = SharingStarted.WhileSubscribed(1000L) + val localStateFlow = combine( + selectableFlow, + openedStateFlow, + ) { selectableState, openedState -> + VaultItem2.Item.LocalState( + openedState, + selectableState, + ) + }.persistingStateIn(this, sharing) + val item = cipher.toVaultListItem( + groupId = group.id, + copy = copy, + translator = this@produceScreenState, + getTotpCode = getTotpCode, + concealFields = cfg.concealFields, + appIcons = cfg.appIcons, + websiteIcons = cfg.websiteIcons, + organizationsById = organizationsById, + localStateFlow = localStateFlow, + onClick = { + VaultItem2.Item.Action.Go( + onClick = ::onClickCipher + .partially1(cipher), + ) + }, + onClickPasskey = { + null + }, + ) + item + } + val allItems = mutableListOf() + if (index > 0) { + allItems += VaultItem2.Section( + id = group.id, + ) + } + allItems += groupedItems + allItems += VaultItem2.Button( + id = "merge." + group.id, + title = translate(Res.strings.ciphers_action_merge_title), + leading = icon(Icons.Outlined.Merge), + onClick = { + val ciphers = groupedItems + .map { it.source } + cipherMergeInto( + cipherMerge = cipherToolbox.cipherMerge, + ciphers = ciphers, + ) + }, + ) + allItems + } + } + + val selectionStateFlow = createCipherSelectionFlow( + selectionHandle = selectionHandle, + ciphersFlow = ciphersFlow, + collectionsFlow = getCollections(), + canWriteFlow = getCanWrite(), + toolbox = cipherToolbox, + ) + .persistingStateIn(this, SharingStarted.WhileSubscribed()) + + itemsFlow + .combine(sensitivitySink) { items, sensitivity -> + val state = DuplicatesState( + items = items, + sensitivity = sensitivity, + sensitivities = CipherDuplicatesCheck.Sensitivity + .entries + .map { s -> + FlatItemAction( + title = s.name + .lowercase() + .capitalize(), + onClick = { + sensitivitySink.value = s + }, + ) + }, + selectionStateFlow = selectionStateFlow, + ) + Loadable.Ok(state) + } +} + +fun RememberStateFlowScope.createCipherSelectionFlow( + selectionHandle: SelectionHandle, + ciphersFlow: Flow>, + collectionsFlow: Flow>, + canWriteFlow: Flow, + // + toolbox: CipherToolbox, +) = combine( + ciphersFlow, + selectionHandle.idsFlow, + collectionsFlow, + canWriteFlow, +) { ciphers, selectedCipherIds, collections, canWrite -> + if (selectedCipherIds.isEmpty()) { + return@combine null + } + + val selectedCiphers = ciphers + .filter { it.id in selectedCipherIds } + val selectedCiphersByAccount = selectedCiphers + .groupBy { it.accountId } + + val selectedCiphersAllLogins = selectedCiphers.all { it.type == DSecret.Type.Login } + val selectedCiphersAllSameType = kotlin.run { + if (selectedCiphersAllLogins) { + return@run true + } + + val type = selectedCiphers.firstOrNull()?.type + selectedCiphers.all { it.type == type } + } + + val selectedCollections = selectedCiphers + .asSequence() + .flatMap { it.collectionIds } + .distinct() + .mapNotNull { collectionId -> + collections + .firstOrNull { it.id == collectionId } + } + // Find ciphers that have some limitations + val hasCanNotEditCiphers = selectedCiphers.any { !it.canEdit() } + val hasCanNotDeleteCiphers = selectedCiphers.any { !it.canDelete() } + val hasCanNotWriteCiphers = selectedCollections.any { it.readOnly } + val hasRepromptCiphers = selectedCiphers.any { it.reprompt } + + val canEdit = canWrite && !hasCanNotEditCiphers && !hasCanNotWriteCiphers + val canDelete = canWrite && !hasCanNotDeleteCiphers && !hasCanNotWriteCiphers + + val verify: ((() -> Unit) -> Unit)? = if (hasRepromptCiphers) { + // lambda + { block -> + val intent = createElevatedAccessDialogIntent { + block() + } + navigate(intent) + } + } else { + null + } + + val actions = mutableListOf() + // If any of the ciphers can be favourite-d, then we + // show an action to do it! + if (canEdit && selectedCiphers.any { !it.favorite }) { + actions += FlatItemAction( + icon = Icons.Outlined.KeyguardFavourite, + title = translate(Res.strings.ciphers_action_add_to_favorites_title), + onClick = { + val filteredCipherIds = selectedCiphers + .asSequence() + .filter { !it.favorite } + .map { it.id } + .toSet() + toolbox + .favouriteCipherById( + filteredCipherIds, + true, + ) + .effectMap { + val message = ToastMessage( + title = "Add to favourites", + ) + message(message) + } + .launchIn(appScope) + }, + ) + } + // If any of the ciphers can be un-favourited, then we + // show an action to do it! + if (canEdit && selectedCiphers.any { it.favorite }) { + actions += FlatItemAction( + icon = Icons.Outlined.KeyguardFavouriteOutline, + title = translate(Res.strings.ciphers_action_remove_from_favorites_title), + onClick = { + val filteredCipherIds = selectedCiphers + .asSequence() + .filter { it.favorite } + .map { it.id } + .toSet() + toolbox + .favouriteCipherById( + filteredCipherIds, + false, + ) + .effectMap { + val message = ToastMessage( + title = "Removed from favourites", + ) + message(message) + } + .launchIn(appScope) + }, + ) + } + + if (canEdit && selectedCiphers.any { !it.reprompt }) { + actions += cipherEnableConfirmAccessAction( + rePromptCipherById = toolbox.rePromptCipherById, + ciphers = selectedCiphers, + ) + } + if (canEdit && selectedCiphers.any { it.reprompt }) { + actions += cipherDisableConfirmAccessAction( + rePromptCipherById = toolbox.rePromptCipherById, + ciphers = selectedCiphers, + ).verify(verify) + } + + if (canEdit && selectedCiphers.size == 1) { + val cipher = selectedCiphers.first() + actions += cipherEditAction( + cipher = cipher, + ).verify(verify) + } + + if (selectedCiphers.size == 1 && selectedCiphersAllLogins) { + val cipher = selectedCiphers.first() + if (!cipher.login?.passwordHistory.isNullOrEmpty()) { + actions += cipherViewPasswordHistoryAction( + cipher = cipher, + ).verify(verify) + } + } + + if (canEdit) { + actions += cipherChangeNameAction( + changeCipherNameById = toolbox.changeCipherNameById, + ciphers = selectedCiphers, + ) + } + + if (canEdit && selectedCiphersAllLogins) { + actions += cipherChangePasswordAction( + changeCipherPasswordById = toolbox.changeCipherPasswordById, + ciphers = selectedCiphers, + ).verify(verify) + } + + if (canWrite && selectedCiphersAllSameType && selectedCiphers.size > 1) { + actions += cipherMergeIntoAction( + cipherMerge = toolbox.cipherMerge, + ciphers = selectedCiphers, + ).verify(verify) + } + + if (canWrite) { + actions += cipherCopyToAction( + copyCipherById = toolbox.copyCipherById, + ciphers = selectedCiphers, + ) + } + + if (canEdit && selectedCiphersByAccount.size == 1) { + val selectedAccount = selectedCiphersByAccount.entries.first() + actions += cipherMoveToFolderAction( + moveCipherToFolderById = toolbox.moveCipherToFolderById, + accountId = AccountId(selectedAccount.key), + ciphers = selectedAccount.value, + ) + } + + if (canDelete && selectedCiphers.any { it.deletedDate != null }) { + actions += cipherRestoreAction( + restoreCipherById = toolbox.restoreCipherById, + ciphers = selectedCiphers, + ) + } + if (canDelete && selectedCiphers.any { it.deletedDate == null && it.service.remote != null }) { + actions += cipherTrashAction( + trashCipherById = toolbox.trashCipherById, + ciphers = selectedCiphers, + ) + } + + if (canDelete && selectedCiphers.all { it.deletedDate != null || it.service.remote == null }) { + actions += cipherDeleteAction( + removeCipherById = toolbox.removeCipherById, + ciphers = selectedCiphers, + ) + } + + Selection( + count = selectedCiphers.size, + actions = actions.toPersistentList(), + onClear = selectionHandle::clearSelection, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/emailleak/EmailLeakRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/emailleak/EmailLeakRoute.kt new file mode 100644 index 00000000..770a0bb4 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/emailleak/EmailLeakRoute.kt @@ -0,0 +1,94 @@ +package com.artemchep.keyguard.feature.emailleak + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.FactCheck +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.feature.navigation.DialogRoute +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.state.TranslatorScope +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.icons.icon + +data class EmailLeakRoute( + val args: Args, +) : DialogRoute { + companion object { + fun checkBreachesEmailActionOrNull( + translator: TranslatorScope, + accountId: AccountId, + email: String, + navigate: (NavigationIntent) -> Unit, + ) = checkBreachesEmailAction( + translator = translator, + accountId = accountId, + email = email, + navigate = navigate, + ) + + fun checkBreachesEmailAction( + translator: TranslatorScope, + accountId: AccountId, + email: String, + navigate: (NavigationIntent) -> Unit, + ) = FlatItemAction( + leading = icon(Icons.Outlined.FactCheck), + title = translator.translate(Res.strings.email_action_check_data_breach_title), + onClick = { + val route = EmailLeakRoute( + args = Args( + accountId = accountId, + email = email, + ), + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + + fun checkBreachesUsernameActionOrNull( + translator: TranslatorScope, + accountId: AccountId, + username: String, + navigate: (NavigationIntent) -> Unit, + ) = checkBreachesUsernameAction( + translator = translator, + accountId = accountId, + username = username, + navigate = navigate, + ) + + fun checkBreachesUsernameAction( + translator: TranslatorScope, + accountId: AccountId, + username: String, + navigate: (NavigationIntent) -> Unit, + ) = FlatItemAction( + leading = icon(Icons.Outlined.FactCheck), + title = translator.translate(Res.strings.username_action_check_data_breach_title), + onClick = { + val route = EmailLeakRoute( + args = Args( + accountId = accountId, + email = username, + ), + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + } + + data class Args( + val accountId: AccountId, + val email: String, + ) + + @Composable + override fun Content() { + EmailLeakScreen( + args = args, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/emailleak/EmailLeakScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/emailleak/EmailLeakScreen.kt new file mode 100644 index 00000000..9938120a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/emailleak/EmailLeakScreen.kt @@ -0,0 +1,280 @@ +package com.artemchep.keyguard.feature.emailleak + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.FlowRow +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.FactCheck +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.ProvideTextStyle +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.getOrNull +import com.artemchep.keyguard.common.usecase.NumberFormatter +import com.artemchep.keyguard.feature.dialog.Dialog +import com.artemchep.keyguard.feature.favicon.FaviconImage +import com.artemchep.keyguard.feature.home.vault.component.Section +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.FlatSimpleNote +import com.artemchep.keyguard.ui.FlatTextFieldBadge +import com.artemchep.keyguard.ui.HtmlText +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.SimpleNote +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.poweredby.PoweredByHaveibeenpwned +import com.artemchep.keyguard.ui.skeleton.SkeletonText +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.theme.infoContainer +import com.artemchep.keyguard.ui.util.HorizontalDivider +import dev.icerock.moko.resources.compose.stringResource +import org.kodein.di.compose.rememberInstance + +@Composable +fun EmailLeakScreen( + args: EmailLeakRoute.Args, +) { + val loadableState = produceEmailLeakState( + args = args, + ) + Dialog( + icon = icon(Icons.Outlined.FactCheck), + title = { + Text(stringResource(Res.strings.emailleak_title)) + }, + content = { + Column { + Text( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + text = stringResource(Res.strings.emailleak_note), + style = MaterialTheme.typography.bodySmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + ) + Spacer( + modifier = Modifier + .height(16.dp), + ) + + when (loadableState) { + is Loadable.Loading -> { + ContentSkeleton() + } + + is Loadable.Ok -> { + Content( + state = loadableState.value, + ) + } + } + + Spacer( + modifier = Modifier + .height(4.dp), + ) + + PoweredByHaveibeenpwned( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding) + .fillMaxWidth(), + ) + } + }, + contentScrollable = true, + actions = { + val updatedOnClose by rememberUpdatedState(loadableState.getOrNull()?.onClose) + TextButton( + enabled = updatedOnClose != null, + onClick = { + updatedOnClose?.invoke() + }, + ) { + Text(stringResource(Res.strings.close)) + } + }, + ) +} + +@Composable +private fun ColumnScope.ContentSkeleton() { + FlatItem( + title = { + SkeletonText( + modifier = Modifier + .fillMaxWidth(0.8f), + ) + }, + text = { + SkeletonText( + modifier = Modifier + .fillMaxWidth(0.6f), + ) + }, + enabled = true, + elevation = 1.dp, + ) +} + +@Composable +private fun ColumnScope.Content( + state: EmailLeakState, +) { + val leaks = state.content.getOrNull()?.breaches + if (leaks == null) { + FlatSimpleNote( + type = SimpleNote.Type.WARNING, + text = stringResource(Res.strings.emailleak_failed_to_load_status_text), + ) + return + } + + if (leaks.isNotEmpty()) { + FlatSimpleNote( + type = SimpleNote.Type.WARNING, + title = stringResource(Res.strings.emailleak_breach_found_title), + ) + Section( + text = stringResource(Res.strings.emailleak_breach_section), + ) + } else { + FlatSimpleNote( + type = SimpleNote.Type.OK, + title = stringResource(Res.strings.emailleak_breach_not_found_title), + ) + } + leaks.forEachIndexed { index, item -> + if (index > 0) { + HorizontalDivider( + modifier = Modifier + .padding( + vertical = 16.dp, + ), + ) + } + + BreachItem( + modifier = Modifier + .padding( + horizontal = Dimens.horizontalPadding, + ), + item = item, + ) + } +} + +@OptIn(ExperimentalLayoutApi::class) +@Composable +private fun BreachItem( + modifier: Modifier = Modifier, + item: EmailLeakState.Breach, +) { + Column( + modifier = modifier, + verticalArrangement = Arrangement.spacedBy(8.dp), + ) { + Row( + verticalAlignment = Alignment.CenterVertically, + ) { + FaviconImage( + modifier = Modifier + .size(24.dp) + .clip(CircleShape), + imageModel = { item.icon }, + ) + Spacer( + modifier = Modifier + .width(16.dp), + ) + Column { + Text( + text = item.title, + style = MaterialTheme.typography.titleMedium, + ) + Text( + text = item.domain, + style = MaterialTheme.typography.bodyMedium, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + fontFamily = FontFamily.Monospace, + ) + } + } + if (item.dataClasses.isNotEmpty()) { + FlowRow( + verticalArrangement = Arrangement.spacedBy(8.dp), + horizontalArrangement = Arrangement.spacedBy(8.dp), + ) { + item.dataClasses.forEach { dataClass -> + FlatTextFieldBadge( + backgroundColor = MaterialTheme.colorScheme.infoContainer, + text = dataClass, + ) + } + } + } + Column { + if (item.count != null) { + val numberFormatter: NumberFormatter by rememberInstance() + Text( + text = stringResource( + Res.plurals.emailleak_breach_accounts_count_plural, + item.count, + numberFormatter.formatNumber(item.count.toInt()), + ), + style = MaterialTheme.typography.labelSmall, + fontWeight = FontWeight.Black, + ) + } + if (item.occurredAt != null) { + Text( + text = stringResource( + Res.strings.emailleak_breach_occurred_at, + item.occurredAt, + ), + style = MaterialTheme.typography.labelSmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + ) + } + if (item.reportedAt != null) { + Text( + text = stringResource( + Res.strings.emailleak_breach_reported_at, + item.reportedAt, + ), + style = MaterialTheme.typography.labelSmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + ) + } + } + ProvideTextStyle(MaterialTheme.typography.bodySmall) { + HtmlText( + html = item.description, + ) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/emailleak/EmailLeakState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/emailleak/EmailLeakState.kt new file mode 100644 index 00000000..1865a49d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/emailleak/EmailLeakState.kt @@ -0,0 +1,31 @@ +package com.artemchep.keyguard.feature.emailleak + +import androidx.compose.runtime.Immutable +import arrow.core.Either +import kotlinx.collections.immutable.ImmutableList + +@Immutable +data class EmailLeakState( + val username: String, + val content: Either, + val onClose: (() -> Unit)? = null, +) { + @Immutable + data class Content( + val breaches: ImmutableList, + ) + + @Immutable + data class Breach( + val title: String, + val domain: String, + val description: String, + val icon: String?, + val count: Int?, + /** Time when this breach has occurred */ + val occurredAt: String?, + /** Time when this breach was acknowledged */ + val reportedAt: String?, + val dataClasses: List, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/emailleak/EmailLeakStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/emailleak/EmailLeakStateProducer.kt new file mode 100644 index 00000000..78767648 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/emailleak/EmailLeakStateProducer.kt @@ -0,0 +1,77 @@ +package com.artemchep.keyguard.feature.emailleak + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.model.CheckUsernameLeakRequest +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.usecase.CheckUsernameLeak +import com.artemchep.keyguard.common.usecase.DateFormatter +import com.artemchep.keyguard.feature.navigation.state.navigatePopSelf +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import kotlinx.collections.immutable.toImmutableList +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +@Composable +fun produceEmailLeakState( + args: EmailLeakRoute.Args, +) = with(localDI().direct) { + produceEmailLeakState( + args = args, + checkUsernameLeak = instance(), + dateFormatter = instance(), + ) +} + +@Composable +fun produceEmailLeakState( + args: EmailLeakRoute.Args, + checkUsernameLeak: CheckUsernameLeak, + dateFormatter: DateFormatter, +): Loadable = produceScreenState( + key = "email_leak", + initial = Loadable.Loading, + args = arrayOf(), +) { + val request = CheckUsernameLeakRequest( + accountId = args.accountId, + username = args.email, + ) + val content = checkUsernameLeak(request) + .map { report -> + val breaches = report.leaks + .sortedByDescending { it.reportedAt } + .map { leak -> + EmailLeakState.Breach( + title = leak.title, + domain = leak.website, + icon = leak.icon, + count = leak.count, + description = leak.description, + occurredAt = leak.occurredAt + ?.let(dateFormatter::formatDate), + reportedAt = leak.reportedAt + ?.let(dateFormatter::formatDate), + dataClasses = leak.dataClasses, + ) + } + .toImmutableList() + EmailLeakState.Content( + breaches = breaches, + ) + } + .attempt() + .bind() + val state = EmailLeakState( + username = args.email, + content = content, + onClose = { + navigatePopSelf() + }, + ) + flowOf(Loadable.Ok(state)) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/favicon/Favicon.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/favicon/Favicon.kt new file mode 100644 index 00000000..b0c9270a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/favicon/Favicon.kt @@ -0,0 +1,33 @@ +package com.artemchep.keyguard.feature.favicon + +import com.artemchep.keyguard.common.usecase.GetAccounts +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onEach + +object Favicon { + var servers: List = emptyList() + + fun getServerOrNull(serverId: String?) = serverId + ?.let { id -> + servers.firstOrNull { it.id == id } + } + + fun launch( + scope: CoroutineScope, + getAccounts: GetAccounts, + ) { + getAccounts() + .map { accounts -> + accounts + .map { + FaviconAccountServer(it) + } + } + .onEach { servers -> + Favicon.servers = servers + } + .launchIn(scope) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/favicon/FaviconFetcher.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/favicon/FaviconFetcher.kt new file mode 100644 index 00000000..44f5d0d2 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/favicon/FaviconFetcher.kt @@ -0,0 +1,10 @@ +package com.artemchep.keyguard.feature.favicon + +data class FaviconUrl( + val serverId: String? = null, + val url: String, +) + +data class AppIconUrl( + val packageName: String, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/favicon/FaviconImage.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/favicon/FaviconImage.kt new file mode 100644 index 00000000..4eaa1162 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/favicon/FaviconImage.kt @@ -0,0 +1,10 @@ +package com.artemchep.keyguard.feature.favicon + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier + +@Composable +expect fun FaviconImage( + imageModel: () -> Any?, + modifier: Modifier = Modifier, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/favicon/FaviconServer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/favicon/FaviconServer.kt new file mode 100644 index 00000000..9c093977 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/favicon/FaviconServer.kt @@ -0,0 +1,42 @@ +package com.artemchep.keyguard.feature.favicon + +import com.artemchep.keyguard.common.model.DAccount +import com.artemchep.keyguard.feature.auth.common.util.verifyIsLocalUrl +import io.ktor.http.Url + +interface FaviconServer { + val id: String + + fun transform(url: String): String? +} + +class FaviconAccountServer( + account: DAccount, +) : FaviconServer { + override val id: String = account.accountId() + + private val transformer = account.faviconServer + + override fun transform( + url: String, + ): String? = kotlin.runCatching { + val ktorUrl = Url(url) + when (ktorUrl.specifiedPort) { + 80, + 443, + 0, + -> { + // All is fine, continue as if + // the port was not specified. + } + + else -> return@runCatching null + } + if (verifyIsLocalUrl(ktorUrl)) { + // Do not download local urls. + return@runCatching null + } + + transformer.invoke(ktorUrl.host) + }.getOrNull() +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/favicon/GravatarUrl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/favicon/GravatarUrl.kt new file mode 100644 index 00000000..903454a1 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/favicon/GravatarUrl.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.feature.favicon + +data class GravatarUrl( + val url: String, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/feedback/FeedbackRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/feedback/FeedbackRoute.kt new file mode 100644 index 00000000..216986d4 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/feedback/FeedbackRoute.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.feedback + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.Route + +object FeedbackRoute : Route { + @Composable + override fun Content() { + FeedbackScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/feedback/FeedbackScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/feedback/FeedbackScreen.kt new file mode 100644 index 00000000..985180c6 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/feedback/FeedbackScreen.kt @@ -0,0 +1,152 @@ +package com.artemchep.keyguard.feature.feedback + +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Info +import androidx.compose.material.icons.outlined.Send +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Modifier +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.input.KeyboardType +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.fold +import com.artemchep.keyguard.common.model.getOrNull +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.DefaultFab +import com.artemchep.keyguard.ui.FabState +import com.artemchep.keyguard.ui.FlatTextField +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.ScaffoldColumn +import com.artemchep.keyguard.ui.skeleton.SkeletonTextField +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.toolbar.LargeToolbar +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun FeedbackScreen() { + val loadableState = produceFeedbackScreenState() + FeedbackContent( + loadableState = loadableState, + ) +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +private fun FeedbackContent( + loadableState: Loadable, +) { + val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + ScaffoldColumn( + modifier = Modifier + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + LargeToolbar( + title = { + Text( + text = stringResource(Res.strings.contactus_header_title), + ) + }, + navigationIcon = { + NavigationIcon() + }, + scrollBehavior = scrollBehavior, + ) + }, + floatingActionState = run { + val fabOnClick = loadableState.getOrNull()?.onSendClick + val fabState = if (fabOnClick != null) { + FabState( + onClick = fabOnClick, + model = null, + ) + } else { + null + } + rememberUpdatedState(newValue = fabState) + }, + floatingActionButton = { + DefaultFab( + icon = { + Icon(Icons.Outlined.Send, null) + }, + text = { + Text( + text = stringResource(Res.strings.send), + ) + }, + ) + }, + ) { + val contentModifier = Modifier + .fillMaxWidth() + .padding(horizontal = Dimens.horizontalPadding) + loadableState.fold( + ifLoading = { + SkeletonTextField( + modifier = contentModifier, + ) + }, + ifOk = { state -> + FlatTextField( + modifier = contentModifier, + label = stringResource(Res.strings.contactus_message_label), + value = state.message, + keyboardOptions = KeyboardOptions( + autoCorrect = true, + keyboardType = KeyboardType.Text, + ), + ) + }, + ) + Spacer( + modifier = Modifier + .height(32.dp), + ) + Icon( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + imageVector = Icons.Outlined.Info, + contentDescription = null, + tint = LocalContentColor.current.combineAlpha(alpha = MediumEmphasisAlpha), + ) + Spacer( + modifier = Modifier + .height(16.dp), + ) + Text( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + text = stringResource(Res.strings.contactus_english_note), + style = MaterialTheme.typography.bodyMedium, + fontWeight = FontWeight.Bold, + color = LocalContentColor.current.combineAlpha(alpha = MediumEmphasisAlpha), + ) + Spacer( + modifier = Modifier + .height(16.dp), + ) + Text( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + text = stringResource(Res.strings.contactus_thanks_note), + style = MaterialTheme.typography.bodyMedium, + color = LocalContentColor.current.combineAlpha(alpha = MediumEmphasisAlpha), + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/feedback/FeedbackState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/feedback/FeedbackState.kt new file mode 100644 index 00000000..2f01a661 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/feedback/FeedbackState.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.feature.feedback + +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 + +data class FeedbackState( + val message: TextFieldModel2, + val onClear: (() -> Unit)? = null, + val onSendClick: (() -> Unit)? = null, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/feedback/FeedbackStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/feedback/FeedbackStateProducer.kt new file mode 100644 index 00000000..b1be5d6c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/feedback/FeedbackStateProducer.kt @@ -0,0 +1,74 @@ +package com.artemchep.keyguard.feature.feedback + +import androidx.compose.runtime.Composable +import arrow.core.partially1 +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import com.artemchep.keyguard.feature.auth.common.Validated +import com.artemchep.keyguard.feature.auth.common.util.validatedFeedback +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.state.PersistedStorage +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import kotlinx.coroutines.flow.map + +@Composable +fun produceFeedbackScreenState(): Loadable = produceScreenState( + key = "feedback", + initial = Loadable.Loading, +) { + val storage = kotlin.run { + val disk = loadDiskHandle("feedback") + PersistedStorage.InDisk(disk) + } + val messageSink = mutablePersistedFlow( + key = "message", + storage = storage, + ) { "" } + val messageState = mutableComposeState(messageSink) + + fun onSend(message: String) { + if (message == "send test crash report") { + val msg = "Test crash report." + throw RuntimeException(msg) + } + + val subject = getFeedbackSubject() + val intent = NavigationIntent.NavigateToEmail( + email = "artemchep+keyguard@gmail.com", + subject = subject, + body = message, + ) + navigate(intent) + } + + val validatedMessageFlow = messageSink + .validatedFeedback(this) + validatedMessageFlow + .map { validatedMessage -> + val canLogin = validatedMessage is Validated.Success + val message = TextFieldModel2.of( + messageState, + validatedMessage, + ) + FeedbackState( + message = message, + onSendClick = if (canLogin) { + // lambda + ::onSend.partially1(validatedMessage.model) + } else { + null + }, + onClear = if (validatedMessage.model.isNotEmpty()) { + // lambda + { + messageState.value = "" + } + } else { + null + }, + ) + } + .map { state -> + Loadable.Ok(state) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/feedback/FeedbackUtils.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/feedback/FeedbackUtils.kt new file mode 100644 index 00000000..bccf5948 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/feedback/FeedbackUtils.kt @@ -0,0 +1,3 @@ +package com.artemchep.keyguard.feature.feedback + +expect fun getFeedbackSubject(): String diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/filepicker/FilePickerEffect.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/filepicker/FilePickerEffect.kt new file mode 100644 index 00000000..9160f754 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/filepicker/FilePickerEffect.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.feature.filepicker + +import androidx.compose.runtime.Composable +import kotlinx.coroutines.flow.Flow + +@Composable +expect fun FilePickerEffect( + flow: Flow>, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/filepicker/FilePickerIntent.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/filepicker/FilePickerIntent.kt new file mode 100644 index 00000000..8d248603 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/filepicker/FilePickerIntent.kt @@ -0,0 +1,23 @@ +package com.artemchep.keyguard.feature.filepicker + +import com.artemchep.keyguard.platform.LeUri + +sealed interface FilePickerIntent { + val onResult: (R) -> Unit + + class OpenDocument( + /** The mime types to filter by, e.g. image/\*. */ + val mimeTypes: Array = mimeTypesAll, + override val onResult: (Ifo?) -> Unit, + ) : FilePickerIntent { + companion object { + val mimeTypesAll = arrayOf("*/*") + } + + data class Ifo( + val uri: LeUri, + val name: String?, + val size: Long?, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/filepicker/FilePickerUtils.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/filepicker/FilePickerUtils.kt new file mode 100644 index 00000000..ef7410bf --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/filepicker/FilePickerUtils.kt @@ -0,0 +1,34 @@ +package com.artemchep.keyguard.feature.filepicker + +import java.text.CharacterIterator +import java.text.StringCharacterIterator + +fun humanReadableByteCountBin(bytes: Long): String? { + val absB = if (bytes == Long.MIN_VALUE) Long.MAX_VALUE else Math.abs(bytes) + if (absB < 1024) { + return "$bytes B" + } + var value = absB + val ci: CharacterIterator = StringCharacterIterator("KMGTPE") + var i = 40 + while (i >= 0 && absB > 0xfffccccccccccccL shr i) { + value = value shr 10 + ci.next() + i -= 10 + } + value *= java.lang.Long.signum(bytes).toLong() + return java.lang.String.format("%.1f %ciB", value / 1024.0, ci.current()) +} + +fun humanReadableByteCountSI(bytes: Long): String { + var bytes = bytes + if (-1000 < bytes && bytes < 1000) { + return "$bytes B" + } + val ci: CharacterIterator = StringCharacterIterator("kMGTPE") + while (bytes <= -999950 || bytes >= 999950) { + bytes /= 1000 + ci.next() + } + return String.format("%.1f %cB", bytes / 1000.0, ci.current()) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/GeneratorRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/GeneratorRoute.kt new file mode 100644 index 00000000..8aa64aa5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/GeneratorRoute.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.feature.generator + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.Route + +data class GeneratorRoute( + val args: Args = Args(), +) : Route { + data class Args( + val username: Boolean = false, + val password: Boolean = false, + ) + + @Composable + override fun Content() { + GeneratorScreen( + args = args, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/GeneratorScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/GeneratorScreen.kt new file mode 100644 index 00000000..cc6cdb8e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/GeneratorScreen.kt @@ -0,0 +1,1000 @@ +package com.artemchep.keyguard.feature.generator + +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.Crossfade +import androidx.compose.animation.ExperimentalAnimationApi +import androidx.compose.animation.animateContentSize +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.animation.scaleIn +import androidx.compose.animation.scaleOut +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.gestures.detectDragGesturesAfterLongPress +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.BoxWithConstraints +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.heightIn +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.widthIn +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.ArrowDownward +import androidx.compose.material.icons.outlined.ArrowUpward +import androidx.compose.material.icons.outlined.ContentCopy +import androidx.compose.material.icons.outlined.History +import androidx.compose.material.icons.outlined.Info +import androidx.compose.material.icons.outlined.Refresh +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.LocalTextStyle +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Slider +import androidx.compose.material3.Surface +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.key +import androidx.compose.runtime.movableContentOf +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.hapticfeedback.HapticFeedbackType +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.input.pointer.pointerInput +import androidx.compose.ui.platform.LocalHapticFeedback +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.SpanStyle +import androidx.compose.ui.text.buildAnnotatedString +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.text.withStyle +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import arrow.core.partially1 +import com.artemchep.keyguard.LocalAppMode +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.fold +import com.artemchep.keyguard.common.model.getOrNull +import com.artemchep.keyguard.feature.auth.common.IntFieldModel +import com.artemchep.keyguard.feature.home.vault.component.Section +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.feature.twopane.TwoPaneScreen +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.DefaultFab +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +import com.artemchep.keyguard.ui.ExpandedIfNotEmptyForRow +import com.artemchep.keyguard.ui.FabState +import com.artemchep.keyguard.ui.FlatDropdown +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.FlatTextField +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.OptionsButton +import com.artemchep.keyguard.ui.PasswordStrengthBadge +import com.artemchep.keyguard.ui.ScaffoldColumn +import com.artemchep.keyguard.ui.collectIsInteractedWith +import com.artemchep.keyguard.ui.colorizePassword +import com.artemchep.keyguard.ui.icons.DropdownIcon +import com.artemchep.keyguard.ui.shimmer.shimmer +import com.artemchep.keyguard.ui.skeleton.SkeletonItem +import com.artemchep.keyguard.ui.skeleton.SkeletonSection +import com.artemchep.keyguard.ui.skeleton.SkeletonSlider +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.theme.horizontalPaddingHalf +import com.artemchep.keyguard.ui.theme.monoFontFamily +import com.artemchep.keyguard.ui.toolbar.LargeToolbar +import com.artemchep.keyguard.ui.toolbar.SmallToolbar +import com.artemchep.keyguard.ui.util.VerticalDivider +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.Job +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.isActive +import kotlinx.coroutines.launch +import kotlin.math.roundToInt +import kotlin.math.roundToLong + +@Composable +fun GeneratorScreen( + args: GeneratorRoute.Args, +) { + val loadableState = produceGeneratorState( + mode = LocalAppMode.current, + args = args, + ) + + val sliderInteractionSource = remember { + MutableInteractionSource() + } + TwoPaneScreen( + detail = { modifier -> + GeneratorPaneDetail( + modifier = modifier, + loadableState = loadableState, + sliderInteractionSource = sliderInteractionSource, + ) + }, + ) { modifier, detailIsVisible -> + GeneratorPaneMaster( + modifier = modifier, + loadableState = loadableState, + showFilter = !detailIsVisible, + sliderInteractionSource = sliderInteractionSource, + ) + } +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +private fun GeneratorPaneDetail( + modifier: Modifier = Modifier, + loadableState: Loadable, + sliderInteractionSource: MutableInteractionSource, +) { + val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior() + ScaffoldColumn( + modifier = modifier + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + SmallToolbar( + title = { + Text( + text = stringResource(Res.strings.filter_header_title), + style = MaterialTheme.typography.titleMedium, + ) + }, + actions = { + loadableState.fold( + ifLoading = { + }, + ifOk = { state -> + val updatedOnOpenHistory by rememberUpdatedState(state.onOpenHistory) + IconButton( + onClick = { + updatedOnOpenHistory() + }, + ) { + Icon( + imageVector = Icons.Outlined.History, + contentDescription = null, + ) + } + val actions = state.options + OptionsButton(actions) + }, + ) + }, + scrollBehavior = scrollBehavior, + ) + }, + ) { + loadableState.fold( + ifLoading = { + SkeletonItem( + titleWidthFraction = 0.6f, + textWidthFraction = null, + ) + SkeletonSection() + SkeletonItem() + SkeletonItem() + }, + ifOk = { state -> + GeneratorPaneDetailContent( + state = state, + sliderInteractionSource = sliderInteractionSource, + ) + }, + ) + } +} + +@Composable +private fun ColumnScope.GeneratorPaneDetailContent( + state: GeneratorState, + sliderInteractionSource: MutableInteractionSource, +) { + GeneratorType( + state = state, + ) + + GeneratorFilterItems( + filterFlow = state.filterState, + sliderInteractionSource = sliderInteractionSource, + ) +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +private fun GeneratorPaneMaster( + modifier: Modifier, + loadableState: Loadable, + showFilter: Boolean, + sliderInteractionSource: MutableInteractionSource, +) { + val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + ScaffoldColumn( + modifier = modifier + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + LargeToolbar( + title = { + Text(stringResource(Res.strings.generator_header_title)) + }, + navigationIcon = { + NavigationIcon() + }, + actions = { + if (showFilter) { + loadableState.fold( + ifLoading = { + }, + ifOk = { state -> + val updatedOnOpenHistory by rememberUpdatedState(state.onOpenHistory) + IconButton( + onClick = { + updatedOnOpenHistory() + }, + ) { + Icon( + imageVector = Icons.Outlined.History, + contentDescription = null, + ) + } + val actions = state.options + OptionsButton(actions) + }, + ) + } + }, + scrollBehavior = scrollBehavior, + ) + }, + floatingActionState = run { + val valueStateOrNull = loadableState.getOrNull()?.valueState + val valueState = remember(valueStateOrNull) { + valueStateOrNull + ?: MutableStateFlow(null) + }.collectAsState() + + val onClick by remember(valueState) { + derivedStateOf { valueState.value?.onRefresh } + } + val fabState = FabState( + onClick = onClick, + model = null, + ) + rememberUpdatedState(fabState) + }, + floatingActionButton = { + DefaultFab( + icon = { + Icon( + imageVector = Icons.Outlined.Refresh, + contentDescription = null, + ) + }, + ) { + val valueState = loadableState.getOrNull()?.valueState?.collectAsState() + val valueExists by remember(valueState) { + derivedStateOf { + !valueState?.value?.password.isNullOrEmpty() + } + } + Text( + modifier = Modifier + .animateContentSize(), + text = if (valueExists) { + stringResource(Res.strings.generator_regenerate_button) + } else { + stringResource(Res.strings.generator_generate_button) + }, + ) + } + }, + ) { + loadableState.fold( + ifLoading = { + SkeletonItem() + }, + ifOk = { state -> + GeneratorPaneMasterContent( + state = state, + showFilter = showFilter, + sliderInteractionSource = sliderInteractionSource, + ) + }, + ) + } +} + +@Composable +private fun ColumnScope.GeneratorPaneMasterContent( + state: GeneratorState, + showFilter: Boolean, + sliderInteractionSource: MutableInteractionSource, +) { + if (showFilter) { + GeneratorType( + state = state, + ) + } + + GeneratorValue( + valueFlow = state.valueState, + sliderInteractionSource = sliderInteractionSource, + ) + + GeneratorFilterTip( + filterFlow = state.filterState, + ) + + if (showFilter) { + GeneratorFilterItems( + filterFlow = state.filterState, + sliderInteractionSource = sliderInteractionSource, + ) + } +} + +@Composable +fun ColumnScope.GeneratorType( + state: GeneratorState, +) { + val type by state.typeState.collectAsState() + FlatDropdown( + content = { + FlatItemTextContent( + title = { + Row( + verticalAlignment = Alignment.CenterVertically, + ) { + Text( + modifier = Modifier + .weight(1f, fill = false), + text = type.title, + style = MaterialTheme.typography.titleMedium, + ) + Spacer( + modifier = Modifier + .width(8.dp), + ) + DropdownIcon() + } + }, + ) + }, + dropdown = type.items, + ) +} + +@Composable +fun ColumnScope.GeneratorValue( + valueFlow: StateFlow, + sliderInteractionSource: MutableInteractionSource, +) { + val valueState = valueFlow.collectAsState() + ExpandedIfNotEmpty( + valueOrNull = valueState.value, + ) { value -> + val sliderInteractionSourceIsInteracted = + sliderInteractionSource.collectIsInteractedWith() + FlatDropdown( + elevation = 1.dp, + content = { + Crossfade( + targetState = value.password, + modifier = Modifier + .animateContentSize(), + ) { password -> + AutoResizeText( + text = if (password.isEmpty()) { + val color = LocalContentColor.current + .combineAlpha(DisabledEmphasisAlpha) + val text = stringResource(Res.strings.empty_value) + buildAnnotatedString { + withStyle( + style = SpanStyle(color = color), + ) { + append(text) + } + } + } else { + colorizePassword( + password = password, + contentColor = LocalContentColor.current, + ) + }, + ) + } + Spacer( + modifier = Modifier + .height(4.dp), + ) + + val visible = value.strength + ExpandedIfNotEmpty( + valueOrNull = value.password.takeIf { visible }, + ) { password -> + PasswordStrengthBadge( + password = password, + ) + } + }, + trailing = { + val updatedOnCopy by rememberUpdatedState(value.onCopy) + IconButton( + enabled = value.onCopy != null, + onClick = { + updatedOnCopy?.invoke() + }, + ) { + Icon(Icons.Outlined.ContentCopy, null) + } + }, + dropdown = value.dropdown, + actions = value.actions, + enabled = !sliderInteractionSourceIsInteracted, + ) + } +} + +@Composable +private fun ColumnScope.GeneratorFilterTip( + filterFlow: StateFlow, +) { + val filterState = filterFlow.collectAsState() + val tipState = remember(filterState) { + derivedStateOf { + filterState.value.tip + } + } + ExpandedIfNotEmpty( + valueOrNull = tipState.value, + ) { tip -> + Column( + modifier = Modifier + .fillMaxWidth(), + ) { + Spacer( + modifier = Modifier + .height(32.dp), + ) + Icon( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + imageVector = Icons.Outlined.Info, + contentDescription = null, + tint = LocalContentColor.current.combineAlpha(alpha = MediumEmphasisAlpha), + ) + Spacer( + modifier = Modifier + .height(16.dp), + ) + Row( + modifier = Modifier + .fillMaxWidth(), + verticalAlignment = Alignment.Top, + ) { + Spacer(modifier = Modifier.width(16.dp)) + Text( + modifier = Modifier + .weight(1f), + style = MaterialTheme.typography.bodyMedium, + text = tip.text, + color = LocalContentColor.current + .combineAlpha(alpha = MediumEmphasisAlpha), + ) + Spacer(modifier = Modifier.width(16.dp)) + if (tip.onLearnMore != null) { + TextButton( + onClick = { + tip.onLearnMore.invoke() + }, + ) { + Text( + text = stringResource(Res.strings.learn_more), + ) + } + } + Spacer(modifier = Modifier.width(8.dp)) + } + } + } +} + +@Composable +private fun ColumnScope.GeneratorFilterItems( + filterFlow: StateFlow, + sliderInteractionSource: MutableInteractionSource, +) { + + val filterState = filterFlow.collectAsState() + val filter by filterState + + val showSection = filter.length != null || filter.items.isNotEmpty() + ExpandedIfNotEmpty( + Unit.takeIf { showSection }, + ) { + Section( + text = stringResource(Res.strings.filter_header_title), + ) + } + + ExpandedIfNotEmpty( + filter.length, + ) { + Column { + DecoratedSlider( + filterLength = it, + interactionSource = sliderInteractionSource, + ) + } + } + + Spacer( + modifier = Modifier + .height(16.dp), + ) + + val items = filter.items + items.forEach { item -> + key(item.key) { + FilterItem(item) + } + } +} + +@Composable +fun FilterItem( + item: GeneratorState.Filter.Item, +) = when (item) { + is GeneratorState.Filter.Item.Switch -> FilterSwitchItem(item) + is GeneratorState.Filter.Item.Text -> FilterTextItem(item) + is GeneratorState.Filter.Item.Section -> FilterSectionItem(item) +} + +@Composable +private fun FilterSwitchItem( + item: GeneratorState.Filter.Item.Switch, +) { + val updatedItemState = rememberUpdatedState(newValue = item) + val movableSwitchContent = remember(updatedItemState) { + movableContentOf { + val item2 = updatedItemState.value + FlatItem( + title = { + Text( + text = item2.title, + maxLines = 2, + ) + }, + text = if (item2.text != null) { + // composable + { + Text( + text = item2.text, + maxLines = 1, + ) + } + } else { + null + }, + trailing = { + Switch( + modifier = Modifier + .height(20.dp), + checked = item2.model.checked, + enabled = item2.model.onChange != null, + onCheckedChange = null, + ) + }, + onClick = item2.model.onChange?.partially1(!item2.model.checked), + ) + } + } + BoxWithConstraints { + val horizontal = maxWidth >= 296.dp + if (horizontal) { + Row( + verticalAlignment = Alignment.CenterVertically, + ) { + Box( + modifier = Modifier + .weight(1f), + ) { + movableSwitchContent() + } + ExpandedIfNotEmptyForRow( + valueOrNull = item.counter, + ) { counter -> + Row( + verticalAlignment = Alignment.CenterVertically, + ) { + VerticalDivider( + modifier = Modifier + .height(20.dp), + ) + Spacer( + modifier = Modifier + .width(Dimens.horizontalPadding), + ) + FilterSwitchItemCounter( + counter = counter, + ) + Spacer( + modifier = Modifier + .width(Dimens.horizontalPadding), + ) + } + } + } + } else { + Column { + movableSwitchContent() + ExpandedIfNotEmpty( + modifier = Modifier + .padding( + start = Dimens.horizontalPadding, + end = Dimens.horizontalPadding, + top = Dimens.horizontalPaddingHalf, + bottom = Dimens.horizontalPaddingHalf, + ), + valueOrNull = item.counter, + ) { counter -> + FilterSwitchItemCounter( + counter = counter, + ) + } + } + } + } +} + +@Composable +fun FilterSwitchItemCounter( + counter: IntFieldModel, +) { + Surface( + modifier = Modifier + .height(32.dp), + shape = CircleShape, + color = MaterialTheme.colorScheme.secondaryContainer, + ) { + Row { + val updatedOnChange = rememberUpdatedState(counter.onChange) + val canDecrement = counter.number > counter.min + val canIncrement = counter.number < counter.max + FilterSwitchItemCounterButton( + enabled = canDecrement, + icon = Icons.Outlined.ArrowDownward, + onChange = { + val newValue = counter.number + .minus(1) + .coerceIn(counter.min..counter.max) + val hasChanged = newValue != counter.number + if (hasChanged) { + updatedOnChange.value?.invoke(newValue) + } + hasChanged + }, + ) + Text( + modifier = Modifier + .padding( + horizontal = 4.dp, + vertical = 2.dp, + ) + .widthIn(min = 18.dp) + .animateContentSize() + .align(Alignment.CenterVertically), + text = counter.number.toString(), + style = MaterialTheme.typography.labelMedium, + textAlign = TextAlign.Center, + ) + FilterSwitchItemCounterButton( + enabled = canIncrement, + icon = Icons.Outlined.ArrowUpward, + onChange = { + val newValue = counter.number + .plus(1) + .coerceIn(counter.min..counter.max) + val hasChanged = newValue != counter.number + if (hasChanged) { + updatedOnChange.value?.invoke(newValue) + } + hasChanged + }, + ) + } + } +} + +@Composable +private fun FilterSwitchItemCounterButton( + icon: ImageVector, + enabled: Boolean, + onChange: (() -> Boolean)? = null, +) { + val coroutineScope = rememberCoroutineScope() + var lastJob by remember { + mutableStateOf(null) + } + + val updatedLocalHapticFeedback by rememberUpdatedState(newValue = LocalHapticFeedback.current) + val updatedOnChange by rememberUpdatedState(newValue = onChange) + Box( + modifier = Modifier + .fillMaxHeight() + .widthIn(32.dp) + .clip(CircleShape) + .pointerInput(Unit) { + detectDragGesturesAfterLongPress( + onDragStart = { + updatedLocalHapticFeedback.performHapticFeedback(HapticFeedbackType.LongPress) + + lastJob?.cancel() + lastJob = coroutineScope.launch { + var iteration = 0 + while (isActive) { + val shouldAbort = updatedOnChange?.invoke() == false + if (shouldAbort) { + break + } + + val delayMs = 5f / (1f + iteration) + delay( + delayMs + .times(100) + .toLong(), + ) + iteration += 1 + } + } + }, + onDragCancel = { + lastJob?.cancel() + }, + onDragEnd = { + lastJob?.cancel() + }, + ) { _, _ -> + // Do nothing. + } + } + .clickable(enabled = enabled) { + updatedOnChange?.invoke() + }, + contentAlignment = Alignment.Center, + ) { + AnimatedVisibility( + visible = enabled, + enter = fadeIn() + scaleIn(), + exit = scaleOut() + fadeOut(), + ) { + Icon( + imageVector = icon, + contentDescription = null, + ) + } + } +} + +@Composable +private fun FilterTextItem( + item: GeneratorState.Filter.Item.Text, +) { + FlatTextField( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding) + .padding(vertical = 2.dp), + label = item.title, + value = item.model, + textStyle = LocalTextStyle.current.copy( + fontFamily = monoFontFamily, + ), + ) +} + +@Composable +private fun FilterSectionItem( + item: GeneratorState.Filter.Item.Section, +) { + Section( + text = item.text, + ) +} + +@Composable +private fun ColumnScope.DecoratedSliderLayout( + length: @Composable (Modifier) -> Unit, + slider: @Composable (Modifier) -> Unit, + sliderLabel: @Composable (Modifier, Float) -> Unit, +) { + Row( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = Dimens.horizontalPadding), + ) { + Text( + modifier = Modifier + .weight(1f), + style = MaterialTheme.typography.bodyLarge, + text = stringResource(Res.strings.length), + ) + length( + Modifier + .alignByBaseline(), + ) + } + slider( + Modifier + .fillMaxWidth() + .padding(horizontal = Dimens.horizontalPadding), + ) + Row( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = Dimens.horizontalPadding), + horizontalArrangement = Arrangement.SpaceBetween, + ) { + val n = 9 + for (i in 0..n) { + val ratio = i.toFloat() / n.toFloat() + sliderLabel( + Modifier, + ratio, + ) + } + } +} + +@Composable +fun ColumnScope.DecoratedSlider( + filterLength: GeneratorState.Filter.Length, + interactionSource: MutableInteractionSource, + modifier: Modifier = Modifier, +) { + val onLengthChange = rememberUpdatedState(newValue = filterLength.onChange) + + var filterLengthTemp by kotlin.run { + val length = filterLength.value + remember(filterLength) { + mutableStateOf(length.toFloat()) + } + } + val counter = remember(filterLengthTemp.roundToInt()) { + IntFieldModel( + number = filterLengthTemp.roundToLong(), + min = filterLength.min.toLong(), + max = filterLength.max.toLong(), + onChange = { value -> + onLengthChange.value?.invoke(value.toInt()) + }, + ) + } + + Row( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = Dimens.horizontalPadding), + ) { + Text( + modifier = Modifier + .weight(1f), + style = MaterialTheme.typography.bodyLarge, + text = stringResource(Res.strings.length), + ) + FilterSwitchItemCounter( + counter = counter, + ) + } + val sliderValueRange = filterLength.run { min.toFloat()..max.toFloat() } + val sliderSteps = filterLength.run { max - min } - 1 + Slider( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = Dimens.horizontalPadding), + value = filterLengthTemp, + valueRange = sliderValueRange, + steps = sliderSteps, + interactionSource = interactionSource, + onValueChange = { length -> + filterLengthTemp = length + }, + onValueChangeFinished = { + val length = filterLengthTemp.roundToInt() + onLengthChange.value?.invoke(length) + }, + ) +} + +@Composable +private fun ColumnScope.DecoratedSkeletonSlider( + modifier: Modifier = Modifier, +) { + DecoratedSliderLayout( + length = { m -> + val contentColor = LocalContentColor.current + .combineAlpha(DisabledEmphasisAlpha) + Box( + modifier = m + .shimmer() + .heightIn(min = 16.dp) + .widthIn(min = 20.dp) + .clip(MaterialTheme.shapes.medium) + .background(contentColor), + ) + }, + slider = { m -> + SkeletonSlider( + modifier = m, + ) + }, + sliderLabel = { m, _ -> + val contentColor = LocalContentColor.current + .combineAlpha(DisabledEmphasisAlpha) + Box( + modifier = m + .shimmer() + .heightIn(min = 14.dp) + .widthIn(min = 18.dp) + .clip(MaterialTheme.shapes.medium) + .background(contentColor), + ) + }, + ) +} + +@Composable +fun AutoResizeText( + text: AnnotatedString, + modifier: Modifier = Modifier, +) { + Box( + modifier = modifier, + ) { + val maxFontSize = 32f + val minFontSize = 14f + + val fontSize = kotlin.run { + val ratio = 1f - (text.length / 128f) + .coerceAtMost(1f) + minFontSize + (maxFontSize - minFontSize) * ratio + } + Text( + modifier = Modifier + .animateContentSize(), + text = text, + fontFamily = monoFontFamily, + fontSize = fontSize.sp, + style = MaterialTheme.typography.titleLarge, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/GeneratorState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/GeneratorState.kt new file mode 100644 index 00000000..1b716d07 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/GeneratorState.kt @@ -0,0 +1,92 @@ +@file:JvmName("GeneratorStateUtils") + +package com.artemchep.keyguard.feature.generator + +import androidx.compose.runtime.Immutable +import androidx.compose.runtime.Stable +import com.artemchep.keyguard.feature.auth.common.IntFieldModel +import com.artemchep.keyguard.feature.auth.common.SwitchFieldModel +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import com.artemchep.keyguard.ui.ContextItem +import com.artemchep.keyguard.ui.FlatItemAction +import kotlinx.collections.immutable.ImmutableList +import kotlinx.coroutines.flow.StateFlow + +@Stable +data class GeneratorState( + val onOpenHistory: () -> Unit, + val options: ImmutableList, + val typeState: StateFlow, + val valueState: StateFlow, + val filterState: StateFlow, +) { + companion object; + + @Immutable + data class Type( + val title: String, + val items: ImmutableList, + ) + + @Immutable + data class Filter( + val tip: Tip?, + val length: Length?, + val items: ImmutableList, + ) { + companion object; + + @Immutable + data class Length( + val value: Int, + val min: Int, + val max: Int, + val onChange: ((Int) -> Unit)? = null, + ) + + sealed interface Item { + val key: String + + @Immutable + data class Switch( + override val key: String, + val title: String, + val text: String? = null, + val model: SwitchFieldModel, + val counter: IntFieldModel? = null, + ) : Item + + @Immutable + data class Text( + override val key: String, + val title: String, + val model: TextFieldModel2, + ) : Item + + @Immutable + data class Section( + override val key: String, + val text: String? = null, + ) : Item + } + + @Immutable + data class Tip( + val text: String, + val onHide: (() -> Unit)? = null, + val onLearnMore: (() -> Unit)? = null, + ) + } + + @Immutable + data class Value( + val password: String, + val strength: Boolean, + val actions: ImmutableList, + val dropdown: ImmutableList, + val onCopy: (() -> Unit)?, + val onRefresh: (() -> Unit)?, + ) { + companion object + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/GeneratorStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/GeneratorStateProducer.kt new file mode 100644 index 00000000..5db5eba6 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/GeneratorStateProducer.kt @@ -0,0 +1,1309 @@ +package com.artemchep.keyguard.feature.generator + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Add +import androidx.compose.material.icons.outlined.AlternateEmail +import androidx.compose.material.icons.outlined.Info +import androidx.compose.material.icons.outlined.Mail +import androidx.compose.material.icons.outlined.Password +import androidx.compose.material3.Checkbox +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import arrow.core.compose +import arrow.core.partially1 +import arrow.core.right +import com.artemchep.keyguard.AppMode +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.handleErrorTap +import com.artemchep.keyguard.common.io.ioRaise +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.io.shared +import com.artemchep.keyguard.common.io.toIO +import com.artemchep.keyguard.common.model.DGeneratorEmailRelay +import com.artemchep.keyguard.common.model.DGeneratorHistory +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.PasswordGeneratorConfigBuilder2 +import com.artemchep.keyguard.common.model.build +import com.artemchep.keyguard.common.model.isExpensive +import com.artemchep.keyguard.common.service.clipboard.ClipboardService +import com.artemchep.keyguard.common.service.relays.api.EmailRelay +import com.artemchep.keyguard.common.usecase.AddGeneratorHistory +import com.artemchep.keyguard.common.usecase.GetCanWrite +import com.artemchep.keyguard.common.usecase.GetEmailRelays +import com.artemchep.keyguard.common.usecase.GetPassword +import com.artemchep.keyguard.common.usecase.GetPasswordStrength +import com.artemchep.keyguard.common.usecase.GetProfiles +import com.artemchep.keyguard.common.util.flow.EventFlow +import com.artemchep.keyguard.feature.auth.common.IntFieldModel +import com.artemchep.keyguard.feature.auth.common.SwitchFieldModel +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import com.artemchep.keyguard.feature.auth.common.util.REGEX_DOMAIN +import com.artemchep.keyguard.feature.auth.common.util.REGEX_EMAIL +import com.artemchep.keyguard.feature.crashlytics.crashlyticsTap +import com.artemchep.keyguard.feature.generator.emailrelay.EmailRelayListRoute +import com.artemchep.keyguard.feature.generator.history.GeneratorHistoryRoute +import com.artemchep.keyguard.feature.home.vault.add.AddRoute +import com.artemchep.keyguard.feature.home.vault.add.LeAddRoute +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.state.PersistedStorage +import com.artemchep.keyguard.feature.navigation.state.copy +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.feature.navigation.state.translate +import com.artemchep.keyguard.generatorTarget +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.ContextItem +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.buildContextItems +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.theme.isDark +import kotlinx.collections.immutable.persistentListOf +import kotlinx.collections.immutable.toPersistentList +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.debounce +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.flow +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.flow.onStart +import kotlinx.coroutines.flow.shareIn +import kotlinx.coroutines.flow.stateIn +import kotlinx.datetime.Clock +import org.kodein.di.allInstances +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance +import org.kodein.di.instanceOrNull + +private const val TIP_VISIBLE = true + +private const val PASSWORD_LENGTH_DEFAULT = 16L +private const val PASSWORD_LENGTH_MIN = 4 +private const val PASSWORD_LENGTH_MAX = 128 +private const val PASSWORD_INCLUDE_UPPERCASE_CHARS_DEFAULT = true +private const val PASSWORD_INCLUDE_UPPERCASE_CHARS_MIN_DEFAULT = 1L +private const val PASSWORD_INCLUDE_LOWERCASE_CHARS_DEFAULT = true +private const val PASSWORD_INCLUDE_LOWERCASE_CHARS_MIN_DEFAULT = 1L +private const val PASSWORD_INCLUDE_NUMBERS_DEFAULT = true +private const val PASSWORD_INCLUDE_NUMBERS_MIN_DEFAULT = 1L +private const val PASSWORD_INCLUDE_SYMBOLS_DEFAULT = true +private const val PASSWORD_INCLUDE_SYMBOLS_MIN_DEFAULT = 1L +private const val PASSWORD_EXCLUDE_SIMILAR_CHARS = true +private const val PASSWORD_EXCLUDE_AMBIGUOUS_CHARS = true + +private const val PASSPHRASE_LENGTH_DEFAULT = 5L +private const val PASSPHRASE_LENGTH_MIN = 1 +private const val PASSPHRASE_LENGTH_MAX = 10 +private const val PASSPHRASE_DELIMITER_DEFAULT = "-" +private const val PASSPHRASE_CAPITALIZE_DEFAULT = false +private const val PASSPHRASE_NUMBER_DEFAULT = false + +private const val USERNAME_LENGTH_DEFAULT = 2L +private const val USERNAME_LENGTH_MIN = 1 +private const val USERNAME_LENGTH_MAX = 10 +private const val USERNAME_DELIMITER_DEFAULT = "" +private const val USERNAME_CAPITALIZE_DEFAULT = true +private const val USERNAME_NUMBER_DEFAULT = true +private const val USERNAME_CUSTOM_WORD = "" + +private const val EMAIL_CATCH_ALL_LENGTH_DEFAULT = 5L +private const val EMAIL_CATCH_ALL_LENGTH_MIN = 3 +private const val EMAIL_CATCH_ALL_LENGTH_MAX = 10 + +private const val EMAIL_PLUS_ADDRESSING_LENGTH_DEFAULT = 5L +private const val EMAIL_PLUS_ADDRESSING_LENGTH_MIN = 3 +private const val EMAIL_PLUS_ADDRESSING_LENGTH_MAX = 10 + +private const val EMAIL_SUBDOMAIN_ADDRESSING_LENGTH_DEFAULT = 5L +private const val EMAIL_SUBDOMAIN_ADDRESSING_LENGTH_MIN = 3 +private const val EMAIL_SUBDOMAIN_ADDRESSING_LENGTH_MAX = 10 + +private val popularEmailDomains = setOf( + "gmail.com", + "yahoo.com", + "hotmail.com", + "aol.com", + "hotmail.co.uk", + "hotmail.fr", + "msn.com", + "yahoo.fr", + "wanadoo.fr", + "orange.fr", + "comcast.net", + "yahoo.co.uk", + "yahoo.com.br", + "yahoo.co.in", + "live.com", + "rediffmail.com", + "free.fr", + "gmx.de", + "web.de", + "yandex.ru", + "ymail.com", + "libero.it", + "outlook.com", + "uol.com.br", + "bol.com.br", + "mail.ru", + "cox.net", + "hotmail.it", + "sbcglobal.net", + "sfr.fr", + "live.fr", + "verizon.net", + "live.co.uk", + "googlemail.com", + "yahoo.es", + "ig.com.br", + "live.nl", + "bigpond.com", + "terra.com.br", + "yahoo.it", + "neuf.fr", + "yahoo.de", + "alice.it", + "rocketmail.com", + "att.net", + "laposte.net", + "facebook.com", + "bellsouth.net", + "yahoo.in", + "hotmail.es", + "charter.net", + "yahoo.ca", + "yahoo.com.au", + "rambler.ru", + "hotmail.de", + "tiscali.it", + "shaw.ca", + "yahoo.co.jp", + "sky.com", + "earthlink.net", + "optonline.net", + "freenet.de", + "t-online.de", + "aliceadsl.fr", + "virgilio.it", + "home.nl", + "qq.com", + "telenet.be", + "me.com", + "yahoo.com.ar", + "tiscali.co.uk", + "yahoo.com.mx", + "voila.fr", + "gmx.net", + "mail.com", + "planet.nl", + "tin.it", + "live.it", + "ntlworld.com", + "arcor.de", + "yahoo.co.id", + "frontiernet.net", + "hetnet.nl", + "live.com.au", + "yahoo.com.sg", + "zonnet.nl", + "club-internet.fr", + "juno.com", + "optusnet.com.au", + "blueyonder.co.uk", + "bluewin.ch", + "skynet.be", + "sympatico.ca", + "windstream.net", + "mac.com", + "centurytel.net", + "chello.nl", + "live.ca", + "aim.com", + "bigpond.net.au", +) + +@Composable +fun produceGeneratorState( + mode: AppMode, + args: GeneratorRoute.Args, + key: String? = null, +) = with(localDI().direct) { + produceGeneratorState( + mode = mode, + args = args, + key = key, + addGeneratorHistory = instanceOrNull(), + getPassword = instance(), + getPasswordStrength = instance(), + getProfiles = instanceOrNull(), + getEmailRelays = instanceOrNull(), + getCanWrite = instance(), + clipboardService = instance(), + emailRelays = allInstances(), + ) +} + +private const val PREFIX_PASSWORD = "password" +private const val PREFIX_PASSPHRASE = "passphrase" +private const val PREFIX_USERNAME = "username" +private const val PREFIX_EMAIL_CATCH_ALL = "email_catch_all" +private const val PREFIX_EMAIL_PLUS_ADDRESSING = "email_plus_addressing" +private const val PREFIX_EMAIL_SUBDOMAIN_ADDRESSING = "email_subdomain_addressing" +private const val PREFIX_EMAIL_ALIAS = "email_alias" + +private data class EmailRelayWithConfig( + val emailRelay: EmailRelay, + val config: DGeneratorEmailRelay, +) + +@OptIn(ExperimentalCoroutinesApi::class, ExperimentalMaterial3Api::class) +@Composable +fun produceGeneratorState( + mode: AppMode, + args: GeneratorRoute.Args, + key: String? = null, + addGeneratorHistory: AddGeneratorHistory?, + getPassword: GetPassword, + getPasswordStrength: GetPasswordStrength, + getProfiles: GetProfiles?, + getEmailRelays: GetEmailRelays?, + getCanWrite: GetCanWrite, + clipboardService: ClipboardService, + emailRelays: List, +): Loadable = produceScreenState( + initial = Loadable.Loading, + key = key?.let { "$it:" }.orEmpty() + "autofill", + args = arrayOf( + args, + getPassword, + getPasswordStrength, + getCanWrite, + clipboardService, + ), +) { + val generatorContext = mode.generatorTarget + val copyItemFactory = copy( + clipboardService = clipboardService, + ) + + val typesAllStatic = listOf( + GeneratorType2.Password, + GeneratorType2.Passphrase, + GeneratorType2.Username, + GeneratorType2.EmailCatchAll, + GeneratorType2.EmailPlusAddressing, + GeneratorType2.EmailSubdomainAddressing, + ) + val typesRelay = getEmailRelays?.invoke() + ?: flowOf(emptyList()) + val typesAllFlow = typesRelay + .map { list -> + val emailRelayItems = list + .mapNotNull { config -> + val emailRelay = emailRelays + .firstOrNull { it.type == config.type } + ?: return@mapNotNull null + GeneratorType2.EmailRelay( + emailRelay = emailRelay, + config = config, + ) + } + typesAllStatic + emailRelayItems + } + .map { items -> + items + .filter { + (it.password && args.password) || + (it.username && args.username) + } + } + + val getUserEmailDefaultIo = (getProfiles?.invoke()?.toIO() ?: ioRaise(RuntimeException())) + .map { profiles -> + val emailOrNull = profiles + .asSequence() + .map { profile -> + val priority = kotlin.run { + var p = 0f + if (profile.emailVerified) p += 10f + p + } + profile.email to priority + } + .groupBy { (email, priority) -> email } + .mapValues { (email, values) -> + values + .asSequence() + .map { it.second } + .reduce { y, x -> y + x } + } + .toList() + .maxByOrNull { it.second } + ?.first + emailOrNull + } + .shared() + + val getUserDomainDefaultIo = getUserEmailDefaultIo + .map { email -> + email + ?.substringAfterLast('@', missingDelimiterValue = "") + ?.takeUnless { domain -> + // Catch-all email can not be setup for a + // public email server. + domain in popularEmailDomains + } + } + .shared() + + val storage = kotlin.run { + val disk = loadDiskHandle( + key = key?.let { "$it:" }.orEmpty() + "generator", + global = true, + ) + PersistedStorage.InDisk(disk) + } + // common + val typeDefaultName = GeneratorType2.Password.key + val typeSink = mutablePersistedFlow( + key = "type", + storage = storage, + ) { typeDefaultName } + // Auto-fix the current type if it + // gets out of the variants. + typesAllFlow + .onEach { items -> + val shouldAutoSelect = items.none { it.key == typeSink.value } + if (shouldAutoSelect) { + typeSink.value = typeDefaultName + } + } + .launchIn(screenScope) + val typeFlow = typeSink + .combine(typesAllFlow) { typeKey, items -> + items.firstOrNull { it.key == typeKey } + ?: GeneratorType2.Password + } + val tipVisibleSink = mutablePersistedFlow( + key = "tip.visible", + storage = storage, + ) { TIP_VISIBLE } + + fun hideTip() { + tipVisibleSink.value = false + } + + // password + val passwordLengthSink = mutablePersistedFlow( + key = "$PREFIX_PASSWORD.length", + storage = storage, + ) { PASSWORD_LENGTH_DEFAULT } + val passwordIncludeUppercaseCharactersSink = mutablePersistedFlow( + key = "$PREFIX_PASSWORD.include_uppercase_chars", + storage = storage, + ) { PASSWORD_INCLUDE_UPPERCASE_CHARS_DEFAULT } + val passwordIncludeUppercaseCharactersMinSink = mutablePersistedFlow( + key = "$PREFIX_PASSWORD.include_uppercase_chars.min", + storage = storage, + ) { PASSWORD_INCLUDE_UPPERCASE_CHARS_MIN_DEFAULT } + val passwordIncludeLowercaseCharactersSink = mutablePersistedFlow( + key = "$PREFIX_PASSWORD.include_lowercase_chars", + storage = storage, + ) { PASSWORD_INCLUDE_LOWERCASE_CHARS_DEFAULT } + val passwordIncludeLowercaseCharactersMinSink = mutablePersistedFlow( + key = "$PREFIX_PASSWORD.include_lowercase_chars.min", + storage = storage, + ) { PASSWORD_INCLUDE_LOWERCASE_CHARS_MIN_DEFAULT } + val passwordIncludeNumbersSink = mutablePersistedFlow( + key = "$PREFIX_PASSWORD.include_numbers", + storage = storage, + ) { PASSWORD_INCLUDE_NUMBERS_DEFAULT } + val passwordIncludeNumbersMinSink = mutablePersistedFlow( + key = "$PREFIX_PASSWORD.include_numbers.min", + storage = storage, + ) { PASSWORD_INCLUDE_NUMBERS_MIN_DEFAULT } + val passwordIncludeSymbolsSink = mutablePersistedFlow( + "$PREFIX_PASSWORD.include_symbols", + storage = storage, + ) { PASSWORD_INCLUDE_SYMBOLS_DEFAULT } + val passwordIncludeSymbolsMinSink = mutablePersistedFlow( + key = "$PREFIX_PASSWORD.include_symbols.min", + storage = storage, + ) { PASSWORD_INCLUDE_SYMBOLS_MIN_DEFAULT } + val passwordExcludeSimilarCharactersSink = mutablePersistedFlow( + "$PREFIX_PASSWORD.exclude_similar_chars", + storage = storage, + ) { PASSWORD_EXCLUDE_SIMILAR_CHARS } + val passwordExcludeAmbiguousCharactersSink = mutablePersistedFlow( + "$PREFIX_PASSWORD.exclude_ambiguous_chars", + storage = storage, + ) { PASSWORD_EXCLUDE_AMBIGUOUS_CHARS } + // passphrase + val passphraseLengthSink = mutablePersistedFlow( + key = "$PREFIX_PASSPHRASE.length", + storage = storage, + ) { PASSPHRASE_LENGTH_DEFAULT } + val passphraseDelimiterSink = mutablePersistedFlow( + key = "$PREFIX_PASSPHRASE.delimiter", + storage = storage, + ) { PASSPHRASE_DELIMITER_DEFAULT } + val passphraseDelimiterState = mutableComposeState(passphraseDelimiterSink) + val passphraseCapitalizeSink = mutablePersistedFlow( + key = "$PREFIX_PASSPHRASE.capitalize", + storage = storage, + ) { PASSPHRASE_CAPITALIZE_DEFAULT } + val passphraseIncludeNumberSink = mutablePersistedFlow( + key = "$PREFIX_PASSPHRASE.include_number", + storage = storage, + ) { PASSPHRASE_NUMBER_DEFAULT } + // username + val usernameLengthSink = mutablePersistedFlow( + key = "$PREFIX_USERNAME.length", + storage = storage, + ) { USERNAME_LENGTH_DEFAULT } + val usernameDelimiterSink = mutablePersistedFlow( + key = "$PREFIX_USERNAME.delimiter", + storage = storage, + ) { USERNAME_DELIMITER_DEFAULT } + val usernameDelimiterState = mutableComposeState(usernameDelimiterSink) + val usernameCapitalizeSink = mutablePersistedFlow( + key = "$PREFIX_USERNAME.capitalize", + storage = storage, + ) { USERNAME_CAPITALIZE_DEFAULT } + val usernameIncludeNumberSink = mutablePersistedFlow( + key = "$PREFIX_USERNAME.include_number", + storage = storage, + ) { USERNAME_NUMBER_DEFAULT } + val usernameCustomWordSink = mutablePersistedFlow( + key = "$PREFIX_USERNAME.custom_word", + storage = storage, + ) { USERNAME_CUSTOM_WORD } + val usernameCustomWordState = mutableComposeState(usernameCustomWordSink) + // email catch all + val emailCatchAllLengthSink = mutablePersistedFlow( + key = "$PREFIX_EMAIL_CATCH_ALL.length", + storage = storage, + ) { EMAIL_CATCH_ALL_LENGTH_DEFAULT } + val emailCatchAllDomainSink = mutablePersistedFlow( + key = "$PREFIX_EMAIL_CATCH_ALL.domain", + storage = storage, + ) { "" } + val emailCatchAllDomainState = mutableComposeState(emailCatchAllDomainSink) + if (emailCatchAllDomainState.value.isEmpty()) { + emailCatchAllDomainState.value = + getUserDomainDefaultIo.attempt().bind().getOrNull().orEmpty() + } + // email plus addressing + val emailPlusAddressingLengthSink = mutablePersistedFlow( + key = "$PREFIX_EMAIL_PLUS_ADDRESSING.length", + storage = storage, + ) { EMAIL_PLUS_ADDRESSING_LENGTH_DEFAULT } + val emailPlusAddressingEmailSink = mutablePersistedFlow( + key = "$PREFIX_EMAIL_PLUS_ADDRESSING.email", + storage = storage, + ) { "" } + val emailPlusAddressingEmailState = mutableComposeState(emailPlusAddressingEmailSink) + if (emailPlusAddressingEmailState.value.isEmpty()) { + emailPlusAddressingEmailState.value = + getUserEmailDefaultIo.attempt().bind().getOrNull().orEmpty() + } + // email subdomain addressing + val emailSubdomainAddressingLengthSink = mutablePersistedFlow( + key = "$PREFIX_EMAIL_SUBDOMAIN_ADDRESSING.length", + storage = storage, + ) { EMAIL_SUBDOMAIN_ADDRESSING_LENGTH_DEFAULT } + val emailSubdomainAddressingEmailSink = mutablePersistedFlow( + key = "$PREFIX_EMAIL_SUBDOMAIN_ADDRESSING.email", + storage = storage, + ) { "" } + val emailSubdomainAddressingEmailState = mutableComposeState(emailSubdomainAddressingEmailSink) + if (emailSubdomainAddressingEmailState.value.isEmpty()) { + emailSubdomainAddressingEmailState.value = + getUserEmailDefaultIo.attempt().bind().getOrNull().orEmpty() + .takeIf { email -> + email.substringAfterLast('@', "") !in popularEmailDomains + } + .orEmpty() + } + + val passphraseFilterTip = GeneratorState.Filter.Tip( + text = translate(Res.strings.generator_passphrase_note), + onLearnMore = { + val url = "https://xkcd.com/936/" + val intent = NavigationIntent.NavigateToBrowser(url) + navigate(intent) + }, + onHide = ::hideTip, + ) + + fun createFilter( + config: PasswordGeneratorConfigBuilder2.Passphrase, + ): GeneratorState.Filter { + val items = persistentListOf( + GeneratorState.Filter.Item.Text( + key = "$PREFIX_PASSPHRASE.delimiter", + title = translate(Res.strings.generator_passphrase_delimiter_title), + model = TextFieldModel2( + state = passphraseDelimiterState, + text = config.delimiter, + onChange = passphraseDelimiterState::value::set, + ), + ), + GeneratorState.Filter.Item.Switch( + key = "$PREFIX_PASSPHRASE.capitalize", + title = translate(Res.strings.generator_passphrase_capitalize_title), + model = SwitchFieldModel( + checked = config.capitalize, + onChange = passphraseCapitalizeSink::value::set, + ), + ), + GeneratorState.Filter.Item.Switch( + key = "$PREFIX_PASSPHRASE.include_number", + title = translate(Res.strings.generator_passphrase_number_title), + model = SwitchFieldModel( + checked = config.includeNumber, + onChange = passphraseIncludeNumberSink::value::set, + ), + ), + ) + return GeneratorState.Filter( + tip = passphraseFilterTip, + length = GeneratorState.Filter.Length( + value = config.length, + min = PASSPHRASE_LENGTH_MIN, + max = PASSPHRASE_LENGTH_MAX, + onChange = passphraseLengthSink::value::set + .compose { it.toLong() }, + ), + items = items, + ) + } + + fun createFilter( + config: PasswordGeneratorConfigBuilder2.Username, + ): GeneratorState.Filter { + val items = persistentListOf( + GeneratorState.Filter.Item.Text( + key = "$PREFIX_PASSPHRASE.custom_word", + title = translate(Res.strings.generator_username_custom_word_title), + model = TextFieldModel2( + state = usernameCustomWordState, + text = config.customWord, + onChange = usernameCustomWordState::value::set, + ), + ), + GeneratorState.Filter.Item.Text( + key = "$PREFIX_PASSPHRASE.delimiter", + title = translate(Res.strings.generator_username_delimiter_title), + model = TextFieldModel2( + state = usernameDelimiterState, + text = config.delimiter, + onChange = usernameDelimiterState::value::set, + ), + ), + GeneratorState.Filter.Item.Switch( + key = "$PREFIX_USERNAME.capitalize", + title = translate(Res.strings.generator_username_capitalize_title), + model = SwitchFieldModel( + checked = config.capitalize, + onChange = usernameCapitalizeSink::value::set, + ), + ), + GeneratorState.Filter.Item.Switch( + key = "$PREFIX_USERNAME.include_number", + title = translate(Res.strings.generator_username_number_title), + model = SwitchFieldModel( + checked = config.includeNumber, + onChange = usernameIncludeNumberSink::value::set, + ), + ), + ) + return GeneratorState.Filter( + tip = null, + length = GeneratorState.Filter.Length( + value = config.length, + min = USERNAME_LENGTH_MIN, + max = USERNAME_LENGTH_MAX, + onChange = usernameLengthSink::value::set + .compose { it.toLong() }, + ), + items = items, + ) + } + + val passwordFilterTip = GeneratorState.Filter.Tip( + text = translate(Res.strings.generator_password_note, 16), + onHide = ::hideTip, + ) + + fun createFilter( + config: PasswordGeneratorConfigBuilder2.Password, + ): GeneratorState.Filter { + val items = persistentListOf( + GeneratorState.Filter.Item.Switch( + key = "$PREFIX_PASSWORD.include_numbers", + title = translate(Res.strings.generator_password_numbers_title), + model = SwitchFieldModel( + checked = config.includeNumbers, + onChange = passwordIncludeNumbersSink::value::set, + ), + counter = IntFieldModel( + number = config.includeNumbersMin + .coerceAtMost(config.length.toLong()), + min = 1L, + max = config.length.toLong(), + onChange = passwordIncludeNumbersMinSink::value::set, + ), + ), + GeneratorState.Filter.Item.Switch( + key = "$PREFIX_PASSWORD.include_symbols", + title = translate(Res.strings.generator_password_symbols_title), + text = """!"#$%&'()*+-./:;<=>?@[\]^_`{|}~""", + model = SwitchFieldModel( + checked = config.includeSymbols, + onChange = passwordIncludeSymbolsSink::value::set, + ), + counter = IntFieldModel( + number = config.includeSymbolsMin + .coerceAtMost(config.length.toLong()), + min = 1L, + max = config.length.toLong(), + onChange = passwordIncludeSymbolsMinSink::value::set, + ), + ), + GeneratorState.Filter.Item.Switch( + key = "$PREFIX_PASSWORD.include_uppercase_chars", + title = translate(Res.strings.generator_password_uppercase_letters_title), + model = SwitchFieldModel( + checked = config.includeUppercaseCharacters, + onChange = passwordIncludeUppercaseCharactersSink::value::set, + ), + counter = IntFieldModel( + number = config.includeUppercaseCharactersMin + .coerceAtMost(config.length.toLong()), + min = 1L, + max = config.length.toLong(), + onChange = passwordIncludeUppercaseCharactersMinSink::value::set, + ), + ), + GeneratorState.Filter.Item.Switch( + key = "$PREFIX_PASSWORD.include_lowercase_chars", + title = translate(Res.strings.generator_password_lowercase_letters_title), + model = SwitchFieldModel( + checked = config.includeLowercaseCharacters, + onChange = passwordIncludeLowercaseCharactersSink::value::set, + ), + counter = IntFieldModel( + number = config.includeLowercaseCharactersMin + .coerceAtMost(config.length.toLong()), + min = 1L, + max = config.length.toLong(), + onChange = passwordIncludeLowercaseCharactersMinSink::value::set, + ), + ), + GeneratorState.Filter.Item.Section( + key = "$PREFIX_PASSWORD.exclude", + ), + GeneratorState.Filter.Item.Switch( + key = "$PREFIX_PASSWORD.exclude_similar_chars", + title = translate(Res.strings.generator_password_exclude_similar_symbols_title), + text = "il1Lo0O", + model = SwitchFieldModel( + checked = config.excludeSimilarCharacters, + onChange = passwordExcludeSimilarCharactersSink::value::set, + ), + ), + GeneratorState.Filter.Item.Switch( + key = "$PREFIX_PASSWORD.exclude_ambiguous_chars", + title = translate(Res.strings.generator_password_exclude_ambiguous_symbols_title), + text = """{}[]()/\'"`~,;:.<>""", + model = SwitchFieldModel( + checked = config.excludeAmbiguousCharacters, + onChange = passwordExcludeAmbiguousCharactersSink::value::set, + ), + ), + ) + return GeneratorState.Filter( + tip = passwordFilterTip, + length = GeneratorState.Filter.Length( + value = config.length, + min = PASSWORD_LENGTH_MIN, + max = PASSWORD_LENGTH_MAX, + onChange = passwordLengthSink::value::set + .compose { it.toLong() }, + ), + items = items, + ) + } + + val catchAllEmailFilterTip = GeneratorState.Filter.Tip( + text = translate(Res.strings.generator_email_catch_all_note), + onHide = ::hideTip, + ) + + fun onOpenHistory() { + val route = GeneratorHistoryRoute + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + } + + fun createFilter( + config: PasswordGeneratorConfigBuilder2.EmailCatchAll, + ): GeneratorState.Filter { + val items = persistentListOf( + GeneratorState.Filter.Item.Text( + key = "$PREFIX_EMAIL_CATCH_ALL.domain", + title = translate(Res.strings.generator_email_catch_all_domain_title), + model = TextFieldModel2( + state = emailCatchAllDomainState, + text = config.domain, + hint = "example.com", + error = when { + config.domain.isEmpty() -> + translate(Res.strings.error_must_not_be_empty) + + config.domain in popularEmailDomains -> + translate(Res.strings.error_must_be_custom_domain) + + !REGEX_DOMAIN.matches(config.domain.trim()) -> + translate(Res.strings.error_invalid_domain) + + else -> null + }, + onChange = emailCatchAllDomainState::value::set, + ), + ), + ) + return GeneratorState.Filter( + tip = catchAllEmailFilterTip, + length = GeneratorState.Filter.Length( + value = config.length, + min = EMAIL_CATCH_ALL_LENGTH_MIN, + max = EMAIL_CATCH_ALL_LENGTH_MAX, + onChange = emailCatchAllLengthSink::value::set + .compose { it.toLong() }, + ), + items = items, + ) + } + + val emailPlusAddressingFilterTip = GeneratorState.Filter.Tip( + text = translate( + Res.strings.generator_email_plus_addressing_note, + "username+abc@example.com", + ), + onHide = ::hideTip, + ) + + fun createFilter( + config: PasswordGeneratorConfigBuilder2.EmailPlusAddressing, + ): GeneratorState.Filter { + val items = persistentListOf( + GeneratorState.Filter.Item.Text( + key = "$PREFIX_EMAIL_PLUS_ADDRESSING.email", + title = translate(Res.strings.generator_email_plus_addressing_email_title), + model = TextFieldModel2( + state = emailPlusAddressingEmailState, + text = config.email, + hint = "username@example.com", + error = when { + config.email.isEmpty() -> + translate(Res.strings.error_must_not_be_empty) + + !REGEX_EMAIL.matches(config.email.trim()) -> + translate(Res.strings.error_invalid_email) + + else -> null + }, + onChange = emailPlusAddressingEmailState::value::set, + ), + ), + ) + return GeneratorState.Filter( + tip = emailPlusAddressingFilterTip, + length = GeneratorState.Filter.Length( + value = config.length, + min = EMAIL_PLUS_ADDRESSING_LENGTH_MIN, + max = EMAIL_PLUS_ADDRESSING_LENGTH_MAX, + onChange = emailPlusAddressingLengthSink::value::set + .compose { it.toLong() }, + ), + items = items, + ) + } + + val emailSubdomainAddressingFilterTip = GeneratorState.Filter.Tip( + text = translate( + Res.strings.generator_email_subdomain_addressing_note, + "username@abc.example.com", + ), + onHide = ::hideTip, + ) + + fun createFilter( + config: PasswordGeneratorConfigBuilder2.EmailSubdomainAddressing, + ): GeneratorState.Filter { + val items = persistentListOf( + GeneratorState.Filter.Item.Text( + key = "$PREFIX_EMAIL_SUBDOMAIN_ADDRESSING.email", + title = translate(Res.strings.generator_email_subdomain_addressing_email_title), + model = TextFieldModel2( + state = emailSubdomainAddressingEmailState, + text = config.email, + hint = "username@example.com", + error = when { + config.email.isEmpty() -> + translate(Res.strings.error_must_not_be_empty) + + config.email.substringAfterLast('@', "") in popularEmailDomains -> + translate(Res.strings.error_must_be_custom_domain) + + !REGEX_EMAIL.matches(config.email.trim()) -> + translate(Res.strings.error_invalid_email) + + else -> null + }, + onChange = emailSubdomainAddressingEmailState::value::set, + ), + ), + ) + return GeneratorState.Filter( + tip = emailSubdomainAddressingFilterTip, + length = GeneratorState.Filter.Length( + value = config.length, + min = EMAIL_SUBDOMAIN_ADDRESSING_LENGTH_MIN, + max = EMAIL_SUBDOMAIN_ADDRESSING_LENGTH_MAX, + onChange = emailSubdomainAddressingLengthSink::value::set + .compose { it.toLong() }, + ), + items = items, + ) + } + + fun createFilter( + config: PasswordGeneratorConfigBuilder2.EmailRelay, + ): GeneratorState.Filter { + val items = persistentListOf( + ) + return GeneratorState.Filter( + tip = null, + length = null, + items = items, + ) + } + + fun createFilter( + config: PasswordGeneratorConfigBuilder2, + ) = when (config) { + is PasswordGeneratorConfigBuilder2.Password -> createFilter(config) + is PasswordGeneratorConfigBuilder2.Passphrase -> createFilter(config) + is PasswordGeneratorConfigBuilder2.Username -> createFilter(config) + is PasswordGeneratorConfigBuilder2.EmailCatchAll -> createFilter(config) + is PasswordGeneratorConfigBuilder2.EmailPlusAddressing -> createFilter(config) + is PasswordGeneratorConfigBuilder2.EmailSubdomainAddressing -> createFilter(config) + is PasswordGeneratorConfigBuilder2.EmailRelay -> createFilter(config) + } + + fun createLoginWithUsername( + username: String, + ) { + val type = DSecret.Type.Login + val route = LeAddRoute( + args = AddRoute.Args( + type = type, + username = username, + ), + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + } + + fun createLoginWithPassword( + password: String, + ) { + val type = DSecret.Type.Login + val route = LeAddRoute( + args = AddRoute.Args( + type = type, + password = password, + ), + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + } + + val refreshPasswordSink = EventFlow() + val refreshPassword = refreshPasswordSink::emit.partially1(Unit) + + val configBuilderFlow = typeFlow + .flatMapLatest { type -> + when (type) { + is GeneratorType2.Password -> combine( + passwordLengthSink, + passwordIncludeUppercaseCharactersSink, + passwordIncludeLowercaseCharactersSink, + passwordIncludeNumbersSink, + passwordIncludeSymbolsSink, + passwordExcludeSimilarCharactersSink, + passwordExcludeAmbiguousCharactersSink, + passwordIncludeNumbersMinSink, + passwordIncludeSymbolsMinSink, + passwordIncludeUppercaseCharactersMinSink, + passwordIncludeLowercaseCharactersMinSink, + ) { array -> + val length = array[0] as Long + val includeUppercaseCharacters = array[1] as Boolean + val includeLowercaseCharacters = array[2] as Boolean + val includeNumbers = array[3] as Boolean + val includeSymbols = array[4] as Boolean + val excludeSimilarCharacters = array[5] as Boolean + val excludeAmbiguousCharacters = array[6] as Boolean + val includeNumbersMin = array[7] as Long + val includeSymbolsMin = array[8] as Long + val includeUppercaseCharactersMin = array[9] as Long + val includeLowercaseCharactersMin = array[10] as Long + PasswordGeneratorConfigBuilder2.Password( + length = length.toInt(), + includeUppercaseCharacters = includeUppercaseCharacters, + includeUppercaseCharactersMin = includeUppercaseCharactersMin, + includeLowercaseCharacters = includeLowercaseCharacters, + includeLowercaseCharactersMin = includeLowercaseCharactersMin, + includeNumbers = includeNumbers, + includeNumbersMin = includeNumbersMin, + includeSymbols = includeSymbols, + includeSymbolsMin = includeSymbolsMin, + excludeSimilarCharacters = excludeSimilarCharacters, + excludeAmbiguousCharacters = excludeAmbiguousCharacters, + ) + } + + is GeneratorType2.Passphrase -> combine( + passphraseLengthSink, + passphraseDelimiterSink, + passphraseCapitalizeSink, + passphraseIncludeNumberSink, + ) { length, delimiter, capitalize, includeNumber -> + PasswordGeneratorConfigBuilder2.Passphrase( + length = length.toInt(), + delimiter = delimiter, + capitalize = capitalize, + includeNumber = includeNumber, + customWord = "", + ) + } + + is GeneratorType2.Username -> combine( + usernameLengthSink, + usernameDelimiterSink, + usernameCapitalizeSink, + usernameIncludeNumberSink, + usernameCustomWordSink, + ) { length, delimiter, capitalize, includeNumber, customWord -> + PasswordGeneratorConfigBuilder2.Username( + length = length.toInt(), + delimiter = delimiter, + capitalize = capitalize, + includeNumber = includeNumber, + customWord = customWord, + ) + } + + is GeneratorType2.EmailCatchAll -> combine( + emailCatchAllLengthSink, + emailCatchAllDomainSink, + ) { length, domain -> + PasswordGeneratorConfigBuilder2.EmailCatchAll( + length = length.toInt(), + domain = domain, + ) + } + + is GeneratorType2.EmailPlusAddressing -> combine( + emailPlusAddressingLengthSink, + emailPlusAddressingEmailSink, + ) { length, email -> + PasswordGeneratorConfigBuilder2.EmailPlusAddressing( + length = length.toInt(), + email = email, + ) + } + + is GeneratorType2.EmailSubdomainAddressing -> combine( + emailSubdomainAddressingLengthSink, + emailSubdomainAddressingEmailSink, + ) { length, email -> + PasswordGeneratorConfigBuilder2.EmailSubdomainAddressing( + length = length.toInt(), + email = email, + ) + } + + is GeneratorType2.EmailRelay -> flow { + val m = PasswordGeneratorConfigBuilder2.EmailRelay( + emailRelay = type.emailRelay, + config = type.config, + ) + emit(m) + } + }.map { it to type } + } + .distinctUntilChanged() + .shareIn(screenScope, SharingStarted.WhileSubscribed(), replay = 1) + + val typesFlow = combine( + typesAllFlow, + typeFlow, + ) { types, type -> + val typeTitle = translate(type.title) + val typeItems = buildContextItems { + types.forEachIndexed { index, t -> + if (index > 0) { + val groupChanged = types[index - 1].group != t.group + if (groupChanged) { + this += when (t.group) { + GENERATOR_TYPE_GROUP_INTEGRATION -> + ContextItem.Section( + title = translate(Res.strings.emailrelay_list_section_title), + ) + + else -> ContextItem.Section() + } + } + } + + when (t) { + is GeneratorType2.EmailRelay -> { + val emailRelay = t.config + this += FlatItemAction( + leading = { + val backgroundColor = if (MaterialTheme.colorScheme.isDark) { + emailRelay.accentColor.dark + } else { + emailRelay.accentColor.light + } + Box( + modifier = Modifier + .size(24.dp) + .background(backgroundColor, shape = CircleShape), + ) + }, + title = emailRelay.name, + onClick = { + typeSink.value = t.key + }, + ) + } + + else -> { + val imageVector = when { + t.password -> Icons.Outlined.Password + t is GeneratorType2.Username -> Icons.Outlined.AlternateEmail + else -> Icons.Outlined.Mail + } + this += FlatItemAction( + title = translate(t.title), + onClick = { + typeSink.value = t.key + }, + leading = icon(imageVector), + ) + } + } + } + } + GeneratorState.Type( + title = typeTitle, + items = typeItems, + ) + } + .stateIn(appScope) + val filterFlow = configBuilderFlow + .combine(tipVisibleSink) { (configBuilder, _), tipVisible -> + createFilter(configBuilder) + .let { filter -> + if (tipVisible) { + filter + } else { + filter.copy(tip = null) + } + } + } + .stateIn(screenScope) + val passwordTextFlow = configBuilderFlow + .map { (configBuilder, type) -> + val config = configBuilder.build() + val factory = getPassword(generatorContext, config) + Triple( + config, + factory, + type, + ) + } + .flatMapLatest { (config, factory, type) -> + val generateOnInit = !config.isExpensive() + flow { + val initialValue = "".right() + emit(initialValue to type) + + refreshPasswordSink + .onStart { + if (generateOnInit) { + emit(Unit) + } + } + .map { + val password = factory + .crashlyticsTap() + .handleErrorTap { e -> + message(e) + } + .attempt() + .bind() + password to type + } + .collect(this) + } + } + .flowOn(Dispatchers.Default) + .shareIn(screenScope, SharingStarted.Lazily, replay = 1) + passwordTextFlow + .debounce(1000L) + .onEach { (passwordResult, type) -> + val password = passwordResult + .getOrNull() + if (!password.isNullOrEmpty() && addGeneratorHistory != null) { + val model = DGeneratorHistory( + value = password, + createdDate = Clock.System.now(), + isPassword = type.password && args.password, + isUsername = type.username && args.username, + isEmailRelay = type is GeneratorType2.EmailRelay, + ) + addGeneratorHistory(model) + .crashlyticsTap() + .attempt() + .launchIn(appScope) + } + } + .launchIn(screenScope) + + val passwordFlow = combine( + getCanWrite(), + passwordTextFlow, + ) { canWrite, (passwordResult, type) -> + passwordResult.fold( + ifLeft = { e -> + GeneratorState.Value( + password = "", + strength = type.password && args.password, + dropdown = persistentListOf(), + actions = persistentListOf(), + onCopy = null, + onRefresh = refreshPassword, + ) + }, + ifRight = { password -> + if (password == null) { + return@fold null + } + + val dropdown = buildContextItems { + this += copyItemFactory.FlatItemAction( + title = translate(Res.strings.copy), + value = password, + ) + } + val actions = kotlin.run { + val list = mutableListOf() + if (canWrite && type.username) { + list += FlatItemAction( + leading = icon(Icons.Outlined.Add), + title = translate(Res.strings.generator_create_item_with_username_title), + onClick = ::createLoginWithUsername.partially1(password), + ) + } + if (canWrite && type.password) { + list += FlatItemAction( + leading = icon(Icons.Outlined.Add), + title = translate(Res.strings.generator_create_item_with_password_title), + onClick = ::createLoginWithPassword.partially1(password), + ) + } + list.toPersistentList() + } + GeneratorState.Value( + password = password, + strength = type.password && args.password, + dropdown = if (password.isNotEmpty()) { + dropdown + } else { + persistentListOf() + }, + actions = if (password.isNotEmpty()) { + actions + } else { + persistentListOf() + }, + onCopy = if (password.isNotEmpty()) { + copyItemFactory::copy + .partially1(password) + .partially1(false) + } else { + null + }, + onRefresh = refreshPassword, + ) + }, + ) + }.stateIn(screenScope) + val optionsStatic = buildContextItems { + this += EmailRelayListRoute.actionOrNull( + translator = this@produceScreenState, + navigate = ::navigate, + ) + } + val optionsFlow = tipVisibleSink + .map { tipVisible -> + FlatItemAction( + title = translate(Res.strings.generator_show_tips_title), + icon = Icons.Outlined.Info, + trailing = { + Checkbox( + checked = tipVisible, + onCheckedChange = null, + ) + }, + onClick = tipVisibleSink::value::set.partially1(!tipVisible), + ) + } + .map { tipVisibilityItem -> + optionsStatic.add(0, tipVisibilityItem) + } + + optionsFlow + .map { options -> + val state = GeneratorState( + onOpenHistory = ::onOpenHistory, + options = options, + typeState = typesFlow, + valueState = passwordFlow, + filterState = filterFlow, + ) + Loadable.Ok(state) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/GeneratorType.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/GeneratorType.kt new file mode 100644 index 00000000..dd674c8e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/GeneratorType.kt @@ -0,0 +1,78 @@ +package com.artemchep.keyguard.feature.generator + +import com.artemchep.keyguard.common.model.DGeneratorEmailRelay +import com.artemchep.keyguard.feature.localization.TextHolder +import com.artemchep.keyguard.res.Res + +const val GENERATOR_TYPE_GROUP_PASSWORD = "password" +const val GENERATOR_TYPE_GROUP_USERNAME = "username" +const val GENERATOR_TYPE_GROUP_INTEGRATION = "integration" + +sealed interface GeneratorType2 { + val key: String + val group: String + val title: TextHolder + val username: Boolean + val password: Boolean + + data object Password : GeneratorType2 { + override val key: String = "PASSWORD" + override val group: String = GENERATOR_TYPE_GROUP_PASSWORD + override val title: TextHolder = TextHolder.Res(Res.strings.generator_password_type) + override val username: Boolean = true + override val password: Boolean = true + } + + data object Passphrase : GeneratorType2 { + override val key: String = "PASSPHRASE" + override val group: String = GENERATOR_TYPE_GROUP_PASSWORD + override val title: TextHolder = TextHolder.Res(Res.strings.generator_passphrase_type) + override val username: Boolean = false + override val password: Boolean = true + } + + data object Username : GeneratorType2 { + override val key: String = "USERNAME" + override val group: String = GENERATOR_TYPE_GROUP_USERNAME + override val title: TextHolder = TextHolder.Res(Res.strings.generator_username_type) + override val username: Boolean = true + override val password: Boolean = false + } + + data object EmailCatchAll : GeneratorType2 { + override val key: String = "EMAIL_CATCH_ALL" + override val group: String = GENERATOR_TYPE_GROUP_USERNAME + override val title: TextHolder = TextHolder.Res(Res.strings.generator_email_catch_all_type) + override val username: Boolean = true + override val password: Boolean = false + } + + data object EmailPlusAddressing : GeneratorType2 { + override val key: String = "EMAIL_PLUS_ADDRESSING" + override val group: String = GENERATOR_TYPE_GROUP_USERNAME + override val title: TextHolder = + TextHolder.Res(Res.strings.generator_email_plus_addressing_type) + override val username: Boolean = true + override val password: Boolean = false + } + + data object EmailSubdomainAddressing : GeneratorType2 { + override val key: String = "EMAIL_SUBDOMAIN_ADDRESSING" + override val group: String = GENERATOR_TYPE_GROUP_USERNAME + override val title: TextHolder = + TextHolder.Res(Res.strings.generator_email_subdomain_addressing_type) + override val username: Boolean = true + override val password: Boolean = false + } + + data class EmailRelay( + val emailRelay: com.artemchep.keyguard.common.service.relays.api.EmailRelay, + val config: DGeneratorEmailRelay, + ) : GeneratorType2 { + override val key: String = "EMAIL_RELAY:${emailRelay.type}" + override val group: String = GENERATOR_TYPE_GROUP_INTEGRATION + override val title: TextHolder = TextHolder.Value(config.name) + override val username: Boolean = true + override val password: Boolean = false + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/emailrelay/EmailRelayListRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/emailrelay/EmailRelayListRoute.kt new file mode 100644 index 00000000..daa43f08 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/emailrelay/EmailRelayListRoute.kt @@ -0,0 +1,39 @@ +package com.artemchep.keyguard.feature.generator.emailrelay + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.ForwardToInbox +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.Route +import com.artemchep.keyguard.feature.navigation.state.TranslatorScope +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.icons.iconSmall + +object EmailRelayListRoute : Route { + fun actionOrNull( + translator: TranslatorScope, + navigate: (NavigationIntent) -> Unit, + ) = action( + translator = translator, + navigate = navigate, + ) + + fun action( + translator: TranslatorScope, + navigate: (NavigationIntent) -> Unit, + ) = FlatItemAction( + leading = iconSmall(Icons.Outlined.ForwardToInbox), + title = translator.translate(Res.strings.emailrelay_list_header_title), + onClick = { + val route = EmailRelayListRoute + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + + @Composable + override fun Content() { + EmailRelayListScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/emailrelay/EmailRelayListScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/emailrelay/EmailRelayListScreen.kt new file mode 100644 index 00000000..74561d4c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/emailrelay/EmailRelayListScreen.kt @@ -0,0 +1,324 @@ +package com.artemchep.keyguard.feature.generator.emailrelay + +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.widthIn +import androidx.compose.foundation.lazy.LazyListState +import androidx.compose.foundation.lazy.items +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Add +import androidx.compose.material3.Checkbox +import androidx.compose.material3.DropdownMenu +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.runtime.snapshotFlow +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.flatMap +import com.artemchep.keyguard.common.model.getOrNull +import com.artemchep.keyguard.feature.EmptyView +import com.artemchep.keyguard.feature.ErrorView +import com.artemchep.keyguard.feature.home.vault.component.rememberSecretAccentColor +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.AvatarBuilder +import com.artemchep.keyguard.ui.DefaultFab +import com.artemchep.keyguard.ui.DefaultSelection +import com.artemchep.keyguard.ui.DropdownMenuItemFlat +import com.artemchep.keyguard.ui.DropdownMinWidth +import com.artemchep.keyguard.ui.DropdownScopeImpl +import com.artemchep.keyguard.ui.ExpandedIfNotEmptyForRow +import com.artemchep.keyguard.ui.FabState +import com.artemchep.keyguard.ui.FlatDropdown +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.ScaffoldLazyColumn +import com.artemchep.keyguard.ui.icons.IconBox +import com.artemchep.keyguard.ui.skeleton.SkeletonItem +import com.artemchep.keyguard.ui.toolbar.CustomToolbar +import com.artemchep.keyguard.ui.toolbar.content.CustomToolbarContent +import com.artemchep.keyguard.ui.util.DividerColor +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.filter +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.withIndex + +@Composable +fun EmailRelayListScreen( +) { + val loadableState = produceEmailRelayListState( + ) + EmailRelayListScreen( + loadableState = loadableState, + ) +} + +@OptIn(ExperimentalMaterial3Api::class, ExperimentalFoundationApi::class) +@Composable +fun EmailRelayListScreen( + loadableState: Loadable, +) { + val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior() + + val listRevision = + loadableState.getOrNull()?.content?.getOrNull()?.getOrNull()?.revision + val listState = remember { + LazyListState( + firstVisibleItemIndex = 0, + firstVisibleItemScrollOffset = 0, + ) + } + + LaunchedEffect(listRevision) { + // TODO: How do you wait till the layout state start to represent + // the actual data? + val listSize = + loadableState.getOrNull()?.content?.getOrNull()?.getOrNull()?.items?.size + snapshotFlow { listState.layoutInfo.totalItemsCount } + .withIndex() + .filter { + it.index > 0 || it.value == listSize + } + .first() + + listState.scrollToItem(0, 0) + } + + val dp = remember { + mutableStateOf(false) + } + val rp = remember { + mutableStateOf(false) + } + val pitems = loadableState.getOrNull()?.content?.getOrNull()?.getOrNull()?.primaryActions + if (pitems.isNullOrEmpty()) { + dp.value = false + } + + ScaffoldLazyColumn( + modifier = Modifier + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + CustomToolbar( + scrollBehavior = scrollBehavior, + ) { + Column { + CustomToolbarContent( + title = stringResource(Res.strings.emailrelay_list_header_title), + icon = { + NavigationIcon() + }, + ) + } + } + }, + bottomBar = { + val selectionOrNull = + loadableState.getOrNull()?.content?.getOrNull()?.getOrNull()?.selection + DefaultSelection( + state = selectionOrNull, + ) + }, + floatingActionState = run { + val fabVisible = !pitems.isNullOrEmpty() + val fabState = if (fabVisible) { + FabState( + onClick = { + dp.value = true + }, + model = null, + ) + } else { + null + } + rememberUpdatedState(newValue = fabState) + }, + floatingActionButton = { + DefaultFab( + icon = { + IconBox(main = Icons.Outlined.Add) + + // Inject the dropdown popup to the bottom of the + // content. + val onDismissRequest = remember(dp) { + // lambda + { + dp.value = false + } + } + DropdownMenu( + modifier = Modifier + .widthIn(min = DropdownMinWidth), + expanded = dp.value, + onDismissRequest = onDismissRequest, + ) { + val scope = DropdownScopeImpl(this, onDismissRequest = onDismissRequest) + with(scope) { + pitems?.forEachIndexed { index, action -> + DropdownMenuItemFlat( + action = action, + ) + } + } + } + }, + text = { + Text( + text = stringResource(Res.strings.add_integration), + ) + }, + ) + }, + listState = listState, + ) { + val contentState = loadableState + .flatMap { it.content } + when (contentState) { + is Loadable.Loading -> { + for (i in 1..3) { + item("skeleton.$i") { + SkeletonItem() + } + } + } + + is Loadable.Ok -> { + contentState.value.fold( + ifLeft = { e -> + item("error") { + ErrorView( + text = { + Text(text = "Failed to load app list!") + }, + exception = e, + ) + } + }, + ifRight = { content -> + val items = content.items + if (items.isEmpty()) { + item("empty") { + NoItemsPlaceholder() + } + } + + items( + items = items, + key = { it.key }, + ) { item -> + AppItem( + modifier = Modifier + .animateItemPlacement(), + item = item, + ) + } + }, + ) + } + } + } +} + +@Composable +private fun NoItemsPlaceholder( + modifier: Modifier = Modifier, +) { + EmptyView( + modifier = modifier, + text = { + Text( + text = stringResource(Res.strings.emailrelay_empty_label), + ) + }, + ) +} + +@Composable +private fun AppItem( + modifier: Modifier, + item: EmailRelayListState.Item, +) { + val selectableState by item.selectableState.collectAsState() + val backgroundColor = when { + selectableState.selected -> MaterialTheme.colorScheme.primaryContainer + else -> Color.Unspecified + } + FlatDropdown( + modifier = modifier, + backgroundColor = backgroundColor, + leading = { + val accent = rememberSecretAccentColor( + accentLight = item.accentLight, + accentDark = item.accentDark, + ) + AvatarBuilder( + icon = item.icon, + accent = accent, + active = true, + badge = { + // Do nothing. + }, + ) + }, + content = { + FlatItemTextContent( + title = { + Text(item.title) + }, + ) + }, + trailing = { + Text( + modifier = Modifier + .widthIn(max = 128.dp) + .padding( + top = 8.dp, + bottom = 8.dp, + ) + .border( + Dp.Hairline, + DividerColor, + MaterialTheme.shapes.small, + ) + .padding( + horizontal = 8.dp, + vertical = 4.dp, + ), + text = item.service, + style = MaterialTheme.typography.labelSmall, + textAlign = TextAlign.End, + maxLines = 2, + ) + ExpandedIfNotEmptyForRow( + selectableState.selected.takeIf { selectableState.selecting }, + ) { selected -> + Checkbox( + modifier = Modifier + .padding(start = 16.dp), + checked = selected, + onCheckedChange = null, + ) + } + }, + dropdown = item.dropdown, + onClick = selectableState.onClick, + onLongClick = selectableState.onLongClick, + enabled = true, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/emailrelay/EmailRelayListState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/emailrelay/EmailRelayListState.kt new file mode 100644 index 00000000..ad8cd22f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/emailrelay/EmailRelayListState.kt @@ -0,0 +1,40 @@ +package com.artemchep.keyguard.feature.generator.emailrelay + +import androidx.compose.runtime.Immutable +import androidx.compose.runtime.Stable +import androidx.compose.ui.graphics.Color +import arrow.core.Either +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.feature.attachments.SelectableItemState +import com.artemchep.keyguard.feature.home.vault.model.VaultItemIcon +import com.artemchep.keyguard.ui.ContextItem +import com.artemchep.keyguard.ui.Selection +import kotlinx.collections.immutable.ImmutableList +import kotlinx.coroutines.flow.StateFlow + +@Immutable +data class EmailRelayListState( + val content: Loadable>, +) { + @Immutable + data class Content( + val revision: Int, + val items: ImmutableList, + val selection: Selection?, + val primaryActions: ImmutableList, + ) { + companion object + } + + @Stable + data class Item( + val key: String, + val title: String, + val service: String, + val icon: VaultItemIcon, + val accentLight: Color, + val accentDark: Color, + val dropdown: ImmutableList, + val selectableState: StateFlow, + ) +} \ No newline at end of file diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/emailrelay/EmailRelayListStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/emailrelay/EmailRelayListStateProducer.kt new file mode 100644 index 00000000..5b8d9c39 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/emailrelay/EmailRelayListStateProducer.kt @@ -0,0 +1,360 @@ +package com.artemchep.keyguard.feature.generator.emailrelay + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Add +import androidx.compose.material.icons.outlined.Delete +import androidx.compose.material.icons.outlined.Edit +import androidx.compose.material.icons.outlined.Email +import androidx.compose.runtime.Composable +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.model.DGeneratorEmailRelay +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.service.relays.api.EmailRelay +import com.artemchep.keyguard.common.usecase.AddEmailRelay +import com.artemchep.keyguard.common.usecase.GetEmailRelays +import com.artemchep.keyguard.common.usecase.RemoveEmailRelayById +import com.artemchep.keyguard.common.util.flow.persistingStateIn +import com.artemchep.keyguard.feature.attachments.SelectableItemState +import com.artemchep.keyguard.feature.attachments.SelectableItemStateRaw +import com.artemchep.keyguard.feature.confirmation.ConfirmationResult +import com.artemchep.keyguard.feature.confirmation.ConfirmationRoute +import com.artemchep.keyguard.feature.confirmation.createConfirmationDialogIntent +import com.artemchep.keyguard.feature.crashlytics.crashlyticsAttempt +import com.artemchep.keyguard.feature.home.vault.model.VaultItemIcon +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.registerRouteResultReceiver +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.feature.navigation.state.translate +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.Selection +import com.artemchep.keyguard.ui.buildContextItems +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.selection.selectionHandle +import kotlinx.collections.immutable.toImmutableList +import kotlinx.collections.immutable.toPersistentList +import kotlinx.collections.immutable.toPersistentMap +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.filterNotNull +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.flow.stateIn +import kotlinx.datetime.Clock +import org.kodein.di.allInstances +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +private class EmailRelayListUiException( + msg: String, + cause: Throwable, +) : RuntimeException(msg, cause) + +@Composable +fun produceEmailRelayListState( +) = with(localDI().direct) { + produceEmailRelayListState( + emailRelays = allInstances(), + addEmailRelay = instance(), + removeEmailRelayById = instance(), + getEmailRelays = instance(), + ) +} + +@Composable +fun produceEmailRelayListState( + emailRelays: List, + addEmailRelay: AddEmailRelay, + removeEmailRelayById: RemoveEmailRelayById, + getEmailRelays: GetEmailRelays, +): Loadable = produceScreenState( + key = "emailrelay_list", + initial = Loadable.Loading, + args = arrayOf(), +) { + val selectionHandle = selectionHandle("selection") + + fun onEdit(model: EmailRelay, entity: DGeneratorEmailRelay?) { + val keyName = "name" + + val items2 = model + .schema + .map { emailRelay -> + val itemKey = emailRelay.key + val itemValue = entity?.data?.get(itemKey).orEmpty() + ConfirmationRoute.Args.Item.StringItem( + key = itemKey, + value = itemValue, + title = translate(emailRelay.value.title), + hint = emailRelay.value.hint?.let { translate(it) }, + type = emailRelay.value.type, + canBeEmpty = emailRelay.value.canBeEmpty, + ) + } + .let { + val out = mutableListOf>() + out += ConfirmationRoute.Args.Item.StringItem( + key = keyName, + value = entity?.name + ?: model.name, + title = translate(Res.strings.generic_name), + ) + out += it + out + } + val route = registerRouteResultReceiver( + route = ConfirmationRoute( + args = ConfirmationRoute.Args( + icon = icon( + main = Icons.Outlined.Email, + secondary = if (entity != null) { + Icons.Outlined.Edit + } else { + Icons.Outlined.Add + }, + ), + title = model.name, + subtitle = translate(Res.strings.emailrelay_integration_title), + items = items2, + docUrl = model.docUrl, + ), + ), + ) { result -> + if (result is ConfirmationResult.Confirm) { + val name = result.data[keyName] as? String + ?: return@registerRouteResultReceiver + val createdAt = Clock.System.now() + val data = model + .schema + .mapNotNull { entry -> + val value = result.data[entry.key] as? String + ?: return@mapNotNull null + entry.key to value + } + .toMap() + .toPersistentMap() + val model = DGeneratorEmailRelay( + id = entity?.id, + name = name, + type = model.type, + data = data, + createdDate = createdAt, + ) + addEmailRelay(model) + .launchIn(appScope) + } + } + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + } + + fun onNew(model: EmailRelay) = onEdit(model, null) + + fun onDelete( + emailRelayIds: Set, + ) { + val title = if (emailRelayIds.size > 1) { + translate(Res.strings.emailrelay_delete_many_confirmation_title) + } else { + translate(Res.strings.emailrelay_delete_one_confirmation_title) + } + val intent = createConfirmationDialogIntent( + icon = icon(Icons.Outlined.Delete), + title = title, + ) { + removeEmailRelayById(emailRelayIds) + .launchIn(appScope) + } + navigate(intent) + } + + val primaryActions = emailRelays + .map { emailRelay -> + val key = emailRelay.type + FlatItemAction( + id = key, + title = emailRelay.name, + onClick = ::onNew + .partially1(emailRelay), + ) + } + .sortedBy { it.title } + .toImmutableList() + + val itemsRawFlow = getEmailRelays() + // Automatically de-select items + // that do not exist. + combine( + itemsRawFlow, + selectionHandle.idsFlow, + ) { items, selectedItemIds -> + val newSelectedItemIds = selectedItemIds + .asSequence() + .filter { id -> + items.any { it.id == id } + } + .toSet() + newSelectedItemIds.takeIf { it.size < selectedItemIds.size } + } + .filterNotNull() + .onEach { ids -> selectionHandle.setSelection(ids) } + .launchIn(screenScope) + val selectionFlow = combine( + itemsRawFlow, + selectionHandle.idsFlow, + ) { items, selectedItemIds -> + val selectedItems = items + .filter { it.id in selectedItemIds } + items to selectedItems + } + .map { (allItems, selectedItems) -> + if (selectedItems.isEmpty()) { + return@map null + } + + val actions = mutableListOf() + actions += FlatItemAction( + leading = icon(Icons.Outlined.Delete), + title = translate(Res.strings.delete), + onClick = { + val ids = selectedItems.mapNotNull { it.id }.toSet() + onDelete(ids) + }, + ) + Selection( + count = selectedItems.size, + actions = actions.toPersistentList(), + onSelectAll = if (selectedItems.size < allItems.size) { + val allIds = allItems + .asSequence() + .mapNotNull { it.id } + .toSet() + selectionHandle::setSelection + .partially1(allIds) + } else { + null + }, + onClear = selectionHandle::clearSelection, + ) + } + val itemsFlow = itemsRawFlow + .map { list -> + list + .map { + val relay = emailRelays + .firstOrNull { r -> r.type == it.type } + val dropdown = buildContextItems { + section { + if (relay != null) { + this += FlatItemAction( + icon = Icons.Outlined.Edit, + title = translate(Res.strings.edit), + onClick = ::onEdit + .partially1(relay) + .partially1(it), + ) + } + this += FlatItemAction( + icon = Icons.Outlined.Delete, + title = translate(Res.strings.delete), + onClick = ::onDelete + .partially1(setOfNotNull(it.id)), + ) + } + } + val icon = VaultItemIcon.TextIcon( + run { + val words = it.name.split(" ") + if (words.size <= 1) { + return@run words.firstOrNull()?.take(2).orEmpty() + } + + words + .take(2) + .joinToString("") { it.take(1) } + }.uppercase(), + ) + + val selectableFlow = selectionHandle + .idsFlow + .map { selectedIds -> + SelectableItemStateRaw( + selecting = selectedIds.isNotEmpty(), + selected = it.id in selectedIds, + ) + } + .distinctUntilChanged() + .map { raw -> + val onClick = if (raw.selecting) { + // lambda + selectionHandle::toggleSelection.partially1(it.id.orEmpty()) + } else { + null + } + val onLongClick = if (raw.selecting) { + null + } else { + // lambda + selectionHandle::toggleSelection.partially1(it.id.orEmpty()) + } + SelectableItemState( + selecting = raw.selecting, + selected = raw.selected, + onClick = onClick, + onLongClick = onLongClick, + ) + } + val selectableStateFlow = + if (list.size >= 100) { + val sharing = SharingStarted.WhileSubscribed(1000L) + selectableFlow.persistingStateIn(this, sharing) + } else { + selectableFlow.stateIn(this) + } + EmailRelayListState.Item( + key = it.id.orEmpty(), + title = it.name, + service = relay?.name ?: it.type, + icon = icon, + accentLight = it.accentColor.light, + accentDark = it.accentColor.dark, + dropdown = dropdown, + selectableState = selectableStateFlow, + ) + } + .toPersistentList() + } + .crashlyticsAttempt { e -> + val msg = "Failed to get the email relay list!" + EmailRelayListUiException( + msg = msg, + cause = e, + ) + } + val contentFlow = combine( + selectionFlow, + itemsFlow, + ) { selection, itemsResult -> + val contentOrException = itemsResult + .map { items -> + EmailRelayListState.Content( + revision = 0, + items = items, + selection = selection, + primaryActions = primaryActions, + ) + } + Loadable.Ok(contentOrException) + } + contentFlow + .map { content -> + val state = EmailRelayListState( + content = content, + ) + Loadable.Ok(state) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/history/GeneratorHistoryItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/history/GeneratorHistoryItem.kt new file mode 100644 index 00000000..86a8ced1 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/history/GeneratorHistoryItem.kt @@ -0,0 +1,51 @@ +package com.artemchep.keyguard.feature.generator.history + +import androidx.compose.runtime.Immutable +import arrow.optics.optics +import com.artemchep.keyguard.feature.attachments.SelectableItemState +import com.artemchep.keyguard.ui.FlatItemAction +import kotlinx.collections.immutable.PersistentList +import kotlinx.coroutines.flow.StateFlow +import kotlinx.datetime.Instant +import java.util.UUID + +@Immutable +@optics +sealed interface GeneratorHistoryItem { + companion object + + val id: String + + @Immutable + data class Section( + override val id: String = UUID.randomUUID().toString(), + val text: String? = null, + val caps: Boolean = true, + ) : GeneratorHistoryItem { + companion object + } + + @Immutable + data class Value( + override val id: String, + val title: String, + val text: String, + val type: Type?, + val createdDate: Instant, + /** + * List of the callable actions appended + * to the item. + */ + val dropdown: PersistentList, + val selectableState: StateFlow, + ) : GeneratorHistoryItem { + companion object; + + enum class Type { + PASSWORD, + USERNAME, + EMAIL, + EMAIL_RELAY, + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/history/GeneratorHistoryRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/history/GeneratorHistoryRoute.kt new file mode 100644 index 00000000..ebf1fa27 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/history/GeneratorHistoryRoute.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.generator.history + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.Route + +object GeneratorHistoryRoute : Route { + @Composable + override fun Content() { + GeneratorHistoryScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/history/GeneratorHistoryScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/history/GeneratorHistoryScreen.kt new file mode 100644 index 00000000..9966f988 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/history/GeneratorHistoryScreen.kt @@ -0,0 +1,254 @@ +package com.artemchep.keyguard.feature.generator.history + +import androidx.compose.animation.Crossfade +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.lazy.LazyListScope +import androidx.compose.foundation.lazy.items +import androidx.compose.material.ExperimentalMaterialApi +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.AlternateEmail +import androidx.compose.material.icons.outlined.ContentCopy +import androidx.compose.material.icons.outlined.Email +import androidx.compose.material.icons.outlined.ForwardToInbox +import androidx.compose.material.icons.outlined.Password +import androidx.compose.material3.Checkbox +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.input.nestedscroll.nestedScroll +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.fold +import com.artemchep.keyguard.common.model.getOrNull +import com.artemchep.keyguard.feature.EmptyView +import com.artemchep.keyguard.feature.home.vault.component.Section +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.DefaultSelection +import com.artemchep.keyguard.ui.ExpandedIfNotEmptyForRow +import com.artemchep.keyguard.ui.FlatDropdown +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.OptionsButton +import com.artemchep.keyguard.ui.ScaffoldLazyColumn +import com.artemchep.keyguard.ui.colorizePassword +import com.artemchep.keyguard.ui.icons.Stub +import com.artemchep.keyguard.ui.items.FlatItemSkeleton +import com.artemchep.keyguard.ui.theme.monoFontFamily +import com.artemchep.keyguard.ui.toolbar.LargeToolbar +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun GeneratorHistoryScreen() { + val loadableState = produceGeneratorHistoryState() + GeneratorPaneMaster( + modifier = Modifier, + loadableState = loadableState, + ) +} + +@OptIn( + ExperimentalMaterial3Api::class, + ExperimentalMaterialApi::class, +) +@Composable +private fun GeneratorPaneMaster( + modifier: Modifier, + loadableState: Loadable, +) { + val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + ScaffoldLazyColumn( + modifier = modifier + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + LargeToolbar( + title = { + Text(stringResource(Res.strings.generatorhistory_header_title)) + }, + navigationIcon = { + NavigationIcon() + }, + actions = { + loadableState.fold( + ifLoading = { + }, + ifOk = { state -> + val actions = state.options + OptionsButton(actions) + }, + ) + }, + scrollBehavior = scrollBehavior, + ) + }, + bottomBar = { + val selectionOrNull = loadableState.getOrNull()?.selection + DefaultSelection( + state = selectionOrNull, + ) + }, + ) { + loadableState.fold( + ifLoading = { + populateGeneratorPaneMasterSkeleton() + }, + ifOk = { state -> + populateGeneratorPaneMasterContent( + state = state, + ) + }, + ) + } +} + +private fun LazyListScope.populateGeneratorPaneMasterSkeleton() { + item("skeleton") { + FlatItemSkeleton() + } +} + +@OptIn(ExperimentalFoundationApi::class) +private fun LazyListScope.populateGeneratorPaneMasterContent( + state: GeneratorHistoryState, +) { + if (state.items.isEmpty()) { + item("empty") { + EmptyView() + } + } + items(state.items, key = { it.id }) { item -> + GeneratorHistoryItem( + modifier = Modifier + .animateItemPlacement(), + item = item, + ) + } +} + +@Composable +private fun GeneratorHistoryItem( + modifier: Modifier, + item: GeneratorHistoryItem, +) = when (item) { + is GeneratorHistoryItem.Section -> GeneratorHistoryItem( + modifier = modifier, + item = item, + ) + + is GeneratorHistoryItem.Value -> GeneratorHistoryItem( + modifier = modifier, + item = item, + ) +} + +@Composable +private fun GeneratorHistoryItem( + modifier: Modifier, + item: GeneratorHistoryItem.Section, +) { + Section( + modifier = modifier, + text = item.text, + caps = item.caps, + ) +} + +@Composable +private fun GeneratorHistoryItem( + modifier: Modifier, + item: GeneratorHistoryItem.Value, +) { + val selectableState by item.selectableState.collectAsState() + val backgroundColor = when { + selectableState.selected -> MaterialTheme.colorScheme.primaryContainer + else -> Color.Unspecified + } + FlatDropdown( + modifier = modifier, + backgroundColor = backgroundColor, + leading = { + Crossfade(targetState = item.type) { type -> + val icon = when (type) { + GeneratorHistoryItem.Value.Type.USERNAME -> Icons.Outlined.AlternateEmail + GeneratorHistoryItem.Value.Type.EMAIL -> Icons.Outlined.Email + GeneratorHistoryItem.Value.Type.EMAIL_RELAY -> Icons.Outlined.ForwardToInbox + GeneratorHistoryItem.Value.Type.PASSWORD -> Icons.Outlined.Password + null -> Icons.Stub + } + Icon(icon, null) + } + }, + content = { + FlatItemTextContent( + title = { + when (item.type) { + GeneratorHistoryItem.Value.Type.USERNAME, + GeneratorHistoryItem.Value.Type.EMAIL, + GeneratorHistoryItem.Value.Type.EMAIL_RELAY, + -> + Text( + text = item.title, + fontFamily = monoFontFamily, + ) + + else -> + Text( + text = colorizePassword(item.title, LocalContentColor.current), + fontFamily = monoFontFamily, + ) + } + }, + text = if (item.text.isNotBlank()) { + // composable + { + Text(item.text) + } + } else { + null + }, + ) + }, + dropdown = item.dropdown, + trailing = { + val onCopyAction = remember(item.dropdown) { + item.dropdown + .firstOrNull { it.type == FlatItemAction.Type.COPY } + } + if (onCopyAction != null) { + val onCopy = onCopyAction.onClick + IconButton( + enabled = onCopy != null, + onClick = { + onCopy?.invoke() + }, + ) { + Icon( + imageVector = Icons.Outlined.ContentCopy, + contentDescription = null, + ) + } + } + ExpandedIfNotEmptyForRow( + selectableState.selected.takeIf { selectableState.selecting }, + ) { selected -> + Checkbox( + checked = selected, + onCheckedChange = null, + ) + } + }, + onClick = selectableState.onClick, + onLongClick = selectableState.onLongClick, + enabled = true, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/history/GeneratorHistoryState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/history/GeneratorHistoryState.kt new file mode 100644 index 00000000..dff549ea --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/history/GeneratorHistoryState.kt @@ -0,0 +1,15 @@ +@file:JvmName("GeneratorStateUtils") + +package com.artemchep.keyguard.feature.generator.history + +import androidx.compose.runtime.Immutable +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.Selection +import kotlinx.collections.immutable.ImmutableList + +@Immutable +data class GeneratorHistoryState( + val selection: Selection?, + val options: ImmutableList, + val items: ImmutableList, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducer.kt new file mode 100644 index 00000000..5d736501 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/generator/history/GeneratorHistoryStateProducer.kt @@ -0,0 +1,313 @@ +package com.artemchep.keyguard.feature.generator.history + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Delete +import androidx.compose.runtime.Composable +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.service.clipboard.ClipboardService +import com.artemchep.keyguard.common.usecase.DateFormatter +import com.artemchep.keyguard.common.usecase.GetGeneratorHistory +import com.artemchep.keyguard.common.usecase.RemoveGeneratorHistory +import com.artemchep.keyguard.common.usecase.RemoveGeneratorHistoryById +import com.artemchep.keyguard.common.util.flow.persistingStateIn +import com.artemchep.keyguard.feature.attachments.SelectableItemState +import com.artemchep.keyguard.feature.attachments.SelectableItemStateRaw +import com.artemchep.keyguard.feature.auth.common.util.REGEX_EMAIL +import com.artemchep.keyguard.feature.confirmation.ConfirmationResult +import com.artemchep.keyguard.feature.confirmation.ConfirmationRoute +import com.artemchep.keyguard.feature.decorator.ItemDecoratorDate +import com.artemchep.keyguard.feature.largetype.LargeTypeRoute +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.registerRouteResultReceiver +import com.artemchep.keyguard.feature.navigation.state.copy +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.Selection +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.selection.selectionHandle +import kotlinx.collections.immutable.persistentListOf +import kotlinx.collections.immutable.toImmutableList +import kotlinx.collections.immutable.toPersistentList +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.awaitCancellation +import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.filterNotNull +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.flow +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.flow.stateIn +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +@Composable +fun produceGeneratorHistoryState() = with(localDI().direct) { + produceGeneratorHistoryState( + getGeneratorHistory = instance(), + removeGeneratorHistory = instance(), + removeGeneratorHistoryById = instance(), + dateFormatter = instance(), + clipboardService = instance(), + ) +} + +@Composable +fun produceGeneratorHistoryState( + getGeneratorHistory: GetGeneratorHistory, + removeGeneratorHistory: RemoveGeneratorHistory, + removeGeneratorHistoryById: RemoveGeneratorHistoryById, + dateFormatter: DateFormatter, + clipboardService: ClipboardService, +): Loadable = produceScreenState( + initial = Loadable.Loading, + key = "generator_history", + args = arrayOf( + getGeneratorHistory, + removeGeneratorHistory, + removeGeneratorHistoryById, + dateFormatter, + clipboardService, + ), +) { + val selectionHandle = selectionHandle("selection") + + val copyFactory = copy(clipboardService) + + val itemsRawFlow = getGeneratorHistory() + .shareInScreenScope() + val optionsFlow = itemsRawFlow + .map { items -> + items.isEmpty() + } + .distinctUntilChanged() + .map { isEmpty -> + if (isEmpty) { + persistentListOf() + } else { + val action = FlatItemAction( + leading = icon(Icons.Outlined.Delete), + title = translate(Res.strings.generatorhistory_clear_history_title), + onClick = { + val route = registerRouteResultReceiver( + route = ConfirmationRoute( + args = ConfirmationRoute.Args( + icon = icon(Icons.Outlined.Delete), + title = translate(Res.strings.generatorhistory_clear_history_confirmation_title), + message = translate(Res.strings.generatorhistory_clear_history_confirmation_text), + ), + ), + ) { + if (it is ConfirmationResult.Confirm) { + removeGeneratorHistory() + .launchIn(appScope) + } + } + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + persistentListOf(action) + } + } + // Automatically de-select items + // that do not exist. + combine( + itemsRawFlow, + selectionHandle.idsFlow, + ) { items, selectedItemIds -> + val newSelectedAttachmentIds = selectedItemIds + .asSequence() + .filter { attachmentId -> + items.any { it.id == attachmentId } + } + .toSet() + newSelectedAttachmentIds.takeIf { it.size < selectedItemIds.size } + } + .filterNotNull() + .onEach { ids -> selectionHandle.setSelection(ids) } + .launchIn(screenScope) + + val selectionFlow = combine( + itemsRawFlow, + selectionHandle.idsFlow, + ) { items, selectedItemIds -> + val selectedItems = items + .filter { it.id in selectedItemIds } + items to selectedItems + } + .map { (allItems, selectedItems) -> + if (selectedItems.isEmpty()) { + return@map null + } + + val actions = mutableListOf() + actions += FlatItemAction( + leading = icon(Icons.Outlined.Delete), + title = translate(Res.strings.remove_from_history), + onClick = { + val ids = selectedItems.mapNotNull { it.id }.toSet() + removeGeneratorHistoryById(ids) + .launchIn(appScope) + }, + ) + Selection( + count = selectedItems.size, + actions = actions.toPersistentList(), + onSelectAll = if (selectedItems.size < allItems.size) { + val allIds = allItems + .asSequence() + .mapNotNull { it.id } + .toSet() + selectionHandle::setSelection + .partially1(allIds) + } else { + null + }, + onClear = selectionHandle::clearSelection, + ) + } + + val itemsValueFlow = itemsRawFlow + .mapLatestScoped { items -> + items.map { item -> + val type = when { + item.isPassword && item.isUsername -> null + item.isPassword -> GeneratorHistoryItem.Value.Type.PASSWORD + item.isUsername -> kotlin.run { + val isEmail = REGEX_EMAIL.matches(item.value) + if (isEmail) { + if (item.isEmailRelay) { + GeneratorHistoryItem.Value.Type.EMAIL_RELAY + } else { + GeneratorHistoryItem.Value.Type.EMAIL + } + } else { + GeneratorHistoryItem.Value.Type.USERNAME + } + } + + else -> null + } + val actions = listOfNotNull( + copyFactory.FlatItemAction( + title = translate(Res.strings.copy_value), + value = item.value, + hidden = item.isPassword, + ), + LargeTypeRoute.showInLargeTypeActionOrNull( + translator = this@produceScreenState, + text = item.value, + colorize = item.isPassword, + navigate = ::navigate, + ), + LargeTypeRoute.showInLargeTypeActionAndLockOrNull( + translator = this@produceScreenState, + text = item.value, + colorize = item.isPassword, + navigate = ::navigate, + ), + ).toPersistentList() + val selectableFlow = selectionHandle + .idsFlow + .map { selectedIds -> + SelectableItemStateRaw( + selecting = selectedIds.isNotEmpty(), + selected = item.id in selectedIds, + ) + } + .distinctUntilChanged() + .map { raw -> + val onClick = if (raw.selecting) { + // lambda + selectionHandle::toggleSelection.partially1(item.id.orEmpty()) + } else { + null + } + val onLongClick = if (raw.selecting) { + null + } else { + // lambda + selectionHandle::toggleSelection.partially1(item.id.orEmpty()) + } + SelectableItemState( + selecting = raw.selecting, + selected = raw.selected, + onClick = onClick, + onLongClick = onLongClick, + ) + } + val selectableStateFlow = + if (items.size >= 100) { + val sharing = SharingStarted.WhileSubscribed(1000L) + selectableFlow.persistingStateIn(this, sharing) + } else { + selectableFlow.stateIn(this) + } + GeneratorHistoryItem.Value( + id = item.id.orEmpty(), + title = item.value, + text = dateFormatter.formatDateTime(item.createdDate), + type = type, + createdDate = item.createdDate, + dropdown = actions, + selectableState = selectableStateFlow, + ) + } + } + val itemsFlow = itemsValueFlow + .map { items -> + val decorator = ItemDecoratorDate( + dateFormatter = dateFormatter, + selector = { it.createdDate }, + factory = { id, text -> + GeneratorHistoryItem.Section( + id = id, + text = text, + ) + }, + ) + sequence { + items.forEach { item -> + val section = decorator.getOrNull(item) + if (section != null) { + yield(section) + } + yield(item) + } + }.toPersistentList() + } + combine( + optionsFlow, + selectionFlow, + itemsFlow, + ) { options, selection, items -> + val state = GeneratorHistoryState( + options = options, + selection = selection, + items = items.toImmutableList(), + ) + Loadable.Ok(state) + } +} + +fun Flow.mapLatestScoped( + block: suspend CoroutineScope.(T) -> R, +) = this + .flatMapLatest { value -> + flow { + coroutineScope { + val result = block(value) + emit(result) + awaitCancellation() + } + } + } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/HomeLayout.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/HomeLayout.kt new file mode 100644 index 00000000..b255307f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/HomeLayout.kt @@ -0,0 +1,33 @@ +package com.artemchep.keyguard.feature.home + +import androidx.compose.foundation.layout.BoxWithConstraints +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.staticCompositionLocalOf +import androidx.compose.ui.Modifier + +internal val LocalHomeLayout = staticCompositionLocalOf { + throw IllegalStateException("Home layout must be initialized!") +} + +sealed interface HomeLayout { + data object Vertical : HomeLayout + data object Horizontal : HomeLayout +} + +@Composable +fun ResponsiveLayout( + content: @Composable () -> Unit, +) = BoxWithConstraints( + modifier = Modifier + .fillMaxSize(), +) { + val layout = when { + maxHeight < maxWidth -> HomeLayout.Horizontal + else -> HomeLayout.Vertical + } + CompositionLocalProvider(LocalHomeLayout provides layout) { + content() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/HomeScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/HomeScreen.kt new file mode 100644 index 00000000..37869d6d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/HomeScreen.kt @@ -0,0 +1,893 @@ +package com.artemchep.keyguard.feature.home + +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.Crossfade +import androidx.compose.animation.ExperimentalAnimationApi +import androidx.compose.animation.animateContentSize +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.animation.scaleIn +import androidx.compose.animation.scaleOut +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.BoxScope +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.IntrinsicSize +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.WindowInsetsSides +import androidx.compose.foundation.layout.add +import androidx.compose.foundation.layout.asPaddingValues +import androidx.compose.foundation.layout.consumeWindowInsets +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.heightIn +import androidx.compose.foundation.layout.only +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.union +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.windowInsetsPadding +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.selection.selectableGroup +import androidx.compose.foundation.verticalScroll +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Home +import androidx.compose.material.icons.filled.Password +import androidx.compose.material.icons.filled.Security +import androidx.compose.material.icons.filled.Send +import androidx.compose.material.icons.filled.Settings +import androidx.compose.material.icons.outlined.CheckCircle +import androidx.compose.material.icons.outlined.CloudUpload +import androidx.compose.material.icons.outlined.ErrorOutline +import androidx.compose.material.icons.outlined.Home +import androidx.compose.material.icons.outlined.Info +import androidx.compose.material.icons.outlined.Password +import androidx.compose.material.icons.outlined.Security +import androidx.compose.material.icons.outlined.Send +import androidx.compose.material.icons.outlined.Settings +import androidx.compose.material3.Badge +import androidx.compose.material3.BadgedBox +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.LinearProgressIndicator +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.NavigationBarItem +import androidx.compose.material3.NavigationRail +import androidx.compose.material3.NavigationRailItem +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.State +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import androidx.compose.ui.zIndex +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.model.DAccountStatus +import com.artemchep.keyguard.common.usecase.GetAccountStatus +import com.artemchep.keyguard.common.usecase.GetNavLabel +import com.artemchep.keyguard.common.usecase.GetPasswordStrength +import com.artemchep.keyguard.core.store.DatabaseManager +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.feature.generator.GeneratorRoute +import com.artemchep.keyguard.feature.watchtower.WatchtowerRoute +import com.artemchep.keyguard.feature.home.settings.SettingsRoute +import com.artemchep.keyguard.feature.home.vault.VaultRoute +import com.artemchep.keyguard.feature.localization.TextHolder +import com.artemchep.keyguard.feature.localization.textResource +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.LocalNavigationNodeVisualStack +import com.artemchep.keyguard.feature.navigation.NavigationController +import com.artemchep.keyguard.feature.navigation.NavigationEntry +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.NavigationNode +import com.artemchep.keyguard.feature.navigation.NavigationRouter +import com.artemchep.keyguard.feature.navigation.Route +import com.artemchep.keyguard.feature.navigation.popById +import com.artemchep.keyguard.feature.send.SendRoute +import com.artemchep.keyguard.feature.sync.SyncRoute +import com.artemchep.keyguard.platform.LocalLeContext +import com.artemchep.keyguard.platform.leDisplayCutout +import com.artemchep.keyguard.platform.leIme +import com.artemchep.keyguard.platform.leNavigationBars +import com.artemchep.keyguard.platform.leStatusBars +import com.artemchep.keyguard.platform.leSystemBars +import com.artemchep.keyguard.platform.recordLog +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.shimmer.shimmer +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.badgeContainer +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.theme.info +import com.artemchep.keyguard.ui.theme.infoContainer +import com.artemchep.keyguard.ui.theme.ok +import com.artemchep.keyguard.ui.util.VerticalDivider +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.collections.immutable.PersistentList +import kotlinx.collections.immutable.persistentListOf +import kotlinx.collections.immutable.toPersistentList +import org.kodein.di.compose.rememberInstance + +data class Rail( + val route: Route, + val icon: ImageVector, + val iconSelected: ImageVector, + val label: TextHolder, +) + +private const val ROUTE_NAME = "home" + +private val vaultRoute = VaultRoute() + +@Composable +fun HomeEffect() { + val db by rememberInstance() + val ps by rememberInstance() + LaunchedEffect(Unit) { + db.mutate { + val ciphers = it.cipherQueries.get().executeAsList() + val www = ciphers + .filter { it.data_.login?.password != null && it.data_.login.passwordStrength == null } + .mapNotNull { + val password = it.data_.login?.password!! + val s = ps(password) + .attempt() + .bind() + .getOrNull() + if (s != null) { + val login = it.data_.login.copy( + passwordStrength = BitwardenCipher.Login.PasswordStrength( + password = password, + crackTimeSeconds = s.crackTimeSeconds, + version = 1, + ), + ) + it.copy( + data_ = it.data_.copy( + login = login, + ), + ) + } else { + null + } + } + .toTypedArray() + recordLog("Replaced ${www.size} entities") + it.transaction { + www.forEach { cipher -> + it.cipherQueries.insert( + cipherId = cipher.cipherId, + accountId = cipher.accountId, + folderId = cipher.folderId, + data = cipher.data_, + ) + } + } + }.attempt().bind() + } +} + +@Composable +fun HomeScreen( + defaultRoute: Route = vaultRoute, + navBarVisible: Boolean = true, +) { + HomeEffect() + + val navRoutes = remember { + listOf( + Rail( + route = vaultRoute, + icon = Icons.Outlined.Home, + iconSelected = Icons.Filled.Home, + label = TextHolder.Res(Res.strings.home_vault_label), + ), + Rail( + route = SendRoute, + icon = Icons.Outlined.Send, + iconSelected = Icons.Filled.Send, + label = TextHolder.Res(Res.strings.home_send_label), + ), + Rail( + route = GeneratorRoute( + args = GeneratorRoute.Args( + password = true, + username = true, + ), + ), + icon = Icons.Outlined.Password, + iconSelected = Icons.Filled.Password, + label = TextHolder.Res(Res.strings.home_generator_label), + ), + Rail( + route = WatchtowerRoute, + icon = Icons.Outlined.Security, + iconSelected = Icons.Filled.Security, + label = TextHolder.Res(Res.strings.home_watchtower_label), + ), +// Rail( +// route = AccountsRoute, +// icon = Icons.Outlined.AccountCircle, +// iconSelected = Icons.Filled.AccountCircle, +// label = "Accounts", +// ), + Rail( + route = SettingsRoute, + icon = Icons.Outlined.Settings, + iconSelected = Icons.Filled.Settings, + label = TextHolder.Res(Res.strings.home_settings_label), + ), + ) + } + NavigationRouter( + id = ROUTE_NAME, + initial = defaultRoute, + ) { backStack -> + HomeScreenContent( + backStack = backStack, + routes = navRoutes, + navBarVisible = navBarVisible, + ) + } +} + +@Composable +fun HomeScreenContent( + backStack: PersistentList, + routes: List, + navBarVisible: Boolean = true, +) { + ResponsiveLayout { + val horizontalInsets = WindowInsets.leStatusBars + .union(WindowInsets.leNavigationBars) + .union(WindowInsets.leDisplayCutout) + .only(WindowInsetsSides.Horizontal) + Row( + modifier = Modifier + .windowInsetsPadding(horizontalInsets) + .consumeWindowInsets(horizontalInsets), + ) { + val getNavLabel by rememberInstance() + val navLabelState = remember(getNavLabel) { + getNavLabel() + }.collectAsState() + + val getAccountStatus by rememberInstance() + val accountStatusState = remember(getAccountStatus) { + getAccountStatus() + }.collectAsState(DAccountStatus()) + // The first row is a row that contains rail navigation + // bar and should be shown on tablets. + AnimatedVisibility( + modifier = Modifier + .zIndex(2f), + visible = LocalHomeLayout.current is HomeLayout.Horizontal && navBarVisible, + ) { + Row { + val scrollState = rememberScrollState() + val verticalInsets = WindowInsets.leSystemBars + .union(WindowInsets.leIme) + .only(WindowInsetsSides.Vertical) + NavigationRail( + modifier = Modifier + .fillMaxHeight() + // When the keyboard is opened, there might be not + // enough space for all the items. + .verticalScroll(scrollState), + windowInsets = verticalInsets, + ) { + routes.forEach { r -> + RailNavigationControllerItem( + backStack = backStack, + route = r.route, + icon = r.icon, + iconSelected = r.iconSelected, + label = if (navLabelState.value) { + // composable + { + Text( + text = textResource(r.label), + maxLines = 2, + ) + } + } else { + null + }, + ) + } + Spacer( + modifier = Modifier + .weight(1f), + ) + Column( + modifier = Modifier + .padding(top = 16.dp) + .width(IntrinsicSize.Min), + ) { + RailStatusBadge( + modifier = Modifier, + statusState = accountStatusState, + ) + } + } + VerticalDivider() + } + } + val bottomInsets = WindowInsets.leStatusBars + .union(WindowInsets.leNavigationBars) + .union(WindowInsets.leDisplayCutout) + .only(WindowInsetsSides.Bottom) + val bottomNavBarVisible = + LocalHomeLayout.current is HomeLayout.Vertical && navBarVisible + Column( + modifier = Modifier + .weight(1f) + .fillMaxHeight() + .then( + if (bottomNavBarVisible) { + val navBarInsets = bottomInsets + .add(WindowInsets(bottom = 80.dp)) + Modifier.consumeWindowInsets(navBarInsets) + } else { + Modifier + }, + ), + ) { + Box( + modifier = Modifier + .fillMaxWidth() + .weight(1f), + ) { + CompositionLocalProvider( + LocalNavigationNodeVisualStack provides persistentListOf(), + ) { + NavigationNode( + entries = backStack, + ) + } + } + + // TODO: +// val onboardingBannerState = rememberOnboardingBannerState() +// val notificationsBannerState = rememberNotificationsBannerState() +// kotlin.run { +// val navigationController by rememberUpdatedState(LocalNavigationController.current) +// ExpandedIfNotEmpty( +// valueOrNull = Unit.takeIf { onboardingBannerState.value }, +// ) { +// OnboardingBanner( +// contentModifier = Modifier +// .then( +// if (!bottomNavBarVisible && !notificationsBannerState.value) { +// Modifier +// .padding(bottomInsets.asPaddingValues()) +// } else Modifier +// ), +// onClick = { +// val intent = NavigationIntent.NavigateToRoute( +// route = OnboardingRoute, +// ) +// navigationController.queue(intent) +// }, +// ) +// } +// } +// // TODO: Show notifications banner as in a bottom navigation +// // container if the orientation is landscape. +// NotificationsBanner( +// contentModifier = Modifier +// .then( +// if (!bottomNavBarVisible) { +// Modifier +// .padding(bottomInsets.asPaddingValues()) +// } else Modifier +// ), +// ) + AnimatedVisibility( + visible = bottomNavBarVisible, + ) { + Surface( + tonalElevation = 3.dp, + ) { + Column { + BannerStatusBadge( + modifier = Modifier + .fillMaxWidth(), + statusState = accountStatusState, + ) + Row( + modifier = Modifier + .fillMaxWidth() + .padding(bottomInsets.asPaddingValues()) + .height(80.dp) + .selectableGroup(), + horizontalArrangement = Arrangement.SpaceBetween, + ) { + routes.forEach { r -> + BottomNavigationControllerItem( + backStack = backStack, + route = r.route, + icon = r.icon, + iconSelected = r.iconSelected, + label = if (navLabelState.value) { + // composable + { + Text( + text = textResource(r.label), + maxLines = 2, + textAlign = TextAlign.Center, + // Default style does not fit on devices with small + // screens. + style = MaterialTheme.typography.labelSmall, + ) + } + } else { + null + }, + ) + } + } + } + + val isSyncingState = remember( + accountStatusState, + ) { + derivedStateOf { + accountStatusState.value.error == null && + accountStatusState.value.pending != null + } + } + AnimatedVisibility( + visible = isSyncingState.value, + ) { + LinearProgressIndicator( + modifier = Modifier + .fillMaxWidth(), + ) + } + } + } + } + } + } +} + +@Composable +private fun BannerStatusBadge( + modifier: Modifier = Modifier, + statusState: State, +) { + val updatedContext by rememberUpdatedState(LocalLeContext) + val updatedNavController by rememberUpdatedState(LocalNavigationController.current) + val errorState = remember( + statusState, + ) { + derivedStateOf { + val error = statusState.value.error + when { + error != null -> { + BannerStatusBadgeContentModel( + count = error.count, + title = TextHolder.Res(Res.strings.syncstatus_status_failed), + error = true, + onClick = { + navigateSyncStatus(updatedNavController) + }, + ) + } + + statusState.value.pendingPermissions + .isNotEmpty() -> { + BannerStatusBadgeContentModel( + count = 0, + title = TextHolder.Value("Notifications are disabled"), + text = TextHolder.Value("Grant the notification permission to allow Keyguard to show one-time passwords when autofilling & more."), + error = false, + onClick = { + val permission = statusState.value.pendingPermissions + .firstOrNull() + permission?.ask?.invoke(updatedContext) + }, + ) + } + + else -> null + } + } + } + ExpandedIfNotEmpty( + modifier = modifier, + valueOrNull = errorState.value, + ) { currentErrorState -> + BannerStatusBadgeContent( + state = currentErrorState, + ) + } +} + +private data class BannerStatusBadgeContentModel( + val count: Int, + val title: TextHolder, + val text: TextHolder? = null, + val error: Boolean, + val onClick: () -> Unit, +) + +@Composable +private fun BannerStatusBadgeContent( + modifier: Modifier = Modifier, + contentModifier: Modifier = Modifier, + state: BannerStatusBadgeContentModel, +) { + Row { + val backgroundColor = + if (state.error) MaterialTheme.colorScheme.errorContainer else MaterialTheme.colorScheme.infoContainer + val contentColor = + if (state.error) MaterialTheme.colorScheme.error else MaterialTheme.colorScheme.info + Row( + modifier = modifier + .weight(1f) + .padding(top = 8.dp) + .padding(horizontal = 8.dp) + .clip(MaterialTheme.shapes.medium) + .background(backgroundColor) + .clickable(onClick = state.onClick) + .then(contentModifier) + .padding( + vertical = 8.dp, + horizontal = Dimens.horizontalPadding, + ), + verticalAlignment = Alignment.CenterVertically, + ) { + Box( + contentAlignment = Alignment.Center, + ) { + Icon( + imageVector = Icons.Outlined.Info, + contentDescription = null, + tint = contentColor, + ) + if (state.count > 0) { + BadgedBox( + badge = { + Badge( + containerColor = MaterialTheme.colorScheme.badgeContainer, + ) { + Text( + modifier = Modifier + .animateContentSize(), + text = state.count.toString(), + ) + } + }, + ) { + Box( + modifier = Modifier + .size(8.dp), + ) + } + } + } + Spacer( + modifier = Modifier + .width(Dimens.horizontalPadding), + ) + Column( + modifier = Modifier + .weight(1f), + ) { + Text( + text = textResource(state.title), + style = MaterialTheme.typography.labelLarge, + ) + ExpandedIfNotEmpty( + valueOrNull = state.text, + ) { text -> + Text( + text = textResource(text), + style = MaterialTheme.typography.labelMedium, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + ) + } + } + Spacer( + modifier = Modifier + .width(Dimens.horizontalPadding), + ) + ChevronIcon() + } + } +} + +@Composable +private fun RailStatusBadge( + modifier: Modifier = Modifier, + statusState: State, +) { + val updatedContext by rememberUpdatedState(LocalLeContext) + val updatedNavController by rememberUpdatedState(LocalNavigationController.current) + Box( + modifier = modifier + .width(80.dp) + .heightIn(min = 80.dp) + .padding(4.dp) + .clip(MaterialTheme.shapes.medium) + .clickable { + val status = statusState.value + when { + status.error != null && + status.pending != null -> { + navigateSyncStatus(updatedNavController) + } + + status.pendingPermissions.isNotEmpty() -> { + val permission = status.pendingPermissions + .firstOrNull() + permission?.ask?.invoke(updatedContext) + } + + else -> { + navigateSyncStatus(updatedNavController) + } + } + }, + contentAlignment = Alignment.Center, + ) { + val status = statusState.value + when { + status.error != null -> { + RailStatusBadgeContent( + contentColor = MaterialTheme.colorScheme.error, + icon = { + Icon( + imageVector = Icons.Outlined.ErrorOutline, + contentDescription = null, + ) + }, + badge = status.error.count + .takeIf { it > 0 } + ?.toString(), + text = stringResource(Res.strings.syncstatus_status_failed), + ) + } + + status.pending != null -> { + RailStatusBadgeContent( + modifier = Modifier + .shimmer(), + icon = { + Icon( + imageVector = Icons.Outlined.CloudUpload, + contentDescription = null, + ) + }, + badge = status.pending.count + .takeIf { it > 0 } + ?.toString(), + text = stringResource(Res.strings.syncstatus_status_syncing), + ) + } + + status.pendingPermissions.isNotEmpty() -> { + RailStatusBadgeContent( + contentColor = MaterialTheme.colorScheme.info, + icon = { + Icon( + imageVector = Icons.Outlined.Info, + contentDescription = null, + ) + }, + text = "Pending permissions", + ) + } + + else -> { + RailStatusBadgeContent( + contentColor = MaterialTheme.colorScheme.ok, + icon = { + Icon( + imageVector = Icons.Outlined.CheckCircle, + contentDescription = null, + ) + }, + text = stringResource(Res.strings.syncstatus_status_up_to_date), + ) + } + } + } +} + +@Composable +private fun RailStatusBadgeContent( + modifier: Modifier = Modifier, + contentColor: Color = LocalContentColor.current, + icon: @Composable () -> Unit, + badge: String? = null, + text: String, +) { + Column( + modifier = modifier + .padding( + horizontal = 4.dp, + vertical = 16.dp, + ), + verticalArrangement = Arrangement.spacedBy(4.dp), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + BadgedBox( + badge = { + ExpandedIfNotEmpty( + valueOrNull = badge, + enter = fadeIn() + scaleIn(), + exit = scaleOut() + fadeOut(), + ) { currentBadge -> + Badge( + containerColor = MaterialTheme.colorScheme.badgeContainer, + ) { + Text( + modifier = Modifier + .animateContentSize(), + text = currentBadge, + ) + } + } + }, + ) { + CompositionLocalProvider( + LocalContentColor provides contentColor, + ) { + Box( + modifier = Modifier + .size(18.dp), + ) { + icon() + } + } + } + Text( + text = text, + style = MaterialTheme.typography.labelSmall, + textAlign = TextAlign.Center, + maxLines = 2, + color = contentColor, + ) + } +} + +@Composable +private fun ColumnScope.RailNavigationControllerItem( + backStack: List, + route: Route, + icon: ImageVector, + iconSelected: ImageVector, + badge: @Composable (BoxScope.() -> Unit)? = null, + label: @Composable (() -> Unit)? = null, +) { + val controller = LocalNavigationController.current + val selected = isSelected(backStack, route) + NavigationRailItem( + icon = { + Box { + NavigationIcon( + selected = selected, + icon = icon, + iconSelected = iconSelected, + ) + badge?.invoke(this) + } + }, + label = label, + selected = selected, + onClick = { + navigateOnClick(controller, backStack, route) + }, + ) +} + +@Composable +private fun RowScope.BottomNavigationControllerItem( + backStack: List, + route: Route, + icon: ImageVector, + iconSelected: ImageVector, + badge: @Composable (BoxScope.() -> Unit)? = null, + label: @Composable (() -> Unit)? = null, +) { + val controller = LocalNavigationController.current + val selected = isSelected(backStack, route) + NavigationBarItem( + icon = { + Box { + NavigationIcon( + selected = selected, + icon = icon, + iconSelected = iconSelected, + ) + badge?.invoke(this) + } + }, + label = label, + selected = selected, + onClick = { + navigateOnClick(controller, backStack, route) + }, + ) +} + +private fun isSelected( + backStack: List, + route: Route, +) = run { + val entry = backStack.getOrNull(1) ?: backStack.firstOrNull() + entry?.route === route +} + +@Composable +private fun NavigationIcon( + selected: Boolean, + icon: ImageVector, + iconSelected: ImageVector, +) { + Crossfade(targetState = selected) { + val vector = if (it) { + iconSelected + } else { + icon + } + Icon(vector, null) + } +} + +private fun navigateOnClick( + controller: NavigationController, + backStack: List, + route: Route, +) { + val intent = NavigationIntent.Manual { factory -> + // If the route exists in the stack, then simply + // navigate back to it. + val indexOfRoute = backStack.indexOfFirst { it.route === route } + if (indexOfRoute != -1 && indexOfRoute <= 1) { + return@Manual subList(0, indexOfRoute + 1) + .toPersistentList() + } + + val stack = popById(ROUTE_NAME, exclusive = true) + .orEmpty() + .toPersistentList() + stack.add(factory(route)) + } + controller.queue(intent) +} + +private fun navigateSyncStatus( + controller: NavigationController, +) { + val intent = NavigationIntent.NavigateToRoute(SyncRoute) + controller.queue(intent) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/SettingListItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/SettingListItem.kt new file mode 100644 index 00000000..bd347e5e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/SettingListItem.kt @@ -0,0 +1,105 @@ +package com.artemchep.keyguard.feature.home.settings + +import androidx.compose.foundation.horizontalScroll +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.rememberScrollState +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.feature.localization.textResource +import com.artemchep.keyguard.ui.Avatar +import com.artemchep.keyguard.ui.FlatItemLayout +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.theme.selectedContainer + +@Composable +fun SettingListItem( + item: SettingsItem, + selected: Boolean, + onClick: (SettingsItem) -> Unit, +) { + Column { + FlatItemLayout( + backgroundColor = if (selected) MaterialTheme.colorScheme.selectedContainer else Color.Unspecified, + leading = { + Avatar { + when { + item.leading != null -> { + Row( + modifier = Modifier + .align(Alignment.Center), + ) { + item.leading.invoke(this) + } + } + + item.icon != null -> { + Icon( + modifier = Modifier + .align(Alignment.Center), + imageVector = item.icon, + contentDescription = null, + ) + } + + else -> { + } + } + } + }, + trailing = { + if (item.trailing != null) { + item.trailing.invoke(this) + Spacer( + modifier = Modifier + .width(8.dp), + ) + } + ChevronIcon() + }, + content = { + FlatItemTextContent( + title = { + Text( + text = textResource(item.title), + style = MaterialTheme.typography.titleMedium, + ) + }, + text = { + Text( + text = textResource(item.text), + maxLines = 1, + overflow = TextOverflow.Ellipsis, + ) + }, + ) + }, + onClick = { + onClick(item) + }, + ) + if (item.content != null) { + Row( + modifier = Modifier + .padding(top = 8.dp, bottom = 16.dp) + .horizontalScroll(rememberScrollState()) + .padding(start = 64.dp, end = 8.dp), + horizontalArrangement = Arrangement.spacedBy(8.dp), + ) { + item.content.invoke(this) + } + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/SettingListRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/SettingListRoute.kt new file mode 100644 index 00000000..035cf9ea --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/SettingListRoute.kt @@ -0,0 +1,13 @@ +package com.artemchep.keyguard.feature.home.settings + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.Stable +import com.artemchep.keyguard.feature.navigation.Route + +@Stable +object SettingListRoute : Route { + @Composable + override fun Content() { + SettingListScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/SettingListScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/SettingListScreen.kt new file mode 100644 index 00000000..b9fbd7e3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/SettingListScreen.kt @@ -0,0 +1,316 @@ +package com.artemchep.keyguard.feature.home.settings + +import androidx.compose.animation.animateColorAsState +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.items +import androidx.compose.material.ExperimentalMaterialApi +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.AccountBox +import androidx.compose.material.icons.outlined.AutoAwesome +import androidx.compose.material.icons.outlined.Code +import androidx.compose.material.icons.outlined.ColorLens +import androidx.compose.material.icons.outlined.ErrorOutline +import androidx.compose.material.icons.outlined.Info +import androidx.compose.material.icons.outlined.Lock +import androidx.compose.material.icons.outlined.Notifications +import androidx.compose.material.icons.outlined.Search +import androidx.compose.material.icons.outlined.Security +import androidx.compose.material.pullrefresh.pullRefresh +import androidx.compose.material.pullrefresh.rememberPullRefreshState +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.input.nestedscroll.nestedScroll +import com.artemchep.keyguard.common.usecase.GetAccountsHasError +import com.artemchep.keyguard.common.usecase.GetPurchased +import com.artemchep.keyguard.feature.home.settings.accounts.AccountsRoute +import com.artemchep.keyguard.feature.home.settings.autofill.AutofillSettingsRoute +import com.artemchep.keyguard.feature.home.settings.debug.DebugSettingsRoute +import com.artemchep.keyguard.feature.home.settings.display.UiSettingsRoute +import com.artemchep.keyguard.feature.home.settings.notifications.NotificationsSettingsRoute +import com.artemchep.keyguard.feature.home.settings.other.OtherSettingsRoute +import com.artemchep.keyguard.feature.home.settings.search.SearchSettingsRoute +import com.artemchep.keyguard.feature.home.settings.security.SecuritySettingsRoute +import com.artemchep.keyguard.feature.home.settings.subscriptions.SubscriptionsSettingsRoute +import com.artemchep.keyguard.feature.home.settings.watchtower.WatchtowerSettingsRoute +import com.artemchep.keyguard.feature.home.vault.component.Section +import com.artemchep.keyguard.feature.localization.TextHolder +import com.artemchep.keyguard.feature.localization.textResource +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.LocalNavigationRouter +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.Route +import com.artemchep.keyguard.feature.onboarding.SmallOnboardingCard +import com.artemchep.keyguard.feature.onboarding.onboardingItemsPremium +import com.artemchep.keyguard.platform.CurrentPlatform +import com.artemchep.keyguard.platform.isStandalone +import com.artemchep.keyguard.platform.util.hasAutofill +import com.artemchep.keyguard.platform.util.hasSubscription +import com.artemchep.keyguard.platform.util.isRelease +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.ExpandedIfNotEmptyForRow +import com.artemchep.keyguard.ui.ScaffoldLazyColumn +import com.artemchep.keyguard.ui.icons.IconBox +import com.artemchep.keyguard.ui.icons.KeyguardPremium +import com.artemchep.keyguard.ui.pulltosearch.PullToSearch +import com.artemchep.keyguard.ui.toolbar.LargeToolbar +import dev.icerock.moko.resources.compose.stringResource +import org.kodein.di.compose.rememberInstance + +sealed interface SettingsItem2 { + val id: String +} + +data class SettingsItem( + override val id: String, + val title: TextHolder, + val text: TextHolder, + val icon: ImageVector? = null, + val leading: (@Composable RowScope.() -> Unit)? = null, + val trailing: (@Composable RowScope.() -> Unit)? = null, + val content: (@Composable RowScope.() -> Unit)? = null, + val route: Route, +) : SettingsItem2 + +data class SettingsSectionItem( + override val id: String, + val title: TextHolder?, +) : SettingsItem2 + +private val items = listOfNotNull( + SettingsItem( + id = "accounts", + title = TextHolder.Res(Res.strings.pref_item_accounts_title), + text = TextHolder.Res(Res.strings.pref_item_accounts_text), + icon = Icons.Outlined.AccountBox, + trailing = { + val getAccountsHasError: GetAccountsHasError by rememberInstance() + // Show a badge if any of the accounts have + // a failed sync attempt. + val visible by remember(getAccountsHasError) { + val settingsAlertVisibleFlow = getAccountsHasError() + settingsAlertVisibleFlow + }.collectAsState(initial = false) + ExpandedIfNotEmptyForRow( + valueOrNull = Unit.takeIf { visible }, + ) { + Icon( + imageVector = Icons.Outlined.ErrorOutline, + tint = MaterialTheme.colorScheme.error, + contentDescription = null, + ) + } + }, + route = AccountsRoute, + ), + SettingsSectionItem( + id = "seee", + title = null, // TextHolder.Value("Options"), + ), + SettingsItem( + id = "subscription", + title = TextHolder.Res(Res.strings.pref_item_subscription_title), + text = TextHolder.Res(Res.strings.pref_item_subscription_text), + leading = { + val getPurchased by rememberInstance() + val isPurchased by remember(getPurchased) { + getPurchased() + }.collectAsState(false) + + val targetTint = + if (isPurchased) MaterialTheme.colorScheme.primary else LocalContentColor.current + val tint by animateColorAsState(targetValue = targetTint) + Icon( + Icons.Outlined.KeyguardPremium, + null, + tint = tint, + ) + }, + content = { + onboardingItemsPremium.forEach { item -> + SmallOnboardingCard( + modifier = Modifier, + title = stringResource(item.title), + text = stringResource(item.text), + imageVector = item.icon, + ) + } + }, + route = SubscriptionsSettingsRoute, + ).takeIf { CurrentPlatform.hasSubscription() && !isStandalone }, +// SettingsItem( +// id = "onboarding", +// title = "Onboarding", +// text = "Learn more about the Keyguard", +// icon = Icons.Outlined.Info, +// route = OnboardingRoute, +// ), +// SettingsSectionItem( +// id = "seee22", +// title = null, // TextHolder.Value("Settings"), +// ), + SettingsItem( + id = "autofill", + title = TextHolder.Res(Res.strings.pref_item_autofill_title), + text = TextHolder.Res(Res.strings.pref_item_autofill_text), + icon = Icons.Outlined.AutoAwesome, + route = AutofillSettingsRoute, + ).takeIf { CurrentPlatform.hasAutofill() }, + SettingsItem( + id = "security", + title = TextHolder.Res(Res.strings.pref_item_security_title), + text = TextHolder.Res(Res.strings.pref_item_security_text), + icon = Icons.Outlined.Lock, + route = SecuritySettingsRoute, + ), + SettingsItem( + id = "watchtower", + title = TextHolder.Res(Res.strings.pref_item_watchtower_title), + text = TextHolder.Res(Res.strings.pref_item_watchtower_text), + icon = Icons.Outlined.Security, + route = WatchtowerSettingsRoute, + ).takeIf { !isRelease }, + SettingsItem( + id = "notifications", + title = TextHolder.Res(Res.strings.pref_item_notifications_title), + text = TextHolder.Res(Res.strings.pref_item_notifications_text), + icon = Icons.Outlined.Notifications, + route = NotificationsSettingsRoute, + ).takeIf { !isRelease }, + SettingsItem( + id = "display", + title = TextHolder.Res(Res.strings.pref_item_appearance_title), + text = TextHolder.Res(Res.strings.pref_item_appearance_text), + icon = Icons.Outlined.ColorLens, + route = UiSettingsRoute, + ), + SettingsItem( + id = "debug", + title = TextHolder.Res(Res.strings.pref_item_dev_title), + text = TextHolder.Res(Res.strings.pref_item_dev_text), + icon = Icons.Outlined.Code, + route = DebugSettingsRoute, + ).takeIf { !isRelease }, + SettingsItem( + id = "about", + title = TextHolder.Res(Res.strings.pref_item_other_title), + text = TextHolder.Res(Res.strings.pref_item_other_text), + icon = Icons.Outlined.Info, + route = OtherSettingsRoute, + ), +) + +@Composable +fun SettingListScreen() { + SettingListScreenContent( + items = items, + ) +} + +@OptIn( + ExperimentalMaterial3Api::class, + ExperimentalLayoutApi::class, + ExperimentalMaterialApi::class, +) +@Composable +private fun SettingListScreenContent( + items: List, +) { + val q = LocalNavigationController.current + val l = LocalNavigationRouter.current.value + val s = l + .indexOfLast { it.id == "settings" } + val t = if (s != -1) { + l.subList(fromIndex = s, toIndex = l.size) + } else { + emptyList() + } + + val pullRefreshState = rememberPullRefreshState( + refreshing = false, + onRefresh = { + val route = SearchSettingsRoute + val intent = NavigationIntent.NavigateToRoute(route) + q.queue(intent) + }, + ) + val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + ScaffoldLazyColumn( + modifier = Modifier + .pullRefresh(pullRefreshState) + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + LargeToolbar( + title = { + Text( + text = stringResource(Res.strings.settings_main_header_title), + ) + }, + navigationIcon = { + NavigationIcon() + }, + actions = { + IconButton( + onClick = { + val route = SearchSettingsRoute + val intent = NavigationIntent.NavigateToRoute(route) + q.queue(intent) + }, + ) { + IconBox(Icons.Outlined.Search) + } + }, + scrollBehavior = scrollBehavior, + ) + }, + pullRefreshState = pullRefreshState, + overlay = { + PullToSearch( + modifier = Modifier + .padding(contentPadding.value), + pullRefreshState = pullRefreshState, + ) + }, + ) { + items(items, key = { it.id }) { + when (it) { + is SettingsItem -> { + SettingListItem( + selected = it.route === t.getOrNull(1)?.route, + item = it, + onClick = { + val intent = NavigationIntent.Composite( + listOf( + NavigationIntent.PopById("settings"), + NavigationIntent.NavigateToRoute(it.route), + ), + ) + q.queue(intent) + }, + ) + } + + is SettingsSectionItem -> { + val text = it.title?.let { textResource(it) } + Section( + text = text, + ) + } + } + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/SettingPaneContent.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/SettingPaneContent.kt new file mode 100644 index 00000000..c8b11648 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/SettingPaneContent.kt @@ -0,0 +1,386 @@ +package com.artemchep.keyguard.feature.home.settings + +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.lazy.items +import androidx.compose.material.ExperimentalMaterialApi +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.runtime.staticCompositionLocalOf +import androidx.compose.ui.Modifier +import androidx.compose.ui.input.nestedscroll.nestedScroll +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.util.flow.foldAsList +import com.artemchep.keyguard.feature.EmptyView +import com.artemchep.keyguard.feature.home.settings.component.SettingComponent +import com.artemchep.keyguard.feature.home.settings.component.settingAboutAppBuildDateProvider +import com.artemchep.keyguard.feature.home.settings.component.settingAboutAppProvider +import com.artemchep.keyguard.feature.home.settings.component.settingAboutTeamProvider +import com.artemchep.keyguard.feature.home.settings.component.settingAboutTelegramProvider +import com.artemchep.keyguard.feature.home.settings.component.settingApkProvider +import com.artemchep.keyguard.feature.home.settings.component.settingAppIconsProvider +import com.artemchep.keyguard.feature.home.settings.component.settingAutofillCopyTotpProvider +import com.artemchep.keyguard.feature.home.settings.component.settingAutofillInlineSuggestionsProvider +import com.artemchep.keyguard.feature.home.settings.component.settingAutofillManualSelectionProvider +import com.artemchep.keyguard.feature.home.settings.component.settingAutofillProvider +import com.artemchep.keyguard.feature.home.settings.component.settingAutofillRespectAutofillOffProvider +import com.artemchep.keyguard.feature.home.settings.component.settingAutofillSaveRequestProvider +import com.artemchep.keyguard.feature.home.settings.component.settingAutofillSaveUriProvider +import com.artemchep.keyguard.feature.home.settings.component.settingBiometricsProvider +import com.artemchep.keyguard.feature.home.settings.component.settingCheckPwnedPasswordsProvider +import com.artemchep.keyguard.feature.home.settings.component.settingCheckPwnedServicesProvider +import com.artemchep.keyguard.feature.home.settings.component.settingCheckTwoFAProvider +import com.artemchep.keyguard.feature.home.settings.component.settingClearCache +import com.artemchep.keyguard.feature.home.settings.component.settingClipboardAutoClearProvider +import com.artemchep.keyguard.feature.home.settings.component.settingClipboardAutoRefreshProvider +import com.artemchep.keyguard.feature.home.settings.component.settingColorAccentProvider +import com.artemchep.keyguard.feature.home.settings.component.settingColorSchemeProvider +import com.artemchep.keyguard.feature.home.settings.component.settingConcealFieldsProvider +import com.artemchep.keyguard.feature.home.settings.component.settingCrashProvider +import com.artemchep.keyguard.feature.home.settings.component.settingCrashlyticsProvider +import com.artemchep.keyguard.feature.home.settings.component.settingCredentialProviderProvider +import com.artemchep.keyguard.feature.home.settings.component.settingDataSafetyProvider +import com.artemchep.keyguard.feature.home.settings.component.settingEmitMessageProvider +import com.artemchep.keyguard.feature.home.settings.component.settingExperimentalProvider +import com.artemchep.keyguard.feature.home.settings.component.settingFeaturesOverviewProvider +import com.artemchep.keyguard.feature.home.settings.component.settingFeedbackAppProvider +import com.artemchep.keyguard.feature.home.settings.component.settingFontProvider +import com.artemchep.keyguard.feature.home.settings.component.settingGitHubProvider +import com.artemchep.keyguard.feature.home.settings.component.settingKeepScreenOnProvider +import com.artemchep.keyguard.feature.home.settings.component.settingLaunchAppPicker +import com.artemchep.keyguard.feature.home.settings.component.settingLaunchYubiKey +import com.artemchep.keyguard.feature.home.settings.component.settingLocalizationProvider +import com.artemchep.keyguard.feature.home.settings.component.settingMarkdownProvider +import com.artemchep.keyguard.feature.home.settings.component.settingMasterPasswordProvider +import com.artemchep.keyguard.feature.home.settings.component.settingNavAnimationProvider +import com.artemchep.keyguard.feature.home.settings.component.settingNavLabelProvider +import com.artemchep.keyguard.feature.home.settings.component.settingOpenSourceLicensesProvider +import com.artemchep.keyguard.feature.home.settings.component.settingPermissionCameraProvider +import com.artemchep.keyguard.feature.home.settings.component.settingPermissionDetailsProvider +import com.artemchep.keyguard.feature.home.settings.component.settingPermissionOtherProvider +import com.artemchep.keyguard.feature.home.settings.component.settingPermissionPostNotificationsProvider +import com.artemchep.keyguard.feature.home.settings.component.settingPrivacyPolicyProvider +import com.artemchep.keyguard.feature.home.settings.component.settingRateAppProvider +import com.artemchep.keyguard.feature.home.settings.component.settingRequireMasterPasswordProvider +import com.artemchep.keyguard.feature.home.settings.component.settingRotateDeviceId +import com.artemchep.keyguard.feature.home.settings.component.settingScreenDelay +import com.artemchep.keyguard.feature.home.settings.component.settingScreenshotsProvider +import com.artemchep.keyguard.feature.home.settings.component.settingSectionProvider +import com.artemchep.keyguard.feature.home.settings.component.settingSelectLocaleProvider +import com.artemchep.keyguard.feature.home.settings.component.settingSubscriptionsDebug +import com.artemchep.keyguard.feature.home.settings.component.settingSubscriptionsPlayStoreProvider +import com.artemchep.keyguard.feature.home.settings.component.settingSubscriptionsProvider +import com.artemchep.keyguard.feature.home.settings.component.settingThemeUseAmoledDarkProvider +import com.artemchep.keyguard.feature.home.settings.component.settingTwoPanelLayoutLandscapeProvider +import com.artemchep.keyguard.feature.home.settings.component.settingTwoPanelLayoutPortraitProvider +import com.artemchep.keyguard.feature.home.settings.component.settingUseExternalBrowserProvider +import com.artemchep.keyguard.feature.home.settings.component.settingVaultLockAfterRebootProvider +import com.artemchep.keyguard.feature.home.settings.component.settingVaultLockAfterScreenOffProvider +import com.artemchep.keyguard.feature.home.settings.component.settingVaultLockAfterTimeoutProvider +import com.artemchep.keyguard.feature.home.settings.component.settingVaultLockProvider +import com.artemchep.keyguard.feature.home.settings.component.settingVaultPersistProvider +import com.artemchep.keyguard.feature.home.settings.component.settingWebsiteIconsProvider +import com.artemchep.keyguard.feature.home.settings.component.settingWriteAccessProvider +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.ui.ScaffoldLazyColumn +import com.artemchep.keyguard.ui.items.FlatItemSkeleton +import com.artemchep.keyguard.ui.toolbar.LargeToolbar +import kotlinx.collections.immutable.toImmutableList +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.compose.localDI +import org.kodein.di.direct + +object Setting { + const val DIVIDER = "divider" + + const val CREDENTIAL_PROVIDER = "credential_provider" + const val AUTOFILL = "autofill" + const val AUTOFILL_INLINE_SUGGESTIONS = "autofill_inline_suggestions" + const val AUTOFILL_MANUAL_SELECTION = "autofill_manual_selection" + const val AUTOFILL_RESPECT_AUTOFILL_OFF = "autofill_respect_autofill_off" + const val AUTOFILL_SAVE_REQUEST = "autofill_save_request" + const val AUTOFILL_SAVE_URI = "autofill_save_uri" + const val AUTOFILL_COPY_TOTP = "autofill_copy_totp" + const val NAV_ANIMATION = "nav_animation" + const val NAV_LABEL = "nav_label" + const val FONT = "font" + const val LOCALE = "locale" + const val COLOR_SCHEME = "color_scheme" + const val COLOR_SCHEME_AMOLED_DARK = "color_scheme_amoled_dark" + const val COLOR_ACCENT = "color_accent" + const val MASTER_PASSWORD = "master_password" + const val PERMISSION_DETAILS = "permission_details" // screen + const val PERMISSION_OTHER = "permission_other" + const val PERMISSION_CAMERA = "permission_camera" + const val PERMISSION_POST_NOTIFICATION = "permission_post_notification" + const val BIOMETRIC = "biometric" + const val VAULT_PERSIST = "vault_persist" + const val VAULT_LOCK = "vault_lock" + const val VAULT_LOCK_AFTER_REBOOT = "vault_lock_after_reboot" + const val VAULT_LOCK_AFTER_SCREEN_OFF = "vault_screen_lock" + const val VAULT_LOCK_AFTER_TIMEOUT = "vault_timeout" + const val ROTATE_DEVICE_ID = "rotate_device_id" + const val CLIPBOARD_AUTO_CLEAR = "clipboard_auto_clear" + const val CLIPBOARD_AUTO_REFRESH = "clipboard_auto_refresh" + const val CRASH = "test_crash_reports" + const val CRASHLYTICS = "automatic_crash_reports" + const val REQUIRE_MASTER_PASSWORD = "require_master_password" + const val EMIT_MESSAGE = "emit_message" + const val FEEDBACK_APP = "feedback_app" + const val REDDIT = "reddit" + const val CROWDIN = "crowdin" + const val GITHUB = "github" + const val PRIVACY_POLICY = "privacy_policy" + const val OPEN_SOURCE_LICENSES = "open_source_licenses" + const val ABOUT_APP = "about_app" + const val ABOUT_APP_BUILD_DATE = "about_app_build_date" + const val ABOUT_TEAM = "about_team" + const val EXPERIMENTAL = "experimental" + const val LAUNCH_APP_PICKER = "launch_app_picker" + const val LAUNCH_YUBIKEY = "launch_yubikey" + const val DATA_SAFETY = "data_safety" + const val FEATURES_OVERVIEW = "features_overview" + const val RATE_APP = "rate_app" + const val CONCEAL = "conceal" + const val MARKDOWN = "markdown" + const val WRITE_ACCESS = "write_access" + const val SCREENSHOTS = "screenshots" + const val TWO_PANEL_LAYOUT_LANDSCAPE = "two_panel_layout_landscape" + const val TWO_PANEL_LAYOUT_PORTRAIT = "two_panel_layout_portrait" + const val USE_EXTERNAL_BROWSER = "use_external_browser" + const val APP_ICONS = "app_icons" + const val WEBSITE_ICONS = "website_icons" + const val CHECK_PWNED_PASSWORDS = "check_pwned_passwords" + const val CHECK_PWNED_SERVICES = "check_pwned_services" + const val CHECK_TWO_FA = "check_two_fa" + const val CLEAR_CACHE = "clear_cache" + const val APK = "apk" + const val SUBSCRIPTIONS = "subscriptions" + const val SUBSCRIPTIONS_IN_STORE = "subscriptions_in_store" + const val SUBSCRIPTIONS_DEBUG = "subscriptions_debug" + const val SCREEN_DELAY = "screen_delay" + const val KEEP_SCREEN_ON = "keep_screen_on" +} + +val LocalSettingItemArgs = staticCompositionLocalOf { + null +} + +val hub = mapOf SettingComponent>( + Setting.CREDENTIAL_PROVIDER to ::settingCredentialProviderProvider, + Setting.AUTOFILL to ::settingAutofillProvider, + Setting.AUTOFILL_INLINE_SUGGESTIONS to ::settingAutofillInlineSuggestionsProvider, + Setting.AUTOFILL_MANUAL_SELECTION to ::settingAutofillManualSelectionProvider, + Setting.AUTOFILL_RESPECT_AUTOFILL_OFF to ::settingAutofillRespectAutofillOffProvider, + Setting.AUTOFILL_SAVE_REQUEST to ::settingAutofillSaveRequestProvider, + Setting.AUTOFILL_SAVE_URI to ::settingAutofillSaveUriProvider, + Setting.AUTOFILL_COPY_TOTP to ::settingAutofillCopyTotpProvider, + Setting.NAV_ANIMATION to ::settingNavAnimationProvider, + Setting.NAV_LABEL to ::settingNavLabelProvider, + Setting.FONT to ::settingFontProvider, + Setting.LOCALE to ::settingSelectLocaleProvider, + Setting.COLOR_SCHEME to ::settingColorSchemeProvider, + Setting.COLOR_SCHEME_AMOLED_DARK to ::settingThemeUseAmoledDarkProvider, + Setting.COLOR_ACCENT to ::settingColorAccentProvider, + Setting.MASTER_PASSWORD to ::settingMasterPasswordProvider, + Setting.PERMISSION_DETAILS to ::settingPermissionDetailsProvider, + Setting.PERMISSION_OTHER to ::settingPermissionOtherProvider, + Setting.PERMISSION_CAMERA to ::settingPermissionCameraProvider, + Setting.PERMISSION_POST_NOTIFICATION to ::settingPermissionPostNotificationsProvider, + Setting.BIOMETRIC to ::settingBiometricsProvider, + Setting.VAULT_PERSIST to ::settingVaultPersistProvider, + Setting.VAULT_LOCK to ::settingVaultLockProvider, + Setting.VAULT_LOCK_AFTER_REBOOT to ::settingVaultLockAfterRebootProvider, + Setting.VAULT_LOCK_AFTER_SCREEN_OFF to ::settingVaultLockAfterScreenOffProvider, + Setting.VAULT_LOCK_AFTER_TIMEOUT to ::settingVaultLockAfterTimeoutProvider, + Setting.ROTATE_DEVICE_ID to ::settingRotateDeviceId, + Setting.CLIPBOARD_AUTO_CLEAR to ::settingClipboardAutoClearProvider, + Setting.CLIPBOARD_AUTO_REFRESH to ::settingClipboardAutoRefreshProvider, + Setting.CRASH to ::settingCrashProvider, + Setting.CRASHLYTICS to ::settingCrashlyticsProvider, + Setting.REQUIRE_MASTER_PASSWORD to ::settingRequireMasterPasswordProvider, + Setting.EMIT_MESSAGE to ::settingEmitMessageProvider, + Setting.FEEDBACK_APP to ::settingFeedbackAppProvider, + Setting.ABOUT_APP to ::settingAboutAppProvider, + Setting.ABOUT_APP_BUILD_DATE to ::settingAboutAppBuildDateProvider, + Setting.ABOUT_TEAM to ::settingAboutTeamProvider, + Setting.REDDIT to ::settingAboutTelegramProvider, + Setting.CROWDIN to ::settingLocalizationProvider, + Setting.GITHUB to ::settingGitHubProvider, + Setting.PRIVACY_POLICY to ::settingPrivacyPolicyProvider, + Setting.OPEN_SOURCE_LICENSES to ::settingOpenSourceLicensesProvider, + Setting.EXPERIMENTAL to ::settingExperimentalProvider, + Setting.LAUNCH_YUBIKEY to ::settingLaunchYubiKey, + Setting.LAUNCH_APP_PICKER to ::settingLaunchAppPicker, + Setting.DATA_SAFETY to ::settingDataSafetyProvider, + Setting.FEATURES_OVERVIEW to ::settingFeaturesOverviewProvider, + Setting.RATE_APP to ::settingRateAppProvider, + Setting.DIVIDER to ::settingSectionProvider, + Setting.CONCEAL to ::settingConcealFieldsProvider, + Setting.MARKDOWN to ::settingMarkdownProvider, + Setting.WRITE_ACCESS to ::settingWriteAccessProvider, + Setting.SCREENSHOTS to ::settingScreenshotsProvider, + Setting.TWO_PANEL_LAYOUT_LANDSCAPE to ::settingTwoPanelLayoutLandscapeProvider, + Setting.TWO_PANEL_LAYOUT_PORTRAIT to ::settingTwoPanelLayoutPortraitProvider, + Setting.USE_EXTERNAL_BROWSER to ::settingUseExternalBrowserProvider, + Setting.APP_ICONS to ::settingAppIconsProvider, + Setting.WEBSITE_ICONS to ::settingWebsiteIconsProvider, + Setting.CHECK_PWNED_PASSWORDS to ::settingCheckPwnedPasswordsProvider, + Setting.CHECK_PWNED_SERVICES to ::settingCheckPwnedServicesProvider, + Setting.CHECK_TWO_FA to ::settingCheckTwoFAProvider, + Setting.CLEAR_CACHE to ::settingClearCache, + Setting.APK to ::settingApkProvider, + Setting.SUBSCRIPTIONS to ::settingSubscriptionsProvider, + Setting.SUBSCRIPTIONS_IN_STORE to ::settingSubscriptionsPlayStoreProvider, + Setting.SUBSCRIPTIONS_DEBUG to ::settingSubscriptionsDebug, + Setting.SCREEN_DELAY to ::settingScreenDelay, + Setting.KEEP_SCREEN_ON to ::settingKeepScreenOnProvider, +) + +@Composable +fun SettingPaneContent( + title: String, + items: List, +) { + val di = localDI() + val state by remember(items, di, hub) { + fun create( + item: SettingPaneItem.Item, + group: String = "", + args: Any? = null, + ) = hub[item.key] + ?.invoke(di.direct) + ?.map { content -> + val compositeKey = group + ":" + item.key + ":" + item.suffix + SettingPaneState.Component( + compositeKey = compositeKey, + itemKey = item.key, + groupKey = group, + args = args, + content = content?.content, + ) + } + + val componentDivider = "divider" + val componentFlows = mutableListOf>() + items.forEach { item -> + when (item) { + is SettingPaneItem.Group -> { + val shouldAddDivider = + // Do not add a divider on top of the + // blank list. + componentFlows.isNotEmpty() || !item.title.isNullOrBlank() + if (shouldAddDivider) { + val divider = create( + item = SettingPaneItem.Item(componentDivider), + group = item.key, + args = item.toSectionArgs(), + ) + if (divider != null) componentFlows.add(divider) + } + item.list.forEach { childItem -> + val e = create(childItem, group = item.key) + if (e != null) componentFlows.add(e) + } + } + + is SettingPaneItem.Item -> { + val e = create(item) + if (e != null) componentFlows.add(e) + } + } + } + componentFlows + .foldAsList() + .map { components -> + val result = mutableListOf() + val filteredComponents = components + .filter { it.content != null } + filteredComponents + .forEachIndexed { index, component -> + val isDivider = component.itemKey == componentDivider + if (isDivider) { + val hasItemsFromTheSameGroup = + component.groupKey == filteredComponents.getOrNull(index + 1)?.groupKey + if (result.isNotEmpty() && hasItemsFromTheSameGroup) { + result.add(component) + } + } else { + result.add(component) + } + } + SettingPaneState( + list = Loadable.Ok(result.toImmutableList()), + ) + } + }.collectAsState(initial = SettingPaneState()) + + SettingPaneContent2( + title = title, + state = state, + ) +} + +@OptIn( + ExperimentalMaterial3Api::class, + ExperimentalLayoutApi::class, + ExperimentalMaterialApi::class, +) +@Composable +fun SettingPaneContent2( + title: String, + state: SettingPaneState, +) { + val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + ScaffoldLazyColumn( + modifier = Modifier + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + LargeToolbar( + title = { + Text(title) + }, + navigationIcon = { + NavigationIcon() + }, + scrollBehavior = scrollBehavior, + ) + }, + ) { + when (val contentState = state.list) { + is Loadable.Loading -> { + item("skeleton") { + FlatItemSkeleton() + } + } + + is Loadable.Ok -> { + val list = contentState.value + if (list.isEmpty()) { + item("empty") { + EmptyView() + } + } + + items( + items = list, + key = { model -> model.compositeKey }, + ) { model -> + CompositionLocalProvider( + LocalSettingItemArgs provides model.args, + ) { + model.content?.invoke() + } + } + } + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/SettingPaneItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/SettingPaneItem.kt new file mode 100644 index 00000000..a875cbf1 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/SettingPaneItem.kt @@ -0,0 +1,22 @@ +package com.artemchep.keyguard.feature.home.settings + +import com.artemchep.keyguard.feature.home.settings.component.SettingSectionArgs + +sealed interface SettingPaneItem { + val key: String + + data class Group( + override val key: String, + val title: String? = null, + val list: List, + ) : SettingPaneItem { + fun toSectionArgs() = SettingSectionArgs( + title = title, + ) + } + + data class Item( + override val key: String, + val suffix: String = "", + ) : SettingPaneItem +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/SettingPaneState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/SettingPaneState.kt new file mode 100644 index 00000000..464e4f22 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/SettingPaneState.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.feature.home.settings + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.Immutable +import com.artemchep.keyguard.common.model.Loadable +import kotlinx.collections.immutable.ImmutableList + +@Immutable +data class SettingPaneState( + val list: Loadable> = Loadable.Loading, +) { + @Immutable + data class Component( + val compositeKey: String, + val itemKey: String, + val groupKey: String, + val args: Any?, + val content: (@Composable () -> Unit)?, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/SettingsRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/SettingsRoute.kt new file mode 100644 index 00000000..849e175d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/SettingsRoute.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.home.settings + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.Route + +object SettingsRoute : Route { + @Composable + override fun Content() { + SettingsScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/SettingsScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/SettingsScreen.kt new file mode 100644 index 00000000..f433807b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/SettingsScreen.kt @@ -0,0 +1,27 @@ +package com.artemchep.keyguard.feature.home.settings + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import com.artemchep.keyguard.feature.navigation.LocalNavigationNodeVisualStack +import com.artemchep.keyguard.feature.navigation.NavigationRouter +import com.artemchep.keyguard.feature.twopane.TwoPaneNavigationContent + +@Composable +fun SettingsScreen() { + // Vault screen actually does not add any depth to the + // navigation stack, it just renders sub-windows. + val visualStack = LocalNavigationNodeVisualStack.current + .run { + removeAt(lastIndex) + } + CompositionLocalProvider( + LocalNavigationNodeVisualStack provides visualStack, + ) { + NavigationRouter( + id = "settings", + initial = SettingListRoute, + ) { backStack -> + TwoPaneNavigationContent(backStack) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/AccountListRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/AccountListRoute.kt new file mode 100644 index 00000000..51b40507 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/AccountListRoute.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.home.settings.accounts + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.Route + +object AccountListRoute : Route { + @Composable + override fun Content() { + AccountListScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/AccountListScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/AccountListScreen.kt new file mode 100644 index 00000000..d3922dff --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/AccountListScreen.kt @@ -0,0 +1,172 @@ +package com.artemchep.keyguard.feature.home.settings.accounts + +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.lazy.items +import androidx.compose.material.ExperimentalMaterialApi +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Add +import androidx.compose.material.icons.outlined.NoAccounts +import androidx.compose.material.icons.outlined.SelectAll +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Modifier +import androidx.compose.ui.input.nestedscroll.nestedScroll +import com.artemchep.keyguard.feature.EmptyView +import com.artemchep.keyguard.feature.auth.login.LoginRoute +import com.artemchep.keyguard.feature.home.settings.accounts.component.AccountListItem +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.registerRouteResultReceiver +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.DefaultFab +import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +import com.artemchep.keyguard.ui.FabState +import com.artemchep.keyguard.ui.OptionsButton +import com.artemchep.keyguard.ui.ScaffoldLazyColumn +import com.artemchep.keyguard.ui.icons.SyncIcon +import com.artemchep.keyguard.ui.items.FlatItemSkeleton +import com.artemchep.keyguard.ui.selection.SelectionBar +import com.artemchep.keyguard.ui.toolbar.LargeToolbar +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun AccountListScreen() { + val controller by rememberUpdatedState(LocalNavigationController.current) + val r = registerRouteResultReceiver(LoginRoute()) { + controller.queue(NavigationIntent.Pop) + } + + val accountListStateWrapper = accountListScreenState() + val accountListState = remember(accountListStateWrapper) { + accountListStateWrapper.unwrap( + onAddAccount = { + controller.queue(NavigationIntent.NavigateToRoute(r)) + }, + ) + } + AccountListScreenContent( + state = accountListState, + ) +} + +@OptIn( + ExperimentalMaterial3Api::class, + ExperimentalMaterialApi::class, +) +@Composable +fun AccountListScreenContent( + state: AccountListState, +) { + val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + ScaffoldLazyColumn( + modifier = Modifier + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + LargeToolbar( + title = { + Text(stringResource(Res.strings.account_main_header_title)) + }, + navigationIcon = { + NavigationIcon() + }, + scrollBehavior = scrollBehavior, + ) + }, + floatingActionState = run { + val fabOnClick = state.onAddNewAccount + val fabState = if (fabOnClick != null) { + FabState( + onClick = fabOnClick, + model = null, + ) + } else { + null + } + rememberUpdatedState(newValue = fabState) + }, + floatingActionButton = { + DefaultFab( + icon = { + Icon(Icons.Outlined.Add, null) + }, + text = { + Text(stringResource(Res.strings.account_main_add_account_title)) + }, + ) + }, + bottomBar = { + ExpandedIfNotEmpty( + valueOrNull = state.selection, + ) { selection -> + SelectionBar( + title = { + val text = stringResource(Res.strings.selection_n_selected, selection.count) + Text(text) + }, + trailing = { + val updatedOnSelectAll by rememberUpdatedState(selection.onSelectAll) + IconButton( + enabled = updatedOnSelectAll != null, + onClick = { + updatedOnSelectAll?.invoke() + }, + ) { + Icon( + imageVector = Icons.Outlined.SelectAll, + contentDescription = null, + ) + } + IconButton( + enabled = selection.onSync != null, + onClick = { + selection.onSync?.invoke() + }, + ) { + SyncIcon(rotating = false) + } + OptionsButton( + actions = selection.actions, + ) + }, + onClear = selection.onClear, + ) + } + }, + ) { + if (state.items.isEmpty()) { + item("header") { + if (state.isLoading) { + FlatItemSkeleton() + } else { + EmptyView( + icon = { + Icon(Icons.Outlined.NoAccounts, null) + }, + text = { + Text( + text = stringResource(Res.strings.accounts_empty_label), + ) + }, + ) + } + } + } + items( + items = state.items, + key = { model -> model.id }, + ) { model -> + AccountListItem( + item = model, + ) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/AccountListState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/AccountListState.kt new file mode 100644 index 00000000..e11201c9 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/AccountListState.kt @@ -0,0 +1,30 @@ +package com.artemchep.keyguard.feature.home.settings.accounts + +import androidx.compose.runtime.Immutable +import arrow.optics.optics +import com.artemchep.keyguard.feature.home.settings.accounts.model.AccountItem +import com.artemchep.keyguard.ui.ContextItem + +@Immutable +@optics +data class AccountListState( + val selection: Selection? = null, + /** + * Current revision of the items; each revision you should scroll to + * the top of the list. + */ + val itemsRevision: Int = 0, + val items: List = emptyList(), + val isLoading: Boolean = true, + val onAddNewAccount: (() -> Unit)? = null, +) { + companion object; + + data class Selection( + val count: Int, + val actions: List, + val onSelectAll: (() -> Unit)? = null, + val onSync: (() -> Unit)? = null, + val onClear: (() -> Unit)? = null, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/AccountListStateWrapper.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/AccountListStateWrapper.kt new file mode 100644 index 00000000..6ccca1f8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/AccountListStateWrapper.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.feature.home.settings.accounts + +fun interface AccountListStateWrapper { + fun unwrap( + onAddAccount: () -> Unit, + ): AccountListState +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/AccountListViewModel.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/AccountListViewModel.kt new file mode 100644 index 00000000..f87b2837 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/AccountListViewModel.kt @@ -0,0 +1,328 @@ +package com.artemchep.keyguard.feature.home.settings.accounts + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Logout +import androidx.compose.runtime.Composable +import androidx.compose.ui.text.AnnotatedString +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.model.AccountTask +import com.artemchep.keyguard.common.model.DAccount +import com.artemchep.keyguard.common.model.DProfile +import com.artemchep.keyguard.common.model.firstOrNull +import com.artemchep.keyguard.common.usecase.GetAccountHasError +import com.artemchep.keyguard.common.usecase.GetAccounts +import com.artemchep.keyguard.common.usecase.GetCanAddAccount +import com.artemchep.keyguard.common.usecase.GetProfiles +import com.artemchep.keyguard.common.usecase.QueueSyncById +import com.artemchep.keyguard.common.usecase.RemoveAccountById +import com.artemchep.keyguard.common.usecase.SupervisorRead +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.common.util.flow.foldAsList +import com.artemchep.keyguard.feature.auth.AccountViewRoute +import com.artemchep.keyguard.feature.confirmation.createConfirmationDialogIntent +import com.artemchep.keyguard.feature.home.settings.accounts.model.AccountItem +import com.artemchep.keyguard.feature.home.vault.VaultRoute +import com.artemchep.keyguard.feature.home.vault.model.VaultItemIcon +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.SyncSupervisorImpl +import com.artemchep.keyguard.ui.buildContextItems +import com.artemchep.keyguard.ui.icons.KeyguardCipher +import com.artemchep.keyguard.ui.icons.generateAccentColorsByAccountId +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.selection.selectionHandle +import kotlinx.collections.immutable.toImmutableList +import kotlinx.coroutines.DelicateCoroutinesApi +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.shareIn +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +@Composable +fun accountListScreenState(): AccountListStateWrapper = with(localDI().direct) { + accountListScreenState( + queueSyncById = instance(), + syncSupervisor = instance(), + removeAccountById = instance(), + getAccounts = instance(), + getProfiles = instance(), + getAccountHasError = instance(), + getCanAddAccount = instance(), + windowCoroutineScope = instance(), + ) +} + +@Composable +fun accountListScreenState( + queueSyncById: QueueSyncById, + syncSupervisor: SupervisorRead, + removeAccountById: RemoveAccountById, + getAccounts: GetAccounts, + getProfiles: GetProfiles, + getAccountHasError: GetAccountHasError, + getCanAddAccount: GetCanAddAccount, + windowCoroutineScope: WindowCoroutineScope, +): AccountListStateWrapper = produceScreenState( + key = "account_list", + initial = AccountListStateWrapper { + AccountListState() + }, + args = arrayOf( + queueSyncById, + syncSupervisor, + removeAccountById, + getAccounts, + getCanAddAccount, + ), +) { + val selectionHandle = selectionHandle("selection") + val selectedAccountsFlow = getAccounts() + .combine(selectionHandle.idsFlow) { accounts, selectedAccountIds -> + selectedAccountIds + .mapNotNull { selectedAccountId -> + val account = accounts + .firstOrNull { it.id.id == selectedAccountId } + ?: return@mapNotNull null + selectedAccountId to account + } + .toMap() + } + .distinctUntilChanged() + .shareIn(screenScope, SharingStarted.Lazily, replay = 1) + + val selectionModeFlow = selectionHandle + .idsFlow + .map { accountIds -> accountIds.isNotEmpty() } + .distinctUntilChanged() + + val accountIdsSyncFlow = syncSupervisor + .get(AccountTask.SYNC) + .map { accounts -> + accounts.map { it.id }.toSet() + } + + /** + * Returns a binary flow that determines whether the + * account is being sync-ed at this moment or not. + */ + fun getIsAccountSyncingFlow( + accountId: AccountId, + ) = accountIdsSyncFlow.map { accountId.id in it } + + val accountIdsRemoveSupervisor = SyncSupervisorImpl() + + /** + * Returns a binary flow that determines whether the + * account is being removed at this moment or not. + */ + fun getIsAccountRemovingFlow( + accountId: AccountId, + ) = accountIdsRemoveSupervisor.output.map { accountId.id in it } + + fun doSyncAccountById(accountId: AccountId) { + queueSyncById(accountId).launchIn(windowCoroutineScope) + } + + fun onDelete( + accountIds: Set, + ) { + val intent = createConfirmationDialogIntent( + icon = icon(Icons.Outlined.Logout), + title = translate(Res.strings.account_log_out_confirmation_title), + message = translate(Res.strings.account_log_out_confirmation_text), + ) { + removeAccountById(accountIds) + .launchIn(windowCoroutineScope) + } + navigate(intent) + } + + fun onSync( + accountIds: Set, + ) { + accountIds.forEach { accountId -> + doSyncAccountById(accountId) + } + } + + val selectionFlow = combine( + getAccounts() + .map { accounts -> + accounts + .map { it.id } + .toSet() + } + .distinctUntilChanged(), + selectedAccountsFlow, + ) { accountIds, selectedAccounts -> + if (selectedAccounts.isEmpty()) { + return@combine null + } + + val selectedAccountIds = selectedAccounts.keys + val f = selectedAccountIds + .map { AccountId(it) } + .toSet() + val actions = buildContextItems { + section { + // An option to view all the items that belong + // to these folders. + this += FlatItemAction( + leading = icon(Icons.Outlined.KeyguardCipher), + title = translate(Res.strings.items), + onClick = { + val accounts = selectedAccounts.values + val route = VaultRoute.by(accounts = accounts) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + } + section { + this += FlatItemAction( + icon = Icons.Outlined.Logout, + title = translate(Res.strings.account_action_log_out_title), + onClick = ::onDelete + .partially1(f), + ) + } + } + AccountListState.Selection( + count = selectedAccounts.size, + actions = actions.toImmutableList(), + onSelectAll = selectionHandle::setSelection + .partially1(accountIds.map { it.id }.toSet()) + .takeIf { + accountIds.size > f.size + }, + onSync = ::onSync + .partially1(accountIds), + onClear = selectionHandle::clearSelection, + ) + } + + fun flowOfItems( + accounts: List, + profiles: List, + ) = accounts + .map { + val profile = profiles.firstOrNull(it.id) + + val errorFlow = getAccountHasError(it.id) + val syncingFlow = getIsAccountSyncingFlow(it.id) + val removingFlow = getIsAccountRemovingFlow(it.id) + combine( + errorFlow, + syncingFlow, + removingFlow, + selectionHandle + .idsFlow + .map { accountIds -> + it.id.id in accountIds + }, + selectionModeFlow, + ) { error, syncing, removing, selected, selectionMode -> + val busy = syncing || removing + val accent = profile?.accentColor + ?: generateAccentColorsByAccountId(it.id.id) + val icon = VaultItemIcon.TextIcon( + run { + val words = profile?.name?.split(" ").orEmpty() + if (words.size <= 1) { + return@run words.firstOrNull()?.take(2).orEmpty() + } + + words + .take(2) + .joinToString("") { it.take(1) } + }.uppercase(), + ) + AccountItem.Item( + id = it.id.id, + icon = icon, + name = profile?.name.orEmpty(), + title = AnnotatedString(it.username), + text = it.host, + error = error, + syncing = syncing, + selecting = selectionMode, + actions = listOf(), + actionNeeded = false, + accentLight = accent.light, + accentDark = accent.dark, + isOpened = false, + isSelected = selected, + onClick = { + if (selectionMode) { + selectionHandle.toggleSelection(it.id.id) + } else { + val route = AccountViewRoute(it.id) + val intent = NavigationIntent.Composite( + listOf( + NavigationIntent.PopById("accounts"), + NavigationIntent.NavigateToRoute(route), + ), + ) + navigate(intent) + } + }, + onLongClick = if (selectionMode) { + null + } else { + // lambda + selectionHandle::toggleSelection.partially1(it.id.id) + }, + ) + } + } + .foldAsList() + .map { items -> + items + .sortedBy { it.text } + } + + combine( + combine( + getAccounts(), + getProfiles(), + ) { accounts, profiles -> + flowOfItems( + accounts = accounts, + profiles = profiles, + ) + } + .flatMapLatest { it } + .map { + val list = mutableListOf() + if (it.isNotEmpty()) { + list += AccountItem.Section( + id = "bitwarden", + text = "Bitwarden", + ) + list += it + } + list + }, + selectionFlow, + getCanAddAccount(), + ) { items, selection, canAddAccount -> + AccountListStateWrapper { onAddAccount -> + AccountListState( + selection = selection, + items = items, + isLoading = false, + onAddNewAccount = onAddAccount + .takeIf { canAddAccount && selection == null }, + ) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/AccountsRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/AccountsRoute.kt new file mode 100644 index 00000000..281b56a2 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/AccountsRoute.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.home.settings.accounts + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.Route + +object AccountsRoute : Route { + @Composable + override fun Content() { + AccountsScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/AccountsScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/AccountsScreen.kt new file mode 100644 index 00000000..3536dd67 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/AccountsScreen.kt @@ -0,0 +1,26 @@ +package com.artemchep.keyguard.feature.home.settings.accounts + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.LocalNavigationNodeVisualStack +import com.artemchep.keyguard.feature.navigation.NavigationRouter +import com.artemchep.keyguard.feature.twopane.TwoPaneNavigationContent + +@Composable +fun AccountsScreen() { + // The screen actually does not add any depth to the + // navigation stack, it just renders sub-windows. + val visualStack = LocalNavigationNodeVisualStack.current +// .run { +// removeAt(lastIndex) +// } +// CompositionLocalProvider( +// LocalNavigationNodeVisualStack provides visualStack, +// ) { + NavigationRouter( + id = "accounts", + initial = AccountListRoute, + ) { backStack -> + TwoPaneNavigationContent(backStack) + } +// } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/component/AccountListItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/component/AccountListItem.kt new file mode 100644 index 00000000..3bf2940e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/component/AccountListItem.kt @@ -0,0 +1,200 @@ +package com.artemchep.keyguard.feature.home.settings.accounts.component + +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.ExperimentalAnimationApi +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.animation.scaleIn +import androidx.compose.animation.scaleOut +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.ErrorOutline +import androidx.compose.material.icons.outlined.Warning +import androidx.compose.material3.Checkbox +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.feature.home.settings.accounts.model.AccountItem +import com.artemchep.keyguard.feature.home.vault.component.Section +import com.artemchep.keyguard.feature.home.vault.component.rememberSecretAccentColor +import com.artemchep.keyguard.ui.AvatarBuilder +import com.artemchep.keyguard.ui.ExpandedIfNotEmptyForRow +import com.artemchep.keyguard.ui.FlatItemLayout +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.SyncIcon +import com.artemchep.keyguard.ui.theme.selectedContainer + +@Composable +fun AccountListItem( + item: AccountItem, +) = when (item) { + is AccountItem.Section -> AccountListItemSection(item) + is AccountItem.Item -> AccountListItemText(item) +} + +@Composable +fun AccountListItemSection( + item: AccountItem.Section, +) { + Section( + text = item.text.orEmpty(), + ) +} + +@Composable +fun AccountListItemText( + item: AccountItem.Item, +) { + @Composable + fun TextContent(text: String) = + Text( + text = text, + maxLines = 1, + ) + + val backgroundColor = when { + item.isSelected -> MaterialTheme.colorScheme.primaryContainer + item.isOpened -> MaterialTheme.colorScheme.selectedContainer + else -> Color.Unspecified + } + FlatItemLayout( + backgroundColor = backgroundColor, + leading = { + val accent = rememberSecretAccentColor( + accentLight = item.accentLight, + accentDark = item.accentDark, + ) + AvatarBuilder( + icon = item.icon, + accent = accent, + active = true, + badge = { + // Do nothing. + }, + ) + }, + actions = item.actions, + content = { + FlatItemTextContent( + title = { + Text( + text = item.title, + overflow = TextOverflow.Ellipsis, + maxLines = 1, + ) + }, + text = item.text + ?.takeIf { it.isNotEmpty() } + ?.let { + // composable + { + TextContent(text = it) + } + }, + ) + }, + trailing = { + if (item.error) { + Spacer(modifier = Modifier.width(8.dp)) + Icon( + imageVector = Icons.Outlined.ErrorOutline, + tint = MaterialTheme.colorScheme.error, + contentDescription = null, + ) + } + + AnimatedVisibility( + visible = item.syncing, + enter = fadeIn() + scaleIn(), + exit = scaleOut() + fadeOut(), + ) { + SyncIcon( + rotating = true, + ) + } + + Spacer(modifier = Modifier.width(8.dp)) + + ExpandedIfNotEmptyForRow( + item.isSelected.takeIf { item.selecting }, + ) { selected -> + Checkbox( + checked = selected, + onCheckedChange = null, + ) + } + + ExpandedIfNotEmptyForRow( + Unit.takeIf { !item.selecting }, + ) { + ChevronIcon() + } + }, + onClick = item.onClick, + onLongClick = item.onLongClick, + ) +} + +@Composable +fun VaultListItemTextIcon( + item: AccountItem.Item, +) = Box( + modifier = Modifier + .size(24.dp), +) { + Box( + modifier = Modifier + .fillMaxSize(), + ) { + Box( + modifier = Modifier + .padding(2.dp), + contentAlignment = Alignment.Center, + ) { + val color = rememberSecretAccentColor( + accentLight = item.accentLight, + accentDark = item.accentDark, + ) + Box( + modifier = Modifier + .fillMaxSize() + .background(color, CircleShape), + ) + } + } + Row( + modifier = Modifier + .align(Alignment.BottomEnd) + .background( + MaterialTheme.colorScheme.tertiaryContainer, + MaterialTheme.shapes.extraSmall, + ), + ) { + if (item.actionNeeded) { + Icon( + modifier = Modifier + .size(15.dp) + .padding(1.dp), + imageVector = Icons.Outlined.Warning, + tint = MaterialTheme.colorScheme.onTertiaryContainer, + contentDescription = null, + ) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/model/AccountItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/model/AccountItem.kt new file mode 100644 index 00000000..fbdeb8f0 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/accounts/model/AccountItem.kt @@ -0,0 +1,53 @@ +package com.artemchep.keyguard.feature.home.settings.accounts.model + +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.AnnotatedString +import arrow.optics.optics +import com.artemchep.keyguard.feature.home.vault.model.VaultItemIcon +import com.artemchep.keyguard.ui.FlatItemAction +import java.util.UUID + +@optics +sealed interface AccountItem { + companion object + + val id: String + + @optics + data class Section( + override val id: String = UUID.randomUUID().toString(), + val text: String? = null, + ) : AccountItem { + companion object + } + + @optics + data class Item( + override val id: String, + val fav: String? = null, // "https://icons.bitwarden.net/vault.bitwarden.com/icon.png", + /** + * The name of the item. + */ + val name: String, + val title: AnnotatedString, + val text: String?, + val error: Boolean = false, + val syncing: Boolean = false, + val selecting: Boolean = false, + val actionNeeded: Boolean, + val icon: VaultItemIcon, + val accentLight: Color, + val accentDark: Color, + val isOpened: Boolean, + val isSelected: Boolean, + /** + * List of the callable actions appended + * to the item. + */ + val actions: List = emptyList(), + val onClick: () -> Unit, + val onLongClick: (() -> Unit)?, + ) : AccountItem { + companion object + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/autofill/AutofillSettingsRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/autofill/AutofillSettingsRoute.kt new file mode 100644 index 00000000..373a530f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/autofill/AutofillSettingsRoute.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.home.settings.autofill + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.Route + +object AutofillSettingsRoute : Route { + @Composable + override fun Content() { + AutofillSettingsScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/autofill/AutofillSettingsScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/autofill/AutofillSettingsScreen.kt new file mode 100644 index 00000000..853601ea --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/autofill/AutofillSettingsScreen.kt @@ -0,0 +1,50 @@ +package com.artemchep.keyguard.feature.home.settings.autofill + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.home.settings.Setting +import com.artemchep.keyguard.feature.home.settings.SettingPaneContent +import com.artemchep.keyguard.feature.home.settings.SettingPaneItem +import com.artemchep.keyguard.res.Res +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun AutofillSettingsScreen() { + SettingPaneContent( + title = stringResource(Res.strings.settings_autofill_header_title), + items = listOf( + SettingPaneItem.Group( + key = "credential", + list = listOf( + SettingPaneItem.Item(Setting.CREDENTIAL_PROVIDER), + ), + ), + SettingPaneItem.Group( + key = "autofill", + list = listOf( + SettingPaneItem.Item(Setting.AUTOFILL), + ), + ), + SettingPaneItem.Group( + key = "general", + list = listOf( + SettingPaneItem.Item(Setting.AUTOFILL_INLINE_SUGGESTIONS), + SettingPaneItem.Item(Setting.AUTOFILL_MANUAL_SELECTION), + SettingPaneItem.Item(Setting.AUTOFILL_RESPECT_AUTOFILL_OFF), + ), + ), + SettingPaneItem.Group( + key = "totp", + list = listOf( + SettingPaneItem.Item(Setting.AUTOFILL_COPY_TOTP), + ), + ), + SettingPaneItem.Group( + key = "save", + list = listOf( + SettingPaneItem.Item(Setting.AUTOFILL_SAVE_REQUEST), + SettingPaneItem.Item(Setting.AUTOFILL_SAVE_URI), + ), + ), + ), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAboutApp.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAboutApp.kt new file mode 100644 index 00000000..4118dec9 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAboutApp.kt @@ -0,0 +1,45 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.usecase.GetAppVersion +import com.artemchep.keyguard.res.Res +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingAboutAppProvider( + directDI: DirectDI, +) = settingAboutAppProvider( + getAppVersion = directDI.instance(), +) + +fun settingAboutAppProvider( + getAppVersion: GetAppVersion, +): SettingComponent = getAppVersion() + .map { appVersion -> + // composable + SettingIi( + search = SettingIi.Search( + group = "about", + tokens = listOf( + "about", + "app", + ), + ), + ) { + SettingAboutApp( + appVersion = appVersion, + ) + } + } + +@Composable +private fun SettingAboutApp( + appVersion: String, +) { + SettingListItem( + title = stringResource(Res.strings.pref_item_app_version_title), + text = appVersion, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAboutAppBuildDate.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAboutAppBuildDate.kt new file mode 100644 index 00000000..4b719077 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAboutAppBuildDate.kt @@ -0,0 +1,47 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.usecase.GetAppBuildDate +import com.artemchep.keyguard.res.Res +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingAboutAppBuildDateProvider( + directDI: DirectDI, +) = settingAboutAppBuildDateProvider( + getAppBuildDate = directDI.instance(), +) + +fun settingAboutAppBuildDateProvider( + getAppBuildDate: GetAppBuildDate, +): SettingComponent = getAppBuildDate() + .map { buildDate -> + // composable + SettingIi( + search = SettingIi.Search( + group = "about", + tokens = listOf( + "about", + "app", + "build", + "date", + ), + ), + ) { + SettingAboutAppBuildDate( + buildDate = buildDate, + ) + } + } + +@Composable +private fun SettingAboutAppBuildDate( + buildDate: String, +) { + SettingListItem( + title = stringResource(Res.strings.pref_item_app_build_date_title), + text = buildDate, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAboutTeam.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAboutTeam.kt new file mode 100644 index 00000000..99582b24 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAboutTeam.kt @@ -0,0 +1,64 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.People +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.team.AboutTeamRoute +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.DirectDI + +fun settingAboutTeamProvider( + directDI: DirectDI, +) = settingAboutTeamProvider() + +fun settingAboutTeamProvider(): SettingComponent = kotlin.run { + val item = SettingIi( + search = SettingIi.Search( + group = "about", + tokens = listOf( + "about", + "team", + ), + ), + ) { + val navigationController by rememberUpdatedState(LocalNavigationController.current) + SettingAboutTeam( + onClick = { + val intent = NavigationIntent.NavigateToRoute( + route = AboutTeamRoute, + ) + navigationController.queue(intent) + }, + ) + } + flowOf(item) +} + +@Composable +private fun SettingAboutTeam( + onClick: (() -> Unit)?, +) { + FlatItem( + leading = icon(Icons.Outlined.People), + trailing = { + ChevronIcon() + }, + title = { + Text( + text = stringResource(Res.strings.pref_item_app_team_title), + ) + }, + onClick = onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAboutTelegram.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAboutTelegram.kt new file mode 100644 index 00000000..903e8934 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAboutTelegram.kt @@ -0,0 +1,68 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Forum +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.KeyguardWebsite +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.DirectDI + +fun settingAboutTelegramProvider( + directDI: DirectDI, +) = settingAboutTelegramProvider() + +fun settingAboutTelegramProvider(): SettingComponent = kotlin.run { + val item = SettingIi( + search = SettingIi.Search( + group = "about", + tokens = listOf( + "about", + "reddit", + "forum", + "discussion", + "feedback", + "report", + ), + ), + ) { + val navigationController by rememberUpdatedState(LocalNavigationController.current) + SettingAboutTelegram( + onClick = { + val intent = NavigationIntent.NavigateToBrowser( + url = "https://www.reddit.com/r/keyguard/", + ) + navigationController.queue(intent) + }, + ) + } + flowOf(item) +} + +@Composable +private fun SettingAboutTelegram( + onClick: (() -> Unit)?, +) { + FlatItem( + leading = icon(Icons.Outlined.Forum, Icons.Outlined.KeyguardWebsite), + trailing = { + ChevronIcon() + }, + title = { + Text( + text = stringResource(Res.strings.pref_item_reddit_community_title), + ) + }, + onClick = onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingApk.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingApk.kt new file mode 100644 index 00000000..8c47e7c6 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingApk.kt @@ -0,0 +1,72 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.FileDownload +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import com.artemchep.keyguard.common.usecase.GetPurchased +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingApkProvider( + directDI: DirectDI, +) = settingApkProvider( + getPurchased = directDI.instance(), +) + +fun settingApkProvider( + getPurchased: GetPurchased, +): SettingComponent = getPurchased() + .map { premium -> + if (premium) { + // composable + SettingIi( + search = SettingIi.Search( + group = "subscription", + tokens = listOf( + "apk", + "download", + ), + ), + ) { + SettingApk() + } + } else { + null + } + } + +@Composable +private fun SettingApk() { + val controller by rememberUpdatedState(LocalNavigationController.current) + FlatItem( + leading = icon(Icons.Outlined.FileDownload), + title = { + Text( + text = stringResource(Res.strings.pref_item_download_apk_title), + ) + }, + trailing = { + ChevronIcon() + }, + onClick = { + val intent = run { + val url = + "https://github.com/AChep/keyguard-app/releases" + NavigationIntent.NavigateToBrowser(url) + } + controller.queue(intent) + }, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAppIcons.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAppIcons.kt new file mode 100644 index 00000000..4240af76 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAppIcons.kt @@ -0,0 +1,83 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.GetAppIcons +import com.artemchep.keyguard.common.usecase.PutAppIcons +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemLayout +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.icons.Stub +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingAppIconsProvider( + directDI: DirectDI, +) = settingAppIconsProvider( + getAppIcons = directDI.instance(), + putAppIcons = directDI.instance(), + windowCoroutineScope = directDI.instance(), +) + +fun settingAppIconsProvider( + getAppIcons: GetAppIcons, + putAppIcons: PutAppIcons, + windowCoroutineScope: WindowCoroutineScope, +): SettingComponent = getAppIcons().map { appIcons -> + val onCheckedChange = { shouldAppIcons: Boolean -> + putAppIcons(shouldAppIcons) + .launchIn(windowCoroutineScope) + Unit + } + + SettingIi( + search = SettingIi.Search( + group = "icon", + tokens = listOf( + "icon", + "app", + ), + ), + ) { + SettingAppIcons( + checked = appIcons, + onCheckedChange = onCheckedChange, + ) + } +} + +@Composable +private fun SettingAppIcons( + checked: Boolean, + onCheckedChange: ((Boolean) -> Unit)?, +) { + FlatItemLayout( + leading = icon(Icons.Stub), + trailing = { + Switch( + checked = checked, + enabled = onCheckedChange != null, + onCheckedChange = onCheckedChange, + ) + }, + content = { + FlatItemTextContent( + title = { + Text( + text = stringResource(Res.strings.pref_item_load_app_icons_title), + ) + }, + ) + }, + onClick = onCheckedChange?.partially1(!checked), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofill.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofill.kt new file mode 100644 index 00000000..755a294b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofill.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import org.kodein.di.DirectDI + +expect fun settingAutofillProvider( + directDI: DirectDI, +): SettingComponent diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofillCopyTotp.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofillCopyTotp.kt new file mode 100644 index 00000000..03541c88 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofillCopyTotp.kt @@ -0,0 +1,81 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.GetAutofillCopyTotp +import com.artemchep.keyguard.common.usecase.PutAutofillCopyTotp +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingAutofillCopyTotpProvider( + directDI: DirectDI, +) = settingAutofillCopyTotpProvider( + getAutofillCopyTotp = directDI.instance(), + putAutofillCopyTotp = directDI.instance(), + windowCoroutineScope = directDI.instance(), +) + +fun settingAutofillCopyTotpProvider( + getAutofillCopyTotp: GetAutofillCopyTotp, + putAutofillCopyTotp: PutAutofillCopyTotp, + windowCoroutineScope: WindowCoroutineScope, +): SettingComponent = getAutofillCopyTotp().map { copyTotp -> + val onCheckedChange = { shouldCopyTotp: Boolean -> + putAutofillCopyTotp(shouldCopyTotp) + .launchIn(windowCoroutineScope) + Unit + } + + SettingIi( + search = SettingIi.Search( + group = "autofill", + tokens = listOf( + "autofill", + "copy", + "totp", + "password", + "one-time", + ), + ), + ) { + SettingAutofillCopyTotp( + checked = copyTotp, + onCheckedChange = onCheckedChange, + ) + } +} + +@Composable +private fun SettingAutofillCopyTotp( + checked: Boolean, + onCheckedChange: ((Boolean) -> Unit)?, +) { + FlatItem( + trailing = { + Switch( + checked = checked, + enabled = onCheckedChange != null, + onCheckedChange = onCheckedChange, + ) + }, + title = { + Text( + text = stringResource(Res.strings.pref_item_autofill_auto_copy_otp_title), + ) + }, + text = { + Text( + text = stringResource(Res.strings.pref_item_autofill_auto_copy_otp_text), + ) + }, + onClick = onCheckedChange?.partially1(!checked), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofillInlineSuggestions.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofillInlineSuggestions.kt new file mode 100644 index 00000000..f4727dce --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofillInlineSuggestions.kt @@ -0,0 +1,78 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.GetAutofillInlineSuggestions +import com.artemchep.keyguard.common.usecase.PutAutofillInlineSuggestions +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingAutofillInlineSuggestionsProvider( + directDI: DirectDI, +) = settingAutofillInlineSuggestionsProvider( + getAutofillInlineSuggestions = directDI.instance(), + putAutofillInlineSuggestions = directDI.instance(), + windowCoroutineScope = directDI.instance(), +) + +fun settingAutofillInlineSuggestionsProvider( + getAutofillInlineSuggestions: GetAutofillInlineSuggestions, + putAutofillInlineSuggestions: PutAutofillInlineSuggestions, + windowCoroutineScope: WindowCoroutineScope, +): SettingComponent = getAutofillInlineSuggestions().map { inlineSuggestions -> + val onCheckedChange = { shouldInlineSuggestions: Boolean -> + putAutofillInlineSuggestions(shouldInlineSuggestions) + .launchIn(windowCoroutineScope) + Unit + } + + SettingIi( + search = SettingIi.Search( + group = "autofill", + tokens = listOf( + "autofill", + "suggestions", + ), + ), + ) { + SettingAutofillInlineSuggestions( + checked = inlineSuggestions, + onCheckedChange = onCheckedChange, + ) + } +} + +@Composable +private fun SettingAutofillInlineSuggestions( + checked: Boolean, + onCheckedChange: ((Boolean) -> Unit)?, +) { + FlatItem( + trailing = { + Switch( + checked = checked, + enabled = onCheckedChange != null, + onCheckedChange = onCheckedChange, + ) + }, + title = { + Text( + text = stringResource(Res.strings.pref_item_autofill_inline_suggestions_title), + ) + }, + text = { + Text( + text = stringResource(Res.strings.pref_item_autofill_inline_suggestions_text), + ) + }, + onClick = onCheckedChange?.partially1(!checked), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofillManualSelection.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofillManualSelection.kt new file mode 100644 index 00000000..71a72638 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofillManualSelection.kt @@ -0,0 +1,78 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.GetAutofillManualSelection +import com.artemchep.keyguard.common.usecase.PutAutofillManualSelection +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingAutofillManualSelectionProvider( + directDI: DirectDI, +) = settingAutofillManualSelectionProvider( + getAutofillManualSelection = directDI.instance(), + putAutofillManualSelection = directDI.instance(), + windowCoroutineScope = directDI.instance(), +) + +fun settingAutofillManualSelectionProvider( + getAutofillManualSelection: GetAutofillManualSelection, + putAutofillManualSelection: PutAutofillManualSelection, + windowCoroutineScope: WindowCoroutineScope, +): SettingComponent = getAutofillManualSelection().map { manualSelection -> + val onCheckedChange = { shouldManualSelection: Boolean -> + putAutofillManualSelection(shouldManualSelection) + .launchIn(windowCoroutineScope) + Unit + } + + SettingIi( + search = SettingIi.Search( + group = "autofill", + tokens = listOf( + "autofill", + "manual", + ), + ), + ) { + SettingAutofillManualSelection( + checked = manualSelection, + onCheckedChange = onCheckedChange, + ) + } +} + +@Composable +private fun SettingAutofillManualSelection( + checked: Boolean, + onCheckedChange: ((Boolean) -> Unit)?, +) { + FlatItem( + trailing = { + Switch( + checked = checked, + enabled = onCheckedChange != null, + onCheckedChange = onCheckedChange, + ) + }, + title = { + Text( + text = stringResource(Res.strings.pref_item_autofill_manual_selection_title), + ) + }, + text = { + Text( + text = stringResource(Res.strings.pref_item_autofill_manual_selection_text), + ) + }, + onClick = onCheckedChange?.partially1(!checked), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofillRespectAutofillOff.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofillRespectAutofillOff.kt new file mode 100644 index 00000000..136b1bd3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofillRespectAutofillOff.kt @@ -0,0 +1,101 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.height +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.GetAutofillRespectAutofillOff +import com.artemchep.keyguard.common.usecase.PutAutofillRespectAutofillOff +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemLayout +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.theme.combineAlpha +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingAutofillRespectAutofillOffProvider( + directDI: DirectDI, +) = settingAutofillRespectAutofillOffProvider( + getAutofillRespectAutofillOff = directDI.instance(), + putAutofillRespectAutofillOff = directDI.instance(), + windowCoroutineScope = directDI.instance(), +) + +fun settingAutofillRespectAutofillOffProvider( + getAutofillRespectAutofillOff: GetAutofillRespectAutofillOff, + putAutofillRespectAutofillOff: PutAutofillRespectAutofillOff, + windowCoroutineScope: WindowCoroutineScope, +): SettingComponent = getAutofillRespectAutofillOff().map { respectAutofillOff -> + val onCheckedChange = { shouldRespectAutofillOff: Boolean -> + putAutofillRespectAutofillOff(shouldRespectAutofillOff) + .launchIn(windowCoroutineScope) + Unit + } + + SettingIi( + search = SettingIi.Search( + group = "autofill", + tokens = listOf( + "autofill", + "flag", + ), + ), + ) { + SettingAutofillRespectAutofillOff( + checked = respectAutofillOff, + onCheckedChange = onCheckedChange, + ) + } +} + +@Composable +private fun SettingAutofillRespectAutofillOff( + checked: Boolean, + onCheckedChange: ((Boolean) -> Unit)?, +) { + FlatItemLayout( + trailing = { + Switch( + checked = checked, + enabled = onCheckedChange != null, + onCheckedChange = onCheckedChange, + ) + }, + content = { + FlatItemTextContent( + title = { + Text( + text = stringResource(Res.strings.pref_item_autofill_respect_autofill_disabled_title), + ) + }, + text = { + Text( + text = stringResource(Res.strings.pref_item_autofill_respect_autofill_disabled_text), + ) + Spacer( + modifier = Modifier + .height(8.dp), + ) + Text( + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + style = MaterialTheme.typography.bodySmall, + text = stringResource(Res.strings.pref_item_autofill_respect_autofill_disabled_note), + ) + }, + ) + }, + onClick = onCheckedChange?.partially1(!checked), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofillSaveRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofillSaveRequest.kt new file mode 100644 index 00000000..5e5b8f9b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofillSaveRequest.kt @@ -0,0 +1,86 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.GetAutofillSaveRequest +import com.artemchep.keyguard.common.usecase.GetCanWrite +import com.artemchep.keyguard.common.usecase.PutAutofillSaveRequest +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.combine +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingAutofillSaveRequestProvider( + directDI: DirectDI, +) = settingAutofillSaveRequestProvider( + getCanWrite = directDI.instance(), + getAutofillSaveRequest = directDI.instance(), + putAutofillSaveRequest = directDI.instance(), + windowCoroutineScope = directDI.instance(), +) + +fun settingAutofillSaveRequestProvider( + getCanWrite: GetCanWrite, + getAutofillSaveRequest: GetAutofillSaveRequest, + putAutofillSaveRequest: PutAutofillSaveRequest, + windowCoroutineScope: WindowCoroutineScope, +): SettingComponent = run { + val onCheckedChange = { shouldSaveRequest: Boolean -> + putAutofillSaveRequest(shouldSaveRequest) + .launchIn(windowCoroutineScope) + Unit + } + + combine( + getCanWrite(), + getAutofillSaveRequest(), + ) { canWrite, saveRequest -> + SettingIi( + search = SettingIi.Search( + group = "autofill", + tokens = listOf( + "autofill", + "save", + ), + ), + ) { + SettingAutofillSaveRequest( + checked = saveRequest, + onCheckedChange = onCheckedChange.takeIf { canWrite }, + ) + } + } +} + +@Composable +private fun SettingAutofillSaveRequest( + checked: Boolean, + onCheckedChange: ((Boolean) -> Unit)?, +) { + FlatItem( + trailing = { + Switch( + checked = checked, + enabled = onCheckedChange != null, + onCheckedChange = onCheckedChange, + ) + }, + title = { + Text( + text = stringResource(Res.strings.pref_item_autofill_save_request_title), + ) + }, + text = { + Text( + text = stringResource(Res.strings.pref_item_autofill_save_request_text), + ) + }, + onClick = onCheckedChange?.partially1(!checked), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofillSaveUri.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofillSaveUri.kt new file mode 100644 index 00000000..046eb84d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofillSaveUri.kt @@ -0,0 +1,81 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.GetAutofillSaveUri +import com.artemchep.keyguard.common.usecase.GetCanWrite +import com.artemchep.keyguard.common.usecase.PutAutofillSaveUri +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.combine +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingAutofillSaveUriProvider( + directDI: DirectDI, +) = settingAutofillSaveUriProvider( + getCanWrite = directDI.instance(), + getAutofillSaveUri = directDI.instance(), + putAutofillSaveUri = directDI.instance(), + windowCoroutineScope = directDI.instance(), +) + +fun settingAutofillSaveUriProvider( + getCanWrite: GetCanWrite, + getAutofillSaveUri: GetAutofillSaveUri, + putAutofillSaveUri: PutAutofillSaveUri, + windowCoroutineScope: WindowCoroutineScope, +): SettingComponent = run { + val onCheckedChange = { shouldSaveRequest: Boolean -> + putAutofillSaveUri(shouldSaveRequest) + .launchIn(windowCoroutineScope) + Unit + } + + combine( + getCanWrite(), + getAutofillSaveUri(), + ) { canWrite, saveUri -> + SettingIi( + search = SettingIi.Search( + group = "autofill", + tokens = listOf( + "autofill", + "save", + ), + ), + ) { + SettingAutofillSaveUri( + checked = saveUri, + onCheckedChange = onCheckedChange.takeIf { canWrite }, + ) + } + } +} + +@Composable +private fun SettingAutofillSaveUri( + checked: Boolean, + onCheckedChange: ((Boolean) -> Unit)?, +) { + FlatItem( + trailing = { + Switch( + checked = checked, + enabled = onCheckedChange != null, + onCheckedChange = onCheckedChange, + ) + }, + title = { + Text( + text = stringResource(Res.strings.pref_item_autofill_auto_save_source_title), + ) + }, + onClick = onCheckedChange?.partially1(!checked), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingBiometrics.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingBiometrics.kt new file mode 100644 index 00000000..823ef044 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingBiometrics.kt @@ -0,0 +1,134 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Fingerprint +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.model.BiometricAuthPrompt +import com.artemchep.keyguard.common.model.BiometricStatus +import com.artemchep.keyguard.common.service.vault.FingerprintReadRepository +import com.artemchep.keyguard.common.usecase.BiometricStatusUseCase +import com.artemchep.keyguard.common.usecase.DisableBiometric +import com.artemchep.keyguard.common.usecase.EnableBiometric +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.common.util.flow.EventFlow +import com.artemchep.keyguard.feature.biometric.BiometricPromptEffect +import com.artemchep.keyguard.feature.localization.TextHolder +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingBiometricsProvider( + directDI: DirectDI, +) = settingBiometricsProvider( + fingerprintReadRepository = directDI.instance(), + biometricStatusUseCase = directDI.instance(), + enableBiometric = directDI.instance(), + disableBiometric = directDI.instance(), + windowCoroutineScope = directDI.instance(), +) + +fun settingBiometricsProvider( + fingerprintReadRepository: FingerprintReadRepository, + biometricStatusUseCase: BiometricStatusUseCase, + enableBiometric: EnableBiometric, + disableBiometric: DisableBiometric, + windowCoroutineScope: WindowCoroutineScope, +): SettingComponent = biometricStatusUseCase() + .map { it is BiometricStatus.Available } + .distinctUntilChanged() + .flatMapLatest { hasBiometrics -> + if (hasBiometrics) { + fingerprintReadRepository.get() + .map { tokens -> + val hasBiometricEnabled = tokens?.biometric != null + + SettingIi( + search = SettingIi.Search( + group = "biometric", + tokens = listOf( + "biometric", + ), + ), + ) { + val promptSink = remember { + EventFlow() + } + + SettingBiometrics( + checked = hasBiometricEnabled, + onCheckedChange = { shouldBeChecked -> + if (shouldBeChecked) { + enableBiometric(null) // use global session + .map { d -> + val cipher = d.getCipher() + val prompt = BiometricAuthPrompt( + title = TextHolder.Res(Res.strings.pref_item_biometric_unlock_confirm_title), + cipher = cipher, + onComplete = { result -> + result.fold( + ifLeft = { exception -> + val message = exception.message + // biometricPromptErrorSink.emit(message) + }, + ifRight = { + d.getCreateIo() + .launchIn(windowCoroutineScope) + }, + ) + }, + ) + promptSink.emit(prompt) + } + .launchIn(windowCoroutineScope) + } else { + disableBiometric() + .launchIn(windowCoroutineScope) + } + }, + ) + + BiometricPromptEffect(promptSink) + } + } + } else { + // hide option if the device does not have biometrics + flowOf(null) + } + } + +@Composable +private fun SettingBiometrics( + checked: Boolean, + onCheckedChange: ((Boolean) -> Unit)?, +) { + FlatItem( + leading = icon(Icons.Outlined.Fingerprint), + trailing = { + Switch( + checked = checked, + enabled = onCheckedChange != null, + onCheckedChange = onCheckedChange, + ) + }, + title = { + Text( + text = stringResource(Res.strings.pref_item_biometric_unlock_title), + ) + }, + onClick = onCheckedChange?.partially1(!checked), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingCheckPwnedPasswords.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingCheckPwnedPasswords.kt new file mode 100644 index 00000000..f5a418c1 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingCheckPwnedPasswords.kt @@ -0,0 +1,65 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.GetCheckPwnedPasswords +import com.artemchep.keyguard.common.usecase.PutCheckPwnedPasswords +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.ui.FlatItem +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingCheckPwnedPasswordsProvider( + directDI: DirectDI, +) = settingCheckPwnedPasswordsProvider( + getCheckPwnedPasswords = directDI.instance(), + putCheckPwnedPasswords = directDI.instance(), + windowCoroutineScope = directDI.instance(), +) + +fun settingCheckPwnedPasswordsProvider( + getCheckPwnedPasswords: GetCheckPwnedPasswords, + putCheckPwnedPasswords: PutCheckPwnedPasswords, + windowCoroutineScope: WindowCoroutineScope, +): SettingComponent = getCheckPwnedPasswords().map { checkPwnedPasswords -> + val onCheckedChange = { shouldCheckPwnedPasswords: Boolean -> + putCheckPwnedPasswords(shouldCheckPwnedPasswords) + .launchIn(windowCoroutineScope) + Unit + } + + SettingIi { + SettingCheckPwnedPasswords( + checked = checkPwnedPasswords, + onCheckedChange = onCheckedChange, + ) + } +} + +@Composable +private fun SettingCheckPwnedPasswords( + checked: Boolean, + onCheckedChange: ((Boolean) -> Unit)?, +) { + FlatItem( + trailing = { + Switch( + checked = checked, + enabled = onCheckedChange != null, + onCheckedChange = onCheckedChange, + ) + }, + title = { + Text("Check for vulnerable passwords") + }, + text = { + val text = "Check saved passwords for recent security breaches." + Text(text) + }, + onClick = onCheckedChange?.partially1(!checked), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingCheckPwnedServices.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingCheckPwnedServices.kt new file mode 100644 index 00000000..00de2842 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingCheckPwnedServices.kt @@ -0,0 +1,65 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.GetCheckPwnedServices +import com.artemchep.keyguard.common.usecase.PutCheckPwnedServices +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.ui.FlatItem +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingCheckPwnedServicesProvider( + directDI: DirectDI, +) = settingCheckPwnedServicesProvider( + getCheckPwnedServices = directDI.instance(), + putCheckPwnedServices = directDI.instance(), + windowCoroutineScope = directDI.instance(), +) + +fun settingCheckPwnedServicesProvider( + getCheckPwnedServices: GetCheckPwnedServices, + putCheckPwnedServices: PutCheckPwnedServices, + windowCoroutineScope: WindowCoroutineScope, +): SettingComponent = getCheckPwnedServices().map { checkPwnedServices -> + val onCheckedChange = { shouldCheckPwnedServices: Boolean -> + putCheckPwnedServices(shouldCheckPwnedServices) + .launchIn(windowCoroutineScope) + Unit + } + + SettingIi { + SettingCheckPwnedServices( + checked = checkPwnedServices, + onCheckedChange = onCheckedChange, + ) + } +} + +@Composable +private fun SettingCheckPwnedServices( + checked: Boolean, + onCheckedChange: ((Boolean) -> Unit)?, +) { + FlatItem( + trailing = { + Switch( + checked = checked, + enabled = onCheckedChange != null, + onCheckedChange = onCheckedChange, + ) + }, + title = { + Text("Check for compromised websites") + }, + text = { + val text = "Check saved websites for recent security breaches." + Text(text) + }, + onClick = onCheckedChange?.partially1(!checked), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingCheckTwoFA.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingCheckTwoFA.kt new file mode 100644 index 00000000..f02706c0 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingCheckTwoFA.kt @@ -0,0 +1,65 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.GetCheckTwoFA +import com.artemchep.keyguard.common.usecase.PutCheckTwoFA +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.ui.FlatItem +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingCheckTwoFAProvider( + directDI: DirectDI, +) = settingCheckTwoFAProvider( + getCheckTwoFA = directDI.instance(), + putCheckTwoFA = directDI.instance(), + windowCoroutineScope = directDI.instance(), +) + +fun settingCheckTwoFAProvider( + getCheckTwoFA: GetCheckTwoFA, + putCheckTwoFA: PutCheckTwoFA, + windowCoroutineScope: WindowCoroutineScope, +): SettingComponent = getCheckTwoFA().map { checkTwoFA -> + val onCheckedChange = { shouldCheckTwoFA: Boolean -> + putCheckTwoFA(shouldCheckTwoFA) + .launchIn(windowCoroutineScope) + Unit + } + + SettingIi { + SettingCheckTwoFA( + checked = checkTwoFA, + onCheckedChange = onCheckedChange, + ) + } +} + +@Composable +private fun SettingCheckTwoFA( + checked: Boolean, + onCheckedChange: ((Boolean) -> Unit)?, +) { + FlatItem( + trailing = { + Switch( + checked = checked, + enabled = onCheckedChange != null, + onCheckedChange = onCheckedChange, + ) + }, + title = { + Text("Check for two-factor authentication") + }, + text = { + val text = "Check for login items that support two-factor authentication." + Text(text) + }, + onClick = onCheckedChange?.partially1(!checked), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingClearCache.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingClearCache.kt new file mode 100644 index 00000000..905619ce --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingClearCache.kt @@ -0,0 +1,64 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Cached +import androidx.compose.material.icons.outlined.Remove +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.io.parallel +import com.artemchep.keyguard.common.service.hibp.breaches.all.BreachesLocalDataSource +import com.artemchep.keyguard.common.service.hibp.passwords.PasswordPwnageDataSourceLocal +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.feature.home.vault.component.VaultViewButtonItem +import com.artemchep.keyguard.platform.util.isRelease +import com.artemchep.keyguard.ui.icons.icon +import kotlinx.coroutines.flow.flow +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingClearCache( + directDI: DirectDI, +) = settingClearCache( + breachesLocalDataSource = directDI.instance(), +// accountPwnageDataSourceLocal = directDI.instance(), + passwordPwnageDataSourceLocal = directDI.instance(), + windowCoroutineScope = directDI.instance(), +) + +fun settingClearCache( + breachesLocalDataSource: BreachesLocalDataSource, +// accountPwnageDataSourceLocal: AccountPwnageDataSourceLocal, + passwordPwnageDataSourceLocal: PasswordPwnageDataSourceLocal, + windowCoroutineScope: WindowCoroutineScope, +): SettingComponent = flow { + val component = if (!isRelease) { + SettingIi { + SettingClearCache( + onClick = { + listOf( + breachesLocalDataSource.clear(), +// accountPwnageDataSourceLocal.clear(), + passwordPwnageDataSourceLocal.clear(), + ) + .parallel(parallelism = 1) + .launchIn(windowCoroutineScope) + }, + ) + } + } else { + null + } + emit(component) +} + +@Composable +private fun SettingClearCache( + onClick: (() -> Unit), +) { + VaultViewButtonItem( + leading = icon(Icons.Outlined.Cached, Icons.Outlined.Remove), + text = "Clear cache", + onClick = onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingClipboardAutoClear.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingClipboardAutoClear.kt new file mode 100644 index 00000000..46c8f83e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingClipboardAutoClear.kt @@ -0,0 +1,103 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Clear +import androidx.compose.material.icons.outlined.ContentPaste +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.GetClipboardAutoClear +import com.artemchep.keyguard.common.usecase.GetClipboardAutoClearVariants +import com.artemchep.keyguard.common.usecase.PutClipboardAutoClear +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.feature.localization.textResource +import com.artemchep.keyguard.platform.LeContext +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatDropdown +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.combine +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.time.Duration + +fun settingClipboardAutoClearProvider( + directDI: DirectDI, +) = settingClipboardAutoClearProvider( + getClipboardAutoClear = directDI.instance(), + getClipboardAutoClearVariants = directDI.instance(), + putClipboardAutoClear = directDI.instance(), + windowCoroutineScope = directDI.instance(), + context = directDI.instance(), +) + +fun settingClipboardAutoClearProvider( + getClipboardAutoClear: GetClipboardAutoClear, + getClipboardAutoClearVariants: GetClipboardAutoClearVariants, + putClipboardAutoClear: PutClipboardAutoClear, + windowCoroutineScope: WindowCoroutineScope, + context: LeContext, +): SettingComponent = combine( + getClipboardAutoClear(), + getClipboardAutoClearVariants(), +) { timeout, variants -> + val text = getAutoClearDurationTitle(timeout, context) + val dropdown = variants + .map { duration -> + val title = getAutoClearDurationTitle(duration, context) + FlatItemAction( + title = title, + onClick = { + putClipboardAutoClear(duration) + .launchIn(windowCoroutineScope) + }, + ) + } + + SettingIi { + SettingClipboardAutoClear( + text = text, + dropdown = dropdown, + ) + } +} + +private fun getAutoClearDurationTitle(duration: Duration, context: LeContext) = when (duration) { + Duration.ZERO -> textResource( + Res.strings.pref_item_clipboard_auto_clear_immediately_text, + context, + ) + + Duration.INFINITE -> textResource( + Res.strings.pref_item_clipboard_auto_clear_never_text, + context, + ) + + else -> duration.toString() +} + +@Composable +private fun SettingClipboardAutoClear( + text: String, + dropdown: List, +) { + FlatDropdown( + leading = icon(Icons.Outlined.ContentPaste, Icons.Outlined.Clear), + dropdown = dropdown, + content = { + FlatItemTextContent( + title = { + Text( + text = stringResource(Res.strings.pref_item_clipboard_auto_clear_title), + ) + }, + text = { + Text(text) + }, + ) + }, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingClipboardAutoRefresh.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingClipboardAutoRefresh.kt new file mode 100644 index 00000000..315dff9b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingClipboardAutoRefresh.kt @@ -0,0 +1,116 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.height +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Notifications +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.GetClipboardAutoRefresh +import com.artemchep.keyguard.common.usecase.GetClipboardAutoRefreshVariants +import com.artemchep.keyguard.common.usecase.PutClipboardAutoRefresh +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.feature.localization.textResource +import com.artemchep.keyguard.platform.LeContext +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatDropdown +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.icons.KeyguardTwoFa +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.theme.combineAlpha +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.combine +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.time.Duration + +fun settingClipboardAutoRefreshProvider( + directDI: DirectDI, +) = settingClipboardAutoRefreshProvider( + getClipboardAutoRefresh = directDI.instance(), + getClipboardAutoRefreshVariants = directDI.instance(), + putClipboardAutoRefresh = directDI.instance(), + windowCoroutineScope = directDI.instance(), + context = directDI.instance(), +) + +fun settingClipboardAutoRefreshProvider( + getClipboardAutoRefresh: GetClipboardAutoRefresh, + getClipboardAutoRefreshVariants: GetClipboardAutoRefreshVariants, + putClipboardAutoRefresh: PutClipboardAutoRefresh, + windowCoroutineScope: WindowCoroutineScope, + context: LeContext, +): SettingComponent = combine( + getClipboardAutoRefresh(), + getClipboardAutoRefreshVariants(), +) { timeout, variants -> + val text = getAutoRefreshDurationTitle(timeout, context) + val dropdown = variants + .map { duration -> + val title = getAutoRefreshDurationTitle(duration, context) + FlatItemAction( + title = title, + onClick = { + putClipboardAutoRefresh(duration) + .launchIn(windowCoroutineScope) + }, + ) + } + + SettingIi { + SettingClipboardAutoRefresh( + text = text, + dropdown = dropdown, + ) + } +} + +private fun getAutoRefreshDurationTitle(duration: Duration, context: LeContext) = when (duration) { + Duration.ZERO -> textResource( + Res.strings.pref_item_clipboard_auto_refresh_otp_duration_never_text, + context, + ) + + else -> duration.toString() +} + +@Composable +private fun SettingClipboardAutoRefresh( + text: String, + dropdown: List, +) { + FlatDropdown( + leading = icon(Icons.Outlined.KeyguardTwoFa, Icons.Outlined.Notifications), + content = { + FlatItemTextContent( + title = { + Text( + text = stringResource(Res.strings.pref_item_clipboard_auto_refresh_otp_duration_title), + ) + }, + text = { + Text(text) + Spacer( + modifier = Modifier + .height(8.dp), + ) + Text( + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + style = MaterialTheme.typography.bodySmall, + text = stringResource(Res.strings.pref_item_clipboard_auto_refresh_otp_duration_note), + ) + }, + ) + }, + dropdown = dropdown, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingColorAccent.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingColorAccent.kt new file mode 100644 index 00000000..e6476733 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingColorAccent.kt @@ -0,0 +1,131 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.FormatColorFill +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.model.AppColors +import com.artemchep.keyguard.common.usecase.GetColors +import com.artemchep.keyguard.common.usecase.GetColorsVariants +import com.artemchep.keyguard.common.usecase.PutColors +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.feature.localization.textResource +import com.artemchep.keyguard.platform.LeContext +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatDropdown +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.composable +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.combine +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingColorAccentProvider( + directDI: DirectDI, +) = settingColorAccentProvider( + getColors = directDI.instance(), + getColorsVariants = directDI.instance(), + putColors = directDI.instance(), + windowCoroutineScope = directDI.instance(), + context = directDI.instance(), +) + +fun settingColorAccentProvider( + getColors: GetColors, + getColorsVariants: GetColorsVariants, + putColors: PutColors, + windowCoroutineScope: WindowCoroutineScope, + context: LeContext, +): SettingComponent = combine( + getColors(), + getColorsVariants(), +) { colors, variants -> + val text = getAppColorsTitle(colors, context) + val dropdown = variants + .map { colorsVariant -> + val actionTitle = getAppColorsTitle(colorsVariant, context) + FlatItemAction( + title = actionTitle, + onClick = { + putColors(colorsVariant) + .launchIn(windowCoroutineScope) + }, + trailing = if (colorsVariant != null) { + composable { + val accentColor = Color(colorsVariant.color) + Box( + Modifier + .background(accentColor, CircleShape) + .size(24.dp), + ) + } + } else { + null + }, + ) + } + + SettingIi( + search = SettingIi.Search( + group = "color_scheme", + tokens = listOf( + "schema", + "color", + "accent", + "theme", + ), + ), + ) { + SettingFont( + text = text, + dropdown = dropdown, + ) + } +} + +private fun getAppColorsTitle(appColors: AppColors?, context: LeContext) = when (appColors) { + null -> textResource(Res.strings.follow_system_settings, context) + else -> appColors.title +} + +@Composable +private fun SettingFont( + text: String, + dropdown: List, +) { + FlatDropdown( + leading = icon(Icons.Outlined.FormatColorFill), + content = { + FlatItemTextContent( + title = { + Text( + text = stringResource(Res.strings.pref_item_color_accent_title), + ) + }, + text = { + Text(text) + }, + ) + }, + trailing = { + Box( + Modifier + .background(MaterialTheme.colorScheme.primary, CircleShape) + .size(24.dp), + ) + }, + dropdown = dropdown, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingColorScheme.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingColorScheme.kt new file mode 100644 index 00000000..04fd4b22 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingColorScheme.kt @@ -0,0 +1,105 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.ColorLens +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.model.AppTheme +import com.artemchep.keyguard.common.usecase.GetTheme +import com.artemchep.keyguard.common.usecase.GetThemeVariants +import com.artemchep.keyguard.common.usecase.PutTheme +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.feature.localization.textResource +import com.artemchep.keyguard.platform.LeContext +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatDropdown +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.combine +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingColorSchemeProvider( + directDI: DirectDI, +) = settingColorSchemeProvider( + getTheme = directDI.instance(), + getThemeVariants = directDI.instance(), + putTheme = directDI.instance(), + windowCoroutineScope = directDI.instance(), + context = directDI.instance(), +) + +fun settingColorSchemeProvider( + getTheme: GetTheme, + getThemeVariants: GetThemeVariants, + putTheme: PutTheme, + windowCoroutineScope: WindowCoroutineScope, + context: LeContext, +): SettingComponent = combine( + getTheme(), + getThemeVariants(), +) { theme, variants -> + val text = getAppThemeTitle(theme, context) + val dropdown = variants + .map { themeVariant -> + val actionTitle = getAppThemeTitle(themeVariant, context) + FlatItemAction( + title = actionTitle, + onClick = { + putTheme(themeVariant) + .launchIn(windowCoroutineScope) + }, + ) + } + + SettingIi( + search = SettingIi.Search( + group = "color_scheme", + tokens = listOf( + "schema", + "color", + "theme", + "dark", + "light", + ), + ), + ) { + SettingFont( + text = text, + dropdown = dropdown, + ) + } +} + +private fun getAppThemeTitle(appTheme: AppTheme?, context: LeContext) = when (appTheme) { + null -> textResource(Res.strings.follow_system_settings, context) + AppTheme.DARK -> textResource(Res.strings.theme_dark, context) + AppTheme.LIGHT -> textResource(Res.strings.theme_light, context) +} + +@Composable +private fun SettingFont( + text: String, + dropdown: List, +) { + FlatDropdown( + leading = icon(Icons.Outlined.ColorLens), + content = { + FlatItemTextContent( + title = { + Text( + text = stringResource(Res.strings.pref_item_color_scheme_title), + ) + }, + text = { + Text(text) + }, + ) + }, + dropdown = dropdown, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingComponent.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingComponent.kt new file mode 100644 index 00000000..97259bcf --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingComponent.kt @@ -0,0 +1,40 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.platform.Platform +import com.artemchep.keyguard.ui.FlatItem +import kotlinx.coroutines.flow.Flow + +typealias SettingComponent = Flow + +data class SettingIi( + val platform: Platform? = null, + val search: Search? = null, + val content: @Composable () -> Unit, +) { + data class Search( + val group: String, + val tokens: List, + ) +} + +@Composable +fun SettingListItem( + title: String, + text: String? = null, +) { + FlatItem( + title = { + Text(title) + }, + text = if (text != null) { + // composable + { + Text(text) + } + } else { + null + }, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingConcealedFields.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingConcealedFields.kt new file mode 100644 index 00000000..09714780 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingConcealedFields.kt @@ -0,0 +1,89 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.animation.Crossfade +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Visibility +import androidx.compose.material.icons.outlined.VisibilityOff +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.GetConcealFields +import com.artemchep.keyguard.common.usecase.PutConcealFields +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.IconBox +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingConcealFieldsProvider( + directDI: DirectDI, +) = settingConcealFieldsProvider( + getConcealFields = directDI.instance(), + putConcealFields = directDI.instance(), + windowCoroutineScope = directDI.instance(), +) + +fun settingConcealFieldsProvider( + getConcealFields: GetConcealFields, + putConcealFields: PutConcealFields, + windowCoroutineScope: WindowCoroutineScope, +): SettingComponent = getConcealFields().map { concealFields -> + val onCheckedChange = { shouldConcealFields: Boolean -> + putConcealFields(shouldConcealFields) + .launchIn(windowCoroutineScope) + Unit + } + + SettingIi( + search = SettingIi.Search( + group = "conceal", + tokens = listOf( + "conceal", + ), + ), + ) { + SettingScreenshotsFields( + checked = concealFields, + onCheckedChange = onCheckedChange, + ) + } +} + +@Composable +private fun SettingScreenshotsFields( + checked: Boolean, + onCheckedChange: ((Boolean) -> Unit)?, +) { + FlatItem( + leading = { + Crossfade(targetState = checked) { + val imageVector = + if (it) Icons.Outlined.VisibilityOff else Icons.Outlined.Visibility + IconBox(imageVector) + } + }, + trailing = { + Switch( + checked = checked, + enabled = onCheckedChange != null, + onCheckedChange = onCheckedChange, + ) + }, + title = { + Text( + text = stringResource(Res.strings.pref_item_conceal_fields_title), + ) + }, + text = { + Text( + text = stringResource(Res.strings.pref_item_conceal_fields_text), + ) + }, + onClick = onCheckedChange?.partially1(!checked), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingCrash.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingCrash.kt new file mode 100644 index 00000000..27cff409 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingCrash.kt @@ -0,0 +1,36 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.BugReport +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.home.vault.component.VaultViewButtonItem +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.DirectDI + +fun settingCrashProvider( + directDI: DirectDI, +): SettingComponent = run { + val item = SettingIi { + SettingCrash( + onClick = { + throw RuntimeException("Test crash.") + }, + ) + } + flowOf(item) +} + +@Composable +private fun SettingCrash( + onClick: () -> Unit, +) { + VaultViewButtonItem( + leading = icon(Icons.Outlined.BugReport), + text = stringResource(Res.strings.pref_item_crash_title), + onClick = onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingCrashlytics.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingCrashlytics.kt new file mode 100644 index 00000000..cd88dcc8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingCrashlytics.kt @@ -0,0 +1,82 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.BugReport +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.LocalMinimumInteractiveComponentEnforcement +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import arrow.core.partially1 +import com.artemchep.keyguard.platform.crashlyticsIsEnabledFlow +import com.artemchep.keyguard.platform.crashlyticsSetEnabled +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.ExpandedIfNotEmptyForRow +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.IconBox +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI + +fun settingCrashlyticsProvider( + directDI: DirectDI, +): SettingComponent = run { + crashlyticsIsEnabledFlow() + .map { checked -> + val onCheckedChange = { shouldCheck: Boolean -> + crashlyticsSetEnabled(shouldCheck) + } + + SettingIi( + search = SettingIi.Search( + group = "analytics", + tokens = listOf( + "crash", + "report", + "analytics", + ), + ), + ) { + SettingCrashlytics( + checked = checked, + onCheckedChange = onCheckedChange, + ) + } + } +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +private fun SettingCrashlytics( + checked: Boolean?, + onCheckedChange: ((Boolean) -> Unit)?, +) { + FlatItem( + leading = { + val imageVector = Icons.Outlined.BugReport + IconBox(imageVector) + }, + trailing = { + ExpandedIfNotEmptyForRow( + valueOrNull = checked, + ) { + CompositionLocalProvider( + LocalMinimumInteractiveComponentEnforcement provides false, + ) { + Switch( + checked = it, + enabled = onCheckedChange != null, + onCheckedChange = onCheckedChange, + ) + } + } + }, + title = { + Text( + text = stringResource(Res.strings.pref_item_send_crash_reports_title), + ) + }, + onClick = onCheckedChange?.partially1(checked != true), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingCredentialProvider.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingCredentialProvider.kt new file mode 100644 index 00000000..b6d8a163 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingCredentialProvider.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import org.kodein.di.DirectDI + +expect fun settingCredentialProviderProvider( + directDI: DirectDI, +): SettingComponent diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingDataSafety.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingDataSafety.kt new file mode 100644 index 00000000..9ababec6 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingDataSafety.kt @@ -0,0 +1,65 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.PrivacyTip +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import com.artemchep.keyguard.feature.datasafety.DataSafetyRoute +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.DirectDI + +fun settingDataSafetyProvider( + directDI: DirectDI, +) = settingDataSafetyProvider() + +fun settingDataSafetyProvider(): SettingComponent = kotlin.run { + val item = SettingIi( + search = SettingIi.Search( + group = "about", + tokens = listOf( + "safety", + "data", + "how", + ), + ), + ) { + val navigationController by rememberUpdatedState(LocalNavigationController.current) + SettingPermissionDetails( + onClick = { + val intent = NavigationIntent.NavigateToRoute( + route = DataSafetyRoute, + ) + navigationController.queue(intent) + }, + ) + } + flowOf(item) +} + +@Composable +private fun SettingPermissionDetails( + onClick: (() -> Unit)?, +) { + FlatItem( + leading = icon(Icons.Outlined.PrivacyTip), + trailing = { + ChevronIcon() + }, + title = { + Text( + text = stringResource(Res.strings.pref_item_data_safety_title), + ) + }, + onClick = onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingEmitMessage.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingEmitMessage.kt new file mode 100644 index 00000000..3dd9e75f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingEmitMessage.kt @@ -0,0 +1,52 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Message +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.model.ToastMessage +import com.artemchep.keyguard.common.usecase.ShowMessage +import com.artemchep.keyguard.feature.home.vault.component.VaultViewButtonItem +import com.artemchep.keyguard.ui.icons.icon +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.DirectDI +import org.kodein.di.instance +import java.util.UUID + +fun settingEmitMessageProvider( + directDI: DirectDI, +) = settingEmitMessageProvider( + showMessage = directDI.instance(), +) + +fun settingEmitMessageProvider( + showMessage: ShowMessage, +): SettingComponent = kotlin.run { + val item = SettingIi { + SettingEmitMessage( + onClick = { + val type = ToastMessage.Type.entries + .toTypedArray() + .random() + val model = ToastMessage( + title = "Test message", + type = type, + text = UUID.randomUUID().toString(), + ) + showMessage.copy(model) + }, + ) + } + flowOf(item) +} + +@Composable +fun SettingEmitMessage( + onClick: () -> Unit, +) { + VaultViewButtonItem( + leading = icon(Icons.Outlined.Message), + text = "Emit message", + onClick = onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingExperimental.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingExperimental.kt new file mode 100644 index 00000000..ec84d5e0 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingExperimental.kt @@ -0,0 +1,56 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Biotech +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import com.artemchep.keyguard.feature.home.settings.experimental.ExperimentalSettingsRoute +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.DirectDI + +fun settingExperimentalProvider( + directDI: DirectDI, +) = settingExperimentalProvider() + +fun settingExperimentalProvider(): SettingComponent = kotlin.run { + val item = SettingIi { + val navigationController by rememberUpdatedState(LocalNavigationController.current) + SettingExperimental( + onClick = { + val intent = NavigationIntent.NavigateToRoute( + route = ExperimentalSettingsRoute, + ) + navigationController.queue(intent) + }, + ) + } + flowOf(item) +} + +@Composable +private fun SettingExperimental( + onClick: (() -> Unit)?, +) { + FlatItem( + leading = icon(Icons.Outlined.Biotech), + trailing = { + ChevronIcon() + }, + title = { + Text( + text = stringResource(Res.strings.pref_item_experimental_title), + ) + }, + onClick = onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingFeaturesOverview.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingFeaturesOverview.kt new file mode 100644 index 00000000..99afdd2f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingFeaturesOverview.kt @@ -0,0 +1,66 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Functions +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.onboarding.OnboardingRoute +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.DirectDI + +fun settingFeaturesOverviewProvider( + directDI: DirectDI, +) = settingFeaturesOverviewProvider() + +fun settingFeaturesOverviewProvider(): SettingComponent = kotlin.run { + val item = SettingIi( + search = SettingIi.Search( + group = "about", + tokens = listOf( + "features", + "introduction", + "onboarding", + "overview", + ), + ), + ) { + val navigationController by rememberUpdatedState(LocalNavigationController.current) + SettingFeaturesOverview( + onClick = { + val intent = NavigationIntent.NavigateToRoute( + route = OnboardingRoute, + ) + navigationController.queue(intent) + }, + ) + } + flowOf(item) +} + +@Composable +private fun SettingFeaturesOverview( + onClick: (() -> Unit)?, +) { + FlatItem( + leading = icon(Icons.Outlined.Functions), + trailing = { + ChevronIcon() + }, + title = { + Text( + text = stringResource(Res.strings.pref_item_features_overview_title), + ) + }, + onClick = onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingFeedbackApp.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingFeedbackApp.kt new file mode 100644 index 00000000..8f60d396 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingFeedbackApp.kt @@ -0,0 +1,67 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Feedback +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import com.artemchep.keyguard.feature.feedback.FeedbackRoute +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.DirectDI + +fun settingFeedbackAppProvider( + directDI: DirectDI, +) = settingFeedbackAppProvider() + +fun settingFeedbackAppProvider(): SettingComponent = kotlin.run { + val item = SettingIi( + search = SettingIi.Search( + group = "about", + tokens = listOf( + "contact", + "feedback", + "report", + "issue", + "bug", + ), + ), + ) { + val navigationController by rememberUpdatedState(LocalNavigationController.current) + SettingFeedbackAppItem( + onClick = { + val intent = NavigationIntent.NavigateToRoute( + route = FeedbackRoute, + ) + navigationController.queue(intent) + }, + ) + } + flowOf(item) +} + +@Composable +fun SettingFeedbackAppItem( + onClick: (() -> Unit)?, +) { + FlatItem( + leading = icon(Icons.Outlined.Feedback), + trailing = { + ChevronIcon() + }, + title = { + Text( + text = stringResource(Res.strings.pref_item_contact_us_title), + ) + }, + onClick = onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingFont.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingFont.kt new file mode 100644 index 00000000..47e752af --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingFont.kt @@ -0,0 +1,115 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.FontDownload +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.model.AppFont +import com.artemchep.keyguard.common.usecase.GetFont +import com.artemchep.keyguard.common.usecase.GetFontVariants +import com.artemchep.keyguard.common.usecase.PutFont +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.feature.localization.textResource +import com.artemchep.keyguard.platform.LeContext +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatDropdown +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.combine +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingFontProvider( + directDI: DirectDI, +) = settingFontProvider( + getFont = directDI.instance(), + getFontVariants = directDI.instance(), + putFont = directDI.instance(), + windowCoroutineScope = directDI.instance(), + context = directDI.instance(), +) + +fun settingFontProvider( + getFont: GetFont, + getFontVariants: GetFontVariants, + putFont: PutFont, + windowCoroutineScope: WindowCoroutineScope, + context: LeContext, +): SettingComponent = combine( + getFont(), + getFontVariants(), +) { font, variants -> + val text = getAppFontTitle(font, context) + val dropdown = variants + .map { fontVariant -> + val actionTitle = getAppFontTitle(fontVariant, context) + val actionText = getAppFontText(fontVariant, context) + FlatItemAction( + title = actionTitle, + text = actionText, + onClick = { + putFont(fontVariant) + .launchIn(windowCoroutineScope) + }, + ) + } + + SettingIi( + search = SettingIi.Search( + group = "font", + tokens = listOf( + "font", + "family", + ), + ), + ) { + SettingFont( + text = text, + dropdown = dropdown, + ) + } +} + +private fun getAppFontTitle(appFont: AppFont?, context: LeContext) = when (appFont) { + null -> textResource(Res.strings.follow_system_settings, context) + AppFont.ROBOTO -> "Roboto" + AppFont.NOTO -> "Noto" + AppFont.ATKINSON_HYPERLEGIBLE -> "Atkinson Hyperlegible" +} + +private fun getAppFontText(appFont: AppFont?, context: LeContext) = when (appFont) { + null -> null + AppFont.ROBOTO -> null + AppFont.NOTO -> null + AppFont.ATKINSON_HYPERLEGIBLE -> textResource( + Res.strings.font_atkinson_hyperlegible_text, + context, + ) +} + +@Composable +private fun SettingFont( + text: String, + dropdown: List, +) { + FlatDropdown( + leading = icon(Icons.Outlined.FontDownload), + content = { + FlatItemTextContent( + title = { + Text( + text = stringResource(Res.strings.pref_item_font_title), + ) + }, + text = { + Text(text) + }, + ) + }, + dropdown = dropdown, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingGitHub.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingGitHub.kt new file mode 100644 index 00000000..1ea00a1c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingGitHub.kt @@ -0,0 +1,66 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.KeyguardWebsite +import com.artemchep.keyguard.ui.icons.icon +import compose.icons.FeatherIcons +import compose.icons.feathericons.Github +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.DirectDI + +fun settingGitHubProvider( + directDI: DirectDI, +): SettingComponent = settingGitHubProvider() + +fun settingGitHubProvider(): SettingComponent = kotlin.run { + val item = SettingIi( + search = SettingIi.Search( + group = "about", + tokens = listOf( + "code", + "github", + "open", + ), + ), + ) { + val navigationController by rememberUpdatedState(LocalNavigationController.current) + SettingGitHub( + onClick = { + val intent = NavigationIntent.NavigateToBrowser( + url = "https://github.com/AChep/keyguard-app/", + ) + navigationController.queue(intent) + }, + ) + } + flowOf(item) +} + +@Composable +private fun SettingGitHub( + onClick: (() -> Unit)?, +) { + FlatItem( + leading = icon(FeatherIcons.Github, Icons.Outlined.KeyguardWebsite), + trailing = { + ChevronIcon() + }, + title = { + Text( + text = stringResource(Res.strings.pref_item_github_title), + ) + }, + onClick = onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingKeepScreenOn.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingKeepScreenOn.kt new file mode 100644 index 00000000..c7c1dae6 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingKeepScreenOn.kt @@ -0,0 +1,74 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.GetKeepScreenOn +import com.artemchep.keyguard.common.usecase.PutKeepScreenOn +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingKeepScreenOnProvider( + directDI: DirectDI, +) = settingKeepScreenOnProvider( + getKeepScreenOn = directDI.instance(), + putKeepScreenOn = directDI.instance(), + windowCoroutineScope = directDI.instance(), +) + +fun settingKeepScreenOnProvider( + getKeepScreenOn: GetKeepScreenOn, + putKeepScreenOn: PutKeepScreenOn, + windowCoroutineScope: WindowCoroutineScope, +): SettingComponent = getKeepScreenOn().map { keepScreenOn -> + val onCheckedChange = { shouldKeepScreenOn: Boolean -> + putKeepScreenOn(shouldKeepScreenOn) + .launchIn(windowCoroutineScope) + Unit + } + + SettingIi( + search = SettingIi.Search( + group = "ui", + tokens = listOf( + "screen", + "on", + "keep", + ), + ), + ) { + SettingKeepScreenOn( + checked = keepScreenOn, + onCheckedChange = onCheckedChange, + ) + } +} + +@Composable +private fun SettingKeepScreenOn( + checked: Boolean, + onCheckedChange: ((Boolean) -> Unit)?, +) { + FlatItem( + trailing = { + Switch( + checked = checked, + enabled = onCheckedChange != null, + onCheckedChange = onCheckedChange, + ) + }, + title = { + Text( + text = stringResource(Res.strings.pref_item_keep_screen_on_title), + ) + }, + onClick = onCheckedChange?.partially1(!checked), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingLaunchAppPicker.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingLaunchAppPicker.kt new file mode 100644 index 00000000..47d41d28 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingLaunchAppPicker.kt @@ -0,0 +1,69 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Apps +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import com.artemchep.keyguard.common.model.ToastMessage +import com.artemchep.keyguard.common.usecase.ShowMessage +import com.artemchep.keyguard.feature.apppicker.AppPickerResult +import com.artemchep.keyguard.feature.apppicker.AppPickerRoute +import com.artemchep.keyguard.feature.home.vault.component.VaultViewButtonItem +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.registerRouteResultReceiver +import com.artemchep.keyguard.platform.util.isRelease +import com.artemchep.keyguard.ui.icons.icon +import kotlinx.coroutines.flow.flow +import org.kodein.di.DirectDI +import org.kodein.di.instance +import java.util.UUID + +fun settingLaunchAppPicker( + directDI: DirectDI, +) = settingLaunchAppPicker( + showMessage = directDI.instance(), +) + +fun settingLaunchAppPicker( + showMessage: ShowMessage, +): SettingComponent = flow { + val component = if (!isRelease) { + SettingIi { + val navigationController by rememberUpdatedState(LocalNavigationController.current) + SettingLaunchYubiKey( + onClick = { + val route = registerRouteResultReceiver(AppPickerRoute) { result -> + if (result is AppPickerResult.Confirm) { + val model = ToastMessage( + title = result.uri, + text = UUID.randomUUID().toString(), + ) + showMessage.copy(model) + } + } + val intent = NavigationIntent.NavigateToRoute( + route = route, + ) + navigationController.queue(intent) + }, + ) + } + } else { + null + } + emit(component) +} + +@Composable +private fun SettingLaunchYubiKey( + onClick: (() -> Unit), +) { + VaultViewButtonItem( + leading = icon(Icons.Outlined.Apps), + text = "App Picker", + onClick = onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingLaunchYubiKey.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingLaunchYubiKey.kt new file mode 100644 index 00000000..6d224262 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingLaunchYubiKey.kt @@ -0,0 +1,50 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Key +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import com.artemchep.keyguard.feature.home.vault.component.VaultViewButtonItem +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.yubikey.YubiRoute +import com.artemchep.keyguard.platform.util.isRelease +import com.artemchep.keyguard.ui.icons.icon +import kotlinx.coroutines.flow.flow +import org.kodein.di.DirectDI + +fun settingLaunchYubiKey( + directDI: DirectDI, +) = settingLaunchYubiKey() + +fun settingLaunchYubiKey(): SettingComponent = flow { + val component = if (!isRelease) { + SettingIi { + val navigationController by rememberUpdatedState(LocalNavigationController.current) + SettingLaunchYubiKey( + onClick = { + val intent = NavigationIntent.NavigateToRoute( + route = YubiRoute, + ) + navigationController.queue(intent) + }, + ) + } + } else { + null + } + emit(component) +} + +@Composable +private fun SettingLaunchYubiKey( + onClick: (() -> Unit), +) { + VaultViewButtonItem( + leading = icon(Icons.Outlined.Key), + text = "YubiKey", + onClick = onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingLocalization.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingLocalization.kt new file mode 100644 index 00000000..3d101101 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingLocalization.kt @@ -0,0 +1,66 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Translate +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.KeyguardWebsite +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.DirectDI + +fun settingLocalizationProvider( + directDI: DirectDI, +): SettingComponent = settingLocalizationProvider() + +fun settingLocalizationProvider(): SettingComponent = kotlin.run { + val item = SettingIi( + search = SettingIi.Search( + group = "about", + tokens = listOf( + "localization", + "language", + "translate", + "crowdin", + ), + ), + ) { + val navigationController by rememberUpdatedState(LocalNavigationController.current) + SettingLocalization( + onClick = { + val intent = NavigationIntent.NavigateToBrowser( + url = "https://crowdin.com/project/keyguard", + ) + navigationController.queue(intent) + }, + ) + } + flowOf(item) +} + +@Composable +private fun SettingLocalization( + onClick: (() -> Unit)?, +) { + FlatItem( + leading = icon(Icons.Outlined.Translate, Icons.Outlined.KeyguardWebsite), + trailing = { + ChevronIcon() + }, + title = { + Text( + text = stringResource(Res.strings.pref_item_crowdin_title), + ) + }, + onClick = onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingMarkdown.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingMarkdown.kt new file mode 100644 index 00000000..8bae8aa9 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingMarkdown.kt @@ -0,0 +1,120 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.padding +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.TextFormat +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.GetMarkdown +import com.artemchep.keyguard.common.usecase.PutMarkdown +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemLayout +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingMarkdownProvider( + directDI: DirectDI, +) = settingMarkdownProvider( + getMarkdown = directDI.instance(), + putMarkdown = directDI.instance(), + windowCoroutineScope = directDI.instance(), +) + +fun settingMarkdownProvider( + getMarkdown: GetMarkdown, + putMarkdown: PutMarkdown, + windowCoroutineScope: WindowCoroutineScope, +): SettingComponent = getMarkdown().map { markdown -> + val onCheckedChange = { shouldMarkdown: Boolean -> + putMarkdown(shouldMarkdown) + .launchIn(windowCoroutineScope) + Unit + } + + SettingIi( + search = SettingIi.Search( + group = "ui", + tokens = listOf( + "markdown", + "format", + "note", + ), + ), + ) { + val navigationController by rememberUpdatedState(LocalNavigationController.current) + SettingMarkdown( + checked = markdown, + onCheckedChange = onCheckedChange, + onLearnMore = { + val intent = NavigationIntent.NavigateToBrowser( + url = "https://www.markdownguide.org/basic-syntax/", + ) + navigationController.queue(intent) + }, + ) + } +} + +@Composable +private fun SettingMarkdown( + checked: Boolean, + onCheckedChange: ((Boolean) -> Unit)?, + onLearnMore: (() -> Unit)?, +) { + Column { + FlatItemLayout( + leading = icon(Icons.Outlined.TextFormat), + trailing = { + Switch( + checked = checked, + enabled = onCheckedChange != null, + onCheckedChange = onCheckedChange, + ) + }, + content = { + FlatItemTextContent( + title = { + Text( + text = stringResource(Res.strings.pref_item_markdown_title), + ) + }, + text = { + Text( + text = stringResource(Res.strings.pref_item_markdown_text), + ) + }, + ) + }, + onClick = onCheckedChange?.partially1(!checked), + ) + TextButton( + modifier = Modifier + .padding(horizontal = 46.dp), + enabled = onLearnMore != null, + onClick = { + onLearnMore?.invoke() + }, + ) { + Text( + text = stringResource(Res.strings.learn_more), + ) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingMasterPassword.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingMasterPassword.kt new file mode 100644 index 00000000..c1706ce4 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingMasterPassword.kt @@ -0,0 +1,66 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Password +import androidx.compose.material.icons.outlined.Refresh +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import com.artemchep.keyguard.feature.changepassword.ChangePasswordRoute +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.DirectDI + +fun settingMasterPasswordProvider( + directDI: DirectDI, +) = settingMasterPasswordProvider() + +fun settingMasterPasswordProvider(): SettingComponent = kotlin.run { + val item = SettingIi( + search = SettingIi.Search( + group = "password", + tokens = listOf( + "app", + "master", + "password", + ), + ), + ) { + val navigationController by rememberUpdatedState(LocalNavigationController.current) + SettingMasterPassword( + onClick = { + val intent = NavigationIntent.NavigateToRoute( + route = ChangePasswordRoute, + ) + navigationController.queue(intent) + }, + ) + } + flowOf(item) +} + +@Composable +private fun SettingMasterPassword( + onClick: (() -> Unit)?, +) { + FlatItem( + leading = icon(Icons.Outlined.Password, Icons.Outlined.Refresh), + trailing = { + ChevronIcon() + }, + title = { + Text( + text = stringResource(Res.strings.pref_item_change_app_password_title), + ) + }, + onClick = onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingNavAnimation.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingNavAnimation.kt new file mode 100644 index 00000000..56b30610 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingNavAnimation.kt @@ -0,0 +1,96 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Animation +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.GetNavAnimation +import com.artemchep.keyguard.common.usecase.GetNavAnimationVariants +import com.artemchep.keyguard.common.usecase.PutNavAnimation +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.feature.localization.textResource +import com.artemchep.keyguard.platform.LeContext +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatDropdown +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.combine +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingNavAnimationProvider( + directDI: DirectDI, +) = settingNavAnimationProvider( + getNavAnimation = directDI.instance(), + getNavAnimationVariants = directDI.instance(), + putNavAnimation = directDI.instance(), + windowCoroutineScope = directDI.instance(), + context = directDI.instance(), +) + +fun settingNavAnimationProvider( + getNavAnimation: GetNavAnimation, + getNavAnimationVariants: GetNavAnimationVariants, + putNavAnimation: PutNavAnimation, + windowCoroutineScope: WindowCoroutineScope, + context: LeContext, +): SettingComponent = combine( + getNavAnimation(), + getNavAnimationVariants(), +) { navAnimation, variants -> + val text = textResource(navAnimation.title, context) + val dropdown = variants + .map { navAnimationVariant -> + val title = textResource(navAnimationVariant.title, context) + FlatItemAction( + title = title, + onClick = { + putNavAnimation(navAnimationVariant) + .launchIn(windowCoroutineScope) + }, + ) + } + + SettingIi( + search = SettingIi.Search( + group = "nav_animation", + tokens = listOf( + "navigation", + "animation", + "crossfade", + ), + ), + ) { + SettingNavAnimation( + text = text, + dropdown = dropdown, + ) + } +} + +@Composable +private fun SettingNavAnimation( + text: String, + dropdown: List, +) { + FlatDropdown( + leading = icon(Icons.Outlined.Animation), + content = { + FlatItemTextContent( + title = { + Text( + text = stringResource(Res.strings.pref_item_nav_animation_title), + ) + }, + text = { + Text(text) + }, + ) + }, + dropdown = dropdown, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingNavLabel.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingNavLabel.kt new file mode 100644 index 00000000..4cb0881c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingNavLabel.kt @@ -0,0 +1,78 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Label +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.GetNavLabel +import com.artemchep.keyguard.common.usecase.PutNavLabel +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingNavLabelProvider( + directDI: DirectDI, +) = settingNavLabelProvider( + getNavLabel = directDI.instance(), + putNavLabel = directDI.instance(), + windowCoroutineScope = directDI.instance(), +) + +fun settingNavLabelProvider( + getNavLabel: GetNavLabel, + putNavLabel: PutNavLabel, + windowCoroutineScope: WindowCoroutineScope, +): SettingComponent = getNavLabel().map { navLabel -> + val onCheckedChange = { shouldNavLabel: Boolean -> + putNavLabel(shouldNavLabel) + .launchIn(windowCoroutineScope) + Unit + } + + SettingIi( + search = SettingIi.Search( + group = "ui", + tokens = listOf( + "navigation", + "label", + ), + ), + ) { + SettingNavLabel( + checked = navLabel, + onCheckedChange = onCheckedChange, + ) + } +} + +@Composable +private fun SettingNavLabel( + checked: Boolean, + onCheckedChange: ((Boolean) -> Unit)?, +) { + FlatItem( + leading = icon(Icons.Outlined.Label), + trailing = { + Switch( + checked = checked, + enabled = onCheckedChange != null, + onCheckedChange = onCheckedChange, + ) + }, + title = { + Text( + text = stringResource(Res.strings.pref_item_nav_label_title), + ) + }, + onClick = onCheckedChange?.partially1(!checked), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingOpenSourceLicenses.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingOpenSourceLicenses.kt new file mode 100644 index 00000000..c4f3fd05 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingOpenSourceLicenses.kt @@ -0,0 +1,64 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.TextSnippet +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import com.artemchep.keyguard.feature.license.LicenseRoute +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.DirectDI + +fun settingOpenSourceLicensesProvider( + directDI: DirectDI, +): SettingComponent = settingOpenSourceLicensesProvider() + +fun settingOpenSourceLicensesProvider(): SettingComponent = kotlin.run { + val item = SettingIi( + search = SettingIi.Search( + group = "about", + tokens = listOf( + "code", + "license", + "open", + "source", + ), + ), + ) { + val navigationController by rememberUpdatedState(LocalNavigationController.current) + SettingOpenSourceLicenses( + onClick = { + val intent = NavigationIntent.NavigateToRoute(LicenseRoute) + navigationController.queue(intent) + }, + ) + } + flowOf(item) +} + +@Composable +private fun SettingOpenSourceLicenses( + onClick: (() -> Unit)?, +) { + FlatItem( + leading = icon(Icons.Outlined.TextSnippet), + trailing = { + ChevronIcon() + }, + title = { + Text( + text = stringResource(Res.strings.pref_item_open_source_licenses_title), + ) + }, + onClick = onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermission.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermission.kt new file mode 100644 index 00000000..cdff2f33 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermission.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import org.kodein.di.DirectDI + +expect fun settingPermissionDetailsProvider( + directDI: DirectDI, +): SettingComponent diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermissionCamera.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermissionCamera.kt new file mode 100644 index 00000000..981c30a7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermissionCamera.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import org.kodein.di.DirectDI + +expect fun settingPermissionCameraProvider( + directDI: DirectDI, +): SettingComponent diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermissionOther.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermissionOther.kt new file mode 100644 index 00000000..a6becba9 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermissionOther.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import org.kodein.di.DirectDI + +expect fun settingPermissionOtherProvider( + directDI: DirectDI, +): SettingComponent diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermissionPostNotifications.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermissionPostNotifications.kt new file mode 100644 index 00000000..694985ab --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermissionPostNotifications.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import org.kodein.di.DirectDI + +expect fun settingPermissionPostNotificationsProvider( + directDI: DirectDI, +): SettingComponent diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPrivacyPolicy.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPrivacyPolicy.kt new file mode 100644 index 00000000..251e9138 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPrivacyPolicy.kt @@ -0,0 +1,64 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.PrivacyTip +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.KeyguardWebsite +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.DirectDI + +fun settingPrivacyPolicyProvider( + directDI: DirectDI, +): SettingComponent = settingPrivacyPolicyProvider() + +fun settingPrivacyPolicyProvider(): SettingComponent = kotlin.run { + val item = SettingIi( + search = SettingIi.Search( + group = "about", + tokens = listOf( + "privacy", + "policy", + ), + ), + ) { + val navigationController by rememberUpdatedState(LocalNavigationController.current) + SettingPrivacyPolicy( + onClick = { + val intent = NavigationIntent.NavigateToBrowser( + url = "https://gist.github.com/AChep/1fd4e019a4ad8f9647ba3b4694b5dc1c", + ) + navigationController.queue(intent) + }, + ) + } + flowOf(item) +} + +@Composable +private fun SettingPrivacyPolicy( + onClick: (() -> Unit)?, +) { + FlatItem( + leading = icon(Icons.Outlined.PrivacyTip, Icons.Outlined.KeyguardWebsite), + trailing = { + ChevronIcon() + }, + title = { + Text( + text = stringResource(Res.strings.pref_item_privacy_policy_title), + ) + }, + onClick = onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingRateApp.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingRateApp.kt new file mode 100644 index 00000000..c06f6efa --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingRateApp.kt @@ -0,0 +1,64 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.StarRate +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.DirectDI + +fun settingRateAppProvider( + directDI: DirectDI, +) = settingRateAppProvider() + +fun settingRateAppProvider(): SettingComponent = kotlin.run { + val item = SettingIi( + search = SettingIi.Search( + group = "about", + tokens = listOf( + "rate", + "play", + "google", + ), + ), + ) { + val navigationController by rememberUpdatedState(LocalNavigationController.current) + SettingRateAppItem( + onClick = { + val intent = NavigationIntent.NavigateToBrowser( + url = "https://play.google.com/store/apps/details?id=com.artemchep.keyguard", + ) + navigationController.queue(intent) + }, + ) + } + flowOf(item) +} + +@Composable +fun SettingRateAppItem( + onClick: (() -> Unit)?, +) { + FlatItem( + leading = icon(Icons.Outlined.StarRate), + trailing = { + ChevronIcon() + }, + title = { + Text( + text = stringResource(Res.strings.pref_item_rate_on_play_store_title), + ) + }, + onClick = onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingRequireMasterPassword.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingRequireMasterPassword.kt new file mode 100644 index 00000000..a69cc6cb --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingRequireMasterPassword.kt @@ -0,0 +1,179 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.height +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.model.BiometricStatus +import com.artemchep.keyguard.common.service.vault.FingerprintReadRepository +import com.artemchep.keyguard.common.usecase.BiometricStatusUseCase +import com.artemchep.keyguard.common.usecase.GetBiometricTimeout +import com.artemchep.keyguard.common.usecase.GetBiometricTimeoutVariants +import com.artemchep.keyguard.common.usecase.PutBiometricTimeout +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.feature.localization.textResource +import com.artemchep.keyguard.platform.LeContext +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatDropdown +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.theme.combineAlpha +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.time.Duration + +fun settingRequireMasterPasswordProvider( + directDI: DirectDI, +) = settingRequireMasterPasswordProvider( + fingerprintReadRepository = directDI.instance(), + biometricStatusUseCase = directDI.instance(), + getBiometricTimeout = directDI.instance(), + getBiometricTimeoutVariants = directDI.instance(), + putBiometricTimeout = directDI.instance(), + windowCoroutineScope = directDI.instance(), + context = directDI.instance(), +) + +fun settingRequireMasterPasswordProvider( + fingerprintReadRepository: FingerprintReadRepository, + biometricStatusUseCase: BiometricStatusUseCase, + getBiometricTimeout: GetBiometricTimeout, + getBiometricTimeoutVariants: GetBiometricTimeoutVariants, + putBiometricTimeout: PutBiometricTimeout, + windowCoroutineScope: WindowCoroutineScope, + context: LeContext, +): SettingComponent = biometricStatusUseCase() + .map { it is BiometricStatus.Available } + .distinctUntilChanged() + .flatMapLatest { hasBiometrics -> + if (hasBiometrics) { + ah( + fingerprintReadRepository = fingerprintReadRepository, + getBiometricTimeout = getBiometricTimeout, + getBiometricTimeoutVariants = getBiometricTimeoutVariants, + putBiometricTimeout = putBiometricTimeout, + windowCoroutineScope = windowCoroutineScope, + context = context, + ) + } else { + // hide option if the device does not have biometrics + flowOf(null) + } + } + +private fun ah( + fingerprintReadRepository: FingerprintReadRepository, + getBiometricTimeout: GetBiometricTimeout, + getBiometricTimeoutVariants: GetBiometricTimeoutVariants, + putBiometricTimeout: PutBiometricTimeout, + windowCoroutineScope: WindowCoroutineScope, + context: LeContext, +) = combine( + getBiometricTimeout(), + getBiometricTimeoutVariants() + .combine( + flow = fingerprintReadRepository.get() + .map { tokens -> + tokens?.biometric != null + }, + ) { variants, hasBiometricEnabled -> + variants.takeIf { hasBiometricEnabled }.orEmpty() + }, +) { timeout, variants -> + val text = getRequirePasswordDurationTitle(timeout, context) + val dropdown = variants + .map { duration -> + val title = getRequirePasswordDurationTitle(duration, context) + FlatItemAction( + title = title, + onClick = { + putBiometricTimeout(duration) + .launchIn(windowCoroutineScope) + }, + ) + } + + SettingIi( + search = SettingIi.Search( + group = "password", + tokens = listOf( + "master", + "password", + ), + ), + ) { + SettingRequireMasterPassword( + text = text, + dropdown = dropdown, + ) + } +} + +private fun getRequirePasswordDurationTitle(duration: Duration, context: LeContext) = + when (duration) { + Duration.ZERO -> textResource( + Res.strings.pref_item_require_app_password_immediately_text, + context, + ) + + Duration.INFINITE -> textResource( + Res.strings.pref_item_require_app_password_never_text, + context, + ) + + else -> duration.toString() + } + +@Composable +fun SettingRequireMasterPassword( + text: String, + dropdown: List, +) { + FlatDropdown( + content = { + SettingRequireMasterPasswordContent( + text = text, + ) + }, + dropdown = dropdown, + ) +} + +@Composable +private fun ColumnScope.SettingRequireMasterPasswordContent( + text: String, +) { + FlatItemTextContent( + title = { + Text( + text = stringResource(Res.strings.pref_item_require_app_password_title), + ) + }, + text = { + Text(text) + Spacer( + modifier = Modifier + .height(8.dp), + ) + Text( + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + style = MaterialTheme.typography.bodySmall, + text = stringResource(Res.strings.pref_item_require_app_password_note), + ) + }, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingRotateDeviceId.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingRotateDeviceId.kt new file mode 100644 index 00000000..fddfbd7b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingRotateDeviceId.kt @@ -0,0 +1,66 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Key +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.RotateDeviceIdUseCase +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.platform.util.isRelease +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.icon +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.flow +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingRotateDeviceId( + directDI: DirectDI, +) = settingRotateDeviceId( + rotateDeviceIdUseCase = directDI.instance(), + windowCoroutineScope = directDI.instance(), +) + +fun settingRotateDeviceId( + rotateDeviceIdUseCase: RotateDeviceIdUseCase, + windowCoroutineScope: WindowCoroutineScope, +): SettingComponent = flow { + val onClick = { + rotateDeviceIdUseCase() + .launchIn(windowCoroutineScope) + Unit + } + + val state = if (!isRelease) { + SettingIi { + SettingRotateDeviceId( + onClick = onClick, + ) + } + } else { + null + } + emit(state) + delay(1000L) + emit(state) + emit(state) +} + +@Composable +private fun SettingRotateDeviceId( + onClick: (() -> Unit)?, +) { + FlatItem( + leading = icon(Icons.Outlined.Key), + title = { + Text("Rotate device id") + }, + text = { + val msg = "Removes all added accounts & rotates the device identifier." + Text(msg) + }, + onClick = onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingScreenDelay.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingScreenDelay.kt new file mode 100644 index 00000000..64936b9c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingScreenDelay.kt @@ -0,0 +1,66 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.GetDebugScreenDelay +import com.artemchep.keyguard.common.usecase.PutDebugScreenDelay +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.platform.util.isRelease +import com.artemchep.keyguard.ui.FlatItem +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingScreenDelay( + directDI: DirectDI, +) = settingScreenDelay( + getDebugScreenDelay = directDI.instance(), + putDebugScreenDelay = directDI.instance(), + windowCoroutineScope = directDI.instance(), +) + +fun settingScreenDelay( + getDebugScreenDelay: GetDebugScreenDelay, + putDebugScreenDelay: PutDebugScreenDelay, + windowCoroutineScope: WindowCoroutineScope, +): SettingComponent = getDebugScreenDelay().map { screenDelay -> + val onCheckedChange = { shouldBeScreenDelay: Boolean -> + putDebugScreenDelay(shouldBeScreenDelay) + .launchIn(windowCoroutineScope) + Unit + } + + if (!isRelease) { + SettingIi { + SettingDebugScreenDelay( + checked = screenDelay, + onCheckedChange = onCheckedChange, + ) + } + } else { + null + } +} + +@Composable +private fun SettingDebugScreenDelay( + checked: Boolean, + onCheckedChange: ((Boolean) -> Unit)?, +) { + FlatItem( + trailing = { + Switch( + checked = checked, + enabled = onCheckedChange != null, + onCheckedChange = onCheckedChange, + ) + }, + title = { + Text("Delay screen loading") + }, + onClick = onCheckedChange?.partially1(!checked), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingScreenshots.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingScreenshots.kt new file mode 100644 index 00000000..f2d4ff18 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingScreenshots.kt @@ -0,0 +1,88 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Screenshot +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.GetAllowScreenshots +import com.artemchep.keyguard.common.usecase.PutAllowScreenshots +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingScreenshotsProvider( + directDI: DirectDI, +) = settingScreenshotsProvider( + getAllowScreenshots = directDI.instance(), + putAllowScreenshots = directDI.instance(), + windowCoroutineScope = directDI.instance(), +) + +fun settingScreenshotsProvider( + getAllowScreenshots: GetAllowScreenshots, + putAllowScreenshots: PutAllowScreenshots, + windowCoroutineScope: WindowCoroutineScope, +): SettingComponent = getAllowScreenshots().map { allowScreenshots -> + val onCheckedChange = { shouldConcealFields: Boolean -> + putAllowScreenshots(shouldConcealFields) + .launchIn(windowCoroutineScope) + Unit + } + + SettingIi( + search = SettingIi.Search( + group = "conceal", + tokens = listOf( + "screenshot", + "record", + "block", + "prevent", + ), + ), + ) { + SettingScreenshotsFields( + checked = allowScreenshots, + onCheckedChange = onCheckedChange, + ) + } +} + +@Composable +private fun SettingScreenshotsFields( + checked: Boolean, + onCheckedChange: ((Boolean) -> Unit)?, +) { + FlatItem( + leading = icon(Icons.Outlined.Screenshot), + trailing = { + Switch( + checked = checked, + enabled = onCheckedChange != null, + onCheckedChange = onCheckedChange, + ) + }, + title = { + Text( + text = stringResource(Res.strings.pref_item_allow_screenshots_title), + ) + }, + text = { + val text = if (checked) { + stringResource(Res.strings.pref_item_allow_screenshots_text_on) + } else { + stringResource(Res.strings.pref_item_allow_screenshots_text_off) + } + Text(text) + }, + onClick = onCheckedChange?.partially1(!checked), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingSection.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingSection.kt new file mode 100644 index 00000000..aa634586 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingSection.kt @@ -0,0 +1,39 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.padding +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.feature.home.settings.LocalSettingItemArgs +import com.artemchep.keyguard.feature.home.vault.component.Section +import com.artemchep.keyguard.ui.util.HorizontalDivider +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.DirectDI + +fun settingSectionProvider( + directDI: DirectDI, +) = settingSectionProvider() + +fun settingSectionProvider(): SettingComponent = kotlin.run { + val item = SettingIi { + val title = run { + val args = LocalSettingItemArgs.current as? SettingSectionArgs + args?.title + } + + if (title != null) { + Section( + text = title, + ) + } else { + HorizontalDivider( + modifier = Modifier + .padding(vertical = 4.dp), + ) + } + } + flowOf(item) +} + +data class SettingSectionArgs( + val title: String? = null, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingSelectLocale.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingSelectLocale.kt new file mode 100644 index 00000000..8aa613d1 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingSelectLocale.kt @@ -0,0 +1,155 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.padding +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Language +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.GetLocale +import com.artemchep.keyguard.common.usecase.GetLocaleVariants +import com.artemchep.keyguard.common.usecase.PutLocale +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.feature.localization.textResource +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.platform.LeContext +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatDropdown +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.combine +import org.kodein.di.DirectDI +import org.kodein.di.instance +import java.util.Locale + +fun settingSelectLocaleProvider( + directDI: DirectDI, +) = settingSelectLocaleProvider( + getLocale = directDI.instance(), + getLocaleVariants = directDI.instance(), + putLocale = directDI.instance(), + windowCoroutineScope = directDI.instance(), + context = directDI.instance(), +) + +fun settingSelectLocaleProvider( + getLocale: GetLocale, + getLocaleVariants: GetLocaleVariants, + putLocale: PutLocale, + windowCoroutineScope: WindowCoroutineScope, + context: LeContext, +): SettingComponent = combine( + getLocale(), + getLocaleVariants(), +) { locale, variants -> + val text = getLocaleTitle(locale, context) + val dropdown = variants + .map { localeVariant -> + val title = getLocaleTitle(localeVariant, context) + LocaleItem( + locale = localeVariant, + title = title, + ) + } + .sortedWith( + compareBy( + { it.locale != null }, + { it.title }, + ), + ) + .map { item -> + FlatItemAction( + // leading = if (item.locale != null) null else icon(Icons.Outlined.AutoAwesome), + title = item.title, + onClick = { + putLocale(item.locale) + .launchIn(windowCoroutineScope) + }, + ) + } + + SettingIi( + search = SettingIi.Search( + group = "locale", + tokens = listOf( + "locale", + "language", + "translate", + ), + ), + ) { + val navigationController by rememberUpdatedState(LocalNavigationController.current) + SettingLocale( + text = text, + dropdown = dropdown, + onHelpTranslate = { + val intent = NavigationIntent.NavigateToBrowser( + url = "https://crowdin.com/project/keyguard", + ) + navigationController.queue(intent) + }, + ) + } +} + +private data class LocaleItem( + val locale: String?, + val title: String, +) + +private fun getLocaleTitle(locale: String?, context: LeContext) = locale + ?.let { + Locale.forLanguageTag(it).let { locale -> + locale.getDisplayName(locale) + .capitalize(locale) + } + } + ?: textResource(Res.strings.follow_system_settings, context) + +@Composable +private fun SettingLocale( + text: String, + dropdown: List, + onHelpTranslate: (() -> Unit)? = null, +) { + Column { + FlatDropdown( + leading = icon(Icons.Outlined.Language), + content = { + FlatItemTextContent( + title = { + Text( + text = stringResource(Res.strings.pref_item_locale_title), + ) + }, + text = { + Text(text) + }, + ) + }, + dropdown = dropdown, + ) + TextButton( + modifier = Modifier + .padding(horizontal = 46.dp), + enabled = onHelpTranslate != null, + onClick = { + onHelpTranslate?.invoke() + }, + ) { + Text( + text = stringResource(Res.strings.pref_item_locale_help_translation_button), + ) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingSubscriptions.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingSubscriptions.kt new file mode 100644 index 00000000..24632838 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingSubscriptions.kt @@ -0,0 +1,363 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.animateColorAsState +import androidx.compose.foundation.background +import androidx.compose.foundation.horizontalScroll +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.widthIn +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Star +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.contentColorFor +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.Product +import com.artemchep.keyguard.common.model.Subscription +import com.artemchep.keyguard.common.model.fold +import com.artemchep.keyguard.common.usecase.GetProducts +import com.artemchep.keyguard.common.usecase.GetSubscriptions +import com.artemchep.keyguard.feature.home.vault.component.Section +import com.artemchep.keyguard.feature.onboarding.OnboardingCard +import com.artemchep.keyguard.feature.onboarding.onboardingItemsPremium +import com.artemchep.keyguard.platform.LocalLeContext +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.Ah +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +import com.artemchep.keyguard.ui.FlatItemLayout +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.FlatSimpleNote +import com.artemchep.keyguard.ui.SimpleNote +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.shimmer.shimmer +import com.artemchep.keyguard.ui.theme.Dimens +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onStart +import org.kodein.di.DirectDI +import org.kodein.di.instance + +private const val SubscriptionsCountDefault = 2 +private const val ProductsCountDefault = 1 + +fun settingSubscriptionsProvider( + directDI: DirectDI, +) = settingSubscriptionsProvider( + getSubscriptions = directDI.instance(), + getProducts = directDI.instance(), +) + +fun settingSubscriptionsProvider( + getSubscriptions: GetSubscriptions, + getProducts: GetProducts, +): SettingComponent = combine( + getSubscriptions() + .loadable(), + getProducts() + .loadable(), +) { loadableSubscriptions, loadableProducts -> + SettingIi( + search = SettingIi.Search( + group = "subscription", + tokens = listOf( + "subscription", + "premium", + ), + ), + ) { + SettingSubscriptions( + loadableSubscriptions = loadableSubscriptions, + loadableProducts = loadableProducts, + ) + } +} + +fun Flow.loadable(): Flow> = this + .map { + val state: Loadable = Loadable.Ok(it) + state + } + .onStart { + val initialState = Loadable.Loading + emit(initialState) + } + +@Composable +private fun SettingSubscriptions( + loadableSubscriptions: Loadable?>, + loadableProducts: Loadable?>, +) { + Column( + modifier = Modifier + .fillMaxWidth(), + ) { + Text( + stringResource(Res.strings.pref_item_premium_membership_title), + style = MaterialTheme.typography.bodyLarge, + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + ) + Text( + stringResource(Res.strings.pref_item_premium_membership_text), + style = MaterialTheme.typography.bodyMedium, + modifier = Modifier + .padding(top = 4.dp) + .padding(horizontal = Dimens.horizontalPadding), + ) + Spacer(Modifier.height(8.dp)) + Row( + modifier = Modifier + .padding(top = 8.dp, bottom = 16.dp) + .horizontalScroll(rememberScrollState()) + .padding(start = 8.dp, end = 8.dp), + horizontalArrangement = Arrangement.spacedBy(8.dp), + ) { + onboardingItemsPremium.forEach { item -> + OnboardingCard( + modifier = Modifier + .widthIn(max = 156.dp), + title = stringResource(item.title), + text = stringResource(item.text), + imageVector = item.icon, + ) + } + } + Section(text = stringResource(Res.strings.pref_item_premium_membership_section_subscriptions_title)) + loadableSubscriptions.fold( + ifLoading = { + repeat(SubscriptionsCountDefault) { + SettingSubscriptionSkeletonItem() + } + }, + ifOk = { subscriptions -> + if (subscriptions == null) { + FlatSimpleNote( + text = stringResource(Res.strings.pref_item_premium_membership_failed_to_load_subscriptions), + type = SimpleNote.Type.WARNING, + ) + return@fold + } + subscriptions.forEach { subscription -> + SettingSubscriptionItem( + subscription = subscription, + ) + } + }, + ) + Section(text = stringResource(Res.strings.pref_item_premium_membership_section_products_title)) + loadableProducts.fold( + ifLoading = { + repeat(ProductsCountDefault) { + SettingSubscriptionSkeletonItem() + } + }, + ifOk = { products -> + if (products == null) { + FlatSimpleNote( + text = stringResource(Res.strings.pref_item_premium_membership_failed_to_load_products), + type = SimpleNote.Type.WARNING, + ) + return@fold + } + products.forEach { product -> + SettingProductItem( + product = product, + ) + } + }, + ) + } +} + +@Composable +private fun SettingSubscriptionSkeletonItem() { + val contentColor = + LocalContentColor.current.copy(alpha = DisabledEmphasisAlpha) + FlatItemLayout( + modifier = Modifier + .shimmer(), + leading = { + Box( + modifier = Modifier + .size(24.dp) + .background(contentColor, CircleShape), + ) + }, + content = { + Box( + Modifier + .height(18.dp) + .fillMaxWidth(0.45f) + .clip(MaterialTheme.shapes.medium) + .background(contentColor), + ) + Box( + Modifier + .padding(top = 4.dp) + .height(15.dp) + .fillMaxWidth(0.35f) + .clip(MaterialTheme.shapes.medium) + .background(contentColor.copy(alpha = 0.2f)), + ) + }, + ) +} + +@Composable +private fun SettingSubscriptionItem( + subscription: Subscription, +) { + val context by rememberUpdatedState(LocalLeContext) + FlatItemLayout( + leading = { + val backgroundColor = MaterialTheme.colorScheme.secondaryContainer + Box( + modifier = Modifier + .size(24.dp) + .background(backgroundColor, CircleShape) + .padding(4.dp), + ) { + val targetContentColor = kotlin.run { + val active = subscription.status is Subscription.Status.Active + if (active) { + MaterialTheme.colorScheme.primary + } else { + contentColorFor(backgroundColor) + } + } + val contentColor by animateColorAsState(targetValue = targetContentColor) + Icon( + Icons.Outlined.Star, + contentDescription = null, + tint = contentColor, + ) + } + }, + elevation = 2.dp, + trailing = { + ChevronIcon() + }, + content = { + FlatItemTextContent( + title = { + Text(subscription.price) + }, + text = { + Text(subscription.title) + }, + ) + + val statusOrNull = subscription.status as? Subscription.Status.Active + ExpandedIfNotEmpty(statusOrNull) { status -> + Row( + modifier = Modifier + .padding(top = 4.dp), + ) { + Ah( + score = 1f, + text = stringResource(Res.strings.pref_item_premium_status_active), + ) + + val isCancelled = !status.willRenew + AnimatedVisibility( + modifier = Modifier + .padding(start = 4.dp), + visible = isCancelled, + ) { + Ah( + score = 0f, + text = stringResource(Res.strings.pref_item_premium_status_will_not_renew), + ) + } + } + } + }, + onClick = { + subscription.purchase(context) + }, + ) +} + +@Composable +private fun SettingProductItem( + product: Product, +) { + val context by rememberUpdatedState(LocalLeContext) + FlatItemLayout( + leading = { + val backgroundColor = MaterialTheme.colorScheme.secondaryContainer + Box( + modifier = Modifier + .size(24.dp) + .background(backgroundColor, CircleShape) + .padding(4.dp), + ) { + val targetContentColor = kotlin.run { + val active = product.status is Product.Status.Active + if (active) { + MaterialTheme.colorScheme.primary + } else { + contentColorFor(backgroundColor) + } + } + val contentColor by animateColorAsState(targetValue = targetContentColor) + Icon( + Icons.Outlined.Star, + contentDescription = null, + tint = contentColor, + ) + } + }, + elevation = 2.dp, + trailing = { + ChevronIcon() + }, + content = { + FlatItemTextContent( + title = { + Text(product.price) + }, + text = { + Text(product.title) + }, + ) + + val statusOrNull = product.status as? Product.Status.Active + ExpandedIfNotEmpty(statusOrNull) { + Row( + modifier = Modifier + .padding(top = 4.dp), + ) { + Ah( + score = 1f, + text = stringResource(Res.strings.pref_item_premium_status_active), + ) + } + } + }, + onClick = { + product.purchase(context) + }, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingSubscriptionsDebug.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingSubscriptionsDebug.kt new file mode 100644 index 00000000..f348d0fb --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingSubscriptionsDebug.kt @@ -0,0 +1,70 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.GetDebugPremium +import com.artemchep.keyguard.common.usecase.PutDebugPremium +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.platform.util.isRelease +import com.artemchep.keyguard.ui.FlatItem +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingSubscriptionsDebug( + directDI: DirectDI, +) = settingSubscriptionsDebug( + getDebugPremium = directDI.instance(), + putDebugPremium = directDI.instance(), + windowCoroutineScope = directDI.instance(), +) + +fun settingSubscriptionsDebug( + getDebugPremium: GetDebugPremium, + putDebugPremium: PutDebugPremium, + windowCoroutineScope: WindowCoroutineScope, +): SettingComponent = getDebugPremium().map { premium -> + val onCheckedChange = { shouldBePremium: Boolean -> + putDebugPremium(shouldBePremium) + .launchIn(windowCoroutineScope) + Unit + } + + if (!isRelease) { + SettingIi { + SettingDebugPremium( + checked = premium, + onCheckedChange = onCheckedChange, + ) + } + } else { + null + } +} + +@Composable +private fun SettingDebugPremium( + checked: Boolean, + onCheckedChange: ((Boolean) -> Unit)?, +) { + FlatItem( + trailing = { + Switch( + checked = checked, + enabled = onCheckedChange != null, + onCheckedChange = onCheckedChange, + ) + }, + title = { + Text("Force premium status") + }, + text = { + val msg = "Enables premium features in test builds." + Text(msg) + }, + onClick = onCheckedChange?.partially1(!checked), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingSubscriptionsPlayStore.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingSubscriptionsPlayStore.kt new file mode 100644 index 00000000..f8548315 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingSubscriptionsPlayStore.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import org.kodein.di.DirectDI + +expect fun settingSubscriptionsPlayStoreProvider( + directDI: DirectDI, +): SettingComponent diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingThemeUseAmoledDark.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingThemeUseAmoledDark.kt new file mode 100644 index 00000000..c4369cc3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingThemeUseAmoledDark.kt @@ -0,0 +1,82 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.GetThemeUseAmoledDark +import com.artemchep.keyguard.common.usecase.PutThemeUseAmoledDark +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.Stub +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingThemeUseAmoledDarkProvider( + directDI: DirectDI, +) = settingThemeUseAmoledDarkProvider( + getThemeUseAmoledDark = directDI.instance(), + putThemeUseAmoledDark = directDI.instance(), + windowCoroutineScope = directDI.instance(), +) + +fun settingThemeUseAmoledDarkProvider( + getThemeUseAmoledDark: GetThemeUseAmoledDark, + putThemeUseAmoledDark: PutThemeUseAmoledDark, + windowCoroutineScope: WindowCoroutineScope, +): SettingComponent = getThemeUseAmoledDark().map { useAmoledDark -> + val onCheckedChange = { shouldUseAmoledDark: Boolean -> + putThemeUseAmoledDark(shouldUseAmoledDark) + .launchIn(windowCoroutineScope) + Unit + } + + SettingIi( + search = SettingIi.Search( + group = "color_scheme", + tokens = listOf( + "schema", + "color", + "theme", + "dark", + "light", + "black", + ), + ), + ) { + SettingThemeUseAmoledDark( + checked = useAmoledDark, + onCheckedChange = onCheckedChange, + ) + } +} + +@Composable +private fun SettingThemeUseAmoledDark( + checked: Boolean, + onCheckedChange: ((Boolean) -> Unit)?, +) { + FlatItem( + leading = icon(Icons.Stub), + trailing = { + Switch( + checked = checked, + enabled = onCheckedChange != null, + onCheckedChange = onCheckedChange, + ) + }, + title = { + Text( + text = stringResource(Res.strings.pref_item_color_scheme_amoled_dark_title), + ) + }, + onClick = onCheckedChange?.partially1(!checked), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingTwoPanelLayoutLandscape.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingTwoPanelLayoutLandscape.kt new file mode 100644 index 00000000..946a9ad6 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingTwoPanelLayoutLandscape.kt @@ -0,0 +1,80 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Tablet +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.GetAllowTwoPanelLayoutInLandscape +import com.artemchep.keyguard.common.usecase.PutAllowTwoPanelLayoutInLandscape +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingTwoPanelLayoutLandscapeProvider( + directDI: DirectDI, +) = settingTwoPanelLayoutLandscapeProvider( + getAllowTwoPanelLayoutInLandscape = directDI.instance(), + putAllowTwoPanelLayoutInLandscape = directDI.instance(), + windowCoroutineScope = directDI.instance(), +) + +fun settingTwoPanelLayoutLandscapeProvider( + getAllowTwoPanelLayoutInLandscape: GetAllowTwoPanelLayoutInLandscape, + putAllowTwoPanelLayoutInLandscape: PutAllowTwoPanelLayoutInLandscape, + windowCoroutineScope: WindowCoroutineScope, +): SettingComponent = getAllowTwoPanelLayoutInLandscape().map { allow -> + val onCheckedChange = { shouldAllow: Boolean -> + putAllowTwoPanelLayoutInLandscape(shouldAllow) + .launchIn(windowCoroutineScope) + Unit + } + + SettingIi( + search = SettingIi.Search( + group = "layout", + tokens = listOf( + "layout", + "two", + "panel", + "landscape", + ), + ), + ) { + SettingTwoPanelLayoutLandscape( + checked = allow, + onCheckedChange = onCheckedChange, + ) + } +} + +@Composable +private fun SettingTwoPanelLayoutLandscape( + checked: Boolean, + onCheckedChange: ((Boolean) -> Unit)?, +) { + FlatItem( + leading = icon(Icons.Outlined.Tablet), + trailing = { + Switch( + checked = checked, + enabled = onCheckedChange != null, + onCheckedChange = onCheckedChange, + ) + }, + title = { + Text( + text = stringResource(Res.strings.pref_item_allow_two_panel_layout_in_landscape_title), + ) + }, + onClick = onCheckedChange?.partially1(!checked), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingTwoPanelLayoutPortrait.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingTwoPanelLayoutPortrait.kt new file mode 100644 index 00000000..c1a5d04d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingTwoPanelLayoutPortrait.kt @@ -0,0 +1,80 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.PhoneAndroid +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.GetAllowTwoPanelLayoutInPortrait +import com.artemchep.keyguard.common.usecase.PutAllowTwoPanelLayoutInPortrait +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingTwoPanelLayoutPortraitProvider( + directDI: DirectDI, +) = settingTwoPanelLayoutPortraitProvider( + getAllowTwoPanelLayoutInPortrait = directDI.instance(), + putAllowTwoPanelLayoutInPortrait = directDI.instance(), + windowCoroutineScope = directDI.instance(), +) + +fun settingTwoPanelLayoutPortraitProvider( + getAllowTwoPanelLayoutInPortrait: GetAllowTwoPanelLayoutInPortrait, + putAllowTwoPanelLayoutInPortrait: PutAllowTwoPanelLayoutInPortrait, + windowCoroutineScope: WindowCoroutineScope, +): SettingComponent = getAllowTwoPanelLayoutInPortrait().map { allow -> + val onCheckedChange = { shouldAllow: Boolean -> + putAllowTwoPanelLayoutInPortrait(shouldAllow) + .launchIn(windowCoroutineScope) + Unit + } + + SettingIi( + search = SettingIi.Search( + group = "layout", + tokens = listOf( + "layout", + "two", + "panel", + "portrait", + ), + ), + ) { + SettingTwoPanelLayoutPortrait( + checked = allow, + onCheckedChange = onCheckedChange, + ) + } +} + +@Composable +private fun SettingTwoPanelLayoutPortrait( + checked: Boolean, + onCheckedChange: ((Boolean) -> Unit)?, +) { + FlatItem( + leading = icon(Icons.Outlined.PhoneAndroid), + trailing = { + Switch( + checked = checked, + enabled = onCheckedChange != null, + onCheckedChange = onCheckedChange, + ) + }, + title = { + Text( + text = stringResource(Res.strings.pref_item_allow_two_panel_layout_in_portrait_title), + ) + }, + onClick = onCheckedChange?.partially1(!checked), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingUseExternalBrowser.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingUseExternalBrowser.kt new file mode 100644 index 00000000..9ea834d9 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingUseExternalBrowser.kt @@ -0,0 +1,86 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.OpenInBrowser +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.GetUseExternalBrowser +import com.artemchep.keyguard.common.usecase.PutUseExternalBrowser +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.platform.CurrentPlatform +import com.artemchep.keyguard.platform.Platform +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingUseExternalBrowserProvider( + directDI: DirectDI, +) = settingUseExternalBrowserProvider( + getUseExternalBrowser = directDI.instance(), + putUseExternalBrowser = directDI.instance(), + windowCoroutineScope = directDI.instance(), +) + +fun settingUseExternalBrowserProvider( + getUseExternalBrowser: GetUseExternalBrowser, + putUseExternalBrowser: PutUseExternalBrowser, + windowCoroutineScope: WindowCoroutineScope, +): SettingComponent = getUseExternalBrowser().map { useExtenalBrowser -> + val onCheckedChange = { shouldUseExternalBrowser: Boolean -> + putUseExternalBrowser(shouldUseExternalBrowser) + .launchIn(windowCoroutineScope) + Unit + } + + if (CurrentPlatform is Platform.Mobile) { + SettingIi( + search = SettingIi.Search( + group = "ux", + tokens = listOf( + "browser", + "links", + "chrome", + "tabs", + ), + ), + ) { + SettingUseExternalBrowser( + checked = useExtenalBrowser, + onCheckedChange = onCheckedChange, + ) + } + } else { + null + } +} + +@Composable +private fun SettingUseExternalBrowser( + checked: Boolean, + onCheckedChange: ((Boolean) -> Unit)?, +) { + FlatItem( + leading = icon(Icons.Outlined.OpenInBrowser), + trailing = { + Switch( + checked = checked, + enabled = onCheckedChange != null, + onCheckedChange = onCheckedChange, + ) + }, + title = { + Text( + text = stringResource(Res.strings.pref_item_open_links_in_external_browser_title), + ) + }, + onClick = onCheckedChange?.partially1(!checked), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingVaultLock.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingVaultLock.kt new file mode 100644 index 00000000..f6a055e8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingVaultLock.kt @@ -0,0 +1,57 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Lock +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.ClearVaultSession +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.feature.home.vault.component.VaultViewButtonItem +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingVaultLockProvider( + directDI: DirectDI, +) = settingVaultLockProvider( + clearVaultSession = directDI.instance(), + windowCoroutineScope = directDI.instance(), +) + +fun settingVaultLockProvider( + clearVaultSession: ClearVaultSession, + windowCoroutineScope: WindowCoroutineScope, +): SettingComponent = kotlin.run { + val item = SettingIi( + search = SettingIi.Search( + group = "lock", + tokens = listOf( + "vault", + "lock", + ), + ), + ) { + SettingVaultLock( + onClick = { + clearVaultSession() + .launchIn(windowCoroutineScope) + }, + ) + } + flowOf(item) +} + +@Composable +fun SettingVaultLock( + onClick: () -> Unit, +) { + VaultViewButtonItem( + leading = icon(Icons.Outlined.Lock), + text = stringResource(Res.strings.pref_item_lock_vault_title), + onClick = onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingVaultLockAfterReboot.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingVaultLockAfterReboot.kt new file mode 100644 index 00000000..4604eab9 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingVaultLockAfterReboot.kt @@ -0,0 +1,94 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.GetVaultLockAfterReboot +import com.artemchep.keyguard.common.usecase.GetVaultPersist +import com.artemchep.keyguard.common.usecase.PutVaultLockAfterReboot +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.Stub +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.combine +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingVaultLockAfterRebootProvider( + directDI: DirectDI, +) = settingVaultLockAfterRebootProvider( + getVaultPersist = directDI.instance(), + getVaultLockAfterReboot = directDI.instance(), + putVaultLockAfterReboot = directDI.instance(), + windowCoroutineScope = directDI.instance(), +) + +fun settingVaultLockAfterRebootProvider( + getVaultPersist: GetVaultPersist, + getVaultLockAfterReboot: GetVaultLockAfterReboot, + putVaultLockAfterReboot: PutVaultLockAfterReboot, + windowCoroutineScope: WindowCoroutineScope, +): SettingComponent = combine( + getVaultPersist(), + getVaultLockAfterReboot(), +) { persist, lockAfterReboot -> + val onCheckedChange = { shouldLockAfterReboot: Boolean -> + putVaultLockAfterReboot(shouldLockAfterReboot) + .launchIn(windowCoroutineScope) + Unit + } + + SettingIi( + search = SettingIi.Search( + group = "lock", + tokens = listOf( + "vault", + "lock", + "reboot", + ), + ), + ) { + // If the vault is not stored on a disk then it by + // definition cannot survive a reboot. + ExpandedIfNotEmpty( + valueOrNull = Unit.takeIf { persist }, + ) { + SettingLockAfterReboot( + checked = lockAfterReboot, + onCheckedChange = null, + ) + } + } +} + +@Composable +private fun SettingLockAfterReboot( + checked: Boolean, + onCheckedChange: ((Boolean) -> Unit)?, +) { + FlatItem( + leading = icon(Icons.Stub), + trailing = { + Switch( + checked = checked, + enabled = onCheckedChange != null, + onCheckedChange = onCheckedChange, + ) + }, + title = { + Text(stringResource(Res.strings.pref_item_lock_vault_after_reboot_title)) + }, + text = { + val text = stringResource(Res.strings.pref_item_lock_vault_after_reboot_text) + Text(text) + }, + onClick = onCheckedChange?.partially1(!checked), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingVaultLockAfterScreenOff.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingVaultLockAfterScreenOff.kt new file mode 100644 index 00000000..030c87a5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingVaultLockAfterScreenOff.kt @@ -0,0 +1,87 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.MobileOff +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.GetVaultLockAfterScreenOff +import com.artemchep.keyguard.common.usecase.GetVaultPersist +import com.artemchep.keyguard.common.usecase.PutVaultLockAfterScreenOff +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.combine +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingVaultLockAfterScreenOffProvider( + directDI: DirectDI, +) = settingVaultLockAfterScreenOffProvider( + getVaultPersist = directDI.instance(), + getVaultLockAfterScreenOff = directDI.instance(), + putVaultLockAfterScreenOff = directDI.instance(), + windowCoroutineScope = directDI.instance(), +) + +fun settingVaultLockAfterScreenOffProvider( + getVaultPersist: GetVaultPersist, + getVaultLockAfterScreenOff: GetVaultLockAfterScreenOff, + putVaultLockAfterScreenOff: PutVaultLockAfterScreenOff, + windowCoroutineScope: WindowCoroutineScope, +): SettingComponent = combine( + getVaultPersist(), + getVaultLockAfterScreenOff(), +) { persist, screenLock -> + val onCheckedChange = { shouldScreenLock: Boolean -> + putVaultLockAfterScreenOff(shouldScreenLock) + .launchIn(windowCoroutineScope) + Unit + } + + SettingIi( + search = SettingIi.Search( + group = "lock", + tokens = listOf( + "vault", + "lock", + "screen", + ), + ), + ) { + SettingLockAfterScreenOff( + checked = screenLock, + onCheckedChange = onCheckedChange.takeUnless { persist }, + ) + } +} + +@Composable +private fun SettingLockAfterScreenOff( + checked: Boolean, + onCheckedChange: ((Boolean) -> Unit)?, +) { + FlatItem( + leading = icon(Icons.Outlined.MobileOff), + trailing = { + Switch( + checked = checked, + enabled = onCheckedChange != null, + onCheckedChange = onCheckedChange, + ) + }, + title = { + Text(stringResource(Res.strings.pref_item_lock_vault_after_screen_off_title)) + }, + text = { + val text = stringResource(Res.strings.pref_item_lock_vault_after_screen_off_text) + Text(text) + }, + onClick = onCheckedChange?.partially1(!checked), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingVaultLockAfterTimeout.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingVaultLockAfterTimeout.kt new file mode 100644 index 00000000..fdeae938 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingVaultLockAfterTimeout.kt @@ -0,0 +1,109 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Timer +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.GetVaultLockAfterTimeout +import com.artemchep.keyguard.common.usecase.GetVaultLockAfterTimeoutVariants +import com.artemchep.keyguard.common.usecase.PutVaultLockAfterTimeout +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.feature.localization.textResource +import com.artemchep.keyguard.platform.LeContext +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatDropdown +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.combine +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.time.Duration + +fun settingVaultLockAfterTimeoutProvider( + directDI: DirectDI, +) = settingVaultLockAfterTimeoutProvider( + getVaultLockAfterTimeout = directDI.instance(), + getVaultLockAfterTimeoutVariants = directDI.instance(), + putVaultLockAfterTimeout = directDI.instance(), + windowCoroutineScope = directDI.instance(), + context = directDI.instance(), +) + +fun settingVaultLockAfterTimeoutProvider( + getVaultLockAfterTimeout: GetVaultLockAfterTimeout, + getVaultLockAfterTimeoutVariants: GetVaultLockAfterTimeoutVariants, + putVaultLockAfterTimeout: PutVaultLockAfterTimeout, + windowCoroutineScope: WindowCoroutineScope, + context: LeContext, +): SettingComponent = combine( + getVaultLockAfterTimeout(), + getVaultLockAfterTimeoutVariants(), +) { timeout, variants -> + val text = getLockAfterDurationTitle(timeout, context) + val dropdown = variants + .map { duration -> + val title = getLockAfterDurationTitle(duration, context) + FlatItemAction( + title = title, + onClick = { + putVaultLockAfterTimeout(duration) + .launchIn(windowCoroutineScope) + }, + ) + } + + SettingIi( + search = SettingIi.Search( + group = "lock", + tokens = listOf( + "vault", + "lock", + "timeout", + ), + ), + ) { + SettingLockAfterTimeout( + text = text, + dropdown = dropdown, + ) + } +} + +private fun getLockAfterDurationTitle(duration: Duration, context: LeContext) = when (duration) { + Duration.ZERO -> textResource( + Res.strings.pref_item_lock_vault_after_delay_immediately_text, + context, + ) + + Duration.INFINITE -> textResource( + Res.strings.pref_item_lock_vault_after_delay_never_text, + context, + ) + + else -> duration.toString() +} + +@Composable +fun SettingLockAfterTimeout( + text: String, + dropdown: List, +) { + FlatDropdown( + leading = icon(Icons.Outlined.Timer), + dropdown = dropdown, + content = { + FlatItemTextContent( + title = { + Text(stringResource(Res.strings.pref_item_lock_vault_after_delay_title)) + }, + text = { + Text(text) + }, + ) + }, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingVaultPersist.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingVaultPersist.kt new file mode 100644 index 00000000..241e85ba --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingVaultPersist.kt @@ -0,0 +1,121 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.animation.animateContentSize +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.padding +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Key +import androidx.compose.material.icons.outlined.Memory +import androidx.compose.material.icons.outlined.Storage +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.GetVaultPersist +import com.artemchep.keyguard.common.usecase.PutVaultPersist +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +import com.artemchep.keyguard.ui.FlatItemLayout +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.FlatSimpleNote +import com.artemchep.keyguard.ui.SimpleNote +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.theme.Dimens +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingVaultPersistProvider( + directDI: DirectDI, +) = settingVaultPersistProvider( + getVaultPersist = directDI.instance(), + putVaultPersist = directDI.instance(), + windowCoroutineScope = directDI.instance(), +) + +fun settingVaultPersistProvider( + getVaultPersist: GetVaultPersist, + putVaultPersist: PutVaultPersist, + windowCoroutineScope: WindowCoroutineScope, +): SettingComponent = getVaultPersist().map { persist -> + val onCheckedChange = { shouldPersist: Boolean -> + putVaultPersist(shouldPersist) + .launchIn(windowCoroutineScope) + Unit + } + + SettingIi( + search = SettingIi.Search( + group = "lock", + tokens = listOf( + "vault", + "lock", + "persist", + "disk", + ), + ), + ) { + SettingVaultPersist( + checked = persist, + onCheckedChange = onCheckedChange, + ) + } +} + +@Composable +private fun SettingVaultPersist( + checked: Boolean, + onCheckedChange: ((Boolean) -> Unit)?, +) { + val secondaryIcon = if (checked) Icons.Outlined.Memory else Icons.Outlined.Storage + FlatItemLayout( + leading = icon(Icons.Outlined.Key, secondaryIcon), + trailing = { + Switch( + checked = checked, + enabled = onCheckedChange != null, + onCheckedChange = onCheckedChange, + ) + }, + content = { + FlatItemTextContent( + title = { + Text(stringResource(Res.strings.pref_item_persist_vault_key_title)) + }, + text = { + val text = if (checked) { + stringResource(Res.strings.pref_item_persist_vault_key_text_on) + } else { + stringResource(Res.strings.pref_item_persist_vault_key_text_off) + } + Text( + modifier = Modifier + .animateContentSize(), + text = text, + ) + }, + ) + }, + onClick = onCheckedChange?.partially1(!checked), + ) + + ExpandedIfNotEmpty( + valueOrNull = Unit.takeIf { checked }, + ) { + FlatSimpleNote( + modifier = Modifier + .padding( + top = 8.dp, + bottom = 8.dp, + start = Dimens.horizontalPadding * 1 + 24.dp, + ), + type = SimpleNote.Type.WARNING, + text = stringResource(Res.strings.pref_item_persist_vault_key_note), + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingWebsiteIcons.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingWebsiteIcons.kt new file mode 100644 index 00000000..1198205d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingWebsiteIcons.kt @@ -0,0 +1,130 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.material.icons.Icons +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.GetWebsiteIcons +import com.artemchep.keyguard.common.usecase.PutWebsiteIcons +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemLayout +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.icons.KeyguardWebsite +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.theme.combineAlpha +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingWebsiteIconsProvider( + directDI: DirectDI, +) = settingWebsiteIconsProvider( + getWebsiteIcons = directDI.instance(), + putWebsiteIcons = directDI.instance(), + windowCoroutineScope = directDI.instance(), +) + +fun settingWebsiteIconsProvider( + getWebsiteIcons: GetWebsiteIcons, + putWebsiteIcons: PutWebsiteIcons, + windowCoroutineScope: WindowCoroutineScope, +): SettingComponent = getWebsiteIcons().map { websiteIcons -> + val onCheckedChange = { shouldWebsiteIcons: Boolean -> + putWebsiteIcons(shouldWebsiteIcons) + .launchIn(windowCoroutineScope) + Unit + } + + SettingIi( + search = SettingIi.Search( + group = "icon", + tokens = listOf( + "icon", + "website", + ), + ), + ) { + val navigationController by rememberUpdatedState(LocalNavigationController.current) + SettingMarkdown( + checked = websiteIcons, + onCheckedChange = onCheckedChange, + onLearnMore = { + val intent = NavigationIntent.NavigateToBrowser( + url = "https://bitwarden.com/help/website-icons/", + ) + navigationController.queue(intent) + }, + ) + } +} + +@Composable +private fun SettingMarkdown( + checked: Boolean, + onCheckedChange: ((Boolean) -> Unit)?, + onLearnMore: (() -> Unit)?, +) { + Column { + FlatItemLayout( + leading = icon(Icons.Outlined.KeyguardWebsite), + trailing = { + Switch( + checked = checked, + enabled = onCheckedChange != null, + onCheckedChange = onCheckedChange, + ) + }, + content = { + FlatItemTextContent( + title = { + Text( + text = stringResource(Res.strings.pref_item_load_website_icons_title), + ) + }, + ) + Spacer( + modifier = Modifier + .height(8.dp), + ) + Text( + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + style = MaterialTheme.typography.bodySmall, + text = stringResource(Res.strings.pref_item_load_website_icons_text), + ) + }, + onClick = onCheckedChange?.partially1(!checked), + ) + TextButton( + modifier = Modifier + .padding(horizontal = 46.dp), + enabled = onLearnMore != null, + onClick = { + onLearnMore?.invoke() + }, + ) { + Text( + text = stringResource(Res.strings.learn_more), + ) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingWriteAccess.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingWriteAccess.kt new file mode 100644 index 00000000..4206b7f3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingWriteAccess.kt @@ -0,0 +1,70 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.GetPurchased +import com.artemchep.keyguard.common.usecase.GetWriteAccess +import com.artemchep.keyguard.common.usecase.PutWriteAccess +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.ui.FlatItem +import kotlinx.coroutines.flow.combine +import org.kodein.di.DirectDI +import org.kodein.di.instance + +fun settingWriteAccessProvider( + directDI: DirectDI, +) = settingWriteAccessProvider( + getWriteAccess = directDI.instance(), + putWriteAccess = directDI.instance(), + getPurchased = directDI.instance(), + windowCoroutineScope = directDI.instance(), +) + +fun settingWriteAccessProvider( + getWriteAccess: GetWriteAccess, + putWriteAccess: PutWriteAccess, + getPurchased: GetPurchased, + windowCoroutineScope: WindowCoroutineScope, +): SettingComponent = combine( + getPurchased(), + getWriteAccess(), +) { purchased, writeAccess -> + val onCheckedChange = { shouldHaveWriteAccess: Boolean -> + putWriteAccess(shouldHaveWriteAccess) + .launchIn(windowCoroutineScope) + Unit + } + + SettingIi { + SettingWriteAccess( + checked = writeAccess, + onCheckedChange = onCheckedChange.takeIf { purchased }, + ) + } +} + +@Composable +private fun SettingWriteAccess( + checked: Boolean, + onCheckedChange: ((Boolean) -> Unit)?, +) { + FlatItem( + trailing = { + Switch( + checked = checked, + enabled = onCheckedChange != null, + onCheckedChange = onCheckedChange, + ) + }, + title = { + Text("Save edited changes") + }, + text = { + Text("May cause a partial data loss, be careful!") + }, + onClick = onCheckedChange?.partially1(!checked), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/debug/DebugSettingsRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/debug/DebugSettingsRoute.kt new file mode 100644 index 00000000..aff4f74d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/debug/DebugSettingsRoute.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.home.settings.debug + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.Route + +object DebugSettingsRoute : Route { + @Composable + override fun Content() { + DebugSettingsScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/debug/DebugSettingsScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/debug/DebugSettingsScreen.kt new file mode 100644 index 00000000..0299221c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/debug/DebugSettingsScreen.kt @@ -0,0 +1,43 @@ +package com.artemchep.keyguard.feature.home.settings.debug + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.home.settings.Setting +import com.artemchep.keyguard.feature.home.settings.SettingPaneContent +import com.artemchep.keyguard.feature.home.settings.SettingPaneItem +import com.artemchep.keyguard.res.Res +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun DebugSettingsScreen() { + SettingPaneContent( + title = stringResource(Res.strings.settings_dev_header_title), + items = listOf( + SettingPaneItem.Group( + key = "ui", + title = "UI", + list = listOf( + SettingPaneItem.Item(Setting.EMIT_MESSAGE), + SettingPaneItem.Item(Setting.CLEAR_CACHE), + SettingPaneItem.Item(Setting.LAUNCH_APP_PICKER), + SettingPaneItem.Item(Setting.LAUNCH_YUBIKEY), + SettingPaneItem.Item(Setting.CRASH), + SettingPaneItem.Item(Setting.SCREEN_DELAY), + ), + ), + SettingPaneItem.Group( + key = "billing", + title = "Billing", + list = listOf( + SettingPaneItem.Item(Setting.SUBSCRIPTIONS_DEBUG), + ), + ), + SettingPaneItem.Group( + key = "security", + title = "Security", + list = listOf( + SettingPaneItem.Item(Setting.ROTATE_DEVICE_ID), + ), + ), + ), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/display/UiSettingsRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/display/UiSettingsRoute.kt new file mode 100644 index 00000000..fb987d1c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/display/UiSettingsRoute.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.home.settings.display + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.Route + +object UiSettingsRoute : Route { + @Composable + override fun Content() { + UiSettingsScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/display/UiSettingsScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/display/UiSettingsScreen.kt new file mode 100644 index 00000000..fc69c5bc --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/display/UiSettingsScreen.kt @@ -0,0 +1,56 @@ +package com.artemchep.keyguard.feature.home.settings.display + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.home.settings.Setting +import com.artemchep.keyguard.feature.home.settings.SettingPaneContent +import com.artemchep.keyguard.feature.home.settings.SettingPaneItem +import com.artemchep.keyguard.res.Res +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun UiSettingsScreen() { + SettingPaneContent( + title = stringResource(Res.strings.settings_appearance_header_title), + items = listOf( + SettingPaneItem.Group( + key = "locale", + list = listOf( + SettingPaneItem.Item(Setting.LOCALE), + ), + ), + SettingPaneItem.Group( + key = "color_scheme", + list = listOf( + SettingPaneItem.Item(Setting.COLOR_SCHEME), + SettingPaneItem.Item(Setting.COLOR_SCHEME_AMOLED_DARK), + SettingPaneItem.Item(Setting.COLOR_ACCENT), + SettingPaneItem.Item(Setting.FONT), + SettingPaneItem.Item(Setting.MARKDOWN), + SettingPaneItem.Item(Setting.NAV_ANIMATION), + SettingPaneItem.Item(Setting.NAV_LABEL), + ), + ), + SettingPaneItem.Group( + key = "icons", + list = listOf( + SettingPaneItem.Item(Setting.APP_ICONS), + SettingPaneItem.Item(Setting.WEBSITE_ICONS), + ), + ), + SettingPaneItem.Group( + key = "experience", + list = listOf( + SettingPaneItem.Item(Setting.USE_EXTERNAL_BROWSER), + SettingPaneItem.Item(Setting.KEEP_SCREEN_ON), + ), + ), + SettingPaneItem.Group( + key = "layout", + list = listOf( + SettingPaneItem.Item(Setting.TWO_PANEL_LAYOUT_PORTRAIT), + SettingPaneItem.Item(Setting.TWO_PANEL_LAYOUT_LANDSCAPE), + ), + ), + ), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/experimental/ExperimentalSettingsRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/experimental/ExperimentalSettingsRoute.kt new file mode 100644 index 00000000..ab55ced6 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/experimental/ExperimentalSettingsRoute.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.home.settings.experimental + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.Route + +object ExperimentalSettingsRoute : Route { + @Composable + override fun Content() { + ExperimentalSettingsScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/experimental/ExperimentalSettingsScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/experimental/ExperimentalSettingsScreen.kt new file mode 100644 index 00000000..e1b11643 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/experimental/ExperimentalSettingsScreen.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.feature.home.settings.experimental + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.home.settings.Setting +import com.artemchep.keyguard.feature.home.settings.SettingPaneContent +import com.artemchep.keyguard.feature.home.settings.SettingPaneItem +import com.artemchep.keyguard.res.Res +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun ExperimentalSettingsScreen() { + SettingPaneContent( + title = stringResource(Res.strings.settings_experimental_header_title), + items = listOf( + SettingPaneItem.Item(Setting.WRITE_ACCESS), + ), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/notifications/NotificationsSettingsRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/notifications/NotificationsSettingsRoute.kt new file mode 100644 index 00000000..c3a86fb0 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/notifications/NotificationsSettingsRoute.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.home.settings.notifications + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.Route + +object NotificationsSettingsRoute : Route { + @Composable + override fun Content() { + NotificationsSettingsScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/notifications/NotificationsSettingsScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/notifications/NotificationsSettingsScreen.kt new file mode 100644 index 00000000..61cd95fb --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/notifications/NotificationsSettingsScreen.kt @@ -0,0 +1,19 @@ +package com.artemchep.keyguard.feature.home.settings.notifications + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.home.settings.Setting +import com.artemchep.keyguard.feature.home.settings.SettingPaneContent +import com.artemchep.keyguard.feature.home.settings.SettingPaneItem +import com.artemchep.keyguard.res.Res +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun NotificationsSettingsScreen() { + SettingPaneContent( + title = stringResource(Res.strings.settings_notifications_header_title), + items = listOf( + SettingPaneItem.Item(Setting.PERMISSION_CAMERA), + SettingPaneItem.Item(Setting.PERMISSION_POST_NOTIFICATION), + ), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/other/OtherSettingsRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/other/OtherSettingsRoute.kt new file mode 100644 index 00000000..8be9bba4 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/other/OtherSettingsRoute.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.home.settings.other + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.Route + +object OtherSettingsRoute : Route { + @Composable + override fun Content() { + OtherSettingsScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/other/OtherSettingsScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/other/OtherSettingsScreen.kt new file mode 100644 index 00000000..7fcd3fef --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/other/OtherSettingsScreen.kt @@ -0,0 +1,52 @@ +package com.artemchep.keyguard.feature.home.settings.other + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.home.settings.Setting +import com.artemchep.keyguard.feature.home.settings.SettingPaneContent +import com.artemchep.keyguard.feature.home.settings.SettingPaneItem +import com.artemchep.keyguard.res.Res +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun OtherSettingsScreen() { + SettingPaneContent( + title = stringResource(Res.strings.settings_other_header_title), + items = listOf( + SettingPaneItem.Group( + key = "features", + list = listOf( + SettingPaneItem.Item(Setting.FEATURES_OVERVIEW), + ), + ), + SettingPaneItem.Group( + key = "security", + list = listOf( + SettingPaneItem.Item(Setting.CRASHLYTICS), + SettingPaneItem.Item(Setting.DATA_SAFETY), + SettingPaneItem.Item(Setting.PERMISSION_DETAILS), + ), + ), +// SettingPaneItem.Group( +// key = "exp", +// list = listOf( +// SettingPaneItem.Item(Setting.EXPERIMENTAL), +// ), +// ), + SettingPaneItem.Group( + key = "social", + list = listOf( + SettingPaneItem.Item(Setting.RATE_APP), + SettingPaneItem.Item(Setting.ABOUT_TEAM), + SettingPaneItem.Item(Setting.REDDIT), + SettingPaneItem.Item(Setting.GITHUB), + SettingPaneItem.Item(Setting.CROWDIN), + SettingPaneItem.Item(Setting.FEEDBACK_APP), + SettingPaneItem.Item(Setting.OPEN_SOURCE_LICENSES), + SettingPaneItem.Item(Setting.PRIVACY_POLICY), + ), + ), + SettingPaneItem.Item(Setting.ABOUT_APP), + SettingPaneItem.Item(Setting.ABOUT_APP_BUILD_DATE), + ), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/permissions/PermissionsSettingsRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/permissions/PermissionsSettingsRoute.kt new file mode 100644 index 00000000..b782eb93 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/permissions/PermissionsSettingsRoute.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.home.settings.permissions + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.Route + +object PermissionsSettingsRoute : Route { + @Composable + override fun Content() { + PermissionsSettingsScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/permissions/PermissionsSettingsScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/permissions/PermissionsSettingsScreen.kt new file mode 100644 index 00000000..e126cf0d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/permissions/PermissionsSettingsScreen.kt @@ -0,0 +1,30 @@ +package com.artemchep.keyguard.feature.home.settings.permissions + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.home.settings.Setting +import com.artemchep.keyguard.feature.home.settings.SettingPaneContent +import com.artemchep.keyguard.feature.home.settings.SettingPaneItem +import com.artemchep.keyguard.res.Res +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun PermissionsSettingsScreen() { + SettingPaneContent( + title = stringResource(Res.strings.settings_permissions_header_title), + items = listOf( + SettingPaneItem.Group( + key = "runtime", + list = listOf( + SettingPaneItem.Item(Setting.PERMISSION_CAMERA), + SettingPaneItem.Item(Setting.PERMISSION_POST_NOTIFICATION), + ), + ), + SettingPaneItem.Group( + key = "other", + list = listOf( + SettingPaneItem.Item(Setting.PERMISSION_OTHER), + ), + ), + ), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/search/SearchSettingsRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/search/SearchSettingsRoute.kt new file mode 100644 index 00000000..4cc122f6 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/search/SearchSettingsRoute.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.home.settings.search + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.Route + +object SearchSettingsRoute : Route { + @Composable + override fun Content() { + SearchSettingsScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/search/SearchSettingsScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/search/SearchSettingsScreen.kt new file mode 100644 index 00000000..aa39b2a9 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/search/SearchSettingsScreen.kt @@ -0,0 +1,155 @@ +package com.artemchep.keyguard.feature.home.settings.search + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.heightIn +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.items +import androidx.compose.material.pullrefresh.pullRefresh +import androidx.compose.material.pullrefresh.rememberPullRefreshState +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.feature.EmptySearchView +import com.artemchep.keyguard.feature.home.vault.component.SearchTextField +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.DefaultProgressBar +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.ScaffoldLazyColumn +import com.artemchep.keyguard.ui.focus.FocusRequester2 +import com.artemchep.keyguard.ui.focus.focusRequester2 +import com.artemchep.keyguard.ui.pulltosearch.PullToSearch +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.toolbar.CustomToolbar +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.delay + +@Composable +fun SearchSettingsScreen() { + val state = produceSearchSettingsState() + SearchSettingsScreenContent( + state = state, + ) +} + +@OptIn(ExperimentalMaterial3Api::class, ExperimentalLayoutApi::class) +@Composable +fun SearchSettingsScreenContent( + state: SearchSettingsState, +) { + val focusRequester = remember { + FocusRequester2() + } + val pullRefreshState = rememberPullRefreshState( + refreshing = false, + onRefresh = { + focusRequester.requestFocus() + }, + ) + val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior() + + LaunchedEffect(focusRequester) { + delay(500L) + focusRequester.requestFocus() + } + + ScaffoldLazyColumn( + modifier = Modifier + .pullRefresh(pullRefreshState) + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + CustomToolbar( + scrollBehavior = scrollBehavior, + ) { + Column { + Row( + modifier = Modifier + .heightIn(min = 64.dp), + verticalAlignment = Alignment.CenterVertically, + ) { + Spacer(Modifier.width(4.dp)) + NavigationIcon() + Spacer(Modifier.width(4.dp)) + Column( + modifier = Modifier + .weight(1f) + .align(Alignment.CenterVertically), + ) { + Text( + text = stringResource(Res.strings.settingssearch_header_subtitle), + style = MaterialTheme.typography.labelSmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + overflow = TextOverflow.Ellipsis, + maxLines = 2, + ) + Text( + text = stringResource(Res.strings.settingssearch_header_title), + style = MaterialTheme.typography.titleMedium, + overflow = TextOverflow.Ellipsis, + maxLines = 1, + ) + } + Spacer(Modifier.width(4.dp)) + } + + SearchTextField( + modifier = Modifier + .focusRequester2(focusRequester), + text = state.query.state.value, + placeholder = stringResource(Res.strings.settingssearch_search_placeholder), + searchIcon = false, + leading = {}, + trailing = {}, + onTextChange = state.query.onChange, + onGoClick = null, + ) + } + } + }, + pullRefreshState = pullRefreshState, + overlay = { + DefaultProgressBar( + modifier = Modifier, + visible = false, + ) + + PullToSearch( + modifier = Modifier + .padding(contentPadding.value), + pullRefreshState = pullRefreshState, + ) + }, + ) { + val items = state.items + if (items.isEmpty()) { + item("empty") { + EmptySearchView() + } + } + + items( + items = items, + key = { it.key }, + ) { + when (it) { + is SearchSettingsState.Item.Settings -> it.content() + } + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/search/SearchSettingsState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/search/SearchSettingsState.kt new file mode 100644 index 00000000..bb524fef --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/search/SearchSettingsState.kt @@ -0,0 +1,21 @@ +package com.artemchep.keyguard.feature.home.settings.search + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.mutableStateOf +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 + +data class SearchSettingsState( + val revision: Int = 0, + val query: TextFieldModel2 = TextFieldModel2(mutableStateOf("")), + val items: List = emptyList(), +) { + sealed interface Item { + val key: String + + data class Settings( + override val key: String, + val score: Float, + val content: @Composable () -> Unit, + ) : Item + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/search/SearchSettingsStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/search/SearchSettingsStateProducer.kt new file mode 100644 index 00000000..496600bd --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/search/SearchSettingsStateProducer.kt @@ -0,0 +1,105 @@ +package com.artemchep.keyguard.feature.home.settings.search + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.usecase.GetCollections +import com.artemchep.keyguard.common.usecase.GetOrganizations +import com.artemchep.keyguard.common.util.flow.combineToList +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import com.artemchep.keyguard.feature.home.settings.hub +import com.artemchep.keyguard.feature.home.vault.search.findAlike +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.feature.search.search.SEARCH_DEBOUNCE +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.debounce +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +@Composable +fun produceSearchSettingsState() = with(localDI().direct) { + produceSearchSettingsState( + directDI = this, + getOrganizations = instance(), + getCollections = instance(), + ) +} + +@Composable +fun produceSearchSettingsState( + directDI: DirectDI, + getOrganizations: GetOrganizations, + getCollections: GetCollections, +): SearchSettingsState = produceScreenState( + key = "settings_search", + initial = SearchSettingsState(), + args = arrayOf( + getOrganizations, + getCollections, + ), +) { + val querySink = mutablePersistedFlow("query") { "" } + val queryState = mutableComposeState(querySink) + + val queryFlow = querySink + .debounce(SEARCH_DEBOUNCE) + .map { query -> + query + .lowercase() + .split(" ") + } + .shareInScreenScope() + + val e = hub + .map { (key, component) -> + val flow = component(directDI) + flow + .combine(queryFlow) { item, query -> + val tokens = item?.search?.tokens + ?: return@combine null + val score = findAlike(tokens, query, ignoreCommonWords = false) + if (score < 0.1f) { + return@combine null + } + score to item + } + .map { pair -> + pair ?: return@map null + val score = pair.first + val item = pair.second + val content = item.content + if (item.search == null) { + return@map null + } + SearchSettingsState.Item.Settings( + key = key, + score = score, + content = content, + ) + } + } + .combineToList() + .map { + it + .filterNotNull() + .sortedByDescending { it.score } + } + .map { items -> + SearchSettingsState( + items = items, + ) + } + combine( + e, + querySink, + ) { a, b -> + a.copy( + query = TextFieldModel2( + state = queryState, + text = b, + onChange = queryState::value::set, + ), + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/security/SecuritySettingsRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/security/SecuritySettingsRoute.kt new file mode 100644 index 00000000..7dddf391 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/security/SecuritySettingsRoute.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.home.settings.security + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.Route + +object SecuritySettingsRoute : Route { + @Composable + override fun Content() { + SecuritySettingsScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/security/SecuritySettingsScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/security/SecuritySettingsScreen.kt new file mode 100644 index 00000000..4519ef4d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/security/SecuritySettingsScreen.kt @@ -0,0 +1,49 @@ +package com.artemchep.keyguard.feature.home.settings.security + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.home.settings.Setting +import com.artemchep.keyguard.feature.home.settings.SettingPaneContent +import com.artemchep.keyguard.feature.home.settings.SettingPaneItem +import com.artemchep.keyguard.res.Res +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun SecuritySettingsScreen() { + SettingPaneContent( + title = stringResource(Res.strings.settings_security_header_title), + items = listOf( + SettingPaneItem.Item(Setting.VAULT_PERSIST), + SettingPaneItem.Item(Setting.VAULT_LOCK_AFTER_TIMEOUT), + SettingPaneItem.Item(Setting.VAULT_LOCK_AFTER_SCREEN_OFF), + SettingPaneItem.Item(Setting.VAULT_LOCK_AFTER_REBOOT), + SettingPaneItem.Item(Setting.VAULT_LOCK), + SettingPaneItem.Group( + key = "clipboard", + list = listOf( + SettingPaneItem.Item(Setting.CLIPBOARD_AUTO_REFRESH), + ), + ), + SettingPaneItem.Group( + key = "visuals", + list = listOf( + SettingPaneItem.Item(Setting.CONCEAL), + SettingPaneItem.Item(Setting.SCREENSHOTS), + SettingPaneItem.Item(Setting.WEBSITE_ICONS), + ), + ), + SettingPaneItem.Group( + key = "biometric", + list = listOf( + SettingPaneItem.Item(Setting.BIOMETRIC), + SettingPaneItem.Item(Setting.REQUIRE_MASTER_PASSWORD), + ), + ), + SettingPaneItem.Group( + key = "password", + list = listOf( + SettingPaneItem.Item(Setting.MASTER_PASSWORD), + ), + ), + ), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/subscriptions/SubscriptionsSettingsRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/subscriptions/SubscriptionsSettingsRoute.kt new file mode 100644 index 00000000..acefb376 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/subscriptions/SubscriptionsSettingsRoute.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.home.settings.subscriptions + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.Route + +object SubscriptionsSettingsRoute : Route { + @Composable + override fun Content() { + SubscriptionsSettingsScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/subscriptions/SubscriptionsSettingsScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/subscriptions/SubscriptionsSettingsScreen.kt new file mode 100644 index 00000000..c35fdecd --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/subscriptions/SubscriptionsSettingsScreen.kt @@ -0,0 +1,27 @@ +package com.artemchep.keyguard.feature.home.settings.subscriptions + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.home.settings.Setting +import com.artemchep.keyguard.feature.home.settings.SettingPaneContent +import com.artemchep.keyguard.feature.home.settings.SettingPaneItem +import com.artemchep.keyguard.res.Res +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun SubscriptionsSettingsScreen() { + SettingPaneContent( + title = stringResource(Res.strings.settings_subscriptions_header_title), + items = listOf( + SettingPaneItem.Item(Setting.SUBSCRIPTIONS), + SettingPaneItem.Group( + key = "other", + title = stringResource(Res.strings.misc), + list = listOf( + SettingPaneItem.Item(Setting.SUBSCRIPTIONS_IN_STORE), + SettingPaneItem.Item(Setting.FEEDBACK_APP), + SettingPaneItem.Item(Setting.APK), + ), + ), + ), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/watchtower/WatchtowerSettingsRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/watchtower/WatchtowerSettingsRoute.kt new file mode 100644 index 00000000..bc5ba0eb --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/watchtower/WatchtowerSettingsRoute.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.home.settings.watchtower + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.Route + +object WatchtowerSettingsRoute : Route { + @Composable + override fun Content() { + WatchtowerSettingsScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/watchtower/WatchtowerSettingsScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/watchtower/WatchtowerSettingsScreen.kt new file mode 100644 index 00000000..327a21a5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/settings/watchtower/WatchtowerSettingsScreen.kt @@ -0,0 +1,19 @@ +package com.artemchep.keyguard.feature.home.settings.watchtower + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.home.settings.SettingPaneContent +import com.artemchep.keyguard.feature.home.settings.SettingPaneItem +import com.artemchep.keyguard.res.Res +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun WatchtowerSettingsScreen() { + SettingPaneContent( + title = stringResource(Res.strings.settings_watchtower_header_title), + items = listOf( + SettingPaneItem.Item("check_pwned_services"), + SettingPaneItem.Item("check_pwned_passwords"), + SettingPaneItem.Item("check_two_fa"), + ), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/VaultRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/VaultRoute.kt new file mode 100644 index 00000000..a6d20b36 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/VaultRoute.kt @@ -0,0 +1,239 @@ +package com.artemchep.keyguard.feature.home.vault + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.model.DAccount +import com.artemchep.keyguard.common.model.DCollection +import com.artemchep.keyguard.common.model.DFilter +import com.artemchep.keyguard.common.model.DFolder +import com.artemchep.keyguard.common.model.DOrganization +import com.artemchep.keyguard.feature.home.vault.search.sort.Sort +import com.artemchep.keyguard.feature.navigation.Route +import com.artemchep.keyguard.feature.navigation.state.TranslatorScope +import com.artemchep.keyguard.res.Res + +data class VaultRoute( + val args: Args = Args(), +) : Route { + companion object { + // + // Account + // + + fun by(account: DAccount) = by( + accounts = listOf(account), + ) + + @JvmName("byAccounts") + fun by(accounts: Collection) = VaultRoute( + args = Args( + appBar = Args.AppBar( + title = accounts.joinToString { it.username }, + subtitle = if (accounts.size > 1) { + "Accounts" + } else { + "Account" + }, + ), + filter = DFilter.Or( + filters = accounts + .map { account -> + DFilter.ById( + id = account.accountId(), + what = DFilter.ById.What.ACCOUNT, + ) + }, + ), + preselect = false, + canAddSecrets = false, + ), + ) + + // + // Organization + // + + fun by(translator: TranslatorScope, organization: DOrganization) = by( + translator = translator, + organizations = listOf(organization), + ) + + @JvmName("byOrganizations") + fun by(translator: TranslatorScope, organizations: Collection) = VaultRoute( + args = Args( + appBar = Args.AppBar( + title = organizations.joinToString { it.name }, + subtitle = if (organizations.size > 1) { + translator.translate(Res.strings.organizations) + } else { + translator.translate(Res.strings.organization) + }, + ), + filter = DFilter.Or( + filters = organizations + .map { organization -> + DFilter.And( + filters = listOf( + DFilter.ById( + id = organization.accountId, + what = DFilter.ById.What.ACCOUNT, + ), + DFilter.ById( + id = organization.id, + what = DFilter.ById.What.ORGANIZATION, + ), + ), + ) + }, + ), + preselect = false, + canAddSecrets = false, + ), + ) + + // + // Collection + // + + fun by(translator: TranslatorScope, collection: DCollection) = by( + translator = translator, + collections = listOf(collection), + ) + + @JvmName("byCollections") + fun by(translator: TranslatorScope, collections: Collection) = VaultRoute( + args = Args( + appBar = Args.AppBar( + title = collections.joinToString { it.name }, + subtitle = if (collections.size > 1) { + translator.translate(Res.strings.collections) + } else { + translator.translate(Res.strings.collection) + }, + ), + filter = DFilter.Or( + filters = collections + .map { collection -> + DFilter.And( + filters = listOf( + DFilter.ById( + id = collection.accountId, + what = DFilter.ById.What.ACCOUNT, + ), + DFilter.ById( + id = collection.id, + what = DFilter.ById.What.COLLECTION, + ), + ), + ) + }, + ), + preselect = false, + canAddSecrets = false, + ), + ) + + // + // Folder + // + + fun by(translator: TranslatorScope, folder: DFolder) = by( + translator = translator, + folders = listOf(folder), + ) + + @JvmName("byFolders") + fun by(translator: TranslatorScope, folders: Collection) = VaultRoute( + args = Args( + appBar = Args.AppBar( + title = folders.joinToString { it.name }, + subtitle = if (folders.size > 1) { + translator.translate(Res.strings.folders) + } else { + translator.translate(Res.strings.folder) + }, + ), + filter = DFilter.Or( + filters = folders + .map { folder -> + DFilter.And( + filters = listOf( + DFilter.ById( + id = folder.accountId, + what = DFilter.ById.What.ACCOUNT, + ), + DFilter.ById( + id = folder.id, + what = DFilter.ById.What.FOLDER, + ), + ), + ) + }, + ), + preselect = false, + canAddSecrets = false, + ), + ) + + // + // Watchtower + // + + fun watchtower( + title: String, + subtitle: String?, + filter: DFilter? = null, + trash: Boolean? = false, + sort: Sort? = null, + searchBy: Args.SearchBy = Args.SearchBy.ALL, + ) = VaultRoute( + args = Args( + appBar = Args.AppBar( + title = title, + subtitle = subtitle ?: "Watchtower", + ), + filter = filter, + sort = sort, + trash = trash, + searchBy = searchBy, + preselect = false, + canAddSecrets = false, + ), + ) + } + + data class Args( + val appBar: AppBar? = null, + val filter: DFilter? = null, + val sort: Sort? = null, + val main: Boolean = false, + val searchBy: SearchBy = SearchBy.ALL, + /** + * `true` to show only trashed items, `false` to show + * only active items, `null` to show both. + */ + val trash: Boolean? = false, + val preselect: Boolean = true, + val canAddSecrets: Boolean = true, + ) { + enum class SearchBy { + ALL, + PASSWORD, + } + + val canAlwaysShowKeyboard: Boolean get() = appBar?.title == null + + val canQuickFilter: Boolean get() = appBar?.title == null + + data class AppBar( + val title: String? = null, + val subtitle: String? = null, + ) + } + + @Composable + override fun Content() { + VaultScreen( + args = args, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/VaultScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/VaultScreen.kt new file mode 100644 index 00000000..eda68a1d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/VaultScreen.kt @@ -0,0 +1,36 @@ +package com.artemchep.keyguard.feature.home.vault + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.remember +import com.artemchep.keyguard.feature.home.vault.screen.VaultListRoute +import com.artemchep.keyguard.feature.navigation.LocalNavigationNodeVisualStack +import com.artemchep.keyguard.feature.navigation.NavigationRouter +import com.artemchep.keyguard.feature.twopane.TwoPaneNavigationContent + +@Composable +fun VaultScreen( + args: VaultRoute.Args, +) { + val initialRoute = remember(args) { + VaultListRoute( + args = args, + ) + } + // Vault screen actually does not add any depth to the + // navigation stack, it just renders sub-windows. + val visualStack = LocalNavigationNodeVisualStack.current + .run { + removeAt(lastIndex) + } + CompositionLocalProvider( + LocalNavigationNodeVisualStack provides visualStack, + ) { + NavigationRouter( + id = "vault", + initial = initialRoute, + ) { backStack -> + TwoPaneNavigationContent(backStack) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/VaultState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/VaultState.kt new file mode 100644 index 00000000..5d2a1e20 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/VaultState.kt @@ -0,0 +1,34 @@ +package com.artemchep.keyguard.feature.home.vault + +import androidx.compose.runtime.Immutable +import arrow.optics.optics +import com.artemchep.keyguard.feature.home.vault.model.VaultItem2 +import com.artemchep.keyguard.feature.home.vault.screen.VaultCipherItem + +@Immutable +@optics +data class VaultState( + val master: Master = Master(), + val detail: Detail? = null, +) { + companion object; + + data class Master( + /** + * Current revision of the items; each revision you should scroll to + * the top of the list. + */ + val itemsRevision: Int = 0, + val items: List = emptyList(), + val onGoClick: (() -> Unit)? = null, + ) + + data class Detail( + val item: VaultCipherItem, + /** + * Called to unselect this item, closing the + * detail pane. + */ + val close: (() -> Unit)? = null, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/add/AddRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/add/AddRoute.kt new file mode 100644 index 00000000..f161e151 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/add/AddRoute.kt @@ -0,0 +1,61 @@ +package com.artemchep.keyguard.feature.home.vault.add + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.feature.navigation.Route + +fun LeAddRoute( + args: AddRoute.Args = AddRoute.Args(), +): Route = + AddRouteImpl( + args = args, + ) + +data class AddRouteImpl( + val args: AddRoute.Args = AddRoute.Args(), +) : Route { + @Composable + override fun Content() { + AddScreen( + args = args, + ) + } +} + +interface AddRoute { + data class Args( + val behavior: Behavior = Behavior(), + val merge: Merge? = null, + val initialValue: DSecret? = null, + val ownershipRo: Boolean = initialValue != null, + val type: DSecret.Type? = null, + val name: String? = null, + val username: String? = null, + val password: String? = null, + val autofill: Autofill? = null, + ) { + data class Behavior( + val autoShowKeyboard: Boolean = true, + val launchEditedCipher: Boolean = true, + ) + + data class Merge( + val ciphers: List, + ) + + data class Autofill( + val applicationId: String? = null, + val webDomain: String? = null, + val webScheme: String? = null, + // login + val username: String? = null, + val password: String? = null, + // identity + val email: String? = null, + val phone: String? = null, + val personName: String? = null, + ) { + companion object + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/add/AddScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/add/AddScreen.kt new file mode 100644 index 00000000..911aa6f8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/add/AddScreen.kt @@ -0,0 +1,1734 @@ +@file:OptIn(ExperimentalMaterial3Api::class) + +package com.artemchep.keyguard.feature.home.vault.add + +import androidx.compose.animation.Crossfade +import androidx.compose.foundation.BorderStroke +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.LocalIndication +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.FlowRow +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.heightIn +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.widthIn +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.text.KeyboardActionScope +import androidx.compose.foundation.text.KeyboardActions +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.foundation.verticalScroll +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Add +import androidx.compose.material.icons.outlined.ArrowDropDown +import androidx.compose.material.icons.outlined.Clear +import androidx.compose.material.icons.outlined.CloudDone +import androidx.compose.material.icons.outlined.FileUpload +import androidx.compose.material.icons.outlined.Folder +import androidx.compose.material.icons.outlined.Key +import androidx.compose.material.icons.outlined.Password +import androidx.compose.material.icons.outlined.Save +import androidx.compose.material3.Checkbox +import androidx.compose.material3.DropdownMenu +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.LocalTextStyle +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.alpha +import androidx.compose.ui.draw.clip +import androidx.compose.ui.focus.FocusDirection +import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.focus.focusRequester +import androidx.compose.ui.focus.onFocusChanged +import androidx.compose.ui.graphics.graphicsLayer +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.platform.LocalFocusManager +import androidx.compose.ui.semantics.Role +import androidx.compose.ui.text.SpanStyle +import androidx.compose.ui.text.font.FontStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.input.ImeAction +import androidx.compose.ui.text.input.KeyboardType +import androidx.compose.ui.text.input.PasswordVisualTransformation +import androidx.compose.ui.text.input.VisualTransformation +import androidx.compose.ui.unit.dp +import arrow.core.partially1 +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.UsernameVariationIcon +import com.artemchep.keyguard.common.model.fold +import com.artemchep.keyguard.common.model.getOrNull +import com.artemchep.keyguard.common.model.title +import com.artemchep.keyguard.common.model.titleH +import com.artemchep.keyguard.common.service.logging.LogRepository +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import com.artemchep.keyguard.feature.auth.common.VisibilityState +import com.artemchep.keyguard.feature.auth.common.VisibilityToggle +import com.artemchep.keyguard.feature.filepicker.FilePickerEffect +import com.artemchep.keyguard.feature.home.vault.component.FlatItemTextContent2 +import com.artemchep.keyguard.feature.home.vault.component.Section +import com.artemchep.keyguard.feature.home.vault.component.VaultViewTotpBadge2 +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.qr.ScanQrButton +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.AutofillButton +import com.artemchep.keyguard.ui.BiFlatContainer +import com.artemchep.keyguard.ui.BiFlatTextField +import com.artemchep.keyguard.ui.BiFlatTextFieldLabel +import com.artemchep.keyguard.ui.BiFlatValueHeightMin +import com.artemchep.keyguard.ui.DefaultEmphasisAlpha +import com.artemchep.keyguard.ui.DefaultFab +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.DropdownMenuItemFlat +import com.artemchep.keyguard.ui.DropdownMinWidth +import com.artemchep.keyguard.ui.DropdownScopeImpl +import com.artemchep.keyguard.ui.EmailFlatTextField +import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +import com.artemchep.keyguard.ui.ExpandedIfNotEmptyForRow +import com.artemchep.keyguard.ui.FabState +import com.artemchep.keyguard.ui.FlatDropdown +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.FlatItemLayout +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.FlatTextField +import com.artemchep.keyguard.ui.FlatTextFieldBadge +import com.artemchep.keyguard.ui.LeMOdelBottomSheet +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.OptionsButton +import com.artemchep.keyguard.ui.PasswordFlatTextField +import com.artemchep.keyguard.ui.PasswordPwnedBadge +import com.artemchep.keyguard.ui.PasswordStrengthBadge +import com.artemchep.keyguard.ui.ScaffoldColumn +import com.artemchep.keyguard.ui.UrlFlatTextField +import com.artemchep.keyguard.ui.button.FavouriteToggleButton +import com.artemchep.keyguard.ui.icons.IconBox +import com.artemchep.keyguard.ui.icons.KeyguardAttachment +import com.artemchep.keyguard.ui.icons.KeyguardCollection +import com.artemchep.keyguard.ui.icons.KeyguardOrganization +import com.artemchep.keyguard.ui.icons.KeyguardTwoFa +import com.artemchep.keyguard.ui.icons.KeyguardWebsite +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.markdown.Md +import com.artemchep.keyguard.ui.shimmer.shimmer +import com.artemchep.keyguard.ui.skeleton.SkeletonText +import com.artemchep.keyguard.ui.skeleton.SkeletonTextField +import com.artemchep.keyguard.ui.text.annotatedResource +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.theme.isDark +import com.artemchep.keyguard.ui.theme.monoFontFamily +import com.artemchep.keyguard.ui.toolbar.LargeToolbar +import com.artemchep.keyguard.ui.util.DividerColor +import com.artemchep.keyguard.ui.util.HorizontalDivider +import com.artemchep.keyguard.ui.util.VerticalDivider +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onEach +import org.kodein.di.compose.rememberInstance + +@Composable +fun AddScreen( + args: AddRoute.Args, +) { + val loadableState = produceAddScreenState( + args = args, + ) + + val state = loadableState.getOrNull() + if (state != null) { + FilePickerEffect( + flow = state.sideEffects.filePickerIntentFlow, + ) + } + + val addScreenScope = remember { + val addScreenBehavior = args.behavior + AddScreenScope( + initialFocusRequested = !addScreenBehavior.autoShowKeyboard, + ) + } + AddScreenContent( + addScreenScope = addScreenScope, + loadableState = loadableState, + ) +} + +@OptIn(ExperimentalMaterial3Api::class, ExperimentalLayoutApi::class, ExperimentalLayoutApi::class) +@Composable +private fun AddScreenContent( + addScreenScope: AddScreenScope, + loadableState: Loadable, +) { + val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + ScaffoldColumn( + modifier = Modifier + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + LargeToolbar( + title = { + val title = loadableState.getOrNull()?.title + if (title != null) { + Text(title) + } else { + SkeletonText( + modifier = Modifier + .fillMaxWidth(0.4f), + ) + } + }, + navigationIcon = { + NavigationIcon() + }, + actions = { + val fav = loadableState.getOrNull()?.favourite + + val checked = fav?.checked == true + val onChange = fav?.onChange + FavouriteToggleButton( + modifier = Modifier + .then( + loadableState.fold( + ifLoading = { + Modifier + .shimmer() + }, + ifOk = { + Modifier + }, + ), + ), + favorite = checked, + onChange = onChange, + ) + + val actions = loadableState.getOrNull()?.actions.orEmpty() + OptionsButton( + actions = actions, + ) + }, + scrollBehavior = scrollBehavior, + ) + }, + floatingActionState = run { + val fabOnClick = loadableState.getOrNull()?.onSave + val fabState = if (fabOnClick != null) { + FabState( + onClick = fabOnClick, + model = null, + ) + } else { + null + } + rememberUpdatedState(newValue = fabState) + }, + floatingActionButton = { + DefaultFab( + icon = { + Icon( + imageVector = Icons.Outlined.Save, + contentDescription = null, + ) + }, + text = { + Text( + text = stringResource(Res.strings.save), + ) + }, + ) + }, + columnVerticalArrangement = Arrangement.spacedBy(8.dp), + ) { + populateItems( + addScreenScope = addScreenScope, + loadableState = loadableState, + ) + } +} + +private class AddScreenScope( + initialFocusRequested: Boolean = false, +) { + val initialFocusRequestedState = mutableStateOf(initialFocusRequested) + + @Composable + fun initialFocusRequesterEffect(): FocusRequester { + val focusRequester = remember { FocusRequester() } + // Auto focus the text field + // on launch. + LaunchedEffect(focusRequester) { + var initialFocusRequested by initialFocusRequestedState + if (!initialFocusRequested) { + focusRequester.requestFocus() + // do not request it the second time + initialFocusRequested = true + } + } + return focusRequester + } +} + +@Composable +private fun ColumnScope.populateItems( + addScreenScope: AddScreenScope, + loadableState: Loadable, +) = loadableState.fold( + ifLoading = { + populateItemsSkeleton( + addScreenScope = addScreenScope, + ) + }, + ifOk = { state -> + populateItemsContent( + addScreenScope = addScreenScope, + state = state, + ) + }, +) + +@Composable +private fun ColumnScope.populateItemsSkeleton( + addScreenScope: AddScreenScope, +) { + Column( + modifier = Modifier + .fillMaxWidth() + .padding( + horizontal = 8.dp, + vertical = 2.dp, + ) + .padding(vertical = 8.dp), + verticalArrangement = Arrangement.spacedBy(8.dp, Alignment.CenterVertically), + ) { + Row( + modifier = Modifier + .fillMaxWidth() + .padding(end = 8.dp), + horizontalArrangement = Arrangement.spacedBy(8.dp), + ) { + ToolbarContentItemErrSkeleton( + modifier = Modifier + .weight(1.5f), + fraction = 0.5f, + ) + Spacer(modifier = Modifier.width(8.dp)) + ToolbarContentItemErrSkeleton( + modifier = Modifier + .weight(1f) + .padding(end = 8.dp), + fraction = 0.75f, + ) + } + ToolbarContentItemErrSkeleton( + modifier = Modifier + .padding(end = 8.dp), + fraction = 0.35f, + ) + } + Section() + Spacer(Modifier.height(24.dp)) + SkeletonTextField( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = Dimens.horizontalPadding), + ) + SkeletonTextField( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = Dimens.horizontalPadding), + ) + SkeletonText( + modifier = Modifier + .fillMaxWidth(0.75f) + .padding(horizontal = Dimens.horizontalPadding), + style = MaterialTheme.typography.labelMedium, + ) + SkeletonText( + modifier = Modifier + .fillMaxWidth(0.4f) + .padding(horizontal = Dimens.horizontalPadding), + style = MaterialTheme.typography.labelMedium, + ) +} + +@Composable +private fun ColumnScope.populateItemsContent( + addScreenScope: AddScreenScope, + state: AddState, +) { + ToolbarContent( + modifier = Modifier, + account = state.ownership.account, + organization = state.ownership.organization, + collection = state.ownership.collection, + folder = state.ownership.folder, + onClick = state.ownership.onClick, + ) + Section() + Spacer(Modifier.height(24.dp)) + val logRepository by rememberInstance() + remember(state) { + logRepository.post("Foo3", "rendered state ${state.items.size} items") + } + state.items.forEach { + key(it.id) { + AnyField( + modifier = Modifier, + addScreenScope = addScreenScope, + item = it, + ) + } + } +} + +@Composable +private fun AnyField( + modifier: Modifier = Modifier, + addScreenScope: AddScreenScope, + item: AddStateItem, +) { + when (item) { + is AddStateItem.Title -> { + val localState by item.state.flow.collectAsState() + NameTextField( + modifier = modifier, + addScreenScope = addScreenScope, + field = localState, + ) + } + + is AddStateItem.Username -> { + val localState by item.state.flow.collectAsState() + UsernameTextField(modifier, localState) + } + + is AddStateItem.Password -> { + val localState by item.state.flow.collectAsState() + PasswordTextField(modifier, localState) + } + + is AddStateItem.Totp -> { + val localState by item.state.flow.collectAsState() + TotpTextField(modifier, localState) + } + + is AddStateItem.Url -> { + UrlTextField(modifier, item) + } + + is AddStateItem.Attachment -> { + AttachmentTextField(modifier, item) + } + + is AddStateItem.Passkey -> { + PasskeyField(modifier, item) + } + + is AddStateItem.Note -> { + val localState by item.state.flow.collectAsState() + NoteTextField(modifier, localState, markdown = item.markdown) + } + + is AddStateItem.Text -> { + val localState by item.state.flow.collectAsState() + TextTextField(modifier, localState) + } + + is AddStateItem.DateMonthYear -> { + DateMonthYearField( + modifier = modifier, + item = item, + ) + } + + is AddStateItem.Switch -> { + SwitchField( + modifier = modifier, + item = item, + ) + } + + is AddStateItem.Suggestion -> { + SuggestionItem( + modifier = modifier, + item = item, + ) + } + + is AddStateItem.Enum -> { + val localState by item.state.flow.collectAsState() + EnumItem( + modifier = modifier, + icon = item.icon, + label = item.label, + title = localState.value, + dropdown = localState.dropdown, + ) + } + + is AddStateItem.Field -> { + Box( + modifier = modifier, + ) { + val logRepository by rememberInstance() + remember(item) { + logRepository.post("Foo3", "im rendering a field! ${item.id}") + } + val localState = remember { + mutableStateOf(null) + } + LaunchedEffect(item.state.flow) { + item.state.flow + .map { a -> + a.withOptions(a.options + item.options) + } + .onEach { + localState.value = it + logRepository.post("Foo3", "im on emit a field! ${it}") + } + .launchIn(this) + } +// val localState = remember(item.state.flow) { +// item.state.flow +// .map { a -> +// a.withOptions(a.options + item.options) +// } +// .onEach { +// logRepository.post("Foo3", "im on emit a field! ${it}") +// } +// }.collectAsState(null) + when (val l = localState.value) { + is AddStateItem.Field.State.Text -> { + FieldTextField(Modifier, l) + } + + is AddStateItem.Field.State.Switch -> { + FieldSwitchField(Modifier, l) + } + + is AddStateItem.Field.State.LinkedId -> { + FieldLinkedIdField(Modifier, l) + } + + null -> { + // Do nothing. + } + } + } + } + + is AddStateItem.Section -> { + SectionItem(modifier, item.text) + } + // Modifiers + is AddStateItem.Add -> { + Column( + modifier = modifier, + ) { + val dropdownShownState = remember { mutableStateOf(false) } + if (item.actions.isEmpty()) { + dropdownShownState.value = false + } + + // Inject the dropdown popup to the bottom of the + // content. + val onDismissRequest = remember(dropdownShownState) { + // lambda + { + dropdownShownState.value = false + } + } + val contentColor = MaterialTheme.colorScheme.primary + FlatItem( + leading = { + Icon(Icons.Outlined.Add, null, tint = contentColor) + }, + title = { + Text( + text = item.text, + color = contentColor, + ) + + DropdownMenu( + modifier = Modifier + .widthIn(min = DropdownMinWidth), + expanded = dropdownShownState.value, + onDismissRequest = onDismissRequest, + ) { + val scope = DropdownScopeImpl(this, onDismissRequest = onDismissRequest) + with(scope) { + item.actions.forEachIndexed { index, action -> + DropdownMenuItemFlat( + action = action, + ) + } + } + } + }, + onClick = { + if (item.actions.size == 1) { + item.actions.first() + .onClick?.invoke() + } else { + dropdownShownState.value = true + } + }, + ) + } + } + } +} + +@Composable +private fun NameTextField( + modifier: Modifier = Modifier, + addScreenScope: AddScreenScope, + field: TextFieldModel2, +) { + val focusManager = LocalFocusManager.current + val keyboardOnNext: KeyboardActionScope.() -> Unit = { + focusManager.moveFocus(FocusDirection.Down) + } + val focusRequester = addScreenScope.initialFocusRequesterEffect() + FlatTextField( + modifier = modifier + .padding(horizontal = Dimens.horizontalPadding), + fieldModifier = Modifier + .focusRequester(focusRequester), + label = stringResource(Res.strings.generic_name), + singleLine = true, + value = field, + keyboardOptions = KeyboardOptions( + imeAction = ImeAction.Next, + ), + keyboardActions = KeyboardActions( + onNext = keyboardOnNext, + ), + ) +} + +@Composable +private fun UsernameTextField( + modifier: Modifier = Modifier, + field: AddStateItem.Username.State, +) { + EmailFlatTextField( + modifier = modifier + .padding(horizontal = Dimens.horizontalPadding), + label = stringResource(Res.strings.username), + value = field.value, + leading = { + Crossfade( + targetState = field.type, + ) { variation -> + UsernameVariationIcon( + usernameVariation = variation, + ) + } + }, + trailing = { + AutofillButton( + key = "username", + username = true, + onValueChange = { + field.value.onChange?.invoke(it) + }, + ) + }, + ) +} + +@OptIn(ExperimentalLayoutApi::class) +@Composable +private fun PasswordTextField( + modifier: Modifier = Modifier, + field: TextFieldModel2, +) = Column { + PasswordFlatTextField( + modifier = modifier + .padding(horizontal = Dimens.horizontalPadding), + value = field, + leading = { + IconBox( + main = Icons.Outlined.Password, + ) + }, + trailing = { + AutofillButton( + key = "password", + password = true, + onValueChange = { + field.onChange?.invoke(it) + }, + ) + }, + content = { + ExpandedIfNotEmpty( + valueOrNull = Unit.takeIf { field.state.value.isNotEmpty() && field.error == null }, + ) { + FlowRow( + modifier = Modifier + .fillMaxWidth() + .padding( + top = 8.dp, + bottom = 8.dp, + ), + verticalArrangement = Arrangement.spacedBy(8.dp), + horizontalArrangement = Arrangement.spacedBy(8.dp), + ) { + PasswordStrengthBadge( + password = field.state.value, + ) + PasswordPwnedBadge( + password = field.state.value, + ) + } + } + }, + ) + Text( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding) + .padding( + top = Dimens.topPaddingCaption, + bottom = Dimens.topPaddingCaption, + ), + style = MaterialTheme.typography.bodyMedium, + text = stringResource(Res.strings.generator_password_note, 16), + color = LocalContentColor.current + .combineAlpha(alpha = MediumEmphasisAlpha), + ) +} + +@Composable +private fun TotpTextField( + modifier: Modifier = Modifier, + state: AddStateItem.Totp.State, +) { + FlatTextField( + modifier = modifier + .padding(horizontal = Dimens.horizontalPadding), + label = stringResource(Res.strings.one_time_password_authenticator_key), + value = state.value, + textStyle = LocalTextStyle.current.copy( + fontFamily = monoFontFamily, + ), + singleLine = true, + maxLines = 1, + trailing = { + ScanQrButton( + onValueChange = state.value.onChange, + ) + }, + leading = { + IconBox( + main = Icons.Outlined.KeyguardTwoFa, + ) + }, + ) + ExpandedIfNotEmpty( + modifier = Modifier + .fillMaxWidth(), + valueOrNull = state.totpToken, + ) { totpToken -> + Box { + VaultViewTotpBadge2( + modifier = Modifier + .padding(start = 16.dp), + copyText = state.copyText, + totpToken = totpToken, + ) + } + } +} + +@Composable +private fun NoteTextField( + modifier: Modifier = Modifier, + field: TextFieldModel2, + markdown: Boolean, +) = Column( + modifier = modifier, +) { + var isAutofillWindowShowing by remember { + mutableStateOf(false) + } + if (!markdown) { + isAutofillWindowShowing = false + } + + FlatTextField( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + label = stringResource(Res.strings.note), + value = field, + content = if (markdown) { + // composable + { + ExpandedIfNotEmpty( + Unit.takeIf { field.text.isNotEmpty() }, + ) { + TextButton( + onClick = { + isAutofillWindowShowing = true + }, + ) { + Text( + text = stringResource(Res.strings.additem_markdown_render_preview), + ) + } + } + } + } else { + null + }, + // TODO: Long note moves a lot when you focus then field, because + // the clear button suddenly appears. We might move the button + // to the footer or something to keep the functionality. + clearButton = false, + ) + if (markdown) { + val description = annotatedResource( + Res.strings.additem_markdown_note, + stringResource(Res.strings.additem_markdown_note_italic) + .let { "*$it*" } to SpanStyle( + fontStyle = FontStyle.Italic, + ), + stringResource(Res.strings.additem_markdown_note_bold) + .let { "**$it**" } to SpanStyle( + fontWeight = FontWeight.Bold, + ), + ) + Row( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding) + .padding(top = Dimens.topPaddingCaption), + ) { + val navigationController = LocalNavigationController.current + Text( + modifier = Modifier + .weight(1f), + text = description, + style = MaterialTheme.typography.bodyMedium, + color = LocalContentColor.current.combineAlpha(alpha = MediumEmphasisAlpha), + ) + Spacer( + modifier = Modifier + .width(16.dp), + ) + TextButton( + onClick = { + val intent = NavigationIntent.NavigateToBrowser( + url = "https://www.markdownguide.org/basic-syntax/", + ) + navigationController.queue(intent) + }, + ) { + Text( + text = stringResource(Res.strings.learn_more), + ) + } + } + } + + // Inject the dropdown popup to the bottom of the + // content. + val onDismissRequest = { + isAutofillWindowShowing = false + } + LeMOdelBottomSheet( + visible = isAutofillWindowShowing, + onDismissRequest = onDismissRequest, + ) { contentPadding -> + Column( + modifier = Modifier + .verticalScroll(rememberScrollState()) + .padding(contentPadding), + ) { + Text( + modifier = Modifier + .padding( + horizontal = 16.dp, + vertical = 8.dp, + ), + text = "Markdown", + style = MaterialTheme.typography.titleLarge, + ) + Md( + modifier = Modifier + .padding( + horizontal = Dimens.horizontalPadding, + vertical = Dimens.verticalPadding, + ), + markdown = field.text, + ) + } + } +} + +@Composable +private fun UrlTextField( + modifier: Modifier = Modifier, + item: AddStateItem.Url, +) { + val state by item.state.flow.collectAsState() + UrlFlatTextField( + modifier = modifier + .padding(horizontal = Dimens.horizontalPadding), + label = stringResource(Res.strings.uri), + value = state.text, + leading = { + IconBox( + main = Icons.Outlined.KeyguardWebsite, + ) + }, + trailing = { + val actions = remember( + state.options, + item.options, + ) { + state.options + item.options + } + OptionsButton( + actions = actions, + ) + }, + content = { + ExpandedIfNotEmpty( + valueOrNull = state.matchTypeTitle, + ) { matchType -> + FlatTextFieldBadge( + type = TextFieldModel2.Vl.Type.INFO, + text = matchType, + ) + } + }, + ) +} + +@Composable +private fun AttachmentTextField( + modifier: Modifier = Modifier, + item: AddStateItem.Attachment, +) { + val state by item.state.flow.collectAsState() + FlatTextField( + modifier = modifier + .padding(horizontal = Dimens.horizontalPadding), + label = "File", + placeholder = "File name", + value = state.name, + keyboardOptions = KeyboardOptions( + autoCorrect = false, + keyboardType = KeyboardType.Text, + ), + singleLine = true, + maxLines = 1, + leading = { + Box { + Icon( + imageVector = Icons.Outlined.KeyguardAttachment, + contentDescription = null, + ) + Row( + modifier = Modifier + .align(Alignment.BottomEnd) + .background( + MaterialTheme.colorScheme.tertiaryContainer, + MaterialTheme.shapes.extraSmall, + ), + ) { + if (state.synced) { + Icon( + modifier = Modifier + .size(16.dp) + .padding(1.dp), + imageVector = Icons.Outlined.CloudDone, + tint = MaterialTheme.colorScheme.onTertiaryContainer, + contentDescription = null, + ) + } + if (!state.synced) { + Icon( + modifier = Modifier + .size(16.dp) + .padding(1.dp), + imageVector = Icons.Outlined.FileUpload, + tint = MaterialTheme.colorScheme.onTertiaryContainer, + contentDescription = null, + ) + } + } + } + }, + content = { + ExpandedIfNotEmpty( + valueOrNull = state.size, + ) { fileSize -> + Column { + Spacer(Modifier.height(8.dp)) + HorizontalDivider() + Spacer(Modifier.height(8.dp)) + Text( + text = fileSize, + style = MaterialTheme.typography.labelSmall, + ) + } + } + }, + trailing = { + OptionsButton( + actions = item.options, + ) + }, + ) +} + +@Composable +private fun PasskeyField( + modifier: Modifier = Modifier, + item: AddStateItem.Passkey, +) { + val state by item.state.flow.collectAsState() + FlatItemLayout( + modifier = modifier, + leading = icon(Icons.Outlined.Key), + contentPadding = PaddingValues( + horizontal = 16.dp, + vertical = 8.dp, + ), + content = { + val passkey = state.passkey + if (passkey != null) { + FlatItemTextContent( + title = { + Text( + text = passkey.userDisplayName.orEmpty(), + ) + }, + text = { + Text( + text = passkey.rpName, + ) + }, + ) + } else { + FlatItemTextContent( + title = { + Text( + text = stringResource(Res.strings.passkey), + ) + }, + ) + } + }, + trailing = { + OptionsButton( + actions = item.options, + ) + }, + enabled = true, + ) +} + +@Composable +private fun TextTextField( + modifier: Modifier = Modifier, + state: AddStateItem.Text.State, +) { + FlatTextField( + modifier = modifier + .padding(horizontal = Dimens.horizontalPadding), + label = state.label, + value = state.value, + singleLine = state.singleLine, + keyboardOptions = state.keyboardOptions, + visualTransformation = state.visualTransformation, + ) +} + +@Composable +private fun FieldTextField( + modifier: Modifier = Modifier, + field: AddStateItem.Field.State.Text, +) { + val visibilityState = remember(field.hidden) { + VisibilityState( + isVisible = !field.hidden, + ) + } + BiFlatTextField( + modifier = modifier + .padding(horizontal = Dimens.horizontalPadding), + label = field.label, + value = field.text, + valueVisualTransformation = if (visibilityState.isVisible || !field.hidden) { + VisualTransformation.None + } else { + PasswordVisualTransformation() + }, + trailing = { + ExpandedIfNotEmptyForRow( + valueOrNull = Unit.takeIf { field.hidden }, + ) { + VisibilityToggle( + visibilityState = visibilityState, + ) + } + OptionsButton( + actions = field.options, + ) + }, + ) +} + +@Composable +private fun FieldSwitchField( + modifier: Modifier = Modifier, + field: AddStateItem.Field.State.Switch, +) { + FlatTextField( + modifier = modifier + .padding(horizontal = Dimens.horizontalPadding), + value = field.label, + trailing = { + Checkbox( + checked = field.checked, + onCheckedChange = field.onCheckedChange, + ) + OptionsButton( + actions = field.options, + ) + }, + ) +} + +@Composable +private fun FieldLinkedIdField( + modifier: Modifier = Modifier, + field: AddStateItem.Field.State.LinkedId, +) { + val label = field.label + + val labelInteractionSource = remember { MutableInteractionSource() } + val valueInteractionSource = remember { MutableInteractionSource() } + + val isError = remember( + label.error, + ) { + derivedStateOf { + label.error != null + } + } + + val hasFocusState = remember { + mutableStateOf(false) + } + + val isEmpty = remember( + label.state, + ) { + derivedStateOf { + label.state.value.isBlank() + } + } + + val dropdownShownState = remember { mutableStateOf(false) } + if (field.actions.isEmpty()) { + dropdownShownState.value = false + } + + // Inject the dropdown popup to the bottom of the + // content. + val onDismissRequest = remember(dropdownShownState) { + // lambda + { + dropdownShownState.value = false + } + } + + BiFlatContainer( + modifier = modifier + .padding(horizontal = Dimens.horizontalPadding) + .onFocusChanged { state -> + hasFocusState.value = state.hasFocus + }, + contentModifier = Modifier + .clickable( + indication = LocalIndication.current, + interactionSource = valueInteractionSource, + role = Role.Button, + ) { + dropdownShownState.value = true + }, + isError = isError, + isFocused = hasFocusState, + isEmpty = isEmpty, + label = { + BiFlatTextFieldLabel( + label = label, + interactionSource = labelInteractionSource, + ) + }, + content = { + Row { + val textColor = + if (field.value != null) { + LocalContentColor.current + } else { + LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha) + } + Text( + modifier = Modifier + .heightIn(min = BiFlatValueHeightMin) + .weight(1f, fill = false), + text = (field.value?.titleH() ?: Res.strings.select_linked_type) + .let { stringResource(it) }, + color = textColor, + ) + Spacer( + modifier = Modifier + .width(4.dp), + ) + Icon( + modifier = Modifier + .alpha(MediumEmphasisAlpha), + imageVector = Icons.Outlined.ArrowDropDown, + contentDescription = null, + ) + } + + DropdownMenu( + modifier = Modifier + .widthIn(min = DropdownMinWidth), + expanded = dropdownShownState.value, + onDismissRequest = onDismissRequest, + ) { + val scope = DropdownScopeImpl(this, onDismissRequest = onDismissRequest) + with(scope) { + field.actions.forEachIndexed { index, action -> + DropdownMenuItemFlat( + action = action, + ) + } + } + } + }, + trailing = { + OptionsButton( + actions = field.options, + ) + }, + ) +} + +@Composable +private fun SwitchField( + modifier: Modifier = Modifier, + item: AddStateItem.Switch, +) { + val localState by item.state.flow.collectAsState() + FlatItem( + modifier = modifier, + leading = { + Checkbox( + checked = localState.checked, + enabled = localState.onChange != null, + onCheckedChange = null, + ) + }, + title = { + Text( + text = item.title, + ) + }, + text = if (item.text != null) { + // composable + { + Text( + text = item.text, + ) + } + } else { + null + }, + onClick = localState.onChange?.partially1(!localState.checked), + ) +} + +@Composable +private fun DateMonthYearField( + modifier: Modifier = Modifier, + item: AddStateItem.DateMonthYear, +) { + val localState by item.state.flow.collectAsState() + BiFlatContainer( + modifier = modifier + .padding(horizontal = Dimens.horizontalPadding), + contentModifier = Modifier + .clickable( + indication = LocalIndication.current, + interactionSource = remember { + MutableInteractionSource() + }, + role = Role.Button, + ) { + localState.onClick.invoke() + }, + isError = rememberUpdatedState(newValue = false), + isFocused = rememberUpdatedState(newValue = false), + isEmpty = rememberUpdatedState(newValue = false), + label = { + Text( + text = item.label, + style = MaterialTheme.typography.bodySmall, + ) + }, + content = { + val density = LocalDensity.current + Row( + modifier = Modifier + .graphicsLayer { + translationY = 12f + density.density + }, + ) { + Row( + modifier = Modifier + .heightIn(min = BiFlatValueHeightMin) + .weight(1f, fill = false), + horizontalArrangement = Arrangement.spacedBy(2.dp), + ) { + val month = localState.month.text.ifBlank { "--" } + val year = localState.year.text.ifBlank { "----" } + Text( + text = month, + ) + Text( + text = "/", + color = LocalContentColor.current + .combineAlpha(DisabledEmphasisAlpha), + ) + Text( + text = year, + ) + } +// Spacer( +// modifier = Modifier +// .width(4.dp), +// ) +// Icon( +// modifier = Modifier +// .alpha(MediumEmphasisAlpha), +// imageVector = Icons.Outlined.ArrowDropDown, +// contentDescription = null, +// ) + } + }, + trailing = { + val isEmpty = localState.month.state.value.isEmpty() && + localState.year.state.value.isEmpty() + ExpandedIfNotEmptyForRow( + valueOrNull = Unit.takeUnless { isEmpty }, + ) { + Row( + verticalAlignment = Alignment.CenterVertically, + ) { + Spacer( + modifier = Modifier + .width(8.dp), + ) + VerticalDivider( + modifier = Modifier + .height(24.dp), + ) + Spacer( + modifier = Modifier + .width(8.dp), + ) + IconButton( + enabled = true, + onClick = { + localState.month.state.value = "" + localState.year.state.value = "" + }, + ) { + Icon( + imageVector = Icons.Outlined.Clear, + contentDescription = null, + ) + } + } + } + }, + ) +} + +@Composable +private fun EnumItem( + modifier: Modifier = Modifier, + icon: ImageVector, + label: String, + title: String, + dropdown: List, +) { + FlatDropdown( + modifier = modifier, + content = { + FlatItemTextContent2( + title = { + Text(label) + }, + text = { + Text(title) + }, + ) + }, + leading = { + Icon(icon, null) + }, + dropdown = dropdown, + ) +} + +@Composable +private fun SectionItem( + modifier: Modifier = Modifier, + title: String?, +) { + Section( + modifier = modifier, + text = title, + ) +} + +@OptIn(ExperimentalMaterial3Api::class, ExperimentalLayoutApi::class) +@Composable +private fun SuggestionItem( + modifier: Modifier = Modifier, + item: AddStateItem.Suggestion, +) { + val localState by item.state.flow.collectAsState() + FlowRow( + modifier = modifier + .padding(horizontal = Dimens.horizontalPadding), + horizontalArrangement = Arrangement.spacedBy(8.dp), + verticalArrangement = Arrangement.spacedBy(8.dp), + ) { + localState.items.forEach { item -> + key(item.key) { + SuggestionItemChip( + modifier = Modifier, + item = item, + ) + } + } + } +} + +@Composable +private fun SuggestionItemChip( + modifier: Modifier = Modifier, + item: AddStateItem.Suggestion.Item, +) { + val backgroundColor = + if (item.selected) MaterialTheme.colorScheme.primaryContainer else MaterialTheme.colorScheme.surface + Surface( + modifier = modifier, + border = if (item.selected) null else BorderStroke(0.dp, DividerColor), + color = backgroundColor, + shape = MaterialTheme.shapes.small, + ) { + val contentColor = LocalContentColor.current + .let { color -> + if (item.onClick != null) { + color // enabled + } else { + color.combineAlpha(DisabledEmphasisAlpha) + } + } + CompositionLocalProvider( + LocalContentColor provides contentColor, + ) { + Column( + modifier = Modifier + .then( + if (item.onClick != null) { + Modifier + .clickable(role = Role.Button) { + item.onClick.invoke() + } + } else { + Modifier + }, + ) + .padding( + horizontal = 12.dp, + vertical = 8.dp, + ), + ) { + Text( + text = item.text, + style = MaterialTheme.typography.bodyMedium, + ) + Text( + text = item.source, + style = MaterialTheme.typography.bodySmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + ) + } + } + } +} + +// +// Ownership +// + +@Composable +private fun ToolbarContentItem( + element: AddState.SaveToElement, +) { + element.items.forEach { + key(it.key) { + Column( + modifier = Modifier + .heightIn(min = 32.dp), + verticalArrangement = Arrangement.Center, + ) { + Text( + text = it.title, + style = MaterialTheme.typography.bodyMedium, + ) + if (it.text != null) { + Text( + text = it.text, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + style = MaterialTheme.typography.bodySmall, + ) + } + } + } + } +} + +@Composable +private fun ToolbarContentItemErr( + modifier: Modifier = Modifier, + icon: ImageVector, + element: AddState.SaveToElement, +) { + ToolbarContentItemErr( + modifier = modifier, + leading = { + Icon( + imageVector = icon, + contentDescription = null, + ) + }, + element = element, + ) +} + +@OptIn(ExperimentalLayoutApi::class) +@Composable +private fun ToolbarContentItemErr( + modifier: Modifier = Modifier, + leading: @Composable () -> Unit, + element: AddState.SaveToElement, +) { + val alpha = if (!element.readOnly) DefaultEmphasisAlpha else DisabledEmphasisAlpha + Row( + modifier = modifier + .heightIn(min = 32.dp) + .alpha(alpha), + ) { + Box( + modifier = Modifier + .size(32.dp), + contentAlignment = Alignment.Center, + ) { + Box( + modifier = Modifier + .size(16.dp), + ) { + leading() + } + } + Spacer(modifier = Modifier.width(14.dp)) + FlowRow( + horizontalArrangement = Arrangement.spacedBy(8.dp), + verticalArrangement = Arrangement.spacedBy(8.dp), + ) { + ToolbarContentItem(element = element) + } + } +} + +@OptIn(ExperimentalLayoutApi::class) +@Composable +private fun ToolbarContentItemErrSkeleton( + modifier: Modifier = Modifier, + fraction: Float = 1f, +) { + Row( + modifier = modifier + .heightIn(min = 32.dp), + ) { + Box( + modifier = Modifier + .size(32.dp), + contentAlignment = Alignment.Center, + ) { + val contentColor = LocalContentColor.current + .combineAlpha(DisabledEmphasisAlpha) + Box( + modifier = Modifier + .shimmer() + .size(16.dp) + .clip(MaterialTheme.shapes.small) + .background(contentColor), + ) + } + Spacer(modifier = Modifier.width(14.dp)) + FlowRow( + horizontalArrangement = Arrangement.spacedBy(8.dp), + verticalArrangement = Arrangement.spacedBy(8.dp), + ) { + Column( + modifier = Modifier + .heightIn(min = 32.dp), + verticalArrangement = Arrangement.Center, + ) { + SkeletonText( + modifier = Modifier + .fillMaxWidth(fraction), + style = MaterialTheme.typography.bodyMedium, + ) + } + } + } +} + +@Composable +private fun ToolbarContent( + modifier: Modifier = Modifier, + account: AddState.SaveToElement? = null, + organization: AddState.SaveToElement? = null, + collection: AddState.SaveToElement? = null, + folder: AddState.SaveToElement? = null, + onClick: (() -> Unit)? = null, +) { + Column( + modifier = modifier + .fillMaxWidth() + .padding( + horizontal = 8.dp, + vertical = 2.dp, + ) + .clip(MaterialTheme.shapes.medium) + .then( + if (onClick != null) { + Modifier + .clickable( + role = Role.Button, + onClick = onClick, + ) + } else { + Modifier + }, + ) + .padding(vertical = 8.dp), + verticalArrangement = Arrangement.spacedBy(8.dp, Alignment.CenterVertically), + ) { + Row( + modifier = Modifier + .fillMaxWidth() + .padding(end = 8.dp), + horizontalArrangement = Arrangement.spacedBy(8.dp), + ) { + if (account != null) { + ToolbarContentItemErr( + modifier = Modifier + .weight(1.5f), + leading = { + val accentColors = account.items.firstOrNull() + ?.accentColors + ?: return@ToolbarContentItemErr + val backgroundColor = if (MaterialTheme.colorScheme.isDark) { + accentColors.dark + } else { + accentColors.light + } + Box( + modifier = Modifier + .size(24.dp) + .background(backgroundColor, CircleShape), + ) + }, + element = account, + ) + Spacer(modifier = Modifier.width(8.dp)) + } + if (folder != null) { + ToolbarContentItemErr( + modifier = Modifier + .weight(1f) + .padding(end = 8.dp), + icon = Icons.Outlined.Folder, + element = folder, + ) + } + } + ExpandedIfNotEmpty( + valueOrNull = organization, + ) { org -> + ToolbarContentItemErr( + modifier = Modifier + .padding(end = 8.dp), + icon = Icons.Outlined.KeyguardOrganization, + element = org, + ) + } + ExpandedIfNotEmpty( + valueOrNull = collection, + ) { col -> + ToolbarContentItemErr( + modifier = Modifier + .padding(end = 8.dp), + icon = Icons.Outlined.KeyguardCollection, + element = col, + ) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/add/AddState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/add/AddState.kt new file mode 100644 index 00000000..8f887614 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/add/AddState.kt @@ -0,0 +1,337 @@ +package com.artemchep.keyguard.feature.home.vault.add + +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.runtime.Immutable +import androidx.compose.ui.graphics.RectangleShape +import androidx.compose.ui.graphics.Shape +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.text.input.VisualTransformation +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.TotpToken +import com.artemchep.keyguard.common.model.UsernameVariation2 +import com.artemchep.keyguard.common.model.create.CreateRequest +import com.artemchep.keyguard.common.usecase.CopyText +import com.artemchep.keyguard.feature.auth.common.SwitchFieldModel +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import com.artemchep.keyguard.feature.confirmation.organization.FolderInfo +import com.artemchep.keyguard.feature.filepicker.FilePickerIntent +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.icons.AccentColors +import kotlinx.collections.immutable.ImmutableList +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.StateFlow + +/** + * @author Artem Chepurnyi + */ +data class AddState( + val title: String = "", + val favourite: SwitchFieldModel, + val ownership: Ownership, + val sideEffects: SideEffects, + val actions: List = emptyList(), + val items: List = emptyList(), + val onSave: (() -> Unit)? = null, +) { + @Immutable + data class SideEffects( + val filePickerIntentFlow: Flow>, + ) { + companion object + } + + data class Ownership( + val data: Data, + val account: SaveToElement? = null, + val organization: SaveToElement? = null, + val collection: SaveToElement? = null, + val folder: SaveToElement? = null, + val onClick: (() -> Unit)? = null, + ) { + data class Data( + val accountId: String?, + val folderId: FolderInfo, + val organizationId: String?, + val collectionIds: Set, + ) + } + + data class SaveToElement( + val readOnly: Boolean, + val items: List = emptyList(), + ) { + data class Item( + val key: String, + val title: String, + val text: String? = null, + val accentColors: AccentColors? = null, + ) + } +} + +sealed interface AddStateItem { + val id: String + + interface HasOptions { + val options: List + + /** + * Copies the data class replacing the old options with a + * provided ones. + */ + fun withOptions( + options: List, + ): T + } + + interface HasDecor { + val decor: Decor + } + + interface HasState { + val state: LocalStateItem + } + + data class Decor( + val shape: Shape = RectangleShape, + val elevation: Dp = 0.dp, + ) + + data class Title( + override val id: String, + override val state: LocalStateItem, + ) : AddStateItem, HasState + + data class Username( + override val id: String, + override val state: LocalStateItem, + ) : AddStateItem, HasState { + data class State( + val value: TextFieldModel2, + val type: UsernameVariation2, + ) + } + + data class Password( + override val id: String, + override val state: LocalStateItem, + ) : AddStateItem, HasState + + data class Text( + override val id: String, + override val decor: Decor = Decor(), + override val state: LocalStateItem, + ) : AddStateItem, HasDecor, HasState { + data class State( + val value: TextFieldModel2, + val label: String? = null, + val singleLine: Boolean = false, + val keyboardOptions: KeyboardOptions = KeyboardOptions.Default, + val visualTransformation: VisualTransformation = VisualTransformation.None, + ) + } + + data class Suggestion( + override val id: String, + override val decor: Decor = Decor(), + override val state: LocalStateItem, + ) : AddStateItem, HasDecor, HasState { + data class State( + val items: ImmutableList, + ) + + data class Item( + val key: String, + val text: String, + val value: String, + val source: String, + val selected: Boolean, + val onClick: (() -> Unit)? = null, + ) + } + + data class Totp( + override val id: String, + override val state: LocalStateItem, + ) : AddStateItem, HasState { + data class State( + val copyText: CopyText, + val value: TextFieldModel2, + val totpToken: TotpToken? = null, + ) + } + + data class Passkey( + override val id: String, + override val options: List = emptyList(), + override val state: LocalStateItem, + ) : AddStateItem, HasOptions, HasState { + override fun withOptions( + options: List, + ): Passkey = copy( + options = options, + ) + + data class State( + val passkey: DSecret.Login.Fido2Credentials?, + ) + } + + data class Attachment( + override val id: String, + override val options: List = emptyList(), + override val state: LocalStateItem, + ) : AddStateItem, HasOptions, HasState { + override fun withOptions(options: List): Attachment = + copy( + options = options, + ) + + data class State( + val id: String, + val name: TextFieldModel2, + val size: String? = null, + /** + * `true` if the attachment is already uploaded to the server, + * `false` otherwise. + */ + val synced: Boolean, + ) + } + + data class Url( + override val id: String, + override val options: List = emptyList(), + override val state: LocalStateItem, + ) : AddStateItem, HasOptions, HasState { + override fun withOptions(options: List): Url = + copy( + options = options, + ) + + data class State( + override val options: List = emptyList(), + val text: TextFieldModel2, + val matchType: DSecret.Uri.MatchType? = null, + val matchTypeTitle: String? = null, + ) : HasOptions { + override fun withOptions(options: List): State = + copy( + options = options, + ) + } + } + + data class Field( + override val id: String, + override val options: List = emptyList(), + override val state: LocalStateItem, + ) : AddStateItem, HasOptions, HasState { + override fun withOptions(options: List): Field = + copy( + options = options, + ) + + sealed interface State : HasOptions { + data class Text( + override val options: List = emptyList(), + val label: TextFieldModel2, + val text: TextFieldModel2, + val hidden: Boolean = false, + ) : State { + override fun withOptions(options: List): Text = + copy( + options = options, + ) + } + + data class Switch( + override val options: List = emptyList(), + val checked: Boolean = false, + val onCheckedChange: ((Boolean) -> Unit)? = null, + val label: TextFieldModel2, + ) : State { + override fun withOptions(options: List): Switch = + copy( + options = options, + ) + } + + data class LinkedId( + override val options: List = emptyList(), + val value: DSecret.Field.LinkedId?, + val actions: List, + val label: TextFieldModel2, + ) : State { + override fun withOptions(options: List): LinkedId = + copy( + options = options, + ) + } + } + } + + data class Note( + override val id: String, + override val state: LocalStateItem, + val markdown: Boolean, + ) : AddStateItem, HasState + + data class Enum( + override val id: String, + val icon: ImageVector, + val label: String, + override val state: LocalStateItem, + ) : AddStateItem, HasState { + data class State( + val value: String = "", + val dropdown: List = emptyList(), + ) + } + + data class Switch( + override val id: String, + val title: String, + val text: String? = null, + override val state: LocalStateItem, + ) : AddStateItem, HasState + + data class Section( + override val id: String, + val text: String? = null, + ) : AddStateItem + + // + // CUSTOM + // + + data class DateMonthYear( + override val id: String, + override val state: LocalStateItem, + val label: String, + ) : AddStateItem, HasState { + data class State( + val month: TextFieldModel2, + val year: TextFieldModel2, + val onClick: () -> Unit, + ) + } + + // + // Items that may modify the amount of items in the + // list. + // + + data class Add( + override val id: String, + val text: String, + val actions: List, + ) : AddStateItem +} + +data class LocalStateItem( + val flow: StateFlow, + val populator: CreateRequest.(T) -> CreateRequest = { this }, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/add/AddStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/add/AddStateProducer.kt new file mode 100644 index 00000000..72fb434d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/add/AddStateProducer.kt @@ -0,0 +1,3411 @@ +package com.artemchep.keyguard.feature.home.vault.add + +import androidx.compose.animation.Crossfade +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material.Checkbox +import androidx.compose.material.RadioButton +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.AccountBox +import androidx.compose.material.icons.outlined.Apps +import androidx.compose.material.icons.outlined.ArrowDownward +import androidx.compose.material.icons.outlined.ArrowUpward +import androidx.compose.material.icons.outlined.DeleteForever +import androidx.compose.material.icons.outlined.Password +import androidx.compose.material.icons.outlined.Visibility +import androidx.compose.material.icons.outlined.VisibilityOff +import androidx.compose.material3.Switch +import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.input.KeyboardType +import androidx.compose.ui.text.input.OffsetMapping +import androidx.compose.ui.text.input.TransformedText +import androidx.compose.ui.text.input.VisualTransformation +import arrow.core.flatten +import arrow.core.partially1 +import arrow.core.partially2 +import arrow.core.widen +import arrow.optics.Optional +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.effectTap +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.io.toIO +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.ToastMessage +import com.artemchep.keyguard.common.model.TotpToken +import com.artemchep.keyguard.common.model.UsernameVariation2 +import com.artemchep.keyguard.common.model.create.CreateRequest +import com.artemchep.keyguard.common.model.create.address1 +import com.artemchep.keyguard.common.model.create.address2 +import com.artemchep.keyguard.common.model.create.address3 +import com.artemchep.keyguard.common.model.create.brand +import com.artemchep.keyguard.common.model.create.card +import com.artemchep.keyguard.common.model.create.cardholderName +import com.artemchep.keyguard.common.model.create.city +import com.artemchep.keyguard.common.model.create.code +import com.artemchep.keyguard.common.model.create.company +import com.artemchep.keyguard.common.model.create.country +import com.artemchep.keyguard.common.model.create.email +import com.artemchep.keyguard.common.model.create.expMonth +import com.artemchep.keyguard.common.model.create.expYear +import com.artemchep.keyguard.common.model.create.firstName +import com.artemchep.keyguard.common.model.create.fromMonth +import com.artemchep.keyguard.common.model.create.fromYear +import com.artemchep.keyguard.common.model.create.identity +import com.artemchep.keyguard.common.model.create.lastName +import com.artemchep.keyguard.common.model.create.licenseNumber +import com.artemchep.keyguard.common.model.create.middleName +import com.artemchep.keyguard.common.model.create.note +import com.artemchep.keyguard.common.model.create.number +import com.artemchep.keyguard.common.model.create.passportNumber +import com.artemchep.keyguard.common.model.create.phone +import com.artemchep.keyguard.common.model.create.postalCode +import com.artemchep.keyguard.common.model.create.ssn +import com.artemchep.keyguard.common.model.create.state +import com.artemchep.keyguard.common.model.create.title +import com.artemchep.keyguard.common.model.create.username +import com.artemchep.keyguard.common.model.creditCards +import com.artemchep.keyguard.common.model.fileName +import com.artemchep.keyguard.common.model.fileSize +import com.artemchep.keyguard.common.model.title +import com.artemchep.keyguard.common.model.titleH +import com.artemchep.keyguard.common.service.clipboard.ClipboardService +import com.artemchep.keyguard.common.service.logging.LogRepository +import com.artemchep.keyguard.common.usecase.AddCipher +import com.artemchep.keyguard.common.usecase.CipherUnsecureUrlCheck +import com.artemchep.keyguard.common.usecase.CopyText +import com.artemchep.keyguard.common.usecase.GetAccounts +import com.artemchep.keyguard.common.usecase.GetCiphers +import com.artemchep.keyguard.common.usecase.GetCollections +import com.artemchep.keyguard.common.usecase.GetFolders +import com.artemchep.keyguard.common.usecase.GetGravatarUrl +import com.artemchep.keyguard.common.usecase.GetMarkdown +import com.artemchep.keyguard.common.usecase.GetOrganizations +import com.artemchep.keyguard.common.usecase.GetProfiles +import com.artemchep.keyguard.common.usecase.GetTotpCode +import com.artemchep.keyguard.common.usecase.ShowMessage +import com.artemchep.keyguard.common.util.flow.EventFlow +import com.artemchep.keyguard.common.util.flow.combineToList +import com.artemchep.keyguard.common.util.flow.foldAsList +import com.artemchep.keyguard.common.util.flow.persistingStateIn +import com.artemchep.keyguard.common.util.validLuhn +import com.artemchep.keyguard.feature.apppicker.AppPickerResult +import com.artemchep.keyguard.feature.apppicker.AppPickerRoute +import com.artemchep.keyguard.feature.auth.common.SwitchFieldModel +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import com.artemchep.keyguard.feature.auth.common.util.ValidationUri +import com.artemchep.keyguard.feature.auth.common.util.format +import com.artemchep.keyguard.feature.auth.common.util.validateUri +import com.artemchep.keyguard.feature.auth.common.util.validatedTitle +import com.artemchep.keyguard.feature.confirmation.ConfirmationRoute +import com.artemchep.keyguard.feature.confirmation.createConfirmationDialogIntent +import com.artemchep.keyguard.feature.confirmation.organization.FolderInfo +import com.artemchep.keyguard.feature.confirmation.organization.OrganizationConfirmationResult +import com.artemchep.keyguard.feature.confirmation.organization.OrganizationConfirmationRoute +import com.artemchep.keyguard.feature.datepicker.DatePickerResult +import com.artemchep.keyguard.feature.datepicker.DatePickerRoute +import com.artemchep.keyguard.feature.filepicker.FilePickerIntent +import com.artemchep.keyguard.feature.filepicker.humanReadableByteCountSI +import com.artemchep.keyguard.feature.home.vault.add.attachment.SkeletonAttachment +import com.artemchep.keyguard.feature.home.vault.add.attachment.SkeletonAttachmentItemFactory +import com.artemchep.keyguard.feature.home.vault.component.obscurePassword +import com.artemchep.keyguard.feature.home.vault.screen.VaultViewRoute +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.registerRouteResultReceiver +import com.artemchep.keyguard.feature.navigation.state.PersistedStorage +import com.artemchep.keyguard.feature.navigation.state.RememberStateFlowScope +import com.artemchep.keyguard.feature.navigation.state.TranslatorScope +import com.artemchep.keyguard.feature.navigation.state.copy +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.platform.leParseUri +import com.artemchep.keyguard.platform.parcelize.LeParcelable +import com.artemchep.keyguard.platform.parcelize.LeParcelize +import com.artemchep.keyguard.provider.bitwarden.usecase.autofill +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.IconBox +import com.artemchep.keyguard.ui.icons.Stub +import com.artemchep.keyguard.ui.icons.icon +import kotlinx.collections.immutable.ImmutableList +import kotlinx.collections.immutable.persistentListOf +import kotlinx.collections.immutable.toImmutableList +import kotlinx.collections.immutable.toPersistentList +import kotlinx.collections.immutable.toPersistentMap +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.debounce +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.flow.onStart +import kotlinx.coroutines.flow.scan +import kotlinx.coroutines.flow.shareIn +import kotlinx.coroutines.flow.update +import kotlinx.datetime.Clock +import kotlinx.datetime.Instant +import kotlinx.serialization.encodeToString +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance +import java.io.Serializable +import java.util.UUID + +// TODO: Support hide password option +@Composable +fun produceAddScreenState( + args: AddRoute.Args, +) = with(localDI().direct) { + produceAddScreenState( + args = args, + getAccounts = instance(), + getProfiles = instance(), + getOrganizations = instance(), + getCollections = instance(), + getFolders = instance(), + getCiphers = instance(), + getTotpCode = instance(), + getGravatarUrl = instance(), + getMarkdown = instance(), + logRepository = instance(), + clipboardService = instance(), + cipherUnsecureUrlCheck = instance(), + showMessage = instance(), + addCipher = instance(), + ) +} + +@kotlinx.serialization.Serializable +@LeParcelize +data class AddItemOwnershipData( + val accountId: String?, + val folder: FolderInfo, + val organizationId: String?, + val collectionIds: Set, +) : LeParcelable + +@Composable +fun produceAddScreenState( + args: AddRoute.Args, + getAccounts: GetAccounts, + getProfiles: GetProfiles, + getOrganizations: GetOrganizations, + getCollections: GetCollections, + getFolders: GetFolders, + getCiphers: GetCiphers, + getTotpCode: GetTotpCode, + getGravatarUrl: GetGravatarUrl, + getMarkdown: GetMarkdown, + logRepository: LogRepository, + clipboardService: ClipboardService, + cipherUnsecureUrlCheck: CipherUnsecureUrlCheck, + showMessage: ShowMessage, + addCipher: AddCipher, +): Loadable = produceScreenState( + key = "cipher_add", + initial = Loadable.Loading, + args = arrayOf( + args, + getAccounts, + getOrganizations, + getCollections, + getFolders, + getCiphers, + getTotpCode, + ), +) { + val copyText = copy(clipboardService) + val markdown = getMarkdown().first() + + val ownershipFlow = produceOwnershipFlow( + args = args, + getProfiles = getProfiles, + getOrganizations = getOrganizations, + getCollections = getCollections, + getFolders = getFolders, + getCiphers = getCiphers, + ) + + val loginHolder = produceLoginState( + args = args, + ownershipFlow = ownershipFlow, + copyText = copyText, + getTotpCode = getTotpCode, + getGravatarUrl = getGravatarUrl, + ) + val cardHolder = produceCardState( + args = args, + ) + val identityHolder = produceIdentityState( + args = args, + ) + val noteHolder = produceNoteState( + args = args, + markdown = markdown, + ) + + val typeFlow = kotlin.run { + val initialValue = args.type + ?: args.initialValue?.type + // this should never happen + ?: DSecret.Type.None + flowOf(initialValue) + } + + val filePickerIntentSink = EventFlow>() + + val sideEffects = AddState.SideEffects( + filePickerIntentFlow = filePickerIntentSink, + ) + + val passkeysFactories = kotlin.run { + val passkeyFactory = AddStateItemPasskeyFactory( + ) + listOf( + passkeyFactory, + ) + } + val passkeysFlow = foo3( + logRepository = logRepository, + scope = "passkey", + initial = kotlin.run { + val existingPasskeys = args.initialValue?.login?.fido2Credentials + .orEmpty() + existingPasskeys + }, + initialType = { "passkey" }, + factories = passkeysFactories, + afterList = { + if (isEmpty()) { + return@foo3 + } + + val header = AddStateItem.Section( + id = "passkey.section", + text = translate(Res.strings.passkeys), + ) + add(0, header) + }, + ) + + val urisFactories = kotlin.run { + val uriFactory = AddStateItemUriFactory( + cipherUnsecureUrlCheck = cipherUnsecureUrlCheck, + ) + listOf( + uriFactory, + ) + } + val urisFlow = foo3( + logRepository = logRepository, + scope = "uri", + initial = kotlin.run { + val existingUris = args.initialValue?.uris + .orEmpty() + existingUris.autofill( + applicationId = args.autofill?.applicationId, + webDomain = args.autofill?.webDomain, + webScheme = args.autofill?.webScheme, + ) + }, + initialType = { "uri" }, + factories = urisFactories, + afterList = { + val header = AddStateItem.Section( + id = "uri.section", + text = translate(Res.strings.uris), + ) + add(0, header) + }, + extra = { + typeBasedAddItem( + translator = this@produceScreenState, + scope = "uri", + typesFlow = flowOf( + listOf( + Foo2Type( + type = "uri", + name = translate(Res.strings.uri), + ), + ), + ), + ) + }, + ) + + val attachmentsFactories = kotlin.run { + val attachmentFactory = SkeletonAttachmentItemFactory() + listOf( + attachmentFactory, + ) + } + val attachmentsFlow = foo3( + logRepository = logRepository, + scope = "attachment", + initial = args.initialValue?.attachments.orEmpty() + .map { + when (it) { + is DSecret.Attachment.Remote -> { + SkeletonAttachment.Remote( + identity = SkeletonAttachment.Remote.Identity( + id = it.id, + ), + name = it.fileName(), + size = it.fileSize()?.let(::humanReadableByteCountSI).orEmpty(), + ) + } + + is DSecret.Attachment.Local -> { + val uri = kotlin.runCatching { + leParseUri(it.url) + }.getOrNull() + ?: return@map null + SkeletonAttachment.Local( + identity = SkeletonAttachment.Local.Identity( + id = it.id, + uri = uri, + size = it.fileSize(), + ), + name = it.fileName(), + size = it.fileSize()?.let(::humanReadableByteCountSI).orEmpty(), + ) + } + } + } + .filterNotNull(), + initialType = { "attachment" }, + factories = attachmentsFactories, + afterList = { +// val header = AddStateItem.Section( +// id = "attachment.section", +// text = "Attachments", +// ) +// add(0, header) + }, + extra = { + val action = FlatItemAction( + title = "Attachment", + onClick = { + val intent = FilePickerIntent.OpenDocument { info -> + val msg = ToastMessage( + title = "Picked a file!", + text = info?.name?.toString(), + ) + showMessage.copy(msg) + + if (info != null) { + val model = SkeletonAttachment.Local( + identity = SkeletonAttachment.Local.Identity( + id = UUID.randomUUID().toString(), + uri = info.uri, + size = info.size, + ), + name = info.name ?: "File", + size = info.size?.let(::humanReadableByteCountSI).orEmpty(), + ) + add("attachment", model) + } + } + filePickerIntentSink.emit(intent) + }, + ) + val item = AddStateItem.Add( + id = "attachment.add", + text = translate(Res.strings.list_add), + actions = listOf(action), + ) + flowOf(emptyList()) + }, + ) + + val typeItemsFlow = typeFlow + .flatMapLatest { type -> + when (type) { + DSecret.Type.Login -> + combine( + passkeysFlow, + urisFlow, + ) { passkeys, uris -> + loginHolder.items + passkeys + uris + } + + DSecret.Type.Card -> flowOf(cardHolder.items) + DSecret.Type.Identity -> flowOf(identityHolder.items) + DSecret.Type.SecureNote -> flowOf(noteHolder.items) + DSecret.Type.None -> flowOf(emptyList()) + } + } + val miscItems by lazy { + listOf( + AddStateItem.Section( + id = "misc", + ), + AddStateItem.Note( + id = "misc.note", + state = noteHolder.note.state, + markdown = markdown, + ), + ) + } + val miscFlow = typeFlow + .map { type -> + val hasNotes = when (type) { + DSecret.Type.SecureNote -> true + else -> false + } + hasNotes + } + .distinctUntilChanged() + .map { hasNotes -> + miscItems.takeUnless { hasNotes }.orEmpty() + } + + val favouriteSink = mutablePersistedFlow("favourite") { + args.initialValue?.favorite + ?: false + } + val favouriteFlow = favouriteSink + .map { checked -> + SwitchFieldModel( + checked = checked, + onChange = favouriteSink::value::set, + ) + } + val reprompt = + AddStateItem.Switch( + id = "reprompt", + title = translate(Res.strings.additem_auth_reprompt_title), + text = translate(Res.strings.additem_auth_reprompt_text), + state = LocalStateItem( + flow = kotlin.run { + val sink = mutablePersistedFlow("reprompt") { + args.initialValue?.reprompt + ?: false + } + sink.map { + SwitchFieldModel( + checked = it, + onChange = sink::value::set, + ) + } + .persistingStateIn( + scope = screenScope, + started = SharingStarted.WhileSubscribed(), + initialValue = SwitchFieldModel(), + ) + }, + populator = { + copy( + reprompt = it.checked, + ) + }, + ), + ) + val actions = listOf(reprompt) + .map { item -> + when (item) { + is AddStateItem.Switch -> + item + .state.flow + .map { model -> + FlatItemAction( + id = item.id, + title = item.title, + text = item.text, + leading = icon(Icons.Outlined.Password), + trailing = { + Switch( + checked = model.checked, + onCheckedChange = model.onChange, + ) + }, + onClick = model.onChange?.partially1(!model.checked), + ) + } + + else -> { + TODO() + } + } + } + .foldAsList() + + val fieldsFactories = kotlin.run { + val textFactory = AddStateItemFieldTextFactory() + val booleanFactory = AddStateItemFieldBooleanFactory() + val linkedIdFactory = AddStateItemFieldLinkedIdFactory( + typeFlow = typeFlow, + ) + listOf( + textFactory, + booleanFactory, + linkedIdFactory, + ) + } + val fieldsFlow = foo3( + logRepository = logRepository, + scope = "field", + initial = args.initialValue?.fields.orEmpty(), + initialType = { field -> + when (field.type) { + DSecret.Field.Type.Text, + DSecret.Field.Type.Hidden, + -> "field.text" + + DSecret.Field.Type.Boolean -> "field.boolean" + DSecret.Field.Type.Linked -> "field.linked_id" + } + }, + factories = fieldsFactories, + afterList = { + val header = AddStateItem.Section( + id = "field.section", + text = translate(Res.strings.custom_fields), + ) + add(0, header) + }, + extra = { + typeBasedAddItem( + translator = this@produceScreenState, + scope = "field", + typesFlow = typeFlow + .map { type -> + val textType = Foo2Type( + type = "field.text", + name = translate(Res.strings.field_type_text), + ) + val booleanType = Foo2Type( + type = "field.boolean", + name = translate(Res.strings.field_type_boolean), + ) + val linkedIdType = Foo2Type( + type = "field.linked_id", + name = translate(Res.strings.field_type_linked), + ) + when (type) { + DSecret.Type.Login, + DSecret.Type.Card, + DSecret.Type.Identity, + -> listOf( + textType, + booleanType, + linkedIdType, + ) + + DSecret.Type.SecureNote -> listOf( + textType, + booleanType, + ) + + DSecret.Type.None -> emptyList() + } + }, + ) + }, + ) + + val titleItem = AddStateItem.Title( + id = "title", + state = LocalStateItem( + flow = kotlin.run { + val key = "title" + val sink = mutablePersistedFlow(key) { + args.name + ?: args.initialValue?.name + ?: args.autofill?.webDomain + ?: "" + } + val state = asComposeState(key) + combine( + sink + .validatedTitle(this), + typeFlow, + ) { validatedTitle, type -> + TextFieldModel2.of( + state = state, + hint = translate(type.titleH()), + validated = validatedTitle, + onChange = state::value::set, + ) + } + .persistingStateIn( + scope = screenScope, + started = SharingStarted.WhileSubscribed(1000L), + initialValue = TextFieldModel2.empty, + ) + }, + populator = { field -> + copy( + title = field.text, + ) + }, + ), + ) + val titleSuggestions = createItem2( + prefix = "title", + key = "title", + args = args, + getSuggestion = { it.name }, + selectedFlow = titleItem.state.flow.map { it.text }, + concealed = false, + onClick = { + titleItem.state.flow.value.onChange?.invoke(it) + }, + ) + val items1 = listOfNotNull( + titleItem, + titleSuggestions, + ) + + fun stetify(flow: Flow>) = flow + .map { items -> + items + .mapNotNull { item -> + val stateHolder = item as? AddStateItem.HasState + ?: return@mapNotNull null + + val state = stateHolder.state + val flow = state.flow + .map { v -> + state.populator + .partially2(v) + } + item.id to flow + } + } + + val title = if (args.ownershipRo) { + translate(Res.strings.additem_header_edit_title) + } else { + translate(Res.strings.additem_header_new_title) + } + val itfff = combine( + typeItemsFlow, + fieldsFlow, + attachmentsFlow, + miscFlow, + ) { arr -> + arr.toList().flatten() + } + .onEach { l -> + logRepository.post("Foo3", "combine ${l.size}") + } + + val outputFlow = combine( + stetify(itfff), + stetify(flowOf(items1 + reprompt)), + ) { arr -> + arr + .flatMap { + it + } + } + .flatMapLatest { populatorFlows -> + val typePopulator = + typeFlow + .map { type -> + val f = fun(r: CreateRequest): CreateRequest { + return r.copy(type = type) + } + f + } + val favouritePopulator = + favouriteSink + .map { favourite -> + val f = fun(r: CreateRequest): CreateRequest { + return r.copy(favorite = favourite) + } + f + } + val ownershipPopulator = + ownershipFlow + .map { ownership -> + val f = fun(r: CreateRequest): CreateRequest { + val requestOwnership = CreateRequest.Ownership2( + accountId = ownership.data.accountId, + folder = ownership.data.folderId, + organizationId = ownership.data.organizationId, + collectionIds = ownership.data.collectionIds, + ) + return r.copy(ownership2 = requestOwnership) + } + f + } + (populatorFlows.map { it.second } + ownershipPopulator + favouritePopulator + typePopulator) + .combineToList() + } + .map { populators -> + populators.fold( + initial = CreateRequest( + now = Clock.System.now(), + ), + ) { y, x -> x(y) } + } + .distinctUntilChanged() + val f = combine( + actions, + favouriteFlow, + ownershipFlow, + itfff, + outputFlow, + ) { q, s, c, x, request -> + logRepository.post( + "Foo3", + "create state ${x.size} (+${items1.size}) items| ${x.joinToString { it.id }}", + ) + val state = AddState( + title = title, + favourite = s, + ownership = c, + actions = q, + items = items1 + x, + sideEffects = sideEffects, + onSave = { + val cipherIdToRequestMap = mapOf( + args.initialValue?.id?.takeIf { args.ownershipRo } to request, + ) + addCipher(cipherIdToRequestMap) + .effectTap { + val intent = kotlin.run { + val list = mutableListOf() + list += NavigationIntent.PopById(screenId, exclusive = false) + if (args.behavior.launchEditedCipher) { + val cipherId = it.first() + val accountId = c.data.accountId!! + val route = VaultViewRoute( + itemId = cipherId, + accountId = accountId, + ) + list += NavigationIntent.NavigateToRoute(route) + } + NavigationIntent.Composite( + list = list, + ) + } + navigate(intent) + } + .launchIn(appScope) + }, + ) + Loadable.Ok(state) + } + f +} + +class AddStateItemAttachmentFactory : Foo2Factory { + override val type: String = "attachment" + + override fun RememberStateFlowScope.release(key: String) { + clearPersistedFlow("$key.name") + } + + override fun RememberStateFlowScope.add( + key: String, + initial: DSecret.Attachment?, + ): AddStateItem.Attachment { + val nameKey = "$key.name" + val nameSink = mutablePersistedFlow(nameKey) { + initial?.fileName().orEmpty() + } + val nameMutableState = asComposeState(nameKey) + + val textFlow = nameSink + .map { uri -> + TextFieldModel2( + text = uri, + state = nameMutableState, + onChange = nameMutableState::value::set, + ) + } + val stateFlow = textFlow + .map { text -> + AddStateItem.Attachment.State( + id = "id", + name = text, + size = null, // initial?.fileSize(), + synced = initial != null, + ) + } + .persistingStateIn( + scope = screenScope, + started = SharingStarted.WhileSubscribed(), + initialValue = AddStateItem.Attachment.State( + id = "id", + name = TextFieldModel2.empty, + size = null, + synced = initial != null, + ), + ) + return AddStateItem.Attachment( + id = key, + state = LocalStateItem( + flow = stateFlow, + populator = { state -> + this + }, + ), + ) + } +} + +class AddStateItemUriFactory( + private val cipherUnsecureUrlCheck: CipherUnsecureUrlCheck, +) : Foo2Factory { + override val type: String = "uri" + + override fun RememberStateFlowScope.release(key: String) { + clearPersistedFlow("$key.uri") + clearPersistedFlow("$key.match_type") + } + + override fun RememberStateFlowScope.add( + key: String, + initial: DSecret.Uri?, + ): AddStateItem.Url { + val uriKey = "$key.uri" + val uriSink = mutablePersistedFlow(uriKey) { + initial?.uri.orEmpty() + } + val uriMutableState = asComposeState(uriKey) + + val matchTypeSink = mutablePersistedFlow("$key.match_type") { + initial?.match ?: DSecret.Uri.MatchType.default + } + + val actionsAppPickerItem = FlatItemAction( + leading = icon(Icons.Outlined.Apps), + title = translate(Res.strings.uri_match_app_title), + trailing = { + ChevronIcon() + }, + onClick = { + val route = registerRouteResultReceiver(AppPickerRoute) { result -> + if (result is AppPickerResult.Confirm) { + uriMutableState.value = result.uri + matchTypeSink.value = DSecret.Uri.MatchType.default + } + } + val intent = NavigationIntent.NavigateToRoute( + route = route, + ) + navigate(intent) + }, + ) + // Add a ability to change the + // match type via an option. + val actionsMatchTypeItemFlow = matchTypeSink + .map { selectedMatchType -> + val text = translate(selectedMatchType.titleH()) + FlatItemAction( + leading = icon(Icons.Stub), + title = translate(Res.strings.uri_match_detection_title), + text = text, + onClick = { + val items = DSecret.Uri.MatchType.entries + .map { type -> + val typeTitle = translate(type.titleH()) + ConfirmationRoute.Args.Item.EnumItem.Item( + key = type.name, + title = typeTitle, + ) + } + val intent = createConfirmationDialogIntent( + item = ConfirmationRoute.Args.Item.EnumItem( + key = "name", + value = selectedMatchType.name, + items = items, + docs = mapOf( + DSecret.Uri.MatchType.Domain.name to ConfirmationRoute.Args.Item.EnumItem.Doc( + text = translate(Res.strings.uri_match_detection_domain_note), + url = "https://bitwarden.com/help/uri-match-detection/#base-domain", + ), + DSecret.Uri.MatchType.Host.name to ConfirmationRoute.Args.Item.EnumItem.Doc( + text = translate(Res.strings.uri_match_detection_host_note), + url = "https://bitwarden.com/help/uri-match-detection/#host", + ), + DSecret.Uri.MatchType.StartsWith.name to ConfirmationRoute.Args.Item.EnumItem.Doc( + text = translate(Res.strings.uri_match_detection_startswith_note), + url = "https://bitwarden.com/help/uri-match-detection/#starts-with", + ), + DSecret.Uri.MatchType.Exact.name to ConfirmationRoute.Args.Item.EnumItem.Doc( + text = translate(Res.strings.uri_match_detection_exact_note), + url = "https://bitwarden.com/help/uri-match-detection/#regular-expression", + ), + DSecret.Uri.MatchType.RegularExpression.name to ConfirmationRoute.Args.Item.EnumItem.Doc( + text = translate(Res.strings.uri_match_detection_regex_note), + url = "https://bitwarden.com/help/uri-match-detection/#regular-expression", + ), + DSecret.Uri.MatchType.Never.name to ConfirmationRoute.Args.Item.EnumItem.Doc( + text = translate(Res.strings.uri_match_detection_never_note), + url = "https://bitwarden.com/help/uri-match-detection/#exact", + ), + ), + ), + title = translate(Res.strings.uri_match_detection_title), + ) { newMatchTypeKey -> + matchTypeSink.value = + DSecret.Uri.MatchType.valueOf(newMatchTypeKey) + } + navigate(intent) + }, + ) + } + val actionsFlow = actionsMatchTypeItemFlow + .map { + listOf(it, actionsAppPickerItem) + } + + val textFlow = uriSink + .map { uri -> + TextFieldModel2( + text = uri, + state = uriMutableState, + onChange = uriMutableState::value::set, + ) + } + val stateFlow = combine( + textFlow, + matchTypeSink, + actionsFlow, + ) { text, matchType, actions -> + val badge = when (matchType) { + DSecret.Uri.MatchType.Never, + DSecret.Uri.MatchType.Host, + DSecret.Uri.MatchType.Domain, + DSecret.Uri.MatchType.Exact, + DSecret.Uri.MatchType.StartsWith, + -> { + val validationUri = validateUri( + uri = text.text, + allowBlank = true, + ) + if (validationUri == ValidationUri.OK) { + val isUnsecure = cipherUnsecureUrlCheck(text.text) + if (isUnsecure) { + TextFieldModel2.Vl( + type = TextFieldModel2.Vl.Type.WARNING, + text = translate(Res.strings.uri_unsecure), + ) + } else { + null + } + } else { + validationUri.format(this) + ?.let { error -> + TextFieldModel2.Vl( + type = TextFieldModel2.Vl.Type.WARNING, + text = error, + ) + } + } + } + + DSecret.Uri.MatchType.RegularExpression -> { + null + } + } + AddStateItem.Url.State( + options = actions, + text = text.copy(vl = badge), + matchType = matchType, + matchTypeTitle = matchType + .takeIf { it != DSecret.Uri.MatchType.default } + ?.let { + val name = translate(it.titleH()) + name + }, + ) + } + .persistingStateIn( + scope = screenScope, + started = SharingStarted.WhileSubscribed(), + initialValue = AddStateItem.Url.State( + text = TextFieldModel2.empty, + matchType = DSecret.Uri.MatchType.default, + ), + ) + return AddStateItem.Url( + id = key, + state = LocalStateItem( + flow = stateFlow, + populator = { state -> + val field = DSecret.Uri( + uri = state.text.text, + match = state.matchType, + ) + val newUris = uris.add(field) + copy(uris = newUris) + }, + ), + ) + } +} + +class AddStateItemPasskeyFactory( +) : Foo2Factory { + @kotlinx.serialization.Serializable + private data class PasskeyHolder( + val data: PasskeyData? = null, + ) + + @kotlinx.serialization.Serializable + private data class PasskeyData( + val credentialId: String, + val keyType: String, // public-key + val keyAlgorithm: String, // ECDSA + val keyCurve: String, // P-256 + val keyValue: String, + val rpId: String, + val rpName: String, + val counter: Int?, + val userHandle: String, + val userName: String? = null, + val userDisplayName: String? = null, + val discoverable: Boolean, + val creationDate: Instant, + ) + + private fun PasskeyData.toDomainOrNull(): DSecret.Login.Fido2Credentials? { + return DSecret.Login.Fido2Credentials( + credentialId = credentialId, + keyType = keyType, + keyAlgorithm = keyAlgorithm, + keyCurve = keyCurve, + keyValue = keyValue, + rpId = rpId, + rpName = rpName, + counter = counter, + userHandle = userHandle, + userName = userName, + userDisplayName = userDisplayName, + discoverable = discoverable, + creationDate = creationDate, + ) + } + + override val type: String = "passkey" + + override fun RememberStateFlowScope.release(key: String) { + clearPersistedFlow("$key.data") + } + + override fun RememberStateFlowScope.add( + key: String, + initial: DSecret.Login.Fido2Credentials?, + ): AddStateItem.Passkey { + val dataKey = "$key.data" + val dataSink = mutablePersistedFlow( + dataKey, + serialize = { json, m: PasskeyHolder -> + json.encodeToString(m) + }, + deserialize = { json, m: String -> + json.decodeFromString(m) + }, + ) { + val data = initial?.let { + PasskeyData( + credentialId = it.credentialId, + keyType = it.keyType, + keyAlgorithm = it.keyAlgorithm, + keyCurve = it.keyCurve, + keyValue = it.keyValue, + rpId = it.rpId, + rpName = it.rpName, + counter = it.counter, + userHandle = it.userHandle, + userName = it.userName, + userDisplayName = it.userDisplayName, + discoverable = it.discoverable, + creationDate = it.creationDate, + ) + } + PasskeyHolder(data = data) + } + + val stateFlow = dataSink + .map { holder -> + val passkey = holder.data?.toDomainOrNull() + AddStateItem.Passkey.State( + passkey = passkey, + ) + } + .persistingStateIn( + scope = screenScope, + started = SharingStarted.WhileSubscribed(), + initialValue = AddStateItem.Passkey.State( + passkey = null, + ), + ) + return AddStateItem.Passkey( + id = key, + state = LocalStateItem( + flow = stateFlow, + populator = { state -> + val passkey = state.passkey + // Do not modify the state if the + // passkey does not exist. + ?: return@LocalStateItem this + val newFido2Credentials = fido2Credentials.add(passkey) + copy(fido2Credentials = newFido2Credentials) + }, + ), + ) + } +} + +abstract class AddStateItemFieldFactory : Foo2Factory { + fun foo( + key: String, + flow: StateFlow, + ) = AddStateItem.Field( + id = key, + state = LocalStateItem( + flow = flow, + populator = { state -> + val field = when (state) { + is AddStateItem.Field.State.Text -> { + val fieldType = if (state.hidden) { + DSecret.Field.Type.Hidden + } else { + DSecret.Field.Type.Text + } + DSecret.Field( + name = state.label.text, + value = state.text.text, + type = fieldType, + ) + } + + is AddStateItem.Field.State.Switch -> { + DSecret.Field( + name = state.label.text, + value = state.checked.toString(), + type = DSecret.Field.Type.Boolean, + ) + } + + is AddStateItem.Field.State.LinkedId -> { + if (state.value == null) { + return@LocalStateItem this + } + + DSecret.Field( + name = state.label.text, + linkedId = state.value, + type = DSecret.Field.Type.Linked, + ) + } + } + val newFields = fields.add(field) + copy(fields = newFields) + }, + ), + ) +} + +class AddStateItemFieldTextFactory : AddStateItemFieldFactory() { + override val type: String = "field.text" + + override fun RememberStateFlowScope.release(key: String) { + clearPersistedFlow("$key.label") + clearPersistedFlow("$key.text") + clearPersistedFlow("$key.conceal") + } + + override fun RememberStateFlowScope.add( + key: String, + initial: DSecret.Field?, + ): AddStateItem.Field { + val labelSink = mutablePersistedFlow("$key.label") { + initial?.name.orEmpty() + } + val labelMutableState = mutableComposeState(labelSink) + val labelFlow = labelSink.map { label -> + TextFieldModel2( + text = label, + hint = "Label", + state = labelMutableState, + onChange = labelMutableState::value::set, + ) + } + + val textSink = mutablePersistedFlow("$key.text") { + initial?.value.orEmpty() + } + val textMutableState = mutableComposeState(textSink) + val textFlow = textSink.map { text -> + TextFieldModel2( + text = text, + hint = "Value", + state = textMutableState, + onChange = textMutableState::value::set, + ) + } + + val concealSink = mutablePersistedFlow("$key.conceal") { + initial?.type == DSecret.Field.Type.Hidden + } + + val actionsConcealItemFlow = concealSink + .map { conceal -> + FlatItemAction( + leading = { + val imageVector = if (conceal) { + Icons.Outlined.VisibilityOff + } else { + Icons.Outlined.Visibility + } + Crossfade(targetState = imageVector) { iv -> + IconBox( + main = iv, + ) + } + }, + title = "Conceal value", + trailing = { + Checkbox( + checked = conceal, + onCheckedChange = null, + ) + }, + onClick = { + concealSink.value = !conceal + }, + ) + } + val actionsFlow = actionsConcealItemFlow + .map { concealItem -> + listOf( + concealItem, + ) + } + + val stateFlow = combine( + labelFlow, + textFlow, + concealSink, + actionsFlow, + ) { labelField, textField, hidden, actions -> + AddStateItem.Field.State.Text( + label = labelField, + text = textField, + hidden = hidden, + options = actions, + ) + } + .persistingStateIn( + scope = screenScope, + started = SharingStarted.WhileSubscribed(1000L), + initialValue = AddStateItem.Field.State.Text( + label = TextFieldModel2.empty, + text = TextFieldModel2.empty, + ), + ) + return foo( + key = key, + flow = stateFlow, + ) + } +} + +class AddStateItemFieldBooleanFactory : AddStateItemFieldFactory() { + override val type: String = "field.boolean" + + override fun RememberStateFlowScope.release(key: String) { + clearPersistedFlow("$key.label") + clearPersistedFlow("$key.check") + } + + override fun RememberStateFlowScope.add( + key: String, + initial: DSecret.Field?, + ): AddStateItem.Field { + val labelSink = mutablePersistedFlow("$key.label") { + initial?.name.orEmpty() + } + val labelMutableState = mutableComposeState(labelSink) + val labelFlow = labelSink.map { label -> + TextFieldModel2( + text = label, + hint = "Label", + state = labelMutableState, + onChange = labelMutableState::value::set, + ) + } + + val checkedSink = mutablePersistedFlow("$key.check") { + initial?.value.toBoolean() + } + + val stateFlow = combine( + labelFlow, + checkedSink, + ) { label, checked -> + AddStateItem.Field.State.Switch( + label = label, + checked = checked, + onCheckedChange = checkedSink::value::set, + ) + } + .persistingStateIn( + scope = screenScope, + started = SharingStarted.WhileSubscribed(1000L), + initialValue = AddStateItem.Field.State.Switch( + label = TextFieldModel2.empty, + ), + ) + return foo( + key = key, + flow = stateFlow, + ) + } +} + +class AddStateItemFieldLinkedIdFactory( + private val typeFlow: Flow, +) : AddStateItemFieldFactory() { + override val type: String = "field.linked_id" + + override fun RememberStateFlowScope.release(key: String) { + clearPersistedFlow("$key.label") + clearPersistedFlow("$key.linked_id") + } + + override fun RememberStateFlowScope.add( + key: String, + initial: DSecret.Field?, + ): AddStateItem.Field { + val labelSink = mutablePersistedFlow("$key.label") { + initial?.name.orEmpty() + } + val labelMutableState = mutableComposeState(labelSink) + val labelFlow = labelSink.map { label -> + TextFieldModel2( + text = label, + hint = "Label", + state = labelMutableState, + onChange = labelMutableState::value::set, + ) + } + + val valueSink = mutablePersistedFlow("$key.linked_id") { + initial?.linkedId + } + val valueFlow = combine( + valueSink, + typeFlow, + ) { linkedIdOrNull, type -> + linkedIdOrNull + ?.takeIf { it.type == type } + ?: kotlin.run { + DSecret.Field.LinkedId.entries + .firstOrNull { it.type == type } + } + } + val actionsAll = DSecret.Field.LinkedId.entries + .map { actionLinkedId -> + actionLinkedId to FlatItemAction( + id = actionLinkedId.name, + leading = { + val selectedLinkedId by valueFlow.collectAsState(initial = null) + RadioButton( + selected = selectedLinkedId == actionLinkedId, + onClick = null, + ) + }, + title = translate(actionLinkedId.titleH()), + onClick = { + valueSink.value = actionLinkedId + }, + ) + } + val actionsFlow = typeFlow + .map { type -> + actionsAll + .mapNotNull { (itemLinkedId, itemAction) -> + itemAction + .takeIf { itemLinkedId.type == type } + } + } + val stateFlow = combine( + labelFlow, + valueFlow, + actionsFlow, + ) { label, linkedId, actions -> + AddStateItem.Field.State.LinkedId( + label = label, + value = linkedId, + actions = actions, + ) + } + .persistingStateIn( + scope = screenScope, + started = SharingStarted.WhileSubscribed(1000L), + initialValue = AddStateItem.Field.State.LinkedId( + label = TextFieldModel2.empty, + value = null, + actions = emptyList(), + ), + ) + return foo( + key = key, + flow = stateFlow, + ) + } +} + +interface Foo2Factory where T : AddStateItem, T : AddStateItem.HasOptions { + val type: String + + fun RememberStateFlowScope.add(key: String, initial: Default?): T + + fun RememberStateFlowScope.release(key: String) +} + +data class Foo2Type( + val type: String, + val name: String, +) + +data class Foo2Persistable( + val key: String, + val type: String, +) : Serializable + +data class Foo2InitialState( + val items: List>, +) { + data class Item( + val key: String, + val type: String, + val argument: Argument? = null, + ) +} + +fun RememberStateFlowScope.foo3( + logRepository: LogRepository, + scope: String, + initial: List, + initialType: (Argument) -> String, + factories: List>, + afterList: MutableList.() -> Unit, + extra: FieldBakeryScope.() -> Flow> = { + flowOf(emptyList()) + }, +): Flow> where T : AddStateItem, T : AddStateItem.HasOptions { + val initialState = Foo2InitialState( + items = initial + .associateBy { + UUID.randomUUID().toString() + } + .map { entry -> + Foo2InitialState.Item( + key = entry.key, + type = initialType(entry.value), + argument = entry.value, + ) + }, + ) + logRepository.post("Foo3", "Scope '$scope' with initial ${initial.size} items.") + return foo( + scope = scope, + initialState = initialState, + entryAdd = { (key, type), arg -> + val factory = factories.first { it.type == type } + with(factory) { + add(key, arg) + } + }, + entryRelease = { (key, type) -> + val factory = factories.first { it.type == type } + with(factory) { + release(key) + } + }, + afterList = afterList, + extra = extra, + ) + .onEach { l -> + logRepository.post("Foo3", "Scope '$scope' emit ${l.size}") + } +} + +fun RememberStateFlowScope.foo2( + scope: String, + initialState: Foo2InitialState, + factories: List>, + afterList: MutableList.() -> Unit, + extra: FieldBakeryScope.() -> Flow> = { + flowOf(emptyList()) + }, +): Flow> where T : AddStateItem, T : AddStateItem.HasOptions { + return foo( + scope = scope, + initialState = initialState, + entryAdd = { (key, type), arg -> + val factory = factories.first { it.type == type } + with(factory) { + add(key, arg) + } + }, + entryRelease = { (key, type) -> + val factory = factories.first { it.type == type } + with(factory) { + release(key) + } + }, + afterList = afterList, + extra = extra, + ) +} + +interface FieldBakeryScope { + fun moveUp(key: String) + + fun moveDown(key: String) + + fun delete(key: String) + + fun add(type: String, arg: Argument?) +} + +private fun FieldBakeryScope.typeBasedAddItem( + translator: TranslatorScope, + scope: String, + typesFlow: Flow>, +): Flow> = typesFlow + .map { types -> + if (types.isEmpty()) { + return@map null // hide add item + } + + val actions = types + .map { type -> + FlatItemAction( + title = type.name, + onClick = ::add + .partially1(type.type) + .partially1(null), + ) + } + AddStateItem.Add( + id = "$scope.add", + text = translator.translate(Res.strings.list_add), + actions = actions, + ) + } + .map { listOfNotNull(it) } + +fun RememberStateFlowScope.foo( + // scope name, + scope: String, + initialState: Foo2InitialState, + entryAdd: RememberStateFlowScope.(Foo2Persistable, Argument?) -> T, + entryRelease: RememberStateFlowScope.(Foo2Persistable) -> Unit, + afterList: MutableList.() -> Unit, + extra: FieldBakeryScope.() -> Flow> = { + flowOf(emptyList()) + }, +): Flow> where T : AddStateItem, T : AddStateItem.HasOptions { + var inMemoryArguments = initialState + .items + .mapNotNull { + if (it.argument != null) { + it.key to it.argument + } else { + null + } + } + .toMap() + .toPersistentMap() + + val persistableSink = mutablePersistedFlow("$scope.keys") { + initialState + .items + .map { + Foo2Persistable( + key = it.key, + type = it.type, + ) + } + } + + fun move(key: String, offset: Int) = persistableSink.update { state -> + val i = state.indexOfFirst { it.key == key } + if ( + i == -1 || + i + offset < 0 || + i + offset >= state.size + ) { + return@update state + } + + val newState = state.toMutableList() + val item = newState.removeAt(i) + newState.add(i + offset, item) + newState + } + + fun moveUp(key: String) = move(key, offset = -1) + + fun moveDown(key: String) = move(key, offset = 1) + + fun delete(key: String) = persistableSink.update { state -> + inMemoryArguments = inMemoryArguments.remove(key) + + val i = state.indexOfFirst { it.key == key } + if (i == -1) return@update state + + val newState = state.toMutableList() + newState.removeAt(i) + newState + } + + fun add(type: String, arg: Argument?) { + val key = "$scope.items." + UUID.randomUUID().toString() + // Remember the argument, so we can grab it and construct something + // persistent from it. + if (arg != null) { + inMemoryArguments = inMemoryArguments.put(key, arg) + } + + val newEntry = Foo2Persistable( + key = key, + type = type, + ) + persistableSink.update { state -> + state + newEntry + } + } + + val scope2 = object : FieldBakeryScope { + override fun moveUp(key: String) = moveUp(key) + + override fun moveDown(key: String) = moveDown(key) + + override fun delete(key: String) = delete(key) + + override fun add(type: String, arg: Argument?) = add(type, arg) + } + + val keysFlow = persistableSink + .scan( + initial = listOf(), + ) { state, new -> + // Find if a new entry has a different + // type comparing to the old one. + new.forEach { (key, type) -> + val existingEntry = state.firstOrNull { it.key == key } + when (val existingType = existingEntry?.type) { + type, + null, + -> { + // Do nothing. + } + + else -> { + val item = Foo2Persistable(key, existingType) + entryRelease(item) + } + } + } + // Clean-up removed entries. + state.forEach { (key, type) -> + val removed = new.none { it.key == key } + if (removed) { + val item = Foo2Persistable(key, type) + entryRelease(item) + } + } + + new + } + val itemsFlow = keysFlow + .map { state -> + state.mapIndexed { index, entry -> + val arg = inMemoryArguments[entry.key] + val item = entryAdd(entry, arg) + + // Appends list-specific options to be able to reorder + // the list or remove an item. + val options = item.options.toMutableList() + if (index > 0) { + options += FlatItemAction( + icon = Icons.Outlined.ArrowUpward, + title = translate(Res.strings.list_move_up), + onClick = ::moveUp.partially1(entry.key), + ) + } + if (index < state.size - 1) { + options += FlatItemAction( + icon = Icons.Outlined.ArrowDownward, + title = translate(Res.strings.list_move_down), + onClick = ::moveDown.partially1(entry.key), + ) + } + options += FlatItemAction( + icon = Icons.Outlined.DeleteForever, + title = translate(Res.strings.list_remove), + onClick = { + val intent = createConfirmationDialogIntent( + icon = icon(Icons.Outlined.DeleteForever), + title = translate(Res.strings.list_remove_confirmation_title), + ) { + delete(entry.key) + } + navigate(intent) + }, + ) + + item.withOptions(options) + } + } + val extraFlow = extra(scope2) + return combine( + itemsFlow, + extraFlow, + ) { items, customItems -> + val out = items + .widen() + .toMutableList() + out += customItems + out.apply(afterList) + } + .shareIn(screenScope, SharingStarted.WhileSubscribed(5000L), replay = 1) +} + +private suspend fun RememberStateFlowScope.produceOwnershipFlow( + args: AddRoute.Args, + getProfiles: GetProfiles, + getOrganizations: GetOrganizations, + getCollections: GetCollections, + getFolders: GetFolders, + getCiphers: GetCiphers, +): Flow { + val ro = args.ownershipRo + + data class Fool( + val value: T, + val element: AddState.SaveToElement?, + ) + + val disk = loadDiskHandle("new_item") + val accountIdSink = mutablePersistedFlow( + key = "ownership.account_id", + storage = PersistedStorage.InDisk(disk), + ) { null } + + val initialState = kotlin.run { + if (args.initialValue != null) { + return@run AddItemOwnershipData( + accountId = args.initialValue.accountId, + organizationId = args.initialValue.organizationId, + collectionIds = args.initialValue.collectionIds, + folder = kotlin.run { + val folderId = args.initialValue.folderId + if (folderId != null) { + FolderInfo.Id(folderId) + } else { + FolderInfo.None + } + }, + ) + } + + // Make an account that has the most ciphers a + // default account. + val accountId = ioEffect { + val accountIds = getProfiles().toIO().bind() + .map { it.accountId() } + .toSet() + + fun String.takeIfAccountIdExists() = this + .takeIf { id -> + id in accountIds + } + + val lastAccountId = accountIdSink.value?.takeIfAccountIdExists() + if (lastAccountId != null) { + return@ioEffect lastAccountId + } + + val ciphers = getCiphers().toIO().bind() + ciphers + .asSequence() + .filter { it.organizationId != null } + .groupBy { it.accountId } + // the one that has the most ciphers + .maxByOrNull { entry -> entry.value.size } + // account id + ?.key + ?.takeIfAccountIdExists() + }.attempt().bind().getOrNull() + + AddItemOwnershipData( + accountId = accountId, + organizationId = null, + collectionIds = emptySet(), + folder = FolderInfo.None, + ) + } + val sink = mutablePersistedFlow("ownership") { + initialState + } + + // If we are creating a new item, then remember the + // last selected account to pre-select it next time. + // TODO: Remember only when an item is created. + sink + .map { it.accountId } + .onEach(accountIdSink::value::set) + .launchIn(screenScope) + + val accountFlow = combine( + sink + .map { it.accountId } + .distinctUntilChanged(), + getProfiles(), + ) { accountId, profiles -> + if (accountId == null) { + val item = AddState.SaveToElement.Item( + key = "account.empty", + title = translate(Res.strings.account_none), + ) + val el = AddState.SaveToElement( + readOnly = ro, + items = listOf(item), + ) + return@combine Fool( + value = null, + element = el, + ) + } + val profileOrNull = profiles + .firstOrNull { it.accountId() == accountId } + val el = AddState.SaveToElement( + readOnly = ro, + items = listOfNotNull(profileOrNull) + .map { account -> + val key = "account.${account.accountId()}" + AddState.SaveToElement.Item( + key = key, + title = account.email, + text = account.accountHost, + accentColors = account.accentColor, + ) + }, + ) + Fool( + value = accountId, + element = el, + ) + } + + val organizationFlow = combine( + sink + .map { it.organizationId } + .distinctUntilChanged(), + getOrganizations(), + ) { organizationId, organizations -> + if (organizationId == null) { + val item = AddState.SaveToElement.Item( + key = "organization.empty", + title = translate(Res.strings.organization_none), + ) + val el = AddState.SaveToElement( + readOnly = ro, + items = listOf(item), + ) + return@combine Fool( + value = null, + element = el, + ) + } + val organizationOrNull = organizations + .firstOrNull { it.id == organizationId } + val el = AddState.SaveToElement( + readOnly = ro, + items = listOfNotNull(organizationOrNull) + .map { organization -> + val key = "organization.${organization.id}" + AddState.SaveToElement.Item( + key = key, + title = organization.name, + ) + }, + ) + Fool( + value = organizationId, + element = el, + ) + } + + val collectionFlow = combine( + sink + .map { it.collectionIds } + .distinctUntilChanged(), + getCollections(), + ) { collectionIds, collections -> + if (collectionIds.isEmpty()) { + return@combine Fool( + value = emptySet(), + element = null, + ) + } + + val selectedCollections = collections + .sortedBy { it.name } + .filter { it.id in collectionIds } + val el = AddState.SaveToElement( + readOnly = ro, + items = selectedCollections + .map { collection -> + val key = "collection.${collection.id}" + AddState.SaveToElement.Item( + key = key, + title = collection.name, + ) + }, + ) + Fool( + value = collectionIds, + element = el, + ) + } + + val folderFlow = combine( + sink + .map { it.folder } + .distinctUntilChanged(), + getFolders(), + ) { selectedFolder, folders -> + when (selectedFolder) { + is FolderInfo.None -> { + val item = AddState.SaveToElement.Item( + key = "folder.empty", + title = translate(Res.strings.folder_none), + ) + val el = AddState.SaveToElement( + readOnly = false, + items = listOf(item), + ) + return@combine Fool( + value = selectedFolder, + element = el, + ) + } + + is FolderInfo.New -> { + val item = AddState.SaveToElement.Item( + key = "folder.new", + title = selectedFolder.name, + ) + val el = AddState.SaveToElement( + readOnly = false, + items = listOf(item), + ) + return@combine Fool( + value = selectedFolder, + element = el, + ) + } + + is FolderInfo.Id -> { + val selectedFolderOrNull = folders + .firstOrNull { it.id == selectedFolder.id } + val el = AddState.SaveToElement( + readOnly = false, + items = listOfNotNull(selectedFolderOrNull) + .map { folder -> + val key = "folder.${folder.id}" + AddState.SaveToElement.Item( + key = key, + title = folder.name, + ) + }, + ) + Fool( + value = selectedFolder, + element = el, + ) + } + } + } + + return combine( + accountFlow, + organizationFlow, + collectionFlow, + folderFlow, + ) { account, organization, collection, folder -> + val flags = if (ro) { + OrganizationConfirmationRoute.Args.RO_ACCOUNT or + OrganizationConfirmationRoute.Args.RO_ORGANIZATION or + OrganizationConfirmationRoute.Args.RO_COLLECTION + } else { + 0 + } + val data = AddState.Ownership.Data( + accountId = account.value, + folderId = folder.value, + organizationId = organization.value, + collectionIds = collection.value, + ) + AddState.Ownership( + data = data, + account = account.element, + organization = organization.element.takeIf { account.value != null }, + collection = collection.element.takeIf { account.value != null }, + folder = folder.element, + onClick = { + val route = registerRouteResultReceiver( + route = OrganizationConfirmationRoute( + args = OrganizationConfirmationRoute.Args( + decor = OrganizationConfirmationRoute.Args.Decor( + title = "Save to", + icon = Icons.Outlined.AccountBox, + ), + flags = flags, + accountId = account.value, + organizationId = organization.value, + folderId = folder.value, + collectionsIds = collection.value, + ), + ), + ) { result -> + if (result is OrganizationConfirmationResult.Confirm) { + val newState = AddItemOwnershipData( + accountId = result.accountId, + organizationId = result.organizationId, + collectionIds = result.collectionsIds, + folder = result.folderId, + ) + sink.value = newState + } + } + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + } +} + +data class TmpLogin( + val username: AddStateItem.Username, + val password: AddStateItem.Password, + val totp: AddStateItem.Totp, + val items: List, +) + +data class TmpCard( + val cardholderName: AddStateItem.Text, + val brand: AddStateItem.Text, + val number: AddStateItem.Text, + val fromDate: AddStateItem.DateMonthYear, + val expDate: AddStateItem.DateMonthYear, + val code: AddStateItem.Text, + val items: List, +) + +data class TmpIdentity( + val title: AddStateItem.Text, + val firstName: AddStateItem.Text, + val middleName: AddStateItem.Text, + val lastName: AddStateItem.Text, + val address1: AddStateItem.Text, + val address2: AddStateItem.Text, + val address3: AddStateItem.Text, + val city: AddStateItem.Text, + val state: AddStateItem.Text, + val postalCode: AddStateItem.Text, + val country: AddStateItem.Text, + val company: AddStateItem.Text, + val email: AddStateItem.Text, + val phone: AddStateItem.Text, + val ssn: AddStateItem.Text, + val username: AddStateItem.Text, + val passportNumber: AddStateItem.Text, + val licenseNumber: AddStateItem.Text, + val items: List, +) + +data class TmpNote( + val note: AddStateItem.Note, + val items: List, +) + +private suspend fun RememberStateFlowScope.produceLoginState( + args: AddRoute.Args, + ownershipFlow: Flow, + copyText: CopyText, + getTotpCode: GetTotpCode, + getGravatarUrl: GetGravatarUrl, +): TmpLogin { + val prefix = "login" + + suspend fun createItemUsername( + key: String, + initialValue: String? = null, + populator: CreateRequest.(AddStateItem.Username.State) -> CreateRequest, + factory: (String, LocalStateItem) -> Item, + ) = kotlin.run { + val id = "$prefix.$key" + + val sink = mutablePersistedFlow(id) { initialValue.orEmpty() } + val state = mutableComposeState(sink) + factory( + id, + LocalStateItem( + flow = ownershipFlow + .map { + it.account + ?.items + ?.asSequence() + ?.map { it.title } + ?.toPersistentList() + ?: persistentListOf() + } + .combine(sink) { autocompleteOptions, value -> + val model = TextFieldModel2( + state = state, + text = value, + autocompleteOptions = autocompleteOptions, + onChange = state::value::set, + ) + AddStateItem.Username.State( + value = model, + type = UsernameVariation2.of(getGravatarUrl, value), + ) + } + .persistingStateIn( + scope = screenScope, + started = SharingStarted.WhileSubscribed(), + initialValue = + AddStateItem.Username.State( + value = TextFieldModel2.empty, + type = UsernameVariation2.default, + ), + ), + populator = populator, + ), + ) + } + + suspend fun createItem( + key: String, + initialValue: String? = null, + populator: CreateRequest.(TextFieldModel2) -> CreateRequest, + factory: (String, LocalStateItem) -> Item, + ) = kotlin.run { + val id = "$prefix.$key" + + val sink = mutablePersistedFlow(id) { initialValue.orEmpty() } + val state = mutableComposeState(sink) + factory( + id, + LocalStateItem( + flow = sink + .map { value -> + TextFieldModel2( + state = state, + text = value, + onChange = state::value::set, + ) + } + .persistingStateIn( + scope = screenScope, + started = SharingStarted.WhileSubscribed(), + initialValue = TextFieldModel2.empty, + ), + populator = populator, + ), + ) + } + + val login = args.initialValue?.login + + val username = createItemUsername( + key = "username", + initialValue = args.username ?: args.autofill?.username ?: login?.username, + populator = { + copy( + login = this.login.copy( + username = it.value.text, + ), + ) + }, + ) { id, state -> + AddStateItem.Username( + id = id, + state = state, + ) + } + val usernameSuggestions = createItem2( + prefix = prefix, + key = "username", + args = args, + getSuggestion = { it.login?.username }, + selectedFlow = username.state.flow.map { it.value.text }, + onClick = { + username.state.flow.value.value.onChange?.invoke(it) + }, + ) + val password = createItem( + key = "password", + initialValue = args.password ?: args.autofill?.password ?: login?.password, + populator = { + copy( + login = this.login.copy( + password = it.text, + ), + ) + }, + ) { id, state -> + AddStateItem.Password( + id = id, + state = state, + ) + } + val passwordSuggestions = createItem2( + prefix = prefix, + key = "password", + args = args, + getSuggestion = { it.login?.password }, + selectedFlow = password.state.flow.map { it.text }, + concealed = true, + onClick = { + password.state.flow.value.onChange?.invoke(it) + }, + ) + + val totpState = kotlin.run { + val sink = mutablePersistedFlow("totp") { + args.initialValue?.login?.totp?.raw.orEmpty() + } + val state = mutableComposeState(sink) + val totpFlow = sink + .debounce(80L) + .map { raw -> + val token = if (raw.isBlank()) { + null + } else { + TotpToken.parse(raw).getOrNull() + } + token + } + .onStart { + val initialState = null + emit(initialState) + } + val flow = combine( + sink + .map { raw -> + TextFieldModel2( + state = state, + text = raw, + onChange = state::value::set, + ) + }, + totpFlow, + ) { value, totp -> + AddStateItem.Totp.State( + value = value, + copyText = copyText, + totpToken = totp, + ) + } + LocalStateItem( + flow = flow + .persistingStateIn( + scope = screenScope, + started = SharingStarted.WhileSubscribed(), + initialValue = AddStateItem.Totp.State( + value = TextFieldModel2.empty, + copyText = copyText, + totpToken = null, + ), + ), + populator = { + this.copy( + login = this.login.copy( + totp = it.value.text, + ), + ) + }, + ) + } + val totp = AddStateItem.Totp( + id = "$prefix.totp", + state = totpState, + ) + val totpSuggestions = createItem2( + prefix = prefix, + key = "totp", + args = args, + getSuggestion = { it.login?.totp?.raw }, + selectedFlow = totp.state.flow.map { it.value.text }, + concealed = true, + onClick = { + totp.state.flow.value.value.onChange?.invoke(it) + }, + ) + + val items = listOfNotNull( + username, + usernameSuggestions, + password, + passwordSuggestions, + totp, + totpSuggestions, + ) + return TmpLogin( + username = username, + password = password, + totp = totp, + items = items, + ) +} + +private suspend fun RememberStateFlowScope.produceCardState( + args: AddRoute.Args, +): TmpCard { + val prefix = "card" + + suspend fun RememberStateFlowScope.createItem2( + prefix: String, + key: String, + initialMonth: String? = null, + initialYear: String? = null, + populator: CreateRequest.(AddStateItem.DateMonthYear.State) -> CreateRequest, + factory: (String, LocalStateItem) -> Item, + ): Item { + val id = "$prefix.$key" + + val monthSink = mutablePersistedFlow("$id.month") { initialMonth.orEmpty() } + val monthState = mutableComposeState(monthSink) + val monthFlow = monthSink + .map { value -> + val model = TextFieldModel2( + state = monthState, + text = value, + onChange = monthState::value::set, + ) + model + } + + val yearSink = mutablePersistedFlow("$id.year") { initialYear.orEmpty() } + val yearState = mutableComposeState(yearSink) + val yearFlow = yearSink + .map { value -> + val model = TextFieldModel2( + state = yearState, + text = value, + onChange = yearState::value::set, + ) + model + } + + return factory( + id, + LocalStateItem( + flow = combine( + monthFlow, + yearFlow, + ) { month, year -> + AddStateItem.DateMonthYear.State( + month = month, + year = year, + onClick = { + val route = registerRouteResultReceiver( + DatePickerRoute( + DatePickerRoute.Args( + month = month.text.toIntOrNull(), + year = year.text.toIntOrNull(), + ), + ), + ) { result -> + if (result is DatePickerResult.Confirm) { + monthState.value = result.month.value + .toString() + .padStart(2, '0') + yearState.value = result.year.value.toString() + } + } + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + } + .persistingStateIn( + scope = screenScope, + started = SharingStarted.WhileSubscribed(), + initialValue = AddStateItem.DateMonthYear.State( + month = TextFieldModel2.empty, + year = TextFieldModel2.empty, + onClick = { + val route = registerRouteResultReceiver( + DatePickerRoute( + DatePickerRoute.Args(), + ), + ) { + } + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ), + ), + populator = populator, + ), + ) + } + + suspend fun RememberStateFlowScope.createItem2( + prefix: String, + key: String, + label: String, + initialMonth: String? = null, + initialYear: String? = null, + populator: CreateRequest.(AddStateItem.DateMonthYear.State) -> CreateRequest, + ) = createItem2( + prefix = prefix, + key = key, + initialMonth = initialMonth, + initialYear = initialYear, + populator = populator, + ) { id, state -> + AddStateItem.DateMonthYear( + id = id, + state = state, + label = label, + ) + } + + suspend fun createItem( + key: String, + label: String? = null, + hint: String? = null, + initialValue: String? = null, + singleLine: Boolean = false, + autocompleteOptions: ImmutableList = persistentListOf(), + keyboardOptions: KeyboardOptions = KeyboardOptions.Default, + visualTransformation: VisualTransformation = VisualTransformation.None, + lens: Optional, + ) = createItem( + prefix = prefix, + key = key, + label = label, + hint = hint, + initialValue = initialValue, + singleLine = singleLine, + autocompleteOptions = autocompleteOptions, + keyboardOptions = keyboardOptions, + visualTransformation = visualTransformation, + populator = { + lens.set(this, it.value.text) + }, + ) + + val ff2 = "\\D".toRegex() + + suspend fun createItem4( + key: String, + label: String? = null, + initialValue: String? = null, + autocompleteOptions: ImmutableList = persistentListOf(), + keyboardOptions: KeyboardOptions = KeyboardOptions.Default, + visualTransformation: VisualTransformation = VisualTransformation.None, + lens: Optional, + ) = kotlin.run { + val id = "$prefix.$key" + + val sink = mutablePersistedFlow(id) { initialValue.orEmpty() } + val state = mutableComposeState(sink) + val state2 = LocalStateItem( + flow = sink + .map { value -> + val isValid = kotlin.run { + val n = value.replace(ff2, "") + if (n.isBlank()) { + return@run true + } + val luhn by lazy { + validLuhn(n) + } + val t = creditCards + .asSequence() + // Use eager pattern to detect card type even if + // the user hasn't finished typing. + .filter { creditCardType -> + val result = creditCardType.eagerPattern.find(n) + result?.groups?.isNotEmpty() == true + } + .filter { creditCardType -> + if (n.length < creditCardType.digits.first) { + // This card could still be this type. + true + } else if (n.length in creditCardType.digits) { + // This card must pass strict regex. + creditCardType.pattern.matches(n) && + (!creditCardType.luhn || luhn) + } else { + false + } + } + .firstOrNull() + t != null + } + val badge = if (!isValid) { + TextFieldModel2.Vl( + type = TextFieldModel2.Vl.Type.WARNING, + text = translate(Res.strings.error_invalid_card_number), + ) + } else { + null + } + + val model = TextFieldModel2( + state = state, + text = value, + hint = "4111 1111 1111 1111", + vl = badge, + autocompleteOptions = autocompleteOptions, + onChange = state::value::set, + ) + AddStateItem.Text.State( + value = model, + label = label, + singleLine = true, + keyboardOptions = keyboardOptions, + visualTransformation = visualTransformation, + ) + } + .persistingStateIn( + scope = screenScope, + started = SharingStarted.WhileSubscribed(), + initialValue = AddStateItem.Text.State( + value = TextFieldModel2.empty, + label = label, + ), + ), + populator = { + lens.set(this, it.value.text) + }, + ) + return@run AddStateItem.Text( + id = id, + state = state2, + ) + } + + val card = args.initialValue?.card + val number = createItem4( + key = "number", + label = translate(Res.strings.card_number), + initialValue = card?.number, + keyboardOptions = KeyboardOptions( + autoCorrect = false, + keyboardType = KeyboardType.Number, + ), + visualTransformation = GenericSeparatorVisualTransformation(), + lens = CreateRequest.card.number, + ) + val ff = number.state.flow + .map { state -> + val n = state.value.text.replace(ff2, "") + val t = creditCards + .asSequence() + // Use eager pattern to detect card type even if + // the user hasn't finished typing. + .filter { creditCardType -> + val result = creditCardType.eagerPattern.find(n) + result?.groups?.isNotEmpty() == true + } + .filter { creditCardType -> + if (n.length < creditCardType.digits.first) { + // This card could still be this type. + true + } else if (n.length in creditCardType.digits) { + // This card must pass strict regex. + creditCardType.pattern.matches(n) + } else { + false + } + } + .firstOrNull() + t + } + + val numberSuggestions = createItem2Txt( + prefix = prefix, + key = "number", + args = args, + getSuggestion = { it.card?.number }, + field = number, + ) + val cardholderName = createItem( + key = "cardholderName", + label = translate(Res.strings.cardholder_name), + initialValue = card?.cardholderName, + singleLine = true, + lens = CreateRequest.card.cardholderName, + ) + val cardholderNameSuggestions = createItem2Txt( + prefix = prefix, + key = "cardholderName", + args = args, + getSuggestion = { it.card?.cardholderName }, + field = cardholderName, + ) + val brandAutocompleteVariants = creditCards + .asSequence() + .map { type -> type.name } + .toPersistentList() + val brand = createItem( + key = "brand", + label = translate(Res.strings.card_type), + initialValue = card?.brand, + singleLine = true, + hint = brandAutocompleteVariants + .firstOrNull(), + autocompleteOptions = brandAutocompleteVariants, + lens = CreateRequest.card.brand, + ) + val brandSuggestions = createItem2Txt( + prefix = prefix, + key = "brand", + args = args, + getSuggestion = { it.card?.brand }, + field = brand, + ) + val fromDate = createItem2( + prefix = prefix, + key = "from", + label = translate(Res.strings.valid_from), + initialMonth = card?.fromMonth, + initialYear = card?.fromYear, + populator = { + var out = this + out = CreateRequest.card.fromMonth.set(out, it.month.text) + out = CreateRequest.card.fromYear.set(out, it.year.text) + out + }, + ) +// val fromMonth = createItem( +// key = "fromMonth", +// label = "From month", +// initialValue = card?.fromMonth, +// lens = CreateRequest.card.fromMonth, +// ) +// val fromMonthSuggestions = createItem2Txt( +// prefix = prefix, +// key = "fromMonth", +// args = args, +// getSuggestion = { it.card?.fromMonth }, +// field = fromMonth, +// ) +// val fromYear = createItem( +// key = "fromYear", +// label = "From year", +// initialValue = card?.fromYear, +// lens = CreateRequest.card.fromYear, +// ) +// val fromYearSuggestions = createItem2Txt( +// prefix = prefix, +// key = "fromYear", +// args = args, +// getSuggestion = { it.card?.fromYear }, +// field = fromYear, +// ) + val expDate = createItem2( + prefix = prefix, + key = "exp", + label = translate(Res.strings.expiry_date), + initialMonth = card?.expMonth, + initialYear = card?.expYear, + populator = { + var out = this + out = CreateRequest.card.expMonth.set(out, it.month.text) + out = CreateRequest.card.expYear.set(out, it.year.text) + out + }, + ) +// val expMonth = createItem( +// key = "expMonth", +// label = "Exp month", +// initialValue = card?.expMonth, +// lens = CreateRequest.card.expMonth, +// ) +// val expMonthSuggestions = createItem2Txt( +// prefix = prefix, +// key = "expMonth", +// args = args, +// getSuggestion = { it.card?.expMonth }, +// field = expMonth, +// ) +// val expYear = createItem( +// key = "expYear", +// label = "Exp year", +// initialValue = card?.expYear, +// lens = CreateRequest.card.expYear, +// ) +// val expYearSuggestions = createItem2Txt( +// prefix = prefix, +// key = "expYear", +// args = args, +// getSuggestion = { it.card?.expYear }, +// field = expYear, +// ) + val code = createItem( + key = "code", + label = translate(Res.strings.card_cvv), + hint = "111", + initialValue = card?.code, + singleLine = true, + keyboardOptions = KeyboardOptions( + autoCorrect = false, + keyboardType = KeyboardType.Number, + ), + lens = CreateRequest.card.code, + ) + val codeSuggestions = createItem2Txt( + prefix = prefix, + key = "code", + args = args, + getSuggestion = { it.card?.code }, + field = code, + ) + return TmpCard( + cardholderName = cardholderName, + brand = brand, + number = number, + fromDate = fromDate, + expDate = expDate, + code = code, + items = listOfNotNull( + number, + numberSuggestions, + brand, + brandSuggestions, + code, + codeSuggestions, + expDate, + fromDate, + cardholderName, + cardholderNameSuggestions, + ), + ) +} + +class GenericSeparatorVisualTransformation : VisualTransformation { + private val offsetMapping = object : OffsetMapping { + override fun originalToTransformed(offset: Int): Int = + offset + offset.minus(1).div(4) + + override fun transformedToOriginal(offset: Int): Int = + when (offset) { + in 0..4 -> offset + else -> offset - offset.div(5) + } + } + + override fun filter(text: AnnotatedString): TransformedText { + val formatted = text.text + .chunked(4) + .joinToString(" ") + return TransformedText( + text = AnnotatedString(text = formatted), + offsetMapping, + ) + } +} + +private suspend fun RememberStateFlowScope.produceIdentityState( + args: AddRoute.Args, +): TmpIdentity { + val prefix = "identity" + + suspend fun createItem( + key: String, + label: String? = null, + initialValue: String? = null, + singleLine: Boolean = false, + autocompleteOptions: ImmutableList = persistentListOf(), + keyboardOptions: KeyboardOptions = KeyboardOptions.Default, + lens: Optional, + ) = createItem( + prefix = prefix, + key = key, + label = label, + initialValue = initialValue, + singleLine = singleLine, + autocompleteOptions = autocompleteOptions, + keyboardOptions = keyboardOptions, + populator = { + lens.set(this, it.value.text) + }, + ) + + val identity = args.initialValue?.identity + val title = createItem( + key = "title", + label = translate(Res.strings.identity_title), + initialValue = identity?.title, + singleLine = true, + lens = CreateRequest.identity.title, + ) + val titleSuggestions = createItem2Txt( + prefix = prefix, + key = "title", + args = args, + getSuggestion = { it.identity?.title }, + field = title, + ) + val firstName = createItem( + key = "firstName", + label = translate(Res.strings.identity_first_name), + initialValue = identity?.firstName ?: args.autofill?.personName, + singleLine = true, + lens = CreateRequest.identity.firstName, + ) + val firstNameSuggestions = createItem2Txt( + prefix = prefix, + key = "firstName", + args = args, + getSuggestion = { it.identity?.firstName }, + field = firstName, + ) + val middleName = createItem( + key = "middleName", + label = translate(Res.strings.identity_middle_name), + initialValue = identity?.middleName, + singleLine = true, + lens = CreateRequest.identity.middleName, + ) + val middleNameSuggestions = createItem2Txt( + prefix = prefix, + key = "middleName", + args = args, + getSuggestion = { it.identity?.middleName }, + field = middleName, + ) + val lastName = createItem( + key = "lastName", + label = translate(Res.strings.identity_last_name), + initialValue = identity?.lastName, + singleLine = true, + lens = CreateRequest.identity.lastName, + ) + val lastNameSuggestions = createItem2Txt( + prefix = prefix, + key = "lastName", + args = args, + getSuggestion = { it.identity?.lastName }, + field = lastName, + ) + val address1 = createItem( + key = "address1", + label = translate(Res.strings.address1), + initialValue = identity?.address1, + singleLine = true, + lens = CreateRequest.identity.address1, + ) + val address1Suggestions = createItem2Txt( + prefix = prefix, + key = "address1", + args = args, + getSuggestion = { it.identity?.address1 }, + field = address1, + ) + val address2 = createItem( + key = "address2", + label = translate(Res.strings.address2), + initialValue = identity?.address2, + singleLine = true, + lens = CreateRequest.identity.address2, + ) + val address2Suggestions = createItem2Txt( + prefix = prefix, + key = "address2", + args = args, + getSuggestion = { it.identity?.address2 }, + field = address2, + ) + val address3 = createItem( + key = "address3", + label = translate(Res.strings.address3), + initialValue = identity?.address3, + singleLine = true, + lens = CreateRequest.identity.address3, + ) + val address3Suggestions = createItem2Txt( + prefix = prefix, + key = "address3", + args = args, + getSuggestion = { it.identity?.address3 }, + field = address3, + ) + val city = createItem( + key = "city", + label = translate(Res.strings.city), + initialValue = identity?.city, + singleLine = true, + lens = CreateRequest.identity.city, + ) + val citySuggestions = createItem2Txt( + prefix = prefix, + key = "city", + args = args, + getSuggestion = { it.identity?.city }, + field = city, + ) + val state = createItem( + key = "state", + label = translate(Res.strings.state), + initialValue = identity?.state, + singleLine = true, + lens = CreateRequest.identity.state, + ) + val stateSuggestions = createItem2Txt( + prefix = prefix, + key = "state", + args = args, + getSuggestion = { it.identity?.state }, + field = state, + ) + val postalCode = createItem( + key = "postalCode", + label = translate(Res.strings.postal_code), + initialValue = identity?.postalCode, + singleLine = true, + lens = CreateRequest.identity.postalCode, + ) + val postalCodeSuggestions = createItem2Txt( + prefix = prefix, + key = "postalCode", + args = args, + getSuggestion = { it.identity?.postalCode }, + field = postalCode, + ) + val country = createItem( + key = "country", + label = translate(Res.strings.country), + initialValue = identity?.country, + singleLine = true, + lens = CreateRequest.identity.country, + ) + val countrySuggestions = createItem2Txt( + prefix = prefix, + key = "country", + args = args, + getSuggestion = { it.identity?.country }, + field = country, + ) + val company = createItem( + key = "company", + label = translate(Res.strings.company), + initialValue = identity?.company, + singleLine = true, + lens = CreateRequest.identity.company, + ) + val companySuggestions = createItem2Txt( + prefix = prefix, + key = "country", + args = args, + getSuggestion = { it.identity?.company }, + field = company, + ) + val email = createItem( + key = "email", + label = translate(Res.strings.email), + initialValue = args.autofill?.email ?: identity?.email, + singleLine = true, + keyboardOptions = KeyboardOptions( + autoCorrect = false, + keyboardType = KeyboardType.Email, + ), + lens = CreateRequest.identity.email, + ) + val emailSuggestions = createItem2Txt( + prefix = prefix, + key = "email", + args = args, + getSuggestion = { it.identity?.email }, + field = email, + ) + val phone = createItem( + key = "phone", + label = translate(Res.strings.phone_number), + initialValue = args.autofill?.phone ?: identity?.phone, + singleLine = true, + keyboardOptions = KeyboardOptions( + autoCorrect = false, + keyboardType = KeyboardType.Phone, + ), + lens = CreateRequest.identity.phone, + ) + val phoneSuggestions = createItem2Txt( + prefix = prefix, + key = "phone", + args = args, + getSuggestion = { it.identity?.phone }, + field = phone, + ) + val ssn = createItem( + key = "ssn", + label = translate(Res.strings.ssn), + initialValue = identity?.ssn, + singleLine = true, + lens = CreateRequest.identity.ssn, + ) + val ssnSuggestions = createItem2Txt( + prefix = prefix, + key = "ssn", + args = args, + getSuggestion = { it.identity?.ssn }, + field = ssn, + ) + val username = createItem( + key = "username", + label = translate(Res.strings.username), + initialValue = args.autofill?.username ?: identity?.username, + singleLine = true, + lens = CreateRequest.identity.username, + ) + val usernameSuggestions = createItem2Txt( + prefix = prefix, + key = "username", + args = args, + getSuggestion = { it.identity?.username }, + field = username, + ) + val passportNumber = createItem( + key = "passportNumber", + label = translate(Res.strings.passport_number), + initialValue = identity?.passportNumber, + singleLine = true, + keyboardOptions = KeyboardOptions( + autoCorrect = false, + ), + lens = CreateRequest.identity.passportNumber, + ) + val passportNumberSuggestions = createItem2Txt( + prefix = prefix, + key = "passportNumber", + args = args, + getSuggestion = { it.identity?.passportNumber }, + field = passportNumber, + ) + val licenseNumber = createItem( + key = "licenseNumber", + label = translate(Res.strings.license_number), + initialValue = identity?.licenseNumber, + singleLine = true, + lens = CreateRequest.identity.licenseNumber, + ) + val licenseNumberSuggestions = createItem2Txt( + prefix = prefix, + key = "licenseNumber", + args = args, + getSuggestion = { it.identity?.licenseNumber }, + field = licenseNumber, + ) + return TmpIdentity( + title = title, + firstName = firstName, + middleName = middleName, + lastName = lastName, + address1 = address1, + address2 = address2, + address3 = address3, + city = city, + state = state, + postalCode = postalCode, + country = country, + company = company, + email = email, + phone = phone, + ssn = ssn, + username = username, + passportNumber = passportNumber, + licenseNumber = licenseNumber, + items = listOfNotNull( + title, + titleSuggestions, + firstName, + firstNameSuggestions, + middleName, + middleNameSuggestions, + lastName, + lastNameSuggestions, + AddStateItem.Section( + id = "identity.section.address", + ), + address1, + address1Suggestions, + address2, + address2Suggestions, + address3, + address3Suggestions, + city, + citySuggestions, + state, + stateSuggestions, + postalCode, + postalCodeSuggestions, + country, + countrySuggestions, + AddStateItem.Section( + id = "identity.section.misc", + ), + email, + emailSuggestions, + phone, + phoneSuggestions, + ssn, + ssnSuggestions, + username, + usernameSuggestions, + company, + companySuggestions, + passportNumber, + passportNumberSuggestions, + licenseNumber, + licenseNumberSuggestions, + ), + ) +} + +private suspend fun RememberStateFlowScope.produceNoteState( + args: AddRoute.Args, + markdown: Boolean, +): TmpNote { + val prefix = "notes" + + val note = kotlin.run { + val id = "$prefix.note" + + val initialValue = args.initialValue?.notes + + val sink = mutablePersistedFlow(id) { initialValue.orEmpty() } + val state = mutableComposeState(sink) + val stateItem = LocalStateItem( + flow = sink + .map { value -> + val model = TextFieldModel2( + state = state, + text = value, + hint = "Add any notes about this item here", + onChange = state::value::set, + ) + model + } + .persistingStateIn( + scope = screenScope, + started = SharingStarted.WhileSubscribed(), + initialValue = TextFieldModel2.empty, + ), + populator = { state -> + CreateRequest.note.set(this, state.text) + }, + ) + AddStateItem.Note( + id = id, + state = stateItem, + markdown = markdown, + ) + } + val noteSuggestions = createItem2( + prefix = prefix, + key = "note", + args = args, + getSuggestion = { it.notes }, + selectedFlow = note.state.flow.map { it.text }, + onClick = { + note.state.flow.value.onChange?.invoke(it) + }, + ) + return TmpNote( + note = note, + items = listOfNotNull( + note, + noteSuggestions, + ), + ) +} + +private suspend fun RememberStateFlowScope.createItem( + prefix: String, + key: String, + label: String? = null, + hint: String? = null, + initialValue: String? = null, + autocompleteOptions: ImmutableList = persistentListOf(), + singleLine: Boolean = false, + keyboardOptions: KeyboardOptions = KeyboardOptions.Default, + visualTransformation: VisualTransformation = VisualTransformation.None, + populator: CreateRequest.(AddStateItem.Text.State) -> CreateRequest, +) = createItem( + prefix = prefix, + key = key, + label = label, + hint = hint, + initialValue = initialValue, + autocompleteOptions = autocompleteOptions, + singleLine = singleLine, + keyboardOptions = keyboardOptions, + visualTransformation = visualTransformation, + populator = populator, +) { id, state -> + AddStateItem.Text( + id = id, + state = state, + ) +} + +private suspend fun RememberStateFlowScope.createItem( + prefix: String, + key: String, + label: String? = null, + hint: String? = null, + initialValue: String? = null, + autocompleteOptions: ImmutableList = persistentListOf(), + singleLine: Boolean = false, + keyboardOptions: KeyboardOptions = KeyboardOptions.Default, + visualTransformation: VisualTransformation = VisualTransformation.None, + populator: CreateRequest.(AddStateItem.Text.State) -> CreateRequest, + factory: (String, LocalStateItem) -> Item, +): Item { + val id = "$prefix.$key" + + val sink = mutablePersistedFlow(id) { initialValue.orEmpty() } + val state = mutableComposeState(sink) + return factory( + id, + LocalStateItem( + flow = sink + .map { value -> + val model = TextFieldModel2( + state = state, + text = value, + hint = hint, + autocompleteOptions = autocompleteOptions, + onChange = state::value::set, + ) + AddStateItem.Text.State( + value = model, + label = label, + singleLine = singleLine, + keyboardOptions = keyboardOptions, + visualTransformation = visualTransformation, + ) + } + .persistingStateIn( + scope = screenScope, + started = SharingStarted.WhileSubscribed(), + initialValue = AddStateItem.Text.State( + value = TextFieldModel2.empty, + label = label, + ), + ), + populator = populator, + ), + ) +} + +private suspend fun RememberStateFlowScope.createItem2Txt( + prefix: String, + key: String, + args: AddRoute.Args, + getSuggestion: (DSecret) -> String?, + field: AddStateItem.Text, + concealed: Boolean = false, +) = createItem2( + prefix = prefix, + key = key, + args = args, + getSuggestion = getSuggestion, + selectedFlow = field.state.flow.map { it.value.text }, + concealed = concealed, + onClick = { + field.state.flow.value.value.onChange?.invoke(it) + }, +) + +private suspend fun RememberStateFlowScope.createItem2( + prefix: String, + key: String, + args: AddRoute.Args, + getSuggestion: (DSecret) -> String?, + selectedFlow: Flow, + concealed: Boolean = false, + onClick: (String) -> Unit, +): AddStateItem.Suggestion? { + val finalKey = "$prefix.$key.suggestions" + val suggestions = args.merge + ?.ciphers + ?.mapNotNull { cipher -> + val suggestion = getSuggestion(cipher) + // skip blank suggestions + ?.takeIf { it.isNotBlank() } + ?: return@mapNotNull null + suggestion to cipher + } + ?.groupBy { it.first } + ?.takeIf { it.size > 1 } + ?: return null + + val items = suggestions + .map { (suggestion, secrets) -> + val suggestionKey = "$finalKey.$suggestion" + val text = if (concealed) { + obscurePassword(suggestion) + } else { + suggestion + } + AddStateItem.Suggestion.Item( + key = suggestionKey, + value = suggestion, + text = text, + source = secrets + .joinToString { it.second.name }, + onClick = onClick + .partially1(suggestion), + selected = false, + ) + } + .toImmutableList() + val flow = selectedFlow + .map { selectedValue -> + val i = items + .map { item -> + val selected = selectedValue == item.value + item.copy(selected = selected) + } + .toImmutableList() + AddStateItem.Suggestion.State( + items = i, + ) + } + .persistingStateIn( + scope = screenScope, + started = SharingStarted.WhileSubscribed(), + initialValue = AddStateItem.Suggestion.State(persistentListOf()), + ) + return AddStateItem.Suggestion( + id = finalKey, + state = LocalStateItem( + flow = flow, + ), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/add/attachment/SkeletonAttachment.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/add/attachment/SkeletonAttachment.kt new file mode 100644 index 00000000..8fe07caf --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/add/attachment/SkeletonAttachment.kt @@ -0,0 +1,37 @@ +package com.artemchep.keyguard.feature.home.vault.add.attachment + +import com.artemchep.keyguard.platform.LeUri +import com.artemchep.keyguard.platform.parcelize.LeParcelable +import com.artemchep.keyguard.platform.parcelize.LeParcelize + +sealed interface SkeletonAttachment { + sealed interface Identity : LeParcelable + + val identity: Identity + val name: String + val size: String + + data class Remote( + override val identity: Identity, + override val name: String, + override val size: String, + ) : SkeletonAttachment { + @LeParcelize + data class Identity( + val id: String, + ) : SkeletonAttachment.Identity, LeParcelable + } + + data class Local( + override val identity: Identity, + override val name: String, + override val size: String, + ) : SkeletonAttachment { + @LeParcelize + data class Identity( + val id: String, + val uri: LeUri, + val size: Long? = null, + ) : SkeletonAttachment.Identity, LeParcelable + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/add/attachment/SkeletonAttachmentItemFactory.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/add/attachment/SkeletonAttachmentItemFactory.kt new file mode 100644 index 00000000..6bfcc4ac --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/add/attachment/SkeletonAttachmentItemFactory.kt @@ -0,0 +1,95 @@ +package com.artemchep.keyguard.feature.home.vault.add.attachment + +import com.artemchep.keyguard.common.model.create.CreateRequest +import com.artemchep.keyguard.common.model.create.attachments +import com.artemchep.keyguard.common.util.flow.persistingStateIn +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import com.artemchep.keyguard.feature.home.vault.add.AddStateItem +import com.artemchep.keyguard.feature.home.vault.add.Foo2Factory +import com.artemchep.keyguard.feature.home.vault.add.LocalStateItem +import com.artemchep.keyguard.feature.navigation.state.RememberStateFlowScope +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.map + +class SkeletonAttachmentItemFactory : Foo2Factory { + override val type: String = "attachment" + + override fun RememberStateFlowScope.release(key: String) { + clearPersistedFlow("$key.identity") + clearPersistedFlow("$key.name") + } + + override fun RememberStateFlowScope.add( + key: String, + initial: SkeletonAttachment?, + ): AddStateItem.Attachment { + val identitySink = mutablePersistedFlow("$key.identity") { + val identity = initial?.identity + requireNotNull(identity) + } + val identity = identitySink.value + val synced = identity is SkeletonAttachment.Remote.Identity + + val nameKey = "$key.name" + val nameSink = mutablePersistedFlow(nameKey) { + initial?.name.orEmpty() + } + val nameMutableState = asComposeState(nameKey) + + val textFlow = nameSink + .map { uri -> + TextFieldModel2( + text = uri, + state = nameMutableState, + onChange = nameMutableState::value::set, + ) + } + val stateFlow = textFlow + .map { text -> + AddStateItem.Attachment.State( + id = "id", + name = text, + size = initial?.size, + synced = synced, + ) + } + .persistingStateIn( + scope = screenScope, + started = SharingStarted.WhileSubscribed(), + initialValue = AddStateItem.Attachment.State( + id = "id", + name = TextFieldModel2.empty, + size = null, + synced = synced, + ), + ) + return AddStateItem.Attachment( + id = key, + state = LocalStateItem( + flow = stateFlow, + populator = { state -> + CreateRequest.attachments.modify(this) { + val model = when (identity) { + is SkeletonAttachment.Remote.Identity -> { + CreateRequest.Attachment.Remote( + id = identity.id, + name = state.name.text, + ) + } + + is SkeletonAttachment.Local.Identity -> { + CreateRequest.Attachment.Local( + id = identity.id, + uri = identity.uri, + size = identity.size, + name = state.name.text, + ) + } + } + it.add(model) + } + }, + ), + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/collection/CollectionRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/collection/CollectionRoute.kt new file mode 100644 index 00000000..f8139dfb --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/collection/CollectionRoute.kt @@ -0,0 +1,19 @@ +package com.artemchep.keyguard.feature.home.vault.collection + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.DialogRoute + +data class CollectionRoute( + val args: Args, +) : DialogRoute { + data class Args( + val collectionId: String, + ) + + @Composable + override fun Content() { + CollectionScreen( + args = args, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/collection/CollectionScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/collection/CollectionScreen.kt new file mode 100644 index 00000000..3f8b0bcd --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/collection/CollectionScreen.kt @@ -0,0 +1,102 @@ +package com.artemchep.keyguard.feature.home.vault.collection + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.fold +import com.artemchep.keyguard.feature.dialog.Dialog +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun CollectionScreen( + args: CollectionRoute.Args, +) { + val state = collectionScreenState( + args = args, + ) + Dialog( + title = { + Text("Collection info") + }, + content = { + state.content.fold( + ifLoading = { + CircularProgressIndicator( + modifier = Modifier + .align(Alignment.Center) + .padding(16.dp), + ) + }, + ifOk = { contentOrNull -> + if (contentOrNull != null) { + CollectionScreenContent( + content = contentOrNull, + ) + } + }, + ) + }, + actions = { + val updatedOnClose by rememberUpdatedState(state.onClose) + TextButton( + enabled = state.onClose != null, + onClick = { + updatedOnClose?.invoke() + }, + ) { + Text(stringResource(Res.strings.close)) + } + }, + ) +} + +@Composable +fun CollectionScreenContent( + content: CollectionState.Content, +) { + Column( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + ) { + ExpandedIfNotEmpty( + valueOrNull = Unit.takeIf { content.config.readOnly }, + ) { + Text( + modifier = Modifier + .padding(vertical = 2.dp), + text = "Read only", + style = MaterialTheme.typography.bodySmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + ) + } + ExpandedIfNotEmpty( + valueOrNull = Unit.takeIf { content.config.hidePasswords }, + ) { + Text( + modifier = Modifier + .padding(vertical = 2.dp), + text = "Hide passwords", + style = MaterialTheme.typography.bodySmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + ) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/collection/CollectionState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/collection/CollectionState.kt new file mode 100644 index 00000000..30d61000 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/collection/CollectionState.kt @@ -0,0 +1,27 @@ +package com.artemchep.keyguard.feature.home.vault.collection + +import androidx.compose.runtime.Immutable +import com.artemchep.keyguard.common.model.DOrganization +import com.artemchep.keyguard.common.model.Loadable + +/** + * @author Artem Chepurnyi + */ +@Immutable +data class CollectionState( + val content: Loadable = Loadable.Loading, + val onClose: (() -> Unit)? = null, +) { + @Immutable + data class Content( + val title: String, + val organization: DOrganization?, + val config: Config, + ) { + @Immutable + data class Config( + val readOnly: Boolean, + val hidePasswords: Boolean, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/collection/CollectionStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/collection/CollectionStateProducer.kt new file mode 100644 index 00000000..91fa6aee --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/collection/CollectionStateProducer.kt @@ -0,0 +1,76 @@ +package com.artemchep.keyguard.feature.home.vault.collection + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.usecase.GetCollections +import com.artemchep.keyguard.common.usecase.GetOrganizations +import com.artemchep.keyguard.feature.navigation.state.navigatePopSelf +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.shareIn +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +@Composable +fun collectionScreenState( + args: CollectionRoute.Args, +) = with(localDI().direct) { + collectionScreenState( + args = args, + getOrganizations = instance(), + getCollections = instance(), + ) +} + +@Composable +fun collectionScreenState( + args: CollectionRoute.Args, + getOrganizations: GetOrganizations, + getCollections: GetCollections, +): CollectionState = produceScreenState( + key = "collection", + initial = CollectionState(), + args = arrayOf( + args, + getOrganizations, + getCollections, + ), +) { + fun onClose() { + navigatePopSelf() + } + + val collectionFlow = getCollections() + .map { collections -> + collections + .firstOrNull { it.id == args.collectionId } + } + .shareIn(screenScope, SharingStarted.Lazily, replay = 1) + val contentFlow = combine( + collectionFlow, + getOrganizations(), + ) { collection, organizations -> + collection + ?: return@combine null + val organization = organizations.firstOrNull { it.id == collection.organizationId } + val config = CollectionState.Content.Config( + readOnly = collection.readOnly, + hidePasswords = collection.hidePasswords, + ) + CollectionState.Content( + title = collection.name, + organization = organization, + config = config, + ) + } + contentFlow + .map { content -> + CollectionState( + content = Loadable.Ok(content), + onClose = ::onClose, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/collections/CollectionsRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/collections/CollectionsRoute.kt new file mode 100644 index 00000000..81ede591 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/collections/CollectionsRoute.kt @@ -0,0 +1,21 @@ +package com.artemchep.keyguard.feature.home.vault.collections + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.feature.navigation.Route + +data class CollectionsRoute( + val args: Args, +) : Route { + data class Args( + val accountId: AccountId, + val organizationId: String?, + ) + + @Composable + override fun Content() { + CollectionsScreen( + args = args, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/collections/CollectionsScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/collections/CollectionsScreen.kt new file mode 100644 index 00000000..a1d82b52 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/collections/CollectionsScreen.kt @@ -0,0 +1,232 @@ +@file:OptIn(ExperimentalMaterial3Api::class) + +package com.artemchep.keyguard.feature.home.vault.collections + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.lazy.items +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Add +import androidx.compose.material3.Checkbox +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalAbsoluteTonalElevation +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Modifier +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.feature.EmptyView +import com.artemchep.keyguard.feature.home.vault.component.Section +import com.artemchep.keyguard.feature.home.vault.component.surfaceColorAtElevationSemi +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.AhLayout +import com.artemchep.keyguard.ui.DefaultFab +import com.artemchep.keyguard.ui.DefaultSelection +import com.artemchep.keyguard.ui.ExpandedIfNotEmptyForRow +import com.artemchep.keyguard.ui.FabState +import com.artemchep.keyguard.ui.FlatDropdown +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.ScaffoldLazyColumn +import com.artemchep.keyguard.ui.animatedNumberText +import com.artemchep.keyguard.ui.skeleton.SkeletonItemPilled +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.toolbar.LargeToolbar +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun CollectionsScreen( + args: CollectionsRoute.Args, +) { + val state = collectionsScreenState( + args = args, + ) + CollectionsScreenContent( + state = state, + ) +} + +@Composable +fun CollectionsScreenContent( + state: CollectionsState, +) { + val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + ScaffoldLazyColumn( + modifier = Modifier + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + LargeToolbar( + title = { + Column { + Text( + text = stringResource(Res.strings.account), + style = MaterialTheme.typography.labelSmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + overflow = TextOverflow.Ellipsis, + maxLines = 2, + ) + Text( + text = stringResource(Res.strings.collections), + style = MaterialTheme.typography.titleMedium, + overflow = TextOverflow.Ellipsis, + maxLines = 1, + ) + } + }, + navigationIcon = { + NavigationIcon() + }, + scrollBehavior = scrollBehavior, + ) + }, + floatingActionState = run { + val fabOnClick = state.onAdd + val fabState = if (fabOnClick != null) { + FabState( + onClick = fabOnClick, + model = null, + ) + } else { + null + } + rememberUpdatedState(newValue = fabState) + }, + floatingActionButton = { + DefaultFab( + icon = { + Icon( + imageVector = Icons.Outlined.Add, + contentDescription = null, + ) + }, + text = { + Text("New collection") + }, + ) + }, + bottomBar = { + DefaultSelection( + state = state.selection, + ) + }, + ) { + when (val contentState = state.content) { + is Loadable.Loading -> { + for (i in 1..3) { + item("skeleton.$i") { + SkeletonItemPilled() + } + } + } + + is Loadable.Ok -> { + val items = contentState.value.items + if (items.isEmpty()) { + item("empty") { + EmptyView( + text = { + Text( + text = stringResource(Res.strings.collections_empty_label), + ) + }, + ) + } + } + + items( + items = items, + key = { it.key }, + ) { + OrganizationsScreenItem( + modifier = Modifier + .animateItemPlacement(), + item = it, + ) + } + } + } + } +} + +@Composable +private fun OrganizationsScreenItem( + modifier: Modifier = Modifier, + item: CollectionsState.Content.Item, +) = when (item) { + is CollectionsState.Content.Item.Section -> + OrganizationsScreenSectionItem( + modifier = modifier, + item = item, + ) + + is CollectionsState.Content.Item.Collection -> + OrganizationsScreenCollectionItem( + modifier = modifier, + item = item, + ) +} + +@Composable +private fun OrganizationsScreenSectionItem( + modifier: Modifier = Modifier, + item: CollectionsState.Content.Item.Section, +) { + Section( + modifier = modifier, + text = item.text, + ) +} + +@Composable +private fun OrganizationsScreenCollectionItem( + modifier: Modifier = Modifier, + item: CollectionsState.Content.Item.Collection, +) { + val backgroundColor = + if (item.selected) MaterialTheme.colorScheme.primaryContainer else MaterialTheme.colorScheme.surface + FlatDropdown( + modifier = modifier, + backgroundColor = backgroundColor, + dropdown = item.actions, + leading = { + val pillElevation = LocalAbsoluteTonalElevation.current + 8.dp + val pillColor = MaterialTheme.colorScheme + .surfaceColorAtElevationSemi(elevation = pillElevation) + AhLayout( + modifier = modifier, + backgroundColor = pillColor, + ) { + val text = animatedNumberText(item.ciphers) + Text(text) + } + }, + content = { + FlatItemTextContent( + title = { + Text(item.title) + }, + ) + }, + trailing = { + ExpandedIfNotEmptyForRow( + item.selected.takeIf { item.selecting }, + ) { selected -> + Checkbox( + checked = selected, + onCheckedChange = null, + ) + } + }, + onClick = item.onClick, + onLongClick = item.onLongClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/collections/CollectionsState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/collections/CollectionsState.kt new file mode 100644 index 00000000..600acd33 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/collections/CollectionsState.kt @@ -0,0 +1,56 @@ +package com.artemchep.keyguard.feature.home.vault.collections + +import androidx.compose.runtime.Immutable +import androidx.compose.ui.graphics.vector.ImageVector +import com.artemchep.keyguard.common.model.DOrganization +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.ui.ContextItem +import com.artemchep.keyguard.ui.Selection +import kotlinx.collections.immutable.ImmutableList + +/** + * @author Artem Chepurnyi + */ +@Immutable +data class CollectionsState( + val selection: Selection? = null, + val content: Loadable = Loadable.Loading, + val onAdd: (() -> Unit)? = null, +) { + @Immutable + data class Content( + val title: Title, + val items: ImmutableList, + ) { + @Immutable + data class Title( + val title: String? = null, + val subtitle: String? = null, + ) + + @Immutable + sealed interface Item { + val key: String + + @Immutable + data class Section( + override val key: String, + val text: String? = null, + ) : Item + + @Immutable + data class Collection( + override val key: String, + val title: String, + val ciphers: Int, + val selecting: Boolean, + val selected: Boolean, + val organization: DOrganization?, + val icon: ImageVector? = null, + val actions: ImmutableList, + val onClick: (() -> Unit)?, + val onLongClick: (() -> Unit)?, + ) : Item + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/collections/CollectionsStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/collections/CollectionsStateProducer.kt new file mode 100644 index 00000000..cc71219a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/collections/CollectionsStateProducer.kt @@ -0,0 +1,373 @@ +package com.artemchep.keyguard.feature.home.vault.collections + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Info +import androidx.compose.runtime.Composable +import arrow.core.partially1 +import com.artemchep.keyguard.common.model.DCollection +import com.artemchep.keyguard.common.model.DOrganization +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.usecase.GetCanWrite +import com.artemchep.keyguard.common.usecase.GetCiphers +import com.artemchep.keyguard.common.usecase.GetCollections +import com.artemchep.keyguard.common.usecase.GetOrganizations +import com.artemchep.keyguard.feature.home.vault.VaultRoute +import com.artemchep.keyguard.feature.home.vault.collection.CollectionRoute +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.Selection +import com.artemchep.keyguard.ui.buildContextItems +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.KeyguardCipher +import com.artemchep.keyguard.ui.selection.selectionHandle +import kotlinx.collections.immutable.toImmutableList +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.shareIn +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance +import java.util.UUID + +@Composable +fun collectionsScreenState( + args: CollectionsRoute.Args, +) = with(localDI().direct) { + collectionsScreenState( + args = args, + getOrganizations = instance(), + getCollections = instance(), + getCiphers = instance(), + getCanWrite = instance(), + ) +} + +@Composable +fun collectionsScreenState( + args: CollectionsRoute.Args, + getOrganizations: GetOrganizations, + getCollections: GetCollections, + getCiphers: GetCiphers, + getCanWrite: GetCanWrite, +): CollectionsState = produceScreenState( + key = "collections", + initial = CollectionsState(), + args = arrayOf( + args, + getCollections, + getOrganizations, + getCiphers, + getCanWrite, + ), +) { + fun checkAccountId(accountId: String) = accountId == args.accountId.id + + fun checkOrganizationId(organizationId: String?) = + args.organizationId == null || + args.organizationId == organizationId + + data class CollectionWithCiphers( + val collection: DCollection, + val organization: DOrganization?, + val ciphers: List, + ) + + val comparator = Comparator { a: CollectionWithCiphers, b: CollectionWithCiphers -> + var out = compareValues(a.organization, b.organization) + if (out == 0) { + out = compareValues(a.collection, b.collection) + } + out + } + + val collectionsFlow = getCollections() + .map { collections -> + collections + .filter { + checkAccountId(it.accountId) && + checkOrganizationId(it.organizationId) + } + } + .distinctUntilChanged() + .shareIn(screenScope, SharingStarted.WhileSubscribed(), replay = 1) + val organizationsMapFlow = getOrganizations() + .map { organizations -> + organizations + .filter { + checkAccountId(it.accountId) && + checkOrganizationId(it.id) + } + } + .distinctUntilChanged() + .map { organizations -> + organizations + // can ot have collisions because we filter by account id + .associateBy { it.id } + } + .shareIn(screenScope, SharingStarted.WhileSubscribed(), replay = 1) + val ciphersMapByCollectionIdFlow = getCiphers() + .map { ciphers -> + ciphers + .filter { + it.deletedDate == null && + checkAccountId(it.accountId) && + checkOrganizationId(it.organizationId) + } + } + .distinctUntilChanged() + .map { ciphers -> + ciphers + .flatMap { cipher -> + cipher + .collectionIds + .map { collectionId -> + collectionId to cipher + } + } + .groupBy { it.first } + .mapValues { entry -> + entry + .value + .map { collectionCipherPair -> + collectionCipherPair.second + } + } + } + .shareIn(screenScope, SharingStarted.WhileSubscribed(), replay = 1) + + val collectionsWithCiphersFolder = combine( + collectionsFlow, + organizationsMapFlow, + ciphersMapByCollectionIdFlow, + ) { collections, organizationsMap, ciphersMapByCollectionId -> + collections + .map { collection -> + val organization = organizationsMap[collection.organizationId] + val ciphers = ciphersMapByCollectionId[collection.id].orEmpty() + CollectionWithCiphers( + collection = collection, + organization = organization, + ciphers = ciphers, + ) + } + .sortedWith(comparator) + } + + val selectionHandle = selectionHandle("selection") + val selectedCollectionsWithCiphersFlow = collectionsWithCiphersFolder + .combine(selectionHandle.idsFlow) { collectionsWithCiphers, selectedCollectionIds -> + selectedCollectionIds + .mapNotNull { selectedCollectionId -> + val collectionWithCiphers = collectionsWithCiphers + .firstOrNull { it.collection.id == selectedCollectionId } + ?: return@mapNotNull null + selectedCollectionId to collectionWithCiphers + } + .toMap() + } + .distinctUntilChanged() + .shareIn(screenScope, SharingStarted.Lazily, replay = 1) + + val selectionFlow = combine( + collectionsFlow + .map { collections -> + collections + .map { it.id } + .toSet() + } + .distinctUntilChanged(), + selectedCollectionsWithCiphersFlow, + getCanWrite(), + ) { collectionIds, selectedCollections, canWrite -> + if (selectedCollections.isEmpty()) { + return@combine null + } + + val selectedFolderIds = selectedCollections.keys + val actions = mutableListOf() + // An option to view all the items that belong + // to these collections. + val ciphersCount = selectedCollections + .asSequence() + .flatMap { it.value.ciphers } + .distinct() + .count() + if (ciphersCount > 0) { + actions += FlatItemAction( + icon = Icons.Outlined.KeyguardCipher, + title = translate(Res.strings.items), + trailing = { + ChevronIcon() + }, + onClick = { + val collections = selectedCollections.values + .map { it.collection } + val route = VaultRoute.by( + translator = this, + collections = collections, + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + } + Selection( + count = selectedCollections.size, + actions = actions.toImmutableList(), + onSelectAll = selectionHandle::setSelection + .partially1(collectionIds) + .takeIf { + collectionIds.size > selectedFolderIds.size + }, + onClear = selectionHandle::clearSelection, + ) + } + val contentFlow = combine( + collectionsWithCiphersFolder, + selectedCollectionsWithCiphersFlow, + getCanWrite(), + ) { collectionsWithCiphers, selectedCollectionIds, canWrite -> + val selecting = selectedCollectionIds.isNotEmpty() + val decorator = if (args.organizationId != null) { + // We already know the organization, no need to add it + // to the list. + NoDecorator + } else { + OrganizationDecorator() + } + val items = collectionsWithCiphers + .asSequence() + .map { collectionWithCiphers -> + val collection = collectionWithCiphers.collection + val ciphers = collectionWithCiphers.ciphers + val selected = collection.id in selectedCollectionIds + + val actions = buildContextItems { + section { + // An option to view all the items that belong + // to this cipher. + if (ciphers.isNotEmpty()) { + this += FlatItemAction( + icon = Icons.Outlined.KeyguardCipher, + title = translate(Res.strings.items), + onClick = { + val route = VaultRoute.by( + translator = this@produceScreenState, + collection = collection, + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + } + } + section { + this += FlatItemAction( + icon = Icons.Outlined.Info, + title = translate(Res.strings.info), + onClick = { + val intent = NavigationIntent.NavigateToRoute( + CollectionRoute( + args = CollectionRoute.Args( + collectionId = collection.id, + ), + ), + ) + navigate(intent) + }, + ) + } + } + CollectionsState.Content.Item.Collection( + key = collection.id, + title = collection.name, + ciphers = collectionWithCiphers.ciphers.size, + organization = collectionWithCiphers.organization, + selecting = selecting, + selected = selected, + actions = actions.toImmutableList(), + onClick = if (selecting) { + // lambda + selectionHandle::toggleSelection.partially1(collection.id) + } else { + null + }, + onLongClick = if (selecting) { + null + } else { + // lambda + selectionHandle::toggleSelection.partially1(collection.id) + }, + ) + } + .flatMap { item -> + sequence { + val section = decorator.getOrNull(item) + if (section != null) yield(section) + yield(item) + } + } + .toImmutableList() + CollectionsState.Content( + title = CollectionsState.Content.Title(), + items = items, + ) + } + combine( + selectionFlow, + contentFlow, + ) { selection, content -> + CollectionsState( + selection = selection, + content = Loadable.Ok(content), + ) + } +} + +private interface Decorator { + fun getOrNull(item: CollectionsState.Content.Item.Collection): CollectionsState.Content.Item? +} + +private object NoDecorator : Decorator { + override fun getOrNull(item: CollectionsState.Content.Item.Collection) = null +} + +private class OrganizationDecorator : Decorator { + private val seenOrganizationIds = mutableSetOf() + + /** + * Last shown character, used to not repeat the sections + * if it stays the same. + */ + private var lastOrganization: DOrganization? = null + + override fun getOrNull(item: CollectionsState.Content.Item.Collection): CollectionsState.Content.Item? { + val organization = item.organization + if (organization?.id == lastOrganization?.id) { + return null + } + + lastOrganization = organization + if (organization != null) { + val itemKey = if (organization.id in seenOrganizationIds) { + val randomId = UUID.randomUUID().toString() + "duplicate.$randomId" + } else { + organization.id + } + // mark as seen, so next time we generate a new id for the section + seenOrganizationIds += organization.id + + return CollectionsState.Content.Item.Section( + key = "decorator.organization.$itemKey", + text = organization.name, + ) + } + return null + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/SearchTextField.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/SearchTextField.kt new file mode 100644 index 00000000..33e9cc1d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/SearchTextField.kt @@ -0,0 +1,211 @@ +package com.artemchep.keyguard.feature.home.vault.component + +import androidx.compose.animation.animateColorAsState +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.interaction.collectIsFocusedAsState +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.text.KeyboardActions +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Clear +import androidx.compose.material.icons.outlined.Search +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.State +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.composed +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.drawBehind +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Shape +import androidx.compose.ui.graphics.luminance +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.input.ImeAction +import androidx.compose.ui.text.input.KeyboardType +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.artemchep.keyguard.ui.ExpandedIfNotEmptyForRow +import com.artemchep.keyguard.ui.PlainTextField +import com.artemchep.keyguard.ui.theme.combineAlpha + +@Composable +fun SearchTextField( + modifier: Modifier = Modifier, + text: String, + placeholder: String, + searchIcon: Boolean = true, + leading: @Composable () -> Unit, + trailing: @Composable () -> Unit, + onTextChange: ((String) -> Unit)?, + onGoClick: (() -> Unit)?, +) { + val interactionSource = remember { + MutableInteractionSource() + } + + val isEmptyState = rememberUpdatedState(text.isEmpty()) + val isFocusedState = interactionSource.collectIsFocusedAsState() + Row( + modifier = modifier + .fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically, + ) { + Row( + modifier = Modifier + .weight(1f) + // Height should be the size of + // the Material 3 top bar. + .height(64.dp) + .padding( + horizontal = 8.dp, + vertical = 8.dp, + ) + .searchTextFieldBackground( + isEmptyState = isEmptyState, + isFocusedState = isFocusedState, + shape = CircleShape, + ), + verticalAlignment = Alignment.CenterVertically, + ) { + Spacer( + modifier = Modifier + .size(8.dp), + ) + Row( + verticalAlignment = Alignment.CenterVertically, + ) { + leading() + + if (searchIcon) { + Icon( + imageVector = Icons.Outlined.Search, + contentDescription = null, + ) + } else { + Spacer( + modifier = Modifier + .size(24.dp), + ) + } + Spacer( + modifier = Modifier + .size(16.dp), + ) + } + val textStyle = TextStyle( + fontSize = 20.sp, + ) + val updatedOnChange by rememberUpdatedState(onTextChange) + PlainTextField( + modifier = Modifier + .fillMaxHeight() + .weight(1f), + interactionSource = interactionSource, + value = text, + textStyle = textStyle, + placeholder = { + Text( + text = placeholder, + style = textStyle, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + ) + }, + enabled = onTextChange != null, + onValueChange = { + updatedOnChange?.invoke(it) + }, + keyboardOptions = KeyboardOptions( + keyboardType = KeyboardType.Text, + imeAction = if (onGoClick != null) ImeAction.Go else ImeAction.Done, + autoCorrect = false, + ), + keyboardActions = KeyboardActions( + onGo = { + onGoClick?.invoke() + }, + ), + singleLine = true, + ) + Spacer( + modifier = Modifier + .size(8.dp), + ) + ExpandedIfNotEmptyForRow( + valueOrNull = Unit + .takeIf { !isEmptyState.value }, + ) { + IconButton( + enabled = onTextChange != null, + onClick = { + updatedOnChange?.invoke("") + }, + ) { + Icon(Icons.Outlined.Clear, null) + } + } + } + + trailing() + } +} + +private fun Modifier.searchTextFieldBackground( + isEmptyState: State, + isFocusedState: State, + shape: Shape, +): Modifier = composed { + val isHighlightedState = remember(isEmptyState, isFocusedState) { + derivedStateOf { + !isEmptyState.value || + isFocusedState.value + } + } + + val colorAlphaTarget: Float + val colorRgbTarget: Color + + val backgroundColor = MaterialTheme.colorScheme.background + val luminance = backgroundColor.luminance() + if (luminance > 0.5f) { // light background + colorAlphaTarget = 0.07f + colorRgbTarget = Color.Black + } else if (luminance > 0f) { // dark background + colorAlphaTarget = 0.22f + colorRgbTarget = Color.Black + } else { // black background + colorAlphaTarget = 0.14f + colorRgbTarget = Color.Gray + } + + val colorTarget = colorRgbTarget + .combineAlpha(colorAlphaTarget) + val colorState = animateColorAsState( + targetValue = if (isHighlightedState.value) colorTarget else colorTarget.combineAlpha(0f), + label = "SearchFieldBackground", + ) + + this + .clip(shape) + .drawBehind { + val color = colorState.value + drawRect(color) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultListItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultListItem.kt new file mode 100644 index 00000000..672cca8c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultListItem.kt @@ -0,0 +1,752 @@ +package com.artemchep.keyguard.feature.home.vault.component + +import androidx.compose.animation.Crossfade +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.combinedClickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.BoxScope +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.FlowRow +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.widthIn +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.ErrorOutline +import androidx.compose.material.icons.outlined.Key +import androidx.compose.material.icons.outlined.Lock +import androidx.compose.material.icons.outlined.SearchOff +import androidx.compose.material3.Checkbox +import androidx.compose.material3.ColorScheme +import androidx.compose.material3.DropdownMenu +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.LocalMinimumInteractiveComponentEnforcement +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.ProvideTextStyle +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.material3.minimumInteractiveComponentSize +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.key +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.drawBehind +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.compositeOver +import androidx.compose.ui.graphics.isSpecified +import androidx.compose.ui.graphics.luminance +import androidx.compose.ui.hapticfeedback.HapticFeedbackType +import androidx.compose.ui.platform.LocalHapticFeedback +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import arrow.core.partially1 +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.feature.EmptyView +import com.artemchep.keyguard.feature.favicon.FaviconImage +import com.artemchep.keyguard.feature.home.vault.model.VaultItem2 +import com.artemchep.keyguard.feature.home.vault.model.VaultItemIcon +import com.artemchep.keyguard.feature.localization.textResource +import com.artemchep.keyguard.feature.twopane.LocalHasDetailPane +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.AvatarBuilder +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.DropdownMenuItemFlat +import com.artemchep.keyguard.ui.DropdownMinWidth +import com.artemchep.keyguard.ui.DropdownScopeImpl +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.IconSmallBox +import com.artemchep.keyguard.ui.icons.KeyguardAttachment +import com.artemchep.keyguard.ui.icons.KeyguardFavourite +import com.artemchep.keyguard.ui.rightClickable +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.theme.isDark +import com.artemchep.keyguard.ui.theme.selectedContainer +import com.artemchep.keyguard.ui.util.HorizontalDivider +import dev.icerock.moko.resources.compose.painterResource +import dev.icerock.moko.resources.compose.stringResource +import kotlin.math.ln + +@Composable +fun VaultListItem( + modifier: Modifier = Modifier, + item: VaultItem2, +) = when (item) { + is VaultItem2.QuickFilters -> { + } + + is VaultItem2.NoSuggestions -> { + EmptyView( + icon = { + Icon(Icons.Outlined.SearchOff, null) + }, + text = { + Text( + text = stringResource(Res.strings.vault_main_no_suggested_items), + ) + }, + ) + } + + is VaultItem2.NoItems -> { + EmptyView( + icon = { + Icon(Icons.Outlined.SearchOff, null) + }, + text = { + Text( + text = stringResource(Res.strings.items_empty_label), + ) + }, + ) + } + + is VaultItem2.Section -> VaultListItemSection(modifier, item) + is VaultItem2.Button -> VaultListItemButton(modifier, item) + is VaultItem2.Item -> VaultListItemText(modifier, item) +} + +@Composable +fun VaultListItemSection( + modifier: Modifier = Modifier, + item: VaultItem2.Section, +) { + val text = item.text?.let { textResource(it) } + Section( + modifier = modifier, + text = text, + caps = item.caps, + ) +} + +@Composable +fun VaultListItemButton( + modifier: Modifier = Modifier, + item: VaultItem2.Button, +) { + VaultViewButtonItem( + modifier = modifier, + leading = { + item.leading?.invoke() + }, + text = item.title, + onClick = item.onClick, + ) +} + +@Composable +fun Section( + modifier: Modifier = Modifier, + text: String? = null, + caps: Boolean = true, +) { + if (text != null) { + Text( + modifier = modifier + .padding( + vertical = 16.dp, + horizontal = Dimens.horizontalPadding, + ), + text = if (caps) text.uppercase() else text, + style = MaterialTheme.typography.labelLarge, + fontSize = 12.sp, + fontWeight = FontWeight.Medium, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + ) + } else { + HorizontalDivider( + modifier = modifier + .padding( + vertical = 4.dp, + ), + ) + } +} + +@Composable +fun LargeSection( + modifier: Modifier = Modifier, + text: String, + trailing: (@Composable RowScope.() -> Unit)? = null, +) { + Row( + modifier = modifier + .padding( + vertical = 16.dp, + horizontal = Dimens.horizontalPadding, + ), + ) { + val textStyle = MaterialTheme.typography.labelLarge + .copy( + fontSize = 18.sp, + fontWeight = FontWeight.Medium, + ) + ProvideTextStyle(textStyle) { + Text( + modifier = Modifier + .weight(1f), + text = text, + ) + if (trailing != null) { + Spacer( + modifier = Modifier + .width(8.dp), + ) + trailing() + } + } + } +} + +@Composable +fun VaultListItemText( + modifier: Modifier = Modifier, + item: VaultItem2.Item, +) { + val dropdownExpandedState = remember { mutableStateOf(false) } + val dropdownExpand = remember { + // lambda + dropdownExpandedState::value::set + .partially1(true) + } + val dropdownActions = item.action + .let { it as? VaultItem2.Item.Action.Dropdown } + .let { it?.actions.orEmpty() } + // If we suddenly switch the mode of the items or items disappear, + // then collapse the existing popup window. + if (dropdownActions.isEmpty()) { + dropdownExpandedState.value = false + } + + val localState by item.localStateFlow.collectAsState() + + val onClick = localState.selectableItemState.onClick + // fallback to default + ?: when (item.action) { + is VaultItem2.Item.Action.Dropdown -> dropdownExpand + is VaultItem2.Item.Action.Go -> item.action.onClick + }.takeIf { localState.selectableItemState.can } + val onLongClick = localState.selectableItemState.onLongClick + + val backgroundColor = when { + localState.selectableItemState.selected -> MaterialTheme.colorScheme.primaryContainer + localState.openedState.isOpened -> + MaterialTheme.colorScheme.selectedContainer + .takeIf { LocalHasDetailPane.current } + ?: Color.Unspecified + + else -> Color.Unspecified + } + val badgeColor = if (backgroundColor.isSpecified) { + LocalContentColor.current + .combineAlpha(0.03f) + .compositeOver(backgroundColor) + } else { + backgroundColor + } + FlatItemLayout2( + modifier = modifier, + backgroundColor = backgroundColor, + content = { + FlatItemTextContent( + title = { + Text( + text = item.title, + overflow = TextOverflow.Ellipsis, + maxLines = 1, + ) + }, + text = item.text + ?.takeIf { it.isNotEmpty() } + ?.let { + // composable + { + Text( + text = it, + overflow = TextOverflow.Ellipsis, + maxLines = if (item.source.type == DSecret.Type.SecureNote) 4 else 2, + ) + } + }, + ) + + if (item.token != null) { + VaultViewTotpBadge2( + color = badgeColor, + copyText = item.copyText, + totpToken = item.token, + ) + } + + if (item.passkeys.isNotEmpty()) { + FlowRow( + modifier = Modifier + .padding(top = 8.dp) + .fillMaxWidth(), + verticalArrangement = Arrangement.spacedBy(8.dp), + horizontalArrangement = Arrangement.spacedBy(8.dp), + ) { + item.passkeys.forEach { + key(it.source.credentialId) { + Surface( + color = badgeColor.takeIf { it.isSpecified } + ?: MaterialTheme.colorScheme.surface, + shape = MaterialTheme.shapes.small, + tonalElevation = 1.dp, + ) { + Row( + modifier = Modifier + .clickable(onClick = it.onClick) + .padding( + start = 8.dp, + end = 8.dp, + top = 8.dp, + bottom = 8.dp, + ), + verticalAlignment = Alignment.CenterVertically, + ) { + Box( + modifier = Modifier + .size(16.dp), + ) { + IconSmallBox( + main = Icons.Outlined.Key, + ) + } + Spacer( + modifier = Modifier + .width(8.dp), + ) + val userDisplayName = it.source.userDisplayName + Text( + modifier = Modifier + .widthIn(max = 128.dp) + .alignByBaseline(), + text = userDisplayName + ?: stringResource(Res.strings.empty_value), + color = if (userDisplayName != null) { + LocalContentColor.current + } else { + LocalContentColor.current + .combineAlpha(DisabledEmphasisAlpha) + }, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + style = MaterialTheme.typography.bodyMedium, + ) + Spacer( + modifier = Modifier + .width(8.dp), + ) + val rpId = it.source.rpId + Text( + modifier = Modifier + .widthIn(max = 128.dp) + .alignByBaseline(), + text = rpId, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + maxLines = 1, + overflow = TextOverflow.Ellipsis, + style = MaterialTheme.typography.bodySmall, + ) + } + } + } + } + } + } + + // Inject the dropdown popup to the bottom of the + // content. + val onDismissRequest = { + dropdownExpandedState.value = false + } + DropdownMenu( + modifier = Modifier + .widthIn(min = DropdownMinWidth), + expanded = dropdownExpandedState.value, + onDismissRequest = onDismissRequest, + ) { + val scope = DropdownScopeImpl(this, onDismissRequest = onDismissRequest) + with(scope) { + dropdownActions.forEach { action -> + DropdownMenuItemFlat( + action = action, + ) + } + } + } + }, + leading = { + AccountListItemTextIcon( + modifier = Modifier, + item = item, + ) + }, + trailing = { + when (item.feature) { + is VaultItem2.Item.Feature.Organization -> { + val backgroundColor = if (MaterialTheme.colorScheme.isDark) { + item.feature.accentColors.dark + } else { + item.feature.accentColors.light + } + val contentColor = if (backgroundColor.luminance() > 0.5f) { + Color.Black + } else { + Color.White + }.combineAlpha(0.8f).compositeOver(backgroundColor) + Text( + modifier = Modifier + .widthIn(max = 80.dp) + .background( + backgroundColor, + MaterialTheme.shapes.small, + ) + .padding( + horizontal = 6.dp, + vertical = 2.dp, + ), + text = item.feature.name, + color = contentColor, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + style = MaterialTheme.typography.labelMedium, + ) + } + + is VaultItem2.Item.Feature.Totp, + is VaultItem2.Item.Feature.None, + -> { + } + } + + if (item.source.hasError) { + Spacer(modifier = Modifier.width(8.dp)) + Icon( + imageVector = Icons.Outlined.ErrorOutline, + tint = MaterialTheme.colorScheme.error, + contentDescription = null, + ) + } + + Spacer(modifier = Modifier.width(8.dp)) + + val tqry = when { + localState.selectableItemState.selecting -> Try.CHECKBOX + item.action is VaultItem2.Item.Action.Go -> Try.CHEVRON + else -> Try.NONE + } + Crossfade( + modifier = Modifier + .size( + width = 36.dp, + height = 36.dp, + ), + targetState = tqry, + ) { + Box( + modifier = Modifier + .fillMaxSize(), + contentAlignment = Alignment.Center, + ) { + when (it) { + Try.CHECKBOX -> { + Checkbox( + checked = localState.selectableItemState.selected, + onCheckedChange = null, + ) + } + + Try.CHEVRON -> { + ChevronIcon() + } + + Try.NONE -> {} + } + } + } + }, + onClick = onClick, + onLongClick = onLongClick, + ) +} + +private enum class Try { + CHECKBOX, + CHEVRON, + NONE, +} + +@OptIn( + ExperimentalMaterial3Api::class, + ExperimentalFoundationApi::class, +) +@Composable +fun FlatItemLayout2( + modifier: Modifier = Modifier, + backgroundColor: Color, + content: @Composable ColumnScope.() -> Unit, + leading: (@Composable RowScope.() -> Unit)? = null, + trailing: (@Composable RowScope.() -> Unit)? = null, + onClick: (() -> Unit)? = null, + onLongClick: (() -> Unit)? = null, + enabled: Boolean = onClick != null, +) { + val haptic by rememberUpdatedState(LocalHapticFeedback.current) + val background = run { + Modifier + .drawBehind { + drawRect(backgroundColor) + } + } + val clickable = run { + val onClickState = rememberUpdatedState(onClick) + val onLongClickState = rememberUpdatedState(onLongClick) + Modifier + .combinedClickable( + enabled = onClick != null, + onLongClick = { + val lambda = onLongClickState.value + if (lambda != null) { + lambda.invoke() + haptic.performHapticFeedback(HapticFeedbackType.LongPress) + } + }, + ) { + onClickState.value?.invoke() + } + .rightClickable(onLongClick) + } + Row( + modifier = modifier + .fillMaxWidth() + .padding( + horizontal = 8.dp, + vertical = 2.dp, + ) + .clip(MaterialTheme.shapes.medium) + .then(background) + .then(clickable) + .minimumInteractiveComponentSize() + .padding( + horizontal = 8.dp, + vertical = 8.dp, + ), + verticalAlignment = Alignment.CenterVertically, + ) { + CompositionLocalProvider( + LocalContentColor provides LocalContentColor.current + .let { color -> + if (enabled) { + color + } else { + color.combineAlpha(alpha = DisabledEmphasisAlpha) + } + }, + ) { + if (leading != null) { + CompositionLocalProvider( + LocalMinimumInteractiveComponentEnforcement provides false, + ) { + leading() + } + Spacer(Modifier.width(16.dp)) + } + Column( + modifier = Modifier + .weight(1f), + ) { + content() + } + if (trailing != null) { + Spacer(Modifier.width(16.dp)) + trailing() + } + } + } +} + +@Composable +fun rememberSecretAccentColor( + accentLight: Color, + accentDark: Color, +): Color { + val color = LocalContentColor.current + val accent = if (color.luminance() > 0.5f) accentDark else accentLight + return accent.combineAlpha(alpha = color.alpha) +} + +@Composable +fun surfaceColorAtElevation(color: Color, elevation: Dp): Color { + return if (color == MaterialTheme.colorScheme.surface) { + MaterialTheme.colorScheme.surfaceColorAtElevation(elevation) + } else { + color + } +} + +/** + * Returns the [ColorScheme.surface] color with an alpha of the [ColorScheme.surfaceTint] color + * overlaid on top of it. + * Computes the surface tonal color at different elevation levels e.g. surface1 through surface5. + * + * @param elevation Elevation value used to compute alpha of the color overlay layer. + */ +fun ColorScheme.surfaceColorAtElevation( + elevation: Dp, +): Color { + val tint = surfaceColorAtElevationSemi(elevation = elevation) + return if (tint.isSpecified) { + tint.compositeOver(surface) + } else { + surface + } +} + +/** + * Returns the [ColorScheme.surface] color with an alpha of the [ColorScheme.surfaceTint] color + * overlaid on top of it. + * Computes the surface tonal color at different elevation levels e.g. surface1 through surface5. + * + * @param elevation Elevation value used to compute alpha of the color overlay layer. + */ +fun ColorScheme.surfaceColorAtElevationSemi( + elevation: Dp, +): Color { + if (elevation == 0.dp) return Color.Unspecified + val alpha = ((4.5f * ln(elevation.value + 1)) + 2f) / 100f + return surfaceTint.copy(alpha = alpha) +} + +@Composable +fun BoxScope.VaultItemIcon2( + icon: VaultItemIcon, + modifier: Modifier = Modifier, +) { + when (icon) { + is VaultItemIcon.VectorIcon -> { + Icon( + modifier = modifier + .align(Alignment.Center), + imageVector = icon.imageVector, + contentDescription = null, + tint = Color.Black, + ) + } + + is VaultItemIcon.TextIcon -> { + Text( + modifier = modifier + .align(Alignment.Center), + text = icon.text, + color = Color.Black + .combineAlpha(MediumEmphasisAlpha), + fontWeight = FontWeight.Bold, + fontSize = 14.sp, + ) + } + + is VaultItemIcon.ImageIcon -> { + Image( + modifier = modifier + .fillMaxSize() + .padding(3.dp) + .clip(CircleShape), + painter = painterResource(icon.imageRes), + contentDescription = null, + ) + } + + is VaultItemIcon.WebsiteIcon, + is VaultItemIcon.AppIcon, + -> { + FaviconImage( + modifier = modifier + .fillMaxSize() + .padding(3.dp) + .clip(CircleShape), + imageModel = { + when (icon) { + is VaultItemIcon.WebsiteIcon -> icon.data + is VaultItemIcon.AppIcon -> icon.data + else -> error("Unreachable statement") + } + }, + ) + } + } +} + +@Composable +fun AccountListItemTextIcon( + modifier: Modifier = Modifier, + item: VaultItem2.Item, +) { + val accent = rememberSecretAccentColor( + accentLight = item.accentLight, + accentDark = item.accentDark, + ) + AvatarBuilder( + modifier = modifier, + icon = item.icon, + accent = accent, + active = item.source.service.remote != null, + badge = { + if (item.favourite) { + Icon( + modifier = Modifier + .size(16.dp) + .padding(1.dp), + imageVector = Icons.Outlined.KeyguardFavourite, + contentDescription = null, + ) + } + if (item.source.reprompt) { + Icon( + modifier = Modifier + .size(16.dp) + .padding(1.dp), + imageVector = Icons.Outlined.Lock, + contentDescription = null, + ) + } + if (item.attachments) { + Icon( + modifier = Modifier + .size(16.dp) + .padding(1.dp), + imageVector = Icons.Outlined.KeyguardAttachment, + contentDescription = null, + ) + } + }, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultPasswordHistoryItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultPasswordHistoryItem.kt new file mode 100644 index 00000000..cbbe4cf7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultPasswordHistoryItem.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.home.vault.component + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.home.vault.model.VaultPasswordHistoryItem + +@Composable +fun VaultPasswordHistoryItem( + item: VaultPasswordHistoryItem, +) = when (item) { + is VaultPasswordHistoryItem.Value -> VaultPasswordHistoryValueItem(item) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultPasswordHistoryValueItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultPasswordHistoryValueItem.kt new file mode 100644 index 00000000..a86cc278 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultPasswordHistoryValueItem.kt @@ -0,0 +1,92 @@ +package com.artemchep.keyguard.feature.home.vault.component + +import androidx.compose.animation.ExperimentalAnimationApi +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.ContentCopy +import androidx.compose.material.icons.outlined.Password +import androidx.compose.material3.Checkbox +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.compose.ui.graphics.Color +import com.artemchep.keyguard.feature.home.vault.model.VaultPasswordHistoryItem +import com.artemchep.keyguard.ui.ExpandedIfNotEmptyForRow +import com.artemchep.keyguard.ui.FlatDropdown +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.colorizePassword +import com.artemchep.keyguard.ui.theme.monoFontFamily + +@Composable +fun VaultPasswordHistoryValueItem( + item: VaultPasswordHistoryItem.Value, +) { + val backgroundColor = when { + item.selected -> MaterialTheme.colorScheme.primaryContainer + else -> Color.Unspecified + } + FlatDropdown( + backgroundColor = backgroundColor, + leading = { + val icon = Icons.Outlined.Password + Icon(icon, null) + }, + content = { + FlatItemTextContent( + title = { + Text( + text = colorizePassword(item.value, LocalContentColor.current), + fontFamily = if (item.monospace) monoFontFamily else null, + ) + }, + text = if (item.title.isNotBlank()) { + // composable + { + Text(item.title) + } + } else { + null + }, + ) + }, + dropdown = item.dropdown, + trailing = { + val onCopyAction = remember(item.dropdown) { + item.dropdown + .firstNotNullOfOrNull { + val action = it as? FlatItemAction + action?.takeIf { it.type == FlatItemAction.Type.COPY } + } + } + if (onCopyAction != null) { + val onCopy = onCopyAction.onClick + IconButton( + enabled = onCopy != null, + onClick = { + onCopy?.invoke() + }, + ) { + Icon( + imageVector = Icons.Outlined.ContentCopy, + contentDescription = null, + ) + } + } + ExpandedIfNotEmptyForRow( + item.selected.takeIf { item.selecting }, + ) { selected -> + Checkbox( + checked = selected, + onCheckedChange = null, + ) + } + }, + onClick = item.onClick, + onLongClick = item.onLongClick, + enabled = true, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewActionItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewActionItem.kt new file mode 100644 index 00000000..bdda9780 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewActionItem.kt @@ -0,0 +1,50 @@ +package com.artemchep.keyguard.feature.home.vault.component + +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.height +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.feature.home.vault.model.VaultViewItem +import com.artemchep.keyguard.ui.FlatItemLayout +import com.artemchep.keyguard.ui.FlatItemTextContent + +@Composable +fun VaultViewActionItem( + modifier: Modifier = Modifier, + item: VaultViewItem.Action, +) { + FlatItemLayout( + modifier = modifier, + elevation = item.elevation, + leading = item.leading, + content = { + FlatItemTextContent( + title = { + Text(item.title) + }, + text = if (item.text != null) { + { + Text(item.text) + } + } else { + null + }, + ) + + if (item.badge != null) { + Spacer( + modifier = Modifier + .height(4.dp), + ) + com.artemchep.keyguard.ui.Ah( + score = item.badge.score, + text = item.badge.text, + ) + } + }, + trailing = item.trailing, + onClick = item.onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewAttachmentItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewAttachmentItem.kt new file mode 100644 index 00000000..0610a52b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewAttachmentItem.kt @@ -0,0 +1,17 @@ +package com.artemchep.keyguard.feature.home.vault.component + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import com.artemchep.keyguard.feature.attachments.compose.ItemAttachment +import com.artemchep.keyguard.feature.home.vault.model.VaultViewItem + +@Composable +fun VaultViewAttachmentItem( + modifier: Modifier = Modifier, + item: VaultViewItem.Attachment, +) { + ItemAttachment( + modifier = modifier, + item = item.item, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewBooleanItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewBooleanItem.kt new file mode 100644 index 00000000..5b6e1399 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewBooleanItem.kt @@ -0,0 +1,41 @@ +package com.artemchep.keyguard.feature.home.vault.component + +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import com.artemchep.keyguard.feature.home.vault.model.VaultViewItem +import com.artemchep.keyguard.ui.FlatDropdown +import com.artemchep.keyguard.ui.FlatItemTextContent + +@Composable +fun VaultViewSwitchItem( + modifier: Modifier = Modifier, + item: VaultViewItem.Switch, +) { + FlatDropdown( + modifier = modifier, + content = { + FlatItemTextContent( + text = { + Text( + text = item.title, + ) + }, + ) + }, + trailing = { + // TODO +// CompositionLocalProvider( +// LocalMinimumInteractiveComponentEnforcement provides false, +// ) { + Switch( + checked = item.value, + onCheckedChange = null, + ) +// } + }, + dropdown = item.dropdown, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewButtonItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewButtonItem.kt new file mode 100644 index 00000000..c709b646 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewButtonItem.kt @@ -0,0 +1,57 @@ +package com.artemchep.keyguard.feature.home.vault.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.material3.Button +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.feature.home.vault.model.VaultViewItem + +@Composable +fun VaultViewButtonItem( + modifier: Modifier = Modifier, + item: VaultViewItem.Button, +) { + VaultViewButtonItem( + modifier = modifier, + leading = item.leading, + text = item.text, + onClick = item.onClick, + ) +} + +@Composable +fun VaultViewButtonItem( + modifier: Modifier = Modifier, + leading: (@Composable RowScope.() -> Unit)? = null, + text: String, + onClick: (() -> Unit)? = null, +) { + val updatedOnClick by rememberUpdatedState(onClick) + Button( + modifier = modifier + .padding( + horizontal = 8.dp, + vertical = 4.dp, + ), + enabled = updatedOnClick != null, + onClick = { + updatedOnClick?.invoke() + }, + ) { + if (leading != null) { + leading.invoke(this) + Spacer( + modifier = Modifier + .width(16.dp), + ) + } + Text(text) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewCardItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewCardItem.kt new file mode 100644 index 00000000..8b647342 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewCardItem.kt @@ -0,0 +1,308 @@ +package com.artemchep.keyguard.feature.home.vault.component + +import androidx.compose.animation.core.animateFloatAsState +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.CreditCardOff +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.feature.auth.common.VisibilityToggle +import com.artemchep.keyguard.feature.home.vault.model.VaultViewItem +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatDropdown +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.theme.monoFontFamily +import dev.icerock.moko.resources.compose.stringResource +import kotlin.math.roundToInt + +const val ObscureChar = '•' + +val ObscureCharBlock = "".padStart(6, ObscureChar) + +val FormatCardGroupLength = 4 + +fun obscurePassword(password: String): String { + if (password.length < 2) return "".padStart(8, ObscureChar) + return password.take(1) + ObscureCharBlock + password.takeLast(1) +} + +fun formatCardNumber( + cardNumber: String, +) = buildString { + var count = 0 + var shouldAddSpace = false + cardNumber.forEach { char -> + if (char.isLetterOrDigit()) { + count++ + } + if (shouldAddSpace) { + append(' ') + shouldAddSpace = false + } + append(char) + shouldAddSpace = count.rem(FormatCardGroupLength) == 0 + } +} + +fun obscureCardNumber( + cardNumber: String, +): String { + val cardNumberFormatted = formatCardNumber(cardNumber) + val obscureToExclusive = run { + var i = 0 + var count = 0 + for (j in (cardNumberFormatted.length - 1) downTo 0) { + // Increment the counter of meaningful + // characters. + if (cardNumberFormatted[j].isLetterOrDigit()) { + count++ + } + if (count == FormatCardGroupLength) { + i = j + break + } + } + i + } + val sb = StringBuilder() + // Form a new card number that is semi-obscure. + cardNumberFormatted.forEachIndexed { i, char -> + val finalChar = if ( + i < obscureToExclusive && char.isLetterOrDigit() + ) { + ObscureChar + } else { + char + } + sb.append(finalChar) + } + return sb.toString() +} + +@Composable +fun VaultViewCardItem( + modifier: Modifier = Modifier, + item: VaultViewItem.Card, +) { + val passwordVisibility = remember { + mutableStateOf(!item.concealFields) + } + + val updatedVerify by rememberUpdatedState(item.verify) + val cardNumber = item.data.number + FlatDropdown( + modifier = modifier, + elevation = item.elevation, + content = { + val brand = item.data.brand + ?: item.data.creditCardType?.name + if (brand != null) { + Text( + text = brand, + color = MaterialTheme.colorScheme.secondary + .combineAlpha(MediumEmphasisAlpha), + style = MaterialTheme.typography.labelSmall, + ) + Spacer( + modifier = Modifier + .height(8.dp), + ) + } + Row { + if (cardNumber != null) { + val progress by animateFloatAsState( + targetValue = if (passwordVisibility.value) { + 1f + } else { + 0f + }, + ) + + val cardNumberFormatted = remember(cardNumber) { + formatCardNumber(cardNumber) + } + + val obscureToExclusive = remember(cardNumberFormatted) { + var i = 0 + var count = 0 + for (j in (cardNumberFormatted.length - 1) downTo 0) { + // Increment the counter of meaningful + // characters. + if (cardNumberFormatted[j].isLetterOrDigit()) { + count++ + } + if (count == 4) { + i = j + break + } + } + i + } + val obscureFrom by derivedStateOf { + val indexFloat = cardNumberFormatted.length.toFloat() * progress + indexFloat.roundToInt() + } + val finalCardNumber = remember( + obscureFrom, + obscureToExclusive, + cardNumberFormatted, + ) { + val sb = StringBuilder() + // Form a new card number that is semi-obscure. + cardNumberFormatted.forEachIndexed { i, char -> + val finalChar = if ( + i in obscureFrom until obscureToExclusive && char.isLetterOrDigit() + ) { + ObscureChar + } else { + char + } + sb.append(finalChar) + } + sb.toString() + } + Text( + text = finalCardNumber, + style = MaterialTheme.typography.titleLarge, + fontFamily = monoFontFamily, + ) + } else { + val contentColor = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha) + Row( + verticalAlignment = Alignment.CenterVertically, + ) { + Icon( + modifier = Modifier + .size(18.dp), + imageVector = Icons.Outlined.CreditCardOff, + tint = contentColor, + contentDescription = null, + ) + Spacer( + modifier = Modifier + .width(8.dp), + ) + Text( + text = stringResource(Res.strings.card_number_empty_label), + color = contentColor, + style = MaterialTheme.typography.bodyLarge, + ) + } + } + } + Spacer(modifier = Modifier.height(16.dp)) + Row { + DateLabel( + label = stringResource(Res.strings.card_valid_from), + month = item.data.fromMonth, + year = item.data.fromYear, + ) + DateLabel( + label = stringResource(Res.strings.card_valid_to), + month = item.data.expMonth, + year = item.data.expYear, + ) + } + val cardholderName = item.data.cardholderName + if (cardholderName != null) { + Spacer(modifier = Modifier.height(8.dp)) + Text( + text = cardholderName, + style = MaterialTheme.typography.bodyMedium, + fontFamily = monoFontFamily, + ) + } + }, + trailing = if (cardNumber != null) { + // composable + { + VisibilityToggle( + visible = passwordVisibility.value, + onVisibleChange = { shouldBeConcealed -> + val verify = updatedVerify + if ( + verify != null && + shouldBeConcealed + ) { + verify.invoke { + passwordVisibility.value = true + } + return@VisibilityToggle + } + + passwordVisibility.value = shouldBeConcealed + }, + ) + } + } else { + null + }, + dropdown = item.dropdown, + actions = item.actions, + ) +} + +@Composable +private fun RowScope.DateLabel( + label: String, + month: String?, + year: String?, +) { + if ( + month == null && + year == null + ) { + return + } + + val monthFormatted = month ?: "mm" + val yearFormatted = year ?: "yyyy" + DateLabelContent( + text = label, + date = "$monthFormatted/$yearFormatted", + ) + Spacer(modifier = Modifier.width(24.dp)) +} + +@Composable +private fun DateLabelContent( + modifier: Modifier = Modifier, + text: String, + date: String, +) { + Column( + modifier = modifier, + horizontalAlignment = Alignment.Start, + ) { + Text( + text = text, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + style = MaterialTheme.typography.labelSmall, + ) + Text( + text = date, + style = MaterialTheme.typography.bodyMedium, + fontFamily = monoFontFamily, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewCollectionItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewCollectionItem.kt new file mode 100644 index 00000000..b585c941 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewCollectionItem.kt @@ -0,0 +1,39 @@ +package com.artemchep.keyguard.feature.home.vault.component + +import androidx.compose.material.icons.Icons +import androidx.compose.material3.Icon +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.style.TextOverflow +import com.artemchep.keyguard.feature.home.vault.model.VaultViewItem +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.KeyguardCollection + +@Composable +fun VaultViewCollectionItem( + modifier: Modifier = Modifier, + item: VaultViewItem.Collection, +) { + FlatItem( + modifier = modifier, + leading = { + Icon( + Icons.Outlined.KeyguardCollection, + null, + ) + }, + trailing = { + ChevronIcon() + }, + title = { + Text( + text = item.title, + overflow = TextOverflow.Ellipsis, + maxLines = 5, + ) + }, + onClick = item.onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewErrorItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewErrorItem.kt new file mode 100644 index 00000000..051d64b4 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewErrorItem.kt @@ -0,0 +1,150 @@ +package com.artemchep.keyguard.feature.home.vault.component + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.heightIn +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.AccessTime +import androidx.compose.material.icons.outlined.ErrorOutline +import androidx.compose.material.icons.outlined.Sync +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.feature.home.vault.model.VaultViewItem +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +import com.artemchep.keyguard.ui.ExpandedIfNotEmptyForRow +import com.artemchep.keyguard.ui.HighEmphasisAlpha +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.util.HorizontalDivider + +@Composable +fun VaultViewErrorItem( + modifier: Modifier = Modifier, + item: VaultViewItem.Error, +) { + val contentColor = MaterialTheme.colorScheme.error + val backgroundColor = MaterialTheme.colorScheme.errorContainer + .combineAlpha(DisabledEmphasisAlpha) + Surface( + modifier = modifier + .fillMaxWidth() + .padding( + horizontal = 8.dp, + vertical = 2.dp, + ) + .padding(bottom = 24.dp), + shape = MaterialTheme.shapes.large, + color = backgroundColor, + ) { + Column( + modifier = Modifier, + ) { + Row( + verticalAlignment = Alignment.CenterVertically, + ) { + Column( + modifier = Modifier + .weight(1f), + ) { + Spacer(modifier = Modifier.height(16.dp)) + Icon( + modifier = Modifier + .padding(horizontal = 8.dp), + imageVector = Icons.Outlined.ErrorOutline, + contentDescription = null, + tint = contentColor, + ) + Spacer(modifier = Modifier.height(16.dp)) + Text( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 8.dp), + text = item.name, + style = MaterialTheme.typography.titleSmall, + color = MaterialTheme.colorScheme.onErrorContainer, + ) + ExpandedIfNotEmpty( + valueOrNull = item.message, + ) { message -> + Text( + modifier = Modifier + .fillMaxWidth() + .padding(top = 4.dp) + .padding(horizontal = 8.dp), + text = message, + style = MaterialTheme.typography.bodySmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + ) + } + Spacer(modifier = Modifier.height(8.dp)) + } + val updatedOnRetry by rememberUpdatedState(item.onRetry) + ExpandedIfNotEmptyForRow( + valueOrNull = updatedOnRetry, + ) { + Row { + Spacer( + modifier = Modifier + .width(8.dp), + ) + IconButton( + onClick = { + updatedOnRetry?.invoke() + }, + ) { + Icon( + imageVector = Icons.Outlined.Sync, + contentDescription = null, + ) + } + } + } + Spacer( + modifier = Modifier + .width(8.dp), + ) + } + HorizontalDivider() + Row( + modifier = Modifier + .fillMaxWidth() + .heightIn(min = 36.dp) + .padding(horizontal = 8.dp), + verticalAlignment = Alignment.CenterVertically, + ) { + Icon( + modifier = Modifier + .size(14.dp), + imageVector = Icons.Outlined.AccessTime, + contentDescription = null, + ) + Spacer(modifier = Modifier.width(8.dp)) + Text( + modifier = Modifier, + text = item.timestamp, + style = MaterialTheme.typography.labelSmall, + color = LocalContentColor.current + .combineAlpha(HighEmphasisAlpha), + ) + } + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewFolderItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewFolderItem.kt new file mode 100644 index 00000000..8ed73667 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewFolderItem.kt @@ -0,0 +1,118 @@ +package com.artemchep.keyguard.feature.home.vault.component + +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.FlowRow +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.ChevronRight +import androidx.compose.material.icons.outlined.Folder +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.feature.home.vault.model.VaultViewItem +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.theme.combineAlpha + +@OptIn(ExperimentalLayoutApi::class) +@Composable +fun VaultViewFolderItem( + modifier: Modifier = Modifier, + item: VaultViewItem.Folder, +) { + FlatItem( + modifier = modifier, + leading = { + Icon( + Icons.Outlined.Folder, + null, + ) + }, + trailing = { + ChevronIcon() + }, + title = { + FlowRow( + verticalArrangement = Arrangement.spacedBy(4.dp, Alignment.CenterVertically), + horizontalArrangement = Arrangement.spacedBy(4.dp, Alignment.Start), + ) { + val paddingModifier = Modifier + .padding( + horizontal = 8.dp, + vertical = 4.dp, + ) + item.nodes.forEachIndexed { index, s -> + if (item.nodes.size > 1 && index != item.nodes.lastIndex) { + Surface( + modifier = Modifier + .align(Alignment.CenterVertically), + shape = MaterialTheme.shapes.small, + tonalElevation = 1.dp, + ) { + val updatedOnClick by rememberUpdatedState(s.onClick) + Row( + modifier = Modifier + .clickable { + updatedOnClick() + } + .then(paddingModifier), + verticalAlignment = Alignment.CenterVertically, + ) { + Text( + modifier = Modifier + .weight(1f, fill = false), + text = s.name, + overflow = TextOverflow.Ellipsis, + maxLines = 5, + ) + Spacer(modifier = Modifier.width(8.dp)) + Icon( + Icons.Outlined.ChevronRight, + null, + modifier = Modifier + .size(18.dp), + tint = LocalContentColor.current + .combineAlpha(DisabledEmphasisAlpha), + ) + } + } + } else if (item.nodes.size == 1) { + Text( + modifier = Modifier + .align(Alignment.CenterVertically), + text = s.name, + overflow = TextOverflow.Ellipsis, + maxLines = 5, + ) + } else { + Text( + modifier = Modifier + .align(Alignment.CenterVertically) + .then(paddingModifier), + text = s.name, + overflow = TextOverflow.Ellipsis, + maxLines = 5, + ) + } + } + } + }, + onClick = item.onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewIdentityItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewIdentityItem.kt new file mode 100644 index 00000000..bcec17d2 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewIdentityItem.kt @@ -0,0 +1,126 @@ +package com.artemchep.keyguard.feature.home.vault.component + +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.feature.home.vault.model.VaultViewItem +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha + +@Composable +fun VaultViewIdentityItem( + modifier: Modifier = Modifier, + item: VaultViewItem.Identity, +) { + Column( + modifier = modifier, + ) { + val title = item.data.title + if (!title.isNullOrBlank()) { + Text( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + text = title, + style = MaterialTheme.typography.titleMedium, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + ) + } + val name = listOfNotNull( + item.data.firstName, + item.data.middleName, + item.data.lastName, + ).joinToString(separator = " ") + if (name.isNotBlank()) { + Text( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + text = name, + style = MaterialTheme.typography.titleLarge, + ) + } + Spacer(modifier = Modifier.height(16.dp)) + if (item.actions.isNotEmpty()) { + Row( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 8.dp), + horizontalArrangement = Arrangement.spacedBy(4.dp), + ) { + item.actions.forEach { action -> + Ah( + modifier = Modifier + .weight(1f), + icon = { + if (action.leading != null) { + action.leading.invoke() + } else if (action.icon != null) { + Icon(action.icon, null) + } + }, + title = action.title, + onClick = action.onClick, + ) + } + } + } + } +} + +@Composable +private fun Ah( + modifier: Modifier = Modifier, + icon: @Composable () -> Unit, + title: String, + onClick: (() -> Unit)?, +) { + Surface( + modifier = modifier, + shape = MaterialTheme.shapes.medium, + color = MaterialTheme.colorScheme.surface, + tonalElevation = 1.dp, + ) { + CompositionLocalProvider( + LocalContentColor provides MaterialTheme.colorScheme.primary, + ) { + Column( + modifier = Modifier + .then( + if (onClick != null) { + Modifier + .clickable { + onClick() + } + } else { + Modifier + }, + ) + .padding(8.dp), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + icon() + Spacer(modifier = Modifier.height(8.dp)) + Text( + text = title, + style = MaterialTheme.typography.labelSmall, + ) + } + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewInactivePasskeyItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewInactivePasskeyItem.kt new file mode 100644 index 00000000..eabc5183 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewInactivePasskeyItem.kt @@ -0,0 +1,58 @@ +package com.artemchep.keyguard.feature.home.vault.component + +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Info +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.ui.Modifier +import com.artemchep.keyguard.feature.home.vault.model.VaultViewItem +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.FlatItemLayout +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.theme.info +import com.artemchep.keyguard.ui.theme.infoContainer +import com.artemchep.keyguard.ui.theme.onInfoContainer +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun VaultViewInactivePasskeyItem( + modifier: Modifier = Modifier, + item: VaultViewItem.InactivePasskey, +) { + val contentColor = MaterialTheme.colorScheme.info + val backgroundColor = MaterialTheme.colorScheme.infoContainer + .combineAlpha(DisabledEmphasisAlpha) + FlatItemLayout( + modifier = modifier, + backgroundColor = backgroundColor, + leading = { + Icon( + Icons.Outlined.Info, + contentDescription = null, + tint = contentColor, + ) + }, + content = { + CompositionLocalProvider( + LocalContentColor provides MaterialTheme.colorScheme.onInfoContainer, + ) { + FlatItemTextContent( + title = { + Text( + stringResource(Res.strings.passkey_available), + style = MaterialTheme.typography.titleSmall, + ) + }, + ) + } + }, + onClick = item.onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewInactiveTotpItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewInactiveTotpItem.kt new file mode 100644 index 00000000..b087396a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewInactiveTotpItem.kt @@ -0,0 +1,58 @@ +package com.artemchep.keyguard.feature.home.vault.component + +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Warning +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.ui.Modifier +import com.artemchep.keyguard.feature.home.vault.model.VaultViewItem +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.FlatDropdown +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.theme.onWarningContainer +import com.artemchep.keyguard.ui.theme.warning +import com.artemchep.keyguard.ui.theme.warningContainer +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun VaultViewInactiveTotpItem( + modifier: Modifier = Modifier, + item: VaultViewItem.InactiveTotp, +) { + val contentColor = MaterialTheme.colorScheme.warning + val backgroundColor = MaterialTheme.colorScheme.warningContainer + .combineAlpha(DisabledEmphasisAlpha) + FlatDropdown( + modifier = modifier, + backgroundColor = backgroundColor, + leading = { + Icon( + Icons.Outlined.Warning, + contentDescription = null, + tint = contentColor, + ) + }, + content = { + CompositionLocalProvider( + LocalContentColor provides MaterialTheme.colorScheme.onWarningContainer, + ) { + FlatItemTextContent( + title = { + Text( + text = stringResource(Res.strings.twofa_available), + style = MaterialTheme.typography.titleSmall, + ) + }, + ) + } + }, + onClick = item.onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewInfoItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewInfoItem.kt new file mode 100644 index 00000000..2ba4f74a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewInfoItem.kt @@ -0,0 +1,242 @@ +package com.artemchep.keyguard.feature.home.vault.component + +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.animateContentSize +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.ArrowDropDown +import androidx.compose.material.icons.outlined.ErrorOutline +import androidx.compose.material3.ColorScheme +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.shadow +import androidx.compose.ui.graphics.Brush +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Shape +import androidx.compose.ui.graphics.compositeOver +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.feature.home.vault.model.VaultViewItem +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.theme.info +import com.artemchep.keyguard.ui.theme.infoContainer +import com.artemchep.keyguard.ui.theme.onInfoContainer +import dev.icerock.moko.resources.compose.stringResource +import kotlin.math.ln + +@Composable +fun VaultViewInfoItem( + modifier: Modifier = Modifier, + item: VaultViewItem.Info, +) { + val expandable = item.long + val expandedState = remember(expandable) { + mutableStateOf(!expandable) + } + + val contentColor = MaterialTheme.colorScheme.info + val backgroundColor = MaterialTheme.colorScheme.infoContainer + .combineAlpha(DisabledEmphasisAlpha) + // We want to composite it over the background because the overlay + // requires us to have the opaque color as the background. + .compositeOver(MaterialTheme.colorScheme.background) + Surface( + modifier = modifier + .fillMaxWidth() + .padding( + horizontal = 8.dp, + vertical = 2.dp, + ) + .padding(bottom = 24.dp), + shape = MaterialTheme.shapes.large, + color = backgroundColor, + ) { + Box { + Column( + modifier = Modifier, + ) { + Spacer( + modifier = Modifier + .height(16.dp), + ) + Icon( + modifier = Modifier + .padding(horizontal = 8.dp), + imageVector = Icons.Outlined.ErrorOutline, + contentDescription = null, + tint = contentColor, + ) + Spacer(modifier = Modifier.height(16.dp)) + Text( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 8.dp), + text = item.name, + style = MaterialTheme.typography.titleSmall, + color = MaterialTheme.colorScheme.onInfoContainer, + ) + ExpandedIfNotEmpty( + valueOrNull = item.message, + ) { message -> + Text( + modifier = Modifier + .fillMaxWidth() + .padding(top = 4.dp) + .padding(horizontal = 8.dp) + .animateContentSize(), + text = message, + style = MaterialTheme.typography.bodySmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + overflow = TextOverflow.Ellipsis, + maxLines = if (expandedState.value) Int.MAX_VALUE else 4, + ) + } + Spacer( + modifier = Modifier + .height(8.dp), + ) + } + AnimatedVisibility( + modifier = Modifier + .matchParentSize(), + enter = fadeIn(), + exit = fadeOut(), + visible = !expandedState.value, + ) { + LearnOverlay( + modifier = Modifier + .matchParentSize(), + backgroundColor = backgroundColor, + onClick = { + expandedState.value = true + }, + ) + } + } + } +} + +@Composable +private fun LearnOverlay( + modifier: Modifier = Modifier, + backgroundColor: Color = MaterialTheme.colorScheme.surface, + onClick: () -> Unit, +) { + Column( + modifier = modifier, + ) { + Box( + modifier = Modifier + .fillMaxWidth() + .weight(1f), + ) + Box( + modifier = Modifier + .fillMaxWidth() + .background( + brush = Brush.verticalGradient( + colors = listOf( + backgroundColor.copy(alpha = 0f), + backgroundColor.copy(alpha = 0.8f), + ), + ), + ) + .padding( + start = 8.dp, + end = 8.dp, + top = 48.dp, + bottom = 8.dp, + ), + contentAlignment = Alignment.BottomStart, + ) { + LearnButton( + backgroundColor = backgroundColor, + elevation = 1.dp, + onClick = onClick, + ) + } + } +} + +@Composable +private fun LearnButton( + modifier: Modifier = Modifier, + backgroundColor: Color = MaterialTheme.colorScheme.surface, + color: Color = MaterialTheme.colorScheme.primary, + shape: Shape = CircleShape, + elevation: Dp = 0.dp, + onClick: () -> Unit, +) { + val finalBackgroundColor = MaterialTheme.colorScheme.colorAtElevation( + color = backgroundColor, + elevation = elevation, + ) + Row( + modifier = modifier + .shadow(elevation, shape) + .clip(shape) + .background(finalBackgroundColor) + .clickable(onClick = onClick) + .padding( + horizontal = 12.dp, + vertical = 8.dp, + ), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.Start, + ) { + Text( + text = stringResource(Res.strings.learn_more), + style = MaterialTheme.typography.labelLarge, + color = color, + ) + Spacer( + modifier = Modifier + .width(4.dp), + ) + Icon( + modifier = Modifier + .size(18.dp), + tint = color, + imageVector = Icons.Outlined.ArrowDropDown, + contentDescription = null, + ) + } +} + +private fun ColorScheme.colorAtElevation( + color: Color, + elevation: Dp, +): Color { + if (elevation == 0.dp) return color + val alpha = ((4.5f * ln(elevation.value + 1)) + 2f) / 100f + return surfaceTint.copy(alpha = alpha).compositeOver(color) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewItem.kt new file mode 100644 index 00000000..39323e51 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewItem.kt @@ -0,0 +1,34 @@ +package com.artemchep.keyguard.feature.home.vault.component + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import com.artemchep.keyguard.feature.home.vault.model.VaultViewItem + +@Composable +fun VaultViewItem( + modifier: Modifier = Modifier, + item: VaultViewItem, +) = when (item) { + is VaultViewItem.Card -> VaultViewCardItem(modifier, item) + is VaultViewItem.Folder -> VaultViewFolderItem(modifier, item) + is VaultViewItem.Organization -> VaultViewOrganizationItem(modifier, item) + is VaultViewItem.Collection -> VaultViewCollectionItem(modifier, item) + is VaultViewItem.Error -> VaultViewErrorItem(modifier, item) + is VaultViewItem.Info -> VaultViewInfoItem(modifier, item) + is VaultViewItem.Identity -> VaultViewIdentityItem(modifier, item) + is VaultViewItem.Action -> VaultViewActionItem(modifier, item) + is VaultViewItem.Value -> VaultViewValueItem(modifier, item) + is VaultViewItem.Switch -> VaultViewSwitchItem(modifier, item) + is VaultViewItem.Uri -> VaultViewUriItem(modifier, item) + is VaultViewItem.Button -> VaultViewButtonItem(modifier, item) + is VaultViewItem.Label -> VaultViewLabelItem(modifier, item) + is VaultViewItem.Spacer -> VaultViewSpacerItem(modifier, item) + is VaultViewItem.Note -> VaultViewNoteItem(modifier, item) + is VaultViewItem.Totp -> VaultViewTotpItem(modifier, item) + is VaultViewItem.Passkey -> VaultViewPasskeyItem(modifier, item) + is VaultViewItem.ReusedPassword -> VaultViewReusedPasswordItem(modifier, item) + is VaultViewItem.InactiveTotp -> VaultViewInactiveTotpItem(modifier, item) + is VaultViewItem.InactivePasskey -> VaultViewInactivePasskeyItem(modifier, item) + is VaultViewItem.Section -> VaultViewSectionItem(modifier, item) + is VaultViewItem.Attachment -> VaultViewAttachmentItem(modifier, item) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewLabelItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewLabelItem.kt new file mode 100644 index 00000000..5d9e397a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewLabelItem.kt @@ -0,0 +1,51 @@ +package com.artemchep.keyguard.feature.home.vault.component + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.feature.home.vault.model.VaultViewItem +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha + +@Composable +fun VaultViewLabelItem( + modifier: Modifier = Modifier, + item: VaultViewItem.Label, +) { + Row( + modifier = modifier + .fillMaxWidth() + .padding( + horizontal = Dimens.horizontalPadding, + vertical = 8.dp, + ), + horizontalArrangement = item.horizontalArrangement, + ) { + val textAlign = if (item.horizontalArrangement == Arrangement.Center) { + TextAlign.Center + } else { + TextAlign.Start + } + Text( + text = item.text, + textAlign = textAlign, + style = MaterialTheme.typography.labelMedium, + color = + if (item.error) { + MaterialTheme.colorScheme.error + } else { + LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha) + }, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewNoteItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewNoteItem.kt new file mode 100644 index 00000000..fdb67141 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewNoteItem.kt @@ -0,0 +1,120 @@ +package com.artemchep.keyguard.feature.home.vault.component + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.text.selection.SelectionContainer +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.feature.home.vault.model.VaultViewItem +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.VisibilityIcon +import com.artemchep.keyguard.ui.markdown.Md +import com.artemchep.keyguard.ui.theme.Dimens +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun VaultViewNoteItem( + modifier: Modifier = Modifier, + item: VaultViewItem.Note, +) { + Column( + modifier = modifier, + ) { + val updatedVerify by rememberUpdatedState(item.verify) + val visibilityState = remember( + item.conceal, + ) { mutableStateOf(!item.conceal) } + + if (item.conceal) { + FlatItem( + leading = { + VisibilityIcon( + visible = visibilityState.value, + ) + }, + title = { + val text = if (visibilityState.value) { + stringResource(Res.strings.hide_secure_note) + } else { + stringResource(Res.strings.reveal_secure_note) + } + Text( + text = text, + ) + }, + onClick = { + val shouldBeConcealed = !visibilityState.value + val verify = updatedVerify + if ( + verify != null && + shouldBeConcealed + ) { + verify.invoke { + visibilityState.value = true + } + return@FlatItem + } + + visibilityState.value = shouldBeConcealed + }, + ) + } + ExpandedIfNotEmpty( + Unit.takeIf { visibilityState.value }, + modifier = Modifier + .fillMaxWidth(), + ) { + VaultViewNoteItemLayout( + modifier = Modifier + .fillMaxWidth(), + ) { + SelectionContainer { + if (item.markdown) { + Md( + markdown = item.text, + ) + } else { + Text(item.text) + } + } + } + } + } +} + +@Composable +fun VaultViewNoteItemLayout( + modifier: Modifier = Modifier, + content: @Composable () -> Unit, +) { +// Surface( +// modifier = Modifier +// .padding( +// horizontal = 8.dp, +// vertical = 2.dp, +// ) +// .padding(top = 8.dp) +// .fillMaxWidth(), +// shape = MaterialTheme.shapes.medium, +// color = MaterialTheme.colorScheme.noteContainer, +// ) { + Column( + modifier = modifier + .padding( + vertical = 12.dp, + horizontal = Dimens.horizontalPadding, + ), + ) { + content() + } +// } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewOrganizationItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewOrganizationItem.kt new file mode 100644 index 00000000..112d10d9 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewOrganizationItem.kt @@ -0,0 +1,39 @@ +package com.artemchep.keyguard.feature.home.vault.component + +import androidx.compose.material.icons.Icons +import androidx.compose.material3.Icon +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.style.TextOverflow +import com.artemchep.keyguard.feature.home.vault.model.VaultViewItem +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.KeyguardOrganization + +@Composable +fun VaultViewOrganizationItem( + modifier: Modifier = Modifier, + item: VaultViewItem.Organization, +) { + FlatItem( + modifier = modifier, + leading = { + Icon( + Icons.Outlined.KeyguardOrganization, + null, + ) + }, + trailing = { + ChevronIcon() + }, + title = { + Text( + text = item.title, + overflow = TextOverflow.Ellipsis, + maxLines = 5, + ) + }, + onClick = item.onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewPasskeyItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewPasskeyItem.kt new file mode 100644 index 00000000..480a976c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewPasskeyItem.kt @@ -0,0 +1,136 @@ +package com.artemchep.keyguard.feature.home.vault.component + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.width +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Check +import androidx.compose.material.icons.outlined.Key +import androidx.compose.material3.Button +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.feature.home.vault.model.VaultViewItem +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemLayout +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun VaultViewPasskeyItem( + modifier: Modifier = Modifier, + item: VaultViewItem.Passkey, +) { + FlatItemLayout( + modifier = modifier, + elevation = 1.dp, + leading = icon(Icons.Outlined.Key), + content = { + val columnLayout = item.onUse != null + if (columnLayout) { + Column { + if (item.source.userDisplayName != null) { + TextUserName( + text = item.source.userDisplayName, + ) + } + TextRpId( + text = item.source.rpId, + ) + } + } else { + Row( + modifier = Modifier + .fillMaxWidth(), + ) { + if (item.source.userDisplayName != null) { + TextUserName( + modifier = Modifier + .alignByBaseline() + .weight(0.6f, fill = false), + text = item.source.userDisplayName, + ) + Spacer( + modifier = Modifier + .width(8.dp), + ) + } + TextRpId( + modifier = Modifier + .alignByBaseline() + .weight(0.4f, fill = false), + text = item.source.rpId, + ) + } + } + }, + trailing = if (item.onUse != null) { + // composable + { + val updatedOnUse by rememberUpdatedState(item.onUse) + Button( + onClick = { + updatedOnUse.invoke() + }, + ) { + Icon(Icons.Outlined.Check, null) + Spacer( + modifier = Modifier + .width(Dimens.buttonIconPadding), + ) + Text( + text = stringResource(Res.strings.passkey_use_short), + textAlign = TextAlign.Center, + ) + } + } + } else { + null + }, + onClick = item.onClick, + ) +} + +@Composable +private fun TextUserName( + modifier: Modifier = Modifier, + text: String, +) { + Text( + modifier = modifier, + text = text, + style = MaterialTheme.typography.bodyLarge, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + ) +} + +@Composable +private fun TextRpId( + modifier: Modifier = Modifier, + text: String, +) { + Text( + modifier = modifier, + text = text, + style = MaterialTheme.typography.bodyMedium, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewReusedPasswordItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewReusedPasswordItem.kt new file mode 100644 index 00000000..db5482d8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewReusedPasswordItem.kt @@ -0,0 +1,58 @@ +package com.artemchep.keyguard.feature.home.vault.component + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.ErrorOutline +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.ui.Modifier +import com.artemchep.keyguard.feature.home.vault.model.VaultViewItem +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.FlatItemLayout +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.theme.combineAlpha +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun VaultViewReusedPasswordItem( + modifier: Modifier = Modifier, + item: VaultViewItem.ReusedPassword, +) { + val contentColor = MaterialTheme.colorScheme.error + val backgroundColor = MaterialTheme.colorScheme.errorContainer + .combineAlpha(DisabledEmphasisAlpha) + FlatItemLayout( + modifier = modifier, + backgroundColor = backgroundColor, + leading = { + Icon( + Icons.Outlined.ErrorOutline, + contentDescription = null, + tint = contentColor, + ) + }, + content = { + CompositionLocalProvider( + LocalContentColor provides MaterialTheme.colorScheme.onErrorContainer, + ) { + FlatItemTextContent( + title = { + Text( + stringResource(Res.strings.reused_password), + style = MaterialTheme.typography.titleSmall, + ) + }, + ) + } + }, + trailing = { + ChevronIcon() + }, + onClick = item.onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewSectionItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewSectionItem.kt new file mode 100644 index 00000000..b7b0f2a0 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewSectionItem.kt @@ -0,0 +1,16 @@ +package com.artemchep.keyguard.feature.home.vault.component + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import com.artemchep.keyguard.feature.home.vault.model.VaultViewItem + +@Composable +fun VaultViewSectionItem( + modifier: Modifier = Modifier, + item: VaultViewItem.Section, +) { + Section( + modifier = modifier, + text = item.text, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewSpacerItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewSpacerItem.kt new file mode 100644 index 00000000..c76dbc95 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewSpacerItem.kt @@ -0,0 +1,15 @@ +package com.artemchep.keyguard.feature.home.vault.component + +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.height +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import com.artemchep.keyguard.feature.home.vault.model.VaultViewItem + +@Composable +fun VaultViewSpacerItem( + modifier: Modifier = Modifier, + item: VaultViewItem.Spacer, +) { + Spacer(modifier = modifier.height(item.height)) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewTotpItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewTotpItem.kt new file mode 100644 index 00000000..0a30d372 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewTotpItem.kt @@ -0,0 +1,448 @@ +package com.artemchep.keyguard.feature.home.vault.component + +import androidx.compose.animation.AnimatedContent +import androidx.compose.animation.EnterTransition +import androidx.compose.animation.ExitTransition +import androidx.compose.animation.animateContentSize +import androidx.compose.animation.scaleIn +import androidx.compose.animation.scaleOut +import androidx.compose.animation.slideInVertically +import androidx.compose.animation.slideOutVertically +import androidx.compose.animation.togetherWith +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.FlowRow +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.ContentCopy +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.State +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.key +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.isSpecified +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import arrow.core.getOrElse +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.model.TotpCode +import com.artemchep.keyguard.common.model.TotpToken +import com.artemchep.keyguard.common.usecase.CopyText +import com.artemchep.keyguard.common.usecase.GetTotpCode +import com.artemchep.keyguard.feature.home.vault.model.VaultViewItem +import com.artemchep.keyguard.ui.AhContainer +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.ExpandedIfNotEmptyForRow +import com.artemchep.keyguard.ui.FlatDropdown +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.icons.IconBox +import com.artemchep.keyguard.ui.icons.KeyguardTwoFa +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.theme.monoFontFamily +import com.artemchep.keyguard.ui.totp.formatCode2 +import kotlinx.collections.immutable.PersistentList +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.flow +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.map +import kotlinx.datetime.Clock +import org.kodein.di.compose.rememberInstance +import kotlin.math.roundToInt + +private sealed interface VaultViewTotpItemBadgeState { + data object Loading : VaultViewTotpItemBadgeState + + data class Success( + val codes: PersistentList>, + val codeRaw: String, + val counter: Counter, + ) : VaultViewTotpItemBadgeState { + sealed interface Counter { + val text: String + } + + data class TimeBasedCounter( + val time: String, + val progress: Float, + ) : Counter { + override val text: String + get() = time + } + + data class IncrementBasedCounter( + val counter: String, + ) : Counter { + override val text: String + get() = counter + } + } +} + +@OptIn(ExperimentalLayoutApi::class) +@Composable +fun VaultViewTotpItem( + modifier: Modifier = Modifier, + item: VaultViewItem.Totp, +) { + val state by item.localStateFlow.collectAsState() + val dropdown = state.dropdown + FlatDropdown( + modifier = modifier, + elevation = item.elevation, + content = { + FlatItemTextContent2( + title = { + Text(item.title) + }, + text = { + FlowRow { + VaultViewTotpCodeContent( + totp = item.totp, + codes = state.codes, + ) + } + }, + ) + }, + leading = { + IconBox(main = Icons.Outlined.KeyguardTwoFa) + }, + trailing = { + VaultViewTotpBadge( + totpToken = item.totp, + ) + + val onCopyAction = remember(dropdown) { + dropdown + .firstNotNullOfOrNull { + val action = it as? FlatItemAction + action?.takeIf { it.type == FlatItemAction.Type.COPY } + } + } + if (onCopyAction != null) { + val onCopy = onCopyAction.onClick + Spacer(Modifier.width(16.dp)) + IconButton( + enabled = onCopy != null, + onClick = { + onCopy?.invoke() + }, + ) { + Icon( + imageVector = Icons.Outlined.ContentCopy, + contentDescription = null, + ) + } + } + }, + dropdown = dropdown, + ) +} + +@Composable +fun RowScope.VaultViewTotpBadge( + totpToken: TotpToken, +) { + val state by produceTotpCode( + totpToken = totpToken, + ) + + VaultViewTotpRemainderBadge( + state = state, + ) +} + +@Composable +fun VaultViewTotpBadge2( + modifier: Modifier = Modifier, + color: Color = Color.Unspecified, + copyText: CopyText, + totpToken: TotpToken, +) { + val state by produceTotpCode( + totpToken = totpToken, + ) + + Surface( + modifier = modifier + .padding(top = 8.dp), + color = color.takeIf { it.isSpecified } + ?: MaterialTheme.colorScheme.surface, + shape = MaterialTheme.shapes.small, + tonalElevation = 1.dp, + ) { + Row( + modifier = Modifier + .clickable(enabled = state is VaultViewTotpItemBadgeState.Success) { + val code = (state as? VaultViewTotpItemBadgeState.Success) + ?.codeRaw ?: return@clickable + copyText.copy(code, hidden = false) + } + .padding( + start = 8.dp, + end = 4.dp, + top = 4.dp, + bottom = 4.dp, + ), + ) { + VaultViewTotpCodeContent( + totp = totpToken, + codes = (state as? VaultViewTotpItemBadgeState.Success?) + ?.codes, + ) + + Spacer( + modifier = Modifier + .width(16.dp), + ) + + VaultViewTotpRemainderBadge( + state = state, + ) + } + } +} + +@Composable +private fun RowScope.VaultViewTotpCodeContent( + totp: TotpToken, + codes: PersistentList>?, +) { + val symbolColor = LocalContentColor.current + .combineAlpha(DisabledEmphasisAlpha) + if (codes == null) { + repeat(totp.digits) { index -> + if (index != 0 && index.rem(3) == 0) { + Spacer( + modifier = Modifier + .padding( + horizontal = 5.dp, + ) + .size(3.dp), + ) + } + Text( + text = " ", + fontFamily = monoFontFamily, + ) + } + return + } + codes.forEachIndexed { index, text -> + if (index > 0) { + Box( + modifier = Modifier + .padding( + horizontal = 5.dp, + ) + .size(3.dp) + .background(symbolColor, CircleShape) + .align(Alignment.CenterVertically), + ) + } + key(index) { + text.forEachIndexed { cpIndex, cpText -> + key(cpIndex) { + AnimatedContent( + modifier = Modifier + .align(Alignment.CenterVertically), + targetState = cpText, + transitionSpec = { + val from = this.initialState + if (from == " ") { + return@AnimatedContent EnterTransition.None togetherWith + ExitTransition.None + } + + val to = this.targetState + val currentFavorite = from > to + val enter = slideInVertically { + if (currentFavorite) -it else it + } + scaleIn() + val exit = slideOutVertically { + if (currentFavorite) it else -it + } + scaleOut() + enter togetherWith exit + }, + ) { text -> + Text( + text = text, + fontFamily = monoFontFamily, + ) + } + } + } + } + } +} + +// +// Remainder +// + +@Composable +private fun VaultViewTotpRemainderBadge( + state: VaultViewTotpItemBadgeState?, +) { + ExpandedIfNotEmptyForRow( + valueOrNull = state, + ) { + VaultViewTotpRemainderBadgeLayout( + state = it, + ) + } +} + +@Composable +private fun VaultViewTotpRemainderBadgeLayout( + state: VaultViewTotpItemBadgeState, +) { + val score = when (state) { + is VaultViewTotpItemBadgeState.Loading -> null + + is VaultViewTotpItemBadgeState.Success -> when (val counter = state.counter) { + is VaultViewTotpItemBadgeState.Success.TimeBasedCounter -> counter.progress.coerceIn( + 0f, + 1f, + ) + + is VaultViewTotpItemBadgeState.Success.IncrementBasedCounter -> null + } + } + AhContainer( + score = score + ?: 1f, + ) { + val time = (state as? VaultViewTotpItemBadgeState.Success)?.counter?.text.orEmpty() + VaultViewTotpRemainderBadgeContent( + progress = it.takeIf { score != null }, + text = time, + ) + } +} + +@Composable +private fun RowScope.VaultViewTotpRemainderBadgeContent( + progress: Float?, + text: String, +) { + val circularProgressModifier = Modifier.size(16.dp) + when (progress) { + null -> { + // Do nothing. + } + + else -> { + CircularProgressIndicator( + modifier = circularProgressModifier, + progress = progress, + color = LocalContentColor.current, + ) + Spacer(Modifier.width(4.dp)) + } + } + Spacer(Modifier.width(4.dp)) + Text( + modifier = Modifier + .animateContentSize(), + text = text, + fontFamily = monoFontFamily, + fontWeight = FontWeight.Bold, + style = MaterialTheme.typography.labelMedium, + ) + Spacer(Modifier.width(4.dp)) +} + +// +// State +// + +@Composable +private fun produceTotpCode( + totpToken: TotpToken, +): State { + val getTotpCode by rememberInstance() + return remember(totpToken) { + getTotpCode(totpToken) + .flatMapLatest { + // Format the totp code, so it's easier to + // read for the user. + val codes = it.formatCode2() + when (val counter = it.counter) { + is TotpCode.TimeBasedCounter -> flow { + while (true) { + val now = Clock.System.now() + val totalDuration = counter.duration + val remainingDuration = counter.expiration - now + val elapsedDuration = totalDuration - remainingDuration + + val time = remainingDuration + .inWholeMilliseconds + .toFloat() + .div(1000F) + .roundToInt() + .coerceAtLeast(0) + .toString() + val progress = + 1f - elapsedDuration.inWholeSeconds.toFloat() / totalDuration.inWholeSeconds.toFloat() + val c = VaultViewTotpItemBadgeState.Success.TimeBasedCounter( + time = time, + progress = progress, + ) + val s = VaultViewTotpItemBadgeState.Success( + codes = codes, + codeRaw = it.code, + counter = c, + ) + emit(s) + + val dt = remainingDuration + .inWholeMilliseconds + .rem(1000L) + delay(dt + 1L) + } + } + + is TotpCode.IncrementBasedCounter -> { + val c = VaultViewTotpItemBadgeState.Success.IncrementBasedCounter( + counter = counter.counter.toString(), + ) + val s = VaultViewTotpItemBadgeState.Success( + codes = codes, + codeRaw = it.code, + counter = c, + ) + flowOf(s) + } + } + + } + .attempt() + .map { either -> + either + .getOrElse { + null + } + } + }.collectAsState(initial = VaultViewTotpItemBadgeState.Loading) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewUriItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewUriItem.kt new file mode 100644 index 00000000..4700a6fa --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewUriItem.kt @@ -0,0 +1,134 @@ +package com.artemchep.keyguard.feature.home.vault.component + +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.widthIn +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Warning +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.feature.home.vault.model.VaultViewItem +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +import com.artemchep.keyguard.ui.ExpandedIfNotEmptyForRow +import com.artemchep.keyguard.ui.FlatDropdown +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.theme.warning +import com.artemchep.keyguard.ui.theme.warningContainer +import com.artemchep.keyguard.ui.util.DividerColor + +@Composable +fun VaultViewUriItem( + modifier: Modifier = Modifier, + item: VaultViewItem.Uri, +) { + FlatDropdown( + modifier = modifier, + leading = { + item.icon() + }, + content = { + FlatItemTextContent( + title = { + Text( + text = item.title, + overflow = TextOverflow.Ellipsis, + maxLines = 5, + ) + }, + text = if (item.text != null) { + // composable + { + Text( + text = item.text, + overflow = TextOverflow.Ellipsis, + maxLines = 5, + ) + } + } else { + null + }, + ) + ExpandedIfNotEmpty( + item.warningTitle, + ) { warningTitle -> + val contentColor = MaterialTheme.colorScheme.warning + val backgroundColor = MaterialTheme.colorScheme.warningContainer + .combineAlpha(DisabledEmphasisAlpha) + Row( + modifier = Modifier + .padding( + top = 4.dp, + ) + .background( + backgroundColor, + MaterialTheme.shapes.small, + ) + .padding( + start = 4.dp, + top = 4.dp, + bottom = 4.dp, + end = 4.dp, + ), + verticalAlignment = Alignment.CenterVertically, + ) { + Icon( + modifier = Modifier + .size(14.dp), + imageVector = Icons.Outlined.Warning, + contentDescription = null, + tint = contentColor, + ) + Spacer(modifier = Modifier.width(4.dp)) + Text( + modifier = Modifier, + text = warningTitle, + style = MaterialTheme.typography.labelMedium, + ) + } + } + }, + trailing = { + ExpandedIfNotEmptyForRow( + item.matchTypeTitle, + ) { matchTypeTitle -> + Text( + modifier = Modifier + .widthIn(max = 128.dp) + .padding( + top = 8.dp, + bottom = 8.dp, + ) + .border( + Dp.Hairline, + DividerColor, + MaterialTheme.shapes.small, + ) + .padding( + horizontal = 8.dp, + vertical = 4.dp, + ), + text = matchTypeTitle, + style = MaterialTheme.typography.labelSmall, + textAlign = TextAlign.End, + maxLines = 2, + ) + } + }, + dropdown = item.dropdown, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewValueItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewValueItem.kt new file mode 100644 index 00000000..aea56153 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultViewValueItem.kt @@ -0,0 +1,209 @@ +package com.artemchep.keyguard.feature.home.vault.component + +import androidx.compose.animation.animateContentSize +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.FlowRow +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.height +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.ContentCopy +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.LocalTextStyle +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.alpha +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.feature.auth.common.VisibilityToggle +import com.artemchep.keyguard.feature.home.vault.model.VaultViewItem +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatDropdown +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.animatedConcealedText +import com.artemchep.keyguard.ui.colorizePassword +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.theme.monoFontFamily +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.MutableSharedFlow + +@OptIn(ExperimentalLayoutApi::class) +@Composable +fun VaultViewValueItem( + modifier: Modifier = Modifier, + item: VaultViewItem.Value, +) { + val contentColor = LocalContentColor.current + val value = remember(item.value, item.colorize, contentColor) { + if (item.colorize) { + colorizePassword( + password = item.value, + contentColor = contentColor, + ) + } else { + AnnotatedString(item.value) + } + } + + val updatedVerify by rememberUpdatedState(item.verify) + val visibilityState = remember( + item.private, + item.hidden, + ) { mutableStateOf(!item.private && !item.hidden) } + FlatDropdown( + modifier = modifier, + elevation = item.elevation, + content = { + val shownValue = animatedConcealedText( + text = value, + concealed = !visibilityState.value, + ) + + FlatItemTextContent2( + title = if (!item.title.isNullOrBlank()) { + // composable + { + Text(item.title) + } + } else { + null + }, + text = if (shownValue.isNotBlank()) { + // composable + { + Text( + modifier = Modifier + .animateContentSize(), + text = shownValue, + fontFamily = if (item.monospace) monoFontFamily else null, + ) + } + } else { + // composable + { + Text( + modifier = Modifier + .animateContentSize() + .alpha(MediumEmphasisAlpha), + text = stringResource(Res.strings.empty_value), + fontFamily = if (item.monospace) monoFontFamily else null, + ) + } + }, + ) + + if (item.badge != null || item.badge2.isNotEmpty()) { + Spacer( + modifier = Modifier + .height(4.dp), + ) + FlowRow( + verticalArrangement = Arrangement.spacedBy(8.dp), + horizontalArrangement = Arrangement.spacedBy(8.dp), + ) { + if (item.badge != null) { + com.artemchep.keyguard.ui.Ah( + score = item.badge.score, + text = item.badge.text, + ) + } + item.badge2.forEach { + val s = it.collectAsState() + val v = s.value + if (v != null) { + com.artemchep.keyguard.ui.Ah( + score = v.score, + text = v.text, + ) + } + } + } + } + }, + dropdown = item.dropdown, + leading = item.leading, + trailing = { + if (item.private && !item.hidden) { + VisibilityToggle( + visible = visibilityState.value, + onVisibleChange = { shouldBeConcealed -> + val verify = updatedVerify + if ( + verify != null && + shouldBeConcealed + ) { + verify.invoke { + visibilityState.value = true + } + return@VisibilityToggle + } + + visibilityState.value = shouldBeConcealed + }, + ) + } + val sharedFLow = MutableSharedFlow() + sharedFLow.tryEmit(Unit) + val onCopyAction = remember(item.dropdown) { + item.dropdown + .firstNotNullOfOrNull { + val action = it as? FlatItemAction + action?.takeIf { it.type == FlatItemAction.Type.COPY } + } + } + if (onCopyAction != null) { + val onCopy = onCopyAction.onClick + IconButton( + enabled = onCopy != null, + onClick = { + onCopy?.invoke() + }, + ) { + Icon( + imageVector = Icons.Outlined.ContentCopy, + contentDescription = null, + ) + } + } + + item.trailing?.invoke(this) + }, + ) +} + +@Composable +fun ColumnScope.FlatItemTextContent2( + title: (@Composable () -> Unit)? = null, + text: (@Composable () -> Unit)? = null, +) { + if (title != null) { + CompositionLocalProvider( + LocalTextStyle provides MaterialTheme.typography.labelMedium + .let { + val color = LocalContentColor.current.combineAlpha(alpha = MediumEmphasisAlpha) + it.copy(color = color) + }, + ) { + title() + } + } + if (text != null) { + CompositionLocalProvider( + LocalTextStyle provides MaterialTheme.typography.bodyLarge, + ) { + text() + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/folders/FoldersRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/folders/FoldersRoute.kt new file mode 100644 index 00000000..6808e074 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/folders/FoldersRoute.kt @@ -0,0 +1,21 @@ +package com.artemchep.keyguard.feature.home.vault.folders + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.model.DFilter +import com.artemchep.keyguard.feature.navigation.Route + +data class FoldersRoute( + val args: Args, +) : Route { + data class Args( + val filter: DFilter? = null, + val empty: Boolean = false, + ) + + @Composable + override fun Content() { + FoldersScreen( + args = args, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/folders/FoldersScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/folders/FoldersScreen.kt new file mode 100644 index 00000000..c4736d75 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/folders/FoldersScreen.kt @@ -0,0 +1,252 @@ +@file:OptIn(ExperimentalMaterial3Api::class) + +package com.artemchep.keyguard.feature.home.vault.folders + +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.items +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.CreateNewFolder +import androidx.compose.material.icons.outlined.FolderOff +import androidx.compose.material3.Checkbox +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalAbsoluteTonalElevation +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.alpha +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.feature.EmptyView +import com.artemchep.keyguard.feature.home.vault.component.Section +import com.artemchep.keyguard.feature.home.vault.component.surfaceColorAtElevationSemi +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.AhLayout +import com.artemchep.keyguard.ui.DefaultFab +import com.artemchep.keyguard.ui.DefaultSelection +import com.artemchep.keyguard.ui.ExpandedIfNotEmptyForRow +import com.artemchep.keyguard.ui.FabState +import com.artemchep.keyguard.ui.FlatDropdown +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.ScaffoldLazyColumn +import com.artemchep.keyguard.ui.animatedNumberText +import com.artemchep.keyguard.ui.icons.OfflineIcon +import com.artemchep.keyguard.ui.skeleton.SkeletonItemPilled +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.toolbar.LargeToolbar +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun FoldersScreen( + args: FoldersRoute.Args, +) { + val state = foldersScreenState( + args = args, + ) + FoldersScreenContent( + state = state, + ) +} + +@OptIn(ExperimentalMaterial3Api::class, ExperimentalFoundationApi::class) +@Composable +fun FoldersScreenContent( + state: FoldersState, +) { + val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + ScaffoldLazyColumn( + modifier = Modifier + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + LargeToolbar( + title = { + Column { + Text( + text = stringResource(Res.strings.account), + style = MaterialTheme.typography.labelSmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + overflow = TextOverflow.Ellipsis, + maxLines = 2, + ) + Text( + text = stringResource(Res.strings.folders), + style = MaterialTheme.typography.titleMedium, + overflow = TextOverflow.Ellipsis, + maxLines = 1, + ) + } + }, + navigationIcon = { + NavigationIcon() + }, + scrollBehavior = scrollBehavior, + ) + }, + floatingActionState = run { + val fabOnClick = state.onAdd + val fabState = if (fabOnClick != null) { + FabState( + onClick = fabOnClick, + model = null, + ) + } else { + null + } + rememberUpdatedState(newValue = fabState) + }, + floatingActionButton = { + DefaultFab( + icon = { + Icon( + imageVector = Icons.Outlined.CreateNewFolder, + contentDescription = null, + ) + }, + text = { + Text( + text = stringResource(Res.strings.folder_new), + ) + }, + ) + }, + bottomBar = { + DefaultSelection( + state = state.selection, + ) + }, + ) { + when (val contentState = state.content) { + is Loadable.Loading -> { + for (i in 1..3) { + item("skeleton.$i") { + SkeletonItemPilled() + } + } + } + + is Loadable.Ok -> { + val items = contentState.value.items + if (items.isEmpty()) { + item("empty") { + EmptyView( + icon = { + Icon(Icons.Outlined.FolderOff, null) + }, + text = { + Text( + text = stringResource(Res.strings.folders_empty_label), + ) + }, + ) + } + } + + items( + items = items, + key = { it.key }, + ) { + FoldersScreenItem( + modifier = Modifier + .animateItemPlacement(), + item = it, + ) + } + } + } + } +} + +@Composable +private fun FoldersScreenItem( + modifier: Modifier = Modifier, + item: FoldersState.Content.Item, +) = when (item) { + is FoldersState.Content.Item.Section -> FoldersScreenSectionItem(modifier, item) + is FoldersState.Content.Item.Folder -> FoldersScreenFolderItem(modifier, item) +} + +@Composable +private fun FoldersScreenSectionItem( + modifier: Modifier = Modifier, + item: FoldersState.Content.Item.Section, +) { + Section( + modifier = modifier, + text = item.text, + ) +} + +@Composable +private fun FoldersScreenFolderItem( + modifier: Modifier = Modifier, + item: FoldersState.Content.Item.Folder, +) { + val backgroundColor = + if (item.selected) MaterialTheme.colorScheme.primaryContainer else MaterialTheme.colorScheme.surface + FlatDropdown( + modifier = modifier, + backgroundColor = backgroundColor, + dropdown = item.actions, + leading = { + val pillElevation = LocalAbsoluteTonalElevation.current + 8.dp + val pillColor = MaterialTheme.colorScheme + .surfaceColorAtElevationSemi(elevation = pillElevation) + AhLayout( + modifier = modifier, + backgroundColor = pillColor, + ) { + val text = animatedNumberText(item.ciphers) + Text(text) + } + }, + content = { + FlatItemTextContent( + title = { + Text(item.title) + }, + text = if (item.text != null) { + // composable + { + Text(item.text) + } + } else { + null + }, + ) + }, + trailing = { + ExpandedIfNotEmptyForRow( + Unit.takeUnless { item.synced }, + modifier = Modifier + .alpha(LocalContentColor.current.alpha), + ) { + OfflineIcon( + modifier = Modifier + .padding(end = 8.dp), + ) + } + ExpandedIfNotEmptyForRow( + item.selected.takeIf { item.selecting }, + ) { selected -> + Checkbox( + checked = selected, + onCheckedChange = null, + ) + } + }, + onClick = item.onClick, + onLongClick = item.onLongClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/folders/FoldersState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/folders/FoldersState.kt new file mode 100644 index 00000000..4cadce3a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/folders/FoldersState.kt @@ -0,0 +1,51 @@ +package com.artemchep.keyguard.feature.home.vault.folders + +import androidx.compose.runtime.Immutable +import androidx.compose.ui.graphics.vector.ImageVector +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.ui.ContextItem +import com.artemchep.keyguard.ui.Selection +import kotlinx.collections.immutable.ImmutableList + +/** + * @author Artem Chepurnyi + */ +@Immutable +data class FoldersState( + val selection: Selection? = null, + val content: Loadable = Loadable.Loading, + val onAdd: (() -> Unit)? = null, +) { + @Immutable + data class Content( + val items: ImmutableList, + ) { + + @Immutable + sealed interface Item { + val key: String + + @Immutable + data class Section( + override val key: String, + val text: String? = null, + ) : Item + + @Immutable + data class Folder( + override val key: String, + val title: String, + val text: String? = null, + val ciphers: Int, + val selecting: Boolean, + val selected: Boolean, + val synced: Boolean, + val failed: Boolean, + val icon: ImageVector? = null, + val actions: ImmutableList, + val onClick: (() -> Unit)?, + val onLongClick: (() -> Unit)?, + ) : Item + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/folders/FoldersStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/folders/FoldersStateProducer.kt new file mode 100644 index 00000000..b384e528 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/folders/FoldersStateProducer.kt @@ -0,0 +1,506 @@ +package com.artemchep.keyguard.feature.home.vault.folders + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Delete +import androidx.compose.material.icons.outlined.Edit +import androidx.compose.material.icons.outlined.Merge +import androidx.compose.runtime.Composable +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.model.DFilter +import com.artemchep.keyguard.common.model.DFolder +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.usecase.AddFolder +import com.artemchep.keyguard.common.usecase.GetCanWrite +import com.artemchep.keyguard.common.usecase.GetCiphers +import com.artemchep.keyguard.common.usecase.GetFolders +import com.artemchep.keyguard.common.usecase.MergeFolderById +import com.artemchep.keyguard.common.usecase.RemoveFolderById +import com.artemchep.keyguard.common.usecase.RenameFolderById +import com.artemchep.keyguard.core.store.bitwarden.exists +import com.artemchep.keyguard.feature.confirmation.ConfirmationResult +import com.artemchep.keyguard.feature.confirmation.ConfirmationRoute +import com.artemchep.keyguard.feature.confirmation.createConfirmationDialogIntent +import com.artemchep.keyguard.feature.home.vault.VaultRoute +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.registerRouteResultReceiver +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.provider.bitwarden.usecase.util.canDelete +import com.artemchep.keyguard.provider.bitwarden.usecase.util.canEdit +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.Selection +import com.artemchep.keyguard.ui.buildContextItems +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.KeyguardCipher +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.selection.selectionHandle +import kotlinx.collections.immutable.toImmutableList +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.shareIn +import org.kodein.di.DirectDI +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +@Composable +fun foldersScreenState( + args: FoldersRoute.Args, +) = with(localDI().direct) { + foldersScreenState( + args = args, + directDI = this, + getFolders = instance(), + getCiphers = instance(), + getCanWrite = instance(), + addFolder = instance(), + mergeFolderById = instance(), + removeFolderById = instance(), + renameFolderById = instance(), + ) +} + +@Composable +fun foldersScreenState( + args: FoldersRoute.Args, + directDI: DirectDI, + getFolders: GetFolders, + getCiphers: GetCiphers, + getCanWrite: GetCanWrite, + addFolder: AddFolder, + mergeFolderById: MergeFolderById, + removeFolderById: RemoveFolderById, + renameFolderById: RenameFolderById, +): FoldersState = produceScreenState( + key = "folders", + initial = FoldersState(), + args = arrayOf( + args, + getFolders, + getCiphers, + getCanWrite, + addFolder, + mergeFolderById, + removeFolderById, + renameFolderById, + ), +) { + data class FolderWithCiphers( + val folder: DFolder, + val ciphers: List, + ) + + val foldersComparator = Comparator { a: DFolder, b: DFolder -> + a.name.compareTo(b.name, ignoreCase = true) + } + val foldersFilter = args.filter ?: DFilter.All + val foldersFlow = getFolders() + .map { folders -> + val predicate = foldersFilter.prepareFolders(directDI, folders) + folders + .filter { predicate(it) } + .sortedWith(foldersComparator) + } + .shareIn(screenScope, SharingStarted.Lazily, replay = 1) + val foldersWithCiphersFolder = getCiphers() + .map { ciphers -> + ciphers + .filter { it.deletedDate == null } + .groupBy { it.folderId } + } + .combine(foldersFlow) { ciphersByFolder, folders -> + folders + .map { folder -> + val ciphers = ciphersByFolder[folder.id].orEmpty() + FolderWithCiphers( + folder = folder, + ciphers = ciphers, + ) + } + .run { + if (args.empty) { + filter { it.ciphers.isEmpty() } + } else { + this + } + } + } + + val selectionHandle = selectionHandle("selection") + val selectedFoldersWithCiphersFlow = foldersWithCiphersFolder + .combine(selectionHandle.idsFlow) { foldersWithCiphers, selectedFolderIds -> + selectedFolderIds + .mapNotNull { selectedFolderId -> + val folderWithCiphers = foldersWithCiphers + .firstOrNull { it.folder.id == selectedFolderId } + ?: return@mapNotNull null + selectedFolderId to folderWithCiphers + } + .toMap() + } + .distinctUntilChanged() + .shareIn(screenScope, SharingStarted.Lazily, replay = 1) + + val accountId = DFilter + .findOne(foldersFilter) { f -> + f.what == DFilter.ById.What.ACCOUNT + } + ?.id + + fun onAdd() { + accountId + ?: // Should not happen, we should not + // call this function if the account id + // is null. + return + val intent = createConfirmationDialogIntent( + item = ConfirmationRoute.Args.Item.StringItem( + key = "name", + title = "Folder name", + // Folder must have a non-empty name! + canBeEmpty = false, + ), + title = "Create a folder", + ) { name -> + val accountIdsToNames = mapOf( + AccountId(accountId) to name, + ) + addFolder(accountIdsToNames) + .launchIn(appScope) + } + navigate(intent) + } + + fun onRename( + folders: List, + ) { + val route = registerRouteResultReceiver( + route = ConfirmationRoute( + args = ConfirmationRoute.Args( + icon = icon(Icons.Outlined.Edit), + title = if (folders.size > 1) { + translate(Res.strings.folder_action_change_names_title) + } else { + translate(Res.strings.folder_action_change_name_title) + }, + items = folders + .sortedBy { it.name } + .map { folder -> + ConfirmationRoute.Args.Item.StringItem( + key = folder.id, + value = folder.name, + title = folder.name, + type = ConfirmationRoute.Args.Item.StringItem.Type.Text, + canBeEmpty = false, + ) + }, + ), + ), + ) { + if (it is ConfirmationResult.Confirm) { + val folderIdsToNames = it.data + .mapValues { it.value as String } + renameFolderById(folderIdsToNames) + .launchIn(appScope) + } + } + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + } + + fun onMerge( + folderName: String, + folderIds: Set, + ) { + val folderNameKey = "folder_name" + val folderNameItem = ConfirmationRoute.Args.Item.StringItem( + key = folderNameKey, + value = folderName, + title = "Folder name", + type = ConfirmationRoute.Args.Item.StringItem.Type.Text, + canBeEmpty = false, + ) + + val route = registerRouteResultReceiver( + route = ConfirmationRoute( + args = ConfirmationRoute.Args( + icon = icon(Icons.Outlined.Merge), + title = "Are you sure you want to merge these folders?", + items = listOfNotNull( + folderNameItem, + ), + ), + ), + ) { result -> + if (result is ConfirmationResult.Confirm) { + selectionHandle.clearSelection() + + val name = result.data[folderNameKey] as String + mergeFolderById(folderIds, name) + .launchIn(appScope) + } + } + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + } + + fun onDelete( + folderIds: Set, + /** + * `true` if any of the folders contain ciphers in it, + * `false` otherwise. + */ + hasCiphers: Boolean, + ) { + val cascadeRemoveKey = "cascade_remove" + val cascadeRemoveItem = if (hasCiphers) { + ConfirmationRoute.Args.Item.BooleanItem( + key = cascadeRemoveKey, + title = translate(Res.strings.ciphers_action_cascade_trash_associated_items_title), + ) + } else { + null + } + + val route = registerRouteResultReceiver( + route = ConfirmationRoute( + args = ConfirmationRoute.Args( + icon = icon(Icons.Outlined.Delete), + title = if (folderIds.size > 1) { + translate(Res.strings.folder_delete_many_confirmation_title) + } else { + translate(Res.strings.folder_delete_one_confirmation_title) + }, + message = translate(Res.strings.folder_delete_confirmation_text), + items = listOfNotNull( + cascadeRemoveItem, + ), + ), + ), + ) { result -> + if (result is ConfirmationResult.Confirm) { + selectionHandle.clearSelection() + + val onCiphersConflict = kotlin.run { + val shouldRemoveAssociatedCiphers = result.data[cascadeRemoveKey] == true + if (shouldRemoveAssociatedCiphers) { + RemoveFolderById.OnCiphersConflict.TRASH + } else { + RemoveFolderById.OnCiphersConflict.IGNORE + } + } + removeFolderById(folderIds, onCiphersConflict) + .launchIn(appScope) + } + } + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + } + + val selectionFlow = combine( + foldersFlow + .map { folders -> + folders + .map { it.id } + .toSet() + } + .distinctUntilChanged(), + selectedFoldersWithCiphersFlow, + getCanWrite(), + ) { folderIds, selectedFolders, canWrite -> + if (selectedFolders.isEmpty()) { + return@combine null + } + + val selectedFolderIds = selectedFolders.keys + // Find folders that have some limitations + val hasCanNotEditFolders = selectedFolders.values + .any { !it.folder.service.canEdit() } + val hasCanNotDeleteFolders = selectedFolders.values + .any { !it.folder.service.canDelete() } + + val canEdit = canWrite && !hasCanNotEditFolders + val canDelete = canWrite && !hasCanNotDeleteFolders + + val actions = buildContextItems { + section { + // An option to view all the items that belong + // to these folders. + val ciphersCount = selectedFolders + .asSequence() + .flatMap { it.value.ciphers } + .distinct() + .count() + if (ciphersCount > 0) { + this += FlatItemAction( + icon = Icons.Outlined.KeyguardCipher, + title = translate(Res.strings.items), + trailing = { + ChevronIcon() + }, + onClick = { + val folders = selectedFolders.values + .map { it.folder } + val route = VaultRoute.by( + translator = this@produceScreenState, + folders = folders, + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + } + } + section { + if (canEdit) { + this += FlatItemAction( + icon = Icons.Outlined.Edit, + title = translate(Res.strings.rename), + onClick = { + val folders = selectedFolders.values + .map { it.folder } + onRename(folders) + }, + ) + if (selectedFolders.size > 1) { + val folderAccountId = selectedFolders.values.first().folder.accountId + val singleAccount = selectedFolders + .any { it.value.folder.accountId == folderAccountId } + if (singleAccount) { + val folderName = + selectedFolders.values.maxBy { it.ciphers.size }.folder.name + this += FlatItemAction( + icon = Icons.Outlined.Merge, + title = "Merge into…", + onClick = ::onMerge + .partially1(folderName) + .partially1(selectedFolderIds), + ) + } + } + } + if (canDelete) { + val hasCiphers = selectedFolders.any { it.value.ciphers.isNotEmpty() } + this += FlatItemAction( + icon = Icons.Outlined.Delete, + title = translate(Res.strings.delete), + onClick = ::onDelete + .partially1(selectedFolderIds) + .partially1(hasCiphers), + ) + } + } + } + + Selection( + count = selectedFolders.size, + actions = actions.toImmutableList(), + onSelectAll = selectionHandle::setSelection + .partially1(folderIds) + .takeIf { + folderIds.size > selectedFolderIds.size + }, + onClear = selectionHandle::clearSelection, + ) + } + val contentFlow = combine( + foldersWithCiphersFolder, + selectedFoldersWithCiphersFlow, + getCanWrite(), + ) { foldersWithCiphers, selectedFolderIds, canWrite -> + val selecting = selectedFolderIds.isNotEmpty() + val items = foldersWithCiphers + .map { folderWithCiphers -> + val folder = folderWithCiphers.folder + val ciphers = folderWithCiphers.ciphers + val selected = folder.id in selectedFolderIds + + val canEdit = canWrite && folder.service.canEdit() + val canDelete = canWrite && folder.service.canDelete() + + val actions = buildContextItems { + section { + // An option to view all the items that belong + // to this cipher. + if (!folder.deleted && ciphers.isNotEmpty()) { + this += FlatItemAction( + icon = Icons.Outlined.KeyguardCipher, + title = translate(Res.strings.items), + trailing = { + ChevronIcon() + }, + onClick = { + val route = VaultRoute.by( + translator = this@produceScreenState, + folder = folder, + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + } + } + section { + if (!folder.deleted && canEdit) { + this += FlatItemAction( + icon = Icons.Outlined.Edit, + title = translate(Res.strings.rename), + onClick = ::onRename + .partially1(listOf(folder)), + ) + } + if (!folder.deleted && canDelete) { + this += FlatItemAction( + icon = Icons.Outlined.Delete, + title = translate(Res.strings.delete), + onClick = ::onDelete + .partially1(setOf(folder.id)) + .partially1(folderWithCiphers.ciphers.isNotEmpty()), + ) + } + } + } + FoldersState.Content.Item.Folder( + key = folder.id, + title = folder.name, + ciphers = folderWithCiphers.ciphers.size, + selecting = selecting, + selected = selected, + synced = folder.synced, + failed = folder.service.error.exists(folder.revisionDate), + actions = actions.toImmutableList(), + onClick = if (!folder.deleted && selecting) { + // lambda + selectionHandle::toggleSelection.partially1(folder.id) + } else { + null + }, + onLongClick = if (folder.deleted || selecting) { + null + } else { + // lambda + selectionHandle::toggleSelection.partially1(folder.id) + }, + ) + } + .toImmutableList() + FoldersState.Content( + items = items, + ) + } + combine( + selectionFlow, + contentFlow, + ) { selection, content -> + FoldersState( + selection = selection, + content = Loadable.Ok(content), + onAdd = ::onAdd.takeUnless { selection != null || accountId == null }, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/model/FilterItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/model/FilterItem.kt new file mode 100644 index 00000000..a3494d62 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/model/FilterItem.kt @@ -0,0 +1,42 @@ +package com.artemchep.keyguard.feature.home.vault.model + +import androidx.compose.runtime.Composable +import arrow.optics.optics +import com.artemchep.keyguard.common.model.DFilter +import com.artemchep.keyguard.feature.search.filter.model.FilterItemModel + +@optics +sealed interface FilterItem : FilterItemModel { + companion object + + val sectionId: String + + data class Section( + override val sectionId: String, + override val text: String, + override val expanded: Boolean = true, + override val onClick: () -> Unit, + ) : FilterItem, FilterItemModel.Section { + companion object; + + override val id: String = sectionId + } + + data class Item( + override val sectionId: String, + val filterSectionId: String, + val filters: Set, + override val checked: Boolean, + override val fill: Boolean, + override val indent: Int = 0, + override val leading: (@Composable () -> Unit)?, + override val title: String, + override val text: String?, + override val onClick: (() -> Unit)?, + ) : FilterItem, FilterItemModel.Item { + companion object; + + override val id: String = + sectionId + "|" + filterSectionId + "|" + filters.joinToString(separator = ",") { it.key } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/model/SortItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/model/SortItem.kt new file mode 100644 index 00000000..b9ebf905 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/model/SortItem.kt @@ -0,0 +1,28 @@ +package com.artemchep.keyguard.feature.home.vault.model + +import androidx.compose.ui.graphics.vector.ImageVector +import arrow.optics.optics +import com.artemchep.keyguard.feature.home.vault.screen.ComparatorHolder +import com.artemchep.keyguard.feature.localization.TextHolder +import com.artemchep.keyguard.feature.search.sort.model.SortItemModel + +@optics +sealed interface SortItem : SortItemModel { + companion object; + + data class Section( + override val id: String, + override val text: TextHolder? = null, + ) : SortItem, SortItemModel.Section { + companion object + } + + data class Item( + override val id: String, + val config: ComparatorHolder, + override val icon: ImageVector? = null, + override val title: TextHolder, + override val checked: Boolean, + override val onClick: (() -> Unit)? = null, + ) : SortItem, SortItemModel.Item +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/model/VaultItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/model/VaultItem.kt new file mode 100644 index 00000000..0628c27e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/model/VaultItem.kt @@ -0,0 +1,157 @@ +package com.artemchep.keyguard.feature.home.vault.model + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.Immutable +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.text.AnnotatedString +import arrow.optics.optics +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.PasswordStrength +import com.artemchep.keyguard.common.model.TotpToken +import com.artemchep.keyguard.common.usecase.CopyText +import com.artemchep.keyguard.feature.attachments.SelectableItemState +import com.artemchep.keyguard.feature.localization.TextHolder +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.icons.AccentColors +import kotlinx.collections.immutable.ImmutableList +import kotlinx.coroutines.flow.StateFlow +import kotlinx.datetime.Instant +import java.util.UUID + +@Immutable +@optics +sealed interface VaultItem2 { + companion object + + val id: String + + @Immutable + data class QuickFilters( + override val id: String, + val items: ImmutableList, + ) : VaultItem2 { + companion object; + + data class Item( + val key: String = UUID.randomUUID().toString(), + val leading: (@Composable () -> Unit)? = null, + val imageVector: ImageVector? = null, + val title: String, + val selected: Boolean = false, + val primary: Boolean = false, + val onClick: (() -> Unit)? = null, + ) + } + + @Immutable + data class Button( + override val id: String, + val title: String, + val leading: (@Composable () -> Unit)? = null, + val onClick: (() -> Unit)? = null, + ) : VaultItem2 { + companion object; + } + + @Immutable + data object NoSuggestions : VaultItem2 { + override val id: String get() = "vault_item:no_suggestions" + } + + @Immutable + data object NoItems : VaultItem2 { + override val id: String get() = "vault_item:no_items" + } + + @Immutable + data class Section( + override val id: String = UUID.randomUUID().toString(), + val text: TextHolder? = null, + val caps: Boolean = true, + ) : VaultItem2 { + companion object + } + + @Immutable + data class Item( + override val id: String, + val source: DSecret, + val accentLight: Color, + val accentDark: Color, + val tag: String? = source.accountId, + val accountId: String, + val groupId: String?, + val revisionDate: Instant, + val createdDate: Instant?, + val password: String?, + val passwordRevisionDate: Instant?, + val score: PasswordStrength?, + val type: String, + val folderId: String?, + val icon: VaultItemIcon, + val feature: Feature, + val copyText: CopyText, + val token: TotpToken?, + val passkeys: ImmutableList, + /** + * The name of the item. + */ + val title: AnnotatedString, + val text: String?, + val favourite: Boolean, + val attachments: Boolean, + // + val action: Action, + val localStateFlow: StateFlow, + ) : VaultItem2 { + companion object; + + @Immutable + data class LocalState( + val openedState: OpenedState, + val selectableItemState: SelectableItemState, + ) + + @Immutable + data class OpenedState( + val isOpened: Boolean, + ) + + @Immutable + sealed interface Action { + @Immutable + data class Dropdown( + val actions: List, + ) : Action + + @Immutable + data class Go( + val onClick: () -> Unit, + ) : Action + } + + @Immutable + data class Passkey( + val source: DSecret.Login.Fido2Credentials, + val onClick: () -> Unit, + ) + + @Immutable + sealed interface Feature { + @Immutable + data object None : Feature + + @Immutable + data class Totp( + val token: TotpToken, + ) : Feature + + @Immutable + data class Organization( + val name: String, + val accentColors: AccentColors, + ) : Feature + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/model/VaultItemIcon.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/model/VaultItemIcon.kt new file mode 100644 index 00000000..d0edf288 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/model/VaultItemIcon.kt @@ -0,0 +1,37 @@ +package com.artemchep.keyguard.feature.home.vault.model + +import androidx.compose.runtime.Immutable +import androidx.compose.ui.graphics.vector.ImageVector +import com.artemchep.keyguard.feature.favicon.AppIconUrl +import com.artemchep.keyguard.feature.favicon.FaviconUrl +import dev.icerock.moko.resources.ImageResource + +@Immutable +sealed interface VaultItemIcon { + @Immutable + data class AppIcon( + val data: AppIconUrl, + val fallback: VaultItemIcon?, + ) : VaultItemIcon + + @Immutable + data class WebsiteIcon( + val data: FaviconUrl, + val fallback: VaultItemIcon?, + ) : VaultItemIcon + + @Immutable + data class VectorIcon( + val imageVector: ImageVector, + ) : VaultItemIcon + + @Immutable + data class ImageIcon( + val imageRes: ImageResource, + ) : VaultItemIcon + + @Immutable + data class TextIcon( + val text: String, + ) : VaultItemIcon +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/model/VaultPasswordHistoryItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/model/VaultPasswordHistoryItem.kt new file mode 100644 index 00000000..756a7ce1 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/model/VaultPasswordHistoryItem.kt @@ -0,0 +1,29 @@ +package com.artemchep.keyguard.feature.home.vault.model + +import arrow.optics.optics +import com.artemchep.keyguard.ui.ContextItem + +@optics +sealed interface VaultPasswordHistoryItem { + companion object + + val id: String + + data class Value( + override val id: String, + val title: String, + val value: String, + val monospace: Boolean, + val selected: Boolean, + val selecting: Boolean, + /** + * List of the callable actions appended + * to the item. + */ + val dropdown: List = emptyList(), + val onClick: (() -> Unit)? = null, + val onLongClick: (() -> Unit)? = null, + ) : VaultPasswordHistoryItem { + companion object + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/model/VaultViewItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/model/VaultViewItem.kt new file mode 100644 index 00000000..cbfd7a3b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/model/VaultViewItem.kt @@ -0,0 +1,285 @@ +package com.artemchep.keyguard.feature.home.vault.model + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.RowScope +import androidx.compose.runtime.Composable +import androidx.compose.runtime.Immutable +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp +import arrow.optics.optics +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.TotpToken +import com.artemchep.keyguard.common.service.passkey.PassKeyServiceInfo +import com.artemchep.keyguard.common.service.twofa.TwoFaServiceInfo +import com.artemchep.keyguard.common.usecase.CopyText +import com.artemchep.keyguard.feature.attachments.model.AttachmentItem +import com.artemchep.keyguard.ui.ContextItem +import com.artemchep.keyguard.ui.FlatItemAction +import kotlinx.collections.immutable.PersistentList +import kotlinx.coroutines.flow.StateFlow + +@optics +sealed interface VaultViewItem { + companion object + + val id: String + + data class Card( + override val id: String, + val elevation: Dp, + val data: DSecret.Card, + val concealFields: Boolean, + val verify: ((() -> Unit) -> Unit)? = null, + /** + * List of the callable actions appended + * to the item. + */ + val actions: List = emptyList(), + val dropdown: List = emptyList(), + ) : VaultViewItem { + companion object + } + + data class Identity( + override val id: String, + val data: DSecret.Identity, + /** + * List of the callable actions appended + * to the item. + */ + val actions: List = emptyList(), + ) : VaultViewItem { + companion object + } + + data class Action( + override val id: String, + val elevation: Dp = 0.dp, + val title: String, + val text: String? = null, + val leading: (@Composable RowScope.() -> Unit)? = null, + val trailing: (@Composable RowScope.() -> Unit)? = null, + val badge: Badge? = null, + /** + * List of the callable actions appended + * to the item. + */ + val onClick: (() -> Unit)? = null, + ) : VaultViewItem { + companion object; + + data class Badge( + val text: String, + val score: Float, + ) + } + + data class Value( + override val id: String, + val elevation: Dp = 0.dp, + val title: String?, + val value: String, + val private: Boolean = false, + val hidden: Boolean = false, + val monospace: Boolean = false, + val colorize: Boolean = false, + val leading: (@Composable RowScope.() -> Unit)? = null, + val trailing: (@Composable RowScope.() -> Unit)? = null, + val badge: Badge? = null, + val badge2: List> = emptyList(), + val verify: ((() -> Unit) -> Unit)? = null, + /** + * List of the callable actions appended + * to the item. + */ + val dropdown: List = emptyList(), + ) : VaultViewItem { + companion object; + + sealed interface Style { + data object Info : Style + data object Action : Style + } + + data class Badge( + val text: String, + val score: Float, + ) + } + + data class Error( + override val id: String, + val name: String, + val message: String?, + val timestamp: String, + val onRetry: (() -> Unit)? = null, + ) : VaultViewItem { + companion object; + } + + data class Info( + override val id: String, + val name: String, + val message: String? = null, + val long: Boolean, + ) : VaultViewItem { + companion object; + } + + data class Switch( + override val id: String, + val title: String, + val value: Boolean, + val dropdown: List = emptyList(), + ) : VaultViewItem { + companion object + } + + data class Passkey( + override val id: String, + val value: String?, + val source: DSecret.Login.Fido2Credentials, + val onUse: (() -> Unit)? = null, + val onClick: (() -> Unit)? = null, + ) : VaultViewItem { + companion object + } + + data class Note( + override val id: String, + val text: String, + val markdown: Boolean, + val elevation: Dp = 0.dp, + val conceal: Boolean = false, + val verify: ((() -> Unit) -> Unit)? = null, + ) : VaultViewItem { + companion object + } + + data class Spacer( + override val id: String, + val height: Dp, + ) : VaultViewItem { + companion object + } + + data class Label( + override val id: String, + val horizontalArrangement: Arrangement.Horizontal = Arrangement.Center, + val text: AnnotatedString, + val error: Boolean = false, + ) : VaultViewItem { + companion object + } + + data class Folder( + override val id: String, + val nodes: List, + val onClick: () -> Unit, + ) : VaultViewItem { + companion object; + + data class FolderNode( + val name: String, + val onClick: () -> Unit, + ) + } + + data class Organization( + override val id: String, + val title: String, + val onClick: () -> Unit, + ) : VaultViewItem { + companion object + } + + data class Collection( + override val id: String, + val title: String, + val onClick: () -> Unit, + ) : VaultViewItem { + companion object + } + + data class Uri( + override val id: String, + val title: AnnotatedString, + val text: String? = null, + val matchTypeTitle: String? = null, + val warningTitle: String? = null, + val icon: @Composable () -> Unit, + /** + * List of the callable actions appended + * to the item. + */ + val dropdown: List = emptyList(), + ) : VaultViewItem { + companion object + } + + data class Totp( + override val id: String, + val copy: CopyText, + val title: String, + val elevation: Dp, + val verify: ((() -> Unit) -> Unit)? = null, + val totp: TotpToken, + val localStateFlow: StateFlow, + ) : VaultViewItem { + companion object; + + @Immutable + data class LocalState( + val codes: PersistentList>, + val dropdown: PersistentList, + ) + } + + data class InactiveTotp( + override val id: String, + val info: TwoFaServiceInfo, + val onClick: () -> Unit, + ) : VaultViewItem { + companion object + } + + data class InactivePasskey( + override val id: String, + val info: PassKeyServiceInfo, + val onClick: () -> Unit, + ) : VaultViewItem { + companion object + } + + data class ReusedPassword( + override val id: String, + val count: Int, + val onClick: () -> Unit, + ) : VaultViewItem { + companion object + } + + data class Section( + override val id: String, + val text: String? = null, + ) : VaultViewItem { + companion object + } + + data class Button( + override val id: String, + val leading: (@Composable RowScope.() -> Unit)? = null, + val text: String, + val onClick: () -> Unit, + ) : VaultViewItem { + companion object + } + + data class Attachment( + override val id: String, + val item: AttachmentItem, + ) : VaultViewItem { + companion object + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/organization/OrganizationRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/organization/OrganizationRoute.kt new file mode 100644 index 00000000..264e9737 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/organization/OrganizationRoute.kt @@ -0,0 +1,19 @@ +package com.artemchep.keyguard.feature.home.vault.organization + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.DialogRoute + +data class OrganizationRoute( + val args: Args, +) : DialogRoute { + data class Args( + val organizationId: String, + ) + + @Composable + override fun Content() { + OrganizationScreen( + args = args, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/organization/OrganizationScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/organization/OrganizationScreen.kt new file mode 100644 index 00000000..f555ab6a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/organization/OrganizationScreen.kt @@ -0,0 +1,90 @@ +package com.artemchep.keyguard.feature.home.vault.organization + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.fold +import com.artemchep.keyguard.feature.dialog.Dialog +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun OrganizationScreen( + args: OrganizationRoute.Args, +) { + val state = organizationScreenState( + args = args, + ) + Dialog( + title = { + Text("Collection info") + }, + content = { + state.content.fold( + ifLoading = { + CircularProgressIndicator( + modifier = Modifier + .align(Alignment.Center) + .padding(16.dp), + ) + }, + ifOk = { contentOrNull -> + if (contentOrNull != null) { + OrganizationScreenContent( + content = contentOrNull, + ) + } + }, + ) + }, + actions = { + val updatedOnClose by rememberUpdatedState(state.onClose) + TextButton( + enabled = state.onClose != null, + onClick = { + updatedOnClose?.invoke() + }, + ) { + Text(stringResource(Res.strings.close)) + } + }, + ) +} + +@Composable +fun OrganizationScreenContent( + content: OrganizationState.Content, +) { + Column( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + ) { + ExpandedIfNotEmpty( + valueOrNull = Unit.takeIf { content.config.selfHost }, + ) { + Text( + modifier = Modifier + .padding(vertical = 2.dp), + text = "Self-hosted", + style = MaterialTheme.typography.bodySmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + ) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/organization/OrganizationState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/organization/OrganizationState.kt new file mode 100644 index 00000000..0b29b56b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/organization/OrganizationState.kt @@ -0,0 +1,24 @@ +package com.artemchep.keyguard.feature.home.vault.organization + +import androidx.compose.runtime.Immutable +import com.artemchep.keyguard.common.model.Loadable + +/** + * @author Artem Chepurnyi + */ +@Immutable +data class OrganizationState( + val content: Loadable = Loadable.Loading, + val onClose: (() -> Unit)? = null, +) { + @Immutable + data class Content( + val title: String, + val config: Config, + ) { + @Immutable + data class Config( + val selfHost: Boolean, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/organization/OrganizationStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/organization/OrganizationStateProducer.kt new file mode 100644 index 00000000..4d0d991d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/organization/OrganizationStateProducer.kt @@ -0,0 +1,66 @@ +package com.artemchep.keyguard.feature.home.vault.organization + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.usecase.GetOrganizations +import com.artemchep.keyguard.feature.navigation.state.navigatePopSelf +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.shareIn +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +@Composable +fun organizationScreenState( + args: OrganizationRoute.Args, +) = with(localDI().direct) { + organizationScreenState( + args = args, + getOrganizations = instance(), + ) +} + +@Composable +fun organizationScreenState( + args: OrganizationRoute.Args, + getOrganizations: GetOrganizations, +): OrganizationState = produceScreenState( + key = "organization", + initial = OrganizationState(), + args = arrayOf( + args, + getOrganizations, + ), +) { + fun onClose() { + navigatePopSelf() + } + + val organizationFlow = getOrganizations() + .map { organizations -> + organizations + .firstOrNull { it.id == args.organizationId } + } + .shareIn(screenScope, SharingStarted.Lazily, replay = 1) + val contentFlow = organizationFlow + .map { organization -> + organization + ?: return@map null + val config = OrganizationState.Content.Config( + selfHost = organization.selfHost, + ) + OrganizationState.Content( + title = organization.name, + config = config, + ) + } + contentFlow + .map { content -> + OrganizationState( + content = Loadable.Ok(content), + onClose = ::onClose, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/organizations/OrganizationsRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/organizations/OrganizationsRoute.kt new file mode 100644 index 00000000..caca4d83 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/organizations/OrganizationsRoute.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.feature.home.vault.organizations + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.feature.navigation.Route + +data class OrganizationsRoute( + val args: Args, +) : Route { + data class Args( + val accountId: AccountId, + ) + + @Composable + override fun Content() { + FoldersScreen( + args = args, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/organizations/OrganizationsScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/organizations/OrganizationsScreen.kt new file mode 100644 index 00000000..19432fec --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/organizations/OrganizationsScreen.kt @@ -0,0 +1,216 @@ +@file:OptIn(ExperimentalMaterial3Api::class) + +package com.artemchep.keyguard.feature.home.vault.organizations + +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.lazy.items +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Add +import androidx.compose.material3.Checkbox +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalAbsoluteTonalElevation +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.compositeOver +import androidx.compose.ui.graphics.luminance +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.feature.EmptyView +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.AhLayout +import com.artemchep.keyguard.ui.DefaultFab +import com.artemchep.keyguard.ui.DefaultSelection +import com.artemchep.keyguard.ui.ExpandedIfNotEmptyForRow +import com.artemchep.keyguard.ui.FabState +import com.artemchep.keyguard.ui.FlatDropdown +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.ScaffoldLazyColumn +import com.artemchep.keyguard.ui.animatedNumberText +import com.artemchep.keyguard.ui.skeleton.SkeletonItemPilled +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.theme.isDark +import com.artemchep.keyguard.ui.toolbar.LargeToolbar +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun FoldersScreen( + args: OrganizationsRoute.Args, +) { + val state = organizationsScreenState( + args = args, + ) + FoldersScreenContent( + state = state, + ) +} + +@OptIn(ExperimentalMaterial3Api::class, ExperimentalFoundationApi::class) +@Composable +fun FoldersScreenContent( + state: OrganizationsState, +) { + val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + ScaffoldLazyColumn( + modifier = Modifier + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + LargeToolbar( + title = { + Column { + Text( + text = stringResource(Res.strings.account), + style = MaterialTheme.typography.labelSmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + overflow = TextOverflow.Ellipsis, + maxLines = 2, + ) + Text( + text = stringResource(Res.strings.organizations), + style = MaterialTheme.typography.titleMedium, + overflow = TextOverflow.Ellipsis, + maxLines = 1, + ) + } + }, + navigationIcon = { + NavigationIcon() + }, + scrollBehavior = scrollBehavior, + ) + }, + floatingActionState = run { + val fabOnClick = state.onAdd + val fabState = if (fabOnClick != null) { + FabState( + onClick = fabOnClick, + model = null, + ) + } else { + null + } + rememberUpdatedState(newValue = fabState) + }, + floatingActionButton = { + DefaultFab( + icon = { + Icon( + imageVector = Icons.Outlined.Add, + contentDescription = null, + ) + }, + text = { + Text("New organization") + }, + ) + }, + bottomBar = { + DefaultSelection( + state = state.selection, + ) + }, + ) { + when (val contentState = state.content) { + is Loadable.Loading -> { + for (i in 1..3) { + item("skeleton.$i") { + SkeletonItemPilled() + } + } + } + + is Loadable.Ok -> { + val items = contentState.value.items + if (items.isEmpty()) { + item("empty") { + EmptyView( + text = { + Text( + text = stringResource(Res.strings.organizations_empty_label), + ) + }, + ) + } + } + + items( + items = items, + key = { it.key }, + ) { + OrganizationsScreenItem( + modifier = Modifier + .animateItemPlacement(), + item = it, + ) + } + } + } + } +} + +@Composable +private fun OrganizationsScreenItem( + modifier: Modifier = Modifier, + item: OrganizationsState.Content.Item, +) { + val backgroundColor = + if (item.selected) MaterialTheme.colorScheme.primaryContainer else MaterialTheme.colorScheme.surface + FlatDropdown( + modifier = modifier, + backgroundColor = backgroundColor, + dropdown = item.actions, + leading = { + val pillElevation = LocalAbsoluteTonalElevation.current + 8.dp + val pillColor = if (MaterialTheme.colorScheme.isDark) { + item.accentColors.dark + } else { + item.accentColors.light + } + val contentColor = if (pillColor.luminance() > 0.5f) { + Color.Black + } else { + Color.White + }.combineAlpha(0.8f).compositeOver(pillColor) + AhLayout( + modifier = modifier, + backgroundColor = pillColor, + contentColor = contentColor, + ) { + val text = animatedNumberText(item.ciphers) + Text(text) + } + }, + content = { + FlatItemTextContent( + title = { + Text(item.title) + }, + ) + }, + trailing = { + ExpandedIfNotEmptyForRow( + item.selected.takeIf { item.selecting }, + ) { selected -> + Checkbox( + checked = selected, + onCheckedChange = null, + ) + } + }, + onClick = item.onClick, + onLongClick = item.onLongClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/organizations/OrganizationsState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/organizations/OrganizationsState.kt new file mode 100644 index 00000000..c1f755bb --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/organizations/OrganizationsState.kt @@ -0,0 +1,38 @@ +package com.artemchep.keyguard.feature.home.vault.organizations + +import androidx.compose.runtime.Immutable +import androidx.compose.ui.graphics.vector.ImageVector +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.ui.ContextItem +import com.artemchep.keyguard.ui.Selection +import com.artemchep.keyguard.ui.icons.AccentColors +import kotlinx.collections.immutable.ImmutableList + +/** + * @author Artem Chepurnyi + */ +@Immutable +data class OrganizationsState( + val selection: Selection? = null, + val content: Loadable = Loadable.Loading, + val onAdd: (() -> Unit)? = null, +) { + @Immutable + data class Content( + val items: ImmutableList, + ) { + @Immutable + data class Item( + val key: String, + val title: String, + val ciphers: Int, + val selecting: Boolean, + val selected: Boolean, + val accentColors: AccentColors, + val icon: ImageVector? = null, + val actions: ImmutableList, + val onClick: (() -> Unit)?, + val onLongClick: (() -> Unit)?, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/organizations/OrganizationsStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/organizations/OrganizationsStateProducer.kt new file mode 100644 index 00000000..ea786fb0 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/organizations/OrganizationsStateProducer.kt @@ -0,0 +1,269 @@ +package com.artemchep.keyguard.feature.home.vault.organizations + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Info +import androidx.compose.runtime.Composable +import arrow.core.partially1 +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.model.DCollection +import com.artemchep.keyguard.common.model.DOrganization +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.usecase.GetCanWrite +import com.artemchep.keyguard.common.usecase.GetCiphers +import com.artemchep.keyguard.common.usecase.GetCollections +import com.artemchep.keyguard.common.usecase.GetOrganizations +import com.artemchep.keyguard.feature.home.vault.VaultRoute +import com.artemchep.keyguard.feature.home.vault.collections.CollectionsRoute +import com.artemchep.keyguard.feature.home.vault.organization.OrganizationRoute +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.Selection +import com.artemchep.keyguard.ui.buildContextItems +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.KeyguardCipher +import com.artemchep.keyguard.ui.icons.KeyguardCollection +import com.artemchep.keyguard.ui.selection.selectionHandle +import kotlinx.collections.immutable.toImmutableList +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.shareIn +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +@Composable +fun organizationsScreenState( + args: OrganizationsRoute.Args, +) = with(localDI().direct) { + organizationsScreenState( + args = args, + getOrganizations = instance(), + getCollections = instance(), + getCiphers = instance(), + getCanWrite = instance(), + ) +} + +@Composable +fun organizationsScreenState( + args: OrganizationsRoute.Args, + getOrganizations: GetOrganizations, + getCollections: GetCollections, + getCiphers: GetCiphers, + getCanWrite: GetCanWrite, +): OrganizationsState = produceScreenState( + key = "organizations", + initial = OrganizationsState(), + args = arrayOf( + args, + getOrganizations, + getCollections, + getCiphers, + getCanWrite, + ), +) { + data class OrganizationWithCiphers( + val organization: DOrganization, + val collections: List, + val ciphers: List, + ) + + val organizationsComparator = Comparator { a: DOrganization, b: DOrganization -> + a.name.compareTo(b.name, ignoreCase = true) + } + val organizationsFlow = getOrganizations() + .map { organizations -> + organizations + .filter { it.accountId == args.accountId.id } + .sortedWith(organizationsComparator) + } + .shareIn(screenScope, SharingStarted.Lazily, replay = 1) + val collectionsMapByOrganizationIdFlow = getCollections() + .map { collections -> + collections + .groupBy { it.organizationId } + } + .distinctUntilChanged() + val ciphersMapByOrganizationIdFlow = getCiphers() + .map { ciphers -> + ciphers + .filter { it.deletedDate == null } + .groupBy { it.organizationId } + } + .distinctUntilChanged() + val organizationsWithCiphersFlow = combine( + organizationsFlow, + collectionsMapByOrganizationIdFlow, + ciphersMapByOrganizationIdFlow, + ) { organizations, collectionsMapByOrganizationId, ciphersMapByOrganizationId -> + organizations + .map { organization -> + val collections = collectionsMapByOrganizationId[organization.id].orEmpty() + val ciphers = ciphersMapByOrganizationId[organization.id].orEmpty() + OrganizationWithCiphers( + organization = organization, + collections = collections, + ciphers = ciphers, + ) + } + } + + val selectionHandle = selectionHandle("selection") + val selectedOrganizationsWithCiphersFlow = organizationsWithCiphersFlow + .combine(selectionHandle.idsFlow) { organizationsWithCiphers, selectedOrganizationIds -> + selectedOrganizationIds + .mapNotNull { selectedOrganizationId -> + val organizationWithCiphers = organizationsWithCiphers + .firstOrNull { it.organization.id == selectedOrganizationId } + ?: return@mapNotNull null + selectedOrganizationId to organizationWithCiphers + } + .toMap() + } + .distinctUntilChanged() + .shareIn(screenScope, SharingStarted.Lazily, replay = 1) + + val selectionFlow = combine( + organizationsFlow + .map { organizations -> + organizations + .map { it.id } + .toSet() + } + .distinctUntilChanged(), + selectedOrganizationsWithCiphersFlow, + getCanWrite(), + ) { organizationsIds, selectedOrganizations, canWrite -> + if (selectedOrganizations.isEmpty()) { + return@combine null + } + + val selectedOrganizationIds = selectedOrganizations.keys + val actions = mutableListOf() + Selection( + count = selectedOrganizations.size, + actions = actions.toImmutableList(), + onSelectAll = selectionHandle::setSelection + .partially1(organizationsIds) + .takeIf { + organizationsIds.size > selectedOrganizationIds.size + }, + onClear = selectionHandle::clearSelection, + ) + } + val contentFlow = combine( + organizationsWithCiphersFlow, + selectedOrganizationsWithCiphersFlow, + getCanWrite(), + ) { organizationsWithCiphers, selectedOrganizationIds, canWrite -> + val selecting = selectedOrganizationIds.isNotEmpty() + val items = organizationsWithCiphers + .map { organizationWithCiphers -> + val organization = organizationWithCiphers.organization + val collections = organizationWithCiphers.collections + val ciphers = organizationWithCiphers.ciphers + val selected = organization.id in selectedOrganizationIds + + val actions = buildContextItems { + section { + // An option to view all the items that belong + // to this cipher. + if (ciphers.isNotEmpty()) { + this += FlatItemAction( + icon = Icons.Outlined.KeyguardCipher, + title = translate(Res.strings.items), + trailing = { + ChevronIcon() + }, + onClick = { + val route = VaultRoute.by( + translator = this@produceScreenState, + organization = organization, + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + } + // An option to view all the items that belong + // to this cipher. + if (collections.isNotEmpty()) { + this += FlatItemAction( + icon = Icons.Outlined.KeyguardCollection, + title = translate(Res.strings.collections), + trailing = { + ChevronIcon() + }, + onClick = { + val intent = NavigationIntent.NavigateToRoute( + CollectionsRoute( + args = CollectionsRoute.Args( + accountId = organization.accountId.let(::AccountId), + organizationId = organization.id, + ), + ), + ) + navigate(intent) + }, + ) + } + } + section { + this += FlatItemAction( + icon = Icons.Outlined.Info, + title = translate(Res.strings.info), + onClick = { + val intent = NavigationIntent.NavigateToRoute( + OrganizationRoute( + args = OrganizationRoute.Args( + organizationId = organization.id, + ), + ), + ) + navigate(intent) + }, + ) + } + } + OrganizationsState.Content.Item( + key = organization.id, + title = organization.name, + accentColors = organization.accentColor, + ciphers = organizationWithCiphers.ciphers.size, + selecting = selecting, + selected = selected, + actions = actions.toImmutableList(), + onClick = if (selecting) { + // lambda + selectionHandle::toggleSelection.partially1(organization.id) + } else { + null + }, + onLongClick = if (selecting) { + null + } else { + // lambda + selectionHandle::toggleSelection.partially1(organization.id) + }, + ) + } + .toImmutableList() + OrganizationsState.Content( + items = items, + ) + } + combine( + selectionFlow, + contentFlow, + ) { selection, content -> + OrganizationsState( + selection = selection, + content = Loadable.Ok(content), + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/AutofillWindow.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/AutofillWindow.kt new file mode 100644 index 00000000..af2a843a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/AutofillWindow.kt @@ -0,0 +1,243 @@ +package com.artemchep.keyguard.feature.home.vault.screen + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.History +import androidx.compose.material.icons.outlined.HistoryToggleOff +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.State +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.fold +import com.artemchep.keyguard.feature.home.vault.component.VaultListItem +import com.artemchep.keyguard.ui.LeMOdelBottomSheet +import com.artemchep.keyguard.ui.Placeholder +import com.artemchep.keyguard.ui.icons.IconBox +import com.artemchep.keyguard.ui.skeleton.SkeletonItem +import com.artemchep.keyguard.ui.skeleton.SkeletonSegmented +import com.artemchep.keyguard.ui.tabs.SegmentedButtonGroup +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.onEach + +@Composable +fun RecentsButton( + onValueChange: ((DSecret) -> Unit)? = null, +) { + var isAutofillWindowShowing by remember { + mutableStateOf(false) + } + + val enabled = onValueChange != null + if (!enabled) { + // We can not autofill disabled text fields and we can not + // tease user with it. + isAutofillWindowShowing = false + } + + IconButton( + enabled = onValueChange != null, + onClick = { + isAutofillWindowShowing = !isAutofillWindowShowing + }, + ) { + IconBox(main = Icons.Outlined.History) + } + // Inject the dropdown popup to the bottom of the + // content. + val onDismissRequest = { + isAutofillWindowShowing = false + } + LeMOdelBottomSheet( + visible = isAutofillWindowShowing, + onDismissRequest = onDismissRequest, + ) { contentPadding -> + Column( + modifier = Modifier, + ) { + RecentsWindow( + contentPadding = contentPadding, + onComplete = { password -> + if (onValueChange != null && password != null) { + onValueChange(password) + } + // Hide the dropdown window on click on one + // of the buttons. + onDismissRequest() + }, + ) + } + } +} + +@Composable +fun RecentsButtonRaw( + visible: State, + onDismissRequest: () -> Unit, + onValueChange: ((DSecret) -> Unit)? = null, +) { + LeMOdelBottomSheet( + visible = visible.value, + onDismissRequest = onDismissRequest, + ) { contentPadding -> + Column( + modifier = Modifier, + ) { + RecentsWindow( + contentPadding = contentPadding, + onComplete = { cipher -> + if (onValueChange != null) { + onValueChange(cipher) + } + // Hide the dropdown window on click on one + // of the buttons. + onDismissRequest() + }, + ) + } + } +} + +@Composable +fun ColumnScope.RecentsWindow( + contentPadding: PaddingValues, + onComplete: (DSecret) -> Unit, +) { + val state = vaultRecentScreenState( + highlightBackgroundColor = MaterialTheme.colorScheme.tertiaryContainer, + highlightContentColor = MaterialTheme.colorScheme.onTertiaryContainer, + ) + state.fold( + ifLoading = { + Column( + modifier = Modifier + .padding(contentPadding), + ) { + RecentsWindowSkeleton() + } + }, + ifOk = { state -> + RecentsWindowOk( + contentPadding = contentPadding, + state = state, + onComplete = onComplete, + ) + }, + ) +} + +@Composable +fun ColumnScope.RecentsWindowSkeleton( +) { + Spacer( + modifier = Modifier + .height(16.dp), + ) + SkeletonSegmented( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 16.dp), + ) + Spacer( + modifier = Modifier + .height(16.dp), + ) + repeat(3) { + SkeletonItem(avatar = true) + } +} + +@Composable +fun ColumnScope.RecentsWindowOk( + contentPadding: PaddingValues, + state: VaultRecentState, + onComplete: (DSecret) -> Unit, +) { + val selectCipherFlow = state.sideEffects.selectCipherFlow + LaunchedEffect(selectCipherFlow) { + selectCipherFlow + .onEach { cipher -> + onComplete(cipher) + } + .launchIn(this) + } + + val list by state.recent.collectAsState() + LazyColumn( + modifier = Modifier + .fillMaxWidth(), + contentPadding = contentPadding, + ) { + item("header") { + Spacer( + modifier = Modifier + .height(16.dp), + ) + + val selectedTab = state.selectedTab.collectAsState() + val updatedOnSelectTab by rememberUpdatedState(state.onSelectTab) + SegmentedButtonGroup( + tabState = selectedTab, + tabs = state.tabs, + onClick = { tab -> + updatedOnSelectTab?.invoke(tab) + }, + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 16.dp), + ) + + Spacer( + modifier = Modifier + .height(16.dp), + ) + } + + if (list.isEmpty()) { + item("header.empty") { + Column( + modifier = Modifier + .fillMaxWidth(), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Placeholder( + icon = Icons.Outlined.HistoryToggleOff, + title = "No recently opened items yet.", + ) + } + } + } + items(list, key = { it.id }) { item -> + VaultListItem( + modifier = Modifier, + item = item, + ) + } + + item("footer") { + Spacer( + modifier = Modifier + .height(16.dp), + ) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultCipherItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultCipherItem.kt new file mode 100644 index 00000000..547c54a4 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultCipherItem.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.feature.home.vault.screen + +import androidx.compose.runtime.Immutable +import arrow.optics.optics + +@Immutable +@optics +sealed interface VaultCipherItem { + companion object; + + val id: String + val title: String + + data class Password( + override val id: String, + override val title: String, + val username: String, + val password: String, + ) : VaultCipherItem +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultListFilter.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultListFilter.kt new file mode 100644 index 00000000..1b1ef18a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultListFilter.kt @@ -0,0 +1,827 @@ +package com.artemchep.keyguard.feature.home.vault.screen + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.CloudOff +import androidx.compose.material.icons.outlined.ErrorOutline +import androidx.compose.material.icons.outlined.FolderOff +import androidx.compose.material.icons.outlined.Key +import androidx.compose.material.icons.outlined.Lock +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.unit.dp +import arrow.core.partially1 +import arrow.core.widen +import com.artemchep.keyguard.common.model.DAccount +import com.artemchep.keyguard.common.model.DCollection +import com.artemchep.keyguard.common.model.DFilter +import com.artemchep.keyguard.common.model.DFolder +import com.artemchep.keyguard.common.model.DOrganization +import com.artemchep.keyguard.common.model.DProfile +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.iconImageVector +import com.artemchep.keyguard.common.model.titleH +import com.artemchep.keyguard.common.usecase.GetFolderTree +import com.artemchep.keyguard.feature.home.vault.component.rememberSecretAccentColor +import com.artemchep.keyguard.feature.home.vault.model.FilterItem +import com.artemchep.keyguard.feature.home.vault.search.filter.FilterHolder +import com.artemchep.keyguard.feature.navigation.state.PersistedStorage +import com.artemchep.keyguard.feature.navigation.state.RememberStateFlowScope +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.icons.AccentColors +import com.artemchep.keyguard.ui.icons.IconBox +import com.artemchep.keyguard.ui.icons.KeyguardAttachment +import com.artemchep.keyguard.ui.icons.KeyguardTwoFa +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.update +import kotlinx.serialization.encodeToString +import org.kodein.di.DirectDI +import org.kodein.di.instance + +private fun mapCiphers( + flow: Flow>, + getter: (T) -> R, +) where R : Any? = flow + .map { ciphers -> + ciphers + .asSequence() + .map(getter) + .toSet() + } + .distinctUntilChanged() + +data class CreateFilterResult( + val filterFlow: Flow, + val onToggle: (String, Set) -> Unit, + val onClear: () -> Unit, +) + +suspend fun RememberStateFlowScope.createFilter(): CreateFilterResult { + val emptyState = FilterHolder( + state = mapOf(), + ) + + val filterSink = mutablePersistedFlow( + key = "ciphers.filters", + serialize = { json, value -> + json.encodeToString(value) + }, + deserialize = { json, value -> + json.decodeFromString(value) + }, + ) { emptyState } + val onClear = { + filterSink.value = emptyState + } + val onToggle = { sectionId: String, filters: Set -> + filterSink.update { holder -> + val activeFilters = holder.state.getOrElse(sectionId) { emptySet() } + val pendingFilters = filters + .filter { it !in activeFilters } + + val newFilters = if (pendingFilters.isNotEmpty()) { + // Add the filters from a clicked item if + // not all of them are already active. + activeFilters + pendingFilters + } else { + activeFilters - filters + } + val newState = holder.state + (sectionId to newFilters) + holder.copy( + state = newState, + ) + } + } + return CreateFilterResult( + filterFlow = filterSink, + onToggle = onToggle, + onClear = onClear, + ) +} + +data class OurFilterResult( + val rev: Int = 0, + val items: List = emptyList(), + val onClear: (() -> Unit)? = null, +) + +data class FilterParams( + val deeplinkCustomFilter: String? = null, + val section: Section = Section(), +) { + data class Section( + val account: Boolean = true, + val type: Boolean = true, + val organization: Boolean = true, + val collection: Boolean = true, + val folder: Boolean = true, + val misc: Boolean = true, + ) +} + +suspend fun < + Output : Any, + Account, + Secret, + Folder, + Collection, + Organization, + > RememberStateFlowScope.ah( + directDI: DirectDI, + outputGetter: (Output) -> DSecret, + outputFlow: Flow>, + accountGetter: (Account) -> DAccount, + accountFlow: Flow>, + profileFlow: Flow>, + cipherGetter: (Secret) -> DSecret, + cipherFlow: Flow>, + folderGetter: (Folder) -> DFolder, + folderFlow: Flow>, + collectionGetter: (Collection) -> DCollection, + collectionFlow: Flow>, + organizationGetter: (Organization) -> DOrganization, + organizationFlow: Flow>, + input: CreateFilterResult, + params: FilterParams = FilterParams(), +): Flow { + val storage = kotlin.run { + val disk = loadDiskHandle("ciphers.filter") + PersistedStorage.InDisk(disk) + } + + val collapsedSectionIdsSink = + mutablePersistedFlow>("ciphers.sections", storage) { emptyList() } + + fun toggleSection(sectionId: String) { + collapsedSectionIdsSink.update { + val shouldAdd = sectionId !in it + if (shouldAdd) { + it + sectionId + } else { + it - sectionId + } + } + } + + val outputCipherFlow = outputFlow + .map { list -> + list + .map { outputGetter(it) } + } + + val filterTypesWithCiphers = mapCiphers(cipherFlow) { cipherGetter(it).type } + val filterFoldersWithCiphers = mapCiphers(cipherFlow) { cipherGetter(it).folderId } + val filterAccountsWithCiphers = mapCiphers(cipherFlow) { cipherGetter(it).accountId } + val filterOrganizationsWithCiphers = mapCiphers(cipherFlow) { cipherGetter(it).organizationId } + val filterCollectionsWithCiphers = cipherFlow + .map { ciphers -> + ciphers + .asSequence() + .flatMap { + val cipher = cipherGetter(it) + cipher.collectionIds + .takeUnless { it.isEmpty() } + ?: listOf(null) + } + .toSet() + } + .distinctUntilChanged() + + fun Flow>.filterSection( + enabled: Boolean, + ) = if (enabled) { + this + } else { + flowOf(emptyList()) + } + + fun Flow>.aaa( + sectionId: String, + sectionTitle: String, + collapse: Boolean = true, + ) = this + .combine(input.filterFlow) { items, filterHolder -> + items + .map { item -> + val shouldBeChecked = kotlin.run { + val activeFilters = filterHolder.state[item.filterSectionId].orEmpty() + item.filters + .all { itemFilter -> + itemFilter in activeFilters + } + } + if (shouldBeChecked == item.checked) { + return@map item + } + + item.copy(checked = shouldBeChecked) + } + } + .distinctUntilChanged() + .map { items -> + if (items.size <= 1 && collapse) { + // Do not show a single filter item. + return@map emptyList() + } + + items + .widen() + .toMutableList() + .apply { + val sectionItem = FilterItem.Section( + sectionId = sectionId, + text = sectionTitle, + onClick = { + toggleSection(sectionId) + }, + ) + add(0, sectionItem) + } + } + + val setOfNull = setOf(null) + + val customSectionId = "custom" + val typeSectionId = "type" + val accountSectionId = "account" + val folderSectionId = "folder" + val collectionSectionId = "collection" + val organizationSectionId = "organization" + val miscSectionId = "misc" + + fun createFilterAction( + sectionId: String, + filter: Set, + filterSectionId: String = sectionId, + title: String, + text: String? = null, + tint: AccentColors? = null, + icon: ImageVector? = null, + fill: Boolean = false, + indent: Int = 0, + ) = FilterItem.Item( + sectionId = sectionId, + filterSectionId = filterSectionId, + filters = filter, + leading = when { + icon != null -> { + // composable + { + IconBox(main = icon) + } + } + + tint != null -> { + // composable + { + Box( + modifier = Modifier + .padding(2.dp), + contentAlignment = Alignment.Center, + ) { + val color = rememberSecretAccentColor( + accentLight = tint.light, + accentDark = tint.dark, + ) + Box( + modifier = Modifier + .fillMaxSize() + .background(color, CircleShape), + ) + } + } + } + + else -> null + }, + title = title, + text = text, + onClick = input.onToggle + .partially1(filterSectionId) + .partially1(filter), + fill = fill, + indent = indent, + checked = false, + ) + + fun createAccountFilterAction( + accountIds: Set, + title: String, + text: String, + tint: AccentColors? = null, + icon: ImageVector? = null, + ) = createFilterAction( + sectionId = accountSectionId, + filter = accountIds + .asSequence() + .map { accountId -> + DFilter.ById( + id = accountId, + what = DFilter.ById.What.ACCOUNT, + ) + } + .toSet(), + title = title, + text = text, + tint = tint, + icon = icon, + ) + + fun createTypeFilterAction( + type: DSecret.Type, + sectionId: String = typeSectionId, + ) = createFilterAction( + sectionId = sectionId, + filterSectionId = typeSectionId, + filter = setOf( + DFilter.ByType(type), + ), + title = translate(type.titleH()), + icon = type.iconImageVector(), + ) + + fun createFolderFilterAction( + folderIds: Set, + title: String, + icon: ImageVector? = null, + fill: Boolean, + indent: Int, + ) = createFilterAction( + sectionId = folderSectionId, + filter = folderIds + .asSequence() + .map { folderId -> + DFilter.ById( + id = folderId, + what = DFilter.ById.What.FOLDER, + ) + } + .toSet(), + title = title, + icon = icon, + fill = fill, + indent = indent, + ) + + fun createCollectionFilterAction( + collectionIds: Set, + title: String, + icon: ImageVector? = null, + ) = createFilterAction( + sectionId = collectionSectionId, + filter = collectionIds + .asSequence() + .map { collectionId -> + DFilter.ById( + id = collectionId, + what = DFilter.ById.What.COLLECTION, + ) + } + .toSet(), + title = title, + icon = icon, + ) + + fun createOrganizationFilterAction( + organizationIds: Set, + title: String, + icon: ImageVector? = null, + ) = createFilterAction( + sectionId = organizationSectionId, + filter = organizationIds + .asSequence() + .map { organizationId -> + DFilter.ById( + id = organizationId, + what = DFilter.ById.What.ORGANIZATION, + ) + } + .toSet(), + title = title, + icon = icon, + ) + + val filterAccountListFlow = profileFlow + .map { profiles -> + profiles + .map { profile -> + createAccountFilterAction( + accountIds = setOf( + profile.accountId, + ), + title = profile.email, + text = profile.accountHost, + tint = profile.accentColor, + ) + } + } + .combine(filterAccountsWithCiphers) { items, accountIds -> + items + .filter { filterItem -> + filterItem.filters + .any { filter -> + val filterFixed = filter as DFilter.ById + require(filterFixed.what == DFilter.ById.What.ACCOUNT) + filterFixed.id in accountIds + } + } + } + .aaa( + sectionId = accountSectionId, + sectionTitle = translate(Res.strings.account), + ) + .filterSection(params.section.account) + + val filterTypesAll = listOf( + DSecret.Type.Login to createTypeFilterAction( + type = DSecret.Type.Login, + ), + DSecret.Type.Card to createTypeFilterAction( + type = DSecret.Type.Card, + ), + DSecret.Type.Identity to createTypeFilterAction( + type = DSecret.Type.Identity, + ), + DSecret.Type.SecureNote to createTypeFilterAction( + type = DSecret.Type.SecureNote, + ), + ) + + val filterTypeListFlow = filterTypesWithCiphers + .map { types -> + filterTypesAll.mapNotNull { (type, item) -> + item.takeIf { type in types } + } + } + .aaa( + sectionId = typeSectionId, + sectionTitle = translate(Res.strings.type), + ) + .filterSection(params.section.type) + + val folderTree: GetFolderTree = directDI.instance() + val filterFolderListFlow = folderFlow + .map { folders -> + val q = folders + .filter { folder -> + val model = folderGetter(folder) + !model.deleted + } + .groupBy { folder -> + val model = folderGetter(folder) + model.name + } + val w = q + .map { + folderTree.invoke( + lens = { it.key }, + allFolders = q.entries, + folder = it, + ) + } + val p = w + .asSequence() + .flatMap { + it.hierarchy + .dropLast(1) + } + .map { it.folder.key } + .toSet() + + w + .asSequence() + .sortedBy { it.folder.key } + .map { entry -> + val name = entry.folder.key // entry.hierarchy.last().name + val folders = entry.folder.value + createFolderFilterAction( + folderIds = folders + .asSequence() + .map(folderGetter) + .map { it.id } + .toSet(), + title = name, + fill = false,// entry.folder.key in p || entry.hierarchy.size > 1, + indent = 0, // entry.hierarchy.lastIndex, + ) + } + .toList() + + createFolderFilterAction( + folderIds = setOfNull, + title = translate(Res.strings.folder_none), + icon = Icons.Outlined.FolderOff, + fill = false, + indent = 0, + ) + } + .combine(filterFoldersWithCiphers) { items, folderIds -> + items + .filter { filterItem -> + filterItem.filters + .any { filter -> + val filterFixed = filter as DFilter.ById + require(filterFixed.what == DFilter.ById.What.FOLDER) + filterFixed.id in folderIds + } + } + } + .aaa( + sectionId = folderSectionId, + sectionTitle = translate(Res.strings.folder), + ) + .filterSection(params.section.folder) + + val filterCollectionListFlow = collectionFlow + .map { collections -> + collections + .groupBy { collection -> + val model = collectionGetter(collection) + model.name + } + .asSequence() + .map { (name, collections) -> + createCollectionFilterAction( + collectionIds = collections + .asSequence() + .map(collectionGetter) + .map { it.id } + .toSet(), + title = name, + ) + } + .sortedBy { it.title } + .toList() + + createCollectionFilterAction( + collectionIds = setOfNull, + title = translate(Res.strings.collection_none), + ) + } + .combine(filterCollectionsWithCiphers) { items, collectionIds -> + items + .filter { filterItem -> + filterItem.filters + .any { filter -> + val filterFixed = filter as DFilter.ById + require(filterFixed.what == DFilter.ById.What.COLLECTION) + filterFixed.id in collectionIds + } + } + } + .aaa( + sectionId = collectionSectionId, + sectionTitle = translate(Res.strings.collection), + ) + .filterSection(params.section.collection) + + val filterOrganizationListFlow = organizationFlow + .map { organizations -> + organizations + .groupBy { organization -> + val model = organizationGetter(organization) + model.name + } + .asSequence() + .map { (name, organizations) -> + createOrganizationFilterAction( + organizationIds = organizations + .asSequence() + .map(organizationGetter) + .map { it.id } + .toSet(), + title = name, + ) + } + .sortedBy { it.title } + .toList() + + createOrganizationFilterAction( + organizationIds = setOfNull, + title = translate(Res.strings.organization_none), + ) + } + .combine(filterOrganizationsWithCiphers) { items, organizationIds -> + items + .filter { filterItem -> + filterItem.filters + .any { filter -> + val filterFixed = filter as DFilter.ById + require(filterFixed.what == DFilter.ById.What.ORGANIZATION) + filterFixed.id in organizationIds + } + } + } + .aaa( + sectionId = organizationSectionId, + sectionTitle = translate(Res.strings.organization), + ) + .filterSection(params.section.organization) + + val filterMiscAll = listOf( + createFilterAction( + sectionId = miscSectionId, + filter = setOf( + DFilter.ByOtp, + ), + filterSectionId = "$miscSectionId.otp", + title = translate(Res.strings.one_time_password), + icon = Icons.Outlined.KeyguardTwoFa, + ), + createFilterAction( + sectionId = miscSectionId, + filter = setOf( + DFilter.ByAttachments, + ), + filterSectionId = "$miscSectionId.attachments", + title = translate(Res.strings.attachments), + icon = Icons.Outlined.KeyguardAttachment, + ), + createFilterAction( + sectionId = miscSectionId, + filter = setOf( + DFilter.ByPasskeys, + ), + filterSectionId = "$miscSectionId.passkeys", + title = translate(Res.strings.passkeys), + icon = Icons.Outlined.Key, + ), + createFilterAction( + sectionId = miscSectionId, + filter = setOf( + DFilter.ByReprompt(reprompt = true), + ), + filterSectionId = "$miscSectionId.reprompt", + title = "Auth re-prompt", + icon = Icons.Outlined.Lock, + ), + createFilterAction( + sectionId = miscSectionId, + filter = setOf( + DFilter.BySync(synced = false), + ), + filterSectionId = "$miscSectionId.sync", + title = "Un-synced", + icon = Icons.Outlined.CloudOff, + ), + createFilterAction( + sectionId = miscSectionId, + filter = setOf( + DFilter.ByError(error = true), + ), + filterSectionId = "$miscSectionId.error", + title = "Failed", + icon = Icons.Outlined.ErrorOutline, + ), + ) + + val filterMiscListFlow = flowOf(Unit) + .map { + filterMiscAll + } + .aaa( + sectionId = miscSectionId, + sectionTitle = translate(Res.strings.misc), + collapse = false, + ) + .filterSection(params.section.misc) + + val filterCustomTypesAll = listOf( + DSecret.Type.Login to createTypeFilterAction( + sectionId = customSectionId, + type = DSecret.Type.Login, + ), + DSecret.Type.Card to createTypeFilterAction( + sectionId = customSectionId, + type = DSecret.Type.Card, + ), + DSecret.Type.Identity to createTypeFilterAction( + sectionId = customSectionId, + type = DSecret.Type.Identity, + ), + DSecret.Type.SecureNote to createTypeFilterAction( + sectionId = customSectionId, + type = DSecret.Type.SecureNote, + ), + ) + + val filterCustomAll = listOf( + createFilterAction( + sectionId = customSectionId, + filter = setOf( + DFilter.ByOtp, + ), + filterSectionId = "$miscSectionId.otp", + title = translate(Res.strings.one_time_password), + icon = Icons.Outlined.KeyguardTwoFa, + ), + ) + + if (params.deeplinkCustomFilter == "2fa") { + input.onToggle( + "$miscSectionId.otp", + setOf( + DFilter.ByOtp, + ), + ) + } + + val filterCustomListFlow = flowOf(Unit) + .map { + filterCustomTypesAll.map { it.second } + filterCustomAll + } + .aaa( + sectionId = customSectionId, + sectionTitle = translate(Res.strings.custom), + collapse = false, + ) + .filterSection(params.section.misc) + + return combine( + filterCustomListFlow, + filterAccountListFlow, + filterOrganizationListFlow, + filterTypeListFlow, + filterFolderListFlow, + filterCollectionListFlow, + filterMiscListFlow, + ) { a -> a.flatMap { it } } + .combine(collapsedSectionIdsSink) { items, collapsedSectionIds -> + var skippedSectionId: String? = null + + val out = mutableListOf() + items.forEach { item -> + if (item is FilterItem.Section) { + val collapsed = item.sectionId in collapsedSectionIds + skippedSectionId = item.sectionId.takeIf { collapsed } + + out += if (collapsed) { + item.copy(expanded = false) + } else { + item + } + } else { + if (item.sectionId != skippedSectionId) { + out += item + } + } + } + out + } + .combine(outputCipherFlow) { items, outputCiphers -> + val checkedSectionIds = items + .asSequence() + .mapNotNull { + when (it) { + is FilterItem.Section -> null + is FilterItem.Item -> it.takeIf { it.checked } + ?.sectionId + } + } + .toSet() + + val out = mutableListOf() + items.forEach { item -> + when (item) { + is FilterItem.Section -> out += item + is FilterItem.Item -> { + val fastEnabled = item.checked || + // If one of the items in a section is enabled, then + // enable the whole section. + item.sectionId in checkedSectionIds + val enabled = fastEnabled || kotlin.run { + item.filters + .any { filter -> + val filterPredicate = filter.prepare(directDI, outputCiphers) + outputCiphers.any(filterPredicate) + } + } + + if (enabled) { + out += item + return@forEach + } + + out += item.copy(onClick = null) + } + } + } + out + } + .combine(input.filterFlow) { a, b -> + OurFilterResult( + rev = b.id, + items = a, + onClear = input.onClear.takeIf { b.id != 0 }, + ) + } + .flowOn(Dispatchers.Default) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultListItemMapping.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultListItemMapping.kt new file mode 100644 index 00000000..74be1bb4 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultListItemMapping.kt @@ -0,0 +1,325 @@ +package com.artemchep.keyguard.feature.home.vault.screen + +import androidx.compose.foundation.layout.Row +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.ContentCopy +import androidx.compose.ui.text.AnnotatedString +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.effectTap +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.io.toIO +import com.artemchep.keyguard.common.model.DOrganization +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.iconImageVector +import com.artemchep.keyguard.common.model.login +import com.artemchep.keyguard.common.model.password +import com.artemchep.keyguard.common.model.passwordRevisionDate +import com.artemchep.keyguard.common.model.passwordStrength +import com.artemchep.keyguard.common.usecase.CopyText +import com.artemchep.keyguard.common.usecase.GetTotpCode +import com.artemchep.keyguard.feature.favicon.AppIconUrl +import com.artemchep.keyguard.feature.home.vault.component.VaultViewTotpBadge +import com.artemchep.keyguard.feature.home.vault.component.obscureCardNumber +import com.artemchep.keyguard.feature.home.vault.model.VaultItem2 +import com.artemchep.keyguard.feature.home.vault.model.VaultItemIcon +import com.artemchep.keyguard.feature.navigation.state.TranslatorScope +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.concealedText +import kotlinx.collections.immutable.toImmutableList +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.flow.StateFlow + +suspend fun DSecret.toVaultListItem( + copy: CopyText, + translator: TranslatorScope, + getTotpCode: GetTotpCode, + appIcons: Boolean, + websiteIcons: Boolean, + concealFields: Boolean, + groupId: String? = null, + organizationsById: Map, + onClick: (List) -> VaultItem2.Item.Action, + onClickPasskey: suspend (DSecret.Login.Fido2Credentials) -> (() -> Unit)?, + localStateFlow: StateFlow, +): VaultItem2.Item { + val cf = concealFields || reprompt + val d = when (type) { + DSecret.Type.Login -> + createLogin( + copy = copy, + translator = translator, + getTotpCode = getTotpCode, + concealFields = cf, + ) + + DSecret.Type.Card -> + createCard( + copy = copy, + translator = translator, + concealFields = cf, + ) + + DSecret.Type.Identity -> + createIdentity( + copy = copy, + translator = translator, + concealFields = cf, + ) + + DSecret.Type.SecureNote -> + createNote( + copy = copy, + translator = translator, + concealFields = cf, + ) + + else -> createUnknown() + } + + val icon = toVaultItemIcon( + appIcons = appIcons, + websiteIcons = websiteIcons, + ) + return VaultItem2.Item( + id = id, + source = this, + accentLight = accentLight, + accentDark = accentDark, + accountId = accountId, + groupId = groupId, + revisionDate = revisionDate, + createdDate = createdDate, + feature = when { + organizationId != null -> { + val org = organizationsById[organizationId] + if (org != null) { + VaultItem2.Item.Feature.Organization( + name = org.name, + accentColors = org.accentColor, + ) + } else { + VaultItem2.Item.Feature.None + } + } + + login?.totp?.token != null -> { + val token = login.totp.token + VaultItem2.Item.Feature.Totp(token) + } + + else -> VaultItem2.Item.Feature.None + }, + copyText = copy, + token = login?.totp?.token, + passkeys = login?.fido2Credentials.orEmpty() + .mapNotNull { + val onClick = onClickPasskey(it) + ?: return@mapNotNull null + VaultItem2.Item.Passkey( + source = it, + onClick = onClick, + ) + } + .toImmutableList(), + password = DSecret.login.password.getOrNull(this), + passwordRevisionDate = DSecret.login.passwordRevisionDate.getOrNull(this), + score = DSecret.login.passwordStrength.getOrNull(this), + icon = icon, + type = type.name, + folderId = folderId, + favourite = favorite, + attachments = attachments.isNotEmpty(), + title = AnnotatedString(name.trim()), + text = d.text.trim(), + action = onClick(d.actions), + localStateFlow = localStateFlow, + ) +} + +fun DSecret.toVaultItemIcon( + appIcons: Boolean, + websiteIcons: Boolean, +): VaultItemIcon = kotlin.run { + val vectorIconSrc = type.iconImageVector() + val cardIcon = run { + val cardIcon = card + ?.creditCardType + ?.icon + if (cardIcon != null) { + VaultItemIcon.ImageIcon( + imageRes = cardIcon, + ) + } else { + null + } + } + val textIcon = if (name.isNotBlank()) { + VaultItemIcon.TextIcon( + text = name.take(2), + ) + } else { + null + } + val vectorIcon = VaultItemIcon.VectorIcon( + imageVector = vectorIconSrc, + ) + val appIcon = if (appIcons) { + uris + .firstOrNull { uri -> uri.uri.startsWith("androidapp://") } + ?.let { uri -> + val packageName = uri.uri.substringAfter("androidapp://") + VaultItemIcon.AppIcon( + data = AppIconUrl(packageName), + fallback = vectorIcon, + ) + } + } else { + null + } + val websiteIcon = if (websiteIcons) { + favicon + ?.let { url -> + VaultItemIcon.WebsiteIcon( + data = url, + fallback = appIcon ?: vectorIcon, + ) + } + } else { + null + } + websiteIcon ?: appIcon ?: cardIcon ?: textIcon ?: vectorIcon +} + +private data class TypeSpecific( + val text: String, + val actions: List = emptyList(), +) + +private suspend fun DSecret.createLogin( + copy: CopyText, + translator: TranslatorScope, + getTotpCode: GetTotpCode, + concealFields: Boolean, +): TypeSpecific { + val actions = listOfNotNull( + copy.FlatItemAction( + title = translator.translate(Res.strings.copy_username), + value = login?.username, + ), + copy.FlatItemAction( + title = translator.translate(Res.strings.copy_password), + value = login?.password, + hidden = concealFields, + ), + login?.totp?.run { + FlatItemAction( + icon = Icons.Outlined.ContentCopy, + title = translator.translate(Res.strings.copy_otp_code), + trailing = { + Row { + VaultViewTotpBadge( + totpToken = login.totp.token, + ) + } + }, + onClick = { + getTotpCode(token) + .toIO() + .effectTap { code -> + copy.copy(code.code, false) + } + .attempt() + .launchIn(GlobalScope) + }, + ) + }, + ) + return TypeSpecific( + text = login?.username + ?: login?.fido2Credentials + ?.firstNotNullOfOrNull { it.userDisplayName } + ?: "", + actions = actions, + ) +} + +private fun DSecret.createCard( + copy: CopyText, + translator: TranslatorScope, + concealFields: Boolean, +): TypeSpecific { + val actions = listOfNotNull( + copy.FlatItemAction( + title = translator.translate(Res.strings.copy_card_number), + value = card?.number, + hidden = concealFields, + ), + copy.FlatItemAction( + title = translator.translate(Res.strings.copy_cvv_code), + value = card?.code, + hidden = concealFields, + ), + ) + val text = kotlin.run { + val textRaw = card?.number.orEmpty() + obscureCardNumber(textRaw) + } + return TypeSpecific( + text = text, + actions = actions, + ) +} + +private fun DSecret.createIdentity( + copy: CopyText, + translator: TranslatorScope, + concealFields: Boolean, +): TypeSpecific { + val actions = listOfNotNull( + copy.FlatItemAction( + title = translator.translate(Res.strings.copy_phone_number), + value = identity?.phone, + ), + copy.FlatItemAction( + title = translator.translate(Res.strings.copy_email), + value = identity?.email, + ), + copy.FlatItemAction( + title = translator.translate(Res.strings.copy_passport_number), + value = identity?.passportNumber, + hidden = concealFields, + ), + copy.FlatItemAction( + title = translator.translate(Res.strings.copy_license_number), + value = identity?.licenseNumber, + hidden = concealFields, + ), + ) + val text = identity?.firstName.orEmpty() + return TypeSpecific( + text = text, + actions = actions, + ) +} + +private fun DSecret.createNote( + copy: CopyText, + translator: TranslatorScope, + concealFields: Boolean, +): TypeSpecific { + val text = if (reprompt) { + concealedText() + } else { + notes + } + return TypeSpecific( + text = text, + ) +} + +private fun DSecret.createUnknown(): TypeSpecific { + return TypeSpecific( + text = "", + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultListMode.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultListMode.kt new file mode 100644 index 00000000..d652d1c0 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultListMode.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.feature.home.vault.screen + +sealed interface VaultListMode { + data object Normal : VaultListMode + + data object Find : VaultListMode +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultListRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultListRoute.kt new file mode 100644 index 00000000..0ecdd710 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultListRoute.kt @@ -0,0 +1,16 @@ +package com.artemchep.keyguard.feature.home.vault.screen + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.home.vault.VaultRoute +import com.artemchep.keyguard.feature.navigation.Route + +data class VaultListRoute( + val args: VaultRoute.Args, +) : Route { + @Composable + override fun Content() { + VaultListScreen( + args = args, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultListScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultListScreen.kt new file mode 100644 index 00000000..1b5f6530 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultListScreen.kt @@ -0,0 +1,646 @@ +package com.artemchep.keyguard.feature.home.vault.screen + +import androidx.compose.animation.ExperimentalAnimationApi +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.FlowRow +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.heightIn +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.widthIn +import androidx.compose.foundation.lazy.LazyListState +import androidx.compose.foundation.lazy.items +import androidx.compose.material.ExperimentalMaterialApi +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Add +import androidx.compose.material.icons.outlined.History +import androidx.compose.material.icons.outlined.PersonAdd +import androidx.compose.material.pullrefresh.pullRefresh +import androidx.compose.material.pullrefresh.rememberPullRefreshState +import androidx.compose.material3.DropdownMenu +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.SideEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.runtime.snapshotFlow +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.AppMode +import com.artemchep.keyguard.LocalAppMode +import com.artemchep.keyguard.feature.home.vault.VaultRoute +import com.artemchep.keyguard.feature.home.vault.component.SearchTextField +import com.artemchep.keyguard.feature.home.vault.component.VaultListItem +import com.artemchep.keyguard.feature.home.vault.model.FilterItem +import com.artemchep.keyguard.feature.home.vault.model.VaultItem2 +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.LocalNavigationEntry +import com.artemchep.keyguard.feature.navigation.LocalNavigationRouter +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.search.filter.FilterButton +import com.artemchep.keyguard.feature.search.filter.FilterScreen +import com.artemchep.keyguard.feature.search.filter.component.FilterItemComposable +import com.artemchep.keyguard.feature.search.sort.SortButton +import com.artemchep.keyguard.feature.twopane.TwoPaneScreen +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.CollectedEffect +import com.artemchep.keyguard.ui.Compose +import com.artemchep.keyguard.ui.DefaultFab +import com.artemchep.keyguard.ui.DefaultProgressBar +import com.artemchep.keyguard.ui.DefaultSelection +import com.artemchep.keyguard.ui.DropdownMenuItemFlat +import com.artemchep.keyguard.ui.DropdownMinWidth +import com.artemchep.keyguard.ui.DropdownScopeImpl +import com.artemchep.keyguard.ui.FabState +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.OptionsButton +import com.artemchep.keyguard.ui.ScaffoldLazyColumn +import com.artemchep.keyguard.ui.SmallFab +import com.artemchep.keyguard.ui.focus.FocusRequester2 +import com.artemchep.keyguard.ui.focus.focusRequester2 +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.IconBox +import com.artemchep.keyguard.ui.pulltosearch.PullToSearch +import com.artemchep.keyguard.ui.skeleton.SkeletonFilter +import com.artemchep.keyguard.ui.skeleton.SkeletonItem +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.toolbar.CustomToolbar +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.filter +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.withIndex + +@Composable +fun VaultListScreen( + args: VaultRoute.Args, +) { + val state = vaultListScreenState( + args = args, + highlightBackgroundColor = MaterialTheme.colorScheme.tertiaryContainer, + highlightContentColor = MaterialTheme.colorScheme.onTertiaryContainer, + mode = LocalAppMode.current, + ) + val old = remember { + mutableStateOf(null) + } + SideEffect { + old.value = state + } + + val wtf = (state.content as? VaultListState.Content.Items)?.onSelected + Compose { + val screenId = LocalNavigationEntry.current.id + val screenStack = LocalNavigationRouter.current.value + val childBackStackFlow = remember( + screenId, + screenStack, + ) { + snapshotFlow { + val backStack = screenStack + .indexOfFirst { it.id == screenId } + // take the next screen + .inc() + // check if in range + .takeIf { it in 1 until screenStack.size } + ?.let { index -> + screenStack.subList( + fromIndex = index, + toIndex = screenStack.size, + ) + } + .orEmpty() + backStack + } + } + LaunchedEffect(wtf, childBackStackFlow) { + childBackStackFlow.collect { backStack -> + val firstRoute = backStack.firstOrNull()?.route as? VaultViewRoute? + wtf?.invoke(firstRoute?.itemId) + } + } + } + + val xd by rememberUpdatedState(LocalNavigationEntry.current.id) + val controller by rememberUpdatedState(LocalNavigationController.current) + CollectedEffect(state.sideEffects.showBiometricPromptFlow) { + val route = VaultViewRoute( + itemId = it.id, + accountId = it.accountId, + ) + val intent = NavigationIntent.Composite( + listOf( + NavigationIntent.PopById(xd), + NavigationIntent.NavigateToRoute(route), + ), + ) + controller.queue(intent) +// bs.push(route) + } + + val focusRequester = remember { FocusRequester2() } + TwoPaneScreen( + detail = { modifier -> + VaultListFilterScreen( + modifier = modifier, + state = state, + ) + }, + ) { modifier, detailIsVisible -> + VaultHomeScreenListPane( + modifier = modifier, + state = state, + focusRequester = focusRequester, + title = args.appBar?.title, + subtitle = args.appBar?.subtitle, + fab = args.canAddSecrets, + showFilter = !detailIsVisible, + preselect = args.preselect, + ) + } + + LaunchedEffect(state.showKeyboard) { + if (state.showKeyboard) { + delay(200L) // FIXME: Delete this! + focusRequester.requestFocus() + } + } +} + +@Composable +private fun VaultListFilterScreen( + modifier: Modifier = Modifier, + state: VaultListState, +) { + val count = (state.content as? VaultListState.Content.Items)?.count + val filters = state.filters + val clearFilters = state.clearFilters + FilterScreen( + modifier = modifier, + count = count, + items = filters, + onClear = clearFilters, + actions = { + VaultListSortButton( + state = state, + ) + OptionsButton( + actions = state.actions, + ) + }, + ) +} + +@Composable +private fun VaultListFilterButton( + modifier: Modifier = Modifier, + state: VaultListState, +) { + val count = (state.content as? VaultListState.Content.Items)?.count + val filters = state.filters + val clearFilters = state.clearFilters + FilterButton( + modifier = modifier, + count = count, + items = filters, + onClear = clearFilters, + ) +} + +@Composable +private fun VaultListSortButton( + modifier: Modifier = Modifier, + state: VaultListState, +) { + val filters = state.sort + val clearFilters = state.clearSort + SortButton( + modifier = modifier, + items = filters, + onClear = clearFilters, + ) +} + +@OptIn( + ExperimentalMaterial3Api::class, + ExperimentalFoundationApi::class, + ExperimentalLayoutApi::class, + ExperimentalAnimationApi::class, + ExperimentalMaterialApi::class, +) +@Composable +fun VaultHomeScreenListPane( + modifier: Modifier, + state: VaultListState, + focusRequester: FocusRequester2, + title: String?, + subtitle: String?, + fab: Boolean, + showFilter: Boolean, + preselect: Boolean, +) { + val itemsState = (state.content as? VaultListState.Content.Items) + + val listRevision = itemsState?.revision + val listState = remember { + LazyListState( + firstVisibleItemIndex = listRevision?.firstVisibleItemIndex?.value ?: 0, + firstVisibleItemScrollOffset = listRevision?.firstVisibleItemScrollOffset?.value ?: 0, + ) + } + + LaunchedEffect(listRevision?.id) { + // Scroll to the start of the list if the list has + // no real content. + if (listRevision == null) { + listState.scrollToItem(0, 0) + return@LaunchedEffect + } + + // TODO: How do you wait till the layout state start to represent + // the actual data? + snapshotFlow { listState.layoutInfo.totalItemsCount } + .withIndex() + .filter { + it.index > 0 || it.value == itemsState.list.size + } + .first() + + val index = listRevision.firstVisibleItemIndex.value + val offset = listRevision.firstVisibleItemScrollOffset.value + listState.scrollToItem(index, offset) + } + + LaunchedEffect(listRevision?.onScroll) { + if (listRevision == null) return@LaunchedEffect // do nothing, just cancel old job + + val visibleItemScrollStateFlow = snapshotFlow { + val index = listState.firstVisibleItemIndex + val offset = listState.firstVisibleItemScrollOffset + index to offset + } + visibleItemScrollStateFlow.collect { (index, offset) -> + // TODO: How do you wait till the layout state start to represent + // the actual data? + if (listState.layoutInfo.totalItemsCount != itemsState.list.size) { + return@collect + } + + listRevision.onScroll( + index, + offset, + ) + } + } + + val dp = remember { + mutableStateOf(false) + } + val rp = remember { + mutableStateOf(false) + } + if (state.primaryActions.isEmpty()) { + dp.value = false + } + val updatedSelectCipher by rememberUpdatedState(newValue = state.selectCipher) + + val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior() + val pullRefreshState = rememberPullRefreshState( + refreshing = false, + onRefresh = { + focusRequester.requestFocus() + }, + ) + ScaffoldLazyColumn( + modifier = modifier + .pullRefresh(pullRefreshState) + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + CustomToolbar( + scrollBehavior = scrollBehavior, + ) { + Column { + val hasTitle = title != null || subtitle != null + if (hasTitle) { + Row( + modifier = Modifier + .heightIn(min = 64.dp), + verticalAlignment = Alignment.CenterVertically, + ) { + Spacer(Modifier.width(4.dp)) + NavigationIcon() + Spacer(Modifier.width(4.dp)) + Column( + modifier = Modifier + .weight(1f) + .align(Alignment.CenterVertically), + ) { + if (subtitle != null) { + Text( + text = subtitle, + style = MaterialTheme.typography.labelSmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + overflow = TextOverflow.Ellipsis, + maxLines = 2, + ) + } + if (title != null) { + Text( + text = title, + style = MaterialTheme.typography.titleMedium, + overflow = TextOverflow.Ellipsis, + maxLines = 1, + ) + } + } + if (showFilter) { + Spacer(Modifier.width(4.dp)) + VaultListFilterButton( + state = state, + ) + VaultListSortButton( + state = state, + ) + OptionsButton( + actions = state.actions, + ) + } + Spacer(Modifier.width(4.dp)) + } + } else { + } + SearchTextField( + modifier = Modifier + .focusRequester2(focusRequester), + text = state.query.state.value, + placeholder = stringResource(Res.strings.vault_main_search_placeholder), + searchIcon = !hasTitle, + leading = { + if (!hasTitle) { + NavigationIcon() + } + }, + trailing = { + Row( + verticalAlignment = Alignment.CenterVertically, + ) { + if (!hasTitle && showFilter) { + VaultListFilterButton( + state = state, + ) + VaultListSortButton( + state = state, + ) + OptionsButton( + actions = state.actions, + ) + } + } + }, + onTextChange = state.query.onChange, + onGoClick = null, + ) + } + } + }, + floatingActionState = run { + val fabVisible = fab && state.primaryActions.isNotEmpty() + val fabState = if (fabVisible) { + // If there's only one primary action, then there's no + // need to show the dropdown. + val onClick = run { + val action = + state.primaryActions.firstNotNullOfOrNull { it as? FlatItemAction } + action?.onClick + ?.takeIf { + val count = state.primaryActions + .count { it is FlatItemAction } + count == 1 + } + } ?: + // lambda + { + dp.value = true + } + FabState( + onClick = onClick, + model = null, + ) + } else { + null + } + rememberUpdatedState(newValue = fabState) + }, + floatingActionButton = { + Column( + horizontalAlignment = Alignment.End, + verticalArrangement = Arrangement.spacedBy(16.dp), + ) { + SmallFab( + onClick = { + rp.value = true + }, + icon = { + IconBox(main = Icons.Outlined.History) + + RecentsButtonRaw( + visible = rp, + onDismissRequest = { + rp.value = false + }, + onValueChange = { cipher -> + updatedSelectCipher?.invoke(cipher) + }, + ) + }, + ) + DefaultFab( + icon = { + IconBox(main = Icons.Outlined.Add) + + // Inject the dropdown popup to the bottom of the + // content. + val onDismissRequest = remember(dp) { + // lambda + { + dp.value = false + } + } + DropdownMenu( + modifier = Modifier + .widthIn(min = DropdownMinWidth), + expanded = dp.value, + onDismissRequest = onDismissRequest, + ) { + val scope = DropdownScopeImpl(this, onDismissRequest = onDismissRequest) + with(scope) { + state.primaryActions.forEachIndexed { index, action -> + DropdownMenuItemFlat( + action = action, + ) + } + } + } + }, + text = { + Text( + text = stringResource(Res.strings.vault_main_new_item_button), + ) + }, + ) + } + }, + pullRefreshState = pullRefreshState, + bottomBar = { + val selectionOrNull = (state.content as? VaultListState.Content.Items)?.selection + DefaultSelection( + state = selectionOrNull, + ) + }, + overlay = { + DefaultProgressBar( + modifier = Modifier, + visible = state.content is VaultListState.Content.Items && + state.revision != state.content.revision.id, + ) + + PullToSearch( + modifier = Modifier + .padding(contentPadding.value), + pullRefreshState = pullRefreshState, + ) + }, + listState = listState, + ) { + when (state.content) { + is VaultListState.Content.Skeleton -> { + item { + Column( + modifier = Modifier, + ) { + FlowRow( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 8.dp), + horizontalArrangement = Arrangement.spacedBy(8.dp), + verticalArrangement = Arrangement.spacedBy(8.dp), + ) { + for (i in 1..5) { + SkeletonFilter() + } + } + Spacer(modifier = Modifier.height(16.dp)) + } + } + // Show a bunch of skeleton items, so it makes an impression of a + // fully loaded screen. + for (i in 0..3) { + item(i) { + SkeletonItem( + avatar = true, + ) + } + } + } + + else -> { + if (state.content is VaultListState.Content.AddAccount) { + item("header.add_account") { + FlatItem( + elevation = 1.dp, + title = { + Text( + text = stringResource(Res.strings.account_main_add_account_title), + style = MaterialTheme.typography.titleMedium, + ) + }, + trailing = { + ChevronIcon() + }, + leading = { + Icon(Icons.Outlined.PersonAdd, contentDescription = null) + }, + onClick = state.content.onAddAccount, + ) + } + } else { + } + + val list = (state.content as? VaultListState.Content.Items)?.list.orEmpty() + items( + items = list, + key = { model -> model.id }, + ) { model -> + if (model is VaultItem2.QuickFilters && showFilter) { + Box( + modifier = Modifier + .animateItemPlacement(), + ) { + val arg2 = LocalAppMode.current + val llll = remember(state.filters) { + state.filters + .filter { it.sectionId == "custom" && it is FilterItem.Item } + .map { it as FilterItem.Item } + } + if (llll.isNotEmpty() && fab && arg2 is AppMode.Main && state.query.state.value == "") Column( + modifier = Modifier, + ) { + FlowRow( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 8.dp), + horizontalArrangement = Arrangement.spacedBy(8.dp), + verticalArrangement = Arrangement.spacedBy(8.dp), + ) { + llll.forEach { item -> + FilterItemComposable( + leading = item.leading, + title = item.title, + text = null, + checked = item.checked, + onClick = item.onClick, + ) + } + } + Spacer(modifier = Modifier.height(16.dp)) + } + } + } else { + VaultListItem( + modifier = Modifier + .animateItemPlacement(), + item = model, + ) + } + } + } + } + } +} + +@Composable +private fun NoItemsPlaceholder() { +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultListState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultListState.kt new file mode 100644 index 00000000..294a5a73 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultListState.kt @@ -0,0 +1,89 @@ +package com.artemchep.keyguard.feature.home.vault.screen + +import androidx.compose.runtime.Immutable +import androidx.compose.runtime.mutableStateOf +import arrow.optics.optics +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import com.artemchep.keyguard.feature.home.vault.model.FilterItem +import com.artemchep.keyguard.feature.home.vault.model.SortItem +import com.artemchep.keyguard.feature.home.vault.model.VaultItem2 +import com.artemchep.keyguard.ui.ContextItem +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.Selection +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.emptyFlow + +@Immutable +@optics +data class VaultListState( + val revision: Int = 0, + val query: TextFieldModel2 = TextFieldModel2(mutableStateOf("")), + val filters: List = emptyList(), + val sort: List = emptyList(), + val clearFilters: (() -> Unit)? = null, + val clearSort: (() -> Unit)? = null, + val selectCipher: ((DSecret) -> Unit)? = null, + val showKeyboard: Boolean = false, + val primaryActions: List = emptyList(), + val actions: List = emptyList(), + val content: Content = Content.Skeleton, + val sideEffects: SideEffects = SideEffects(), +) { + companion object; + + sealed interface Content { + companion object + + data object Skeleton : Content + + @optics + data class AddAccount( + val onAddAccount: (() -> Unit)? = null, + ) : Content { + companion object + } + + @optics + data class Items( + val revision: Revision = Revision(), + val selection: Selection? = null, + val list: List = emptyList(), + val count: Int = 0, + val onSelected: (String?) -> Unit = { }, + val onGoClick: (() -> Unit)? = null, + ) : Content { + companion object; + + @optics + data class Revision( + /** + * Current revision of the items; each revision you should scroll to + * the top of the list. + */ + val id: Int = 0, + val firstVisibleItemIndex: Mutable = MutableImpl(0), + val firstVisibleItemScrollOffset: Mutable = MutableImpl(0), + val onScroll: (Int, Int) -> Unit = { _, _ -> }, + ) : Content { + companion object; + + interface Mutable { + val value: T + } + + data class MutableImpl( + override val value: T, + ) : Mutable + } + } + } + + @Immutable + @optics + data class SideEffects( + val showBiometricPromptFlow: Flow = emptyFlow(), + ) { + companion object + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducer.kt new file mode 100644 index 00000000..7b8bba5e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultListStateProducer.kt @@ -0,0 +1,1878 @@ +package com.artemchep.keyguard.feature.home.vault.screen + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.AutoAwesome +import androidx.compose.material.icons.outlined.CalendarMonth +import androidx.compose.material.icons.outlined.Delete +import androidx.compose.material.icons.outlined.Download +import androidx.compose.material.icons.outlined.Edit +import androidx.compose.material.icons.outlined.Info +import androidx.compose.material.icons.outlined.Keyboard +import androidx.compose.material.icons.outlined.Lock +import androidx.compose.material.icons.outlined.Password +import androidx.compose.material.icons.outlined.Save +import androidx.compose.material.icons.outlined.Security +import androidx.compose.material.icons.outlined.SortByAlpha +import androidx.compose.material3.Icon +import androidx.compose.material3.Switch +import androidx.compose.runtime.Composable +import androidx.compose.runtime.mutableStateOf +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.vector.ImageVector +import arrow.core.identity +import arrow.core.partially1 +import arrow.optics.Getter +import com.artemchep.keyguard.AppMode +import com.artemchep.keyguard.autofillTarget +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.io.nullable +import com.artemchep.keyguard.common.io.parallelSearch +import com.artemchep.keyguard.common.model.AccountTask +import com.artemchep.keyguard.common.model.AutofillTarget +import com.artemchep.keyguard.common.model.DFilter +import com.artemchep.keyguard.common.model.DFolder +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.formatH +import com.artemchep.keyguard.common.model.iconImageVector +import com.artemchep.keyguard.common.model.titleH +import com.artemchep.keyguard.common.service.clipboard.ClipboardService +import com.artemchep.keyguard.common.service.deeplink.DeeplinkService +import com.artemchep.keyguard.common.usecase.CipherToolbox +import com.artemchep.keyguard.common.usecase.ClearVaultSession +import com.artemchep.keyguard.common.usecase.DateFormatter +import com.artemchep.keyguard.common.usecase.GetAccounts +import com.artemchep.keyguard.common.usecase.GetAppIcons +import com.artemchep.keyguard.common.usecase.GetCanWrite +import com.artemchep.keyguard.common.usecase.GetCipherOpenedHistory +import com.artemchep.keyguard.common.usecase.GetCiphers +import com.artemchep.keyguard.common.usecase.GetCollections +import com.artemchep.keyguard.common.usecase.GetConcealFields +import com.artemchep.keyguard.common.usecase.GetFolders +import com.artemchep.keyguard.common.usecase.GetOrganizations +import com.artemchep.keyguard.common.usecase.GetPasswordStrength +import com.artemchep.keyguard.common.usecase.GetProfiles +import com.artemchep.keyguard.common.usecase.GetSuggestions +import com.artemchep.keyguard.common.usecase.GetTotpCode +import com.artemchep.keyguard.common.usecase.GetWebsiteIcons +import com.artemchep.keyguard.common.usecase.PasskeyTargetCheck +import com.artemchep.keyguard.common.usecase.QueueSyncAll +import com.artemchep.keyguard.common.usecase.RenameFolderById +import com.artemchep.keyguard.common.usecase.SupervisorRead +import com.artemchep.keyguard.common.util.flow.EventFlow +import com.artemchep.keyguard.common.util.flow.persistingStateIn +import com.artemchep.keyguard.feature.attachments.AttachmentsRoute +import com.artemchep.keyguard.feature.attachments.SelectableItemState +import com.artemchep.keyguard.feature.attachments.SelectableItemStateRaw +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import com.artemchep.keyguard.feature.auth.login.LoginRoute +import com.artemchep.keyguard.feature.confirmation.ConfirmationResult +import com.artemchep.keyguard.feature.confirmation.ConfirmationRoute +import com.artemchep.keyguard.feature.decorator.ItemDecorator +import com.artemchep.keyguard.feature.decorator.ItemDecoratorDate +import com.artemchep.keyguard.feature.decorator.ItemDecoratorNone +import com.artemchep.keyguard.feature.decorator.ItemDecoratorTitle +import com.artemchep.keyguard.feature.duplicates.createCipherSelectionFlow +import com.artemchep.keyguard.feature.generator.history.mapLatestScoped +import com.artemchep.keyguard.feature.home.vault.VaultRoute +import com.artemchep.keyguard.feature.home.vault.add.AddRoute +import com.artemchep.keyguard.feature.home.vault.add.LeAddRoute +import com.artemchep.keyguard.feature.home.vault.component.obscurePassword +import com.artemchep.keyguard.feature.home.vault.model.SortItem +import com.artemchep.keyguard.feature.home.vault.model.VaultItem2 +import com.artemchep.keyguard.feature.home.vault.search.IndexedText +import com.artemchep.keyguard.feature.home.vault.search.filter.FilterHolder +import com.artemchep.keyguard.feature.home.vault.search.find +import com.artemchep.keyguard.feature.home.vault.search.findAlike +import com.artemchep.keyguard.feature.home.vault.search.sort.AlphabeticalSort +import com.artemchep.keyguard.feature.home.vault.search.sort.LastCreatedSort +import com.artemchep.keyguard.feature.home.vault.search.sort.LastModifiedSort +import com.artemchep.keyguard.feature.home.vault.search.sort.PasswordLastModifiedSort +import com.artemchep.keyguard.feature.home.vault.search.sort.PasswordSort +import com.artemchep.keyguard.feature.home.vault.search.sort.PasswordStrengthSort +import com.artemchep.keyguard.feature.home.vault.search.sort.Sort +import com.artemchep.keyguard.feature.home.vault.util.AlphabeticalSortMinItemsSize +import com.artemchep.keyguard.feature.localization.TextHolder +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.registerRouteResultReceiver +import com.artemchep.keyguard.feature.navigation.state.PersistedStorage +import com.artemchep.keyguard.feature.navigation.state.copy +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.feature.passkeys.PasskeysCredentialViewRoute +import com.artemchep.keyguard.feature.search.search.SEARCH_DEBOUNCE +import com.artemchep.keyguard.leof +import com.artemchep.keyguard.platform.parcelize.LeParcelable +import com.artemchep.keyguard.platform.parcelize.LeParcelize +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.buildContextItems +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.SyncIcon +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.selection.selectionHandle +import dev.icerock.moko.resources.StringResource +import kotlinx.collections.immutable.persistentListOf +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.debounce +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.mapLatest +import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.flow.shareIn +import kotlinx.coroutines.flow.stateIn +import kotlinx.serialization.Serializable +import org.kodein.di.DirectDI +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance +import kotlin.time.ExperimentalTime +import kotlin.time.measureTimedValue + +@LeParcelize +data class OhOhOh( + val id: String? = null, + val offset: Int = 0, + val revision: Int = 0, +) : LeParcelable + +@LeParcelize +@Serializable +data class ComparatorHolder( + val comparator: Sort, + val reversed: Boolean = false, + val favourites: Boolean = false, +) : LeParcelable { + companion object { + fun of(map: Map): ComparatorHolder { + return ComparatorHolder( + comparator = Sort.valueOf(map["comparator"].toString()) ?: AlphabeticalSort, + reversed = map["reversed"].toString() == "true", + favourites = map["favourites"].toString() == "true", + ) + } + } + + fun toMap() = mapOf( + "comparator" to comparator.id, + "reversed" to reversed, + "favourites" to favourites, + ) +} + +@Composable +fun vaultListScreenState( + args: VaultRoute.Args, + highlightBackgroundColor: Color, + highlightContentColor: Color, + mode: AppMode, +): VaultListState = with(localDI().direct) { + vaultListScreenState( + directDI = this, + args = args, + highlightBackgroundColor = highlightBackgroundColor, + highlightContentColor = highlightContentColor, + mode = mode, + deeplinkService = instance(), + clearVaultSession = instance(), + getSuggestions = instance(), + getAccounts = instance(), + getProfiles = instance(), + getCanWrite = instance(), + getCiphers = instance(), + getFolders = instance(), + getCollections = instance(), + getOrganizations = instance(), + getTotpCode = instance(), + getConcealFields = instance(), + getAppIcons = instance(), + getWebsiteIcons = instance(), + getPasswordStrength = instance(), + getCipherOpenedHistory = instance(), + passkeyTargetCheck = instance(), + renameFolderById = instance(), + toolbox = instance(), + queueSyncAll = instance(), + syncSupervisor = instance(), + dateFormatter = instance(), + clipboardService = instance(), + ) +} + +@Composable +fun vaultListScreenState( + directDI: DirectDI, + args: VaultRoute.Args, + highlightBackgroundColor: Color, + highlightContentColor: Color, + mode: AppMode, + deeplinkService: DeeplinkService, + getSuggestions: GetSuggestions, + getAccounts: GetAccounts, + getProfiles: GetProfiles, + getCanWrite: GetCanWrite, + getCiphers: GetCiphers, + getFolders: GetFolders, + getCollections: GetCollections, + getOrganizations: GetOrganizations, + getTotpCode: GetTotpCode, + getConcealFields: GetConcealFields, + getAppIcons: GetAppIcons, + getWebsiteIcons: GetWebsiteIcons, + getPasswordStrength: GetPasswordStrength, + getCipherOpenedHistory: GetCipherOpenedHistory, + passkeyTargetCheck: PasskeyTargetCheck, + renameFolderById: RenameFolderById, + clearVaultSession: ClearVaultSession, + toolbox: CipherToolbox, + queueSyncAll: QueueSyncAll, + syncSupervisor: SupervisorRead, + dateFormatter: DateFormatter, + clipboardService: ClipboardService, +): VaultListState = produceScreenState( + key = "vault_list", + initial = VaultListState(), + args = arrayOf( + getAccounts, + getCiphers, + getTotpCode, + dateFormatter, + clipboardService, + ), +) { + val storage = kotlin.run { + val disk = loadDiskHandle("vault.list") + PersistedStorage.InDisk(disk) + } + + val fffFilter = args.filter ?: DFilter.All + println(fffFilter) +// val fffAccountId = DFilter +// .findOne(fffFilter) { f -> +// f.what == DFilter.ById.What.ACCOUNT +// } +// ?.id + val fffFolderId = DFilter + .findOne(fffFilter) { f -> + f.what == DFilter.ById.What.FOLDER + } + ?.id +// val fffCollectionId = DFilter +// .findOne(fffFilter) { f -> +// f.what == DFilter.ById.What.COLLECTION +// } +// ?.id +// val fffOrganizationId = DFilter +// .findOne(fffFilter) { f -> +// f.what == DFilter.ById.What.ORGANIZATION +// } +// ?.id + + fun onRename( + folders: List, + ) { + val route = registerRouteResultReceiver( + route = ConfirmationRoute( + args = ConfirmationRoute.Args( + icon = icon(Icons.Outlined.Edit), + title = "Change folder name", + items = folders + .sortedBy { it.name } + .map { folder -> + ConfirmationRoute.Args.Item.StringItem( + key = folder.id, + value = folder.name, + title = folder.name, + type = ConfirmationRoute.Args.Item.StringItem.Type.Text, + canBeEmpty = false, + ) + }, + ), + ), + ) { + if (it is ConfirmationResult.Confirm) { + val folderIdsToNames = it.data + .mapValues { it.value as String } + renameFolderById(folderIdsToNames) + .launchIn(appScope) + } + } + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + } + + val copy = copy(clipboardService) + val ciphersRawFlow = getCiphers() + + val querySink = mutablePersistedFlow("query") { "" } + val queryState = mutableComposeState(querySink) + + val cipherSink = EventFlow() + + val itemSink = mutablePersistedFlow("lole") { "" } + + val selectionHandle = selectionHandle("selection") + // Automatically remove selection from ciphers + // that do not exist anymore. + getCiphers() + .onEach { ciphers -> + val selectedItemIds = selectionHandle.idsFlow.value + val filteredSelectedItemIds = selectedItemIds + .filter { itemId -> + ciphers.any { it.id == itemId } + } + .toSet() + if (filteredSelectedItemIds.size < selectedItemIds.size) { + selectionHandle.setSelection(filteredSelectedItemIds) + } + } + .launchIn(this) + + val showKeyboardSink = if (args.canAlwaysShowKeyboard) { + mutablePersistedFlow( + key = "keyboard", + storage = storage, + ) { false } + } else { + mutablePersistedFlow( + key = "keyboard", + ) { false } + } + val syncFlow = syncSupervisor + .get(AccountTask.SYNC) + .map { accounts -> + accounts.isNotEmpty() + } + + val sortDefault = ComparatorHolder( + comparator = AlphabeticalSort, + favourites = true, + ) + val sortSink = mutablePersistedFlow( + key = "sort", + serialize = { json, value -> + value.toMap() + }, + deserialize = { json, value -> + ComparatorHolder.of(value) + }, + ) { + if (args.sort != null) { + ComparatorHolder( + comparator = args.sort, + ) + } else { + sortDefault + } + } + + var scrollPositionKey: Any? = null + val scrollPositionSink = mutablePersistedFlow("scroll_state") { OhOhOh() } + + val filterResult = createFilter() + val actionsFlow = kotlin.run { + val actionTrashItem = FlatItemAction( + leading = { + Icon(Icons.Outlined.Delete, null) + }, + title = translate(Res.strings.trash), + onClick = { + val newArgs = args.copy( + appBar = VaultRoute.Args.AppBar( + subtitle = args.appBar?.subtitle + ?: translate(Res.strings.home_vault_label), + title = translate(Res.strings.trash), + ), + trash = true, + preselect = false, + canAddSecrets = false, + ) + val route = VaultListRoute(newArgs) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + val actionTrashFlow = flowOf(actionTrashItem) + val actionDownloadsItem = FlatItemAction( + leading = { + Icon(Icons.Outlined.Download, null) + }, + title = translate(Res.strings.downloads), + onClick = { + val route = AttachmentsRoute() + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + val actionDownloadsFlow = flowOf(actionDownloadsItem) + val actionGroupFlow = combine( + actionTrashFlow, + actionDownloadsFlow, + ) { array -> + buildContextItems { + section { + array.forEach(this::plusAssign) + } + } + } + + val actionAlwaysShowKeyboardFlow = showKeyboardSink + .map { showKeyboard -> + FlatItemAction( + leading = { + Icon( + Icons.Outlined.Keyboard, + null, + ) + }, + trailing = { + Switch( + checked = showKeyboard, + onCheckedChange = showKeyboardSink::value::set, + ) + }, + title = translate(Res.strings.vault_action_always_show_keyboard_title), + onClick = showKeyboardSink::value::set.partially1(!showKeyboard), + ) + } + val actionGroup2Flow = combine( + actionAlwaysShowKeyboardFlow, + ) { array -> + buildContextItems { + section { + array.forEach(this::plusAssign) + } + } + } + val actionSyncAccountsFlow = syncFlow + .map { syncing -> + FlatItemAction( + leading = { + SyncIcon( + rotating = syncing, + ) + }, + title = translate(Res.strings.vault_action_sync_vault_title), + onClick = if (!syncing) { + // lambda + { + queueSyncAll() + .launchIn(appScope) + } + } else { + null + }, + ) + } + val actionLockVaultItem = FlatItemAction( + leading = { + Icon(Icons.Outlined.Lock, null) + }, + title = translate(Res.strings.vault_action_lock_vault_title), + onClick = { + clearVaultSession() + .launchIn(appScope) + }, + ) + val actionLockVaultFlow = flowOf(actionLockVaultItem) + val actionGroup3Flow = combine( + actionSyncAccountsFlow, + actionLockVaultFlow, + ) { array -> + buildContextItems { + section { + array.forEach(this::plusAssign) + } + } + } + val actionFolderRenameFlow = getFolders() + .map { folders -> + val folder = folders.firstOrNull { it.id == fffFolderId } + if (folder != null) { + FlatItemAction( + leading = { + Icon(Icons.Outlined.Edit, null) + }, + title = translate(Res.strings.vault_action_rename_folder_title), + onClick = { + onRename(listOf(folder)) + }, + ) + } else { + null + } + } + .map { + buildContextItems { + this += it + } + } + if (args.canAlwaysShowKeyboard) { + combine( + actionFolderRenameFlow, + actionGroupFlow, + actionGroup2Flow, + actionGroup3Flow, + ) { array -> + buildContextItems { + array.forEach { + section { + it.forEach { + this += it + } + } + } + } + } + } else { + combine( + actionFolderRenameFlow, + ) { array -> + buildContextItems { + array.forEach { + section { + it.forEach { + this += it + } + } + } + } + } + } + } + + val recentState = MutableStateFlow( + VaultItem2.Item.LocalState( + openedState = VaultItem2.Item.OpenedState(false), + selectableItemState = SelectableItemState( + selected = false, + selecting = false, + can = true, + onClick = null, + onLongClick = null, + ), + ), + ) + + data class ConfigMapper( + val concealFields: Boolean, + val appIcons: Boolean, + val websiteIcons: Boolean, + ) + + val configFlow = combine( + getConcealFields(), + getAppIcons(), + getWebsiteIcons(), + ) { concealFields, appIcons, websiteIcons -> + ConfigMapper( + concealFields = concealFields, + appIcons = appIcons, + websiteIcons = websiteIcons, + ) + }.distinctUntilChanged() + val organizationsByIdFlow = getOrganizations() + .map { organizations -> + organizations + .associateBy { it.id } + } + + val ciphersFlow = combine( + ciphersRawFlow, + organizationsByIdFlow, + configFlow, + ) { secrets, organizationsById, cfg -> Triple(secrets, organizationsById, cfg) } + .mapLatestScoped { (secrets, organizationsById, cfg) -> + val items = secrets + .run { + if (mode is AppMode.PickPasskey) { + return@run this + .filter { cipher -> + val credentials = cipher.login?.fido2Credentials.orEmpty() + credentials + .any { credential -> + passkeyTargetCheck(credential, mode.target) + .attempt() + .bind() + .isRight { it } + } + } + } + if (mode is AppMode.HasType) { + val type = mode.type + if (type != null) { + return@run this + .filter { it.type == type } + } + } + + this + } + .filter { + when (args.trash) { + true -> it.deletedDate != null + false -> it.deletedDate == null + null -> true + } + } + .map { secret -> + val selectableFlow = selectionHandle + .idsFlow + .map { ids -> + SelectableItemStateRaw( + selecting = ids.isNotEmpty(), + selected = secret.id in ids, + ) + } + .distinctUntilChanged() + .map { raw -> + val toggle = selectionHandle::toggleSelection + .partially1(secret.id) + val onClick = toggle.takeIf { raw.selecting } + val onLongClick = toggle + .takeIf { !raw.selecting && raw.canSelect } + SelectableItemState( + selecting = raw.selecting, + selected = raw.selected, + can = raw.canSelect, + onClick = onClick, + onLongClick = onLongClick, + ) + } + val openedStateFlow = itemSink + .map { + val isOpened = it == secret.id + VaultItem2.Item.OpenedState(isOpened) + } + val sharing = SharingStarted.WhileSubscribed(1000L) + val localStateFlow = combine( + selectableFlow, + openedStateFlow, + ) { selectableState, openedState -> + VaultItem2.Item.LocalState( + openedState, + selectableState, + ) + }.persistingStateIn(this, sharing) + val item = secret.toVaultListItem( + copy = copy, + translator = this@produceScreenState, + getTotpCode = getTotpCode, + concealFields = cfg.concealFields, + appIcons = cfg.appIcons, + websiteIcons = cfg.websiteIcons, + organizationsById = organizationsById, + localStateFlow = localStateFlow, + onClick = { actions -> + val dropdown = when (mode) { + is AppMode.Pick -> listOf( + FlatItemAction( + icon = Icons.Outlined.AutoAwesome, + title = translate(Res.strings.autofill), + onClick = { + mode.onAutofill(secret) + }, + ), + ) + actions + FlatItemAction( + icon = Icons.Outlined.Info, + title = translate(Res.strings.ciphers_view_details), + trailing = { + ChevronIcon() + }, + onClick = { + cipherSink.emit(secret) + }, + ) + + is AppMode.Save -> listOf( + FlatItemAction( + icon = Icons.Outlined.Save, + title = translate(Res.strings.ciphers_save_to), + onClick = { + val route = LeAddRoute( + args = AddRoute.Args( + behavior = AddRoute.Args.Behavior( + // User wants to quickly check the updated + // cipher data, not to fill the data :P + autoShowKeyboard = false, + launchEditedCipher = false, + ), + initialValue = secret, + autofill = AddRoute.Args.Autofill.leof(mode.args), + ), + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ), + ) + FlatItemAction( + icon = Icons.Outlined.Info, + title = translate(Res.strings.ciphers_view_details), + trailing = { + ChevronIcon() + }, + onClick = { + cipherSink.emit(secret) + }, + ) + + is AppMode.SavePasskey -> listOf( + FlatItemAction( + icon = Icons.Outlined.Save, + title = translate(Res.strings.ciphers_save_to), + onClick = { + mode.onComplete(secret) + }, + ), + ) + FlatItemAction( + icon = Icons.Outlined.Info, + title = translate(Res.strings.ciphers_view_details), + trailing = { + ChevronIcon() + }, + onClick = { + cipherSink.emit(secret) + }, + ) + + is AppMode.PickPasskey -> + return@toVaultListItem VaultItem2.Item.Action.Go( + onClick = cipherSink::emit.partially1(secret), + ) + + is AppMode.Main -> + return@toVaultListItem VaultItem2.Item.Action.Go( + onClick = cipherSink::emit.partially1(secret), + ) + } + VaultItem2.Item.Action.Dropdown( + actions = dropdown, + ) + }, + onClickPasskey = { credential -> + if (mode is AppMode.PickPasskey) { + val matches = passkeyTargetCheck(credential, mode.target) + .attempt() + .bind() + .isRight { it } + if (matches) { + // lambda + { + mode.onComplete(credential) + } + } else { + null + } + } else { + // lambda + { + val route = PasskeysCredentialViewRoute( + args = PasskeysCredentialViewRoute.Args( + cipherId = secret.id, + credentialId = credential.credentialId, + model = credential, + ), + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + } + } + }, + ) + val indexed = mutableListOf() + indexed += SearchToken( + priority = 2f, + value = secret.name, + ) + if (secret.login != null) { + // Make username searchable + if (secret.login.username != null) { + indexed += SearchToken( + priority = 1f, + value = secret.login.username, + ) + } + // Make password searchable + if (!secret.reprompt && secret.login.password != null) { + indexed += SearchToken( + priority = 0.5f, + value = secret.login.password, + ) + } + secret.login.fido2Credentials.forEach { + if (it.userDisplayName != null) { + indexed += SearchToken( + priority = 0.8f, + value = it.userDisplayName, + ) + } + indexed += SearchToken( + priority = 0.5f, + value = it.rpId, + ) + } + } + if (secret.card != null) { + // Make card holder name & + // card brand searchable + if (secret.card.cardholderName != null) { + indexed += SearchToken( + priority = 1f, + value = secret.card.cardholderName, + ) + } + if (secret.card.brand != null) { + indexed += SearchToken( + priority = 0.5f, + value = secret.card.brand, + ) + } + if (!secret.reprompt && secret.card.number != null) { + indexed += SearchToken( + priority = 0.5f, + value = secret.card.number, + ) + } + } + if (secret.identity != null) { + // Name + if (secret.identity.firstName != null) { + indexed += SearchToken( + priority = 1f, + value = secret.identity.firstName, + ) + } + if (secret.identity.middleName != null) { + indexed += SearchToken( + priority = 0.5f, + value = secret.identity.middleName, + ) + } + if (secret.identity.lastName != null) { + indexed += SearchToken( + priority = 1f, + value = secret.identity.lastName, + ) + } + // Contacts + if (secret.identity.email != null) { + indexed += SearchToken( + priority = 1f, + value = secret.identity.email, + ) + } + if (secret.identity.phone != null) { + indexed += SearchToken( + priority = 0.5f, + value = secret.identity.phone, + ) + } + if (secret.identity.username != null) { + indexed += SearchToken( + priority = 1f, + value = secret.identity.username, + ) + } + } + if (!secret.reprompt && secret.notes.isNotBlank()) { + indexed += SearchToken( + priority = 0.8f, + value = secret.notes, + ) + } + secret.uris.forEach { uri -> + @Suppress("MoveVariableDeclarationIntoWhen") + val matchType = uri.match ?: DSecret.Uri.MatchType.default + val priority = when (matchType) { + DSecret.Uri.MatchType.Domain -> 0.5f + DSecret.Uri.MatchType.Host -> 0.5f + DSecret.Uri.MatchType.StartsWith -> 0.5f + DSecret.Uri.MatchType.Exact -> 0.5f + DSecret.Uri.MatchType.RegularExpression -> 0f // can't type regex... + DSecret.Uri.MatchType.Never -> 0.1f + } + if (priority > 0f) { + indexed += SearchToken( + priority = priority, + value = uri.uri, + ) + } + } + secret.fields.forEach { field -> + val priority = when (field.type) { + DSecret.Field.Type.Text -> 0.5f + DSecret.Field.Type.Hidden -> 0f + DSecret.Field.Type.Boolean -> 0f + DSecret.Field.Type.Linked -> 0f + } + if (priority > 0f && field.value != null) { + indexed += SearchToken( + priority = priority, + value = field.value, + ) + } + } + IndexedModel( + model = item, + indexedText = IndexedText(item.title.text), + indexedOther = indexed, + ) + } + .run { + if (args.filter != null) { + val ciphers = map { it.model.source } + val predicate = args.filter.prepare(directDI, ciphers) + this + .filter { predicate(it.model.source) } + } else { + this + } + } + items + } + .flowOn(Dispatchers.Default) + .shareIn(this, SharingStarted.WhileSubscribed(5000L), replay = 1) + + fun createComparatorAction( + id: String, + title: StringResource, + icon: ImageVector? = null, + config: ComparatorHolder, + ) = SortItem.Item( + id = id, + config = config, + title = TextHolder.Res(title), + icon = icon, + onClick = { + sortSink.value = config + }, + checked = false, + ) + + data class Fuu( + val item: SortItem.Item, + val subItems: List, + ) + + val cam = mapOf( + AlphabeticalSort to Fuu( + item = createComparatorAction( + id = "title", + icon = Icons.Outlined.SortByAlpha, + title = Res.strings.sortby_title_title, + config = ComparatorHolder( + comparator = AlphabeticalSort, + favourites = true, + ), + ), + subItems = listOf( + createComparatorAction( + id = "title_normal", + title = Res.strings.sortby_title_normal_mode, + config = ComparatorHolder( + comparator = AlphabeticalSort, + favourites = true, + ), + ), + createComparatorAction( + id = "title_rev", + title = Res.strings.sortby_title_reverse_mode, + config = ComparatorHolder( + comparator = AlphabeticalSort, + reversed = true, + favourites = true, + ), + ), + ), + ), + LastModifiedSort to Fuu( + item = createComparatorAction( + id = "modify_date", + icon = Icons.Outlined.CalendarMonth, + title = Res.strings.sortby_modification_date_title, + config = ComparatorHolder( + comparator = LastModifiedSort, + ), + ), + subItems = listOf( + createComparatorAction( + id = "modify_date_normal", + title = Res.strings.sortby_modification_date_normal_mode, + config = ComparatorHolder( + comparator = LastModifiedSort, + ), + ), + createComparatorAction( + id = "modify_date_rev", + title = Res.strings.sortby_modification_date_reverse_mode, + config = ComparatorHolder( + comparator = LastModifiedSort, + reversed = true, + ), + ), + ), + ), + PasswordSort to Fuu( + item = createComparatorAction( + id = "password", + icon = Icons.Outlined.Password, + title = Res.strings.sortby_password_title, + config = ComparatorHolder( + comparator = PasswordSort, + ), + ), + subItems = listOf( + createComparatorAction( + id = "password_normal", + title = Res.strings.sortby_password_normal_mode, + config = ComparatorHolder( + comparator = PasswordSort, + ), + ), + createComparatorAction( + id = "password_rev", + title = Res.strings.sortby_password_reverse_mode, + config = ComparatorHolder( + comparator = PasswordSort, + reversed = true, + ), + ), + ), + ), + PasswordLastModifiedSort to Fuu( + item = createComparatorAction( + id = "password_last_modified_strength", + icon = Icons.Outlined.CalendarMonth, + title = Res.strings.sortby_password_modification_date_title, + config = ComparatorHolder( + comparator = PasswordLastModifiedSort, + ), + ), + subItems = listOf( + createComparatorAction( + id = "password_last_modified_normal", + title = Res.strings.sortby_password_modification_date_normal_mode, + config = ComparatorHolder( + comparator = PasswordLastModifiedSort, + ), + ), + createComparatorAction( + id = "password_last_modified_rev", + title = Res.strings.sortby_password_modification_date_reverse_mode, + config = ComparatorHolder( + comparator = PasswordLastModifiedSort, + reversed = true, + ), + ), + ), + ), + PasswordStrengthSort to Fuu( + item = createComparatorAction( + id = "password_strength", + icon = Icons.Outlined.Security, + title = Res.strings.sortby_password_strength_title, + config = ComparatorHolder( + comparator = PasswordStrengthSort, + ), + ), + subItems = listOf( + createComparatorAction( + id = "password_strength_normal", + title = Res.strings.sortby_password_strength_normal_mode, + config = ComparatorHolder( + comparator = PasswordStrengthSort, + ), + ), + createComparatorAction( + id = "password_strength_rev", + title = Res.strings.sortby_password_strength_reverse_mode, + config = ComparatorHolder( + comparator = PasswordStrengthSort, + reversed = true, + ), + ), + ), + ), + ) + + val comparatorsListFlow = sortSink + .map { orderConfig -> + val mainItems = cam.values + .map { it.item } + .map { item -> + val checked = item.config.comparator == orderConfig.comparator + item.copy(checked = checked) + } + val subItems = cam[orderConfig.comparator]?.subItems.orEmpty() + .map { item -> + val checked = item.config == orderConfig + item.copy(checked = checked) + } + + val out = mutableListOf() + out += mainItems + if (subItems.isNotEmpty()) { + out += SortItem.Section( + id = "sub_items_section", + text = TextHolder.Res(Res.strings.options), + ) + out += subItems + } + out + } + + val queryTrimmedFlow = querySink.map { it to it.trim() } + + val queryIndexedFlow = queryTrimmedFlow + .debounce(SEARCH_DEBOUNCE) + .map { (_, queryTrimmed) -> + if (queryTrimmed.isEmpty()) return@map null + IndexedText( + text = queryTrimmed, + ) + } + + data class Rev( + val count: Int, + val list: List, + val revision: Int = 0, + ) + + val autofillTarget = mode.autofillTarget + val ciphersFilteredFlow = hahah( + directDI = directDI, + ciphersFlow = ciphersFlow, + orderFlow = sortSink, + filterFlow = filterResult.filterFlow, + queryFlow = queryIndexedFlow, + autofillTarget = autofillTarget, + getSuggestions = getSuggestions, + dateFormatter = dateFormatter, + highlightBackgroundColor = highlightBackgroundColor, + highlightContentColor = highlightContentColor, + ) + .map { + val keepOtp = it.filterConfig?.filter + ?.let { + DFilter.findOne(it, DFilter.ByOtp::class.java) + } != null + val keepPasskey = it.filterConfig?.filter + ?.let { + DFilter.findOne(it, DFilter.ByPasskeys::class.java) + } != null || + // If a user is in the pick a passkey mode, + // then we want to always show it in the items. + mode is AppMode.PickPasskey || + mode is AppMode.SavePasskey + val l = if (keepOtp && keepPasskey) { + it.list + } else { + it.list + .map { + when (it) { + is VaultItem2.Item -> { + it.copy( + token = it.token.takeIf { keepOtp }, + passkeys = it.passkeys.takeIf { keepPasskey } + ?: persistentListOf(), + ) + } + + else -> it + } + } + } + + Rev( + count = it.count, + list = l, + revision = (it.filterConfig?.id ?: 0) xor ( + it.queryConfig?.text?.hashCode() + ?: 0 + ) xor (it.orderConfig?.hashCode() ?: 0), + ) + } + .flowOn(Dispatchers.Default) + .shareIn(this, SharingStarted.WhileSubscribed(), replay = 1) + + val dl = deeplinkService.get("customFilter") + deeplinkService.clear("customFilter") + val filterListFlow = ah( + directDI = directDI, + outputGetter = { it.source }, + outputFlow = ciphersFilteredFlow + .map { state -> + state.list.mapNotNull { it as? VaultItem2.Item } + }, + accountGetter = ::identity, + accountFlow = getAccounts(), + profileFlow = getProfiles(), + cipherGetter = { + it.model.source + }, + cipherFlow = ciphersFlow, + folderGetter = ::identity, + folderFlow = getFolders(), + collectionGetter = ::identity, + collectionFlow = getCollections(), + organizationGetter = ::identity, + organizationFlow = getOrganizations(), + input = filterResult, + params = FilterParams( + deeplinkCustomFilter = dl, + ), + ) + .stateIn(this, SharingStarted.WhileSubscribed(), OurFilterResult()) + + val selectionFlow = createCipherSelectionFlow( + selectionHandle = selectionHandle, + ciphersFlow = ciphersRawFlow, + collectionsFlow = getCollections(), + canWriteFlow = getCanWrite(), + toolbox = toolbox, + ) + + val itemsFlow = ciphersFilteredFlow + .map { + val list = it.list + .toMutableList() + if (args.canQuickFilter) { + list.add( + 0, + VaultItem2.QuickFilters( + id = "quick_filters", + items = persistentListOf(), + ), + ) + } + it.copy(list = list) + } + .combine(selectionFlow) { ciphers, selection -> + val items = ciphers.list + + @Suppress("UnnecessaryVariable") + val localScrollPositionKey = items + scrollPositionKey = localScrollPositionKey + + val lastScrollState = scrollPositionSink.value + val (firstVisibleItemIndex, firstVisibleItemScrollOffset) = + if (lastScrollState.revision == ciphers.revision) { + val index = items + .indexOfFirst { it.id == lastScrollState.id } + .takeIf { it >= 0 } + index?.let { it to lastScrollState.offset } + } else { + null + } + // otherwise start with a first item + ?: (0 to 0) + + val a = object : VaultListState.Content.Items.Revision.Mutable> { + override val value: Pair + get() { + val lastScrollState = scrollPositionSink.value + val v = if (lastScrollState.revision == ciphers.revision) { + val index = items + .indexOfFirst { it.id == lastScrollState.id } + .takeIf { it >= 0 } + index?.let { it to lastScrollState.offset } + } else { + null + } ?: (firstVisibleItemIndex to firstVisibleItemScrollOffset) + return v + } + } + val b = object : VaultListState.Content.Items.Revision.Mutable { + override val value: Int + get() = a.value.first + } + val c = object : VaultListState.Content.Items.Revision.Mutable { + override val value: Int + get() = a.value.second + } + VaultListState.Content.Items( + onSelected = { key -> + itemSink.value = key.orEmpty() + }, + revision = VaultListState.Content.Items.Revision( + id = ciphers.revision, + firstVisibleItemIndex = b, + firstVisibleItemScrollOffset = c, + onScroll = { index, offset -> + if (localScrollPositionKey !== scrollPositionKey) { + return@Revision + } + + val item = items.getOrNull(index) + ?: return@Revision + scrollPositionSink.value = OhOhOh( + id = item.id, + offset = offset, + revision = ciphers.revision, + ) + }, + ), + list = items, + count = ciphers.count, + selection = selection, + ) + } + + val itemsNullableFlow = itemsFlow + // First search might take some time, but we want to provide + // initial state as fast as we can. + .nullable() + .persistingStateIn(this, SharingStarted.WhileSubscribed(), null) + combine( + itemsNullableFlow, + filterListFlow, + comparatorsListFlow + .combine(sortSink) { a, b -> a to b }, + queryTrimmedFlow, + getAccounts() + .map { it.isNotEmpty() } + .distinctUntilChanged(), + ) { itemsContent, filters, (comparators, sort), (query, queryTrimmed), hasAccounts -> + val revision = filters.rev xor queryTrimmed.hashCode() xor sort.hashCode() + val content = if (hasAccounts) { + itemsContent + ?: VaultListState.Content.Skeleton + } else { + VaultListState.Content.AddAccount( + onAddAccount = { + val route = registerRouteResultReceiver(LoginRoute()) { + // Close the login screen. + navigate(NavigationIntent.Pop) + } + navigate(NavigationIntent.NavigateToRoute(route)) + }, + ) + } + val queryField = if (content !is VaultListState.Content.AddAccount) { + // We want to let the user search while the items + // are still loading. + TextFieldModel2( + state = queryState, + text = query, + onChange = queryState::value::set, + ) + } else { + TextFieldModel2( + mutableStateOf(""), + ) + } + + fun createTypeAction( + type: DSecret.Type, + ) = FlatItemAction( + leading = icon(type.iconImageVector()), + title = translate(type.titleH()), + onClick = { + val autofill = when (mode) { + is AppMode.Main -> null + is AppMode.SavePasskey -> null + is AppMode.PickPasskey -> null + is AppMode.Save -> { + AddRoute.Args.Autofill.leof(mode.args) + } + + is AppMode.Pick -> { + AddRoute.Args.Autofill.leof(mode.args) + } + } + val route = LeAddRoute( + args = AddRoute.Args( + type = type, + autofill = autofill, + name = queryTrimmed.takeIf { it.isNotEmpty() }, + ), + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + + val primaryActions = kotlin.run { + // You can not create a passkey at will, it + // must be a separate action. During the pick passkey + // request you can only select existing ones. + if (mode is AppMode.PickPasskey) { + return@run emptyList() + } + if (mode is AppMode.HasType) { + val type = mode.type + if (type != null) { + return@run listOf( + createTypeAction( + type = type, + ), + ) + } + } + listOf( + createTypeAction( + type = DSecret.Type.Login, + ), + createTypeAction( + type = DSecret.Type.Card, + ), + createTypeAction( + type = DSecret.Type.Identity, + ), + createTypeAction( + type = DSecret.Type.SecureNote, + ), + ) + } + VaultListState( + revision = revision, + query = queryField, + filters = filters.items, + sort = comparators + .takeIf { queryTrimmed.isEmpty() } + .orEmpty(), + primaryActions = if (hasAccounts) { + primaryActions + } else { + emptyList() + }, + clearFilters = filters.onClear, + clearSort = if (sortDefault != sort) { + { + sortSink.value = sortDefault + } + } else { + null + }, + selectCipher = cipherSink::emit, + content = content, + sideEffects = VaultListState.SideEffects(cipherSink), + ) + }.combine( + combine( + getCanWrite(), + selectionHandle.idsFlow, + ) { canWrite, itemIds -> + canWrite && itemIds.isEmpty() + }, + ) { state, canWrite -> + state.copy( + primaryActions = state.primaryActions.takeIf { canWrite }.orEmpty(), + ) + }.combine(actionsFlow) { state, actions -> + state.copy( + actions = actions, + ) + }.combine(showKeyboardSink) { state, showKeyboard -> + state.copy( + showKeyboard = showKeyboard && state.query.onChange != null, + ) + } +} + +private data class SearchToken( + val priority: Float, + val tokens: List, +) { + companion object { + operator fun invoke( + priority: Float, + value: String, + ) = SearchToken( + priority = priority, + tokens = value.lowercase().split(" "), + ) + } +} + +private class IndexedModel( + val model: T, + val indexedText: IndexedText, + val indexedOther: List, +) + +private data class FilteredModel( + val model: T, + val score: Float, + val result: IndexedText.FindResult?, +) + +private data class FilteredCiphers( + val list: List, + val revision: Int, +) + +private data class FilteredBoo( + val count: Int, + val list: List, + val preferredList: List?, + val orderConfig: ComparatorHolder? = null, + val filterConfig: FilterHolder? = null, + val queryConfig: IndexedText? = null, +) + +private data class Preferences( + val appId: String? = null, + val webDomain: String? = null, +) + +private fun hahah( + directDI: DirectDI, + ciphersFlow: Flow>>, + orderFlow: Flow, + filterFlow: Flow, + queryFlow: Flow, + autofillTarget: AutofillTarget?, + getSuggestions: GetSuggestions, + dateFormatter: DateFormatter, + highlightBackgroundColor: Color, + highlightContentColor: Color, +) = ciphersFlow + .map { items -> + val preferredList = if (autofillTarget != null) { + getSuggestions( + items, + Getter { + val m = it as IndexedModel + m.model.source + }, + autofillTarget, + ) + .bind().let { it as List> } + .map { item -> + val newModel = item.model.copy( + id = "preferred." + item.model.id, + ) + IndexedModel( + model = newModel, + indexedText = item.indexedText, + indexedOther = emptyList(), + ) + } + } else { + null + } + FilteredBoo( + count = items.size, + list = items, + preferredList = preferredList, + ) + } + .combine( + flow = orderFlow + .map { orderConfig -> + val orderComparator = Comparator> { a, b -> + val aModel = a.model + val bModel = b.model + + var r = 0 + if (r == 0 && orderConfig.favourites) { + // Place favourite items on top of the list. + r = -compareValues(a.model.favourite, b.model.favourite) + } + if (r == 0) { + r = orderConfig.comparator.compare(aModel, bModel) + r = if (orderConfig.reversed) -r else r + } + if (r == 0) { + r = aModel.id.compareTo(bModel.id) + r = if (orderConfig.reversed) -r else r + } + r + } + orderConfig to orderComparator + }, + ) { state, (orderConfig, orderComparator) -> + val sortedAllItems = state.list.sortedWith(orderComparator) + state.copy( + list = sortedAllItems, + orderConfig = orderConfig, + ) + } + .combine( + flow = filterFlow, + ) { state, filterConfig -> + // Fast path: if the there are no filters, then + // just return original list of items. + if (filterConfig.state.isEmpty()) { + return@combine state.copy( + filterConfig = filterConfig, + ) + } + + val filteredAllItems = state + .list + .run { + val ciphers = map { it.model.source } + val predicate = filterConfig.filter.prepare(directDI, ciphers) + filter { predicate(it.model.source) } + } + val filteredPreferredItems = state + .preferredList + ?.run { + val ciphers = map { it.model.source } + val predicate = filterConfig.filter.prepare(directDI, ciphers) + filter { predicate(it.model.source) } + } + state.copy( + list = filteredAllItems, + preferredList = filteredPreferredItems, + filterConfig = filterConfig, + ) + } + .combine(queryFlow) { a, b -> a to b } // i want to use map latest + .mapLatest { (state, query) -> + if (query == null) { + return@mapLatest FilteredBoo( + count = state.list.size, + list = state.list.map { it.model }, + preferredList = state.preferredList?.map { it.model }, + orderConfig = state.orderConfig, + filterConfig = state.filterConfig, + queryConfig = state.queryConfig, + ) + } + + val filteredAllItems = state.list.search( + query = query, + highlightBackgroundColor = highlightBackgroundColor, + highlightContentColor = highlightContentColor, + ) + val filteredPreferredItems = state.preferredList?.search( + query = query, + highlightBackgroundColor = highlightBackgroundColor, + highlightContentColor = highlightContentColor, + ) + FilteredBoo( + count = filteredAllItems.size, + list = filteredAllItems, + preferredList = filteredPreferredItems, + orderConfig = state.orderConfig, + filterConfig = state.filterConfig, + queryConfig = query, + ) + } + .map { state -> + val keys = mutableSetOf() + + val orderConfig = state.orderConfig + val decorator = when { + // Search does not guarantee meaningful order that we can + // show in the section. + state.queryConfig != null -> ItemDecoratorNone + orderConfig?.comparator is AlphabeticalSort && + // it looks ugly on small lists + state.list.size >= AlphabeticalSortMinItemsSize -> + ItemDecoratorTitle( + selector = { it.title.text }, + factory = { id, text -> + VaultItem2.Section( + id = id, + text = TextHolder.Value(text), + ) + }, + ) + + orderConfig?.comparator is LastCreatedSort -> + ItemDecoratorDate( + dateFormatter = dateFormatter, + selector = { it.createdDate }, + factory = { id, text -> + VaultItem2.Section( + id = id, + text = TextHolder.Value(text), + ) + }, + ) + + orderConfig?.comparator is LastModifiedSort -> + ItemDecoratorDate( + dateFormatter = dateFormatter, + selector = { it.revisionDate }, + factory = { id, text -> + VaultItem2.Section( + id = id, + text = TextHolder.Value(text), + ) + }, + ) + + orderConfig?.comparator is PasswordSort -> PasswordDecorator() + + orderConfig?.comparator is PasswordLastModifiedSort -> + ItemDecoratorDate( + dateFormatter = dateFormatter, + selector = { it.passwordRevisionDate }, + factory = { id, text -> + VaultItem2.Section( + id = id, + text = TextHolder.Value(text), + ) + }, + ) + + orderConfig?.comparator is PasswordStrengthSort -> PasswordStrengthDecorator() + else -> ItemDecoratorNone + } + + val items = sequence { + if (state.preferredList != null) { + // We want to show the 'No suggestions' text if the suggestions + // target does exist, but searching for suggestions returns no + // items. + if (state.preferredList.isEmpty()) { + yield(VaultItem2.NoSuggestions) + } + state.preferredList.forEach { item -> + yield(item) + } + + // A section item for all items. + if (state.list.isNotEmpty()) { + val section = VaultItem2.Section( + id = "preferred.end", + text = TextHolder.Res(Res.strings.items_all), + ) + yield(section) + } + } + state.list.forEach { item -> + if (!item.favourite || orderConfig?.favourites != true) { + val section = decorator.getOrNull(item) + if (section != null) yield(section) + } + yield(item) + } + }.toList().ifEmpty { + listOf(VaultItem2.NoItems) + } + FilteredBoo( + count = state.list.size, + list = items, + preferredList = items, + orderConfig = state.orderConfig, + filterConfig = state.filterConfig, + queryConfig = state.queryConfig, + ) + } + +private typealias Decorator = ItemDecorator + +private class PasswordDecorator : Decorator { + /** + * Last shown password, used to not repeat the sections + * if it stays the same. + */ + private var lastPassword: Any? = Any() + + override fun getOrNull(item: VaultItem2.Item): VaultItem2? { + val pw = item.password + if (pw == lastPassword) { + return null + } + + lastPassword = pw + if (pw == null) { + return VaultItem2.Section( + id = "decorator.pw.empty", + text = TextHolder.Value("No password"), + ) + } + val text = obscurePassword(pw) + return VaultItem2.Section( + id = "decorator.pw.$pw", + text = TextHolder.Value(text), + caps = false, + ) + } +} + +private class PasswordStrengthDecorator : Decorator { + /** + * Last shown password score, used to not repeat the sections + * if it stays the same. + */ + private var lastScore: Any? = Any() + + override fun getOrNull(item: VaultItem2.Item): VaultItem2? { + val score = item.score?.score + if (score == lastScore) { + return null + } + + lastScore = score + if (score == null) { + return VaultItem2.Section( + id = "decorator.pw_strength.empty", + text = TextHolder.Value("No password"), + ) + } + return VaultItem2.Section( + id = "decorator.pw_strength.${score.name}", + text = TextHolder.Res(score.formatH()), + ) + } +} + +private suspend fun List>.search( + query: IndexedText, + highlightBackgroundColor: Color, + highlightContentColor: Color, +) = kotlin.run { + // Fast path if there's nothing to search from. + if (isEmpty()) { + return@run this + .map { + it.model + } + } + + val queryComponents = query + .components + .map { it.lowercase } + val timedValue = measureTimedValue { + parallelSearch { + val q = it.indexedOther + .fold(0f) { y, x -> + y + findAlike( + source = x.tokens, + query = queryComponents, + ) + }.div(it.indexedOther.size.coerceAtLeast(1)) + val r = it.indexedText.find( + query = query, + colorBackground = highlightBackgroundColor, + colorContent = highlightContentColor, + ) + if (r == null && q <= 0.0001f) { + return@parallelSearch null + } + FilteredModel( + model = it.model, + score = q + (r?.score ?: 0f), + result = r, + ) + } + .sortedWith( + compareBy( + { !it.model.favourite }, + { -it.score }, + ), + ) + .map { + it.result + ?: return@map it.model + // Replace the origin text with the one with + // search decor applied to it. + it.model.copy(title = it.result.highlightedText) + } + } + timedValue.value +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultRecentState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultRecentState.kt new file mode 100644 index 00000000..e8bf149d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultRecentState.kt @@ -0,0 +1,34 @@ +package com.artemchep.keyguard.feature.home.vault.screen + +import androidx.compose.runtime.Immutable +import arrow.optics.optics +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.feature.home.vault.model.VaultItem2 +import com.artemchep.keyguard.ui.tabs.CallsTabs +import kotlinx.collections.immutable.PersistentList +import kotlinx.collections.immutable.toPersistentList +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.emptyFlow + +@Immutable +@optics +data class VaultRecentState( + val revision: Int = 0, + val tabs: PersistentList = CallsTabs.entries.toPersistentList(), + val onSelectTab: ((CallsTabs) -> Unit)? = null, + val selectedTab: StateFlow = MutableStateFlow(CallsTabs.RECENTS), + val recent: StateFlow> = MutableStateFlow(emptyList()), + val sideEffects: SideEffects = SideEffects(), +) { + companion object; + + @Immutable + @optics + data class SideEffects( + val selectCipherFlow: Flow = emptyFlow(), + ) { + companion object + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultRecentStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultRecentStateProducer.kt new file mode 100644 index 00000000..448c6ac5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultRecentStateProducer.kt @@ -0,0 +1,234 @@ +package com.artemchep.keyguard.feature.home.vault.screen + +import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.Color +import arrow.core.partially1 +import com.artemchep.keyguard.common.model.CipherOpenedHistoryMode +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.service.clipboard.ClipboardService +import com.artemchep.keyguard.common.usecase.CipherToolbox +import com.artemchep.keyguard.common.usecase.ClearVaultSession +import com.artemchep.keyguard.common.usecase.DateFormatter +import com.artemchep.keyguard.common.usecase.GetAccounts +import com.artemchep.keyguard.common.usecase.GetAppIcons +import com.artemchep.keyguard.common.usecase.GetCanWrite +import com.artemchep.keyguard.common.usecase.GetCipherOpenedHistory +import com.artemchep.keyguard.common.usecase.GetCiphers +import com.artemchep.keyguard.common.usecase.GetCollections +import com.artemchep.keyguard.common.usecase.GetConcealFields +import com.artemchep.keyguard.common.usecase.GetFolders +import com.artemchep.keyguard.common.usecase.GetOrganizations +import com.artemchep.keyguard.common.usecase.GetPasswordStrength +import com.artemchep.keyguard.common.usecase.GetSuggestions +import com.artemchep.keyguard.common.usecase.GetTotpCode +import com.artemchep.keyguard.common.usecase.GetWebsiteIcons +import com.artemchep.keyguard.common.usecase.QueueSyncAll +import com.artemchep.keyguard.common.usecase.SupervisorRead +import com.artemchep.keyguard.common.util.flow.EventFlow +import com.artemchep.keyguard.feature.attachments.SelectableItemState +import com.artemchep.keyguard.feature.home.vault.model.VaultItem2 +import com.artemchep.keyguard.feature.navigation.state.PersistedStorage +import com.artemchep.keyguard.feature.navigation.state.copy +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.ui.tabs.CallsTabs +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.stateIn +import org.kodein.di.DirectDI +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +@Composable +fun vaultRecentScreenState( + highlightBackgroundColor: Color, + highlightContentColor: Color, +) = with(localDI().direct) { + vaultRecentScreenState( + directDI = this, + highlightBackgroundColor = highlightBackgroundColor, + highlightContentColor = highlightContentColor, + clearVaultSession = instance(), + getSuggestions = instance(), + getAccounts = instance(), + getCanWrite = instance(), + getCiphers = instance(), + getFolders = instance(), + getCollections = instance(), + getOrganizations = instance(), + getTotpCode = instance(), + getConcealFields = instance(), + getAppIcons = instance(), + getWebsiteIcons = instance(), + getPasswordStrength = instance(), + getCipherOpenedHistory = instance(), + toolbox = instance(), + queueSyncAll = instance(), + syncSupervisor = instance(), + dateFormatter = instance(), + clipboardService = instance(), + ) +} + +@Composable +fun vaultRecentScreenState( + directDI: DirectDI, + highlightBackgroundColor: Color, + highlightContentColor: Color, + getSuggestions: GetSuggestions, + getAccounts: GetAccounts, + getCanWrite: GetCanWrite, + getCiphers: GetCiphers, + getFolders: GetFolders, + getCollections: GetCollections, + getOrganizations: GetOrganizations, + getTotpCode: GetTotpCode, + getConcealFields: GetConcealFields, + getAppIcons: GetAppIcons, + getWebsiteIcons: GetWebsiteIcons, + getPasswordStrength: GetPasswordStrength, + getCipherOpenedHistory: GetCipherOpenedHistory, + clearVaultSession: ClearVaultSession, + toolbox: CipherToolbox, + queueSyncAll: QueueSyncAll, + syncSupervisor: SupervisorRead, + dateFormatter: DateFormatter, + clipboardService: ClipboardService, +): Loadable = produceScreenState( + key = "vault_recent", + initial = Loadable.Loading, + args = arrayOf( + getAccounts, + getCiphers, + getTotpCode, + dateFormatter, + clipboardService, + ), +) { + val storage = kotlin.run { + val disk = loadDiskHandle("vault.recent") + PersistedStorage.InDisk(disk) + } + + val tabSink = mutablePersistedFlow( + key = "tab", + storage = storage, + ) { + CallsTabs.default.name + } + val tabFlow = tabSink + .map { + kotlin.runCatching { + CallsTabs.valueOf(it) + }.getOrNull() ?: CallsTabs.default + } + .stateIn(screenScope) + + val copy = copy(clipboardService) + + val cipherSink = EventFlow() + + val recentState = MutableStateFlow( + VaultItem2.Item.LocalState( + openedState = VaultItem2.Item.OpenedState(false), + selectableItemState = SelectableItemState( + selected = false, + selecting = false, + can = true, + onClick = null, + onLongClick = null, + ), + ), + ) + + data class ConfigMapper( + val concealFields: Boolean, + val appIcons: Boolean, + val websiteIcons: Boolean, + ) + + val configFlow = combine( + getConcealFields(), + getAppIcons(), + getWebsiteIcons(), + ) { concealFields, appIcons, websiteIcons -> + ConfigMapper( + concealFields = concealFields, + appIcons = appIcons, + websiteIcons = websiteIcons, + ) + }.distinctUntilChanged() + val organizationsByIdFlow = getOrganizations() + .map { organizations -> + organizations + .associateBy { it.id } + } + val recentFLow = tabFlow + .flatMapLatest { tab -> + val mode = when (tab) { + CallsTabs.RECENTS -> CipherOpenedHistoryMode.Recent + CallsTabs.FAVORITES -> CipherOpenedHistoryMode.Popular + } + getCipherOpenedHistory(mode) + } + .map { items -> + items + .asSequence() + .map { it.cipherId } + .toSet() + } + .combine(getCiphers()) { recents, ciphers -> + recents + .mapNotNull { recentId -> + ciphers + .firstOrNull { it.id == recentId } + } + } + + val recent = combine( + recentFLow, + organizationsByIdFlow, + configFlow, + ) { secrets, organizationsById, cfg -> Triple(secrets, organizationsById, cfg) } + .map { (secrets, organizationsById, cfg) -> + secrets + .map { secret -> + secret.toVaultListItem( + copy = copy, + translator = this, + getTotpCode = getTotpCode, + concealFields = cfg.concealFields, + appIcons = cfg.appIcons, + websiteIcons = cfg.websiteIcons, + organizationsById = organizationsById, + localStateFlow = recentState, + onClick = { actions -> + VaultItem2.Item.Action.Go( + onClick = cipherSink::emit.partially1(secret), + ) + }, + onClickPasskey = { + null + }, + ) + } + } + + val defaultState = VaultRecentState( + recent = recent + .stateIn(screenScope), + selectedTab = tabFlow, + onSelectTab = { tab -> + tabSink.value = tab.name + }, + sideEffects = VaultRecentState.SideEffects( + selectCipherFlow = cipherSink, + ), + ) + flowOf(Loadable.Ok(defaultState)) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewPasswordHistoryRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewPasswordHistoryRoute.kt new file mode 100644 index 00000000..4d9cf3ac --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewPasswordHistoryRoute.kt @@ -0,0 +1,15 @@ +package com.artemchep.keyguard.feature.home.vault.screen + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.Route + +data class VaultViewPasswordHistoryRoute( + val itemId: String, +) : Route { + @Composable + override fun Content() { + VaultViewPasswordHistoryScreen( + itemId = itemId, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewPasswordHistoryScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewPasswordHistoryScreen.kt new file mode 100644 index 00000000..5ddd2ef9 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewPasswordHistoryScreen.kt @@ -0,0 +1,171 @@ +package com.artemchep.keyguard.feature.home.vault.screen + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.lazy.LazyListScope +import androidx.compose.foundation.lazy.items +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.text.style.TextOverflow +import com.artemchep.keyguard.feature.EmptyView +import com.artemchep.keyguard.feature.home.vault.component.VaultPasswordHistoryItem +import com.artemchep.keyguard.feature.home.vault.model.VaultPasswordHistoryItem +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.DefaultSelection +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.OptionsButton +import com.artemchep.keyguard.ui.ScaffoldLazyColumn +import com.artemchep.keyguard.ui.skeleton.SkeletonItem +import com.artemchep.keyguard.ui.skeleton.SkeletonText +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.toolbar.LargeToolbar +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.collections.immutable.ImmutableList + +private const val SKELETON_ITEMS_COUNT = 2 + +@Composable +fun VaultViewPasswordHistoryScreen( + itemId: String, +) { + val state = vaultViewPasswordHistoryScreenState( + itemId = itemId, + ) + VaultViewPasswordHistoryScreen( + state = state, + ) +} + +@OptIn(ExperimentalMaterial3Api::class, ExperimentalLayoutApi::class) +@Composable +fun VaultViewPasswordHistoryScreen( + state: VaultViewPasswordHistoryState, +) { + val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + ScaffoldLazyColumn( + modifier = Modifier + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + LargeToolbar( + title = { + ToolbarTitle( + state = state, + ) + }, + navigationIcon = { + NavigationIcon() + }, + actions = { + val actions = + (state.content as? VaultViewPasswordHistoryState.Content.Cipher)?.actions.orEmpty() + OptionsButton( + actions = actions, + ) + }, + scrollBehavior = scrollBehavior, + ) + }, + bottomBar = { + val selectionOrNull = + (state.content as? VaultViewPasswordHistoryState.Content.Cipher)?.selection + DefaultSelection( + state = selectionOrNull, + ) + }, + ) { + when (state.content) { + is VaultViewPasswordHistoryState.Content.Loading -> { + // Show a bunch of skeleton items, so it makes an impression of a + // fully loaded screen. + populateItemsSkeleton() + } + + is VaultViewPasswordHistoryState.Content.Cipher -> { + populateItemsContent( + items = state.content.items, + ) + } + + else -> { + // Do nothing. + } + } + } +} + +private fun LazyListScope.populateItemsSkeleton() { + for (i in 0 until SKELETON_ITEMS_COUNT) { + item("skeleton.$i") { + SkeletonItem() + } + } +} + +private fun LazyListScope.populateItemsContent( + items: ImmutableList, +) { + if (items.isEmpty()) { + item("empty") { + EmptyView() + } + } + items( + items = items, + key = { model -> model.id }, + ) { model -> + VaultPasswordHistoryItem( + item = model, + ) + } +} + +@Composable +private fun ToolbarTitle( + state: VaultViewPasswordHistoryState, +) = Column { + when (state.content) { + is VaultViewPasswordHistoryState.Content.Loading -> { + SkeletonText( + modifier = Modifier + .fillMaxWidth(0.33f), + style = MaterialTheme.typography.labelSmall, + emphasis = MediumEmphasisAlpha, + ) + } + + is VaultViewPasswordHistoryState.Content.Cipher -> { + val name = state.content.data.name + Text( + text = name, + style = MaterialTheme.typography.labelSmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + overflow = TextOverflow.Ellipsis, + maxLines = 2, + ) + } + + is VaultViewPasswordHistoryState.Content.NotFound -> { + Text( + text = "Not found", + style = MaterialTheme.typography.labelSmall, + color = MaterialTheme.colorScheme.error, + ) + } + } + Text( + text = stringResource(Res.strings.passwordhistory_header_title), + style = MaterialTheme.typography.titleMedium, + overflow = TextOverflow.Ellipsis, + maxLines = 1, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewPasswordHistoryState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewPasswordHistoryState.kt new file mode 100644 index 00000000..13724af7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewPasswordHistoryState.kt @@ -0,0 +1,38 @@ +package com.artemchep.keyguard.feature.home.vault.screen + +import androidx.compose.runtime.Immutable +import arrow.optics.optics +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.feature.home.vault.model.VaultPasswordHistoryItem +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.Selection +import kotlinx.collections.immutable.ImmutableList + +@Immutable +@optics +data class VaultViewPasswordHistoryState( + val content: Content = Content.Loading, +) { + companion object; + + @Immutable + sealed interface Content { + companion object; + + @Immutable + data class Cipher( + val selection: Selection? = null, + val data: DSecret, + val items: ImmutableList, + val actions: ImmutableList, + ) : Content { + companion object; + } + + @Immutable + data object NotFound : Content + + @Immutable + data object Loading : Content + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewPasswordHistoryStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewPasswordHistoryStateProducer.kt new file mode 100644 index 00000000..c344b974 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewPasswordHistoryStateProducer.kt @@ -0,0 +1,296 @@ +package com.artemchep.keyguard.feature.home.vault.screen + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Delete +import androidx.compose.runtime.Composable +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.service.clipboard.ClipboardService +import com.artemchep.keyguard.common.usecase.CipherRemovePasswordHistory +import com.artemchep.keyguard.common.usecase.CipherRemovePasswordHistoryById +import com.artemchep.keyguard.common.usecase.DateFormatter +import com.artemchep.keyguard.common.usecase.GetAccounts +import com.artemchep.keyguard.common.usecase.GetCanWrite +import com.artemchep.keyguard.common.usecase.GetCiphers +import com.artemchep.keyguard.feature.confirmation.ConfirmationResult +import com.artemchep.keyguard.feature.confirmation.ConfirmationRoute +import com.artemchep.keyguard.feature.home.vault.model.VaultPasswordHistoryItem +import com.artemchep.keyguard.feature.largetype.LargeTypeRoute +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.registerRouteResultReceiver +import com.artemchep.keyguard.feature.navigation.state.copy +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.feature.passwordleak.PasswordLeakRoute +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.ContextItem +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.Selection +import com.artemchep.keyguard.ui.buildContextItems +import com.artemchep.keyguard.ui.icons.icon +import kotlinx.collections.immutable.persistentListOf +import kotlinx.collections.immutable.toPersistentList +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onEach +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +@Composable +fun vaultViewPasswordHistoryScreenState( + itemId: String, +) = with(localDI().direct) { + vaultViewPasswordHistoryScreenState( + getCanWrite = instance(), + getAccounts = instance(), + getCiphers = instance(), + cipherRemovePasswordHistory = instance(), + cipherRemovePasswordHistoryById = instance(), + clipboardService = instance(), + dateFormatter = instance(), + itemId = itemId, + ) +} + +@Composable +fun vaultViewPasswordHistoryScreenState( + getCanWrite: GetCanWrite, + getAccounts: GetAccounts, + getCiphers: GetCiphers, + cipherRemovePasswordHistory: CipherRemovePasswordHistory, + cipherRemovePasswordHistoryById: CipherRemovePasswordHistoryById, + clipboardService: ClipboardService, + dateFormatter: DateFormatter, + itemId: String, +) = produceScreenState( + key = "vault_password_history", + initial = VaultViewPasswordHistoryState(), + args = arrayOf( + getAccounts, + getCiphers, + cipherRemovePasswordHistory, + cipherRemovePasswordHistoryById, + clipboardService, + dateFormatter, + itemId, + ), +) { + val copy = copy( + clipboardService = clipboardService, + ) + val secretFlow = getCiphers() + .map { secrets -> + secrets + .firstOrNull { it.id == itemId } + } + .distinctUntilChanged() + + val selectionSink = mutablePersistedFlow("selection") { + listOf() + } + // Automatically remove selection from items + // that do not exist anymore. + secretFlow + .onEach { secretOrNull -> + val f = secretOrNull?.login?.passwordHistory.orEmpty() + val selectedAccountIds = selectionSink.value + val filteredSelectedAccountIds = selectedAccountIds + .filter { id -> + f.any { it.id == id } + } + if (filteredSelectedAccountIds.size < selectedAccountIds.size) { + selectionSink.value = filteredSelectedAccountIds + } + } + .launchIn(this) + + fun clearSelection() { + selectionSink.value = emptyList() + } + + fun toggleSelection(entry: DSecret.Login.PasswordHistory) { + val entryId = entry.id + + val oldAccountIds = selectionSink.value + val newAccountIds = + if (entryId in oldAccountIds) { + oldAccountIds - entryId + } else { + oldAccountIds + entryId + } + selectionSink.value = newAccountIds + } + + val selectionFlow = combine( + selectionSink, + getCanWrite(), + ) { ids, canWrite -> + if (ids.isEmpty()) { + return@combine null + } + + val actions = if (canWrite) { + val removeAction = FlatItemAction( + icon = Icons.Outlined.Delete, + title = translate(Res.strings.remove_from_history), + onClick = { + val route = registerRouteResultReceiver( + route = ConfirmationRoute( + args = ConfirmationRoute.Args( + icon = icon(Icons.Outlined.Delete), + title = "Remove ${ids.size} passwords from the history?", + ), + ), + ) { + if (it is ConfirmationResult.Confirm) { + cipherRemovePasswordHistoryById( + itemId, + ids, + ).launchIn(appScope) + } + } + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + persistentListOf( + removeAction, + ) + } else { + persistentListOf() + } + Selection( + count = ids.size, + actions = actions, + onClear = ::clearSelection, + ) + } + + val itemsFlow = secretFlow + .map { secretOrNull -> + secretOrNull + ?.login + ?.passwordHistory + .orEmpty() + } + .distinctUntilChanged() + .map { passwordHistory -> + passwordHistory + .sortedByDescending { it.lastUsedDate } + .map { password -> + TempPasswordHistory( + src = password, + date = dateFormatter.formatDateTime(password.lastUsedDate), + actions = buildContextItems { + section { + this += copy.FlatItemAction( + title = translate(Res.strings.copy_password), + value = password.password, + ) + } + section { + this += LargeTypeRoute.showInLargeTypeActionOrNull( + translator = this@produceScreenState, + text = password.password, + colorize = true, + navigate = ::navigate, + ) + this += LargeTypeRoute.showInLargeTypeActionAndLockOrNull( + translator = this@produceScreenState, + text = password.password, + colorize = true, + navigate = ::navigate, + ) + } + section { + this += PasswordLeakRoute.checkBreachesPasswordAction( + translator = this@produceScreenState, + password = password.password, + navigate = ::navigate, + ) + } + }, + ) + } + } + .combine(selectionSink) { passwords, ids -> + val selectionMode = ids.isNotEmpty() + passwords + .asSequence() + .map { passwordWrapper -> + val password = passwordWrapper.src + val selected = password.id in ids + val onToggle = ::toggleSelection.partially1(password) + VaultPasswordHistoryItem.Value( + id = password.id, + title = passwordWrapper.date, + value = password.password, + dropdown = passwordWrapper.actions, + monospace = true, + selected = selected, + selecting = selectionMode, + onClick = onToggle.takeIf { selectionMode }, + onLongClick = onToggle.takeUnless { selectionMode }, + ) + } + .toPersistentList() + } + + val actionsFlow = flowOf( + persistentListOf( + FlatItemAction( + icon = Icons.Outlined.Delete, + title = translate(Res.strings.passwordhistory_clear_history_title), + onClick = { + val route = registerRouteResultReceiver( + route = ConfirmationRoute( + args = ConfirmationRoute.Args( + icon = icon(Icons.Outlined.Delete), + title = translate(Res.strings.passwordhistory_clear_history_confirmation_title), + message = translate(Res.strings.passwordhistory_clear_history_confirmation_text), + ), + ), + ) { + if (it is ConfirmationResult.Confirm) { + cipherRemovePasswordHistory( + itemId, + ).launchIn(appScope) + } + } + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ), + ), + ) + + combine( + secretFlow, + itemsFlow, + actionsFlow, + selectionFlow, + ) { secretOrNull, items, actions, selection -> + val content = when (secretOrNull) { + null -> VaultViewPasswordHistoryState.Content.NotFound + else -> VaultViewPasswordHistoryState.Content.Cipher( + data = secretOrNull, + selection = selection, + items = items, + actions = actions, + ) + } + VaultViewPasswordHistoryState( + content = content, + ) + } +} + +private data class TempPasswordHistory( + val src: DSecret.Login.PasswordHistory, + val actions: List, + val date: String, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewRoute.kt new file mode 100644 index 00000000..5c2b00a8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewRoute.kt @@ -0,0 +1,17 @@ +package com.artemchep.keyguard.feature.home.vault.screen + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.Route + +data class VaultViewRoute( + val itemId: String, + val accountId: String, +) : Route { + @Composable + override fun Content() { + VaultViewScreen( + itemId = itemId, + accountId = accountId, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewScreen.kt new file mode 100644 index 00000000..6d3c8d2f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewScreen.kt @@ -0,0 +1,393 @@ +@file:OptIn(ExperimentalMaterial3Api::class) + +package com.artemchep.keyguard.feature.home.vault.screen + +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.LazyListState +import androidx.compose.foundation.lazy.items +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Edit +import androidx.compose.material.icons.outlined.Lock +import androidx.compose.material.icons.outlined.SearchOff +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.LocalAbsoluteTonalElevation +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.material3.minimumInteractiveComponentSize +import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.alpha +import androidx.compose.ui.draw.clip +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.LocalAppMode +import com.artemchep.keyguard.feature.EmptyView +import com.artemchep.keyguard.feature.home.vault.component.VaultItemIcon2 +import com.artemchep.keyguard.feature.home.vault.component.VaultViewItem +import com.artemchep.keyguard.feature.home.vault.component.rememberSecretAccentColor +import com.artemchep.keyguard.feature.home.vault.component.surfaceColorAtElevationSemi +import com.artemchep.keyguard.feature.home.vault.model.VaultItemIcon +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.ui.Avatar +import com.artemchep.keyguard.ui.DefaultFab +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.FabState +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.FlatItemLayout +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.OptionsButton +import com.artemchep.keyguard.ui.ScaffoldLazyColumn +import com.artemchep.keyguard.ui.button.FavouriteToggleButton +import com.artemchep.keyguard.ui.icons.OfflineIcon +import com.artemchep.keyguard.ui.shimmer.shimmer +import com.artemchep.keyguard.ui.skeleton.SkeletonText +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.toolbar.LargeToolbar + +@Composable +fun VaultViewScreen( + itemId: String, + accountId: String, +) { + val state = vaultViewScreenState( + mode = LocalAppMode.current, + contentColor = LocalContentColor.current, + disabledContentColor = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + itemId = itemId, + accountId = accountId, + ) + VaultViewScreenContent( + state = state, + ) +} + +@OptIn(ExperimentalMaterial3Api::class, ExperimentalFoundationApi::class) +@Composable +fun VaultViewScreenContent( + state: VaultViewState, +) { + val listState = rememberSaveable( + 0, + saver = LazyListState.Saver, + ) { + LazyListState( + firstVisibleItemIndex = 0, + firstVisibleItemScrollOffset = 0, + ) + } + val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + ScaffoldLazyColumn( + modifier = Modifier + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + LargeToolbar( + title = { + VaultViewTitle( + state = state, + ) + }, + navigationIcon = { + NavigationIcon() + }, + actions = { + VaultViewTitleActions( + state = state, + ) + }, + scrollBehavior = scrollBehavior, + ) + }, + floatingActionState = run { + val action = (state.content as? VaultViewState.Content.Cipher) + ?.primaryAction + val fabState = if (action != null) { + FabState( + onClick = action.onClick, + model = action, + ) + } else { + null + } + rememberUpdatedState(newValue = fabState) + }, + floatingActionButton = { + val action = this.state.value?.model as? FlatItemAction + if (action != null) { + DefaultFab( + icon = { + action.leading?.invoke() + }, + text = { + Text( + text = action.title, + ) + }, + ) + } + }, + listState = listState, + ) { + when (state.content) { + is VaultViewState.Content.Loading -> { + // Show a bunch of skeleton items, so it makes an impression of a + // fully loaded screen. + for (i in 0..1) { + item(i) { + val contentColor = + LocalContentColor.current.copy(alpha = DisabledEmphasisAlpha) + FlatItemLayout( + modifier = Modifier + .shimmer(), + backgroundColor = contentColor.copy(alpha = 0.08f), + content = { + Box( + Modifier + .height(13.dp) + .fillMaxWidth(0.15f) + .clip(MaterialTheme.shapes.medium) + .background(contentColor.copy(alpha = 0.2f)), + ) + Box( + Modifier + .padding(top = 4.dp) + .height(18.dp) + .fillMaxWidth(0.38f) + .clip(MaterialTheme.shapes.medium) + .background(contentColor), + ) + }, + ) + } + } + item(-1) { + val contentColor = + LocalContentColor.current.copy(alpha = DisabledEmphasisAlpha) + Box( + modifier = Modifier + .padding(top = 8.dp) + .fillMaxWidth(), + contentAlignment = Alignment.Center, + ) { + Box( + Modifier + .shimmer() + .height(10.dp) + .fillMaxWidth(0.38f) + .clip(MaterialTheme.shapes.medium) + .background(contentColor.copy(alpha = 0.23f)), + ) + } + Box( + modifier = Modifier + .padding(top = 8.dp) + .fillMaxWidth(), + contentAlignment = Alignment.Center, + ) { + Box( + Modifier + .shimmer() + .height(10.dp) + .fillMaxWidth(0.38f) + .clip(MaterialTheme.shapes.medium) + .background(contentColor.copy(alpha = 0.23f)), + ) + } + } + } + + is VaultViewState.Content.Cipher -> { + val list = state.content.items + if (list.isEmpty()) { + item("header.empty") { + NoItemsPlaceholder() + } + } + items( + items = list, + key = { model -> model.id }, + ) { model -> + VaultViewItem( + modifier = Modifier, + // .animateItemPlacement(), + item = model, + ) + } + } + + else -> { + // Do nothing. + } + } + } +} + +@Composable +private fun VaultViewTitle( + state: VaultViewState, +) = Row( + verticalAlignment = Alignment.CenterVertically, +) { + val isLoading = state.content is VaultViewState.Content.Loading + val shimmerColor = LocalContentColor.current + .combineAlpha(DisabledEmphasisAlpha) + + val avatarBackground = when (state.content) { + is VaultViewState.Content.Loading -> shimmerColor + is VaultViewState.Content.NotFound -> shimmerColor + is VaultViewState.Content.Cipher -> { + val avatarIcon = state.content.icon + val avatarBackground = if ( + (avatarIcon !is VaultItemIcon.VectorIcon && + avatarIcon !is VaultItemIcon.TextIcon) || + state.content.data.service.remote == null + ) { + val elevation = LocalAbsoluteTonalElevation.current + 8.dp + MaterialTheme.colorScheme + .surfaceColorAtElevationSemi(elevation = elevation) + .combineAlpha(LocalContentColor.current.alpha) + } else { + rememberSecretAccentColor( + accentLight = state.content.data.accentLight, + accentDark = state.content.data.accentDark, + ) + } + avatarBackground + } + } + Avatar( + modifier = Modifier + .then( + if (isLoading) { + Modifier + .shimmer() + } else { + Modifier + }, + ), + color = avatarBackground, + ) { + val icon = VaultViewState.content.cipher.icon.getOrNull(state) + if (icon != null) { + VaultItemIcon2( + icon, + modifier = Modifier + .alpha(LocalContentColor.current.alpha), + ) + } + } + Spacer(modifier = Modifier.width(16.dp)) + when (state.content) { + is VaultViewState.Content.Loading -> { + SkeletonText( + modifier = Modifier + .fillMaxWidth(0.33f), + emphasis = MediumEmphasisAlpha, + ) + // Apparently a text has some sort of margins? + Text("") + } + + is VaultViewState.Content.Cipher -> { + val name = state.content.data.name + Text( + text = name, + maxLines = 2, + overflow = TextOverflow.Ellipsis, + ) + } + + is VaultViewState.Content.NotFound -> { + Text( + text = "Not found", + color = MaterialTheme.colorScheme.error + .combineAlpha(LocalContentColor.current.alpha), + ) + } + } + Spacer(modifier = Modifier.width(8.dp)) +} + +@Composable +private fun RowScope.VaultViewTitleActions( + state: VaultViewState, +) { + if (state.content is VaultViewState.Content.Cipher) { + val elevated = state.content.locked.collectAsState() + AnimatedVisibility( + modifier = Modifier + .alpha(LocalContentColor.current.alpha), + visible = !elevated.value, + ) { + Icon( + modifier = Modifier + .minimumInteractiveComponentSize() + .alpha(DisabledEmphasisAlpha), + imageVector = Icons.Outlined.Lock, + contentDescription = null, + ) + } + val synced = state.content.synced + AnimatedVisibility( + modifier = Modifier + .alpha(LocalContentColor.current.alpha), + visible = !synced, + ) { + OfflineIcon( + modifier = Modifier + .minimumInteractiveComponentSize(), + ) + } + val favorite = state.content.data.favorite + FavouriteToggleButton( + favorite = favorite, + onChange = state.content.onFavourite, + ) + IconButton( + onClick = { + state.content.onEdit?.invoke() + }, + enabled = state.content.onEdit != null, + ) { + Icon( + imageVector = Icons.Outlined.Edit, + contentDescription = null, + ) + } + OptionsButton( + actions = state.content.actions, + ) + } +} + +@Composable +private fun NoItemsPlaceholder() { + EmptyView( + icon = { + Icon(Icons.Outlined.SearchOff, null) + }, + text = { + Text(text = "No items") + }, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewState.kt new file mode 100644 index 00000000..ed9044bf --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewState.kt @@ -0,0 +1,45 @@ +package com.artemchep.keyguard.feature.home.vault.screen + +import androidx.compose.runtime.Immutable +import arrow.optics.optics +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.feature.home.vault.model.VaultItemIcon +import com.artemchep.keyguard.feature.home.vault.model.VaultViewItem +import com.artemchep.keyguard.ui.FlatItemAction +import kotlinx.coroutines.flow.StateFlow + +@Immutable +@optics +data class VaultViewState( + val content: Content = Content.Loading, +) { + companion object; + + @Immutable + @optics + sealed interface Content { + companion object; + + @Immutable + @optics + data class Cipher( + val locked: StateFlow, + val data: DSecret, + val icon: VaultItemIcon, + val synced: Boolean, + val onFavourite: ((Boolean) -> Unit)?, + val onEdit: (() -> Unit)?, + val actions: List, + val primaryAction: FlatItemAction?, + val items: List, + ) : Content { + companion object; + } + + @Immutable + data object NotFound : Content + + @Immutable + data object Loading : Content + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewStateProducer.kt new file mode 100644 index 00000000..6ba9a91f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewStateProducer.kt @@ -0,0 +1,2402 @@ +package com.artemchep.keyguard.feature.home.vault.screen + +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Android +import androidx.compose.material.icons.outlined.AutoAwesome +import androidx.compose.material.icons.outlined.Call +import androidx.compose.material.icons.outlined.ContentCopy +import androidx.compose.material.icons.outlined.Directions +import androidx.compose.material.icons.outlined.Email +import androidx.compose.material.icons.outlined.Key +import androidx.compose.material.icons.outlined.Launch +import androidx.compose.material.icons.outlined.Link +import androidx.compose.material.icons.outlined.Password +import androidx.compose.material.icons.outlined.PhoneIphone +import androidx.compose.material.icons.outlined.Save +import androidx.compose.material.icons.outlined.Terminal +import androidx.compose.material.icons.outlined.Textsms +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.Switch +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.SpanStyle +import androidx.compose.ui.text.buildAnnotatedString +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.unit.dp +import arrow.core.getOrElse +import com.artemchep.keyguard.AppMode +import com.artemchep.keyguard.android.downloader.journal.room.DownloadInfoEntity2 +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.model.AddCipherOpenedHistoryRequest +import com.artemchep.keyguard.common.model.BarcodeImageFormat +import com.artemchep.keyguard.common.model.CheckPasswordLeakRequest +import com.artemchep.keyguard.common.model.CipherFieldSwitchToggleRequest +import com.artemchep.keyguard.common.model.DAccount +import com.artemchep.keyguard.common.model.DCollection +import com.artemchep.keyguard.common.model.DFilter +import com.artemchep.keyguard.common.model.DFolderTree +import com.artemchep.keyguard.common.model.DOrganization +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.DownloadAttachmentRequest +import com.artemchep.keyguard.common.model.LinkInfo +import com.artemchep.keyguard.common.model.LinkInfoAndroid +import com.artemchep.keyguard.common.model.LinkInfoExecute +import com.artemchep.keyguard.common.model.LinkInfoLaunch +import com.artemchep.keyguard.common.model.LinkInfoPlatform +import com.artemchep.keyguard.common.model.RemoveAttachmentRequest +import com.artemchep.keyguard.common.model.UsernameVariation2 +import com.artemchep.keyguard.common.model.UsernameVariationIcon +import com.artemchep.keyguard.common.model.alertScore +import com.artemchep.keyguard.common.model.canDelete +import com.artemchep.keyguard.common.model.canEdit +import com.artemchep.keyguard.common.model.formatH +import com.artemchep.keyguard.common.model.titleH +import com.artemchep.keyguard.common.service.clipboard.ClipboardService +import com.artemchep.keyguard.common.service.download.DownloadManager +import com.artemchep.keyguard.common.service.extract.LinkInfoExtractor +import com.artemchep.keyguard.common.service.extract.LinkInfoRegistry +import com.artemchep.keyguard.common.service.passkey.PassKeyService +import com.artemchep.keyguard.common.service.twofa.TwoFaService +import com.artemchep.keyguard.common.usecase.AddCipherOpenedHistory +import com.artemchep.keyguard.common.usecase.ChangeCipherNameById +import com.artemchep.keyguard.common.usecase.ChangeCipherPasswordById +import com.artemchep.keyguard.common.usecase.CheckPasswordLeak +import com.artemchep.keyguard.common.usecase.CipherExpiringCheck +import com.artemchep.keyguard.common.usecase.CipherFieldSwitchToggle +import com.artemchep.keyguard.common.usecase.CipherIncompleteCheck +import com.artemchep.keyguard.common.usecase.CipherUnsecureUrlAutoFix +import com.artemchep.keyguard.common.usecase.CipherUnsecureUrlCheck +import com.artemchep.keyguard.common.usecase.CipherUrlCheck +import com.artemchep.keyguard.common.usecase.CopyCipherById +import com.artemchep.keyguard.common.usecase.CopyText +import com.artemchep.keyguard.common.usecase.DateFormatter +import com.artemchep.keyguard.common.usecase.DownloadAttachment +import com.artemchep.keyguard.common.usecase.FavouriteCipherById +import com.artemchep.keyguard.common.usecase.GetAccounts +import com.artemchep.keyguard.common.usecase.GetAppIcons +import com.artemchep.keyguard.common.usecase.GetCanWrite +import com.artemchep.keyguard.common.usecase.GetCiphers +import com.artemchep.keyguard.common.usecase.GetCollections +import com.artemchep.keyguard.common.usecase.GetConcealFields +import com.artemchep.keyguard.common.usecase.GetFolderTreeById +import com.artemchep.keyguard.common.usecase.GetFolders +import com.artemchep.keyguard.common.usecase.GetGravatarUrl +import com.artemchep.keyguard.common.usecase.GetJustDeleteMeByUrl +import com.artemchep.keyguard.common.usecase.GetMarkdown +import com.artemchep.keyguard.common.usecase.GetOrganizations +import com.artemchep.keyguard.common.usecase.GetPasswordStrength +import com.artemchep.keyguard.common.usecase.GetTotpCode +import com.artemchep.keyguard.common.usecase.GetWebsiteIcons +import com.artemchep.keyguard.common.usecase.MoveCipherToFolderById +import com.artemchep.keyguard.common.usecase.PasskeyTargetCheck +import com.artemchep.keyguard.common.usecase.RePromptCipherById +import com.artemchep.keyguard.common.usecase.RemoveAttachment +import com.artemchep.keyguard.common.usecase.RemoveCipherById +import com.artemchep.keyguard.common.usecase.RestoreCipherById +import com.artemchep.keyguard.common.usecase.RetryCipher +import com.artemchep.keyguard.common.usecase.TrashCipherById +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.common.util.flow.persistingStateIn +import com.artemchep.keyguard.core.store.bitwarden.canRetry +import com.artemchep.keyguard.core.store.bitwarden.expired +import com.artemchep.keyguard.core.store.bitwarden.message +import com.artemchep.keyguard.feature.attachments.util.createAttachmentItem +import com.artemchep.keyguard.feature.auth.common.util.REGEX_EMAIL +import com.artemchep.keyguard.feature.barcodetype.BarcodeTypeRoute +import com.artemchep.keyguard.feature.confirmation.elevatedaccess.createElevatedAccessDialogIntent +import com.artemchep.keyguard.feature.crashlytics.crashlyticsTap +import com.artemchep.keyguard.feature.emailleak.EmailLeakRoute +import com.artemchep.keyguard.feature.favicon.FaviconImage +import com.artemchep.keyguard.feature.favicon.FaviconUrl +import com.artemchep.keyguard.feature.home.vault.VaultRoute +import com.artemchep.keyguard.feature.home.vault.add.AddRoute +import com.artemchep.keyguard.feature.home.vault.add.LeAddRoute +import com.artemchep.keyguard.feature.home.vault.collections.CollectionsRoute +import com.artemchep.keyguard.feature.home.vault.model.VaultViewItem +import com.artemchep.keyguard.feature.home.vault.search.sort.PasswordSort +import com.artemchep.keyguard.feature.home.vault.util.cipherChangeNameAction +import com.artemchep.keyguard.feature.home.vault.util.cipherChangePasswordAction +import com.artemchep.keyguard.feature.home.vault.util.cipherCopyToAction +import com.artemchep.keyguard.feature.home.vault.util.cipherDeleteAction +import com.artemchep.keyguard.feature.home.vault.util.cipherDisableConfirmAccessAction +import com.artemchep.keyguard.feature.home.vault.util.cipherEnableConfirmAccessAction +import com.artemchep.keyguard.feature.home.vault.util.cipherMoveToFolderAction +import com.artemchep.keyguard.feature.home.vault.util.cipherRestoreAction +import com.artemchep.keyguard.feature.home.vault.util.cipherTrashAction +import com.artemchep.keyguard.feature.home.vault.util.cipherViewPasswordHistoryAction +import com.artemchep.keyguard.feature.justdeleteme.directory.JustDeleteMeServiceViewRoute +import com.artemchep.keyguard.feature.largetype.LargeTypeRoute +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.state.RememberStateFlowScope +import com.artemchep.keyguard.feature.navigation.state.TranslatorScope +import com.artemchep.keyguard.feature.navigation.state.copy +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.feature.passkeys.PasskeysCredentialViewRoute +import com.artemchep.keyguard.feature.passkeys.directory.PasskeysServiceViewRoute +import com.artemchep.keyguard.feature.passwordleak.PasswordLeakRoute +import com.artemchep.keyguard.feature.send.action.createSendActionOrNull +import com.artemchep.keyguard.feature.send.action.createShareAction +import com.artemchep.keyguard.feature.tfa.directory.TwoFaServiceViewRoute +import com.artemchep.keyguard.feature.websiteleak.WebsiteLeakRoute +import com.artemchep.keyguard.platform.util.isRelease +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.ContextItem +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.buildContextItems +import com.artemchep.keyguard.ui.colorizePassword +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.IconBox +import com.artemchep.keyguard.ui.icons.IconBox2 +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.icons.iconSmall +import com.artemchep.keyguard.ui.selection.SelectionHandle +import com.artemchep.keyguard.ui.selection.selectionHandle +import com.artemchep.keyguard.ui.text.annotate +import com.artemchep.keyguard.ui.totp.formatCode2 +import kotlinx.collections.immutable.persistentListOf +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.asFlow +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.flow +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.stateIn +import kotlinx.coroutines.flow.toList +import kotlinx.datetime.Clock +import org.kodein.di.allInstances +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance +import java.net.URI + +@Composable +fun vaultViewScreenState( + mode: AppMode, + contentColor: Color, + disabledContentColor: Color, + itemId: String, + accountId: String, +) = with(localDI().direct) { + vaultViewScreenState( + getAccounts = instance(), + getCanWrite = instance(), + getCiphers = instance(), + getCollections = instance(), + getOrganizations = instance(), + getFolders = instance(), + getFolderTreeById = instance(), + getConcealFields = instance(), + getMarkdown = instance(), + getAppIcons = instance(), + getWebsiteIcons = instance(), + getTotpCode = instance(), + getPasswordStrength = instance(), + passkeyTargetCheck = instance(), + cipherUnsecureUrlCheck = instance(), + cipherUnsecureUrlAutoFix = instance(), + cipherFieldSwitchToggle = instance(), + moveCipherToFolderById = instance(), + rePromptCipherById = instance(), + changeCipherNameById = instance(), + changeCipherPasswordById = instance(), + checkPasswordLeak = instance(), + retryCipher = instance(), + copyCipherById = instance(), + restoreCipherById = instance(), + trashCipherById = instance(), + removeCipherById = instance(), + favouriteCipherById = instance(), + downloadManager = instance(), + downloadAttachment = instance(), + removeAttachment = instance(), + cipherExpiringCheck = instance(), + cipherIncompleteCheck = instance(), + cipherUrlCheck = instance(), + passKeyService = instance(), + tfaService = instance(), + clipboardService = instance(), + getGravatarUrl = instance(), + dateFormatter = instance(), + addCipherOpenedHistory = instance(), + getJustDeleteMeByUrl = instance(), + windowCoroutineScope = instance(), + linkInfoExtractors = allInstances(), + mode = mode, + contentColor = contentColor, + disabledContentColor = disabledContentColor, + itemId = itemId, + accountId = accountId, + ) +} + +private class Holder( + val uri: DSecret.Uri, + val info: List, +) + +@Composable +fun vaultViewScreenState( + mode: AppMode, + contentColor: Color, + disabledContentColor: Color, + getAccounts: GetAccounts, + getCanWrite: GetCanWrite, + getCiphers: GetCiphers, + getCollections: GetCollections, + getOrganizations: GetOrganizations, + getFolders: GetFolders, + getFolderTreeById: GetFolderTreeById, + getConcealFields: GetConcealFields, + getMarkdown: GetMarkdown, + getAppIcons: GetAppIcons, + getWebsiteIcons: GetWebsiteIcons, + getTotpCode: GetTotpCode, + getPasswordStrength: GetPasswordStrength, + passkeyTargetCheck: PasskeyTargetCheck, + cipherUnsecureUrlCheck: CipherUnsecureUrlCheck, + cipherUnsecureUrlAutoFix: CipherUnsecureUrlAutoFix, + cipherFieldSwitchToggle: CipherFieldSwitchToggle, + moveCipherToFolderById: MoveCipherToFolderById, + rePromptCipherById: RePromptCipherById, + changeCipherNameById: ChangeCipherNameById, + changeCipherPasswordById: ChangeCipherPasswordById, + checkPasswordLeak: CheckPasswordLeak, + retryCipher: RetryCipher, + copyCipherById: CopyCipherById, + restoreCipherById: RestoreCipherById, + trashCipherById: TrashCipherById, + removeCipherById: RemoveCipherById, + favouriteCipherById: FavouriteCipherById, + downloadManager: DownloadManager, + downloadAttachment: DownloadAttachment, + removeAttachment: RemoveAttachment, + cipherExpiringCheck: CipherExpiringCheck, + cipherIncompleteCheck: CipherIncompleteCheck, + cipherUrlCheck: CipherUrlCheck, + passKeyService: PassKeyService, + tfaService: TwoFaService, + clipboardService: ClipboardService, + getGravatarUrl: GetGravatarUrl, + dateFormatter: DateFormatter, + addCipherOpenedHistory: AddCipherOpenedHistory, + getJustDeleteMeByUrl: GetJustDeleteMeByUrl, + windowCoroutineScope: WindowCoroutineScope, + linkInfoExtractors: List>, + itemId: String, + accountId: String, +) = produceScreenState( + key = "vault_view", + initial = VaultViewState(), + args = arrayOf( + getAccounts, + getCiphers, + getCollections, + getOrganizations, + getFolders, + getFolderTreeById, + getConcealFields, + getWebsiteIcons, + getPasswordStrength, + downloadAttachment, + clipboardService, + dateFormatter, + windowCoroutineScope, + linkInfoExtractors, + itemId, + accountId, + ), +) { + addCipherOpenedHistory( + AddCipherOpenedHistoryRequest( + accountId = accountId, + cipherId = itemId, + ), + ) + .attempt() + .launchIn(windowCoroutineScope) + + val copy = copy( + clipboardService = clipboardService, + ) + + val selectionHandle = selectionHandle("selection") + val markdown = getMarkdown().first() + + val accountFlow = getAccounts() + .map { accounts -> + accounts + .firstOrNull { it.id.id == accountId } + } + .distinctUntilChanged() + val secretFlow = getCiphers() + .map { secrets -> + secrets + .firstOrNull { it.id == itemId && it.accountId == accountId } + } + .distinctUntilChanged() + val ciphersFlow = getCiphers() + .map { secrets -> + secrets + .filter { it.deletedDate == null } + } + val folderFlow = secretFlow + .flatMapLatest { secret -> + val folderId = secret?.folderId + ?: return@flatMapLatest flowOf(null) + getFolderTreeById(folderId) + } + .distinctUntilChanged() + val collectionsFlow = getCollections() + .combine( + secretFlow + .map { secret -> secret?.collectionIds.orEmpty() } + .distinctUntilChanged(), + ) { collections, collectionIds -> + collectionIds + .mapNotNull { collectionId -> + collections + .firstOrNull { it.id == collectionId && it.accountId == accountId } + } + .sortedByDescending { it.name } + } + .distinctUntilChanged() + val organizationFlow = getOrganizations() + .combine( + secretFlow + .map { secret -> secret?.organizationId } + .distinctUntilChanged(), + ) { organizations, organizationIdOrNull -> + organizationIdOrNull?.let { organizationId -> + organizations + .firstOrNull { it.id == organizationId && it.accountId == accountId } + } + } + .distinctUntilChanged() + + val fff = MutableStateFlow(false) + val bbb = fff + .combine(secretFlow) { elevatedAccess, cipher -> + elevatedAccess || cipher?.reprompt != true + } + .stateIn(appScope) + combine( + accountFlow, + secretFlow, + folderFlow, + ciphersFlow, + collectionsFlow, + organizationFlow, + getConcealFields(), + getAppIcons(), + getWebsiteIcons(), + getCanWrite(), + ) { array -> + val accountOrNull = array[0] as DAccount? + val secretOrNull = array[1] as DSecret? + val folderOrNull = array[2] as DFolderTree? + val ciphers = array[3] as List + val collections = array[4] as List + val organizationOrNull = array[5] as DOrganization? + val concealFields = array[6] as Boolean + val appIcons = array[7] as Boolean + val websiteIcons = array[8] as Boolean + val canAddSecret = array[9] as Boolean + + val content = when { + accountOrNull == null || secretOrNull == null -> VaultViewState.Content.NotFound + else -> { + val verify: ((() -> Unit) -> Unit)? = if (secretOrNull.reprompt) { + // composable + { block -> + if (!fff.value) { + val intent = createElevatedAccessDialogIntent { + fff.value = true + block() + } + navigate(intent) + } else { + block() + } + } + } else { + null + } + + // Find ciphers that have some limitations + val hasCanNotWriteCiphers = collections.any { it.readOnly } + val hasCanNotSeePassword = + collections.all { it.hidePasswords } && collections.isNotEmpty() + val canEdit = canAddSecret && secretOrNull.canEdit() && !hasCanNotWriteCiphers + val canDelete = canAddSecret && secretOrNull.canDelete() && !hasCanNotWriteCiphers + + val extractors = LinkInfoRegistry(linkInfoExtractors) + val cipherUris = secretOrNull + .uris + .map { uri -> + val extra = extractors.process(uri) + Holder( + uri = uri, + info = extra, + ) + } + val icon = secretOrNull.toVaultItemIcon( + appIcons = appIcons, + websiteIcons = websiteIcons, + ) + val primaryAction = if ( + mode is AppMode.HasType && + mode.type != null && + mode.type != secretOrNull.type + ) { + null + } else when (mode) { + is AppMode.PickPasskey -> null + is AppMode.Main -> null + is AppMode.Pick -> { + FlatItemAction( + title = translate(Res.strings.autofill), + leading = icon(Icons.Outlined.AutoAwesome), + onClick = { + val cipher = secretOrNull + mode.onAutofill(cipher) + }, + ) + } + + is AppMode.Save -> null + is AppMode.SavePasskey -> { + FlatItemAction( + title = translate(Res.strings.passkey_save), + leading = icon(Icons.Outlined.Save), + onClick = { + val cipher = secretOrNull + mode.onComplete(cipher) + }, + ) + } + } + VaultViewState.Content.Cipher( + locked = bbb, + data = secretOrNull, + icon = icon, + synced = secretOrNull.synced, + onFavourite = if (canEdit) { + // lambda + { + val cipherIds = setOf(secretOrNull.id) + favouriteCipherById(cipherIds, it) + .launchIn(windowCoroutineScope) + } + } else { + null + }, + onEdit = if (canEdit) { + // lambda + { + val route = LeAddRoute( + args = AddRoute.Args( + behavior = AddRoute.Args.Behavior( + // When you edit a cipher, you do not know what field + // user is targeting, so it's better to not show the + // keyboard automatically. + autoShowKeyboard = false, + launchEditedCipher = false, + ), + initialValue = secretOrNull, + ), + ) + val intent = NavigationIntent.NavigateToRoute(route) + if (verify != null) { + verify { + navigate(intent) + } + } else { + navigate(intent) + } + } + } else { + null + }, + actions = listOfNotNull( + cipherEnableConfirmAccessAction( + rePromptCipherById = rePromptCipherById, + ciphers = listOf(secretOrNull), + ) + .takeIf { !secretOrNull.reprompt }, + cipherDisableConfirmAccessAction( + rePromptCipherById = rePromptCipherById, + ciphers = listOf(secretOrNull), + ) + .takeIf { secretOrNull.reprompt } + ?.verify(verify), + cipherViewPasswordHistoryAction( + cipher = secretOrNull, + ) + .takeIf { !secretOrNull.login?.passwordHistory.isNullOrEmpty() } + ?.verify(verify), + cipherChangeNameAction( + changeCipherNameById = changeCipherNameById, + ciphers = listOf(secretOrNull), + ).takeIf { canEdit }, + cipherChangePasswordAction( + changeCipherPasswordById = changeCipherPasswordById, + ciphers = listOf(secretOrNull), + ).takeIf { canEdit && secretOrNull.login != null } + ?.verify(verify), + cipherCopyToAction( + copyCipherById = copyCipherById, + ciphers = listOf(secretOrNull), + ).takeIf { canAddSecret }, + cipherMoveToFolderAction( + moveCipherToFolderById = moveCipherToFolderById, + accountId = AccountId(accountId), + ciphers = listOf(secretOrNull), + ).takeIf { canEdit }, + cipherTrashAction( + trashCipherById = trashCipherById, + ciphers = listOf(secretOrNull), + ).takeIf { canDelete && (secretOrNull.deletedDate == null && secretOrNull.service.remote != null) }, + cipherRestoreAction( + restoreCipherById = restoreCipherById, + ciphers = listOf(secretOrNull), + ).takeIf { canDelete && secretOrNull.deletedDate != null }, + cipherDeleteAction( + removeCipherById = removeCipherById, + ciphers = listOf(secretOrNull), + ).takeIf { canDelete && (secretOrNull.deletedDate != null || secretOrNull.service.remote == null) }, + ), + primaryAction = primaryAction, + items = oh( + mode = mode, + sharingScope = screenScope, // FIXME: must not be a screen scope!! + selectionHandle = selectionHandle, + canEdit = canEdit, + contentColor = contentColor, + disabledContentColor = disabledContentColor, + hasCanNotSeePassword = hasCanNotSeePassword, + downloadManager = downloadManager, + downloadAttachment = downloadAttachment, + removeAttachment = removeAttachment, + passKeyService = passKeyService, + tfaService = tfaService, + getTotpCode = getTotpCode, + getPasswordStrength = getPasswordStrength, + passkeyTargetCheck = passkeyTargetCheck, + cipherUnsecureUrlCheck = cipherUnsecureUrlCheck, + cipherUnsecureUrlAutoFix = cipherUnsecureUrlAutoFix, + cipherFieldSwitchToggle = cipherFieldSwitchToggle, + checkPasswordLeak = checkPasswordLeak, + retryCipher = retryCipher, + markdown = markdown, + concealFields = concealFields || secretOrNull.reprompt, + websiteIcons = websiteIcons, + getGravatarUrl = getGravatarUrl, + copy = copy, + dateFormatter = dateFormatter, + linkInfoExtractors = linkInfoExtractors, + account = accountOrNull, + cipher = secretOrNull, + folder = folderOrNull, + organization = organizationOrNull, + ciphers = ciphers, + collections = collections, + cipherUris = cipherUris, + cipherExpiringCheck = cipherExpiringCheck, + cipherIncompleteCheck = cipherIncompleteCheck, + cipherUrlCheck = cipherUrlCheck, + getJustDeleteMeByUrl = getJustDeleteMeByUrl, + verify = verify, + ).toList(), + ) + } + } + VaultViewState( + content = content, + ) + } +} + +private fun RememberStateFlowScope.oh( + mode: AppMode, + sharingScope: CoroutineScope, + selectionHandle: SelectionHandle, + canEdit: Boolean, + contentColor: Color, + disabledContentColor: Color, + hasCanNotSeePassword: Boolean, + downloadManager: DownloadManager, + downloadAttachment: DownloadAttachment, + removeAttachment: RemoveAttachment, + passKeyService: PassKeyService, + tfaService: TwoFaService, + getTotpCode: GetTotpCode, + getPasswordStrength: GetPasswordStrength, + passkeyTargetCheck: PasskeyTargetCheck, + cipherUnsecureUrlCheck: CipherUnsecureUrlCheck, + cipherUnsecureUrlAutoFix: CipherUnsecureUrlAutoFix, + cipherFieldSwitchToggle: CipherFieldSwitchToggle, + checkPasswordLeak: CheckPasswordLeak, + retryCipher: RetryCipher, + markdown: Boolean, + concealFields: Boolean, + websiteIcons: Boolean, + getGravatarUrl: GetGravatarUrl, + copy: CopyText, + dateFormatter: DateFormatter, + linkInfoExtractors: List>, + account: DAccount, + cipher: DSecret, + folder: DFolderTree?, + organization: DOrganization?, + ciphers: List, + collections: List, + cipherUris: List, + cipherExpiringCheck: CipherExpiringCheck, + cipherIncompleteCheck: CipherIncompleteCheck, + cipherUrlCheck: CipherUrlCheck, + getJustDeleteMeByUrl: GetJustDeleteMeByUrl, + verify: ((() -> Unit) -> Unit)?, +) = flow { + val cipherError = cipher.service.error + if (cipherError != null && !cipherError.expired(cipher.revisionDate)) { + val time = dateFormatter.formatDateTime(cipherError.revisionDate) + val model = VaultViewItem.Error( + id = "error", + name = "Couldn't sync the item", + message = cipherError.message(), + timestamp = time, + onRetry = if (cipherError.canRetry(cipher.revisionDate)) { + // lambda + { + val cipherIds = setOf(cipher.id) + retryCipher(cipherIds) + .launchIn(appScope) + } + } else { + null + }, + ) + emit(model) + } + + val incomplete = cipherIncompleteCheck.invoke(cipher) + if (incomplete) { + val model = VaultViewItem.Info( + id = "info.incomplete", + name = translate(Res.strings.item_incomplete_title), + message = translate(Res.strings.item_incomplete_text), + long = false, + ) + emit(model) + } + + val expiring = cipherExpiringCheck.invoke(cipher, Clock.System.now()) + if (expiring != null) { + val expiringDate = dateFormatter.formatDate(expiring) + val expiringMessage = when (cipher.type) { + DSecret.Type.Card -> + "This card expires on $expiringDate. There are a few things you can do to ensure a smooth transition:\n" + + "1. Get a new card: Your card issuer may have already sent you a replacement card with a new expiration date. If not, contact your card issuer to see if they plan to send you a new card and when to expect it.\n" + + "2. Update automatic payments: If you have any automatic payments set up with your card, such as a monthly gym membership or Netflix subscription, make sure to update the information with the new card number and expiration date.\n" + + "3. Destroy the old card: Once your new card arrives and you have updated any necessary information, be sure to securely dispose of the old, expired card to prevent identity theft." + + else -> "This item expires on $expiringDate." + } + val model = VaultViewItem.Info( + id = "info.expiring", + name = translate(Res.strings.expiring_soon), + message = expiringMessage, + long = true, + ) + emit(model) + } + + val cipherCard = cipher.card + if (cipherCard != null) { + val model = create( + translatorScope = this@oh, + copy = copy, + id = "card", + verify = verify.takeIf { concealFields }, + concealFields = concealFields, + data = cipherCard, + ) + emit(model) + val cipherCardCode = cipherCard.code + if (cipherCardCode != null) { + val cvv = create( + copy = copy, + id = "card.cvv", + accountId = account.id, + title = translate(Res.strings.vault_view_card_cvv_label), + value = cipherCardCode, + verify = verify.takeIf { concealFields }, + private = concealFields, + monospace = true, + elevated = true, + ) + emit(cvv) + } + } + val cipherLogin = cipher.login + if (cipherLogin != null) { + val cipherLoginUsername = cipherLogin.username + if (cipherLoginUsername != null) { + val usernameVariation = UsernameVariation2.of( + getGravatarUrl, + cipherLoginUsername, + ) + val model = create( + copy = copy, + id = "login.username", + accountId = account.id, + title = translate(Res.strings.username), + value = cipherLoginUsername, + username = true, + elevated = true, + leading = { + UsernameVariationIcon(usernameVariation = usernameVariation) + }, + ) + emit(model) + } + val cipherLoginPassword = cipherLogin.password + if (cipherLoginPassword != null) { + val scoreRaw = + getPasswordStrength(cipherLoginPassword).attempt().bind().getOrNull()?.score + + val pwnage = checkPasswordLeak(CheckPasswordLeakRequest(cipherLoginPassword)) + .attempt() + .asFlow() + .map { + val occurrences = it.getOrElse { 0 } + if (occurrences > 0) + VaultViewItem.Value.Badge( + text = translate(Res.strings.password_pwned_label), + score = 0f, + ) + else null + } + .stateIn(sharingScope, SharingStarted.Eagerly, null) + val model = create( + copy = copy, + id = "login.password", + accountId = account.id, + title = translate(Res.strings.password), + value = cipherLoginPassword, + verify = verify.takeIf { concealFields }, + private = concealFields, + hidden = hasCanNotSeePassword, + password = true, + monospace = true, + colorize = true, + elevated = true, + badge = scoreRaw + ?.takeUnless { hasCanNotSeePassword } + ?.let { + val text = translate(it.formatH()) + val score = it.alertScore() + VaultViewItem.Value.Badge( + text = text, + score = score, + ) + }, + badge2 = listOf(pwnage), + leading = { + IconBox(main = Icons.Outlined.Password) + }, + ) + emit(model) + + val reusedPasswords = ciphers + .count { + it.login?.password == cipherLoginPassword + } + if (reusedPasswords > 1) { + val reusedPasswordsModel = VaultViewItem.ReusedPassword( + id = "login.password.reused", + count = reusedPasswords, + onClick = { + val intent = NavigationIntent.NavigateToRoute( + VaultRoute.watchtower( + title = translate(Res.strings.reused_passwords), + subtitle = translate(Res.strings.watchtower_header_title), + filter = DFilter.ByPasswordValue(cipherLoginPassword), + sort = PasswordSort, + ), + ) + navigate(intent) + }, + ) + emit(reusedPasswordsModel) + } + + val passwordDate = cipherLogin.passwordRevisionDate + if (passwordDate != null) { + // vault_view_password_revision_label + val b = VaultViewItem.Label( + id = "login.password.revision", + text = AnnotatedString( + translate( + Res.strings.vault_view_password_revision_label, + dateFormatter.formatDateTime(passwordDate), + ), + ), + ) + emit(b) + } + } + val cipherLoginTotp = cipherLogin.totp + if (cipherLoginTotp != null) { + val sharing = SharingStarted.WhileSubscribed(1000L) + val localStateFlow = getTotpCode(cipherLoginTotp.token) + .map { + // Format the totp code, so it's easier to + // read for the user. + val codes = it.formatCode2() + val dropdown = buildContextItems { + section { + this += copy.FlatItemAction( + title = translate(Res.strings.copy_otp_code), + value = it.code, + ) + this += copy.FlatItemAction( + leading = iconSmall(Icons.Outlined.ContentCopy, Icons.Outlined.Key), + title = translate(Res.strings.copy_otp_secret_code), + value = cipherLoginTotp.token.raw, + hidden = true, + ).verify(verify) + } + section { + this += BarcodeTypeRoute.showInBarcodeTypeActionOrNull( + translator = this@oh, + data = cipherLoginTotp.token.raw, + text = translate(Res.strings.barcodetype_copy_otp_secret_code_note), + single = true, + navigate = ::navigate, + ) + } + section { + this += createShareAction( + translator = this@oh, + text = it.code, + navigate = ::navigate, + ) + } + } + + VaultViewItem.Totp.LocalState( + codes = codes, + dropdown = dropdown, + ) + } + .attempt() + .map { either -> + either + .getOrElse { + VaultViewItem.Totp.LocalState( + codes = persistentListOf(), + dropdown = persistentListOf(), + ) + } + } + .persistingStateIn(appScope, sharing) + val model = VaultViewItem.Totp( + id = "login.totp", + elevation = 1.dp, + title = translate(Res.strings.one_time_password), + copy = copy, + totp = cipherLoginTotp.token, + verify = verify, + localStateFlow = localStateFlow, + ) + emit(model) + } else { + kotlin.run { + if ( + cipherLogin.fido2Credentials.isNotEmpty() && + cipherLogin.password.isNullOrEmpty() + ) { + return@run + } + + val tfa = tfaService.get() + .crashlyticsTap() + .attempt() + .bind() + .getOrNull() + .orEmpty() + + val isUnsecure = DFilter.ByTfaWebsites + .match(cipher, tfa) + .firstOrNull() + if (isUnsecure != null) { + val model = VaultViewItem.InactiveTotp( + id = "error2", + info = isUnsecure, + onClick = { + val route = TwoFaServiceViewRoute( + args = TwoFaServiceViewRoute.Args(isUnsecure), + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + emit(model) + } + } + } + if (cipher.login.fido2Credentials.isNullOrEmpty()) { + val tfa = passKeyService.get() + .crashlyticsTap() + .attempt() + .bind() + .getOrNull() + .orEmpty() + + val isUnsecure = DFilter.ByPasskeyWebsites + .match(cipher, tfa) + .firstOrNull() + if (isUnsecure != null) { + val model = VaultViewItem.InactivePasskey( + id = "error2.passkeys", + info = isUnsecure, + onClick = { + val route = PasskeysServiceViewRoute( + args = PasskeysServiceViewRoute.Args(isUnsecure), + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + emit(model) + } + } + val fido2Credentials = cipherLogin.fido2Credentials + if (fido2Credentials.isNotEmpty()) { + val loginPasskeysItem = VaultViewItem.Section( + id = "login.passkey.header", + text = translate(Res.strings.passkeys), + ) + emit(loginPasskeysItem) + fido2Credentials.forEachIndexed { index, item -> + val onUse = when (mode) { + is AppMode.PickPasskey -> { + val matches = passkeyTargetCheck(item, mode.target) + .attempt() + .bind() + .isRight { it } + if (matches) { + // lambda + { + mode.onComplete(item) + } + } else { + null + } + } + + else -> null + } + val model = VaultViewItem.Passkey( + id = "login.passkey.index$index", + value = item.userDisplayName + .takeIf { !it.isNullOrEmpty() }, + source = item, + onUse = onUse, + onClick = { + val route = PasskeysCredentialViewRoute( + args = PasskeysCredentialViewRoute.Args( + cipherId = cipher.id, + credentialId = item.credentialId, + model = item, + ), + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + emit(model) + } + } + } + + val cipherIdentity = cipher.identity + if (cipherIdentity != null) { + val identityItem = kotlin.run { + val actions = mutableListOf() + if (cipherIdentity.phone != null) { + actions += FlatItemAction( + icon = Icons.Outlined.Call, + title = translate(Res.strings.vault_view_call_phone_action), + onClick = { + val intent = NavigationIntent.NavigateToPhone( + phoneNumber = cipherIdentity.phone, + ) + navigate(intent) + }, + ) + actions += FlatItemAction( + icon = Icons.Outlined.Textsms, + title = translate(Res.strings.vault_view_text_phone_action), + onClick = { + val intent = NavigationIntent.NavigateToSms( + phoneNumber = cipherIdentity.phone, + ) + navigate(intent) + }, + ) + } + if (cipherIdentity.email != null) { + actions += FlatItemAction( + icon = Icons.Outlined.Email, + title = translate(Res.strings.vault_view_email_action), + onClick = { + val intent = NavigationIntent.NavigateToEmail( + email = cipherIdentity.email, + ) + navigate(intent) + }, + ) + } + if ( + cipherIdentity.address1 != null || + cipherIdentity.address2 != null || + cipherIdentity.address3 != null || + cipherIdentity.city != null || + cipherIdentity.state != null || + cipherIdentity.postalCode != null || + cipherIdentity.country != null + ) { + actions += FlatItemAction( + icon = Icons.Outlined.Directions, + title = translate(Res.strings.vault_view_navigate_action), + onClick = { + val intent = NavigationIntent.NavigateToMaps( + address1 = cipherIdentity.address1, + address2 = cipherIdentity.address2, + address3 = cipherIdentity.address3, + city = cipherIdentity.city, + state = cipherIdentity.state, + postalCode = cipherIdentity.postalCode, + country = cipherIdentity.country, + ) + navigate(intent) + }, + ) + } + + VaultViewItem.Identity( + id = "identity", + data = cipherIdentity, + actions = actions, + ) + } + emit(identityItem) + + suspend fun yieldContactField( + key: String, + value: String?, + title: String? = null, + username: Boolean = false, + ) { + if (value == null) { + return + } + + val contactFieldItem = create( + copy = copy, + id = "identity.contact.$key", + accountId = account.id, + title = title, + value = value, + private = false, + monospace = false, + elevated = true, + username = username, + ) + emit(contactFieldItem) + } + + if ( + cipherIdentity.phone != null || + cipherIdentity.email != null || + cipherIdentity.username != null + ) { + val contactHeaderItem = VaultViewItem.Section( + id = "identity.contact.header", + text = translate(Res.strings.contact_info), + ) + emit(contactHeaderItem) + } + + yieldContactField("phone", cipherIdentity.phone, translate(Res.strings.phone_number)) + yieldContactField("email", cipherIdentity.email, translate(Res.strings.email)) + yieldContactField( + "username", + value = cipherIdentity.username, + title = translate(Res.strings.username), + username = true, + ) + + suspend fun yieldMiscField( + key: String, + value: String?, + title: String? = null, + conceal: Boolean = false, + ) { + if (value == null) { + return + } + + val miscFieldItem = create( + copy = copy, + id = "identity.misc.$key", + accountId = account.id, + title = title, + value = value, + verify = verify.takeIf { conceal }, + private = conceal, + monospace = false, + elevated = false, + ) + emit(miscFieldItem) + } + + if ( + cipherIdentity.company != null || + cipherIdentity.ssn != null || + cipherIdentity.passportNumber != null || + cipherIdentity.licenseNumber != null + ) { + val miscHeaderItem = VaultViewItem.Section( + id = "identity.misc.header", + text = translate(Res.strings.misc), + ) + emit(miscHeaderItem) + } + + yieldMiscField("company", cipherIdentity.company, translate(Res.strings.company)) + yieldMiscField( + "ssn", + cipherIdentity.ssn, + title = translate(Res.strings.ssn), + conceal = concealFields, + ) + yieldMiscField( + "passportNumber", + cipherIdentity.passportNumber, + title = translate(Res.strings.passport_number), + conceal = concealFields, + ) + yieldMiscField( + "licenseNumber", + cipherIdentity.licenseNumber, + title = translate(Res.strings.license_number), + conceal = concealFields, + ) + + suspend fun yieldAddressField( + key: String, + value: String?, + title: String? = null, + ) { + if (value == null) { + return + } + + val addressFieldModel = create( + copy = copy, + id = "identity.address.$key", + accountId = account.id, + title = title, + value = value, + private = false, + monospace = false, + elevated = false, + ) + emit(addressFieldModel) + } + + if ( + cipherIdentity.address1 != null || + cipherIdentity.address2 != null || + cipherIdentity.address3 != null || + cipherIdentity.city != null || + cipherIdentity.state != null || + cipherIdentity.postalCode != null || + cipherIdentity.country != null + ) { + val addressSectionModel = VaultViewItem.Section( + id = "identity.address.header", + text = translate(Res.strings.address), + ) + emit(addressSectionModel) + } + + yieldAddressField("address1", cipherIdentity.address1) + yieldAddressField("address2", cipherIdentity.address2) + yieldAddressField("address3", cipherIdentity.address3) + yieldAddressField("city", cipherIdentity.city, translate(Res.strings.city)) + yieldAddressField("state", cipherIdentity.state, translate(Res.strings.state)) + yieldAddressField( + "postalCode", + cipherIdentity.postalCode, + translate(Res.strings.postal_code), + ) + yieldAddressField("country", cipherIdentity.country, translate(Res.strings.country)) + } + + if (cipher.type == DSecret.Type.SecureNote && cipher.notes.isNotEmpty()) { + val note = VaultViewItem.Note( + id = "note.text", + text = if (markdown) cipher.notes.trimIndent() else cipher.notes, + markdown = markdown, + verify = verify, + conceal = verify != null, + ) + emit(note) + } + + val linkedApps = cipherUris + .filter { holder -> + holder + .info + .any { info -> + info is LinkInfoPlatform.Android || + info is LinkInfoPlatform.IOS + } + } + if (linkedApps.isNotEmpty()) { + val section = VaultViewItem.Section( + id = "link.app", + text = translate(Res.strings.linked_apps), + ) + emit(section) + // items + linkedApps + .mapIndexed { index, holder -> + val id = "link.app.$index" + val item = aaaa( + canEdit = canEdit, + contentColor = contentColor, + disabledContentColor = disabledContentColor, + websiteIcons = websiteIcons, + cipherUnsecureUrlCheck = cipherUnsecureUrlCheck, + cipherUnsecureUrlAutoFix = cipherUnsecureUrlAutoFix, + getJustDeleteMeByUrl = getJustDeleteMeByUrl, + holder = holder, + id = id, + accountId = account.accountId(), + cipherId = cipher.id, + copy = copy, + ) + item + } + .forEach { item -> + emit(item) + } + } + + val linkedWebsites = cipherUris + .filter { holder -> + holder + .info + .any { info -> + info is LinkInfoPlatform.Web || + info is LinkInfoPlatform.Other + } + } + if (linkedWebsites.isNotEmpty()) { + val section = VaultViewItem.Section( + id = "link.website", + text = translate(Res.strings.linked_uris), + ) + emit(section) + // items + linkedWebsites + .mapIndexed { index, holder -> + val id = "link.website.$index" + val item = aaaa( + canEdit = canEdit, + contentColor = contentColor, + disabledContentColor = disabledContentColor, + websiteIcons = websiteIcons, + cipherUnsecureUrlCheck = cipherUnsecureUrlCheck, + cipherUnsecureUrlAutoFix = cipherUnsecureUrlAutoFix, + getJustDeleteMeByUrl = getJustDeleteMeByUrl, + holder = holder, + id = id, + accountId = account.accountId(), + cipherId = cipher.id, + copy = copy, + ) + item + } + .forEach { item -> + emit(item) + } + } + if (cipher.fields.isNotEmpty()) { + val section = VaultViewItem.Section( + id = "custom", + text = translate(Res.strings.custom_fields), + ) + emit(section) + // items + cipher.fields.forEachIndexed { index, field -> + if (field.type == DSecret.Field.Type.Boolean) { + fun createAction( + value: Boolean, + ) = FlatItemAction( + title = "Toggle value", + trailing = { + Switch( + checked = !value, + onCheckedChange = null, + enabled = canEdit, + ) + }, + onClick = if (canEdit) { + // lambda + { + val request = mapOf( + cipher.id to listOf( + CipherFieldSwitchToggleRequest( + fieldIndex = index, + fieldName = field.name, + value = value, + ), + ), + ) + cipherFieldSwitchToggle(request) + .launchIn(appScope) + } + } else { + null + }, + ) + + val value = field.value?.toBooleanStrictOrNull() ?: false + val actions = listOf( + createAction(!value), + ) + val m = VaultViewItem.Switch( + id = "custom.$index", + title = field.name.orEmpty(), + value = value, + dropdown = actions, + ) + emit(m) + return@forEachIndexed + } + if (field.type == DSecret.Field.Type.Linked) { + val t = annotate( + when (field.linkedId) { + DSecret.Field.LinkedId.Login_Username -> Res.strings.field_linked_to_username + DSecret.Field.LinkedId.Login_Password -> Res.strings.field_linked_to_password + DSecret.Field.LinkedId.Card_CardholderName -> Res.strings.field_linked_to_card_cardholdername + DSecret.Field.LinkedId.Card_ExpMonth -> Res.strings.field_linked_to_card_expmonth + DSecret.Field.LinkedId.Card_ExpYear -> Res.strings.field_linked_to_card_expyear + DSecret.Field.LinkedId.Card_Code -> Res.strings.field_linked_to_card_code + DSecret.Field.LinkedId.Card_Brand -> Res.strings.field_linked_to_card_brand + DSecret.Field.LinkedId.Card_Number -> Res.strings.field_linked_to_card_number + DSecret.Field.LinkedId.Identity_Title -> Res.strings.field_linked_to_identity_title + DSecret.Field.LinkedId.Identity_MiddleName -> Res.strings.field_linked_to_identity_middlename + DSecret.Field.LinkedId.Identity_Address1 -> Res.strings.field_linked_to_identity_address1 + DSecret.Field.LinkedId.Identity_Address2 -> Res.strings.field_linked_to_identity_address2 + DSecret.Field.LinkedId.Identity_Address3 -> Res.strings.field_linked_to_identity_address3 + DSecret.Field.LinkedId.Identity_City -> Res.strings.field_linked_to_identity_city + DSecret.Field.LinkedId.Identity_State -> Res.strings.field_linked_to_identity_state + DSecret.Field.LinkedId.Identity_PostalCode -> Res.strings.field_linked_to_identity_postalcode + DSecret.Field.LinkedId.Identity_Country -> Res.strings.field_linked_to_identity_country + DSecret.Field.LinkedId.Identity_Company -> Res.strings.field_linked_to_identity_company + DSecret.Field.LinkedId.Identity_Email -> Res.strings.field_linked_to_identity_email + DSecret.Field.LinkedId.Identity_Phone -> Res.strings.field_linked_to_identity_phone + DSecret.Field.LinkedId.Identity_Ssn -> Res.strings.field_linked_to_identity_ssn + DSecret.Field.LinkedId.Identity_Username -> Res.strings.field_linked_to_identity_username + DSecret.Field.LinkedId.Identity_PassportNumber -> Res.strings.field_linked_to_identity_passportnumber + DSecret.Field.LinkedId.Identity_LicenseNumber -> Res.strings.field_linked_to_identity_licensenumber + DSecret.Field.LinkedId.Identity_FirstName -> Res.strings.field_linked_to_identity_firstname + DSecret.Field.LinkedId.Identity_LastName -> Res.strings.field_linked_to_identity_lastname + DSecret.Field.LinkedId.Identity_FullName -> Res.strings.field_linked_to_identity_fullname + null -> Res.strings.field_linked_to_unknown_field + }, + field.name.orEmpty() to SpanStyle( + fontFamily = FontFamily.Monospace, + color = contentColor, + ), + ) + val m = VaultViewItem.Label( + id = "custom.$index", + text = t, + ) + emit(m) + return@forEachIndexed + } + + val hidden = field.type == DSecret.Field.Type.Hidden + val m = create( + copy = copy, + id = "custom.$index", + accountId = account.id, + title = field.name.orEmpty(), + value = field.value.orEmpty(), + verify = verify.takeIf { hidden && concealFields }, + private = hidden && concealFields, + ) + emit(m) + } + } + if (cipher.type != DSecret.Type.SecureNote && cipher.notes.isNotEmpty()) { + val section = VaultViewItem.Section( + id = "note", + text = translate(Res.strings.notes), + ) + emit(section) + val note = VaultViewItem.Note( + id = "note.text", + text = if (markdown) cipher.notes.trimIndent() else cipher.notes, + markdown = markdown, + verify = verify, + conceal = verify != null, + ) + emit(note) + } + if (cipher.attachments.isNotEmpty()) { + val section = VaultViewItem.Section( + id = "attachment", + text = translate(Res.strings.attachments), + ) + emit(section) + // items + cipher.attachments.forEachIndexed { index, attachment -> + when (attachment) { + is DSecret.Attachment.Remote -> { + val downloadIo = kotlin.run { + val request = DownloadAttachmentRequest.ByLocalCipherAttachment( + cipher = cipher, + attachment = attachment, + ) + downloadAttachment(listOf(request)) + } + val removeIo = kotlin.run { + val request = RemoveAttachmentRequest.ByLocalCipherAttachment( + cipher = cipher, + attachment = attachment, + ) + removeAttachment(listOf(request)) + } + + val actualItem = createAttachmentItem( + tag = DownloadInfoEntity2.AttachmentDownloadTag( + localCipherId = cipher.id, + remoteCipherId = cipher.service.remote?.id, + attachmentId = attachment.id, + ), + selectionHandle = selectionHandle, + sharingScope = sharingScope, + attachment = attachment, + launchViewCipherData = null, + downloadManager = downloadManager, + downloadIo = downloadIo, + removeIo = removeIo, + verify = verify, + ) + val wrapperItem = VaultViewItem.Attachment( + id = actualItem.key, + item = actualItem, + ) + emit(wrapperItem) + } + + is DSecret.Attachment.Local -> { + // TODO: Show local attachments. + } + } + } + } + + if (folder != null) { + val section = VaultViewItem.Section( + id = "folder", + text = translate(Res.strings.folder), + ) + emit(section) + + val f = VaultViewItem.Folder( + id = "folder.0", + nodes = folder.hierarchy + .map { + VaultViewItem.Folder.FolderNode( + name = it.name, + onClick = { + val route = VaultRoute.by( + translator = this@oh, + folder = it.folder, + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + }, + onClick = { + val route = VaultRoute.by( + translator = this@oh, + folder = folder.folder, + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + emit(f) + } + + if (collections.isNotEmpty()) { + val section = VaultViewItem.Section( + id = "collection", + text = + if (collections.size == 1) { + translate(Res.strings.collection) + } else { + translate(Res.strings.collections) + }, + ) + emit(section) + collections.forEach { collection -> + val f = VaultViewItem.Collection( + id = "collection.${collection.id}", + title = collection.name, + onClick = { + val route = VaultRoute.by( + translator = this@oh, + collection = collection, + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + emit(f) + } + } + + if (organization != null) { + val section = VaultViewItem.Section( + id = "organization", + text = translate(Res.strings.organization), + ) + emit(section) + val f = VaultViewItem.Organization( + id = "organization.0", + title = organization.name, + onClick = { + val intent = NavigationIntent.NavigateToRoute( + CollectionsRoute( + args = CollectionsRoute.Args( + accountId = organization.accountId.let(::AccountId), + organizationId = organization.id, + ), + ), + ) + navigate(intent) + }, + ) + emit(f) + } + + val s = VaultViewItem.Spacer( + id = "end.spacer", + height = 24.dp, + ) + emit(s) + val x = VaultViewItem.Label( + id = "account", + text = annotate( + Res.strings.vault_view_saved_to_label, + account.username to SpanStyle( + color = contentColor, + ), + account.host to SpanStyle( + color = contentColor, + ), + ), + ) + emit(x) + val createdDate = cipher.createdDate + if (createdDate != null) { + val w = VaultViewItem.Label( + id = "created", + text = AnnotatedString( + translate( + Res.strings.vault_view_created_at_label, + dateFormatter.formatDateTime(createdDate), + ), + ), + ) + emit(w) + } + + val a = VaultViewItem.Label( + id = "revision", + text = AnnotatedString( + translate( + Res.strings.vault_view_revision_label, + dateFormatter.formatDateTime(cipher.revisionDate), + ), + ), + ) + emit(a) + val deletedDate = cipher.deletedDate + if (deletedDate != null) { + val b = VaultViewItem.Label( + id = "deleted", + text = AnnotatedString( + translate( + Res.strings.vault_view_deleted_at_label, + dateFormatter.formatDateTime(deletedDate), + ), + ), + ) + emit(b) + } + + if (!isRelease && false) { + val debugSpacer = VaultViewItem.Spacer( + id = "debug.spacer", + height = 24.dp, + ) + emit(debugSpacer) + val debugSection = VaultViewItem.Section( + id = "debug.section", + text = "Debug", + ) + emit(debugSection) + + // IDs + val localId = create( + copy = copy, + id = "debug.local_id", + accountId = account.id, + title = "Local ID", + value = cipher.id, + ) + emit(localId) + val remoteId = create( + copy = copy, + id = "debug.remote_id", + accountId = account.id, + title = "Remote ID", + value = cipher.service.remote?.id.orEmpty(), + ) + emit(remoteId) + val remoteRevDate = create( + copy = copy, + id = "debug.remote_rev_date", + accountId = account.id, + title = "Remote revision date", + value = cipher.service.remote?.revisionDate + ?.let { date -> + dateFormatter.formatDateTime(date) + } + .orEmpty(), + ) + emit(remoteRevDate) + + // TOTP + // TODO: Fix meeeee!!! +// val totp = cipher.login?.totp +// if (totp != null) { +// val intent = KeyguardClipboardService.Companion.getIntent( +// context = context, +// cipherName = cipher.name, +// totpToken = totp.token, +// ) +// val remoteRevDate2 = VaultViewItem.Button( +// id = "adasdadasdasdads", +// text = "Launch TOTP", +// onClick = { +// context.startForegroundService(intent) +// }, +// ) +// emit(remoteRevDate2) +// } + } +} + +private suspend fun RememberStateFlowScope.aaaa( + canEdit: Boolean, + contentColor: Color, + disabledContentColor: Color, + websiteIcons: Boolean, + cipherUnsecureUrlCheck: CipherUnsecureUrlCheck, + cipherUnsecureUrlAutoFix: CipherUnsecureUrlAutoFix, + getJustDeleteMeByUrl: GetJustDeleteMeByUrl, + holder: Holder, + id: String, + accountId: String, + cipherId: String, + copy: CopyText, +): VaultViewItem.Uri { + val uri = holder.uri + + val matchTypeTitle = holder.uri.match + .takeUnless { it == DSecret.Uri.MatchType.default } + ?.titleH() + ?.let { + translate(it) + } + + val platformMarker = holder.info + .firstOrNull { it is LinkInfoPlatform } as LinkInfoPlatform? + when (platformMarker) { + is LinkInfoPlatform.Android -> { + val androidMarker = holder.info + .firstOrNull { it is LinkInfoAndroid } as LinkInfoAndroid? + when (androidMarker) { + is LinkInfoAndroid.Installed -> { + val dropdown = buildContextItems { + section { + this += copy.FlatItemAction( + title = translate(Res.strings.copy_package_name), + value = platformMarker.packageName, + ) + } + section { + this += FlatItemAction( + leading = { + Image( + modifier = Modifier + .size(24.dp) + .clip(CircleShape), + painter = androidMarker.icon, + contentDescription = null, + ) + }, + title = translate(Res.strings.uri_action_launch_app_title), + trailing = { + ChevronIcon() + }, + onClick = { + val intent = + NavigationIntent.NavigateToApp(platformMarker.packageName) + navigate(intent) + }, + ) + this += FlatItemAction( + icon = Icons.Outlined.Launch, + title = translate(Res.strings.uri_action_launch_play_store_title), + trailing = { + ChevronIcon() + }, + onClick = { + val intent = + NavigationIntent.NavigateToBrowser(platformMarker.playStoreUrl) + navigate(intent) + }, + ) + } + section { + this += createShareAction( + translator = this@aaaa, + text = platformMarker.playStoreUrl, + navigate = ::navigate, + ) + } + } + return VaultViewItem.Uri( + id = id, + icon = { + Image( + modifier = Modifier + .size(24.dp) + .clip(CircleShape), + painter = androidMarker.icon, + contentDescription = null, + ) + }, + title = AnnotatedString(androidMarker.label), + matchTypeTitle = matchTypeTitle, + dropdown = dropdown, + ) + } + + else -> { + val dropdown = buildContextItems { + section { + this += copy.FlatItemAction( + title = translate(Res.strings.copy_package_name), + value = platformMarker.packageName, + ) + } + section { + this += FlatItemAction( + icon = Icons.Outlined.Launch, + title = translate(Res.strings.uri_action_launch_play_store_title), + trailing = { + ChevronIcon() + }, + onClick = { + val intent = + NavigationIntent.NavigateToBrowser(platformMarker.playStoreUrl) + navigate(intent) + }, + ) + } + section { + this += createShareAction( + translator = this@aaaa, + text = platformMarker.playStoreUrl, + navigate = ::navigate, + ) + } + } + return VaultViewItem.Uri( + id = id, + icon = { + Icon( + imageVector = Icons.Outlined.Android, + contentDescription = null, + ) + }, + title = AnnotatedString(platformMarker.packageName), + matchTypeTitle = matchTypeTitle, + dropdown = dropdown, + ) + } + } + } + + is LinkInfoPlatform.IOS -> { + val dropdown = buildContextItems { + section { + this += copy.FlatItemAction( + title = translate(Res.strings.copy_package_name), + value = platformMarker.packageName, + ) + } + } + return VaultViewItem.Uri( + id = id, + icon = { + Icon( + imageVector = Icons.Outlined.PhoneIphone, + contentDescription = null, + ) + }, + title = AnnotatedString(platformMarker.packageName), + matchTypeTitle = matchTypeTitle, + dropdown = dropdown, + ) + } + + is LinkInfoPlatform.Web -> { + val url = platformMarker.url.toString() + val isJustDeleteMe = getJustDeleteMeByUrl(url) + .attempt() + .bind() + .getOrNull() + + val isUnsecure = cipherUnsecureUrlCheck(holder.uri.uri) + val dropdown = buildContextItems { + section { + this += copy.FlatItemAction( + title = translate(Res.strings.copy_url), + value = url, + ) + } + section { + this += FlatItemAction( + icon = Icons.Outlined.Launch, + title = translate(Res.strings.uri_action_launch_browser_title), + text = url, + trailing = { + ChevronIcon() + }, + onClick = { + val intent = NavigationIntent.NavigateToBrowser(url) + navigate(intent) + }, + ) + if ( + url.removeSuffix("/") != + platformMarker.frontPageUrl.toString().removeSuffix("/") + ) { + val launchUrl = platformMarker.frontPageUrl.toString() + this += FlatItemAction( + icon = Icons.Outlined.Launch, + title = translate(Res.strings.uri_action_launch_browser_main_page_title), + text = launchUrl, + trailing = { + ChevronIcon() + }, + onClick = { + val intent = NavigationIntent.NavigateToBrowser(launchUrl) + navigate(intent) + }, + ) + } + } + if (isUnsecure) { + section { + this += FlatItemAction( + icon = Icons.Outlined.AutoAwesome, + title = "Auto-fix unsecure URL", + text = "Changes a protocol to secure variant if it is available", + onClick = if (canEdit) { + // lambda + { + val ff = mapOf( + cipherId to setOf(holder.uri.uri), + ) + cipherUnsecureUrlAutoFix(ff) + .launchIn(appScope) + } + } else { + null + }, + ) + } + } + section { + this += createShareAction( + translator = this@aaaa, + text = uri.uri, + navigate = ::navigate, + ) + } + section { + this += WebsiteLeakRoute.checkBreachesWebsiteActionOrNull( + translator = this@aaaa, + host = platformMarker.url.host, + navigate = ::navigate, + ) + if (isJustDeleteMe != null) { + this += JustDeleteMeServiceViewRoute.justDeleteMeActionOrNull( + translator = this@aaaa, + justDeleteMe = isJustDeleteMe, + navigate = ::navigate, + ) + } + } + } + val faviconUrl = FaviconUrl( + serverId = accountId, + url = url, + ).takeIf { websiteIcons } + val warningTitle = "Unsecure".takeIf { isUnsecure } + return VaultViewItem.Uri( + id = id, + icon = { + FaviconImage( + modifier = Modifier + .size(24.dp) + .clip(CircleShape), + imageModel = { faviconUrl }, + ) + }, + title = buildAnnotatedString { + append(url) + + val host = platformMarker.url.host + val hostIndex = url.indexOf(host) + if (hostIndex != -1) { + addStyle( + style = SpanStyle( + color = disabledContentColor, + ), + start = 0, + end = hostIndex, + ) + addStyle( + style = SpanStyle( + color = disabledContentColor, + ), + start = hostIndex + host.length, + end = url.length, + ) + } + }, + warningTitle = warningTitle, + matchTypeTitle = matchTypeTitle, + dropdown = dropdown, + ) + } + + else -> { + val canLuanch = holder.info + .firstNotNullOfOrNull { it as? LinkInfoLaunch.Allow } + val canExecute = holder.info + .firstNotNullOfOrNull { it as? LinkInfoExecute.Allow } + val dropdown = buildContextItems { + section { + this += copy.FlatItemAction( + title = translate(Res.strings.copy), + value = uri.uri, + ) + } + section { + if (canExecute != null) { + this += FlatItemAction( + icon = Icons.Outlined.Terminal, + title = "Execute", + trailing = { + ChevronIcon() + }, + onClick = { + val intent = NavigationIntent.NavigateToBrowser(uri.uri) + navigate(intent) + }, + ) + } + if (canLuanch != null) { + if (canLuanch.apps.size > 1) { + this += FlatItemAction( + icon = Icons.Outlined.Launch, + title = translate(Res.strings.uri_action_launch_in_smth_title), + trailing = { + ChevronIcon() + }, + onClick = { + val intent = NavigationIntent.NavigateToBrowser(uri.uri) + navigate(intent) + }, + ) + } else { + val icon = canLuanch.apps.first().icon + this += FlatItemAction( + leading = { + if (icon != null) { + Image( + modifier = Modifier + .size(24.dp) + .clip(CircleShape), + painter = icon, + contentDescription = null, + ) + } else { + Icon(Icons.Outlined.Launch, null) + } + }, + title = translate( + Res.strings.uri_action_launch_in_app_title, + canLuanch.apps.first().label, + ), + trailing = { + ChevronIcon() + }, + onClick = { + val intent = NavigationIntent.NavigateToBrowser(uri.uri) + navigate(intent) + }, + ) + } + } + } + section { + this += LargeTypeRoute.showInLargeTypeActionOrNull( + translator = this@aaaa, + text = uri.uri, + colorize = true, + navigate = ::navigate, + ) + this += LargeTypeRoute.showInLargeTypeActionAndLockOrNull( + translator = this@aaaa, + text = uri.uri, + colorize = true, + navigate = ::navigate, + ) + } + section { + this += createShareAction( + translator = this@aaaa, + text = uri.uri, + navigate = ::navigate, + ) + } + } + return VaultViewItem.Uri( + id = id, + icon = { + if (canLuanch != null && canLuanch.apps.size == 1) { + val icon = canLuanch.apps.first().icon + if (icon != null) { + IconBox2( + main = { + Image( + modifier = Modifier + .size(24.dp) + .clip(CircleShape), + painter = icon, + contentDescription = null, + ) + }, + secondary = { + Icon( + imageVector = Icons.Outlined.Link, + contentDescription = null, + ) + }, + ) + } else if (canExecute != null) { + Icon( + imageVector = Icons.Outlined.Terminal, + contentDescription = null, + ) + } else { + Icon(Icons.Outlined.Link, null) + } + } else if (canExecute != null) { + Icon( + imageVector = Icons.Outlined.Terminal, + contentDescription = null, + ) + } else { + Icon( + imageVector = Icons.Outlined.Link, + contentDescription = null, + ) + } + }, + title = when (uri.match) { + DSecret.Uri.MatchType.RegularExpression -> { + colorizePassword(uri.uri, contentColor) + } + + else -> { + kotlin.runCatching { + val url = uri.uri + val host = URI(url).host + + buildAnnotatedString { + append(uri.uri) + + val hostIndex = url.indexOf(host) + if (hostIndex != -1) { + addStyle( + style = SpanStyle( + color = disabledContentColor, + ), + start = 0, + end = hostIndex, + ) + addStyle( + style = SpanStyle( + color = disabledContentColor, + ), + start = hostIndex + host.length, + end = url.length, + ) + } + } + }.getOrElse { + AnnotatedString(uri.uri) + } + } + }, + matchTypeTitle = matchTypeTitle, + dropdown = dropdown, + ) + } + } +} + +fun RememberStateFlowScope.create( + copy: CopyText, + id: String, + accountId: AccountId, + title: String?, + value: String, + badge: VaultViewItem.Value.Badge? = null, + badge2: List> = emptyList(), + leading: (@Composable RowScope.() -> Unit)? = null, + verify: ((() -> Unit) -> Unit)? = null, + password: Boolean = false, + username: Boolean = false, + private: Boolean = false, + hidden: Boolean = false, + monospace: Boolean = false, + colorize: Boolean = false, + elevated: Boolean = false, +): VaultViewItem { + val dropdown = if (!hidden) { + buildContextItems { + section { + this += copy.FlatItemAction( + title = translate(Res.strings.copy), + value = value, + hidden = private, + ) + } + section { + this += LargeTypeRoute.showInLargeTypeActionOrNull( + translator = this@create, + text = value, + colorize = colorize, + navigate = ::navigate, + ) + this += LargeTypeRoute.showInLargeTypeActionAndLockOrNull( + translator = this@create, + text = value, + colorize = colorize, + navigate = ::navigate, + ) + this += BarcodeTypeRoute.showInBarcodeTypeActionOrNull( + translator = this@create, + data = value, + format = BarcodeImageFormat.QR_CODE, + navigate = ::navigate, + ) + } + section { + this += createShareAction( + translator = this@create, + text = value, + navigate = ::navigate, + ) + this += createSendActionOrNull( + text = value, + navigate = ::navigate, + ) + } + section { + val isEmail = REGEX_EMAIL.matches(value) + if (isEmail) { + this += EmailLeakRoute.checkBreachesEmailActionOrNull( + translator = this@create, + accountId = accountId, + email = value, + navigate = ::navigate, + ) + } else if (username) { + this += EmailLeakRoute.checkBreachesUsernameActionOrNull( + translator = this@create, + accountId = accountId, + username = value, + navigate = ::navigate, + ) + } else if (password) { + this += PasswordLeakRoute.checkBreachesPasswordAction( + translator = this@create, + password = value, + navigate = ::navigate, + ) + } + } + } + } else { + emptyList() + } + return VaultViewItem.Value( + id = id, + elevation = if (elevated) 1.dp else 0.dp, + title = title, + value = value, + verify = verify, + private = private, + hidden = hidden, + monospace = monospace, + colorize = colorize, + leading = leading, + badge = badge, + badge2 = badge2, + dropdown = dropdown.verify(verify), + ) +} + +private fun create( + translatorScope: TranslatorScope, + copy: CopyText, + id: String, + verify: ((() -> Unit) -> Unit)? = null, + concealFields: Boolean, + data: DSecret.Card, +): VaultViewItem { + val actions = listOfNotNull( + copy.FlatItemAction( + title = translatorScope.translate(Res.strings.copy_card_number), + value = data.number, + hidden = concealFields, + )?.verify(verify), + ) + val dropdown = listOfNotNull( + copy.FlatItemAction( + title = translatorScope.translate(Res.strings.copy_cardholder_name), + value = data.cardholderName, + ), + copy.FlatItemAction( + title = translatorScope.translate(Res.strings.copy_expiration_month), + value = data.expMonth, + ), + copy.FlatItemAction( + title = translatorScope.translate(Res.strings.copy_expiration_year), + value = data.expYear, + ), + ) + return VaultViewItem.Card( + id = id, + data = data, + verify = verify, + actions = actions, + dropdown = dropdown, + concealFields = concealFields, + elevation = 1.dp, + ) +} + +@JvmName("verifyContextItemList") +fun List.verify( + verify: ((() -> Unit) -> Unit)? = null, +): List = this + .map { + when (it) { + is ContextItem.Section -> it + is ContextItem.Custom -> it + is FlatItemAction -> it.verify(verify) + } + } + +fun List.verify( + verify: ((() -> Unit) -> Unit)? = null, +) = this + .map { + it.verify(verify) + } + +fun FlatItemAction.verify( + verify: ((() -> Unit) -> Unit)? = null, +) = if (verify != null) { + val defaultOnClick = onClick + val protectedOnClick = if (defaultOnClick != null) { + // lambda + { + verify.invoke { + defaultOnClick() + } + } + } else { + null + } + this.copy( + onClick = protectedOnClick, + ) +} else { + this +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/IndexedText.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/IndexedText.kt new file mode 100644 index 00000000..9993b472 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/IndexedText.kt @@ -0,0 +1,122 @@ +package com.artemchep.keyguard.feature.home.vault.search + +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.SpanStyle +import androidx.compose.ui.text.buildAnnotatedString +import androidx.compose.ui.text.font.FontWeight + +interface IndexedText { + companion object { + operator fun invoke(text: String): IndexedText = IndexedTextImpl(text) + } + + val text: String + val components: List + + /** + * The searchable component of the text, usually + * a text between spaces. + */ + data class Component( + val origin: String, + ) { + val lowercase: String = origin.lowercase() + } + + data class FindResult( + override val text: String, + override val components: List, + val highlightedText: AnnotatedString, + val score: Float, + ) : IndexedText +} + +private data class IndexedTextImpl( + override val text: String, +) : IndexedText { + override val components = text + .split(' ') + .map { str -> + IndexedText.Component( + origin = str, + ) + } +} + +fun IndexedText.find( + query: IndexedText, + colorBackground: Color = Color.Unspecified, + colorContent: Color = Color.Unspecified, + requireAll: Boolean = true, +): IndexedText.FindResult? { + if (components.isEmpty()) { + return null + } + + var x = query.components.map { false }.toMutableList() + + var score = 0f + val text = buildAnnotatedString { + components.forEachIndexed { compIndex, comp -> + if (compIndex > 0) { + append(' ') + } + append(comp.origin) + + var max = 0f + var start = 0 + var end = 0 + query.components.forEachIndexed { queryCompIndex, queryComp -> + if (comp.lowercase.isEmpty()) { + return@forEachIndexed + } + // Find the query in the target text + val i = comp.lowercase.indexOf(queryComp.lowercase) + if (i == -1) { + return@forEachIndexed + } + + val queryPositionScore = 1f - i.toFloat() / comp.lowercase.length.toFloat() + val queryLengthScore = + queryComp.lowercase.length.toFloat() / comp.lowercase.length.toFloat() + val s = 0f + + queryPositionScore + + queryLengthScore + if (s > max) { + max = s + // remember the position of the match, so we can draw it. + start = i + end = i + queryComp.lowercase.length + } + + x[queryCompIndex] = true + } + if (start != 0 || end != 0) { + val offset = length - comp.lowercase.length + addStyle( + SpanStyle( + fontWeight = FontWeight.Bold, + background = colorBackground, + color = colorContent, + ), + start = offset + start, + end = offset + end, + ) + } + score += max * + // We want to prioritize when the component starts with + // a given query. + ((1f - compIndex.toFloat() / components.size.toFloat()) / 5f + 0.8f) + } + + if (score < 0.01f || !x.all { it } && requireAll) return null + } + + return IndexedText.FindResult( + text = this.text, + components = this.components, + highlightedText = text, + score = score / components.size.toFloat(), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/Suggestions.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/Suggestions.kt new file mode 100644 index 00000000..dfe77b66 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/Suggestions.kt @@ -0,0 +1,138 @@ +package com.artemchep.keyguard.feature.home.vault.search + +import kotlin.math.sqrt + +private const val ignoreLength = 3 + +private val ignoreWords = setOf( + "www", + // popular domains + "com", + "tk", + "cn", + "de", + "net", + "uk", + "org", + "nl", + "icu", + "ru", + "eu", + // rising domains + "icu", + "top", + "xyz", + "site", + "online", + "club", + "wang", + "vip", + "shop", + "work", + // common words used in domain names + "login", + "signin", + "auth", + // top 100 english words that are > ignoreLength + "there", + "some", + "than", + "this", + "would", + "first", + "have", + "each", + "make", + "water", + "from", + "which", + "like", + "been", + "call", + "into", + "time", + "that", + "their", + "word", + "look", + "now", + "will", + "find", + "more", + "long", + "what", + "other", + "write", + "down", + "about", + "were", + "many", + "number", + "with", + "when", + "then", + "come", + "your", + "them", + "made", + "they", + "these", + "could", + "said", + "people", + "part", +) + +fun findAlike( + source: Collection, + query: Collection, + ignoreCommonWords: Boolean = true, +): Float { + val a = find(source, query, ignoreCommonWords = ignoreCommonWords) + val b = find(query, source, ignoreCommonWords = ignoreCommonWords) + return a + b +} + +fun find( + source: Collection, + query: Collection, + ignoreCommonWords: Boolean = true, +): Float { + if (source.isEmpty() || query.isEmpty()) { + return 0.0f + } + + var score = 0f + source.forEachIndexed { _, comp -> + var max = 0f + query.forEach { queryComp -> + if (ignoreCommonWords && (queryComp.length <= ignoreLength || queryComp in ignoreWords) || queryComp.length <= 1) { + return@forEach + } + // Find the query in the target text + val i = comp.indexOf(queryComp) + if (i == -1) { + return@forEach + } + + val queryPositionScore = if (i == 0) { + 1f + } else { + // We slightly discourage components that + // not start from the query. + 0.65f + } + val queryTotalLengthScore = 10f / sqrt(queryComp.length.toFloat()) + val queryMatchLengthScore = queryComp.length.toFloat() / comp.length.toFloat() + val s = 0f + + queryPositionScore + + queryTotalLengthScore * queryMatchLengthScore + if (s > max) { + max = s + } + } + score += max + } + + return score / source.size.toFloat() +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/AccountFilter.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/AccountFilter.kt new file mode 100644 index 00000000..003eae0e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/AccountFilter.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.feature.home.vault.search.filter + +import arrow.optics.Getter +import com.artemchep.keyguard.platform.parcelize.LeParcelize + +@LeParcelize +data class AccountFilter( + override val id: String, +) : Filter, PureFilter by PureFilter(id, Getter { it.accountId }) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/AndFilter.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/AndFilter.kt new file mode 100644 index 00000000..e41a40c2 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/AndFilter.kt @@ -0,0 +1,25 @@ +package com.artemchep.keyguard.feature.home.vault.search.filter + +import com.artemchep.keyguard.feature.home.vault.model.VaultItem2 +import com.artemchep.keyguard.platform.parcelize.LeParcelize + +@LeParcelize +data class AndFilter( + val filters: List, + override val id: String = "and_filter:" + filters.joinToString(separator = ",") { it.id.orEmpty() }, +) : Filter, PureFilter { + override fun invoke( + list: List, + getter: (Any) -> VaultItem2.Item, + ): (VaultItem2.Item) -> Boolean = kotlin.run { + val a = filters + .map { filter -> + filter.invoke(list, getter) + } + + // lambda + fun( + item: VaultItem2.Item, + ): Boolean = a.all { it(item) } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/CollectionFilter.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/CollectionFilter.kt new file mode 100644 index 00000000..b9dcb61b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/CollectionFilter.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.feature.home.vault.search.filter + +import com.artemchep.keyguard.feature.home.vault.model.VaultItem2 +import com.artemchep.keyguard.platform.parcelize.LeParcelize + +@LeParcelize +data class CollectionFilter( + override val id: String?, +) : Filter, PureFilter { + override fun invoke( + list: List, + getter: (Any) -> VaultItem2.Item, + ): (VaultItem2.Item) -> Boolean = ::internalFilter + + private fun internalFilter(item: VaultItem2.Item) = if (id != null) { + id in item.source.collectionIds + } else { + item.source.collectionIds.isEmpty() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/Filter.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/Filter.kt new file mode 100644 index 00000000..5971061b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/Filter.kt @@ -0,0 +1,27 @@ +package com.artemchep.keyguard.feature.home.vault.search.filter + +import arrow.optics.Getter +import com.artemchep.keyguard.feature.home.vault.model.VaultItem2 +import com.artemchep.keyguard.platform.parcelize.LeParcelable + +interface PureFilter : (List, (Any) -> VaultItem2.Item) -> (VaultItem2.Item) -> Boolean { + companion object { + operator fun invoke( + value: String, + getter: Getter, + ): PureFilter = object : PureFilter { + override val id: String = value + + override fun invoke( + list: List, + getter: (Any) -> VaultItem2.Item, + ): (VaultItem2.Item) -> Boolean = ::internalFilter + + private fun internalFilter(item: VaultItem2.Item) = getter.get(item) == value + } + } + + val id: String? +} + +interface Filter : PureFilter, LeParcelable diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder.kt new file mode 100644 index 00000000..7b20b935 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/FilterHolder.kt @@ -0,0 +1,22 @@ +package com.artemchep.keyguard.feature.home.vault.search.filter + +import com.artemchep.keyguard.common.model.DFilter + +@kotlinx.serialization.Serializable +data class FilterHolder( + val state: Map>, +) { + val filter by lazy { + val f = state + .map { + val filters = DFilter.Or(it.value) + filters + } + DFilter.And(f) + } + + val id: Int = state + .asSequence() + .flatMap { it.value } + .fold(0) { y, x -> y xor x.key.hashCode() } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/FolderFilter.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/FolderFilter.kt new file mode 100644 index 00000000..e8373b7c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/FolderFilter.kt @@ -0,0 +1,16 @@ +package com.artemchep.keyguard.feature.home.vault.search.filter + +import com.artemchep.keyguard.feature.home.vault.model.VaultItem2 +import com.artemchep.keyguard.platform.parcelize.LeParcelize + +@LeParcelize +data class FolderFilter( + override val id: String?, +) : Filter, PureFilter { + override fun invoke( + list: List, + getter: (Any) -> VaultItem2.Item, + ): (VaultItem2.Item) -> Boolean = ::internalFilter + + private fun internalFilter(item: VaultItem2.Item) = item.folderId == id +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/OrFilter.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/OrFilter.kt new file mode 100644 index 00000000..7c373922 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/OrFilter.kt @@ -0,0 +1,29 @@ +package com.artemchep.keyguard.feature.home.vault.search.filter + +import arrow.core.partially1 +import com.artemchep.keyguard.feature.home.vault.model.VaultItem2 +import com.artemchep.keyguard.platform.parcelize.LeParcelize + +@LeParcelize +data class OrFilter( + val filters: List, + override val id: String = "or_filter:" + filters.joinToString(separator = ",") { it.id.orEmpty() }, +) : Filter, PureFilter { + override fun invoke( + list: List, + getter: (Any) -> VaultItem2.Item, + ): (VaultItem2.Item) -> Boolean = kotlin.run { + val a = filters + .map { filter -> + filter.invoke(list, getter) + } + + // lambda + ::filte.partially1(a) + } + + private fun filte( + a: List<(VaultItem2.Item) -> Boolean>, + item: VaultItem2.Item, + ) = a.any { it(item) } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/OrganizationFilter.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/OrganizationFilter.kt new file mode 100644 index 00000000..b1c3a294 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/OrganizationFilter.kt @@ -0,0 +1,16 @@ +package com.artemchep.keyguard.feature.home.vault.search.filter + +import com.artemchep.keyguard.feature.home.vault.model.VaultItem2 +import com.artemchep.keyguard.platform.parcelize.LeParcelize + +@LeParcelize +data class OrganizationFilter( + override val id: String?, +) : Filter, PureFilter { + override fun invoke( + list: List, + getter: (Any) -> VaultItem2.Item, + ): (VaultItem2.Item) -> Boolean = ::internalFilter + + private fun internalFilter(item: VaultItem2.Item) = id == item.source.organizationId +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/PasswordDuplicateFilter.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/PasswordDuplicateFilter.kt new file mode 100644 index 00000000..02ff3309 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/PasswordDuplicateFilter.kt @@ -0,0 +1,37 @@ +package com.artemchep.keyguard.feature.home.vault.search.filter + +import arrow.core.partially1 +import com.artemchep.keyguard.feature.home.vault.model.VaultItem2 +import com.artemchep.keyguard.platform.parcelize.LeIgnoredOnParcel +import com.artemchep.keyguard.platform.parcelize.LeParcelize + +@LeParcelize +object PasswordDuplicateFilter : Filter, PureFilter { + @LeIgnoredOnParcel + override val id: String = "duplicate" + + override fun invoke( + list: List, + getter: (Any) -> VaultItem2.Item, + ): (VaultItem2.Item) -> Boolean = kotlin.run { + val map = mutableMapOf() + list.forEach { wrapper -> + val item = getter(wrapper) + val password = item.password + if (password != null) { + val oldValue = map.getOrElse(password) { 0 } + map[password] = oldValue + 1 + } + } + val set = map + .asSequence() + .mapNotNull { entry -> + entry.key.takeIf { entry.value > 1 } + } + .toSet() + ::internalFilter.partially1(set) + } + + private fun internalFilter(passwords: Set, item: VaultItem2.Item) = + item.password in passwords +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/PasswordStrengthFilter.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/PasswordStrengthFilter.kt new file mode 100644 index 00000000..692f12df --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/PasswordStrengthFilter.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.feature.home.vault.search.filter + +import com.artemchep.keyguard.common.model.PasswordStrength +import com.artemchep.keyguard.feature.home.vault.model.VaultItem2 +import com.artemchep.keyguard.platform.parcelize.LeParcelize + +@LeParcelize +data class PasswordStrengthFilter( + val score: PasswordStrength.Score, + override val id: String = score.name, +) : Filter, PureFilter { + override fun invoke( + list: List, + getter: (Any) -> VaultItem2.Item, + ): (VaultItem2.Item) -> Boolean = ::internalFilter + + private fun internalFilter(item: VaultItem2.Item) = item.score?.score == score +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/TypeFilter.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/TypeFilter.kt new file mode 100644 index 00000000..3276bf12 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/filter/TypeFilter.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.feature.home.vault.search.filter + +import arrow.optics.Getter +import com.artemchep.keyguard.platform.parcelize.LeParcelize + +@LeParcelize +data class TypeFilter( + override val id: String, +) : Filter, PureFilter by PureFilter(id, Getter { it.type }) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/sort/AlphabeticalSort.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/sort/AlphabeticalSort.kt new file mode 100644 index 00000000..ca75f6b0 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/sort/AlphabeticalSort.kt @@ -0,0 +1,24 @@ +package com.artemchep.keyguard.feature.home.vault.search.sort + +import com.artemchep.keyguard.feature.home.vault.model.VaultItem2 +import com.artemchep.keyguard.platform.parcelize.LeIgnoredOnParcel +import com.artemchep.keyguard.platform.parcelize.LeParcelize +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +@LeParcelize +@Serializable +object AlphabeticalSort : Sort, PureSort { + @LeIgnoredOnParcel + @Transient + override val id: String = "alphabetical" + + override fun compare( + a: VaultItem2.Item, + b: VaultItem2.Item, + ): Int = kotlin.run { + val aTitle = a.title.text + val bTitle = b.title.text + aTitle.compareTo(bTitle, ignoreCase = true) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/sort/LastCreatedSort.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/sort/LastCreatedSort.kt new file mode 100644 index 00000000..5a3e342a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/sort/LastCreatedSort.kt @@ -0,0 +1,31 @@ +package com.artemchep.keyguard.feature.home.vault.search.sort + +import com.artemchep.keyguard.feature.home.vault.model.VaultItem2 +import com.artemchep.keyguard.platform.parcelize.LeIgnoredOnParcel +import com.artemchep.keyguard.platform.parcelize.LeParcelize +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +@LeParcelize +@Serializable +object LastCreatedSort : Sort, PureSort { + private object LastCreatedRawComparator : Comparator { + override fun compare( + a: VaultItem2.Item, + b: VaultItem2.Item, + ): Int = compareValues(b.createdDate, a.createdDate) + } + + @LeIgnoredOnParcel + @Transient + override val id: String = "last_created" + + @LeIgnoredOnParcel + private val comparator = LastCreatedRawComparator + .thenBy(AlphabeticalSort) { it } + + override fun compare( + a: VaultItem2.Item, + b: VaultItem2.Item, + ): Int = comparator.compare(a, b) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/sort/LastModifiedSort.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/sort/LastModifiedSort.kt new file mode 100644 index 00000000..ad33947b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/sort/LastModifiedSort.kt @@ -0,0 +1,31 @@ +package com.artemchep.keyguard.feature.home.vault.search.sort + +import com.artemchep.keyguard.feature.home.vault.model.VaultItem2 +import com.artemchep.keyguard.platform.parcelize.LeIgnoredOnParcel +import com.artemchep.keyguard.platform.parcelize.LeParcelize +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +@LeParcelize +@Serializable +object LastModifiedSort : Sort, PureSort { + private object LastModifiedRawComparator : Comparator { + override fun compare( + a: VaultItem2.Item, + b: VaultItem2.Item, + ): Int = compareValues(b.revisionDate, a.revisionDate) + } + + @LeIgnoredOnParcel + @Transient + override val id: String = "last_modified" + + @LeIgnoredOnParcel + private val comparator = LastModifiedRawComparator + .thenBy(AlphabeticalSort) { it } + + override fun compare( + a: VaultItem2.Item, + b: VaultItem2.Item, + ): Int = comparator.compare(a, b) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/sort/PasswordLastModifiedSort.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/sort/PasswordLastModifiedSort.kt new file mode 100644 index 00000000..84ddfdda --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/sort/PasswordLastModifiedSort.kt @@ -0,0 +1,31 @@ +package com.artemchep.keyguard.feature.home.vault.search.sort + +import com.artemchep.keyguard.feature.home.vault.model.VaultItem2 +import com.artemchep.keyguard.platform.parcelize.LeIgnoredOnParcel +import com.artemchep.keyguard.platform.parcelize.LeParcelize +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +@LeParcelize +@Serializable +object PasswordLastModifiedSort : Sort, PureSort { + private object PasswordLastModifiedRawComparator : Comparator { + override fun compare( + a: VaultItem2.Item, + b: VaultItem2.Item, + ): Int = compareValues(b.passwordRevisionDate, a.passwordRevisionDate) + } + + @LeIgnoredOnParcel + @Transient + override val id: String = "password_last_modified" + + @LeIgnoredOnParcel + private val comparator = PasswordLastModifiedRawComparator + .thenBy(AlphabeticalSort) { it } + + override fun compare( + a: VaultItem2.Item, + b: VaultItem2.Item, + ): Int = comparator.compare(a, b) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/sort/PasswordSort.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/sort/PasswordSort.kt new file mode 100644 index 00000000..687d9bff --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/sort/PasswordSort.kt @@ -0,0 +1,29 @@ +package com.artemchep.keyguard.feature.home.vault.search.sort + +import com.artemchep.keyguard.feature.home.vault.model.VaultItem2 +import com.artemchep.keyguard.platform.parcelize.LeIgnoredOnParcel +import com.artemchep.keyguard.platform.parcelize.LeParcelize +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +@LeParcelize +@Serializable +object PasswordSort : Sort, PureSort { + @LeIgnoredOnParcel + @Transient + override val id: String = "password" + + override fun compare( + a: VaultItem2.Item, + b: VaultItem2.Item, + ): Int = kotlin.run { + val aTitle = a.password + val bTitle = b.password + // check if null + if (aTitle === bTitle) return 0 + if (aTitle == null) return -1 + if (bTitle == null) return 1 + + aTitle.compareTo(bTitle, ignoreCase = false) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/sort/PasswordStrengthSort.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/sort/PasswordStrengthSort.kt new file mode 100644 index 00000000..50c3dc1e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/sort/PasswordStrengthSort.kt @@ -0,0 +1,31 @@ +package com.artemchep.keyguard.feature.home.vault.search.sort + +import com.artemchep.keyguard.feature.home.vault.model.VaultItem2 +import com.artemchep.keyguard.platform.parcelize.LeIgnoredOnParcel +import com.artemchep.keyguard.platform.parcelize.LeParcelize +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +@LeParcelize +@Serializable +object PasswordStrengthSort : Sort, PureSort { + private object PasswordStrengthRawComparator : Comparator { + override fun compare( + a: VaultItem2.Item, + b: VaultItem2.Item, + ): Int = -compareValues(b.score?.score, a.score?.score) + } + + @LeIgnoredOnParcel + @Transient + override val id: String = "password_strength" + + @LeIgnoredOnParcel + private val comparator = PasswordStrengthRawComparator + .thenBy(AlphabeticalSort) { it } + + override fun compare( + a: VaultItem2.Item, + b: VaultItem2.Item, + ): Int = comparator.compare(a, b) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/sort/Sort.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/sort/Sort.kt new file mode 100644 index 00000000..a9755e61 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/search/sort/Sort.kt @@ -0,0 +1,24 @@ +package com.artemchep.keyguard.feature.home.vault.search.sort + +import com.artemchep.keyguard.feature.home.vault.model.VaultItem2 +import com.artemchep.keyguard.platform.parcelize.LeParcelable + +interface PureSort : Comparator { + val id: String +} + +interface Sort : PureSort, LeParcelable { + companion object { + fun valueOf( + name: String, + ): Sort? = when (name) { + AlphabeticalSort.id -> AlphabeticalSort + LastCreatedSort.id -> LastCreatedSort + LastModifiedSort.id -> LastModifiedSort + PasswordSort.id -> PasswordSort + PasswordLastModifiedSort.id -> PasswordLastModifiedSort + PasswordStrengthSort.id -> PasswordStrengthSort + else -> null + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/util/SortLimiter.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/util/SortLimiter.kt new file mode 100644 index 00000000..7a4b7232 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/util/SortLimiter.kt @@ -0,0 +1,3 @@ +package com.artemchep.keyguard.feature.home.vault.util + +const val AlphabeticalSortMinItemsSize = 24 diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/util/changePasswordAction.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/util/changePasswordAction.kt new file mode 100644 index 00000000..afe12c8e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/util/changePasswordAction.kt @@ -0,0 +1,660 @@ +package com.artemchep.keyguard.feature.home.vault.util + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Lock +import androidx.compose.material.icons.outlined.Delete +import androidx.compose.material.icons.outlined.DeleteForever +import androidx.compose.material.icons.outlined.Edit +import androidx.compose.material.icons.outlined.FileCopy +import androidx.compose.material.icons.outlined.Folder +import androidx.compose.material.icons.outlined.History +import androidx.compose.material.icons.outlined.LockOpen +import androidx.compose.material.icons.outlined.Merge +import androidx.compose.material.icons.outlined.Password +import androidx.compose.material.icons.outlined.RestoreFromTrash +import androidx.compose.material3.Badge +import androidx.compose.material3.BadgedBox +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import com.artemchep.keyguard.common.io.biFlatTap +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.FolderOwnership2 +import com.artemchep.keyguard.common.model.ToastMessage +import com.artemchep.keyguard.common.model.create.CreateRequest +import com.artemchep.keyguard.common.usecase.ChangeCipherNameById +import com.artemchep.keyguard.common.usecase.ChangeCipherPasswordById +import com.artemchep.keyguard.common.usecase.CipherMerge +import com.artemchep.keyguard.common.usecase.CopyCipherById +import com.artemchep.keyguard.common.usecase.MoveCipherToFolderById +import com.artemchep.keyguard.common.usecase.RePromptCipherById +import com.artemchep.keyguard.common.usecase.RemoveCipherById +import com.artemchep.keyguard.common.usecase.RestoreCipherById +import com.artemchep.keyguard.common.usecase.TrashCipherById +import com.artemchep.keyguard.feature.confirmation.ConfirmationResult +import com.artemchep.keyguard.feature.confirmation.ConfirmationRoute +import com.artemchep.keyguard.feature.confirmation.folder.FolderConfirmationResult +import com.artemchep.keyguard.feature.confirmation.folder.FolderConfirmationRoute +import com.artemchep.keyguard.feature.confirmation.organization.FolderInfo +import com.artemchep.keyguard.feature.confirmation.organization.OrganizationConfirmationResult +import com.artemchep.keyguard.feature.confirmation.organization.OrganizationConfirmationRoute +import com.artemchep.keyguard.feature.home.vault.add.AddRoute +import com.artemchep.keyguard.feature.home.vault.add.LeAddRoute +import com.artemchep.keyguard.feature.home.vault.screen.VaultViewPasswordHistoryRoute +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.registerRouteResultReceiver +import com.artemchep.keyguard.feature.navigation.state.RememberStateFlowScope +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.SimpleNote +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.theme.badgeContainer + +fun RememberStateFlowScope.cipherEnableConfirmAccessAction( + rePromptCipherById: RePromptCipherById, + ciphers: List, + before: (() -> Unit)? = null, + after: ((Boolean) -> Unit)? = null, +) = kotlin.run { + FlatItemAction( + icon = Icons.Filled.Lock, + title = translate(Res.strings.ciphers_action_enable_auth_reprompt_title), + onClick = { + before?.invoke() + + val filteredCipherIds = ciphers + .asSequence() + .filter { !it.reprompt } + .map { it.id } + .toSet() + rePromptCipherById( + filteredCipherIds, + true, + ) + .effectMap { + val message = ToastMessage( + title = "Auth re-prompt enabled", + ) + message(message) + } + .launchIn(appScope) + }, + ) +} + +fun RememberStateFlowScope.cipherDisableConfirmAccessAction( + rePromptCipherById: RePromptCipherById, + ciphers: List, + before: (() -> Unit)? = null, + after: ((Boolean) -> Unit)? = null, +) = kotlin.run { + FlatItemAction( + icon = Icons.Outlined.LockOpen, + title = translate(Res.strings.ciphers_action_disable_auth_reprompt_title), + onClick = { + before?.invoke() + + val filteredCipherIds = ciphers + .asSequence() + .filter { it.reprompt } + .map { it.id } + .toSet() + rePromptCipherById( + filteredCipherIds, + false, + ) + .effectMap { + val message = ToastMessage( + title = "Auth re-prompt disabled", + ) + message(message) + } + .biFlatTap( + ifException = { + ioEffect { after?.invoke(false) } + }, + ifSuccess = { + ioEffect { after?.invoke(true) } + }, + ) + .launchIn(appScope) + }, + ) +} + +fun RememberStateFlowScope.cipherEditAction( + cipher: DSecret, + behavior: AddRoute.Args.Behavior = AddRoute.Args.Behavior(), + before: (() -> Unit)? = null, + after: ((Boolean) -> Unit)? = null, +) = kotlin.run { + val icon = icon(Icons.Outlined.Edit) + val title = translate(Res.strings.ciphers_action_edit_title) + FlatItemAction( + leading = icon, + title = title, + onClick = { + before?.invoke() + + val route = LeAddRoute( + args = AddRoute.Args( + behavior = behavior, + initialValue = cipher, + ), + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + // TODO: Where do I put 'after' callback? + }, + ) +} + +fun RememberStateFlowScope.cipherMergeIntoAction( + cipherMerge: CipherMerge, + ciphers: List, + behavior: AddRoute.Args.Behavior = AddRoute.Args.Behavior(), + before: (() -> Unit)? = null, + after: ((Boolean) -> Unit)? = null, +) = kotlin.run { + val icon = icon(Icons.Outlined.Merge) + val title = translate(Res.strings.ciphers_action_merge_title) + FlatItemAction( + leading = icon, + title = title, + onClick = { + before?.invoke() + cipherMergeInto( + cipherMerge = cipherMerge, + ciphers = ciphers, + behavior = behavior, + ) + // TODO: Where do I put 'after' callback? + }, + ) +} + +fun RememberStateFlowScope.cipherMergeInto( + cipherMerge: CipherMerge, + ciphers: List, + behavior: AddRoute.Args.Behavior = AddRoute.Args.Behavior(), +) = kotlin.run { + val cipher = cipherMerge.invoke(ciphers) + val type = ciphers.firstOrNull()?.type + val route = LeAddRoute( + args = AddRoute.Args( + behavior = behavior, + initialValue = cipher, + ownershipRo = false, + type = type, + merge = AddRoute.Args.Merge( + ciphers = ciphers, + ), + ), + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) +} + +fun RememberStateFlowScope.cipherCopyToAction( + copyCipherById: CopyCipherById, + ciphers: List, + before: (() -> Unit)? = null, + after: ((Boolean) -> Unit)? = null, +) = kotlin.run { + val iconImageVector = Icons.Outlined.FileCopy + val title = translate(Res.strings.ciphers_action_copy_title) + FlatItemAction( + icon = iconImageVector, + title = title, + onClick = { + before?.invoke() + + val ciphersHaveAttachments = ciphers.any { it.attachments.isNotEmpty() } + val note = when { + ciphersHaveAttachments -> { + val text = + "Copying a cipher does not copy its attachments, this feature is work in progress." + SimpleNote( + text = text, + type = SimpleNote.Type.INFO, + ) + } + + else -> null + } + val route = registerRouteResultReceiver( + route = OrganizationConfirmationRoute( + args = OrganizationConfirmationRoute.Args( + decor = OrganizationConfirmationRoute.Args.Decor( + title = title, + note = note, + icon = iconImageVector, + ), + ), + ), + ) { result -> + if (result is OrganizationConfirmationResult.Confirm) { + val ownership = CreateRequest.Ownership2( + accountId = result.accountId, + folder = result.folderId, + organizationId = result.organizationId, + collectionIds = result.collectionsIds, + ) + val cipherIdsToOwnership = ciphers + .associate { cipher -> + cipher.id to ownership + } + copyCipherById(cipherIdsToOwnership) + .effectMap { + val message = ToastMessage( + title = "Copied ciphers!", + ) + message(message) + } + .launchIn(appScope) + } + + val success = result is OrganizationConfirmationResult.Confirm + after?.invoke(success) + } + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) +} + +fun RememberStateFlowScope.cipherMoveToFolderAction( + moveCipherToFolderById: MoveCipherToFolderById, + accountId: AccountId, + ciphers: List, + before: (() -> Unit)? = null, + after: ((Boolean) -> Unit)? = null, +) = kotlin.run { + val icon = icon(Icons.Outlined.Folder) + val title = translate(Res.strings.ciphers_action_change_folder_title) + FlatItemAction( + leading = icon, + title = title, + onClick = { + before?.invoke() + + val blacklistedFolderIds = ciphers + .asSequence() + .map { it.folderId } + .toSet() + // only if has one value + .takeIf { it.size == 1 } + .orEmpty() + val route = registerRouteResultReceiver( + route = FolderConfirmationRoute( + args = FolderConfirmationRoute.Args( + accountId = accountId, + blacklistedFolderIds = blacklistedFolderIds, + ), + ), + ) { result -> + if (result is FolderConfirmationResult.Confirm) { + // Filter out the ciphers that already have the + // target folder. This is just to speed up the + // change process. + val cipherIds = when (val info = result.folderInfo) { + is FolderInfo.None, + is FolderInfo.Id, + -> { + val newFolderId = when (info) { + is FolderInfo.None -> null + is FolderInfo.Id -> info.id + else -> error("Unreachable statement!") + } + ciphers + .asSequence() + .filter { it.folderId != newFolderId } + } + + is FolderInfo.New -> { + ciphers + .asSequence() + } + } + // Just in case we messed up before, make sure that + // the ciphers all belong to the target account. + .filter { it.accountId == accountId.id } + .map { it.id } + .toSet() + val destination = FolderOwnership2( + accountId = accountId.id, + folder = result.folderInfo, + ) + moveCipherToFolderById( + cipherIds, + destination, + ) + .effectMap { + val message = ToastMessage( + title = "Moved to the folder", + ) + message(message) + } + .launchIn(appScope) + } + + val success = result is FolderConfirmationResult.Confirm + after?.invoke(success) + } + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) +} + +fun RememberStateFlowScope.cipherChangeNameAction( + changeCipherNameById: ChangeCipherNameById, + ciphers: List, + before: (() -> Unit)? = null, + after: ((Boolean) -> Unit)? = null, +) = kotlin.run { + val icon = icon(Icons.Outlined.Edit) + val title = if (ciphers.size > 1) { + translate(Res.strings.ciphers_action_change_names_title) + } else { + translate(Res.strings.ciphers_action_change_name_title) + } + FlatItemAction( + leading = icon, + title = title, + onClick = { + before?.invoke() + + val items = ciphers + .sortedBy { it.name } + .map { cipher -> + ConfirmationRoute.Args.Item.StringItem( + key = cipher.id, + value = cipher.name, + title = cipher.name, + type = ConfirmationRoute.Args.Item.StringItem.Type.Text, + canBeEmpty = false, + ) + } + val route = registerRouteResultReceiver( + route = ConfirmationRoute( + args = ConfirmationRoute.Args( + icon = icon, + title = title, + items = items, + ), + ), + ) { result -> + if (result is ConfirmationResult.Confirm) { + val cipherIdsToNames = result + .data + .mapValues { it.value as String } + changeCipherNameById(cipherIdsToNames) + .effectMap { + val message = ToastMessage( + title = "Changed names", + ) + message(message) + } + .launchIn(appScope) + } + + val success = result is ConfirmationResult.Confirm + after?.invoke(success) + } + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) +} + +fun RememberStateFlowScope.cipherChangePasswordAction( + changeCipherPasswordById: ChangeCipherPasswordById, + ciphers: List, + before: (() -> Unit)? = null, + after: ((Boolean) -> Unit)? = null, +) = kotlin.run { + val icon = icon(Icons.Outlined.Password) + val title = kotlin.run { + val hasPasswords = ciphers.any { !it.login?.password.isNullOrEmpty() } + if (hasPasswords) { + if (ciphers.size > 1) { + translate(Res.strings.ciphers_action_change_passwords_title) + } else { + translate(Res.strings.ciphers_action_change_password_title) + } + } else { + if (ciphers.size > 1) { + translate(Res.strings.ciphers_action_add_passwords_title) + } else { + translate(Res.strings.ciphers_action_add_password_title) + } + } + } + FlatItemAction( + leading = icon, + title = title, + onClick = { + before?.invoke() + + val items = ciphers + .filter { it.type == DSecret.Type.Login } + .sortedBy { it.name } + .map { cipher -> + ConfirmationRoute.Args.Item.StringItem( + key = cipher.id, + value = cipher.login?.password.orEmpty(), + title = cipher.name, + type = ConfirmationRoute.Args.Item.StringItem.Type.Password, + canBeEmpty = true, // so you can clear passwords + ) + } + val route = registerRouteResultReceiver( + route = ConfirmationRoute( + args = ConfirmationRoute.Args( + icon = icon, + title = title, + message = translate(Res.strings.generator_password_note, 16), + items = items, + ), + ), + ) { result -> + if (result is ConfirmationResult.Confirm) { + val cipherIdsToPasswords = result + .data + .mapValues { it.value as String } + changeCipherPasswordById(cipherIdsToPasswords) + .effectMap { + val message = ToastMessage( + title = "Changed passwords", + ) + message(message) + } + .launchIn(appScope) + } + + val success = result is ConfirmationResult.Confirm + after?.invoke(success) + } + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) +} + +@OptIn(ExperimentalMaterial3Api::class) +fun RememberStateFlowScope.cipherViewPasswordHistoryAction( + cipher: DSecret, + before: (() -> Unit)? = null, +) = kotlin.run { + val title = translate(Res.strings.ciphers_action_view_password_history_title) + FlatItemAction( + leading = { + BadgedBox( + badge = { + Badge( + containerColor = MaterialTheme.colorScheme.badgeContainer, + ) { + val size = cipher.login?.passwordHistory?.size ?: 0 + Text(text = size.toString()) + } + }, + ) { + Icon( + imageVector = Icons.Outlined.History, + contentDescription = null, + ) + } + }, + title = title, + onClick = { + val intent = NavigationIntent.NavigateToRoute( + VaultViewPasswordHistoryRoute( + itemId = cipher.id, + ), + ) + navigate(intent) + }, + ) +} + +fun RememberStateFlowScope.cipherTrashAction( + trashCipherById: TrashCipherById, + ciphers: List, + before: (() -> Unit)? = null, + after: ((Boolean) -> Unit)? = null, +) = kotlin.run { + val icon = icon(Icons.Outlined.Delete) + val title = translate(Res.strings.ciphers_action_trash_title) + FlatItemAction( + leading = icon, + title = title, + onClick = { + before?.invoke() + + val route = registerRouteResultReceiver( + route = ConfirmationRoute( + args = ConfirmationRoute.Args( + icon = icon(Icons.Outlined.Delete), + title = "Move to trash?", + message = "Items that have been in Trash more than 30 days will be automatically deleted.", + ), + ), + ) { result -> + if (result is ConfirmationResult.Confirm) { + val cipherIds = ciphers + .map { it.id } + .toSet() + trashCipherById(cipherIds) + .effectMap { + val message = ToastMessage( + title = "Trashed", + ) + message(message) + } + .launchIn(appScope) + } + + val success = result is ConfirmationResult.Confirm + after?.invoke(success) + } + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) +} + +fun RememberStateFlowScope.cipherRestoreAction( + restoreCipherById: RestoreCipherById, + ciphers: List, + before: (() -> Unit)? = null, + after: ((Boolean) -> Unit)? = null, +) = kotlin.run { + val icon = icon(Icons.Outlined.RestoreFromTrash) + val title = translate(Res.strings.ciphers_action_restore_title) + FlatItemAction( + leading = icon, + title = title, + onClick = { + before?.invoke() + + val route = registerRouteResultReceiver( + route = ConfirmationRoute( + args = ConfirmationRoute.Args( + icon = icon(Icons.Outlined.RestoreFromTrash), + title = "Restore from trash?", + ), + ), + ) { result -> + if (result is ConfirmationResult.Confirm) { + val cipherIds = ciphers + .map { it.id } + .toSet() + restoreCipherById(cipherIds) + .effectMap { + val message = ToastMessage( + title = "Restored", + ) + message(message) + } + .launchIn(appScope) + } + + val success = result is ConfirmationResult.Confirm + after?.invoke(success) + } + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) +} + +fun RememberStateFlowScope.cipherDeleteAction( + removeCipherById: RemoveCipherById, + ciphers: List, + before: (() -> Unit)? = null, + after: ((Boolean) -> Unit)? = null, +) = kotlin.run { + val icon = icon(Icons.Outlined.DeleteForever) + val title = translate(Res.strings.ciphers_action_delete_title) + FlatItemAction( + leading = icon, + title = title, + onClick = { + before?.invoke() + + val route = registerRouteResultReceiver( + route = ConfirmationRoute( + args = ConfirmationRoute.Args( + icon = icon(Icons.Outlined.DeleteForever), + title = "Delete forever?", + ), + ), + ) { result -> + if (result is ConfirmationResult.Confirm) { + val cipherIds = ciphers + .map { it.id } + .toSet() + removeCipherById(cipherIds) + .effectMap { + val message = ToastMessage( + title = "Deleted", + ) + message(message) + } + .launchIn(appScope) + } + + val success = result is ConfirmationResult.Confirm + after?.invoke(success) + } + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/JustDeleteMeComponent.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/JustDeleteMeComponent.kt new file mode 100644 index 00000000..0e06df4b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/JustDeleteMeComponent.kt @@ -0,0 +1,37 @@ +package com.artemchep.keyguard.feature.justdeleteme + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import com.artemchep.keyguard.common.service.justdeleteme.JustDeleteMeServiceInfo +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.Ah +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun AhDifficulty( + modifier: Modifier = Modifier, + model: JustDeleteMeServiceInfo, +) { + val difficulty = model.difficulty + val score = when (difficulty) { + "easy" -> 1f + "medium" -> 0.5f + "hard" -> 0.2f + "limited" -> 0.0f + "impossible" -> 0.0f + else -> 0.0f + } + val text = when (difficulty) { + "easy" -> stringResource(Res.strings.justdeleteme_difficulty_easy_label) + "medium" -> stringResource(Res.strings.justdeleteme_difficulty_medium_label) + "hard" -> stringResource(Res.strings.justdeleteme_difficulty_hard_label) + "limited" -> stringResource(Res.strings.justdeleteme_difficulty_limited_availability_label) + "impossible" -> stringResource(Res.strings.justdeleteme_difficulty_impossible_label) + else -> "" + } + Ah( + modifier = modifier, + score = score, + text = text, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/directory/JustDeleteMeServiceListRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/directory/JustDeleteMeServiceListRoute.kt new file mode 100644 index 00000000..4a47cbae --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/directory/JustDeleteMeServiceListRoute.kt @@ -0,0 +1,40 @@ +package com.artemchep.keyguard.feature.justdeleteme.directory + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.AccountBox +import androidx.compose.material.icons.outlined.Delete +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.Route +import com.artemchep.keyguard.feature.navigation.state.TranslatorScope +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.icons.iconSmall + +object JustDeleteMeServiceListRoute : Route { + fun justDeleteMeActionOrNull( + translator: TranslatorScope, + navigate: (NavigationIntent) -> Unit, + ) = justDeleteMeAction( + translator = translator, + navigate = navigate, + ) + + fun justDeleteMeAction( + translator: TranslatorScope, + navigate: (NavigationIntent) -> Unit, + ) = FlatItemAction( + leading = iconSmall(Icons.Outlined.AccountBox, Icons.Outlined.Delete), + title = translator.translate(Res.strings.uri_action_how_to_delete_account_title), + onClick = { + val route = JustDeleteMeServiceListRoute + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + + @Composable + override fun Content() { + JustDeleteMeListScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/directory/JustDeleteMeServiceListScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/directory/JustDeleteMeServiceListScreen.kt new file mode 100644 index 00000000..6ade5ed8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/directory/JustDeleteMeServiceListScreen.kt @@ -0,0 +1,265 @@ +package com.artemchep.keyguard.feature.justdeleteme.directory + +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyListState +import androidx.compose.foundation.lazy.items +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.OpenInBrowser +import androidx.compose.material.pullrefresh.pullRefresh +import androidx.compose.material.pullrefresh.rememberPullRefreshState +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.IconButton +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.runtime.snapshotFlow +import androidx.compose.ui.Modifier +import androidx.compose.ui.input.nestedscroll.nestedScroll +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.flatMap +import com.artemchep.keyguard.common.model.getOrNull +import com.artemchep.keyguard.feature.EmptySearchView +import com.artemchep.keyguard.feature.ErrorView +import com.artemchep.keyguard.feature.home.vault.component.SearchTextField +import com.artemchep.keyguard.feature.justdeleteme.AhDifficulty +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.DefaultProgressBar +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.ScaffoldLazyColumn +import com.artemchep.keyguard.ui.focus.FocusRequester2 +import com.artemchep.keyguard.ui.focus.focusRequester2 +import com.artemchep.keyguard.ui.icons.IconBox +import com.artemchep.keyguard.ui.poweredby.URL_JUST_DELETE_ME +import com.artemchep.keyguard.ui.pulltosearch.PullToSearch +import com.artemchep.keyguard.ui.skeleton.SkeletonItem +import com.artemchep.keyguard.ui.toolbar.CustomToolbar +import com.artemchep.keyguard.ui.toolbar.content.CustomToolbarContent +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.filter +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.withIndex + +@Composable +fun JustDeleteMeListScreen( +) { + val loadableState = produceJustDeleteMeServiceListState() + JustDeleteMeListScreen( + loadableState = loadableState, + ) +} + +@OptIn(ExperimentalMaterial3Api::class, ExperimentalFoundationApi::class) +@Composable +fun JustDeleteMeListScreen( + loadableState: Loadable, +) { + val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior() + val filterState = run { + val filterFlow = loadableState.getOrNull()?.filter + remember(filterFlow) { + filterFlow ?: MutableStateFlow(null) + }.collectAsState() + } + + val listRevision = + loadableState.getOrNull()?.content?.getOrNull()?.getOrNull()?.revision + val listState = remember { + LazyListState( + firstVisibleItemIndex = 0, + firstVisibleItemScrollOffset = 0, + ) + } + + LaunchedEffect(listRevision) { + // TODO: How do you wait till the layout state start to represent + // the actual data? + val listSize = + loadableState.getOrNull()?.content?.getOrNull()?.getOrNull()?.items?.size + snapshotFlow { listState.layoutInfo.totalItemsCount } + .withIndex() + .filter { + it.index > 0 || it.value == listSize + } + .first() + + listState.scrollToItem(0, 0) + } + + val focusRequester = remember { FocusRequester2() } + // Auto focus the text field + // on launch. + LaunchedEffect( + focusRequester, + filterState, + ) { + snapshotFlow { filterState.value } + .first { it?.query?.onChange != null } + delay(100L) + focusRequester.requestFocus() + } + + val pullRefreshState = rememberPullRefreshState( + refreshing = false, + onRefresh = { + focusRequester.requestFocus() + }, + ) + ScaffoldLazyColumn( + modifier = Modifier + .pullRefresh(pullRefreshState) + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + CustomToolbar( + scrollBehavior = scrollBehavior, + ) { + Column { + CustomToolbarContent( + title = stringResource(Res.strings.justdeleteme_title), + icon = { + NavigationIcon() + }, + actions = { + val updatedNavigationController by rememberUpdatedState( + LocalNavigationController.current, + ) + IconButton( + onClick = { + val intent = + NavigationIntent.NavigateToBrowser(URL_JUST_DELETE_ME) + updatedNavigationController.queue(intent) + }, + ) { + IconBox(Icons.Outlined.OpenInBrowser) + } + }, + ) + + val query = filterState.value?.query + val queryText = query?.state?.value.orEmpty() + SearchTextField( + modifier = Modifier + .focusRequester2(focusRequester), + text = queryText, + placeholder = stringResource(Res.strings.justdeleteme_search_placeholder), + searchIcon = false, + leading = {}, + trailing = {}, + onTextChange = query?.onChange, + onGoClick = null, + ) + } + } + }, + pullRefreshState = pullRefreshState, + overlay = { + val filterRevision = filterState.value?.revision + DefaultProgressBar( + visible = listRevision != null && filterRevision != null && + listRevision != filterRevision, + ) + + PullToSearch( + modifier = Modifier + .padding(contentPadding.value), + pullRefreshState = pullRefreshState, + ) + }, + listState = listState, + ) { + val contentState = loadableState + .flatMap { it.content } + when (contentState) { + is Loadable.Loading -> { + for (i in 1..3) { + item("skeleton.$i") { + SkeletonItem() + } + } + } + + is Loadable.Ok -> { + contentState.value.fold( + ifLeft = { e -> + item("error") { + ErrorView( + text = { + Text(text = "Failed to load app list!") + }, + exception = e, + ) + } + }, + ifRight = { content -> + val items = content.items + if (items.isEmpty()) { + item("empty") { + NoItemsPlaceholder() + } + } + + items( + items = items, + key = { it.key }, + ) { item -> + AppItem( + modifier = Modifier + .animateItemPlacement(), + item = item, + ) + } + }, + ) + } + } + } +} + +@Composable +private fun NoItemsPlaceholder( + modifier: Modifier = Modifier, +) { + EmptySearchView( + modifier = modifier, + text = { + Text( + text = stringResource(Res.strings.justdeleteme_empty_label), + ) + }, + ) +} + +@Composable +private fun AppItem( + modifier: Modifier, + item: JustDeleteMeServiceListState.Item, +) { + FlatItem( + modifier = modifier, + leading = { + item.icon() + }, + title = { + Text(item.name) + }, + trailing = { + AhDifficulty( + modifier = Modifier, + model = item.data, + ) + }, + onClick = item.onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/directory/JustDeleteMeServiceListState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/directory/JustDeleteMeServiceListState.kt new file mode 100644 index 00000000..805470db --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/directory/JustDeleteMeServiceListState.kt @@ -0,0 +1,40 @@ +package com.artemchep.keyguard.feature.justdeleteme.directory + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.Immutable +import androidx.compose.ui.text.AnnotatedString +import arrow.core.Either +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.service.justdeleteme.JustDeleteMeServiceInfo +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import kotlinx.coroutines.flow.StateFlow + +data class JustDeleteMeServiceListState( + val filter: StateFlow, + val content: Loadable>, +) { + @Immutable + data class Filter( + val revision: Int, + val query: TextFieldModel2, + ) { + companion object + } + + @Immutable + data class Content( + val revision: Int, + val items: List, + ) { + companion object + } + + @Immutable + data class Item( + val key: String, + val icon: @Composable () -> Unit, + val name: AnnotatedString, + val data: JustDeleteMeServiceInfo, + val onClick: (() -> Unit)? = null, + ) +} \ No newline at end of file diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/directory/JustDeleteMeServiceListStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/directory/JustDeleteMeServiceListStateProducer.kt new file mode 100644 index 00000000..5daf6be4 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/directory/JustDeleteMeServiceListStateProducer.kt @@ -0,0 +1,155 @@ +package com.artemchep.keyguard.feature.justdeleteme.directory + +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.unit.dp +import arrow.core.partially1 +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.service.justdeleteme.JustDeleteMeService +import com.artemchep.keyguard.common.service.justdeleteme.JustDeleteMeServiceInfo +import com.artemchep.keyguard.feature.crashlytics.crashlyticsAttempt +import com.artemchep.keyguard.feature.favicon.FaviconImage +import com.artemchep.keyguard.feature.favicon.FaviconUrl +import com.artemchep.keyguard.feature.home.vault.search.IndexedText +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.feature.search.search.IndexedModel +import com.artemchep.keyguard.feature.search.search.mapSearch +import com.artemchep.keyguard.feature.search.search.searchFilter +import com.artemchep.keyguard.feature.search.search.searchQueryHandle +import kotlinx.coroutines.flow.asFlow +import kotlinx.coroutines.flow.map +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +private class JustDeleteMeServiceListUiException( + msg: String, + cause: Throwable, +) : RuntimeException(msg, cause) + +@Composable +fun produceJustDeleteMeServiceListState( +) = with(localDI().direct) { + produceJustDeleteMeServiceListState( + justDeleteMeService = instance(), + ) +} + +@Composable +fun produceJustDeleteMeServiceListState( + justDeleteMeService: JustDeleteMeService, +): Loadable = produceScreenState( + key = "justdeleteme_service_list", + initial = Loadable.Loading, + args = arrayOf(), +) { + val queryHandle = searchQueryHandle("query") + val queryFlow = searchFilter(queryHandle) { model, revision -> + JustDeleteMeServiceListState.Filter( + revision = revision, + query = model, + ) + } + + val modelComparator = Comparator { a: JustDeleteMeServiceInfo, b: JustDeleteMeServiceInfo -> + a.name.compareTo(b.name, ignoreCase = true) + } + + fun onClick(model: JustDeleteMeServiceInfo) { + val route = JustDeleteMeServiceViewRoute( + args = JustDeleteMeServiceViewRoute.Args( + justDeleteMe = model, + ), + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + } + + fun List.toItems(): List { + val nameCollisions = mutableMapOf() + return this + .sortedWith(modelComparator) + .map { serviceInfo -> + val key = kotlin.run { + val newNameCollisionCounter = nameCollisions + .getOrDefault(serviceInfo.name, 0) + 1 + nameCollisions[serviceInfo.name] = + newNameCollisionCounter + serviceInfo.name + ":" + newNameCollisionCounter + } + val faviconUrl = serviceInfo.url?.let { url -> + FaviconUrl( + serverId = null, + url = url, + ) + } + JustDeleteMeServiceListState.Item( + key = key, + icon = { + FaviconImage( + modifier = Modifier + .size(24.dp) + .clip(CircleShape), + imageModel = { faviconUrl }, + ) + }, + name = AnnotatedString(serviceInfo.name), + data = serviceInfo, + onClick = ::onClick + .partially1(serviceInfo), + ) + } + } + + val itemsFlow = justDeleteMeService.get() + .asFlow() + .map { apps -> + apps + .toItems() + // Index for the search. + .map { item -> + IndexedModel( + model = item, + indexedText = IndexedText.invoke(item.name.text), + ) + } + } + .mapSearch( + handle = queryHandle, + ) { item, result -> + // Replace the origin text with the one with + // search decor applied to it. + item.copy(name = result.highlightedText) + } + val contentFlow = itemsFlow + .crashlyticsAttempt { e -> + val msg = "Failed to get the just-delete-me list!" + JustDeleteMeServiceListUiException( + msg = msg, + cause = e, + ) + } + .map { result -> + val contentOrException = result + .map { (items, revision) -> + JustDeleteMeServiceListState.Content( + revision = revision, + items = items, + ) + } + Loadable.Ok(contentOrException) + } + contentFlow + .map { content -> + val state = JustDeleteMeServiceListState( + filter = queryFlow, + content = content, + ) + Loadable.Ok(state) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/directory/JustDeleteMeServiceViewRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/directory/JustDeleteMeServiceViewRoute.kt new file mode 100644 index 00000000..f4e2bdf4 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/directory/JustDeleteMeServiceViewRoute.kt @@ -0,0 +1,58 @@ +package com.artemchep.keyguard.feature.justdeleteme.directory + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.AccountBox +import androidx.compose.material.icons.outlined.Delete +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.service.justdeleteme.JustDeleteMeServiceInfo +import com.artemchep.keyguard.feature.navigation.DialogRoute +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.state.TranslatorScope +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.icons.iconSmall + +data class JustDeleteMeServiceViewRoute( + val args: Args, +) : DialogRoute { + companion object { + fun justDeleteMeActionOrNull( + translator: TranslatorScope, + justDeleteMe: JustDeleteMeServiceInfo, + navigate: (NavigationIntent) -> Unit, + ) = justDeleteMeAction( + translator = translator, + justDeleteMe = justDeleteMe, + navigate = navigate, + ) + + fun justDeleteMeAction( + translator: TranslatorScope, + justDeleteMe: JustDeleteMeServiceInfo, + navigate: (NavigationIntent) -> Unit, + ) = FlatItemAction( + leading = iconSmall(Icons.Outlined.AccountBox, Icons.Outlined.Delete), + title = translator.translate(Res.strings.uri_action_how_to_delete_account_title), + onClick = { + val route = JustDeleteMeServiceViewRoute( + args = Args( + justDeleteMe = justDeleteMe, + ), + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + } + + data class Args( + val justDeleteMe: JustDeleteMeServiceInfo, + ) + + @Composable + override fun Content() { + JustDeleteMeScreen( + args = args, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/directory/JustDeleteMeServiceViewScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/directory/JustDeleteMeServiceViewScreen.kt new file mode 100644 index 00000000..6b9ca693 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/directory/JustDeleteMeServiceViewScreen.kt @@ -0,0 +1,145 @@ +package com.artemchep.keyguard.feature.justdeleteme.directory + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.AccountBox +import androidx.compose.material.icons.outlined.Delete +import androidx.compose.material.icons.outlined.Email +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.getOrNull +import com.artemchep.keyguard.feature.dialog.Dialog +import com.artemchep.keyguard.feature.justdeleteme.AhDifficulty +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.tfa.directory.FlatLaunchBrowserItem +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.IconBox +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.markdown.Md +import com.artemchep.keyguard.ui.poweredby.PoweredByJustDeleteMe +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun JustDeleteMeScreen( + args: JustDeleteMeServiceViewRoute.Args, +) { + val loadableState = produceJustDeleteMeServiceViewState( + args = args, + ) + Dialog( + icon = icon(Icons.Outlined.AccountBox, Icons.Outlined.Delete), + title = { + val title = args.justDeleteMe.name + Text( + text = title, + ) + Text( + text = stringResource(Res.strings.justdeleteme_title), + style = MaterialTheme.typography.titleSmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + ) + AhDifficulty( + modifier = Modifier + .padding(top = 4.dp), + model = args.justDeleteMe, + ) + }, + content = { + Column { + val notes = args.justDeleteMe.notes + if (notes != null) { + Md( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + markdown = notes, + ) + Spacer( + modifier = Modifier + .height(16.dp), + ) + } + + val navigationController by rememberUpdatedState(LocalNavigationController.current) + + val updatedEmail by rememberUpdatedState(args.justDeleteMe.email) + if (updatedEmail != null) { + FlatItem( + elevation = 8.dp, + leading = { + IconBox(Icons.Outlined.Email) + }, + title = { + Text( + text = stringResource(Res.strings.justdeleteme_send_email_title), + ) + }, + trailing = { + ChevronIcon() + }, + onClick = { + // Open the email, if it's available. + updatedEmail?.let { + val intent = NavigationIntent.NavigateToEmail( + it, + subject = args.justDeleteMe.emailSubject, + body = args.justDeleteMe.emailBody, + ) + navigationController.queue(intent) + } + }, + enabled = updatedEmail != null, + ) + } + + val websiteUrl = args.justDeleteMe.url + if (websiteUrl != null) { + FlatLaunchBrowserItem( + title = stringResource(Res.strings.uri_action_launch_website_title), + url = websiteUrl, + ) + } + + Spacer( + modifier = Modifier + .height(8.dp), + ) + + PoweredByJustDeleteMe( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding) + .fillMaxWidth(), + ) + } + }, + contentScrollable = true, + actions = { + val updatedOnClose by rememberUpdatedState(loadableState.getOrNull()?.onClose) + TextButton( + enabled = updatedOnClose != null, + onClick = { + updatedOnClose?.invoke() + }, + ) { + Text(stringResource(Res.strings.close)) + } + }, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/directory/JustDeleteMeServiceViewState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/directory/JustDeleteMeServiceViewState.kt new file mode 100644 index 00000000..e74bfa5c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/directory/JustDeleteMeServiceViewState.kt @@ -0,0 +1,30 @@ +package com.artemchep.keyguard.feature.justdeleteme.directory + +import androidx.compose.runtime.Immutable +import arrow.core.Either +import kotlinx.collections.immutable.ImmutableList + +@Immutable +data class JustDeleteMeServiceViewState( + val content: Either, + val onClose: (() -> Unit)? = null, +) { + @Immutable + data class Content( + val breaches: ImmutableList, + ) + + @Immutable + data class Breach( + val title: String, + val domain: String, + val description: String, + val icon: String?, + val count: Int?, + /** Time when this breach has occurred */ + val occurredAt: String?, + /** Time when this breach was acknowledged */ + val reportedAt: String?, + val dataClasses: List, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/directory/JustDeleteMeServiceViewStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/directory/JustDeleteMeServiceViewStateProducer.kt new file mode 100644 index 00000000..e31f264c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/justdeleteme/directory/JustDeleteMeServiceViewStateProducer.kt @@ -0,0 +1,48 @@ +package com.artemchep.keyguard.feature.justdeleteme.directory + +import androidx.compose.runtime.Composable +import arrow.core.right +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.usecase.CheckUsernameLeak +import com.artemchep.keyguard.common.usecase.DateFormatter +import com.artemchep.keyguard.feature.navigation.state.navigatePopSelf +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import kotlinx.collections.immutable.persistentListOf +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +@Composable +fun produceJustDeleteMeServiceViewState( + args: JustDeleteMeServiceViewRoute.Args, +) = with(localDI().direct) { + produceJustDeleteMeServiceViewState( + args = args, + checkUsernameLeak = instance(), + dateFormatter = instance(), + ) +} + +@Composable +fun produceJustDeleteMeServiceViewState( + args: JustDeleteMeServiceViewRoute.Args, + checkUsernameLeak: CheckUsernameLeak, + dateFormatter: DateFormatter, +): Loadable = produceScreenState( + key = "justdeleteme_service_view", + initial = Loadable.Loading, + args = arrayOf(), +) { + val content = + JustDeleteMeServiceViewState.Content( + breaches = persistentListOf(), + ).right() + val state = JustDeleteMeServiceViewState( + content = content, + onClose = { + navigatePopSelf() + }, + ) + flowOf(Loadable.Ok(state)) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/AppRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/AppRoute.kt new file mode 100644 index 00000000..a2281431 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/AppRoute.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.keyguard + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.Route + +object AppRoute : Route { + @Composable + override fun Content() { + AppScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/AppScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/AppScreen.kt new file mode 100644 index 00000000..e14dd667 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/AppScreen.kt @@ -0,0 +1,152 @@ +package com.artemchep.keyguard.feature.keyguard + +import androidx.compose.animation.Crossfade +import androidx.compose.animation.ExperimentalAnimationApi +import androidx.compose.animation.core.tween +import androidx.compose.animation.core.updateTransition +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.asPaddingValues +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.union +import androidx.compose.foundation.layout.widthIn +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.VaultState +import com.artemchep.keyguard.common.usecase.UnlockUseCase +import com.artemchep.keyguard.feature.keyguard.main.MainRoute +import com.artemchep.keyguard.feature.keyguard.setup.SetupRoute +import com.artemchep.keyguard.feature.keyguard.unlock.UnlockRoute +import com.artemchep.keyguard.feature.loading.LoadingScreen +import com.artemchep.keyguard.feature.navigation.NavigationNode +import com.artemchep.keyguard.platform.leIme +import com.artemchep.keyguard.platform.leNavigationBars +import com.artemchep.keyguard.platform.lifecycle.LocalLifecycleStateFlow +import com.artemchep.keyguard.platform.lifecycle.flowWithLifecycle +import com.artemchep.keyguard.ui.ToastMessageHost +import org.kodein.di.compose.rememberInstance +import org.kodein.di.compose.withDI + +@Composable +fun AppScreen() { + ManualAppScreen { vaultState -> + when (vaultState) { + is VaultState.Create -> ManualAppScreenOnCreate(vaultState) + is VaultState.Unlock -> ManualAppScreenOnUnlock(vaultState) + is VaultState.Loading -> ManualAppScreenOnLoading(vaultState) + is VaultState.Main -> ManualAppScreenOnMain(vaultState) + } + } +} + +// +// Internals +// + +@Composable +fun ManualAppScreenOnCreate( + state: VaultState.Create, +) { + val route = remember(state) { + SetupRoute( + createVaultWithMasterPassword = state.createWithMasterPassword, + createVaultWithMasterPasswordAndBiometric = state.createWithMasterPasswordAndBiometric, + ) + } + NavigationNode( + id = "setup", + route = route, + ) +} + +@Composable +fun ManualAppScreenOnUnlock( + state: VaultState.Unlock, +) { + val route = remember(state) { + UnlockRoute( + unlockVaultByMasterPassword = state.unlockWithMasterPassword, + unlockVaultByBiometric = state.unlockWithBiometric, + lockReason = state.lockReason, + ) + } + NavigationNode( + id = "unlock", + route = route, + ) +} + +@Composable +fun ManualAppScreenOnLoading( + state: VaultState.Loading, +) { + LoadingScreen() +} + +@Composable +fun ManualAppScreenOnMain( + state: VaultState.Main, +) { + // Provide the session DI to all of the + // sub screens of this composable. + withDI(state.di) { + NavigationNode( + id = "main", + route = MainRoute, + ) + } +} + +@OptIn(ExperimentalAnimationApi::class) +@Composable +fun ManualAppScreen( + content: @Composable (VaultState) -> Unit, +) { + Box( + modifier = Modifier + .fillMaxSize(), + ) { + var appState by remember { + mutableStateOf(VaultState.Loading) + } + + val appViewModel by rememberInstance() + val lifecycleFlow = LocalLifecycleStateFlow + LaunchedEffect(appViewModel, lifecycleFlow) { + appViewModel() + .flowWithLifecycle(lifecycleFlow) + .collect { state -> + if (state != appState) { + appState = state + } + } + } + + val transition = updateTransition(appState) + transition.Crossfade( + modifier = Modifier, + animationSpec = tween(), + contentKey = { it::class }, + ) { state -> + content(state) + } + + val insets = WindowInsets.leNavigationBars + .union(WindowInsets.leIme) + .asPaddingValues() + ToastMessageHost( + modifier = Modifier + .align(Alignment.BottomCenter) + .padding(insets) + .widthIn(max = 300.dp), + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/main/MainRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/main/MainRoute.kt new file mode 100644 index 00000000..87c03669 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/main/MainRoute.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.keyguard.main + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.Route + +object MainRoute : Route { + @Composable + override fun Content() { + MainScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/main/MainScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/main/MainScreen.kt new file mode 100644 index 00000000..c7277b0e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/main/MainScreen.kt @@ -0,0 +1,26 @@ +package com.artemchep.keyguard.feature.keyguard.main + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.AppMode +import com.artemchep.keyguard.LocalAppMode +import com.artemchep.keyguard.feature.home.HomeScreen + +@OptIn(kotlin.time.ExperimentalTime::class) +@Composable +fun MainScreen() { + when (LocalAppMode.current) { + is AppMode.Main -> { + HomeScreen() + } + + is AppMode.Save, + is AppMode.Pick, + is AppMode.PickPasskey, + is AppMode.SavePasskey, + -> { + HomeScreen( + navBarVisible = false, + ) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/setup/SetupRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/setup/SetupRoute.kt new file mode 100644 index 00000000..ef4b9dcc --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/setup/SetupRoute.kt @@ -0,0 +1,22 @@ +package com.artemchep.keyguard.feature.keyguard.setup + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.model.VaultState +import com.artemchep.keyguard.feature.navigation.Route + +data class SetupRoute( + /** + * Creates a vault with the key derived from a + * given password. + */ + val createVaultWithMasterPassword: VaultState.Create.WithPassword, + val createVaultWithMasterPasswordAndBiometric: VaultState.Create.WithBiometric?, +) : Route { + @Composable + override fun Content() { + SetupScreen( + createVaultWithMasterPassword = createVaultWithMasterPassword, + createVaultWithMasterPasswordAndBiometric = createVaultWithMasterPasswordAndBiometric, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/setup/SetupScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/setup/SetupScreen.kt new file mode 100644 index 00000000..8e4f34be --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/setup/SetupScreen.kt @@ -0,0 +1,327 @@ +package com.artemchep.keyguard.feature.keyguard.setup + +import androidx.compose.animation.Crossfade +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.text.KeyboardActionScope +import androidx.compose.foundation.text.KeyboardActions +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Add +import androidx.compose.material3.Button +import androidx.compose.material3.Checkbox +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.ExperimentalComposeUiApi +import androidx.compose.ui.Modifier +import androidx.compose.ui.autofill.AutofillType +import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.focus.focusRequester +import androidx.compose.ui.platform.testTag +import androidx.compose.ui.text.SpanStyle +import androidx.compose.ui.text.buildAnnotatedString +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.input.ImeAction +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.text.withStyle +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.VaultState +import com.artemchep.keyguard.common.model.fold +import com.artemchep.keyguard.feature.auth.common.autofill +import com.artemchep.keyguard.feature.biometric.BiometricPromptEffect +import com.artemchep.keyguard.feature.keyguard.unlock.unlockScreenActionPadding +import com.artemchep.keyguard.feature.keyguard.unlock.unlockScreenTitlePadding +import com.artemchep.keyguard.platform.isStandalone +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.AutofillButton +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.FlatItemLayout +import com.artemchep.keyguard.ui.OtherScaffold +import com.artemchep.keyguard.ui.PasswordFlatTextField +import com.artemchep.keyguard.ui.skeleton.SkeletonButton +import com.artemchep.keyguard.ui.skeleton.SkeletonCheckbox +import com.artemchep.keyguard.ui.skeleton.SkeletonText +import com.artemchep.keyguard.ui.skeleton.SkeletonTextField +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun SetupScreen( + /** + * Creates a vault with the key derived from a + * given password. + */ + createVaultWithMasterPassword: VaultState.Create.WithPassword, + createVaultWithMasterPasswordAndBiometric: VaultState.Create.WithBiometric?, +) { + val loadableState = setupScreenState( + createVaultWithMasterPassword = createVaultWithMasterPassword, + createVaultWithMasterPasswordAndBiometric = createVaultWithMasterPasswordAndBiometric, + ) + loadableState.fold( + ifLoading = { + SetupScreenSkeleton() + }, + ifOk = { state -> + SetupScreen(state) + }, + ) +} + +@Composable +private fun SetupScreenSkeleton() { + OtherScaffold { + SetupScreenCreateVaultTitle() + Spacer(Modifier.height(unlockScreenTitlePadding)) + SkeletonTextField( + modifier = Modifier + .fillMaxWidth(), + ) + Spacer(Modifier.height(unlockScreenActionPadding)) + FlatItemLayout( + paddingValues = PaddingValues(0.dp), + leading = { + SkeletonCheckbox( + clickable = false, + ) + }, + content = { + SkeletonText( + modifier = Modifier + .fillMaxWidth(0.4f), + style = MaterialTheme.typography.bodyMedium, + ) + }, + enabled = true, + ) + Spacer(Modifier.height(unlockScreenActionPadding)) + FlatItemLayout( + paddingValues = PaddingValues(0.dp), + leading = { + SkeletonCheckbox( + clickable = false, + ) + }, + content = { + SkeletonText( + modifier = Modifier + .fillMaxWidth(0.3f), + style = MaterialTheme.typography.bodyMedium, + ) + }, + enabled = true, + ) + Spacer(Modifier.height(unlockScreenActionPadding)) + SkeletonButton( + modifier = Modifier + .fillMaxWidth(), + ) + } +} + +@Composable +fun SetupScreen( + setupState: SetupState, +) { + BiometricPromptEffect(setupState.sideEffects.showBiometricPromptFlow) + + OtherScaffold { + SetupContent( + setupState = setupState, + ) + } +} + +@OptIn(ExperimentalMaterial3Api::class, ExperimentalComposeUiApi::class) +@Composable +fun ColumnScope.SetupContent( + setupState: SetupState, +) { + val focusRequester = remember { FocusRequester() } + // Auto focus the text field + // on launch. + LaunchedEffect(focusRequester) { + focusRequester.requestFocus() + } + + SetupScreenCreateVaultTitle() + Spacer(Modifier.height(unlockScreenTitlePadding)) + val keyboardOnGo: (KeyboardActionScope.() -> Unit)? = + if (setupState.onCreateVault != null) { + // lambda + { + setupState.onCreateVault.invoke() + } + } else { + null + } + PasswordFlatTextField( + modifier = Modifier + .focusRequester(focusRequester), + fieldModifier = Modifier + .autofill( + value = setupState.password.state.value, + autofillTypes = listOf( + AutofillType.NewPassword, + ), + onFill = setupState.password.onChange, + ), + testTag = "field:password", + label = stringResource(Res.strings.setup_field_app_password_label), + value = setupState.password, + keyboardOptions = KeyboardOptions( + imeAction = when { + keyboardOnGo != null -> ImeAction.Go + else -> ImeAction.Default + }, + ), + keyboardActions = KeyboardActions( + onGo = keyboardOnGo, + ), + clearButton = false, // Minimize used space + leading = null, // Do not display default icon + trailing = { + AutofillButton( + key = "password", + password = true, + onValueChange = setupState.password.onChange, + ) + }, + ) + if (setupState.biometric != null) { + Spacer(Modifier.height(unlockScreenActionPadding)) + + val updatedBiometric by rememberUpdatedState(setupState.biometric) + FlatItemLayout( + paddingValues = PaddingValues(0.dp), + leading = { + Checkbox( + checked = setupState.biometric.checked, + onCheckedChange = null, + ) + }, + content = { + Text( + text = stringResource(Res.strings.setup_checkbox_biometric_auth), + style = MaterialTheme.typography.bodyMedium, + ) + }, + onClick = { + val newValue = !updatedBiometric.checked + updatedBiometric.onChange?.invoke(newValue) + }, + enabled = updatedBiometric.onChange != null, + ) + } + Spacer(Modifier.height(unlockScreenActionPadding)) + val updatedCrashlytics by rememberUpdatedState(setupState.crashlytics) + FlatItemLayout( + paddingValues = PaddingValues(0.dp), + leading = { + Checkbox( + checked = setupState.crashlytics.checked, + onCheckedChange = null, + ) + }, + content = { + Text( + text = stringResource(Res.strings.setup_button_send_crash_reports), + style = MaterialTheme.typography.bodyMedium, + ) + }, + onClick = { + val newValue = !updatedCrashlytics.checked + updatedCrashlytics.onChange?.invoke(newValue) + }, + enabled = updatedCrashlytics.onChange != null, + ) + Spacer(Modifier.height(unlockScreenActionPadding)) + val onCreateButtonClick by rememberUpdatedState(setupState.onCreateVault) + Button( + modifier = Modifier + .testTag("btn:go") + .fillMaxWidth(), + enabled = setupState.onCreateVault != null, + onClick = { + onCreateButtonClick?.invoke() + }, + ) { + Crossfade( + modifier = Modifier + .size(24.dp), + targetState = setupState.isLoading, + ) { isLoading -> + if (isLoading) { + CircularProgressIndicator( + color = LocalContentColor.current, + ) + } else { + Icon( + imageVector = Icons.Outlined.Add, + contentDescription = null, + ) + } + } + Spacer( + modifier = Modifier + .width(Dimens.buttonIconPadding), + ) + Text( + text = stringResource(Res.strings.setup_button_create_vault), + ) + } +} + +@Composable +private fun ColumnScope.SetupScreenCreateVaultTitle() { + Text( + textAlign = TextAlign.Center, + text = remember { + keyguardSpan() + }, + style = MaterialTheme.typography.titleLarge, + ) + Spacer(Modifier.height(unlockScreenTitlePadding)) + Text( + modifier = Modifier + .fillMaxWidth(), + text = stringResource(Res.strings.setup_header_text), + style = MaterialTheme.typography.bodyLarge, + ) + if (isStandalone) { + Spacer(Modifier.height(8.dp)) + Text( + text = "By continuing you confirm that you have purchased the Keyguard or have had an active license.", + style = MaterialTheme.typography.bodyMedium, + color = LocalContentColor.current + .combineAlpha(DisabledEmphasisAlpha), + ) + } +} + +fun keyguardSpan() = + buildAnnotatedString { + withStyle( + style = SpanStyle( + fontWeight = FontWeight.Bold, + ), + ) { + append("Key") + } + append("guard") + } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/setup/SetupState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/setup/SetupState.kt new file mode 100644 index 00000000..9f8ad7aa --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/setup/SetupState.kt @@ -0,0 +1,39 @@ +package com.artemchep.keyguard.feature.keyguard.setup + +import androidx.compose.runtime.Immutable +import arrow.optics.optics +import com.artemchep.keyguard.common.model.BiometricAuthPrompt +import com.artemchep.keyguard.feature.auth.common.SwitchFieldModel +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.emptyFlow + +@Immutable +@optics +data class SetupState( + val sideEffects: SideEffects = SideEffects(), + val password: TextFieldModel2, + val crashlytics: SwitchFieldModel, + val biometric: Biometric? = null, + val isLoading: Boolean = false, + val onCreateVault: (() -> Unit)? = null, +) { + companion object; + + @Immutable + @optics + data class Biometric( + val checked: Boolean = false, + val onChange: ((Boolean) -> Unit)? = null, + ) { + companion object + } + + @Immutable + @optics + data class SideEffects( + val showBiometricPromptFlow: Flow = emptyFlow(), + ) { + companion object + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/setup/SetupStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/setup/SetupStateProducer.kt new file mode 100644 index 00000000..f03ab4ec --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/setup/SetupStateProducer.kt @@ -0,0 +1,213 @@ +package com.artemchep.keyguard.feature.keyguard.setup + +import androidx.compose.runtime.Composable +import arrow.core.Either +import arrow.core.identity +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.ioRaise +import com.artemchep.keyguard.common.model.BiometricAuthPrompt +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.VaultState +import com.artemchep.keyguard.common.util.flow.EventFlow +import com.artemchep.keyguard.feature.auth.common.SwitchFieldModel +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import com.artemchep.keyguard.feature.auth.common.Validated +import com.artemchep.keyguard.feature.auth.common.util.validatedPassword +import com.artemchep.keyguard.feature.loading.LoadingTask +import com.artemchep.keyguard.feature.localization.TextHolder +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.platform.LeCipher +import com.artemchep.keyguard.platform.crashlyticsIsEnabled +import com.artemchep.keyguard.platform.crashlyticsSetEnabled +import com.artemchep.keyguard.res.Res +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.map + +private const val DEFAULT_PASSWORD = "" +private const val DEFAULT_BIOMETRIC = false +private const val DEFAULT_CRASHLYTICS = false + +@Composable +fun setupScreenState( + createVaultWithMasterPassword: VaultState.Create.WithPassword, + createVaultWithMasterPasswordAndBiometric: VaultState.Create.WithBiometric?, +): Loadable = produceScreenState>( + key = "setup", + initial = Loadable.Loading, + args = arrayOf( + createVaultWithMasterPassword, + createVaultWithMasterPasswordAndBiometric, + ), +) { + val executor = screenExecutor() + + val biometricPromptSink = EventFlow() + + val biometricSink = mutablePersistedFlow("biometric") { DEFAULT_BIOMETRIC } + val crashlyticsSink = mutablePersistedFlow("crashlytics") { + crashlyticsIsEnabled() + ?: DEFAULT_CRASHLYTICS + } + + val passwordSink = mutablePersistedFlow("password") { DEFAULT_PASSWORD } + val passwordState = mutableComposeState(passwordSink) + + val createVaultByMasterPasswordFn = createVaultWithMasterPassword + .let { + CreateVaultWithPassword(executor, it) + } + val createVaultWithMasterPasswordAndBiometricFn = createVaultWithMasterPasswordAndBiometric + ?.let { + CreateVaultWithBiometric(executor, it) + } + + val biometricStateFlow = biometricStateFlow( + biometricSink = biometricSink, + // True if the device is capable of performing a + // biometric authentication. + hasBiometric = createVaultWithMasterPasswordAndBiometric != null, + ) + combine( + passwordSink.validatedPassword(this), + crashlyticsSink, + biometricStateFlow, + executor.isExecutingFlow, + ) { validatedPassword, crashlytics, biometric, taskIsExecuting -> + val validationError = (validatedPassword as? Validated.Failure)?.error + val canCreateVault = validationError == null && !taskIsExecuting + val state = SetupState( + biometric = biometric, + password = TextFieldModel2.of( + state = passwordState, + validated = validatedPassword, + ), + crashlytics = SwitchFieldModel( + checked = crashlytics, + onChange = crashlyticsSink::value::set, + ), + sideEffects = SetupState.SideEffects( + showBiometricPromptFlow = biometricPromptSink, + ), + isLoading = taskIsExecuting, + onCreateVault = if (canCreateVault) { + crashlyticsSetEnabled(crashlytics) + // If the biometric is checked & possible, then ask user to + // confirm his identity. + if (createVaultWithMasterPasswordAndBiometricFn != null && biometric?.checked == true) { + val prompt by lazy { + createPromptOrNull( + executor = executor, + createVaultWithMasterPasswordAndBiometricFn = createVaultWithMasterPasswordAndBiometricFn, + password = validatedPassword.model, + ) + } + + // An action should trigger the biometric prompt upon + // execution. + fun() { + prompt?.let(biometricPromptSink::emit) + } + } else { + createVaultByMasterPasswordFn.partially1(validatedPassword.model) + } + } else { + null + }, + ) + Loadable.Ok(state) + } +} + +private fun createPromptOrNull( + executor: LoadingTask, + createVaultWithMasterPasswordAndBiometricFn: CreateVaultWithBiometric, + password: String, +): BiometricAuthPrompt? = run { + val createVault = createVaultWithMasterPasswordAndBiometricFn + .partially1(password) + // Creating a cipher may fail with: + // Fatal Exception: + // java.security.ProviderException + // Keystore key generation failed + val cipher = createVaultWithMasterPasswordAndBiometricFn.getCipher() + .fold( + ifLeft = { e -> + val fakeIo = ioRaise(e) + executor.execute(fakeIo) + return@run null + }, + ifRight = ::identity, + ) + BiometricAuthPrompt( + title = TextHolder.Res(Res.strings.setup_biometric_auth_confirm_title), + cipher = cipher, + onComplete = { result -> + result.fold( + ifLeft = { exception -> + val io = ioRaise(exception) + executor.execute(io) + }, + ifRight = { + createVault() + }, + ) + }, + ) +} + +private open class CreateVaultWithPassword( + private val executor: LoadingTask, + private val getCreateIo: (String) -> IO, +) : (String) -> Unit { + // Create from vault state options + constructor( + executor: LoadingTask, + options: VaultState.Create.WithPassword, + ) : this( + executor = executor, + getCreateIo = options.getCreateIo, + ) + + override fun invoke(password: String) { + val io = getCreateIo(password) + executor.execute(io, password) + } +} + +private class CreateVaultWithBiometric( + executor: LoadingTask, + /** + * A getter for the cipher to pass to the biometric + * authentication. + */ + val getCipher: () -> Either, + getCreateIo: (String) -> IO, +) : CreateVaultWithPassword(executor, getCreateIo) { + // Create from vault state options + constructor( + executor: LoadingTask, + options: VaultState.Create.WithBiometric, + ) : this( + executor = executor, + getCipher = options.getCipher, + getCreateIo = options.getCreateIo, + ) +} + +private fun biometricStateFlow( + biometricSink: MutableStateFlow, + hasBiometric: Boolean, +) = if (hasBiometric) { + val initialState = SetupState.Biometric( + onChange = biometricSink::value::set, + ) + biometricSink.map { isChecked -> + initialState.copy(checked = isChecked) + } +} else { + val disabledState = null + flowOf(disabledState) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/unlock/UnlockRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/unlock/UnlockRoute.kt new file mode 100644 index 00000000..a0eb96e7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/unlock/UnlockRoute.kt @@ -0,0 +1,24 @@ +package com.artemchep.keyguard.feature.keyguard.unlock + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.model.VaultState +import com.artemchep.keyguard.feature.navigation.Route + +class UnlockRoute( + /** + * Unlocks a vault with the key derived from a + * given password. + */ + val unlockVaultByMasterPassword: VaultState.Unlock.WithPassword, + val unlockVaultByBiometric: VaultState.Unlock.WithBiometric?, + val lockReason: String?, +) : Route { + @Composable + override fun Content() { + UnlockScreen( + unlockVaultByMasterPassword = unlockVaultByMasterPassword, + unlockVaultByBiometric = unlockVaultByBiometric, + lockReason = lockReason, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/unlock/UnlockScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/unlock/UnlockScreen.kt new file mode 100644 index 00000000..d64aa446 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/unlock/UnlockScreen.kt @@ -0,0 +1,267 @@ +package com.artemchep.keyguard.feature.keyguard.unlock + +import androidx.compose.animation.Crossfade +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.text.KeyboardActionScope +import androidx.compose.foundation.text.KeyboardActions +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Fingerprint +import androidx.compose.material.icons.outlined.LockOpen +import androidx.compose.material3.Button +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.ElevatedButton +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.ExperimentalComposeUiApi +import androidx.compose.ui.Modifier +import androidx.compose.ui.autofill.AutofillType +import androidx.compose.ui.platform.testTag +import androidx.compose.ui.text.input.ImeAction +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.VaultState +import com.artemchep.keyguard.common.model.fold +import com.artemchep.keyguard.feature.auth.common.autofill +import com.artemchep.keyguard.feature.biometric.BiometricPromptEffect +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.OptionsButton +import com.artemchep.keyguard.ui.OtherScaffold +import com.artemchep.keyguard.ui.PasswordFlatTextField +import com.artemchep.keyguard.ui.focus.FocusRequester2 +import com.artemchep.keyguard.ui.focus.focusRequester2 +import com.artemchep.keyguard.ui.skeleton.SkeletonButton +import com.artemchep.keyguard.ui.skeleton.SkeletonTextField +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.delay +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +val unlockScreenTitlePadding = 48.dp +val unlockScreenActionPadding = 8.dp + +@Composable +fun UnlockScreen( + /** + * Unlocks a vault with the key derived from a + * given password. + */ + unlockVaultByMasterPassword: VaultState.Unlock.WithPassword, + unlockVaultByBiometric: VaultState.Unlock.WithBiometric?, + lockReason: String?, +) { + val loadableState = unlockScreenState( + clearData = localDI().direct.instance(), + unlockVaultByMasterPassword = unlockVaultByMasterPassword, + unlockVaultByBiometric = unlockVaultByBiometric, + lockReason = lockReason, + ) + loadableState.fold( + ifLoading = { + UnlockScreenSkeleton() + }, + ifOk = { state -> + UnlockScreen(state) + }, + ) +} + +@Composable +private fun UnlockScreenSkeleton() { + OtherScaffold { + UnlockScreenContainer( + top = { + UnlockScreenTheVaultIsLockedTitle() + }, + center = { + SkeletonTextField( + modifier = Modifier + .fillMaxWidth(), + ) + }, + bottom = { + SkeletonButton( + modifier = Modifier + .fillMaxWidth(), + ) + }, + ) + } +} + +@OptIn(ExperimentalComposeUiApi::class) +@Composable +private fun UnlockScreen( + unlockState: UnlockState, +) { + val focusRequester = remember { + FocusRequester2() + } + + val updatedHasBiometric by rememberUpdatedState(unlockState.biometric != null) + LaunchedEffect(focusRequester) { + delay(200L) + // If we focus a password field and request the biometrics, + // then the keyboard pops-up after we have successfully used + // the biometrics to unlock. Looks super junky. + if (!updatedHasBiometric) { + focusRequester.requestFocus() + } + } + + BiometricPromptEffect(unlockState.sideEffects.showBiometricPromptFlow) + OtherScaffold( + actions = { + OptionsButton(actions = unlockState.actions) + }, + ) { + UnlockScreenContainer( + top = { + UnlockScreenTheVaultIsLockedTitle() + ExpandedIfNotEmpty( + valueOrNull = unlockState.lockReason, + ) { lockReason -> + Text( + modifier = Modifier + .padding(top = 16.dp), + textAlign = TextAlign.Center, + text = lockReason, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + style = MaterialTheme.typography.bodyMedium, + ) + } + }, + center = { + val keyboardOnGo: (KeyboardActionScope.() -> Unit)? = + if (unlockState.unlockVaultByMasterPassword != null) { + // lambda + { + unlockState.unlockVaultByMasterPassword.invoke() + } + } else { + null + } + PasswordFlatTextField( + modifier = Modifier, + fieldModifier = Modifier + .focusRequester2(focusRequester) + .autofill( + value = unlockState.password.state.value, + autofillTypes = listOf( + AutofillType.Password, + ), + onFill = unlockState.password.onChange, + ), + testTag = "field:password", + value = unlockState.password, + keyboardOptions = KeyboardOptions( + imeAction = when { + keyboardOnGo != null -> ImeAction.Go + else -> ImeAction.Default + }, + ), + keyboardActions = KeyboardActions( + onGo = keyboardOnGo, + ), + ) + }, + bottom = { + val onUnlockButtonClick by rememberUpdatedState(unlockState.unlockVaultByMasterPassword) + Button( + modifier = Modifier + .testTag("btn:go") + .fillMaxWidth(), + enabled = unlockState.unlockVaultByMasterPassword != null, + onClick = { + onUnlockButtonClick?.invoke() + }, + ) { + Crossfade( + modifier = Modifier + .size(24.dp), + targetState = unlockState.isLoading, + ) { isLoading -> + if (isLoading) { + CircularProgressIndicator( + color = LocalContentColor.current, + ) + } else { + Icon( + imageVector = Icons.Outlined.LockOpen, + contentDescription = null, + ) + } + } + Spacer( + modifier = Modifier + .width(Dimens.buttonIconPadding), + ) + Text( + text = stringResource(Res.strings.unlock_button_unlock), + ) + } + val onBiometricButtonClick by rememberUpdatedState(unlockState.biometric?.onClick) + ExpandedIfNotEmpty( + valueOrNull = unlockState.biometric, + ) { b -> + ElevatedButton( + modifier = Modifier + .padding(top = 32.dp), + enabled = b.onClick != null, + onClick = { + onBiometricButtonClick?.invoke() + }, + contentPadding = PaddingValues(16.dp), + ) { + Icon( + imageVector = Icons.Outlined.Fingerprint, + contentDescription = null, + ) + } + } + }, + ) + } +} + +@Composable +private fun UnlockScreenTheVaultIsLockedTitle() { + Text( + textAlign = TextAlign.Center, + text = stringResource(Res.strings.unlock_header_text), + style = MaterialTheme.typography.bodyLarge, + ) +} + +@Composable +inline fun ColumnScope.UnlockScreenContainer( + top: @Composable () -> Unit, + center: @Composable () -> Unit, + bottom: @Composable () -> Unit, +) { + top() + Spacer(Modifier.height(unlockScreenTitlePadding)) + center() + Spacer(Modifier.height(unlockScreenActionPadding)) + bottom() +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/unlock/UnlockState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/unlock/UnlockState.kt new file mode 100644 index 00000000..a36f612a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/unlock/UnlockState.kt @@ -0,0 +1,40 @@ +package com.artemchep.keyguard.feature.keyguard.unlock + +import androidx.compose.runtime.Immutable +import arrow.optics.optics +import com.artemchep.keyguard.common.model.PureBiometricAuthPrompt +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import com.artemchep.keyguard.ui.ContextItem +import kotlinx.collections.immutable.ImmutableList +import kotlinx.collections.immutable.persistentListOf +import kotlinx.coroutines.flow.Flow + +@Immutable +@optics +data class UnlockState( + val sideEffects: SideEffects, + val password: TextFieldModel2, + val biometric: Biometric? = null, + val lockReason: String? = null, + val isLoading: Boolean = false, + val actions: ImmutableList = persistentListOf(), + val unlockVaultByMasterPassword: (() -> Unit)? = null, +) { + companion object + + @Immutable + @optics + data class Biometric( + val onClick: (() -> Unit)? = null, + ) { + companion object + } + + @Immutable + @optics + data class SideEffects( + val showBiometricPromptFlow: Flow, + ) { + companion object + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducer.kt new file mode 100644 index 00000000..1734ba42 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/keyguard/unlock/UnlockStateProducer.kt @@ -0,0 +1,267 @@ +package com.artemchep.keyguard.feature.keyguard.unlock + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Delete +import androidx.compose.runtime.Composable +import arrow.core.Either +import arrow.core.andThen +import arrow.core.identity +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.effectTap +import com.artemchep.keyguard.common.io.ioRaise +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.model.BiometricAuthException +import com.artemchep.keyguard.common.model.BiometricAuthPrompt +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.VaultState +import com.artemchep.keyguard.common.usecase.ClearData +import com.artemchep.keyguard.common.util.flow.EventFlow +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import com.artemchep.keyguard.feature.auth.common.Validated +import com.artemchep.keyguard.feature.auth.common.util.validatedTitle +import com.artemchep.keyguard.feature.loading.LoadingTask +import com.artemchep.keyguard.feature.localization.TextHolder +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.platform.LeCipher +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemAction +import kotlinx.collections.immutable.persistentListOf +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.onStart +import kotlinx.coroutines.flow.shareIn +import kotlinx.coroutines.withContext + +private val DEFAULT_PASSWORD = "" + +@Composable +fun unlockScreenState( + clearData: ClearData, + unlockVaultByMasterPassword: VaultState.Unlock.WithPassword, + unlockVaultByBiometric: VaultState.Unlock.WithBiometric?, + lockReason: String? = null, +): Loadable = produceScreenState>( + key = "unlock", + initial = Loadable.Loading, + args = arrayOf( + unlockVaultByMasterPassword, + unlockVaultByBiometric, + ), +) { + val executor = screenExecutor() + + val unlockVaultByMasterPasswordFn = UnlockVaultWithPassword( + executor = executor, + options = unlockVaultByMasterPassword, + ) + val unlockVaultWithBiometricFn = unlockVaultByBiometric + ?.let { + UnlockVaultWithBiometric( + executor = executor, + options = it, + ) + } + + val biometricPromptSink = EventFlow() + val biometricPromptFlow = biometricPromptSink + .onStart { + if (unlockVaultWithBiometricFn != null) { + val prompt = withContext(Dispatchers.Main) { + createPromptOrNull( + executor = executor, + fn = unlockVaultWithBiometricFn, + ) + } + if (prompt != null) { + emit(prompt) + } + } + } + .shareIn(screenScope, SharingStarted.WhileSubscribed(5000L)) + + val passwordSink = mutablePersistedFlow("password") { DEFAULT_PASSWORD } + val passwordState = mutableComposeState(passwordSink) + + val actions = persistentListOf( + FlatItemAction( + icon = Icons.Outlined.Delete, + title = translate(Res.strings.pref_item_erase_data_title), + text = translate(Res.strings.pref_item_erase_data_text), + onClick = { + clearData() + .effectTap { + val exitIntent = NavigationIntent.Exit + navigate(exitIntent) + } + .attempt() + .launchIn(GlobalScope) + }, + ), + ) + + val biometricPrecomputed = if (unlockVaultWithBiometricFn != null) { + val requestBiometricAuthPrompt = biometricPromptSink::emit + .andThen { true } + BiometricStatePrecomputed( + disabled = createBiometricState( + executor = executor, + fn = unlockVaultWithBiometricFn, + clickable = false, + requestBiometricAuthPrompt = requestBiometricAuthPrompt, + ), + enabled = createBiometricState( + executor = executor, + fn = unlockVaultWithBiometricFn, + clickable = true, + requestBiometricAuthPrompt = requestBiometricAuthPrompt, + ), + ) + } else { + null + } + combine( + passwordSink + .validatedTitle(this), + executor.isExecutingFlow, + ) { validatedPassword, taskExecuting -> + val error = (validatedPassword as? Validated.Failure)?.error + val canCreateVault = error == null && !taskExecuting + val state = UnlockState( + lockReason = lockReason, + password = TextFieldModel2.of( + state = passwordState, + validated = validatedPassword, + ), + biometric = if (taskExecuting) { + biometricPrecomputed?.disabled + } else { + biometricPrecomputed?.enabled + }, + sideEffects = UnlockState.SideEffects( + showBiometricPromptFlow = biometricPromptFlow, + ), + isLoading = taskExecuting, + unlockVaultByMasterPassword = if (canCreateVault) { + unlockVaultByMasterPasswordFn.partially1(validatedPassword.model) + } else { + null + }, + actions = actions, + ) + Loadable.Ok(state) + } +} + +private class BiometricStatePrecomputed( + val disabled: UnlockState.Biometric, + val enabled: UnlockState.Biometric, +) + +private fun createBiometricState( + executor: LoadingTask, + fn: UnlockVaultWithBiometric, + clickable: Boolean, + requestBiometricAuthPrompt: (BiometricAuthPrompt) -> Boolean, +) = UnlockState.Biometric( + onClick = if (!clickable) { + null + } else { + val prompt by lazy { + createPromptOrNull(executor, fn) + } + + // An action should trigger the biometric prompt upon + // execution. + fun() { + val p = prompt ?: return + requestBiometricAuthPrompt(p) + } + }, +) + +private fun createPromptOrNull( + executor: LoadingTask, + fn: UnlockVaultWithBiometric, +): BiometricAuthPrompt? = run { + val cipher = fn.getCipher() + .fold( + ifLeft = { e -> + val fakeIo = ioRaise(e) + executor.execute(fakeIo) + return@run null + }, + ifRight = ::identity, + ) + BiometricAuthPrompt( + title = TextHolder.Res(Res.strings.unlock_biometric_auth_confirm_title), + text = TextHolder.Res(Res.strings.unlock_biometric_auth_confirm_text), + cipher = cipher, + onComplete = { result -> + result.fold( + ifLeft = { exception -> + when (exception.code) { + BiometricAuthException.ERROR_CANCELED, + BiometricAuthException.ERROR_USER_CANCELED, + BiometricAuthException.ERROR_NEGATIVE_BUTTON, + -> return@fold + } + + val io = ioRaise(exception) + executor.execute(io) + }, + ifRight = { + fn.invoke() + }, + ) + }, + ) +} + +private class UnlockVaultWithPassword( + private val executor: LoadingTask, + private val getCreateIo: (String) -> IO, +) : (String) -> Unit { + // Create from vault state options + constructor( + executor: LoadingTask, + options: VaultState.Unlock.WithPassword, + ) : this( + executor = executor, + getCreateIo = options.getCreateIo, + ) + + override fun invoke(password: String) { + val io = getCreateIo(password) + executor.execute(io, password) + } +} + +private class UnlockVaultWithBiometric( + private val executor: LoadingTask, + /** + * A getter for the cipher to pass to the biometric + * authentication. + */ + val getCipher: () -> Either, + private val getCreateIo: () -> IO, +) : () -> Unit { + // Create from vault state options + constructor( + executor: LoadingTask, + options: VaultState.Unlock.WithBiometric, + ) : this( + executor = executor, + getCipher = options.getCipher, + getCreateIo = options.getCreateIo, + ) + + override fun invoke() { + val io = getCreateIo() + executor.execute(io) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/largetype/LargeTypeRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/largetype/LargeTypeRoute.kt new file mode 100644 index 00000000..e1d63e5a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/largetype/LargeTypeRoute.kt @@ -0,0 +1,102 @@ +package com.artemchep.keyguard.feature.largetype + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Lock +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.DialogRoute +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.state.TranslatorScope +import com.artemchep.keyguard.platform.CurrentPlatform +import com.artemchep.keyguard.platform.Platform +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.icons.KeyguardLargeType +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.icons.iconSmall + +data class LargeTypeRoute( + val args: Args, +) : DialogRoute { + companion object { + fun showInLargeTypeActionOrNull( + translator: TranslatorScope, + text: String, + colorize: Boolean = false, + navigate: (NavigationIntent) -> Unit, + ) = if (text.length > 128) { + null + } else { + showInLargeTypeAction( + translator = translator, + text = text, + colorize = colorize, + navigate = navigate, + ) + } + + fun showInLargeTypeAction( + translator: TranslatorScope, + text: String, + colorize: Boolean = false, + navigate: (NavigationIntent) -> Unit, + ) = FlatItemAction( + leading = icon(Icons.Outlined.KeyguardLargeType), + title = translator.translate(Res.strings.largetype_action_show_in_large_type_title), + onClick = { + val route = LargeTypeRoute( + args = Args( + text = text, + colorize = colorize, + ), + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + + fun showInLargeTypeActionAndLockOrNull( + translator: TranslatorScope, + text: String, + colorize: Boolean = false, + navigate: (NavigationIntent) -> Unit, + ) = if (text.length > 128 || CurrentPlatform !is Platform.Mobile) { + null + } else { + showInLargeTypeAndLockAction( + translator = translator, + text = text, + colorize = colorize, + navigate = navigate, + ) + } + + fun showInLargeTypeAndLockAction( + translator: TranslatorScope, + text: String, + colorize: Boolean = false, + navigate: (NavigationIntent) -> Unit, + ) = FlatItemAction( + leading = iconSmall(Icons.Outlined.KeyguardLargeType, Icons.Filled.Lock), + title = translator.translate(Res.strings.largetype_action_show_in_large_type_and_lock_title), + onClick = { + val intent = NavigationIntent.NavigateToLargeType( + text = text, + colorize = colorize, + ) + navigate(intent) + }, + ) + } + + data class Args( + val text: String, + val colorize: Boolean, + ) + + @Composable + override fun Content() { + LargeTypeScreen( + args = args, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/largetype/LargeTypeScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/largetype/LargeTypeScreen.kt new file mode 100644 index 00000000..ddae41ee --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/largetype/LargeTypeScreen.kt @@ -0,0 +1,200 @@ +package com.artemchep.keyguard.feature.largetype + +import androidx.compose.animation.animateColorAsState +import androidx.compose.animation.core.animateIntAsState +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.FlowRow +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material3.LocalAbsoluteTonalElevation +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.material3.surfaceColorAtElevation +import androidx.compose.runtime.Composable +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.drawBehind +import androidx.compose.ui.text.SpanStyle +import androidx.compose.ui.text.buildAnnotatedString +import androidx.compose.ui.text.withStyle +import androidx.compose.ui.unit.coerceAtLeast +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.getOrNull +import com.artemchep.keyguard.feature.dialog.Dialog +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +import com.artemchep.keyguard.ui.KeepScreenOnEffect +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.colorizePasswordDigitColor +import com.artemchep.keyguard.ui.colorizePasswordSymbolColor +import com.artemchep.keyguard.ui.icons.KeyguardLargeType +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.theme.monoFontFamily +import com.artemchep.keyguard.ui.theme.selectedContainer +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun LargeTypeScreen( + args: LargeTypeRoute.Args, +) { + val loadableState = produceLargeTypeScreenState(args) + LargeTypeDialog( + loadableState = loadableState, + ) +} + +@OptIn(ExperimentalLayoutApi::class) +@Composable +private fun LargeTypeDialog( + loadableState: Loadable, +) { + KeepScreenOnEffect() + + Dialog( + icon = icon(Icons.Outlined.KeyguardLargeType), + title = { + Text(stringResource(Res.strings.largetype_title)) + }, + content = { + val state = loadableState.getOrNull() + if (state != null) { + LargeTypeContent( + state = state, + ) + } + }, + actions = { + val updatedOnClose by rememberUpdatedState(loadableState.getOrNull()?.onClose) + TextButton( + enabled = updatedOnClose != null, + onClick = { + updatedOnClose?.invoke() + }, + ) { + Text(stringResource(Res.strings.close)) + } + }, + ) +} + +@OptIn(ExperimentalLayoutApi::class) +@Composable +fun LargeTypeContent( + state: LargeTypeState, +) { + Column( + modifier = Modifier + .fillMaxWidth(), + ) { + val elevation = LocalAbsoluteTonalElevation.current + val indexState = animateIntAsState(state.index) + FlowRow( + modifier = Modifier + .padding( + horizontal = 16.dp, + ) + .align(Alignment.Start), + ) { + state.items.forEachIndexed { index, item -> + val contentModifier = kotlin.run { + val selected by remember(index, indexState) { + derivedStateOf { + indexState.value >= index + } + } + + val targetBackgroundColor = if (selected) { + MaterialTheme.colorScheme.selectedContainer + } else { + val isEven = index.rem(2) == 0 + val backgroundElevation = if (isEven) { + elevation.plus(8.dp) + } else { + elevation.minus(2.dp).coerceAtLeast(0.dp) + } + MaterialTheme.colorScheme + .surfaceColorAtElevation(backgroundElevation) + } + val backgroundColorState = animateColorAsState(targetBackgroundColor) + Modifier + .padding(2.dp) + .clip(RoundedCornerShape(4.dp)) + .drawBehind { + drawRect(backgroundColorState.value) + } + } + + val updatedOnClick by rememberUpdatedState(item.onClick) + Column( + modifier = Modifier + .then(contentModifier) + .clickable { + updatedOnClick?.invoke() + } + .padding( + horizontal = 6.dp, + vertical = 8.dp, + ), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + val color = LocalContentColor.current + val text = remember(color, item) { + buildAnnotatedString { + val symbolColor = when { + !item.colorize || item.text.length > 1 -> color + item.text[0].isDigit() -> colorizePasswordDigitColor(color) + item.text[0].isLetter() -> color + else -> colorizePasswordSymbolColor(color) + } + withStyle( + style = SpanStyle( + color = symbolColor, + ), + ) { + append(item.text) + } + } + } + Text( + text = text, + fontFamily = monoFontFamily, + style = MaterialTheme.typography.headlineMedium, + ) + Text( + text = index.plus(1).toString(), + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + style = MaterialTheme.typography.labelSmall, + ) + } + } + } + ExpandedIfNotEmpty( + valueOrNull = state.text, + ) { text -> + Text( + modifier = Modifier + .padding(top = 8.dp) + .padding(horizontal = Dimens.horizontalPadding), + text = text, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + style = MaterialTheme.typography.bodyMedium, + ) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/largetype/LargeTypeState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/largetype/LargeTypeState.kt new file mode 100644 index 00000000..e9fe06b9 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/largetype/LargeTypeState.kt @@ -0,0 +1,14 @@ +package com.artemchep.keyguard.feature.largetype + +data class LargeTypeState( + val text: String? = null, + val index: Int, + val items: List, + val onClose: (() -> Unit)? = null, +) { + data class Item( + val text: String, + val colorize: Boolean, + val onClick: (() -> Unit)? = null, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/largetype/LargeTypeStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/largetype/LargeTypeStateProducer.kt new file mode 100644 index 00000000..e7c07c66 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/largetype/LargeTypeStateProducer.kt @@ -0,0 +1,59 @@ +package com.artemchep.keyguard.feature.largetype + +import androidx.compose.runtime.Composable +import arrow.core.partially1 +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.feature.navigation.state.navigatePopSelf +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.ui.asCodePointsSequence +import kotlinx.coroutines.flow.map + +@Composable +fun produceLargeTypeScreenState( + args: LargeTypeRoute.Args, +): Loadable = produceScreenState( + key = "largetype", + args = arrayOf( + args, + ), + initial = Loadable.Loading, +) { + val selectedPositionSink = mutablePersistedFlow("index") { + -1 + } + + fun onClose() { + navigatePopSelf() + } + + fun onClickCodePoint(index: Int) { + selectedPositionSink.value = index + } + + val text = if (args.text.any { it.isSurrogate() }) { + "Text contains composite Unicode symbols!" + } else { + null + } + + val items = args.text + .asCodePointsSequence() + .mapIndexed { index, codePoint -> + LargeTypeState.Item( + text = codePoint, + colorize = args.colorize, + onClick = ::onClickCodePoint.partially1(index), + ) + } + .toList() + selectedPositionSink + .map { index -> + val state = LargeTypeState( + text = text, + index = index, + items = items, + onClose = ::onClose, + ) + Loadable.Ok(state) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/license/LicenseRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/license/LicenseRoute.kt new file mode 100644 index 00000000..6802b37f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/license/LicenseRoute.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.license + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.Route + +object LicenseRoute : Route { + @Composable + override fun Content() { + LicenseScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/license/LicenseScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/license/LicenseScreen.kt new file mode 100644 index 00000000..febc07ed --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/license/LicenseScreen.kt @@ -0,0 +1,182 @@ +package com.artemchep.keyguard.feature.license + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.FlowRow +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.lazy.items +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Modifier +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.service.license.model.License +import com.artemchep.keyguard.feature.EmptySearchView +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.FlatItemLayout +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.FlatTextFieldBadge +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.ScaffoldLazyColumn +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.skeleton.SkeletonItem +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.theme.infoContainer +import com.artemchep.keyguard.ui.toolbar.LargeToolbar +import dev.icerock.moko.resources.compose.stringResource + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun LicenseScreen() { + val loadableState = produceLicenseState() + + val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + ScaffoldLazyColumn( + modifier = Modifier + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + LargeToolbar( + title = { + Text( + text = stringResource(Res.strings.settings_open_source_licenses_header_title), + ) + }, + navigationIcon = { + NavigationIcon() + }, + scrollBehavior = scrollBehavior, + ) + }, + ) { + when (loadableState) { + is Loadable.Ok -> { + val list = loadableState.value.content.items + if (list.isEmpty()) { + item("empty") { + NoItemsPlaceholder() + } + } + + items(list) { item -> + LicenseItem( + item = item, + ) + } + } + + is Loadable.Loading -> { + item { + repeat(3) { + SkeletonItem() + } + } + } + } + } +} + +@Composable +private fun NoItemsPlaceholder( + modifier: Modifier = Modifier, +) { + EmptySearchView( + modifier = modifier, + ) +} + +@OptIn(ExperimentalLayoutApi::class) +@Composable +private fun LicenseItem( + modifier: Modifier = Modifier, + item: License, +) { + val navigationController by rememberUpdatedState(LocalNavigationController.current) + val scmUrl by rememberUpdatedState(item.scm?.url) + FlatItemLayout( + modifier = modifier, + content = { + FlatItemTextContent( + title = { + Text( + text = item.name + ?: stringResource(Res.strings.empty_value), + color = LocalContentColor.current + .let { color -> + // If the name doesn't exist, then show it with + // a different accent. + if (item.name != null) { + color + } else { + color.combineAlpha(DisabledEmphasisAlpha) + } + }, + ) + }, + ) + val dependency = + "${item.groupId}:${item.artifactId}:${item.version}" + Text( + text = dependency, + maxLines = 2, + overflow = TextOverflow.Ellipsis, + fontFamily = FontFamily.Monospace, + style = MaterialTheme.typography.labelSmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + ) + Spacer( + modifier = Modifier + .height(8.dp), + ) + FlowRow( + verticalArrangement = Arrangement.spacedBy(8.dp), + horizontalArrangement = Arrangement.spacedBy(8.dp), + ) { + item.spdxLicenses.forEach { license -> + FlatTextFieldBadge( + backgroundColor = MaterialTheme.colorScheme.infoContainer, + text = license.name, + ) + } + } + }, + trailing = if (scmUrl != null) { + // composable + { + ChevronIcon() + } + } else { + null + }, + enabled = true, + onClick = if (scmUrl != null) { + // lambda + { + val url = scmUrl + if (url != null) { + val intent = NavigationIntent.NavigateToBrowser( + url = url, + ) + navigationController.queue(intent) + } + } + } else { + null + }, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/license/LicenseState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/license/LicenseState.kt new file mode 100644 index 00000000..c85c8c25 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/license/LicenseState.kt @@ -0,0 +1,14 @@ +package com.artemchep.keyguard.feature.license + +import androidx.compose.runtime.Immutable +import com.artemchep.keyguard.common.service.license.model.License + +@Immutable +data class LicenseState( + val content: Content, +) { + @Immutable + data class Content( + val items: List, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/license/LicenseStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/license/LicenseStateProducer.kt new file mode 100644 index 00000000..31308051 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/license/LicenseStateProducer.kt @@ -0,0 +1,49 @@ +package com.artemchep.keyguard.feature.license + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.service.license.LicenseService +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +@Composable +fun produceLicenseState( +) = with(localDI().direct) { + produceLicenseState( + licenseService = instance(), + ) +} + +@Composable +fun produceLicenseState( + licenseService: LicenseService, +): Loadable = produceScreenState( + key = "open_source_licenses", + initial = Loadable.Loading, + args = arrayOf( + licenseService, + ), +) { + val request = licenseService.get() + .attempt() + .bind() + request.isLeft { + it.printStackTrace() + true + } + + val content = LicenseState.Content( + items = request + .getOrNull() + .orEmpty(), + ) + val state = LicenseState( + content = content, + ) + flowOf(Loadable.Ok(state)) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/loading/LoadingScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/loading/LoadingScreen.kt new file mode 100644 index 00000000..c6eb662c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/loading/LoadingScreen.kt @@ -0,0 +1,27 @@ +package com.artemchep.keyguard.feature.loading + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp + +@Composable +fun LoadingScreen() { + LoadingScreenContent() +} + +@Composable +private fun LoadingScreenContent() { + Box( + modifier = Modifier + .padding(16.dp) + .fillMaxSize(), + contentAlignment = Alignment.Center, + ) { + CircularProgressIndicator() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/loading/LoadingTask.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/loading/LoadingTask.kt new file mode 100644 index 00000000..9ef8d977 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/loading/LoadingTask.kt @@ -0,0 +1,80 @@ +package com.artemchep.keyguard.feature.loading + +import arrow.core.Either +import com.artemchep.keyguard.common.exception.Readable +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.util.flow.EventFlow +import com.artemchep.keyguard.feature.navigation.state.TranslatorScope +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.launch + +class LoadingTask( + private val translator: TranslatorScope, + private val scope: CoroutineScope, + /** + * Exception handler that's responsible for parsing the + * error messages as user-readable messages. + */ + private val exceptionHandler: (Throwable) -> String = { e -> + getErrorReadableMessage(e, translator) + }, +) { + private val isWorkingSink = MutableStateFlow(false) + + private val errorSink = EventFlow() + + val isExecutingFlow get() = isWorkingSink + + val errorFlow: Flow = errorSink.map { it.text } + + data class Failure( + val tag: String?, + val text: String, + ) + + /** + * Executes given task if the manager is + * not working, otherwise skips it. + */ + fun execute( + io: IO<*>, + tag: String? = null, + ) { + scope.launch { + if (isWorkingSink.value) { + return@launch + } + isWorkingSink.value = true + try { + val result = io.attempt().bind() + if (result is Either.Left) { + val message = Failure( + tag = tag, + text = exceptionHandler(result.value), + ) + result.value.printStackTrace() + errorSink.emit(message) + } else { + // Normally executing a task navigates the user somewhere. We + // artificially slow down the execution of the task, so the app state + // changes before the user is able to interact with the button again. + delay(60L) + } + } finally { + isWorkingSink.value = false + } + } + } +} + +fun getErrorReadableMessage(e: Throwable, translator: TranslatorScope) = + when (e) { + is Readable -> translator.translate(e.title) + else -> e.message.orEmpty() + } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/localization/TextHolder.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/localization/TextHolder.kt new file mode 100644 index 00000000..810800f3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/localization/TextHolder.kt @@ -0,0 +1,21 @@ +package com.artemchep.keyguard.feature.localization + +import androidx.compose.runtime.Composable +import dev.icerock.moko.resources.StringResource +import dev.icerock.moko.resources.compose.stringResource + +sealed interface TextHolder { + data class Value( + val data: String, + ) : TextHolder + + data class Res( + val data: StringResource, + ) : TextHolder +} + +@Composable +fun textResource(text: TextHolder): String = when (text) { + is TextHolder.Value -> text.data + is TextHolder.Res -> stringResource(text.data) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/localization/textResource.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/localization/textResource.kt new file mode 100644 index 00000000..c2f7715d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/localization/textResource.kt @@ -0,0 +1,15 @@ +package com.artemchep.keyguard.feature.localization + +import com.artemchep.keyguard.platform.LeContext +import dev.icerock.moko.resources.StringResource + +expect fun textResource( + res: StringResource, + context: LeContext, +): String + +expect fun textResource( + res: StringResource, + context: LeContext, + vararg args: Any, +): String diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/N.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/N.kt new file mode 100644 index 00000000..8a85dd87 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/N.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.feature.navigation + +object N { + /** generic tag, so you can find all the navigation logs */ + const val TAG = "nav" + + fun tag(tag: String) = "$TAG:$tag" +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/Navigation.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/Navigation.kt new file mode 100644 index 00000000..7727736d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/Navigation.kt @@ -0,0 +1,66 @@ +package com.artemchep.keyguard.feature.navigation + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.Stable +import androidx.compose.runtime.staticCompositionLocalOf + +internal val LocalBackHost = staticCompositionLocalOf { + false +} + +internal val LocalRoute = staticCompositionLocalOf { + throw IllegalStateException("Home layout must be initialized!") +} + +@Stable +interface RouteForResult { + @Composable + fun Content(transmitter: RouteResultTransmitter) +} + +@Stable +interface DialogRouteForResult : RouteForResult + +fun registerRouteResultReceiver( + route: RouteForResult, + block: (T) -> Unit, +): Route { + val transmitter: RouteResultTransmitter = object : RouteResultTransmitter { + override fun invoke(unit: T) { + block(unit) + } + } + return object : Route { + @Composable + override fun Content() { + route.Content( + transmitter = transmitter, + ) + } + } +} + +fun registerRouteResultReceiver( + route: DialogRouteForResult, + block: (T) -> Unit, +): DialogRoute { + val transmitter: RouteResultTransmitter = object : RouteResultTransmitter { + override fun invoke(unit: T) { + block(unit) + } + } + return object : DialogRoute { + @Composable + override fun Content() { + route.Content( + transmitter = transmitter, + ) + } + } +} + +/** + * A callback to pass the result back + * to a caller. + */ +interface RouteResultTransmitter : (T) -> Unit diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationAnimation.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationAnimation.kt new file mode 100644 index 00000000..aa15ff28 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationAnimation.kt @@ -0,0 +1,115 @@ +package com.artemchep.keyguard.feature.navigation + +import androidx.compose.animation.ContentTransform +import androidx.compose.animation.core.CubicBezierEasing +import androidx.compose.animation.core.Easing +import androidx.compose.animation.core.snap +import androidx.compose.animation.core.tween +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.animation.slideInHorizontally +import androidx.compose.animation.slideOutHorizontally +import androidx.compose.animation.with +import com.artemchep.keyguard.common.model.NavAnimation + +const val ahForward = 300 +const val ahBack = 280 + +const val ah2 = 0.5f + +private fun twoot() = tween( + durationMillis = ahForward, +// easing = FastOutSlowInEasing, +) + +/** + * Incoming elements are animated using deceleration easing, which starts a transition + * at peak velocity (the fastest point of an element’s movement) and ends at rest. + * + * This is equivalent to the Android `LinearOutSlowInInterpolator` + */ +private val LinearOutSlowInEasing2: Easing = CubicBezierEasing(0.6f, 0.0f, 0.4f, 1.0f) + +/** + * Elements exiting a screen use acceleration easing, where they start at rest and + * end at peak velocity. + * + * This is equivalent to the Android `FastOutLinearInInterpolator` + */ +private val FastOutLinearInEasing2: Easing = CubicBezierEasing(0.6f, 0.0f, 0.4f, 1.0f) + +private fun twaat( + durationMillis: Int, +) = tween( + durationMillis = durationMillis, + easing = LinearOutSlowInEasing2, +) + +private fun twuut( + durationMillis: Int, +) = tween( + durationMillis = durationMillis, + easing = FastOutLinearInEasing2, +) + +object NavigationAnimation + +enum class NavigationAnimationType { + SWITCH, + GO_FORWARD, + GO_BACKWARD, +} + +fun NavigationAnimation.transform( + scale: Float, + animationType: NavAnimation, + transitionType: NavigationAnimationType, +): ContentTransform = when (animationType) { + NavAnimation.DISABLED -> transformImmediate() + NavAnimation.CROSSFADE -> transformSwitchContext(scale) + NavAnimation.DYNAMIC -> when (transitionType) { + NavigationAnimationType.SWITCH -> transformSwitchContext(scale) + NavigationAnimationType.GO_FORWARD -> transformGoForward(scale) + NavigationAnimationType.GO_BACKWARD -> transformGoBack(scale) + } +} + +fun NavigationAnimation.transformImmediate(): ContentTransform = + fadeIn( + animationSpec = snap(), + ) with fadeOut( + animationSpec = snap(), + ) + +fun NavigationAnimation.transformSwitchContext(scale: Float): ContentTransform = + fadeIn( + animationSpec = tween(ahForward.times(scale).toInt()), + ) with fadeOut( + animationSpec = tween(ahForward.times(scale).toInt()), + ) + +fun NavigationAnimation.transformGoForward(scale: Float): ContentTransform = + slideInHorizontally( + animationSpec = twaat(ahForward.times(scale).toInt()), + initialOffsetX = { fullWidth -> fullWidth / 8 }, + ) + fadeIn( + animationSpec = twaat(ahBack.times(scale).toInt()), + ) with slideOutHorizontally( + animationSpec = twuut(ahForward.times(scale).toInt()), + targetOffsetX = { fullWidth -> -fullWidth / 12 }, + ) + fadeOut( + animationSpec = twuut(ahForward.times(scale).toInt() / 2), + ) + +fun NavigationAnimation.transformGoBack(scale: Float): ContentTransform = + slideInHorizontally( + animationSpec = twaat(ahBack.times(scale).toInt()), + initialOffsetX = { fullWidth -> -fullWidth / 12 }, + ) + fadeIn( + animationSpec = twaat(ahBack.times(scale).toInt()), + ) with slideOutHorizontally( + animationSpec = twuut(ahBack.times(scale).toInt()), + targetOffsetX = { fullWidth -> fullWidth / 8 }, + ) + fadeOut( + animationSpec = twuut(ahForward.times(scale).toInt() / 2), + ) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationController.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationController.kt new file mode 100644 index 00000000..91cf0c30 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationController.kt @@ -0,0 +1,70 @@ +package com.artemchep.keyguard.feature.navigation + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.remember +import androidx.compose.runtime.staticCompositionLocalOf +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.flowOf + +private const val TAG = "Controller" + +@Composable +fun NavigationController( + scope: CoroutineScope? = null, + canPop: Flow, + handle: (NavigationIntent) -> NavigationIntent?, + content: @Composable (NavigationController) -> Unit, +) { + val finalTag = N.tag(TAG) + + val parent = LocalNavigationController.current + val controller = remember(canPop, handle, parent) { + val combinedCanPop = combine( + canPop, + parent.canPop(), + ) { a, b -> a || b } + val handler = object : NavigationController { + override val scope: CoroutineScope = kotlin.run { + scope ?: parent.scope + } + + override fun queue(intent: NavigationIntent) { + val newIntent = handle(intent) + ?: return + parent.queue(newIntent) + } + + override fun canPop(): Flow = combinedCanPop + } + handler + } + CompositionLocalProvider( + LocalNavigationController provides controller, + ) { + content(controller) + } +} + +interface NavigationController { + val scope: CoroutineScope + + fun queue(intent: NavigationIntent) + + fun canPop(): Flow +} + +internal val LocalNavigationController = staticCompositionLocalOf { + object : NavigationController { + override val scope: CoroutineScope get() = GlobalScope + + override fun queue(intent: NavigationIntent) { + // Do nothing. + } + + override fun canPop(): Flow = flowOf(false) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationEntry.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationEntry.kt new file mode 100644 index 00000000..021692c3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationEntry.kt @@ -0,0 +1,67 @@ +package com.artemchep.keyguard.feature.navigation + +import androidx.compose.runtime.staticCompositionLocalOf +import com.artemchep.keyguard.feature.navigation.state.FlowHolderViewModel +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.NonCancellable +import kotlinx.coroutines.launch +import kotlinx.coroutines.plus +import kotlinx.coroutines.suspendCancellableCoroutine +import kotlinx.coroutines.withContext + +interface NavigationEntry { + companion object { + fun new() { + } + } + + val id: String + val type: String + + val route: Route + val scope: CoroutineScope + val vm: FlowHolderViewModel + + fun destroy() +} + +internal val LocalNavigationEntry = staticCompositionLocalOf { + throw IllegalStateException("Home layout must be initialized!") +} + +data class NavigationEntryImpl( + private val source: String, + private val parent: CoroutineScope, + override val id: String, + override val route: Route, +) : NavigationEntry { + override val type: String = route::class.simpleName.orEmpty() + + private val job = Job() + + override val scope = parent + job + + override val vm: FlowHolderViewModel = FlowHolderViewModel(source, scope) + + init { + require('/' !in id) + require('/' !in type) + + parent.launch { + try { + suspendCancellableCoroutine { } + } finally { + withContext(NonCancellable + Dispatchers.Main) { + destroy() + } + } + } + } + + override fun destroy() { + vm.destroy() + job.cancel() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationEntryProvider.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationEntryProvider.kt new file mode 100644 index 00000000..a4b74d28 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationEntryProvider.kt @@ -0,0 +1,33 @@ +package com.artemchep.keyguard.feature.navigation + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.DisposableEffect +import androidx.compose.runtime.remember + +/** + * A definition of the distinct application component that + * makes sense when rendered in a separate window. + */ +@Composable +fun NavigationNode( + id: String, + route: Route, +) { + val parentScope = LocalNavigationController.current.scope + val entry = remember(id, route) { + NavigationEntryImpl( + source = "NavigationNode", + id = id, + parent = parentScope, + route = route, + ) + } + DisposableEffect(entry) { + onDispose { + entry.destroy() + } + } + NavigationNode( + entry = entry, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationIntent.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationIntent.kt new file mode 100644 index 00000000..c298e8a3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationIntent.kt @@ -0,0 +1,102 @@ +package com.artemchep.keyguard.feature.navigation + +import kotlinx.collections.immutable.PersistentList + +sealed interface NavigationIntent { + data class Composite( + val list: List, + ) : NavigationIntent + + // navigate + + data class NavigateToPreview( + val uri: String, + val fileName: String? = null, + ) : NavigationIntent + + data class NavigateToPreviewInFileManager( + val uri: String, + val fileName: String? = null, + ) : NavigationIntent + + data class NavigateToSend( + val uri: String, + val fileName: String? = null, + ) : NavigationIntent + + data class NavigateToShare( + val text: String, + ) : NavigationIntent + + data class NavigateToLargeType( + val text: String, + val colorize: Boolean, + ) : NavigationIntent + + data class NavigateToApp( + val packageName: String, + ) : NavigationIntent + + data class NavigateToBrowser( + val url: String, + ) : NavigationIntent + + data class NavigateToPhone( + val phoneNumber: String, + ) : NavigationIntent + + data class NavigateToSms( + val phoneNumber: String, + ) : NavigationIntent + + data class NavigateToEmail( + val email: String, + val subject: String? = null, + val body: String? = null, + ) : NavigationIntent + + data class NavigateToMaps( + val address1: String? = null, + val address2: String? = null, + val address3: String? = null, + val city: String? = null, + val state: String? = null, + val postalCode: String? = null, + val country: String? = null, + ) : NavigationIntent + + data class NavigateToRoute( + val route: Route, + val launchMode: LaunchMode = LaunchMode.DEFAULT, + ) : NavigationIntent { + enum class LaunchMode { + DEFAULT, + SINGLE, + } + } + + data class NavigateToStack( + val stack: List, + ) : NavigationIntent + + data class SetRoute( + val route: Route, + ) : NavigationIntent + + // pop + + data object Exit : NavigationIntent + + data object Pop : NavigationIntent + + data class PopById( + val id: String, + val exclusive: Boolean = true, + ) : NavigationIntent + + // manual + + data class Manual( + val handle: PersistentList.((Route) -> NavigationEntry) -> PersistentList, + ) : NavigationIntent +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationIntentPackage.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationIntentPackage.kt new file mode 100644 index 00000000..6815ff84 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationIntentPackage.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.feature.navigation + +data class NavigationIntentPackage( + val intent: NavigationIntent, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationNode.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationNode.kt new file mode 100644 index 00000000..6e6ce620 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationNode.kt @@ -0,0 +1,270 @@ +package com.artemchep.keyguard.feature.navigation + +import androidx.compose.animation.AnimatedContent +import androidx.compose.animation.Crossfade +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material.Text +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.Immutable +import androidx.compose.runtime.compositionLocalOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.key +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.testTag +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.usecase.GetNavAnimation +import com.artemchep.keyguard.platform.LocalAnimationFactor +import kotlinx.collections.immutable.PersistentList +import kotlinx.collections.immutable.persistentListOf +import org.kodein.di.compose.rememberInstance + +/** + * A definition of the distinct application component that + * makes sense when rendered in a separate window. + */ +@Composable +fun NavigationNode( + entry: NavigationEntry, +) { + CompositionLocalProvider( + LocalNavigationNodeLogicalStack provides LocalNavigationNodeLogicalStack.current.add(entry), + ) { + NavigationRoute( + entry = entry, + ) + } +} + +@Immutable +private data class Foo( + val logicalStack: PersistentList, + val visualStack: PersistentList, + val entry: NavigationEntry?, +) { + companion object { + val empty = Foo( + logicalStack = persistentListOf(), + visualStack = persistentListOf(), + entry = null, + ) + } +} + +@Composable +fun NavigationNode( + entries: PersistentList, + offset: Int = 0, +) { + val getNavAnimation by rememberInstance() + + val newVisualEntries = remember(entries, offset) { + if (offset < 0 || offset >= entries.size) { + // If the offset is illegal then we just + // render empty stack. + return@remember persistentListOf() + } + entries.subList(offset, entries.size) + } + + val lastFullscreenEntryIndex = newVisualEntries.indexOfLast { it.route !is DialogRoute } + + val logicalStack = LocalNavigationNodeLogicalStack.current + val visualStack = LocalNavigationNodeVisualStack.current + + Box { + // + // Draw screen stack + // + + val prevFoo = remember { + mutableStateOf(null) + } + val oldFoo = remember { + mutableStateOf(null) + } + val foo = remember( + logicalStack, + visualStack, + entries, + newVisualEntries, + lastFullscreenEntryIndex, + ) { + // There are no screens in the stack. + if (lastFullscreenEntryIndex == -1) { + return@remember Foo.empty + } + + val newLogicalStack = kotlin.run { + val items = entries + .subList(fromIndex = 0, toIndex = lastFullscreenEntryIndex + 1 + offset) + logicalStack.addAll(items) + } + val newVisualStack = kotlin.run { + val items = newVisualEntries + .subList(fromIndex = 0, toIndex = lastFullscreenEntryIndex + 1) + visualStack.addAll(items) + } + Foo( + logicalStack = newLogicalStack, + visualStack = newVisualStack, + entry = newVisualStack.last(), + ) + } + remember(foo) { + prevFoo.value = oldFoo.value + oldFoo.value = foo + 1 + } + + val updatedAnimationScale by rememberUpdatedState(LocalAnimationFactor) + AnimatedContent( + targetState = foo, + transitionSpec = { + val animationType = getNavAnimation().value + val transitionType = kotlin.run { + if ( + this.targetState.visualStack.size == + this.initialState.visualStack.size + ) { + return@run NavigationAnimationType.SWITCH + } + + val isForward = when { + initialState.visualStack.size == 0 -> true + initialState.visualStack.size < targetState.visualStack.size -> true + + else -> false + } + if (isForward) { + NavigationAnimationType.GO_FORWARD + } else { + NavigationAnimationType.GO_BACKWARD + } + } + + NavigationAnimation.transform( + scale = updatedAnimationScale, + animationType = animationType, + transitionType = transitionType, + ) + }, + label = "", + ) { foo -> + val entry = foo.entry + key(entry?.id) { + if (entry != null) { + CompositionLocalProvider( + LocalNavigationNodeLogicalStack provides foo.logicalStack, + LocalNavigationNodeVisualStack provides foo.visualStack, + ) { + NavigationRoute( + entry = entry, + ) + } + } + } + } + + // + // Draw dialog stack + // + + val bar = remember( + logicalStack, + visualStack, + entries, + newVisualEntries, + lastFullscreenEntryIndex, + ) { + // There are no screens in the stack. + if ( + newVisualEntries.isEmpty() || + lastFullscreenEntryIndex == newVisualEntries.lastIndex + ) { + return@remember Foo.empty + } + + val newLogicalStack = logicalStack.addAll(entries) + val newVisualStack = kotlin.run { + val items = newVisualEntries + .subList( + fromIndex = lastFullscreenEntryIndex + 1, + toIndex = newVisualEntries.size, + ) + visualStack.addAll(items) + } + Foo( + logicalStack = newLogicalStack, + visualStack = newVisualStack, + entry = entries.last(), + ) + } + Crossfade( + targetState = bar, + ) { bar -> + val entry = bar.entry + key(entry?.id) { + if (entry != null) { + CompositionLocalProvider( + LocalNavigationNodeLogicalStack provides bar.logicalStack, + LocalNavigationNodeVisualStack provides bar.visualStack, + ) { + NavigationRoute( + entry = entry, + ) + } + } + } + } + } +} + +@Composable +private fun NavigationRoute( + entry: NavigationEntry, +) { + // A composable content must be able to fetch the + // route instance if it wants to. + CompositionLocalProvider( + LocalNavigationEntry provides entry, + LocalRoute provides entry.route, + ) { + key(entry.route) { + Box( + modifier = Modifier + .testTag("nav:${entry.id}"), + ) { + entry.route.Content() + } + } + } +} + +internal val LocalNavigationNodeLogicalStack = compositionLocalOf> { + persistentListOf() +} + +internal val LocalNavigationNodeVisualStack = compositionLocalOf> { + persistentListOf() +} + +@Composable +fun VisualStackText() { + val nav = LocalNavigationNodeVisualStack.current.joinToString { it.id } + Text( + modifier = Modifier + .fillMaxWidth() + .background(MaterialTheme.colorScheme.tertiaryContainer) + .padding(4.dp), + text = nav, + color = MaterialTheme.colorScheme.onTertiaryContainer, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationNodeCurrentStack.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationNodeCurrentStack.kt new file mode 100644 index 00000000..7de6ba6f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationNodeCurrentStack.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.feature.navigation + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState + +@Composable +fun navigationNodeStack(): String { + val stack by rememberUpdatedState(LocalNavigationNodeLogicalStack.current) + val value by remember { + derivedStateOf { + stack.joinToString(separator = "/") { it.id } + } + } + return value +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationRoute.kt new file mode 100644 index 00000000..1c866771 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationRoute.kt @@ -0,0 +1,13 @@ +package com.artemchep.keyguard.feature.navigation + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.Stable + +@Stable +interface Route { + @Composable + fun Content() +} + +@Stable +interface DialogRoute : Route diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationRouter.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationRouter.kt new file mode 100644 index 00000000..38b92e52 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationRouter.kt @@ -0,0 +1,212 @@ +package com.artemchep.keyguard.feature.navigation + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.DisposableEffect +import androidx.compose.runtime.compositionLocalOf +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.snapshotFlow +import kotlinx.collections.immutable.PersistentList +import kotlinx.collections.immutable.persistentListOf +import kotlinx.collections.immutable.toPersistentList +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.flow.map +import java.util.UUID + +@Composable +fun NavigationRouter( + id: String, + initial: Route, + content: @Composable (PersistentList) -> Unit, +) { + // Fid the top-level router and link the entry's lifecycle + // to it, so if the top level gets destroyed we also get + // destroyed. + val f = LocalNavigationNodeLogicalStack.current.last() + val parentScope = f.scope + val navStack = remember(id) { + val navEntry = NavigationEntryImpl( + source = "router root", + id = id, + parent = parentScope, + route = initial, + ) + NavigationStack(navEntry) + } + val canPop = remember(navStack) { + snapshotFlow { navStack.value } + .map { it.size > 1 } + } + NavigationController( + canPop = canPop, + handle = { intent -> + val backStack = navStack.value + val newBackStack = backStack + .exec( + intent = intent, + scope = parentScope, + ) + when { + newBackStack == null -> { + // The intent was not handled, pass it to the next + // navigation controller. + return@NavigationController intent + } + + newBackStack.isEmpty() -> { + NavigationIntent.Pop + } + + else -> { + navStack.value = newBackStack + // We have handled the navigation intent. + null + } + } + }, + ) { controller -> + val localBackStack = navStack.value + val globalBackStack = LocalNavigationNodeLogicalStack.current.addAll(localBackStack) + val backHandler = LocalNavigationBackHandler.current + + DisposableEffect( + controller, + globalBackStack, + backHandler, + ) { + val registration = backHandler.register(controller, globalBackStack) + onDispose { + registration() + } + } + + CompositionLocalProvider( + LocalNavigationRouter provides navStack, + ) { + content(localBackStack) + } + } +} + +class NavigationStack( + entry: NavigationEntry, +) { + private val _state = kotlin.run { + val initialState = persistentListOf(entry) + mutableStateOf(initialState) + } + + var value: PersistentList + get() = _state.value + set(value) { + val oldValue = _state.value + + val removedItems = mutableListOf() + oldValue.forEach { e -> + val exists = value.any { it === e } + if (!exists) { + removedItems += e + } + } + removedItems.forEach { + it.destroy() + } + _state.value = value + } +} + +private fun PersistentList.exec( + intent: NavigationIntent, + scope: CoroutineScope, +): PersistentList? = when (intent) { + is NavigationIntent.Composite -> run compose@{ + var backStack = this + for (subIntent in intent.list) { + val new = backStack.exec( + intent = subIntent, + scope = scope, + ) + backStack = new + ?: return@compose null + } + backStack + } + + is NavigationIntent.NavigateToRoute -> kotlin.run { + val backStack = when (intent.launchMode) { + NavigationIntent.NavigateToRoute.LaunchMode.DEFAULT -> this + NavigationIntent.NavigateToRoute.LaunchMode.SINGLE -> { + val clearedBackStack = removeAll { it.route::class == intent.route::class } + val existingEntry = lastOrNull { it.route == intent.route } + if (existingEntry != null) { + // Fast path if existing route matches the new route. + return@run clearedBackStack.add(existingEntry) + } + + clearedBackStack + } + } + + val r = intent.route + val e = NavigationEntryImpl( + source = "router", + id = UUID.randomUUID().toString(), + parent = scope, + route = r, + ) + backStack.add(e) + } + + is NavigationIntent.SetRoute -> { + val r = intent.route + val e = NavigationEntryImpl( + source = "router", + id = UUID.randomUUID().toString(), + parent = scope, + route = r, + ) + persistentListOf(e) + } + + is NavigationIntent.NavigateToStack -> intent.stack.toPersistentList() + is NavigationIntent.Pop -> { + if (size > 0) { + removeAt(size - 1) + } else { + null + } + } + + is NavigationIntent.PopById -> popById(intent.id, intent.exclusive) + is NavigationIntent.Manual -> { + val factory = fun(route: Route): NavigationEntry = + NavigationEntryImpl( + source = "router", + id = UUID.randomUUID().toString(), + parent = scope, + route = route, + ) + intent.handle(this, factory) + } + + else -> null +} + +fun PersistentList.popById( + id: String, + exclusive: Boolean, +) = kotlin.run { + val i = indexOfLast { it.id == id } + if (i >= 0) { + val offset = if (exclusive) 1 else 0 + subList(0, i + offset) + .toPersistentList() + } else { + null + } +} + +internal val LocalNavigationRouter = compositionLocalOf { + TODO() +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler.kt new file mode 100644 index 00000000..4f55f3a5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler.kt @@ -0,0 +1,88 @@ +package com.artemchep.keyguard.feature.navigation + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.compositionLocalOf +import androidx.compose.runtime.remember +import kotlinx.collections.immutable.PersistentMap +import kotlinx.collections.immutable.persistentMapOf +import kotlinx.coroutines.flow.MutableStateFlow +import java.util.UUID + +/** + * A definition of the distinct application component that + * makes sense when rendered in a separate window. + */ +@Composable +fun NavigationRouterBackHandler( + sideEffect: @Composable (BackHandler) -> Unit, + content: @Composable () -> Unit, +) { + val handler = remember { + BackHandler() + } + sideEffect(handler) + + CompositionLocalProvider( + LocalNavigationBackHandler provides handler, + ) { + content() + } +} + +class BackHandler( + val eek: MutableStateFlow> = MutableStateFlow(persistentMapOf()), + val eek2: MutableStateFlow> = MutableStateFlow(persistentMapOf()), +) { + class Entry( + val controller: NavigationController, + val backStack: List, + ) + + class Entry2( + val onBack: () -> Unit, + val priority: Int, + ) + + fun register( + controller: NavigationController, + backStack: List, + ): () -> Unit { + val id = UUID.randomUUID().toString() + eek.value = eek.value.put( + key = id, + value = Entry( + controller = controller, + backStack = backStack, + ), + ) + return { + eek.value = eek.value.remove( + key = id, + ) + } + } + + fun register2( + onBack: () -> Unit, + priority: Int, + ): () -> Unit { + val id = UUID.randomUUID().toString() + eek2.value = eek2.value.put( + key = id, + value = Entry2( + onBack = onBack, + priority = priority, + ), + ) + return { + eek2.value = eek2.value.remove( + key = id, + ) + } + } +} + +val LocalNavigationBackHandler = compositionLocalOf { + throw IllegalStateException() +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationRouterBackIcon.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationRouterBackIcon.kt new file mode 100644 index 00000000..ed88015a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationRouterBackIcon.kt @@ -0,0 +1,31 @@ +package com.artemchep.keyguard.feature.navigation + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.ArrowBack +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Modifier + +@Composable +fun NavigationIcon( + modifier: Modifier = Modifier, +) { + val visualStack = LocalNavigationNodeVisualStack.current + val backVisible = visualStack.size > 1 + if (backVisible) { + val navigationId by rememberUpdatedState(visualStack.last().id) + val controller by rememberUpdatedState(LocalNavigationController.current) + IconButton( + modifier = modifier, + onClick = { + val intent = NavigationIntent.PopById(navigationId, exclusive = false) + controller.queue(intent) + }, + ) { + Icon(Icons.Outlined.ArrowBack, null) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/Copy.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/Copy.kt new file mode 100644 index 00000000..e527d6a8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/Copy.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.navigation.state + +import com.artemchep.keyguard.common.service.clipboard.ClipboardService +import com.artemchep.keyguard.common.usecase.CopyText + +fun RememberStateFlowScope.copy( + clipboardService: ClipboardService, +) = CopyText( + clipboardService = clipboardService, + onMessage = ::message, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/DiskHandle.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/DiskHandle.kt new file mode 100644 index 00000000..89dd8785 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/DiskHandle.kt @@ -0,0 +1,14 @@ +package com.artemchep.keyguard.feature.navigation.state + +import kotlinx.coroutines.flow.Flow + +/** + * @author Artem Chepurnyi + */ +interface DiskHandle { + val restoredState: Map + + fun link(key: String, flow: Flow) + + fun unlink(key: String) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/DiskHandleImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/DiskHandleImpl.kt new file mode 100644 index 00000000..2448b918 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/DiskHandleImpl.kt @@ -0,0 +1,98 @@ +package com.artemchep.keyguard.feature.navigation.state + +import arrow.core.Either +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.toIO +import com.artemchep.keyguard.common.usecase.GetScreenState +import com.artemchep.keyguard.common.usecase.PutScreenState +import com.artemchep.keyguard.common.util.flow.combineToList +import com.artemchep.keyguard.feature.crashlytics.crashlyticsTap +import kotlinx.collections.immutable.persistentMapOf +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.debounce +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.flow.update + +class DiskHandleImpl private constructor( + private val scope: CoroutineScope, + private val putScreenState: PutScreenState, + private val key: String, + override val restoredState: Map, +) : DiskHandle { + companion object { + private const val SAVE_DEBOUNCE_MS = 180L + + suspend fun read( + scope: CoroutineScope, + getScreenState: GetScreenState, + putScreenState: PutScreenState, + key: String, + ): DiskHandle { + val restoredState = getScreenState(key) + .toIO() + .crashlyticsTap() + .attempt() + .bind() + .getOrNull() + .orEmpty() + return DiskHandleImpl( + scope = scope, + putScreenState = putScreenState, + key = key, + restoredState = restoredState, + ) + } + } + + private val registrySink = MutableStateFlow(persistentMapOf>()) + + init { + registrySink + .flatMapLatest { state -> + state.entries + .map { (key, value) -> + // Combine flow of values with a + // key of the variable. + value + .map { f -> key to f } + } + .combineToList() + } + .debounce(SAVE_DEBOUNCE_MS) // no need to save all of the events + .onEach { entries -> + val state = entries.toMap() + val result = tryWrite(state) + if (result is Either.Left) { + val e = result.value + e.printStackTrace() + } + } + .launchIn(scope) + } + + private suspend fun tryWrite(state: Map) = putScreenState(key, state) + .attempt() + .bind() + + override fun link(key: String, flow: Flow) = registrySink.update { state -> + val savedFlow = state[key] + if (savedFlow != null) { + require(savedFlow === flow) { + "Tried to link a flow with a disk, but a collision has occurred." + } + state + } else { + state.put(key, flow) + } + } + + override fun unlink(key: String) = registrySink.update { state -> + state.remove(key) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/FlowHolderViewModel.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/FlowHolderViewModel.kt new file mode 100644 index 00000000..37b8ad9a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/FlowHolderViewModel.kt @@ -0,0 +1,102 @@ +package com.artemchep.keyguard.feature.navigation.state + +import androidx.compose.material3.ColorScheme +import androidx.compose.runtime.State +import arrow.core.Some +import com.artemchep.keyguard.common.usecase.GetScreenState +import com.artemchep.keyguard.common.usecase.PutScreenState +import com.artemchep.keyguard.common.usecase.ShowMessage +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.feature.navigation.NavigationController +import com.artemchep.keyguard.platform.LeBundle +import com.artemchep.keyguard.platform.LeContext +import com.artemchep.keyguard.platform.leBundleOf +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.plus +import kotlinx.serialization.json.Json + +class FlowHolderViewModel( + private val source: String, + private val scope: CoroutineScope, +) { + var bundle: LeBundle = leBundleOf() + + private val store = mutableMapOf>() + + private class Entry( + val scope: RememberStateFlowScope, + val job: Job, + val value: Any?, + ) + + fun getOrPut( + key: String, + c: NavigationController, + showMessage: ShowMessage, + getScreenState: GetScreenState, + putScreenState: PutScreenState, + windowCoroutineScope: WindowCoroutineScope, + json: Json, + screen: String, + screenName: String, + context: LeContext, + colorSchemeState: State, + init: RememberStateFlowScope.() -> T, + ): T = synchronized(this) { + store.getOrPut(key) { + val job = Job() + val scope = RememberStateFlowScopeImpl( + key = key, + scope = scope + job + Dispatchers.Default, + navigationController = c, + showMessage = showMessage, + getScreenState = getScreenState, + putScreenState = putScreenState, + windowCoroutineScope = windowCoroutineScope, + json = json, + bundle = bundle, + screen = screen, + screenName = screenName, + colorSchemeState = colorSchemeState, + context = context, + ) + val value = init(scope) + Some( + Entry( + scope = scope, + job = job, + value = value, + ), + ) + }.value.value as T + } + + fun clear(key: String) { + synchronized(this) { + store.remove(key)?.map { it.job.cancel() } + } + } + + private var isDestroyed = false + + fun destroy() { + synchronized(this) { + if (!isDestroyed) { + isDestroyed = true + // + store.keys.toSet().forEach { + clear(it) + } + } + } + } + + fun persistedState(): LeBundle { + val state = store + .map { (key, sink) -> key to sink.value.scope.persistedState() } + .toTypedArray() + return leBundleOf(*state) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/PersistedStorage.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/PersistedStorage.kt new file mode 100644 index 00000000..c24b1ed0 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/PersistedStorage.kt @@ -0,0 +1,13 @@ +package com.artemchep.keyguard.feature.navigation.state + +sealed interface PersistedStorage { + data object InMemory : PersistedStorage + + /** + * Stores the latest value on the disk, allowing to + * survive the restart of an app. + */ + data class InDisk( + val disk: DiskHandle, + ) : PersistedStorage +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/ProduceScreenState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/ProduceScreenState.kt new file mode 100644 index 00000000..86791c9d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/ProduceScreenState.kt @@ -0,0 +1,40 @@ +package com.artemchep.keyguard.feature.navigation.state + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.State +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import kotlinx.coroutines.flow.Flow + +@Composable +fun produceScreenState( + key: String, + args: Array = emptyArray(), + rargs: Array = emptyArray(), + initial: T, + init: suspend RememberStateFlowScope.() -> Flow, +): T { + val stateFlow by rememberScreenState( + key = key, + args = args, + rargs = rargs, + initial = initial, + init = init, + ) + return stateFlow +} + +@Composable +fun rememberScreenState( + key: String, + args: Array = emptyArray(), + rargs: Array = emptyArray(), + initial: T, + init: suspend RememberStateFlowScope.() -> Flow, +): State = rememberScreenStateFlow( + key = key, + args = args, + rargs = rargs, + initial = initial, + init = init, +).collectAsState() diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlow.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlow.kt new file mode 100644 index 00000000..1ed0a23c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/RememberScreenStateFlow.kt @@ -0,0 +1,127 @@ +package com.artemchep.keyguard.feature.navigation.state + +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import com.artemchep.keyguard.common.usecase.GetDebugScreenDelay +import com.artemchep.keyguard.common.usecase.GetScreenState +import com.artemchep.keyguard.common.usecase.PutScreenState +import com.artemchep.keyguard.common.usecase.ShowMessage +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.common.util.flow.persistingStateIn +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.LocalNavigationNodeLogicalStack +import com.artemchep.keyguard.feature.navigation.N +import com.artemchep.keyguard.feature.navigation.navigationNodeStack +import com.artemchep.keyguard.platform.LocalLeContext +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.firstOrNull +import kotlinx.coroutines.flow.flattenConcat +import kotlinx.coroutines.flow.flow +import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.shareIn +import kotlinx.coroutines.flow.withIndex +import kotlinx.coroutines.launch +import kotlinx.coroutines.suspendCancellableCoroutine +import kotlinx.coroutines.withContext +import kotlinx.datetime.Clock +import kotlinx.serialization.json.Json +import org.kodein.di.compose.rememberInstance + +private const val TAG = "ScreenState" + +@Composable +fun rememberScreenStateFlow( + key: String, + args: Array = emptyArray(), + rargs: Array = emptyArray(), + initial: T, + init: suspend RememberStateFlowScope.() -> Flow, +): StateFlow { + val finalTag = N.tag(TAG) + // Key is the one provided by the user or + // the one generated by the compose runtime. + val finalKey = navigationNodeStack() + ":" + key + + val f = LocalNavigationNodeLogicalStack.current.last() + val c = LocalNavigationController.current + val viewModel = f.vm + + val context = LocalLeContext + + val colorSchemeState = rememberUpdatedState(MaterialTheme.colorScheme) + + val toastService by rememberInstance() + val getScreenState by rememberInstance() + val getDebugScreenDelay by rememberInstance() + val putScreenState by rememberInstance() + val windowCoroutineScope by rememberInstance() + val json by rememberInstance() + return remember( + finalKey, + viewModel, + c, + toastService, + getScreenState, + putScreenState, + windowCoroutineScope, + json, + context, + *rargs, + ) { + val now = Clock.System.now() + val flow: RememberStateFlowScope.() -> Flow = { + launch { +// Log.i(finalTag, "Initialized the state of '$finalKey'.") + try { + // Suspend forever. + suspendCancellableCoroutine { } + } finally { +// Log.i(finalTag, "Finished the state of '$finalKey'.") + } + } + + val structureFlow = flow { + val shouldDelay = getDebugScreenDelay().firstOrNull() == true + if (shouldDelay) { + delay(5500L) + } + + val structure = withContext(Dispatchers.Default) { + init() + } + emit(structure) + } + // We don't want to recreate a state producer + // each time we re-subscribe to it. + .shareIn(this, SharingStarted.Lazily, 1) + structureFlow + .flattenConcat() + .withIndex() + .map { it.value } + .flowOn(Dispatchers.Default) + .persistingStateIn(this, SharingStarted.WhileSubscribed(), initial) + } + val flow2 = viewModel.getOrPut( + finalKey, + c, + toastService, + getScreenState, + putScreenState, + windowCoroutineScope, + json, + f.id, + key, + context, + colorSchemeState, + flow, + ) as StateFlow + flow2 + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope.kt new file mode 100644 index 00000000..e5fc36b1 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/RememberStateFlowScope.kt @@ -0,0 +1,102 @@ +package com.artemchep.keyguard.feature.navigation.state + +import androidx.compose.material3.ColorScheme +import com.artemchep.keyguard.common.model.ToastMessage +import com.artemchep.keyguard.feature.loading.LoadingTask +import com.artemchep.keyguard.feature.localization.TextHolder +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.platform.LeContext +import dev.icerock.moko.resources.StringResource +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.shareIn + +interface TranslatorScope { + fun translate( + res: StringResource, + ): String + + fun translate( + res: StringResource, + vararg args: Any, + ): String +} + +fun TranslatorScope.translate(text: TextHolder) = when (text) { + is TextHolder.Res -> translate(text.data) + is TextHolder.Value -> text.data +} + +interface RememberStateFlowScope : RememberStateFlowScopeSub, CoroutineScope, TranslatorScope { + val appScope: CoroutineScope + + val screenScope: CoroutineScope + + val screenId: String + + val screenName: String + + val context: LeContext + + val colorScheme: ColorScheme + + /** + * Commands a closest router to execute the + * given intent. + */ + fun navigate( + intent: NavigationIntent, + ) + + /** Sends a message from this screen */ + fun message( + message: ToastMessage, + ) + + /** Sends a message from this screen */ + fun message( + exception: Throwable, + ) + + fun screenExecutor(): LoadingTask + + /** + * Register a listener to exit request. Once registered, you must + * call the callback with `true` if you can go back, `false` if that + * should be ignored. + */ + fun interceptExit( + isEnabledFlow: Flow, + callback: ((Boolean) -> Unit) -> Unit, + ) + + /** + * Register a listener to back press. Once registered, you must + * call the callback with `true` if you can go back, `false` if that + * should be ignored. + */ + fun interceptBackPress( + isEnabledFlow: Flow, + callback: ((Boolean) -> Unit) -> Unit, + ) + + // + // Helpers + // + + fun Flow.shareInScreenScope( + started: SharingStarted = SharingStarted.WhileSubscribed(1000), + replay: Int = 1, + ) = this + .shareIn( + scope = screenScope, + started = started, + replay = replay, + ) +} + +fun RememberStateFlowScope.navigatePopSelf() { + val intent = NavigationIntent.PopById(screenId, exclusive = false) + navigate(intent) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl.kt new file mode 100644 index 00000000..010c07f7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeImpl.kt @@ -0,0 +1,291 @@ +package com.artemchep.keyguard.feature.navigation.state + +import androidx.compose.material3.ColorScheme +import androidx.compose.runtime.MutableState +import androidx.compose.runtime.State +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.snapshotFlow +import arrow.core.partially1 +import com.artemchep.keyguard.common.model.ToastMessage +import com.artemchep.keyguard.common.usecase.GetScreenState +import com.artemchep.keyguard.common.usecase.PutScreenState +import com.artemchep.keyguard.common.usecase.ShowMessage +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.feature.loading.LoadingTask +import com.artemchep.keyguard.feature.loading.getErrorReadableMessage +import com.artemchep.keyguard.feature.localization.textResource +import com.artemchep.keyguard.feature.navigation.NavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.platform.LeBundle +import com.artemchep.keyguard.platform.LeContext +import com.artemchep.keyguard.platform.contains +import com.artemchep.keyguard.platform.get +import com.artemchep.keyguard.platform.leBundleOf +import dev.icerock.moko.resources.StringResource +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Job +import kotlinx.coroutines.cancel +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.plus +import kotlinx.serialization.json.Json + +class RememberStateFlowScopeImpl( + private val key: String, + private val bundle: LeBundle, + private val showMessage: ShowMessage, + private val getScreenState: GetScreenState, + private val putScreenState: PutScreenState, + private val windowCoroutineScope: WindowCoroutineScope, + private val navigationController: NavigationController, + private val json: Json, + private val scope: CoroutineScope, + private val screen: String, + private val colorSchemeState: State, + override val screenName: String, + override val context: LeContext, +) : RememberStateFlowScope, CoroutineScope by scope { + private val registry = mutableMapOf>() + + override val colorScheme get() = colorSchemeState.value + + private data class Entry( + val sink: MutableStateFlow, + val serialize: (T) -> S, + val deserialize: (S) -> T, + val composeState: ComposeState, + ) { + class ComposeState( + scope: CoroutineScope, + sink: MutableStateFlow, + ) { + private val collectScope by lazy { + scope + Job() + } + + val mutableState by lazy { + val state = mutableStateOf(sink.value) + // Send back the data from a source of truth to the + // property's sink. + snapshotFlow { state.value } + .onEach { text -> + sink.value = text + } + .launchIn(collectScope) + return@lazy state + } + + fun dispose() { + collectScope.cancel() + } + } + } + + override val appScope: CoroutineScope + get() = windowCoroutineScope + + override val screenScope: CoroutineScope + get() = scope + + override val screenId: String + get() = screen + + private fun getBundleKey(key: String) = "${this.key}:$key" + + override fun navigate( + intent: NavigationIntent, + ) { + navigationController.queue(intent) + } + + override fun message( + message: ToastMessage, + ) { + showMessage.copy( + value = message, + target = key, + ) + } + + override fun message( + exception: Throwable, + ) { + val title = getErrorReadableMessage(exception, this) + val message = ToastMessage( + type = ToastMessage.Type.ERROR, + title = title, + ) + message(message) + } + + override fun translate(res: StringResource): String = + textResource(res, context) + + override fun translate(res: StringResource, vararg args: Any): String = + textResource(res, context, *args) + + override fun screenExecutor(): LoadingTask { + val executor = LoadingTask(this, appScope) + executor + .errorFlow + .onEach { message -> + val model = ToastMessage( + title = message, + type = ToastMessage.Type.ERROR, + ) + message(model) + } + .launchIn(screenScope) + return executor + } + + override fun interceptExit( + isEnabledFlow: Flow, + callback: ((Boolean) -> Unit) -> Unit, + ) { + } + + override fun interceptBackPress( + isEnabledFlow: Flow, + callback: ((Boolean) -> Unit) -> Unit, + ) { + } + + override suspend fun loadDiskHandle( + key: String, + global: Boolean, + ): DiskHandle = kotlin.run { + val diskHandleKey = if (global) { + "$key@*" + } else { + "$key@$screenName" + } + DiskHandleImpl + .read( + scope = screenScope, + getScreenState = getScreenState, + putScreenState = putScreenState, + key = diskHandleKey, + ) + } + + override fun mutablePersistedFlow( + key: String, + storage: PersistedStorage, + initialValue: () -> T, + ): MutableStateFlow = mutablePersistedFlow( + key = key, + storage = storage, + serialize = { _, value -> value }, + deserialize = { _, value -> value }, + initialValue = initialValue, + ) + + override fun mutablePersistedFlow( + key: String, + storage: PersistedStorage, + serialize: (Json, T) -> S, + deserialize: (Json, S) -> T, + initialValue: () -> T, + ): MutableStateFlow = synchronized(this) { + registry.getOrPut(key) { + val value = kotlin.run { + val bundleKey = getBundleKey(key) + if (bundle.contains(bundleKey)) { + // Obtain the persisted value from the bundle. We can not guarantee + // the type, so we yolo it. + val serializedValue = bundle[bundleKey] + try { + val v = serializedValue as S + return@run deserialize(json, v) + } catch (e: Exception) { + // Fall down. + e.printStackTrace() + } + } + + if ( + storage is PersistedStorage.InDisk && + storage.disk.restoredState.containsKey(key) + ) { + try { + val v = storage.disk.restoredState[key] as S + return@run deserialize(json, v) + } catch (e: Exception) { + // Fall down. + e.printStackTrace() + } + } + + initialValue() + } + + val sink = MutableStateFlow(value) + val entry = Entry( + sink = sink, + serialize = serialize.partially1(json), + deserialize = deserialize.partially1(json), + composeState = Entry.ComposeState( + scope = screenScope, + sink = sink, + ), + ) as Entry + // Remember all the updates of the flow in the + // persisted storage. + if (storage is PersistedStorage.InDisk) { + val flow = entry + .sink + .map { + serialize(json, it as T) + } + storage.disk.link(key, flow) + } + entry + }.sink as MutableStateFlow + } + + override fun asComposeState(key: String) = synchronized(this) { + registry[key]!!.composeState.mutableState as MutableState + } + + override fun clearPersistedFlow(key: String) { + val entry = synchronized(this) { + registry.remove(key) + } + @Suppress("IfThenToSafeAccess") + if (entry != null) { + entry.composeState.dispose() + } + } + + override fun mutableComposeState(sink: MutableStateFlow): MutableState { + val state = mutableStateOf(sink.value) + // Send back the data from a source of truth to the + // screen's storage. + snapshotFlow { state.value } + .onEach { text -> + sink.value = text + } + .launchIn(screenScope) + return state + } + + override fun persistedState(): LeBundle { + val state = synchronized(this) { + registry + .map { (key, entry) -> + val fullKey = getBundleKey(key) + val serializableValue = kotlin.run { + val rawValue = entry.sink.value + entry.serialize(rawValue) + } + fullKey to serializableValue + } + .toTypedArray() + } + return leBundleOf(*state) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeSub.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeSub.kt new file mode 100644 index 00000000..c020f152 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/navigation/state/RememberStateFlowScopeSub.kt @@ -0,0 +1,36 @@ +package com.artemchep.keyguard.feature.navigation.state + +import androidx.compose.runtime.MutableState +import com.artemchep.keyguard.platform.LeBundle +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.serialization.json.Json + +interface RememberStateFlowScopeSub { + suspend fun loadDiskHandle(key: String, global: Boolean = false): DiskHandle + + fun mutablePersistedFlow( + key: String, + storage: PersistedStorage = PersistedStorage.InMemory, + initialValue: () -> T, + ): MutableStateFlow + + fun mutablePersistedFlow( + key: String, + storage: PersistedStorage = PersistedStorage.InMemory, + serialize: (Json, T) -> S, + deserialize: (Json, S) -> T, + initialValue: () -> T, + ): MutableStateFlow + + fun asComposeState( + key: String, + ): MutableState + + fun clearPersistedFlow(key: String) + + fun mutableComposeState( + sink: MutableStateFlow, + ): MutableState + + fun persistedState(): LeBundle +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/notifications/NotificationsBanner.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/notifications/NotificationsBanner.kt new file mode 100644 index 00000000..bb3a91f7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/notifications/NotificationsBanner.kt @@ -0,0 +1,142 @@ +// package com.artemchep.keyguard.feature.notifications +// +// import android.Manifest +// import android.os.Build +// import androidx.compose.foundation.background +// import androidx.compose.foundation.clickable +// import androidx.compose.foundation.layout.Column +// import androidx.compose.foundation.layout.Row +// import androidx.compose.foundation.layout.Spacer +// import androidx.compose.foundation.layout.fillMaxWidth +// import androidx.compose.foundation.layout.padding +// import androidx.compose.foundation.layout.width +// import androidx.compose.material.icons.Icons +// import androidx.compose.material.icons.outlined.NotificationsOff +// import androidx.compose.material3.Icon +// import androidx.compose.material3.LocalContentColor +// import androidx.compose.material3.MaterialTheme +// import androidx.compose.material3.Surface +// import androidx.compose.material3.Text +// import androidx.compose.runtime.Composable +// import androidx.compose.runtime.State +// import androidx.compose.runtime.derivedStateOf +// import androidx.compose.runtime.mutableStateOf +// import androidx.compose.runtime.remember +// import androidx.compose.ui.Alignment +// import androidx.compose.ui.Modifier +// import androidx.compose.ui.unit.dp +// import com.artemchep.keyguard.feature.home.security.watchtowerWarningColor +// import com.artemchep.keyguard.ui.ChevronIcon +// import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +// import com.artemchep.keyguard.ui.MediumEmphasisAlpha +// import com.artemchep.keyguard.ui.theme.Dimens +// import com.artemchep.keyguard.ui.theme.combineAlpha +// import com.artemchep.keyguard.ui.util.HorizontalDivider +// import com.google.accompanist.permissions.ExperimentalPermissionsApi +// import com.google.accompanist.permissions.PermissionStatus +// import com.google.accompanist.permissions.rememberPermissionState +// +// @OptIn(ExperimentalPermissionsApi::class) +// @Composable +// fun NotificationsBanner( +// modifier: Modifier = Modifier, +// contentModifier: Modifier = Modifier, +// ) { +// if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) { +// return +// } +// +// val state = rememberPermissionState(Manifest.permission.POST_NOTIFICATIONS) +// val visible = state.status !is PermissionStatus.Granted +// ExpandedIfNotEmpty( +// modifier = modifier, +// valueOrNull = Unit.takeIf { visible }, +// ) { +// NotificationsBanner( +// contentModifier = contentModifier, +// onClick = { +// state.launchPermissionRequest() +// }, +// ) +// } +// } +// +// @OptIn(ExperimentalPermissionsApi::class) +// @Composable +// fun rememberNotificationsBannerState(): State { +// if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) { +// return remember { +// mutableStateOf(false) +// } +// } +// +// val permissionState = rememberPermissionState(Manifest.permission.POST_NOTIFICATIONS) +// val bannerState = remember(permissionState) { +// derivedStateOf { +// permissionState.status !is PermissionStatus.Granted +// } +// } +// return bannerState +// } +// +// @Composable +// private fun NotificationsBanner( +// modifier: Modifier = Modifier, +// contentModifier: Modifier = Modifier, +// onClick: () -> Unit, +// ) { +// Surface( +// modifier = modifier, +// tonalElevation = 3.dp, +// ) { +// Column { +// val warningColor = watchtowerWarningColor() +// val backgroundColor = warningColor +// .copy(alpha = 0.13f) +// Row( +// modifier = Modifier +// .fillMaxWidth() +// .background(backgroundColor) +// .clickable { +// onClick() +// } +// .then(contentModifier) +// .padding( +// vertical = 8.dp, +// horizontal = Dimens.horizontalPadding, +// ), +// verticalAlignment = Alignment.CenterVertically, +// ) { +// Icon( +// imageVector = Icons.Outlined.NotificationsOff, +// contentDescription = null, +// ) +// Spacer( +// modifier = Modifier +// .width(Dimens.horizontalPadding), +// ) +// Column( +// modifier = Modifier +// .weight(1f), +// ) { +// Text( +// text = "Notifications are disabled", +// style = MaterialTheme.typography.titleMedium, +// ) +// Text( +// text = "Grant the notification permission to allow Keyguard to show one-time passwords when autofilling & more.", +// style = MaterialTheme.typography.bodySmall, +// color = LocalContentColor.current +// .combineAlpha(MediumEmphasisAlpha), +// ) +// } +// Spacer( +// modifier = Modifier +// .width(Dimens.horizontalPadding), +// ) +// ChevronIcon() +// } +// HorizontalDivider() +// } +// } +// } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/onboarding/OnboardingBanner.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/onboarding/OnboardingBanner.kt new file mode 100644 index 00000000..fd857d26 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/onboarding/OnboardingBanner.kt @@ -0,0 +1,146 @@ +// package com.artemchep.keyguard.feature.onboarding +// +// import androidx.compose.foundation.background +// import androidx.compose.foundation.clickable +// import androidx.compose.foundation.layout.Column +// import androidx.compose.foundation.layout.Row +// import androidx.compose.foundation.layout.Spacer +// import androidx.compose.foundation.layout.fillMaxWidth +// import androidx.compose.foundation.layout.padding +// import androidx.compose.foundation.layout.width +// import androidx.compose.material.icons.Icons +// import androidx.compose.material.icons.outlined.Info +// import androidx.compose.material.icons.outlined.NotificationsOff +// import androidx.compose.material3.Icon +// import androidx.compose.material3.LocalContentColor +// import androidx.compose.material3.MaterialTheme +// import androidx.compose.material3.Surface +// import androidx.compose.material3.Text +// import androidx.compose.runtime.Composable +// import androidx.compose.runtime.State +// import androidx.compose.runtime.collectAsState +// import androidx.compose.runtime.derivedStateOf +// import androidx.compose.runtime.getValue +// import androidx.compose.runtime.mutableStateOf +// import androidx.compose.runtime.remember +// import androidx.compose.runtime.rememberUpdatedState +// import androidx.compose.ui.Alignment +// import androidx.compose.ui.Modifier +// import androidx.compose.ui.unit.dp +// import com.artemchep.keyguard.common.usecase.GetOnboardingLastVisitInstant +// import com.artemchep.keyguard.feature.home.security.watchtowerInfoColor +// import com.artemchep.keyguard.feature.home.security.watchtowerWarningColor +// import com.artemchep.keyguard.feature.navigation.LocalNavigationController +// import com.artemchep.keyguard.feature.navigation.NavigationIntent +// import com.artemchep.keyguard.ui.ChevronIcon +// import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +// import com.artemchep.keyguard.ui.MediumEmphasisAlpha +// import com.artemchep.keyguard.ui.theme.Dimens +// import com.artemchep.keyguard.ui.theme.combineAlpha +// import com.artemchep.keyguard.ui.util.HorizontalDivider +// import com.google.accompanist.permissions.ExperimentalPermissionsApi +// import com.google.accompanist.permissions.PermissionStatus +// import com.google.accompanist.permissions.rememberPermissionState +// import kotlinx.coroutines.flow.map +// import org.kodein.di.compose.rememberInstance +// +// @OptIn(ExperimentalPermissionsApi::class) +// @Composable +// fun OnboardingBanner( +// modifier: Modifier = Modifier, +// contentModifier: Modifier = Modifier, +// ) { +// val getInstant by rememberInstance() +// val visible = remember(getInstant) { +// getInstant() +// .map { it == null } +// }.collectAsState(initial = false) +// +// val navigationController by rememberUpdatedState(LocalNavigationController.current) +// ExpandedIfNotEmpty( +// modifier = modifier, +// valueOrNull = Unit.takeIf { visible.value }, +// ) { +// OnboardingBanner( +// contentModifier = contentModifier, +// onClick = { +// val intent = NavigationIntent.NavigateToRoute( +// route = OnboardingRoute, +// ) +// navigationController.queue(intent) +// }, +// ) +// } +// } +// +// @Composable +// fun rememberOnboardingBannerState(): State { +// val getInstant by rememberInstance() +// val bannerState = remember(getInstant) { +// getInstant() +// .map { it == null } +// }.collectAsState(initial = false) +// return bannerState +// } +// +// @Composable +// fun OnboardingBanner( +// modifier: Modifier = Modifier, +// contentModifier: Modifier = Modifier, +// onClick: () -> Unit, +// ) { +// Surface( +// modifier = modifier, +// tonalElevation = 3.dp, +// ) { +// Column { +// val warningColor = watchtowerInfoColor() +// val backgroundColor = warningColor +// .copy(alpha = 0.13f) +// Row( +// modifier = Modifier +// .fillMaxWidth() +// .background(backgroundColor) +// .clickable { +// onClick() +// } +// .then(contentModifier) +// .padding( +// vertical = 8.dp, +// horizontal = Dimens.horizontalPadding, +// ), +// verticalAlignment = Alignment.CenterVertically, +// ) { +// Icon( +// imageVector = Icons.Outlined.Info, +// contentDescription = null, +// ) +// Spacer( +// modifier = Modifier +// .width(Dimens.horizontalPadding), +// ) +// Column( +// modifier = Modifier +// .weight(1f), +// ) { +// Text( +// text = "Learn more about app's features", +// style = MaterialTheme.typography.titleMedium, +// ) +// // Text( +// // text = "Grant the notification permission to allow Keyguard to show one-time passwords when autofilling & more.", +// // style = MaterialTheme.typography.bodySmall, +// // color = LocalContentColor.current +// // .combineAlpha(MediumEmphasisAlpha), +// // ) +// } +// Spacer( +// modifier = Modifier +// .width(Dimens.horizontalPadding), +// ) +// ChevronIcon() +// } +// HorizontalDivider() +// } +// } +// } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/onboarding/OnboardingItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/onboarding/OnboardingItem.kt new file mode 100644 index 00000000..a95c984e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/onboarding/OnboardingItem.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.onboarding + +import androidx.compose.ui.graphics.vector.ImageVector +import dev.icerock.moko.resources.StringResource + +data class OnboardingItem( + val title: StringResource, + val text: StringResource, + val premium: Boolean = false, + val icon: ImageVector? = null, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/onboarding/OnboardingRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/onboarding/OnboardingRoute.kt new file mode 100644 index 00000000..f830c77c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/onboarding/OnboardingRoute.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.onboarding + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.Route + +object OnboardingRoute : Route { + @Composable + override fun Content() { + OnboardingScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/onboarding/OnboardingScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/onboarding/OnboardingScreen.kt new file mode 100644 index 00000000..bb612738 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/onboarding/OnboardingScreen.kt @@ -0,0 +1,399 @@ +@file:OptIn(ExperimentalMaterial3Api::class) + +package com.artemchep.keyguard.feature.onboarding + +import androidx.compose.foundation.BorderStroke +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.widthIn +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.AccountBox +import androidx.compose.material.icons.outlined.CopyAll +import androidx.compose.material.icons.outlined.DataArray +import androidx.compose.material.icons.outlined.FilterAlt +import androidx.compose.material.icons.outlined.OfflineBolt +import androidx.compose.material.icons.outlined.Password +import androidx.compose.material.icons.outlined.QrCode +import androidx.compose.material.icons.outlined.Recycling +import androidx.compose.material.icons.outlined.Search +import androidx.compose.material.icons.outlined.SelectAll +import androidx.compose.material.icons.outlined.ShortText +import androidx.compose.material.icons.outlined.Sync +import androidx.compose.material.icons.outlined.Timer +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.alpha +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.text.style.Hyphens +import androidx.compose.ui.text.style.LineBreak +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.PutOnboardingLastVisitInstant +import com.artemchep.keyguard.feature.home.vault.component.Section +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.ScaffoldColumn +import com.artemchep.keyguard.ui.grid.SimpleGridLayout +import com.artemchep.keyguard.ui.icons.KeyguardPremium +import com.artemchep.keyguard.ui.icons.KeyguardTwoFa +import com.artemchep.keyguard.ui.icons.KeyguardWebsite +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.theme.horizontalPaddingHalf +import com.artemchep.keyguard.ui.toolbar.LargeToolbar +import com.artemchep.keyguard.ui.util.DividerColor +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.GlobalScope +import kotlinx.datetime.Clock +import org.kodein.di.compose.rememberInstance + +val onboardingItemsPremium = listOf( + OnboardingItem( + title = Res.strings.feat_item_multiple_accounts_title, + text = Res.strings.feat_item_multiple_accounts_text, + premium = true, + icon = Icons.Outlined.AccountBox, + ), + OnboardingItem( + title = Res.strings.feat_item_two_way_sync_title, + text = Res.strings.feat_item_two_way_sync_text, + premium = true, + icon = Icons.Outlined.Sync, + ), + OnboardingItem( + title = Res.strings.feat_item_offline_editing_title, + text = Res.strings.feat_item_offline_editing_text, + premium = true, + icon = Icons.Outlined.OfflineBolt, + ), +) + +val onboardingItemsSearch = listOf( + OnboardingItem( + title = Res.strings.feat_item_search_by_anything_title, + text = Res.strings.feat_item_search_by_anything_text, + icon = Icons.Outlined.Search, + ), + OnboardingItem( + title = Res.strings.feat_item_filter_title, + text = Res.strings.feat_item_filter_text, + icon = Icons.Outlined.FilterAlt, + ), + OnboardingItem( + title = Res.strings.feat_item_multiple_keywords_title, + text = Res.strings.feat_item_multiple_keywords_text, + ), +) + +val onboardingItemsWatchtower = listOf( + OnboardingItem( + title = Res.strings.feat_item_pwned_passwords_title, + text = Res.strings.feat_item_pwned_passwords_text, + icon = Icons.Outlined.DataArray, + ), + OnboardingItem( + title = Res.strings.feat_item_password_strength_title, + text = Res.strings.feat_item_password_strength_text, + icon = Icons.Outlined.Password, + ), + OnboardingItem( + title = Res.strings.feat_item_reused_passwords_title, + text = Res.strings.feat_item_reused_passwords_text, + icon = Icons.Outlined.Recycling, + ), + OnboardingItem( + title = Res.strings.feat_item_inactive_totp_title, + text = Res.strings.feat_item_inactive_totp_text, + icon = Icons.Outlined.KeyguardTwoFa, + ), + OnboardingItem( + title = Res.strings.feat_item_unsecure_websites_title, + text = Res.strings.feat_item_unsecure_websites_text, + icon = Icons.Outlined.KeyguardWebsite, + ), + OnboardingItem( + title = Res.strings.feat_item_incomplete_items_title, + text = Res.strings.feat_item_incomplete_items_text, + icon = Icons.Outlined.ShortText, + ), + OnboardingItem( + title = Res.strings.feat_item_expiring_items_title, + text = Res.strings.feat_item_expiring_items_text, + icon = Icons.Outlined.Timer, + ), + OnboardingItem( + title = Res.strings.feat_item_duplicate_items_title, + text = Res.strings.feat_item_duplicate_items_text, + icon = Icons.Outlined.CopyAll, + ), +) + +val onboardingItemsOther = listOf( + OnboardingItem( + title = Res.strings.feat_item_multi_selection_title, + text = Res.strings.feat_item_multi_selection_text, + icon = Icons.Outlined.SelectAll, + ), + OnboardingItem( + title = Res.strings.feat_item_show_barcode_title, + text = Res.strings.feat_item_show_barcode_text, + icon = Icons.Outlined.QrCode, + ), + OnboardingItem( + title = Res.strings.feat_item_generator_title, + text = Res.strings.feat_item_generator_text, + ), +) + +@Composable +fun OnboardingScreen() { + val putInstant by rememberInstance() + LaunchedEffect(putInstant) { + putInstant(Clock.System.now()) + .attempt() + .launchIn(GlobalScope) + } + + val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + ScaffoldColumn( + modifier = Modifier + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + LargeToolbar( + title = { + Text(stringResource(Res.strings.feat_header_title)) + }, + navigationIcon = { + NavigationIcon() + }, + scrollBehavior = scrollBehavior, + ) + }, + ) { + OnboardingScreenContent() + } +} + +@Composable +private fun ColumnScope.OnboardingScreenContent() { + OnboardingContainer( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = Dimens.horizontalPaddingHalf), + items = onboardingItemsPremium, + ) + Section( + text = stringResource(Res.strings.feat_section_search_title), + ) + OnboardingContainer( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = Dimens.horizontalPaddingHalf), + items = onboardingItemsSearch, + ) + Section( + text = stringResource(Res.strings.feat_section_watchtower_title), + ) + OnboardingContainer( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = Dimens.horizontalPaddingHalf), + items = onboardingItemsWatchtower, + ) + Section( + text = stringResource(Res.strings.feat_section_misc_title), + ) + OnboardingContainer( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = Dimens.horizontalPaddingHalf), + items = onboardingItemsOther, + ) +} + +@Composable +private fun OnboardingContainer( + modifier: Modifier = Modifier, + items: List, +) { + SimpleGridLayout( + modifier = modifier, + ) { + items.forEach { item -> + OnboardingCard( + modifier = Modifier, + title = stringResource(item.title), + text = stringResource(item.text), + premium = item.premium, + imageVector = item.icon, + ) + } + } +} + +@Composable +fun OnboardingCard( + modifier: Modifier = Modifier, + title: String, + text: String? = null, + premium: Boolean = false, + imageVector: ImageVector? = null, +) { + Surface( + modifier = modifier, + shape = MaterialTheme.shapes.medium, + tonalElevation = 0.dp, + ) { + Box( + modifier = Modifier, + contentAlignment = Alignment.TopEnd, + ) { + if (imageVector != null) { + Icon( + imageVector, + modifier = Modifier + .padding(8.dp) + .size(72.dp) + .alpha(0.035f) + .align(Alignment.TopEnd), + contentDescription = null, + ) + } + Column( + modifier = Modifier + .padding(8.dp) + .fillMaxWidth(), + verticalArrangement = Arrangement.spacedBy(8.dp), + ) { + Text( + text = title, + style = MaterialTheme.typography.titleMedium + .copy( + hyphens = Hyphens.Auto, + lineBreak = LineBreak.Heading, + ), + maxLines = 3, + overflow = TextOverflow.Ellipsis, + ) + ExpandedIfNotEmpty(valueOrNull = text) { + Text( + text = it, + style = MaterialTheme.typography.bodyMedium + .copy( + hyphens = Hyphens.Auto, + lineBreak = LineBreak.Paragraph, + ), + maxLines = 6, + overflow = TextOverflow.Ellipsis, + ) + } + ExpandedIfNotEmpty( + valueOrNull = Unit.takeIf { premium }, + ) { + Row( + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.spacedBy(8.dp), + ) { + Icon( + modifier = Modifier + .size(12.dp), + imageVector = Icons.Outlined.KeyguardPremium, + contentDescription = null, + tint = MaterialTheme.colorScheme.primary, + ) + Text( + text = stringResource(Res.strings.feat_keyguard_premium_label), + color = MaterialTheme.colorScheme.primary, + style = MaterialTheme.typography.labelSmall, + ) + } + } + } + } + } +} + +@Composable +fun SmallOnboardingCard( + modifier: Modifier = Modifier, + title: String, + text: String? = null, + imageVector: ImageVector? = null, +) { + Surface( + modifier = modifier, + shape = MaterialTheme.shapes.medium, + tonalElevation = 0.dp, + border = BorderStroke(Dp.Hairline, DividerColor), + ) { + Box( + modifier = Modifier, + contentAlignment = Alignment.TopEnd, + ) { + if (imageVector != null) { + Icon( + imageVector, + modifier = Modifier + .padding(8.dp) + .size(72.dp) + .alpha(0.035f) + .align(Alignment.TopEnd), + contentDescription = null, + ) + } + Column( + modifier = Modifier + .padding(8.dp) + .widthIn(max = 128.dp), + verticalArrangement = Arrangement.spacedBy(8.dp), + ) { + Text( + text = title, + style = MaterialTheme.typography.titleSmall + .copy( + hyphens = Hyphens.Auto, + lineBreak = LineBreak.Heading, + ), + maxLines = 2, + overflow = TextOverflow.Ellipsis, + ) + ExpandedIfNotEmpty(valueOrNull = text) { + Text( + text = it, + style = MaterialTheme.typography.bodySmall + .copy( + hyphens = Hyphens.Auto, + lineBreak = LineBreak.Paragraph, + ), + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + maxLines = 4, + overflow = TextOverflow.Ellipsis, + ) + } + } + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/PasskeysCredentialViewRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/PasskeysCredentialViewRoute.kt new file mode 100644 index 00000000..1b510edb --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/PasskeysCredentialViewRoute.kt @@ -0,0 +1,22 @@ +package com.artemchep.keyguard.feature.passkeys + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.feature.navigation.DialogRoute + +data class PasskeysCredentialViewRoute( + val args: Args, +) : DialogRoute { + data class Args( + val cipherId: String, + val credentialId: String, + val model: DSecret.Login.Fido2Credentials, + ) + + @Composable + override fun Content() { + PasskeysCredentialViewScreen( + args = args, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/PasskeysCredentialViewScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/PasskeysCredentialViewScreen.kt new file mode 100644 index 00000000..30e3a1a9 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/PasskeysCredentialViewScreen.kt @@ -0,0 +1,384 @@ +package com.artemchep.keyguard.feature.passkeys + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.AccountCircle +import androidx.compose.material.icons.outlined.AlternateEmail +import androidx.compose.material.icons.outlined.Business +import androidx.compose.material.icons.outlined.Info +import androidx.compose.material.icons.outlined.Key +import androidx.compose.material.icons.outlined.Public +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.LocalAppMode +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.getOrNull +import com.artemchep.keyguard.feature.dialog.Dialog +import com.artemchep.keyguard.feature.home.vault.component.FlatItemTextContent2 +import com.artemchep.keyguard.feature.home.vault.component.Section +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.FlatItemLayout +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.icons.IconBox +import com.artemchep.keyguard.ui.icons.KeyguardView +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.skeleton.SkeletonItem +import com.artemchep.keyguard.ui.skeleton.SkeletonSection +import com.artemchep.keyguard.ui.skeleton.SkeletonText +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun PasskeysCredentialViewScreen( + args: PasskeysCredentialViewRoute.Args, +) { + val loadableState = producePasskeysCredentialViewState( + args = args, + mode = LocalAppMode.current, + ) + PasskeysCredentialViewScreen( + loadableState = loadableState, + ) +} + +@OptIn(ExperimentalLayoutApi::class) +@Composable +fun PasskeysCredentialViewScreen( + loadableState: Loadable, +) { + Dialog( + icon = icon(Icons.Outlined.Key), + title = { + Text( + text = stringResource(Res.strings.passkey), + ) + }, + content = { + Column { + when (loadableState) { + is Loadable.Ok -> { + loadableState.value.content.fold( + ifLeft = { + ContentError( + exception = it, + ) + }, + ifRight = { + ContentOk( + state = it, + ) + }, + ) + } + + is Loadable.Loading -> { + ContentSkeleton() + } + } + } + }, + contentScrollable = true, + actions = { + val updatedOnClose by rememberUpdatedState(loadableState.getOrNull()?.onClose) + TextButton( + enabled = updatedOnClose != null, + onClick = { + updatedOnClose?.invoke() + }, + ) { + Text(stringResource(Res.strings.close)) + } + val onUse = loadableState.getOrNull()?.content?.getOrNull()?.onUse + if (onUse != null) { + val updatedOnUse by rememberUpdatedState(onUse) + TextButton( + onClick = { + updatedOnUse.invoke() + }, + ) { + Text(stringResource(Res.strings.passkey_use_short)) + } + } + }, + ) +} + +@Composable +private fun ColumnScope.ContentOk( + state: PasskeysCredentialViewState.Content, +) { + val navigationController by rememberUpdatedState(LocalNavigationController.current) + FlatItemLayout( + leading = { + Icon( + imageVector = Icons.Outlined.AccountCircle, + contentDescription = null, + ) + }, + content = { + FlatItemTextContent2( + title = { + Text( + text = stringResource(Res.strings.passkey_user_display_name), + ) + }, + text = { + val userDisplayName = state.model.userDisplayName + Text( + text = userDisplayName + ?: stringResource(Res.strings.empty_value), + color = if (userDisplayName != null) { + LocalContentColor.current + } else { + LocalContentColor.current + .combineAlpha(DisabledEmphasisAlpha) + }, + ) + }, + ) + }, + enabled = true, + ) + FlatItemLayout( + leading = { + Icon( + imageVector = Icons.Outlined.AlternateEmail, + contentDescription = null, + ) + }, + content = { + FlatItemTextContent2( + title = { + Text( + text = stringResource(Res.strings.passkey_user_username), + ) + }, + text = { + val userName = state.model.userName + Text( + text = userName + ?: stringResource(Res.strings.empty_value), + color = if (userName != null) { + LocalContentColor.current + } else { + LocalContentColor.current + .combineAlpha(DisabledEmphasisAlpha) + }, + ) + }, + ) + }, + enabled = true, + ) + Section( + text = stringResource(Res.strings.info), + ) + FlatItemLayout( + leading = { + IconBox(Icons.Outlined.Business) + }, + content = { + FlatItemTextContent2( + title = { + Text( + text = stringResource(Res.strings.passkey_relying_party), + ) + }, + text = { + val rpName = state.model.rpName + val rpId = state.model.rpId + Column { + Text( + text = rpName, + ) + Text( + text = rpId, + fontFamily = FontFamily.Monospace, + style = MaterialTheme.typography.bodyMedium, + ) + } + }, + ) + }, + trailing = { + IconButton( + onClick = { + val url = "https://www.w3.org/TR/webauthn-2/#relying-party" + val intent = NavigationIntent.NavigateToBrowser(url) + navigationController.queue(intent) + }, + ) { + Icon(Icons.Outlined.Info, null) + } + }, + enabled = true, + ) + FlatItemLayout( + leading = { + IconBox(Icons.Outlined.KeyguardView) + }, + content = { + FlatItemTextContent2( + title = { + Text( + text = stringResource(Res.strings.passkey_signature_counter), + ) + }, + text = { + val counter = state.model.counter?.toString() + Text( + text = counter + ?: stringResource(Res.strings.empty_value), + color = if (counter != null) { + LocalContentColor.current + } else { + LocalContentColor.current + .combineAlpha(DisabledEmphasisAlpha) + }, + ) + }, + ) + }, + trailing = { + IconButton( + onClick = { + val url = "https://www.w3.org/TR/webauthn-2/#signature-counter" + val intent = NavigationIntent.NavigateToBrowser(url) + navigationController.queue(intent) + }, + ) { + Icon(Icons.Outlined.Info, null) + } + }, + enabled = true, + ) + FlatItemLayout( + leading = { + IconBox(Icons.Outlined.Public) + }, + content = { + FlatItemTextContent2( + title = { + Text( + text = stringResource(Res.strings.passkey_discoverable), + ) + }, + text = { + val discoverable = state.model.discoverable + .let { discoverable -> + if (discoverable) { + stringResource(Res.strings.yes) + } else stringResource(Res.strings.no) + } + Text( + text = discoverable, + ) + }, + ) + }, + trailing = { + IconButton( + onClick = { + val url = "https://www.w3.org/TR/webauthn-2/#discoverable-credential" + val intent = NavigationIntent.NavigateToBrowser(url) + navigationController.queue(intent) + }, + ) { + Icon(Icons.Outlined.Info, null) + } + }, + enabled = true, + ) + Row( + modifier = Modifier + .fillMaxWidth() + .padding( + start = Dimens.horizontalPadding, + end = Dimens.horizontalPadding, + top = 16.dp, + ), + horizontalArrangement = Arrangement.Center, + ) { + Text( + text = state.createdAt, + textAlign = TextAlign.Center, + style = MaterialTheme.typography.labelMedium, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + ) + } +} + +@Composable +private fun ColumnScope.ContentError( + exception: Throwable, +) { + val message = exception.localizedMessage + ?: exception.message + ?: "Something went wrong" + Text( + modifier = Modifier + .padding(horizontal = 16.dp) + .align(Alignment.CenterHorizontally), + text = message, + textAlign = TextAlign.Center, + style = MaterialTheme.typography.labelMedium, + color = MaterialTheme.colorScheme.error, + ) +} + +@Composable +private fun ColumnScope.ContentSkeleton( +) { + SkeletonItem( + titleWidthFraction = 0.6f, + textWidthFraction = null, + ) + SkeletonSection() + SkeletonItem( + titleWidthFraction = 0.45f, + textWidthFraction = 0.3f, + ) + SkeletonItem( + titleWidthFraction = 0.5f, + textWidthFraction = 0.4f, + ) + Row( + modifier = Modifier + .fillMaxWidth() + .padding( + start = Dimens.horizontalPadding, + end = Dimens.horizontalPadding, + top = 16.dp, + ), + horizontalArrangement = Arrangement.Center, + ) { + SkeletonText( + modifier = Modifier + .fillMaxWidth(0.8f), + style = MaterialTheme.typography.labelMedium, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/PasskeysCredentialViewState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/PasskeysCredentialViewState.kt new file mode 100644 index 00000000..af6db622 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/PasskeysCredentialViewState.kt @@ -0,0 +1,19 @@ +package com.artemchep.keyguard.feature.passkeys + +import androidx.compose.runtime.Immutable +import arrow.core.Either +import com.artemchep.keyguard.common.model.DSecret + +data class PasskeysCredentialViewState( + val content: Either, + val onClose: (() -> Unit)? = null, +) { + @Immutable + data class Content( + val model: DSecret.Login.Fido2Credentials, + val createdAt: String, + val onUse: (() -> Unit)? = null, + ) { + companion object + } +} \ No newline at end of file diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/PasskeysCredentialViewStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/PasskeysCredentialViewStateProducer.kt new file mode 100644 index 00000000..b08f40c7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/PasskeysCredentialViewStateProducer.kt @@ -0,0 +1,106 @@ +package com.artemchep.keyguard.feature.passkeys + +import androidx.compose.runtime.Composable +import arrow.core.left +import arrow.core.right +import com.artemchep.keyguard.AppMode +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.usecase.DateFormatter +import com.artemchep.keyguard.common.usecase.GetCiphers +import com.artemchep.keyguard.common.usecase.PasskeyTargetCheck +import com.artemchep.keyguard.feature.navigation.state.navigatePopSelf +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.res.Res +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onStart +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +@Composable +fun producePasskeysCredentialViewState( + args: PasskeysCredentialViewRoute.Args, + mode: AppMode, +) = with(localDI().direct) { + producePasskeysCredentialViewState( + args = args, + mode = mode, + getCiphers = instance(), + passkeyTargetCheck = instance(), + dateFormatter = instance(), + ) +} + +@Composable +fun producePasskeysCredentialViewState( + args: PasskeysCredentialViewRoute.Args, + mode: AppMode, + getCiphers: GetCiphers, + passkeyTargetCheck: PasskeyTargetCheck, + dateFormatter: DateFormatter, +): Loadable = produceScreenState( + key = "passkeys_credential_view", + initial = Loadable.Loading, + args = arrayOf(), +) { + val contentFlow = getCiphers() + .map { ciphers -> + val cipherOrNull = ciphers.firstOrNull { it.id == args.cipherId } + val credentialOrNull = cipherOrNull + ?.login + ?.fido2Credentials + ?.firstOrNull { it.credentialId == args.credentialId } + credentialOrNull + } + .onStart { + emit(args.model) + } + .map { credential -> + if (credential == null) { + val e = RuntimeException("Credential does not exist.") + return@map e.left() + } + + // If we are in the pick passkey mode then allow a use to use + // the passkey. + val onUse = if (mode is AppMode.PickPasskey) { + val matches = passkeyTargetCheck(credential, mode.target) + .attempt() + .bind() + .isRight { it } + if (matches) { + // lambda + { + mode.onComplete(credential) + } + } else { + null + } + } else { + null + } + + val createdAt = translate( + Res.strings.vault_view_passkey_created_at_label, + dateFormatter.formatDateTime(credential.creationDate), + ) + val content = PasskeysCredentialViewState.Content( + model = credential, + createdAt = createdAt, + onUse = onUse, + ) + content.right() + } + contentFlow + .map { contentResult -> + val state = PasskeysCredentialViewState( + content = contentResult, + onClose = { + navigatePopSelf() + }, + ) + Loadable.Ok(state) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/directory/PasskeysServiceListRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/directory/PasskeysServiceListRoute.kt new file mode 100644 index 00000000..9bfb06a7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/directory/PasskeysServiceListRoute.kt @@ -0,0 +1,41 @@ +package com.artemchep.keyguard.feature.passkeys.directory + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Folder +import androidx.compose.material.icons.outlined.Key +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.Route +import com.artemchep.keyguard.feature.navigation.state.TranslatorScope +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.icons.iconSmall + +object PasskeysServiceListRoute : Route { + fun passkeysActionOrNull( + translator: TranslatorScope, + navigate: (NavigationIntent) -> Unit, + ) = passkeysAction( + translator = translator, + navigate = navigate, + ) + + fun passkeysAction( + translator: TranslatorScope, + navigate: (NavigationIntent) -> Unit, + ) = FlatItemAction( + leading = iconSmall(Icons.Outlined.Folder, Icons.Outlined.Key), + title = translator.translate(Res.strings.passkeys_directory_title), + text = translator.translate(Res.strings.passkeys_directory_text), + onClick = { + val route = PasskeysServiceListRoute + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + + @Composable + override fun Content() { + PasskeysListScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/directory/PasskeysServiceListScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/directory/PasskeysServiceListScreen.kt new file mode 100644 index 00000000..90cb2a19 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/directory/PasskeysServiceListScreen.kt @@ -0,0 +1,252 @@ +package com.artemchep.keyguard.feature.passkeys.directory + +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyListState +import androidx.compose.foundation.lazy.items +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.OpenInBrowser +import androidx.compose.material.pullrefresh.pullRefresh +import androidx.compose.material.pullrefresh.rememberPullRefreshState +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.IconButton +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.runtime.snapshotFlow +import androidx.compose.ui.Modifier +import androidx.compose.ui.input.nestedscroll.nestedScroll +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.flatMap +import com.artemchep.keyguard.common.model.getOrNull +import com.artemchep.keyguard.feature.EmptySearchView +import com.artemchep.keyguard.feature.ErrorView +import com.artemchep.keyguard.feature.home.vault.component.SearchTextField +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.DefaultProgressBar +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.ScaffoldLazyColumn +import com.artemchep.keyguard.ui.focus.FocusRequester2 +import com.artemchep.keyguard.ui.focus.focusRequester2 +import com.artemchep.keyguard.ui.icons.IconBox +import com.artemchep.keyguard.ui.poweredby.URL_PASSKEYS +import com.artemchep.keyguard.ui.pulltosearch.PullToSearch +import com.artemchep.keyguard.ui.skeleton.SkeletonItem +import com.artemchep.keyguard.ui.toolbar.CustomToolbar +import com.artemchep.keyguard.ui.toolbar.content.CustomToolbarContent +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.filter +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.withIndex + +@Composable +fun PasskeysListScreen( +) { + val loadableState = producePasskeysListState() + PasskeysListScreen( + loadableState = loadableState, + ) +} + +@OptIn(ExperimentalMaterial3Api::class, ExperimentalFoundationApi::class) +@Composable +fun PasskeysListScreen( + loadableState: Loadable, +) { + val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior() + val filterState = run { + val filterFlow = loadableState.getOrNull()?.filter + remember(filterFlow) { + filterFlow ?: MutableStateFlow(null) + }.collectAsState() + } + + val listRevision = + loadableState.getOrNull()?.content?.getOrNull()?.getOrNull()?.revision + val listState = remember { + LazyListState( + firstVisibleItemIndex = 0, + firstVisibleItemScrollOffset = 0, + ) + } + + LaunchedEffect(listRevision) { + // TODO: How do you wait till the layout state start to represent + // the actual data? + val listSize = + loadableState.getOrNull()?.content?.getOrNull()?.getOrNull()?.items?.size + snapshotFlow { listState.layoutInfo.totalItemsCount } + .withIndex() + .filter { + it.index > 0 || it.value == listSize + } + .first() + + listState.scrollToItem(0, 0) + } + + val focusRequester = remember { FocusRequester2() } + // Auto focus the text field + // on launch. + LaunchedEffect( + focusRequester, + filterState, + ) { + snapshotFlow { filterState.value } + .first { it?.query?.onChange != null } + delay(100L) + focusRequester.requestFocus() + } + + val pullRefreshState = rememberPullRefreshState( + refreshing = false, + onRefresh = { + focusRequester.requestFocus() + }, + ) + ScaffoldLazyColumn( + modifier = Modifier + .pullRefresh(pullRefreshState) + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + CustomToolbar( + scrollBehavior = scrollBehavior, + ) { + Column { + CustomToolbarContent( + title = stringResource(Res.strings.passkeys_directory_title), + icon = { + NavigationIcon() + }, + actions = { + val updatedNavigationController by rememberUpdatedState( + LocalNavigationController.current, + ) + IconButton( + onClick = { + val intent = NavigationIntent.NavigateToBrowser(URL_PASSKEYS) + updatedNavigationController.queue(intent) + }, + ) { + IconBox(Icons.Outlined.OpenInBrowser) + } + }, + ) + + val query = filterState.value?.query + val queryText = query?.state?.value.orEmpty() + SearchTextField( + modifier = Modifier + .focusRequester2(focusRequester), + text = queryText, + placeholder = stringResource(Res.strings.passkeys_directory_search_placeholder), + searchIcon = false, + leading = {}, + trailing = {}, + onTextChange = query?.onChange, + onGoClick = null, + ) + } + } + }, + pullRefreshState = pullRefreshState, + overlay = { + val filterRevision = filterState.value?.revision + DefaultProgressBar( + visible = listRevision != null && filterRevision != null && + listRevision != filterRevision, + ) + + PullToSearch( + modifier = Modifier + .padding(contentPadding.value), + pullRefreshState = pullRefreshState, + ) + }, + listState = listState, + ) { + val contentState = loadableState + .flatMap { it.content } + when (contentState) { + is Loadable.Loading -> { + for (i in 1..3) { + item("skeleton.$i") { + SkeletonItem() + } + } + } + + is Loadable.Ok -> { + contentState.value.fold( + ifLeft = { e -> + item("error") { + ErrorView( + text = { + Text(text = "Failed to load app list!") + }, + exception = e, + ) + } + }, + ifRight = { content -> + val items = content.items + if (items.isEmpty()) { + item("empty") { + NoItemsPlaceholder() + } + } + + items( + items = items, + key = { it.key }, + ) { item -> + AppItem( + modifier = Modifier + .animateItemPlacement(), + item = item, + ) + } + }, + ) + } + } + } +} + +@Composable +private fun NoItemsPlaceholder( + modifier: Modifier = Modifier, +) { + EmptySearchView( + modifier = modifier, + ) +} + +@Composable +private fun AppItem( + modifier: Modifier, + item: PasskeysServiceListState.Item, +) { + FlatItem( + modifier = modifier, + leading = { + item.icon() + }, + title = { + Text(item.name) + }, + onClick = item.onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/directory/PasskeysServiceListState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/directory/PasskeysServiceListState.kt new file mode 100644 index 00000000..3986e420 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/directory/PasskeysServiceListState.kt @@ -0,0 +1,41 @@ +package com.artemchep.keyguard.feature.passkeys.directory + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.Immutable +import androidx.compose.ui.text.AnnotatedString +import arrow.core.Either +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.service.passkey.PassKeyServiceInfo +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import kotlinx.coroutines.flow.StateFlow + +data class PasskeysServiceListState( + val filter: StateFlow, + val content: Loadable>, +) { + @Immutable + data class Filter( + val revision: Int, + val query: TextFieldModel2, + ) { + companion object + } + + @Immutable + data class Content( + val revision: Int, + val items: List, + ) { + companion object + } + + @Immutable + data class Item( + val key: String, + val icon: @Composable () -> Unit, + val name: AnnotatedString, + val text: String, + val data: PassKeyServiceInfo, + val onClick: (() -> Unit)? = null, + ) +} \ No newline at end of file diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/directory/PasskeysServiceListStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/directory/PasskeysServiceListStateProducer.kt new file mode 100644 index 00000000..5513b0ee --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/directory/PasskeysServiceListStateProducer.kt @@ -0,0 +1,156 @@ +package com.artemchep.keyguard.feature.passkeys.directory + +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.unit.dp +import arrow.core.partially1 +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.service.passkey.PassKeyService +import com.artemchep.keyguard.common.service.passkey.PassKeyServiceInfo +import com.artemchep.keyguard.feature.crashlytics.crashlyticsAttempt +import com.artemchep.keyguard.feature.favicon.FaviconImage +import com.artemchep.keyguard.feature.favicon.FaviconUrl +import com.artemchep.keyguard.feature.home.vault.search.IndexedText +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.feature.search.search.IndexedModel +import com.artemchep.keyguard.feature.search.search.mapSearch +import com.artemchep.keyguard.feature.search.search.searchFilter +import com.artemchep.keyguard.feature.search.search.searchQueryHandle +import kotlinx.coroutines.flow.asFlow +import kotlinx.coroutines.flow.map +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +private class PasskeysServiceListUiException( + msg: String, + cause: Throwable, +) : RuntimeException(msg, cause) + +@Composable +fun producePasskeysListState( +) = with(localDI().direct) { + producePasskeysListState( + passKeyService = instance(), + ) +} + +@Composable +fun producePasskeysListState( + passKeyService: PassKeyService, +): Loadable = produceScreenState( + key = "passkeys_service_list", + initial = Loadable.Loading, + args = arrayOf(), +) { + val queryHandle = searchQueryHandle("query") + val queryFlow = searchFilter(queryHandle) { model, revision -> + PasskeysServiceListState.Filter( + revision = revision, + query = model, + ) + } + + val modelComparator = Comparator { a: PassKeyServiceInfo, b: PassKeyServiceInfo -> + a.name.compareTo(b.name, ignoreCase = true) + } + + fun onClick(model: PassKeyServiceInfo) { + val route = PasskeysServiceViewRoute( + args = PasskeysServiceViewRoute.Args( + model = model, + ), + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + } + + fun List.toItems(): List { + val nameCollisions = mutableMapOf() + return this + .sortedWith(modelComparator) + .map { serviceInfo -> + val key = kotlin.run { + val newNameCollisionCounter = nameCollisions + .getOrDefault(serviceInfo.name, 0) + 1 + nameCollisions[serviceInfo.name] = + newNameCollisionCounter + serviceInfo.name + ":" + newNameCollisionCounter + } + val faviconUrl = serviceInfo.documentation?.let { url -> + FaviconUrl( + serverId = null, + url = url, + ) + } + PasskeysServiceListState.Item( + key = key, + icon = { + FaviconImage( + modifier = Modifier + .size(24.dp) + .clip(CircleShape), + imageModel = { faviconUrl }, + ) + }, + name = AnnotatedString(serviceInfo.name), + text = serviceInfo.domain, + data = serviceInfo, + onClick = ::onClick + .partially1(serviceInfo), + ) + } + } + + val itemsFlow = passKeyService.get() + .asFlow() + .map { apps -> + apps + .toItems() + // Index for the search. + .map { item -> + IndexedModel( + model = item, + indexedText = IndexedText.invoke(item.name.text), + ) + } + } + .mapSearch( + handle = queryHandle, + ) { item, result -> + // Replace the origin text with the one with + // search decor applied to it. + item.copy(name = result.highlightedText) + } + val contentFlow = itemsFlow + .crashlyticsAttempt { e -> + val msg = "Failed to get the passkeys list!" + PasskeysServiceListUiException( + msg = msg, + cause = e, + ) + } + .map { result -> + val contentOrException = result + .map { (items, revision) -> + PasskeysServiceListState.Content( + revision = revision, + items = items, + ) + } + Loadable.Ok(contentOrException) + } + contentFlow + .map { content -> + val state = PasskeysServiceListState( + filter = queryFlow, + content = content, + ) + Loadable.Ok(state) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/directory/PasskeysServiceViewRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/directory/PasskeysServiceViewRoute.kt new file mode 100644 index 00000000..74cd59ce --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/directory/PasskeysServiceViewRoute.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.feature.passkeys.directory + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.service.passkey.PassKeyServiceInfo +import com.artemchep.keyguard.feature.navigation.DialogRoute + +data class PasskeysServiceViewRoute( + val args: Args, +) : DialogRoute { + data class Args( + val model: PassKeyServiceInfo, + ) + + @Composable + override fun Content() { + PasskeysViewScreen( + args = args, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/directory/PasskeysServiceViewScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/directory/PasskeysServiceViewScreen.kt new file mode 100644 index 00000000..732e6ed3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/directory/PasskeysServiceViewScreen.kt @@ -0,0 +1,192 @@ +package com.artemchep.keyguard.feature.passkeys.directory + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.FlowRow +import androidx.compose.foundation.layout.FlowRowScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Key +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.getOrNull +import com.artemchep.keyguard.feature.dialog.Dialog +import com.artemchep.keyguard.feature.tfa.directory.FlatLaunchBrowserItem +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.markdown.Md +import com.artemchep.keyguard.ui.poweredby.PoweredByPasskeys +import com.artemchep.keyguard.ui.skeleton.SkeletonText +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.theme.monoFontFamily +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun PasskeysViewScreen( + args: PasskeysServiceViewRoute.Args, +) { + val loadableState = producePasskeysServiceViewState( + args = args, + ) + PasskeysViewScreen( + loadableState = loadableState, + ) +} + +@OptIn(ExperimentalLayoutApi::class) +@Composable +fun PasskeysViewScreen( + loadableState: Loadable, +) { + Dialog( + icon = icon(Icons.Outlined.Key), + title = { + when (loadableState) { + is Loadable.Loading -> { + SkeletonText( + modifier = Modifier + .width(72.dp), + ) + } + + is Loadable.Ok -> { + val title = loadableState.value.content.getOrNull() + ?.model?.name.orEmpty() + Text( + text = title, + ) + } + } + + Text( + text = stringResource(Res.strings.passkeys_directory_title), + style = MaterialTheme.typography.titleSmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + ) + + HeaderChipContainer( + modifier = Modifier + .padding(top = 4.dp), + ) { + val chipModifier = Modifier + .background( + color = LocalContentColor.current + .combineAlpha(DisabledEmphasisAlpha) + .combineAlpha(DisabledEmphasisAlpha), + shape = MaterialTheme.shapes.small, + ) + .padding( + horizontal = 4.dp, + vertical = 2.dp, + ) + val chipTextStyle = MaterialTheme.typography.labelSmall + when (loadableState) { + is Loadable.Loading -> { + repeat(2) { + SkeletonText( + modifier = chipModifier + .width(48.dp), + style = chipTextStyle, + ) + } + } + + is Loadable.Ok -> { + val types = loadableState.value.content.getOrNull() + ?.model?.features + types?.forEach { type -> + Text( + modifier = chipModifier, + text = type, + style = chipTextStyle, + fontFamily = monoFontFamily, + ) + } + } + } + } + }, + content = { + Column { + val state = loadableState.getOrNull()?.content?.getOrNull() + val notes = state?.model?.notes + if (notes != null) { + Md( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + markdown = notes, + ) + Spacer( + modifier = Modifier + .height(16.dp), + ) + } + + val documentationUrl = state?.model?.documentation + if (documentationUrl != null) { + FlatLaunchBrowserItem( + title = stringResource(Res.strings.uri_action_launch_docs_title), + url = documentationUrl, + ) + } + + Spacer( + modifier = Modifier + .height(8.dp), + ) + + PoweredByPasskeys( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding) + .fillMaxWidth(), + ) + } + }, + contentScrollable = true, + actions = { + val updatedOnClose by rememberUpdatedState(loadableState.getOrNull()?.onClose) + TextButton( + enabled = updatedOnClose != null, + onClick = { + updatedOnClose?.invoke() + }, + ) { + Text(stringResource(Res.strings.close)) + } + }, + ) +} + +@OptIn(ExperimentalLayoutApi::class) +@Composable +private fun HeaderChipContainer( + modifier: Modifier = Modifier, + content: @Composable FlowRowScope.() -> Unit, +) { + FlowRow( + modifier = modifier, + horizontalArrangement = Arrangement.spacedBy(8.dp, Alignment.CenterHorizontally), + verticalArrangement = Arrangement.spacedBy(8.dp), + ) { + content() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/directory/PasskeysServiceViewState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/directory/PasskeysServiceViewState.kt new file mode 100644 index 00000000..41d6138f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/directory/PasskeysServiceViewState.kt @@ -0,0 +1,17 @@ +package com.artemchep.keyguard.feature.passkeys.directory + +import androidx.compose.runtime.Immutable +import arrow.core.Either +import com.artemchep.keyguard.common.service.passkey.PassKeyServiceInfo + +data class PasskeysServiceViewState( + val content: Either, + val onClose: (() -> Unit)? = null, +) { + @Immutable + data class Content( + val model: PassKeyServiceInfo, + ) { + companion object + } +} \ No newline at end of file diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/directory/PasskeysServiceViewStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/directory/PasskeysServiceViewStateProducer.kt new file mode 100644 index 00000000..ec2bc030 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passkeys/directory/PasskeysServiceViewStateProducer.kt @@ -0,0 +1,44 @@ +package com.artemchep.keyguard.feature.passkeys.directory + +import androidx.compose.runtime.Composable +import arrow.core.right +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.service.passkey.PassKeyService +import com.artemchep.keyguard.feature.navigation.state.navigatePopSelf +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +@Composable +fun producePasskeysServiceViewState( + args: PasskeysServiceViewRoute.Args, +) = with(localDI().direct) { + producePasskeysServiceViewState( + args = args, + passKeyService = instance(), + ) +} + +@Composable +fun producePasskeysServiceViewState( + args: PasskeysServiceViewRoute.Args, + passKeyService: PassKeyService, +): Loadable = produceScreenState( + key = "passkeys_service_view", + initial = Loadable.Loading, + args = arrayOf(), +) { + val content = PasskeysServiceViewState.Content( + model = args.model, + ) + val state = PasskeysServiceViewState( + content = content + .right(), + onClose = { + navigatePopSelf() + }, + ) + flowOf(Loadable.Ok(state)) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passwordleak/PasswordLeakRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passwordleak/PasswordLeakRoute.kt new file mode 100644 index 00000000..39220c4b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passwordleak/PasswordLeakRoute.kt @@ -0,0 +1,56 @@ +package com.artemchep.keyguard.feature.passwordleak + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.FactCheck +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.DialogRoute +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.state.TranslatorScope +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.icons.icon + +data class PasswordLeakRoute( + val args: Args, +) : DialogRoute { + companion object { + fun checkBreachesPasswordActionOrNull( + translator: TranslatorScope, + password: String, + navigate: (NavigationIntent) -> Unit, + ) = checkBreachesPasswordAction( + translator = translator, + password = password, + navigate = navigate, + ) + + fun checkBreachesPasswordAction( + translator: TranslatorScope, + password: String, + navigate: (NavigationIntent) -> Unit, + ) = FlatItemAction( + leading = icon(Icons.Outlined.FactCheck), + title = translator.translate(Res.strings.password_action_check_data_breach_title), + onClick = { + val route = PasswordLeakRoute( + args = Args( + password = password, + ), + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + } + + data class Args( + val password: String, + ) + + @Composable + override fun Content() { + PasswordLeakScreen( + args = args, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passwordleak/PasswordLeakScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passwordleak/PasswordLeakScreen.kt new file mode 100644 index 00000000..e7e10138 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passwordleak/PasswordLeakScreen.kt @@ -0,0 +1,165 @@ +package com.artemchep.keyguard.feature.passwordleak + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.FactCheck +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.getOrNull +import com.artemchep.keyguard.common.usecase.NumberFormatter +import com.artemchep.keyguard.feature.dialog.Dialog +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.FlatSimpleNote +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.SimpleNote +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.poweredby.PoweredByHaveibeenpwned +import com.artemchep.keyguard.ui.skeleton.SkeletonText +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import dev.icerock.moko.resources.compose.stringResource +import org.kodein.di.compose.rememberInstance + +@Composable +fun PasswordLeakScreen( + args: PasswordLeakRoute.Args, +) { + val loadableState = producePasswordLeakState( + args = args, + ) + Dialog( + icon = icon(Icons.Outlined.FactCheck), + title = { + Text(stringResource(Res.strings.passwordleak_title)) + }, + content = { + Column { + Text( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + text = stringResource(Res.strings.passwordleak_note), + style = MaterialTheme.typography.bodySmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + ) + Spacer( + modifier = Modifier + .height(16.dp), + ) + + when (loadableState) { + is Loadable.Loading -> { + ContentSkeleton() + } + + is Loadable.Ok -> { + Content( + state = loadableState.value, + ) + } + } + + Spacer( + modifier = Modifier + .height(4.dp), + ) + + PoweredByHaveibeenpwned( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding) + .fillMaxWidth(), + ) + } + }, + contentScrollable = true, + actions = { + val updatedOnClose by rememberUpdatedState(loadableState.getOrNull()?.onClose) + TextButton( + enabled = updatedOnClose != null, + onClick = { + updatedOnClose?.invoke() + }, + ) { + Text(stringResource(Res.strings.close)) + } + }, + ) +} + +@Composable +private fun ColumnScope.ContentSkeleton() { + FlatItem( + title = { + SkeletonText( + modifier = Modifier + .fillMaxWidth(0.8f), + ) + }, + text = { + SkeletonText( + modifier = Modifier + .fillMaxWidth(0.6f), + ) + }, + enabled = true, + elevation = 1.dp, + ) +} + +@Composable +private fun ColumnScope.Content( + state: PasswordLeakState, +) { + val leaks = state.content.getOrNull()?.occurrences + if (leaks == null) { + FlatSimpleNote( + type = SimpleNote.Type.WARNING, + text = stringResource(Res.strings.passwordleak_failed_to_load_status_text), + ) + return + } + + if (leaks > 0) { + FlatSimpleNote( + type = SimpleNote.Type.WARNING, + title = stringResource(Res.strings.passwordleak_occurrences_found_title), + text = stringResource(Res.strings.passwordleak_occurrences_found_text), + ) + Spacer( + modifier = Modifier + .height(8.dp), + ) + val numberFormatter: NumberFormatter by rememberInstance() + Text( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + text = stringResource( + Res.plurals.passwordleak_occurrences_count_plural, + leaks, + numberFormatter.formatNumber(leaks), + ), + style = MaterialTheme.typography.labelSmall, + fontWeight = FontWeight.Black, + ) + } else { + FlatSimpleNote( + type = SimpleNote.Type.OK, + title = stringResource(Res.strings.passwordleak_occurrences_not_found_title), + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passwordleak/PasswordLeakState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passwordleak/PasswordLeakState.kt new file mode 100644 index 00000000..09e5af33 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passwordleak/PasswordLeakState.kt @@ -0,0 +1,15 @@ +package com.artemchep.keyguard.feature.passwordleak + +import androidx.compose.runtime.Immutable +import arrow.core.Either + +@Immutable +data class PasswordLeakState( + val content: Either, + val onClose: (() -> Unit)? = null, +) { + @Immutable + data class Content( + val occurrences: Int, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passwordleak/PasswordLeakStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passwordleak/PasswordLeakStateProducer.kt new file mode 100644 index 00000000..c160e802 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/passwordleak/PasswordLeakStateProducer.kt @@ -0,0 +1,57 @@ +package com.artemchep.keyguard.feature.passwordleak + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.model.CheckPasswordLeakRequest +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.usecase.CheckPasswordLeak +import com.artemchep.keyguard.feature.navigation.state.navigatePopSelf +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +@Composable +fun producePasswordLeakState( + args: PasswordLeakRoute.Args, +) = with(localDI().direct) { + producePasswordLeakState( + args = args, + checkPasswordLeak = instance(), + ) +} + +@Composable +fun producePasswordLeakState( + args: PasswordLeakRoute.Args, + checkPasswordLeak: CheckPasswordLeak, +): Loadable = produceScreenState( + key = "password_leak", + initial = Loadable.Loading, + args = arrayOf( + checkPasswordLeak, + ), +) { + val request = CheckPasswordLeakRequest( + password = args.password, + ) + val content = checkPasswordLeak(request) + .map { occurrences -> + PasswordLeakState.Content( + occurrences = occurrences, + ) + } + .attempt() + .bind() + + val state = PasswordLeakState( + content = content, + onClose = { + navigatePopSelf() + }, + ) + flowOf(Loadable.Ok(state)) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/qr/ScanQrButton.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/qr/ScanQrButton.kt new file mode 100644 index 00000000..a89f4b99 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/qr/ScanQrButton.kt @@ -0,0 +1,39 @@ +package com.artemchep.keyguard.feature.qr + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.QrCodeScanner +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.registerRouteResultReceiver + +@Composable +fun ScanQrButton( + onValueChange: ((String) -> Unit)? = null, +) { + val updatedOnValueChange by rememberUpdatedState(onValueChange) + val controller by rememberUpdatedState(LocalNavigationController.current) + IconButton( + enabled = onValueChange != null, + onClick = { + val route = registerRouteResultReceiver(ScanQrRoute) { rawValue -> + controller.queue(NavigationIntent.Pop) + // feed the result back + updatedOnValueChange?.invoke(rawValue) + } + val intent = NavigationIntent.NavigateToRoute( + route = route, + ) + controller.queue(intent) + }, + ) { + Icon( + imageVector = Icons.Outlined.QrCodeScanner, + contentDescription = null, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/qr/ScanQrRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/qr/ScanQrRoute.kt new file mode 100644 index 00000000..3aea26d4 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/qr/ScanQrRoute.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.feature.qr + +import com.artemchep.keyguard.feature.navigation.RouteForResult + +expect object ScanQrRoute : RouteForResult diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/EmptyItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/EmptyItem.kt new file mode 100644 index 00000000..a42d729b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/EmptyItem.kt @@ -0,0 +1,30 @@ +package com.artemchep.keyguard.feature.search + +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha + +@Composable +fun EmptyItem( + text: String, + modifier: Modifier = Modifier, +) { + Text( + modifier = modifier + .padding( + horizontal = Dimens.horizontalPadding, + vertical = 8.dp, + ), + text = text, + color = LocalContentColor.current + .combineAlpha(alpha = MediumEmphasisAlpha), + style = MaterialTheme.typography.labelMedium, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/component/DropdownButton.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/component/DropdownButton.kt new file mode 100644 index 00000000..5d40d8ae --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/component/DropdownButton.kt @@ -0,0 +1,108 @@ +package com.artemchep.keyguard.feature.search.component + +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.widthIn +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material3.DropdownMenu +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.runtime.SideEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.ui.DropdownMinWidth +import com.artemchep.keyguard.ui.ExpandedIfNotEmptyForRow +import com.artemchep.keyguard.ui.theme.badgeContainer + +@Composable +fun DropdownButton( + modifier: Modifier = Modifier, + icon: ImageVector, + title: String, + items: List, + onClear: (() -> Unit)?, + content: @Composable ColumnScope.() -> Unit, +) { + var isExpanded by remember { mutableStateOf(false) } + SideEffect { + // Filters can not be shown if there's no content + // available. Automatically hide the dropdown. + if (items.isEmpty() && isExpanded) { + isExpanded = false + } + } + + Box( + modifier = modifier, + ) { + val visible = items.isNotEmpty() + ExpandedIfNotEmptyForRow( + valueOrNull = Unit.takeIf { visible }, + ) { + IconButton( + modifier = Modifier, + enabled = items.isNotEmpty(), + onClick = { + isExpanded = !isExpanded + }, + ) { + Box { + Icon(icon, null) + AnimatedVisibility( + modifier = Modifier + .size(8.dp) + .align(Alignment.TopEnd), + visible = onClear != null, + ) { + Box( + modifier = Modifier + .fillMaxSize() + .background( + color = MaterialTheme.colorScheme.badgeContainer, + shape = CircleShape, + ), + ) + } + } + } + } + + // Inject the dropdown popup to the bottom of the + // content. + val onDismissRequest = { + isExpanded = false + } + DropdownMenu( + modifier = Modifier + .widthIn( + min = DropdownMinWidth, + max = 320.dp, + ) + .fillMaxWidth(), + expanded = isExpanded, + onDismissRequest = onDismissRequest, + ) { + DropdownHeader( + modifier = Modifier + .fillMaxWidth(), + title = title, + onClear = onClear, + ) + + content() + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/component/DropdownHeader.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/component/DropdownHeader.kt new file mode 100644 index 00000000..85628528 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/component/DropdownHeader.kt @@ -0,0 +1,71 @@ +package com.artemchep.keyguard.feature.search.component + +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.heightIn +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Clear +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.ExpandedIfNotEmptyForRow +import com.artemchep.keyguard.ui.theme.Dimens +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun DropdownHeader( + title: String, + onClear: (() -> Unit)?, + modifier: Modifier = Modifier, +) { + Row( + modifier = modifier + .heightIn(min = 56.dp), + verticalAlignment = Alignment.CenterVertically, + ) { + Text( + modifier = Modifier + .weight(1f) + .padding(horizontal = Dimens.horizontalPadding), + text = title, + style = MaterialTheme.typography.titleMedium, + ) + + val updatedOnClear by rememberUpdatedState(onClear) + ExpandedIfNotEmptyForRow( + valueOrNull = onClear, + ) { + TextButton( + onClick = { + updatedOnClear?.invoke() + }, + ) { + Icon( + imageVector = Icons.Outlined.Clear, + contentDescription = null, + ) + Spacer( + modifier = Modifier + .width(Dimens.buttonIconPadding), + ) + Text( + text = stringResource(Res.strings.reset), + ) + } + } + Spacer( + modifier = Modifier + .width(8.dp), + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/filter/FilterButton.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/filter/FilterButton.kt new file mode 100644 index 00000000..1e68772d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/filter/FilterButton.kt @@ -0,0 +1,38 @@ +package com.artemchep.keyguard.feature.search.filter + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.FilterAlt +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import com.artemchep.keyguard.feature.search.component.DropdownButton +import com.artemchep.keyguard.feature.search.filter.component.VaultHomeScreenFilterPaneNumberOfItems +import com.artemchep.keyguard.feature.search.filter.model.FilterItemModel +import com.artemchep.keyguard.res.Res +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun FilterButton( + modifier: Modifier = Modifier, + count: Int?, + items: List, + onClear: (() -> Unit)?, +) { + DropdownButton( + modifier = modifier, + icon = Icons.Outlined.FilterAlt, + title = stringResource(Res.strings.filter_header_title), + items = items, + onClear = onClear, + ) { + VaultHomeScreenFilterPaneNumberOfItems( + count = count, + ) + + FilterItems( + items = items, + predicate = { + !it.id.startsWith("custom") + }, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/filter/FilterItems.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/filter/FilterItems.kt new file mode 100644 index 00000000..d541bb4d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/filter/FilterItems.kt @@ -0,0 +1,86 @@ +package com.artemchep.keyguard.feature.search.filter + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.FlowRow +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.runtime.Composable +import androidx.compose.runtime.key +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.times +import com.artemchep.keyguard.feature.search.EmptyItem +import com.artemchep.keyguard.feature.search.filter.component.FilterItemComposable +import com.artemchep.keyguard.feature.search.filter.component.FilterSectionComposable +import com.artemchep.keyguard.feature.search.filter.model.FilterItemModel +import com.artemchep.keyguard.res.Res +import dev.icerock.moko.resources.compose.stringResource + +@OptIn(ExperimentalLayoutApi::class) +@Composable +fun ColumnScope.FilterItems( + items: List, + predicate: (FilterItemModel) -> Boolean = { true }, +) { + if (items.isEmpty()) { + EmptyItem( + text = stringResource(Res.strings.filter_empty_label), + ) + } + + FlowRow( + modifier = Modifier + .padding(horizontal = 8.dp), + horizontalArrangement = Arrangement.spacedBy(8.dp), + verticalArrangement = Arrangement.spacedBy(8.dp), + ) { + items.forEach { item -> + if (!predicate(item)) { + return@forEach + } + key(item.id) { + when (item) { + is FilterItemModel.Item -> FilterItemItem(item) + is FilterItemModel.Section -> FilterItemSection(item) + } + } + } + } +} + +@Composable +private fun FilterItemItem( + item: FilterItemModel.Item, +) { + val indent = item.indent * 16.dp + FilterItemComposable( + modifier = Modifier + .padding(start = indent) + .then( + if (item.fill) { + Modifier + .fillMaxWidth() + } else { + Modifier + }, + ), + checked = item.checked, + leading = item.leading, + title = item.title, + text = item.text, + onClick = item.onClick, + ) +} + +@Composable +private fun FilterItemSection( + item: FilterItemModel.Section, +) { + FilterSectionComposable( + expanded = item.expanded, + title = item.text, + onClick = item.onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/filter/FilterScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/filter/FilterScreen.kt new file mode 100644 index 00000000..f4f4b3eb --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/filter/FilterScreen.kt @@ -0,0 +1,81 @@ +package com.artemchep.keyguard.feature.search.filter + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Clear +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Modifier +import androidx.compose.ui.input.nestedscroll.nestedScroll +import com.artemchep.keyguard.feature.search.filter.component.VaultHomeScreenFilterPaneNumberOfItems +import com.artemchep.keyguard.feature.search.filter.model.FilterItemModel +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.DefaultFab +import com.artemchep.keyguard.ui.FabState +import com.artemchep.keyguard.ui.ScaffoldColumn +import com.artemchep.keyguard.ui.icons.IconBox +import com.artemchep.keyguard.ui.toolbar.SmallToolbar +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun FilterScreen( + modifier: Modifier = Modifier, + count: Int?, + items: List, + onClear: (() -> Unit)?, + actions: @Composable RowScope.() -> Unit, +) { + val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior() + ScaffoldColumn( + modifier = modifier + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + SmallToolbar( + title = { + Text( + text = stringResource(Res.strings.filter_header_title), + style = MaterialTheme.typography.titleMedium, + ) + }, + actions = actions, + scrollBehavior = scrollBehavior, + ) + }, + floatingActionState = run { + val fabState = if (onClear != null) { + FabState( + onClick = onClear, + model = null, + ) + } else { + null + } + rememberUpdatedState(newValue = fabState) + }, + floatingActionButton = { + DefaultFab( + icon = { + IconBox(main = Icons.Outlined.Clear) + }, + text = { + Text( + text = stringResource(Res.strings.reset), + ) + }, + color = MaterialTheme.colorScheme.secondaryContainer, + ) + }, + ) { + VaultHomeScreenFilterPaneNumberOfItems( + count = count, + ) + + FilterItems( + items = items, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/filter/component/FilterItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/filter/component/FilterItem.kt new file mode 100644 index 00000000..d1aa82be --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/filter/component/FilterItem.kt @@ -0,0 +1,142 @@ +package com.artemchep.keyguard.feature.search.filter.component + +import androidx.compose.foundation.BorderStroke +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.heightIn +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.semantics.Role +import androidx.compose.ui.semantics.role +import androidx.compose.ui.semantics.semantics +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.theme.selectedContainer +import com.artemchep.keyguard.ui.util.DividerColor + +@Composable +fun FilterItemComposable( + modifier: Modifier = Modifier, + checked: Boolean, + leading: (@Composable () -> Unit)?, + title: String, + text: String?, + onClick: (() -> Unit)?, +) { + FilterItemLayout( + modifier = modifier, + checked = checked, + leading = leading, + content = { + Text( + title, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + style = MaterialTheme.typography.labelLarge, + ) + val summaryOrNull = text?.takeUnless { it.isBlank() } + ExpandedIfNotEmpty(valueOrNull = summaryOrNull) { summary -> + Text( + summary, + maxLines = 2, + overflow = TextOverflow.Ellipsis, + style = MaterialTheme.typography.labelSmall, + color = LocalContentColor.current + .combineAlpha(alpha = MediumEmphasisAlpha), + ) + } + }, + onClick = onClick, + ) +} + +@Composable +fun FilterItemLayout( + modifier: Modifier = Modifier, + checked: Boolean, + leading: (@Composable () -> Unit)?, + content: @Composable () -> Unit, + onClick: (() -> Unit)?, + enabled: Boolean = onClick != null, +) { + val updatedOnClick by rememberUpdatedState(onClick) + + val backgroundColor = + if (checked) { + MaterialTheme.colorScheme.selectedContainer + } else MaterialTheme.colorScheme.surface + Surface( + modifier = modifier + .semantics { role = Role.Checkbox }, + border = if (checked) null else BorderStroke(Dp.Hairline, DividerColor), + color = backgroundColor, + shape = MaterialTheme.shapes.small, + ) { + val contentColor = LocalContentColor.current + .let { color -> + if (enabled) { + color // enabled + } else { + color.combineAlpha(DisabledEmphasisAlpha) + } + } + CompositionLocalProvider( + LocalContentColor provides contentColor, + ) { + Row( + modifier = Modifier + .then( + if (updatedOnClick != null) { + Modifier + .clickable(role = Role.Button) { + updatedOnClick?.invoke() + } + } else { + Modifier + }, + ) + .heightIn(min = 32.dp) + .padding( + horizontal = 8.dp, + vertical = 4.dp, + ), + verticalAlignment = Alignment.CenterVertically, + ) { + if (leading != null) { + Box( + modifier = Modifier + .size(18.dp), + ) { + leading() + } + Spacer( + modifier = Modifier + .width(8.dp), + ) + } + Column { + content() + } + } + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/filter/component/FilterSection.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/filter/component/FilterSection.kt new file mode 100644 index 00000000..f51f90a7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/filter/component/FilterSection.kt @@ -0,0 +1,67 @@ +package com.artemchep.keyguard.feature.search.filter.component + +import androidx.compose.animation.core.animateFloatAsState +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.ChevronRight +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.graphicsLayer +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.theme.combineAlpha + +@Composable +fun FilterSectionComposable( + modifier: Modifier = Modifier, + expanded: Boolean, + title: String, + onClick: (() -> Unit)?, +) { + FlatItem( + modifier = modifier, + paddingValues = PaddingValues( + horizontal = 0.dp, + vertical = 2.dp, + ), + trailing = { + val targetRotationX = + if (expanded) { + 0f + } else { + 180f + } + val rotationX by animateFloatAsState(targetRotationX) + Icon( + modifier = Modifier + .graphicsLayer( + rotationX = rotationX, + rotationZ = -90f, + ), + tint = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + imageVector = Icons.Outlined.ChevronRight, + contentDescription = null, + ) + }, + title = { + Text( + text = title.uppercase(), + style = MaterialTheme.typography.labelLarge, + fontSize = 12.sp, + fontWeight = FontWeight.Black, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + ) + }, + onClick = onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/filter/component/VaultHomeScreenFilterPaneNumberOfItems.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/filter/component/VaultHomeScreenFilterPaneNumberOfItems.kt new file mode 100644 index 00000000..c6ad12d2 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/filter/component/VaultHomeScreenFilterPaneNumberOfItems.kt @@ -0,0 +1,36 @@ +package com.artemchep.keyguard.feature.search.filter.component + +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +import com.artemchep.keyguard.ui.animatedNumberText +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun VaultHomeScreenFilterPaneNumberOfItems( + count: Int?, + modifier: Modifier = Modifier, +) { + ExpandedIfNotEmpty( + modifier = modifier, + valueOrNull = count, + ) { n -> + val animatedCount = animatedNumberText(n) + Text( + modifier = Modifier + .padding( + start = 16.dp, + end = 16.dp, + top = 8.dp, + bottom = 8.dp, + ), + text = stringResource(Res.strings.items_n, animatedCount), + style = MaterialTheme.typography.titleSmall, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/filter/model/FilterItemModel.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/filter/model/FilterItemModel.kt new file mode 100644 index 00000000..a612e362 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/filter/model/FilterItemModel.kt @@ -0,0 +1,23 @@ +package com.artemchep.keyguard.feature.search.filter.model + +import androidx.compose.runtime.Composable + +interface FilterItemModel { + val id: String + + interface Section : FilterItemModel { + val text: String + val expanded: Boolean + val onClick: () -> Unit + } + + interface Item : FilterItemModel { + val leading: (@Composable () -> Unit)? + val title: String + val text: String? + val checked: Boolean + val fill: Boolean + val indent: Int + val onClick: (() -> Unit)? + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/search/IndexedModel.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/search/IndexedModel.kt new file mode 100644 index 00000000..3c8a7209 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/search/IndexedModel.kt @@ -0,0 +1,58 @@ +package com.artemchep.keyguard.feature.search.search + +import androidx.compose.ui.graphics.Color +import com.artemchep.keyguard.common.io.parallelSearch +import com.artemchep.keyguard.feature.home.vault.search.IndexedText +import com.artemchep.keyguard.feature.home.vault.search.find +import kotlin.time.measureTimedValue + +class IndexedModel( + val model: T, + val indexedText: IndexedText, +) + +data class FilteredModel( + val model: T, + val result: IndexedText.FindResult, +) + +@OptIn(kotlin.time.ExperimentalTime::class) +suspend fun List>.search( + query: IndexedText, + highlightBackgroundColor: Color, + highlightContentColor: Color, + transform: (T, IndexedText.FindResult) -> T, +) = kotlin.run { + // Fast path if there's nothing to search from. + if (isEmpty()) { + return@run this + .map { + it.model + } + } + + val timedValue = measureTimedValue { + parallelSearch { + val r = it.indexedText.find( + query = query, + colorBackground = highlightBackgroundColor, + colorContent = highlightContentColor, + ) ?: return@parallelSearch null + FilteredModel( + model = it.model, + result = r, + ) + } + .sortedWith( + compareBy( + { -it.result.score }, + ), + ) + .map { + // Replace the origin text with the one with + // search decor applied to it. + transform(it.model, it.result) + } + } + timedValue.value +} \ No newline at end of file diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/search/produceSimpleSearch.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/search/produceSimpleSearch.kt new file mode 100644 index 00000000..852c8c2a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/search/produceSimpleSearch.kt @@ -0,0 +1,88 @@ +package com.artemchep.keyguard.feature.search.search + +import androidx.compose.runtime.MutableState +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import com.artemchep.keyguard.feature.home.vault.search.IndexedText +import com.artemchep.keyguard.feature.navigation.state.RememberStateFlowScope +import com.artemchep.keyguard.ui.theme.searchHighlightBackgroundColor +import com.artemchep.keyguard.ui.theme.searchHighlightContentColor +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.debounce +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.mapLatest +import kotlinx.coroutines.flow.stateIn + +const val SEARCH_DEBOUNCE = 88L + +class SearchQueryHandle( + val scope: RememberStateFlowScope, + val querySink: MutableStateFlow, + val queryState: MutableState, + val queryIndexed: Flow, +) { +} + +fun RememberStateFlowScope.searchQueryHandle( + key: String, +): SearchQueryHandle { + val querySink = mutablePersistedFlow(key) { "" } + val queryState = mutableComposeState(querySink) + + val queryIndexedFlow = querySink + .debounce(SEARCH_DEBOUNCE) + .map { query -> + val queryTrimmed = query.trim() + if (queryTrimmed.isEmpty()) return@map null + IndexedText( + text = queryTrimmed, + ) + } + + return SearchQueryHandle( + scope = this, + querySink = querySink, + queryState = queryState, + queryIndexed = queryIndexedFlow, + ) +} + +suspend fun RememberStateFlowScope.searchFilter( + handle: SearchQueryHandle, + transform: (TextFieldModel2, Int) -> T, +) = handle.querySink + .map { query -> + val revision = query.trim().hashCode() + val model = TextFieldModel2( + state = handle.queryState, + text = query, + onChange = handle.queryState::value::set, + ) + transform( + model, + revision, + ) + } + .stateIn(screenScope) + +fun Flow>>.mapSearch( + handle: SearchQueryHandle, + transform: (T, IndexedText.FindResult) -> T, +) = this + .combine(handle.queryIndexed) { items, query -> items to query } + .mapLatest { (items, query) -> + if (query == null) { + return@mapLatest items.map { it.model } to 0 + } + + val filteredItems = items + .search( + query, + highlightBackgroundColor = handle.scope.colorScheme.searchHighlightBackgroundColor, + highlightContentColor = handle.scope.colorScheme.searchHighlightContentColor, + transform = transform, + ) + filteredItems to query.text.hashCode() + } + diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/sort/SortButton.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/sort/SortButton.kt new file mode 100644 index 00000000..e47ab789 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/sort/SortButton.kt @@ -0,0 +1,81 @@ +package com.artemchep.keyguard.feature.search.sort + +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.SortByAlpha +import androidx.compose.runtime.Composable +import androidx.compose.runtime.key +import androidx.compose.ui.Modifier +import com.artemchep.keyguard.feature.localization.textResource +import com.artemchep.keyguard.feature.search.EmptyItem +import com.artemchep.keyguard.feature.search.component.DropdownButton +import com.artemchep.keyguard.feature.search.sort.component.SortItemComposable +import com.artemchep.keyguard.feature.search.sort.component.SortSectionComposable +import com.artemchep.keyguard.feature.search.sort.model.SortItemModel +import com.artemchep.keyguard.res.Res +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun SortButton( + modifier: Modifier = Modifier, + items: List, + onClear: (() -> Unit)?, +) { + DropdownButton( + modifier = modifier, + icon = Icons.Outlined.SortByAlpha, + title = stringResource(Res.strings.sort_header_title), + items = items, + onClear = onClear, + ) { + SortItems( + items = items, + ) + } +} + +@Composable +private fun ColumnScope.SortItems( + items: List, +) { + if (items.isEmpty()) { + EmptyItem( + text = stringResource(Res.strings.sort_empty_label), + ) + } + + items.forEach { item -> + key(item.id) { + when (item) { + is SortItemModel.Item -> SortItemItem(item) + is SortItemModel.Section -> SortItemSection(item) + } + } + } +} + +@Composable +private fun SortItemItem( + item: SortItemModel.Item, + modifier: Modifier = Modifier, +) { + SortItemComposable( + modifier = modifier, + checked = item.checked, + icon = item.icon, + title = textResource(item.title), + onClick = item.onClick, + ) +} + +@Composable +private fun SortItemSection( + item: SortItemModel.Section, + modifier: Modifier = Modifier, +) { + val text = item.text?.let { textResource(it) } + SortSectionComposable( + modifier = modifier, + text = text, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/sort/component/SortItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/sort/component/SortItem.kt new file mode 100644 index 00000000..8309d938 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/sort/component/SortItem.kt @@ -0,0 +1,94 @@ +package com.artemchep.keyguard.feature.search.sort.component + +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.minimumInteractiveComponentSize +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.theme.selectedContainer + +@Composable +fun SortItemComposable( + modifier: Modifier = Modifier, + checked: Boolean, + icon: ImageVector?, + title: String, + onClick: (() -> Unit)?, +) { + val updatedOnClick by rememberUpdatedState(onClick) + + val backgroundColor = + if (checked) { + MaterialTheme.colorScheme.selectedContainer + } else Color.Unspecified + Row( + modifier = modifier + .then( + if (updatedOnClick != null) { + Modifier + .clickable { + updatedOnClick?.invoke() + } + } else { + Modifier + }, + ) + .background(backgroundColor) + .minimumInteractiveComponentSize() + .padding( + horizontal = 8.dp, + vertical = 4.dp, + ), + verticalAlignment = Alignment.CenterVertically, + ) { + if (icon != null) { + Box( + modifier = Modifier + .padding(4.dp) + .size(16.dp), + ) { + Icon( + imageVector = icon, + contentDescription = null, + ) + } + Spacer( + modifier = Modifier + .width(8.dp), + ) + } + Column( + modifier = Modifier + .weight(1f), + ) { + FlatItemTextContent( + title = { + Text( + text = title, + maxLines = 2, + overflow = TextOverflow.Ellipsis, + ) + }, + compact = true, + ) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/sort/component/SortSection.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/sort/component/SortSection.kt new file mode 100644 index 00000000..0153edda --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/sort/component/SortSection.kt @@ -0,0 +1,16 @@ +package com.artemchep.keyguard.feature.search.sort.component + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import com.artemchep.keyguard.feature.home.vault.component.Section + +@Composable +fun SortSectionComposable( + modifier: Modifier = Modifier, + text: String?, +) { + Section( + modifier = modifier, + text = text, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/sort/model/SortItemModel.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/sort/model/SortItemModel.kt new file mode 100644 index 00000000..26ff6d2b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/search/sort/model/SortItemModel.kt @@ -0,0 +1,19 @@ +package com.artemchep.keyguard.feature.search.sort.model + +import androidx.compose.ui.graphics.vector.ImageVector +import com.artemchep.keyguard.feature.localization.TextHolder + +interface SortItemModel { + val id: String + + interface Section : SortItemModel { + val text: TextHolder? + } + + interface Item : SortItemModel { + val icon: ImageVector? + val title: TextHolder + val checked: Boolean + val onClick: (() -> Unit)? + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/SendItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/SendItem.kt new file mode 100644 index 00000000..74782fa3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/SendItem.kt @@ -0,0 +1,77 @@ +package com.artemchep.keyguard.feature.send + +import androidx.compose.runtime.Immutable +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.AnnotatedString +import arrow.optics.optics +import com.artemchep.keyguard.common.model.DSend +import com.artemchep.keyguard.feature.attachments.SelectableItemState +import com.artemchep.keyguard.feature.home.vault.model.VaultItemIcon +import kotlinx.coroutines.flow.StateFlow +import kotlinx.datetime.Instant +import java.util.UUID + +@Immutable +@optics +sealed interface SendItem { + companion object + + val id: String + + @Immutable + data class Section( + override val id: String = UUID.randomUUID().toString(), + val text: String? = null, + val caps: Boolean = true, + ) : SendItem { + companion object + } + + @Immutable + data class Item( + override val id: String, + val source: DSend, + val accentLight: Color, + val accentDark: Color, + val tag: String? = source.accountId, + val accountId: String, + val groupId: String?, + val revisionDate: Instant, + val createdDate: Instant?, + val hasPassword: Boolean, + val hasFile: Boolean, + val type: String, + val icon: VaultItemIcon, + /** + * The name of the item. + */ + val title: AnnotatedString, + val text: String?, + val notes: String?, + val deletion: String?, + // + val action: Action, + val localStateFlow: StateFlow, + ) : SendItem { + companion object; + + @Immutable + data class LocalState( + val openedState: OpenedState, + val selectableItemState: SelectableItemState, + ) + + @Immutable + data class OpenedState( + val isOpened: Boolean, + ) + + @Immutable + sealed interface Action { + @Immutable + data class Go( + val onClick: () -> Unit, + ) : Action + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/SendListItemMapping.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/SendListItemMapping.kt new file mode 100644 index 00000000..4d69c21f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/SendListItemMapping.kt @@ -0,0 +1,97 @@ +package com.artemchep.keyguard.feature.send + +import androidx.compose.ui.text.AnnotatedString +import com.artemchep.keyguard.common.model.DSend +import com.artemchep.keyguard.common.model.iconImageVector +import com.artemchep.keyguard.common.usecase.CopyText +import com.artemchep.keyguard.common.usecase.DateFormatter +import com.artemchep.keyguard.feature.filepicker.humanReadableByteCountSI +import com.artemchep.keyguard.feature.home.vault.model.VaultItemIcon +import com.artemchep.keyguard.ui.FlatItemAction +import kotlinx.coroutines.flow.StateFlow + +suspend fun DSend.toVaultListItem( + copy: CopyText, + appIcons: Boolean, + websiteIcons: Boolean, + groupId: String? = null, + dateFormatter: DateFormatter, + onClick: (List) -> SendItem.Item.Action, + localStateFlow: StateFlow, +): SendItem.Item { + val d = when { + text != null -> text.createText() + file != null -> file.createFile() + else -> { + TypeSpecific( + text = notes, + ) + } + } + + val icon = toVaultItemIcon( + appIcons = appIcons, + websiteIcons = websiteIcons, + ) + val deletion = deletedDate + ?.let(dateFormatter::formatDate) + return SendItem.Item( + id = id, + source = this, + accentLight = accentLight, + accentDark = accentDark, + accountId = accountId, + groupId = groupId, + revisionDate = revisionDate, + createdDate = createdDate, + hasPassword = password != null, + hasFile = type == DSend.Type.File, + icon = icon, + type = type.name, + title = AnnotatedString(name.trim()), + text = d.text.trim(), + notes = notes.trim(), + deletion = deletion, + action = onClick(d.actions), + localStateFlow = localStateFlow, + ) +} + +fun DSend.toVaultItemIcon( + appIcons: Boolean, + websiteIcons: Boolean, +): VaultItemIcon = kotlin.run { + val vectorIconSrc = type.iconImageVector() + val textIcon = if (name.isNotBlank()) { + VaultItemIcon.TextIcon( + text = name.take(2), + ) + } else { + null + } + val vectorIcon = VaultItemIcon.VectorIcon( + imageVector = vectorIconSrc, + ) + textIcon ?: vectorIcon +} + +private data class TypeSpecific( + val text: String, + val actions: List = emptyList(), +) + +private fun DSend.Text.createText( +): TypeSpecific { + return TypeSpecific( + text = text.orEmpty(), + ) +} + +private fun DSend.File.createFile( +): TypeSpecific { + val size = size?.let(::humanReadableByteCountSI) + ?.let { " ($it)" } + return TypeSpecific( + text = fileName + size, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/SendListState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/SendListState.kt new file mode 100644 index 00000000..39900c5c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/SendListState.kt @@ -0,0 +1,86 @@ +package com.artemchep.keyguard.feature.send + +import androidx.compose.runtime.Immutable +import androidx.compose.runtime.mutableStateOf +import arrow.optics.optics +import com.artemchep.keyguard.common.model.DSend +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import com.artemchep.keyguard.feature.send.search.SendSortItem +import com.artemchep.keyguard.feature.send.search.filter.SendFilterItem +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.Selection +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.emptyFlow + +@Immutable +@optics +data class SendListState( + val revision: Int = 0, + val query: TextFieldModel2 = TextFieldModel2(mutableStateOf("")), + val filters: List = emptyList(), + val sort: List = emptyList(), + val clearFilters: (() -> Unit)? = null, + val clearSort: (() -> Unit)? = null, + val showKeyboard: Boolean = false, + val primaryActions: List = emptyList(), + val actions: List = emptyList(), + val content: Content = Content.Skeleton, + val sideEffects: SideEffects = SideEffects(), +) { + companion object; + + sealed interface Content { + companion object + + data object Skeleton : Content + + @optics + data class AddAccount( + val onAddAccount: (() -> Unit)? = null, + ) : Content { + companion object + } + + @optics + data class Items( + val revision: Revision = Revision(), + val selection: Selection? = null, + val list: List = emptyList(), + val count: Int = 0, + val onSelected: (String?) -> Unit = { }, + val onGoClick: (() -> Unit)? = null, + ) : Content { + companion object; + + @optics + data class Revision( + /** + * Current revision of the items; each revision you should scroll to + * the top of the list. + */ + val id: Int = 0, + val firstVisibleItemIndex: Mutable = MutableImpl(0), + val firstVisibleItemScrollOffset: Mutable = MutableImpl(0), + val onScroll: (Int, Int) -> Unit = { _, _ -> }, + ) : Content { + companion object; + + interface Mutable { + val value: T + } + + data class MutableImpl( + override val value: T, + ) : Mutable + } + } + } + + @Immutable + @optics + data class SideEffects( + val showBiometricPromptFlow: Flow = emptyFlow(), + ) { + companion object + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/SendListStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/SendListStateProducer.kt new file mode 100644 index 00000000..b4967962 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/SendListStateProducer.kt @@ -0,0 +1,1179 @@ +package com.artemchep.keyguard.feature.send + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.CalendarMonth +import androidx.compose.material.icons.outlined.Keyboard +import androidx.compose.material.icons.outlined.Lock +import androidx.compose.material.icons.outlined.SortByAlpha +import androidx.compose.material3.Icon +import androidx.compose.material3.Switch +import androidx.compose.runtime.Composable +import androidx.compose.runtime.mutableStateOf +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.vector.ImageVector +import arrow.core.identity +import arrow.core.partially1 +import com.artemchep.keyguard.AppMode +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.io.nullable +import com.artemchep.keyguard.common.io.parallelSearch +import com.artemchep.keyguard.common.model.AccountTask +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.DSend +import com.artemchep.keyguard.common.model.iconImageVector +import com.artemchep.keyguard.common.model.title +import com.artemchep.keyguard.common.model.titleH +import com.artemchep.keyguard.common.service.clipboard.ClipboardService +import com.artemchep.keyguard.common.usecase.CipherToolbox +import com.artemchep.keyguard.common.usecase.ClearVaultSession +import com.artemchep.keyguard.common.usecase.DateFormatter +import com.artemchep.keyguard.common.usecase.GetAccounts +import com.artemchep.keyguard.common.usecase.GetAppIcons +import com.artemchep.keyguard.common.usecase.GetCanWrite +import com.artemchep.keyguard.common.usecase.GetSends +import com.artemchep.keyguard.common.usecase.GetSuggestions +import com.artemchep.keyguard.common.usecase.GetWebsiteIcons +import com.artemchep.keyguard.common.usecase.QueueSyncAll +import com.artemchep.keyguard.common.usecase.SupervisorRead +import com.artemchep.keyguard.common.util.flow.EventFlow +import com.artemchep.keyguard.common.util.flow.persistingStateIn +import com.artemchep.keyguard.feature.attachments.SelectableItemState +import com.artemchep.keyguard.feature.attachments.SelectableItemStateRaw +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import com.artemchep.keyguard.feature.decorator.ItemDecorator +import com.artemchep.keyguard.feature.decorator.ItemDecoratorDate +import com.artemchep.keyguard.feature.decorator.ItemDecoratorNone +import com.artemchep.keyguard.feature.decorator.ItemDecoratorTitle +import com.artemchep.keyguard.feature.generator.history.mapLatestScoped +import com.artemchep.keyguard.feature.home.settings.accounts.AccountsRoute +import com.artemchep.keyguard.feature.home.vault.add.AddRoute +import com.artemchep.keyguard.feature.home.vault.add.LeAddRoute +import com.artemchep.keyguard.feature.home.vault.search.IndexedText +import com.artemchep.keyguard.feature.home.vault.search.find +import com.artemchep.keyguard.feature.home.vault.search.findAlike +import com.artemchep.keyguard.feature.home.vault.util.AlphabeticalSortMinItemsSize +import com.artemchep.keyguard.feature.localization.TextHolder +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.state.PersistedStorage +import com.artemchep.keyguard.feature.navigation.state.copy +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.feature.search.search.SEARCH_DEBOUNCE +import com.artemchep.keyguard.feature.send.search.AccessCountSendSort +import com.artemchep.keyguard.feature.send.search.AlphabeticalSendSort +import com.artemchep.keyguard.feature.send.search.LastDeletedSendSort +import com.artemchep.keyguard.feature.send.search.LastExpiredSendSort +import com.artemchep.keyguard.feature.send.search.LastModifiedSendSort +import com.artemchep.keyguard.feature.send.search.OurFilterResult +import com.artemchep.keyguard.feature.send.search.SendSort +import com.artemchep.keyguard.feature.send.search.SendSortItem +import com.artemchep.keyguard.feature.send.search.ah +import com.artemchep.keyguard.feature.send.search.createFilter +import com.artemchep.keyguard.feature.send.search.filter.FilterSendHolder +import com.artemchep.keyguard.leof +import com.artemchep.keyguard.platform.parcelize.LeParcelable +import com.artemchep.keyguard.platform.parcelize.LeParcelize +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.Selection +import com.artemchep.keyguard.ui.icons.KeyguardView +import com.artemchep.keyguard.ui.icons.SyncIcon +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.selection.selectionHandle +import dev.icerock.moko.resources.StringResource +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.debounce +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.mapLatest +import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.flow.shareIn +import kotlinx.coroutines.flow.stateIn +import kotlinx.serialization.Serializable +import org.kodein.di.DirectDI +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance +import kotlin.time.ExperimentalTime +import kotlin.time.measureTimedValue + +@LeParcelize +data class OhOhOh( + val id: String? = null, + val offset: Int = 0, + val revision: Int = 0, +) : LeParcelable + +@LeParcelize +@Serializable +data class ComparatorHolder( + val comparator: SendSort, + val reversed: Boolean = false, + val favourites: Boolean = false, +) : LeParcelable { + companion object { + fun of(map: Map): ComparatorHolder { + return ComparatorHolder( + comparator = SendSort.valueOf(map["comparator"].toString()) ?: AlphabeticalSendSort, + reversed = map["reversed"].toString() == "true", + favourites = map["favourites"].toString() == "true", + ) + } + } + + fun toMap() = mapOf( + "comparator" to comparator.id, + "reversed" to reversed, + "favourites" to favourites, + ) +} + +@Composable +fun sendListScreenState( + args: SendRoute.Args, + highlightBackgroundColor: Color, + highlightContentColor: Color, + mode: AppMode, +): SendListState = with(localDI().direct) { + sendListScreenState( + directDI = this, + args = args, + highlightBackgroundColor = highlightBackgroundColor, + highlightContentColor = highlightContentColor, + mode = mode, + clearVaultSession = instance(), + getSuggestions = instance(), + getAccounts = instance(), + getCanWrite = instance(), + getSends = instance(), + getAppIcons = instance(), + getWebsiteIcons = instance(), + toolbox = instance(), + queueSyncAll = instance(), + syncSupervisor = instance(), + dateFormatter = instance(), + clipboardService = instance(), + ) +} + +@Composable +fun sendListScreenState( + directDI: DirectDI, + args: SendRoute.Args, + highlightBackgroundColor: Color, + highlightContentColor: Color, + mode: AppMode, + clearVaultSession: ClearVaultSession, + getSuggestions: GetSuggestions, + getAccounts: GetAccounts, + getCanWrite: GetCanWrite, + getSends: GetSends, + getAppIcons: GetAppIcons, + getWebsiteIcons: GetWebsiteIcons, + toolbox: CipherToolbox, + queueSyncAll: QueueSyncAll, + syncSupervisor: SupervisorRead, + dateFormatter: DateFormatter, + clipboardService: ClipboardService, +): SendListState = produceScreenState( + key = "send_list", + initial = SendListState(), + args = arrayOf( + getAccounts, + dateFormatter, + clipboardService, + ), +) { + val storage = kotlin.run { + val disk = loadDiskHandle("vault.list") + PersistedStorage.InDisk(disk) + } + + val copy = copy(clipboardService) + val ciphersRawFlow = getSends() +// .map { l -> +// Log.e("???","lol ciphers") +// (0..100).flatMap { l }.map { +// it.copy(id = UUID.randomUUID().toString()) +// }.also { +// Log.d("??? search", "${it.size} items") +// } +// } + + val querySink = mutablePersistedFlow("query") { "" } + val queryState = mutableComposeState(querySink) + + val cipherSink = EventFlow() + + val itemSink = mutablePersistedFlow("lole") { "" } + + val selectionHandle = selectionHandle("selection") + // Automatically remove selection from ciphers + // that do not exist anymore. + getSends() + .onEach { ciphers -> + val selectedItemIds = selectionHandle.idsFlow.value + val filteredSelectedItemIds = selectedItemIds + .filter { itemId -> + ciphers.any { it.id == itemId } + } + .toSet() + if (filteredSelectedItemIds.size < selectedItemIds.size) { + selectionHandle.setSelection(filteredSelectedItemIds) + } + } + .launchIn(this) + + val showKeyboardSink = if (args.canAlwaysShowKeyboard) { + mutablePersistedFlow( + key = "keyboard", + storage = storage, + ) { false } + } else { + mutablePersistedFlow( + key = "keyboard", + ) { false } + } + val syncFlow = syncSupervisor + .get(AccountTask.SYNC) + .map { accounts -> + accounts.isNotEmpty() + } + + val sortDefault = ComparatorHolder( + comparator = LastDeletedSendSort, + reversed = true, + ) + val sortSink = mutablePersistedFlow( + key = "sort", + serialize = { json, value -> + value.toMap() + }, + deserialize = { json, value -> + ComparatorHolder.of(value) + }, + ) { + if (args.sort != null) { + ComparatorHolder( + comparator = args.sort, + ) + } else { + sortDefault + } + } + + var scrollPositionKey: Any? = null + val scrollPositionSink = mutablePersistedFlow("scroll_state") { OhOhOh() } + + val filterResult = createFilter() + val actionsFlow = kotlin.run { + val actionAlwaysShowKeyboardFlow = showKeyboardSink + .map { showKeyboard -> + FlatItemAction( + leading = { + Icon( + Icons.Outlined.Keyboard, + null, + ) + }, + trailing = { + Switch( + checked = showKeyboard, + onCheckedChange = showKeyboardSink::value::set, + ) + }, + title = "Always show keyboard", + onClick = showKeyboardSink::value::set.partially1(!showKeyboard), + ) + } + val actionSyncAccountsFlow = syncFlow + .map { syncing -> + FlatItemAction( + leading = { + SyncIcon( + rotating = syncing, + ) + }, + title = "Sync vault", + onClick = if (!syncing) { + // lambda + { + queueSyncAll() + .launchIn(appScope) + } + } else { + null + }, + ) + } + val actionLockVaultItem = FlatItemAction( + leading = { + Icon(Icons.Outlined.Lock, null) + }, + title = "Lock vault", + onClick = { + clearVaultSession() + .launchIn(appScope) + }, + ) + val actionLockVaultFlow = flowOf(actionLockVaultItem) + combine( + actionAlwaysShowKeyboardFlow, + actionSyncAccountsFlow, + actionLockVaultFlow, + ) { array -> + array.toList().takeIf { args.canAlwaysShowKeyboard }.orEmpty() + } + } + + data class ConfigMapper( + val appIcons: Boolean, + val websiteIcons: Boolean, + ) + + val configFlow = combine( + getAppIcons(), + getWebsiteIcons(), + ) { appIcons, websiteIcons -> + ConfigMapper( + appIcons = appIcons, + websiteIcons = websiteIcons, + ) + }.distinctUntilChanged() + val ciphersFlow = combine( + ciphersRawFlow, + configFlow, + ) { secrets, cfg -> secrets to cfg } + .mapLatestScoped { (secrets, cfg) -> + val items = secrets + .map { secret -> + val selectableFlow = selectionHandle + .idsFlow + .map { ids -> + SelectableItemStateRaw( + selecting = ids.isNotEmpty(), + selected = secret.id in ids, + ) + } + .distinctUntilChanged() + .map { raw -> + val toggle = selectionHandle::toggleSelection + .partially1(secret.id) + val onClick = toggle.takeIf { raw.selecting } + val onLongClick = toggle + .takeIf { !raw.selecting && raw.canSelect } + SelectableItemState( + selecting = raw.selecting, + selected = raw.selected, + can = raw.canSelect, + onClick = onClick, + onLongClick = onLongClick, + ) + } + val openedStateFlow = itemSink + .map { + val isOpened = it == secret.id + SendItem.Item.OpenedState(isOpened) + } + val sharing = SharingStarted.WhileSubscribed(1000L) + val localStateFlow = combine( + selectableFlow, + openedStateFlow, + ) { selectableState, openedState -> + SendItem.Item.LocalState( + openedState, + selectableState, + ) + }.persistingStateIn(this, sharing) + val item = secret.toVaultListItem( + copy = copy, + appIcons = cfg.appIcons, + websiteIcons = cfg.websiteIcons, + localStateFlow = localStateFlow, + dateFormatter = dateFormatter, + onClick = { actions -> + SendItem.Item.Action.Go( + onClick = cipherSink::emit.partially1(secret), + ) + }, + ) + val indexed = mutableListOf() + indexed += SearchToken( + priority = 2f, + value = secret.name, + ) + if (secret.notes.isNotBlank()) { + indexed += SearchToken( + priority = 0.8f, + value = secret.notes, + ) + } + IndexedModel( + model = item, + indexedText = IndexedText(item.title.text), + indexedOther = indexed, + ) + } + .run { + if (args.filter != null) { + val ciphers = map { it.model.source } + val predicate = args.filter.prepare(directDI, ciphers) + this + .filter { predicate(it.model.source) } + } else { + this + } + } + items + } + .flowOn(Dispatchers.Default) + .shareIn(this, SharingStarted.WhileSubscribed(5000L), replay = 1) + + fun createComparatorAction( + id: String, + title: StringResource, + icon: ImageVector? = null, + config: ComparatorHolder, + ) = SendSortItem.Item( + id = id, + config = config, + title = TextHolder.Res(title), + icon = icon, + onClick = { + sortSink.value = config + }, + checked = false, + ) + + data class Fuu( + val item: SendSortItem.Item, + val subItems: List, + ) + + val cam = mapOf( + AlphabeticalSendSort to Fuu( + item = createComparatorAction( + id = "title", + icon = Icons.Outlined.SortByAlpha, + title = Res.strings.sortby_title_title, + config = ComparatorHolder( + comparator = AlphabeticalSendSort, + favourites = true, + ), + ), + subItems = listOf( + createComparatorAction( + id = "title_normal", + title = Res.strings.sortby_title_normal_mode, + config = ComparatorHolder( + comparator = AlphabeticalSendSort, + favourites = true, + ), + ), + createComparatorAction( + id = "title_rev", + title = Res.strings.sortby_title_reverse_mode, + config = ComparatorHolder( + comparator = AlphabeticalSendSort, + reversed = true, + favourites = true, + ), + ), + ), + ), + AccessCountSendSort to Fuu( + item = createComparatorAction( + id = "access_count", + icon = Icons.Outlined.KeyguardView, + title = Res.strings.sortby_access_count_title, + config = ComparatorHolder( + comparator = AccessCountSendSort, + ), + ), + subItems = listOf( + createComparatorAction( + id = "access_count_normal", + title = Res.strings.sortby_access_count_normal_mode, + config = ComparatorHolder( + comparator = AccessCountSendSort, + ), + ), + createComparatorAction( + id = "access_count_rev", + title = Res.strings.sortby_access_count_reverse_mode, + config = ComparatorHolder( + comparator = AccessCountSendSort, + reversed = true, + ), + ), + ), + ), + LastModifiedSendSort to Fuu( + item = createComparatorAction( + id = "modify_date", + icon = Icons.Outlined.CalendarMonth, + title = Res.strings.sortby_modification_date_title, + config = ComparatorHolder( + comparator = LastModifiedSendSort, + ), + ), + subItems = listOf( + createComparatorAction( + id = "modify_date_normal", + title = Res.strings.sortby_modification_date_normal_mode, + config = ComparatorHolder( + comparator = LastModifiedSendSort, + ), + ), + createComparatorAction( + id = "modify_date_rev", + title = Res.strings.sortby_modification_date_reverse_mode, + config = ComparatorHolder( + comparator = LastModifiedSendSort, + reversed = true, + ), + ), + ), + ), + LastExpiredSendSort to Fuu( + item = createComparatorAction( + id = "expiration_date", + icon = Icons.Outlined.CalendarMonth, + title = Res.strings.sortby_expiration_date_title, + config = ComparatorHolder( + comparator = LastExpiredSendSort, + ), + ), + subItems = listOf( + createComparatorAction( + id = "expiration_date_normal", + title = Res.strings.sortby_expiration_date_normal_mode, + config = ComparatorHolder( + comparator = LastExpiredSendSort, + ), + ), + createComparatorAction( + id = "expiration_date_rev", + title = Res.strings.sortby_expiration_date_reverse_mode, + config = ComparatorHolder( + comparator = LastExpiredSendSort, + reversed = true, + ), + ), + ), + ), + LastDeletedSendSort to Fuu( + item = createComparatorAction( + id = "deletion_date", + icon = Icons.Outlined.CalendarMonth, + title = Res.strings.sortby_deletion_date_title, + config = ComparatorHolder( + comparator = LastDeletedSendSort, + ), + ), + subItems = listOf( + createComparatorAction( + id = "deletion_date_normal", + title = Res.strings.sortby_deletion_date_normal_mode, + config = ComparatorHolder( + comparator = LastDeletedSendSort, + ), + ), + createComparatorAction( + id = "deletion_date_rev", + title = Res.strings.sortby_deletion_date_reverse_mode, + config = ComparatorHolder( + comparator = LastDeletedSendSort, + reversed = true, + ), + ), + ), + ), + ) + + val comparatorsListFlow = sortSink + .map { orderConfig -> + val mainItems = cam.values + .map { it.item } + .map { item -> + val checked = item.config.comparator == orderConfig.comparator + item.copy(checked = checked) + } + val subItems = cam[orderConfig.comparator]?.subItems.orEmpty() + .map { item -> + val checked = item.config == orderConfig + item.copy(checked = checked) + } + + val out = mutableListOf() + out += mainItems + if (subItems.isNotEmpty()) { + out += SendSortItem.Section( + id = "sub_items_section", + text = TextHolder.Res(Res.strings.options), + ) + out += subItems + } + out + } + + val queryTrimmedFlow = querySink.map { it to it.trim() } + + val queryIndexedFlow = queryTrimmedFlow + .debounce(SEARCH_DEBOUNCE) + .map { (_, queryTrimmed) -> + if (queryTrimmed.isEmpty()) return@map null + IndexedText( + text = queryTrimmed, + ) + } + + data class Rev( + val count: Int, + val list: List, + val revision: Int = 0, + ) + + val ciphersFilteredFlow = hahah( + directDI = directDI, + ciphersFlow = ciphersFlow, + orderFlow = sortSink, + filterFlow = filterResult.filterFlow, + queryFlow = queryIndexedFlow, + dateFormatter = dateFormatter, + highlightBackgroundColor = highlightBackgroundColor, + highlightContentColor = highlightContentColor, + ) + .map { + Rev( + count = it.count, + list = it.list, + revision = (it.filterConfig?.id ?: 0) xor ( + it.queryConfig?.text?.hashCode() + ?: 0 + ) xor (it.orderConfig?.hashCode() ?: 0), + ) + } + .flowOn(Dispatchers.Default) + .shareIn(this, SharingStarted.WhileSubscribed(), replay = 1) + + val filterListFlow = ah( + directDI = directDI, + outputGetter = { it.source }, + outputFlow = ciphersFilteredFlow + .map { state -> + state.list.mapNotNull { it as? SendItem.Item } + }, + accountGetter = ::identity, + accountFlow = getAccounts(), + cipherGetter = { + it.model.source + }, + cipherFlow = ciphersFlow, + input = filterResult, + ) + .stateIn(this, SharingStarted.WhileSubscribed(), OurFilterResult()) + + val selectionFlow = flowOf(null) + + val itemsFlow = ciphersFilteredFlow + .combine(selectionFlow) { ciphers, selection -> + val items = ciphers.list + + @Suppress("UnnecessaryVariable") + val localScrollPositionKey = items + scrollPositionKey = localScrollPositionKey + + val lastScrollState = scrollPositionSink.value + val (firstVisibleItemIndex, firstVisibleItemScrollOffset) = + if (lastScrollState.revision == ciphers.revision) { + val index = items + .indexOfFirst { it.id == lastScrollState.id } + .takeIf { it >= 0 } + index?.let { it to lastScrollState.offset } + } else { + null + } + // otherwise start with a first item + ?: (0 to 0) + + val a = object : SendListState.Content.Items.Revision.Mutable> { + override val value: Pair + get() { + val lastScrollState = scrollPositionSink.value + val v = if (lastScrollState.revision == ciphers.revision) { + val index = items + .indexOfFirst { it.id == lastScrollState.id } + .takeIf { it >= 0 } + index?.let { it to lastScrollState.offset } + } else { + null + } ?: (firstVisibleItemIndex to firstVisibleItemScrollOffset) + return v + } + } + val b = object : SendListState.Content.Items.Revision.Mutable { + override val value: Int + get() = a.value.first + } + val c = object : SendListState.Content.Items.Revision.Mutable { + override val value: Int + get() = a.value.second + } + SendListState.Content.Items( + onSelected = { key -> + itemSink.value = key.orEmpty() + }, + revision = SendListState.Content.Items.Revision( + id = ciphers.revision, + firstVisibleItemIndex = b, + firstVisibleItemScrollOffset = c, + onScroll = { index, offset -> + if (localScrollPositionKey !== scrollPositionKey) { + return@Revision + } + + val item = items.getOrNull(index) + ?: return@Revision + scrollPositionSink.value = OhOhOh( + id = item.id, + offset = offset, + revision = ciphers.revision, + ) + }, + ), + list = items, + count = ciphers.count, + selection = selection, + ) + } + + val itemsNullableFlow = itemsFlow + // First search might take some time, but we want to provide + // initial state as fast as we can. + .nullable() + .persistingStateIn(this, SharingStarted.WhileSubscribed(), null) + combine( + itemsNullableFlow, + filterListFlow, + comparatorsListFlow + .combine(sortSink) { a, b -> a to b }, + queryTrimmedFlow, + getAccounts() + .map { it.isNotEmpty() } + .distinctUntilChanged(), + ) { itemsContent, filters, (comparators, sort), (query, queryTrimmed), hasAccounts -> + val revision = filters.rev xor queryTrimmed.hashCode() xor sort.hashCode() + val content = if (hasAccounts) { + itemsContent + ?: SendListState.Content.Skeleton + } else { + SendListState.Content.AddAccount( + onAddAccount = { + val route = AccountsRoute + navigate(NavigationIntent.NavigateToRoute(route)) + }, + ) + } + val queryField = if (content !is SendListState.Content.AddAccount) { + // We want to let the user search while the items + // are still loading. + TextFieldModel2( + state = queryState, + text = query, + onChange = queryState::value::set, + ) + } else { + TextFieldModel2( + mutableStateOf(""), + ) + } + + fun createTypeAction( + type: DSecret.Type, + ) = FlatItemAction( + leading = icon(type.iconImageVector()), + title = translate(type.titleH()), + onClick = { + val autofill = when (mode) { + is AppMode.Main -> null + is AppMode.PickPasskey -> null + is AppMode.SavePasskey -> null + is AppMode.Save -> { + AddRoute.Args.Autofill.leof(mode.args) + } + + is AppMode.Pick -> { + AddRoute.Args.Autofill.leof(mode.args) + } + } + val route = LeAddRoute( + args = AddRoute.Args( + type = type, + autofill = autofill, + ), + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + + val primaryActions = listOf( + createTypeAction( + type = DSecret.Type.Login, + ), + createTypeAction( + type = DSecret.Type.Card, + ), + createTypeAction( + type = DSecret.Type.Identity, + ), + createTypeAction( + type = DSecret.Type.SecureNote, + ), + ) + SendListState( + revision = revision, + query = queryField, + filters = filters.items, + sort = comparators + .takeIf { queryTrimmed.isEmpty() } + .orEmpty(), + primaryActions = primaryActions, + clearFilters = filters.onClear, + clearSort = if (sortDefault != sort) { + { + sortSink.value = sortDefault + } + } else { + null + }, + content = content, + sideEffects = SendListState.SideEffects(cipherSink), + ) + }.combine( + combine( + getCanWrite(), + selectionHandle.idsFlow, + ) { canWrite, itemIds -> + canWrite && itemIds.isEmpty() + }, + ) { state, canWrite -> + state.copy( + primaryActions = state.primaryActions.takeIf { canWrite }.orEmpty(), + ) + }.combine(actionsFlow) { state, actions -> + state.copy( + actions = actions, + ) + }.combine(showKeyboardSink) { state, showKeyboard -> + state.copy( + showKeyboard = showKeyboard && state.query.onChange != null, + ) + } +} + +private data class SearchToken( + val priority: Float, + val tokens: List, +) { + companion object { + operator fun invoke( + priority: Float, + value: String, + ) = SearchToken( + priority = priority, + tokens = value.lowercase().split(" "), + ) + } +} + +private class IndexedModel( + val model: T, + val indexedText: IndexedText, + val indexedOther: List, +) + +private data class FilteredModel( + val model: T, + val score: Float, + val result: IndexedText.FindResult?, +) + +private data class FilteredCiphers( + val list: List, + val revision: Int, +) + +private data class FilteredBoo( + val count: Int, + val list: List, + val preferredList: List, + val orderConfig: ComparatorHolder? = null, + val filterConfig: FilterSendHolder? = null, + val queryConfig: IndexedText? = null, +) + +private data class Preferences( + val appId: String? = null, + val webDomain: String? = null, +) + +private fun hahah( + directDI: DirectDI, + ciphersFlow: Flow>>, + orderFlow: Flow, + filterFlow: Flow, + queryFlow: Flow, + dateFormatter: DateFormatter, + highlightBackgroundColor: Color, + highlightContentColor: Color, +) = ciphersFlow + .map { items -> + FilteredBoo( + count = items.size, + list = items, + preferredList = emptyList(), + ) + } + .combine( + flow = orderFlow + .map { orderConfig -> + val orderComparator = Comparator> { a, b -> + val aModel = a.model + val bModel = b.model + + var r = 0 + if (r == 0) { + r = orderConfig.comparator.compare(aModel, bModel) + r = if (orderConfig.reversed) -r else r + } + if (r == 0) { + r = aModel.id.compareTo(bModel.id) + r = if (orderConfig.reversed) -r else r + } + r + } + orderConfig to orderComparator + }, + ) { state, (orderConfig, orderComparator) -> + val sortedAllItems = state.list.sortedWith(orderComparator) + state.copy( + list = sortedAllItems, + orderConfig = orderConfig, + ) + } + .combine( + flow = filterFlow, + ) { state, filterConfig -> + // Fast path: if the there are no filters, then + // just return original list of items. + if (filterConfig.state.isEmpty()) { + return@combine state.copy( + filterConfig = filterConfig, + ) + } + + val filteredAllItems = state + .list + .run { + val ciphers = map { it.model.source } + val predicate = filterConfig.filter.prepare(directDI, ciphers) + filter { predicate(it.model.source) } + } + val filteredPreferredItems = state + .preferredList + .run { + val ciphers = map { it.model.source } + val predicate = filterConfig.filter.prepare(directDI, ciphers) + filter { predicate(it.model.source) } + } + state.copy( + list = filteredAllItems, + preferredList = filteredPreferredItems, + filterConfig = filterConfig, + ) + } + .combine(queryFlow) { a, b -> a to b } // i want to use map latest + .mapLatest { (state, query) -> + if (query == null) { + return@mapLatest FilteredBoo( + count = state.list.size, + list = state.list.map { it.model }, + preferredList = state.preferredList.map { it.model }, + orderConfig = state.orderConfig, + filterConfig = state.filterConfig, + queryConfig = state.queryConfig, + ) + } + + val filteredAllItems = state.list.search( + query = query, + highlightBackgroundColor = highlightBackgroundColor, + highlightContentColor = highlightContentColor, + ) + val filteredPreferredItems = state.preferredList.search( + query = query, + highlightBackgroundColor = highlightBackgroundColor, + highlightContentColor = highlightContentColor, + ) + FilteredBoo( + count = filteredAllItems.size, + list = filteredAllItems, + preferredList = filteredPreferredItems, + orderConfig = state.orderConfig, + filterConfig = state.filterConfig, + queryConfig = query, + ) + } + .map { state -> + val keys = mutableSetOf() + + val orderConfig = state.orderConfig + val decorator: ItemDecorator = when { + // Search does not guarantee meaningful order that we can + // show in the section. + state.queryConfig != null -> ItemDecoratorNone + + orderConfig?.comparator is AlphabeticalSendSort && + // it looks ugly on small lists + state.list.size >= AlphabeticalSortMinItemsSize -> + ItemDecoratorTitle( + selector = { it.title.text }, + factory = { id, text -> + SendItem.Section( + id = id, + text = text, + ) + }, + ) + + orderConfig?.comparator is LastModifiedSendSort -> + ItemDecoratorDate( + dateFormatter = dateFormatter, + selector = { it.revisionDate }, + factory = { id, text -> + SendItem.Section( + id = id, + text = text, + ) + }, + ) + + orderConfig?.comparator is LastExpiredSendSort -> + ItemDecoratorDate( + dateFormatter = dateFormatter, + selector = { it.source.expirationDate }, + factory = { id, text -> + SendItem.Section( + id = id, + text = text, + ) + }, + ) + + orderConfig?.comparator is LastDeletedSendSort -> + ItemDecoratorDate( + dateFormatter = dateFormatter, + selector = { it.source.deletedDate }, + factory = { id, text -> + SendItem.Section( + id = id, + text = text, + ) + }, + ) + + else -> ItemDecoratorNone + } + + val items = sequence { + state.preferredList.forEach { item -> + yield(item) + } + if ( + state.preferredList.isNotEmpty() && + state.list.isNotEmpty() + ) { + val section = SendItem.Section( + id = "preferred.end", + text = "All items", + ) + yield(section) + } + state.list.forEach { item -> + val section = decorator.getOrNull(item) + if (section != null) yield(section) + + yield(item) + } + }.toList() + FilteredBoo( + count = state.list.size, + list = items, + preferredList = items, + orderConfig = state.orderConfig, + filterConfig = state.filterConfig, + queryConfig = state.queryConfig, + ) + } + +private suspend fun List>.search( + query: IndexedText, + highlightBackgroundColor: Color, + highlightContentColor: Color, +) = kotlin.run { + // Fast path if there's nothing to search from. + if (isEmpty()) { + return@run this + .map { + it.model + } + } + + val queryComponents = query + .components + .map { it.lowercase } + val timedValue = measureTimedValue { + parallelSearch { + val q = it.indexedOther + .fold(0f) { y, x -> + y + findAlike( + source = x.tokens, + query = queryComponents, + ) + }.div(it.indexedOther.size.coerceAtLeast(1)) + val r = it.indexedText.find( + query = query, + colorBackground = highlightBackgroundColor, + colorContent = highlightContentColor, + ) + if (r == null && q <= 0.0001f) { + return@parallelSearch null + } + FilteredModel( + model = it.model, + score = q + (r?.score ?: 0f), + result = r, + ) + } + .sortedWith( + compareBy( + { -it.score }, + ), + ) + .map { + it.result + ?: return@map it.model + // Replace the origin text with the one with + // search decor applied to it. + it.model.copy(title = it.result.highlightedText) + } + } + timedValue.value +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/SendRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/SendRoute.kt new file mode 100644 index 00000000..de3b760a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/SendRoute.kt @@ -0,0 +1,42 @@ +package com.artemchep.keyguard.feature.send + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.model.DSendFilter +import com.artemchep.keyguard.feature.navigation.Route +import com.artemchep.keyguard.feature.send.search.SendSort + +object SendRoute : Route { + data class Args( + val appBar: AppBar? = null, + val filter: DSendFilter? = null, + val sort: SendSort? = null, + val main: Boolean = false, + val searchBy: SearchBy = SearchBy.ALL, + /** + * `true` to show only trashed items, `false` to show + * only active items, `null` to show both. + */ + val trash: Boolean? = false, + val preselect: Boolean = true, + val canAddSecrets: Boolean = true, + ) { + enum class SearchBy { + ALL, + PASSWORD, + } + + val canAlwaysShowKeyboard: Boolean get() = appBar?.title == null + + val canQuickFilter: Boolean get() = appBar?.title == null + + data class AppBar( + val title: String? = null, + val subtitle: String? = null, + ) + } + + @Composable + override fun Content() { + SendScreen(Args()) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/SendScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/SendScreen.kt new file mode 100644 index 00000000..b56b0002 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/SendScreen.kt @@ -0,0 +1,34 @@ +package com.artemchep.keyguard.feature.send + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.remember +import com.artemchep.keyguard.feature.navigation.LocalNavigationNodeVisualStack +import com.artemchep.keyguard.feature.navigation.NavigationRouter +import com.artemchep.keyguard.feature.send.list.SendListRoute +import com.artemchep.keyguard.feature.twopane.TwoPaneNavigationContent + +@Composable +fun SendScreen( + args: SendRoute.Args, +) { + val initialRoute = remember(args) { + SendListRoute + } + // Send screen actually does not add any depth to the + // navigation stack, it just renders sub-windows. + val visualStack = LocalNavigationNodeVisualStack.current + .run { + removeAt(lastIndex) + } + CompositionLocalProvider( + LocalNavigationNodeVisualStack provides visualStack, + ) { + NavigationRouter( + id = "send", + initial = initialRoute, + ) { backStack -> + TwoPaneNavigationContent(backStack) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/action/showInLargeTypeActionOrNull.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/action/showInLargeTypeActionOrNull.kt new file mode 100644 index 00000000..49d26838 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/action/showInLargeTypeActionOrNull.kt @@ -0,0 +1,52 @@ +package com.artemchep.keyguard.feature.send.action + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Send +import androidx.compose.material.icons.outlined.Share +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.state.TranslatorScope +import com.artemchep.keyguard.platform.util.isRelease +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.icon + +fun createSendActionOrNull( + text: String, + navigate: (NavigationIntent) -> Unit, +) = if (isRelease) { + null +} else { + createSendAction( + text = text, + navigate = navigate, + ) +} + +fun createSendAction( + text: String, + navigate: (NavigationIntent) -> Unit, +) = FlatItemAction( + leading = icon(Icons.Outlined.Send), + title = "Send…", + onClick = { + }, +) + +fun createShareAction( + translator: TranslatorScope, + text: String, + navigate: (NavigationIntent) -> Unit, +) = FlatItemAction( + leading = icon(Icons.Outlined.Share), + trailing = { + ChevronIcon() + }, + title = translator.translate(Res.strings.text_action_share_with_title), + onClick = { + val intent = NavigationIntent.NavigateToShare( + text = text, + ) + navigate(intent) + }, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/list/SendListRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/list/SendListRoute.kt new file mode 100644 index 00000000..c24b2dd3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/list/SendListRoute.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.send.list + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.Route + +object SendListRoute : Route { + @Composable + override fun Content() { + SendListScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/list/SendListScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/list/SendListScreen.kt new file mode 100644 index 00000000..ae272a3e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/list/SendListScreen.kt @@ -0,0 +1,633 @@ +package com.artemchep.keyguard.feature.send.list + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.heightIn +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.widthIn +import androidx.compose.foundation.lazy.items +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.AccessTime +import androidx.compose.material.icons.outlined.Key +import androidx.compose.material.icons.outlined.PersonAdd +import androidx.compose.material.pullrefresh.pullRefresh +import androidx.compose.material.pullrefresh.rememberPullRefreshState +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalAbsoluteTonalElevation +import androidx.compose.material3.LocalTextStyle +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.SideEffect +import androidx.compose.runtime.State +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.runtime.snapshotFlow +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.alpha +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.LocalAppMode +import com.artemchep.keyguard.common.model.DSend +import com.artemchep.keyguard.common.model.expiredFlow +import com.artemchep.keyguard.feature.EmptySearchView +import com.artemchep.keyguard.feature.home.vault.component.FlatItemLayout2 +import com.artemchep.keyguard.feature.home.vault.component.SearchTextField +import com.artemchep.keyguard.feature.home.vault.component.Section +import com.artemchep.keyguard.feature.home.vault.component.rememberSecretAccentColor +import com.artemchep.keyguard.feature.home.vault.component.surfaceColorAtElevationSemi +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.LocalNavigationEntry +import com.artemchep.keyguard.feature.navigation.LocalNavigationRouter +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.search.filter.FilterButton +import com.artemchep.keyguard.feature.search.filter.FilterScreen +import com.artemchep.keyguard.feature.search.sort.SortButton +import com.artemchep.keyguard.feature.send.SendItem +import com.artemchep.keyguard.feature.send.SendListState +import com.artemchep.keyguard.feature.send.SendRoute +import com.artemchep.keyguard.feature.send.sendListScreenState +import com.artemchep.keyguard.feature.send.view.SendViewRoute +import com.artemchep.keyguard.feature.twopane.LocalHasDetailPane +import com.artemchep.keyguard.feature.twopane.TwoPaneScreen +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.AvatarBuilder +import com.artemchep.keyguard.ui.CollectedEffect +import com.artemchep.keyguard.ui.Compose +import com.artemchep.keyguard.ui.ExpandedIfNotEmptyForRow +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.OptionsButton +import com.artemchep.keyguard.ui.ScaffoldLazyColumn +import com.artemchep.keyguard.ui.focus.FocusRequester2 +import com.artemchep.keyguard.ui.focus.focusRequester2 +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.KeyguardNote +import com.artemchep.keyguard.ui.icons.KeyguardView +import com.artemchep.keyguard.ui.pulltosearch.PullToSearch +import com.artemchep.keyguard.ui.skeleton.SkeletonItem +import com.artemchep.keyguard.ui.theme.selectedContainer +import com.artemchep.keyguard.ui.toolbar.CustomToolbar +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun SendListScreen() { + val state = sendListScreenState( + args = remember { + SendRoute.Args() + }, + highlightBackgroundColor = MaterialTheme.colorScheme.tertiaryContainer, + highlightContentColor = MaterialTheme.colorScheme.onTertiaryContainer, + mode = LocalAppMode.current, + ) + val old = remember { + mutableStateOf(null) + } + SideEffect { + old.value = state + } + + val wtf = (state.content as? SendListState.Content.Items)?.onSelected + Compose { + val screenId = LocalNavigationEntry.current.id + val screenStack = LocalNavigationRouter.current.value + val childBackStackFlow = remember( + screenId, + screenStack, + ) { + snapshotFlow { + val backStack = screenStack + .indexOfFirst { it.id == screenId } + // take the next screen + .inc() + // check if in range + .takeIf { it in 1 until screenStack.size } + ?.let { index -> + screenStack.subList( + fromIndex = index, + toIndex = screenStack.size, + ) + } + .orEmpty() + backStack + } + } + LaunchedEffect(wtf, childBackStackFlow) { + childBackStackFlow.collect { backStack -> + val firstRoute = backStack.firstOrNull()?.route as? SendViewRoute? + wtf?.invoke(firstRoute?.sendId) + } + } + } + + val xd by rememberUpdatedState(LocalNavigationEntry.current.id) + val controller by rememberUpdatedState(LocalNavigationController.current) + CollectedEffect(state.sideEffects.showBiometricPromptFlow) { + val route = SendViewRoute( + sendId = it.id, + accountId = it.accountId, + ) + val intent = NavigationIntent.Composite( + listOf( + NavigationIntent.PopById(xd), + NavigationIntent.NavigateToRoute(route), + ), + ) + controller.queue(intent) + } + + TwoPaneScreen( + detail = { modifier -> + SendListFilterScreen( + modifier = modifier, + state = state, + ) + }, + ) { modifier, detailIsVisible -> + SendScreenContent( + modifier = modifier, + state = state, + showFilter = !detailIsVisible, + ) + } +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +private fun SendScreenContent( + modifier: Modifier = Modifier, + state: SendListState, + showFilter: Boolean, +) { + + val focusRequester = remember { + FocusRequester2() + } + val pullRefreshState = rememberPullRefreshState( + refreshing = false, + onRefresh = { + focusRequester.requestFocus() + }, + ) + val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + ScaffoldLazyColumn( + modifier = modifier + .pullRefresh(pullRefreshState) + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + CustomToolbar( + scrollBehavior = scrollBehavior, + ) { + Column { + Row( + modifier = Modifier + .heightIn(min = 64.dp), + verticalAlignment = Alignment.CenterVertically, + ) { + Spacer(Modifier.width(4.dp)) + NavigationIcon() + Spacer(Modifier.width(4.dp)) + Column( + modifier = Modifier + .weight(1f) + .align(Alignment.CenterVertically), + ) { + Text( + text = stringResource(Res.strings.send_main_header_title), + style = MaterialTheme.typography.titleMedium, + overflow = TextOverflow.Ellipsis, + maxLines = 1, + ) + } + if (showFilter) { + Spacer(Modifier.width(4.dp)) + SendListFilterButton( + state = state, + ) + SendListSortButton( + state = state, + ) + OptionsButton( + actions = state.actions, + ) + } + Spacer(Modifier.width(4.dp)) + } + + SearchTextField( + modifier = Modifier + .focusRequester2(focusRequester), + text = state.query.state.value, + placeholder = stringResource(Res.strings.send_main_search_placeholder), + searchIcon = false, + leading = { + }, + trailing = { + }, + onTextChange = state.query.onChange, + onGoClick = null, + ) + } + } + }, + pullRefreshState = pullRefreshState, + overlay = { + PullToSearch( + modifier = Modifier + .padding(contentPadding.value), + pullRefreshState = pullRefreshState, + ) + }, + ) { + when (state.content) { + is SendListState.Content.Skeleton -> { + // Show a bunch of skeleton items, so it makes an impression of a + // fully loaded screen. + for (i in 0..3) { + item(i) { + SkeletonItem( + avatar = true, + ) + } + } + } + + else -> { + if (state.content is SendListState.Content.AddAccount) { + item("header.add_account") { + FlatItem( + elevation = 1.dp, + title = { + Text( + text = "Add an account", + style = MaterialTheme.typography.titleMedium, + ) + }, + leading = { + Icon(Icons.Outlined.PersonAdd, contentDescription = null) + }, + onClick = state.content.onAddAccount, + ) + } + } + val list = (state.content as? SendListState.Content.Items)?.list.orEmpty() + if (list.isEmpty()) { + item("header.empty") { + NoItemsPlaceholder() + } + } + items( + items = list, + key = { model -> model.id }, + ) { model -> + VaultSendItemText( + modifier = Modifier + .animateItemPlacement(), + item = model, + ) + } + } + } + } +} + +@Composable +private fun NoItemsPlaceholder( + modifier: Modifier = Modifier, +) { + EmptySearchView( + modifier = modifier, + ) +} + +@Composable +private fun SendListFilterScreen( + modifier: Modifier = Modifier, + state: SendListState, +) { + val count = (state.content as? SendListState.Content.Items)?.count + val filters = state.filters + val clearFilters = state.clearFilters + FilterScreen( + modifier = modifier, + count = count, + items = filters, + onClear = clearFilters, + actions = { + SendListSortButton( + state = state, + ) + OptionsButton( + actions = state.actions, + ) + }, + ) +} + +@Composable +private fun SendListFilterButton( + modifier: Modifier = Modifier, + state: SendListState, +) { + val count = (state.content as? SendListState.Content.Items)?.count + val filters = state.filters + val clearFilters = state.clearFilters + FilterButton( + modifier = modifier, + count = count, + items = filters, + onClear = clearFilters, + ) +} + +@Composable +private fun SendListSortButton( + modifier: Modifier = Modifier, + state: SendListState, +) { + val filters = state.sort + val clearFilters = state.clearSort + SortButton( + modifier = modifier, + items = filters, + onClear = clearFilters, + ) +} + +@Composable +fun VaultSendItemText( + modifier: Modifier = Modifier, + item: SendItem, +) = when (item) { + is SendItem.Item -> VaultSendItemText( + modifier = modifier, + item = item, + ) + + is SendItem.Section -> { + Section( + modifier = modifier, + text = item.text, + caps = item.caps, + ) + } +} + +@Composable +fun VaultSendItemText( + modifier: Modifier = Modifier, + item: SendItem.Item, +) { + val localState by item.localStateFlow.collectAsState() + val expiredState = remember(item.source) { + item.source.expiredFlow + }.collectAsState() + + val onClick = localState.selectableItemState.onClick + // fallback to default + ?: when (item.action) { + is SendItem.Item.Action.Go -> item.action.onClick + }.takeIf { localState.selectableItemState.can } + val onLongClick = localState.selectableItemState.onLongClick + + val backgroundColor = when { + localState.selectableItemState.selected -> MaterialTheme.colorScheme.primaryContainer + localState.openedState.isOpened -> + MaterialTheme.colorScheme.selectedContainer + .takeIf { LocalHasDetailPane.current } + ?: Color.Unspecified + + else -> Color.Unspecified + } + FlatItemLayout2( + modifier = modifier, + backgroundColor = backgroundColor, + content = { + FlatItemTextContent( + title = { + Text( + text = item.title, + overflow = TextOverflow.Ellipsis, + maxLines = 1, + ) + }, + text = item.text + ?.takeIf { it.isNotEmpty() } + ?.let { + // composable + { + Column { + Text( + text = it, + overflow = TextOverflow.Ellipsis, + maxLines = 4, + ) + if (item.notes != null && item.notes.isNotEmpty()) { + Spacer( + modifier = Modifier + .height(4.dp), + ) + Row( + verticalAlignment = Alignment.CenterVertically, + ) { + Icon( + modifier = Modifier + .width(14.dp), + imageVector = Icons.Outlined.KeyguardNote, + contentDescription = null, + tint = LocalTextStyle.current.color, + ) + Spacer( + modifier = Modifier + .width(8.dp), + ) + Text( + text = item.notes, + overflow = TextOverflow.Ellipsis, + maxLines = 4, + ) + } + } + } + } + }, + ) + + if (item.deletion != null) { + val elevation = LocalAbsoluteTonalElevation.current + Spacer( + modifier = Modifier + .height(4.dp), + ) + Row( + modifier = Modifier + .fillMaxWidth() + .alpha(MediumEmphasisAlpha), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.SpaceBetween, + ) { + Row( + verticalAlignment = Alignment.CenterVertically, + ) { + Icon( + modifier = Modifier + .width(14.dp), + imageVector = Icons.Outlined.AccessTime, + contentDescription = null, + ) + Spacer( + modifier = Modifier + .width(8.dp), + ) + Text( + text = item.deletion, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + style = MaterialTheme.typography.labelMedium, + ) + } + Spacer( + modifier = Modifier + .width(16.dp), + ) + Row( + verticalAlignment = Alignment.CenterVertically, + ) { + Icon( + modifier = Modifier + .width(14.dp), + imageVector = Icons.Outlined.KeyguardView, + contentDescription = null, + ) + Spacer( + modifier = Modifier + .width(8.dp), + ) + Text( + text = item.source.accessCount.toString() + + item.source.maxAccessCount?.let { " / $it" } + .orEmpty(), + maxLines = 1, + overflow = TextOverflow.Ellipsis, + style = MaterialTheme.typography.labelMedium, + ) + } + } + } + }, + leading = { + AccountListItemTextIcon( + send = item.source, + item = item, + expiredState = expiredState, + ) + }, + trailing = { + ExpandedIfNotEmptyForRow( + Unit.takeIf { expiredState.value || item.source.disabled }, + ) { + Column( + verticalArrangement = Arrangement.spacedBy(4.dp), + horizontalAlignment = Alignment.End, + ) { + if (expiredState.value) { + val elevation = LocalAbsoluteTonalElevation.current + Text( + modifier = Modifier + .widthIn(max = 72.dp) + .background( + MaterialTheme.colorScheme + .surfaceColorAtElevationSemi(elevation + 2.dp), + MaterialTheme.shapes.small, + ) + .padding( + horizontal = 6.dp, + vertical = 2.dp, + ), + text = "Expired", + maxLines = 1, + overflow = TextOverflow.Ellipsis, + style = MaterialTheme.typography.labelMedium, + ) + } + if (item.source.disabled) { + val elevation = LocalAbsoluteTonalElevation.current + Text( + modifier = Modifier + .widthIn(max = 72.dp) + .background( + MaterialTheme.colorScheme + .surfaceColorAtElevationSemi(elevation + 2.dp), + MaterialTheme.shapes.small, + ) + .padding( + horizontal = 6.dp, + vertical = 2.dp, + ), + text = "Disabled", + maxLines = 1, + overflow = TextOverflow.Ellipsis, + style = MaterialTheme.typography.labelMedium, + ) + } + } + } + + Spacer(modifier = Modifier.width(8.dp)) + + ChevronIcon() + }, + onClick = onClick, + onLongClick = onLongClick, + ) +} + +@Composable +fun AccountListItemTextIcon( + modifier: Modifier = Modifier, + send: DSend, + item: SendItem.Item, + expiredState: State, +) { + val active = !send.disabled && !expiredState.value + val accent = rememberSecretAccentColor( + accentLight = item.accentLight, + accentDark = item.accentDark, + ) + AvatarBuilder( + modifier = modifier, + icon = item.icon, + accent = accent, + active = active, + badge = { + if (item.hasPassword) { + Icon( + modifier = Modifier + .size(16.dp) + .padding(1.dp), + imageVector = Icons.Outlined.Key, + contentDescription = null, + ) + } + }, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/AccessCountSort.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/AccessCountSort.kt new file mode 100644 index 00000000..98f03896 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/AccessCountSort.kt @@ -0,0 +1,31 @@ +package com.artemchep.keyguard.feature.send.search + +import com.artemchep.keyguard.feature.send.SendItem +import com.artemchep.keyguard.platform.parcelize.LeIgnoredOnParcel +import com.artemchep.keyguard.platform.parcelize.LeParcelize +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +@LeParcelize +@Serializable +object AccessCountSendSort : SendSort { + private object AccessCountRawComparator : Comparator { + override fun compare( + a: SendItem.Item, + b: SendItem.Item, + ): Int = compareValues(b.source.accessCount, a.source.accessCount) + } + + @LeIgnoredOnParcel + @Transient + override val id: String = "access_count" + + @LeIgnoredOnParcel + private val comparator = AccessCountRawComparator + .thenBy(AlphabeticalSendSort) { it } + + override fun compare( + a: SendItem.Item, + b: SendItem.Item, + ): Int = comparator.compare(a, b) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/AlphabeticalSort.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/AlphabeticalSort.kt new file mode 100644 index 00000000..86a16a81 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/AlphabeticalSort.kt @@ -0,0 +1,24 @@ +package com.artemchep.keyguard.feature.send.search + +import com.artemchep.keyguard.feature.send.SendItem +import com.artemchep.keyguard.platform.parcelize.LeIgnoredOnParcel +import com.artemchep.keyguard.platform.parcelize.LeParcelize +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +@LeParcelize +@Serializable +object AlphabeticalSendSort : SendSort { + @LeIgnoredOnParcel + @Transient + override val id: String = "alphabetical" + + override fun compare( + a: SendItem.Item, + b: SendItem.Item, + ): Int = kotlin.run { + val aTitle = a.title.text + val bTitle = b.title.text + aTitle.compareTo(bTitle, ignoreCase = true) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/LastDeletedSort.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/LastDeletedSort.kt new file mode 100644 index 00000000..224b6429 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/LastDeletedSort.kt @@ -0,0 +1,31 @@ +package com.artemchep.keyguard.feature.send.search + +import com.artemchep.keyguard.feature.send.SendItem +import com.artemchep.keyguard.platform.parcelize.LeIgnoredOnParcel +import com.artemchep.keyguard.platform.parcelize.LeParcelize +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +@LeParcelize +@Serializable +object LastDeletedSendSort : SendSort, PureSendSort { + private object LastDeletedRawComparator : Comparator { + override fun compare( + a: SendItem.Item, + b: SendItem.Item, + ): Int = compareValues(b.source.deletedDate, a.source.deletedDate) + } + + @LeIgnoredOnParcel + @Transient + override val id: String = "last_deleted" + + @LeIgnoredOnParcel + private val comparator = LastDeletedRawComparator + .thenBy(AlphabeticalSendSort) { it } + + override fun compare( + a: SendItem.Item, + b: SendItem.Item, + ): Int = comparator.compare(a, b) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/LastExpiredSort.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/LastExpiredSort.kt new file mode 100644 index 00000000..33f1b242 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/LastExpiredSort.kt @@ -0,0 +1,31 @@ +package com.artemchep.keyguard.feature.send.search + +import com.artemchep.keyguard.feature.send.SendItem +import com.artemchep.keyguard.platform.parcelize.LeIgnoredOnParcel +import com.artemchep.keyguard.platform.parcelize.LeParcelize +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +@LeParcelize +@Serializable +object LastExpiredSendSort : SendSort, PureSendSort { + private object LastExpiredRawComparator : Comparator { + override fun compare( + a: SendItem.Item, + b: SendItem.Item, + ): Int = compareValues(b.source.expirationDate, a.source.expirationDate) + } + + @LeIgnoredOnParcel + @Transient + override val id: String = "last_expired" + + @LeIgnoredOnParcel + private val comparator = LastExpiredRawComparator + .thenBy(AlphabeticalSendSort) { it } + + override fun compare( + a: SendItem.Item, + b: SendItem.Item, + ): Int = comparator.compare(a, b) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/LastModifiedSort.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/LastModifiedSort.kt new file mode 100644 index 00000000..88d1db0a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/LastModifiedSort.kt @@ -0,0 +1,31 @@ +package com.artemchep.keyguard.feature.send.search + +import com.artemchep.keyguard.feature.send.SendItem +import com.artemchep.keyguard.platform.parcelize.LeIgnoredOnParcel +import com.artemchep.keyguard.platform.parcelize.LeParcelize +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +@LeParcelize +@Serializable +object LastModifiedSendSort : SendSort, PureSendSort { + private object LastModifiedRawComparator : Comparator { + override fun compare( + a: SendItem.Item, + b: SendItem.Item, + ): Int = compareValues(b.revisionDate, a.revisionDate) + } + + @LeIgnoredOnParcel + @Transient + override val id: String = "last_modified" + + @LeIgnoredOnParcel + private val comparator = LastModifiedRawComparator + .thenBy(AlphabeticalSendSort) { it } + + override fun compare( + a: SendItem.Item, + b: SendItem.Item, + ): Int = comparator.compare(a, b) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/SendListFilter.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/SendListFilter.kt new file mode 100644 index 00000000..5e273ceb --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/SendListFilter.kt @@ -0,0 +1,445 @@ +package com.artemchep.keyguard.feature.send.search + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.unit.dp +import arrow.core.partially1 +import arrow.core.widen +import com.artemchep.keyguard.common.model.DAccount +import com.artemchep.keyguard.common.model.DSend +import com.artemchep.keyguard.common.model.DSendFilter +import com.artemchep.keyguard.common.model.iconImageVector +import com.artemchep.keyguard.common.model.titleH +import com.artemchep.keyguard.feature.home.vault.component.rememberSecretAccentColor +import com.artemchep.keyguard.feature.navigation.state.PersistedStorage +import com.artemchep.keyguard.feature.navigation.state.RememberStateFlowScope +import com.artemchep.keyguard.feature.send.search.filter.FilterSendHolder +import com.artemchep.keyguard.feature.send.search.filter.SendFilterItem +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.icons.AccentColors +import com.artemchep.keyguard.ui.icons.IconBox +import com.artemchep.keyguard.ui.icons.generateAccentColorsByAccountId +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.update +import kotlinx.serialization.encodeToString +import org.kodein.di.DirectDI + +private fun mapCiphers( + flow: Flow>, + getter: (T) -> R, +) where R : Any? = flow + .map { ciphers -> + ciphers + .asSequence() + .map(getter) + .toSet() + } + .distinctUntilChanged() + +data class CreateFilterResult( + val filterFlow: Flow, + val onToggle: (String, Set) -> Unit, + val onClear: () -> Unit, +) + +suspend fun RememberStateFlowScope.createFilter(): CreateFilterResult { + val emptyState = FilterSendHolder( + state = mapOf(), + ) + + val filterSink = mutablePersistedFlow( + key = "ciphers.filters", + serialize = { json, value -> + json.encodeToString(value) + }, + deserialize = { json, value -> + json.decodeFromString(value) + }, + ) { emptyState } + val onClear = { + filterSink.value = emptyState + } + val onToggle = { sectionId: String, filters: Set -> + filterSink.update { holder -> + val activeFilters = holder.state.getOrElse(sectionId) { emptySet() } + val pendingFilters = filters + .filter { it !in activeFilters } + + val newFilters = if (pendingFilters.isNotEmpty()) { + // Add the filters from a clicked item if + // not all of them are already active. + activeFilters + pendingFilters + } else { + activeFilters - filters + } + val newState = holder.state + (sectionId to newFilters) + holder.copy( + state = newState, + ) + } + } + return CreateFilterResult( + filterFlow = filterSink, + onToggle = onToggle, + onClear = onClear, + ) +} + +data class OurFilterResult( + val rev: Int = 0, + val items: List = emptyList(), + val onClear: (() -> Unit)? = null, +) + +data class FilterParams( + val section: Section = Section(), +) { + data class Section( + val account: Boolean = true, + val type: Boolean = true, + val misc: Boolean = true, + ) +} + +suspend fun < + Output : Any, + Account, + Secret, + > RememberStateFlowScope.ah( + directDI: DirectDI, + outputGetter: (Output) -> DSend, + outputFlow: Flow>, + accountGetter: (Account) -> DAccount, + accountFlow: Flow>, + cipherGetter: (Secret) -> DSend, + cipherFlow: Flow>, + input: CreateFilterResult, + params: FilterParams = FilterParams(), +): Flow { + val storage = kotlin.run { + val disk = loadDiskHandle("ciphers.filter") + PersistedStorage.InDisk(disk) + } + + val collapsedSectionIdsSink = + mutablePersistedFlow>("ciphers.sections", storage) { emptyList() } + + fun toggleSection(sectionId: String) { + collapsedSectionIdsSink.update { + val shouldAdd = sectionId !in it + if (shouldAdd) { + it + sectionId + } else { + it - sectionId + } + } + } + + val outputCipherFlow = outputFlow + .map { list -> + list + .map { outputGetter(it) } + } + + val filterTypesWithCiphers = mapCiphers(cipherFlow) { cipherGetter(it).type } + val filterAccountsWithCiphers = mapCiphers(cipherFlow) { cipherGetter(it).accountId } + + fun Flow>.filterSection( + enabled: Boolean, + ) = if (enabled) { + this + } else { + flowOf(emptyList()) + } + + fun Flow>.aaa( + sectionId: String, + sectionTitle: String, + collapse: Boolean = true, + ) = this + .combine(input.filterFlow) { items, filterHolder -> + items + .map { item -> + val shouldBeChecked = kotlin.run { + val activeFilters = filterHolder.state[item.filterSectionId].orEmpty() + item.filters + .all { itemFilter -> + itemFilter in activeFilters + } + } + if (shouldBeChecked == item.checked) { + return@map item + } + + item.copy(checked = shouldBeChecked) + } + } + .distinctUntilChanged() + .map { items -> + if (items.size <= 1 && collapse) { + // Do not show a single filter item. + return@map emptyList() + } + + items + .widen() + .toMutableList() + .apply { + val sectionItem = SendFilterItem.Section( + sectionId = sectionId, + text = sectionTitle, + onClick = { + toggleSection(sectionId) + }, + ) + add(0, sectionItem) + } + } + + val setOfNull = setOf(null) + + val typeSectionId = "type" + val accountSectionId = "account" + val miscSectionId = "misc" + + fun createFilterAction( + sectionId: String, + filter: Set, + filterSectionId: String = sectionId, + title: String, + text: String? = null, + tint: AccentColors? = null, + icon: ImageVector? = null, + ) = SendFilterItem.Item( + sectionId = sectionId, + filterSectionId = filterSectionId, + filters = filter, + leading = when { + icon != null -> { + // composable + { + IconBox(main = icon) + } + } + + tint != null -> { + // composable + { + Box( + modifier = Modifier + .padding(2.dp), + contentAlignment = Alignment.Center, + ) { + val color = rememberSecretAccentColor( + accentLight = tint.light, + accentDark = tint.dark, + ) + Box( + modifier = Modifier + .fillMaxSize() + .background(color, CircleShape), + ) + } + } + } + + else -> null + }, + title = title, + text = text, + onClick = input.onToggle + .partially1(filterSectionId) + .partially1(filter), + checked = false, + fill = false, + indent = 0, + ) + + fun createAccountFilterAction( + accountIds: Set, + title: String, + text: String, + tint: AccentColors? = null, + icon: ImageVector? = null, + ) = createFilterAction( + sectionId = accountSectionId, + filter = accountIds + .asSequence() + .map { accountId -> + DSendFilter.ById( + id = accountId, + what = DSendFilter.ById.What.ACCOUNT, + ) + } + .toSet(), + title = title, + text = text, + tint = tint, + icon = icon, + ) + + fun createTypeFilterAction( + type: DSend.Type, + ) = createFilterAction( + sectionId = typeSectionId, + filter = setOf( + DSendFilter.ByType(type), + ), + title = translate(type.titleH()), + icon = type.iconImageVector(), + ) + + val filterAccountListFlow = accountFlow + .map { accounts -> + accounts + .map { account -> + val model = accountGetter(account) + val accountId = model.accountId() + val tint = generateAccentColorsByAccountId(accountId) + createAccountFilterAction( + accountIds = setOf( + model.accountId(), + ), + title = model.username, + text = model.host, + tint = tint, + ) + } + } + .combine(filterAccountsWithCiphers) { items, accountIds -> + items + .filter { filterItem -> + filterItem.filters + .any { filter -> + val filterFixed = filter as DSendFilter.ById + require(filterFixed.what == DSendFilter.ById.What.ACCOUNT) + filterFixed.id in accountIds + } + } + } + .aaa( + sectionId = accountSectionId, + sectionTitle = translate(Res.strings.account), + ) + .filterSection(params.section.account) + + val filterTypesAll = listOf( + DSend.Type.Text to createTypeFilterAction( + type = DSend.Type.Text, + ), + DSend.Type.File to createTypeFilterAction( + type = DSend.Type.File, + ), + ) + + val filterTypeListFlow = filterTypesWithCiphers + .map { types -> + filterTypesAll.mapNotNull { (type, item) -> + item.takeIf { type in types } + } + } + .aaa( + sectionId = typeSectionId, + sectionTitle = translate(Res.strings.type), + ) + .filterSection(params.section.type) + + val filterMiscAll = listOf( + ) + + val filterMiscListFlow = flowOf(Unit) + .map { + filterMiscAll + } + .aaa( + sectionId = miscSectionId, + sectionTitle = translate(Res.strings.misc), + collapse = false, + ) + .filterSection(params.section.misc) + + return combine( + filterAccountListFlow, + filterTypeListFlow, + filterMiscListFlow, + ) { a -> a.flatMap { it } } + .combine(collapsedSectionIdsSink) { items, collapsedSectionIds -> + var skippedSectionId: String? = null + + val out = mutableListOf() + items.forEach { item -> + if (item is SendFilterItem.Section) { + val collapsed = item.sectionId in collapsedSectionIds + skippedSectionId = item.sectionId.takeIf { collapsed } + + out += if (collapsed) { + item.copy(expanded = false) + } else { + item + } + } else { + if (item.sectionId != skippedSectionId) { + out += item + } + } + } + out + } + .combine(outputCipherFlow) { items, outputCiphers -> + val checkedSectionIds = items + .asSequence() + .mapNotNull { + when (it) { + is SendFilterItem.Section -> null + is SendFilterItem.Item -> it.takeIf { it.checked } + ?.sectionId + } + } + .toSet() + + val out = mutableListOf() + items.forEach { item -> + when (item) { + is SendFilterItem.Section -> out += item + is SendFilterItem.Item -> { + val fastEnabled = item.checked || item.sectionId in checkedSectionIds + val enabled = fastEnabled || kotlin.run { + item.filters + .any { filter -> + val filterPredicate = filter.prepare(directDI, outputCiphers) + outputCiphers.any(filterPredicate) + } + } + + if (enabled) { + out += item + return@forEach + } + + out += item.copy(onClick = null) + } + } + } + out + } + .combine(input.filterFlow) { a, b -> + OurFilterResult( + rev = b.id, + items = a, + onClear = input.onClear.takeIf { b.id != 0 }, + ) + } + .flowOn(Dispatchers.Default) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/SendSortItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/SendSortItem.kt new file mode 100644 index 00000000..4d5d32d1 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/SendSortItem.kt @@ -0,0 +1,28 @@ +package com.artemchep.keyguard.feature.send.search + +import androidx.compose.ui.graphics.vector.ImageVector +import arrow.optics.optics +import com.artemchep.keyguard.feature.localization.TextHolder +import com.artemchep.keyguard.feature.search.sort.model.SortItemModel +import com.artemchep.keyguard.feature.send.ComparatorHolder + +@optics +sealed interface SendSortItem : SortItemModel { + companion object; + + data class Section( + override val id: String, + override val text: TextHolder? = null, + ) : SendSortItem, SortItemModel.Section { + companion object + } + + data class Item( + override val id: String, + val config: ComparatorHolder, + override val icon: ImageVector? = null, + override val title: TextHolder, + override val checked: Boolean, + override val onClick: (() -> Unit)? = null, + ) : SendSortItem, SortItemModel.Item +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/Sort.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/Sort.kt new file mode 100644 index 00000000..4d7a5b46 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/Sort.kt @@ -0,0 +1,23 @@ +package com.artemchep.keyguard.feature.send.search + +import com.artemchep.keyguard.feature.send.SendItem +import com.artemchep.keyguard.platform.parcelize.LeParcelable + +interface PureSendSort : Comparator { + val id: String +} + +interface SendSort : PureSendSort, LeParcelable { + companion object { + fun valueOf( + name: String, + ): SendSort? = when (name) { + AlphabeticalSendSort.id -> AlphabeticalSendSort + AccessCountSendSort.id -> AccessCountSendSort + LastModifiedSendSort.id -> LastModifiedSendSort + LastExpiredSendSort.id -> LastExpiredSendSort + LastDeletedSendSort.id -> LastDeletedSendSort + else -> null + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/filter/AccountFilter.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/filter/AccountFilter.kt new file mode 100644 index 00000000..93effd56 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/filter/AccountFilter.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.feature.send.search.filter + +import arrow.optics.Getter +import com.artemchep.keyguard.platform.parcelize.LeParcelize + +@LeParcelize +data class AccountFilter( + override val id: String, +) : SendFilter, PureSendFilter by PureSendFilter(id, Getter { it.accountId }) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/filter/AndFilter.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/filter/AndFilter.kt new file mode 100644 index 00000000..80b5c493 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/filter/AndFilter.kt @@ -0,0 +1,25 @@ +package com.artemchep.keyguard.feature.send.search.filter + +import com.artemchep.keyguard.feature.send.SendItem +import com.artemchep.keyguard.platform.parcelize.LeParcelize + +@LeParcelize +data class AndSendFilter( + val filters: List, + override val id: String = "and_filter:" + filters.joinToString(separator = ",") { it.id.orEmpty() }, +) : SendFilter, PureSendFilter { + override fun invoke( + list: List, + getter: (Any) -> SendItem.Item, + ): (SendItem.Item) -> Boolean = kotlin.run { + val a = filters + .map { filter -> + filter.invoke(list, getter) + } + + // lambda + fun( + item: SendItem.Item, + ): Boolean = a.all { it(item) } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/filter/Filter.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/filter/Filter.kt new file mode 100644 index 00000000..87a84ffc --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/filter/Filter.kt @@ -0,0 +1,27 @@ +package com.artemchep.keyguard.feature.send.search.filter + +import arrow.optics.Getter +import com.artemchep.keyguard.feature.send.SendItem +import com.artemchep.keyguard.platform.parcelize.LeParcelable + +interface PureSendFilter : (List, (Any) -> SendItem.Item) -> (SendItem.Item) -> Boolean { + companion object { + operator fun invoke( + value: String, + getter: Getter, + ): PureSendFilter = object : PureSendFilter { + override val id: String = value + + override fun invoke( + list: List, + getter: (Any) -> SendItem.Item, + ): (SendItem.Item) -> Boolean = ::internalFilter + + private fun internalFilter(item: SendItem.Item) = getter.get(item) == value + } + } + + val id: String? +} + +interface SendFilter : PureSendFilter, LeParcelable diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/filter/FilterHolder.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/filter/FilterHolder.kt new file mode 100644 index 00000000..f6268b58 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/filter/FilterHolder.kt @@ -0,0 +1,22 @@ +package com.artemchep.keyguard.feature.send.search.filter + +import com.artemchep.keyguard.common.model.DSendFilter + +@kotlinx.serialization.Serializable +data class FilterSendHolder( + val state: Map>, +) { + val filter by lazy { + val f = state + .map { + val filters = DSendFilter.Or(it.value) + filters + } + DSendFilter.And(f) + } + + val id: Int = state + .asSequence() + .flatMap { it.value } + .fold(0) { y, x -> y xor x.key.hashCode() } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/filter/FilterItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/filter/FilterItem.kt new file mode 100644 index 00000000..4cff8bd0 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/filter/FilterItem.kt @@ -0,0 +1,42 @@ +package com.artemchep.keyguard.feature.send.search.filter + +import androidx.compose.runtime.Composable +import arrow.optics.optics +import com.artemchep.keyguard.common.model.DSendFilter +import com.artemchep.keyguard.feature.search.filter.model.FilterItemModel + +@optics +sealed interface SendFilterItem : FilterItemModel { + companion object + + val sectionId: String + + data class Section( + override val sectionId: String, + override val text: String, + override val expanded: Boolean = true, + override val onClick: () -> Unit, + ) : SendFilterItem, FilterItemModel.Section { + companion object; + + override val id: String = sectionId + } + + data class Item( + override val sectionId: String, + val filterSectionId: String, + val filters: Set, + override val checked: Boolean, + override val fill: Boolean, + override val indent: Int, + override val leading: (@Composable () -> Unit)?, + override val title: String, + override val text: String?, + override val onClick: (() -> Unit)?, + ) : SendFilterItem, FilterItemModel.Item { + companion object; + + override val id: String = + sectionId + "|" + filterSectionId + "|" + filters.joinToString(separator = ",") { it.key } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/filter/OrFilter.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/filter/OrFilter.kt new file mode 100644 index 00000000..9bde2484 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/filter/OrFilter.kt @@ -0,0 +1,29 @@ +package com.artemchep.keyguard.feature.send.search.filter + +import arrow.core.partially1 +import com.artemchep.keyguard.feature.send.SendItem +import com.artemchep.keyguard.platform.parcelize.LeParcelize + +@LeParcelize +data class OrSendFilter( + val filters: List, + override val id: String = "or_filter:" + filters.joinToString(separator = ",") { it.id.orEmpty() }, +) : SendFilter, PureSendFilter { + override fun invoke( + list: List, + getter: (Any) -> SendItem.Item, + ): (SendItem.Item) -> Boolean = kotlin.run { + val a = filters + .map { filter -> + filter.invoke(list, getter) + } + + // lambda + ::filte.partially1(a) + } + + private fun filte( + a: List<(SendItem.Item) -> Boolean>, + item: SendItem.Item, + ) = a.any { it(item) } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/filter/TypeFilter.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/filter/TypeFilter.kt new file mode 100644 index 00000000..1d00b4fd --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/search/filter/TypeFilter.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.feature.send.search.filter + +import arrow.optics.Getter +import com.artemchep.keyguard.platform.parcelize.LeParcelize + +@LeParcelize +data class TypeSendFilter( + override val id: String, +) : SendFilter, PureSendFilter by PureSendFilter(id, Getter { it.type }) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/view/SendViewScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/view/SendViewScreen.kt new file mode 100644 index 00000000..9d121581 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/view/SendViewScreen.kt @@ -0,0 +1,348 @@ +package com.artemchep.keyguard.feature.send.view + +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.LazyListState +import androidx.compose.foundation.lazy.items +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.ContentCopy +import androidx.compose.material.icons.outlined.Share +import androidx.compose.material3.LocalAbsoluteTonalElevation +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.material3.minimumInteractiveComponentSize +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.alpha +import androidx.compose.ui.draw.clip +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.feature.home.vault.component.VaultItemIcon2 +import com.artemchep.keyguard.feature.home.vault.component.VaultViewItem +import com.artemchep.keyguard.feature.home.vault.component.rememberSecretAccentColor +import com.artemchep.keyguard.feature.home.vault.component.surfaceColorAtElevationSemi +import com.artemchep.keyguard.feature.home.vault.model.VaultItemIcon +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.ui.Avatar +import com.artemchep.keyguard.ui.DefaultFab +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.FabState +import com.artemchep.keyguard.ui.FlatItemLayout +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.OptionsButton +import com.artemchep.keyguard.ui.Placeholder +import com.artemchep.keyguard.ui.ScaffoldLazyColumn +import com.artemchep.keyguard.ui.SmallFab +import com.artemchep.keyguard.ui.icons.IconBox +import com.artemchep.keyguard.ui.icons.OfflineIcon +import com.artemchep.keyguard.ui.shimmer.shimmer +import com.artemchep.keyguard.ui.skeleton.SkeletonText +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.toolbar.LargeToolbar + +@Composable +fun SendViewScreen( + sendId: String, + accountId: String, +) { + val state = sendViewScreenState( + contentColor = LocalContentColor.current, + disabledContentColor = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + sendId = sendId, + accountId = accountId, + ) + val listState = rememberSaveable( + 0, + saver = LazyListState.Saver, + ) { + LazyListState( + firstVisibleItemIndex = 0, + firstVisibleItemScrollOffset = 0, + ) + } + val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + ScaffoldLazyColumn( + modifier = Modifier + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + LargeToolbar( + title = { + VaultViewTitle( + state = state, + ) + }, + navigationIcon = { + NavigationIcon() + }, + actions = { + VaultViewTitleActions( + state = state, + ) + }, + scrollBehavior = scrollBehavior, + ) + }, + floatingActionState = run { + val fabVisible = (state.content as? SendViewState.Content.Cipher) + ?.onCopy != null || true // TODO: Why would I need it? + val fabState = if (fabVisible) { + FabState( + onClick = (state.content as? SendViewState.Content.Cipher) + ?.onCopy, + model = null, + ) + } else { + null + } + rememberUpdatedState(newValue = fabState) + }, + floatingActionButton = { + val updatedOnShare by rememberUpdatedState( + (state.content as? SendViewState.Content.Cipher) + ?.onShare, + ) + Column( + horizontalAlignment = Alignment.End, + verticalArrangement = Arrangement.spacedBy(16.dp), + ) { + SmallFab( + onClick = { + updatedOnShare?.invoke() + }, + icon = { + IconBox(main = Icons.Outlined.Share) + }, + ) + DefaultFab( + icon = { + IconBox(main = Icons.Outlined.ContentCopy) + }, + text = { + Text( + text = "Copy share", + ) + }, + ) + } + }, + listState = listState, + ) { + when (state.content) { + is SendViewState.Content.Loading -> { + // Show a bunch of skeleton items, so it makes an impression of a + // fully loaded screen. + for (i in 0..1) { + item(i) { + val contentColor = + LocalContentColor.current.copy(alpha = DisabledEmphasisAlpha) + FlatItemLayout( + modifier = Modifier + .shimmer(), + backgroundColor = contentColor.copy(alpha = 0.08f), + content = { + Box( + Modifier + .height(13.dp) + .fillMaxWidth(0.15f) + .clip(MaterialTheme.shapes.medium) + .background(contentColor.copy(alpha = 0.2f)), + ) + Box( + Modifier + .padding(top = 4.dp) + .height(18.dp) + .fillMaxWidth(0.38f) + .clip(MaterialTheme.shapes.medium) + .background(contentColor), + ) + }, + ) + } + } + item(-1) { + val contentColor = + LocalContentColor.current.copy(alpha = DisabledEmphasisAlpha) + Box( + modifier = Modifier + .padding(top = 8.dp) + .fillMaxWidth(), + contentAlignment = Alignment.Center, + ) { + Box( + Modifier + .shimmer() + .height(10.dp) + .fillMaxWidth(0.38f) + .clip(MaterialTheme.shapes.medium) + .background(contentColor.copy(alpha = 0.23f)), + ) + } + Box( + modifier = Modifier + .padding(top = 8.dp) + .fillMaxWidth(), + contentAlignment = Alignment.Center, + ) { + Box( + Modifier + .shimmer() + .height(10.dp) + .fillMaxWidth(0.38f) + .clip(MaterialTheme.shapes.medium) + .background(contentColor.copy(alpha = 0.23f)), + ) + } + } + } + + is SendViewState.Content.Cipher -> { + val list = state.content.items + if (list.isEmpty()) { + item("header.empty") { + Placeholder() + } + } + items( + items = list, + key = { model -> model.id }, + ) { model -> + VaultViewItem( + modifier = Modifier + .animateItemPlacement(), + item = model, + ) + } + } + + else -> { + // Do nothing. + } + } + } +} + +@Composable +private fun VaultViewTitle( + state: SendViewState, +) = Row( + verticalAlignment = Alignment.CenterVertically, +) { + val isLoading = state.content is SendViewState.Content.Loading + val shimmerColor = LocalContentColor.current + .combineAlpha(DisabledEmphasisAlpha) + + val avatarBackground = when (state.content) { + is SendViewState.Content.Loading -> shimmerColor + is SendViewState.Content.NotFound -> shimmerColor + is SendViewState.Content.Cipher -> { + val avatarIcon = state.content.icon + val avatarBackground = if ( + avatarIcon !is VaultItemIcon.VectorIcon && + avatarIcon !is VaultItemIcon.TextIcon + ) { + val elevation = LocalAbsoluteTonalElevation.current + 8.dp + MaterialTheme.colorScheme + .surfaceColorAtElevationSemi(elevation = elevation) + .combineAlpha(LocalContentColor.current.alpha) + } else { + rememberSecretAccentColor( + accentLight = state.content.data.accentLight, + accentDark = state.content.data.accentDark, + ) + } + avatarBackground + } + } + Avatar( + modifier = Modifier + .then( + if (isLoading) { + Modifier + .shimmer() + } else { + Modifier + }, + ), + color = avatarBackground, + ) { + val icon = SendViewState.content.cipher.icon.getOrNull(state) + if (icon != null) { + VaultItemIcon2( + icon, + modifier = Modifier + .alpha(LocalContentColor.current.alpha), + ) + } + } + Spacer(modifier = Modifier.width(16.dp)) + when (state.content) { + is SendViewState.Content.Loading -> { + SkeletonText( + modifier = Modifier + .fillMaxWidth(0.33f), + emphasis = MediumEmphasisAlpha, + ) + // Apparently a text has some sort of margins? + Text("") + } + + is SendViewState.Content.Cipher -> { + val name = state.content.data.name + Text( + text = name, + maxLines = 2, + overflow = TextOverflow.Ellipsis, + ) + } + + is SendViewState.Content.NotFound -> { + Text( + text = "Not found", + color = MaterialTheme.colorScheme.error + .combineAlpha(LocalContentColor.current.alpha), + ) + } + } + Spacer(modifier = Modifier.width(8.dp)) +} + +@Composable +private fun RowScope.VaultViewTitleActions( + state: SendViewState, +) { + if (state.content is SendViewState.Content.Cipher) { + val synced = state.content.synced + AnimatedVisibility( + modifier = Modifier + .alpha(LocalContentColor.current.alpha), + visible = !synced, + ) { + OfflineIcon( + modifier = Modifier + .minimumInteractiveComponentSize(), + ) + } + OptionsButton( + actions = state.content.actions, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/view/SendViewState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/view/SendViewState.kt new file mode 100644 index 00000000..b18e784b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/view/SendViewState.kt @@ -0,0 +1,42 @@ +package com.artemchep.keyguard.feature.send.view + +import androidx.compose.runtime.Immutable +import arrow.optics.optics +import com.artemchep.keyguard.common.model.DSend +import com.artemchep.keyguard.feature.home.vault.model.VaultItemIcon +import com.artemchep.keyguard.feature.home.vault.model.VaultViewItem +import com.artemchep.keyguard.ui.FlatItemAction + +@Immutable +@optics +data class SendViewState( + val content: Content = Content.Loading, +) { + companion object; + + @Immutable + @optics + sealed interface Content { + companion object; + + @Immutable + @optics + data class Cipher( + val data: DSend, + val icon: VaultItemIcon, + val synced: Boolean, + val onCopy: (() -> Unit)?, + val onShare: (() -> Unit)?, + val actions: List, + val items: List, + ) : Content { + companion object; + } + + @Immutable + data object NotFound : Content + + @Immutable + data object Loading : Content + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/view/SendViewStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/view/SendViewStateProducer.kt new file mode 100644 index 00000000..f202f181 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/view/SendViewStateProducer.kt @@ -0,0 +1,694 @@ +package com.artemchep.keyguard.feature.send.view + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Email +import androidx.compose.material.icons.outlined.Launch +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.SpanStyle +import androidx.compose.ui.text.buildAnnotatedString +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.android.downloader.journal.room.DownloadInfoEntity2 +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.ioRaise +import com.artemchep.keyguard.common.io.ioUnit +import com.artemchep.keyguard.common.model.BarcodeImageFormat +import com.artemchep.keyguard.common.model.DAccount +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.DSend +import com.artemchep.keyguard.common.model.LinkInfo +import com.artemchep.keyguard.common.service.clipboard.ClipboardService +import com.artemchep.keyguard.common.service.download.DownloadManager +import com.artemchep.keyguard.common.service.extract.LinkInfoExtractor +import com.artemchep.keyguard.common.service.twofa.TwoFaService +import com.artemchep.keyguard.common.usecase.AddCipherOpenedHistory +import com.artemchep.keyguard.common.usecase.ChangeCipherNameById +import com.artemchep.keyguard.common.usecase.ChangeCipherPasswordById +import com.artemchep.keyguard.common.usecase.CipherExpiringCheck +import com.artemchep.keyguard.common.usecase.CipherFieldSwitchToggle +import com.artemchep.keyguard.common.usecase.CipherIncompleteCheck +import com.artemchep.keyguard.common.usecase.CipherUnsecureUrlAutoFix +import com.artemchep.keyguard.common.usecase.CipherUnsecureUrlCheck +import com.artemchep.keyguard.common.usecase.CipherUrlCheck +import com.artemchep.keyguard.common.usecase.CopyCipherById +import com.artemchep.keyguard.common.usecase.CopyText +import com.artemchep.keyguard.common.usecase.DateFormatter +import com.artemchep.keyguard.common.usecase.DownloadAttachment +import com.artemchep.keyguard.common.usecase.FavouriteCipherById +import com.artemchep.keyguard.common.usecase.GetAccounts +import com.artemchep.keyguard.common.usecase.GetAppIcons +import com.artemchep.keyguard.common.usecase.GetCanWrite +import com.artemchep.keyguard.common.usecase.GetCollections +import com.artemchep.keyguard.common.usecase.GetConcealFields +import com.artemchep.keyguard.common.usecase.GetEnvSendUrl +import com.artemchep.keyguard.common.usecase.GetFolders +import com.artemchep.keyguard.common.usecase.GetGravatarUrl +import com.artemchep.keyguard.common.usecase.GetMarkdown +import com.artemchep.keyguard.common.usecase.GetOrganizations +import com.artemchep.keyguard.common.usecase.GetPasswordStrength +import com.artemchep.keyguard.common.usecase.GetSends +import com.artemchep.keyguard.common.usecase.GetWebsiteIcons +import com.artemchep.keyguard.common.usecase.MoveCipherToFolderById +import com.artemchep.keyguard.common.usecase.RemoveAttachment +import com.artemchep.keyguard.common.usecase.RemoveCipherById +import com.artemchep.keyguard.common.usecase.RestoreCipherById +import com.artemchep.keyguard.common.usecase.RetryCipher +import com.artemchep.keyguard.common.usecase.TrashCipherById +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.feature.attachments.util.createAttachmentItem +import com.artemchep.keyguard.feature.barcodetype.BarcodeTypeRoute +import com.artemchep.keyguard.feature.favicon.FaviconImage +import com.artemchep.keyguard.feature.favicon.FaviconUrl +import com.artemchep.keyguard.feature.home.vault.model.VaultViewItem +import com.artemchep.keyguard.feature.largetype.LargeTypeRoute +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.state.RememberStateFlowScope +import com.artemchep.keyguard.feature.navigation.state.copy +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.feature.send.action.createSendActionOrNull +import com.artemchep.keyguard.feature.send.action.createShareAction +import com.artemchep.keyguard.feature.send.toVaultItemIcon +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.buildContextItems +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.IconBox +import com.artemchep.keyguard.ui.icons.KeyguardView +import com.artemchep.keyguard.ui.selection.SelectionHandle +import com.artemchep.keyguard.ui.selection.selectionHandle +import com.artemchep.keyguard.ui.text.annotate +import io.ktor.http.Url +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.flow +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.toList +import org.kodein.di.allInstances +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +@Composable +fun sendViewScreenState( + contentColor: Color, + disabledContentColor: Color, + sendId: String, + accountId: String, +) = with(localDI().direct) { + sendViewScreenState( + getAccounts = instance(), + getCanWrite = instance(), + getSends = instance(), + getCollections = instance(), + getOrganizations = instance(), + getFolders = instance(), + getConcealFields = instance(), + getMarkdown = instance(), + getAppIcons = instance(), + getWebsiteIcons = instance(), + getPasswordStrength = instance(), + cipherUnsecureUrlCheck = instance(), + cipherUnsecureUrlAutoFix = instance(), + cipherFieldSwitchToggle = instance(), + moveCipherToFolderById = instance(), + changeCipherNameById = instance(), + changeCipherPasswordById = instance(), + retryCipher = instance(), + copyCipherById = instance(), + restoreCipherById = instance(), + trashCipherById = instance(), + removeCipherById = instance(), + favouriteCipherById = instance(), + downloadManager = instance(), + downloadAttachment = instance(), + removeAttachment = instance(), + cipherExpiringCheck = instance(), + cipherIncompleteCheck = instance(), + cipherUrlCheck = instance(), + tfaService = instance(), + clipboardService = instance(), + getGravatarUrl = instance(), + getEnvSendUrl = instance(), + dateFormatter = instance(), + addCipherOpenedHistory = instance(), + windowCoroutineScope = instance(), + linkInfoExtractors = allInstances(), + contentColor = contentColor, + disabledContentColor = disabledContentColor, + sendId = sendId, + accountId = accountId, + ) +} + +private class Holder( + val uri: DSecret.Uri, + val info: List, +) + +@Composable +fun sendViewScreenState( + contentColor: Color, + disabledContentColor: Color, + getAccounts: GetAccounts, + getCanWrite: GetCanWrite, + getSends: GetSends, + getCollections: GetCollections, + getOrganizations: GetOrganizations, + getFolders: GetFolders, + getConcealFields: GetConcealFields, + getMarkdown: GetMarkdown, + getAppIcons: GetAppIcons, + getWebsiteIcons: GetWebsiteIcons, + getPasswordStrength: GetPasswordStrength, + cipherUnsecureUrlCheck: CipherUnsecureUrlCheck, + cipherUnsecureUrlAutoFix: CipherUnsecureUrlAutoFix, + cipherFieldSwitchToggle: CipherFieldSwitchToggle, + moveCipherToFolderById: MoveCipherToFolderById, + changeCipherNameById: ChangeCipherNameById, + changeCipherPasswordById: ChangeCipherPasswordById, + retryCipher: RetryCipher, + copyCipherById: CopyCipherById, + restoreCipherById: RestoreCipherById, + trashCipherById: TrashCipherById, + removeCipherById: RemoveCipherById, + favouriteCipherById: FavouriteCipherById, + downloadManager: DownloadManager, + downloadAttachment: DownloadAttachment, + removeAttachment: RemoveAttachment, + cipherExpiringCheck: CipherExpiringCheck, + cipherIncompleteCheck: CipherIncompleteCheck, + cipherUrlCheck: CipherUrlCheck, + tfaService: TwoFaService, + clipboardService: ClipboardService, + getGravatarUrl: GetGravatarUrl, + getEnvSendUrl: GetEnvSendUrl, + dateFormatter: DateFormatter, + addCipherOpenedHistory: AddCipherOpenedHistory, + windowCoroutineScope: WindowCoroutineScope, + linkInfoExtractors: List>, + sendId: String, + accountId: String, +) = produceScreenState( + key = "send_view", + initial = SendViewState(), + args = arrayOf( + getAccounts, + getSends, + getCollections, + getOrganizations, + getFolders, + getConcealFields, + getWebsiteIcons, + getPasswordStrength, + downloadAttachment, + clipboardService, + dateFormatter, + windowCoroutineScope, + linkInfoExtractors, + sendId, + accountId, + ), +) { + val copy = copy( + clipboardService = clipboardService, + ) + + val selectionHandle = selectionHandle("selection") + val markdown = getMarkdown().first() + + val accountFlow = getAccounts() + .map { accounts -> + accounts + .firstOrNull { it.id.id == accountId } + } + .distinctUntilChanged() + val secretFlow = getSends() + .map { secrets -> + secrets + .firstOrNull { it.id == sendId && it.accountId == accountId } + } + .distinctUntilChanged() + combine( + accountFlow, + secretFlow, + getConcealFields(), + getAppIcons(), + getWebsiteIcons(), + getCanWrite(), + ) { array -> + val accountOrNull = array[0] as DAccount? + val secretOrNull = array[1] as DSend? + val concealFields = array[2] as Boolean + val appIcons = array[3] as Boolean + val websiteIcons = array[4] as Boolean + val canAddSecret = array[5] as Boolean + + val content = when { + accountOrNull == null || secretOrNull == null -> SendViewState.Content.NotFound + else -> { + val icon = secretOrNull.toVaultItemIcon( + appIcons = appIcons, + websiteIcons = websiteIcons, + ) + val url = getEnvSendUrl(secretOrNull) + .attempt() + .bind() + .getOrNull() + val info = if (url != null) { + buildString { + append(secretOrNull.name) + append(": ") + append(url) + } + } else { + null + } + SendViewState.Content.Cipher( + data = secretOrNull, + icon = icon, + synced = true, + actions = emptyList(), + onCopy = if (info != null) { + // lambda + { + copy.copy(info, hidden = false) + } + } else { + null + }, + onShare = if (info != null) { + // lambda + { + val intent = NavigationIntent.NavigateToShare(info) + navigate(intent) + } + } else { + null + }, + items = oh( + sharingScope = screenScope, + selectionHandle = selectionHandle, + canEdit = canAddSecret, + contentColor = contentColor, + disabledContentColor = disabledContentColor, + tfaService = tfaService, + retryCipher = retryCipher, + markdown = markdown, + concealFields = concealFields, + websiteIcons = websiteIcons, + downloadManager = downloadManager, + getGravatarUrl = getGravatarUrl, + getEnvSendUrl = getEnvSendUrl, + copy = copy, + dateFormatter = dateFormatter, + account = accountOrNull, + send = secretOrNull, + ).toList(), + ) + } + } + SendViewState( + content = content, + ) + } +} + +private fun RememberStateFlowScope.oh( + sharingScope: CoroutineScope, + selectionHandle: SelectionHandle, + canEdit: Boolean, + contentColor: Color, + disabledContentColor: Color, + tfaService: TwoFaService, + retryCipher: RetryCipher, + markdown: Boolean, + concealFields: Boolean, + websiteIcons: Boolean, + downloadManager: DownloadManager, + getGravatarUrl: GetGravatarUrl, + getEnvSendUrl: GetEnvSendUrl, + copy: CopyText, + dateFormatter: DateFormatter, + account: DAccount, + send: DSend, +) = flow { + if (send.disabled) { + val model = VaultViewItem.Info( + id = "disabled", + name = "Deactivated", + message = "This share is deactivated, no one can access it.", + long = false, + ) + emit(model) + } + + val text = send.text + if (text != null) { + val model = create( + copy = copy, + id = "text.text", + title = translate(Res.strings.text), + value = text.text.orEmpty(), + elevated = true, + ) + emit(model) + } + + val file = send.file + if (file != null) { + val downloadIo = kotlin.run { + ioRaise(RuntimeException("Downloading sends is not implemented yet.")) + } + val removeIo = kotlin.run { + ioUnit() + } + + val actualItem = createAttachmentItem( + tag = DownloadInfoEntity2.AttachmentDownloadTag( + localCipherId = "cipher.id", + remoteCipherId = "cipher.service.remote?.id", + attachmentId = file.id, + ), + selectionHandle = selectionHandle, + sharingScope = sharingScope, + attachment = file, + launchViewCipherData = null, + downloadManager = downloadManager, + downloadIo = downloadIo, + removeIo = removeIo, + ) + val model = VaultViewItem.Attachment( + id = "file.file", + item = actualItem, + ) + emit(model) + } + + val url = aaaa( + disabledContentColor = disabledContentColor, + websiteIcons = websiteIcons, + getEnvSendUrl = getEnvSendUrl, + id = "url.url", + accountId = account.accountId(), + send = send, + copy = copy, + ) + if (url != null) { + val section = VaultViewItem.Section( + id = "url", + text = translate(Res.strings.public_url), + ) + emit(section) + emit(url) + + val password = send.password + if (password != null) { + val w = VaultViewItem.Label( + id = "url.password", + text = AnnotatedString( + text = translate(Res.strings.send_password_is_required_to_access_label), + ), + ) + emit(w) + } + } + + val section = VaultViewItem.Section( + id = "iiinfo", + text = translate(Res.strings.info), + ) + emit(section) + + val accessCount = send.accessCount + val w = VaultViewItem.Value( + id = "info", + title = translate(Res.strings.access_count), + value = "$accessCount" + send.maxAccessCount?.let { " / $it" }.orEmpty(), + leading = { + IconBox(Icons.Outlined.KeyguardView) + }, + ) + emit(w) + + val w22 = VaultViewItem.Value( + id = "info.email", + title = translate(Res.strings.email_visibility), + value = if (send.hideEmail) { + translate(Res.strings.hidden) + } else { + translate(Res.strings.visible) + }, + leading = { + IconBox(Icons.Outlined.Email) + }, + ) + emit(w22) + + if (send.notes.isNotEmpty()) { + val section = VaultViewItem.Section( + id = "note", + text = translate(Res.strings.notes), + ) + emit(section) + val note = VaultViewItem.Note( + id = "note.text", + text = if (markdown) send.notes.trimIndent() else send.notes, + markdown = markdown, + ) + emit(note) + } + + val s = VaultViewItem.Spacer( + id = "end.spacer", + height = 24.dp, + ) + emit(s) + val x = VaultViewItem.Label( + id = "account", + text = annotate( + Res.strings.vault_view_saved_to_label, + account.username to SpanStyle( + color = contentColor, + ), + account.host to SpanStyle( + color = contentColor, + ), + ), + ) + emit(x) + val createdDate = send.createdDate + if (createdDate != null) { + val w = VaultViewItem.Label( + id = "created", + text = AnnotatedString( + translate( + Res.strings.vault_view_created_at_label, + dateFormatter.formatDateTime(createdDate), + ), + ), + ) + emit(w) + } + + val a = VaultViewItem.Label( + id = "revision", + text = AnnotatedString( + translate( + Res.strings.vault_view_revision_label, + dateFormatter.formatDateTime(send.revisionDate), + ), + ), + ) + emit(a) + val expirationDate = send.expirationDate + if (expirationDate != null) { + val b = VaultViewItem.Label( + id = "expiration", + text = AnnotatedString( + translate( + Res.strings.vault_view_expiration_scheduled_at_label, + dateFormatter.formatDateTime(expirationDate), + ), + ), + ) + emit(b) + } + val deletedDate = send.deletedDate + if (deletedDate != null) { + val b = VaultViewItem.Label( + id = "deleted", + text = AnnotatedString( + translate( + Res.strings.vault_view_deletion_scheduled_at_label, + dateFormatter.formatDateTime(deletedDate), + ), + ), + ) + emit(b) + } +} + +fun RememberStateFlowScope.create( + copy: CopyText, + id: String, + title: String?, + value: String, + badge: VaultViewItem.Value.Badge? = null, + leading: (@Composable RowScope.() -> Unit)? = null, + private: Boolean = false, + hidden: Boolean = false, + monospace: Boolean = false, + colorize: Boolean = false, + elevated: Boolean = false, +): VaultViewItem { + val dropdown = if (!hidden) { + buildContextItems { + section { + this += copy.FlatItemAction( + title = translate(Res.strings.copy), + value = value, + hidden = private, + ) + } + section { + this += LargeTypeRoute.showInLargeTypeActionOrNull( + translator = this@create, + text = value, + colorize = colorize, + navigate = ::navigate, + ) + this += LargeTypeRoute.showInLargeTypeActionAndLockOrNull( + translator = this@create, + text = value, + colorize = colorize, + navigate = ::navigate, + ) + this += BarcodeTypeRoute.showInBarcodeTypeActionOrNull( + translator = this@create, + data = value, + format = BarcodeImageFormat.QR_CODE, + navigate = ::navigate, + ) + } + section { + this += createShareAction( + translator = this@create, + text = value, + navigate = ::navigate, + ) + this += createSendActionOrNull( + text = value, + navigate = ::navigate, + ) + } + } + } else { + emptyList() + } + return VaultViewItem.Value( + id = id, + elevation = if (elevated) 1.dp else 0.dp, + title = title, + value = value, + private = private, + hidden = hidden, + monospace = monospace, + colorize = colorize, + leading = leading, + badge = badge, + dropdown = dropdown, + ) +} + +private suspend fun RememberStateFlowScope.aaaa( + disabledContentColor: Color, + websiteIcons: Boolean, + getEnvSendUrl: GetEnvSendUrl, + id: String, + accountId: String, + send: DSend, + copy: CopyText, +): VaultViewItem.Uri? { + val url = getEnvSendUrl(send) + .attempt() + .bind() + .getOrNull() + ?: return null + val dropdown = buildContextItems { + section { + this += copy.FlatItemAction( + title = translate(Res.strings.copy_url), + value = url, + ) + } + section { + this += FlatItemAction( + icon = Icons.Outlined.Launch, + title = translate(Res.strings.uri_action_launch_browser_title), + text = url, + trailing = { + ChevronIcon() + }, + onClick = { + val intent = NavigationIntent.NavigateToBrowser(url) + navigate(intent) + }, + ) + } + section { + this += createShareAction( + translator = this@aaaa, + text = url, + navigate = ::navigate, + ) + } + } + val faviconUrl = FaviconUrl( + serverId = accountId, + url = url, + ).takeIf { websiteIcons } + return VaultViewItem.Uri( + id = id, + icon = { + FaviconImage( + modifier = Modifier + .size(24.dp) + .clip(CircleShape), + imageModel = { faviconUrl }, + ) + }, + title = buildAnnotatedString { + append(url) + + val host = Url(url).host + val hostIndex = url.indexOf(host) + if (hostIndex != -1) { + addStyle( + style = SpanStyle( + color = disabledContentColor, + ), + start = 0, + end = hostIndex, + ) + addStyle( + style = SpanStyle( + color = disabledContentColor, + ), + start = hostIndex + host.length, + end = url.length, + ) + } + }, + dropdown = dropdown, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/view/VaultViewRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/view/VaultViewRoute.kt new file mode 100644 index 00000000..24f269be --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/send/view/VaultViewRoute.kt @@ -0,0 +1,17 @@ +package com.artemchep.keyguard.feature.send.view + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.Route + +data class SendViewRoute( + val sendId: String, + val accountId: String, +) : Route { + @Composable + override fun Content() { + SendViewScreen( + sendId = sendId, + accountId = accountId, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/sync/SyncItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/sync/SyncItem.kt new file mode 100644 index 00000000..c41e5627 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/sync/SyncItem.kt @@ -0,0 +1,26 @@ +package com.artemchep.keyguard.feature.sync + +sealed interface SyncItem { + val key: String + + data class Section( + override val key: String, + ) : SyncItem + + data class Account( + override val key: String, + val title: String, + val text: String, + /** + * Contains last sync status of the account, + * `null` if the account never had the sync + * performed yet. + */ + val lastSyncStatus: LastSyncStatus?, + ) : SyncItem { + data class LastSyncStatus( + val timestamp: String, + val success: Boolean, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/sync/SyncRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/sync/SyncRoute.kt new file mode 100644 index 00000000..1d9d6d8d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/sync/SyncRoute.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.sync + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.Route + +object SyncRoute : Route { + @Composable + override fun Content() { + SyncScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/sync/SyncScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/sync/SyncScreen.kt new file mode 100644 index 00000000..d40362a2 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/sync/SyncScreen.kt @@ -0,0 +1,305 @@ +package com.artemchep.keyguard.feature.sync + +import androidx.compose.animation.animateContentSize +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.widthIn +import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.CheckCircle +import androidx.compose.material.icons.outlined.ErrorOutline +import androidx.compose.material3.Badge +import androidx.compose.material3.BadgedBox +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.fold +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.Ah +import com.artemchep.keyguard.ui.AhContainer +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.FlatItemLayout +import com.artemchep.keyguard.ui.FlatItemTextContent +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.ScaffoldLazyColumn +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.KeyguardCipher +import com.artemchep.keyguard.ui.shimmer.shimmer +import com.artemchep.keyguard.ui.theme.badgeContainer +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.theme.ok +import com.artemchep.keyguard.ui.toolbar.LargeToolbar +import com.artemchep.keyguard.ui.util.HorizontalDivider +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun SyncScreen() { + val loadableState = produceSyncState() + SyncContent( + loadableState = loadableState, + ) +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +private fun SyncContent( + loadableState: Loadable, +) { + val s = loadableState.fold( + ifLoading = { + remember { + mutableStateOf(emptyList()) + } + }, + ifOk = { + it.itemsFlow.collectAsState() + }, + ) + val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + ScaffoldLazyColumn( + modifier = Modifier + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + LargeToolbar( + title = { + Text( + text = stringResource(Res.strings.syncstatus_header_title), + ) + }, + navigationIcon = { + NavigationIcon() + }, + scrollBehavior = scrollBehavior, + ) + }, + ) { + itemsIndexed( + items = s.value, + key = { _, it -> it.key }, + ) { index, item -> + if (index > 0) { + HorizontalDivider() + } + TestK( + modifier = Modifier + .animateItemPlacement(), + item = item, + ) + } + } +} + +@Composable +private fun TestK( + modifier: Modifier = Modifier, + item: SyncState.Item, +) { + Column( + modifier = modifier, + ) { + FlatItemLayout( + leading = { + when (item.status) { + is SyncState.Item.Status.Ok, + is SyncState.Item.Status.Pending, + -> { + Icon( + imageVector = Icons.Outlined.CheckCircle, + contentDescription = null, + tint = MaterialTheme.colorScheme.ok, + ) + } + + is SyncState.Item.Status.Failed -> { + Icon( + imageVector = Icons.Outlined.ErrorOutline, + contentDescription = null, + tint = MaterialTheme.colorScheme.error, + ) + } + } + }, + content = { + FlatItemTextContent( + title = { + Text( + text = item.email, + ) + }, + text = { + Text( + text = item.host, + ) + }, + ) + }, + onClick = item.onClick, + ) + Column( + modifier = Modifier + .padding(horizontal = 16.dp), + ) { + Spacer( + modifier = Modifier + .height(8.dp), + ) + when (item.status) { + is SyncState.Item.Status.Ok -> { + BadgeStatusUpToDate() + } + + is SyncState.Item.Status.Pending -> { + BadgeStatusPending( + badge = item.status.text, + ) + } + + is SyncState.Item.Status.Failed -> { + BadgeStatusFailed() + } + } + if (item.lastSyncTimestamp != null) { + Spacer( + modifier = Modifier + .height(4.dp), + ) + Text( + text = item.lastSyncTimestamp, + style = MaterialTheme.typography.bodySmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + ) + } + Spacer( + modifier = Modifier + .height(16.dp), + ) + } + item.items.forEach { action -> + when (action) { + is FlatItemAction -> { + FlatItem( + leading = { + Icon( + Icons.Outlined.KeyguardCipher, + null, + ) + }, + trailing = { + ChevronIcon() + }, + title = { + Text(action.title) + }, + elevation = 1.dp, + onClick = action.onClick, + ) + } + + else -> { + } + } + } + } +} + +// +// Badges +// + +@Composable +private fun BadgeStatusUpToDate( + modifier: Modifier = Modifier, +) { + Ah( + modifier = modifier, + score = 1f, + text = stringResource(Res.strings.syncstatus_status_up_to_date), + ) +} + +@Composable +private fun BadgeStatusPending( + modifier: Modifier = Modifier, + badge: String? = null, +) { + Box( + modifier = modifier, + ) { + AhContainer( + modifier = Modifier + .matchParentSize() + .shimmer(), + score = 1f, + ) { + // Do nothing. + } + Row( + modifier = Modifier + .padding( + start = 4.dp, + top = 4.dp, + bottom = 4.dp, + end = 4.dp, + ) + .widthIn(min = 36.dp), + horizontalArrangement = Arrangement.Center, + verticalAlignment = Alignment.CenterVertically, + ) { + BadgedBox( + modifier = Modifier + .padding(horizontal = 4.dp), + badge = { + Badge( + containerColor = MaterialTheme.colorScheme.badgeContainer, + ) { + Text( + modifier = Modifier + .animateContentSize(), + text = badge.orEmpty(), + ) + } + }, + ) { + Text( + modifier = Modifier + .animateContentSize(), + text = "Pending", + style = MaterialTheme.typography.labelMedium, + color = MaterialTheme.colorScheme.onSecondaryContainer, + ) + } + } + } +} + +@Composable +private fun BadgeStatusFailed( + modifier: Modifier = Modifier, +) { + Ah( + modifier = modifier, + score = 0f, + text = stringResource(Res.strings.syncstatus_status_failed), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/sync/SyncState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/sync/SyncState.kt new file mode 100644 index 00000000..99d27146 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/sync/SyncState.kt @@ -0,0 +1,28 @@ +package com.artemchep.keyguard.feature.sync + +import com.artemchep.keyguard.ui.ContextItem +import kotlinx.coroutines.flow.StateFlow + +data class SyncState( + val itemsFlow: StateFlow>, +) { + data class Item( + val key: String, + val email: String, + val host: String, + val status: Status, + val items: List, + val lastSyncTimestamp: String?, + val onClick: (() -> Unit)?, + ) { + sealed interface Status { + data object Ok : Status + + data class Pending( + val text: String, + ) : Status + + data object Failed : Status + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/sync/SyncStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/sync/SyncStateProducer.kt new file mode 100644 index 00000000..b7358912 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/sync/SyncStateProducer.kt @@ -0,0 +1,245 @@ +package com.artemchep.keyguard.feature.sync + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.model.DAccount +import com.artemchep.keyguard.common.model.DFilter +import com.artemchep.keyguard.common.model.DMeta +import com.artemchep.keyguard.common.model.DProfile +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.usecase.DateFormatter +import com.artemchep.keyguard.common.usecase.GetAccounts +import com.artemchep.keyguard.common.usecase.GetCiphers +import com.artemchep.keyguard.common.usecase.GetCollections +import com.artemchep.keyguard.common.usecase.GetFolders +import com.artemchep.keyguard.common.usecase.GetMetas +import com.artemchep.keyguard.common.usecase.GetOrganizations +import com.artemchep.keyguard.common.usecase.GetProfiles +import com.artemchep.keyguard.feature.auth.AccountViewRoute +import com.artemchep.keyguard.feature.home.vault.VaultRoute +import com.artemchep.keyguard.feature.home.vault.folders.FoldersRoute +import com.artemchep.keyguard.feature.home.vault.screen.VaultListRoute +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.buildContextItems +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.stateIn +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +@Composable +fun produceSyncState( +) = with(localDI().direct) { + produceSyncState( + dateFormatter = instance(), + getMetas = instance(), + getAccounts = instance(), + getProfiles = instance(), + getCiphers = instance(), + getCollections = instance(), + getOrganizations = instance(), + getFolders = instance(), + ) +} + +private data class CombinedAccountInfo( + val id: String, + val account: DAccount?, + val profile: DProfile?, + val meta: DMeta?, + val pendingCiphersCount: Int, + val pendingFoldersCount: Int, + val failedCiphersCount: Int, + val failedFoldersCount: Int, +) + +@Composable +fun produceSyncState( + dateFormatter: DateFormatter, + getMetas: GetMetas, + getAccounts: GetAccounts, + getProfiles: GetProfiles, + getCiphers: GetCiphers, + getCollections: GetCollections, + getOrganizations: GetOrganizations, + getFolders: GetFolders, +): Loadable = produceScreenState( + key = "sync_state", + initial = Loadable.Loading, +) { + val ciphersByAccountIdFlow = getCiphers() + .map { ciphers -> + ciphers + .groupBy { it.accountId } + } + val foldersByAccountIdFlow = getFolders() + .map { folders -> + folders + .groupBy { it.accountId } + } + val f = combine( + getAccounts(), + getProfiles(), + getMetas(), + ciphersByAccountIdFlow, + foldersByAccountIdFlow, + ) { accounts, profiles, metas, ciphersByAccountId, foldersByAccountId -> + val accountsById = accounts.groupBy { it.id.id } + val profilesById = profiles.groupBy { it.accountId } + val metasById = metas.groupBy { it.accountId.id } + + // Collect all of the account IDs. + val accountIds = sequence { + accountsById.keys.forEach { accountId -> + yield(accountId) + } + profilesById.keys.forEach { accountId -> + yield(accountId) + } + metasById.keys.forEach { accountId -> + yield(accountId) + } + ciphersByAccountId.keys.forEach { accountId -> + yield(accountId) + } + foldersByAccountId.keys.forEach { accountId -> + yield(accountId) + } + }.toSet() + accountIds + .map { accountId -> + val account = accountsById[accountId]?.firstOrNull() + val profile = profilesById[accountId]?.firstOrNull() + val meta = metasById[accountId]?.firstOrNull() + // Items + val failedCiphers = ciphersByAccountId[accountId].orEmpty() + val failedFolders = foldersByAccountId[accountId].orEmpty() + CombinedAccountInfo( + id = accountId, + account = account, + profile = profile, + meta = meta, + pendingCiphersCount = failedCiphers.count { !it.synced }, + pendingFoldersCount = failedFolders.count { !it.synced }, + failedCiphersCount = failedCiphers.count { it.hasError }, + failedFoldersCount = failedFolders.count { it.hasError }, + ) + } + .map { c -> + val lastSyncTimestamp = kotlin.run { + val timestamp = c.meta?.lastSyncTimestamp + if (timestamp != null) { + val date = dateFormatter.formatDateTime(timestamp) + translate(Res.strings.account_last_synced_at, date) + } else { + null + } + } + val status = kotlin.run { + val failed = c.failedCiphersCount > 0 || + c.failedFoldersCount > 0 || + c.meta?.lastSyncResult is DMeta.LastSyncResult.Failure + val pending = c.pendingCiphersCount > 0 || + c.pendingFoldersCount > 0 + if (failed) { + SyncState.Item.Status.Failed + } else if (pending) { + SyncState.Item.Status.Pending( + text = (c.pendingCiphersCount + c.pendingFoldersCount) + .toString(), + ) + } else { + SyncState.Item.Status.Ok + } + } + val items = buildContextItems { + if (c.failedCiphersCount > 0) { + this += FlatItemAction( + title = translate(Res.strings.items), + onClick = { + val filter = DFilter.And( + listOf( + DFilter.ById( + id = c.id, + what = DFilter.ById.What.ACCOUNT, + ), + DFilter.ByError( + error = true, + ), + ), + ) + val route = VaultListRoute( + args = VaultRoute.Args( + appBar = VaultRoute.Args.AppBar( + title = translate(Res.strings.items), + subtitle = translate(Res.strings.syncstatus_header_title), + ), + filter = filter, + trash = null, + preselect = false, + canAddSecrets = false, + ), + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + } + if (c.failedFoldersCount > 0) { + this += FlatItemAction( + title = translate(Res.strings.folders), + onClick = { + val filter = DFilter.And( + listOf( + DFilter.ById( + id = c.id, + what = DFilter.ById.What.ACCOUNT, + ), + DFilter.ByError( + error = true, + ), + ), + ) + val route = FoldersRoute( + args = FoldersRoute.Args( + filter = filter, + ), + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + } + } + SyncState.Item( + key = c.id, + email = c.profile?.email.orEmpty(), + host = c.account?.host.orEmpty(), + status = status, + items = items, + lastSyncTimestamp = lastSyncTimestamp, + onClick = { + val route = AccountViewRoute( + accountId = AccountId(c.id), + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + } + }.stateIn(screenScope) + + + val state = SyncState( + itemsFlow = f, + ) + flowOf(state) + .map { + Loadable.Ok(it) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/team/AboutTeamRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/team/AboutTeamRoute.kt new file mode 100644 index 00000000..9de4fb2d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/team/AboutTeamRoute.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.team + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.Route + +object AboutTeamRoute : Route { + @Composable + override fun Content() { + AboutTeamScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/team/AboutTeamScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/team/AboutTeamScreen.kt new file mode 100644 index 00000000..ff78db75 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/team/AboutTeamScreen.kt @@ -0,0 +1,199 @@ +package com.artemchep.keyguard.feature.team + +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.luminance +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.feature.home.vault.component.LargeSection +import com.artemchep.keyguard.feature.home.vault.component.Section +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.Avatar +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.ScaffoldColumn +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.toolbar.LargeToolbar +import compose.icons.FeatherIcons +import compose.icons.feathericons.Github +import compose.icons.feathericons.Instagram +import dev.icerock.moko.resources.compose.painterResource +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.collections.immutable.toPersistentList + +private data class SocialNetwork( + val title: String, + val username: String, + val icon: @Composable () -> Unit, + val color: Color, + val url: String, +) + +private data class SocialNetworkItem( + val title: String, + val username: String, + val leading: @Composable RowScope.() -> Unit, + val onClick: () -> Unit, +) + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun AboutTeamScreen() { + val navController by rememberUpdatedState(LocalNavigationController.current) + val socialNetworks = remember { + listOf( + SocialNetwork( + title = "GitHub", + username = "AChep", + icon = icon(FeatherIcons.Github), + color = Color.Black, + url = "https://github.com/AChep/", + ), + SocialNetwork( + title = "Mastodon", + username = "artemchep", + icon = { + Image( + modifier = Modifier + .size(24.dp) + .padding(1.dp), + painter = painterResource(Res.images.ic_mastodon), + contentDescription = null, + ) + }, + color = Color(0xFF595aff), + url = "https://mastodon.social/@artemchep", + ), + SocialNetwork( + title = "Instagram", + username = "artemchep", + icon = icon(FeatherIcons.Instagram), + color = Color(0xFF8134AF), + url = "https://instagram.com/artemchep/", + ), + ).map { socialNetwork -> + SocialNetworkItem( + title = socialNetwork.title, + username = socialNetwork.username, + leading = { + Avatar( + color = socialNetwork.color, + ) { + val tint = + if (socialNetwork.color.luminance() > 0.5f) Color.Black else Color.White + CompositionLocalProvider( + LocalContentColor provides tint, + ) { + Box( + modifier = Modifier + .align(Alignment.Center), + ) { + socialNetwork.icon() + } + } + } + }, + onClick = { + val intent = NavigationIntent.NavigateToBrowser(socialNetwork.url) + navController.queue(intent) + }, + ) + }.toPersistentList() + } + + val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + ScaffoldColumn( + modifier = Modifier + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + LargeToolbar( + title = { + Text( + text = stringResource(Res.strings.team_header_title), + ) + }, + navigationIcon = { + NavigationIcon() + }, + scrollBehavior = scrollBehavior, + ) + }, + ) { + LargeSection( + text = "Artem Chepurnyi", + trailing = { + Text( + text = "\uD83C\uDDFA\uD83C\uDDE6", + ) + }, + ) + Text( + modifier = Modifier + .padding(horizontal = 16.dp), + text = stringResource(Res.strings.team_artem_whoami_text), + ) + Section( + text = stringResource(Res.strings.team_follow_me_section), + ) + socialNetworks.forEach { item -> + FlatItem( + leading = item.leading, + trailing = { + ChevronIcon() + }, + title = { + Text(item.title) + }, + onClick = item.onClick, + ) + } + Spacer( + modifier = Modifier + .height(16.dp), + ) + Text( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + text = "Thanks to Vira & my friends for supporting me and patiently testing the app.", + style = MaterialTheme.typography.bodyMedium, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + ) + /* + LargeSection( + text = "Community", + ) + Section( + text = "Localization", + ) + SkeletonItem() + SkeletonItem() + SkeletonItem() + */ + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/tfa/directory/TwoFaServiceListRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/tfa/directory/TwoFaServiceListRoute.kt new file mode 100644 index 00000000..86ea30dd --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/tfa/directory/TwoFaServiceListRoute.kt @@ -0,0 +1,41 @@ +package com.artemchep.keyguard.feature.tfa.directory + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Folder +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.Route +import com.artemchep.keyguard.feature.navigation.state.TranslatorScope +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.icons.KeyguardTwoFa +import com.artemchep.keyguard.ui.icons.iconSmall + +object TwoFaServiceListRoute : Route { + fun actionOrNull( + translator: TranslatorScope, + navigate: (NavigationIntent) -> Unit, + ) = action( + translator = translator, + navigate = navigate, + ) + + fun action( + translator: TranslatorScope, + navigate: (NavigationIntent) -> Unit, + ) = FlatItemAction( + leading = iconSmall(Icons.Outlined.Folder, Icons.Outlined.KeyguardTwoFa), + title = translator.translate(Res.strings.tfa_directory_title), + text = translator.translate(Res.strings.tfa_directory_text), + onClick = { + val route = TwoFaServiceListRoute + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + + @Composable + override fun Content() { + TwoFaServiceListScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/tfa/directory/TwoFaServiceListScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/tfa/directory/TwoFaServiceListScreen.kt new file mode 100644 index 00000000..b801f024 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/tfa/directory/TwoFaServiceListScreen.kt @@ -0,0 +1,252 @@ +package com.artemchep.keyguard.feature.tfa.directory + +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyListState +import androidx.compose.foundation.lazy.items +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.OpenInBrowser +import androidx.compose.material.pullrefresh.pullRefresh +import androidx.compose.material.pullrefresh.rememberPullRefreshState +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.IconButton +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.runtime.snapshotFlow +import androidx.compose.ui.Modifier +import androidx.compose.ui.input.nestedscroll.nestedScroll +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.flatMap +import com.artemchep.keyguard.common.model.getOrNull +import com.artemchep.keyguard.feature.EmptySearchView +import com.artemchep.keyguard.feature.ErrorView +import com.artemchep.keyguard.feature.home.vault.component.SearchTextField +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.DefaultProgressBar +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.ScaffoldLazyColumn +import com.artemchep.keyguard.ui.focus.FocusRequester2 +import com.artemchep.keyguard.ui.focus.focusRequester2 +import com.artemchep.keyguard.ui.icons.IconBox +import com.artemchep.keyguard.ui.poweredby.URL_2FA +import com.artemchep.keyguard.ui.pulltosearch.PullToSearch +import com.artemchep.keyguard.ui.skeleton.SkeletonItem +import com.artemchep.keyguard.ui.toolbar.CustomToolbar +import com.artemchep.keyguard.ui.toolbar.content.CustomToolbarContent +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.filter +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.withIndex + +@Composable +fun TwoFaServiceListScreen( +) { + val loadableState = produceTwoFaServiceListState() + TwoFaServiceListScreen( + loadableState = loadableState, + ) +} + +@OptIn(ExperimentalMaterial3Api::class, ExperimentalFoundationApi::class) +@Composable +fun TwoFaServiceListScreen( + loadableState: Loadable, +) { + val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior() + val filterState = run { + val filterFlow = loadableState.getOrNull()?.filter + remember(filterFlow) { + filterFlow ?: MutableStateFlow(null) + }.collectAsState() + } + + val listRevision = + loadableState.getOrNull()?.content?.getOrNull()?.getOrNull()?.revision + val listState = remember { + LazyListState( + firstVisibleItemIndex = 0, + firstVisibleItemScrollOffset = 0, + ) + } + + LaunchedEffect(listRevision) { + // TODO: How do you wait till the layout state start to represent + // the actual data? + val listSize = + loadableState.getOrNull()?.content?.getOrNull()?.getOrNull()?.items?.size + snapshotFlow { listState.layoutInfo.totalItemsCount } + .withIndex() + .filter { + it.index > 0 || it.value == listSize + } + .first() + + listState.scrollToItem(0, 0) + } + + val focusRequester = remember { FocusRequester2() } + // Auto focus the text field + // on launch. + LaunchedEffect( + focusRequester, + filterState, + ) { + snapshotFlow { filterState.value } + .first { it?.query?.onChange != null } + delay(100L) + focusRequester.requestFocus() + } + + val pullRefreshState = rememberPullRefreshState( + refreshing = false, + onRefresh = { + focusRequester.requestFocus() + }, + ) + ScaffoldLazyColumn( + modifier = Modifier + .pullRefresh(pullRefreshState) + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + CustomToolbar( + scrollBehavior = scrollBehavior, + ) { + Column { + CustomToolbarContent( + title = stringResource(Res.strings.tfa_directory_title), + icon = { + NavigationIcon() + }, + actions = { + val updatedNavigationController by rememberUpdatedState( + LocalNavigationController.current, + ) + IconButton( + onClick = { + val intent = NavigationIntent.NavigateToBrowser(URL_2FA) + updatedNavigationController.queue(intent) + }, + ) { + IconBox(Icons.Outlined.OpenInBrowser) + } + }, + ) + + val query = filterState.value?.query + val queryText = query?.state?.value.orEmpty() + SearchTextField( + modifier = Modifier + .focusRequester2(focusRequester), + text = queryText, + placeholder = stringResource(Res.strings.tfa_directory_search_placeholder), + searchIcon = false, + leading = {}, + trailing = {}, + onTextChange = query?.onChange, + onGoClick = null, + ) + } + } + }, + pullRefreshState = pullRefreshState, + overlay = { + val filterRevision = filterState.value?.revision + DefaultProgressBar( + visible = listRevision != null && filterRevision != null && + listRevision != filterRevision, + ) + + PullToSearch( + modifier = Modifier + .padding(contentPadding.value), + pullRefreshState = pullRefreshState, + ) + }, + listState = listState, + ) { + val contentState = loadableState + .flatMap { it.content } + when (contentState) { + is Loadable.Loading -> { + for (i in 1..3) { + item("skeleton.$i") { + SkeletonItem() + } + } + } + + is Loadable.Ok -> { + contentState.value.fold( + ifLeft = { e -> + item("error") { + ErrorView( + text = { + Text(text = "Failed to load app list!") + }, + exception = e, + ) + } + }, + ifRight = { content -> + val items = content.items + if (items.isEmpty()) { + item("empty") { + NoItemsPlaceholder() + } + } + + items( + items = items, + key = { it.key }, + ) { item -> + AppItem( + modifier = Modifier + .animateItemPlacement(), + item = item, + ) + } + }, + ) + } + } + } +} + +@Composable +private fun NoItemsPlaceholder( + modifier: Modifier = Modifier, +) { + EmptySearchView( + modifier = modifier, + ) +} + +@Composable +private fun AppItem( + modifier: Modifier, + item: TwoFaServiceListState.Item, +) { + FlatItem( + modifier = modifier, + leading = { + item.icon() + }, + title = { + Text(item.name) + }, + onClick = item.onClick, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/tfa/directory/TwoFaServiceListState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/tfa/directory/TwoFaServiceListState.kt new file mode 100644 index 00000000..20db857d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/tfa/directory/TwoFaServiceListState.kt @@ -0,0 +1,40 @@ +package com.artemchep.keyguard.feature.tfa.directory + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.Immutable +import androidx.compose.ui.text.AnnotatedString +import arrow.core.Either +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.service.twofa.TwoFaServiceInfo +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import kotlinx.coroutines.flow.StateFlow + +data class TwoFaServiceListState( + val filter: StateFlow, + val content: Loadable>, +) { + @Immutable + data class Filter( + val revision: Int, + val query: TextFieldModel2, + ) { + companion object + } + + @Immutable + data class Content( + val revision: Int, + val items: List, + ) { + companion object + } + + @Immutable + data class Item( + val key: String, + val icon: @Composable () -> Unit, + val name: AnnotatedString, + val data: TwoFaServiceInfo, + val onClick: (() -> Unit)? = null, + ) +} \ No newline at end of file diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/tfa/directory/TwoFaServiceListStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/tfa/directory/TwoFaServiceListStateProducer.kt new file mode 100644 index 00000000..063177f3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/tfa/directory/TwoFaServiceListStateProducer.kt @@ -0,0 +1,155 @@ +package com.artemchep.keyguard.feature.tfa.directory + +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.unit.dp +import arrow.core.partially1 +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.service.twofa.TwoFaService +import com.artemchep.keyguard.common.service.twofa.TwoFaServiceInfo +import com.artemchep.keyguard.feature.crashlytics.crashlyticsAttempt +import com.artemchep.keyguard.feature.favicon.FaviconImage +import com.artemchep.keyguard.feature.favicon.FaviconUrl +import com.artemchep.keyguard.feature.home.vault.search.IndexedText +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.feature.search.search.IndexedModel +import com.artemchep.keyguard.feature.search.search.mapSearch +import com.artemchep.keyguard.feature.search.search.searchFilter +import com.artemchep.keyguard.feature.search.search.searchQueryHandle +import kotlinx.coroutines.flow.asFlow +import kotlinx.coroutines.flow.map +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +private class TwoFaServiceListUiException( + msg: String, + cause: Throwable, +) : RuntimeException(msg, cause) + +@Composable +fun produceTwoFaServiceListState( +) = with(localDI().direct) { + produceTwoFaServiceListState( + twoFaService = instance(), + ) +} + +@Composable +fun produceTwoFaServiceListState( + twoFaService: TwoFaService, +): Loadable = produceScreenState( + key = "tfa_service_list", + initial = Loadable.Loading, + args = arrayOf(), +) { + val queryHandle = searchQueryHandle("query") + val queryFlow = searchFilter(queryHandle) { model, revision -> + TwoFaServiceListState.Filter( + revision = revision, + query = model, + ) + } + + val modelComparator = Comparator { a: TwoFaServiceInfo, b: TwoFaServiceInfo -> + a.name.compareTo(b.name, ignoreCase = true) + } + + fun onClick(model: TwoFaServiceInfo) { + val route = TwoFaServiceViewRoute( + args = TwoFaServiceViewRoute.Args( + model = model, + ), + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + } + + fun List.toItems(): List { + val nameCollisions = mutableMapOf() + return this + .sortedWith(modelComparator) + .map { appInfo -> + val key = kotlin.run { + val newPackageNameCollisionCounter = nameCollisions + .getOrDefault(appInfo.name, 0) + 1 + nameCollisions[appInfo.name] = + newPackageNameCollisionCounter + appInfo.name + ":" + newPackageNameCollisionCounter + } + val faviconUrl = appInfo.documentation?.let { url -> + FaviconUrl( + serverId = null, + url = url, + ) + } + TwoFaServiceListState.Item( + key = key, + icon = { + FaviconImage( + modifier = Modifier + .size(24.dp) + .clip(CircleShape), + imageModel = { faviconUrl }, + ) + }, + name = AnnotatedString(appInfo.name), + data = appInfo, + onClick = ::onClick + .partially1(appInfo), + ) + } + } + + val itemsFlow = twoFaService.get() + .asFlow() + .map { apps -> + apps + .toItems() + // Index for the search. + .map { item -> + IndexedModel( + model = item, + indexedText = IndexedText.invoke(item.name.text), + ) + } + } + .mapSearch( + handle = queryHandle, + ) { item, result -> + // Replace the origin text with the one with + // search decor applied to it. + item.copy(name = result.highlightedText) + } + val contentFlow = itemsFlow + .crashlyticsAttempt { e -> + val msg = "Failed to get the just-delete-me list!" + TwoFaServiceListUiException( + msg = msg, + cause = e, + ) + } + .map { result -> + val contentOrException = result + .map { (items, revision) -> + TwoFaServiceListState.Content( + revision = revision, + items = items, + ) + } + Loadable.Ok(contentOrException) + } + contentFlow + .map { content -> + val state = TwoFaServiceListState( + filter = queryFlow, + content = content, + ) + Loadable.Ok(state) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/tfa/directory/TwoFaServiceViewRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/tfa/directory/TwoFaServiceViewRoute.kt new file mode 100644 index 00000000..8ddd1a3a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/tfa/directory/TwoFaServiceViewRoute.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.feature.tfa.directory + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.service.twofa.TwoFaServiceInfo +import com.artemchep.keyguard.feature.navigation.DialogRoute + +data class TwoFaServiceViewRoute( + val args: Args, +) : DialogRoute { + data class Args( + val model: TwoFaServiceInfo, + ) + + @Composable + override fun Content() { + TwoFaServiceViewScreen( + args = args, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/tfa/directory/TwoFaServiceViewScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/tfa/directory/TwoFaServiceViewScreen.kt new file mode 100644 index 00000000..ef50c022 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/tfa/directory/TwoFaServiceViewScreen.kt @@ -0,0 +1,250 @@ +package com.artemchep.keyguard.feature.tfa.directory + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.FlowRow +import androidx.compose.foundation.layout.FlowRowScope +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.OpenInNew +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.getOrNull +import com.artemchep.keyguard.feature.dialog.Dialog +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.KeyguardTwoFa +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.markdown.Md +import com.artemchep.keyguard.ui.poweredby.PoweredBy2factorauth +import com.artemchep.keyguard.ui.skeleton.SkeletonText +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.theme.monoFontFamily +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun TwoFaServiceViewScreen( + args: TwoFaServiceViewRoute.Args, +) { + val loadableState = produceTwoFaServiceViewState( + args = args, + ) + TwoFaServiceViewScreen( + loadableState = loadableState, + ) +} + +@OptIn(ExperimentalLayoutApi::class) +@Composable +fun TwoFaServiceViewScreen( + loadableState: Loadable, +) { + Dialog( + icon = icon(Icons.Outlined.KeyguardTwoFa), + title = { + when (loadableState) { + is Loadable.Loading -> { + SkeletonText( + modifier = Modifier + .width(72.dp), + ) + } + + is Loadable.Ok -> { + val title = loadableState.value.content.getOrNull() + ?.model?.name + .orEmpty() + Text( + text = title, + ) + } + } + + Text( + text = stringResource(Res.strings.tfa_directory_title), + style = MaterialTheme.typography.titleSmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + ) + + HeaderChipContainer( + modifier = Modifier + .padding(top = 4.dp), + ) { + val chipModifier = Modifier + .background( + color = LocalContentColor.current + .combineAlpha(DisabledEmphasisAlpha) + .combineAlpha(DisabledEmphasisAlpha), + shape = MaterialTheme.shapes.small, + ) + .padding( + horizontal = 4.dp, + vertical = 2.dp, + ) + val chipTextStyle = MaterialTheme.typography.labelSmall + when (loadableState) { + is Loadable.Loading -> { + repeat(2) { + SkeletonText( + modifier = chipModifier + .width(48.dp), + style = chipTextStyle, + ) + } + } + + is Loadable.Ok -> { + val types = loadableState.value.content.getOrNull() + ?.model?.tfa + types?.forEach { type -> + Text( + modifier = chipModifier, + text = type, + style = chipTextStyle, + fontFamily = monoFontFamily, + ) + } + } + } + } + }, + content = { + Column { + val state = loadableState.getOrNull()?.content?.getOrNull() + val notes = state?.model?.notes + if (notes != null) { + Md( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + markdown = notes, + ) + Spacer( + modifier = Modifier + .height(16.dp), + ) + } + + val websiteUrl = state?.model?.url + if (websiteUrl != null) { + FlatLaunchBrowserItem( + title = stringResource(Res.strings.uri_action_launch_website_title), + url = websiteUrl, + ) + } + + val documentationUrl = state?.model?.documentation + if (documentationUrl != null) { + FlatLaunchBrowserItem( + title = stringResource(Res.strings.uri_action_launch_docs_title), + url = documentationUrl, + ) + } + + Spacer( + modifier = Modifier + .height(8.dp), + ) + + PoweredBy2factorauth( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding) + .fillMaxWidth(), + ) + } + }, + contentScrollable = true, + actions = { + val updatedOnClose by rememberUpdatedState(loadableState.getOrNull()?.onClose) + TextButton( + enabled = updatedOnClose != null, + onClick = { + updatedOnClose?.invoke() + }, + ) { + Text(stringResource(Res.strings.close)) + } + }, + ) +} + +@OptIn(ExperimentalLayoutApi::class) +@Composable +private fun HeaderChipContainer( + modifier: Modifier = Modifier, + content: @Composable FlowRowScope.() -> Unit, +) { + FlowRow( + modifier = modifier, + horizontalArrangement = Arrangement.spacedBy(8.dp, Alignment.CenterHorizontally), + verticalArrangement = Arrangement.spacedBy(8.dp), + ) { + content() + } +} + +@Composable +fun FlatLaunchBrowserItem( + modifier: Modifier = Modifier, + title: String, + url: String?, +) { + val updatedUrl by rememberUpdatedState(url) + val updatedNavigationController by rememberUpdatedState(LocalNavigationController.current) + FlatItem( + modifier = modifier, + leading = icon(Icons.Outlined.OpenInNew), + title = { + Text( + text = title, + maxLines = 3, + ) + }, + text = if (updatedUrl != null) { + // composable + { + Text( + text = updatedUrl.orEmpty(), + maxLines = 2, + overflow = TextOverflow.Ellipsis, + ) + } + } else { + null + }, + trailing = { + ChevronIcon() + }, + onClick = { + // Open the website, if it's available. + updatedUrl?.let { + val intent = NavigationIntent.NavigateToBrowser(it) + updatedNavigationController.queue(intent) + } + }, + enabled = updatedUrl != null, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/tfa/directory/TwoFaServiceViewState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/tfa/directory/TwoFaServiceViewState.kt new file mode 100644 index 00000000..47a3fb3a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/tfa/directory/TwoFaServiceViewState.kt @@ -0,0 +1,17 @@ +package com.artemchep.keyguard.feature.tfa.directory + +import androidx.compose.runtime.Immutable +import arrow.core.Either +import com.artemchep.keyguard.common.service.twofa.TwoFaServiceInfo + +data class TwoFaServiceViewState( + val content: Either, + val onClose: (() -> Unit)? = null, +) { + @Immutable + data class Content( + val model: TwoFaServiceInfo, + ) { + companion object + } +} \ No newline at end of file diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/tfa/directory/TwoFaServiceViewStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/tfa/directory/TwoFaServiceViewStateProducer.kt new file mode 100644 index 00000000..8479e8f8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/tfa/directory/TwoFaServiceViewStateProducer.kt @@ -0,0 +1,44 @@ +package com.artemchep.keyguard.feature.tfa.directory + +import androidx.compose.runtime.Composable +import arrow.core.right +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.service.twofa.TwoFaService +import com.artemchep.keyguard.feature.navigation.state.navigatePopSelf +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +@Composable +fun produceTwoFaServiceViewState( + args: TwoFaServiceViewRoute.Args, +) = with(localDI().direct) { + produceTwoFaServiceViewState( + args = args, + twoFaService = instance(), + ) +} + +@Composable +fun produceTwoFaServiceViewState( + args: TwoFaServiceViewRoute.Args, + twoFaService: TwoFaService, +): Loadable = produceScreenState( + key = "tfa_service_view", + initial = Loadable.Loading, + args = arrayOf(), +) { + val content = TwoFaServiceViewState.Content( + model = args.model, + ) + val state = TwoFaServiceViewState( + content = content + .right(), + onClose = { + navigatePopSelf() + }, + ) + flowOf(Loadable.Ok(state)) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/twopane/TwoPaneLayout.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/twopane/TwoPaneLayout.kt new file mode 100644 index 00000000..af9871bb --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/twopane/TwoPaneLayout.kt @@ -0,0 +1,220 @@ +package com.artemchep.keyguard.feature.twopane + +import androidx.compose.animation.AnimatedContent +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.BoxScope +import androidx.compose.foundation.layout.BoxWithConstraints +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.widthIn +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Lock +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalAbsoluteTonalElevation +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.Stable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.key +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.alpha +import androidx.compose.ui.draw.clipToBounds +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.coerceAtMost +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.usecase.GetAllowTwoPanelLayoutInLandscape +import com.artemchep.keyguard.common.usecase.GetAllowTwoPanelLayoutInPortrait +import com.artemchep.keyguard.common.usecase.GetNavAnimation +import com.artemchep.keyguard.feature.home.HomeLayout +import com.artemchep.keyguard.feature.home.LocalHomeLayout +import com.artemchep.keyguard.feature.keyguard.setup.keyguardSpan +import com.artemchep.keyguard.feature.navigation.NavigationAnimation +import com.artemchep.keyguard.feature.navigation.NavigationAnimationType +import com.artemchep.keyguard.feature.navigation.transform +import com.artemchep.keyguard.platform.LocalAnimationFactor +import com.artemchep.keyguard.ui.screenMaxWidth +import com.artemchep.keyguard.ui.util.VerticalDivider +import org.kodein.di.compose.rememberInstance + +@Composable +fun TwoPaneScaffold( + modifier: Modifier = Modifier, + masterPaneMinWidth: Dp = 310.dp, + detailPaneMinWidth: Dp = masterPaneMinWidth, + detailPaneMaxWidth: Dp = screenMaxWidth, + ratio: Float = 0.5f, + content: @Composable TwoPaneScaffoldScope.() -> Unit, +) { + val getAllowTwoPanelLayoutInPortrait by rememberInstance() + val allowTwoPanelLayoutInPortrait = remember(getAllowTwoPanelLayoutInPortrait) { + getAllowTwoPanelLayoutInPortrait() + }.collectAsState() + + val getAllowTwoPanelLayoutInLandscape by rememberInstance() + val allowTwoPanelLayoutInLandscape = remember(getAllowTwoPanelLayoutInLandscape) { + getAllowTwoPanelLayoutInLandscape() + }.collectAsState() + + check(ratio <= 0.5f) { + "Ratios larger than 0.5 are not supported!" + } + + BoxWithConstraints( + modifier = modifier, + ) { + val masterPaneWidth = (maxWidth * ratio) + .coerceAtLeast(detailPaneMinWidth) + .coerceAtMost(detailPaneMaxWidth) + val totalPaneWidth = masterPaneWidth + masterPaneMinWidth + val tabletUi = when (LocalHomeLayout.current) { + is HomeLayout.Horizontal -> allowTwoPanelLayoutInLandscape.value && + totalPaneWidth <= maxWidth + + is HomeLayout.Vertical -> allowTwoPanelLayoutInPortrait.value && + totalPaneWidth * 1.25f <= maxWidth + } + val scope = TwoPaneScaffoldScopeImpl( + parent = this, + tabletUi = tabletUi, + masterPaneWidth = masterPaneWidth, + ) + content(scope) + } +} + +@Stable +interface TwoPaneScaffoldScope : BoxScope { + val tabletUi: Boolean + val masterPaneWidth: Dp +} + +private data class TwoPaneScaffoldScopeImpl( + private val parent: BoxScope, + override val tabletUi: Boolean, + override val masterPaneWidth: Dp, +) : TwoPaneScaffoldScope, BoxScope by parent + +@Composable +fun TwoPaneScaffoldScope.TwoPaneLayout( + detailPane: (@Composable BoxScope.() -> Unit)? = null, + masterPane: @Composable BoxScope.() -> Unit, +) { + val getNavAnimation by rememberInstance() + + Row { + if (this@TwoPaneLayout.tabletUi) { + val absoluteElevation = LocalAbsoluteTonalElevation.current + 1.dp + CompositionLocalProvider( + LocalAbsoluteTonalElevation provides absoluteElevation, + LocalHasDetailPane provides (detailPane != null), + ) { + PaneLayout( + modifier = Modifier + .widthIn(max = this@TwoPaneLayout.masterPaneWidth), + ) { + masterPane(this) + } + } + VerticalDivider() + } + key("movable-pane") { + PaneLayout( + modifier = Modifier + .background(MaterialTheme.colorScheme.background), + ) { + val pane = detailPane ?: masterPane.takeUnless { this@TwoPaneLayout.tabletUi } + val updatedAnimationScale by rememberUpdatedState(LocalAnimationFactor) + AnimatedContent( + modifier = Modifier + .fillMaxSize(), + targetState = pane, + transitionSpec = { + val animationType = getNavAnimation().value + val transitionType = kotlin.run { + if ( + initialState == null || + targetState == null + ) { + return@run NavigationAnimationType.SWITCH + } + + val isForward = targetState === detailPane + if (isForward) { + NavigationAnimationType.GO_FORWARD + } else { + NavigationAnimationType.GO_BACKWARD + } + } + + NavigationAnimation.transform( + scale = updatedAnimationScale, + animationType = animationType, + transitionType = transitionType, + ) + }, + label = "", + ) { foo -> + Box( + modifier = Modifier + .fillMaxSize(), + ) { + if (foo != null) { + foo() + } else { + Row( + modifier = Modifier + .align(Alignment.Center) + .alpha(0.035f), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.spacedBy(8.dp), + ) { + Icon( + modifier = Modifier + .size(48.dp), + imageVector = Icons.Outlined.Lock, + contentDescription = null, + tint = MaterialTheme.colorScheme.onBackground, + ) + Text( + text = remember { + keyguardSpan() + }, + textAlign = TextAlign.Center, + style = MaterialTheme.typography.displayLarge, + color = MaterialTheme.colorScheme.onBackground, + maxLines = 1, + ) + } + } + } + } + } + } + } +} + +@Composable +private fun PaneLayout( + modifier: Modifier = Modifier, + content: @Composable BoxScope.() -> Unit, +) { + Box( + modifier = modifier + .fillMaxSize() + // Don't allow shadows and stuff to leak out of the + // component's bounds. + .clipToBounds(), + ) { + content() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/twopane/TwoPaneLayoutProvider.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/twopane/TwoPaneLayoutProvider.kt new file mode 100644 index 00000000..fc66a52a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/twopane/TwoPaneLayoutProvider.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.feature.twopane + +import androidx.compose.runtime.compositionLocalOf + +internal val LocalHasDetailPane = compositionLocalOf { + false +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/twopane/TwoPaneNavigation.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/twopane/TwoPaneNavigation.kt new file mode 100644 index 00000000..984776e4 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/twopane/TwoPaneNavigation.kt @@ -0,0 +1,58 @@ +package com.artemchep.keyguard.feature.twopane + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import com.artemchep.keyguard.feature.navigation.LocalNavigationNodeVisualStack +import com.artemchep.keyguard.feature.navigation.NavigationEntry +import com.artemchep.keyguard.feature.navigation.NavigationNode +import kotlinx.collections.immutable.PersistentList +import kotlinx.collections.immutable.persistentListOf + +@Composable +fun TwoPaneNavigationContent( + backStack: PersistentList, +) { + TwoPaneScaffold { + if (backStack.isEmpty()) { + // Nothing to draw, the back stack is empty. + return@TwoPaneScaffold + } + + val tabletUi = tabletUi + + val masterPane = backStack.first() + val detailPane = backStack.last() + .takeIf { it !== masterPane } + TwoPaneLayout( + masterPane = { + val entries = if (detailPane != null) { + // The master pane in tablet UI has no visual depth of + // it and should not have the back stack. + persistentListOf(masterPane) + } else { + backStack + } + NavigationNode( + entries = entries, + ) + }, + detailPane = detailPane + ?.run { + // composable + { + // this is a new UI element + CompositionLocalProvider( + LocalNavigationNodeVisualStack provides persistentListOf(), + ) { + NavigationNode( + entries = backStack, + // The root entry of the backstack is shown on a + // master pane. + offset = if (tabletUi) 1 else 0, + ) + } + } + }, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/twopane/TwoPaneScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/twopane/TwoPaneScreen.kt new file mode 100644 index 00000000..685fd060 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/twopane/TwoPaneScreen.kt @@ -0,0 +1,53 @@ +package com.artemchep.keyguard.feature.twopane + +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.width +import androidx.compose.material3.LocalAbsoluteTonalElevation +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.ui.util.VerticalDivider + +@Composable +fun TwoPaneScreen( + modifier: Modifier = Modifier, + detail: @Composable TwoPaneScaffoldScope.(Modifier) -> Unit, + content: @Composable TwoPaneScaffoldScope.(Modifier, Boolean) -> Unit, +) { + TwoPaneScaffold( + modifier = modifier, + masterPaneMinWidth = 280.dp, + detailPaneMinWidth = 180.dp, + detailPaneMaxWidth = 320.dp, + ratio = 0.4f, + ) { + val scope = this + Row( + modifier = Modifier + .fillMaxSize(), + ) { + val detailIsVisible = this@TwoPaneScaffold.tabletUi + if (detailIsVisible) { + val absoluteElevation = LocalAbsoluteTonalElevation.current + 1.dp + CompositionLocalProvider( + LocalAbsoluteTonalElevation provides absoluteElevation, + ) { + detail( + scope, + Modifier + .width(scope.masterPaneWidth), + ) + } + VerticalDivider() + } + + content( + scope, + Modifier, + detailIsVisible, + ) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/watchtower/WatchtowerRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/watchtower/WatchtowerRoute.kt new file mode 100644 index 00000000..ea9d0875 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/watchtower/WatchtowerRoute.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.watchtower + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.Route + +object WatchtowerRoute : Route { + @Composable + override fun Content() { + WatchtowerScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/watchtower/WatchtowerScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/watchtower/WatchtowerScreen.kt new file mode 100644 index 00000000..a44c438f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/watchtower/WatchtowerScreen.kt @@ -0,0 +1,1037 @@ +package com.artemchep.keyguard.feature.watchtower + +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.Crossfade +import androidx.compose.animation.expandIn +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.animation.shrinkOut +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.BoxWithConstraints +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.WindowInsetsSides +import androidx.compose.foundation.layout.consumeWindowInsets +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.only +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.union +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.widthIn +import androidx.compose.foundation.layout.windowInsetsPadding +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.AccountTree +import androidx.compose.material.icons.outlined.CheckCircleOutline +import androidx.compose.material.icons.outlined.CopyAll +import androidx.compose.material.icons.outlined.DataArray +import androidx.compose.material.icons.outlined.Delete +import androidx.compose.material.icons.outlined.ErrorOutline +import androidx.compose.material.icons.outlined.FolderOff +import androidx.compose.material.icons.outlined.Info +import androidx.compose.material.icons.outlined.Recycling +import androidx.compose.material.icons.outlined.ShortText +import androidx.compose.material.icons.outlined.Timer +import androidx.compose.material.icons.outlined.Warning +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.LinearProgressIndicator +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.LocalTextStyle +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.State +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.key +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.alpha +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.semantics.Role +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.unit.IntSize +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.PasswordStrength +import com.artemchep.keyguard.common.model.fold +import com.artemchep.keyguard.common.model.formatLocalized +import com.artemchep.keyguard.feature.appreview.RequestAppReviewEffect +import com.artemchep.keyguard.feature.home.vault.component.Section +import com.artemchep.keyguard.feature.home.vault.model.FilterItem +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.feature.search.filter.FilterButton +import com.artemchep.keyguard.feature.search.filter.FilterScreen +import com.artemchep.keyguard.feature.twopane.TwoPaneScreen +import com.artemchep.keyguard.platform.leIme +import com.artemchep.keyguard.platform.leNavigationBars +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.Ah +import com.artemchep.keyguard.ui.DefaultEmphasisAlpha +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.GridLayout +import com.artemchep.keyguard.ui.OptionsButton +import com.artemchep.keyguard.ui.animatedNumberText +import com.artemchep.keyguard.ui.grid.preferredGridWidth +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.KeyguardTwoFa +import com.artemchep.keyguard.ui.icons.KeyguardWebsite +import com.artemchep.keyguard.ui.poweredby.PoweredBy2factorauth +import com.artemchep.keyguard.ui.poweredby.PoweredByHaveibeenpwned +import com.artemchep.keyguard.ui.poweredby.PoweredByPasskeys +import com.artemchep.keyguard.ui.shimmer.shimmer +import com.artemchep.keyguard.ui.skeleton.SkeletonItemPilled +import com.artemchep.keyguard.ui.skeleton.SkeletonSection +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.theme.info +import com.artemchep.keyguard.ui.theme.ok +import com.artemchep.keyguard.ui.theme.warning +import com.artemchep.keyguard.ui.toolbar.LargeToolbar +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlin.math.roundToInt + +@Composable +fun WatchtowerScreen() { + RequestAppReviewEffect() + + val state = produceWatchtowerState() + WatchtowerScreen( + state = state, + ) +} + +@Composable +fun WatchtowerScreen( + state: WatchtowerState, +) { + TwoPaneScreen( + detail = { modifier -> + VaultHomeScreenFilterPaneCard( + modifier = modifier, + state = state, + ) + }, + ) { modifier, detailIsVisible -> + WatchtowerScreen2( + modifier = modifier, + state = state, + showFilter = !detailIsVisible, + ) + } +} + +@OptIn( + ExperimentalMaterial3Api::class, + androidx.compose.foundation.layout.ExperimentalLayoutApi::class, +) +@Composable +private fun VaultHomeScreenFilterPaneCard( + modifier: Modifier = Modifier, + state: WatchtowerState, +) { + VaultHomeScreenFilterPaneCard2( + modifier = modifier, + items = state.filter.items, + onClear = state.filter.onClear, + ) +} + +@OptIn( + ExperimentalMaterial3Api::class, + androidx.compose.foundation.layout.ExperimentalLayoutApi::class, +) +@Composable +fun VaultHomeScreenFilterPaneCard2( + modifier: Modifier = Modifier, + items: List, + onClear: (() -> Unit)?, +) { + FilterScreen( + modifier = modifier, + count = null, + items = items, + onClear = onClear, + actions = { + }, + ) +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun WatchtowerScreen2( + modifier: Modifier, + state: WatchtowerState, + showFilter: Boolean, +) { + val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + Scaffold( + modifier = modifier + .nestedScroll(scrollBehavior.nestedScrollConnection), + topBar = { + LargeToolbar( + title = { + Text( + text = stringResource(Res.strings.watchtower_header_title), + ) + }, + navigationIcon = { + NavigationIcon() + }, + actions = { + if (showFilter) { + VaultHomeScreenFilterButton( + state = state, + ) + } + OptionsButton( + actions = state.actions, + ) + }, + scrollBehavior = scrollBehavior, + ) + }, + ) { contentPadding -> + ContentLayout( + contentPadding = contentPadding, + dashboardContent = { + val passwordStrength by remember(state.content) { + if (state.content is Loadable.Ok) { + state.content.value.strength + } else { + MutableStateFlow(Loadable.Loading) + } + }.collectAsState() + DashboardContent(passwordStrength) + }, + cardsContent = { + state.content.RenderCard( + transform = { pwned }, + ) { pwnedPasswords -> + CardPwnedPassword(pwnedPasswords) + } + + state.content.RenderCard( + transform = { pwnedWebsites }, + ) { pwnedWebsites -> + CardVulnerableAccounts(pwnedWebsites) + } + + state.content.RenderCard( + transform = { reused }, + ) { reusedPasswords -> + CardReusedPassword(reusedPasswords) + } + + state.content.RenderCard( + transform = { inactiveTwoFactorAuth }, + ) { inactiveTwoFactorAuth -> + CardInactiveTwoFactorAuth(inactiveTwoFactorAuth) + } + + state.content.RenderCard( + transform = { unsecureWebsites }, + ) { unsecureWebsites -> + CardUnsecureWebsites(unsecureWebsites) + } + + // TODO: + /* + state.content.RenderCard( + transform = { accountCompromised }, + ) { accountCompromised -> + CardCompromisedAccount(accountCompromised) + } + */ + + state.content.RenderCard( + transform = { inactivePasskey }, + ) { inactivePasskey -> + CardInactivePasskey(inactivePasskey) + } + }, + cardsContent2 = { + state.content.RenderCard( + transform = { duplicateItems }, + ) { duplicateItems -> + CardDuplicateItems(duplicateItems) + } + + state.content.RenderCard( + transform = { incompleteItems }, + ) { incompleteItems -> + CardIncompleteItems(incompleteItems) + } + + state.content.RenderCard( + transform = { expiringItems }, + ) { expiringItems -> + CardExpiringItems(expiringItems) + } + + state.content.RenderCard( + transform = { duplicateWebsites }, + ) { duplicateWebsites -> + CardDuplicateWebsites(duplicateWebsites) + } + + state.content.RenderCard( + transform = { trashedItems }, + ) { trashedItems -> + CardTrashedItems(trashedItems) + } + + state.content.RenderCard( + transform = { emptyItems }, + ) { emptyItems -> + CardEmptyItems(emptyItems) + } + }, + loaded = remember { + derivedStateOf { +// val content = state.content.getOrNull() +// ?: return@derivedStateOf false +// combine( +// content.duplicateItems, +// ) + false + } + }, + ) + } +} + +@Composable +private inline fun Loadable.RenderCard( + crossinline transform: T.() -> StateFlow>, + content: @Composable (R) -> Unit, +) { + val valueOrException by remember(this) { + if (this is Loadable.Ok) { + this.value.let(transform) + } else { + MutableStateFlow(Loadable.Loading) + } + }.collectAsState() + valueOrException.fold( + ifLoading = { + CardSkeleton() + }, + ifOk = { data -> + if (data != null) content(data) + }, + ) +} + +@Composable +private fun VaultHomeScreenFilterButton( + modifier: Modifier = Modifier, + state: WatchtowerState, +) { + VaultHomeScreenFilterButton2( + modifier = modifier, + items = state.filter.items, + onClear = state.filter.onClear, + ) +} + +@Composable +fun VaultHomeScreenFilterButton2( + modifier: Modifier = Modifier, + items: List, + onClear: (() -> Unit)?, +) { + FilterButton( + modifier = modifier, + count = null, + items = items, + onClear = onClear, + ) +} + +// Dashboard + +@Composable +private fun ColumnScope.DashboardContent( + content: Loadable, +) = content.fold( + ifOk = { passwordStrengthOrNull -> + ExpandedIfNotEmpty( + valueOrNull = passwordStrengthOrNull, + ) { passwordStrength -> + Column { + DashboardContentData(passwordStrength) + } + } + }, + ifLoading = { + DashboardContentSkeleton() + }, +) + +@Composable +private fun ColumnScope.DashboardContentData( + content: WatchtowerState.Content.PasswordStrength, +) { + Section( + text = stringResource(Res.strings.watchtower_section_password_strength_label), + ) + content.items.forEach { (t, u, onClick) -> + key(t) { + val score = when (t) { + PasswordStrength.Score.Weak -> 0f + PasswordStrength.Score.Fair -> 0.2f + PasswordStrength.Score.Good -> 0.5f + PasswordStrength.Score.Strong -> 0.9f + PasswordStrength.Score.VeryStrong -> 1f + } + FlatItem( + title = { + val text = t.formatLocalized() + Text(text) + }, + leading = { + val numberStr = animatedNumberText(u) + Ah( + score = score, + text = numberStr, + ) + }, + trailing = { + ChevronIcon() + }, + onClick = onClick, + ) + } + } +} + +@Composable +private fun ColumnScope.DashboardContentSkeleton() { + SkeletonSection() + for (i in 0..4) + SkeletonItemPilled() +} + +// Cards + +@Composable +private fun CardPwnedPassword( + state: WatchtowerState.Content.PwnedPasswords, +) { + Card( + number = state.count, + title = { + ContentCardsContentTitle( + icon = WatchtowerStatusIcon.ERROR.takeIf { state.count > 0 } + ?: WatchtowerStatusIcon.OK, + title = stringResource(Res.strings.watchtower_item_pwned_passwords_title), + ) + }, + text = stringResource(Res.strings.watchtower_item_pwned_passwords_text), + imageVector = Icons.Outlined.DataArray, + onClick = state.onClick, + content = { + PoweredByHaveibeenpwned( + modifier = Modifier + .fillMaxWidth(), + fill = true, + ) + }, + ) +} + +@Composable +private fun CardReusedPassword( + state: WatchtowerState.Content.ReusedPasswords, +) { + Card( + number = state.count, + title = { + ContentCardsContentTitle( + icon = WatchtowerStatusIcon.ERROR.takeIf { state.count > 0 } + ?: WatchtowerStatusIcon.OK, + title = stringResource(Res.strings.watchtower_item_reused_passwords_title), + ) + }, + text = stringResource(Res.strings.watchtower_item_reused_passwords_text), + imageVector = Icons.Outlined.Recycling, + onClick = state.onClick, + ) +} + +@Composable +private fun CardVulnerableAccounts( + state: WatchtowerState.Content.PwnedWebsites, +) { + Card( + number = state.count, + title = { + ContentCardsContentTitle( + icon = WatchtowerStatusIcon.ERROR.takeIf { state.count > 0 } + ?: WatchtowerStatusIcon.OK, + title = stringResource(Res.strings.watchtower_item_vulnerable_accounts_title), + ) + }, + text = stringResource(Res.strings.watchtower_item_vulnerable_accounts_text), + imageVector = Icons.Outlined.KeyguardWebsite, + onClick = state.onClick, + content = { + PoweredByHaveibeenpwned( + modifier = Modifier + .fillMaxWidth(), + fill = true, + ) + }, + ) +} + +@Composable +private fun CardUnsecureWebsites( + state: WatchtowerState.Content.UnsecureWebsites, +) { + Card( + number = state.count, + title = { + ContentCardsContentTitle( + icon = WatchtowerStatusIcon.WARNING.takeIf { state.count > 0 } + ?: WatchtowerStatusIcon.OK, + title = stringResource(Res.strings.watchtower_item_unsecure_websites_title), + ) + }, + text = stringResource(Res.strings.watchtower_item_unsecure_websites_text), + imageVector = Icons.Outlined.KeyguardWebsite, + onClick = state.onClick, + ) +} + +@Composable +private fun CardCompromisedAccount( + state: WatchtowerState.Content.CompromisedAccounts, +) { + Card( + number = state.count, + title = { + ContentCardsContentTitle( + icon = WatchtowerStatusIcon.WARNING.takeIf { state.count > 0 } + ?: WatchtowerStatusIcon.OK, + title = stringResource(Res.strings.watchtower_item_compromised_accounts_title), + ) + }, + text = stringResource(Res.strings.watchtower_item_compromised_accounts_text), + imageVector = Icons.Outlined.AccountTree, + onClick = state.onClick, + content = { + PoweredByHaveibeenpwned( + modifier = Modifier + .fillMaxWidth(), + fill = true, + ) + }, + ) +} + +@Composable +private fun CardInactiveTwoFactorAuth( + state: WatchtowerState.Content.InactiveTwoFactorAuth, +) { + Card( + number = state.count, + title = { + ContentCardsContentTitle( + icon = WatchtowerStatusIcon.WARNING.takeIf { state.count > 0 } + ?: WatchtowerStatusIcon.OK, + title = stringResource(Res.strings.watchtower_item_inactive_2fa_title), + ) + }, + text = stringResource(Res.strings.watchtower_item_inactive_2fa_text), + imageVector = Icons.Outlined.KeyguardTwoFa, + onClick = state.onClick, + content = { + PoweredBy2factorauth( + modifier = Modifier + .fillMaxWidth(), + fill = true, + ) + }, + ) +} + +@Composable +private fun CardInactivePasskey( + state: WatchtowerState.Content.InactivePasskey, +) { + Card( + number = state.count, + title = { + ContentCardsContentTitle( + icon = WatchtowerStatusIcon.INFO.takeIf { state.count > 0 } + ?: WatchtowerStatusIcon.OK, + title = stringResource(Res.strings.watchtower_item_inactive_passkey_title), + ) + }, + text = stringResource(Res.strings.watchtower_item_inactive_passkey_text), + imageVector = Icons.Outlined.KeyguardTwoFa, + onClick = state.onClick, + content = { + PoweredByPasskeys( + modifier = Modifier + .fillMaxWidth(), + fill = true, + ) + }, + ) +} + +@Composable +private fun CardIncompleteItems( + state: WatchtowerState.Content.IncompleteItems, +) { + Card( + number = state.count, + title = { + ContentCardsContentTitle( + icon = WatchtowerStatusIcon.INFO.takeIf { state.count > 0 } + ?: WatchtowerStatusIcon.OK, + title = stringResource(Res.strings.watchtower_item_incomplete_items_title), + ) + }, + text = stringResource(Res.strings.watchtower_item_incomplete_items_text), + imageVector = Icons.Outlined.ShortText, + onClick = state.onClick, + ) +} + +@Composable +private fun CardExpiringItems( + state: WatchtowerState.Content.ExpiringItems, +) { + Card( + number = state.count, + title = { + ContentCardsContentTitle( + icon = WatchtowerStatusIcon.INFO.takeIf { state.count > 0 } + ?: WatchtowerStatusIcon.OK, + title = stringResource(Res.strings.watchtower_item_expiring_items_title), + ) + }, + text = stringResource(Res.strings.watchtower_item_expiring_items_text), + imageVector = Icons.Outlined.Timer, + onClick = state.onClick, + ) +} + +@Composable +private fun CardDuplicateWebsites( + state: WatchtowerState.Content.DuplicateWebsites, +) { + Card( + number = state.count, + title = { + ContentCardsContentTitle( + icon = WatchtowerStatusIcon.INFO.takeIf { state.count > 0 } + ?: WatchtowerStatusIcon.OK, + title = stringResource(Res.strings.watchtower_item_duplicate_websites_title), + ) + }, + text = stringResource(Res.strings.watchtower_item_duplicate_websites_text), + imageVector = Icons.Outlined.KeyguardWebsite, + onClick = state.onClick, + ) +} + +@Composable +private fun CardTrashedItems( + state: WatchtowerState.Content.TrashedItems, +) { + Card( + number = state.count, + title = { + val icon = when { + // See: + // https://github.com/bitwarden/mobile/issues/1723 + // for a reasoning behind these numbers. + state.count > 2000 -> WatchtowerStatusIcon.ERROR + state.count > 500 -> WatchtowerStatusIcon.WARNING + state.count > 0 -> WatchtowerStatusIcon.INFO + else -> WatchtowerStatusIcon.OK + } + ContentCardsContentTitle( + icon = icon, + title = stringResource(Res.strings.watchtower_item_trashed_items_title), + ) + }, + text = stringResource(Res.strings.watchtower_item_trashed_items_text), + imageVector = Icons.Outlined.Delete, + onClick = state.onClick, + ) +} + +@Composable +private fun CardEmptyItems( + state: WatchtowerState.Content.EmptyItems, +) { + Card( + number = state.count, + title = { + val icon = when { + state.count > 50 -> WatchtowerStatusIcon.ERROR + state.count > 5 -> WatchtowerStatusIcon.WARNING + state.count > 0 -> WatchtowerStatusIcon.INFO + else -> WatchtowerStatusIcon.OK + } + ContentCardsContentTitle( + icon = icon, + title = stringResource(Res.strings.watchtower_item_empty_folders_title), + ) + }, + text = stringResource(Res.strings.watchtower_item_empty_folders_text), + imageVector = Icons.Outlined.FolderOff, + onClick = state.onClick, + ) +} + +@Composable +private fun CardDuplicateItems( + state: WatchtowerState.Content.DuplicateItems, +) { + Card( + number = state.count, + title = { + ContentCardsContentTitle( + icon = WatchtowerStatusIcon.INFO.takeIf { state.count > 0 } + ?: WatchtowerStatusIcon.OK, + title = stringResource(Res.strings.watchtower_item_duplicate_items_title), + ) + }, + text = stringResource(Res.strings.watchtower_item_duplicate_items_text), + imageVector = Icons.Outlined.CopyAll, + onClick = state.onClick, + ) +} + +private enum class WatchtowerStatusIcon { + OK, + INFO, + WARNING, + ERROR, +} + +@Composable +private fun RowScope.ContentCardsContentTitle( + icon: WatchtowerStatusIcon, + title: String, +) { + Text( + modifier = Modifier + .weight(1f), + text = title, + ) + Spacer( + modifier = Modifier + .width(8.dp), + ) + Crossfade(icon) { ic -> + when (ic) { + WatchtowerStatusIcon.OK -> { + Icon( + Icons.Outlined.CheckCircleOutline, + modifier = Modifier + .align(Alignment.CenterVertically), + contentDescription = null, + tint = MaterialTheme.colorScheme.ok, + ) + } + + WatchtowerStatusIcon.INFO -> { + Icon( + Icons.Outlined.Info, + modifier = Modifier + .align(Alignment.CenterVertically), + contentDescription = null, + tint = MaterialTheme.colorScheme.info, + ) + } + + WatchtowerStatusIcon.WARNING -> { + Icon( + Icons.Outlined.Warning, + modifier = Modifier + .align(Alignment.CenterVertically), + contentDescription = null, + tint = MaterialTheme.colorScheme.warning, + ) + } + + WatchtowerStatusIcon.ERROR -> { + Icon( + Icons.Outlined.ErrorOutline, + modifier = Modifier + .align(Alignment.CenterVertically), + contentDescription = null, + tint = MaterialTheme.colorScheme.error, + ) + } + } + } + Spacer( + modifier = Modifier + .width(8.dp), + ) +} + +@Composable +private fun ContentLayout( + contentPadding: PaddingValues, + dashboardContent: @Composable ColumnScope.() -> Unit, + cardsContent: @Composable () -> Unit, + cardsContent2: @Composable () -> Unit, + loaded: State, +) { + val scrollState = rememberScrollState() + BoxWithConstraints { + val navBarWithImeInsets = WindowInsets.leNavigationBars + .union(WindowInsets.leIme) + .only(WindowInsetsSides.Bottom) + Box( + modifier = Modifier + .windowInsetsPadding(navBarWithImeInsets) + .consumeWindowInsets(navBarWithImeInsets), + ) { + Column( + modifier = Modifier + .fillMaxSize() + .verticalScroll(scrollState) + .padding(contentPadding), + ) { + val columns = (this@BoxWithConstraints.maxWidth / preferredGridWidth) + .roundToInt() + .coerceAtLeast(1) + val dashboardWidth = this@BoxWithConstraints.maxWidth / columns * + 2.coerceAtMost(columns) + + Column( + modifier = Modifier + .widthIn(max = dashboardWidth) + .fillMaxWidth(), + ) { + dashboardContent() + } + Section( + text = stringResource(Res.strings.watchtower_section_security_label), + ) + GridLayout( + modifier = Modifier + .padding(horizontal = 8.dp), + columns = columns, + mainAxisSpacing = 8.dp, + crossAxisSpacing = 8.dp, + ) { + cardsContent() + } + Section( + text = stringResource(Res.strings.watchtower_section_maintenance_label), + ) + GridLayout( + modifier = Modifier + .padding(horizontal = 8.dp), + columns = columns, + mainAxisSpacing = 8.dp, + crossAxisSpacing = 8.dp, + ) { + cardsContent2() + } + } + AnimatedVisibility( + modifier = Modifier + .padding(contentPadding), + visible = loaded.value, + enter = fadeIn() + expandIn( + initialSize = { + IntSize(it.width, 0) + }, + ), + exit = shrinkOut( + targetSize = { + IntSize(it.width, 0) + }, + ) + fadeOut(), + ) { + LinearProgressIndicator( + modifier = Modifier + .fillMaxWidth(), + ) + } + } + } +} + +@Composable +fun Card( + modifier: Modifier = Modifier, + number: Int, + title: @Composable RowScope.() -> Unit, + text: String, + imageVector: ImageVector?, + content: (@Composable () -> Unit)? = null, + onClick: (() -> Unit)? = null, +) { + Surface( + modifier = modifier, + shape = MaterialTheme.shapes.medium, + tonalElevation = if (number > 0) 1.dp else 0.dp, + ) { + if (imageVector != null) { + Box( + modifier = Modifier + .fillMaxSize(), + contentAlignment = Alignment.TopEnd, + ) { + Icon( + imageVector, + modifier = Modifier + .size(128.dp) + .alpha(0.035f), + contentDescription = null, + ) + } + } + Column( + modifier = Modifier + .then( + if (onClick != null) { + Modifier + .clickable(role = Role.Button) { + onClick() + } + } else { + Modifier + }, + ) + .padding(8.dp), + ) { + val localEmphasis = DefaultEmphasisAlpha + val localTextStyle = TextStyle( + color = LocalContentColor.current + .combineAlpha(localEmphasis), + ) + + val numberStr = animatedNumberText(number) + Text( + numberStr, + style = MaterialTheme.typography.displayLarge + .merge(localTextStyle), + ) + Spacer(modifier = Modifier.height(8.dp)) + CompositionLocalProvider( + LocalTextStyle provides MaterialTheme.typography.titleMedium + .merge(localTextStyle), + ) { + Row { + title() + } + } + Spacer(modifier = Modifier.height(8.dp)) + Text( + text, + style = MaterialTheme.typography.bodyMedium + .merge(localTextStyle), + ) + if (content != null) { + Spacer(modifier = Modifier.height(8.dp).weight(1f)) + content() + } + } + } +} + +@Composable +fun CardSkeleton( + modifier: Modifier = Modifier, +) { + val contentColor = + LocalContentColor.current.copy(alpha = DisabledEmphasisAlpha) + Surface( + modifier = modifier, + shape = MaterialTheme.shapes.medium, + tonalElevation = 1.dp, + ) { + Column( + modifier = Modifier + .shimmer() + .padding(8.dp), + ) { + Box( + Modifier + .padding(top = 16.dp) + .height(48.dp) + .width(30.dp) + .clip(MaterialTheme.shapes.medium) + .background(contentColor), + ) + Spacer(modifier = Modifier.height(18.dp)) + Box( + Modifier + .height(18.dp) + .fillMaxWidth(0.72f) + .clip(MaterialTheme.shapes.medium) + .background(contentColor), + ) + Spacer(modifier = Modifier.height(8.dp)) + Box( + Modifier + .height(14.dp) + .fillMaxWidth(0.6f) + .clip(MaterialTheme.shapes.medium) + .background(contentColor.copy(alpha = 0.2f)), + ) + Spacer(modifier = Modifier.height(4.dp)) + Box( + Modifier + .height(14.dp) + .fillMaxWidth(0.6f) + .clip(MaterialTheme.shapes.medium) + .background(contentColor.copy(alpha = 0.2f)), + ) + Spacer(modifier = Modifier.height(4.dp)) + Box( + Modifier + .height(14.dp) + .fillMaxWidth(0.6f) + .clip(MaterialTheme.shapes.medium) + .background(contentColor.copy(alpha = 0.2f)), + ) + Spacer(modifier = Modifier.height(4.dp)) + Box( + Modifier + .height(14.dp) + .fillMaxWidth(0.3f) + .clip(MaterialTheme.shapes.medium) + .background(contentColor.copy(alpha = 0.2f)), + ) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/watchtower/WatchtowerState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/watchtower/WatchtowerState.kt new file mode 100644 index 00000000..c2c2c5a7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/watchtower/WatchtowerState.kt @@ -0,0 +1,124 @@ +package com.artemchep.keyguard.feature.watchtower + +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.feature.home.vault.model.FilterItem +import com.artemchep.keyguard.ui.ContextItem +import kotlinx.coroutines.flow.StateFlow + +data class WatchtowerState( + val revision: Int = 0, + val filter: Filter = Filter(), + val actions: List = emptyList(), + val content: Loadable = Loadable.Loading, +) { + data class Filter( + val items: List = emptyList(), + val onClear: (() -> Unit)? = null, + ) + + data class Content( + val unsecureWebsites: StateFlow>, + val duplicateWebsites: StateFlow>, + val inactiveTwoFactorAuth: StateFlow>, + val inactivePasskey: StateFlow>, + val accountCompromised: StateFlow>, + val pwned: StateFlow>, + val pwnedWebsites: StateFlow>, + val reused: StateFlow>, + val incompleteItems: StateFlow>, + val expiringItems: StateFlow>, + val duplicateItems: StateFlow>, + val trashedItems: StateFlow>, + val emptyItems: StateFlow>, + val strength: StateFlow>, + ) { + data class UnsecureWebsites( + val revision: Int, + val count: Int, + val onClick: (() -> Unit)? = null, + ) + + data class DuplicateWebsites( + val revision: Int, + val count: Int, + val onClick: (() -> Unit)? = null, + ) + + data class InactiveTwoFactorAuth( + val revision: Int, + val count: Int, + val onClick: (() -> Unit)? = null, + ) + + data class InactivePasskey( + val revision: Int, + val count: Int, + val onClick: (() -> Unit)? = null, + ) + + data class PwnedPasswords( + val revision: Int, + val count: Int, + val onClick: (() -> Unit)? = null, + ) + + data class PwnedWebsites( + val revision: Int, + val count: Int, + val onClick: (() -> Unit)? = null, + ) + + data class CompromisedAccounts( + val revision: Int, + val count: Int, + val onClick: (() -> Unit)? = null, + ) + + data class ReusedPasswords( + val revision: Int, + val count: Int, + val onClick: (() -> Unit)? = null, + ) + + data class IncompleteItems( + val revision: Int, + val count: Int, + val onClick: (() -> Unit)? = null, + ) + + data class ExpiringItems( + val revision: Int, + val count: Int, + val onClick: (() -> Unit)? = null, + ) + + data class DuplicateItems( + val revision: Int, + val count: Int, + val onClick: (() -> Unit)? = null, + ) + + data class TrashedItems( + val revision: Int, + val count: Int, + val onClick: (() -> Unit)? = null, + ) + + data class EmptyItems( + val revision: Int, + val count: Int, + val onClick: (() -> Unit)? = null, + ) + + data class PasswordStrength( + val revision: Int, + val items: List, + ) { + data class Item( + val score: com.artemchep.keyguard.common.model.PasswordStrength.Score, + val count: Int, + val onClick: (() -> Unit)?, + ) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/watchtower/WatchtowerStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/watchtower/WatchtowerStateProducer.kt new file mode 100644 index 00000000..93be9493 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/watchtower/WatchtowerStateProducer.kt @@ -0,0 +1,947 @@ +package com.artemchep.keyguard.feature.watchtower + +import androidx.compose.runtime.Composable +import arrow.core.identity +import arrow.core.partially1 +import com.artemchep.keyguard.common.model.DFilter +import com.artemchep.keyguard.common.model.DFolder +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.PasswordStrength +import com.artemchep.keyguard.common.model.formatH2 +import com.artemchep.keyguard.common.usecase.CipherDuplicatesCheck +import com.artemchep.keyguard.common.usecase.GetAccounts +import com.artemchep.keyguard.common.usecase.GetCiphers +import com.artemchep.keyguard.common.usecase.GetCollections +import com.artemchep.keyguard.common.usecase.GetFolders +import com.artemchep.keyguard.common.usecase.GetOrganizations +import com.artemchep.keyguard.common.usecase.GetProfiles +import com.artemchep.keyguard.common.util.flow.persistingStateIn +import com.artemchep.keyguard.feature.crashlytics.crashlyticsMap +import com.artemchep.keyguard.feature.duplicates.DuplicatesRoute +import com.artemchep.keyguard.feature.home.vault.VaultRoute +import com.artemchep.keyguard.feature.home.vault.folders.FoldersRoute +import com.artemchep.keyguard.feature.home.vault.screen.FilterParams +import com.artemchep.keyguard.feature.home.vault.screen.OurFilterResult +import com.artemchep.keyguard.feature.home.vault.screen.ah +import com.artemchep.keyguard.feature.home.vault.screen.createFilter +import com.artemchep.keyguard.feature.home.vault.search.filter.FilterHolder +import com.artemchep.keyguard.feature.home.vault.search.sort.PasswordSort +import com.artemchep.keyguard.feature.justdeleteme.directory.JustDeleteMeServiceListRoute +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.state.PersistedStorage +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.feature.passkeys.directory.PasskeysServiceListRoute +import com.artemchep.keyguard.feature.tfa.directory.TwoFaServiceListRoute +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.buildContextItems +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.flow +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.flow.shareIn +import kotlinx.coroutines.flow.stateIn +import org.kodein.di.DirectDI +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +@Composable +fun produceWatchtowerState( +) = with(localDI().direct) { + produceWatchtowerState( + directDI = this, + getCiphers = instance(), + getAccounts = instance(), + getProfiles = instance(), + getFolders = instance(), + getCollections = instance(), + getOrganizations = instance(), + cipherDuplicatesCheck = instance(), + ) +} + +private data class FilteredBoo( + val list: List, + val filterConfig: FilterHolder? = null, +) + +private class WatchtowerUiException( + msg: String, + cause: Throwable, +) : RuntimeException(msg, cause) + +@Composable +fun produceWatchtowerState( + directDI: DirectDI, + getCiphers: GetCiphers, + getAccounts: GetAccounts, + getProfiles: GetProfiles, + getFolders: GetFolders, + getCollections: GetCollections, + getOrganizations: GetOrganizations, + cipherDuplicatesCheck: CipherDuplicatesCheck, +): WatchtowerState = produceScreenState( + initial = WatchtowerState(), + key = "watchtower", + args = arrayOf( + getCiphers, + ), +) { + val storage = kotlin.run { + val disk = loadDiskHandle( + key = "cache", + ) + PersistedStorage.InDisk(disk) + } + + val ciphersFlow = getCiphers() + .map { secrets -> + secrets + .filter { secret -> !secret.deleted } + } + .shareIn(screenScope, SharingStarted.WhileSubscribed(), replay = 1) + val foldersFlow = getFolders() + .map { folders -> + folders + .filter { folder -> !folder.deleted } + } + .shareIn(screenScope, SharingStarted.WhileSubscribed(), replay = 1) + + val filterResult = createFilter() + + fun filteredCiphers(ciphersFlow: Flow>) = ciphersFlow + .map { + FilteredBoo( + list = it, + ) + } + .combine( + flow = filterResult.filterFlow, + ) { state, filterConfig -> + // Fast path: if the there are no filters, then + // just return original list of items. + if (filterConfig.state.isEmpty()) { + return@combine state.copy( + filterConfig = filterConfig, + ) + } + + val filteredItems = kotlin.run { + val allItems = state.list + val predicate = filterConfig.filter.prepare(directDI, allItems) + allItems.filter(predicate) + } + state.copy( + list = filteredItems, + filterConfig = filterConfig, + ) + } + .shareIn(screenScope, SharingStarted.WhileSubscribed(), replay = 1) + + fun filteredFolders(foldersFlow: Flow>) = foldersFlow + .map { + FilteredBoo( + list = it, + ) + } + .combine( + flow = filterResult.filterFlow, + ) { state, filterConfig -> + // Fast path: if the there are no filters, then + // just return original list of items. + if (filterConfig.state.isEmpty()) { + return@combine state.copy( + filterConfig = filterConfig, + ) + } + + val filteredItems = kotlin.run { + val allItems = state.list + val predicate = filterConfig.filter.prepareFolders(directDI, allItems) + allItems.filter(predicate) + } + state.copy( + list = filteredItems, + filterConfig = filterConfig, + ) + } + .shareIn(screenScope, SharingStarted.WhileSubscribed(), replay = 1) + + val filteredCiphersFlow = filteredCiphers( + ciphersFlow = ciphersFlow, + ) + val filteredTrashedCiphersFlow = filteredCiphers( + ciphersFlow = getCiphers() + .map { secrets -> + secrets + .filter { secret -> secret.deleted } + }, + ) + + val filteredFoldersFlow = filteredFolders( + foldersFlow = foldersFlow, + ) + + val filterFlow = ah( + directDI = directDI, + outputGetter = ::identity, + outputFlow = filteredCiphersFlow + .map { state -> + state.list + }, + accountGetter = ::identity, + accountFlow = getAccounts(), + profileFlow = getProfiles(), + cipherGetter = ::identity, + cipherFlow = ciphersFlow, + folderGetter = ::identity, + folderFlow = getFolders(), + collectionGetter = ::identity, + collectionFlow = getCollections(), + organizationGetter = ::identity, + organizationFlow = getOrganizations(), + input = filterResult, + params = FilterParams( + section = FilterParams.Section( + misc = false, + type = false, + ), + ), + ) + .stateIn(this, SharingStarted.WhileSubscribed(), OurFilterResult()) + + fun boose( + source: Flow>, + key: String, + counterFlow: (FilteredBoo) -> Flow, + onCreate: (FilteredBoo?, Int) -> T, + ): StateFlow> { + val cachedCounterSink = mutablePersistedFlow(key, storage) { + -1 + } + // Start with displaying cached counter, and then load + // the actual value. + val initialValue = kotlin.run { + val cachedCounter = cachedCounterSink.value + if (cachedCounter >= 0) { + val state = onCreate(null, cachedCounter) + Loadable.Ok(state) + } else { + Loadable.Loading + } + } + return source + .flatMapLatest { holder -> + counterFlow(holder) + .onEach { + val revision = holder.filterConfig?.id + if (revision == null || revision == 0) { + cachedCounterSink.value = it + } + } + .map { count -> + val state = onCreate(holder, count) + Loadable.Ok(state) + } + } + .crashlyticsMap( + transform = { e -> + val msg = "Failed to process '$key' metric!" + WatchtowerUiException(msg, e) + }, + orElse = { Loadable.Ok(null) }, + ) + .persistingStateIn( + scope = screenScope, + started = SharingStarted.WhileSubscribed(), + initialValue = initialValue, + ) + } + + fun booseBlock( + source: Flow>, + key: String, + counterBlock: suspend (FilteredBoo) -> Int, + onCreate: (FilteredBoo?, Int) -> T, + ) = boose( + source = source, + key = key, + counterFlow = { holder -> + flow { + val count = counterBlock(holder) + emit(count) + } + }, + onCreate = onCreate, + ) + + // + // Password strength + // + + fun onClickPasswordStrength( + filter: DFilter, + score: PasswordStrength.Score, + ) { + val intent = NavigationIntent.NavigateToRoute( + VaultRoute.watchtower( + title = translate(score.formatH2()), + subtitle = translate(Res.strings.watchtower_header_title), + filter = DFilter.And( + filters = listOf( + DFilter.ByPasswordStrength(score), + filter, + ), + ), + ), + ) + navigate(intent) + } + + val passwordStrengthFlow = filteredCiphersFlow + .map { holder -> + val items = holder + .list + .mapNotNull { secret -> secret.login?.passwordStrength?.score } + .groupBy { it } + .mapValues { + it.value.size + } + .run { + val m = toMutableMap() + m.getOrPut(PasswordStrength.Score.VeryStrong) { 0 } + m.getOrPut(PasswordStrength.Score.Strong) { 0 } + m.getOrPut(PasswordStrength.Score.Good) { 0 } + m.getOrPut(PasswordStrength.Score.Fair) { 0 } + m.getOrPut(PasswordStrength.Score.Weak) { 0 } + m + } + .map { + val onClick = if (it.value > 0) { + val filter = holder.filterConfig?.filter + ?: DFilter.All + ::onClickPasswordStrength + .partially1(filter) + .partially1(it.key) + } else { + null + } + WatchtowerState.Content.PasswordStrength.Item( + score = it.key, + count = it.value, + onClick = onClick, + ) + } + .sortedByDescending { it.score } + val state = WatchtowerState.Content.PasswordStrength( + revision = holder.filterConfig?.id ?: 0, + items = items, + ) + Loadable.Ok(state) + } + .crashlyticsMap( + transform = { e -> + val msg = "Failed to process password strength list!" + WatchtowerUiException(msg, e) + }, + orElse = { Loadable.Ok(null) }, + ) + .persistingStateIn( + scope = screenScope, + started = SharingStarted.WhileSubscribed(), + initialValue = Loadable.Loading, + ) + + // + // Security + // + + fun onClickPasswordPwned( + filter: DFilter, + ) { + val intent = NavigationIntent.NavigateToRoute( + VaultRoute.watchtower( + title = translate(Res.strings.watchtower_item_pwned_passwords_title), + subtitle = translate(Res.strings.watchtower_header_title), + filter = DFilter.And( + filters = listOf( + DFilter.ByPasswordPwned, + filter, + ), + ), + ), + ) + navigate(intent) + } + + val passwordPwnedFlow = booseBlock( + source = filteredCiphersFlow, + key = DFilter.ByPasswordPwned.key, + counterBlock = { holder -> + val count = DFilter.ByPasswordPwned.count(directDI, holder.list) + count + }, + onCreate = { holder, count -> + val onClick = if (count > 0) { + val filter = holder?.filterConfig?.filter + ?: DFilter.All + ::onClickPasswordPwned + .partially1(filter) + } else { + null + } + WatchtowerState.Content.PwnedPasswords( + revision = holder?.filterConfig?.id ?: 0, + count = count, + onClick = onClick, + ) + }, + ) + + fun onClickUnsecureWebsites( + filter: DFilter, + ) { + val intent = NavigationIntent.NavigateToRoute( + VaultRoute.watchtower( + title = translate(Res.strings.watchtower_item_unsecure_websites_title), + subtitle = translate(Res.strings.watchtower_header_title), + filter = DFilter.And( + filters = listOf( + DFilter.ByUnsecureWebsites, + filter, + ), + ), + ), + ) + navigate(intent) + } + + val unsecureWebsitesFlow = booseBlock( + source = filteredCiphersFlow, + key = DFilter.ByUnsecureWebsites.key, + counterBlock = { holder -> + val count = DFilter.ByUnsecureWebsites.count(directDI, holder.list) + count + }, + onCreate = { holder, count -> + val onClick = if (count > 0) { + val filter = holder?.filterConfig?.filter + ?: DFilter.All + ::onClickUnsecureWebsites + .partially1(filter) + } else { + null + } + WatchtowerState.Content.UnsecureWebsites( + revision = holder?.filterConfig?.id ?: 0, + count = count, + onClick = onClick, + ) + }, + ) + + fun onClickDuplicateWebsites( + filter: DFilter, + ) { + val intent = NavigationIntent.NavigateToRoute( + VaultRoute.watchtower( + title = translate(Res.strings.watchtower_item_duplicate_websites_title), + subtitle = translate(Res.strings.watchtower_header_title), + filter = DFilter.And( + filters = listOf( + DFilter.ByDuplicateWebsites, + filter, + ), + ), + ), + ) + navigate(intent) + } + + val duplicateWebsitesFlow = booseBlock( + source = filteredCiphersFlow, + key = DFilter.ByDuplicateWebsites.key, + counterBlock = { holder -> + val count = DFilter.ByDuplicateWebsites.count(directDI, holder.list) + count + }, + onCreate = { holder, count -> + val onClick = if (count > 0) { + val filter = holder?.filterConfig?.filter + ?: DFilter.All + ::onClickDuplicateWebsites + .partially1(filter) + } else { + null + } + WatchtowerState.Content.DuplicateWebsites( + revision = holder?.filterConfig?.id ?: 0, + count = count, + onClick = onClick, + ) + }, + ) + + fun onClickTfaWebsites( + filter: DFilter, + ) { + val intent = NavigationIntent.NavigateToRoute( + VaultRoute.watchtower( + title = translate(Res.strings.watchtower_item_inactive_2fa_title), + subtitle = translate(Res.strings.watchtower_header_title), + filter = DFilter.And( + filters = listOf( + DFilter.ByTfaWebsites, + filter, + ), + ), + ), + ) + navigate(intent) + } + + val inactiveTwoFactorAuthFlow = booseBlock( + source = filteredCiphersFlow, + key = DFilter.ByTfaWebsites.key, + counterBlock = { holder -> + val count = DFilter.ByTfaWebsites.count(directDI, holder.list) + count + }, + onCreate = { holder, count -> + val onClick = if (count > 0) { + val filter = holder?.filterConfig?.filter + ?: DFilter.All + ::onClickTfaWebsites + .partially1(filter) + } else { + null + } + WatchtowerState.Content.InactiveTwoFactorAuth( + revision = holder?.filterConfig?.id ?: 0, + count = count, + onClick = onClick, + ) + }, + ) + + fun onClickPasskeyWebsites( + filter: DFilter, + ) { + val intent = NavigationIntent.NavigateToRoute( + VaultRoute.watchtower( + title = translate(Res.strings.watchtower_item_inactive_passkey_title), + subtitle = translate(Res.strings.watchtower_header_title), + filter = DFilter.And( + filters = listOf( + DFilter.ByPasskeyWebsites, + filter, + ), + ), + ), + ) + navigate(intent) + } + + val inactivePasskeyFlow = booseBlock( + source = filteredCiphersFlow, + key = DFilter.ByPasskeyWebsites.key, + counterBlock = { holder -> + val count = DFilter.ByPasskeyWebsites.count(directDI, holder.list) + count + }, + onCreate = { holder, count -> + val onClick = if (count > 0) { + val filter = holder?.filterConfig?.filter + ?: DFilter.All + ::onClickPasskeyWebsites + .partially1(filter) + } else { + null + } + WatchtowerState.Content.InactivePasskey( + revision = holder?.filterConfig?.id ?: 0, + count = count, + onClick = onClick, + ) + }, + ) + + fun onClickPasswordReused( + filter: DFilter, + ) { + val intent = NavigationIntent.NavigateToRoute( + VaultRoute.watchtower( + title = translate(Res.strings.watchtower_item_reused_passwords_title), + subtitle = translate(Res.strings.watchtower_header_title), + filter = DFilter.And( + filters = listOf( + DFilter.ByPasswordDuplicates, + filter, + ), + ), + sort = PasswordSort, + ), + ) + navigate(intent) + } + + val passwordReusedFlow = booseBlock( + source = filteredCiphersFlow, + key = DFilter.ByPasswordDuplicates.key, + counterBlock = { holder -> + val count = DFilter.ByPasswordDuplicates.count(directDI, holder.list) + count + }, + onCreate = { holder, count -> + val onClick = if (count > 0) { + val filter = holder?.filterConfig?.filter + ?: DFilter.All + ::onClickPasswordReused + .partially1(filter) + } else { + null + } + WatchtowerState.Content.ReusedPasswords( + revision = holder?.filterConfig?.id ?: 0, + count = count, + onClick = onClick, + ) + }, + ) + + fun onClickWebsitePwned( + filter: DFilter, + ) { + val intent = NavigationIntent.NavigateToRoute( + VaultRoute.watchtower( + title = translate(Res.strings.watchtower_item_vulnerable_accounts_title), + subtitle = translate(Res.strings.watchtower_header_title), + filter = DFilter.And( + filters = listOf( + DFilter.ByWebsitePwned, + filter, + ), + ), + ), + ) + navigate(intent) + } + + val websitePwnedFlow = booseBlock( + source = filteredCiphersFlow, + key = DFilter.ByWebsitePwned.key, + counterBlock = { holder -> + val count = DFilter.ByWebsitePwned.count(directDI, holder.list) + count + }, + onCreate = { holder, count -> + val onClick = if (count > 0) { + val filter = holder?.filterConfig?.filter + ?: DFilter.All + ::onClickWebsitePwned + .partially1(filter) + } else { + null + } + WatchtowerState.Content.PwnedWebsites( + revision = holder?.filterConfig?.id ?: 0, + count = count, + onClick = onClick, + ) + }, + ) + val accountCompromisedFlow = booseBlock( + source = filteredCiphersFlow, + key = DFilter.ByWebsitePwned.key, + counterBlock = { holder -> + val count = DFilter.ByWebsitePwned.count(directDI, holder.list) + count + }, + onCreate = { holder, count -> + val onClick = if (count > 0) { + val filter = holder?.filterConfig?.filter + ?: DFilter.All + ::onClickWebsitePwned + .partially1(filter) + } else { + null + } + WatchtowerState.Content.CompromisedAccounts( + revision = holder?.filterConfig?.id ?: 0, + count = count, + onClick = onClick, + ) + }, + ) + + // + // Maintenance + // + + fun onClickDuplicates( + filter: DFilter, + ) { + val intent = NavigationIntent.NavigateToRoute( + DuplicatesRoute( + args = DuplicatesRoute.Args( + filter = filter, + ), + ), + ) + navigate(intent) + } + + val duplicateItemsFlow = booseBlock( + source = filteredCiphersFlow, + key = "by_duplicate", + counterBlock = { holder -> + val groups = + cipherDuplicatesCheck(holder.list, CipherDuplicatesCheck.Sensitivity.NORMAL) + val count = groups.size + count + }, + onCreate = { holder, count -> + val onClick = if (count > 0) { + val filter = holder?.filterConfig?.filter + ?: DFilter.All + ::onClickDuplicates + .partially1(filter) + } else { + null + } + WatchtowerState.Content.DuplicateItems( + revision = holder?.filterConfig?.id ?: 0, + count = count, + onClick = onClick, + ) + }, + ) + + fun onClickIncomplete( + filter: DFilter, + ) { + val intent = NavigationIntent.NavigateToRoute( + VaultRoute.watchtower( + title = translate(Res.strings.watchtower_item_incomplete_items_title), + subtitle = translate(Res.strings.watchtower_header_title), + filter = DFilter.And( + filters = listOf( + DFilter.ByIncomplete, + filter, + ), + ), + ), + ) + navigate(intent) + } + + val incompleteItemsFlow = booseBlock( + source = filteredCiphersFlow, + key = DFilter.ByIncomplete.key, + counterBlock = { holder -> + val count = DFilter.ByIncomplete.count(directDI, holder.list) + count + }, + onCreate = { holder, count -> + val onClick = if (count > 0) { + val filter = holder?.filterConfig?.filter + ?: DFilter.All + ::onClickIncomplete + .partially1(filter) + } else { + null + } + WatchtowerState.Content.IncompleteItems( + revision = holder?.filterConfig?.id ?: 0, + count = count, + onClick = onClick, + ) + }, + ) + + fun onClickExpiring( + filter: DFilter, + ) { + val intent = NavigationIntent.NavigateToRoute( + VaultRoute.watchtower( + title = translate(Res.strings.watchtower_item_expiring_items_title), + subtitle = translate(Res.strings.watchtower_header_title), + filter = DFilter.And( + filters = listOf( + DFilter.ByExpiring, + filter, + ), + ), + ), + ) + navigate(intent) + } + + val expiringItemsFlow = booseBlock( + source = filteredCiphersFlow, + key = DFilter.ByExpiring.key, + counterBlock = { holder -> + val count = DFilter.ByExpiring.count(directDI, holder.list) + count + }, + onCreate = { holder, count -> + val onClick = if (count > 0) { + val filter = holder?.filterConfig?.filter + ?: DFilter.All + ::onClickExpiring + .partially1(filter) + } else { + null + } + WatchtowerState.Content.ExpiringItems( + revision = holder?.filterConfig?.id ?: 0, + count = count, + onClick = onClick, + ) + }, + ) + + fun onClickTrash( + filter: DFilter, + ) { + val intent = NavigationIntent.NavigateToRoute( + VaultRoute.watchtower( + title = translate(Res.strings.watchtower_item_trashed_items_title), + subtitle = translate(Res.strings.watchtower_header_title), + filter = filter, + trash = true, + ), + ) + navigate(intent) + } + + val trashedItemsFlow = booseBlock( + source = filteredTrashedCiphersFlow, + key = "by_trash", + counterBlock = { holder -> + val count = holder.list.size + count + }, + onCreate = { holder, count -> + val onClick = if (count > 0) { + val filter = holder?.filterConfig?.filter + ?: DFilter.All + ::onClickTrash + .partially1(filter) + } else { + null + } + WatchtowerState.Content.TrashedItems( + revision = holder?.filterConfig?.id ?: 0, + count = count, + onClick = onClick, + ) + }, + ) + + fun onClickEmpty( + filter: DFilter, + ) { + val route = FoldersRoute( + args = FoldersRoute.Args( + filter = filter, + empty = true, + ), + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + } + + val emptyItemsFlow = booseBlock( + source = filteredFoldersFlow + .combine( + ciphersFlow + .map { list -> + list + .asSequence() + .map { it.folderId } + .toSet() + } + .distinctUntilChanged(), + ) { holder, usedFolderIds -> + val filteredFolders = holder + .list + .filter { folder -> + val isEmpty = folder.id !in usedFolderIds + isEmpty + } + holder.copy(list = filteredFolders) + }, + key = "by_empty_folder", + counterBlock = { holder -> + val count = holder.list.size + count + }, + onCreate = { holder, count -> + val onClick = if (count > 0) { + val filter = holder?.filterConfig?.filter + ?: DFilter.All + ::onClickEmpty + .partially1(filter) + } else { + null + } + WatchtowerState.Content.EmptyItems( + revision = holder?.filterConfig?.id ?: 0, + count = count, + onClick = onClick, + ) + }, + ) + + val content = WatchtowerState.Content( + unsecureWebsites = unsecureWebsitesFlow, + duplicateWebsites = duplicateWebsitesFlow, + inactiveTwoFactorAuth = inactiveTwoFactorAuthFlow, + inactivePasskey = inactivePasskeyFlow, + accountCompromised = accountCompromisedFlow, + pwned = passwordPwnedFlow, + pwnedWebsites = websitePwnedFlow, + reused = passwordReusedFlow, + incompleteItems = incompleteItemsFlow, + expiringItems = expiringItemsFlow, + duplicateItems = duplicateItemsFlow, + trashedItems = trashedItemsFlow, + emptyItems = emptyItemsFlow, + strength = passwordStrengthFlow, + ) + val actions = buildContextItems { + section { + this += TwoFaServiceListRoute.actionOrNull( + translator = this@produceScreenState, + navigate = ::navigate, + ) + this += PasskeysServiceListRoute.passkeysActionOrNull( + translator = this@produceScreenState, + navigate = ::navigate, + ) + this += JustDeleteMeServiceListRoute.justDeleteMeActionOrNull( + translator = this@produceScreenState, + navigate = ::navigate, + ) + } + } + filterFlow + .map { filterState -> + WatchtowerState( + revision = filterState.rev, + content = Loadable.Ok(content), + filter = WatchtowerState.Filter( + items = filterState.items, + onClear = filterState.onClear, + ), + actions = actions, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/websiteleak/WebsiteLeakRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/websiteleak/WebsiteLeakRoute.kt new file mode 100644 index 00000000..00d6c858 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/websiteleak/WebsiteLeakRoute.kt @@ -0,0 +1,56 @@ +package com.artemchep.keyguard.feature.websiteleak + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.FactCheck +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.DialogRoute +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.state.TranslatorScope +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItemAction +import com.artemchep.keyguard.ui.icons.icon + +data class WebsiteLeakRoute( + val args: Args, +) : DialogRoute { + companion object { + fun checkBreachesWebsiteActionOrNull( + translator: TranslatorScope, + host: String, + navigate: (NavigationIntent) -> Unit, + ) = checkBreachesWebsiteAction( + translator = translator, + host = host, + navigate = navigate, + ) + + fun checkBreachesWebsiteAction( + translator: TranslatorScope, + host: String, + navigate: (NavigationIntent) -> Unit, + ) = FlatItemAction( + leading = icon(Icons.Outlined.FactCheck), + title = translator.translate(Res.strings.website_action_check_data_breach_title), + onClick = { + val route = WebsiteLeakRoute( + args = Args( + host = host, + ), + ) + val intent = NavigationIntent.NavigateToRoute(route) + navigate(intent) + }, + ) + } + + data class Args( + val host: String, + ) + + @Composable + override fun Content() { + WebsiteLeakScreen( + args = args, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/websiteleak/WebsiteLeakScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/websiteleak/WebsiteLeakScreen.kt new file mode 100644 index 00000000..4453a1cb --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/websiteleak/WebsiteLeakScreen.kt @@ -0,0 +1,272 @@ +package com.artemchep.keyguard.feature.websiteleak + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.FlowRow +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.FactCheck +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.ProvideTextStyle +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.getOrNull +import com.artemchep.keyguard.common.usecase.NumberFormatter +import com.artemchep.keyguard.feature.dialog.Dialog +import com.artemchep.keyguard.feature.favicon.FaviconImage +import com.artemchep.keyguard.feature.home.vault.component.Section +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.FlatSimpleNote +import com.artemchep.keyguard.ui.FlatTextFieldBadge +import com.artemchep.keyguard.ui.HtmlText +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.SimpleNote +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.poweredby.PoweredByHaveibeenpwned +import com.artemchep.keyguard.ui.skeleton.SkeletonText +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.theme.infoContainer +import com.artemchep.keyguard.ui.util.HorizontalDivider +import dev.icerock.moko.resources.compose.stringResource +import org.kodein.di.compose.rememberInstance + +@Composable +fun WebsiteLeakScreen( + args: WebsiteLeakRoute.Args, +) { + val loadableState = produceWebsiteLeakState( + args = args, + ) + Dialog( + icon = icon(Icons.Outlined.FactCheck), + title = { + Text(stringResource(Res.strings.emailleak_title)) + }, + content = { + Column { + Text( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + text = stringResource(Res.strings.emailleak_note), + style = MaterialTheme.typography.bodySmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + ) + Spacer( + modifier = Modifier + .height(16.dp), + ) + + when (loadableState) { + is Loadable.Loading -> { + ContentSkeleton() + } + + is Loadable.Ok -> { + Content( + state = loadableState.value, + ) + } + } + + Spacer( + modifier = Modifier + .height(4.dp), + ) + + PoweredByHaveibeenpwned( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding) + .fillMaxWidth(), + ) + } + }, + contentScrollable = true, + actions = { + val updatedOnClose by rememberUpdatedState(loadableState.getOrNull()?.onClose) + TextButton( + enabled = updatedOnClose != null, + onClick = { + updatedOnClose?.invoke() + }, + ) { + Text(stringResource(Res.strings.close)) + } + }, + ) +} + +@Composable +private fun ColumnScope.ContentSkeleton() { + FlatItem( + title = { + SkeletonText( + modifier = Modifier + .fillMaxWidth(0.8f), + ) + }, + text = { + SkeletonText( + modifier = Modifier + .fillMaxWidth(0.6f), + ) + }, + enabled = true, + elevation = 1.dp, + ) +} + +@Composable +private fun ColumnScope.Content( + state: WebsiteLeakState, +) { + val leaks = state.content.breaches + if (leaks.isNotEmpty()) { + FlatSimpleNote( + type = SimpleNote.Type.WARNING, + title = stringResource(Res.strings.emailleak_breach_found_title), + ) + Section( + text = stringResource(Res.strings.emailleak_breach_section), + ) + } else { + FlatSimpleNote( + type = SimpleNote.Type.OK, + title = stringResource(Res.strings.emailleak_breach_not_found_title), + ) + } + leaks.forEachIndexed { index, item -> + if (index > 0) { + HorizontalDivider( + modifier = Modifier + .padding( + vertical = 16.dp, + ), + ) + } + + BreachItem( + modifier = Modifier + .padding( + horizontal = Dimens.horizontalPadding, + ), + item = item, + ) + } +} + +@OptIn(ExperimentalLayoutApi::class) +@Composable +private fun BreachItem( + modifier: Modifier = Modifier, + item: WebsiteLeakState.Breach, +) { + Column( + modifier = modifier, + verticalArrangement = Arrangement.spacedBy(8.dp), + ) { + Row( + verticalAlignment = Alignment.CenterVertically, + ) { + FaviconImage( + modifier = Modifier + .size(24.dp) + .clip(CircleShape), + imageModel = { item.icon }, + ) + Spacer( + modifier = Modifier + .width(16.dp), + ) + Column { + Text( + text = item.title, + style = MaterialTheme.typography.titleMedium, + ) + Text( + text = item.domain, + style = MaterialTheme.typography.bodyMedium, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + fontFamily = FontFamily.Monospace, + ) + } + } + if (item.dataClasses.isNotEmpty()) { + FlowRow( + verticalArrangement = Arrangement.spacedBy(8.dp), + horizontalArrangement = Arrangement.spacedBy(8.dp), + ) { + item.dataClasses.forEach { dataClass -> + FlatTextFieldBadge( + backgroundColor = MaterialTheme.colorScheme.infoContainer, + text = dataClass, + ) + } + } + } + Column { + if (item.count != null) { + val numberFormatter: NumberFormatter by rememberInstance() + Text( + text = stringResource( + Res.plurals.emailleak_breach_accounts_count_plural, + item.count, + numberFormatter.formatNumber(item.count.toInt()), + ), + style = MaterialTheme.typography.labelSmall, + fontWeight = FontWeight.Black, + ) + } + if (item.occurredAt != null) { + Text( + text = stringResource( + Res.strings.emailleak_breach_occurred_at, + item.occurredAt, + ), + style = MaterialTheme.typography.labelSmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + ) + } + if (item.reportedAt != null) { + Text( + text = stringResource( + Res.strings.emailleak_breach_reported_at, + item.reportedAt, + ), + style = MaterialTheme.typography.labelSmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + ) + } + } + ProvideTextStyle(MaterialTheme.typography.bodySmall) { + HtmlText( + html = item.description, + ) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/websiteleak/WebsiteLeakState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/websiteleak/WebsiteLeakState.kt new file mode 100644 index 00000000..add3a35d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/websiteleak/WebsiteLeakState.kt @@ -0,0 +1,29 @@ +package com.artemchep.keyguard.feature.websiteleak + +import androidx.compose.runtime.Immutable +import kotlinx.collections.immutable.ImmutableList + +@Immutable +data class WebsiteLeakState( + val content: Content, + val onClose: (() -> Unit)? = null, +) { + @Immutable + data class Content( + val breaches: ImmutableList, + ) + + @Immutable + data class Breach( + val title: String, + val domain: String, + val description: String, + val icon: String?, + val count: Int?, + /** Time when this breach has occurred */ + val occurredAt: String?, + /** Time when this breach was acknowledged */ + val reportedAt: String?, + val dataClasses: List, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/websiteleak/WebsiteLeakStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/websiteleak/WebsiteLeakStateProducer.kt new file mode 100644 index 00000000..6fbf6e1e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/websiteleak/WebsiteLeakStateProducer.kt @@ -0,0 +1,87 @@ +package com.artemchep.keyguard.feature.websiteleak + +import androidx.compose.runtime.Composable +import arrow.core.getOrElse +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.service.hibp.breaches.all.BreachesRepository +import com.artemchep.keyguard.common.usecase.DateFormatter +import com.artemchep.keyguard.feature.navigation.state.navigatePopSelf +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import kotlinx.collections.immutable.toImmutableList +import kotlinx.coroutines.flow.flowOf +import kotlinx.datetime.LocalTime +import kotlinx.datetime.TimeZone +import kotlinx.datetime.atTime +import kotlinx.datetime.toInstant +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +@Composable +fun produceWebsiteLeakState( + args: WebsiteLeakRoute.Args, +) = with(localDI().direct) { + produceWebsiteLeakState( + args = args, + breachesRepository = instance(), + dateFormatter = instance(), + ) +} + +@Composable +fun produceWebsiteLeakState( + args: WebsiteLeakRoute.Args, + breachesRepository: BreachesRepository, + dateFormatter: DateFormatter, +): Loadable = produceScreenState( + key = "website_leak", + initial = Loadable.Loading, + args = arrayOf(), +) { + val breaches2 = breachesRepository.get() + .attempt() + .bind() + val breach3 = breaches2 + .map { + it.breaches + .filter { + it.domain != null && + it.domain.isNotBlank() && + args.host.endsWith(it.domain) + } + .sortedByDescending { it.addedDate } + .map { leak -> + WebsiteLeakState.Breach( + title = leak.title.orEmpty(), + domain = leak.domain.orEmpty(), + icon = leak.logoPath.orEmpty(), + count = leak.pwnCount, + description = leak.description.orEmpty(), + occurredAt = leak.breachDate + ?.atTime(LocalTime.fromMillisecondOfDay(0)) + ?.toInstant(TimeZone.UTC) + ?.let(dateFormatter::formatDate), + reportedAt = leak.addedDate + ?.atTime(LocalTime.fromMillisecondOfDay(0)) + ?.toInstant(TimeZone.UTC) + ?.let(dateFormatter::formatDate), + dataClasses = leak.dataClasses, + ) + } + } + .getOrElse { emptyList() } + + val content = WebsiteLeakState.Content( + breaches = breach3 + .toImmutableList(), + ) + val state = WebsiteLeakState( + content = content, + onClose = { + navigatePopSelf() + }, + ) + flowOf(Loadable.Ok(state)) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/yubikey/YubiKey.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/yubikey/YubiKey.kt new file mode 100644 index 00000000..19d95f58 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/yubikey/YubiKey.kt @@ -0,0 +1,237 @@ +package com.artemchep.keyguard.feature.yubikey + +import androidx.compose.animation.Crossfade +import androidx.compose.animation.animateColorAsState +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Nfc +import androidx.compose.material.icons.outlined.Usb +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.LocalTextStyle +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.State +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.graphicsLayer +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.unit.dp +import arrow.core.Either +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.getOrNull +import com.artemchep.keyguard.common.model.map +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.DefaultEmphasisAlpha +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.theme.combineAlpha +import dev.icerock.moko.resources.compose.stringResource + +typealias OnYubiKeyListener = (Either) -> Unit + +@Composable +expect fun rememberYubiKey( + send: OnYubiKeyListener?, +): YubiKeyState + +@Composable +fun YubiKeyUsbCard( + modifier: Modifier = Modifier, + state: State>, +) { + val isEnabled by remember(state) { + derivedStateOf { + val isEnabled = state.value + .map { it.enabled } + .getOrNull() + isEnabled == true + } + } + val isActive by remember(state) { + derivedStateOf { + val isActive = state.value + .map { it.devices.isNotEmpty() } + .getOrNull() + isActive == true + } + } + YubiKeyCard( + modifier = modifier + .graphicsLayer { + alpha = if (isEnabled) 1f else DisabledEmphasisAlpha + }, + title = { + Text( + modifier = Modifier + .weight(1f), + text = stringResource(Res.strings.yubikey_usb_title), + ) + Spacer( + modifier = Modifier + .width(8.dp), + ) + val colorTarget = + if (isActive) MaterialTheme.colorScheme.primary else LocalContentColor.current + val color by animateColorAsState(colorTarget) + Icon( + Icons.Outlined.Usb, + modifier = Modifier + .align(Alignment.CenterVertically), + contentDescription = null, + tint = color, + ) + Spacer( + modifier = Modifier + .width(8.dp), + ) + }, + text = stringResource(Res.strings.yubikey_usb_text), + content = { + val isCapturing by remember(state) { + derivedStateOf { + val isCapturing = state.value + .map { it.capturing } + .getOrNull() + isCapturing == true + } + } + ExpandedIfNotEmpty( + Unit.takeIf { isActive }, + ) { + Row( + verticalAlignment = Alignment.CenterVertically, + ) { + Text( + modifier = Modifier + .weight(1f), + text = stringResource(Res.strings.yubikey_usb_touch_the_gold_sensor_note), + style = MaterialTheme.typography.labelMedium, + color = MaterialTheme.colorScheme.primary, + ) + Spacer( + modifier = Modifier + .width(8.dp), + ) + Crossfade( + modifier = Modifier + .size(24.dp), + targetState = isCapturing, + ) { capturing -> + if (capturing) { + CircularProgressIndicator() + } + } + Spacer( + modifier = Modifier + .width(8.dp), + ) + } + } + }, + ) +} + +@Composable +fun YubiKeyNfcCard( + modifier: Modifier = Modifier, + state: State>, +) { + val isEnabled by remember(state) { + derivedStateOf { + val isEnabled = state.value + .map { it.enabled } + .getOrNull() + isEnabled == true + } + } + YubiKeyCard( + modifier = modifier + .graphicsLayer { + alpha = if (isEnabled) 1f else DisabledEmphasisAlpha + }, + title = { + Text( + modifier = Modifier + .weight(1f), + text = stringResource(Res.strings.yubikey_nfc_title), + ) + Spacer( + modifier = Modifier + .width(8.dp), + ) + Icon( + Icons.Outlined.Nfc, + modifier = Modifier + .align(Alignment.CenterVertically), + contentDescription = null, + ) + Spacer( + modifier = Modifier + .width(8.dp), + ) + }, + text = stringResource(Res.strings.yubikey_nfc_text), + ) +} + +@Composable +private fun YubiKeyCard( + modifier: Modifier = Modifier, + title: @Composable RowScope.() -> Unit, + text: String, + content: (@Composable () -> Unit)? = null, +) { + Surface( + modifier = modifier, + shape = MaterialTheme.shapes.medium, + ) { + Column( + modifier = Modifier + .padding(8.dp), + ) { + val localEmphasis = DefaultEmphasisAlpha + val localTextStyle = TextStyle( + color = LocalContentColor.current + .combineAlpha(localEmphasis), + ) + + CompositionLocalProvider( + LocalTextStyle provides MaterialTheme.typography.titleMedium + .merge(localTextStyle), + ) { + Row { + title() + } + } + Spacer(modifier = Modifier.height(8.dp)) + Text( + text, + style = MaterialTheme.typography.bodyMedium + .merge(localTextStyle), + color = LocalContentColor.current + .combineAlpha(localEmphasis) + .combineAlpha(MediumEmphasisAlpha), + ) + if (content != null) { + Spacer(modifier = Modifier.height(8.dp)) + content() + } + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/yubikey/YubiKeyState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/yubikey/YubiKeyState.kt new file mode 100644 index 00000000..5536c2eb --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/yubikey/YubiKeyState.kt @@ -0,0 +1,26 @@ +package com.artemchep.keyguard.feature.yubikey + +import androidx.compose.runtime.Immutable +import androidx.compose.runtime.Stable +import androidx.compose.runtime.State +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.platform.LeUsbPid +import kotlinx.collections.immutable.ImmutableSet + +@Immutable +data class YubiKeyUsbState( + val enabled: Boolean, + val capturing: Boolean, + val devices: ImmutableSet, +) + +@Immutable +data class YubiKeyNfcState( + val enabled: Boolean, +) + +@Stable +data class YubiKeyState( + val usbState: State>, + val nfcState: State>, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/yubikey/YubiRoute.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/yubikey/YubiRoute.kt new file mode 100644 index 00000000..3ca9761b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/yubikey/YubiRoute.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.feature.yubikey + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.Route + +object YubiRoute : Route { + @Composable + override fun Content() { + YubiScreen() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/yubikey/YubiScreen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/yubikey/YubiScreen.kt new file mode 100644 index 00000000..bd2c2e9c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/yubikey/YubiScreen.kt @@ -0,0 +1,171 @@ +package com.artemchep.keyguard.feature.yubikey + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material3.Button +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Modifier +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.text.input.KeyboardType +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.ToastMessage +import com.artemchep.keyguard.common.usecase.ShowMessage +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatTextField +import com.artemchep.keyguard.ui.ScaffoldColumn +import com.artemchep.keyguard.ui.grid.SimpleGridLayout +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.horizontalPaddingHalf +import com.artemchep.keyguard.ui.toolbar.LargeToolbar +import com.artemchep.keyguard.ui.util.HorizontalDivider +import dev.icerock.moko.resources.compose.stringResource +import org.kodein.di.compose.rememberInstance + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun YubiScreen() { + val updatedShowMessage by run { + val showMessage: ShowMessage by rememberInstance() + rememberUpdatedState(showMessage) + } + val yubiKey = rememberYubiKey { event -> + val msg = event.fold( + ifLeft = { e -> + ToastMessage( + title = "Failed to receive YubiKey code", + text = e.message, + type = ToastMessage.Type.ERROR, + ) + }, + ifRight = { code -> + ToastMessage( + title = "Received YubiKey code", + text = code, + type = ToastMessage.Type.SUCCESS, + ) + }, + ) + updatedShowMessage.copy(msg) + } + + val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + ScaffoldColumn( + modifier = Modifier + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + LargeToolbar( + title = { + Text("YubiKey") + }, + navigationIcon = { + NavigationIcon() + }, + scrollBehavior = scrollBehavior, + ) + }, + ) { + YubiKeyManual( + onSend = { + // Do nothing. + }, + ) + Spacer( + modifier = Modifier + .height(16.dp), + ) + HorizontalDivider() + Spacer( + modifier = Modifier + .height(16.dp), + ) + SimpleGridLayout( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPaddingHalf), + ) { + YubiKeyUsbCard( + state = yubiKey.usbState, + ) + YubiKeyNfcCard( + state = yubiKey.nfcState, + ) + } + } +} + +@Composable +fun YubiKeyManual( + modifier: Modifier = Modifier, + onSend: (String) -> Unit, +) { + Column( + modifier = modifier, + ) { + val textState = remember { + mutableStateOf("") + } + val fieldState = remember(textState) { + derivedStateOf { + TextFieldModel2( + state = textState, + onChange = textState::value::set, + ) + } + } + + Text( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + text = stringResource(Res.strings.addaccount2fa_yubikey_manual_text), + style = MaterialTheme.typography.bodyMedium, + ) + Spacer( + modifier = Modifier + .height(16.dp), + ) + FlatTextField( + modifier = Modifier + .padding(horizontal = 16.dp), + label = stringResource(Res.strings.verification_code), + value = fieldState.value, + keyboardOptions = KeyboardOptions( + autoCorrect = true, + keyboardType = KeyboardType.Text, + ), + ) + Spacer( + modifier = Modifier + .height(16.dp), + ) + val enabled = remember(textState) { + derivedStateOf { + textState.value.isNotBlank() + } + } + val updatedOnSend by rememberUpdatedState(onSend) + Button( + modifier = Modifier + .padding(horizontal = 16.dp), + enabled = enabled.value, + onClick = { + updatedOnSend(textState.value) + }, + ) { + Text(stringResource(Res.strings.send)) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeActivity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeActivity.kt new file mode 100644 index 00000000..e34a4013 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeActivity.kt @@ -0,0 +1,3 @@ +package com.artemchep.keyguard.platform + +expect class LeActivity diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeAnimation.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeAnimation.kt new file mode 100644 index 00000000..100eaf21 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeAnimation.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.platform + +import androidx.compose.runtime.Composable + +@get:Composable +expect val LocalAnimationFactor: Float diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeBundle.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeBundle.kt new file mode 100644 index 00000000..ef530efe --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeBundle.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.platform + +expect class LeBundle + +expect operator fun LeBundle.contains(key: String): Boolean + +expect operator fun LeBundle.get(key: String): Any? + +expect fun leBundleOf( + vararg map: Pair, +): LeBundle diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeCipher.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeCipher.kt new file mode 100644 index 00000000..fb7b228a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeCipher.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.platform + +expect class LeCipher + +expect val LeCipher.leIv: ByteArray diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeContext.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeContext.kt new file mode 100644 index 00000000..250b4b51 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeContext.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.platform + +import androidx.compose.runtime.Composable + +expect class LeContext + +@get:Composable +expect val LocalLeContext: LeContext diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeCrashlytics.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeCrashlytics.kt new file mode 100644 index 00000000..841bff65 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeCrashlytics.kt @@ -0,0 +1,13 @@ +package com.artemchep.keyguard.platform + +import kotlinx.coroutines.flow.Flow + +expect fun recordException(e: Throwable) + +expect fun recordLog(message: String) + +expect fun crashlyticsIsEnabled(): Boolean? + +expect fun crashlyticsIsEnabledFlow(): Flow + +expect fun crashlyticsSetEnabled(enabled: Boolean?) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeDebug.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeDebug.kt new file mode 100644 index 00000000..05e289c3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeDebug.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.platform + +/** + * `true` if the app is not for the app store, so it + * should not contain subscriptions, `false` if the app + * is for the app store. + */ +expect val isStandalone: Boolean diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LePlatform.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LePlatform.kt new file mode 100644 index 00000000..87745ac0 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LePlatform.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.platform + +expect val CurrentPlatform: Platform + +sealed interface Platform { + sealed interface Mobile : Platform { + data class Android( + val isChromebook: Boolean, + ) : Mobile + } + + sealed interface Desktop : Platform { + data object Linux : Desktop + data object Windows : Desktop + data object MacOS : Desktop + data object Other : Desktop + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeUri.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeUri.kt new file mode 100644 index 00000000..7eb3aae2 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeUri.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.platform + +import java.io.File + +expect abstract class LeUri + +expect fun leParseUri(uri: String): LeUri + +expect fun leParseUri(file: File): LeUri diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeUsbPid.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeUsbPid.kt new file mode 100644 index 00000000..30637672 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeUsbPid.kt @@ -0,0 +1,3 @@ +package com.artemchep.keyguard.platform + +expect enum class LeUsbPid diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeWindowInsets.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeWindowInsets.kt new file mode 100644 index 00000000..62032a82 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/LeWindowInsets.kt @@ -0,0 +1,19 @@ +package com.artemchep.keyguard.platform + +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.runtime.Composable + +@get:Composable +expect val WindowInsets.Companion.leIme: WindowInsets + +@get:Composable +expect val WindowInsets.Companion.leNavigationBars: WindowInsets + +@get:Composable +expect val WindowInsets.Companion.leStatusBars: WindowInsets + +@get:Composable +expect val WindowInsets.Companion.leSystemBars: WindowInsets + +@get:Composable +expect val WindowInsets.Companion.leDisplayCutout: WindowInsets diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/lifecycle/LeLifecycleExt.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/lifecycle/LeLifecycleExt.kt new file mode 100644 index 00000000..3122710a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/lifecycle/LeLifecycleExt.kt @@ -0,0 +1,39 @@ +package com.artemchep.keyguard.platform.lifecycle + +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.emptyFlow +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.flow +import kotlinx.coroutines.flow.map + +fun Flow.flowWithLifecycle( + lifecycleStateFlow: Flow, + minActiveState: LeLifecycleState = LeLifecycleState.STARTED, +): Flow = lifecycleStateFlow + .map { lifecycleState -> + lifecycleState >= minActiveState + } + .distinctUntilChanged() + // Collect the underlying flow when the lifecycle + // is in an active state. + .flatMapLatest { shouldBeActive -> + if (shouldBeActive) { + this + } else { + emptyFlow() + } + } + +fun Flow.onState( + minActiveState: LeLifecycleState = LeLifecycleState.STARTED, + block: suspend CoroutineScope.() -> Unit, +) = run { + val flow = flow { + coroutineScope(block) + } + flow + .flowWithLifecycle(this, minActiveState = minActiveState) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/lifecycle/LeLifecycleProvider.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/lifecycle/LeLifecycleProvider.kt new file mode 100644 index 00000000..f4324703 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/lifecycle/LeLifecycleProvider.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.platform.lifecycle + +import androidx.compose.runtime.Composable +import kotlinx.coroutines.flow.StateFlow + +@get:Composable +expect val LocalLifecycleStateFlow: StateFlow diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/lifecycle/LeLifecycleState.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/lifecycle/LeLifecycleState.kt new file mode 100644 index 00000000..e7e62ed7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/lifecycle/LeLifecycleState.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.platform.lifecycle + +enum class LeLifecycleState { + DESTROYED, + INITIALIZED, + CREATED, + STARTED, + RESUMED, +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/parcelize/LeIgnoredOnParcel.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/parcelize/LeIgnoredOnParcel.kt new file mode 100644 index 00000000..79aa01af --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/parcelize/LeIgnoredOnParcel.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.platform.parcelize + +/** + * The property annotated with [LeIgnoredOnParcel] + * will not be stored into parcel. + */ +@Target(AnnotationTarget.PROPERTY) +@Retention(AnnotationRetention.SOURCE) +expect annotation class LeIgnoredOnParcel() diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/parcelize/LeParcelable.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/parcelize/LeParcelable.kt new file mode 100644 index 00000000..dbdd6a89 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/parcelize/LeParcelable.kt @@ -0,0 +1,3 @@ +package com.artemchep.keyguard.platform.parcelize + +expect interface LeParcelable diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/parcelize/LeParcelize.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/parcelize/LeParcelize.kt new file mode 100644 index 00000000..77ced9e1 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/parcelize/LeParcelize.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.platform.parcelize + +@Target(AnnotationTarget.CLASS) +@Retention(AnnotationRetention.BINARY) +expect annotation class LeParcelize() diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/util/hasAutofill.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/util/hasAutofill.kt new file mode 100644 index 00000000..8abf6ea1 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/util/hasAutofill.kt @@ -0,0 +1,10 @@ +package com.artemchep.keyguard.platform.util + +import com.artemchep.keyguard.platform.Platform + +fun Platform.hasAutofill(): Boolean = + this is Platform.Mobile.Android && + !this.isChromebook + +fun Platform.hasSubscription(): Boolean = + this is Platform.Mobile.Android diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/util/isRelease.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/util/isRelease.kt new file mode 100644 index 00000000..5a98f302 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/platform/util/isRelease.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.platform.util + +import com.artemchep.keyguard.build.BuildKonfig + +val isRelease: Boolean = BuildKonfig.buildType.lowercase() == "release" diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/CreatePasskeyRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/CreatePasskeyRequest.kt new file mode 100644 index 00000000..7050a207 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/CreatePasskeyRequest.kt @@ -0,0 +1,140 @@ +package com.artemchep.keyguard.provider.bitwarden + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class AuthenticatorAssertionClientData( + val type: String, // webauthn.get + // base64 + val challenge: String, + val origin: String, + /** + * Android app package name, if the app + * does exist. + */ + val androidPackageName: String? = null, +) + +@Serializable +data class AuthenticatorAssertion( + // base64 + val clientDataJSON: String, + // base64 + val authenticatorData: String, + val signature: String, + val userHandle: String, + val publicKeyAlgorithm: Int, + val publicKey: String, +) + +// See: +// https://webauthn.guide/ + +@Serializable +enum class CreatePasskeyAttestation { + /** + * Means that the server wishes to receive + * the attestation data from the authenticator. + */ + @SerialName("direct") + DIRECT, + + @SerialName("enterprise") + ENTERPRISE, + + /** + * Means that the server will allow for anonymized attestation data. + */ + @SerialName("indirect") + INDIRECT, + + /** + * Indicates that the server does not care about attestation. + */ + @SerialName("none") + NONE, +} + +@Serializable +data class CreatePasskeyRelyingParty( + val id: String? = null, + val name: String, +) + +@Serializable +data class CreatePasskeyUser( + // base64 + val id: String, + val name: String, + val displayName: String, +) + +@Serializable +data class CreatePasskeyPubKeyCredParams( + // https://www.iana.org/assignments/cose/cose.xhtml#algorithms + val alg: Int, + val type: String, +) + +// https://www.w3.org/TR/webauthn-2/#dictionary-authenticatorSelection +@Serializable +data class CreatePasskeyAuthenticatorSelection( + val residentKey: String = "discouraged", + val requireResidentKey: Boolean = residentKey == "required", +) + +/* + * { + * "attestation":"none", + * "authenticatorSelection":{ + * "authenticatorAttachment":"platform", + * "requireResidentKey":false, + * "residentKey":"required", + * "userVerification":"required" + * }, + * "challenge":"t2cLubF-1PFSjgNAkyZwqC_aooWQUyBcjEDSj56wJKA", + * "excludeCredentials":[], + * "pubKeyCredParams":[ + * {"alg":-7,"type":"public-key"} + * ], + * "rp":{ + * "id":"dashlanepasskeydemo.com", + * "name":"Dashlane Passkey Demo" + * }, + * "timeout":1800000, + * "user":{ + * "displayName":"artemchep@gmail.com", + * "id":"ab4ad29c-e435-45cb-995b-9a36600e0f85", + * "name":"artemchep@gmail.com" + * } + * } + */ +@Serializable +data class CreatePasskey( + // TODO: Make it fall back to none + val attestation: CreatePasskeyAttestation? = CreatePasskeyAttestation.NONE, + val authenticatorSelection: CreatePasskeyAuthenticatorSelection = CreatePasskeyAuthenticatorSelection(), + /** + * The challenge is a buffer of cryptographically random bytes generated + * on the server, and is needed to prevent "replay attacks". + */ + // base64 + val challenge: String, + val pubKeyCredParams: List, + /** + * Describing the organization responsible + * for registering and authenticating the user. + */ + val rp: CreatePasskeyRelyingParty, + /** + * This is information about the user currently registering. + * The authenticator uses the id to associate a credential with the user. + */ + val user: CreatePasskeyUser, + /** + * The time (in milliseconds) that the user has to respond + * to a prompt for registration before an error is returned. + */ + val timeout: Long? = null, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/ServerEnv.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/ServerEnv.kt new file mode 100644 index 00000000..3866aa99 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/ServerEnv.kt @@ -0,0 +1,43 @@ +package com.artemchep.keyguard.provider.bitwarden + +import arrow.optics.optics +import com.artemchep.keyguard.res.Res +import dev.icerock.moko.resources.StringResource + +@optics +data class ServerEnv( + val baseUrl: String = "", + val webVaultUrl: String = "", + val apiUrl: String = "", + val identityUrl: String = "", + val iconsUrl: String = "", + val notificationsUrl: String = "", + val region: Region = Region.default, + val headers: List = emptyList(), +) { + companion object; + + enum class Region( + val title: StringResource, + val text: String, + ) { + US(Res.strings.addaccount_region_us_type, "bitwarden.com"), + EU(Res.strings.addaccount_region_eu_type, "bitwarden.eu"), + ; + + companion object { + val default get() = US + + // Must not collide with any of the + // region names! + val selfhosted get() = "selfhosted" + } + } +} + +data class ServerHeader( + val key: String, + val value: String, +) { + companion object +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/ServerTwoFactorToken.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/ServerTwoFactorToken.kt new file mode 100644 index 00000000..52ebca67 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/ServerTwoFactorToken.kt @@ -0,0 +1,13 @@ +package com.artemchep.keyguard.provider.bitwarden + +import arrow.optics.optics +import com.artemchep.keyguard.provider.bitwarden.model.TwoFactorProviderType + +@optics +data class ServerTwoFactorToken( + val token: String, + val provider: TwoFactorProviderType, + val remember: Boolean = false, +) { + companion object +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/SyncEngine.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/SyncEngine.kt new file mode 100644 index 00000000..2b1274b2 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/SyncEngine.kt @@ -0,0 +1,1081 @@ +package com.artemchep.keyguard.provider.bitwarden.api + +import com.artemchep.keyguard.common.exception.HttpException +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.service.crypto.CipherEncryptor +import com.artemchep.keyguard.common.service.crypto.CryptoGenerator +import com.artemchep.keyguard.common.service.logging.LogRepository +import com.artemchep.keyguard.common.service.text.Base64Service +import com.artemchep.keyguard.core.store.DatabaseManager +import com.artemchep.keyguard.core.store.DatabaseSyncer +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCollection +import com.artemchep.keyguard.core.store.bitwarden.BitwardenFolder +import com.artemchep.keyguard.core.store.bitwarden.BitwardenOrganization +import com.artemchep.keyguard.core.store.bitwarden.BitwardenProfile +import com.artemchep.keyguard.core.store.bitwarden.BitwardenSend +import com.artemchep.keyguard.core.store.bitwarden.BitwardenService +import com.artemchep.keyguard.core.store.bitwarden.BitwardenToken +import com.artemchep.keyguard.data.Database +import com.artemchep.keyguard.platform.recordException +import com.artemchep.keyguard.provider.bitwarden.api.builder.api +import com.artemchep.keyguard.provider.bitwarden.api.builder.create +import com.artemchep.keyguard.provider.bitwarden.api.builder.delete +import com.artemchep.keyguard.provider.bitwarden.api.builder.get +import com.artemchep.keyguard.provider.bitwarden.api.builder.post +import com.artemchep.keyguard.provider.bitwarden.api.builder.put +import com.artemchep.keyguard.provider.bitwarden.api.builder.restore +import com.artemchep.keyguard.provider.bitwarden.api.builder.sync +import com.artemchep.keyguard.provider.bitwarden.api.builder.trash +import com.artemchep.keyguard.provider.bitwarden.api.entity.SyncResponse +import com.artemchep.keyguard.provider.bitwarden.crypto.BitwardenCr +import com.artemchep.keyguard.provider.bitwarden.crypto.BitwardenCrCta +import com.artemchep.keyguard.provider.bitwarden.crypto.BitwardenCrImpl +import com.artemchep.keyguard.provider.bitwarden.crypto.BitwardenCrKey +import com.artemchep.keyguard.provider.bitwarden.crypto.appendOrganizationToken +import com.artemchep.keyguard.provider.bitwarden.crypto.appendProfileToken +import com.artemchep.keyguard.provider.bitwarden.crypto.appendSendToken +import com.artemchep.keyguard.provider.bitwarden.crypto.appendUserToken +import com.artemchep.keyguard.provider.bitwarden.crypto.encrypted +import com.artemchep.keyguard.provider.bitwarden.crypto.transform +import com.artemchep.keyguard.provider.bitwarden.entity.CipherEntity +import com.artemchep.keyguard.provider.bitwarden.entity.CollectionEntity +import com.artemchep.keyguard.provider.bitwarden.entity.FolderEntity +import com.artemchep.keyguard.provider.bitwarden.entity.OrganizationEntity +import com.artemchep.keyguard.provider.bitwarden.entity.SyncProfile +import com.artemchep.keyguard.provider.bitwarden.entity.SyncSends +import com.artemchep.keyguard.provider.bitwarden.entity.request.CipherUpdate +import com.artemchep.keyguard.provider.bitwarden.entity.request.FolderUpdate +import com.artemchep.keyguard.provider.bitwarden.entity.request.of +import com.artemchep.keyguard.provider.bitwarden.sync.SyncManager +import io.ktor.client.HttpClient +import io.ktor.client.call.NoTransformationFoundException +import kotlinx.datetime.Clock +import kotlinx.datetime.Instant +import kotlin.RuntimeException +import kotlin.String +import kotlin.TODO +import kotlin.Throwable +import kotlin.Unit +import kotlin.apply +import kotlin.let +import kotlin.require +import kotlin.requireNotNull +import kotlin.takeIf +import kotlin.to + +class SyncEngine( + private val httpClient: HttpClient, + private val dbManager: DatabaseManager, + private val base64Service: Base64Service, + private val cryptoGenerator: CryptoGenerator, + private val cipherEncryptor: CipherEncryptor, + private val logRepository: LogRepository, + private val user: BitwardenToken, + private val syncer: DatabaseSyncer, +) { + companion object { + private const val TAG = "SyncEngine" + } + + class EmptyVaultException(message: String) : RuntimeException(message) + + class DecodeVaultException(message: String, e: Throwable) : RuntimeException(message, e) + + suspend fun sync() = kotlin.run { + val env = user.env.back() + val api = env.api + val token = requireNotNull(user.token).accessToken + + val response = api.sync( + httpClient = httpClient, + env = env, + token = token, + ) + val db = dbManager.get().bind() + + // There's a bug in the web vault that sometimes displays a + // user empty vault. This check logs these kind of events, I need + // it to know if that's what once caused a user sync to completely + // empty vault. + if ( + response.ciphers.isNullOrEmpty() && + response.folders.isNullOrEmpty() + ) { + val existingCiphers = db.cipherQueries + .getByAccountId(user.id) + .executeAsList() + if (existingCiphers.isNotEmpty()) { + val isSelfHosted = env.webVaultUrl.isNotBlank() + val isUnofficial = response.unofficialServer == true + + val m = "Backend returned empty cipher list, while there's " + + "${existingCiphers.size} ciphers in the local storage: " + + "official=${!isUnofficial}, self-hosted=${isSelfHosted}" + val e = EmptyVaultException(m) + recordException(e) + } + } + + val now = Clock.System.now() + val crypto = crypto( + profile = response.profile, + sends = response.sends.orEmpty(), + ) + + fun getCodec( + mode: BitwardenCrCta.Mode, + organizationId: String? = null, + sendId: String? = null, + ) = kotlin.run { + val envEncryptionType = CipherEncryptor.Type.AesCbc256_HmacSha256_B64 + val env = if (sendId != null) { + val key = BitwardenCrKey.SendToken(sendId) + BitwardenCrCta.BitwardenCrCtaEnv( + key = key, + encryptionType = CipherEncryptor.Type.AesCbc256_B64, + ) + } else if (organizationId != null) { + val key = BitwardenCrKey.OrganizationToken(organizationId) + BitwardenCrCta.BitwardenCrCtaEnv( + key = key, + encryptionType = envEncryptionType, + ) + } else { + val key = BitwardenCrKey.UserToken + BitwardenCrCta.BitwardenCrCtaEnv( + key = key, + encryptionType = envEncryptionType, + ) + } + crypto.cta( + env = env, + mode = mode, + ) + } + + // + // Profile + // + + val newProfile = BitwardenProfile + .encrypted( + accountId = user.id, + entity = response.profile, + unofficialServer = response.unofficialServer == true, + ) + .transform( + crypto = getCodec( + mode = BitwardenCrCta.Mode.DECRYPT, + ), + ) + syncer.withLock(DatabaseSyncer.Key.Profile(response.profile.id)) { + val profileDao = db.profileQueries + + // Check the security timestamp. + val existingProfile = profileDao + .getByAccountId( + accountId = user.id, + ) + .executeAsOneOrNull() + ?.takeIf { it.profileId == response.profile.id } + if (existingProfile != null) { + val existingSecurityStamp = existingProfile.data_.securityStamp + require(existingSecurityStamp == response.profile.securityStamp) { + "Local security stamp differs from a remote one. " + + "You might be in a man-in-the-middle attack!" + } + } + + // Insert updated profile. + if (existingProfile?.data_ != newProfile) { + profileDao.insert( + profileId = newProfile.profileId, + accountId = newProfile.accountId, + data = newProfile, + ) + } + } + + // + // Folder + // + + fun BitwardenCrCta.folderDecoder( + entity: FolderEntity, + localFolderId: String?, + ) = kotlin.run { + val folderId = localFolderId + ?: cryptoGenerator.uuid() + BitwardenFolder + .encrypted( + accountId = user.id, + folderId = folderId, + entity = entity, + ) + .transform(this) + } + + val folderDao = db.folderQueries + val existingFolders = folderDao + .getByAccountId( + accountId = user.id, + ) + .executeAsList() + .map { it.data_ } + syncX( + name = "folder", + localItems = existingFolders, + localLens = SyncManager.LensLocal( + getLocalId = { it.folderId }, + getLocalRevisionDate = { it.revisionDate }, + ), + localReEncoder = { model -> + model + }, + localDecoder = { local, remote -> + val encryptor = getCodec( + mode = BitwardenCrCta.Mode.ENCRYPT, + ) + val encryptedFolder = local.transform(encryptor) + FolderUpdate.of( + model = encryptedFolder, + ) to local + }, + localDeleteById = { ids -> + folderDao.transaction { + ids.forEach { folderId -> + folderDao.deleteByFolderId( + folderId = folderId, + ) + } + } + }, + localPut = { models -> + folderDao.transaction { + models.forEach { folder -> + folderDao.insert( + folderId = folder.folderId, + accountId = folder.accountId, + data = folder, + ) + } + } + }, + remoteItems = response.folders.orEmpty(), + remoteLens = SyncManager.Lens( + getId = { it.id }, + getRevisionDate = { it.revisionDate }, + ), + remoteDecoder = { remote, local -> + val codec = getCodec( + mode = BitwardenCrCta.Mode.DECRYPT, + ) + codec + .folderDecoder( + entity = remote, + localFolderId = local?.folderId, + ) + }, + remoteDeleteById = { id -> + user.env.back().api.folders.delete( + httpClient = httpClient, + env = env, + token = user.token.accessToken, + id = id, + ) + }, + remoteDecodedFallback = { remote, localOrNull, e -> + val logObj = mapOf( + // this should include the encryption type + "name" to remote.name.take(2), + ) + val logE = DecodeVaultException( + message = "Failed to decrypt a folder. Structure: $logObj", + e = e, + ) + recordException(logE) + + val localId = localOrNull?.folderId + ?: cryptoGenerator.uuid() + val service = BitwardenService( + remote = BitwardenService.Remote( + id = remote.id, + revisionDate = remote.revisionDate, + deletedDate = null, + ), + error = BitwardenService.Error( + code = BitwardenService.Error.CODE_DECODING_FAILED, + revisionDate = now, + ), + deleted = false, + version = BitwardenService.VERSION, + ) + val model = BitwardenFolder( + accountId = user.id, + folderId = localId, + revisionDate = remote.revisionDate, + service = service, + name = "⚠️ Unsupported Folder", + ) + model + }, + remotePut = { (update, local) -> + require(update.source.folderId == local.folderId) + val folderApi = user.env.back().api.folders + val folderResponse = when (update) { + is FolderUpdate.Create -> + folderApi.post( + httpClient = httpClient, + env = env, + token = user.token.accessToken, + body = update.folderRequest, + ) + + is FolderUpdate.Modify -> + folderApi.put( + httpClient = httpClient, + env = env, + token = user.token.accessToken, + id = update.folderId, + body = update.folderRequest, + ) + } + val codec = getCodec( + mode = BitwardenCrCta.Mode.DECRYPT, + ) + codec + .folderDecoder( + entity = folderResponse, + localFolderId = update.source.folderId, + ) + }, + onLog = { msg, logLevel -> + logRepository.post(TAG, "[SyncFolder] $msg", logLevel) + }, + ) + + val folder1 = folderDao.get().executeAsList() + val localToRemoteFolders = folder1 + .associate { folder -> + val remoteId = folder.data_.service.remote?.id + val localId = folder.data_.folderId + localId to remoteId + } + val remoteToLocalFolders = folder1 + .mapNotNull { folder -> + val remoteId = folder.data_.service.remote?.id + ?: return@mapNotNull null + val localId = folder.data_.folderId + remoteId to localId + } + .toMap() + + // + // Cipher + // + + fun BitwardenCrCta.cipherDecoder( + entity: CipherEntity, + localCipherId: String?, + ) = kotlin.run { + val folderId = entity.folderId + ?.let { remoteFolderId -> + val localFolderId = remoteToLocalFolders[remoteFolderId] + if (localFolderId != null) return@let localFolderId + + val folderExists = response.folders + .orEmpty() + .any { it.id == remoteFolderId } + if (folderExists) { + // TODO: The folder exists, but we failed to create an + // entry for it... this should not happen, but if it does + // then try to decode the object without a folder and then + // declare model as incomplete. + } + + // Remove folder from the cipher. + null + } + val cipherId = localCipherId + ?: cryptoGenerator.uuid() + BitwardenCipher + .encrypted( + accountId = user.id, + cipherId = cipherId, + folderId = folderId, + entity = entity, + ) + .transform(this) + } + + val cipherDao = db.cipherQueries + val existingCipher = cipherDao + .getByAccountId( + accountId = user.id, + ) + .executeAsList() + .map { it.data_ } + syncX( + name = "cipher", + localItems = existingCipher, + localLens = SyncManager.LensLocal( + getLocalId = { it.cipherId }, + getLocalRevisionDate = { cipher -> cipher.revisionDate }, + getLocalDeletedDate = { cipher -> cipher.deletedDate }, + ), + localReEncoder = { model -> + model + }, + localDecoder = { local, remote -> + val codec = getCodec( + mode = BitwardenCrCta.Mode.ENCRYPT, + organizationId = local.organizationId, + ) + val encryptedCipher = local.transform(codec) + CipherUpdate.of( + model = encryptedCipher, + folders = localToRemoteFolders, + ) to local + }, + localDeleteById = { ids -> + cipherDao.transaction { + ids.forEach { cipherId -> + cipherDao.deleteByCipherId( + cipherId = cipherId, + ) + } + } + }, + localPut = { models -> + cipherDao.transaction { + models.forEach { cipher -> + cipherDao.insert( + cipherId = cipher.cipherId, + accountId = cipher.accountId, + folderId = cipher.folderId, + data = cipher, + ) + } + } + }, + shouldOverwrite = { local, remote -> + val remoteAttachments = remote.attachments + .orEmpty() + // fast path: + if (local.attachments.size != remoteAttachments.size) { + return@syncX true + } + + // slow path: + val localAttachmentIds = local.attachments + .asSequence() + .map { it.id } + .toSet() + val remoteAttachmentIds = remoteAttachments + .asSequence() + .map { it.id } + .toSet() + if (!localAttachmentIds.containsAll(remoteAttachmentIds)) { + return@syncX true + } + + false + }, + remoteItems = response.ciphers.orEmpty(), + remoteLens = SyncManager.Lens( + getId = { it.id }, + getRevisionDate = { cipher -> cipher.revisionDate }, + getDeletedDate = { cipher -> cipher.deletedDate }, + ), + remoteDecoder = { remote, local -> + val codec = getCodec( + mode = BitwardenCrCta.Mode.DECRYPT, + organizationId = remote.organizationId, + ) + codec + .cipherDecoder( + entity = remote, + localCipherId = local?.cipherId, + ) + .let { remoteDecoded -> + // inject the local model into newly decoded remote one + local?.let { merge(remoteDecoded, it) } ?: remoteDecoded + } + }, + remoteDeleteById = { id -> + user.env.back().api.ciphers.focus(id).delete( + httpClient = httpClient, + env = env, + token = user.token.accessToken, + ) + }, + remoteDecodedFallback = { remote, localOrNull, e -> + val logObj = mapOf( + // this should include the encryption type + "name" to remote.name?.take(2), + ) + val logE = DecodeVaultException( + message = "Failed to decrypt a cipher. Structure: $logObj", + e = e, + ) + recordException(logE) + + val localId = localOrNull?.cipherId + ?: cryptoGenerator.uuid() + val folderId = remote.folderId?.let { remoteToLocalFolders[it] } + val service = BitwardenService( + remote = BitwardenService.Remote( + id = remote.id, + revisionDate = remote.revisionDate, + deletedDate = remote.deletedDate, + ), + error = BitwardenService.Error( + code = BitwardenService.Error.CODE_DECODING_FAILED, + revisionDate = now, + ), + deleted = false, + version = BitwardenService.VERSION, + ) + val model = BitwardenCipher( + accountId = user.id, + cipherId = localId, + folderId = folderId, + organizationId = remote.organizationId, + revisionDate = remote.revisionDate, + deletedDate = remote.deletedDate, + // service fields + service = service, + // common + name = "⚠️ Unsupported Item", + notes = null, + favorite = false, + reprompt = BitwardenCipher.RepromptType.None, + // types + type = BitwardenCipher.Type.Card, + ) + localOrNull?.let { merge(model, it) } ?: model + }, + remotePut = { (r, local) -> + val ciphersApi = user.env.back().api.ciphers + val cipherResponse = when (r) { + is CipherUpdate.Modify -> { + val cipherApi = ciphersApi.focus(r.cipherId) + var cipherRequest = r.cipherRequest + + fun handleIntermediateResponse(cipherEntity: CipherEntity) { + cipherRequest = r.cipherRequest.copy( + lastKnownRevisionDate = cipherEntity.revisionDate, + ) + + // We might loose local changes here if the next request fails, so + // save the data in that case. + updateRemoteModel(cipherEntity) + } + + val isTrashed = r.source.deletedDate != null + val wasTrashed = r.source.service.remote?.deletedDate != null + val hasChanged = + r.source.service.remote?.revisionDate != r.source.revisionDate + if (isTrashed != wasTrashed || hasChanged) { + // Due to Bitwarden API restrictions you can not modify + // trashed items: first we have to restore them. + if (wasTrashed) { + val restoredCipher = cipherApi.restore( + httpClient = httpClient, + env = env, + token = user.token.accessToken, + cipherRequest = cipherRequest, + ) + handleIntermediateResponse(restoredCipher) + } + + val putCipher = if (hasChanged) { + cipherApi.put( + httpClient = httpClient, + env = env, + token = user.token.accessToken, + body = cipherRequest, + ) + } else { + null + } + + if (isTrashed) { + if (putCipher != null) handleIntermediateResponse(putCipher) + try { + cipherApi.trash( + httpClient = httpClient, + env = env, + token = user.token.accessToken, + ) + } catch (e: HttpException) { + // Trashing a cipher returns no body. + if (e.cause !is NoTransformationFoundException) { + throw e + } + } + } + } + + cipherApi.get( + httpClient = httpClient, + env = env, + token = user.token.accessToken, + ) + } + + is CipherUpdate.Create -> { + require(r.cipherRequest.organizationId == null) { + "To create a cipher in the organization, you must use a special API call." + } + ciphersApi.post( + httpClient = httpClient, + env = env, + token = user.token.accessToken, + body = r.cipherRequest, + ) + } + + is CipherUpdate.CreateInOrg -> { + require(r.cipherRequest.cipher.organizationId != null) { + "To create a cipher in the user's vault, you must use a special API call." + } + ciphersApi.create( + httpClient = httpClient, + env = env, + token = user.token.accessToken, + body = r.cipherRequest, + ) + } + } + + val codec = getCodec( + mode = BitwardenCrCta.Mode.DECRYPT, + organizationId = r.source.organizationId, + ) + codec + .cipherDecoder( + entity = cipherResponse, + localCipherId = r.source.cipherId, + ) + .let { remoteDecoded -> + // inject the local model into newly decoded remote one + merge(remoteDecoded, r.source) + } + }, + onLog = { msg, logLevel -> + logRepository.post(TAG, msg, logLevel) + }, + ) + + // + // Collection + // + + fun BitwardenCrCta.collectionDecoder( + entity: CollectionEntity, + ) = kotlin.run { + BitwardenCollection + .encrypted( + accountId = user.id, + entity = entity, + ) + .transform(this) + } + + val collectionDao = db.collectionQueries + val existingCollections = collectionDao + .getByAccountId( + accountId = user.id, + ) + .executeAsList() + .map { it.data_ } + syncX( + name = "collection", + localItems = existingCollections, + localLens = SyncManager.LensLocal( + getLocalId = { it.collectionId }, + getLocalRevisionDate = { it.revisionDate }, + ), + localReEncoder = { model -> + model + }, + localDecoder = { l, d -> + Unit + }, + localDeleteById = { ids -> + collectionDao.transaction { + ids.forEach { collectionId -> + collectionDao.deleteByCollectionId( + collectionId = collectionId, + ) + } + } + }, + localPut = { models -> + collectionDao.transaction { + models.forEach { collection -> + collectionDao.insert( + collectionId = collection.collectionId, + accountId = collection.accountId, + data = collection, + ) + } + } + }, + remoteItems = response.collections.orEmpty(), + remoteLens = SyncManager.Lens( + getId = { it.id }, + getRevisionDate = { Instant.DISTANT_FUTURE }, + ), + remoteDecoder = { remote, local -> + val codec = getCodec( + mode = BitwardenCrCta.Mode.DECRYPT, + organizationId = remote.organizationId, + ) + codec + .collectionDecoder( + entity = remote, + ) + }, + remoteDeleteById = { id -> + TODO() + }, + remoteDecodedFallback = { remote, localOrNull, e -> + val logE = DecodeVaultException( + message = "Failed to decrypt a collection.", + e = e, + ) + recordException(logE) + + val service = BitwardenService( + remote = BitwardenService.Remote( + id = remote.id, + revisionDate = now, + deletedDate = null, + ), + error = BitwardenService.Error( + code = BitwardenService.Error.CODE_DECODING_FAILED, + revisionDate = now, + ), + deleted = false, + version = BitwardenService.VERSION, + ) + val model = BitwardenCollection( + accountId = user.id, + collectionId = remote.id, + externalId = remote.externalId, + organizationId = remote.organizationId, + revisionDate = now, + // service fields + service = service, + // common + name = "⚠️ Unsupported Collection", + hidePasswords = remote.hidePasswords, + readOnly = remote.readOnly, + ) + model + }, + remotePut = { collections -> + TODO() + }, + onLog = { msg, logLevel -> + logRepository.post(TAG, msg, logLevel) + }, + ) + + // + // Organization + // + + fun BitwardenCrCta.organizationDecoder( + entity: OrganizationEntity, + ) = kotlin.run { + BitwardenOrganization + .encrypted( + accountId = user.id, + entity = entity, + ) + .transform(this) + } + + val organizationDao = db.organizationQueries + val existingOrganizations = organizationDao + .getByAccountId( + accountId = user.id, + ) + .executeAsList() + .map { it.data_ } + syncX( + name = "organization", + localItems = existingOrganizations, + localLens = SyncManager.LensLocal( + getLocalId = { it.organizationId }, + getLocalRevisionDate = { it.revisionDate }, + ), + localReEncoder = { model -> + model + }, + localDecoder = { l, d -> + Unit + }, + localDeleteById = { ids -> + organizationDao.transaction { + ids.forEach { organizationId -> + organizationDao.deleteByOrganizationId( + organizationId = organizationId, + ) + } + } + }, + localPut = { models -> + organizationDao.transaction { + models.forEach { organization -> + organizationDao.insert( + organizationId = organization.organizationId, + accountId = organization.accountId, + data = organization, + ) + } + } + }, + remoteItems = response.profile.organizations.orEmpty(), + remoteLens = SyncManager.Lens( + getId = { it.id }, + getRevisionDate = { Instant.DISTANT_FUTURE }, + ), + remoteDecoder = { remote, local -> + val codec = getCodec( + mode = BitwardenCrCta.Mode.DECRYPT, + ) + codec + .organizationDecoder( + entity = remote, + ) + }, + remoteDeleteById = { id -> + TODO() + }, + remoteDecodedFallback = { remote, localOrNull, e -> + val logE = DecodeVaultException( + message = "Failed to decrypt a organization.", + e = e, + ) + recordException(logE) + + val service = BitwardenService( + remote = BitwardenService.Remote( + id = remote.id, + revisionDate = now, + deletedDate = null, + ), + error = BitwardenService.Error( + code = BitwardenService.Error.CODE_DECODING_FAILED, + revisionDate = now, + ), + deleted = false, + version = BitwardenService.VERSION, + ) + val model = BitwardenOrganization( + accountId = user.id, + organizationId = remote.id, + revisionDate = now, + // service fields + service = service, + // common + name = "⚠️ Unsupported Organization", + selfHost = remote.selfHost, + ) + model + }, + remotePut = { + TODO() + }, + onLog = { msg, logLevel -> + logRepository.post(TAG, msg, logLevel) + }, + ) + + // + // Sends + // + + fun BitwardenCrCta.sendDecoder( + entity: SyncSends, + codec2: BitwardenCrCta, + localSyncId: String?, + ) = kotlin.run { + val syncId = localSyncId + ?: cryptoGenerator.uuid() + BitwardenSend + .encrypted( + accountId = user.id, + sendId = syncId, + entity = entity, + ) + .transform(this, codec2) + } + + val sendDao = db.sendQueries + val existingSends = sendDao + .getByAccountId( + accountId = user.id, + ) + .executeAsList() + .map { it.data_ } + syncX( + name = "send", + localItems = existingSends, + localLens = SyncManager.LensLocal( + getLocalId = { it.sendId }, + getLocalRevisionDate = { it.revisionDate }, + ), + localReEncoder = { model -> + model + }, + localDecoder = { l, d -> + Unit + }, + localDeleteById = { ids -> + sendDao.transaction { + ids.forEach { sendId -> + sendDao.deleteBySendId( + sendId = sendId, + ) + } + } + }, + localPut = { models -> + sendDao.transaction { + models.forEach { send -> + sendDao.insert( + accountId = send.accountId, + sendId = send.sendId, + data = send, + ) + } + } + }, + remoteItems = response.sends.orEmpty(), + remoteLens = SyncManager.Lens( + getId = { it.id }, + getRevisionDate = { Instant.DISTANT_FUTURE }, + ), + remoteDecoder = { remote, local -> + val codec = getCodec( + mode = BitwardenCrCta.Mode.DECRYPT, + sendId = remote.id, + ) + val codec2 = getCodec( + mode = BitwardenCrCta.Mode.DECRYPT, + ) + codec + .sendDecoder( + entity = remote, + codec2 = codec2, + localSyncId = local?.sendId, + ) + }, + remoteDeleteById = { id -> + TODO() + }, + remoteDecodedFallback = { remote, localOrNull, e -> + e.printStackTrace() + val service = BitwardenService( + remote = BitwardenService.Remote( + id = remote.id, + revisionDate = now, + deletedDate = null, + ), + error = BitwardenService.Error( + code = BitwardenService.Error.CODE_DECODING_FAILED, + revisionDate = now, + ), + deleted = false, + version = BitwardenService.VERSION, + ) + val model = BitwardenSend( + accountId = user.id, + sendId = localOrNull?.sendId ?: cryptoGenerator.uuid(), + revisionDate = now, + // service fields + service = service, + // common + name = "⚠️ Unsupported Send", + notes = "", + accessCount = 0, + accessId = "", + ) + model + }, + remotePut = { + TODO() + }, + onLog = { msg, logLevel -> + logRepository.post(TAG, msg, logLevel) + }, + ) + + Unit + } + + // User + + private fun crypto( + profile: SyncProfile, + sends: List, + ): BitwardenCr = kotlin.run { + val builder = BitwardenCrImpl( + cipherEncryptor = cipherEncryptor, + cryptoGenerator = cryptoGenerator, + base64Service = base64Service, + ).apply { + // We need user keys to decrypt the + // profile key. + appendUserToken( + encKey = base64Service.decode(user.key.encryptionKeyBase64), + macKey = base64Service.decode(user.key.macKeyBase64), + ) + appendProfileToken( + keyCipherText = profile.key, + privateKeyCipherText = profile.privateKey, + ) + + profile.organizations.orEmpty().forEach { organization -> + appendOrganizationToken( + id = organization.id, + keyCipherText = organization.key, + ) + } + + sends.forEach { send -> + appendSendToken( + id = send.id, + keyCipherText = send.key, + ) + } + } + builder.build() + } + + private suspend fun requireSecurityStampMatchesOrNull( + db: Database, + response: SyncResponse, + ) { + val existingProfile = db + .profileQueries + .getByAccountId( + accountId = user.id, + ) + .executeAsOneOrNull() + ?.takeIf { it.profileId == response.profile.id } + if (existingProfile != null) { + val existingSecurityStamp = existingProfile.data_.securityStamp + require(existingSecurityStamp == response.profile.securityStamp) { + "Local security stamp differs from a remote one. " + + "You might be in a man-in-the-middle attack!" + } + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/builder/ServerEnvApi.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/builder/ServerEnvApi.kt new file mode 100644 index 00000000..91e3f4d2 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/builder/ServerEnvApi.kt @@ -0,0 +1,549 @@ +package com.artemchep.keyguard.provider.bitwarden.api.builder + +import com.artemchep.keyguard.provider.bitwarden.ServerEnv +import com.artemchep.keyguard.provider.bitwarden.api.entity.SyncResponse +import com.artemchep.keyguard.provider.bitwarden.entity.AttachmentEntity +import com.artemchep.keyguard.provider.bitwarden.entity.AvatarRequestEntity +import com.artemchep.keyguard.provider.bitwarden.entity.CipherEntity +import com.artemchep.keyguard.provider.bitwarden.entity.FolderEntity +import com.artemchep.keyguard.provider.bitwarden.entity.HibpBreachResponse +import com.artemchep.keyguard.provider.bitwarden.entity.ProfileRequestEntity +import com.artemchep.keyguard.provider.bitwarden.entity.SyncSends +import com.artemchep.keyguard.provider.bitwarden.entity.TwoFactorEmailRequestEntity +import com.artemchep.keyguard.provider.bitwarden.entity.request.CipherCreateRequest +import com.artemchep.keyguard.provider.bitwarden.entity.request.CipherRequest +import com.artemchep.keyguard.provider.bitwarden.entity.request.FolderRequest +import com.artemchep.keyguard.provider.bitwarden.entity.request.SendRequest +import io.ktor.client.HttpClient +import io.ktor.client.request.HttpRequestBuilder +import io.ktor.client.request.delete +import io.ktor.client.request.forms.MultiPartFormDataContent +import io.ktor.client.request.forms.formData +import io.ktor.client.request.get +import io.ktor.client.request.header +import io.ktor.client.request.parameter +import io.ktor.client.request.post +import io.ktor.client.request.put +import io.ktor.client.request.setBody +import io.ktor.client.statement.HttpResponse +import io.ktor.http.ContentType +import io.ktor.http.contentType +import io.ktor.util.AttributeKey + +val routeAttribute = AttributeKey("route") + +val accountAttribute = AttributeKey("account") + +/** + * A DSL for the API server endpoints. To use, call [ServerEnv.api] + * property. + * + * @author Artem Chepurnyi + */ +@JvmInline +value class ServerEnvApi @Deprecated("Use the [ServerEnv.api] property instead.") constructor( + private val url: String, +) { + val twoFactor get() = TwoFactor(url = url + "two-factor/") + + val accounts get() = Accounts(url = url + "accounts/") + + val ciphers get() = Ciphers(url = url + "ciphers/") + + val folders get() = Folders(url = url + "folders/") + + val sends get() = Sends(url = url + "sends/") + + val hibp get() = HaveIBeenPwned(url = url + "hibp/") + + val sync get() = url + "sync" + + @JvmInline + value class HaveIBeenPwned( + private val url: String, + ) { + /** + * Send a GET request to search breaches. + * + * Request: + * ``` + * ?username=artemchep@gmail.com + * ``` + * + * Response: List of breaches found. + */ + val breach get() = url + "breach" + } + + @JvmInline + value class TwoFactor( + private val url: String, + ) { + val requestEmailCode get() = url + "send-email-login" + } + + @JvmInline + value class Accounts( + private val url: String, + ) { + val prelogin get() = url + "prelogin" + + /** + * Send a PUT request to change the avatar + * color of the account. + * + * Request: + * ``` + * { "avatarColor": "#e5beed" } + * ``` + * + * Response: profile object. + */ + val avatar get() = url + "avatar" + + /** + * Send a PUT request to change the profile info. + * + * Request: + * ``` + * { "culture":"en-US", "name":"Main Vault2", "masterPasswordHint":null } + * ``` + * + * Response: profile object. + */ + val profile get() = url + "profile" + } + + @JvmInline + value class Ciphers( + val url: String, + ) { + val create get() = "$url/create" + + fun focus(id: String) = Cipher(url = "$url$id") + + @JvmInline + value class Cipher( + val url: String, + ) { + val trash get() = "$url/delete" + + val restore get() = "$url/restore" + + val attachments get() = Attachments(url = "$url/attachment") + } + + @JvmInline + value class Attachments( + val url: String, + ) { + fun focus(id: String) = Attachment(url = "$url/$id") + + @JvmInline + value class Attachment( + val url: String, + ) + } + } + + @JvmInline + value class Folders( + private val url: String, + ) { + fun post() = url + + fun create() = "$url/create" + + fun put(id: String) = "$url$id" + + fun delete(id: String) = url + id + } + + @JvmInline + value class Sends( + private val url: String, + ) { + fun post() = url + + fun focus(id: String) = Send(url = "$url$id") + + @JvmInline + value class Send( + val url: String, + ) { + val removePassword get() = "$url/remove-password" + } + } +} + +@Suppress("DEPRECATION") +val ServerEnv.api + get() = ServerEnvApi(url = buildApiUrl()) + +suspend fun ServerEnvApi.TwoFactor.requestEmailCode( + httpClient: HttpClient, + env: ServerEnv, + model: TwoFactorEmailRequestEntity, +) = httpClient + .post(requestEmailCode) { + headers(env) + contentType(ContentType.Application.Json) + setBody(model) + attributes.put(routeAttribute, "request-email-code") + } + .bodyOrApiException() + +suspend fun ServerEnvApi.Accounts.avatar( + httpClient: HttpClient, + env: ServerEnv, + token: String, + model: AvatarRequestEntity, +) = httpClient + .put(avatar) { + headers(env) + header("Authorization", "Bearer $token") + contentType(ContentType.Application.Json) + setBody(model) + attributes.put(routeAttribute, "put-avatar") + } + .bodyOrApiException() + +suspend fun ServerEnvApi.Accounts.profile( + httpClient: HttpClient, + env: ServerEnv, + token: String, + model: ProfileRequestEntity, +) = httpClient + .put(profile) { + headers(env) + header("Authorization", "Bearer $token") + contentType(ContentType.Application.Json) + setBody(model) + attributes.put(routeAttribute, "put-profile") + } + .bodyOrApiException() + +suspend fun ServerEnvApi.HaveIBeenPwned.breach( + httpClient: HttpClient, + env: ServerEnv, + token: String, + username: String, +) = httpClient + .get(breach) { + headers(env) + header("Authorization", "Bearer $token") + parameter("username", username) + attributes.put(routeAttribute, "get-username-breach") + } + .bodyOrApiException>() + +// Sync + +suspend fun ServerEnvApi.sync( + httpClient: HttpClient, + env: ServerEnv, + token: String, +) = httpClient + .get(sync) { + headers(env) + header("Authorization", "Bearer $token") + parameter("excludeDomains", true) + attributes.put(routeAttribute, "sync") + } + .bodyOrApiException() + +// Ciphers + +suspend fun ServerEnvApi.Ciphers.post( + httpClient: HttpClient, + env: ServerEnv, + token: String, + body: CipherRequest, +) = url.post( + httpClient = httpClient, + env = env, + token = token, + body = body, + route = "post-cipher", +) + +suspend fun ServerEnvApi.Ciphers.create( + httpClient: HttpClient, + env: ServerEnv, + token: String, + body: CipherCreateRequest, +) = create.post( + httpClient = httpClient, + env = env, + token = token, + body = body, + route = "post-create-cipher", +) + +suspend fun ServerEnvApi.Ciphers.Cipher.get( + httpClient: HttpClient, + env: ServerEnv, + token: String, +) = httpClient + .get(url) { + headers(env) + header("Authorization", "Bearer $token") + attributes.put(routeAttribute, "get-cipher") + } + .bodyOrApiException() + +suspend fun ServerEnvApi.Ciphers.Cipher.put( + httpClient: HttpClient, + env: ServerEnv, + token: String, + body: CipherRequest, +): CipherEntity = url.put( + httpClient = httpClient, + env = env, + token = token, + body = body, + route = "put-cipher", +) + +suspend fun ServerEnvApi.Ciphers.Cipher.delete( + httpClient: HttpClient, + env: ServerEnv, + token: String, +) = url.delete( + httpClient = httpClient, + env = env, + token = token, + route = "delete-cipher", +) + +suspend fun ServerEnvApi.Ciphers.Cipher.trash( + httpClient: HttpClient, + env: ServerEnv, + token: String, +) = httpClient + .put(trash) { + headers(env) + header("Authorization", "Bearer $token") + contentType(ContentType.Any) + attributes.put(routeAttribute, "trash-cipher") + } + .bodyOrApiException() + +suspend fun ServerEnvApi.Ciphers.Cipher.restore( + httpClient: HttpClient, + env: ServerEnv, + token: String, + cipherRequest: CipherRequest, +) = httpClient + .put(restore) { + headers(env) + header("Authorization", "Bearer $token") + contentType(ContentType.Application.Json) + setBody(cipherRequest) + attributes.put(routeAttribute, "restore-cipher") + } + .bodyOrApiException() + +// Attachment + +suspend fun ServerEnvApi.Ciphers.Attachments.post( + httpClient: HttpClient, + env: ServerEnv, + token: String, + attachmentKey: String, + attachmentData: ByteArray, +): CipherEntity = kotlin.run { + // TODO: Provide a stream to read data from, this should + // solve performance issues when uploading large files. + // + // val attachmentDataProvider = ChannelProvider { + // attachmentStream + // .toByteReadChannel() + // } + val body = MultiPartFormDataContent( + formData { + append("key", attachmentKey) + append("data", attachmentData) + }, + ) + url.post( + httpClient = httpClient, + env = env, + token = token, + body = body, + route = "post-attachment", + ) +} + +suspend fun ServerEnvApi.Ciphers.Attachments.delete( + httpClient: HttpClient, + env: ServerEnv, + token: String, + id: String, +) = focus(id = id).url.delete( + httpClient = httpClient, + env = env, + token = token, + route = "delete-cipher", +) + +suspend fun ServerEnvApi.Ciphers.Attachments.Attachment.get( + httpClient: HttpClient, + env: ServerEnv, + token: String, +) = httpClient + .get(url) { + headers(env) + header("Authorization", "Bearer $token") + attributes.put(routeAttribute, "get-attachment") + } + .bodyOrApiException() + +// Folders + +suspend fun ServerEnvApi.Folders.post( + httpClient: HttpClient, + env: ServerEnv, + token: String, + body: FolderRequest, +) = post().post( + httpClient = httpClient, + env = env, + token = token, + body = body, + route = "post-folder", +) + +suspend fun ServerEnvApi.Folders.put( + httpClient: HttpClient, + env: ServerEnv, + token: String, + id: String, + body: FolderRequest, +) = put(id = id).put( + httpClient = httpClient, + env = env, + token = token, + body = body, + route = "put-folder", +) + +suspend fun ServerEnvApi.Folders.delete( + httpClient: HttpClient, + env: ServerEnv, + token: String, + id: String, +) = delete(id = id).delete( + httpClient = httpClient, + env = env, + token = token, + route = "delete-folder", +) + +// Sends + +suspend fun ServerEnvApi.Sends.post( + httpClient: HttpClient, + env: ServerEnv, + token: String, + body: SendRequest, +) = post().post( + httpClient = httpClient, + env = env, + token = token, + body = body, + route = "post-send", +) + +suspend fun ServerEnvApi.Sends.Send.removePassword( + httpClient: HttpClient, + env: ServerEnv, + token: String, +) = httpClient + .put(url) { + headers(env) + header("Authorization", "Bearer $token") + attributes.put(routeAttribute, "remove-password-send") + } + .bodyOrApiException() + +suspend fun ServerEnvApi.Sends.Send.delete( + httpClient: HttpClient, + env: ServerEnv, + token: String, +) = url.delete( + httpClient = httpClient, + env = env, + token = token, + route = "delete-send", +) + +// Base + +private suspend inline fun String.post( + httpClient: HttpClient, + env: ServerEnv, + token: String, + body: Input, + route: String, +) = httpClient + .post(this) { + headers(env) + header("Authorization", "Bearer $token") + contentType(ContentType.Application.Json) + setBody(body) + attributes.put(routeAttribute, route) + } + .bodyOrApiException() + +private suspend inline fun String.put( + httpClient: HttpClient, + env: ServerEnv, + token: String, + body: Input, + route: String, +) = httpClient + .put(this) { + headers(env) + header("Authorization", "Bearer $token") + contentType(ContentType.Application.Json) + setBody(body) + attributes.put(routeAttribute, route) + } + .bodyOrApiException() + +private suspend inline fun String.delete( + httpClient: HttpClient, + env: ServerEnv, + token: String, + route: String, +) = httpClient + .delete(this) { + headers(env) + header("Authorization", "Bearer $token") + attributes.put(routeAttribute, route) + } + .bodyOrApiException() + +fun HttpRequestBuilder.headers(env: ServerEnv) { + // Seems like now Bitwarden now requires you to specify + // the client name and version. + header("Bitwarden-Client-Name", "web") + header("Bitwarden-Client-Version", "2023.10.1") + // App does not work if hidden behind reverse-proxy under + // a subdirectory. We should specify the 'referer' so the server + // generates correct urls for us. + if (env.baseUrl.isNotEmpty()) { + header( + key = "referer", + value = env.baseUrl + .ensureSuffix("/"), + ) + } + env.headers.forEach { header -> + header( + key = header.key, + value = header.value, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/builder/ServerEnvIdentity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/builder/ServerEnvIdentity.kt new file mode 100644 index 00000000..d734b01c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/builder/ServerEnvIdentity.kt @@ -0,0 +1,17 @@ +package com.artemchep.keyguard.provider.bitwarden.api.builder + +import com.artemchep.keyguard.provider.bitwarden.ServerEnv + +/** + * @author Artem Chepurnyi + */ +@JvmInline +value class ServerEnvNotifications @Deprecated("Use the [ServerEnv.notifications] property instead.") constructor( + private val url: String, +) { + val hub get() = url + "hub" +} + +@Suppress("DEPRECATION") +val ServerEnv.notifications + get() = ServerEnvNotifications(url = buildNotificationsUrl()) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/builder/ServerEnvNotifications.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/builder/ServerEnvNotifications.kt new file mode 100644 index 00000000..0bbc5967 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/builder/ServerEnvNotifications.kt @@ -0,0 +1,27 @@ +package com.artemchep.keyguard.provider.bitwarden.api.builder + +import com.artemchep.keyguard.provider.bitwarden.ServerEnv + +/** + * A DSL for the Identity server endpoints. To use, call [ServerEnv.identity] + * property. + * + * @author Artem Chepurnyi + */ +@JvmInline +value class ServerEnvIdentity @Deprecated("Use the [ServerEnv.identity] property instead.") constructor( + private val url: String, +) { + val connect get() = Connect(url = url + "connect/") + + @JvmInline + value class Connect( + private val url: String, + ) { + val token get() = url + "token" + } +} + +@Suppress("DEPRECATION") +val ServerEnv.identity + get() = ServerEnvIdentity(url = buildIdentityUrl()) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/builder/UrlBuilder.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/builder/UrlBuilder.kt new file mode 100644 index 00000000..38209086 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/builder/UrlBuilder.kt @@ -0,0 +1,81 @@ +package com.artemchep.keyguard.provider.bitwarden.api.builder + +import com.artemchep.keyguard.provider.bitwarden.ServerEnv +import io.ktor.http.Url + +private const val BITWARDEN_DOMAIN_US = "bitwarden.com" +private const val BITWARDEN_DOMAIN_EU = "bitwarden.eu" + +fun ServerEnv.buildHost() = buildWebVaultUrl() + .let(::Url) + .host + +fun ServerEnv.buildWebVaultUrl() = buildUrl( + url = webVaultUrl, + suffix = "", + default = when (region) { + ServerEnv.Region.US -> "https://vault.$BITWARDEN_DOMAIN_US/" + ServerEnv.Region.EU -> "https://vault.$BITWARDEN_DOMAIN_EU/" + }, +) + +fun ServerEnv.buildApiUrl() = buildUrl( + url = apiUrl, + suffix = "api/", + default = when (region) { + ServerEnv.Region.US -> "https://vault.$BITWARDEN_DOMAIN_US/api/" + ServerEnv.Region.EU -> "https://vault.$BITWARDEN_DOMAIN_EU/api/" + }, +) + +fun ServerEnv.buildIdentityUrl() = buildUrl( + url = identityUrl, + suffix = "identity/", + default = when (region) { + ServerEnv.Region.US -> "https://vault.$BITWARDEN_DOMAIN_US/identity/" + ServerEnv.Region.EU -> "https://vault.$BITWARDEN_DOMAIN_EU/identity/" + }, +) + +fun ServerEnv.buildIconsUrl() = buildUrl( + url = iconsUrl, + suffix = "icons/", + default = "https://icons.bitwarden.net/", +) + +fun ServerEnv.buildNotificationsUrl() = buildUrl( + url = notificationsUrl, + suffix = "notifications/", + default = when (region) { + ServerEnv.Region.US -> "https://notifications.$BITWARDEN_DOMAIN_US/" + ServerEnv.Region.EU -> "https://notifications.$BITWARDEN_DOMAIN_EU/" + }, +) + +fun ServerEnv.buildSendUrl() = buildUrl( + url = webVaultUrl, + suffix = "#/send/", + default = when (region) { + ServerEnv.Region.US -> "https://send.$BITWARDEN_DOMAIN_US/#" + ServerEnv.Region.EU -> "https://send.$BITWARDEN_DOMAIN_EU/#" + }, +) + +fun ServerEnv.buildIconsRequestUrl(domain: String) = kotlin.run { + val baseUrl = buildIconsUrl() + "$baseUrl$domain/icon.png" +} + +private fun ServerEnv.buildUrl( + url: String, + suffix: String, + default: String, +) = url + .takeUnless { it.isBlank() } + ?: baseUrl + .takeUnless { it.isBlank() } + ?.ensureSuffix("/") + ?.let { it + suffix } + ?: default + +fun String.ensureSuffix(suffix: String) = if (endsWith(suffix)) this else this + suffix diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/builder/http.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/builder/http.kt new file mode 100644 index 00000000..4a4867a4 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/builder/http.kt @@ -0,0 +1,165 @@ +package com.artemchep.keyguard.provider.bitwarden.api.builder + +import com.artemchep.keyguard.common.exception.HttpException +import com.artemchep.keyguard.platform.recordException +import com.artemchep.keyguard.platform.recordLog +import com.artemchep.keyguard.provider.bitwarden.entity.ErrorEntity +import com.artemchep.keyguard.provider.bitwarden.entity.toException +import io.ktor.client.call.body +import io.ktor.client.statement.HttpResponse +import io.ktor.http.HttpStatusCode +import kotlinx.serialization.encodeToString +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonArray +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.JsonNull +import kotlinx.serialization.json.JsonObject +import kotlinx.serialization.json.JsonPrimitive +import kotlinx.serialization.json.booleanOrNull +import kotlinx.serialization.json.contentOrNull +import kotlinx.serialization.json.doubleOrNull +import kotlinx.serialization.json.longOrNull +import kotlin.collections.component1 +import kotlin.collections.component2 +import kotlin.collections.firstOrNull +import kotlin.collections.forEach +import kotlin.collections.mutableListOf +import kotlin.collections.mutableMapOf +import kotlin.collections.plusAssign +import kotlin.collections.set + +suspend inline fun HttpResponse.bodyOrApiException(): T = kotlin.run { + logCrashlyticsRoute() + + val b = this.body() + // No need to parse a response if we want + // unit type back. + if (Unit is T) { + return@run Unit + } + try { + b.body() + } catch (e: Exception) { + e.printStackTrace() + + val newStatus = HttpStatusCode.fromValue(status.value) + val apiException = try { + b.body() + .toException( + exception = e, + code = newStatus, + ) + } catch (f: Exception) { + f.printStackTrace() + + // Try to parse an unknown exception, it might still contain + // the message content. + val json = runCatching { + b.body() + }.getOrNull() + ?: run { + // This might happen if a user miss-types a server URL, so we + // instead get default HTML template saying that this page + // can not be found. + if (newStatus != HttpStatusCode.NotFound) { + val loggedException = + RuntimeException("Failed request: body is not a JSON!") + recordException(loggedException) + } + // Generic exception + throw HttpException( + statusCode = newStatus, + m = newStatus.description, + e = e, + ) + } + + val responseBodySanitizedJson = Json.encodeToString(json.sanitize()) + println("Sanitized response JSON:") + println(responseBodySanitizedJson) + + val message = json.tryGetErrorMessageBitwardenApi() + ?: json.tryGetErrorMessageCloudflareApi() + if ( + message == null || + // This response is expected when we have to + // refresh the access token, no need to log it. + newStatus != HttpStatusCode.Unauthorized + ) { + val loggedException = + RuntimeException("Failed request! Body: $responseBodySanitizedJson") + recordLog(responseBodySanitizedJson) + recordException(loggedException) + } + HttpException( + statusCode = newStatus, + m = message + ?: newStatus.description, + e = e, + ) + } + throw apiException + } +} + +fun HttpResponse.logCrashlyticsRoute() { + val route = this.call.attributes.getOrNull(routeAttribute) + ?: "route-unknown" + recordLog("${status.value} @ $route") +} + +fun JsonObject.tryGetErrorMessageBitwardenApi(): String? { + val error = getIgnoreCase("error") as? JsonObject + ?: return null + val message = error.getIgnoreCase("description") as? JsonPrimitive + ?: return null + return message.contentOrNull +} + +fun JsonObject.tryGetErrorMessageCloudflareApi(): String? { + val message = getIgnoreCase("message") as? JsonPrimitive + ?: return null + return message.contentOrNull +} + +private fun JsonObject.getIgnoreCase(key: String) = keys + .firstOrNull { k -> + k.equals(key, ignoreCase = true) + } + ?.let { this[it] } + +/** + * Sanitize all of the primitives from the json object, + * making the response safe to be send to the crashlytics. + */ +fun JsonElement.sanitize(): JsonElement = when (this) { + is JsonObject -> { + val map = mutableMapOf() + entries.forEach { (key, child) -> + val sanitizedChild = child.sanitize() + map[key] = sanitizedChild + } + JsonObject(map) + } + + is JsonArray -> { + val list = mutableListOf() + forEach { child -> + val sanitizedChild = child.sanitize() + list += sanitizedChild + } + JsonArray(list) + } + + is JsonNull -> this + + is JsonPrimitive -> { + val value = when { + isString -> "string" + booleanOrNull != null -> "bool" + doubleOrNull != null -> "number" + else -> "other" + } + JsonPrimitive(value) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/entity/SyncResponse.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/entity/SyncResponse.kt new file mode 100644 index 00000000..a6dbcae4 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/entity/SyncResponse.kt @@ -0,0 +1,32 @@ +package com.artemchep.keyguard.provider.bitwarden.api.entity + +import com.artemchep.keyguard.provider.bitwarden.entity.CipherEntity +import com.artemchep.keyguard.provider.bitwarden.entity.CollectionEntity +import com.artemchep.keyguard.provider.bitwarden.entity.FolderEntity +import com.artemchep.keyguard.provider.bitwarden.entity.SyncProfile +import com.artemchep.keyguard.provider.bitwarden.entity.SyncSends +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonNames + +@Serializable +data class SyncResponse( + @JsonNames("ciphers") + @SerialName("Ciphers") + val ciphers: List? = null, + @JsonNames("folders") + @SerialName("Folders") + val folders: List? = null, + @JsonNames("collections") + @SerialName("Collections") + val collections: List? = null, + @JsonNames("profile") + @SerialName("Profile") + val profile: SyncProfile, + @JsonNames("sends") + @SerialName("Sends") + val sends: List? = null, + @JsonNames("unofficialServer") + @SerialName("UnofficialServer") + val unofficialServer: Boolean? = false, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/fff.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/fff.kt new file mode 100644 index 00000000..8d337f26 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/fff.kt @@ -0,0 +1,245 @@ +package com.artemchep.keyguard.provider.bitwarden.api + +import com.artemchep.keyguard.common.exception.ApiException +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.io.flatMap +import com.artemchep.keyguard.common.io.handleError +import com.artemchep.keyguard.common.io.handleErrorTap +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.measure +import com.artemchep.keyguard.common.io.parallel +import com.artemchep.keyguard.common.service.logging.LogLevel +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.core.store.bitwarden.BitwardenService +import com.artemchep.keyguard.provider.bitwarden.sync.SyncManager +import kotlinx.coroutines.Dispatchers +import kotlinx.datetime.Clock +import kotlin.Any +import kotlin.Boolean +import kotlin.String +import kotlin.Throwable +import kotlin.Unit +import kotlin.let + +fun merge( + remote: BitwardenCipher, + local: BitwardenCipher, +): BitwardenCipher { + val attachments = remote.attachments.toMutableList() + local.attachments.forEachIndexed { localIndex, attachment -> + val localAttachment = attachment as? BitwardenCipher.Attachment.Local + ?: return@forEachIndexed + + // Skip collisions. + val remoteIndex = attachments + .indexOfFirst { it.id == localAttachment.id } + if (remoteIndex >= 0) { + // This attachment already exists on remote, so + // we just keep it as is. + return@forEachIndexed + } + + val parent = local.attachments + .getOrNull(localIndex - 1) + val parentIndex = attachments + .indexOfFirst { it.id == parent?.id } + if (parentIndex >= 0) { + attachments.add(parentIndex + 1, localAttachment) + } else { + if (parent != null) { + attachments.add(localAttachment) + } else { + attachments.add(0, localAttachment) + } + } + } + + return remote.copy(attachments = attachments) +} + +interface RemotePutScope { + fun updateRemoteModel(remote: Remote) +} + +suspend fun < + Local : BitwardenService.Has, + LocalDecoded : Any, + Remote : Any, + RemoteDecoded : Any, + > syncX( + sync: (String, IO) -> IO = { _, io -> io }, + name: String, + localItems: Collection, + localLens: SyncManager.LensLocal, + localReEncoder: (Local) -> RemoteDecoded, + localDecoder: (Local, Remote?) -> LocalDecoded, + localDecodedToString: (LocalDecoded) -> String = { it.toString() }, + localDeleteById: suspend (List) -> Unit, + localPut: suspend (List) -> Unit, + shouldOverwrite: (Local, Remote) -> Boolean = { _, _ -> false }, + remoteItems: Collection, + remoteLens: SyncManager.Lens, + remoteDecoder: (Remote, Local?) -> RemoteDecoded, + remoteDecodedToString: (RemoteDecoded) -> String = { it.toString() }, + remoteDecodedFallback: (Remote, Local?, Throwable) -> RemoteDecoded, + remoteDeleteById: suspend (String) -> Unit, + remotePut: suspend RemotePutScope.(LocalDecoded) -> RemoteDecoded, + onLog: (String, LogLevel) -> Unit, +) { + onLog( + "[Start] Starting to sync the $name: " + + "${localItems.size} local items, " + + "${remoteItems.size} remote items.", + LogLevel.INFO, + ) + + val df = SyncManager( + local = localLens, + remote = remoteLens, + ).df( + localItems = localItems, + remoteItems = remoteItems, + shouldOverwrite = shouldOverwrite, + ) + + // + // Write changes to local storage as these + // are quite fast to do. + // + + localDeleteById( + df.localDeletedCipherIds + .map { localLens.getLocalId(it.local) }, + ) + + val localPutCipherDecoded = df.localPutCipher + .map { (localOrNull, remote) -> + ioEffect { remoteDecoder(remote, localOrNull) } + .handleError { e -> + val remoteId = remoteLens.getId(remote) + val localId = localOrNull?.let(localLens.getLocalId) + val msg = "[local] Failed to decode the item: " + + "remote_id=$remoteId, " + + "local_id=$localId" + onLog(msg, LogLevel.WARNING) + e.printStackTrace() + + remoteDecodedFallback(remote, localOrNull, e) + } + } + .parallel(Dispatchers.Default) + .measure { duration, v -> + val msg = "[local] Decoding $name took $duration; " + + "${v.size} entries decoded." + onLog(msg, LogLevel.INFO) + } + .bind() + localPut(localPutCipherDecoded) + + // + // Write changes to remote server. + // + + suspend fun handleFailedToPut( + local: Local, + remote: Remote? = null, + e: Throwable, + ) { + e.printStackTrace() + onLog("Failed to put!! $e", LogLevel.INFO) + + val code = when (e) { + is ApiException -> e.code.value + else -> BitwardenService.Error.CODE_UNKNOWN + } + val newError = BitwardenService.Error( + code = code, + message = e.localizedMessage + ?: e.message, + revisionDate = Clock.System.now(), + ) + val newRemote = remote + ?.let { + BitwardenService.Remote( + id = remoteLens.getId(it), + revisionDate = remoteLens.getRevisionDate(it), + deletedDate = remoteLens.getDeletedDate(it), + ) + } + ?: local.service.remote + val newService = local.service.copy( + error = newError, + remote = newRemote, + ) + val newLocal = local + .withService(newService) + + val update = localReEncoder(newLocal) + localPut(listOf(update)) + } + + df.remoteDeletedCipherIds + .map { entry -> + val localId = localLens.getLocalId(entry.local) + val remoteId = remoteLens.getId(entry.remote) + ioEffect { remoteDeleteById(remoteId) } + .handleErrorTap { e -> + handleFailedToPut(entry.local, e = e) + } + .effectMap { + val update = listOf(localId) + localDeleteById(update) + } + // If a client wants to block an access to database + // while we are doing this operation -> this is a right place. + .let { io -> sync(localId, io) } + .attempt() + } + .parallel(Dispatchers.Default) + .bind() + + df.remotePutCipher + .map { entry -> + val localId = localLens.getLocalId(entry.local) + ioEffect { localDecoder(entry.local, entry.remote) } + .handleErrorTap { e -> + handleFailedToPut(entry.local, e = e) + } + .flatMap { localDecoded -> + var lastRemote: Remote? = null + val scope = object : RemotePutScope { + override fun updateRemoteModel(remote: Remote) { + lastRemote = remote + } + } + ioEffect { remotePut(scope, localDecoded) } + .handleErrorTap { e -> + handleFailedToPut( + local = entry.local, + remote = lastRemote, + e = e, + ) + } + .effectMap { + val update = listOf(it) + localPut(update) + } + // If a client wants to block an access to database + // while we are doing this operation -> this is a right place. + .let { io -> sync(localId, io) } + } + // I want to filter out the items that were failed to + // be decoded. + .attempt() + } + .parallel(Dispatchers.Default) + .measure { duration, v -> + val msg = "[remote] Decoding $name took $duration; " + + "${v.size} entries decoded." + onLog(msg, LogLevel.INFO) + } + .bind() +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/login.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/login.kt new file mode 100644 index 00000000..74972099 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/api/login.kt @@ -0,0 +1,300 @@ +package com.artemchep.keyguard.provider.bitwarden.api + +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.model.Argon2Mode +import com.artemchep.keyguard.common.service.crypto.CryptoGenerator +import com.artemchep.keyguard.common.service.text.Base64Service +import com.artemchep.keyguard.common.usecase.DeviceIdUseCase +import com.artemchep.keyguard.common.util.int +import com.artemchep.keyguard.core.store.bitwarden.BitwardenToken +import com.artemchep.keyguard.provider.bitwarden.ServerEnv +import com.artemchep.keyguard.provider.bitwarden.ServerTwoFactorToken +import com.artemchep.keyguard.provider.bitwarden.api.builder.api +import com.artemchep.keyguard.provider.bitwarden.api.builder.bodyOrApiException +import com.artemchep.keyguard.provider.bitwarden.api.builder.headers +import com.artemchep.keyguard.provider.bitwarden.api.builder.identity +import com.artemchep.keyguard.provider.bitwarden.api.builder.routeAttribute +import com.artemchep.keyguard.provider.bitwarden.entity.AccountPreLoginRequest +import com.artemchep.keyguard.provider.bitwarden.entity.AccountPreLoginResponse +import com.artemchep.keyguard.provider.bitwarden.entity.ConnectTokenResponse +import com.artemchep.keyguard.provider.bitwarden.entity.TwoFactorProviderTypeEntity +import com.artemchep.keyguard.provider.bitwarden.entity.toDomain +import com.artemchep.keyguard.provider.bitwarden.model.Login +import com.artemchep.keyguard.provider.bitwarden.model.PasswordResult +import com.artemchep.keyguard.provider.bitwarden.model.PreLogin +import io.ktor.client.HttpClient +import io.ktor.client.request.forms.FormDataContent +import io.ktor.client.request.header +import io.ktor.client.request.post +import io.ktor.client.request.setBody +import io.ktor.http.ContentType +import io.ktor.http.Parameters +import io.ktor.http.contentType +import io.ktor.utils.io.InternalAPI +import kotlinx.serialization.encodeToString +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonObject +import kotlinx.serialization.json.jsonPrimitive +import java.util.Locale + +private const val PBKDF2_KEY_LENGTH = 32 + +private const val CLIENT_ID = "web" +private const val DEVICE_TYPE = "9" + +suspend fun login( + deviceIdUseCase: DeviceIdUseCase, + cryptoGenerator: CryptoGenerator, + base64Service: Base64Service, + httpClient: HttpClient, + json: Json, + env: ServerEnv, + twoFactorToken: ServerTwoFactorToken?, + clientSecret: String?, + email: String, + password: String, +) = run { + val deviceId = deviceIdUseCase().bind() + val secrets = obtainSecrets( + cryptoGenerator = cryptoGenerator, + httpClient = httpClient, + env = env, + email = email, + password = password, + ) + val token = internalLogin( + base64Service = base64Service, + httpClient = httpClient, + json = json, + env = env, + twoFactorToken = twoFactorToken, + clientSecret = clientSecret, + deviceId = deviceId, + email = email, + passwordKey = secrets.passwordKey, + ) + secrets to token +} + +@OptIn(InternalAPI::class) +private suspend fun internalLogin( + base64Service: Base64Service, + httpClient: HttpClient, + json: Json, + env: ServerEnv, + twoFactorToken: ServerTwoFactorToken?, + clientSecret: String?, + deviceId: String, + email: String, + passwordKey: ByteArray, +): Login = httpClient + .post(env.identity.connect.token) { + headers(env) + header("device-type", DEVICE_TYPE) + header("dnt", "1") + // Official Bitwarden backend specifically checks for this header, + // which is just a base-64 string of an email. + val emailBase64 = base64Service + .encodeToString(email) + header("Auth-Email", emailBase64) + val passwordBase64 = base64Service + .encodeToString(passwordKey) + body = FormDataContent( + Parameters.build { + append("grant_type", "password") + append("username", email) + append("password", passwordBase64) + append("scope", "api offline_access") + append("client_id", CLIENT_ID) + // As per + // https://github.com/bitwarden/cli/issues/383#issuecomment-937819752 + // the backdoor to a captcha is a client secret. + if (clientSecret != null) { + append("captchaResponse", clientSecret) + } + append("deviceIdentifier", deviceId) + append("deviceType", DEVICE_TYPE) + append("deviceName", "chrome") + + if (twoFactorToken != null) { + val providerEntity = TwoFactorProviderTypeEntity.of(twoFactorToken.provider) + val providerId = json + .encodeToString(providerEntity) + .removeSurrounding("\"") + append("twoFactorProvider", providerId) + append("twoFactorToken", twoFactorToken.token) + append("twoFactorRemember", twoFactorToken.remember.int.toString()) + } + }, + ) + + attributes.put(routeAttribute, "get-token") + } + .bodyOrApiException() + .toDomain() + +@OptIn(InternalAPI::class) +suspend fun refresh( + base64Service: Base64Service, + httpClient: HttpClient, + json: Json, + env: ServerEnv, + token: BitwardenToken.Token, +): Login = httpClient + .post(env.identity.connect.token) { + headers(env) + header("device-type", DEVICE_TYPE) + header("dnt", "1") + + val clientId = kotlin.runCatching { + val jwtData = parseAccessTokenData( + base64Service = base64Service, + json = json, + accessToken = token.accessToken, + ) + jwtData["client_id"]?.jsonPrimitive?.content + }.getOrNull() + ?: CLIENT_ID + body = FormDataContent( + Parameters.build { + append("grant_type", "refresh_token") + append("client_id", clientId) + append("refresh_token", token.refreshToken) + }, + ) + + attributes.put(routeAttribute, "refresh-token") + } + .bodyOrApiException() + .toDomain() + +private fun parseAccessTokenData( + base64Service: Base64Service, + json: Json, + accessToken: String, +): JsonObject { + val parts = accessToken.split(".") + require(parts.size == 3) { + "Access token must consist of 3 parts." + } + + val dataJsonStringBase64 = parts[1] + val dataJsonString = base64Service.decodeToString(dataJsonStringBase64) + val dataJson = json.parseToJsonElement(dataJsonString) as JsonObject + return dataJson +} + +suspend fun obtainSecrets( + cryptoGenerator: CryptoGenerator, + httpClient: HttpClient, + env: ServerEnv, + email: String, + password: String, +) = run { + val prelogin = prelogin( + httpClient = httpClient, + env = env, + email = email, + ) + generateSecrets( + cryptoGenerator, + email, + password, + hashConfig = prelogin.hash, + ) +} + +private suspend fun prelogin( + httpClient: HttpClient, + env: ServerEnv, + email: String, +): PreLogin = httpClient + .post(env.api.accounts.prelogin) { + headers(env) + contentType(ContentType.Application.Json) + setBody( + AccountPreLoginRequest( + email = email, + ), + ) + + attributes.put(routeAttribute, "get-prelogin") + } + .bodyOrApiException() + .toDomain() + +private fun generateSecrets( + cryptoGenerator: CryptoGenerator, + email: String, + password: String, + hashConfig: PreLogin.Hash, +): PasswordResult { + val passwordBytes = password.toByteArray() + val emailBytes = email + .lowercase(Locale.ENGLISH) + .toByteArray() + + val masterKey = cryptoGenerator.masterKeyHash( + seed = passwordBytes, + salt = emailBytes, + config = hashConfig, + ) + val passwordKey = cryptoGenerator.pbkdf2( + seed = masterKey, + salt = passwordBytes, + iterations = 1, + length = PBKDF2_KEY_LENGTH, + ) + val (encryptionKey, macKey) = stretchMasterKey( + cryptoGenerator = cryptoGenerator, + key = masterKey, + ) + return PasswordResult( + masterKey = masterKey, + passwordKey = passwordKey, + encryptionKey = encryptionKey, + macKey = macKey, + ) +} + +private fun stretchMasterKey( + cryptoGenerator: CryptoGenerator, + key: ByteArray, +): Pair { + val encryptionKey = cryptoGenerator.hkdf( + seed = key, + info = "enc".toByteArray(), + ) + val macKey = cryptoGenerator.hkdf( + seed = key, + info = "mac".toByteArray(), + ) + return encryptionKey to macKey +} + +private fun CryptoGenerator.masterKeyHash( + seed: ByteArray, + salt: ByteArray, + config: PreLogin.Hash, +): ByteArray = when (config) { + is PreLogin.Hash.Pbkdf2 -> + pbkdf2( + seed = seed, + salt = salt, + iterations = config.iterationsCount, + length = PBKDF2_KEY_LENGTH, + ) + + is PreLogin.Hash.Argon2id -> { + val memoryKb = 1024 * config.memoryMb + val saltHash = hashSha256(salt) + argon2( + mode = Argon2Mode.ARGON2_ID, + seed = seed, + salt = saltHash, + iterations = config.iterationsCount, + memoryKb = memoryKb, + parallelism = config.parallelism, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/BitwardenCrypto.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/BitwardenCrypto.kt new file mode 100644 index 00000000..006f6bd4 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/BitwardenCrypto.kt @@ -0,0 +1,338 @@ +package com.artemchep.keyguard.provider.bitwarden.crypto + +import arrow.core.partially2 +import arrow.core.partially3 +import com.artemchep.keyguard.common.exception.DecodeException +import com.artemchep.keyguard.common.service.crypto.CipherEncryptor +import com.artemchep.keyguard.common.service.crypto.CryptoGenerator +import com.artemchep.keyguard.common.service.text.Base64Service + +private typealias Decoder = (String) -> DecodeResult + +private typealias Encoder = (CipherEncryptor.Type, ByteArray) -> String + +sealed interface BitwardenCrKey { + data object AuthToken : BitwardenCrKey + + // + // User / Organization + // + + data object UserToken : BitwardenCrKey + + data class OrganizationToken( + val id: String, + ) : BitwardenCrKey + + data class SendToken( + val id: String, + ) : BitwardenCrKey +} + +interface BitwardenCr { + val base64Service: Base64Service + + fun decoder( + key: BitwardenCrKey, + ): Decoder + + fun encoder( + key: BitwardenCrKey, + ): Encoder + + fun cta( + env: BitwardenCrCta.BitwardenCrCtaEnv, + mode: BitwardenCrCta.Mode, + ): BitwardenCrCta +} + +class BitwardenCrCta( + private val crypto: BitwardenCr, + val env: BitwardenCrCtaEnv, + val mode: Mode, +) : BitwardenCr by crypto { + data class BitwardenCrCtaEnv( + val key: BitwardenCrKey, + /** An encryption type */ + val encryptionType: CipherEncryptor.Type, + ) + + fun withEnv(env: BitwardenCrCtaEnv) = BitwardenCrCta( + crypto = crypto, + env = env, + mode = mode, + ) + + enum class Mode { + ENCRYPT, + DECRYPT, + } +} + +inline fun BitwardenCrCta.whatIf( + isEncrypt: BitwardenCrCta.() -> T, + isDecrypt: BitwardenCrCta.() -> T, +): T = when (mode) { + BitwardenCrCta.Mode.DECRYPT -> isDecrypt() + BitwardenCrCta.Mode.ENCRYPT -> isEncrypt() +} + +@JvmName("transformString") +fun BitwardenCrCta.transformString( + value: String, +): String = whatIf( + isEncrypt = { + val encryptionType = env.encryptionType + val data = value.toByteArray() + encoder(env.key).invoke(encryptionType, data) + }, + isDecrypt = { + val data = decoder(env.key).invoke(value).data + String(data) + }, +) + +@JvmName("transformStringNullable") +fun BitwardenCrCta.transformString( + value: String?, +): String? = value?.let { transformString(it) } + +fun BitwardenCrCta.transformBase64( + value: String, +): String = whatIf( + isEncrypt = { + val encryptionType = env.encryptionType + val data = base64Service.decode(value) + encoder(env.key).invoke(encryptionType, data) + }, + isDecrypt = { + val data = decoder(env.key).invoke(value).data + base64Service.encodeToString(data) + }, +) + +interface BitwardenCrFactoryScope : BitwardenCr { + val cipherEncryptor: CipherEncryptor + val cryptoGenerator: CryptoGenerator + + fun appendDecoder( + key: BitwardenCrKey, + decoder: Decoder, + ) + + fun appendEncoder( + key: BitwardenCrKey, + encoder: Encoder, + ) + + fun build(): BitwardenCr +} + +class BitwardenCrImpl( + override val cipherEncryptor: CipherEncryptor, + override val cryptoGenerator: CryptoGenerator, + override val base64Service: Base64Service, +) : BitwardenCrFactoryScope { + private val decoders: MutableMap = mutableMapOf() + + private val encoders: MutableMap = mutableMapOf() + + override fun appendDecoder( + key: BitwardenCrKey, + decoder: Decoder, + ) { + if (key in decoders) error("The decoder with key '$key' is already defined!") + decoders[key] = decoder + } + + override fun appendEncoder( + key: BitwardenCrKey, + encoder: Encoder, + ) { + if (key in encoders) error("The encoder with key '$key' is already defined!") + encoders[key] = encoder + } + + override fun build(): BitwardenCr = this + + // + // Decoder + // + + override fun decoder(key: BitwardenCrKey): Decoder = decoders.getValue(key) + + override fun encoder(key: BitwardenCrKey): Encoder = encoders.getValue(key) + + override fun cta( + env: BitwardenCrCta.BitwardenCrCtaEnv, + mode: BitwardenCrCta.Mode, + ): BitwardenCrCta = BitwardenCrCta( + crypto = this, + env = env, + mode = mode, + ) +} + +private fun Decoder.withExceptionHandling( + key: BitwardenCrKey, + symmetricCryptoKey: SymmetricCryptoKey2? = null, + asymmetricCryptoKey: AsymmetricCryptoKey? = null, +): Decoder = + { cipherText -> + val result = kotlin.runCatching { + this(cipherText) + }.getOrElse { e -> + val info = listOfNotNull( + symmetricCryptoKey?.let { "symmetric key is ${it.data.size}b long" }, + asymmetricCryptoKey?.let { "asymmetric key is ${it.privateKey.size}b long" }, + ).joinToString() + val msg = "Failed to decode a cipher-text: $key, $info" + throw DecodeException(msg, e) + } + result + } + +fun BitwardenCrFactoryScope.appendUserToken( + encKey: ByteArray, + macKey: ByteArray, +) { + val symmetricCryptoKey = SymmetricCryptoKey2( + data = encKey + macKey, + ) + val decoder = cipherEncryptor::decode2 + .partially2(symmetricCryptoKey) + .partially2(null) + .withExceptionHandling(BitwardenCrKey.AuthToken) + val encoder = cipherEncryptor::encode2 + .partially3(symmetricCryptoKey) + .partially3(null) + appendDecoder(BitwardenCrKey.AuthToken, decoder) + appendEncoder(BitwardenCrKey.AuthToken, encoder) +} + +fun BitwardenCrFactoryScope.appendProfileToken( + keyCipherText: String, + privateKeyCipherText: String, +) { + val symmetricCryptoKey = decoder(BitwardenCrKey.AuthToken)(keyCipherText) + .data + .let(CryptoKey::decodeSymmetricOrThrow) + val asymmetricCryptoKey = kotlin.run { + // RSA encryption requires to include the private + // key into the decoder. + cipherEncryptor + .decode2( + cipher = privateKeyCipherText, + symmetricCryptoKey = symmetricCryptoKey, + ) + .data + .let(CryptoKey::decodeAsymmetricOrThrow) + } + val decoder = cipherEncryptor::decode2 + .partially2(symmetricCryptoKey) + .partially2(asymmetricCryptoKey) + .withExceptionHandling( + BitwardenCrKey.UserToken, + symmetricCryptoKey = symmetricCryptoKey, + asymmetricCryptoKey = asymmetricCryptoKey, + ) + val encoder = cipherEncryptor::encode2 + .partially3(symmetricCryptoKey) + .partially3(asymmetricCryptoKey) + appendDecoder(BitwardenCrKey.UserToken, decoder) + appendEncoder(BitwardenCrKey.UserToken, encoder) +} + +fun BitwardenCrFactoryScope.appendProfileToken2( + keyData: ByteArray, + privateKey: ByteArray, +) { + val symmetricCryptoKey = CryptoKey.decodeSymmetricOrThrow(keyData) + val asymmetricCryptoKey = CryptoKey.decodeAsymmetricOrThrow(privateKey) + val decoder = cipherEncryptor::decode2 + .partially2(symmetricCryptoKey) + .partially2(asymmetricCryptoKey) + .withExceptionHandling( + BitwardenCrKey.UserToken, + symmetricCryptoKey = symmetricCryptoKey, + asymmetricCryptoKey = asymmetricCryptoKey, + ) + val encoder = cipherEncryptor::encode2 + .partially3(symmetricCryptoKey) + .partially3(asymmetricCryptoKey) + appendDecoder(BitwardenCrKey.UserToken, decoder) + appendEncoder(BitwardenCrKey.UserToken, encoder) +} + +fun BitwardenCrFactoryScope.appendOrganizationToken( + id: String, + keyCipherText: String, +) { + val symmetricCryptoKey = decoder(BitwardenCrKey.UserToken)(keyCipherText) + .data + .let(CryptoKey::decodeSymmetricOrThrow) + val key = BitwardenCrKey.OrganizationToken(id) + val decoder = cipherEncryptor::decode2 + .partially2(symmetricCryptoKey) + .partially2(null) + .withExceptionHandling( + key, + symmetricCryptoKey = symmetricCryptoKey, + ) + val encoder = cipherEncryptor::encode2 + .partially3(symmetricCryptoKey) + .partially3(null) + appendDecoder(key, decoder) + appendEncoder(key, encoder) +} + +fun BitwardenCrFactoryScope.appendSendToken( + id: String, + keyCipherText: String, +) { + val symmetricCryptoKey = decoder(BitwardenCrKey.UserToken)(keyCipherText) + .data + .let { keyMaterial -> + val key = cryptoGenerator.hkdf( + seed = keyMaterial, + salt = "bitwarden-send".toByteArray(), + info = "send".toByteArray(), + length = 64, + ) + key + } + .let(CryptoKey::decodeSymmetricOrThrow) + val key = BitwardenCrKey.SendToken(id) + val decoder = cipherEncryptor::decode2 + .partially2(symmetricCryptoKey) + .partially2(null) + .withExceptionHandling( + key, + symmetricCryptoKey = symmetricCryptoKey, + ) + val encoder = cipherEncryptor::encode2 + .partially3(symmetricCryptoKey) + .partially3(null) + appendDecoder(key, decoder) + appendEncoder(key, encoder) +} + +fun BitwardenCrFactoryScope.appendOrganizationToken2( + id: String, + keyData: ByteArray, +) { + val symmetricCryptoKey = CryptoKey.decodeSymmetricOrThrow(keyData) + val key = BitwardenCrKey.OrganizationToken(id) + val decoder = cipherEncryptor::decode2 + .partially2(symmetricCryptoKey) + .partially2(null) + .withExceptionHandling( + key, + symmetricCryptoKey = symmetricCryptoKey, + ) + val encoder = cipherEncryptor::encode2 + .partially3(symmetricCryptoKey) + .partially3(null) + appendDecoder(key, decoder) + appendEncoder(key, encoder) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/BitwardenDecoder.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/BitwardenDecoder.kt new file mode 100644 index 00000000..e5478158 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/BitwardenDecoder.kt @@ -0,0 +1,3 @@ +package com.artemchep.keyguard.provider.bitwarden.crypto + +class BitwardenDecoder diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/CipherCrypto.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/CipherCrypto.kt new file mode 100644 index 00000000..559e2809 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/CipherCrypto.kt @@ -0,0 +1,146 @@ +package com.artemchep.keyguard.provider.bitwarden.crypto + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher + +fun BitwardenCipher.transform( + crypto: BitwardenCrCta, +) = copy( + // common + name = crypto.transformString(name), + notes = crypto.transformString(notes), + fields = fields.transform(crypto), + attachments = attachments.transform(crypto), + // types + login = login?.transform(crypto), + secureNote = secureNote?.transform(crypto), + card = card?.transform(crypto), + identity = identity?.transform(crypto), +) + +@JvmName("encryptListOfBitwardenCipherAttachment") +fun List.transform( + crypto: BitwardenCrCta, +) = map { item -> item.transform(crypto) } + +fun BitwardenCipher.Attachment.transform( + crypto: BitwardenCrCta, +) = when (this) { + is BitwardenCipher.Attachment.Remote -> transform(crypto) + is BitwardenCipher.Attachment.Local -> transform(crypto) +} + +fun BitwardenCipher.Attachment.Remote.transform( + crypto: BitwardenCrCta, +) = copy( + fileName = crypto.transformString(fileName), + keyBase64 = crypto.transformBase64(keyBase64), +) + +fun BitwardenCipher.Attachment.Local.transform( + crypto: BitwardenCrCta, +) = this + +@JvmName("encryptListOfBitwardenCipherField") +fun List.transform( + crypto: BitwardenCrCta, +) = map { item -> item.transform(crypto) } + +fun BitwardenCipher.Field.transform( + crypto: BitwardenCrCta, +) = copy( + name = crypto.transformString(name), + value = crypto.transformString(value), +) + +fun BitwardenCipher.Login.transform( + crypto: BitwardenCrCta, +) = copy( + username = crypto.transformString(username), + password = crypto.transformString(password), + passwordHistory = passwordHistory.transform(crypto), + uris = uris.map { uri -> uri.transform(crypto) }, + fido2Credentials = fido2Credentials.map { credentials -> credentials.transform(crypto) }, + totp = crypto.transformString(totp), +) + +@JvmName("encryptListOfBitwardenCipherLoginPasswordHistory") +fun List.transform( + crypto: BitwardenCrCta, +) = map { item -> item.transform(crypto) } + +fun BitwardenCipher.Login.PasswordHistory.transform( + crypto: BitwardenCrCta, +) = copy( + password = crypto.transformString(password), +) + +@JvmName("encryptListOfBitwardenCipherLoginUri") +fun List.transform( + crypto: BitwardenCrCta, +) = map { item -> item.transform(crypto) } + +fun BitwardenCipher.Login.Uri.transform( + crypto: BitwardenCrCta, +) = copy( + uri = crypto.transformString(uri), +) + +@JvmName("encryptListOfBitwardenCipherLoginFido2Credentials") +fun List.transform( + crypto: BitwardenCrCta, +) = map { item -> item.transform(crypto) } + +fun BitwardenCipher.Login.Fido2Credentials.transform( + crypto: BitwardenCrCta, +) = copy( + credentialId = crypto.transformString(credentialId), + keyType = crypto.transformString(keyType), + keyAlgorithm = crypto.transformString(keyAlgorithm), + keyCurve = crypto.transformString(keyCurve), + keyValue = crypto.transformString(keyValue), + rpId = crypto.transformString(rpId), + rpName = crypto.transformString(rpName), + counter = crypto.transformString(counter), + userHandle = crypto.transformString(userHandle), + userName = crypto.transformString(userName), + userDisplayName = crypto.transformString(userDisplayName), + discoverable = crypto.transformString(discoverable), +) + +fun BitwardenCipher.SecureNote.transform( + crypto: BitwardenCrCta, +) = this // Does not need encryption + +fun BitwardenCipher.Identity.transform( + crypto: BitwardenCrCta, +) = copy( + title = crypto.transformString(title), + firstName = crypto.transformString(firstName), + middleName = crypto.transformString(middleName), + lastName = crypto.transformString(lastName), + address1 = crypto.transformString(address1), + address2 = crypto.transformString(address2), + address3 = crypto.transformString(address3), + city = crypto.transformString(city), + state = crypto.transformString(state), + postalCode = crypto.transformString(postalCode), + country = crypto.transformString(country), + company = crypto.transformString(company), + email = crypto.transformString(email), + phone = crypto.transformString(phone), + ssn = crypto.transformString(ssn), + username = crypto.transformString(username), + passportNumber = crypto.transformString(passportNumber), + licenseNumber = crypto.transformString(licenseNumber), +) + +fun BitwardenCipher.Card.transform( + crypto: BitwardenCrCta, +) = copy( + cardholderName = crypto.transformString(cardholderName), + brand = crypto.transformString(brand), + number = crypto.transformString(number), + expMonth = crypto.transformString(expMonth), + expYear = crypto.transformString(expYear), + code = crypto.transformString(code), +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/CipherDecoder.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/CipherDecoder.kt new file mode 100644 index 00000000..862da4d9 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/CipherDecoder.kt @@ -0,0 +1,158 @@ +package com.artemchep.keyguard.provider.bitwarden.crypto + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.core.store.bitwarden.BitwardenService +import com.artemchep.keyguard.provider.bitwarden.entity.AttachmentEntity +import com.artemchep.keyguard.provider.bitwarden.entity.CipherEntity +import com.artemchep.keyguard.provider.bitwarden.entity.domain + +fun BitwardenCipher.Companion.encrypted( + accountId: String, + cipherId: String, + folderId: String?, + entity: CipherEntity, +) = kotlin.run { + val service = BitwardenService( + remote = BitwardenService.Remote( + id = entity.id, + revisionDate = entity.revisionDate, + deletedDate = entity.deletedDate, + ), + deleted = false, + version = BitwardenService.VERSION, + ) + BitwardenCipher( + accountId = accountId, + cipherId = cipherId, + folderId = folderId, + organizationId = entity.organizationId, + collectionIds = entity.collectionIds?.toSet().orEmpty(), + revisionDate = entity.revisionDate, + deletedDate = entity.deletedDate, + // service fields + service = service, + // common + name = entity.name, + notes = entity.notes, + favorite = entity.favorite, + fields = entity.fields + .orEmpty() + .map { + val type = it.type.domain() + val linkedId = it.linkedId?.domain() + BitwardenCipher.Field( + name = it.name, + value = it.value, + type = type, + linkedId = linkedId, + ) + }, + attachments = entity.attachments + .orEmpty() + .map { attachment -> + BitwardenCipher.Attachment.encrypted( + attachment = attachment, + ) + }, + // types + type = entity.type.domain(), + reprompt = entity.reprompt.domain(), + login = entity.login + ?.run { + BitwardenCipher.Login( + username = username, + password = password, + passwordRevisionDate = passwordRevisionDate, + passwordHistory = entity.passwordHistory + .orEmpty() + .map { + BitwardenCipher.Login.PasswordHistory( + password = it.password, + lastUsedDate = it.lastUsedDate, + ) + }, + totp = totp, + uris = uris + .orEmpty() + .map { + val match = it.match?.domain() + BitwardenCipher.Login.Uri( + uri = it.uri, + match = match, + ) + }, + fido2Credentials = fido2Credentials + .orEmpty() + .map { + BitwardenCipher.Login.Fido2Credentials( + credentialId = it.credentialId, + keyType = it.keyType, + keyAlgorithm = it.keyAlgorithm, + keyCurve = it.keyCurve, + keyValue = it.keyValue, + rpId = it.rpId, + rpName = it.rpName, + counter = it.counter, + userHandle = it.userHandle, + userName = it.userName, + userDisplayName = it.userDisplayName, + discoverable = it.discoverable, + creationDate = it.creationDate, + ) + }, + ) + }, + secureNote = entity.secureNote + ?.run { + BitwardenCipher.SecureNote( + type = type.domain(), + ) + }, + card = entity.card + ?.run { + BitwardenCipher.Card( + cardholderName = cardholderName, + brand = brand, + number = number, + expMonth = expMonth, + expYear = expYear, + code = code, + ) + }, + identity = entity.identity + ?.run { + BitwardenCipher.Identity( + title = title, + firstName = firstName, + middleName = middleName, + lastName = lastName, + address1 = address1, + address2 = address2, + address3 = address3, + city = city, + state = state, + postalCode = postalCode, + country = country, + company = company, + email = email, + phone = phone, + ssn = ssn, + username = username, + passportNumber = passportNumber, + licenseNumber = licenseNumber, + ) + }, + ) +} + +fun BitwardenCipher.Attachment.Companion.encrypted( + attachment: AttachmentEntity, +) = kotlin.run { + BitwardenCipher.Attachment.Remote( + id = attachment.id, + url = attachment.url, + fileName = attachment.fileName, + keyBase64 = attachment.key, + size = attachment.size.toLong(), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/CollectionCrypto.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/CollectionCrypto.kt new file mode 100644 index 00000000..9ba3ae77 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/CollectionCrypto.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.provider.bitwarden.crypto + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCollection + +fun BitwardenCollection.transform( + crypto: BitwardenCrCta, +) = copy( + name = crypto.transformString(name), +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/CollectionDecoder.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/CollectionDecoder.kt new file mode 100644 index 00000000..46261192 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/CollectionDecoder.kt @@ -0,0 +1,35 @@ +package com.artemchep.keyguard.provider.bitwarden.crypto + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCollection +import com.artemchep.keyguard.core.store.bitwarden.BitwardenService +import com.artemchep.keyguard.provider.bitwarden.entity.CollectionEntity +import kotlinx.datetime.Clock + +fun BitwardenCollection.Companion.encrypted( + accountId: String, + entity: CollectionEntity, +) = kotlin.run { + val collectionRevision = Clock.System.now() + val service = BitwardenService( + remote = BitwardenService.Remote( + id = entity.id, + revisionDate = collectionRevision, + deletedDate = null, // can not be trashed + ), + deleted = false, + version = BitwardenService.VERSION, + ) + BitwardenCollection( + accountId = accountId, + collectionId = entity.id, + externalId = entity.externalId, + organizationId = entity.organizationId, + revisionDate = collectionRevision, + // service fields + service = service, + // common + name = entity.name, + hidePasswords = entity.hidePasswords, + readOnly = entity.readOnly, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/EntryCrypto.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/EntryCrypto.kt new file mode 100644 index 00000000..a6753434 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/EntryCrypto.kt @@ -0,0 +1,33 @@ +package com.artemchep.keyguard.provider.bitwarden.crypto + +import com.artemchep.keyguard.common.service.text.Base64Service + +class EntryCrypto( + val base64Service: Base64Service, + /** + * A function that is either encrypts the plain text or + * decrypts it, depending on the mode. + */ + val transform: (String) -> ByteArray, + val mode: Mode, +) { + enum class Mode { + ENCRYPT, + DECRYPT, + } +} + +fun EntryCrypto.transformToString(value: String): String = String(transform(value)) + +fun EntryCrypto.transformToBase64(value: String): String = whatIf( + isEncrypt = { base64Service.decodeToString(value).let(::transformToString) }, + isDecrypt = { transform(value).let(base64Service::encodeToString) }, +) + +inline fun EntryCrypto.whatIf( + isEncrypt: EntryCrypto.() -> T, + isDecrypt: EntryCrypto.() -> T, +): T = when (mode) { + EntryCrypto.Mode.DECRYPT -> isDecrypt() + EntryCrypto.Mode.ENCRYPT -> isEncrypt() +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/FolderCrypto.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/FolderCrypto.kt new file mode 100644 index 00000000..cd697035 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/FolderCrypto.kt @@ -0,0 +1,10 @@ +package com.artemchep.keyguard.provider.bitwarden.crypto + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenFolder + +fun BitwardenFolder.transform( + crypto: BitwardenCrCta, +) = copy( + // common + name = crypto.transformString(name), +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/FolderDecoder.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/FolderDecoder.kt new file mode 100644 index 00000000..50eded2b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/FolderDecoder.kt @@ -0,0 +1,30 @@ +package com.artemchep.keyguard.provider.bitwarden.crypto + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenFolder +import com.artemchep.keyguard.core.store.bitwarden.BitwardenService +import com.artemchep.keyguard.provider.bitwarden.entity.FolderEntity + +fun BitwardenFolder.Companion.encrypted( + accountId: String, + folderId: String, + entity: FolderEntity, +) = kotlin.run { + val service = BitwardenService( + remote = BitwardenService.Remote( + id = entity.id, + revisionDate = entity.revisionDate, + deletedDate = null, // can not be trashed + ), + deleted = false, + version = BitwardenService.VERSION, + ) + BitwardenFolder( + accountId = accountId, + folderId = folderId, + revisionDate = entity.revisionDate, + // service fields + service = service, + // common + name = entity.name, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/OrganizationCrypto.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/OrganizationCrypto.kt new file mode 100644 index 00000000..e95c536b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/OrganizationCrypto.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.provider.bitwarden.crypto + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenOrganization + +fun BitwardenOrganization.transform( + crypto: BitwardenCrCta, +) = copy( + keyBase64 = crypto.transformBase64(keyBase64), +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/OrganizationDecoder.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/OrganizationDecoder.kt new file mode 100644 index 00000000..8a5601f6 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/OrganizationDecoder.kt @@ -0,0 +1,34 @@ +package com.artemchep.keyguard.provider.bitwarden.crypto + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenOrganization +import com.artemchep.keyguard.core.store.bitwarden.BitwardenService +import com.artemchep.keyguard.provider.bitwarden.entity.OrganizationEntity +import kotlinx.datetime.Clock + +fun BitwardenOrganization.Companion.encrypted( + accountId: String, + entity: OrganizationEntity, +) = kotlin.run { + val organizationRevision = Clock.System.now() + val service = BitwardenService( + remote = BitwardenService.Remote( + id = entity.id, + revisionDate = organizationRevision, + deletedDate = null, // can not be trashed + ), + deleted = false, + version = BitwardenService.VERSION, + ) + BitwardenOrganization( + accountId = accountId, + organizationId = entity.id, + revisionDate = organizationRevision, + // service fields + service = service, + // common + name = entity.name, + avatarColor = entity.avatarColor, + selfHost = entity.selfHost, + keyBase64 = entity.key, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/ProfileCrypto.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/ProfileCrypto.kt new file mode 100644 index 00000000..9c75e8df --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/ProfileCrypto.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.provider.bitwarden.crypto + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenProfile + +fun BitwardenProfile.transform( + crypto: BitwardenCrCta, +) = copy( + keyBase64 = crypto + .withEnv(crypto.env.copy(key = BitwardenCrKey.AuthToken)) + .transformBase64(keyBase64), + privateKeyBase64 = crypto.transformBase64(privateKeyBase64), +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/ProfileDecoder.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/ProfileDecoder.kt new file mode 100644 index 00000000..e8126be2 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/ProfileDecoder.kt @@ -0,0 +1,27 @@ +package com.artemchep.keyguard.provider.bitwarden.crypto + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenProfile +import com.artemchep.keyguard.provider.bitwarden.entity.SyncProfile + +fun BitwardenProfile.Companion.encrypted( + accountId: String, + entity: SyncProfile, + unofficialServer: Boolean, +) = kotlin.run { + BitwardenProfile( + accountId = accountId, + profileId = entity.id, + keyBase64 = entity.key, + privateKeyBase64 = entity.privateKey, + avatarColor = entity.avatarColor, + culture = entity.culture, + name = entity.name.orEmpty(), + email = entity.email, + emailVerified = entity.emailVerified, + premium = entity.premium, + securityStamp = entity.securityStamp, + twoFactorEnabled = entity.twoFactorEnabled, + masterPasswordHint = entity.masterPasswordHint, + unofficialServer = unofficialServer, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/SendCrypto.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/SendCrypto.kt new file mode 100644 index 00000000..d8fe48ae --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/SendCrypto.kt @@ -0,0 +1,30 @@ +package com.artemchep.keyguard.provider.bitwarden.crypto + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenSend + +fun BitwardenSend.transform( + crypto: BitwardenCrCta, + codec2: BitwardenCrCta, +) = copy( + // common + // key is encoded with profile key + keyBase64 = keyBase64?.let(codec2::transformBase64), + name = crypto.transformString(name), + notes = crypto.transformString(notes), + // types + text = text?.transform(crypto), + file = file?.transform(crypto), +) + +fun BitwardenSend.File.transform( + crypto: BitwardenCrCta, +) = copy( + fileName = crypto.transformString(fileName), + keyBase64 = keyBase64?.let(crypto::transformBase64), +) + +fun BitwardenSend.Text.transform( + crypto: BitwardenCrCta, +) = copy( + text = crypto.transformString(text), +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/SendDecoder.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/SendDecoder.kt new file mode 100644 index 00000000..569ba615 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/SendDecoder.kt @@ -0,0 +1,59 @@ +package com.artemchep.keyguard.provider.bitwarden.crypto + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenSend +import com.artemchep.keyguard.core.store.bitwarden.BitwardenService +import com.artemchep.keyguard.provider.bitwarden.entity.SyncSends +import com.artemchep.keyguard.provider.bitwarden.entity.domain + +fun BitwardenSend.Companion.encrypted( + accountId: String, + sendId: String, + entity: SyncSends, +) = kotlin.run { + val service = BitwardenService( + remote = BitwardenService.Remote( + id = entity.id, + revisionDate = entity.revisionDate, + deletedDate = null, // can not be trashed + ), + deleted = false, + version = BitwardenService.VERSION, + ) + BitwardenSend( + accountId = accountId, + sendId = sendId, + accessId = entity.accessId, + revisionDate = entity.revisionDate, + deletedDate = entity.deletionDate, + expirationDate = entity.expirationDate, + keyBase64 = entity.key, + // service fields + service = service, + // common + name = entity.name, + notes = entity.notes, + accessCount = entity.accessCount, + maxAccessCount = entity.maxAccessCount, + password = entity.password, + disabled = entity.disabled, + hideEmail = entity.hideEmail, + // types + type = entity.type.domain(), + file = entity.file + ?.let { file -> + BitwardenSend.File( + id = file.fileName, + fileName = file.fileName, + keyBase64 = file.key, + size = file.size.toLong(), + ) + }, + text = entity.text + ?.let { text -> + BitwardenSend.Text( + text = text.text, + hidden = text.hidden, + ) + }, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/SymmetricCryptoKey.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/SymmetricCryptoKey.kt new file mode 100644 index 00000000..5b507da9 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/crypto/SymmetricCryptoKey.kt @@ -0,0 +1,193 @@ +package com.artemchep.keyguard.provider.bitwarden.crypto + +import com.artemchep.keyguard.common.service.crypto.CipherEncryptor + +sealed interface CryptoKey { + companion object; +} + +fun CryptoKey.Companion.decodeAsymmetricOrThrow( + data: ByteArray, +): AsymmetricCryptoKey = kotlin.run { + AsymmetricCryptoKey( + privateKey = data, + ) +} + +fun CryptoKey.Companion.decodeSymmetricOrThrow( + data: ByteArray, +): SymmetricCryptoKey2 = kotlin.run { + SymmetricCryptoKey2( + data = data, + ) +} + +/** + * @author Artem Chepurnyi + */ +@Suppress( + "PrivatePropertyName", + "FunctionName", + "SpellCheckingInspection", +) +data class SymmetricCryptoKey2( + val data: ByteArray, +) : CryptoKey { + interface EncKeyProvider { + val encKey: ByteArray + } + + interface MacKeyProvider { + val macKey: ByteArray + } + + /** + * @author Artem Chepurnyi + */ + data class Crypto( + override val encKey: ByteArray, + ) : EncKeyProvider { + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as Crypto + + if (!encKey.contentEquals(other.encKey)) return false + + return true + } + + override fun hashCode(): Int { + return encKey.contentHashCode() + } + } + + /** + * @author Artem Chepurnyi + */ + data class CryptoWithMac( + override val encKey: ByteArray, + override val macKey: ByteArray, + ) : EncKeyProvider, MacKeyProvider { + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as CryptoWithMac + + if (!encKey.contentEquals(other.encKey)) return false + if (!macKey.contentEquals(other.macKey)) return false + + return true + } + + override fun hashCode(): Int { + var result = encKey.contentHashCode() + result = 31 * result + macKey.contentHashCode() + return result + } + } + + private val aesCbc256_B64 by lazy { + require(data.size == 32) { + "Crypto key Aes+Cbc+256 must be 32 bytes long, got ${data.size} instead!" + } + Crypto( + encKey = data, + ) + } + + private val aesCbc256_HmacSha256_B64 by lazy { + require(data.size == 64) { + "Crypto key Aes+Cbc+256+Hmac256 must be 64 bytes long, got ${data.size} instead!" + } + CryptoWithMac( + encKey = data.sliceArray(0 until 32), + macKey = data.sliceArray(32 until 64), + ) + } + + private val aesCbc128_HmacSha256_B64 by lazy { + require(data.size == 32) { + "Crypto key Aes+Cbc+128+Hmac256 must be 32 bytes long, got ${data.size} instead!" + } + CryptoWithMac( + encKey = data.sliceArray(0 until 16), + macKey = data.sliceArray(16 until 32), + ) + } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as SymmetricCryptoKey2 + + if (!data.contentEquals(other.data)) return false + + return true + } + + override fun hashCode(): Int { + return data.contentHashCode() + } + + // CBC 256 + + fun requireAesCbc256_B64() = aesCbc256_B64 + + fun requireAesCbc256_HmacSha256_B64() = aesCbc256_HmacSha256_B64 + + // CBC 128 + + fun requireAesCbc128_HmacSha256_B64() = aesCbc128_HmacSha256_B64 +} + +/** + * @author Artem Chepurnyi + */ +data class AsymmetricCryptoKey( + val privateKey: ByteArray, +) : CryptoKey { + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as AsymmetricCryptoKey + + if (!privateKey.contentEquals(other.privateKey)) return false + + return true + } + + override fun hashCode(): Int { + return privateKey.contentHashCode() + } +} + +/** + * @author Artem Chepurnyi + */ +data class DecodeResult( + val data: ByteArray, + val type: CipherEncryptor.Type, +) { + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as DecodeResult + + if (!data.contentEquals(other.data)) return false + if (type != other.type) return false + + return true + } + + override fun hashCode(): Int { + var result = data.contentHashCode() + result = 31 * result + type.hashCode() + return result + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/AccountPreLoginRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/AccountPreLoginRequest.kt new file mode 100644 index 00000000..03ae3966 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/AccountPreLoginRequest.kt @@ -0,0 +1,10 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class AccountPreLoginRequest( + @SerialName("email") + val email: String, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/AccountPreLoginResponse.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/AccountPreLoginResponse.kt new file mode 100644 index 00000000..f90a8cd6 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/AccountPreLoginResponse.kt @@ -0,0 +1,58 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import com.artemchep.keyguard.provider.bitwarden.model.PreLogin +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonNames + +@Serializable +data class AccountPreLoginResponse( + @JsonNames("kdf") + @SerialName("Kdf") + val kdfType: Int = 0, + @JsonNames("kdfIterations") + @SerialName("KdfIterations") + val kdfIterationsCount: Int = 0, + @JsonNames("kdfMemory") + @SerialName("KdfMemory") + val kdfMemory: Int = 0, + @JsonNames("kdfParallelism") + @SerialName("KdfParallelism") + val kdfParallelism: Int = 0, +) + +private const val Pbkdf2Iterations = 600000 + +private const val Argon2Iterations = 3 +private const val Argon2MemoryInMB = 64 +private const val Argon2Parallelism = 4 + +fun AccountPreLoginResponse.toDomain(): PreLogin { + val hash = when (kdfType) { + // is AccountPreLoginResponse.Pbkdf2 + 0 -> { + PreLogin.Hash.Pbkdf2( + iterationsCount = kdfIterationsCount + .takeOrDefault(Pbkdf2Iterations), + ) + } + // is AccountPreLoginResponse.Argon2id + 1 -> { + PreLogin.Hash.Argon2id( + iterationsCount = kdfIterationsCount + .takeOrDefault(Argon2Iterations), + memoryMb = kdfMemory + .takeOrDefault(Argon2MemoryInMB), + parallelism = kdfParallelism + .takeOrDefault(Argon2Parallelism), + ) + } + + else -> throw IllegalArgumentException("KDF type $kdfType is not supported!") + } + return PreLogin( + hash = hash, + ) +} + +private fun Int.takeOrDefault(default: Int) = takeIf { it != 0 } ?: default diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/AttachmentEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/AttachmentEntity.kt new file mode 100644 index 00000000..ae4f0a00 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/AttachmentEntity.kt @@ -0,0 +1,27 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonNames + +@Serializable +data class AttachmentEntity( + @JsonNames("id") + @SerialName("Id") + val id: String, + @JsonNames("url") + @SerialName("Url") + val url: String? = null, + @JsonNames("fileName") + @SerialName("FileName") + val fileName: String, + @JsonNames("key") + @SerialName("Key") + val key: String, + @JsonNames("size") + @SerialName("Size") + val size: String, + @JsonNames("sizeName") + @SerialName("SizeName") + val sizeName: String, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/AvatarRequestEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/AvatarRequestEntity.kt new file mode 100644 index 00000000..f045f480 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/AvatarRequestEntity.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import kotlinx.serialization.Serializable + +@Serializable +data class AvatarRequestEntity( + /** Color in the '#FFFFFF' format */ + val avatarColor: String, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/CardEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/CardEntity.kt new file mode 100644 index 00000000..bfb83a98 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/CardEntity.kt @@ -0,0 +1,27 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonNames + +@Serializable +data class CardEntity( + @JsonNames("cardholderName") + @SerialName("CardholderName") + val cardholderName: String? = null, + @JsonNames("brand") + @SerialName("Brand") + val brand: String? = null, + @JsonNames("number") + @SerialName("Number") + val number: String? = null, + @JsonNames("expMonth") + @SerialName("ExpMonth") + val expMonth: String? = null, + @JsonNames("expYear") + @SerialName("ExpYear") + val expYear: String? = null, + @JsonNames("code") + @SerialName("Code") + val code: String? = null, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/CipherEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/CipherEntity.kt new file mode 100644 index 00000000..d42fd2a7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/CipherEntity.kt @@ -0,0 +1,78 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import kotlinx.datetime.Instant +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonNames + +@Serializable +data class CipherEntity( + @JsonNames("id") + @SerialName("Id") + val id: String, + @JsonNames("organizationId") + @SerialName("OrganizationId") + val organizationId: String? = null, + @JsonNames("organizationUseTotp") + @SerialName("OrganizationUseTotp") + val organizationUseTotp: Boolean, + @JsonNames("folderId") + @SerialName("FolderId") + val folderId: String? = null, + @JsonNames("userId") + @SerialName("UserId") + val userId: String? = null, + @JsonNames("edit") + @SerialName("Edit") + val edit: Boolean = true, + @JsonNames("viewPassword") + @SerialName("ViewPassword") + val viewPassword: Boolean = true, + @JsonNames("favorite") + @SerialName("Favorite") + val favorite: Boolean = false, + @JsonNames("revisionDate") + @SerialName("RevisionDate") + val revisionDate: Instant, + @JsonNames("type") + @SerialName("Type") + val type: CipherTypeEntity = CipherTypeEntity.Login, + @JsonNames("sizeName") + @SerialName("SizeName") + val sizeName: String? = null, + @JsonNames("name") + @SerialName("Name") + val name: String? = null, + @JsonNames("notes") + @SerialName("Notes") + val notes: String? = null, + @JsonNames("login") + @SerialName("Login") + val login: LoginEntity? = null, + @JsonNames("secureNote") + @SerialName("SecureNote") + val secureNote: SecureNoteEntity? = null, + @JsonNames("card") + @SerialName("Card") + val card: CardEntity? = null, + @JsonNames("identity") + @SerialName("Identity") + val identity: IdentityEntity? = null, + @JsonNames("fields") + @SerialName("Fields") + val fields: List? = null, + @JsonNames("attachments") + @SerialName("Attachments") + val attachments: List? = null, + @JsonNames("passwordHistory") + @SerialName("PasswordHistory") + val passwordHistory: List? = null, + @JsonNames("collectionIds") + @SerialName("CollectionIds") + val collectionIds: List? = null, + @JsonNames("deletedDate") + @SerialName("DeletedDate") + val deletedDate: Instant? = null, + @SerialName("Reprompt") + val reprompt: CipherRepromptTypeEntity = CipherRepromptTypeEntity.None, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/CipherRepromptTypeEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/CipherRepromptTypeEntity.kt new file mode 100644 index 00000000..b1ef1ee9 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/CipherRepromptTypeEntity.kt @@ -0,0 +1,32 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.provider.bitwarden.entity.serializer.CommonEnumIntSerializer +import com.artemchep.keyguard.provider.bitwarden.entity.serializer.IntEnum +import kotlinx.serialization.Serializable + +@Serializable(CipherRepromptTypeEntitySerializer::class) +enum class CipherRepromptTypeEntity( + override val int: Int, +) : IntEnum { + None(0), + Password(1), + ; + + companion object +} + +object CipherRepromptTypeEntitySerializer : + CommonEnumIntSerializer(CipherRepromptTypeEntity::class) + +fun CipherRepromptTypeEntity.Companion.of( + model: BitwardenCipher.RepromptType, +) = when (model) { + BitwardenCipher.RepromptType.None -> CipherRepromptTypeEntity.None + BitwardenCipher.RepromptType.Password -> CipherRepromptTypeEntity.Password +} + +fun CipherRepromptTypeEntity.domain() = when (this) { + CipherRepromptTypeEntity.None -> BitwardenCipher.RepromptType.None + CipherRepromptTypeEntity.Password -> BitwardenCipher.RepromptType.Password +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/CipherTypeEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/CipherTypeEntity.kt new file mode 100644 index 00000000..61ff2956 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/CipherTypeEntity.kt @@ -0,0 +1,38 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.provider.bitwarden.entity.serializer.CommonEnumIntSerializer +import com.artemchep.keyguard.provider.bitwarden.entity.serializer.IntEnum +import kotlinx.serialization.Serializable + +@Serializable(CipherTypeEntitySerializer::class) +enum class CipherTypeEntity( + override val int: Int, +) : IntEnum { + Login(1), + SecureNote(2), + Card(3), + Identity(4), + ; + + companion object +} + +object CipherTypeEntitySerializer : + CommonEnumIntSerializer(CipherTypeEntity::class) + +fun CipherTypeEntity.Companion.of( + model: BitwardenCipher.Type, +) = when (model) { + BitwardenCipher.Type.Login -> CipherTypeEntity.Login + BitwardenCipher.Type.SecureNote -> CipherTypeEntity.SecureNote + BitwardenCipher.Type.Card -> CipherTypeEntity.Card + BitwardenCipher.Type.Identity -> CipherTypeEntity.Identity +} + +fun CipherTypeEntity.domain() = when (this) { + CipherTypeEntity.Login -> BitwardenCipher.Type.Login + CipherTypeEntity.SecureNote -> BitwardenCipher.Type.SecureNote + CipherTypeEntity.Card -> BitwardenCipher.Type.Card + CipherTypeEntity.Identity -> BitwardenCipher.Type.Identity +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/CollectionEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/CollectionEntity.kt new file mode 100644 index 00000000..9813bcaa --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/CollectionEntity.kt @@ -0,0 +1,26 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import kotlinx.serialization.SerialName +import kotlinx.serialization.json.JsonNames + +@kotlinx.serialization.Serializable +data class CollectionEntity( + @JsonNames("id") + @SerialName("Id") + val id: String, + @JsonNames("organizationId") + @SerialName("OrganizationId") + val organizationId: String, + @JsonNames("name") + @SerialName("Name") + val name: String, + @JsonNames("externalId") + @SerialName("externalId") + val externalId: String? = null, + @JsonNames("readOnly") + @SerialName("ReadOnly") + val readOnly: Boolean, + @JsonNames("hidePasswords") + @SerialName("HidePasswords") + val hidePasswords: Boolean, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/ConnectTokenResponse.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/ConnectTokenResponse.kt new file mode 100644 index 00000000..dc22ced5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/ConnectTokenResponse.kt @@ -0,0 +1,53 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import com.artemchep.keyguard.provider.bitwarden.model.Login +import kotlinx.datetime.Clock +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonNames +import kotlin.time.Duration + +@Serializable +data class ConnectTokenResponse( + @JsonNames("kdf") + @SerialName("Kdf") + val kdfType: Int? = null, + @JsonNames("kdfIterations") + @SerialName("KdfIterations") + val kdfIterationsCount: Int? = null, + +// @SerialName("Key") +// val key: String, +// @SerialName("PrivateKey") +// val privateKey: String, + + @SerialName("access_token") + val accessToken: String, + @SerialName("token_type") + val accessTokenType: String, + + @SerialName("expires_in") + val accessTokenExpiresInSeconds: Long, + @JsonNames("resetMasterPassword") + @SerialName("ResetMasterPassword") + val resetMasterPassword: Boolean? = null, + @SerialName("refresh_token") + val refreshToken: String, + /** + * Old versions of the app do not + * have the scope. + */ + @SerialName("scope") + val scope: String? = null, +) + +fun ConnectTokenResponse.toDomain() = Login( + accessToken = accessToken, + accessTokenType = accessTokenType, + accessTokenExpiryDate = kotlin.run { + val now = Clock.System.now() + now + with(Duration) { accessTokenExpiresInSeconds.seconds } + }, + refreshToken = refreshToken, + scope = scope, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/DomainEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/DomainEntity.kt new file mode 100644 index 00000000..f5fac717 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/DomainEntity.kt @@ -0,0 +1,26 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import kotlinx.serialization.SerialName +import kotlinx.serialization.json.JsonNames + +@kotlinx.serialization.Serializable +data class DomainEntity( + @JsonNames("id") + @SerialName("Id") + val id: String, + @JsonNames("organizationId") + @SerialName("OrganizationId") + val organizationId: String, + @JsonNames("name") + @SerialName("Name") + val name: String, + @JsonNames("externalId") + @SerialName("externalId") + val externalId: String? = null, + @JsonNames("readOnly") + @SerialName("ReadOnly") + val readOnly: Boolean, + @JsonNames("hidePasswords") + @SerialName("HidePasswords") + val hidePasswords: Boolean, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/ErrorEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/ErrorEntity.kt new file mode 100644 index 00000000..a1a7c49e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/ErrorEntity.kt @@ -0,0 +1,235 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import com.artemchep.keyguard.common.exception.ApiException +import com.artemchep.keyguard.common.service.state.impl.toMap +import com.artemchep.keyguard.provider.bitwarden.model.TwoFactorProviderArgument +import com.artemchep.keyguard.provider.bitwarden.model.TwoFactorProviderType +import com.artemchep.keyguard.provider.bitwarden.model.toObj +import io.ktor.http.HttpStatusCode +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.JsonNames +import kotlinx.serialization.json.JsonObject + +@Serializable +data class ErrorEntity( + @SerialName("error") + @JsonNames("message") + val error: String, + @SerialName("error_description") + val errorDescription: String? = null, + @JsonNames("errorModel") + @SerialName("ErrorModel") + val errorModel: Message? = null, + @JsonNames("validationErrors") + @SerialName("ValidationErrors") + val validationErrors: JsonObject? = null, + // + // Two factor provider + // + @JsonNames("twoFactorProviders") + @SerialName("TwoFactorProviders") + val twoFactorProviders: List = emptyList(), + @JsonNames("twoFactorProviders2") + @SerialName("TwoFactorProviders2") + val twoFactorProviders2: TwoFactorProviders? = null, + // + // Captcha + // + @SerialName("HCaptcha_SiteKey") + val hCaptchaSiteKey: String? = null, +) { + @Serializable + data class TwoFactorProviders( + @SerialName("0") + val authenticator: AuthenticatorParams? = null, + @SerialName("1") + val email: EmailParams? = null, + @SerialName("2") + val duo: DuoParams? = null, + @SerialName("3") + val yubiKey: YubiKeyParams? = null, + @SerialName("4") + val u2f: U2fParams? = null, + @SerialName("5") + val remember: RememberParams? = null, + @SerialName("6") + val organizationDuo: OrganizationDuoParams? = null, + @SerialName("7") + val fido2WebAuthn: JsonElement? = null, + ) { + @Serializable + object AuthenticatorParams + + @Serializable + data class EmailParams( + @JsonNames("email") + @SerialName("Email") + val email: String? = null, + ) + + @Serializable + data class DuoParams( + @JsonNames("host") + @SerialName("Host") + val host: String? = null, + @JsonNames("signature") + @SerialName("Signature") + val signature: String? = null, + ) + + @Serializable + object YubiKeyParams + + @Serializable + object U2fParams + + @Serializable + object RememberParams + + @Serializable + data class OrganizationDuoParams( + @JsonNames("host") + @SerialName("Host") + val host: String? = null, + @JsonNames("signature") + @SerialName("Signature") + val signature: String? = null, + ) + } + + @Serializable + data class Message( + @JsonNames("message") + @SerialName("Message") + val message: String, + ) +} + +private fun ErrorEntity.TwoFactorProviders.toDomain(): List = + listOfNotNull( + authenticator?.toDomain(), + email?.toDomain(), + duo?.toDomain(), + yubiKey?.toDomain(), + u2f?.toDomain(), + remember?.toDomain(), + organizationDuo?.toDomain(), + fido2WebAuthn?.toDomainFido2WebAuthn(), + ) + +private fun ErrorEntity.TwoFactorProviders.AuthenticatorParams.toDomain( +) = TwoFactorProviderArgument.Authenticator + +private fun ErrorEntity.TwoFactorProviders.EmailParams.toDomain( +) = TwoFactorProviderArgument.Email( + email = email, +) + +private fun ErrorEntity.TwoFactorProviders.DuoParams.toDomain( +) = TwoFactorProviderArgument.Duo( + host = host, + signature = signature, +) + +private fun ErrorEntity.TwoFactorProviders.YubiKeyParams.toDomain( +) = TwoFactorProviderArgument.YubiKey + +private fun ErrorEntity.TwoFactorProviders.U2fParams.toDomain( +) = TwoFactorProviderArgument.U2f + +private fun ErrorEntity.TwoFactorProviders.RememberParams.toDomain( +) = TwoFactorProviderArgument.Remember + +private fun ErrorEntity.TwoFactorProviders.OrganizationDuoParams.toDomain( +) = TwoFactorProviderArgument.OrganizationDuo( + host = host, + signature = signature, +) + +private fun JsonElement.toDomainFido2WebAuthn( +) = TwoFactorProviderArgument.Fido2WebAuthn( + json = this, +) + +fun ErrorEntity.toException( + exception: Exception, + code: HttpStatusCode, +) = kotlin.run { + val type = kotlin.run { + if (hCaptchaSiteKey != null) { + return@run ApiException.Type.CaptchaRequired( + siteKey = hCaptchaSiteKey, + ) + } + + val providers = kotlin.run { + val new = twoFactorProviders2?.toDomain().orEmpty() + .groupBy { it::class } + val old = twoFactorProviders + .mapNotNull { entity -> + entity + .toDomain() + .toObj() + } + .groupBy { it::class } + // all + TwoFactorProviderType.entries + .mapNotNull { type -> + val typeObj = type.toObj() + ?: return@mapNotNull null + val typeClazz = typeObj::class + new[typeClazz]?.firstOrNull() + ?: old[typeClazz]?.firstOrNull() + } + } + if (providers.isNotEmpty()) { + return@run ApiException.Type.TwoFaRequired( + providers = providers, + ) + } + + // Default exception does not have any additional + // information. + null + } + // Auto-format the validation error + // messages to something user-friendly. + val validationError = validationErrors?.toMap()?.format() + val generalError = errorModel?.message ?: errorDescription ?: error + val message = if (validationError != null) { + "$generalError\n\n$validationError" + } else { + generalError + } + ApiException( + exception = exception, + code = code, + error = error, + type = type, + message = message, + ) +} + +private fun Any?.format(): String { + return when (this) { + is Map<*, *> -> this + .mapKeys { it.key.toString() } + .entries + // Each entry is separated by the extra empty + // new line. + .joinToString( + separator = "\n\n", + ) { entry -> + "${entry.key}:\n${entry.value.format()}" + } + + is Collection<*> -> this + .joinToString(separator = "\n") { value -> + "- " + value.format() + } + + else -> this.toString() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/EventEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/EventEntity.kt new file mode 100644 index 00000000..9078d85a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/EventEntity.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +data class EventEntity( + val type: EventTypeEntity, + val cipherId: String, + val date: String, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/EventTypeEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/EventTypeEntity.kt new file mode 100644 index 00000000..a04d6d5a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/EventTypeEntity.kt @@ -0,0 +1,175 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +enum class EventTypeEntity { + @SerialName("1000") + User_LoggedIn, + + @SerialName("1001") + User_ChangedPassword, + + @SerialName("1002") + User_Updated2fa, + + @SerialName("1003") + User_Disabled2fa, + + @SerialName("1004") + User_Recovered2fa, + + @SerialName("1005") + User_FailedLogIn, + + @SerialName("1006") + User_FailedLogIn2fa, + + @SerialName("1007") + User_ClientExportedVault, + + @SerialName("1008") + User_UpdatedTempPassword, + + @SerialName("1100") + Cipher_Created, + + @SerialName("1101") + Cipher_Updated, + + @SerialName("1102") + Cipher_Deleted, + + @SerialName("1103") + Cipher_AttachmentCreated, + + @SerialName("1104") + Cipher_AttachmentDeleted, + + @SerialName("1105") + Cipher_Shared, + + @SerialName("1106") + Cipher_UpdatedCollections, + + @SerialName("1107") + Cipher_ClientViewed, + + @SerialName("1108") + Cipher_ClientToggledPasswordVisible, + + @SerialName("1109") + Cipher_ClientToggledHiddenFieldVisible, + + @SerialName("1110") + Cipher_ClientToggledCardCodeVisible, + + @SerialName("1111") + Cipher_ClientCopiedPassword, + + @SerialName("1112") + Cipher_ClientCopiedHiddenField, + + @SerialName("1113") + Cipher_ClientCopiedCardCode, + + @SerialName("1114") + Cipher_ClientAutofilled, + + @SerialName("1115") + Cipher_SoftDeleted, + + @SerialName("1116") + Cipher_Restored, + + @SerialName("1117") + Cipher_ClientToggledCardNumberVisible, + + @SerialName("1300") + Collection_Created, + + @SerialName("1301") + Collection_Updated, + + @SerialName("1302") + Collection_Deleted, + + @SerialName("1400") + Group_Created, + + @SerialName("1401") + Group_Updated, + + @SerialName("1402") + Group_Deleted, + + @SerialName("1500") + OrganizationUser_Invited, + + @SerialName("1501") + OrganizationUser_Confirmed, + + @SerialName("1502") + OrganizationUser_Updated, + + @SerialName("1503") + OrganizationUser_Removed, + + @SerialName("1504") + OrganizationUser_UpdatedGroups, + + @SerialName("1505") + OrganizationUser_UnlinkedSso, + + @SerialName("1506") + OrganizationUser_ResetPassword_Enroll, + + @SerialName("1507") + OrganizationUser_ResetPassword_Withdraw, + + @SerialName("1508") + OrganizationUser_AdminResetPassword, + + @SerialName("1509") + OrganizationUser_ResetSsoLink, + + @SerialName("1600") + Organization_Updated, + + @SerialName("1601") + Organization_PurgedVault, + + @SerialName("1602") + Organization_ClientExportedVault, + + @SerialName("1603") + Organization_VaultAccessed, + + @SerialName("1700") + Policy_Updated, + + @SerialName("1800") + ProviderUser_Invited, + + @SerialName("1801") + ProviderUser_Confirmed, + + @SerialName("1802") + ProviderUser_Updated, + + @SerialName("1803") + ProviderUser_Removed, + + @SerialName("1900") + ProviderOrganization_Created, + + @SerialName("1901") + ProviderOrganization_Added, + + @SerialName("1902") + ProviderOrganization_Removed, + + @SerialName("1903") + ProviderOrganization_VaultAccessed, +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/FieldEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/FieldEntity.kt new file mode 100644 index 00000000..387f72e5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/FieldEntity.kt @@ -0,0 +1,21 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonNames + +@Serializable +data class FieldEntity( + @JsonNames("type") + @SerialName("Type") + val type: FieldTypeEntity, + @JsonNames("name") + @SerialName("Name") + val name: String? = null, + @JsonNames("value") + @SerialName("Value") + val value: String? = null, + @JsonNames("linkedId") + @SerialName("LinkedId") + val linkedId: LinkedIdTypeEntity? = null, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/FieldTypeEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/FieldTypeEntity.kt new file mode 100644 index 00000000..815c2646 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/FieldTypeEntity.kt @@ -0,0 +1,37 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.provider.bitwarden.entity.serializer.CommonEnumIntSerializer +import com.artemchep.keyguard.provider.bitwarden.entity.serializer.IntEnum +import kotlinx.serialization.Serializable + +@Serializable(FieldTypeEntitySerializer::class) +enum class FieldTypeEntity( + override val int: Int, +) : IntEnum { + Text(0), + Hidden(1), + Boolean(2), + Linked(3), + ; + + companion object +} + +object FieldTypeEntitySerializer : CommonEnumIntSerializer(FieldTypeEntity::class) + +fun FieldTypeEntity.Companion.of( + model: BitwardenCipher.Field.Type, +) = when (model) { + BitwardenCipher.Field.Type.Text -> FieldTypeEntity.Text + BitwardenCipher.Field.Type.Hidden -> FieldTypeEntity.Hidden + BitwardenCipher.Field.Type.Boolean -> FieldTypeEntity.Boolean + BitwardenCipher.Field.Type.Linked -> FieldTypeEntity.Linked +} + +fun FieldTypeEntity.domain() = when (this) { + FieldTypeEntity.Text -> BitwardenCipher.Field.Type.Text + FieldTypeEntity.Hidden -> BitwardenCipher.Field.Type.Hidden + FieldTypeEntity.Boolean -> BitwardenCipher.Field.Type.Boolean + FieldTypeEntity.Linked -> BitwardenCipher.Field.Type.Linked +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/FolderEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/FolderEntity.kt new file mode 100644 index 00000000..e959b2c4 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/FolderEntity.kt @@ -0,0 +1,19 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import kotlinx.datetime.Instant +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonNames + +@Serializable +data class FolderEntity( + @JsonNames("id") + @SerialName("Id") + val id: String, + @JsonNames("name") + @SerialName("Name") + val name: String, + @JsonNames("revisionDate") + @SerialName("RevisionDate") + val revisionDate: Instant, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/HibpBreachResponse.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/HibpBreachResponse.kt new file mode 100644 index 00000000..129b1513 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/HibpBreachResponse.kt @@ -0,0 +1,126 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import kotlinx.datetime.Instant +import kotlinx.datetime.LocalDate +import kotlinx.datetime.TimeZone +import kotlinx.datetime.toLocalDateTime +import kotlinx.serialization.KSerializer +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.descriptors.PrimitiveKind +import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder +import kotlinx.serialization.json.JsonNames + +object FuzzyLocalDateIso8601Serializer : KSerializer { + override val descriptor: SerialDescriptor = + PrimitiveSerialDescriptor("keyguard.FuzzyLocalDate", PrimitiveKind.STRING) + + override fun deserialize(decoder: Decoder): LocalDate = kotlin.run { + val isoString = decoder.decodeString() + runCatching { + LocalDate.parse(isoString) + }.getOrElse { + Instant.parse(isoString) + .toLocalDateTime(TimeZone.UTC) + .date + } + } + + override fun serialize(encoder: Encoder, value: LocalDate) { + encoder.encodeString(value.toString()) + } + +} + +@Serializable +data class HibpBreachGroup( + val breaches: List, +) + +// See: +// https://haveibeenpwned.com/API/v3#BreachModel +@Serializable +data class HibpBreachResponse( + /** + * A Pascal-cased name representing the breach which is unique across + * all other breaches. This value never changes and may be used to name + * dependent assets (such as images) but should not be shown directly + * to end users (see the "Title" attribute instead). + */ + @JsonNames("name") + @SerialName("Name") + val name: String? = null, + /** + * A descriptive title for the breach suitable for displaying to end users. + * It's unique across all breaches but individual values may change in the future + * (i.e. if another breach occurs against an organisation already in the system). + * If a stable value is required to reference the breach, + * refer to the "Name" attribute instead. + */ + @JsonNames("title") + @SerialName("Title") + val title: String? = null, + /** + * The domain of the primary website the breach occurred on. This may be used + * for identifying other assets external systems may have for the site. + */ + @JsonNames("domain") + @SerialName("Domain") + val domain: String? = null, + /** + * The date (with no time) the breach originally occurred on in ISO 8601 format. + * This is not always accurate — frequently breaches are discovered and reported + * long after the original incident. Use this attribute as a guide only. + */ + @JsonNames("breachDate") + @SerialName("BreachDate") + @Serializable(with = FuzzyLocalDateIso8601Serializer::class) + val breachDate: LocalDate? = null, + @JsonNames("addedDate") + @SerialName("AddedDate") + @Serializable(with = FuzzyLocalDateIso8601Serializer::class) + val addedDate: LocalDate? = null, + @JsonNames("description") + @SerialName("Description") + val description: String? = null, + @JsonNames("logoPath") + @SerialName("LogoPath") + val logoPath: String? = null, + @JsonNames("pwnCount") + @SerialName("PwnCount") + val pwnCount: Int? = null, + /** + * This attribute describes the nature of the data compromised in the breach and + * contains an alphabetically ordered string array of impacted data classes. + */ + @JsonNames("dataClasses") + @SerialName("DataClasses") + val dataClasses: List = emptyList(), + /** + * Indicates that the breach is considered unverified. An unverified breach may not + * have been hacked from the indicated website. An unverified breach is still loaded + * into HIBP when there's sufficient confidence that a significant portion + * of the data is legitimate. + */ + @JsonNames("isVerified") + @SerialName("IsVerified") + val isVerified: Boolean? = null, + @JsonNames("isFabricated") + @SerialName("IsFabricated") + val isFabricated: Boolean? = null, + @JsonNames("isSensitive") + @SerialName("IsSensitive") + val isSensitive: Boolean? = null, + @JsonNames("isRetired") + @SerialName("IsRetired") + val isRetired: Boolean? = null, + @JsonNames("isSpamList") + @SerialName("IsSpamList") + val isSpamList: Boolean? = null, + @JsonNames("isMalware") + @SerialName("IsMalware") + val isMalware: Boolean? = null, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/IdentityEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/IdentityEntity.kt new file mode 100644 index 00000000..32458707 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/IdentityEntity.kt @@ -0,0 +1,63 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonNames + +@Serializable +data class IdentityEntity( + @JsonNames("title") + @SerialName("Title") + val title: String? = null, + @JsonNames("firstName") + @SerialName("FirstName") + val firstName: String? = null, + @JsonNames("middleName") + @SerialName("MiddleName") + val middleName: String? = null, + @JsonNames("lastName") + @SerialName("LastName") + val lastName: String? = null, + @JsonNames("address1") + @SerialName("Address1") + val address1: String? = null, + @JsonNames("address2") + @SerialName("Address2") + val address2: String? = null, + @JsonNames("address3") + @SerialName("Address3") + val address3: String? = null, + @JsonNames("city") + @SerialName("City") + val city: String? = null, + @JsonNames("state") + @SerialName("State") + val state: String? = null, + @JsonNames("postalCode") + @SerialName("PostalCode") + val postalCode: String? = null, + @JsonNames("country") + @SerialName("Country") + val country: String? = null, + @JsonNames("company") + @SerialName("Company") + val company: String? = null, + @JsonNames("email") + @SerialName("Email") + val email: String? = null, + @JsonNames("phone") + @SerialName("Phone") + val phone: String? = null, + @JsonNames("ssn") + @SerialName("SSN") + val ssn: String? = null, + @JsonNames("username") + @SerialName("Username") + val username: String? = null, + @JsonNames("passportNumber") + @SerialName("PassportNumber") + val passportNumber: String? = null, + @JsonNames("licenseNumber") + @SerialName("LicenseNumber") + val licenseNumber: String? = null, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/LinkedIdTypeEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/LinkedIdTypeEntity.kt new file mode 100644 index 00000000..ee95063e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/LinkedIdTypeEntity.kt @@ -0,0 +1,111 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.provider.bitwarden.entity.serializer.CommonEnumIntSerializer +import com.artemchep.keyguard.provider.bitwarden.entity.serializer.IntEnum +import kotlinx.serialization.Serializable + +@Serializable(LinkedIdTypeEntitySerializer::class) +enum class LinkedIdTypeEntity( + override val int: Int, +) : IntEnum { + Login_Username(100), + Login_Password(101), + + // card + Card_CardholderName(300), + Card_ExpMonth(301), + Card_ExpYear(302), + Card_Code(303), + Card_Brand(304), + Card_Number(305), + + // identity + Identity_Title(400), + Identity_MiddleName(401), + Identity_Address1(402), + Identity_Address2(403), + Identity_Address3(404), + Identity_City(405), + Identity_State(406), + Identity_PostalCode(407), + Identity_Country(408), + Identity_Company(409), + Identity_Email(410), + Identity_Phone(411), + Identity_Ssn(412), + Identity_Username(413), + Identity_PassportNumber(414), + Identity_LicenseNumber(415), + Identity_FirstName(416), + Identity_LastName(417), + Identity_FullName(418), + ; + + companion object +} + +object LinkedIdTypeEntitySerializer : + CommonEnumIntSerializer(LinkedIdTypeEntity::class) + +fun LinkedIdTypeEntity.Companion.of( + model: BitwardenCipher.Field.LinkedId, +) = when (model) { + BitwardenCipher.Field.LinkedId.Login_Username -> LinkedIdTypeEntity.Login_Username + BitwardenCipher.Field.LinkedId.Login_Password -> LinkedIdTypeEntity.Login_Password + BitwardenCipher.Field.LinkedId.Card_CardholderName -> LinkedIdTypeEntity.Card_CardholderName + BitwardenCipher.Field.LinkedId.Card_ExpMonth -> LinkedIdTypeEntity.Card_ExpMonth + BitwardenCipher.Field.LinkedId.Card_ExpYear -> LinkedIdTypeEntity.Card_ExpYear + BitwardenCipher.Field.LinkedId.Card_Code -> LinkedIdTypeEntity.Card_Code + BitwardenCipher.Field.LinkedId.Card_Brand -> LinkedIdTypeEntity.Card_Brand + BitwardenCipher.Field.LinkedId.Card_Number -> LinkedIdTypeEntity.Card_Number + BitwardenCipher.Field.LinkedId.Identity_Title -> LinkedIdTypeEntity.Identity_Title + BitwardenCipher.Field.LinkedId.Identity_MiddleName -> LinkedIdTypeEntity.Identity_MiddleName + BitwardenCipher.Field.LinkedId.Identity_Address1 -> LinkedIdTypeEntity.Identity_Address1 + BitwardenCipher.Field.LinkedId.Identity_Address2 -> LinkedIdTypeEntity.Identity_Address2 + BitwardenCipher.Field.LinkedId.Identity_Address3 -> LinkedIdTypeEntity.Identity_Address3 + BitwardenCipher.Field.LinkedId.Identity_City -> LinkedIdTypeEntity.Identity_City + BitwardenCipher.Field.LinkedId.Identity_State -> LinkedIdTypeEntity.Identity_State + BitwardenCipher.Field.LinkedId.Identity_PostalCode -> LinkedIdTypeEntity.Identity_PostalCode + BitwardenCipher.Field.LinkedId.Identity_Country -> LinkedIdTypeEntity.Identity_Country + BitwardenCipher.Field.LinkedId.Identity_Company -> LinkedIdTypeEntity.Identity_Company + BitwardenCipher.Field.LinkedId.Identity_Email -> LinkedIdTypeEntity.Identity_Email + BitwardenCipher.Field.LinkedId.Identity_Phone -> LinkedIdTypeEntity.Identity_Phone + BitwardenCipher.Field.LinkedId.Identity_Ssn -> LinkedIdTypeEntity.Identity_Ssn + BitwardenCipher.Field.LinkedId.Identity_Username -> LinkedIdTypeEntity.Identity_Username + BitwardenCipher.Field.LinkedId.Identity_PassportNumber -> LinkedIdTypeEntity.Identity_PassportNumber + BitwardenCipher.Field.LinkedId.Identity_LicenseNumber -> LinkedIdTypeEntity.Identity_LicenseNumber + BitwardenCipher.Field.LinkedId.Identity_FirstName -> LinkedIdTypeEntity.Identity_FirstName + BitwardenCipher.Field.LinkedId.Identity_LastName -> LinkedIdTypeEntity.Identity_LastName + BitwardenCipher.Field.LinkedId.Identity_FullName -> LinkedIdTypeEntity.Identity_FullName +} + +fun LinkedIdTypeEntity.domain() = when (this) { + LinkedIdTypeEntity.Login_Username -> BitwardenCipher.Field.LinkedId.Login_Username + LinkedIdTypeEntity.Login_Password -> BitwardenCipher.Field.LinkedId.Login_Password + LinkedIdTypeEntity.Card_CardholderName -> BitwardenCipher.Field.LinkedId.Card_CardholderName + LinkedIdTypeEntity.Card_ExpMonth -> BitwardenCipher.Field.LinkedId.Card_ExpMonth + LinkedIdTypeEntity.Card_ExpYear -> BitwardenCipher.Field.LinkedId.Card_ExpYear + LinkedIdTypeEntity.Card_Code -> BitwardenCipher.Field.LinkedId.Card_Code + LinkedIdTypeEntity.Card_Brand -> BitwardenCipher.Field.LinkedId.Card_Brand + LinkedIdTypeEntity.Card_Number -> BitwardenCipher.Field.LinkedId.Card_Number + LinkedIdTypeEntity.Identity_Title -> BitwardenCipher.Field.LinkedId.Identity_Title + LinkedIdTypeEntity.Identity_MiddleName -> BitwardenCipher.Field.LinkedId.Identity_MiddleName + LinkedIdTypeEntity.Identity_Address1 -> BitwardenCipher.Field.LinkedId.Identity_Address1 + LinkedIdTypeEntity.Identity_Address2 -> BitwardenCipher.Field.LinkedId.Identity_Address2 + LinkedIdTypeEntity.Identity_Address3 -> BitwardenCipher.Field.LinkedId.Identity_Address3 + LinkedIdTypeEntity.Identity_City -> BitwardenCipher.Field.LinkedId.Identity_City + LinkedIdTypeEntity.Identity_State -> BitwardenCipher.Field.LinkedId.Identity_State + LinkedIdTypeEntity.Identity_PostalCode -> BitwardenCipher.Field.LinkedId.Identity_PostalCode + LinkedIdTypeEntity.Identity_Country -> BitwardenCipher.Field.LinkedId.Identity_Country + LinkedIdTypeEntity.Identity_Company -> BitwardenCipher.Field.LinkedId.Identity_Company + LinkedIdTypeEntity.Identity_Email -> BitwardenCipher.Field.LinkedId.Identity_Email + LinkedIdTypeEntity.Identity_Phone -> BitwardenCipher.Field.LinkedId.Identity_Phone + LinkedIdTypeEntity.Identity_Ssn -> BitwardenCipher.Field.LinkedId.Identity_Ssn + LinkedIdTypeEntity.Identity_Username -> BitwardenCipher.Field.LinkedId.Identity_Username + LinkedIdTypeEntity.Identity_PassportNumber -> BitwardenCipher.Field.LinkedId.Identity_PassportNumber + LinkedIdTypeEntity.Identity_LicenseNumber -> BitwardenCipher.Field.LinkedId.Identity_LicenseNumber + LinkedIdTypeEntity.Identity_FirstName -> BitwardenCipher.Field.LinkedId.Identity_FirstName + LinkedIdTypeEntity.Identity_LastName -> BitwardenCipher.Field.LinkedId.Identity_LastName + LinkedIdTypeEntity.Identity_FullName -> BitwardenCipher.Field.LinkedId.Identity_FullName +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/LoginEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/LoginEntity.kt new file mode 100644 index 00000000..677dda48 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/LoginEntity.kt @@ -0,0 +1,28 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import kotlinx.datetime.Instant +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonNames + +@Serializable +data class LoginEntity( + @JsonNames("uris") + @SerialName("Uris") + val uris: List? = null, + @JsonNames("username") + @SerialName("Username") + val username: String? = null, + @JsonNames("password") + @SerialName("Password") + val password: String? = null, + @JsonNames("passwordRevisionDate") + @SerialName("PasswordRevisionDate") + val passwordRevisionDate: Instant? = null, + @JsonNames("totp") + @SerialName("Totp") + val totp: String? = null, + @JsonNames("fido2Credentials") + @SerialName("Fido2Credentials") + val fido2Credentials: List? = null, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/LoginFido2CredentialsEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/LoginFido2CredentialsEntity.kt new file mode 100644 index 00000000..24ed2b86 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/LoginFido2CredentialsEntity.kt @@ -0,0 +1,49 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import kotlinx.datetime.Instant +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonNames + +@Serializable +data class LoginFido2CredentialsEntity( + @JsonNames("credentialId") + @SerialName("CredentialId") + val credentialId: String? = null, + @JsonNames("keyType") + @SerialName("KeyType") + val keyType: String, + @JsonNames("keyAlgorithm") + @SerialName("KeyAlgorithm") + val keyAlgorithm: String, + @JsonNames("keyCurve") + @SerialName("KeyCurve") + val keyCurve: String, + @JsonNames("keyValue") + @SerialName("KeyValue") + val keyValue: String, + @JsonNames("rpId") + @SerialName("RpId") + val rpId: String, + @JsonNames("rpName") + @SerialName("RpName") + val rpName: String, + @JsonNames("counter") + @SerialName("Counter") + val counter: String, + @JsonNames("userHandle") + @SerialName("UserHandle") + val userHandle: String, + @JsonNames("userName") + @SerialName("UserName") + val userName: String? = null, + @JsonNames("userDisplayName") + @SerialName("UserDisplayName") + val userDisplayName: String? = null, + @JsonNames("discoverable") + @SerialName("Discoverable") + val discoverable: String, + @JsonNames("creationDate") + @SerialName("CreationDate") + val creationDate: Instant, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/LoginUriEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/LoginUriEntity.kt new file mode 100644 index 00000000..531df5fb --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/LoginUriEntity.kt @@ -0,0 +1,15 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonNames + +@Serializable +data class LoginUriEntity( + @JsonNames("uri") + @SerialName("Uri") + val uri: String? = null, + @JsonNames("match") + @SerialName("Match") + val match: UriMatchTypeEntity? = null, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/OrganizationEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/OrganizationEntity.kt new file mode 100644 index 00000000..eded0bd3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/OrganizationEntity.kt @@ -0,0 +1,61 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import kotlinx.serialization.SerialName +import kotlinx.serialization.json.JsonNames + +@kotlinx.serialization.Serializable +data class OrganizationEntity( + @JsonNames("id") + @SerialName("Id") + val id: String, + @JsonNames("key") + @SerialName("Key") + val key: String, + @JsonNames("privateKey") + @SerialName("PrivateKey") + val privateKey: String? = null, + @JsonNames("name") + @SerialName("Name") + val name: String, + @JsonNames("avatarColor") + @SerialName("AvatarColor") + val avatarColor: String? = null, + @JsonNames("status") + @SerialName("Status") + val status: OrganizationUserStatusTypeEntity, + @JsonNames("type") + @SerialName("Type") + val type: OrganizationUserTypeEntity, + @JsonNames("enabled") + @SerialName("Enabled") + val enabled: Boolean = true, +// val usePolicies: Boolean, +// val useGroups: Boolean, +// val useDirectory: Boolean, +// val useEvents: Boolean, +// val useTotp: Boolean, +// val use2fa: Boolean, +// val useApi: Boolean, +// val useSso: Boolean, +// val useResetPassword: Boolean, + @JsonNames("selfHost") + @SerialName("SelfHost") + val selfHost: Boolean = false, + @JsonNames("usersGetPremium") + @SerialName("UsersGetPremium") + val usersGetPremium: Boolean = false, + @JsonNames("seats") + @SerialName("Seats") + val seats: Int = 0, +// val maxCollections: Int, +// val maxStorageGb: Int?, +// val ssoBound: Boolean, +// val identifier: String, +// // val permissions: PermissionsApi, +// val resetPasswordEnrolled: Boolean, +// val userId: String, +// val hasPublicAndPrivateKeys: Boolean, +// val providerId: String, +// val providerName: String, +// val isProviderUser: Boolean, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/OrganizationUserStatusTypeEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/OrganizationUserStatusTypeEntity.kt new file mode 100644 index 00000000..a50f4f76 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/OrganizationUserStatusTypeEntity.kt @@ -0,0 +1,16 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +enum class OrganizationUserStatusTypeEntity { + @SerialName("0") + Invited, + + @SerialName("1") + Accepted, + + @SerialName("2") + Confirmed, +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/OrganizationUserTypeEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/OrganizationUserTypeEntity.kt new file mode 100644 index 00000000..8dcfbc97 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/OrganizationUserTypeEntity.kt @@ -0,0 +1,22 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +enum class OrganizationUserTypeEntity { + @SerialName("0") + Owner, + + @SerialName("1") + Admin, + + @SerialName("2") + User, + + @SerialName("3") + Manager, + + @SerialName("4") + Custom, +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/PasswordHistoryEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/PasswordHistoryEntity.kt new file mode 100644 index 00000000..059b96c0 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/PasswordHistoryEntity.kt @@ -0,0 +1,16 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import kotlinx.datetime.Instant +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonNames + +@Serializable +data class PasswordHistoryEntity( + @JsonNames("password") + @SerialName("Password") + val password: String, + @JsonNames("lastUsedDate") + @SerialName("LastUsedDate") + val lastUsedDate: Instant, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/PolicyEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/PolicyEntity.kt new file mode 100644 index 00000000..06048adb --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/PolicyEntity.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +data class PolicyEntity( + val id: String, + val organizationId: String, + val type: PolicyTypeEntity, + val data: Any, + val enabled: Boolean, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/PolicyTypeEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/PolicyTypeEntity.kt new file mode 100644 index 00000000..e4252948 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/PolicyTypeEntity.kt @@ -0,0 +1,51 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import kotlinx.serialization.SerialName + +enum class PolicyTypeEntity { + // Requires users to have 2fa enabled + @SerialName("0") + TwoFactorAuthentication, + + // Sets minimum requirements for master password complexity + @SerialName("1") + MasterPassword, + + // Sets minimum requirements/default type for generated + // passwords/passphrases + @SerialName("2") + PasswordGenerator, + + // Allows users to only be apart of one organization + @SerialName("3") + SingleOrg, + + // Requires users to authenticate with SSO + @SerialName("4") + RequireSso, + + // Disables personal vault ownership for adding/cloning items + @SerialName("5") + PersonalOwnership, + + // Disables the ability to create and edit Bitwarden Sends + @SerialName("6") + DisableSend, + + // Sets restrictions or defaults for Bitwarden Sends + @SerialName("7") + SendOptions, + + // Allows organizations to use reset password, + // also can enable auto-enrollment during invite flow + @SerialName("8") + ResetPassword, + + // Sets the maximum allowed vault timeout + @SerialName("9") + MaximumVaultTimeout, + + // Disable personal vault export + @SerialName("10") + DisablePersonalVaultExport, +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/ProfileRequestEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/ProfileRequestEntity.kt new file mode 100644 index 00000000..9d74edec --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/ProfileRequestEntity.kt @@ -0,0 +1,10 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import kotlinx.serialization.Serializable + +@Serializable +data class ProfileRequestEntity( + val culture: String?, + val name: String?, + val masterPasswordHint: String?, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/ProviderEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/ProviderEntity.kt new file mode 100644 index 00000000..1a7f858b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/ProviderEntity.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +data class ProviderEntity( + val id: String, + val name: String, + val status: ProviderUserStatusTypeEntity, + val type: ProviderUserTypeEntity, + val enabled: Boolean, + val userId: String, + val useEvents: Boolean, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/ProviderUserStatusTypeEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/ProviderUserStatusTypeEntity.kt new file mode 100644 index 00000000..bbd78d23 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/ProviderUserStatusTypeEntity.kt @@ -0,0 +1,16 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +enum class ProviderUserStatusTypeEntity { + @SerialName("0") + Invited, + + @SerialName("1") + Accepted, + + @SerialName("2") + Confirmed, +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/ProviderUserTypeEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/ProviderUserTypeEntity.kt new file mode 100644 index 00000000..9fd161f5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/ProviderUserTypeEntity.kt @@ -0,0 +1,13 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +enum class ProviderUserTypeEntity { + @SerialName("0") + ProviderAdmin, + + @SerialName("1") + ServiceUser, +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/SecureNoteEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/SecureNoteEntity.kt new file mode 100644 index 00000000..103257ed --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/SecureNoteEntity.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonNames + +@Serializable +data class SecureNoteEntity( + @JsonNames("type") + @SerialName("Type") + val type: SecureNoteTypeEntity = SecureNoteTypeEntity.Generic, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/SecureNoteTypeEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/SecureNoteTypeEntity.kt new file mode 100644 index 00000000..fb33e502 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/SecureNoteTypeEntity.kt @@ -0,0 +1,29 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.provider.bitwarden.entity.serializer.CommonEnumIntSerializer +import com.artemchep.keyguard.provider.bitwarden.entity.serializer.IntEnum +import kotlinx.serialization.Serializable + +@Serializable(SecureNoteTypeEntitySerializer::class) +enum class SecureNoteTypeEntity( + override val int: Int, +) : IntEnum { + Generic(0), + ; + + companion object +} + +object SecureNoteTypeEntitySerializer : + CommonEnumIntSerializer(SecureNoteTypeEntity::class) + +fun SecureNoteTypeEntity.Companion.of( + model: BitwardenCipher.SecureNote.Type, +) = when (model) { + BitwardenCipher.SecureNote.Type.Generic -> SecureNoteTypeEntity.Generic +} + +fun SecureNoteTypeEntity.domain() = when (this) { + SecureNoteTypeEntity.Generic -> BitwardenCipher.SecureNote.Type.Generic +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/SendEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/SendEntity.kt new file mode 100644 index 00000000..847653c6 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/SendEntity.kt @@ -0,0 +1,21 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +data class SendEntity( + val id: String, + val accessId: String, + val userId: String, + val type: SendTypeEntity, + val name: String, + val notes: String, + val file: SendFileEntity, + val text: SendTextEntity, + val key: String, + val maxAccessCount: Int?, + val accessCount: Int, + val revisionDate: String, + val expirationDate: String, + val deletionDate: String, + val password: String, + val disabled: Boolean, + val hideEmail: Boolean, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/SendFileEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/SendFileEntity.kt new file mode 100644 index 00000000..9a7cafda --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/SendFileEntity.kt @@ -0,0 +1,24 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonNames + +@Serializable +data class SendFileEntity( + @JsonNames("id") + @SerialName("Id") + val id: String, + @JsonNames("fileName") + @SerialName("FileName") + val fileName: String, + @JsonNames("key") + @SerialName("Key") + val key: String? = null, + @JsonNames("size") + @SerialName("Size") + val size: String, + @JsonNames("sizeName") + @SerialName("SizeName") + val sizeName: String, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/SendTextEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/SendTextEntity.kt new file mode 100644 index 00000000..8dbf299b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/SendTextEntity.kt @@ -0,0 +1,15 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonNames + +@Serializable +data class SendTextEntity( + @JsonNames("text") + @SerialName("Text") + val text: String, + @JsonNames("hidden") + @SerialName("Hidden") + val hidden: Boolean? = null, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/SendTypeEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/SendTypeEntity.kt new file mode 100644 index 00000000..5828353b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/SendTypeEntity.kt @@ -0,0 +1,34 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenSend +import com.artemchep.keyguard.provider.bitwarden.entity.serializer.CommonEnumIntSerializer +import com.artemchep.keyguard.provider.bitwarden.entity.serializer.IntEnum +import kotlinx.serialization.Serializable + +@Serializable(SendTypeEntitySerializer::class) +enum class SendTypeEntity( + override val int: Int, +) : IntEnum { + Text(0), + File(1), + ; + + companion object +} + +object SendTypeEntitySerializer : CommonEnumIntSerializer(SendTypeEntity::class) + +fun SendTypeEntity.Companion.of( + model: BitwardenSend.Type, +) = when (model) { + BitwardenSend.Type.None -> + throw IllegalArgumentException("Unknown Send type!") + + BitwardenSend.Type.Text -> SendTypeEntity.Text + BitwardenSend.Type.File -> SendTypeEntity.File +} + +fun SendTypeEntity.domain() = when (this) { + SendTypeEntity.Text -> BitwardenSend.Type.Text + SendTypeEntity.File -> BitwardenSend.Type.File +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/SyncResponse.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/SyncResponse.kt new file mode 100644 index 00000000..cd1e65f4 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/SyncResponse.kt @@ -0,0 +1,147 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import com.artemchep.keyguard.common.model.DProfile +import com.artemchep.keyguard.common.model.DSecret +import kotlinx.datetime.Instant +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonNames + +@Serializable +data class SyncResponse( + @JsonNames("ciphers") + @SerialName("Ciphers") + val ciphers: List, + @JsonNames("profile") + @SerialName("Profile") + val profile: SyncProfile, +) + +@Serializable +data class SyncCipher( + @JsonNames("id") + @SerialName("Id") + val id: String, + @JsonNames("name") + @SerialName("Name") + val name: String, + @JsonNames("login") + @SerialName("Login") + val login: SyncCipherLogin? = null, + @JsonNames("revisionDate") + @SerialName("RevisionDate") + val revisionDate: Instant, +) + +@Serializable +data class SyncCipherLogin( + @JsonNames("password") + @SerialName("Password") + val password: String? = null, + @JsonNames("username") + @SerialName("Username") + val username: String? = null, +) + +@Serializable +data class SyncProfile( + @JsonNames("avatarColor") + @SerialName("AvatarColor") + val avatarColor: String? = null, + @JsonNames("culture") + @SerialName("Culture") + val culture: String, + @JsonNames("email") + @SerialName("Email") + val email: String, + @JsonNames("emailVerified") + @SerialName("EmailVerified") + val emailVerified: Boolean, + @JsonNames("id") + @SerialName("Id") + val id: String, + @JsonNames("key") + @SerialName("Key") + val key: String, + @JsonNames("privateKey") + @SerialName("PrivateKey") + val privateKey: String, + @JsonNames("masterPasswordHint") + @SerialName("MasterPasswordHint") + val masterPasswordHint: String? = null, + @JsonNames("name") + @SerialName("Name") + val name: String? = null, + @JsonNames("object") + @SerialName("Object") + val obj: String, + @JsonNames("organizations") + @SerialName("Organizations") + val organizations: List? = null, + @JsonNames("premium") + @SerialName("Premium") + val premium: Boolean, + @JsonNames("securityStamp") + @SerialName("SecurityStamp") + val securityStamp: String, + @JsonNames("twoFactorEnabled") + @SerialName("TwoFactorEnabled") + val twoFactorEnabled: Boolean, +) + +@Serializable +data class SyncSends( + @JsonNames("id") + @SerialName("Id") + val id: String, + @JsonNames("accessId") + @SerialName("AccessId") + val accessId: String, + @JsonNames("key") + @SerialName("Key") + val key: String, + @JsonNames("type") + @SerialName("Type") + val type: SendTypeEntity, + @JsonNames("name") + @SerialName("Name") + val name: String, + @JsonNames("notes") + @SerialName("Notes") + val notes: String? = null, + @JsonNames("file") + @SerialName("File") + val file: SendFileEntity? = null, + @JsonNames("text") + @SerialName("Text") + val text: SendTextEntity? = null, + @JsonNames("accessCount") + @SerialName("AccessCount") + val accessCount: Int, + @JsonNames("maxAccessCount") + @SerialName("MaxAccessCount") + val maxAccessCount: Int? = null, + @JsonNames("revisionDate") + @SerialName("RevisionDate") + val revisionDate: Instant, + @JsonNames("expirationDate") + @SerialName("ExpirationDate") + val expirationDate: Instant? = null, + @JsonNames("deletionDate") + @SerialName("DeletionDate") + val deletionDate: Instant? = null, + @JsonNames("password") + @SerialName("Password") + val password: String? = null, + @JsonNames("disabled") + @SerialName("Disabled") + val disabled: Boolean, + @JsonNames("hideEmail") + @SerialName("HideEmail") + val hideEmail: Boolean? = null, +) + +data class SyncResponseToDomainResult( + val profile: DProfile, + val secrets: List, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/TwoFactorEmailRequestEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/TwoFactorEmailRequestEntity.kt new file mode 100644 index 00000000..c595171c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/TwoFactorEmailRequestEntity.kt @@ -0,0 +1,10 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import kotlinx.serialization.Serializable + +@Serializable +data class TwoFactorEmailRequestEntity( + val email: String, + val masterPasswordHash: String, + val deviceIdentifier: String, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/TwoFactorProviderTypeEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/TwoFactorProviderTypeEntity.kt new file mode 100644 index 00000000..dcfe0519 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/TwoFactorProviderTypeEntity.kt @@ -0,0 +1,63 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import com.artemchep.keyguard.provider.bitwarden.model.TwoFactorProviderType +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +enum class TwoFactorProviderTypeEntity { + @SerialName("-1") + Unknown, + + @SerialName("0") + Authenticator, + + @SerialName("1") + Email, + + @SerialName("2") + Duo, + + @SerialName("3") + YubiKey, + + @SerialName("4") + U2f, + + @SerialName("5") + Remember, + + @SerialName("6") + OrganizationDuo, + + @SerialName("7") + Fido2WebAuthn, + + ; + + companion object { + fun of(type: TwoFactorProviderType) = when (type) { + TwoFactorProviderType.Unknown -> Unknown + TwoFactorProviderType.Authenticator -> Authenticator + TwoFactorProviderType.Email -> Email + TwoFactorProviderType.Duo -> Duo + TwoFactorProviderType.YubiKey -> YubiKey + TwoFactorProviderType.U2f -> U2f + TwoFactorProviderType.Remember -> Remember + TwoFactorProviderType.OrganizationDuo -> OrganizationDuo + TwoFactorProviderType.Fido2WebAuthn -> Fido2WebAuthn + } + } +} + +fun TwoFactorProviderTypeEntity.toDomain(): TwoFactorProviderType = when (this) { + TwoFactorProviderTypeEntity.Unknown -> TwoFactorProviderType.Unknown + TwoFactorProviderTypeEntity.Authenticator -> TwoFactorProviderType.Authenticator + TwoFactorProviderTypeEntity.Email -> TwoFactorProviderType.Email + TwoFactorProviderTypeEntity.Duo -> TwoFactorProviderType.Duo + TwoFactorProviderTypeEntity.YubiKey -> TwoFactorProviderType.YubiKey + TwoFactorProviderTypeEntity.U2f -> TwoFactorProviderType.U2f + TwoFactorProviderTypeEntity.Remember -> TwoFactorProviderType.Remember + TwoFactorProviderTypeEntity.OrganizationDuo -> TwoFactorProviderType.OrganizationDuo + TwoFactorProviderTypeEntity.Fido2WebAuthn -> TwoFactorProviderType.Fido2WebAuthn +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/UriMatchTypeEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/UriMatchTypeEntity.kt new file mode 100644 index 00000000..beec6a79 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/UriMatchTypeEntity.kt @@ -0,0 +1,44 @@ +package com.artemchep.keyguard.provider.bitwarden.entity + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.provider.bitwarden.entity.serializer.CommonEnumIntSerializer +import com.artemchep.keyguard.provider.bitwarden.entity.serializer.IntEnum +import kotlinx.serialization.Serializable + +@Serializable(UriMatchTypeEntitySerializer::class) +enum class UriMatchTypeEntity( + override val int: Int, +) : IntEnum { + Domain(0), + Host(1), + StartsWith(2), + Exact(3), + RegularExpression(4), + Never(5), + ; + + companion object +} + +object UriMatchTypeEntitySerializer : + CommonEnumIntSerializer(UriMatchTypeEntity::class) + +fun UriMatchTypeEntity.Companion.of( + model: BitwardenCipher.Login.Uri.MatchType, +) = when (model) { + BitwardenCipher.Login.Uri.MatchType.Domain -> UriMatchTypeEntity.Domain + BitwardenCipher.Login.Uri.MatchType.Host -> UriMatchTypeEntity.Host + BitwardenCipher.Login.Uri.MatchType.StartsWith -> UriMatchTypeEntity.StartsWith + BitwardenCipher.Login.Uri.MatchType.Exact -> UriMatchTypeEntity.Exact + BitwardenCipher.Login.Uri.MatchType.RegularExpression -> UriMatchTypeEntity.RegularExpression + BitwardenCipher.Login.Uri.MatchType.Never -> UriMatchTypeEntity.Never +} + +fun UriMatchTypeEntity.domain() = when (this) { + UriMatchTypeEntity.Domain -> BitwardenCipher.Login.Uri.MatchType.Domain + UriMatchTypeEntity.Host -> BitwardenCipher.Login.Uri.MatchType.Host + UriMatchTypeEntity.StartsWith -> BitwardenCipher.Login.Uri.MatchType.StartsWith + UriMatchTypeEntity.Exact -> BitwardenCipher.Login.Uri.MatchType.Exact + UriMatchTypeEntity.RegularExpression -> BitwardenCipher.Login.Uri.MatchType.RegularExpression + UriMatchTypeEntity.Never -> BitwardenCipher.Login.Uri.MatchType.Never +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/api/FieldApi.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/api/FieldApi.kt new file mode 100644 index 00000000..16305251 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/api/FieldApi.kt @@ -0,0 +1,38 @@ +package com.artemchep.keyguard.provider.bitwarden.entity.api + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.provider.bitwarden.entity.FieldTypeEntity +import com.artemchep.keyguard.provider.bitwarden.entity.LinkedIdTypeEntity +import com.artemchep.keyguard.provider.bitwarden.entity.of +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class FieldApi( + @SerialName("type") + val type: FieldTypeEntity, + @SerialName("name") + val name: String?, + @SerialName("value") + val value: String?, + @SerialName("linkedId") + val linkedId: LinkedIdTypeEntity?, +) { + companion object +} + +fun FieldApi.Companion.of( + model: BitwardenCipher.Field, +) = kotlin.run { + val type = FieldTypeEntity.of(model.type) + val linkedId = model.linkedId + ?.let { + LinkedIdTypeEntity.of(it) + } + FieldApi( + type = type, + name = model.name, + value = model.value, + linkedId = linkedId, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/api/IdentityRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/api/IdentityRequest.kt new file mode 100644 index 00000000..ed01abc5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/api/IdentityRequest.kt @@ -0,0 +1,72 @@ +package com.artemchep.keyguard.provider.bitwarden.entity.api + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class IdentityRequest( + @SerialName("title") + val title: String?, + @SerialName("firstName") + val firstName: String?, + @SerialName("middleName") + val middleName: String?, + @SerialName("lastName") + val lastName: String?, + @SerialName("address1") + val address1: String?, + @SerialName("address2") + val address2: String?, + @SerialName("address3") + val address3: String?, + @SerialName("city") + val city: String?, + @SerialName("state") + val state: String?, + @SerialName("postalCode") + val postalCode: String?, + @SerialName("country") + val country: String?, + @SerialName("company") + val company: String?, + @SerialName("email") + val email: String?, + @SerialName("phone") + val phone: String?, + @SerialName("ssn") + val ssn: String?, + @SerialName("username") + val username: String?, + @SerialName("passportNumber") + val passportNumber: String?, + @SerialName("licenseNumber") + val licenseNumber: String?, +) { + companion object +} + +fun IdentityRequest.Companion.of( + model: BitwardenCipher.Identity, +) = kotlin.run { + IdentityRequest( + title = model.title, + firstName = model.firstName, + middleName = model.middleName, + lastName = model.lastName, + address1 = model.address1, + address2 = model.address2, + address3 = model.address3, + city = model.city, + state = model.state, + postalCode = model.postalCode, + country = model.country, + company = model.company, + email = model.email, + phone = model.phone, + ssn = model.ssn, + username = model.username, + passportNumber = model.passportNumber, + licenseNumber = model.licenseNumber, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/api/LoginFido2CredentialsRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/api/LoginFido2CredentialsRequest.kt new file mode 100644 index 00000000..f034bfa5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/api/LoginFido2CredentialsRequest.kt @@ -0,0 +1,58 @@ +package com.artemchep.keyguard.provider.bitwarden.entity.api + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import kotlinx.datetime.Instant +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class LoginFido2CredentialsRequest( + @SerialName("credentialId") + val credentialId: String? = null, + @SerialName("keyType") + val keyType: String, + @SerialName("keyAlgorithm") + val keyAlgorithm: String, + @SerialName("keyCurve") + val keyCurve: String, + @SerialName("keyValue") + val keyValue: String, + @SerialName("rpId") + val rpId: String, + @SerialName("rpName") + val rpName: String, + @SerialName("counter") + val counter: String, + @SerialName("userHandle") + val userHandle: String, + @SerialName("userName") + val userName: String?, + @SerialName("userDisplayName") + val userDisplayName: String?, + @SerialName("discoverable") + val discoverable: String, + @SerialName("creationDate") + val creationDate: Instant, +) { + companion object +} + +fun LoginFido2CredentialsRequest.Companion.of( + model: BitwardenCipher.Login.Fido2Credentials, +) = kotlin.run { + LoginFido2CredentialsRequest( + credentialId = model.credentialId, + keyType = model.keyType, + keyAlgorithm = model.keyAlgorithm, + keyCurve = model.keyCurve, + keyValue = model.keyValue, + rpId = model.rpId, + rpName = model.rpName, + counter = model.counter, + userHandle = model.userHandle, + userName = model.userName, + userDisplayName = model.userDisplayName, + discoverable = model.discoverable, + creationDate = model.creationDate, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/api/LoginRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/api/LoginRequest.kt new file mode 100644 index 00000000..2a12b1fe --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/api/LoginRequest.kt @@ -0,0 +1,43 @@ +package com.artemchep.keyguard.provider.bitwarden.entity.api + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import kotlinx.datetime.Instant +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class LoginRequest( + @SerialName("fido2Credentials") + val fido2Credentials: List, + @SerialName("uris") + val uris: List, + @SerialName("username") + val username: String?, + @SerialName("password") + val password: String?, + @SerialName("passwordRevisionDate") + val passwordRevisionDate: Instant?, + @SerialName("totp") + val totp: String?, +) { + companion object +} + +fun LoginRequest.Companion.of( + model: BitwardenCipher.Login, +) = kotlin.run { + val fido2CredentialsRequests = model + .fido2Credentials + .map(LoginFido2CredentialsRequest::of) + val urisRequests = model + .uris + .map(LoginUriRequest::of) + LoginRequest( + fido2Credentials = fido2CredentialsRequests, + uris = urisRequests, + username = model.username, + password = model.password, + passwordRevisionDate = model.passwordRevisionDate, + totp = model.totp, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/api/LoginUriRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/api/LoginUriRequest.kt new file mode 100644 index 00000000..4176bb72 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/api/LoginUriRequest.kt @@ -0,0 +1,26 @@ +package com.artemchep.keyguard.provider.bitwarden.entity.api + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.provider.bitwarden.entity.UriMatchTypeEntity +import com.artemchep.keyguard.provider.bitwarden.entity.of +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class LoginUriRequest( + @SerialName("uri") + val uri: String, + @SerialName("match") + val match: UriMatchTypeEntity?, +) { + companion object +} + +fun LoginUriRequest.Companion.of( + model: BitwardenCipher.Login.Uri, +) = kotlin.run { + LoginUriRequest( + uri = model.uri.orEmpty(), + match = model.match?.let(UriMatchTypeEntity::of), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/api/SecureNoteRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/api/SecureNoteRequest.kt new file mode 100644 index 00000000..9ba41e77 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/api/SecureNoteRequest.kt @@ -0,0 +1,21 @@ +package com.artemchep.keyguard.provider.bitwarden.entity.api + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.provider.bitwarden.entity.SecureNoteTypeEntity +import com.artemchep.keyguard.provider.bitwarden.entity.of +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class SecureNoteRequest( + @SerialName("type") + val type: SecureNoteTypeEntity, +) + +fun SecureNoteRequest.Companion.of( + model: BitwardenCipher.SecureNote, +) = kotlin.run { + SecureNoteRequest( + type = model.type.let(SecureNoteTypeEntity::of), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/api/SendFileApi.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/api/SendFileApi.kt new file mode 100644 index 00000000..1e60fdd8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/api/SendFileApi.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.provider.bitwarden.entity.api + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class SendFileApi( + @SerialName("id") + val id: String, + @SerialName("fileName") + val fileName: String, + @SerialName("key") + val key: String, + @SerialName("size") + val size: String, + @SerialName("sizeName") + val sizeName: String, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/api/SendTextApi.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/api/SendTextApi.kt new file mode 100644 index 00000000..ea42d657 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/api/SendTextApi.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.provider.bitwarden.entity.api + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class SendTextApi( + @SerialName("text") + val text: String, + @SerialName("hidden") + val hidden: Boolean, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/AttachmentRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/AttachmentRequest.kt new file mode 100644 index 00000000..e651719e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/AttachmentRequest.kt @@ -0,0 +1,25 @@ +package com.artemchep.keyguard.provider.bitwarden.entity.request + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class AttachmentRequest( + @SerialName("fileName") + val fileName: String, + @SerialName("key") + val key: String, +// @SerialName("fileSize") +// val fileSize: Long, +) + +fun AttachmentRequest.Companion.of( + model: BitwardenCipher.Attachment.Remote, +) = kotlin.run { + AttachmentRequest( + fileName = model.fileName, + key = model.keyBase64, +// fileSize = model.size, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/CardRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/CardRequest.kt new file mode 100644 index 00000000..e9e49c1b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/CardRequest.kt @@ -0,0 +1,36 @@ +package com.artemchep.keyguard.provider.bitwarden.entity.request + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class CardRequest( + @SerialName("cardholderName") + val cardholderName: String?, + @SerialName("brand") + val brand: String?, + @SerialName("number") + val number: String?, + @SerialName("expMonth") + val expMonth: String?, + @SerialName("expYear") + val expYear: String?, + @SerialName("code") + val code: String?, +) { + companion object +} + +fun CardRequest.Companion.of( + model: BitwardenCipher.Card, +) = kotlin.run { + CardRequest( + cardholderName = model.cardholderName, + brand = model.brand, + number = model.number, + expMonth = model.expMonth, + expYear = model.expYear, + code = model.code, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/CipherCollectionsRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/CipherCollectionsRequest.kt new file mode 100644 index 00000000..7592b32d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/CipherCollectionsRequest.kt @@ -0,0 +1,10 @@ +package com.artemchep.keyguard.provider.bitwarden.entity.request + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class CipherCollectionsRequest( + @SerialName("collectionIds") + val collectionIds: List, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/CipherCreateRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/CipherCreateRequest.kt new file mode 100644 index 00000000..034e1595 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/CipherCreateRequest.kt @@ -0,0 +1,26 @@ +package com.artemchep.keyguard.provider.bitwarden.entity.request + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class CipherCreateRequest( + @SerialName("cipher") + val cipher: CipherRequest, + @SerialName("collectionIds") + val collectionIds: Set, +) + +fun CipherCreateRequest.Companion.of( + model: BitwardenCipher, + folders: Map, +) = kotlin.run { + CipherCreateRequest( + cipher = CipherRequest.of( + model = model, + folders = folders, + ), + collectionIds = model.collectionIds, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/CipherRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/CipherRequest.kt new file mode 100644 index 00000000..2c900e11 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/CipherRequest.kt @@ -0,0 +1,117 @@ +package com.artemchep.keyguard.provider.bitwarden.entity.request + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.provider.bitwarden.entity.CipherRepromptTypeEntity +import com.artemchep.keyguard.provider.bitwarden.entity.CipherTypeEntity +import com.artemchep.keyguard.provider.bitwarden.entity.api.FieldApi +import com.artemchep.keyguard.provider.bitwarden.entity.api.IdentityRequest +import com.artemchep.keyguard.provider.bitwarden.entity.api.LoginRequest +import com.artemchep.keyguard.provider.bitwarden.entity.api.SecureNoteRequest +import com.artemchep.keyguard.provider.bitwarden.entity.api.of +import com.artemchep.keyguard.provider.bitwarden.entity.of +import kotlinx.datetime.Instant +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class CipherRequest( + @SerialName("type") + val type: CipherTypeEntity, + @SerialName("organizationId") + val organizationId: String?, + @SerialName("folderId") + val folderId: String?, + @SerialName("name") + val name: String?, + @SerialName("notes") + val notes: String?, + @SerialName("favorite") + val favorite: Boolean, + @SerialName("login") + val login: LoginRequest?, + @SerialName("secureNote") + val secureNote: SecureNoteRequest?, + @SerialName("card") + val card: CardRequest?, + @SerialName("identity") + val identity: IdentityRequest?, + @SerialName("fields") + val fields: List?, + @SerialName("passwordHistory") + val passwordHistory: List?, + @SerialName("attachments") + val attachments: Map?, + @SerialName("attachments2") + val attachments2: Map?, + @SerialName("lastKnownRevisionDate") + val lastKnownRevisionDate: Instant?, + @SerialName("reprompt") + val reprompt: CipherRepromptTypeEntity, +) { + companion object +} + +fun CipherRequest.Companion.of( + model: BitwardenCipher, + folders: Map, +) = kotlin.run { + val type = CipherTypeEntity.of(model.type) + val reprompt = CipherRepromptTypeEntity.of(model.reprompt) + val login = model.login + ?.let { login -> + LoginRequest.of(login) + } + val secureNote = model.secureNote + ?.let(SecureNoteRequest::of) + val card = model.card + ?.let(CardRequest::of) + val identity = model.identity + ?.let(IdentityRequest::of) + val fields = model.fields + .map { field -> + FieldApi.of(field) + } + .takeUnless { it.isEmpty() } + val passwordHistory = model.login?.passwordHistory.orEmpty() + .map { passwordHistory -> + PasswordHistoryRequest.of(passwordHistory) + } + .takeUnless { it.isEmpty() } + val (attachments, attachments2) = kotlin.run { + val tmp = model.attachments + .mapNotNull { it as? BitwardenCipher.Attachment.Remote } + .associateBy { it.id } + if (tmp.isEmpty()) { + return@run null to null + } + val attachments = tmp + .mapValues { it.value.fileName } + val attachments2 = tmp + .mapValues { + AttachmentRequest.of(it.value) + } + attachments to attachments2 + } + + CipherRequest( + type = type, + organizationId = model.organizationId, + folderId = model.folderId + // Folders might not include the folder id of this cipher, and + // that could be cause because the folder was deleted. + ?.let { folders[it] }, + name = model.name, + notes = model.notes, + favorite = model.favorite, + login = login, + secureNote = secureNote, + card = card, + identity = identity, + fields = fields, + passwordHistory = passwordHistory, + attachments = attachments, + attachments2 = attachments2, + lastKnownRevisionDate = model.service.remote?.revisionDate, + reprompt = reprompt, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/CipherShareRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/CipherShareRequest.kt new file mode 100644 index 00000000..fe912991 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/CipherShareRequest.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.provider.bitwarden.entity.request + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class CipherShareRequest( + @SerialName("cipher") + val cipher: CipherRequest, + @SerialName("collectionIds") + val collectionIds: List, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/CipherUpdate.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/CipherUpdate.kt new file mode 100644 index 00000000..d2fc927b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/CipherUpdate.kt @@ -0,0 +1,62 @@ +package com.artemchep.keyguard.provider.bitwarden.entity.request + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher + +sealed interface CipherUpdate { + companion object; + + val source: BitwardenCipher + + data class Modify( + override val source: BitwardenCipher, + val cipherId: String, + val cipherRequest: CipherRequest, + ) : CipherUpdate + + data class Create( + override val source: BitwardenCipher, + val cipherRequest: CipherRequest, + ) : CipherUpdate + + data class CreateInOrg( + override val source: BitwardenCipher, + val cipherRequest: CipherCreateRequest, + ) : CipherUpdate +} + +fun CipherUpdate.Companion.of( + model: BitwardenCipher, + folders: Map, +) = when { + model.service.remote != null -> { + CipherUpdate.Modify( + source = model, + cipherId = model.service.remote.id, + cipherRequest = CipherRequest.of( + model = model, + folders = folders, + ), + ) + } + // Remote ID does not exist, therefore the items has not yet + // been created on remote. + model.organizationId != null -> { + CipherUpdate.CreateInOrg( + source = model, + cipherRequest = CipherCreateRequest.of( + model = model, + folders = folders, + ), + ) + } + + else -> { + CipherUpdate.Create( + source = model, + cipherRequest = CipherRequest.of( + model = model, + folders = folders, + ), + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/DeleteAccountRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/DeleteAccountRequest.kt new file mode 100644 index 00000000..5a842c53 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/DeleteAccountRequest.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.provider.bitwarden.entity.request + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class DeleteAccountRequest( + @SerialName("masterPasswordHash") + val masterPasswordHash: String, + @SerialName("otp") + val otp: String? = null, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/FolderRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/FolderRequest.kt new file mode 100644 index 00000000..a2ea9e15 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/FolderRequest.kt @@ -0,0 +1,19 @@ +package com.artemchep.keyguard.provider.bitwarden.entity.request + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenFolder +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class FolderRequest( + @SerialName("name") + val name: String, +) + +fun FolderRequest.Companion.of( + model: BitwardenFolder, +) = kotlin.run { + FolderRequest( + name = model.name, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/FolderUpdate.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/FolderUpdate.kt new file mode 100644 index 00000000..b4120390 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/FolderUpdate.kt @@ -0,0 +1,43 @@ +package com.artemchep.keyguard.provider.bitwarden.entity.request + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenFolder + +sealed interface FolderUpdate { + companion object; + + val source: BitwardenFolder + + data class Modify( + override val source: BitwardenFolder, + val folderId: String, + val folderRequest: FolderRequest, + ) : FolderUpdate + + data class Create( + override val source: BitwardenFolder, + val folderRequest: FolderRequest, + ) : FolderUpdate +} + +fun FolderUpdate.Companion.of( + model: BitwardenFolder, +) = when { + model.service.remote != null -> kotlin.run { + FolderUpdate.Modify( + source = model, + folderId = model.service.remote.id, + folderRequest = FolderRequest.of( + model = model, + ), + ) + } + + else -> { + FolderUpdate.Create( + source = model, + folderRequest = FolderRequest.of( + model = model, + ), + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/PasswordHistoryRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/PasswordHistoryRequest.kt new file mode 100644 index 00000000..808f4370 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/PasswordHistoryRequest.kt @@ -0,0 +1,23 @@ +package com.artemchep.keyguard.provider.bitwarden.entity.request + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import kotlinx.datetime.Instant +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class PasswordHistoryRequest( + @SerialName("password") + val password: String, + @SerialName("lastUsedDate") + val lastUsedDate: Instant, +) + +fun PasswordHistoryRequest.Companion.of( + model: BitwardenCipher.Login.PasswordHistory, +) = kotlin.run { + PasswordHistoryRequest( + password = model.password, + lastUsedDate = model.lastUsedDate, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/SendRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/SendRequest.kt new file mode 100644 index 00000000..523ad412 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/SendRequest.kt @@ -0,0 +1,59 @@ +package com.artemchep.keyguard.provider.bitwarden.entity.request + +import com.artemchep.keyguard.provider.bitwarden.entity.SendTypeEntity +import kotlinx.datetime.Instant +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class SendRequest( + @SerialName("type") + val type: SendTypeEntity, + @SerialName("name") + val name: String, + @SerialName("notes") + val notes: String?, + @SerialName("password") + val password: String? = null, + @SerialName("disabled") + val disabled: Boolean, + /** + * `true` to hide the email of the author of the + * send, `false` otherwise. + */ + @SerialName("hideEmail") + val hideEmail: Boolean, + @SerialName("deletionDate") + val deletionDate: Instant, + @SerialName("expirationDate") + val expirationDate: Instant?, + @SerialName("maxAccessCount") + val maxAccessCount: Int?, + @SerialName("text") + val text: SendTextRequest?, + @SerialName("file") + val file: SendFileRequest?, +) + +@Serializable +data class SendTextRequest( + @SerialName("name") + val name: String, + @SerialName("notes") + val notes: String, + @SerialName("password") + val password: String? = null, + val type: SendTypeEntity, +) + + +@Serializable +data class SendFileRequest( + @SerialName("name") + val name: String, + @SerialName("notes") + val notes: String, + @SerialName("password") + val password: String? = null, + val type: SendTypeEntity, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/serializer/CommonEnumIntSerializer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/serializer/CommonEnumIntSerializer.kt new file mode 100644 index 00000000..8da1c4d5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/serializer/CommonEnumIntSerializer.kt @@ -0,0 +1,33 @@ +package com.artemchep.keyguard.provider.bitwarden.entity.serializer + +import kotlinx.serialization.KSerializer +import kotlinx.serialization.builtins.serializer +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder +import kotlin.reflect.KClass + +interface IntEnum { + val int: Int +} + +open class CommonEnumIntSerializer( + clazz: KClass, +) : KSerializer where T : Enum, T : IntEnum { + override val descriptor = Int.serializer().descriptor + + private val choices = clazz.java.enumConstants!! + + init { + val uniqueChoices = choices.distinctBy { it.int } + require(uniqueChoices.size == choices.size) + } + + final override fun serialize(encoder: Encoder, value: T) { + encoder.encodeInt(value.int) + } + + final override fun deserialize(decoder: Decoder): T { + val value = decoder.decodeInt() + return choices.first { it.int == value } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/mapper/CipherMapping.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/mapper/CipherMapping.kt new file mode 100644 index 00000000..5f27bd32 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/mapper/CipherMapping.kt @@ -0,0 +1,223 @@ +package com.artemchep.keyguard.provider.bitwarden.mapper + +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.PasswordStrength +import com.artemchep.keyguard.common.model.TotpToken +import com.artemchep.keyguard.common.usecase.GetPasswordStrength +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher + +suspend fun BitwardenCipher.toDomain( + getPasswordStrength: GetPasswordStrength, +): DSecret { + val type: DSecret.Type = when (type) { + BitwardenCipher.Type.Login -> DSecret.Type.Login + BitwardenCipher.Type.SecureNote -> DSecret.Type.SecureNote + BitwardenCipher.Type.Card -> DSecret.Type.Card + BitwardenCipher.Type.Identity -> DSecret.Type.Identity + } + return DSecret( + id = cipherId, + accountId = accountId, + folderId = folderId, + organizationId = organizationId, + collectionIds = collectionIds, + revisionDate = revisionDate, + createdDate = createdDate, + deletedDate = deletedDate, + service = service, + // common + name = name.orEmpty(), + notes = notes.orEmpty(), + favorite = favorite, + reprompt = reprompt == BitwardenCipher.RepromptType.Password, + synced = !service.deleted && + revisionDate == service.remote?.revisionDate, + uris = login?.uris.orEmpty().map(BitwardenCipher.Login.Uri::toDomain), + fields = fields.map(BitwardenCipher.Field::toDomain), + attachments = attachments + .mapNotNull { attachment -> + when (attachment) { + is BitwardenCipher.Attachment.Remote -> { + val remoteCipherId = service.remote?.id + ?: return@mapNotNull null // must not happen + attachment.toDomain(remoteCipherId = remoteCipherId) + } + + is BitwardenCipher.Attachment.Local -> attachment.toDomain() + } + }, + // types + type = type, + login = login?.toDomain(getPasswordStrength), + card = card?.toDomain(), + identity = identity?.toDomain(), + ) +} + +fun BitwardenCipher.Login.Uri.toDomain() = DSecret.Uri( + uri = uri.orEmpty(), + match = match?.toDomain(), +) + +fun BitwardenCipher.Login.Uri.MatchType.toDomain() = when (this) { + BitwardenCipher.Login.Uri.MatchType.Domain -> DSecret.Uri.MatchType.Domain + BitwardenCipher.Login.Uri.MatchType.Host -> DSecret.Uri.MatchType.Host + BitwardenCipher.Login.Uri.MatchType.StartsWith -> DSecret.Uri.MatchType.StartsWith + BitwardenCipher.Login.Uri.MatchType.Exact -> DSecret.Uri.MatchType.Exact + BitwardenCipher.Login.Uri.MatchType.RegularExpression -> DSecret.Uri.MatchType.RegularExpression + BitwardenCipher.Login.Uri.MatchType.Never -> DSecret.Uri.MatchType.Never +} + +fun BitwardenCipher.Field.toDomain() = DSecret.Field( + name = name, + value = value, + type = type.toDomain(), + linkedId = linkedId?.toDomain(), +) + +fun BitwardenCipher.Field.Type.toDomain() = when (this) { + BitwardenCipher.Field.Type.Boolean -> DSecret.Field.Type.Boolean + BitwardenCipher.Field.Type.Text -> DSecret.Field.Type.Text + BitwardenCipher.Field.Type.Hidden -> DSecret.Field.Type.Hidden + BitwardenCipher.Field.Type.Linked -> DSecret.Field.Type.Linked +} + +fun BitwardenCipher.Field.LinkedId.toDomain() = when (this) { + BitwardenCipher.Field.LinkedId.Login_Username -> DSecret.Field.LinkedId.Login_Username + BitwardenCipher.Field.LinkedId.Login_Password -> DSecret.Field.LinkedId.Login_Password + BitwardenCipher.Field.LinkedId.Card_CardholderName -> DSecret.Field.LinkedId.Card_CardholderName + BitwardenCipher.Field.LinkedId.Card_ExpMonth -> DSecret.Field.LinkedId.Card_ExpMonth + BitwardenCipher.Field.LinkedId.Card_ExpYear -> DSecret.Field.LinkedId.Card_ExpYear + BitwardenCipher.Field.LinkedId.Card_Code -> DSecret.Field.LinkedId.Card_Code + BitwardenCipher.Field.LinkedId.Card_Brand -> DSecret.Field.LinkedId.Card_Brand + BitwardenCipher.Field.LinkedId.Card_Number -> DSecret.Field.LinkedId.Card_Number + BitwardenCipher.Field.LinkedId.Identity_Title -> DSecret.Field.LinkedId.Identity_Title + BitwardenCipher.Field.LinkedId.Identity_MiddleName -> DSecret.Field.LinkedId.Identity_MiddleName + BitwardenCipher.Field.LinkedId.Identity_Address1 -> DSecret.Field.LinkedId.Identity_Address1 + BitwardenCipher.Field.LinkedId.Identity_Address2 -> DSecret.Field.LinkedId.Identity_Address2 + BitwardenCipher.Field.LinkedId.Identity_Address3 -> DSecret.Field.LinkedId.Identity_Address3 + BitwardenCipher.Field.LinkedId.Identity_City -> DSecret.Field.LinkedId.Identity_City + BitwardenCipher.Field.LinkedId.Identity_State -> DSecret.Field.LinkedId.Identity_State + BitwardenCipher.Field.LinkedId.Identity_PostalCode -> DSecret.Field.LinkedId.Identity_PostalCode + BitwardenCipher.Field.LinkedId.Identity_Country -> DSecret.Field.LinkedId.Identity_Country + BitwardenCipher.Field.LinkedId.Identity_Company -> DSecret.Field.LinkedId.Identity_Company + BitwardenCipher.Field.LinkedId.Identity_Email -> DSecret.Field.LinkedId.Identity_Email + BitwardenCipher.Field.LinkedId.Identity_Phone -> DSecret.Field.LinkedId.Identity_Phone + BitwardenCipher.Field.LinkedId.Identity_Ssn -> DSecret.Field.LinkedId.Identity_Ssn + BitwardenCipher.Field.LinkedId.Identity_Username -> DSecret.Field.LinkedId.Identity_Username + BitwardenCipher.Field.LinkedId.Identity_PassportNumber -> DSecret.Field.LinkedId.Identity_PassportNumber + BitwardenCipher.Field.LinkedId.Identity_LicenseNumber -> DSecret.Field.LinkedId.Identity_LicenseNumber + BitwardenCipher.Field.LinkedId.Identity_FirstName -> DSecret.Field.LinkedId.Identity_FirstName + BitwardenCipher.Field.LinkedId.Identity_LastName -> DSecret.Field.LinkedId.Identity_LastName + BitwardenCipher.Field.LinkedId.Identity_FullName -> DSecret.Field.LinkedId.Identity_FullName +} + +fun BitwardenCipher.Attachment.Remote.toDomain( + remoteCipherId: String, +) = DSecret.Attachment.Remote( + id = id, + remoteCipherId = remoteCipherId, + url = url, + fileName = fileName, + keyBase64 = keyBase64, + size = size, +) + +fun BitwardenCipher.Attachment.Local.toDomain() = DSecret.Attachment.Local( + id = id, + url = url, + fileName = fileName, + size = size, +) + +suspend fun BitwardenCipher.Login.toDomain( + getPasswordStrength: GetPasswordStrength, +) = DSecret.Login( + username = username, + password = password, + passwordStrength = passwordStrength?.toDomain() ?: password?.let { + getPasswordStrength(it).attempt().bind().getOrNull() + }, + passwordRevisionDate = passwordRevisionDate, + passwordHistory = passwordHistory.map(BitwardenCipher.Login.PasswordHistory::toDomain), + totp = totp + ?.let { raw -> + TotpToken + .parse(raw) + .map { token -> + DSecret.Login.Totp( + raw = raw, + token = token, + ) + } + .getOrNull() + }, + fido2Credentials = fido2Credentials + .map { credentials -> + val counter = credentials.counter + .toIntOrNull() + val discoverable = credentials.discoverable.toBoolean() + DSecret.Login.Fido2Credentials( + credentialId = credentials.credentialId + // It should never be empty, as it doesn't really make sense. + // An empty credential ID should not be accepted by the server. + .orEmpty(), + keyType = credentials.keyType, + keyAlgorithm = credentials.keyAlgorithm, + keyCurve = credentials.keyCurve, + keyValue = credentials.keyValue, + rpId = credentials.rpId, + rpName = credentials.rpName, + counter = counter, + userHandle = credentials.userHandle, + userName = credentials.userName, + userDisplayName = credentials.userDisplayName, + discoverable = discoverable, + creationDate = credentials.creationDate, + ) + }, +) + +fun BitwardenCipher.Login.PasswordHistory.toDomain() = DSecret.Login.PasswordHistory( + password = password, + lastUsedDate = lastUsedDate, +) + +fun BitwardenCipher.Login.PasswordStrength.toDomain() = PasswordStrength( + crackTimeSeconds = crackTimeSeconds, + version = version, +) + +fun BitwardenCipher.Card.toDomain() = DSecret.Card( + cardholderName = cardholderName.oh(), + brand = brand.oh(), + number = number.oh(), + expMonth = expMonth.oh(), + expYear = expYear.oh(), + code = code.oh(), +) + +fun BitwardenCipher.Identity.toDomain() = DSecret.Identity( + title = title.oh(), + firstName = firstName.oh(), + middleName = middleName.oh(), + lastName = lastName.oh(), + address1 = address1.oh(), + address2 = address2.oh(), + address3 = address3.oh(), + city = city.oh(), + state = state.oh(), + postalCode = postalCode.oh(), + country = country.oh(), + company = company.oh(), + email = email.oh(), + phone = phone.oh(), + ssn = ssn.oh(), + username = username.oh(), + passportNumber = passportNumber.oh(), + licenseNumber = licenseNumber.oh(), +) + +private fun String?.oh() = this?.takeIf { it.isNotBlank() } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/mapper/CollectionMapping.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/mapper/CollectionMapping.kt new file mode 100644 index 00000000..2798bba9 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/mapper/CollectionMapping.kt @@ -0,0 +1,16 @@ +package com.artemchep.keyguard.provider.bitwarden.mapper + +import com.artemchep.keyguard.common.model.DCollection +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCollection + +fun BitwardenCollection.toDomain(): DCollection { + return DCollection( + id = collectionId, + organizationId = organizationId, + accountId = accountId, + revisionDate = revisionDate, + name = name, + readOnly = readOnly, + hidePasswords = hidePasswords, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/mapper/FolderMapping.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/mapper/FolderMapping.kt new file mode 100644 index 00000000..4804deb6 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/mapper/FolderMapping.kt @@ -0,0 +1,17 @@ +package com.artemchep.keyguard.provider.bitwarden.mapper + +import com.artemchep.keyguard.common.model.DFolder +import com.artemchep.keyguard.core.store.bitwarden.BitwardenFolder + +fun BitwardenFolder.toDomain(): DFolder { + return DFolder( + id = folderId, + accountId = accountId, + revisionDate = revisionDate, + service = service, + name = name, + deleted = service.deleted, + synced = !service.deleted && + revisionDate == service.remote?.revisionDate, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/mapper/MetaMapping.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/mapper/MetaMapping.kt new file mode 100644 index 00000000..cf8ba92d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/mapper/MetaMapping.kt @@ -0,0 +1,22 @@ +package com.artemchep.keyguard.provider.bitwarden.mapper + +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.model.DMeta +import com.artemchep.keyguard.core.store.bitwarden.BitwardenMeta + +fun BitwardenMeta.toDomain(): DMeta = DMeta( + accountId = AccountId(accountId), + lastSyncTimestamp = lastSyncTimestamp, + lastSyncResult = lastSyncResult?.toDomain(), +) + +private fun BitwardenMeta.LastSyncResult.toDomain(): DMeta.LastSyncResult = when (this) { + is BitwardenMeta.LastSyncResult.Failure -> + DMeta.LastSyncResult.Failure( + timestamp = timestamp, + reason = reason, + requiresAuthentication = requiresAuthentication, + ) + + is BitwardenMeta.LastSyncResult.Success -> DMeta.LastSyncResult.Success +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/mapper/OrganizationMapping.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/mapper/OrganizationMapping.kt new file mode 100644 index 00000000..f53c99e8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/mapper/OrganizationMapping.kt @@ -0,0 +1,44 @@ +package com.artemchep.keyguard.provider.bitwarden.mapper + +import androidx.compose.ui.graphics.Color +import com.artemchep.keyguard.common.model.DOrganization +import com.artemchep.keyguard.common.util.RGBToHSL +import com.artemchep.keyguard.common.util.toColorInt +import com.artemchep.keyguard.core.store.bitwarden.BitwardenOrganization +import com.artemchep.keyguard.ui.icons.generateAccentColors + +fun BitwardenOrganization.toDomain(): DOrganization { + val accentColor = run { + val avatarColor = runCatching { + avatarColor + ?.toColorInt() + ?.let(::Color) + ?.let { color -> + val hsl = FloatArray(3) + RGBToHSL( + rf = color.red, + gf = color.green, + bf = color.blue, + outHsl = hsl, + ) + generateAccentColors( + hue = hsl[0], + ) + } + }.getOrNull() + avatarColor + ?: run { + val colors = generateAccentColors(organizationId) + colors + } + } + return DOrganization( + id = organizationId, + accountId = accountId, + revisionDate = revisionDate, + keyBase64 = keyBase64, + name = name, + accentColor = accentColor, + selfHost = selfHost, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/mapper/ProfileMapping.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/mapper/ProfileMapping.kt new file mode 100644 index 00000000..446b3353 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/mapper/ProfileMapping.kt @@ -0,0 +1,55 @@ +package com.artemchep.keyguard.provider.bitwarden.mapper + +import androidx.compose.ui.graphics.Color +import com.artemchep.keyguard.common.model.DProfile +import com.artemchep.keyguard.common.util.RGBToHSL +import com.artemchep.keyguard.common.util.toColorInt +import com.artemchep.keyguard.core.store.bitwarden.BitwardenProfile +import com.artemchep.keyguard.ui.icons.generateAccentColors + +fun BitwardenProfile.toDomain( + accountHost: String, + accountUrl: String, +): DProfile { + val accentColor = run { + val avatarColor = runCatching { + avatarColor + ?.toColorInt() + ?.let(::Color) + ?.let { color -> + val hsl = FloatArray(3) + RGBToHSL( + rf = color.red, + gf = color.green, + bf = color.blue, + outHsl = hsl, + ) + generateAccentColors( + hue = hsl[0], + ) + } + }.getOrNull() + avatarColor + ?: run { + val colors = generateAccentColors(profileId) + colors + } + } + return DProfile( + accountId = accountId, + profileId = profileId, + email = email, + emailVerified = emailVerified, + keyBase64 = keyBase64, + privateKeyBase64 = privateKeyBase64, + accentColor = accentColor, + accountHost = accountHost, + accountUrl = accountUrl, + name = name, + premium = premium, + securityStamp = securityStamp, + twoFactorEnabled = twoFactorEnabled, + masterPasswordHint = masterPasswordHint, + unofficialServer = unofficialServer, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/mapper/SendMapping.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/mapper/SendMapping.kt new file mode 100644 index 00000000..f173192e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/mapper/SendMapping.kt @@ -0,0 +1,48 @@ +package com.artemchep.keyguard.provider.bitwarden.mapper + +import com.artemchep.keyguard.common.model.DSend +import com.artemchep.keyguard.core.store.bitwarden.BitwardenSend + +suspend fun BitwardenSend.toDomain( +): DSend { + val type: DSend.Type = when (type) { + BitwardenSend.Type.None -> DSend.Type.None + BitwardenSend.Type.Text -> DSend.Type.Text + BitwardenSend.Type.File -> DSend.Type.File + } + return DSend( + id = sendId, + accountId = accountId, + accessId = accessId, + keyBase64 = keyBase64, + revisionDate = revisionDate, + createdDate = createdDate, + deletedDate = deletedDate, + expirationDate = expirationDate, + service = service, + // common + name = name.orEmpty(), + notes = notes.orEmpty(), + accessCount = accessCount, + maxAccessCount = maxAccessCount, + disabled = disabled, + hideEmail = hideEmail ?: false, + password = password, + // types + type = type, + text = text?.toDomain(), + file = file?.toDomain(), + ) +} + +fun BitwardenSend.Text.toDomain() = DSend.Text( + text = text, + hidden = hidden, +) + +fun BitwardenSend.File.toDomain() = DSend.File( + id = id, + fileName = fileName, + keyBase64 = keyBase64, + size = size, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/mapper/TokenMapping.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/mapper/TokenMapping.kt new file mode 100644 index 00000000..9fb116eb --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/mapper/TokenMapping.kt @@ -0,0 +1,22 @@ +package com.artemchep.keyguard.provider.bitwarden.mapper + +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.model.DAccount +import com.artemchep.keyguard.core.store.bitwarden.BitwardenToken +import com.artemchep.keyguard.provider.bitwarden.api.builder.buildHost +import com.artemchep.keyguard.provider.bitwarden.api.builder.buildIconsRequestUrl +import com.artemchep.keyguard.provider.bitwarden.api.builder.buildWebVaultUrl + +fun BitwardenToken.toDomain(): DAccount { + val environment = env.back() + return DAccount( + id = AccountId(id), + username = user.email, + host = environment.buildHost(), + url = environment.buildWebVaultUrl(), + faviconServer = { domain -> + environment + .buildIconsRequestUrl(domain) + }, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/model/LastSyncStatus.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/model/LastSyncStatus.kt new file mode 100644 index 00000000..aafc75e5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/model/LastSyncStatus.kt @@ -0,0 +1,10 @@ +package com.artemchep.keyguard.provider.bitwarden.model + +import kotlinx.datetime.Instant +import kotlinx.serialization.Serializable + +@Serializable +data class LastSyncStatus( + val accountId: String, + val timestamp: Instant, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/model/Login.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/model/Login.kt new file mode 100644 index 00000000..0abf4242 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/model/Login.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.provider.bitwarden.model + +import kotlinx.datetime.Instant + +data class Login( + val accessToken: String, + val accessTokenType: String, + val accessTokenExpiryDate: Instant, + val refreshToken: String, + val scope: String?, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/model/PasswordResult.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/model/PasswordResult.kt new file mode 100644 index 00000000..6d96ed82 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/model/PasswordResult.kt @@ -0,0 +1,30 @@ +package com.artemchep.keyguard.provider.bitwarden.model + +data class PasswordResult( + val masterKey: ByteArray, + val passwordKey: ByteArray, + val encryptionKey: ByteArray, + val macKey: ByteArray, +) { + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as PasswordResult + + if (!masterKey.contentEquals(other.masterKey)) return false + if (!passwordKey.contentEquals(other.passwordKey)) return false + if (!encryptionKey.contentEquals(other.encryptionKey)) return false + if (!macKey.contentEquals(other.macKey)) return false + + return true + } + + override fun hashCode(): Int { + var result = masterKey.contentHashCode() + result = 31 * result + passwordKey.contentHashCode() + result = 31 * result + encryptionKey.contentHashCode() + result = 31 * result + macKey.contentHashCode() + return result + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/model/PreLogin.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/model/PreLogin.kt new file mode 100644 index 00000000..07099207 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/model/PreLogin.kt @@ -0,0 +1,26 @@ +package com.artemchep.keyguard.provider.bitwarden.model + +data class PreLogin( + val hash: Hash, +) { + sealed interface Hash { + data class Pbkdf2( + val iterationsCount: Int, + ) : Hash { + init { + require(iterationsCount > 0) + } + } + + data class Argon2id( + val iterationsCount: Int, + val memoryMb: Int, + val parallelism: Int, + ) : Hash { + init { + require(iterationsCount > 0) + require(memoryMb > 0) + } + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/model/TwoFactorProvider.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/model/TwoFactorProvider.kt new file mode 100644 index 00000000..25185c3a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/model/TwoFactorProvider.kt @@ -0,0 +1,62 @@ +package com.artemchep.keyguard.provider.bitwarden.model + +import com.artemchep.keyguard.platform.CurrentPlatform +import com.artemchep.keyguard.platform.Platform +import com.artemchep.keyguard.res.Res +import dev.icerock.moko.resources.StringResource + +data class TwoFactorProvider( + val type: TwoFactorProviderType, + val name: StringResource, + val priority: Int, + val supported: Boolean = false, +) { + companion object { + val state = mapOf( + TwoFactorProviderType.Authenticator to TwoFactorProvider( + type = TwoFactorProviderType.Authenticator, + name = Res.strings.provider_2fa_authenticator, + priority = 10, + supported = true, + ), + TwoFactorProviderType.YubiKey to TwoFactorProvider( + type = TwoFactorProviderType.YubiKey, + name = Res.strings.provider_2fa_yubikey, + priority = 30, + supported = true, + ), + TwoFactorProviderType.Duo to TwoFactorProvider( + type = TwoFactorProviderType.Duo, + name = Res.strings.provider_2fa_duo, + priority = 20, + supported = CurrentPlatform is Platform.Mobile, + ), + TwoFactorProviderType.OrganizationDuo to TwoFactorProvider( + type = TwoFactorProviderType.OrganizationDuo, + name = Res.strings.provider_2fa_duo_organization, + priority = 21, + supported = CurrentPlatform is Platform.Mobile, + ), + TwoFactorProviderType.Fido2WebAuthn to TwoFactorProvider( + type = TwoFactorProviderType.Fido2WebAuthn, + name = Res.strings.provider_2fa_fido2_webauthn, + priority = 50, + supported = CurrentPlatform is Platform.Mobile, + ), + TwoFactorProviderType.Email to TwoFactorProvider( + type = TwoFactorProviderType.Email, + name = Res.strings.provider_2fa_email, + priority = 0, + supported = true, + ), + // As far as I understand the U2f is replaced by the Fido2WebAuthn + // provider. Therefore most likely this is never going to be implemented. + TwoFactorProviderType.U2f to TwoFactorProvider( + type = TwoFactorProviderType.U2f, + name = Res.strings.provider_2fa_fido_u2f, + priority = 40, + supported = false, + ), + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/model/TwoFactorProviderArgument.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/model/TwoFactorProviderArgument.kt new file mode 100644 index 00000000..43f2f607 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/model/TwoFactorProviderArgument.kt @@ -0,0 +1,49 @@ +package com.artemchep.keyguard.provider.bitwarden.model + +import kotlinx.serialization.json.JsonElement + +sealed interface TwoFactorProviderArgument { + val type: TwoFactorProviderType + + data object Authenticator : TwoFactorProviderArgument { + override val type get() = TwoFactorProviderType.Authenticator + } + + data class Email( + val email: String? = null, + ) : TwoFactorProviderArgument { + override val type get() = TwoFactorProviderType.Email + } + + data class Duo( + val host: String? = null, + val signature: String? = null, + ) : TwoFactorProviderArgument { + override val type get() = TwoFactorProviderType.Duo + } + + data object YubiKey : TwoFactorProviderArgument { + override val type get() = TwoFactorProviderType.YubiKey + } + + data object U2f : TwoFactorProviderArgument { + override val type get() = TwoFactorProviderType.U2f + } + + data object Remember : TwoFactorProviderArgument { + override val type get() = TwoFactorProviderType.Remember + } + + data class OrganizationDuo( + val host: String? = null, + val signature: String? = null, + ) : TwoFactorProviderArgument { + override val type get() = TwoFactorProviderType.OrganizationDuo + } + + data class Fido2WebAuthn( + val json: JsonElement? = null, + ) : TwoFactorProviderArgument { + override val type get() = TwoFactorProviderType.Fido2WebAuthn + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/model/TwoFactorProviderType.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/model/TwoFactorProviderType.kt new file mode 100644 index 00000000..ca035b6f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/model/TwoFactorProviderType.kt @@ -0,0 +1,25 @@ +package com.artemchep.keyguard.provider.bitwarden.model + +enum class TwoFactorProviderType { + Unknown, + Authenticator, + Email, + Duo, + YubiKey, + U2f, + Remember, + OrganizationDuo, + Fido2WebAuthn, +} + +fun TwoFactorProviderType.toObj(): TwoFactorProviderArgument? = when (this) { + TwoFactorProviderType.Unknown -> null + TwoFactorProviderType.Authenticator -> TwoFactorProviderArgument.Authenticator + TwoFactorProviderType.Email -> TwoFactorProviderArgument.Email() + TwoFactorProviderType.Duo -> TwoFactorProviderArgument.Duo() + TwoFactorProviderType.YubiKey -> TwoFactorProviderArgument.YubiKey + TwoFactorProviderType.U2f -> TwoFactorProviderArgument.U2f + TwoFactorProviderType.Remember -> TwoFactorProviderArgument.Remember + TwoFactorProviderType.OrganizationDuo -> TwoFactorProviderArgument.OrganizationDuo() + TwoFactorProviderType.Fido2WebAuthn -> TwoFactorProviderArgument.Fido2WebAuthn() +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BaseRepository.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BaseRepository.kt new file mode 100644 index 00000000..49ee8961 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BaseRepository.kt @@ -0,0 +1,17 @@ +package com.artemchep.keyguard.provider.bitwarden.repository + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.toIO +import kotlinx.coroutines.flow.Flow + +interface BaseRepository { + fun get(): Flow> + + /** + * Returns the first state of the + * data. + */ + fun getSnapshot(): IO> = get().toIO() + + fun put(model: T): IO +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BitwardenCipherRepository.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BitwardenCipherRepository.kt new file mode 100644 index 00000000..6f4668ce --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BitwardenCipherRepository.kt @@ -0,0 +1,8 @@ +package com.artemchep.keyguard.provider.bitwarden.repository + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher + +interface BitwardenCipherRepository : BaseRepository { + fun getById(id: String): IO +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BitwardenCollectionRepository.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BitwardenCollectionRepository.kt new file mode 100644 index 00000000..85cb04be --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BitwardenCollectionRepository.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.provider.bitwarden.repository + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCollection + +interface BitwardenCollectionRepository : BaseRepository diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BitwardenFolderRepository.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BitwardenFolderRepository.kt new file mode 100644 index 00000000..ecbf1543 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BitwardenFolderRepository.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.provider.bitwarden.repository + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenFolder + +interface BitwardenFolderRepository : BaseRepository diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BitwardenMetaRepository.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BitwardenMetaRepository.kt new file mode 100644 index 00000000..39dbd411 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BitwardenMetaRepository.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.provider.bitwarden.repository + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenMeta + +interface BitwardenMetaRepository : BaseRepository diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BitwardenOrganizationRepository.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BitwardenOrganizationRepository.kt new file mode 100644 index 00000000..412690dc --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BitwardenOrganizationRepository.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.provider.bitwarden.repository + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.core.store.bitwarden.BitwardenOrganization + +interface BitwardenOrganizationRepository : BaseRepository { + fun getByAccountId(id: AccountId): IO> +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BitwardenProfileRepository.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BitwardenProfileRepository.kt new file mode 100644 index 00000000..3de584b5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BitwardenProfileRepository.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.provider.bitwarden.repository + +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.core.store.bitwarden.BitwardenProfile +import kotlinx.coroutines.flow.Flow + +interface BitwardenProfileRepository : BaseRepository { + fun getById(id: AccountId): Flow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BitwardenSendRepository.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BitwardenSendRepository.kt new file mode 100644 index 00000000..b9475006 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BitwardenSendRepository.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.provider.bitwarden.repository + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenSend + +interface BitwardenSendRepository : BaseRepository { +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BitwardenTokenRepository.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BitwardenTokenRepository.kt new file mode 100644 index 00000000..edba9c62 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/repository/BitwardenTokenRepository.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.provider.bitwarden.repository + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.core.store.bitwarden.BitwardenToken + +interface BitwardenTokenRepository : BaseRepository { + fun getById(id: AccountId): IO +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/sync/SyncManager.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/sync/SyncManager.kt new file mode 100644 index 00000000..9222266d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/sync/SyncManager.kt @@ -0,0 +1,203 @@ +package com.artemchep.keyguard.provider.bitwarden.sync + +import com.artemchep.keyguard.common.util.millis +import com.artemchep.keyguard.core.store.bitwarden.BitwardenService +import com.artemchep.keyguard.core.store.bitwarden.canRetry +import kotlinx.datetime.Instant +import kotlin.math.roundToLong + +class SyncManager, Remote : Any>( + private val local: LensLocal, + private val remote: Lens, +) { + class Lens( + val getId: (T) -> String, + val getRevisionDate: (T) -> Instant, + val getDeletedDate: (T) -> Instant? = { null }, + ) + + class LensLocal( + val getLocalId: (T) -> String, + val getLocalRevisionDate: (T) -> Instant, + val getLocalDeletedDate: (T) -> Instant? = { null }, + ) + + data class Df( + // Delete items + val remoteDeletedCipherIds: List>, + val localDeletedCipherIds: List>, + // Put items + val remotePutCipher: List>, + val localPutCipher: List>, + ) { + data class Ite( + val local: Local, + val remote: Remote, + ) + } + + private fun getDate(model: Remote) = getDate( + revisionDate = remote.getRevisionDate(model), + deletedDate = remote.getDeletedDate(model), + ) + + private fun getDate(model: Local) = getDate( + revisionDate = local.getLocalRevisionDate(model), + deletedDate = local.getLocalDeletedDate(model), + ) + + private fun getDate( + revisionDate: Instant, + deletedDate: Instant?, + ) = deletedDate?.let(revisionDate::coerceAtLeast) + ?: revisionDate + + /** + * Calculates the difference between local and remote + * representations of a server, allowing you to easily sync + * them with each other. + */ + fun df( + localItems: Collection, + remoteItems: Collection, + shouldOverwrite: (Local, Remote) -> Boolean, + ): Df { + // Delete items + val remoteDeletedCipherIds = mutableListOf>() + val localDeletedCipherIds = mutableListOf>() + // Put items + val remotePutCipher = mutableListOf>() + val localPutCipher = mutableListOf>() + + val localItemsGrouped = localItems + .groupBy { + it.service.remote != null + } + val localItemsNew = localItemsGrouped + .getOrDefault(false, emptyList()) // no remote + val localItemsExistingByRemoteId = localItemsGrouped + .getOrDefault(true, emptyList()) // remote + .asSequence() + .map { localItem -> + val id = requireNotNull(localItem.service.remote?.id) + id to localItem + } + .toMap(mutableMapOf()) + + remoteItems.forEach { remoteItem -> + val remoteItemId = remote.getId(remoteItem) + val localItem = localItemsExistingByRemoteId + .remove(remoteItemId) + if (localItem != null) { + // TODO: Replace it with a migration mechanism + if (localItem.service.version < BitwardenService.VERSION) { + localPutCipher += Df.Ite(localItem, remoteItem) + return@forEach + } + + // FIXME: After we create something, the date is + // -- + // 2022-09-21T14:04:33.1819975Z + // -- + // but after we get the same entry using the sync + // API the revision date is some-why rounded to: + // -- + // 2022-09-21T14:04:33.1833333Z + // -- + // for now we round the revision date to + // -- + // 2022-09-21T14:04:33.18 + // -- + fun Instant.roundToMillis() = millis.toDouble().div(100.0).roundToLong() + + val localRemoteRevDate = kotlin.run { + val date = getDate( + revisionDate = localItem.service.remote?.revisionDate + ?: Instant.DISTANT_PAST, + deletedDate = localItem.service.remote?.deletedDate, + ) + date.roundToMillis() + } + // If the local item has outdated remote revision, then it must + // be updated and any of its changes are going to be discarded. + // + // Why: + // This is needed to resolve a conflict where you edit one item + // on multiple devices simultaneously. + val remoteRevDate = getDate(remoteItem).roundToMillis() + if (remoteRevDate != localRemoteRevDate) { + localPutCipher += Df.Ite(localItem, remoteItem) + return@forEach + } + + val diff = kotlin.run { + val localRevDate = getDate(localItem).roundToMillis() + localRevDate.compareTo(remoteRevDate) + } + when { + diff < 0 -> localPutCipher += Df.Ite(localItem, remoteItem) + diff > 0 -> { + if (localItem.service.deleted) { + remoteDeletedCipherIds += Df.Ite(localItem, remoteItem) + } else { + val error = localItem.service.error + val revisionDate = getDate(localItem) + if (error?.canRetry(revisionDate) != false) { + remotePutCipher += Df.Ite(localItem, remoteItem) + } + } + } + + else -> { + // Date rounding error can happen because Bitwarden rounds the + // revision date. We can not safely resolve this issue, so just + // fall back to the remote item. + val dateRoundingError = getDate(remoteItem) != getDate(localItem) + if (dateRoundingError || localItem.service.error != null) { + localPutCipher += Df.Ite(localItem, remoteItem) + } else { + val hasChanged = shouldOverwrite(localItem, remoteItem) + if (hasChanged) { + localPutCipher += Df.Ite(localItem, remoteItem) + } else { + // Up to date. + } + } + } + } + } else { + localPutCipher += Df.Ite(null, remoteItem) + } + } + + // The item has remote id, but the remote items + // do not have it -- therefore it has deleted on remote. + localDeletedCipherIds += localItemsExistingByRemoteId + .map { (_, localItem) -> + Df.Ite(localItem, null) + } + + // + // Handle new items + // + + localItemsNew.forEach { localItem -> + if (localItem.service.deleted) { + localDeletedCipherIds += Df.Ite(localItem, null) + } else { + val error = localItem.service.error + val revisionDate = getDate(localItem) + if (error?.canRetry(revisionDate) != false) { + remotePutCipher += Df.Ite(localItem, null) + } + } + } + + return Df( + remoteDeletedCipherIds = remoteDeletedCipherIds, + localDeletedCipherIds = localDeletedCipherIds, + remotePutCipher = remotePutCipher, + localPutCipher = localPutCipher, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/AddCipher.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/AddCipher.kt new file mode 100644 index 00000000..35260bef --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/AddCipher.kt @@ -0,0 +1,557 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.combine +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.io.flatMap +import com.artemchep.keyguard.common.io.io +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.create.CreateRequest +import com.artemchep.keyguard.common.service.crypto.CryptoGenerator +import com.artemchep.keyguard.common.usecase.AddCipher +import com.artemchep.keyguard.common.usecase.AddFolder +import com.artemchep.keyguard.common.usecase.GetPasswordStrength +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.core.store.bitwarden.BitwardenService +import com.artemchep.keyguard.feature.confirmation.organization.FolderInfo +import com.artemchep.keyguard.provider.bitwarden.usecase.util.ModifyDatabase +import kotlinx.collections.immutable.toPersistentList +import kotlinx.datetime.Clock +import kotlinx.datetime.Instant +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class AddCipherImpl( + private val modifyDatabase: ModifyDatabase, + private val addFolder: AddFolder, + private val cryptoGenerator: CryptoGenerator, + private val getPasswordStrength: GetPasswordStrength, +) : AddCipher { + companion object { + private const val TAG = "AddCipher.bitwarden" + + private const val FILES_DIR = "attachments_pending" + } + + constructor(directDI: DirectDI) : this( + modifyDatabase = directDI.instance(), + addFolder = directDI.instance(), + cryptoGenerator = directDI.instance(), + getPasswordStrength = directDI.instance(), + ) + + override fun invoke( + cipherIdsToRequests: Map, + ): IO> = ioEffect { + cipherIdsToRequests + .mapValues { (_, request) -> + copyLocalFilesToInternalStorageIo(request) + .bind() + } + .mapValues { (key, request) -> + val value = request.ownership2!! + val folderId = when (val folder = value.folder) { + is FolderInfo.None -> null + is FolderInfo.New -> { + val accountId = AccountId(value.accountId!!) + val rq = mapOf( + accountId to folder.name, + ) + val rs = addFolder(rq) + .bind() + rs.first() + } + + is FolderInfo.Id -> folder.id + } + val own = CreateRequest.Ownership( + accountId = value.accountId, + folderId = folderId, + organizationId = value.organizationId, + collectionIds = value.collectionIds, + ) + request.copy(ownership = own) + } + }.flatMap { map -> + modifyDatabase { database -> + val dao = database.cipherQueries + val now = Clock.System.now() + + val oldCiphersMap = map + .keys + .filterNotNull() + .mapNotNull { cipherId -> + dao + .getByCipherId(cipherId) + .executeAsOneOrNull() + } + .associateBy { it.cipherId } + + val models = map + .map { (cipherId, request) -> + val old = oldCiphersMap[cipherId]?.data_ + BitwardenCipher.of( + cryptoGenerator = cryptoGenerator, + getPasswordStrength = getPasswordStrength, + now = now, + request = request, + old = old, + ) + } + if (models.isEmpty()) { + return@modifyDatabase ModifyDatabase.Result( + changedAccountIds = emptySet(), + value = emptyList(), + ) + } + dao.transaction { + models.forEach { cipher -> + dao.insert( + cipherId = cipher.cipherId, + accountId = cipher.accountId, + folderId = cipher.folderId, + data = cipher, + ) + } + } + + val changedAccountIds = models + .map { AccountId(it.accountId) } + .toSet() + ModifyDatabase.Result( + changedAccountIds = changedAccountIds, + value = models + .map { it.cipherId }, + ) + } + } + + private fun copyLocalFilesToInternalStorageIo( + request: CreateRequest, + ): IO = request + .attachments + .mapNotNull { attachment -> + when (attachment) { + is CreateRequest.Attachment.Remote -> io(attachment) + is CreateRequest.Attachment.Local -> null +// copyLocalFileToInternalStorageIo(attachment.uri) +// .effectMap { file -> +// val uri = file.toUri() +// val size = attachment.size +// ?: withContext(Dispatchers.IO) { file.length() } +// attachment.copy( +// uri = uri, +// size = size, +// ) +// } + } + } + .combine(bucket = 2) + .effectMap { attachments -> + val list = attachments + .toPersistentList() + request.copy(attachments = list) + } + +// private fun copyLocalFileToInternalStorageIo( +// uri: Uri, +// ): IO = ioEffect(Dispatchers.IO) { +// val dstDir = context.filesDir.resolve("$FILES_DIR/") +// // If the URI points to a file, check if it is already in the +// // internal storage. +// if (uri.scheme == "file") { +// val srcFile = uri.toFile() +// +// // A parent directory must match the destination directory. +// val existsInDstDir = generateSequence(srcFile) { it.parentFile } +// .any { it == dstDir } +// if (existsInDstDir) { +// return@ioEffect srcFile +// } +// } +// +// val dstFileName = cryptoGenerator.uuid() + ".tmp" +// val dstFile = dstDir.resolve(dstFileName) +// // In case the dst folder does not exist. +// dstFile.parentFile?.mkdirs() +// +// // Copy source resource into the dst file. +// val srcInputStream = context.contentResolver.openInputStream(uri) +// requireNotNull(srcInputStream) { +// "The content provider has crashed, failed to access the resource!" +// } +// srcInputStream.use { input -> +// dstFile.outputStream().use { output -> +// input.copyTo(output) +// } +// } +// +// dstFile +// } +} + +private suspend fun BitwardenCipher.Companion.of( + cryptoGenerator: CryptoGenerator, + getPasswordStrength: GetPasswordStrength, + request: CreateRequest, + now: Instant, + old: BitwardenCipher? = null, +): BitwardenCipher { + val accountId = request.ownership?.accountId + val folderId = request.ownership?.folderId + val organizationId = request.ownership?.organizationId + val collectionIds = request.ownership?.collectionIds.orEmpty() + require(old?.service?.deleted != true) { + "Can not modify deleted cipher!" + } + requireNotNull(accountId) { "Cipher must have an account!" } + require(organizationId == null || collectionIds.isNotEmpty()) { + "When a cipher belongs to an organization, it must have at " + + "least one collection!" + } + + val favourite = request.favorite!! + val reprompt = when (request.reprompt!!) { + true -> BitwardenCipher.RepromptType.Password + false -> BitwardenCipher.RepromptType.None + } + val type = when (request.type) { + DSecret.Type.Login -> BitwardenCipher.Type.Login + DSecret.Type.SecureNote -> BitwardenCipher.Type.SecureNote + DSecret.Type.Card -> BitwardenCipher.Type.Card + DSecret.Type.Identity -> BitwardenCipher.Type.Identity + null, + DSecret.Type.None, + -> error("Cipher must have a type!") + } + + var login: BitwardenCipher.Login? = null + var secureNote: BitwardenCipher.SecureNote? = null + var card: BitwardenCipher.Card? = null + var identity: BitwardenCipher.Identity? = null + when (type) { + BitwardenCipher.Type.Login -> { + login = BitwardenCipher.Login.of( + getPasswordStrength = getPasswordStrength, + request = request, + now = now, + old = old, + ) + } + + BitwardenCipher.Type.SecureNote -> { + secureNote = BitwardenCipher.SecureNote.of( + request = request, + ) + } + + BitwardenCipher.Type.Card -> { + card = BitwardenCipher.Card.of( + request = request, + ) + } + + BitwardenCipher.Type.Identity -> { + identity = BitwardenCipher.Identity.of( + request = request, + ) + } + } + + val fields = request + .fields + .map { field -> + requireNotNull(field.name) + + val fieldType = when (field.type) { + DSecret.Field.Type.Text -> BitwardenCipher.Field.Type.Text + DSecret.Field.Type.Hidden -> BitwardenCipher.Field.Type.Hidden + DSecret.Field.Type.Boolean -> BitwardenCipher.Field.Type.Boolean + DSecret.Field.Type.Linked -> BitwardenCipher.Field.Type.Linked + } + when (fieldType) { + BitwardenCipher.Field.Type.Text, + BitwardenCipher.Field.Type.Hidden, + -> { + requireNotNull(field.value) + // no additional validation + } + + BitwardenCipher.Field.Type.Boolean -> { + requireNotNull(field.value) + // must be a valid boolean + field.value.toBooleanStrict() + } + + BitwardenCipher.Field.Type.Linked -> { + requireNotNull(field.linkedId) + } + } + BitwardenCipher.Field( + type = fieldType, + name = field.name, + value = field.value + ?.takeIf { + fieldType == BitwardenCipher.Field.Type.Text || + fieldType == BitwardenCipher.Field.Type.Hidden || + fieldType == BitwardenCipher.Field.Type.Boolean + }, + linkedId = field.linkedId + ?.takeIf { + fieldType == BitwardenCipher.Field.Type.Linked + } + ?.let(BitwardenCipher.Field.LinkedId::of), + ) + } + + val attachments = kotlin.run { + val existingAttachmentsMap = old?.attachments + .orEmpty() + .associateBy { it.id } + request + .attachments + .mapNotNull { attachment -> + val existingAttachment = existingAttachmentsMap[attachment.id] + val newAttachment: BitwardenCipher.Attachment? = when (attachment) { + is CreateRequest.Attachment.Remote -> { + // Remote attachment can not be created here, it can only + // be obtained from the remote server! + val out = existingAttachment as? BitwardenCipher.Attachment.Remote + out?.copy(fileName = attachment.name) + } + + is CreateRequest.Attachment.Local -> { + BitwardenCipher.Attachment.Local( + id = attachment.id, + url = attachment.uri.toString(), + fileName = attachment.name, + size = attachment.size, + ) + } + } + newAttachment + } + } + + val cipherId = old?.cipherId ?: cryptoGenerator.uuid() + val createdDate = old?.createdDate ?: request.now + val deletedDate = old?.deletedDate + return BitwardenCipher( + accountId = accountId, + cipherId = cipherId, + folderId = folderId, + organizationId = organizationId, + collectionIds = collectionIds, + revisionDate = now, + createdDate = createdDate, + deletedDate = deletedDate, + // service fields + service = BitwardenService( + remote = old?.service?.remote, + deleted = false, + version = BitwardenService.VERSION, + ), + // common + name = request.title, + notes = request.note, + favorite = favourite, + fields = fields, + attachments = attachments, + reprompt = reprompt, + // types + type = type, + login = login, + secureNote = secureNote, + card = card, + identity = identity, + ) +} + +private fun BitwardenCipher.Field.LinkedId.Companion.of( + linkedId: DSecret.Field.LinkedId, +) = when (linkedId) { + DSecret.Field.LinkedId.Login_Username -> BitwardenCipher.Field.LinkedId.Login_Username + DSecret.Field.LinkedId.Login_Password -> BitwardenCipher.Field.LinkedId.Login_Password + DSecret.Field.LinkedId.Card_CardholderName -> BitwardenCipher.Field.LinkedId.Card_CardholderName + DSecret.Field.LinkedId.Card_ExpMonth -> BitwardenCipher.Field.LinkedId.Card_ExpMonth + DSecret.Field.LinkedId.Card_ExpYear -> BitwardenCipher.Field.LinkedId.Card_ExpYear + DSecret.Field.LinkedId.Card_Code -> BitwardenCipher.Field.LinkedId.Card_Code + DSecret.Field.LinkedId.Card_Brand -> BitwardenCipher.Field.LinkedId.Card_Brand + DSecret.Field.LinkedId.Card_Number -> BitwardenCipher.Field.LinkedId.Card_Number + DSecret.Field.LinkedId.Identity_Title -> BitwardenCipher.Field.LinkedId.Identity_Title + DSecret.Field.LinkedId.Identity_MiddleName -> BitwardenCipher.Field.LinkedId.Identity_MiddleName + DSecret.Field.LinkedId.Identity_Address1 -> BitwardenCipher.Field.LinkedId.Identity_Address1 + DSecret.Field.LinkedId.Identity_Address2 -> BitwardenCipher.Field.LinkedId.Identity_Address2 + DSecret.Field.LinkedId.Identity_Address3 -> BitwardenCipher.Field.LinkedId.Identity_Address3 + DSecret.Field.LinkedId.Identity_City -> BitwardenCipher.Field.LinkedId.Identity_City + DSecret.Field.LinkedId.Identity_State -> BitwardenCipher.Field.LinkedId.Identity_State + DSecret.Field.LinkedId.Identity_PostalCode -> BitwardenCipher.Field.LinkedId.Identity_PostalCode + DSecret.Field.LinkedId.Identity_Country -> BitwardenCipher.Field.LinkedId.Identity_Country + DSecret.Field.LinkedId.Identity_Company -> BitwardenCipher.Field.LinkedId.Identity_Company + DSecret.Field.LinkedId.Identity_Email -> BitwardenCipher.Field.LinkedId.Identity_Email + DSecret.Field.LinkedId.Identity_Phone -> BitwardenCipher.Field.LinkedId.Identity_Phone + DSecret.Field.LinkedId.Identity_Ssn -> BitwardenCipher.Field.LinkedId.Identity_Ssn + DSecret.Field.LinkedId.Identity_Username -> BitwardenCipher.Field.LinkedId.Identity_Username + DSecret.Field.LinkedId.Identity_PassportNumber -> BitwardenCipher.Field.LinkedId.Identity_PassportNumber + DSecret.Field.LinkedId.Identity_LicenseNumber -> BitwardenCipher.Field.LinkedId.Identity_LicenseNumber + DSecret.Field.LinkedId.Identity_FirstName -> BitwardenCipher.Field.LinkedId.Identity_FirstName + DSecret.Field.LinkedId.Identity_LastName -> BitwardenCipher.Field.LinkedId.Identity_LastName + DSecret.Field.LinkedId.Identity_FullName -> BitwardenCipher.Field.LinkedId.Identity_FullName +} + +private suspend fun BitwardenCipher.Login.Companion.of( + getPasswordStrength: GetPasswordStrength, + request: CreateRequest, + now: Instant, + old: BitwardenCipher? = null, +): BitwardenCipher.Login { + val oldLogin = old?.login + + val username = request.login.username?.takeIf { it.isNotEmpty() } + val password = request.login.password?.takeIf { it.isNotEmpty() } + + val passwordHistory = if (oldLogin != null) { + val list = oldLogin.passwordHistory.toMutableList() + // The existing password was changed, so we should + // add the it one to the history. + if (password != oldLogin.password && oldLogin.password != null) { + list += BitwardenCipher.Login.PasswordHistory( + password = oldLogin.password, + lastUsedDate = now, + ) + } + list + } else { + emptyList() + } + val passwordRevisionDate = now + .takeIf { + // The password must be v2+ to have the revision date. + oldLogin != null && + oldLogin.password != password && + (oldLogin.passwordRevisionDate != null || oldLogin.password != null) + } + ?: oldLogin?.passwordRevisionDate + // Password revision date: + // When we edit or create an item with a password, we must set the + // passwords revision date. Otherwise you loose the info of when the + // password was created. + ?: (old?.revisionDate ?: now) + .takeIf { password != null } + val passwordStrength = password + ?.let { pwd -> + getPasswordStrength(pwd) + .map { ps -> + BitwardenCipher.Login.PasswordStrength( + password = pwd, + crackTimeSeconds = ps.crackTimeSeconds, + version = ps.version, + ) + } + }?.attempt()?.bind()?.getOrNull() + + val uris = request + .uris + .mapNotNull { uri -> + // Filter out urls that are empty + if (uri.uri.isEmpty()) { + return@mapNotNull null + } + + val match = uri.match + .takeUnless { it == DSecret.Uri.MatchType.default } + ?.let { + when (it) { + DSecret.Uri.MatchType.Domain -> BitwardenCipher.Login.Uri.MatchType.Domain + DSecret.Uri.MatchType.Host -> BitwardenCipher.Login.Uri.MatchType.Host + DSecret.Uri.MatchType.StartsWith -> BitwardenCipher.Login.Uri.MatchType.StartsWith + DSecret.Uri.MatchType.Exact -> BitwardenCipher.Login.Uri.MatchType.Exact + DSecret.Uri.MatchType.RegularExpression -> BitwardenCipher.Login.Uri.MatchType.RegularExpression + DSecret.Uri.MatchType.Never -> BitwardenCipher.Login.Uri.MatchType.Never + } + } + BitwardenCipher.Login.Uri( + uri = uri.uri, + match = match, + ) + } + val fido2Credentials = request + .fido2Credentials + .map { + BitwardenCipher.Login.Fido2Credentials( + credentialId = it.credentialId, + keyType = it.keyType, + keyAlgorithm = it.keyAlgorithm, + keyCurve = it.keyCurve, + keyValue = it.keyValue, + rpId = it.rpId, + rpName = it.rpName, + counter = it.counter?.toString() ?: "", + userHandle = it.userHandle, + userName = it.userName, + userDisplayName = it.userDisplayName, + discoverable = it.discoverable.toString(), + creationDate = it.creationDate, + ) + } + + val totp = request.login.totp?.takeIf { it.isNotEmpty() } + return BitwardenCipher.Login( + username = username, + password = password, + passwordStrength = passwordStrength, + passwordRevisionDate = passwordRevisionDate, + passwordHistory = passwordHistory, + uris = uris, + fido2Credentials = fido2Credentials, + totp = totp, + ) +} + +private suspend fun BitwardenCipher.SecureNote.Companion.of( + request: CreateRequest, +): BitwardenCipher.SecureNote = BitwardenCipher.SecureNote( + type = BitwardenCipher.SecureNote.Type.Generic, +) + +private suspend fun BitwardenCipher.Card.Companion.of( + request: CreateRequest, +): BitwardenCipher.Card = BitwardenCipher.Card( + cardholderName = request.card.cardholderName, + brand = request.card.brand, + number = request.card.number, + expMonth = request.card.expMonth, + expYear = request.card.expYear, + code = request.card.code, +) + +private suspend fun BitwardenCipher.Identity.Companion.of( + request: CreateRequest, +): BitwardenCipher.Identity = BitwardenCipher.Identity( + title = request.identity.title, + firstName = request.identity.firstName, + middleName = request.identity.middleName, + lastName = request.identity.lastName, + address1 = request.identity.address1, + address2 = request.identity.address2, + address3 = request.identity.address3, + city = request.identity.city, + state = request.identity.state, + postalCode = request.identity.postalCode, + country = request.identity.country, + company = request.identity.company, + email = request.identity.email, + phone = request.identity.phone, + ssn = request.identity.ssn, + username = request.identity.username, + passportNumber = request.identity.passportNumber, + licenseNumber = request.identity.licenseNumber, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/AddCipherOpenedHistoryImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/AddCipherOpenedHistoryImpl.kt new file mode 100644 index 00000000..14d19c7c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/AddCipherOpenedHistoryImpl.kt @@ -0,0 +1,26 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.model.AddCipherOpenedHistoryRequest +import com.artemchep.keyguard.common.model.CipherHistoryType +import com.artemchep.keyguard.common.usecase.AddCipherOpenedHistory +import com.artemchep.keyguard.core.store.DatabaseManager +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class AddCipherOpenedHistoryImpl( + private val db: DatabaseManager, +) : AddCipherOpenedHistory { + constructor(directDI: DirectDI) : this( + db = directDI.instance(), + ) + + override fun invoke(request: AddCipherOpenedHistoryRequest) = db + .mutate { + it.cipherUsageHistoryQueries.insert( + cipherId = request.cipherId, + credentialId = null, + type = CipherHistoryType.OPENED, + createdAt = request.instant, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/AddCipherPasskey.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/AddCipherPasskey.kt new file mode 100644 index 00000000..9077ba78 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/AddCipherPasskey.kt @@ -0,0 +1,76 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.flatten +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.model.AddPasskeyCipherRequest +import com.artemchep.keyguard.common.usecase.AddPasskeyCipher +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.provider.bitwarden.usecase.util.ModifyCipherById +import kotlinx.datetime.Clock +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class AddPasskeyCipherImpl( + private val modifyCipherById: ModifyCipherById, +) : AddPasskeyCipher { + companion object { + private const val TAG = "AddPasskeyCipher.bitwarden" + } + + constructor(directDI: DirectDI) : this( + modifyCipherById = directDI.instance(), + ) + + override fun invoke( + request: AddPasskeyCipherRequest, + ): IO = ioEffect { + val createdAt = Clock.System.now() + modifyCipherById( + setOf(request.cipherId), + ) { model -> + var new = model + + val oldUris = model.data_.login?.fido2Credentials.orEmpty() + val newUris = kotlin.run { + val passkey = BitwardenCipher.Login.Fido2Credentials( + credentialId = request.data.credentialId, + keyType = request.data.keyType, + keyAlgorithm = request.data.keyAlgorithm, + keyCurve = request.data.keyCurve, + keyValue = request.data.keyValue, + rpId = request.data.rpId, + rpName = request.data.rpName, + counter = request.data.counter?.toString().orEmpty(), + userHandle = request.data.userHandle, + userName = request.data.userName, + userDisplayName = request.data.userDisplayName, + discoverable = request.data.discoverable.toString(), + creationDate = createdAt, + ) + listOf(passkey) + } + if (newUris.isEmpty()) { + return@modifyCipherById new + } + new = new.copy( + data_ = new.data_.copy( + login = new.data_.login?.copy( + fido2Credentials = oldUris + newUris, + ), + ), + ) + new + } + // Report that we have actually modified the + // ciphers. + .map { changedCipherIds -> + request.cipherId in changedCipherIds + } + } + .flatten() +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/AddCipherUri.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/AddCipherUri.kt new file mode 100644 index 00000000..4172efac --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/AddCipherUri.kt @@ -0,0 +1,183 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.effectTap +import com.artemchep.keyguard.common.io.flatten +import com.artemchep.keyguard.common.io.io +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.model.AddUriCipherRequest +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.usecase.AddUriCipher +import com.artemchep.keyguard.common.usecase.CipherUrlDuplicateCheck +import com.artemchep.keyguard.common.usecase.GetAutofillSaveUri +import com.artemchep.keyguard.common.usecase.isEmpty +import com.artemchep.keyguard.common.util.Browsers +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.provider.bitwarden.mapper.toDomain +import com.artemchep.keyguard.provider.bitwarden.usecase.util.ModifyCipherById +import kotlinx.coroutines.flow.first +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class AddUriCipherImpl( + private val modifyCipherById: ModifyCipherById, + private val cipherUrlDuplicateCheck: CipherUrlDuplicateCheck, + private val getAutofillSaveUri: GetAutofillSaveUri, +) : AddUriCipher { + companion object { + private const val TAG = "AddUriCipher.bitwarden" + } + + constructor(directDI: DirectDI) : this( + modifyCipherById = directDI.instance(), + cipherUrlDuplicateCheck = directDI.instance(), + getAutofillSaveUri = directDI.instance(), + ) + + override fun invoke( + request: AddUriCipherRequest, + ): IO = ioEffect { + if (request.isEmpty()) { + return@ioEffect io(false) + } + // Check if the option to save uris is actually + // enabled. + val shouldSave = getAutofillSaveUri().first() + if (!shouldSave) { + return@ioEffect io(false) + } + + modifyCipherById( + setOf(request.cipherId), + ) { model -> + var new = model + + val oldUris = model.data_.login?.uris.orEmpty() + val oldUrisDomain = oldUris + .map { uri -> + uri.toDomain() + } + val newUris = autofill1( + // we do not want to add browsers to + // list of uris + applicationId = request.applicationId + ?.takeIf { + it !in Browsers + } + ?.takeIf { + request.webDomain == null || + request.webView == true + }, + webDomain = request.webDomain, + webScheme = request.webScheme, + ) + .filter { newUri -> + val newUriDomain = newUri.toDomain() + oldUrisDomain + .none { oldUriDomain -> + val isDuplicate = cipherUrlDuplicateCheck(oldUriDomain, newUriDomain) + .attempt() + .bind() + .isRight { it != null } + isDuplicate + } + } + if (newUris.isEmpty()) { + return@modifyCipherById new + } + new = new.copy( + data_ = new.data_.copy( + login = new.data_.login?.copy( + uris = oldUris + newUris, + ), + ), + ) + new + } + // Report that we have actually modified the + // ciphers. + .map { changedCipherIds -> + request.cipherId in changedCipherIds + } + } + .flatten() + .effectTap { changed -> + // TODO: Fix me!!! +// if (changed) { +// Toast +// .makeText(context, "Added the URI to the item", Toast.LENGTH_SHORT) +// .show() +// } + } +} + +fun List.autofill( + applicationId: String? = null, + webDomain: String? = null, + webScheme: String? = null, +): List { + val existingUris = this + .toMutableList() + // If the application we autofill for does not + // exist there, we append it. + if (applicationId != null) { + val androidAppUri = "androidapp://$applicationId" + val androidAppUriExists = existingUris.any { it.uri == androidAppUri } + if (!androidAppUriExists) { + existingUris += DSecret.Uri( + uri = androidAppUri, + match = DSecret.Uri.MatchType.default, + ) + } + } + // If the web url we autofill for does not + // exist there, we append it. + if (webDomain != null) { + val webUriExists = existingUris.any { it.uri.contains(webDomain) } + if (!webUriExists) { + val webPrefix = webScheme?.let { "$it://" }.orEmpty() + val webUri = "$webPrefix$webDomain" + existingUris += DSecret.Uri( + uri = webUri, + match = DSecret.Uri.MatchType.default, + ) + } + } + + return existingUris +} + +fun autofill1( + applicationId: String? = null, + webDomain: String? = null, + webScheme: String? = null, +): List { + val uris = mutableListOf() + // If the application we autofill for does not + // exist there, we append it. + if (applicationId != null) { + val androidAppUri = "androidapp://$applicationId" + uris += BitwardenCipher.Login.Uri( + uri = androidAppUri, + match = BitwardenCipher.Login.Uri.MatchType.Domain, + ) + } + // If the web url we autofill for does not + // exist there, we append it. + if (webDomain != null) { + val webPrefix = webScheme?.let { "$it://" }.orEmpty() + val webUri = "$webPrefix$webDomain" + uris += BitwardenCipher.Login.Uri( + uri = webUri, + match = null, + ) + } + + return uris +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/AddCipherUsedAutofillHistoryImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/AddCipherUsedAutofillHistoryImpl.kt new file mode 100644 index 00000000..12e0061f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/AddCipherUsedAutofillHistoryImpl.kt @@ -0,0 +1,26 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.model.AddCipherOpenedHistoryRequest +import com.artemchep.keyguard.common.model.CipherHistoryType +import com.artemchep.keyguard.common.usecase.AddCipherUsedAutofillHistory +import com.artemchep.keyguard.core.store.DatabaseManager +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class AddCipherUsedAutofillHistoryImpl( + private val db: DatabaseManager, +) : AddCipherUsedAutofillHistory { + constructor(directDI: DirectDI) : this( + db = directDI.instance(), + ) + + override fun invoke(request: AddCipherOpenedHistoryRequest) = db + .mutate { + it.cipherUsageHistoryQueries.insert( + cipherId = request.cipherId, + credentialId = null, + type = CipherHistoryType.USED_AUTOFILL, + createdAt = request.instant, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/AddCipherUsedPasskeyHistoryImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/AddCipherUsedPasskeyHistoryImpl.kt new file mode 100644 index 00000000..166df7cd --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/AddCipherUsedPasskeyHistoryImpl.kt @@ -0,0 +1,26 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.model.AddCipherUsedPasskeyHistoryRequest +import com.artemchep.keyguard.common.model.CipherHistoryType +import com.artemchep.keyguard.common.usecase.AddCipherUsedPasskeyHistory +import com.artemchep.keyguard.core.store.DatabaseManager +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class AddCipherUsedPasskeyHistoryImpl( + private val db: DatabaseManager, +) : AddCipherUsedPasskeyHistory { + constructor(directDI: DirectDI) : this( + db = directDI.instance(), + ) + + override fun invoke(request: AddCipherUsedPasskeyHistoryRequest) = db + .mutate { + it.cipherUsageHistoryQueries.insert( + cipherId = request.cipherId, + credentialId = request.credentialId, + type = CipherHistoryType.USED_PASSKEY, + createdAt = request.instant, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/AddFolder.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/AddFolder.kt new file mode 100644 index 00000000..fcefb2f3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/AddFolder.kt @@ -0,0 +1,76 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.service.crypto.CryptoGenerator +import com.artemchep.keyguard.common.usecase.AddFolder +import com.artemchep.keyguard.core.store.bitwarden.BitwardenFolder +import com.artemchep.keyguard.core.store.bitwarden.BitwardenService +import com.artemchep.keyguard.provider.bitwarden.usecase.util.ModifyDatabase +import kotlinx.datetime.Clock +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class AddFolderImpl( + private val modifyDatabase: ModifyDatabase, + private val cryptoGenerator: CryptoGenerator, +) : AddFolder { + companion object { + private const val TAG = "AddFolder.bitwarden" + } + + constructor(directDI: DirectDI) : this( + modifyDatabase = directDI.instance(), + cryptoGenerator = directDI.instance(), + ) + + override fun invoke( + accountIdsToNames: Map, + ): IO> = modifyDatabase { database -> + val dao = database.folderQueries + val now = Clock.System.now() + + val models = accountIdsToNames + .map { (accountId, name) -> + val folderId = cryptoGenerator.uuid() + BitwardenFolder( + accountId = accountId.id, + folderId = folderId, + revisionDate = now, + name = name, + service = BitwardenService( + version = BitwardenService.VERSION, + ), + ) + } + if (models.isEmpty()) { + return@modifyDatabase ModifyDatabase.Result( + changedAccountIds = emptySet(), + value = emptySet(), + ) + } + dao.transaction { + models.forEach { folder -> + dao.insert( + folderId = folder.folderId, + accountId = folder.accountId, + data = folder, + ) + } + } + + val changedAccountIds = models + .map { AccountId(it.accountId) } + .toSet() + ModifyDatabase.Result( + changedAccountIds = changedAccountIds, + // pass the set of folder ids back + value = models + .map { it.folderId } + .toSet(), + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherNameById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherNameById.kt new file mode 100644 index 00000000..32ddb8a6 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherNameById.kt @@ -0,0 +1,39 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.usecase.ChangeCipherNameById +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.core.store.bitwarden.name +import com.artemchep.keyguard.provider.bitwarden.usecase.util.ModifyCipherById +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class ChangeCipherNameByIdImpl( + private val modifyCipherById: ModifyCipherById, +) : ChangeCipherNameById { + companion object { + private const val TAG = "ChangeCipherNameById.bitwarden" + } + + constructor(directDI: DirectDI) : this( + modifyCipherById = directDI.instance(), + ) + + override fun invoke( + cipherIdsToNames: Map, + ): IO = modifyCipherById( + cipherIdsToNames + .keys, + ) { model -> + val name = cipherIdsToNames.getValue(model.cipherId) + var new = model + new = new.copy( + data_ = BitwardenCipher.name.set(new.data_, name), + ) + new + }.map { Unit } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherPasswordById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherPasswordById.kt new file mode 100644 index 00000000..671f4622 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/ChangeCipherPasswordById.kt @@ -0,0 +1,94 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.flatMap +import com.artemchep.keyguard.common.io.ioUnit +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.usecase.ChangeCipherPasswordById +import com.artemchep.keyguard.common.usecase.GetPasswordStrength +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.core.store.bitwarden.login +import com.artemchep.keyguard.provider.bitwarden.usecase.util.ModifyCipherById +import kotlinx.datetime.Clock +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class ChangeCipherPasswordByIdImpl( + private val modifyCipherById: ModifyCipherById, + private val getPasswordStrength: GetPasswordStrength, +) : ChangeCipherPasswordById { + companion object { + private const val TAG = "ChangeCipherPasswordById.bitwarden" + } + + constructor(directDI: DirectDI) : this( + modifyCipherById = directDI.instance(), + getPasswordStrength = directDI.instance(), + ) + + override fun invoke( + cipherIdsToPasswords: Map, + ): IO = ioUnit() + .flatMap { + val now = Clock.System.now() + modifyCipherById( + cipherIdsToPasswords + .keys, + ) { model -> + val password = cipherIdsToPasswords.getValue(model.cipherId) + // so we can clear password + .takeUnless { it.isEmpty() } + val passwordStrength = password + ?.let { pwd -> + getPasswordStrength(pwd) + .map { ps -> + BitwardenCipher.Login.PasswordStrength( + password = pwd, + crackTimeSeconds = ps.crackTimeSeconds, + version = ps.version, + ) + } + }?.attempt()?.bind()?.getOrNull() + + var new = model + val data = BitwardenCipher.login.modify(new.data_) { login -> + val passwordHistory = kotlin.run { + val list = login.passwordHistory.toMutableList() + // The existing password was changed, so we should + // add the it one to the history. + if (password != login.password && login.password != null) { + list += BitwardenCipher.Login.PasswordHistory( + password = login.password, + lastUsedDate = now, + ) + } + list + } + + val passwordRevisionDate = now + .takeIf { + // The password must be v2+ to have the revision date. + password != login.password && + (login.passwordRevisionDate != null || login.password != null) + } + ?: login.passwordRevisionDate + + login.copy( + password = password, + passwordHistory = passwordHistory, + passwordRevisionDate = passwordRevisionDate, + passwordStrength = passwordStrength, + ) + } + new = new.copy( + data_ = data, + ) + new + } + }.map { Unit } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CheckPasswordLeakImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CheckPasswordLeakImpl.kt new file mode 100644 index 00000000..286e9064 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CheckPasswordLeakImpl.kt @@ -0,0 +1,32 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.model.CheckPasswordLeakRequest +import com.artemchep.keyguard.common.service.hibp.passwords.PasswordPwnageRepository +import com.artemchep.keyguard.common.usecase.CheckPasswordLeak +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class CheckPasswordLeakImpl( + private val passwordPwnageRepository: PasswordPwnageRepository, +) : CheckPasswordLeak { + constructor(directDI: DirectDI) : this( + passwordPwnageRepository = directDI.instance(), + ) + + override fun invoke( + request: CheckPasswordLeakRequest, + ): IO = passwordPwnageRepository + .checkOne( + password = request.password, + cache = request.cache, + ) + .map { + it.occurrences + } + +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CheckPasswordSetLeakImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CheckPasswordSetLeakImpl.kt new file mode 100644 index 00000000..6849c30e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CheckPasswordSetLeakImpl.kt @@ -0,0 +1,28 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.CheckPasswordSetLeakRequest +import com.artemchep.keyguard.common.model.PasswordPwnage +import com.artemchep.keyguard.common.service.hibp.passwords.PasswordPwnageRepository +import com.artemchep.keyguard.common.usecase.CheckPasswordSetLeak +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class CheckPasswordSetLeakImpl( + private val passwordPwnageRepository: PasswordPwnageRepository, +) : CheckPasswordSetLeak { + constructor(directDI: DirectDI) : this( + passwordPwnageRepository = directDI.instance(), + ) + + override fun invoke( + request: CheckPasswordSetLeakRequest, + ): IO> = passwordPwnageRepository + .checkMany( + passwords = request.passwords, + cache = request.cache, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CheckUsernameLeakImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CheckUsernameLeakImpl.kt new file mode 100644 index 00000000..e6bf9292 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CheckUsernameLeakImpl.kt @@ -0,0 +1,92 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.model.CheckUsernameLeakRequest +import com.artemchep.keyguard.common.model.DHibp +import com.artemchep.keyguard.common.model.DHibpC +import com.artemchep.keyguard.common.service.text.Base64Service +import com.artemchep.keyguard.common.usecase.CheckUsernameLeak +import com.artemchep.keyguard.core.store.DatabaseManager +import com.artemchep.keyguard.provider.bitwarden.api.builder.api +import com.artemchep.keyguard.provider.bitwarden.api.builder.breach +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenTokenRepository +import com.artemchep.keyguard.provider.bitwarden.usecase.util.withRefreshableAccessToken +import io.ktor.client.HttpClient +import kotlinx.datetime.TimeZone +import kotlinx.datetime.atStartOfDayIn +import kotlinx.serialization.json.Json +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class CheckUsernameLeakImpl( + private val tokenRepository: BitwardenTokenRepository, + private val base64Service: Base64Service, + private val json: Json, + private val httpClient: HttpClient, + private val db: DatabaseManager, +) : CheckUsernameLeak { + companion object { + private const val TAG = "CheckUsernameLeak.bitwarden" + } + + constructor(directDI: DirectDI) : this( + tokenRepository = directDI.instance(), + base64Service = directDI.instance(), + json = directDI.instance(), + httpClient = directDI.instance(), + db = directDI.instance(), + ) + + override fun invoke( + request: CheckUsernameLeakRequest, + ): IO = ioEffect { + val user = tokenRepository.getById(request.accountId) + .bind() + requireNotNull(user) { + "Failed to find a token!" + } + + val username = request.username + val breaches = withRefreshableAccessToken( + base64Service = base64Service, + httpClient = httpClient, + json = json, + db = db, + user = user, + ) { latestUser -> + val serverEnv = latestUser.env.back() + val accessToken = requireNotNull(latestUser.token).accessToken + serverEnv.api.hibp.breach( + httpClient = httpClient, + env = serverEnv, + token = accessToken, + username = username, + ) + } + + val f = breaches + .map { + DHibp( + title = it.title.orEmpty(), + name = it.name.orEmpty(), + description = it.description + .orEmpty() + .replace("^(
|\\s)+".toRegex(), "") + .replace("(
|\\s)+$".toRegex(), ""), + website = it.domain.orEmpty(), + icon = it.logoPath.orEmpty(), + count = it.pwnCount, + occurredAt = it.breachDate?.atStartOfDayIn(TimeZone.UTC), + reportedAt = it.addedDate?.atStartOfDayIn(TimeZone.UTC), + dataClasses = it.dataClasses, + ) + } + DHibpC(f) + } + +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherBreachCheck.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherBreachCheck.kt new file mode 100644 index 00000000..81fd859e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherBreachCheck.kt @@ -0,0 +1,89 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.usecase.CipherBreachCheck +import com.artemchep.keyguard.common.usecase.CipherUrlCheck +import com.artemchep.keyguard.provider.bitwarden.entity.HibpBreachGroup +import kotlinx.datetime.TimeZone +import kotlinx.datetime.toLocalDateTime +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class CipherBreachCheckImpl( + private val cipherUrlCheck: CipherUrlCheck, +) : CipherBreachCheck { + // https://haveibeenpwned.com/api/v3/dataclasses + private val sensitiveDataClass = setOf( + "Passwords", + // Other. These are not necessarily require password change, but + // are serious enough that there might have been an unknown breach + // that actually leaked the passwords. + "Auth tokens", + "Bank account numbers", + "Biometric data", + "Bios", + "Chat logs", + "Credit card CVV", + "Credit cards", + "Encrypted keys", + "Historical passwords", + "MAC addresses", + "Payment histories", + "Payment methods", + "Personal health data", + "PINs", + "Private messages", + "Purchases", + "Security questions and answers", + ) + + constructor(directDI: DirectDI) : this( + cipherUrlCheck = directDI.instance(), + ) + + override fun invoke( + cipher: DSecret, + breaches: HibpBreachGroup, + ): IO = ioEffect { + val login = cipher.login + ?: return@ioEffect false + val revision = (login.passwordRevisionDate ?: cipher.revisionDate) + .toLocalDateTime(TimeZone.UTC) + .date + + val validBreaches = breaches.breaches + .filter { breach -> + val bd = breach.breachDate + ?: breach.addedDate + ?: return@filter false + bd >= revision + } + // We show only accounts that have leaked the sensitive data + // in some form. For these web-sites you should change the + // password. + .filter { breach -> + breach.dataClasses + .any { dataClass -> + dataClass in sensitiveDataClass + } + } + .filter { breach -> + val domain = breach.domain + ?.takeIf { it.isNotBlank() } + ?: return@filter false + cipher.uris.any { uri -> + cipherUrlCheck(uri, domain) + .bind() + } + } + validBreaches + .isNotEmpty() + } + +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherDuplicatesCheck.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherDuplicatesCheck.kt new file mode 100644 index 00000000..b522f1d8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherDuplicatesCheck.kt @@ -0,0 +1,546 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.DSecretDuplicateGroup +import com.artemchep.keyguard.common.model.fileName +import com.artemchep.keyguard.common.model.fileSize +import com.artemchep.keyguard.common.service.crypto.CryptoGenerator +import com.artemchep.keyguard.common.service.logging.LogLevel +import com.artemchep.keyguard.common.service.logging.LogRepository +import com.artemchep.keyguard.common.service.similarity.SimilarityService +import com.artemchep.keyguard.common.service.text.Base64Service +import com.artemchep.keyguard.common.usecase.CipherDuplicatesCheck +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.math.absoluteValue +import kotlin.time.ExperimentalTime +import kotlin.time.measureTimedValue + +/** + * @author Artem Chepurnyi + */ +class CipherDuplicatesCheckImpl( + private val cryptoGenerator: CryptoGenerator, + private val base64Service: Base64Service, + private val similarityService: SimilarityService, + private val logRepository: LogRepository, +) : CipherDuplicatesCheck { + companion object { + private val TAG = "CipherDuplicatesCheck" + + private val REGEX_SYMBOLS = "\\W".toRegex() + private val REGEX_DIGITS = "\\d".toRegex() + + // Find a schema of a URI string, for + // example https:// or androidapp:// + private val REGEX_SCHEMA = "^.+://".toRegex() + + private val ignoredWords = setOf( + // prepositions + "about", + "along", + "amid", + "among", + "anti", + "as", + "at", + "but", + "by", + "for", + "from", + "in", + "into", + "like", + "minus", + "near", + "of", + "off", + "on", + "onto", + "over", + "past", + "per", + "plus", + "save", + "since", + "than", + "to", + "up", + "upon", + "via", + "with", + "within", + "without", + ) + } + + data class ProcessedSecret( + val source: DSecret, + val processed: DSecret, + ) + + constructor(directDI: DirectDI) : this( + cryptoGenerator = directDI.instance(), + base64Service = directDI.instance(), + similarityService = directDI.instance(), + logRepository = directDI.instance(), + ) + + override fun invoke( + ciphers: List, + sensitivity: CipherDuplicatesCheck.Sensitivity, + ): List = measureTimedValue { + val existingGroupIds = mutableSetOf() + val pCiphers = ciphers + .map { cipher -> + processCipher(cipher) + } + // We only search duplicates in the same type group. We + // assume that no duplicates have different types. + val pCiphersByType = pCiphers + .groupBy { it.processed.type } + pCiphersByType + .mapValues { (_, pCiphersGroup) -> + val out = mutableListOf() + val src = pCiphersGroup.toMutableList() + for (i in src.lastIndex downTo 0) { + var avg: MutableList? = null + var group: MutableList? = null + val target = src.removeLastOrNull() + ?: continue + // Go over the rest of the items and + // compare the with the target item. + for (j in src.lastIndex downTo 0) { + val candidate = src.getOrNull(j) + ?: continue + val accuracy = compare2( + a = target, + b = candidate, + ).eval() + if (accuracy > sensitivity.threshold) { + if (avg == null) { + avg = mutableListOf() + } + avg.add(accuracy) + if (group == null) { + group = mutableListOf() + group.add(target) + } + group.add(candidate) + // remove the potential duplicate from a list + src.removeAt(j) + } + } + if (group != null && avg != null) { + val groupId = group + .joinToString(separator = "") { it.source.id } + .let { + val data = it.toByteArray() + val hash = cryptoGenerator.hashSha256(data) + base64Service.encodeToString(hash) + } + val finalGroupId = if (groupId in existingGroupIds) { + // We happen to have a collision, so + // resort to generating a completely random + // identifier. + cryptoGenerator.uuid() + } else { + groupId + } + existingGroupIds += finalGroupId + + val finalAccuracy = avg.average().toFloat() + out += DSecretDuplicateGroup( + id = finalGroupId, + accuracy = finalAccuracy, + ciphers = group + .map { it.source }, + ) + } + } + out + } + .flatMap { it.value } + }.let { timedValue -> + val logMessage = "Found ${timedValue.value.size} duplicates in ${timedValue.duration}" + logRepository.post(TAG, logMessage, LogLevel.INFO) + + timedValue.value + } + + private fun Sequence.eval() = average().toFloat() + + private fun compare2( + a: ProcessedSecret, + b: ProcessedSecret, + ): Sequence = sequence { + compareStringsFuzzy( + a = a.processed.name, + b = b.processed.name, + strategy = ComparisonStrategy.Fuzzy.TH, + weight = 1f, + ).let { yield(it) } + compareStringsFuzzy( + a = a.processed.notes, + b = b.processed.notes, + strategy = ComparisonStrategy.Fuzzy.TH, + weight = if (a.processed.type == DSecret.Type.SecureNote) 2f else 0.6f, + ifOneEmpty = if (a.processed.type == DSecret.Type.SecureNote) -2f else -0.2f, + ).let { yield(it) } + + // Urls + compareListsFuzzy( + a = a.processed.uris, + b = b.processed.uris, + ) { a, b -> + val scoreMax = 1f + val scoreMin = -1f + if ( + a.match == DSecret.Uri.MatchType.RegularExpression || + b.match == DSecret.Uri.MatchType.RegularExpression + ) { + if (a.uri == b.uri) scoreMax else scoreMin + } else { + if (a.uri == b.uri) { + scoreMax + } else { + val aDomain = a.uri.substringAfter('.') + val bDomain = b.uri.substringAfter('.') + if (aDomain == bDomain) { + scoreMin / 2f + } else { + scoreMin + } + } + } + }.times(3f).let { yield(it) } + + // Fields + compareListsFuzzy( + a = a.processed.fields, + b = b.processed.fields, + ) { a, b -> + if (a == b) 1f else -1f + }.times(3f).let { yield(it) } + + // Attachments + compareListsFuzzy( + a = a.processed.attachments, + b = b.processed.attachments, + ) { a, b -> + val aFileName = a.fileName() + val bFileName = b.fileName() + val aFileSize = a.fileSize() + val bFileSize = b.fileSize() + if (aFileName == bFileName && aFileSize == bFileSize) 1f else -1f + }.times(2f).let { yield(it) } + + // Login + if ( + a.processed.login != null && + b.processed.login != null && + a.processed.type == DSecret.Type.Login + ) { + val aLogin = a.processed.login + val bLogin = b.processed.login + compareStringsFuzzy( + a = aLogin.username, + b = bLogin.username, + // If username is not exactly matched, then we + // give it a very low score. + min = -6f, + strategy = ComparisonStrategy.Exact, + weight = 0.5f, + ).let { yield(it) } + compareStringsFuzzy( + a = aLogin.password, + b = bLogin.password, + min = -3f, + strategy = ComparisonStrategy.Exact, + weight = 1f, + ).let { yield(it) } + compareStringsFuzzy( + a = aLogin.totp?.raw, + b = bLogin.totp?.raw, + min = -4f, + strategy = ComparisonStrategy.Exact, + weight = 5f, + ).let { yield(it) } + // Passkeys + compareListsFuzzy( + a = aLogin.fido2Credentials.map { it.credentialId }, + b = bLogin.fido2Credentials.map { it.credentialId }, + ) { a, b -> + if (a == b) 1f else -3f + }.times(3f).let { yield(it) } + return@sequence + } + + // Card + if ( + a.processed.card != null && + b.processed.card != null && + a.processed.type == DSecret.Type.Card + ) { + val aCard = a.processed.card + val bCard = b.processed.card + compareStringsFuzzy( + a = aCard.number, + b = bCard.number, + strategy = ComparisonStrategy.Exact, + weight = 5f, + ).let { yield(it) } + return@sequence + } + + // Identity + if ( + a.processed.identity != null && + b.processed.identity != null && + a.processed.type == DSecret.Type.Card + ) { + val aIdentity = a.processed.identity + val bIdentity = b.processed.identity + compareStringsFuzzy( + a = aIdentity.title, + b = bIdentity.title, + strategy = ComparisonStrategy.Exact, + weight = 0.7f, + ).let { yield(it) } + compareStringsFuzzy( + a = aIdentity.firstName, + b = bIdentity.firstName, + strategy = ComparisonStrategy.Exact, + weight = 0.7f, + ).let { yield(it) } + compareStringsFuzzy( + a = aIdentity.middleName, + b = bIdentity.middleName, + strategy = ComparisonStrategy.Exact, + weight = 0.7f, + ).let { yield(it) } + compareStringsFuzzy( + a = aIdentity.lastName, + b = bIdentity.lastName, + strategy = ComparisonStrategy.Exact, + weight = 0.7f, + ).let { yield(it) } + compareStringsFuzzy( + a = aIdentity.email, + b = bIdentity.email, + strategy = ComparisonStrategy.Exact, + weight = 0.7f, + ).let { yield(it) } + compareStringsFuzzy( + a = aIdentity.phone, + b = bIdentity.phone, + strategy = ComparisonStrategy.Exact, + weight = 0.7f, + ).let { yield(it) } + compareStringsFuzzy( + a = aIdentity.username, + b = bIdentity.username, + strategy = ComparisonStrategy.Exact, + weight = 0.7f, + ).let { yield(it) } + return@sequence + } + } + + private sealed interface ComparisonStrategy { + data object Exact : ComparisonStrategy + + data class Fuzzy( + val threshold: Float = 0f, + ) : ComparisonStrategy { + companion object { + val TH = Fuzzy(threshold = 0.9f) + } + } + } + + private fun compareListsFuzzy( + a: List, + b: List, + areEqual: (T, T) -> Float, + ): Float { + val sizeScore = -(a.size - b.size).toFloat().absoluteValue * 0.2f / 3f + // We want to start from a smaller list. + val (s, l) = if (a.size > b.size) { + b to a.toMutableList() + } else { + a to b.toMutableList() + } + if (s.isEmpty()) { + return sizeScore + } + val contentScore = s + .mapNotNull { x -> + var index = -1 + var max = Float.MIN_VALUE + l.forEachIndexed { i, y -> + val score = areEqual(x, y) + if (score > max || index == -1) { + index = i + max = score + } + } + if (index != -1) { + // Do not remove urls that did not match + // to the current url. + if (max > 0f) { + l.removeAt(index) + } + max + } else { + null + } + } + .average() + .toFloat() + return sizeScore + contentScore + } + + private fun compareStringsFuzzy( + a: String?, + b: String?, + strategy: ComparisonStrategy, + weight: Float = 1f, + min: Float = -weight, + max: Float = +weight, + // If one of the arguments are empty, + // but the other one is not. + ifOneEmpty: Float = -0.2f, + // If both of the arguments are empty. + ifBothEmpty: Float = 0.05f, + ifExactMatch: Float = max, + ): Float { + val score = when { + a == null || b == null || a.isBlank() || b.isBlank() -> + if (a == b) ifBothEmpty else ifOneEmpty + + a == b -> ifExactMatch + else -> kotlin.run fuzzy@{ + when (strategy) { + is ComparisonStrategy.Exact -> { + // Continue. + } + + is ComparisonStrategy.Fuzzy -> { + // Do not compare strings fuzzily if + // they are too long, as it might take + // too much processing power. + val sumLength = a.length + b.length + if (sumLength <= 100) { + val score = similarityService.score(a, b) + .coerceIn(0f, 1f) + return@fuzzy if (score < strategy.threshold) { + min + } else { + val distance = max - min + score * distance - min + } + } + } + } + min + } + }.coerceIn( + minimumValue = min, + maximumValue = max, + ) + return score + } + + // + // Pre-Processing + // + + private fun processCipher(cipher: DSecret): ProcessedSecret { + val processed = cipher.copy( + name = processString(cipher.name) + .replace("copy", "") + .replace("clone", "") + .replace("duplicate", "") + // Get rid of the digits, because a name + // "Hello world 2" might be a duplicate to + // "Hello world". + .replace(REGEX_DIGITS, ""), + notes = processString(cipher.notes), + uris = cipher.uris + .map { uri -> + val isRegex = uri.match == DSecret.Uri.MatchType.RegularExpression + if (isRegex) return@map uri + + // Leave only the host name + val processedUri = uri.uri + .replace(REGEX_SCHEMA, "") + .substringBefore(":") + .substringBefore("/") + .trim() + uri.copy(uri = processedUri) + }, + fields = cipher.fields + .map { field -> + val processedName = field.name?.let(::processString) + val processedValue = field.value?.trim() + field.copy( + name = processedName, + value = processedValue, + ) + }, + // types + login = cipher.login?.let(::processLogin), + card = cipher.card?.let(::processCard), + identity = cipher.identity?.let(::processIdentity), + ) + return ProcessedSecret( + source = cipher, + processed = processed, + ) + } + + private fun processLogin(login: DSecret.Login): DSecret.Login { + val processedUsername = login.username?.trim() + return login.copy( + username = processedUsername, + ) + } + + private fun processCard(card: DSecret.Card): DSecret.Card { + val processedNumber = card.number?.let(::processString) + return card.copy( + number = processedNumber, + ) + } + + private fun processIdentity(identity: DSecret.Identity): DSecret.Identity { + return identity.copy( + title = identity.title?.let(::processString), + firstName = identity.firstName?.let(::processString), + middleName = identity.middleName?.let(::processString), + lastName = identity.lastName?.let(::processString), + address1 = identity.address1?.let(::processString), + address2 = identity.address2?.let(::processString), + address3 = identity.address3?.let(::processString), + city = identity.city?.let(::processString), + state = identity.state?.let(::processString), + postalCode = identity.postalCode?.let(::processString), + country = identity.country?.let(::processString), + company = identity.company?.let(::processString), + email = identity.email?.let(::processString), + phone = identity.phone?.let(::processString), + ssn = identity.ssn?.let(::processString), + username = identity.username?.let(::processString), + passportNumber = identity.passportNumber?.let(::processString), + licenseNumber = identity.licenseNumber?.let(::processString), + ) + } + + private fun processString(str: String) = str + .lowercase() + .split(" ") + .filter { it !in ignoredWords } + .joinToString(separator = "") + .replace(REGEX_SYMBOLS, "") +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherExpiringCheck.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherExpiringCheck.kt new file mode 100644 index 00000000..c18e17d3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherExpiringCheck.kt @@ -0,0 +1,55 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.usecase.CipherExpiringCheck +import kotlinx.datetime.DateTimeUnit +import kotlinx.datetime.Instant +import kotlinx.datetime.LocalDate +import kotlinx.datetime.TimeZone +import kotlinx.datetime.atStartOfDayIn +import kotlinx.datetime.plus +import org.kodein.di.DirectDI + +/** + * @author Artem Chepurnyi + */ +class CipherExpiringCheckImpl() : CipherExpiringCheck { + constructor(directDI: DirectDI) : this() + + private val timeZone get() = TimeZone.currentSystemDefault() + + override fun invoke(secret: DSecret, now: Instant): Instant? { + val soon = now + .plus(3, DateTimeUnit.MONTH, timeZone) + return when (secret.type) { + DSecret.Type.Login -> null + DSecret.Type.Card -> expiringCard(secret, soon) + DSecret.Type.Identity -> null + DSecret.Type.SecureNote -> null + else -> null + } + } + + private fun expiringCard(secret: DSecret, now: Instant): Instant? { + val cardDate = kotlin.run { + val card = secret.card ?: return null + val month = card.expMonth + ?.trim() + ?.toIntOrNull() + val year = card.expYear + ?.trim() + ?.toIntOrNull() + // If the year is unknown then there's no way + // we know when the card is expiring. + ?: return null + val finalYear = if (year <= 99) 2000 + year else year + LocalDate(finalYear, month ?: 1, 1) + } + val cardInstant = cardDate + // The card expiry date is inclusive, so the actual time + // is the first day of the next month. + .plus(1, DateTimeUnit.MONTH) + .atStartOfDayIn(timeZone) + return cardInstant.takeIf { it <= now } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherFieldSwitchToggle.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherFieldSwitchToggle.kt new file mode 100644 index 00000000..07db1f24 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherFieldSwitchToggle.kt @@ -0,0 +1,50 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.model.CipherFieldSwitchToggleRequest +import com.artemchep.keyguard.common.usecase.CipherFieldSwitchToggle +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.core.store.bitwarden.fields +import com.artemchep.keyguard.provider.bitwarden.usecase.util.ModifyCipherById +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class CipherFieldSwitchToggleImpl( + private val modifyCipherById: ModifyCipherById, +) : CipherFieldSwitchToggle { + constructor(directDI: DirectDI) : this( + modifyCipherById = directDI.instance(), + ) + + override fun invoke( + cipherIdsToRequests: Map>, + ): IO = modifyCipherById( + cipherIdsToRequests + .keys, + ) { model -> + val fieldsTargets = cipherIdsToRequests[model.cipherId].orEmpty() + val fields = model.data_.fields + .mapIndexed { index, field -> + if (field.type != BitwardenCipher.Field.Type.Boolean) { + return@mapIndexed field + } + + val target = fieldsTargets + .firstOrNull { it.fieldIndex == index && it.fieldName == field.name } + if (target != null) { + field.copy(value = target.value.toString()) + } else { + field + } + } + var new = model + new = new.copy( + data_ = BitwardenCipher.fields.set(new.data_, fields), + ) + new + }.map { Unit } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherIncompleteCheck.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherIncompleteCheck.kt new file mode 100644 index 00000000..c92423b1 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherIncompleteCheck.kt @@ -0,0 +1,118 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.usecase.CipherIncompleteCheck +import org.kodein.di.DirectDI + +/** + * @author Artem Chepurnyi + */ +class CipherIncompleteCheckImpl() : CipherIncompleteCheck { + private val placeholderNames = setOf( + "login", + "email", + "password", + "username", + "key", + "item", + "todo", + "entry", + "identity", + ) + + private val tokenNames = setOf( + "ssh", + "key", + "token", + "api", + "security", + "password", + "gpg", + "signature", + "private", + "public", + "id", + ) + + constructor(directDI: DirectDI) : this() + + override fun invoke(secret: DSecret): Boolean { + if (secret.name.isBlank()) { + return true + } + val lowercaseName = secret.name.lowercase() + if (lowercaseName in placeholderNames) { + return true + } + + // API has limited subset of item types, so you might create an + // item just to add attachments/custom fields to it. + if ( + secret.fields.isNotEmpty() || + secret.attachments.isNotEmpty() + ) { + return false + } + + return when (secret.type) { + DSecret.Type.Login -> incompleteLogin(secret) + DSecret.Type.Card -> incompleteCard(secret) + DSecret.Type.Identity -> incompleteIdentity(secret) + DSecret.Type.SecureNote -> incompleteNote(secret) + else -> false + } + } + + private fun incompleteLogin(secret: DSecret): Boolean { + val login = secret.login ?: return true + // Passkey contains both password and + // a username (and a website too). + if (login.fido2Credentials.isNotEmpty()) { + return false + } + if (login.username.isNullOrBlank()) { + // Every login should have a username, otherwise how do you know + // which user to login with? + val lowercaseNameByWords = secret.name.lowercase().split(" ") + if (lowercaseNameByWords.any { it in tokenNames }) { + // Token items tend to have no username. + return false + } + return true + } + return false + } + + private fun incompleteIdentity(secret: DSecret): Boolean { + val identity = secret.identity ?: return true + kotlin.run { + if ( + identity.firstName.isNullOrBlank() && + identity.lastName.isNullOrBlank() + ) { + // Every identity should have a person name, otherwise how do you know + // which person it is? + // #1: If the entry name contains a space, then there's a chance + // that the entry name itself is a person's name. + if (" " in secret.name) return@run + return true + } + } + return false + } + + private fun incompleteNote(secret: DSecret): Boolean { + if (secret.notes.isBlank()) { + return true + } + return false + } + + private fun incompleteCard(secret: DSecret): Boolean { + val card = secret.card ?: return true + if (card.number.isNullOrBlank()) { + return true + } + return false + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherMergee.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherMergee.kt new file mode 100644 index 00000000..08ee0485 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherMergee.kt @@ -0,0 +1,241 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import arrow.core.some +import arrow.optics.Optional +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.address1 +import com.artemchep.keyguard.common.model.address2 +import com.artemchep.keyguard.common.model.address3 +import com.artemchep.keyguard.common.model.attachments +import com.artemchep.keyguard.common.model.card +import com.artemchep.keyguard.common.model.city +import com.artemchep.keyguard.common.model.company +import com.artemchep.keyguard.common.model.country +import com.artemchep.keyguard.common.model.email +import com.artemchep.keyguard.common.model.favorite +import com.artemchep.keyguard.common.model.fields +import com.artemchep.keyguard.common.model.firstName +import com.artemchep.keyguard.common.model.identity +import com.artemchep.keyguard.common.model.lastName +import com.artemchep.keyguard.common.model.licenseNumber +import com.artemchep.keyguard.common.model.login +import com.artemchep.keyguard.common.model.middleName +import com.artemchep.keyguard.common.model.notes +import com.artemchep.keyguard.common.model.passportNumber +import com.artemchep.keyguard.common.model.password +import com.artemchep.keyguard.common.model.phone +import com.artemchep.keyguard.common.model.postalCode +import com.artemchep.keyguard.common.model.reprompt +import com.artemchep.keyguard.common.model.ssn +import com.artemchep.keyguard.common.model.state +import com.artemchep.keyguard.common.model.title +import com.artemchep.keyguard.common.model.totp +import com.artemchep.keyguard.common.model.type +import com.artemchep.keyguard.common.model.uris +import com.artemchep.keyguard.common.model.username +import com.artemchep.keyguard.common.usecase.CipherMerge +import org.kodein.di.DirectDI + +/** + * @author Artem Chepurnyi + */ +class CipherMergeImpl() : CipherMerge { + private val mergeRules = Node.Group( + lens = Optional( + getOption = { it.some() }, + set = { _, newValue -> newValue }, + ), + children = listOf( + Node.Leaf(DSecret.notes), + Node.Leaf( + lens = DSecret.type, + strategy = PickModeStrategy { DSecret.Type.Login }, + ), + Node.Leaf( + lens = DSecret.favorite, + strategy = PickModeStrategy { false }, + ), + Node.Leaf( + lens = DSecret.reprompt, + strategy = PickModeStrategy { false }, + ), + Node.Leaf( + lens = DSecret.uris, + strategy = PickUriStrategy(), + ), + Node.Leaf( + lens = DSecret.fields, + strategy = PickFieldStrategy(), + ), + Node.Leaf( + lens = DSecret.attachments, + strategy = PickAttachmentStrategy(), + ), + // types + Node.Group( + lens = DSecret.login, + children = listOf( + Node.Leaf(DSecret.Login.username), + Node.Leaf(DSecret.Login.password), + Node.Leaf(DSecret.Login.totp), + ), + ), + Node.Leaf( + lens = DSecret.card, + strategy = PickCardStrategy(), + ), + Node.Group( + lens = DSecret.identity, + children = listOf( + Node.Leaf(DSecret.Identity.title), + Node.Leaf(DSecret.Identity.firstName), + Node.Leaf(DSecret.Identity.middleName), + Node.Leaf(DSecret.Identity.lastName), + Node.Leaf(DSecret.Identity.address1), + Node.Leaf(DSecret.Identity.address2), + Node.Leaf(DSecret.Identity.address3), + Node.Leaf(DSecret.Identity.city), + Node.Leaf(DSecret.Identity.state), + Node.Leaf(DSecret.Identity.postalCode), + Node.Leaf(DSecret.Identity.country), + Node.Leaf(DSecret.Identity.company), + Node.Leaf(DSecret.Identity.email), + Node.Leaf(DSecret.Identity.phone), + Node.Leaf(DSecret.Identity.ssn), + Node.Leaf(DSecret.Identity.username), + Node.Leaf(DSecret.Identity.passportNumber), + Node.Leaf(DSecret.Identity.licenseNumber), + ), + ), + ), + ) + + private sealed interface Node { + val lens: Optional + + class Group( + override val lens: Optional, + val children: List> = emptyList(), + ) : Node + + class Leaf( + override val lens: Optional, + val strategy: PickStrategy = PickModeStrategy(), + ) : Node + } + + @FunctionalInterface + private interface PickStrategy { + fun pick(list: List): T + } + + private class PickModeStrategy( + val orElse: (() -> T)? = null, + ) : PickStrategy { + override fun pick(list: List): T { + val candidates = kotlin.run { + val listSorted = list + .groupBy { it } + .values + .sortedByDescending { it.size } + val first = listSorted[0] + listSorted + .filter { it.size == first.size } + .map { it.first() } + } + val default = orElse?.invoke() + return default + ?.takeIf { it in candidates } + ?: candidates.first() + } + } + + private class PickUriStrategy : PickStrategy> { + override fun pick( + list: List>, + ): List = list + .flatten() + .distinct() + } + + private class PickFieldStrategy : PickStrategy> { + override fun pick( + list: List>, + ): List = list + .flatten() + .distinct() + } + + // FIXME: We do not support merging attachments, so + // just invalidate the list of attachments. + private class PickAttachmentStrategy : PickStrategy> { + override fun pick( + list: List>, + ): List = emptyList() + } + + private class PickCardStrategy : PickStrategy { + override fun pick(list: List): DSecret.Card = list.first() + } + + constructor(directDI: DirectDI) : this() + + override fun invoke( + ciphers: List, + ): DSecret = kotlin.run { + val initialCipher = ciphers.first() + .run { + copy( + login = login ?: DSecret.Login(), + identity = identity ?: DSecret.Identity(), + card = card ?: DSecret.Card(), + ) + } + mergeRules.merge(initialCipher, ciphers) as DSecret + } + + private fun Node.merge( + source: Any, + data: List, + ): Any { + return when (this) { + is Node.Group<*, *> -> { + val lensFixed = lens as Optional + val lensData = data + .mapNotNull(lensFixed::getOrNull) + // We can not merge empty list of sources, so + // just return the original value. + if (lensData.isEmpty()) return source + + val lensSource = lensFixed.getOrNull(source) + // A downside of this approach is that we + // can not create new objects. :'( If the + // login is null, we will not create it. + ?: return source + + lensFixed.set( + source = source, + focus = children + .fold(lensSource) { s, child -> + child.merge(s, lensData) + }, + ) + } + + is Node.Leaf<*, *> -> { + val lensFixed = lens as Optional + val lensData = data + .mapNotNull(lensFixed::getOrNull) + if (lensData.isEmpty()) { + // We do not have any children, so + // just return the source value. + source + } else { + val strategy = strategy as PickStrategy + val focus = strategy.pick(lensData) + lensFixed.set(source, focus) + } + } + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherRemovePasswordHistoryByIdImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherRemovePasswordHistoryByIdImpl.kt new file mode 100644 index 00000000..337acaa5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherRemovePasswordHistoryByIdImpl.kt @@ -0,0 +1,43 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.usecase.CipherRemovePasswordHistoryById +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.core.store.bitwarden.login +import com.artemchep.keyguard.core.store.bitwarden.passwordHistory +import com.artemchep.keyguard.provider.bitwarden.usecase.util.ModifyCipherById +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class CipherRemovePasswordHistoryByIdImpl( + private val modifyCipherById: ModifyCipherById, +) : CipherRemovePasswordHistoryById { + companion object { + private const val TAG = "CipherRemovePasswordHistoryById.bitwarden" + } + + constructor(directDI: DirectDI) : this( + modifyCipherById = directDI.instance(), + ) + + override fun invoke( + cipherId: String, + passwordIds: List, + ): IO = modifyCipherById( + setOf(cipherId), + ) { model -> + var new = model + new = new.copy( + data_ = BitwardenCipher.login.passwordHistory + .modify(new.data_) { oldPasswordHistory -> + oldPasswordHistory + .filter { it.id !in passwordIds } + }, + ) + new + }.map { Unit } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherRemovePasswordHistoryImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherRemovePasswordHistoryImpl.kt new file mode 100644 index 00000000..9c412184 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherRemovePasswordHistoryImpl.kt @@ -0,0 +1,39 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.usecase.CipherRemovePasswordHistory +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.core.store.bitwarden.login +import com.artemchep.keyguard.core.store.bitwarden.passwordHistory +import com.artemchep.keyguard.provider.bitwarden.usecase.util.ModifyCipherById +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class CipherRemovePasswordHistoryImpl( + private val modifyCipherById: ModifyCipherById, +) : CipherRemovePasswordHistory { + companion object { + private const val TAG = "CipherRemovePasswordHistory.bitwarden" + } + + constructor(directDI: DirectDI) : this( + modifyCipherById = directDI.instance(), + ) + + override fun invoke( + cipherId: String, + ): IO = modifyCipherById( + setOf(cipherId), + ) { model -> + var new = model + new = new.copy( + data_ = BitwardenCipher.login.passwordHistory + .set(new.data_, emptyList()), + ) + new + }.map { Unit } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherUnsecureUrlAutoFix.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherUnsecureUrlAutoFix.kt new file mode 100644 index 00000000..d30d4039 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherUnsecureUrlAutoFix.kt @@ -0,0 +1,87 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.usecase.CipherUnsecureUrlAutoFix +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.core.store.bitwarden.login +import com.artemchep.keyguard.core.store.bitwarden.uris +import com.artemchep.keyguard.provider.bitwarden.usecase.util.ModifyCipherById +import io.ktor.client.HttpClient +import io.ktor.client.request.get +import io.ktor.http.DEFAULT_PORT +import io.ktor.http.URLBuilder +import io.ktor.http.Url +import io.ktor.http.isSecure +import io.ktor.http.isSuccess +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class CipherUnsecureUrlAutoFixImpl( + private val httpClient: HttpClient, + private val modifyCipherById: ModifyCipherById, +) : CipherUnsecureUrlAutoFix { + constructor(directDI: DirectDI) : this( + httpClient = directDI.instance(), + modifyCipherById = directDI.instance(), + ) + + override fun invoke( + cipherIdsToUrls: Map>, + ): IO = modifyCipherById( + cipherIdsToUrls + .keys, + ) { model -> + val urisToFix = cipherIdsToUrls[model.cipherId].orEmpty() + val uris = model.data_.login + ?.uris + ?.map { uri -> + val shouldAutoFix = uri.uri in urisToFix + if (shouldAutoFix && uri.uri != null) { + val secureUrl = autofyUrl(uri.uri) + uri.copy(uri = secureUrl) + } else { + uri + } + } + .orEmpty() + + var new = model + new = new.copy( + data_ = BitwardenCipher.login.uris.set(new.data_, uris), + ) + new + }.map { Unit } + + private suspend fun autofyUrl(unsecureUrl: String): String { + val url = Url(unsecureUrl) + if (url.protocol.isSecure()) { + throw IllegalStateException("The '$unsecureUrl' uses a secure protocol.") + } + val secureProtocol = + CipherUnsecureUrlCheckUtils.unsecureToSecureProtocols[url.protocol.name] + // Should not happen, as we should not allow + // user to auto-fix unknown protocols. + ?: throw IllegalStateException("Protocol '${url.protocol.name}' doesn't have a secure variant.") + val secureUrl = URLBuilder(url).apply { + protocol = secureProtocol + // unless specified port is different to the previous default + port = url.port.takeIf { url.port != url.protocol.defaultPort } + ?: DEFAULT_PORT + }.build() + + // Test if the new url is GET-able + testUrlOrThrow(secureUrl) + return secureUrl.toString() + } + + private suspend fun testUrlOrThrow(url: Url) { + val secureUrlExists = httpClient.get(url).status.isSuccess() + if (!secureUrlExists) { + throw IllegalStateException("Could not check if secure URL exists.") + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherUnsecureUrlCheck.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherUnsecureUrlCheck.kt new file mode 100644 index 00000000..cf30afec --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherUnsecureUrlCheck.kt @@ -0,0 +1,31 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import arrow.core.getOrElse +import com.artemchep.keyguard.common.usecase.CipherUnsecureUrlCheck +import com.artemchep.keyguard.feature.auth.common.util.verifyIsLocalUrl +import org.kodein.di.DirectDI + +/** + * @author Artem Chepurnyi + */ +class CipherUnsecureUrlCheckImpl() : CipherUnsecureUrlCheck { + private val regex = kotlin.run { + val protocols = CipherUnsecureUrlCheckUtils.unsecureProtocols + val protocolsGroup = "(" + protocols.joinToString(separator = "|") { it.name } + ")" + "\\s*$protocolsGroup://.*".toRegex() + } + + constructor(directDI: DirectDI) : this() + + override fun invoke(url: String): Boolean = + isUnsecureUrl(url) && + // Most of us do not care about the https for + // local web sites. + !isLocalUrl(url) + + private fun isUnsecureUrl(url: String) = regex.matches(url) + + // TODO: Allow reserved IP addresses to be unsafe + // https://en.wikipedia.org/wiki/Reserved_IP_addresses#IPv4 + private fun isLocalUrl(url: String) = verifyIsLocalUrl(url).getOrElse { false } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherUnsecureUrlUtils.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherUnsecureUrlUtils.kt new file mode 100644 index 00000000..acedb602 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherUnsecureUrlUtils.kt @@ -0,0 +1,22 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import io.ktor.http.URLProtocol + +/** + * @author Artem Chepurnyi + */ +object CipherUnsecureUrlCheckUtils { + private val internalUnsecureToSecureProtocols = listOf( + URLProtocol.HTTP to URLProtocol.HTTPS, + URLProtocol.WS to URLProtocol.WSS, + ) + + val unsecureToSecureProtocols = internalUnsecureToSecureProtocols + .associateBy { it.first.name } + // values -- secure protocols + .mapValues { it.value.second } + + val unsecureProtocols = internalUnsecureToSecureProtocols + // values -- un-secure protocols + .map { it.first } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherUrlCheck.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherUrlCheck.kt new file mode 100644 index 00000000..cb9c5cf5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherUrlCheck.kt @@ -0,0 +1,121 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.io +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.service.tld.TldService +import com.artemchep.keyguard.common.usecase.CipherUrlCheck +import io.ktor.http.Url +import io.ktor.http.hostWithPort +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +// TODO: Add special treatments for androidapp:// etc. +class CipherUrlCheckImpl( + private val tldService: TldService, +) : CipherUrlCheck { + companion object { + private const val PROTOCOL_ANDROID_APP = "androidapp://" + } + + constructor(directDI: DirectDI) : this( + tldService = directDI.instance(), + ) + + override fun invoke( + uri: DSecret.Uri, + url: String, + ): IO { + return when (uri.match ?: DSecret.Uri.MatchType.default) { + DSecret.Uri.MatchType.Domain -> { + when { + uri.uri.startsWith(PROTOCOL_ANDROID_APP) -> ::checkUrlMatchByHost + else -> ::checkUrlMatchByDomain + } + } + + DSecret.Uri.MatchType.Host -> ::checkUrlMatchByHost + DSecret.Uri.MatchType.StartsWith -> ::checkUrlMatchByStartsWith + DSecret.Uri.MatchType.Exact -> ::checkUrlMatchByExact + DSecret.Uri.MatchType.RegularExpression -> ::checkUrlMatchByRegularExpression + DSecret.Uri.MatchType.Never -> ::checkUrlMatchByNever + }.invoke(uri.uri, url) + } + + private fun checkUrlMatchByDomain( + a: String, + b: String, + ): IO = ioEffect { + val aHost = urlOf(a).host + val bHost = urlOf(b).host + // Find the actual domain name from the host name. This + // is quite trickery as there are quite a lot of very different + // company owned names. + val aDomain = tldService + .getDomainName(aHost) + .bind() + bHost.endsWith(aDomain) + } + + private fun checkUrlMatchByHost( + a: String, + b: String, + ): IO = ioEffect { + val aHost = urlOf(a).hostWithPort + val bHost = urlOf(b).hostWithPort + aHost == bHost + } + + private fun checkUrlMatchByStartsWith( + a: String, + b: String, + ): IO = ioEffect { + val aFiltered = a.trim().removeSuffix("/") + val bFiltered = b.trim().removeSuffix("/") + bFiltered.startsWith(aFiltered) + } + + private fun checkUrlMatchByExact( + a: String, + b: String, + ): IO = ioEffect { + val aFiltered = a.trim().removeSuffix("/") + val bFiltered = b.trim().removeSuffix("/") + aFiltered == bFiltered + } + + private fun checkUrlMatchByRegularExpression( + a: String, + b: String, + ): IO = ioEffect { + // URIs are mostly case-insensitive, so it makes sense + // that regular expressions should also be case-insensitive. + val aRegex = a.toRegex(RegexOption.IGNORE_CASE) + b.matches(aRegex) + } + + private fun checkUrlMatchByNever( + a: String, + b: String, + ): IO = io(false) + + private fun urlOf(url: String): Url { + val newUrl = ensureUrlSchema(url) + return Url(newUrl) + } + + private fun ensureUrlSchema(url: String) = + if (url.isBlank() || url.contains("://")) { + // The url contains a schema, return + // it as it as. + url + } else { + val newUrl = "https://$url" + newUrl + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherUrlDuplicateCheck.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherUrlDuplicateCheck.kt new file mode 100644 index 00000000..cdc904b8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CipherUrlDuplicateCheck.kt @@ -0,0 +1,54 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.io.io +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.usecase.CipherUrlCheck +import com.artemchep.keyguard.common.usecase.CipherUrlDuplicateCheck +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class CipherUrlDuplicateCheckImpl( + private val cipherUrlCheck: CipherUrlCheck, +) : CipherUrlDuplicateCheck { + constructor(directDI: DirectDI) : this( + cipherUrlCheck = directDI.instance(), + ) + + override fun invoke( + a: DSecret.Uri, + b: DSecret.Uri, + ): IO { + val aMatch = a.match ?: DSecret.Uri.MatchType.default + val bMatch = b.match ?: DSecret.Uri.MatchType.default + + // If one of the URIs are set to never match then + // ignore it, it can not be a duplicate. + if ( + aMatch == DSecret.Uri.MatchType.Never || + bMatch == DSecret.Uri.MatchType.Never + ) { + return io(null) + } + + // If both a RegEx, then the only thing we can do is + // to check if they are equal. + if ( + aMatch == DSecret.Uri.MatchType.RegularExpression && + bMatch == DSecret.Uri.MatchType.RegularExpression + ) { + val result = a.takeIf { it.uri == b.uri } + return io(result) + } + + return cipherUrlCheck(a, b.uri) + .effectMap { areMatching -> + a.takeIf { areMatching } + } + } + +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CopyCipherById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CopyCipherById.kt new file mode 100644 index 00000000..dfc7bf7f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/CopyCipherById.kt @@ -0,0 +1,132 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.model.create.CreateRequest +import com.artemchep.keyguard.common.service.crypto.CryptoGenerator +import com.artemchep.keyguard.common.usecase.AddFolder +import com.artemchep.keyguard.common.usecase.CopyCipherById +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.core.store.bitwarden.attachments +import com.artemchep.keyguard.core.store.bitwarden.name +import com.artemchep.keyguard.feature.confirmation.organization.FolderInfo +import com.artemchep.keyguard.provider.bitwarden.usecase.util.ModifyCipherById +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class CopyCipherByIdImpl( + private val modifyCipherById: ModifyCipherById, + private val addFolder: AddFolder, + private val cryptoGenerator: CryptoGenerator, +) : CopyCipherById { + companion object { + private const val TAG = "CopyCipherById.bitwarden" + } + + constructor(directDI: DirectDI) : this( + modifyCipherById = directDI.instance(), + addFolder = directDI.instance(), + cryptoGenerator = directDI.instance(), + ) + + override fun invoke( + cipherIdsToRequests: Map, + ): IO = ioEffect { + val r = cipherIdsToRequests + .mapValues { (key, value) -> + val folderId = when (val folder = value.folder) { + is FolderInfo.None -> null + is FolderInfo.New -> { + val accountId = AccountId(value.accountId!!) + val rq = mapOf( + accountId to folder.name, + ) + val rs = addFolder(rq) + .bind() + rs.first() + } + + is FolderInfo.Id -> folder.id + } + CreateRequest.Ownership( + accountId = value.accountId, + folderId = folderId, + organizationId = value.organizationId, + collectionIds = value.collectionIds, + ) + } + invoke2(r).bind() + } + + private fun invoke2( + cipherIdsToRequests: Map, + ): IO = modifyCipherById( + cipherIdsToRequests + .keys, + ) { model -> + val request = cipherIdsToRequests.getValue(model.cipherId) + val cipherId = cryptoGenerator.uuid() + + val accountId = request.accountId + val folderId = request.folderId + val organizationId = request.organizationId + val collectionIds = request.collectionIds + requireNotNull(accountId) { "Cipher must have an account!" } + require(organizationId == null || collectionIds.isNotEmpty()) { + "When a cipher belongs to an organization, it must have at " + + "least one collection!" + } + + val changesOwnership = request.accountId != model.data_.accountId || + request.organizationId != model.data_.organizationId + + var new = model + new = new.copy( + data_ = new.data_.copy( + cipherId = cipherId, + accountId = accountId, + folderId = folderId, + organizationId = organizationId, + collectionIds = collectionIds, + ), + ) + new = new.copy( + cipherId = cipherId, + accountId = accountId, + folderId = folderId, + ) + // We are creating a copy, that means that the new cipher + // has not been on remote yet. + new = new.copy( + data_ = new.data_.copy( + service = new.data_.service.copy( + remote = null, + deleted = false, + ), + ), + ) + // TODO: Support copying attachments + if (changesOwnership) { + new = new.copy( + data_ = BitwardenCipher.attachments.set(new.data_, emptyList()), + ) + } + // TODO: Check if the name collides + // If we copy to the same account, then add a prefix to + // the name. + if (!changesOwnership) { + new = new.copy( + data_ = BitwardenCipher.name.modify(new.data_) { oldName -> + "Copy of $oldName" + }, + ) + } + new + }.map { Unit } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/FavouriteCipherById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/FavouriteCipherById.kt new file mode 100644 index 00000000..70a228f1 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/FavouriteCipherById.kt @@ -0,0 +1,38 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.usecase.FavouriteCipherById +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.core.store.bitwarden.favorite +import com.artemchep.keyguard.provider.bitwarden.usecase.util.ModifyCipherById +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class FavouriteCipherByIdImpl( + private val modifyCipherById: ModifyCipherById, +) : FavouriteCipherById { + companion object { + private const val TAG = "FavouriteCipherById.bitwarden" + } + + constructor(directDI: DirectDI) : this( + modifyCipherById = directDI.instance(), + ) + + override fun invoke( + cipherIds: Set, + favourite: Boolean, + ): IO = modifyCipherById( + cipherIds, + ) { model -> + var new = model + new = new.copy( + data_ = BitwardenCipher.favorite.set(new.data_, favourite), + ) + new + }.map { Unit } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetAccountHasError.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetAccountHasError.kt new file mode 100644 index 00000000..0afe27cf --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetAccountHasError.kt @@ -0,0 +1,36 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.model.DMeta +import com.artemchep.keyguard.common.usecase.GetAccountHasError +import com.artemchep.keyguard.common.usecase.GetMetas +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class GetAccountHasErrorImpl( + private val getMetas: GetMetas, +) : GetAccountHasError { + companion object { + private const val TAG = "GetAccountHasError.bitwarden" + } + + constructor(directDI: DirectDI) : this( + getMetas = directDI.instance(), + ) + + override fun invoke(accountId: AccountId): Flow = getMetas() + .map { metas -> + metas + .any { + it.accountId == accountId && + it.lastSyncResult is DMeta.LastSyncResult.Failure + } + } + .distinctUntilChanged() +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetAccounts.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetAccounts.kt new file mode 100644 index 00000000..a14cc963 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetAccounts.kt @@ -0,0 +1,39 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.model.DAccount +import com.artemchep.keyguard.common.usecase.GetAccounts +import com.artemchep.keyguard.core.store.bitwarden.BitwardenToken +import com.artemchep.keyguard.provider.bitwarden.mapper.toDomain +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenTokenRepository +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.coroutines.CoroutineContext + +/** + * @author Artem Chepurnyi + */ +class GetAccountsImpl( + private val tokenRepository: BitwardenTokenRepository, + private val dispatcher: CoroutineContext = Dispatchers.Default, +) : GetAccounts { + companion object { + private const val TAG = "GetAccounts.bitwarden" + } + + constructor(directDI: DirectDI) : this( + tokenRepository = directDI.instance(), + ) + + override fun invoke(): Flow> = tokenRepository + .get() + .map { list -> + list + .map(BitwardenToken::toDomain) + .sorted() + } + .flowOn(dispatcher) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsHasError.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsHasError.kt new file mode 100644 index 00000000..1026af94 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetAccountsHasError.kt @@ -0,0 +1,32 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.model.DMeta +import com.artemchep.keyguard.common.usecase.GetAccountsHasError +import com.artemchep.keyguard.common.usecase.GetMetas +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class GetAccountsHasErrorImpl( + private val getMetas: GetMetas, +) : GetAccountsHasError { + companion object { + private const val TAG = "GetAccountsHasError.bitwarden" + } + + constructor(directDI: DirectDI) : this( + getMetas = directDI.instance(), + ) + + override fun invoke(): Flow = getMetas() + .map { metas -> + metas + .any { it.lastSyncResult is DMeta.LastSyncResult.Failure } + } + .distinctUntilChanged() +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetCipherOpenedCountImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetCipherOpenedCountImpl.kt new file mode 100644 index 00000000..c844e68b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetCipherOpenedCountImpl.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.android.downloader.journal.CipherHistoryOpenedRepository +import com.artemchep.keyguard.common.usecase.GetCipherOpenedCount +import kotlinx.coroutines.flow.Flow +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetCipherOpenedCountImpl( + private val cipherHistoryOpenedRepository: CipherHistoryOpenedRepository, +) : GetCipherOpenedCount { + constructor(directDI: DirectDI) : this( + cipherHistoryOpenedRepository = directDI.instance(), + ) + + override fun invoke( + ): Flow = cipherHistoryOpenedRepository.getCount() +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetCipherOpenedHistoryImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetCipherOpenedHistoryImpl.kt new file mode 100644 index 00000000..38dc3514 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetCipherOpenedHistoryImpl.kt @@ -0,0 +1,24 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.android.downloader.journal.CipherHistoryOpenedRepository +import com.artemchep.keyguard.common.model.CipherOpenedHistoryMode +import com.artemchep.keyguard.common.model.DCipherOpenedHistory +import com.artemchep.keyguard.common.usecase.GetCipherOpenedHistory +import kotlinx.coroutines.flow.Flow +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetCipherOpenedHistoryImpl( + private val cipherHistoryOpenedRepository: CipherHistoryOpenedRepository, +) : GetCipherOpenedHistory { + constructor(directDI: DirectDI) : this( + cipherHistoryOpenedRepository = directDI.instance(), + ) + + override fun invoke( + mode: CipherOpenedHistoryMode, + ): Flow> = when (mode) { + is CipherOpenedHistoryMode.Recent -> cipherHistoryOpenedRepository.getRecent() + is CipherOpenedHistoryMode.Popular -> cipherHistoryOpenedRepository.getPopular() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetCiphers.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetCiphers.kt new file mode 100644 index 00000000..2090b527 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetCiphers.kt @@ -0,0 +1,56 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.service.logging.LogRepository +import com.artemchep.keyguard.common.usecase.GetCiphers +import com.artemchep.keyguard.common.usecase.GetPasswordStrength +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.common.util.withLogTimeOfFirstEvent +import com.artemchep.keyguard.provider.bitwarden.mapper.toDomain +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenCipherRepository +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.shareIn +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.coroutines.CoroutineContext + +/** + * @author Artem Chepurnyi + */ +class GetCiphersImpl( + private val logRepository: LogRepository, + private val cipherRepository: BitwardenCipherRepository, + private val getPasswordStrength: GetPasswordStrength, + private val windowCoroutineScope: WindowCoroutineScope, + private val dispatcher: CoroutineContext = Dispatchers.Default, +) : GetCiphers { + companion object { + private const val TAG = "GetCiphers.bitwarden" + } + + constructor(directDI: DirectDI) : this( + logRepository = directDI.instance(), + cipherRepository = directDI.instance(), + getPasswordStrength = directDI.instance(), + windowCoroutineScope = directDI.instance(), + ) + + private val sharedFlow = cipherRepository + .get() + .map { list -> + list + .distinctBy { it.cipherId to it.accountId } + .map { + it.toDomain(getPasswordStrength) + } + } + .withLogTimeOfFirstEvent(logRepository, TAG) + .flowOn(dispatcher) + .shareIn(windowCoroutineScope, SharingStarted.WhileSubscribed(5000L), replay = 1) + + override fun invoke(): Flow> = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetCollections.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetCollections.kt new file mode 100644 index 00000000..08101094 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetCollections.kt @@ -0,0 +1,52 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.model.DCollection +import com.artemchep.keyguard.common.service.logging.LogRepository +import com.artemchep.keyguard.common.usecase.GetCollections +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.common.util.withLogTimeOfFirstEvent +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCollection +import com.artemchep.keyguard.provider.bitwarden.mapper.toDomain +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenCollectionRepository +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.shareIn +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.coroutines.CoroutineContext + +/** + * @author Artem Chepurnyi + */ +class GetCollectionsImpl( + private val logRepository: LogRepository, + private val collectionRepository: BitwardenCollectionRepository, + private val windowCoroutineScope: WindowCoroutineScope, + private val dispatcher: CoroutineContext = Dispatchers.Default, +) : GetCollections { + companion object { + private const val TAG = "GetCollections.bitwarden" + } + + constructor(directDI: DirectDI) : this( + logRepository = directDI.instance(), + collectionRepository = directDI.instance(), + windowCoroutineScope = directDI.instance(), + ) + + private val sharedFlow = collectionRepository + .get() + .map { list -> + list + .distinctBy { it.collectionId to it.accountId } + .map(BitwardenCollection::toDomain) + } + .withLogTimeOfFirstEvent(logRepository, TAG) + .flowOn(dispatcher) + .shareIn(windowCoroutineScope, SharingStarted.WhileSubscribed(5000L), replay = 1) + + override fun invoke(): Flow> = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetEmailRelays.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetEmailRelays.kt new file mode 100644 index 00000000..ad6ca738 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetEmailRelays.kt @@ -0,0 +1,36 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.model.DGeneratorEmailRelay +import com.artemchep.keyguard.common.service.relays.repo.GeneratorEmailRelayRepository +import com.artemchep.keyguard.common.usecase.GetEmailRelays +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.coroutines.CoroutineContext + +/** + * @author Artem Chepurnyi + */ +class GetEmailRelaysImpl( + private val generatorEmailRelayRepository: GeneratorEmailRelayRepository, + private val dispatcher: CoroutineContext = Dispatchers.Default, +) : GetEmailRelays { + companion object { + private const val TAG = "GetAccounts.bitwarden" + } + + constructor(directDI: DirectDI) : this( + generatorEmailRelayRepository = directDI.instance(), + ) + + override fun invoke(): Flow> = generatorEmailRelayRepository + .get() + .map { list -> + list + .sorted() + } + .flowOn(dispatcher) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetFingerprint.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetFingerprint.kt new file mode 100644 index 00000000..875d528f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetFingerprint.kt @@ -0,0 +1,104 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.service.crypto.CryptoGenerator +import com.artemchep.keyguard.common.service.text.Base64Service +import com.artemchep.keyguard.common.service.wordlist.WordlistService +import com.artemchep.keyguard.common.usecase.GetFingerprint +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenProfileRepository +import com.artemchep.keyguard.provider.bitwarden.usecase.util.pbk +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance +import java.math.BigInteger +import kotlin.coroutines.CoroutineContext +import kotlin.math.ceil +import kotlin.math.ln + +/** + * @author Artem Chepurnyi + */ +class GetFingerprintImpl( + private val profileRepository: BitwardenProfileRepository, + private val cryptoGenerator: CryptoGenerator, + private val base64Service: Base64Service, + private val wordlistService: WordlistService, + private val dispatcher: CoroutineContext = Dispatchers.Default, +) : GetFingerprint { + companion object { + private const val TAG = "GetFingerprint.bitwarden" + } + + constructor(directDI: DirectDI) : this( + profileRepository = directDI.instance(), + cryptoGenerator = directDI.instance(), + base64Service = directDI.instance(), + wordlistService = directDI.instance(), + ) + + override fun invoke( + accountId: AccountId, + ): Flow = profileRepository + .getById(accountId) + .map { profileOrNull -> + val profile = requireNotNull(profileOrNull) { "Profile not found." } + val wordList = wordlistService + .get() + .bind() + + val publicKeyHash = kotlin.run { + val privateKey = base64Service.decode(profile.privateKeyBase64) + val publicKey = pbk(privateKey) + cryptoGenerator.hashSha256(publicKey) + } + val fingerprint = cryptoGenerator.hkdf( + seed = publicKeyHash, + info = profile.profileId.toByteArray(), + ) + generateHashPhrase( + hash = fingerprint, + wordList = wordList, + ).joinToString("-") + } + .flowOn(dispatcher) + + private fun generateHashPhrase( + hash: ByteArray, + wordList: List, + minimumEntropy: Int = 64, + ): List { + val wordsCount = wordList.size + val wordsCountBi = BigInteger.valueOf(wordsCount.toLong()) + + val entropyPerWord = ln(wordsCount.toDouble()) / ln(2.0) + val entropyAvailable = hash.size * 4 + var remainingWordsCount = ceil(minimumEntropy / entropyPerWord) + if (remainingWordsCount * entropyPerWord > entropyAvailable) { + throw IllegalStateException("Output entropy of hash function is too small") + } + + val phrase = mutableListOf() + var hashNumber = BigInteger.ZERO + hash.toList() + .asReversed() + .forEachIndexed { index, byte -> + var v = BigInteger.valueOf(byte.toUByte().toLong()) + repeat(index) { + v = v.times(BigInteger.valueOf(256L)) + } + hashNumber = hashNumber.plus(v) + } + while (remainingWordsCount-- > 0) { + val remainder = hashNumber + .remainder(wordsCountBi) + .toInt() + hashNumber = hashNumber.divide(wordsCountBi) + phrase.add(wordList[remainder]) + } + return phrase + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetFolderTree.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetFolderTree.kt new file mode 100644 index 00000000..18c3872b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetFolderTree.kt @@ -0,0 +1,106 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.model.DFolderTree2 +import com.artemchep.keyguard.common.usecase.GetFolderTree +import kotlinx.coroutines.Dispatchers +import org.kodein.di.DirectDI +import kotlin.coroutines.CoroutineContext + +/** + * @author Artem Chepurnyi + */ +class GetFolderTreeImpl( + private val dispatcher: CoroutineContext = Dispatchers.Default, +) : GetFolderTree { + companion object { + private const val TAG = "GetFolderTree.bitwarden" + + private const val DELIMITER = '/' + } + + private val trimPrefixRegex = "^\\s*/\\s*".toRegex() + + constructor(directDI: DirectDI) : this( + ) + + override fun invoke( + lens: (T) -> String, + allFolders: Collection, + folder: T, + ): DFolderTree2 { + // First start with finding a target folder, + // we will later use it to form the hierarchy. + val target = folder + val folders = allFolders + + val rawHierarchy = target.hierarchyIn(lens, folders) + .toList() + .asReversed() + val hierarchy = rawHierarchy + .mapIndexed { index, folder -> + val name = if (index > 0) { + // Slice the name basing on the + // parent folder. + val parent = rawHierarchy[index - 1] + lens(folder).substringAfter(lens(parent)) + .replace(trimPrefixRegex, "") + } else { + lens(folder) + } + DFolderTree2.Node( + name = name, + folder = folder, + ) + } + return DFolderTree2( + folder = target, + hierarchy = hierarchy, + ) + } + + private fun T.hierarchyIn( + lens: (T) -> String, + folders: Collection, + ) = generateSequence(this) { + findParentOrNull( + lens = lens, + folders = folders, + folder = it, + ) + } + + private fun findParentOrNull( + lens: (T) -> String, + folders: Collection, + folder: T, + ) = findParentByNameOrNull( + lens = lens, + folders = folders, + name = lens(folder), + ) + + private fun findParentByNameOrNull( + lens: (T) -> String, + folders: Collection, + name: String, + ): T? { + val index = name.indexOfLast { it == DELIMITER } + if (index == -1) { + // The name does not contain the hierarchy + // symbol, stop searching for the matches. + return null + } + + val parentName = name.substring(0, index) + // Try to find a directory that matches + // parent by the name. + return folders + .firstOrNull { lens(it) == parentName } + // Otherwise search one level deeper. + ?: findParentByNameOrNull( + lens = lens, + folders = folders, + name = parentName, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetFolderTreeById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetFolderTreeById.kt new file mode 100644 index 00000000..039fde61 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetFolderTreeById.kt @@ -0,0 +1,59 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.model.DFolderTree +import com.artemchep.keyguard.common.usecase.GetFolderTree +import com.artemchep.keyguard.common.usecase.GetFolderTreeById +import com.artemchep.keyguard.common.usecase.GetFolders +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.coroutines.CoroutineContext + +/** + * @author Artem Chepurnyi + */ +class GetFolderTreeByIdImpl( + private val getFolders: GetFolders, + private val getFolderTree: GetFolderTree, + private val dispatcher: CoroutineContext = Dispatchers.Default, +) : GetFolderTreeById { + companion object { + private const val TAG = "GetFolderTreeById.bitwarden" + } + + constructor(directDI: DirectDI) : this( + getFolders = directDI.instance(), + getFolderTree = directDI.instance(), + ) + + override fun invoke( + folderId: String, + ): Flow = getFolders() + .map { allFolders -> + // First start with finding a target folder, + // we will later use it to form the hierarchy. + val target = allFolders.firstOrNull { it.id == folderId } + ?: return@map null + val folders = allFolders + .filter { it.accountId == target.accountId } + + val tree = getFolderTree.invoke( + lens = { it.name }, + folders, + target, + ) + DFolderTree( + folder = target, + hierarchy = tree + .hierarchy + .map { + DFolderTree.Node( + name = it.name, + folder = it.folder, + ) + }, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetFolders.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetFolders.kt new file mode 100644 index 00000000..07a031e9 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetFolders.kt @@ -0,0 +1,52 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.model.DFolder +import com.artemchep.keyguard.common.service.logging.LogRepository +import com.artemchep.keyguard.common.usecase.GetFolders +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.common.util.withLogTimeOfFirstEvent +import com.artemchep.keyguard.core.store.bitwarden.BitwardenFolder +import com.artemchep.keyguard.provider.bitwarden.mapper.toDomain +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenFolderRepository +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.shareIn +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.coroutines.CoroutineContext + +/** + * @author Artem Chepurnyi + */ +class GetFoldersImpl( + private val logRepository: LogRepository, + private val folderRepository: BitwardenFolderRepository, + private val windowCoroutineScope: WindowCoroutineScope, + private val dispatcher: CoroutineContext = Dispatchers.Default, +) : GetFolders { + companion object { + private const val TAG = "GetFolders.bitwarden" + } + + constructor(directDI: DirectDI) : this( + logRepository = directDI.instance(), + folderRepository = directDI.instance(), + windowCoroutineScope = directDI.instance(), + ) + + private val sharedFlow = folderRepository + .get() + .map { list -> + list + .distinctBy { it.folderId to it.accountId } + .map(BitwardenFolder::toDomain) + } + .withLogTimeOfFirstEvent(logRepository, TAG) + .flowOn(dispatcher) + .shareIn(windowCoroutineScope, SharingStarted.WhileSubscribed(5000L), replay = 1) + + override fun invoke(): Flow> = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetMetas.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetMetas.kt new file mode 100644 index 00000000..0bdc3961 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetMetas.kt @@ -0,0 +1,46 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.model.DMeta +import com.artemchep.keyguard.common.usecase.GetMetas +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.core.store.bitwarden.BitwardenMeta +import com.artemchep.keyguard.provider.bitwarden.mapper.toDomain +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenMetaRepository +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.shareIn +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.coroutines.CoroutineContext + +/** + * @author Artem Chepurnyi + */ +class GetMetasImpl( + private val metaRepository: BitwardenMetaRepository, + private val windowCoroutineScope: WindowCoroutineScope, + private val dispatcher: CoroutineContext = Dispatchers.Default, +) : GetMetas { + companion object { + private const val TAG = "GetMetas.bitwarden" + } + + constructor(directDI: DirectDI) : this( + metaRepository = directDI.instance(), + windowCoroutineScope = directDI.instance(), + ) + + private val sharedFlow = metaRepository + .get() + .map { list -> + list + .map(BitwardenMeta::toDomain) + } + .flowOn(dispatcher) + .shareIn(windowCoroutineScope, SharingStarted.WhileSubscribed(5000L), replay = 1) + + override fun invoke(): Flow> = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizations.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizations.kt new file mode 100644 index 00000000..b2e69844 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetOrganizations.kt @@ -0,0 +1,52 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.model.DOrganization +import com.artemchep.keyguard.common.service.logging.LogRepository +import com.artemchep.keyguard.common.usecase.GetOrganizations +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.common.util.withLogTimeOfFirstEvent +import com.artemchep.keyguard.core.store.bitwarden.BitwardenOrganization +import com.artemchep.keyguard.provider.bitwarden.mapper.toDomain +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenOrganizationRepository +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.shareIn +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.coroutines.CoroutineContext + +/** + * @author Artem Chepurnyi + */ +class GetOrganizationsImpl( + private val logRepository: LogRepository, + private val organizationRepository: BitwardenOrganizationRepository, + private val windowCoroutineScope: WindowCoroutineScope, + private val dispatcher: CoroutineContext = Dispatchers.Default, +) : GetOrganizations { + companion object { + private const val TAG = "GetOrganizations.bitwarden" + } + + constructor(directDI: DirectDI) : this( + logRepository = directDI.instance(), + organizationRepository = directDI.instance(), + windowCoroutineScope = directDI.instance(), + ) + + private val sharedFlow = organizationRepository + .get() + .map { list -> + list + .distinctBy { it.organizationId to it.accountId } + .map(BitwardenOrganization::toDomain) + } + .withLogTimeOfFirstEvent(logRepository, TAG) + .flowOn(dispatcher) + .shareIn(windowCoroutineScope, SharingStarted.WhileSubscribed(5000L), replay = 1) + + override fun invoke(): Flow> = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetProfiles.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetProfiles.kt new file mode 100644 index 00000000..004c7ca7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetProfiles.kt @@ -0,0 +1,60 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.model.DProfile +import com.artemchep.keyguard.common.usecase.GetProfiles +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.provider.bitwarden.api.builder.buildHost +import com.artemchep.keyguard.provider.bitwarden.api.builder.buildWebVaultUrl +import com.artemchep.keyguard.provider.bitwarden.mapper.toDomain +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenProfileRepository +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenTokenRepository +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.shareIn +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.coroutines.CoroutineContext + +/** + * @author Artem Chepurnyi + */ +class GetProfilesImpl( + private val tokenRepository: BitwardenTokenRepository, + private val profileRepository: BitwardenProfileRepository, + private val windowCoroutineScope: WindowCoroutineScope, + private val dispatcher: CoroutineContext = Dispatchers.Default, +) : GetProfiles { + companion object { + private const val TAG = "GetProfiles.bitwarden" + } + + constructor(directDI: DirectDI) : this( + tokenRepository = directDI.instance(), + profileRepository = directDI.instance(), + windowCoroutineScope = directDI.instance(), + ) + + private val sharedFlow = combine( + tokenRepository.get(), + profileRepository.get(), + ) { tokens, profiles -> + profiles + .mapNotNull { profile -> + val token = tokens.firstOrNull { it.id == profile.accountId } + ?: return@mapNotNull null + val env = token.env.back() + profile.toDomain( + accountHost = env.buildHost(), + accountUrl = env.buildWebVaultUrl(), + ) + } + .sorted() + } + .flowOn(dispatcher) + .shareIn(windowCoroutineScope, SharingStarted.WhileSubscribed(5000L), replay = 1) + + override fun invoke(): Flow> = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetSends.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetSends.kt new file mode 100644 index 00000000..255844d9 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/GetSends.kt @@ -0,0 +1,52 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.model.DSend +import com.artemchep.keyguard.common.service.logging.LogRepository +import com.artemchep.keyguard.common.usecase.GetSends +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.common.util.withLogTimeOfFirstEvent +import com.artemchep.keyguard.provider.bitwarden.mapper.toDomain +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenSendRepository +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.shareIn +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.coroutines.CoroutineContext + +/** + * @author Artem Chepurnyi + */ +class GetSendsImpl( + private val logRepository: LogRepository, + private val sendRepository: BitwardenSendRepository, + private val windowCoroutineScope: WindowCoroutineScope, + private val dispatcher: CoroutineContext = Dispatchers.Default, +) : GetSends { + companion object { + private const val TAG = "GetSends.bitwarden" + } + + constructor(directDI: DirectDI) : this( + logRepository = directDI.instance(), + sendRepository = directDI.instance(), + windowCoroutineScope = directDI.instance(), + ) + + private val sharedFlow = sendRepository + .get() + .map { list -> + list + .map { + it.toDomain() + } + } + .withLogTimeOfFirstEvent(logRepository, TAG) + .flowOn(dispatcher) + .shareIn(windowCoroutineScope, SharingStarted.WhileSubscribed(5000L), replay = 1) + + override fun invoke(): Flow> = sharedFlow +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/MergeFolderById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/MergeFolderById.kt new file mode 100644 index 00000000..2905cd99 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/MergeFolderById.kt @@ -0,0 +1,28 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.ioUnit +import com.artemchep.keyguard.common.usecase.MergeFolderById +import com.artemchep.keyguard.provider.bitwarden.usecase.util.ModifyFolderById +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class MergeFolderByIdImpl( + private val modifyFolderById: ModifyFolderById, +) : MergeFolderById { + companion object { + private const val TAG = "MergeFolderById.bitwarden" + } + + constructor(directDI: DirectDI) : this( + modifyFolderById = directDI.instance(), + ) + + override fun invoke( + folderIds: Set, + folderName: String, + ): IO = ioUnit() +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/MoveCipherToFolderById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/MoveCipherToFolderById.kt new file mode 100644 index 00000000..76660dc3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/MoveCipherToFolderById.kt @@ -0,0 +1,70 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.model.FolderOwnership2 +import com.artemchep.keyguard.common.usecase.AddFolder +import com.artemchep.keyguard.common.usecase.MoveCipherToFolderById +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.core.store.bitwarden.nullableFolderId +import com.artemchep.keyguard.feature.confirmation.organization.FolderInfo +import com.artemchep.keyguard.provider.bitwarden.usecase.util.ModifyCipherById +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class MoveCipherToFolderByIdImpl( + private val modifyCipherById: ModifyCipherById, + private val addFolder: AddFolder, +) : MoveCipherToFolderById { + companion object { + private const val TAG = "MoveCipherToFolderById.bitwarden" + } + + constructor(directDI: DirectDI) : this( + modifyCipherById = directDI.instance(), + addFolder = directDI.instance(), + ) + + override fun invoke( + cipherIds: Set, + ownership: FolderOwnership2, + ): IO = ioEffect { + val folderId = when (val folder = ownership.folder) { + is FolderInfo.None -> null + is FolderInfo.New -> { + val accountId = AccountId(ownership.accountId) + val rq = mapOf( + accountId to folder.name, + ) + val rs = addFolder(rq) + .bind() + rs.first() + } + + is FolderInfo.Id -> folder.id + } + performSetFolder( + cipherIds = cipherIds, + folderId = folderId, + ).map { Unit }.bind() + } + + private fun performSetFolder( + cipherIds: Set, + folderId: String?, + ) = modifyCipherById( + cipherIds, + ) { model -> + var new = model + new = new.copy( + data_ = BitwardenCipher.nullableFolderId.set(new.data_, folderId), + ) + new + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/PutAccountColorById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/PutAccountColorById.kt new file mode 100644 index 00000000..136cd558 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/PutAccountColorById.kt @@ -0,0 +1,117 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import androidx.compose.ui.graphics.Color +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.io.flatMap +import com.artemchep.keyguard.common.io.ioUnit +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.io.parallel +import com.artemchep.keyguard.common.io.toIO +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.service.logging.LogRepository +import com.artemchep.keyguard.common.service.text.Base64Service +import com.artemchep.keyguard.common.usecase.PutAccountColorById +import com.artemchep.keyguard.common.util.toHex +import com.artemchep.keyguard.core.store.DatabaseManager +import com.artemchep.keyguard.core.store.bitwarden.BitwardenProfile +import com.artemchep.keyguard.core.store.bitwarden.avatarColor +import com.artemchep.keyguard.provider.bitwarden.api.builder.api +import com.artemchep.keyguard.provider.bitwarden.api.builder.avatar +import com.artemchep.keyguard.provider.bitwarden.entity.AvatarRequestEntity +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenProfileRepository +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenTokenRepository +import com.artemchep.keyguard.provider.bitwarden.usecase.util.withRefreshableAccessToken +import io.ktor.client.HttpClient +import kotlinx.coroutines.Dispatchers +import kotlinx.serialization.json.Json +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class PutAccountColorByIdImpl( + private val logRepository: LogRepository, + private val tokenRepository: BitwardenTokenRepository, + private val profileRepository: BitwardenProfileRepository, + private val base64Service: Base64Service, + private val json: Json, + private val httpClient: HttpClient, + private val db: DatabaseManager, +) : PutAccountColorById { + companion object { + private const val TAG = "PutAccountColor.bitwarden" + } + + constructor(directDI: DirectDI) : this( + logRepository = directDI.instance(), + tokenRepository = directDI.instance(), + profileRepository = directDI.instance(), + base64Service = directDI.instance(), + json = directDI.instance(), + httpClient = directDI.instance(), + db = directDI.instance(), + ) + + override fun invoke( + request: Map, + ): IO = request + .entries + .map { entry -> + putAccountColorIo( + accountId = entry.key, + color = entry.value, + ) + } + .parallel(Dispatchers.Default) + .map { + // Do not return the result. + } + + private fun putAccountColorIo( + accountId: AccountId, + color: Color, + ) = tokenRepository + .getById(accountId) + .effectMap { user -> + requireNotNull(user) { + "Failed to find account tokens!" + } + + val colorString = color.toHex() + val request = AvatarRequestEntity( + avatarColor = colorString, + ) + withRefreshableAccessToken( + base64Service = base64Service, + httpClient = httpClient, + json = json, + db = db, + user = user, + ) { latestUser -> + val serverEnv = latestUser.env.back() + val accessToken = requireNotNull(latestUser.token).accessToken + serverEnv.api.accounts.avatar( + httpClient = httpClient, + env = serverEnv, + token = accessToken, + model = request, + ) + } + + // TODO: Instead of using cached profile model, use the one returned + // from the avatar update call. + profileRepository + .getById(accountId) + .toIO() + .flatMap { profileOrNull -> + val currentProfile = profileOrNull + ?: return@flatMap ioUnit() + val newProfile = BitwardenProfile.avatarColor.set(currentProfile, colorString) + profileRepository.put(newProfile) + } + .bind() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/PutAccountMasterPasswordHintById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/PutAccountMasterPasswordHintById.kt new file mode 100644 index 00000000..06d07f53 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/PutAccountMasterPasswordHintById.kt @@ -0,0 +1,111 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.io.parallel +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.service.logging.LogRepository +import com.artemchep.keyguard.common.service.text.Base64Service +import com.artemchep.keyguard.common.usecase.PutAccountMasterPasswordHintById +import com.artemchep.keyguard.core.store.DatabaseManager +import com.artemchep.keyguard.core.store.bitwarden.BitwardenProfile +import com.artemchep.keyguard.core.store.bitwarden.masterPasswordHint +import com.artemchep.keyguard.provider.bitwarden.api.builder.api +import com.artemchep.keyguard.provider.bitwarden.api.builder.profile +import com.artemchep.keyguard.provider.bitwarden.entity.ProfileRequestEntity +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenProfileRepository +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenTokenRepository +import com.artemchep.keyguard.provider.bitwarden.usecase.util.withRefreshableAccessToken +import io.ktor.client.HttpClient +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.first +import kotlinx.serialization.json.Json +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class PutAccountMasterPasswordHintByIdImpl( + private val logRepository: LogRepository, + private val tokenRepository: BitwardenTokenRepository, + private val profileRepository: BitwardenProfileRepository, + private val base64Service: Base64Service, + private val json: Json, + private val httpClient: HttpClient, + private val db: DatabaseManager, +) : PutAccountMasterPasswordHintById { + companion object { + private const val TAG = "PutAccountMasterPasswordHintById.bitwarden" + } + + constructor(directDI: DirectDI) : this( + logRepository = directDI.instance(), + tokenRepository = directDI.instance(), + profileRepository = directDI.instance(), + base64Service = directDI.instance(), + json = directDI.instance(), + httpClient = directDI.instance(), + db = directDI.instance(), + ) + + override fun invoke( + request: Map, + ): IO = request + .entries + .map { entry -> + putAccountNameIo( + accountId = entry.key, + masterPasswordHint = entry.value, + ) + } + .parallel(Dispatchers.Default) + .map { + // Do not return the result. + } + + private fun putAccountNameIo( + accountId: AccountId, + masterPasswordHint: String?, + ) = tokenRepository + .getById(accountId) + .effectMap { user -> + requireNotNull(user) { + "Failed to find account tokens!" + } + + val profile = profileRepository + .getById(accountId) + .first()!! + val request = ProfileRequestEntity( + culture = profile.culture.takeIf { it.isNotBlank() }, + name = profile.name.takeIf { it.isNotBlank() }, + masterPasswordHint = masterPasswordHint, + ) + withRefreshableAccessToken( + base64Service = base64Service, + httpClient = httpClient, + json = json, + db = db, + user = user, + ) { latestUser -> + val serverEnv = latestUser.env.back() + val accessToken = requireNotNull(latestUser.token).accessToken + serverEnv.api.accounts.profile( + httpClient = httpClient, + env = serverEnv, + token = accessToken, + model = request, + ) + } + + // TODO: Instead of using cached profile model, use the one returned + // from the avatar update call. + val newProfile = + BitwardenProfile.masterPasswordHint.set(profile, masterPasswordHint.orEmpty()) + profileRepository.put(newProfile) + .bind() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/PutAccountNameById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/PutAccountNameById.kt new file mode 100644 index 00000000..9b8053ae --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/PutAccountNameById.kt @@ -0,0 +1,110 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.io.parallel +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.service.logging.LogRepository +import com.artemchep.keyguard.common.service.text.Base64Service +import com.artemchep.keyguard.common.usecase.PutAccountNameById +import com.artemchep.keyguard.core.store.DatabaseManager +import com.artemchep.keyguard.core.store.bitwarden.BitwardenProfile +import com.artemchep.keyguard.core.store.bitwarden.name +import com.artemchep.keyguard.provider.bitwarden.api.builder.api +import com.artemchep.keyguard.provider.bitwarden.api.builder.profile +import com.artemchep.keyguard.provider.bitwarden.entity.ProfileRequestEntity +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenProfileRepository +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenTokenRepository +import com.artemchep.keyguard.provider.bitwarden.usecase.util.withRefreshableAccessToken +import io.ktor.client.HttpClient +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.first +import kotlinx.serialization.json.Json +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class PutAccountNameByIdImpl( + private val logRepository: LogRepository, + private val tokenRepository: BitwardenTokenRepository, + private val profileRepository: BitwardenProfileRepository, + private val base64Service: Base64Service, + private val json: Json, + private val httpClient: HttpClient, + private val db: DatabaseManager, +) : PutAccountNameById { + companion object { + private const val TAG = "PutAccountNameById.bitwarden" + } + + constructor(directDI: DirectDI) : this( + logRepository = directDI.instance(), + tokenRepository = directDI.instance(), + profileRepository = directDI.instance(), + base64Service = directDI.instance(), + json = directDI.instance(), + httpClient = directDI.instance(), + db = directDI.instance(), + ) + + override fun invoke( + request: Map, + ): IO = request + .entries + .map { entry -> + putAccountNameIo( + accountId = entry.key, + accountName = entry.value, + ) + } + .parallel(Dispatchers.Default) + .map { + // Do not return the result. + } + + private fun putAccountNameIo( + accountId: AccountId, + accountName: String, + ) = tokenRepository + .getById(accountId) + .effectMap { user -> + requireNotNull(user) { + "Failed to find account tokens!" + } + + val profile = profileRepository + .getById(accountId) + .first()!! + val request = ProfileRequestEntity( + culture = profile.culture.takeIf { it.isNotBlank() }, + name = accountName, + masterPasswordHint = profile.masterPasswordHint?.takeIf { it.isNotBlank() }, + ) + withRefreshableAccessToken( + base64Service = base64Service, + httpClient = httpClient, + json = json, + db = db, + user = user, + ) { latestUser -> + val serverEnv = latestUser.env.back() + val accessToken = requireNotNull(latestUser.token).accessToken + serverEnv.api.accounts.profile( + httpClient = httpClient, + env = serverEnv, + token = accessToken, + model = request, + ) + } + + // TODO: Instead of using cached profile model, use the one returned + // from the avatar update call. + val newProfile = BitwardenProfile.name.set(profile, accountName) + profileRepository.put(newProfile) + .bind() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/QueueSyncAll.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/QueueSyncAll.kt new file mode 100644 index 00000000..9ccd55ae --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/QueueSyncAll.kt @@ -0,0 +1,32 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.QueueSyncAll +import com.artemchep.keyguard.common.usecase.SyncAll +import kotlinx.coroutines.GlobalScope +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class QueueSyncAllImpl( + private val syncAll: SyncAll, +) : QueueSyncAll { + companion object { + private const val TAG = "QueueSyncById.bitwarden" + } + + constructor(directDI: DirectDI) : this( + syncAll = directDI.instance(), + ) + + override fun invoke(): IO = ioEffect { + syncAll() + .attempt() + .launchIn(GlobalScope) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/QueueSyncById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/QueueSyncById.kt new file mode 100644 index 00000000..491912d5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/QueueSyncById.kt @@ -0,0 +1,33 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.usecase.QueueSyncById +import com.artemchep.keyguard.common.usecase.SyncById +import kotlinx.coroutines.GlobalScope +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class QueueSyncByIdImpl( + private val syncById: SyncById, +) : QueueSyncById { + companion object { + private const val TAG = "QueueSyncById.bitwarden" + } + + constructor(directDI: DirectDI) : this( + syncById = directDI.instance(), + ) + + override fun invoke(accountId: AccountId): IO = ioEffect { + syncById(accountId) + .attempt() + .launchIn(GlobalScope) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RePromptCipherById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RePromptCipherById.kt new file mode 100644 index 00000000..ebc16037 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RePromptCipherById.kt @@ -0,0 +1,44 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.usecase.RePromptCipherById +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.core.store.bitwarden.reprompt +import com.artemchep.keyguard.provider.bitwarden.usecase.util.ModifyCipherById +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class RePromptCipherByIdImpl( + private val modifyCipherById: ModifyCipherById, +) : RePromptCipherById { + companion object { + private const val TAG = "FavouriteCipherById.bitwarden" + } + + constructor(directDI: DirectDI) : this( + modifyCipherById = directDI.instance(), + ) + + override fun invoke( + cipherIds: Set, + reprompt: Boolean, + ): IO = modifyCipherById( + cipherIds, + ) { model -> + val type = if (reprompt) { + BitwardenCipher.RepromptType.Password + } else { + BitwardenCipher.RepromptType.None + } + + var new = model + new = new.copy( + data_ = BitwardenCipher.reprompt.set(new.data_, type), + ) + new + }.map { Unit } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RemoveAccountById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RemoveAccountById.kt new file mode 100644 index 00000000..b3b0daab --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RemoveAccountById.kt @@ -0,0 +1,53 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.parallel +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.model.AccountTask +import com.artemchep.keyguard.common.usecase.RemoveAccountById +import com.artemchep.keyguard.common.usecase.Watchdog +import com.artemchep.keyguard.common.usecase.unit +import com.artemchep.keyguard.core.store.DatabaseManager +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class RemoveAccountByIdImpl( + private val db: DatabaseManager, + private val watchdog: Watchdog, +) : RemoveAccountById { + companion object { + private const val TAG = "RemoveAccountById.bitwarden" + } + + constructor(directDI: DirectDI) : this( + db = directDI.instance(), + watchdog = directDI.instance(), + ) + + override fun invoke( + accountIds: Set, + ): IO = accountIds + .map { accountId -> + watchdog + .track( + accountId = accountId, + accountTask = AccountTask.REMOVE, + io = performRemoveAccount( + accountId = accountId, + ), + ) + } + .parallel() + .unit() + + private fun performRemoveAccount( + accountId: AccountId, + ) = db + .mutate { database -> + val dao = database.accountQueries + dao.deleteByAccountId(accountId.id) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RemoveAccounts.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RemoveAccounts.kt new file mode 100644 index 00000000..ae8a01d6 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RemoveAccounts.kt @@ -0,0 +1,28 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.usecase.RemoveAccounts +import com.artemchep.keyguard.core.store.DatabaseManager +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class RemoveAccountsImpl( + private val db: DatabaseManager, +) : RemoveAccounts { + companion object { + private const val TAG = "RemoveAccounts.bitwarden" + } + + constructor(directDI: DirectDI) : this( + db = directDI.instance(), + ) + + override fun invoke(): IO = db + .mutate { database -> + val dao = database.accountQueries + dao.deleteAll() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RemoveCipherById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RemoveCipherById.kt new file mode 100644 index 00000000..620e076e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RemoveCipherById.kt @@ -0,0 +1,45 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.usecase.RemoveCipherById +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.core.store.bitwarden.deleted +import com.artemchep.keyguard.core.store.bitwarden.service +import com.artemchep.keyguard.provider.bitwarden.usecase.util.ModifyCipherById +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class RemoveCipherByIdImpl( + private val modifyCipherById: ModifyCipherById, +) : RemoveCipherById { + companion object { + private const val TAG = "RemoveCipherById.bitwarden" + } + + constructor(directDI: DirectDI) : this( + modifyCipherById = directDI.instance(), + ) + + override fun invoke( + cipherIds: Set, + ): IO = performRemoveCipher( + cipherIds = cipherIds, + ).map { Unit } + + private fun performRemoveCipher( + cipherIds: Set, + ) = modifyCipherById( + cipherIds = cipherIds, + checkIfStub = false, // we want to be able to delete failed items + ) { model -> + var new = model + new = new.copy( + data_ = BitwardenCipher.service.deleted.set(new.data_, true), + ) + new + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RemoveEmailRelayById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RemoveEmailRelayById.kt new file mode 100644 index 00000000..43986ef0 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RemoveEmailRelayById.kt @@ -0,0 +1,34 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.service.relays.repo.GeneratorEmailRelayRepository +import com.artemchep.keyguard.common.usecase.RemoveEmailRelayById +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class RemoveEmailRelayByIdImpl( + private val generatorEmailRelayRepository: GeneratorEmailRelayRepository, +) : RemoveEmailRelayById { + companion object { + private const val TAG = "RemoveEmailRelayById.bitwarden" + } + + constructor(directDI: DirectDI) : this( + generatorEmailRelayRepository = directDI.instance(), + ) + + override fun invoke( + emailRelayIds: Set, + ): IO = performRemoveEmailRelay( + emailRelayIds = emailRelayIds, + ).map { Unit } + + private fun performRemoveEmailRelay( + emailRelayIds: Set, + ) = generatorEmailRelayRepository + .removeByIds(emailRelayIds) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RemoveFolderById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RemoveFolderById.kt new file mode 100644 index 00000000..c713f87c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RemoveFolderById.kt @@ -0,0 +1,60 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.flatMap +import com.artemchep.keyguard.common.io.ioUnit +import com.artemchep.keyguard.common.usecase.RemoveFolderById +import com.artemchep.keyguard.common.usecase.TrashCipherByFolderId +import com.artemchep.keyguard.core.store.bitwarden.BitwardenFolder +import com.artemchep.keyguard.core.store.bitwarden.deleted +import com.artemchep.keyguard.core.store.bitwarden.service +import com.artemchep.keyguard.provider.bitwarden.usecase.util.ModifyFolderById +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class RemoveFolderByIdImpl( + private val modifyFolderById: ModifyFolderById, + private val trashCipherByFolderId: TrashCipherByFolderId, +) : RemoveFolderById { + companion object { + private const val TAG = "RemoveFolderById.bitwarden" + } + + constructor(directDI: DirectDI) : this( + modifyFolderById = directDI.instance(), + trashCipherByFolderId = directDI.instance(), + ) + + override fun invoke( + folderIds: Set, + onCiphersConflict: RemoveFolderById.OnCiphersConflict, + ): IO = performRemoveFolder( + folderIds = folderIds, + onCiphersConflict = onCiphersConflict, + ).flatMap { + when (onCiphersConflict) { + RemoveFolderById.OnCiphersConflict.TRASH -> performTrashCiphersByFolderId(folderIds) + RemoveFolderById.OnCiphersConflict.IGNORE -> ioUnit() + } + } + + private fun performRemoveFolder( + folderIds: Set, + onCiphersConflict: RemoveFolderById.OnCiphersConflict, + ) = modifyFolderById( + folderIds, + ) { model -> + var new = model + new = new.copy( + data_ = BitwardenFolder.service.deleted.set(new.data_, true), + ) + new + } + + private fun performTrashCiphersByFolderId( + folderIds: Set, + ) = trashCipherByFolderId(folderIds) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RenameFolderById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RenameFolderById.kt new file mode 100644 index 00000000..06473ffc --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RenameFolderById.kt @@ -0,0 +1,45 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.usecase.RenameFolderById +import com.artemchep.keyguard.core.store.bitwarden.BitwardenFolder +import com.artemchep.keyguard.core.store.bitwarden.name +import com.artemchep.keyguard.provider.bitwarden.usecase.util.ModifyFolderById +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class RenameFolderByIdImpl( + private val modifyFolderById: ModifyFolderById, +) : RenameFolderById { + companion object { + private const val TAG = "RenameFolderById.bitwarden" + } + + constructor(directDI: DirectDI) : this( + modifyFolderById = directDI.instance(), + ) + + override fun invoke( + folderIdsToNames: Map, + ): IO = performRenameFolder( + folderIdsToNames = folderIdsToNames, + ) + + private fun performRenameFolder( + folderIdsToNames: Map, + ) = modifyFolderById( + folderIdsToNames + .keys, + ) { model -> + val newName = folderIdsToNames.getValue(model.folderId) + + var new = model + new = new.copy( + data_ = BitwardenFolder.name.set(new.data_, newName), + ) + new + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RestoreCipherById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RestoreCipherById.kt new file mode 100644 index 00000000..1a2d1cc5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RestoreCipherById.kt @@ -0,0 +1,44 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.usecase.RestoreCipherById +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.core.store.bitwarden.nullableDeletedDate +import com.artemchep.keyguard.provider.bitwarden.usecase.util.ModifyCipherById +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class RestoreCipherByIdImpl( + private val modifyCipherById: ModifyCipherById, +) : RestoreCipherById { + companion object { + private const val TAG = "RestoreCipherById.bitwarden" + } + + constructor(directDI: DirectDI) : this( + modifyCipherById = directDI.instance(), + ) + + override fun invoke( + cipherIds: Set, + ): IO = performRestoreCipher( + cipherIds = cipherIds, + ).map { Unit } + + private fun performRestoreCipher( + cipherIds: Set, + ) = modifyCipherById( + cipherIds, + ) { model -> + var new = model + // Un-trash the model. + new = model.copy( + data_ = BitwardenCipher.nullableDeletedDate.set(new.data_, null), + ) + new + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RetryCipher.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RetryCipher.kt new file mode 100644 index 00000000..693f6f84 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/RetryCipher.kt @@ -0,0 +1,32 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.usecase.RetryCipher +import com.artemchep.keyguard.provider.bitwarden.usecase.util.ModifyCipherById +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class RetryCipherImpl( + private val modifyCipherById: ModifyCipherById, +) : RetryCipher { + companion object { + private const val TAG = "RetryCipher.bitwarden" + } + + constructor(directDI: DirectDI) : this( + modifyCipherById = directDI.instance(), + ) + + override fun invoke( + cipherIds: Set, + ): IO = modifyCipherById( + cipherIds = cipherIds, + checkIfChanged = false, + ) { model -> + model // change nothing + }.map { Unit } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/SyncAll.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/SyncAll.kt new file mode 100644 index 00000000..1a7e923f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/SyncAll.kt @@ -0,0 +1,57 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.flatMap +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.io.parallel +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.service.logging.LogRepository +import com.artemchep.keyguard.common.usecase.SyncAll +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenTokenRepository +import com.artemchep.keyguard.provider.bitwarden.usecase.internal.SyncByToken +import kotlinx.coroutines.Dispatchers +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class SyncAllImpl( + private val logRepository: LogRepository, + private val tokenRepository: BitwardenTokenRepository, + private val syncByToken: SyncByToken, +) : SyncAll { + companion object { + private const val TAG = "SyncAll.bitwarden" + } + + constructor(directDI: DirectDI) : this( + logRepository = directDI.instance(), + tokenRepository = directDI.instance(), + syncByToken = directDI.instance(), + ) + + override fun invoke() = tokenRepository.getSnapshot() + .flatMap { tokens -> + logRepository.post( + tag = TAG, + message = "Loaded ${tokens.size} accounts from the store.", + ) + + // Sync all of the accounts simultaneously, on errors do not + // interrupt other io-es. + tokens + .map { token -> + syncByToken(token) + .attempt() + .map { either -> + val accountId = AccountId(token.id) + accountId to either + } + } + .parallel(Dispatchers.IO) + .map { list -> + list.toMap() + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/SyncById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/SyncById.kt new file mode 100644 index 00000000..68edbaf5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/SyncById.kt @@ -0,0 +1,50 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.flatMap +import com.artemchep.keyguard.common.io.io +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.usecase.SyncById +import com.artemchep.keyguard.provider.bitwarden.repository.BitwardenTokenRepository +import com.artemchep.keyguard.provider.bitwarden.usecase.internal.SyncByToken +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class SyncByIdImpl( + private val tokenRepository: BitwardenTokenRepository, + private val syncByToken: SyncByToken, +) : SyncById { + companion object { + private const val TAG = "SyncById.bitwarden" + } + + constructor(directDI: DirectDI) : this( + tokenRepository = directDI.instance(), + syncByToken = directDI.instance(), + ) + + override fun invoke(accountId: AccountId): IO = tokenRepository.getSnapshot() + // Find the correct account model + // by its account id. + .map { accounts -> + accounts + .firstOrNull { it.id == accountId.id } + } + .flatMap { token -> + if (token == null) { + // We could not find the tokens + // for this account. + return@flatMap io(false) + } + + syncByToken(token) + .map { + // Handled successfully. + true + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/TrashCipherByFolderId.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/TrashCipherByFolderId.kt new file mode 100644 index 00000000..0c342dfb --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/TrashCipherByFolderId.kt @@ -0,0 +1,50 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.io.flatMap +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.io.toIO +import com.artemchep.keyguard.common.usecase.GetCiphers +import com.artemchep.keyguard.common.usecase.TrashCipherByFolderId +import com.artemchep.keyguard.common.usecase.TrashCipherById +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class TrashCipherByFolderIdImpl( + private val getCiphers: GetCiphers, + private val trashCipherById: TrashCipherById, +) : TrashCipherByFolderId { + companion object { + private const val TAG = "TrashCipherByFolderId.bitwarden" + } + + constructor(directDI: DirectDI) : this( + getCiphers = directDI.instance(), + trashCipherById = directDI.instance(), + ) + + override fun invoke( + folderIds: Set, + ): IO = performTrashCipherByFolderId( + folderIds = folderIds, + ).map { Unit } + + private fun performTrashCipherByFolderId( + folderIds: Set, + ) = getCiphers() + .toIO() + .effectMap { ciphers -> + ciphers + .asSequence() + .filter { it.folderId in folderIds } + .map { it.id } + .toSet() + } + .flatMap { cipherIds -> + trashCipherById(cipherIds) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/TrashCipherById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/TrashCipherById.kt new file mode 100644 index 00000000..30b5df45 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/TrashCipherById.kt @@ -0,0 +1,51 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.usecase.TrashCipherById +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.core.store.bitwarden.deletedDate +import com.artemchep.keyguard.provider.bitwarden.usecase.util.ModifyCipherById +import kotlinx.datetime.Clock +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class TrashCipherByIdImpl( + private val modifyCipherById: ModifyCipherById, +) : TrashCipherById { + companion object { + private const val TAG = "TrashCipherById.bitwarden" + } + + constructor(directDI: DirectDI) : this( + modifyCipherById = directDI.instance(), + ) + + override fun invoke( + cipherIds: Set, + ): IO = performTrashCipher( + cipherIds = cipherIds, + ).map { Unit } + + private fun performTrashCipher( + cipherIds: Set, + ) = modifyCipherById( + cipherIds, + // Bitwarden does not update revision date of a + // trashed cipher. + updateRevisionDate = false, + ) { model -> + var new = model + // Add the deleted instant to mark the model as trashed. + // This does not actually remove the cipher, it + // only puts it in the bin. + val now = Clock.System.now() + new = new.copy( + data_ = BitwardenCipher.deletedDate.set(new.data_, now), + ) + new + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/internal/AddAccount.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/internal/AddAccount.kt new file mode 100644 index 00000000..9e5a5635 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/internal/AddAccount.kt @@ -0,0 +1,15 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase.internal + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.provider.bitwarden.ServerEnv +import com.artemchep.keyguard.provider.bitwarden.ServerTwoFactorToken + +interface AddAccount : ( + String?, + ServerEnv, + ServerTwoFactorToken?, + String?, + String, + String, +) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/internal/AddAccountImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/internal/AddAccountImpl.kt new file mode 100644 index 00000000..89415dad --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/internal/AddAccountImpl.kt @@ -0,0 +1,139 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase.internal + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.effectTap +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.io.measure +import com.artemchep.keyguard.common.io.toIO +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.service.crypto.CryptoGenerator +import com.artemchep.keyguard.common.service.logging.LogRepository +import com.artemchep.keyguard.common.service.text.Base64Service +import com.artemchep.keyguard.common.usecase.DeviceIdUseCase +import com.artemchep.keyguard.common.usecase.GetAccounts +import com.artemchep.keyguard.common.usecase.GetPurchased +import com.artemchep.keyguard.common.usecase.QueueSyncById +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.common.usecase.premium +import com.artemchep.keyguard.core.store.DatabaseManager +import com.artemchep.keyguard.core.store.bitwarden.BitwardenToken +import com.artemchep.keyguard.provider.bitwarden.ServerEnv +import com.artemchep.keyguard.provider.bitwarden.ServerTwoFactorToken +import com.artemchep.keyguard.provider.bitwarden.api.login +import io.ktor.client.HttpClient +import kotlinx.coroutines.Dispatchers +import kotlinx.serialization.json.Json +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class AddAccountImpl( + private val getPurchased: GetPurchased, + private val getAccounts: GetAccounts, + private val queueSyncById: QueueSyncById, + private val windowCoroutineScope: WindowCoroutineScope, + private val logRepository: LogRepository, + private val deviceIdUseCase: DeviceIdUseCase, + private val cryptoGenerator: CryptoGenerator, + private val base64Service: Base64Service, + private val httpClient: HttpClient, + private val json: Json, + private val db: DatabaseManager, +) : AddAccount { + companion object { + private const val TAG = "AddAccount.bitwarden" + } + + private val needsPremiumToAddAccountIo = getAccounts() + .toIO() + .map { accounts -> accounts.size > 1 } + + constructor(directDI: DirectDI) : this( + getPurchased = directDI.instance(), + getAccounts = directDI.instance(), + queueSyncById = directDI.instance(), + windowCoroutineScope = directDI.instance(), + logRepository = directDI.instance(), + deviceIdUseCase = directDI.instance(), + cryptoGenerator = directDI.instance(), + base64Service = directDI.instance(), + httpClient = directDI.instance(), + json = directDI.instance(), + db = directDI.instance(), + ) + + override fun invoke( + accountId: String?, + env: ServerEnv, + twoFactorToken: ServerTwoFactorToken?, + clientSecret: String?, + email: String, + password: String, + ): IO = ioEffect(Dispatchers.Default) { + val (cryptoSecrets, apiSecrets) = login( + deviceIdUseCase = deviceIdUseCase, + cryptoGenerator = cryptoGenerator, + base64Service = base64Service, + httpClient = httpClient, + json = json, + env = env, + twoFactorToken = twoFactorToken, + clientSecret = clientSecret?.takeUnless { it.isBlank() }, + email = email, + password = password, + ) + if (accountId != null) { + // TODO: Validate that the old account matches a new one. + // This may save you from merging two unrelated ciphers together. + } + val token = BitwardenToken( + id = accountId ?: cryptoGenerator.uuid(), + key = BitwardenToken.Key( + masterKeyBase64 = base64Service.encodeToString(cryptoSecrets.masterKey), + passwordKeyBase64 = base64Service.encodeToString(cryptoSecrets.passwordKey), + encryptionKeyBase64 = base64Service.encodeToString(cryptoSecrets.encryptionKey), + macKeyBase64 = base64Service.encodeToString(cryptoSecrets.macKey), + ), + token = BitwardenToken.Token( + refreshToken = apiSecrets.refreshToken, + accessToken = apiSecrets.accessToken, + expirationDate = apiSecrets.accessTokenExpiryDate, + ), + user = BitwardenToken.User( + email = email, + ), + env = BitwardenToken.Environment.of( + model = env, + ), + ) + + db.mutate { database -> + database.accountQueries.insert( + accountId = token.id, + data = token, + ) + }.bind() + + AccountId(token.id) + } + // Require premium for adding more than + // one account. + .premium( + getPurchased = getPurchased, + predicate = needsPremiumToAddAccountIo, + ) + .effectTap { finalAccountId -> + queueSyncById(finalAccountId) + .launchIn(windowCoroutineScope) + } + // Log the time spent adding an account. + .measure { duration, finalAccountId -> + val message = "Added an account '$finalAccountId' in $duration." + logRepository.post(TAG, message) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/internal/RequestEmailTfa.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/internal/RequestEmailTfa.kt new file mode 100644 index 00000000..23a58d7d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/internal/RequestEmailTfa.kt @@ -0,0 +1,60 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase.internal + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.service.crypto.CryptoGenerator +import com.artemchep.keyguard.common.service.text.Base64Service +import com.artemchep.keyguard.common.usecase.DeviceIdUseCase +import com.artemchep.keyguard.provider.bitwarden.ServerEnv +import com.artemchep.keyguard.provider.bitwarden.api.builder.api +import com.artemchep.keyguard.provider.bitwarden.api.builder.requestEmailCode +import com.artemchep.keyguard.provider.bitwarden.api.obtainSecrets +import com.artemchep.keyguard.provider.bitwarden.entity.TwoFactorEmailRequestEntity +import io.ktor.client.HttpClient +import org.kodein.di.DirectDI +import org.kodein.di.instance + +interface RequestEmailTfa : ( + ServerEnv, + String, // email + String, // password +) -> IO + +class RequestEmailTfaImpl( + private val deviceIdUseCase: DeviceIdUseCase, + private val cryptoGenerator: CryptoGenerator, + private val base64Service: Base64Service, + private val httpClient: HttpClient, +) : RequestEmailTfa { + constructor(directDI: DirectDI) : this( + deviceIdUseCase = directDI.instance(), + cryptoGenerator = directDI.instance(), + base64Service = directDI.instance(), + httpClient = directDI.instance(), + ) + + override fun invoke( + env: ServerEnv, + email: String, + password: String, + ): IO = ioEffect { + val secrets = obtainSecrets( + cryptoGenerator = cryptoGenerator, + httpClient = httpClient, + env = env, + email = email, + password = password, + ) + val request = TwoFactorEmailRequestEntity( + email = email, + masterPasswordHash = base64Service.encodeToString(secrets.passwordKey), + deviceIdentifier = deviceIdUseCase().bind(), + ) + env.api.twoFactor.requestEmailCode( + httpClient = httpClient, + env = env, + model = request, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByToken.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByToken.kt new file mode 100644 index 00000000..d1d7616a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByToken.kt @@ -0,0 +1,6 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase.internal + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.core.store.bitwarden.BitwardenToken + +interface SyncByToken : (BitwardenToken) -> IO diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl.kt new file mode 100644 index 00000000..a5a5dece --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/internal/SyncByTokenImpl.kt @@ -0,0 +1,161 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase.internal + +import app.cash.sqldelight.coroutines.asFlow +import com.artemchep.keyguard.common.exception.HttpException +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.biFlatTap +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.measure +import com.artemchep.keyguard.common.io.toIO +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.model.AccountTask +import com.artemchep.keyguard.common.service.crypto.CipherEncryptor +import com.artemchep.keyguard.common.service.crypto.CryptoGenerator +import com.artemchep.keyguard.common.service.logging.LogRepository +import com.artemchep.keyguard.common.service.text.Base64Service +import com.artemchep.keyguard.common.usecase.Watchdog +import com.artemchep.keyguard.core.store.DatabaseManager +import com.artemchep.keyguard.core.store.DatabaseSyncer +import com.artemchep.keyguard.core.store.bitwarden.BitwardenMeta +import com.artemchep.keyguard.core.store.bitwarden.BitwardenToken +import com.artemchep.keyguard.provider.bitwarden.api.SyncEngine +import com.artemchep.keyguard.provider.bitwarden.usecase.util.withRefreshableAccessToken +import io.ktor.client.HttpClient +import io.ktor.http.HttpStatusCode +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock +import kotlinx.datetime.Clock +import kotlinx.serialization.json.Json +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class SyncByTokenImpl( + private val logRepository: LogRepository, + private val cipherEncryptor: CipherEncryptor, + private val cryptoGenerator: CryptoGenerator, + private val base64Service: Base64Service, + private val json: Json, + private val httpClient: HttpClient, + private val db: DatabaseManager, + private val dbSyncer: DatabaseSyncer, + private val watchdog: Watchdog, +) : SyncByToken { + companion object { + private const val TAG = "SyncById.bitwarden" + } + + private val mutex = Mutex() + + constructor(directDI: DirectDI) : this( + logRepository = directDI.instance(), + cipherEncryptor = directDI.instance(), + cryptoGenerator = directDI.instance(), + base64Service = directDI.instance(), + json = directDI.instance(), + httpClient = directDI.instance(), + db = directDI.instance(), + dbSyncer = directDI.instance(), + watchdog = directDI.instance(), + ) + + override fun invoke(user: BitwardenToken): IO = watchdog + .track( + accountId = AccountId(user.id), + accountTask = AccountTask.SYNC, + ) { + // We want to automatically request a new access token if the old + // one has expired. + withRefreshableAccessToken( + base64Service = base64Service, + httpClient = httpClient, + json = json, + db = db, + user = user, + ) { latestUser -> + val syncEngine = SyncEngine( + httpClient = httpClient, + dbManager = db, + base64Service = base64Service, + cryptoGenerator = cryptoGenerator, + cipherEncryptor = cipherEncryptor, + logRepository = logRepository, + user = latestUser, + syncer = dbSyncer, + ) + mutex.withLock { + syncEngine.sync() + } +// sss( +// logRepository = logRepository, +// cipherEncryptor = cipherEncryptor, +// cryptoGenerator = cryptoGenerator, +// base64Service = base64Service, +// httpClient = httpClient, +// db = db, +// user = latestUser, +// ) + } + } + .biFlatTap( + ifException = { e -> + db.mutate { + val dao = it.metaQueries + val existingMeta = dao + .getByAccountId(accountId = user.id) + .asFlow() + .map { it.executeAsList().firstOrNull()?.data_ } + .toIO() + .bind() + + val reason = e.localizedMessage ?: e.message + val requiresAuthentication = e is HttpException && + ( + e.statusCode == HttpStatusCode.Unauthorized || + e.statusCode == HttpStatusCode.Forbidden + ) + + val now = Clock.System.now() + val meta = BitwardenMeta( + accountId = user.id, + // Copy the existing successful sync timestamp + // into a new model. + lastSyncTimestamp = existingMeta?.lastSyncTimestamp, + lastSyncResult = BitwardenMeta.LastSyncResult.Failure( + timestamp = now, + reason = reason, + requiresAuthentication = requiresAuthentication, + ), + ) + + dao.insert( + accountId = user.id, + data = meta, + ) + } + }, + ifSuccess = { + db.mutate { + val now = Clock.System.now() + val meta = BitwardenMeta( + accountId = user.id, + lastSyncTimestamp = now, + lastSyncResult = BitwardenMeta.LastSyncResult.Success, + ) + + val dao = it.metaQueries + dao.insert( + accountId = user.id, + data = meta, + ) + } + }, + ) + .measure { duration, _ -> + val message = "Synced user ${user.formatUser()} in $duration." + logRepository.post(TAG, message) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/util/CanModify.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/util/CanModify.kt new file mode 100644 index 00000000..05bae208 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/util/CanModify.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase.util + +import com.artemchep.keyguard.core.store.bitwarden.BitwardenService + +fun BitwardenService.canDelete() = true + +fun BitwardenService.canEdit() = when (error?.code) { + // If the cipher was not properly decoded, then + // prevent it from being edited. + BitwardenService.Error.CODE_DECODING_FAILED -> false + else -> true +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById.kt new file mode 100644 index 00000000..f779f240 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyCipherById.kt @@ -0,0 +1,107 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase.util + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.core.store.bitwarden.login +import com.artemchep.keyguard.data.bitwarden.Cipher +import kotlinx.datetime.Clock +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class ModifyCipherById( + private val modifyDatabase: ModifyDatabase, +) { + companion object { + private const val TAG = "ModifyCipherById.bitwarden" + } + + constructor(directDI: DirectDI) : this( + modifyDatabase = directDI.instance(), + ) + + operator fun invoke( + cipherIds: Set, + checkIfStub: Boolean = true, + checkIfChanged: Boolean = true, + updateRevisionDate: Boolean = true, + transform: suspend (Cipher) -> Cipher, + ): IO> = modifyDatabase { database -> + val dao = database.cipherQueries + val now = Clock.System.now() + val models = dao + .get() + .executeAsList() + .filter { + it.cipherId in cipherIds + } + .mapNotNull { model -> + // If the cipher was not properly decoded, then + // prevent it from being pushed to backend. + val service = model.data_.service + if (checkIfStub && !service.canEdit()) { + return@mapNotNull null + } + var new = model + new = transform(new) + // If the cipher was not changed, then we do not need to + // update it in the database. + if (checkIfChanged && new == model) { + return@mapNotNull null + } + + if (updateRevisionDate) { + // Password revision date: + // When we edit or create an item with a password, we must set the + // passwords revision date. Otherwise you loose the info of when the + // password was created. + val newData = BitwardenCipher.login.modify(new.data_) { login -> + val passwordRevisionDate = login.passwordRevisionDate + ?: new.data_.revisionDate + .takeIf { + login.password != null || + login.passwordHistory.isNotEmpty() + } + login.copy(passwordRevisionDate = passwordRevisionDate) + } + + new = new.copy( + data_ = newData.copy( + revisionDate = now, + ), + ) + } + new + } + if (models.isEmpty()) { + return@modifyDatabase ModifyDatabase.Result( + changedAccountIds = emptySet(), + value = emptySet(), + ) + } + dao.transaction { + models.forEach { cipher -> + dao.insert( + cipherId = cipher.cipherId, + accountId = cipher.accountId, + folderId = cipher.folderId, + data = cipher.data_, + ) + } + } + + val changedAccountIds = models + .map { AccountId(it.accountId) } + .toSet() + val changedCipherIds = models + .map { it.cipherId } + .toSet() + ModifyDatabase.Result( + changedAccountIds = changedAccountIds, + value = changedCipherIds, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase.kt new file mode 100644 index 00000000..2c937a2a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyDatabase.kt @@ -0,0 +1,79 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase.util + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.effectTap +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.usecase.GetCanWrite +import com.artemchep.keyguard.common.usecase.GetWriteAccess +import com.artemchep.keyguard.common.usecase.QueueSyncById +import com.artemchep.keyguard.common.usecase.premium +import com.artemchep.keyguard.core.store.DatabaseManager +import com.artemchep.keyguard.data.Database +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.flow.combine +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class ModifyDatabase( + private val db: DatabaseManager, + private val getCanWrite: GetCanWrite, + private val getWriteAccess: GetWriteAccess, + private val queueSyncById: QueueSyncById, +) { + companion object { + private const val TAG = "ModifyDatabase.bitwarden" + } + + data class Result( + val changedAccountIds: Set, + val value: T, + ) { + companion object { + fun unit( + changedAccountIds: Set = emptySet(), + ) = Result( + changedAccountIds = changedAccountIds, + value = Unit, + ) + } + } + + constructor(directDI: DirectDI) : this( + db = directDI.instance(), + getCanWrite = directDI.instance(), + getWriteAccess = directDI.instance(), + queueSyncById = directDI.instance(), + ) + + operator fun invoke( + block: suspend (Database) -> Result, + ): IO = db + .mutate { database -> + val accountIds = block(database) + accountIds + } + .effectTap { result -> + // TODO: FIX ME + result.changedAccountIds.forEach { + queueSyncById(it) + .launchIn(GlobalScope) + } + // val accountIds = result.changedAccountIds + // SyncWorker.enqueueOnce(context, accountIds) + } + .map { it.value } + // Require premium for modifying a cipher. + .premium( + getPurchased = { + combine( + getCanWrite(), + getWriteAccess(), + ) { a, b -> a && b } + }, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyFolderById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyFolderById.kt new file mode 100644 index 00000000..fb042244 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyFolderById.kt @@ -0,0 +1,78 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase.util + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.data.bitwarden.Folder +import kotlinx.datetime.Clock +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class ModifyFolderById( + private val modifyDatabase: ModifyDatabase, +) { + companion object { + private const val TAG = "ModifyFolderById.bitwarden" + } + + constructor(directDI: DirectDI) : this( + modifyDatabase = directDI.instance(), + ) + + operator fun invoke( + folderIds: Set, + checkIfStub: Boolean = true, + checkIfChanged: Boolean = true, + transform: suspend (Folder) -> Folder, + ): IO = modifyDatabase { database -> + val dao = database.folderQueries + val now = Clock.System.now() + val models = dao + .get() + .executeAsList() + .filter { + it.folderId in folderIds + } + .mapNotNull { model -> + // If the folder was not properly decoded, then + // prevent it from being pushed to backend. + val service = model.data_.service + if (checkIfStub && !service.canEdit()) { + return@mapNotNull null + } + var new = model + new = transform(new) + // If the folder was not changed, then we do not need to + // update it in the database. + if (checkIfChanged && new == model) { + return@mapNotNull null + } + + new = new.copy( + data_ = new.data_.copy( + revisionDate = now, + ), + ) + new + } + if (models.isEmpty()) { + return@modifyDatabase ModifyDatabase.Result.unit() + } + dao.transaction { + models.forEach { folder -> + dao.insert( + folderId = folder.folderId, + accountId = folder.accountId, + data = folder.data_, + ) + } + } + + val changedAccountIds = models + .map { AccountId(it.accountId) } + .toSet() + ModifyDatabase.Result.unit(changedAccountIds) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyProfileById.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyProfileById.kt new file mode 100644 index 00000000..a758e182 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/util/ModifyProfileById.kt @@ -0,0 +1,57 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase.util + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.data.bitwarden.Profile +import kotlinx.datetime.Clock +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class ModifyProfileById( + private val modifyDatabase: ModifyDatabase, +) { + companion object { + private const val TAG = "ModifyProfileById.bitwarden" + } + + constructor(directDI: DirectDI) : this( + modifyDatabase = directDI.instance(), + ) + + operator fun invoke( + profileIds: Set, + transform: suspend (Profile) -> Profile, + ): IO = modifyDatabase { database -> + val dao = database.profileQueries + val now = Clock.System.now() + val models = dao + .get() + .executeAsList() + .filter { + it.profileId in profileIds + } + .map { model -> + var new = model + new = transform(new) + new + } + require(models.isNotEmpty()) + dao.transaction { + models.forEach { profile -> + dao.insert( + profileId = profile.profileId, + accountId = profile.accountId, + data = profile.data_, + ) + } + } + + val changedAccountIds = models + .map { AccountId(it.accountId) } + .toSet() + ModifyDatabase.Result.unit(changedAccountIds) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/util/RefreshToken.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/util/RefreshToken.kt new file mode 100644 index 00000000..1222e7a6 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/util/RefreshToken.kt @@ -0,0 +1,159 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase.util + +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.service.text.Base64Service +import com.artemchep.keyguard.core.store.DatabaseManager +import com.artemchep.keyguard.core.store.bitwarden.BitwardenService +import com.artemchep.keyguard.core.store.bitwarden.BitwardenToken +import com.artemchep.keyguard.provider.bitwarden.api.refresh +import com.artemchep.keyguard.ui.canRetry +import com.artemchep.keyguard.ui.getHttpCode +import io.ktor.client.HttpClient +import io.ktor.http.HttpStatusCode +import kotlinx.coroutines.delay +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock +import kotlinx.datetime.Clock +import kotlinx.serialization.json.Json +import kotlin.math.pow + +private val mutex = Mutex() + +private val mutexPerUserId = mutableMapOf() + +class RetryDelayStrategy { + private var _attempt: Int = 0 + + val attempt get() = _attempt + + suspend fun dl() { + // If the server is broken and doesn't not recognized our token, + // e.g. https://github.com/dani-garcia/vaultwarden/issues/3776 + // then artificially delay each request so we don't span the + // refresh token too much. + val ms = 100L * (3f.pow(attempt.coerceAtMost(6)) - 1f).toLong() + delay(ms) + // Increment the attempt. + _attempt += 1 + } +} + +internal suspend fun withRetry( + block: suspend () -> T, +): T { + val retryDelayStrategy = RetryDelayStrategy() + while (true) { + try { + return block() + } catch (e: Exception) { + e.printStackTrace() + val statusCode = e.getHttpCode() + + val canRetry = statusCode.canRetry() && + statusCode != BitwardenService.Error.CODE_UNKNOWN + if (!canRetry) { + throw e + } + } + + retryDelayStrategy.dl() + } +} + +internal suspend fun withRefreshableAccessToken( + base64Service: Base64Service, + httpClient: HttpClient, + json: Json, + db: DatabaseManager, + user: BitwardenToken, + block: suspend (BitwardenToken) -> T, +): T { + val getAndUpdateUserToken: suspend (BitwardenToken) -> BitwardenToken = { + val m = mutex.withLock { + // Get or create a mutex specific to this + // account. We never delete it because we do + // not expect a user creating & deleting dozens + // of accounts. + mutexPerUserId.getOrPut(user.id) { Mutex() } + } + m.withLock { + getAndUpdateUserToken( + base64Service = base64Service, + httpClient = httpClient, + json = json, + db = db, + user = it, + ) + } + } + + val retryDelayStrategy = RetryDelayStrategy() + var latestToken = user + while (true) { + val token = user.token + if (token != null) { + // Refresh token immediately if the expiration date + // has already passed. + if (Clock.System.now() > token.expirationDate) { + latestToken = getAndUpdateUserToken(latestToken) + } + } + + try { + return block(latestToken) + } catch (e: Exception) { + val statusCode = e.getHttpCode() + if (statusCode == HttpStatusCode.Unauthorized.value) { + latestToken = getAndUpdateUserToken(latestToken) + } else { + throw e + } + } + + retryDelayStrategy.dl() + } +} + +suspend fun getAndUpdateUserToken( + base64Service: Base64Service, + httpClient: HttpClient, + json: Json, + db: DatabaseManager, + user: BitwardenToken, +): BitwardenToken { + if (user.token == null) { + throw IllegalStateException("Help") + } + + val newUser = db.mutate { + it.accountQueries + .getByAccountId(user.id) + .executeAsOneOrNull() + }.bind() + val newUserToken = newUser?.data_ + if (newUserToken != null && newUserToken != user) { + return newUserToken + } + + // TODO: This one may also crash the server! + val login = refresh( + base64Service = base64Service, + httpClient = httpClient, + json = json, + env = user.env.back(), + token = user.token, + ) + val token = BitwardenToken.Token( + refreshToken = login.refreshToken, + accessToken = login.accessToken, + expirationDate = login.accessTokenExpiryDate, + ) + val u = user.copy(token = token) + db.mutate { + it.accountQueries.insert( + accountId = u.id, + data = u, + ) + }.bind() + return u +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/util/publicKey.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/util/publicKey.kt new file mode 100644 index 00000000..bd09a7c9 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/usecase/util/publicKey.kt @@ -0,0 +1,3 @@ +package com.artemchep.keyguard.provider.bitwarden.usecase.util + +expect fun pbk(privateKey: ByteArray): ByteArray diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/AnimatedFabVisibility.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/AnimatedFabVisibility.kt new file mode 100644 index 00000000..59d0a256 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/AnimatedFabVisibility.kt @@ -0,0 +1,15 @@ +package com.artemchep.keyguard.ui + +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.TopAppBarScrollBehavior +import androidx.compose.runtime.Composable +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.remember + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun TopAppBarScrollBehavior.rememberFabExpanded() = remember(this) { + derivedStateOf { + state.overlappedFraction < 0.01f + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/AnimatedNumberText.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/AnimatedNumberText.kt new file mode 100644 index 00000000..b1ee1d53 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/AnimatedNumberText.kt @@ -0,0 +1,13 @@ +package com.artemchep.keyguard.ui + +import androidx.compose.animation.core.animateIntAsState +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue + +@Composable +fun animatedNumberText( + number: Int, +): String { + val a by animateIntAsState(number) + return a.toString() +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/AutofillWindow.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/AutofillWindow.kt new file mode 100644 index 00000000..8323b53a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/AutofillWindow.kt @@ -0,0 +1,355 @@ +package com.artemchep.keyguard.ui + +import androidx.compose.animation.Crossfade +import androidx.compose.animation.animateContentSize +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.AutoAwesome +import androidx.compose.material.icons.outlined.Check +import androidx.compose.material.icons.outlined.Refresh +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.ExtendedFloatingActionButton +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.key +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.alpha +import androidx.compose.ui.text.SpanStyle +import androidx.compose.ui.text.buildAnnotatedString +import androidx.compose.ui.text.withStyle +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.LocalAppMode +import com.artemchep.keyguard.common.model.fold +import com.artemchep.keyguard.feature.generator.AutoResizeText +import com.artemchep.keyguard.feature.generator.DecoratedSlider +import com.artemchep.keyguard.feature.generator.FilterItem +import com.artemchep.keyguard.feature.generator.GeneratorRoute +import com.artemchep.keyguard.feature.generator.GeneratorState +import com.artemchep.keyguard.feature.generator.GeneratorType +import com.artemchep.keyguard.feature.generator.produceGeneratorState +import com.artemchep.keyguard.feature.home.vault.component.Section +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.icons.icon +import com.artemchep.keyguard.ui.skeleton.SkeletonItem +import com.artemchep.keyguard.ui.theme.combineAlpha +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.StateFlow + +@Composable +fun AutofillButton( + key: String, + username: Boolean = false, + password: Boolean = false, + onValueChange: ((String) -> Unit)? = null, +) { + var isAutofillWindowShowing by remember { + mutableStateOf(false) + } + + val enabled = onValueChange != null + if (!enabled) { + // We can not autofill disabled text fields and we can not + // tease user with it. + isAutofillWindowShowing = false + } + + IconButton( + enabled = onValueChange != null, + onClick = { + isAutofillWindowShowing = !isAutofillWindowShowing + }, + ) { + Icon( + imageVector = Icons.Outlined.AutoAwesome, + contentDescription = null, + ) + } + // Inject the dropdown popup to the bottom of the + // content. + val onDismissRequest = { + isAutofillWindowShowing = false + } + LeMOdelBottomSheet( + visible = isAutofillWindowShowing, + onDismissRequest = onDismissRequest, + ) { contentPadding -> + Column( + modifier = Modifier + .fillMaxSize() + .verticalScroll(rememberScrollState()) + .padding(contentPadding), + ) { + AutofillWindow( + key = key, + username = username, + password = password, + onComplete = { password -> + if (onValueChange != null && password != null) { + onValueChange(password) + } + // Hide the dropdown window on click on one + // of the buttons. + onDismissRequest() + }, + ) + } + } +} + +@Composable +expect fun LeMOdelBottomSheet( + visible: Boolean, + onDismissRequest: () -> Unit, + content: @Composable (PaddingValues) -> Unit, +) + +@Composable +fun ColumnScope.AutofillWindow( + key: String, + username: Boolean = false, + password: Boolean = false, + onComplete: (String?) -> Unit, +) { + val args = remember(username, password) { + GeneratorRoute.Args( + username = username, + password = password, + ) + } + val loadableState = produceGeneratorState( + mode = LocalAppMode.current, + args = args, + key = key, + ) + loadableState.fold( + ifLoading = { + SkeletonItem() + }, + ifOk = { state -> + val text = when { + username && password -> stringResource(Res.strings.generator_header_title) + username -> stringResource(Res.strings.generator_header_username_title) + password -> stringResource(Res.strings.generator_header_password_title) + else -> stringResource(Res.strings.generator_header_title) + } + Text( + modifier = Modifier + .padding( + horizontal = 16.dp, + vertical = 8.dp, + ), + text = text, + style = MaterialTheme.typography.titleLarge, + ) + AutofillWindow( + state = state, + onComplete = onComplete, + ) + }, + ) +} + +@Composable +fun ColumnScope.AutofillWindow( + state: GeneratorState, + onComplete: (String?) -> Unit, +) { + AutofillWindowContent( + state = state, + onComplete = onComplete, + ) + Spacer(modifier = Modifier.height(16.dp)) +} + +@Composable +fun ColumnScope.AutofillWindowContent( + state: GeneratorState, + onComplete: (String?) -> Unit, +) { + val filter by state.filterState.collectAsState() + val filterLengthSliderInteractionSource = remember { + MutableInteractionSource() + } + + GeneratorType( + state = state, + ) + + GeneratorValue2( + valueFlow = state.valueState, + sliderInteractionSource = filterLengthSliderInteractionSource, + onComplete = onComplete, + ) + + val showSection = filter.length != null || filter.items.isNotEmpty() + ExpandedIfNotEmpty( + Unit.takeIf { showSection }, + ) { + Section( + text = stringResource(Res.strings.filter_header_title), + ) + } + + ExpandedIfNotEmpty( + filter.length, + ) { + Column { + DecoratedSlider( + filterLength = it, + interactionSource = filterLengthSliderInteractionSource, + ) + } + } + + Spacer( + modifier = Modifier + .height(16.dp), + ) + + filter.items.forEachIndexed { index, item -> + key(item.key) { + FilterItem(item) + } + } +} + +@Composable +private fun ColumnScope.GeneratorValue2( + valueFlow: StateFlow, + sliderInteractionSource: MutableInteractionSource, + onComplete: (String?) -> Unit, +) { + val valueState = valueFlow.collectAsState() + ExpandedIfNotEmpty( + valueOrNull = valueState.value, + ) { value -> + val updatedOnRefresh by rememberUpdatedState(value.onRefresh) + + val generateTitle = stringResource(Res.strings.generator_generate_button) + val regenerateTitle = stringResource(Res.strings.generator_regenerate_button) + val actions by remember(valueState) { + derivedStateOf { + val valueExists = !valueState.value?.password.isNullOrEmpty() + if (valueExists) { + listOf( + FlatItemAction( + leading = icon(Icons.Outlined.Refresh), + title = regenerateTitle, + onClick = { + updatedOnRefresh?.invoke() + }, + ), + ) + } else { + listOf( + FlatItemAction( + leading = icon(Icons.Outlined.Refresh), + title = generateTitle, + onClick = { + updatedOnRefresh?.invoke() + }, + ), + ) + } + } + } + + val sliderInteractionSourceIsInteracted = + sliderInteractionSource.collectIsInteractedWith() + FlatDropdown( + elevation = 8.dp, + content = { + Crossfade( + targetState = value.password, + modifier = Modifier + .animateContentSize(), + ) { password -> + AutoResizeText( + text = if (password.isEmpty()) { + val color = LocalContentColor.current + .combineAlpha(DisabledEmphasisAlpha) + val text = stringResource(Res.strings.empty_value) + buildAnnotatedString { + withStyle( + style = SpanStyle(color = color), + ) { + append(text) + } + } + } else { + colorizePassword( + password = password, + contentColor = LocalContentColor.current, + ) + }, + ) + } + Spacer( + modifier = Modifier + .height(4.dp), + ) + + val visible = value.strength + ExpandedIfNotEmpty( + valueOrNull = value.password.takeIf { visible }, + ) { password -> + PasswordStrengthBadge( + password = password, + ) + } + }, + trailing = { + val updatedPassword by rememberUpdatedState(value.password) + val updatedOnClick by rememberUpdatedState(onComplete) + ExtendedFloatingActionButton( + modifier = Modifier + .then( + if (updatedPassword.isNotEmpty()) { + Modifier + } else { + Modifier.alpha(DisabledEmphasisAlpha) + }, + ), + onClick = { + if (updatedPassword.isNotEmpty()) { + updatedOnClick.invoke(updatedPassword) + } + }, + containerColor = MaterialTheme.colorScheme.primary, + icon = { + Icon( + imageVector = Icons.Outlined.Check, + contentDescription = null, + ) + }, + text = { + Text("Use") + }, + ) + }, + dropdown = value.dropdown, + actions = actions, + enabled = !sliderInteractionSourceIsInteracted, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/BadgeField.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/BadgeField.kt new file mode 100644 index 00000000..7744fd7d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/BadgeField.kt @@ -0,0 +1,122 @@ +package com.artemchep.keyguard.ui + +import androidx.compose.animation.animateContentSize +import androidx.compose.animation.core.animateFloatAsState +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.widthIn +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.LocalTextStyle +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.getValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.compositeOver +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.ui.theme.combineAlpha +import kotlin.math.pow + +@Composable +fun Ah( + score: Float, + text: String, + modifier: Modifier = Modifier, +) { + AhContainer( + score = score, + modifier = modifier, + ) { + Text( + modifier = Modifier + .padding(horizontal = 4.dp) + .animateContentSize(), + text = text, + ) + } +} + +@Composable +fun Ah( + score: Float, + text: AnnotatedString, + modifier: Modifier = Modifier, +) { + AhContainer( + score = score, + modifier = modifier, + ) { + Text( + modifier = Modifier + .padding(horizontal = 4.dp) + .animateContentSize(), + text = text, + ) + } +} + +@Composable +fun AhContainer( + score: Float, + modifier: Modifier = Modifier, + content: @Composable RowScope.(Float) -> Unit, +) { + val progress by animateFloatAsState(targetValue = score) + val progressColor = progress.pow(0.4f) + val contentColor = run { + val primary = MaterialTheme.colorScheme.onSecondaryContainer + val error = MaterialTheme.colorScheme.onErrorContainer + primary.copy(alpha = progressColor).compositeOver(error) + .combineAlpha(LocalContentColor.current.alpha) + } + val backgroundColor = run { + val primary = MaterialTheme.colorScheme.secondaryContainer + val error = MaterialTheme.colorScheme.errorContainer + primary.copy(alpha = progressColor).compositeOver(error) + } + AhLayout( + modifier = modifier, + contentColor = contentColor, + backgroundColor = backgroundColor, + ) { + content(progress) + } +} + +@Composable +fun AhLayout( + modifier: Modifier = Modifier, + contentColor: Color = LocalContentColor.current, + backgroundColor: Color, + content: @Composable RowScope.() -> Unit, +) { + val shape = MaterialTheme.shapes.small + Row( + modifier = modifier + .background(backgroundColor.combineAlpha(LocalContentColor.current.alpha), shape) + .padding( + start = 4.dp, + top = 4.dp, + bottom = 4.dp, + end = 4.dp, + ) + .widthIn(min = 36.dp), + horizontalArrangement = Arrangement.Center, + verticalAlignment = Alignment.CenterVertically, + ) { + val textStyle = MaterialTheme.typography.labelMedium + CompositionLocalProvider( + LocalContentColor provides contentColor, + LocalTextStyle provides textStyle, + ) { + content() + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/CollectedEffect.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/CollectedEffect.kt new file mode 100644 index 00000000..db748c80 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/CollectedEffect.kt @@ -0,0 +1,17 @@ +package com.artemchep.keyguard.ui + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import kotlinx.coroutines.flow.Flow + +@Composable +fun CollectedEffect( + flow: Flow, + action: suspend (T) -> Unit, +) { + LaunchedEffect(flow) { + flow.collect { + action(it) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/Composable.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/Composable.kt new file mode 100644 index 00000000..025f4d63 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/Composable.kt @@ -0,0 +1,16 @@ +package com.artemchep.keyguard.ui + +import androidx.compose.runtime.Composable + +@Composable +fun Compose( + content: @Composable () -> Unit, +) { + content() +} + +inline fun composable( + crossinline content: @Composable () -> Unit, +): @Composable () -> Unit = { + content() +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/Dropdown.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/Dropdown.kt new file mode 100644 index 00000000..15038e91 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/Dropdown.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.ui + +import androidx.compose.ui.unit.dp + +val DropdownMinWidth = 256.dp diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/ExpandedIfNotEmpty.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/ExpandedIfNotEmpty.kt new file mode 100644 index 00000000..6e21576a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/ExpandedIfNotEmpty.kt @@ -0,0 +1,69 @@ +package com.artemchep.keyguard.ui + +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.EnterTransition +import androidx.compose.animation.ExitTransition +import androidx.compose.animation.ExperimentalAnimationApi +import androidx.compose.animation.expandIn +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.animation.scaleIn +import androidx.compose.animation.scaleOut +import androidx.compose.animation.shrinkOut +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.IntSize + +/** + * A container that expands if the [valueOrNull] is + * not `null`. + */ +@Suppress("FunctionName") +@Composable +fun ExpandedIfNotEmpty( + valueOrNull: T?, + modifier: Modifier = Modifier, + enter: EnterTransition = fadeIn() + expandIn( + initialSize = { IntSize(it.width, 0) }, + ), + exit: ExitTransition = shrinkOut( + targetSize = { IntSize(it.width, 0) }, + ) + fadeOut(), + content: @Composable (T) -> Unit, +) { + AnimatedVisibility( + modifier = modifier, + visible = valueOrNull != null, + enter = enter, + exit = exit, + ) { + var value by remember { + mutableStateOf(null) + } + valueOrNull?.let { + value = it + } + content(value!!) + } +} + +@Composable +fun ExpandedIfNotEmptyForRow( + valueOrNull: T?, + modifier: Modifier = Modifier, + content: @Composable (T) -> Unit, +) = ExpandedIfNotEmpty( + valueOrNull = valueOrNull, + modifier = modifier, + enter = fadeIn() + scaleIn() + expandIn( + initialSize = { IntSize(0, it.height) }, + ), + exit = shrinkOut( + targetSize = { IntSize(0, it.height) }, + ) + fadeOut() + scaleOut(), + content = content, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/GridLayout.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/GridLayout.kt new file mode 100644 index 00000000..f0131c30 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/GridLayout.kt @@ -0,0 +1,77 @@ +package com.artemchep.keyguard.ui + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.layout.Layout +import androidx.compose.ui.unit.Constraints +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp + +@Composable +fun GridLayout( + modifier: Modifier = Modifier, + columns: Int = 1, + mainAxisSpacing: Dp = 0.dp, + crossAxisSpacing: Dp = 0.dp, + content: @Composable () -> Unit, +) = Layout( + modifier = modifier, + content = content, +) { measurables, constraints -> + val mainAxisSpacingPx = mainAxisSpacing.roundToPx() + val crossAxisSpacingPx = crossAxisSpacing.roundToPx() + + val itemWidth = (constraints.maxWidth - crossAxisSpacingPx * (columns - 1)) / columns + val itemConstraints = Constraints( + minWidth = itemWidth, + maxWidth = itemWidth, + ) + + val placeables = measurables + .asSequence() + .windowed(columns, columns, true) { it } + .flatMap { group -> + val height = group + .maxOf { it.minIntrinsicHeight(itemWidth) } + val groupConstraints = itemConstraints + .copy(minHeight = height) + // Measure each of the element of the group separately, + // so we it has similar height. + group + .map { it.measure(groupConstraints) } + } + .toList() + var height = 0 + var heightLocalMax = 0 + for (i in placeables.indices) { + // Reset the max height upon + // entering the new group + if (i.rem(columns) == 0) { + height += heightLocalMax + heightLocalMax = 0 + } + val h = placeables[i].height + mainAxisSpacingPx + if (h > heightLocalMax) { + heightLocalMax = h + } + } + height += heightLocalMax + // Set the size of the layout as big as it can + layout(constraints.maxWidth, height) { + var y = 0 + var yLocalMax = 0 + placeables.forEachIndexed { i, placeable -> + if (i.rem(columns) == 0) { + y += yLocalMax + yLocalMax = 0 + } + val x = i.rem(columns) * (itemWidth + crossAxisSpacingPx) + placeable.place(x, y) + + val h = placeables[i].height + mainAxisSpacingPx + if (h > yLocalMax) { + yLocalMax = h + } + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/Html.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/Html.kt new file mode 100644 index 00000000..c50b507e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/Html.kt @@ -0,0 +1,10 @@ +package com.artemchep.keyguard.ui + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier + +@Composable +expect fun HtmlText( + modifier: Modifier = Modifier, + html: String, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/KeepScreenOn.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/KeepScreenOn.kt new file mode 100644 index 00000000..49185b9d --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/KeepScreenOn.kt @@ -0,0 +1,29 @@ +package com.artemchep.keyguard.ui + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import com.artemchep.keyguard.common.usecase.GetKeepScreenOn +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +@Composable +fun OptionallyKeepScreenOnEffect() { + val shouldKeepScreenOn by run { + val di = localDI() + val get = remember(di) { + di.direct.instance() + } + remember(get) { + get() + }.collectAsState(false) + } + if (shouldKeepScreenOn) { + KeepScreenOnEffect() + } +} + +@Composable +expect fun KeepScreenOnEffect() diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/OptionsWindow.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/OptionsWindow.kt new file mode 100644 index 00000000..80377655 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/OptionsWindow.kt @@ -0,0 +1,142 @@ +package com.artemchep.keyguard.ui + +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.widthIn +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.MoreVert +import androidx.compose.material3.DropdownMenu +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.minimumInteractiveComponentSize +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.feature.home.vault.component.Section + +@Composable +fun DropdownScope.DropdownMenuItemFlat( + action: ContextItem, +) { + when (action) { + is ContextItem.Section -> { + Section( + text = action.title, + ) + } + + is ContextItem.Custom -> { + Column( + modifier = Modifier + .widthIn(max = DropdownMinWidth), + ) { + action.content() + } + } + + is FlatItemAction -> { + DropdownMenuItemFlat(action) + } + } +} + +@Composable +fun DropdownScope.DropdownMenuItemFlat( + action: FlatItemAction, +) { + Row( + modifier = Modifier + .widthIn(max = DropdownMinWidth) + .then( + if (action.onClick != null) { + Modifier + .clickable { + action.onClick.invoke() + onDismissRequest() + } + } else { + Modifier + }, + ) + .minimumInteractiveComponentSize() + .padding( + horizontal = 8.dp, + vertical = 4.dp, + ), + verticalAlignment = Alignment.CenterVertically, + ) { + FlatItemActionContent( + action = action, + compact = true, + ) + } +} + +@Composable +fun OptionsButton( + actions: List = emptyList(), +) { + if (actions.isNotEmpty()) { + OptionsButton( + enabled = actions.isNotEmpty(), + ) { + actions.forEachIndexed { index, action -> + DropdownMenuItemFlat( + action = action, + ) + } + } + } +} + +@Composable +fun OptionsButton( + enabled: Boolean = true, + content: @Composable DropdownScope.() -> Unit, +) { + var isAutofillWindowShowing by remember { + mutableStateOf(false) + } + + if (!enabled) { + // We can not autofill disabled text fields and we can not + // tease user with it. + isAutofillWindowShowing = false + } + + Box { + IconButton( + enabled = enabled, + onClick = { + isAutofillWindowShowing = !isAutofillWindowShowing + }, + ) { + Icon( + imageVector = Icons.Outlined.MoreVert, + contentDescription = null, + ) + } + // Inject the dropdown popup to the bottom of the + // content. + val onDismissRequest = { + isAutofillWindowShowing = false + } + DropdownMenu( + modifier = Modifier + .widthIn(min = DropdownMinWidth), + expanded = isAutofillWindowShowing, + onDismissRequest = onDismissRequest, + ) { + val scope = DropdownScopeImpl(this, onDismissRequest = onDismissRequest) + content(scope) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/OtherScaffold.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/OtherScaffold.kt new file mode 100644 index 00000000..ced2b049 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/OtherScaffold.kt @@ -0,0 +1,75 @@ +package com.artemchep.keyguard.ui + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.union +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.widthIn +import androidx.compose.foundation.layout.windowInsetsPadding +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.platform.leIme +import com.artemchep.keyguard.platform.leSystemBars +import com.artemchep.keyguard.ui.theme.Dimens + +@Composable +fun OtherScaffold( + modifier: Modifier = Modifier, + actions: (@Composable RowScope.() -> Unit)? = null, + content: @Composable ColumnScope.() -> Unit, +) { + Box( + modifier = modifier, + ) { + val scrollState = rememberScrollState() + Column( + modifier = Modifier + .fillMaxSize() + .verticalScroll(scrollState), + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.CenterHorizontally, + ) { + val insets = WindowInsets.leSystemBars + .union(WindowInsets.leIme) + Column( + modifier = Modifier + .windowInsetsPadding(insets) + .padding( + vertical = Dimens.verticalPadding, + horizontal = Dimens.horizontalPadding, + ) + .widthIn(max = 280.dp), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + content() + } + } + + val insets = WindowInsets.leSystemBars + Row( + modifier = Modifier + .fillMaxWidth() + .windowInsetsPadding(insets) + .height(64.dp), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.End, + ) { + actions?.invoke(this) + Spacer(Modifier.width(4.dp)) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/Padding.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/Padding.kt new file mode 100644 index 00000000..bdffd85a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/Padding.kt @@ -0,0 +1,33 @@ +package com.artemchep.keyguard.ui + +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.LayoutDirection + +operator fun PaddingValues.plus(b: PaddingValues): PaddingValues = object : PaddingValues { + override fun calculateBottomPadding(): Dp = + this@plus.calculateBottomPadding() + b.calculateBottomPadding() + + override fun calculateLeftPadding(layoutDirection: LayoutDirection): Dp = + this@plus.calculateLeftPadding(layoutDirection) + b.calculateLeftPadding(layoutDirection) + + override fun calculateRightPadding(layoutDirection: LayoutDirection): Dp = + this@plus.calculateRightPadding(layoutDirection) + b.calculateRightPadding(layoutDirection) + + override fun calculateTopPadding(): Dp = + this@plus.calculateTopPadding() + b.calculateTopPadding() +} + +operator fun PaddingValues.minus(b: PaddingValues): PaddingValues = object : PaddingValues { + override fun calculateBottomPadding(): Dp = + this@minus.calculateBottomPadding() - b.calculateBottomPadding() + + override fun calculateLeftPadding(layoutDirection: LayoutDirection): Dp = + this@minus.calculateLeftPadding(layoutDirection) - b.calculateLeftPadding(layoutDirection) + + override fun calculateRightPadding(layoutDirection: LayoutDirection): Dp = + this@minus.calculateRightPadding(layoutDirection) - b.calculateRightPadding(layoutDirection) + + override fun calculateTopPadding(): Dp = + this@minus.calculateTopPadding() - b.calculateTopPadding() +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/Password.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/Password.kt new file mode 100644 index 00000000..5f850de9 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/Password.kt @@ -0,0 +1,136 @@ +package com.artemchep.keyguard.ui + +import androidx.compose.animation.core.animateFloatAsState +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.luminance +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.SpanStyle +import androidx.compose.ui.text.buildAnnotatedString +import androidx.compose.ui.text.withStyle +import com.artemchep.keyguard.feature.home.vault.component.ObscureChar +import kotlin.math.min +import kotlin.math.roundToInt + +private const val obscureValueLength = 8 + +@Composable +fun animatedConcealedText( + text: AnnotatedString, + concealed: Boolean, +): AnnotatedString { + val progress by animateFloatAsState( + targetValue = if (concealed) 0f else 1f, + ) + + val length = text.length + val lengthOfRealValue = (length.toFloat() * progress) + .roundToInt() + val minLengthOfShownValue = ((1f - progress) * obscureValueLength) + .roundToInt() + .coerceAtLeast(min(length, obscureValueLength)) + return buildAnnotatedString { + append(text.subSequence(0, lengthOfRealValue)) + + // Pad text from the end + val times = minLengthOfShownValue - lengthOfRealValue + repeat(times) { + append(ObscureChar) + } + } +} + +fun concealedText(): String { + return buildString { + val times = obscureValueLength + repeat(times) { + append(ObscureChar) + } + } +} + +fun colorizePassword( + password: String, + contentColor: Color, +) = colorizePassword( + password = password, + digitColor = colorizePasswordDigitColor(contentColor), + symbolColor = colorizePasswordSymbolColor(contentColor), +) + +fun colorizePasswordDigitColor( + contentColor: Color, +) = colorizePasswordDigitColor(onDark = contentColor.luminance() > 0.5f) + +private fun colorizePasswordDigitColor(onDark: Boolean) = run { + val saturation: Float + val lightness: Float + if (onDark) { + saturation = 0.52f // saturation + lightness = 0.56f // value + } else { + saturation = 0.72f // saturation + lightness = 0.62f // value + } + Color.hsl( + hue = 210f, + saturation = saturation, + lightness = lightness, + ) +} + +fun colorizePasswordSymbolColor( + contentColor: Color, +) = colorizePasswordSymbolColor(onDark = contentColor.luminance() > 0.5f) + +private fun colorizePasswordSymbolColor(onDark: Boolean) = run { + val saturation: Float + val lightness: Float + if (onDark) { + saturation = 0.52f // saturation + lightness = 0.56f // value + } else { + saturation = 0.72f // saturation + lightness = 0.62f // value + } + Color.hsl( + hue = 0f, + saturation = saturation, + lightness = lightness, + ) +} + +private fun colorizePassword( + password: String, + digitColor: Color = Color.Blue, + symbolColor: Color = Color.Red, +) = buildAnnotatedString { + password + .forEach { char -> + when { + char.isSurrogate() -> append(char) + char.isLetter() -> append(char) + + char.isDigit() -> { + withStyle( + style = SpanStyle( + color = digitColor, + ), + ) { + append(char) + } + } + + else -> { + withStyle( + style = SpanStyle( + color = symbolColor, + ), + ) { + append(char) + } + } + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/PasswordFilterItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/PasswordFilterItem.kt new file mode 100644 index 00000000..0551c88c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/PasswordFilterItem.kt @@ -0,0 +1,695 @@ +package com.artemchep.keyguard.ui + +import androidx.compose.animation.core.animateDpAsState +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.combinedClickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.BoxScope +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.FlowRow +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.widthIn +import androidx.compose.foundation.layout.wrapContentWidth +import androidx.compose.foundation.shape.CornerSize +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.ContentCopy +import androidx.compose.material3.DropdownMenu +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalAbsoluteTonalElevation +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.LocalMinimumInteractiveComponentEnforcement +import androidx.compose.material3.LocalTextStyle +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.material3.contentColorFor +import androidx.compose.material3.minimumInteractiveComponentSize +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.isSpecified +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.hapticfeedback.HapticFeedbackType +import androidx.compose.ui.platform.LocalHapticFeedback +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import arrow.core.andThen +import com.artemchep.keyguard.common.usecase.CopyText +import com.artemchep.keyguard.feature.home.vault.component.VaultItemIcon2 +import com.artemchep.keyguard.feature.home.vault.component.surfaceColorAtElevationSemi +import com.artemchep.keyguard.feature.home.vault.model.VaultItemIcon +import com.artemchep.keyguard.ui.theme.combineAlpha +import kotlinx.collections.immutable.PersistentList +import kotlinx.collections.immutable.toPersistentList + +private inline val flatItemSmallCornerSizeDp get() = 4.dp + +private val flatItemSmallCornerSize = CornerSize(flatItemSmallCornerSizeDp) + +private val flatItemSmallShape = RoundedCornerShape(flatItemSmallCornerSizeDp) + +private val defaultPaddingValues: PaddingValues = PaddingValues( + horizontal = 8.dp, + vertical = 2.dp, +) + +private val defaultContentPadding: PaddingValues = PaddingValues( + horizontal = 8.dp, + vertical = 8.dp, +) + +sealed interface ContextItem { + data class Section( + val title: String? = null, + ) : ContextItem + + data class Custom( + val content: @Composable () -> Unit, + ) : ContextItem +} + +data class FlatItemAction( + val id: String? = null, + val icon: ImageVector? = null, + val leading: (@Composable () -> Unit)? = null, + val trailing: (@Composable () -> Unit)? = null, + val title: String, + val text: String? = null, + val type: Type? = null, + val onClick: (() -> Unit)? = {}, +) : ContextItem { + companion object; + + enum class Type { + COPY, + DOWNLOAD, + VIEW, + } +} + +inline fun buildContextItems( + vararg items: List, + block: ContextItemBuilder.() -> Unit, +) = ContextItemBuilder(items = items).apply(block).build() + +class ContextItemBuilder( + vararg items: List, +) { + private val items = kotlin.run { + val out = mutableListOf() + items.forEach { list -> + if (list.isEmpty()) { + return@forEach + } + + val header = list.first() + if (header !is ContextItem.Section) { + out += ContextItem.Section() + } + + out += list + } + out + } + + fun section( + title: String? = null, + block: ContextItemBuilder.() -> Unit, + ) { + val sectionItems = buildContextItems(block = block) + if (sectionItems.isEmpty()) { + return + } + + items += ContextItem.Section(title = title) + items += sectionItems + } + + operator fun plusAssign(item: ContextItem?) { + items += item + ?: return + } + + fun build(): PersistentList = sequence { + items.forEachIndexed { index, item -> + // Skip a first item if it has no title. + if ( + index == 0 && + item is ContextItem.Section && + item.title == null + ) { + return@forEachIndexed + } + + yield(item) + } + }.toPersistentList() +} + + +@JvmName("FlatItemActionNullable") +fun CopyText.FlatItemAction( + title: String, + value: String?, + hidden: Boolean = false, +) = value?.let { + FlatItemAction( + title = title, + value = it, + hidden = hidden, + ) +} + +fun CopyText.FlatItemAction( + leading: (@Composable () -> Unit)? = null, + title: String, + value: String, + hidden: Boolean = false, +) = FlatItemAction( + leading = leading, + icon = Icons.Outlined.ContentCopy, + title = title, + text = value.takeUnless { hidden }, + type = FlatItemAction.Type.COPY, + onClick = { + println("Copying!") + copy(value, hidden) + }, +) + +@Composable +fun FlatDropdown( + modifier: Modifier = Modifier, + elevation: Dp = 0.dp, + backgroundColor: Color = Color.Unspecified, + content: @Composable ColumnScope.() -> Unit, + dropdown: List = emptyList(), + actions: List = emptyList(), + leading: (@Composable RowScope.() -> Unit)? = null, + trailing: (@Composable RowScope.() -> Unit)? = null, + paddingValues: PaddingValues = defaultPaddingValues, + contentPadding: PaddingValues = defaultContentPadding, + onClick: (() -> Unit)? = null, + onLongClick: (() -> Unit)? = null, + enabled: Boolean = dropdown.isNotEmpty() || onClick != null || onLongClick != null, +) { + FlatDropdownLayout( + modifier = modifier, + elevation = elevation, + backgroundColor = backgroundColor, + content = content, + dropdown = if (dropdown.isNotEmpty()) { + // composable + { + dropdown.forEach { action -> + DropdownMenuItemFlat( + action = action, + ) + } + } + } else { + null + }, + actions = actions, + leading = leading, + trailing = trailing, + paddingValues = paddingValues, + contentPadding = contentPadding, + onClick = onClick, + onLongClick = onLongClick, + enabled = enabled, + ) +} + +@Composable +fun FlatDropdownLayout( + modifier: Modifier = Modifier, + elevation: Dp = 0.dp, + backgroundColor: Color = Color.Unspecified, + content: @Composable ColumnScope.() -> Unit, + dropdown: (@Composable DropdownScope.() -> Unit)? = null, + actions: List = emptyList(), + leading: (@Composable RowScope.() -> Unit)? = null, + trailing: (@Composable RowScope.() -> Unit)? = null, + paddingValues: PaddingValues = defaultPaddingValues, + contentPadding: PaddingValues = defaultContentPadding, + onClick: (() -> Unit)? = null, + onLongClick: (() -> Unit)? = null, + enabled: Boolean = dropdown != null || onClick != null || onLongClick != null, +) { + var isContentDropdownExpanded by remember { mutableStateOf(false) } + FlatItemLayout( + modifier = modifier, + elevation = elevation, + backgroundColor = backgroundColor, + content = { + content() + + // Inject the dropdown popup to the bottom of the + // content. + val onDismissRequest = { + isContentDropdownExpanded = false + } + DropdownMenu( + expanded = isContentDropdownExpanded, + onDismissRequest = onDismissRequest, + modifier = Modifier + .widthIn(min = DropdownMinWidth), + ) { + val scope = DropdownScopeImpl(this, onDismissRequest = onDismissRequest) + dropdown?.invoke(scope) + } + }, + actions = actions, + leading = leading, + trailing = trailing, + paddingValues = paddingValues, + contentPadding = contentPadding, + onClick = when { + onClick != null -> onClick + dropdown != null -> { + // lambda + { + isContentDropdownExpanded = !isContentDropdownExpanded + } + } + + else -> null + }, + onLongClick = onLongClick, + enabled = enabled, + ) +} + +interface DropdownScope : ColumnScope { + val onDismissRequest: () -> Unit +} + +fun DropdownScope.dismissOnClick(block: () -> Unit) = block.andThen { onDismissRequest() } + +class DropdownScopeImpl( + parent: ColumnScope, + override val onDismissRequest: () -> Unit, +) : DropdownScope, ColumnScope by parent + +@Composable +fun FlatItem( + modifier: Modifier = Modifier, + elevation: Dp = 0.dp, + backgroundColor: Color = Color.Unspecified, + title: @Composable () -> Unit, + text: (@Composable () -> Unit)? = null, + actions: List = emptyList(), + leading: (@Composable RowScope.() -> Unit)? = null, + trailing: (@Composable RowScope.() -> Unit)? = null, + paddingValues: PaddingValues = defaultPaddingValues, + contentPadding: PaddingValues = defaultContentPadding, + onClick: (() -> Unit)? = null, + onLongClick: (() -> Unit)? = null, + enabled: Boolean = onClick != null || onLongClick != null, +) { + FlatItemLayout( + modifier = modifier, + elevation = elevation, + backgroundColor = backgroundColor, + content = { + FlatItemTextContent( + title = title, + text = text, + ) + }, + actions = actions, + leading = leading, + trailing = trailing, + paddingValues = paddingValues, + contentPadding = contentPadding, + onClick = onClick, + onLongClick = onLongClick, + enabled = enabled, + ) +} + +@Composable +fun ColumnScope.FlatItemTextContent( + title: (@Composable () -> Unit)? = null, + text: (@Composable () -> Unit)? = null, + tint: Color = LocalContentColor.current, + compact: Boolean = false, +) { + val titleStyle = MaterialTheme.typography.bodyLarge + val textStyle = + if (!compact) MaterialTheme.typography.bodyMedium else MaterialTheme.typography.bodySmall + if (title != null) { + val contentColor = tint + .copy(alpha = 1f) + .combineAlpha(LocalContentColor.current.alpha) + CompositionLocalProvider( + LocalTextStyle provides titleStyle + .copy(color = contentColor), + ) { + title() + } + } + if (text != null) { + val contentColor = tint + .copy(alpha = 1f) + .combineAlpha(LocalContentColor.current.alpha) + .combineAlpha(MediumEmphasisAlpha) + CompositionLocalProvider( + LocalTextStyle provides textStyle + .copy(color = contentColor), + ) { + text() + } + } +} + +val DefaultEmphasisAlpha = 1f +val HighEmphasisAlpha = 0.87f +val MediumEmphasisAlpha = 0.6f +val DisabledEmphasisAlpha = 0.38f + +@OptIn( + ExperimentalMaterial3Api::class, + ExperimentalFoundationApi::class, +) +@Composable +fun FlatItemLayout( + modifier: Modifier = Modifier, + paddingValues: PaddingValues = defaultPaddingValues, + contentPadding: PaddingValues = defaultContentPadding, + elevation: Dp = 0.dp, + backgroundColor: Color = Color.Unspecified, + content: @Composable ColumnScope.() -> Unit, + actions: List = emptyList(), + leading: (@Composable RowScope.() -> Unit)? = null, + trailing: (@Composable RowScope.() -> Unit)? = null, + onClick: (() -> Unit)? = null, + onLongClick: (() -> Unit)? = null, + enabled: Boolean = onClick != null, +) { + Column( + modifier = modifier + .fillMaxWidth() + .padding(paddingValues), + ) { + val finalBackgroundColor = backgroundColor + .takeIf { it.isSpecified } + // default surface color + ?: MaterialTheme.colorScheme.surface + val animatedElevation by animateDpAsState(targetValue = elevation) + + val shape = MaterialTheme.shapes.medium + val shapeBottomCornerDp by kotlin.run { + val target = if (actions.isEmpty()) { + 16.dp + } else { + flatItemSmallCornerSizeDp + } + animateDpAsState(targetValue = target) + } + Surface( + shape = shape.copy( + bottomStart = CornerSize(shapeBottomCornerDp), + bottomEnd = CornerSize(shapeBottomCornerDp), + ), + color = finalBackgroundColor, + tonalElevation = animatedElevation, + ) { + val haptic by rememberUpdatedState(LocalHapticFeedback.current) + val updatedOnClick by rememberUpdatedState(onClick) + val updatedOnLongClick by rememberUpdatedState(onLongClick) + Column( + modifier = Modifier + .then( + if ((onClick != null || onLongClick != null) && enabled) { + Modifier + .combinedClickable( + onLongClick = if (onLongClick != null) { + // lambda + { + updatedOnLongClick?.invoke() + haptic.performHapticFeedback(HapticFeedbackType.LongPress) + } + } else { + null + }, + ) { + updatedOnClick?.invoke() + } + .rightClickable { + updatedOnLongClick?.invoke() + } + } else { + Modifier + }, + ), + ) { + Row( + modifier = Modifier + .minimumInteractiveComponentSize() + .padding(contentPadding), + verticalAlignment = Alignment.CenterVertically, + ) { + CompositionLocalProvider( + LocalContentColor provides LocalContentColor.current + .let { color -> + if (enabled) { + color + } else { + color.combineAlpha(alpha = DisabledEmphasisAlpha) + } + }, + ) { + if (leading != null) { + CompositionLocalProvider( + LocalMinimumInteractiveComponentEnforcement provides false, + ) { + leading() + } + Spacer(Modifier.width(16.dp)) + } + Column( + modifier = Modifier + .weight(1f), + ) { + content() + } + if (trailing != null) { + Spacer(Modifier.width(16.dp)) + trailing() + } + } + } + } + } + actions.forEachIndexed { actionIndex, action -> + Spacer(modifier = Modifier.height(2.dp)) + Surface( + modifier = modifier + .fillMaxWidth(), + shape = if (actions.size - 1 == actionIndex) { + shape.copy( + topStart = flatItemSmallCornerSize, + topEnd = flatItemSmallCornerSize, + ) + } else { + flatItemSmallShape + }, + color = finalBackgroundColor, + tonalElevation = animatedElevation, + ) { + val updatedOnClick by rememberUpdatedState(action.onClick) + Row( + modifier = Modifier + .then( + if (action.onClick != null) { + Modifier + .clickable { + updatedOnClick?.invoke() + } + } else { + Modifier + }, + ) + .minimumInteractiveComponentSize() + .padding(contentPadding), + verticalAlignment = Alignment.CenterVertically, + ) { + FlatItemActionContent( + action = action, + compact = true, + ) + } + } + } + } +} + +@Composable +fun RowScope.FlatItemActionContent( + action: FlatItemAction, + compact: Boolean = false, +) { + CompositionLocalProvider( + LocalContentColor provides LocalContentColor.current + .let { color -> + if (action.onClick != null) { + color + } else { + color.combineAlpha(DisabledEmphasisAlpha) + } + }, + ) { + if (action.icon != null || action.leading != null) { + Box( + modifier = Modifier + .padding(4.dp) + .size(16.dp), + ) { + if (action.icon != null) { + Icon( + imageVector = action.icon, + contentDescription = null, + ) + } + action.leading?.invoke() + } + Spacer( + modifier = Modifier + .width(8.dp), + ) + } + Column( + modifier = Modifier + .weight(1f), + verticalArrangement = Arrangement.Center, + ) { + FlatItemTextContent( + title = { + Text( + text = action.title, + maxLines = 2, + overflow = TextOverflow.Ellipsis, + ) + }, + text = if (action.text != null) { + // composable + { + Text( + text = action.text, + maxLines = 2, + overflow = TextOverflow.Ellipsis, + fontSize = 13.sp, + ) + } + } else { + null + }, + compact = compact, + ) + } + if (action.trailing != null) { + Spacer(Modifier.width(8.dp)) + action.trailing.invoke() + } + } +} + +@Composable +fun Avatar( + modifier: Modifier = Modifier, + color: Color = LocalContentColor.current + .let { + it.copy(alpha = 0.05f * LocalContentColor.current.alpha) + }, + content: @Composable BoxScope.() -> Unit, +) { + val contentColor = LocalContentColor.current.copy(alpha = DisabledEmphasisAlpha) + Box( + modifier = modifier + .size(36.dp) + .clip(MaterialTheme.shapes.medium) + .background(color), + ) { + content() + } +} + +@OptIn(ExperimentalLayoutApi::class) +@Composable +fun AvatarBuilder( + modifier: Modifier = Modifier, + icon: VaultItemIcon, + accent: Color, + active: Boolean, + badge: @Composable () -> Unit, +) = Box( + modifier = modifier, +) { + val avatarColor = accent + .takeIf { + val fits = icon is VaultItemIcon.VectorIcon || + icon is VaultItemIcon.TextIcon + fits && active + } + ?: MaterialTheme.colorScheme.surfaceColorAtElevationSemi( + LocalAbsoluteTonalElevation.current + 8.dp, + ) + Avatar( + color = avatarColor, + ) { + VaultItemIcon2( + icon = icon, + ) + } + + val backgroundColor = if (!active) { + MaterialTheme.colorScheme.surfaceVariant + } else { + MaterialTheme.colorScheme.tertiaryContainer + } + val contentColor = contentColorFor(backgroundColor) + FlowRow( + modifier = Modifier + .align(Alignment.BottomEnd) + .widthIn(max = 36.dp) + .wrapContentWidth( + align = Alignment.Start, + unbounded = true, + ) + .clip(MaterialTheme.shapes.extraSmall) + .background(backgroundColor), + ) { + CompositionLocalProvider( + LocalContentColor provides contentColor, + ) { + badge() + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/PasswordPwnedBadge.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/PasswordPwnedBadge.kt new file mode 100644 index 00000000..132ca424 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/PasswordPwnedBadge.kt @@ -0,0 +1,129 @@ +package com.artemchep.keyguard.ui + +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.SideEffect +import androidx.compose.runtime.State +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.model.CheckPasswordLeakRequest +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.getOrNull +import com.artemchep.keyguard.common.usecase.CheckPasswordLeak +import com.artemchep.keyguard.res.Res +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.async +import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.debounce +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onStart +import org.kodein.di.compose.rememberInstance + +private data class PasswordPwnedBadgeState( + val password: String, + val content: Loadable, +) + +@Composable +fun PasswordPwnedBadge( + modifier: Modifier = Modifier, + password: String, +) { + val state = producePasswordPwnedBadgeState(password) + val visible by remember(state) { + derivedStateOf { + val strength = state.value.content.getOrNull() + strength + ?.let { it > 0 } + ?: false + } + } + ExpandedIfNotEmptyForRow( + modifier = modifier, + valueOrNull = Unit.takeIf { visible && state.value.password == password }, + ) { + AhContainer( + score = 0f, + ) { + Text( + modifier = Modifier + .padding(horizontal = 4.dp), + text = stringResource(Res.strings.password_pwned_label), + ) + } + } +} + +@Composable +private fun producePasswordPwnedBadgeState( + password: String, +): State { + val checkPasswordLeak: CheckPasswordLeak by rememberInstance() + + val sink = remember { + MutableStateFlow(password) + } + + val initialState = PasswordPwnedBadgeState( + password = password, + content = Loadable.Loading, + ) + val state = remember(sink) { + sink + .debounce(500L) + .onStart { + emit(password) + } + .distinctUntilChanged() + .flatMapLatest { pw -> + flowOf(Unit) + .map { + coroutineScope { + val deferredScore = async(Dispatchers.Default) { + val request = CheckPasswordLeakRequest( + password = pw, + cache = false, + ) + checkPasswordLeak(request) + .attempt() + .bind() + .getOrNull() + } + delay(250L) + deferredScore.await() + } + } + .map { score -> + val content: Loadable = Loadable.Ok(score) + PasswordPwnedBadgeState( + password = pw, + content = content, + ) + } + .onStart { + emit(initialState) + } + } + .flowOn(Dispatchers.Default) + }.collectAsState(initial = initialState) + + SideEffect { + sink.value = password + } + + return state +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/PasswordStrengthBadge.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/PasswordStrengthBadge.kt new file mode 100644 index 00000000..8937d0e5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/PasswordStrengthBadge.kt @@ -0,0 +1,162 @@ +package com.artemchep.keyguard.ui + +import androidx.compose.animation.animateContentSize +import androidx.compose.animation.core.animateFloatAsState +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.SideEffect +import androidx.compose.runtime.State +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.graphicsLayer +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.PasswordStrength +import com.artemchep.keyguard.common.model.alertScore +import com.artemchep.keyguard.common.model.formatLocalized +import com.artemchep.keyguard.common.model.getOrNull +import com.artemchep.keyguard.common.usecase.GetPasswordStrength +import com.artemchep.keyguard.feature.crashlytics.crashlyticsTap +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.async +import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.debounce +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onStart +import org.kodein.di.compose.rememberInstance + +private data class PasswordStrengthBadgeState( + val password: String, + val content: Loadable, +) + +@Composable +fun PasswordStrengthBadge( + modifier: Modifier = Modifier, + password: String, +) { + val state = producePasswordStrengthBadgeState(password) + val score by remember(state) { + derivedStateOf { + val strength = state.value.content.getOrNull() + strength?.alertScore() + ?: 1f + } + } + val alpha by run { + val enabled by remember(state, password) { + derivedStateOf { + state.value.password == password + } + } + val targetAlpha = if (enabled) 1f else DisabledEmphasisAlpha + animateFloatAsState(targetAlpha) + } + AhContainer( + modifier = modifier + .graphicsLayer { + this.alpha = alpha + }, + score = score, + ) { + Box( + modifier = Modifier + .animateContentSize(), + ) { + val hasStrength by remember(state) { + derivedStateOf { + state.value.content is Loadable.Ok + } + } + if (hasStrength) { + val strength = state.value.content.getOrNull() + if (strength != null) { + Text( + modifier = Modifier + .padding(horizontal = 4.dp), + text = strength.formatLocalized(), + ) + } + } else { + CircularProgressIndicator( + modifier = Modifier + .size(17.dp), + ) + } + } + } +} + +@Composable +private fun producePasswordStrengthBadgeState( + password: String, +): State { + val getPasswordStrength: GetPasswordStrength by rememberInstance() + + val sink = remember { + MutableStateFlow(password) + } + + val initialState = PasswordStrengthBadgeState( + password = password, + content = Loadable.Loading, + ) + val state = remember(sink) { + sink + .debounce(250L) + .onStart { + emit(password) + } + .distinctUntilChanged() + .flatMapLatest { pw -> + flowOf(Unit) + .map { + coroutineScope { + val deferredScore = async(Dispatchers.Default) { + getPasswordStrength(pw) + .map { pwStrength -> pwStrength.score } + .crashlyticsTap() + .attempt() + .bind() + .getOrNull() + } + delay(250L) + deferredScore.await() + } + } + .map { score -> + val content: Loadable = Loadable.Ok(score) + PasswordStrengthBadgeState( + password = pw, + content = content, + ) + } + .onStart { + emit(initialState) + } + } + .flowOn(Dispatchers.Default) + }.collectAsState(initial = initialState) + + SideEffect { + sink.value = password + } + + return state +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/Placeholder.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/Placeholder.kt new file mode 100644 index 00000000..acc4ec4c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/Placeholder.kt @@ -0,0 +1,100 @@ +package com.artemchep.keyguard.ui + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.widthIn +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.ProvideTextStyle +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.alpha +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.res.Res +import compose.icons.FeatherIcons +import compose.icons.feathericons.Package +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun Placeholder( + modifier: Modifier = Modifier, + icon: ImageVector, + title: String, +) { + Column( + modifier = modifier + .padding(horizontal = 16.dp), + ) { + Placeholder( + icon = icon, + title = title, + ) + } +} + +@Composable +fun Placeholder( + modifier: Modifier = Modifier, +) { + Placeholder( + modifier = modifier, + icon = FeatherIcons.Package, + title = stringResource(Res.strings.coming_soon), + ) +} + +@Composable +fun ColumnScope.Placeholder( + icon: ImageVector, + title: String, +) { + Placeholder( + icon = { m -> + Icon( + modifier = m, + imageVector = icon, + contentDescription = null, + ) + }, + title = { m -> + Text( + modifier = m, + text = title, + textAlign = TextAlign.Center, + ) + }, + ) +} + +@Composable +fun ColumnScope.Placeholder( + icon: @Composable (Modifier) -> Unit, + title: @Composable (Modifier) -> Unit, +) { + icon( + Modifier + .size(96.dp) + .alpha(MediumEmphasisAlpha) + .align(Alignment.CenterHorizontally), + ) + Spacer( + modifier = Modifier + .height(16.dp), + ) + ProvideTextStyle(MaterialTheme.typography.labelLarge) { + title( + Modifier + .widthIn(max = 196.dp) + .alpha(MediumEmphasisAlpha) + .align(Alignment.CenterHorizontally), + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/Scaffold.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/Scaffold.kt new file mode 100644 index 00000000..8daa95f2 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/Scaffold.kt @@ -0,0 +1,476 @@ +package com.artemchep.keyguard.ui + +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.ExperimentalAnimationApi +import androidx.compose.animation.animateColorAsState +import androidx.compose.animation.expandIn +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.animation.scaleIn +import androidx.compose.animation.scaleOut +import androidx.compose.animation.shrinkOut +import androidx.compose.foundation.ScrollState +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.MutableWindowInsets +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.consumeWindowInsets +import androidx.compose.foundation.layout.exclude +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.onConsumedWindowInsetsChanged +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.union +import androidx.compose.foundation.layout.widthIn +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.LazyListScope +import androidx.compose.foundation.lazy.LazyListState +import androidx.compose.foundation.lazy.rememberLazyListState +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll +import androidx.compose.material.ExperimentalMaterialApi +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.SelectAll +import androidx.compose.material.pullrefresh.PullRefreshState +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.ExtendedFloatingActionButton +import androidx.compose.material3.FabPosition +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.LinearProgressIndicator +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Scaffold +import androidx.compose.material3.SmallFloatingActionButton +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarScrollBehavior +import androidx.compose.material3.contentColorFor +import androidx.compose.runtime.Composable +import androidx.compose.runtime.Immutable +import androidx.compose.runtime.Stable +import androidx.compose.runtime.State +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.compositeOver +import androidx.compose.ui.graphics.graphicsLayer +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.unit.IntSize +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.platform.leIme +import com.artemchep.keyguard.platform.leSystemBars +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.scrollbar.ColumnScrollbar +import com.artemchep.keyguard.ui.scrollbar.LazyColumnScrollbar +import com.artemchep.keyguard.ui.selection.SelectionBar +import com.artemchep.keyguard.ui.theme.combineAlpha +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.collections.immutable.ImmutableList +import kotlin.math.log10 + +val screenMaxWidth = 768.dp +private val screenPaddingTop = 8.dp +private val screenPaddingBottom = 8.dp + +@OptIn( + ExperimentalMaterial3Api::class, + ExperimentalMaterialApi::class, + ExperimentalLayoutApi::class, +) +@Composable +fun ScaffoldLazyColumn( + modifier: Modifier = Modifier, + topAppBarScrollBehavior: TopAppBarScrollBehavior, + topBar: @Composable () -> Unit = {}, + bottomBar: @Composable () -> Unit = {}, + snackbarHost: @Composable () -> Unit = {}, + floatingActionState: State = rememberUpdatedState(newValue = null), + floatingActionButton: @Composable FabScope.() -> Unit = {}, + floatingActionButtonPosition: FabPosition = FabPosition.End, + pullRefreshState: PullRefreshState? = null, + containerColor: Color = MaterialTheme.colorScheme.background, + contentColor: Color = contentColorFor(containerColor), + contentWindowInsets: WindowInsets = scaffoldContentWindowInsets, + overlay: @Composable OverlayScope.() -> Unit = {}, + listVerticalArrangement: Arrangement.Vertical = Arrangement.Top, + listState: LazyListState = rememberLazyListState(), + listContent: LazyListScope.() -> Unit, +) { + val density = LocalDensity.current + val translationYState = remember(density, pullRefreshState) { + derivedStateOf { + val progress = run { + val p = pullRefreshState?.progress ?: 0f + log10(p.coerceAtLeast(0f) * 10 + 1) + } + progress * density.density * 64 + } + } + + val remainingInsets = remember { MutableWindowInsets() } + Scaffold( + modifier = modifier + .onConsumedWindowInsetsChanged { consumedWindowInsets -> + remainingInsets.insets = contentWindowInsets.exclude(consumedWindowInsets) + }, + topBar = topBar, + bottomBar = bottomBar, + snackbarHost = snackbarHost, + floatingActionButton = { + val expandedState = topAppBarScrollBehavior.rememberFabExpanded() + val scope = remember( + floatingActionState, + expandedState, + ) { + MutableFabScope( + state = floatingActionState, + expanded = expandedState, + ) + } + floatingActionButton(scope) + }, + floatingActionButtonPosition = floatingActionButtonPosition, + containerColor = containerColor, + contentColor = contentColor, + contentWindowInsets = remainingInsets, + ) { contentPadding -> + val contentPaddingWithFab = calculatePaddingWithFab( + contentPadding = contentPadding, + fabState = floatingActionState, + ) + val contentPaddingState = rememberUpdatedState(contentPaddingWithFab) + LazyColumnScrollbar( + modifier = Modifier + .fillMaxSize() + .consumeWindowInsets(contentWindowInsets), + contentPadding = contentPadding, + listState = listState, + ) { + LazyColumn( + modifier = Modifier + .fillMaxSize() + .graphicsLayer { + translationY = translationYState.value + }, + verticalArrangement = listVerticalArrangement, + contentPadding = contentPaddingWithFab, + state = listState, + ) { + listContent() + } + } + val overlayScope = remember(contentPaddingState) { + MutableOverlayScope( + contentPadding = contentPaddingState, + ) + } + overlay(overlayScope) + } +} + +@OptIn(ExperimentalMaterial3Api::class, ExperimentalLayoutApi::class) +@Composable +fun ScaffoldColumn( + modifier: Modifier = Modifier, + topAppBarScrollBehavior: TopAppBarScrollBehavior, + topBar: @Composable () -> Unit = {}, + bottomBar: @Composable () -> Unit = {}, + snackbarHost: @Composable () -> Unit = {}, + floatingActionState: State = rememberUpdatedState(newValue = null), + floatingActionButton: @Composable FabScope.() -> Unit = {}, + floatingActionButtonPosition: FabPosition = FabPosition.End, + containerColor: Color = MaterialTheme.colorScheme.background, + contentColor: Color = contentColorFor(containerColor), + contentWindowInsets: WindowInsets = scaffoldContentWindowInsets, + overlay: @Composable OverlayScope.() -> Unit = {}, + columnVerticalArrangement: Arrangement.Vertical = Arrangement.Top, + columnHorizontalAlignment: Alignment.Horizontal = Alignment.Start, + columnScrollState: ScrollState = rememberScrollState(), + columnContent: @Composable ColumnScope.() -> Unit, +) { + val remainingInsets = remember { MutableWindowInsets() } + Scaffold( + modifier = modifier + .onConsumedWindowInsetsChanged { consumedWindowInsets -> + remainingInsets.insets = contentWindowInsets.exclude(consumedWindowInsets) + }, + topBar = topBar, + bottomBar = bottomBar, + snackbarHost = snackbarHost, + floatingActionButton = { + val expandedState = topAppBarScrollBehavior.rememberFabExpanded() + val scope = remember( + floatingActionState, + expandedState, + ) { + MutableFabScope( + state = floatingActionState, + expanded = expandedState, + ) + } + floatingActionButton(scope) + }, + floatingActionButtonPosition = floatingActionButtonPosition, + containerColor = containerColor, + contentColor = contentColor, + contentWindowInsets = remainingInsets, + ) { contentPadding -> + val contentPaddingWithFab = calculatePaddingWithFab( + contentPadding = contentPadding, + fabState = floatingActionState, + ) + val contentPaddingState = rememberUpdatedState(contentPaddingWithFab) + ColumnScrollbar( + modifier = Modifier + .fillMaxSize() + .consumeWindowInsets(contentWindowInsets), + state = columnScrollState, + contentPadding = contentPadding, + ) { + Box( + modifier = Modifier + .fillMaxSize() + .verticalScroll(columnScrollState) + .padding(contentPaddingWithFab), + ) { + Column( + modifier = Modifier + .widthIn(max = screenMaxWidth), + verticalArrangement = columnVerticalArrangement, + horizontalAlignment = columnHorizontalAlignment, + ) { + columnContent() + } + } + } + val overlayScope = remember(contentPaddingState) { + MutableOverlayScope( + contentPadding = contentPaddingState, + ) + } + overlay(overlayScope) + } +} + +private fun calculatePaddingWithFab( + contentPadding: PaddingValues, + fabState: State, +) = run { + val fabHeight = 56.dp + val fabPadding = fabHeight + 16.dp * 2 + val extraPadding = if (fabState.value != null) { + PaddingValues( + top = screenPaddingTop, + bottom = fabPadding, + ) + } else { + PaddingValues( + top = screenPaddingTop, + bottom = screenPaddingBottom, + ) + } + contentPadding.plus(extraPadding) +} + +@Immutable +data class FabState( + val onClick: (() -> Unit)?, + val model: Any?, +) + +@Stable +interface FabScope { + val state: State + + val expanded: State +} + +private class MutableFabScope( + override val state: State, + override val expanded: State, +) : FabScope + +@Composable +fun FabScope.DefaultFab( + color: Color = MaterialTheme.colorScheme.primaryContainer, + contentColor: Color = contentColorFor(color), + icon: @Composable () -> Unit, + text: @Composable () -> Unit, +) { + val latestFabState = state.value + val latestOnClick by rememberUpdatedState(latestFabState?.onClick) + ExpandedIfNotEmpty( + valueOrNull = latestFabState, + enter = fadeIn() + scaleIn(), + exit = scaleOut() + fadeOut(), + ) { fabState -> + val enabled = fabState.onClick != null + val containerColorTarget = + if (enabled) { + color + } else { + color + .combineAlpha(DisabledEmphasisAlpha) + .compositeOver(MaterialTheme.colorScheme.surfaceVariant) + } + val containerColor by animateColorAsState(containerColorTarget) + val contentColorTarget = + if (enabled) { + contentColor + } else { + MaterialTheme.colorScheme.onSurfaceVariant + .combineAlpha(DisabledEmphasisAlpha) + } + val contentColor by animateColorAsState(contentColorTarget) + ExtendedFloatingActionButton( + expanded = expanded.value && enabled, + icon = icon, + text = text, + containerColor = containerColor, + contentColor = contentColor, + onClick = { + latestOnClick?.invoke() + }, + ) + } +} + +@Composable +fun FabScope.SmallFab( + icon: @Composable () -> Unit, + onClick: (() -> Unit)?, +) { + val latestFabState = state.value + val latestOnClick by rememberUpdatedState(onClick) + ExpandedIfNotEmpty( + valueOrNull = latestFabState, + enter = fadeIn() + scaleIn(), + exit = scaleOut() + fadeOut(), + ) { fabState -> + val enabled = fabState.onClick != null + val containerColorTarget = + if (enabled) { + MaterialTheme.colorScheme.secondaryContainer + } else { + MaterialTheme.colorScheme.secondaryContainer + .combineAlpha(DisabledEmphasisAlpha) + .compositeOver(MaterialTheme.colorScheme.surfaceVariant) + } + val containerColor by animateColorAsState(containerColorTarget) + val contentColorTarget = + if (enabled) { + MaterialTheme.colorScheme.onSecondaryContainer + } else { + MaterialTheme.colorScheme.onSurfaceVariant + .combineAlpha(DisabledEmphasisAlpha) + } + val contentColor by animateColorAsState(contentColorTarget) + SmallFloatingActionButton( + containerColor = containerColor, + contentColor = contentColor, + onClick = { + latestOnClick?.invoke() + }, + ) { + icon() + } + } +} + +@Composable +fun DefaultSelection( + state: Selection?, +) { + ExpandedIfNotEmpty( + valueOrNull = state, + ) { selection -> + SelectionBar( + title = { + val text = stringResource(Res.strings.selection_n_selected, selection.count) + Text(text) + }, + trailing = { + val updatedOnSelectAll by rememberUpdatedState(selection.onSelectAll) + IconButton( + enabled = updatedOnSelectAll != null, + onClick = { + updatedOnSelectAll?.invoke() + }, + ) { + Icon( + imageVector = Icons.Outlined.SelectAll, + contentDescription = null, + ) + } + + OptionsButton( + actions = selection.actions, + ) + }, + onClear = selection.onClear, + ) + } +} + +@Stable +interface OverlayScope { + val contentPadding: State +} + +private class MutableOverlayScope( + override val contentPadding: State, +) : OverlayScope + +@Composable +fun OverlayScope.DefaultProgressBar( + modifier: Modifier = Modifier, + visible: Boolean, +) { + val contentPadding = contentPadding + val finalPadding = remember(contentPadding) { + derivedStateOf { + val p = PaddingValues(top = screenPaddingTop) + contentPadding.value - p + } + } + AnimatedVisibility( + modifier = modifier + .padding(finalPadding.value), + visible = visible, + enter = fadeIn() + expandIn( + initialSize = { + IntSize(it.width, 0) + }, + ), + exit = shrinkOut( + targetSize = { + IntSize(it.width, 0) + }, + ) + fadeOut(), + ) { + LinearProgressIndicator( + modifier = Modifier + .fillMaxWidth(), + ) + } +} + +@Immutable +data class Selection( + val count: Int, + val actions: ImmutableList, + val onSelectAll: (() -> Unit)? = null, + val onClear: (() -> Unit)? = null, +) + +private val scaffoldContentWindowInsets + @Composable + get() = WindowInsets.leSystemBars + .union(WindowInsets.leIme) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/SimpleNote.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/SimpleNote.kt new file mode 100644 index 00000000..071b27d6 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/SimpleNote.kt @@ -0,0 +1,121 @@ +package com.artemchep.keyguard.ui + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Check +import androidx.compose.material.icons.outlined.ErrorOutline +import androidx.compose.material.icons.outlined.Info +import androidx.compose.material.icons.outlined.Warning +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.Immutable +import androidx.compose.ui.Modifier +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.theme.info +import com.artemchep.keyguard.ui.theme.infoContainer +import com.artemchep.keyguard.ui.theme.ok +import com.artemchep.keyguard.ui.theme.okContainer +import com.artemchep.keyguard.ui.theme.onInfoContainer +import com.artemchep.keyguard.ui.theme.onOkContainer +import com.artemchep.keyguard.ui.theme.onWarningContainer +import com.artemchep.keyguard.ui.theme.warning +import com.artemchep.keyguard.ui.theme.warningContainer + +@Immutable +data class SimpleNote( + val text: String, + val type: Type, +) { + @Immutable + enum class Type { + OK, + INFO, + WARNING, + ERROR, + } +} + +@Composable +fun FlatSimpleNote( + modifier: Modifier = Modifier, + note: SimpleNote, +) { + FlatSimpleNote( + modifier = modifier, + type = note.type, + text = note.text, + ) +} + +@Composable +fun FlatSimpleNote( + modifier: Modifier = Modifier, + type: SimpleNote.Type, + title: String? = null, + text: String? = null, + trailing: (@Composable RowScope.() -> Unit)? = null, +) { + val tintColor = when (type) { + SimpleNote.Type.OK -> MaterialTheme.colorScheme.ok + SimpleNote.Type.INFO -> MaterialTheme.colorScheme.info + SimpleNote.Type.WARNING -> MaterialTheme.colorScheme.warning + SimpleNote.Type.ERROR -> MaterialTheme.colorScheme.error + } + val surfaceColor = when (type) { + SimpleNote.Type.OK -> MaterialTheme.colorScheme.okContainer + SimpleNote.Type.INFO -> MaterialTheme.colorScheme.infoContainer + SimpleNote.Type.WARNING -> MaterialTheme.colorScheme.warningContainer + SimpleNote.Type.ERROR -> MaterialTheme.colorScheme.errorContainer + } + val contentColor = when (type) { + SimpleNote.Type.OK -> MaterialTheme.colorScheme.onOkContainer + SimpleNote.Type.INFO -> MaterialTheme.colorScheme.onInfoContainer + SimpleNote.Type.WARNING -> MaterialTheme.colorScheme.onWarningContainer + SimpleNote.Type.ERROR -> MaterialTheme.colorScheme.onErrorContainer + } + FlatItemLayout( + modifier = modifier, + backgroundColor = surfaceColor + .combineAlpha(DisabledEmphasisAlpha), + leading = { + val imageVector = when (type) { + SimpleNote.Type.OK -> Icons.Outlined.Check + SimpleNote.Type.INFO -> Icons.Outlined.Info + SimpleNote.Type.WARNING -> Icons.Outlined.Warning + SimpleNote.Type.ERROR -> Icons.Outlined.ErrorOutline + } + Icon( + imageVector = imageVector, + contentDescription = null, + tint = tintColor, + ) + }, + content = { + if (title != null) { + Text( + text = title, + style = MaterialTheme.typography.titleSmall, + color = contentColor, + ) + } + if (text != null) { + val textColor = if (title != null) { + LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha) + } else { + LocalContentColor.current + } + Text( + text = text, + style = MaterialTheme.typography.bodySmall, + color = textColor, + ) + } + }, + trailing = trailing, + enabled = true, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/SliderInteraction.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/SliderInteraction.kt new file mode 100644 index 00000000..637bcd67 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/SliderInteraction.kt @@ -0,0 +1,43 @@ +package com.artemchep.keyguard.ui + +import androidx.compose.foundation.interaction.DragInteraction +import androidx.compose.foundation.interaction.Interaction +import androidx.compose.foundation.interaction.InteractionSource +import androidx.compose.foundation.interaction.PressInteraction +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import kotlinx.coroutines.flow.collect +import kotlinx.coroutines.flow.onEach + +@Composable +fun InteractionSource.collectIsInteractedWith(): Boolean { + var isInteractedWith by remember(this) { + mutableStateOf(false) + } + + LaunchedEffect(this) { + val pressInteractions = mutableListOf() + val dragInteractions = mutableListOf() + interactions + .onEach { interaction: Interaction -> + when (interaction) { + is PressInteraction.Press -> pressInteractions.add(interaction) + is PressInteraction.Release -> pressInteractions.remove(interaction.press) + is PressInteraction.Cancel -> pressInteractions.remove(interaction.press) + is DragInteraction.Start -> dragInteractions.add(interaction) + is DragInteraction.Stop -> dragInteractions.remove(interaction.start) + is DragInteraction.Cancel -> dragInteractions.remove(interaction.start) + } + val userIsInteracting = pressInteractions.isNotEmpty() || + dragInteractions.isNotEmpty() + isInteractedWith = userIsInteracting + } + .collect() + } + + return isInteractedWith +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/StringForEach.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/StringForEach.kt new file mode 100644 index 00000000..339a3f7f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/StringForEach.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.ui + +import kotlin.streams.asSequence + +fun String.asCodePointsSequence(): Sequence = sequence { + val out = codePoints() + .asSequence() + .map { codePoint -> + String(Character.toChars(codePoint)) + } + yieldAll(out) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/SyncSupervisorImpl.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/SyncSupervisorImpl.kt new file mode 100644 index 00000000..5e93d599 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/SyncSupervisorImpl.kt @@ -0,0 +1,39 @@ +package com.artemchep.keyguard.ui + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.ioEffect +import kotlinx.collections.immutable.persistentMapOf +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.update + +class SyncSupervisorImpl { + private val sink = MutableStateFlow( + value = persistentMapOf(), + ) + + val output = sink + .map { it.keys } + .distinctUntilChanged() + + fun track(key: Key, io: IO): IO = ioEffect { + try { + updateState(key, Int::inc) + io.bind() + } finally { + updateState(key, Int::dec) + } + } + + private fun updateState(key: Key, block: (Int) -> Int) = + sink.update { map -> + val v = map.getOrElse(key) { 0 }.let(block) + if (v > 0) { + map.put(key, v) + } else { + map.remove(key) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/TextItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/TextItem.kt new file mode 100644 index 00000000..725d6daa --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/TextItem.kt @@ -0,0 +1,1235 @@ +package com.artemchep.keyguard.ui + +import androidx.compose.animation.animateColorAsState +import androidx.compose.animation.animateContentSize +import androidx.compose.animation.core.LinearEasing +import androidx.compose.animation.core.animateDpAsState +import androidx.compose.animation.core.animateFloat +import androidx.compose.animation.core.animateFloatAsState +import androidx.compose.animation.core.spring +import androidx.compose.animation.core.tween +import androidx.compose.animation.core.updateTransition +import androidx.compose.foundation.border +import androidx.compose.foundation.clickable +import androidx.compose.foundation.horizontalScroll +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.interaction.collectIsFocusedAsState +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.defaultMinSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.heightIn +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.text.BasicTextField +import androidx.compose.foundation.text.KeyboardActions +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.AutoAwesome +import androidx.compose.material.icons.outlined.Clear +import androidx.compose.material.icons.outlined.Email +import androidx.compose.material.icons.outlined.Password +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.LocalTextStyle +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.ProvideTextStyle +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.material3.TextFieldDefaults +import androidx.compose.material3.contentColorFor +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.State +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.runtime.setValue +import androidx.compose.runtime.snapshotFlow +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.alpha +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.drawBehind +import androidx.compose.ui.focus.onFocusChanged +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.SolidColor +import androidx.compose.ui.graphics.compositeOver +import androidx.compose.ui.graphics.graphicsLayer +import androidx.compose.ui.graphics.luminance +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.platform.testTag +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.input.KeyboardType +import androidx.compose.ui.text.input.PasswordVisualTransformation +import androidx.compose.ui.text.input.TextFieldValue +import androidx.compose.ui.text.input.VisualTransformation +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import com.artemchep.keyguard.feature.auth.common.VisibilityState +import com.artemchep.keyguard.feature.auth.common.VisibilityToggle +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.focus.FocusRequester2 +import com.artemchep.keyguard.ui.focus.bringIntoView +import com.artemchep.keyguard.ui.focus.focusRequester2 +import com.artemchep.keyguard.ui.icons.IconBox +import com.artemchep.keyguard.ui.icons.KeyguardWebsite +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.theme.infoContainer +import com.artemchep.keyguard.ui.theme.monoFontFamily +import com.artemchep.keyguard.ui.theme.okContainer +import com.artemchep.keyguard.ui.theme.warningContainer +import com.artemchep.keyguard.ui.util.DividerColor +import com.artemchep.keyguard.ui.util.HorizontalDivider +import com.artemchep.keyguard.ui.util.VerticalDivider +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.collections.immutable.ImmutableList +import kotlinx.collections.immutable.persistentListOf +import kotlinx.collections.immutable.toImmutableList +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.debounce +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.map +import kotlinx.datetime.Clock +import kotlinx.datetime.Instant + +@Composable +fun UrlFlatTextField( + modifier: Modifier = Modifier, + testTag: String? = null, + label: String? = null, + placeholder: String? = null, + value: TextFieldModel2, + keyboardOptions: KeyboardOptions = KeyboardOptions.Default, + keyboardActions: KeyboardActions = KeyboardActions.Default, + clearButton: Boolean = true, + leading: (@Composable RowScope.() -> Unit)? = { + IconBox( + main = Icons.Outlined.KeyguardWebsite, + ) + }, + trailing: (@Composable RowScope.() -> Unit)? = null, + content: (@Composable ColumnScope.() -> Unit)? = null, +) { + FlatTextField( + modifier = modifier, + testTag = testTag, + label = label + ?: stringResource(Res.strings.url), + placeholder = placeholder, + value = value, + keyboardOptions = keyboardOptions.copy( + autoCorrect = false, + keyboardType = KeyboardType.Uri, + ), + keyboardActions = keyboardActions, + singleLine = true, + maxLines = 1, + clearButton = clearButton, + leading = leading, + trailing = trailing, + content = content, + ) +} + +@Composable +fun EmailFlatTextField( + modifier: Modifier = Modifier, + fieldModifier: Modifier = Modifier, + boxModifier: Modifier = Modifier, + testTag: String? = null, + label: String? = null, + placeholder: String? = "username@example.com", + value: TextFieldModel2, + keyboardOptions: KeyboardOptions = KeyboardOptions.Default, + keyboardActions: KeyboardActions = KeyboardActions.Default, + clearButton: Boolean = true, + leading: (@Composable RowScope.() -> Unit)? = { + IconBox( + main = Icons.Outlined.Email, + ) + }, + trailing: (@Composable RowScope.() -> Unit)? = null, + content: (@Composable ColumnScope.() -> Unit)? = null, +) { + FlatTextField( + modifier = modifier, + fieldModifier = fieldModifier, + boxModifier = boxModifier, + testTag = testTag, + label = label + ?: stringResource(Res.strings.email), + placeholder = placeholder, + value = value, + keyboardOptions = keyboardOptions.copy( + autoCorrect = false, + keyboardType = KeyboardType.Email, + ), + keyboardActions = keyboardActions, + singleLine = true, + maxLines = 1, + clearButton = clearButton, + leading = leading, + trailing = trailing, + content = content, + ) +} + +@Composable +fun PasswordFlatTextField( + modifier: Modifier = Modifier, + fieldModifier: Modifier = Modifier, + boxModifier: Modifier = Modifier, + testTag: String? = null, + label: String? = null, + placeholder: String? = null, + value: TextFieldModel2, + keyboardOptions: KeyboardOptions = KeyboardOptions.Default, + keyboardActions: KeyboardActions = KeyboardActions.Default, + clearButton: Boolean = true, + leading: (@Composable RowScope.() -> Unit)? = { + IconBox( + main = Icons.Outlined.Password, + ) + }, + trailing: (@Composable RowScope.() -> Unit)? = null, + content: (@Composable ColumnScope.() -> Unit)? = null, +) { + ConcealedFlatTextField( + modifier = modifier, + fieldModifier = fieldModifier, + boxModifier = boxModifier, + testTag = testTag, + label = label + ?: stringResource(Res.strings.password), + placeholder = placeholder, + value = value, + keyboardOptions = keyboardOptions.copy( + autoCorrect = false, + keyboardType = KeyboardType.Password, + ), + keyboardActions = keyboardActions, + singleLine = true, + maxLines = 1, + clearButton = clearButton, + leading = leading, + trailing = trailing, + content = content, + ) +} + +@Composable +fun ConcealedFlatTextField( + modifier: Modifier = Modifier, + fieldModifier: Modifier = Modifier, + boxModifier: Modifier = Modifier, + testTag: String? = null, + label: String? = null, + placeholder: String? = null, + value: TextFieldModel2, + keyboardOptions: KeyboardOptions = KeyboardOptions.Default, + keyboardActions: KeyboardActions = KeyboardActions.Default, + singleLine: Boolean = false, + maxLines: Int = Int.MAX_VALUE, + interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, + clearButton: Boolean = true, + leading: (@Composable RowScope.() -> Unit)? = null, + trailing: (@Composable RowScope.() -> Unit)? = null, + content: (@Composable ColumnScope.() -> Unit)? = null, +) { + val visibilityState = remember { + VisibilityState() + } + FlatTextField( + modifier = modifier, + fieldModifier = fieldModifier, + boxModifier = boxModifier, + testTag = testTag, + label = label, + placeholder = placeholder, + value = value, + textStyle = LocalTextStyle.current.copy( + fontFamily = monoFontFamily, + ), + visualTransformation = if (visibilityState.isVisible) { + VisualTransformation.None + } else { + PasswordVisualTransformation() + }, + keyboardOptions = keyboardOptions, + keyboardActions = keyboardActions, + singleLine = singleLine, + maxLines = maxLines, + interactionSource = interactionSource, + clearButton = clearButton, + leading = leading, + trailing = { + VisibilityToggle( + visibilityState = visibilityState, + ) + if (trailing != null) { + trailing() + } + }, + content = content, + ) +} + +@Composable +fun FlatTextField( + modifier: Modifier = Modifier, + fieldModifier: Modifier = Modifier, + boxModifier: Modifier = Modifier, + testTag: String? = null, + label: String? = null, + placeholder: String? = null, + value: TextFieldModel2, + textStyle: TextStyle = LocalTextStyle.current, + visualTransformation: VisualTransformation = VisualTransformation.None, + keyboardOptions: KeyboardOptions = KeyboardOptions.Default, + keyboardActions: KeyboardActions = KeyboardActions.Default, + singleLine: Boolean = false, + maxLines: Int = Int.MAX_VALUE, + interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, + clearButton: Boolean = true, + leading: (@Composable RowScope.() -> Unit)? = null, + trailing: (@Composable RowScope.() -> Unit)? = null, + content: (@Composable ColumnScope.() -> Unit)? = null, +) { + val enabled = value.onChange != null + + val isError = value.error != null + var hasFocus by remember { + mutableStateOf(false) + } + + val fieldFocusRequester = remember { + FocusRequester2() + } + + FlatTextFieldSurface( + modifier = modifier + .onFocusChanged { state -> + hasFocus = state.hasFocus + }, + isError = isError, + isFocused = hasFocus, + ) { + Column { + Row( + modifier = Modifier + .padding( + start = 16.dp, + end = 8.dp, + top = 8.dp, + bottom = 8.dp, + ), + verticalAlignment = Alignment.CenterVertically, + ) { + val disabledAlphaTarget = if (value.onChange != null) 1f else DisabledEmphasisAlpha + val disabledAlphaState = animateFloatAsState(disabledAlphaTarget) + + if (leading != null) { + Row( + modifier = Modifier + .graphicsLayer { + alpha = disabledAlphaState.value + }, + verticalAlignment = Alignment.CenterVertically, + ) { + leading() + } + Spacer( + modifier = Modifier + .width(16.dp), + ) + } + Column( + modifier = Modifier + .weight(1f), + ) { + Box( + modifier = Modifier + .heightIn(min = 48.dp), + contentAlignment = Alignment.TopStart, + ) { + if (label != null) { + val focused = hasFocus || value.text.isNotEmpty() + + val focusedTextSize = MaterialTheme.typography.bodySmall.fontSize.value + val normalTextSize = LocalTextStyle.current.fontSize.value + val textSize by animateFloatAsState( + targetValue = if (focused) focusedTextSize else normalTextSize, + ) + + val focusedTextColor = when { + isError -> MaterialTheme.colorScheme.error + hasFocus -> MaterialTheme.colorScheme.primary + else -> LocalContentColor.current + } + val normalTextColor = LocalContentColor.current + .combineAlpha(HighEmphasisAlpha) + val textColor by animateColorAsState( + targetValue = if (focused) focusedTextColor else normalTextColor, + ) + + val padding by animateDpAsState( + targetValue = if (focused) 28.dp else 0.dp, + ) + + Box( + modifier = Modifier + .heightIn(min = 48.dp) + .graphicsLayer { + alpha = disabledAlphaState.value + }, + contentAlignment = Alignment.CenterStart, + ) { + Text( + modifier = Modifier + .fillMaxWidth() + .padding(bottom = padding), + text = label, + fontSize = textSize.sp, + maxLines = 1, + color = textColor, + ) + } + } + val focused = (hasFocus || value.text.isNotEmpty()) && label != null + val padding by animateDpAsState( + targetValue = if (focused) 20.dp else 0.dp, + ) + + val finalPlaceholder = placeholder ?: value.hint + PlainTextField( + modifier = fieldModifier + .fillMaxWidth() + .focusRequester2(fieldFocusRequester) + .heightIn(min = 48.dp), + boxModifier = boxModifier + .padding(top = padding), + placeholder = if (finalPlaceholder != null) { + // composable + { + val ff by animateFloatAsState( + targetValue = if (focused || label == null) 1f else 0f, + ) + Text( + modifier = Modifier + .alpha(ff), + text = finalPlaceholder, + maxLines = 1, + ) + } + } else { + null + }, + textStyle = textStyle, + visualTransformation = visualTransformation, + keyboardOptions = keyboardOptions, + keyboardActions = keyboardActions, + singleLine = singleLine, + maxLines = maxLines, + value = value.state.value, + testTag = testTag, + enabled = enabled, + isError = value.error != null, + interactionSource = interactionSource, + onValueChange = { + value.onChange?.invoke(it) + }, + ) + } + Column( + modifier = Modifier + .padding( + end = 8.dp, + ), + ) { + ExpandedIfNotEmpty( + valueOrNull = value.error ?: value.vl, + ) { + val error = it as? String + val badge = it as? TextFieldModel2.Vl + FlatTextFieldBadgeLegacy( + error = error, + badge = badge, + ) + } + if (content != null) { + content() + } + } + } + if (trailing != null) { + Spacer( + modifier = Modifier + .width(8.dp), + ) + Row( + modifier = Modifier + .graphicsLayer { + alpha = disabledAlphaState.value + }, + verticalAlignment = Alignment.CenterVertically, + ) { + trailing() + } + } + val isNotEmpty = value.state.value.isNotEmpty() + ExpandedIfNotEmptyForRow( + valueOrNull = Unit.takeIf { isNotEmpty && hasFocus && clearButton }, + ) { + Row( + verticalAlignment = Alignment.CenterVertically, + ) { + Spacer( + modifier = Modifier + .width(8.dp), + ) + VerticalDivider( + modifier = Modifier + .height(24.dp), + ) + Spacer( + modifier = Modifier + .width(8.dp), + ) + IconButton( + enabled = value.onChange != null, + onClick = { + value.onChange?.invoke("") + // After clearing the text field we want to focus + // it, so the focus doesn't get reset to start of + // the page. + fieldFocusRequester.requestFocus() + }, + ) { + Icon( + imageVector = Icons.Outlined.Clear, + contentDescription = null, + ) + } + } + } + } + + val optionsText = rememberUpdatedState(value.text) + val optionsList = rememberUpdatedState(value.autocompleteOptions) + val options by remember { + val valueFlow = snapshotFlow { optionsText.value } + .debounce(80L) + .distinctUntilChanged() + val optionsFlow = snapshotFlow { optionsList.value } + combine( + valueFlow, + optionsFlow, + ) { v, options -> + val filteredOptions = options + .asSequence() + .filter { it.contains(v, ignoreCase = true) } + .take(3) + .toImmutableList() + // If the only option is the exact match of the value, + // then we do not show any suggestion. + if (filteredOptions.size == 1) { + val option = filteredOptions.first() + if (option == v) { + return@combine persistentListOf() + } + } + + filteredOptions + } + .map { options -> + Afh( + options = options, + createdAt = Clock.System.now(), + ) + } + .flowOn(Dispatchers.Default) + }.collectAsState( + initial = Afh( + options = persistentListOf(), + createdAt = Clock.System.now(), + ), + ) + ExpandedIfNotEmpty( + Unit.takeIf { hasFocus && options.options.isNotEmpty() }, + ) { + Row( + modifier = Modifier + .fillMaxWidth() + .horizontalScroll(rememberScrollState()) + .padding( + bottom = 8.dp, + start = 8.dp, + end = 8.dp, + ), + verticalAlignment = Alignment.CenterVertically, + ) { + Spacer( + modifier = Modifier + .width(8.dp), + ) + Icon( + modifier = Modifier + .size(18.dp), + imageVector = Icons.Outlined.AutoAwesome, + contentDescription = null, + ) + Spacer( + modifier = Modifier + .width(8.dp), + ) + options.options.forEachIndexed { index, text -> + if (index > 0) { + Spacer( + modifier = Modifier + .width(8.dp), + ) + } + Box( + modifier = Modifier + .heightIn(min = 32.dp) + .clip(MaterialTheme.shapes.small) + .border(Dp.Hairline, DividerColor, MaterialTheme.shapes.small) + .clickable { + value.onChange?.invoke(text) + } + .padding( + horizontal = 8.dp, + vertical = 4.dp, + ), + contentAlignment = Alignment.Center, + ) { + Text( + text = text, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + style = MaterialTheme.typography.labelLarge, + ) + } + } + } + } + } + } +} + +private data class Afh( + val options: ImmutableList, + val createdAt: Instant, +) + +@Composable +fun PlainTextField( + value: String, + onValueChange: (String) -> Unit, + modifier: Modifier = Modifier, + boxModifier: Modifier = Modifier, + testTag: String? = null, + enabled: Boolean = true, + readOnly: Boolean = false, + textStyle: TextStyle = LocalTextStyle.current, + placeholder: @Composable (() -> Unit)? = null, + isError: Boolean = false, + visualTransformation: VisualTransformation = VisualTransformation.None, + keyboardOptions: KeyboardOptions = KeyboardOptions.Default, + keyboardActions: KeyboardActions = KeyboardActions.Default, + singleLine: Boolean = false, + maxLines: Int = Int.MAX_VALUE, + interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, +) { + // If color is not provided via the text style, use content color as a default + val textColor = run { + val color = contentColorFor(backgroundColor = MaterialTheme.colorScheme.background) + val alpha = if (enabled) DefaultEmphasisAlpha else DisabledEmphasisAlpha + color.copy(alpha = alpha) + } + val mergedTextStyle = textStyle.merge(TextStyle(color = textColor)) + val cursorBrushColor = + if (isError) MaterialTheme.colorScheme.error else MaterialTheme.colorScheme.primary + + BasicTextField( + value = value, + modifier = modifier + .then( + if (testTag != null) { + Modifier.testTag(testTag) + } else { + Modifier + }, + ) + .defaultMinSize( + minWidth = TextFieldDefaults.MinWidth, + ) + .bringIntoView(), + onValueChange = onValueChange, + enabled = enabled, + readOnly = readOnly, + textStyle = mergedTextStyle, + cursorBrush = SolidColor(cursorBrushColor), + visualTransformation = visualTransformation, + keyboardOptions = keyboardOptions, + keyboardActions = keyboardActions, + interactionSource = interactionSource, + singleLine = singleLine, + maxLines = maxLines, + decorationBox = @Composable { innerTextField -> + PlainTextFieldDecorationBox( + modifier = boxModifier, + value = value, + innerTextField = innerTextField, + placeholder = placeholder, + visualTransformation = visualTransformation, + interactionSource = interactionSource, + ) + }, + ) +} + +@Composable +fun PlainTextField( + value: TextFieldValue, + onValueChange: (TextFieldValue) -> Unit, + modifier: Modifier = Modifier, + boxModifier: Modifier = Modifier, + enabled: Boolean = true, + readOnly: Boolean = false, + textStyle: TextStyle = LocalTextStyle.current, + placeholder: @Composable (() -> Unit)? = null, + isError: Boolean = false, + visualTransformation: VisualTransformation = VisualTransformation.None, + keyboardOptions: KeyboardOptions = KeyboardOptions.Default, + keyboardActions: KeyboardActions = KeyboardActions.Default, + singleLine: Boolean = false, + maxLines: Int = Int.MAX_VALUE, + interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, +) { + // If color is not provided via the text style, use content color as a default + val textColor = run { + val color = contentColorFor(backgroundColor = MaterialTheme.colorScheme.background) + val alpha = if (enabled) DefaultEmphasisAlpha else DisabledEmphasisAlpha + color.copy(alpha = alpha) + } + val mergedTextStyle = textStyle.merge(TextStyle(color = textColor)) + val cursorBrushColor = + if (isError) MaterialTheme.colorScheme.error else MaterialTheme.colorScheme.primary + + BasicTextField( + value = value, + modifier = modifier + .defaultMinSize( + minWidth = TextFieldDefaults.MinWidth, + ) + .bringIntoView(), + onValueChange = onValueChange, + enabled = enabled, + readOnly = readOnly, + textStyle = mergedTextStyle, + cursorBrush = SolidColor(cursorBrushColor), + visualTransformation = visualTransformation, + keyboardOptions = keyboardOptions, + keyboardActions = keyboardActions, + interactionSource = interactionSource, + singleLine = singleLine, + maxLines = maxLines, + decorationBox = @Composable { innerTextField -> + PlainTextFieldDecorationBox( + modifier = boxModifier, + value = value.text, + innerTextField = innerTextField, + placeholder = placeholder, + visualTransformation = visualTransformation, + interactionSource = interactionSource, + ) + }, + ) +} + +@Composable +private fun PlainTextFieldDecorationBox( + modifier: Modifier, + value: String, + innerTextField: @Composable () -> Unit, + placeholder: @Composable (() -> Unit)? = null, + visualTransformation: VisualTransformation = VisualTransformation.None, + interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, +) { + val transformedText = remember(value, visualTransformation) { + visualTransformation.filter(AnnotatedString(value)) + }.text.text + + val isFocused = interactionSource.collectIsFocusedAsState().value + val inputState = when { + isFocused -> InputPhase.Focused + transformedText.isEmpty() -> InputPhase.UnfocusedEmpty + else -> InputPhase.UnfocusedNotEmpty + } + // Transitions from/to InputPhase.Focused are the most critical in the transition below. + // UnfocusedEmpty <-> UnfocusedNotEmpty are needed when a single state is used to control + // multiple text fields. + val transition = updateTransition(inputState, label = "TextFieldInputState") + + val placeholderOpacity by transition.animateFloat( + label = "PlaceholderOpacity", + transitionSpec = { + if (InputPhase.Focused isTransitioningTo InputPhase.UnfocusedEmpty) { + tween( + durationMillis = PlaceholderAnimationDelayOrDuration, + easing = LinearEasing, + ) + } else if (InputPhase.UnfocusedEmpty isTransitioningTo InputPhase.Focused || + InputPhase.UnfocusedNotEmpty isTransitioningTo InputPhase.UnfocusedEmpty + ) { + tween( + durationMillis = PlaceholderAnimationDuration, + delayMillis = PlaceholderAnimationDelayOrDuration, + easing = LinearEasing, + ) + } else { + spring() + } + }, + ) { + val showLabel = false // we do not support displaying a label + when (it) { + InputPhase.Focused -> 1f + InputPhase.UnfocusedEmpty -> if (showLabel) 0f else 1f + InputPhase.UnfocusedNotEmpty -> 0f + } + } + + val decoratedPlaceholder: @Composable ((Modifier) -> Unit)? = + if (placeholder != null && transformedText.isEmpty()) { + @Composable { modifier -> + Box( + modifier = modifier + .alpha(placeholderOpacity), + ) { + Decoration( + contentColor = MaterialTheme.colorScheme.onSurfaceVariant + .combineAlpha(HighEmphasisAlpha), + typography = MaterialTheme.typography.bodyLarge, + content = placeholder, + ) + } + } + } else { + null + } + + Box( + modifier = modifier, + contentAlignment = Alignment.CenterStart, + ) { + if (decoratedPlaceholder != null) { + decoratedPlaceholder( + Modifier, + ) + } + Box( + propagateMinConstraints = true, + ) { + innerTextField() + } + } +} + +/** + * Set content color, typography and emphasis for [content] composable + */ +@Composable +private fun Decoration( + contentColor: Color, + typography: TextStyle? = null, + content: @Composable () -> Unit, +) { + val contentWithColor: @Composable () -> Unit = @Composable { + CompositionLocalProvider( + LocalContentColor provides contentColor, + content = content, + ) + } + if (typography != null) ProvideTextStyle(typography, contentWithColor) else contentWithColor() +} + +/** + * An internal state used to animate a label and an indicator. + */ +private enum class InputPhase { + // Text field is focused + Focused, + + // Text field is not focused and input text is empty + UnfocusedEmpty, + + // Text field is not focused but input text is not empty + UnfocusedNotEmpty, +} + +private const val PlaceholderAnimationDuration = 83 +private const val PlaceholderAnimationDelayOrDuration = 67 + +val BiFlatValueHeightMin = 32.dp + +@Composable +fun BiFlatTextField( + modifier: Modifier = Modifier, + label: TextFieldModel2, + value: TextFieldModel2, + valueVisualTransformation: VisualTransformation = VisualTransformation.None, + trailing: (@Composable RowScope.() -> Unit)? = null, +) { + val labelInteractionSource = remember { MutableInteractionSource() } + val valueInteractionSource = remember { MutableInteractionSource() } + + val isError = remember( + value.error, + label.error, + ) { + derivedStateOf { + value.error != null || label.error != null + } + } + val hasFocusState = remember { + mutableStateOf(false) + } + + val isEmpty = remember( + value.state, + label.state, + ) { + derivedStateOf { + value.state.value.isBlank() || label.state.value.isBlank() + } + } + + BiFlatContainer( + modifier = modifier + .onFocusChanged { state -> + hasFocusState.value = state.hasFocus + }, + isError = isError, + isFocused = hasFocusState, + isEmpty = isEmpty, + label = { + BiFlatTextFieldLabel( + label = label, + interactionSource = labelInteractionSource, + ) + }, + content = { + BiFlatTextFieldValue( + value = value, + interactionSource = valueInteractionSource, + visualTransformation = valueVisualTransformation, + ) + }, + trailing = trailing, + ) +} + +@Composable +fun ColumnScope.BiFlatTextFieldLabel( + label: TextFieldModel2, + interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, +) { + ProvideTextStyle(value = MaterialTheme.typography.bodySmall) { + PlainTextField( + modifier = Modifier + .fillMaxWidth() + .heightIn(min = 24.dp) + .alpha(HighEmphasisAlpha), + placeholder = if (label.hint != null) { + // composable + { + Text( + text = label.hint, + style = MaterialTheme.typography.bodySmall, + maxLines = 1, + ) + } + } else { + null + }, + value = label.state.value, + enabled = label.onChange != null, + isError = label.error != null, + interactionSource = interactionSource, + onValueChange = { + label.onChange?.invoke(it) + }, + ) + } + ExpandedIfNotEmpty( + valueOrNull = label.error, + ) { error -> + FlatTextFieldBadgeLegacy( + error = error, + ) + } +} + +@Composable +fun ColumnScope.BiFlatTextFieldValue( + value: TextFieldModel2, + interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, + visualTransformation: VisualTransformation = VisualTransformation.None, +) { + PlainTextField( + modifier = Modifier + .fillMaxWidth() + .heightIn(min = BiFlatValueHeightMin), + placeholder = if (value.hint != null) { + // composable + { + Text( + text = value.hint, + maxLines = 1, + ) + } + } else { + null + }, + visualTransformation = visualTransformation, + value = value.state.value, + enabled = value.onChange != null, + isError = value.error != null, + interactionSource = interactionSource, + onValueChange = { + value.onChange?.invoke(it) + }, + ) + ExpandedIfNotEmpty( + valueOrNull = value.error, + ) { error -> + FlatTextFieldBadgeLegacy( + error = error, + ) + } +} + +@Composable +fun BiFlatContainer( + modifier: Modifier = Modifier, + contentModifier: Modifier = Modifier, + isError: State, + isFocused: State, + isEmpty: State, + label: @Composable ColumnScope.() -> Unit, + content: @Composable ColumnScope.() -> Unit, + trailing: (@Composable RowScope.() -> Unit)? = null, +) { + FlatTextFieldSurface( + modifier = modifier, + isError = isError.value, + isFocused = isFocused.value, + ) { + Row( + modifier = contentModifier + .padding( + start = 16.dp, + end = 8.dp, + top = 8.dp, + bottom = 8.dp, + ), + verticalAlignment = Alignment.CenterVertically, + ) { + Column( + modifier = Modifier + .weight(1f) + .heightIn(min = 48.dp), + verticalArrangement = Arrangement.Center, + ) { + label() + + // Divider that pops up if we need to highlight that there are + // two fields a user can edit. + Box { + val showDivider by remember( + isError, + isFocused, + isEmpty, + ) { + derivedStateOf { + isError.value || isFocused.value || isEmpty.value + } + } + + val padding by kotlin.run { + val target = if (showDivider) 8.dp else 0.dp + animateDpAsState(targetValue = target) + } + val alpha by kotlin.run { + val target = if (showDivider) 1f else 0f + animateFloatAsState(targetValue = target) + } + HorizontalDivider( + modifier = Modifier + .padding(vertical = padding) + .alpha(alpha = alpha), + ) + } + + content() + } + if (trailing != null) { + Spacer( + modifier = Modifier + .width(8.dp), + ) + trailing() + } + } + } +} + +@Composable +private fun FlatTextFieldSurface( + modifier: Modifier = Modifier, + isError: Boolean, + isFocused: Boolean, + content: @Composable () -> Unit, +) { + val borderColorTargetBaseColor = when { + isError -> MaterialTheme.colorScheme.error + else -> MaterialTheme.colorScheme.primary + } + val borderColorTarget = when { + isError || isFocused -> borderColorTargetBaseColor + else -> + borderColorTargetBaseColor + .combineAlpha(0f) + } + val borderColor by animateColorAsState(targetValue = borderColorTarget) + val shape = MaterialTheme.shapes.large + Surface( + modifier = modifier + .fillMaxWidth() + .border(1.dp, borderColor, shape), + shape = shape, + color = MaterialTheme.colorScheme.surfaceVariant, + ) { + content() + } +} + +@Composable +fun FlatTextFieldBadgeLegacy( + modifier: Modifier = Modifier, + badge: TextFieldModel2.Vl? = null, + error: String? = null, +) { + val type = when { + error != null -> TextFieldModel2.Vl.Type.ERROR + badge != null -> badge.type + else -> TextFieldModel2.Vl.Type.ERROR + } + FlatTextFieldBadge( + modifier = modifier, + type = type, + text = error ?: badge?.text ?: "", + ) +} + +@Composable +fun FlatTextFieldBadge( + modifier: Modifier = Modifier, + type: TextFieldModel2.Vl.Type, + text: String, +) { + val icon = null + val color = when (type) { + TextFieldModel2.Vl.Type.SUCCESS -> MaterialTheme.colorScheme.okContainer + TextFieldModel2.Vl.Type.INFO -> MaterialTheme.colorScheme.infoContainer + TextFieldModel2.Vl.Type.WARNING -> MaterialTheme.colorScheme.warningContainer + TextFieldModel2.Vl.Type.ERROR -> MaterialTheme.colorScheme.errorContainer + } + FlatTextFieldBadge( + modifier = modifier + .padding( + top = 8.dp, + bottom = 8.dp, + ), + backgroundColor = color, + text = text, + icon = icon, + ) +} + +@Composable +fun FlatTextFieldBadge( + modifier: Modifier = Modifier, + backgroundColor: Color, + text: String, + icon: ImageVector? = null, +) { + val backgroundColorState = animateColorAsState(backgroundColor) + val contentColor = run { + val color = if (backgroundColor.luminance() > 0.5f) { + Color.Black + } else { + Color.White + } + val tint = backgroundColor.copy(alpha = 0.1f) + tint.compositeOver(color) + } + val contentColorState = animateColorAsState(contentColor) + Row( + modifier = modifier + .clip(MaterialTheme.shapes.small) + .drawBehind { + val color = backgroundColorState.value + drawRect(color) + } + .padding( + top = 4.dp, + bottom = 4.dp, + start = 8.dp, + end = 8.dp, + ), + verticalAlignment = Alignment.CenterVertically, + ) { + ExpandedIfNotEmptyForRow( + valueOrNull = icon, + ) { + Icon( + modifier = Modifier + .padding(end = 4.dp) + .size(14.dp), + imageVector = it, + contentDescription = null, + tint = contentColorState.value, + ) + } + Text( + modifier = Modifier + .animateContentSize(), + text = text, + color = contentColorState.value, + style = MaterialTheme.typography.labelSmall, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/ToastComposable.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/ToastComposable.kt new file mode 100644 index 00000000..7ac33f56 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/ToastComposable.kt @@ -0,0 +1,283 @@ +package com.artemchep.keyguard.ui + +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.ExperimentalAnimationApi +import androidx.compose.animation.core.MutableTransitionState +import androidx.compose.animation.expandIn +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.animation.scaleIn +import androidx.compose.animation.scaleOut +import androidx.compose.animation.shrinkOut +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.CheckCircle +import androidx.compose.material.icons.outlined.ErrorOutline +import androidx.compose.material.icons.outlined.Info +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.IntSize +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.ToastMessage +import com.artemchep.keyguard.common.usecase.MessageHub +import com.artemchep.keyguard.feature.navigation.navigationNodeStack +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.theme.ok +import com.artemchep.keyguard.ui.theme.okContainer +import com.artemchep.keyguard.ui.theme.onOkContainer +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.update +import kotlinx.coroutines.launch +import org.kodein.di.compose.rememberInstance + +@Composable +fun ToastMessageHost( + modifier: Modifier = Modifier, +) { + data class Drawable( + val key: String, + val content: @Composable () -> Unit, + /** + * A callback that gets fired when a drawable gets + * disposed. + */ + val onDisposed: () -> Unit, + ) { + private val visibleState = MutableTransitionState(false) + + // By default automatically expand the content + // to visible state. + init { + visibleState.targetState = true + } + + var isDisposed = false + set(value) { + field = value + // notify the observer + if (!value) onDisposed + } + + fun dispose() { + visibleState.targetState = false + } + + @Composable + fun Content() { + AnimatedVisibility( + visibleState = visibleState, + enter = fadeIn() + + scaleIn() + + expandIn(initialSize = { IntSize(it.width, 0) }), + exit = fadeOut() + + scaleOut() + + shrinkOut(targetSize = { IntSize(it.width, 0) }), + ) { + content() + } + + val shouldBeDisposed = !isDisposed && + // both current and target state are equal to 'false' + !(visibleState.targetState || visibleState.currentState) && + // the transition is complete + !visibleState.isIdle + LaunchedEffect(shouldBeDisposed) { + if (shouldBeDisposed) isDisposed = true + } + } + } + + data class Msg( + val drawable: Drawable, + /** + * A job that removes the message from a + * state after a delay. + */ + val cancellationJob: Job, + ) + + val messagesState = remember { + val initialState = listOf() + MutableStateFlow(initialState) + } + + val hub by rememberInstance() + val nav = navigationNodeStack() + val scope = rememberCoroutineScope() + DisposableEffect(hub, scope) { + val unregister = hub.register(nav) { message -> + messagesState.update { existingMessages -> + val out = existingMessages.toMutableList() + val index = + out.indexOfFirst { it.cancellationJob.isActive && it.drawable.key == message.id } + if (index != -1) { + // Stop cancellation job as it will be replaced + out[index].cancellationJob.cancel() + } + + val cancellationJob = scope.launch(Dispatchers.Main) { + val duration = message.duration + delay(duration) + // Delete a message + messagesState.value.forEach { item -> + if (item.drawable.key != message.id) { + return@forEach + } + + item.drawable.dispose() + } + } + val model = Msg( + drawable = Drawable( + key = message.id, + content = { + ToastMessage(message) + }, + onDisposed = { + messagesState.update { l -> + l.toMutableList() + .apply { removeIf { it.drawable.key == message.id } } + } + }, + ), + cancellationJob = cancellationJob, + ) + // Insert the message into a global list + if (index != -1) { + out[index] = model + } else { + out.add(0, model) + } + out + } + } + onDispose { + unregister.invoke() + } + } + + val messages by messagesState.collectAsState() + Column( + modifier = modifier + .padding( + start = 8.dp, + end = 8.dp, + bottom = 48.dp, + ) + .fillMaxWidth(), + verticalArrangement = Arrangement.spacedBy(4.dp), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + messages.forEach { item -> + key(item.drawable.key) { + item.drawable.Content() + } + } + } +} + +@Composable +private fun ToastMessage(model: ToastMessage) { + val containerColor = when (model.type) { + ToastMessage.Type.ERROR -> MaterialTheme.colorScheme.errorContainer + ToastMessage.Type.SUCCESS -> MaterialTheme.colorScheme.okContainer + else -> MaterialTheme.colorScheme.surfaceVariant + } + val contentColor = when (model.type) { + ToastMessage.Type.ERROR -> MaterialTheme.colorScheme.onErrorContainer + ToastMessage.Type.SUCCESS -> MaterialTheme.colorScheme.onOkContainer + else -> MaterialTheme.colorScheme.onSurfaceVariant + } + val contentIconColor = when (model.type) { + ToastMessage.Type.ERROR -> MaterialTheme.colorScheme.error + ToastMessage.Type.SUCCESS -> MaterialTheme.colorScheme.ok + else -> contentColor + } + val contentIcon = when (model.type) { + ToastMessage.Type.ERROR -> Icons.Outlined.ErrorOutline + ToastMessage.Type.SUCCESS -> Icons.Outlined.CheckCircle + ToastMessage.Type.INFO -> Icons.Outlined.Info + else -> Icons.Outlined.Info + } + + CompositionLocalProvider( + LocalContentColor provides contentColor, + ) { + Row( + modifier = Modifier + .fillMaxWidth() + .clip(CircleShape) + .background(containerColor) + .padding( + horizontal = 8.dp, + vertical = 8.dp, + ), + verticalAlignment = Alignment.CenterVertically, + ) { + Icon( + modifier = Modifier + .size(32.dp) + .padding(4.dp), + imageVector = contentIcon, + contentDescription = null, + tint = contentIconColor, + ) + Spacer( + modifier = Modifier + .width(12.dp), + ) + Column( + modifier = Modifier + .weight(1f), + ) { + Text( + style = MaterialTheme.typography.titleSmall, + text = model.title, + maxLines = 8, + ) + if (model.text != null) { + Text( + style = MaterialTheme.typography.labelSmall, + color = LocalContentColor.current + .combineAlpha(alpha = MediumEmphasisAlpha), + maxLines = 1, + overflow = TextOverflow.Ellipsis, + text = model.text, + ) + } + } + Spacer( + modifier = Modifier + .width(8.dp), + ) + } + } +} + +private const val MSG_ERROR_DURATION = 4500L +private const val MSG_NORMAL_DURATION = 2500L + +private val ToastMessage.duration + get() = when (type) { + ToastMessage.Type.ERROR -> MSG_ERROR_DURATION + else -> MSG_NORMAL_DURATION + } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/button/FavouriteToggleButton.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/button/FavouriteToggleButton.kt new file mode 100644 index 00000000..47e46f95 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/button/FavouriteToggleButton.kt @@ -0,0 +1,79 @@ +package com.artemchep.keyguard.ui.button + +import androidx.compose.animation.AnimatedContent +import androidx.compose.animation.animateColorAsState +import androidx.compose.animation.scaleIn +import androidx.compose.animation.scaleOut +import androidx.compose.animation.slideInVertically +import androidx.compose.animation.slideOutVertically +import androidx.compose.animation.togetherWith +import androidx.compose.material.icons.Icons +import androidx.compose.material3.Icon +import androidx.compose.material3.IconToggleButton +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Modifier +import com.artemchep.keyguard.ui.icons.KeyguardFavourite +import com.artemchep.keyguard.ui.icons.KeyguardFavouriteOutline +import com.artemchep.keyguard.ui.theme.combineAlpha + +@Composable +fun FavouriteToggleButton( + modifier: Modifier = Modifier, + favorite: Boolean, + onChange: ((Boolean) -> Unit)?, +) { + val updatedOnChange by rememberUpdatedState(onChange) + val enabled by remember { + derivedStateOf { + updatedOnChange != null + } + } + IconToggleButton( + modifier = modifier, + checked = favorite, + onCheckedChange = { + updatedOnChange?.invoke(it) + }, + enabled = enabled, + ) { + val contentColor = LocalContentColor.current + val tint by animateColorAsState( + if (favorite) { + MaterialTheme.colorScheme.primary + .combineAlpha(contentColor.alpha) + } else { + contentColor + }, + ) + AnimatedContent( + targetState = favorite, + transitionSpec = { + val currentFavorite = this.targetState + val enter = slideInVertically { + if (currentFavorite) -it else it + } + scaleIn() + val exit = slideOutVertically { + if (currentFavorite) it else -it + } + scaleOut() + enter togetherWith exit + }, + ) { currentFavorite -> + val vector = if (currentFavorite) { + Icons.Outlined.KeyguardFavourite + } else { + Icons.Outlined.KeyguardFavouriteOutline + } + Icon( + imageVector = vector, + contentDescription = null, + tint = tint, + ) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/focus/BringIntoView.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/focus/BringIntoView.kt new file mode 100644 index 00000000..69eba871 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/focus/BringIntoView.kt @@ -0,0 +1,34 @@ +package com.artemchep.keyguard.ui.focus + +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.relocation.BringIntoViewRequester +import androidx.compose.foundation.relocation.bringIntoViewRequester +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.ui.Modifier +import androidx.compose.ui.composed +import androidx.compose.ui.focus.onFocusEvent +import kotlinx.coroutines.launch + +@OptIn(ExperimentalFoundationApi::class) +fun Modifier.bringIntoView() = this + .composed { + val wasFocusedState = remember { mutableStateOf(false) } + val bringIntoViewRequester = remember { BringIntoViewRequester() } + val coroutineScope = rememberCoroutineScope() + this + .bringIntoViewRequester(bringIntoViewRequester) + .onFocusEvent { focusState -> + val isFocused = focusState.hasFocus + val wasFocused = wasFocusedState.value + if (wasFocused != isFocused) { + wasFocusedState.value = isFocused + if (isFocused) { + coroutineScope.launch { + bringIntoViewRequester.bringIntoView() + } + } + } + } + } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/focus/FocusRequester.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/focus/FocusRequester.kt new file mode 100644 index 00000000..8bc0e79a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/focus/FocusRequester.kt @@ -0,0 +1,64 @@ +package com.artemchep.keyguard.ui.focus + +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.ui.ExperimentalComposeUiApi +import androidx.compose.ui.Modifier +import androidx.compose.ui.composed +import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.focus.FocusState +import androidx.compose.ui.focus.focusRequester +import androidx.compose.ui.focus.onFocusChanged +import androidx.compose.ui.platform.LocalSoftwareKeyboardController +import com.artemchep.keyguard.common.util.flow.EventFlow +import com.artemchep.keyguard.ui.CollectedEffect +import kotlinx.coroutines.flow.Flow + +@OptIn(ExperimentalComposeUiApi::class) +fun Modifier.focusRequester2( + focusRequester2: FocusRequester2, +) = composed { + val focusedStateState = remember { + mutableStateOf(null) + } + val focusRequester = remember { + FocusRequester() + } + + val keyboard = LocalSoftwareKeyboardController.current + CollectedEffect(focusRequester2.onRequestFocusFlow) { event -> + val isFocused = focusedStateState.value?.isFocused == true + if (isFocused && event.showKeyboard) { + // We can not re-focus it again, see: + // https://stackoverflow.com/questions/74391260/jetpack-compose-requestfocus-works-only-once + keyboard?.show() + return@CollectedEffect + } + + focusRequester.requestFocus() + } + + Modifier + .onFocusChanged { state -> + focusedStateState.value = state + } + .focusRequester(focusRequester) +} + +class FocusRequester2 { + private val onRequestFocusSink = EventFlow() + + val onRequestFocusFlow: Flow get() = onRequestFocusSink + + /** + * Requests a focus on associated + * compose node. + */ + fun requestFocus( + showKeyboard: Boolean = true, + ) = onRequestFocusSink.emit(FocusEvent(showKeyboard)) +} + +class FocusEvent( + val showKeyboard: Boolean, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/getHttpCode.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/getHttpCode.kt new file mode 100644 index 00000000..d5bd7338 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/getHttpCode.kt @@ -0,0 +1,46 @@ +package com.artemchep.keyguard.ui + +import com.artemchep.keyguard.common.exception.HttpException +import com.artemchep.keyguard.core.store.bitwarden.BitwardenService +import io.ktor.http.HttpStatusCode +import java.io.IOException +import java.net.ProtocolException +import java.net.SocketTimeoutException +import java.net.UnknownHostException + +class CodeException( + val code: Int, + val description: String? = null, +) : IOException() + +fun Throwable.getHttpCode(): Int { + if (this is HttpException) { + return this.statusCode.value + } + if (this is CodeException) { + return this.code + } + if (this is UnknownHostException) { + return BitwardenService.Error.CODE_UNKNOWN_HOST + } + if (this is ProtocolException) { + return BitwardenService.Error.CODE_PROTOCOL_EXCEPTION + } + if (this is SocketTimeoutException) { + return BitwardenService.Error.CODE_UNKNOWN_HOST + } + return cause?.getHttpCode() + ?: BitwardenService.Error.CODE_UNKNOWN +} + +fun Int.canRetry(): Boolean = + this == BitwardenService.Error.CODE_UNKNOWN || + this == BitwardenService.Error.CODE_PROTOCOL_EXCEPTION || + this == BitwardenService.Error.CODE_UNKNOWN_HOST || + this == BitwardenService.Error.CODE_DECODING_FAILED || + // 400x + this == HttpStatusCode.PaymentRequired.value || + this == HttpStatusCode.ProxyAuthenticationRequired.value || + this == HttpStatusCode.RequestTimeout.value || + // 500x + this in 500..599 diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/grid/SimpleGridLayout.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/grid/SimpleGridLayout.kt new file mode 100644 index 00000000..f212d950 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/grid/SimpleGridLayout.kt @@ -0,0 +1,36 @@ +package com.artemchep.keyguard.ui.grid + +import androidx.compose.foundation.layout.BoxWithConstraints +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.ui.GridLayout +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.horizontalPaddingHalf +import kotlin.math.roundToInt + +val preferredGridWidth = 220.dp + +@Composable +fun SimpleGridLayout( + modifier: Modifier = Modifier, + mainAxisSpacing: Dp = Dimens.horizontalPaddingHalf, + crossAxisSpacing: Dp = Dimens.horizontalPaddingHalf, + content: @Composable () -> Unit, +) { + BoxWithConstraints( + modifier = modifier, + ) { + val columns = (this@BoxWithConstraints.maxWidth / preferredGridWidth) + .roundToInt() + .coerceAtLeast(1) + GridLayout( + columns = columns, + mainAxisSpacing = mainAxisSpacing, + crossAxisSpacing = crossAxisSpacing, + content = content, + ) + } +} + diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/AttachmentIcon.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/AttachmentIcon.kt new file mode 100644 index 00000000..50ae7c8b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/AttachmentIcon.kt @@ -0,0 +1,159 @@ +package com.artemchep.keyguard.ui.icons + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.icons.Icons +import androidx.compose.material3.Icon +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.Immutable +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.artemchep.keyguard.common.util.hash.FNV +import com.artemchep.keyguard.feature.home.vault.component.rememberSecretAccentColor +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.theme.combineAlpha + +@Composable +fun AttachmentIcon( + uri: String? = null, + name: String, + encrypted: Boolean, +) { + val accentColors = remember(name) { + generateAccentColors(name) + } + val accentColor = rememberSecretAccentColor( + accentLight = accentColors.light, + accentDark = accentColors.dark, + ) + + val ext = remember(name) { + val a = name.indexOfLast { it == '/' } + val b = name.indexOfLast { it == '.' } + if (b != -1 && b > a && b < name.length - 1) { + return@remember name.substring(b + 1) + } + + null + } + + if (uri != null && !encrypted) { + when (ext) { + "png", + "jpg", + "jpeg", + "gif", + "bmp", + "webp", + "heic", + "heif", + -> { + // We can display a preview of a file. + AttachmentIconImpl( + modifier = Modifier + .size(24.dp) + .clip(CircleShape) + .background(accentColor), + uri = uri, + ) + return + } + } + } + + if (ext != null && ext.length in 2..3) { + Box( + modifier = Modifier + .size(24.dp) + .clip(CircleShape) + .background(accentColor), + ) { + Text( + modifier = Modifier + .align(Alignment.Center), + text = ext.uppercase(), + color = Color.Black + .combineAlpha(MediumEmphasisAlpha), + fontWeight = FontWeight.Bold, + fontSize = 9.sp, + textAlign = TextAlign.Center, + ) + } + } else { + Icon( + modifier = Modifier + .size(24.dp) + .clip(CircleShape) + .background(accentColor) + .padding(3.dp), + imageVector = Icons.Outlined.KeyguardAttachment, + contentDescription = null, + tint = Color.Black + .combineAlpha(MediumEmphasisAlpha), + ) + } +} + +@Composable +expect fun AttachmentIconImpl( + uri: String? = null, + modifier: Modifier = Modifier, +) + +@Immutable +data class AccentColors( + val light: Color, + val dark: Color, +) + +fun generateAccentColorsByAccountId( + accountId: String, +) = generateAccentColors( + seed = accountId, + saturation = 0.7f, +) + +fun generateAccentColors( + seed: String, + saturation: Float = 0.5f, +): AccentColors { + val hue = run { + val r = FNV.fnv1_32(seed).rem(60) + r.toFloat() * 6f // hue + } + return generateAccentColors( + hue = hue, + saturation = saturation, + ) +} + +fun generateAccentColors( + hue: Float, + saturation: Float = 0.5f, +): AccentColors { + val accentLight = Color.hsv( + hue = hue, + saturation = saturation, + value = 0.8f, + ) + val accentDark = Color.hsv( + hue = hue, + saturation = saturation, + value = 0.7f, + ) + return AccentColors( + light = accentLight, + dark = accentDark, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/ChevronIcon.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/ChevronIcon.kt new file mode 100644 index 00000000..f187a2f4 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/ChevronIcon.kt @@ -0,0 +1,25 @@ +package com.artemchep.keyguard.ui.icons + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.ChevronRight +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.theme.combineAlpha + +@Composable +fun ChevronIcon( + modifier: Modifier = Modifier, + tint: Color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), +) { + Icon( + modifier = modifier, + imageVector = Icons.Outlined.ChevronRight, + contentDescription = null, + tint = tint, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/DropdownIcon.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/DropdownIcon.kt new file mode 100644 index 00000000..763f7ec1 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/DropdownIcon.kt @@ -0,0 +1,32 @@ +package com.artemchep.keyguard.ui.icons + +import androidx.compose.animation.core.animateFloatAsState +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.ArrowDropDown +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.rotate +import androidx.compose.ui.graphics.Color +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.theme.combineAlpha + +@Composable +fun DropdownIcon( + modifier: Modifier = Modifier, + expanded: Boolean = false, + tint: Color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), +) { + val iconRotationTarget = if (expanded) 180f else 0f + val iconRotation by animateFloatAsState(iconRotationTarget) + Icon( + modifier = modifier + .rotate(iconRotation), + imageVector = Icons.Outlined.ArrowDropDown, + contentDescription = null, + tint = tint, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/EmailIcon.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/EmailIcon.kt new file mode 100644 index 00000000..236b6bd3 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/EmailIcon.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.ui.icons + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import com.artemchep.keyguard.feature.favicon.GravatarUrl + +@Composable +expect fun EmailIcon( + modifier: Modifier = Modifier, + gravatarUrl: GravatarUrl?, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/ExpandableIcon.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/ExpandableIcon.kt new file mode 100644 index 00000000..eb750fae --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/ExpandableIcon.kt @@ -0,0 +1,27 @@ +package com.artemchep.keyguard.ui.icons + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.ChevronRight +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.rotate +import androidx.compose.ui.graphics.Color +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.theme.combineAlpha + +@Composable +fun ExpandableIcon( + modifier: Modifier = Modifier, + tint: Color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), +) { + Icon( + modifier = modifier + .rotate(90f), + imageVector = Icons.Outlined.ChevronRight, + contentDescription = null, + tint = tint, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/IconBox.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/IconBox.kt new file mode 100644 index 00000000..c7a2ee03 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/IconBox.kt @@ -0,0 +1,160 @@ +package com.artemchep.keyguard.ui.icons + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.graphicsLayer +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.ui.HighEmphasisAlpha + +@Suppress("NOTHING_TO_INLINE") +inline fun icon( + main: ImageVector, + secondary: ImageVector? = null, +): @Composable () -> Unit = { + IconBox( + main = main, + secondary = secondary, + ) +} + +@Suppress("NOTHING_TO_INLINE") +inline fun icon( + main: ImageVector, + secondary: ImageVector? = null, +): @Composable T.() -> Unit = { + IconBox( + main = main, + secondary = secondary, + ) +} + +@Composable +fun IconBox( + main: ImageVector, + secondary: ImageVector? = null, + secondaryBackground: @Composable () -> Color = { MaterialTheme.colorScheme.surfaceVariant }, + secondaryTint: @Composable () -> Color = { MaterialTheme.colorScheme.onSurfaceVariant }, +) { + Box { + Icon(main, null) + if (secondary != null) { + val backgroundColor = secondaryBackground() + .copy(alpha = HighEmphasisAlpha) + Box( + Modifier + .align(Alignment.BottomEnd) + .background(backgroundColor, CircleShape), + ) { + Icon( + secondary, + null, + Modifier + .padding(1.dp) + .size(12.dp), + tint = secondaryTint(), + ) + } + } + } +} + +@Composable +fun IconBox2( + main: @Composable () -> Unit, + secondary: (@Composable () -> Unit)? = null, + secondaryBackground: @Composable () -> Color = { MaterialTheme.colorScheme.surfaceVariant }, + secondaryTint: @Composable () -> Color = { MaterialTheme.colorScheme.onSurfaceVariant }, +) { + Box { + main() + if (secondary != null) { + val backgroundColor = secondaryBackground() + .copy(alpha = HighEmphasisAlpha) + Box( + Modifier + .align(Alignment.BottomEnd) + .background(backgroundColor, CircleShape), + ) { + CompositionLocalProvider( + LocalContentColor provides secondaryTint(), + ) { + Box( + Modifier + .padding(1.dp) + .size(12.dp), + ) { + secondary() + } + } + } + } + } +} + +@Suppress("NOTHING_TO_INLINE") +inline fun iconSmall( + main: ImageVector, + secondary: ImageVector? = null, +): @Composable () -> Unit = { + IconSmallBox( + main = main, + secondary = secondary, + ) +} + +@Suppress("NOTHING_TO_INLINE") +inline fun iconSmall( + main: ImageVector, + secondary: ImageVector? = null, +): @Composable T.() -> Unit = { + IconSmallBox( + main = main, + secondary = secondary, + ) +} + +@Composable +fun IconSmallBox( + main: ImageVector, + secondary: ImageVector? = null, + secondaryBackground: @Composable () -> Color = { MaterialTheme.colorScheme.surfaceVariant }, + secondaryTint: @Composable () -> Color = { MaterialTheme.colorScheme.onSurfaceVariant }, +) { + Box { + Icon(main, null) + if (secondary != null) { + val backgroundColor = secondaryBackground() + .copy(alpha = HighEmphasisAlpha) + Box( + Modifier + .align(Alignment.BottomEnd) + .graphicsLayer { + translationX = density * 4f + translationY = density * 4f + } + .background(backgroundColor, CircleShape), + ) { + Icon( + secondary, + null, + Modifier + .padding(1.dp) + .size(12.dp), + tint = secondaryTint(), + ) + } + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/Icons.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/Icons.kt new file mode 100644 index 00000000..212858ff --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/Icons.kt @@ -0,0 +1,69 @@ +package com.artemchep.keyguard.ui.icons + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.materialIcon +import androidx.compose.material.icons.materialPath +import androidx.compose.material.icons.outlined.AccountTree +import androidx.compose.material.icons.outlined.Attachment +import androidx.compose.material.icons.outlined.CollectionsBookmark +import androidx.compose.material.icons.outlined.Lens +import androidx.compose.material.icons.outlined.List +import androidx.compose.material.icons.outlined.Numbers +import androidx.compose.material.icons.outlined.Star +import androidx.compose.material.icons.outlined.StarBorder +import androidx.compose.material.icons.outlined.StickyNote2 +import androidx.compose.ui.graphics.vector.ImageVector +import compose.icons.FeatherIcons +import compose.icons.feathericons.Eye +import compose.icons.feathericons.Globe + +val Icons.Outlined.KeyguardWebsite + get() = FeatherIcons.Globe + +val Icons.Outlined.KeyguardView + get() = FeatherIcons.Eye + +val Icons.Outlined.KeyguardTwoFa + get() = Numbers + +val Icons.Outlined.KeyguardNote + get() = StickyNote2 + +val Icons.Outlined.KeyguardAttachment + get() = Attachment + +val Icons.Outlined.KeyguardFavourite + get() = Star + +val Icons.Outlined.KeyguardFavouriteOutline + get() = StarBorder + +val Icons.Outlined.KeyguardOrganization + get() = AccountTree + +val Icons.Outlined.KeyguardCollection + get() = CollectionsBookmark + +val Icons.Outlined.KeyguardCipher + get() = List + +val Icons.Outlined.KeyguardLargeType + get() = Lens + +val Icons.Outlined.KeyguardPremium + get() = Star + +val Icons.Stub: ImageVector + get() { + if (_stub != null) { + return _stub!! + } + _stub = materialIcon(name = "Stub") { + materialPath { + close() + } + } + return _stub!! + } + +private var _stub: ImageVector? = null diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/OfflineIcon.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/OfflineIcon.kt new file mode 100644 index 00000000..d054760a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/OfflineIcon.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.ui.icons + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.CloudUpload +import androidx.compose.material3.Icon +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import com.artemchep.keyguard.ui.shimmer.shimmer + +@Composable +fun OfflineIcon( + modifier: Modifier = Modifier, +) { + Icon( + modifier = modifier + .shimmer(), + imageVector = Icons.Outlined.CloudUpload, + contentDescription = null, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/SyncIcon.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/SyncIcon.kt new file mode 100644 index 00000000..bbc2a552 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/SyncIcon.kt @@ -0,0 +1,70 @@ +package com.artemchep.keyguard.ui.icons + +import androidx.compose.animation.core.Spring +import androidx.compose.animation.core.animateFloatAsState +import androidx.compose.animation.core.spring +import androidx.compose.foundation.layout.Box +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Sync +import androidx.compose.material3.Icon +import androidx.compose.runtime.Composable +import androidx.compose.runtime.SideEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.rotate +import kotlin.math.absoluteValue + +@Composable +fun SyncIcon( + modifier: Modifier = Modifier, + rotating: Boolean, +) { + AnimatedRotation( + modifier = modifier, + rotating = rotating, + ) { + Icon( + imageVector = Icons.Outlined.Sync, + contentDescription = null, + ) + } +} + +@Composable +fun AnimatedRotation( + modifier: Modifier = Modifier, + rotating: Boolean, + content: @Composable () -> Unit, +) { + var lastRotation by remember { mutableStateOf(0f) } + var targetRotation by remember { mutableStateOf(0f) } + + val rotation by animateFloatAsState( + targetValue = targetRotation, + animationSpec = spring( + stiffness = Spring.StiffnessVeryLow, + ), + finishedListener = { + lastRotation = it + }, + ) + + val dr = (lastRotation - targetRotation).absoluteValue + if (dr < 0.1f && rotating) { + // Increase the target rotation for the next + // full cycle. + SideEffect { + targetRotation += 360f + } + } + + Box( + modifier = modifier + .rotate(rotation), + ) { + content() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/VisibilityIcon.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/VisibilityIcon.kt new file mode 100644 index 00000000..58005566 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/icons/VisibilityIcon.kt @@ -0,0 +1,30 @@ +package com.artemchep.keyguard.ui.icons + +import androidx.compose.animation.Crossfade +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Visibility +import androidx.compose.material.icons.outlined.VisibilityOff +import androidx.compose.material3.Icon +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier + +@Composable +fun VisibilityIcon( + modifier: Modifier = Modifier, + visible: Boolean, +) { + val targetImage = if (visible) { + Icons.Outlined.Visibility + } else { + Icons.Outlined.VisibilityOff + } + Crossfade( + modifier = modifier, + targetState = targetImage, + ) { image -> + Icon( + imageVector = image, + contentDescription = null, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/items/ContextItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/items/ContextItem.kt new file mode 100644 index 00000000..7d0acf59 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/items/ContextItem.kt @@ -0,0 +1,3 @@ +package com.artemchep.keyguard.ui.items + + diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/items/FlatItemShimmer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/items/FlatItemShimmer.kt new file mode 100644 index 00000000..8bf21301 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/items/FlatItemShimmer.kt @@ -0,0 +1,64 @@ +package com.artemchep.keyguard.ui.items + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.ui.Avatar +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.FlatItemLayout +import com.artemchep.keyguard.ui.shimmer.shimmer + +@Composable +fun FlatItemSkeleton( + avatar: Boolean = false, + fill: Boolean = false, + titleWidthFraction: Float = 0.45f, + textWidthFraction: Float = 0.33f, +) { + val contentColor = LocalContentColor.current.copy(alpha = DisabledEmphasisAlpha) + FlatItemLayout( + modifier = Modifier + .shimmer(), + backgroundColor = contentColor + .takeIf { fill } + ?.copy( + alpha = 0.08f, + ) + ?: Color.Unspecified, + leading = if (avatar) { + // composable + { + Avatar { + } + } + } else { + null + }, + content = { + Box( + Modifier + .height(18.dp) + .fillMaxWidth(titleWidthFraction) + .clip(MaterialTheme.shapes.medium) + .background(contentColor), + ) + Box( + Modifier + .padding(top = 4.dp) + .height(14.dp) + .fillMaxWidth(textWidthFraction) + .clip(MaterialTheme.shapes.medium) + .background(contentColor), + ) + }, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/markdown/Markdown.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/markdown/Markdown.kt new file mode 100644 index 00000000..056abf4f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/markdown/Markdown.kt @@ -0,0 +1,30 @@ +package com.artemchep.keyguard.ui.markdown + +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import com.halilibo.richtext.markdown.Markdown +import com.halilibo.richtext.ui.RichTextStyle +import com.halilibo.richtext.ui.material3.Material3RichText +import com.halilibo.richtext.ui.resolveDefaults +import com.halilibo.richtext.ui.string.RichTextStringStyle + +@Composable +fun Md( + modifier: Modifier = Modifier, + markdown: String, +) { + val richTextStyle = RichTextStyle().resolveDefaults().copy( + stringStyle = RichTextStringStyle().copy( + linkStyle = MaterialTheme.typography.bodyLarge.toSpanStyle().copy( + color = MaterialTheme.colorScheme.primary, + ), + ), + ) + Material3RichText( + modifier = modifier, + style = richTextStyle, + ) { + Markdown(markdown) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/popup.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/popup.kt new file mode 100644 index 00000000..d25a83c0 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/popup.kt @@ -0,0 +1,322 @@ +package com.artemchep.keyguard.ui + +//import androidx.compose.ui.awt.awtEventOrNull +import androidx.compose.animation.core.MutableTransitionState +import androidx.compose.animation.core.animateFloat +import androidx.compose.animation.core.tween +import androidx.compose.animation.core.updateTransition +import androidx.compose.foundation.background +import androidx.compose.foundation.gestures.detectTapGestures +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.widthIn +import androidx.compose.foundation.shape.CornerSize +import androidx.compose.material.ElevationOverlay +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.runtime.Composable +import androidx.compose.runtime.Immutable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.alpha +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.TransformOrigin +import androidx.compose.ui.graphics.graphicsLayer +import androidx.compose.ui.input.pointer.pointerInput +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.unit.Density +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.DpOffset +import androidx.compose.ui.unit.IntOffset +import androidx.compose.ui.unit.IntRect +import androidx.compose.ui.unit.IntSize +import androidx.compose.ui.unit.LayoutDirection +import androidx.compose.ui.unit.dp +import androidx.compose.ui.window.Popup +import androidx.compose.ui.window.PopupPositionProvider +import androidx.compose.ui.window.PopupProperties + +// Menu open/close animation. +private const val InTransitionDuration = 180 +private const val OutTransitionDuration = 125 + +@Composable +fun WunderPopup( + modifier: Modifier = Modifier, + onDismissRequest: () -> Unit, + expanded: Boolean = true, + offset: DpOffset = DpOffset(0.dp, 0.dp), + content: @Composable () -> Unit, +) { + val expandedStates = remember { + MutableTransitionState(false) + } + expandedStates.targetState = expanded + if (!expandedStates.currentState && !expandedStates.targetState) { + return + } + + // Menu open/close animation. + val transition = updateTransition(expandedStates, "DropDownMenu") + val alpha by transition.animateFloat( + transitionSpec = { + if (false isTransitioningTo true) { + // Dismissed to expanded + tween(durationMillis = InTransitionDuration) + } else { + // Expanded to dismissed. + tween(durationMillis = OutTransitionDuration) + } + }, + ) { + if (it) { + // Menu is expanded. + 1f + } else { + // Menu is dismissed. + 0f + } + } + + Popup( + popupPositionProvider = object : PopupPositionProvider { + override fun calculatePosition( + anchorBounds: IntRect, + windowSize: IntSize, + layoutDirection: LayoutDirection, + popupContentSize: IntSize, + ): IntOffset = IntOffset.Zero + }, + onDismissRequest = onDismissRequest, + properties = PopupProperties( + focusable = true, + ), + //onPreviewKeyEvent = { false }, + //onKeyEvent = { + // TODO: && it.awtEventOrNull?.keyCode == KeyEvent.VK_ESCAPE + //if (it.type == KeyEventType.KeyDown) { + // onDismissRequest() + // true + //} else { + // false + //} + //}, + ) { + val scrimColor = MaterialTheme.colorScheme.scrim + .copy(alpha = 0.32f) + Box( + modifier = Modifier + .fillMaxSize() + .alpha(alpha) + .background(scrimColor) + .pointerInput(onDismissRequest) { + detectTapGestures(onPress = { onDismissRequest() }) + }, + ) + } + + // Popups on the desktop are by default embedded in the component in which + // they are defined and aligned within its bounds. But an [AlertDialog] needs + // to be aligned within the window, not the parent component, so we cannot use + // [alignment] property of [Popup] and have to use [Box] that fills all the + // available space. Also [Box] provides a dismiss request feature when clicked + // outside of the [AlertDialog] content. + val transformOriginState = remember { mutableStateOf(TransformOrigin.Center) } + val density = LocalDensity.current + // The original [DropdownMenuPositionProvider] is not yet suitable for large screen devices, + // so we need to make additional checks and adjust the position of the [DropdownMenu] to + // avoid content being cut off if the [DropdownMenu] contains too many items. + // See: https://github.com/JetBrains/compose-jb/issues/1388 + val popupPositionProvider = DesktopDropdownMenuPositionProvider( + offset, + density, + ) { parentBounds, menuBounds -> + transformOriginState.value = calculateTransformOrigin(parentBounds, menuBounds) + } + Popup( + popupPositionProvider = popupPositionProvider, + onDismissRequest = onDismissRequest, + properties = PopupProperties( + focusable = true, + ), + //onPreviewKeyEvent = { false }, + //onKeyEvent = { + // TODO: && it.awtEventOrNull?.keyCode == KeyEvent.VK_ESCAPE + //if (it.type == KeyEventType.KeyDown) { + // onDismissRequest() + // true + //} else { + // false + //} + //}, + ) { + val scale by transition.animateFloat( + transitionSpec = { + if (false isTransitioningTo true) { + // Dismissed to expanded + tween( + durationMillis = InTransitionDuration, + ) + } else { + // Expanded to dismissed. + tween( + durationMillis = OutTransitionDuration, + ) + } + }, + ) { + if (it) { + // Menu is expanded. + 1f + } else { + // Menu is dismissed. + 0.9f + } + } + val elevation = 1.dp + val maxWidth = 418.dp + Surface( + modifier = Modifier + .widthIn(max = maxWidth) + .fillMaxWidth(0.8f) + .fillMaxHeight() + .pointerInput(onDismissRequest) { + detectTapGestures( + onPress = { + // Workaround to disable clicks on Surface background + // https://github.com/JetBrains/compose-jb/issues/2581 + }, + ) + } + .graphicsLayer { + this.translationX = (1f - scale) * maxWidth.toPx() + this.alpha = alpha + transformOrigin = transformOriginState.value + }, + shape = MaterialTheme.shapes.large + .copy( + topEnd = CornerSize(0.dp), + bottomEnd = CornerSize(0.dp), + ), + tonalElevation = elevation, + shadowElevation = elevation, + ) { + Column( + modifier = Modifier + .fillMaxSize(), + ) { + content() + } + } + } +} + +@Immutable +private data class DesktopDropdownMenuPositionProvider( + val contentOffset: DpOffset, + val density: Density, + // callback + val onPositionCalculated: (IntRect, IntRect) -> Unit = { _, _ -> }, +) : PopupPositionProvider { + override fun calculatePosition( + anchorBounds: IntRect, + windowSize: IntSize, + layoutDirection: LayoutDirection, + popupContentSize: IntSize, + ): IntOffset { + // The min margin above and below the menu, relative to the screen. + val verticalMargin = with(density) { 48.dp.roundToPx() } + // The content offset specified using the dropdown offset parameter. + val contentOffsetY = with(density) { contentOffset.y.roundToPx() } + + // Compute horizontal position. + val toDisplayRight = windowSize.width - popupContentSize.width + val toDisplayLeft = 0 + val x = if (layoutDirection == LayoutDirection.Ltr) { + toDisplayRight + } else { + toDisplayLeft + } + + // Compute vertical position. + val toBottom = maxOf(anchorBounds.bottom + contentOffsetY, verticalMargin) + val toTop = anchorBounds.top - contentOffsetY - popupContentSize.height + val toCenter = anchorBounds.top - popupContentSize.height / 2 + val toDisplayBottom = windowSize.height - popupContentSize.height - verticalMargin + var y = sequenceOf(toBottom, toTop, toCenter, toDisplayBottom).firstOrNull { + it >= verticalMargin && + it + popupContentSize.height <= windowSize.height - verticalMargin + } ?: toTop + + // Desktop specific vertical position checking + val aboveAnchor = anchorBounds.top + contentOffsetY + val belowAnchor = windowSize.height - anchorBounds.bottom - contentOffsetY + + if (belowAnchor >= aboveAnchor) { + y = anchorBounds.bottom + contentOffsetY + } + + if (y + popupContentSize.height > windowSize.height) { + y = windowSize.height - popupContentSize.height + } + + y = y.coerceAtLeast(0) + + onPositionCalculated( + anchorBounds, + IntRect(x, y, x + popupContentSize.width, y + popupContentSize.height), + ) + return IntOffset(x, y) + } +} + +private fun calculateTransformOrigin( + parentBounds: IntRect, + menuBounds: IntRect, +): TransformOrigin { + val pivotX = when { + menuBounds.left >= parentBounds.right -> 0f + menuBounds.right <= parentBounds.left -> 1f + menuBounds.width == 0 -> 0f + else -> { + val intersectionCenter = + ( + kotlin.math.max(parentBounds.left, menuBounds.left) + + kotlin.math.min(parentBounds.right, menuBounds.right) + ) / 2 + (intersectionCenter - menuBounds.left).toFloat() / menuBounds.width + } + } + val pivotY = when { + menuBounds.top >= parentBounds.bottom -> 0f + menuBounds.bottom <= parentBounds.top -> 1f + menuBounds.height == 0 -> 0f + else -> { + val intersectionCenter = + ( + kotlin.math.max(parentBounds.top, menuBounds.top) + + kotlin.math.min(parentBounds.bottom, menuBounds.bottom) + ) / 2 + (intersectionCenter - menuBounds.top).toFloat() / menuBounds.height + } + } + return TransformOrigin(pivotX, pivotY) +} + +@Composable +private fun surfaceColorAtElevation( + color: Color, + elevationOverlay: ElevationOverlay?, + absoluteElevation: Dp, +): Color { + return if (color == MaterialTheme.colorScheme.surface && elevationOverlay != null) { + elevationOverlay.apply(color, absoluteElevation) + } else { + color + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/poweredby/PoweredBy.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/poweredby/PoweredBy.kt new file mode 100644 index 00000000..2aa7f90a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/poweredby/PoweredBy.kt @@ -0,0 +1,119 @@ +package com.artemchep.keyguard.ui.poweredby + +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.theme.combineAlpha +import dev.icerock.moko.resources.compose.stringResource + +const val URL_JUST_DELETE_ME = "https://justdeleteme.xyz/" +const val URL_HAVE_I_BEEN_PWNED = "https://haveibeenpwned.com/" +const val URL_2FA = "https://2fa.directory/" +const val URL_PASSKEYS = "https://passkeys.directory/" + +@Composable +fun PoweredByJustDeleteMe( + modifier: Modifier = Modifier, + fill: Boolean = false, +) { + PoweredByLabel( + modifier = modifier, + domain = "JustDeleteMe", + url = URL_JUST_DELETE_ME, + fill = fill, + ) +} + +@Composable +fun PoweredByHaveibeenpwned( + modifier: Modifier = Modifier, + fill: Boolean = false, +) { + PoweredByLabel( + modifier = modifier, + domain = "HIBP", + url = URL_HAVE_I_BEEN_PWNED, + fill = fill, + ) +} + +@Composable +fun PoweredBy2factorauth( + modifier: Modifier = Modifier, + fill: Boolean = false, +) { + PoweredByLabel( + modifier = modifier, + domain = "2factorauth", + url = URL_2FA, + fill = fill, + ) +} + +@Composable +fun PoweredByPasskeys( + modifier: Modifier = Modifier, + fill: Boolean = false, +) { + PoweredByLabel( + modifier = modifier, + domain = "passkeys", + url = URL_PASSKEYS, + fill = fill, + ) +} + +@Composable +fun PoweredByLabel( + modifier: Modifier = Modifier, + domain: String, + url: String, + fill: Boolean = false, +) { + Row( + modifier = modifier, + verticalAlignment = Alignment.CenterVertically, + ) { + Text( + modifier = Modifier + .weight(1f, fill = fill) + .padding(top = 4.dp), + text = stringResource(Res.strings.powered_by), + maxLines = 2, + style = MaterialTheme.typography.labelSmall, + color = LocalContentColor.current + .combineAlpha(DisabledEmphasisAlpha), + ) + Spacer(modifier = Modifier.width(8.dp)) + val navigationController by rememberUpdatedState(LocalNavigationController.current) + val updatedUrl by rememberUpdatedState(url) + TextButton( + onClick = { + val intent = NavigationIntent.NavigateToBrowser( + url = updatedUrl, + ) + navigationController.queue(intent) + }, + ) { + Text( + text = domain, + maxLines = 1, + ) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/pulltosearch/PullToSearch.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/pulltosearch/PullToSearch.kt new file mode 100644 index 00000000..edb0d0a8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/pulltosearch/PullToSearch.kt @@ -0,0 +1,85 @@ +package com.artemchep.keyguard.ui.pulltosearch + +import androidx.compose.animation.animateColorAsState +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Search +import androidx.compose.material.pullrefresh.PullRefreshState +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.graphicsLayer +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.theme.combineAlpha +import dev.icerock.moko.resources.compose.stringResource +import kotlin.math.log10 + +@Composable +fun PullToSearch( + modifier: Modifier = Modifier, + pullRefreshState: PullRefreshState, +) { + Box( + modifier = modifier + .fillMaxWidth(), + contentAlignment = Alignment.Center, + ) { + val willSearch by remember(pullRefreshState) { + derivedStateOf { + pullRefreshState.progress >= 1f + } + } + Row( + modifier = Modifier + .graphicsLayer { + val progress = + log10(pullRefreshState.progress.coerceAtLeast(0f) * 10 + 1) + alpha = progress.coerceIn(0f..1f) + val scale = progress + .coerceAtLeast(0.1f) + .coerceAtMost(1f) + scaleX = scale + scaleY = scale + // move down a bit + translationY = (progress - 1f) * 32f * density + } + .padding( + vertical = 16.dp, + horizontal = 16.dp, + ), + horizontalArrangement = Arrangement.spacedBy(8.dp), + verticalAlignment = Alignment.CenterVertically, + ) { + val tintTarget = + if (willSearch) { + MaterialTheme.colorScheme.primary + } else { + LocalContentColor.current.combineAlpha(DisabledEmphasisAlpha) + } + val tint by animateColorAsState(tintTarget) + Icon( + imageVector = Icons.Outlined.Search, + contentDescription = null, + tint = tint, + ) + Text( + text = stringResource(Res.strings.pull_to_search), + color = tint, + style = MaterialTheme.typography.bodySmall, + ) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/rememberVectorPainter.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/rememberVectorPainter.kt new file mode 100644 index 00000000..30188c26 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/rememberVectorPainter.kt @@ -0,0 +1,30 @@ +package com.artemchep.keyguard.ui + +import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.isSpecified +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.graphics.vector.RenderVectorGroup +import androidx.compose.ui.graphics.vector.VectorPainter + +/** + * Create a [VectorPainter] with the given [ImageVector]. This will create a + * sub-composition of the vector hierarchy given the tree structure in [ImageVector] + * + * @param [image] ImageVector used to create a vector graphic sub-composition + */ +@Composable +fun rememberVectorPainterCustom( + image: ImageVector, + tintColor: Color = Color.Unspecified, +) = androidx.compose.ui.graphics.vector.rememberVectorPainter( + defaultWidth = image.defaultWidth, + defaultHeight = image.defaultHeight, + viewportWidth = image.viewportWidth, + viewportHeight = image.viewportHeight, + name = image.name, + tintColor = tintColor.takeIf { it.isSpecified } ?: image.tintColor, + tintBlendMode = image.tintBlendMode, + autoMirror = image.autoMirror, + content = { _, _ -> RenderVectorGroup(group = image.root) }, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/rightClickable.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/rightClickable.kt new file mode 100644 index 00000000..5c519161 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/rightClickable.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.ui + +import androidx.compose.ui.Modifier + +expect fun Modifier.rightClickable( + onClick: (() -> Unit)?, +): Modifier diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/scrollbar/ColumnScrollbar.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/scrollbar/ColumnScrollbar.kt new file mode 100644 index 00000000..6030e899 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/scrollbar/ColumnScrollbar.kt @@ -0,0 +1,283 @@ +package com.artemchep.keyguard.ui.scrollbar + +import androidx.compose.animation.core.animateFloatAsState +import androidx.compose.animation.core.tween +import androidx.compose.foundation.ScrollState +import androidx.compose.foundation.background +import androidx.compose.foundation.gestures.Orientation +import androidx.compose.foundation.gestures.draggable +import androidx.compose.foundation.gestures.rememberDraggableState +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.BoxWithConstraints +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.alpha +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Shape +import androidx.compose.ui.graphics.graphicsLayer +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.platform.CurrentPlatform +import com.artemchep.keyguard.platform.Platform +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.theme.combineAlpha +import kotlinx.coroutines.launch + +/** + * Scrollbar for Column + * + * @param rightSide true -> right, false -> left + * @param thickness Thickness of the scrollbar thumb + * @param padding Padding of the scrollbar + * @param thumbMinHeight Thumb minimum height proportional to total scrollbar's height (eg: 0.1 -> 10% of total) + */ +@Composable +fun ColumnScrollbar( + modifier: Modifier = Modifier, + state: ScrollState, + rightSide: Boolean = true, + thickness: Dp = 6.dp, + padding: Dp = 4.dp, + thumbMinHeight: Float = 0.1f, + thumbColor: Color = LocalContentColor.current + .combineAlpha(DisabledEmphasisAlpha), + thumbSelectedColor: Color = MaterialTheme.colorScheme.primary, + thumbShape: Shape = CircleShape, + enabled: Boolean = true, + selectionMode: ScrollbarSelectionMode = ScrollbarSelectionMode.default, + indicatorContent: (@Composable (normalizedOffset: Float, isThumbSelected: Boolean) -> Unit)? = null, + contentPadding: PaddingValues, + content: @Composable () -> Unit, +) { + BoxWithConstraints( + modifier = modifier, + ) { + content() + + if (enabled) { + InternalColumnScrollbar( + state = state, + rightSide = rightSide, + thickness = thickness, + padding = padding, + thumbMinHeight = thumbMinHeight, + thumbColor = thumbColor, + thumbSelectedColor = thumbSelectedColor, + thumbShape = thumbShape, + visibleHeightDp = with(LocalDensity.current) { constraints.maxHeight.toDp() }, + indicatorContent = indicatorContent, + contentPadding = contentPadding, + selectionMode = selectionMode, + ) + } + } +} + +/** + * Scrollbar for Column + * Use this variation if you want to place the scrollbar independently of the Column position + * + * @param rightSide true -> right, false -> left + * @param thickness Thickness of the scrollbar thumb + * @param padding Padding of the scrollbar + * @param thumbMinHeight Thumb minimum height proportional to total scrollbar's height (eg: 0.1 -> 10% of total) + * @param visibleHeightDp Visible height of column view + */ +@Composable +fun InternalColumnScrollbar( + state: ScrollState, + rightSide: Boolean = true, + thickness: Dp = 6.dp, + padding: Dp = 8.dp, + thumbMinHeight: Float = 0.1f, + thumbColor: Color = Color(0xFF2A59B6), + thumbSelectedColor: Color = Color(0xFF5281CA), + thumbShape: Shape = CircleShape, + selectionMode: ScrollbarSelectionMode = ScrollbarSelectionMode.Thumb, + indicatorContent: (@Composable (normalizedOffset: Float, isThumbSelected: Boolean) -> Unit)? = null, + contentPadding: PaddingValues, + visibleHeightDp: Dp, +) { + val coroutineScope = rememberCoroutineScope() + + var isSelected by remember { mutableStateOf(false) } + + var dragOffset by remember { mutableStateOf(0f) } + + val fullHeightDp = with(LocalDensity.current) { state.maxValue.toDp() + visibleHeightDp } + + val normalizedThumbSizeReal by remember(visibleHeightDp, state.maxValue) { + derivedStateOf { + if (fullHeightDp == 0.dp) { + 1f + } else { + val normalizedDp = visibleHeightDp / fullHeightDp + normalizedDp.coerceIn(0f, 1f) + } + } + } + + val normalizedThumbSize by remember(normalizedThumbSizeReal) { + derivedStateOf { + normalizedThumbSizeReal.coerceAtLeast(thumbMinHeight) + } + } + + val normalizedThumbSizeUpdated by rememberUpdatedState(newValue = normalizedThumbSize) + + fun offsetCorrection(top: Float): Float { + val topRealMax = 1f + val topMax = (1f - normalizedThumbSizeUpdated).coerceIn(0f, 1f) + return top * topMax / topRealMax + } + + fun offsetCorrectionInverse(top: Float): Float { + val topRealMax = 1f + val topMax = 1f - normalizedThumbSizeUpdated + if (topMax == 0f) return top + return (top * topRealMax / topMax).coerceAtLeast(0f) + } + + val normalizedOffsetPosition by remember { + derivedStateOf { + if (state.maxValue == 0) return@derivedStateOf 0f + val normalized = state.value.toFloat() / state.maxValue.toFloat() + offsetCorrection(normalized) + } + } + + fun setDragOffset(value: Float) { + val maxValue = (1f - normalizedThumbSize).coerceAtLeast(0f) + dragOffset = value.coerceIn(0f, maxValue) + } + + fun setScrollOffset(newOffset: Float) { + setDragOffset(newOffset) + val exactIndex = offsetCorrectionInverse(state.maxValue * dragOffset).toInt() + coroutineScope.launch { + state.scrollTo(exactIndex) + } + } + + val isInAction = state.isScrollInProgress || isSelected + + val alpha by animateFloatAsState( + targetValue = if (isInAction) 1f else 0f, + animationSpec = tween( + durationMillis = if (isInAction) 75 else 500, + delayMillis = if (isInAction) 0 else 500, + ), + ) + + val displacement by animateFloatAsState( + targetValue = if (isInAction) 0f else 14f, + animationSpec = tween( + durationMillis = if (isInAction) 75 else 500, + delayMillis = if (isInAction) 0 else 500, + ), + ) + + BoxWithConstraints( + Modifier + .alpha(alpha) + .fillMaxWidth() + .padding(contentPadding), + ) { + if (indicatorContent != null) { + BoxWithConstraints( + Modifier + .align(if (rightSide) Alignment.TopEnd else Alignment.TopStart) + .fillMaxHeight() + .graphicsLayer { + translationX = (if (rightSide) displacement.dp else -displacement.dp).toPx() + translationY = constraints.maxHeight.toFloat() * normalizedOffsetPosition + }, + ) { + indicatorContent( + normalizedOffset = offsetCorrectionInverse(normalizedOffsetPosition), + isThumbSelected = isSelected, + ) + } + } + + BoxWithConstraints( + Modifier + .align(if (rightSide) Alignment.TopEnd else Alignment.TopStart) + .fillMaxHeight() + .draggable( + state = rememberDraggableState { delta -> + if (isSelected) { + setScrollOffset(dragOffset + delta / constraints.maxHeight.toFloat()) + } + }, + orientation = Orientation.Vertical, + enabled = selectionMode != ScrollbarSelectionMode.Disabled, + startDragImmediately = when (CurrentPlatform) { + is Platform.Desktop -> true + is Platform.Mobile -> false + }, + onDragStarted = { offset -> + val newOffset = offset.y / constraints.maxHeight.toFloat() + val currentOffset = normalizedOffsetPosition + when (selectionMode) { + ScrollbarSelectionMode.Full -> { + if (newOffset in currentOffset..(currentOffset + normalizedThumbSizeUpdated)) { + setDragOffset(currentOffset) + } else { + setScrollOffset(newOffset) + } + isSelected = true + } + + ScrollbarSelectionMode.Thumb -> { + if (newOffset in currentOffset..(currentOffset + normalizedThumbSizeUpdated)) { + setDragOffset(currentOffset) + isSelected = true + } + } + + ScrollbarSelectionMode.Disabled -> Unit + } + }, + onDragStopped = { + isSelected = false + }, + ) + .graphicsLayer { + translationX = (if (rightSide) displacement.dp else -displacement.dp).toPx() + }, + ) { + val animatedThumbSize by animateFloatAsState(normalizedThumbSize) + Box( + modifier = Modifier + .align(Alignment.TopEnd) + .graphicsLayer { + translationY = constraints.maxHeight.toFloat() * normalizedOffsetPosition + } + .padding(horizontal = padding) + .width(thickness) + .clip(thumbShape) + .background(if (isSelected) thumbSelectedColor else thumbColor) + .fillMaxHeight(animatedThumbSize), + ) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbar.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbar.kt new file mode 100644 index 00000000..85ba52c2 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/scrollbar/LazyColumnScrollbar.kt @@ -0,0 +1,345 @@ +package com.artemchep.keyguard.ui.scrollbar + +import androidx.compose.animation.core.animateFloatAsState +import androidx.compose.animation.core.tween +import androidx.compose.foundation.background +import androidx.compose.foundation.gestures.Orientation +import androidx.compose.foundation.gestures.draggable +import androidx.compose.foundation.gestures.rememberDraggableState +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.BoxWithConstraints +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.LazyListItemInfo +import androidx.compose.foundation.lazy.LazyListState +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.alpha +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Shape +import androidx.compose.ui.graphics.graphicsLayer +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.platform.CurrentPlatform +import com.artemchep.keyguard.platform.Platform +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.theme.combineAlpha +import kotlinx.coroutines.launch +import kotlin.math.floor + +/** + * Scrollbar for LazyColumn + * + * @param rightSide true -> right, false -> left + * @param thickness Thickness of the scrollbar thumb + * @param padding Padding of the scrollbar + * @param thumbMinHeight Thumb minimum height proportional to total scrollbar's height (eg: 0.1 -> 10% of total) + */ +@Composable +fun LazyColumnScrollbar( + modifier: Modifier = Modifier, + listState: LazyListState, + rightSide: Boolean = true, + thickness: Dp = 6.dp, + padding: Dp = 4.dp, + thumbMinHeight: Float = 0.1f, + thumbColor: Color = LocalContentColor.current + .combineAlpha(DisabledEmphasisAlpha), + thumbSelectedColor: Color = MaterialTheme.colorScheme.primary, + thumbShape: Shape = CircleShape, + selectionMode: ScrollbarSelectionMode = ScrollbarSelectionMode.default, + enabled: Boolean = true, + indicatorContent: (@Composable (index: Int, isThumbSelected: Boolean) -> Unit)? = null, + contentPadding: PaddingValues, + content: @Composable () -> Unit, +) { + Box( + modifier = modifier, + ) { + content() + + if (enabled) { + InternalLazyColumnScrollbar( + listState = listState, + rightSide = rightSide, + thickness = thickness, + padding = padding, + thumbMinHeight = thumbMinHeight, + thumbColor = thumbColor, + thumbSelectedColor = thumbSelectedColor, + thumbShape = thumbShape, + selectionMode = selectionMode, + indicatorContent = indicatorContent, + contentPadding = contentPadding, + ) + } + } +} + +/** + * Scrollbar for LazyColumn + * Use this variation if you want to place the scrollbar independently of the LazyColumn position + * + * @param rightSide true -> right, false -> left + * @param thickness Thickness of the scrollbar thumb + * @param padding Padding of the scrollbar + * @param thumbMinHeight Thumb minimum height proportional to total scrollbar's height (eg: 0.1 -> 10% of total) + */ +@Composable +fun InternalLazyColumnScrollbar( + listState: LazyListState, + rightSide: Boolean = true, + thickness: Dp = 6.dp, + padding: Dp = 8.dp, + thumbMinHeight: Float = 0.1f, + thumbColor: Color, + thumbSelectedColor: Color, + thumbShape: Shape = CircleShape, + selectionMode: ScrollbarSelectionMode = ScrollbarSelectionMode.Thumb, + indicatorContent: (@Composable (index: Int, isThumbSelected: Boolean) -> Unit)? = null, + contentPadding: PaddingValues, +) { + val firstVisibleItemIndex = remember { derivedStateOf { listState.firstVisibleItemIndex } } + + val coroutineScope = rememberCoroutineScope() + + var isSelected by remember { mutableStateOf(false) } + + var dragOffset by remember { mutableStateOf(0f) } + + val reverseLayout by remember { derivedStateOf { listState.layoutInfo.reverseLayout } } + + val realFirstVisibleItem by remember { + derivedStateOf { + listState.layoutInfo.visibleItemsInfo.firstOrNull { + it.index == listState.firstVisibleItemIndex + } + } + } + + val isStickyHeaderInAction by remember { + derivedStateOf { + val realIndex = realFirstVisibleItem?.index ?: return@derivedStateOf false + val firstVisibleIndex = listState.layoutInfo.visibleItemsInfo.firstOrNull()?.index + ?: return@derivedStateOf false + realIndex != firstVisibleIndex + } + } + + fun LazyListItemInfo.fractionHiddenTop() = + if (size == 0) 0f else -offset.toFloat() / size.toFloat() + + fun LazyListItemInfo.fractionVisibleBottom(viewportEndOffset: Int) = + if (size == 0) 0f else (viewportEndOffset - offset).toFloat() / size.toFloat() + + val normalizedThumbSizeReal by remember { + derivedStateOf { + listState.layoutInfo.let { + if (it.totalItemsCount == 0) { + return@let 0f + } + + val firstItem = realFirstVisibleItem ?: return@let 0f + val firstPartial = firstItem.fractionHiddenTop() + val lastPartial = + 1f - it.visibleItemsInfo.last().fractionVisibleBottom(it.viewportEndOffset) + + val realSize = it.visibleItemsInfo.size - if (isStickyHeaderInAction) 1 else 0 + val realVisibleSize = realSize.toFloat() - firstPartial - lastPartial + realVisibleSize / it.totalItemsCount.toFloat() + } + } + } + + val normalizedThumbSize by remember { + derivedStateOf { + normalizedThumbSizeReal.coerceAtLeast(thumbMinHeight) + } + } + + fun offsetCorrection(top: Float): Float { + val topRealMax = (1f - normalizedThumbSizeReal).coerceIn(0f, 1f) + if (normalizedThumbSizeReal >= thumbMinHeight) { + return when { + reverseLayout -> topRealMax - top + else -> top + } + } + + val topMax = 1f - thumbMinHeight + return when { + reverseLayout -> (topRealMax - top) * topMax / topRealMax + else -> top * topMax / topRealMax + } + } + + fun offsetCorrectionInverse(top: Float): Float { + if (normalizedThumbSizeReal >= thumbMinHeight) { + return top + } + val topRealMax = 1f - normalizedThumbSizeReal + val topMax = 1f - thumbMinHeight + return top * topRealMax / topMax + } + + val normalizedOffsetPosition by remember { + derivedStateOf { + listState.layoutInfo.let { + if (it.totalItemsCount == 0 || it.visibleItemsInfo.isEmpty()) { + return@let 0f + } + + val firstItem = realFirstVisibleItem ?: return@let 0f + val top = firstItem + .run { index.toFloat() + fractionHiddenTop() } / it.totalItemsCount.toFloat() + offsetCorrection(top) + } + } + } + + fun setDragOffset(value: Float) { + val maxValue = (1f - normalizedThumbSize).coerceAtLeast(0f) + dragOffset = value.coerceIn(0f, maxValue) + } + + fun setScrollOffset(newOffset: Float) { + setDragOffset(newOffset) + val totalItemsCount = listState.layoutInfo.totalItemsCount.toFloat() + val exactIndex = offsetCorrectionInverse(totalItemsCount * dragOffset) + val index: Int = floor(exactIndex).toInt() + val remainder: Float = exactIndex - floor(exactIndex) + + coroutineScope.launch { + listState.scrollToItem(index = index, scrollOffset = 0) + val offset = realFirstVisibleItem + ?.size + ?.let { it.toFloat() * remainder } + ?.toInt() ?: 0 + listState.scrollToItem(index = index, scrollOffset = offset) + } + } + + val isInAction = listState.isScrollInProgress || isSelected + + val alpha by animateFloatAsState( + targetValue = if (isInAction) 1f else 0f, + animationSpec = tween( + durationMillis = if (isInAction) 75 else 500, + delayMillis = if (isInAction) 0 else 500, + ), + ) + + val displacement by animateFloatAsState( + targetValue = if (isInAction) 0f else 14f, + animationSpec = tween( + durationMillis = if (isInAction) 75 else 500, + delayMillis = if (isInAction) 0 else 500, + ), + ) + + BoxWithConstraints( + Modifier + .alpha(alpha) + .fillMaxWidth() + .padding(contentPadding), + ) { + if (indicatorContent != null) { + BoxWithConstraints( + Modifier + .align(if (rightSide) Alignment.TopEnd else Alignment.TopStart) + .fillMaxHeight() + .graphicsLayer( + translationX = with(LocalDensity.current) { (if (rightSide) displacement.dp else -displacement.dp).toPx() }, + translationY = constraints.maxHeight.toFloat() * normalizedOffsetPosition, + ), + ) { + indicatorContent( + index = firstVisibleItemIndex.value, + isThumbSelected = isSelected, + ) + } + } + + BoxWithConstraints( + Modifier + .align(if (rightSide) Alignment.TopEnd else Alignment.TopStart) + .fillMaxHeight() + .draggable( + state = rememberDraggableState { delta -> + val displace = if (reverseLayout) -delta else delta // side effect ? + if (isSelected) { + setScrollOffset(dragOffset + displace / constraints.maxHeight.toFloat()) + } + }, + orientation = Orientation.Vertical, + enabled = selectionMode != ScrollbarSelectionMode.Disabled, + startDragImmediately = when (CurrentPlatform) { + is Platform.Desktop -> true + is Platform.Mobile -> false + }, + onDragStarted = onDragStarted@{ offset -> + val maxHeight = constraints.maxHeight.toFloat() + if (maxHeight <= 0f) return@onDragStarted + val newOffset = when { + reverseLayout -> (maxHeight - offset.y) / maxHeight + else -> offset.y / maxHeight + } + val currentOffset = when { + reverseLayout -> 1f - normalizedOffsetPosition - normalizedThumbSize + else -> normalizedOffsetPosition + } + when (selectionMode) { + ScrollbarSelectionMode.Full -> { + if (newOffset in currentOffset..(currentOffset + normalizedThumbSize)) { + setDragOffset(currentOffset) + } else { + setScrollOffset(newOffset) + } + isSelected = true + } + + ScrollbarSelectionMode.Thumb -> { + if (newOffset in currentOffset..(currentOffset + normalizedThumbSize)) { + setDragOffset(currentOffset) + isSelected = true + } + } + + ScrollbarSelectionMode.Disabled -> Unit + } + }, + onDragStopped = { + isSelected = false + }, + ) + .graphicsLayer(translationX = with(LocalDensity.current) { (if (rightSide) displacement.dp else -displacement.dp).toPx() }), + ) { + val animatedThumbSize by animateFloatAsState(normalizedThumbSize) + Box( + modifier = Modifier + .align(Alignment.TopEnd) + .graphicsLayer(translationY = constraints.maxHeight.toFloat() * normalizedOffsetPosition) + .padding(horizontal = padding) + .width(thickness) + .clip(thumbShape) + .background(if (isSelected) thumbSelectedColor else thumbColor) + .fillMaxHeight(animatedThumbSize), + ) + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode.kt new file mode 100644 index 00000000..78001f0e --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/scrollbar/ScrollbarSelectionMode.kt @@ -0,0 +1,35 @@ +package com.artemchep.keyguard.ui.scrollbar + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.platform.CurrentPlatform +import com.artemchep.keyguard.platform.Platform + +/** + * Scrollbar selection modes. + */ +enum class ScrollbarSelectionMode { + /** + * Enable selection in the whole scrollbar and thumb + */ + Full, + + /** + * Enable selection in the thumb + */ + Thumb, + + /** + * Disable selection + */ + Disabled, + ; + + companion object { + @get:Composable + val default: ScrollbarSelectionMode + get() = when (CurrentPlatform) { + is Platform.Desktop -> Full + is Platform.Mobile -> Thumb + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/selection/SelectionBar.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/selection/SelectionBar.kt new file mode 100644 index 00000000..67725e5c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/selection/SelectionBar.kt @@ -0,0 +1,101 @@ +package com.artemchep.keyguard.ui.selection + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.WindowInsetsSides +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.heightIn +import androidx.compose.foundation.layout.only +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.windowInsetsPadding +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Clear +import androidx.compose.material.icons.outlined.ViewList +import androidx.compose.material3.Button +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.LocalTextStyle +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.platform.leNavigationBars +import com.artemchep.keyguard.ui.icons.IconBox +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.util.HorizontalDivider + +@Composable +fun SelectionBar( + title: (@Composable RowScope.() -> Unit)? = null, + trailing: (@Composable RowScope.() -> Unit)? = null, + onClear: (() -> Unit)?, +) { + Column { + Surface( + modifier = Modifier + .fillMaxWidth(), + tonalElevation = 3.dp, + ) { + val navBarInsets = WindowInsets.leNavigationBars + .only(WindowInsetsSides.Bottom) + Row( + modifier = Modifier + .heightIn(min = 56.dp) + .windowInsetsPadding(navBarInsets), + verticalAlignment = Alignment.CenterVertically, + ) { + IconButton( + enabled = onClear != null, + onClick = { + onClear?.invoke() + }, + ) { + // TODO: Consider using Icons.Outlined.Deselect + Icon( + Icons.Outlined.Clear, + null, + ) + } + Row( + modifier = Modifier + .weight(1f), + ) { + Button( + onClick = { /*TODO*/ }, + ) { + IconBox( + main = Icons.Outlined.ViewList, + secondary = null, // Icons.Outlined.PanoramaFishEye, + ) + if (title != null) { + Spacer( + modifier = Modifier + .width(Dimens.buttonIconPadding), + ) + title.invoke(this) + } + } + val textStyle = MaterialTheme.typography.titleMedium + CompositionLocalProvider( + LocalTextStyle provides textStyle, + ) { + } + } + Spacer( + modifier = Modifier + .width(16.dp), + ) + trailing?.invoke(this) + } + } + HorizontalDivider( + transparency = false, + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/selection/SelectionUtil.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/selection/SelectionUtil.kt new file mode 100644 index 00000000..c149aae2 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/selection/SelectionUtil.kt @@ -0,0 +1,61 @@ +package com.artemchep.keyguard.ui.selection + +import com.artemchep.keyguard.feature.navigation.state.RememberStateFlowScope +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.map + +interface SelectionHandle { + val idsFlow: StateFlow> + + fun clearSelection() + + fun toggleSelection(itemId: String) + + fun setSelection(ids: Set) +} + +fun RememberStateFlowScope.selectionHandle( + key: String, +): SelectionHandle { + val itemIdsSink = mutablePersistedFlow(key) { + setOf() + } + + interceptBackPress( + // Intercept the back button while the + // selection set is not empty. + isEnabledFlow = itemIdsSink + .map { it.isNotEmpty() }, + ) { callback -> + val wereEmpty = itemIdsSink.value.isEmpty() + // Reset the selection on back + // button press. + itemIdsSink.value = emptySet() + + // Eat the callback if it weren't empty. + callback(wereEmpty) + } + + return object : SelectionHandle { + override val idsFlow: StateFlow> get() = itemIdsSink + + override fun clearSelection() { + itemIdsSink.value = emptySet() + } + + override fun toggleSelection(itemId: String) { + val oldItemIds = itemIdsSink.value + val newItemIds = + if (itemId in oldItemIds) { + oldItemIds - itemId + } else { + oldItemIds + itemId + } + itemIdsSink.value = newItemIds + } + + override fun setSelection(ids: Set) { + itemIdsSink.value = ids + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/shimmer/ShimmerArea.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/shimmer/ShimmerArea.kt new file mode 100644 index 00000000..9cf4a1b5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/shimmer/ShimmerArea.kt @@ -0,0 +1,130 @@ +package com.artemchep.keyguard.ui.shimmer + +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.geometry.Rect +import androidx.compose.ui.geometry.Size +import kotlin.math.PI +import kotlin.math.abs +import kotlin.math.acos +import kotlin.math.cos +import kotlin.math.pow +import kotlin.math.sqrt + +/** + * Describes the area in which the shimmer effect will be drawn. + */ +internal class ShimmerArea( + private val widthOfShimmer: Float, + rotationInDegree: Float, +) { + + private val reducedRotation = rotationInDegree + .reduceRotation() + .toRadian() + + // = Rect.Zero -> Don't draw + // = null -> Draw into view + private var requestedShimmerBounds: Rect? = null + private var shimmerSize: Size = Size.Zero + + var translationDistance = 0f + private set + + var pivotPoint = Offset.Unspecified + private set + + var shimmerBounds = Rect.Zero + private set + + var viewBounds = Rect.Zero + set(value) { + if (value == field) return + field = value + computeShimmerBounds() + } + + fun updateBounds(shimmerBounds: Rect?) { + if (this.requestedShimmerBounds == shimmerBounds) return + requestedShimmerBounds = shimmerBounds + computeShimmerBounds() + } + + private fun computeShimmerBounds() { + if (viewBounds.isEmpty) return + shimmerBounds = requestedShimmerBounds ?: viewBounds + + // Pivot point in the view's frame of reference + pivotPoint = -viewBounds.topLeft + shimmerBounds.center + + val newShimmerSize = shimmerBounds.size + if (shimmerSize != newShimmerSize) { + shimmerSize = newShimmerSize + computeTranslationDistance() + } + } + + /** + * Rotating the shimmer results in an effect that will first be visible in one of the corners. + * It will afterwards travel across the view / display until the last visible part of it will + * disappear in the opposite corner. + * + * A simple shimmer going across the device's screen from left to right has to travel until + * it reaches the center of the screen and then the same distance again. Without taking the + * shimmer's own width into account. + * + * If the shimmer is now tilted slightly clockwise around the center of the display, a new + * distance has to be calculated. The required distance is the length of a line, which extends + * from the top left of the display to the rotated shimmer (or center line), hitting it at a + * 90 degree angle. As the height and width of the display (or view) are known, the length of + * the line can be calculated by using basic trigonometric functions. + */ + private fun computeTranslationDistance() { + val width = shimmerSize.width / 2 + val height = shimmerSize.height / 2 + + val distanceCornerToCenter = sqrt(width.pow(2) + height.pow(2)) + val beta = acos(width / distanceCornerToCenter) + val alpha = beta - reducedRotation + + val distanceCornerToRotatedCenterLine = cos(alpha) * distanceCornerToCenter + translationDistance = distanceCornerToRotatedCenterLine * 2 + widthOfShimmer + } + + /** + * The formula to compute the required distance for the shimmer's traversal across the view + * only accepts inputs between 0 and 90. All inputs above 90 can simply be mapped to a value + * in the accepted range. + * Inputs between 90 and 180 have to be mapped to the values between 90 and 0 (decreasing). + * Inputs between 180 and 270 have to be mapped to the values between 0 and 90. + * And inputs between 270 and 360 have to be mapped to the values between 90 and 0 again. + */ + private fun Float.reduceRotation(): Float { + if (this < 0f) { + throw IllegalArgumentException("The shimmer's rotation must be a positive number") + } + var rotation = this % 180 // 0..179, 0 + rotation -= 90 // -90..0..89, -90 + rotation = -abs(rotation) // -90..0..-90 + return rotation + 90 // 0..90..0 + } + + private fun Float.toRadian(): Float = this / 180 * PI.toFloat() + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as ShimmerArea + + if (widthOfShimmer != other.widthOfShimmer) return false + if (reducedRotation != other.reducedRotation) return false + + return true + } + + override fun hashCode(): Int { + var result = widthOfShimmer.hashCode() + result = 31 * result + reducedRotation.hashCode() + return result + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/shimmer/ShimmerBounds.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/shimmer/ShimmerBounds.kt new file mode 100644 index 00000000..86e112ad --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/shimmer/ShimmerBounds.kt @@ -0,0 +1,28 @@ +package com.artemchep.keyguard.ui.shimmer + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.compose.ui.geometry.Rect + +@Composable +expect fun rememberShimmerBoundsWindow(): Rect + +@Composable +internal fun rememberShimmerBounds( + shimmerBounds: ShimmerBounds, +): Rect? { + val windowBounds = rememberShimmerBoundsWindow() + return remember(shimmerBounds, windowBounds) { + when (shimmerBounds) { + ShimmerBounds.Window -> windowBounds + ShimmerBounds.Custom -> Rect.Zero + ShimmerBounds.View -> null + } + } +} + +sealed class ShimmerBounds { + data object Custom : ShimmerBounds() + data object View : ShimmerBounds() + data object Window : ShimmerBounds() +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/shimmer/ShimmerTheme.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/shimmer/ShimmerTheme.kt new file mode 100644 index 00000000..96b1bbc5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/shimmer/ShimmerTheme.kt @@ -0,0 +1,86 @@ +package com.artemchep.keyguard.ui.shimmer + +import androidx.compose.animation.core.AnimationSpec +import androidx.compose.animation.core.LinearEasing +import androidx.compose.animation.core.RepeatMode +import androidx.compose.animation.core.infiniteRepeatable +import androidx.compose.animation.core.tween +import androidx.compose.runtime.staticCompositionLocalOf +import androidx.compose.ui.graphics.BlendMode +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.HighEmphasisAlpha + +data class ShimmerTheme( + + /** + * The [AnimationSpec] which will be used for the traversal. Use an infinite spec to repeat + * shimmering. + * + * @see defaultShimmerTheme + */ + val animationSpec: AnimationSpec, + + /** + * The [BlendMode] used in the shimmer's [androidx.compose.ui.graphics.Paint]. Have a look at + * the theming samples to get an idea on how to utilize the blend mode. + * + * @see ThemingSamples in the sample app. + */ + val blendMode: BlendMode, + + /** + * Describes the orientation of the shimmer in degrees. Zero is thereby defined as shimmer + * traversing from the left to the right. The rotation is applied clockwise. + * Only values >= 0 will be accepted. + */ + val rotation: Float, + + /** + * The [shaderColors] can be used to control the colors and alpha values of the shimmer. The + * size of the list has to be kept in sync with the [shaderColorStops]. Consult the docs of the + * [androidx.compose.ui.graphics.LinearGradientShader] for more information and have a look + * at the theming samples. + * + * @see ThemingSamples in the samples app. + */ + val shaderColors: List, + + /** + * See docs of [shaderColors]. + */ + val shaderColorStops: List?, + + /** + * Controls the width used to distribute the [shaderColors]. + */ + val shimmerWidth: Dp, +) + +val defaultShimmerTheme: ShimmerTheme = ShimmerTheme( + animationSpec = infiniteRepeatable( + animation = tween( + 800, + easing = LinearEasing, + delayMillis = 400, + ), + repeatMode = RepeatMode.Restart, + ), + blendMode = BlendMode.DstIn, + rotation = 5.0f, + shaderColors = listOf( + Color.Unspecified.copy(alpha = DisabledEmphasisAlpha), + Color.Unspecified.copy(alpha = HighEmphasisAlpha), + Color.Unspecified.copy(alpha = DisabledEmphasisAlpha), + ), + shaderColorStops = listOf( + 0.0f, + 0.5f, + 1.0f, + ), + shimmerWidth = 400.dp, +) + +val LocalShimmerTheme = staticCompositionLocalOf { defaultShimmerTheme } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/shimmer/rememberShimmer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/shimmer/rememberShimmer.kt new file mode 100644 index 00000000..3be51b23 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/shimmer/rememberShimmer.kt @@ -0,0 +1,50 @@ +package com.artemchep.keyguard.ui.shimmer + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.compose.ui.geometry.Rect +import kotlinx.coroutines.flow.MutableStateFlow + +@Composable +fun rememberShimmer( + shimmerBounds: ShimmerBounds, + theme: ShimmerTheme = LocalShimmerTheme.current, +): Shimmer { + val effect = rememberShimmerEffect(theme) + val bounds = rememberShimmerBounds(shimmerBounds) + + return remember(theme, effect, bounds) { + Shimmer(theme, effect, bounds) + } +} + +class Shimmer internal constructor( + internal val theme: ShimmerTheme, + internal val effect: ShimmerEffect, + bounds: Rect?, +) { + + internal val boundsFlow = MutableStateFlow(bounds) + + fun updateBounds(bounds: Rect?) { + boundsFlow.value = bounds + } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as Shimmer + + if (theme != other.theme) return false + if (effect != other.effect) return false + + return true + } + + override fun hashCode(): Int { + var result = theme.hashCode() + result = 31 * result + effect.hashCode() + return result + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/shimmer/rememberShimmerEffect.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/shimmer/rememberShimmerEffect.kt new file mode 100644 index 00000000..eec938c5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/shimmer/rememberShimmerEffect.kt @@ -0,0 +1,127 @@ +package com.artemchep.keyguard.ui.shimmer + +import androidx.compose.animation.core.Animatable +import androidx.compose.animation.core.AnimationSpec +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.remember +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.geometry.toRect +import androidx.compose.ui.graphics.BlendMode +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.LinearGradientShader +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.graphics.PaintingStyle +import androidx.compose.ui.graphics.drawscope.ContentDrawScope +import androidx.compose.ui.graphics.drawscope.drawIntoCanvas +import androidx.compose.ui.graphics.withSaveLayer +import androidx.compose.ui.platform.LocalDensity + +@Composable +internal fun rememberShimmerEffect(theme: ShimmerTheme): ShimmerEffect { + val shimmerWidth = with(LocalDensity.current) { theme.shimmerWidth.toPx() } + val shimmerEffect = remember(theme) { + ShimmerEffect( + animationSpec = theme.animationSpec, + blendMode = theme.blendMode, + rotation = theme.rotation, + shaderColors = theme.shaderColors, + shaderColorStops = theme.shaderColorStops, + shimmerWidth = shimmerWidth, + ) + } + + LaunchedEffect(shimmerEffect) { + shimmerEffect.startAnimation() + } + return shimmerEffect +} + +internal class ShimmerEffect( + private val animationSpec: AnimationSpec, + private val blendMode: BlendMode, + private val rotation: Float, + private val shaderColors: List, + private val shaderColorStops: List?, + private val shimmerWidth: Float, +) { + + private val animatedState = Animatable(0f) + + private val shader = LinearGradientShader( + from = Offset(-shimmerWidth / 2, 0f), + to = Offset(shimmerWidth / 2, 0f), + colors = shaderColors, + colorStops = shaderColorStops, + ) + + private val paint = Paint().apply { + isAntiAlias = true + style = PaintingStyle.Fill + blendMode = this@ShimmerEffect.blendMode + shader = this@ShimmerEffect.shader + } + + internal suspend fun startAnimation() { + animatedState.animateTo( + targetValue = 1f, + animationSpec = animationSpec, + ) + } + + private val emptyPaint = Paint() + + fun ContentDrawScope.draw(shimmerArea: ShimmerArea) = with(shimmerArea) { + if (shimmerBounds.isEmpty || viewBounds.isEmpty) return + + val progress = animatedState.value + val traversal = -translationDistance / 2 + translationDistance * progress + pivotPoint.x + + val drawArea = size.toRect() + drawIntoCanvas { canvas -> + canvas.withSaveLayer( + bounds = drawArea, + emptyPaint, + ) { + drawContent() + canvas.save() + canvas.translate(traversal, 0f) + // canvas.rotate(rotation, pivotPoint.x, pivotPoint.y) + canvas.drawRect( + drawArea.left - traversal, + drawArea.top, + drawArea.right - traversal, + drawArea.bottom, + paint, + ) + canvas.restore() + } + } + } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as ShimmerEffect + + if (animationSpec != other.animationSpec) return false + if (blendMode != other.blendMode) return false + if (rotation != other.rotation) return false + if (shaderColors != other.shaderColors) return false + if (shaderColorStops != other.shaderColorStops) return false + if (shimmerWidth != other.shimmerWidth) return false + + return true + } + + override fun hashCode(): Int { + var result = animationSpec.hashCode() + result = 31 * result + blendMode.hashCode() + result = 31 * result + rotation.hashCode() + result = 31 * result + shaderColors.hashCode() + result = 31 * result + shaderColorStops.hashCode() + result = 31 * result + shimmerWidth.hashCode() + return result + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/shimmer/shimmer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/shimmer/shimmer.kt new file mode 100644 index 00000000..5069ef2b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/shimmer/shimmer.kt @@ -0,0 +1,56 @@ +/* + * Dr. Ing. h.c. F. Porsche AG confidential. This code is protected by intellectual property rights. + * The Dr. Ing. h.c. F. Porsche AG owns exclusive legal rights of use. + */ +package com.artemchep.keyguard.ui.shimmer + +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.composed +import androidx.compose.ui.draw.DrawModifier +import androidx.compose.ui.graphics.drawscope.ContentDrawScope +import androidx.compose.ui.layout.LayoutCoordinates +import androidx.compose.ui.layout.OnGloballyPositionedModifier +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.platform.debugInspectorInfo + +fun Modifier.shimmer( + customShimmer: Shimmer? = null, +): Modifier = composed( + factory = { + val shimmer = customShimmer ?: rememberShimmer(ShimmerBounds.View) + + val width = with(LocalDensity.current) { shimmer.theme.shimmerWidth.toPx() } + val area = remember(width, shimmer.theme.rotation) { + ShimmerArea(width, shimmer.theme.rotation) + } + + LaunchedEffect(area, shimmer) { + shimmer.boundsFlow.collect { + area.updateBounds(it) + } + } + + remember(area, shimmer) { ShimmerModifier(area, shimmer.effect) } + }, + inspectorInfo = debugInspectorInfo { + name = "shimmer" + properties["customShimmer"] = customShimmer + }, +) + +internal class ShimmerModifier( + private val area: ShimmerArea, + private val effect: ShimmerEffect, +) : DrawModifier, OnGloballyPositionedModifier { + + override fun ContentDrawScope.draw() { + with(effect) { draw(area) } + } + + override fun onGloballyPositioned(coordinates: LayoutCoordinates) { + val viewBounds = coordinates.unclippedBoundsInWindow() + area.viewBounds = viewBounds + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/shimmer/unclippedBoundsInWindow.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/shimmer/unclippedBoundsInWindow.kt new file mode 100644 index 00000000..016a7552 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/shimmer/unclippedBoundsInWindow.kt @@ -0,0 +1,15 @@ +package com.artemchep.keyguard.ui.shimmer + +import androidx.compose.ui.geometry.Rect +import androidx.compose.ui.layout.LayoutCoordinates +import androidx.compose.ui.layout.positionInWindow + +fun LayoutCoordinates.unclippedBoundsInWindow(): Rect { + val positionInWindow = positionInWindow() + return Rect( + positionInWindow.x, + positionInWindow.y, + positionInWindow.x + size.width, + positionInWindow.y + size.height, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonButton.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonButton.kt new file mode 100644 index 00000000..661bea4a --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonButton.kt @@ -0,0 +1,33 @@ +package com.artemchep.keyguard.ui.skeleton + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.heightIn +import androidx.compose.foundation.layout.widthIn +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.minimumInteractiveComponentSize +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.shimmer.shimmer +import com.artemchep.keyguard.ui.theme.combineAlpha + +@Composable +fun SkeletonButton( + modifier: Modifier = Modifier, +) { + val contentColor = LocalContentColor.current + .combineAlpha(DisabledEmphasisAlpha) + Box( + modifier + .shimmer() + .widthIn(min = 58.dp) + .heightIn(min = 40.dp) + .minimumInteractiveComponentSize() + .clip(CircleShape) + .background(contentColor), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonCheckBox.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonCheckBox.kt new file mode 100644 index 00000000..3afd26f0 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonCheckBox.kt @@ -0,0 +1,47 @@ +package com.artemchep.keyguard.ui.skeleton + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.heightIn +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.widthIn +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.shimmer.shimmer +import com.artemchep.keyguard.ui.theme.combineAlpha + +@Composable +fun SkeletonCheckbox( + modifier: Modifier = Modifier, + clickable: Boolean = true, +) { + val contentColor = LocalContentColor.current + .combineAlpha(DisabledEmphasisAlpha) + Box( + modifier + .then( + if (clickable) { + Modifier + .widthIn(min = 48.dp) + .heightIn(min = 48.dp) + } else { + Modifier + }, + ), + contentAlignment = Alignment.Center, + ) { + Box( + modifier + .shimmer() + .size(24.dp) + .clip(MaterialTheme.shapes.small) + .background(contentColor), + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonFilter.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonFilter.kt new file mode 100644 index 00000000..8b46c143 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonFilter.kt @@ -0,0 +1,28 @@ +package com.artemchep.keyguard.ui.skeleton + +import androidx.compose.foundation.layout.width +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.feature.search.filter.component.FilterItemLayout + +@Composable +fun SkeletonFilter( + modifier: Modifier = Modifier, +) { + FilterItemLayout( + modifier = modifier, + checked = false, + leading = null, + content = { + SkeletonText( + modifier = Modifier + .width(64.dp), + style = MaterialTheme.typography.labelLarge, + ) + }, + onClick = null, + enabled = true, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonItem.kt new file mode 100644 index 00000000..061d6e53 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonItem.kt @@ -0,0 +1,53 @@ +package com.artemchep.keyguard.ui.skeleton + +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.material3.LocalContentColor +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import com.artemchep.keyguard.ui.Avatar +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.shimmer.shimmer +import com.artemchep.keyguard.ui.theme.combineAlpha + +@Composable +fun SkeletonItem( + avatar: Boolean = false, + titleWidthFraction: Float = 0.45f, + textWidthFraction: Float? = 0.33f, +) { + FlatItem( + leading = if (avatar) { + // composable + { + Avatar( + modifier = Modifier + .shimmer(), + color = LocalContentColor.current + .combineAlpha(DisabledEmphasisAlpha), + ) { + } + } + } else { + null + }, + title = { + SkeletonText( + modifier = Modifier + .fillMaxWidth(titleWidthFraction), + ) + }, + text = if (textWidthFraction != null) { + // composable + { + SkeletonText( + modifier = Modifier + .fillMaxWidth(textWidthFraction), + ) + } + } else { + null + }, + enabled = true, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonItemPilled.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonItemPilled.kt new file mode 100644 index 00000000..065c7df4 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonItemPilled.kt @@ -0,0 +1,69 @@ +package com.artemchep.keyguard.ui.skeleton + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.FlatItemLayout +import com.artemchep.keyguard.ui.shimmer.shimmer +import com.artemchep.keyguard.ui.theme.combineAlpha + +@Composable +fun SkeletonItemPilled( + modifier: Modifier = Modifier, + chevron: Boolean = false, +) { + val contentColor = LocalContentColor.current + .combineAlpha(DisabledEmphasisAlpha) + FlatItemLayout( + modifier = modifier + .shimmer() + .padding(top = 1.dp), + leading = { + Box( + Modifier + .height(18.dp) + .width(44.dp) + .clip(MaterialTheme.shapes.medium) + .background(contentColor.copy(alpha = 0.2f)), + ) + }, + content = { + Row( + Modifier + .fillMaxWidth(1f), + verticalAlignment = Alignment.CenterVertically, + ) { + Box( + Modifier + .height(18.dp) + .fillMaxWidth(0.4f) + .clip(MaterialTheme.shapes.medium) + .background(contentColor), + ) + if (chevron) { + Spacer(modifier = Modifier.weight(1f)) + Box( + Modifier + .size(18.dp) + .clip(MaterialTheme.shapes.medium) + .background(contentColor.copy(alpha = 0.2f)), + ) + } + } + }, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonSection.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonSection.kt new file mode 100644 index 00000000..97cc8e85 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonSection.kt @@ -0,0 +1,27 @@ +package com.artemchep.keyguard.ui.skeleton + +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.artemchep.keyguard.ui.theme.Dimens + +@Composable +fun SkeletonSection( + modifier: Modifier = Modifier, + widthFraction: Float = 0.33f, +) { + SkeletonText( + modifier = modifier + .fillMaxWidth(widthFraction) + .padding( + vertical = 16.dp, + horizontal = Dimens.horizontalPadding, + ), + style = MaterialTheme.typography.labelLarge + .copy(fontSize = 12.sp), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonSegmented.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonSegmented.kt new file mode 100644 index 00000000..e587d1a0 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonSegmented.kt @@ -0,0 +1,30 @@ +package com.artemchep.keyguard.ui.skeleton + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material3.LocalContentColor +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.shimmer.shimmer +import com.artemchep.keyguard.ui.theme.combineAlpha + +@Composable +fun SkeletonSegmented( + modifier: Modifier = Modifier, +) { + val contentColor = LocalContentColor.current + .combineAlpha(DisabledEmphasisAlpha) + Box( + modifier = modifier + .shimmer() + .height(40.dp) + .clip(CircleShape) + .background(contentColor), + ) { + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonSlider.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonSlider.kt new file mode 100644 index 00000000..eda9631f --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonSlider.kt @@ -0,0 +1,35 @@ +package com.artemchep.keyguard.ui.skeleton + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.heightIn +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.widthIn +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.shimmer.shimmer +import com.artemchep.keyguard.ui.theme.combineAlpha + +@Composable +fun SkeletonSlider( + modifier: Modifier = Modifier, +) { + val contentColor = LocalContentColor.current + .combineAlpha(DisabledEmphasisAlpha) + Box( + modifier = modifier + .padding( + vertical = 14.dp, + ) + .heightIn(min = 20.dp) + .widthIn(min = 30.dp) + .shimmer() + .clip(MaterialTheme.shapes.medium) + .background(contentColor), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonSwitch.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonSwitch.kt new file mode 100644 index 00000000..9e9d81dd --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonSwitch.kt @@ -0,0 +1,33 @@ +package com.artemchep.keyguard.ui.skeleton + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.heightIn +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.widthIn +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.shimmer.shimmer +import com.artemchep.keyguard.ui.theme.combineAlpha + +@Composable +fun SkeletonSwitch( + modifier: Modifier = Modifier, +) { + val contentColor = LocalContentColor.current + .combineAlpha(DisabledEmphasisAlpha) + Box( + modifier = modifier + .padding(4.dp) + .heightIn(min = 20.dp) + .widthIn(min = 34.dp) + .shimmer() + .clip(MaterialTheme.shapes.medium) + .background(contentColor), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonText.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonText.kt new file mode 100644 index 00000000..0eff7b25 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonText.kt @@ -0,0 +1,44 @@ +package com.artemchep.keyguard.ui.skeleton + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.LocalTextStyle +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.isSpecified +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.ui.DefaultEmphasisAlpha +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.shimmer.shimmer +import com.artemchep.keyguard.ui.theme.combineAlpha + +@Composable +fun SkeletonText( + modifier: Modifier = Modifier, + style: TextStyle = LocalTextStyle.current, + emphasis: Float = DefaultEmphasisAlpha, +) { + val contentColor = run { + val color = style.color.takeIf { it.isSpecified } ?: LocalContentColor.current + color.combineAlpha(DisabledEmphasisAlpha * emphasis) + } + val density = LocalDensity.current + val height = with(density) { + style.lineHeight.toDp() + } + Box( + modifier + .shimmer() + .height(height) + .padding(vertical = 2.dp) + .clip(MaterialTheme.shapes.medium) + .background(contentColor), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonTextField.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonTextField.kt new file mode 100644 index 00000000..061febea --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/skeleton/SkeletonTextField.kt @@ -0,0 +1,29 @@ +package com.artemchep.keyguard.ui.skeleton + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.height +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.shimmer.shimmer +import com.artemchep.keyguard.ui.theme.combineAlpha + +@Composable +fun SkeletonTextField( + modifier: Modifier = Modifier, +) { + val contentColor = LocalContentColor.current + .combineAlpha(DisabledEmphasisAlpha) + Box( + modifier + .shimmer() + .height(64.dp) + .clip(MaterialTheme.shapes.large) + .background(contentColor), + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/tabs/CallsTabs.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/tabs/CallsTabs.kt new file mode 100644 index 00000000..3ecafe03 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/tabs/CallsTabs.kt @@ -0,0 +1,19 @@ +package com.artemchep.keyguard.ui.tabs + +import com.artemchep.keyguard.res.Res +import dev.icerock.moko.resources.StringResource + +enum class CallsTabs( + override val title: StringResource, +) : TabItem { + RECENTS( + title = Res.strings.ciphers_recently_opened, + ), + FAVORITES( + title = Res.strings.ciphers_often_opened, + ); + + companion object { + val default get() = RECENTS + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/tabs/SegmentedTabs.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/tabs/SegmentedTabs.kt new file mode 100644 index 00000000..5feb07ac --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/tabs/SegmentedTabs.kt @@ -0,0 +1,171 @@ +package com.artemchep.keyguard.ui.tabs + +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.animateColorAsState +import androidx.compose.animation.expandHorizontally +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.animation.scaleIn +import androidx.compose.animation.scaleOut +import androidx.compose.animation.shrinkHorizontally +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Check +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.ProvideTextStyle +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.State +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.alpha +import androidx.compose.ui.draw.clip +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.ui.DisabledEmphasisAlpha +import com.artemchep.keyguard.ui.theme.selectedContainer +import com.artemchep.keyguard.ui.util.DividerColor +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.collections.immutable.ImmutableList + +@Composable +fun SegmentedButtonGroup( + tabState: State, + tabs: ImmutableList, + onClick: (T) -> Unit, + modifier: Modifier = Modifier, +) { + val updatedOnClick by rememberUpdatedState(onClick) + SegmentedButtonGroup( + modifier = modifier, + ) { + tabs.forEachIndexed { index, tab -> + if (index > 0) { + SegmentedButtonDivider() + } + + val selectedState = remember(tabState, tab) { + derivedStateOf { + tabState.value == tab + } + } + SegmentedButtonItem( + modifier = Modifier + .weight(1f), + selectedProvider = { + selectedState.value + }, + onClick = { + updatedOnClick.invoke(tab) + }, + ) { + Text( + text = stringResource(tab.title), + maxLines = 1, + overflow = TextOverflow.Ellipsis, + ) + } + } + } +} + +@Composable +fun SegmentedButtonGroup( + modifier: Modifier = Modifier, + content: @Composable RowScope.() -> Unit, +) { + Box( + modifier = modifier + .height(40.dp), + ) { + Row( + modifier = Modifier + .clip(CircleShape) + .fillMaxHeight(), + ) { + content() + } + Box( + modifier = Modifier + .border(1.dp, DividerColor, CircleShape) + .matchParentSize(), + ) + } +} + +@Composable +fun SegmentedButtonDivider( + modifier: Modifier = Modifier, +) { + Box( + modifier = modifier + .fillMaxHeight() + .width(1.dp) + .background(MaterialTheme.colorScheme.outlineVariant), + ) +} + +@Composable +fun SegmentedButtonItem( + selectedProvider: () -> Boolean, + modifier: Modifier = Modifier, + onClick: (() -> Unit)? = null, + content: @Composable () -> Unit, +) { + val updatedOnClick by rememberUpdatedState(onClick) + + val selected = selectedProvider() + val backgroundTarget = run { + val bg = MaterialTheme.colorScheme.selectedContainer + if (selected) bg else bg.copy(alpha = 0f) + } + val background = animateColorAsState(backgroundTarget, label = "BackgroundColor") + Row( + modifier = modifier + .fillMaxHeight() + .background(background.value) + .alpha(if (updatedOnClick != null) 1f else DisabledEmphasisAlpha) + .clickable(enabled = updatedOnClick != null) { + updatedOnClick?.invoke() + } + .padding(horizontal = 4.dp), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.Center, + ) { + AnimatedVisibility( + selected, + enter = fadeIn() + expandHorizontally() + scaleIn(), + exit = fadeOut() + shrinkHorizontally() + scaleOut(), + ) { + Icon( + modifier = Modifier + .padding(end = 8.dp) + .size(18.dp), + imageVector = Icons.Outlined.Check, + contentDescription = null, + ) + } + ProvideTextStyle( + MaterialTheme.typography.labelLarge, + ) { + content() + } + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/tabs/TabItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/tabs/TabItem.kt new file mode 100644 index 00000000..b731e800 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/tabs/TabItem.kt @@ -0,0 +1,7 @@ +package com.artemchep.keyguard.ui.tabs + +import dev.icerock.moko.resources.StringResource + +interface TabItem { + val title: StringResource +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/text/AnnotatedResource.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/text/AnnotatedResource.kt new file mode 100644 index 00000000..eeff24e5 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/text/AnnotatedResource.kt @@ -0,0 +1,72 @@ +package com.artemchep.keyguard.ui.text + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.SpanStyle +import androidx.compose.ui.text.buildAnnotatedString +import androidx.compose.ui.text.withStyle +import com.artemchep.keyguard.feature.navigation.state.TranslatorScope +import dev.icerock.moko.resources.StringResource +import dev.icerock.moko.resources.compose.stringResource +import java.util.UUID + +@Composable +fun annotatedResource( + resource: StringResource, + vararg args: Pair, +): AnnotatedString { + // Generate a bunch of placeholders to use as + // arguments. Later, we will replace those with + // actual values. + val placeholders = remember { + Array(args.size) { UUID.randomUUID().toString() } + } + val value = stringResource(resource, *placeholders) + return remember(value) { + rebuild( + value, + placeholders = placeholders, + args = args, + ) + } +} + +fun TranslatorScope.annotate( + resource: StringResource, + vararg args: Pair, +): AnnotatedString { + // Generate a bunch of placeholders to use as + // arguments. Later, we will replace those with + // actual values. + val placeholders = + Array(args.size) { UUID.randomUUID().toString() } + val value = translate(resource, *placeholders) + return rebuild( + value, + placeholders = placeholders, + args = args, + ) +} + +private fun rebuild( + source: String, + placeholders: Array, + args: Array>, +) = buildAnnotatedString { + var from = 0 + placeholders.forEachIndexed { pIndex, p -> + val i = source.indexOf(p) + if (i == -1) { + // Skip, should not happen. + return@forEachIndexed + } + append(source.substring(from, i)) + val entry = args[pIndex] + withStyle(style = entry.second) { + append(entry.first.toString()) + } + from = i + p.length + } + append(source.substring(from)) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/Color.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/Color.kt new file mode 100644 index 00000000..95044688 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/Color.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.ui.theme + +import androidx.compose.ui.graphics.Color + +fun Color.combineAlpha(alpha: Float) = copy(alpha = this.alpha * alpha) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/Dimen.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/Dimen.kt new file mode 100644 index 00000000..ee5f1658 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/Dimen.kt @@ -0,0 +1,41 @@ +package com.artemchep.keyguard.ui.theme + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.ReadOnlyComposable +import androidx.compose.runtime.staticCompositionLocalOf +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp + +internal val Dimens + @Composable + @ReadOnlyComposable + get() = LocalDimens.current + +internal val LocalDimens = staticCompositionLocalOf { + Dimen.normal() +} + +data class Dimen( + val verticalPadding: Dp, + val horizontalPadding: Dp, + val topPaddingCaption: Dp, + val buttonIconPadding: Dp = 12.dp, +) { + companion object { + fun normal() = Dimen( + verticalPadding = 16.dp, + horizontalPadding = 16.dp, + topPaddingCaption = 8.dp, + ) + + fun compact() = Dimen( + verticalPadding = 16.dp, + horizontalPadding = 8.dp, + topPaddingCaption = 8.dp, + ) + } +} + +val Dimen.horizontalPaddingHalf get() = horizontalPadding / 2 + +val Dimen.horizontalPaddingFourth get() = horizontalPadding / 4 diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/Theme.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/Theme.kt new file mode 100644 index 00000000..bda17852 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/Theme.kt @@ -0,0 +1,377 @@ +package com.artemchep.keyguard.ui.theme + +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.material.darkColors +import androidx.compose.material.lightColors +import androidx.compose.material3.ColorScheme +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Typography +import androidx.compose.runtime.Composable +import androidx.compose.runtime.ReadOnlyComposable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.compositeOver +import androidx.compose.ui.graphics.luminance +import androidx.compose.ui.text.font.FontFamily +import com.artemchep.keyguard.common.model.AppColors +import com.artemchep.keyguard.common.model.AppFont +import com.artemchep.keyguard.common.model.AppTheme +import com.artemchep.keyguard.common.usecase.GetColors +import com.artemchep.keyguard.common.usecase.GetFont +import com.artemchep.keyguard.common.usecase.GetTheme +import com.artemchep.keyguard.common.usecase.GetThemeUseAmoledDark +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.theme.monet.ColorSchemeFactory +import com.artemchep.keyguard.ui.theme.monet.darkMonetCompatScheme +import com.artemchep.keyguard.ui.theme.monet.lightMonetCompatScheme +import dev.icerock.moko.resources.compose.fontFamilyResource +import dev.kdrag0n.colorkt.rgb.LinearSrgb +import org.kodein.di.compose.rememberInstance + +val ColorScheme.selectedContainer + @ReadOnlyComposable + get() = secondaryContainer + +val ColorScheme.onSelectedContainer + @ReadOnlyComposable + get() = onSecondaryContainer + +val ColorScheme.badgeContainer + @ReadOnlyComposable + get() = tertiaryContainer + +private const val HUE_ERROR = 0f +private const val HUE_WARNING = 55f +private const val HUE_INFO = 210f +private const val HUE_OK = 120f + +/** + * Returns `true` if the color scheme is dark or + * black, `false` otherwise. + */ +val ColorScheme.isDark + @ReadOnlyComposable + get() = background.luminance() < 0.5f + +inline val ColorScheme.searchHighlightBackgroundColor get() = tertiaryContainer + +inline val ColorScheme.searchHighlightContentColor get() = onTertiaryContainer + +// We use this property to replace the error +// of the color scheme. +@Suppress("ObjectPropertyName") +private val ColorScheme._error: Color + @Composable + get() = buildContentColor(HUE_ERROR) + +val ColorScheme.warning: Color + @Composable + get() = buildContentColor(HUE_WARNING) + +val ColorScheme.warningVariant: Color + @Composable + get() = warning + +val ColorScheme.info: Color + @Composable + get() = buildContentColor(HUE_INFO) + +val ColorScheme.infoVariant: Color + @Composable + get() = info + +val ColorScheme.ok: Color + @Composable + get() = buildContentColor(HUE_OK) + +val ColorScheme.okVariant: Color + @Composable + get() = ok + +@Composable +private fun ColorScheme.buildContentColor( + hue: Float, +): Color { + val isDark = isDark + val color = remember(isDark) { + buildContentColor( + hue = hue, + onDark = isDark, + ) + } + return color +} + +private fun buildContentColor( + hue: Float, + onDark: Boolean, +): Color { + val saturation: Float + val lightness: Float + if (onDark) { + saturation = 0.72f // saturation + lightness = 0.86f // value + } else { + saturation = 0.96f // saturation + lightness = 0.80f // value + } + return Color.hsv( + hue = hue, + saturation = saturation, + value = lightness, + ) +} + +// We use this property to replace the error container +// of the color scheme. +@Suppress("ObjectPropertyName") +private val ColorScheme._errorContainer: Color + @Composable + get() = buildContainerColor(HUE_ERROR) + +// We use this property to replace the error container +// of the color scheme. +@Suppress("ObjectPropertyName") +private val ColorScheme._onErrorContainer: Color + @Composable + get() = onSurfaceVariant + +val ColorScheme.warningContainer: Color + @Composable + get() = buildContainerColor(HUE_WARNING) + +val ColorScheme.warningContainerVariant: Color + @Composable + get() = buildContainerColor(HUE_WARNING) + +val ColorScheme.onWarningContainer + @Composable + get() = buildOnContainerColor(HUE_WARNING) + +val ColorScheme.infoContainer: Color + @Composable + get() = buildContainerColor(HUE_INFO) + +val ColorScheme.infoContainerVariant: Color + @Composable + get() = buildContainerColor(HUE_INFO) + +val ColorScheme.onInfoContainer + @Composable + get() = buildOnContainerColor(HUE_INFO) + +val ColorScheme.okContainer: Color + @Composable + get() = buildContainerColor(HUE_OK) + +val ColorScheme.okContainerVariant: Color + @Composable + get() = buildContainerColor(HUE_OK) + +val ColorScheme.onOkContainer + @Composable + get() = buildOnContainerColor(HUE_OK) + +@Composable +private fun ColorScheme.buildContainerColor( + hue: Float, +): Color { + val tint = Color.hsv( + hue = hue, + saturation = 1f, + value = 1f, + ) + val backgroundColor = if (isDark) { + surfaceVariant + } else { + surfaceVariant + } + return tint + .copy(alpha = 0.20f) + .compositeOver(backgroundColor) +} + +@Composable +private fun ColorScheme.buildOnContainerColor( + hue: Float, +): Color { + val isDark = isDark + val color = remember(isDark) { + buildOnContainerColor( + hue = hue, + onDark = isDark, + ) + } + return color +} + +private fun buildOnContainerColor( + hue: Float, + onDark: Boolean, +): Color { + val saturation: Float + val lightness: Float + if (onDark) { + saturation = 0.1f // saturation + lightness = 0.9f // value + } else { + saturation = 0.2f // saturation + lightness = 0.2f // value + } + return Color.hsv( + hue = hue, + saturation = saturation, + value = lightness, + ) +} + +val monoFontFamily: FontFamily + @Composable + get() = robotoMonoFontFamily + +val sansFontFamily: FontFamily + @Composable + get() = robotoSansFontFamily + +val robotoMonoFontFamily: FontFamily + @Composable + get() = fontFamilyResource(Res.fonts.RobotoMono.robotoMono) + +val robotoSansFontFamily: FontFamily + @Composable + get() { + val getFont by rememberInstance() + val font = remember(getFont) { + getFont() + }.collectAsState(null) + val res = when (font.value) { + AppFont.ROBOTO -> Res.fonts.Roboto.regular + AppFont.NOTO -> Res.fonts.NotoSans.regular + AppFont.ATKINSON_HYPERLEGIBLE -> Res.fonts.AtkinsonHyperlegible.regular + null -> Res.fonts.Roboto.regular + } + return fontFamilyResource(res) + } + +@Composable +fun KeyguardTheme( + content: @Composable () -> Unit, +) { + val getTheme by rememberInstance() + val getThemeUseAmoledDark by rememberInstance() + val getColors by rememberInstance() + val theme by remember(getTheme) { + getTheme() + }.collectAsState(initial = null) + val themeBlack by remember(getThemeUseAmoledDark) { + getThemeUseAmoledDark() + }.collectAsState(initial = false) + val colors by remember(getColors) { + getColors() + }.collectAsState(initial = null) + val isDarkColorScheme = when (theme) { + AppTheme.DARK -> true + AppTheme.LIGHT -> false + null -> isSystemInDarkTheme() + } + + val scheme = kotlin.run { + val scheme = appColorScheme( + colors = colors, + isDarkColorScheme = isDarkColorScheme, + ) + scheme.copy( + errorContainer = scheme._errorContainer, + onErrorContainer = scheme._onErrorContainer, + error = scheme._error, + background = if (themeBlack && isDarkColorScheme) Color.Black else scheme.background, + surface = if (themeBlack && isDarkColorScheme) Color.Black else scheme.surface, + ) + } + + val getFont by rememberInstance() + val font = remember(getFont) { + getFont() + }.collectAsState(null) + + val typography = if (font.value == null) { + Typography() + } else { + val defaultTypography = Typography() + Typography( + displayLarge = defaultTypography.displayLarge.copy(fontFamily = sansFontFamily), + displayMedium = defaultTypography.displayMedium.copy(fontFamily = sansFontFamily), + displaySmall = defaultTypography.displaySmall.copy(fontFamily = sansFontFamily), + + headlineLarge = defaultTypography.headlineLarge.copy(fontFamily = sansFontFamily), + headlineMedium = defaultTypography.headlineMedium.copy(fontFamily = sansFontFamily), + headlineSmall = defaultTypography.headlineSmall.copy(fontFamily = sansFontFamily), + + titleLarge = defaultTypography.titleLarge.copy(fontFamily = sansFontFamily), + titleMedium = defaultTypography.titleMedium.copy(fontFamily = sansFontFamily), + titleSmall = defaultTypography.titleSmall.copy(fontFamily = sansFontFamily), + + bodyLarge = defaultTypography.bodyLarge.copy(fontFamily = sansFontFamily), + bodyMedium = defaultTypography.bodyMedium.copy(fontFamily = sansFontFamily), + bodySmall = defaultTypography.bodySmall.copy(fontFamily = sansFontFamily), + + labelLarge = defaultTypography.labelLarge.copy(fontFamily = sansFontFamily), + labelMedium = defaultTypography.labelMedium.copy(fontFamily = sansFontFamily), + labelSmall = defaultTypography.labelSmall.copy(fontFamily = sansFontFamily), + ) + } + MaterialTheme( + colorScheme = scheme, + typography = typography, + ) { + SystemUiThemeEffect() + + androidx.compose.material.MaterialTheme( + colors = (if (isDarkColorScheme) darkColors() else lightColors()) + .copy( + primary = scheme.primary, + onPrimary = scheme.onPrimary, + secondary = scheme.secondary, + onSecondary = scheme.onSecondary, + ), + ) { + content() + } + } +} + +@Composable +private fun appColorScheme( + colors: AppColors?, + isDarkColorScheme: Boolean, +): ColorScheme = colors?.let { c -> + runCatching { + val palette = run { + val tempColor = Color(c.color) + val primaryColor = LinearSrgb( + r = tempColor.red.toDouble(), + g = tempColor.green.toDouble(), + b = tempColor.blue.toDouble(), + ) + ColorSchemeFactory.getFactory().getColor(primaryColor) + } + if (isDarkColorScheme) palette.darkMonetCompatScheme() else palette.lightMonetCompatScheme() + }.getOrNull() +} ?: run { + if (isDarkColorScheme) { + appDynamicDarkColorScheme() + } else { + appDynamicLightColorScheme() + } +} + +@Composable +expect fun appDynamicDarkColorScheme(): ColorScheme + +@Composable +expect fun appDynamicLightColorScheme(): ColorScheme + +@Composable +expect fun SystemUiThemeEffect() diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/m3/Palette.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/m3/Palette.kt new file mode 100644 index 00000000..bc340915 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/m3/Palette.kt @@ -0,0 +1,192 @@ +/* + * Copyright 2021 The Android 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. + */ +package com.artemchep.keyguard.ui.theme.m3 + +import androidx.compose.ui.graphics.Color + +internal object Palette { + val Black = Color(red = 0, green = 0, blue = 0) + val Blue0 = Color(red = 0, green = 0, blue = 0) + val Blue10 = Color(red = 4, green = 30, blue = 73) + val Blue100 = Color(red = 255, green = 255, blue = 255) + val Blue20 = Color(red = 6, green = 46, blue = 111) + val Blue30 = Color(red = 8, green = 66, blue = 160) + val Blue40 = Color(red = 11, green = 87, blue = 208) + val Blue50 = Color(red = 27, green = 110, blue = 243) + val Blue60 = Color(red = 76, green = 141, blue = 246) + val Blue70 = Color(red = 124, green = 172, blue = 248) + val Blue80 = Color(red = 168, green = 199, blue = 250) + val Blue90 = Color(red = 211, green = 227, blue = 253) + val Blue95 = Color(red = 236, green = 243, blue = 254) + val Blue99 = Color(red = 250, green = 251, blue = 255) + val BlueVariant0 = Color(red = 0, green = 0, blue = 0) + val BlueVariant10 = Color(red = 0, green = 29, blue = 53) + val BlueVariant100 = Color(red = 255, green = 255, blue = 255) + val BlueVariant20 = Color(red = 0, green = 51, blue = 85) + val BlueVariant30 = Color(red = 0, green = 74, blue = 119) + val BlueVariant40 = Color(red = 0, green = 99, blue = 155) + val BlueVariant50 = Color(red = 4, green = 125, blue = 183) + val BlueVariant60 = Color(red = 57, green = 152, blue = 211) + val BlueVariant70 = Color(red = 90, green = 179, blue = 240) + val BlueVariant80 = Color(red = 127, green = 207, blue = 255) + val BlueVariant90 = Color(red = 194, green = 231, blue = 255) + val BlueVariant95 = Color(red = 223, green = 243, blue = 255) + val BlueVariant99 = Color(red = 247, green = 252, blue = 255) + val Error0 = Color(red = 0, green = 0, blue = 0) + val Error10 = Color(red = 65, green = 14, blue = 11) + val Error100 = Color(red = 255, green = 255, blue = 255) + val Error20 = Color(red = 96, green = 20, blue = 16) + val Error30 = Color(red = 140, green = 29, blue = 24) + val Error40 = Color(red = 179, green = 38, blue = 30) + val Error50 = Color(red = 220, green = 54, blue = 46) + val Error60 = Color(red = 228, green = 105, blue = 98) + val Error70 = Color(red = 236, green = 146, blue = 142) + val Error80 = Color(red = 242, green = 184, blue = 181) + val Error90 = Color(red = 249, green = 222, blue = 220) + val Error95 = Color(red = 252, green = 238, blue = 238) + val Error99 = Color(red = 255, green = 251, blue = 249) + val Green0 = Color(red = 0, green = 0, blue = 0) + val Green10 = Color(red = 7, green = 39, blue = 17) + val Green100 = Color(red = 255, green = 255, blue = 255) + val Green20 = Color(red = 10, green = 56, blue = 24) + val Green30 = Color(red = 15, green = 82, blue = 35) + val Green40 = Color(red = 20, green = 108, blue = 46) + val Green50 = Color(red = 25, green = 134, blue = 57) + val Green60 = Color(red = 30, green = 164, blue = 70) + val Green70 = Color(red = 55, green = 190, blue = 95) + val Green80 = Color(red = 109, green = 213, blue = 140) + val Green90 = Color(red = 196, green = 238, blue = 208) + val Green95 = Color(red = 231, green = 248, blue = 237) + val Green99 = Color(red = 242, green = 255, blue = 238) + val Grey0 = Color(red = 0, green = 0, blue = 0) + val Grey10 = Color(red = 31, green = 31, blue = 31) + val Grey100 = Color(red = 255, green = 255, blue = 255) + val Grey20 = Color(red = 48, green = 48, blue = 48) + val Grey30 = Color(red = 71, green = 71, blue = 71) + val Grey40 = Color(red = 94, green = 94, blue = 94) + val Grey50 = Color(red = 117, green = 117, blue = 117) + val Grey60 = Color(red = 143, green = 143, blue = 143) + val Grey70 = Color(red = 171, green = 171, blue = 171) + val Grey80 = Color(red = 199, green = 199, blue = 199) + val Grey90 = Color(red = 227, green = 227, blue = 227) + val Grey95 = Color(red = 242, green = 242, blue = 242) + val Grey99 = Color(red = 253, green = 252, blue = 251) + val GreyVariant0 = Color(red = 0, green = 0, blue = 0) + val GreyVariant10 = Color(red = 25, green = 29, blue = 28) + val GreyVariant100 = Color(red = 255, green = 255, blue = 255) + val GreyVariant20 = Color(red = 45, green = 49, blue = 47) + val GreyVariant30 = Color(red = 68, green = 71, blue = 70) + val GreyVariant40 = Color(red = 92, green = 95, blue = 94) + val GreyVariant50 = Color(red = 116, green = 119, blue = 117) + val GreyVariant60 = Color(red = 142, green = 145, blue = 143) + val GreyVariant70 = Color(red = 169, green = 172, blue = 170) + val GreyVariant80 = Color(red = 196, green = 199, blue = 197) + val GreyVariant90 = Color(red = 225, green = 227, blue = 225) + val GreyVariant95 = Color(red = 239, green = 242, blue = 239) + val GreyVariant99 = Color(red = 250, green = 253, blue = 251) + val Neutral0 = Color(red = 0, green = 0, blue = 0) + val Neutral10 = Color(red = 28, green = 27, blue = 31) + val Neutral100 = Color(red = 255, green = 255, blue = 255) + val Neutral20 = Color(red = 49, green = 48, blue = 51) + val Neutral30 = Color(red = 72, green = 70, blue = 73) + val Neutral40 = Color(red = 96, green = 93, blue = 98) + val Neutral50 = Color(red = 120, green = 117, blue = 121) + val Neutral60 = Color(red = 147, green = 144, blue = 148) + val Neutral70 = Color(red = 174, green = 170, blue = 174) + val Neutral80 = Color(red = 201, green = 197, blue = 202) + val Neutral90 = Color(red = 230, green = 225, blue = 229) + val Neutral95 = Color(red = 244, green = 239, blue = 244) + val Neutral99 = Color(red = 255, green = 251, blue = 254) + val NeutralVariant0 = Color(red = 0, green = 0, blue = 0) + val NeutralVariant10 = Color(red = 29, green = 26, blue = 34) + val NeutralVariant100 = Color(red = 255, green = 255, blue = 255) + val NeutralVariant20 = Color(red = 50, green = 47, blue = 55) + val NeutralVariant30 = Color(red = 73, green = 69, blue = 79) + val NeutralVariant40 = Color(red = 96, green = 93, blue = 102) + val NeutralVariant50 = Color(red = 121, green = 116, blue = 126) + val NeutralVariant60 = Color(red = 147, green = 143, blue = 153) + val NeutralVariant70 = Color(red = 174, green = 169, blue = 180) + val NeutralVariant80 = Color(red = 202, green = 196, blue = 208) + val NeutralVariant90 = Color(red = 231, green = 224, blue = 236) + val NeutralVariant95 = Color(red = 245, green = 238, blue = 250) + val NeutralVariant99 = Color(red = 255, green = 251, blue = 254) + val Primary0 = Color(red = 0, green = 0, blue = 0) + val Primary10 = Color(red = 33, green = 0, blue = 93) + val Primary100 = Color(red = 255, green = 255, blue = 255) + val Primary20 = Color(red = 56, green = 30, blue = 114) + val Primary30 = Color(red = 79, green = 55, blue = 139) + val Primary40 = Color(red = 103, green = 80, blue = 164) + val Primary50 = Color(red = 127, green = 103, blue = 190) + val Primary60 = Color(red = 154, green = 130, blue = 219) + val Primary70 = Color(red = 182, green = 157, blue = 248) + val Primary80 = Color(red = 208, green = 188, blue = 255) + val Primary90 = Color(red = 234, green = 221, blue = 255) + val Primary95 = Color(red = 246, green = 237, blue = 255) + val Primary99 = Color(red = 255, green = 251, blue = 254) + val Red0 = Color(red = 0, green = 0, blue = 0) + val Red10 = Color(red = 65, green = 14, blue = 11) + val Red100 = Color(red = 255, green = 255, blue = 255) + val Red20 = Color(red = 96, green = 20, blue = 16) + val Red30 = Color(red = 140, green = 29, blue = 24) + val Red40 = Color(red = 179, green = 38, blue = 30) + val Red50 = Color(red = 220, green = 54, blue = 46) + val Red60 = Color(red = 228, green = 105, blue = 98) + val Red70 = Color(red = 236, green = 146, blue = 142) + val Red80 = Color(red = 242, green = 184, blue = 181) + val Red90 = Color(red = 249, green = 222, blue = 220) + val Red95 = Color(red = 252, green = 238, blue = 238) + val Red99 = Color(red = 255, green = 251, blue = 249) + val Secondary0 = Color(red = 0, green = 0, blue = 0) + val Secondary10 = Color(red = 29, green = 25, blue = 43) + val Secondary100 = Color(red = 255, green = 255, blue = 255) + val Secondary20 = Color(red = 51, green = 45, blue = 65) + val Secondary30 = Color(red = 74, green = 68, blue = 88) + val Secondary40 = Color(red = 98, green = 91, blue = 113) + val Secondary50 = Color(red = 122, green = 114, blue = 137) + val Secondary60 = Color(red = 149, green = 141, blue = 165) + val Secondary70 = Color(red = 176, green = 167, blue = 192) + val Secondary80 = Color(red = 204, green = 194, blue = 220) + val Secondary90 = Color(red = 232, green = 222, blue = 248) + val Secondary95 = Color(red = 246, green = 237, blue = 255) + val Secondary99 = Color(red = 255, green = 251, blue = 254) + val Tertiary0 = Color(red = 0, green = 0, blue = 0) + val Tertiary10 = Color(red = 49, green = 17, blue = 29) + val Tertiary100 = Color(red = 255, green = 255, blue = 255) + val Tertiary20 = Color(red = 73, green = 37, blue = 50) + val Tertiary30 = Color(red = 99, green = 59, blue = 72) + val Tertiary40 = Color(red = 125, green = 82, blue = 96) + val Tertiary50 = Color(red = 152, green = 105, blue = 119) + val Tertiary60 = Color(red = 181, green = 131, blue = 146) + val Tertiary70 = Color(red = 210, green = 157, blue = 172) + val Tertiary80 = Color(red = 239, green = 184, blue = 200) + val Tertiary90 = Color(red = 255, green = 216, blue = 228) + val Tertiary95 = Color(red = 255, green = 236, blue = 241) + val Tertiary99 = Color(red = 255, green = 251, blue = 250) + val White = Color(red = 255, green = 255, blue = 255) + val Yellow0 = Color(red = 0, green = 0, blue = 0) + val Yellow10 = Color(red = 66, green = 31, blue = 0) + val Yellow100 = Color(red = 255, green = 255, blue = 255) + val Yellow20 = Color(red = 86, green = 45, blue = 0) + val Yellow30 = Color(red = 117, green = 66, blue = 0) + val Yellow40 = Color(red = 148, green = 87, blue = 0) + val Yellow50 = Color(red = 178, green = 108, blue = 0) + val Yellow60 = Color(red = 214, green = 132, blue = 0) + val Yellow70 = Color(red = 240, green = 157, blue = 0) + val Yellow80 = Color(red = 255, green = 187, blue = 41) + val Yellow90 = Color(red = 255, green = 223, blue = 153) + val Yellow95 = Color(red = 255, green = 240, blue = 209) + val Yellow99 = Color(red = 255, green = 251, blue = 240) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/m3/Theme.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/m3/Theme.kt new file mode 100644 index 00000000..590993d1 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/m3/Theme.kt @@ -0,0 +1,149 @@ +package com.artemchep.keyguard.ui.theme.m3 + +import androidx.compose.material.Colors +import androidx.compose.material.darkColors +import androidx.compose.material.lightColors +import androidx.compose.ui.graphics.Color + +fun lightColorScheme( + primary: Color = ColorLight.Primary, + onPrimary: Color = ColorLight.OnPrimary, + primaryContainer: Color = ColorLight.PrimaryContainer, + onPrimaryContainer: Color = ColorLight.OnPrimaryContainer, + inversePrimary: Color = ColorLight.InversePrimary, + secondary: Color = ColorLight.Secondary, + onSecondary: Color = ColorLight.OnSecondary, + secondaryContainer: Color = ColorLight.SecondaryContainer, + onSecondaryContainer: Color = ColorLight.OnSecondaryContainer, + tertiary: Color = ColorLight.Tertiary, + onTertiary: Color = ColorLight.OnTertiary, + tertiaryContainer: Color = ColorLight.TertiaryContainer, + onTertiaryContainer: Color = ColorLight.OnTertiaryContainer, + background: Color = ColorLight.Background, + onBackground: Color = ColorLight.OnBackground, + surface: Color = ColorLight.Surface, + onSurface: Color = ColorLight.OnSurface, + surfaceVariant: Color = ColorLight.SurfaceVariant, + onSurfaceVariant: Color = ColorLight.OnSurfaceVariant, + inverseSurface: Color = ColorLight.InverseSurface, + inverseOnSurface: Color = ColorLight.InverseOnSurface, + error: Color = ColorLight.Error, + onError: Color = ColorLight.OnError, + errorContainer: Color = ColorLight.ErrorContainer, + onErrorContainer: Color = ColorLight.OnErrorContainer, + outline: Color = ColorLight.Outline, +): Colors = + lightColors( + primary = primary, + onPrimary = onPrimary, + secondary = secondary, + onSecondary = onSecondary, + background = background, + onBackground = onBackground, + surface = surface, + onSurface = onSurface, + error = error, + onError = onError, + ) + +/** + * Returns a dark Material color scheme. + */ +fun darkColorScheme( + primary: Color = ColorDark.Primary, + onPrimary: Color = ColorDark.OnPrimary, + primaryContainer: Color = ColorDark.PrimaryContainer, + onPrimaryContainer: Color = ColorDark.OnPrimaryContainer, + inversePrimary: Color = ColorDark.InversePrimary, + secondary: Color = ColorDark.Secondary, + onSecondary: Color = ColorDark.OnSecondary, + secondaryContainer: Color = ColorDark.SecondaryContainer, + onSecondaryContainer: Color = ColorDark.OnSecondaryContainer, + tertiary: Color = ColorDark.Tertiary, + onTertiary: Color = ColorDark.OnTertiary, + tertiaryContainer: Color = ColorDark.TertiaryContainer, + onTertiaryContainer: Color = ColorDark.OnTertiaryContainer, + background: Color = ColorDark.Background, + onBackground: Color = ColorDark.OnBackground, + surface: Color = ColorDark.Surface, + onSurface: Color = ColorDark.OnSurface, + surfaceVariant: Color = ColorDark.SurfaceVariant, + onSurfaceVariant: Color = ColorDark.OnSurfaceVariant, + inverseSurface: Color = ColorDark.InverseSurface, + inverseOnSurface: Color = ColorDark.InverseOnSurface, + error: Color = ColorDark.Error, + onError: Color = ColorDark.OnError, + errorContainer: Color = ColorDark.ErrorContainer, + onErrorContainer: Color = ColorDark.OnErrorContainer, + outline: Color = ColorDark.Outline, +): Colors = + darkColors( + primary = primary, + onPrimary = onPrimary, + secondary = secondary, + onSecondary = onSecondary, + background = background, + onBackground = onBackground, + surface = surface, + onSurface = onSurface, + error = error, + onError = onError, + ) + +internal object ColorLight { + val Background = Palette.Neutral95 + val Error = Palette.Error40 + val ErrorContainer = Palette.Error90 + val InverseOnSurface = Palette.Neutral95 + val InversePrimary = Palette.Primary80 + val InverseSurface = Palette.Neutral20 + val OnBackground = Palette.Neutral10 + val OnError = Palette.Error100 + val OnErrorContainer = Palette.Error10 + val OnPrimary = Palette.Primary100 + val OnPrimaryContainer = Palette.Primary10 + val OnSecondary = Palette.Secondary100 + val OnSecondaryContainer = Palette.Secondary10 + val OnSurface = Palette.Neutral10 + val OnSurfaceVariant = Palette.NeutralVariant30 + val OnTertiary = Palette.Tertiary100 + val OnTertiaryContainer = Palette.Tertiary10 + val Outline = Palette.NeutralVariant50 + val Primary = Palette.Primary40 + val PrimaryContainer = Palette.Primary90 + val Secondary = Palette.Secondary40 + val SecondaryContainer = Palette.Secondary90 + val Surface = Palette.Neutral99 + val SurfaceVariant = Palette.NeutralVariant90 + val Tertiary = Palette.Tertiary40 + val TertiaryContainer = Palette.Tertiary90 +} + +internal object ColorDark { + val Background = Palette.Neutral10 + val Error = Palette.Error80 + val ErrorContainer = Palette.Error30 + val InverseOnSurface = Palette.Neutral20 + val InversePrimary = Palette.Primary40 + val InverseSurface = Palette.Neutral90 + val OnBackground = Palette.Neutral90 + val OnError = Palette.Error20 + val OnErrorContainer = Palette.Error80 + val OnPrimary = Palette.Primary20 + val OnPrimaryContainer = Palette.Primary90 + val OnSecondary = Palette.Secondary20 + val OnSecondaryContainer = Palette.Secondary90 + val OnSurface = Palette.Neutral90 + val OnSurfaceVariant = Palette.NeutralVariant80 + val OnTertiary = Palette.Tertiary20 + val OnTertiaryContainer = Palette.Tertiary90 + val Outline = Palette.NeutralVariant60 + val Primary = Palette.Primary80 + val PrimaryContainer = Palette.Primary30 + val Secondary = Palette.Secondary80 + val SecondaryContainer = Palette.Secondary30 + val Surface = Palette.Neutral10 + val SurfaceVariant = Palette.NeutralVariant30 + val Tertiary = Palette.Tertiary80 + val TertiaryContainer = Palette.Tertiary30 +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/monet/ColorSchemeFactory.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/monet/ColorSchemeFactory.kt new file mode 100644 index 00000000..e8ad585b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/monet/ColorSchemeFactory.kt @@ -0,0 +1,67 @@ +package com.artemchep.keyguard.ui.theme.monet + +import dev.kdrag0n.colorkt.Color +import dev.kdrag0n.colorkt.cam.Zcam +import dev.kdrag0n.colorkt.data.Illuminants +import dev.kdrag0n.colorkt.rgb.Srgb +import dev.kdrag0n.colorkt.tristimulus.CieXyzAbs.Companion.toAbs +import dev.kdrag0n.colorkt.ucs.lab.CieLab + +interface ColorSchemeFactory { + fun getColor(color: Color): ColorScheme + + companion object { + fun getFactory( + // For all models + chromaFactor: Double, + accurateShades: Boolean, + useComplementColor: Boolean, + complementColorHex: Int, + // ZCAM only + whiteLuminance: Double, + useLinearLightness: Boolean, + ) = object : ColorSchemeFactory { + private val cond = createZcamViewingConditions(whiteLuminance) + private val complementColor = if (!useComplementColor || complementColorHex == 0) { + null + } else { + Srgb(complementColorHex) + } + + override fun getColor(color: Color) = DynamicColorScheme( + targets = MaterialYouTargets( + chromaFactor = chromaFactor, + useLinearLightness = useLinearLightness, + cond = cond, + ), + seedColor = color, + chromaFactor = chromaFactor, + cond = cond, + accurateShades = accurateShades, + complementColor = complementColor, + ) + } + + fun getFactory() = getFactory( + chromaFactor = 1.0, + accurateShades = true, + useComplementColor = false, + complementColorHex = 0, + whiteLuminance = 425.0, + useLinearLightness = false, + ) + + fun createZcamViewingConditions(whiteLuminance: Double) = Zcam.ViewingConditions( + surroundFactor = Zcam.ViewingConditions.SURROUND_AVERAGE, + // sRGB + adaptingLuminance = 0.4 * whiteLuminance, + // Gray world + backgroundLuminance = CieLab( + L = 50.0, + a = 0.0, + b = 0.0, + ).toXyz().y * whiteLuminance, + referenceWhite = Illuminants.D65.toAbs(whiteLuminance), + ) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/monet/ColorSwatch.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/monet/ColorSwatch.kt new file mode 100644 index 00000000..ebc7abfd --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/monet/ColorSwatch.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.ui.theme.monet + +import dev.kdrag0n.colorkt.Color + +typealias ColorSwatch = Map + +abstract class ColorScheme { + abstract val neutral1: ColorSwatch + abstract val neutral2: ColorSwatch + + abstract val accent1: ColorSwatch + abstract val accent2: ColorSwatch + abstract val accent3: ColorSwatch + + // Helpers + val neutralColors: List + get() = listOf(neutral1, neutral2) + val accentColors: List + get() = listOf(accent1, accent2, accent3) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/monet/DynamicColorScheme.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/monet/DynamicColorScheme.kt new file mode 100644 index 00000000..f51a78c7 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/monet/DynamicColorScheme.kt @@ -0,0 +1,101 @@ +package com.artemchep.keyguard.ui.theme.monet + +import dev.kdrag0n.colorkt.Color +import dev.kdrag0n.colorkt.cam.Zcam +import dev.kdrag0n.colorkt.cam.Zcam.Companion.toZcam +import dev.kdrag0n.colorkt.conversion.ConversionGraph.convert +import dev.kdrag0n.colorkt.gamut.LchGamut +import dev.kdrag0n.colorkt.gamut.LchGamut.clipToLinearSrgb +import dev.kdrag0n.colorkt.rgb.Srgb +import dev.kdrag0n.colorkt.tristimulus.CieXyz +import dev.kdrag0n.colorkt.tristimulus.CieXyzAbs.Companion.toAbs + +class DynamicColorScheme( + targets: ColorScheme, + seedColor: Color, + chromaFactor: Double = 1.0, + private val cond: Zcam.ViewingConditions, + private val accurateShades: Boolean = true, + complementColor: Color? = null, +) : ColorScheme() { + private val seedNeutral = + seedColor.convert().toAbs(cond.referenceWhite.y).toZcam(cond, include2D = false) + .let { lch -> + lch.copy(chroma = lch.chroma * chromaFactor) + } + private val seedAccent = seedNeutral + private val seedAccent3 = seedAccent.copy( + hue = complementColor?.convert() + ?.toAbs(cond.referenceWhite.y) + ?.toZcam(cond, include2D = false)?.hue + ?: (seedAccent.hue + ACCENT3_HUE_SHIFT_DEGREES), + ) + + // Main accent color. Generally, this is close to the seed color. + override val accent1 = transformSwatch(targets.accent1, seedAccent, targets.accent1) + + // Secondary accent color. Darker shades of accent1. + override val accent2 = transformSwatch(targets.accent2, seedAccent, targets.accent1) + + // Tertiary accent color. Seed color shifted to the next secondary color via hue offset. + override val accent3 = transformSwatch(targets.accent3, seedAccent3, targets.accent1) + + // Main background color. Tinted with the seed color. + override val neutral1 = transformSwatch(targets.neutral1, seedNeutral, targets.neutral1) + + // Secondary background color. Slightly tinted with the seed color. + override val neutral2 = transformSwatch(targets.neutral2, seedNeutral, targets.neutral1) + + private fun transformSwatch( + swatch: ColorSwatch, + seed: Zcam, + referenceSwatch: ColorSwatch, + ): ColorSwatch { + return swatch.map { (shade, color) -> + val target = color as? Zcam + ?: color.convert().toAbs(cond.referenceWhite.y) + .toZcam(cond, include2D = false) + val reference = referenceSwatch[shade]!! as? Zcam + ?: color.convert().toAbs(cond.referenceWhite.y) + .toZcam(cond, include2D = false) + val newLch = transformColor(target, seed, reference) + val newSrgb = newLch.convert() + shade to newSrgb + }.toMap() + } + + private fun transformColor(target: Zcam, seed: Zcam, reference: Zcam): Color { + // Keep target lightness. + val lightness = target.lightness + // Allow colorless gray and low-chroma colors by clamping. + // To preserve chroma ratios, scale chroma by the reference (A-1 / N-1). + val scaleC = if (reference.chroma == 0.0) { + // Zero reference chroma won't have chroma anyway, so use 0 to avoid a divide-by-zero + 0.0 + } else { + // Non-zero reference chroma = possible chroma scale + seed.chroma.coerceIn(0.0, reference.chroma) / reference.chroma + } + val chroma = target.chroma * scaleC + // Use the seed color's hue, since it's the most prominent feature of the theme. + val hue = seed.hue + + val newColor = Zcam( + lightness = lightness, + chroma = chroma, + hue = hue, + viewingConditions = cond, + ) + return if (accurateShades) { + newColor.clipToLinearSrgb(LchGamut.ClipMethod.PRESERVE_LIGHTNESS) + } else { + newColor.clipToLinearSrgb(LchGamut.ClipMethod.ADAPTIVE_TOWARDS_MID, alpha = 5.0) + } + } + + companion object { + // Hue shift for the tertiary accent color (accent3), in degrees. + // 60 degrees = shifting by a secondary color + private const val ACCENT3_HUE_SHIFT_DEGREES = 60.0 + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/monet/MaterialYouTargets.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/monet/MaterialYouTargets.kt new file mode 100644 index 00000000..2cf23b5c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/monet/MaterialYouTargets.kt @@ -0,0 +1,130 @@ +package com.artemchep.keyguard.ui.theme.monet + +import dev.kdrag0n.colorkt.Color +import dev.kdrag0n.colorkt.cam.Zcam +import dev.kdrag0n.colorkt.cam.Zcam.Companion.toZcam +import dev.kdrag0n.colorkt.rgb.LinearSrgb.Companion.toLinear +import dev.kdrag0n.colorkt.rgb.Srgb +import dev.kdrag0n.colorkt.tristimulus.CieXyz.Companion.toXyz +import dev.kdrag0n.colorkt.tristimulus.CieXyzAbs.Companion.toAbs +import dev.kdrag0n.colorkt.ucs.lab.CieLab + +/* + * Default target colors, conforming to Material You standards. + * + * Derived from AOSP and Pixel defaults. + */ +class MaterialYouTargets( + private val chromaFactor: Double = 1.0, + useLinearLightness: Boolean, + val cond: Zcam.ViewingConditions, +) : ColorScheme() { + companion object { + // Linear ZCAM lightness + private val LINEAR_LIGHTNESS_MAP = mapOf( + 0 to 100.0, + 10 to 99.0, + 20 to 98.0, + 50 to 95.0, + 100 to 90.0, + 200 to 80.0, + 300 to 70.0, + 400 to 60.0, + 500 to 50.0, + 600 to 40.0, + 650 to 35.0, + 700 to 30.0, + 800 to 20.0, + 900 to 10.0, + 950 to 5.0, + 1000 to 0.0, + ) + + // CIELAB lightness from AOSP defaults + private val CIELAB_LIGHTNESS_MAP = LINEAR_LIGHTNESS_MAP + .map { it.key to if (it.value == 50.0) 49.6 else it.value } + .toMap() + + // Accent colors from Pixel defaults + private val REF_ACCENT1_COLORS = listOf( + 0xd3e3fd, + 0xa8c7fa, + 0x7cacf8, + 0x4c8df6, + 0x1b6ef3, + 0x0b57d0, + 0x0842a0, + 0x062e6f, + 0x041e49, + ) + + private const val ACCENT1_REF_CHROMA_FACTOR = 1.2 + } + + override val neutral1: ColorSwatch + override val neutral2: ColorSwatch + + override val accent1: ColorSwatch + override val accent2: ColorSwatch + override val accent3: ColorSwatch + + init { + val lightnessMap = if (useLinearLightness) { + LINEAR_LIGHTNESS_MAP + } else { + CIELAB_LIGHTNESS_MAP + .map { it.key to cielabL(it.value) } + .toMap() + } + + // Accent chroma from Pixel defaults + // We use the most chromatic color as the reference + // A-1 chroma = avg(default Pixel Blue shades 100-900) + // Excluding very bright variants (10, 50) to avoid light bias + // A-1 > A-3 > A-2 + val accent1Chroma = calcAccent1Chroma() * ACCENT1_REF_CHROMA_FACTOR + val accent2Chroma = accent1Chroma / 3 + val accent3Chroma = accent2Chroma * 2 + + // Custom neutral chroma + val neutral1Chroma = accent1Chroma / 8 + val neutral2Chroma = accent1Chroma / 5 + + neutral1 = shadesWithChroma(neutral1Chroma, lightnessMap) + neutral2 = shadesWithChroma(neutral2Chroma, lightnessMap) + + accent1 = shadesWithChroma(accent1Chroma, lightnessMap) + accent2 = shadesWithChroma(accent2Chroma, lightnessMap) + accent3 = shadesWithChroma(accent3Chroma, lightnessMap) + } + + private fun cielabL(l: Double) = CieLab( + L = l, + a = 0.0, + b = 0.0, + ).toXyz().toAbs(cond.referenceWhite.y).toZcam(cond, include2D = false).lightness + + private fun calcAccent1Chroma() = REF_ACCENT1_COLORS + .map { + Srgb(it).toLinear().toXyz().toAbs(cond.referenceWhite.y) + .toZcam(cond, include2D = false).chroma + } + .average() + + private fun shadesWithChroma( + chroma: Double, + lightnessMap: Map, + ): Map { + // Adjusted chroma + val chromaAdj = chroma * chromaFactor + + return lightnessMap.map { + it.key to Zcam( + lightness = it.value, + chroma = chromaAdj, + hue = 0.0, + viewingConditions = cond, + ) + }.toMap() + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/monet/getMonetNeutralColor.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/monet/getMonetNeutralColor.kt new file mode 100644 index 00000000..28b9efd8 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/theme/monet/getMonetNeutralColor.kt @@ -0,0 +1,144 @@ +package com.artemchep.keyguard.ui.theme.monet + +import androidx.compose.material3.ColorScheme +import androidx.compose.material3.darkColorScheme +import androidx.compose.material3.lightColorScheme +import androidx.compose.ui.graphics.Color +import dev.kdrag0n.colorkt.conversion.ConversionGraph +import dev.kdrag0n.colorkt.rgb.Srgb +import com.artemchep.keyguard.ui.theme.monet.ColorScheme as MonetColorScheme + +/** + * To avoid editing the core Monet code by kdrag0n, these are extensions instead + */ +fun dev.kdrag0n.colorkt.Color.toArgb(): Int { + val srgb = ConversionGraph.convert(this, Srgb::class) as Srgb + return srgb.toRgb8() or (0xFF shl 24) +} + +private fun MonetColorScheme.getMonetNeutralColor( + type: Int, + shade: Int, +): Color { + val monetColor = when (type) { + 1 -> this.neutral1[shade] + else -> this.neutral2[shade] + }?.toArgb() ?: throw Exception("Neutral$type shade $shade doesn't exist") + return Color(monetColor) +} + +private fun MonetColorScheme.getMonetAccentColor( + type: Int, + shade: Int, +): Color { + val monetColor = when (type) { + 1 -> this.accent1[shade] + 2 -> this.accent2[shade] + else -> this.accent3[shade] + }?.toArgb() ?: throw Exception("Accent$type shade $shade doesn't exist") + return Color(monetColor) +} + +/** + * Any values that are not set will be chosen to best represent default values given by [dynamicLightColorScheme][androidx.compose.material3.dynamicLightColorScheme] + * on Android 12+ devices + */ +fun MonetColorScheme.lightMonetCompatScheme( + primary: Color = getMonetAccentColor(1, 700), + onPrimary: Color = getMonetNeutralColor(1, 50), + primaryContainer: Color = getMonetAccentColor(2, 100), + onPrimaryContainer: Color = getMonetAccentColor(1, 900), + inversePrimary: Color = getMonetAccentColor(1, 200), + secondary: Color = getMonetAccentColor(2, 700), + onSecondary: Color = getMonetNeutralColor(1, 50), + secondaryContainer: Color = getMonetAccentColor(2, 100), + onSecondaryContainer: Color = getMonetAccentColor(2, 900), + tertiary: Color = getMonetAccentColor(3, 600), + onTertiary: Color = getMonetNeutralColor(1, 50), + tertiaryContainer: Color = getMonetAccentColor(3, 100), + onTertiaryContainer: Color = getMonetAccentColor(3, 900), + background: Color = getMonetNeutralColor(1, 50), + onBackground: Color = getMonetNeutralColor(1, 900), + surface: Color = getMonetNeutralColor(1, 50), + onSurface: Color = getMonetNeutralColor(1, 900), + surfaceVariant: Color = getMonetNeutralColor(2, 100), + onSurfaceVariant: Color = getMonetNeutralColor(2, 700), + inverseSurface: Color = getMonetNeutralColor(1, 800), + inverseOnSurface: Color = getMonetNeutralColor(2, 50), + outline: Color = getMonetAccentColor(2, 500), +): ColorScheme = lightColorScheme( + primary = primary, + onPrimary = onPrimary, + primaryContainer = primaryContainer, + onPrimaryContainer = onPrimaryContainer, + inversePrimary = inversePrimary, + secondary = secondary, + onSecondary = onSecondary, + secondaryContainer = secondaryContainer, + onSecondaryContainer = onSecondaryContainer, + tertiary = tertiary, + onTertiary = onTertiary, + tertiaryContainer = tertiaryContainer, + onTertiaryContainer = onTertiaryContainer, + background = background, + onBackground = onBackground, + surface = surface, + onSurface = onSurface, + surfaceVariant = surfaceVariant, + onSurfaceVariant = onSurfaceVariant, + inverseSurface = inverseSurface, + inverseOnSurface = inverseOnSurface, + outline = outline, +) + +/** + * Any values that are not set will be chosen to best represent default values given by [dynamicDarkColorScheme][androidx.compose.material3.dynamicDarkColorScheme] + * on Android 12+ devices + */ +fun MonetColorScheme.darkMonetCompatScheme( + primary: Color = getMonetAccentColor(1, 200), + onPrimary: Color = getMonetAccentColor(1, 800), + primaryContainer: Color = getMonetAccentColor(1, 600), + onPrimaryContainer: Color = getMonetAccentColor(2, 100), + inversePrimary: Color = getMonetAccentColor(1, 600), + secondary: Color = getMonetAccentColor(2, 200), + onSecondary: Color = getMonetAccentColor(2, 800), + secondaryContainer: Color = getMonetAccentColor(2, 700), + onSecondaryContainer: Color = getMonetAccentColor(2, 100), + tertiary: Color = getMonetAccentColor(3, 200), + onTertiary: Color = getMonetAccentColor(3, 700), + tertiaryContainer: Color = getMonetAccentColor(3, 700), + onTertiaryContainer: Color = getMonetAccentColor(3, 100), + background: Color = getMonetNeutralColor(1, 900), + onBackground: Color = getMonetNeutralColor(1, 100), + surface: Color = getMonetNeutralColor(1, 900), + onSurface: Color = getMonetNeutralColor(1, 100), + surfaceVariant: Color = getMonetNeutralColor(2, 700), + onSurfaceVariant: Color = getMonetNeutralColor(2, 200), + inverseSurface: Color = getMonetNeutralColor(1, 100), + inverseOnSurface: Color = getMonetNeutralColor(1, 800), + outline: Color = getMonetNeutralColor(2, 500), +): ColorScheme = darkColorScheme( + primary = primary, + onPrimary = onPrimary, + primaryContainer = primaryContainer, + onPrimaryContainer = onPrimaryContainer, + inversePrimary = inversePrimary, + secondary = secondary, + onSecondary = onSecondary, + secondaryContainer = secondaryContainer, + onSecondaryContainer = onSecondaryContainer, + tertiary = tertiary, + onTertiary = onTertiary, + tertiaryContainer = tertiaryContainer, + onTertiaryContainer = onTertiaryContainer, + background = background, + onBackground = onBackground, + surface = surface, + onSurface = onSurface, + surfaceVariant = surfaceVariant, + onSurfaceVariant = onSurfaceVariant, + inverseSurface = inverseSurface, + inverseOnSurface = inverseOnSurface, + outline = outline, +) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/toolbar/CustomToolbar.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/toolbar/CustomToolbar.kt new file mode 100644 index 00000000..bbd3ba7c --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/toolbar/CustomToolbar.kt @@ -0,0 +1,168 @@ +package com.artemchep.keyguard.ui.toolbar + +import androidx.compose.animation.animateColorAsState +import androidx.compose.animation.core.AnimationSpec +import androidx.compose.animation.core.AnimationState +import androidx.compose.animation.core.DecayAnimationSpec +import androidx.compose.animation.core.FastOutLinearInEasing +import androidx.compose.animation.core.Spring +import androidx.compose.animation.core.animateDecay +import androidx.compose.animation.core.animateTo +import androidx.compose.animation.core.spring +import androidx.compose.foundation.gestures.Orientation +import androidx.compose.foundation.gestures.draggable +import androidx.compose.foundation.gestures.rememberDraggableState +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.windowInsetsPadding +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.material3.TopAppBarScrollBehavior +import androidx.compose.material3.TopAppBarState +import androidx.compose.material3.surfaceColorAtElevation +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clipToBounds +import androidx.compose.ui.graphics.lerp +import androidx.compose.ui.layout.onGloballyPositioned +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.unit.Velocity +import androidx.compose.ui.unit.dp +import kotlin.math.abs + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun CustomToolbar( + modifier: Modifier = Modifier, + scrollBehavior: TopAppBarScrollBehavior?, + content: @Composable () -> Unit, +) { + val containerColor = MaterialTheme.colorScheme.surface + val scrolledContainerColor = MaterialTheme.colorScheme.surfaceColorAtElevation( + elevation = 3.0.dp, + ) + val windowInsets = TopAppBarDefaults.windowInsets + + // Obtain the container color from the TopAppBarColors using the `overlapFraction`. This + // ensures that the colors will adjust whether the app bar behavior is pinned or scrolled. + // This may potentially animate or interpolate a transition between the container-color and the + // container's scrolled-color according to the app bar's scroll state. + val colorTransitionFraction = scrollBehavior?.state?.overlappedFraction ?: 0f + val fraction = if (colorTransitionFraction > 0.01f) 1f else 0f + val appBarContainerColor by animateColorAsState( + targetValue = lerp( + containerColor, + scrolledContainerColor, + FastOutLinearInEasing.transform(fraction), + ), + animationSpec = spring(stiffness = Spring.StiffnessMediumLow), + ) + + // Set up support for resizing the top app bar when vertically dragging the bar itself. + val appBarDragModifier = if (scrollBehavior != null && !scrollBehavior.isPinned) { + Modifier.draggable( + orientation = Orientation.Vertical, + state = rememberDraggableState { delta -> + scrollBehavior.state.heightOffset = scrollBehavior.state.heightOffset + delta + }, + onDragStopped = { velocity -> + settleAppBar( + scrollBehavior.state, + velocity, + scrollBehavior.flingAnimationSpec, + scrollBehavior.snapAnimationSpec, + ) + }, + ) + } else { + Modifier + } + + // Compose a Surface with a TopAppBarLayout content. + // The surface's background color is animated as specified above. + // The height of the app bar is determined by subtracting the bar's height offset from the + // app bar's defined constant height value (i.e. the ContainerHeight token). + Surface(modifier = modifier.then(appBarDragModifier), color = appBarContainerColor) { + val height = LocalDensity.current.run { + 64.dp.toPx() + ( + scrollBehavior?.state?.heightOffset + ?: 0f + ) + } + Box( + modifier = Modifier + .windowInsetsPadding(windowInsets) + // clip after padding so we don't know the title over the inset area + .clipToBounds() + .onGloballyPositioned { coordinates -> + // Sets the app bar's height offset to collapse the entire bar's height when content is + // scrolled. + val heightOffsetLimit = -coordinates.size.height.toFloat() + if (scrollBehavior?.state?.heightOffsetLimit != heightOffsetLimit) { + scrollBehavior?.state?.heightOffsetLimit = heightOffsetLimit + } + }, + ) { + content() + } + } +} + +/** + * Settles the app bar by flinging, in case the given velocity is greater than zero, and snapping + * after the fling settles. + */ +@OptIn(ExperimentalMaterial3Api::class) +private suspend fun settleAppBar( + state: TopAppBarState, + velocity: Float, + flingAnimationSpec: DecayAnimationSpec?, + snapAnimationSpec: AnimationSpec?, +): Velocity { + // Check if the app bar is completely collapsed/expanded. If so, no need to settle the app bar, + // and just return Zero Velocity. + // Note that we don't check for 0f due to float precision with the collapsedFraction + // calculation. + if (state.collapsedFraction < 0.01f || state.collapsedFraction == 1f) { + return Velocity.Zero + } + var remainingVelocity = velocity + // In case there is an initial velocity that was left after a previous user fling, animate to + // continue the motion to expand or collapse the app bar. + if (flingAnimationSpec != null && abs(velocity) > 1f) { + var lastValue = 0f + AnimationState( + initialValue = 0f, + initialVelocity = velocity, + ) + .animateDecay(flingAnimationSpec) { + val delta = value - lastValue + val initialHeightOffset = state.heightOffset + state.heightOffset = initialHeightOffset + delta + val consumed = abs(initialHeightOffset - state.heightOffset) + lastValue = value + remainingVelocity = this.velocity + // avoid rounding errors and stop if anything is unconsumed + if (abs(delta - consumed) > 0.5f) this.cancelAnimation() + } + } + // Snap if animation specs were provided. + if (snapAnimationSpec != null) { + if (state.heightOffset < 0 && + state.heightOffset > state.heightOffsetLimit + ) { + AnimationState(initialValue = state.heightOffset).animateTo( + if (state.collapsedFraction < 0.5f) { + 0f + } else { + state.heightOffsetLimit + }, + animationSpec = snapAnimationSpec, + ) { state.heightOffset = value } + } + } + + return Velocity(0f, remainingVelocity) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/toolbar/LargeToolbar.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/toolbar/LargeToolbar.kt new file mode 100644 index 00000000..f1674641 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/toolbar/LargeToolbar.kt @@ -0,0 +1,38 @@ +package com.artemchep.keyguard.ui.toolbar + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.LargeTopAppBar +import androidx.compose.material3.TopAppBarScrollBehavior +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import com.artemchep.keyguard.platform.CurrentPlatform +import com.artemchep.keyguard.platform.Platform + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun LargeToolbar( + title: @Composable () -> Unit, + modifier: Modifier = Modifier, + navigationIcon: @Composable () -> Unit = {}, + actions: @Composable RowScope.() -> Unit = {}, + scrollBehavior: TopAppBarScrollBehavior? = null, +) { + if (CurrentPlatform is Platform.Desktop) { + SmallToolbar( + title = title, + modifier = modifier, + navigationIcon = navigationIcon, + actions = actions, + scrollBehavior = scrollBehavior, + ) + return + } + LargeTopAppBar( + title = title, + modifier = modifier, + navigationIcon = navigationIcon, + actions = actions, + scrollBehavior = scrollBehavior, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/toolbar/SmallToolbar.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/toolbar/SmallToolbar.kt new file mode 100644 index 00000000..3f0ab05b --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/toolbar/SmallToolbar.kt @@ -0,0 +1,26 @@ +package com.artemchep.keyguard.ui.toolbar + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.TopAppBar +import androidx.compose.material3.TopAppBarScrollBehavior +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun SmallToolbar( + title: @Composable () -> Unit, + modifier: Modifier = Modifier, + navigationIcon: @Composable () -> Unit = {}, + actions: @Composable RowScope.() -> Unit = {}, + scrollBehavior: TopAppBarScrollBehavior? = null, +) { + TopAppBar( + title = title, + modifier = modifier, + navigationIcon = navigationIcon, + actions = actions, + scrollBehavior = scrollBehavior, + ) +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/toolbar/content/ContentToolbar.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/toolbar/content/ContentToolbar.kt new file mode 100644 index 00000000..7f89f510 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/toolbar/content/ContentToolbar.kt @@ -0,0 +1,64 @@ +package com.artemchep.keyguard.ui.toolbar.content + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.heightIn +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp + +private val toolbarMinHeight = 64.dp + +@Composable +fun CustomToolbarContent( + modifier: Modifier = Modifier, + title: String, + icon: @Composable () -> Unit = {}, + actions: @Composable () -> Unit = {}, +) { + Row( + modifier = modifier + .heightIn(min = toolbarMinHeight), + verticalAlignment = Alignment.Top, + ) { + Spacer(Modifier.width(4.dp)) + Box( + modifier = Modifier + .heightIn(min = toolbarMinHeight), + contentAlignment = Alignment.Center, + ) { + icon() + } + Spacer(Modifier.width(4.dp)) + Column( + modifier = Modifier + .weight(1f) + .align(Alignment.CenterVertically) + .padding(vertical = 4.dp), + ) { + Text( + text = title, + style = MaterialTheme.typography.titleLarge, + overflow = TextOverflow.Ellipsis, + maxLines = 2, + ) + } + Spacer(Modifier.width(8.dp)) + Box( + modifier = Modifier + .heightIn(min = toolbarMinHeight), + contentAlignment = Alignment.Center, + ) { + actions() + } + Spacer(Modifier.width(4.dp)) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/totp/formatTotp.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/totp/formatTotp.kt new file mode 100644 index 00000000..44aaaf62 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/totp/formatTotp.kt @@ -0,0 +1,50 @@ +package com.artemchep.keyguard.ui.totp + +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.buildAnnotatedString +import com.artemchep.keyguard.common.model.TotpCode +import com.artemchep.keyguard.ui.asCodePointsSequence +import kotlinx.collections.immutable.PersistentList +import kotlinx.collections.immutable.toPersistentList + +fun TotpCode.formatCode(): AnnotatedString = buildAnnotatedString { + code + .windowed( + size = 3, + step = 3, + partialWindows = true, + ) + .forEachIndexed { index, text -> + if (index != 0) { + append(" ") + } + append(text) + } +} + +fun TotpCode.formatCode2(): PersistentList> = code + .windowed( + size = 3, + step = 3, + partialWindows = true, + ) + .map { + it.asCodePointsSequence() + .toList() + } + .toPersistentList() + +fun TotpCode.formatCodeStr(): String = buildString { + code + .windowed( + size = 3, + step = 3, + partialWindows = true, + ) + .forEachIndexed { index, text -> + if (index != 0) { + append(" ") + } + append(text) + } +} diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/util/Divider.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/util/Divider.kt new file mode 100644 index 00000000..5a070a89 --- /dev/null +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/ui/util/Divider.kt @@ -0,0 +1,69 @@ +package com.artemchep.keyguard.ui.util + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.width +import androidx.compose.material3.LocalAbsoluteTonalElevation +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.compositeOver +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.feature.home.vault.component.surfaceColorAtElevation +import com.artemchep.keyguard.ui.theme.combineAlpha + +val DividerColor + @Composable + get() = + LocalContentColor.current.combineAlpha(0.12f) + +val DividerSize get() = 1.dp + +@Composable +fun VerticalDivider( + modifier: Modifier = Modifier, + transparency: Boolean = true, +) { + Divider( + modifier = modifier + .fillMaxHeight() + .width(DividerSize), + transparency = transparency, + ) +} + +@Composable +fun HorizontalDivider( + modifier: Modifier = Modifier, + transparency: Boolean = true, +) = Divider( + modifier = modifier + .fillMaxWidth() + .height(DividerSize), + transparency = transparency, +) + +@Composable +private fun Divider( + modifier: Modifier = Modifier, + transparency: Boolean, +) { + val dividerColor = DividerColor + val backgroundColor = + if (transparency) { + dividerColor + } else { + val elevation = LocalAbsoluteTonalElevation.current + val background = MaterialTheme.colorScheme + .surfaceColorAtElevation(elevation) + dividerColor.compositeOver(background) + } + Box( + modifier = modifier + .background(backgroundColor), + ) +} diff --git a/common/src/commonMain/resources/MR/af-rZA/plurals.xml b/common/src/commonMain/resources/MR/af-rZA/plurals.xml new file mode 100644 index 00000000..5f2db8ad --- /dev/null +++ b/common/src/commonMain/resources/MR/af-rZA/plurals.xml @@ -0,0 +1,2 @@ + + diff --git a/common/src/commonMain/resources/MR/af-rZA/strings.xml b/common/src/commonMain/resources/MR/af-rZA/strings.xml new file mode 100644 index 00000000..214f4486 --- /dev/null +++ b/common/src/commonMain/resources/MR/af-rZA/strings.xml @@ -0,0 +1,868 @@ + + + OK + Close + Yes + No + + Name + Account name + Username + Password + App password + Current password + New password + Email + Verified + Not verified + Email visibility + Public URL + URL + + Access count + Learn more + Phone number + Passport number + License number + Card number + No card number + Brand + Security code + Valid from + Valid to + Card expiry month + Card expiry year + Cardholder name + Valid from + Expiry date + Company + Sync + + Hidden + + Visible + + Empty + + SSN + City + State + Info + Cancel + Continue + Country + Address + Postal code + Pull to search + Save + URI + URIs + Note + Notes + Attachments + No attachments + Expiring soon + Incomplete data + This item is missing some of the important information. + Item + Items + %1$s items + All items + No items + No folder + New folder + Folder + Folders + No folders + No collection + Collection + Collections + No collections + My vault + Organization + Organizations + No organizations + Miscellaneous + Add integration + Account + Accounts + No accounts + No account + Type + Options + Send + Reset + Length + Security + Contact info + Title + First name + Middle name + Last name + Full name + Address line 1 + Address line 2 + Address line 3 + Rename + Select type + Autofill + Passkey + Create a passkey + Unlock Keyguard + Confirming auth request… + Passkeys + + Signature counter + + Relying party + + Discoverable + Username + Display name + API key + Domain + Edit + Delete + Remove + Remove from the history + Reused password + Reused passwords + One-time password + Authenticator key + Use + Save passkey + Passkey available + Two-factor authentication available + Custom + Follow system settings + + Coming soon + Powered by + Verification code + Re-send verification code + Requested a verification email + Web vault + Launch Web vault + + Remember me + + Trash + + Download + Downloads + No downloads + No duplicates + Encryption + + Key + Hash + Salt + 256-bit AES + Random %1$d-bits of data + None + Text + Linked apps + Linked URIs + Custom fields + Reveal a secure note + Hide a secure note + Master password hint + Fingerprint phrase + What is a fingerprint? + Bitwarden premium + Unofficial Bitwarden server + Last synced at %1$s + Change name + Change color + Change master password hint + Sign out + Sign in + Visit Web vault to verify your email address + Upgrade your account to a premium membership and unlock some great additional features + Two-factor authentication + Require login verification with another device such as a security key, authenticator app, SMS or email + Active + Items + Log out + Log out? + All of the not synchronized changes will be lost! + Change name + Change names + Delete folder? + Delete folders? + This item(s) will be deleted immediately. You can not undo this action. + Recently opened + Often opened + View details + Save to + Add to favourites + Remove from favourites + Enable auth re-prompt + Disable auth re-prompt + Edit + Merge into… + Copy to… + Move to folder + Change name + Change names + Add password + Add passwords + Change password + Change passwords + View password history + Trash + Restore + Delete forever + Move associated items to trash + Open with… + Send with… + Open in a file manager + Delete local file + View parent item + Always show keyboard + Sync vault + Lock vault + Rename folder + Check the email in known data breaches + Check the username in known data breaches + Check the password in known data breaches + Check the website in known data breaches + Launch app + Launch website + Launch docs + Launch browser + Launch main page + Launch Play store + Launch with %1$s + Launch with… + How to delete an account? + Unsecure + Match app + Match detection + Base domain + Match resources by top-level and second-level domain. + Host + Match resources by hostname and (if specified) port. + Starts with + Match resources when the detected resource starts with the URI. + Exact + Match resources when the detected resource exactly matches the URI. + Regular expression + Match resources by regular expression. Advanced option. + Never + Ignore URI during auto-fill item search. + %1$s linked to the password + %1$s linked to the username + %1$s linked to the cardholder name + %1$s linked to the expiration month + %1$s linked to the expiration year + %1$s linked to the card code + %1$s linked to the card brand + %1$s linked to the card number + %1$s linked to the title + %1$s linked to the middle name + %1$s linked to the address line (1) + %1$s linked to the address line (2) + %1$s linked to the address line (3) + %1$s linked to the city + %1$s linked to the state + %1$s linked to the postal code + %1$s linked to the country + %1$s linked to the company + %1$s linked to the email + %1$s linked to the phone number + %1$s linked to the SSN + %1$s linked to the username + %1$s linked to the passport number + %1$s linked to the license number + %1$s linked to the first name + %1$s linked to the last name + %1$s linked to the full name + %1$s linked to an unknown field + Share with… + %1$d selected + Copy + Copy value + Copy URL + Copy URI + Copy package name + Copy password + Copy username + Copy email + Copy phone number + Copy passport number + Copy license number + Copy card number + Copy cardholder name + Copy expiration year + Copy expiration month + Copy CVV code + Copy one-time password + Copy secret key + Unlock Keyguard + Open Keyguard + January + February + March + April + May + June + July + August + September + October + November + December + Move up + Move down + Remove + Remove an item? + Add more + FIDO2 WebAuthn + Authenticate WebAuthn + Return to app + + Must not be empty + + Must not be blank + Must be custom domain + Must contain only US-ASCII characters + Must be at least %1$d symbols long + Must be %1$d symbols long + Invalid domain + Invalid email + Invalid URL + Invalid URI + Invalid card number + Incorrect password + Failed to generate OTP code + Failed to create a passkey + Failed to authorize a request + + Barcode + Show as Barcode + Copy this authenticator to another device by scanning the QR code. + + Date picker + + Color picker + + How to delete an account? + A collection of info of how to delete your account from web services + + Easy + + Medium + + Hard + + Limited availability + + Impossible + Send email + Search websites + No instructions + Two-factor authentication + List of websites with two-factor authentication support + Search websites + Passkeys + List of websites with passkeys support + Search websites + + Data breach + Breached account data can provide malicious actors with access to sensitive personal and financial information, potentially leading to identity theft, financial fraud, and other forms of cybercrime. + No breaches found + Breached accounts found + Breaches + Occurred on %1$s + Reported on %1$s + Failed to check data breaches. You might currently be offline + Data breach + A password that is found in the data breaches takes significantly less time to break and should never be used. + Password is compromised + The password has been identified in known data breaches. Please change it immediately to protect your online security + No breaches found + Failed to check data breaches. You might currently be offline + + Large Type + Show in Large Type + Show in Large Type and Lock vault + App Picker + Search installed apps + System app + No apps + Choose a folder + Create a new folder: + + This organization will have an ownership of the copy. You will not be the direct owner. + Email forwarders + Email forwarders + Delete email forwarder? + Delete email forwarders? + Email forwarder integration + No email forwarders + Create an encrypted vault where the local data will be stored. + App password + Biometric authentication + Create a vault + Send crash reports + Create a vault + Erase app data + Close the app and erase all local app data + The vault is locked. Enter your app password to continue. + Unlock + + Unlock a vault + + Use biometric authentication to unlock the vault. + User verification is required. Enter your app password to continue. + Verify + Sync status + Up to date + Pending + Syncing + Sync failed + New item + Edit item + Style text with %1$s or %2$s and more. Limited Markdown syntax is supported. + italic + bold + Render preview + Auth re-prompt + Ask to authenticate again when you view or autofill a cipher + Add Bitwarden account + We are not affiliated, associated, authorized, endorsed by, or in any way officially connected with the Bitwarden, Inc., or any of its subsidiaries or its affiliates. + + To pass the captcha verification on an unofficial Bitwarden client, you must specify the client secret. To find it, visit Web vault / Settings / API Key. + + Client secret + Sign in + Region + United States + Europe + Custom (self-hosted) + HTTP headers + HTTP header + You can add custom HTTP headers that will be sent with every request to the server. + Key + Value + Add more + Server URL + Specify the base URL of your self-hosted Bitwarden installation. + Custom environment + You can specify the base URL of each service independently. + Web Vault Server URL + API Server URL + Icons Server URL + Identity Server URL + Verification + This authentication method is not supported yet. + Enter the verification code from your authenticator app. + Enter the verification code that was emailed to %1$s. + Enter the YubiKey authentication code manually. Place the cursor on the field below and trigger the YubiKey. + Authenticator + Duo (Organization) + FIDO2 Web Authentication + Email + FIDO U2F + Connect YubiKey via USB + Requires USB OTG support. + Touch the gold sensor on your YubiKey now. + Hold your YubiKey flat against the back of your device + Requires NFC support. + Failed to read YubiKey + Using FIDO2 WebAuthn requires using the Bitwarden Web vault version %1$s or higher. On older versions the authentication result will incorrectly be forwarded to the official Bitwarden app. + Confirm access + This data is protected, to continue please enter your app password. + + Confirm access + + Use biometric authentication to confirm your access and unlock this data. + Vault + Send + Generator + Watchtower + Settings + Locked due to inactivity + Text + File + Login + Card + Identity + Note + Passkey + Text + Boolean + Linked + + Pwned + Very strong + Strong + Good + Fair + Weak + Very strong passwords + Strong passwords + Good passwords + Fair passwords + Weak passwords + Filter + No filters available + Sort by + No sorting available + Title + Alphabetically + Reverse Alphabetically + Access count + Largest First + Smallest First + Modification date + Newest First + Oldest First + Expiration date + Newest First + Oldest First + Deletion date + Newest First + Oldest First + Password + Alphabetically + Reverse Alphabetically + Password modification date + Newest First + Oldest First + Password strength + Weakest First + Strongest First + Search vault + New item + There are no suggested items available for this context + + Security code + Saved to %1$s at %2$s + Password last modified at %1$s + Passkey created at %1$s + Last modified at %1$s + Created at %1$s + Deleted at %1$s + Expired at %1$s + Expiration scheduled at %1$s + Deleting scheduled at %1$s + + Call + + Text + + Email + + Directions + Sends + Search sends + New item + A password is required to access this share + Generator + Username generator + Password generator + Generate + Regenerate + Passphrase + Random passphrases provide the best combination of memorability and security. + Delimiter + Capitalize + Number + Username + Delimiter + Custom word + Capitalize + Number + Random symbols + A strong password has at least %1$d characters, uppercase & lowercase letters, digits and symbols. + Digits + Symbols + Uppercase letters + Lowercase letters + + Exclude similar symbols + + Exclude ambiguous symbols + Catch-all email + A catch-all email address provides users the option to receive all mail sent to their domain, even if they are sent to an email address that has not been set up for their domain. Ensure that your email hosting supports this feature before using it. + + Domain + Plus addressing email + Plus addressing means any email sent to %1$s is still sent to your account. This means you can have a lot of variations on your email address to give out to different people, sites, or mailing lists. Ensure that your email hosting supports this feature before using it. + Email + Subdomain addressing email + Subdomain addressing means any email sent to %1$s is still sent to your account. This means you can have a lot of variations on your email address to give out to different people, sites, or mailing lists. Ensure that your email hosting supports this feature before using it. + Email + Forwarded email alias + Create new login with the password + Create new login with the username + Password history + Show tips + Generator history + Clear history + Clear generator history? + This will remove all items from the history. + Password history + Clear history + Clear password history? + This will remove all passwords from the history. + Watchtower + Password strength + Security + Maintenance + Pwned Passwords + Passwords that have been exposed in data breaches. Such passwords should be changed immediately. + Reused Passwords + Don\'t use the same password on multiple websites. Generate unique passwords to improve security. + Vulnerable Accounts + Sites that were affected by a data breach since you last changed a password. Change your password to keep your account safe. + Unsecure Websites + Change the URLs that use HTTP protocol to use HTTPS protocol, as the latter utilizes the most advanced encryption available. + Inactive two-factor authentication + Sites that have two-factor authentication available but you haven\'t set it up yet. + Available Passkeys + Sites that have passkey available but you haven\'t set it up yet. It\'s simpler and more secure then a password. + Incomplete Items + Helps you identify missing or incomplete data in your vault. This can refer to identities with missing names or logins without usernames. + Expiring Items + Items that have expired or are expiring soon. + Duplicate URIs + Items that have one or more URIs that cover the same websites after applying the match detection. + Trashed Items + Items that have been moved into the trash. Having too many items in the trash may slow down operations with your vault. + Empty Folders + Folders that do not have any items in them. + Duplicate Items + Helps you identify and eliminate duplicate items in your vault. + Compromised Accounts + Check data breaches by a username or email address. + Change app password + Change password + Biometric authentication + + Change app password + App password never gets stored on the device nor sent over the network. It is used to generate a secret key that is used to encrypt the local data. + Unless you suspect unauthorized access or discover a malware on the device, there is no need to change the password if it is a strong, unique password. + Contact us + Your message + Use English to ensure that your feedback doesn\'t get misunderstood. + We appreciate the time that you spend sending us a message. Your message goes directly to us and we use it to troubleshoot issues, make product improvements and fix problems. While we may not reply to every report, we\'re reviewing and working on improvements & fixing issues as fast as we can. + Accounts + Add account + Team behind the app + I\'m a Software engineer from Ukraine. I specialize on app design and development. + Follow me + Search + Settings + Search settings + Appearance + Autofill + Development + Experimental + Settings + Notifications + Other + Permissions + Security + Keyguard Premium + Watchtower + Open-source licenses + Accounts + Add & view accounts + Autofill + Android Autofill & Credential services + Security + Biometrics, change password, vault timeout + Keyguard Premium + Unlock features & support app development + Watchtower + Compromised services, vulnerable passwords + Notifications + Alerts + Appearance + Language, theme and animations + Development + Test settings for development + Other + Community websites, app info + Show labels on navigation buttons + App version + App build date + Team behind the app + Reddit community + GitHub project + Crowdin project + Open-source licenses + Download APK file + Load App icons + Load Website icons + Queuing website icon might leak the website address to internet provider + Rich text formatting + Use Markdown to format notes + Language + Suggest translation + Font + Rate on Play Store + Tint color + Theme + Use contrast black theme + Open links in external browser + Conceal fields + Conceal sensitive info, such as passwords and credit card numbers + + Crash + Credential provider + Passkeys, passwords and data services + Privacy policy + Contact us + Experimental + Change app password + Require app password + In addition to your regular security settings, your app password will be required after this time or when biometry settings are changed + Immediately + Never + Send crash reports + Transition animation + Erase app data + Close the app and erase all local app data + Allow screenshots + Show the content of the app when switching between recent apps and allow capturing a screen + Hide the content of the app when switching between recent apps and forbid capturing a screen + Data safety + Lock vault + Lock after a reboot + Lock the vault after a device reboot + Lock when screen turns off + Lock the vault after a few seconds once the screen is off + Lock after a delay + Immediately + Never + Persist vault key on a disk + Vault key is persisted on an internal storage + Vault is locked after the app is unloaded from the memory + Storing a vault key on a disk is a security risk. If the device\'s internal storage is compromised, the attacker will gain access to the local vault data. + Permissions + Features overview + Biometric unlock + + Biometric unlock + Keep the screen on while viewing items + Autofill service + Use the Android Autofill Framework to assist in filling login information into other apps on the device + Auto-copy one-time passwords + When filling a login information, automatically copy one-time passwords + Inline suggestions + Embeds autofill suggestions directly into compatible keyboards + Manual selection + Displays an option to manually search a vault for an entry + Respect Autofill disabled flag + Disables autofill for a browser field that has autofill disabled flag set + Note that some websites are notorious for disabling autofill for a password field as well as some browsers are notorious for ignoring the autofill disabled flag + Ask to save data + Asks for updating the vault when filling of a form has completed + Auto-save app or website info + Automatically clear clipboard + Immediately + Never + One-time password notification duration + When you autofill a login item that has a one-time password, the notification with verification code will popup for at least the defined duration + Never + About Keyguard membership + The Premium unlocks extra features and funds a development of the app. Thank you for supporting us! ❤️ + Subscriptions + Products + Failed to load a list of subscriptions + Failed to load a list of products + Active + Will not renew + Manage on Play Store + Post notifications + Used to post downloading notifications + Camera + Used to scan QR codes + Allow two panel layout in landscape mode + Allow two panel layout in portrait mode + Dark + Light + Disabled + Dynamic + Crossfade + Developed specifically to increase legibility for readers with low vision, and to improve comprehension + Features Overview + Keyguard Premium + Multiple Accounts + Sign-in to multiple accounts simultaneously. + Two-way sync + Add or edit items and sync the changes back. + Offline editing + Add or edit items without internet connection. + Search + Search by anything + Name, email, password, phone number etc. + Filter + Filter by folder, organization, type etc. + Multiple keywords + Search by \'bitw test\' to find your \'Bitwarden Test Account\' item. + Watchtower + Pwned passwords + Find items with exposed in data breaches passwords. + Password strength + Find items with weak passwords. + Reused passwords + Find items with reused passwords. + Inactive 2FA + Find logins with available TOTP two-factor authentication. + Unsecure websites + Find websites that use HTTP protocol, auto-fix to HTTPS. + Incomplete items + Find empty items that might need updates. + Expiring items + Find expired or soon to be expired items. + Duplicate items + Find and merge duplicate items. + Misc + Multi-selection + Merge ciphers, fasten the refactoring with batch operations. + Show as Barcode + Encode a text as different barcodes. + Generator + Generate passwords or usernames. + Data safety + Local data + Local data consists of Downloads, User settings, Vault. They are stored in the internal storage of a device, which can only be accessed by the Android system or the Keyguard. + Downloads + User settings + The User settings are encrypted using a device-specific key. + Vault + The Vault is encrypted using a Key, derived from the App password using following steps: + The Salt and the Hash is then stored locally on a device, to later generate a master key to unlock the vault. + Unlocking a Vault means storing a correct Key in a device\'s RAM, gaining an ability to read and modify encrypted Vault. + Remote data + Remote data is stored on Bitwarden servers with zero-knowledge encryption. + diff --git a/common/src/commonMain/resources/MR/ar-rSA/plurals.xml b/common/src/commonMain/resources/MR/ar-rSA/plurals.xml new file mode 100644 index 00000000..5f2db8ad --- /dev/null +++ b/common/src/commonMain/resources/MR/ar-rSA/plurals.xml @@ -0,0 +1,2 @@ + + diff --git a/common/src/commonMain/resources/MR/ar-rSA/strings.xml b/common/src/commonMain/resources/MR/ar-rSA/strings.xml new file mode 100644 index 00000000..214f4486 --- /dev/null +++ b/common/src/commonMain/resources/MR/ar-rSA/strings.xml @@ -0,0 +1,868 @@ + + + OK + Close + Yes + No + + Name + Account name + Username + Password + App password + Current password + New password + Email + Verified + Not verified + Email visibility + Public URL + URL + + Access count + Learn more + Phone number + Passport number + License number + Card number + No card number + Brand + Security code + Valid from + Valid to + Card expiry month + Card expiry year + Cardholder name + Valid from + Expiry date + Company + Sync + + Hidden + + Visible + + Empty + + SSN + City + State + Info + Cancel + Continue + Country + Address + Postal code + Pull to search + Save + URI + URIs + Note + Notes + Attachments + No attachments + Expiring soon + Incomplete data + This item is missing some of the important information. + Item + Items + %1$s items + All items + No items + No folder + New folder + Folder + Folders + No folders + No collection + Collection + Collections + No collections + My vault + Organization + Organizations + No organizations + Miscellaneous + Add integration + Account + Accounts + No accounts + No account + Type + Options + Send + Reset + Length + Security + Contact info + Title + First name + Middle name + Last name + Full name + Address line 1 + Address line 2 + Address line 3 + Rename + Select type + Autofill + Passkey + Create a passkey + Unlock Keyguard + Confirming auth request… + Passkeys + + Signature counter + + Relying party + + Discoverable + Username + Display name + API key + Domain + Edit + Delete + Remove + Remove from the history + Reused password + Reused passwords + One-time password + Authenticator key + Use + Save passkey + Passkey available + Two-factor authentication available + Custom + Follow system settings + + Coming soon + Powered by + Verification code + Re-send verification code + Requested a verification email + Web vault + Launch Web vault + + Remember me + + Trash + + Download + Downloads + No downloads + No duplicates + Encryption + + Key + Hash + Salt + 256-bit AES + Random %1$d-bits of data + None + Text + Linked apps + Linked URIs + Custom fields + Reveal a secure note + Hide a secure note + Master password hint + Fingerprint phrase + What is a fingerprint? + Bitwarden premium + Unofficial Bitwarden server + Last synced at %1$s + Change name + Change color + Change master password hint + Sign out + Sign in + Visit Web vault to verify your email address + Upgrade your account to a premium membership and unlock some great additional features + Two-factor authentication + Require login verification with another device such as a security key, authenticator app, SMS or email + Active + Items + Log out + Log out? + All of the not synchronized changes will be lost! + Change name + Change names + Delete folder? + Delete folders? + This item(s) will be deleted immediately. You can not undo this action. + Recently opened + Often opened + View details + Save to + Add to favourites + Remove from favourites + Enable auth re-prompt + Disable auth re-prompt + Edit + Merge into… + Copy to… + Move to folder + Change name + Change names + Add password + Add passwords + Change password + Change passwords + View password history + Trash + Restore + Delete forever + Move associated items to trash + Open with… + Send with… + Open in a file manager + Delete local file + View parent item + Always show keyboard + Sync vault + Lock vault + Rename folder + Check the email in known data breaches + Check the username in known data breaches + Check the password in known data breaches + Check the website in known data breaches + Launch app + Launch website + Launch docs + Launch browser + Launch main page + Launch Play store + Launch with %1$s + Launch with… + How to delete an account? + Unsecure + Match app + Match detection + Base domain + Match resources by top-level and second-level domain. + Host + Match resources by hostname and (if specified) port. + Starts with + Match resources when the detected resource starts with the URI. + Exact + Match resources when the detected resource exactly matches the URI. + Regular expression + Match resources by regular expression. Advanced option. + Never + Ignore URI during auto-fill item search. + %1$s linked to the password + %1$s linked to the username + %1$s linked to the cardholder name + %1$s linked to the expiration month + %1$s linked to the expiration year + %1$s linked to the card code + %1$s linked to the card brand + %1$s linked to the card number + %1$s linked to the title + %1$s linked to the middle name + %1$s linked to the address line (1) + %1$s linked to the address line (2) + %1$s linked to the address line (3) + %1$s linked to the city + %1$s linked to the state + %1$s linked to the postal code + %1$s linked to the country + %1$s linked to the company + %1$s linked to the email + %1$s linked to the phone number + %1$s linked to the SSN + %1$s linked to the username + %1$s linked to the passport number + %1$s linked to the license number + %1$s linked to the first name + %1$s linked to the last name + %1$s linked to the full name + %1$s linked to an unknown field + Share with… + %1$d selected + Copy + Copy value + Copy URL + Copy URI + Copy package name + Copy password + Copy username + Copy email + Copy phone number + Copy passport number + Copy license number + Copy card number + Copy cardholder name + Copy expiration year + Copy expiration month + Copy CVV code + Copy one-time password + Copy secret key + Unlock Keyguard + Open Keyguard + January + February + March + April + May + June + July + August + September + October + November + December + Move up + Move down + Remove + Remove an item? + Add more + FIDO2 WebAuthn + Authenticate WebAuthn + Return to app + + Must not be empty + + Must not be blank + Must be custom domain + Must contain only US-ASCII characters + Must be at least %1$d symbols long + Must be %1$d symbols long + Invalid domain + Invalid email + Invalid URL + Invalid URI + Invalid card number + Incorrect password + Failed to generate OTP code + Failed to create a passkey + Failed to authorize a request + + Barcode + Show as Barcode + Copy this authenticator to another device by scanning the QR code. + + Date picker + + Color picker + + How to delete an account? + A collection of info of how to delete your account from web services + + Easy + + Medium + + Hard + + Limited availability + + Impossible + Send email + Search websites + No instructions + Two-factor authentication + List of websites with two-factor authentication support + Search websites + Passkeys + List of websites with passkeys support + Search websites + + Data breach + Breached account data can provide malicious actors with access to sensitive personal and financial information, potentially leading to identity theft, financial fraud, and other forms of cybercrime. + No breaches found + Breached accounts found + Breaches + Occurred on %1$s + Reported on %1$s + Failed to check data breaches. You might currently be offline + Data breach + A password that is found in the data breaches takes significantly less time to break and should never be used. + Password is compromised + The password has been identified in known data breaches. Please change it immediately to protect your online security + No breaches found + Failed to check data breaches. You might currently be offline + + Large Type + Show in Large Type + Show in Large Type and Lock vault + App Picker + Search installed apps + System app + No apps + Choose a folder + Create a new folder: + + This organization will have an ownership of the copy. You will not be the direct owner. + Email forwarders + Email forwarders + Delete email forwarder? + Delete email forwarders? + Email forwarder integration + No email forwarders + Create an encrypted vault where the local data will be stored. + App password + Biometric authentication + Create a vault + Send crash reports + Create a vault + Erase app data + Close the app and erase all local app data + The vault is locked. Enter your app password to continue. + Unlock + + Unlock a vault + + Use biometric authentication to unlock the vault. + User verification is required. Enter your app password to continue. + Verify + Sync status + Up to date + Pending + Syncing + Sync failed + New item + Edit item + Style text with %1$s or %2$s and more. Limited Markdown syntax is supported. + italic + bold + Render preview + Auth re-prompt + Ask to authenticate again when you view or autofill a cipher + Add Bitwarden account + We are not affiliated, associated, authorized, endorsed by, or in any way officially connected with the Bitwarden, Inc., or any of its subsidiaries or its affiliates. + + To pass the captcha verification on an unofficial Bitwarden client, you must specify the client secret. To find it, visit Web vault / Settings / API Key. + + Client secret + Sign in + Region + United States + Europe + Custom (self-hosted) + HTTP headers + HTTP header + You can add custom HTTP headers that will be sent with every request to the server. + Key + Value + Add more + Server URL + Specify the base URL of your self-hosted Bitwarden installation. + Custom environment + You can specify the base URL of each service independently. + Web Vault Server URL + API Server URL + Icons Server URL + Identity Server URL + Verification + This authentication method is not supported yet. + Enter the verification code from your authenticator app. + Enter the verification code that was emailed to %1$s. + Enter the YubiKey authentication code manually. Place the cursor on the field below and trigger the YubiKey. + Authenticator + Duo (Organization) + FIDO2 Web Authentication + Email + FIDO U2F + Connect YubiKey via USB + Requires USB OTG support. + Touch the gold sensor on your YubiKey now. + Hold your YubiKey flat against the back of your device + Requires NFC support. + Failed to read YubiKey + Using FIDO2 WebAuthn requires using the Bitwarden Web vault version %1$s or higher. On older versions the authentication result will incorrectly be forwarded to the official Bitwarden app. + Confirm access + This data is protected, to continue please enter your app password. + + Confirm access + + Use biometric authentication to confirm your access and unlock this data. + Vault + Send + Generator + Watchtower + Settings + Locked due to inactivity + Text + File + Login + Card + Identity + Note + Passkey + Text + Boolean + Linked + + Pwned + Very strong + Strong + Good + Fair + Weak + Very strong passwords + Strong passwords + Good passwords + Fair passwords + Weak passwords + Filter + No filters available + Sort by + No sorting available + Title + Alphabetically + Reverse Alphabetically + Access count + Largest First + Smallest First + Modification date + Newest First + Oldest First + Expiration date + Newest First + Oldest First + Deletion date + Newest First + Oldest First + Password + Alphabetically + Reverse Alphabetically + Password modification date + Newest First + Oldest First + Password strength + Weakest First + Strongest First + Search vault + New item + There are no suggested items available for this context + + Security code + Saved to %1$s at %2$s + Password last modified at %1$s + Passkey created at %1$s + Last modified at %1$s + Created at %1$s + Deleted at %1$s + Expired at %1$s + Expiration scheduled at %1$s + Deleting scheduled at %1$s + + Call + + Text + + Email + + Directions + Sends + Search sends + New item + A password is required to access this share + Generator + Username generator + Password generator + Generate + Regenerate + Passphrase + Random passphrases provide the best combination of memorability and security. + Delimiter + Capitalize + Number + Username + Delimiter + Custom word + Capitalize + Number + Random symbols + A strong password has at least %1$d characters, uppercase & lowercase letters, digits and symbols. + Digits + Symbols + Uppercase letters + Lowercase letters + + Exclude similar symbols + + Exclude ambiguous symbols + Catch-all email + A catch-all email address provides users the option to receive all mail sent to their domain, even if they are sent to an email address that has not been set up for their domain. Ensure that your email hosting supports this feature before using it. + + Domain + Plus addressing email + Plus addressing means any email sent to %1$s is still sent to your account. This means you can have a lot of variations on your email address to give out to different people, sites, or mailing lists. Ensure that your email hosting supports this feature before using it. + Email + Subdomain addressing email + Subdomain addressing means any email sent to %1$s is still sent to your account. This means you can have a lot of variations on your email address to give out to different people, sites, or mailing lists. Ensure that your email hosting supports this feature before using it. + Email + Forwarded email alias + Create new login with the password + Create new login with the username + Password history + Show tips + Generator history + Clear history + Clear generator history? + This will remove all items from the history. + Password history + Clear history + Clear password history? + This will remove all passwords from the history. + Watchtower + Password strength + Security + Maintenance + Pwned Passwords + Passwords that have been exposed in data breaches. Such passwords should be changed immediately. + Reused Passwords + Don\'t use the same password on multiple websites. Generate unique passwords to improve security. + Vulnerable Accounts + Sites that were affected by a data breach since you last changed a password. Change your password to keep your account safe. + Unsecure Websites + Change the URLs that use HTTP protocol to use HTTPS protocol, as the latter utilizes the most advanced encryption available. + Inactive two-factor authentication + Sites that have two-factor authentication available but you haven\'t set it up yet. + Available Passkeys + Sites that have passkey available but you haven\'t set it up yet. It\'s simpler and more secure then a password. + Incomplete Items + Helps you identify missing or incomplete data in your vault. This can refer to identities with missing names or logins without usernames. + Expiring Items + Items that have expired or are expiring soon. + Duplicate URIs + Items that have one or more URIs that cover the same websites after applying the match detection. + Trashed Items + Items that have been moved into the trash. Having too many items in the trash may slow down operations with your vault. + Empty Folders + Folders that do not have any items in them. + Duplicate Items + Helps you identify and eliminate duplicate items in your vault. + Compromised Accounts + Check data breaches by a username or email address. + Change app password + Change password + Biometric authentication + + Change app password + App password never gets stored on the device nor sent over the network. It is used to generate a secret key that is used to encrypt the local data. + Unless you suspect unauthorized access or discover a malware on the device, there is no need to change the password if it is a strong, unique password. + Contact us + Your message + Use English to ensure that your feedback doesn\'t get misunderstood. + We appreciate the time that you spend sending us a message. Your message goes directly to us and we use it to troubleshoot issues, make product improvements and fix problems. While we may not reply to every report, we\'re reviewing and working on improvements & fixing issues as fast as we can. + Accounts + Add account + Team behind the app + I\'m a Software engineer from Ukraine. I specialize on app design and development. + Follow me + Search + Settings + Search settings + Appearance + Autofill + Development + Experimental + Settings + Notifications + Other + Permissions + Security + Keyguard Premium + Watchtower + Open-source licenses + Accounts + Add & view accounts + Autofill + Android Autofill & Credential services + Security + Biometrics, change password, vault timeout + Keyguard Premium + Unlock features & support app development + Watchtower + Compromised services, vulnerable passwords + Notifications + Alerts + Appearance + Language, theme and animations + Development + Test settings for development + Other + Community websites, app info + Show labels on navigation buttons + App version + App build date + Team behind the app + Reddit community + GitHub project + Crowdin project + Open-source licenses + Download APK file + Load App icons + Load Website icons + Queuing website icon might leak the website address to internet provider + Rich text formatting + Use Markdown to format notes + Language + Suggest translation + Font + Rate on Play Store + Tint color + Theme + Use contrast black theme + Open links in external browser + Conceal fields + Conceal sensitive info, such as passwords and credit card numbers + + Crash + Credential provider + Passkeys, passwords and data services + Privacy policy + Contact us + Experimental + Change app password + Require app password + In addition to your regular security settings, your app password will be required after this time or when biometry settings are changed + Immediately + Never + Send crash reports + Transition animation + Erase app data + Close the app and erase all local app data + Allow screenshots + Show the content of the app when switching between recent apps and allow capturing a screen + Hide the content of the app when switching between recent apps and forbid capturing a screen + Data safety + Lock vault + Lock after a reboot + Lock the vault after a device reboot + Lock when screen turns off + Lock the vault after a few seconds once the screen is off + Lock after a delay + Immediately + Never + Persist vault key on a disk + Vault key is persisted on an internal storage + Vault is locked after the app is unloaded from the memory + Storing a vault key on a disk is a security risk. If the device\'s internal storage is compromised, the attacker will gain access to the local vault data. + Permissions + Features overview + Biometric unlock + + Biometric unlock + Keep the screen on while viewing items + Autofill service + Use the Android Autofill Framework to assist in filling login information into other apps on the device + Auto-copy one-time passwords + When filling a login information, automatically copy one-time passwords + Inline suggestions + Embeds autofill suggestions directly into compatible keyboards + Manual selection + Displays an option to manually search a vault for an entry + Respect Autofill disabled flag + Disables autofill for a browser field that has autofill disabled flag set + Note that some websites are notorious for disabling autofill for a password field as well as some browsers are notorious for ignoring the autofill disabled flag + Ask to save data + Asks for updating the vault when filling of a form has completed + Auto-save app or website info + Automatically clear clipboard + Immediately + Never + One-time password notification duration + When you autofill a login item that has a one-time password, the notification with verification code will popup for at least the defined duration + Never + About Keyguard membership + The Premium unlocks extra features and funds a development of the app. Thank you for supporting us! ❤️ + Subscriptions + Products + Failed to load a list of subscriptions + Failed to load a list of products + Active + Will not renew + Manage on Play Store + Post notifications + Used to post downloading notifications + Camera + Used to scan QR codes + Allow two panel layout in landscape mode + Allow two panel layout in portrait mode + Dark + Light + Disabled + Dynamic + Crossfade + Developed specifically to increase legibility for readers with low vision, and to improve comprehension + Features Overview + Keyguard Premium + Multiple Accounts + Sign-in to multiple accounts simultaneously. + Two-way sync + Add or edit items and sync the changes back. + Offline editing + Add or edit items without internet connection. + Search + Search by anything + Name, email, password, phone number etc. + Filter + Filter by folder, organization, type etc. + Multiple keywords + Search by \'bitw test\' to find your \'Bitwarden Test Account\' item. + Watchtower + Pwned passwords + Find items with exposed in data breaches passwords. + Password strength + Find items with weak passwords. + Reused passwords + Find items with reused passwords. + Inactive 2FA + Find logins with available TOTP two-factor authentication. + Unsecure websites + Find websites that use HTTP protocol, auto-fix to HTTPS. + Incomplete items + Find empty items that might need updates. + Expiring items + Find expired or soon to be expired items. + Duplicate items + Find and merge duplicate items. + Misc + Multi-selection + Merge ciphers, fasten the refactoring with batch operations. + Show as Barcode + Encode a text as different barcodes. + Generator + Generate passwords or usernames. + Data safety + Local data + Local data consists of Downloads, User settings, Vault. They are stored in the internal storage of a device, which can only be accessed by the Android system or the Keyguard. + Downloads + User settings + The User settings are encrypted using a device-specific key. + Vault + The Vault is encrypted using a Key, derived from the App password using following steps: + The Salt and the Hash is then stored locally on a device, to later generate a master key to unlock the vault. + Unlocking a Vault means storing a correct Key in a device\'s RAM, gaining an ability to read and modify encrypted Vault. + Remote data + Remote data is stored on Bitwarden servers with zero-knowledge encryption. + diff --git a/common/src/commonMain/resources/MR/base/plurals.xml b/common/src/commonMain/resources/MR/base/plurals.xml new file mode 100644 index 00000000..f0bd76dd --- /dev/null +++ b/common/src/commonMain/resources/MR/base/plurals.xml @@ -0,0 +1,55 @@ + + + + + %1$s + accounts + + + %1$s + account + + + %1$s + accounts + + + %1$s + accounts + + + %1$s + accounts + + + %1$s + accounts + + + + + %1$s + occurrences + + + %1$s + occurrence + + + %1$s + occurrences + + + %1$s + occurrences + + + %1$s + occurrences + + + %1$s + occurrences + + + diff --git a/common/src/commonMain/resources/MR/base/strings.xml b/common/src/commonMain/resources/MR/base/strings.xml new file mode 100644 index 00000000..21dd3742 --- /dev/null +++ b/common/src/commonMain/resources/MR/base/strings.xml @@ -0,0 +1,936 @@ + + + OK + Close + Yes + No + + Name + Account name + Username + Password + App password + Current password + New password + Email + Verified + Not verified + Email visibility + Public URL + URL + + Access count + Learn more + Phone number + Passport number + License number + Card number + No card number + Brand + Security code + Valid from + Valid to + Card expiry month + Card expiry year + Cardholder name + Valid from + Expiry date + Company + Sync + + Hidden + + Visible + + Empty + + SSN + City + State + Info + Cancel + Continue + Country + Address + Postal code + Pull to search + Save + URI + URIs + Note + Notes + Attachments + No attachments + Expiring soon + Incomplete data + This item is missing some of the important information. + Item + Items + %1$s items + All items + No items + No folder + New folder + Folder + Folders + No folders + No collection + Collection + Collections + No collections + My vault + Organization + Organizations + No organizations + Miscellaneous + Add integration + Account + Accounts + No accounts + No account + Type + Options + Send + Reset + Length + Security + Contact info + Title + First name + Middle name + Last name + Full name + Address line 1 + Address line 2 + Address line 3 + Rename + Select type + Autofill + Passkey + Create a passkey + Unlock Keyguard + Confirming auth request… + Passkeys + + Signature counter + + Relying party + + Discoverable + Username + Display name + API key + Domain + Edit + Delete + Remove + Remove from the history + Reused password + Reused passwords + One-time password + Authenticator key + Use + Save passkey + Passkey available + Two-factor authentication available + Custom + Follow system settings + + Coming soon + Powered by + Verification code + Re-send verification code + Requested a verification email + Web vault + Launch Web vault + + Remember me + + Trash + + Download + Downloads + No downloads + No duplicates + Encryption + + Key + Hash + Salt + 256-bit AES + Random %1$d-bits of data + None + Text + Linked apps + Linked URIs + Custom fields + Reveal a secure note + Hide a secure note + Master password hint + Fingerprint phrase + What is a fingerprint? + Bitwarden premium + Unofficial Bitwarden server + + Last synced at %1$s + Change name + Change color + Change master password hint + Sign out + Sign in + Visit Web vault to verify your email address + Upgrade your account to a premium membership and unlock some great additional features + Two-factor authentication + Require login verification with another device such as a security key, authenticator app, SMS or email + Active + Items + Log out + Log out? + All of the not synchronized changes will be lost! + + Change name + Change names + Delete folder? + Delete folders? + This item(s) will be deleted immediately. You can not undo this action. + + Recently opened + Often opened + View details + Save to + Add to favourites + Remove from favourites + Enable auth re-prompt + Disable auth re-prompt + Edit + Merge into… + Copy to… + Move to folder + Change name + Change names + Add password + Add passwords + Change password + Change passwords + View password history + Trash + Restore + Delete forever + Move associated items to trash + + Open with… + Send with… + Open in a file manager + Delete local file + View parent item + + Always show keyboard + Sync vault + Lock vault + Rename folder + + Check the email in known data breaches + Check the username in known data breaches + Check the password in known data breaches + Check the website in known data breaches + + Launch app + Launch website + Launch docs + Launch browser + Launch main page + Launch Play store + Launch with %1$s + Launch with… + How to delete an account? + + Unsecure + Match app + Match detection + Base domain + Match resources by top-level and second-level domain. + Host + Match resources by hostname and (if specified) port. + Starts with + Match resources when the detected resource starts with the URI. + Exact + Match resources when the detected resource exactly matches the URI. + Regular expression + Match resources by regular expression. Advanced option. + Never + Ignore URI during auto-fill item search. + + %1$s linked to the password + %1$s linked to the username + %1$s linked to the cardholder name + %1$s linked to the expiration month + %1$s linked to the expiration year + %1$s linked to the card code + %1$s linked to the card brand + %1$s linked to the card number + %1$s linked to the title + %1$s linked to the middle name + %1$s linked to the address line (1) + %1$s linked to the address line (2) + %1$s linked to the address line (3) + %1$s linked to the city + %1$s linked to the state + %1$s linked to the postal code + %1$s linked to the country + %1$s linked to the company + %1$s linked to the email + %1$s linked to the phone number + %1$s linked to the SSN + %1$s linked to the username + %1$s linked to the passport number + %1$s linked to the license number + %1$s linked to the first name + %1$s linked to the last name + %1$s linked to the full name + %1$s linked to an unknown field + + Share with… + + %1$d selected + + Copy + Copy value + Copy URL + Copy URI + Copy package name + Copy password + Copy username + Copy email + Copy phone number + Copy passport number + Copy license number + Copy card number + Copy cardholder name + Copy expiration year + Copy expiration month + Copy CVV code + Copy one-time password + Copy secret key + + Unlock Keyguard + Open Keyguard + + January + February + March + April + May + June + July + August + September + October + November + December + + Move up + Move down + Remove + Remove an item? + Add more + + FIDO2 WebAuthn + Authenticate WebAuthn + Return to app + + + Must not be empty + + Must not be blank + Must be custom domain + Must contain only US-ASCII characters + Must be at least %1$d symbols long + Must be %1$d symbols long + Invalid domain + Invalid email + Invalid URL + Invalid URI + Invalid card number + Incorrect password + Failed to generate OTP code + Failed to create a passkey + Failed to authorize a request + + + Barcode + Show as Barcode + Copy this authenticator to another device by scanning the QR code. + + Date picker + + Color picker + + How to delete an account? + A collection of info of how to delete your account from web services + + Easy + + Medium + + Hard + + Limited availability + + Impossible + Send email + Search websites + No instructions + Two-factor authentication + List of websites with two-factor authentication support + Search websites + Passkeys + List of websites with passkeys support + Search websites + + Data breach + Breached account data can provide malicious actors with access to sensitive personal and financial information, potentially leading to identity theft, financial fraud, and other forms of cybercrime. + No breaches found + Breached accounts found + Breaches + Occurred on %1$s + Reported on %1$s + Failed to check data breaches. You might currently be offline + Data breach + A password that is found in the data breaches takes significantly less time to break and should never be used. + Password is compromised + The password has been identified in known data breaches. Please change it immediately to protect your online security + No breaches found + Failed to check data breaches. You might currently be offline + + Large Type + Show in Large Type + Show in Large Type and Lock vault + + App Picker + Search installed apps + System app + No apps + + Choose a folder + Create a new folder: + + + This organization will have an ownership of the copy. You will not be the direct owner. + + Email forwarders + Email forwarders + Delete email forwarder? + Delete email forwarders? + Email forwarder integration + No email forwarders + + Create an encrypted vault where the local data will be stored. + App password + Biometric authentication + Create a vault + Send crash reports + Create a vault + Erase app data + Close the app and erase all local app data + + The vault is locked. Enter your app password to continue. + Unlock + + Unlock a vault + + Use biometric authentication to unlock the vault. + + User verification is required. Enter your app password to continue. + Verify + + Sync status + Up to date + Pending + Syncing + Sync failed + + New item + Edit item + Style text with %1$s or %2$s and more. Limited Markdown syntax is supported. + italic + bold + Render preview + Auth re-prompt + Ask to authenticate again when you view or autofill a cipher + + Add Bitwarden account + We are not affiliated, associated, authorized, endorsed by, or in any way officially connected with the Bitwarden, Inc., or any of its subsidiaries or its affiliates. + + To pass the captcha verification on an unofficial Bitwarden client, you must specify the client secret. To find it, visit Web vault / Settings / API Key. + + Client secret + Sign in + Region + United States + Europe + Custom (self-hosted) + HTTP headers + HTTP header + You can add custom HTTP headers that will be sent with every request to the server. + Key + Value + Add more + Server URL + Specify the base URL of your self-hosted Bitwarden installation. + Custom environment + You can specify the base URL of each service independently. + Web Vault Server URL + API Server URL + Icons Server URL + Identity Server URL + + Verification + This authentication method is not supported yet. + Enter the verification code from your authenticator app. + Enter the verification code that was emailed to %1$s. + Enter the YubiKey authentication code manually. Place the cursor on the field below and trigger the YubiKey. + + Authenticator + YubiKey + Duo + Duo (Organization) + FIDO2 Web Authentication + Email + FIDO U2F + + Connect YubiKey via USB + Requires USB OTG support. + Touch the gold sensor on your YubiKey now. + Hold your YubiKey flat against the back of your device + Requires NFC support. + Failed to read YubiKey + + Using FIDO2 WebAuthn requires using the Bitwarden Web vault version %1$s or higher. On older versions the authentication result will incorrectly be forwarded to the official Bitwarden app. + + Confirm access + This data is protected, to continue please enter your app password. + + Confirm access + + Use biometric authentication to confirm your access and unlock this data. + + Vault + Send + Generator + Watchtower + Settings + + Locked due to inactivity + + Text + File + Unknown + + Login + Card + Identity + Note + Passkey + Unknown + + Text + Boolean + Linked + + + Pwned + + Very strong + Strong + Good + Fair + Weak + + Very strong passwords + Strong passwords + Good passwords + Fair passwords + Weak passwords + + Filter + No filters available + + Sort by + No sorting available + + Title + Alphabetically + Reverse Alphabetically + Access count + Largest First + Smallest First + Modification date + Newest First + Oldest First + Expiration date + Newest First + Oldest First + Deletion date + Newest First + Oldest First + Password + Alphabetically + Reverse Alphabetically + Password modification date + Newest First + Oldest First + Password strength + Weakest First + Strongest First + + Search vault + New item + There are no suggested items available for this context + + + Security code + Saved to %1$s at %2$s + Password last modified at %1$s + Passkey created at %1$s + Last modified at %1$s + Created at %1$s + Deleted at %1$s + Expired at %1$s + Expiration scheduled at %1$s + Deleting scheduled at %1$s + + Call + + Text + + Email + + Directions + + Sends + Search sends + New item + A password is required to access this share + + Generator + Username generator + Password generator + Generate + Regenerate + Passphrase + Random passphrases provide the best combination of memorability and security. + Delimiter + Capitalize + Number + Username + Delimiter + Custom word + Capitalize + Number + Random symbols + A strong password has at least %1$d characters, uppercase & lowercase letters, digits and symbols. + Digits + Symbols + Uppercase letters + Lowercase letters + + Exclude similar symbols + + Exclude ambiguous symbols + Catch-all email + A catch-all email address provides users the option to receive all mail sent to their domain, even if they are sent to an email address that has not been set up for their domain. Ensure that your email hosting supports this feature before using it. + + Domain + Plus addressing email + Plus addressing means any email sent to %1$s is still sent to your account. This means you can have a lot of variations on your email address to give out to different people, sites, or mailing lists. Ensure that your email hosting supports this feature before using it. + Email + Subdomain addressing email + Subdomain addressing means any email sent to %1$s is still sent to your account. This means you can have a lot of variations on your email address to give out to different people, sites, or mailing lists. Ensure that your email hosting supports this feature before using it. + Email + Forwarded email alias + Create new login with the password + Create new login with the username + Password history + Show tips + + Generator history + Clear history + Clear generator history? + This will remove all items from the history. + + Password history + Clear history + Clear password history? + This will remove all passwords from the history. + + Watchtower + Password strength + Security + Maintenance + Pwned Passwords + Passwords that have been exposed in data breaches. Such passwords should be changed immediately. + Reused Passwords + Don\'t use the same password on multiple websites. Generate unique passwords to improve security. + Vulnerable Accounts + Sites that were affected by a data breach since you last changed a password. Change your password to keep your account safe. + Unsecure Websites + Change the URLs that use HTTP protocol to use HTTPS protocol, as the latter utilizes the most advanced encryption available. + Inactive two-factor authentication + Sites that have two-factor authentication available but you haven\'t set it up yet. + Available Passkeys + Sites that have passkey available but you haven\'t set it up yet. It\'s simpler and more secure then a password. + Incomplete Items + Helps you identify missing or incomplete data in your vault. This can refer to identities with missing names or logins without usernames. + Expiring Items + Items that have expired or are expiring soon. + Duplicate URIs + Items that have one or more URIs that cover the same websites after applying the match detection. + Trashed Items + Items that have been moved into the trash. Having too many items in the trash may slow down operations with your vault. + Empty Folders + Folders that do not have any items in them. + Duplicate Items + Helps you identify and eliminate duplicate items in your vault. + Compromised Accounts + Check data breaches by a username or email address. + + Change app password + Change password + Biometric authentication + + Change app password + App password never gets stored on the device nor sent over the network. It is used to generate a secret key that is used to encrypt the local data. + Unless you suspect unauthorized access or discover a malware on the device, there is no need to change the password if it is a strong, unique password. + + Contact us + Your message + Use English to ensure that your feedback doesn\'t get misunderstood. + We appreciate the time that you spend sending us a message. Your message goes directly to us and we use it to troubleshoot issues, make product improvements and fix problems. While we may not reply to every report, we\'re reviewing and working on improvements & fixing issues as fast as we can. + + Accounts + Add account + + Team behind the app + I\'m a Software engineer from Ukraine. I specialize on app design and development. + Follow me + + Search + Settings + Search settings + + Appearance + Autofill + Development + Experimental + Settings + Notifications + Other + Permissions + Security + Keyguard Premium + Watchtower + Open-source licenses + + Accounts + Add & view accounts + Autofill + Android Autofill & Credential services + Security + Biometrics, change password, vault timeout + Keyguard Premium + Unlock features & support app development + Watchtower + Compromised services, vulnerable passwords + Notifications + Alerts + Appearance + Language, theme and animations + Development + Test settings for development + Other + Community websites, app info + Show labels on navigation buttons + App version + App build date + Team behind the app + Reddit community + GitHub project + Crowdin project + Open-source licenses + Download APK file + Load App icons + Load Website icons + Queuing website icon might leak the website address to internet provider + Rich text formatting + Use Markdown to format notes + Language + Suggest translation + Font + Rate on Play Store + Tint color + Theme + Use contrast black theme + Open links in external browser + Conceal fields + Conceal sensitive info, such as passwords and credit card numbers + + Crash + Credential provider + Passkeys, passwords and data services + Privacy policy + Contact us + Experimental + Change app password + Require app password + In addition to your regular security settings, your app password will be required after this time or when biometry settings are changed + Immediately + Never + Send crash reports + Transition animation + Erase app data + Close the app and erase all local app data + Allow screenshots + Show the content of the app when switching between recent apps and allow capturing a screen + Hide the content of the app when switching between recent apps and forbid capturing a screen + Data safety + Lock vault + Lock after a reboot + Lock the vault after a device reboot + Lock when screen turns off + Lock the vault after a few seconds once the screen is off + Lock after a delay + Immediately + Never + Persist vault key on a disk + Vault key is persisted on an internal storage + Vault is locked after the app is unloaded from the memory + Storing a vault key on a disk is a security risk. If the device\'s internal storage is compromised, the attacker will gain access to the local vault data. + Permissions + Features overview + Biometric unlock + + Biometric unlock + Keep the screen on while viewing items + Autofill service + Use the Android Autofill Framework to assist in filling login information into other apps on the device + Auto-copy one-time passwords + When filling a login information, automatically copy one-time passwords + Inline suggestions + Embeds autofill suggestions directly into compatible keyboards + Manual selection + Displays an option to manually search a vault for an entry + Respect Autofill disabled flag + Disables autofill for a browser field that has autofill disabled flag set + Note that some websites are notorious for disabling autofill for a password field as well as some browsers are notorious for ignoring the autofill disabled flag + Ask to save data + Asks for updating the vault when filling of a form has completed + Auto-save app or website info + Automatically clear clipboard + Immediately + Never + One-time password notification duration + When you autofill a login item that has a one-time password, the notification with verification code will popup for at least the defined duration + Never + About Keyguard membership + The Premium unlocks extra features and funds a development of the app. Thank you for supporting us! ❤️ + Subscriptions + Products + Failed to load a list of subscriptions + Failed to load a list of products + Active + Will not renew + Manage on Play Store + Post notifications + Used to post downloading notifications + Camera + Used to scan QR codes + Allow two panel layout in landscape mode + Allow two panel layout in portrait mode + + Dark + Light + + Disabled + Dynamic + Crossfade + + Developed specifically to increase legibility for readers with low vision, and to improve comprehension + + Features Overview + Keyguard Premium + Multiple Accounts + Sign-in to multiple accounts simultaneously. + Two-way sync + Add or edit items and sync the changes back. + Offline editing + Add or edit items without internet connection. + Search + Search by anything + Name, email, password, phone number etc. + Filter + Filter by folder, organization, type etc. + Multiple keywords + Search by \'bitw test\' to find your \'Bitwarden Test Account\' item. + Watchtower + Pwned passwords + Find items with exposed in data breaches passwords. + Password strength + Find items with weak passwords. + Reused passwords + Find items with reused passwords. + Inactive 2FA + Find logins with available TOTP two-factor authentication. + Unsecure websites + Find websites that use HTTP protocol, auto-fix to HTTPS. + Incomplete items + Find empty items that might need updates. + Expiring items + Find expired or soon to be expired items. + Duplicate items + Find and merge duplicate items. + Misc + Multi-selection + Merge ciphers, fasten the refactoring with batch operations. + Show as Barcode + Encode a text as different barcodes. + Generator + Generate passwords or usernames. + + Data safety + Local data + Local data consists of Downloads, User settings, Vault. They are stored in the internal storage of a device, which can only be accessed by the Android system or the Keyguard. + Downloads + User settings + The User settings are encrypted using a device-specific key. + Vault + The Vault is encrypted using a Key, derived from the App password using following steps: + The Salt and the Hash is then stored locally on a device, to later generate a master key to unlock the vault. + Unlocking a Vault means storing a correct Key in a device\'s RAM, gaining an ability to read and modify encrypted Vault. + Remote data + Remote data is stored on Bitwarden servers with zero-knowledge encryption. + + diff --git a/common/src/commonMain/resources/MR/ca-rES/plurals.xml b/common/src/commonMain/resources/MR/ca-rES/plurals.xml new file mode 100644 index 00000000..5f2db8ad --- /dev/null +++ b/common/src/commonMain/resources/MR/ca-rES/plurals.xml @@ -0,0 +1,2 @@ + + diff --git a/common/src/commonMain/resources/MR/ca-rES/strings.xml b/common/src/commonMain/resources/MR/ca-rES/strings.xml new file mode 100644 index 00000000..0e8764f2 --- /dev/null +++ b/common/src/commonMain/resources/MR/ca-rES/strings.xml @@ -0,0 +1,868 @@ + + + OK + Tanca + + No + + Nom + Nom del compte + Nom d’usuari + Contrasenya + Contrasenya d\'aplicació + Contrasenya actual + Nova Contrasenya + Correu electrònic + Verificat + No verificat + Visibilitat del correu electrònic + URL pública + URL + + Recompte d\'accessos + Més informació + Número de telèfon + Número de passaport + Número de llicència + Número de Targeta + Cap número de targeta + Marca + CVV + Vàlida des de + Vàlida fins a + Mes de venciment de la targeta + Any de caducitat de la targeta + Nom del titular + Vàlid des de + Data d\'expiració + Empresa + Sincronitza + + Amagat + + Visible + + Buit + + SSN + Ciutat + Província + Info + Cancel·lar + Continuar + País + Adreça + Codi postal + Estira per a cercar + Desa + URI + URIs + Nota + Notes + Adjunts + Sense adjunts + Expira prompte + Dades incompletes + A aquest element li falta informació important. + Element + Elements + %1$s elements + Tots els elements + Cap element + Cap carpeta + Carpeta nova + Carpeta + Carpetes + Cap carpeta + Cap col·lecció + Col·lecció + Col·leccions + Cap col·lecció + Caixa forta + Organització + Organitzacions + Cap organització + Miscel·lània + Afegir integració + Compte + Comptes + Cap compte + Cap compte + Tipus + Opcions + Envia + Restablir + Longitud + Seguretat + Informació de Contacte + Títol + Nom + Primer cognom + Segon Cognom + Nom complet + Línia 1 de l\'adreça + Línia 2 de l\'adreça + Línia 3 de l\'adreça + Reanomenar + Seleccioneu tipus + Emplenament automàtic + Passkey + Crea una passkey + Desbloqueja Keyguard + Confirmant la petició d\'autenticació… + Passkeys + + Recompte de signatures + + Partit de confiança + + Detectable + Nom d’Usuari + Nom visible + Clau d\'API + Domini + Edita + Eliminar + Suprimir + Suprimir de l\'historial + Contrasenya reutilitzada + Contrasenyes reutilitzades + Contrasenya d\'un sol ús + Clau autenticadora + Utilitza + Guarda la passkey + Passkey disponible + Autenticació de dos factors disponible + Personalitzat + Segueix el sistema + + Aviat + Impulsat per + Codi de verificació + Reenvia el codi de verificació + Sol·licita un correu de verificació + Caixa forta web + Inicia la caixa forta web + + Recorda\'m + + Paperera + + Descarrega + Descàrregues + Cap descàrrega + Cap duplicat + Xifratge + + Clau + Hash + Sal + AES de 256-bits + Dades de %1$d bits aleatòries + Cap + Text + Aplicacions enllaçades + URIs enllaçades + Camps personalitzats + Revel·la una nota segura + Amaga una nota segura + Pista de la contrasenya mestra + Frase d\'empremta digital + Què és una empremta? + Bitwarden Premium + Servidor de Bitwarden no oficial + Última sincronització %1$s + Canvia el nom + Canvia el color + Canvia la pista de contrasenya mestra + Tanca la sessió + Inicia sessió + Visita la caixa forta web per a verificar la teva adreça de correu electrònic + Actualitzeu el vostre compte a una subscripció prèmium i desbloquegeu algunes característiques addicionals excel·lents + Autenticació en dos passos + Requereix verificació d\'inici de sessió amb un altre dispositiu com una clau de seguretat, aplicació d\'autenticació, SMS o correu electrònic + Activa + Elements + Desconnecta + Desconnectar-se? + Tots els elements no sincronitzats es perdran! + Canvia el nom + Canviar noms + Eliminar carpeta? + Eliminar carpetes? + Aquest element/s seran eliminats immediatament. No pots desfer aquesta acció. + Oberts recentment + Oberts a sovint + Mostra els detalls + Desa a + Afegir a Favorits + Eliminar de favorits + Habilita la re-autenticació + Deshabilita la re-autenticació + Edita + Mescla a… + Copia a… + Mou a la carpeta + Canvia el nom + Canvia els noms + Afegir contrasenya + Afegir contrasenyes + Canvia la contrasenya + Canvia contrasenyes + Veure l\'historial de contrasenyes + Paperera + Restaura + Elimina per sempre + Mou els elements associats a la paperera + Obre amb… + Envia amb… + Obre a l\'administrador de fitxers + Elimina el fitxer local + Veure l\'element pare + Sempre mostra el teclat + Sincronitza la caixa forta + Bloqueja la caixa forta + Canvia el nom a la carpeta + Revisa el teu correu electrònic a la llista de filtracions conegudes + Revisa el teu nom d\'usuari a la llista de filtracions conegudes + Revisa la teua contrasenya a la llista de filtracions conegudes + Revisa la pàgina web a la llista de filtracions conegudes + Inicia app + Obri la web + Obri el document + Inicia el navegador + Inicia la pàgina principal + Inicia el Play Store + Inicia amb %1$s + Inicia amb… + Com eliminar un compte? + No segura + Coincideix amb l\'app + Detecció de coincidències + Domini base + Coincidències de recursos per domini de primer i segon nivell. + Amfitrió + Coincidències de recursos per nom d\'amfitrió i (si hi ha) port. + Comença amb + Coincidències de recursos quan el recurs detectat comença amb l\'URI. + Exactament + Coincidències de recursos quan el recurs detectat coincideix exactament amb l\'URI. + Expressió regular + Coincidències de recursos per expressió regular. Opció avançada. + Mai + Ignorar l\'URI en cercar l\'element d\'emplenament automàtic. + %1$s enllaços a la contrasenya + %1$s enllaços al nom d\'usuari + %1$s enllaços al nom del titular + %1$s enllaços al mes d\'expiració + %1$s enllaços a l\'any d\'expiració + %1$s enllaços al codi de la targeta + %1$s enllaços a la marca de la targeta + %1$s enllaços al número de la targeta + %1$s enllaços al títol + %1$s enllaços al primer cognom + %1$s enllaços a la primera línia d\'adreça + %1$s enllaços a la segona línia d\'adreça + %1$s enllaços a la tercera línia d\'adreça + %1$s enllaços a la ciutat + %1$s enllaços a l\'estat + %1$s enllaços al codi postal + %1$s enllaços al país + %1$s enllaços a la companyia + %1$s enllaços al correu electrònic + %1$s enllaços al telèfon mòbil + %1$s enllaços a l\'SSN + %1$s enllaços al nom d\'usuari + %1$s enllaços al número de passaport + %1$s enllaços al número de llicència + %1$s enllaços al nom + %1$s enllaços al cognom + %1$s enllaços al nom complet + %1$s enllaços a un camp desconegut + Comparteix amb… + %1$d seleccionats + Copia + Copia el valor + Copia l\'URL + Copia l\'URI + Copia el nom de paquet + Copia la contrasenya + Copia el nom d\'usuari + Copia el correu electrònic + Copia el telèfon mòbil + Copia el número de passaport + Copia el número de llicència + Copia el número de targeta + Copia el nom del titular + Copia l\'any d\'expiració + Copia el mes d\'expiració + Còpia el codi CVV + Copia la contrasenya d\'un sol ús + Copia la clau secreta + Desbloqueja Keyguard + Obre Keyguard + Gener + Febrer + Març + Abril + Maig + Juny + Juliol + Agost + Setembre + Octubre + Novembre + Desembre + Mou dalt + Mou avall + Elimina + Eliminar element? + Afegeix més + WebAuthn FIDO2 + Autenticar WebAuthn + Torna a l\'app + + No pot estar buit + + No pot estar en blanc + Ha de ser un domini personalitzat + Només pot contenir caràcters US-ASCII + Ha de tenir com a mínim %1$d símbols + Ha de tenir %1$d símbols + Domini invàlid + Correu electrònic invàlid + URL invàlida + URI invàlida + Número de targeta no vàlid + Contrasenya incorrecta + No s\'ha pogut generar el codi OTP + No s\'ha pogut crear la passkey + No s\'ha pogut autoritzar la petició + + Codi de barres + Mostra com a codi de barres + Copia aquest autenticador a un altre dispositiu escanejant el codi QR. + + Selecció de data + + Selector de color + + Com eliminar un compte? + Una col·lecció d\'informació sobre com eliminar el teu compte de serveis web + + Fàcil + + Mitjà + + Difícil + + Disponibilitat limitada + + Impossible + Envia correu electrònic + Cerca llocs web + Sense instruccions + Autenticació en dos passos + Llista de llocs web amb suport per a autenticació en dos-passes + Cerca llocs web + Passkeys + Llista de llocs web amb suport per a passkeys + Cerca llocs web + + Filtració de dades + Dades de comptes filtrades poden proporcionar les teves dades personals i financeres a criminals, el qual pot dur a suplantació d\'identitat, frau financer i altres formes de ciber-crims. + No s\'ha trobat cap filtració + S\'han trobat comptes filtrats + Filtracions + Ocorregut el %1$s + Reportat el %1$s + No s\'han pogut comprovar les filtracions de dades. És possible que no tinguis connexió + Filtració de dades + Una contrasenya que es troba a una llista de filtracions és menys segura, ja que és de les primeres que es proven a l\'intentar accedir a un compte. + S\'han trobat contrasenyes filtrades + La contrasenya ha sigut identificada a la llista de filtracions. Per favor, canvia-la immediatament per a protegir la teva seguretat en línia + Cap filtració trobada + No s\'han pogut comprovar les filtracions de dades. És possible que no tinguis connexió + + Lletra Gran + Mostra en Lletra Gran + Mostra en Lletra Gran i bloqueja la caixa forta + Selector d\'apps + Cerca aplicacions instal·lades + Aplicació del sistema + Cap aplicació + Tria una carpeta + Crea una nova carpeta: + + Aquesta organització serà propietària de la còpia. No seràs el propietari directe. + Redireccionadors d\'Email + Redireccionadors d\'Email + Eliminar el redireccionador d\'email? + Eliminar els redireccionadors d\'email? + Integració amb redireccionador d\'email + Cap redireccionador d\'email + Crea una caixa forta encriptada on es desaran totes les dades locals. + Contrasenya d\'aplicació + Autenticació biomètrica + Crea una caixa forta + Enviar informes d\'errors + Crea una caixa forta + Elimina les dades de l\'app + Tanca l\'app i elimina totes les dades locals + La caixa forta està bloquejada. Introdueix la teva contrasenya per a continuar. + Desbloqueja + + Desbloqueja una caixa forta + + Fes servir una autenticació biomètrica per a desbloquejar la caixa forta. + Cal verificar l\'usuari. Introdueix la teua contrasenya d\'app per a continuar. + Verificar + Estat de la sincronització + Actualitzada + Pendent + Sincronitzant + Error de sincronització + Nou element + Editar element + Estilitza el text amb %1$s o %2$s i més. Suport per a Markdown limitat. + cursiva + negreta + Renderitzar previsualització + Torna a autenticar + Demana autenticar-se altre vegada quan visualitzes o emplenes automàticament + Afegir un compte de Bitwarden + No estem afiliats, associats, autoritzats, finançats, ni relacionats de cap manera oficial amb Bitwarden, Inc., o qualsevol dels seus afiliats o subsidiàries. + + Per a passar la verificació del captcha en un client de Bitwarden no oficial, has d\'especificar un secret de client. Per a trobar-lo ves a Caixa Forta Web / Configuració / Clau d\'API. + + Secret del client + Inicia sessió + Regió + Estats Units + Europa + Personalitzat (a un servidor propi) + Capçaleres HTTP + Capçalera HTTP + Pots afegir capçaleres HTTP que seran enviades amb cada petició al servidor. + Clau + Valor + Afegeix Més + URL del servidor + Especifiqueu l\'URL base de la vostra instal·lació de Bitwarden allotjada a un entorn propi. + Entorn personalitzat + Pots especificar l\'URL base de cada servei independentment. + URL de la caixa forta del servidor + URL del servidor API + URL del servidor d\'icones + URL del servidor d\'identitat + Verificació + Aquest mètode d\'autenticació encara no està suportat. + Introduïu el codi de verificació de l\'aplicació autenticadora. + Introdueix el codi de verificació que s\'ha enviat a %1$s. + Introdueix el codi de YubiKey manualment. Col·loca el cursor al camp inferior i activa la YubiKey. + Autenticador + Duo (Organització) + Autenticació Web FIDO2 + Correu electrònic + FIDO U2F + Connecta una YubiKey per USB + Requereix suport d\'USB OTG. + Toca el sensor daurat de la teva YubiKey. + Subjecta la teva YubiKey plana contra la part posterior del teu dispositiu + Requereix suport d\'NFC. + No s\'ha pogut llegir la YubiKey + Fer servir WebAuthn FIDO2 necessita una versió de Bitwarden web igual o major a %1$s. En versions més antigues no s\'interpreta correctament el resultat de l\'autenticació i se\'t redirigirà a l\'aplicació oficial de Bitwarden. + Confirmeu l\'accés + Aquestes dades estan protegides, per a continuar introdueix la teva contrasenya. + + Confirmeu l\'accés + + Utilitza autenticació biomètrica per a confirmar l\'accés i desbloquejar aquestes dades. + Caixa Forta + Envia + Generador + Vigilància + Configuració + S\'ha bloquejat per inactivitat + Text + Arxiu + Inici de sessió + Targeta + Identitat + Nota + Passkey + Text + Booleà + Enllaçat + + Filtrada + Molt segura + Forta + Bona + Correcta + Poc segura + Contrasenyes molt segures + Contrasenyes segures + Bones contrasenyes + Contrasenyes correctes + Contrasenyes poc segures + Filtra + No hi ha filtres disponibles + Ordena per + No es pot ordenar + Títol + Alfabèticament + Al contrari d\'alfabèticament + Recompte d\'accessos + Els més grans primer + Els més petits primer + Data de modificació + Els més nous primer + Els més antics primer + Data de caducitat + Els més nous primer + Els més antics primer + Data d\'eliminació + Els més nous primer + Els més antics primer + Contrasenya + Alfabèticament + Al contrari d\'alfabèticament + Data de modificació de la contrasenya + Els més nous primer + Els més antics primer + Seguretat de la contrasenya + Les més fluixes primer + Les més fortes primer + Cerca a la caixa forta + Nou element + No hi ha cap element sugerit disponible per a aquest context + + Codi de seguretat + Desat a %1$s a %2$s + La contrasenya es va modificar per última vegada el %1$s + Passkey creada el %1$s + Modificat per última vegada el %1$s + Creat el %1$s + Eliminat el %1$s + Va expirar el %1$s + Expirarà el %1$s + Eliminant la programació el %1$s + + Truca + + Missatge + + Email + + Direccions + Enviaments + Cerca enviaments + Nou element + Una contrasenya és necessària per accedir aquesta compartició + Generador + Generador de nom d\'usuari + Generador de contrasenya + Genera + Regenerar + Contrasenya + Les contrasenyes aleatòries proporcionen la millor combinació de memoritzabilitat i seguretat. + Delimitador + Majúscules + Número + Nom d’usuari + Delimitador + Paraula personalitzada + Majúscules inicials + Número + Símbols aleatoris + Una contrasenya forta té almenys %1$d caràcters, lletres majúscules & minúscules, dígits i símbols. + Dígits + Símbols + Lletres majúscules + Lletres minúscules + + Exclou símbols similars + + Exclou símbols ambigus + Captura de tot el correu + Una adreça de correu de captura total dona l\'opció als usuaris de rebre tot el correu electrònic que s\'enviï al seu domini, inclús si s\'envia a una adreça de correu que no ha sigut configurada per al domini. Assegura\'t que el teu proveïdor suporta aquesta funció abans de fer-la servir. + + Domini + Afegit al correu + Els afegits al correu volen dir que qualsevol correu enviat a %1$s també serà enviat al teu compte. Açò vol dir que pots tenir un gran número de variacions al teu correu electrònic per a donar a cada persona, lloc web, o llista de correu. Assegura\'t que el teu proveïdor de correu electònic suporta aquesta funció abans de fer-la servir. + Correu Electrònic + Subdomini de correu electrònic + Amb aquesta configuració, tot el correu enviat a %1$s també s\'enviarà al teu compte. Açò vol dir que pots tindre moltes variacions del teu correu electrònic per a donar a cada persona, lloc web o llista de correu. Assegura\'t que el teu proveïdor de correu suporta la funció abans de fer-la servir. + Correu Electrònic + Àlies de correu electrònic reenviat + Crea un nou inici de sessió amb la contrasenya + Crea un nou inici de sessió amb l\'usuari + Historial de contrasenyes + Mostra consells + Historial del generador + Neteja l\'historial + Netejar l\'historial del generador? + Açò eliminarà tots els elements de l\'historial. + Historial de contrasenyes + Buida l\'historial + Buidar l\'historial de contrasenyes? + Açò eliminarà totes les contrasenyes de l\'historial. + Torre de Vigilància + Seguretat de la contrasenya + Seguretat + Manteniment + Contrasenyes filtrades + Contrasenyes que han sigut filtrades en bases de dades. Aquestes contrasenyes haurien de ser canviades immediatament. + Contrasenyes reutilitzades + No facis servir la mateixa contrasenya en diversos llocs. Genera contrasenyes úniques per millorar la seguretat. + Comptes Vulnerables + Llocs web que van ser afectats per una filtracions de dades després de l\'última vegada que vas canviar la contrasenya. Canvia-la per a mantenir el teu compte assegurat. + Llocs web no segurs + Canvia les URL que fan servir HTTP en comptes d\'HTTPS, ja que aquest últim fa servir els algoritmes d\'encriptació més segurs possibles. + Autenticació de dos factors inactiva + Llocs que tenen autenticació de dos factors disponible, però als quals no l\'has activada. + Passkeys Disponibles + Llocs web que tenen disponibilitat per a passkeys però els quals encara no has configurat. És més simple i segur que una contrasenya. + Elements incomplets + Ajuda a identificar dades que falten o incompletes a la teua caixa forta. Això pot dur a identitats sense nom o inicis de sessió sense nom d\'usuari. + Expiració d\'elements + Elements que han expirat o van a expirar prompte. + URIs duplicades + Elements que tenen una o més URIs que cobreixen les mateixes pàgines web després d\'aplicar la detecció de coincidències. + Elements esborrats + Elements que s\'han mogut a la papereta. Tindre molts elements a la paperera pot endarrerir les operacions amb la teva caixa forta. + Carpetes Buides + Les carpetes que no contenen cap element. + Elements duplicats + Ajuda a identificar i eliminar elements duplicats a la teua caixa forta. + Comptes Compromesos + Comprova filtracions de dades per nom d\'usuari o direcció de correu electrònic. + Canvia la contrasenya de l\'aplicació + Canvia la contrasenya + Autenticació biomètrica + + Canvia la contrasenya de l\'app + La contrasenya d\'aplicació mai es desa al dispositiu ni s\'envia a través de la xarxa. Es fa servir per a generar un secret que s\'utilitza per a encriptar les dades locals. + A no ser que sospites d\'un accés no autoritzat, o descobreixis programari maliciós al teu dispositiu, no hi ha cap necessitat de canviar la contrasenya si és una forta i única. + Contacta\'ns + El teu missatge + Fes servir l\'anglès per assegurar-nos que no hi ha malentesos. + Apreciem el temps que has dedicat escrivint-nos un missatge. El teu missatge va directament a nosaltres, i el fem servir per a solucionar problemes i millorar el producte. Encara que no contestem a tots els missatges, els llegim tots i solucionem els problemes tan prompte com podem. + Comptes + Afegeix un compte + L\'equip darrere de l\'aplicació + Soc un enginyer de software ucraïnès. M\'especialitzo en disseny i desenvolupament d\'aplicacions. + Segueix-me + Cerca + Configuració + Configuració de cerca + Aparença + Emplenament automàtic + Desenvolupament + Experimental + Configuració + Notificacions + Altres + Permisos + Seguretat + Keyguard Prèmium + Torre de Vigilància + Llicències de programari lliure + Comptes + Afegir & veure comptes + Emplenament automàtic + Servei d\'emplenament automàtic d\'Android + Seguretat + Biometria, canvi de contrasenya i temps d\'espera de la caixa forta + Keyguard Prèmium + Desbloqueja funcions & dona suport al desenvolupament de l\'app + Torre de Vigilància + Serveis compromesos, contrasenyes vulnerables + Notificacions + Alertes + Aparença + Idioma, tema i animacions + Desenvolupament + Configuració de prova per al desenvolupament + Altres + Llocs web de la comunitat, informació de l\'app + Mostra etiquetes als botons de navegació + Versió de l\'app + Data de compilació de l\'app + L\'equip darrere de l\'aplicació + Comunitat de Reddit + Projecte de GitHub + Projecte de Crowdin + Llicències de programari lliure + Descarrega l\'arxiu APK + Carrega icones d\'App + Carrega icones Web + Sol·licitar la icona del lloc web pot filtrar la direcció al proveïdor d\'Internet + Format de text enriquit + Fes servir Markdown per a prendre notes + Idioma + Suggerir traducció + Tipus de lletra + Valorar al Play Store + Color de tint + Tema + Fes servir el tema negre contrastrant + Obre els enllaços a un navegador extern + Amaga camps + Amaga informació sensible, tal com contrasenyes i números de targeta de crèdit + + Crash + Proveïdor de credencials + Passkeys, contrasenyes i serveis de dades + Política de privadesa + Contacta\'ns + Experimental + Canvia la contrasenya de l\'app + Requereix la contrasenya d\'app + A més de la teva configuració de seguretat habitual, la teva contrasenya de l\'app serà requerida després d\'aquest temps, o quan es canviï la configuració de biometria + Immediatament + Mai + Envia informes d\'errors + Animacions de transició + Elimina les dades de l\'app + Tanca l\'app i elimina totes les dades locals + Permet captures de pantalla + Mostra el contingut de l\'aplicació quan es canviï entre aplicacions recents, i permet fer captures de pantalla + Amaga el contingut de l\'aplicació quan es canviï entre aplicacions recents, i prohibeix fer captures de pantalla + Seguretat de Dades + Bloqueja la caixa forta + Bloqueja després d\'un reinici + Bloqueja la caixa forta després de reiniciar el dispositiu + Bloqueja quan s\'apagui la pantalla + Bloqueja la caixa forta uns segons després d\'apagar la pantalla + Bloqueja després d\'un temps + Immediatament + Mai + Desa la clau de la caixa forta a un disc + La clau de la caixa forta es desa a l\'emmagatzematge intern + La caixa forta el bloqueja després de descarregar l\'app de la memòria + Desar la clau de la caixa forta a un disc és un risc de seguretat. Si l\'emmagatzematge del dispositiu es compromet, l\'atacant tindrà accés a les dades. + Permisos + Visió general de funcions + Desbloqueig biomètric + + Desbloqueig biomètric + Mantè encesa la pantalla mentre es visualitzen els elements + Servei d\'emplenament automàtic + Fes servir el servei d\'emplenament automàtic d\'Android per ajudar-te emplenant informació d\'inici de sessió a altres apps del dispositiu + Copia contrasenyes d\'un sol ús automàticament + En emplenar informació d\'inici de sessió, còpia automàticament les contrasenyes d\'un sol ús + Suggeriments en línia + Ofereix els suggeriments directament als teclats compatibles + Selecció manual + Mostra una opció per a cercar manualment una entrada a la caixa forta + Respecta la bandera d\'emplenament automàtic desconnectat + Deshabilita l\'emplenament automàtic per a un camp del buscador web que tingui la bandera d\'emplenament automàtic desconnectada + Tingues en compte que algunes pàgines web tendeixen a deshabilitar l\'emplenament automàtic per a camps de contrasenya, i alguns navegadors ignoren la bandera + Demana desar dades + Demana actualitzar la caixa forta quan es completi un formulari + Desa informació d\'apps o pàgines web automàticament + Buida el porta-retalls automàticament + Immediatament + Mai + Durada de la notificació de la contrasenya d\'un sol ús + Quan emplenes un camp d\'inici de sessió automàticament, i té una contrasenya d\'un sol ús, la notificació amb el codi de verificació es mostrarà almenys durant la durada indicada + Mai + Sobre la subscripció de Keyguard + El Prèmium desbloqueja funcions extra i finança el desenvolupament de l\'app. Gràcies per donar-nos suport! ❤️ + Subscripcions + Productes + No s\'han pogut carregar les subscripcions + No s\'han pogut carregar els productes + Actiu + No es renovarà + Administra al Play Store + Penja notificacions + Es fa servir per a penjar notificacions de descàrregues + Càmera + Es fa servir per a escanejar codis QR + Permet la distribució en dos panells en el mode apaïsat + Permet la distribució en dos panells en el mode de retrat + Fosc + Clar + Desactivat + Dinàmic + Transició + Desenvolupat especialment per a millorar la llegibilitat per als lectors amb baixa visió, i millorar la comprensió + Visió general de funcions + Keyguard Prèmium + Comptes múltiples + Inicia sessió amb diversos comptes al mateix temps. + Sincronització en dos sentits + Afegeix o edita elements i sincronitza els canvis en l\'altre sentit. + Edició offline + Afegeix o elimina elements sense connexió. + Cerca + Cerca per qualsevol terme + Nom, correu electrònic, contrasenya, número de mòbil etc. + Filtre + Filtra per carpeta, organització, tipus etc. + Vàries paraules clau + Cerca per \'bitw test\' per a trobar el teu element \'Bitwarden Test Account\'. + Torre de Vigilància + Contrasenyes filtrades + Troba contrasenyes exposades en filtracions de dades. + Seguretat de la contrasenya + Cerca elements amb contrasenyes dèbils. + Contrasenyes reutilitzades + Cerca elements amb contrasenyes reutilitzades. + 2FA inactiva + Troba inicis de sessió amb autenticació de dos factors TOTP disponible. + Llocs web no segurs + Troba llocs web que fan servir el protocol HTTP, canvia automàticament a HTTPS. + Elements incomplets + Troba elements buits que poden necessitar actualitzacions. + Elements a expirar + Troba elements que van a expirar o que falta poc perquè ho facin. + Elements duplicats + Busca i mescla elements duplicats. + Misc + Selecció múltiple + Mescla els xifrats, i accelera la refactorització amb operacions en grup. + Mostra com a codi de barres + Codifica el text com a codis de barres diferents. + Generador + Genera contrasenyes o noms d\'usuari. + Seguretat de Dades + Dades locals + Les dades locals consisteixen en baixades, configuració d\'usuari i caixa forta. Es desen en l\'emmagatzematge intern del dispositiu, que sols pot ser accedit per Android o Keyguard. + Descàrregues + Configuració de l\'usuari + La configuració d\'usuari s\'encripta amb una clau única del dispositiu. + Configuració de l\'usuari + La caixa forta s\'encripta amb una clau, derivada de la contrasenya de l\'app seguint aquestes passes: + La sal i el hash es guarden localment al dispositiu, per a fer-se servir més tard per a generar una clau mestra i desbloquejar la caixa forta. + Desbloquejar una caixa forta vol dir desar una clau correcta a la RAM del dispositiu, guanyant l\'habilitat de llegir i modificar la caixa forta encriptada. + Dades remotes + Les dades es desen remotament als servidors de Bitwarden amb encriptació de zero-coneixement. + diff --git a/common/src/commonMain/resources/MR/cs-rCZ/plurals.xml b/common/src/commonMain/resources/MR/cs-rCZ/plurals.xml new file mode 100644 index 00000000..5f2db8ad --- /dev/null +++ b/common/src/commonMain/resources/MR/cs-rCZ/plurals.xml @@ -0,0 +1,2 @@ + + diff --git a/common/src/commonMain/resources/MR/cs-rCZ/strings.xml b/common/src/commonMain/resources/MR/cs-rCZ/strings.xml new file mode 100644 index 00000000..214f4486 --- /dev/null +++ b/common/src/commonMain/resources/MR/cs-rCZ/strings.xml @@ -0,0 +1,868 @@ + + + OK + Close + Yes + No + + Name + Account name + Username + Password + App password + Current password + New password + Email + Verified + Not verified + Email visibility + Public URL + URL + + Access count + Learn more + Phone number + Passport number + License number + Card number + No card number + Brand + Security code + Valid from + Valid to + Card expiry month + Card expiry year + Cardholder name + Valid from + Expiry date + Company + Sync + + Hidden + + Visible + + Empty + + SSN + City + State + Info + Cancel + Continue + Country + Address + Postal code + Pull to search + Save + URI + URIs + Note + Notes + Attachments + No attachments + Expiring soon + Incomplete data + This item is missing some of the important information. + Item + Items + %1$s items + All items + No items + No folder + New folder + Folder + Folders + No folders + No collection + Collection + Collections + No collections + My vault + Organization + Organizations + No organizations + Miscellaneous + Add integration + Account + Accounts + No accounts + No account + Type + Options + Send + Reset + Length + Security + Contact info + Title + First name + Middle name + Last name + Full name + Address line 1 + Address line 2 + Address line 3 + Rename + Select type + Autofill + Passkey + Create a passkey + Unlock Keyguard + Confirming auth request… + Passkeys + + Signature counter + + Relying party + + Discoverable + Username + Display name + API key + Domain + Edit + Delete + Remove + Remove from the history + Reused password + Reused passwords + One-time password + Authenticator key + Use + Save passkey + Passkey available + Two-factor authentication available + Custom + Follow system settings + + Coming soon + Powered by + Verification code + Re-send verification code + Requested a verification email + Web vault + Launch Web vault + + Remember me + + Trash + + Download + Downloads + No downloads + No duplicates + Encryption + + Key + Hash + Salt + 256-bit AES + Random %1$d-bits of data + None + Text + Linked apps + Linked URIs + Custom fields + Reveal a secure note + Hide a secure note + Master password hint + Fingerprint phrase + What is a fingerprint? + Bitwarden premium + Unofficial Bitwarden server + Last synced at %1$s + Change name + Change color + Change master password hint + Sign out + Sign in + Visit Web vault to verify your email address + Upgrade your account to a premium membership and unlock some great additional features + Two-factor authentication + Require login verification with another device such as a security key, authenticator app, SMS or email + Active + Items + Log out + Log out? + All of the not synchronized changes will be lost! + Change name + Change names + Delete folder? + Delete folders? + This item(s) will be deleted immediately. You can not undo this action. + Recently opened + Often opened + View details + Save to + Add to favourites + Remove from favourites + Enable auth re-prompt + Disable auth re-prompt + Edit + Merge into… + Copy to… + Move to folder + Change name + Change names + Add password + Add passwords + Change password + Change passwords + View password history + Trash + Restore + Delete forever + Move associated items to trash + Open with… + Send with… + Open in a file manager + Delete local file + View parent item + Always show keyboard + Sync vault + Lock vault + Rename folder + Check the email in known data breaches + Check the username in known data breaches + Check the password in known data breaches + Check the website in known data breaches + Launch app + Launch website + Launch docs + Launch browser + Launch main page + Launch Play store + Launch with %1$s + Launch with… + How to delete an account? + Unsecure + Match app + Match detection + Base domain + Match resources by top-level and second-level domain. + Host + Match resources by hostname and (if specified) port. + Starts with + Match resources when the detected resource starts with the URI. + Exact + Match resources when the detected resource exactly matches the URI. + Regular expression + Match resources by regular expression. Advanced option. + Never + Ignore URI during auto-fill item search. + %1$s linked to the password + %1$s linked to the username + %1$s linked to the cardholder name + %1$s linked to the expiration month + %1$s linked to the expiration year + %1$s linked to the card code + %1$s linked to the card brand + %1$s linked to the card number + %1$s linked to the title + %1$s linked to the middle name + %1$s linked to the address line (1) + %1$s linked to the address line (2) + %1$s linked to the address line (3) + %1$s linked to the city + %1$s linked to the state + %1$s linked to the postal code + %1$s linked to the country + %1$s linked to the company + %1$s linked to the email + %1$s linked to the phone number + %1$s linked to the SSN + %1$s linked to the username + %1$s linked to the passport number + %1$s linked to the license number + %1$s linked to the first name + %1$s linked to the last name + %1$s linked to the full name + %1$s linked to an unknown field + Share with… + %1$d selected + Copy + Copy value + Copy URL + Copy URI + Copy package name + Copy password + Copy username + Copy email + Copy phone number + Copy passport number + Copy license number + Copy card number + Copy cardholder name + Copy expiration year + Copy expiration month + Copy CVV code + Copy one-time password + Copy secret key + Unlock Keyguard + Open Keyguard + January + February + March + April + May + June + July + August + September + October + November + December + Move up + Move down + Remove + Remove an item? + Add more + FIDO2 WebAuthn + Authenticate WebAuthn + Return to app + + Must not be empty + + Must not be blank + Must be custom domain + Must contain only US-ASCII characters + Must be at least %1$d symbols long + Must be %1$d symbols long + Invalid domain + Invalid email + Invalid URL + Invalid URI + Invalid card number + Incorrect password + Failed to generate OTP code + Failed to create a passkey + Failed to authorize a request + + Barcode + Show as Barcode + Copy this authenticator to another device by scanning the QR code. + + Date picker + + Color picker + + How to delete an account? + A collection of info of how to delete your account from web services + + Easy + + Medium + + Hard + + Limited availability + + Impossible + Send email + Search websites + No instructions + Two-factor authentication + List of websites with two-factor authentication support + Search websites + Passkeys + List of websites with passkeys support + Search websites + + Data breach + Breached account data can provide malicious actors with access to sensitive personal and financial information, potentially leading to identity theft, financial fraud, and other forms of cybercrime. + No breaches found + Breached accounts found + Breaches + Occurred on %1$s + Reported on %1$s + Failed to check data breaches. You might currently be offline + Data breach + A password that is found in the data breaches takes significantly less time to break and should never be used. + Password is compromised + The password has been identified in known data breaches. Please change it immediately to protect your online security + No breaches found + Failed to check data breaches. You might currently be offline + + Large Type + Show in Large Type + Show in Large Type and Lock vault + App Picker + Search installed apps + System app + No apps + Choose a folder + Create a new folder: + + This organization will have an ownership of the copy. You will not be the direct owner. + Email forwarders + Email forwarders + Delete email forwarder? + Delete email forwarders? + Email forwarder integration + No email forwarders + Create an encrypted vault where the local data will be stored. + App password + Biometric authentication + Create a vault + Send crash reports + Create a vault + Erase app data + Close the app and erase all local app data + The vault is locked. Enter your app password to continue. + Unlock + + Unlock a vault + + Use biometric authentication to unlock the vault. + User verification is required. Enter your app password to continue. + Verify + Sync status + Up to date + Pending + Syncing + Sync failed + New item + Edit item + Style text with %1$s or %2$s and more. Limited Markdown syntax is supported. + italic + bold + Render preview + Auth re-prompt + Ask to authenticate again when you view or autofill a cipher + Add Bitwarden account + We are not affiliated, associated, authorized, endorsed by, or in any way officially connected with the Bitwarden, Inc., or any of its subsidiaries or its affiliates. + + To pass the captcha verification on an unofficial Bitwarden client, you must specify the client secret. To find it, visit Web vault / Settings / API Key. + + Client secret + Sign in + Region + United States + Europe + Custom (self-hosted) + HTTP headers + HTTP header + You can add custom HTTP headers that will be sent with every request to the server. + Key + Value + Add more + Server URL + Specify the base URL of your self-hosted Bitwarden installation. + Custom environment + You can specify the base URL of each service independently. + Web Vault Server URL + API Server URL + Icons Server URL + Identity Server URL + Verification + This authentication method is not supported yet. + Enter the verification code from your authenticator app. + Enter the verification code that was emailed to %1$s. + Enter the YubiKey authentication code manually. Place the cursor on the field below and trigger the YubiKey. + Authenticator + Duo (Organization) + FIDO2 Web Authentication + Email + FIDO U2F + Connect YubiKey via USB + Requires USB OTG support. + Touch the gold sensor on your YubiKey now. + Hold your YubiKey flat against the back of your device + Requires NFC support. + Failed to read YubiKey + Using FIDO2 WebAuthn requires using the Bitwarden Web vault version %1$s or higher. On older versions the authentication result will incorrectly be forwarded to the official Bitwarden app. + Confirm access + This data is protected, to continue please enter your app password. + + Confirm access + + Use biometric authentication to confirm your access and unlock this data. + Vault + Send + Generator + Watchtower + Settings + Locked due to inactivity + Text + File + Login + Card + Identity + Note + Passkey + Text + Boolean + Linked + + Pwned + Very strong + Strong + Good + Fair + Weak + Very strong passwords + Strong passwords + Good passwords + Fair passwords + Weak passwords + Filter + No filters available + Sort by + No sorting available + Title + Alphabetically + Reverse Alphabetically + Access count + Largest First + Smallest First + Modification date + Newest First + Oldest First + Expiration date + Newest First + Oldest First + Deletion date + Newest First + Oldest First + Password + Alphabetically + Reverse Alphabetically + Password modification date + Newest First + Oldest First + Password strength + Weakest First + Strongest First + Search vault + New item + There are no suggested items available for this context + + Security code + Saved to %1$s at %2$s + Password last modified at %1$s + Passkey created at %1$s + Last modified at %1$s + Created at %1$s + Deleted at %1$s + Expired at %1$s + Expiration scheduled at %1$s + Deleting scheduled at %1$s + + Call + + Text + + Email + + Directions + Sends + Search sends + New item + A password is required to access this share + Generator + Username generator + Password generator + Generate + Regenerate + Passphrase + Random passphrases provide the best combination of memorability and security. + Delimiter + Capitalize + Number + Username + Delimiter + Custom word + Capitalize + Number + Random symbols + A strong password has at least %1$d characters, uppercase & lowercase letters, digits and symbols. + Digits + Symbols + Uppercase letters + Lowercase letters + + Exclude similar symbols + + Exclude ambiguous symbols + Catch-all email + A catch-all email address provides users the option to receive all mail sent to their domain, even if they are sent to an email address that has not been set up for their domain. Ensure that your email hosting supports this feature before using it. + + Domain + Plus addressing email + Plus addressing means any email sent to %1$s is still sent to your account. This means you can have a lot of variations on your email address to give out to different people, sites, or mailing lists. Ensure that your email hosting supports this feature before using it. + Email + Subdomain addressing email + Subdomain addressing means any email sent to %1$s is still sent to your account. This means you can have a lot of variations on your email address to give out to different people, sites, or mailing lists. Ensure that your email hosting supports this feature before using it. + Email + Forwarded email alias + Create new login with the password + Create new login with the username + Password history + Show tips + Generator history + Clear history + Clear generator history? + This will remove all items from the history. + Password history + Clear history + Clear password history? + This will remove all passwords from the history. + Watchtower + Password strength + Security + Maintenance + Pwned Passwords + Passwords that have been exposed in data breaches. Such passwords should be changed immediately. + Reused Passwords + Don\'t use the same password on multiple websites. Generate unique passwords to improve security. + Vulnerable Accounts + Sites that were affected by a data breach since you last changed a password. Change your password to keep your account safe. + Unsecure Websites + Change the URLs that use HTTP protocol to use HTTPS protocol, as the latter utilizes the most advanced encryption available. + Inactive two-factor authentication + Sites that have two-factor authentication available but you haven\'t set it up yet. + Available Passkeys + Sites that have passkey available but you haven\'t set it up yet. It\'s simpler and more secure then a password. + Incomplete Items + Helps you identify missing or incomplete data in your vault. This can refer to identities with missing names or logins without usernames. + Expiring Items + Items that have expired or are expiring soon. + Duplicate URIs + Items that have one or more URIs that cover the same websites after applying the match detection. + Trashed Items + Items that have been moved into the trash. Having too many items in the trash may slow down operations with your vault. + Empty Folders + Folders that do not have any items in them. + Duplicate Items + Helps you identify and eliminate duplicate items in your vault. + Compromised Accounts + Check data breaches by a username or email address. + Change app password + Change password + Biometric authentication + + Change app password + App password never gets stored on the device nor sent over the network. It is used to generate a secret key that is used to encrypt the local data. + Unless you suspect unauthorized access or discover a malware on the device, there is no need to change the password if it is a strong, unique password. + Contact us + Your message + Use English to ensure that your feedback doesn\'t get misunderstood. + We appreciate the time that you spend sending us a message. Your message goes directly to us and we use it to troubleshoot issues, make product improvements and fix problems. While we may not reply to every report, we\'re reviewing and working on improvements & fixing issues as fast as we can. + Accounts + Add account + Team behind the app + I\'m a Software engineer from Ukraine. I specialize on app design and development. + Follow me + Search + Settings + Search settings + Appearance + Autofill + Development + Experimental + Settings + Notifications + Other + Permissions + Security + Keyguard Premium + Watchtower + Open-source licenses + Accounts + Add & view accounts + Autofill + Android Autofill & Credential services + Security + Biometrics, change password, vault timeout + Keyguard Premium + Unlock features & support app development + Watchtower + Compromised services, vulnerable passwords + Notifications + Alerts + Appearance + Language, theme and animations + Development + Test settings for development + Other + Community websites, app info + Show labels on navigation buttons + App version + App build date + Team behind the app + Reddit community + GitHub project + Crowdin project + Open-source licenses + Download APK file + Load App icons + Load Website icons + Queuing website icon might leak the website address to internet provider + Rich text formatting + Use Markdown to format notes + Language + Suggest translation + Font + Rate on Play Store + Tint color + Theme + Use contrast black theme + Open links in external browser + Conceal fields + Conceal sensitive info, such as passwords and credit card numbers + + Crash + Credential provider + Passkeys, passwords and data services + Privacy policy + Contact us + Experimental + Change app password + Require app password + In addition to your regular security settings, your app password will be required after this time or when biometry settings are changed + Immediately + Never + Send crash reports + Transition animation + Erase app data + Close the app and erase all local app data + Allow screenshots + Show the content of the app when switching between recent apps and allow capturing a screen + Hide the content of the app when switching between recent apps and forbid capturing a screen + Data safety + Lock vault + Lock after a reboot + Lock the vault after a device reboot + Lock when screen turns off + Lock the vault after a few seconds once the screen is off + Lock after a delay + Immediately + Never + Persist vault key on a disk + Vault key is persisted on an internal storage + Vault is locked after the app is unloaded from the memory + Storing a vault key on a disk is a security risk. If the device\'s internal storage is compromised, the attacker will gain access to the local vault data. + Permissions + Features overview + Biometric unlock + + Biometric unlock + Keep the screen on while viewing items + Autofill service + Use the Android Autofill Framework to assist in filling login information into other apps on the device + Auto-copy one-time passwords + When filling a login information, automatically copy one-time passwords + Inline suggestions + Embeds autofill suggestions directly into compatible keyboards + Manual selection + Displays an option to manually search a vault for an entry + Respect Autofill disabled flag + Disables autofill for a browser field that has autofill disabled flag set + Note that some websites are notorious for disabling autofill for a password field as well as some browsers are notorious for ignoring the autofill disabled flag + Ask to save data + Asks for updating the vault when filling of a form has completed + Auto-save app or website info + Automatically clear clipboard + Immediately + Never + One-time password notification duration + When you autofill a login item that has a one-time password, the notification with verification code will popup for at least the defined duration + Never + About Keyguard membership + The Premium unlocks extra features and funds a development of the app. Thank you for supporting us! ❤️ + Subscriptions + Products + Failed to load a list of subscriptions + Failed to load a list of products + Active + Will not renew + Manage on Play Store + Post notifications + Used to post downloading notifications + Camera + Used to scan QR codes + Allow two panel layout in landscape mode + Allow two panel layout in portrait mode + Dark + Light + Disabled + Dynamic + Crossfade + Developed specifically to increase legibility for readers with low vision, and to improve comprehension + Features Overview + Keyguard Premium + Multiple Accounts + Sign-in to multiple accounts simultaneously. + Two-way sync + Add or edit items and sync the changes back. + Offline editing + Add or edit items without internet connection. + Search + Search by anything + Name, email, password, phone number etc. + Filter + Filter by folder, organization, type etc. + Multiple keywords + Search by \'bitw test\' to find your \'Bitwarden Test Account\' item. + Watchtower + Pwned passwords + Find items with exposed in data breaches passwords. + Password strength + Find items with weak passwords. + Reused passwords + Find items with reused passwords. + Inactive 2FA + Find logins with available TOTP two-factor authentication. + Unsecure websites + Find websites that use HTTP protocol, auto-fix to HTTPS. + Incomplete items + Find empty items that might need updates. + Expiring items + Find expired or soon to be expired items. + Duplicate items + Find and merge duplicate items. + Misc + Multi-selection + Merge ciphers, fasten the refactoring with batch operations. + Show as Barcode + Encode a text as different barcodes. + Generator + Generate passwords or usernames. + Data safety + Local data + Local data consists of Downloads, User settings, Vault. They are stored in the internal storage of a device, which can only be accessed by the Android system or the Keyguard. + Downloads + User settings + The User settings are encrypted using a device-specific key. + Vault + The Vault is encrypted using a Key, derived from the App password using following steps: + The Salt and the Hash is then stored locally on a device, to later generate a master key to unlock the vault. + Unlocking a Vault means storing a correct Key in a device\'s RAM, gaining an ability to read and modify encrypted Vault. + Remote data + Remote data is stored on Bitwarden servers with zero-knowledge encryption. + diff --git a/common/src/commonMain/resources/MR/da-rDK/plurals.xml b/common/src/commonMain/resources/MR/da-rDK/plurals.xml new file mode 100644 index 00000000..5f2db8ad --- /dev/null +++ b/common/src/commonMain/resources/MR/da-rDK/plurals.xml @@ -0,0 +1,2 @@ + + diff --git a/common/src/commonMain/resources/MR/da-rDK/strings.xml b/common/src/commonMain/resources/MR/da-rDK/strings.xml new file mode 100644 index 00000000..214f4486 --- /dev/null +++ b/common/src/commonMain/resources/MR/da-rDK/strings.xml @@ -0,0 +1,868 @@ + + + OK + Close + Yes + No + + Name + Account name + Username + Password + App password + Current password + New password + Email + Verified + Not verified + Email visibility + Public URL + URL + + Access count + Learn more + Phone number + Passport number + License number + Card number + No card number + Brand + Security code + Valid from + Valid to + Card expiry month + Card expiry year + Cardholder name + Valid from + Expiry date + Company + Sync + + Hidden + + Visible + + Empty + + SSN + City + State + Info + Cancel + Continue + Country + Address + Postal code + Pull to search + Save + URI + URIs + Note + Notes + Attachments + No attachments + Expiring soon + Incomplete data + This item is missing some of the important information. + Item + Items + %1$s items + All items + No items + No folder + New folder + Folder + Folders + No folders + No collection + Collection + Collections + No collections + My vault + Organization + Organizations + No organizations + Miscellaneous + Add integration + Account + Accounts + No accounts + No account + Type + Options + Send + Reset + Length + Security + Contact info + Title + First name + Middle name + Last name + Full name + Address line 1 + Address line 2 + Address line 3 + Rename + Select type + Autofill + Passkey + Create a passkey + Unlock Keyguard + Confirming auth request… + Passkeys + + Signature counter + + Relying party + + Discoverable + Username + Display name + API key + Domain + Edit + Delete + Remove + Remove from the history + Reused password + Reused passwords + One-time password + Authenticator key + Use + Save passkey + Passkey available + Two-factor authentication available + Custom + Follow system settings + + Coming soon + Powered by + Verification code + Re-send verification code + Requested a verification email + Web vault + Launch Web vault + + Remember me + + Trash + + Download + Downloads + No downloads + No duplicates + Encryption + + Key + Hash + Salt + 256-bit AES + Random %1$d-bits of data + None + Text + Linked apps + Linked URIs + Custom fields + Reveal a secure note + Hide a secure note + Master password hint + Fingerprint phrase + What is a fingerprint? + Bitwarden premium + Unofficial Bitwarden server + Last synced at %1$s + Change name + Change color + Change master password hint + Sign out + Sign in + Visit Web vault to verify your email address + Upgrade your account to a premium membership and unlock some great additional features + Two-factor authentication + Require login verification with another device such as a security key, authenticator app, SMS or email + Active + Items + Log out + Log out? + All of the not synchronized changes will be lost! + Change name + Change names + Delete folder? + Delete folders? + This item(s) will be deleted immediately. You can not undo this action. + Recently opened + Often opened + View details + Save to + Add to favourites + Remove from favourites + Enable auth re-prompt + Disable auth re-prompt + Edit + Merge into… + Copy to… + Move to folder + Change name + Change names + Add password + Add passwords + Change password + Change passwords + View password history + Trash + Restore + Delete forever + Move associated items to trash + Open with… + Send with… + Open in a file manager + Delete local file + View parent item + Always show keyboard + Sync vault + Lock vault + Rename folder + Check the email in known data breaches + Check the username in known data breaches + Check the password in known data breaches + Check the website in known data breaches + Launch app + Launch website + Launch docs + Launch browser + Launch main page + Launch Play store + Launch with %1$s + Launch with… + How to delete an account? + Unsecure + Match app + Match detection + Base domain + Match resources by top-level and second-level domain. + Host + Match resources by hostname and (if specified) port. + Starts with + Match resources when the detected resource starts with the URI. + Exact + Match resources when the detected resource exactly matches the URI. + Regular expression + Match resources by regular expression. Advanced option. + Never + Ignore URI during auto-fill item search. + %1$s linked to the password + %1$s linked to the username + %1$s linked to the cardholder name + %1$s linked to the expiration month + %1$s linked to the expiration year + %1$s linked to the card code + %1$s linked to the card brand + %1$s linked to the card number + %1$s linked to the title + %1$s linked to the middle name + %1$s linked to the address line (1) + %1$s linked to the address line (2) + %1$s linked to the address line (3) + %1$s linked to the city + %1$s linked to the state + %1$s linked to the postal code + %1$s linked to the country + %1$s linked to the company + %1$s linked to the email + %1$s linked to the phone number + %1$s linked to the SSN + %1$s linked to the username + %1$s linked to the passport number + %1$s linked to the license number + %1$s linked to the first name + %1$s linked to the last name + %1$s linked to the full name + %1$s linked to an unknown field + Share with… + %1$d selected + Copy + Copy value + Copy URL + Copy URI + Copy package name + Copy password + Copy username + Copy email + Copy phone number + Copy passport number + Copy license number + Copy card number + Copy cardholder name + Copy expiration year + Copy expiration month + Copy CVV code + Copy one-time password + Copy secret key + Unlock Keyguard + Open Keyguard + January + February + March + April + May + June + July + August + September + October + November + December + Move up + Move down + Remove + Remove an item? + Add more + FIDO2 WebAuthn + Authenticate WebAuthn + Return to app + + Must not be empty + + Must not be blank + Must be custom domain + Must contain only US-ASCII characters + Must be at least %1$d symbols long + Must be %1$d symbols long + Invalid domain + Invalid email + Invalid URL + Invalid URI + Invalid card number + Incorrect password + Failed to generate OTP code + Failed to create a passkey + Failed to authorize a request + + Barcode + Show as Barcode + Copy this authenticator to another device by scanning the QR code. + + Date picker + + Color picker + + How to delete an account? + A collection of info of how to delete your account from web services + + Easy + + Medium + + Hard + + Limited availability + + Impossible + Send email + Search websites + No instructions + Two-factor authentication + List of websites with two-factor authentication support + Search websites + Passkeys + List of websites with passkeys support + Search websites + + Data breach + Breached account data can provide malicious actors with access to sensitive personal and financial information, potentially leading to identity theft, financial fraud, and other forms of cybercrime. + No breaches found + Breached accounts found + Breaches + Occurred on %1$s + Reported on %1$s + Failed to check data breaches. You might currently be offline + Data breach + A password that is found in the data breaches takes significantly less time to break and should never be used. + Password is compromised + The password has been identified in known data breaches. Please change it immediately to protect your online security + No breaches found + Failed to check data breaches. You might currently be offline + + Large Type + Show in Large Type + Show in Large Type and Lock vault + App Picker + Search installed apps + System app + No apps + Choose a folder + Create a new folder: + + This organization will have an ownership of the copy. You will not be the direct owner. + Email forwarders + Email forwarders + Delete email forwarder? + Delete email forwarders? + Email forwarder integration + No email forwarders + Create an encrypted vault where the local data will be stored. + App password + Biometric authentication + Create a vault + Send crash reports + Create a vault + Erase app data + Close the app and erase all local app data + The vault is locked. Enter your app password to continue. + Unlock + + Unlock a vault + + Use biometric authentication to unlock the vault. + User verification is required. Enter your app password to continue. + Verify + Sync status + Up to date + Pending + Syncing + Sync failed + New item + Edit item + Style text with %1$s or %2$s and more. Limited Markdown syntax is supported. + italic + bold + Render preview + Auth re-prompt + Ask to authenticate again when you view or autofill a cipher + Add Bitwarden account + We are not affiliated, associated, authorized, endorsed by, or in any way officially connected with the Bitwarden, Inc., or any of its subsidiaries or its affiliates. + + To pass the captcha verification on an unofficial Bitwarden client, you must specify the client secret. To find it, visit Web vault / Settings / API Key. + + Client secret + Sign in + Region + United States + Europe + Custom (self-hosted) + HTTP headers + HTTP header + You can add custom HTTP headers that will be sent with every request to the server. + Key + Value + Add more + Server URL + Specify the base URL of your self-hosted Bitwarden installation. + Custom environment + You can specify the base URL of each service independently. + Web Vault Server URL + API Server URL + Icons Server URL + Identity Server URL + Verification + This authentication method is not supported yet. + Enter the verification code from your authenticator app. + Enter the verification code that was emailed to %1$s. + Enter the YubiKey authentication code manually. Place the cursor on the field below and trigger the YubiKey. + Authenticator + Duo (Organization) + FIDO2 Web Authentication + Email + FIDO U2F + Connect YubiKey via USB + Requires USB OTG support. + Touch the gold sensor on your YubiKey now. + Hold your YubiKey flat against the back of your device + Requires NFC support. + Failed to read YubiKey + Using FIDO2 WebAuthn requires using the Bitwarden Web vault version %1$s or higher. On older versions the authentication result will incorrectly be forwarded to the official Bitwarden app. + Confirm access + This data is protected, to continue please enter your app password. + + Confirm access + + Use biometric authentication to confirm your access and unlock this data. + Vault + Send + Generator + Watchtower + Settings + Locked due to inactivity + Text + File + Login + Card + Identity + Note + Passkey + Text + Boolean + Linked + + Pwned + Very strong + Strong + Good + Fair + Weak + Very strong passwords + Strong passwords + Good passwords + Fair passwords + Weak passwords + Filter + No filters available + Sort by + No sorting available + Title + Alphabetically + Reverse Alphabetically + Access count + Largest First + Smallest First + Modification date + Newest First + Oldest First + Expiration date + Newest First + Oldest First + Deletion date + Newest First + Oldest First + Password + Alphabetically + Reverse Alphabetically + Password modification date + Newest First + Oldest First + Password strength + Weakest First + Strongest First + Search vault + New item + There are no suggested items available for this context + + Security code + Saved to %1$s at %2$s + Password last modified at %1$s + Passkey created at %1$s + Last modified at %1$s + Created at %1$s + Deleted at %1$s + Expired at %1$s + Expiration scheduled at %1$s + Deleting scheduled at %1$s + + Call + + Text + + Email + + Directions + Sends + Search sends + New item + A password is required to access this share + Generator + Username generator + Password generator + Generate + Regenerate + Passphrase + Random passphrases provide the best combination of memorability and security. + Delimiter + Capitalize + Number + Username + Delimiter + Custom word + Capitalize + Number + Random symbols + A strong password has at least %1$d characters, uppercase & lowercase letters, digits and symbols. + Digits + Symbols + Uppercase letters + Lowercase letters + + Exclude similar symbols + + Exclude ambiguous symbols + Catch-all email + A catch-all email address provides users the option to receive all mail sent to their domain, even if they are sent to an email address that has not been set up for their domain. Ensure that your email hosting supports this feature before using it. + + Domain + Plus addressing email + Plus addressing means any email sent to %1$s is still sent to your account. This means you can have a lot of variations on your email address to give out to different people, sites, or mailing lists. Ensure that your email hosting supports this feature before using it. + Email + Subdomain addressing email + Subdomain addressing means any email sent to %1$s is still sent to your account. This means you can have a lot of variations on your email address to give out to different people, sites, or mailing lists. Ensure that your email hosting supports this feature before using it. + Email + Forwarded email alias + Create new login with the password + Create new login with the username + Password history + Show tips + Generator history + Clear history + Clear generator history? + This will remove all items from the history. + Password history + Clear history + Clear password history? + This will remove all passwords from the history. + Watchtower + Password strength + Security + Maintenance + Pwned Passwords + Passwords that have been exposed in data breaches. Such passwords should be changed immediately. + Reused Passwords + Don\'t use the same password on multiple websites. Generate unique passwords to improve security. + Vulnerable Accounts + Sites that were affected by a data breach since you last changed a password. Change your password to keep your account safe. + Unsecure Websites + Change the URLs that use HTTP protocol to use HTTPS protocol, as the latter utilizes the most advanced encryption available. + Inactive two-factor authentication + Sites that have two-factor authentication available but you haven\'t set it up yet. + Available Passkeys + Sites that have passkey available but you haven\'t set it up yet. It\'s simpler and more secure then a password. + Incomplete Items + Helps you identify missing or incomplete data in your vault. This can refer to identities with missing names or logins without usernames. + Expiring Items + Items that have expired or are expiring soon. + Duplicate URIs + Items that have one or more URIs that cover the same websites after applying the match detection. + Trashed Items + Items that have been moved into the trash. Having too many items in the trash may slow down operations with your vault. + Empty Folders + Folders that do not have any items in them. + Duplicate Items + Helps you identify and eliminate duplicate items in your vault. + Compromised Accounts + Check data breaches by a username or email address. + Change app password + Change password + Biometric authentication + + Change app password + App password never gets stored on the device nor sent over the network. It is used to generate a secret key that is used to encrypt the local data. + Unless you suspect unauthorized access or discover a malware on the device, there is no need to change the password if it is a strong, unique password. + Contact us + Your message + Use English to ensure that your feedback doesn\'t get misunderstood. + We appreciate the time that you spend sending us a message. Your message goes directly to us and we use it to troubleshoot issues, make product improvements and fix problems. While we may not reply to every report, we\'re reviewing and working on improvements & fixing issues as fast as we can. + Accounts + Add account + Team behind the app + I\'m a Software engineer from Ukraine. I specialize on app design and development. + Follow me + Search + Settings + Search settings + Appearance + Autofill + Development + Experimental + Settings + Notifications + Other + Permissions + Security + Keyguard Premium + Watchtower + Open-source licenses + Accounts + Add & view accounts + Autofill + Android Autofill & Credential services + Security + Biometrics, change password, vault timeout + Keyguard Premium + Unlock features & support app development + Watchtower + Compromised services, vulnerable passwords + Notifications + Alerts + Appearance + Language, theme and animations + Development + Test settings for development + Other + Community websites, app info + Show labels on navigation buttons + App version + App build date + Team behind the app + Reddit community + GitHub project + Crowdin project + Open-source licenses + Download APK file + Load App icons + Load Website icons + Queuing website icon might leak the website address to internet provider + Rich text formatting + Use Markdown to format notes + Language + Suggest translation + Font + Rate on Play Store + Tint color + Theme + Use contrast black theme + Open links in external browser + Conceal fields + Conceal sensitive info, such as passwords and credit card numbers + + Crash + Credential provider + Passkeys, passwords and data services + Privacy policy + Contact us + Experimental + Change app password + Require app password + In addition to your regular security settings, your app password will be required after this time or when biometry settings are changed + Immediately + Never + Send crash reports + Transition animation + Erase app data + Close the app and erase all local app data + Allow screenshots + Show the content of the app when switching between recent apps and allow capturing a screen + Hide the content of the app when switching between recent apps and forbid capturing a screen + Data safety + Lock vault + Lock after a reboot + Lock the vault after a device reboot + Lock when screen turns off + Lock the vault after a few seconds once the screen is off + Lock after a delay + Immediately + Never + Persist vault key on a disk + Vault key is persisted on an internal storage + Vault is locked after the app is unloaded from the memory + Storing a vault key on a disk is a security risk. If the device\'s internal storage is compromised, the attacker will gain access to the local vault data. + Permissions + Features overview + Biometric unlock + + Biometric unlock + Keep the screen on while viewing items + Autofill service + Use the Android Autofill Framework to assist in filling login information into other apps on the device + Auto-copy one-time passwords + When filling a login information, automatically copy one-time passwords + Inline suggestions + Embeds autofill suggestions directly into compatible keyboards + Manual selection + Displays an option to manually search a vault for an entry + Respect Autofill disabled flag + Disables autofill for a browser field that has autofill disabled flag set + Note that some websites are notorious for disabling autofill for a password field as well as some browsers are notorious for ignoring the autofill disabled flag + Ask to save data + Asks for updating the vault when filling of a form has completed + Auto-save app or website info + Automatically clear clipboard + Immediately + Never + One-time password notification duration + When you autofill a login item that has a one-time password, the notification with verification code will popup for at least the defined duration + Never + About Keyguard membership + The Premium unlocks extra features and funds a development of the app. Thank you for supporting us! ❤️ + Subscriptions + Products + Failed to load a list of subscriptions + Failed to load a list of products + Active + Will not renew + Manage on Play Store + Post notifications + Used to post downloading notifications + Camera + Used to scan QR codes + Allow two panel layout in landscape mode + Allow two panel layout in portrait mode + Dark + Light + Disabled + Dynamic + Crossfade + Developed specifically to increase legibility for readers with low vision, and to improve comprehension + Features Overview + Keyguard Premium + Multiple Accounts + Sign-in to multiple accounts simultaneously. + Two-way sync + Add or edit items and sync the changes back. + Offline editing + Add or edit items without internet connection. + Search + Search by anything + Name, email, password, phone number etc. + Filter + Filter by folder, organization, type etc. + Multiple keywords + Search by \'bitw test\' to find your \'Bitwarden Test Account\' item. + Watchtower + Pwned passwords + Find items with exposed in data breaches passwords. + Password strength + Find items with weak passwords. + Reused passwords + Find items with reused passwords. + Inactive 2FA + Find logins with available TOTP two-factor authentication. + Unsecure websites + Find websites that use HTTP protocol, auto-fix to HTTPS. + Incomplete items + Find empty items that might need updates. + Expiring items + Find expired or soon to be expired items. + Duplicate items + Find and merge duplicate items. + Misc + Multi-selection + Merge ciphers, fasten the refactoring with batch operations. + Show as Barcode + Encode a text as different barcodes. + Generator + Generate passwords or usernames. + Data safety + Local data + Local data consists of Downloads, User settings, Vault. They are stored in the internal storage of a device, which can only be accessed by the Android system or the Keyguard. + Downloads + User settings + The User settings are encrypted using a device-specific key. + Vault + The Vault is encrypted using a Key, derived from the App password using following steps: + The Salt and the Hash is then stored locally on a device, to later generate a master key to unlock the vault. + Unlocking a Vault means storing a correct Key in a device\'s RAM, gaining an ability to read and modify encrypted Vault. + Remote data + Remote data is stored on Bitwarden servers with zero-knowledge encryption. + diff --git a/common/src/commonMain/resources/MR/de-rDE/plurals.xml b/common/src/commonMain/resources/MR/de-rDE/plurals.xml new file mode 100644 index 00000000..5f2db8ad --- /dev/null +++ b/common/src/commonMain/resources/MR/de-rDE/plurals.xml @@ -0,0 +1,2 @@ + + diff --git a/common/src/commonMain/resources/MR/de-rDE/strings.xml b/common/src/commonMain/resources/MR/de-rDE/strings.xml new file mode 100644 index 00000000..9fd7c320 --- /dev/null +++ b/common/src/commonMain/resources/MR/de-rDE/strings.xml @@ -0,0 +1,868 @@ + + + OK + Schließen + Ja + Nein + + Name + Kontoname + Benutzername + Passwort + App-Passwort + Aktuelles Passwort + Neues Passwort + E-Mail + Verifiziert + Nicht verifiziert + E-Mail Sichtbarkeit + Öffentliche URL + URL + + Anzahl der Ansichten + Mehr Informationen + Telefonnummer + Ausweisnummer + Ausweisnummer + Kartennummer + Keine Kartennummer + Marke + CVV + Gültig vom + Gültig bis + Card expiry month + Card expiry year + Name des Karteninhabers + Gültig ab + Gültig bis + Unternehmen + Synchronisierung + + Verborgen + + Sichtbar + + Leer + + SSN + Ort + Staat/Provinz + Info + Abbrechen + Fortsetzen + Land + Adresse + PLZ + Zum Suchen ziehen + Speichern + URI + URIs + Notiz + Notizen + Anhänge + Keine Anhänge + Läuft bald ab + Unvollständige Daten + In diesem Eintrag fehlen einige wichtige Informationen. + Element + Elemente + %1$s Elemente + Alle Einträge + Keine Einträge vorhanden + Kein Ordner + Neuer Ordner + Ordner + Ordner + Keine Ordner vorhanden + Keine Sammlung + Sammlung + Sammlungen + Keine Kollektionen vorhanden + Mein Tresor + Unternehmen + Organisationen + Keine Organisationen vorhanden + Diverses + Integration hinzufügen + Konto + Konten + Keine Accounts vorhanden + Kein Konto + Typ + Optionen + Senden + Zurücksetzen + Länge + Sicherheit + Kontaktdaten + Titel + Vorname + Zweitname + Nachname + Full name + Adresszeile 1 + Adresszeile 2 + Adresszeile 3 + Umbenennen + Select type + Automatisches Ausfüllen + Passkey + Create a passkey + Unlock Keyguard + Confirming auth request… + Passkeys + + Signature counter + + Relying party + + Auffindbar + Benutzername + Anzeigename + API-Schlüssel + Domäne + Bearbeiten + Löschen + Entfernen + Aus Verlauf entfernen + Wiederverwendetes Passwort + Wiederverwendete Passwörter + Einmalpasswort + Authentifizierungsschlüssel + Nutzen + Save passkey + Passkey verfügbar + Zwei-Faktor-Authentifizierung verfügbar + Benutzerdefiniert + Systemeinstellungen folgen + + Demnächst + Betrieben durch + Bestätigungscode + Bestätigungs-Code erneut senden + Bestätigungs E-Mail angefordert + Web-Tresor + Web-Tresor starten + + Anmeldedaten speichern + + Papierkorb + + Herunterladen + Heruntergeladenes + Keine Downloads vorhanden + Keine Duplikate vorhanden + Verschlüsselung + + Schlüssel + Hash + Salz + 256-Bit AES + Zufällige %1$d Bits von Daten + Keine + Text + Verknüpfte Apps + Verknüpfte URIs + Benutzerdefinierte Felder + Sichere Notiz anzeigen + Sichere Notiz ausblenden + Master-Passwort-Hinweis + Fingerabdrucksatz + Was ist ein Fingerabdruck? + Bitwarden premium + Inoffizieller Bitwarden-Server + Zuletzt synchronisiert am %1$s + Name ändern + Farbe ändern + Master-Passwort-Hinweis ändern + Abmelden + Anmelden + Besuchen Sie den Web-Tresor, um Ihre E-Mail-Adresse zu verifizieren + Upgrade dein Konto auf eine Premium-Mitgliedschaft, um zusätzliche, großartige Funktionen freizuschalten + Zwei-Faktor-Authentifizierung + Erfordert die Überprüfung der Anmeldung mit einem anderen Gerät wie einem Sicherheitsschlüssel, einer Authentifizierungs-App, einer SMS oder einer E-Mail + Aktiv + Elemente + Abmelden + Abmelden? + Alle nicht synchronisierten Änderungen gehen verloren! + Name ändern + Namen ändern + Ordner löschen? + Ordner löschen? + Diese Elemente werden sofort gelöscht. Sie können diese Aktion nicht rückgängig machen. + Kürzlich geöffnet + Oft geöffnet + Details anzeigen + Speichern unter + Zu Favoriten hinzufügen + Aus Favoriten entfernen + Aktiviere Authentifizierungs-Wiederholung + Deaktiviere Authentifizierungs-Wiederholung + Bearbeiten + Zusammenführen… + Kopieren nach… + In Ordner verschieben + Name ändern + Namen ändern + Passwort hinzufügen + Passwörter hinzufügen + Passwort ändern + Passwörter ändern + Passwortverlauf anzeigen + Papierkorb + Wiederherstellen + Für immer löschen + Zugehörige Elemente in den Papierkorb verschieben + Öffnen mit… + Mit… senden + Im Dateimanager öffnen + Delete local file + View parent item + Tastatur immer anzeigen + Tresor synchronisieren + Tresor sperren + Ordner umbenennen + Überprüfe, ob die E-Mail in bekannten Datenlecks vorhanden ist + Überprüfe, ob der Benutzernamen bei bekannten Datenlecks vorhanden ist + Überprüfe, ob das Passwort bei bekannten Datenlecks vorhanden ist + Website in bekannten Datenlecks überprüfen + App starten + Website Öffnen + Dokumentation öffnen + Browser starten + Hauptseite starten + Play Store starten + Mit %1$s starten + Starten mit… + Wie lösche ich ein Konto? + Unsicher + Passende App + Übereinstimmungserkennung + Basisdomäne + Ressourcen nach Top-Level- und Second-Level-Domäne abgleichen. + Host + Ressourcen nach Hostname und (wenn angegeben) Port abgleichen. + Beginnt mit + Ressourcen anpassen, wenn die erkannte Ressource mit der URL beginnt. + Genau + Ressourcen anpassen, wenn die erkannte Ressource genau mit der URL übereinstimmt. + Regular expression + Ressourcen nach regulärem Ausdruck anpassen. Erweiterte Option. + Nie + Ignoriere URI während der automatischen Artikelsuche. + %1$s linked to the password + %1$s linked to the username + %1$s linked to the cardholder name + %1$s linked to the expiration month + %1$s linked to the expiration year + %1$s linked to the card code + %1$s linked to the card brand + %1$s linked to the card number + %1$s linked to the title + %1$s linked to the middle name + %1$s linked to the address line (1) + %1$s linked to the address line (2) + %1$s linked to the address line (3) + %1$s linked to the city + %1$s linked to the state + %1$s linked to the postal code + %1$s linked to the country + %1$s linked to the company + %1$s linked to the email + %1$s linked to the phone number + %1$s linked to the SSN + %1$s linked to the username + %1$s linked to the passport number + %1$s linked to the license number + %1$s linked to the first name + %1$s linked to the last name + %1$s linked to the full name + %1$s linked to an unknown field + Teilen mit… + %1$d ausgewählt + Kopieren + Inhalt kopieren + URL kopieren + URI kopieren + Paketname kopieren + Passwort kopieren + Benutzername kopieren + E-Mail kopieren + Telefonnummer kopieren + Passnummer kopieren + Lizenznummer kopieren + Kartennummer kopieren + Namen des Karteninhabers kopieren + Ablaufjahr kopieren + Ablaufmonat kopieren + CVV-Code kopieren + OTP-Code kopieren + Geheimschlüssel kopieren + Keyguard entsperren + Keyguard öffnen + Januar + Februar + März + April + Mai + Juni + Juli + August + September + Oktober + November + Dezember + Nach oben + Nach unten + Entfernen + Element entfernen? + Mehr hinzufügen + FIDO2 WebAuthn + WebAuthn authentifizieren + Zurück zur App + + Darf nicht leer sein + + Darf nicht leer sein + Muss eine eigene Domain sein + Darf nur US-ASCII-Zeichen enthalten + Muss mindestens %1$d Zeichen lang sein + Muss %1$d Zeichen lang sein + Ungültige Domain + Ungültige E-Mail + Ungültige URL + Ungültige URI + Kartennummer ungültig + Falsches Passwort + Fehler beim Generieren des OTP-Codes + Failed to create a passkey + Failed to authorize a request + + Barcode + Als Barcode anzeigen + Kopieren Sie diesen Authentifikator auf ein anderes Gerät, indem Sie den QR-Code scannen. + + Datumsauswahl + + Farbauswahl + + Wie lösche ich ein Konto? + Eine Sammlung von Informationen, wie Sie Ihr Konto von Webdiensten löschen können + + Einfach + + Mittel + + Schwer + + Begrenzte Verfügbarkeit + + Unmöglich + E-Mail senden + Webseiten durchsuchen + Keine Anweisungen + Zwei-Faktor-Authentifizierung + Liste an Webseiten mit Unterstützung für Zwei-Faktor-Authentifizierung + Webseiten durchsuchen + Passkeys + Liste der Websites mit Unterstützung von Passkeys + Webseiten durchsuchen + + Datenleck + Die veröffentlichten Kontodaten können böswilligen Aktoren Zugriff auf vertrauliche persönliche und finanzielle Informationen gewähren, was potenziell zu Identitätsdiebstahl, Finanzbetrug und anderen Formen von Cyberkriminalität führen. + Keine Datenlecks gefunden + Betroffene Konten gefunden + Datenlecks + Am %1$s passiert + Gemeldet am %1$s + Fehler beim Prüfen von Datenbruchs. Möglicherweise sind Sie derzeit offline + Datenleck + Ein Passwort, das in den Datenlecks gefunden wird, dauert deutlich weniger Zeit zum Brechen und wird nicht empfohlen zu verwenden. + Gebrochene Passwörter gefunden + Das Passwort wurde bei bekannten Datenlecks identifiziert. Bitte ändern Sie es sofort, um Ihre Online-Sicherheit zu schützen + Keine Datenlecks gefunden + Konnte nicht auf Datenlecks überprüfen. Möglicherweise bist Du offline + + Großer Typ + Im großen Typ anzeigen + Im großen Typ anzeigen und Tresor verschließen + App Auswahl + Installierte Apps durchsuchen + System App + Keine Apps + Ordner auswählen + Neuen Ordner erstellen: + + Diese Organisation wird Eigentum der Kopie haben. Sie werden nicht der direkte Eigentümer sein. + E-Mail-Weiterleitungen + E-Mail-Weiterleitungen + E-Mail-Weiterleitung löschen? + E-Mail-Weiterleitungen löschen? + E-Mail-Weiterleitung Integration + No email forwarders + Erstelle einen verschlüsselten Tresor in dem lokale Daten gespeichert werden. + App Passwort + Biometrische Authentifizierung + Tresor erstellen + Absturzberichte senden + Tresor erstellen + App-Daten löschen + App schließen und alle lokalen App-Daten löschen + Der Tresor ist gesperrt. Geben Sie Ihr App-Passwort ein, um fortzufahren. + Entsperren + + Tresor freischalten + + Verwenden Sie biometrische Authentifizierung, um den Tresor zu entsperren. + Benutzerverifizierung erforderlich. Geben Sie Ihr App-Passwort ein, um fortzufahren. + Verify + Synchronisationsstatus + Auf dem neuesten Stand + Ausstehend + Synchronisieren + Synchronisierung fehlgeschlagen + Neues Element + Element bearbeiten + Text mit %1$s oder %2$s und mehr visuell aufarbeiten. Limitierter Markdown-Syntax wird unterstützt. + kursiv + fett + Render-Vorschau + Auth erneut anfordern + Nach erneuter Authentifizierung fragen, wenn du eine Chiffre ansiehst oder automatisch Einfügst + Bitwarden Account hinzufügen + Wir sind nicht verbunden, verknüpft, autorisiert, unterstützt oder in irgendeiner Weise offiziell verbunden mit der Bitwarden, Inc. oder einer ihrer Tochtergesellschaften oder ihrer verbundenen Unternehmen. + + Um die Captcha-Verifizierung auf einem inoffiziellen Bitwarden-Client zu bestehen, müssen Sie das Client-Geheimnis angeben. Um es zu finden, besuchen Sie den Web-Tresor / Einstellungen / API-Schlüssel. + + Client-Geheimnis + Anmelden + Region + Vereinigte Staaten + Europa + Benutzerdefiniert (selbst gehostet) + HTTP-Header + HTTP-Header + Sie können eigene HTTP-Header hinzufügen, die mit jeder Anfrage an den Server gesendet werden. + Schlüssel + Wert + Mehr hinzufügen + Server-URL + Geben Sie die Basis-URL Ihrer selbst gehosteten Bitwarden Installation an. + Benutzerdefinierte Umgebung + Sie können die Basis-URL jedes Dienstes unabhängig voneinander angeben. + Web-Tresor Server URL + API Server URL + Icons Server URL + Identitätsserver-URL + Verifizierung + Diese Authentifizierungsmethode wird noch nicht unterstützt. + Geben Sie den Bestätigungscode aus Ihrer Authentifizierungs-App ein. + Geben Sie den Bestätigungscode ein, der an %1$s gesendet wurde. + Geben Sie den YubiKey Authentifizierungscode manuell ein. Platzieren Sie den Cursor auf das Feld unten und lösen Sie den YubiKey aus. + Authentifizierer + Duo (Organisation) + FIDO2 Web-Authentifizierung + E-Mail + FIDO U2F + Verbinde YubiKey über USB + Erfordert USB OTG Unterstützung. + Berühren Sie jetzt den Goldsensor auf Ihrem YubiKey. + Halte deinen YubiKey flach gegen die Rückseite deines Geräts + Benötigt NFC-Unterstützung. + Fehler beim Lesen von YubiKey + Die Verwendung von FIDO2 WebAuthn erfordert die Verwendung der Bitwarden Web Tresor Version %1$s oder höher. Bei älteren Versionen wird das Authentifizierungsergebnis fälschlicherweise an die offizielle Bitwarden App weitergeleitet. + Zugriff bestätigen + Diese Daten sind geschützt, um fortzufahren, bitte geben Sie Ihr App-Passwort ein. + + Zugriff bestätigen + + Biometrische Authentifizierung verwenden, um den Zugriff zu bestätigen und die Daten freizuschalten. + Tresor + Send + Generator + Wachturm + Einstellungen + Wegen Inaktivität gesperrt + Text + Datei + Login + Karte + Identität + Notiz + Passkey + Text + Wahrheitswert + Verknüpft + + Aufgedeckt + Sehr stark + Stark + Gut + Fair + Schwach + Sehr starke Passwörter + Starke Passwörter + Gute Passwörter + Faire Passwörter + Schwache Passwörter + Filter + Keine Filter verfügbar + Sortieren nach + Keine Sortierung verfügbar + Titel + Alphabetisch + Umgekehrt Alphabetisch + Anzahl der Ansichten + Größte zuerst + Kleinste zuerst + Änderungsdatum + Neuste zuerst + Älteste zuerst + Verfallsdatum + Neuste zuerst + Älteste zuerst + Löschdatum + Neuste zuerst + Älteste zuerst + Passwort + Alphabetisch + Umgekehrt Alphabetisch + Passwort Änderungsdatum + Neuste zuerst + Älteste zuerst + Passwortstärke + Schwächste zuerst + Stärkste zuerst + Tresor durchsuchen + Neuer Eintrag + There are no suggested items available for this context + + Sicherheitscode + In %1$s auf %2$s gespeichert + Passwort zuletzt geändert am %1$s + Passkey erstellt am %1$s + Zuletzt geändert am %1$s + Erstellt am %1$s + Gelöscht am %1$s + Abgelaufen am %1$s + Ablaufdatum %1$s + Löschung geplant für %1$s + + Anrufen + + Schreiben + + E-Mail + + Wegbeschreibung + Sends + Sends durchsuchen + Neuer Eintrag + Ein Passwort wird benötigt, um auf diese Freigabe zuzugreifen + Generator + Benutzernamen Generator + Passwort Generator + Generieren + Neu generieren + Passphrase + Zufällige Passphrasen bieten die beste Kombination aus Gedächtnisfähigkeit und Sicherheit. + Trennzeichen + Großbuchstaben + Zahlen + Benutzername + Trennzeichen + Benutzerdefiniertes Wort + Großschreibung + Zahlen + Zufällige Symbole + Ein starkes Passwort hat eine Mindestlänge von %1$d, Groß- & Kleinbuchstaben, Zahlen und Symbole. + Stellen + Symbole + Großbuchstaben + Kleinbuchstaben + + Ähnliche Symbole ausschließen + + Mehrdeutige Symbole ausschließen + Catch-All E-Mail Adresse + Eine \"Catch-All-E-Mail-Adresse\" bietet Benutzern die Möglichkeit, alle E-Mails an ihre Domain zu erhalten, auch wenn sie an eine E-Mail-Adresse gesendet werden, die nicht für ihre Domain eingerichtet wurde. Stellen Sie sicher, dass Ihr E-Mail-Hosting diese Funktion unterstützt, bevor Sie sie verwenden. + + Domäne + Plus-adressierte E-Mail-Adresse + Plus Adressierung bedeutet, dass jede E-Mail, die an %1$s gesendet wird, immer noch an Ihr Konto gesendet wird. Das bedeutet, dass Sie eine Vielzahl von Variationen an Ihre E-Mail-Adresse haben können, die Sie an verschiedene Personen, Seiten oder Mailinglisten verteilen können. Stellen Sie sicher, dass Ihr E-Mail-Hosting diese Funktion unterstützt, bevor Sie sie verwenden. + E-Mail + Subdomänen adressierende E-Mail + Subdomänenadressierung bedeutet, dass jede E-Mail, die an %1$s gesendet wird, immer noch an Ihr Konto gesendet wird. Das bedeutet, dass Sie eine Vielzahl von Variationen an Ihre E-Mail-Adresse haben können, die Sie an verschiedene Personen, Sites oder Mailinglisten verteilen können. Stellen Sie sicher, dass Ihr E-Mail-Hosting diese Funktion unterstützt, bevor Sie sie verwenden. + E-Mail + Weitergeleiteter E-Mail-Alias + Neuen Login mit Passwort erstellen + Neuen Login mit dem Benutzernamen erstellen + Passwortverlauf + Tipps anzeigen + Generatorverlauf + Verlauf leeren + Generatorverlauf löschen? + Dadurch werden alle Elemente aus dem Verlauf entfernt. + Passwortverlauf + Verlauf leeren + Passwortverlauf löschen? + Dadurch werden alle Passwörter aus dem Verlauf entfernt. + Wachturm + Passwortstärke + Sicherheit + Wartung + Aufgedeckte Passwörter + Bei Datenlecks aufgedeckte Passwörter sollten unverzüglich geändert werden. + Wiederverwendete Passwörter + Benutzen Sie nicht dasselbe Passwort auf mehreren Webseiten. Generieren Sie einzigartige Passwörter, um die Sicherheit zu verbessern. + Anfällige Konten + Seiten, die von einem Datenleck betroffen waren, seit Sie zuletzt ein Passwort geändert haben. Ändern Sie Ihr Passwort, um Ihr Konto sicher zu halten. + Unsichere Websites + Ändere die URLs, die HTTP-Protokoll verwenden dazu das HTTPS-Protokoll zu verwenden, da letztere die fortschrittlichste Verschlüsselung verwendet. + Inaktive Zwei-Faktor-Authentifizierung + Seiten, die eine Zwei-Faktor-Authentifizierung haben, die Sie aber noch nicht eingerichtet haben. + Verfügbare Passkeys + Sites, die Passkeys haben, die Sie aber noch nicht eingerichtet haben. + Unvollständige Elemente + Hilft Ihnen, fehlende oder unvollständige Daten in Ihrem Tresor zu identifizieren. Dies kann sich auf Identitäten mit fehlenden Namen oder Logins ohne Benutzernamen beziehen. + Abgelaufene Elemente + Elemente, die abgelaufen sind oder bald ablaufen. + Duplizierte URIs + Elemente, die eine oder mehrere URIs haben, die die gleiche Website abdecken, nachdem die Match-Erkennung angewendet wurde. + Gelöschte Elemente + Elemente, die in den Papierkorb verschoben wurden. Zu viele Gegenstände im Papierkorb können die Operationen mit Ihrem Tresor verlangsamen. + Leere Ordner + Ordner, in denen keine Elemente enthalten sind. + Duplizierte Elemente + Hilft Ihnen, identische Elemente in deinem Tresor zu identifizieren und zu entfernen. + Komprimierte Konten + Datenlecks nach Nutzernamen oder E-Mail-Adressen überprüfen. + App-Passwort ändern + Passwort ändern + Biometrische Authentifizierung + + App-Passwort ändern + App-Passwort wird nie auf dem Gerät gespeichert oder über das Netzwerk versendet. Es wird verwendet, um einen geheimen Schlüssel zu generieren, der zur Verschlüsselung der lokalen Daten verwendet wird. + Es sei denn, Sie vermuten unbefugten Zugriff oder eine Malware auf dem Gerät zu entdecken, es gibt keine Notwendigkeit, das Passwort zu ändern, wenn es ein starkes und einzigartiges Passwort ist. + Kontaktiere uns + Ihre Nachricht + Benutzen Sie Englisch um sicherzustellen, dass Ihr Feedback nicht missverstanden wird. + Wir freuen uns, dass Sie uns eine Nachricht senden. Ihre Nachricht geht direkt an uns und wir verwenden sie um Probleme zu beheben, Produktverbesserungen durchzuführen und Probleme zu beheben. Obwohl wir möglicherweise nicht auf jeden Bericht antworten, prüfen und arbeiten wir an Verbesserungen und beheben Probleme so schnell wie möglich. + Konten + Konto hinzufügen + Team hinter der App + Ich bin Software-Ingenieur aus der Ukraine. Ich spezialisiere mich auf App-Design und -Entwicklung. + Folge mir + Suchen + Einstellungen + Sucheinstellungen + Erscheinung + Autofill + Entwicklung + Experimentell + Einstellungen + Benachrichtigungen + Anderes + Berechtigungen + Sicherheit + Keyguard Premium + Wachturm + Open-Source-Lizenzen + Konten + Konten hinzufügen & anzeigen + Autofill + Android Autofill Service + Sicherheit + Biometrie, Passwort ändern, Tresor Timeout + Keyguard Premium + Funktionen freischalten & App-Entwicklung unterstützen + Wachturm + Komprimierte Dienste, verwundbare Passwörter + Benachrichtigungen + Warnungen + Erscheinung + Sprache, Theme und Animationen + Entwicklung + Test-Einstellungen für die Entwicklung + Anderes + Community-Webseiten, App-Info + Zeige Beschriftungen unter Navigationstasten + App-Version + App-Erstellungsdatum + Team hinter der App + Reddit-Community + GitHub Projekt + Crowdin-Projekt + Open-Source-Lizenzen + APK-Datei herunterladen + App-Symbole laden + Website-Symbole laden + Nachfragen der Icons könnte die Adresse der Webseite an den Internetprovider preisgeben + Rich-Text-Formatierung + Markdown verwenden, um Notizen zu formatieren + Sprache + Übersetzung vorschlagen + Schriftart + Im Play Store bewerten + Farbton + Farbschema + Schwarzes Farbschema verwenden + Links in externem Browser öffnen + Felder verbergen + Vertrauliche Informationen wie Passwörter und Kreditkartennummern verbergen + + Absturz + Credential provider + Passkeys, passwords and data services + Datenschutzrichtlinie + Kontaktiere uns + Experimentell + App-Passwort ändern + App-Passwort anfordern + Zusätzlich zu Ihren regulären Sicherheitseinstellungen wird Ihr App-Passwort nach dieser Zeit oder wenn Biometrieeinstellungen geändert werden angefordert + Sofort + Nie + Absturzberichte senden + Übergangsanimationen + App-Daten löschen + Close the app and erase all local app data + Screenshots erlauben + Zeige den Inhalt der App beim Wechsel zwischen den letzten Apps und erlaube das Erfassen eines Bildschirms + Den Inhalt der App ausblenden, wenn zwischen den letzten Apps gewechselt wird und das Erfassen eines Bildschirms verbietet + Datensicherheit + Tresor sperren + Nach einem Neustart sperren + Tresor nach einem Neustart des Geräts sperren + Sperren, wenn der Bildschirm ausgeschaltet wird + Sperrt den Tresor nach ein paar Sekunden, sobald der Bildschirm ausgeschaltet ist + Nach Verzögerung sperren + Sofort + Nie + Tresor Schlüssel auf der Festplatte beibehalten + Tresor Schlüssel ist auf einem internen Speicher vorhanden + Tresor ist gesperrt, nachdem die App aus dem Arbeitsspeicher entfernt wurde + Die Speicherung eines Tresorschlüssels auf dem internen Speicher ist ein Sicherheitsrisiko. Wenn der interne Speicher des Geräts kompromittiert ist, erhält der Angreifer Zugriff auf die lokalen Tresor-Daten. + Berechtigungen + Feature-Überblick + Biometrisches Entsperren + + Biometrisches Entsperren + Bildschirm während der Anzeige von Elementen nicht ausschalten + AutoFill-Dienst + Verwenden Sie das Android Autofill Framework um Login-Informationen in anderen Apps des Geräts zu füllen + Einmalpasswörter automatisch kopieren + Beim Ausfüllen von Login-Informationen, automatisch Einmalpasswörter kopieren + Inline-Vorschläge + Füllvorschläge direkt in kompatiblen Tastaturen anzeigen + Manuelle Auswahl + Zeigt eine Option an, um manuell einen Tresor nach einem Eintrag zu durchsuchen + Autofill deaktiviert Markierung respektieren + Deaktiviert Autofill für Browserfelder, in denen Autofill deaktiviert ist + Beachten Sie, dass einige Webseiten dafür berüchtigt sind, Autofill für ein Passwortfeld zu deaktivieren sowie einige Browser dafür berüchtigt sind, die Deaktiviert-Markierung für Autofill zu ignorieren + Fragen Daten zu speichern + Fragt nach Aktualisierung des Tresors beim Ausfüllen eines Formulars + App oder Website-Info automatisch speichern + Zwischenablage automatisch löschen + Sofort + Nie + Einmalpasswort Benachrichtigungsdauer + Wenn Sie ein Login-Element automatisch eingeben, das ein einmaliges Passwort besitzt, erscheint die Benachrichtigung mit Bestätigungscode für mindestens die definierte Dauer + Nie + Über Keyguard Mitgliedschaft + Das Premium entsperrt zusätzliche Funktionen und finanziert eine Entwicklung der App. Vielen Dank für Ihre Unterstützung! ❤️ + Abonnements + Produkte + Fehler beim Laden einer Liste von Abonnements + Fehler beim Laden einer Liste von Produkten + Aktiv + Wird nicht erneuert + Im Play Store verwalten + Benachrichtigungen + Verwendet, um Download-Benachrichtigungen zu posten + Kamera + Wird zum Scannen von QR-Codes verwendet + Erlaube zwei Panels Layout im Querformat + Erlaube zwei Panels Layout im Hochformat + Dunkel + Hell + Deaktiviert + Dynamisch + Überblenden + Entwickelt zur Verbesserung der Lesbarkeit für Leser mit geringer Sehkraft und zur Verbesserung des Verständnisses + Feature-Überblick + Keyguard Premium + Mehrere Konten + Gleichzeitige Anmeldung bei mehreren Konten. + Zwei-Wege-Sync + Elemente hinzufügen oder bearbeiten und die Änderungen wieder synchronisieren. + Offline-Bearbeitung + Elemente ohne Internetverbindung hinzufügen oder bearbeiten. + Suchen + Nach allem suchen + Name, E-Mail, Passwort, Telefonnummer usw. + Filter + Nach Ordner, Organisation, Typ usw. filtern. + Mehrere Schlüsselwörter + Suchen Sie nach \'bitw test\', um Ihr \'Bitwarden Test Account\' Element zu finden. + Wachturm + Aufgedeckte Passwörter + Finde Elemente mit in Datenlecks veröffentlichten Passwörtern. + Passwortstärke + Finde Elemente mit schwachen Passwörtern. + Wiederverwendete Passwörter + Finde Elemente mit wiederverwendeten Passwörtern. + Inaktive 2FA + Suche Logins mit verfügbaren TOTP Zwei-Faktor-Authentifizierung. + Unsichere Webseiten + Finde Webseiten, die HTTP-Protokoll verwenden, Auto-Fix zu HTTPS. + Unvollständige Elemente + Finde leere Elemente, die möglicherweise Updates benötigen. + Abgelaufene Elemente + Finde abgelaufene oder bald ablaufende Artikel. + Duplizierte Elemente + Suchen und zusammenfügen doppelter Elemente. + Sonstiges + Mehrfachauswahl + Zusammenführen von Elementen oder Löschen mehrerer Elemente auf einmal. + Als Barcode anzeigen + Einen Text als verschiedene Barcodes kodieren. + Generator + Erstelle Passwörter oder Benutzernamen. + Datensicherheit + Lokale Daten + Lokale Daten bestehen aus Downloads, Benutzereinstellungen und Tresor. Sie werden im internen Speicher eines Geräts gespeichert, auf das nur das Android-System oder der Keyguard zugreifen kann. + Downloads + Benutzereinstellungen + Die Benutzereinstellungen werden mittels eines gerätespezifischen Schlüssels verschlüsselt. + Benutzereinstellungen + Der Tresor wird mit einem Schlüssel verschlüsselt, abgeleitet vom App-Passwort mit folgenden Schritten: + Der Salt und der Hash werden lokal auf einem Gerät gespeichert, um später einen Masterschlüssel zum Entsperren des Tresors zu generieren. + Das Entsperren eines Tresors bedeutet die Speicherung eines korrekten Schlüssels auf dem Arbeitsspeicher eines Geräts, das die Möglichkeit erhält, verschlüsselte Tresore zu lesen und zu modifizieren. + Externe Daten + Externe Daten werden auf Bitwarden Servern mit Null-Kenntnis-Verschlüsselung gespeichert. + diff --git a/common/src/commonMain/resources/MR/el-rGR/plurals.xml b/common/src/commonMain/resources/MR/el-rGR/plurals.xml new file mode 100644 index 00000000..5f2db8ad --- /dev/null +++ b/common/src/commonMain/resources/MR/el-rGR/plurals.xml @@ -0,0 +1,2 @@ + + diff --git a/common/src/commonMain/resources/MR/el-rGR/strings.xml b/common/src/commonMain/resources/MR/el-rGR/strings.xml new file mode 100644 index 00000000..214f4486 --- /dev/null +++ b/common/src/commonMain/resources/MR/el-rGR/strings.xml @@ -0,0 +1,868 @@ + + + OK + Close + Yes + No + + Name + Account name + Username + Password + App password + Current password + New password + Email + Verified + Not verified + Email visibility + Public URL + URL + + Access count + Learn more + Phone number + Passport number + License number + Card number + No card number + Brand + Security code + Valid from + Valid to + Card expiry month + Card expiry year + Cardholder name + Valid from + Expiry date + Company + Sync + + Hidden + + Visible + + Empty + + SSN + City + State + Info + Cancel + Continue + Country + Address + Postal code + Pull to search + Save + URI + URIs + Note + Notes + Attachments + No attachments + Expiring soon + Incomplete data + This item is missing some of the important information. + Item + Items + %1$s items + All items + No items + No folder + New folder + Folder + Folders + No folders + No collection + Collection + Collections + No collections + My vault + Organization + Organizations + No organizations + Miscellaneous + Add integration + Account + Accounts + No accounts + No account + Type + Options + Send + Reset + Length + Security + Contact info + Title + First name + Middle name + Last name + Full name + Address line 1 + Address line 2 + Address line 3 + Rename + Select type + Autofill + Passkey + Create a passkey + Unlock Keyguard + Confirming auth request… + Passkeys + + Signature counter + + Relying party + + Discoverable + Username + Display name + API key + Domain + Edit + Delete + Remove + Remove from the history + Reused password + Reused passwords + One-time password + Authenticator key + Use + Save passkey + Passkey available + Two-factor authentication available + Custom + Follow system settings + + Coming soon + Powered by + Verification code + Re-send verification code + Requested a verification email + Web vault + Launch Web vault + + Remember me + + Trash + + Download + Downloads + No downloads + No duplicates + Encryption + + Key + Hash + Salt + 256-bit AES + Random %1$d-bits of data + None + Text + Linked apps + Linked URIs + Custom fields + Reveal a secure note + Hide a secure note + Master password hint + Fingerprint phrase + What is a fingerprint? + Bitwarden premium + Unofficial Bitwarden server + Last synced at %1$s + Change name + Change color + Change master password hint + Sign out + Sign in + Visit Web vault to verify your email address + Upgrade your account to a premium membership and unlock some great additional features + Two-factor authentication + Require login verification with another device such as a security key, authenticator app, SMS or email + Active + Items + Log out + Log out? + All of the not synchronized changes will be lost! + Change name + Change names + Delete folder? + Delete folders? + This item(s) will be deleted immediately. You can not undo this action. + Recently opened + Often opened + View details + Save to + Add to favourites + Remove from favourites + Enable auth re-prompt + Disable auth re-prompt + Edit + Merge into… + Copy to… + Move to folder + Change name + Change names + Add password + Add passwords + Change password + Change passwords + View password history + Trash + Restore + Delete forever + Move associated items to trash + Open with… + Send with… + Open in a file manager + Delete local file + View parent item + Always show keyboard + Sync vault + Lock vault + Rename folder + Check the email in known data breaches + Check the username in known data breaches + Check the password in known data breaches + Check the website in known data breaches + Launch app + Launch website + Launch docs + Launch browser + Launch main page + Launch Play store + Launch with %1$s + Launch with… + How to delete an account? + Unsecure + Match app + Match detection + Base domain + Match resources by top-level and second-level domain. + Host + Match resources by hostname and (if specified) port. + Starts with + Match resources when the detected resource starts with the URI. + Exact + Match resources when the detected resource exactly matches the URI. + Regular expression + Match resources by regular expression. Advanced option. + Never + Ignore URI during auto-fill item search. + %1$s linked to the password + %1$s linked to the username + %1$s linked to the cardholder name + %1$s linked to the expiration month + %1$s linked to the expiration year + %1$s linked to the card code + %1$s linked to the card brand + %1$s linked to the card number + %1$s linked to the title + %1$s linked to the middle name + %1$s linked to the address line (1) + %1$s linked to the address line (2) + %1$s linked to the address line (3) + %1$s linked to the city + %1$s linked to the state + %1$s linked to the postal code + %1$s linked to the country + %1$s linked to the company + %1$s linked to the email + %1$s linked to the phone number + %1$s linked to the SSN + %1$s linked to the username + %1$s linked to the passport number + %1$s linked to the license number + %1$s linked to the first name + %1$s linked to the last name + %1$s linked to the full name + %1$s linked to an unknown field + Share with… + %1$d selected + Copy + Copy value + Copy URL + Copy URI + Copy package name + Copy password + Copy username + Copy email + Copy phone number + Copy passport number + Copy license number + Copy card number + Copy cardholder name + Copy expiration year + Copy expiration month + Copy CVV code + Copy one-time password + Copy secret key + Unlock Keyguard + Open Keyguard + January + February + March + April + May + June + July + August + September + October + November + December + Move up + Move down + Remove + Remove an item? + Add more + FIDO2 WebAuthn + Authenticate WebAuthn + Return to app + + Must not be empty + + Must not be blank + Must be custom domain + Must contain only US-ASCII characters + Must be at least %1$d symbols long + Must be %1$d symbols long + Invalid domain + Invalid email + Invalid URL + Invalid URI + Invalid card number + Incorrect password + Failed to generate OTP code + Failed to create a passkey + Failed to authorize a request + + Barcode + Show as Barcode + Copy this authenticator to another device by scanning the QR code. + + Date picker + + Color picker + + How to delete an account? + A collection of info of how to delete your account from web services + + Easy + + Medium + + Hard + + Limited availability + + Impossible + Send email + Search websites + No instructions + Two-factor authentication + List of websites with two-factor authentication support + Search websites + Passkeys + List of websites with passkeys support + Search websites + + Data breach + Breached account data can provide malicious actors with access to sensitive personal and financial information, potentially leading to identity theft, financial fraud, and other forms of cybercrime. + No breaches found + Breached accounts found + Breaches + Occurred on %1$s + Reported on %1$s + Failed to check data breaches. You might currently be offline + Data breach + A password that is found in the data breaches takes significantly less time to break and should never be used. + Password is compromised + The password has been identified in known data breaches. Please change it immediately to protect your online security + No breaches found + Failed to check data breaches. You might currently be offline + + Large Type + Show in Large Type + Show in Large Type and Lock vault + App Picker + Search installed apps + System app + No apps + Choose a folder + Create a new folder: + + This organization will have an ownership of the copy. You will not be the direct owner. + Email forwarders + Email forwarders + Delete email forwarder? + Delete email forwarders? + Email forwarder integration + No email forwarders + Create an encrypted vault where the local data will be stored. + App password + Biometric authentication + Create a vault + Send crash reports + Create a vault + Erase app data + Close the app and erase all local app data + The vault is locked. Enter your app password to continue. + Unlock + + Unlock a vault + + Use biometric authentication to unlock the vault. + User verification is required. Enter your app password to continue. + Verify + Sync status + Up to date + Pending + Syncing + Sync failed + New item + Edit item + Style text with %1$s or %2$s and more. Limited Markdown syntax is supported. + italic + bold + Render preview + Auth re-prompt + Ask to authenticate again when you view or autofill a cipher + Add Bitwarden account + We are not affiliated, associated, authorized, endorsed by, or in any way officially connected with the Bitwarden, Inc., or any of its subsidiaries or its affiliates. + + To pass the captcha verification on an unofficial Bitwarden client, you must specify the client secret. To find it, visit Web vault / Settings / API Key. + + Client secret + Sign in + Region + United States + Europe + Custom (self-hosted) + HTTP headers + HTTP header + You can add custom HTTP headers that will be sent with every request to the server. + Key + Value + Add more + Server URL + Specify the base URL of your self-hosted Bitwarden installation. + Custom environment + You can specify the base URL of each service independently. + Web Vault Server URL + API Server URL + Icons Server URL + Identity Server URL + Verification + This authentication method is not supported yet. + Enter the verification code from your authenticator app. + Enter the verification code that was emailed to %1$s. + Enter the YubiKey authentication code manually. Place the cursor on the field below and trigger the YubiKey. + Authenticator + Duo (Organization) + FIDO2 Web Authentication + Email + FIDO U2F + Connect YubiKey via USB + Requires USB OTG support. + Touch the gold sensor on your YubiKey now. + Hold your YubiKey flat against the back of your device + Requires NFC support. + Failed to read YubiKey + Using FIDO2 WebAuthn requires using the Bitwarden Web vault version %1$s or higher. On older versions the authentication result will incorrectly be forwarded to the official Bitwarden app. + Confirm access + This data is protected, to continue please enter your app password. + + Confirm access + + Use biometric authentication to confirm your access and unlock this data. + Vault + Send + Generator + Watchtower + Settings + Locked due to inactivity + Text + File + Login + Card + Identity + Note + Passkey + Text + Boolean + Linked + + Pwned + Very strong + Strong + Good + Fair + Weak + Very strong passwords + Strong passwords + Good passwords + Fair passwords + Weak passwords + Filter + No filters available + Sort by + No sorting available + Title + Alphabetically + Reverse Alphabetically + Access count + Largest First + Smallest First + Modification date + Newest First + Oldest First + Expiration date + Newest First + Oldest First + Deletion date + Newest First + Oldest First + Password + Alphabetically + Reverse Alphabetically + Password modification date + Newest First + Oldest First + Password strength + Weakest First + Strongest First + Search vault + New item + There are no suggested items available for this context + + Security code + Saved to %1$s at %2$s + Password last modified at %1$s + Passkey created at %1$s + Last modified at %1$s + Created at %1$s + Deleted at %1$s + Expired at %1$s + Expiration scheduled at %1$s + Deleting scheduled at %1$s + + Call + + Text + + Email + + Directions + Sends + Search sends + New item + A password is required to access this share + Generator + Username generator + Password generator + Generate + Regenerate + Passphrase + Random passphrases provide the best combination of memorability and security. + Delimiter + Capitalize + Number + Username + Delimiter + Custom word + Capitalize + Number + Random symbols + A strong password has at least %1$d characters, uppercase & lowercase letters, digits and symbols. + Digits + Symbols + Uppercase letters + Lowercase letters + + Exclude similar symbols + + Exclude ambiguous symbols + Catch-all email + A catch-all email address provides users the option to receive all mail sent to their domain, even if they are sent to an email address that has not been set up for their domain. Ensure that your email hosting supports this feature before using it. + + Domain + Plus addressing email + Plus addressing means any email sent to %1$s is still sent to your account. This means you can have a lot of variations on your email address to give out to different people, sites, or mailing lists. Ensure that your email hosting supports this feature before using it. + Email + Subdomain addressing email + Subdomain addressing means any email sent to %1$s is still sent to your account. This means you can have a lot of variations on your email address to give out to different people, sites, or mailing lists. Ensure that your email hosting supports this feature before using it. + Email + Forwarded email alias + Create new login with the password + Create new login with the username + Password history + Show tips + Generator history + Clear history + Clear generator history? + This will remove all items from the history. + Password history + Clear history + Clear password history? + This will remove all passwords from the history. + Watchtower + Password strength + Security + Maintenance + Pwned Passwords + Passwords that have been exposed in data breaches. Such passwords should be changed immediately. + Reused Passwords + Don\'t use the same password on multiple websites. Generate unique passwords to improve security. + Vulnerable Accounts + Sites that were affected by a data breach since you last changed a password. Change your password to keep your account safe. + Unsecure Websites + Change the URLs that use HTTP protocol to use HTTPS protocol, as the latter utilizes the most advanced encryption available. + Inactive two-factor authentication + Sites that have two-factor authentication available but you haven\'t set it up yet. + Available Passkeys + Sites that have passkey available but you haven\'t set it up yet. It\'s simpler and more secure then a password. + Incomplete Items + Helps you identify missing or incomplete data in your vault. This can refer to identities with missing names or logins without usernames. + Expiring Items + Items that have expired or are expiring soon. + Duplicate URIs + Items that have one or more URIs that cover the same websites after applying the match detection. + Trashed Items + Items that have been moved into the trash. Having too many items in the trash may slow down operations with your vault. + Empty Folders + Folders that do not have any items in them. + Duplicate Items + Helps you identify and eliminate duplicate items in your vault. + Compromised Accounts + Check data breaches by a username or email address. + Change app password + Change password + Biometric authentication + + Change app password + App password never gets stored on the device nor sent over the network. It is used to generate a secret key that is used to encrypt the local data. + Unless you suspect unauthorized access or discover a malware on the device, there is no need to change the password if it is a strong, unique password. + Contact us + Your message + Use English to ensure that your feedback doesn\'t get misunderstood. + We appreciate the time that you spend sending us a message. Your message goes directly to us and we use it to troubleshoot issues, make product improvements and fix problems. While we may not reply to every report, we\'re reviewing and working on improvements & fixing issues as fast as we can. + Accounts + Add account + Team behind the app + I\'m a Software engineer from Ukraine. I specialize on app design and development. + Follow me + Search + Settings + Search settings + Appearance + Autofill + Development + Experimental + Settings + Notifications + Other + Permissions + Security + Keyguard Premium + Watchtower + Open-source licenses + Accounts + Add & view accounts + Autofill + Android Autofill & Credential services + Security + Biometrics, change password, vault timeout + Keyguard Premium + Unlock features & support app development + Watchtower + Compromised services, vulnerable passwords + Notifications + Alerts + Appearance + Language, theme and animations + Development + Test settings for development + Other + Community websites, app info + Show labels on navigation buttons + App version + App build date + Team behind the app + Reddit community + GitHub project + Crowdin project + Open-source licenses + Download APK file + Load App icons + Load Website icons + Queuing website icon might leak the website address to internet provider + Rich text formatting + Use Markdown to format notes + Language + Suggest translation + Font + Rate on Play Store + Tint color + Theme + Use contrast black theme + Open links in external browser + Conceal fields + Conceal sensitive info, such as passwords and credit card numbers + + Crash + Credential provider + Passkeys, passwords and data services + Privacy policy + Contact us + Experimental + Change app password + Require app password + In addition to your regular security settings, your app password will be required after this time or when biometry settings are changed + Immediately + Never + Send crash reports + Transition animation + Erase app data + Close the app and erase all local app data + Allow screenshots + Show the content of the app when switching between recent apps and allow capturing a screen + Hide the content of the app when switching between recent apps and forbid capturing a screen + Data safety + Lock vault + Lock after a reboot + Lock the vault after a device reboot + Lock when screen turns off + Lock the vault after a few seconds once the screen is off + Lock after a delay + Immediately + Never + Persist vault key on a disk + Vault key is persisted on an internal storage + Vault is locked after the app is unloaded from the memory + Storing a vault key on a disk is a security risk. If the device\'s internal storage is compromised, the attacker will gain access to the local vault data. + Permissions + Features overview + Biometric unlock + + Biometric unlock + Keep the screen on while viewing items + Autofill service + Use the Android Autofill Framework to assist in filling login information into other apps on the device + Auto-copy one-time passwords + When filling a login information, automatically copy one-time passwords + Inline suggestions + Embeds autofill suggestions directly into compatible keyboards + Manual selection + Displays an option to manually search a vault for an entry + Respect Autofill disabled flag + Disables autofill for a browser field that has autofill disabled flag set + Note that some websites are notorious for disabling autofill for a password field as well as some browsers are notorious for ignoring the autofill disabled flag + Ask to save data + Asks for updating the vault when filling of a form has completed + Auto-save app or website info + Automatically clear clipboard + Immediately + Never + One-time password notification duration + When you autofill a login item that has a one-time password, the notification with verification code will popup for at least the defined duration + Never + About Keyguard membership + The Premium unlocks extra features and funds a development of the app. Thank you for supporting us! ❤️ + Subscriptions + Products + Failed to load a list of subscriptions + Failed to load a list of products + Active + Will not renew + Manage on Play Store + Post notifications + Used to post downloading notifications + Camera + Used to scan QR codes + Allow two panel layout in landscape mode + Allow two panel layout in portrait mode + Dark + Light + Disabled + Dynamic + Crossfade + Developed specifically to increase legibility for readers with low vision, and to improve comprehension + Features Overview + Keyguard Premium + Multiple Accounts + Sign-in to multiple accounts simultaneously. + Two-way sync + Add or edit items and sync the changes back. + Offline editing + Add or edit items without internet connection. + Search + Search by anything + Name, email, password, phone number etc. + Filter + Filter by folder, organization, type etc. + Multiple keywords + Search by \'bitw test\' to find your \'Bitwarden Test Account\' item. + Watchtower + Pwned passwords + Find items with exposed in data breaches passwords. + Password strength + Find items with weak passwords. + Reused passwords + Find items with reused passwords. + Inactive 2FA + Find logins with available TOTP two-factor authentication. + Unsecure websites + Find websites that use HTTP protocol, auto-fix to HTTPS. + Incomplete items + Find empty items that might need updates. + Expiring items + Find expired or soon to be expired items. + Duplicate items + Find and merge duplicate items. + Misc + Multi-selection + Merge ciphers, fasten the refactoring with batch operations. + Show as Barcode + Encode a text as different barcodes. + Generator + Generate passwords or usernames. + Data safety + Local data + Local data consists of Downloads, User settings, Vault. They are stored in the internal storage of a device, which can only be accessed by the Android system or the Keyguard. + Downloads + User settings + The User settings are encrypted using a device-specific key. + Vault + The Vault is encrypted using a Key, derived from the App password using following steps: + The Salt and the Hash is then stored locally on a device, to later generate a master key to unlock the vault. + Unlocking a Vault means storing a correct Key in a device\'s RAM, gaining an ability to read and modify encrypted Vault. + Remote data + Remote data is stored on Bitwarden servers with zero-knowledge encryption. + diff --git a/common/src/commonMain/resources/MR/en-rGB/plurals.xml b/common/src/commonMain/resources/MR/en-rGB/plurals.xml new file mode 100644 index 00000000..5f2db8ad --- /dev/null +++ b/common/src/commonMain/resources/MR/en-rGB/plurals.xml @@ -0,0 +1,2 @@ + + diff --git a/common/src/commonMain/resources/MR/en-rGB/strings.xml b/common/src/commonMain/resources/MR/en-rGB/strings.xml new file mode 100644 index 00000000..31f64da8 --- /dev/null +++ b/common/src/commonMain/resources/MR/en-rGB/strings.xml @@ -0,0 +1,868 @@ + + + OK + Close + Yes + No + + Name + Account name + Username + Password + App password + Current password + New password + Email + Verified + Not verified + Email visibility + Public URL + URL + + Access count + Learn more + Phone number + Passport number + Licence number + Card number + No card number + Brand + Security code + Valid from + Valid to + Card expiry month + Card expiry year + Cardholder name + Valid from + Expiry date + Company + Sync + + Hidden + + Visible + + Empty + + National Insurance number + City + County + Info + Cancel + Continue + Country + Address + Postcode + Pull to search + Save + URI + URIs + Note + Notes + Attachments + No attachments + Expiring soon + Incomplete data + This item is missing some of the important information. + Item + Items + %1$s items + All items + No items + No folder + New folder + Folder + Folders + No folders + No collection + Collection + Collections + No collections + My vault + Organisation + Organisations + No organizations + Miscellaneous + Add integration + Account + Accounts + No accounts + No account + Type + Options + Send + Reset + Length + Security + Contact info + Title + First name + Middle name + Last name + Full name + Address line 1 + Address line 2 + Address line 3 + Rename + Select type + Autofill + Passkey + Create a passkey + Unlock Keyguard + Confirming auth request… + Passkeys + + Signature counter + + Relying party + + Discoverable + Username + Display name + API key + Domain + Edit + Delete + Remove + Remove from the history + Reused password + Reused passwords + One-time password + Authenticator key + Use + Save passkey + Passkey available + Two-factor authentication available + Custom + Follow system settings + + Coming soon + Powered by + Verification code + Re-send verification code + Requested a verification email + Web vault + Launch Web vault + + Remember me + + Bin + + Download + Downloads + No downloads + No duplicates + Encryption + + Key + Hash + Salt + 256-bit AES + Random %1$d-bits of data + None + Text + Linked apps + Linked URIs + Custom fields + Reveal a secure note + Hide a secure note + Master password hint + Fingerprint phrase + What is a fingerprint? + Bitwarden premium + Unofficial Bitwarden server + Last synced at %1$s + Change name + Change colour + Change master password hint + Sign out + Sign in + Visit Web vault to verify your email address + Upgrade your account to a premium membership and unlock some great additional features + Two-factor authentication + Require login verification with another device such as a security key, authenticator app, SMS or email + Active + Items + Log out + Log out? + All the non synchronised changes will be lost! + Change name + Change names + Delete folder? + Delete folders? + This item(s) will be deleted immediately. You can not undo this action. + Recently opened + Often opened + View details + Save to + Add to favourites + Remove from favourites + Enable auth re-prompt + Disable auth re-prompt + Edit + Merge into… + Copy to… + Move to folder + Change name + Change names + Add password + Add passwords + Change password + Change passwords + View password history + Bin + Restore + Delete forever + Move associated items to the bin + Open with… + Send with… + Open in a file manager + Delete local file + View parent item + Always show keyboard + Sync vault + Lock vault + Rename folder + Check the email in known data breaches + Check the username in known data breaches + Check the password in known data breaches + Check the website in known data breaches + Launch app + Launch website + Launch docs + Launch browser + Launch main page + Launch Play store + Launch with %1$s + Launch with… + How to delete an account? + Unsecure + Match app + Match detection + Base domain + Match resources by top-level and second-level domain. + Host + Match resources by hostname and (if specified) port. + Starts with + Match resources when the detected resource starts with the URI. + Exact + Match resources when the detected resource exactly matches the URI. + Regular expression + Match resources by regular expression. Advanced option. + Never + Ignore URI during auto-fill item search. + %1$s linked to the password + %1$s linked to the username + %1$s linked to the cardholder name + %1$s linked to the expiration month + %1$s linked to the expiration year + %1$s linked to the card code + %1$s linked to the card brand + %1$s linked to the card number + %1$s linked to the title + %1$s linked to the middle name + %1$s linked to the address line (1) + %1$s linked to the address line (2) + %1$s linked to the address line (3) + %1$s linked to the city + %1$s linked to the state + %1$s linked to the postal code + %1$s linked to the country + %1$s linked to the company + %1$s linked to the email + %1$s linked to the phone number + %1$s linked to the SSN + %1$s linked to the username + %1$s linked to the passport number + %1$s linked to the license number + %1$s linked to the first name + %1$s linked to the last name + %1$s linked to the full name + %1$s linked to an unknown field + Share with… + %1$d selected + Copy + Copy value + Copy URL + Copy URI + Copy package name + Copy password + Copy username + Copy email + Copy phone number + Copy passport number + Copy licence number + Copy card number + Copy cardholder name + Copy expiration year + Copy expiration month + Copy CVV code + Copy one-time password + Copy secret key + Unlock Keyguard + Open Keyguard + January + February + March + April + May + June + July + August + September + October + November + December + Move up + Move down + Remove + Remove an item? + Add more + FIDO2 WebAuthn + Authenticate WebAuthn + Return to app + + Must not be empty + + Must not be blank + Must be custom domain + Must contain only US-ASCII characters + Must be at least %1$d symbols long + Must be %1$d symbols long + Invalid domain + Invalid email + Invalid URL + Invalid URI + Invalid card number + Incorrect password + Failed to generate OTP code + Failed to create a passkey + Failed to authorize a request + + Barcode + Show as Barcode + Copy this authenticator to another device by scanning the QR code. + + Date picker + + Colour picker + + How to delete an account? + A collection of info of how to delete your account from web services + + Easy + + Medium + + Hard + + Limited availability + + Impossible + Send email + Search websites + No instructions + Two-factor authentication + List of websites with two-factor authentication support + Search websites + Passkeys + List of websites with passkeys support + Search websites + + Data breach + Breached account data can provide malicious actors with access to sensitive personal and financial information, potentially leading to identity theft, financial fraud, and other forms of cybercrime. + No breaches found + Breached accounts found + Breaches + Occurred on %1$s + Reported on %1$s + Failed to check data breaches. You might currently be offline + Data breach + A password that is found in the data breaches takes significantly less time to break and should never be used. + Password is compromised + The password has been identified in known data breaches. Please change it immediately to protect your online security + No breaches found + Failed to check data breaches. You might currently be offline + + Large Type + Show in Large Type + Show in Large Type and Lock vault + App Picker + Search installed apps + System app + No apps + Choose a folder + Create a new folder: + + This organisation will have an ownership of the copy. You will not be the direct owner. + Email forwarders + Email forwarders + Delete email forwarder? + Delete email forwarders? + Email forwarder integration + No email forwarders + Create an encrypted vault where the local data will be stored. + App password + Biometric authentication + Create a vault + Send crash reports + Create a vault + Erase app data + Close the app and erase all local app data + The vault is locked. Enter your app password to continue. + Unlock + + Unlock a vault + + Use biometric authentication to unlock the vault. + User verification is required. Enter your app password to continue. + Verify + Sync status + Up to date + Pending + Syncing + Sync failed + New item + Edit item + Style text with %1$s or %2$s and more. Limited Markdown syntax is supported. + italic + bold + Render preview + Auth re-prompt + Ask to authenticate again when you view or autofill a cipher + Add Bitwarden account + We are not affiliated, associated, authorized, endorsed by, or in any way officially connected with the Bitwarden, Inc., or any of its subsidiaries or its affiliates. + + To pass the captcha verification on an unofficial Bitwarden client, you must specify the client secret. To find it, visit Web vault / Settings / API Key. + + Client secret + Sign in + Region + United States + Europe + Custom (self-hosted) + HTTP headers + HTTP header + You can add custom HTTP headers that will be sent with every request to the server. + Key + Value + Add more + Server URL + Specify the base URL of your self-hosted Bitwarden installation. + Custom environment + You can specify the base URL of each service independently. + Web Vault Server URL + API Server URL + Icons Server URL + Identity Server URL + Verification + This authentication method is not supported yet. + Enter the verification code from your authenticator app. + Enter the verification code that was emailed to %1$s. + Enter the YubiKey authentication code manually. Place the cursor on the field below and trigger the YubiKey. + Authenticator + Duo (Organisation) + FIDO2 Web Authentication + Email + FIDO U2F + Connect YubiKey via USB + Requires USB OTG support. + Touch the gold sensor on your YubiKey now. + Hold your YubiKey flat against the back of your device + Requires NFC support. + Failed to read YubiKey + Using FIDO2 WebAuthn requires using the Bitwarden Web vault version %1$s or higher. On older versions the authentication result will incorrectly be forwarded to the official Bitwarden app. + Confirm access + This data is protected, to continue please enter your app password. + + Confirm access + + Use biometric authentication to confirm your access and unlock this data. + Vault + Send + Generator + Watchtower + Settings + Locked due to inactivity + Text + File + Login + Card + Identity + Note + Passkey + Text + Boolean + Linked + + Pwned + Very strong + Strong + Good + Fair + Weak + Very strong passwords + Strong passwords + Good passwords + Fair passwords + Weak passwords + Filter + No filters available + Sort by + No sorting available + Title + Alphabetically + Reverse Alphabetically + Access count + Largest First + Smallest First + Modification date + Newest First + Oldest First + Expiration date + Newest First + Oldest First + Deletion date + Newest First + Oldest First + Password + Alphabetically + Reverse Alphabetically + Password modification date + Newest First + Oldest First + Password strength + Weakest First + Strongest First + Search vault + New item + There are no suggested items available for this context + + Security code + Saved to %1$s at %2$s + Password last modified at %1$s + Passkey created at %1$s + Last modified at %1$s + Created at %1$s + Deleted at %1$s + Expired at %1$s + Expiration scheduled at %1$s + Deleting scheduled at %1$s + + Call + + Text + + Email + + Directions + Sends + Search sends + New item + A password is required to access this share + Generator + Username generator + Password generator + Generate + Regenerate + Passphrase + Random passphrases provide the best combination of memorability and security. + Delimiter + Capitalize + Number + Username + Delimiter + Custom word + Capitalize + Number + Random symbols + A strong password has at least %1$d characters, uppercase & lowercase letters, digits and symbols. + Digits + Symbols + Uppercase letters + Lowercase letters + + Exclude similar symbols + + Exclude ambiguous symbols + Catch-all email + A catch-all email address provides users the option to receive all mail sent to their domain, even if they are sent to an email address that has not been set up for their domain. Ensure that your email hosting supports this feature before using it. + + Domain + Plus addressing email + Plus addressing means any email sent to %1$s is still sent to your account. This means you can have a lot of variations on your email address to give out to different people, sites, or mailing lists. Ensure that your email hosting supports this feature before using it. + Email + Subdomain addressing email + Subdomain addressing means any email sent to %1$s is still sent to your account. This means you can have a lot of variations on your email address to give out to different people, sites, or mailing lists. Ensure that your email hosting supports this feature before using it. + Email + Forwarded email alias + Create new login with the password + Create new login with the username + Password history + Show tips + Generator history + Clear history + Clear generator history? + This will remove all items from the history. + Password history + Clear history + Clear password history? + This will remove all passwords from the history. + Watchtower + Password strength + Security + Maintenance + Pwned Passwords + Passwords that have been exposed in data breaches. Such passwords should be changed immediately. + Reused Passwords + Don\'t use the same password on multiple websites. Generate unique passwords to improve security. + Vulnerable Accounts + Sites that were affected by a data breach since you last changed a password. Change your password to keep your account safe. + Unsecure Websites + Change the URLs that use HTTP protocol to use HTTPS protocol, as the latter utilizes the most advanced encryption available. + Inactive two-factor authentication + Sites that have two-factor authentication available but you haven\'t set it up yet. + Available Passkeys + Sites that have passkey available but you haven\'t set it up yet. It\'s simpler and more secure then a password. + Incomplete Items + Helps you identify missing or incomplete data in your vault. This can refer to identities with missing names or logins without usernames. + Expiring Items + Items that have expired or are expiring soon. + Duplicate URIs + Items that have one or more URIs that cover the same websites after applying the match detection. + Binned Items + Items that have been moved into the bin. Having too many items in the bin may slow down operations with your vault. + Empty Folders + Folders that do not have any items in them. + Duplicate Items + Helps you identify and eliminate duplicate items in your vault. + Compromised Accounts + Check data breaches by a username or email address. + Change app password + Change password + Biometric authentication + + Change app password + App password never gets stored on the device nor sent over the network. It is used to generate a secret key that is used to encrypt the local data. + Unless you suspect unauthorized access or discover a malware on the device, there is no need to change the password if it is a strong, unique password. + Contact us + Your message + Use English to ensure that your feedback doesn\'t get misunderstood. + We appreciate the time that you spend sending us a message. Your message goes directly to us and we use it to troubleshoot issues, make product improvements and fix problems. While we may not reply to every report, we\'re reviewing and working on improvements & fixing issues as fast as we can. + Accounts + Add account + Team behind the app + I\'m a Software engineer from Ukraine. I specialize on app design and development. + Follow me + Search + Settings + Search settings + Appearance + Autofill + Development + Experimental + Settings + Notifications + Other + Permissions + Security + Keyguard Premium + Watchtower + Open-source licences + Accounts + Add & view accounts + Autofill + Android Autofill & Credential services + Security + Biometrics, change password, vault timeout + Keyguard Premium + Unlock features & support app development + Watchtower + Compromised services, vulnerable passwords + Notifications + Alerts + Appearance + Language, theme and animations + Development + Test settings for development + Other + Community websites, app info + Show labels on navigation buttons + App version + App build date + Team behind the app + Reddit community + GitHub project + Crowdin project + Open-source licences + Download APK file + Load App icons + Load Website icons + Queuing website icon might leak the website address to internet provider + Rich text formatting + Use Markdown to format notes + Language + Suggest translation + Font + Rate on Play Store + Tint colour + Theme + Use contrast black theme + Open links in external browser + Conceal fields + Conceal sensitive info, such as passwords and credit card numbers + + Crash + Credential provider + Passkeys, passwords and data services + Privacy policy + Contact us + Experimental + Change app password + Require app password + In addition to your regular security settings, your app password will be required after this time or when biometry settings are changed + Immediately + Never + Send crash reports + Transition animation + Erase app data + Close the app and erase all local app data + Allow screenshots + Show the content of the app when switching between recent apps and allow capturing a screen + Hide the content of the app when switching between recent apps and forbid capturing a screen + Data safety + Lock vault + Lock after a reboot + Lock the vault after a device reboot + Lock when screen turns off + Lock the vault after a few seconds once the screen is off + Lock after a delay + Immediately + Never + Persist vault key on a disk + Vault key is persisted on an internal storage + Vault is locked after the app is unloaded from the memory + Storing a vault key on a disk is a security risk. If the device\'s internal storage is compromised, the attacker will gain access to the local vault data. + Permissions + Features overview + Biometric unlock + + Biometric unlock + Keep the screen on while viewing items + Autofill service + Use the Android Autofill Framework to assist in filling login information into other apps on the device + Auto-copy one-time passwords + When filling a login information, automatically copy one-time passwords + Inline suggestions + Embeds autofill suggestions directly into compatible keyboards + Manual selection + Displays an option to manually search a vault for an entry + Respect Autofill disabled flag + Disables autofill for a browser field that has autofill disabled flag set + Note that some websites are notorious for disabling autofill for a password field as well as some browsers are notorious for ignoring the autofill disabled flag + Ask to save data + Asks for updating the vault when filling of a form has completed + Auto-save app or website info + Automatically clear clipboard + Immediately + Never + One-time password notification duration + When you autofill a login item that has a one-time password, the notification with verification code will popup for at least the defined duration + Never + About Keyguard membership + The Premium unlocks extra features and funds a development of the app. Thank you for supporting us! ❤️ + Subscriptions + Products + Failed to load a list of subscriptions + Failed to load a list of products + Active + Will not renew + Manage on Play Store + Post notifications + Used to post downloading notifications + Camera + Used to scan QR codes + Allow two panel layout in landscape mode + Allow two panel layout in portrait mode + Dark + Light + Disabled + Dynamic + Crossfade + Developed specifically to increase legibility for readers with low vision, and to improve comprehension + Features Overview + Keyguard Premium + Multiple Accounts + Sign-in to multiple accounts simultaneously. + Two-way sync + Add or edit items and sync the changes back. + Offline editing + Add or edit items without internet connection. + Search + Search by anything + Name, email, password, phone number etc. + Filter + Filter by folder, organisation, type etc. + Multiple keywords + Search by \'bitw test\' to find your \'Bitwarden Test Account\' item. + Watchtower + Pwned passwords + Find items with exposed in data breaches passwords. + Password strength + Find items with weak passwords. + Reused passwords + Find items with reused passwords. + Inactive 2FA + Find logins with available TOTP two-factor authentication. + Unsecure websites + Find websites that use HTTP protocol, auto-fix to HTTPS. + Incomplete items + Find empty items that might need updates. + Expiring items + Find expired or soon to be expired items. + Duplicate items + Find and merge duplicate items. + Misc + Multi-selection + Merge ciphers, fasten the refactoring with batch operations. + Show as Barcode + Encode a text as different barcodes. + Generator + Generate passwords or usernames. + Data safety + Local data + Local data consists of Downloads, User settings, Vault. They are stored in the internal storage of a device, which can only be accessed by the Android system or the Keyguard. + Downloads + User settings + The User settings are encrypted using a device-specific key. + Vault + The Vault is encrypted using a Key, derived from the App password using following steps: + The Salt and the Hash is then stored locally on a device, to later generate a master key to unlock the vault. + Unlocking a Vault means storing a correct Key in a device\'s RAM, gaining an ability to read and modify encrypted Vault. + Remote data + Remote data is stored on Bitwarden servers with zero-knowledge encryption. + diff --git a/common/src/commonMain/resources/MR/en-rUS/plurals.xml b/common/src/commonMain/resources/MR/en-rUS/plurals.xml new file mode 100644 index 00000000..5f2db8ad --- /dev/null +++ b/common/src/commonMain/resources/MR/en-rUS/plurals.xml @@ -0,0 +1,2 @@ + + diff --git a/common/src/commonMain/resources/MR/en-rUS/strings.xml b/common/src/commonMain/resources/MR/en-rUS/strings.xml new file mode 100644 index 00000000..214f4486 --- /dev/null +++ b/common/src/commonMain/resources/MR/en-rUS/strings.xml @@ -0,0 +1,868 @@ + + + OK + Close + Yes + No + + Name + Account name + Username + Password + App password + Current password + New password + Email + Verified + Not verified + Email visibility + Public URL + URL + + Access count + Learn more + Phone number + Passport number + License number + Card number + No card number + Brand + Security code + Valid from + Valid to + Card expiry month + Card expiry year + Cardholder name + Valid from + Expiry date + Company + Sync + + Hidden + + Visible + + Empty + + SSN + City + State + Info + Cancel + Continue + Country + Address + Postal code + Pull to search + Save + URI + URIs + Note + Notes + Attachments + No attachments + Expiring soon + Incomplete data + This item is missing some of the important information. + Item + Items + %1$s items + All items + No items + No folder + New folder + Folder + Folders + No folders + No collection + Collection + Collections + No collections + My vault + Organization + Organizations + No organizations + Miscellaneous + Add integration + Account + Accounts + No accounts + No account + Type + Options + Send + Reset + Length + Security + Contact info + Title + First name + Middle name + Last name + Full name + Address line 1 + Address line 2 + Address line 3 + Rename + Select type + Autofill + Passkey + Create a passkey + Unlock Keyguard + Confirming auth request… + Passkeys + + Signature counter + + Relying party + + Discoverable + Username + Display name + API key + Domain + Edit + Delete + Remove + Remove from the history + Reused password + Reused passwords + One-time password + Authenticator key + Use + Save passkey + Passkey available + Two-factor authentication available + Custom + Follow system settings + + Coming soon + Powered by + Verification code + Re-send verification code + Requested a verification email + Web vault + Launch Web vault + + Remember me + + Trash + + Download + Downloads + No downloads + No duplicates + Encryption + + Key + Hash + Salt + 256-bit AES + Random %1$d-bits of data + None + Text + Linked apps + Linked URIs + Custom fields + Reveal a secure note + Hide a secure note + Master password hint + Fingerprint phrase + What is a fingerprint? + Bitwarden premium + Unofficial Bitwarden server + Last synced at %1$s + Change name + Change color + Change master password hint + Sign out + Sign in + Visit Web vault to verify your email address + Upgrade your account to a premium membership and unlock some great additional features + Two-factor authentication + Require login verification with another device such as a security key, authenticator app, SMS or email + Active + Items + Log out + Log out? + All of the not synchronized changes will be lost! + Change name + Change names + Delete folder? + Delete folders? + This item(s) will be deleted immediately. You can not undo this action. + Recently opened + Often opened + View details + Save to + Add to favourites + Remove from favourites + Enable auth re-prompt + Disable auth re-prompt + Edit + Merge into… + Copy to… + Move to folder + Change name + Change names + Add password + Add passwords + Change password + Change passwords + View password history + Trash + Restore + Delete forever + Move associated items to trash + Open with… + Send with… + Open in a file manager + Delete local file + View parent item + Always show keyboard + Sync vault + Lock vault + Rename folder + Check the email in known data breaches + Check the username in known data breaches + Check the password in known data breaches + Check the website in known data breaches + Launch app + Launch website + Launch docs + Launch browser + Launch main page + Launch Play store + Launch with %1$s + Launch with… + How to delete an account? + Unsecure + Match app + Match detection + Base domain + Match resources by top-level and second-level domain. + Host + Match resources by hostname and (if specified) port. + Starts with + Match resources when the detected resource starts with the URI. + Exact + Match resources when the detected resource exactly matches the URI. + Regular expression + Match resources by regular expression. Advanced option. + Never + Ignore URI during auto-fill item search. + %1$s linked to the password + %1$s linked to the username + %1$s linked to the cardholder name + %1$s linked to the expiration month + %1$s linked to the expiration year + %1$s linked to the card code + %1$s linked to the card brand + %1$s linked to the card number + %1$s linked to the title + %1$s linked to the middle name + %1$s linked to the address line (1) + %1$s linked to the address line (2) + %1$s linked to the address line (3) + %1$s linked to the city + %1$s linked to the state + %1$s linked to the postal code + %1$s linked to the country + %1$s linked to the company + %1$s linked to the email + %1$s linked to the phone number + %1$s linked to the SSN + %1$s linked to the username + %1$s linked to the passport number + %1$s linked to the license number + %1$s linked to the first name + %1$s linked to the last name + %1$s linked to the full name + %1$s linked to an unknown field + Share with… + %1$d selected + Copy + Copy value + Copy URL + Copy URI + Copy package name + Copy password + Copy username + Copy email + Copy phone number + Copy passport number + Copy license number + Copy card number + Copy cardholder name + Copy expiration year + Copy expiration month + Copy CVV code + Copy one-time password + Copy secret key + Unlock Keyguard + Open Keyguard + January + February + March + April + May + June + July + August + September + October + November + December + Move up + Move down + Remove + Remove an item? + Add more + FIDO2 WebAuthn + Authenticate WebAuthn + Return to app + + Must not be empty + + Must not be blank + Must be custom domain + Must contain only US-ASCII characters + Must be at least %1$d symbols long + Must be %1$d symbols long + Invalid domain + Invalid email + Invalid URL + Invalid URI + Invalid card number + Incorrect password + Failed to generate OTP code + Failed to create a passkey + Failed to authorize a request + + Barcode + Show as Barcode + Copy this authenticator to another device by scanning the QR code. + + Date picker + + Color picker + + How to delete an account? + A collection of info of how to delete your account from web services + + Easy + + Medium + + Hard + + Limited availability + + Impossible + Send email + Search websites + No instructions + Two-factor authentication + List of websites with two-factor authentication support + Search websites + Passkeys + List of websites with passkeys support + Search websites + + Data breach + Breached account data can provide malicious actors with access to sensitive personal and financial information, potentially leading to identity theft, financial fraud, and other forms of cybercrime. + No breaches found + Breached accounts found + Breaches + Occurred on %1$s + Reported on %1$s + Failed to check data breaches. You might currently be offline + Data breach + A password that is found in the data breaches takes significantly less time to break and should never be used. + Password is compromised + The password has been identified in known data breaches. Please change it immediately to protect your online security + No breaches found + Failed to check data breaches. You might currently be offline + + Large Type + Show in Large Type + Show in Large Type and Lock vault + App Picker + Search installed apps + System app + No apps + Choose a folder + Create a new folder: + + This organization will have an ownership of the copy. You will not be the direct owner. + Email forwarders + Email forwarders + Delete email forwarder? + Delete email forwarders? + Email forwarder integration + No email forwarders + Create an encrypted vault where the local data will be stored. + App password + Biometric authentication + Create a vault + Send crash reports + Create a vault + Erase app data + Close the app and erase all local app data + The vault is locked. Enter your app password to continue. + Unlock + + Unlock a vault + + Use biometric authentication to unlock the vault. + User verification is required. Enter your app password to continue. + Verify + Sync status + Up to date + Pending + Syncing + Sync failed + New item + Edit item + Style text with %1$s or %2$s and more. Limited Markdown syntax is supported. + italic + bold + Render preview + Auth re-prompt + Ask to authenticate again when you view or autofill a cipher + Add Bitwarden account + We are not affiliated, associated, authorized, endorsed by, or in any way officially connected with the Bitwarden, Inc., or any of its subsidiaries or its affiliates. + + To pass the captcha verification on an unofficial Bitwarden client, you must specify the client secret. To find it, visit Web vault / Settings / API Key. + + Client secret + Sign in + Region + United States + Europe + Custom (self-hosted) + HTTP headers + HTTP header + You can add custom HTTP headers that will be sent with every request to the server. + Key + Value + Add more + Server URL + Specify the base URL of your self-hosted Bitwarden installation. + Custom environment + You can specify the base URL of each service independently. + Web Vault Server URL + API Server URL + Icons Server URL + Identity Server URL + Verification + This authentication method is not supported yet. + Enter the verification code from your authenticator app. + Enter the verification code that was emailed to %1$s. + Enter the YubiKey authentication code manually. Place the cursor on the field below and trigger the YubiKey. + Authenticator + Duo (Organization) + FIDO2 Web Authentication + Email + FIDO U2F + Connect YubiKey via USB + Requires USB OTG support. + Touch the gold sensor on your YubiKey now. + Hold your YubiKey flat against the back of your device + Requires NFC support. + Failed to read YubiKey + Using FIDO2 WebAuthn requires using the Bitwarden Web vault version %1$s or higher. On older versions the authentication result will incorrectly be forwarded to the official Bitwarden app. + Confirm access + This data is protected, to continue please enter your app password. + + Confirm access + + Use biometric authentication to confirm your access and unlock this data. + Vault + Send + Generator + Watchtower + Settings + Locked due to inactivity + Text + File + Login + Card + Identity + Note + Passkey + Text + Boolean + Linked + + Pwned + Very strong + Strong + Good + Fair + Weak + Very strong passwords + Strong passwords + Good passwords + Fair passwords + Weak passwords + Filter + No filters available + Sort by + No sorting available + Title + Alphabetically + Reverse Alphabetically + Access count + Largest First + Smallest First + Modification date + Newest First + Oldest First + Expiration date + Newest First + Oldest First + Deletion date + Newest First + Oldest First + Password + Alphabetically + Reverse Alphabetically + Password modification date + Newest First + Oldest First + Password strength + Weakest First + Strongest First + Search vault + New item + There are no suggested items available for this context + + Security code + Saved to %1$s at %2$s + Password last modified at %1$s + Passkey created at %1$s + Last modified at %1$s + Created at %1$s + Deleted at %1$s + Expired at %1$s + Expiration scheduled at %1$s + Deleting scheduled at %1$s + + Call + + Text + + Email + + Directions + Sends + Search sends + New item + A password is required to access this share + Generator + Username generator + Password generator + Generate + Regenerate + Passphrase + Random passphrases provide the best combination of memorability and security. + Delimiter + Capitalize + Number + Username + Delimiter + Custom word + Capitalize + Number + Random symbols + A strong password has at least %1$d characters, uppercase & lowercase letters, digits and symbols. + Digits + Symbols + Uppercase letters + Lowercase letters + + Exclude similar symbols + + Exclude ambiguous symbols + Catch-all email + A catch-all email address provides users the option to receive all mail sent to their domain, even if they are sent to an email address that has not been set up for their domain. Ensure that your email hosting supports this feature before using it. + + Domain + Plus addressing email + Plus addressing means any email sent to %1$s is still sent to your account. This means you can have a lot of variations on your email address to give out to different people, sites, or mailing lists. Ensure that your email hosting supports this feature before using it. + Email + Subdomain addressing email + Subdomain addressing means any email sent to %1$s is still sent to your account. This means you can have a lot of variations on your email address to give out to different people, sites, or mailing lists. Ensure that your email hosting supports this feature before using it. + Email + Forwarded email alias + Create new login with the password + Create new login with the username + Password history + Show tips + Generator history + Clear history + Clear generator history? + This will remove all items from the history. + Password history + Clear history + Clear password history? + This will remove all passwords from the history. + Watchtower + Password strength + Security + Maintenance + Pwned Passwords + Passwords that have been exposed in data breaches. Such passwords should be changed immediately. + Reused Passwords + Don\'t use the same password on multiple websites. Generate unique passwords to improve security. + Vulnerable Accounts + Sites that were affected by a data breach since you last changed a password. Change your password to keep your account safe. + Unsecure Websites + Change the URLs that use HTTP protocol to use HTTPS protocol, as the latter utilizes the most advanced encryption available. + Inactive two-factor authentication + Sites that have two-factor authentication available but you haven\'t set it up yet. + Available Passkeys + Sites that have passkey available but you haven\'t set it up yet. It\'s simpler and more secure then a password. + Incomplete Items + Helps you identify missing or incomplete data in your vault. This can refer to identities with missing names or logins without usernames. + Expiring Items + Items that have expired or are expiring soon. + Duplicate URIs + Items that have one or more URIs that cover the same websites after applying the match detection. + Trashed Items + Items that have been moved into the trash. Having too many items in the trash may slow down operations with your vault. + Empty Folders + Folders that do not have any items in them. + Duplicate Items + Helps you identify and eliminate duplicate items in your vault. + Compromised Accounts + Check data breaches by a username or email address. + Change app password + Change password + Biometric authentication + + Change app password + App password never gets stored on the device nor sent over the network. It is used to generate a secret key that is used to encrypt the local data. + Unless you suspect unauthorized access or discover a malware on the device, there is no need to change the password if it is a strong, unique password. + Contact us + Your message + Use English to ensure that your feedback doesn\'t get misunderstood. + We appreciate the time that you spend sending us a message. Your message goes directly to us and we use it to troubleshoot issues, make product improvements and fix problems. While we may not reply to every report, we\'re reviewing and working on improvements & fixing issues as fast as we can. + Accounts + Add account + Team behind the app + I\'m a Software engineer from Ukraine. I specialize on app design and development. + Follow me + Search + Settings + Search settings + Appearance + Autofill + Development + Experimental + Settings + Notifications + Other + Permissions + Security + Keyguard Premium + Watchtower + Open-source licenses + Accounts + Add & view accounts + Autofill + Android Autofill & Credential services + Security + Biometrics, change password, vault timeout + Keyguard Premium + Unlock features & support app development + Watchtower + Compromised services, vulnerable passwords + Notifications + Alerts + Appearance + Language, theme and animations + Development + Test settings for development + Other + Community websites, app info + Show labels on navigation buttons + App version + App build date + Team behind the app + Reddit community + GitHub project + Crowdin project + Open-source licenses + Download APK file + Load App icons + Load Website icons + Queuing website icon might leak the website address to internet provider + Rich text formatting + Use Markdown to format notes + Language + Suggest translation + Font + Rate on Play Store + Tint color + Theme + Use contrast black theme + Open links in external browser + Conceal fields + Conceal sensitive info, such as passwords and credit card numbers + + Crash + Credential provider + Passkeys, passwords and data services + Privacy policy + Contact us + Experimental + Change app password + Require app password + In addition to your regular security settings, your app password will be required after this time or when biometry settings are changed + Immediately + Never + Send crash reports + Transition animation + Erase app data + Close the app and erase all local app data + Allow screenshots + Show the content of the app when switching between recent apps and allow capturing a screen + Hide the content of the app when switching between recent apps and forbid capturing a screen + Data safety + Lock vault + Lock after a reboot + Lock the vault after a device reboot + Lock when screen turns off + Lock the vault after a few seconds once the screen is off + Lock after a delay + Immediately + Never + Persist vault key on a disk + Vault key is persisted on an internal storage + Vault is locked after the app is unloaded from the memory + Storing a vault key on a disk is a security risk. If the device\'s internal storage is compromised, the attacker will gain access to the local vault data. + Permissions + Features overview + Biometric unlock + + Biometric unlock + Keep the screen on while viewing items + Autofill service + Use the Android Autofill Framework to assist in filling login information into other apps on the device + Auto-copy one-time passwords + When filling a login information, automatically copy one-time passwords + Inline suggestions + Embeds autofill suggestions directly into compatible keyboards + Manual selection + Displays an option to manually search a vault for an entry + Respect Autofill disabled flag + Disables autofill for a browser field that has autofill disabled flag set + Note that some websites are notorious for disabling autofill for a password field as well as some browsers are notorious for ignoring the autofill disabled flag + Ask to save data + Asks for updating the vault when filling of a form has completed + Auto-save app or website info + Automatically clear clipboard + Immediately + Never + One-time password notification duration + When you autofill a login item that has a one-time password, the notification with verification code will popup for at least the defined duration + Never + About Keyguard membership + The Premium unlocks extra features and funds a development of the app. Thank you for supporting us! ❤️ + Subscriptions + Products + Failed to load a list of subscriptions + Failed to load a list of products + Active + Will not renew + Manage on Play Store + Post notifications + Used to post downloading notifications + Camera + Used to scan QR codes + Allow two panel layout in landscape mode + Allow two panel layout in portrait mode + Dark + Light + Disabled + Dynamic + Crossfade + Developed specifically to increase legibility for readers with low vision, and to improve comprehension + Features Overview + Keyguard Premium + Multiple Accounts + Sign-in to multiple accounts simultaneously. + Two-way sync + Add or edit items and sync the changes back. + Offline editing + Add or edit items without internet connection. + Search + Search by anything + Name, email, password, phone number etc. + Filter + Filter by folder, organization, type etc. + Multiple keywords + Search by \'bitw test\' to find your \'Bitwarden Test Account\' item. + Watchtower + Pwned passwords + Find items with exposed in data breaches passwords. + Password strength + Find items with weak passwords. + Reused passwords + Find items with reused passwords. + Inactive 2FA + Find logins with available TOTP two-factor authentication. + Unsecure websites + Find websites that use HTTP protocol, auto-fix to HTTPS. + Incomplete items + Find empty items that might need updates. + Expiring items + Find expired or soon to be expired items. + Duplicate items + Find and merge duplicate items. + Misc + Multi-selection + Merge ciphers, fasten the refactoring with batch operations. + Show as Barcode + Encode a text as different barcodes. + Generator + Generate passwords or usernames. + Data safety + Local data + Local data consists of Downloads, User settings, Vault. They are stored in the internal storage of a device, which can only be accessed by the Android system or the Keyguard. + Downloads + User settings + The User settings are encrypted using a device-specific key. + Vault + The Vault is encrypted using a Key, derived from the App password using following steps: + The Salt and the Hash is then stored locally on a device, to later generate a master key to unlock the vault. + Unlocking a Vault means storing a correct Key in a device\'s RAM, gaining an ability to read and modify encrypted Vault. + Remote data + Remote data is stored on Bitwarden servers with zero-knowledge encryption. + diff --git a/common/src/commonMain/resources/MR/es-rES/plurals.xml b/common/src/commonMain/resources/MR/es-rES/plurals.xml new file mode 100644 index 00000000..5f2db8ad --- /dev/null +++ b/common/src/commonMain/resources/MR/es-rES/plurals.xml @@ -0,0 +1,2 @@ + + diff --git a/common/src/commonMain/resources/MR/es-rES/strings.xml b/common/src/commonMain/resources/MR/es-rES/strings.xml new file mode 100644 index 00000000..8e8c7c51 --- /dev/null +++ b/common/src/commonMain/resources/MR/es-rES/strings.xml @@ -0,0 +1,868 @@ + + + Ok + Cerrar + Si + No + + Nombre + Nombre de cuenta + Nombre de usuario + Contraseña + Contraseña de aplicación + Contraseña actual + Nueva contraseña + Correo electrónico + Verificado + No verificado + Visibilidad del correo + URL Pública + URL + + Recuento de acceso + Conozca más + Teléfono + Número de pasaporte + Número de licencia + Número de tarjeta + Ningún número de tarjeta + Marca + Número de seguridad + Válida desde + Válida hasta + Mes de vencimiento de la tarjeta + Año de caducidad de la tarjeta + Nombre del titular + Válida desde + Fecha de expiración + Compañía + Sincronizar + + Ocultar + + Visible + + Vacío + + Número de seguro social (SSN) + Ciudad + Estado/Provincia + Información + Cancelar + Continuar + País + Dirección + Código postal + Tira para buscar + Guardar + URI + URIs + Nota + Notas + Adjuntos + Sin adjuntos + Expira pronto + Datos incompletos + A este elemento le falta información importante. + Ítem + Ítems + %1$s elementos + Todos los elementos + Sin elementos + Sin carpeta + Nueva carpeta + Carpeta + Carpetas + Sin carpetas + Sin colección + Colección + Colecciones + Sin colecciones + Mi caja fuerte + Organización + Organizaciones + Sin organizaciones + Varios + Añadir Integración + Cuenta + Cuentas + No hay ninguna cuenta + Sin cuenta + Tipo + Opciones + Enviar + Restablecer + Longitud + Seguridad + Información de contacto + Título + Primer nombre + Segundo nombre + Apellido(s) + Nombre completo + Dirección (línea 1) + Dirección (línea 2) + Dirección (línea 3) + Renombrar + Seleccionar tipo + Autocompletar + Llave de acceso + Crear una llave de acceso + Desbloquear Keyguard + Confirmando solicitud de autenticación… + Llaves de acceso + + Contador de firma + + Servicio de confianza + + Detección + Nombre de usuario + Nombre a mostrar + Clave API + Dominio + Editar + Borrar + Eliminar + Eliminar del historial + Contraseñas reutilizadas + Contraseñas reutilizadas + Contraseña de un solo uso + Clave de autenticación + Usar + Guardar llave de acceso + Llave de acceso disponible + Autenticación en dos pasos habilitada + Personalizado + Usar Ajustes del sistema + + Próximamente + Desarrollado por + Código de verificación + Reenviar código de verificación + Solicitado un email de verificación + Caja fuerte Web + Abrir caja fuerte web + + Recordarme + + Basura + + Descarga + Descargas + Sin descargas + Sin duplicados + Cifrado + + Llave + Hash + Sal + AES de 256 bits + Aleatorio %1$d-bits de datos + Ninguna + Texto + Apps vinculadas + URIs enlazadas + Campos personalizados + Revelar una nota segura + Ocultar una nota segura + Sugerencia de contraseña maestra + Frase de huella digital + ¿Qué es una huella digital? + Bitwarden premium + Servidor no oficial de Bitwarden + Última sincronización en %1$s + Cambiar nombre + Cambiar color + Cambiar pista de contraseña maestra + Cerrar sesión + Iniciar sesión + Visita la caja fuerte web para verificar tu correo electrónico + Mejora tu cuenta a prémium y desbloquea algunas excelentes características adicionales + Autenticación de dos factores + Requiere verificación de inicio de sesión con otro dispositivo como una clave de seguridad, aplicación de autenticación, SMS o correo electrónico + Activo + Elementos + Cerrar sesión + ¿Cerrar sesión? + ¡Todos los cambios no sincronizados se perderán! + Cambiar nombre + Cambiar nombres + ¿Eliminar carpeta? + ¿Eliminar carpetas? + Este elemento(s) se eliminará inmediatamente. No puede deshacer esta acción. + Abierto recientemente + A menudo abierto + Ver detalles + Guardar en + Añadir a favoritos + Eliminar de favoritos + Activar la re-autenticación + Deshabilitar la re-autenticación + Editar + Fusionar en… + Copiar a… + Mover a carpeta + Cambiar nombre + Cambiar nombres + Añadir contraseña + Añadir contraseñas + Cambiar contraseña + Cambiar contraseñas + Ver historial de contraseñas + Papelera + Restaurar + Eliminar para siempre + Mover elementos asociados a la papelera + Abrir con… + Enviar con… + Abrir en un explorador de archivos + Eliminar archivo local + Ver elemento emparentado + Mostrar siempre el teclado + Sincronizar bóveda + Bloquear bóveda + Renombrar carpeta + Checar si el correo está en las filtraciones de datos conocidas + Checar si el nombre de usuario está en las filtraciones de datos conocidas + Checar si la contraseña está en las filtraciones de datos conocidas + Checar si el sitio web está en las filtraciones de datos conocidas + Abrir app + Abrir sitio web + Abrir documentos + Abrir el navegador + Iniciar la página principal + Iniciar Play Store + Abrir con %1$s + Abrir con... + ¿Cómo eliminar una cuenta? + Inseguro + Coincidir app + Detección de coincidencia + Dominio base + Coincide recursos por dominio de nivel superior y de segundo nivel. + Host + Coincidir recursos por nombre de host y (si se especifica) puerto. + Comienza con + Coincidir recursos cuando el recurso detectado comienza con la URI. + Coincidencia exacta + Coincidir con los recursos cuando el recurso detectado coincide exactamente con la URI. + Expresión regular + Coincidir recursos por expresión regular. Opción avanzada. + Nunca + Ignorar URI durante la búsqueda de elementos de autorrelleno. + %1$s vinculado a la contraseña + %1$s vinculado al nombre de usuario + %1$s vinculado al nombre de la tarjeta + %1$s vinculado al mes de vencimiento + %1$s vinculado al año de vencimiento + %1$s vinculado al código de la tarjeta + %1$s vinculado a la marca de la tarjeta + %1$s vinculado al número de tarjeta + %1$s vinculado al título + %1$s vinculado al segundo nombre + %1$s vinculado a la línea de dirección (1) + %1$s vinculado a la línea de dirección (2) + %1$s vinculado a la línea de dirección (3) + %1$s vinculado a la ciudad + %1$s vinculado al estado + %1$s vinculado al código postal + %1$s vinculado al país + %1$s vinculado a la empresa + %1$s vinculado al correo electrónico + %1$s vinculado al número de teléfono + %1$s vinculado al número de seguro social (SSN) + %1$s vinculado al nombre de usuario + %1$s vinculado al número de pasaporte + %1$s vinculado al número de licencia + %1$s vinculado al nombre + %1$s vinculado al apellido + %1$s vinculado al nombre completo + %1$s vinculado a un campo desconocido + Compartir con… + %1$d seleccionado + Copiar + Copiar valor + Copiar URL + Copiar URI + Copiar el nombre del paquete + Copiar contraseña + Copiar nombre de usuario + Copiar email + Copiar número de teléfono + Copiar número de pasaporte + Copiar número de licencia + Copiar número de tarjeta + Copiar el nombre del titular de la tarjeta + Copiar el año de caducidad + Copiar el mes de caducidad + Copiar código CVV + Copiar la contraseña de un solo uso + Copiar clave secreta + Desbloquear Keyguard + Abrir Keyguard + Enero + Febrero + Marzo + Abril + Mayo + Junio + Julio + Agosto + Septiembre + Octubre + Noviembre + Diciembre + Subir + Bajar + Quitar + ¿Eliminar un elemento? + Añadir más + FIDO2 WebAuthn + Autenticar WebAuthn + Volver a la app + + No debe estar vacío + + No debe estar en blanco + Debe ser un dominio personalizado + Debe contener solo caracteres US-ASCII + Al menos debe tener %1$d símbolos + Debe tener %1$d símbolos + Dominio inválido + Email no válido + URL no válida + URI no válida + Número de tarjeta inválido + Contraseña incorrecta + Error al generar el código OTP + Error al crear una llave de acceso + Error al autorizar una solicitud + + Código de barras + Mostrar como código de barras + Copie este autenticador a otro dispositivo escaneando el código QR. + + Selecciona la fecha + + Selector de color + + ¿Cómo eliminar una cuenta? + Una recopilación de información sobre cómo eliminar su cuenta de los servicios web + + Fácil + + Normal + + Difícil + + Disponibilidad limitada + + Imposible + Enviar email + Buscar sitios web + Sin instrucciones + Autenticación en dos pasos + Lista de sitios web con soporte de autenticación de dos factores + Buscar sitios web + Llaves de acceso + Lista de sitios web con soporte para llaves de acceso + Buscar sitios web + + Informe de filtración de datos + Las filtraciones de datos pueden proporcionar a los actores maliciosos acceso a información personal y financiera sensible potencialmente conduciendo a robo de identidad, fraude financiero y otras formas de cibercrimen. + No se encontraron filtraciones de datos + Cuentas comprometidas encontradas + Vulneraciones + Ocurrió en %1$s + Reportado en %1$s + No se pudieron comprobar las filtraciones de datos. Es posible que estés fuera de línea + Filtraciones de datos + Una contraseña que se encuentra en las filtraciones de datos toma mucho menos tiempo para vulnerarse y no debería ser utilizada. + La contraseña está comprometida + La contraseña ha sido identificada en las filtraciones de datos conocidas. Por favor, cámbiala inmediatamente para proteger tu seguridad en línea + No se encontraron filtraciones de datos + No se pudieron comprobar las filtraciones de datos. Es posible que estés fuera de línea + + Tipo grande + Mostrar en tipo grande + Mostrar en bóveda de tipo grande y bloqueo + Selector de Apps + Buscar apps instaladas + App de sistema + Sin apps + Elija una carpeta + Crear una nueva carpeta: + + Esta organización tendrá la propiedad de la copia. Tú no serás el dueño directo. + Reenviadores de correo + Reenviadores de correo + ¿Deseas eliminar el reenvío de correo? + ¿Deseas eliminar los reenviadores de correo? + Integración de reenvío de correo + Sin reenviadores de correo + Crear una bóveda cifrada donde se almacenarán los datos locales. + Contraseña de la app + Autenticación biométrica + Crear caja fuerte + Enviar informes de errores + Crear caja fuerte + Borrar datos de la app + Cerrar la aplicación y borrar todos los datos de la aplicación local + La caja fuerte está bloqueada. Introduce la contraseña de tu aplicación para continuar. + Desbloquear + + Desbloquear caja fuerte + + Utiliza la autenticación biométrica para desbloquear la caja fuerte. + Se requiere verificación del usuario. Introduce la contraseña de tu aplicación para continuar. + Verificar + Estado de la sincronización + Actualizado + Pendiente + Sincronizando + Sincronización fallida + Nuevo ítem + Editar ítem + Texto de estilo con %1$s o %2$s y más. Sintaxis de Markdown limitada es compatible. + cursiva + negrita + Vista previa + Re-autenticación + Solicitar que se autentifique de nuevo cuando vea o rellene automáticamente un cifrado + Añadir una cuenta de Bitwarden + No estamos afiliados, asociados, autorizados, avalados de ninguna manera, o relacionados con Bitwarden, Inc. o cualquiera de sus filiales o afiliados. + + Para pasar la verificación captcha a un cliente no oficial de Bitwarden, debe especificar la clave secreta. Para encontrarla, ve a Web Vault / Configuración / Clave API. + + Client secret + Iniciar sesión + Región + Estados Unidos + Europa + Personalizado (auto alojado) + Encabezados HTTP + Encabezado HTTP + Puede añadir cabeceras HTTP personalizadas que se enviarán con cada petición al servidor. + Llave + Valor + Añadir más + URL del servidor + Especifica la URL base de tu instalación de Bitwarden con alojamiento propio. + Entorno personalizado + Puede especificar la URL base de cada servicio de forma independiente. + URL del servidor de la caja fuerte + URL del servidor API + URL del servidor de iconos + URL del servidor de identidad + Verificación + Este método de autenticación no está soportado todavía. + Introduzca el código de verificación de su aplicación de autenticación. + Introduzca el código de verificación que fue enviado por correo electrónico a %1$s. + Introduzca el código de autenticación de YubiKey manualmente. Coloque el cursor en el campo de abajo y activa la YubiKey. + Autenticador + Dúo (Organización) + Autenticación Web De FIDO2 + Correo Electrónico + FIDO AF2 + Conectar YubiKey a través de USB + Requiere soporte USB OTG. + Toque el sensor de oro en su YubiKey ahora. + Mantén tu YubiKey en la parte trasera de tu dispositivo + Requiere soporte NFC. + Error al leer la YubiKey + Usar WebAuthn de FIDO2 requiere usar la bóveda de Bitwarden Web %1$s o superior. En versiones anteriores el resultado de autenticación será reenviado incorrectamente a la aplicación oficial de Bitwarden. + Confirmar acceso + Estos datos están protegidos, para continuar por favor ingrese la contraseña de la aplicación. + + Confirmar acceso + + Utilice la autenticación biométrica para confirmar su acceso y desbloquear estos datos. + Caja fuerte + Enviar + Generador + Vigilancia + Ajustes + Bloqueado por la inactividad + Texto + Archivo + Iniciar sesión + Tarjeta + Identidad + Nota + Llave de acceso + Texto + Boolean + Vinculado + + Comprometida + Muy fuerte + Fuerte + Bueno + Aceptable + Débil + Contraseñas muy fuertes + Contraseñas fuertes + Buenas contraseñas + No está mal + Contraseñas débiles + Filtro + No hay filtros disponibles + Ordenar por + No hay ordenamiento disponible + Título + Alfabético + Alfabético inverso + Recuento de acceso + Más grande primero + Más pequeño primero + Fecha de modificación + Más nuevo primero + Más antiguo primero + Fecha de caducidad + Más nuevo primero + Más antiguo primero + Fecha de eliminación + Más nuevo primero + Más antiguo primero + Contraseña + Alfabético + Alfabético inverso + Fecha de modificación de la contraseña + Más nuevo primero + Más antiguo primero + Seguridad de la contraseña + Más débil primero + Más fuerte primero + Buscar en caja fuerte + Nuevo ítem + No hay elementos sugeridos disponibles para este contexto + + Código de seguridad + Guardar en %1$s en%2$s + Contraseña modificada por última vez en %1$s + Llave de acceso creada en %1$s + Última modificación en %1$s + Creado en %1$s + Eliminado el %1$s + Expira el %1$s + Expiración programada el %1$s + Eliminación programada para el %1$s + + Llamar + + Texto + + E-mail + + Direcciones + Sends + Buscar Sends + Nuevo ítem + Se requiere una contraseña para compartir + Generador + Generador de nombre de usuario + Generador de contraseñas + Generar + Regenerar + Frase de contraseña + Las contraseñas aleatorias proporcionan la mejor combinación de memoria y seguridad. + Delimitador + Mayúsculas + Número + Nombre de usuario + Delimitador + Palabra personalizada + Mayúsculas + Número + Símbolos aleatorios + Una contraseña segura tiene al menos %1$d caracteres, mayúsculas & letras minúsculas, dígitos y símbolos. + Dígitos + Símbolos + Letras mayúsculas + Letras minúsculas + + Excluir símbolos similares + + Excluir símbolos ambiguos + Correo catch-all + Una dirección de correo catch-all proporciona a los usuarios la opción de recibir todo el correo enviado a su dominio, incluso si se envían a una dirección de correo electrónico que no ha sido configurada para su dominio. Asegúrate de que tu alojamiento de correo electrónico soporta esta característica antes de usarla. + + Dominio + Correo electrónico extra + Un correo electrónico extra significa que cualquier correo electrónico enviado a %1$s todavía está enviado a tu cuenta. Esto significa que puede tener muchas variaciones en tu dirección de correo electrónico para tener un correo en varios sitios o listas de correo. Asegúrate de que tu alojamiento de correo electrónico soporta esta característica antes de usarla. + Correo electrónico + Subdominio del correo electrónico + Dirección de subdominio significa que cualquier correo electrónico enviado a %1$s todavía se envía a tu cuenta. Esto significa que puedes tener muchas variantes en tú dirección de correo electrónico para dar a diferentes personas, sitios o listas de correo. Asegúrate de que tu alojamiento de correo electrónico soporta esta característica antes de usarla. + Correo electrónico + Alias de correo reenviado + Crear nueva cuenta con esta contraseña + Crear nueva cuenta con este nombre + Historial de contraseñas + Mostrar sugerencias + Historial del generador + Limpiar el historial + ¿Deseas limpiar el historial del generador? + Esto eliminará todos los elementos del historial. + Historial de contraseñas + Limpiar el historial + ¿Limpiar el historial de contraseñas? + Esto eliminará todas las contraseñas del historial. + Vigilancia + Seguridad de la contraseña + Seguridad + Mantenimiento + Contraseñas filtradas + Las contraseñas que han sido vulneradas en las filtraciones de datos. Deben ser modificadas inmediatamente. + Contraseñas reutilizadas + No utilices la misma contraseña en varios sitios web. Genera contraseñas únicas para una mejor seguridad. + Cuentas Vulnerables + Sitios que se vieron afectados por una filtración de datos desde la última vez que cambiaste una contraseña. Cambia tu contraseña para mantener tu cuenta segura. + Sitios Inseguros + Cambia las URLs que utilizan el protocolo HTTP para usar el protocolo HTTPS, ya que este último utiliza el cifrado más avanzado disponible. + Autenticación En Dos Pasos Inactiva + Sitios que tienen la autenticación en dos pasos disponibles pero aún no lo has configurado. + Llaves De Acceso Disponibles + Sitios con llaves de acceso disponibles pero aún no lo has configurado. Es más sencillo y seguro que una contraseña. + Elementos Incompletos + Te ayuda a identificar datos faltantes o incompletos en tu caja fuerte. Esto puede referirse a identidades con nombres faltantes o inicios de sesión sin nombres de usuario. + Elementos Expirados + Elementos que han expirado o expiraran pronto. + URls Duplicadas + Elementos que tienen una o más URIs que cubren los mismos sitios web después de aplicar una detección de coincidencias. + Elementos En Papelera + Elementos que se han movido a la papelera. Tener muchos elementos en la papelera puede ralentizar las operaciones con tu caja fuerte. + Carpetas Vacías + Carpetas que no tienen elementos en ellas. + Elementos Duplicados + Te ayuda a identificar y eliminar objetos duplicados en tu caja fuerte. + Cuentas Comprometidas + Compruebe las filtraciones de datos por un nombre de usuario o dirección de correo electrónico. + Cambiar contraseña de la app + Cambiar contraseña + Autenticación biométrica + + Cambiar contraseña de la app + La contraseña de la app nunca se almacena en el dispositivo ni se envía a través de la red. Se utiliza para generar una clave secreta que se utiliza para cifrar los datos locales. + A menos que sospeche acceso no autorizado o descubra un malware en el dispositivo, no hay necesidad de cambiar la contraseña más si es una contraseña única y fuerte. + Contáctanos + Tu mensaje + Utiliza solo inglés para asegurarnos de que tus comentarios no se malentiendan. + Agradecemos el tiempo que te toma enviándonos un mensaje. Tu mensaje va directamente a nosotros y lo utilizamos para solucionar problemas, hacer mejoras en el producto y solucionar problemas. Aunque no respondamos a cada informe, estamos revisando y trabajando en mejoras & arreglando problemas tan rápido como podamos. + Cuentas + Añadir cuenta + Equipo detrás de la aplicación + Soy un ingeniero en software de Ucrania. Me especializo en diseño y desarrollo de aplicaciones. + Sígueme + Buscar + Ajustes + Ajustes de búsqueda + Apariencia + Autocompletar + Desarrollo + Experimental + Ajustes + Notificaciones + Otros + Permisos + Seguridad + Keyguard Premium + Vigilancia + Licencias de código abierto + Cuentas + Añadir & ver cuentas + Autocompletar + Autollenado de Android & Servicios de credenciales + Seguridad + Biometría, cambiar contraseña, tiempo de la caja fuerte + Keyguard Premium + Desbloquear características & ayuda para desarrollo de la app + Vigilancia + Servicios comprometidos, contraseñas vulnerables + Notificaciones + Alertas + Apariencia + Idioma, temas y animaciones + Desarrollo + Configuración de prueba para desarrollo + Otros + Sitios web de la comunidad, información de la app + Mostrar etiquetas en los botones de navegación + Versión de la app + Fecha de compilación + Equipo detrás de la app + Comunidad de Reddit + Proyecto en GitHub + Proyecto de Crowdin + Licencias de código abierto + Descargar archivo APK + Cargar iconos de aplicación + Cargar iconos web + El icono de la página web podría filtrar la dirección del sitio web al proveedor de Internet + Formato de texto enriquecido + Usar Markdown para formatear notas + Idioma + Sugerir traducción + Tipo de fuente + Valorar en Play Store + Tonalidad + Tema + Usar tema negro + Abrir links en un navegador externo + Detener campos + Detener información sensible, como contraseñas y números de tarjeta de crédito + + Crash + Proveedor de credenciales + Llaves de acceso, contraseñas y servicios de datos + Política de privacidad + Contáctanos + Experimental + Cambiar contraseña de la app + Solicitar contraseña + Además de sus ajustes de seguridad regulares, su contraseña de la aplicación será requerida después de este momento o cuando se cambien los ajustes de la biometría + De inmediato + Nunca + Enviar informes de errores + Animaciones de transición + Borrar datos de la app + Cerrar la aplicación y borrar todos los datos de la aplicación local + Permitir capturas de pantalla + Mostrar el contenido de la aplicación al cambiar entre aplicaciones recientes y permitir la captura de una pantalla + Ocultar el contenido de la app al cambiar entre aplicaciones recientes y restringir las capturas de pantalla + Seguridad de los datos + Bloquear caja fuerte + Bloquear después de reiniciar + Bloquear la caja fuerte después de reiniciar el dispositivo + Bloquear cuando se apaga la pantalla + Bloquea la caja fuerte después de unos segundos de apagar la pantalla + Bloquear después de un tiempo + De inmediato + Nunca + Mantener la caja fuerte en el almacenamiento + La clave de la caja fuerte persiste en un almacenamiento interno + La caja fuerte se bloquea cuando la app se descarga de la memoria + Almacenar la clave en el almacenamiento es un riesgo de seguridad, Si el almacenamiento interno es comprometido, el atacante tendrá acceso a la clave local. + Permisos + Vista de las características + Desbloqueo biométrico + + Desbloqueo con biometría + Mantener la pantalla encendida mientras se visualizan los elementos + Servicio de Autocompletar + Utiliza el Framework de Autorrellenado de Android para ayudar a rellenar información de inicio de sesión en otras aplicaciones del dispositivo + Auto-copiar contraseñas de un solo uso + Cuando se rellena información del inicio de sesión, se copia automáticamente las contraseñas de un solo uso + Sugerencias automáticas + Inserta sugerencias de autorrelleno directamente en teclados compatibles + Selección manual + Muestra una opción para buscar manualmente una entrada en la caja fuerte + Respetar la bandera de Autorrellenado desactivada + Deshabilita el autorrelleno para un campo del navegador que tiene la bandera de autorrelleno desactivada + Toma en cuenta que algunos sitios web es difícil desactivar el autorrellenado para un campo de contraseña, así como algunos navegadores son difíciles para ignorar la bandera se autorrellenado desactivado + Preguntar para guardar datos + Pregunta para actualizar la caja fuerte cuando se completa el llenado de un formulario + Auto-guardar app o información de un sitio + Borrar automáticamente el portapapeles + De inmediato + Nunca + Duración de contraseña de un solo uso + Cuando autorrellenas un elemento de inicio de sesión que tiene una contraseña única, la notificación con código de verificación aparecerá durante al menos la duración definida + Nunca + Acerca de la suscripción de Keyguard + El Premium desbloquea características adicionales y financia el desarrollo de la aplicación. ¡Gracias por apoyarnos! ❤️ + Suscripciones + Productos + Error al cargar la lista de suscripciones + Error al cargar la lista de productos + Activo + No se renovará + Administrar en Play Store + Mostrar notificaciones + Utilizado para mostrar notificaciones de descargas + Cámara + Usado para escanear códigos QR + Permitir el diseño de dos paneles en modo horizontal + Permitir el diseño de dos paneles en modo vertical + Tema oscuro + Tema claro + Deshabilitado + Dinámico + Desvanecer + Desarrollado específicamente para aumentar la legibilidad para lectores con baja visión, y para mejorar la comprensión + Resumen De Las Funciones + Keyguard Premium + Cuentas Múltiples + Inicie sesión en varias cuentas simultáneamente. + Sincronización bidireccional + Añadir o editar elementos y sincronizar los cambios de nuevo. + Edición sin conexión + Añadir o editar elementos sin conexión a Internet. + Buscar + Buscar cualquier cosa + Nombre, correo electrónico, contraseña, número de teléfono, etc. + Filtrar + Filtrar por carpeta, organización, tipo etc. + Múltiples palabras clave + Busca por \"bitw test\" para encontrar el elemento de \"Cuenta de Prueba de Bitwarden\". + Vigilancia + Contraseñas filtradas + Encuentre elementos de contraseñas expuestas en las filtraciones de datos. + Seguridad de la contraseña + Encuentra elementos con contraseñas débiles. + Contraseñas reutilizadas + Encuentra elementos con contraseñas reutilizadas. + AF2 Inactivos + Encuentre entradas con autenticación TOTP de dos factores disponible. + Sitios inseguros + Encuentre sitios web que utilicen el protocolo HTTP, cambiando a HTTPS. + Elementos incompletos + Encuentra elementos vacíos que puedan necesitar actualizaciones. + Elementos expirados + Encontrar elementos prontos a expirar o expirados. + Elementos duplicados + Encuentra y mezcla elementos duplicados. + Misceláneos + Multi-selección + Combinar cifrados, fijar la refactorización con operaciones por lotes. + Mostrar como código de barras + Codifica un texto como códigos de barras diferentes. + Generador + Generar contraseñas o nombres de usuario. + Seguridad de los datos + Datos locales + Los datos locales consisten en Descargas, configuración de usuario, cajas fuertes. Se almacenan en el almacenamiento interno de un dispositivo, al que solo puede acceder el sistema Android o también a Keyguard. + Descargas + Ajustes de usuario + Los ajustes de usuario se cifran usando una clave específica del dispositivo. + Ajustes de usuario + La caja fuerte se encripta usando una clave, derivada de la contraseña de la aplicación usando los siguientes pasos: + La sal y el Hash se almacenan localmente en un dispositivo, para luego generar una llave maestra para desbloquear la caja fuerte. + Desbloquear una caja fuerte significa almacenar una clave correcta en la RAM de un dispositivo, ganando la capacidad de leer y modificar la caja fuerte cifrada. + Datos remotos + Los datos remotos se almacenan en servidores Bitwarden con cifrado de conocimiento cero. + diff --git a/common/src/commonMain/resources/MR/fi-rFI/plurals.xml b/common/src/commonMain/resources/MR/fi-rFI/plurals.xml new file mode 100644 index 00000000..5f2db8ad --- /dev/null +++ b/common/src/commonMain/resources/MR/fi-rFI/plurals.xml @@ -0,0 +1,2 @@ + + diff --git a/common/src/commonMain/resources/MR/fi-rFI/strings.xml b/common/src/commonMain/resources/MR/fi-rFI/strings.xml new file mode 100644 index 00000000..214f4486 --- /dev/null +++ b/common/src/commonMain/resources/MR/fi-rFI/strings.xml @@ -0,0 +1,868 @@ + + + OK + Close + Yes + No + + Name + Account name + Username + Password + App password + Current password + New password + Email + Verified + Not verified + Email visibility + Public URL + URL + + Access count + Learn more + Phone number + Passport number + License number + Card number + No card number + Brand + Security code + Valid from + Valid to + Card expiry month + Card expiry year + Cardholder name + Valid from + Expiry date + Company + Sync + + Hidden + + Visible + + Empty + + SSN + City + State + Info + Cancel + Continue + Country + Address + Postal code + Pull to search + Save + URI + URIs + Note + Notes + Attachments + No attachments + Expiring soon + Incomplete data + This item is missing some of the important information. + Item + Items + %1$s items + All items + No items + No folder + New folder + Folder + Folders + No folders + No collection + Collection + Collections + No collections + My vault + Organization + Organizations + No organizations + Miscellaneous + Add integration + Account + Accounts + No accounts + No account + Type + Options + Send + Reset + Length + Security + Contact info + Title + First name + Middle name + Last name + Full name + Address line 1 + Address line 2 + Address line 3 + Rename + Select type + Autofill + Passkey + Create a passkey + Unlock Keyguard + Confirming auth request… + Passkeys + + Signature counter + + Relying party + + Discoverable + Username + Display name + API key + Domain + Edit + Delete + Remove + Remove from the history + Reused password + Reused passwords + One-time password + Authenticator key + Use + Save passkey + Passkey available + Two-factor authentication available + Custom + Follow system settings + + Coming soon + Powered by + Verification code + Re-send verification code + Requested a verification email + Web vault + Launch Web vault + + Remember me + + Trash + + Download + Downloads + No downloads + No duplicates + Encryption + + Key + Hash + Salt + 256-bit AES + Random %1$d-bits of data + None + Text + Linked apps + Linked URIs + Custom fields + Reveal a secure note + Hide a secure note + Master password hint + Fingerprint phrase + What is a fingerprint? + Bitwarden premium + Unofficial Bitwarden server + Last synced at %1$s + Change name + Change color + Change master password hint + Sign out + Sign in + Visit Web vault to verify your email address + Upgrade your account to a premium membership and unlock some great additional features + Two-factor authentication + Require login verification with another device such as a security key, authenticator app, SMS or email + Active + Items + Log out + Log out? + All of the not synchronized changes will be lost! + Change name + Change names + Delete folder? + Delete folders? + This item(s) will be deleted immediately. You can not undo this action. + Recently opened + Often opened + View details + Save to + Add to favourites + Remove from favourites + Enable auth re-prompt + Disable auth re-prompt + Edit + Merge into… + Copy to… + Move to folder + Change name + Change names + Add password + Add passwords + Change password + Change passwords + View password history + Trash + Restore + Delete forever + Move associated items to trash + Open with… + Send with… + Open in a file manager + Delete local file + View parent item + Always show keyboard + Sync vault + Lock vault + Rename folder + Check the email in known data breaches + Check the username in known data breaches + Check the password in known data breaches + Check the website in known data breaches + Launch app + Launch website + Launch docs + Launch browser + Launch main page + Launch Play store + Launch with %1$s + Launch with… + How to delete an account? + Unsecure + Match app + Match detection + Base domain + Match resources by top-level and second-level domain. + Host + Match resources by hostname and (if specified) port. + Starts with + Match resources when the detected resource starts with the URI. + Exact + Match resources when the detected resource exactly matches the URI. + Regular expression + Match resources by regular expression. Advanced option. + Never + Ignore URI during auto-fill item search. + %1$s linked to the password + %1$s linked to the username + %1$s linked to the cardholder name + %1$s linked to the expiration month + %1$s linked to the expiration year + %1$s linked to the card code + %1$s linked to the card brand + %1$s linked to the card number + %1$s linked to the title + %1$s linked to the middle name + %1$s linked to the address line (1) + %1$s linked to the address line (2) + %1$s linked to the address line (3) + %1$s linked to the city + %1$s linked to the state + %1$s linked to the postal code + %1$s linked to the country + %1$s linked to the company + %1$s linked to the email + %1$s linked to the phone number + %1$s linked to the SSN + %1$s linked to the username + %1$s linked to the passport number + %1$s linked to the license number + %1$s linked to the first name + %1$s linked to the last name + %1$s linked to the full name + %1$s linked to an unknown field + Share with… + %1$d selected + Copy + Copy value + Copy URL + Copy URI + Copy package name + Copy password + Copy username + Copy email + Copy phone number + Copy passport number + Copy license number + Copy card number + Copy cardholder name + Copy expiration year + Copy expiration month + Copy CVV code + Copy one-time password + Copy secret key + Unlock Keyguard + Open Keyguard + January + February + March + April + May + June + July + August + September + October + November + December + Move up + Move down + Remove + Remove an item? + Add more + FIDO2 WebAuthn + Authenticate WebAuthn + Return to app + + Must not be empty + + Must not be blank + Must be custom domain + Must contain only US-ASCII characters + Must be at least %1$d symbols long + Must be %1$d symbols long + Invalid domain + Invalid email + Invalid URL + Invalid URI + Invalid card number + Incorrect password + Failed to generate OTP code + Failed to create a passkey + Failed to authorize a request + + Barcode + Show as Barcode + Copy this authenticator to another device by scanning the QR code. + + Date picker + + Color picker + + How to delete an account? + A collection of info of how to delete your account from web services + + Easy + + Medium + + Hard + + Limited availability + + Impossible + Send email + Search websites + No instructions + Two-factor authentication + List of websites with two-factor authentication support + Search websites + Passkeys + List of websites with passkeys support + Search websites + + Data breach + Breached account data can provide malicious actors with access to sensitive personal and financial information, potentially leading to identity theft, financial fraud, and other forms of cybercrime. + No breaches found + Breached accounts found + Breaches + Occurred on %1$s + Reported on %1$s + Failed to check data breaches. You might currently be offline + Data breach + A password that is found in the data breaches takes significantly less time to break and should never be used. + Password is compromised + The password has been identified in known data breaches. Please change it immediately to protect your online security + No breaches found + Failed to check data breaches. You might currently be offline + + Large Type + Show in Large Type + Show in Large Type and Lock vault + App Picker + Search installed apps + System app + No apps + Choose a folder + Create a new folder: + + This organization will have an ownership of the copy. You will not be the direct owner. + Email forwarders + Email forwarders + Delete email forwarder? + Delete email forwarders? + Email forwarder integration + No email forwarders + Create an encrypted vault where the local data will be stored. + App password + Biometric authentication + Create a vault + Send crash reports + Create a vault + Erase app data + Close the app and erase all local app data + The vault is locked. Enter your app password to continue. + Unlock + + Unlock a vault + + Use biometric authentication to unlock the vault. + User verification is required. Enter your app password to continue. + Verify + Sync status + Up to date + Pending + Syncing + Sync failed + New item + Edit item + Style text with %1$s or %2$s and more. Limited Markdown syntax is supported. + italic + bold + Render preview + Auth re-prompt + Ask to authenticate again when you view or autofill a cipher + Add Bitwarden account + We are not affiliated, associated, authorized, endorsed by, or in any way officially connected with the Bitwarden, Inc., or any of its subsidiaries or its affiliates. + + To pass the captcha verification on an unofficial Bitwarden client, you must specify the client secret. To find it, visit Web vault / Settings / API Key. + + Client secret + Sign in + Region + United States + Europe + Custom (self-hosted) + HTTP headers + HTTP header + You can add custom HTTP headers that will be sent with every request to the server. + Key + Value + Add more + Server URL + Specify the base URL of your self-hosted Bitwarden installation. + Custom environment + You can specify the base URL of each service independently. + Web Vault Server URL + API Server URL + Icons Server URL + Identity Server URL + Verification + This authentication method is not supported yet. + Enter the verification code from your authenticator app. + Enter the verification code that was emailed to %1$s. + Enter the YubiKey authentication code manually. Place the cursor on the field below and trigger the YubiKey. + Authenticator + Duo (Organization) + FIDO2 Web Authentication + Email + FIDO U2F + Connect YubiKey via USB + Requires USB OTG support. + Touch the gold sensor on your YubiKey now. + Hold your YubiKey flat against the back of your device + Requires NFC support. + Failed to read YubiKey + Using FIDO2 WebAuthn requires using the Bitwarden Web vault version %1$s or higher. On older versions the authentication result will incorrectly be forwarded to the official Bitwarden app. + Confirm access + This data is protected, to continue please enter your app password. + + Confirm access + + Use biometric authentication to confirm your access and unlock this data. + Vault + Send + Generator + Watchtower + Settings + Locked due to inactivity + Text + File + Login + Card + Identity + Note + Passkey + Text + Boolean + Linked + + Pwned + Very strong + Strong + Good + Fair + Weak + Very strong passwords + Strong passwords + Good passwords + Fair passwords + Weak passwords + Filter + No filters available + Sort by + No sorting available + Title + Alphabetically + Reverse Alphabetically + Access count + Largest First + Smallest First + Modification date + Newest First + Oldest First + Expiration date + Newest First + Oldest First + Deletion date + Newest First + Oldest First + Password + Alphabetically + Reverse Alphabetically + Password modification date + Newest First + Oldest First + Password strength + Weakest First + Strongest First + Search vault + New item + There are no suggested items available for this context + + Security code + Saved to %1$s at %2$s + Password last modified at %1$s + Passkey created at %1$s + Last modified at %1$s + Created at %1$s + Deleted at %1$s + Expired at %1$s + Expiration scheduled at %1$s + Deleting scheduled at %1$s + + Call + + Text + + Email + + Directions + Sends + Search sends + New item + A password is required to access this share + Generator + Username generator + Password generator + Generate + Regenerate + Passphrase + Random passphrases provide the best combination of memorability and security. + Delimiter + Capitalize + Number + Username + Delimiter + Custom word + Capitalize + Number + Random symbols + A strong password has at least %1$d characters, uppercase & lowercase letters, digits and symbols. + Digits + Symbols + Uppercase letters + Lowercase letters + + Exclude similar symbols + + Exclude ambiguous symbols + Catch-all email + A catch-all email address provides users the option to receive all mail sent to their domain, even if they are sent to an email address that has not been set up for their domain. Ensure that your email hosting supports this feature before using it. + + Domain + Plus addressing email + Plus addressing means any email sent to %1$s is still sent to your account. This means you can have a lot of variations on your email address to give out to different people, sites, or mailing lists. Ensure that your email hosting supports this feature before using it. + Email + Subdomain addressing email + Subdomain addressing means any email sent to %1$s is still sent to your account. This means you can have a lot of variations on your email address to give out to different people, sites, or mailing lists. Ensure that your email hosting supports this feature before using it. + Email + Forwarded email alias + Create new login with the password + Create new login with the username + Password history + Show tips + Generator history + Clear history + Clear generator history? + This will remove all items from the history. + Password history + Clear history + Clear password history? + This will remove all passwords from the history. + Watchtower + Password strength + Security + Maintenance + Pwned Passwords + Passwords that have been exposed in data breaches. Such passwords should be changed immediately. + Reused Passwords + Don\'t use the same password on multiple websites. Generate unique passwords to improve security. + Vulnerable Accounts + Sites that were affected by a data breach since you last changed a password. Change your password to keep your account safe. + Unsecure Websites + Change the URLs that use HTTP protocol to use HTTPS protocol, as the latter utilizes the most advanced encryption available. + Inactive two-factor authentication + Sites that have two-factor authentication available but you haven\'t set it up yet. + Available Passkeys + Sites that have passkey available but you haven\'t set it up yet. It\'s simpler and more secure then a password. + Incomplete Items + Helps you identify missing or incomplete data in your vault. This can refer to identities with missing names or logins without usernames. + Expiring Items + Items that have expired or are expiring soon. + Duplicate URIs + Items that have one or more URIs that cover the same websites after applying the match detection. + Trashed Items + Items that have been moved into the trash. Having too many items in the trash may slow down operations with your vault. + Empty Folders + Folders that do not have any items in them. + Duplicate Items + Helps you identify and eliminate duplicate items in your vault. + Compromised Accounts + Check data breaches by a username or email address. + Change app password + Change password + Biometric authentication + + Change app password + App password never gets stored on the device nor sent over the network. It is used to generate a secret key that is used to encrypt the local data. + Unless you suspect unauthorized access or discover a malware on the device, there is no need to change the password if it is a strong, unique password. + Contact us + Your message + Use English to ensure that your feedback doesn\'t get misunderstood. + We appreciate the time that you spend sending us a message. Your message goes directly to us and we use it to troubleshoot issues, make product improvements and fix problems. While we may not reply to every report, we\'re reviewing and working on improvements & fixing issues as fast as we can. + Accounts + Add account + Team behind the app + I\'m a Software engineer from Ukraine. I specialize on app design and development. + Follow me + Search + Settings + Search settings + Appearance + Autofill + Development + Experimental + Settings + Notifications + Other + Permissions + Security + Keyguard Premium + Watchtower + Open-source licenses + Accounts + Add & view accounts + Autofill + Android Autofill & Credential services + Security + Biometrics, change password, vault timeout + Keyguard Premium + Unlock features & support app development + Watchtower + Compromised services, vulnerable passwords + Notifications + Alerts + Appearance + Language, theme and animations + Development + Test settings for development + Other + Community websites, app info + Show labels on navigation buttons + App version + App build date + Team behind the app + Reddit community + GitHub project + Crowdin project + Open-source licenses + Download APK file + Load App icons + Load Website icons + Queuing website icon might leak the website address to internet provider + Rich text formatting + Use Markdown to format notes + Language + Suggest translation + Font + Rate on Play Store + Tint color + Theme + Use contrast black theme + Open links in external browser + Conceal fields + Conceal sensitive info, such as passwords and credit card numbers + + Crash + Credential provider + Passkeys, passwords and data services + Privacy policy + Contact us + Experimental + Change app password + Require app password + In addition to your regular security settings, your app password will be required after this time or when biometry settings are changed + Immediately + Never + Send crash reports + Transition animation + Erase app data + Close the app and erase all local app data + Allow screenshots + Show the content of the app when switching between recent apps and allow capturing a screen + Hide the content of the app when switching between recent apps and forbid capturing a screen + Data safety + Lock vault + Lock after a reboot + Lock the vault after a device reboot + Lock when screen turns off + Lock the vault after a few seconds once the screen is off + Lock after a delay + Immediately + Never + Persist vault key on a disk + Vault key is persisted on an internal storage + Vault is locked after the app is unloaded from the memory + Storing a vault key on a disk is a security risk. If the device\'s internal storage is compromised, the attacker will gain access to the local vault data. + Permissions + Features overview + Biometric unlock + + Biometric unlock + Keep the screen on while viewing items + Autofill service + Use the Android Autofill Framework to assist in filling login information into other apps on the device + Auto-copy one-time passwords + When filling a login information, automatically copy one-time passwords + Inline suggestions + Embeds autofill suggestions directly into compatible keyboards + Manual selection + Displays an option to manually search a vault for an entry + Respect Autofill disabled flag + Disables autofill for a browser field that has autofill disabled flag set + Note that some websites are notorious for disabling autofill for a password field as well as some browsers are notorious for ignoring the autofill disabled flag + Ask to save data + Asks for updating the vault when filling of a form has completed + Auto-save app or website info + Automatically clear clipboard + Immediately + Never + One-time password notification duration + When you autofill a login item that has a one-time password, the notification with verification code will popup for at least the defined duration + Never + About Keyguard membership + The Premium unlocks extra features and funds a development of the app. Thank you for supporting us! ❤️ + Subscriptions + Products + Failed to load a list of subscriptions + Failed to load a list of products + Active + Will not renew + Manage on Play Store + Post notifications + Used to post downloading notifications + Camera + Used to scan QR codes + Allow two panel layout in landscape mode + Allow two panel layout in portrait mode + Dark + Light + Disabled + Dynamic + Crossfade + Developed specifically to increase legibility for readers with low vision, and to improve comprehension + Features Overview + Keyguard Premium + Multiple Accounts + Sign-in to multiple accounts simultaneously. + Two-way sync + Add or edit items and sync the changes back. + Offline editing + Add or edit items without internet connection. + Search + Search by anything + Name, email, password, phone number etc. + Filter + Filter by folder, organization, type etc. + Multiple keywords + Search by \'bitw test\' to find your \'Bitwarden Test Account\' item. + Watchtower + Pwned passwords + Find items with exposed in data breaches passwords. + Password strength + Find items with weak passwords. + Reused passwords + Find items with reused passwords. + Inactive 2FA + Find logins with available TOTP two-factor authentication. + Unsecure websites + Find websites that use HTTP protocol, auto-fix to HTTPS. + Incomplete items + Find empty items that might need updates. + Expiring items + Find expired or soon to be expired items. + Duplicate items + Find and merge duplicate items. + Misc + Multi-selection + Merge ciphers, fasten the refactoring with batch operations. + Show as Barcode + Encode a text as different barcodes. + Generator + Generate passwords or usernames. + Data safety + Local data + Local data consists of Downloads, User settings, Vault. They are stored in the internal storage of a device, which can only be accessed by the Android system or the Keyguard. + Downloads + User settings + The User settings are encrypted using a device-specific key. + Vault + The Vault is encrypted using a Key, derived from the App password using following steps: + The Salt and the Hash is then stored locally on a device, to later generate a master key to unlock the vault. + Unlocking a Vault means storing a correct Key in a device\'s RAM, gaining an ability to read and modify encrypted Vault. + Remote data + Remote data is stored on Bitwarden servers with zero-knowledge encryption. + diff --git a/common/src/commonMain/resources/MR/files/gpm_passkeys_privileged_apps.json b/common/src/commonMain/resources/MR/files/gpm_passkeys_privileged_apps.json new file mode 100644 index 00000000..d2102b2e --- /dev/null +++ b/common/src/commonMain/resources/MR/files/gpm_passkeys_privileged_apps.json @@ -0,0 +1,480 @@ +{ + "apps": [ + { + "type": "android", + "info": { + "package_name": "com.android.chrome", + "signatures": [ + { + "build": "release", + "cert_fingerprint_sha256": "F0:FD:6C:5B:41:0F:25:CB:25:C3:B5:33:46:C8:97:2F:AE:30:F8:EE:74:11:DF:91:04:80:AD:6B:2D:60:DB:83" + }, + { + "build": "userdebug", + "cert_fingerprint_sha256": "19:75:B2:F1:71:77:BC:89:A5:DF:F3:1F:9E:64:A6:CA:E2:81:A5:3D:C1:D1:D5:9B:1D:14:7F:E1:C8:2A:FA:00" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "com.chrome.beta", + "signatures": [ + { + "build": "release", + "cert_fingerprint_sha256": "DA:63:3D:34:B6:9E:63:AE:21:03:B4:9D:53:CE:05:2F:C5:F7:F3:C5:3A:AB:94:FD:C2:A2:08:BD:FD:14:24:9C" + }, + { + "build": "release", + "cert_fingerprint_sha256": "3D:7A:12:23:01:9A:A3:9D:9E:A0:E3:43:6A:B7:C0:89:6B:FB:4F:B6:79:F4:DE:5F:E7:C2:3F:32:6C:8F:99:4A" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "com.chrome.dev", + "signatures": [ + { + "build": "release", + "cert_fingerprint_sha256": "90:44:EE:5F:EE:4B:BC:5E:21:DD:44:66:54:31:C4:EB:1F:1F:71:A3:27:16:A0:BC:92:7B:CB:B3:92:33:CA:BF" + }, + { + "build": "release", + "cert_fingerprint_sha256": "3D:7A:12:23:01:9A:A3:9D:9E:A0:E3:43:6A:B7:C0:89:6B:FB:4F:B6:79:F4:DE:5F:E7:C2:3F:32:6C:8F:99:4A" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "com.chrome.canary", + "signatures": [ + { + "build": "release", + "cert_fingerprint_sha256": "20:19:DF:A1:FB:23:EF:BF:70:C5:BC:D1:44:3C:5B:EA:B0:4F:3F:2F:F4:36:6E:9A:C1:E3:45:76:39:A2:4C:FC" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "org.chromium.chrome", + "signatures": [ + { + "build": "release", + "cert_fingerprint_sha256": "C6:AD:B8:B8:3C:6D:4C:17:D2:92:AF:DE:56:FD:48:8A:51:D3:16:FF:8F:2C:11:C5:41:02:23:BF:F8:A7:DB:B3" + }, + { + "build": "userdebug", + "cert_fingerprint_sha256": "19:75:B2:F1:71:77:BC:89:A5:DF:F3:1F:9E:64:A6:CA:E2:81:A5:3D:C1:D1:D5:9B:1D:14:7F:E1:C8:2A:FA:00" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "com.google.android.apps.chrome", + "signatures": [ + { + "build": "userdebug", + "cert_fingerprint_sha256": "19:75:B2:F1:71:77:BC:89:A5:DF:F3:1F:9E:64:A6:CA:E2:81:A5:3D:C1:D1:D5:9B:1D:14:7F:E1:C8:2A:FA:00" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "org.mozilla.fennec_webauthndebug", + "signatures": [ + { + "build": "userdebug", + "cert_fingerprint_sha256": "BD:AE:82:02:80:D2:AF:B7:74:94:EF:22:58:AA:78:A9:AE:A1:36:41:7E:8B:C2:3D:C9:87:75:2E:6F:48:E8:48" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "org.mozilla.firefox", + "signatures": [ + { + "build": "release", + "cert_fingerprint_sha256": "A7:8B:62:A5:16:5B:44:94:B2:FE:AD:9E:76:A2:80:D2:2D:93:7F:EE:62:51:AE:CE:59:94:46:B2:EA:31:9B:04" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "org.mozilla.firefox_beta", + "signatures": [ + { + "build": "release", + "cert_fingerprint_sha256": "A7:8B:62:A5:16:5B:44:94:B2:FE:AD:9E:76:A2:80:D2:2D:93:7F:EE:62:51:AE:CE:59:94:46:B2:EA:31:9B:04" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "org.mozilla.focus", + "signatures": [ + { + "build": "release", + "cert_fingerprint_sha256": "62:03:A4:73:BE:36:D6:4E:E3:7F:87:FA:50:0E:DB:C7:9E:AB:93:06:10:AB:9B:9F:A4:CA:7D:5C:1F:1B:4F:FC" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "org.mozilla.fennec_aurora", + "signatures": [ + { + "build": "release", + "cert_fingerprint_sha256": "BC:04:88:83:8D:06:F4:CA:6B:F3:23:86:DA:AB:0D:D8:EB:CF:3E:77:30:78:74:59:F6:2F:B3:CD:14:A1:BA:AA" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "org.mozilla.rocket", + "signatures": [ + { + "build": "release", + "cert_fingerprint_sha256": "86:3A:46:F0:97:39:32:B7:D0:19:9B:54:91:12:74:1C:2D:27:31:AC:72:EA:11:B7:52:3A:A9:0A:11:BF:56:91" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "com.microsoft.emmx.canary", + "signatures": [ + { + "build": "release", + "cert_fingerprint_sha256": "01:E1:99:97:10:A8:2C:27:49:B4:D5:0C:44:5D:C8:5D:67:0B:61:36:08:9D:0A:76:6A:73:82:7C:82:A1:EA:C9" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "com.microsoft.emmx.dev", + "signatures": [ + { + "build": "release", + "cert_fingerprint_sha256": "01:E1:99:97:10:A8:2C:27:49:B4:D5:0C:44:5D:C8:5D:67:0B:61:36:08:9D:0A:76:6A:73:82:7C:82:A1:EA:C9" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "com.microsoft.emmx.beta", + "signatures": [ + { + "build": "release", + "cert_fingerprint_sha256": "01:E1:99:97:10:A8:2C:27:49:B4:D5:0C:44:5D:C8:5D:67:0B:61:36:08:9D:0A:76:6A:73:82:7C:82:A1:EA:C9" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "com.microsoft.emmx", + "signatures": [ + { + "build": "release", + "cert_fingerprint_sha256": "01:E1:99:97:10:A8:2C:27:49:B4:D5:0C:44:5D:C8:5D:67:0B:61:36:08:9D:0A:76:6A:73:82:7C:82:A1:EA:C9" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "com.microsoft.emmx.rolling", + "signatures": [ + { + "build": "userdebug", + "cert_fingerprint_sha256": "32:A2:FC:74:D7:31:10:58:59:E5:A8:5D:F1:6D:95:F1:02:D8:5B:22:09:9B:80:64:C5:D8:91:5C:61:DA:D1:E0" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "com.microsoft.emmx.local", + "signatures": [ + { + "build": "userdebug", + "cert_fingerprint_sha256": "32:A2:FC:74:D7:31:10:58:59:E5:A8:5D:F1:6D:95:F1:02:D8:5B:22:09:9B:80:64:C5:D8:91:5C:61:DA:D1:E0" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "com.brave.browser", + "signatures": [ + { + "build": "release", + "cert_fingerprint_sha256": "9C:2D:B7:05:13:51:5F:DB:FB:BC:58:5B:3E:DF:3D:71:23:D4:DC:67:C9:4F:FD:30:63:61:C1:D7:9B:BF:18:AC" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "com.brave.browser_beta", + "signatures": [ + { + "build": "release", + "cert_fingerprint_sha256": "9C:2D:B7:05:13:51:5F:DB:FB:BC:58:5B:3E:DF:3D:71:23:D4:DC:67:C9:4F:FD:30:63:61:C1:D7:9B:BF:18:AC" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "com.brave.browser_nightly", + "signatures": [ + { + "build": "release", + "cert_fingerprint_sha256": "9C:2D:B7:05:13:51:5F:DB:FB:BC:58:5B:3E:DF:3D:71:23:D4:DC:67:C9:4F:FD:30:63:61:C1:D7:9B:BF:18:AC" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "app.vanadium.browser", + "signatures": [ + { + "build": "release", + "cert_fingerprint_sha256": "C6:AD:B8:B8:3C:6D:4C:17:D2:92:AF:DE:56:FD:48:8A:51:D3:16:FF:8F:2C:11:C5:41:02:23:BF:F8:A7:DB:B3" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "com.vivaldi.browser", + "signatures": [ + { + "build": "release", + "cert_fingerprint_sha256": "E8:A7:85:44:65:5B:A8:C0:98:17:F7:32:76:8F:56:89:B1:66:2E:C4:B2:BC:5A:0B:C0:EC:13:8D:33:CA:3D:1E" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "com.vivaldi.browser.snapshot", + "signatures": [ + { + "build": "release", + "cert_fingerprint_sha256": "E8:A7:85:44:65:5B:A8:C0:98:17:F7:32:76:8F:56:89:B1:66:2E:C4:B2:BC:5A:0B:C0:EC:13:8D:33:CA:3D:1E" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "com.vivaldi.browser.sopranos", + "signatures": [ + { + "build": "release", + "cert_fingerprint_sha256": "E8:A7:85:44:65:5B:A8:C0:98:17:F7:32:76:8F:56:89:B1:66:2E:C4:B2:BC:5A:0B:C0:EC:13:8D:33:CA:3D:1E" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "com.citrix.Receiver", + "signatures": [ + { + "build": "release", + "cert_fingerprint_sha256": "3D:D1:12:67:10:69:AB:36:4E:F9:BE:73:9A:B7:B5:EE:15:E1:CD:E9:D8:75:7B:1B:F0:64:F5:0C:55:68:9A:49" + }, + { + "build": "release", + "cert_fingerprint_sha256": "CE:B2:23:D7:77:09:F2:B6:BC:0B:3A:78:36:F5:A5:AF:4C:E1:D3:55:F4:A7:28:86:F7:9D:F8:0D:C9:D6:12:2E" + }, + { + "build": "release", + "cert_fingerprint_sha256": "AA:D0:D4:57:E6:33:C3:78:25:77:30:5B:C1:B2:D9:E3:81:41:C7:21:DF:0D:AA:6E:29:07:2F:C4:1D:34:F0:AB" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "com.android.browser", + "signatures": [ + { + "build": "release", + "cert_fingerprint_sha256": "C9:00:9D:01:EB:F9:F5:D0:30:2B:C7:1B:2F:E9:AA:9A:47:A4:32:BB:A1:73:08:A3:11:1B:75:D7:B2:14:90:25" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "com.sec.android.app.sbrowser", + "signatures": [ + { + "build": "release", + "cert_fingerprint_sha256": "C8:A2:E9:BC:CF:59:7C:2F:B6:DC:66:BE:E2:93:FC:13:F2:FC:47:EC:77:BC:6B:2B:0D:52:C1:1F:51:19:2A:B8" + }, + { + "build": "release", + "cert_fingerprint_sha256": "34:DF:0E:7A:9F:1C:F1:89:2E:45:C0:56:B4:97:3C:D8:1C:CF:14:8A:40:50:D1:1A:EA:4A:C5:A6:5F:90:0A:42" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "com.sec.android.app.sbrowser.beta", + "signatures": [ + { + "build": "release", + "cert_fingerprint_sha256": "C8:A2:E9:BC:CF:59:7C:2F:B6:DC:66:BE:E2:93:FC:13:F2:FC:47:EC:77:BC:6B:2B:0D:52:C1:1F:51:19:2A:B8" + }, + { + "build": "release", + "cert_fingerprint_sha256": "34:DF:0E:7A:9F:1C:F1:89:2E:45:C0:56:B4:97:3C:D8:1C:CF:14:8A:40:50:D1:1A:EA:4A:C5:A6:5F:90:0A:42" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "com.google.android.gms", + "signatures": [ + { + "build": "release", + "cert_fingerprint_sha256": "7C:E8:3C:1B:71:F3:D5:72:FE:D0:4C:8D:40:C5:CB:10:FF:75:E6:D8:7D:9D:F6:FB:D5:3F:04:68:C2:90:50:53" + }, + { + "build": "release", + "cert_fingerprint_sha256": "D2:2C:C5:00:29:9F:B2:28:73:A0:1A:01:0D:E1:C8:2F:BE:4D:06:11:19:B9:48:14:DD:30:1D:AB:50:CB:76:78" + }, + { + "build": "release", + "cert_fingerprint_sha256": "F0:FD:6C:5B:41:0F:25:CB:25:C3:B5:33:46:C8:97:2F:AE:30:F8:EE:74:11:DF:91:04:80:AD:6B:2D:60:DB:83" + }, + { + "build": "release", + "cert_fingerprint_sha256": "19:75:B2:F1:71:77:BC:89:A5:DF:F3:1F:9E:64:A6:CA:E2:81:A5:3D:C1:D1:D5:9B:1D:14:7F:E1:C8:2A:FA:00" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "com.yandex.browser", + "signatures": [ + { + "build": "release", + "cert_fingerprint_sha256": "AC:A4:05:DE:D8:B2:5C:B2:E8:C6:DA:69:42:5D:2B:43:07:D0:87:C1:27:6F:C0:6A:D5:94:27:31:CC:C5:1D:BA" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "com.yandex.browser.beta", + "signatures": [ + { + "build": "release", + "cert_fingerprint_sha256": "AC:A4:05:DE:D8:B2:5C:B2:E8:C6:DA:69:42:5D:2B:43:07:D0:87:C1:27:6F:C0:6A:D5:94:27:31:CC:C5:1D:BA" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "com.yandex.browser.alpha", + "signatures": [ + { + "build": "release", + "cert_fingerprint_sha256": "AC:A4:05:DE:D8:B2:5C:B2:E8:C6:DA:69:42:5D:2B:43:07:D0:87:C1:27:6F:C0:6A:D5:94:27:31:CC:C5:1D:BA" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "com.yandex.browser.corp", + "signatures": [ + { + "build": "release", + "cert_fingerprint_sha256": "AC:A4:05:DE:D8:B2:5C:B2:E8:C6:DA:69:42:5D:2B:43:07:D0:87:C1:27:6F:C0:6A:D5:94:27:31:CC:C5:1D:BA" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "com.yandex.browser.canary", + "signatures": [ + { + "build": "release", + "cert_fingerprint_sha256": "1D:A9:CB:AE:2D:CC:C6:A5:8D:6C:94:7B:E9:4C:DB:B7:33:D6:5D:A4:D1:77:0F:A1:4A:53:64:CB:4A:28:EB:49" + } + ] + } + }, + { + "type": "android", + "info": { + "package_name": "com.yandex.browser.broteam", + "signatures": [ + { + "build": "release", + "cert_fingerprint_sha256": "1D:A9:CB:AE:2D:CC:C6:A5:8D:6C:94:7B:E9:4C:DB:B7:33:D6:5D:A4:D1:77:0F:A1:4A:53:64:CB:4A:28:EB:49" + } + ] + } + } + ] +} \ No newline at end of file diff --git a/common/src/commonMain/resources/MR/files/justdeleteme.json b/common/src/commonMain/resources/MR/files/justdeleteme.json new file mode 100644 index 00000000..3341693d --- /dev/null +++ b/common/src/commonMain/resources/MR/files/justdeleteme.json @@ -0,0 +1,17845 @@ +[ + { + "name": "/e/", + "domains": [ + "doc.e.foundation", + "e.foundation", + "ecloud.global" + ], + "url": "https://doc.e.foundation/create-an-ecloud-account#how-can-i-delete-my-e-account-eemail", + "difficulty": "easy", + "notes": "Profile \u2b95 settings \u2b95 delete account \u2b95 confirm" + }, + { + "name": "000Webhost", + "domains": [ + "000webhost.com", + "000webhostapp.com" + ], + "url": "https://000webhost.com/members/profile", + "difficulty": "easy", + "notes": "Go to \"Profile \u2b95 Delete My Account\" and select why you are deleting your account." + }, + { + "name": "123RF", + "domains": [ + "123rf.com" + ], + "url": "https://www.123rf.com/support/support-answer.php?id=8817", + "difficulty": "hard", + "notes": "Account deletion requires contacting Customer Support.", + "email": "frsales@123rf.com", + "email_body": "I want my account to be deleted. My full name is XXXXXX and my user name is XXXXXX, I want my account to be deleted because of XXXXXX. I request and authorize you to remove my profile from 123rf.com and delete all my content with you. I wish to terminate the 123RF Contributor Agreement and agree to the Terms and Conditions as set in the Contributor Agreement for the termination process." + }, + { + "name": "16Personalities", + "domains": [ + "16personalities.com" + ], + "url": "https://www.16personalities.com/profile/preferences", + "difficulty": "easy", + "notes": "In your profile preferences, click in 'Delete Account' then confirm." + }, + { + "name": "1984 Hosting", + "domains": [ + "1984.hosting" + ], + "url": "https://1984.hosting/GDPR/", + "difficulty": "easy", + "notes": "If you are logged in, you can use the automated deletion process. If that doesn't work, you can contact their support to do it.", + "email": "gdpr@1984.is" + }, + { + "name": "1fichier", + "domains": [ + "1fichier.com" + ], + "url": "https://1fichier.com/contact.html", + "difficulty": "hard", + "notes": "Account deletion requires contacting Customer Support." + }, + { + "name": "1Password", + "domains": [ + "1password.com", + "blog.1password.com", + "my.1password.ca", + "my.1password.com", + "my.ent.1password.com", + "my.1password.eu", + "support.1password.com", + "start.1password.com" + ], + "url": "https://my.1password.com/profile", + "difficulty": "easy", + "notes": "Login to your account, go to profile, click 'Permanently Delete Account'. Confirm by entering 'I am sure' and click 'Delete Account'." + }, + { + "name": "1xBet", + "domains": [ + "1xbet.com" + ], + "url": "https://1xbet.com", + "difficulty": "hard", + "notes": "Account deletion requires contacting Customer Support.", + "email": "support@1xbet.com", + "email_subject": "Delete my account", + "email_body": "Please delete my account permanently because I don\u2019t want to use the 1xBet services any further. Thank you. Username: XXX Email: XXX" + }, + { + "name": "280daily", + "domains": [ + "280daily.com" + ], + "url": "https://280daily.com/settings/delete", + "difficulty": "easy", + "notes": "Enter your account password and click on 'DELETE ACCOUNT'." + }, + { + "name": "2K Games", + "domains": [ + "support.2k.com", + "2k.com" + ], + "url": "https://support.2k.com/hc/en-us/requests/new", + "difficulty": "hard", + "notes": "Go to the page linked, create a request about deleting your account, and customer support should delete it." + }, + { + "name": "3D Aim Trainer", + "domains": [ + "3daimtrainer.com" + ], + "url": "https://www.3daimtrainer.com/faq", + "difficulty": "hard", + "notes": "Email your username and e-mail used to create the account.", + "email": "shoot@3daimtrainer.com" + }, + { + "name": "4PDA", + "domains": [ + "4pda.ru", + "4pda.to" + ], + "url": "https://4pda.to/forum/index.php?act=findpost&pid=1930277&anchor=Spoil-1930277-33", + "difficulty": "impossible", + "notes": "It is not possible to delete your account. Even if the account is banned, it will still exist, but in the \u00abBanned\u00bb group." + }, + { + "name": "4shared", + "domains": [ + "4shared.com" + ], + "url": "https://www.4shared.com/web/account/settings#overview", + "difficulty": "easy" + }, + { + "name": "500px", + "domains": [ + "500px.com" + ], + "url": "https://500px.com/settings/deletion", + "difficulty": "easy", + "notes": "Visit the linked page, select 'Delete your account', then click 'Continue'. Choose a reason why you're deleting your account and click 'Continue to delete account'. Finally, confirm your password and click 'Delete account'." + }, + { + "name": "7digital", + "domains": [ + "7digital.com", + "help.7digital.com" + ], + "url": "https://help.7digital.com/hc/en-gb/requests/new", + "difficulty": "hard", + "notes": "Account deletion requires contacting Customer Support." + }, + { + "name": "7plus", + "domains": [ + "7plus.com.au", + "support.7plus.com.au" + ], + "url": "https://support.7plus.com.au/hc/en-au/requests/new", + "difficulty": "hard", + "notes": "Create a new request, select the 'Reason For Contact' as 'Account Related' and then under 'Please choose the issue' select 'Close 7plus account'. Supply the appropriate email and name, then send the request." + }, + { + "name": "8tracks", + "domains": [ + "8tracks.com" + ], + "url": "https://8tracks.com/privacy", + "difficulty": "easy", + "notes": "Login, go to your account settings and click the delete button. That's it." + }, + { + "name": "99designs", + "domains": [ + "99designs.com", + "support.99designs.com" + ], + "url": "https://support.99designs.com/hc/en-us/articles/204108919-How-do-I-delete-my-account-", + "difficulty": "hard", + "notes": "Have to contact them, they will only ask for confirmation" + }, + { + "name": "9anime", + "domains": [ + "9anime.to", + "9anime.id", + "9anime.cz", + "9anime.ws", + "9anime.me" + ], + "url": "https://9anime.to/user/delete", + "difficulty": "easy" + }, + { + "name": "9GAG", + "domains": [ + "9gag.com" + ], + "url": "https://9gag.com/member/delete", + "difficulty": "easy", + "notes": "Login to your account, go to parameters, click Delete my account. Confirm by clicking I want to delete my account. And again by clicking Delete my 9GAG account." + }, + { + "name": "A1Office", + "domains": [ + "a1office.co" + ], + "url": "https://a1office.co/support/", + "difficulty": "hard", + "notes": "Account deletion requires contacting Customer Support.", + "email": "connect@a1office.co" + }, + { + "name": "Abacashi", + "domains": [ + "abacashi.com" + ], + "url": "https://abacashi.com/contact", + "difficulty": "hard", + "notes": "Either use the contact form or e-mail them directly asking for the account to be deleted", + "email": "contato@abacashi.com" + }, + { + "name": "AbeBooks", + "domains": [ + "abebooks.com" + ], + "url": "https://www.abebooks.com/customer-support/", + "difficulty": "hard", + "notes": "Select 'Something else' and then 'Close my account' and fill out the e-mail form." + }, + { + "name": "Abload", + "domains": [ + "abload.de" + ], + "url": "https://abload.de/settings.php", + "difficulty": "easy" + }, + { + "name": "About you", + "domains": [ + "aboutyou.at", + "aboutyou.be", + "aboutyou.bg", + "aboutyou.ch", + "aboutyou.co.il", + "aboutyou.com", + "aboutyou.com.cy", + "aboutyou.cz", + "aboutyou.de", + "aboutyou.dk", + "aboutyou.ee", + "aboutyou.fi", + "aboutyou.fr", + "aboutyou.gr", + "aboutyou.he", + "aboutyou.hu", + "aboutyou.ie", + "aboutyou.it", + "aboutyou.lt", + "aboutyou.lv", + "aboutyou.nl", + "aboutyou.no", + "aboutyou.pl", + "aboutyou.pt", + "aboutyou.ro", + "aboutyou.se", + "aboutyou.si", + "aboutyou.sk", + "sa.aboutyou.com" + ], + "url": "https://www.aboutyou.it/h/il-mio-account/q-360014814179", + "difficulty": "hard", + "notes": "Account deletion requires contacting Customer Support.", + "email": "servizioclienti@aboutyou.it" + }, + { + "name": "About.me", + "domains": [ + "about.me" + ], + "url": "https://about.me/account", + "difficulty": "easy" + }, + { + "name": "Academia", + "domains": [ + "academia.edu" + ], + "url": "https://www.academia.edu/settings#account-removal", + "difficulty": "easy" + }, + { + "name": "Academic Torrents", + "domains": [ + "academictorrents.com" + ], + "url": "https://academictorrents.com", + "difficulty": "hard", + "notes": "Account deletion requires contacting Customer Support.", + "email": "contact@academictorrents.com", + "email_subject": "Account Deletion" + }, + { + "name": "Acasa", + "domains": [ + "splittable.co", + "helloacasa.com", + "app.heyacasa.com" + ], + "url": "https://app.heyacasa.com/register/edit", + "difficulty": "easy", + "notes": "In your account settings choose 'Remove my account' at the bottom." + }, + { + "name": "Acceptd", + "domains": [ + "getacceptd.com", + "app.getacceptd.com" + ], + "url": "https://app.getacceptd.com/account", + "difficulty": "medium", + "notes": "Visit the linked page, scroll to the bottom, and click 'Request Account Deletion'. You will be sent an email with a link to delete your account. Your request will be completed within 10 business days." + }, + { + "name": "Acciobooks", + "domains": [ + "acciobooks.com" + ], + "url": "https://acciobooks.com/users/settings/delete-account", + "difficulty": "easy", + "notes": "Just visit the linked page, login and confirm the deletion of your account" + }, + { + "name": "Acorns", + "domains": [ + "acorns.com", + "app.acorns.com" + ], + "url": "https://app.acorns.com/close-account", + "difficulty": "easy" + }, + { + "name": "Acronis", + "domains": [ + "acronis.com", + "account.acronis.com" + ], + "url": "https://account.acronis.com/#/profile/", + "difficulty": "easy" + }, + { + "name": "ActiveCampaign", + "domains": [ + "activehosted.com", + "ac.activehosted.com" + ], + "url": "https://ac.activehosted.com/f/2175", + "difficulty": "hard", + "notes": "For account deletion requests or requests to remove all account information, submit the [Data Subject Rights Request form](https://ac.activehosted.com/f/2175). When asked \"What would you like to initiate with us?\" choose the option I want to be forgotten, and want my personal data erased in ." + }, + { + "name": "Activision", + "domains": [ + "activision.com", + "s.activision.com", + "support.activision.com", + "callofduty.com", + "profile.callofduty.com" + ], + "url": "https://support.activision.com/privacy", + "difficulty": "hard", + "notes": "Must put in a request, via a ticket system, while logged in to the account (to verify the identity of the account owner).", + "email": "privacy@activision.com" + }, + { + "name": "Ada", + "domains": [ + "ada.com" + ], + "url": "https://ada.com/help/360000319269/", + "difficulty": "easy", + "notes": "Just click delete and all your account data is erased" + }, + { + "name": "Adafruit", + "domains": [ + "adafruit.com", + "accounts.adafruit.com" + ], + "url": "https://accounts.adafruit.com/users/security", + "difficulty": "easy", + "notes": "Just click delete and confirm." + }, + { + "name": "AddMeFast", + "domains": [ + "addmefast.com" + ], + "url": "https://addmefast.com/profile", + "difficulty": "medium", + "notes": "First delete your sites and your ads. Then go to the menu on the top right corner, click 'My Profile' then 'DELETE AddMeFast account' at the bottom of the page and confirm." + }, + { + "name": "addy.io", + "domains": [ + "addy.io", + "app.addy.io" + ], + "url": "https://app.addy.io/settings/account", + "difficulty": "easy", + "notes": "Click the 'Delete Account' tab. Enter your password and click 'Delete Account'. The usernames of deleted accounts cannot be reused." + }, + { + "name": "Adfly", + "domains": [ + "adf.ly", + "login.adf.ly" + ], + "url": "https://adf.ly/account/delete", + "difficulty": "easy", + "notes": "Press the button to delete your account, make sure you're logged in." + }, + { + "name": "AdFoc.us", + "domains": [ + "adfoc.us" + ], + "url": "https://adfoc.us/tickets/", + "difficulty": "hard", + "notes": "Account deletion requires contacting Customer Support.", + "email": "support@adfoc.us", + "email_subject": "Account Deletion Request", + "email_body": "Please delete my AdFoc.us account registered under this email address." + }, + { + "name": "AdGuard", + "domains": [ + "adguard.com", + "auth.adguard.com", + "my.adguard.com", + "adguard-vpn.com" + ], + "url": "https://my.adguard.com/en/account/settings", + "difficulty": "easy", + "notes": "On your account settings, scroll to the bottom and click 'Delete my Account'" + }, + { + "name": "Adobe", + "domains": [ + "adobe.com", + "account.adobe.com", + "auth.services.adobe.com", + "community.adobe.com", + "experienceleague.adobe.com", + "helpx.adobe.com" + ], + "url": "https://account.adobe.com/privacy/delete-account", + "difficulty": "easy" + }, + { + "name": "AdvCash", + "domains": [ + "advcash.com", + "wallet.advcash.com" + ], + "url": "https://wallet.advcash.com/pages/profile#", + "difficulty": "easy", + "notes": "Go to the profile page and click the button to delete account" + }, + { + "name": "Aeria Games", + "domains": [ + "aeriagames.com" + ], + "url": "https://www.aeriagames.com", + "difficulty": "easy", + "notes": "Login, go to your profile settings on the top right, then go to the 'Account' tab and click 'Delete my Account'" + }, + { + "name": "Agoda", + "domains": [ + "agoda.com" + ], + "url": "https://www.agoda.com/en-au/info/privacy.html", + "difficulty": "hard", + "notes": "Account deletion requires contacting Customer Support.", + "email": "privacy@agoda.com" + }, + { + "name": "AgoraDesk", + "domains": [ + "agoradesk.com" + ], + "url": "https://agoradesk.com/account/settings", + "difficulty": "easy", + "notes": "Go to account settings and click, scroll down and click 'Delete Account'" + }, + { + "name": "aiqfome", + "domains": [ + "aiqfome.com" + ], + "url": "https://aiqfome.com/", + "difficulty": "hard", + "notes": "Open a ticket on their chat requesting for your account to be deleted. They might reply first asking why, but will then proceed" + }, + { + "name": "Airbnb", + "domains": [ + "airbnb.ae", + "airbnb.at", + "airbnb.be", + "airbnb.ca", + "airbnb.cat", + "airbnb.ch", + "airbnb.cl", + "airbnb.co.cr", + "airbnb.co.id", + "airbnb.co.in", + "airbnb.co.kr", + "airbnb.co.nz", + "airbnb.co.uk", + "airbnb.co.ve", + "airbnb.com", + "airbnb.com.ar", + "airbnb.com.au", + "airbnb.com.bo", + "airbnb.com.br", + "airbnb.com.bz", + "airbnb.com.co", + "airbnb.com.ec", + "airbnb.com.gt", + "airbnb.com.hk", + "airbnb.com.hn", + "airbnb.com.mt", + "airbnb.com.my", + "airbnb.com.ni", + "airbnb.com.pa", + "airbnb.com.pe", + "airbnb.com.py", + "airbnb.com.sg", + "airbnb.com.sv", + "airbnb.com.tr", + "airbnb.com.tw", + "airbnb.cz", + "airbnb.de", + "airbnb.dk", + "airbnb.es", + "airbnb.fi", + "airbnb.fr", + "airbnb.gr", + "airbnb.gy", + "airbnb.hu", + "airbnb.ie", + "airbnb.is", + "airbnb.it", + "airbnb.jp", + "airbnb.mx", + "airbnb.nl", + "airbnb.no", + "airbnb.pl", + "airbnb.pt", + "airbnb.ru", + "airbnb.se" + ], + "url": "https://www.airbnb.com/privacy/manage-your-data", + "difficulty": "medium", + "notes": "On the linked page, click the 'Request to delete your account' button. Complete the form, then click 'Delete account'. You may receive a follow-up email to verify your identity." + }, + { + "name": "Airdroid", + "domains": [ + "airdroid.com" + ], + "url": "https://www.airdroid.com/en/deleteAccount.html", + "difficulty": "easy", + "notes": "Go to the Account Info page, Click the Delete Account button to delete your AirDroid account." + }, + { + "name": "AirMeet", + "domains": [ + "airmeet.com", + "help.airmeet.com" + ], + "url": "https://help.airmeet.com/support/solutions/articles/82000443799-how-to-delete-airmeet-community-account-", + "difficulty": "hard", + "notes": "Click the purple question mark button and then request account deletion via the Airmeet Chat Support. Alternatively, you can email support@airmeet.com.", + "email": "support@airmeet.com" + }, + { + "name": "Airmiles", + "domains": [ + "airmiles.ca" + ], + "url": "https://www.airmiles.ca/en/get-help.html#contact-us", + "difficulty": "hard", + "notes": "Launch live chat through 'Chat' button and request account deletion or by phone at 1-888-AIR-MILES (247-6453)." + }, + { + "name": "AirVPN", + "domains": [ + "airvpn.org", + "airvpn.dev" + ], + "url": "https://airvpn.org/contact/", + "difficulty": "hard", + "notes": "Visit the linked form and submit a support ticket requesting account deletion. Make sure you are logged in so they can find your account, or specify your username in your message. Alternatively, you may also send an email.", + "email": "support@airvpn.org" + }, + { + "name": "AKAI Professional", + "domains": [ + "akaipro.com" + ], + "url": "https://www.akaipro.com/privacy-policy", + "difficulty": "hard", + "notes": "Account deletion requires contacting Customer Support.", + "email": "privacy@inmusicbrands.com" + }, + { + "name": "Akinator", + "domains": [ + "akinator.com", + "ar.akinator.com", + "cn.akinator.com", + "de.akinator.com", + "en.akinator.com", + "es.akinator.com", + "fr.akinator.com", + "id.akinator.com", + "il.akinator.com", + "it.akinator.com", + "jp.akinator.com", + "kr.akinator.com", + "nl.akinator.com", + "pl.akinator.com", + "pt.akinator.com", + "ru.akinator.com", + "tr.akinator.com", + "akinator.mobi", + "ar.akinator.mobi", + "cn.akinator.mobi", + "de.akinator.mobi", + "en.akinator.mobi", + "es.akinator.mobi", + "fr.akinator.mobi", + "id.akinator.mobi", + "il.akinator.mobi", + "it.akinator.mobi", + "jp.akinator.mobi", + "kr.akinator.mobi", + "nl.akinator.mobi", + "pl.akinator.mobi", + "pt.akinator.mobi", + "ru.akinator.mobi", + "tr.akinator.mobi" + ], + "url": "https://akinator.com", + "difficulty": "easy", + "notes": "At the app, click on settings (gear icon) \u2b95 Account settings \u2b95 Delete account (at the bottom of the screen)." + }, + { + "name": "Albion Online", + "domains": [ + "albiononline.com" + ], + "url": "https://albiononline.com/en/profile/support", + "difficulty": "hard", + "notes": "You need to open a support ticket in order to delete your account." + }, + { + "name": "Alchemy", + "domains": [ + "alchemy.com" + ], + "url": "https://www.alchemy.com/", + "difficulty": "hard", + "notes": "Account deletion requires contacting Customer Support.", + "email": "support@alchemy.com" + }, + { + "name": "ALDO", + "domains": [ + "aldoshoes.com" + ], + "url": "https://www.aldoshoes.com/us/en_US/legal/privacy-policy", + "difficulty": "hard", + "notes": "Account deletion requires contacting Customer Support.", + "email": "dpo@aldogroup.com" + }, + { + "name": "Algolia", + "domains": [ + "algolia.com" + ], + "url": "https://www.algolia.com/account/details", + "difficulty": "easy", + "notes": "Go to your account settings, scroll to the bottom of Account Details, and select the Delete button next to \"Delete Account\"." + }, + { + "name": "Algor Education", + "domains": [ + "algoreducation.com", + "app.algoreducation.com", + "community.algoreducation.com", + "en.algoreducation.com", + "es.algoreducation.com", + "de.algoreducation.com", + "fr.algoreducation.com" + ], + "url": "https://en.algoreducation.com/contact-us", + "difficulty": "hard", + "notes": "Account deletion requires contacting Customer Support.", + "email": "support@algoreducation.com" + }, + { + "name": "Alibaba", + "domains": [ + "alibaba.com", + "accounts.alibaba.com" + ], + "url": "https://accounts.alibaba.com/user/organization/manage_person_profile.htm", + "difficulty": "easy", + "notes": "To delete your account, go to \"My Account\" page, click on \"Member Profile\" and then, \"Deactivate Account\"" + }, + { + "name": "AlienwareArena", + "domains": [ + "alienwarearena.com" + ], + "url": "https://www.alienwarearena.com/faq-contact#Contact1", + "difficulty": "hard", + "notes": "Account deletion requires contacting Customer Support.", + "email": "contact@alienwarearena.com" + }, + { + "name": "AliExpress", + "domains": [ + "aliexpress.com", + "privacy.aliexpress.com" + ], + "url": "https://privacy.aliexpress.com/home#/request/delete", + "difficulty": "easy", + "notes": "Visit the linked page and click the red 'Delete my account' button. Type \"agree\" in the provided text box, then click 'Delete'." + }, + { + "name": "AliPay", + "domains": [ + "alipay.com" + ], + "url": "https://memberprod.alipay.com/account/close/apply.htm", + "difficulty": "easy", + "notes": "From the app: Settings \u2b95 Account and Security \u2b95 Account Cancel." + }, + { + "name": "All 4 / Channel 4", + "domains": [ + "4id.channel4.com" + ], + "url": "https://4id.channel4.com/account#!/close", + "difficulty": "easy" + }, + { + "name": "AllDebrid", + "domains": [ + "alldebrid.com" + ], + "url": "https://alldebrid.com/account/#accountDelete", + "difficulty": "easy", + "notes": "Login to your account, then open the URL. You should see the option 'Delete my account'. Enter your username for confirmation and use the deletion link sent to your email to delete your account." + }, + { + "name": "Alvanista", + "domains": [ + "alvanista.com" + ], + "url": "https://alvanista.com/profile/edit", + "difficulty": "easy", + "notes": "Follow the link to edit your profile and click cancel account at bottom." + }, + { + "name": "Amara", + "domains": [ + "amara.org" + ], + "url": "https://amara.org/profiles/account/", + "difficulty": "easy", + "notes": "Just head to the account page and click the red button 'Delete your account' at the bottom left of the page." + }, + { + "name": "Amazon / Audible", + "domains": [ + "audible.ca", + "audible.co.jp", + "audible.co.uk", + "audible.com", + "audible.com.au", + "audible.de", + "audible.es", + "audible.fr", + "audible.in", + "audible.it", + "amazon.ae", + "amazon.ca", + "amazon.cn", + "amazon.co.jp", + "amazon.co.uk", + "amazon.com", + "amazon.com.au", + "amazon.com.br", + "amazon.com.mx", + "amazon.com.sg", + "amazon.com.tr", + "amazon.de", + "amazon.es", + "amazon.fr", + "amazon.in", + "amazon.it", + "amazon.nl", + "music.amazon.com" + ], + "url": "https://www.amazon.com/privacy/data-deletion", + "difficulty": "easy", + "notes": "Scroll down, select a reason, tick the checkbox, click on \"Close My Account\" and follow the link in the confirmation e-mail." + }, + { + "name": "Amazon AWS", + "domains": [ + "aws.amazon.com", + "console.aws.amazon.com" + ], + "url": "https://console.aws.amazon.com/billing/home#/account", + "difficulty": "medium", + "notes": "You will not be able to reuse the email address on the account at the time of closure, but they appear to accept disposable email addresses. However, for accounts created prior to May 2017, there is also an Amazon Marketplace account with the same email. See the entry for Amazon to delete that account." + }, + { + "name": "AMD Rewards", + "domains": [ + "amdrewards.com" + ], + "url": "https://www.amdrewards.com/my-account", + "difficulty": "impossible", + "notes": "You can not delete your account, only disable it, At the bottom of the page there is a 'Deactivate your account' \u2b95 Enter password \u2b95 Deactivate account" + }, + { + "name": "AmiAmi", + "domains": [ + "amiami.com" + ], + "url": "https://support.amiami.com/hc/en-us/requests/new", + "difficulty": "hard", + "notes": "Account deletion requires contacting Customer Support." + }, + { + "name": "Anaconda Nucleus", + "domains": [ + "anaconda.cloud" + ], + "url": "https://anaconda.cloud/profile/privacy-security", + "difficulty": "easy", + "notes": "Go to the 'Delete my Data' section, click the 'Delete Data' button and confirm." + }, + { + "name": "Ancestry", + "domains": [ + "ancestry.com" + ], + "url": "https://www.ancestry.com/account/data/user/delete", + "difficulty": "easy" + }, + { + "name": "Andaman7", + "domains": [ + "andaman7.com" + ], + "url": "https://www.andaman7.com/", + "difficulty": "hard", + "notes": "Contact customer service via the app and ask for account to be deleted." + }, + { + "name": "Android File Host (AFH)", + "domains": [ + "androidfilehost.com" + ], + "url": "https://androidfilehost.com/?w=contact", + "difficulty": "hard", + "notes": "Contact the customer support using the contact form and request the deletion of your account." + }, + { + "name": "Angelist", + "domains": [ + "angel.co" + ], + "url": "https://angel.co/settings", + "difficulty": "easy", + "notes": "Click delete account once logged in." + }, + { + "name": "Anghami", + "domains": [ + "anghami.com", + "support.anghami.com" + ], + "url": "https://support.anghami.com/hc/en-us/articles/224890447-How-do-I-delete-deactivate-my-account-", + "difficulty": "medium", + "notes": "If you can delete the account through the app, follow the process provided in the link. If you are using the web client you'll have to contact support@anghami.com. Your account will be deactivated within 24 hours and deleted after 30 days.", + "email": "support@anghami.com", + "email_subject": "Account Deletion Request" + }, + { + "name": "AniList", + "domains": [ + "anilist.co" + ], + "url": "https://anilist.co/settings/account", + "difficulty": "easy", + "notes": "Go to \"Delete User Account \u2b95 OK, Delete my account\"." + }, + { + "name": "Animal Crossing Community", + "domains": [ + "animalcrossingcommunity.com" + ], + "url": "http://www.animalcrossingcommunity.com/help_main.asp?HelpSectionID=5#Topic201", + "difficulty": "impossible", + "notes": "We do not 'delete' or 'terminate' accounts on ACC. If you no longer wish to use the site, you may delete all personal information from your profile and then stop logging in." + }, + { + "name": "Anime-Planet", + "domains": [ + "anime-planet.com" + ], + "url": "https://www.anime-planet.com/users/delete_account.php", + "difficulty": "easy", + "notes": "Visit the linked page and click 'YES, DELETE MY ACCOUNT FOREVER'." + }, + { + "name": "Animoto", + "domains": [ + "animoto.com" + ], + "url": "https://animoto.com/account", + "difficulty": "easy", + "notes": "Open the link and click Delete Account" + }, + { + "name": "Ankama", + "domains": [ + "ankama.com", + "support.ankama.com" + ], + "url": "https://support.ankama.com/hc/en-us/requests/new?ticket_form_id=625847", + "difficulty": "hard", + "notes": "Account deletion requires contacting Customer Support." + }, + { + "name": "AnkiApp", + "domains": [ + "ankiapp.com" + ], + "url": "https://www.ankiapp.com", + "difficulty": "easy", + "notes": "Log in to your account and click 'Delete Account'. Confirm by entering your password and click 'OK'. You cannot delete your account via web.ankiapp.com - please visit join.ankiapp.com instead." + }, + { + "name": "AnkiWeb", + "domains": [ + "ankiweb.net", + "apps.ankiweb.net", + "faqs.ankiweb.net", + "help.ankiweb.net" + ], + "url": "https://ankiweb.net/account/remove-account", + "difficulty": "easy", + "notes": "Visit the linked page, log in to your account, confirm your password and click \"Remove Account\"." + }, + { + "name": "Anti-Captcha", + "domains": [ + "anti-captcha.com" + ], + "url": "https://anti-captcha.com/clients/settings/killme", + "difficulty": "easy", + "notes": "Confirm account deletion, then input the code you'll receive by email." + }, + { + "name": "Any.do", + "domains": [ + "any.do", + "support.any.do" + ], + "url": "https://support.any.do/account-and-profile/", + "difficulty": "medium", + "notes": "You can only delete your account via the mobile app: install the app, log in, click Profile, click Delete Account." + }, + { + "name": "AOL / Instant Messenger", + "domains": [ + "aol.com", + "cancel.aol.com" + ], + "url": "https://cancel.aol.com", + "difficulty": "easy" + }, + { + "name": "Aparat", + "domains": [ + "aparat.com" + ], + "url": "https://www.aparat.com/dashboard/profile/unsubscribe", + "difficulty": "easy", + "notes": "To unsubscribe, click the Cancel membership button." + }, + { + "name": "Apex Minecraft Hosting", + "domains": [ + "apexminecrafthosting.com", + "billing.apexminecrafthosting.com" + ], + "url": "https://billing.apexminecrafthosting.com/submitticket.php", + "difficulty": "hard", + "notes": "You need to log into your billing panel and send a ticket regarding the account deletion. If you only have a multicraft account, you can send a ticket without logging in." + }, + { + "name": "Apiary", + "domains": [ + "apiary.io" + ], + "url": "https://apiary.io/", + "difficulty": "hard", + "notes": "Create a placeholder API, then delete all of your existing APIs. After that, send a request to terminate your account to the support email.", + "email": "support@apiary.io" + }, + { + "name": "APKPure", + "domains": [ + "apkpure.com" + ], + "url": "https://apkpure.com/account/destroy", + "difficulty": "easy", + "notes": "Visit the linked page, provide a reason for deletion, then submit the form. Your account will be deleted within 48 hours." + }, + { + "name": "Apoia.se", + "domains": [ + "apoia.se", + "suporte.apoia.se" + ], + "url": "https://suporte.apoia.se/hc/pt-br/articles/4408681019547-Como-encerrar-meu-cadastro-", + "difficulty": "hard", + "notes": "The exclusion will occur 7 (seven) days after filling the Google Docs form." + }, + { + "name": "AppJobber", + "domains": [ + "appjobber.com" + ], + "url": "https://appjobber.com/profile/delete_account", + "difficulty": "easy", + "notes": "Go to the profile page, click the button to delete the account at the top right and confirm. Alternatively you can send and e-mail asking for the deletion.", + "email": "datenschutz@appjobber.de" + }, + { + "name": "Apple ID / iTunes", + "domains": [ + "apple.com", + "appleid.apple.com", + "developer.apple.com", + "support.apple.com", + "icloud.com" + ], + "url": "https://support.apple.com/en-us/HT208504", + "difficulty": "easy", + "notes": "Follow the steps to request account deletion. It is possible to undo for a few days. If you have bought a developer license, it's impossible to delete your account." + }, + { + "name": "AppShopper", + "domains": [ + "appshopper.com" + ], + "url": "https://appshopper.com/about#contact-form", + "difficulty": "hard", + "notes": "Account deletion requires contacting Customer Support.", + "email": "support@appshopper.com" + }, + { + "name": "Appypie", + "domains": [ + "appypie.com", + "accounts.appypie.com" + ], + "url": "https://accounts.appypie.com/privacy", + "difficulty": "easy", + "notes": "Under Privacy Settings click on 'Delete / Deactivate Account' then click on 'Delete Account' and confirm and specify a reason." + }, + { + "name": "Aquaillumination", + "domains": [ + "aquaillumination.com" + ], + "url": "https://www.aquaillumination.com/", + "difficulty": "impossible", + "notes": "Customer service is unable to delete accounts." + }, + { + "name": "ara.cat", + "domains": [ + "ara.cat" + ], + "url": "https://www.ara.cat/", + "difficulty": "hard", + "notes": "Account deletion requires contacting Customer Support.", + "email": "home@ara.cat", + "email_subject": "Delete ARA account", + "email_body": "Please delete my ARA account which was registered under the e-mail:" + }, + { + "name": "Arc Games", + "domains": [ + "arcgames.com", + "support.arcgames.com" + ], + "url": "https://support.arcgames.com/hc/en-us/requests/new", + "difficulty": "hard", + "notes": "Account deletion requires contacting Customer Support.", + "email": "privacy@gearboxsf.com" + }, + { + "name": "Archipad", + "domains": [ + "archipad.com", + "cloud.archipad.com" + ], + "url": "https://cloud.archipad.com/", + "difficulty": "easy", + "notes": "Click on your e-mail on the top right. Click on 'Profile'. Scroll down to find the delete account button in red. Enter password to complete deletion." + }, + { + "name": "Arduino", + "domains": [ + "arduino.cc", + "id.arduino.cc" + ], + "url": "https://id.arduino.cc/", + "difficulty": "medium", + "notes": "Visit the linked page and under 'Account Settings', click the link next to 'If you wish to delete your Arduino account'. You will be sent an email with a link to delete your account." + }, + { + "name": "Arlo", + "domains": [ + "arlo.com", + "my.arlo.com" + ], + "url": "https://my.arlo.com/#/settings/privacy/delete-account", + "difficulty": "medium", + "notes": "Visit the linked page and click 'Permanently Delete Arlo Account'. Click 'Continue'. Click 'Reset and remove all devices'. Click 'Continue'. Click 'Delete All Content'. Click 'Continue'. Enter your email address and password associated with the account then click 'Permanently Delete Arlo Account'" + }, + { + "name": "ArmorGames", + "domains": [ + "armorgames.com" + ], + "url": "https://armorgames.com/settings/delete-account", + "difficulty": "easy" + }, + { + "name": "Ars Technica", + "domains": [ + "arstechnica.com" + ], + "url": "https://arstechnica.com/civis/", + "difficulty": "hard", + "notes": "You have to make a forum post about deleting your account and eventually the admins will delete your account, although your comment and post history stays on the website" + }, + { + "name": "Artsy", + "domains": [ + "artsy.net" + ], + "url": "https://www.artsy.net/user/delete", + "difficulty": "easy" + }, + { + "name": "Asda", + "domains": [ + "asda.com", + "asda.co.uk" + ], + "url": "https://www.asda.com/privacy/contact-us", + "difficulty": "hard", + "notes": "Account deletion requires contacting Customer Support.", + "email": "dataprotection@asda.co.uk" + }, + { + "name": "Asgardia.space", + "domains": [ + "asgardia.space" + ], + "url": "https://asgardia.space", + "difficulty": "impossible", + "notes": "You have to send an e-mail and request for account deletion, which might take up to 10 days. By some accounts, the site administrators will not follow up on deletion requests, leading to no follow-up.", + "email": "support@asgardia.space" + }, + { + "name": "Ashampoo", + "domains": [ + "ashampoo.com" + ], + "url": "https://www.ashampoo.com/en/usd/ppy", + "difficulty": "hard", + "notes": "Request deletion by emailing privacy team. Ask them to close your account and send them your name and email address. You\u2019ll receive a mail back from them with a personal removal link in it", + "email": "privacy@ashampoo.com" + }, + { + "name": "Ask.fm", + "domains": [ + "ask.fm" + ], + "url": "https://ask.fm/account/settings/optout", + "difficulty": "easy" + }, + { + "name": "Asos", + "domains": [ + "asos.com" + ], + "url": "https://www.asos.com/customer-care/technical/id-like-to-close-my-account-with-asos-what-should-i-do/", + "difficulty": "hard", + "notes": "If not using the app, needs to request deletion from customer services. Theoretically on the app there are options to delete account described in the FAQ." + }, + { + "name": "Assembla", + "domains": [ + "assembla.com" + ], + "url": "https://www.assembla.com/user/edit/edit_account_settings", + "difficulty": "easy" + }, + { + "name": "ASUS WebStorage", + "domains": [ + "asuswebstorage.com", + "service.asuswebstorage.com" + ], + "url": "https://service.asuswebstorage.com/contactus/", + "difficulty": "hard", + "notes": "Select \"Account related\" as the problem category and \"Request account deletion\" as the problem item." + }, + { + "name": "Atavi", + "domains": [ + "atavi.com" + ], + "url": "http://atavi.com/user/remove", + "difficulty": "easy" + }, + { + "name": "AtCoder", + "domains": [ + "atcoder.jp" + ], + "url": "https://atcoder.jp/quit", + "difficulty": "easy" + }, + { + "name": "Aternos", + "domains": [ + "aternos.gmbh", + "aternos.org" + ], + "url": "https://aternos.org/close/", + "difficulty": "easy" + }, + { + "name": "Athletic Greens", + "domains": [ + "drinkag1.com" + ], + "url": "https://ag-privacy.relyance.ai/?mockData=false", + "difficulty": "medium", + "notes": "Deleting account does not cancel subscription, so do that first. Requires submitting name, address, and phone number to start deletion." + }, + { + "name": "The Atlantic", + "domains": [ + "accounts.theatlantic.com", + "theatlantic.com", + "support.theatlantic.com" + ], + "url": "https://support.theatlantic.com/hc/en-us/requests/new", + "difficulty": "limited", + "notes": "Depending on where you live you either need to select \"Submit an EEA Data Request\" or \"Submit a CCPA Data Request\"." + }, + { + "name": "Atlassian / Bitbucket", + "domains": [ + "atlassian.com", + "community.atlassian.com", + "confluence.atlassian.com", + "id.atlassian.com", + "my.atlassian.com", + "start.atlassian.com", + "support.atlassian.com", + "bitbucket.org" + ], + "url": "https://id.atlassian.com/manage/close-account", + "difficulty": "medium", + "notes": "You need to visit my.atlassian.com and designate a different user as a billing and technical contact if your account is the primary billing contact for one or more products" + }, + { + "name": "Audiomack", + "domains": [ + "audiomack.com" + ], + "url": "https://audiomack.com/dashboard#delete-account", + "difficulty": "easy", + "notes": "Click the delete account link in the bottom left corner" + }, + { + "name": "Auth0", + "domains": [ + "auth0.com" + ], + "url": "https://community.auth0.com/t/how-can-i-delete-my-auth0-auth0-community-forum-account/34689", + "difficulty": "hard", + "notes": "Delete all tenants on the Auth0 dashboard then send a private message to a support moment on the forums." + }, + { + "name": "Authy", + "domains": [ + "authy.com" + ], + "url": "https://authy.com/account/delete/", + "difficulty": "medium", + "notes": "Fill out the form, verify your phone number and e-mail. Data will be permanently deleted after 30 days." + }, + { + "name": "Autodesk", + "domains": [ + "autodesk.com", + "accounts.autodesk.com" + ], + "url": "https://accounts.autodesk.com/Profile/Security", + "difficulty": "medium", + "notes": "Go to the bottom of the page, click the button 'Account Deletion' and confirm on 'Delete your Autodesk account and data'. Enter your password, then enter a 6-digit code that will be sent to your email and click 'Delete Account'. You can recover the account within 30 days of deleting it. The deletion is completed in 90 days." + }, + { + "name": "AutoScout24", + "domains": [ + "autoscout24.com", + "autoscout24.at", + "autoscout24.be", + "autoscout24.es", + "autoscout24.de", + "autoscout24.fr", + "autoscout24.it", + "autoscout24.lu", + "autoscout24.nl", + "autoscout24.bg", + "autoscout24.cz", + "autoscout24.eu", + "autoscout24.hr", + "autoscout24.ro", + "autoscout24.se", + "autoscout24.com.tr", + "autoscout24.com.ua", + "autoscout24.net" + ], + "url": "https://accounts.autoscout24.com/Delete", + "difficulty": "easy" + }, + { + "name": "AV Club", + "domains": [ + "avclub.com" + ], + "url": "https://notice.sp-prod.net/sar/index.html?message_id=539278&account_id=1195&ccpa_type=delete", + "difficulty": "hard", + "notes": "Fill out the form using the email address of your account and click on the verification link that is sent." + }, + { + "name": "Avast!", + "domains": [ + "avast.com", + "id.avast.com", + "profile.avast.com", + "support.avast.com" + ], + "url": "https://profile.avast.com/", + "difficulty": "easy", + "notes": "At the bottom of the linked page, click the 'Delete Account' button." + }, + { + "name": "AVEN", + "domains": [ + "asexuality.org" + ], + "url": "https://www.asexuality.org/en/topic/68514-deleting-account/", + "difficulty": "hard", + "notes": "Sign in and post a request in the deletion thread, a moderator will contact you and tell you the details." + }, + { + "name": "AVG", + "domains": [ + "avg.com", + "profile.avg.com" + ], + "url": "https://profile.avg.com/", + "difficulty": "easy", + "notes": "Click on 'Delete Account' at the bottom of the page, then 'Continue Deleting' and enter your password to delete account." + }, + { + "name": "Avira", + "domains": [ + "avira.com", + "support.avira.com" + ], + "url": "https://support.avira.com/hc/en-us/articles/360000753557--How-can-I-delete-my-Avira-account", + "difficulty": "easy", + "notes": "Follow the instructions provided in the article. If you prefer, you can also request deletion of your account via email.", + "email": "support@avira.com" + }, + { + "name": "Avito", + "domains": [ + "avito.ru" + ], + "url": "https://www.avito.ru/registration/remove", + "difficulty": "easy", + "notes": "Enter any reason to delete" + }, + { + "name": "AwardWallet", + "domains": [ + "awardwallet.com" + ], + "url": "https://awardwallet.com/user/delete", + "difficulty": "easy", + "notes": "You must enter your password and supply a reason for deleting your account" + }, + { + "name": "Axios", + "domains": [ + "axios.com" + ], + "url": "https://www.axios.com/legal", + "difficulty": "limited", + "notes": "According to their Privacy Policy, if you are a California or Virginia resident, you can email Axios about account deletion and they should delete your account and data.", + "email": "privacy@axios.com" + }, + { + "name": "AXS", + "domains": [ + "axs.com", + "support.axs.com" + ], + "url": "https://support.axs.com/hc/en-gb/articles/360017655079-Can-you-delete-my-data-", + "difficulty": "hard", + "notes": "Fill out the form requesting data deletion and then go to your e-mail to confirm the request. It takes a couple weeks for them to process the request." + }, + { + "name": "AZMVDNOW", + "domains": [ + "azmvdnow.gov" + ], + "url": "https://azmvdnow.gov/customers/useraccount/disable", + "difficulty": "impossible", + "notes": "Account will not be deleted, just disabled. If you want that, click \u2018Disable Account\u2019 button. Check \u2018Yes, I wish to disable my AZ MVD Now account.\u2019. Click \u2018Disable Account\u2019" + }, + { + "name": "B&H", + "domains": [ + "bhphotovideo.com" + ], + "url": "https://www.bhphotovideo.com/find/HelpCenter/PrivacySecurity.jsp", + "difficulty": "hard", + "notes": "Must send an email or call 800-947-9915.", + "email": "privacy@bhphoto.com", + "email_subject": "Account Deletion Request", + "email_body": "Please delete my B&H account." + }, + { + "name": "Babbel", + "domains": [ + "babbel.com", + "home.babbel.com" + ], + "url": "https://home.babbel.com/user-profile/settings", + "difficulty": "medium", + "notes": "Scroll down and press delete. A confirmation box will show up. You will have to go click the link in the email they send to you to permanently delete your Babbel account." + }, + { + "name": "Baby Names", + "domains": [ + "babynames.com" + ], + "url": "https://babynames.com/user/close.php", + "difficulty": "easy", + "notes": "Visit the linked page, select a reason why you're deleting your account, then click 'Agreed - Close My Account'." + }, + { + "name": "BabyCenter", + "domains": [ + "babycenter.com" + ], + "url": "https://dsar.babycenter.com/", + "difficulty": "hard", + "notes": "If you are protected under the GDPR or CCPA, complete the linked form. Otherwise, you must send an email.", + "email": "privacy_babycenter@everydayhealth.com" + }, + { + "name": "Backblaze", + "domains": [ + "backblaze.com", + "secure.backblaze.com" + ], + "url": "https://secure.backblaze.com/account_settings.htm", + "difficulty": "medium", + "notes": "Click on delete account and follow the required steps. You must have no outstanding B2 balance and will have to delete most files and settings in your account first." + }, + { + "name": "Badoo", + "domains": [ + "badoo.com" + ], + "url": "https://badoo.com/settings/", + "difficulty": "easy", + "notes": "On the top right corner click 'Settings', then on the left hand side click 'Delete'. Type your information, to delete Badoo, enter your password and in the other box, explain why you want to leave. Click on the 'Confirm' button, you will receive a message page confirming your rquest was successfully completed." + }, + { + "name": "Baidu", + "domains": [ + "baidu.com" + ], + "url": "https://passport.baidu.com/v6/cancelAccount", + "difficulty": "medium" + }, + { + "name": "Balance", + "domains": [ + "balanceapp.com" + ], + "url": "https://balanceapp.com/balance-privacy", + "difficulty": "hard", + "notes": "Send an email to their Privacy address. Within 24 hours, a support representative should respond to your request and ask for confirmation. Once they receive and respond to your request confirmation, your login credentials should no longer work.", + "email": "privacy@balanceapp.com", + "email_subject": "Account Information Deletion Request" + }, + { + "name": "Bambuser", + "domains": [ + "bambuser.com" + ], + "url": "https://bambuser.com", + "difficulty": "easy", + "notes": "Go to your Settings page and scroll down to find 'Deactivate' account. Click on 'Close Account' button, and confirm the account deletion." + }, + { + "name": "Bandcamp", + "domains": [ + "bandcamp.com" + ], + "url": "https://bandcamp.com/settings?pane=fan", + "difficulty": "easy", + "notes": "To terminate an artist account, you must click on the 'Artists' pane, click on the desired artist's profile, and click the termination link there." + }, + { + "name": "Barnes & Noble", + "domains": [ + "barnesandnoble.com" + ], + "url": "https://www.barnesandnoble.com/account/manage/settings/", + "difficulty": "medium", + "notes": "Visit the linked page, scroll to the bottom to 'Data Rights Request' and click on 'Submit a Request'. Complete and submit the form." + }, + { + "name": "Basecamp", + "domains": [ + "basecamp.com", + "basecamp-help.com" + ], + "url": "https://3.basecamp-help.com/article/156-cancel-your-basecamp-account", + "difficulty": "easy", + "notes": "Data will be permanantly deleted after 30 days." + }, + { + "name": "Basin", + "domains": [ + "usebasin.com" + ], + "url": "https://usebasin.com/users/edit", + "difficulty": "easy", + "notes": "Scroll down to the bottom of the page and click the 'Completely obliterate all my data' button" + }, + { + "name": "Bato.to", + "domains": [ + "bato.to" + ], + "url": "https://bato.to/account/deletion", + "difficulty": "easy", + "notes": "Go to the linked site and click \"Delete account\". Remember that you won't be able to reuse e-mail associated with this account, and all uploaded chapters and comments will not be deleted." + }, + { + "name": "Battle.net / Blizzard", + "domains": [ + "eu.battle.net", + "battle.net", + "blizzard.com" + ], + "url": "https://eu.battle.net/support/en/article/2659", + "difficulty": "medium", + "notes": "Requests may take up to 30 days to complete and may require to submit a government-issued photo ID." + }, + { + "name": "BBC", + "domains": [ + "bbc.com", + "account.bbc.com", + "bbc.co.uk" + ], + "url": "https://account.bbc.com/account/settings/delete", + "difficulty": "easy", + "notes": "Same account also covers BBC iPlayer and BBC Sounds." + }, + { + "name": "Be Welcome", + "domains": [ + "bewelcome.org" + ], + "url": "https://www.bewelcome.org/deleteprofile", + "difficulty": "easy", + "notes": "There's a 'Remove profile' option on the side menu at the 'Edit my profile' page. You can even select an option to have your data deleted within 24 hours." + }, + { + "name": "BeamNG", + "domains": [ + "beamng.com", + "support.beamng.com" + ], + "url": "https://support.beamng.com/", + "difficulty": "hard", + "notes": "You need to contact support on the linked page to request account deletion." + }, + { + "name": "Bearblog", + "domains": [ + "bearblog.dev" + ], + "url": "https://bearblog.dev/accounts/delete/", + "difficulty": "easy", + "notes": "Follow the link and confirm account deletion." + }, + { + "name": "Beatport", + "domains": [ + "beatport.com", + "support.beatport.com" + ], + "url": "https://support.beatport.com/hc/en-us/articles/4412533928596-How-can-I-close-my-account-", + "difficulty": "hard", + "notes": "Account deletion requires contacting Customer Support.", + "email": "support@beatport.com" + }, + { + "name": "Behance", + "domains": [ + "behance.net", + "help.behance.net" + ], + "url": "https://help.behance.net/hc/en-us/articles/204484854-How-do-I-delete-cancel-my-account-", + "difficulty": "easy", + "notes": "To delete your account, please click on your avatar in the top right navigation, visit Account Settings, and hit the 'Delete Account' tab. There, you'll have the option to delete." + }, + { + "name": "BeMyEye", + "domains": [ + "bemyeye.com", + "pro.bemyeye.com", + "bemyeye.zendesk.com" + ], + "url": "https://bemyeye.zendesk.com/hc/en-us/articles/360009596613-How-do-I-delete-my-account-", + "difficulty": "hard", + "notes": "Contact the customer support via email and request to delete your account. You can only completely delete your account if you have not performed missions or have not made any money using the BeMyEye app, otherwise they will only deactivate it.", + "email": "support@bemyeye.com" + }, + { + "name": "BeReal", + "domains": [ + "bere.al", + "bereal.com", + "help.bereal.com" + ], + "url": "https://help.bereal.com/hc/articles/7531255012381", + "difficulty": "easy", + "notes": "The exact steps vary by device. Account will be deleted after 15 days." + }, + { + "name": "Best Buy", + "domains": [ + "bestbuy.com" + ], + "url": "https://www.bestbuy.com/sentry/confirm/residency?context=ca&type=delete", + "difficulty": "hard", + "notes": "Process will be much smoother if you sign in. Alternatively, you can call 888-237-8289." + }, + { + "name": "Best Buy Canada", + "domains": [ + "bestbuy.ca", + "cloudpage.bestbuypromotions.ca" + ], + "url": "https://cloudpage.bestbuypromotions.ca/privacy-request", + "difficulty": "hard", + "notes": "Fill out the form with the information on your account." + }, + { + "name": "bet365", + "domains": [ + "https://www.bet365.com" + ], + "url": "https://help.bet365.com/contact", + "difficulty": "hard", + "notes": "To delete the account, contact customer service. It is recommended to do it via chat and ask to close the account, as there is no link to do so." + }, + { + "name": "Betano", + "domains": [ + "betano.com", + "betano.zendesk.com" + ], + "url": "https://betano.com/myaccount/profile/protection", + "difficulty": "easy", + "notes": "Access Account \u2b95 Profile \u2b95 Player Protection and select Self-exclusion option. You can choose remove your account for a derised time, or definitely." + }, + { + "name": "Bethesda", + "domains": [ + "bethesda.net", + "help.bethesda.net" + ], + "url": "https://help.bethesda.net/app/incident10/?prod=711&cat=1220", + "difficulty": "hard", + "notes": "To delete the account, login first on Bethesda.net, then click on the above link and select Bethesda as the product (note that the page takes a while to load), then select 'Delete Personal Information and Account' and fill out the form, this will send a prefilled support contact form for account deletion. You may also send an email to privacy@support.zenimax.com ", + "email": "privacy@support.zenimax.com" + }, + { + "name": "Betnacional", + "domains": [ + "betnacional.com" + ], + "url": "https://assets.bet6.com.br/sistemans/skins/betnacional/doc/5eef829d8f.pdf", + "difficulty": "hard", + "notes": "According to privacy policy (item 8), you have to send an e-mail to them requesting the account removal.", + "email": "contato@betnacional.com" + }, + { + "name": "Betterment", + "domains": [ + "betterment.com" + ], + "url": "https://www.betterment.com", + "difficulty": "impossible", + "notes": "Account can only be closed, but not trule deleted." + }, + { + "name": "BeyondMenu", + "domains": [ + "beyondmenu.com" + ], + "url": "https://www.beyondmenu.com/manageaccount.aspx", + "difficulty": "easy" + }, + { + "name": "Bidoo", + "domains": [ + "bidoo.com", + "it.bidoo.com" + ], + "url": "https://it.bidoo.com", + "difficulty": "hard", + "notes": "Click the assistance link on the website and fill in the contact form. A representative will mail you to confirm the account deletion." + }, + { + "name": "Bigstock", + "domains": [ + "bigstockphoto.com" + ], + "url": "https://support.bigstockphoto.com/s/article/How-do-I-close-my-Bigstock-contributor-account", + "difficulty": "hard", + "notes": "To delete your account, you must email them and request that your account be deleted.", + "email": "support@bigstockphoto.com" + }, + { + "name": "Bikemap", + "domains": [ + "bikemap.net", + "blog.bikemap.net", + "help.bikemap.net" + ], + "url": "https://www.bikemap.net/", + "difficulty": "easy", + "notes": "Login, click settings, click 'Delete Account', confirm." + }, + { + "name": "Bilibili", + "domains": [ + "bilibili.com" + ], + "url": "https://passport.bilibili.com/register/logout.html", + "difficulty": "medium" + }, + { + "name": "Binance", + "domains": [ + "binance.com" + ], + "url": "https://www.binance.com/fr/my/risk/delete-account-appeal", + "difficulty": "medium", + "notes": "First you have to empty your account from all cryptocurrencies, then click the link and enter your email." + }, + { + "name": "Bitdefender Central", + "domains": [ + "account.bitdefender.com", + "businessinsights.bitdefender.com", + "central.bitdefender.com" + ], + "url": "https://account.bitdefender.com/delete_account/info", + "difficulty": "medium", + "notes": "To delete your account, login, go to the 'My Account' page, click the 'Delete Account' link, click the 'Delete Account' button, and click the 'Send Email' button. A confirmation email will be sent to the account email. Click the 'Delete Account' link in the email sent to you, log into your account, and click the 'Delete Account' button." + }, + { + "name": "Bitfinex", + "domains": [ + "bitfinex.com", + "support.bitfinex.com" + ], + "url": "https://support.bitfinex.com/hc/en-us/articles/115002403694", + "difficulty": "medium", + "notes": "Visit the Account Settings page from the menu in the top right corner of the Bitfinex platform. Deactivate your Bitfinex account by changing your account status. Finally, confirm this via the confirmation email. This process is irreversible and your data will be retained for as long as needed to meet audit and regulatory purposes." + }, + { + "name": "Bitly", + "domains": [ + "bit.ly", + "bitly.com", + "app.bitly.com", + "dev.bitly.com", + "support.bitly.com" + ], + "url": "https://app.bitly.com/settings/profile/", + "difficulty": "easy", + "notes": "At the bottom of the linked page, click the red 'Delete Account' button. Select an option specifying why you want to leave Bitly, and confirm your action by typing \"DELETE ACCOUNT\", then click 'Delete Account' again." + }, + { + "name": "Bitstamp", + "domains": [ + "bitstamp.net" + ], + "url": "https://www.bitstamp.net/settings/deactivate/", + "difficulty": "easy", + "notes": "Process described on their [FAQ](https://www.bitstamp.net/faq/how-can-i-close-my-account/). You will need to enter your password to confirm the operation." + }, + { + "name": "Bittrex", + "domains": [ + "global.bittrex.com" + ], + "url": "https://bittrex.zendesk.com/hc/en-us/requests/new?ticket_form_id=114093958171", + "difficulty": "hard", + "notes": "The only way to delete an account is to send a customer support request, select 'Close account' and fill the form, you will then receive an email ironically asking you to create a Bittrex support account password so you can follow the status of your request." + }, + { + "name": "Bitwarden", + "domains": [ + "bitwarden.com", + "vault.bitwarden.com" + ], + "url": "https://bitwarden.com/help/article/delete-your-account", + "difficulty": "easy" + }, + { + "name": "Bkool", + "domains": [ + "bkool.com" + ], + "url": "https://support.bkool.com/hc/en-us/articles/360024682171-Privacy-policy", + "difficulty": "hard", + "notes": "To delete an account, the user must write to the following email address: dpo@bkool.com", + "email": "dpo@bkool.com" + }, + { + "name": "BlackBox", + "domains": [ + "blackbox.global" + ], + "url": "https://www.blackbox.global/contact", + "difficulty": "hard", + "notes": "You need to contact support to delete your account." + }, + { + "name": "BlackSpigot", + "domains": [ + "blackspigot.com" + ], + "url": "https://blackspigot.com/threads/delete-account.9291/", + "difficulty": "impossible", + "notes": "As noted on the forum, account removals are not an option." + }, + { + "name": "Bleep", + "domains": [ + "bleep.com" + ], + "url": "https://bleep.com/account/show", + "difficulty": "hard", + "notes": "Make sure you're logged in and go to the linked URL and click \"Delete Account\", this will show some text telling you to contact support. Click the \"Contact Support\" button and click the \"Contact Us\" button in the pop-up. Fill out the form and ask to delete your account." + }, + { + "name": "BlendSwap", + "domains": [ + "blendswap.com" + ], + "url": "https://blendswap.com/profile", + "difficulty": "easy", + "notes": "Go to your profile and press the 'delete account' button" + }, + { + "name": "Blind", + "domains": [ + "teamblind.com" + ], + "url": "https://www.teamblind.com/faqs", + "difficulty": "hard", + "email": "blindapp@teamblind.com" + }, + { + "name": "Blinkee", + "domains": [ + "blinkee.city" + ], + "url": "https://blinkee.city/en-pl/faq", + "difficulty": "hard", + "email": "contact.pl@blinkee.city" + }, + { + "name": "Blinkist", + "domains": [ + "blinkist.com" + ], + "url": "https://www.blinkist.com/nc/settings/account/", + "difficulty": "easy", + "notes": "Click 'I want to delete my account' at the bottom of the page." + }, + { + "name": "Blogger", + "domains": [ + "blogger.com" + ], + "url": "https://support.google.com/blogger/answer/41932", + "difficulty": "impossible", + "notes": "You can't delete your Blogger Account without deleting your entire Google Account. But you can delete your blog.\nIf you want to delete your entire google account, use the instructions for [Google](https://justdeleteme.xyz/#google)." + }, + { + "name": "Bloomingdales", + "domains": [ + "bloomingdales.com" + ], + "url": "https://customerservice-bloomingdales.com/articles/contact-us", + "difficulty": "hard", + "notes": "Only residents of California and Nevada are allowed to make official data removal requests. However, if you contact Customer Service via one of the methods listed, they may submit a 30-day account deletion request for you anyway." + }, + { + "name": "Blue Apron", + "domains": [ + "blueapron.com" + ], + "url": "https://www.blueapron.com/cancel_subscription", + "difficulty": "easy" + }, + { + "name": "Bluebird by American Express", + "domains": [ + "bluebird.com", + "secure.bluebird.com" + ], + "url": "https://secure.bluebird.com/manage/settings/ProfileSettings", + "difficulty": "medium", + "notes": "Remove all funds from your account. Then go to settings in your account, click on the profile tab, and click close account." + }, + { + "name": "Bluejeans", + "domains": [ + "bluejeans.com", + "support.bluejeans.com" + ], + "url": "https://support.bluejeans.com/s/contactsupport", + "difficulty": "hard", + "notes": "Contact support via the contact form and request deletion of your account." + }, + { + "name": "Board Game Arena", + "domains": [ + "boardgamearena.com" + ], + "url": "https://boardgamearena.com/preferences?section=account", + "difficulty": "easy", + "notes": "Log-in, go to your account settings and click 'Delete my BGA account'." + }, + { + "name": "Board Games Online", + "domains": [ + "boardgamesonline.net" + ], + "url": "https://boardgamesonline.net/", + "difficulty": "easy", + "notes": "Log-in \u2b95 My Profile \u2b95 Click Profile (Settings Icon) \u2b95 Click on Delete Profile. Account will be deleted in about one week." + }, + { + "name": "BoardGameGeek", + "domains": [ + "boardgamegeek.com" + ], + "url": "https://boardgamegeek.com/geekaccount.php?action=requestdeletion", + "difficulty": "easy", + "notes": "Log-in and use the link provided to request account deletion." + }, + { + "name": "bobatea", + "domains": [ + "git.boba.best" + ], + "url": "https://git.boba.best/user/settings/account", + "difficulty": "easy", + "notes": "Log-in, go to Settings \u2b95 Account then at the bottom you can delete your account." + }, + { + "name": "BodBot", + "domains": [ + "bodbot.com" + ], + "url": "https://www.bodbot.com/Account_Settings.html", + "difficulty": "easy", + "notes": "Click the 'Delete My Account' link." + }, + { + "name": "Bodybuilding", + "domains": [ + "bodybuilding.com" + ], + "url": "https://www.bodybuilding.com/help?account-inquiries&deactivate-account", + "difficulty": "impossible", + "notes": "You can only deactivate your account by contacting support as they state on the help page. There is no way to permanently delete your account or data, and an inactive public profile will always be visible to public.", + "email": "privacy@bodybuilding.com" + }, + { + "name": "Bohemia Interactive", + "domains": [ + "bohemia.net", + "support.bohemia.net" + ], + "url": "https://support.bohemia.net/", + "difficulty": "hard", + "notes": "Submit a support ticket to them at the URL and they will send you an email asking to confirm after which the account will be deleted." + }, + { + "name": "Boingo Wireless", + "domains": [ + "boingo.com" + ], + "url": "https://support.boingo.com/s/contactsupport", + "difficulty": "hard", + "notes": "Fill the form or send an e-mail to them from the account you want to delete.", + "email": "support@boingo.com" + }, + { + "name": "Bol.com", + "domains": [ + "bol.com" + ], + "url": "https://www.bol.com/nl/rnwy/account/privacy/delete", + "difficulty": "hard", + "notes": "Need to request deletion on a page within the account settings. After a few days you receive a link to confirm deletion. You need to be logged in to the account for the confirmation link to be working. Check after 30 days if the account is really removed, as it doesn't always work. If you can't figure it out complain by email, but this process takes even longer.", + "email": "dpo@aholddelhaize.com" + }, + { + "name": "Bolt", + "domains": [ + "bolt.eu" + ], + "url": "https://bolt.eu/en/support/articles/360000336273/", + "difficulty": "hard", + "notes": "You will need to contact support team via the app or request account deletion by sending an e-mail to the Data Protection Officer.", + "email": "privacy@bolt.eu" + }, + { + "name": "Bolt Driver", + "domains": [ + "bolt.eu" + ], + "url": "https://bolt.eu/en/support/articles/360000329553/", + "difficulty": "hard", + "notes": "You will need to contact support team via the app or request account deletion by sending an e-mail to the Data Protection Officer.", + "email": "privacy@bolt.eu" + }, + { + "name": "Bolt Food", + "domains": [ + "bolt.eu" + ], + "url": "https://bolt.eu/en/support/articles/360007153180/", + "difficulty": "hard", + "notes": "You will need to contact support team via the app or request account deletion by sending an e-mail to the Data Protection Officer.", + "email": "privacy@bolt.eu" + }, + { + "name": "Bones Coffee Company", + "domains": [ + "bonescoffee.com", + "bonescoffeecompany.com" + ], + "url": "https://www.bonescoffee.com/pages/contact-us", + "difficulty": "hard", + "notes": "You will need to contact support team via chat or email to request account deletion.", + "email": "Support@BonesCoffee.com " + }, + { + "name": "BookBub", + "domains": [ + "bookbub.com" + ], + "url": "https://www.bookbub.com/contact/new", + "difficulty": "hard", + "notes": "Fill out the contact form to request deletion." + }, + { + "name": "Booking", + "domains": [ + "booking.com", + "secure.booking.com" + ], + "url": "https://secure.booking.com/login.en-us.html?tmpl=profile/delete_account", + "difficulty": "easy" + }, + { + "name": "Booklooker", + "domains": [ + "booklooker.de", + "secure.booklooker.de" + ], + "url": "https://secure.booklooker.de/pages/contact.php", + "difficulty": "hard", + "notes": "You need to request deletion of your data via the contact form after logging in." + }, + { + "name": "Bookmark OS", + "domains": [ + "bookmarkos.com" + ], + "url": "https://bookmarkos.com/privacy_policy", + "difficulty": "hard", + "notes": "Send an email and request account deletion.", + "email": "dave@bookmarkos.com" + }, + { + "name": "Boostcamp", + "domains": [ + "boostcamp.app" + ], + "url": "https://www.boostcamp.app/data-deletion-request", + "difficulty": "easy", + "notes": "Visit the linked page and confirm the deletion." + }, + { + "name": "Boots Viewpoint", + "domains": [ + "bootsviewpoint.co.uk" + ], + "url": "https://www.bootsviewpoint.co.uk", + "difficulty": "hard", + "notes": "Have to contact them, email used was claire@bootsviewpoint.co.uk", + "email": "claire@bootsviewpoint.co.uk" + }, + { + "name": "BorgBase", + "domains": [ + "borgbase.com" + ], + "url": "https://www.borgbase.com/account?tab=5", + "difficulty": "easy", + "notes": "Remove all your backup repositories, then in the account tab click on profile and on the bottom of the page you'll find a button to remove your account." + }, + { + "name": "Bountysource", + "domains": [ + "bountysource.com" + ], + "url": "https://github.com/bountysource/core/issues/409", + "difficulty": "hard", + "notes": "Only possible via e-mail, where they'll (eventually) delete the account.", + "email": "support@bountysource.com" + }, + { + "name": "Box", + "domains": [ + "box.com" + ], + "url": "https://app.box.com/account", + "difficulty": "easy" + }, + { + "name": "Boxcryptor", + "domains": [ + "boxcryptor.com" + ], + "url": "https://www.boxcryptor.com/app/account/delete-account/", + "difficulty": "easy" + }, + { + "name": "Braiins", + "domains": [ + "braiins.com", + "pool.braiins.com", + "insights.braiins.com" + ], + "url": "https://help.braiins.com/en/support/solutions/articles/77000434063-how-can-i-delete-my-account-", + "difficulty": "easy", + "notes": "Go to the menu on the top right corner, click 'Account', scroll down and click 'Request Account Deletion'." + }, + { + "name": "Brain.fm", + "domains": [ + "brain.fm" + ], + "url": "https://www.brain.fm/privacy", + "difficulty": "hard", + "notes": "Send an email to their Privacy support address to request account deletion. After a brief exchange with a support representative to confirm your intention, there will be a several-day delay while they process your request, after which your login credentials will stop working.", + "email": "privacy@brain.fm", + "email_subject": "Account Deletion Request" + }, + { + "name": "Brilliant", + "domains": [ + "brilliant.org" + ], + "url": "https://brilliant.org/account/settings/deactivate/", + "difficulty": "easy" + }, + { + "name": "Bring!", + "domains": [ + "getbring.com" + ], + "url": "https://go.getbring.com/?link=https%3A%2F%2Fdeeplink.getbring.com%2Fview%2Fdeleteaccount&apn=ch.publisheria.bring&isi=580669177&ibi=ch.publisheria.bring", + "difficulty": "medium", + "notes": "Log in to the account you'd like to delete and click the link on the same device." + }, + { + "name": "British Airways", + "domains": [ + "britishairways.com" + ], + "url": "https://naprepin.custhelp.com/app/answers/detail/a_id/770/~/cancelling-your-executive-club-membership", + "difficulty": "hard", + "notes": "Must send a request in writing. See [this page](https://www.britishairways.com/travel/contact-executive-club/execclub/_gf/en_us) for contact details." + }, + { + "name": "BrowserStack", + "domains": [ + "browserstack.com" + ], + "url": "https://www.browserstack.com/accounts/profile", + "difficulty": "easy", + "notes": "Scroll down and click on the \"Delete Account\" button, then enter 'delete' into the dialog and confirm." + }, + { + "name": "Brut", + "domains": [ + "brut.media" + ], + "url": "https://www.brut.media/us/terms", + "difficulty": "hard", + "notes": "Contact the customer support via email and request the deletion of your account.", + "email": "support-web@brut.media" + }, + { + "name": "BrutX", + "domains": [ + "brutx.com", + "help.brutx.com" + ], + "url": "https://help.brutx.com/hc/fr/articles/360020090299", + "difficulty": "hard", + "notes": "Contact the customer support via email and request the deletion of your account.", + "email": "bonjour@brutx.com" + }, + { + "name": "Buffer", + "domains": [ + "bufferapp.com" + ], + "url": "https://bufferapp.com/app/account/leave", + "difficulty": "easy" + }, + { + "name": "Buildspace", + "domains": [ + "buildspace.so" + ], + "url": "https://buildspace.so", + "difficulty": "hard", + "notes": "Email support@buildspace.so requesting to delete your account.", + "email": "support@buildspace.so", + "email_subject": "Account Delection Request" + }, + { + "name": "Bukalapak", + "domains": [ + "bukalapak.com" + ], + "url": "https://www.bukalapak.com", + "difficulty": "medium", + "notes": "Open Akun (Account)>BukaBantuan (Open Help)>In Akun & Info Personal (Account & Personal Info), tap Selanjutnya (Next)>Tap Menonaktifkan Akun (Disable Account)>Tap Isi Form Bantuan (Type on Help Form)>Explain the reason why you delete it>Tap Kirim (Send)." + }, + { + "name": "Bukkit", + "domains": [ + "bukkit.org" + ], + "url": "https://bukkit.org", + "difficulty": "impossible", + "notes": "Message an [administrator](https://bukkit.org/XenStaff/') ([timtower](https://bukkit.org/members/timtower.87695/) is the most active) and tell them you want your account deleted, and they will tell you it will be done when it's possible.
So deletion of an account is not an option." + }, + { + "name": "Bungie.net", + "domains": [ + "bungie.net", + "help.bungie.net" + ], + "url": "https://help.bungie.net/hc/requests/new", + "difficulty": "hard", + "notes": "Send an email or fill out either the \"GDPR Request\" or \"Right to Know or Delete\" form.", + "email": "privacyrequests@bungie.com" + }, + { + "name": "BurstNET", + "domains": [ + "burst.net" + ], + "url": "http://burst.net", + "difficulty": "impossible", + "notes": "Support staff refuses to delete accounts due to 'accounting purposes'" + }, + { + "name": "Busuu", + "domains": [ + "busuu.com" + ], + "url": "https://www.busuu.com/dashboard#/settings/account", + "difficulty": "easy", + "notes": "Click the 'Delete my account' button at the bottom of the page, then confirm you'd like to delete your account" + }, + { + "name": "Buy Me a Coffee", + "domains": [ + "buymeacoffee.com" + ], + "url": "https://www.buymeacoffee.com/terms", + "difficulty": "hard", + "notes": "Account deletion requires contacting Customer Support.", + "email": "support@buymeacoffee.com" + }, + { + "name": "Buycott", + "domains": [ + "buycott.com" + ], + "url": "https://www.buycott.com", + "difficulty": "hard", + "notes": "To cancel your account you have to send them an email", + "email": "info@buycott.com" + }, + { + "name": "Buycraft", + "domains": [ + "tebex.io", + "server.tebex.io" + ], + "url": "https://server.tebex.io", + "difficulty": "hard", + "notes": "Buycraft was moved to Tebex, contact customer support to request account deletion" + }, + { + "name": "ByDoor", + "domains": [ + "bydoor.com", + "portal.bydoor.com" + ], + "url": "https://portal.bydoor.com/meusdados", + "difficulty": "impossible", + "notes": "Login, head to your account details, scroll to the bottom and click to deactivate your account. The text states it will remove all of your data, but after confirming on the e-mail, it's just deactivated and can be reactivated later." + }, + { + "name": "C&M News by R\u0435ss.at", + "domains": [ + "ress.at" + ], + "url": "https://ress.at/profil/profil_entfernen.php", + "difficulty": "easy", + "notes": "Just click 'Abschicken'" + }, + { + "name": "CA Cert", + "domains": [ + "cacert.org", + "wiki.cacert.org" + ], + "url": "http://wiki.cacert.org/FAQ/AccountRemoval", + "difficulty": "hard", + "notes": "Support have to be emailed with a request and it may be months before the account is deleted, depending on circumstance.", + "email": "support@cacert.org" + }, + { + "name": "Cabify", + "domains": [ + "cabify.com" + ], + "url": "https://cabify.com", + "difficulty": "hard", + "notes": "Login and go to Contact us \u2b95 My Account, payment method, and invoices \u2b95 I want to delete my account. Write a message and it will create a ticket." + }, + { + "name": "Cacoo", + "domains": [ + "cacoo.com" + ], + "url": "https://cacoo.com/unsubscribe", + "difficulty": "easy" + }, + { + "name": "CafePress", + "domains": [ + "cafepress.com" + ], + "url": "https://www.cafepress.com/account/close-account", + "difficulty": "hard", + "notes": "Visit the linked page and close your account, then contact customer service and ask to have your personal information deleted." + }, + { + "name": "CakeReader", + "domains": [ + "cakereader.com" + ], + "url": "https://cakereader.com/", + "difficulty": "impossible" + }, + { + "name": "Call of Duty Mobile", + "domains": [ + "activision.com", + "s.activision.com", + "support.activision.com", + "callofduty.com", + "profile.callofduty.com" + ], + "url": "https://support.activision.com/privacy", + "difficulty": "hard", + "notes": "Must put in a request, via a ticket system, while logged in to the account (to verify the identity of the account owner). You may also need to install and log into the game to get PlayerID/UID/PrivacyID needed for account deletion.", + "email": "privacy@activision.com" + }, + { + "name": "CamelCamelCamel", + "domains": [ + "camelcamelcamel.com" + ], + "url": "https://camelcamelcamel.com/close_account", + "difficulty": "easy", + "notes": "Login to your account first. Confirm by ticking both boxes, 'I want to close my Camel account.' and 'I\u2019m really sure!', and click 'Close Account'." + }, + { + "name": "Canva", + "domains": [ + "canva.com" + ], + "url": "https://www.canva.com/settings/login-and-security", + "difficulty": "easy", + "notes": "At the bottom of the page click on the button that says 'Delete account.' There will be a 14 day waiting period, after this period, all your account data will be deleted." + }, + { + "name": "Capsule", + "domains": [ + "capsule.com" + ], + "url": "https://www.capsule.com/privacy", + "difficulty": "hard", + "notes": "Contact support by email or by phone at 1-888-910-1808 and request that your account be deleted. Your request can be denied if you still have an active service or transaction with them.", + "email": "privacy@capsule.com" + }, + { + "name": "Captain.tv", + "domains": [ + "captain.tv", + "playnitro.com", + "streampirates.com", + "streamraiders.com", + "chatplayschess.com" + ], + "url": "https://streamcaptain.zendesk.com/hc/en-us/requests/new", + "difficulty": "hard", + "notes": "Send a request using the 'Account Deletion' type" + }, + { + "name": "Car2Go", + "domains": [ + "car2go.com", + "drive-now.com", + "share-now.com" + ], + "url": "https://www.car2go.com/US/en/contact", + "difficulty": "hard", + "notes": "You need to call customer support and even after that can take weeks before confirmation of deletion" + }, + { + "name": "Carbonmade", + "domains": [ + "carbonmade.app", + "carbonmade.com" + ], + "url": "https://carbonmade.app/account", + "difficulty": "easy", + "notes": "When logged in, use the link to be taken to the deletion page." + }, + { + "name": "CareerBuilder.com", + "domains": [ + "careerbuilder.com" + ], + "url": "https://www.careerbuilder.com/User/UserConfirmation.aspx", + "difficulty": "easy", + "notes": "Must remove uploaded files first" + }, + { + "name": "Carrd.co", + "domains": [ + "carrd.co" + ], + "url": "https://carrd.co/dashboard/account/delete", + "difficulty": "easy", + "notes": "Just enter password and confirm deletion!" + }, + { + "name": "Cash'em All", + "domains": [ + "cashemall.online" + ], + "url": "https://cashemall.online/legal/v1/privacy/online.cashemall.app", + "difficulty": "medium", + "notes": "Go to settings in the profile page, then click \"Cancel Membership\" and confirm the email. You can also request the deletion via email.", + "email": "contact@cashemall.online" + }, + { + "name": "Cash'em All Web", + "domains": [ + "cashem-all.com" + ], + "url": "https://cashem-all.com/profile", + "difficulty": "medium", + "notes": "Go to settings in the profile page, then click \"Delete account\" and confirm the email. You can also request the deletion via email.", + "email": "contact@appstation.online" + }, + { + "name": "Castbox", + "domains": [ + "castbox.fm", + "helpcenter.castbox.fm" + ], + "url": "https://helpcenter.castbox.fm/portal/en/kb/articles/delete-account", + "difficulty": "hard", + "notes": "You must request account deletion by email. Include what method you use to sign in (Google, Twitter or Facebook, etc.) and your email address. If you have their Android app, visit the linked page for instructions on how to delete your account yourself.", + "email": "contact@castbox.fm", + "email_body": "Please delete my account. I use XXX to sign in. My email address is XXX." + }, + { + "name": "Catawiki", + "domains": [ + "catawiki.com" + ], + "url": "https://www.catawiki.com/en/accounts/pre_delete_account", + "difficulty": "medium", + "notes": "Go to the profile icon in the top right corner and click \"Settings\", scroll down and click \"Continue\" under \"Delete my account\", and \"Confirm\". Then confirm the deletion from your email." + }, + { + "name": "CBC", + "domains": [ + "cbchelp.cbc.ca", + "cbc.ca" + ], + "url": "https://cbchelp.cbc.ca/hc/en-ca/requests/new", + "difficulty": "hard", + "notes": "Go to the link and make a request about deleting your account. Account deletion can take up to 30 days." + }, + { + "name": "CCMA (TV3 i CatR\u00e0dio)", + "domains": [ + "ccma.cat", + "registreusuari.ccma.cat" + ], + "url": "https://registreusuari.ccma.cat/usuaris/baixa", + "difficulty": "easy" + }, + { + "name": "cda", + "domains": [ + "cda.pl" + ], + "url": "https://www.cda.pl/kontakt", + "difficulty": "hard", + "notes": "You need to contact with support" + }, + { + "name": "CDEK Forward", + "domains": [ + "cdek-usa.com", + "cdekforward.com", + "global.cdek.ru" + ], + "url": "https://global.cdek.ru", + "difficulty": "hard", + "notes": "Account deletion requires contacting Customer Support.", + "email": "mf@cdek.ru", + "email_subject": "\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430", + "email_body": "\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0443\u0434\u0430\u043b\u0438\u0442\u0435 \u043c\u043e\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u043d\u0430 CDEK Forward." + }, + { + "name": "CDKeys", + "domains": [ + "cdkeys.com" + ], + "url": "https://www.cdkeys.com/user/profile/", + "difficulty": "easy", + "notes": "Use the delete account button at the bottom of the page" + }, + { + "name": "CDON.COM", + "domains": [ + "cdon.se", + "cdon.dk", + "cdon.no", + "cdon.fi", + "cdon.eu", + "help.cdon.com" + ], + "url": "https://help.cdon.com/hc/sv/articles/360022459751-Hur-tar-jag-bort-mitt-konto-", + "difficulty": "hard", + "notes": "Contact customer service via the support e-mail form and request deletion of your account under General Questions." + }, + { + "name": "Celcoin", + "domains": [ + "celcoin.com.br", + "suportecelcoin.zendesk.com" + ], + "url": "https://celcoin.com.br", + "difficulty": "hard", + "notes": "Contact the customer support via email and request the deletion of your account. In order for them to identify your account, include your full name and Tax ID in your request.", + "email": "contato@celcoin.com.br" + }, + { + "name": "Cengage", + "domains": [ + "cengage.com" + ], + "url": "https://cengage.force.com/s/", + "difficulty": "hard", + "notes": "Contact support over the phone or via live chat. Your case will need to be escalated to close the account, and it may take a few days. Otherwise, the account will automatically be deleted after 5 years of inactivity." + }, + { + "name": "CEX.IO", + "domains": [ + "cex.io" + ], + "url": "https://support.cex.io/", + "difficulty": "hard", + "notes": "You can't delete your account without contacting them. You must set the subject to 'Delete Account'", + "email": "support@cex.io", + "email_subject": "Delete Account" + }, + { + "name": "cgtrader", + "domains": [ + "cgtrader.com", + "help.cgtrader.com" + ], + "url": "https://help.cgtrader.com/hc/en-us/articles/4402420280081-How-can-I-delete-my-account-", + "difficulty": "hard", + "notes": "Request account removal by sending an email to them requesting for account deletion. Personal data will be stored for 2 years after your last login", + "email": "support@cgtrader.com" + }, + { + "name": "Challonge", + "domains": [ + "challonge.com" + ], + "url": "https://challonge.com/settings/delete_account", + "difficulty": "easy" + }, + { + "name": "Change.org", + "domains": [ + "change.org", + "help.change.org" + ], + "url": "https://www.change.org/policies/privacy", + "difficulty": "hard", + "notes": "Send an email from the address you registered with asking to have your account deleted. You will need to answer to some questions about your account.", + "email": "help@change.org" + }, + { + "name": "ChangeIP", + "domains": [ + "changeip.com" + ], + "url": "https://www.changeip.com/tos.php#:~:text=Account%20Cancellation", + "difficulty": "hard", + "notes": "All requests for canceling accounts must be made via email or by opening a support ticket from the client area. It may take up to 7 days to be processed. You must have all account information to cancel.", + "email": "support@changeip.com" + }, + { + "name": "changelly", + "domains": [ + "changelly.com" + ], + "url": "https://changelly.com/profile", + "difficulty": "easy", + "notes": "Click on 'Delete account' under 'Email settings'" + }, + { + "name": "character.ai", + "domains": [ + "character.ai", + "book.character.ai", + "beta.character.ai" + ], + "url": "https://beta.character.ai/settings/", + "difficulty": "easy", + "notes": "Scroll to the bottom of the settings page on your profile and click \u201dRemove Account\u201c, then insert your username and choose whether you want to export your data while deleting it or not." + }, + { + "name": "ChatForma", + "domains": [ + "chatforma.com" + ], + "url": "https://www.chatforma.com/", + "difficulty": "impossible" + }, + { + "name": "Cheap Ass Gamer", + "domains": [ + "cheapassgamer.com" + ], + "url": "https://www.cheapassgamer.com/index.php?app=core&module=help&do=01&HID=15", + "difficulty": "hard", + "notes": "Please email cheapyd@cheapassgamer.com from your account on file with CAG.", + "email": "cheapyd@cheapassgamer.com" + }, + { + "name": "Checklist", + "domains": [ + "checklist.com", + "api.checklist.com", + "app2.checklist.com" + ], + "url": "https://api.checklist.com/account/account", + "difficulty": "easy", + "notes": "Log in and go to your account. Scroll to 'Close your account' and click on 'Close Account'. Confirm by clicking on 'Yes' in the pop-up window. The account will be deleted immediately." + }, + { + "name": "Checksub", + "domains": [ + "checksub.com" + ], + "url": "https://www.checksub.com", + "difficulty": "hard", + "notes": "Contact the customer support to delete your account.", + "email": "team@checksub.com" + }, + { + "name": "Chegg", + "domains": [ + "chegg.com" + ], + "url": "https://www.chegg.com/contactus", + "difficulty": "hard", + "notes": "To close your account, contact support with the email listed, call/message (408)-351-0942, or request assistance via their twitter [@CheggHelp](https://twitter.com/chegghelp). For data deletion, click [here](https://privacyportal-cdn.onetrust.com/dsarwebform/a21a74f4-2f93-44a2-a887-302a9213c997/06b040b7-49eb-464a-b19a-ea35c85c79fc.html).", + "email": "closemyaccount@chegg.com" + }, + { + "name": "Chess.com", + "domains": [ + "chess.com" + ], + "url": "https://www.chess.com/my-data", + "difficulty": "medium", + "notes": "Enter your email, do the CAPTCHA and click \"Show my data\". Scroll to the bottom, enter your username, and click \"Delete\". Any comments and public posts must be deleted individually before deleting your account." + }, + { + "name": "Chick-fil-A", + "domains": [ + "chick-fil-a.com" + ], + "url": "https://privacyportal.onetrust.com/webform/63dc78c7-5612-4181-beae-47dead0569ee/01252c81-82df-4db5-9cb8-bf23a62a9a55", + "difficulty": "hard", + "notes": "Fill out the provided [privacy web form](https://privacyportal.onetrust.com/webform/63dc78c7-5612-4181-beae-47dead0569ee/01252c81-82df-4db5-9cb8-bf23a62a9a55), send an email to mailto:privacy@chick-fil-a.com, or call 1-866-232-2040." + }, + { + "name": "Cineplex", + "domains": [ + "cineplex.com" + ], + "url": "https://www.cineplex.com/Global/PrivacyPolicy", + "difficulty": "hard", + "email": "privacy@cineplex.com" + }, + { + "name": "CircleCI", + "domains": [ + "circleci.com", + "app.circleci.com" + ], + "url": "https://privacy.circleci.com", + "difficulty": "easy", + "notes": "Visit the linked page and click 'Make a Privacy Request', and then 'Delete all my data'. Enter your email address. You will receive an email; In that email, click 'Log in', and then 'Confirm Request'. More info [here](https://support.circleci.com/hc/en-us/articles/360037058873)." + }, + { + "name": "Cisco", + "domains": [ + "cisco.com", + "privacyrequest.cisco.com", + "netacad.com" + ], + "url": "https://privacyrequest.cisco.com/", + "difficulty": "hard", + "notes": "Fill in the fields on the form, confirm the request in your email and then wait for their privacy team to respond." + }, + { + "name": "Classmates", + "domains": [ + "classmates.com" + ], + "url": "https://secure.classmates.com/auth/removemember", + "difficulty": "easy", + "notes": "Provide a reason by selecting a radio button and select 'Remove Registration'." + }, + { + "name": "ClassPass", + "domains": [ + "classpass.com" + ], + "url": "https://classpass.com/settings/membership", + "difficulty": "impossible", + "notes": "You can deactivate your account from settings but not entirely delete the account itself." + }, + { + "name": "CleverReach", + "domains": [ + "cleverreach.com" + ], + "url": "https://www.cleverreach.com", + "difficulty": "hard", + "notes": "Email customer services to request deletion", + "email": "info@cleverreach.de" + }, + { + "name": "ClevGuard", + "domains": [ + "clevguard.com" + ], + "url": "https://www.clevguard.com/account-faq/", + "difficulty": "impossible", + "notes": "Site currently does not allow for accounts to be deleted." + }, + { + "name": "ClickUp", + "domains": [ + "clickup.com", + "app.clickup.com" + ], + "url": "https://app.clickup.com/settings/profile", + "difficulty": "easy", + "notes": "Scroll to the bottom of the page and click the \"Delete Account\" button." + }, + { + "name": "Clockify", + "domains": [ + "clockify.me", + "app.clockify.me" + ], + "url": "https://clockify.me/user/settings/delete", + "difficulty": "easy" + }, + { + "name": "Cloud Convert", + "domains": [ + "cloudconvert.com" + ], + "url": "https://cloudconvert.com/delete#", + "difficulty": "easy", + "notes": "Go to the dashboard \u2b95 account \u2b95 details, and fill your username and password. The acount is deleted after 72 hours." + }, + { + "name": "CloudApp", + "domains": [ + "cl.ly", + "getcloudapp.com", + "share.getcloudapp.com" + ], + "url": "https://share.getcloudapp.com/dashboard", + "difficulty": "easy", + "notes": "Visit the linked page. Click your name in the top right corner, then click 'Settings'. In the left column, select 'Account Details' and click the red 'Remove account' button." + }, + { + "name": "Cloudflare", + "domains": [ + "cloudflare.com", + "dash.cloudflare.com" + ], + "url": "https://dash.cloudflare.com/profile/delete-user", + "difficulty": "medium", + "notes": "You must have no domains, add-ons, payment methods or ongoing investigations attached to your account prior to account deletion." + }, + { + "name": "CloudMagic", + "domains": [ + "cloudmagic.com" + ], + "url": "https://cloudmagic.com/a/v2/preferences", + "difficulty": "easy" + }, + { + "name": "CNET Download", + "domains": [ + "cnet.com" + ], + "url": "https://cbsi.secure.force.com/CBSi/submitcase?template=template_cnet&referer=cnet.com&cfs=SFS_1", + "difficulty": "hard", + "notes": "You have to ask the support to get your account deleted. Choose the category CNET Registration" + }, + { + "name": "CNN", + "domains": [ + "cnn.com" + ], + "url": "https://www.cnn.com/account/settings", + "difficulty": "easy", + "notes": "Scroll down to the bottom of the page and click 'Delete Account'" + }, + { + "name": "Cocoleech", + "domains": [ + "cocoleech.com", + "members.cocoleech.com" + ], + "url": "https://members.cocoleech.com/settings", + "difficulty": "easy", + "notes": "Go to [your profile](https://members.cocoleech.com/settings) and press 'Delete Account'." + }, + { + "name": "Coda", + "domains": [ + "coda.io" + ], + "url": "https://coda.io/account", + "difficulty": "easy", + "notes": "Click \"Advanced Settings\" on the bottom of the page and the option to delete your account should appear" + }, + { + "name": "Code Red", + "domains": [ + "coderedweb.com", + "cne.coderedweb.com" + ], + "url": "https://cne.coderedweb.com", + "difficulty": "impossible", + "notes": "You can't delete yourself. You can only change your phone nr. to a bogus number." + }, + { + "name": "Codeanywhere", + "domains": [ + "codeanywhere.com" + ], + "url": "https://codeanywhere.com/dashboard", + "difficulty": "easy", + "notes": "Login then click Delete Account button and enter your password." + }, + { + "name": "Codeberg", + "domains": [ + "codeberg.org" + ], + "url": "https://codeberg.org/user/settings/account", + "difficulty": "easy", + "notes": "Log into your account, go to settings \u2b95 account and type in your password to delete your account." + }, + { + "name": "Codecademy", + "domains": [ + "codecademy.com" + ], + "url": "https://www.codecademy.com/account/delete_acct", + "difficulty": "easy", + "notes": "Simply click the \"I understand, delete my account.\" button." + }, + { + "name": "CodeChef", + "domains": [ + "codechef.com", + "discuss.codechef.com" + ], + "url": "https://discuss.codechef.com/t/how-do-i-delete-a-codechef-account/30476", + "difficulty": "easy", + "notes": "Navigate to the Privacy tab in your edit profile section. Scroll all the way down and click on \"I don\u2019t want to continue with CodeChef\". Alternatively login to codechef and visit \"https://www.codechef.com/users//discontinue\", after substituting in your username." + }, + { + "name": "Codeforces", + "domains": [ + "codeforces.com" + ], + "url": "https://codeforces.com/blog/entry/69245", + "difficulty": "impossible", + "notes": "You can't delete your account yet. The feature is being worked on and might become available in the future." + }, + { + "name": "CodePen", + "domains": [ + "codepen.io", + "blog.codepen.io" + ], + "url": "https://blog.codepen.io/documentation/faq/how-do-i-delete-my-account/", + "difficulty": "easy" + }, + { + "name": "CodeProject", + "domains": [ + "codeproject.com" + ], + "url": "https://www.codeproject.com/script/Membership/Modify.aspx", + "difficulty": "easy", + "notes": "Beneath the gravatar image, check the 'Close my account' checkbox. Then click on 'Save my Settings'." + }, + { + "name": "CoderByte", + "domains": [ + "coderbyte.com" + ], + "url": "https://coderbyte.com/privacy#:~:text=You%20may%20also%20delete%20your,detailed%20in%20this%20Privacy%20Policy.", + "difficulty": "hard", + "notes": "You can only delete your account by emailing their support team. Certain activity data may remain stored and may be shared with third parties.", + "email": "support@coderbyte.com" + }, + { + "name": "CodersRank", + "domains": [ + "codersrank.io", + "profile.codersrank.io" + ], + "url": "https://profile.codersrank.io/account", + "difficulty": "easy", + "notes": "Scroll down to the bottom of the \"Account settings\" page to the \"Danger Zone\" section and click on \"Delete your account\"" + }, + { + "name": "Coderwall", + "domains": [ + "coderwall.com" + ], + "url": "https://coderwall.com/delete_account", + "difficulty": "easy", + "notes": "Sign in then visit [https://coderwall.com/delete_account](https://coderwall.com/delete_account)" + }, + { + "name": "CodeSignal", + "domains": [ + "codesignal.com", + "app.codesignal.com" + ], + "url": "https://app.codesignal.com/account/username-password", + "difficulty": "easy", + "notes": "Sign in, visit the provided link and press delete profile" + }, + { + "name": "Codetasty", + "domains": [ + "codetasty.com" + ], + "url": "https://codetasty.com/settings/security", + "difficulty": "easy", + "notes": "Log in, press the url, press 'Deactivate Account' which will disable your account for some time and then permanently delete" + }, + { + "name": "Codewars", + "domains": [ + "codewars.com" + ], + "url": "https://www.codewars.com/users/edit", + "difficulty": "easy", + "notes": "Go to your 'Account Settings' and scroll to the bottom to find the 'Delete Account' section" + }, + { + "name": "Codingame", + "domains": [ + "codingame.com" + ], + "url": "https://www.codingame.com/settings", + "difficulty": "easy", + "notes": "Go to your 'Settings' and scroll to the bottom to find the 'Danger Zone' section. However, the source code one has published will be kept in the system with a GPLv3 license." + }, + { + "name": "Coin", + "domains": [ + "coinapp.co", + "support.coinapp.co" + ], + "url": "https://support.coinapp.co/hc/en-us/requests/new", + "difficulty": "hard", + "notes": "Contact them via ticketing system and ask for account to be deleted" + }, + { + "name": "Coinbase", + "domains": [ + "coinbase.com" + ], + "url": "https://www.coinbase.com/settings/privacy-rights", + "difficulty": "medium", + "notes": "Sign in then visit [their website](https://www.coinbase.com/settings/privacy-rights) and request the deletion of all of your data. You will then be directed to [their account activity page](https://www.coinbase.com/settings/account_activity) where you must close your account after withdrawing all funds." + }, + { + "name": "CoinBR/Stratum", + "domains": [ + "stratum.hk", + "coinbr.net", + "coinbr.io" + ], + "url": "https://stratum.hk/support", + "difficulty": "hard", + "notes": "Contact the customer support via email and request the deletion of your account. In order for them to identify your account, make the request through the same email address that you have used to create your CoinBR/Stratum account.", + "email": "support@stratum.hk", + "email_subject": "[ Permanently Account Deletion Request ]", + "email_body": "I have no further interest in using the services provided by Stratum, so I would like my account to be permanently deleted." + }, + { + "name": "CoinGecko", + "domains": [ + "coingecko.com", + "support.coingecko.com" + ], + "url": "https://support.coingecko.com/hc/en-us/articles/4537981325977-How-can-I-delete-my-account-", + "difficulty": "easy", + "notes": "You can delete your CoinGecko account directly from the website by clicking the 'Profile' icon \u2b95 'Login' and 'Security'. At the 'Login and Security' page, please click on 'Delete my account' to proceed with account deletion" + }, + { + "name": "CoinMarketCap", + "domains": [ + "coinmarketcap.com", + "support.coinmarketcap.com" + ], + "url": "https://support.coinmarketcap.com/hc/en-us/requests/new", + "difficulty": "hard", + "notes": "You must submit a support ticket and request your account to be deleted." + }, + { + "name": "CoinPayments", + "domains": [ + "coinpayments.net" + ], + "url": "https://www.coinpayments.net/help-support", + "difficulty": "impossible", + "notes": "According to their own policy, accounts can never be deleted." + }, + { + "name": "Cointree", + "domains": [ + "cointree.com" + ], + "url": "https://cointree.formstack.com/forms/account_closure_request", + "difficulty": "medium", + "notes": "Complete the form and wait for their support to delete the account." + }, + { + "name": "Collegeboard", + "domains": [ + "collegeboard.org", + "pages.collegeboard.org" + ], + "url": "https://pages.collegeboard.org/account-help/how-do-i-delete-my-account", + "difficulty": "impossible", + "notes": "You can't delete your College Board account, but you can close it by calling their customer service at 866-315-6068" + }, + { + "name": "Comment \u00e7a marche", + "domains": [ + "commentcamarche.net" + ], + "url": "https://auth.ccm.net/user/delete_account", + "difficulty": "easy", + "notes": "Your messages will remain on the forums." + }, + { + "name": "Commun", + "domains": [ + "commun.it" + ], + "url": "https://commun.it/content/cancel_account", + "difficulty": "easy" + }, + { + "name": "Conte.it", + "domains": [ + "conte.it" + ], + "url": "https://www.conte.it/privacy-unsubscribe/", + "difficulty": "easy", + "notes": "Fill out the form to request cancellation from Conte.it's insurance services." + }, + { + "name": "Cook It", + "domains": [ + "chefcookit.com" + ], + "url": "https://www.chefcookit.com/unsubscribe", + "difficulty": "impossible", + "notes": "It is only possible to permanently disable the automatic subscription fee. Doing so will also set your stars back to 0." + }, + { + "name": "Coolors", + "domains": [ + "coolors.co" + ], + "url": "https://coolors.co/account/delete", + "difficulty": "medium", + "notes": "Use the link provided to request account deletion. Enter your password, then you get an e-mail with a code. Enter this code in the next input field. If you created the account with a 'Social Login' you need to set a password first." + }, + { + "name": "Corellium", + "domains": [ + "corellium.com", + "app.corellium.com" + ], + "url": "https://app.corellium.com/admin/subscription", + "difficulty": "easy", + "notes": "Click the Delete Account button." + }, + { + "name": "Correl.app", + "domains": [ + "correl.app" + ], + "url": "https://correl.app/account/delete", + "difficulty": "easy" + }, + { + "name": "CoSpaces", + "domains": [ + "cospaces.io", + "edu.cospaces.io" + ], + "url": "https://edu.cospaces.io/Studio/Account", + "difficulty": "easy", + "notes": "Go to the linked page and scroll down to the bottom of page. From there, click the 'Delete' button next to the 'Delete account' section." + }, + { + "name": "Coub", + "domains": [ + "coub.com" + ], + "url": "https://coub.com/account/edit", + "difficulty": "easy", + "notes": "Visit the linked page. From the left column, select your username. Scroll to the bottom of the page and click \"Delete Account\"." + }, + { + "name": "Couchsurfing", + "domains": [ + "couchsurfing.org", + "support.couchsurfing.org", + "couchsurfing.com" + ], + "url": "https://support.couchsurfing.org/hc/en-us/articles/200640880-How-can-I-Hide-or-Delete-my-profile", + "difficulty": "impossible", + "notes": "Cannot be deleted fully, reactivation is always available. Fill out the request form." + }, + { + "name": "Coursera", + "domains": [ + "coursera.org" + ], + "url": "https://www.coursera.org", + "difficulty": "easy", + "notes": "Delete acccount button is at the bottom of the account settings page." + }, + { + "name": "Craigslist", + "domains": [ + "craigslist.org" + ], + "url": "https://www.craigslist.org/about/help/user_accounts", + "difficulty": "hard", + "notes": "Send an email to abuse@craigslist.org and request deletion.", + "email": "abuse@craigslist.org" + }, + { + "name": "CrashPlan", + "domains": [ + "crashplan.com", + "code42.com", + "helpdesk.code42.com" + ], + "url": "https://helpdesk.code42.com", + "difficulty": "hard", + "notes": "Start a live chat session and a representative will delete your account." + }, + { + "name": "Credit Karma", + "domains": [ + "creditkarma.com" + ], + "url": "https://www.creditkarma.com/myprofile/security/deactivate", + "difficulty": "easy", + "notes": "Membership can be canceled either online or by mail. Once you cancel, you will no longer have access to your Credit Karma account history and you won\u2019t be able to create a new account for six months." + }, + { + "name": "CreditExpert", + "domains": [ + "creditexpert.co.uk" + ], + "url": "https://www.creditexpert.co.uk", + "difficulty": "hard", + "notes": "You can cancel by email but only if your membership includes insurance. Otherwise, an email cancellation will be ignored. You have to call 0800 561 0083 to cancel your account. This is the only way. More info [here](http://experian.metafaq.com/help/CreditExpertBRS/Cancel_and_duration/CancelBRS)", + "email": "Customerservice@creditexpert.co.uk" + }, + { + "name": "Credly", + "domains": [ + "credly.com" + ], + "url": "https://www.credly.com/earner/settings/profile", + "difficulty": "easy", + "notes": "On the profile settings page, scroll down and click 'Delete my Profile'." + }, + { + "name": "Crevado Portfolios", + "domains": [ + "crevado.com" + ], + "url": "https://crevado.com/admin/account/cancel", + "difficulty": "easy" + }, + { + "name": "Crowdcast.io", + "domains": [ + "crowdcast.io", + "docs.crowdcast.io" + ], + "url": "https://crowdcast.notion.site/Deleting-Your-Crowdcast-Account-952b7f9ff09648f7960e7d9ecfb6a1b4", + "difficulty": "impossible", + "notes": "You can pause your account for $10/mo or cancel your account." + }, + { + "name": "Crowdfinder", + "domains": [ + "crowdfinder.be" + ], + "url": "https://crowdfinder.be/privacy", + "difficulty": "hard", + "notes": "Request requires sending a proof of identity", + "email": "info@crowdfinder.be" + }, + { + "name": "Crowdfire", + "domains": [ + "crowdfireapp.com", + "support.crowdfireapp.com" + ], + "url": "https://support.crowdfireapp.com/support/solutions/articles/5000712205-deleting-your-crowdfire-account", + "difficulty": "easy", + "notes": "Deleted after 48 hours of request" + }, + { + "name": "Crowdin", + "domains": [ + "crowdin.com" + ], + "url": "https://crowdin.com/settings#account", + "difficulty": "easy", + "notes": "Login to your account. Click on 'Settings', then 'Delete Account' (at the bottom). Choose one of the options why you want to delete your account and click 'Delete Account'." + }, + { + "name": "Crowdsorsa", + "domains": [ + "crowdsorsa.com" + ], + "url": "https://crowdsorsa.com/contact/", + "difficulty": "hard", + "notes": "As of now there's not a simple way to delete your account. You have to contact their team, your account will be quickly deleted upon request." + }, + { + "name": "Crunchyroll", + "domains": [ + "crunchyroll.com", + "help.crunchyroll.com" + ], + "url": "https://github.com/jdm-contrib/jdm/issues/1895", + "difficulty": "limited", + "notes": "If you live in California, use the [CCPA Request Form](https://privacyportal.onetrust.com/webform/d19e506f-1a64-463d-94e4-914dd635817d/fc46fc0c-407c-4735-9a43-14dfa283d17c). Otherwise, use the [All Other Requests Form](https://sites.sonypictures.com/corp/privacypolicies/b2c/contact-us.html).\n\nSelect \"Crunchyroll/Crunchyroll Games\" as your service." + }, + { + "name": "CryEngine", + "domains": [ + "cryengine.com", + "forum.cryengine.com" + ], + "url": "https://www.cryengine.com/user/dashboard/account/delete", + "difficulty": "easy", + "notes": "Go to your dashboard, click 'Delete your account' and confirm." + }, + { + "name": "Crypton.sh", + "domains": [ + "crypton.sh" + ], + "url": "https://crypton.sh/app/account", + "difficulty": "easy", + "notes": "Scroll down the page, click at \"Delete My Account\", type your password and confirm your action by clicking \"Delete Account\"." + }, + { + "name": "CryptoPanic", + "domains": [ + "cryptopanic.com" + ], + "url": "https://cryptopanic.com/accounts/delete/", + "difficulty": "medium", + "notes": "Click on 'Yes, send confirmation email', and you should receive an email to delete your account." + }, + { + "name": "CryptoVoucher", + "domains": [ + "cryptovoucher.io" + ], + "url": "https://cryptovoucher.io/account/settings", + "difficulty": "easy", + "notes": "Just click the close account button in the account settings" + }, + { + "name": "CryptPad", + "domains": [ + "cryptpad.fr" + ], + "url": "https://cryptpad.fr/settings/", + "difficulty": "easy", + "notes": "Scroll down to the red 'Delete your account' button and then select 'OK (enter)'" + }, + { + "name": "Crytek", + "domains": [ + "crytek.com" + ], + "url": "https://www.crytek.com/privacy-policy#:~:text=VII.%20Review%2C%20Correction%20of%20Your%20Information%2C%20Requesting%20Removal%20from%20Mailing%20Lists%20and%20Deactivating%20Your%20Account", + "difficulty": "easy", + "notes": "You can delete your account by navigating to the profile settings or e-mailing them" + }, + { + "name": "cTrader", + "domains": [ + "ctrader.com", + "help.ctrader.com" + ], + "url": "https://help.ctrader.com/ctrader-id/delete", + "difficulty": "hard", + "notes": "You need to contact customer support and they will ask for very sensitive information such as your passport number.", + "email": "community@spotware.com", + "email_subject": "cTrader account deletion request", + "email_body": "Please delete my cTrader account that uses the e-mail XXXXX and the passport is YYYYY." + }, + { + "name": "CubieCloud", + "domains": [ + "cloud.cubie.com.br", + "sso.cubie.com.br" + ], + "url": "https://sso.cubie.com.br/delacc", + "difficulty": "hard", + "notes": "Send an email asking to delete your account, providing your private id and other evidence.", + "email": "suporte@cubie.com.br" + }, + { + "name": "Curio", + "domains": [ + "curio.io" + ], + "url": "https://curio.io/account/delete", + "difficulty": "easy" + }, + { + "name": "Curriculum", + "domains": [ + "curriculum.com.br" + ], + "url": "https://curriculum.zendesk.com/hc/pt-br/requests/new", + "difficulty": "hard", + "notes": "Access the link above and fill the form requesting the account deletion." + }, + { + "name": "CurseForge", + "domains": [ + "curseforge.com" + ], + "url": "https://support.curseforge.com/en/support/tickets/new", + "difficulty": "hard", + "notes": "Send a support ticket from the email associated with your account and include the following information: your account username; a screenshot of you logged in to account settings / authors dashboard." + }, + { + "name": "Curve", + "domains": [ + "curve.app", + "support.imaginecurve.com" + ], + "url": "https://support.imaginecurve.com/hc/en-gb/articles/214179685-How-do-I-cancel-my-account", + "difficulty": "medium", + "notes": "They cannot delete your account immediately as they are obliged by the Money Laundering Regulations 2017 to keep your data for 5 years after you stop using Curve." + }, + { + "name": "CV online", + "domains": [ + "cvonline.me" + ], + "url": "https://cvonline.me/en/support/accounts/removing-account", + "difficulty": "hard", + "notes": "Request account removal by sending an email to them from the same email address appearing on your CVs.", + "email": "hello@cvonline.me" + }, + { + "name": "CVS Pharmacy", + "domains": [ + "cvs.com" + ], + "url": "https://www.cvs.com/account/account-management.jsp", + "difficulty": "medium", + "notes": "They allow account deletions under the CCPA, but only for California residents. However, the way they check your location is simply a ZIP code of your choosing. You can input any California ZIP (ex. 94102) and they will allow you to delete your account. Visit the linked page, and select 'CA residents: request or delete personal information.' Enter any California ZIP code, then click 'Delete my info and account', and finally 'Yes, delete my info and account'." + }, + { + "name": "Cybrary", + "domains": [ + "cybrary.com", + "app.cybrary.it" + ], + "url": "https://app.cybrary.it/settings/account", + "difficulty": "easy", + "notes": "Go to \"Delete Your Account \u2b95 Delete Account\"." + }, + { + "name": "DaFONT", + "domains": [ + "dafont.com" + ], + "url": "https://www.dafont.com/forum/read/12643/how-do-i-delete-my-account", + "difficulty": "hard", + "notes": "Send a private message to [Rodolphe](http://www.dafont.com/fr/profile.php?user=1)." + }, + { + "name": "DagsHub", + "domains": [ + "dagshub.com" + ], + "url": "https://dagshub.com/user/settings/delete", + "difficulty": "medium", + "notes": "You first need to delete/transfer all your repositories. After that you can visit the linked page and delete your account." + }, + { + "name": "The Daily Wire", + "domains": [ + "dailywire.com" + ], + "url": "https://privacy.dailywire.com/", + "difficulty": "easy", + "notes": "Click \"Delete Your Data\" and enter the verification code the company sends to your account email." + }, + { + "name": "Dailymotion", + "domains": [ + "dailymotion.com" + ], + "url": "https://www.dailymotion.com/settings/delete-account", + "difficulty": "easy", + "notes": "Type your password and confirm your action by clicking \"Delete account\"." + }, + { + "name": "DansTonChat", + "domains": [ + "danstonchat.com" + ], + "url": "https://danstonchat.com/user/delete.html", + "difficulty": "easy" + }, + { + "name": "danwin1210.me", + "domains": [ + "danwin1210.me" + ], + "url": "https://danwin1210.me/mail/manage_account.php", + "difficulty": "easy", + "notes": "You can either disable or remove your account. After removal, username is free to be taken again." + }, + { + "name": "Dashlane", + "domains": [ + "dashlane.com" + ], + "url": "https://www.dashlane.com/deleteaccount", + "difficulty": "easy", + "notes": "After entering the email address and selecting a reason for deletion, you will receive a security code by email. Enter the security code. After that, the account will be irretrievably deleted." + }, + { + "name": "DataCamp", + "domains": [ + "datacamp.com" + ], + "url": "https://www.datacamp.com/profile/account_settings/advanced", + "difficulty": "easy", + "notes": "Click the red 'delete account' button at the bottom." + }, + { + "name": "DataQuest", + "domains": [ + "app.dataquest.io" + ], + "url": "https://app.dataquest.io/settings/account", + "difficulty": "easy", + "notes": "Click the red 'delete account' button" + }, + { + "name": "Day One", + "domains": [ + "dayone.me" + ], + "url": "https://dayone.me/user/request-account-deletion", + "difficulty": "easy" + }, + { + "name": "dbrand", + "domains": [ + "dbrand.com" + ], + "url": "https://dbrand.com/contact", + "difficulty": "hard", + "notes": "Contact customer support to request account deletion." + }, + { + "name": "Deadspin", + "domains": [ + "deadspin.com" + ], + "url": "https://notice.sp-prod.net/sar/index.html?message_id=539278&account_id=1195&ccpa_type=delete", + "difficulty": "hard", + "notes": "Fill out the form using the email address of your account and click on the verification link that is sent." + }, + { + "name": "Decathlon India", + "domains": [ + "decathlon.in" + ], + "url": "https://decathlononline.freshdesk.com/support/tickets/new", + "difficulty": "hard", + "notes": "Send them a deletion request from the linked contact form and remember to mention your decathlon.in registered email there. After some hours of submitting the request their support representative will email you asking for your confirmation to have your decathlon account permanently deleted. Alternatively, you can email them.", + "email": "care.india@decathlon.com", + "email_subject": "Decathlon.in Account Deletion Request", + "email_body": "Please delete my decathlon.in account and erase all data associated with it." + }, + { + "name": "DeepL", + "domains": [ + "deepl.com" + ], + "url": "https://www.deepl.com/en/privacy#section_6_1", + "difficulty": "hard", + "notes": "Account deletion requires contacting Customer Support.", + "email": "support@deepl.com" + }, + { + "name": "Deezer", + "domains": [ + "deezer.com", + "developers.deezer.com", + "features.deezer.com", + "support.deezer.com", + "deezer-blog.com", + "en.deezercommunity.com" + ], + "url": "https://www.deezer.com/account", + "difficulty": "medium", + "notes": "If you signed up via Google/Facebook setup a Deezer password at [https://www.deezer.com/password/reset](https://www.deezer.com/password/reset) and click the confirmation link you'll get via mail. If you have your Deezer password, open your account settings. Click 'Delete my Account' at the bottom of the page. Enter your Deezer password and confirm the deletion in the confirmation mail." + }, + { + "name": "Deliveroo", + "domains": [ + "deliveroo.co.uk" + ], + "url": "https://deliveroo.co.uk/account", + "difficulty": "medium", + "notes": "At the bottom of the account page is the option to permanently deactivate your account. It is unclear if your data will be retained after this so you may wish to contact dpo@deliveroo.com to exercise your right to erasure under UK GDPR." + }, + { + "name": "Delivery Code", + "domains": [ + "deliverycode.com" + ], + "url": "https://www.deliverycode.com", + "difficulty": "medium", + "notes": "Go to My Account and select Edit Profile and then Delete Account. A confirmation e-mail will be sent to the address on file with a link you must visit." + }, + { + "name": "Delta Airlines (SkyMiles)", + "domains": [ + "delta.com" + ], + "url": "https://www.delta.com/contactus/pages/comment_complaint/index.jsp", + "difficulty": "hard", + "notes": "You can not delete your account on the site. You must use the linked form. Then select SkyMiles \u2b95 Update SkyMiles Account and request them to close your account." + }, + { + "name": "DelugeRPG", + "domains": [ + "delugerpg.com" + ], + "url": "https://www.delugerpg.com/faq#delete", + "difficulty": "hard", + "notes": "There is no way to delete an account. Inactive accounts are deleted automatically after 15 months." + }, + { + "name": "Depop", + "domains": [ + "depop.com" + ], + "url": "https://depophelp.zendesk.com/hc/en-gb/articles/360001772988-How-can-I-delete-my-Depop-account-", + "difficulty": "hard", + "notes": "Select 'I want to delete my account' in the support request page." + }, + { + "name": "Depositphotos", + "domains": [ + "depositphotos.com" + ], + "url": "https://depositphotos.com", + "difficulty": "hard", + "notes": "Enter live chat in the other department and request cancellation of your account or if it is not available use the contact form." + }, + { + "name": "Deutsche Post", + "domains": [ + "deutschepost.de" + ], + "url": "https://www.dhl.de/content/dpks/de/themenauswahl/kundenservice-formulare/f1b-datenschutz.html", + "difficulty": "hard", + "notes": "Fill out the form to request erasure." + }, + { + "name": "DEV", + "domains": [ + "dev.to" + ], + "url": "https://dev.to/settings/account", + "difficulty": "easy", + "notes": "Go to your 'Settings'. On the left select 'Account'. Click 'Delete Account', and follow the instructions sent via email to confirm." + }, + { + "name": "DeviantArt", + "domains": [ + "deviantart.com" + ], + "url": "https://www.deviantart.com/settings/deactivation", + "difficulty": "medium", + "notes": "All your data is ereased immediately, except comments which will remain. Accounts can be reactivated within 30 days. After that, Accounts can't be reactivated." + }, + { + "name": "DevITjobs", + "domains": [ + "devitjobs.com" + ], + "url": "https://devitjobs.com/contact", + "difficulty": "medium", + "notes": "Click on the 'Log in here' button. After logging in, go to 'Account', then 'Delete Account'. You will be redirected to write to the support email. Account gets deleted within 48 hours." + }, + { + "name": "Devpost", + "domains": [ + "devpost.com" + ], + "url": "https://devpost.com/settings/delete_account", + "difficulty": "easy" + }, + { + "name": "DHL", + "domains": [ + "dhl.de" + ], + "url": "https://www.dhl.de/de/privatkunden/kundenkonto/meine-daten.html", + "difficulty": "easy", + "notes": "Under 'Kundenkonto', click on 'Konto l\u00f6schen'." + }, + { + "name": "diasp.eu (Diaspora)", + "domains": [ + "diasp.eu" + ], + "url": "https://diasp.eu/user/edit#close_account_pane", + "difficulty": "easy", + "notes": "Click close my account and confirm with your password." + }, + { + "name": "Dice", + "domains": [ + "dice.com" + ], + "url": "https://www.dice.com/dashboard/settings", + "difficulty": "easy", + "notes": "Go to your 'Settings'. Scroll to the bottom to find the 'Delete Account' section." + }, + { + "name": "DiceCloud", + "domains": [ + "dicecloud.com" + ], + "url": "https://dicecloud.com/", + "difficulty": "impossible", + "notes": "There are no settings on the website to delete your account and the contact form is never answered." + }, + { + "name": "dict.cc", + "domains": [ + "dict.cc", + "users.dict.cc" + ], + "url": "https://users.dict.cc/my-account/close-account", + "difficulty": "easy", + "notes": "Account data will be deleted; the user name will be blocked to prevent reuse." + }, + { + "name": "Dictionary.com", + "domains": [ + "dictionary.com" + ], + "url": "https://www.dictionary.com/account", + "difficulty": "easy", + "notes": "Account data will be deleted along with all the saved data and words. You fill find the detele button at the bottom of the page." + }, + { + "name": "Didsoft", + "domains": [ + "didsoft.com" + ], + "url": "https://didsoft.com/contact.html", + "difficulty": "hard", + "notes": "Create a ticket on the website, or email them.", + "email": "support@didsoft.com" + }, + { + "name": "Dietollemode.com", + "domains": [ + "dietollemode.com" + ], + "url": "https://dietollemode.com/", + "difficulty": "easy" + }, + { + "name": "Digg", + "domains": [ + "digg.com" + ], + "url": "https://digg.com/privacy#:~:text=How%20Can%20I%20Delete%20My%20Account%3F", + "difficulty": "easy", + "notes": "Go to \"Settings \u2b95 Delete my account\"." + }, + { + "name": "Digio", + "domains": [ + "digio.com.br" + ], + "url": "https://www.digio.com.br/", + "difficulty": "impossible", + "notes": "There is no delete button and talking to the customer support gets you nowhere, they only understand you want to cancel the bank account or the credit card, but not remove the login information." + }, + { + "name": "DigitalOcean", + "domains": [ + "digitalocean.com", + "cloud.digitalocean.com" + ], + "url": "https://cloud.digitalocean.com/account/profile/deactivate", + "difficulty": "easy", + "notes": "Click in the checkbox \"Purge all of my account data\" and confirm your action by clicking \"Deactivate Account\"." + }, + { + "name": "Diigo", + "domains": [ + "diigo.com" + ], + "url": "https://www.diigo.com/setting", + "difficulty": "easy", + "notes": "Scroll down the page, click at \"I'd like to delete my account.\", type your password and confirm your action by clicking \"Confirm Delete\"." + }, + { + "name": "Directleaks", + "domains": [ + "directleaks.net" + ], + "url": "https://directleaks.net/account/delete", + "difficulty": "easy" + }, + { + "name": "Discogs", + "domains": [ + "discogs.com" + ], + "url": "https://www.discogs.com/users/delete", + "difficulty": "easy" + }, + { + "name": "Discord", + "domains": [ + "discord.com", + "support.discord.com", + "support-dev.discord.com", + "support.discordapp.com", + "discordstatus.com" + ], + "url": "https://support.discordapp.com/hc/en-us/articles/212500837-How-do-I-permanently-delete-my-account-", + "difficulty": "medium", + "notes": "Account deletion will not delete your messages, which you must do manually (Automating this process is possible using projects such as Undiscord). If you're a server owner, you'll need to either [delete the server](https://support.discordapp.com/hc/en-us/articles/213595197-How-do-I-delete-a-server-), or [transfer ownership](https://support.discordapp.com/hc/en-us/articles/216273938-How-do-I-transfer-server-ownership-) for account deletion to succeed. Account deletion takes 15 days on average (You can restore your account in this time)." + }, + { + "name": "Discourse", + "domains": [ + "community.containo.us", + "airlinepilot.life", + "bbs.boingboing.net", + "blenderartists.org", + "commons.commondreams.org", + "community.bnz.co.nz", + "community.brave.com", + "community.cartalk.com", + "community.containo.us", + "community.drownedinsound.com", + "community.gemsofwar.com", + "community.glowforge.com", + "community.infinite-flight.com", + "community.mydevices.com", + "community.netlify.com", + "community.smartthings.com", + "community.unbounce.com", + "discourse.codecombat.com", + "discourse.gnome.org", + "discourse.joplinapp.org", + "discuss.atom.io", + "discuss.codecademy.com", + "discuss.elastic.co", + "discuss.emberjs.com", + "discuss.newrelic.com", + "experts.feverbee.com", + "foro.estudiabetes.org/", + "forum.cloudron.io", + "forum.duplicati.com", + "forum.factset.com", + "forum.gethopscotch.com", + "forum.glamour.de", + "forum.level1techs.com", + "forum.linkinpark.com", + "forum.ludia.com", + "forum.mangoh.io", + "forum.plentymarkets.com", + "forum.rclone.org", + "forum.restic.net", + "forum.schizophrenia.com", + "forum.smallgiantgames.com", + "forum.syncthing.net", + "forums.bignerdranch.com", + "forums.docker.com", + "forums.envato.com", + "forums.eveonline.com", + "forums.funcom.com", + "forums.gearboxsoftware.com", + "forums.pimoroni.com", + "forums.republicwireless.com", + "forums.t-nation.com", + "forums.wyzecam.com", + "gamekult.com/forum", + "helloforos.com", + "meta.discourse.org", + "secopshub.com", + "soaps.sheknows.com/message-boards", + "survivefrance.com", + "talk.folksy.com", + "try.discourse.org", + "twittercommunity.com", + "users.rust-lang.org" + ], + "url": "https://www.discourse.org/privacy#heading--change", + "difficulty": "hard", + "notes": "Account deletion requires contacting Customer Support.", + "email": "privacy@discourse.org" + }, + { + "name": "discovery+", + "domains": [ + "discoveryplus.com", + "support.discoveryplus.com" + ], + "url": "https://privacyportal.onetrust.com/webform/1b21e05d-c206-4e0b-970e-2d73a23e42e8/5b504afe-dd1e-47f6-9af6-56144531eced", + "difficulty": "medium" + }, + { + "name": "Disney", + "domains": [ + "disney.co.uk", + "disney.com", + "disney.de", + "disney.es", + "disney.fi", + "disney.fr", + "disney.my", + "disney.pt", + "support.disney.com" + ], + "url": "https://support.disney.com/hc/en-gb/articles/115005418823-How-do-I-delete-my-Disney-account-", + "difficulty": "easy" + }, + { + "name": "Disney+", + "domains": [ + "disneyplus.com", + "help.disneyplus.com" + ], + "url": "https://help.disneyplus.com/csp?id=csp_article_content&sys_kb_id=bf6bf352db101558331d6fddd39619c7", + "difficulty": "medium", + "notes": "Your Disney+ account is different from your Disney account. Deleting your Disney+ account will not delete your Disney account." + }, + { + "name": "Displate", + "domains": [ + "displate.com" + ], + "url": "https://displate.com/settings", + "difficulty": "easy", + "notes": "Click the \"Deactivate account\" button." + }, + { + "name": "Disqus", + "domains": [ + "disqus.com" + ], + "url": "https://disqus.com/home/settings/account/", + "difficulty": "easy" + }, + { + "name": "Disroot", + "domains": [ + "disroot.org", + "bin.disroot.org", + "board.disroot.org", + "calls.disroot.org", + "cloud.disroot.org", + "cryptpad.disroot.org", + "forum.disroot.org", + "git.disroot.org", + "howto.disroot.org", + "mumble.disroot.org", + "pad.disroot.org", + "search.disroot.org", + "upload.disroot.org", + "user.disroot.org", + "webchat.disroot.org", + "webmail.disroot.org" + ], + "url": "https://user.disroot.org/pwm/private/", + "difficulty": "easy", + "notes": "Go to the home page, click the user icon then press 'Delete my Account', nobody will be able to use the same username after deletion." + }, + { + "name": "Divize", + "domains": [ + "divize.io" + ], + "url": "https://divize.io/account/delete", + "difficulty": "easy", + "notes": "Click on \"Delete\" and confirm by clicking on \"Yes, Delete it!\"." + }, + { + "name": "DJI", + "domains": [ + "dji.com" + ], + "url": "https://account.dji.com/account/userCancel", + "difficulty": "easy" + }, + { + "name": "DLH", + "domains": [ + "dlh.net" + ], + "url": "https://dlh.net/en/profile.html", + "difficulty": "medium", + "notes": "Complete the captcha and press the button to request account deletion. An email will be sent to you to confirm such action." + }, + { + "name": "DLive", + "domains": [ + "dlive.tv", + "community.dlive.tv", + "help.dlive.tv" + ], + "url": "https://dlive.tv/s/settings", + "difficulty": "easy", + "notes": "In settings scroll to the bottom, click the delete account button and enter your password. Your account will be deleted in 30 days." + }, + { + "name": "DNSimple", + "domains": [ + "dnsimple.com" + ], + "url": "https://dnsimple.com/user/cancellation", + "difficulty": "easy" + }, + { + "name": "Do IT", + "domains": [ + "doit.life" + ], + "url": "https://doit.life/privacy-policy", + "difficulty": "impossible", + "notes": "E-mailing them is a deadend even after waiting for several weeks.", + "email": "data@doit.life" + }, + { + "name": "DocHub", + "domains": [ + "dochub.com" + ], + "url": "https://dochub.com/settings/account", + "difficulty": "easy", + "notes": "Log in, under \"Account\" click \"Delete my Account\"." + }, + { + "name": "Docker", + "domains": [ + "docker.com", + "hub.docker.com" + ], + "url": "https://hub.docker.com/settings/deactivate", + "difficulty": "easy", + "notes": "Log in, under account settings find and use \"Deactivate Account\"." + }, + { + "name": "DocMorris", + "domains": [ + "docmorris.de" + ], + "url": "https://www.docmorris.de/kontaktformular", + "difficulty": "hard", + "notes": "Contact customer service using their web contact form and ask them to delete your account." + }, + { + "name": "DocuSign", + "domains": [ + "docusign.com", + "support.docusign.com" + ], + "url": "https://support.docusign.com/en/articles/How-do-I-cancel-or-downgrade-my-account#steps", + "difficulty": "hard", + "notes": "Follow the instructions at the linked support page; directions vary depending on account type and privileges." + }, + { + "name": "Dollskill", + "domains": [ + "dollskill.com" + ], + "url": "https://www.dollskill.com/pages/contact-us", + "difficulty": "hard", + "notes": "Email customer service and they will reply once that is complete.", + "email": "dataprotection@dollskill.com", + "email_subject": "Hello\n, please delete the account associated to this email. My phone number is XXXXXXXX and I would like all data associated to my account to be removed." + }, + { + "name": "DonationAlerts", + "domains": [ + "donationalerts.com" + ], + "url": "https://www.donationalerts.com/dashboard/general-settings/account", + "difficulty": "easy", + "notes": "Press \"Delete account\" under the \"Account removal\". Your account will be deleted within a month." + }, + { + "name": "Doneo", + "domains": [ + "doneo.com" + ], + "url": "http://www.doneo.org/2_index_membre.php?action=desinscription_membre&block=block2", + "difficulty": "easy" + }, + { + "name": "Doodle", + "domains": [ + "doodle.com" + ], + "url": "https://doodle.com/account", + "difficulty": "easy", + "notes": "In your Doodle account select 'Delete Doodle account' at the bottom of the page." + }, + { + "name": "DoorDash", + "domains": [ + "doordash.com" + ], + "url": "https://www.doordash.com/consumer/privacy/delete_account/", + "difficulty": "medium", + "notes": "You will need the phone tied to your account to receive the 2FA code." + }, + { + "name": "Douban", + "domains": [ + "douban.com" + ], + "url": "https://www.douban.com/accounts/suicide/", + "difficulty": "easy" + }, + { + "name": "DOWN", + "domains": [ + "downapp.com" + ], + "url": "https://www.downapp.com", + "difficulty": "easy", + "notes": "You can delete it in the settings page", + "email": "feedback@downapp.com" + }, + { + "name": "Dr. Martens", + "domains": [ + "drmartens.com" + ], + "url": "https://www.drmartens.com/us/en/faq", + "difficulty": "hard", + "notes": "Send an email stating that you want them to close your account. Include: full name on account, full billing address and registered email address. Once they confirm deletion it may take 7-10 days to take effect. " + }, + { + "name": "Draft", + "domains": [ + "draftin.com" + ], + "url": "https://draftin.com/draft/users/edit", + "difficulty": "easy" + }, + { + "name": "Drawabox", + "domains": [ + "drawabox.com" + ], + "url": "https://drawabox.com", + "difficulty": "hard", + "notes": "Send an email from the address associated with the account you'd like to delete.", + "email": "support@drawabox.com" + }, + { + "name": "Drawpile", + "domains": [ + "drawpile.net" + ], + "url": "https://drawpile.net/accounts/delete/", + "difficulty": "easy" + }, + { + "name": "DreamHost", + "domains": [ + "dreamhost.com", + "panel.dreamhost.com" + ], + "url": "https://panel.dreamhost.com/index.cgi?tree=support.msg", + "difficulty": "hard", + "notes": "Contact customer support using the customer service form or privacy contact email.", + "email": "privacypolicy@dreamhost.com" + }, + { + "name": "Dreamstime", + "domains": [ + "dreamstime.com" + ], + "url": "https://www.dreamstime.com/account/edit-profile", + "difficulty": "easy", + "notes": "Click on the \"Delete account\" link towards the bottom of the page and then confirm your action in the opened pop-up. Accounts can be deleted only if you have no activity registered (uploads, downloads, comments,blogs etc)." + }, + { + "name": "Dreamwidth", + "domains": [ + "dreamwidth.org" + ], + "url": "https://www.dreamwidth.org/accountstatus", + "difficulty": "medium", + "notes": "Changing your account status to Deleted will immediately hide your profile and journal from other users, but your account will not be removed for 30 days." + }, + { + "name": "Dribbble", + "domains": [ + "dribbble.com" + ], + "url": "https://dribbble.com/account", + "difficulty": "easy" + }, + { + "name": "DriveThruRPG", + "domains": [ + "drivethrurpg.com", + "support.drivethrurpg.com" + ], + "url": "https://support.drivethrurpg.com/hc/en-us/requests/new", + "difficulty": "hard", + "notes": "Submit a request asking for the deletion of your account providing your username" + }, + { + "name": "Drivvo", + "domains": [ + "drivvo.com" + ], + "url": "https://www.drivvo.com/", + "difficulty": "easy", + "notes": "On the app, open the 'Menu' \u2b95 'My Account' \u2b95 tap the three dots on the upper right corner, click 'Delete Account' and confirm." + }, + { + "name": "Drizly", + "domains": [ + "drizly.com" + ], + "url": "https://privacyportal.onetrust.com/webform/d3790e60-9408-4ab8-9ac6-511ad32593a0/edb91c18-e5fd-42cb-a0ce-4b1832410687", + "difficulty": "hard", + "notes": "Fill out the form and/or email them through their contact page: https://drizly.com/contact-us. They will email you promptly to let you know that your account has been deleted." + }, + { + "name": "Drone.io", + "domains": [ + "drone.io" + ], + "url": "https://drone.io", + "difficulty": "easy" + }, + { + "name": "Dronebase", + "domains": [ + "dronebase.com" + ], + "url": "https://dronebase.com/contact", + "difficulty": "hard", + "notes": "Contact support to find out if you can delete your account." + }, + { + "name": "Drop (Massdrop)", + "domains": [ + "drop.com", + "helpdesk.drop.com" + ], + "url": "https://helpdesk.drop.com/hc/en-us/articles/360019265073-How-do-I-delete-my-account-", + "difficulty": "hard", + "notes": "Log into your Drop account and submit a Support ticket on drop.com/support. Under Reason for Contacting Support, select Account inquiries." + }, + { + "name": "Dropbox", + "domains": [ + "dropbox.com" + ], + "url": "https://www.dropbox.com/account/delete", + "difficulty": "easy" + }, + { + "name": "Droplr", + "domains": [ + "droplr.com", + "d.pr" + ], + "url": "https://d.pr/settings/profile", + "difficulty": "easy", + "notes": "Click at \"Delete Account\", type your email address and confirm your action by clicking \"Delete\"." + }, + { + "name": "Dropmark", + "domains": [ + "dropmark.com", + "support.dropmark.com" + ], + "url": "https://support.dropmark.com/article/92-how-do-i-delete-my-account", + "difficulty": "medium", + "notes": "Personal accounts can be deleted from the \"Danger Zone\" section at the bottom of your [Account page](https://app.dropmark.com/account). Note: Before deleting your personal account, you must first [transfer ownership](https://support.dropmark.com/article/53-transferring-collection-ownership) or [delete all collections](https://support.dropmark.com/article/20-deleting-a-collection) owned by your account." + }, + { + "name": "DTF", + "domains": [ + "dtf.ru" + ], + "url": "https://dtf.ru", + "difficulty": "easy", + "notes": "Log into your account. Click on your profile picture in the top right corner (bottom right on mobile), then on \"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\". Select \"\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435\". There click on the blue \"\u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\" link at the bottom. Type your deletion reason and press the red \"\u0423\u0434\u0430\u043b\u0438\u0442\u044c\" button, then the red \"\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c\" button." + }, + { + "name": "Dunkindonuts", + "domains": [ + "dunkindonuts.com" + ], + "url": "https://www.dunkindonuts.com/en/about/contact-us", + "difficulty": "easy", + "notes": "Click Personal Information, Click Delete My Account, Confirm \u2018Yes, I want to proceed\u2019, Reason for deleting your account, Choose \u2018Other\u2019, Type: I want to delete all of my private information. Then check both boxes if you agree. First box asks: Check here if you would like Dunkin\u2019 Donuts to delete all of the personal information we have collected from you (subject to permitted exceptions). Second box: I understand that by deleting my information, I will no longer be able to use my DD Perks Account and will forfeit any accrued Perks Rewards.\u00a0Then click Next, Then confirm by clicking \u2018Delete My Account\u2019. Then you will get a confirmation page that says: Thank you for your request, this confirms that your account has been deleted! You then get an email that says it can take 48 hours to update." + }, + { + "name": "Duo", + "domains": [ + "duo.com", + "help.duo.com", + "duosecurity.com" + ], + "url": "https://help.duo.com/s/article/2162", + "difficulty": "hard", + "notes": "Delete all applications, users and other administrators in the Admin Panel according to the [support article](https://help.duo.com/s/article/2162), then contact support via email.", + "email": "support@duosecurity.com" + }, + { + "name": "Duolingo", + "domains": [ + "duolingo.com", + "drive-thru.duolingo.com" + ], + "url": "https://drive-thru.duolingo.com/", + "difficulty": "medium", + "notes": "Scroll down and click \"ERASE PERSONAL DATA\". You will receive an e-mail in which you have to click the link after \"Delete my data link:\". This confirms the erasure of your personal data and account." + }, + { + "name": "Dwell", + "domains": [ + "dwell.co.uk" + ], + "url": "https://dwell.co.uk/contactus.php", + "difficulty": "impossible", + "notes": "It\u2019s not possible to delete an account, you can either remove or replace your contact information with bogus details." + }, + { + "name": "Dwolla", + "domains": [ + "dwolla.com" + ], + "url": "https://www.dwolla.com", + "difficulty": "impossible", + "notes": "Dwolla accounts cannot be deleted, only disabled. To request deactivation of your account, contact support via email.", + "email": "support@dwolla.com" + }, + { + "name": "DWService", + "domains": [ + "dwservice.net" + ], + "url": "https://www.dwservice.net/session.dw#s", + "difficulty": "easy" + }, + { + "name": "Dynadot", + "domains": [ + "dynadot.com" + ], + "url": "https://www.dynadot.com/community/help/question/close-dynadot-account", + "difficulty": "hard", + "notes": "Deletion can only be done via email. First, you must make sure the account has no active services from Dynadot (domains, VPS or Email Hosting, SSL certificates, Website Builders, etc.). Active domains must be deleted (this takes up to 30 days), or moved to another account/registrar. Once all services have been removed, send an email to accounts@dynadot.com from your email in which the account is registered under.", + "email": "accounts@dynadot.com" + }, + { + "name": "DynDNS", + "domains": [ + "dyn.com", + "account.dyn.com" + ], + "url": "https://account.dyn.com/profile/close.html", + "difficulty": "easy" + }, + { + "name": "e621", + "domains": [ + "e621.net" + ], + "url": "https://e621.net/maintenance/user/deletion", + "difficulty": "impossible", + "notes": "Even though there is a delete option, the site states it will only change your account to a generic name and lock it. Your contributions (submissions, comments, etc) will remain." + }, + { + "name": "EA Games / Origin / Electronic Arts", + "domains": [ + "ea.com", + "help.ea.com" + ], + "url": "https://help.ea.com/help-contact-us/?product=ea-app&platform=&topic=delete-ea-account&category=manage-my-account&subcategory=delete-account", + "difficulty": "hard", + "notes": "Contact customer services to request deletion." + }, + { + "name": "EasyEDA", + "domains": [ + "easyeda.com" + ], + "url": "https://easyeda.com/account/user/account/setting/advance", + "difficulty": "easy", + "notes": "Log into easyeda.com first, then click on the provided URL. Type 'DELETE' into the input box and click the Delete button." + }, + { + "name": "easyfundraising", + "domains": [ + "easyfundraising.org.uk" + ], + "url": "https://www.easyfundraising.org.uk/account/delete-account/", + "difficulty": "easy", + "notes": "Click on 'account' on the top right, then click 'Manage your data'. Click 'Learn more' under 'Delete your account and information' section. You will be prompted to enter your password." + }, + { + "name": "easyJet", + "domains": [ + "easyjet.com" + ], + "url": "https://www.easyjet.com/en/policy/privacy-promise/request-data-form", + "difficulty": "hard", + "notes": "You have to fill out the Data protection request form on their website, providing your identification." + }, + { + "name": "EatStreet", + "domains": [ + "eatstreet.com" + ], + "url": "https://eatstreet.com/contact", + "difficulty": "hard", + "notes": "Though you can deactivate your account under \"My Account\", in order to permanently delete your account, you must contact support and request deletion at: customer.service@eatstreet.com.", + "email": "customer.service@eatstreet.com" + }, + { + "name": "EBANX", + "domains": [ + "ebanx.cl", + "ebanx.com", + "ebanx.com.bo", + "ebanx.com.br", + "ebanx.com.co", + "ebanx.com.ec", + "ebanx.com.mx", + "ebanx.com.pe" + ], + "url": "https://ebanx.com", + "difficulty": "impossible", + "notes": "Customer support says that EBANX accounts can't be deleted, as the information about user transactions (e.g: payments) may be necessary in the future for, according to them, \"legal obligations and legitimate interests\"." + }, + { + "name": "eBay", + "domains": [ + "ebay.at", + "ebay.be", + "ebay.ca", + "ebay.ch", + "ebay.co.jp", + "ebay.co.uk", + "ebay.com", + "ebay.com.au", + "ebay.com.hk", + "ebay.com.my", + "ebay.com.sg", + "ebay.com.tw", + "ar.ebay.com", + "bo.ebay.com", + "br.ebay.com", + "by.ebay.com", + "cl.ebay.com", + "cn.ebay.com", + "co.ebay.com", + "cr.ebay.com", + "do.ebay.com", + "do.ebay.com", + "ec.ebay.com", + "gt.ebay.com", + "hn.ebay.com", + "il.ebay.com", + "kz.ebay.com", + "mx.ebay.com", + "ni.ebay.com", + "pa.ebay.com", + "pe.ebay.com", + "pr.ebay.com", + "pt.ebay.com", + "py.ebay.com", + "ru.ebay.com", + "sv.ebay.com", + "uy.ebay.com", + "ve.ebay.com", + "ebay.de", + "ebay.es", + "ebay.fr", + "ebay.ie", + "ebay.in", + "ebay.it", + "ebay.nl", + "ebay.ph", + "ebay.pl", + "accountsettings.ebay.com", + "signin.ebay.com" + ], + "url": "https://accountsettings.ebay.com/uas", + "difficulty": "medium", + "notes": "Hover over name on top left, click 'Account settings', click 'Close account' under the Account preferences column, then scroll down and click 'Close account and delete my data'. Select why you are leaving from drop down and continue. Click on checkmark and then click the left button to close your account. If you want an extra safety measure, replace all of your personal info with fake info before closing the account." + }, + { + "name": "eBonus", + "domains": [ + "ebonus.gg" + ], + "url": "https://ebonus.gg/contact", + "difficulty": "hard", + "notes": "After submitting a contact form, they will ask for confirmation using email. After confirmation, account deletion takes 30 days." + }, + { + "name": "Economist", + "domains": [ + "economist.com", + "myaccount.economist.com" + ], + "url": "https://myaccount.economist.com/s/contact-us", + "difficulty": "hard", + "notes": "There are two ways to contact this website, such as calling a phone number that is based on where you reside, or use the live chat." + }, + { + "name": "Edabit", + "domains": [ + "edabit.com" + ], + "url": "https://edabit.com/challenges", + "difficulty": "easy", + "notes": "On the website, click on your avatar, click on Settings, click Account, and hit the 'Delete Account' button" + }, + { + "name": "Edizioni Simone", + "domains": [ + "simone.it", + "edizioni.simone.it", + "scuola.simone.it" + ], + "url": "https://edizioni.simone.it/informativa-sulla-privacy/", + "difficulty": "hard", + "notes": "Contact support via email and request your account to be deleted.", + "email": "privacy@simone.it" + }, + { + "name": "Edpuzzle", + "domains": [ + "edpuzzle.com" + ], + "url": "https://edpuzzle.com/profile", + "difficulty": "easy", + "notes": "Scroll the bottom of the linked page and click 'Delete account'. Student accounts can only be deleted by request of a school teacher or administrator, or after 18 months of account inactivity. See their support article for more information: https://support.edpuzzle.com/hc/en-us/articles/4407364156557-How-Do-I-Delete-My-Account-" + }, + { + "name": "Edraw Software", + "domains": [ + "edrawsoft.com", + "edrawmind.com", + "edrawmax.com" + ], + "url": "https://www.edrawsoft.com/faq/#account", + "difficulty": "hard", + "notes": "You need to contact Edraw Software support through their support center." + }, + { + "name": "eDreams", + "domains": [ + "edreams.com", + "edreams.co.uk", + "edreams.net", + "edreams.pt" + ], + "url": "https://www.edreams.co.uk/travel/secure/#accountpreferences/", + "difficulty": "easy", + "notes": "Click on \"I want to delete My Account\"." + }, + { + "name": "Educaplay", + "domains": [ + "educaplay.com" + ], + "url": "https://www.educaplay.com", + "difficulty": "easy", + "notes": "You must go to your profile, click on Account Settings and then on Delete Account" + }, + { + "name": "Edvisors/ScholarshipPoints", + "domains": [ + "edvisors.com", + "scholarshippoints.com" + ], + "url": "https://www.edvisors.com/delete-request/", + "difficulty": "hard", + "notes": "Go to the URL and fill out the form with the information associated with your account. Edvisors will respond with a confirmation email. Click the enclosed link and fill out the next form. Between a few hours and 45 days later, Edvisors should send a confirmation email that your account has been deleted." + }, + { + "name": "EdX", + "domains": [ + "edx.org", + "account.edx.org" + ], + "url": "https://account.edx.org/#delete-account", + "difficulty": "medium", + "notes": "Go to the account deletion page and select Delete Account. If you have logged in through a social media account, you'll first have to unlink them, reset your password then delete the account." + }, + { + "name": "Electroneum", + "domains": [ + "electroneum.com", + "my.electroneum.com", + "support.electroneum.com", + "electroneum.zendesk.com" + ], + "url": "https://support.electroneum.com/hc/en-gb/requests/new", + "difficulty": "hard", + "notes": "Contact the customer support using the form or via email and request the deletion of your account.", + "email": "support@electroneum.com" + }, + { + "name": "Element", + "domains": [ + "element.io", + "app.element.io" + ], + "url": "https://app.element.io/#/home", + "difficulty": "easy", + "notes": "Go to \"All Settings\" scroll all the way down, and click on Deactivate Account." + }, + { + "name": "Elevate", + "domains": [ + "elevateapp.com" + ], + "url": "https://elevateapp.com", + "difficulty": "hard", + "notes": "You must send an e-mail to hello@elevateapp.com requesting deletion. You will then receive a response from support asking for feedback and to confirm the deletion. The next e-mail you receive from support will notify you that your account has been deleted.", + "email": "hello@elevateapp.com" + }, + { + "name": "Elfster", + "domains": [ + "elfster.com" + ], + "url": "https://www.elfster.com/settings/account/", + "difficulty": "easy", + "notes": "Go to 'Account Settings' and scroll to the very bottom to see an option to delete your account." + }, + { + "name": "Ello", + "domains": [ + "ello.co" + ], + "url": "https://ello.co/wtf/help/settings/", + "difficulty": "easy", + "notes": "Quoted from Ello: Go to your Settings page and click the \u201cDelete Account\u201d link. Once you delete your account neither you, nor we, can recover it. Also note that your username may become available for another person to use." + }, + { + "name": "Elpais", + "domains": [ + "elpais.com.uy", + "registro.elpais.com.uy" + ], + "url": "https://registro.elpais.com.uy/regasistencia.asp", + "difficulty": "hard", + "notes": "Complete the form, they will send you an email where you must respond indicating the identity document." + }, + { + "name": "Elsevier", + "domains": [ + "elsevier.com" + ], + "url": "https://service.elsevier.com/app/answers/detail/a_id/30148/supporthub/ecommerce/~/how-do-i-request-deletion-of-my-elsevier.com-account", + "difficulty": "hard", + "notes": "Fill out the form with your Account name, Email and a reason for deletion request." + }, + { + "name": "Emby", + "domains": [ + "emby.media" + ], + "url": "https://emby.media/community/index.php?/settings/deletemyaccount/", + "difficulty": "easy", + "notes": "To delete your account, you must [log into the community](https://emby.media/community/index.php?/login/) (not the app)." + }, + { + "name": "Empik", + "domains": [ + "empik.com" + ], + "url": "https://www.empik.com/polityka-prywatnosci-empik", + "difficulty": "hard", + "notes": "Send an e-mail asking for the deletion.", + "email": "obsluga.klienta@empik.com" + }, + { + "name": "Engadget", + "domains": [ + "engadget.com", + "engadget.mydashboard.oath.com" + ], + "url": "https://engadget.mydashboard.oath.com/#section-manage", + "difficulty": "easy", + "notes": "Scroll down to the bottom of the page and click 'Delete Account'." + }, + { + "name": "enjin", + "domains": [ + "enjin.com" + ], + "url": "https://www.enjin.com/dashboard/account/privacy", + "difficulty": "easy", + "notes": "Scroll down and click on 'Delete Account'." + }, + { + "name": "enjoei", + "domains": [ + "enjoei.com.br" + ], + "url": "https://www.enjoei.com.br/perfil/alterar", + "difficulty": "easy", + "notes": "Scroll down on the configurations of your profile and click on 'Delete Account'. An e-mail will be sent for you to confirm the deletion by clicking a link." + }, + { + "name": "Envato", + "domains": [ + "envato.com", + "help.market.envato.com", + "themeforest.net", + "codecanyon.net", + "videohive.net", + "audiojungle.net", + "graphicriver.net", + "photodune.net", + "3docean.net", + "activeden.net" + ], + "url": "https://help.market.envato.com/hc/en-us/articles/202500394-How-Do-I-Close-My-Account-", + "difficulty": "hard", + "notes": "You have to send them a request to delete the account using the contact form." + }, + { + "name": "Epic Games", + "domains": [ + "epicgames.com" + ], + "url": "https://www.epicgames.com/help/en-US/epic-accounts-c74/general-support-c79/how-do-i-delete-my-epic-games-account-a3636", + "difficulty": "medium", + "notes": "Log in to your account. On the \"General Info\" page, scroll to the \"Delete Account\" section, request deletion and follow the steps." + }, + { + "name": "Epik", + "domains": [ + "epik.com", + "registrar.epik.com" + ], + "url": "https://www.epik.com/", + "difficulty": "hard", + "notes": "Log in to your account. Start a new chat with customer support and request the deletion of your account and personal data. Make sure you have your customer support PIN on hand." + }, + { + "name": "Epoch Times", + "domains": [ + "reader.epoch.cloud", + "epochtimes.bg", + "epochtimes.com", + "epochtimes.com.au", + "epochtimes.com.br", + "epochtimes.cz", + "epochtimes.de", + "epochtimes.fr", + "epochtimes.it", + "epochtimes.jp", + "epochtimes.nl", + "epochtimes.pl", + "epochtimes.ru", + "epochtimes.se", + "epochtimes.sk", + "epochtimes-romania.com", + "epochtimestr.com", + "epochtimesviet.com", + "erabaru.net", + "help.theepochtimes.com", + "persianepochtimes.com", + "theepochtimes.com", + "es.theepochtimes.com", + "kr.theepochtimes.com", + "theepochtimes.gr" + ], + "url": "https://help.theepochtimes.com/hc/en-us/requests/new", + "difficulty": "hard", + "notes": "Send a request to customer support demanding for the deletion of your account." + }, + { + "name": "eProject.me", + "domains": [ + "eproject.me" + ], + "url": "https://eproject.me", + "difficulty": "hard", + "notes": "Send an e-mail asking for the deletion.", + "email": "services@eproject.me" + }, + { + "name": "eRepublik", + "domains": [ + "erepublik.com" + ], + "url": "https://www.erepublik.com/en/contact/none/none", + "difficulty": "hard", + "notes": "Create new Game Support ticket to request account removal." + }, + { + "name": "ESPN", + "domains": [ + "espn.com" + ], + "url": "https://www.espn.com", + "difficulty": "easy", + "notes": "At the bottom of the account settings page there is a Remove Account button" + }, + { + "name": "eToro", + "domains": [ + "etoro.com" + ], + "url": "https://www.etoro.com/settings/account", + "difficulty": "easy", + "notes": "At the bottom of the page, click the button to close your account, select the reason for your deletion and continue to confirm it." + }, + { + "name": "Etsy", + "domains": [ + "etsy.com" + ], + "url": "https://www.etsy.com/your/account/privacy", + "difficulty": "easy", + "notes": "Click on 'Request deletion of your data' and then 'Yes, I'm sure'. You'll receive an e-mail with a link to finish the process." + }, + { + "name": "Even", + "domains": [ + "even.com" + ], + "url": "https://www.even.com/employees/support", + "difficulty": "easy", + "notes": "Head to the account information page (Profile \u2b95 App settings \u2b95 Account info) and click on \"Delete your Even account & data\"." + }, + { + "name": "Eventbrite", + "domains": [ + "eventbrite.com" + ], + "url": "https://www.eventbrite.com/account-close", + "difficulty": "easy" + }, + { + "name": "Eventim", + "domains": [ + "eventim.de" + ], + "url": "https://www.eventim.de/help/contact/?help_id=6306", + "difficulty": "hard", + "notes": "Search for Account, select question 'How can I delete my account', then click on 'This answer was not helpful'. A ticket will be opened." + }, + { + "name": "Everhelper", + "domains": [ + "everhelper.me" + ], + "url": "https://www.everhelper.me/remove-account/", + "difficulty": "easy" + }, + { + "name": "Evernote", + "domains": [ + "evernote.com", + "dev.evernote.com", + "help.evernote.com" + ], + "url": "https://help.evernote.com/hc/en-us/articles/360056549574-Permanently-close-your-Evernote-account", + "difficulty": "easy", + "notes": "Sign in to account settings, click 'Account Status', click 'Close your Evernote Account', read carefully and accept." + }, + { + "name": "Evite", + "domains": [ + "evite.com" + ], + "url": "https://privacyportal-cdn.onetrust.com/dsarwebform/516d7c8e-88ca-4311-b9d9-a6a1aa23be02/5eb62c40-d057-4621-93ca-9842142c3443.html", + "difficulty": "hard", + "notes": "Go to the URL, select 'Delete My Info' as the request type, and fill out the form with your account information. Open the email they send you and confirm. Wait a few days while they review your request. You should eventually receive email confirmation that your account was deleted, after which your login credentials will no longer work." + }, + { + "name": "Exercism", + "domains": [ + "exercism.io" + ], + "url": "https://exercism.io/my/settings", + "difficulty": "easy", + "notes": "Login and click 'Delete my Account'. Then click again on the next page to confirm deletion." + }, + { + "name": "Expedia", + "domains": [ + "expedia.com", + "expedia.co.uk", + "expedia.de", + "expedia.fr" + ], + "url": "https://www.expedia.com/service/#/articles/396/25/12395", + "difficulty": "hard", + "notes": "Contact support via the live chat or the contact form and request the deletion of your account." + }, + { + "name": "Experian", + "domains": [ + "experiandirect.com" + ], + "url": "https://www.experian.com", + "difficulty": "hard", + "notes": "You have to call or email them. They respond to email quickly, however, so it is not that painful.", + "email": "support@experian.com" + }, + { + "name": "Experian UK", + "domains": [ + "experian.co.uk", + "prodmove.experian.co.uk" + ], + "url": "https://prodmove.experian.co.uk/", + "difficulty": "easy", + "notes": "Head to 'Your Subscriptions' and click the 'Close your Experian Account' button. This will cancel any subscriptions and closes your account." + }, + { + "name": "Expo", + "domains": [ + "expo.dev" + ], + "url": "https://expo.dev/settings", + "difficulty": "easy", + "notes": "On the settings page, scroll down to the bottom of the page and follow the steps under 'Delete your account'." + }, + { + "name": "ExpressVPN", + "domains": [ + "expressvpn.com" + ], + "url": "https://www.expressvpn.com/support/", + "difficulty": "hard", + "notes": "You must either go through live support on the support page and specifically request the deletion of your account or write an e-mail from the registered address. Either way you will probably be asked to confirm again by mail.", + "email": "support@expressvpn.zendesk.com", + "email_subject": "Request to Delete my Account", + "email_body": "To whom it may concern,%0D%0A%0D%0AI am reaching out to you to request the cancellation and deletion of the ExpressVPN account attached to this Email address and its data as I am no longer using the service.%0D%0A%0D%0ABest Regards" + }, + { + "name": "EZsniper", + "domains": [ + "ezsniper.com" + ], + "url": "https://www.ezsniper.com/contact.php", + "difficulty": "hard", + "notes": "You have to fill in the contact form with the appropriate details, then in the body request for the deletion of your account and all data attached." + }, + { + "name": "Facebook", + "domains": [ + "facebook.com" + ], + "url": "https://www.facebook.com/help/delete_account?rdrhc", + "difficulty": "medium", + "notes": "While you can delete your account easily, some of the data including messages, are there to stay forever, just as stated in the website's privacy policy." + }, + { + "name": "Facebook Messenger", + "domains": [ + "messenger.com" + ], + "url": "https://www.facebook.com/help/messenger-app/458908261952384?cms_platform=android-app&helpref=platform_switcher", + "difficulty": "easy", + "notes": "If you logged in with your Facebook account, you can just delete that account. If you registered using your phone number, go to your account settings and tap on Delete Your Account and Information." + }, + { + "name": "Faceit", + "domains": [ + "faceit.com", + "support.faceit.com/" + ], + "url": "https://support.faceit.com/hc/en-us/requests/new", + "difficulty": "hard", + "notes": "See ['How do I get my personal details deleted on FACEIT?'](https://support.faceit.com/hc/en-us/articles/360001449004-How-do-I-get-my-personal-details-deleted-on-FACEIT-)" + }, + { + "name": "Facile.it", + "domains": [ + "facile.it" + ], + "url": "https://www.facile.it/cancellazione/", + "difficulty": "easy" + }, + { + "name": "Fairphone", + "domains": [ + "fairphone.com" + ], + "url": "https://www.fairphone.com/en/legal/fairphone-privacy-policy/#yourresponsibilitiesandrights", + "difficulty": "hard", + "notes": "Need to email privacy@fairphone.com and ask for your account to be deleted. Takes around 14 working days for the account to be deleted.", + "email": "privacy@fairphone.com" + }, + { + "name": "FamilySearch", + "domains": [ + "familysearch.org" + ], + "url": "https://www.familysearch.org/identity/settings/account", + "difficulty": "easy", + "notes": "Go into your account settings and then click \"Delete Account\" at the bottom of the page." + }, + { + "name": "Fanatical", + "domains": [ + "fanatical.com", + "support.fanatical.com" + ], + "url": "https://www.fanatical.com/en/account/login", + "difficulty": "easy", + "notes": "Visit the linked page and click 'Delete Account'." + }, + { + "name": "Fandom Wikia", + "domains": [ + "fandom.wikia.com", + "community.wikia.com" + ], + "url": "https://community.wikia.com/wiki/Special:CloseMyAccount", + "difficulty": "medium", + "notes": "Click on 'Close my account'. Disables the account but cannot delete user data completely. Retains user contributions and username is not released." + }, + { + "name": "FanFiction", + "domains": [ + "fanfiction.net" + ], + "url": "https://www.fanfiction.net/account/data_delete.php", + "difficulty": "hard", + "notes": "On the linked page, copy the provided code and send it to support@fanfiction.com using the email you registered with. Staff will respond and delete your account within 24 hours.", + "email": "support@fanfiction.com" + }, + { + "name": "FastWeb", + "domains": [ + "fastweb.com" + ], + "url": "https://www.fastweb.com/login", + "difficulty": "easy", + "notes": "Go to the URL and log in with your credentials. Go to 'My Account' \u2b95 'Account' and select 'Delete My Account'. Answer 'Yes' to the prompt. FastWeb will immediately log you out, and your credentials will no longer work." + }, + { + "name": "Fauna", + "domains": [ + "fauna.com", + "support.fauna.com" + ], + "url": "https://support.fauna.com/hc/en-us/articles/1260807007229-How-do-I-delete-my-account-entirely-", + "difficulty": "hard", + "notes": "In the Fauna dashboard, create a new database named 'delete-request-{today's date in DDMMYYY}'. Then open a support ticket to request deletion." + }, + { + "name": "FDM Group", + "domains": [ + "fdmgroup.com" + ], + "url": "https://www.fdmgroup.com/privacy/", + "difficulty": "hard", + "notes": "Send an email to them.", + "email": "DPO@FDMGroup.com" + }, + { + "name": "FedEx", + "domains": [ + "fedex.com" + ], + "url": "https://privacyportal.onetrust.com/webform/8a471a7b-6a52-49d0-bcb0-fa8bdb61598f/c121cce6-6cfb-4c3d-9b61-334f56a01b5f", + "difficulty": "hard", + "notes": "You will be asked to upload photo ID after the initial form submission. Alternatively, you can call customer service to have your user ID deleted." + }, + { + "name": "Fedora", + "domains": [ + "fedoraproject.org", + "accounts.fedoraproject.org", + "discussion.fedoraproject.org", + "pagure.io" + ], + "url": "https://pagure.io/fedora-pdr/new_issue", + "difficulty": "hard", + "notes": "Create a new issue and ask for your account to be deleted." + }, + { + "name": "FeedBin", + "domains": [ + "feedbin.com" + ], + "url": "https://feedbin.com/settings/account", + "difficulty": "easy", + "notes": "At the bottom of the linked page, click 'Cancel Account'." + }, + { + "name": "Feedly", + "domains": [ + "feedly.com" + ], + "url": "https://feedly.com/i/erase", + "difficulty": "easy", + "notes": "Log in and click the 'Delete Account' button." + }, + { + "name": "Ferox Hosting", + "domains": [ + "feroxhosting.nl", + "tickets.feroxhosting.nl" + ], + "url": "https://tickets.feroxhosting.nl/newissue", + "difficulty": "hard", + "notes": "You have to create a ticket regarding account deletion and you will be asked to prove ownership of the account." + }, + { + "name": "Fever", + "domains": [ + "feverup.com" + ], + "url": "https://feverup.com/", + "difficulty": "easy", + "notes": "On the app, tap 'profile' at the bottom right, then the gear icon at the upper right, scroll to the end and click 'Delete Account'. State the reason why and confirm. Deletion is immediate" + }, + { + "name": "Figma", + "domains": [ + "figma.com" + ], + "url": "https://www.figma.com/", + "difficulty": "easy", + "notes": "Log in, click on your profile picture in the top right of the header, click on 'Settings', scroll down to the accout section, click on 'Delete account', re-enter your account password, type 'delete my account' into the dialog box, and click on 'Delete account'." + }, + { + "name": "Fin.do", + "domains": [ + "fin.do" + ], + "url": "https://www.fin.do/support", + "difficulty": "hard", + "notes": "Request account deletion via the contact form." + }, + { + "name": "Finanzblick", + "domains": [ + "finanzblick.de" + ], + "url": "https://finanzblick.de/webapp", + "difficulty": "medium", + "notes": "Click on your username (top left) \u2b95 click on 'Profileinstellungen' \u2b95 'Account l\u00f6schen'. All data is fully erased." + }, + { + "name": "FinnishPod101.com", + "domains": [ + "finnishpod101.com" + ], + "url": "https://www.finnishpod101.com/#privacy_policy", + "difficulty": "hard", + "notes": "Account deletion requires contacting Customer Support.", + "email": "contactus@finnishpod101.com" + }, + { + "name": "Firefox", + "domains": [ + "addons.mozilla.org", + "accounts.firefox.com" + ], + "url": "https://accounts.firefox.com/settings/delete_account", + "difficulty": "easy", + "notes": "\u201cCancel your account\u201d link at the bottom of the page." + }, + { + "name": "Fitbit", + "domains": [ + "fitbit.com" + ], + "url": "https://www.fitbit.com/settings/profile", + "difficulty": "medium", + "notes": "From the dashboard website, click 'Settings', then scroll down and click 'Delete Account'. You'll receive an e-mail with the link for the actual deletion." + }, + { + "name": "FitnessSyncer", + "domains": [ + "fitnesssyncer.com" + ], + "url": "https://www.fitnesssyncer.com/account#Profile", + "difficulty": "easy", + "notes": "Login, click profile link, scroll down to delete and confirm." + }, + { + "name": "Fitocracy", + "domains": [ + "fitocracy.com" + ], + "url": "https://www.fitocracy.com/account/deletion/", + "difficulty": "easy" + }, + { + "name": "Fiverr", + "domains": [ + "fiverr.com" + ], + "url": "https://www.fiverr.com/support_tickets/new/account_and_security", + "difficulty": "hard", + "notes": "For each checkbox, choose:

zyHFYkcN$-u-#kW5B-YI>;vCuyzL1Nusd1NWlNtAW%@v2-Khzy3DvbPAxOZ?(8RvTIChuv3NF)WHSt`N|^TF`Kk{4Cdz-$ z10Y=4Xt*Nr`T8_B+!lkrTk{Vsd<7^TVw=`l`ug&O zK5ZLYkPHU5z)(**8A_Mlan7-S{mKrt5~j90(AkV;H4tnV0PFkcx$WcWPt1#uc z=sUt!_U2CvLB4JDps!Y7%05$_gHi16SF7pR>|Lbg8W>2+BqcWLsXrot851dL6A-gHu>#14z8=)KikD>V(>!| zEYK$hz*0WU+avW}!!o}W-{xVUg7p&QW`VQxeE7F>*^LL)N!G+U$M#H8uu>NGo5|RY zmJ;A2ZHze3{aYE^__2Cd82O{8*ONfz#Qb^Hx+C_VxwsS#aScs3t((Jv*xfQ}Hf+t= ztFE2bsPm(rkGK`$cIV5Xi+Ra-6ZYP((eQ)5Tt-@Tq6IbjDEItaBv%C>J>tAqFaD}f zM{}$NvJszMRQS38eWF?BkYGDmT2;<}u{64(vP8Nd6jlM79-EwKk$PwnCVJ$o=OVA= zu}mwuZhVOrkJhK_xILLJi=ajwTe;GzPqTRNw7NWnluQotk2QE2TRaN|Rt_O;&w52_ zfBw9t_bnbIiUK51JWHuDW8br5NPxf2A5g%@W|Y0nm4u{3P=vYoZz3nrO#={+uOx)< zP5i|AVZx;t^Loobfh1N49Uru>o|i~}M|W4EtcS(7o&Hf&(rqy&+nSxr@V@8={>_m#h7o zy4%<~n}Um-#>=9~_4ET8;|F7&UE@c^UdHSMfZ%{h@ge0@A*LJt5ZFVMQ(W^;r#Ks4 zI9nqH@Yh6Kck~M23uULz@?XOzPkBX%1I~8)U~;;Pr&yp8cQsIRJ(#|)l*)c8FyHN| zmMu_2*RTiNn5TFXwZ7!f)vD0H>2Mcr`K|9kt(h8gUs73ow&iR!+zVI`SZxZQ@@B< z?_$Co4+i{!ZcF4&H+wu=woA`y8Y0(YoGK`rfL5qH%P1)&*?h86aOGC)+uPkg+jZS@ zV8A6}1fn;eAA`fr=2Uqg4d9)_`L zT&CRvm3+JFYahEd!@Saq-81jz3FbFPuQ=}Y>ZTslKV0~nf<62g`^PHJ_0Q~D;#oNe zgI+F(J3yUpVmFlROY(%C=2+?Y+)d{3afIu7S;^iphUcW=LQd##CACb+snNLQM|I;8 za0>F}A43U1PN^M7F-9k?L)J4^i8^NLZ^lPQ1KRh-j4bA<8R)>`gK_F^?JmSp;ZM76 zE(gnuoc5e@UuAk+v$t;~rSu@e8AKTn4y#*(CB~}-d8kdy2f`f~2fkr;QJj7a8j76x zYZWCiHzSY!H2-v?)LN3*?Ou4X*B-K`ls?u8hgtQ>mmvK0}zFEC-Aj^Er&l<^ZP=Dw1=XeEL7 z+Ge+Qw0~ex^;=M5rmW*y4}$iNjqcgGDY=kk2fXTX42g+>l-zk2h~S= znMP-&4|2K8S+Qms{xsKCI`-hH*}NNG$RI#h&JXLm01tODx$%%VyTw!(z*z z&V==+F#}{h94fJXmTYu!a65S3jh_ae2+=0_QS)ut{iF%qk{2-xyYhm(e(f|RrH9Qq z_s;G#f|`zsfWNZk5}8qf(BygOl7=3yt7jqCvYv{h1~p#loQczjJC@`upUH*gPneC> zgFx(@SkIESi8k@o$+SGz_iK4pX4wR`HoR6Zn|Ir|y%+js_&e5qyBv>OH`D+pkIKo7 zP~RCaf!($adDh2MglQhL0oJdZh5B5E<^%ng1q-!PXEnSp5Zou@DTC)n_>-^Z*rW5` z(MFDsw(3Z07(sL=DabPXX?Tzb_PH6Z>pfM~b) z0+q6!@*v+Br1d;{dGTPO-&uWBwOukDViv8+4kwm*qLa@Nhf2Vl3%z18ej#nY5q)1rhg zL4Sy!fxhB@eHP~S8*msUklnT|wH+SV;j}!R2UN8F(NN`h*y` zowK%vjE(nB2+Zb9gGs1F25h^XT8?7KvZ*6ZlalaW9N!XsNBO(XZ=3EHK`n{G*j((QX9u|{?w?d`qynfGj8TMK`4rSHm zVAbHPOP)hcXV05&!agA>5b%fRZYUv3_mk~?{QK~$-i_Oc8z?aU-6(N3ATDF z+p*0a`3-jcVMfLl1{1?(fSWJ&n+{M!ROOY>?>dW-Etj-XufAcA&!x?l!1Z)D8<|ij zDWp$O->=bfL`Ig6_B3>_-MS&96V|$n``n((QX{{8B+&-!YO418dC<<`;~kR4gJK_= z@EJ^0fw99Hr9h!>D*B>v;;4hS_@ksVt90S0vb%8!{OmZ<%<*XU$)k3D4&5s20MHtvyE5=BI+CTK!|%Agt_z;#cUDl>MA+1bxz%Zvx^2XPACS$d+4@J|L#;Fo1Vn<^&@PM*1NmDAa?oXHY~{+%X9{L1&sm%(ZVdo z6Xcc32JCioq)O<rt*EI7lGa_QTRKbWO{?hk zfxY5$ZKn#+(garxdUQ3wkBVm_=>wbRiZKJ};RCZ(-svVS(L&@laR!e)F=y5;6F)YQ zAdqZ0-WyPC24%NA#e}&R+6~!jm~CThY&EqhK@?qsJb{QJcA4jFtzXf2EHIU4<;N1U zwHtpD(m$>Z!{@zMYGrfU0p`oL%A;&-`{m5JXbAHH{3wm(7yQ;J(y8L=+AT;pjd=X* zQ8QB2_>GP(JnLQIHjJ(-!B36YP_sa+fblwH1Qv(H&`Zuk>vn>-Iu7nU#H6>!s29Zv z3u}*=*~DoI5()(j6vnAlnJu8YNETZSZ}r><#N*Y&G|+k=P`oJCGmxwbI!04bok^Y~ zJ8=)WuB%-+y=iaj$g4}wsd2N5?w>H17nS{OkOKk{ntgo#RxR0fjdW6V>D6fa7&N3& zu-eWJg}JedCS+W?a&v&y0s^6X1!&QtM%SkH=L&uL=q`8;s@1sBSP8L(P>h?wbW?+$ zQfYEnFUO#IO~-6fSw*TU`#93j2u02fhuR_}OJcW}e$SPBdB0QMQpE{M+6=fQ=R*ti zCaGGGRz+i!x4YiQGDO-(p06I=QB^_bZ@89K54OMmN7@30EE|zK?_$1PD!=TMu5irJoypyeiKfiM; zP=qzTC&)>toiG_uXJTS(aW_;1?)XYwAMkqSoM09@m9}p?(k*wdO4djWJ8L%;;6CPT zMUhooX9Hi?PBRn3T60UF;LFTrO7H9gPomTtF52XtmV~;-@9IH)qqUo5B}Z8ifxqDw zW7>4tkdFSHDHfNMIkFZ#@8Odap6 z@noiebu4N?j6Bxx{5kj<*m_uGfbG!+juIAKuYwFz{U?iGCKnX>F|~FLPUGjt?+Uay zD)&YVf6fm6eimTsuv?2_2LNaf015qmV5#W!*tP}Qy=H<8l`Z}#In2i-`0L_7_i9MJ zAtI}*YUIjTTD(hW?cOaH zriB|+LOM1&YSN@CFRxD-K5M}C6}xn+cpIAzm(A|-eGb$La8`>OIAcr}4{3#yT_8eZ z4sBybj?V0%^{|pH?iT?8vx4(aVhz0{CKoKoU|R8*U^Y5YTR+}xW|yJY3O#fjjDcGoaijED5f^D zDqQ4-LgstlU!q(=#A&B;d10(4V{yhyuPT3x_vx0GvY>A*YzdiCeJXa)>9A>a|7CRw z(uuEAgXc1b7p?14S$+>de`+q-OE2NzO^g-Jr!H#1U*EtbPIB+8k^DpW(}z(I)e$d9 z&M2yZvBGwWN(6z-&S_>Zx-Y~dRydr4U@WLktHo=ebZqlA2H=*_3P2H`fSKPOveT3| zLOjS{v<<%0Jue8hho-d!FasXlhuB^Q{h!khZ*RFZD6>Z(s=A5%GZtEny!qbH$!dmI z#k2OV&sSGWC`GEdMAruWs+ucSR&qWi7Kgd+esMk+c=Jq`6?4gL(CUZ&e^&4`mV5r z-)V@_E+SEouhSatVTLK&vCDZ}toXiWR~FemZH43_hy0tC2kg3YOylQw91nGdlVe2nTWM zVu(P#nFCZnk7|X8G#=-9Pfd%O3zaWeAbY<@K(3Fy4tiCzd9ZP!Ma$6ckSlDLHf^^o zzqu@VBCvMc6&nX+kM;QP*QWBO#ba)s)L})Oo_^)lzVI(Cgt4BK&;9N3!05*<^Iij!zKAAv*^t~Z~woK|2HlFTMqx*C7}Opga2)V|IfAo a8uLgOrLt;gwge0u^ifjbebKv5pZ_1(cVplH literal 0 HcmV?d00001 diff --git a/artwork/vector.svg b/artwork/vector.svg new file mode 100644 index 00000000..55912e3e --- /dev/null +++ b/artwork/vector.svg @@ -0,0 +1,42 @@ + + + don't-edit-combined-layers + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 00000000..4f335f5c --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,133 @@ +// Top-level build file where you can add configuration options common +// to all sub-projects/modules. +buildscript { + repositories { + google() + mavenCentral() + } +} + +// This is necessary to avoid the plugins to be loaded multiple times +// in each subproject's classloader. +plugins { + alias(libs.plugins.android.application) apply false + alias(libs.plugins.android.library) apply false + alias(libs.plugins.android.test) apply false + alias(libs.plugins.baseline.profile) apply false + alias(libs.plugins.kotlin.dsl) apply false + alias(libs.plugins.kotlin.multiplatform) apply false + alias(libs.plugins.kotlin.android) apply false + alias(libs.plugins.kotlin.jvm) apply false + alias(libs.plugins.kotlin.kapt) apply false + alias(libs.plugins.kotlin.plugin.parcelize) apply false + alias(libs.plugins.kotlin.plugin.serialization) apply false + alias(libs.plugins.compose) apply false + alias(libs.plugins.ktlint) apply false + alias(libs.plugins.ksp) apply false + alias(libs.plugins.google.services) apply false + alias(libs.plugins.crashlytics) apply false + alias(libs.plugins.sqldelight) apply false + alias(libs.plugins.buildkonfig) apply false + alias(libs.plugins.moko) apply false + alias(libs.plugins.license.check) apply false + alias(libs.plugins.versions) apply true + alias(libs.plugins.version.catalog.update) apply true +} + +subprojects { + if ( + name == "androidApp" || + name == "desktopApp" + ) { + apply(plugin = rootProject.libs.plugins.license.check.get().pluginId) + + configure { + allow("Apache-2.0") + allow("MIT") + allow("EPL-1.0") + allow("CC0-1.0") + allow("BSD-2-Clause") + + // + // Android + // + + allowUrl("https://developer.android.com/studio/terms.html") { + because("Android Developers") + } + allowUrl("https://developer.android.com/guide/playcore/license") { + because("Android Developers") + } + allowUrl("https://developers.google.com/ml-kit/terms") { + because("Google Developers") + } + + // + // Self-hosted + // + + allowUrl("https://github.com/devsrsouza/compose-icons/blob/master/LICENSE") { + because("MIT License, but self-hosted copy of the license") + } + allowUrl("https://www.bouncycastle.org/licence.html") { + because("MIT License, but self-hosted copy of the license") + } + allowUrl("https://spdx.org/licenses/MIT.txt") { + because("MIT License, but self-hosted copy of the license") + } + allowUrl("https://opensource.org/licenses/mit-license.php") { + because("MIT License, but self-hosted copy of the license") + } + allowUrl("https://github.com/icerockdev/moko-resources/blob/master/LICENSE.md") { + because("Apache License-2.0, but self-hosted copy of the license") + } + allowUrl("https://github.com/icerockdev/moko-graphics/blob/master/LICENSE.md") { + because("Apache License-2.0, but self-hosted copy of the license") + } + allowUrl("https://github.com/icerockdev/moko-parcelize/blob/master/LICENSE.md") { + because("Apache License-2.0, but self-hosted copy of the license") + } + allowUrl("https://github.com/WonderzGmbH/nativefiledialog-java/blob/master/LICENSE") { + because("zlib License, but self-hosted copy of the license") + } + allowDependency("com.github.AChep", "bindin", "1.4.0") { + because("MIT License, but self-hosted copy of the license") + } + allowDependency("com.mayakapps.compose", "window-styler", "0.3.2") { + because("MIT License, but self-hosted copy of the license") + } + allowDependency("com.mayakapps.compose", "window-styler-jvm", "0.3.2") { + because("MIT License, but self-hosted copy of the license") + } + allowDependency("commons-logging", "commons-logging", "1.0.4") { + because("Apache License-2.0, but self-hosted copy of the license") + } + allowDependency("com.github.jai-imageio", "jai-imageio-core", "1.4.0") { + // https://github.com/jai-imageio/jai-imageio-core/blob/master/LICENSE.txt + because("Sun Microsystems, Inc") + } + allowDependency("com.ibm.icu", "icu4j", "73.1") { + because("UNICODE LICENSE V3") + } + + // + // Other + // + + allowUrl("https://www.zetetic.net/sqlcipher/license/") { + because("BDS-like License") + } + allowUrl("http://www.bouncycastle.org/licence.html") { + because("MIT-like License") + } + } + } +} + +allprojects { + apply(plugin = rootProject.libs.plugins.ktlint.get().pluginId) + + configure { + version.set(rootProject.libs.versions.ktlint.get()) + } +} diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts new file mode 100644 index 00000000..1ef563e3 --- /dev/null +++ b/buildSrc/build.gradle.kts @@ -0,0 +1,4 @@ +plugins { + alias(libs.plugins.kotlin.dsl) +} + diff --git a/buildSrc/settings.gradle.kts b/buildSrc/settings.gradle.kts new file mode 100644 index 00000000..22f07148 --- /dev/null +++ b/buildSrc/settings.gradle.kts @@ -0,0 +1,14 @@ +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + maven(url = "https://jitpack.io") + maven(url = "https://maven.pkg.jetbrains.space/public/p/compose/dev") + } + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } +} diff --git a/buildSrc/src/main/kotlin/VersionCode.kt b/buildSrc/src/main/kotlin/VersionCode.kt new file mode 100644 index 00000000..63f5fd9c --- /dev/null +++ b/buildSrc/src/main/kotlin/VersionCode.kt @@ -0,0 +1,38 @@ +import org.gradle.api.Project +import java.text.SimpleDateFormat +import java.util.Calendar +import java.util.Date +import java.util.TimeZone + +data class VersionInfo( + val marketingVersion: String, + val logicalVersion: Int, + val buildDate: String, +) + +fun Project.createVersionInfo( + marketingVersion: String, + logicalVersion: Int, // max 9999 +): VersionInfo { + val dateFormat = SimpleDateFormat("yyyyMMdd") + val calendar = Calendar.getInstance().apply { + timeZone = TimeZone.getTimeZone("UTC") + time = project.properties["versionDate"] + ?.let { it as? String } + ?.let { date -> + dateFormat.timeZone = TimeZone.getTimeZone("UTC") + dateFormat.parse(date) + } + ?: Date() // fallback to 'now' + } + // Max date: + // (999 * 500 + 356) * 10000 + 9999 + val codeVersion = + ((calendar.get(Calendar.YEAR) % 1000) * 500 + calendar.get(Calendar.DAY_OF_YEAR)) * 10000 + logicalVersion + val buildDate = dateFormat.format(calendar.time) + return VersionInfo( + marketingVersion = marketingVersion, + logicalVersion = codeVersion, + buildDate = buildDate, + ) +} diff --git a/common/build.gradle.kts b/common/build.gradle.kts new file mode 100644 index 00000000..8c79af0f --- /dev/null +++ b/common/build.gradle.kts @@ -0,0 +1,287 @@ +import com.codingfeline.buildkonfig.compiler.FieldSpec.Type.INT +import com.codingfeline.buildkonfig.compiler.FieldSpec.Type.STRING +import java.text.SimpleDateFormat +import java.util.* + +plugins { + alias(libs.plugins.kotlin.multiplatform) + alias(libs.plugins.android.library) + alias(libs.plugins.kotlin.plugin.parcelize) + alias(libs.plugins.kotlin.plugin.serialization) + alias(libs.plugins.ksp) + alias(libs.plugins.ktlint) + alias(libs.plugins.buildkonfig) + alias(libs.plugins.moko) + alias(libs.plugins.sqldelight) + alias(libs.plugins.compose) +} + +// +// Obtain the build configuration +// + +val versionInfo = createVersionInfo( + marketingVersion = libs.versions.appVersionName.get(), + logicalVersion = libs.versions.appVersionCode.get().toInt(), +) + +kotlin { + androidTarget() + jvm("desktop") + + sourceSets { + all { + languageSettings.optIn("kotlin.ExperimentalStdlibApi") + languageSettings.optIn("kotlin.time.ExperimentalTime") + languageSettings.optIn("androidx.compose.animation.ExperimentalAnimationApi") + languageSettings.optIn("androidx.compose.material.ExperimentalMaterialApi") + languageSettings.optIn("androidx.compose.foundation.ExperimentalFoundationApi") + languageSettings.optIn("androidx.compose.foundation.layout.ExperimentalLayoutApi") + languageSettings.optIn("androidx.compose.material3.ExperimentalMaterial3Api") + } + } + + sourceSets { + val commonMain by getting { + dependencies { + implementation(compose.runtime) + implementation(compose.foundation) + implementation(compose.material) + implementation(compose.material3) + implementation(compose.materialIconsExtended) + @OptIn(org.jetbrains.compose.ExperimentalComposeLibrary::class) + implementation(compose.components.resources) + + api(libs.kdrag0n.colorkt) + api(libs.kotlinx.coroutines.core) + api(libs.kotlinx.collections.immutable) + api(libs.kotlinx.datetime) + api(libs.kotlinx.serialization.json) + api(libs.kotlinx.serialization.cbor) + api(libs.arrow.arrow.core) + api(libs.arrow.arrow.optics) + api(libs.kodein.kodein.di) + api(libs.kodein.kodein.di.framework.compose) + api(libs.ktor.ktor.client.core) + api(libs.ktor.ktor.client.logging) + api(libs.ktor.ktor.client.content.negotiation) + api(libs.ktor.ktor.client.websockets) + api(libs.ktor.ktor.serialization.kotlinx) + api(libs.cash.sqldelight.coroutines.extensions) + api(libs.halilibo.richtext.ui.material3) + api(libs.halilibo.richtext.commonmark) + api(libs.devsrsouza.feather) + } + } + + // Share jvm code between different JVM platforms, see: + // https://youtrack.jetbrains.com/issue/KT-28194 + // for a proper implementation. + val jvmMain by creating { + dependsOn(commonMain) + dependencies { + implementation(libs.nulabinc.zxcvbn) + implementation(libs.commons.codec) + implementation(libs.bouncycastle.bcpkix) + implementation(libs.bouncycastle.bcprov) + implementation(libs.ricecode.string.similarity) + implementation(libs.google.zxing.core) + // SignalR + implementation(libs.microsoft.signalr) + implementation(libs.microsoft.signalr.messagepack) + // ...implicitly added by SignalR, so we might as well opt-in + // for the latest and 'best-est' version. + implementation(libs.squareup.okhttp) + implementation(libs.squareup.logging.interceptor) + api(libs.ktor.ktor.client.okhttp) + } + } + + val desktopMain by getting { + dependsOn(jvmMain) + dependencies { + implementation(compose.desktop.currentOs) + implementation(libs.kotlinx.coroutines.swing) + implementation(libs.google.zxing.javase) + implementation(libs.harawata.appdirs) + implementation(libs.commons.lang3) + api(libs.cash.sqldelight.sqlite.driver) + api(libs.kamel.image) + api(libs.mayakapps.window.styler) + api(libs.wunderbox.nativefiledialog) + api(libs.willena.sqlite.jdbc) + } + } + val androidMain by getting { + dependsOn(jvmMain) + dependencies { + api(platform(libs.firebase.bom.get())) + api(libs.firebase.analytics.ktx) + api(libs.firebase.crashlytics.ktx) + api(libs.achep.bindin) + api(libs.androidx.activity.compose) + api(libs.androidx.appcompat) + api(libs.androidx.autofill) + api(libs.androidx.biometric.ktx) + api(libs.androidx.browser) + api(libs.androidx.core.ktx) + api(libs.androidx.core.splashscreen) + api(libs.androidx.credentials) + api(libs.androidx.datastore) + api(libs.androidx.lifecycle.livedata.ktx) + api(libs.androidx.lifecycle.process) + api(libs.androidx.lifecycle.runtime.ktx) + api(libs.androidx.lifecycle.viewmodel.ktx) + api(libs.androidx.room.ktx) + api(libs.androidx.room.runtime) + api(libs.androidx.security.crypto.ktx) + api(libs.androidx.camera.core) + api(libs.androidx.camera.camera2) + api(libs.androidx.camera.lifecycle) + api(libs.androidx.camera.view) + api(libs.androidx.camera.extensions) + api(libs.androidx.work.runtime) + api(libs.androidx.work.runtime.ktx) + api(libs.androidx.profileinstaller) + api(libs.android.billing.ktx) + api(libs.android.billing) + api(libs.glide.annotations) + api(libs.glide.glide) + api(libs.landscapist.glide) + api(libs.landscapist.placeholder) + api(libs.tony19.logback.android) + api(libs.google.accompanist.drawablepainter) + api(libs.google.accompanist.navigation.material) + api(libs.google.accompanist.systemuicontroller) + api(libs.google.accompanist.permissions) + api(libs.google.play.review.ktx) + api(libs.google.play.services.base) + api(libs.google.play.services.mlkit.barcode.scanning) + api(libs.squareup.okhttp) + api(libs.squareup.logging.interceptor) + api(libs.ktor.ktor.client.okhttp) + api(libs.mm2d.touchicon.http.okhttp) + api(libs.mm2d.touchicon) + api(libs.sqlcipher.android) + api(libs.kotlinx.coroutines.android) + api(libs.kodein.kodein.di.framework.android.x.viewmodel.savedstate) + api(libs.slf4j.api) + api(libs.html.text) + api(libs.yubico.yubikit.android) + api(libs.cash.sqldelight.android.driver) + api(libs.fredporciuncula.flow.preferences) + } + } + } +} + +android { + compileSdk = libs.versions.androidCompileSdk.get().toInt() + namespace = "com.artemchep.keyguard.common" + + defaultConfig { + minSdk = libs.versions.androidMinSdk.get().toInt() + } + + compileOptions { + isCoreLibraryDesugaringEnabled = true + } + + ksp { + arg("room.schemaLocation", "$projectDir/schemas") + } + + buildFeatures { + buildConfig = true + } + + sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml") + sourceSets["main"].res.srcDirs("src/androidMain/res") + + val accountManagementDimension = "accountManagement" + flavorDimensions += accountManagementDimension + productFlavors { + maybeCreate("playStore").apply { + dimension = accountManagementDimension + buildConfigField("boolean", "ANALYTICS", "false") + } + maybeCreate("none").apply { + dimension = accountManagementDimension + buildConfigField("boolean", "ANALYTICS", "false") + } + } +} + +kotlin { + jvmToolchain(libs.versions.jdk.get().toInt()) +} + +// Generate KSP code for the common code: +// https://github.com/google/ksp/issues/567 +tasks.withType>().all { + if (name != "kspCommonMainKotlinMetadata") { + dependsOn("kspCommonMainKotlinMetadata") + } +} +kotlin.sourceSets.commonMain { + kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin") +} + +// TODO: Fix a problem with Moko+KtLint: +// https://github.com/icerockdev/moko-resources/issues/421 + +// See: +// https://kotlinlang.org/docs/ksp-multiplatform.html#compilation-and-processing +dependencies { + // Adds KSP generated code to the common module, therefore + // to each of the platform. + add("kspCommonMainMetadata", libs.arrow.arrow.optics.ksp.plugin) + + add("kspAndroid", libs.androidx.room.compiler) + add("kspAndroid", libs.glide.ksp) + add("coreLibraryDesugaring", libs.android.desugarjdklibs) + + commonMainApi(libs.moko.resources) + commonMainApi(libs.moko.resources.compose) + commonTestImplementation(libs.moko.resources.test) +} + +multiplatformResources { + multiplatformResourcesPackage = "com.artemchep.keyguard.res" + multiplatformResourcesClassName = "Res" // optional, default MR +} + +enum class BuildType { + DEV, + RELEASE, +} + +buildkonfig { + packageName = "com.artemchep.keyguard.build" + + defaultConfigs { + buildConfigField(STRING, "buildType", BuildType.DEV.name) + buildConfigField(STRING, "buildDate", versionInfo.buildDate) + buildConfigField(STRING, "versionName", versionInfo.marketingVersion.toString()) + buildConfigField(INT, "versionCode", versionInfo.logicalVersion.toString()) + } + defaultConfigs("release") { + buildConfigField(STRING, "buildType", BuildType.RELEASE.name) + } +} + +sqldelight { + databases { + create("Database") { + packageName.set("com.artemchep.keyguard.data") + } + } + linkSqlite.set(false) +} + +// Reason: Task ':common:generateNoneReleaseLintVitalModel' uses this output of +// task ':common:copyFontsToAndroidAssets' without declaring an explicit or +// implicit dependency. This can lead to incorrect results being produced, +// depending on what order the tasks are executed. +tasks.findByName("generateNoneReleaseLintVitalModel")?.dependsOn("copyFontsToAndroidAssets") +tasks.findByName("generatePlayStoreReleaseLintVitalModel")?.dependsOn("copyFontsToAndroidAssets") diff --git a/common/schemas/com.artemchep.keyguard.android.downloader.journal.room.DownloadDatabase/1.json b/common/schemas/com.artemchep.keyguard.android.downloader.journal.room.DownloadDatabase/1.json new file mode 100644 index 00000000..c2d537ab --- /dev/null +++ b/common/schemas/com.artemchep.keyguard.android.downloader.journal.room.DownloadDatabase/1.json @@ -0,0 +1,106 @@ +{ + "formatVersion": 1, + "database": { + "version": 1, + "identityHash": "53d643f378ffabb9bd62c9aa47546bc6", + "entities": [ + { + "tableName": "DownloadInfoEntity", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `localCipherId` TEXT NOT NULL, `remoteCipherId` TEXT, `attachmentId` TEXT NOT NULL, `url` TEXT NOT NULL, `urlIsOneTime` INTEGER NOT NULL, `name` TEXT NOT NULL, `createdDate` INTEGER NOT NULL, `revisionDate` INTEGER NOT NULL, `encryptionKeyBase64` TEXT, `code` INTEGER, `attempt` INTEGER, `message` TEXT, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "localCipherId", + "columnName": "localCipherId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "remoteCipherId", + "columnName": "remoteCipherId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "attachmentId", + "columnName": "attachmentId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "url", + "columnName": "url", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "urlIsOneTime", + "columnName": "urlIsOneTime", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "name", + "columnName": "name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "createdDate", + "columnName": "createdDate", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "revisionDate", + "columnName": "revisionDate", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "encryptionKeyBase64", + "columnName": "encryptionKeyBase64", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "error.code", + "columnName": "code", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "error.attempt", + "columnName": "attempt", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "error.message", + "columnName": "message", + "affinity": "TEXT", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '53d643f378ffabb9bd62c9aa47546bc6')" + ] + } +} \ No newline at end of file diff --git a/common/schemas/com.artemchep.keyguard.android.downloader.journal.room.DownloadDatabase/2.json b/common/schemas/com.artemchep.keyguard.android.downloader.journal.room.DownloadDatabase/2.json new file mode 100644 index 00000000..02f31583 --- /dev/null +++ b/common/schemas/com.artemchep.keyguard.android.downloader.journal.room.DownloadDatabase/2.json @@ -0,0 +1,150 @@ +{ + "formatVersion": 1, + "database": { + "version": 2, + "identityHash": "c99763929d85fc7c3d7bb7800cb4f019", + "entities": [ + { + "tableName": "DownloadInfoEntity", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `localCipherId` TEXT NOT NULL, `remoteCipherId` TEXT, `attachmentId` TEXT NOT NULL, `url` TEXT NOT NULL, `urlIsOneTime` INTEGER NOT NULL, `name` TEXT NOT NULL, `createdDate` INTEGER NOT NULL, `revisionDate` INTEGER NOT NULL, `encryptionKeyBase64` TEXT, `code` INTEGER, `attempt` INTEGER, `message` TEXT, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "localCipherId", + "columnName": "localCipherId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "remoteCipherId", + "columnName": "remoteCipherId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "attachmentId", + "columnName": "attachmentId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "url", + "columnName": "url", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "urlIsOneTime", + "columnName": "urlIsOneTime", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "name", + "columnName": "name", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "createdDate", + "columnName": "createdDate", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "revisionDate", + "columnName": "revisionDate", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "encryptionKeyBase64", + "columnName": "encryptionKeyBase64", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "error.code", + "columnName": "code", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "error.attempt", + "columnName": "attempt", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "error.message", + "columnName": "message", + "affinity": "TEXT", + "notNull": false + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "GeneratorEntity", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `value` TEXT NOT NULL, `createdDate` INTEGER NOT NULL, `isPassword` INTEGER NOT NULL, `isUsername` INTEGER NOT NULL, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "value", + "columnName": "value", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "createdDate", + "columnName": "createdDate", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isPassword", + "columnName": "isPassword", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "isUsername", + "columnName": "isUsername", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'c99763929d85fc7c3d7bb7800cb4f019')" + ] + } +} \ No newline at end of file diff --git a/common/schemas/com.artemchep.keyguard.room.AppDatabase/1.json b/common/schemas/com.artemchep.keyguard.room.AppDatabase/1.json new file mode 100644 index 00000000..c04df786 --- /dev/null +++ b/common/schemas/com.artemchep.keyguard.room.AppDatabase/1.json @@ -0,0 +1,134 @@ +{ + "formatVersion": 1, + "database": { + "version": 1, + "identityHash": "d09ce5b46e6f63f4a372c20327ce9641", + "entities": [ + { + "tableName": "RoomBitwardenCipher", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`itemId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `folderId` TEXT, `content` TEXT NOT NULL, PRIMARY KEY(`itemId`), FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "itemId", + "columnName": "itemId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "folderId", + "columnName": "folderId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "itemId" + ], + "autoGenerate": false + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + } + ] + }, + { + "tableName": "RoomBitwardenFolder", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`folderId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `content` TEXT NOT NULL, PRIMARY KEY(`folderId`), FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "folderId", + "columnName": "folderId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "folderId" + ], + "autoGenerate": false + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + } + ] + }, + { + "tableName": "RoomBitwardenToken", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`accountId` TEXT NOT NULL, `content` TEXT NOT NULL, PRIMARY KEY(`accountId`))", + "fields": [ + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "accountId" + ], + "autoGenerate": false + }, + "indices": [], + "foreignKeys": [] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'd09ce5b46e6f63f4a372c20327ce9641')" + ] + } +} \ No newline at end of file diff --git a/common/schemas/com.artemchep.keyguard.room.AppDatabase/2.json b/common/schemas/com.artemchep.keyguard.room.AppDatabase/2.json new file mode 100644 index 00000000..0b771e65 --- /dev/null +++ b/common/schemas/com.artemchep.keyguard.room.AppDatabase/2.json @@ -0,0 +1,178 @@ +{ + "formatVersion": 1, + "database": { + "version": 2, + "identityHash": "80b67e4111717c76261cda0ba3f808b1", + "entities": [ + { + "tableName": "RoomBitwardenCipher", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`itemId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `folderId` TEXT, `content` TEXT NOT NULL, PRIMARY KEY(`itemId`), FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "itemId", + "columnName": "itemId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "folderId", + "columnName": "folderId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "itemId" + ], + "autoGenerate": false + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + } + ] + }, + { + "tableName": "RoomBitwardenFolder", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`folderId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `content` TEXT NOT NULL, PRIMARY KEY(`folderId`), FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "folderId", + "columnName": "folderId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "folderId" + ], + "autoGenerate": false + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + } + ] + }, + { + "tableName": "RoomBitwardenProfile", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`profileId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `content` TEXT NOT NULL, PRIMARY KEY(`profileId`), FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "profileId", + "columnName": "profileId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "profileId" + ], + "autoGenerate": false + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + } + ] + }, + { + "tableName": "RoomBitwardenToken", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`accountId` TEXT NOT NULL, `content` TEXT NOT NULL, PRIMARY KEY(`accountId`))", + "fields": [ + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "accountId" + ], + "autoGenerate": false + }, + "indices": [], + "foreignKeys": [] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '80b67e4111717c76261cda0ba3f808b1')" + ] + } +} \ No newline at end of file diff --git a/common/schemas/com.artemchep.keyguard.room.AppDatabase/3.json b/common/schemas/com.artemchep.keyguard.room.AppDatabase/3.json new file mode 100644 index 00000000..03703a1a --- /dev/null +++ b/common/schemas/com.artemchep.keyguard.room.AppDatabase/3.json @@ -0,0 +1,216 @@ +{ + "formatVersion": 1, + "database": { + "version": 3, + "identityHash": "e852ea9f03a252a7474115e971772d79", + "entities": [ + { + "tableName": "RoomBitwardenCipher", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`itemId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `folderId` TEXT, `content` TEXT NOT NULL, PRIMARY KEY(`itemId`), FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "itemId", + "columnName": "itemId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "folderId", + "columnName": "folderId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "itemId" + ], + "autoGenerate": false + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + } + ] + }, + { + "tableName": "RoomBitwardenFolder", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`folderId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `content` TEXT NOT NULL, PRIMARY KEY(`folderId`), FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "folderId", + "columnName": "folderId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "folderId" + ], + "autoGenerate": false + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + } + ] + }, + { + "tableName": "RoomBitwardenProfile", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`profileId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `content` TEXT NOT NULL, PRIMARY KEY(`profileId`), FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "profileId", + "columnName": "profileId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "profileId" + ], + "autoGenerate": false + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + } + ] + }, + { + "tableName": "RoomBitwardenMeta", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`accountId` TEXT NOT NULL, `content` TEXT NOT NULL, PRIMARY KEY(`accountId`), FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "accountId" + ], + "autoGenerate": false + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + } + ] + }, + { + "tableName": "RoomBitwardenToken", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`accountId` TEXT NOT NULL, `content` TEXT NOT NULL, PRIMARY KEY(`accountId`))", + "fields": [ + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "accountId" + ], + "autoGenerate": false + }, + "indices": [], + "foreignKeys": [] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'e852ea9f03a252a7474115e971772d79')" + ] + } +} \ No newline at end of file diff --git a/common/schemas/com.artemchep.keyguard.room.AppDatabase/4.json b/common/schemas/com.artemchep.keyguard.room.AppDatabase/4.json new file mode 100644 index 00000000..5cd0b17f --- /dev/null +++ b/common/schemas/com.artemchep.keyguard.room.AppDatabase/4.json @@ -0,0 +1,338 @@ +{ + "formatVersion": 1, + "database": { + "version": 4, + "identityHash": "3b5b7bb2a221337ef9d029ac86cd78a5", + "entities": [ + { + "tableName": "RoomBitwardenCipher", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`itemId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `folderId` TEXT, `content` TEXT NOT NULL, PRIMARY KEY(`itemId`), FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "itemId", + "columnName": "itemId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "folderId", + "columnName": "folderId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "itemId" + ] + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + } + ] + }, + { + "tableName": "RoomBitwardenFolder", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`folderId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `content` TEXT NOT NULL, PRIMARY KEY(`folderId`), FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "folderId", + "columnName": "folderId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "folderId" + ] + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + } + ] + }, + { + "tableName": "RoomBitwardenProfile", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`profileId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `content` TEXT NOT NULL, PRIMARY KEY(`profileId`), FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "profileId", + "columnName": "profileId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "profileId" + ] + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + } + ] + }, + { + "tableName": "RoomBitwardenMeta", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`accountId` TEXT NOT NULL, `content` TEXT NOT NULL, PRIMARY KEY(`accountId`), FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "accountId" + ] + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + } + ] + }, + { + "tableName": "RoomBitwardenToken", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`accountId` TEXT NOT NULL, `content` TEXT NOT NULL, PRIMARY KEY(`accountId`))", + "fields": [ + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "accountId" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "RoomOpenCipherHistory", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `itemId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE , FOREIGN KEY(`itemId`) REFERENCES `RoomBitwardenCipher`(`itemId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "itemId", + "columnName": "itemId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + }, + { + "table": "RoomBitwardenCipher", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "itemId" + ], + "referencedColumns": [ + "itemId" + ] + } + ] + }, + { + "tableName": "RoomFillCipherHistory", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `itemId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE , FOREIGN KEY(`itemId`) REFERENCES `RoomBitwardenCipher`(`itemId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "itemId", + "columnName": "itemId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + }, + { + "table": "RoomBitwardenCipher", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "itemId" + ], + "referencedColumns": [ + "itemId" + ] + } + ] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '3b5b7bb2a221337ef9d029ac86cd78a5')" + ] + } +} \ No newline at end of file diff --git a/common/schemas/com.artemchep.keyguard.room.AppDatabase/5.json b/common/schemas/com.artemchep.keyguard.room.AppDatabase/5.json new file mode 100644 index 00000000..90c43a83 --- /dev/null +++ b/common/schemas/com.artemchep.keyguard.room.AppDatabase/5.json @@ -0,0 +1,382 @@ +{ + "formatVersion": 1, + "database": { + "version": 5, + "identityHash": "6c449d38d70cafefc154296d5459a2a1", + "entities": [ + { + "tableName": "RoomBitwardenCipher", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`itemId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `folderId` TEXT, `content` TEXT NOT NULL, PRIMARY KEY(`itemId`), FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "itemId", + "columnName": "itemId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "folderId", + "columnName": "folderId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "itemId" + ] + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + } + ] + }, + { + "tableName": "RoomBitwardenCollection", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`collectionId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `content` TEXT NOT NULL, PRIMARY KEY(`collectionId`), FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "collectionId", + "columnName": "collectionId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "collectionId" + ] + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + } + ] + }, + { + "tableName": "RoomBitwardenFolder", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`folderId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `content` TEXT NOT NULL, PRIMARY KEY(`folderId`), FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "folderId", + "columnName": "folderId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "folderId" + ] + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + } + ] + }, + { + "tableName": "RoomBitwardenProfile", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`profileId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `content` TEXT NOT NULL, PRIMARY KEY(`profileId`), FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "profileId", + "columnName": "profileId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "profileId" + ] + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + } + ] + }, + { + "tableName": "RoomBitwardenMeta", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`accountId` TEXT NOT NULL, `content` TEXT NOT NULL, PRIMARY KEY(`accountId`), FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "accountId" + ] + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + } + ] + }, + { + "tableName": "RoomBitwardenToken", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`accountId` TEXT NOT NULL, `content` TEXT NOT NULL, PRIMARY KEY(`accountId`))", + "fields": [ + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "accountId" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "RoomOpenCipherHistory", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `itemId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE , FOREIGN KEY(`itemId`) REFERENCES `RoomBitwardenCipher`(`itemId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "itemId", + "columnName": "itemId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + }, + { + "table": "RoomBitwardenCipher", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "itemId" + ], + "referencedColumns": [ + "itemId" + ] + } + ] + }, + { + "tableName": "RoomFillCipherHistory", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `itemId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE , FOREIGN KEY(`itemId`) REFERENCES `RoomBitwardenCipher`(`itemId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "itemId", + "columnName": "itemId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + }, + { + "table": "RoomBitwardenCipher", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "itemId" + ], + "referencedColumns": [ + "itemId" + ] + } + ] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '6c449d38d70cafefc154296d5459a2a1')" + ] + } +} \ No newline at end of file diff --git a/common/schemas/com.artemchep.keyguard.room.AppDatabase/6.json b/common/schemas/com.artemchep.keyguard.room.AppDatabase/6.json new file mode 100644 index 00000000..e58c4844 --- /dev/null +++ b/common/schemas/com.artemchep.keyguard.room.AppDatabase/6.json @@ -0,0 +1,426 @@ +{ + "formatVersion": 1, + "database": { + "version": 6, + "identityHash": "39a9aea08d46cef5a7696aa996c73682", + "entities": [ + { + "tableName": "RoomBitwardenCipher", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`itemId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `folderId` TEXT, `content` TEXT NOT NULL, PRIMARY KEY(`itemId`), FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "itemId", + "columnName": "itemId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "folderId", + "columnName": "folderId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "itemId" + ] + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + } + ] + }, + { + "tableName": "RoomBitwardenCollection", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`collectionId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `content` TEXT NOT NULL, PRIMARY KEY(`collectionId`), FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "collectionId", + "columnName": "collectionId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "collectionId" + ] + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + } + ] + }, + { + "tableName": "RoomBitwardenOrganization", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`organizationId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `content` TEXT NOT NULL, PRIMARY KEY(`organizationId`), FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "organizationId", + "columnName": "organizationId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "organizationId" + ] + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + } + ] + }, + { + "tableName": "RoomBitwardenFolder", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`folderId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `content` TEXT NOT NULL, PRIMARY KEY(`folderId`), FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "folderId", + "columnName": "folderId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "folderId" + ] + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + } + ] + }, + { + "tableName": "RoomBitwardenProfile", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`profileId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `content` TEXT NOT NULL, PRIMARY KEY(`profileId`), FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "profileId", + "columnName": "profileId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "profileId" + ] + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + } + ] + }, + { + "tableName": "RoomBitwardenMeta", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`accountId` TEXT NOT NULL, `content` TEXT NOT NULL, PRIMARY KEY(`accountId`), FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "accountId" + ] + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + } + ] + }, + { + "tableName": "RoomBitwardenToken", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`accountId` TEXT NOT NULL, `content` TEXT NOT NULL, PRIMARY KEY(`accountId`))", + "fields": [ + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "accountId" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "RoomOpenCipherHistory", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `itemId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE , FOREIGN KEY(`itemId`) REFERENCES `RoomBitwardenCipher`(`itemId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "itemId", + "columnName": "itemId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + }, + { + "table": "RoomBitwardenCipher", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "itemId" + ], + "referencedColumns": [ + "itemId" + ] + } + ] + }, + { + "tableName": "RoomFillCipherHistory", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `itemId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE , FOREIGN KEY(`itemId`) REFERENCES `RoomBitwardenCipher`(`itemId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "itemId", + "columnName": "itemId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + }, + { + "table": "RoomBitwardenCipher", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "itemId" + ], + "referencedColumns": [ + "itemId" + ] + } + ] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '39a9aea08d46cef5a7696aa996c73682')" + ] + } +} \ No newline at end of file diff --git a/common/schemas/com.artemchep.keyguard.room.AppDatabase/7.json b/common/schemas/com.artemchep.keyguard.room.AppDatabase/7.json new file mode 100644 index 00000000..e75faa06 --- /dev/null +++ b/common/schemas/com.artemchep.keyguard.room.AppDatabase/7.json @@ -0,0 +1,429 @@ +{ + "formatVersion": 1, + "database": { + "version": 7, + "identityHash": "f1e09fbf3d6219a63100a2a48e2e8187", + "entities": [ + { + "tableName": "RoomBitwardenCipher", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`itemId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `folderId` TEXT, `content` TEXT NOT NULL, PRIMARY KEY(`itemId`), FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "itemId", + "columnName": "itemId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "folderId", + "columnName": "folderId", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "itemId" + ] + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + } + ] + }, + { + "tableName": "RoomBitwardenCollection", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`collectionId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `content` TEXT NOT NULL, PRIMARY KEY(`collectionId`, `accountId`), FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "collectionId", + "columnName": "collectionId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "collectionId", + "accountId" + ] + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + } + ] + }, + { + "tableName": "RoomBitwardenOrganization", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`organizationId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `content` TEXT NOT NULL, PRIMARY KEY(`organizationId`, `accountId`), FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "organizationId", + "columnName": "organizationId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "organizationId", + "accountId" + ] + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + } + ] + }, + { + "tableName": "RoomBitwardenFolder", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`folderId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `content` TEXT NOT NULL, PRIMARY KEY(`folderId`), FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "folderId", + "columnName": "folderId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "folderId" + ] + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + } + ] + }, + { + "tableName": "RoomBitwardenProfile", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`profileId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `content` TEXT NOT NULL, PRIMARY KEY(`profileId`, `accountId`), FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "profileId", + "columnName": "profileId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "profileId", + "accountId" + ] + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + } + ] + }, + { + "tableName": "RoomBitwardenMeta", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`accountId` TEXT NOT NULL, `content` TEXT NOT NULL, PRIMARY KEY(`accountId`), FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "accountId" + ] + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + } + ] + }, + { + "tableName": "RoomBitwardenToken", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`accountId` TEXT NOT NULL, `content` TEXT NOT NULL, PRIMARY KEY(`accountId`))", + "fields": [ + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "content", + "columnName": "content", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "accountId" + ] + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "RoomOpenCipherHistory", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `itemId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE , FOREIGN KEY(`itemId`) REFERENCES `RoomBitwardenCipher`(`itemId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "itemId", + "columnName": "itemId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + }, + { + "table": "RoomBitwardenCipher", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "itemId" + ], + "referencedColumns": [ + "itemId" + ] + } + ] + }, + { + "tableName": "RoomFillCipherHistory", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `itemId` TEXT NOT NULL, `accountId` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, FOREIGN KEY(`accountId`) REFERENCES `RoomBitwardenToken`(`accountId`) ON UPDATE NO ACTION ON DELETE CASCADE , FOREIGN KEY(`itemId`) REFERENCES `RoomBitwardenCipher`(`itemId`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "itemId", + "columnName": "itemId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "accountId", + "columnName": "accountId", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "timestamp", + "columnName": "timestamp", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": true, + "columnNames": [ + "id" + ] + }, + "indices": [], + "foreignKeys": [ + { + "table": "RoomBitwardenToken", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "accountId" + ], + "referencedColumns": [ + "accountId" + ] + }, + { + "table": "RoomBitwardenCipher", + "onDelete": "CASCADE", + "onUpdate": "NO ACTION", + "columns": [ + "itemId" + ], + "referencedColumns": [ + "itemId" + ] + } + ] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'f1e09fbf3d6219a63100a2a48e2e8187')" + ] + } +} \ No newline at end of file diff --git a/common/src/androidMain/AndroidManifest.xml b/common/src/androidMain/AndroidManifest.xml new file mode 100644 index 00000000..1de2b791 --- /dev/null +++ b/common/src/androidMain/AndroidManifest.xml @@ -0,0 +1,248 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/AutofillActArgs.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/AutofillActArgs.kt new file mode 100644 index 00000000..d3a7ed15 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/AutofillActArgs.kt @@ -0,0 +1,133 @@ +package com.artemchep.keyguard + +import com.artemchep.keyguard.android.AutofillActivity +import com.artemchep.keyguard.android.AutofillSaveActivity +import com.artemchep.keyguard.common.model.AutofillHint +import com.artemchep.keyguard.common.model.AutofillTarget +import com.artemchep.keyguard.common.model.GeneratorContext +import com.artemchep.keyguard.common.model.LinkInfoPlatform +import com.artemchep.keyguard.feature.home.vault.add.AddRoute +import com.artemchep.keyguard.feature.home.vault.add.of +import io.ktor.http.Url + +actual typealias AutofillActArgs = AutofillActivity.Args + +actual typealias AutofillSaveActArgs = AutofillSaveActivity.Args + +actual val AppMode.autofillTarget: AutofillTarget? + get() = when (this) { + is AppMode.Pick -> + AutofillTarget( + links = listOfNotNull( + // application id + args.applicationId?.let { + LinkInfoPlatform.Android( + packageName = it, + ) + }, + // website + args.webDomain?.let { + val url = Url("https://$it") + LinkInfoPlatform.Web( + url = url, + frontPageUrl = url, + ) + }, + ), + hints = args.autofillStructure2?.items?.map { it.hint }.orEmpty(), + ) + + is AppMode.Save -> + AutofillTarget( + links = listOfNotNull( + // application id + args.applicationId?.let { + LinkInfoPlatform.Android( + packageName = it, + ) + }, + // website + args.webDomain?.let { + val url = Url("https://$it") + LinkInfoPlatform.Web( + url = url, + frontPageUrl = url, + ) + }, + ), + hints = args.autofillStructure2?.items?.map { it.hint }.orEmpty(), + ) + + is AppMode.Main -> + null + + is AppMode.PickPasskey -> + null + + is AppMode.SavePasskey -> { + val rpId = rpId + if (rpId != null) { + AutofillTarget( + links = listOfNotNull( + // origin + run { + val url = Url(rpId.removePrefix("https://").let { "https://$it" }) + LinkInfoPlatform.Web( + url = url, + frontPageUrl = url, + ) + }, + ), + hints = listOf( + AutofillHint.EMAIL_ADDRESS, + ), + ) + } else { + null + } + } + } + +actual val AppMode.generatorTarget: GeneratorContext + get() = when (this) { + is AppMode.Pick -> { + val host = args.webDomain + GeneratorContext( + host = host, + ) + } + + is AppMode.Save -> { + val host = args.webDomain + GeneratorContext( + host = host, + ) + } + + is AppMode.Main -> { + GeneratorContext( + host = null, + ) + } + + is AppMode.PickPasskey -> { + GeneratorContext( + host = null, + ) + } + + is AppMode.SavePasskey -> { + val host = rpId + GeneratorContext( + host = host, + ) + } + } + +actual fun AddRoute.Args.Autofill.Companion.leof( + source: AutofillActArgs, +): AddRoute.Args.Autofill = of(source) + +actual fun AddRoute.Args.Autofill.Companion.leof( + source: AutofillSaveActArgs, +): AddRoute.Args.Autofill = of(source) diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/AutofillActivity.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/AutofillActivity.kt new file mode 100644 index 00000000..6032dbf8 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/AutofillActivity.kt @@ -0,0 +1,273 @@ +package com.artemchep.keyguard.android + +import android.app.PendingIntent +import android.content.Context +import android.content.Intent +import android.os.Bundle +import android.os.Parcelable +import android.service.autofill.Dataset +import android.view.View +import android.view.autofill.AutofillId +import android.view.autofill.AutofillManager +import android.view.autofill.AutofillValue +import android.widget.RemoteViews +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Close +import androidx.compose.material3.Icon +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.AppMode +import com.artemchep.keyguard.LocalAppMode +import com.artemchep.keyguard.android.autofill.AutofillStructure2 +import com.artemchep.keyguard.common.R +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.model.AutofillHint +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.gett +import com.artemchep.keyguard.common.usecase.GetTotpCode +import com.artemchep.keyguard.pick +import com.artemchep.keyguard.platform.recordLog +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.theme.Dimens +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.runBlocking +import kotlinx.parcelize.Parcelize +import org.kodein.di.DIAware +import org.kodein.di.direct +import org.kodein.di.instance + +class AutofillActivity : BaseActivity(), DIAware { + companion object { + private const val KEY_ARGUMENTS = "arguments" + + fun getIntent( + context: Context, + args: Args, + ): Intent = Intent(context, AutofillActivity::class.java).apply { + putExtra(KEY_ARGUMENTS, args) + } + } + + @Parcelize + data class Args( + val autofillStructure2: AutofillStructure2? = null, + val applicationId: String? = null, + val webDomain: String? = null, + val webScheme: String? = null, + ) : Parcelable + + private val getTotpCode: GetTotpCode by lazy { + di.direct.instance() + } + + private val args by lazy { + intent.extras?.getParcelable(KEY_ARGUMENTS) + ?: Args( + applicationId = packageName, + ) + } + + private fun tryBuildDataset( + index: Int, + context: Context, + secret: DSecret, + struct: AutofillStructure2, + onComplete: (Dataset.Builder.() -> Unit)? = null, + ): Dataset? { + val views = RemoteViews(context.packageName, R.layout.item_autofill_entry).apply { + setTextViewText(R.id.autofill_entry_name, secret.name) + val username = kotlin.run { + secret.login?.username?.also { return@run it } + secret.card?.number?.also { return@run it } + secret.uris.firstOrNull() + ?.uri + ?.also { return@run it } + null + } + if (username != null) { + setTextViewText(R.id.autofill_entry_username, username) + } else { + setViewVisibility(R.id.autofill_entry_username, View.GONE) + } + } + + fun createDatasetBuilder(): Dataset.Builder { + val builder = Dataset.Builder(views) + builder.setId(secret.id) + val fields = runBlocking { + val hints = struct.items + .asSequence() + .map { it.hint } + .toSet() + secret.gett( + hints = hints, + getTotpCode = getTotpCode, + ).bind() + } + struct.items.forEach { structItem -> + val value = fields[structItem.hint] + builder.trySetValue( + id = structItem.id, + value = value, + ) + } + return builder + } + + val builder = createDatasetBuilder() + try { + val dataset = createDatasetBuilder().build() + val intent = AutofillFakeAuthActivity.getIntent( + this, + dataset = dataset, + cipher = secret, + structure = struct, + ) + val pi = PendingIntent.getActivity( + this, + 1500 + index, + intent, + PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_CANCEL_CURRENT, + ) + + builder.setAuthentication(pi.intentSender) + } catch (e: Exception) { + // Ignored + } + + onComplete?.invoke(builder) + + return try { + builder.build() + } catch (e: Exception) { + null // not a single value set + } + } + + private fun Dataset.Builder.trySetValue( + id: AutofillId?, + value: String?, + ) { + if (id != null && value != null) { + setValue(id, AutofillValue.forText(value)) + } + } + + private fun autofill(secret: DSecret) { + val struct = args.autofillStructure2 + ?: return + val dataset = tryBuildDataset( + index = 555, + context = this, + secret = secret, + struct = struct, + ) + if (dataset != null) { + val intent = Intent().apply { + putExtra(AutofillManager.EXTRA_AUTHENTICATION_RESULT, dataset) + } + setResult(RESULT_OK, intent) + finish() + } else { + // TODO: Show a message or something + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + recordLog("Opened autofill pick activity") + } + + @Composable + override fun Content() { + CompositionLocalProvider( + LocalAppMode provides AppMode.Pick( + type = kotlin.run { + val loginSearch = args.autofillStructure2?.items?.any { + it.hint == AutofillHint.PASSWORD || + it.hint == AutofillHint.PHONE_NUMBER || + it.hint == AutofillHint.EMAIL_ADDRESS || + it.hint == AutofillHint.USERNAME + } == true + val cardSearch = args.autofillStructure2?.items?.any { + it.hint == AutofillHint.CREDIT_CARD_NUMBER || + it.hint == AutofillHint.CREDIT_CARD_SECURITY_CODE || + it.hint == AutofillHint.CREDIT_CARD_EXPIRATION_DATE || + it.hint == AutofillHint.CREDIT_CARD_EXPIRATION_DAY || + it.hint == AutofillHint.CREDIT_CARD_EXPIRATION_YEAR || + it.hint == AutofillHint.CREDIT_CARD_EXPIRATION_MONTH + } == true + if (loginSearch && cardSearch) { + null + } else if (loginSearch) { + DSecret.Type.Login + } else if (cardSearch) { + DSecret.Type.Card + } else { + null + } + }, + args = args, + onAutofill = ::autofill, + ), + ) { + AutofillScaffold( + topBar = { + Column { + Row( + modifier = Modifier + .padding( + vertical = 8.dp, + horizontal = Dimens.horizontalPadding, + ), + verticalAlignment = Alignment.CenterVertically, + ) { + Column( + modifier = Modifier + .weight(1f), + ) { + val args = AppMode.pick.getOrNull(LocalAppMode.current)?.args + AppInfo( + packageName = args?.applicationId, + webDomain = args?.webDomain, + webScheme = args?.webScheme, + ) + } + Spacer(modifier = Modifier.width(16.dp)) + val context by rememberUpdatedState(newValue = LocalContext.current) + TextButton( + onClick = { + context.closestActivityOrNull?.finish() + }, + ) { + Icon(Icons.Outlined.Close, null) + Spacer( + modifier = Modifier + .width(Dimens.buttonIconPadding), + ) + Text( + text = stringResource(Res.strings.cancel), + textAlign = TextAlign.Center, + ) + } + } + } + }, + ) + } + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/AutofillCompose.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/AutofillCompose.kt new file mode 100644 index 00000000..7d2db6be --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/AutofillCompose.kt @@ -0,0 +1,302 @@ +package com.artemchep.keyguard.android + +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.BoxScope +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.WindowInsetsSides +import androidx.compose.foundation.layout.displayCutout +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.navigationBars +import androidx.compose.foundation.layout.only +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.statusBars +import androidx.compose.foundation.layout.systemBars +import androidx.compose.foundation.layout.union +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.windowInsetsPadding +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.CornerSize +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.model.LinkInfoAndroid +import com.artemchep.keyguard.common.model.LinkInfoPlatform +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.service.extract.LinkInfoExtractor +import com.artemchep.keyguard.feature.favicon.FaviconImage +import com.artemchep.keyguard.feature.favicon.FaviconUrl +import com.artemchep.keyguard.feature.keyguard.AppRoute +import com.artemchep.keyguard.feature.navigation.NavigationNode +import com.artemchep.keyguard.ui.ExpandedIfNotEmptyForRow +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.composable +import com.artemchep.keyguard.ui.theme.combineAlpha +import org.kodein.di.allInstances +import org.kodein.di.compose.rememberDI + +@Composable +fun AutofillScaffold( + topBar: @Composable () -> Unit, +) { + ExtensionScaffold( + header = { + topBar() + }, + ) { + NavigationNode( + id = "App:Autofill", + route = AppRoute, + ) + } +} + +@Composable +fun PasskeyScaffold( + topBar: @Composable () -> Unit, +) { + ExtensionScaffold( + header = { + topBar() + }, + ) { + NavigationNode( + id = "App:Passkey", + route = AppRoute, + ) + } +} + +@Composable +fun ExtensionScaffold( + header: @Composable BoxScope.() -> Unit, + content: @Composable BoxScope.() -> Unit, +) { + val topInsets = WindowInsets.systemBars + .only(WindowInsetsSides.Top) + Column( + modifier = Modifier + .background(MaterialTheme.colorScheme.surfaceVariant) + .windowInsetsPadding(topInsets), + ) { + val horizontalInsets = WindowInsets.statusBars + .union(WindowInsets.navigationBars) + .union(WindowInsets.displayCutout) + .only(WindowInsetsSides.Horizontal) + Box( + modifier = Modifier + .windowInsetsPadding(horizontalInsets), + ) { + header() + } + + val shape = MaterialTheme.shapes.extraLarge + .copy( + bottomStart = CornerSize(0.dp), + bottomEnd = CornerSize(0.dp), + ) + Box( + modifier = Modifier + .clip(shape) + .background(MaterialTheme.colorScheme.background) + .fillMaxSize(), + ) { + content() + } + } +} + +@Composable +fun AppInfo( + packageName: String?, + webDomain: String?, + webScheme: String?, +) { + when { + webDomain != null && webScheme != null -> { + AppInfoWeb( + webDomain = webDomain, + webScheme = webScheme, + ) + } + + packageName != null -> { + AppInfoAndroid( + packageName = packageName, + ) + } + + else -> { + Text( + text = "Autofill with Keyguard", + style = MaterialTheme.typography.titleMedium, + overflow = TextOverflow.Ellipsis, + maxLines = 1, + ) + } + } +} + +@Composable +private fun AppInfoWeb( + webDomain: String, + webScheme: String, +) { + var state by remember(webDomain) { + mutableStateOf>(Loadable.Loading) + } + + LaunchedEffect(webDomain) { + val data = AppInfoData( + label = webDomain, + icon = { + FaviconImage( + modifier = Modifier + .clip(CircleShape), + imageModel = { + FaviconUrl( + url = "$webScheme://$webDomain", + ) + }, + ) + }, + ) + state = Loadable.Ok(data) + } + + AppInfo( + state = state, + ) +} + +@Composable +private fun AppInfoAndroid( + packageName: String, +) { + val linkInfoExtractors: List> by rememberDI { + allInstances() + } + + var state by remember(packageName) { + mutableStateOf>(Loadable.Loading) + } + + LaunchedEffect(packageName) { + val linkInfo = LinkInfoPlatform.Android(packageName) + val linkInfoData = linkInfoExtractors + .filter { it.from == LinkInfoPlatform.Android::class && it.handles(linkInfo) } + .firstNotNullOfOrNull { extractor -> + val model = extractor + .extractInfo(linkInfo) + .attempt() + .bind() + .getOrNull() + when (model) { + is LinkInfoAndroid.Installed -> + AppInfoData( + label = model.label, + icon = { + Image( + modifier = Modifier + .clip(CircleShape), + painter = model.icon, + contentDescription = null, + ) + }, + ) + + else -> null + } + } + ?: AppInfoData(label = packageName) + state = Loadable.Ok(linkInfoData) + } + + AppInfo( + state = state, + ) +} + +@Composable +private fun AppInfo( + state: Loadable, +) { + Row( + verticalAlignment = Alignment.CenterVertically, + ) { + val icon = remember(state) { + when (state) { + is Loadable.Loading -> + composable { + CircularProgressIndicator( + color = LocalContentColor.current, + ) + } + + is Loadable.Ok -> if (state.value.icon != null) { + composable { + state.value.icon.invoke() + } + } else { + // do not show an icon + null + } + } + } + ExpandedIfNotEmptyForRow(valueOrNull = icon) { content -> + Row { + Box( + modifier = Modifier + .size(24.dp), + ) { + content() + } + Spacer( + modifier = Modifier + .width(16.dp), + ) + } + } + Column { + Text( + text = "Autofill for", + style = MaterialTheme.typography.labelSmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + overflow = TextOverflow.Ellipsis, + maxLines = 1, + ) + if (state is Loadable.Ok) { + Text( + text = state.value.label, + style = MaterialTheme.typography.titleMedium, + overflow = TextOverflow.Ellipsis, + maxLines = 1, + ) + } + } + } +} + +private class AppInfoData( + val label: String, + val icon: (@Composable () -> Unit)? = null, +) diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/AutofillFakeAuthActivity.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/AutofillFakeAuthActivity.kt new file mode 100644 index 00000000..37fa1bc6 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/AutofillFakeAuthActivity.kt @@ -0,0 +1,167 @@ +package com.artemchep.keyguard.android + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import android.os.Parcelable +import android.service.autofill.Dataset +import android.view.autofill.AutofillManager +import androidx.appcompat.app.AppCompatActivity +import arrow.core.flatMap +import arrow.core.toOption +import com.artemchep.keyguard.android.autofill.AutofillStructure2 +import com.artemchep.keyguard.android.clipboard.KeyguardClipboardService +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.io.flatten +import com.artemchep.keyguard.common.io.handleErrorWith +import com.artemchep.keyguard.common.io.ioUnit +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.io.toIO +import com.artemchep.keyguard.common.model.AddCipherOpenedHistoryRequest +import com.artemchep.keyguard.common.model.AddUriCipherRequest +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.MasterSession +import com.artemchep.keyguard.common.model.TotpToken +import com.artemchep.keyguard.common.usecase.AddCipherUsedAutofillHistory +import com.artemchep.keyguard.common.usecase.AddUriCipher +import com.artemchep.keyguard.common.usecase.GetVaultSession +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.platform.recordLog +import kotlinx.coroutines.Dispatchers +import kotlinx.parcelize.Parcelize +import org.kodein.di.DI +import org.kodein.di.DIAware +import org.kodein.di.android.closestDI +import org.kodein.di.instance + +class AutofillFakeAuthActivity : AppCompatActivity(), DIAware { + companion object { + private const val KEY_ARGS = "argsv2" + + fun getIntent( + context: Context, + dataset: Dataset, + cipher: DSecret, + structure: AutofillStructure2? = null, + ): Intent = Intent(context, AutofillFakeAuthActivity::class.java).apply { + val args = Args( + dataset = dataset, + accountId = cipher.accountId, + cipherId = cipher.id, + cipherName = cipher.name, + cipherTotpRaw = cipher.login?.totp?.token?.raw, + structure = structure, + ) + putExtra(KEY_ARGS, args) + setExtrasClassLoader(Args::class.java.getClassLoader()) + } + } + + @Parcelize + data class Args( + val dataset: Dataset, + val accountId: String, + val cipherId: String, + val cipherName: String, + val cipherTotpRaw: String?, + val structure: AutofillStructure2? = null, + ) : Parcelable + + override val di: DI by closestDI { this } + + private val args by lazy { + val extras = intent.extras + extras?.classLoader = Args::class.java.getClassLoader() + extras?.getParcelable(KEY_ARGS) + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + recordLog("Opened autofill fake auth activity") + + val result = args?.dataset + if (result != null) { + // We want to copy to OTP code when you autofill an + // entry, so launch a totp service. + launchCopyTotpService() + launchEditService() + launchHistoryService() + + val intent = Intent().apply { + putExtra(AutofillManager.EXTRA_AUTHENTICATION_RESULT, result) + } + setResult(RESULT_OK, intent) + } else { + setResult(RESULT_CANCELED) + } + finish() + } + + private fun launchCopyTotpService() { + val windowCoroutineScope: WindowCoroutineScope by instance() + args?.cipherTotpRaw + .toOption() + .toEither { + NullPointerException() + } + .flatMap { url -> + TotpToken.parse(url) + } + .toIO() + .effectMap(Dispatchers.Main) { + val intent = KeyguardClipboardService.getIntent(this, args?.cipherName, it) + startForegroundService(intent) + } + .handleErrorWith { + ioUnit() + } + .launchIn(windowCoroutineScope) + } + + private fun launchEditService() { + val windowCoroutineScope: WindowCoroutineScope by instance() + val getVaultSession: GetVaultSession by instance() + + getVaultSession() + .toIO() + .effectMap { session -> + val a = session as? MasterSession.Key + ?: return@effectMap ioUnit() + + val addUriCipher: AddUriCipher by a.di.instance() + val request = AddUriCipherRequest( + cipherId = args!!.cipherId, + applicationId = args?.structure?.applicationId, + webDomain = args?.structure?.webDomain, + webScheme = args?.structure?.webScheme, + webView = args?.structure?.webView, + ) + addUriCipher + .invoke(request) + } + .flatten() + .launchIn(windowCoroutineScope) + } + + private fun launchHistoryService() { + val windowCoroutineScope: WindowCoroutineScope by instance() + val getVaultSession: GetVaultSession by instance() + + getVaultSession() + .toIO() + .effectMap { session -> + val a = session as? MasterSession.Key + ?: return@effectMap ioUnit() + + val addCipherUsedAutofillHistory: AddCipherUsedAutofillHistory by a.di.instance() + val request = AddCipherOpenedHistoryRequest( + accountId = args!!.accountId, + cipherId = args!!.cipherId, + ) + addCipherUsedAutofillHistory + .invoke(request) + } + .flatten() + .launchIn(windowCoroutineScope) + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/AutofillSaveActivity.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/AutofillSaveActivity.kt new file mode 100644 index 00000000..99357743 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/AutofillSaveActivity.kt @@ -0,0 +1,290 @@ +package com.artemchep.keyguard.android + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import android.os.Parcelable +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.widthIn +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Close +import androidx.compose.material3.Icon +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.ProvideTextStyle +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.getValue +import androidx.compose.runtime.key +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.AppMode +import com.artemchep.keyguard.LocalAppMode +import com.artemchep.keyguard.android.autofill.AutofillStructure2 +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.feature.home.vault.add.AddRoute +import com.artemchep.keyguard.feature.home.vault.add.of +import com.artemchep.keyguard.platform.recordLog +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.colorizePassword +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.parcelize.Parcelize +import org.kodein.di.DIAware + +class AutofillSaveActivity : BaseActivity(), DIAware { + companion object { + private const val KEY_ARGUMENTS = "arguments" + + fun getIntent( + context: Context, + args: Args, + ): Intent = Intent(context, AutofillSaveActivity::class.java).apply { + putExtra(KEY_ARGUMENTS, args) + } + } + + @Parcelize + data class Args( + val autofillStructure2: AutofillStructure2? = null, + val applicationId: String? = null, + val webDomain: String? = null, + val webScheme: String? = null, + ) : Parcelable + + private val args by lazy { + intent.extras?.getParcelable(KEY_ARGUMENTS) + ?: Args( + applicationId = packageName, + ) + } + + private val af by lazy { + AddRoute.Args.Autofill.of(args) + } + + private fun autofill(secret: DSecret) { + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + recordLog("Opened autofill save activity") + } + + @Composable + override fun Content() { + CompositionLocalProvider( + LocalAppMode provides AppMode.Save( + type = DSecret.Type.Login, + args = args, + onAutofill = ::autofill, + ), + ) { + args.autofillStructure2?.items?.forEach { + it.hint + } + AutofillScaffold( + topBar = { + Column { + Row( + modifier = Modifier + .padding( + vertical = 8.dp, + horizontal = Dimens.horizontalPadding, + ), + verticalAlignment = Alignment.CenterVertically, + ) { + Text( + modifier = Modifier + .weight(1f), + text = "Save form data", + style = MaterialTheme.typography.titleLarge, + ) + val context by rememberUpdatedState(newValue = LocalContext.current) + TextButton( + modifier = Modifier + .padding(start = Dimens.horizontalPadding), + onClick = { + context.closestActivityOrNull?.finish() + }, + ) { + Icon(Icons.Outlined.Close, null) + Spacer( + modifier = Modifier + .width(Dimens.buttonIconPadding), + ) + Text( + text = stringResource(Res.strings.close), + textAlign = TextAlign.Center, + ) + } + } + Column( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + ) { + // Login + val username = af.username + if (username != null) { + key("username") { + TwoColumnRow( + title = stringResource(Res.strings.username), + value = username, + ) + } + } + val password = af.password + if (password != null) { + key("password") { + val colorizedPassword = colorizePassword( + password = password, + contentColor = LocalContentColor.current, + ) + TwoColumnRow( + title = stringResource(Res.strings.password), + value = colorizedPassword, + ) + } + } + + // Identity + val email = af.email + if (email != null) { + key("email") { + TwoColumnRow( + title = stringResource(Res.strings.email), + value = email, + ) + } + } + val phone = af.phone + if (phone != null) { + key("phone") { + TwoColumnRow( + title = stringResource(Res.strings.phone_number), + value = phone, + ) + } + } + val personName = af.personName + if (personName != null) { + key("personName") { + TwoColumnRow( + title = "Person name", + value = personName, + ) + } + } + + // Url + val applicationId = af.applicationId + val webDomain = af.webDomain + if ( + applicationId != null || + webDomain != null + ) { + Spacer( + modifier = Modifier + .height(8.dp), + ) + val textStyle = MaterialTheme.typography.bodySmall + .copy( + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + ) + if (applicationId != null) { + key("app") { + ProvideTextStyle( + value = textStyle, + ) { + TwoColumnRow( + title = "App", + value = applicationId, + ) + } + } + } + if (webDomain != null) { + key("webDomain") { + ProvideTextStyle( + value = textStyle, + ) { + TwoColumnRow( + title = "Website", + value = webDomain, + ) + } + } + } + } + } + Spacer( + modifier = Modifier + .height(8.dp), + ) + } + }, + ) + } + } +} + +@Composable +private fun TwoColumnRow( + modifier: Modifier = Modifier, + title: String, + value: CharSequence, +) { + Row( + modifier = modifier, + verticalAlignment = Alignment.Top, + ) { + Text( + modifier = Modifier + .weight(2f) + .widthIn(max = 120.dp), + text = title, + fontWeight = FontWeight.Medium, + ) + Spacer( + modifier = Modifier + .width(16.dp), + ) + + val valueModifier = Modifier + .weight(3f) + .widthIn(max = 120.dp) + when (value) { + is String -> { + Text( + modifier = valueModifier, + text = value, + ) + } + + is AnnotatedString -> { + Text( + modifier = valueModifier, + text = value, + ) + } + + else -> error("Unsupported value type!") + } + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/BaseActivity.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/BaseActivity.kt new file mode 100644 index 00000000..0957e62d --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/BaseActivity.kt @@ -0,0 +1,488 @@ +package com.artemchep.keyguard.android + +import android.content.ActivityNotFoundException +import android.content.Intent +import android.net.Uri +import android.os.Bundle +import android.view.WindowManager +import android.webkit.MimeTypeMap +import androidx.activity.compose.setContent +import androidx.appcompat.app.AppCompatActivity +import androidx.browser.customtabs.CustomTabsIntent +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.contentColorFor +import androidx.compose.runtime.Composable +import androidx.compose.runtime.DisposableEffect +import androidx.compose.ui.ExperimentalComposeUiApi +import androidx.compose.ui.Modifier +import androidx.compose.ui.semantics.semantics +import androidx.compose.ui.semantics.testTagsAsResourceId +import androidx.core.content.FileProvider +import androidx.core.net.toFile +import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen +import androidx.core.view.WindowCompat +import androidx.lifecycle.lifecycleScope +import com.artemchep.keyguard.common.io.effectTap +import com.artemchep.keyguard.common.io.flatMap +import com.artemchep.keyguard.common.io.ioUnit +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.io.toIO +import com.artemchep.keyguard.common.model.MasterSession +import com.artemchep.keyguard.common.model.ToastMessage +import com.artemchep.keyguard.common.service.logging.LogLevel +import com.artemchep.keyguard.common.service.logging.LogRepository +import com.artemchep.keyguard.common.service.logging.postDebug +import com.artemchep.keyguard.common.usecase.ClearVaultSession +import com.artemchep.keyguard.common.usecase.GetAllowScreenshots +import com.artemchep.keyguard.common.usecase.GetUseExternalBrowser +import com.artemchep.keyguard.common.usecase.GetVaultSession +import com.artemchep.keyguard.common.usecase.ShowMessage +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.copy.PermissionServiceAndroid +import com.artemchep.keyguard.feature.navigation.LocalNavigationBackHandler +import com.artemchep.keyguard.feature.navigation.N +import com.artemchep.keyguard.feature.navigation.NavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.NavigationRouterBackHandler +import com.artemchep.keyguard.ui.theme.KeyguardTheme +import com.google.firebase.crashlytics.ktx.crashlytics +import com.google.firebase.ktx.Firebase +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.onEach +import org.kodein.di.DIAware +import org.kodein.di.android.closestDI +import org.kodein.di.compose.rememberInstance +import org.kodein.di.instance + +abstract class BaseActivity : AppCompatActivity(), DIAware { + override val di by closestDI() + + private val logRepository: LogRepository by instance() + + private val permissionService: PermissionServiceAndroid by instance() + + private val navTag = N.tag("BaseActivity") + + /** + * `true` if we should open links in the external browser app, + * `false` if we should use the chrome tab. + */ + private var lastUseExternalBrowser: Boolean = false + + @OptIn(ExperimentalComposeUiApi::class) + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + installSplashScreen() + + val getAllowScreenshots by instance() + getAllowScreenshots() + .onEach { allowScreenshots -> + if (allowScreenshots) { + window?.clearFlags(WindowManager.LayoutParams.FLAG_SECURE) + } else { + window?.addFlags(WindowManager.LayoutParams.FLAG_SECURE) + } + } + .launchIn(lifecycleScope) + + val getUseExternalBrowser: GetUseExternalBrowser by instance() + getUseExternalBrowser() + .onEach { useExternalBrowser -> + lastUseExternalBrowser = useExternalBrowser + } + .launchIn(lifecycleScope) + + WindowCompat.setDecorFitsSystemWindows(window, false) + setContent { + KeyguardTheme { + val containerColor = MaterialTheme.colorScheme.background + val contentColor = contentColorFor(containerColor) + Surface( + modifier = Modifier.semantics { + // Allows to use testTag() for UiAutomator's resource-id. + // It can be enabled high in the compose hierarchy, + // so that it's enabled for the whole subtree + testTagsAsResourceId = true + }, + color = containerColor, + contentColor = contentColor, + ) { + Navigation { + Content() + } + } + } + } + } + + @Composable + private fun Navigation( + block: @Composable () -> Unit, + ) = NavigationRouterBackHandler( + onBackPressedDispatcher = onBackPressedDispatcher, + ) { + val showMessage by rememberInstance() + NavigationController( + scope = lifecycleScope, + canPop = flowOf(false), + handle = { intent -> + handleNavigationIntent( + intent = intent, + showMessage = showMessage, + ) + }, + ) { controller -> + val backHandler = LocalNavigationBackHandler.current + + DisposableEffect( + controller, + backHandler, + ) { + val registration = backHandler.register(controller, emptyList()) + onDispose { + registration() + } + } + + block() + } + } + + private fun handleNavigationIntent( + intent: NavigationIntent, + showMessage: ShowMessage, + ) = kotlin.run { + when (intent) { + is NavigationIntent.NavigateToPreview -> handleNavigationIntent(intent, showMessage) + is NavigationIntent.NavigateToPreviewInFileManager -> handleNavigationIntent(intent, showMessage) + is NavigationIntent.NavigateToSend -> handleNavigationIntent(intent, showMessage) + is NavigationIntent.NavigateToLargeType -> handleNavigationIntent(intent, showMessage) + is NavigationIntent.NavigateToShare -> handleNavigationIntent(intent, showMessage) + is NavigationIntent.NavigateToApp -> handleNavigationIntent(intent, showMessage) + is NavigationIntent.NavigateToPhone -> handleNavigationIntent(intent, showMessage) + is NavigationIntent.NavigateToSms -> handleNavigationIntent(intent, showMessage) + is NavigationIntent.NavigateToEmail -> handleNavigationIntent(intent, showMessage) + is NavigationIntent.NavigateToBrowser -> + if (lastUseExternalBrowser) { + handleNavigationIntentExternalBrowser(intent, showMessage) + } else { + handleNavigationIntentInAppBrowser(intent, showMessage) + } + // Should never be called, because we should disable + // custom back button handling if we have nothing to + // handle. + is NavigationIntent.Pop -> { + val msg = "Called Activity.finish() manually. We should have stopped " + + "intercepting back button presses." + logRepository.post(navTag, msg, level = LogLevel.WARNING) + supportFinishAfterTransition() + } + + else -> return@run intent + } + null // handled + } + + private fun handleNavigationIntent( + intent: NavigationIntent.NavigateToPreview, + showMessage: ShowMessage, + ) { + logRepository.postDebug(navTag) { + "Navigating to preview '${intent.uri}' with a file name set to " + + "'${intent.fileName}'" + } + kotlin.runCatching { + val launchIntent = Intent(Intent.ACTION_VIEW).apply { + populateFileData( + uri = intent.uri, + fileName = intent.fileName, + ) + } + launchIntent.let(::startActivity) + }.onFailure { e -> + showMessage.internalShowNavigationErrorMessage(e) + } + } + + private fun handleNavigationIntent( + intent: NavigationIntent.NavigateToPreviewInFileManager, + showMessage: ShowMessage, + ) { + logRepository.postDebug(navTag) { + "Navigating to preview in file manager '${intent.uri}' with a file name set to " + + "'${intent.fileName}'" + } + kotlin.runCatching { + // TODO: + }.onFailure { e -> + showMessage.internalShowNavigationErrorMessage(e) + } + } + + private fun handleNavigationIntent( + intent: NavigationIntent.NavigateToSend, + showMessage: ShowMessage, + ) { + logRepository.postDebug(navTag) { + "Navigating to send '${intent.uri}' with a file name set to " + + "'${intent.fileName}'" + } + kotlin.runCatching { + val launchIntent = Intent(Intent.ACTION_SEND).apply { + populateFileData( + uri = intent.uri, + fileName = intent.fileName, + ) + } + launchIntent.let(::startActivity) + }.onFailure { e -> + showMessage.internalShowNavigationErrorMessage(e) + } + } + + private fun handleNavigationIntent( + intent: NavigationIntent.NavigateToLargeType, + showMessage: ShowMessage, + ) { + logRepository.postDebug(navTag) { + "Navigating to large type." + } + + val launchIntent = LargeTypeActivity.getIntent( + context = this, + args = LargeTypeActivity.Args( + text = intent.text, + colorize = intent.colorize, + ), + ) + kotlin.runCatching { + startActivity(launchIntent) + + // If everything is fine, obtain the session + // and lock the vault + val windowCoroutineScope by instance() + val getVaultSession by instance() + getVaultSession() + .toIO() + .effectTap { + // Introduce a little delay, so we lock the vault after + // the navigation animation is complete. + delay(300L) + } + .flatMap { session -> + when (session) { + is MasterSession.Key -> { + val lockVault by session.di.instance() + lockVault() + } + + is MasterSession.Empty -> ioUnit() + } + } + .launchIn(windowCoroutineScope) + }.onFailure { e -> + showMessage.internalShowNavigationErrorMessage(e) + } + } + + private fun handleNavigationIntent( + intent: NavigationIntent.NavigateToShare, + showMessage: ShowMessage, + ) { + logRepository.postDebug(navTag) { + "Navigating to share." + } + + kotlin.runCatching { + val launchIntent = Intent(Intent.ACTION_SEND).apply { + type = "text/plain" + putExtra(Intent.EXTRA_TEXT, intent.text) + } + val chooserIntent = Intent.createChooser(launchIntent, "Share") + startActivity(chooserIntent) + }.onFailure { e -> + showMessage.internalShowNavigationErrorMessage(e) + } + } + + private fun Intent.populateFileData( + uri: String, + fileName: String?, + ) { + val file = Uri.parse(uri).toFile() + val type = fileName?.substringAfterLast('.') + ?.lowercase() + ?.let { ext -> + MimeTypeMap.getSingleton().getMimeTypeFromExtension(ext) + } + ?: "*/*" + + val contentUri = kotlin.run { + val context = this@BaseActivity + val authority = "$packageName.fileProvider" + // if possible specify desired file name + if (fileName != null) { + FileProvider.getUriForFile(context, authority, file, fileName) + } else { + FileProvider.getUriForFile(context, authority, file) + } + } + putExtra(Intent.EXTRA_STREAM, contentUri) + setDataAndType(contentUri, type) + addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) + + if (fileName != null) { + putExtra(Intent.EXTRA_SUBJECT, fileName) + } + } + + private fun handleNavigationIntent( + intent: NavigationIntent.NavigateToApp, + showMessage: ShowMessage, + ) { + logRepository.postDebug(navTag) { + "Navigating to app '${intent.packageName}'" + } + kotlin.runCatching { + val launchIntent = packageManager + .getLaunchIntentForPackage(intent.packageName) + launchIntent?.let(::startActivity) + }.onFailure { e -> + showMessage.internalShowNavigationErrorMessage(e) + } + } + + private fun handleNavigationIntent( + intent: NavigationIntent.NavigateToPhone, + showMessage: ShowMessage, + ) { + logRepository.postDebug(navTag) { + "Navigating to call '${intent.phoneNumber}'" + } + kotlin.runCatching { + val launchIntent = Intent(Intent.ACTION_DIAL).apply { + data = Uri.parse("tel:${intent.phoneNumber}") + } + startActivity(launchIntent) + }.onFailure { e -> + showMessage.internalShowNavigationErrorMessage(e) + } + } + + private fun handleNavigationIntent( + intent: NavigationIntent.NavigateToSms, + showMessage: ShowMessage, + ) { + logRepository.postDebug(navTag) { + "Navigating to message '${intent.phoneNumber}'" + } + kotlin.runCatching { + val launchIntent = Intent(Intent.ACTION_VIEW).apply { + data = Uri.parse("sms:${intent.phoneNumber}") + } + startActivity(launchIntent) + }.onFailure { e -> + showMessage.internalShowNavigationErrorMessage(e) + } + } + + private fun handleNavigationIntent( + intent: NavigationIntent.NavigateToEmail, + showMessage: ShowMessage, + ) { + logRepository.postDebug(navTag) { + "Navigating to email '${intent.email}'" + } + kotlin.runCatching { + val launchIntent = Intent(Intent.ACTION_SEND).apply { + putExtra(Intent.EXTRA_EMAIL, arrayOf(intent.email)) + intent.subject?.let { + putExtra(Intent.EXTRA_SUBJECT, it) + } + intent.body?.let { + putExtra(Intent.EXTRA_TEXT, it) + } + // Show only email clients in the list! + selector = kotlin.run { + Intent(Intent.ACTION_SENDTO).apply { + data = Uri.parse("mailto:") + } + } + } + startActivity(launchIntent) + }.onFailure { e -> + showMessage.internalShowNavigationErrorMessage(e) + } + } + + private fun handleNavigationIntentInAppBrowser( + intent: NavigationIntent.NavigateToBrowser, + showMessage: ShowMessage, + ) { + logRepository.postDebug(navTag) { + "Navigating to browser '${intent.url}'" + } + kotlin.runCatching { + val parsedUrl = Uri.parse(intent.url) + try { + val customTabs = CustomTabsIntent.Builder() + .build() + customTabs.launchUrl(this, parsedUrl) + } catch (e: ActivityNotFoundException) { + Intent(Intent.ACTION_VIEW, parsedUrl) + // launch activity + .let(::startActivity) + } + }.onFailure { e -> + showMessage.internalShowNavigationErrorMessage(e) + } + } + + private fun handleNavigationIntentExternalBrowser( + intent: NavigationIntent.NavigateToBrowser, + showMessage: ShowMessage, + ) { + logRepository.postDebug(navTag) { + "Navigating to browser '${intent.url}'" + } + kotlin.runCatching { + val parsedUrl = Uri.parse(intent.url) + Intent(Intent.ACTION_VIEW, parsedUrl) + // launch activity + .let(::startActivity) + }.onFailure { e -> + showMessage.internalShowNavigationErrorMessage(e) + } + } + + private fun ShowMessage.internalShowNavigationErrorMessage(e: Throwable) { + Firebase.crashlytics.recordException(e) + + e.printStackTrace() + + val model = ToastMessage( + type = ToastMessage.Type.ERROR, + title = when (e) { + is ActivityNotFoundException -> "No installed app can handle this request." + else -> "Something went wrong" + }, + ) + copy(model) + } + + @Composable + protected abstract fun Content() + + override fun onRequestPermissionsResult( + requestCode: Int, + permissions: Array, + grantResults: IntArray, + ) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + permissionService.refresh() + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/BaseApp.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/BaseApp.kt new file mode 100644 index 00000000..190cce11 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/BaseApp.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.android + +import android.app.Application +import org.bouncycastle.jce.provider.BouncyCastleProvider +import java.security.Security + +abstract class BaseApp : Application() { + init { + val bcProvider = BouncyCastleProvider() + Security.addProvider(bcProvider) + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/LargeTypeActivity.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/LargeTypeActivity.kt new file mode 100644 index 00000000..db9963c2 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/LargeTypeActivity.kt @@ -0,0 +1,148 @@ +package com.artemchep.keyguard.android + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import android.os.Parcelable +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Close +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Modifier +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.core.os.BundleCompat +import com.artemchep.keyguard.common.model.getOrNull +import com.artemchep.keyguard.feature.largetype.LargeTypeContent +import com.artemchep.keyguard.feature.largetype.produceLargeTypeScreenState +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.feature.navigation.NavigationNode +import com.artemchep.keyguard.feature.navigation.Route +import com.artemchep.keyguard.platform.recordLog +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.KeepScreenOnEffect +import com.artemchep.keyguard.ui.ScaffoldColumn +import com.artemchep.keyguard.ui.toolbar.LargeToolbar +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.parcelize.Parcelize + +/** + * A screen that does show the provided text in a Large type + * style, even if the vault is locked. + */ +class LargeTypeActivity : BaseActivity() { + companion object { + private const val KEY_ARGUMENTS = "arguments" + + fun getIntent( + context: Context, + args: Args, + ): Intent = Intent(context, LargeTypeActivity::class.java).apply { + putExtra(KEY_ARGUMENTS, args) + } + } + + @Parcelize + data class Args( + val text: String, + val colorize: Boolean, + ) : Parcelable + + private val args by lazy { + val extras = intent.extras!! + val model = BundleCompat + .getParcelable(extras, KEY_ARGUMENTS, Args::class.java) + requireNotNull(model) { + "Large type Activity must be called with arguments provided!" + } + } + + private val route by lazy { + LargeTypeRoute( + text = args.text, + colorize = args.colorize, + ) + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + recordLog("Opened large type activity") + } + + @Composable + override fun Content() { + NavigationNode( + id = "LargeType:Main", + route = route, + ) + } +} + +private class LargeTypeRoute( + val text: String, + val colorize: Boolean, +) : Route { + @Composable + override fun Content() { + LargeTypeScreen( + text = text, + colorize = colorize, + ) + } +} + +@Composable +private fun LargeTypeScreen( + text: String, + colorize: Boolean, +) { + val loadableState = produceLargeTypeScreenState( + com.artemchep.keyguard.feature.largetype.LargeTypeRoute.Args( + text = text, + colorize = colorize, + ), + ) + + KeepScreenOnEffect() + + val navigationController by rememberUpdatedState(LocalNavigationController.current) + val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + ScaffoldColumn( + modifier = Modifier + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + LargeToolbar( + title = { + Text(stringResource(Res.strings.largetype_title)) + }, + navigationIcon = { + IconButton( + onClick = { + val intent = NavigationIntent.Pop + navigationController.queue(intent) + }, + ) { + Icon( + imageVector = Icons.Outlined.Close, + contentDescription = null, + ) + } + }, + scrollBehavior = scrollBehavior, + ) + }, + ) { + val state = loadableState.getOrNull() + if (state != null) { + LargeTypeContent( + state = state, + ) + } + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/MainActivity.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/MainActivity.kt new file mode 100644 index 00000000..5815aa12 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/MainActivity.kt @@ -0,0 +1,69 @@ +package com.artemchep.keyguard.android + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import androidx.compose.foundation.layout.Column +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import com.artemchep.keyguard.AppMode +import com.artemchep.keyguard.LocalAppMode +import com.artemchep.keyguard.common.service.deeplink.DeeplinkService +import com.artemchep.keyguard.feature.keyguard.AppRoute +import com.artemchep.keyguard.feature.navigation.NavigationNode +import com.artemchep.keyguard.platform.recordLog +import org.kodein.di.instance + +class MainActivity : BaseActivity() { + companion object { + fun getIntent( + context: Context, + ): Intent = Intent(context, MainActivity::class.java) + } + + private val deeplinkService by instance() + + @Composable + override fun Content() { + Column { + CompositionLocalProvider( + LocalAppMode provides AppMode.Main, + ) { + NavigationNode( + id = "App:Main", + route = AppRoute, + ) + } + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + recordLog("Opened main activity") + updateDeeplinkFromIntent(intent) + } + + override fun onNewIntent(intent: Intent) { + super.onNewIntent(intent) + updateDeeplinkFromIntent(intent) + } + + private fun updateDeeplinkFromIntent(intent: Intent) { + val customFilter = intent.getStringExtra("customFilter") + if (customFilter != null) { + deeplinkService.put("customFilter", customFilter) + } + + val dta = intent.data + if (dta != null) { + val url = dta.toString() + when { + url.startsWith("bitwarden://webauthn-callback") || + url.startsWith("keyguard://webauthn-callback") -> { + val data = dta.getQueryParameter("data") + deeplinkService.put("webauthn-callback", data) + } + } + } + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/Notifications.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/Notifications.kt new file mode 100644 index 00000000..d465f863 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/Notifications.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.android + +import com.artemchep.keyguard.android.downloader.NotificationIdPool + +object Notifications { + val downloads = NotificationIdPool.sequential( + start = 10000, + endExclusive = 20000, + ) + val uploads = NotificationIdPool.sequential(20000) + val totp = NotificationIdPool.sequential(30000) +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyBase64.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyBase64.kt new file mode 100644 index 00000000..d8b7faf8 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyBase64.kt @@ -0,0 +1,19 @@ +package com.artemchep.keyguard.android + +import android.util.Base64 + +object PasskeyBase64 { + private const val flags = Base64.NO_PADDING or Base64.NO_WRAP or Base64.URL_SAFE + + fun encodeToString( + data: ByteArray, + ) = Base64.encodeToString(data, flags) + + fun encodeToStringPadding( + data: ByteArray, + ) = Base64.encodeToString(data, Base64.NO_WRAP or Base64.URL_SAFE) + + fun decode( + data: String, + ) = Base64.decode(data, flags) +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyBeginGetRequest.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyBeginGetRequest.kt new file mode 100644 index 00000000..2fe1cafe --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyBeginGetRequest.kt @@ -0,0 +1,272 @@ +package com.artemchep.keyguard.android + +import android.annotation.SuppressLint +import android.app.Application +import android.app.PendingIntent +import android.content.Context +import android.os.Build +import android.util.Log +import androidx.annotation.RequiresApi +import androidx.credentials.provider.BeginGetCredentialRequest +import androidx.credentials.provider.BeginGetCredentialResponse +import androidx.credentials.provider.BeginGetPasswordOption +import androidx.credentials.provider.BeginGetPublicKeyCredentialOption +import androidx.credentials.provider.CallingAppInfo +import androidx.credentials.provider.CredentialEntry +import androidx.credentials.provider.PublicKeyCredentialEntry +import com.artemchep.keyguard.android.downloader.journal.CipherHistoryOpenedRepository +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.toIO +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.usecase.PasskeyTarget +import com.artemchep.keyguard.common.usecase.PasskeyTargetCheck +import com.artemchep.keyguard.feature.auth.common.util.REGEX_IPV4 +import kotlinx.datetime.Instant +import kotlinx.datetime.toJavaInstant +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.Json +import org.kodein.di.DirectDI +import org.kodein.di.instance + +@SuppressLint("RestrictedApi") +@RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE) +class PasskeyBeginGetRequest( + private val context: Context, + private val json: Json, + private val passkeyTargetCheck: PasskeyTargetCheck, +) { + // https://www.w3.org/TR/webauthn-2/#dictionary-assertion-options + @Serializable + private data class PublicKeyCredentialRequestOptions( + val allowCredentials: List = emptyList(), + @SerialName("challenge") + val challengeBase64: String, + val rpId: String, + val userVerification: UserVerification? = UserVerification.PREFERRED, + // https://www.w3.org/TR/webauthn-2/#enum-attestation-convey + val attestation: String? = "none", + ) { + // https://www.w3.org/TR/webauthn-2/#enum-userVerificationRequirement + enum class UserVerification { + @SerialName("required") + REQUIRED, + + @SerialName("preferred") + PREFERRED, + + @SerialName("discouraged") + DISCOURAGED, + } + + // https://www.w3.org/TR/webauthn-2/#dictionary-credential-descriptor + @Serializable + data class PublicKeyCredentialDescriptor( + val type: String, + @SerialName("id") + val idBase64: String, + // https://www.w3.org/TR/webauthn-2/#enum-transport + val transports: List = emptyList(), + ) + } + + constructor( + directDI: DirectDI, + ) : this( + context = directDI.instance(), + json = directDI.instance(), + passkeyTargetCheck = directDI.instance(), + ) + + suspend fun processGetCredentialsRequest( + cipherHistoryOpenedRepository: CipherHistoryOpenedRepository, + request: BeginGetCredentialRequest, + ciphers: List, + userVerified: Boolean = false, + ): BeginGetCredentialResponse { + val credentialEntries = request + .beginGetCredentialOptions + .flatMap { option -> + when (option) { + is BeginGetPasswordOption -> populatePasswordData( + callingAppInfo = request.callingAppInfo, + option = option, + ciphers = ciphers, + userVerified = userVerified, + ) + + is BeginGetPublicKeyCredentialOption -> populatePasskeyData( + cipherHistoryOpenedRepository = cipherHistoryOpenedRepository, + callingAppInfo = request.callingAppInfo, + option = option, + ciphers = ciphers, + userVerified = userVerified, + ) + + else -> { + emptyList() + } + } + } + return BeginGetCredentialResponse(credentialEntries) + } + + private suspend fun populatePasswordData( + callingAppInfo: CallingAppInfo?, + option: BeginGetPasswordOption, + ciphers: List, + userVerified: Boolean, + ): List { + return emptyList() + } + + private suspend fun populatePasskeyData( + cipherHistoryOpenedRepository: CipherHistoryOpenedRepository, + callingAppInfo: CallingAppInfo?, + option: BeginGetPublicKeyCredentialOption, + ciphers: List, + userVerified: Boolean, + ): List { + val requestOptions: PublicKeyCredentialRequestOptions = + json.decodeFromString(option.requestJson) + // Ignore not allowed relying party IDs. + if (!validateRpId(requestOptions.rpId)) { + return emptyList() + } + val target = kotlin.run { + val allowCredentials = requestOptions.allowCredentials + .map { credentialDescriptor -> + val credentialId = kotlin.run { + val data = PasskeyBase64.decode(credentialDescriptor.idBase64) + PasskeyCredentialId.decode(data) + } + PasskeyTarget.AllowedCredential( + credentialId = credentialId, + ) + } + PasskeyTarget( + allowedCredentials = allowCredentials + .takeIf { it.isNotEmpty() }, + rpId = requestOptions.rpId, + ) + } + return ciphers + .flatMap { cipher -> + if (cipher.deleted) { + return@flatMap emptyList() + } + + val credentials = cipher.login?.fido2Credentials.orEmpty() + credentials + .mapNotNull { credential -> + val valid = passkeyTargetCheck( + credential, + target, + ).attempt().bind().isRight { it } + if (!valid) { + return@mapNotNull null + } + // At this moment we support a small set of credentials, + // for example we only support one algorithm + curve pair. + val supported = credential.keyAlgorithm == "ECDSA" && + credential.keyCurve == "P-256" && + credential.keyType == "public-key" + if (!supported) { + return@mapNotNull null + } + + // Load last used time, this time might be used to sort the items + // on the system user interface. + val lastUsedTime = getCredentialLastUsedTimeOrNull( + cipherHistoryOpenedRepository = cipherHistoryOpenedRepository, + cipherId = cipher.id, + credentialId = credential.credentialId, + ) + val requiresUserVerification = cipher.reprompt || + requestOptions.userVerification == PublicKeyCredentialRequestOptions.UserVerification.REQUIRED + + val username = credential.userDisplayName + // Normally the username should never be empty, + // be i've seen coinbase do that. + ?: "Unknown username" + PublicKeyCredentialEntry.Builder( + context = context, + username = username, + pendingIntent = createGetPasskeyPendingIntent( + accountId = cipher.accountId, + cipherId = cipher.id, + credId = credential.credentialId, + cipherName = cipher.name, + credRpId = credential.rpId, + credUserDisplayName = username, + requiresUserVerification = requiresUserVerification, + userVerified = userVerified, + ), + beginGetPublicKeyCredentialOption = option, + ) + .setLastUsedTime(lastUsedTime?.toJavaInstant()) + .setAutoSelectAllowed(lastUsedTime != null) + .setDisplayName(cipher.name) + .build() + } + } + } + + private suspend fun getCredentialLastUsedTimeOrNull( + cipherHistoryOpenedRepository: CipherHistoryOpenedRepository, + cipherId: String, + credentialId: String, + ): Instant? = cipherHistoryOpenedRepository + .getCredentialLastUsed( + cipherId = cipherId, + credentialId = credentialId, + ) + .toIO() + .attempt() + .bind() + .getOrNull() + + // See: + // https://webauthn-doc.spomky-labs.com/prerequisites/the-relying-party#relying-party-id + private suspend fun validateRpId( + rpId: String, + ): Boolean = '/' !in rpId && + ':' !in rpId && + '@' !in rpId && + !REGEX_IPV4.matches(rpId) + + // + // Pending intent + // + + private fun createGetPasskeyPendingIntent( + accountId: String, + cipherId: String, + credId: String, + cipherName: String, + credRpId: String, + credUserDisplayName: String, + requiresUserVerification: Boolean, + userVerified: Boolean, + ): PendingIntent { + val intent = PasskeyGetActivity.getIntent( + context = context, + args = PasskeyGetActivity.Args( + accountId = accountId, + cipherId = cipherId, + credId = credId, + cipherName = cipherName, + credRpId = credRpId, + credUserDisplayName = credUserDisplayName, + requiresUserVerification = requiresUserVerification, + userVerified = userVerified, + ), + ) + val flags = PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_MUTABLE + val rc = getNextPendingIntentRequestCode() + return PendingIntent.getActivity(context, rc, intent, flags) + } + + private fun getNextPendingIntentRequestCode() = PendingIntents.credential.obtainId() +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyCompose.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyCompose.kt new file mode 100644 index 00000000..92b22d29 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyCompose.kt @@ -0,0 +1,91 @@ +package com.artemchep.keyguard.android + +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.width +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Close +import androidx.compose.material.icons.outlined.ErrorOutline +import androidx.compose.material3.Button +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.OtherScaffold +import com.artemchep.keyguard.ui.theme.Dimens +import dev.icerock.moko.resources.compose.stringResource + +@Composable +fun PasskeyError( + modifier: Modifier = Modifier, + title: String?, + message: String, + onFinish: () -> Unit, +) { + OtherScaffold( + modifier = modifier, + ) { + Icon( + modifier = Modifier + .align(Alignment.Start), + imageVector = Icons.Outlined.ErrorOutline, + contentDescription = null, + tint = MaterialTheme.colorScheme.error, + ) + if (title != null) { + Spacer( + modifier = Modifier + .height(8.dp), + ) + Text( + modifier = Modifier + .fillMaxWidth(), + text = title, + color = MaterialTheme.colorScheme.error, + style = MaterialTheme.typography.titleMedium, + ) + } + Spacer( + modifier = Modifier + .height(24.dp), + ) + Text( + modifier = Modifier + .fillMaxWidth(), + text = message, + style = MaterialTheme.typography.bodyMedium, + ) + Spacer( + modifier = Modifier + .height(16.dp), + ) + val updatedOnFinish by rememberUpdatedState(onFinish) + Button( + modifier = Modifier + .fillMaxWidth(), + onClick = { + updatedOnFinish() + }, + ) { + Icon( + imageVector = Icons.Outlined.Close, + contentDescription = null, + ) + Spacer( + modifier = Modifier + .width(Dimens.buttonIconPadding), + ) + Text( + text = stringResource(Res.strings.close), + ) + } + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyCreateActivity.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyCreateActivity.kt new file mode 100644 index 00000000..645eaf7b --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyCreateActivity.kt @@ -0,0 +1,363 @@ +package com.artemchep.keyguard.android + +import android.annotation.SuppressLint +import android.app.Activity +import android.content.Context +import android.content.Intent +import android.os.Build +import android.os.Bundle +import androidx.annotation.RequiresApi +import androidx.compose.animation.Crossfade +import androidx.compose.foundation.layout.* +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Add +import androidx.compose.material.icons.outlined.Close +import androidx.compose.material.icons.outlined.ErrorOutline +import androidx.compose.material3.* +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import androidx.credentials.CreatePublicKeyCredentialRequest +import androidx.credentials.CreatePublicKeyCredentialResponse +import androidx.credentials.exceptions.CreateCredentialException +import androidx.credentials.exceptions.CreateCredentialUnknownException +import androidx.credentials.provider.PendingIntentHandler +import androidx.lifecycle.lifecycleScope +import com.artemchep.keyguard.AppMode +import com.artemchep.keyguard.LocalAppMode +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.model.AddPasskeyCipherRequest +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.MasterSession +import com.artemchep.keyguard.common.model.VaultState +import com.artemchep.keyguard.common.usecase.AddPasskeyCipher +import com.artemchep.keyguard.common.usecase.GetVaultSession +import com.artemchep.keyguard.feature.keyguard.ManualAppScreen +import com.artemchep.keyguard.feature.keyguard.ManualAppScreenOnCreate +import com.artemchep.keyguard.feature.keyguard.ManualAppScreenOnLoading +import com.artemchep.keyguard.feature.keyguard.ManualAppScreenOnMain +import com.artemchep.keyguard.feature.keyguard.ManualAppScreenOnUnlock +import com.artemchep.keyguard.platform.crashlyticsIsEnabled +import com.artemchep.keyguard.platform.recordException +import com.artemchep.keyguard.platform.recordLog +import com.artemchep.keyguard.provider.bitwarden.CreatePasskey +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.OtherScaffold +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.async +import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.filterNotNull +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.mapNotNull +import kotlinx.coroutines.launch +import kotlinx.datetime.Clock +import kotlinx.serialization.json.Json +import org.kodein.di.* + +@RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE) +class PasskeyCreateActivity : BaseActivity(), DIAware { + companion object { + fun getIntent( + context: Context, + ): Intent = Intent(context, PasskeyCreateActivity::class.java) + } + + private val getVaultSession by instance() + + private val json by instance() + + private val passkeyBeginGetRequest by instance() + + private val sdfsdff by lazy { + val request = PendingIntentHandler.retrieveProviderCreateCredentialRequest(intent) + requireNotNull(request) { + "Create request from framework is empty." + } + } + + private val createPasskeyData by lazy { + kotlin.runCatching { + val r = sdfsdff.callingRequest as CreatePublicKeyCredentialRequest + val data = json.decodeFromString(r.requestJson) + data + }.getOrNull() + } + + private val eheheState = mutableStateOf(Ahhehe.Loading) + + private sealed interface Ahhehe { + data object Loading : Ahhehe + + /** + * A screen that asks a user to + * authenticate himself. + */ + class PickCipher( + val onComplete: (DSecret) -> Unit, + ) : Ahhehe + + /** + * A screen that shows an error to a user and + * offers a button to close the app. + */ + class Error( + val title: String? = null, + val message: String, + val onFinish: () -> Unit, + ) : Ahhehe + } + + @SuppressLint("RestrictedApi") + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + val startedAt = Clock.System.now() + recordLog("Opened passkey create activity") + + // Observe the vault session to detect when a user + // unlocks the vault. + lifecycleScope.launch { + val session = getVaultSession() + .mapNotNull { it as? MasterSession.Key } + .first() + + val cipherState = MutableStateFlow(null) + eheheState.value = Ahhehe.PickCipher { + cipherState.value = it + } + // Wait till the user picks a cipher to + // save the passkey to. + val cipher = cipherState + .filterNotNull() + .first() + eheheState.value = Ahhehe.Loading + + val (response, local) = runCatching { + PasskeyUtils.withProcessingMinTime { + processUnlockedVault( + session = session, + userVerified = true, + ) + } + }.getOrElse { + recordException(it) + + val intent = Intent().apply { + val e = it as? CreateCredentialException + ?: CreateCredentialUnknownException() + PendingIntentHandler.setCreateCredentialException( + intent = this, + exception = e, + ) + } + setResult(Activity.RESULT_OK, intent) + + // Show the error to a user + val uiState = Ahhehe.Error( + title = Res.strings.error_failed_create_passkey + .getString(this@PasskeyCreateActivity), + message = it.localizedMessage + ?: it.message + ?: "Something went wrong", + onFinish = { + finish() + }, + ) + eheheState.value = uiState + return@launch // end + } + + val request = AddPasskeyCipherRequest( + cipherId = cipher.id, + data = local, + ) + val addpasskey = session.di.direct.instance() + val addpasskeyResult = addpasskey(request) + .attempt() + .bind() + addpasskeyResult.fold( + ifLeft = { + val intent = Intent().apply { + val e = it as? CreateCredentialException + ?: CreateCredentialUnknownException("Failed to add the passkey to the vault.") + PendingIntentHandler.setCreateCredentialException( + intent = this, + exception = e, + ) + } + setResult(Activity.RESULT_OK, intent) + + // Show the error to a user + val uiState = Ahhehe.Error( + title = Res.strings.error_failed_create_passkey + .getString(this@PasskeyCreateActivity), + message = it.localizedMessage + ?: it.message + ?: "Something went wrong", + onFinish = { + finish() + }, + ) + eheheState.value = uiState + }, + ifRight = { + val intent = Intent().apply { + PendingIntentHandler.setCreateCredentialResponse( + intent = this, + response = response, + ) + } + setResult(Activity.RESULT_OK, intent) + finish() + }, + ) + } + } + + @Composable + override fun Content() { + ExtensionScaffold( + header = { + Row( + modifier = Modifier + .padding( + start = Dimens.horizontalPadding, + end = 8.dp, + top = 8.dp, + bottom = 8.dp, + ), + verticalAlignment = Alignment.CenterVertically, + ) { + Column( + modifier = Modifier + .weight(1f) + .align(Alignment.CenterVertically), + ) { + Text( + text = stringResource(Res.strings.passkey_create_header), + style = MaterialTheme.typography.labelSmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + overflow = TextOverflow.Ellipsis, + maxLines = 1, + ) + val data = createPasskeyData + if (data != null) { + Row { + Text( + text = data.user.displayName, + style = MaterialTheme.typography.titleSmall, + overflow = TextOverflow.Ellipsis, + maxLines = 1, + ) + Text( + modifier = Modifier + .weight(1f, fill = false), + text = "@" + data.rp.id, + style = MaterialTheme.typography.titleSmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + overflow = TextOverflow.Ellipsis, + maxLines = 1, + ) + } + } else { + Text( + text = "Failed to parse a create request data", + style = MaterialTheme.typography.titleMedium, + overflow = TextOverflow.Ellipsis, + maxLines = 2, + ) + } + } + + val context by rememberUpdatedState(newValue = LocalContext.current) + TextButton( + onClick = { + context.closestActivityOrNull?.finish() + }, + ) { + Icon(Icons.Outlined.Close, null) + Spacer( + modifier = Modifier + .width(Dimens.buttonIconPadding), + ) + Text( + text = stringResource(Res.strings.cancel), + textAlign = TextAlign.Center, + ) + } + } + }, + ) { + // Instead of showing a vault to a user, we continue showing the + // loading screen until we automatically form a response and close + // the activity. + ManualAppScreen { vaultState -> + when (vaultState) { + is VaultState.Create -> ManualAppScreenOnCreate(vaultState) + is VaultState.Unlock -> ManualAppScreenOnUnlock(vaultState) + is VaultState.Loading -> ManualAppScreenOnLoading(vaultState) + is VaultState.Main -> { + val state = eheheState.value + when (state) { + is Ahhehe.Loading -> { + val fakeLoadingState = VaultState.Loading + ManualAppScreenOnLoading(fakeLoadingState) + } + + is Ahhehe.Error -> { + PasskeyError( + title = state.title, + message = state.message, + onFinish = state.onFinish, + ) + } + + is Ahhehe.PickCipher -> { + val updatedOnAuthenticated by rememberUpdatedState(state.onComplete) + val appMode = remember { + AppMode.SavePasskey( + rpId = createPasskeyData?.rp?.id, + onComplete = { cipher -> + updatedOnAuthenticated.invoke(cipher) + }, + ) + } + CompositionLocalProvider( + LocalAppMode provides appMode, + ) { + ManualAppScreenOnMain(vaultState) + } + } + } + } + } + } + } + } + + private suspend fun processUnlockedVault( + session: MasterSession.Key, + userVerified: Boolean, + ): Pair { + val request = PendingIntentHandler.retrieveProviderCreateCredentialRequest(intent) + requireNotNull(request) { + "Create request from framework is empty." + } + + return passkeyBeginGetRequest.processGetCredentialsRequest( + request = request, + userVerified = userVerified, + ) + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyCreateRequest.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyCreateRequest.kt new file mode 100644 index 00000000..06e513de --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyCreateRequest.kt @@ -0,0 +1,207 @@ +package com.artemchep.keyguard.android + +import android.annotation.SuppressLint +import android.app.Application +import android.content.Context +import android.os.Build +import androidx.annotation.RequiresApi +import androidx.credentials.CreatePublicKeyCredentialRequest +import androidx.credentials.CreatePublicKeyCredentialResponse +import androidx.credentials.provider.ProviderCreateCredentialRequest +import androidx.credentials.webauthn.Cbor +import com.artemchep.keyguard.common.model.AddPasskeyCipherRequest +import com.artemchep.keyguard.common.service.text.Base64Service +import com.artemchep.keyguard.provider.bitwarden.CreatePasskey +import kotlinx.serialization.encodeToString +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonObjectBuilder +import kotlinx.serialization.json.add +import kotlinx.serialization.json.buildJsonArray +import kotlinx.serialization.json.buildJsonObject +import kotlinx.serialization.json.put +import org.kodein.di.DirectDI +import org.kodein.di.allInstances +import org.kodein.di.instance +import java.math.BigInteger +import java.security.KeyPair +import java.security.interfaces.ECPublicKey +import java.security.spec.ECPoint + +@SuppressLint("RestrictedApi") +@RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE) +class PasskeyCreateRequest( + private val context: Context, + private val json: Json, + private val base64Service: Base64Service, + private val passkeyUtils: PasskeyUtils, + private val passkeyGenerators: List, +) { + constructor( + directDI: DirectDI, + ) : this( + context = directDI.instance(), + json = directDI.instance(), + base64Service = directDI.instance(), + passkeyUtils = directDI.instance(), + passkeyGenerators = directDI.allInstances(), + ) + + suspend fun processGetCredentialsRequest( + request: ProviderCreateCredentialRequest, + userVerified: Boolean, + ): Pair { + val request2 = request.callingRequest as CreatePublicKeyCredentialRequest + + val data = json.decodeFromString(request2.requestJson) + val gen = passkeyGenerators.firstOrNull { generator -> + val matchingCredentials = data.pubKeyCredParams + .firstOrNull(generator::handles) + matchingCredentials != null + } + requireNotNull(gen) { + "None of the allowed public key parameters are supported by the app." + } + + // Generate a key pair, this pair will be used to sign this and all + // future authentication requests. + val keyPair = gen.keyPair() + + val publicKeyCborBytes = getPublicKeyFromEcKeyPair(keyPair) + val publicKeyAlgorithm = -7 + val publicKeyBytes = keyPair.public.encoded + + val challenge = data.challenge + val rpId = data.rp.id!! + val rpName = data.rp.name + val origin = passkeyUtils.callingAppOrigin(request.callingAppInfo) + val packageName = request.callingAppInfo.packageName + passkeyUtils.requireRpMatchesOrigin( + rpId = rpId, + origin = origin, + packageName = packageName, + ) + + val credentialId = passkeyUtils + .generateCredentialId() + val credentialIdBytes = PasskeyCredentialId.encode(credentialId) + + val clientData = buildJsonObject { + put("type", "webauthn.create") + put("challenge", challenge) + put("origin", origin) + put("androidPackageName", packageName) + } + val clientDataJson = json.encodeToString(clientData) + val clientDataBytes = clientDataJson.toByteArray() + + val authData = passkeyUtils.authData( + rpId = rpId, + counter = 0, + credentialId = credentialIdBytes, + credentialPublicKey = publicKeyCborBytes, + attestation = data.attestation, + userVerification = userVerified, + userPresence = true, + ) + val attestationObjectBytes = defaultAttestationObject( + authData = authData, + ) + + val keyValue = base64Service.encodeToString(keyPair.private.encoded) + val discoverable = data.authenticatorSelection.requireResidentKey || + data.authenticatorSelection.residentKey == "required" || + data.authenticatorSelection.residentKey == "preferred" + val local = AddPasskeyCipherRequest.Data( + credentialId = credentialId, + keyType = "public-key", + keyAlgorithm = "ECDSA", + keyCurve = "P-256", + keyValue = keyValue, + rpId = rpId, + rpName = rpName, + counter = 0, + userHandle = data.user.id, + userName = data.user.name, + userDisplayName = data.user.displayName, + discoverable = discoverable, + ) + + val registrationResponse = buildJsonObject { + put("id", credentialIdBytes) + put("rawId", credentialIdBytes) + put("type", "public-key") + put("authenticatorAttachment", "cross-platform") + put( + "response", + buildJsonObject { + put("clientDataJSON", clientDataBytes) + put("attestationObject", attestationObjectBytes) + put( + "transports", + if (rpId == "google.com") { + buildJsonArray { + add("internal") + add("usb") + } + } else { + buildJsonArray { + add("internal") + } + }, + ) + put("publicKeyAlgorithm", publicKeyAlgorithm) + put("publicKey", publicKeyBytes) + put("authenticatorData", authData) + }, + ) + put("clientExtensionResults", buildJsonObject { }) + } + val registrationResponseJson = json.encodeToString(registrationResponse) + return CreatePublicKeyCredentialResponse(registrationResponseJson) to local + } + + @SuppressLint("RestrictedApi") + private fun defaultAttestationObject( + authData: ByteArray, + ): ByteArray { + val ao = mutableMapOf() + ao["fmt"] = "none" + ao["attStmt"] = emptyMap() + ao["authData"] = authData + return Cbor().encode(ao) + } + + private fun getPublicKeyFromEcKeyPair(keyPair: KeyPair): ByteArray { + val ecPubKey = keyPair.public as ECPublicKey + val ecPoint: ECPoint = ecPubKey.w + + // for now, only covers ES256 + if (ecPoint.affineX.bitLength() > 256 || ecPoint.affineY.bitLength() > 256) return ByteArray( + 0, + ) + + val byteX = bigIntToByteArray32(ecPoint.affineX) + val byteY = bigIntToByteArray32(ecPoint.affineY) + + // refer to RFC9052 Section 7 for details + return "A5010203262001215820".chunked(2).map { it.toInt(16).toByte() }.toByteArray() + + byteX + + "225820".chunked(2).map { it.toInt(16).toByte() }.toByteArray() + + byteY + } + + private fun bigIntToByteArray32(bigInteger: BigInteger): ByteArray { + var ba = bigInteger.toByteArray() + + if (ba.size < 32) { + // append zeros in front + ba = ByteArray(32) + ba + } + // get the last 32 bytes as bigint conversion sometimes put extra zeros at front + return ba.copyOfRange(ba.size - 32, ba.size) + } + + private fun JsonObjectBuilder.put(key: String, data: ByteArray) { + put(key, PasskeyBase64.encodeToString(data)) + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyCredentialId.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyCredentialId.kt new file mode 100644 index 00000000..49b5662d --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyCredentialId.kt @@ -0,0 +1,40 @@ +package com.artemchep.keyguard.android + +import java.nio.ByteBuffer +import java.util.UUID + +object PasskeyCredentialId { + private const val UUID_SIZE_BYTES = Long.SIZE_BYTES * 2 + + fun encode( + credentialId: String, + ): ByteArray { + val uuid = kotlin + .runCatching { + UUID.fromString(credentialId) + } + // The credential id is not conforming to UUID rules, + // this is fine for us (although should not happen), we + // just return data as if it was encoded with base64. + .getOrElse { + return PasskeyBase64.decode(credentialId) + } + return ByteBuffer.allocate(UUID_SIZE_BYTES) + .putLong(uuid.mostSignificantBits) + .putLong(uuid.leastSignificantBits) + .array() + } + + fun decode( + data: ByteArray, + ): String { + if (data.size == UUID_SIZE_BYTES) { + val bb = ByteBuffer.wrap(data) + return UUID( + bb.getLong(), + bb.getLong(), + ).toString() + } + return PasskeyBase64.encodeToString(data) + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyGenerator.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyGenerator.kt new file mode 100644 index 00000000..63d40c01 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyGenerator.kt @@ -0,0 +1,62 @@ +package com.artemchep.keyguard.android + +import com.artemchep.keyguard.provider.bitwarden.CreatePasskeyPubKeyCredParams +import java.security.KeyPair +import java.security.KeyPairGenerator +import java.security.PrivateKey +import java.security.Signature +import java.security.spec.ECGenParameterSpec + +abstract class PasskeyGeneratorBase : PasskeyGenerator { + // https://www.iana.org/assignments/cose/cose.xhtml#algorithms + abstract val type: Int + + /** + * Returns `true` if the generator can handle given + * crypto parameters, `false` otherwise. + */ + override fun handles( + params: CreatePasskeyPubKeyCredParams, + ): Boolean = params.alg == type +} + +interface PasskeyGenerator { + /** + * Returns `true` if the generator can handle given + * crypto parameters, `false` otherwise. + */ + fun handles( + params: CreatePasskeyPubKeyCredParams, + ): Boolean + + fun keyPair(): KeyPair + + fun sign( + key: PrivateKey, + data: ByteArray, + ): ByteArray +} + +class PasskeyGeneratorES256 : PasskeyGeneratorBase() { + /** ECDSA w/ SHA-256 **/ + override val type: Int = -7 + + override fun keyPair(): KeyPair { + val generator = KeyPairGenerator.getInstance("EC").apply { + val spec = ECGenParameterSpec("secp256r1") + initialize(spec) + } + val key = generator.genKeyPair() + return key + } + + override fun sign( + key: PrivateKey, + data: ByteArray, + ): ByteArray { + val sig = Signature.getInstance("SHA256withECDSA") + sig.initSign(key) + sig.update(data) + return sig.sign() + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyGetActivity.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyGetActivity.kt new file mode 100644 index 00000000..6cf7b75b --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyGetActivity.kt @@ -0,0 +1,679 @@ +package com.artemchep.keyguard.android + +import android.annotation.SuppressLint +import android.app.Activity +import android.content.Context +import android.content.Intent +import android.os.Build +import android.os.Bundle +import android.os.Parcelable +import androidx.annotation.RequiresApi +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.text.KeyboardActionScope +import androidx.compose.foundation.text.KeyboardActions +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Close +import androidx.compose.material.icons.outlined.Fingerprint +import androidx.compose.material3.* +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.testTag +import androidx.compose.ui.text.input.ImeAction +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import androidx.credentials.GetCredentialResponse +import androidx.credentials.exceptions.GetCredentialException +import androidx.credentials.exceptions.GetCredentialUnknownException +import androidx.credentials.provider.PendingIntentHandler +import androidx.lifecycle.lifecycleScope +import arrow.optics.optics +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.effectTap +import com.artemchep.keyguard.common.io.ioRaise +import com.artemchep.keyguard.common.io.toIO +import com.artemchep.keyguard.common.model.AddCipherUsedPasskeyHistoryRequest +import com.artemchep.keyguard.common.model.BiometricAuthException +import com.artemchep.keyguard.common.model.BiometricAuthPrompt +import com.artemchep.keyguard.common.model.BiometricAuthPromptSimple +import com.artemchep.keyguard.common.model.BiometricStatus +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.MasterSession +import com.artemchep.keyguard.common.model.PureBiometricAuthPrompt +import com.artemchep.keyguard.common.model.ToastMessage +import com.artemchep.keyguard.common.model.VaultState +import com.artemchep.keyguard.common.model.getOrNull +import com.artemchep.keyguard.common.usecase.AddCipherUsedPasskeyHistory +import com.artemchep.keyguard.common.usecase.BiometricStatusUseCase +import com.artemchep.keyguard.common.usecase.ConfirmAccessByPasswordUseCase +import com.artemchep.keyguard.common.usecase.GetCiphers +import com.artemchep.keyguard.common.usecase.GetVaultSession +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.common.util.flow.EventFlow +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import com.artemchep.keyguard.feature.auth.common.Validated +import com.artemchep.keyguard.feature.auth.common.util.validatedPassword +import com.artemchep.keyguard.feature.biometric.BiometricPromptEffect +import com.artemchep.keyguard.feature.keyguard.ManualAppScreen +import com.artemchep.keyguard.feature.keyguard.ManualAppScreenOnCreate +import com.artemchep.keyguard.feature.keyguard.ManualAppScreenOnLoading +import com.artemchep.keyguard.feature.keyguard.ManualAppScreenOnUnlock +import com.artemchep.keyguard.feature.keyguard.unlock.UnlockScreenContainer +import com.artemchep.keyguard.feature.keyguard.unlock.UnlockState +import com.artemchep.keyguard.feature.loading.LoadingTask +import com.artemchep.keyguard.feature.localization.TextHolder +import com.artemchep.keyguard.feature.navigation.NavigationNode +import com.artemchep.keyguard.feature.navigation.Route +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.platform.recordException +import com.artemchep.keyguard.platform.recordLog +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.OtherScaffold +import com.artemchep.keyguard.ui.PasswordFlatTextField +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.async +import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.mapNotNull +import kotlinx.coroutines.flow.onStart +import kotlinx.coroutines.flow.shareIn +import kotlinx.coroutines.launch +import kotlinx.datetime.Clock +import kotlinx.parcelize.Parcelize +import org.kodein.di.* +import org.kodein.di.compose.localDI + +@RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE) +class PasskeyGetActivity : BaseActivity(), DIAware { + companion object { + private const val KEY_ARGUMENTS = "arguments" + + fun getIntent( + context: Context, + args: Args, + ): Intent = Intent(context, PasskeyGetActivity::class.java).apply { + putExtra(KEY_ARGUMENTS, args) + } + } + + @Parcelize + data class Args( + val accountId: String, + val cipherId: String, + val credId: String, + val cipherName: String, + val credRpId: String, + val credUserDisplayName: String, + val requiresUserVerification: Boolean, + val userVerified: Boolean, + ) : Parcelable + + private val _args by lazy { + intent.extras?.getParcelable(KEY_ARGUMENTS) + } + + private val args: Args get() = requireNotNull(_args) + + private val getVaultSession by instance() + + private val passkeyBeginGetRequest by instance() + + private val eheheState = mutableStateOf(Ahhehe.Loading) + + private sealed interface Ahhehe { + data object Loading : Ahhehe + + /** + * A screen that asks a user to + * authenticate himself. + */ + class RequiresAuthentication( + val onAuthenticated: () -> Unit, + ) : Ahhehe + + /** + * A screen that shows an error to a user and + * offers a button to close the app. + */ + class Error( + val title: String? = null, + val message: String, + val onFinish: () -> Unit, + ) : Ahhehe + } + + @SuppressLint("RestrictedApi") + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + recordLog("Opened passkey get activity") + // Arguments should never be null, we can not proceed + // immediately exit the screen. + if (_args == null) { + finish() + return + } + + val startedAt = Clock.System.now() + // Observe the vault session to detect when a user + // unlocks the vault. + lifecycleScope.launch { + val session = getVaultSession() + .mapNotNull { it as? MasterSession.Key } + .first() + + val userVerifiedState = kotlin.run { + val initialValue = args.userVerified || + session.createdAt > startedAt && + session.origin is MasterSession.Key.Authenticated + MutableStateFlow(initialValue) + } + if (!userVerifiedState.value && args.requiresUserVerification) { + eheheState.value = Ahhehe.RequiresAuthentication { + userVerifiedState.value = true + } + // Wait till the user passes verification process. + userVerifiedState.first { it } + } + eheheState.value = Ahhehe.Loading + + val response = runCatching { + PasskeyUtils.withProcessingMinTime { + val userVerified = userVerifiedState.value + processUnlockedVault( + session = session, + userVerified = userVerified, + ) + } + }.getOrElse { + recordException(it) + + // Something went wrong, finish with the + // exception. + val intent = Intent().apply { + val e = it as? GetCredentialException + ?: GetCredentialUnknownException() + PendingIntentHandler.setGetCredentialException( + intent = this, + exception = e, + ) + } + setResult(Activity.RESULT_OK, intent) + + // Show the error to a user + val uiState = Ahhehe.Error( + title = Res.strings.error_failed_use_passkey + .getString(this@PasskeyGetActivity), + message = it.localizedMessage + ?: it.message + ?: "Something went wrong", + onFinish = { + finish() + }, + ) + eheheState.value = uiState + return@launch // end + } + + // Log that a used has used the passkey. We only do + // it after a successful attempt. + val addCipherUsedPasskey = session.di.direct.instance() + val addCipherUsedPasskeyRequest = AddCipherUsedPasskeyHistoryRequest( + accountId = args.accountId, + cipherId = args.cipherId, + credentialId = args.credId, + ) + addCipherUsedPasskey(addCipherUsedPasskeyRequest) + .attempt() + .bind() + + val intent = Intent().apply { + PendingIntentHandler.setGetCredentialResponse( + intent = this, + response = response, + ) + } + setResult(Activity.RESULT_OK, intent) + finish() + } + } + + @Composable + override fun Content() { + ExtensionScaffold( + header = { + Row( + modifier = Modifier + .padding( + start = Dimens.horizontalPadding, + end = 8.dp, + top = 8.dp, + bottom = 8.dp, + ), + verticalAlignment = Alignment.CenterVertically, + ) { + Column( + modifier = Modifier + .weight(1f) + .align(Alignment.CenterVertically), + ) { + Text( + text = stringResource(Res.strings.passkey_auth_via_header), + style = MaterialTheme.typography.labelSmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + overflow = TextOverflow.Ellipsis, + maxLines = 1, + ) + Row { + Text( + text = args.credUserDisplayName, + style = MaterialTheme.typography.titleSmall, + overflow = TextOverflow.Ellipsis, + maxLines = 1, + ) + Text( + modifier = Modifier + .weight(1f, fill = false), + text = "@" + args.credRpId, + style = MaterialTheme.typography.titleSmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + overflow = TextOverflow.Ellipsis, + maxLines = 1, + ) + } + } + + val context by rememberUpdatedState(newValue = LocalContext.current) + TextButton( + onClick = { + context.closestActivityOrNull?.finish() + }, + ) { + Icon(Icons.Outlined.Close, null) + Spacer( + modifier = Modifier + .width(Dimens.buttonIconPadding), + ) + Text( + text = stringResource(Res.strings.cancel), + textAlign = TextAlign.Center, + ) + } + } + }, + ) { + // Instead of showing a vault to a user, we continue showing the + // loading screen until we automatically form a response and close + // the activity. + ManualAppScreen { vaultState -> + when (vaultState) { + is VaultState.Create -> ManualAppScreenOnCreate(vaultState) + is VaultState.Unlock -> ManualAppScreenOnUnlock(vaultState) + is VaultState.Loading -> ManualAppScreenOnLoading(vaultState) + is VaultState.Main -> { + val state = eheheState.value + when (state) { + is Ahhehe.Loading -> { + val fakeLoadingState = VaultState.Loading + ManualAppScreenOnLoading(fakeLoadingState) + } + + is Ahhehe.Error -> { + PasskeyError( + title = state.title, + message = state.message, + onFinish = state.onFinish, + ) + } + + is Ahhehe.RequiresAuthentication -> { + val updatedOnAuthenticated by rememberUpdatedState(state.onAuthenticated) + val route = remember { + UserVerificationRoute( + onAuthenticated = { + updatedOnAuthenticated.invoke() + }, + ) + } + NavigationNode( + id = "user_verification", + route = route, + ) + } + } + } + } + } + } + } + + private suspend fun processUnlockedVault( + session: MasterSession.Key, + userVerified: Boolean, + ): GetCredentialResponse { + val request = PendingIntentHandler.retrieveProviderGetCredentialRequest(intent) + requireNotNull(request) { + "Provider get request from framework is empty." + } + val ciphers = kotlin.run { + val getCiphers = session.di.direct.instance() + getCiphers() + .first() + } + val credential = ciphers + .firstNotNullOfOrNull { cipher -> + if ( + args.accountId != cipher.accountId && + args.cipherId != cipher.id + ) { + return@firstNotNullOfOrNull null + } + + cipher.login?.fido2Credentials + ?.firstOrNull { credential -> + args.credId == credential.credentialId + } + } + requireNotNull(credential) + return passkeyBeginGetRequest.processGetCredentialsRequest( + request = request, + credential = credential, + userVerified = userVerified, + ) + } +} + +class UserVerificationRoute( + private val onAuthenticated: () -> Unit, +) : Route { + @Composable + override fun Content( + ) { + UserVerificationScreen( + onAuthenticated = onAuthenticated, + ) + } +} + +@Composable +fun UserVerificationScreen( + onAuthenticated: () -> Unit, +) { + val state = produceUserVerificationState( + onAuthenticated = onAuthenticated, + ) + val content = state.content.getOrNull() + ?: return + + BiometricPromptEffect(content.sideEffects.showBiometricPromptFlow) + OtherScaffold { + UnlockScreenContainer( + top = { + Text( + textAlign = TextAlign.Center, + text = stringResource(Res.strings.userverification_header_text), + style = MaterialTheme.typography.bodyLarge, + ) + }, + center = { + val keyboardOnGo: (KeyboardActionScope.() -> Unit)? = + if (content.onVerify != null) { + // lambda + { + content.onVerify.invoke() + } + } else { + null + } + PasswordFlatTextField( + modifier = Modifier, + testTag = "field:password", + value = content.password, + keyboardOptions = KeyboardOptions( + imeAction = when { + keyboardOnGo != null -> ImeAction.Go + else -> ImeAction.Default + }, + ), + keyboardActions = KeyboardActions( + onGo = keyboardOnGo, + ), + ) + }, + bottom = { + val onUnlockButtonClick by rememberUpdatedState( + content.onVerify, + ) + Button( + modifier = Modifier + .testTag("btn:go") + .fillMaxWidth(), + enabled = content.onVerify != null, + onClick = { + onUnlockButtonClick?.invoke() + }, + ) { + Text( + text = stringResource(Res.strings.userverification_button_go), + ) + } + val onBiometricButtonClick by rememberUpdatedState( + content.biometric?.onClick, + ) + ExpandedIfNotEmpty( + valueOrNull = content.biometric, + ) { b -> + ElevatedButton( + modifier = Modifier + .padding(top = 32.dp), + enabled = b.onClick != null, + onClick = { + onBiometricButtonClick?.invoke() + }, + contentPadding = PaddingValues(16.dp), + ) { + Icon( + imageVector = Icons.Outlined.Fingerprint, + contentDescription = null, + ) + } + } + }, + ) + } +} + +@Immutable +data class UserVerificationState( + val content: Loadable = Loadable.Loading, +) { + @Immutable + data class Content( + val sideEffects: UnlockState.SideEffects, + val password: TextFieldModel2, + val biometric: Biometric? = null, + val isLoading: Boolean = false, + val onVerify: (() -> Unit)? = null, + ) + + @Immutable + @optics + data class Biometric( + val onClick: (() -> Unit)? = null, + ) { + companion object + } + + @Immutable + @optics + data class SideEffects( + val showBiometricPromptFlow: Flow, + ) { + companion object + } +} + +private const val DEFAULT_PASSWORD = "" + +@Composable +fun produceUserVerificationState( + onAuthenticated: () -> Unit, +): UserVerificationState = with(localDI().direct) { + produceUserVerificationState( + onAuthenticated = onAuthenticated, + biometricStatusUseCase = instance(), + confirmAccessByPasswordUseCase = instance(), + windowCoroutineScope = instance(), + ) +} + +@Composable +fun produceUserVerificationState( + onAuthenticated: () -> Unit, + biometricStatusUseCase: BiometricStatusUseCase, + confirmAccessByPasswordUseCase: ConfirmAccessByPasswordUseCase, + windowCoroutineScope: WindowCoroutineScope, +): UserVerificationState = produceScreenState( + key = "user_verification", + initial = UserVerificationState(), + args = arrayOf( + windowCoroutineScope, + ), +) { + val executor = screenExecutor() + + val passwordSink = mutablePersistedFlow("password") { DEFAULT_PASSWORD } + val passwordState = mutableComposeState(passwordSink) + + val biometricPrompt = kotlin.run { + val biometricStatus = biometricStatusUseCase() + .toIO() + .attempt() + .bind() + .getOrNull() + when (biometricStatus) { + is BiometricStatus.Available -> { + createPromptOrNull( + executor = executor, + fn = { + onAuthenticated() + }, + ) + } + + else -> null + } + } + + val biometricPromptSink = EventFlow() + val biometricPromptFlow = biometricPromptSink + // Automatically emit the prompt on first show + // of the user interface. + .onStart { + if (biometricPrompt != null) { + emit(biometricPrompt) + } + } + .shareIn(screenScope, SharingStarted.WhileSubscribed(5000L)) + val biometricStateEnabled = biometricPrompt?.let { prompt -> + UserVerificationState.Biometric( + onClick = { + biometricPromptSink.emit(prompt) + }, + ) + } + val biometricStateDisabled = biometricPrompt?.let { prompt -> + UserVerificationState.Biometric( + onClick = null, + ) + } + + combine( + passwordSink + .validatedPassword(this), + executor.isExecutingFlow, + ) { validatedPassword, taskExecuting -> + val error = (validatedPassword as? Validated.Failure)?.error + val canCreateVault = error == null && !taskExecuting + val content = UserVerificationState.Content( + biometric = if (taskExecuting) { + biometricStateDisabled + } else { + biometricStateEnabled + }, + sideEffects = UnlockState.SideEffects( + showBiometricPromptFlow = biometricPromptFlow, + ), + password = TextFieldModel2.of( + state = passwordState, + validated = validatedPassword, + ), + isLoading = taskExecuting, + onVerify = if (canCreateVault) { + // lambda + { + val io = confirmAccessByPasswordUseCase(validatedPassword.model) + .effectTap { success -> + if (success) { + onAuthenticated() + } else { + val message = ToastMessage( + title = translate(Res.strings.error_incorrect_password), + type = ToastMessage.Type.ERROR, + ) + message(message) + } + } + executor.execute(io) + } + } else { + null + }, + ) + UserVerificationState( + content = Loadable.Ok(content), + ) + } +} + +private fun createPromptOrNull( + executor: LoadingTask, + fn: () -> Unit, +): PureBiometricAuthPrompt = run { + BiometricAuthPromptSimple( + title = TextHolder.Res(Res.strings.elevatedaccess_biometric_auth_confirm_title), + text = TextHolder.Res(Res.strings.elevatedaccess_biometric_auth_confirm_text), + onComplete = { result -> + result.fold( + ifLeft = { exception -> + when (exception.code) { + BiometricAuthException.ERROR_CANCELED, + BiometricAuthException.ERROR_USER_CANCELED, + BiometricAuthException.ERROR_NEGATIVE_BUTTON, + -> return@fold + } + + val io = ioRaise(exception) + executor.execute(io) + }, + ifRight = { + fn.invoke() + }, + ) + }, + ) +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyGetUnlockActivity.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyGetUnlockActivity.kt new file mode 100644 index 00000000..6c377be6 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyGetUnlockActivity.kt @@ -0,0 +1,193 @@ +package com.artemchep.keyguard.android + +import android.annotation.SuppressLint +import android.app.Activity +import android.content.Context +import android.content.Intent +import android.os.Build +import android.os.Bundle +import androidx.annotation.RequiresApi +import androidx.compose.foundation.layout.* +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Close +import androidx.compose.material3.* +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import androidx.credentials.exceptions.GetCredentialException +import androidx.credentials.exceptions.GetCredentialUnknownException +import androidx.credentials.provider.BeginGetCredentialResponse +import androidx.credentials.provider.PendingIntentHandler +import androidx.lifecycle.lifecycleScope +import com.artemchep.keyguard.common.model.MasterSession +import com.artemchep.keyguard.common.model.VaultState +import com.artemchep.keyguard.common.usecase.GetCiphers +import com.artemchep.keyguard.common.usecase.GetVaultSession +import com.artemchep.keyguard.feature.keyguard.ManualAppScreen +import com.artemchep.keyguard.feature.keyguard.ManualAppScreenOnCreate +import com.artemchep.keyguard.feature.keyguard.ManualAppScreenOnLoading +import com.artemchep.keyguard.feature.keyguard.ManualAppScreenOnUnlock +import com.artemchep.keyguard.platform.recordException +import com.artemchep.keyguard.platform.recordLog +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.theme.Dimens +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.mapNotNull +import kotlinx.coroutines.launch +import kotlinx.datetime.Clock +import org.kodein.di.* + +@RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE) +class PasskeyGetUnlockActivity : BaseActivity(), DIAware { + companion object { + fun getIntent( + context: Context, + ): Intent = Intent(context, PasskeyGetUnlockActivity::class.java) + } + + private val getVaultSession by instance() + + private val passkeyBeginGetRequest by instance() + + @SuppressLint("RestrictedApi") + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + recordLog("Opened passkey get-unlock activity") + val startedAt = Clock.System.now() + + // Observe the vault session to detect when a user + // unlocks the vault. + lifecycleScope.launch { + val session = getVaultSession() + .mapNotNull { it as? MasterSession.Key } + .first() + val userVerified = session.createdAt > startedAt && + session.origin is MasterSession.Key.Authenticated + val response = runCatching { + processUnlockedVault( + session = session, + userVerified = userVerified, + ) + }.getOrElse { + recordException(it) + + // Something went wrong, finish with the + // exception. + val intent = Intent().apply { + val e = it as? GetCredentialException + ?: GetCredentialUnknownException() + PendingIntentHandler.setGetCredentialException( + intent = this, + exception = e, + ) + } + setResult(Activity.RESULT_OK, intent) + finish() + return@launch // end + } + // If the provider does not have a credential, or an exception to return, + // provider must call android.app.Activity.setResult with the result code + // as android.app.Activity.RESULT_CANCELED. + val status = if (response.credentialEntries.isEmpty()) { + Activity.RESULT_CANCELED + } else { + Activity.RESULT_OK + } + val intent = Intent().apply { + PendingIntentHandler.setBeginGetCredentialResponse( + intent = this, + response = response, + ) + } + setResult(status, intent) + finish() + } + } + + @Composable + override fun Content() { + ExtensionScaffold( + header = { + Row( + modifier = Modifier + .padding( + start = Dimens.horizontalPadding, + end = 8.dp, + top = 8.dp, + bottom = 8.dp, + ), + verticalAlignment = Alignment.CenterVertically, + ) { + Text( + modifier = Modifier + .weight(1f) + .align(Alignment.CenterVertically), + text = stringResource(Res.strings.autofill_unlock_keyguard), + style = MaterialTheme.typography.titleMedium, + overflow = TextOverflow.Ellipsis, + maxLines = 1, + ) + + val context by rememberUpdatedState(newValue = LocalContext.current) + TextButton( + onClick = { + context.closestActivityOrNull?.finish() + }, + ) { + Icon(Icons.Outlined.Close, null) + Spacer( + modifier = Modifier + .width(Dimens.buttonIconPadding), + ) + Text( + text = stringResource(Res.strings.cancel), + textAlign = TextAlign.Center, + ) + } + } + }, + ) { + // Instead of showing a vault to a user, we continue showing the + // loading screen until we automatically form a response and close + // the activity. + ManualAppScreen { vaultState -> + when (vaultState) { + is VaultState.Create -> ManualAppScreenOnCreate(vaultState) + is VaultState.Unlock -> ManualAppScreenOnUnlock(vaultState) + is VaultState.Loading -> ManualAppScreenOnLoading(vaultState) + is VaultState.Main -> { + val fakeLoadingState = VaultState.Loading + ManualAppScreenOnLoading(fakeLoadingState) + } + } + } + } + } + + private suspend fun processUnlockedVault( + session: MasterSession.Key, + userVerified: Boolean, + ): BeginGetCredentialResponse { + val request = PendingIntentHandler.retrieveBeginGetCredentialRequest(intent) + requireNotNull(request) { + "Begin get request from framework is empty." + } + val ciphers = kotlin.run { + val getCiphers = session.di.direct.instance() + getCiphers() + .first() + } + + return passkeyBeginGetRequest.processGetCredentialsRequest( + cipherHistoryOpenedRepository = session.di.direct.instance(), + request = request, + ciphers = ciphers, + userVerified = userVerified, + ) + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyModule.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyModule.kt new file mode 100644 index 00000000..32718d96 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyModule.kt @@ -0,0 +1,30 @@ +package com.artemchep.keyguard.android + +import android.os.Build +import androidx.annotation.RequiresApi +import org.kodein.di.DI +import org.kodein.di.bindSingleton + +@RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE) +fun passkeysModule() = DI.Module( + name = "passkeys", +) { + bindSingleton { + PasskeyCreateRequest(this) + } + bindSingleton { + PasskeyBeginGetRequest(this) + } + bindSingleton { + PasskeyProviderGetRequest(this) + } + bindSingleton { + PasskeyUtils(this) + } + // + // Generators + // + bindSingleton { + PasskeyGeneratorES256() + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyProviderGetRequest.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyProviderGetRequest.kt new file mode 100644 index 00000000..edb7f246 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyProviderGetRequest.kt @@ -0,0 +1,158 @@ +package com.artemchep.keyguard.android + +import android.annotation.SuppressLint +import android.app.Application +import android.content.Context +import android.os.Build +import androidx.annotation.RequiresApi +import androidx.credentials.GetCredentialResponse +import androidx.credentials.GetPublicKeyCredentialOption +import androidx.credentials.PublicKeyCredential +import androidx.credentials.exceptions.GetCredentialUnknownException +import androidx.credentials.provider.ProviderGetCredentialRequest +import androidx.credentials.webauthn.PublicKeyCredentialRequestOptions +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.service.crypto.CryptoGenerator +import com.artemchep.keyguard.common.service.gpmprivapps.PrivilegedAppsService +import com.artemchep.keyguard.common.service.text.Base64Service +import kotlinx.serialization.encodeToString +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonObjectBuilder +import kotlinx.serialization.json.buildJsonObject +import kotlinx.serialization.json.put +import org.kodein.di.DirectDI +import org.kodein.di.instance +import java.security.KeyFactory +import java.security.Signature +import java.security.spec.PKCS8EncodedKeySpec + +class PasskeyProviderGetRequest( + private val context: Context, + private val json: Json, + private val base64Service: Base64Service, + private val cryptoService: CryptoGenerator, + private val passkeyUtils: PasskeyUtils, +) { + private class ClientData( + val bytes: ByteArray? = null, + val hash: ByteArray, + ) + + constructor( + directDI: DirectDI, + ) : this( + context = directDI.instance(), + json = directDI.instance(), + base64Service = directDI.instance(), + cryptoService = directDI.instance(), + passkeyUtils = directDI.instance(), + ) + + @SuppressLint("RestrictedApi") + @RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE) + suspend fun processGetCredentialsRequest( + request: ProviderGetCredentialRequest, + credential: DSecret.Login.Fido2Credentials, + userVerified: Boolean, + ): GetCredentialResponse { + val opt = request.credentialOptions.first() as GetPublicKeyCredentialOption + val js = PublicKeyCredentialRequestOptions(opt.requestJson) + + val challenge = PasskeyBase64.encodeToString(js.challenge) + val rpId = js.rpId + val origin = passkeyUtils.callingAppOrigin(request.callingAppInfo) + val packageName = request.callingAppInfo.packageName + passkeyUtils.requireRpMatchesOrigin( + rpId = rpId, + origin = origin, + packageName = packageName, + ) + + val credentialIdBytes = PasskeyCredentialId.encode(credential.credentialId) + + val factory: KeyFactory = KeyFactory.getInstance("EC") + val privateKey = run { + val privateKeyData = base64Service.decode(credential.keyValue) + val privateKeySpec = PKCS8EncodedKeySpec(privateKeyData) + factory.generatePrivate(privateKeySpec) + } + + val counter = kotlin.run { + val tmp = credential.counter ?: 0 + if (tmp > 0) { + // TODO: When Bitwarden is ready, switch it to be a + // UNIX timestamp. + tmp + } else { + 0 + } + } + val defaultAuthenticatorData = passkeyUtils.authData( + rpId = rpId, + counter = counter, + credentialId = credentialIdBytes, + credentialPublicKey = null, + // True, if we asked a user to enter the password of + // biometrics and he has passed the check. + userVerification = userVerified, + userPresence = true, + ) + + val clientData = opt.clientDataHash + ?.let { hash -> + ClientData( + hash = hash, + ) + } + ?: run { + val jsonObject = buildJsonObject { + put("type", "webauthn.get") + put("challenge", challenge) + put("origin", origin) + put("androidPackageName", packageName) + } + val jsonString = json.encodeToString(jsonObject) + val bytes = jsonString.toByteArray() + val hash = cryptoService.hashSha256(bytes) + ClientData( + bytes = bytes, + hash = hash, + ) + } + + val signature = kotlin.run { + val dataToSign = defaultAuthenticatorData + clientData.hash + val sig = Signature.getInstance("SHA256withECDSA") + sig.initSign(privateKey) + sig.update(dataToSign) + sig.sign() + } + + val r = buildJsonObject { + val clientDataBytes = clientData.bytes + if (clientDataBytes != null) { + put("clientDataJSON", clientDataBytes) + } + + put("authenticatorData", defaultAuthenticatorData) + put("signature", PasskeyBase64.encodeToString(signature)) + put("userHandle", credential.userHandle) + } + val authenticationResponse = buildJsonObject { + put("id", PasskeyBase64.encodeToString(credentialIdBytes)) + put("rawId", credentialIdBytes) + put("type", "public-key") + put("authenticatorAttachment", "cross-platform") + put("response", r) + put("clientExtensionResults", buildJsonObject { }) + } + val authenticationResponseJson = json.encodeToString(authenticationResponse) + val passkeyCredential = PublicKeyCredential(authenticationResponseJson) + return GetCredentialResponse(passkeyCredential) + } + + private fun JsonObjectBuilder.put(key: String, data: ByteArray) { + put(key, PasskeyBase64.encodeToString(data)) + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyUtils.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyUtils.kt new file mode 100644 index 00000000..98268c46 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PasskeyUtils.kt @@ -0,0 +1,413 @@ +package com.artemchep.keyguard.android + +import android.os.Build +import androidx.annotation.RequiresApi +import androidx.credentials.provider.CallingAppInfo +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.service.crypto.CryptoGenerator +import com.artemchep.keyguard.common.service.gpmprivapps.PrivilegedAppsService +import com.artemchep.keyguard.common.usecase.impl.isSubdomain +import com.artemchep.keyguard.provider.bitwarden.CreatePasskeyAttestation +import io.ktor.client.HttpClient +import io.ktor.client.call.body +import io.ktor.client.request.get +import io.ktor.http.Url +import io.ktor.http.isSuccess +import kotlinx.coroutines.async +import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.delay +import kotlinx.serialization.json.JsonArray +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.JsonObject +import kotlinx.serialization.json.jsonPrimitive +import org.kodein.di.DirectDI +import org.kodein.di.instance +import java.nio.ByteBuffer +import java.security.cert.CertificateFactory +import java.security.cert.X509Certificate +import java.util.Locale +import kotlin.experimental.or + +class PasskeyUtils( + private val cryptoService: CryptoGenerator, + private val privilegedAppsService: PrivilegedAppsService, + private val httpClient: HttpClient, +) { + companion object { + /** + * The minimum time the 'passkey is doing work' screen should + * be shown. This is needed just to make to user interface less + * junky. + */ + private const val PASSKEY_PROCESSING_MIN_TIME_MS = 800L + + suspend fun withProcessingMinTime( + block: suspend () -> T, + ): T = coroutineScope { + val artificialDelayDeferred = async { + delay(PASSKEY_PROCESSING_MIN_TIME_MS) + } + val result = block() + artificialDelayDeferred.await() + result + } + } + + // We use the same AAGUID as Bitwarden does: + // d548826e-79b4-db40-a3d8-11116f7e8349 + private val bitwardenAaguid = byteArrayOf( + 0xd5.toByte(), + 0x48.toByte(), + 0x82.toByte(), + 0x6e.toByte(), + 0x79.toByte(), + 0xb4.toByte(), + 0xdb.toByte(), + 0x40.toByte(), + 0xa3.toByte(), + 0xd8.toByte(), + 0x11.toByte(), + 0x11.toByte(), + 0x6f.toByte(), + 0x7e.toByte(), + 0x83.toByte(), + 0x49.toByte(), + ) + + data class CallingAppCertificate( + val data: ByteArray, + ) { + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as CallingAppCertificate + + return data.contentEquals(other.data) + } + + override fun hashCode(): Int { + return data.contentHashCode() + } + + /** + * Creates an origin from the app signing certificate. + */ + fun toOrigin( + cryptoService: CryptoGenerator, + ): String { + // FIXME: The documentation also states that the apk-key-hash must be in + // the SHA1 format instead, which is fucking great as in reality it + // should be in SHA256. + val certHash = cryptoService.hashSha256(data) + val certB64 = PasskeyBase64.encodeToString(certHash) + return "android:apk-key-hash:$certB64" + } + } + + sealed interface RpValidation { + data object Valid : RpValidation + data object Invalid : RpValidation + } + + constructor( + directDI: DirectDI, + ) : this( + cryptoService = directDI.instance(), + privilegedAppsService = directDI.instance(), + httpClient = directDI.instance(tag = "curl"), + ) + + @RequiresApi(Build.VERSION_CODES.P) + suspend fun callingAppOrigin( + appInfo: CallingAppInfo, + ): String { + val privilegedAllowList = privilegedAppsService + .get() + .bind() + val origin = appInfo.getOrigin(privilegedAllowList) + ?: kotlin.run { + val cert = callingAppCertificate(appInfo) + cert.toOrigin(cryptoService) + } + return origin + } + + @RequiresApi(Build.VERSION_CODES.P) + private fun callingAppCertificate( + appInfo: CallingAppInfo, + ): CallingAppCertificate { + val signatureBytes = appInfo.signingInfo.apkContentsSigners[0].toByteArray() + + val certFactory = CertificateFactory.getInstance("X509") + val cert = signatureBytes + .inputStream() + .use { + certFactory.generateCertificate(it) as X509Certificate + } + + val certBytes = cert.encoded + return CallingAppCertificate(certBytes) + } + + /** + * Validates that the origin is known to the relaying party and + * we can give a response to this request. + */ + suspend fun requireRpMatchesOrigin( + rpId: String, + origin: String, + packageName: String, + ): Unit = runCatching { + when { + origin.startsWith("https:") -> + requireRpMatchesOriginViaHttps(rpId, origin) + + origin.startsWith("android:") -> + requireRpMatchesOriginViaAndroid(rpId, origin, packageName) + + else -> throw IllegalStateException("Request origin has an unknown scheme.") + } + }.getOrElse { + val detailMessage = it.localizedMessage + ?: it.message + val fullMessage = + "Failed to verify the relation with the Relaying Party. $detailMessage" + throw IllegalStateException(fullMessage) + } + + private suspend fun requireRpMatchesOriginViaHttps( + rpId: String, + origin: String, + ) { + val originUrl = Url(origin) + val valid = isSubdomain( + domain = rpId, + request = originUrl.host, + ) + require(valid) { + "Request origin '${originUrl.host}' is not associated with the relying party!" + } + } + + private suspend fun requireRpMatchesOriginViaAndroid( + rpId: String, + origin: String, + packageName: String, + ) { + // The origin should be in the format: + // android:apk-key-hash:$certB64 + val certB64 = origin.substringAfter("android:apk-key-hash:") + require(certB64 != origin) { + "Request origin has unknown android format." + } + + val certBytes = PasskeyBase64.decode(certB64) + + // Download certificates from the website and compare it with + // the certificate we have locally. + val targets = obtainAllowedAndroidAppTargets(rpId = rpId) + val target = targets[AndroidAppPackageName(packageName)] + requireNotNull(target) { + "App package name is not associated with the " + + "relying party!" + } + + val valid = target.fingerprints.any { + it.contentEquals(certBytes) + } + require(valid) { + "App signature is not associated with the " + + "relying party!" + } + } + + @JvmInline + private value class AndroidAppPackageName( + val packageName: String, + ) + + private class AndroidAppTarget( + val fingerprints: List, + ) + + @OptIn(ExperimentalStdlibApi::class) + private suspend fun obtainAllowedAndroidAppTargets( + rpId: String, + ): Map { + val url = "https://$rpId/.well-known/assetlinks.json" + val response = httpClient.get(url) + require(response.status.isSuccess()) { + "Failed to get asset links from relying party, " + + "error code ${response.status.value}." + } + val result = response + .body() + + // Collect all the android app targets that + // allow a user to login with. + val collector = mutableMapOf>() + val list = result as JsonArray + list.forEach { + // Ignore the errors, continue to the + // next item. I have no idea what the exact + // schema of the 'assetlinks.json' and how + // it changes in the future. + runCatching { + val node = it as JsonObject + val relation = node["relation"] as JsonArray + val target = node["target"] as JsonObject + + // We are only checking allowed android apps, + // so check for the namespace first. + val namespace = target["namespace"]?.jsonPrimitive?.content + if (namespace != "android_app") { + return@forEach + } + // Check if the common.get_login_creds is in the + // relation list. + val loginRelation = relation + .any { el -> + val elContent = runCatching { + el.jsonPrimitive.content + }.getOrNull() + elContent == "delegate_permission/common.get_login_creds" + } + if (!loginRelation) { + return@forEach + } + + val packageName = target["package_name"]?.jsonPrimitive?.content + requireNotNull(packageName) + val fingerprints = kotlin.run { + val arr = target["sha256_cert_fingerprints"] as JsonArray + arr.map { el -> el.jsonPrimitive.content } + } + + // Save the fingerprints. + val out = collector.getOrPut(packageName) { mutableSetOf() } + out.addAll(fingerprints) + } + } + return collector + .entries + .associate { (packageName, fingerprints) -> + val androidAppPackageName = AndroidAppPackageName(packageName) + val androidAppTarget = AndroidAppTarget( + fingerprints = fingerprints + .map { fingerprintHex -> + val rawFingerprintHex = fingerprintHex + .lowercase(Locale.ENGLISH) + .replace(":", "") + rawFingerprintHex.hexToByteArray() + }, + ) + androidAppPackageName to androidAppTarget + } + } + + fun generateCredentialId() = cryptoService.uuid() + + fun authData( + rpId: String, + counter: Int, + credentialId: ByteArray, + credentialPublicKey: ByteArray?, + attestation: CreatePasskeyAttestation? = null, + userVerification: Boolean, + userPresence: Boolean, + ): ByteArray { + val out = mutableListOf() + + // 1. Replay party ID hash. + val rpIdHash = run { + val data = rpId.toByteArray() + cryptoService.hashSha256(data) + } + out += rpIdHash + + // 2. Auth data flags. + out += authDataFlags( + extensionData = false, + attestationData = credentialPublicKey != null, + userVerification = userVerification, + userPresence = userPresence, + ).let { + byteArrayOf(it) + } + + // 3. Counter. We have 4 bytes allocated + // to it. + out += ByteBuffer.allocate(Int.SIZE_BYTES) + .putInt(counter) + .array() + + // 4. Attestation data: + // a) aaguid (16) + // b) credential id length (2) + // c) credential id + // d) credential public key + if (credentialPublicKey != null) { + val aaguid = when (attestation) { + // Convey the authenticator's AAGUID and attestation statement, + // unaltered, to the Relying Party. + CreatePasskeyAttestation.DIRECT, + CreatePasskeyAttestation.ENTERPRISE, + -> bitwardenAaguid + // The client MAY replace the AAGUID and attestation statement with a more + // privacy-friendly and/or more easily verifiable version of the same data + // (for example, by employing an Anonymization CA). + CreatePasskeyAttestation.INDIRECT -> { + val data = bitwardenAaguid + credentialId + val hash = cryptoService.hashMd5(data) + if (hash.size == 16) hash else hash.sliceArray(0..15) + } + // Replace the AAGUID in the attested + // credential data with 16 zero bytes. + null, + CreatePasskeyAttestation.NONE, + -> ByteArray(16) + } + out += aaguid + + val credIdLen = byteArrayOf( + (credentialId.size shr 8).toByte(), + credentialId.size.toByte(), + ) + out += credIdLen + out += credentialId + out += credentialPublicKey + } + + return out.fold( + initial = run { + val size = out.sumOf { it.size } + ByteBuffer.allocate(size) + }, + ) { buffer, array -> + buffer.put(array) + }.array() + } + + private fun authDataFlags( + extensionData: Boolean, + attestationData: Boolean, + userVerification: Boolean, + userPresence: Boolean, + ): Byte { + var flags: Byte = 0 + if (extensionData) { + flags = flags or 0b1000000 + } + if (attestationData) { + flags = flags or 0b01000000 + } + if (userVerification) { + flags = flags or 0b00000100 + } + if (userPresence) { + flags = flags or 0b00000001 + } + return flags + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PendingIntents.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PendingIntents.kt new file mode 100644 index 00000000..29002710 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/PendingIntents.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.android + +import com.artemchep.keyguard.android.downloader.NotificationIdPool + +object PendingIntents { + val autofill = NotificationIdPool.sequential(0) + val credential = NotificationIdPool.sequential( + start = 100000, + endExclusive = 200000, + ) +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/autofill/AutofillStructure.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/autofill/AutofillStructure.kt new file mode 100644 index 00000000..0c1fe84e --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/autofill/AutofillStructure.kt @@ -0,0 +1,22 @@ +package com.artemchep.keyguard.android.autofill + +import android.os.Parcelable +import android.view.autofill.AutofillId +import com.artemchep.keyguard.common.model.AutofillHint +import kotlinx.parcelize.Parcelize + +@Parcelize +data class AutofillStructure2( + val applicationId: String? = null, + val webScheme: String? = null, + val webDomain: String? = null, + val webView: Boolean? = null, + val items: List, +) : Parcelable { + @Parcelize + data class Item( + val id: AutofillId, + val hint: AutofillHint, + val value: String? = null, + ) : Parcelable +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/autofill/AutofillStructureParser.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/autofill/AutofillStructureParser.kt new file mode 100644 index 00000000..fd521c13 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/autofill/AutofillStructureParser.kt @@ -0,0 +1,971 @@ +package com.artemchep.keyguard.android.autofill + +import android.app.assist.AssistStructure +import android.os.Build +import android.text.InputType +import android.util.Log +import android.view.View +import android.view.autofill.AutofillId +import androidx.autofill.HintConstants +import com.artemchep.keyguard.android.autofill.AutofillStructureParser.AutofillStructure +import com.artemchep.keyguard.common.model.AutofillHint +import java.util.Locale + +/** + * Parse AssistStructure into more usable + * [AutofillStructure]. + */ +class AutofillStructureParser { + data class AutofillStructure( + val applicationId: String? = null, + val webScheme: String? = null, + val webDomain: String? = null, + val webView: Boolean = false, + val items: List, + ) + + data class AutofillStructureItem( + val accuracy: Accuracy, + val id: AutofillId, + val hint: AutofillHint, + val value: String? = null, + val reason: String? = null, + ) { + enum class Accuracy( + val value: Float, + ) { + LOWEST(0.3f), + LOW(0.7f), + MEDIUM(1.5f), + HIGH(4f), + HIGHEST(10f), + } + } + + data class AutofillStructureItemBuilder( + val accuracy: AutofillStructureItem.Accuracy, + val hint: AutofillHint, + val value: String? = null, + val reason: String? = null, + ) + + class AutofillHintMatcher( + val hint: AutofillHint, + val target: String, + val partly: Boolean = false, + ) { + val accuracy = + if (partly) AutofillStructureItem.Accuracy.MEDIUM else AutofillStructureItem.Accuracy.HIGH + + fun matches(value: String) = if (partly) { + value.contains(target, ignoreCase = true) + } else { + value.equals(target, ignoreCase = true) + } + } + + private val autofillLabelPasswordTranslations = listOf( + "password", + "парол", + "parol", + "passwort", + "passe", + // https://github.com/AChep/keyguard-app/issues/15#issuecomment-1740598689 + "密码", + "密碼", + ) + + private val autofillLabelEmailTranslations = listOf( + "email", + "e-mail", + "почта", + "пошта", + "мейл", + "мэйл", + "майл", + // https://github.com/AChep/keyguard-app/issues/15#issuecomment-1740598689 + "电子邮箱", + "電子郵箱", + ) + + private val autofillLabelUsernameTranslations = listOf( + "nickname", + "username", + "utilisateur", + "login", + "логин", + "логін", + "користувач", + "пользовател", + // https://github.com/AChep/keyguard-app/issues/15#issuecomment-1740598689 + "用户名", + "用戶名", + ) + + private val autofillLabelCreditCardNumberTranslations = listOf( + ".*(credit|debit|card)+.*number.*".toRegex(), + ) + + private val autofillHintMatchers = listOf( + AutofillHintMatcher( + hint = AutofillHint.EMAIL_ADDRESS, + target = HintConstants.AUTOFILL_HINT_EMAIL_ADDRESS, + ), + AutofillHintMatcher( + hint = AutofillHint.EMAIL_ADDRESS, + target = "email", + partly = true, + ), + AutofillHintMatcher( + hint = AutofillHint.USERNAME, + target = HintConstants.AUTOFILL_HINT_USERNAME, + ), + AutofillHintMatcher( + hint = AutofillHint.USERNAME, + target = "nickname", + ), + AutofillHintMatcher( + hint = AutofillHint.PASSWORD, + target = HintConstants.AUTOFILL_HINT_PASSWORD, + ), + AutofillHintMatcher( + hint = AutofillHint.PASSWORD, + target = "password", + partly = true, + ), + AutofillHintMatcher( + hint = AutofillHint.WIFI_PASSWORD, + target = HintConstants.AUTOFILL_HINT_WIFI_PASSWORD, + ), + AutofillHintMatcher( + hint = AutofillHint.POSTAL_ADDRESS, + target = HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS, + ), + AutofillHintMatcher( + hint = AutofillHint.POSTAL_CODE, + target = HintConstants.AUTOFILL_HINT_POSTAL_CODE, + ), + AutofillHintMatcher( + hint = AutofillHint.CREDIT_CARD_NUMBER, + target = HintConstants.AUTOFILL_HINT_CREDIT_CARD_NUMBER, + ), + AutofillHintMatcher( + hint = AutofillHint.CREDIT_CARD_NUMBER, + target = "cc-number", + ), + AutofillHintMatcher( + hint = AutofillHint.CREDIT_CARD_NUMBER, + target = "credit_card_number", + ), + AutofillHintMatcher( + hint = AutofillHint.CREDIT_CARD_SECURITY_CODE, + target = HintConstants.AUTOFILL_HINT_CREDIT_CARD_SECURITY_CODE, + ), + AutofillHintMatcher( + hint = AutofillHint.CREDIT_CARD_SECURITY_CODE, + target = "cc-csc", + ), + AutofillHintMatcher( + hint = AutofillHint.CREDIT_CARD_NUMBER, + target = "credit_card_csv", + ), + AutofillHintMatcher( + hint = AutofillHint.CREDIT_CARD_EXPIRATION_DATE, + target = HintConstants.AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DATE, + ), + AutofillHintMatcher( + hint = AutofillHint.CREDIT_CARD_EXPIRATION_DATE, + target = "cc-exp", + ), + AutofillHintMatcher( + hint = AutofillHint.CREDIT_CARD_EXPIRATION_MONTH, + target = HintConstants.AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_MONTH, + ), + AutofillHintMatcher( + hint = AutofillHint.CREDIT_CARD_EXPIRATION_MONTH, + target = "cc-exp-month", + ), + AutofillHintMatcher( + hint = AutofillHint.CREDIT_CARD_EXPIRATION_YEAR, + target = HintConstants.AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_YEAR, + ), + AutofillHintMatcher( + hint = AutofillHint.CREDIT_CARD_EXPIRATION_YEAR, + target = "cc-exp-year", + ), + AutofillHintMatcher( + hint = AutofillHint.CREDIT_CARD_EXPIRATION_DAY, + target = HintConstants.AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DAY, + ), + AutofillHintMatcher( + hint = AutofillHint.POSTAL_ADDRESS_COUNTRY, + target = HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS_COUNTRY, + ), + AutofillHintMatcher( + hint = AutofillHint.POSTAL_ADDRESS_REGION, + target = HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS_REGION, + ), + AutofillHintMatcher( + hint = AutofillHint.POSTAL_ADDRESS_LOCALITY, + target = HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS_LOCALITY, + ), + AutofillHintMatcher( + hint = AutofillHint.POSTAL_ADDRESS_STREET_ADDRESS, + target = HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS_STREET_ADDRESS, + ), + AutofillHintMatcher( + hint = AutofillHint.POSTAL_ADDRESS_EXTENDED_ADDRESS, + target = HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS_EXTENDED_ADDRESS, + ), + AutofillHintMatcher( + hint = AutofillHint.POSTAL_ADDRESS_EXTENDED_POSTAL_CODE, + target = HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS_EXTENDED_POSTAL_CODE, + ), + AutofillHintMatcher( + hint = AutofillHint.POSTAL_ADDRESS_APT_NUMBER, + target = HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS_APT_NUMBER, + ), + AutofillHintMatcher( + hint = AutofillHint.POSTAL_ADDRESS_DEPENDENT_LOCALITY, + target = HintConstants.AUTOFILL_HINT_POSTAL_ADDRESS_DEPENDENT_LOCALITY, + ), + AutofillHintMatcher( + hint = AutofillHint.PERSON_NAME, + target = HintConstants.AUTOFILL_HINT_PERSON_NAME, + ), + AutofillHintMatcher( + hint = AutofillHint.PERSON_NAME_GIVEN, + target = HintConstants.AUTOFILL_HINT_PERSON_NAME_GIVEN, + ), + AutofillHintMatcher( + hint = AutofillHint.PERSON_NAME_FAMILY, + target = HintConstants.AUTOFILL_HINT_PERSON_NAME_FAMILY, + ), + AutofillHintMatcher( + hint = AutofillHint.PERSON_NAME_MIDDLE, + target = HintConstants.AUTOFILL_HINT_PERSON_NAME_MIDDLE, + ), + AutofillHintMatcher( + hint = AutofillHint.PERSON_NAME_MIDDLE_INITIAL, + target = HintConstants.AUTOFILL_HINT_PERSON_NAME_MIDDLE_INITIAL, + ), + AutofillHintMatcher( + hint = AutofillHint.PERSON_NAME_PREFIX, + target = HintConstants.AUTOFILL_HINT_PERSON_NAME_PREFIX, + ), + AutofillHintMatcher( + hint = AutofillHint.PERSON_NAME_SUFFIX, + target = HintConstants.AUTOFILL_HINT_PERSON_NAME_SUFFIX, + ), + AutofillHintMatcher( + hint = AutofillHint.PHONE_NUMBER, + target = HintConstants.AUTOFILL_HINT_PHONE_NUMBER, + ), + AutofillHintMatcher( + hint = AutofillHint.PHONE_NUMBER_DEVICE, + target = HintConstants.AUTOFILL_HINT_PHONE_NUMBER_DEVICE, + ), + AutofillHintMatcher( + hint = AutofillHint.PHONE_COUNTRY_CODE, + target = HintConstants.AUTOFILL_HINT_PHONE_COUNTRY_CODE, + ), + AutofillHintMatcher( + hint = AutofillHint.PHONE_NATIONAL, + target = HintConstants.AUTOFILL_HINT_PHONE_NATIONAL, + ), + AutofillHintMatcher( + hint = AutofillHint.PHONE_NUMBER, + target = "phone", + ), + AutofillHintMatcher( + hint = AutofillHint.NEW_USERNAME, + target = HintConstants.AUTOFILL_HINT_NEW_USERNAME, + ), + AutofillHintMatcher( + hint = AutofillHint.NEW_USERNAME, + target = "new-username", + ), + AutofillHintMatcher( + hint = AutofillHint.NEW_PASSWORD, + target = HintConstants.AUTOFILL_HINT_NEW_PASSWORD, + ), + AutofillHintMatcher( + hint = AutofillHint.NEW_PASSWORD, + target = "new-password", + ), + AutofillHintMatcher( + hint = AutofillHint.GENDER, + target = HintConstants.AUTOFILL_HINT_GENDER, + ), + AutofillHintMatcher( + hint = AutofillHint.BIRTH_DATE_FULL, + target = HintConstants.AUTOFILL_HINT_BIRTH_DATE_FULL, + ), + AutofillHintMatcher( + hint = AutofillHint.BIRTH_DATE_DAY, + target = HintConstants.AUTOFILL_HINT_BIRTH_DATE_DAY, + ), + AutofillHintMatcher( + hint = AutofillHint.BIRTH_DATE_MONTH, + target = HintConstants.AUTOFILL_HINT_BIRTH_DATE_MONTH, + ), + AutofillHintMatcher( + hint = AutofillHint.BIRTH_DATE_YEAR, + target = HintConstants.AUTOFILL_HINT_BIRTH_DATE_YEAR, + ), + AutofillHintMatcher( + hint = AutofillHint.SMS_OTP, + target = HintConstants.AUTOFILL_HINT_SMS_OTP, + ), + AutofillHintMatcher( + hint = AutofillHint.EMAIL_OTP, + target = HintConstants.AUTOFILL_HINT_EMAIL_OTP, + ), + AutofillHintMatcher( + hint = AutofillHint.APP_OTP, + target = HintConstants.AUTOFILL_HINT_2FA_APP_OTP, + ), + AutofillHintMatcher( + hint = AutofillHint.APP_OTP, + target = "one-time-code", + ), + AutofillHintMatcher( + hint = AutofillHint.NOT_APPLICABLE, + target = HintConstants.AUTOFILL_HINT_NOT_APPLICABLE, + ), + AutofillHintMatcher( + hint = AutofillHint.PROMO_CODE, + target = HintConstants.AUTOFILL_HINT_PROMO_CODE, + ), + AutofillHintMatcher( + hint = AutofillHint.UPI_VPA, + target = HintConstants.AUTOFILL_HINT_UPI_VPA, + ), + // off + AutofillHintMatcher( + hint = AutofillHint.OFF, + target = "chrome-off", + ), + AutofillHintMatcher( + hint = AutofillHint.OFF, + target = "off", + ), + AutofillHintMatcher( + hint = AutofillHint.OFF, + target = "no", + ), + AutofillHintMatcher( + hint = AutofillHint.OFF, + target = "nope", + ), + ) + + fun parse( + assistStructure: AssistStructure, + respectAutofillOff: Boolean, + ): AutofillStructure2 { + var applicationId: String? = null + var autofillStructure: AutofillStructure? = null + + for (i in 0 until assistStructure.windowNodeCount) { + val windowNode = assistStructure.getWindowNodeAt(i) + val appIdCandidate = windowNode.title.toString().split("/").first() + if (appIdCandidate.contains(":")) { + continue + } + + applicationId = appIdCandidate + // Parse view node + val nodeAutofillStructure = parseViewNode(windowNode.rootViewNode) + val nodeAutofillStructureHasItems = nodeAutofillStructure.items + .any { it.hint != AutofillHint.OFF } + if (nodeAutofillStructureHasItems) { + autofillStructure = nodeAutofillStructure + break + } + } + + class TempItem( + val score: Float, + val hint: AutofillHint, + val value: String?, + ) + + val items = mutableListOf() + autofillStructure?.items.orEmpty() + .let { list -> + // We are solving the problem that the app actually detect message fields in + // Slack/Signal/other apps as username fields. If the accuracy is low and we + // do not have a password, then this is most likely a mistake. + val onlyLowAccuracy = list.all { + it.accuracy <= AutofillStructureItem.Accuracy.LOW || + it.hint == AutofillHint.OFF + } + if (onlyLowAccuracy) { + val hasUsernameAndPassword = + list.any { + val username = it.hint == AutofillHint.USERNAME || + it.hint == AutofillHint.EMAIL_ADDRESS || + it.hint == AutofillHint.PHONE_NUMBER + username && it.accuracy > AutofillStructureItem.Accuracy.LOWEST + } && list.any { + val password = it.hint == AutofillHint.PASSWORD + password && it.accuracy > AutofillStructureItem.Accuracy.LOWEST + } + if (!hasUsernameAndPassword) { + return@let emptyList() + } + } + list + } + .groupBy { it.id } + .forEach { + // If the autofill-off flag is marked with a highest + // accuracy then we always respect it. + val forceAutofillOff = it.value.any { + it.hint == AutofillHint.OFF && + it.accuracy == AutofillStructureItem.Accuracy.HIGHEST + } + var structureItems = if (forceAutofillOff) { + return@forEach + } else if (respectAutofillOff) { + // Ignore the field if it has explicitly disabled + // autofill support. + if (it.value.any { it.hint == AutofillHint.OFF }) { + return@forEach + } + it.value + } else { + it.value + .filter { it.hint != AutofillHint.OFF } + } + + // Password type is often used on the fields that have other + // types too, for the reason that a password field masks the input. + // In that case, wipe out the password hints: + val derivesOfPassword = structureItems + .any { + it.hint == AutofillHint.CREDIT_CARD_SECURITY_CODE || + it.hint == AutofillHint.SMS_OTP || + it.hint == AutofillHint.EMAIL_OTP || + it.hint == AutofillHint.APP_OTP + } + if (derivesOfPassword) { + structureItems = structureItems + .filter { it.hint != AutofillHint.PASSWORD } + } + val derivesOfUsername = structureItems + .any { + it.hint == AutofillHint.CREDIT_CARD_NUMBER || + it.hint == AutofillHint.CREDIT_CARD_EXPIRATION_DATE || + it.hint == AutofillHint.CREDIT_CARD_EXPIRATION_MONTH || + it.hint == AutofillHint.CREDIT_CARD_EXPIRATION_YEAR || + it.hint == AutofillHint.CREDIT_CARD_EXPIRATION_DAY + } + if (derivesOfUsername) { + structureItems = structureItems + .filter { it.hint != AutofillHint.USERNAME } + } + + val selectedItem = structureItems + .groupBy { it.hint } + .map { + val score = it.value.fold(0f) { y, x -> y + x.accuracy.value } + val value = it.value + .sortedByDescending { it.accuracy.value } + .asSequence() + .mapNotNull { it.value } + .firstOrNull() + TempItem( + score = score, + value = value, + hint = it.key, + ) + } + .maxByOrNull { it.score } + ?: return@forEach + if (selectedItem.score <= AutofillStructureItem.Accuracy.LOWEST.value + 0.1f) { + // If there's an item with the same hint but higher score, then + // skip this node. + val shouldSkip = autofillStructure?.items.orEmpty().any { + it.hint == selectedItem.hint && + it.accuracy > AutofillStructureItem.Accuracy.LOWEST + } + if (shouldSkip) { + // For now, do not do a skip, it seems to work + // just fine. + return@forEach + } + } + + val item = AutofillStructure2.Item( + id = it.key, + hint = selectedItem.hint, + value = selectedItem.value, + ) + items += item + } + return AutofillStructure2( + applicationId = applicationId, + webDomain = autofillStructure?.webDomain, + webScheme = autofillStructure?.webScheme, + webView = autofillStructure?.webView, + items = items, + ) + } + + private fun parseViewNode( + node: AssistStructure.ViewNode, + ): AutofillStructure { + var webView = node.className == "android.webkit.WebView" + var webDomain: String? = node.webDomain?.takeIf { it.isNotEmpty() } + var webScheme: String? = + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + node.webScheme?.takeIf { it.isNotEmpty() } + } else { + null + } + + val out = mutableListOf() + // Only parse visible nodes + if (node.visibility == View.VISIBLE) { + if (node.autofillId != null) { + val outBuilders = mutableListOf() + // Parse methods + val hints = node.autofillHints + if (hints != null && hints.isNotEmpty()) { + val hintOut = parseNodeByAutofillHint(node) + outBuilders += hintOut + } + + val htmlOut = parseNodeByHtmlAttributes(node) + outBuilders += htmlOut + + val inputOut = parseNodeByAndroidInput(node) + val hintOut = parseNodeByLabel(node) + outBuilders += inputOut + hintOut + + out += outBuilders.map { + AutofillStructureItem( + id = node.autofillId!!, + accuracy = it.accuracy, + hint = it.hint, + value = it.value + ?: node.autofillValue?.takeIf { it.isText }?.textValue?.toString(), + reason = it.reason, + ) + } + } + // Recursive method to process each node + for (i in 0 until node.childCount) { + val childStructure = parseViewNode(node.getChildAt(i)) + if (childStructure.webView) { + webView = childStructure.webView + } + + webDomain = webDomain ?: childStructure.webDomain + webScheme = webScheme ?: childStructure.webScheme + + out += childStructure.items + } + } + return AutofillStructure( + webScheme = webScheme, + webDomain = webDomain, + webView = webView, + items = out, + ) + } + + private fun parseNodeByAutofillHint( + node: AssistStructure.ViewNode, + ): List = kotlin.run { + val out = mutableListOf() + node.autofillHints?.forEach { value -> + val matchers = autofillHintMatchers + .filter { matcher -> matcher.matches(value) } + matchers.forEach { matcher -> + val item = AutofillStructureItemBuilder( + accuracy = matcher.accuracy, + hint = matcher.hint, + reason = "autofill-hint", + ) + out += item + } + } + out + } + + private fun parseNodeByHtmlAttributes( + node: AssistStructure.ViewNode, + ): List = kotlin.run { + val out = mutableListOf() + val nodHtml = node.htmlInfo + when (nodHtml?.tag?.lowercase(Locale.ENGLISH)) { + "input" -> { + val attributes = kotlin.run { + nodHtml.attributes + ?.map { it.first to it.second } + ?.takeUnless { it.isEmpty() } + // For some reason some browsers do not provide the + // list of attributes, although I see that there's + // mValues and mNames in there that do contain them! + ?: kotlin.runCatching { + val values = nodHtml.javaClass.getDeclaredField("mValues") + .apply { isAccessible = true } + .get(nodHtml) + val names = nodHtml.javaClass.getDeclaredField("mNames") + .apply { isAccessible = true } + .get(nodHtml) + if (values is Array<*> && names is Array<*>) { + values + .mapIndexed { i, v -> v.toString() to names[i].toString() } + } else if (values is Collection<*> && names is Collection<*>) { + val namesList = names.toList() + values + .mapIndexed { i, v -> v.toString() to namesList[i].toString() } + } else { + null + } + }.getOrNull() + } + attributes?.forEach { pairAttribute -> + when (val key = pairAttribute.first.lowercase(Locale.ENGLISH)) { + "autocomplete", + "ua-autofill-hints", + -> { + // https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete + val value = pairAttribute.second + ?.lowercase(Locale.ENGLISH) + .orEmpty() + val matchers = autofillHintMatchers + .filter { matcher -> matcher.matches(value) } + matchers.forEach { matcher -> + val item = AutofillStructureItemBuilder( + accuracy = matcher.accuracy, + hint = matcher.hint, + reason = key, + ) + out += item + } + } + + "type" -> { + val type = pairAttribute.second.orEmpty() + extractOfType(type).let(out::addAll) + } + + // Sometimes we can extract useful info from + // the name of the input. Although it is kinda random because + // it's only used in the site's JavaScript. + "name" -> { + val type = pairAttribute.second.orEmpty() + extractOfId(type).let(out::addAll) + } + + "id" -> { + val type = pairAttribute.second.orEmpty() + extractOfId(type).let(out::addAll) + } + + "label" -> { + val label = pairAttribute.second.orEmpty() + extractOfLabel(label).let(out::addAll) + } + } + } + } + } + out + } + + private fun parseNodeByLabel( + node: AssistStructure.ViewNode, + ): List { + val hint = node.hint + ?: return emptyList() + return extractOfLabel(hint) + } + + private fun extractOfType( + value: String, + ): List = when (value.lowercase(Locale.ENGLISH)) { + "tel" -> AutofillStructureItemBuilder( + accuracy = AutofillStructureItem.Accuracy.MEDIUM, + hint = AutofillHint.PHONE_NUMBER, + reason = "type", + ) + + "email" -> AutofillStructureItemBuilder( + accuracy = AutofillStructureItem.Accuracy.MEDIUM, + hint = AutofillHint.EMAIL_ADDRESS, + reason = "type", + ) + + "username" -> AutofillStructureItemBuilder( + accuracy = AutofillStructureItem.Accuracy.MEDIUM, + hint = AutofillHint.USERNAME, + reason = "type", + ) + + "text" -> AutofillStructureItemBuilder( + accuracy = AutofillStructureItem.Accuracy.LOWEST, + hint = AutofillHint.USERNAME, + reason = "type", + ) + + "password" -> AutofillStructureItemBuilder( + accuracy = AutofillStructureItem.Accuracy.HIGH, + hint = AutofillHint.PASSWORD, + reason = "type", + ) + + // custom + + "expdate" -> AutofillStructureItemBuilder( + accuracy = AutofillStructureItem.Accuracy.HIGH, + hint = AutofillHint.CREDIT_CARD_EXPIRATION_DATE, + reason = "type", + ) + + else -> null + }.let { listOfNotNull(it) } + + private fun extractOfId( + value: String, + ): List = kotlin.run { + val id = value.lowercase(Locale.ENGLISH) + when { + "email" in id -> AutofillStructureItemBuilder( + accuracy = AutofillStructureItem.Accuracy.MEDIUM, + hint = AutofillHint.EMAIL_ADDRESS, + reason = "id", + ) + + "username" in id -> AutofillStructureItemBuilder( + accuracy = AutofillStructureItem.Accuracy.MEDIUM, + hint = AutofillHint.USERNAME, + reason = "id", + ) + + "password" in id -> AutofillStructureItemBuilder( + accuracy = AutofillStructureItem.Accuracy.HIGH, + hint = AutofillHint.PASSWORD, + reason = "type", + ) + + else -> null + }.let { listOfNotNull(it) } + } + + private fun extractOfLabel( + value: String, + ): List { + val hint = value + .lowercase(Locale.ENGLISH) + .trim() + if (hint.isBlank()) { + return emptyList() + } + val out = when { + autofillLabelEmailTranslations.any { it in hint } -> + AutofillStructureItemBuilder( + accuracy = AutofillStructureItem.Accuracy.MEDIUM, + hint = AutofillHint.EMAIL_ADDRESS, + reason = "label:$hint", + ) + + autofillLabelUsernameTranslations.any { it in hint } -> + AutofillStructureItemBuilder( + accuracy = AutofillStructureItem.Accuracy.MEDIUM, + hint = AutofillHint.USERNAME, + reason = "label:$hint", + ) + + autofillLabelPasswordTranslations.any { it in hint } -> + AutofillStructureItemBuilder( + accuracy = AutofillStructureItem.Accuracy.MEDIUM, + hint = AutofillHint.PASSWORD, + reason = "label:$hint", + ) + + autofillLabelCreditCardNumberTranslations.any { it.matches(hint) } -> + AutofillStructureItemBuilder( + accuracy = AutofillStructureItem.Accuracy.MEDIUM, + hint = AutofillHint.CREDIT_CARD_NUMBER, + reason = "label:$hint", + ) + + else -> null + } + return listOfNotNull(out) + } + + private fun parseNodeByAndroidInput( + node: AssistStructure.ViewNode, + ): List { + val out = mutableListOf() + + // For some reason the URL bar is not marked as not important for + // autofill. To prevent it we explicitly check for the 'url' in the + // node's entry id. + // + // See: + // https://github.com/AChep/keyguard-app/issues/31 + if ( + node.idEntry.orEmpty().contains("url", ignoreCase = true) && + node.idType.orEmpty().equals("id", ignoreCase = true) + ) { + out += AutofillStructureItemBuilder( + accuracy = AutofillStructureItem.Accuracy.HIGHEST, + hint = AutofillHint.OFF, + ) + return out + } + + val importance = if (Build.VERSION.SDK_INT >= 28) { + node.importantForAutofill + } else { + View.IMPORTANT_FOR_AUTOFILL_AUTO + } + if (importance == View.IMPORTANT_FOR_AUTOFILL_NO) { + out += AutofillStructureItemBuilder( + accuracy = AutofillStructureItem.Accuracy.HIGHEST, + hint = AutofillHint.OFF, + ) + return out + } + + val inputType = node.inputType + when (inputType and InputType.TYPE_MASK_CLASS) { + InputType.TYPE_CLASS_TEXT -> { + when { + inputIsVariationType( + inputType, + InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS, + InputType.TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS, + ) -> { + out += AutofillStructureItemBuilder( + accuracy = AutofillStructureItem.Accuracy.HIGH, + hint = AutofillHint.EMAIL_ADDRESS, + ) + } + + inputIsVariationType( + inputType, + InputType.TYPE_TEXT_VARIATION_PERSON_NAME, + ) -> { + out += AutofillStructureItemBuilder( + accuracy = AutofillStructureItem.Accuracy.LOW, + hint = AutofillHint.PERSON_NAME, + ) + } + + inputIsVariationType( + inputType, + InputType.TYPE_TEXT_VARIATION_NORMAL, + InputType.TYPE_TEXT_VARIATION_PERSON_NAME, + InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT, + ) -> { + out += AutofillStructureItemBuilder( + accuracy = AutofillStructureItem.Accuracy.LOWEST, + hint = AutofillHint.USERNAME, + ) + } + + inputIsVariationType( + inputType, + InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD, + ) -> { + // Some forms use visible password as username, which is + // unfortunate. + val hasUsername = out.any { + it.hint == AutofillHint.USERNAME || + it.hint == AutofillHint.EMAIL_ADDRESS || + it.hint == AutofillHint.PHONE_NUMBER + } + if (hasUsername) { + out += AutofillStructureItemBuilder( + accuracy = AutofillStructureItem.Accuracy.LOWEST, + hint = AutofillHint.PASSWORD, + ) + } else { + out += AutofillStructureItemBuilder( + accuracy = AutofillStructureItem.Accuracy.LOWEST, + hint = AutofillHint.USERNAME, + ) + } + } + + inputIsVariationType( + inputType, + InputType.TYPE_TEXT_VARIATION_PASSWORD, + InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD, + ) -> { + out += AutofillStructureItemBuilder( + accuracy = AutofillStructureItem.Accuracy.HIGH, + hint = AutofillHint.PASSWORD, + ) + } + + inputIsVariationType( + inputType, + InputType.TYPE_TEXT_VARIATION_EMAIL_SUBJECT, + InputType.TYPE_TEXT_VARIATION_FILTER, + InputType.TYPE_TEXT_VARIATION_LONG_MESSAGE, + InputType.TYPE_TEXT_VARIATION_PHONETIC, + InputType.TYPE_TEXT_VARIATION_POSTAL_ADDRESS, + InputType.TYPE_TEXT_VARIATION_SHORT_MESSAGE, + InputType.TYPE_TEXT_VARIATION_URI, + ) -> { + // Type not used + } + + else -> { + } + } + } + + InputType.TYPE_CLASS_NUMBER -> { + when { + inputIsVariationType( + inputType, + InputType.TYPE_NUMBER_VARIATION_NORMAL, + ) -> { + out += AutofillStructureItemBuilder( + accuracy = if (importance == View.IMPORTANT_FOR_AUTOFILL_YES) { + AutofillStructureItem.Accuracy.MEDIUM + } else { + AutofillStructureItem.Accuracy.LOW + }, + hint = AutofillHint.USERNAME, + ) + } + + inputIsVariationType( + inputType, + InputType.TYPE_NUMBER_VARIATION_PASSWORD, + ) -> { + out += AutofillStructureItemBuilder( + accuracy = AutofillStructureItem.Accuracy.LOW, + hint = AutofillHint.PASSWORD, + ) + } + + else -> { + } + } + } + } + return out + } + + private fun inputIsVariationType(inputType: Int, vararg type: Int): Boolean { + type.forEach { + if (inputType and InputType.TYPE_MASK_VARIATION == it) { + return true + } + } + return false + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/autofill/AutofillViews.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/autofill/AutofillViews.kt new file mode 100644 index 00000000..8d835822 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/autofill/AutofillViews.kt @@ -0,0 +1,79 @@ +package com.artemchep.keyguard.android.autofill + +import android.content.Context +import android.view.View +import android.widget.RemoteViews +import com.artemchep.keyguard.common.R + +object AutofillViews { + fun buildPopupEntry( + context: Context, + title: String, + text: String? = null, + ) = RemoteViews(context.packageName, R.layout.item_autofill_entry).apply { + setTextViewText(R.id.autofill_entry_name, title) + if (text.isNullOrEmpty()) { + setViewVisibility(R.id.autofill_entry_username, View.GONE) + } else { + setTextViewText(R.id.autofill_entry_username, text) + } + } + + fun buildPopupEntryManual( + context: Context, + ) = RemoteViews(context.packageName, R.layout.item_autofill_select_entry) + + fun buildPopupKeyguardUnlock( + context: Context, + webDomain: String? = null, + appId: String? = null, + ) = kotlin.run { + if (!webDomain.isNullOrEmpty()) { + RemoteViews( + context.packageName, + R.layout.item_autofill_unlock_web_domain, + ).apply { + setTextViewText( + R.id.autofill_web_domain_text, + webDomain, + ) + } + } else if (!appId.isNullOrEmpty()) { + RemoteViews(context.packageName, R.layout.item_autofill_unlock_app_id).apply { + setTextViewText( + R.id.autofill_app_id_text, + appId, + ) + } + } else { + RemoteViews(context.packageName, R.layout.item_autofill_unlock) + } + } + + fun buildPopupKeyguardOpen( + context: Context, + webDomain: String? = null, + appId: String? = null, + ) = kotlin.run { + if (!webDomain.isNullOrEmpty()) { + RemoteViews( + context.packageName, + R.layout.item_autofill_select_entry_web_domain, + ).apply { + setTextViewText( + R.id.autofill_web_domain_text, + webDomain, + ) + } + } else if (!appId.isNullOrEmpty()) { + RemoteViews(context.packageName, R.layout.item_autofill_select_entry_app_id).apply { + setTextViewText( + R.id.autofill_app_id_text, + appId, + ) + } + } else { + RemoteViews(context.packageName, R.layout.item_autofill_select_entry) + } + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/autofill/KeyguardAutofillService.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/autofill/KeyguardAutofillService.kt new file mode 100644 index 00000000..dca4109e --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/autofill/KeyguardAutofillService.kt @@ -0,0 +1,749 @@ +package com.artemchep.keyguard.android.autofill + +import android.annotation.SuppressLint +import android.app.PendingIntent +import android.content.Context +import android.content.Intent +import android.content.IntentSender +import android.graphics.BlendMode +import android.graphics.drawable.Icon +import android.os.Build +import android.os.CancellationSignal +import android.service.autofill.* +import android.util.Log +import android.view.autofill.AutofillId +import android.view.autofill.AutofillValue +import android.widget.RemoteViews +import androidx.annotation.RequiresApi +import androidx.autofill.inline.UiVersions +import androidx.autofill.inline.v1.InlineSuggestionUi +import androidx.autofill.inline.v1.InlineSuggestionUi.Content +import arrow.core.* +import arrow.optics.Getter +import com.artemchep.keyguard.android.AutofillActivity +import com.artemchep.keyguard.android.AutofillFakeAuthActivity +import com.artemchep.keyguard.android.AutofillSaveActivity +import com.artemchep.keyguard.android.MainActivity +import com.artemchep.keyguard.common.R +import com.artemchep.keyguard.common.io.* +import com.artemchep.keyguard.common.model.* +import com.artemchep.keyguard.common.usecase.* +import com.artemchep.keyguard.feature.home.vault.component.FormatCardGroupLength +import io.ktor.http.* +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.flow.* +import kotlinx.coroutines.runBlocking +import org.kodein.di.DIAware +import org.kodein.di.android.closestDI +import org.kodein.di.direct +import org.kodein.di.instance +import kotlin.coroutines.CoroutineContext + +class KeyguardAutofillService : AutofillService(), DIAware { + companion object { + private const val TAG = "AFService" + + const val KEEP_CIPHERS_IN_MEMORY_FOR = 10_000L + } + + private val job = Job() + + private val scope = object : CoroutineScope { + override val coroutineContext: CoroutineContext + get() = Dispatchers.Main + job + } + + override val di by closestDI { this } + + private val ciphersFlow by lazy { + val model: GetVaultSession by di.instance() + model() + .distinctUntilChanged() + .flatMapLatest { session -> + when (session) { + is MasterSession.Key -> { + val getCiphers = session.di.direct.instance() + getCiphers() + .map { ciphers -> + ciphers + .filter { it.deletedDate == null } + .right() + } + } + + is MasterSession.Empty -> { + val m = Unit.left() + flowOf(m) + } + } + } + .flowOn(Dispatchers.Default) + .shareIn(scope, SharingStarted.WhileSubscribed(KEEP_CIPHERS_IN_MEMORY_FOR), replay = 1) + } + + private val getTotpCode: GetTotpCode by lazy { + di.direct.instance() + } + + private val getSuggestions by lazy { + val model: GetSuggestions by di.instance() + model + } + + private val prefInlineSuggestionsFlow by lazy { + val model: GetAutofillInlineSuggestions by di.instance() + model() + } + + private val prefManualSelectionFlow by lazy { + val model: GetAutofillManualSelection by di.instance() + model() + } + + private val prefRespectAutofillOffFlow by lazy { + val model: GetAutofillRespectAutofillOff by di.instance() + model() + } + + private val prefSaveRequestFlow by lazy { + val model: GetAutofillSaveRequest by di.instance() + model() + } + + private val prefSaveUriFlow by lazy { + val model: GetAutofillSaveUri by di.instance() + model() + } + + private val autofillStructureParser = AutofillStructureParser() + + @SuppressLint("NewApi") + override fun onFillRequest( + request: FillRequest, + cancellationSignal: CancellationSignal, + callback: FillCallback, + ) { + val autofillStructure = kotlin.runCatching { + val structureLatest = request.fillContexts + .map { it.structure } + .lastOrNull() + // If the structure is missing, then abort auto-filling + // process. + ?: throw IllegalStateException("No structures to fill.") + + val respectAutofillOff = prefRespectAutofillOffFlow.toIO().bindBlocking() + autofillStructureParser.parse( + structureLatest, + respectAutofillOff, + ) + } +// .flatMap { +// val targetApplicationId = it.applicationId +// val keyguardApplicationId = packageName +// if (targetApplicationId == keyguardApplicationId) { +// val response = FillResponse.Builder() +// .disableAutofill(1000L) +// .build() +// callback.onSuccess(response) +// return +// } else { +// Result.success(it) +// } +// } + .fold( + onSuccess = ::identity, + onFailure = { + callback.onFailure("Failed to parse structures: ${it.message}") + return + }, + ) + if (autofillStructure.items.isEmpty()) { + callback.onFailure("Nothing to autofill.") + return + } + + val job = ciphersFlow + .onStart { + Log.e("LOL", "on start v2") + } + .toIO() + .effectMap(Dispatchers.Default) { state -> + state.map { secrets -> + val autofillTarget = AutofillTarget( + links = listOfNotNull( + // application id + autofillStructure.applicationId?.let { + LinkInfoPlatform.Android( + packageName = it, + ) + }, + // website + autofillStructure.webDomain?.let { + val url = Url("https://$it") + LinkInfoPlatform.Web( + url = url, + frontPageUrl = url, + ) + }, + ), + hints = autofillStructure.items.map { it.hint }, + ) + getSuggestions( + secrets, + Getter { it as DSecret }, + autofillTarget, + ).bind() + .take(10) as List + } + } + .biEffectTap( + ifException = { + // If the request is canceled, then it does not expect any + // feedback. + if (!cancellationSignal.isCanceled) { + callback.onFailure("Failed to get the secrets from the database!") + } + }, + ifSuccess = { r -> + val canInlineSuggestions = Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && + prefInlineSuggestionsFlow.toIO() + .attempt().bind().exists { it } + + val forceHideManualSelection = kotlin.run { + val targetApplicationId = autofillStructure.applicationId + val keyguardApplicationId = packageName + targetApplicationId == keyguardApplicationId + } + + // build a response + val responseBuilder = FillResponse.Builder() + when (r) { + is Either.Left -> { + if (forceHideManualSelection) { + callback.onFailure("Can not autofill own app password.") + return@biEffectTap + } + // Database is locked, create a generic + // sign in with option. + responseBuilder.buildAuthentication( + type = FooBar.UNLOCK, + result2 = autofillStructure, + request = request, + canInlineSuggestions = canInlineSuggestions, + ) + } + + is Either.Right -> if (r.value.isEmpty()) { + if (forceHideManualSelection) { + callback.onFailure("No match found.") + return@biEffectTap + } + // No match found, create a generic option. + responseBuilder.buildAuthentication( + type = FooBar.SELECT, + result2 = autofillStructure, + request = request, + canInlineSuggestions = canInlineSuggestions, + ) + } else { + val manualSelection = prefManualSelectionFlow.toIO().bind() && + !forceHideManualSelection + + val totalInlineSuggestionsMaxCount = if ( + Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && + canInlineSuggestions + ) { + request.inlineSuggestionsRequest?.maxSuggestionCount + ?: 0 // no suggestions allowed + } else { + 0 + } + val secretInlineSuggestionsMaxCount = + if (manualSelection) totalInlineSuggestionsMaxCount - 1 else totalInlineSuggestionsMaxCount + + var index = 0 + r.value.forEach { secret -> + var f = false + val dataset = + tryBuildDataset(index, this, secret, autofillStructure) { + if (index < secretInlineSuggestionsMaxCount) { + val inline = + tryBuildSecretInlinePresentation( + request, + index, + secret, + ) + if (inline != null) { + setInlinePresentation(inline) + f = true + } + } + } + if (dataset != null && (!canInlineSuggestions || f)) { + responseBuilder.addDataset(dataset) + index += 1 + } + } + if (manualSelection) { + val intent = AutofillActivity.getIntent( + context = this@KeyguardAutofillService, + args = AutofillActivity.Args( + applicationId = autofillStructure.applicationId, + webDomain = autofillStructure.webDomain, + webScheme = autofillStructure.webScheme, + autofillStructure2 = autofillStructure, + ), + ) + + val flags = + PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE + val pi = PendingIntent.getActivity(this, 1010, intent, flags) + + val manualSelectionView = AutofillViews + .buildPopupEntryManual(this) + + autofillStructure.items.forEach { + val autofillId = it.id + Log.e("SuggestionsTest", "autofill_id=$autofillId") + val builder = Dataset.Builder(manualSelectionView) + + if (totalInlineSuggestionsMaxCount > 0 && canInlineSuggestions && Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + val inlinePresentation = + tryBuildManualSelectionInlinePresentation( + request, + index, + intent = intent, + ) + inlinePresentation?.let { + builder.setInlinePresentation(it) + } + Log.e( + "SuggestionsTest", + "adding inline=$inlinePresentation", + ) + } + builder.setValue(autofillId, null) + builder.setAuthentication(pi.intentSender) + responseBuilder.addDataset(builder.build()) + } + } + } + } + val shouldSaveRequest = prefSaveRequestFlow.first() && + !forceHideManualSelection + if (shouldSaveRequest) { + class SaveItem( + val flag: Int, + val item: AutofillStructure2.Item, + ) + + val items = mutableListOf() + autofillStructure.items + .distinctBy { it.hint } + .forEach { item -> + val flag = when (item.hint) { + AutofillHint.PASSWORD -> SaveInfo.SAVE_DATA_TYPE_PASSWORD + AutofillHint.EMAIL_ADDRESS -> SaveInfo.SAVE_DATA_TYPE_EMAIL_ADDRESS + AutofillHint.USERNAME -> SaveInfo.SAVE_DATA_TYPE_USERNAME + else -> return@forEach + } + items += SaveItem( + flag = flag, + item = item, + ) + } + + val hints = autofillStructure + .items + .asSequence() + .map { it.hint } + .toSet() + val hintsIncludeUsername = AutofillHint.USERNAME in hints || + AutofillHint.NEW_USERNAME in hints || + AutofillHint.PHONE_NUMBER in hints || + AutofillHint.EMAIL_ADDRESS in hints + val hintsIncludePassword = AutofillHint.PASSWORD in hints || + AutofillHint.NEW_PASSWORD in hints + if ( + hintsIncludeUsername && + hintsIncludePassword && + items.isNotEmpty() + ) { + val saveInfoBuilder = SaveInfo.Builder( + items.fold(0) { y, x -> y or x.flag }, + items + .map { it.item.id } + .toTypedArray(), + ) + val saveInfo = saveInfoBuilder.build() + responseBuilder.setSaveInfo(saveInfo) + } + } + try { + val response = responseBuilder + .build() + callback.onSuccess(response) + } catch (e: Exception) { + callback.onFailure("Failed to build response ${e.localizedMessage}") + } + }, + ) + .dispatchOn(Dispatchers.Main) + .launchIn(scope) + cancellationSignal.setOnCancelListener { + job.cancel() + } + } + + private enum class FooBar { + UNLOCK, + SELECT, + } + + private fun FillResponse.Builder.buildAuthentication( + type: FooBar, + result2: AutofillStructure2, + request: FillRequest, + canInlineSuggestions: Boolean, + ) { + val remoteViewsUnlock: RemoteViews = when (type) { + FooBar.UNLOCK -> AutofillViews.buildPopupKeyguardUnlock( + this@KeyguardAutofillService, + result2.webDomain, + result2.applicationId, + ) + + FooBar.SELECT -> AutofillViews.buildPopupKeyguardOpen( + this@KeyguardAutofillService, + result2.webDomain, + result2.applicationId, + ) + } + + result2.items.forEach { + val autofillId = it.id + val authIntent = AutofillActivity.getIntent( + context = this@KeyguardAutofillService, + args = AutofillActivity.Args( + applicationId = result2.applicationId, + webDomain = result2.webDomain, + webScheme = result2.webScheme, + autofillStructure2 = result2, + ), + ) + val intentSender: IntentSender = PendingIntent.getActivity( + this@KeyguardAutofillService, + 1001, + authIntent, + PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE, + ).intentSender + + val builder = Dataset.Builder(remoteViewsUnlock) + if (canInlineSuggestions && Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + val inlinePresentation = + tryCreateAuthenticationInlinePresentation( + type, + request, + 0, + intent = authIntent, + ) + inlinePresentation?.let { + builder.setInlinePresentation(it) + } + Log.e( + "SuggestionsTest", + "adding inline=$inlinePresentation", + ) + } + builder.setValue(autofillId, null) + builder.setAuthentication(intentSender) + addDataset(builder.build()) + } + } + + private fun tryBuildDataset( + index: Int, + context: Context, + secret: DSecret, + struct: AutofillStructure2, + onComplete: (Dataset.Builder.() -> Unit)? = null, + ): Dataset? { + val title = secret.name + val text = kotlin.run { + secret.login?.username?.also { return@run it } + secret.card?.number?.also { return@run it } + secret.uris.firstOrNull() + ?.uri + ?.also { return@run it } + null + } + val views = AutofillViews.buildPopupEntry( + context = this, + title = title, + text = text, + ) + + fun createDatasetBuilder(): Dataset.Builder { + val builder = Dataset.Builder(views) + builder.setId(secret.id) + val fields = runBlocking { + val hints = struct.items + .asSequence() + .map { it.hint } + .toSet() + secret.gett( + hints = hints, + getTotpCode = getTotpCode, + ).bind() + } + struct.items.forEach { structItem -> + val value = fields[structItem.hint] + builder.trySetValue( + id = structItem.id, + value = value, + ) + } + return builder + } + + val builder = createDatasetBuilder() + try { + val dataset = createDatasetBuilder().build() + val intent = AutofillFakeAuthActivity.getIntent( + this, + dataset = dataset, + cipher = secret, + structure = struct, + ) + val pi = PendingIntent.getActivity( + this, + 10031 + index, + intent, + PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_CANCEL_CURRENT, + ) + + builder.setAuthentication(pi.intentSender) + } catch (e: Exception) { + // Ignored + } + + onComplete?.invoke(builder) + + return try { + builder.build() + } catch (e: Exception) { + null // not a single value set + } + } + + private fun Dataset.Builder.trySetValue( + id: AutofillId?, + value: String?, + ) { + if (id != null && value != null) { + setValue(id, AutofillValue.forText(value)) + } + } + + @RequiresApi(Build.VERSION_CODES.R) + @SuppressLint("RestrictedApi") + private fun tryBuildSecretInlinePresentation( + request: FillRequest, + index: Int, + secret: DSecret, + ) = tryCreateInlinePresentation( + request = request, + index = index, + createPendingIntent = { + val intent = MainActivity.getIntent( + context = this, + ) + + val flags = PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE + PendingIntent.getActivity(this, 1010, intent, flags) + }, + content = { + setContentDescription(secret.name) + setTitle(secret.name) + val username = kotlin.run { + secret.login?.username?.also { return@run it } + secret.card?.number + // Take the last group of the + // card, otherwise it does not fit in. + ?.let { cardNumber -> + val cardNumberGroups = cardNumber + .windowed( + size = FormatCardGroupLength, + step = FormatCardGroupLength, + partialWindows = true, + ) + if (cardNumberGroups.size < 4) { + return@let cardNumber + } + + val cardNumberSuffix = cardNumberGroups.drop(3) + .joinToString(separator = " ") + "*$cardNumberSuffix" + } + ?.also { return@run it } + secret.uris.firstOrNull() + ?.uri + ?.also { return@run it } + null + } + username?.also(::setSubtitle) + }, + ) + + @RequiresApi(Build.VERSION_CODES.R) + @SuppressLint("RestrictedApi") + private fun tryBuildManualSelectionInlinePresentation( + request: FillRequest, + index: Int, + intent: Intent, + ) = tryCreateInlinePresentation( + request = request, + index = index, + createPendingIntent = { + val flags = PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE + PendingIntent.getActivity(this, 1010, intent, flags) + }, + content = { + val title = getString(R.string.autofill_open_keyguard) + setContentDescription(title) + setTitle(title) + setStartIcon(createAppIcon()) + }, + ) + + @SuppressLint("RestrictedApi") + @RequiresApi(Build.VERSION_CODES.R) + private fun tryCreateAuthenticationInlinePresentation( + type: FooBar, + request: FillRequest, + index: Int, + intent: Intent, + ) = tryCreateInlinePresentation( + request = request, + index = index, + createPendingIntent = { + val flags = PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE + PendingIntent.getActivity(this, 1002, intent, flags) + }, + content = { + val text = when (type) { + FooBar.UNLOCK -> getString(R.string.autofill_unlock_keyguard) + FooBar.SELECT -> getString(R.string.autofill_open_keyguard) + } + setContentDescription(text) + setTitle(text) + setStartIcon(createAppIcon()) + }, + ) + + @SuppressLint("RestrictedApi") + @RequiresApi(Build.VERSION_CODES.R) + private inline fun tryCreateInlinePresentation( + request: FillRequest, + index: Int, + createPendingIntent: () -> PendingIntent, + content: Content.Builder.() -> Unit, + ): InlinePresentation? { + val spec = request.inlineSuggestionsRequest + ?.inlinePresentationSpecs + ?.getOrNull(index) + ?: return null + val imeStyle = spec.style + if (UiVersions.getVersions(imeStyle).contains(UiVersions.INLINE_UI_VERSION_1)) { + val pi = createPendingIntent() + return InlinePresentation( + InlineSuggestionUi + .newContentBuilder(pi) + .apply(content) + .build().slice, + spec, + false, + ) + } + return null + } + + @RequiresApi(Build.VERSION_CODES.Q) + private fun createAppIcon() = Icon + .createWithResource(this@KeyguardAutofillService, R.mipmap.ic_launcher) + .apply { + setTintBlendMode(BlendMode.DST) + } + + override fun onSaveRequest(request: SaveRequest, callback: SaveCallback) { + val autofillStructure = kotlin.runCatching { + val structureLatest = request.fillContexts + .map { it.structure } + .lastOrNull() + // If the structure is missing, then abort auto-filling + // process. + ?: throw IllegalStateException("No structures to fill.") + + val respectAutofillOff = prefRespectAutofillOffFlow.toIO().bindBlocking() + autofillStructureParser.parse( + structureLatest, + respectAutofillOff, + ) + }.fold( + onSuccess = ::identity, + onFailure = { + callback.onFailure("Failed to parse structures: ${it.message}") + return + }, + ) + val hints = autofillStructure + .items + .asSequence() + .map { it.hint } + .toSet() + val hintsIncludeUsername = AutofillHint.USERNAME in hints || + AutofillHint.NEW_USERNAME in hints || + AutofillHint.PHONE_NUMBER in hints || + AutofillHint.EMAIL_ADDRESS in hints + val hintsIncludePassword = AutofillHint.PASSWORD in hints || + AutofillHint.NEW_PASSWORD in hints + if ( + !hintsIncludeUsername || + !hintsIncludePassword + ) { + callback.onFailure("Can only save login data.") + return + } + + val intent = AutofillSaveActivity.getIntent( + context = this@KeyguardAutofillService, + args = AutofillSaveActivity.Args( + applicationId = autofillStructure.applicationId, + webDomain = autofillStructure.webDomain, + webScheme = autofillStructure.webScheme, + autofillStructure2 = autofillStructure, + ), + ) + if (Build.VERSION.SDK_INT >= 28) { + val flags = + PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_CANCEL_CURRENT + val pi = PendingIntent.getActivity(this, 10120, intent, flags) + callback.onSuccess(pi.intentSender) + } else { + try { + startActivity(intent) + } catch (e: Exception) { + callback.onFailure(e.message) + return + } + callback.onSuccess() + } + } + + override fun onDestroy() { + super.onDestroy() + job.cancel() + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/autofill/KeyguardCredentialService.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/autofill/KeyguardCredentialService.kt new file mode 100644 index 00000000..45c26885 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/autofill/KeyguardCredentialService.kt @@ -0,0 +1,254 @@ +package com.artemchep.keyguard.android.autofill + +import android.app.PendingIntent +import android.content.Intent +import android.os.CancellationSignal +import android.os.OutcomeReceiver +import androidx.annotation.RequiresApi +import androidx.credentials.exceptions.ClearCredentialException +import androidx.credentials.exceptions.ClearCredentialUnknownException +import androidx.credentials.exceptions.CreateCredentialException +import androidx.credentials.exceptions.CreateCredentialUnknownException +import androidx.credentials.exceptions.GetCredentialException +import androidx.credentials.exceptions.GetCredentialUnknownException +import androidx.credentials.provider.AuthenticationAction +import androidx.credentials.provider.BeginCreateCredentialRequest +import androidx.credentials.provider.BeginCreateCredentialResponse +import androidx.credentials.provider.BeginCreatePasswordCredentialRequest +import androidx.credentials.provider.BeginCreatePublicKeyCredentialRequest +import androidx.credentials.provider.BeginGetCredentialRequest +import androidx.credentials.provider.BeginGetCredentialResponse +import androidx.credentials.provider.CreateEntry +import androidx.credentials.provider.CredentialProviderService +import androidx.credentials.provider.ProviderClearCredentialStateRequest +import com.artemchep.keyguard.android.PasskeyBeginGetRequest +import com.artemchep.keyguard.android.PasskeyCreateActivity +import com.artemchep.keyguard.android.PasskeyGetUnlockActivity +import com.artemchep.keyguard.android.PendingIntents +import com.artemchep.keyguard.android.downloader.journal.CipherHistoryOpenedRepository +import com.artemchep.keyguard.common.R +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.handleErrorTap +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.model.MasterSession +import com.artemchep.keyguard.common.usecase.GetCanWrite +import com.artemchep.keyguard.common.usecase.GetCiphers +import com.artemchep.keyguard.common.usecase.GetVaultSession +import com.artemchep.keyguard.feature.crashlytics.crashlyticsTap +import com.artemchep.keyguard.platform.recordLog +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.shareIn +import org.kodein.di.DIAware +import org.kodein.di.android.closestDI +import org.kodein.di.direct +import org.kodein.di.instance +import kotlin.coroutines.CoroutineContext + +@RequiresApi(34) +class KeyguardCredentialService : CredentialProviderService(), DIAware { + private val job = Job() + + private val scope = object : CoroutineScope { + override val coroutineContext: CoroutineContext + get() = Dispatchers.Main + job + } + + override val di by closestDI { this } + + private val getCanWrite by instance() + + private val sessionFlow by lazy { + val getVaultSession: GetVaultSession by di.instance() + getVaultSession() + .distinctUntilChanged() + .shareIn( + scope, + SharingStarted.WhileSubscribed(KeyguardAutofillService.KEEP_CIPHERS_IN_MEMORY_FOR), + replay = 1, + ) + } + + private val passkeyBeginGetRequest by instance() + + override fun onBeginCreateCredentialRequest( + request: BeginCreateCredentialRequest, + cancellationSignal: CancellationSignal, + callback: OutcomeReceiver, + ) { + ioEffect { + recordLog("Got begin create credential request") + // Check if you can modify items in the vault, if + // no then ignore the passkeys request. + val canWrite = getCanWrite() + .first() + if (!canWrite) { + val e = CreateCredentialUnknownException() + throw e + } + + val response = ioEffect { processCreateCredentialsRequest(request) } + .crashlyticsTap { e -> + e.takeIf { it !is CreateCredentialException } + } + .bind() + callback.onResult(response) + } + // Something went wrong, report back the + // status to the credentials manager. + .handleErrorTap { + val e = it as? CreateCredentialException + ?: CreateCredentialUnknownException() + callback.onError(e) + } + .attempt() + .launchIn(scope) + } + + private suspend fun processCreateCredentialsRequest( + request: BeginCreateCredentialRequest, + ): BeginCreateCredentialResponse { + return when (request) { + is BeginCreatePublicKeyCredentialRequest -> { + val title = getString(R.string.app_name) + val pi = createCreatePasskeyPendingIntent() + val entries = listOf( + CreateEntry( + accountName = title, + pendingIntent = pi, + ), + ) + BeginCreateCredentialResponse( + createEntries = entries, + ) + } + + is BeginCreatePasswordCredentialRequest -> { + // TODO: Add a support for storing the passwords. This + // requires implementing: + // https://github.com/AChep/keyguard-app/issues/5 + throw CreateCredentialUnknownException() + } + + else -> { + throw CreateCredentialUnknownException() + } + } + } + + override fun onBeginGetCredentialRequest( + request: BeginGetCredentialRequest, + cancellationSignal: CancellationSignal, + callback: OutcomeReceiver, + ) { + ioEffect { + recordLog("Got begin get credential request") + + when (val session = sessionFlow.first()) { + is MasterSession.Key -> { + val cipherHistoryOpenedRepository = + session.di.direct.instance() + val getCiphers = session.di.direct.instance() + + val ciphers = getCiphers() + .map { ciphers -> + ciphers + .filter { it.deletedDate == null } + } + .first() + val response = ioEffect { + passkeyBeginGetRequest.processGetCredentialsRequest( + cipherHistoryOpenedRepository = cipherHistoryOpenedRepository, + request = request, + ciphers = ciphers, + ) + } + .crashlyticsTap { e -> + e.takeIf { it !is GetCredentialException } + } + .bind() + callback.onResult(response) + } + + // Need to authenticate a user to unlock + // the database first. + is MasterSession.Empty -> { + val title = getString(R.string.autofill_open_keyguard) + val pi = createGetUnlockPasskeyPendingIntent() + val actions = listOf( + AuthenticationAction( + title = title, + pendingIntent = pi, + ), + ) + callback.onResult( + BeginGetCredentialResponse( + authenticationActions = actions, + ), + ) + } + } + } + // Something went wrong, report back the + // status to the credentials manager. + .handleErrorTap { + val e = it as? GetCredentialException + ?: GetCredentialUnknownException() + callback.onError(e) + } + .attempt() + .launchIn(scope) + } + + override fun onClearCredentialStateRequest( + request: ProviderClearCredentialStateRequest, + cancellationSignal: CancellationSignal, + callback: OutcomeReceiver, + ) { + recordLog("Got clear credential state request") + callback.onError(ClearCredentialUnknownException()) + } + + override fun onDestroy() { + super.onDestroy() + job.cancel() + } + + // + // Intents + // + + private fun createGetUnlockPasskeyPendingIntent( + ): PendingIntent { + val intent = PasskeyGetUnlockActivity.getIntent( + context = this, + ) + return createPendingIntent(intent) + } + + private fun createCreatePasskeyPendingIntent( + ): PendingIntent { + val intent = PasskeyCreateActivity.getIntent( + context = this, + ) + return createPendingIntent(intent) + } + + private fun createPendingIntent( + intent: Intent, + ): PendingIntent { + val flags = PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_MUTABLE + val rc = getNextPendingIntentRequestCode() + return PendingIntent.getActivity(this, rc, intent, flags) + } + + private fun getNextPendingIntentRequestCode() = PendingIntents.credential.obtainId() + +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/clipboard/KeyguardClipboardService.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/clipboard/KeyguardClipboardService.kt new file mode 100644 index 00000000..9d166dae --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/clipboard/KeyguardClipboardService.kt @@ -0,0 +1,454 @@ +package com.artemchep.keyguard.android.clipboard + +import android.app.Notification +import android.app.NotificationChannel +import android.app.NotificationManager +import android.app.PendingIntent +import android.app.Service +import android.content.ContentResolver +import android.content.Context +import android.content.Intent +import android.media.AudioAttributes +import android.net.Uri +import android.os.IBinder +import android.os.Parcelable +import android.util.Log +import androidx.core.app.NotificationCompat +import androidx.core.content.getSystemService +import com.artemchep.keyguard.android.Notifications +import com.artemchep.keyguard.android.downloader.receiver.CopyActionReceiver +import com.artemchep.keyguard.common.R +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.model.TotpCode +import com.artemchep.keyguard.common.model.TotpToken +import com.artemchep.keyguard.common.service.clipboard.ClipboardService +import com.artemchep.keyguard.common.usecase.GetClipboardAutoRefresh +import com.artemchep.keyguard.common.usecase.GetTotpCode +import com.artemchep.keyguard.ui.totp.formatCodeStr +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.TimeoutCancellationException +import kotlinx.coroutines.cancel +import kotlinx.coroutines.cancelAndJoin +import kotlinx.coroutines.channels.actor +import kotlinx.coroutines.channels.consumeEach +import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.channelFlow +import kotlinx.coroutines.flow.collect +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.lastOrNull +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.mapLatest +import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.flow.shareIn +import kotlinx.coroutines.flow.take +import kotlinx.coroutines.launch +import kotlinx.coroutines.withTimeout +import kotlinx.coroutines.yield +import kotlinx.datetime.Clock +import kotlinx.datetime.Instant +import kotlinx.parcelize.Parcelize +import org.kodein.di.DIAware +import org.kodein.di.android.closestDI +import org.kodein.di.instance +import kotlin.coroutines.CoroutineContext +import kotlin.time.Duration + +class KeyguardClipboardService : Service(), DIAware { + companion object { + private const val KEY_ARGUMENTS = "arguments" + + fun getIntent( + context: Context, + cipherName: String?, + totpToken: TotpToken, + ) = kotlin.run { + val args = Args.CopyTotpCode( + cipherName = cipherName, + token = totpToken.raw, + ) + getIntent(context, args) + } + + fun getIntent( + context: Context, + cipherName: String?, + value: String, + concealed: Boolean, + ) = kotlin.run { + val args = Args.CopyValue(cipherName, value, concealed) + getIntent(context, args) + } + + fun getIntent( + context: Context, + args: Args, + ) = Intent(context, KeyguardClipboardService::class.java).apply { + putExtra(KEY_ARGUMENTS, args) + } + } + + sealed interface Args : Parcelable { + @Parcelize + data class CopyValue( + val cipherName: String?, + val value: String, + val concealed: Boolean, + ) : Args + + @Parcelize + data class CopyTotpCode( + val cipherName: String?, + val token: String, + ) : Args + + @Parcelize + object Cancel : Args + } + + private data class CopyValueEvent( + val type: Type, + val cipherName: String?, + val value: String, + val text: String = value, + val concealed: Boolean, + val expiration: Instant? = null, + ) { + enum class Type { + VALUE, + TOTP, + } + } + + private val scope: CoroutineScope = object : CoroutineScope { + override val coroutineContext: CoroutineContext = Dispatchers.Main + Job() + } + + override val di by closestDI { this } + + private val clipboardService: ClipboardService by instance() + + private val clipboardAutoRefreshFlow by lazy { + val getClipboardAutoRefresh: GetClipboardAutoRefresh by instance() + getClipboardAutoRefresh() + .shareIn(scope, SharingStarted.Eagerly, replay = 1) + } + + private val notificationManager by lazy { + getSystemService()!! + } + + private val notificationIdPool = Notifications.totp + + private var notificationId: Int = 0 + + override fun onCreate() { + super.onCreate() + notificationId = notificationIdPool.obtainId() + } + + private val actor = scope.actor(capacity = 16) { + var previousJob: Job? = null + consumeEach { + if (it is Args.Cancel) { + stopSelf() + return@consumeEach + } + + val flow = execute(it) + if (flow != null) { + previousJob?.cancel() + previousJob = executeFlow2(flow) + .launchIn(scope) + } + } + } + + private fun execute(args: Args) = when (args) { + is Args.CopyValue -> execute(args) + is Args.CopyTotpCode -> execute(args) + is Args.Cancel -> null + } + + private fun execute(args: Args.CopyValue): Flow { + val event = CopyValueEvent( + type = CopyValueEvent.Type.VALUE, + cipherName = args.cipherName, + value = args.value, + concealed = args.concealed, + ) + return flowOf(event) + } + + private fun execute(args: Args.CopyTotpCode): Flow? { + val token = TotpToken.parse(args.token).getOrNull() + // The token should always be valid, because we + // verified it before creating a service. + ?: return null + val getTotpCode: GetTotpCode by instance() + return getTotpCode(token) + .map { + val expiration = when (val counter = it.counter) { + is TotpCode.TimeBasedCounter -> counter.expiration + is TotpCode.IncrementBasedCounter -> null + } + CopyValueEvent( + type = CopyValueEvent.Type.TOTP, + cipherName = args.cipherName, + value = it.code, + text = it.formatCodeStr(), + concealed = false, + expiration = expiration, + ) + } + } + + private fun executeFlow2(flow: Flow): IO = ioEffect { + val autoRefreshDuration = clipboardAutoRefreshFlow.first() + + flow + .run { + @Suppress("UnnecessaryVariable") + val d = autoRefreshDuration + if (d.isPositive()) { + takeFor(duration = d) + } else { + take(1) + } + } + .mapLatest { event -> + performCopyToClipboard(event) + notify( + notificationId = notificationId, + event = event, + ) + + event + } + .lastOrNull() + + yield() + stopSelf() + } + + private suspend fun notify( + notificationId: Int, + event: CopyValueEvent, + ) { + val expiration = event.expiration + if (expiration != null) { + var lastSeconds = 0L + var alertOnlyOnce = false + do { + val now = Clock.System.now() + val newSeconds = (expiration - now).inWholeSeconds + if (newSeconds != lastSeconds && newSeconds != 0L) { + val notification = createNotification( + type = event.type, + name = event.cipherName, + text = event.text, + value = event.value, + expiration = expiration - now, + alertOnlyOnce = alertOnlyOnce, + ) + startForeground(notificationId, notification) + } + + lastSeconds = newSeconds + alertOnlyOnce = true // do not notify about status updates + delay(500L) + } while (lastSeconds > 0) + } else { + val notification = createNotification( + type = event.type, + name = event.cipherName, + text = event.text, + value = event.value, + expiration = null, + alertOnlyOnce = false, + ) + startForeground(notificationId, notification) + } + } + + private fun Flow.takeFor( + duration: Duration, + ): Flow = channelFlow { + coroutineScope { + val consumeJob = launch { + onEach { + send(it) + }.collect() + } + + try { + withTimeout(duration) { + consumeJob.join() + } + } catch (e: TimeoutCancellationException) { + Log.e("totp", "cancel event") + // Stop observing for more events. + consumeJob.cancelAndJoin() + } + } + } + + private fun performCopyToClipboard(event: CopyValueEvent) = + clipboardService.setPrimaryClip( + value = event.value, + concealed = event.concealed, + ) + + override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { + val args = intent?.extras?.getParcelable(KEY_ARGUMENTS) + if (args != null) { + actor.trySend(args) + } + + return START_NOT_STICKY + } + + override fun onBind(intent: Intent?): IBinder? = null + + override fun onDestroy() { + val notificationId = notificationId + .also { + // we can not post with this ID anymore + notificationId = 0 + } + if (notificationId != 0) { + notificationIdPool.releaseId(notificationId) + notificationManager.cancel(notificationId) + } + + super.onDestroy() + scope.cancel() + } + + // + // Notifications + // + + private fun createNotification( + type: CopyValueEvent.Type, + name: String?, + text: String, + value: String, + expiration: Duration?, + alertOnlyOnce: Boolean, + ongoing: Boolean = true, + ): Notification { + val icon = when (expiration?.inWholeSeconds) { + null -> R.drawable.ic_lock_outline + 0L -> R.drawable.ic_number_0 + 1L -> R.drawable.ic_number_1 + 2L -> R.drawable.ic_number_2 + 3L -> R.drawable.ic_number_3 + 4L -> R.drawable.ic_number_4 + 5L -> R.drawable.ic_number_5 + 6L -> R.drawable.ic_number_6 + 7L -> R.drawable.ic_number_7 + 8L -> R.drawable.ic_number_8 + 9L -> R.drawable.ic_number_9 + else -> R.drawable.ic_number_9_plus + } + + val contentTitle = when (type) { + CopyValueEvent.Type.TOTP -> "Copied a one-time password" + CopyValueEvent.Type.VALUE -> "Copied a value" + } + val contentText = kotlin.run { + val suffix = expiration + ?.let { duration -> + val seconds = duration.inWholeSeconds + " ($seconds)" + } + .orEmpty() + "$text$suffix" + } + + // Action + val copyAction = kotlin.run { + val copyAction = kotlin.run { + val intent = CopyActionReceiver.cancel( + context = applicationContext, + value = value, + ) + PendingIntent.getBroadcast( + applicationContext, + notificationId, + intent, + PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT, + ) + } + val copyTitle = "Copy" + NotificationCompat.Action.Builder(R.drawable.ic_copy, copyTitle, copyAction) + .build() + } + val cancelAction = kotlin.run { + val cancelAction = kotlin.run { + val intent = getIntent( + context = applicationContext, + args = Args.Cancel, + ) + PendingIntent.getForegroundService( + applicationContext, + notificationId + 1, + intent, + PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT, + ) + } + val cancelTitle = "Cancel" + NotificationCompat.Action.Builder(R.drawable.ic_cancel, cancelTitle, cancelAction) + .build() + } + + val channelId = createNotificationChannel() + val audioUri = getAudioUri() + return NotificationCompat.Builder(this, channelId) + .setForegroundServiceBehavior(NotificationCompat.FOREGROUND_SERVICE_IMMEDIATE) + .setContentTitle(contentTitle) + .setContentText(contentText) + .setSubText(name) + .addAction(copyAction) + .addAction(cancelAction) + .setSmallIcon(icon) + .setSound(audioUri) + .setOnlyAlertOnce(alertOnlyOnce) + .setOngoing(ongoing) + .build() + } + + private fun createNotificationChannel(): String { + val channelImportance = if (clipboardService.hasCopyNotification()) { + NotificationManager.IMPORTANCE_DEFAULT + } else { + NotificationManager.IMPORTANCE_HIGH + } + val channel = kotlin.run { + val id = getString(R.string.notification_clipboard_channel_id) + val name = getString(R.string.notification_clipboard_channel_name) + NotificationChannel(id, name, channelImportance) + } + channel.enableVibration(false) + val audioUri = getAudioUri() + val audioAttributes = AudioAttributes.Builder() + .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) + .setUsage(AudioAttributes.USAGE_NOTIFICATION) + .build() + channel.setSound(audioUri, audioAttributes) + val nm = getSystemService()!! + nm.createNotificationChannel(channel) + return channel.id + } + + private fun getAudioUri() = + Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + applicationContext.packageName + "/" + R.raw.silence) +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/closestActivityOrNull.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/closestActivityOrNull.kt new file mode 100644 index 00000000..54f951cd --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/closestActivityOrNull.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.android + +import android.app.Activity +import android.content.Context +import android.content.ContextWrapper + +val Context.closestActivityOrNull: Activity? + get() = when (this) { + is Activity -> this + is ContextWrapper -> baseContext.closestActivityOrNull + else -> null + } diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/AttachmentDownloadTag.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/AttachmentDownloadTag.kt new file mode 100644 index 00000000..3de171d6 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/AttachmentDownloadTag.kt @@ -0,0 +1,35 @@ +package com.artemchep.keyguard.android.downloader + +import arrow.core.left +import arrow.core.right + +private const val SEPARATOR = "|" + +class AttachmentDownloadTag( + val localCipherId: String, // to be able to find the right account for the item + val remoteCipherId: String, + val attachmentId: String, +) { + companion object +} + +fun AttachmentDownloadTag.Companion.deserialize(tag: String) = kotlin.run { + val ids = tag.split(SEPARATOR) + if (ids.size >= 3) { + val model = AttachmentDownloadTag( + localCipherId = ids[0], + remoteCipherId = ids[1], + attachmentId = ids[2], + ) + model.right() + } else { + IllegalArgumentException("Attachment downloading tag must consist of 3 IDs!").left() + } +} + +fun AttachmentDownloadTag.serialize() = + listOf( + localCipherId, + remoteCipherId, + attachmentId, + ).joinToString(separator = SEPARATOR) diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/DownloadClientAndroid.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/DownloadClientAndroid.kt new file mode 100644 index 00000000..1f2f1a52 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/DownloadClientAndroid.kt @@ -0,0 +1,33 @@ +package com.artemchep.keyguard.android.downloader + +import android.app.Application +import android.content.Context +import com.artemchep.keyguard.common.service.crypto.FileEncryptor +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.copy.download.DownloadClientJvm +import okhttp3.OkHttpClient +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class DownloadClientAndroid( + private val context: Context, + windowCoroutineScope: WindowCoroutineScope, + okHttpClient: OkHttpClient, + fileEncryptor: FileEncryptor, +) : DownloadClientJvm( + cacheDirProvider = { + context.cacheDir + }, + windowCoroutineScope = windowCoroutineScope, + okHttpClient = okHttpClient, + fileEncryptor = fileEncryptor, +) { + constructor( + directDI: DirectDI, + ) : this( + context = directDI.instance(), + windowCoroutineScope = directDI.instance(), + okHttpClient = directDI.instance(), + fileEncryptor = directDI.instance(), + ) +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/DownloadManagerImpl.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/DownloadManagerImpl.kt new file mode 100644 index 00000000..9b21a4b9 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/DownloadManagerImpl.kt @@ -0,0 +1,401 @@ +package com.artemchep.keyguard.android.downloader + +import android.app.Application +import android.content.Context +import android.util.Log +import arrow.core.left +import arrow.core.right +import com.artemchep.keyguard.android.downloader.journal.DownloadRepository +import com.artemchep.keyguard.android.downloader.journal.room.DownloadInfoEntity2 +import com.artemchep.keyguard.android.downloader.worker.AttachmentDownloadWorker +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.service.crypto.CryptoGenerator +import com.artemchep.keyguard.common.service.download.DownloadManager +import com.artemchep.keyguard.common.service.download.DownloadProgress +import com.artemchep.keyguard.common.service.text.Base64Service +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.ui.CodeException +import com.artemchep.keyguard.ui.getHttpCode +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.FlowPreview +import kotlinx.coroutines.Job +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.last +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.mapNotNull +import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.launch +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock +import kotlinx.datetime.Clock +import org.kodein.di.DirectDI +import org.kodein.di.instance +import java.io.File + +class DownloadManagerImpl( + private val context: Context, + private val windowCoroutineScope: WindowCoroutineScope, + private val downloadClient: DownloadClientAndroid, + private val downloadRepository: DownloadRepository, + private val base64Service: Base64Service, + private val cryptoGenerator: CryptoGenerator, +) : DownloadManager { + companion object { + // Since the extension of the files is unknown it's safe + // to say that they are just binaries. + private const val CACHE_FILE_EXT = ".bin" + + fun getDir(context: Context) = context.filesDir.resolve("downloads/") + + fun getFile( + dir: File, + downloadId: String, + ) = dir.resolve("$downloadId$CACHE_FILE_EXT") + } + + private val mutex = Mutex() + + private val map = mutableMapOf() + + constructor( + directDI: DirectDI, + ) : this( + context = directDI.instance(), + windowCoroutineScope = directDI.instance(), + downloadClient = directDI.instance(), + downloadRepository = directDI.instance(), + base64Service = directDI.instance(), + cryptoGenerator = directDI.instance(), + ) + +// fun statusByAttachmentId( +// accountId: String, +// cipherId: String, +// attachmentId: String, +// ) = AttachmentDownloadTag( +// accountId = accountId, +// remoteCipherId = cipherId, +// attachmentId = attachmentId, +// ).serialize().let(::statusByTag) + + override fun statusByDownloadId2(downloadId: String): Flow = downloadClient + .fileStatusByDownloadId(downloadId) + + override fun statusByTag(tag: DownloadInfoEntity2.AttachmentDownloadTag): Flow = + downloadClient + .fileStatusByTag(tag) + .flatMapLatest { event -> + when (event) { + is DownloadProgress.None -> { + downloadRepository + .get() + .map { + it + .asSequence() + .map { + DownloadInfoEntity2.AttachmentDownloadTag( + localCipherId = it.localCipherId, + remoteCipherId = it.remoteCipherId, + attachmentId = it.attachmentId, + ) + } + .toSet() + } + .map { tags -> tag.takeIf { it in tags } } + .map { tagOrNull -> + tagOrNull?.let { peekDownloadInfoByTag(it) } + } + .distinctUntilChanged() + .map { downloadInfo -> + downloadInfo + ?: return@map DownloadProgress.None + val file = getFilePath(downloadId = downloadInfo.id) + + when { + file.exists() -> { + val result = file.right() + DownloadProgress.Complete(result) + } + + downloadInfo.error != null -> { + // TODO: Fix meee!! + val exception = CodeException( + code = downloadInfo.error!!.code, + description = downloadInfo.error!!.message, + ) + val result = exception.left() + DownloadProgress.Complete(result) + } + + else -> { + DownloadProgress.Loading() + } + } + } + } + + else -> flowOf(event) + } + } + + @OptIn(FlowPreview::class) + override suspend fun queue( + downloadInfo: DownloadInfoEntity2, + ): DownloadManager.QueueResult = queue( + url = downloadInfo.url, + urlIsOneTime = downloadInfo.urlIsOneTime, + name = downloadInfo.name, + tag = DownloadInfoEntity2.AttachmentDownloadTag( + localCipherId = downloadInfo.localCipherId, + remoteCipherId = downloadInfo.remoteCipherId, + attachmentId = downloadInfo.attachmentId, + ), + attempt = downloadInfo.error?.attempt ?: 0, + key = downloadInfo.encryptionKeyBase64?.let { base64Service.decode(it) }, + ) + + @OptIn(FlowPreview::class) + override suspend fun queue( + tag: DownloadInfoEntity2.AttachmentDownloadTag, + url: String, + urlIsOneTime: Boolean, + name: String, + key: ByteArray?, + attempt: Int, + worker: Boolean, + ): DownloadManager.QueueResult = kotlin.run { + val downloadInfo = getOrPutDownloadFileEntity( + url = url, + urlIsOneTime = urlIsOneTime, + name = name, + tag = tag, + encryptionKey = key, + error = null, // clears error field if existed + ) + val file = getFilePath(downloadInfo.id) + + val downloadCancelFlow = downloadRepository + .getByIdFlow(id = downloadInfo.id) + .mapNotNull { model -> + Unit.takeIf { model == null } + } + val downloadFlow = downloadClient.fileLoader( + downloadId = downloadInfo.id, + url = url, + tag = tag, + file = file, + fileKey = key, + cancelFlow = downloadCancelFlow, + ) + + // Launch downloading job on + // the app scope. + listenToError( + scope = windowCoroutineScope, + attempt = attempt, + downloadId = downloadInfo.id, + downloadFlow = downloadFlow, + ) + + if (worker) { + val args = AttachmentDownloadWorker.Args( + downloadId = downloadInfo.id, + ) + AttachmentDownloadWorker.enqueueOnce( + context = context, + args = args, + ) + } + + DownloadManager.QueueResult( + info = downloadInfo, + flow = downloadFlow, + ) + } + + private fun getFilePath(downloadId: String) = + getFile( + dir = getDir(context), + downloadId = downloadId, + ) + + private fun listenToError( + scope: CoroutineScope, + attempt: Int, + downloadId: String, + downloadFlow: Flow, + ) { + synchronized(map) { + // Find out if current download job exists and still + // valid. Create a new one otherwise. + val existingJob = map[downloadId] + if ( + existingJob != null && + !existingJob.isCancelled && + !existingJob.isCompleted + ) { + return@synchronized + } + + val job = scope.launch { + val downloadResult = downloadFlow + .onEach { downloadStatus -> + Log.e("download", "progress $downloadStatus") + } + .last() + if (downloadResult is DownloadProgress.Complete) { + downloadResult.result.fold( + ifLeft = { e -> + val error = DownloadInfoEntity2.Error( + code = e.getHttpCode(), + message = e.message, + attempt = attempt + 1, + ) + replaceDownloadFileEntity( + id = downloadId, + error = error, + ) + Log.e("download", "im sorry, mate") + }, + ifRight = {}, + ) + } + } + job.invokeOnCompletion { + synchronized(map) { + val latestJob = map[downloadId] + if (latestJob === job) map.remove(downloadId) + } + } + map[downloadId] = job + } + } + + override suspend fun removeByDownloadId( + downloadId: String, + ) = removeDownloadInfoByDownloadId(id = downloadId) + + override suspend fun removeByTag( + tag: DownloadInfoEntity2.AttachmentDownloadTag, + ) = removeDownloadInfoByTag(tag = tag) + + // + // Download Info Repository + // + + private suspend fun removeDownloadInfoByDownloadId( + id: String, + ) = mutex + .withLock { + downloadRepository.removeById(id = id) + .bind() + } + + private suspend fun removeDownloadInfoByTag( + tag: DownloadInfoEntity2.AttachmentDownloadTag, + ) = mutex + .withLock { + downloadRepository.removeByTag(tag = tag) + .bind() + } + + private suspend fun peekDownloadInfoByTag( + tag: DownloadInfoEntity2.AttachmentDownloadTag, + ) = mutex + .withLock { + downloadRepository.getByTag(tag = tag) + .bind() + } + + private suspend fun getOrPutDownloadFileEntity( + url: String, + urlIsOneTime: Boolean, + name: String, + tag: DownloadInfoEntity2.AttachmentDownloadTag, + encryptionKey: ByteArray?, + error: DownloadInfoEntity2.Error?, + ) = kotlin.run { + val encryptionKeyBase64 = encryptionKey?.let(base64Service::encodeToString) + mutex + .withLock { + val now = Clock.System.now() + + val existingEntry = downloadRepository.getByTag(tag = tag) + .bind() + if (existingEntry != null) { + if ( + existingEntry.name != name || + existingEntry.url != url || + existingEntry.encryptionKeyBase64 != encryptionKeyBase64 || + existingEntry.error != error + ) { + val newEntry = existingEntry.copy( + revisionDate = now, + // update fields + name = name, + url = url, + encryptionKeyBase64 = encryptionKeyBase64, + error = error, + ) + downloadRepository + .put(newEntry) + .bind() + return@withLock newEntry + } + return@withLock existingEntry + } + + val id = cryptoGenerator.uuid() + + val newEntry = DownloadInfoEntity2( + id = id, + url = url, + urlIsOneTime = urlIsOneTime, + name = name, + localCipherId = tag.localCipherId, + remoteCipherId = tag.remoteCipherId, + attachmentId = tag.attachmentId, + createdDate = now, + encryptionKeyBase64 = encryptionKeyBase64, + ) + downloadRepository + .put(newEntry) + .bind() + newEntry + } + } + + private suspend fun replaceDownloadFileEntity( + id: String, + error: DownloadInfoEntity2.Error?, + ) = kotlin.run { + mutex + .withLock { + val now = Clock.System.now() + + val existingEntry = downloadRepository.getById(id = id) + .bind() + if (existingEntry != null) { + if ( + existingEntry.error != error + ) { + val newEntry = existingEntry.copy( + revisionDate = now, + // update fields + error = error, + ) + downloadRepository + .put(newEntry) + .bind() + return@withLock newEntry + } + return@withLock existingEntry + } + + existingEntry + } + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/NotificationIdPool.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/NotificationIdPool.kt new file mode 100644 index 00000000..d4a26b3e --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/NotificationIdPool.kt @@ -0,0 +1,88 @@ +package com.artemchep.keyguard.android.downloader + +interface NotificationIdPool { + companion object { + fun sequential( + start: Int, + ): NotificationIdPool = NotificationIdPoolImpl( + offset = start, + ) + + fun sequential( + start: Int, + endExclusive: Int, + ): NotificationIdPool = NotificationIdPoolSimple( + start = start, + endExclusive = endExclusive, + ) + } + + fun obtainId(): Int + + fun releaseId(id: Int) +} + +inline fun NotificationIdPool.withId( + block: (Int) -> T, +) = kotlin.run { + val id = obtainId() + try { + block(id) + } finally { + releaseId(id) + } +} + +private class NotificationIdPoolSimple( + private val start: Int, + private val endExclusive: Int, +) : NotificationIdPool { + private var value = start + + override fun obtainId(): Int = synchronized(this) { + val newValue = value + 1 + // Loop around in case of integer + // overflow. + value = if (newValue >= endExclusive) start else newValue + value + } + + override fun releaseId(id: Int) { + // Do nothing. + } +} + +private class NotificationIdPoolImpl( + private val offset: Int, +) : NotificationIdPool { + private val pool = mutableListOf() + + override fun obtainId(): Int = pool.obtainId(offset = offset) + + override fun releaseId(id: Int) = pool.releaseId(id = id) +} + +private fun MutableList.obtainId( + offset: Int, +): Int = synchronized(this) { + val ids = generateSequence(offset) { it + 1 }.iterator() + var index = 0 + while (true) { + val id = ids.next() + val idFromPool = this.getOrNull(index) + if (idFromPool != id) { + this.add(index, id) + return@synchronized id + } + index++ + } + @Suppress("UNREACHABLE_CODE") + error("Unreachable statement!") +} + +private fun MutableList.releaseId( + id: Int, +) = synchronized(this) { + val removed = this.remove(id) + require(removed) +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/journal/DownloadRepositoryImpl.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/journal/DownloadRepositoryImpl.kt new file mode 100644 index 00000000..7f6281df --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/journal/DownloadRepositoryImpl.kt @@ -0,0 +1,89 @@ +package com.artemchep.keyguard.android.downloader.journal + +import com.artemchep.keyguard.android.downloader.journal.room.DownloadDatabaseManager +import com.artemchep.keyguard.android.downloader.journal.room.DownloadInfoDao +import com.artemchep.keyguard.android.downloader.journal.room.DownloadInfoEntity2 +import com.artemchep.keyguard.android.downloader.journal.room.toDomain +import com.artemchep.keyguard.android.downloader.journal.room.toEntity +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.effectMap +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.FlowPreview +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.asFlow +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +@OptIn(ExperimentalCoroutinesApi::class, FlowPreview::class) +class DownloadRepositoryImpl( + private val databaseManager: DownloadDatabaseManager, +) : DownloadRepository { + constructor( + directDI: DirectDI, + ) : this( + databaseManager = directDI.instance(), + ) + + override fun getById(id: String): IO = + daoEffect { dao -> + dao.getById(id = id) + ?.toDomain() + } + + override fun getByIdFlow(id: String): Flow = + daoEffect { dao -> + dao.getByIdFlow(id = id) + .map { entities -> + entities.firstOrNull() + ?.toDomain() + } + }.asFlow().flatMapLatest { it } + + override fun getByTag( + tag: DownloadInfoEntity2.AttachmentDownloadTag, + ): IO = daoEffect { dao -> + dao.getByTag( + localCipherId = tag.localCipherId, + remoteCipherId = tag.remoteCipherId, + attachmentId = tag.attachmentId, + )?.toDomain() + } + + override fun removeById(id: String): IO = daoEffect { dao -> + dao.removeById(id = id) + } + + override fun removeByTag( + tag: DownloadInfoEntity2.AttachmentDownloadTag, + ): IO = daoEffect { dao -> + dao.removeByTag( + localCipherId = tag.localCipherId, + remoteCipherId = tag.remoteCipherId, + attachmentId = tag.attachmentId, + ) + } + + override fun get(): Flow> = + daoEffect { dao -> + dao.getAll() + .map { entities -> + entities.map { it.toDomain() } + } + }.asFlow().flatMapLatest { it } + + override fun put(model: DownloadInfoEntity2): IO = + daoEffect { dao -> + dao.insertAll(model.toEntity()) + } + + private inline fun daoEffect( + crossinline block: suspend (DownloadInfoDao) -> T, + ): IO = databaseManager + .get() + .effectMap { db -> + val dao = db.downloadInfoDao() + block(dao) + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase.kt new file mode 100644 index 00000000..b1b36203 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/journal/room/DownloadDatabase.kt @@ -0,0 +1,23 @@ +package com.artemchep.keyguard.android.downloader.journal.room + +import androidx.room.AutoMigration +import androidx.room.Database +import androidx.room.RoomDatabase +import androidx.room.TypeConverters + +@Database( + entities = [ + DownloadInfoEntity::class, + GeneratorEntity::class, + ], + autoMigrations = [ + AutoMigration(from = 1, to = 2), + ], + version = 2, + exportSchema = true, +) +@TypeConverters(DownloadDatabaseTypeConverter::class) +abstract class DownloadDatabase : RoomDatabase() { + abstract fun downloadInfoDao(): DownloadInfoDao + abstract fun generatorDao(): GeneratorDao +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager.kt new file mode 100644 index 00000000..c8df886b --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseManager.kt @@ -0,0 +1,96 @@ +package com.artemchep.keyguard.android.downloader.journal.room + +import android.content.Context +import android.database.SQLException +import androidx.room.Room +import androidx.room.withTransaction +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.retry +import com.artemchep.keyguard.common.io.shared +import com.artemchep.keyguard.common.usecase.DeviceEncryptionKeyUseCase +import com.artemchep.keyguard.data.Database +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock +import net.zetetic.database.sqlcipher.SupportOpenHelperFactory + +class DownloadDatabaseManager( + private val applicationContext: Context, + private val name: String, + deviceEncryptionKeyUseCase: DeviceEncryptionKeyUseCase, +) { + init { + System.loadLibrary("sqlcipher") + } + + private val dbMutex = Mutex() + + private val dbIo = deviceEncryptionKeyUseCase() + .effectMap(Dispatchers.IO) { deviceKey -> + val factory = SupportOpenHelperFactory(deviceKey, null, false) + Room + .databaseBuilder( + applicationContext, + DownloadDatabase::class.java, + name, + ) + .openHelperFactory(factory) + .addTypeConverter(DownloadDatabaseTypeConverter()) + .build() + // Try to open the database, so, if we have any + // major problems, it fails immediately. + .also { db -> + db.openHelper.writableDatabase + } + } + .retry { e, attempt -> + // TODO: Would be nice to log this exception. + val fatalException = e is IllegalStateException || + e is SQLException + if (fatalException && attempt == 0) { + applicationContext.deleteDatabase(name) + return@retry true + } + + false + } + .shared() + + fun get() = dbIo + + fun mutate( + block: suspend (DownloadDatabase) -> T, + ) = dbIo + .effectMap(Dispatchers.IO) { db -> + dbMutex.withLock { + block(db) + } + } + + fun migrateIfExists( + sqld: Database, + ): IO = ioEffect(Dispatchers.IO) { + val room = dbIo.bind() + // Nothing to migrate. + ?: return@ioEffect + room.withTransaction { + val generatorHistory = room.generatorDao().getAll().first() + sqld.transaction { + generatorHistory.forEach { item -> + sqld.generatorHistoryQueries.insert( + value_ = item.value, + createdAt = item.createdDate, + isPassword = item.isPassword, + isUsername = item.isUsername, + isEmailRelay = false, + ) + } + } + room.generatorDao().removeAll() + } + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseTypeConverter.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseTypeConverter.kt new file mode 100644 index 00000000..e230da5f --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/journal/room/DownloadDatabaseTypeConverter.kt @@ -0,0 +1,14 @@ +package com.artemchep.keyguard.android.downloader.journal.room + +import androidx.room.ProvidedTypeConverter +import androidx.room.TypeConverter +import kotlinx.datetime.Instant + +@ProvidedTypeConverter +class DownloadDatabaseTypeConverter { + @TypeConverter + fun instantToLong(instant: Instant) = instant.toEpochMilliseconds() + + @TypeConverter + fun longToInstant(epochMilliseconds: Long) = Instant.fromEpochMilliseconds(epochMilliseconds) +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/journal/room/DownloadInfoDao.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/journal/room/DownloadInfoDao.kt new file mode 100644 index 00000000..680e86d9 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/journal/room/DownloadInfoDao.kt @@ -0,0 +1,53 @@ +package com.artemchep.keyguard.android.downloader.journal.room + +import androidx.room.Dao +import androidx.room.Insert +import androidx.room.OnConflictStrategy +import androidx.room.Query +import kotlinx.coroutines.flow.Flow + +@Dao +interface DownloadInfoDao { + @Insert(onConflict = OnConflictStrategy.REPLACE) + suspend fun insertAll(vararg info: DownloadInfoEntity) + + @Query("SELECT * FROM DownloadInfoEntity WHERE id = :id") + suspend fun getById(id: String): DownloadInfoEntity? + + @Query("SELECT * FROM DownloadInfoEntity WHERE id = :id") + fun getByIdFlow(id: String): Flow> + + @Query( + """ + SELECT * FROM DownloadInfoEntity WHERE + localCipherId = :localCipherId AND + remoteCipherId = :remoteCipherId AND + attachmentId = :attachmentId + """, + ) + suspend fun getByTag( + localCipherId: String, + remoteCipherId: String?, + attachmentId: String, + ): DownloadInfoEntity? + + @Query("SELECT * FROM DownloadInfoEntity") + fun getAll(): Flow> + + @Query("DELETE FROM DownloadInfoEntity WHERE id = :id") + suspend fun removeById(id: String) + + @Query( + """ + DELETE FROM DownloadInfoEntity WHERE + localCipherId = :localCipherId AND + remoteCipherId = :remoteCipherId AND + attachmentId = :attachmentId + """, + ) + suspend fun removeByTag( + localCipherId: String, + remoteCipherId: String?, + attachmentId: String, + ) +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/journal/room/DownloadInfoEntity.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/journal/room/DownloadInfoEntity.kt new file mode 100644 index 00000000..db3a86a8 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/journal/room/DownloadInfoEntity.kt @@ -0,0 +1,90 @@ +package com.artemchep.keyguard.android.downloader.journal.room + +import androidx.room.Embedded +import androidx.room.Entity +import com.artemchep.keyguard.ui.canRetry +import kotlinx.datetime.Instant + +@Entity( + primaryKeys = [ + "id", + ], +) +data class DownloadInfoEntity( + val id: String, + val localCipherId: String, + val remoteCipherId: String?, + val attachmentId: String, + val url: String, + val urlIsOneTime: Boolean, + val name: String, + val createdDate: Instant, + val revisionDate: Instant = createdDate, + /** + * Encryption key used to decrypt the source + * url after downloading. + */ + val encryptionKeyBase64: String? = null, + /** + * Last downloading / decryption error, you can use it + * to find out if you can retry the downloading or if + * it should be done manually. + */ + @Embedded + val error: Error? = null, +) { + // must be data class + data class AttachmentDownloadTag( + val localCipherId: String, // to be able to find the right account for the item + val remoteCipherId: String?, + val attachmentId: String, + ) + + data class Error( + val code: Int, + val attempt: Int = 1, + val message: String? = null, + ) { + fun canRetry() = code.canRetry() && attempt <= 3 + } +} + +fun DownloadInfoEntity2.toEntity() = DownloadInfoEntity( + id = id, + localCipherId = localCipherId, + remoteCipherId = remoteCipherId, + attachmentId = attachmentId, + url = url, + urlIsOneTime = urlIsOneTime, + name = name, + createdDate = createdDate, + revisionDate = revisionDate, + encryptionKeyBase64 = encryptionKeyBase64, + error = error?.toEntity(), +) + +fun DownloadInfoEntity2.Error.toEntity() = DownloadInfoEntity.Error( + code = code, + attempt = attempt, + message = message, +) + +fun DownloadInfoEntity.toDomain() = DownloadInfoEntity2( + id = id, + localCipherId = localCipherId, + remoteCipherId = remoteCipherId, + attachmentId = attachmentId, + url = url, + urlIsOneTime = urlIsOneTime, + name = name, + createdDate = createdDate, + revisionDate = revisionDate, + encryptionKeyBase64 = encryptionKeyBase64, + error = error?.toDomain(), +) + +fun DownloadInfoEntity.Error.toDomain() = DownloadInfoEntity2.Error( + code = code, + attempt = attempt, + message = message, +) diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/journal/room/GeneratorDao.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/journal/room/GeneratorDao.kt new file mode 100644 index 00000000..435f6c75 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/journal/room/GeneratorDao.kt @@ -0,0 +1,24 @@ +package com.artemchep.keyguard.android.downloader.journal.room + +import androidx.room.Dao +import androidx.room.Insert +import androidx.room.OnConflictStrategy +import androidx.room.Query +import kotlinx.coroutines.flow.Flow + +private const val HISTORY_FETCH_LIMIT = 10_000 + +@Dao +interface GeneratorDao { + @Insert(onConflict = OnConflictStrategy.REPLACE) + suspend fun insertAll(vararg info: GeneratorEntity) + + @Query("SELECT * FROM GeneratorEntity ORDER BY createdDate DESC LIMIT $HISTORY_FETCH_LIMIT") + fun getAll(): Flow> + + @Query("DELETE FROM GeneratorEntity") + suspend fun removeAll() + + @Query("DELETE FROM GeneratorEntity WHERE id IN (:ids)") + suspend fun removeByIds(ids: Set) +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/journal/room/GeneratorEntity.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/journal/room/GeneratorEntity.kt new file mode 100644 index 00000000..9e0f8e3a --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/journal/room/GeneratorEntity.kt @@ -0,0 +1,17 @@ +package com.artemchep.keyguard.android.downloader.journal.room + +import androidx.room.Entity +import kotlinx.datetime.Instant + +@Entity( + primaryKeys = [ + "id", + ], +) +data class GeneratorEntity( + val id: String, + val value: String, + val createdDate: Instant, + val isPassword: Boolean, + val isUsername: Boolean, +) diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/receiver/AttachmentDownloadActionReceiver.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/receiver/AttachmentDownloadActionReceiver.kt new file mode 100644 index 00000000..dd2b598f --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/receiver/AttachmentDownloadActionReceiver.kt @@ -0,0 +1,66 @@ +package com.artemchep.keyguard.android.downloader.receiver + +import android.content.BroadcastReceiver +import android.content.ComponentName +import android.content.Context +import android.content.Intent +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.model.RemoveAttachmentRequest +import com.artemchep.keyguard.common.usecase.RemoveAttachment +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import org.kodein.di.android.closestDI +import org.kodein.di.instance + +class AttachmentDownloadActionReceiver : BroadcastReceiver() { + companion object { + const val ACTION_ATTACHMENT_DOWNLOAD_CANCEL = ".ACTION_ATTACHMENT_DOWNLOAD_CANCEL" + + const val KEY_DOWNLOAD_ID = "download_id" + + fun cancel( + context: Context, + downloadId: String, + ): Intent = intent( + context = context, + suffix = ACTION_ATTACHMENT_DOWNLOAD_CANCEL, + ) { + putExtra(KEY_DOWNLOAD_ID, downloadId) + } + + fun intent( + context: Context, + suffix: String, + builder: Intent.() -> Unit = {}, + ): Intent { + val action = kotlin.run { + val packageName = context.packageName + "$packageName$suffix" + } + return Intent(action).apply { + component = ComponentName(context, AttachmentDownloadActionReceiver::class.java) + builder() + } + } + } + + override fun onReceive(context: Context, intent: Intent) { + val action = intent.action + ?: return + val di by closestDI { context } + when { + action.endsWith(ACTION_ATTACHMENT_DOWNLOAD_CANCEL) -> { + val downloadId = intent.extras?.getString(KEY_DOWNLOAD_ID) + ?: return + val windowCoroutineScope: WindowCoroutineScope by di.instance() + val removeIo = kotlin.run { + val request = RemoveAttachmentRequest.ByDownloadId( + downloadId = downloadId, + ) + val removeAttachment: RemoveAttachment by di.instance() + removeAttachment(listOf(request)) + } + removeIo.launchIn(windowCoroutineScope) + } + } + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/receiver/CopyActionReceiver.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/receiver/CopyActionReceiver.kt new file mode 100644 index 00000000..588efbff --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/receiver/CopyActionReceiver.kt @@ -0,0 +1,58 @@ +package com.artemchep.keyguard.android.downloader.receiver + +import android.content.BroadcastReceiver +import android.content.ComponentName +import android.content.Context +import android.content.Intent +import com.artemchep.keyguard.common.service.clipboard.ClipboardService +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import org.kodein.di.android.closestDI +import org.kodein.di.instance + +class CopyActionReceiver : BroadcastReceiver() { + companion object { + const val ACTION_ATTACHMENT_DOWNLOAD_CANCEL = ".ACTION_COPY" + + const val KEY_DOWNLOAD_ID = "download_id" + + fun cancel( + context: Context, + value: String, + ): Intent = intent( + context = context, + suffix = ACTION_ATTACHMENT_DOWNLOAD_CANCEL, + ) { + putExtra(KEY_DOWNLOAD_ID, value) + } + + fun intent( + context: Context, + suffix: String, + builder: Intent.() -> Unit = {}, + ): Intent { + val action = kotlin.run { + val packageName = context.packageName + "$packageName$suffix" + } + return Intent(action).apply { + component = ComponentName(context, CopyActionReceiver::class.java) + builder() + } + } + } + + override fun onReceive(context: Context, intent: Intent) { + val action = intent.action + ?: return + val di by closestDI { context } + when { + action.endsWith(ACTION_ATTACHMENT_DOWNLOAD_CANCEL) -> { + val value = intent.extras?.getString(KEY_DOWNLOAD_ID) + ?: return + val windowCoroutineScope: WindowCoroutineScope by di.instance() + val clipboardService: ClipboardService by di.instance() + clipboardService.setPrimaryClip(value, false) + } + } + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/worker/AttachmentDownloadAllWorker.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/worker/AttachmentDownloadAllWorker.kt new file mode 100644 index 00000000..28a3c6a6 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/worker/AttachmentDownloadAllWorker.kt @@ -0,0 +1,68 @@ +package com.artemchep.keyguard.android.downloader.worker + +import android.content.Context +import androidx.work.Constraints +import androidx.work.CoroutineWorker +import androidx.work.ExistingPeriodicWorkPolicy +import androidx.work.NetworkType +import androidx.work.Operation +import androidx.work.PeriodicWorkRequestBuilder +import androidx.work.WorkManager +import androidx.work.WorkerParameters +import com.artemchep.keyguard.android.downloader.journal.DownloadRepository +import kotlinx.coroutines.flow.first +import org.kodein.di.DIAware +import org.kodein.di.android.closestDI +import org.kodein.di.instance +import java.util.concurrent.TimeUnit + +class AttachmentDownloadAllWorker( + context: Context, + params: WorkerParameters, +) : CoroutineWorker(context, params), DIAware { + companion object { + private const val WORK_ID = "AttachmentDownloadAllWorker" + + fun enqueue( + context: Context, + ): Operation { + val request = PeriodicWorkRequestBuilder( + repeatInterval = 8, + repeatIntervalTimeUnit = TimeUnit.HOURS, + flexTimeInterval = 1, + flexTimeIntervalUnit = TimeUnit.HOURS, + ) + .setConstraints( + Constraints.Builder() + .setRequiredNetworkType(NetworkType.CONNECTED) + .build(), + ) + .build() + return WorkManager + .getInstance(context) + .enqueueUniquePeriodicWork(WORK_ID, ExistingPeriodicWorkPolicy.KEEP, request) + } + } + + override val di by closestDI { applicationContext } + + override suspend fun doWork(): Result { + val downloadRepository: DownloadRepository by instance() + // Check what downloads we currently have and + // start the unfinished ones again. + val downloadList = downloadRepository.get().first() + downloadList.forEach { downloadInfo -> + val context = applicationContext + val args = AttachmentDownloadWorker.Args( + downloadId = downloadInfo.id, + ) + AttachmentDownloadWorker.enqueueOnce( + context = context, + args = args, + ) + } + return Result.success() + } + + override suspend fun getForegroundInfo() = TODO() +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/worker/AttachmentDownloadWorker.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/worker/AttachmentDownloadWorker.kt new file mode 100644 index 00000000..06557401 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/downloader/worker/AttachmentDownloadWorker.kt @@ -0,0 +1,332 @@ +package com.artemchep.keyguard.android.downloader.worker + +import android.app.NotificationChannel +import android.app.NotificationManager +import android.app.PendingIntent +import android.content.Context +import android.content.pm.ServiceInfo +import android.os.Build +import android.util.Log +import androidx.core.app.NotificationCompat +import androidx.core.content.getSystemService +import androidx.work.BackoffPolicy +import androidx.work.Constraints +import androidx.work.CoroutineWorker +import androidx.work.Data +import androidx.work.ExistingWorkPolicy +import androidx.work.ForegroundInfo +import androidx.work.NetworkType +import androidx.work.OneTimeWorkRequestBuilder +import androidx.work.Operation +import androidx.work.OutOfQuotaPolicy +import androidx.work.WorkManager +import androidx.work.WorkerParameters +import com.artemchep.keyguard.android.Notifications +import com.artemchep.keyguard.android.downloader.journal.DownloadRepository +import com.artemchep.keyguard.android.downloader.receiver.AttachmentDownloadActionReceiver +import com.artemchep.keyguard.android.downloader.withId +import com.artemchep.keyguard.common.R +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.timeout +import com.artemchep.keyguard.common.io.toIO +import com.artemchep.keyguard.common.service.download.DownloadManager +import com.artemchep.keyguard.common.service.download.DownloadProgress +import com.artemchep.keyguard.feature.filepicker.humanReadableByteCountSI +import com.artemchep.keyguard.ui.canRetry +import com.artemchep.keyguard.ui.getHttpCode +import kotlinx.coroutines.flow.filter +import kotlinx.coroutines.flow.last +import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.flow.onStart +import kotlinx.coroutines.flow.transformWhile +import org.kodein.di.DIAware +import org.kodein.di.android.closestDI +import org.kodein.di.instance +import java.util.concurrent.TimeUnit +import kotlin.math.roundToInt + +class AttachmentDownloadWorker( + context: Context, + params: WorkerParameters, +) : CoroutineWorker(context, params), DIAware { + companion object { + private const val WORK_ID = "AttachmentDownloadWorker" + + private const val PROGRESS_MAX = 100 + + fun enqueueOnce( + context: Context, + args: Args, + ): Operation { + val data = Data.Builder() + .apply { + args.populate(this) + } + .build() + val request = OneTimeWorkRequestBuilder() + .setConstraints( + Constraints.Builder() + .setRequiredNetworkType(NetworkType.CONNECTED) + .build(), + ) + .setInputData(data) + .setBackoffCriteria(BackoffPolicy.EXPONENTIAL, 1, TimeUnit.MINUTES) + .build() + val workId = buildWorkKey(args.downloadId) + return WorkManager + .getInstance(context) + .enqueueUniqueWork(workId, ExistingWorkPolicy.KEEP, request) + } + + private fun buildWorkKey(id: String) = "$WORK_ID:$id" + } + + data class Args( + val downloadId: String, + ) { + companion object { + private const val KEY_DOWNLOAD_ID = "download_id" + + fun of(data: Data) = Args( + downloadId = data.getString(KEY_DOWNLOAD_ID)!!, + ) + } + + fun populate(builder: Data.Builder) { + builder.putString(KEY_DOWNLOAD_ID, downloadId) + } + } + + override val di by closestDI { applicationContext } + + private val notificationManager = context.getSystemService()!! + + private var notificationId = Notifications.downloads.obtainId() + + override suspend fun doWork(): Result = run { + val args = Args.of(inputData) + internalDoWork( + notificationId = notificationId, + args = args, + ) + } + + private suspend fun internalDoWork( + notificationId: Int, + args: Args, + ): Result { + val downloadManager: DownloadManager by instance() + val downloadRepository: DownloadRepository by instance() + + val downloadInfo = downloadRepository.getById(id = args.downloadId) + .bind() + // Failed to start the downloading. This happens mostly if you cancel the + // downloading immediately after clicking download. + ?: return Result.failure() + // Check if we are allowed to start downloading. + + val downloadStatusFlow = kotlin.run { + val downloadIsOneTime = downloadInfo.urlIsOneTime + val downloadFailed = downloadInfo.error != null && !downloadInfo.error.canRetry() + if (downloadIsOneTime || downloadFailed) { + // We can not restart the download, but we + // can check if it's already there. + val downloadStatusFlow = downloadManager + .statusByDownloadId2(downloadId = downloadInfo.id) + // ...check if the status is other then None. + val result = downloadStatusFlow + .filter { it !is DownloadProgress.None } + .toIO() + .timeout(500L) + .attempt() + .bind() + if (result.isLeft()) { + return Result.failure() + } + downloadStatusFlow + } else { + // Start downloading. + downloadManager + .queue(downloadInfo = downloadInfo) + .flow + } + } + + val result = downloadStatusFlow + .onStart { + val foregroundInfo = createForegroundInfo( + id = notificationId, + downloadId = downloadInfo.id, + name = downloadInfo.name, + progress = null, + ) + setForeground(foregroundInfo) + } + .onEach { progress -> + when (progress) { + is DownloadProgress.None -> { + val foregroundInfo = createForegroundInfo( + id = notificationId, + downloadId = downloadInfo.id, + name = downloadInfo.name, + progress = null, + ) + setForeground(foregroundInfo) + } + + is DownloadProgress.Loading -> { + val downloadedFormatted = progress.downloaded + ?.let(::humanReadableByteCountSI) + val totalFormatted = progress.total + ?.let(::humanReadableByteCountSI) + + val p = progress.percentage + val foregroundInfo = createForegroundInfo( + id = notificationId, + downloadId = downloadInfo.id, + name = downloadInfo.name, + progress = p, + downloaded = downloadedFormatted, + total = totalFormatted, + ) + setForeground(foregroundInfo) + } + + is DownloadProgress.Complete -> { + // Do nothing + return@onEach + } + } + } + // complete once we finish the download + .transformWhile { progress -> + emit(progress) // always emit progress + progress !is DownloadProgress.Complete + } + .last() + require(result is DownloadProgress.Complete) + return result.result + .fold( + ifLeft = { e -> + val canRetry = e.getHttpCode().canRetry() + if (canRetry) { + Result.retry() + } else { + Result.failure() + } + }, + ifRight = { + Result.success() + }, + ) + } + + override suspend fun getForegroundInfo() = createForegroundInfo(notificationId) + + // + // Notification + // + + // Creates an instance of ForegroundInfo which can be used to update the + // ongoing notification. + private fun createForegroundInfo( + id: Int, + downloadId: String, + name: String, + progress: Float? = null, + downloaded: String? = null, + total: String? = null, + ): ForegroundInfo { + val notification = kotlin.run { + val channelId = createAttachmentDownloadChannel() + + // Progress + val progressMax = PROGRESS_MAX + val progressCurrent = progress?.times(progressMax)?.roundToInt() + ?: progressMax + val progressIndeterminate = progress == null + + // Action + val cancelAction = kotlin.run { + val cancelAction = kotlin.run { + val intent = AttachmentDownloadActionReceiver.cancel( + context = applicationContext, + downloadId = downloadId, + ) + PendingIntent.getBroadcast( + applicationContext, + id, + intent, + PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT, + ) + } + val cancelTitle = "Cancel" + NotificationCompat.Action.Builder(R.drawable.ic_cancel, cancelTitle, cancelAction) + .build() + } + + NotificationCompat.Builder(applicationContext, channelId) + .setForegroundServiceBehavior(NotificationCompat.FOREGROUND_SERVICE_DEFERRED) + .addAction(cancelAction) + .setContentTitle(name) + .setGroup(WORK_ID) + .setTicker(name) + .run { + if (downloaded != null || total != null) { + val downloadedOrEmpty = downloaded ?: "--" + val totalOrEmpty = total ?: "--" + val info = "$downloadedOrEmpty / $totalOrEmpty" + setContentText(info) + } else { + this + } + } + .setProgress(progressMax, progressCurrent, progressIndeterminate) + .setSmallIcon(android.R.drawable.stat_sys_download) + .setOnlyAlertOnce(true) + .setOngoing(true) + .build() + } + return ForegroundInfo( + id, + notification, + ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC, + ) + } + + private fun createForegroundInfo( + id: Int, + ): ForegroundInfo { + val notification = kotlin.run { + val title = applicationContext.getString(R.string.notification_attachment_download_title) + val channelId = createAttachmentDownloadChannel() + NotificationCompat.Builder(applicationContext, channelId) + .setForegroundServiceBehavior(NotificationCompat.FOREGROUND_SERVICE_DEFERRED) + .setContentTitle(title) + .setGroup(WORK_ID) + .setSmallIcon(android.R.drawable.stat_sys_download) + .setOnlyAlertOnce(true) + .setOngoing(true) + .build() + } + return ForegroundInfo( + id, + notification, + ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC, + ) + } + + private fun createAttachmentDownloadChannel(): String { + val channel = kotlin.run { + val id = + applicationContext.getString(R.string.notification_attachment_download_channel_id) + val name = + applicationContext.getString(R.string.notification_attachment_download_channel_name) + NotificationChannel(id, name, NotificationManager.IMPORTANCE_LOW) + } + channel.enableVibration(false) + notificationManager.createNotificationChannel(channel) + return channel.id + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/glide/KeyguardGlideModule.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/glide/KeyguardGlideModule.kt new file mode 100644 index 00000000..dbaa9b09 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/glide/KeyguardGlideModule.kt @@ -0,0 +1,44 @@ +package com.artemchep.keyguard.android.glide + +import android.content.Context +import android.graphics.Bitmap +import android.graphics.drawable.Drawable +import com.artemchep.keyguard.android.glide.app.AppIconLoader +import com.artemchep.keyguard.android.glide.gravatar.GravatarLoader +import com.artemchep.keyguard.android.glide.qr.QrLoader +import com.artemchep.keyguard.android.glide.website.FaviconLoader +import com.artemchep.keyguard.common.model.BarcodeImageRequest +import com.artemchep.keyguard.feature.favicon.AppIconUrl +import com.artemchep.keyguard.feature.favicon.FaviconUrl +import com.artemchep.keyguard.feature.favicon.GravatarUrl +import com.bumptech.glide.Glide +import com.bumptech.glide.Registry +import com.bumptech.glide.annotation.GlideModule +import com.bumptech.glide.module.AppGlideModule +import org.kodein.di.android.closestDI +import org.kodein.di.direct +import org.kodein.di.instance +import java.io.InputStream + +@GlideModule +class KeyguardGlideModule : AppGlideModule() { + override fun registerComponents(context: Context, glide: Glide, registry: Registry) { + val di by closestDI { context } + + registry.prepend( + AppIconUrl::class.java, + Bitmap::class.java, + AppIconLoader.Factory(context.packageManager), + ) + registry.prepend( + BarcodeImageRequest::class.java, + Drawable::class.java, + QrLoader.Factory( + context = context, + getBarcodeImage = di.direct.instance(), + ), + ) + registry.prepend(FaviconUrl::class.java, InputStream::class.java, FaviconLoader.Factory()) + registry.prepend(GravatarUrl::class.java, InputStream::class.java, GravatarLoader.Factory()) + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/glide/app/AppIconLoader.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/glide/app/AppIconLoader.kt new file mode 100644 index 00000000..48f210b8 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/glide/app/AppIconLoader.kt @@ -0,0 +1,99 @@ +package com.artemchep.keyguard.android.glide.app + +import android.content.pm.PackageManager +import android.graphics.Bitmap +import android.graphics.Canvas +import android.graphics.drawable.Drawable +import com.artemchep.keyguard.feature.favicon.AppIconUrl +import com.bumptech.glide.Priority +import com.bumptech.glide.load.DataSource +import com.bumptech.glide.load.Options +import com.bumptech.glide.load.data.DataFetcher +import com.bumptech.glide.load.model.ModelLoader +import com.bumptech.glide.load.model.ModelLoaderFactory +import com.bumptech.glide.load.model.MultiModelLoaderFactory +import com.bumptech.glide.signature.ObjectKey + +class AppIconLoader( + private val packageManager: PackageManager, +) : ModelLoader { + class Factory( + private val packageManager: PackageManager, + ) : ModelLoaderFactory { + override fun build( + multiFactory: MultiModelLoaderFactory, + ): ModelLoader = AppIconLoader( + packageManager = packageManager, + ) + + override fun teardown() { + } + } + + override fun buildLoadData( + model: AppIconUrl, + width: Int, + height: Int, + options: Options, + ): ModelLoader.LoadData { + val packageName = model.packageName + return ModelLoader.LoadData( + ObjectKey(model.packageName), + Fetcher( + packageManager = packageManager, + packageName = packageName, + ), + ) + } + + class Fetcher( + private val packageManager: PackageManager, + private val packageName: String, + ) : DataFetcher { + override fun loadData( + priority: Priority, + callback: DataFetcher.DataCallback, + ) { + val icon = getApplicationIcon(packageName) + if (icon != null) { + val bitmap = Bitmap.createBitmap( + icon.intrinsicWidth, + icon.intrinsicHeight, + Bitmap.Config.ARGB_8888, + ) + val canvas = Canvas(bitmap) + icon.setBounds(0, 0, icon.intrinsicWidth, icon.intrinsicHeight) + icon.draw(canvas) + callback.onDataReady(bitmap) + } else { + callback.onLoadFailed(RuntimeException()) + } + } + + private fun getApplicationIcon(packageName: String): Drawable? { + if (packageName.isEmpty()) { + // no need to check if empty package is installed + return null + } + val appIcon = try { + packageManager.getApplicationIcon(packageName) + } catch (e: PackageManager.NameNotFoundException) { + return null + } + + return appIcon + } + + override fun cleanup() { + } + + override fun cancel() { + } + + override fun getDataClass(): Class = Bitmap::class.java + + override fun getDataSource(): DataSource = DataSource.LOCAL + } + + override fun handles(model: AppIconUrl): Boolean = true +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/glide/gravatar/GravatarLoader.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/glide/gravatar/GravatarLoader.kt new file mode 100644 index 00000000..34767d2f --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/glide/gravatar/GravatarLoader.kt @@ -0,0 +1,86 @@ +package com.artemchep.keyguard.android.glide.gravatar + +import android.net.Uri +import com.artemchep.keyguard.android.glide.util.combineModelLoaders +import com.artemchep.keyguard.feature.favicon.GravatarUrl +import com.bumptech.glide.Priority +import com.bumptech.glide.load.DataSource +import com.bumptech.glide.load.Options +import com.bumptech.glide.load.data.DataFetcher +import com.bumptech.glide.load.model.ModelLoader +import com.bumptech.glide.load.model.ModelLoaderFactory +import com.bumptech.glide.load.model.MultiModelLoaderFactory +import com.bumptech.glide.signature.ObjectKey +import java.io.InputStream + +class GravatarLoader : ModelLoader { + class Factory : ModelLoaderFactory { + override fun build(multiFactory: MultiModelLoaderFactory) = kotlin.run { + val aModelLoader = GravatarLoader() + val bModelLoader = multiFactory.build(Uri::class.java, InputStream::class.java) + combineModelLoaders( + aModelLoader, + bModelLoader, + ) + } + + override fun teardown() { + // Do nothing. + } + } + + override fun buildLoadData( + model: GravatarUrl, + width: Int, + height: Int, + options: Options, + ): ModelLoader.LoadData? { + return ModelLoader.LoadData( + ObjectKey(model.url), + Fetcher( + model = model, + ), + ) + } + + override fun handles(model: GravatarUrl): Boolean = true + + class Fetcher( + private val model: GravatarUrl, + ) : DataFetcher { + override fun loadData( + priority: Priority, + callback: DataFetcher.DataCallback, + ) { + kotlin.runCatching { + val finalUrl = model.url + finalUrl.let { Uri.parse(it) } + }.fold( + onFailure = { e -> + if (e is Exception) { + callback.onLoadFailed(e) + } else { + callback.onLoadFailed(IllegalStateException(e)) + } + }, + onSuccess = { imageUrl -> + if (imageUrl != null) { + callback.onDataReady(imageUrl) + } else { + callback.onLoadFailed(NullPointerException()) + } + }, + ) + } + + override fun cleanup() { + } + + override fun cancel() { + } + + override fun getDataClass(): Class = Uri::class.java + + override fun getDataSource(): DataSource = DataSource.REMOTE + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/glide/qr/QrLoader.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/glide/qr/QrLoader.kt new file mode 100644 index 00000000..2307a8d6 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/glide/qr/QrLoader.kt @@ -0,0 +1,96 @@ +package com.artemchep.keyguard.android.glide.qr + +import android.content.Context +import android.graphics.drawable.BitmapDrawable +import android.graphics.drawable.Drawable +import androidx.compose.ui.graphics.asAndroidBitmap +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bindBlocking +import com.artemchep.keyguard.common.model.BarcodeImageRequest +import com.artemchep.keyguard.common.usecase.GetBarcodeImage +import com.bumptech.glide.Priority +import com.bumptech.glide.load.DataSource +import com.bumptech.glide.load.Options +import com.bumptech.glide.load.data.DataFetcher +import com.bumptech.glide.load.model.ModelLoader +import com.bumptech.glide.load.model.ModelLoaderFactory +import com.bumptech.glide.load.model.MultiModelLoaderFactory +import com.bumptech.glide.signature.ObjectKey + +class QrLoader( + private val context: Context, + private val getBarcodeImage: GetBarcodeImage, +) : ModelLoader { + class Factory( + private val context: Context, + private val getBarcodeImage: GetBarcodeImage, + ) : ModelLoaderFactory { + override fun build( + multiFactory: MultiModelLoaderFactory, + ): ModelLoader = QrLoader( + context = context, + getBarcodeImage = getBarcodeImage, + ) + + override fun teardown() { + } + } + + override fun buildLoadData( + model: BarcodeImageRequest, + width: Int, + height: Int, + options: Options, + ): ModelLoader.LoadData { + val newSize = model.size ?: BarcodeImageRequest.Size( + width = width, + height = height, + ) + val newModel = model.copy(size = newSize) + return ModelLoader.LoadData( + ObjectKey(model), + Fetcher( + context = context, + getBarcodeImage = getBarcodeImage, + model = newModel, + ), + ) + } + + class Fetcher( + private val context: Context, + private val getBarcodeImage: GetBarcodeImage, + private val model: BarcodeImageRequest, + ) : DataFetcher { + override fun loadData( + priority: Priority, + callback: DataFetcher.DataCallback, + ) { + getBarcodeImage(model) + .attempt() + .bindBlocking() + .fold( + ifLeft = { + val e = it as? Exception ?: RuntimeException(it) + callback.onLoadFailed(e) + }, + ifRight = { bitmap -> + val drawable = BitmapDrawable(context.resources, bitmap.asAndroidBitmap()) + callback.onDataReady(drawable) + }, + ) + } + + override fun cleanup() { + } + + override fun cancel() { + } + + override fun getDataClass(): Class = Drawable::class.java + + override fun getDataSource(): DataSource = DataSource.MEMORY_CACHE + } + + override fun handles(model: BarcodeImageRequest): Boolean = true +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/glide/util/Util.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/glide/util/Util.kt new file mode 100644 index 00000000..2429bf9f --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/glide/util/Util.kt @@ -0,0 +1,67 @@ +package com.artemchep.keyguard.android.glide.util + +import com.bumptech.glide.Priority +import com.bumptech.glide.load.DataSource +import com.bumptech.glide.load.Options +import com.bumptech.glide.load.data.DataFetcher +import com.bumptech.glide.load.model.ModelLoader + +inline fun combineModelLoaders( + a: ModelLoader, + b: ModelLoader, +): ModelLoader = object : ModelLoader { + override fun buildLoadData( + model: In, + width: Int, + height: Int, + options: Options, + ): ModelLoader.LoadData? { + val aFetcher = a.buildLoadData(model, width, height, options) + ?: return null + val bFetcher = object : DataFetcher { + private var z: DataFetcher? = null + + override fun loadData( + priority: Priority, + callback: DataFetcher.DataCallback, + ) { + aFetcher.fetcher.loadData( + priority, + object : DataFetcher.DataCallback { + override fun onDataReady(data: T?) { + val f = b.buildLoadData(data!!, width, height, options) + if (f != null) { + z = f.fetcher + f.fetcher.loadData(priority, callback) + } else { + callback.onLoadFailed(IllegalStateException()) + } + } + + override fun onLoadFailed(e: Exception) { + callback.onLoadFailed(e) + } + }, + ) + } + + override fun cleanup() { + z?.cleanup() + } + + override fun cancel() { + z?.cancel() + } + + override fun getDataClass(): Class = Out::class.java + + override fun getDataSource(): DataSource = aFetcher.fetcher.dataSource + } + return ModelLoader.LoadData( + aFetcher.sourceKey, + bFetcher, + ) + } + + override fun handles(model: In): Boolean = a.handles(model) +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/glide/website/FaviconLoader.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/glide/website/FaviconLoader.kt new file mode 100644 index 00000000..3b750f4c --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/glide/website/FaviconLoader.kt @@ -0,0 +1,105 @@ +package com.artemchep.keyguard.android.glide.website + +import android.net.Uri +import com.artemchep.keyguard.android.glide.util.combineModelLoaders +import com.artemchep.keyguard.feature.favicon.Favicon +import com.artemchep.keyguard.feature.favicon.FaviconUrl +import com.bumptech.glide.Priority +import com.bumptech.glide.load.DataSource +import com.bumptech.glide.load.Options +import com.bumptech.glide.load.data.DataFetcher +import com.bumptech.glide.load.model.ModelLoader +import com.bumptech.glide.load.model.ModelLoaderFactory +import com.bumptech.glide.load.model.MultiModelLoaderFactory +import com.bumptech.glide.signature.ObjectKey +import net.mm2d.touchicon.IconComparator +import net.mm2d.touchicon.TouchIconExtractor +import java.io.InputStream + +class FaviconLoader : ModelLoader { + class Factory : ModelLoaderFactory { + override fun build(multiFactory: MultiModelLoaderFactory) = kotlin.run { + val aModelLoader = FaviconLoader() + val bModelLoader = multiFactory.build(Uri::class.java, InputStream::class.java) + combineModelLoaders( + aModelLoader, + bModelLoader, + ) + } + + override fun teardown() { + // Do nothing. + } + } + + private val extractor = TouchIconExtractor() + + override fun buildLoadData( + model: FaviconUrl, + width: Int, + height: Int, + options: Options, + ): ModelLoader.LoadData? { + return ModelLoader.LoadData( + ObjectKey(model.url), + Fetcher( + model = model, + extractor = extractor, + ), + ) + } + + override fun handles(model: FaviconUrl): Boolean = true + + class Fetcher( + private val model: FaviconUrl, + private val extractor: TouchIconExtractor, + ) : DataFetcher { + override fun loadData( + priority: Priority, + callback: DataFetcher.DataCallback, + ) { + kotlin.runCatching { + val siteUrl = model.url + val finalUrl = kotlin.run { + val server = Favicon.getServerOrNull(model.serverId) + ?: Favicon.servers.firstOrNull() + ?: return@run extractor + .fromPage( + siteUrl = siteUrl, + withManifest = true, + ) + .maxOfWithOrNull(IconComparator.SIZE) { it } + ?.url + server.transform(siteUrl) + } + finalUrl?.let { Uri.parse(it) } + }.fold( + onFailure = { e -> + if (e is Exception) { + callback.onLoadFailed(e) + } else { + callback.onLoadFailed(IllegalStateException(e)) + } + }, + onSuccess = { imageUrl -> + if (imageUrl != null) { + callback.onDataReady(imageUrl) + } else { + callback.onLoadFailed(NullPointerException()) + } + }, + ) + } + + override fun cleanup() { + } + + override fun cancel() { + } + + override fun getDataClass(): Class = Uri::class.java + + override fun getDataSource(): DataSource = DataSource.REMOTE + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/shortcut/ShortcutTileService.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/shortcut/ShortcutTileService.kt new file mode 100644 index 00000000..a6db2039 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/shortcut/ShortcutTileService.kt @@ -0,0 +1,43 @@ +package com.artemchep.keyguard.android.shortcut + +import android.annotation.SuppressLint +import android.app.PendingIntent +import android.content.Intent +import android.os.Build +import android.service.quicksettings.TileService +import com.artemchep.keyguard.android.MainActivity + +class ShortcutTileService : TileService() { + override fun onClick() { + super.onClick() + if (isSecure) { + // Even tho the keyguard is gonna ask for a password, it's better + // if we force the device to be unlocked first. + unlockAndRun { + startMainActivity() + } + } else { + startMainActivity() + } + } + + @SuppressLint("StartActivityAndCollapseDeprecated") + private fun startMainActivity() { + val intent = Intent(this, MainActivity::class.java).apply { + addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { + val flags = + PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE + val pi = PendingIntent.getActivity( + this, + 13213, + intent, + flags, + ) + startActivityAndCollapse(pi) + } else { + startActivityAndCollapse(intent) + } + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/util/broadcastFlow.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/util/broadcastFlow.kt new file mode 100644 index 00000000..7f6ef8eb --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/util/broadcastFlow.kt @@ -0,0 +1,51 @@ +package com.artemchep.keyguard.android.util + +import android.annotation.SuppressLint +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.os.Build +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.NonCancellable +import kotlinx.coroutines.channels.awaitClose +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.callbackFlow +import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.withContext + +@SuppressLint("UnspecifiedRegisterReceiverFlag") +fun broadcastFlow( + context: Context, + intentFilter: IntentFilter, + /** + * If `false`, only the app itself or the system can send + * those broadcast events. + */ + exported: Boolean = false, +): Flow = callbackFlow { + val receiver = object : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + trySend(intent) + } + } + try { + if (Build.VERSION.SDK_INT >= 34) { + val flag = if (exported) { + Context.RECEIVER_EXPORTED + } else { + Context.RECEIVER_NOT_EXPORTED + } + context.registerReceiver(receiver, intentFilter, flag) + } else { + context.registerReceiver(receiver, intentFilter) + } + awaitClose() + } finally { + withContext( + context = NonCancellable + Dispatchers.Main, + ) { + context.unregisterReceiver(receiver) + } + } +}.flowOn(Dispatchers.Main) diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/util/screenFlow.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/util/screenFlow.kt new file mode 100644 index 00000000..db00187a --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/util/screenFlow.kt @@ -0,0 +1,117 @@ +package com.artemchep.keyguard.android.util + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.hardware.display.DisplayManager +import android.os.PowerManager +import android.view.Display +import androidx.core.content.getSystemService +import com.artemchep.keyguard.common.model.Screen +import com.artemchep.keyguard.common.util.flow.observerFlow +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.flow +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.flowOn + +private const val SCREEN_ON_CHECK_INTERVAL = 2000L + +fun screenFlow( + context: Context, +): Flow = observerFlow { callback -> + val broadcastReceiver = object : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + val screen = context.screenState() + callback(screen) + } + } + val intentFilter = IntentFilter() + .apply { + addAction(Intent.ACTION_SCREEN_OFF) + addAction(Intent.ACTION_SCREEN_ON) + } + context.registerReceiver(broadcastReceiver, intentFilter) + + val screen = context.screenState() + callback(screen) + return@observerFlow { + context.unregisterReceiver(broadcastReceiver) + } +} + .flatMapLatest { screen -> + when (screen) { + is Screen.On -> flow { + emit(screen) + + // While the screen is on, send the update every + // few seconds. This is needed because of the + // Always On mode which may not send the 'screen is off' + // broadcast. + while (true) { + delay(SCREEN_ON_CHECK_INTERVAL) + val newScreen = context.screenState() + emit(newScreen) + } + } + + else -> flowOf(screen) + } + } + .flowOn(Dispatchers.Main) + .distinctUntilChanged() + +/** + * It does not store the screen state, it + * retrieves it every time. + */ +private fun Context.screenState(): Screen = + when (isScreenOn()) { + true -> Screen.On + false -> Screen.Off + } + +/** + * Returns `true` if the screen is turned on, + * `false` otherwise. + */ +private fun Context.isScreenOn(): Boolean { + run { + val dm = getSystemService() + val displays = dm?.getDisplays(null)?.takeIf { it.isNotEmpty() } ?: return@run + + var display: Display? = null + for (d in displays) { + val virtual = d.flags.and(Display.FLAG_PRESENTATION) != 0 + if (d.isValid && !virtual) { + display = d + + val type: Int + try { + val method = Display::class.java.getDeclaredMethod("getType") + method.isAccessible = true + type = method.invoke(d) as Int + } catch (e: Exception) { + continue + } + + if (type == 1 /* built-in display */) { + break + } + } + } + + if (display == null) { + return false + } + + return display.state == Display.STATE_ON + } + + val pm = getSystemService() + return pm?.isInteractive ?: false +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/worker/AttachmentUploadWorker.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/worker/AttachmentUploadWorker.kt new file mode 100644 index 00000000..fcf6e1da --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/worker/AttachmentUploadWorker.kt @@ -0,0 +1,223 @@ +package com.artemchep.keyguard.android.worker + +import android.app.NotificationChannel +import android.app.NotificationManager +import android.content.Context +import android.content.pm.ServiceInfo +import android.util.Log +import androidx.core.app.NotificationCompat +import androidx.core.content.getSystemService +import androidx.work.Constraints +import androidx.work.ExistingWorkPolicy +import androidx.work.ForegroundInfo +import androidx.work.NetworkType +import androidx.work.OneTimeWorkRequestBuilder +import androidx.work.Operation +import androidx.work.WorkManager +import androidx.work.WorkerParameters +import com.artemchep.keyguard.android.worker.util.SessionWorker +import com.artemchep.keyguard.common.R +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.usecase.GetCiphers +import kotlinx.collections.immutable.persistentMapOf +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Job +import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.collect +import kotlinx.coroutines.flow.drop +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.scan +import kotlinx.coroutines.flow.takeWhile +import kotlinx.coroutines.launch +import kotlinx.coroutines.sync.Semaphore +import kotlinx.coroutines.sync.withPermit +import org.kodein.di.DI +import org.kodein.di.DIAware +import org.kodein.di.direct +import org.kodein.di.instance + +class AttachmentUploadWorker( + context: Context, + params: WorkerParameters, +) : SessionWorker(context, params), DIAware { + companion object { + private const val WORK_ID = "AttachmentUploadWorker" + + val constraints + get() = Constraints.Builder() + .setRequiredNetworkType(NetworkType.CONNECTED) + .build() + + fun enqueueOnce(context: Context): Operation { + val uploadWorkRequest = OneTimeWorkRequestBuilder() + .setConstraints(constraints) + .build() + return WorkManager + .getInstance(context) + .enqueueUniqueWork(WORK_ID, ExistingWorkPolicy.APPEND_OR_REPLACE, uploadWorkRequest) + } + } + + private val notificationManager = context.getSystemService()!! + + override suspend fun doWork(): Result { + val foregroundInfo = createForegroundInfo("TODO") + setForeground(foregroundInfo) + return super.doWork() + } + + private data class UploadAttachmentRequest( + val key: CompositeKey, + val attachment: DSecret.Attachment.Local, + ) { + data class CompositeKey( + val accountId: String, + val cipherId: String, + val organizationId: String?, + val attachmentId: String, + ) + } + + private data class UploadAttachmentJob( + val url: String, + val job: Job, + ) + + private class UploadManager( + private val scope: CoroutineScope, + ) { + fun queue(requests: List) { + } + } + + private sealed interface UploadAttachmentIntent { + data class Put( + val requests: List, + ) : UploadAttachmentIntent + + data class Complete( + val requests: UploadAttachmentRequest, + ) : UploadAttachmentIntent + } + + override suspend fun DI.doWork(): Result { + val semaphore = Semaphore(2) + coroutineScope { + createUploadAttachmentRequestsFlow() + .scan( + initial = persistentMapOf(), + ) { state, requests -> + val builder = state.builder() + + requests.forEach { request -> + val existingValue = builder[request.key] + @Suppress("UnnecessaryVariable") + if (existingValue != null) { + val shouldKeep = existingValue.url == request.attachment.url + if (shouldKeep) return@forEach + + // Stop the current upload job and replace it + // with a new one. + existingValue.job.cancel() + } + + val newValue = UploadAttachmentJob( + url = request.attachment.url, + job = launch { + semaphore.withPermit { + dow(request) + } + }, + ) + builder[request.key] = newValue + } + + builder.build() + } + .drop(1) // initial + // We want to stop the coroutine after there's no + // more requests to take on. + .takeWhile { + it.values + .any { !it.job.isCompleted } + } + .collect() + } + Log.e("attachment", "complete!") + return Result.success() + } + + private fun DI.createUploadAttachmentRequestsFlow() = direct.instance() + .invoke() // flow of list of ciphers + .map { ciphers -> + val pendingRequests = ciphers + .asSequence() + .flatMap { cipher -> + cipher + .attachments + .asSequence() + .mapNotNull { it as? DSecret.Attachment.Local } + .map { attachment -> + val key = UploadAttachmentRequest.CompositeKey( + accountId = cipher.accountId, + cipherId = cipher.id, + organizationId = cipher.organizationId, + attachmentId = attachment.id, + ) + UploadAttachmentRequest( + key = key, + attachment = attachment, + ) + } + } + .toList() + pendingRequests + } + + private suspend fun dow(request: UploadAttachmentRequest) { + request + delay(5000L) + } + + // + // Notification + // + + // Creates an instance of ForegroundInfo which can be used to update the + // ongoing notification. + private fun createForegroundInfo(progress: String): ForegroundInfo { + val notification = kotlin.run { + val title = applicationContext.getString(R.string.notification_attachment_upload_title) + val channelId = createAttachmentUploadChannel() + NotificationCompat.Builder(applicationContext, channelId) + .setContentTitle(title) + .setTicker(title) + .setContentText(progress) + .setProgress(1, 1, true) + .setSmallIcon(R.drawable.ic_upload) + .setOngoing(true) + .build() + } + val id = + applicationContext.resources.getInteger(R.integer.notification_attachment_upload_id) + return ForegroundInfo( + id, + notification, + ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC, + ) + } + + private fun createAttachmentUploadChannel(): String { + val channel = kotlin.run { + val id = + applicationContext.getString(R.string.notification_attachment_upload_channel_id) + val name = + applicationContext.getString(R.string.notification_attachment_upload_channel_name) + NotificationChannel(id, name, NotificationManager.IMPORTANCE_LOW) + } + channel.enableVibration(false) + notificationManager.createNotificationChannel(channel) + return channel.id + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/worker/SyncWorker.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/worker/SyncWorker.kt new file mode 100644 index 00000000..85b350fe --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/worker/SyncWorker.kt @@ -0,0 +1,149 @@ +package com.artemchep.keyguard.android.worker + +import android.app.NotificationChannel +import android.app.NotificationManager +import android.content.Context +import android.content.pm.ServiceInfo +import androidx.core.app.NotificationCompat +import androidx.core.content.getSystemService +import androidx.work.Constraints +import androidx.work.Data +import androidx.work.ExistingWorkPolicy +import androidx.work.ForegroundInfo +import androidx.work.NetworkType +import androidx.work.OneTimeWorkRequestBuilder +import androidx.work.Operation +import androidx.work.WorkManager +import androidx.work.WorkerParameters +import com.artemchep.keyguard.android.worker.util.SessionWorker +import com.artemchep.keyguard.common.R +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.io.parallel +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.usecase.SyncAll +import com.artemchep.keyguard.common.usecase.SyncById +import org.kodein.di.DI +import org.kodein.di.DIAware +import org.kodein.di.direct +import org.kodein.di.instance + +class SyncWorker( + context: Context, + params: WorkerParameters, +) : SessionWorker(context, params), DIAware { + companion object { + private const val WORK_ID = "AttachmentUploadWorker" + + private const val KEY_ACCOUNT_IDS = "account_ids" + + val constraints + get() = Constraints.Builder() + .setRequiredNetworkType(NetworkType.CONNECTED) + .build() + + fun enqueueOnce( + context: Context, + accounts: Set = emptySet(), + ): Operation { + val accountIdsArray = accounts + .map { it.id } + .toTypedArray() + val uploadWorkRequest = OneTimeWorkRequestBuilder() + .setConstraints(constraints) + .setInputData( + Data.Builder() + .putStringArray(KEY_ACCOUNT_IDS, accountIdsArray) + .build(), + ) + .build() + return WorkManager + .getInstance(context) + .enqueueUniqueWork(WORK_ID, ExistingWorkPolicy.APPEND_OR_REPLACE, uploadWorkRequest) + } + } + + private val notificationManager = context.getSystemService()!! + + /** + * Set of accounts to update. When empty, we should + * update all existing accounts. + */ + private val accountIds by lazy { + inputData.getStringArray(KEY_ACCOUNT_IDS) + ?.asSequence() + ?.map { AccountId(it) } + ?.toSet().orEmpty() + } + + override suspend fun DI.doWork(): Result { +// if (BuildConfig.DEBUG) { +// AttachmentUploadWorker.enqueueOnce(applicationContext) +// } + + val io = if (accountIds.isEmpty()) { + val syncAll = direct.instance() + syncAll() + .map { Unit } + } else { + val syncById = direct.instance() + accountIds + .map(syncById) + .parallel() + .map { Unit } + } + return io + .attempt() + .bind() + .fold( + ifLeft = { + Result.failure() + }, + ifRight = { + Result.success() + }, + ) + } + + override suspend fun getForegroundInfo() = createForegroundInfo() + + // + // Notification + // + + // Creates an instance of ForegroundInfo which can be used to update the + // ongoing notification. + private fun createForegroundInfo(): ForegroundInfo { + val notification = kotlin.run { + val title = applicationContext.getString(R.string.notification_sync_vault_title) + val channelId = createSyncVaultChannel() + NotificationCompat.Builder(applicationContext, channelId) + .setContentTitle(title) + .setTicker(title) + .setSmallIcon(R.drawable.ic_sync) + .setOngoing(true) + .build() + } + val id = + applicationContext.resources.getInteger(R.integer.notification_sync_vault_id) + return ForegroundInfo( + id, + notification, + ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC, + ) + } + + private fun createSyncVaultChannel(): String { + val channel = kotlin.run { + val id = + applicationContext.getString(R.string.notification_sync_vault_channel_id) + val name = + applicationContext.getString(R.string.notification_sync_vault_channel_name) + NotificationChannel(id, name, NotificationManager.IMPORTANCE_LOW) + } + channel.enableVibration(false) + notificationManager.createNotificationChannel(channel) + return channel.id + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/android/worker/util/SessionWorker.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/worker/util/SessionWorker.kt new file mode 100644 index 00000000..b4fc4189 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/android/worker/util/SessionWorker.kt @@ -0,0 +1,51 @@ +package com.artemchep.keyguard.android.worker.util + +import android.content.Context +import androidx.work.CoroutineWorker +import androidx.work.WorkerParameters +import com.artemchep.keyguard.common.model.MasterSession +import com.artemchep.keyguard.common.usecase.GetVaultSession +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.flow +import org.kodein.di.DI +import org.kodein.di.DIAware +import org.kodein.di.android.closestDI +import org.kodein.di.instance + +abstract class SessionWorker( + context: Context, + params: WorkerParameters, +) : CoroutineWorker(context, params), DIAware { + companion object { + private const val SESSION_TIMEOUT_MS = 1000L + } + + final override val di by closestDI { applicationContext } + + private val getVaultSession: GetVaultSession by di.instance() + + @OptIn(ExperimentalCoroutinesApi::class) + override suspend fun doWork(): Result = getVaultSession() + .distinctUntilChanged() + .flatMapLatest { session -> + when (session) { + is MasterSession.Key -> flow { + val result = session.di.doWork() + emit(result) + } + + is MasterSession.Empty -> flow { + delay(SESSION_TIMEOUT_MS) + val result = Result.failure() + emit(result) + } + } + } + .first() + + abstract suspend fun DI.doWork(): Result +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/billing/BillingClientApiException.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/billing/BillingClientApiException.kt new file mode 100644 index 00000000..1f979e76 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/billing/BillingClientApiException.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.billing + +class BillingClientApiException( + val reason: Int, +) : RuntimeException() diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/billing/BillingClientDisconnectedException.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/billing/BillingClientDisconnectedException.kt new file mode 100644 index 00000000..a62a9150 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/billing/BillingClientDisconnectedException.kt @@ -0,0 +1,3 @@ +package com.artemchep.keyguard.billing + +class BillingClientDisconnectedException : RuntimeException() diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/billing/BillingConnection.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/billing/BillingConnection.kt new file mode 100644 index 00000000..d4eba703 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/billing/BillingConnection.kt @@ -0,0 +1,40 @@ +package com.artemchep.keyguard.billing + +import android.app.Activity +import com.android.billingclient.api.AcknowledgePurchaseParams +import com.android.billingclient.api.BillingClient +import com.android.billingclient.api.BillingFlowParams +import com.android.billingclient.api.Purchase +import com.android.billingclient.api.SkuDetails +import com.android.billingclient.api.SkuDetailsParams +import com.artemchep.keyguard.common.model.RichResult +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableStateFlow + +/** + * @author Artem Chepurnyi + */ +interface BillingConnection { + val clientLiveFlow: MutableStateFlow> + + /** + * Perform a network query to get SKU details and + * return the result asynchronously. + */ + fun skuDetailsFlow(skuDetailsParams: SkuDetailsParams): Flow>> + + /** + * Get purchases details for all the items bought within your app. + * This method uses a cache of Google Play Store app without initiating a network request. + * + * Note: It's recommended for security purposes to go through purchases verification + * on your backend (if you have one) by calling one of the following APIs: + * https://developers.google.com/android-publisher/api-ref/purchases/products/get + * https://developers.google.com/android-publisher/api-ref/purchases/subscriptions/get + */ + fun purchasesFlow(skuType: String): Flow>> + + fun launchBillingFlow(activity: Activity, billingFlowParams: BillingFlowParams) + + fun acknowledgePurchase(acknowledgePurchaseParams: AcknowledgePurchaseParams) +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/billing/BillingConnectionImpl.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/billing/BillingConnectionImpl.kt new file mode 100644 index 00000000..07811356 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/billing/BillingConnectionImpl.kt @@ -0,0 +1,196 @@ +package com.artemchep.keyguard.billing + +import android.app.Activity +import arrow.core.Either +import arrow.core.left +import arrow.core.right +import com.android.billingclient.api.AcknowledgePurchaseParams +import com.android.billingclient.api.BillingClient +import com.android.billingclient.api.BillingFlowParams +import com.android.billingclient.api.BillingResult +import com.android.billingclient.api.Purchase +import com.android.billingclient.api.SkuDetails +import com.android.billingclient.api.SkuDetailsParams +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.flatMap +import com.artemchep.keyguard.common.io.flattenMap +import com.artemchep.keyguard.common.io.io +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.ioRaise +import com.artemchep.keyguard.common.io.retry +import com.artemchep.keyguard.common.io.timeout +import com.artemchep.keyguard.common.model.RichResult +import com.artemchep.keyguard.common.model.flatMap +import com.artemchep.keyguard.common.model.orNull +import com.artemchep.keyguard.common.util.flow.EventFlow +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.firstOrNull +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.flow +import kotlinx.coroutines.flow.mapNotNull +import kotlinx.coroutines.flow.onStart +import kotlinx.coroutines.launch +import kotlinx.coroutines.suspendCancellableCoroutine +import kotlin.coroutines.resume + +private const val RETRY_DELAY = 1000L * 60L // 60s + +/** + * @author Artem Chepurnyi + */ +class BillingConnectionImpl( + /** + * The scope of the connection, it will be terminated after the scope + * ends. + */ + private val coroutineScope: CoroutineScope, + private val dataChangedLiveFlow: EventFlow, + override val clientLiveFlow: MutableStateFlow>, +) : BillingConnection { + companion object { + private const val TAG = "BillingConnection" + + private const val TIMEOUT_LAUNCH_BILLING_FLOW = 1000L + } + + override fun skuDetailsFlow(skuDetailsParams: SkuDetailsParams): Flow>> = + mapClient { client -> + client.mapToSkuDetails(skuDetailsParams) + } + + private suspend fun BillingClient.mapToSkuDetails(skuDetailsParams: SkuDetailsParams) = + ioEffect(Dispatchers.IO) { + querySkuDetailsSuspending(skuDetailsParams) + } + .flattenMap() + .flatMap { skuDetailsList -> + skuDetailsList + ?.takeUnless { it.isEmpty() } + ?.let { io(it) } + ?: kotlin.run { + val exception = + IllegalArgumentException("Sku details list must not be null!") + ioRaise>(exception) + } + } + .retryIfNetworkIssue() + .attempt().bind().let { RichResult.invoke(it) } + + override fun purchasesFlow(skuType: String): Flow>> = + mapClient { client -> + ioEffect(Dispatchers.IO) { + client.queryPurchasesSuspending(skuType) + } + .flattenMap() + .flatMap { purchasesList -> + purchasesList + ?.let { io(it) } + ?: kotlin.run { + val exception = + IllegalArgumentException("Purchase details list must not be null!") + ioRaise>(exception) + } + } + .retryIfNetworkIssue() + .attempt().bind().let { RichResult.invoke(it) } + } + + private fun IO.retryIfNetworkIssue() = this + .retry { e, count -> + if (e is BillingResponseException && e.isNetworkIssue()) { + delay(RETRY_DELAY) + true + } else { + false + } + } + + override fun launchBillingFlow( + activity: Activity, + billingFlowParams: BillingFlowParams, + ) { + coroutineScope.launch(Dispatchers.Main) { + val client = getClient(TIMEOUT_LAUNCH_BILLING_FLOW) ?: return@launch + client.launchBillingFlow(activity, billingFlowParams) + } + } + + override fun acknowledgePurchase(acknowledgePurchaseParams: AcknowledgePurchaseParams) { + coroutineScope.launch(Dispatchers.IO) { + val client = getClient(TIMEOUT_LAUNCH_BILLING_FLOW) ?: return@launch + client.acknowledgePurchase( + acknowledgePurchaseParams, + ) { result -> + // TODO: Do we want to verify the response? + notifyDataChanged() + } + } + } + + /** Returns a client within a timeout or returns null */ + private suspend fun getClient(timeout: Long) = + ioEffect { + clientLiveFlow + .mapNotNull { it.orNull() } + .firstOrNull() + } + .timeout(timeout) + .attempt() + .bind() + .getOrNull() + + private fun notifyDataChanged() { + dataChangedLiveFlow.emit(Unit) + } + + private fun mapClient(transform: suspend (BillingClient) -> RichResult): Flow> = + clientLiveFlow + .flatMapLatest { clientResult -> + dataChangedLiveFlow + .onStart { + emit(Unit) + } + .flatMapLatest { + flow { + emit(RichResult.Loading()) + val result = clientResult + .flatMap { + transform(it) + } + emit(result) + } + } + } +} + +private suspend fun BillingClient.querySkuDetailsSuspending(skuDetailsParams: SkuDetailsParams) = + suspendCancellableCoroutine?>> { continuation -> + querySkuDetailsAsync(skuDetailsParams) { billingResult, skuDetailsList -> + kotlin.runCatching { + val r = getBillingResultOrException(billingResult, skuDetailsList) + continuation.resume(r) + } + } + } + +private suspend fun BillingClient.queryPurchasesSuspending(skuType: String) = + suspendCancellableCoroutine?>> { continuation -> + queryPurchasesAsync(skuType) { billingResult, purchases -> + kotlin.runCatching { + val r = getBillingResultOrException(billingResult, purchases) + continuation.resume(r) + } + } + } + +private fun getBillingResultOrException(billingResult: BillingResult, model: T) = + when (val code = billingResult.responseCode) { + BillingClient.BillingResponseCode.OK -> model.right() + else -> BillingResponseException(code).left() + } diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/billing/BillingManager.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/billing/BillingManager.kt new file mode 100644 index 00000000..114ed8b4 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/billing/BillingManager.kt @@ -0,0 +1,10 @@ +package com.artemchep.keyguard.billing + +import kotlinx.coroutines.flow.Flow + +/** + * @author Artem Chepurnyi + */ +interface BillingManager { + val billingConnectionFlow: Flow +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/billing/BillingManagerImpl.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/billing/BillingManagerImpl.kt new file mode 100644 index 00000000..01bd1136 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/billing/BillingManagerImpl.kt @@ -0,0 +1,126 @@ +package com.artemchep.keyguard.billing + +import android.content.Context +import arrow.core.partially1 +import com.android.billingclient.api.BillingClient +import com.android.billingclient.api.BillingClientStateListener +import com.android.billingclient.api.BillingResult +import com.artemchep.keyguard.common.io.throttle +import com.artemchep.keyguard.common.model.RichResult +import com.artemchep.keyguard.common.util.flow.EventFlow +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.NonCancellable +import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.collect +import kotlinx.coroutines.flow.flow +import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.flow.onStart +import kotlinx.coroutines.flow.shareIn +import kotlinx.coroutines.launch +import kotlinx.coroutines.plus +import kotlinx.coroutines.withContext + +private const val RECONNECT_DELAY = 1000L * 10L // 10s + +/** + * @author Artem Chepurnyi + */ +class BillingManagerImpl( + private val context: Context, +) : BillingManager { + companion object { + private const val TAG = "BillingManager" + + private const val SHARING_TIMEOUT_MS = 5000L + } + + override val billingConnectionFlow: Flow = flow { + coroutineScope { + val connection = launchIn(this) + emit(connection) + } + }.shareIn(GlobalScope, SharingStarted.WhileSubscribed(SHARING_TIMEOUT_MS), replay = 1) + + private fun launchIn(scope: CoroutineScope): BillingConnection { + val dataChangedEventFlow = EventFlow() + val billingClient = BillingClient + .newBuilder(context) + .enablePendingPurchases() + .setListener { _, _ -> + dataChangedEventFlow.emit(Unit) + } + .build() + val liveFlow = MutableStateFlow>(RichResult.Loading()) + + val job = scope.launch(Dispatchers.Main.immediate) { + val requestConnectSink = EventFlow() + val requestConnect = requestConnectSink::emit + .partially1(Unit) + + val listener = object : BillingClientStateListener { + override fun onBillingSetupFinished(billingResult: BillingResult) { + val event: RichResult = + when (val code = billingResult.responseCode) { + BillingClient.BillingResponseCode.OK -> { + RichResult.Success(billingClient) + } + + BillingClient.BillingResponseCode.SERVICE_TIMEOUT, + BillingClient.BillingResponseCode.SERVICE_UNAVAILABLE, + BillingClient.BillingResponseCode.BILLING_UNAVAILABLE, + BillingClient.BillingResponseCode.DEVELOPER_ERROR, + BillingClient.BillingResponseCode.ERROR, + -> { + when (code) { + BillingClient.BillingResponseCode.SERVICE_TIMEOUT, + BillingClient.BillingResponseCode.SERVICE_UNAVAILABLE, + BillingClient.BillingResponseCode.BILLING_UNAVAILABLE, + -> requestConnect() + } + RichResult.Failure(BillingClientApiException(code)) + } + + else -> return + } + liveFlow.value = event + } + + override fun onBillingServiceDisconnected() { + liveFlow.value = RichResult.Failure(BillingClientDisconnectedException()) + requestConnect() + } + } + + val tryConnect = { + // We're trying to connect, notify the user + // about it... + liveFlow.value = RichResult.Loading() + // ... and try to connect. + billingClient.startConnection(listener) + } + + val flow = requestConnectSink + .throttle(RECONNECT_DELAY, sendLastEvent = true) + .onEach { tryConnect() } + .onStart { tryConnect() } + try { + flow.collect() + } finally { + withContext(NonCancellable + Dispatchers.Main) { + billingClient.endConnection() + } + } + } + + return BillingConnectionImpl( + coroutineScope = scope + job, + dataChangedLiveFlow = dataChangedEventFlow, + clientLiveFlow = liveFlow, + ) + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/billing/BillingResponseException.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/billing/BillingResponseException.kt new file mode 100644 index 00000000..e3e91b70 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/billing/BillingResponseException.kt @@ -0,0 +1,39 @@ +package com.artemchep.keyguard.billing + +import com.android.billingclient.api.BillingClient + +class BillingResponseException( + val code: Int, +) : RuntimeException() + +fun BillingResponseException.isNetworkIssue() = + when (code) { + BillingClient.BillingResponseCode.SERVICE_TIMEOUT, + BillingClient.BillingResponseCode.SERVICE_UNAVAILABLE, + -> true + + else -> false + } + +/** + * The requested feature is not supported by + * the Play Store on the current device. + */ +fun BillingResponseException.isNotSupported() = + when (code) { + BillingClient.BillingResponseCode.FEATURE_NOT_SUPPORTED, + -> true + + else -> false + } + +/** + * Fatal error during the API action. + */ +fun BillingResponseException.isFatalError() = + when (code) { + BillingClient.BillingResponseCode.ERROR, + -> true + + else -> false + } diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/common/service/permission/Permission.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/common/service/permission/Permission.kt new file mode 100644 index 00000000..6419381c --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/common/service/permission/Permission.kt @@ -0,0 +1,13 @@ +package com.artemchep.keyguard.common.service.permission + +import android.Manifest +import android.annotation.SuppressLint + +@SuppressLint("InlinedApi") +actual enum class Permission( + val permission: String, + val minSdk: Int = 0, + val maxSdk: Int = Int.MAX_VALUE, +) { + POST_NOTIFICATIONS(Manifest.permission.POST_NOTIFICATIONS, minSdk = 33), +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl.kt new file mode 100644 index 00000000..6e853bbf --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/common/usecase/impl/CleanUpAttachmentImpl.kt @@ -0,0 +1,147 @@ +package com.artemchep.keyguard.common.usecase.impl + +import android.app.Application +import android.content.Context +import com.artemchep.keyguard.android.downloader.DownloadManagerImpl +import com.artemchep.keyguard.android.downloader.journal.DownloadRepository +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.measure +import com.artemchep.keyguard.common.service.logging.LogLevel +import com.artemchep.keyguard.common.service.logging.LogRepository +import com.artemchep.keyguard.common.usecase.CleanUpAttachment +import com.artemchep.keyguard.common.usecase.GetCiphers +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.debounce +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.launch +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.time.Duration + +/** + * @author Artem Chepurnyi + */ +class CleanUpDownloadImpl( + private val downloadRepository: DownloadRepository, + private val getCiphers: GetCiphers, +) { + constructor(directDI: DirectDI) : this( + downloadRepository = directDI.instance(), + getCiphers = directDI.instance(), + ) + + fun invoke(): IO = ioEffect { + val urls = getCiphers() + .first() + .asSequence() + .flatMap { + it.attachments + .asSequence() + .map { it.url } + } + .toSet() + val kkk = downloadRepository.get() + .map { downloadInfoList -> + downloadInfoList + .asSequence() + .map { it.url } + .toSet() + } + .first() + kkk.subtract(urls).forEach { url -> + // TODO + // downloadRepository.removeByUrl(url) + } + } +} + +/** + * @author Artem Chepurnyi + */ +class CleanUpAttachmentImpl( + private val context: Context, + private val logRepository: LogRepository, + private val downloadRepository: DownloadRepository, +) : CleanUpAttachment { + companion object { + private const val TAG = "CleanUpAttachment" + + fun zzz( + scope: CoroutineScope, + downloadRepository: DownloadRepository, + cleanUpAttachment: CleanUpAttachment, + ): Job = scope.launch { + // We want to avoid launching a ton of jobs + // immediately on the start. + val delay = with(Duration) { 30L.seconds } + delay(delay) + + // Each time file journal changes we check for the unused files. + downloadRepository.get() + .debounce(1000L) + .onEach { + cleanUpAttachment() + .attempt() + .bind() + } + .launchIn(scope) + + // Each time ciphers change we check for the removed urls. +// getCiphers() +// .debounce(1000L) +// .onEach { +// cleanUpDownload.invoke() +// .attempt() +// .bind() +// } +// .launchIn(scope) + } + } + + constructor(directDI: DirectDI) : this( + context = directDI.instance(), + logRepository = directDI.instance(), + downloadRepository = directDI.instance(), + ) + + override fun invoke(): IO = ioEffect(Dispatchers.IO) { + val dir = DownloadManagerImpl.getDir(context) + + val actualFiles = dir + .listFiles() + .orEmpty() + val possibleFiles = kotlin.run { + val journal = downloadRepository.get().first() + journal + .asSequence() + .map { downloadInfo -> + val fileId = downloadInfo.id + DownloadManagerImpl.getFile( + dir = dir, + downloadId = fileId, + ) + } + .toSet() + } + + val filesToDelete = actualFiles + .filter { it !in possibleFiles } + // Delete files + filesToDelete.forEach { file -> + file.delete() + } + filesToDelete.size + }.measure { duration, deletedFiles -> + val message = "Deleted $deletedFiles files in $duration" + logRepository.post(TAG, message, LogLevel.INFO) + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/common/usecase/impl/DisableBiometricImpl.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/common/usecase/impl/DisableBiometricImpl.kt new file mode 100644 index 00000000..c20502d2 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/common/usecase/impl/DisableBiometricImpl.kt @@ -0,0 +1,29 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.io.flatMap +import com.artemchep.keyguard.common.io.ioUnit +import com.artemchep.keyguard.common.io.toIO +import com.artemchep.keyguard.common.service.vault.FingerprintReadWriteRepository +import com.artemchep.keyguard.common.usecase.DisableBiometric +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class DisableBiometricImpl( + private val keyReadWriteRepository: FingerprintReadWriteRepository, +) : DisableBiometric { + constructor(directDI: DirectDI) : this( + keyReadWriteRepository = directDI.instance(), + ) + + override fun invoke() = keyReadWriteRepository.get() + .toIO() + .flatMap { tokens -> + val newTokens = tokens?.copy(biometric = null) + if (newTokens != tokens) { + return@flatMap keyReadWriteRepository + .put(newTokens) + } + + ioUnit() + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/common/usecase/impl/EnableBiometricImpl.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/common/usecase/impl/EnableBiometricImpl.kt new file mode 100644 index 00000000..be19d3e6 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/common/usecase/impl/EnableBiometricImpl.kt @@ -0,0 +1,94 @@ +package com.artemchep.keyguard.common.usecase.impl + +import arrow.core.memoize +import arrow.core.partially1 +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.flatMap +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.toIO +import com.artemchep.keyguard.common.model.BiometricPurpose +import com.artemchep.keyguard.common.model.BiometricStatus +import com.artemchep.keyguard.common.model.FingerprintBiometric +import com.artemchep.keyguard.common.model.MasterSession +import com.artemchep.keyguard.common.model.WithBiometric +import com.artemchep.keyguard.common.service.vault.FingerprintReadWriteRepository +import com.artemchep.keyguard.common.usecase.BiometricKeyEncryptUseCase +import com.artemchep.keyguard.common.usecase.BiometricStatusUseCase +import com.artemchep.keyguard.common.usecase.EnableBiometric +import com.artemchep.keyguard.common.usecase.GetVaultSession +import org.kodein.di.DirectDI +import org.kodein.di.instance +import java.security.KeyException + +class EnableBiometricImpl( + private val keyReadWriteRepository: FingerprintReadWriteRepository, + private val getVaultSession: GetVaultSession, + private val biometricStatusUseCase: BiometricStatusUseCase, + private val biometricKeyEncryptUseCase: BiometricKeyEncryptUseCase, +) : EnableBiometric { + constructor(directDI: DirectDI) : this( + keyReadWriteRepository = directDI.instance(), + getVaultSession = directDI.instance(), + biometricStatusUseCase = directDI.instance(), + biometricKeyEncryptUseCase = directDI.instance(), + ) + + override fun invoke( + masterSession: MasterSession.Key?, + ) = ioEffect { + val session = getVaultSession().toIO().bind() + val tokens = keyReadWriteRepository.get().toIO().bind() + require(tokens != null) { + "Can not enable biometrics without a live session." + } + require(session is MasterSession.Key) { + "Can not enable biometrics without a live session." + } + + val biometric = biometricStatusUseCase().toIO().bind() + require(biometric is BiometricStatus.Available) { + "Can not enable biometrics on an unsupported device." + } + + val getOrRecreateCipherForEncryption = biometric + .createCipher + .partially1(BiometricPurpose.Encrypt) + // Flat map + .let { createCipher -> + // Lambda + { + try { + createCipher() + } catch (e: KeyException) { + // try to clear the cipher key... + biometric.deleteCipher() + // ...and recreate it. + createCipher() + } + } + } + // Save the cipher for further use by + // the code in the block. This allows us to not + // return the cipher from the action. + .memoize() + WithBiometric( + getCipher = getOrRecreateCipherForEncryption, + getCreateIo = { + val masterKey = session.masterKey + val cipherIo = ioEffect { getOrRecreateCipherForEncryption() } + biometricKeyEncryptUseCase(cipherIo, masterKey) + .flatMap { encryptedMasterKey -> + val cipher = getOrRecreateCipherForEncryption() + + // Save new tokens to the repository. + val biometricTokens = FingerprintBiometric( + iv = cipher.iv, + encryptedMasterKey = encryptedMasterKey, + ) + val newTokens = tokens.copy(biometric = biometricTokens) + keyReadWriteRepository.put(newTokens) + } + }, + ) + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetBiometricRemainingDurationImpl.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetBiometricRemainingDurationImpl.kt new file mode 100644 index 00000000..d9dc49c1 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetBiometricRemainingDurationImpl.kt @@ -0,0 +1,44 @@ +package com.artemchep.keyguard.common.usecase.impl + +import com.artemchep.keyguard.common.service.vault.SessionMetadataReadRepository +import com.artemchep.keyguard.common.usecase.GetBiometricRemainingDuration +import com.artemchep.keyguard.common.usecase.GetBiometricTimeout +import com.artemchep.keyguard.common.util.flowOfTime +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.combine +import kotlinx.datetime.Instant +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.time.Duration +import kotlin.time.DurationUnit + +class GetBiometricRemainingDurationImpl( + private val sessionMetadataReadRepository: SessionMetadataReadRepository, + private val getBiometricTimeout: GetBiometricTimeout, +) : GetBiometricRemainingDuration { + constructor(directDI: DirectDI) : this( + sessionMetadataReadRepository = directDI.instance(), + getBiometricTimeout = directDI.instance(), + ) + + override fun invoke(): Flow = combine( + getExpiryTimeFlow(), + flowOfTime(DurationUnit.MINUTES), + ) { expiryTimeOrNull, currentTime -> + val expiryTime = expiryTimeOrNull ?: return@combine Duration.ZERO + (expiryTime - currentTime) + .coerceAtLeast(Duration.ZERO) + } + + private fun getExpiryTimeFlow() = combine( + sessionMetadataReadRepository.getLastPasswordUseTimestamp(), + getBiometricTimeout(), + ) { lastPasswordUseInstant, timeout -> + when (timeout) { + Duration.INFINITE -> return@combine Instant.DISTANT_FUTURE + Duration.ZERO -> return@combine Instant.DISTANT_PAST + } + + lastPasswordUseInstant?.plus(timeout) + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl.kt new file mode 100644 index 00000000..77e9c494 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetPurchasedImpl.kt @@ -0,0 +1,147 @@ +package com.artemchep.keyguard.common.usecase.impl + +import android.content.Context +import arrow.core.identity +import com.artemchep.keyguard.billing.BillingResponseException +import com.artemchep.keyguard.billing.isFatalError +import com.artemchep.keyguard.billing.isNotSupported +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.model.fold +import com.artemchep.keyguard.common.service.subscription.SubscriptionService +import com.artemchep.keyguard.common.usecase.GetCachePremium +import com.artemchep.keyguard.common.usecase.GetDebugPremium +import com.artemchep.keyguard.common.usecase.GetPurchased +import com.artemchep.keyguard.common.usecase.PutCachePremium +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.platform.isStandalone +import com.artemchep.keyguard.platform.util.isRelease +import com.google.android.gms.common.ConnectionResult +import com.google.android.gms.common.GoogleApiAvailability +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.mapNotNull +import kotlinx.coroutines.flow.merge +import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.flow.onStart +import kotlinx.coroutines.flow.runningReduce +import kotlinx.coroutines.flow.shareIn +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetPurchasedImpl( + private val context: Context, + private val subscriptionService: SubscriptionService, + private val getDebugPremium: GetDebugPremium, + private val getCachePremium: GetCachePremium, + private val putCachePremium: PutCachePremium, + private val windowCoroutineScope: WindowCoroutineScope, +) : GetPurchased { + constructor(directDI: DirectDI) : this( + context = directDI.instance(), + subscriptionService = directDI.instance(), + getDebugPremium = directDI.instance(), + getCachePremium = directDI.instance(), + putCachePremium = directDI.instance(), + windowCoroutineScope = directDI.instance(), + ) + + private val sharedFlow = merge( + upstreamStatusFlow(), + localStatusFlow(), + ) + .runningReduce { y, x -> + x.takeIf { it.isUpstream } + ?: y.takeIf { it.isUpstream } + ?: x + } + .onEach { status -> + // Cache the latest upstream value, so next time we + // open the app and billing refuses to work, we still + // have valid license. + if (status.isUpstream) { + putCachePremium(status.isPremium) + .attempt() // do not notify a user about the error + .launchIn(windowCoroutineScope) + } + } + .map { it.isPremium } + .distinctUntilChanged() + .shareIn(windowCoroutineScope, SharingStarted.WhileSubscribed(), replay = 1) + + override fun invoke() = if (!isStandalone) sharedFlow else flowOf(true) + + private fun localStatusFlow() = getCachePremium() + .map { isPremium -> + PremiumStatus( + isPremium = isPremium, + isUpstream = false, + ) + } + + private fun upstreamStatusFlow() = kotlin.run { + val hasGooglePlayServices = hasGooglePlayServices() + if (!hasGooglePlayServices) { + // If a device doesn't have Google Play Services, then we + // just give a user premium status. + return@run flowOf(true) + } + + val isPurchased = subscriptionService + .purchased() + .mapNotNull { result -> + result.fold( + ifFailure = { e -> + if (e is BillingResponseException) { + val isGappsIssue = e.isFatalError() || + e.isNotSupported() + isGappsIssue.takeIf { it } + } else { + // Something went wrong, so we + // have no idea. + null + } + }, + ifLoading = { null }, + ifSuccess = ::identity, + ) + } + if (!isRelease) { + combine( + isPurchased + // We want to emit something here, so + // we can use the test flow. + .onStart { + emit(false) + }, + getDebugPremium(), + ) { a, b -> a || b } + } else { + isPurchased + } + }.map { isPremium -> + PremiumStatus( + isPremium = isPremium, + isUpstream = true, + ) + } + + private data class PremiumStatus( + val isUpstream: Boolean, + val isPremium: Boolean, + ) + + /** + * Returns `true` if a device has Google play services, + * `false` otherwise. + */ + private fun hasGooglePlayServices(): Boolean { + val apiAvailability = GoogleApiAvailability.getInstance() + val status = apiAvailability.isGooglePlayServicesAvailable(context) + return status == ConnectionResult.SUCCESS || + apiAvailability.isUserResolvableError(status) + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetSuggestionsImpl.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetSuggestionsImpl.kt new file mode 100644 index 00000000..4dca4667 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/common/usecase/impl/GetSuggestionsImpl.kt @@ -0,0 +1,404 @@ +package com.artemchep.keyguard.common.usecase.impl + +import android.util.Log +import arrow.core.getOrElse +import arrow.optics.Getter +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.measure +import com.artemchep.keyguard.common.io.parallelSearch +import com.artemchep.keyguard.common.model.AutofillHint +import com.artemchep.keyguard.common.model.AutofillTarget +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.LinkInfoAndroid +import com.artemchep.keyguard.common.model.LinkInfoPlatform +import com.artemchep.keyguard.common.model.contains +import com.artemchep.keyguard.common.service.extract.LinkInfoExtractor +import com.artemchep.keyguard.common.usecase.CipherUrlCheck +import com.artemchep.keyguard.common.usecase.GetSuggestions +import com.artemchep.keyguard.feature.home.vault.search.findAlike +import io.ktor.http.Url +import kotlinx.coroutines.Dispatchers +import org.kodein.di.DirectDI +import org.kodein.di.allInstances +import org.kodein.di.instance + +private const val ignoreLength = 3 + +private val ignoreWords = setOf( + "www", + // popular domains + "com", + "tk", + "cn", + "de", + "net", + "uk", + "org", + "nl", + "icu", + "ru", + "eu", + // rising domains + "icu", + "top", + "xyz", + "site", + "online", + "club", + "wang", + "vip", + "shop", + "work", + // common words used in domain names + "login", + "signin", + "auth", + "dev", + "debug", + "release", + // top 100 english words that are > ignoreLength + "there", + "some", + "than", + "this", + "would", + "first", + "have", + "each", + "make", + "water", + "from", + "which", + "like", + "been", + "call", + "into", + "time", + "that", + "their", + "word", + "look", + "now", + "will", + "find", + "more", + "long", + "what", + "other", + "write", + "down", + "about", + "were", + "many", + "number", + "with", + "when", + "then", + "come", + "your", + "them", + "made", + "they", + "these", + "could", + "said", + "people", + "part", +) + +private const val scoreThreshold = 0.1f + +class GetSuggestionsImpl( + private val androidExtractors: List>, + private val cipherUrlCheck: CipherUrlCheck, +) : GetSuggestions { + constructor(directDI: DirectDI) : this( + androidExtractors = directDI.allInstances(), + cipherUrlCheck = directDI.instance(), + ) + + data class AutofillTargetAndroid( + val appId: String, + // It's preferable if we have the name, but we + // can still operate without it. + val appName: String?, + ) { + val appIdTokens = appId + .lowercase() + .split(".", "_") + + val appNameTokens = appName + ?.lowercase() + ?.split(" ") + } + + data class AutofillTargetWeb( + val webUrl: Url, + ) { + val webUrlTokens = webUrl.host + .lowercase() + .split(".", "_") + } + + override fun invoke( + ciphers: List, + getter: Getter, + target: AutofillTarget, + ): IO> = ioEffect(Dispatchers.Default) { + // Android app target + val autofillTargetAndroid = kotlin.run { + val link = target.links.firstNotNullOfOrNull { it as? LinkInfoPlatform.Android } + ?: return@run null + val appId = link.packageName + val appInfo = androidExtractors + .firstNotNullOfOrNull { extractor -> + if (extractor.from == LinkInfoPlatform.Android::class && extractor.handles(link)) { + extractor.extractInfo(link) + .attempt() + .bind() + .getOrNull() + } else { + null + } + } as? LinkInfoAndroid.Installed + AutofillTargetAndroid( + appId = appId, + appName = appInfo?.label, + ) + } + + // Web target + val autofillTargetWeb = kotlin.run { + val link = target.links.firstNotNullOfOrNull { it as? LinkInfoPlatform.Web } + ?: return@run null + AutofillTargetWeb( + webUrl = link.url, + ) + } + + val c = ciphers + .parallelSearch { wrapper -> + val cipher = getter.get(wrapper) + val tokens = cipher.tokenize() + val score = if ( + AutofillHint.EMAIL_ADDRESS in target.hints || + AutofillHint.PHONE_NUMBER in target.hints || + AutofillHint.USERNAME in target.hints || + AutofillHint.PASSWORD in target.hints + ) { + run { + val scoreByWebDomainRaw = + autofillTargetWeb?.findByWebDomain(cipher, tokens, cipherUrlCheck) + val scoreByWebDomain = scoreByWebDomainRaw + ?: 0f + if (scoreByWebDomain > scoreThreshold) { + // If we already have a score using the web info, + // then do not mix the browser application into it. + return@run scoreByWebDomain + } + + val scoreByAppId = autofillTargetAndroid?.findByApp(cipher, tokens) + ?: 0f + + val scaledScoreByWebDomain = scoreByWebDomain + val scaledScoreByAppId = if (scoreByWebDomainRaw != null) { + scoreByAppId / 30f + } else { + scoreByAppId + } + scaledScoreByWebDomain + scaledScoreByAppId + } + } else if ( + AutofillHint.CREDIT_CARD_NUMBER in target.hints || + AutofillHint.CREDIT_CARD_EXPIRATION_DATE in target.hints || + AutofillHint.CREDIT_CARD_SECURITY_CODE in target.hints + ) { + 1f + } else { + 0f + } +// if (score <= scoreThreshold) { +// return@parallelSearch null +// } + val correctingScore = if (target.hints.isNotEmpty()) { + val matchingCount = target.hints + .count { + cipher.contains(it) + } + (matchingCount.toFloat() / target.hints.size.toFloat()) + .coerceAtLeast(0.4f) + } else { + 1f + } + (score * correctingScore) to wrapper + } + var avgSize = 0 + var avgScore = 0f + val maxScore = c.maxByOrNull { it.first }?.first ?: 0f + c.forEach { (score, _) -> + if (score > scoreThreshold) { + avgSize += 1 + avgScore += score + } + } + avgScore /= avgSize.coerceAtLeast(1) + val threshold = + if (maxScore >= 10f) maxScore.div(3f).coerceAtLeast(10f) else avgScore / 1.5f + Log.e("SuggestionsTest", "threshold $threshold") + c + .filter { (score, _) -> score >= threshold && score > scoreThreshold } + .sortedByDescending { it.first } + .also { list -> + Log.e("SuggestionsTest", "-----") + Log.e( + "SuggestionsTest", + "checked ${ciphers.size} ciphers, ${target.hints.size} hints", + ) + Log.e("SuggestionsTest", "android=$autofillTargetAndroid") + Log.e("SuggestionsTest", "web=$autofillTargetWeb") + list.forEach { (score, model) -> + val cipher = getter.get(model) + Log.e( + "SuggestionsTest", + "[$score] ${cipher.name} | ${cipher.tokenize().joinToString { it }}", + ) + } + } + .map { it.second } + }.measure { duration, anies -> + Log.e("SuggestionsTest", "complete in $duration") + } + + private val garbageRegex = "[.,!_:;&()\\[\\]]".toRegex() + + private fun DSecret.tokenize(): Set { + val out = mutableSetOf() + + fun tryAdd(token: String) { + if (token.length <= ignoreLength) { + return + } + + val processedToken = token.lowercase() + if (processedToken in ignoreWords) { + return + } + + out += processedToken + } + + // Split the name into tokens + name.replace(garbageRegex, " ") + .split(' ') + .forEach(::tryAdd) + // Extract domain name from the username + // if that looks like an email. + if (login?.username != null) { + val tokens = login.username.split("@") + if (tokens.size == 2) { // this is an email + val domain = tokens[1] + domain + .split('.') + .forEach(::tryAdd) + // an email might contain extra info separated by the + sign + val username = tokens[0] + val extras = username.split('+') + if (extras.size == 2) { + val extrasInfo = extras[1] + extrasInfo + .split('.') + .forEach(::tryAdd) + } + } + } + return out + } +} + +private fun GetSuggestionsImpl.AutofillTargetAndroid.findByApp( + secret: DSecret, + tokens: Set, +): Float = run { + // In case the host matches one of the URLs defined in + // the cipher, then we give it maximum priority. + val scoreByUri = secret.uris + .any { uri -> + uri.uri.startsWith("androidapp://") && + uri.uri.trim().endsWith(appId) && + uri.match != DSecret.Uri.MatchType.Never + } + .let { directMatch -> + if (directMatch) 30f else 0f + } + val scoreByName = appNameTokens?.let { + findAlike( + tokens, + it, + ) + } ?: 0f + val scoreById = findAlike( + tokens, + appIdTokens, + ) + scoreById * 0.5f + scoreByName * 1.2f + scoreByUri +} + +// If the URI matches something then the output score will be +// more or equal to 10, otherwise if the URI matches the content of the +// cipher the score it ~5 at max. +private suspend fun GetSuggestionsImpl.AutofillTargetWeb.findByWebDomain( + secret: DSecret, + tokens: Set, + cipherUrlCheck: CipherUrlCheck, +): Float = run { + val webHost = webUrl.host + val webUrl = webUrl.toString() + // In case the host matches one of the URLs defined in + // the cipher, then we give it maximum priority. + val scoreByUri = secret.uris + .map { uri -> + val match = cipherUrlCheck.invoke(uri, webUrl) + .attempt() + .bind() + .getOrElse { false } + if (match) { + @Suppress("MoveVariableDeclarationIntoWhen") + val matchType = uri.match ?: DSecret.Uri.MatchType.default + when (matchType) { + DSecret.Uri.MatchType.Domain -> 10f + DSecret.Uri.MatchType.Host -> 20f + DSecret.Uri.MatchType.StartsWith -> 25f + DSecret.Uri.MatchType.Exact -> 25f + DSecret.Uri.MatchType.RegularExpression -> 30f + DSecret.Uri.MatchType.Never -> 0f + } + } else { + 0f + } + } + .maxByOrNull { it } + ?: 0f + val scoreByRpId = secret.login?.fido2Credentials.orEmpty() + .map { credential -> + val match = isSubdomain( + domain = credential.rpId, + request = webHost, + ) + if (match) { + 20f + } else { + 0f + } + } + .maxByOrNull { it } + ?: 0f + + val scoreByHost = findAlike( + tokens, + webUrlTokens, + ) + scoreByHost * 2f + scoreByUri + scoreByRpId +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/AutofillServiceAndroid.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/AutofillServiceAndroid.kt new file mode 100644 index 00000000..762e6472 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/AutofillServiceAndroid.kt @@ -0,0 +1,83 @@ +package com.artemchep.keyguard.copy + +import android.app.Application +import android.content.Intent +import android.net.Uri +import android.provider.Settings +import android.view.autofill.AutofillManager +import androidx.core.content.getSystemService +import androidx.credentials.CredentialManager +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.ProcessLifecycleOwner +import androidx.lifecycle.repeatOnLifecycle +import com.artemchep.keyguard.common.service.autofill.AutofillService +import com.artemchep.keyguard.common.service.autofill.AutofillServiceStatus +import com.artemchep.keyguard.common.util.flow.EventFlow +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.channelFlow +import kotlinx.coroutines.flow.debounce +import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.merge +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class AutofillServiceAndroid( + private val application: Application, +) : AutofillService { + private val autofillChangedSink = EventFlow() + + private val autofillChangedFlow = channelFlow { + send(Unit) + + val lifecycle = ProcessLifecycleOwner.get() + lifecycle.repeatOnLifecycle(Lifecycle.State.RESUMED) { + send(Unit) + } + } + + constructor( + directDI: DirectDI, + ) : this( + application = directDI.instance(), + ) + + override fun status(): Flow = merge( + autofillChangedSink, + autofillChangedFlow, + ) + .debounce(100L) + .map { + val am = application.getSystemService() + ?: return@map AutofillServiceStatus.Disabled( + onEnable = null, + ) + val cm = CredentialManager.create(application) + //.createSettingsPendingIntent() + + val enabled = am.hasEnabledAutofillServices() + if (enabled) { + AutofillServiceStatus.Enabled( + onDisable = { + am.disableAutofillServices() + // Refresh a status of the autofill services + // after we disabled ourselves. + autofillChangedSink.emit(Unit) + }, + ) + } else { + Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES + AutofillServiceStatus.Disabled( + onEnable = { activity -> + val intent = Intent(Settings.ACTION_REQUEST_SET_AUTOFILL_SERVICE).apply { + val packageName = application.packageName + data = Uri.parse("package:$packageName") + } + activity.startActivity(intent) + }, + ) + } + } + .flowOn(Dispatchers.Main) +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/ClearDataAndroid.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/ClearDataAndroid.kt new file mode 100644 index 00000000..b1b53933 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/ClearDataAndroid.kt @@ -0,0 +1,26 @@ +package com.artemchep.keyguard.copy + +import android.app.ActivityManager +import android.app.Application +import androidx.core.content.getSystemService +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.usecase.ClearData +import kotlinx.coroutines.Dispatchers +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class ClearDataAndroid( + private val application: Application, +) : ClearData { + constructor( + directDI: DirectDI, + ) : this( + application = directDI.instance(), + ) + + override fun invoke(): IO = ioEffect(Dispatchers.Main) { + application.getSystemService() + ?.clearApplicationUserData() + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/ClipboardServiceAndroid.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/ClipboardServiceAndroid.kt new file mode 100644 index 00000000..e3ad89bf --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/ClipboardServiceAndroid.kt @@ -0,0 +1,52 @@ +package com.artemchep.keyguard.copy + +import android.app.Application +import android.content.ClipData +import android.content.ClipDescription +import android.content.ClipboardManager +import android.os.Build +import android.os.PersistableBundle +import androidx.core.content.getSystemService +import com.artemchep.keyguard.common.service.clipboard.ClipboardService +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class ClipboardServiceAndroid( + private val application: Application, + private val clipboardManager: ClipboardManager, +) : ClipboardService { + constructor( + directDI: DirectDI, + ) : this( + application = directDI.instance(), + clipboardManager = directDI.instance().getSystemService()!!, + ) + + override fun setPrimaryClip(value: String, concealed: Boolean) { + val clip = + ClipData.newPlainText(null, value) // When your app targets API level 33 or higher + clip.apply { + description.extras = PersistableBundle().apply { + // Do not show the plain value if it + // should be concealed. + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + putBoolean(ClipDescription.EXTRA_IS_SENSITIVE, concealed) + } + } + } + clipboardManager.setPrimaryClip(clip) + } + + override fun clearPrimaryClip() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + clipboardManager.clearPrimaryClip() + return + } + + val clip = + ClipData.newPlainText(null, "") + clipboardManager.setPrimaryClip(clip) + } + + override fun hasCopyNotification() = Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/ConnectivityServiceAndroid.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/ConnectivityServiceAndroid.kt new file mode 100644 index 00000000..d15e38b6 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/ConnectivityServiceAndroid.kt @@ -0,0 +1,64 @@ +package com.artemchep.keyguard.copy + +import android.app.Application +import android.content.Context +import android.net.ConnectivityManager +import android.net.Network +import android.net.NetworkCapabilities +import android.net.NetworkRequest +import androidx.core.content.getSystemService +import com.artemchep.keyguard.common.service.connectivity.ConnectivityService +import kotlinx.coroutines.channels.awaitClose +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.channelFlow +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class ConnectivityServiceAndroid( + private val context: Context, +) : ConnectivityService { + constructor( + directDI: DirectDI, + ) : this( + context = directDI.instance(), + ) + + override val availableFlow: Flow = channelFlow { + // Return the callback immediately if the internet is + // available. + if (isInternetAvailable()) { + send(Unit) + } + + val networkCallback = object : ConnectivityManager.NetworkCallback() { + override fun onAvailable(network: Network) { + trySend(Unit) + } + } + val networkRequest: NetworkRequest = NetworkRequest.Builder() + .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) + .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) + .build() + val connectivityManager = context.getSystemService() + connectivityManager?.registerNetworkCallback(networkRequest, networkCallback) + + awaitClose { + connectivityManager?.unregisterNetworkCallback(networkCallback) + } + } + + override fun isInternetAvailable(): Boolean { + val connectivityManager = context.getSystemService() + ?: return false + val networkCapabilities = connectivityManager.activeNetwork + ?: return false + val actNw = connectivityManager.getNetworkCapabilities(networkCapabilities) + ?: return false + return when { + actNw.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> true + actNw.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> true + actNw.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET) -> true + else -> false + } + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/GetBarcodeImageJvm.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/GetBarcodeImageJvm.kt new file mode 100644 index 00000000..0c219d25 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/GetBarcodeImageJvm.kt @@ -0,0 +1,45 @@ +package com.artemchep.keyguard.copy + +import android.graphics.Bitmap +import androidx.compose.ui.graphics.ImageBitmap +import androidx.compose.ui.graphics.asImageBitmap +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.model.BarcodeImageRequest +import com.artemchep.keyguard.common.usecase.GetBarcodeImage +import com.artemchep.keyguard.util.encode +import kotlinx.coroutines.Dispatchers +import org.kodein.di.DirectDI +import kotlin.coroutines.CoroutineContext + +/** + * @author Artem Chepurnyi + */ +class GetBarcodeImageJvm( + private val dispatcher: CoroutineContext = Dispatchers.Default, +) : GetBarcodeImage { + constructor(directDI: DirectDI) : this() + + override fun invoke( + request: BarcodeImageRequest, + ): IO = ioEffect(dispatcher) { + val bitMatrix = request.encode() + val width = bitMatrix.width + val height = bitMatrix.height + val pixels = IntArray(width * height) + for (y in 0 until height) { + for (x in 0 until width) { + val color = if (bitMatrix.get(x, y)) { + -0x1000000 + } else { + -0x1 + } + pixels[y * width + x] = color + } + } + val bitmap = Bitmap + .createBitmap(width, height, Bitmap.Config.ARGB_8888) + bitmap.setPixels(pixels, 0, width, 0, 0, width, height) + bitmap.asImageBitmap() + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/LinkInfoExtractorAndroid.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/LinkInfoExtractorAndroid.kt new file mode 100644 index 00000000..ba223397 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/LinkInfoExtractorAndroid.kt @@ -0,0 +1,66 @@ +package com.artemchep.keyguard.copy + +import android.content.pm.PackageManager +import androidx.collection.LruCache +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.model.LinkInfoAndroid +import com.artemchep.keyguard.common.model.LinkInfoPlatform +import com.artemchep.keyguard.common.service.extract.LinkInfoExtractor +import com.google.accompanist.drawablepainter.DrawablePainter +import kotlin.reflect.KClass + +class LinkInfoExtractorAndroid( + private val packageManager: PackageManager, +) : LinkInfoExtractor { + private val lruCache = LruCache(2) + + override val from: KClass get() = LinkInfoPlatform.Android::class + + override val to: KClass get() = LinkInfoAndroid::class + + override fun extractInfo( + uri: LinkInfoPlatform.Android, + ): IO = ioEffect { + synchronized(lruCache) { + val cached = lruCache.get(uri.packageName) + if (cached != null) { + return@ioEffect cached + } + + val result = obtainInfo( + uri = uri, + ) + lruCache.put(uri.packageName, result) + result + } + } + + private fun obtainInfo( + uri: LinkInfoPlatform.Android, + ) = kotlin.run { + val appInfoNotInstalled = LinkInfoAndroid.NotInstalled( + platform = uri, + ) + val appInfo = try { + val packageName = uri.packageName + if (packageName.isEmpty()) { + // no need to check if empty package is installed + return@run appInfoNotInstalled + } + packageManager.getApplicationInfo(packageName, 0) + } catch (e: PackageManager.NameNotFoundException) { + return@run appInfoNotInstalled + } + + val label = packageManager.getApplicationLabel(appInfo) + val icon = packageManager.getApplicationIcon(appInfo) + LinkInfoAndroid.Installed( + label = label.toString(), + icon = DrawablePainter(icon), + platform = uri, + ) + } + + override fun handles(uri: LinkInfoPlatform.Android): Boolean = true +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/LinkInfoExtractorExecute.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/LinkInfoExtractorExecute.kt new file mode 100644 index 00000000..e5c287e0 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/LinkInfoExtractorExecute.kt @@ -0,0 +1,21 @@ +package com.artemchep.keyguard.copy + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.io +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.LinkInfoExecute +import com.artemchep.keyguard.common.service.extract.LinkInfoExtractor +import kotlin.reflect.KClass + +class LinkInfoExtractorExecute( +) : LinkInfoExtractor { + override val from: KClass get() = DSecret.Uri::class + + override val to: KClass get() = LinkInfoExecute::class + + override fun extractInfo( + uri: DSecret.Uri, + ): IO = io(LinkInfoExecute.Deny) + + override fun handles(uri: DSecret.Uri): Boolean = true +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/LinkInfoExtractorLaunch.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/LinkInfoExtractorLaunch.kt new file mode 100644 index 00000000..bde3e859 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/LinkInfoExtractorLaunch.kt @@ -0,0 +1,65 @@ +package com.artemchep.keyguard.copy + +import android.content.Intent +import android.content.pm.PackageManager +import android.net.Uri +import androidx.collection.LruCache +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.model.DSecret +import com.artemchep.keyguard.common.model.LinkInfoLaunch +import com.artemchep.keyguard.common.service.extract.LinkInfoExtractor +import com.google.accompanist.drawablepainter.DrawablePainter +import kotlin.reflect.KClass + +class LinkInfoExtractorLaunch( + private val packageManager: PackageManager, +) : LinkInfoExtractor { + private val lruCache = LruCache(2) + + override val from: KClass get() = DSecret.Uri::class + + override val to: KClass get() = LinkInfoLaunch::class + + override fun extractInfo( + uri: DSecret.Uri, + ): IO = ioEffect { + synchronized(lruCache) { + val cached = lruCache.get(uri.uri) + if (cached != null) { + return@ioEffect cached + } + + val result = obtainInfo( + uri = uri.uri, + ) + lruCache.put(uri.uri, result) + result + } + } + + private fun obtainInfo( + uri: String, + ): LinkInfoLaunch = kotlin.run { + val intent = Intent(Intent.ACTION_VIEW).apply { + data = Uri.parse(uri) + } + val apps = packageManager + .queryIntentActivities(intent, 0) + .map { resolveInfo -> + val label = resolveInfo.loadLabel(packageManager) + .toString() + val icon = resolveInfo.loadIcon(packageManager) + LinkInfoLaunch.Allow.AppInfo( + label = label, + icon = DrawablePainter(icon), + ) + } + when { + apps.isEmpty() -> LinkInfoLaunch.Deny + else -> LinkInfoLaunch.Allow(apps) + } + } + + override fun handles(uri: DSecret.Uri): Boolean = true +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/LogRepositoryAndroid.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/LogRepositoryAndroid.kt new file mode 100644 index 00000000..516375fc --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/LogRepositoryAndroid.kt @@ -0,0 +1,27 @@ +package com.artemchep.keyguard.copy + +import android.util.Log +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.service.logging.LogLevel +import com.artemchep.keyguard.common.service.logging.LogRepository +import kotlinx.coroutines.GlobalScope + +class LogRepositoryAndroid() : LogRepository { + override fun post( + tag: String, + message: String, + level: LogLevel, + ) { + add(tag, message, level).attempt().launchIn(GlobalScope) + } + + override fun add( + tag: String, + message: String, + level: LogLevel, + ) = ioEffect { + Log.d(tag, message) + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/PermissionServiceAndroid.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/PermissionServiceAndroid.kt new file mode 100644 index 00000000..a5aa55b7 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/PermissionServiceAndroid.kt @@ -0,0 +1,86 @@ +package com.artemchep.keyguard.copy + +import android.app.Application +import android.content.Context +import android.content.pm.PackageManager +import android.os.Build +import arrow.core.partially1 +import com.artemchep.keyguard.android.closestActivityOrNull +import com.artemchep.keyguard.common.service.permission.Permission +import com.artemchep.keyguard.common.service.permission.PermissionService +import com.artemchep.keyguard.common.service.permission.PermissionState +import com.artemchep.keyguard.common.util.flow.EventFlow +import com.artemchep.keyguard.platform.LeContext +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onStart +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PermissionServiceAndroid( + private val context: Context, +) : PermissionService { + companion object { + const val REQUEST_CODE = 12341 + } + + private val refreshSink = EventFlow() + + constructor( + directDI: DirectDI, + ) : this( + context = directDI.instance(), + ) + + override fun getState( + permission: Permission, + ): Flow { + val sdk = Build.VERSION.SDK_INT + if ( + sdk < permission.minSdk || + sdk > permission.maxSdk + ) { + val result = PermissionState.Granted + return MutableStateFlow(result) + } + + return refreshSink + .onStart { emit(Unit) } + .map { + // Check the status of the permission. + checkPermission(permission.permission) + } + } + + private fun checkPermission(permission: String): PermissionState { + val isGranted = context.checkSelfPermission(permission) == + PackageManager.PERMISSION_GRANTED + return if (isGranted) { + PermissionState.Granted + } else { + PermissionState.Declined( + ask = ::askPermission + .partially1(permission), + ) + } + } + + private fun askPermission( + permission: String, + context: LeContext, + ) { + val activity = context.context.closestActivityOrNull + ?: return + activity.requestPermissions( + arrayOf(permission), + REQUEST_CODE, + ) + } + + // Android + + fun refresh() { + refreshSink.emit(Unit) + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/PowerServiceAndroid.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/PowerServiceAndroid.kt new file mode 100644 index 00000000..7cc928c7 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/PowerServiceAndroid.kt @@ -0,0 +1,25 @@ +package com.artemchep.keyguard.copy + +import android.app.Application +import com.artemchep.keyguard.android.util.screenFlow +import com.artemchep.keyguard.common.service.power.PowerService +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.shareIn +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PowerServiceAndroid( + private val application: Application, +) : PowerService { + private val sharedFlow = screenFlow(application) + .shareIn(GlobalScope, SharingStarted.WhileSubscribed(5000L), replay = 1) + + constructor( + directDI: DirectDI, + ) : this( + application = directDI.instance(), + ) + + override fun getScreenState() = sharedFlow +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/QueueSyncAll.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/QueueSyncAll.kt new file mode 100644 index 00000000..a12102a5 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/QueueSyncAll.kt @@ -0,0 +1,27 @@ +package com.artemchep.keyguard.copy + +import android.app.Application +import android.content.Context +import com.artemchep.keyguard.android.worker.SyncWorker +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.usecase.QueueSyncAll +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class QueueSyncAllAndroid( + private val context: Context, +) : QueueSyncAll { + constructor(directDI: DirectDI) : this( + context = directDI.instance(), + ) + + override fun invoke(): IO = ioEffect { + SyncWorker.enqueueOnce( + context = context, + ) + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/QueueSyncById.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/QueueSyncById.kt new file mode 100644 index 00000000..8b72eb6a --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/QueueSyncById.kt @@ -0,0 +1,32 @@ +package com.artemchep.keyguard.copy + +import android.content.Context +import com.artemchep.keyguard.android.worker.SyncWorker +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.model.AccountId +import com.artemchep.keyguard.common.usecase.QueueSyncById +import org.kodein.di.DirectDI +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class QueueSyncByIdAndroid( + private val context: Context, +) : QueueSyncById { + constructor(directDI: DirectDI) : this( + context = directDI.instance(), + ) + + override fun invoke( + accountId: AccountId, + ): IO = ioEffect { + SyncWorker.enqueueOnce( + context = context, + accounts = setOf( + accountId, + ), + ) + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/ReviewServiceAndroid.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/ReviewServiceAndroid.kt new file mode 100644 index 00000000..9dcfb3f2 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/ReviewServiceAndroid.kt @@ -0,0 +1,55 @@ +package com.artemchep.keyguard.copy + +import android.app.Application +import android.content.Context +import com.artemchep.keyguard.android.closestActivityOrNull +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.service.review.ReviewService +import com.artemchep.keyguard.platform.LeContext +import com.google.android.gms.tasks.Task +import com.google.android.play.core.review.ReviewManagerFactory +import kotlinx.coroutines.Dispatchers +import org.kodein.di.DirectDI +import org.kodein.di.instance +import kotlin.coroutines.resume +import kotlin.coroutines.resumeWithException +import kotlin.coroutines.suspendCoroutine + +class ReviewServiceAndroid( + private val context: Context, +) : ReviewService { + private val reviewManager = ReviewManagerFactory.create(context.applicationContext) + + constructor( + directDI: DirectDI, + ) : this( + context = directDI.instance(), + ) + + override fun request( + context: LeContext, + ): IO = ioEffect(Dispatchers.Main) { + val activity = context.context.closestActivityOrNull + requireNotNull(activity) { + "Failed to find activity for App review." + } + + val reviewInfo = reviewManager + .requestReviewFlow() + .await() + reviewManager + .launchReviewFlow(activity, reviewInfo) + .await() + } +} + +private suspend fun Task.await() = suspendCoroutine { continuation -> + addOnCompleteListener { task -> + if (task.isSuccessful) { + continuation.resume(task.result as T) + } else { + continuation.resumeWithException(task.exception!!) + } + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/SharedPreferencesStoreFactory.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/SharedPreferencesStoreFactory.kt new file mode 100644 index 00000000..462d3678 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/SharedPreferencesStoreFactory.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.copy + +import com.artemchep.keyguard.common.service.Files +import com.artemchep.keyguard.common.service.keyvalue.KeyValueStore +import org.kodein.di.DI + +/** + * @author Artem Chepurnyi + */ +interface SharedPreferencesStoreFactory { + fun getStore(di: DI, key: Files): KeyValueStore +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/SharedPreferencesStoreFactoryDefault.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/SharedPreferencesStoreFactoryDefault.kt new file mode 100644 index 00000000..524b0577 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/SharedPreferencesStoreFactoryDefault.kt @@ -0,0 +1,18 @@ +package com.artemchep.keyguard.copy + +import com.artemchep.keyguard.common.service.Files +import com.artemchep.keyguard.common.service.keyvalue.KeyValueStore +import org.kodein.di.DI +import org.kodein.di.direct +import org.kodein.di.instance + +/** + * @author Artem Chepurnyi + */ +class SharedPreferencesStoreFactoryDefault : SharedPreferencesStoreFactory { + override fun getStore(di: DI, key: Files): KeyValueStore = + di.direct.instance( + tag = "proto", // default to secure preferences + arg = key, + ) +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/SubscriptionServiceAndroid.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/SubscriptionServiceAndroid.kt new file mode 100644 index 00000000..65d0c090 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/SubscriptionServiceAndroid.kt @@ -0,0 +1,231 @@ +package com.artemchep.keyguard.copy + +import android.app.Activity +import com.android.billingclient.api.AcknowledgePurchaseParams +import com.android.billingclient.api.BillingClient.SkuType +import com.android.billingclient.api.BillingFlowParams +import com.android.billingclient.api.Purchase +import com.android.billingclient.api.SkuDetailsParams +import com.artemchep.keyguard.android.closestActivityOrNull +import com.artemchep.keyguard.billing.BillingConnection +import com.artemchep.keyguard.billing.BillingManager +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.attempt +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.io.timeout +import com.artemchep.keyguard.common.io.toIO +import com.artemchep.keyguard.common.model.Product +import com.artemchep.keyguard.common.model.RichResult +import com.artemchep.keyguard.common.model.Subscription +import com.artemchep.keyguard.common.model.combine +import com.artemchep.keyguard.common.model.map +import com.artemchep.keyguard.common.model.orNull +import com.artemchep.keyguard.common.service.subscription.SubscriptionService +import com.artemchep.keyguard.feature.crashlytics.crashlyticsTap +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.filter +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.mapNotNull +import kotlinx.coroutines.flow.onEach +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class SubscriptionServiceAndroid( + private val billingManager: BillingManager, +) : SubscriptionService { + companion object { + private val SkuListSubscription = listOf( + "premium", + "premium_3m", + ) + + private val SkuListProduct = listOf( + "premium_lifetime", + ) + } + + constructor( + directDI: DirectDI, + ) : this( + billingManager = directDI.instance(), + ) + + override fun purchased(): Flow> = getReceiptFlow() + .map { receiptsResult -> + receiptsResult.map { receipts -> + receipts.any { + val isSubscription = it.skus.intersect(SkuListSubscription).isNotEmpty() + val isProduct = it.skus.intersect(SkuListProduct).isNotEmpty() + isSubscription || isProduct + } + } + } + + override fun subscriptions(): Flow?> = combine( + getReceiptFlow() + .filter { it !is RichResult.Loading }, + getSkuDetailsFlow(SkuType.SUBS) + .filter { it !is RichResult.Loading }, + ) { receiptsResult, skuDetailsResult -> + val receipts = receiptsResult.orNull() + val skuDetails = skuDetailsResult.orNull() + + skuDetails?.map { + val status = kotlin.run { + val skuReceipt = receipts?.firstOrNull { purchase -> it.sku in purchase.skus } + ?: return@run Subscription.Status.Inactive + Subscription.Status.Active( + willRenew = skuReceipt.isAutoRenewing, + ) + } + Subscription( + id = it.sku, + title = it.title, + description = it.description, + price = it.price, + status = status, + purchase = { context -> + val activity = context.context.closestActivityOrNull + ?: return@Subscription + val params = BillingFlowParams.newBuilder() + .run { + val existingPurchase = receipts + ?.firstOrNull { + SkuListSubscription.intersect(it.skus) + .isNotEmpty() + } + if (existingPurchase != null && it.sku !in existingPurchase.skus) { + val params = BillingFlowParams.SubscriptionUpdateParams + .newBuilder() + .setOldSkuPurchaseToken(existingPurchase.purchaseToken) + .build() + setSubscriptionUpdateParams(params) + } else { + this + } + } + .setSkuDetails(it) + .build() + purchase(activity, params) + .crashlyticsTap() + .attempt() + .launchIn(GlobalScope) + }, + ) + } + } + + override fun products(): Flow?> = combine( + getReceiptFlow() + .filter { it !is RichResult.Loading }, + getSkuDetailsFlow(SkuType.INAPP) + .filter { it !is RichResult.Loading }, + ) { receiptsResult, skuDetailsResult -> + val receipts = receiptsResult.orNull() + val skuDetails = skuDetailsResult.orNull() + + skuDetails?.map { + val status = kotlin.run { + receipts?.firstOrNull { purchase -> it.sku in purchase.skus } + ?: return@run Product.Status.Inactive + Product.Status.Active + } + Product( + id = it.sku, + title = it.title, + description = it.description, + price = it.price, + status = status, + purchase = { context -> + val activity = context.context.closestActivityOrNull + ?: return@Product + val params = BillingFlowParams.newBuilder() + .setSkuDetails(it) + .build() + purchase(activity, params) + .crashlyticsTap() + .attempt() + .launchIn(GlobalScope) + }, + ) + } + } + + private fun purchase( + activity: Activity, + params: BillingFlowParams, + ): IO = billingManager + .billingConnectionFlow + .flatMapLatest { connection -> + connection + .clientLiveFlow + .mapNotNull { result -> + result.orNull() + } + } + .toIO() + .timeout(1000L) + // Launch the purchase dialog using + // obtained billing client. + .effectMap(Dispatchers.Main) { client -> + client.launchBillingFlow(activity, params) + } + + private fun getReceiptFlow() = billingManager + .billingConnectionFlow + .flatMapLatest { connection -> + val subscriptionsFlow = connection + .purchasesFlow(SkuType.SUBS) + .onEachAcknowledge(connection) + val productsFlow = connection + .purchasesFlow(SkuType.INAPP) + .onEachAcknowledge(connection) + combine( + subscriptionsFlow, + productsFlow, + ) { subscriptions, products -> + subscriptions.combine(products) + } + } + + private fun Flow>>.onEachAcknowledge( + connection: BillingConnection, + ) = this + .onEach { + val purchases = it.orNull() + ?: return@onEach + purchases.acknowledge(connection) + } + + private fun List.acknowledge( + connection: BillingConnection, + ) = this + .filter { !it.isAcknowledged } + .forEach { purchase -> + val acknowledgePurchaseParams = AcknowledgePurchaseParams.newBuilder() + .setPurchaseToken(purchase.purchaseToken) + .build() + connection.acknowledgePurchase(acknowledgePurchaseParams) + } + + private fun getSkuDetailsFlow(skuType: String) = billingManager + .billingConnectionFlow + .flatMapLatest { connection -> + val skusList = when (skuType) { + SkuType.SUBS -> SkuListSubscription + SkuType.INAPP -> SkuListProduct + else -> error("Unknown SKU type!") + } + + val skuDetailsParams = SkuDetailsParams.newBuilder() + .setType(skuType) + .setSkusList(skusList) + .build() + connection.skuDetailsFlow(skuDetailsParams) + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/TextServiceAndroid.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/TextServiceAndroid.kt new file mode 100644 index 00000000..99a7c5d6 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/copy/TextServiceAndroid.kt @@ -0,0 +1,26 @@ +package com.artemchep.keyguard.copy + +import android.app.Application +import android.content.Context +import com.artemchep.keyguard.common.service.text.TextService +import dev.icerock.moko.resources.FileResource +import org.kodein.di.DirectDI +import org.kodein.di.instance +import java.io.InputStream + +class TextServiceAndroid( + private val context: Context, +) : TextService { + constructor( + directDI: DirectDI, + ) : this( + context = directDI.instance(), + ) + + override fun readFromResources( + fileResource: FileResource, + ): InputStream = fileResource.inputStream() + + private fun FileResource.inputStream() = context.resources + .openRawResource(rawResId) +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/core/session/FingerprintRepositoryModule.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/core/session/FingerprintRepositoryModule.kt new file mode 100644 index 00000000..e113767e --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/core/session/FingerprintRepositoryModule.kt @@ -0,0 +1,257 @@ +package com.artemchep.keyguard.core.session + +import android.app.Application +import android.content.Context +import android.content.pm.PackageManager +import android.util.Log +import com.artemchep.keyguard.android.downloader.DownloadClientAndroid +import com.artemchep.keyguard.android.downloader.DownloadManagerImpl +import com.artemchep.keyguard.android.downloader.journal.DownloadRepository +import com.artemchep.keyguard.android.downloader.journal.DownloadRepositoryImpl +import com.artemchep.keyguard.android.downloader.journal.room.DownloadDatabaseManager +import com.artemchep.keyguard.common.service.Files +import com.artemchep.keyguard.common.service.autofill.AutofillService +import com.artemchep.keyguard.common.service.clipboard.ClipboardService +import com.artemchep.keyguard.common.service.connectivity.ConnectivityService +import com.artemchep.keyguard.common.service.download.DownloadManager +import com.artemchep.keyguard.common.service.keyvalue.KeyValueStore +import com.artemchep.keyguard.common.service.logging.LogRepository +import com.artemchep.keyguard.common.service.permission.PermissionService +import com.artemchep.keyguard.common.service.power.PowerService +import com.artemchep.keyguard.common.service.review.ReviewService +import com.artemchep.keyguard.common.service.subscription.SubscriptionService +import com.artemchep.keyguard.common.service.text.TextService +import com.artemchep.keyguard.common.usecase.BiometricStatusUseCase +import com.artemchep.keyguard.common.usecase.CleanUpAttachment +import com.artemchep.keyguard.common.usecase.ClearData +import com.artemchep.keyguard.common.usecase.DisableBiometric +import com.artemchep.keyguard.common.usecase.EnableBiometric +import com.artemchep.keyguard.common.usecase.GetBarcodeImage +import com.artemchep.keyguard.common.usecase.GetBiometricRemainingDuration +import com.artemchep.keyguard.common.usecase.GetLocale +import com.artemchep.keyguard.common.usecase.GetPurchased +import com.artemchep.keyguard.common.usecase.GetSuggestions +import com.artemchep.keyguard.common.usecase.PutLocale +import com.artemchep.keyguard.common.usecase.impl.CleanUpAttachmentImpl +import com.artemchep.keyguard.common.usecase.impl.DisableBiometricImpl +import com.artemchep.keyguard.common.usecase.impl.EnableBiometricImpl +import com.artemchep.keyguard.common.usecase.impl.GetBiometricRemainingDurationImpl +import com.artemchep.keyguard.common.usecase.impl.GetPurchasedImpl +import com.artemchep.keyguard.common.usecase.impl.GetSuggestionsImpl +import com.artemchep.keyguard.copy.AutofillServiceAndroid +import com.artemchep.keyguard.copy.ClearDataAndroid +import com.artemchep.keyguard.copy.ClipboardServiceAndroid +import com.artemchep.keyguard.copy.ConnectivityServiceAndroid +import com.artemchep.keyguard.copy.GetBarcodeImageJvm +import com.artemchep.keyguard.copy.LinkInfoExtractorAndroid +import com.artemchep.keyguard.copy.LinkInfoExtractorExecute +import com.artemchep.keyguard.copy.LinkInfoExtractorLaunch +import com.artemchep.keyguard.copy.LogRepositoryAndroid +import com.artemchep.keyguard.copy.PermissionServiceAndroid +import com.artemchep.keyguard.copy.PowerServiceAndroid +import com.artemchep.keyguard.copy.ReviewServiceAndroid +import com.artemchep.keyguard.copy.SharedPreferencesStoreFactory +import com.artemchep.keyguard.copy.SharedPreferencesStoreFactoryDefault +import com.artemchep.keyguard.copy.SubscriptionServiceAndroid +import com.artemchep.keyguard.copy.TextServiceAndroid +import com.artemchep.keyguard.core.session.usecase.BiometricStatusUseCaseImpl +import com.artemchep.keyguard.core.session.usecase.GetLocaleAndroid +import com.artemchep.keyguard.core.session.usecase.PutLocaleAndroid +import com.artemchep.keyguard.di.globalModuleJvm +import com.artemchep.keyguard.platform.LeContext +import com.artemchep.keyguard.platform.util.isRelease +import db_key_value.crypto_prefs.SecurePrefKeyValueStore +import db_key_value.shared_prefs.SharedPrefsKeyValueStore +import io.ktor.client.HttpClient +import io.ktor.client.engine.okhttp.OkHttp +import io.ktor.client.plugins.HttpRequestRetry +import io.ktor.client.plugins.UserAgent +import io.ktor.client.plugins.cache.HttpCache +import io.ktor.client.plugins.contentnegotiation.ContentNegotiation +import io.ktor.client.plugins.logging.LogLevel +import io.ktor.client.plugins.logging.Logging +import io.ktor.client.plugins.websocket.WebSockets +import io.ktor.http.ContentType +import io.ktor.http.HttpStatusCode +import io.ktor.serialization.kotlinx.KotlinxSerializationConverter +import kotlinx.serialization.json.Json +import okhttp3.OkHttpClient +import okhttp3.logging.HttpLoggingInterceptor +import org.kodein.di.DI +import org.kodein.di.bind +import org.kodein.di.bindProvider +import org.kodein.di.bindSingleton +import org.kodein.di.factory +import org.kodein.di.instance +import org.kodein.di.multiton + +fun diFingerprintRepositoryModule() = DI.Module( + name = "com.artemchep.keyguard.core.session.repository::FingerprintRepository", +) { + import(globalModuleJvm()) + + bindProvider() { + val context: Context = instance() + LeContext(context) + } + bindSingleton { + BiometricStatusUseCaseImpl( + directDI = this, + ) + } + bindSingleton { + GetBarcodeImageJvm( + directDI = this, + ) + } + + bindSingleton { + GetBiometricRemainingDurationImpl( + directDI = this, + ) + } + bindSingleton { + DisableBiometricImpl( + directDI = this, + ) + } + bindSingleton { + EnableBiometricImpl( + directDI = this, + ) + } + + + bindSingleton { + GetLocaleAndroid( + directDI = this, + ) + } + bindSingleton { + PutLocaleAndroid( + directDI = this, + ) + } + bindSingleton> { + GetSuggestionsImpl( + directDI = this, + ) + } + bindSingleton { + GetPurchasedImpl( + directDI = this, + ) + } + + + bindSingleton { + CleanUpAttachmentImpl( + directDI = this, + ) + } +// bindSingleton { +// CleanUpDownloadImpl( +// directDI = this, +// ) +// } + bindSingleton { + ClipboardServiceAndroid(this) + } + bindSingleton { + ConnectivityServiceAndroid(this) + } + bindSingleton { + PowerServiceAndroid(this) + } + bindSingleton { + PermissionServiceAndroid(this) + } + bindProvider { + instance() + } + bindSingleton { + LinkInfoExtractorAndroid( + packageManager = instance(), + ) + } + bindSingleton { + LinkInfoExtractorLaunch( + packageManager = instance(), + ) + } + bindSingleton { + LinkInfoExtractorExecute() + } + bindSingleton { + TextServiceAndroid( + directDI = this, + ) + } + bindSingleton { + ReviewServiceAndroid( + directDI = this, + ) + } + bindProvider { + instance().packageManager + } + bindSingleton { + DownloadClientAndroid( + directDI = this, + ) + } + bindSingleton { + DownloadManagerImpl( + directDI = this, + ) + } + bindSingleton { + DownloadRepositoryImpl( + directDI = this, + ) + } + bindSingleton { + AutofillServiceAndroid( + directDI = this, + ) + } + bindSingleton { + SubscriptionServiceAndroid( + directDI = this, + ) + } + bindSingleton { + ClearDataAndroid( + directDI = this, + ) + } + bind() with factory { key: Files -> + val factory = instance() + factory.getStore(di, key) + } + bind("proto") with multiton { file: Files -> + SecurePrefKeyValueStore( + context = instance(), + file = file.filename, + ) + } + bind("shared") with multiton { file: Files -> + SharedPrefsKeyValueStore( + context = instance(), + file = file.filename, + ) + } + bindSingleton { + SharedPreferencesStoreFactoryDefault() + } + bindSingleton { + DownloadDatabaseManager( + applicationContext = instance(), + name = "download", + deviceEncryptionKeyUseCase = instance(), + ) + } + bindSingleton { + LogRepositoryAndroid() + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/core/session/usecase/GetLocaleImpl.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/core/session/usecase/GetLocaleImpl.kt new file mode 100644 index 00000000..cd280fb8 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/core/session/usecase/GetLocaleImpl.kt @@ -0,0 +1,29 @@ +package com.artemchep.keyguard.core.session.usecase + +import androidx.appcompat.app.AppCompatDelegate +import com.artemchep.keyguard.common.service.settings.SettingsReadRepository +import com.artemchep.keyguard.common.usecase.GetLocale +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flow +import kotlinx.coroutines.flow.flowOn +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class GetLocaleAndroid( + settingsReadRepository: SettingsReadRepository, +) : GetLocale { + constructor(directDI: DirectDI) : this( + settingsReadRepository = directDI.instance(), + ) + + override fun invoke(): Flow = flow { + val localeList = AppCompatDelegate.getApplicationLocales() + val l = (0 until localeList.size()) + .map { localeList[it] } + .firstOrNull() + ?.language + emit(l) + } + .flowOn(Dispatchers.Main) +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/core/session/usecase/GetLocaleVariantsImpl.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/core/session/usecase/GetLocaleVariantsImpl.kt new file mode 100644 index 00000000..e2502284 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/core/session/usecase/GetLocaleVariantsImpl.kt @@ -0,0 +1,40 @@ +package com.artemchep.keyguard.core.session.usecase + +import androidx.appcompat.app.AppCompatDelegate +import androidx.core.os.LocaleListCompat +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.shared +import com.artemchep.keyguard.common.usecase.GetLocaleVariants +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.asFlow +import org.kodein.di.DirectDI + +class GetLocaleVariantsAndroid() : GetLocaleVariants { + constructor(directDI: DirectDI) : this() + + private val sharedFlow = ioEffect(Dispatchers.Main) { + val locales = mutableListOf() + locales += null + locales += "test" + locales += getLocales() + locales + } + .shared() + .asFlow() + + override fun invoke(): Flow> = sharedFlow + + private fun getLocales(): List { + val locales = kotlin.run { + val method = AppCompatDelegate::class.java.getDeclaredMethod( + "getStoredAppLocales", + ) + method.isAccessible = true + method.invoke(null) as LocaleListCompat + } + return (0 until locales.size()) + .mapNotNull { index -> locales[index] } + .map { it.language } + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/core/session/usecase/KEY_ALIAS.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/core/session/usecase/KEY_ALIAS.kt new file mode 100644 index 00000000..c98420ec --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/core/session/usecase/KEY_ALIAS.kt @@ -0,0 +1,105 @@ +package com.artemchep.keyguard.core.session.usecase + +import android.app.Application +import android.security.keystore.KeyGenParameterSpec +import android.security.keystore.KeyProperties +import androidx.biometric.BiometricManager +import androidx.biometric.BiometricManager.Authenticators.BIOMETRIC_STRONG +import com.artemchep.keyguard.common.model.BiometricPurpose +import com.artemchep.keyguard.common.model.BiometricStatus +import com.artemchep.keyguard.common.usecase.BiometricStatusUseCase +import kotlinx.coroutines.flow.MutableStateFlow +import org.kodein.di.DirectDI +import org.kodein.di.instance +import java.security.KeyStore +import javax.crypto.Cipher +import javax.crypto.KeyGenerator +import javax.crypto.SecretKey +import javax.crypto.spec.IvParameterSpec + +private const val KEY_ALIAS = "biometrics" + +class BiometricStatusUseCaseImpl( + private val application: Application, +) : BiometricStatusUseCase { + constructor(directDI: DirectDI) : this( + application = directDI.instance(), + ) + + override fun invoke() = kotlin.run { + val state = kotlin.run { + val hasStrongBiometric = hasStrongBiometric() + if (hasStrongBiometric) { + BiometricStatus.Available( + createCipher = ::createCipher, + deleteCipher = ::deleteCipher, + ) + } else { + BiometricStatus.Unavailable + } + } + MutableStateFlow(state) + } + + private fun hasStrongBiometric(): Boolean { + val biometricManager = BiometricManager.from(application) + return biometricManager.canAuthenticate(BIOMETRIC_STRONG) == BiometricManager.BIOMETRIC_SUCCESS + } +} + +private fun getSecretKeyStore(): KeyStore { + val keyStore = KeyStore.getInstance("AndroidKeyStore") + // Before the keystore can be accessed, + // it must be loaded... + keyStore.load(null) + return keyStore +} + +private fun getSecretKey(): SecretKey { + val keyStore = getSecretKeyStore() + // ...if the key already exists, then there's no need + // to regenerate that. + val existingKey = keyStore.getKey(KEY_ALIAS, null) + if (existingKey != null) { + return existingKey as SecretKey + } + + val keyPurpose = KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT + val keySpec = KeyGenParameterSpec.Builder(KEY_ALIAS, keyPurpose) + .setBlockModes(KeyProperties.BLOCK_MODE_CBC) + .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE) + .setUserAuthenticationRequired(true) + .build() + + val keyGenerator = KeyGenerator + .getInstance(KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore") + keyGenerator.init(keySpec) + return keyGenerator.generateKey() as SecretKey +} + +private fun deleteCipher() { + val keyStore = getSecretKeyStore() + keyStore.deleteEntry(KEY_ALIAS) +} + +private fun createCipher( + biometricPurpose: BiometricPurpose, +): Cipher = createEmptyCipher().apply { + val key = getSecretKey() + when (biometricPurpose) { + // Init cipher in encrypt mode with random iv + // seed. The user should persist iv for future use. + is BiometricPurpose.Encrypt -> init(Cipher.ENCRYPT_MODE, key) + is BiometricPurpose.Decrypt -> { + val spec = IvParameterSpec(biometricPurpose.iv.byteArray) + init(Cipher.DECRYPT_MODE, key, spec) + } + } +} + +private fun createEmptyCipher(): Cipher = Cipher + .getInstance( + KeyProperties.KEY_ALGORITHM_AES + "/" + + KeyProperties.BLOCK_MODE_CBC + "/" + + KeyProperties.ENCRYPTION_PADDING_NONE, + ) diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/core/session/usecase/PutLocaleImpl.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/core/session/usecase/PutLocaleImpl.kt new file mode 100644 index 00000000..4c339261 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/core/session/usecase/PutLocaleImpl.kt @@ -0,0 +1,28 @@ +package com.artemchep.keyguard.core.session.usecase + +import androidx.appcompat.app.AppCompatDelegate +import androidx.core.os.LocaleListCompat +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.service.settings.SettingsReadWriteRepository +import com.artemchep.keyguard.common.usecase.PutLocale +import kotlinx.coroutines.Dispatchers +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class PutLocaleAndroid( + private val settingsReadWriteRepository: SettingsReadWriteRepository, +) : PutLocale { + constructor(directDI: DirectDI) : this( + settingsReadWriteRepository = directDI.instance(), + ) + + override fun invoke(locale: String?): IO = ioEffect(Dispatchers.Main) { + val locales = if (locale != null) { + LocaleListCompat.forLanguageTags(locale) + } else { + LocaleListCompat.create() + } + AppCompatDelegate.setApplicationLocales(locales) + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/core/session/usecase/createSubDi.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/core/session/usecase/createSubDi.kt new file mode 100644 index 00000000..5e5b6258 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/core/session/usecase/createSubDi.kt @@ -0,0 +1,129 @@ +package com.artemchep.keyguard.core.session.usecase + +import android.app.Application +import android.content.Context +import androidx.sqlite.db.SupportSQLiteDatabase +import androidx.sqlite.db.SupportSQLiteOpenHelper +import app.cash.sqldelight.db.SqlDriver +import app.cash.sqldelight.driver.android.AndroidSqliteDriver +import com.artemchep.keyguard.android.downloader.journal.room.DownloadDatabaseManager +import com.artemchep.keyguard.common.NotificationsWorker +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.flatMap +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.model.MasterKey +import com.artemchep.keyguard.common.usecase.QueueSyncAll +import com.artemchep.keyguard.common.usecase.QueueSyncById +import com.artemchep.keyguard.copy.QueueSyncAllAndroid +import com.artemchep.keyguard.copy.QueueSyncByIdAndroid +import com.artemchep.keyguard.core.store.DatabaseManager +import com.artemchep.keyguard.core.store.DatabaseManagerAndroid +import com.artemchep.keyguard.core.store.DatabaseManagerImpl +import com.artemchep.keyguard.core.store.SqlHelper +import com.artemchep.keyguard.core.store.SqlManager +import com.artemchep.keyguard.data.Database +import com.artemchep.keyguard.feature.crashlytics.crashlyticsTap +import com.artemchep.keyguard.provider.bitwarden.usecase.NotificationsImpl +import com.artemchep.keyguard.room.RoomMigrationException +import net.zetetic.database.sqlcipher.SQLiteDatabase +import net.zetetic.database.sqlcipher.SupportOpenHelperFactory +import org.kodein.di.DI +import org.kodein.di.bindSingleton +import org.kodein.di.instance + +actual fun DI.Builder.createSubDi( + masterKey: MasterKey, +) { + createSubDi2(masterKey) + + bindSingleton { + QueueSyncAllAndroid(this) + } + bindSingleton { + QueueSyncByIdAndroid(this) + } + + bindSingleton { + NotificationsImpl(this) + } + bindSingleton { + val downloadDb = instance() + val roomDb = DatabaseManagerAndroid( + applicationContext = instance(), + json = instance(), + name = "database", + masterKey = masterKey, + ) + val sqlManager: SqlManager = SqlManagerFile2( + context = instance(), + onCreate = { database -> + roomDb + .migrateIfExists(database) + .flatMap { + downloadDb.migrateIfExists(database) + } + // Log this exception, it's important to see how the migration + // process goes. It's okay if it fails, but not great. + .crashlyticsTap { e -> + RoomMigrationException(e) + } + }, + ) + + DatabaseManagerImpl( + logRepository = instance(), + json = instance(), + masterKey = masterKey, + sqlManager = sqlManager, + ) + } +} + +class SqlManagerFile2( + private val context: Context, + private val onCreate: (Database) -> IO, +) : SqlManager { + override fun create( + masterKey: MasterKey, + databaseFactory: (SqlDriver) -> Database, + ): IO = ioEffect { + // Create encrypted database using the provided master key. If the + // key is incorrect, trying to open the database would lead to a crash. + val factory = SupportOpenHelperFactory(masterKey.byteArray, null, false) + val openHelper = factory.create( + SupportSQLiteOpenHelper.Configuration.builder(context) + .callback(Callback()) + .name("database_v2") + .noBackupDirectory(true) + .build(), + ) + val driver: SqlDriver = AndroidSqliteDriver(openHelper) + val database = databaseFactory(driver) + onCreate(database) + .bind() + Helper( + driver = driver, + database = database, + sqliteOpenHelper = openHelper, + ) + } + + private class Callback : AndroidSqliteDriver.Callback(Database.Schema) { + override fun onConfigure(db: SupportSQLiteDatabase) { + super.onConfigure(db) + db.setForeignKeyConstraintsEnabled(true) + } + } + + private class Helper( + override val driver: SqlDriver, + override val database: Database, + private val sqliteOpenHelper: SupportSQLiteOpenHelper, + ) : SqlHelper { + override fun changePassword(newMasterKey: MasterKey): IO = ioEffect { + val cipherDb = sqliteOpenHelper.writableDatabase as SQLiteDatabase + cipherDb.changePassword(newMasterKey.byteArray) + } + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/core/store/DatabaseManager.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/core/store/DatabaseManager.kt new file mode 100644 index 00000000..9310a74b --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/core/store/DatabaseManager.kt @@ -0,0 +1,311 @@ +package com.artemchep.keyguard.core.store + +import android.content.Context +import android.database.SQLException +import android.util.Log +import androidx.room.Room +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.bind +import com.artemchep.keyguard.common.io.effectMap +import com.artemchep.keyguard.common.io.io +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.retry +import com.artemchep.keyguard.common.io.shared +import com.artemchep.keyguard.common.model.CipherHistoryType +import com.artemchep.keyguard.common.model.MasterKey +import com.artemchep.keyguard.data.Database +import com.artemchep.keyguard.room.AppDatabase +import com.artemchep.keyguard.room.RoomSecretConverter +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.sync.Mutex +import kotlinx.datetime.Clock +import kotlinx.datetime.Instant +import kotlinx.serialization.json.Json +import net.zetetic.database.sqlcipher.SupportOpenHelperFactory + +class DatabaseManagerAndroid( + private val applicationContext: Context, + private val json: Json, + private val name: String, + masterKey: MasterKey, +) { + companion object { + private const val TAG = "DatabaseManager" + + private val mutex = Mutex() + } + + private val dbFileIo = ioEffect { applicationContext.getDatabasePath(name) } + .shared() + + private val dbIo = io(masterKey) + .effectMap { masterKey -> + val databaseFile = dbFileIo + .bind() + if (!databaseFile.exists()) { + return@effectMap null + } + // Create encrypted database using the provided master key. If the + // key is incorrect, trying to open the database would lead to a crash. + val factory = SupportOpenHelperFactory(masterKey.byteArray, null, false) + Room + .databaseBuilder( + applicationContext, + AppDatabase::class.java, + name, + ) + .openHelperFactory(factory) + .addTypeConverter(RoomSecretConverter(json)) + .build() + } + .retry { e, attempt -> + e.printStackTrace() + if (e is SQLException && attempt == 0) { + applicationContext.deleteDatabase(name) + return@retry true + } + + false + } + .shared() + + fun migrateIfExists( + sqld: Database, + ): IO = ioEffect(Dispatchers.IO) { + val room = dbIo.bind() + // Nothing to migrate. + ?: return@ioEffect + + // account + MigrationLogger.log("Account") { + val accounts = room.accountDao().getAll().first() + sqld.transaction { + val accountIds = sqld.accountQueries + .getIds() + .executeAsList() + .toSet() + accounts.forEach { account -> + if (account.accountId in accountIds) { + ignored() + return@forEach + } + sqld.accountQueries.insert( + accountId = account.accountId, + data = account.content, + ) + changed() + } + } + } + // profile + MigrationLogger.log("Profile") { + val profiles = room.profileDao().getAll().first() + sqld.transaction { + val profileIds = sqld.profileQueries + .getIds() + .executeAsList() + .toSet() + profiles.forEach { profile -> + if (profile.profileId in profileIds) { + ignored() + return@forEach + } + sqld.profileQueries.insert( + profileId = profile.profileId, + accountId = profile.accountId, + data = profile.content, + ) + changed() + } + } + } + // meta + MigrationLogger.log("Meta") { + val metas = room.metaDao().getAll().first() + sqld.transaction { + val accountIds = sqld.metaQueries + .getIds() + .executeAsList() + .toSet() + metas.forEach { meta -> + if (meta.accountId in accountIds) { + ignored() + return@forEach + } + sqld.metaQueries.insert( + accountId = meta.accountId, + data = meta.content, + ) + changed() + } + } + } + // folder + MigrationLogger.log("Folder") { + val folders = room.folderDao().getAll().first() + sqld.transaction { + val folderIds = sqld.folderQueries + .getIds() + .executeAsList() + .toSet() + folders.forEach { folder -> + if (folder.folderId in folderIds) { + ignored() + return@forEach + } + sqld.folderQueries.insert( + folderId = folder.folderId, + accountId = folder.accountId, + data = folder.content, + ) + changed() + } + } + } + // org + MigrationLogger.log("Organization") { + val orgs = room.organizationDao().getAll().first() + sqld.transaction { + val organizationIds = sqld.organizationQueries + .getIds() + .executeAsList() + .toSet() + orgs.forEach { org -> + if (org.organizationId in organizationIds) { + ignored() + return@forEach + } + sqld.organizationQueries.insert( + organizationId = org.organizationId, + accountId = org.accountId, + data = org.content, + ) + changed() + } + } + } + // collection + MigrationLogger.log("Collection") { + val collections = room.collectionDao().getAll().first() + sqld.transaction { + val collectionIds = sqld.collectionQueries + .getIds() + .executeAsList() + .toSet() + collections.forEach { collection -> + if (collection.collectionId in collectionIds) { + ignored() + return@forEach + } + sqld.collectionQueries.insert( + collectionId = collection.collectionId, + accountId = collection.accountId, + data = collection.content, + ) + changed() + } + } + } + // cipher + MigrationLogger.log("Cipher") { + val ciphers = room.cipherDao().getAll().first() + sqld.transaction { + val cipherIds = sqld.cipherQueries + .getIds() + .executeAsList() + .toSet() + ciphers.forEach { cipher -> + if (cipher.itemId in cipherIds) { + ignored() + return@forEach + } + sqld.cipherQueries.insert( + cipherId = cipher.itemId, + accountId = cipher.accountId, + folderId = cipher.folderId, + data = cipher.content, + ) + changed() + } + } + } + // history + MigrationLogger.log("History") { + val openCiphers = room.openCipherHistoryDao().getAll().first() + val fillCiphers = room.fillCipherHistoryDao().getAll().first() + sqld.transaction { + val hasExistingHistory = sqld.cipherUsageHistoryQueries + .get(1) + .executeAsList() + .isNotEmpty() + if (hasExistingHistory) { + return@transaction + } + + openCiphers.forEach { openCipher -> + sqld.cipherUsageHistoryQueries.insert( + cipherId = openCipher.itemId, + credentialId = null, + createdAt = openCipher.timestamp + .let(Instant::fromEpochMilliseconds), + type = CipherHistoryType.OPENED, + ) + changed() + } + fillCiphers.forEach { fillCipher -> + sqld.cipherUsageHistoryQueries.insert( + cipherId = fillCipher.itemId, + credentialId = null, + createdAt = fillCipher.timestamp + .let(Instant::fromEpochMilliseconds), + type = CipherHistoryType.USED_AUTOFILL, + ) + changed() + } + } + } + + val dbFile = dbFileIo.bind() + dbFile.delete() + } + + private class MigrationLogger( + private val tag: String, + ) : MigrationLoggerScope { + companion object { + suspend fun log( + tag: String, + block: suspend MigrationLoggerScope.() -> Unit, + ) { + val logger = MigrationLogger(tag) + block(logger) + logger.flush() + } + } + + private val now = Clock.System.now() + + var changed = 0 + var ignored = 0 + + override fun changed() { + changed += 1 + } + + override fun ignored() { + ignored += 1 + } + + fun flush() { + val dt = Clock.System.now() - now + Log.i("MigrationLogger", "$tag: Changed $changed, ignored $ignored! It took $dt.") + } + } + + interface MigrationLoggerScope { + fun changed() + + fun ignored() + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/apppicker/AppPickerRoute.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/apppicker/AppPickerRoute.kt new file mode 100644 index 00000000..4df3a9a5 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/apppicker/AppPickerRoute.kt @@ -0,0 +1,16 @@ +package com.artemchep.keyguard.feature.apppicker + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.RouteForResult +import com.artemchep.keyguard.feature.navigation.RouteResultTransmitter + +actual object AppPickerRoute : RouteForResult { + @Composable + override fun Content( + transmitter: RouteResultTransmitter, + ) { + AppPickerScreen( + transmitter = transmitter, + ) + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/apppicker/AppPickerScreen.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/apppicker/AppPickerScreen.kt new file mode 100644 index 00000000..880e2d12 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/apppicker/AppPickerScreen.kt @@ -0,0 +1,280 @@ +package com.artemchep.keyguard.feature.apppicker + +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.lazy.LazyListState +import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.pullrefresh.pullRefresh +import androidx.compose.material.pullrefresh.rememberPullRefreshState +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.LocalAbsoluteTonalElevation +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.remember +import androidx.compose.runtime.snapshotFlow +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.model.flatMap +import com.artemchep.keyguard.common.model.getOrNull +import com.artemchep.keyguard.feature.EmptySearchView +import com.artemchep.keyguard.feature.ErrorView +import com.artemchep.keyguard.feature.favicon.FaviconImage +import com.artemchep.keyguard.feature.home.vault.component.SearchTextField +import com.artemchep.keyguard.feature.home.vault.component.surfaceColorAtElevation +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.feature.navigation.RouteResultTransmitter +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.DefaultProgressBar +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.ScaffoldLazyColumn +import com.artemchep.keyguard.ui.focus.FocusRequester2 +import com.artemchep.keyguard.ui.focus.focusRequester2 +import com.artemchep.keyguard.ui.pulltosearch.PullToSearch +import com.artemchep.keyguard.ui.skeleton.SkeletonItem +import com.artemchep.keyguard.ui.toolbar.CustomToolbar +import com.artemchep.keyguard.ui.toolbar.content.CustomToolbarContent +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.filter +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.withIndex + +@Composable +fun AppPickerScreen( + transmitter: RouteResultTransmitter, +) { + val loadableState = produceAppPickerState( + transmitter = transmitter, + ) + ChangePasswordScreen( + loadableState = loadableState, + ) +} + +@OptIn(ExperimentalMaterial3Api::class, ExperimentalFoundationApi::class) +@Composable +fun ChangePasswordScreen( + loadableState: Loadable, +) { + val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior() + val filterState = run { + val filterFlow = loadableState.getOrNull()?.filter + remember(filterFlow) { + filterFlow ?: MutableStateFlow(null) + }.collectAsState() + } + + val listRevision = + loadableState.getOrNull()?.content?.getOrNull()?.getOrNull()?.revision + val listState = remember { + LazyListState( + firstVisibleItemIndex = 0, + firstVisibleItemScrollOffset = 0, + ) + } + + LaunchedEffect(listRevision) { + // TODO: How do you wait till the layout state start to represent + // the actual data? + val listSize = + loadableState.getOrNull()?.content?.getOrNull()?.getOrNull()?.items?.size + snapshotFlow { listState.layoutInfo.totalItemsCount } + .withIndex() + .filter { + it.index > 0 || it.value == listSize + } + .first() + + listState.scrollToItem(0, 0) + } + + val focusRequester = remember { FocusRequester2() } + // Auto focus the text field + // on launch. + LaunchedEffect( + focusRequester, + filterState, + ) { + snapshotFlow { filterState.value } + .first { it?.query?.onChange != null } + delay(100L) + focusRequester.requestFocus() + } + + val pullRefreshState = rememberPullRefreshState( + refreshing = false, + onRefresh = { + focusRequester.requestFocus() + }, + ) + ScaffoldLazyColumn( + modifier = Modifier + .pullRefresh(pullRefreshState) + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + CustomToolbar( + scrollBehavior = scrollBehavior, + ) { + Column { + CustomToolbarContent( + title = stringResource(Res.strings.apppicker_header_title), + icon = { + NavigationIcon() + }, + ) + + val query = filterState.value?.query + val queryText = query?.state?.value.orEmpty() + SearchTextField( + modifier = Modifier + .focusRequester2(focusRequester), + text = queryText, + placeholder = stringResource(Res.strings.apppicker_search_placeholder), + searchIcon = false, + leading = {}, + trailing = {}, + onTextChange = query?.onChange, + onGoClick = null, + ) + } + } + }, + pullRefreshState = pullRefreshState, + overlay = { + val filterRevision = filterState.value?.revision + DefaultProgressBar( + visible = listRevision != null && filterRevision != null && + listRevision != filterRevision, + ) + + PullToSearch( + modifier = Modifier + .padding(contentPadding.value), + pullRefreshState = pullRefreshState, + ) + }, + listState = listState, + ) { + val contentState = loadableState + .flatMap { it.content } + when (contentState) { + is Loadable.Loading -> { + for (i in 1..3) { + item("skeleton.$i") { + SkeletonItem() + } + } + } + + is Loadable.Ok -> { + contentState.value.fold( + ifLeft = { e -> + item("error") { + ErrorView( + text = { + Text(text = "Failed to load app list!") + }, + exception = e, + ) + } + }, + ifRight = { content -> + val items = content.items + if (items.isEmpty()) { + item("empty") { + NoItemsPlaceholder() + } + } + + items( + items = items, + key = { it.key }, + ) { item -> + AppItem( + modifier = Modifier + .animateItemPlacement(), + item = item, + ) + } + }, + ) + } + } + } +} + +@Composable +private fun NoItemsPlaceholder( + modifier: Modifier = Modifier, +) { + EmptySearchView( + modifier = modifier, + text = { + Text( + text = stringResource(Res.strings.apppicker_empty_label), + ) + }, + ) +} + +@Composable +private fun AppItem( + modifier: Modifier, + item: AppPickerState.Item, +) { + FlatItem( + modifier = modifier, + leading = { + FaviconImage( + modifier = Modifier + .size(24.dp) + .clip(CircleShape), + imageModel = { + item.icon + }, + ) + }, + title = { + Text(item.name) + }, + text = { + Text(item.text) + }, + trailing = { + if (item.system) { + val elevation = LocalAbsoluteTonalElevation.current + Text( + modifier = Modifier + .background( + MaterialTheme.colorScheme + .surfaceColorAtElevation(elevation + 2.dp), + MaterialTheme.shapes.small, + ) + .padding( + horizontal = 6.dp, + vertical = 2.dp, + ), + text = stringResource(Res.strings.apppicker_system_app_label), + maxLines = 1, + overflow = TextOverflow.Ellipsis, + style = MaterialTheme.typography.labelMedium, + ) + } + }, + onClick = item.onClick, + ) +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/apppicker/AppPickerState.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/apppicker/AppPickerState.kt new file mode 100644 index 00000000..1a5a7da5 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/apppicker/AppPickerState.kt @@ -0,0 +1,45 @@ +package com.artemchep.keyguard.feature.apppicker + +import androidx.compose.runtime.Immutable +import androidx.compose.ui.text.AnnotatedString +import arrow.core.Either +import arrow.optics.optics +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.feature.auth.common.TextFieldModel2 +import com.artemchep.keyguard.feature.favicon.AppIconUrl +import kotlinx.coroutines.flow.StateFlow + +data class AppPickerState( + val filter: StateFlow, + val content: Loadable>, +) { + @Immutable + data class Filter( + val revision: Int, + val query: TextFieldModel2, + ) { + companion object + } + + @Immutable + @optics + data class Content( + val revision: Int, + val items: List, + ) { + companion object + } + + @Immutable + @optics + data class Item( + val key: String, + val icon: AppIconUrl, + val name: AnnotatedString, + val text: String, + val system: Boolean, + val onClick: (() -> Unit)? = null, + ) { + companion object + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/apppicker/AppPickerStateProducer.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/apppicker/AppPickerStateProducer.kt new file mode 100644 index 00000000..f12afdf5 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/apppicker/AppPickerStateProducer.kt @@ -0,0 +1,200 @@ +package com.artemchep.keyguard.feature.apppicker + +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.content.pm.ApplicationInfo +import androidx.compose.runtime.Composable +import androidx.compose.ui.text.AnnotatedString +import arrow.core.partially1 +import com.artemchep.keyguard.android.util.broadcastFlow +import com.artemchep.keyguard.common.model.Loadable +import com.artemchep.keyguard.common.usecase.UnlockUseCase +import com.artemchep.keyguard.feature.crashlytics.crashlyticsAttempt +import com.artemchep.keyguard.feature.favicon.AppIconUrl +import com.artemchep.keyguard.feature.home.vault.search.IndexedText +import com.artemchep.keyguard.feature.navigation.RouteResultTransmitter +import com.artemchep.keyguard.feature.navigation.state.navigatePopSelf +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.artemchep.keyguard.feature.search.search.IndexedModel +import com.artemchep.keyguard.feature.search.search.mapSearch +import com.artemchep.keyguard.feature.search.search.searchFilter +import com.artemchep.keyguard.feature.search.search.searchQueryHandle +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onStart +import org.kodein.di.compose.localDI +import org.kodein.di.direct +import org.kodein.di.instance + +private class AppPickerUiException( + msg: String, + cause: Throwable, +) : RuntimeException(msg, cause) + +@Composable +fun produceAppPickerState( + transmitter: RouteResultTransmitter, +) = with(localDI().direct) { + produceAppPickerState( + transmitter = transmitter, + unlockUseCase = instance(), + ) +} + +@Composable +fun produceAppPickerState( + transmitter: RouteResultTransmitter, + unlockUseCase: UnlockUseCase, +): Loadable = produceScreenState( + key = "app_picker", + initial = Loadable.Loading, + args = arrayOf( + unlockUseCase, + ), +) { + val queryHandle = searchQueryHandle("query") + val queryFlow = searchFilter(queryHandle) { model, revision -> + AppPickerState.Filter( + revision = revision, + query = model, + ) + } + + val appsComparator = Comparator { a: AppInfo, b: AppInfo -> + a.label.compareTo(b.label, ignoreCase = true) + } + + fun onClick(appInfo: AppInfo) { + val uri = "androidapp://${appInfo.packageName}" + val result = AppPickerResult.Confirm(uri) + transmitter(result) + navigatePopSelf() + } + + fun List.toItems(): List { + val packageNameCollisions = mutableMapOf() + return this + .sortedWith(appsComparator) + .map { appInfo -> + val key = kotlin.run { + val newPackageNameCollisionCounter = packageNameCollisions + .getOrDefault(appInfo.packageName, 0) + 1 + packageNameCollisions[appInfo.packageName] = + newPackageNameCollisionCounter + appInfo.packageName + ":" + newPackageNameCollisionCounter + } + AppPickerState.Item( + key = key, + icon = AppIconUrl( + packageName = appInfo.packageName, + ), + name = AnnotatedString(appInfo.label), + text = appInfo.packageName, + system = appInfo.system, + onClick = ::onClick + .partially1(appInfo), + ) + } + } + + val itemsFlow = getAppsFlow(context.context) + .map { apps -> + apps + .toItems() + // Index for the search. + .map { item -> + IndexedModel( + model = item, + indexedText = IndexedText.invoke(item.name.text), + ) + } + } + .mapSearch( + handle = queryHandle, + ) { item, result -> + // Replace the origin text with the one with + // search decor applied to it. + item.copy(name = result.highlightedText) + } + val contentFlow = itemsFlow + .crashlyticsAttempt { e -> + val msg = "Failed to get the app list!" + AppPickerUiException( + msg = msg, + cause = e, + ) + } + .map { result -> + val contentOrException = result + .map { (items, revision) -> + AppPickerState.Content( + revision = revision, + items = items, + ) + } + Loadable.Ok(contentOrException) + } + contentFlow + .map { content -> + val state = AppPickerState( + filter = queryFlow, + content = content, + ) + Loadable.Ok(state) + } +} + +private fun getAppsFlow( + context: Context, +) = broadcastFlow( + context = context, + intentFilter = IntentFilter().apply { + addAction(Intent.ACTION_PACKAGE_ADDED) + addAction(Intent.ACTION_PACKAGE_REPLACED) + addAction(Intent.ACTION_PACKAGE_REMOVED) + }, + // Only system can sent those events. + exported = false, +) + .map { Unit } // do not care about the intent + .onStart { + val initialValue = Unit + emit(initialValue) + } + .map { + getApps(context) + } + .flowOn(Dispatchers.Default) + +private fun getApps( + context: Context, +) = run { + val intent = Intent(Intent.ACTION_MAIN).apply { + addCategory(Intent.CATEGORY_LAUNCHER) + } + val pm = context.packageManager + val apps = pm.queryIntentActivities(intent, 0) + apps + .map { info -> + val system = run { + val ai = pm.getApplicationInfo(info.activityInfo.packageName, 0) + val mask = + ApplicationInfo.FLAG_SYSTEM or ApplicationInfo.FLAG_UPDATED_SYSTEM_APP + ai.flags.and(mask) != 0 + } + val label = info.loadLabel(pm)?.toString().orEmpty() + AppInfo( + packageName = info.activityInfo.packageName, + label = label, + system = system, + ) + } +} + +data class AppInfo( + val packageName: String, + val label: String, + val system: Boolean, +) diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/auth/common/Autofill.android.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/auth/common/Autofill.android.kt new file mode 100644 index 00000000..4937cba6 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/auth/common/Autofill.android.kt @@ -0,0 +1,25 @@ +package com.artemchep.keyguard.feature.auth.common + +import android.view.autofill.AutofillManager +import android.view.autofill.AutofillValue +import androidx.compose.runtime.Composable +import androidx.compose.runtime.SideEffect +import androidx.compose.ui.ExperimentalComposeUiApi +import androidx.compose.ui.autofill.AutofillNode +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalView +import androidx.core.content.getSystemService + +@OptIn(ExperimentalComposeUiApi::class) +@Composable +actual fun AutofillSideEffect( + value: String, + node: AutofillNode, +) { + val view = LocalView.current + val autofillManager = LocalContext.current.getSystemService() + SideEffect { + val autofillId = node.id + autofillManager?.notifyValueChanged(view, autofillId, AutofillValue.forText(value)) + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/auth/login/otp/LoginOtpScreen.android.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/auth/login/otp/LoginOtpScreen.android.kt new file mode 100644 index 00000000..1ccef540 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/auth/login/otp/LoginOtpScreen.android.kt @@ -0,0 +1,242 @@ +package com.artemchep.keyguard.feature.auth.login.otp + +import android.annotation.SuppressLint +import android.net.Uri +import android.view.ViewGroup +import android.webkit.JavascriptInterface +import android.webkit.WebResourceRequest +import android.webkit.WebView +import android.webkit.WebViewClient +import androidx.annotation.Keep +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Button +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp +import androidx.compose.ui.viewinterop.AndroidView +import arrow.core.left +import arrow.core.right +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.ExpandedIfNotEmpty +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.util.DividerColor +import dev.icerock.moko.resources.compose.stringResource + +@SuppressLint("SetJavaScriptEnabled") +@Composable +actual fun ColumnScope.LoginOtpScreenContentFido2WebAuthnWebView( + screenScope: LoginOtpScreenScope, + state: LoginTwofaState.Fido2WebAuthn, +) { + val updatedCallbackUrls by rememberUpdatedState(state.callbackUrls) + val updatedOnComplete by rememberUpdatedState(state.onComplete) + + BaseWebView( + modifier = Modifier, + factory = { + layoutParams = ViewGroup.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.WRAP_CONTENT, + ) + webViewClient = object : WebViewClient() { + override fun shouldOverrideUrlLoading( + view: WebView?, + request: WebResourceRequest?, + ): Boolean { + val handled = run { + val url = request?.url + ?: return@run false + overrideRequest(url) + } + return handled || super.shouldOverrideUrlLoading(view, request) + } + + private fun overrideRequest(uri: Uri): Boolean { + val shouldBeHandled = kotlin.run { + val uriString = uri.toString() + updatedCallbackUrls + .any { callbackUrl -> uriString.startsWith(callbackUrl) } + } + if (shouldBeHandled) run { + val callback = updatedOnComplete + ?: return@run + val data = uri.getQueryParameter("data") + if (data != null) { + val result = data.right() + callback(result) + } + + val error = uri.getQueryParameter("error") + ?: "Something went wrong" + val result = RuntimeException(error).left() + callback(result) + } + return shouldBeHandled + } + } + }, + url = state.authUrl, + ) +} + +@Composable +actual fun ColumnScope.LoginOtpScreenContentFido2WebAuthnBrowser( + screenScope: LoginOtpScreenScope, + state: LoginTwofaState.Fido2WebAuthn, +) { + val updatedOnClick by rememberUpdatedState(state.onBrowser) + Button( + modifier = Modifier + .padding(horizontal = 16.dp), + enabled = updatedOnClick != null, + onClick = { + updatedOnClick?.invoke() + }, + ) { + Text(stringResource(Res.strings.fido2webauthn_action_go_title)) + } + ExpandedIfNotEmpty(state.error) { error -> + Column { + Spacer( + modifier = Modifier + .height(16.dp), + ) + Text( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + text = error, + color = MaterialTheme.colorScheme.error, + ) + } + } + // TODO: Should we show the warning? +// Spacer( +// modifier = Modifier +// .height(32.dp), +// ) +// Icon( +// modifier = Modifier +// .padding(horizontal = Dimens.horizontalPadding), +// imageVector = Icons.Outlined.Info, +// contentDescription = null, +// tint = LocalContentColor.current.combineAlpha(alpha = MediumEmphasisAlpha), +// ) +// Spacer( +// modifier = Modifier +// .height(16.dp), +// ) +// Text( +// modifier = Modifier +// .padding(horizontal = Dimens.horizontalPadding), +// text = stringResource( +// Res.strings.fido2webauthn_bitwarden_web_vault_version_warning_note, +// "2023.7.1", +// ), +// style = MaterialTheme.typography.bodyMedium, +// color = LocalContentColor.current.combineAlpha(alpha = MediumEmphasisAlpha), +// ) +} + +@SuppressLint("SetJavaScriptEnabled") +@Composable +actual fun ColumnScope.LoginOtpScreenContentDuoWebView( + screenScope: LoginOtpScreenScope, + state: LoginTwofaState.Duo, +) { + val updatedOnComplete by rememberUpdatedState(state.onComplete) + BaseWebView( + modifier = Modifier + .fillMaxWidth() + .height(400.dp), + factory = { + fun createJsInjector(js: String) = + """javascript:(function () { $js })()""" + + val jsBridgeTag = "keyguardAndroidBridge" + val jsBridge = JsWebViewDuoBridge { data -> + val result = data.right() + updatedOnComplete?.invoke(result) + } + + val jsCode = """ + window.invokeCSharpAction = function (data) { + $jsBridgeTag.onSuccess("" + data); + }; + """.trimIndent() + val jsInjector = createJsInjector(jsCode) + + addJavascriptInterface(jsBridge, jsBridgeTag) + + layoutParams = ViewGroup.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.MATCH_PARENT, + ) + webViewClient = object : WebViewClient() { + override fun onPageCommitVisible(view: WebView?, url: String?) { + view?.loadUrl(jsInjector) + super.onPageCommitVisible(view, url) + } + + override fun onPageFinished(view: WebView?, url: String?) { + view?.loadUrl(jsInjector) + super.onPageFinished(view, url) + } + } + }, + url = state.authUrl, + ) +} + +@Keep +private class JsWebViewDuoBridge( + private val onSuccess: (String) -> Unit, +) { + // Called by the JavaScript of the + // Duo page connector. + @JavascriptInterface + fun onSuccess(data: String) = onSuccess.invoke(data) +} + +@Composable +private fun BaseWebView( + modifier: Modifier = Modifier, + url: String, + factory: WebView.() -> Unit, +) { + val shape = MaterialTheme.shapes.extraLarge + AndroidView( + modifier = modifier + .padding(8.dp) + .clip(shape) + .border(Dp.Hairline, DividerColor, shape), + factory = { context -> + WebView(context).apply { + settings.apply { + javaScriptEnabled = true + } + + factory(this) + loadUrl(url) + tag = url + } + }, + update = { webView -> + val prevUrl = webView.tag + if (prevUrl != url) { + webView.loadUrl(url) + } + }, + ) +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/biometric/BiometricPromptEffect.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/biometric/BiometricPromptEffect.kt new file mode 100644 index 00000000..92ee54b3 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/biometric/BiometricPromptEffect.kt @@ -0,0 +1,135 @@ +package com.artemchep.keyguard.feature.biometric + +import androidx.biometric.BiometricPrompt +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalLifecycleOwner +import androidx.fragment.app.FragmentActivity +import androidx.lifecycle.withResumed +import arrow.core.left +import arrow.core.right +import com.artemchep.keyguard.android.closestActivityOrNull +import com.artemchep.keyguard.common.model.BiometricAuthException +import com.artemchep.keyguard.common.model.BiometricAuthPrompt +import com.artemchep.keyguard.common.model.BiometricAuthPromptSimple +import com.artemchep.keyguard.common.model.PureBiometricAuthPrompt +import com.artemchep.keyguard.feature.localization.textResource +import com.artemchep.keyguard.ui.CollectedEffect +import kotlinx.coroutines.flow.Flow + +@Composable +actual fun BiometricPromptEffect( + flow: Flow, +) { + val context by rememberUpdatedState(LocalContext.current) + val lifecycle by rememberUpdatedState(LocalLifecycleOwner.current) + CollectedEffect(flow) { event -> + // We want the screen to be visible and on front, when the biometric + // prompt is popping up. + lifecycle.lifecycle.withResumed { + val activity = context.closestActivityOrNull as FragmentActivity + when (event) { + is BiometricAuthPrompt -> activity.launchPrompt(event) + is BiometricAuthPromptSimple -> activity.launchPrompt(event) + } + } + } +} + +private fun FragmentActivity.launchPrompt( + event: BiometricAuthPrompt, +) { + val promptTitle = textResource(event.title, this) + val promptInfo = BiometricPrompt.PromptInfo.Builder() + .setTitle(promptTitle) + .apply { + event.text + ?.let { textResource(it, this@launchPrompt) } + // apply to the prompt + ?.also(::setDescription) + } + .setNegativeButtonText(getString(android.R.string.cancel)) + .build() + val prompt = BiometricPrompt( + this, + object : BiometricPrompt.AuthenticationCallback() { + override fun onAuthenticationError(errorCode: Int, errString: CharSequence) { + super.onAuthenticationError(errorCode, errString) + val result = BiometricAuthException( + code = mapBiometricPromptErrorCode(errorCode), + message = errString.toString(), + ).left() + event.onComplete(result) + } + + override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) { + super.onAuthenticationSucceeded(result) + val cipher = result.cryptoObject?.cipher + ?: return + event.onComplete(cipher.right()) + } + }, + ) + val crypto = BiometricPrompt.CryptoObject(event.cipher) + prompt.authenticate(promptInfo, crypto) +} + +private fun FragmentActivity.launchPrompt( + event: BiometricAuthPromptSimple, +) { + val promptTitle = textResource(event.title, this) + val promptInfo = BiometricPrompt.PromptInfo.Builder() + .setTitle(promptTitle) + .apply { + event.text + ?.let { textResource(it, this@launchPrompt) } + // apply to the prompt + ?.also(::setDescription) + } + .setNegativeButtonText(getString(android.R.string.cancel)) + .build() + val prompt = BiometricPrompt( + this, + object : BiometricPrompt.AuthenticationCallback() { + override fun onAuthenticationError(errorCode: Int, errString: CharSequence) { + super.onAuthenticationError(errorCode, errString) + val result = BiometricAuthException( + code = mapBiometricPromptErrorCode(errorCode), + message = errString.toString(), + ).left() + event.onComplete(result) + } + + override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) { + super.onAuthenticationSucceeded(result) + event.onComplete(Unit.right()) + } + }, + ) + prompt.authenticate(promptInfo) +} + +private fun mapBiometricPromptErrorCode( + errorCode: Int, +) = when (errorCode) { + // There is no error, and the user can + // successfully authenticate. + 0 -> BiometricAuthException.BIOMETRIC_SUCCESS + BiometricPrompt.ERROR_HW_UNAVAILABLE -> BiometricAuthException.ERROR_HW_UNAVAILABLE + BiometricPrompt.ERROR_UNABLE_TO_PROCESS -> BiometricAuthException.ERROR_UNABLE_TO_PROCESS + BiometricPrompt.ERROR_TIMEOUT -> BiometricAuthException.ERROR_TIMEOUT + BiometricPrompt.ERROR_NO_SPACE -> BiometricAuthException.ERROR_NO_SPACE + BiometricPrompt.ERROR_CANCELED -> BiometricAuthException.ERROR_CANCELED + BiometricPrompt.ERROR_LOCKOUT -> BiometricAuthException.ERROR_LOCKOUT + BiometricPrompt.ERROR_VENDOR -> BiometricAuthException.ERROR_VENDOR + BiometricPrompt.ERROR_LOCKOUT_PERMANENT -> BiometricAuthException.ERROR_LOCKOUT_PERMANENT + BiometricPrompt.ERROR_USER_CANCELED -> BiometricAuthException.ERROR_USER_CANCELED + BiometricPrompt.ERROR_NO_BIOMETRICS -> BiometricAuthException.ERROR_NO_BIOMETRICS + BiometricPrompt.ERROR_HW_NOT_PRESENT -> BiometricAuthException.ERROR_HW_NOT_PRESENT + BiometricPrompt.ERROR_NEGATIVE_BUTTON -> BiometricAuthException.ERROR_NEGATIVE_BUTTON + BiometricPrompt.ERROR_NO_DEVICE_CREDENTIAL -> BiometricAuthException.ERROR_NO_DEVICE_CREDENTIAL + BiometricPrompt.ERROR_SECURITY_UPDATE_REQUIRED -> BiometricAuthException.ERROR_SECURITY_UPDATE_REQUIRED + else -> BiometricAuthException.ERROR_UNKNOWN +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/crashlytics/IsEnabled.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/crashlytics/IsEnabled.kt new file mode 100644 index 00000000..e8ce0b86 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/crashlytics/IsEnabled.kt @@ -0,0 +1,42 @@ +@file:Suppress("PackageDirectoryMismatch") + +package com.google.firebase.crashlytics + +import com.artemchep.keyguard.common.util.flow.EventFlow +import com.google.firebase.crashlytics.internal.common.CrashlyticsCore +import com.google.firebase.crashlytics.internal.common.DataCollectionArbiter +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onStart + +private val refreshSink = EventFlow() + +fun FirebaseCrashlytics.setEnabled(enabled: Boolean?) { + setCrashlyticsCollectionEnabled(enabled) + // Ask firebase analytics flow + // to refresh itself. + refreshSink.emit(Unit) +} + +fun FirebaseCrashlytics.isEnabled(): Boolean? { + val arbiter = kotlin.runCatching { + CrashlyticsCore::class.java.getDeclaredField("dataCollectionArbiter") + .apply { + isAccessible = true + } + .get(core) as DataCollectionArbiter + }.getOrElse { + // We have failed to obtain a data collection arbiter, something + // must have changed in the internal structure. + recordException(it) + return null + } + return arbiter.isAutomaticDataCollectionEnabled +} + +fun FirebaseCrashlytics.isEnabledFlow() = refreshSink + .onStart { + emit(Unit) + } + .map { isEnabled() } + .distinctUntilChanged() diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/favicon/FaviconImage.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/favicon/FaviconImage.kt new file mode 100644 index 00000000..251cff74 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/favicon/FaviconImage.kt @@ -0,0 +1,55 @@ +package com.artemchep.keyguard.feature.favicon + +import androidx.compose.material.Icon +import androidx.compose.material.icons.Icons +import androidx.compose.material3.LocalAbsoluteTonalElevation +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.surfaceColorAtElevation +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.compositeOver +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.icons.KeyguardWebsite +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.skydoves.landscapist.ImageOptions +import com.skydoves.landscapist.components.rememberImageComponent +import com.skydoves.landscapist.glide.GlideImage +import com.skydoves.landscapist.placeholder.shimmer.ShimmerPlugin + +@Composable +actual fun FaviconImage( + imageModel: () -> Any?, + modifier: Modifier, +) { + val surfaceColor = MaterialTheme.colorScheme + .surfaceColorAtElevation(LocalAbsoluteTonalElevation.current + 16.dp) + val contentColor = LocalContentColor.current + val highlightColor = contentColor + .combineAlpha(MediumEmphasisAlpha) + .compositeOver(surfaceColor) + GlideImage( + modifier = modifier, + imageModel = imageModel, + imageOptions = ImageOptions(contentScale = ContentScale.Crop), + component = rememberImageComponent { + // Shows a shimmering effect when loading an image + +ShimmerPlugin( + baseColor = surfaceColor, + highlightColor = highlightColor, + ) + }, + failure = { + Icon( + modifier = Modifier + .align(Alignment.Center), + imageVector = Icons.Outlined.KeyguardWebsite, + contentDescription = null, + tint = contentColor, + ) + }, + ) +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/feedback/FeedbackUtils.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/feedback/FeedbackUtils.kt new file mode 100644 index 00000000..558a57d9 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/feedback/FeedbackUtils.kt @@ -0,0 +1,10 @@ +package com.artemchep.keyguard.feature.feedback + +import android.os.Build +import com.artemchep.keyguard.build.BuildKonfig + +actual fun getFeedbackSubject(): String = kotlin.run { + val date = BuildKonfig.buildDate + val sdk = Build.VERSION.SDK_INT + "Feedback Android/$date/$sdk" +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/filepicker/FilePickerEffect.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/filepicker/FilePickerEffect.kt new file mode 100644 index 00000000..9c2c343f --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/filepicker/FilePickerEffect.kt @@ -0,0 +1,110 @@ +package com.artemchep.keyguard.feature.filepicker + +import android.content.Context +import android.net.Uri +import android.provider.OpenableColumns +import androidx.activity.compose.rememberLauncherForActivityResult +import androidx.activity.result.contract.ActivityResultContracts +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.platform.LocalContext +import com.artemchep.keyguard.common.model.ToastMessage +import com.artemchep.keyguard.common.usecase.ShowMessage +import com.artemchep.keyguard.ui.CollectedEffect +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableStateFlow +import org.kodein.di.compose.rememberInstance + +@Composable +actual fun FilePickerEffect( + flow: Flow>, +) { + val state = remember { + MutableStateFlow?>(null) + } + + val context by rememberUpdatedState(LocalContext.current) + + val showMessage: ShowMessage by rememberInstance() + val openDocumentLauncher = run { + val contract = remember { + ActivityResultContracts.OpenDocument() + } + rememberLauncherForActivityResult(contract = contract) { uri -> + val intent = state.value as? FilePickerIntent.OpenDocument + ?: run { + val message = ToastMessage( + title = "Failed to select a file", + text = "App does not have an active observer to handle the result correctly.", + ) + showMessage.copy(message) + return@rememberLauncherForActivityResult + } + + val info = uri?.let { + FilePickerIntent.OpenDocument.Ifo( + uri = it, + name = getFileName(context, it), + size = getFileSize(context, it), + ) + } + intent.onResult(info) + } + } + + CollectedEffect(flow) { intent -> + state.value = intent + + when (intent) { + is FilePickerIntent.OpenDocument -> { + val mimeTypes = intent.mimeTypes + openDocumentLauncher.launch(mimeTypes) + } + } + } +} + +private fun getFileName(context: Context, uri: Uri): String? { + var result: String? = null + if (uri.scheme == "content") { + val cursor = context + .contentResolver + .query(uri, null, null, null, null) + cursor?.use { x -> + if (x.moveToFirst()) { + val index = x.getColumnIndex(OpenableColumns.DISPLAY_NAME) + if (index >= 0) { + result = x.getString(index) + } + } + } + } + if (result == null) { + val r = uri.path.orEmpty() + val cut = r.lastIndexOf('/') + if (cut != -1) { + result = r.substring(cut + 1) + } + } + return result +} + +private fun getFileSize(context: Context, uri: Uri): Long? { + var result: Long? = null + if (uri.scheme == "content") { + val cursor = context + .contentResolver + .query(uri, null, null, null, null) + cursor?.use { x -> + if (x.moveToFirst()) { + val index = x.getColumnIndex(OpenableColumns.SIZE) + if (index >= 0) { + result = x.getLong(index) + } + } + } + } + return result +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofill.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofill.kt new file mode 100644 index 00000000..62389d59 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingAutofill.kt @@ -0,0 +1,96 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.AutoAwesome +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.platform.LocalContext +import arrow.core.partially1 +import com.artemchep.keyguard.android.closestActivityOrNull +import com.artemchep.keyguard.common.service.autofill.AutofillService +import com.artemchep.keyguard.common.service.autofill.AutofillServiceStatus +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.map +import org.kodein.di.DirectDI +import org.kodein.di.instance + +actual fun settingAutofillProvider( + directDI: DirectDI, +): SettingComponent = settingAutofillProvider( + autofillService = directDI.instance(), +) + +fun settingAutofillProvider( + autofillService: AutofillService, +): SettingComponent = autofillService + .status() + .map { status -> + // composable + SettingIi( + search = SettingIi.Search( + group = "autofill", + tokens = listOf( + "autofill", + ), + ), + ) { + val disabled = status is AutofillServiceStatus.Disabled && status.onEnable == null || + status is AutofillServiceStatus.Enabled && status.onDisable == null + val enabled = status is AutofillServiceStatus.Enabled + val context by rememberUpdatedState(LocalContext.current) + SettingAutofill( + checked = enabled, + onCheckedChange = if (!disabled) { + // lambda + lambda@{ shouldBeEnabled -> + val activity = context.closestActivityOrNull + ?: return@lambda + when { + shouldBeEnabled && status is AutofillServiceStatus.Disabled -> + status.onEnable?.invoke(activity) + + !shouldBeEnabled && status is AutofillServiceStatus.Enabled -> + status.onDisable?.invoke() + } + } + } else { + null + }, + ) + } + } + +@Composable +private fun SettingAutofill( + checked: Boolean, + onCheckedChange: ((Boolean) -> Unit)?, +) { + FlatItem( + leading = icon(Icons.Outlined.AutoAwesome), + trailing = { + Switch( + checked = checked, + enabled = onCheckedChange != null, + onCheckedChange = onCheckedChange, + ) + }, + title = { + Text( + text = stringResource(Res.strings.pref_item_autofill_service_title), + ) + }, + text = { + Text( + text = stringResource(Res.strings.pref_item_autofill_service_text), + ) + }, + onClick = onCheckedChange?.partially1(!checked), + ) +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingCredentialProvider.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingCredentialProvider.kt new file mode 100644 index 00000000..76a92fa2 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingCredentialProvider.kt @@ -0,0 +1,92 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import android.os.Build +import androidx.annotation.RequiresApi +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Key +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.compose.ui.platform.LocalContext +import androidx.credentials.CredentialManager +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.io.launchIn +import com.artemchep.keyguard.common.usecase.WindowCoroutineScope +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.DirectDI +import org.kodein.di.instance + +actual fun settingCredentialProviderProvider( + directDI: DirectDI, +): SettingComponent = if (Build.VERSION.SDK_INT >= 34) { + settingCredentialProviderProvider( + windowCoroutineScope = directDI.instance(), + ) +} else { + // Credential provider is not available on the + // older platform versions. + flowOf(null) +} + +@RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE) +fun settingCredentialProviderProvider( + windowCoroutineScope: WindowCoroutineScope, +): SettingComponent = kotlin.run { + val item = SettingIi( + search = SettingIi.Search( + group = "autofill", + tokens = listOf( + "credential", + "passkey", + "fido", + "provider", + "password", + ), + ), + ) { + val context = LocalContext.current + val pi = remember(context) { + CredentialManager + .create(context) + .createSettingsPendingIntent() + } + SettingCredentialProvider( + onClick = { + ioEffect(Dispatchers.Main.immediate) { + pi.send() + }.launchIn(windowCoroutineScope) + }, + ) + } + flowOf(item) +} + +@Composable +private fun SettingCredentialProvider( + onClick: (() -> Unit)?, +) { + FlatItem( + leading = icon(Icons.Outlined.Key), + trailing = { + ChevronIcon() + }, + title = { + Text( + text = stringResource(Res.strings.pref_item_credential_provider_title), + ) + }, + text = { + Text( + text = stringResource(Res.strings.pref_item_credential_provider_text), + ) + }, + onClick = onClick, + ) +} \ No newline at end of file diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermission.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermission.kt new file mode 100644 index 00000000..6ca3bc5d --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermission.kt @@ -0,0 +1,154 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import android.content.Context +import android.content.Intent +import android.net.Uri +import android.os.Build +import android.provider.Settings +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.DeveloperMode +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.platform.LocalContext +import arrow.core.partially1 +import com.artemchep.keyguard.feature.home.settings.permissions.PermissionsSettingsRoute +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.icon +import com.google.accompanist.permissions.ExperimentalPermissionsApi +import com.google.accompanist.permissions.isGranted +import com.google.accompanist.permissions.rememberPermissionState +import dev.icerock.moko.resources.StringResource +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.DirectDI + +actual fun settingPermissionDetailsProvider( + directDI: DirectDI, +): SettingComponent = settingPermissionDetailsProvider() + +fun settingPermissionDetailsProvider(): SettingComponent = kotlin.run { + val item = SettingIi { + val navigationController by rememberUpdatedState(LocalNavigationController.current) + SettingPermissionDetails( + onClick = { + val intent = NavigationIntent.NavigateToRoute( + route = PermissionsSettingsRoute, + ) + navigationController.queue(intent) + }, + ) + } + flowOf(item) +} + +@Composable +private fun SettingPermissionDetails( + onClick: (() -> Unit)?, +) { + FlatItem( + leading = icon(Icons.Outlined.DeveloperMode), + trailing = { + ChevronIcon() + }, + title = { + Text( + text = stringResource(Res.strings.pref_item_permissions_title), + ) + }, + onClick = onClick, + ) +} + +@OptIn(ExperimentalPermissionsApi::class) +fun settingPermissionProvider( + leading: @Composable RowScope.() -> Unit, + title: StringResource, + text: StringResource, + minSdk: Int, + permissionProvider: () -> String, +): SettingComponent = kotlin.run { + if (Build.VERSION.SDK_INT >= minSdk) { + kotlin.run { + val item = SettingIi { + val permissionState = rememberPermissionState(permissionProvider()) + + val updatedContext by rememberUpdatedState(newValue = LocalContext.current) + val updatedStatus by rememberUpdatedState(newValue = permissionState.status) + SettingPermission( + leading = leading, + title = stringResource(title), + text = stringResource(text), + checked = updatedStatus.isGranted, + onCheckedChange = { shouldBeChecked -> + val isChecked = updatedStatus.isGranted + if (isChecked != shouldBeChecked) { + if (shouldBeChecked) { + permissionState.launchPermissionRequest() + } else { + updatedContext.launchAppDetailsSettings() + } + } + }, + ) + } + flowOf(item) + } + } else { + kotlin.run { + val item = SettingIi { + SettingPermission( + leading = leading, + title = stringResource(title), + text = stringResource(text), + checked = true, + onCheckedChange = null, + ) + } + flowOf(item) + } + } +} + +fun Context.launchAppDetailsSettings() { + val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).apply { + data = Uri.fromParts("package", packageName, null) + } + kotlin.runCatching { + startActivity(intent) + } +} + +@Composable +private fun SettingPermission( + leading: @Composable RowScope.() -> Unit, + title: String, + text: String, + checked: Boolean, + onCheckedChange: ((Boolean) -> Unit)?, +) { + FlatItem( + leading = leading, + trailing = { + Switch( + checked = checked, + enabled = onCheckedChange != null, + onCheckedChange = onCheckedChange, + ) + }, + title = { + Text(title) + }, + text = { + Text(text) + }, + onClick = onCheckedChange?.partially1(!checked), + ) +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermissionCamera.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermissionCamera.kt new file mode 100644 index 00000000..a6dfb449 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermissionCamera.kt @@ -0,0 +1,26 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import android.Manifest +import android.os.Build +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.CameraAlt +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.icons.icon +import com.google.accompanist.permissions.ExperimentalPermissionsApi +import org.kodein.di.DirectDI + +actual fun settingPermissionCameraProvider( + directDI: DirectDI, +): SettingComponent = settingPermissionCameraProvider2() + +@OptIn(ExperimentalPermissionsApi::class) +fun settingPermissionCameraProvider2(): SettingComponent = settingPermissionProvider( + leading = icon(Icons.Outlined.CameraAlt), + title = Res.strings.pref_item_permission_camera_title, + text = Res.strings.pref_item_permission_camera_text, + minSdk = Build.VERSION_CODES.M, + permissionProvider = { + Manifest.permission.CAMERA + }, +) diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermissionOther.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermissionOther.kt new file mode 100644 index 00000000..e0e0f3d2 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermissionOther.kt @@ -0,0 +1,146 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import android.content.Context +import android.content.pm.PackageManager +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.Immutable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.key +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.skeleton.SkeletonItem +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.artemchep.keyguard.ui.util.HorizontalDivider +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.withContext +import org.kodein.di.DirectDI + +actual fun settingPermissionOtherProvider( + directDI: DirectDI, +): SettingComponent = settingPermissionOtherProvider() + +fun settingPermissionOtherProvider(): SettingComponent = kotlin.run { + val item = SettingIi { + SettingPermissionOther() + } + flowOf(item) +} + +@Composable +private fun SettingPermissionOther() { + val context = LocalContext.current + val permissionsState = remember { + mutableStateOf>>(emptyList()) + } + + LaunchedEffect(context, permissionsState) { + val result = withContext(Dispatchers.Default) { + getPermissionItems(context) + } + permissionsState.value = result + } + + Column( + modifier = Modifier, + verticalArrangement = Arrangement.spacedBy(8.dp), + ) { + val permissions = permissionsState.value + if (permissions.isEmpty()) { + // We assume that our app must have at least one permission, + // therefore we are still loading the list. + SkeletonItem() + } + + permissions.forEachIndexed { index, items -> + if (index > 0) { + HorizontalDivider() + } + items.forEach { item -> + key(item.permission) { + Column( + modifier = Modifier + .padding( + vertical = 4.dp, + horizontal = Dimens.horizontalPadding, + ), + ) { + Text( + text = item.permission, + style = MaterialTheme.typography.bodySmall, + maxLines = 4, + ) + if (item.description != null) { + Text( + text = item.description, + style = MaterialTheme.typography.bodySmall, + color = LocalContentColor.current + .combineAlpha(MediumEmphasisAlpha), + maxLines = 10, + ) + } + } + } + } + } + } +} + +@Immutable +private data class PermissionItem( + val permission: String, + val group: String? = null, + val description: String? = null, +) + +private fun getPermissionItems(context: Context) = kotlin.run { + val pm = context.packageManager + val info = + pm.getPackageInfo( + context.packageName, + PackageManager.GET_PERMISSIONS, + ) + + val result = info + .requestedPermissions + .mapNotNull { permission -> + kotlin.runCatching { + val permissionInfo = pm.getPermissionInfo(permission, 0) + val permissionDescription = permissionInfo.loadDescription(pm) + ?.toString() + ?.let { + // Some of the descriptions do have the dot in the + // end, but some of them do. I like when they do. + it.removeSuffix(".") + "." + } + PermissionItem( + permission = permission, + group = permissionInfo.group, + description = permissionDescription, + ) + }.getOrElse { + PermissionItem( + permission = permission, + ) + } + } + .sortedBy { it.permission } + .groupBy { item -> + item.group + } + .map { (group, items) -> + items + } + result +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermissionPostNotifications.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermissionPostNotifications.kt new file mode 100644 index 00000000..9a1b63af --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingPermissionPostNotifications.kt @@ -0,0 +1,26 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import android.Manifest +import android.os.Build +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Notifications +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.icons.icon +import com.google.accompanist.permissions.ExperimentalPermissionsApi +import org.kodein.di.DirectDI + +actual fun settingPermissionPostNotificationsProvider( + directDI: DirectDI, +): SettingComponent = settingPermissionPostNotificationsProvider2() + +@OptIn(ExperimentalPermissionsApi::class) +fun settingPermissionPostNotificationsProvider2(): SettingComponent = settingPermissionProvider( + leading = icon(Icons.Outlined.Notifications), + title = Res.strings.pref_item_permission_post_notifications_title, + text = Res.strings.pref_item_permission_post_notifications_text, + minSdk = Build.VERSION_CODES.TIRAMISU, + permissionProvider = { + Manifest.permission.POST_NOTIFICATIONS + }, +) diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingSubscriptionsPlayStore.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingSubscriptionsPlayStore.kt new file mode 100644 index 00000000..67d8902c --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/home/settings/component/SettingSubscriptionsPlayStore.kt @@ -0,0 +1,58 @@ +package com.artemchep.keyguard.feature.home.settings.component + +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Settings +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.platform.LocalContext +import com.artemchep.keyguard.feature.navigation.LocalNavigationController +import com.artemchep.keyguard.feature.navigation.NavigationIntent +import com.artemchep.keyguard.res.Res +import com.artemchep.keyguard.ui.FlatItem +import com.artemchep.keyguard.ui.icons.ChevronIcon +import com.artemchep.keyguard.ui.icons.icon +import dev.icerock.moko.resources.compose.stringResource +import kotlinx.coroutines.flow.flowOf +import org.kodein.di.DirectDI + +actual fun settingSubscriptionsPlayStoreProvider( + directDI: DirectDI, +): SettingComponent = settingSubscriptionsPlayStoreProvider() + +fun settingSubscriptionsPlayStoreProvider(): SettingComponent = kotlin.run { + val item = SettingIi { + SettingSubscriptionsPlayStore() + } + flowOf(item) +} + +@Composable +private fun SettingSubscriptionsPlayStore() { + val context by rememberUpdatedState(LocalContext.current) + val controller by rememberUpdatedState(LocalNavigationController.current) + FlatItem( + leading = icon(Icons.Outlined.Settings), + title = { + Text( + text = stringResource( + Res.strings.pref_item_premium_manage_subscription_on_play_store_title, + ), + ) + }, + trailing = { + ChevronIcon() + }, + onClick = { + val intent = run { + val packageName = context.packageName + val url = + "https://play.google.com/store/account/subscriptions?package=$packageName" + NavigationIntent.NavigateToBrowser(url) + } + controller.queue(intent) + }, + ) +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/home/vault/add/LeAddRoute.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/home/vault/add/LeAddRoute.kt new file mode 100644 index 00000000..20c363c5 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/home/vault/add/LeAddRoute.kt @@ -0,0 +1,88 @@ +package com.artemchep.keyguard.feature.home.vault.add + +import com.artemchep.keyguard.android.AutofillActivity +import com.artemchep.keyguard.android.AutofillSaveActivity +import com.artemchep.keyguard.android.autofill.AutofillStructure2 +import com.artemchep.keyguard.common.model.AutofillHint +import com.artemchep.keyguard.common.util.Browsers + +fun AddRoute.Args.Autofill.Companion.of( + source: AutofillActivity.Args, +) = ofAutofillStructure( + struct = source.autofillStructure2, + applicationId = source.applicationId, + webDomain = source.webDomain, + webScheme = source.webScheme, +) + +fun AddRoute.Args.Autofill.Companion.of( + source: AutofillSaveActivity.Args, +) = ofAutofillStructure( + struct = source.autofillStructure2, + applicationId = source.applicationId, + webDomain = source.webDomain, + webScheme = source.webScheme, +) + +private fun ofAutofillStructure( + struct: AutofillStructure2?, + applicationId: String? = null, + webDomain: String? = null, + webScheme: String? = null, +): AddRoute.Args.Autofill { + val items = struct?.items.orEmpty() + val email = items + .firstOrNull { it.hint == AutofillHint.EMAIL_ADDRESS } + ?.value + ?.takeIf { it.isNotBlank() } + val username = items + .firstOrNull { it.hint == AutofillHint.NEW_USERNAME } + ?.value + ?.takeIf { it.isNotBlank() } + ?: items + .firstOrNull { it.hint == AutofillHint.USERNAME } + ?.value + ?.takeIf { it.isNotBlank() } + ?: email + val password = items + .firstOrNull { it.hint == AutofillHint.NEW_PASSWORD } + ?.value + ?.takeIf { it.isNotBlank() } + ?: items + .firstOrNull { it.hint == AutofillHint.PASSWORD } + ?.value + ?.takeIf { it.isNotBlank() } + ?: items + .firstOrNull { it.hint == AutofillHint.WIFI_PASSWORD } + ?.value + ?.takeIf { it.isNotBlank() } + val phone = items + .firstOrNull { it.hint == AutofillHint.PHONE_NUMBER } + ?.value + ?.takeIf { it.isNotBlank() } + val personName = items + .firstOrNull { it.hint == AutofillHint.PERSON_NAME } + ?.value + ?.takeIf { it.isNotBlank() } + return AddRoute.Args.Autofill( + webDomain = webDomain, + webScheme = webScheme, + // we do not want to add browsers to + // list of uris + applicationId = applicationId + ?.takeIf { + it !in Browsers + } + ?.takeIf { + webDomain == null || + struct?.webView == true + }, + // Login + username = username, + password = password, + // Identity + email = email, + phone = phone, + personName = personName, + ) +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/localization/TextResource.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/localization/TextResource.kt new file mode 100644 index 00000000..360d1b5d --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/localization/TextResource.kt @@ -0,0 +1,24 @@ +package com.artemchep.keyguard.feature.localization + +import android.content.Context +import com.artemchep.keyguard.platform.LeContext +import dev.icerock.moko.resources.StringResource +import dev.icerock.moko.resources.desc.Resource +import dev.icerock.moko.resources.desc.ResourceFormatted +import dev.icerock.moko.resources.desc.StringDesc +import dev.icerock.moko.resources.desc.desc + +fun textResource(text: TextHolder, context: Context): String = when (text) { + is TextHolder.Value -> text.data.desc() + is TextHolder.Res -> text.data.desc() +}.toString(context) + +actual fun textResource(res: StringResource, context: LeContext): String = + StringDesc.Resource(res).toString(context.context) + +actual fun textResource( + res: StringResource, + context: LeContext, + vararg args: Any, +): String = + StringDesc.ResourceFormatted(res, *args).toString(context.context) diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler.kt new file mode 100644 index 00000000..0714466c --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/navigation/NavigationRouterBackHandler.kt @@ -0,0 +1,60 @@ +@file:JvmName("NavigationRouterBackHandler2") + +package com.artemchep.keyguard.feature.navigation + +import androidx.activity.OnBackPressedCallback +import androidx.activity.OnBackPressedDispatcher +import androidx.compose.runtime.Composable +import androidx.compose.runtime.DisposableEffect +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.remember +import kotlinx.coroutines.flow.collect +import kotlinx.coroutines.flow.flatMapLatest +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onEach + +/** + * A definition of the distinct application component that + * makes sense when rendered in a separate window. + */ +@Composable +fun NavigationRouterBackHandler( + onBackPressedDispatcher: OnBackPressedDispatcher, + content: @Composable () -> Unit, +) { + NavigationRouterBackHandler( + sideEffect = { handler -> + val callback: OnBackPressedCallback = remember { + object : OnBackPressedCallback(false) { + override fun handleOnBackPressed() { + val targetEntry = handler.eek.value.values.maxByOrNull { it.backStack.size } + ?: return@handleOnBackPressed + targetEntry.controller.queue(NavigationIntent.Pop) + } + } + } + + DisposableEffect(onBackPressedDispatcher, callback) { + onBackPressedDispatcher.addCallback(callback) + onDispose { + callback.remove() + } + } + LaunchedEffect(callback, handler) { + handler.eek + .map { map -> + map.values.maxByOrNull { it.backStack.size } + ?.controller + ?.canPop() ?: flowOf(false) + } + .flatMapLatest { it } + .onEach { + callback.isEnabled = it + } + .collect() + } + }, + content = content, + ) +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/qr/ScanQrRoute.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/qr/ScanQrRoute.kt new file mode 100644 index 00000000..80878f71 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/qr/ScanQrRoute.kt @@ -0,0 +1,16 @@ +package com.artemchep.keyguard.feature.qr + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.feature.navigation.RouteForResult +import com.artemchep.keyguard.feature.navigation.RouteResultTransmitter + +actual object ScanQrRoute : RouteForResult { + @Composable + override fun Content( + transmitter: RouteResultTransmitter, + ) { + ScanQrScreen( + transmitter = transmitter, + ) + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/qr/ScanQrScreen.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/qr/ScanQrScreen.kt new file mode 100644 index 00000000..9e724fcb --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/qr/ScanQrScreen.kt @@ -0,0 +1,223 @@ +package com.artemchep.keyguard.feature.qr + +import android.Manifest +import android.annotation.SuppressLint +import androidx.camera.core.CameraSelector +import androidx.camera.core.ImageAnalysis +import androidx.camera.core.ImageProxy +import androidx.camera.core.Preview +import androidx.camera.lifecycle.ProcessCameraProvider +import androidx.camera.view.PreviewView +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.statusBarsPadding +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Button +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.* +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.platform.LocalLifecycleOwner +import androidx.compose.ui.unit.dp +import androidx.compose.ui.viewinterop.AndroidView +import androidx.core.content.ContextCompat +import com.artemchep.keyguard.feature.navigation.NavigationIcon +import com.artemchep.keyguard.feature.navigation.RouteResultTransmitter +import com.artemchep.keyguard.ui.CollectedEffect +import com.artemchep.keyguard.ui.ScaffoldColumn +import com.artemchep.keyguard.ui.theme.Dimens +import com.artemchep.keyguard.ui.toolbar.SmallToolbar +import com.google.accompanist.permissions.ExperimentalPermissionsApi +import com.google.accompanist.permissions.PermissionStatus +import com.google.accompanist.permissions.rememberPermissionState +import com.google.mlkit.vision.barcode.BarcodeScanning +import com.google.mlkit.vision.barcode.common.Barcode +import com.google.mlkit.vision.common.InputImage +import java.util.concurrent.Executors + +@Composable +fun ScanQrScreen( + transmitter: RouteResultTransmitter, +) { + val state = scanQrScreenState() + + CollectedEffect(state.effects.onSuccessFlow) { rawValue -> + // Notify that we have successfully logged in, and that + // the caller can now decide what to do. + transmitter.invoke(rawValue) + } + + ScanQrScreen( + state = state, + ) +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun ScanQrScreen( + state: ScanQrState, +) { + val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior() + ScaffoldColumn( + modifier = Modifier + .nestedScroll(scrollBehavior.nestedScrollConnection), + topAppBarScrollBehavior = scrollBehavior, + topBar = { + SmallToolbar( + modifier = Modifier + .statusBarsPadding(), + title = { + Text("Scan QR code") + }, + navigationIcon = { + NavigationIcon() + }, + scrollBehavior = scrollBehavior, + ) + }, + ) { + ScanQrCamera2( + state = state, + ) + } +} + +@OptIn(ExperimentalPermissionsApi::class) +@Composable +private fun ScanQrCamera2( + state: ScanQrState, +) { + val cameraPermissionState = rememberPermissionState(Manifest.permission.CAMERA) + when (val status = cameraPermissionState.status) { + // If the camera permission is granted, then show screen with the feature enabled + PermissionStatus.Granted -> { + ScanQrCamera( + modifier = Modifier + .padding(16.dp) + .clip(RoundedCornerShape(16.dp)) + .aspectRatio(1f), + state = state, + ) + } + + is PermissionStatus.Denied -> { + Column( + modifier = Modifier + .padding(horizontal = Dimens.horizontalPadding), + ) { + val textToShow = if (status.shouldShowRationale) { + // If the user has denied the permission but the rationale can be shown, + // then gently explain why the app requires this permission + "The camera is important for this app. Please grant the permission." + } else { + // If it's the first time the user lands on this feature, or the user + // doesn't want to be asked again for this permission, explain that the + // permission is required + "Camera permission required for this feature to be available. " + + "Please grant the permission" + } + Text(textToShow) + Button( + onClick = { + cameraPermissionState.launchPermissionRequest() + }, + ) { + Text("Request permission") + } + } + } + } +} + +@OptIn(ExperimentalPermissionsApi::class) +@Composable +private fun ScanQrCamera( + modifier: Modifier = Modifier, + state: ScanQrState, +) { + val onScan by rememberUpdatedState(state.onScan) + val analyzer = remember { + QrImageAnalyzer { barcodes -> + onScan?.invoke(barcodes) + } + } + val analyserExecutor = remember { + Executors.newSingleThreadExecutor() + } + DisposableEffect(analyserExecutor) { + onDispose { + analyserExecutor.shutdown() + } + } + + // TODO: Local lifecycle owner is a wrong guy!!! + val lifecycleOwner by rememberUpdatedState(LocalLifecycleOwner.current) + AndroidView( + modifier = modifier, + factory = { context -> + val previewView = PreviewView(context) + + val cameraExecutor = ContextCompat.getMainExecutor(context) + val cameraProviderFuture = ProcessCameraProvider.getInstance(context) + cameraProviderFuture.addListener( + { + val cameraProvider: ProcessCameraProvider = cameraProviderFuture.get() + val preview = Preview.Builder() + .build() + .also { + it.setSurfaceProvider(previewView.surfaceProvider) + } + val imageAnalysis = ImageAnalysis.Builder() + .setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST) + .build() + imageAnalysis.setAnalyzer(cameraExecutor, analyzer) + val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA + try { + cameraProvider.unbindAll() + cameraProvider.bindToLifecycle( + lifecycleOwner, + cameraSelector, + imageAnalysis, + preview, + ) + } catch (_: Exception) { + // Do nothing. + } + }, + cameraExecutor, + ) + + previewView + }, + update = { previewView -> + }, + ) +} + +private class QrImageAnalyzer( + private val onReadBarcode: (barcodes: List) -> Unit, +) : ImageAnalysis.Analyzer { + override fun analyze(imageProxy: ImageProxy) { + scanBarcode(imageProxy) + } + + @SuppressLint("UnsafeExperimentalUsageError") + private fun scanBarcode(imageProxy: ImageProxy) { + imageProxy.image?.let { image -> + val inputImage = InputImage.fromMediaImage(image, imageProxy.imageInfo.rotationDegrees) + val scanner = BarcodeScanning.getClient() + scanner + .process(inputImage) + .addOnCompleteListener { + imageProxy.close() + + // Send the barcodes. + if (it.isSuccessful) onReadBarcode(it.result as List) + } + } + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/qr/ScanQrState.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/qr/ScanQrState.kt new file mode 100644 index 00000000..a9a6ae8b --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/qr/ScanQrState.kt @@ -0,0 +1,20 @@ +package com.artemchep.keyguard.feature.qr + +import androidx.compose.runtime.Immutable +import arrow.optics.optics +import com.google.mlkit.vision.barcode.common.Barcode +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.emptyFlow + +data class ScanQrState( + val effects: SideEffect = SideEffect(), + val onScan: ((List) -> Unit)? = null, +) { + @Immutable + @optics + data class SideEffect( + val onSuccessFlow: Flow = emptyFlow(), + ) { + companion object + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/qr/ScanQrStateProducer.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/qr/ScanQrStateProducer.kt new file mode 100644 index 00000000..ab2860a1 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/qr/ScanQrStateProducer.kt @@ -0,0 +1,41 @@ +package com.artemchep.keyguard.feature.qr + +import androidx.compose.runtime.Composable +import com.artemchep.keyguard.common.util.flow.EventFlow +import com.artemchep.keyguard.feature.navigation.state.produceScreenState +import com.google.mlkit.vision.barcode.common.Barcode +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.mapNotNull +import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.flow.take + +@Composable +fun scanQrScreenState(): ScanQrState = produceScreenState( + key = "scan_qr", + initial = ScanQrState(), +) { + val successEventSink = EventFlow() + val successBarcodeSink = EventFlow() + successBarcodeSink + .mapNotNull { it.rawValue } + .take(1) + .onEach { rawValue -> + successEventSink.emit(rawValue) + } + .launchIn(this) + + val onScan = { barcodes: List -> + barcodes.forEach { barcode -> + successBarcodeSink.emit(barcode) + } + } + + val state = ScanQrState( + effects = ScanQrState.SideEffect( + onSuccessFlow = successEventSink, + ), + onScan = onScan, + ) + flowOf(state) +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/yubikey/Yubi.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/yubikey/Yubi.kt new file mode 100644 index 00000000..069997e8 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/feature/yubikey/Yubi.kt @@ -0,0 +1,235 @@ +package com.artemchep.keyguard.feature.yubikey + +import android.content.Context +import androidx.compose.foundation.focusable +import androidx.compose.foundation.layout.Spacer +import androidx.compose.runtime.Composable +import androidx.compose.runtime.DisposableEffect +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.State +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.Modifier +import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.focus.focusRequester +import androidx.compose.ui.hapticfeedback.HapticFeedbackType +import androidx.compose.ui.input.key.onKeyEvent +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalHapticFeedback +import arrow.core.left +import arrow.core.right +import com.artemchep.keyguard.android.closestActivityOrNull +import com.artemchep.keyguard.common.model.Loadable +import com.yubico.yubikit.android.YubiKitManager +import com.yubico.yubikit.android.transport.nfc.NfcConfiguration +import com.yubico.yubikit.android.transport.nfc.NfcNotAvailable +import com.yubico.yubikit.android.transport.nfc.NfcYubiKeyDevice +import com.yubico.yubikit.android.transport.usb.UsbConfiguration +import com.yubico.yubikit.android.transport.usb.UsbYubiKeyDevice +import com.yubico.yubikit.android.ui.OtpKeyListener +import com.yubico.yubikit.android.ui.OtpKeyListener.OtpListener +import com.yubico.yubikit.core.UsbPid +import com.yubico.yubikit.core.util.Callback +import com.yubico.yubikit.core.util.NdefUtils +import kotlinx.collections.immutable.PersistentMap +import kotlinx.collections.immutable.persistentMapOf +import kotlinx.collections.immutable.toImmutableSet +import java.io.IOException +import java.util.UUID + +@Composable +actual fun rememberYubiKey( + send: OnYubiKeyListener?, +): YubiKeyState { + val context = LocalContext.current + val kit = remember(context) { + YubiKitManager(context) + } + + val usbState = kit.rememberYubiKeyUsbState( + context = context, + send = send, + ) + val nfcState = kit.rememberYubiKeyNfcState( + context = context, + send = send, + ) + + return remember(usbState, nfcState) { + YubiKeyState( + usbState = usbState, + nfcState = nfcState, + ) + } +} + +@Composable +private fun YubiKitManager.rememberYubiKeyUsbState( + context: Context, + send: OnYubiKeyListener?, +): State> { + data class ActiveDevice( + val id: String, + val pid: UsbPid, + ) + + val devicesState = remember { + mutableStateOf>(persistentMapOf()) + } + val loadedState = remember { + mutableStateOf(false) + } + val enabledState = remember { + mutableStateOf(false) + } + val capturingState = remember { + mutableStateOf(false) + } + + val updatedHaptic = rememberUpdatedState(newValue = LocalHapticFeedback.current) + val updatedSend = rememberUpdatedState(newValue = send) + val otpKeyListener = remember { + OtpKeyListener( + object : OtpListener { + override fun onCaptureStarted() { + capturingState.value = true + } + + override fun onCaptureComplete(credentials: String) { + val event = credentials.right() + updatedSend.value?.invoke(event) + + capturingState.value = false + // Notify user that something had happened, it kinda + // makes him fill that it worked. + updatedHaptic.value.performHapticFeedback(HapticFeedbackType.LongPress) + } + }, + ) + } + val requester = remember { + FocusRequester() + } + Spacer( + modifier = Modifier + .onKeyEvent { event -> + otpKeyListener.onKeyEvent(event.nativeKeyEvent) + } + .focusRequester(requester) + .focusable(), + ) + LaunchedEffect(requester) { + requester.requestFocus() + } + + DisposableEffect(context, this) { + val callback = Callback { device: UsbYubiKeyDevice -> + val info = ActiveDevice( + id = UUID.randomUUID().toString(), + pid = device.pid, + ) + + // Add device to the state. + kotlin.run { + val newState = devicesState.value.builder().apply { + put(info.id, info) + }.build() + devicesState.value = newState + } + device.setOnClosed { + // Remove device from the state. + val newState = devicesState.value.builder().apply { + remove(info.id) + }.build() + devicesState.value = newState + } + } + try { + val config = UsbConfiguration() + startUsbDiscovery(config, callback) + } catch (e: Exception) { + // Since we did not start USB discovery, we do not + // want to stop it either. + loadedState.value = true + enabledState.value = false + return@DisposableEffect onDispose { + // Do nothing. + } + } + loadedState.value = true + enabledState.value = true + onDispose { + stopUsbDiscovery() + } + } + + return remember( + loadedState, + enabledState, + capturingState, + devicesState, + ) { + derivedStateOf { + val loaded = loadedState.value + if (!loaded) return@derivedStateOf Loadable.Loading + + val enabled = enabledState.value + val capturing = capturingState.value + val devices = devicesState.value + .values + .asSequence() + .map { it.pid } + .toImmutableSet() + val state = YubiKeyUsbState( + enabled = enabled, + capturing = capturing, + devices = devices, + ) + Loadable.Ok(state) + } + } +} + +@Composable +private fun YubiKitManager.rememberYubiKeyNfcState( + context: Context, + send: OnYubiKeyListener?, +): State> { + val state = remember { + mutableStateOf>(Loadable.Loading) + } + + val updatedSend = rememberUpdatedState(newValue = send) + DisposableEffect(context, this) { + val activity = requireNotNull(context.closestActivityOrNull) + val callback = Callback { device: NfcYubiKeyDevice -> + val event = try { + val credential = NdefUtils.getNdefPayload(device.readNdef()) + credential.right() + } catch (e: IOException) { + // Failed to read the credentials. + e.left() + } + updatedSend.value?.invoke(event) + } + try { + val config = NfcConfiguration() + startNfcDiscovery(config, activity, callback) + } catch (e: NfcNotAvailable) { + // Since we did not start NFC discovery, we do not + // want to stop it either. + state.value = Loadable.Ok(YubiKeyNfcState(enabled = false)) + return@DisposableEffect onDispose { + // Do nothing. + } + } + state.value = Loadable.Ok(YubiKeyNfcState(enabled = true)) + onDispose { + stopNfcDiscovery(activity) + } + } + + return state +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/LeActivity.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/LeActivity.kt new file mode 100644 index 00000000..8bf2fd6f --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/LeActivity.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.platform + +import android.app.Activity + +actual typealias LeActivity = Activity diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/LeAnimation.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/LeAnimation.kt new file mode 100644 index 00000000..976d81e9 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/LeAnimation.kt @@ -0,0 +1,23 @@ +package com.artemchep.keyguard.platform + +import android.provider.Settings +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.compose.ui.platform.LocalContext + +actual val LocalAnimationFactor: Float + @Composable + get() { + val context = LocalContext.current + val scale = remember(context) { + try { + Settings.Global.getFloat( + context.contentResolver, + Settings.Global.TRANSITION_ANIMATION_SCALE, + ) + } catch (e: Settings.SettingNotFoundException) { + 1f + } + } + return scale + } diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/LeBundle.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/LeBundle.kt new file mode 100644 index 00000000..dac836e9 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/LeBundle.kt @@ -0,0 +1,14 @@ +package com.artemchep.keyguard.platform + +import android.os.Bundle +import androidx.core.os.bundleOf + +actual typealias LeBundle = Bundle + +actual operator fun LeBundle.contains(key: String) = containsKey(key) + +actual operator fun LeBundle.get(key: String) = get(key) + +actual fun leBundleOf( + vararg map: Pair, +): LeBundle = bundleOf(*map) diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/LeContext.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/LeContext.kt new file mode 100644 index 00000000..34274598 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/LeContext.kt @@ -0,0 +1,16 @@ +package com.artemchep.keyguard.platform + +import android.content.Context +import androidx.compose.runtime.Composable +import androidx.compose.ui.platform.LocalContext + +actual class LeContext( + val context: Context, +) + +actual val LocalLeContext: LeContext + @Composable + get() { + val context = LocalContext.current + return LeContext(context) + } diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/LeDebug.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/LeDebug.kt new file mode 100644 index 00000000..3b64fbb5 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/LeDebug.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.platform + + import com.artemchep.keyguard.common.BuildConfig + +actual val isStandalone: Boolean = BuildConfig.FLAVOR == "none" diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/LePlatform.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/LePlatform.kt new file mode 100644 index 00000000..317b7575 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/LePlatform.kt @@ -0,0 +1,14 @@ +package com.artemchep.keyguard.platform + +import android.os.Build + +private val platform by lazy { + val isChromebook = Build.DEVICE.orEmpty() + .matches(".+_cheets|cheets_.+".toRegex()) + Platform.Mobile.Android( + isChromebook = isChromebook, + ) +} + +actual val CurrentPlatform: Platform + get() = platform diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/LeUri.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/LeUri.kt new file mode 100644 index 00000000..5b8833ee --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/LeUri.kt @@ -0,0 +1,11 @@ +package com.artemchep.keyguard.platform + +import android.net.Uri +import androidx.core.net.toUri +import java.io.File + +actual typealias LeUri = Uri + +actual fun leParseUri(uri: String): LeUri = Uri.parse(uri) + +actual fun leParseUri(file: File): LeUri = file.toUri() diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/LeUsbPid.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/LeUsbPid.kt new file mode 100644 index 00000000..c9568885 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/LeUsbPid.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.platform + +import com.yubico.yubikit.core.UsbPid + +actual typealias LeUsbPid = UsbPid diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/leIme.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/leIme.kt new file mode 100644 index 00000000..af029b59 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/leIme.kt @@ -0,0 +1,35 @@ +package com.artemchep.keyguard.platform + +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.displayCutout +import androidx.compose.foundation.layout.ime +import androidx.compose.foundation.layout.navigationBars +import androidx.compose.foundation.layout.statusBars +import androidx.compose.foundation.layout.systemBars +import androidx.compose.runtime.Composable +import androidx.compose.runtime.NonRestartableComposable + +actual val WindowInsets.Companion.leIme: WindowInsets + @Composable + @NonRestartableComposable + get() = ime + +actual val WindowInsets.Companion.leNavigationBars: WindowInsets + @Composable + @NonRestartableComposable + get() = navigationBars + +actual val WindowInsets.Companion.leStatusBars: WindowInsets + @Composable + @NonRestartableComposable + get() = statusBars + +actual val WindowInsets.Companion.leSystemBars: WindowInsets + @Composable + @NonRestartableComposable + get() = systemBars + +actual val WindowInsets.Companion.leDisplayCutout: WindowInsets + @Composable + @NonRestartableComposable + get() = displayCutout diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlow.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlow.kt new file mode 100644 index 00000000..dbe6fe87 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/lifecycle/LocalLifecycleStateFlow.kt @@ -0,0 +1,39 @@ +package com.artemchep.keyguard.platform.lifecycle + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.DisposableEffect +import androidx.compose.runtime.remember +import androidx.compose.ui.platform.LocalLifecycleOwner +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.LifecycleEventObserver +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow + +actual val LocalLifecycleStateFlow: StateFlow + @Composable + get() { + val lifecycleOwner = LocalLifecycleOwner.current + val sink = remember(lifecycleOwner) { + val initialState = lifecycleOwner.lifecycle.currentState + MutableStateFlow(initialState.toCommon()) + } + DisposableEffect(lifecycleOwner, sink) { + val observer = LifecycleEventObserver { _, event -> + val newState = event.targetState + sink.value = newState.toCommon() + } + lifecycleOwner.lifecycle.addObserver(observer) + onDispose { + lifecycleOwner.lifecycle.removeObserver(observer) + } + } + return sink + } + +fun Lifecycle.State.toCommon() = when (this) { + Lifecycle.State.DESTROYED -> LeLifecycleState.DESTROYED + Lifecycle.State.INITIALIZED -> LeLifecycleState.INITIALIZED + Lifecycle.State.CREATED -> LeLifecycleState.CREATED + Lifecycle.State.STARTED -> LeLifecycleState.STARTED + Lifecycle.State.RESUMED -> LeLifecycleState.RESUMED +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/parcelize/LeIgnoredOnParcel.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/parcelize/LeIgnoredOnParcel.kt new file mode 100644 index 00000000..116ba113 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/parcelize/LeIgnoredOnParcel.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.platform.parcelize + +import kotlinx.parcelize.IgnoredOnParcel + +actual typealias LeIgnoredOnParcel = IgnoredOnParcel diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/parcelize/LeParcelable.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/parcelize/LeParcelable.kt new file mode 100644 index 00000000..e5f37c02 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/parcelize/LeParcelable.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.platform.parcelize + +import android.os.Parcelable + +actual typealias LeParcelable = Parcelable diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/parcelize/LeParcelize.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/parcelize/LeParcelize.kt new file mode 100644 index 00000000..abba6905 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/parcelize/LeParcelize.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.platform.parcelize + +import kotlinx.parcelize.Parcelize + +actual typealias LeParcelize = Parcelize diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/recordException.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/recordException.kt new file mode 100644 index 00000000..e55ca147 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/platform/recordException.kt @@ -0,0 +1,35 @@ +package com.artemchep.keyguard.platform + +import com.artemchep.keyguard.platform.util.isRelease +import com.google.firebase.crashlytics.isEnabled +import com.google.firebase.crashlytics.isEnabledFlow +import com.google.firebase.crashlytics.ktx.crashlytics +import com.google.firebase.crashlytics.setEnabled +import com.google.firebase.ktx.Firebase +import kotlinx.coroutines.flow.Flow +import java.net.UnknownHostException + +actual fun recordException(e: Throwable) { + if ( + e is UnknownHostException + ) { + return + } + Firebase.crashlytics.recordException(e) + if (!isRelease) { + e.printStackTrace() + } +} + +actual fun recordLog(message: String) { + Firebase.crashlytics.log(message) +} + +actual fun crashlyticsIsEnabled(): Boolean? = + Firebase.crashlytics.isEnabled() + +actual fun crashlyticsIsEnabledFlow(): Flow = + Firebase.crashlytics.isEnabledFlow() + +actual fun crashlyticsSetEnabled(enabled: Boolean?) = + Firebase.crashlytics.setEnabled(enabled) diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/room/AppDatabase.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/AppDatabase.kt new file mode 100644 index 00000000..c34cbcf9 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/AppDatabase.kt @@ -0,0 +1,52 @@ +package com.artemchep.keyguard.room + +import androidx.room.AutoMigration +import androidx.room.Database +import androidx.room.RoomDatabase +import androidx.room.TypeConverters +import com.artemchep.keyguard.room.dao.AccountDao +import com.artemchep.keyguard.room.dao.CipherDao +import com.artemchep.keyguard.room.dao.CollectionDao +import com.artemchep.keyguard.room.dao.FillCipherHistoryDao +import com.artemchep.keyguard.room.dao.FolderDao +import com.artemchep.keyguard.room.dao.MetaDao +import com.artemchep.keyguard.room.dao.OpenCipherHistoryDao +import com.artemchep.keyguard.room.dao.OrganizationDao +import com.artemchep.keyguard.room.dao.ProfileDao + +@Database( + entities = [ + RoomBitwardenCipher::class, + RoomBitwardenCollection::class, + RoomBitwardenOrganization::class, + RoomBitwardenFolder::class, + RoomBitwardenProfile::class, + RoomBitwardenMeta::class, + RoomBitwardenToken::class, + // history + RoomOpenCipherHistory::class, + RoomFillCipherHistory::class, + ], + autoMigrations = [ + AutoMigration(from = 1, to = 2), + AutoMigration(from = 2, to = 3), + AutoMigration(from = 3, to = 4), + AutoMigration(from = 4, to = 5), + AutoMigration(from = 5, to = 6), + AutoMigration(from = 6, to = 7), + ], + version = 7, + exportSchema = true, +) +@TypeConverters(RoomSecretConverter::class) +abstract class AppDatabase : RoomDatabase() { + abstract fun cipherDao(): CipherDao + abstract fun collectionDao(): CollectionDao + abstract fun organizationDao(): OrganizationDao + abstract fun metaDao(): MetaDao + abstract fun folderDao(): FolderDao + abstract fun profileDao(): ProfileDao + abstract fun accountDao(): AccountDao + abstract fun fillCipherHistoryDao(): FillCipherHistoryDao + abstract fun openCipherHistoryDao(): OpenCipherHistoryDao +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomBitwardenCipher.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomBitwardenCipher.kt new file mode 100644 index 00000000..e69f95f8 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomBitwardenCipher.kt @@ -0,0 +1,26 @@ +package com.artemchep.keyguard.room + +import androidx.room.Entity +import androidx.room.ForeignKey +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher + +@Entity( + tableName = "RoomBitwardenCipher", + primaryKeys = [ + "itemId", + ], + foreignKeys = [ + ForeignKey( + entity = RoomBitwardenToken::class, + parentColumns = arrayOf("accountId"), + childColumns = arrayOf("accountId"), + onDelete = ForeignKey.CASCADE, + ), + ], +) +data class RoomBitwardenCipher( + val itemId: String, + val accountId: String, + val folderId: String?, + val content: BitwardenCipher, +) diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomBitwardenCollection.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomBitwardenCollection.kt new file mode 100644 index 00000000..7ab8c70e --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomBitwardenCollection.kt @@ -0,0 +1,26 @@ +package com.artemchep.keyguard.room + +import androidx.room.Entity +import androidx.room.ForeignKey +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCollection + +@Entity( + tableName = "RoomBitwardenCollection", + primaryKeys = [ + "collectionId", + "accountId", + ], + foreignKeys = [ + ForeignKey( + entity = RoomBitwardenToken::class, + parentColumns = arrayOf("accountId"), + childColumns = arrayOf("accountId"), + onDelete = ForeignKey.CASCADE, + ), + ], +) +data class RoomBitwardenCollection( + val collectionId: String, + val accountId: String, + val content: BitwardenCollection, +) diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomBitwardenFolder.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomBitwardenFolder.kt new file mode 100644 index 00000000..f5cc93d7 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomBitwardenFolder.kt @@ -0,0 +1,25 @@ +package com.artemchep.keyguard.room + +import androidx.room.Entity +import androidx.room.ForeignKey +import com.artemchep.keyguard.core.store.bitwarden.BitwardenFolder + +@Entity( + tableName = "RoomBitwardenFolder", + primaryKeys = [ + "folderId", + ], + foreignKeys = [ + ForeignKey( + entity = RoomBitwardenToken::class, + parentColumns = arrayOf("accountId"), + childColumns = arrayOf("accountId"), + onDelete = ForeignKey.CASCADE, + ), + ], +) +data class RoomBitwardenFolder( + val folderId: String, + val accountId: String, + val content: BitwardenFolder, +) diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomBitwardenMeta.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomBitwardenMeta.kt new file mode 100644 index 00000000..b5c724ed --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomBitwardenMeta.kt @@ -0,0 +1,24 @@ +package com.artemchep.keyguard.room + +import androidx.room.Entity +import androidx.room.ForeignKey +import com.artemchep.keyguard.core.store.bitwarden.BitwardenMeta + +@Entity( + tableName = "RoomBitwardenMeta", + primaryKeys = [ + "accountId", + ], + foreignKeys = [ + ForeignKey( + entity = RoomBitwardenToken::class, + parentColumns = arrayOf("accountId"), + childColumns = arrayOf("accountId"), + onDelete = ForeignKey.CASCADE, + ), + ], +) +data class RoomBitwardenMeta( + val accountId: String, + val content: BitwardenMeta, +) diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomBitwardenOrganization.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomBitwardenOrganization.kt new file mode 100644 index 00000000..96d5db87 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomBitwardenOrganization.kt @@ -0,0 +1,26 @@ +package com.artemchep.keyguard.room + +import androidx.room.Entity +import androidx.room.ForeignKey +import com.artemchep.keyguard.core.store.bitwarden.BitwardenOrganization + +@Entity( + tableName = "RoomBitwardenOrganization", + primaryKeys = [ + "organizationId", + "accountId", + ], + foreignKeys = [ + ForeignKey( + entity = RoomBitwardenToken::class, + parentColumns = arrayOf("accountId"), + childColumns = arrayOf("accountId"), + onDelete = ForeignKey.CASCADE, + ), + ], +) +data class RoomBitwardenOrganization( + val organizationId: String, + val accountId: String, + val content: BitwardenOrganization, +) diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomBitwardenProfile.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomBitwardenProfile.kt new file mode 100644 index 00000000..b6d21135 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomBitwardenProfile.kt @@ -0,0 +1,26 @@ +package com.artemchep.keyguard.room + +import androidx.room.Entity +import androidx.room.ForeignKey +import com.artemchep.keyguard.core.store.bitwarden.BitwardenProfile + +@Entity( + tableName = "RoomBitwardenProfile", + primaryKeys = [ + "profileId", + "accountId", + ], + foreignKeys = [ + ForeignKey( + entity = RoomBitwardenToken::class, + parentColumns = arrayOf("accountId"), + childColumns = arrayOf("accountId"), + onDelete = ForeignKey.CASCADE, + ), + ], +) +data class RoomBitwardenProfile( + val profileId: String, + val accountId: String, + val content: BitwardenProfile, +) diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomBitwardenToken.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomBitwardenToken.kt new file mode 100644 index 00000000..9468371e --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomBitwardenToken.kt @@ -0,0 +1,15 @@ +package com.artemchep.keyguard.room + +import androidx.room.Entity +import com.artemchep.keyguard.core.store.bitwarden.BitwardenToken + +@Entity( + tableName = "RoomBitwardenToken", + primaryKeys = [ + "accountId", + ], +) +data class RoomBitwardenToken( + val accountId: String, + val content: BitwardenToken, +) diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomFillCipherHistory.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomFillCipherHistory.kt new file mode 100644 index 00000000..cb76caf1 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomFillCipherHistory.kt @@ -0,0 +1,30 @@ +package com.artemchep.keyguard.room + +import androidx.room.Entity +import androidx.room.ForeignKey +import androidx.room.PrimaryKey + +@Entity( + tableName = "RoomFillCipherHistory", + foreignKeys = [ + ForeignKey( + entity = RoomBitwardenToken::class, + parentColumns = arrayOf("accountId"), + childColumns = arrayOf("accountId"), + onDelete = ForeignKey.CASCADE, + ), + ForeignKey( + entity = RoomBitwardenCipher::class, + parentColumns = arrayOf("itemId"), + childColumns = arrayOf("itemId"), + onDelete = ForeignKey.CASCADE, + ), + ], +) +data class RoomFillCipherHistory( + @PrimaryKey(autoGenerate = true) + val id: Int = 0, + val itemId: String, + val accountId: String, + val timestamp: Long, +) diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomMigrationException.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomMigrationException.kt new file mode 100644 index 00000000..850fada9 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomMigrationException.kt @@ -0,0 +1,5 @@ +package com.artemchep.keyguard.room + +class RoomMigrationException( + e: Throwable, +) : RuntimeException(e) diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomOpenCipherHistory.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomOpenCipherHistory.kt new file mode 100644 index 00000000..5507a353 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomOpenCipherHistory.kt @@ -0,0 +1,30 @@ +package com.artemchep.keyguard.room + +import androidx.room.Entity +import androidx.room.ForeignKey +import androidx.room.PrimaryKey + +@Entity( + tableName = "RoomOpenCipherHistory", + foreignKeys = [ + ForeignKey( + entity = RoomBitwardenToken::class, + parentColumns = arrayOf("accountId"), + childColumns = arrayOf("accountId"), + onDelete = ForeignKey.CASCADE, + ), + ForeignKey( + entity = RoomBitwardenCipher::class, + parentColumns = arrayOf("itemId"), + childColumns = arrayOf("itemId"), + onDelete = ForeignKey.CASCADE, + ), + ], +) +data class RoomOpenCipherHistory( + @PrimaryKey(autoGenerate = true) + val id: Int = 0, + val itemId: String, + val accountId: String, + val timestamp: Long, +) diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomSecret.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomSecret.kt new file mode 100644 index 00000000..b1ce6571 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/RoomSecret.kt @@ -0,0 +1,80 @@ +package com.artemchep.keyguard.room + +import androidx.room.ProvidedTypeConverter +import androidx.room.TypeConverter +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCipher +import com.artemchep.keyguard.core.store.bitwarden.BitwardenCollection +import com.artemchep.keyguard.core.store.bitwarden.BitwardenFolder +import com.artemchep.keyguard.core.store.bitwarden.BitwardenMeta +import com.artemchep.keyguard.core.store.bitwarden.BitwardenOrganization +import com.artemchep.keyguard.core.store.bitwarden.BitwardenProfile +import com.artemchep.keyguard.core.store.bitwarden.BitwardenToken +import kotlinx.serialization.encodeToString +import kotlinx.serialization.json.Json + +@ProvidedTypeConverter +class RoomSecretConverter( + private val json: Json, +) { + @TypeConverter + fun encodeToken(model: BitwardenToken?) = encode(model) + + @TypeConverter + fun encodeCipher(model: BitwardenCipher?) = encode(model) + + @TypeConverter + fun encodeCollection(model: BitwardenCollection?) = encode(model) + + @TypeConverter + fun encodeFolder(model: BitwardenFolder?) = encode(model) + + @TypeConverter + fun encodeMeta(model: BitwardenMeta?) = encode(model) + + @TypeConverter + fun encodeProfile(model: BitwardenProfile?) = encode(model) + + @TypeConverter + fun encodeOrganization(model: BitwardenOrganization?) = encode(model) + + private inline fun encode(model: T?): String? { + if (model == null) { + // We can not serialize null models, so just + // write them as null. + return null + } + + return json.encodeToString(model) + } + + @TypeConverter + fun decodeToken(text: String?): BitwardenToken? = decode(text) + + @TypeConverter + fun decodeCipher(text: String?): BitwardenCipher? = decode(text) + + @TypeConverter + fun decodeCollection(text: String?): BitwardenCollection? = decode(text) + + @TypeConverter + fun decodeFolder(text: String?): BitwardenFolder? = decode(text) + + @TypeConverter + fun decodeMeta(text: String?): BitwardenMeta? = decode(text) + + @TypeConverter + fun decodeProfile(text: String?): BitwardenProfile? = decode(text) + + @TypeConverter + fun decodeOrganization(text: String?): BitwardenOrganization? = decode(text) + + private inline fun decode(text: String?): T? { + if (text == null) { + // We can not serialize null models, so just + // write them as null. + return null + } + + return json.decodeFromString(text) + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/AccountDao.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/AccountDao.kt new file mode 100644 index 00000000..ed6ab782 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/AccountDao.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.room.dao + +import androidx.room.Dao +import androidx.room.Query +import com.artemchep.keyguard.room.RoomBitwardenToken +import kotlinx.coroutines.flow.Flow + +@Dao +interface AccountDao { + @Query("SELECT * FROM RoomBitwardenToken") + fun getAll(): Flow> +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/CipherDao.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/CipherDao.kt new file mode 100644 index 00000000..eb5d6e93 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/CipherDao.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.room.dao + +import androidx.room.Dao +import androidx.room.Query +import com.artemchep.keyguard.room.RoomBitwardenCipher +import kotlinx.coroutines.flow.Flow + +@Dao +interface CipherDao { + @Query("SELECT * FROM RoomBitwardenCipher") + fun getAll(): Flow> +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/CollectionDao.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/CollectionDao.kt new file mode 100644 index 00000000..3d38a279 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/CollectionDao.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.room.dao + +import androidx.room.Dao +import androidx.room.Query +import com.artemchep.keyguard.room.RoomBitwardenCollection +import kotlinx.coroutines.flow.Flow + +@Dao +interface CollectionDao { + @Query("SELECT * FROM RoomBitwardenCollection") + fun getAll(): Flow> +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/FillCipherHistoryDao.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/FillCipherHistoryDao.kt new file mode 100644 index 00000000..9eba0d00 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/FillCipherHistoryDao.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.room.dao + +import androidx.room.Dao +import androidx.room.Query +import com.artemchep.keyguard.room.RoomFillCipherHistory +import kotlinx.coroutines.flow.Flow + +@Dao +interface FillCipherHistoryDao { + @Query("SELECT * FROM RoomFillCipherHistory") + fun getAll(): Flow> +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/FolderDao.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/FolderDao.kt new file mode 100644 index 00000000..c962e706 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/FolderDao.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.room.dao + +import androidx.room.Dao +import androidx.room.Query +import com.artemchep.keyguard.room.RoomBitwardenFolder +import kotlinx.coroutines.flow.Flow + +@Dao +interface FolderDao { + @Query("SELECT * FROM RoomBitwardenFolder") + fun getAll(): Flow> +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/MetaDao.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/MetaDao.kt new file mode 100644 index 00000000..4df419a6 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/MetaDao.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.room.dao + +import androidx.room.Dao +import androidx.room.Query +import com.artemchep.keyguard.room.RoomBitwardenMeta +import kotlinx.coroutines.flow.Flow + +@Dao +interface MetaDao { + @Query("SELECT * FROM RoomBitwardenMeta") + fun getAll(): Flow> +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/OpenCipherHistoryDao.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/OpenCipherHistoryDao.kt new file mode 100644 index 00000000..5b70abb8 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/OpenCipherHistoryDao.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.room.dao + +import androidx.room.Dao +import androidx.room.Query +import com.artemchep.keyguard.room.RoomOpenCipherHistory +import kotlinx.coroutines.flow.Flow + +@Dao +interface OpenCipherHistoryDao { + @Query("SELECT * FROM RoomOpenCipherHistory ORDER BY timestamp DESC") + fun getAll(): Flow> +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/OrganizationDao.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/OrganizationDao.kt new file mode 100644 index 00000000..74d6ec94 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/OrganizationDao.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.room.dao + +import androidx.room.Dao +import androidx.room.Query +import com.artemchep.keyguard.room.RoomBitwardenOrganization +import kotlinx.coroutines.flow.Flow + +@Dao +interface OrganizationDao { + @Query("SELECT * FROM RoomBitwardenOrganization") + fun getAll(): Flow> +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/ProfileDao.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/ProfileDao.kt new file mode 100644 index 00000000..541993c0 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/room/dao/ProfileDao.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.room.dao + +import androidx.room.Dao +import androidx.room.Query +import com.artemchep.keyguard.room.RoomBitwardenProfile +import kotlinx.coroutines.flow.Flow + +@Dao +interface ProfileDao { + @Query("SELECT * FROM RoomBitwardenProfile") + fun getAll(): Flow> +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/ui/Html.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/ui/Html.kt new file mode 100644 index 00000000..eee8ee96 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/ui/Html.kt @@ -0,0 +1,22 @@ +package com.artemchep.keyguard.ui + +import androidx.compose.material.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.SpanStyle +import androidx.compose.ui.text.style.TextDecoration + +@Composable +actual fun HtmlText( + modifier: Modifier, + html: String, +) { + de.charlex.compose.material3.HtmlText( + modifier = modifier, + urlSpanStyle = SpanStyle( + color = MaterialTheme.colors.primary, + textDecoration = TextDecoration.Underline, + ), + text = html, + ) +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/ui/KeepScreenOnEffect.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/ui/KeepScreenOnEffect.kt new file mode 100644 index 00000000..7ca296dc --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/ui/KeepScreenOnEffect.kt @@ -0,0 +1,26 @@ +package com.artemchep.keyguard.ui + +import android.view.WindowManager +import androidx.compose.runtime.Composable +import androidx.compose.runtime.DisposableEffect +import androidx.compose.runtime.remember +import androidx.compose.ui.platform.LocalContext +import com.artemchep.keyguard.android.closestActivityOrNull + +@Composable +actual fun KeepScreenOnEffect() { + val context = LocalContext.current + val window = remember(context) { + val activity = context.closestActivityOrNull + activity?.window + } + + DisposableEffect(window) { + val windowFlag = WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON + window?.addFlags(windowFlag) + + onDispose { + window?.clearFlags(windowFlag) + } + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/ui/LeMOdelBottomSheet.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/ui/LeMOdelBottomSheet.kt new file mode 100644 index 00000000..fefebbb6 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/ui/LeMOdelBottomSheet.kt @@ -0,0 +1,56 @@ +package com.artemchep.keyguard.ui + +import android.content.res.Configuration +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.WindowInsetsSides +import androidx.compose.foundation.layout.asPaddingValues +import androidx.compose.foundation.layout.only +import androidx.compose.foundation.layout.systemBars +import androidx.compose.material3.ModalBottomSheet +import androidx.compose.material3.rememberModalBottomSheetState +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalConfiguration +import androidx.compose.ui.unit.dp + +@Composable +actual fun LeMOdelBottomSheet( + visible: Boolean, + onDismissRequest: () -> Unit, + content: @Composable (PaddingValues) -> Unit, +) { + val isLandscape = run { + val configuration = LocalConfiguration.current + configuration.orientation == Configuration.ORIENTATION_LANDSCAPE + } + if (isLandscape) { + WunderPopup( + expanded = visible, + onDismissRequest = onDismissRequest, + modifier = Modifier, + ) { + val contentPadding = PaddingValues(0.dp) + content(contentPadding) + } + } else { + val bottomSheetState = rememberModalBottomSheetState( + skipPartiallyExpanded = false, + ) + if (visible) { + val contentInsets = WindowInsets.systemBars + .only(WindowInsetsSides.Bottom) + val contentPadding = contentInsets + .asPaddingValues() + ModalBottomSheet( + onDismissRequest = onDismissRequest, + sheetState = bottomSheetState, + windowInsets = WindowInsets.systemBars + .only(WindowInsetsSides.Top), + content = { + content(contentPadding) + }, + ) + } + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/ui/icons/AttachmentIconImpl.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/ui/icons/AttachmentIconImpl.kt new file mode 100644 index 00000000..242e4ab0 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/ui/icons/AttachmentIconImpl.kt @@ -0,0 +1,32 @@ +package com.artemchep.keyguard.ui.icons + +import androidx.compose.material.icons.Icons +import androidx.compose.material3.LocalContentColor +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.layout.ContentScale +import com.artemchep.keyguard.ui.rememberVectorPainterCustom +import com.skydoves.landscapist.ImageOptions +import com.skydoves.landscapist.components.rememberImageComponent +import com.skydoves.landscapist.glide.GlideImage +import com.skydoves.landscapist.placeholder.placeholder.PlaceholderPlugin + +@Composable +actual fun AttachmentIconImpl( + uri: String?, + modifier: Modifier, +) { + // We can display a preview of a file. + val fp = rememberVectorPainterCustom( + Icons.Outlined.KeyguardAttachment, + tintColor = LocalContentColor.current, + ) + GlideImage( + modifier = modifier, + imageModel = { uri }, + imageOptions = ImageOptions(contentScale = ContentScale.Crop), + component = rememberImageComponent { + +PlaceholderPlugin.Failure(fp) + }, + ) +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/ui/icons/EmailIcon.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/ui/icons/EmailIcon.kt new file mode 100644 index 00000000..1a8d9e32 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/ui/icons/EmailIcon.kt @@ -0,0 +1,56 @@ +package com.artemchep.keyguard.ui.icons + +import androidx.compose.material.Icon +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Email +import androidx.compose.material3.LocalAbsoluteTonalElevation +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.surfaceColorAtElevation +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.compositeOver +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.unit.dp +import com.artemchep.keyguard.feature.favicon.GravatarUrl +import com.artemchep.keyguard.ui.MediumEmphasisAlpha +import com.artemchep.keyguard.ui.theme.combineAlpha +import com.skydoves.landscapist.ImageOptions +import com.skydoves.landscapist.components.rememberImageComponent +import com.skydoves.landscapist.glide.GlideImage +import com.skydoves.landscapist.placeholder.shimmer.ShimmerPlugin + +@Composable +actual fun EmailIcon( + modifier: Modifier, + gravatarUrl: GravatarUrl?, +) { + val surfaceColor = MaterialTheme.colorScheme + .surfaceColorAtElevation(LocalAbsoluteTonalElevation.current + 16.dp) + val contentColor = LocalContentColor.current + val highlightColor = contentColor + .combineAlpha(MediumEmphasisAlpha) + .compositeOver(surfaceColor) + GlideImage( + modifier = modifier, + imageModel = { gravatarUrl }, + imageOptions = ImageOptions(contentScale = ContentScale.Crop), + component = rememberImageComponent { + // Shows a shimmering effect when loading an image + +ShimmerPlugin( + baseColor = surfaceColor, + highlightColor = highlightColor, + ) + }, + failure = { + Icon( + modifier = Modifier + .align(Alignment.Center), + imageVector = Icons.Outlined.Email, + contentDescription = null, + tint = contentColor, + ) + }, + ) +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/ui/rightClickable.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/ui/rightClickable.kt new file mode 100644 index 00000000..13f72932 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/ui/rightClickable.kt @@ -0,0 +1,9 @@ +package com.artemchep.keyguard.ui + +import androidx.compose.ui.ExperimentalComposeUiApi +import androidx.compose.ui.Modifier + +@OptIn(ExperimentalComposeUiApi::class) +actual fun Modifier.rightClickable( + onClick: (() -> Unit)?, +) = this diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/ui/shimmer/rememberShimmerBoundsWindow.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/ui/shimmer/rememberShimmerBoundsWindow.kt new file mode 100644 index 00000000..e24cfd92 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/ui/shimmer/rememberShimmerBoundsWindow.kt @@ -0,0 +1,19 @@ +package com.artemchep.keyguard.ui.shimmer + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.compose.ui.geometry.Rect +import androidx.compose.ui.platform.LocalContext + +@Composable +actual fun rememberShimmerBoundsWindow(): Rect { + val displayMetrics = LocalContext.current.resources.displayMetrics + return remember(displayMetrics) { + Rect( + 0f, + 0f, + displayMetrics.widthPixels.toFloat(), + displayMetrics.heightPixels.toFloat(), + ) + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/ui/theme/Theme.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/ui/theme/Theme.kt new file mode 100644 index 00000000..558a9e59 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/ui/theme/Theme.kt @@ -0,0 +1,48 @@ +@file:JvmName("PlatformTheme") + +package com.artemchep.keyguard.ui.theme + +import android.os.Build +import androidx.compose.material3.ColorScheme +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.darkColorScheme +import androidx.compose.material3.dynamicDarkColorScheme +import androidx.compose.material3.dynamicLightColorScheme +import androidx.compose.material3.lightColorScheme +import androidx.compose.runtime.Composable +import androidx.compose.runtime.SideEffect +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalContext +import com.google.accompanist.systemuicontroller.rememberSystemUiController + +@Composable +actual fun appDynamicDarkColorScheme(): ColorScheme = + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + val context = LocalContext.current + dynamicDarkColorScheme(context) + } else { + // Use whatever default Google has to offer. + darkColorScheme() + } + +@Composable +actual fun appDynamicLightColorScheme(): ColorScheme = + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + val context = LocalContext.current + dynamicLightColorScheme(context) + } else { + // Use whatever default Google has to offer. + lightColorScheme() + } + +@Composable +actual fun SystemUiThemeEffect() { + val systemUiController = rememberSystemUiController() + val useDarkIcons = !MaterialTheme.colorScheme.isDark + SideEffect { + systemUiController.setSystemBarsColor( + color = Color.Transparent, + darkIcons = useDarkIcons, + ) + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/uploader/UploadAttachmentManager.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/uploader/UploadAttachmentManager.kt new file mode 100644 index 00000000..b26428d2 --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/uploader/UploadAttachmentManager.kt @@ -0,0 +1,33 @@ +package com.artemchep.keyguard.android.uploader + +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.SupervisorJob +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.launch +import kotlinx.coroutines.plus +import org.kodein.di.DirectDI +import org.kodein.di.instance + +class UploadAttachmentManager( + private val uploadAttachmentRepository: UploadAttachmentRepository, +) { + constructor( + directDI: DirectDI, + ) : this( + uploadAttachmentRepository = directDI.instance(), + ) + + private val scope = GlobalScope + SupervisorJob() + + init { + scope.launch { + uploadAttachmentRepository + .getAll() + .map { requests -> + } + } + } + + private fun UploadAttachmentRequest.Attachment.handle() { + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/uploader/UploadAttachmentRepository.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/uploader/UploadAttachmentRepository.kt new file mode 100644 index 00000000..45e2780c --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/uploader/UploadAttachmentRepository.kt @@ -0,0 +1,12 @@ +package com.artemchep.keyguard.android.uploader + +import kotlinx.collections.immutable.ImmutableList +import kotlinx.coroutines.flow.Flow + +interface UploadAttachmentRepository { + suspend fun add(request: UploadAttachmentRequest) + + suspend fun remove(requestId: String) + + fun getAll(): Flow> +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/uploader/UploadAttachmentRepositoryInMemory.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/uploader/UploadAttachmentRepositoryInMemory.kt new file mode 100644 index 00000000..d2c3388f --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/uploader/UploadAttachmentRepositoryInMemory.kt @@ -0,0 +1,48 @@ +package com.artemchep.keyguard.android.uploader + +import kotlinx.collections.immutable.ImmutableList +import kotlinx.collections.immutable.PersistentMap +import kotlinx.collections.immutable.persistentMapOf +import kotlinx.collections.immutable.toImmutableList +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.update +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock +import org.kodein.di.DirectDI + +private typealias State = PersistentMap + +class UploadAttachmentRepositoryInMemory() : UploadAttachmentRepository { + private val mutex = Mutex() + + private val sink: MutableStateFlow = MutableStateFlow(persistentMapOf()) + + constructor( + directDI: DirectDI, + ) : this() + + override suspend fun add( + request: UploadAttachmentRequest, + ) = modify { state -> + state.put(request.requestId, request) + } + + override suspend fun remove( + requestId: String, + ) = modify { state -> + state.remove(requestId) + } + + private suspend fun modify( + block: (State) -> State, + ) = mutex.withLock { + sink.update(block) + } + + override fun getAll(): Flow> = sink + .map { state -> + state.values.toImmutableList() + } +} diff --git a/common/src/androidMain/kotlin/com/artemchep/keyguard/uploader/UploadAttachmentRequest.kt b/common/src/androidMain/kotlin/com/artemchep/keyguard/uploader/UploadAttachmentRequest.kt new file mode 100644 index 00000000..0fa3bcab --- /dev/null +++ b/common/src/androidMain/kotlin/com/artemchep/keyguard/uploader/UploadAttachmentRequest.kt @@ -0,0 +1,34 @@ +package com.artemchep.keyguard.android.uploader + +import kotlinx.datetime.Instant +import kotlinx.serialization.Serializable + +@Serializable +data class UploadAttachmentRequest( + val requestId: String, + /** A cipher we want to append this attachment to */ + val cipherId: String, + val createdDate: Instant, + val revisionDate: Instant, + val attachment: Attachment, +) { + @Serializable + data class Attachment( + val name: String, + val ref: Ref, + ) { + @Serializable + sealed interface Ref { + @Serializable + data class FromFile( + val path: String, + ) : Ref + + @Serializable + data class FromAttachment( + val cipherId: String, + val attachmentId: String, + ) : Ref + } + } +} diff --git a/common/src/androidMain/kotlin/db_key_value/crypto_prefs/SecurePrefKeyValueStore.kt b/common/src/androidMain/kotlin/db_key_value/crypto_prefs/SecurePrefKeyValueStore.kt new file mode 100644 index 00000000..19f16789 --- /dev/null +++ b/common/src/androidMain/kotlin/db_key_value/crypto_prefs/SecurePrefKeyValueStore.kt @@ -0,0 +1,138 @@ +package db_key_value.crypto_prefs + +import android.annotation.SuppressLint +import android.content.Context +import androidx.security.crypto.EncryptedSharedPreferences +import androidx.security.crypto.MasterKey +import com.artemchep.keyguard.common.service.keyvalue.KeyValueStore +import com.artemchep.keyguard.common.service.keyvalue.SecureKeyValueStore +import com.artemchep.keyguard.platform.recordLog +import db_key_value.shared_prefs.SharedPrefsKeyValueStore +import java.io.IOException +import java.security.GeneralSecurityException +import java.security.KeyStore + +class SecurePrefKeyValueStore( + context: Context, + file: String, +) : SecureKeyValueStore, + KeyValueStore by SharedPrefsKeyValueStore( + createPrefs = { + getEncryptedSharedPrefsOrRecreate( + context = context, + file = file, + ) + }, + ) + +@SuppressLint("ApplySharedPref") +private fun getEncryptedSharedPrefsOrRecreate( + context: Context, + file: String, +) = run { + lateinit var exception: Throwable + + val retryCount = 3 + for (i in 0 until retryCount) { + try { + return@run getEncryptedSharedPrefs(context, file) + } catch (e: Exception) { + if ( + e is IOException || + e is GeneralSecurityException || + // For some reason once in a while I get a device that + // crashes here. Maybe for some the exception is not the + // default one. + "KeyStore" in e.message.orEmpty() + ) { + exception = e + clearSharedPreferences( + context = context, + file = file, + ) + clearKeystore(alias = file) + } else { + recordLog("Failed to read the shared preferences!") + throw e + } + } + } + + throw exception +} + +@Synchronized +private fun getEncryptedSharedPrefs( + context: Context, + file: String, +) = run { + val masterKeyAlias = getMasterKeyAlias( + context = context, + alias = file, + onError = { + clearSharedPreferences( + context = context, + file = file, + ) + clearKeystore(alias = file) + }, + ) + EncryptedSharedPreferences.create( + context, + file, + masterKeyAlias, + EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV, + EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM, + ) +} + +@Synchronized +private fun getMasterKeyAlias( + context: Context, + alias: String, + onError: () -> Unit, +): MasterKey { + lateinit var exception: Throwable + + val retryCount = 3 + for (i in 0 until retryCount) { + try { + return MasterKey.Builder(context, alias) + .setKeyScheme(MasterKey.KeyScheme.AES256_GCM) + .setRequestStrongBoxBacked(true) + .setUserAuthenticationRequired(false) + .build() + } catch (e: Exception) { + if (e is GeneralSecurityException) { + exception = e + onError() + } else { + throw e + } + } + } + + throw exception +} + +@SuppressLint("ApplySharedPref") +private fun clearSharedPreferences( + context: Context, + file: String, +) { + // Clear the shared preferences + context.getSharedPreferences(file, Context.MODE_PRIVATE) + .edit() + .clear() + .commit() +} + +private fun clearKeystore( + alias: String, +) { + // clear the master key + // https://issuetracker.google.com/issues/176215143 + val keyStore = KeyStore.getInstance("AndroidKeyStore") + keyStore.load(null) + keyStore.deleteEntry(alias) +} diff --git a/common/src/androidMain/kotlin/db_key_value/shared_prefs/SharedPrefsKeyValuePreference.kt b/common/src/androidMain/kotlin/db_key_value/shared_prefs/SharedPrefsKeyValuePreference.kt new file mode 100644 index 00000000..426ad51c --- /dev/null +++ b/common/src/androidMain/kotlin/db_key_value/shared_prefs/SharedPrefsKeyValuePreference.kt @@ -0,0 +1,54 @@ +package db_key_value.shared_prefs + +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.ioEffect +import com.artemchep.keyguard.common.service.keyvalue.KeyValuePreference +import com.fredporciuncula.flow.preferences.Preference +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.FlowCollector +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.flow +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock +import kotlinx.coroutines.withContext + +class SharedPrefsKeyValuePreference( + private val prefFactory: suspend () -> Preference, +) : KeyValuePreference { + private var pref: Preference? = null + + private val prefMutex = Mutex() + + private suspend fun getPref(): Preference = + pref ?: prefMutex.withLock { + pref ?: prefFactory().also { pref = it } + } + + override fun setAndCommit(value: T): IO = ioEffect(Dispatchers.IO) { + getPref().setAndCommit(value) + } + + override fun deleteAndCommit(): IO = ioEffect(Dispatchers.IO) { + getPref().deleteAndCommit() + } + + override suspend fun collect(collector: FlowCollector) { + flowOfPref() + .distinctUntilChanged() + .collect(collector) + } + + private fun flowOfPref() = + pref?.asFlow() + // The version that calls delegate on the + // IO dispatcher. + ?: flow { + withContext(Dispatchers.IO) { + getPref() + } + .asFlow() + .collect { + emit(it) + } + } +} diff --git a/common/src/androidMain/kotlin/db_key_value/shared_prefs/SharedPrefsKeyValueStore.kt b/common/src/androidMain/kotlin/db_key_value/shared_prefs/SharedPrefsKeyValueStore.kt new file mode 100644 index 00000000..79b92c19 --- /dev/null +++ b/common/src/androidMain/kotlin/db_key_value/shared_prefs/SharedPrefsKeyValueStore.kt @@ -0,0 +1,69 @@ +package db_key_value.shared_prefs + +import android.content.Context +import android.content.SharedPreferences +import com.artemchep.keyguard.common.io.IO +import com.artemchep.keyguard.common.io.map +import com.artemchep.keyguard.common.service.keyvalue.KeyValuePreference +import com.artemchep.keyguard.common.service.keyvalue.KeyValueStore +import com.fredporciuncula.flow.preferences.FlowSharedPreferences +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock + +@OptIn(ExperimentalCoroutinesApi::class) +class SharedPrefsKeyValueStore( + private val createPrefs: suspend () -> SharedPreferences, +) : KeyValueStore { + constructor ( + context: Context, + file: String, + ) : this( + createPrefs = { + context.applicationContext.getSharedPreferences(file, Context.MODE_PRIVATE) + }, + ) + + private var flowPrefs: FlowSharedPreferences? = null + + private val flowPrefsMutex = Mutex() + + private suspend fun getFlowPrefs(): FlowSharedPreferences = + flowPrefs ?: flowPrefsMutex.withLock { + flowPrefs + // create a new instance of the preferences + ?: FlowSharedPreferences(createPrefs()).also { flowPrefs = it } + } + + override fun getAll(): IO> = { + getFlowPrefs().sharedPreferences.all + } + + override fun getKeys(): IO> = getAll() + .map { it.keys } + + override fun getInt(key: String, defaultValue: Int): KeyValuePreference = + SharedPrefsKeyValuePreference { + getFlowPrefs().getInt(key, defaultValue) + } + + override fun getFloat(key: String, defaultValue: Float): KeyValuePreference = + SharedPrefsKeyValuePreference { + getFlowPrefs().getFloat(key, defaultValue) + } + + override fun getBoolean(key: String, defaultValue: Boolean): KeyValuePreference = + SharedPrefsKeyValuePreference { + getFlowPrefs().getBoolean(key, defaultValue) + } + + override fun getLong(key: String, defaultValue: Long): KeyValuePreference = + SharedPrefsKeyValuePreference { + getFlowPrefs().getLong(key, defaultValue) + } + + override fun getString(key: String, defaultValue: String): KeyValuePreference = + SharedPrefsKeyValuePreference { + getFlowPrefs().getString(key, defaultValue) + } +} diff --git a/common/src/androidMain/res/drawable/ic_apps.xml b/common/src/androidMain/res/drawable/ic_apps.xml new file mode 100644 index 00000000..5dadac3a --- /dev/null +++ b/common/src/androidMain/res/drawable/ic_apps.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/common/src/androidMain/res/drawable/ic_cancel.xml b/common/src/androidMain/res/drawable/ic_cancel.xml new file mode 100644 index 00000000..9a3cc8ee --- /dev/null +++ b/common/src/androidMain/res/drawable/ic_cancel.xml @@ -0,0 +1,9 @@ + + + diff --git a/common/src/androidMain/res/drawable/ic_copy.xml b/common/src/androidMain/res/drawable/ic_copy.xml new file mode 100644 index 00000000..5544073a --- /dev/null +++ b/common/src/androidMain/res/drawable/ic_copy.xml @@ -0,0 +1,9 @@ + + + diff --git a/common/src/androidMain/res/drawable/ic_download.xml b/common/src/androidMain/res/drawable/ic_download.xml new file mode 100644 index 00000000..6dff20c0 --- /dev/null +++ b/common/src/androidMain/res/drawable/ic_download.xml @@ -0,0 +1,9 @@ + + + diff --git a/common/src/androidMain/res/drawable/ic_launcher_background.xml b/common/src/androidMain/res/drawable/ic_launcher_background.xml new file mode 100644 index 00000000..04b8f8b3 --- /dev/null +++ b/common/src/androidMain/res/drawable/ic_launcher_background.xml @@ -0,0 +1,3 @@ + + + diff --git a/common/src/androidMain/res/drawable/ic_launcher_foreground.xml b/common/src/androidMain/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 00000000..95f20348 --- /dev/null +++ b/common/src/androidMain/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,38 @@ + + + + + + + + + diff --git a/common/src/androidMain/res/drawable/ic_launcher_monochrome.xml b/common/src/androidMain/res/drawable/ic_launcher_monochrome.xml new file mode 100644 index 00000000..6a6bca8f --- /dev/null +++ b/common/src/androidMain/res/drawable/ic_launcher_monochrome.xml @@ -0,0 +1,18 @@ + + + + diff --git a/common/src/androidMain/res/drawable/ic_lock_open_outline.xml b/common/src/androidMain/res/drawable/ic_lock_open_outline.xml new file mode 100644 index 00000000..11b0736c --- /dev/null +++ b/common/src/androidMain/res/drawable/ic_lock_open_outline.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/common/src/androidMain/res/drawable/ic_lock_outline.xml b/common/src/androidMain/res/drawable/ic_lock_outline.xml new file mode 100644 index 00000000..82e002d1 --- /dev/null +++ b/common/src/androidMain/res/drawable/ic_lock_outline.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/common/src/androidMain/res/drawable/ic_login.xml b/common/src/androidMain/res/drawable/ic_login.xml new file mode 100644 index 00000000..01fa78a3 --- /dev/null +++ b/common/src/androidMain/res/drawable/ic_login.xml @@ -0,0 +1,9 @@ + + + diff --git a/common/src/androidMain/res/drawable/ic_logo_bitwarden.png b/common/src/androidMain/res/drawable/ic_logo_bitwarden.png new file mode 100644 index 0000000000000000000000000000000000000000..7fb0a2a733e222aec4e8c23d342471c57f7ff90e GIT binary patch literal 13229 zcmch7c_5VS*Z(!s$XLoC;%PCmWtSFdF{84FQdzQ=EfSKQW~LG?%D!)v(4s^|C^J#n zDxxgev!%pjn;FK;d)<1f@9+Kl`~LoT=F!Y`o$D;0^Eu}__kH<*nZXMFfA|3aD~t^H zSpa~Bf1&|)IsD&D@W*)oHv1dx(>)yg`9~HbBk5B)wTbJid0609$JRGb5=bKNKKO{- zn(5uCbVqpW`Qxvai|;Euaj6*Zxi3*3-MXN$Y;%pE#^x~d$rnM{lOzUM`N-Xk@uF>^ zw<(~9Fq~qyJ&Zi@qRsumtYgjS5Fb3#`YQK}6bk-<{0A_|2M+llA|L;aFaK+T{RpG4fks>yW4tcw{dJmo#mpPP5dB+OXtQpS5g64IDkG;b4 z%Xa8=HIW^Zg`V3gl0)+MJ#;)ax)TQ-_410{i&tugw36#jI<^}H>)%go4=@R8k~}8y z=DBnD8xzlpVfs(Y5Z3)2X)}B7+C7yJCIXsfH^=E*A@}xC3%{P>#R4`#tHQp`#QWP_Lz!JBuDG%Y(v}b*{Q~@7sCxU04II@ zx9<|92#4`G`dUUpolP41shg@qb*`UC?6U04>=O%jhl_5}si$45o}ayu?Xx5D*z(Nw zK&!eH%6@S$+;6Lg1-zy@ct3?#ZW7%5)juF7&Y)L0ws9nDq*4?GdL+j*SdN8?{-tcm z$YYV|)mOH$Soi!TwHH?P-Nb^g(WhUHCiOfGzrRUvaPIkx$HVBfER`Dftf8<~D4@#V ztn2n8S9K^=F!h}!-ux&|dD>ulMyUQ#J)a>YlO39&Ri>O7|4n^vf;GXr2Bl(Bgc%bF zkLrISzgBDtylkJ%c@pWP8F_41_O+a$y41V8LsV|bYCa+$YDL!)O4oVyXG9;9h;g^_ zPm9h7X_f|IvCt_0!ALPyiE`EDUt6DKhL)dxALPzMdl~G!lVS#ihd!Sv({!9GctSUQ zqY+)}yq5QQNbk*QWnlKE6-oyvCy6&3(2p2<5OFvVdF-tkh*B4$OpD;6FnB-#8iLM> zsO<`<1VO&Kkp*!Sz)+4!G-4@-&~q{_8rjPE|&FY%^4v{pJn9mU(^uqOInA-O3acnxQe!8rH(i!|_-@Wqz-M@2m_SGoMR z!G-8YWZypq%Yua--rqk7q9660`Tdi>IAzhnk0y=klZK{ZEWn&Jc#A)?rD)lzTMr&v zrBSb)m*$~G(Fsv!~WAVPs9i-reSiV_;Peuh3di2wVQ1G@htlaWG^{S_Zw=;xJhsb4lj+4y}0V3#n381WyHs+GYxLGs@{JUn=br8t=XIb3=b#fgW@KvRA>9ShJn z3l!G$x6{!S5U~%ejM%jl-R@PuVVMgKoUOAo1XEctsEf*yoIVrc21HY3Ac&^%6ZqgK@F6k*>VOt|fw}UJx-`euAmIZM7ABl!eofN7D}TF)Mpg#G-=h8+ zLA=C+KfL7je?@ITVFM8F)*w(^i>PxQwLEXxjXiY6sKZ{g$Xb!ucYR_|ag8N?h?d~6 zz>*J2fdmGius6V+k|6??pdm{O*@uG)LChi!?c*U{pih2Z7CstFk%6*dlxy(7AB0bU z6RS9*NG8C{fFHEgsAdhs9~4z&X9t?@DnN|tm%_8vV=0PoCvtR-D2BEh)jVUx?H7T6 zV1X@k5AZ@g>qT4Rj@_dh{1vB)y0pcf>9`SPl$^XIbU6x?0y`g6unI_z;O>r^fAkDS z2MaDhg!J>GnpOTid}&>H5BdOstqOtWg#OhMEBWY|B!L>p82BP!VZ+-Fi@O)q` z%@(rNUs4`9$Tt^rBEBTYc7Pm*Nqr)52|zA^IZwkY176jCI3p>L6Hrcw)a5wJ#xv?H zAxX{%wDR9C?Xbi!Umjv7U90HNA-JO`tVd^)X!SagSkLsZKSw=#g0WtITNRwD=GNJ~ zMG_847l=kC}$-0&-v$N zKt4bBsw}al^^ZJE73Pk8XVW1*!w+VE4#$r3Q|fE_>LUz)SpNMo6P)OpVIXk_XaD2t zXprhnCCAd+5Byn5F9NA0e_lkzAmrJl!03Q_)Z?1Szzw1W}Uf&sDv`c~p^Z#nVM z2+H84Ai0P!e*woy|Aoe-@K=J=9qgJH?#G{$z^MN6HpK^hhXdal9)g1aGfYy&DG8YK!CgD9WD9`v}bpho*MLliW z3U%f|kyH(#WvgiJ9+=Ai2Jx9V<>J8z@{Jnqu9wgYFtdIqfl9PId-284n8r|vHn#Qg93o%;v>j7NSaOpFqbG|psWm>nCIQZUiR0E&k&J&aU9g| ztwa#H3N({{O^GC;m=9rODP zYZTp!heEf)Gu2meAMf{bgg##4PaI%iC?z?c2gv6z60d28kN_eK-=7OH6dFP0{eK|P z>R3b%I`k(#64ua@%GPt!`_NzB2cpfSK_ZY`j_O}UYd+M!iwC#2(|nXp2;1e0|DDN} zz^(|WT#;r69Gwah{Sl~)HRnw;kihqMLSP4W><4wsz)l$DbF9e;UwU_zF zx#vLhO#8iYEyKTGEP1T;+%fu$MhStfgG+av;}d*e~y z(Gpx>U*d>zs&~9fH~5X-AQU~cC})x5q{c$L3rjDS!i6|**Zku;x&zc)uDY+aAK4W- zaOOM+RtFUrYJCQ$H*(2JB<->VAO!YxHl@&oGS>d_A1|5~PgVSDA%yWF=~N?WHSaI? z{3_UZw(06WE)`UR@t<=gSV5zG#WW!QTA?a4&tKUlg&^xJ=1zV7`4&us`Z2$LM0v}jdyqCNP>_un`QSDcwfqeiIK*$JcVTXBz zu@e)__-HNq%kba=AMfu7Qb*=G(r0=7(A7->Xpmy@3>3M-61B9oy z*Ioc8XqU=ET0R8m!{)!|^bx%b6Z&XHfjVk}o1x|i)hKRV@e*>3mFWV)6fQ{fo~rLoCMt)%`+ znG#}tGv((R<0KJ^Y9+sGp*q^>3%xy{UJCUHXQlF_{`tG%U!pEd9x)Dz*@33BS613> z-K>A1L~39XHse6veI`7k`$bhM;;a?HXU(%_X70&=`+d7qt@g)ka%b8W!sN0pJ`x`2 zSZs3BQ4HedVJG>CUTD}SR#z(ha7A>c$m?O9B`Y^fqK2#j`W@h)LCD8 zb~YqF!qkQ8$bfv|^s@`dY_>Jpu^e@PUH8z~05pEzF+9)u8A0Vs=U^!p%R}$l>ui4; zK!Y-rWJX8oUo<6coDGUg?b$du@~UM<>oina-0AIxj9o8sBX2{ck2F?HdzBn4Ub8bO z(yH#r(b5=mq?Qzu5>Pb<5ufKL_9_e!V*~X8^TUB|l%bGKJWc=29)13lUeOw6E&k*y4Qzp*d+3cBtJ$VlQK&OxMYJU2gxPQd^!Yvp3T8iagu2 zVkib!+o7Wi&NcPJ{vM|polEYjI#R@L@9vdxcCSrWVs}m&fE!X>LR!W`DQHbBv99#X zgq@Yj>#aS;i|Zr|gq=5k|I|IHz+PO-F&fncDsOJDHc1K%%G3pguV$5}hFR*KNeeqQ zN|(1k&oJq1+5&p>Tqejw0 z#19)M$?dc}BGk>r+b&IA{j5zvcONlku$}C$zdLB&Rs}}r>Tx^5=Wcyr*wvk9edjiD zH^zPW<~__={&{Culr=|zJ*&1LCk>h>8&6c3dJWq*^yt3F1GnMig=yDm?^)8~8b{RA zYxYw$az?wpIv2xmszjgW4Y5^NP62cq?3*HPShi|h{6BDI5S&cOcm#Bh`Aor*4p#d% zJy`n<%zMvhmA@vbye$2Ow?nbpgrLI2|2 z^zcr0K-LyzyL+cRCgapMD7$|AC{f+F2dQ(BDyms36SBg>fPQ|{Rj-l}$0No%bFJhl z<?mNCD zZ|J?kRk@zto8zzLAe#-1y4e?xU-3x}d@a@9pn58yQ{Cm@oD4*x?^z$#ny~MA`InEt z>qmF!2;*FMXGwvBrx^FGL=0y<`cC3~x7sl&PKDjreZy8M6ewd2CcKVMZ-1`@&|t3y zGH_%*Iyx?9-@pxeuXG|#kz4nXI&Q#Rkb@nWgs)it?Cwk~5jfoucw$*)uQgJ5TP19B{kVZQa|@y!~HFx^6$VT@)6rLU|&b2x=oly;EID>scQw zKRpe!lgC4w&q3WqH%d%028%=TPEFCfv^Bj%AZ4&p`X8*ZAt^1%h$1dk`4|+8|3v)!X)dR9a$37HJf9_~ewG9+&G`$*+B`+c!*aRO=Y<&MV6 zC+v*(iXI7hMcMJk5)>B>&YelgHG}NK_L_m+Ldgr`hG+5;sOH^lm~u@`iH07gW!qBN zc8_NIKFc(bEb#4bP4R3#atz|=qVm~u;UPaVc6dy>NCH$dBa@rMJ-A^wAT;o3bRM@U z_Z|}W4>JX0lSo6-FBV=6&y}O=A}=44B``uehEFvedo0pFD?I zSlqJs0^zanH`~>-ta@L6AYzCabgE~u{YceOwOQ5qY&Q?j?{T%gkLy!yenvou7a`j8 z`S96!B}DZW`Grdt3sS(HrcWk6rf8K(Ef0SxCinJkE(r)KX8U?*4w$$0eTP7#sdtBy ztGw7HmW?7}Xs0Y{E7Hi$<^J=dtZ+`gt!{F?*`ded1&u|d)|AET6+CD_8b~?G@9Mr^ z^zs$3@#s<2*dXeuW)9UV@`WB}X5S8okp+ZRnLa)N-r2BU+}AR-!|(`(sK^(e(q zf|c`HR@hLFU3sY4`J)3;GyTw=MTq*7c8@=*-S4}fxYA+8KCmaevM=#kp5NQvV^>zI zICAe5&8*&bnO-nHngbW(@wTWpr0>d(pW+^3iH6TSi%rF;4r(@f^Dn+?9T=Omx_`)( zIbVZrvM7vZB}^#-6j4D%X#$5ZjnxF&3|U9=jqPF}CSq*$D| znAkUIZdnRjVB!JEtxfXOkmrVT@@26lSfa1ltzAbq`ur#g>YZ?pjJjtg_OyW+Ft#^^ zgC!$D6U(vQYHWSEpv&ke27jZ=Y%oVL4qjREO3Q0km05^e1=KxRp)gc3cA8{Ap}>Cd z0=7cL=02Pg#@xb^}cuV!UW#^J`(Y8TO^Ra2VsoxscBYO)}LRq)%v^P6kgZ8^O zAoiaye`wZat@L{9TA_V_9ai3SDCeW0n{JecL!OuS_qZcIL$E6zwAbSB!I=@kW&zoA z$Gk`_BzKQzdZ?j2hUOmqAdj(fo8hq|WgZT>TPBpOD|_VI-x@tS!BoI;bOj+|_e}X7 z*sCnWD-9eRwhiOzLoym&9gVNvb!owJO>@K=0;WY5|KW@?4$bWaM9DX5#f_p;mL_LS z)MMb5^=hoq#)_Ex!za8ep9H2FY}i>5>N=gG=hu2mwmOF{bQGo#uA~c{(|b@R;2j*D z^!FxJ>BoJvo`TQCwLYLNY~72VvjQ%6Ki_^ipJ2+p0Xq>OJ@|PzFobjU=-pG_bkR5p zs{FI`RmO`$ioC5yGwh0ecA8zuqSZ58&TcH^?%qUY6JwUwX*S;p~US37<8oo!*fJ6|Bz;wuaRLQMCwnFz1>LTi4d&+Dk@Vz60&^7B&6 z!I`ixxt`kgpA}!ovp@N;d91Vo>*stLhejDv!_m~vYRAWN(2I#Fl#{Dn8_w+He{I?3 zc15d4m|{}y7iT(g_Tgd9+1m#{o6g_w>u9*=`8A#)lvrlMBA(D1>a%;;>Aj#bqWX^+yCt(?k#27G30dOHt&o4+G903-1V+0`QA`-v@R z!zc>Zw&~bl-(yIbKs)Wi2Gmv@?|gEw$c3;n!8(DS|Txb)IjcN*HF}bewTq{zsoy5c+OX@+ff-h zyifOPVThL1!&G5|)|`Cm6k@NXh{juKRM2kH{y@DHlS3!9#va@N5(W!z)JhwBzArdT zp7h$xEj0~uFOtpjO4L)&NsK$>thn%DrhNls-R6~h(VS6^O9Pqrw)-O4DdrprmSWm$=y{_E*X>PCdhs~7O-pVnceoyMZ1<#j{up5& zWPuwmFwxon$X(r*XX0(7tc=oK1>o*yu7Nf`1M_ZwE}Ra$Ak3M4*Hgmj3oH+GK*PFp z^65|?0WsPU?RLA7ZWO2avpzRIxz+F%uMv=caX@K6@vv+xE~8wjRFY*G^8rOiux3P=(FPP7iWvQZ9FzyZ?BhH zuPt9AFUt9Lk*ql|sRyle+QWA#-d0?{emZB!*hlfao}cJHOS8I%h>XC_GpQF z@#b55Naf$|2$mg2NLU`}dz`fSo&}mk6!wPh`Ib>>7^2S8fBmW6RLK4Wofb8NS zR}){j3soUKl*0U?j92>ot5;j2aFSlCNt&Ep~emheoalZKT7h zlB{(t%`M-%zn6VkTlRE&Bgxr)C;GIADY=0(f;jiBI!bhdYe&T1sf6L;lCeV>{{Afj zzH&gIG||MxE#vSCqtUhgtn}6epF+G!lB`>W6Ql)`tNtJNqG{ODSV%ENMbSa%e|F0>~BWpB;79z z6AprC(WFH?IA;cJ@s!I4&G;lX{e0B@(>H#)iqdv{y$bDCYtI?|m3eLT5wmH2tmtRW zyGLqBuqxr;T^oq2ET1!?yo^bC-5@iWnFwdPW3JjX3+nv$^h(!h@|8?=mi?n4bEYWA z&3=ly5kl$Fb4+xWu=L~X-D(3KTi>tlm6+y!Yl7DsP)TuW^8@Iagn?0fV^nV`@|0qkqx`P<_0r){hFZX=m*e(53|J-1-7|1SZzu= zdmlCQz>hlbthr{Wm@zdpC#FbRL8^xID~b5|8S_&A%-}LZny}Rh0mo~)yBvqi#{N6G%8cpTE?4~nLuSEf0MN|TO>m^P=LTjh7 zI5kmmLFC@;lB$GNE05I>q$>}$ohqx3;hq0v&Qx9nA$J716F3?2VX6B-=6#gtg5|Q( za2tFlk80s^49kjq@JJYp*xLK0bl~D{xa3Oh&+#MZMu}3pKvY9-F*dGH94Klu~A7 zrPYP5x?X(C!l7M}H>RzDZQAKKn;AjDEba4zl?()j@4$DvG8v=kogYfrpHwcJ6(xL& zR8zxE4V-Xsg+&M9X2w^@LI@65DHzj&%Dtge{+rTLqJ1vd&3J z^(Cs-TJf&WMDoy~YnqJLD&@!B*v&7^VbcaL5l0~6L9Y(p1ylDz*!wDNxb>Dx=Y5;_ zV?Ke|j_zuzEJ=d}hi)5u`#bZsq2)OxQm%ycGe390A`fz8@q>k!h)UCrSJ-lI??SK6 zBO8ybux~LkIuIJxWVqL)Y}~Xk&T*IT;YjoA0qRUXa&->x*`-ky&7IHp%uc60uR;Wc znV;^-YNuNKuv_uyODUze+h=BjnOIr<^J|@&D%h7zCrQ7iMfhNmW_70hrn7r1rY9(K z?;RR5#lLDAla8#LVlbv*W^HF&$SH9I=X2;~4J1fLxcz(*8`w>oj{Dt)b2Nhn&z+{^ zgd4?Qick66jn2sEx1o!2_z|x!))0F5(4b$4FEuUXCgzzWXR-XWZYF!0czH`{>ZH7` z^Tk2KqgiZ@k4H8yOkRYLsK{Naze(o28Q-N@C3aR1g)dI?xL+dswCTO@3_F@Ni0#03Jc~77B=Q`ct4`P>9ypOBd;2!-gUjLYK7-FLP$?oQt*<+UnHN7343+9ZwLZ8BoTuLH*5(ivm@hvB#NwjC>r>6?21@#$~ zSM%~?wS)9rR*SI6ezwEgABj@^pR^o$7hZ?1t=8{wc)BylkI=nae2b@d1RTC0Ou zRD;%`xFA2-T@SXMP+#dbQdTFhlYb~%p>;UQB*A6oNyp=t=8(Q~$BMo!Mc#t%(sTyM zbndvlQF7-_OVW!SdJ}!2#&ZgvFhlE6gFWY8CH!KCg`b0di{~+to8=N|86&Ylfpf2cw(*U-u2 zI>gBuahUCC5^^b~SL1SeQ&i44?2_&hN;L8ah^l?r*YR1V^7uWM&XGg!ExD;S`V{?2 zEawE=OBg8fZ6y=kT<`$o#{mN-!yQgjS@jJrqpIOMs~hv~-0QjK$lg75%J0E0rsZ|^ z$j!r}+NAcIQl_wNhP#bAo0d{pT7CI)dA7RvImbfdxbijTbpko!b)4Itqbn}xr>R#y z(u+6S)^IcT>HFMpWrv+|L4`&M%F$=o%a%i6Bdze*dIVyIj>2zenv7}qfxet$3Actn zhy3&#O+U=~o-n3)YH$AA;E9Otg~O5EvmKjQA4+bc<`}`pgbEqt^@XHf14>}PzLWn z+ZJJposz>3cx^;tJJ7U=z(t~aLr;Mw%GaL?xomDh5zcCXcmjNz0pWXQrHMQY|4P0a zV@m`%Hc3JVGCvl~EqKf$5Sw)P%HTzTW=r(OrK+O15Q040rnHIR_QJ*nX`z0*ENsl9ZWss>8QwHHt8@%`=Ey)qR7Ap(@g-EsKb{ZJzV+MO}~_OG&$61fTUH z(Xc5WgUOKUfG)8!1h5*#K+2ASZ^G|KLr3MvahoraE08M_NVPzVc+A^A7$2Q=fRVIB z9vp#K`0mV-QP6@B*>-7E=Y$buj69q1d<@oJ5zg4>C9J#hVcqDhGi4JjQmfYDY{##y z)qR4nAi)r!0a$MW4`;$9NPh$@7jWe%M}DDbEP^LEM(`U76FsoF>woa89< z0(eNqGemzPH4MExWyyo^d14=uqTqt@l0EscHev_)5u^#k0t01aw2V!7IAYyfdlx-8#-P45H(N z5qx>&Ju{!C~(>H1RxWhscQn|MNn-J&A~-k+AG9S&ZH}dHvzvP5njwXWAe$d zh$kpG6DS1o8hInKoPtB_M&>1Ybf_?H4`06-d2XS+m5?~#V>f>hnv^0EyMIZ3{*r}0 z?aRYdPeqR;r;Q2q_D2Xl4%|@B;i35n^Wy zaut(a$@PMFWPmYW!Y$njxu*l{J&fRH^i{}S=B_}XNU?hSH z-!6upo;HH-uUuz+n2|zW!~q&9zu1o}eF6FPj1e$d%7(I~#fx(ArJ4rPI0LqM%ehiB Xk0m1bKHY|u0stdDvwaWuIGz6=7hgp$ literal 0 HcmV?d00001 diff --git a/common/src/androidMain/res/drawable/ic_number_0.xml b/common/src/androidMain/res/drawable/ic_number_0.xml new file mode 100644 index 00000000..79eb773a --- /dev/null +++ b/common/src/androidMain/res/drawable/ic_number_0.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/common/src/androidMain/res/drawable/ic_number_1.xml b/common/src/androidMain/res/drawable/ic_number_1.xml new file mode 100644 index 00000000..91a44346 --- /dev/null +++ b/common/src/androidMain/res/drawable/ic_number_1.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/common/src/androidMain/res/drawable/ic_number_2.xml b/common/src/androidMain/res/drawable/ic_number_2.xml new file mode 100644 index 00000000..523b12bb --- /dev/null +++ b/common/src/androidMain/res/drawable/ic_number_2.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/common/src/androidMain/res/drawable/ic_number_3.xml b/common/src/androidMain/res/drawable/ic_number_3.xml new file mode 100644 index 00000000..b59c2d73 --- /dev/null +++ b/common/src/androidMain/res/drawable/ic_number_3.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/common/src/androidMain/res/drawable/ic_number_4.xml b/common/src/androidMain/res/drawable/ic_number_4.xml new file mode 100644 index 00000000..94454c17 --- /dev/null +++ b/common/src/androidMain/res/drawable/ic_number_4.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/common/src/androidMain/res/drawable/ic_number_5.xml b/common/src/androidMain/res/drawable/ic_number_5.xml new file mode 100644 index 00000000..d28d290c --- /dev/null +++ b/common/src/androidMain/res/drawable/ic_number_5.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/common/src/androidMain/res/drawable/ic_number_6.xml b/common/src/androidMain/res/drawable/ic_number_6.xml new file mode 100644 index 00000000..06a4d76a --- /dev/null +++ b/common/src/androidMain/res/drawable/ic_number_6.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/common/src/androidMain/res/drawable/ic_number_7.xml b/common/src/androidMain/res/drawable/ic_number_7.xml new file mode 100644 index 00000000..c996e693 --- /dev/null +++ b/common/src/androidMain/res/drawable/ic_number_7.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/common/src/androidMain/res/drawable/ic_number_8.xml b/common/src/androidMain/res/drawable/ic_number_8.xml new file mode 100644 index 00000000..28fa35e6 --- /dev/null +++ b/common/src/androidMain/res/drawable/ic_number_8.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/common/src/androidMain/res/drawable/ic_number_9.xml b/common/src/androidMain/res/drawable/ic_number_9.xml new file mode 100644 index 00000000..280d5ca6 --- /dev/null +++ b/common/src/androidMain/res/drawable/ic_number_9.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/common/src/androidMain/res/drawable/ic_number_9_plus.xml b/common/src/androidMain/res/drawable/ic_number_9_plus.xml new file mode 100644 index 00000000..cb47e3d5 --- /dev/null +++ b/common/src/androidMain/res/drawable/ic_number_9_plus.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/common/src/androidMain/res/drawable/ic_shortcut_2fa.xml b/common/src/androidMain/res/drawable/ic_shortcut_2fa.xml new file mode 100644 index 00000000..5601d12d --- /dev/null +++ b/common/src/androidMain/res/drawable/ic_shortcut_2fa.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/common/src/androidMain/res/drawable/ic_splash.xml b/common/src/androidMain/res/drawable/ic_splash.xml new file mode 100644 index 00000000..424fa203 --- /dev/null +++ b/common/src/androidMain/res/drawable/ic_splash.xml @@ -0,0 +1,4 @@ + + + + diff --git a/common/src/androidMain/res/drawable/ic_sync.xml b/common/src/androidMain/res/drawable/ic_sync.xml new file mode 100644 index 00000000..5fe0f1bb --- /dev/null +++ b/common/src/androidMain/res/drawable/ic_sync.xml @@ -0,0 +1,10 @@ + + + + diff --git a/common/src/androidMain/res/drawable/ic_tag.xml b/common/src/androidMain/res/drawable/ic_tag.xml new file mode 100644 index 00000000..7f7c27d2 --- /dev/null +++ b/common/src/androidMain/res/drawable/ic_tag.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/common/src/androidMain/res/drawable/ic_tfa.xml b/common/src/androidMain/res/drawable/ic_tfa.xml new file mode 100644 index 00000000..fed2894b --- /dev/null +++ b/common/src/androidMain/res/drawable/ic_tfa.xml @@ -0,0 +1,9 @@ + + + diff --git a/common/src/androidMain/res/drawable/ic_upload.xml b/common/src/androidMain/res/drawable/ic_upload.xml new file mode 100644 index 00000000..4c908388 --- /dev/null +++ b/common/src/androidMain/res/drawable/ic_upload.xml @@ -0,0 +1,9 @@ + + + diff --git a/common/src/androidMain/res/drawable/ic_web.xml b/common/src/androidMain/res/drawable/ic_web.xml new file mode 100644 index 00000000..4ddb3590 --- /dev/null +++ b/common/src/androidMain/res/drawable/ic_web.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/common/src/androidMain/res/layout/activity_webview.xml b/common/src/androidMain/res/layout/activity_webview.xml new file mode 100644 index 00000000..e94feb1a --- /dev/null +++ b/common/src/androidMain/res/layout/activity_webview.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/common/src/androidMain/res/layout/item_autofill.xml b/common/src/androidMain/res/layout/item_autofill.xml new file mode 100644 index 00000000..70a5950f --- /dev/null +++ b/common/src/androidMain/res/layout/item_autofill.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + diff --git a/common/src/androidMain/res/layout/item_autofill_app_id.xml b/common/src/androidMain/res/layout/item_autofill_app_id.xml new file mode 100644 index 00000000..e8154611 --- /dev/null +++ b/common/src/androidMain/res/layout/item_autofill_app_id.xml @@ -0,0 +1,35 @@ + + + + + + + \ No newline at end of file diff --git a/common/src/androidMain/res/layout/item_autofill_entry.xml b/common/src/androidMain/res/layout/item_autofill_entry.xml new file mode 100644 index 00000000..46ea0788 --- /dev/null +++ b/common/src/androidMain/res/layout/item_autofill_entry.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/common/src/androidMain/res/layout/item_autofill_select_entry.xml b/common/src/androidMain/res/layout/item_autofill_select_entry.xml new file mode 100644 index 00000000..b885eec4 --- /dev/null +++ b/common/src/androidMain/res/layout/item_autofill_select_entry.xml @@ -0,0 +1,29 @@ + + + + + + + \ No newline at end of file diff --git a/common/src/androidMain/res/layout/item_autofill_select_entry_app_id.xml b/common/src/androidMain/res/layout/item_autofill_select_entry_app_id.xml new file mode 100644 index 00000000..804763dd --- /dev/null +++ b/common/src/androidMain/res/layout/item_autofill_select_entry_app_id.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/common/src/androidMain/res/layout/item_autofill_select_entry_web_domain.xml b/common/src/androidMain/res/layout/item_autofill_select_entry_web_domain.xml new file mode 100644 index 00000000..9e800e61 --- /dev/null +++ b/common/src/androidMain/res/layout/item_autofill_select_entry_web_domain.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/common/src/androidMain/res/layout/item_autofill_unlock.xml b/common/src/androidMain/res/layout/item_autofill_unlock.xml new file mode 100644 index 00000000..dc8c9769 --- /dev/null +++ b/common/src/androidMain/res/layout/item_autofill_unlock.xml @@ -0,0 +1,29 @@ + + + + + + + \ No newline at end of file diff --git a/common/src/androidMain/res/layout/item_autofill_unlock_app_id.xml b/common/src/androidMain/res/layout/item_autofill_unlock_app_id.xml new file mode 100644 index 00000000..7840ded0 --- /dev/null +++ b/common/src/androidMain/res/layout/item_autofill_unlock_app_id.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/common/src/androidMain/res/layout/item_autofill_unlock_web_domain.xml b/common/src/androidMain/res/layout/item_autofill_unlock_web_domain.xml new file mode 100644 index 00000000..478cabe0 --- /dev/null +++ b/common/src/androidMain/res/layout/item_autofill_unlock_web_domain.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/common/src/androidMain/res/layout/item_autofill_web_domain.xml b/common/src/androidMain/res/layout/item_autofill_web_domain.xml new file mode 100644 index 00000000..46e25e10 --- /dev/null +++ b/common/src/androidMain/res/layout/item_autofill_web_domain.xml @@ -0,0 +1,35 @@ + + + + + + + \ No newline at end of file diff --git a/common/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml b/common/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 00000000..8fde4563 --- /dev/null +++ b/common/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/common/src/androidMain/res/mipmap-hdpi/ic_launcher.png b/common/src/androidMain/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..61700e246d4d1b937359a90d388c4a68510649e0 GIT binary patch literal 4986 zcmV-=6NT)FP)(qRG!Ar4i0 z0{u|(i^wbaPTE2T6+IW*m~W7-?pvvP?948NF-*WR<(tg2ru$|A=L!)g+y z*?^EWLK+bSK`j{><+%xz*Q*?-Q@PnaDwTNI>F;{6<2x%~1RTHx+@^bWc<+MDL$8HW zYDj~oi=aI#mk4}9B1_JWR-b?Qhm4Bqb44I@iZBCBQ>j}y_8w)Yx4DCTPxSq6&69~8 zzmMS))^yK~Y0<14K}xCVCCDen1gwUuf4n#__ox*z6ggj*)~qSYJSLQrZTHfN-`V@# z{CQ{d7heRjfHPI1rk$WXjjshg6RiID<#XpXZ(LoraOu`VO%8wzM=vN_xOD5h=8dbXKYsaKAn40BC6uf| zd0G>i^R0(IZPw4ZO-Q3=ssc?1l;`$3U9H!*-uTG}fHXyF)08#HC&!Xy<My%}(Y)_%*dikp7nRcRp@583 zTr}@{8@AM6cKaeqG`XTauxI5G0|+*JbALRh8B`kp}uD|FOJYiC|@=P5v-P;;B~Cf~UQYL;DjWcavK9{N8?P7Xp?;p0wu zsAk!fN1{oZ)NxNpP;RsW$}7&iXf0A!Op~Z6rNA&DQVG=!P&*sy@=EP&sG1376)0&i zZObxJR#cpM(ORIK0!BA;qKoJ_Cp@ot<6XiE96nXqlv1EPh*TlUt5AbIsMa@8-L0r( z3_O>iNxfkp%Bv7{bCHcr5UxNCbVDi*Qch_FLRf*r=QVG8(nKpVI=LKZb39fZu=FJIRFZ=ZV*Nan8!Ogb0K`JM3M(`U{6;&)#{ z%JNc$P)dR8BC6{_nmCW&jq~KsP@Sz%7C?k6!3uyFy(FZ-Q;1eEv{4>Vi zE=MK$A=a-otyFFDy!iefuR0<5;?wPbor|^$iKGpntnSm--8OY{97Js+q+;03pU3{` zt*GQ6V$K3Ybt44JKpG&VCTXZhFbu7AGv**>EkJd)VE^bUvUjgSNE1<6>zieXkg~k) z)7RYwl=*!=_?FRcqYf-9$e!6!vrV~Q9Tn;Ka1?+4`8ppLTgW?66LxjJ8`3G#`4;Wu0ED=9QIgF z+5pNTOV7Kxq!!6JV+ElI0QQgn1$XC5$hix&lNLe~)7OazS0Lvv(k5tF`g1}+HiPQv zK(+2fIX0rYK@)0O$k}soo_QQmaTC^McR(ho2`>?mrRUw;^Q-1d@Yj>_uZ{3QXc0m+ z%dUK1<%d>mE44wbJszTA0omW&LG~BlMb4S0FG>UAeUM2aPd*>H^rMKz!x6!-?}wBY zLn%}$hH7~ock4rVFKj|o)Ig|Qlbp3t2RaB`@k5N$FGO{{1G02~H1OolPwD;b4_-je z{#C9YqfJa}&yurNmPSnu3K6Zr+w(H+hMys8s&(h3M8*5Sb1^@AE9Rx&K_2}9gp`m; zKsw?7jYB4Zu!6`F&&2xjYRpeuiAoIWYX}GgAr!!Q^e$B2{vmBG6@H%&@5`VrA^1qAnX+8id!(wUID#rFn9ozLP!H)7~1(7rXIqT z3q2hW@5Q)q6~^CxNykE-t2MN`0dLQ%xX(U@sGOm-u4G?Se}P#yE6OOhBS*as)P3fL zbA(}5mP!x+RuI+QhWF}rh=g^Agh2ImB2T*z;!SoGhYt79tcL9?B2eOdW|Farz&rrz7Q6i0THEoyvRP){(W4 zz8@-0Y+(f(YnNZM5KWMPVS*%J1?C_7SEW^*4;=$3C(F=~js7Fdz_2Ohw5Fh8IbWL$ zT~Ce$0ZMt`p;XZFp$!kR1`ERs?30veUQjN zLf0*T2FJlN45qqK?{i=>7C|BqoH51vF{Pxnr;qY*luJH#9#uyz#QtcVF~!*hmPaKnGssjpd8w8=?5ZZU@Afnq-;)Vi1NOM2%SDTpa+~>h%{X#_af_o$U;v7PMTHA zobn*4?6@nalS6Yb6ocf?JEoXsrf@u$h$Z!6V1eE;H(HlRp$7fLvOsqhQfV*>l*;wn z3mOv7&K4>AK^SUvoDz&<B)ah^S`fQ>G2DBJ3h{O=)tw-e)6LABH=nI^1Nk^AO$GpI)efl zimx@V$^vCF45$skegF9oU-;BA0O}iOBMpgTXW91j)0}zg$!vXg2gekN|T>T*t60j{!BJtfziCto2bD}$Y_-F*8SHv%wceiMdaAP`uA0CN`{Mlv?Y zjo06R1cHG>liKQY;4%h5o*N%{=Mcz%G$15k$M!$d*0P5gGaGT;k>Q==I7FhAJpb&U zc%!|S%HWhok%HiJFqCSXBgg|Bcc5qYA&>#koy}%#y*W3I?FcFHJQpXMJ!Bd0J_in( zlaU0acRl~YR2vXt@+Ylauz};>_kL>XX3*c)iyXBYXc#8(fj*8n>KKlkJCnieKHV<8v4P11(8#-SM?Y2yhgb26V`z+Yc>or&WgLqNvWy?LXnUu#ea z)}69+omIsE8jIr-EjBvRvNw+OU(ITBi8ic5d9h0c^qT}8y#ph7nUz&X&ib>G*| zzZ_@>2Jua7ti5>`NCAU=>+ktdLA4J_tOFod3Fg;E+3@CmzOiL5bwLOi6Zj(mX&VAT z!Nngwi?4is1?QZ)gm^;l@{9*lfG2hN?o%(bt2fS!Xqg`?6;2L--`7EO-$y)>5d`@e zR#_k(-?sjByKVPlg*GB`zlFe%2KCiZZrS`Q|M7eqv%^px7~k9s37Iss#9?m?+T(h@ zIo?jPDZsSAGvJmDZ?JCXKIYX_qK3ZESUBvq-H*k$t$!VztC$`AosO|;%V|-6*P3ga zmFpynYEcM0A&8a*sg8uXeBBFtYs=fr2*P1eZE6#ZZsR?8`W zM!0F?tDN_X|7Od+e&$A?DGIe=2$^6>9aN50EJNQ@5ro<0FsB?63hw%!PF6g)m4{#1 z%beOOLV*BYE^RMgj!6*T{@5Ma{VnZ4j4`wa#!myzX;EMI{oh;{I^u-WtcC?=7D|*a zC9V=gLm?tF4W4-G09#sm_}I}iIroTqPH3#5p}dT6V0;JedOF70pLE&Ym*UU+dicXz zojkj*8_P0js;>cQ;88p|+0MP2y6^wyI-rknvXsG`&Ikftt%F|0YG>z@qDbNbic`?Y}$ z4?F`LV4PunG$sui{0eMzAl23P$laTJ*REcr96Mf^WO)fvIZYZe6FHn=HuT!adoS;G z?z4zd^-T`t*zw-At5@|sa`$GmSq+kxSw9g9imH4EW&;C2=fD&9KXu?IH-FiU_3bT4 z!aNKo(~A;H@%!y=tZ(mupWOWAfhX>N3h4CvU>AB~L&0HZ(>*&}AcGF7IukoKKDTex zxhw6~U7L%N_z=Qw-L-k&s&iK+c5HkOO-?_M@%vH`ii*qgNE!e-mFKp!-Lm|q__lS; zDr*lGQ`fr*m9+=s+txL=-Lm{9<+&{kYfe$*zyxv7M9BN1T^OhWYJ&?FHr0OWUoQCc03N+^vZxpUI|Cf_~bF6!%sNEte<q{_-(C@j&?c@s92>{i)o8am9e$8rHW-h1w{>Fh!PblY7Ptp^F?yW zC3m~GyKn#43tU3(F6lVa=`*u)d%Mr`zQ29;d7t-r-xX3y{+~qoUjs~5Gyow44UNr{ zHjYIjqVAD(bA-pcK&V;-RhuIewF)5ufB>12w!I(ev`NcqmS%F@m$#q2t)a1b(yuiZ zjUc5&NGT@`9E(QO`o}k3E)^pWBZt(q(>fKavBN>OmBf9~mDIL2_Jv3tj~$=FW_I2Mfv>pgBo-i$=8i$2YE2 zih@^9s%IfUD4;0r?_^9p`YGYFuhK}V!Wv=iz>|!h$5mi6`eMBp(e6%pA4SErj z*CM<3VsCgBd(S6eBq1|{ijoSHBTqp6<{3~r4Z7PwI(faX1d4xB`_QX9W6{X+hQ?+) zFL3bW1tIT@V_qx>Yg-VS0^TC*wJWh+`xDOYPr%M*r&-VJ6l zFSJ%#v8>|S2mcX^Mn21)XhvDYq7kj^q9ykVO|Q)hD;=ai4BjHlr*Fe}>MoqG+7QKM zF02rl7zTVEM7SLLxZ_Y_e0nexh8KdJ@0^!RFH6(?CD6J&@ z%sp7^|BO;qjqL4!a5?H}ix9a|DxuHd7WRbg*=8S}C05TzB!L?6n$v(Ogbic&Mn zjcw_G>OrQ4aXxRsUh^AdY&+64P-e};d&jd#JB>&idAqU)`(FI=)-x{!(qpG)pQobs z=0dCzK-I8YUV}6)>^DwFzj-A}MV&jS`Z^)r13mi?L;a|cv(PTTA2b~iD#iKuJ?yQo zAWA9<`bG_vUK~1O@j=BAU@`TwU(6QXqB(_I(2((NIv|4yuY! z6wowK73laJrS>S4lNKNc4uAsAXDwjcZoC(e;_qJkV?fOY)_k+)T~yE#5Sor0=!L#6 zkPLPq74BFA_gA2R5D1SC<;WA=8y*ekz<%UVKPZIb!hsOgm8DqKRd@nA!mqg@kjvJmVwD83r%lDSEcTfWW@4Di zpcl)|Y3AChYKTmF8|lF#G<|A8U?FJl?BSd_)jYK6bv%I*QfUWtU*>W0_)92o`cF~s zyb>X8TH3pKurc5Nv7P$+-&`an{KvarN~#k{U`=8FW28N*_pCHjd*^FtIs@%DjVR ziZqRWq3Pj5wlZ^!?WD>N8{XN?c18^@9Sgr>gOo(foYD{-~{r7V<$&W zM?7ph$;AG`mg9?}fKR|PtDeC$lGHUEL3M2%C1q22>4oQc?~^vl^}IteuSnZU;zry- zV9Orp-8msR;U3wYk2q<1{Y(H1!$46K1_uWyE3crkBuH``+U!XtFR+p99t&&^fB4q= z!mt9va!5NabT)901vf9bfiurpL~nN&rfFiQ(>$%PW89*yB&6YyUp3xb`}JcI9R4 zOM%EDQvi<&1Exj7w9u6N2`bU_%38q422KO<aMZC5=eBexakklwoh^S}2)Qg)`y%5`@s6vU)g#<{OZfM+d&mC;q@-B-m zJeQ8)(Xi8l&^83WeEkCqsSwaTIR~C~p!4JShSg0#BGben;LPeY-t+v@6-dX*1uTK; z@=}(*y^Gs7d`hVYjwp6RVq{I(pMoLFh1W8fpwtU>LD(_iaLMZT_^7j=`YB=Z)jjbI z&p!_IkO_xTz!@1bzG&Sw`1U_@?(|3mMP3gT;SkH;+{M|?ZRP!rI8%$DJ_xlzsPaL% z2GjlS|JooVY*_yOUKXs{OlwykGb^WJ%iL+rY~QtU;I-B700Y^p=EJsIW6?+mII`-F zr|eyBLQ7DPIF8Nk?l{G|!u;AWHN{0JLOGbD1>i`@kY%x>XPB1uJ^}$R(@Kl6 zr5IUD9wt`zzSj1;&%XiK0rWLAHp`Li*6|A1A>hmX4`2IG-6QLcRl`$fj#Ur>90VvT zGb_s&HcbAtX8=3h3&^ZlMT`{D1bsR)s-~bQs_WSturh5X+V4L9R-g?S9J~2_7;r;l zvlEL(;y`Tgy^F7}xp(!WT6xVehe2n^9l+<+snxR+bGDDOPZgXzvzwDl^d9)ziu-^s zfbNFI=JZ&daWi&9W3vVHILVFTKb+bMAa5R=4Dp^jEvLCz{r->3?)^Gcz>*!f$zJ9(%kR2v-Q*7Z4uZhfv(XETt{2bV{a;q%%Cw zYwX$CI=p@JwxRdee}o%u-M}DVG&DBnE!++Ro`j5m2Y@hcxD*3^+^nNAx<;{a>wshi zu0L}O;;!;0QenD{{g=Smq5(SYCWj{jDi|H#PUf(1r&uF%KIsLBl#>4d;rcvkbAs&# P00000NkvXXu0mjfkl;RQ literal 0 HcmV?d00001 diff --git a/common/src/androidMain/res/mipmap-xhdpi/ic_launcher.png b/common/src/androidMain/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..8f23a2b51cc272f69b8d865650f8683ab4e2b7d7 GIT binary patch literal 6944 zcmV+*8{g!KP)&V`Uv~f zd?KLm+LkDj_~Zf2v%76p+R^;#795_3!xcgHkcqFgMlPusw9<~?^Jg> z=j`{#KIh(ZZz@IIy0;Rr`?uC!cRF|P-}!#`@AupD5lSikOZK10{jI=%cKI&?_OqA( zLWupX$7mu(Nd#Vl?}L6+1zs!D2TGJunt-6pU$Jg~=)&f6kM=>9fM`GC(x!$*Cmbds zv4e#f`lv9Bxd<^GX|xF;T0q2rkoWgIs1c=99M>5_sUGDxTa}%EM`cIWr(b>Mt-)X2 zm_(D{0&4z>b^C>o&F3Cn_E{*U$}C`C65xR@{WSa9)r)1U<Lbr{qIg)gC@cS+o{N<8>snB);<}sNY-&Z~ zsbAhcwEAaBCW(lBO2FoGkCuP|m~(D?;#)>T%VkJ8uWkiQhPdt)CmmnD?b6TwJ75FO z{1xlmdS$;)2nYmMv+JLKeWKYm?T7o@)l@6WF08SKb}#Mzhc7>kCZaCEx{`ppcf`C} zZvx@DH$QuW)!FsvhYfrHVOoo=&aOx2-u&zhKo~H+d#i6b^|F9qt)KP7`;M_@%)dpL z))DnlbN`C63$GV;ZT{|#rDv_BMr)W93-G`fy5bt12bm!0T?zv{EnE+1_69~<{>FH%g>(qZkh&_7PA9@kOG+L+r+uWO;UWO*YtOp4- z5m4dp?~o16m(;4z2VG=C^Cfd{e)bOP6c;A^=RgxPJnxq0SITI^*K1Ma!z41=@b!7O zJiii6f>8?z6Z&HS{K&jpo?j`#(NiX>z=u^tIC_dlLWCMfsQOQVfE%8B^D`^{GlK7n z2uDwud-F3ZC|N?)F`+5~0s%KX=f)?lmeIyDt1a*^O=Pt3%sDqcaW$owP!$Q|CLmDr zt*&JceZy#KySO@4YY~M~E=nnskSJ-Q3~Q8R>fe=aW3!LuyN#x{i@TOR^bNqGN=vB5 z0wiEfyJ-2xtj?~Rt5vdEQA(j)4|FSvXq}Ge=t4BNLpTbi35EfN_iCD8MG#Hxh>n?v zwrQwHgC@hvXEMd=?7Df{Maw^iCSlyTj;p=yH#cRpAsSuy$$JsPn4q5TE4t>oAS9xB z3Pc)EecN%~U5nbj9@V!Ul^ldZ4qO+6&^291utJE&HbloPMAt`=^A;ke&xb+|mFP#g zj?Q;7reK9Iq6t@pK=5vo$;~B(zUjl+bw`&W@mPQatm&8Cy4YxHKd&yDR!Grb3lN=i zP(!6hKQs%QCyFQ8}HoUyJS(^mz0x{=6&BW|jjmH{cc9K%3Nn}_?x zbL4(>I)&f-3?&3&#ykzY;nx*!frA<)1s6X^1JTfmm@yB+F$zzvB=@7Q;=J$>V(M%N zMPQO*gNIdwarBh;`eSf_t?TLs|3+A$L+Yv}ftqiah>qDfPyS!>*ZnoBcPpZ69wOSP z$(b-n9=V|?a@IUlI!^wk3$Rz+glL%t;mILESfN9@u72=u7{|cfSnLSE3@w(+KsF8O_?{`70y|%Ry)F%07tuBi(bhrX zo@=llT#jg)4yFZ4)tv;hbJh>S3l48adywh~2-g12Z!JAvNMlMpl`Gz?Vi2>xCLy(J3LeBdbqJ5h7;rLBZ@7@YIRJ;$h$(taghH0Wy-N{u4@J&71U1wH(x7sJsunS)%(yT-f8oz^o8QdiP4ZV> zv&W1W9{50P)|J0p5}I}3jdjt+lQP%SK9j;7mt#M1A7bV_?RI>T2E_YNfcd#4$WNV) zXq^s)EGjpGC|>I~L-G0o5eP?7sUg&whp`{IO}nP{8GDecc5TM^_(_B=S%FFodcW7V zd79s`@zNbve(g?R1U;KpYOC#KMyxpAV|C10Qa4S4;<||D4&1k1#D3}5h$+*`{k=3$ z@jeJgu`av`=zz{d{%$1vxsnX;nef5S;St3C@Q}w4!DI6IQ;awYXhJZBHD=C z{VvYiFCm)S%3Y6gQOP09Q!Yd<`V8#e0*2JUO9LULuE~{2=ep^*fRrBC70K|vFaD3+c^tYY`D9Mug~5?}!4)bp=7N?4(;x@!WueAmU@_BJS|+$Er(kVhW< zMPy?ei^p|7$(LizNkk|9Xp_o0K-CU`!nQ5K$>;$ z7YHlVHTC>!jzSYqHjo*-dw*Sz73%uPiFGSIC`y50pt5P)zU^Ry%IiZui)fpQSa1Yn z(z*s0LDd%qL9dju?>&+bQoEyc0x|b6ERLqb@oIarXecgK#%|lnBjScHi<~=;QAIH5Ft?c9OQG_uLtf_IX1+a z!HNc&_rcvs)f5x>j{u;%E(^%w$ZS1DL}CYr=N;OFc0)znD=olm z{_NQcg<-bUw|FRxU<&Q~U3=7PgjeguD6VHh63j;k9jtwQN*C!qfO0(G>mP`PVYW4Y z_UwgJ1Y%zs-~E_o+tf*!aM@F%y#YE(?VBL@m86ZG%_Pi{RfvbJABY8%#)67lhK!ae z`(&Gt5JK0p;8@ORHBVnu-#S^GJMd@JKdmNws_(Gx`GqDSKtwJu1=$wOb)LhRet6(LqT|yC@%f5%& zeljB3gsT)8S2EPUn>W_I%%2A1v`x#=D8$(Fh!YeK+n@#PNdTtRQtyJjtvF4 z{YoqiK`0cvl36Y}b}m;Pe*nWkZ>l2n)w8ybC4q7buVEB2;o?s(pkP@1^bhYb)6$*5 zdd?4c*!ugTf$~<6{w$41T}rEvRL*98Ym5tznoGuoq2ws-j(xRVI#7<|wT?r1*f|Ve zJ!}piozh4mo3DRZ*4UO|UfB;2Ldd$0$qJ=Nh%qf@Fq8v1`HhZoi>)9eA#X!- z1U@pQk&%4a+(});!?vtvxd#DtEwLyH$90JrQZHnyH8(E<(}YmiTc;KHexf1;xC%@e zSSUt)Cupd^IT(b!!rX#DM(bIkUx1?&ZVkPBgnxF;90U01_>9O88FqrgBdE#X_ zZg7oJ{pzGrZeTKE&mgSDb+Q;{bA1X7)Ewp3RP~htD+Dvbu%SQ6t@p3wk1zk8;h{lV zTHE;eF~@THS!Z)#M+@B<$QJ^m4poYvRQt<2iZzPsWGlZ4E;rL}Y&#{aaD7fG@v|